{"diffoscope-json-version": 1, "source1": "/srv/reproducible-results/rbuild-debian/r-b-build.pni7O1P7/b1/opensubdiv_3.6.0-3_i386.changes", "source2": "/srv/reproducible-results/rbuild-debian/r-b-build.pni7O1P7/b2/opensubdiv_3.6.0-3_i386.changes", "unified_diff": null, "details": [{"source1": "Files", "source2": "Files", "unified_diff": "@@ -1,9 +1,9 @@\n \n  1488d09a7d6ff1e30e6c66252c00637a 153220 libdevel optional libosd-dev_3.6.0-3_i386.deb\n- ec2632b5019a1ee691217b357a81d314 31492940 doc optional libosd-doc_3.6.0-3_all.deb\n+ f6cb9b96e2dd8d46098ce477726cb87d 31497764 doc optional libosd-doc_3.6.0-3_all.deb\n  af1aac6128ea01ff3846325bfbb6bc04 3458436 debug optional libosdcpu3.6.0-dbgsym_3.6.0-3_i386.deb\n  1b8fb30ba7eb8ebfae4d5aea55e2b36e 321784 libs optional libosdcpu3.6.0_3.6.0-3_i386.deb\n  c48472a88f2d00fdbd0fa62f41c389c4 535232 debug optional libosdgpu3.6.0-dbgsym_3.6.0-3_i386.deb\n  c9ea9746f023dd48c497ae174de60aaf 136280 libs optional libosdgpu3.6.0_3.6.0-3_i386.deb\n  8fe5fbd72a984047ed8ec2d32994c4c2 12125732 debug optional opensubdiv-tools-dbgsym_3.6.0-3_i386.deb\n  85fe24a16cf3723d2d0031bb06d465d1 633452 graphics optional opensubdiv-tools_3.6.0-3_i386.deb\n"}, {"source1": "libosd-doc_3.6.0-3_all.deb", "source2": "libosd-doc_3.6.0-3_all.deb", "unified_diff": null, "details": [{"source1": "file list", "source2": "file list", "unified_diff": "@@ -1,3 +1,3 @@\n -rw-r--r--   0        0        0        4 2025-01-02 08:47:46.000000 debian-binary\n--rw-r--r--   0        0        0    25424 2025-01-02 08:47:46.000000 control.tar.xz\n--rw-r--r--   0        0        0 31467324 2025-01-02 08:47:46.000000 data.tar.xz\n+-rw-r--r--   0        0        0    25520 2025-01-02 08:47:46.000000 control.tar.xz\n+-rw-r--r--   0        0        0 31472052 2025-01-02 08:47:46.000000 data.tar.xz\n"}, {"source1": "control.tar.xz", "source2": "control.tar.xz", "unified_diff": null, "details": [{"source1": "control.tar", "source2": "control.tar", "unified_diff": null, "details": [{"source1": "./md5sums", "source2": "./md5sums", "unified_diff": null, "details": [{"source1": "./md5sums", "source2": "./md5sums", "comments": ["Files differ"], "unified_diff": null}, {"source1": "line order", "source2": "line order", "unified_diff": "@@ -21,29 +21,39 @@\n usr/share/doc/opensubdiv/css/doxy.css\n usr/share/doc/opensubdiv/css/flavor.css\n usr/share/doc/opensubdiv/css/pygments.css\n usr/share/doc/opensubdiv/css/renderman-university.css\n usr/share/doc/opensubdiv/css/rst.css\n usr/share/doc/opensubdiv/downloads.html\n usr/share/doc/opensubdiv/doxy_html/a00674.html\n+usr/share/doc/opensubdiv/doxy_html/a00674.js\n usr/share/doc/opensubdiv/doxy_html/a00674_source.html\n usr/share/doc/opensubdiv/doxy_html/a00677.html\n+usr/share/doc/opensubdiv/doxy_html/a00677.js\n usr/share/doc/opensubdiv/doxy_html/a00677_source.html\n usr/share/doc/opensubdiv/doxy_html/a00680.html\n+usr/share/doc/opensubdiv/doxy_html/a00680.js\n usr/share/doc/opensubdiv/doxy_html/a00680_source.html\n usr/share/doc/opensubdiv/doxy_html/a00683.html\n usr/share/doc/opensubdiv/doxy_html/a00683.js\n usr/share/doc/opensubdiv/doxy_html/a00683_source.html\n+usr/share/doc/opensubdiv/doxy_html/a00686.html\n+usr/share/doc/opensubdiv/doxy_html/a00686.js\n+usr/share/doc/opensubdiv/doxy_html/a00686_source.html\n usr/share/doc/opensubdiv/doxy_html/a00689.html\n+usr/share/doc/opensubdiv/doxy_html/a00689.js\n usr/share/doc/opensubdiv/doxy_html/a00689_source.html\n usr/share/doc/opensubdiv/doxy_html/a00692.html\n+usr/share/doc/opensubdiv/doxy_html/a00692.js\n usr/share/doc/opensubdiv/doxy_html/a00692_source.html\n usr/share/doc/opensubdiv/doxy_html/a00695.html\n+usr/share/doc/opensubdiv/doxy_html/a00695.js\n usr/share/doc/opensubdiv/doxy_html/a00695_source.html\n usr/share/doc/opensubdiv/doxy_html/a00698.html\n+usr/share/doc/opensubdiv/doxy_html/a00698.js\n usr/share/doc/opensubdiv/doxy_html/a00698_source.html\n usr/share/doc/opensubdiv/doxy_html/a00701.html\n usr/share/doc/opensubdiv/doxy_html/a00701.js\n usr/share/doc/opensubdiv/doxy_html/a00701_source.html\n usr/share/doc/opensubdiv/doxy_html/a00704.html\n usr/share/doc/opensubdiv/doxy_html/a00704.js\n usr/share/doc/opensubdiv/doxy_html/a00704_source.html\n@@ -59,61 +69,59 @@\n usr/share/doc/opensubdiv/doxy_html/a00716.html\n usr/share/doc/opensubdiv/doxy_html/a00716.js\n usr/share/doc/opensubdiv/doxy_html/a00716_source.html\n usr/share/doc/opensubdiv/doxy_html/a00719.html\n usr/share/doc/opensubdiv/doxy_html/a00719.js\n usr/share/doc/opensubdiv/doxy_html/a00719_source.html\n usr/share/doc/opensubdiv/doxy_html/a00722.html\n-usr/share/doc/opensubdiv/doxy_html/a00722.js\n usr/share/doc/opensubdiv/doxy_html/a00722_source.html\n usr/share/doc/opensubdiv/doxy_html/a00725.html\n usr/share/doc/opensubdiv/doxy_html/a00725.js\n usr/share/doc/opensubdiv/doxy_html/a00725_source.html\n usr/share/doc/opensubdiv/doxy_html/a00728.html\n+usr/share/doc/opensubdiv/doxy_html/a00728.js\n usr/share/doc/opensubdiv/doxy_html/a00728_source.html\n usr/share/doc/opensubdiv/doxy_html/a00731.html\n usr/share/doc/opensubdiv/doxy_html/a00731.js\n usr/share/doc/opensubdiv/doxy_html/a00731_source.html\n usr/share/doc/opensubdiv/doxy_html/a00734.html\n usr/share/doc/opensubdiv/doxy_html/a00734.js\n usr/share/doc/opensubdiv/doxy_html/a00734_source.html\n usr/share/doc/opensubdiv/doxy_html/a00737.html\n+usr/share/doc/opensubdiv/doxy_html/a00737.js\n usr/share/doc/opensubdiv/doxy_html/a00737_source.html\n usr/share/doc/opensubdiv/doxy_html/a00740.html\n+usr/share/doc/opensubdiv/doxy_html/a00740.js\n usr/share/doc/opensubdiv/doxy_html/a00740_source.html\n usr/share/doc/opensubdiv/doxy_html/a00743.html\n usr/share/doc/opensubdiv/doxy_html/a00743.js\n usr/share/doc/opensubdiv/doxy_html/a00743_source.html\n usr/share/doc/opensubdiv/doxy_html/a00746.html\n usr/share/doc/opensubdiv/doxy_html/a00746.js\n usr/share/doc/opensubdiv/doxy_html/a00746_source.html\n usr/share/doc/opensubdiv/doxy_html/a00749.html\n usr/share/doc/opensubdiv/doxy_html/a00749.js\n usr/share/doc/opensubdiv/doxy_html/a00749_source.html\n usr/share/doc/opensubdiv/doxy_html/a00752.html\n usr/share/doc/opensubdiv/doxy_html/a00752.js\n usr/share/doc/opensubdiv/doxy_html/a00752_source.html\n usr/share/doc/opensubdiv/doxy_html/a00755.html\n-usr/share/doc/opensubdiv/doxy_html/a00755.js\n usr/share/doc/opensubdiv/doxy_html/a00755_source.html\n usr/share/doc/opensubdiv/doxy_html/a00758.html\n usr/share/doc/opensubdiv/doxy_html/a00758.js\n usr/share/doc/opensubdiv/doxy_html/a00758_source.html\n usr/share/doc/opensubdiv/doxy_html/a00761.html\n usr/share/doc/opensubdiv/doxy_html/a00761.js\n usr/share/doc/opensubdiv/doxy_html/a00761_source.html\n usr/share/doc/opensubdiv/doxy_html/a00764.html\n usr/share/doc/opensubdiv/doxy_html/a00764.js\n usr/share/doc/opensubdiv/doxy_html/a00764_source.html\n usr/share/doc/opensubdiv/doxy_html/a00767.html\n usr/share/doc/opensubdiv/doxy_html/a00767.js\n usr/share/doc/opensubdiv/doxy_html/a00767_source.html\n-usr/share/doc/opensubdiv/doxy_html/a00770.html\n-usr/share/doc/opensubdiv/doxy_html/a00770.js\n-usr/share/doc/opensubdiv/doxy_html/a00770_source.html\n usr/share/doc/opensubdiv/doxy_html/a00773.html\n usr/share/doc/opensubdiv/doxy_html/a00773.js\n usr/share/doc/opensubdiv/doxy_html/a00773_source.html\n usr/share/doc/opensubdiv/doxy_html/a00776.html\n usr/share/doc/opensubdiv/doxy_html/a00776.js\n usr/share/doc/opensubdiv/doxy_html/a00776_source.html\n usr/share/doc/opensubdiv/doxy_html/a00779.html\n@@ -128,36 +136,29 @@\n usr/share/doc/opensubdiv/doxy_html/a00788.html\n usr/share/doc/opensubdiv/doxy_html/a00788.js\n usr/share/doc/opensubdiv/doxy_html/a00788_source.html\n usr/share/doc/opensubdiv/doxy_html/a00791.html\n usr/share/doc/opensubdiv/doxy_html/a00791.js\n usr/share/doc/opensubdiv/doxy_html/a00791_source.html\n usr/share/doc/opensubdiv/doxy_html/a00794.html\n-usr/share/doc/opensubdiv/doxy_html/a00794.js\n usr/share/doc/opensubdiv/doxy_html/a00794_source.html\n usr/share/doc/opensubdiv/doxy_html/a00797.html\n usr/share/doc/opensubdiv/doxy_html/a00797.js\n usr/share/doc/opensubdiv/doxy_html/a00797_source.html\n usr/share/doc/opensubdiv/doxy_html/a00800.html\n-usr/share/doc/opensubdiv/doxy_html/a00800.js\n usr/share/doc/opensubdiv/doxy_html/a00800_source.html\n usr/share/doc/opensubdiv/doxy_html/a00803.html\n-usr/share/doc/opensubdiv/doxy_html/a00803.js\n usr/share/doc/opensubdiv/doxy_html/a00803_source.html\n usr/share/doc/opensubdiv/doxy_html/a00806.html\n-usr/share/doc/opensubdiv/doxy_html/a00806.js\n usr/share/doc/opensubdiv/doxy_html/a00806_source.html\n usr/share/doc/opensubdiv/doxy_html/a00809.html\n-usr/share/doc/opensubdiv/doxy_html/a00809.js\n usr/share/doc/opensubdiv/doxy_html/a00809_source.html\n usr/share/doc/opensubdiv/doxy_html/a00812.html\n-usr/share/doc/opensubdiv/doxy_html/a00812.js\n usr/share/doc/opensubdiv/doxy_html/a00812_source.html\n usr/share/doc/opensubdiv/doxy_html/a00815.html\n-usr/share/doc/opensubdiv/doxy_html/a00815.js\n usr/share/doc/opensubdiv/doxy_html/a00815_source.html\n usr/share/doc/opensubdiv/doxy_html/a00818.html\n usr/share/doc/opensubdiv/doxy_html/a00818.js\n usr/share/doc/opensubdiv/doxy_html/a00818_source.html\n usr/share/doc/opensubdiv/doxy_html/a00821.html\n usr/share/doc/opensubdiv/doxy_html/a00821.js\n usr/share/doc/opensubdiv/doxy_html/a00821_source.html\n@@ -176,16 +177,18 @@\n usr/share/doc/opensubdiv/doxy_html/a00836.html\n usr/share/doc/opensubdiv/doxy_html/a00836.js\n usr/share/doc/opensubdiv/doxy_html/a00836_source.html\n usr/share/doc/opensubdiv/doxy_html/a00839.html\n usr/share/doc/opensubdiv/doxy_html/a00839.js\n usr/share/doc/opensubdiv/doxy_html/a00839_source.html\n usr/share/doc/opensubdiv/doxy_html/a00842.html\n+usr/share/doc/opensubdiv/doxy_html/a00842.js\n usr/share/doc/opensubdiv/doxy_html/a00842_source.html\n usr/share/doc/opensubdiv/doxy_html/a00845.html\n+usr/share/doc/opensubdiv/doxy_html/a00845.js\n usr/share/doc/opensubdiv/doxy_html/a00845_source.html\n usr/share/doc/opensubdiv/doxy_html/a00848.html\n usr/share/doc/opensubdiv/doxy_html/a00848.js\n usr/share/doc/opensubdiv/doxy_html/a00848_source.html\n usr/share/doc/opensubdiv/doxy_html/a00851.html\n usr/share/doc/opensubdiv/doxy_html/a00851.js\n usr/share/doc/opensubdiv/doxy_html/a00851_source.html\n@@ -198,24 +201,21 @@\n usr/share/doc/opensubdiv/doxy_html/a00860.html\n usr/share/doc/opensubdiv/doxy_html/a00860.js\n usr/share/doc/opensubdiv/doxy_html/a00860_source.html\n usr/share/doc/opensubdiv/doxy_html/a00863.html\n usr/share/doc/opensubdiv/doxy_html/a00863.js\n usr/share/doc/opensubdiv/doxy_html/a00863_source.html\n usr/share/doc/opensubdiv/doxy_html/a00866.html\n-usr/share/doc/opensubdiv/doxy_html/a00866.js\n usr/share/doc/opensubdiv/doxy_html/a00866_source.html\n usr/share/doc/opensubdiv/doxy_html/a00869.html\n usr/share/doc/opensubdiv/doxy_html/a00869.js\n usr/share/doc/opensubdiv/doxy_html/a00869_source.html\n usr/share/doc/opensubdiv/doxy_html/a00872.html\n-usr/share/doc/opensubdiv/doxy_html/a00872.js\n usr/share/doc/opensubdiv/doxy_html/a00872_source.html\n usr/share/doc/opensubdiv/doxy_html/a00875.html\n-usr/share/doc/opensubdiv/doxy_html/a00875.js\n usr/share/doc/opensubdiv/doxy_html/a00875_source.html\n usr/share/doc/opensubdiv/doxy_html/a00878.html\n usr/share/doc/opensubdiv/doxy_html/a00878.js\n usr/share/doc/opensubdiv/doxy_html/a00878_source.html\n usr/share/doc/opensubdiv/doxy_html/a00881.html\n usr/share/doc/opensubdiv/doxy_html/a00881.js\n usr/share/doc/opensubdiv/doxy_html/a00881_source.html\n"}]}]}]}, {"source1": "data.tar.xz", "source2": "data.tar.xz", "unified_diff": null, "details": [{"source1": "data.tar", "source2": "data.tar", "unified_diff": null, "details": [{"source1": "file list", "source2": "file list", "unified_diff": "@@ -27,230 +27,230 @@\n -rw-r--r--   0 root         (0) root         (0)     1660 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/css/doxy.css\n -rw-r--r--   0 root         (0) root         (0)    27698 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/css/flavor.css\n -rw-r--r--   0 root         (0) root         (0)     5321 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/css/pygments.css\n -rw-r--r--   0 root         (0) root         (0)     3011 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/css/renderman-university.css\n -rw-r--r--   0 root         (0) root         (0)    12971 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/css/rst.css\n -rw-r--r--   0 root         (0) root         (0)    14561 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/downloads.html\n drwxr-xr-x   0 root         (0) root         (0)        0 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/\n--rw-r--r--   0 root         (0) root         (0)     6081 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00674.html\n--rw-r--r--   0 root         (0) root         (0)    85952 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00674_source.html\n--rw-r--r--   0 root         (0) root         (0)     5898 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00677.html\n--rw-r--r--   0 root         (0) root         (0)    22112 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00677_source.html\n--rw-r--r--   0 root         (0) root         (0)     6288 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00680.html\n--rw-r--r--   0 root         (0) root         (0)    24306 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00680_source.html\n--rw-r--r--   0 root         (0) root         (0)     6436 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00683.html\n--rw-r--r--   0 root         (0) root         (0)      121 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00683.js\n--rw-r--r--   0 root         (0) root         (0)    46437 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00683_source.html\n--rw-r--r--   0 root         (0) root         (0)     6266 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00689.html\n--rw-r--r--   0 root         (0) root         (0)    81482 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00689_source.html\n--rw-r--r--   0 root         (0) root         (0)     5643 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00692.html\n--rw-r--r--   0 root         (0) root         (0)    38293 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00692_source.html\n--rw-r--r--   0 root         (0) root         (0)     6201 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00695.html\n--rw-r--r--   0 root         (0) root         (0)   163472 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00695_source.html\n--rw-r--r--   0 root         (0) root         (0)     6113 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00698.html\n--rw-r--r--   0 root         (0) root         (0)    29125 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00698_source.html\n--rw-r--r--   0 root         (0) root         (0)     6386 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00701.html\n--rw-r--r--   0 root         (0) root         (0)       55 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00701.js\n--rw-r--r--   0 root         (0) root         (0)    14298 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00701_source.html\n--rw-r--r--   0 root         (0) root         (0)     7074 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00704.html\n--rw-r--r--   0 root         (0) root         (0)      120 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00704.js\n--rw-r--r--   0 root         (0) root         (0)    75918 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00704_source.html\n--rw-r--r--   0 root         (0) root         (0)     6557 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00707.html\n--rw-r--r--   0 root         (0) root         (0)       78 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00707.js\n--rw-r--r--   0 root         (0) root         (0)    35227 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00707_source.html\n--rw-r--r--   0 root         (0) root         (0)     7310 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00710.html\n--rw-r--r--   0 root         (0) root         (0)      195 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00710.js\n--rw-r--r--   0 root         (0) root         (0)    27166 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00710_source.html\n--rw-r--r--   0 root         (0) root         (0)     7503 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00713.html\n--rw-r--r--   0 root         (0) root         (0)      111 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00713.js\n--rw-r--r--   0 root         (0) root         (0)    88830 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00713_source.html\n--rw-r--r--   0 root         (0) root         (0)     7764 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00716.html\n--rw-r--r--   0 root         (0) root         (0)      150 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00716.js\n--rw-r--r--   0 root         (0) root         (0)    40417 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00716_source.html\n--rw-r--r--   0 root         (0) root         (0)     6435 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00719.html\n--rw-r--r--   0 root         (0) root         (0)       69 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00719.js\n--rw-r--r--   0 root         (0) root         (0)    45701 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00719_source.html\n--rw-r--r--   0 root         (0) root         (0)     7384 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00722.html\n--rw-r--r--   0 root         (0) root         (0)      109 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00722.js\n--rw-r--r--   0 root         (0) root         (0)    65515 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00722_source.html\n--rw-r--r--   0 root         (0) root         (0)     6575 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00725.html\n--rw-r--r--   0 root         (0) root         (0)       69 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00725.js\n--rw-r--r--   0 root         (0) root         (0)    76686 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00725_source.html\n--rw-r--r--   0 root         (0) root         (0)     5826 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00728.html\n--rw-r--r--   0 root         (0) root         (0)   100441 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00728_source.html\n--rw-r--r--   0 root         (0) root         (0)     6473 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00731.html\n--rw-r--r--   0 root         (0) root         (0)       59 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00731.js\n--rw-r--r--   0 root         (0) root         (0)    53912 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00731_source.html\n--rw-r--r--   0 root         (0) root         (0)     6297 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00734.html\n--rw-r--r--   0 root         (0) root         (0)       60 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00734.js\n--rw-r--r--   0 root         (0) root         (0)    38673 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00734_source.html\n--rw-r--r--   0 root         (0) root         (0)     5835 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00737.html\n--rw-r--r--   0 root         (0) root         (0)    89789 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00737_source.html\n--rw-r--r--   0 root         (0) root         (0)     5752 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00740.html\n--rw-r--r--   0 root         (0) root         (0)    38296 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00740_source.html\n--rw-r--r--   0 root         (0) root         (0)     7579 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00743.html\n--rw-r--r--   0 root         (0) root         (0)      130 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00743.js\n--rw-r--r--   0 root         (0) root         (0)   135866 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00743_source.html\n--rw-r--r--   0 root         (0) root         (0)     8222 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00746.html\n--rw-r--r--   0 root         (0) root         (0)      130 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00746.js\n--rw-r--r--   0 root         (0) root         (0)   212260 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00746_source.html\n--rw-r--r--   0 root         (0) root         (0)    11426 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00749.html\n--rw-r--r--   0 root         (0) root         (0)     1173 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00749.js\n--rw-r--r--   0 root         (0) root         (0)    22910 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00749_source.html\n--rw-r--r--   0 root         (0) root         (0)     9467 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00752.html\n--rw-r--r--   0 root         (0) root         (0)      404 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00752.js\n--rw-r--r--   0 root         (0) root         (0)    84413 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00752_source.html\n--rw-r--r--   0 root         (0) root         (0)     8123 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00755.html\n--rw-r--r--   0 root         (0) root         (0)      314 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00755.js\n--rw-r--r--   0 root         (0) root         (0)    50493 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00755_source.html\n--rw-r--r--   0 root         (0) root         (0)     9922 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00758.html\n--rw-r--r--   0 root         (0) root         (0)      456 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00758.js\n--rw-r--r--   0 root         (0) root         (0)   177058 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00758_source.html\n--rw-r--r--   0 root         (0) root         (0)     7335 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00761.html\n--rw-r--r--   0 root         (0) root         (0)      111 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00761.js\n--rw-r--r--   0 root         (0) root         (0)   167870 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00761_source.html\n--rw-r--r--   0 root         (0) root         (0)     8006 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00764.html\n--rw-r--r--   0 root         (0) root         (0)      171 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00764.js\n--rw-r--r--   0 root         (0) root         (0)    74097 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00764_source.html\n--rw-r--r--   0 root         (0) root         (0)     7836 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00767.html\n--rw-r--r--   0 root         (0) root         (0)      190 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00767.js\n--rw-r--r--   0 root         (0) root         (0)   147346 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00767_source.html\n--rw-r--r--   0 root         (0) root         (0)     6562 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00770.html\n--rw-r--r--   0 root         (0) root         (0)       64 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00770.js\n--rw-r--r--   0 root         (0) root         (0)    19419 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00770_source.html\n--rw-r--r--   0 root         (0) root         (0)     7303 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00773.html\n--rw-r--r--   0 root         (0) root         (0)      160 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00773.js\n--rw-r--r--   0 root         (0) root         (0)    53847 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00773_source.html\n--rw-r--r--   0 root         (0) root         (0)     7812 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00776.html\n--rw-r--r--   0 root         (0) root         (0)      163 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00776.js\n--rw-r--r--   0 root         (0) root         (0)    67818 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00776_source.html\n+-rw-r--r--   0 root         (0) root         (0)     6374 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00674.html\n+-rw-r--r--   0 root         (0) root         (0)       69 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00674.js\n+-rw-r--r--   0 root         (0) root         (0)    20015 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00674_source.html\n+-rw-r--r--   0 root         (0) root         (0)     6806 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00677.html\n+-rw-r--r--   0 root         (0) root         (0)       67 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00677.js\n+-rw-r--r--   0 root         (0) root         (0)    33909 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00677_source.html\n+-rw-r--r--   0 root         (0) root         (0)     6496 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00680.html\n+-rw-r--r--   0 root         (0) root         (0)       70 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00680.js\n+-rw-r--r--   0 root         (0) root         (0)    21039 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00680_source.html\n+-rw-r--r--   0 root         (0) root         (0)     6485 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00683.html\n+-rw-r--r--   0 root         (0) root         (0)       67 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00683.js\n+-rw-r--r--   0 root         (0) root         (0)    19961 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00683_source.html\n+-rw-r--r--   0 root         (0) root         (0)     7016 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00686.html\n+-rw-r--r--   0 root         (0) root         (0)      128 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00686.js\n+-rw-r--r--   0 root         (0) root         (0)    49760 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00686_source.html\n+-rw-r--r--   0 root         (0) root         (0)     7051 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00689.html\n+-rw-r--r--   0 root         (0) root         (0)      124 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00689.js\n+-rw-r--r--   0 root         (0) root         (0)   223873 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00689_source.html\n+-rw-r--r--   0 root         (0) root         (0)     7124 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00692.html\n+-rw-r--r--   0 root         (0) root         (0)      115 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00692.js\n+-rw-r--r--   0 root         (0) root         (0)   128978 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00692_source.html\n+-rw-r--r--   0 root         (0) root         (0)     6356 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00695.html\n+-rw-r--r--   0 root         (0) root         (0)       81 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00695.js\n+-rw-r--r--   0 root         (0) root         (0)    26983 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00695_source.html\n+-rw-r--r--   0 root         (0) root         (0)     6160 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00698.html\n+-rw-r--r--   0 root         (0) root         (0)       63 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00698.js\n+-rw-r--r--   0 root         (0) root         (0)    14082 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00698_source.html\n+-rw-r--r--   0 root         (0) root         (0)     7198 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00701.html\n+-rw-r--r--   0 root         (0) root         (0)      121 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00701.js\n+-rw-r--r--   0 root         (0) root         (0)   239107 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00701_source.html\n+-rw-r--r--   0 root         (0) root         (0)    14200 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00704.html\n+-rw-r--r--   0 root         (0) root         (0)     2466 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00704.js\n+-rw-r--r--   0 root         (0) root         (0)   182424 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00704_source.html\n+-rw-r--r--   0 root         (0) root         (0)     6380 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00707.html\n+-rw-r--r--   0 root         (0) root         (0)       61 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00707.js\n+-rw-r--r--   0 root         (0) root         (0)   110975 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00707_source.html\n+-rw-r--r--   0 root         (0) root         (0)     6765 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00710.html\n+-rw-r--r--   0 root         (0) root         (0)       68 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00710.js\n+-rw-r--r--   0 root         (0) root         (0)    27920 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00710_source.html\n+-rw-r--r--   0 root         (0) root         (0)     6245 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00713.html\n+-rw-r--r--   0 root         (0) root         (0)       71 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00713.js\n+-rw-r--r--   0 root         (0) root         (0)    22525 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00713_source.html\n+-rw-r--r--   0 root         (0) root         (0)     6508 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00716.html\n+-rw-r--r--   0 root         (0) root         (0)       70 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00716.js\n+-rw-r--r--   0 root         (0) root         (0)    18295 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00716_source.html\n+-rw-r--r--   0 root         (0) root         (0)     6573 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00719.html\n+-rw-r--r--   0 root         (0) root         (0)       98 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00719.js\n+-rw-r--r--   0 root         (0) root         (0)    12789 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00719_source.html\n+-rw-r--r--   0 root         (0) root         (0)     4473 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00722.html\n+-rw-r--r--   0 root         (0) root         (0)    12882 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00722_source.html\n+-rw-r--r--   0 root         (0) root         (0)     6424 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00725.html\n+-rw-r--r--   0 root         (0) root         (0)       67 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00725.js\n+-rw-r--r--   0 root         (0) root         (0)    23840 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00725_source.html\n+-rw-r--r--   0 root         (0) root         (0)     6508 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00728.html\n+-rw-r--r--   0 root         (0) root         (0)       70 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00728.js\n+-rw-r--r--   0 root         (0) root         (0)    18617 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00728_source.html\n+-rw-r--r--   0 root         (0) root         (0)     6380 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00731.html\n+-rw-r--r--   0 root         (0) root         (0)       61 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00731.js\n+-rw-r--r--   0 root         (0) root         (0)   111060 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00731_source.html\n+-rw-r--r--   0 root         (0) root         (0)     6498 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00734.html\n+-rw-r--r--   0 root         (0) root         (0)       69 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00734.js\n+-rw-r--r--   0 root         (0) root         (0)    21924 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00734_source.html\n+-rw-r--r--   0 root         (0) root         (0)     6591 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00737.html\n+-rw-r--r--   0 root         (0) root         (0)      101 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00737.js\n+-rw-r--r--   0 root         (0) root         (0)    12825 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00737_source.html\n+-rw-r--r--   0 root         (0) root         (0)     6579 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00740.html\n+-rw-r--r--   0 root         (0) root         (0)       99 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00740.js\n+-rw-r--r--   0 root         (0) root         (0)    12708 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00740_source.html\n+-rw-r--r--   0 root         (0) root         (0)     6369 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00743.html\n+-rw-r--r--   0 root         (0) root         (0)       68 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00743.js\n+-rw-r--r--   0 root         (0) root         (0)    19253 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00743_source.html\n+-rw-r--r--   0 root         (0) root         (0)     6451 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00746.html\n+-rw-r--r--   0 root         (0) root         (0)       79 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00746.js\n+-rw-r--r--   0 root         (0) root         (0)    25441 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00746_source.html\n+-rw-r--r--   0 root         (0) root         (0)     7173 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00749.html\n+-rw-r--r--   0 root         (0) root         (0)      115 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00749.js\n+-rw-r--r--   0 root         (0) root         (0)   252039 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00749_source.html\n+-rw-r--r--   0 root         (0) root         (0)     7224 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00752.html\n+-rw-r--r--   0 root         (0) root         (0)      126 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00752.js\n+-rw-r--r--   0 root         (0) root         (0)   224156 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00752_source.html\n+-rw-r--r--   0 root         (0) root         (0)     4477 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00755.html\n+-rw-r--r--   0 root         (0) root         (0)    10582 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00755_source.html\n+-rw-r--r--   0 root         (0) root         (0)    11269 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00758.html\n+-rw-r--r--   0 root         (0) root         (0)      424 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00758.js\n+-rw-r--r--   0 root         (0) root         (0)    29215 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00758_source.html\n+-rw-r--r--   0 root         (0) root         (0)     8720 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00761.html\n+-rw-r--r--   0 root         (0) root         (0)      262 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00761.js\n+-rw-r--r--   0 root         (0) root         (0)    21258 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00761_source.html\n+-rw-r--r--   0 root         (0) root         (0)     6686 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00764.html\n+-rw-r--r--   0 root         (0) root         (0)       69 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00764.js\n+-rw-r--r--   0 root         (0) root         (0)    27491 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00764_source.html\n+-rw-r--r--   0 root         (0) root         (0)     6444 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00767.html\n+-rw-r--r--   0 root         (0) root         (0)       78 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00767.js\n+-rw-r--r--   0 root         (0) root         (0)    23458 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00767_source.html\n+-rw-r--r--   0 root         (0) root         (0)     6409 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00773.html\n+-rw-r--r--   0 root         (0) root         (0)       73 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00773.js\n+-rw-r--r--   0 root         (0) root         (0)    22722 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00773_source.html\n+-rw-r--r--   0 root         (0) root         (0)     6817 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00776.html\n+-rw-r--r--   0 root         (0) root         (0)       66 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00776.js\n+-rw-r--r--   0 root         (0) root         (0)    35393 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00776_source.html\n -rw-r--r--   0 root         (0) root         (0)     6744 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00779.html\n--rw-r--r--   0 root         (0) root         (0)      103 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00779.js\n--rw-r--r--   0 root         (0) root         (0)    42246 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00779_source.html\n--rw-r--r--   0 root         (0) root         (0)     6697 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00782.html\n--rw-r--r--   0 root         (0) root         (0)       66 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00782.js\n--rw-r--r--   0 root         (0) root         (0)    66667 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00782_source.html\n--rw-r--r--   0 root         (0) root         (0)     7135 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00785.html\n--rw-r--r--   0 root         (0) root         (0)      119 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00785.js\n--rw-r--r--   0 root         (0) root         (0)    38038 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00785_source.html\n--rw-r--r--   0 root         (0) root         (0)     6744 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00788.html\n--rw-r--r--   0 root         (0) root         (0)       65 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00788.js\n--rw-r--r--   0 root         (0) root         (0)    47051 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00788_source.html\n--rw-r--r--   0 root         (0) root         (0)     7198 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00791.html\n--rw-r--r--   0 root         (0) root         (0)      121 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00791.js\n--rw-r--r--   0 root         (0) root         (0)   239107 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00791_source.html\n--rw-r--r--   0 root         (0) root         (0)     6508 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00794.html\n--rw-r--r--   0 root         (0) root         (0)       70 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00794.js\n--rw-r--r--   0 root         (0) root         (0)    18295 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00794_source.html\n--rw-r--r--   0 root         (0) root         (0)     8720 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00797.html\n--rw-r--r--   0 root         (0) root         (0)      262 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00797.js\n--rw-r--r--   0 root         (0) root         (0)    21258 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00797_source.html\n--rw-r--r--   0 root         (0) root         (0)     7016 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00800.html\n--rw-r--r--   0 root         (0) root         (0)      128 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00800.js\n--rw-r--r--   0 root         (0) root         (0)    49760 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00800_source.html\n--rw-r--r--   0 root         (0) root         (0)     6380 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00803.html\n--rw-r--r--   0 root         (0) root         (0)       61 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00803.js\n--rw-r--r--   0 root         (0) root         (0)   110646 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00803_source.html\n--rw-r--r--   0 root         (0) root         (0)     7051 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00806.html\n--rw-r--r--   0 root         (0) root         (0)      124 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00806.js\n--rw-r--r--   0 root         (0) root         (0)   223873 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00806_source.html\n--rw-r--r--   0 root         (0) root         (0)     6817 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00809.html\n--rw-r--r--   0 root         (0) root         (0)       66 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00809.js\n--rw-r--r--   0 root         (0) root         (0)    35393 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00809_source.html\n--rw-r--r--   0 root         (0) root         (0)     6579 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00812.html\n--rw-r--r--   0 root         (0) root         (0)       99 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00812.js\n--rw-r--r--   0 root         (0) root         (0)    12708 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00812_source.html\n--rw-r--r--   0 root         (0) root         (0)     6765 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00815.html\n--rw-r--r--   0 root         (0) root         (0)       68 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00815.js\n--rw-r--r--   0 root         (0) root         (0)    27920 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00815_source.html\n--rw-r--r--   0 root         (0) root         (0)     6910 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00818.html\n--rw-r--r--   0 root         (0) root         (0)       66 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00818.js\n--rw-r--r--   0 root         (0) root         (0)    44338 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00818_source.html\n--rw-r--r--   0 root         (0) root         (0)     6496 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00821.html\n--rw-r--r--   0 root         (0) root         (0)       70 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00821.js\n--rw-r--r--   0 root         (0) root         (0)    21039 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00821_source.html\n--rw-r--r--   0 root         (0) root         (0)     6160 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00824.html\n--rw-r--r--   0 root         (0) root         (0)       63 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00824.js\n--rw-r--r--   0 root         (0) root         (0)    14082 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00824_source.html\n--rw-r--r--   0 root         (0) root         (0)     6508 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00827.html\n--rw-r--r--   0 root         (0) root         (0)       70 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00827.js\n--rw-r--r--   0 root         (0) root         (0)    18617 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00827_source.html\n--rw-r--r--   0 root         (0) root         (0)     7173 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00830.html\n--rw-r--r--   0 root         (0) root         (0)      115 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00830.js\n--rw-r--r--   0 root         (0) root         (0)   252039 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00830_source.html\n--rw-r--r--   0 root         (0) root         (0)     6896 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00833.html\n--rw-r--r--   0 root         (0) root         (0)       65 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00833.js\n--rw-r--r--   0 root         (0) root         (0)    34222 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00833_source.html\n--rw-r--r--   0 root         (0) root         (0)     6806 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00836.html\n--rw-r--r--   0 root         (0) root         (0)       67 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00836.js\n--rw-r--r--   0 root         (0) root         (0)    33909 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00836_source.html\n--rw-r--r--   0 root         (0) root         (0)     7124 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00839.html\n--rw-r--r--   0 root         (0) root         (0)      115 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00839.js\n--rw-r--r--   0 root         (0) root         (0)   128978 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00839_source.html\n--rw-r--r--   0 root         (0) root         (0)     4473 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00842.html\n--rw-r--r--   0 root         (0) root         (0)    12882 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00842_source.html\n--rw-r--r--   0 root         (0) root         (0)     4477 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00845.html\n--rw-r--r--   0 root         (0) root         (0)    10582 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00845_source.html\n--rw-r--r--   0 root         (0) root         (0)     7224 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00848.html\n--rw-r--r--   0 root         (0) root         (0)      126 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00848.js\n--rw-r--r--   0 root         (0) root         (0)   224156 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00848_source.html\n--rw-r--r--   0 root         (0) root         (0)     6498 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00851.html\n--rw-r--r--   0 root         (0) root         (0)       69 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00851.js\n--rw-r--r--   0 root         (0) root         (0)    21924 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00851_source.html\n--rw-r--r--   0 root         (0) root         (0)     6380 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00854.html\n--rw-r--r--   0 root         (0) root         (0)       61 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00854.js\n--rw-r--r--   0 root         (0) root         (0)   110975 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00854_source.html\n--rw-r--r--   0 root         (0) root         (0)     6380 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00857.html\n--rw-r--r--   0 root         (0) root         (0)       61 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00857.js\n--rw-r--r--   0 root         (0) root         (0)   111060 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00857_source.html\n--rw-r--r--   0 root         (0) root         (0)     6591 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00860.html\n--rw-r--r--   0 root         (0) root         (0)      101 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00860.js\n--rw-r--r--   0 root         (0) root         (0)    12825 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00860_source.html\n--rw-r--r--   0 root         (0) root         (0)     6356 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00863.html\n--rw-r--r--   0 root         (0) root         (0)       81 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00863.js\n--rw-r--r--   0 root         (0) root         (0)    26983 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00863_source.html\n--rw-r--r--   0 root         (0) root         (0)     6686 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00866.html\n--rw-r--r--   0 root         (0) root         (0)       69 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00866.js\n--rw-r--r--   0 root         (0) root         (0)    27491 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00866_source.html\n--rw-r--r--   0 root         (0) root         (0)     6485 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00869.html\n--rw-r--r--   0 root         (0) root         (0)       67 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00869.js\n--rw-r--r--   0 root         (0) root         (0)    19961 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00869_source.html\n--rw-r--r--   0 root         (0) root         (0)    14200 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00872.html\n--rw-r--r--   0 root         (0) root         (0)     2466 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00872.js\n--rw-r--r--   0 root         (0) root         (0)   182424 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00872_source.html\n--rw-r--r--   0 root         (0) root         (0)     6374 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00875.html\n--rw-r--r--   0 root         (0) root         (0)       69 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00875.js\n--rw-r--r--   0 root         (0) root         (0)    20015 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00875_source.html\n--rw-r--r--   0 root         (0) root         (0)     6573 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00878.html\n--rw-r--r--   0 root         (0) root         (0)       98 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00878.js\n--rw-r--r--   0 root         (0) root         (0)    12789 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00878_source.html\n--rw-r--r--   0 root         (0) root         (0)     6424 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00881.html\n--rw-r--r--   0 root         (0) root         (0)       67 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00881.js\n--rw-r--r--   0 root         (0) root         (0)    23840 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00881_source.html\n--rw-r--r--   0 root         (0) root         (0)     6245 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00884.html\n--rw-r--r--   0 root         (0) root         (0)       71 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00884.js\n--rw-r--r--   0 root         (0) root         (0)    22525 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00884_source.html\n--rw-r--r--   0 root         (0) root         (0)     6444 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00887.html\n--rw-r--r--   0 root         (0) root         (0)       78 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00887.js\n--rw-r--r--   0 root         (0) root         (0)    23458 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00887_source.html\n--rw-r--r--   0 root         (0) root         (0)    11269 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00890.html\n--rw-r--r--   0 root         (0) root         (0)      424 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00890.js\n--rw-r--r--   0 root         (0) root         (0)    29215 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00890_source.html\n--rw-r--r--   0 root         (0) root         (0)     6451 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00893.html\n--rw-r--r--   0 root         (0) root         (0)       79 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00893.js\n--rw-r--r--   0 root         (0) root         (0)    25441 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00893_source.html\n--rw-r--r--   0 root         (0) root         (0)     6409 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00896.html\n--rw-r--r--   0 root         (0) root         (0)       73 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00896.js\n--rw-r--r--   0 root         (0) root         (0)    22722 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00896_source.html\n--rw-r--r--   0 root         (0) root         (0)     6369 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00899.html\n--rw-r--r--   0 root         (0) root         (0)       68 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00899.js\n--rw-r--r--   0 root         (0) root         (0)    19253 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00899_source.html\n--rw-r--r--   0 root         (0) root         (0)     6357 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00902.html\n--rw-r--r--   0 root         (0) root         (0)       70 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00902.js\n--rw-r--r--   0 root         (0) root         (0)    22932 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00902_source.html\n+-rw-r--r--   0 root         (0) root         (0)       65 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00779.js\n+-rw-r--r--   0 root         (0) root         (0)    47051 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00779_source.html\n+-rw-r--r--   0 root         (0) root         (0)     6380 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00782.html\n+-rw-r--r--   0 root         (0) root         (0)       61 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00782.js\n+-rw-r--r--   0 root         (0) root         (0)   110646 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00782_source.html\n+-rw-r--r--   0 root         (0) root         (0)     6896 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00785.html\n+-rw-r--r--   0 root         (0) root         (0)       65 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00785.js\n+-rw-r--r--   0 root         (0) root         (0)    34222 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00785_source.html\n+-rw-r--r--   0 root         (0) root         (0)     6357 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00788.html\n+-rw-r--r--   0 root         (0) root         (0)       70 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00788.js\n+-rw-r--r--   0 root         (0) root         (0)    22932 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00788_source.html\n+-rw-r--r--   0 root         (0) root         (0)     6910 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00791.html\n+-rw-r--r--   0 root         (0) root         (0)       66 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00791.js\n+-rw-r--r--   0 root         (0) root         (0)    44338 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00791_source.html\n+-rw-r--r--   0 root         (0) root         (0)     6266 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00794.html\n+-rw-r--r--   0 root         (0) root         (0)    81482 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00794_source.html\n+-rw-r--r--   0 root         (0) root         (0)     6436 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00797.html\n+-rw-r--r--   0 root         (0) root         (0)      121 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00797.js\n+-rw-r--r--   0 root         (0) root         (0)    46437 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00797_source.html\n+-rw-r--r--   0 root         (0) root         (0)     5643 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00800.html\n+-rw-r--r--   0 root         (0) root         (0)    38293 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00800_source.html\n+-rw-r--r--   0 root         (0) root         (0)     6081 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00803.html\n+-rw-r--r--   0 root         (0) root         (0)    85952 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00803_source.html\n+-rw-r--r--   0 root         (0) root         (0)     6288 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00806.html\n+-rw-r--r--   0 root         (0) root         (0)    24306 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00806_source.html\n+-rw-r--r--   0 root         (0) root         (0)     5898 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00809.html\n+-rw-r--r--   0 root         (0) root         (0)    22112 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00809_source.html\n+-rw-r--r--   0 root         (0) root         (0)     6113 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00812.html\n+-rw-r--r--   0 root         (0) root         (0)    29125 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00812_source.html\n+-rw-r--r--   0 root         (0) root         (0)     6201 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00815.html\n+-rw-r--r--   0 root         (0) root         (0)   163472 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00815_source.html\n+-rw-r--r--   0 root         (0) root         (0)     9922 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00818.html\n+-rw-r--r--   0 root         (0) root         (0)      456 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00818.js\n+-rw-r--r--   0 root         (0) root         (0)   177058 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00818_source.html\n+-rw-r--r--   0 root         (0) root         (0)     6697 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00821.html\n+-rw-r--r--   0 root         (0) root         (0)       66 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00821.js\n+-rw-r--r--   0 root         (0) root         (0)    66667 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00821_source.html\n+-rw-r--r--   0 root         (0) root         (0)     9467 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00824.html\n+-rw-r--r--   0 root         (0) root         (0)      404 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00824.js\n+-rw-r--r--   0 root         (0) root         (0)    84413 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00824_source.html\n+-rw-r--r--   0 root         (0) root         (0)     7836 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00827.html\n+-rw-r--r--   0 root         (0) root         (0)      190 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00827.js\n+-rw-r--r--   0 root         (0) root         (0)   147346 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00827_source.html\n+-rw-r--r--   0 root         (0) root         (0)     6744 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00830.html\n+-rw-r--r--   0 root         (0) root         (0)      103 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00830.js\n+-rw-r--r--   0 root         (0) root         (0)    42246 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00830_source.html\n+-rw-r--r--   0 root         (0) root         (0)     8006 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00833.html\n+-rw-r--r--   0 root         (0) root         (0)      171 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00833.js\n+-rw-r--r--   0 root         (0) root         (0)    74097 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00833_source.html\n+-rw-r--r--   0 root         (0) root         (0)     8123 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00836.html\n+-rw-r--r--   0 root         (0) root         (0)      314 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00836.js\n+-rw-r--r--   0 root         (0) root         (0)    50493 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00836_source.html\n+-rw-r--r--   0 root         (0) root         (0)    11426 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00839.html\n+-rw-r--r--   0 root         (0) root         (0)     1173 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00839.js\n+-rw-r--r--   0 root         (0) root         (0)    22910 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00839_source.html\n+-rw-r--r--   0 root         (0) root         (0)     7335 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00842.html\n+-rw-r--r--   0 root         (0) root         (0)      111 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00842.js\n+-rw-r--r--   0 root         (0) root         (0)   167870 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00842_source.html\n+-rw-r--r--   0 root         (0) root         (0)     7135 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00845.html\n+-rw-r--r--   0 root         (0) root         (0)      119 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00845.js\n+-rw-r--r--   0 root         (0) root         (0)    38038 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00845_source.html\n+-rw-r--r--   0 root         (0) root         (0)     6562 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00848.html\n+-rw-r--r--   0 root         (0) root         (0)       64 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00848.js\n+-rw-r--r--   0 root         (0) root         (0)    19419 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00848_source.html\n+-rw-r--r--   0 root         (0) root         (0)     8222 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00851.html\n+-rw-r--r--   0 root         (0) root         (0)      130 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00851.js\n+-rw-r--r--   0 root         (0) root         (0)   212260 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00851_source.html\n+-rw-r--r--   0 root         (0) root         (0)     7812 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00854.html\n+-rw-r--r--   0 root         (0) root         (0)      163 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00854.js\n+-rw-r--r--   0 root         (0) root         (0)    67818 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00854_source.html\n+-rw-r--r--   0 root         (0) root         (0)     7303 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00857.html\n+-rw-r--r--   0 root         (0) root         (0)      160 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00857.js\n+-rw-r--r--   0 root         (0) root         (0)    53847 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00857_source.html\n+-rw-r--r--   0 root         (0) root         (0)     6297 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00860.html\n+-rw-r--r--   0 root         (0) root         (0)       60 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00860.js\n+-rw-r--r--   0 root         (0) root         (0)    38673 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00860_source.html\n+-rw-r--r--   0 root         (0) root         (0)     7579 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00863.html\n+-rw-r--r--   0 root         (0) root         (0)      130 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00863.js\n+-rw-r--r--   0 root         (0) root         (0)   135866 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00863_source.html\n+-rw-r--r--   0 root         (0) root         (0)     5835 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00866.html\n+-rw-r--r--   0 root         (0) root         (0)    89789 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00866_source.html\n+-rw-r--r--   0 root         (0) root         (0)     6473 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00869.html\n+-rw-r--r--   0 root         (0) root         (0)       59 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00869.js\n+-rw-r--r--   0 root         (0) root         (0)    53912 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00869_source.html\n+-rw-r--r--   0 root         (0) root         (0)     5826 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00872.html\n+-rw-r--r--   0 root         (0) root         (0)   100441 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00872_source.html\n+-rw-r--r--   0 root         (0) root         (0)     5752 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00875.html\n+-rw-r--r--   0 root         (0) root         (0)    38296 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00875_source.html\n+-rw-r--r--   0 root         (0) root         (0)     6575 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00878.html\n+-rw-r--r--   0 root         (0) root         (0)       69 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00878.js\n+-rw-r--r--   0 root         (0) root         (0)    76686 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00878_source.html\n+-rw-r--r--   0 root         (0) root         (0)     7503 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00881.html\n+-rw-r--r--   0 root         (0) root         (0)      111 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00881.js\n+-rw-r--r--   0 root         (0) root         (0)    88830 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00881_source.html\n+-rw-r--r--   0 root         (0) root         (0)     7764 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00884.html\n+-rw-r--r--   0 root         (0) root         (0)      150 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00884.js\n+-rw-r--r--   0 root         (0) root         (0)    40417 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00884_source.html\n+-rw-r--r--   0 root         (0) root         (0)     7074 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00887.html\n+-rw-r--r--   0 root         (0) root         (0)      120 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00887.js\n+-rw-r--r--   0 root         (0) root         (0)    75918 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00887_source.html\n+-rw-r--r--   0 root         (0) root         (0)     6386 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00890.html\n+-rw-r--r--   0 root         (0) root         (0)       55 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00890.js\n+-rw-r--r--   0 root         (0) root         (0)    14298 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00890_source.html\n+-rw-r--r--   0 root         (0) root         (0)     6557 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00893.html\n+-rw-r--r--   0 root         (0) root         (0)       78 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00893.js\n+-rw-r--r--   0 root         (0) root         (0)    35227 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00893_source.html\n+-rw-r--r--   0 root         (0) root         (0)     7310 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00896.html\n+-rw-r--r--   0 root         (0) root         (0)      195 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00896.js\n+-rw-r--r--   0 root         (0) root         (0)    27166 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00896_source.html\n+-rw-r--r--   0 root         (0) root         (0)     6435 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00899.html\n+-rw-r--r--   0 root         (0) root         (0)       69 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00899.js\n+-rw-r--r--   0 root         (0) root         (0)    45701 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00899_source.html\n+-rw-r--r--   0 root         (0) root         (0)     7384 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00902.html\n+-rw-r--r--   0 root         (0) root         (0)      109 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00902.js\n+-rw-r--r--   0 root         (0) root         (0)    65515 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00902_source.html\n -rw-r--r--   0 root         (0) root         (0)     4658 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00905.html\n -rw-r--r--   0 root         (0) root         (0)       71 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00905.js\n -rw-r--r--   0 root         (0) root         (0)     5891 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00906.html\n -rw-r--r--   0 root         (0) root         (0)      216 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00906.js\n -rw-r--r--   0 root         (0) root         (0)    10818 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00907.html\n -rw-r--r--   0 root         (0) root         (0)      607 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00907.js\n -rw-r--r--   0 root         (0) root         (0)    45242 2025-01-02 08:47:46.000000 ./usr/share/doc/opensubdiv/doxy_html/a00908.html\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00674.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00674.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/vtr/refinement.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/osd/cudaVertexBuffer.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -88,40 +88,43 @@\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n+<a href=\"#nested-classes\">Classes</a> &#124;\n <a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">refinement.h File Reference</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">cudaVertexBuffer.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a01492_source.html\">../sdc/types.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00734_source.html\">../sdc/options.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a01495_source.html\">../vtr/types.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00695_source.html\">../vtr/level.h</a>&quot;</code><br />\n-<code>#include &lt;vector&gt;</code><br />\n+<code>#include &lt;cstddef&gt;</code><br />\n </div>\n <p><a href=\"a00674_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n+<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n+Classes</h2></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01193.html\">CudaVertexBuffer</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Concrete vertex buffer class for Cuda subdivision.  <a href=\"a01193.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+</table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00909\" id=\"r_a00909\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00909.html\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr</a></td></tr>\n+<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bd5473d7d5841d48919aaa9ad0cb1f9b.html\">vtr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00674.html\">refinement.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00674.html\">cudaVertexBuffer.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,24 +1,24 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-refinement.h File Reference\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+cudaVertexBuffer.h File Reference\n #include \"../version.h\"\n-#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n-#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh\"\n-#include \"_\b._\b._\b/_\bv_\bt_\br_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n-#include \"_\b._\b._\b/_\bv_\bt_\br_\b/_\bl_\be_\bv_\be_\bl_\b._\bh\"\n-#include <vector>\n+#include <cstddef>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n+C\bCl\bla\bas\bss\bse\bes\bs\n+class \u00a0 _\bC_\bu_\bd_\ba_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+\u00a0       Concrete vertex buffer class for Cuda subdivision. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bv_\bt_\br\n-    * _\br_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bc_\bu_\bd_\ba_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00674_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00674_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/vtr/refinement.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/osd/cudaVertexBuffer.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">refinement.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">cudaVertexBuffer.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00674.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2014 DreamWorks Animation LLC.</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2013 Pixar</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -118,457 +118,80 @@\n <div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_VTR_REFINEMENT_H</span></div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#define OPENSUBDIV3_VTR_REFINEMENT_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span> </div>\n-<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span> </div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#include &quot;../sdc/types.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../sdc/options.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../vtr/types.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &quot;../vtr/level.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span> </div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"comment\">//  Declaration for the main refinement class (Refinement) and its pre-requisites:</span></div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span> </div>\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span><span class=\"keyword\">namespace </span>Vtr {</div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"keyword\">namespace </span>internal {</div>\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span> </div>\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span><span class=\"keyword\">class </span>FVarRefinement;</div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span> </div>\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span><span class=\"comment\">//  Refinement:</span></div>\n-<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span><span class=\"comment\">//      A refinement is a mapping between two levels -- relating the components in the original</span></div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span><span class=\"comment\">//  (parent) level to the one refined (child).  The refinement may be complete (uniform) or sparse</span></div>\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span><span class=\"comment\">//  (adaptive or otherwise selective), so not all components in the parent level will spawn</span></div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span><span class=\"comment\">//  components in the child level.</span></div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span><span class=\"comment\">//  Refinement is an abstract class and expects subclasses corresponding to the different types</span></div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span><span class=\"comment\">//  of topological splits that the supported subdivision schemes collectively require, i.e. those</span></div>\n-<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span><span class=\"comment\">//  listed in Sdc::SplitType.  Note the virtual requirements expected of the subclasses in the list</span></div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span><span class=\"comment\">//  of protected methods -- they differ mainly in the topology that is created in the child Level</span></div>\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span><span class=\"comment\">//  and not the propagation of tags through refinement, subdivision of sharpness values or the</span></div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span><span class=\"comment\">//  treatment of face-varying data.  The primary subclasses are QuadRefinement and TriRefinement.</span></div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span><span class=\"comment\">//  At a high level, all that is necessary in terms of interface is to construct, initialize</span></div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span><span class=\"comment\">//  (linking the two levels), optionally select components for sparse refinement (via use of the</span></div>\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span><span class=\"comment\">//  SparseSelector) and call the refine() method.  This usage is expected of Far::TopologyRefiner.</span></div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span><span class=\"comment\">//  Since we really want this class to be restricted from public access eventually, all methods</span></div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span><span class=\"comment\">//  begin with lower case (as is the convention for protected methods) and the list of friends</span></div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span><span class=\"comment\">//  will be maintained more strictly.</span></div>\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span><span class=\"keyword\">class </span>Refinement {</div>\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span> </div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>    Refinement(Level <span class=\"keyword\">const</span> &amp; parent, Level &amp; child, Sdc::Options <span class=\"keyword\">const</span>&amp; schemeOptions);</div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span>    <span class=\"keyword\">virtual</span> ~Refinement();</div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span> </div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span>    Level <span class=\"keyword\">const</span>&amp; parent()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> *_parent; }</div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span>    Level <span class=\"keyword\">const</span>&amp; child()<span class=\"keyword\"> const  </span>{ <span class=\"keywordflow\">return</span> *_child; }</div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span>    Level&amp;       child()        { <span class=\"keywordflow\">return</span> *_child; }</div>\n+<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_CUDA_VERTEX_BUFFER_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_CUDA_VERTEX_BUFFER_H</span></div>\n+<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n+<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &lt;cstddef&gt;</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span> </div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span>Osd {</div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00042\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01193.html\">   42</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01193.html\">CudaVertexBuffer</a> {</div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span> </div>\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01193.html#ab51afd364a99a3e33d8042537e8f167b\">   46</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01193.html\">CudaVertexBuffer</a> * <a class=\"code hl_function\" href=\"a01193.html#ab51afd364a99a3e33d8042537e8f167b\">Create</a>(<span class=\"keywordtype\">int</span> numElements, <span class=\"keywordtype\">int</span> numVertices,</div>\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span>                                     <span class=\"keywordtype\">void</span> *deviceContext = NULL);</div>\n+<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span> </div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01193.html#a7534b2edf898c9b6ee4a0b9c8aaf918f\">   50</a></span>    <a class=\"code hl_function\" href=\"a01193.html#a7534b2edf898c9b6ee4a0b9c8aaf918f\">~CudaVertexBuffer</a>();</div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span> </div>\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01193.html#a96601a091f8831823c4dd72b6c962f1b\">   54</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01193.html#a96601a091f8831823c4dd72b6c962f1b\">UpdateData</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <span class=\"keywordtype\">int</span> startVertex, <span class=\"keywordtype\">int</span> numVertices,</div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span>                    <span class=\"keywordtype\">void</span> *deviceContext=NULL);</div>\n+<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span> </div>\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01193.html#a77cee40767fd4936f20a8f9d9d9ea625\">   58</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01193.html#a77cee40767fd4936f20a8f9d9d9ea625\">GetNumElements</a>() <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span> </div>\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01193.html#aaf4a32b8a414eff77000c584c2015cb7\">   61</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01193.html#aaf4a32b8a414eff77000c584c2015cb7\">GetNumVertices</a>() <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span> </div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01193.html#a59eb144c23606529ba730ae15598af09\">   64</a></span>    <span class=\"keywordtype\">float</span> * <a class=\"code hl_function\" href=\"a01193.html#a59eb144c23606529ba730ae15598af09\">BindCudaBuffer</a>();</div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span> </div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span><span class=\"keyword\">protected</span>:</div>\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01193.html#af6cb32d896f7815cac1969c857845ba8\">   68</a></span>    <a class=\"code hl_function\" href=\"a01193.html#af6cb32d896f7815cac1969c857845ba8\">CudaVertexBuffer</a>(<span class=\"keywordtype\">int</span> numElements, <span class=\"keywordtype\">int</span> numVertices);</div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span> </div>\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01193.html#add23d9f5bbc918076d240287a9b3664f\">   72</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01193.html#add23d9f5bbc918076d240287a9b3664f\">allocate</a>();</div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span> </div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span>    <span class=\"keywordtype\">int</span> _numElements;</div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span>    <span class=\"keywordtype\">int</span> _numVertices;</div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span>    <span class=\"keywordtype\">void</span> *_cudaMem;</div>\n <div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span> </div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>    <a class=\"code hl_enumeration\" href=\"a00913.html#a61ef2f8f765ba17f8036bcc0f0fa887b\">Sdc::Split</a> getSplitType()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _splitType; }</div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span>    <span class=\"keywordtype\">int</span> getRegularFaceSize()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _regFaceSize; }</div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>    Sdc::Options getOptions()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _options; }</div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span> </div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>}  <span class=\"comment\">// end namespace Osd</span></div>\n <div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span> </div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>    <span class=\"comment\">//  Face-varying:</span></div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span>    <span class=\"keywordtype\">int</span> getNumFVarChannels()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (<span class=\"keywordtype\">int</span>) _fvarChannels.size(); }</div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>}  <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n <div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span> </div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>    FVarRefinement <span class=\"keyword\">const</span> &amp; getFVarRefinement(<span class=\"keywordtype\">int</span> c)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> *_fvarChannels[c]; }</div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>}  <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n <div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span> </div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>    <span class=\"comment\">//  Options associated with the actual refinement operation, which may end up</span></div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>    <span class=\"comment\">//  quite involved if we want to allow for the refinement of data that is not</span></div>\n-<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>    <span class=\"comment\">//  of interest to be suppressed.  For now we have:</span></div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span>    <span class=\"comment\">//      &quot;sparse&quot;: the alternative to uniform refinement, which requires that</span></div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>    <span class=\"comment\">//          components be previously selected/marked to be included.</span></div>\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span>    <span class=\"comment\">//      &quot;minimal topology&quot;: this is one that may get broken down into a finer</span></div>\n-<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>    <span class=\"comment\">//          set of options.  It suppresses &quot;full topology&quot; in the child level</span></div>\n-<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span>    <span class=\"comment\">//          and only generates what is minimally necessary for interpolation --</span></div>\n-<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span>    <span class=\"comment\">//          which requires at least the face-vertices for faces, but also the</span></div>\n-<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span>    <span class=\"comment\">//          vertex-faces for any face-varying channels present.  So it will</span></div>\n-<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span>    <span class=\"comment\">//          generate one or two of the six possible topological relations.</span></div>\n-<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span>    <span class=\"comment\">//  These are strictly controlled right now, e.g. for sparse refinement, we</span></div>\n-<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span>    <span class=\"comment\">//  currently enforce full topology at the finest level to allow for subsequent</span></div>\n-<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span>    <span class=\"comment\">//  patch construction.</span></div>\n-<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span>    <span class=\"keyword\">struct </span>Options {</div>\n-<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span>        Options() : _sparse(false),</div>\n-<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span>                    _faceVertsFirst(false),</div>\n-<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span>                    _minimalTopology(false)</div>\n-<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span>                    { }</div>\n-<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span> </div>\n-<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> _sparse          : 1;</div>\n-<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> _faceVertsFirst  : 1;</div>\n-<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> _minimalTopology : 1;</div>\n-<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\">  116</span> </div>\n-<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span>        <span class=\"comment\">//  Still under consideration:</span></div>\n-<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\">  118</span>        <span class=\"comment\">//unsigned int _childToParentMap : 1;</span></div>\n-<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span>    };</div>\n-<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span> </div>\n-<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\">  121</span>    <span class=\"keywordtype\">void</span> refine(Options options = Options());</div>\n-<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span> </div>\n-<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span>    <span class=\"keywordtype\">bool</span> hasFaceVerticesFirst()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _faceVertsFirst; }</div>\n-<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span> </div>\n-<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span>    <span class=\"comment\">//  Access to members -- some testing classes (involving vertex interpolation)</span></div>\n-<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span>    <span class=\"comment\">//  currently make use of these:</span></div>\n-<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span>    <span class=\"keywordtype\">int</span> getNumChildFacesFromFaces()<span class=\"keyword\"> const       </span>{ <span class=\"keywordflow\">return</span> _childFaceFromFaceCount; }</div>\n-<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\">  131</span>    <span class=\"keywordtype\">int</span> getNumChildEdgesFromFaces()<span class=\"keyword\"> const       </span>{ <span class=\"keywordflow\">return</span> _childEdgeFromFaceCount; }</div>\n-<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\">  132</span>    <span class=\"keywordtype\">int</span> getNumChildEdgesFromEdges()<span class=\"keyword\"> const       </span>{ <span class=\"keywordflow\">return</span> _childEdgeFromEdgeCount; }</div>\n-<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\">  133</span>    <span class=\"keywordtype\">int</span> getNumChildVerticesFromFaces()<span class=\"keyword\"> const    </span>{ <span class=\"keywordflow\">return</span> _childVertFromFaceCount; }</div>\n-<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\">  134</span>    <span class=\"keywordtype\">int</span> getNumChildVerticesFromEdges()<span class=\"keyword\"> const    </span>{ <span class=\"keywordflow\">return</span> _childVertFromEdgeCount; }</div>\n-<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\">  135</span>    <span class=\"keywordtype\">int</span> getNumChildVerticesFromVertices()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _childVertFromVertCount; }</div>\n-<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\">  136</span> </div>\n-<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\">  137</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> getFirstChildFaceFromFaces()<span class=\"keyword\"> const      </span>{ <span class=\"keywordflow\">return</span> _firstChildFaceFromFace; }</div>\n-<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\">  138</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> getFirstChildEdgeFromFaces()<span class=\"keyword\"> const      </span>{ <span class=\"keywordflow\">return</span> _firstChildEdgeFromFace; }</div>\n-<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\">  139</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> getFirstChildEdgeFromEdges()<span class=\"keyword\"> const      </span>{ <span class=\"keywordflow\">return</span> _firstChildEdgeFromEdge; }</div>\n-<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\">  140</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> getFirstChildVertexFromFaces()<span class=\"keyword\"> const    </span>{ <span class=\"keywordflow\">return</span> _firstChildVertFromFace; }</div>\n-<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\">  141</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> getFirstChildVertexFromEdges()<span class=\"keyword\"> const    </span>{ <span class=\"keywordflow\">return</span> _firstChildVertFromEdge; }</div>\n-<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> getFirstChildVertexFromVertices()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _firstChildVertFromVert; }</div>\n-<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\">  143</span> </div>\n-<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\">  144</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> getFaceChildVertex(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> f)<span class=\"keyword\"> const   </span>{ <span class=\"keywordflow\">return</span> _faceChildVertIndex[f]; }</div>\n-<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\">  145</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> getEdgeChildVertex(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> e)<span class=\"keyword\"> const   </span>{ <span class=\"keywordflow\">return</span> _edgeChildVertIndex[e]; }</div>\n-<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\">  146</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> getVertexChildVertex(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> v)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _vertChildVertIndex[v]; }</div>\n-<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\">  147</span> </div>\n-<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\">  148</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a>  getFaceChildFaces(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> parentFace) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\">  149</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a>  getFaceChildEdges(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> parentFace) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\">  150</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a>  getEdgeChildEdges(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> parentEdge) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\">  151</span> </div>\n-<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\">  152</span>    <span class=\"comment\">//  Child-to-parent relationships</span></div>\n-<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\">  153</span>    <span class=\"keywordtype\">bool</span> isChildVertexComplete(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> v)<span class=\"keyword\"> const       </span>{ <span class=\"keywordflow\">return</span> ! _childVertexTag[v]._incomplete; }</div>\n-<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\">  154</span> </div>\n-<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\">  155</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> getChildFaceParentFace(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> f)<span class=\"keyword\"> const     </span>{ <span class=\"keywordflow\">return</span> _childFaceParentIndex[f]; }</div>\n-<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\">  156</span>    <span class=\"keywordtype\">int</span>   getChildFaceInParentFace(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> f)<span class=\"keyword\"> const   </span>{ <span class=\"keywordflow\">return</span> _childFaceTag[f]._indexInParent; }</div>\n-<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\">  157</span> </div>\n-<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\">  158</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> getChildEdgeParentIndex(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> e)<span class=\"keyword\"> const    </span>{ <span class=\"keywordflow\">return</span> _childEdgeParentIndex[e]; }</div>\n-<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\">  159</span> </div>\n-<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\">  160</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> getChildVertexParentIndex(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> v)<span class=\"keyword\"> const  </span>{ <span class=\"keywordflow\">return</span> _childVertexParentIndex[v]; }</div>\n-<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\">  161</span> </div>\n-<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\">  162</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\">  163</span><span class=\"comment\">//  Modifiers intended for internal/protected use:</span></div>\n-<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\">  164</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\">  165</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\">  166</span> </div>\n-<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\">  167</span>    <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a> getFaceChildFaces(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> parentFace);</div>\n-<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\">  168</span>    <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a> getFaceChildEdges(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> parentFace);</div>\n-<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\">  169</span>    <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a> getEdgeChildEdges(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> parentEdge);</div>\n-<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\">  170</span> </div>\n-<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\">  172</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\">  173</span>    <span class=\"comment\">//  Tags have now been added per-component in Level, but there is additional need to tag</span></div>\n-<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\">  174</span>    <span class=\"comment\">//  components within Refinement -- we can&#39;t tag the parent level components for any</span></div>\n-<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\">  175</span>    <span class=\"comment\">//  refinement (in order to keep it const) and tags associated with children that are</span></div>\n-<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\">  176</span>    <span class=\"comment\">//  specific to the child-to-parent mapping may not be warranted in the child level.</span></div>\n-<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\">  178</span>    <span class=\"comment\">//  Parent tags are only required for sparse refinement.  The main property to tag is</span></div>\n-<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\">  179</span>    <span class=\"comment\">//  whether a component was selected, and so a single SparseTag is used for all three</span></div>\n-<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\">  180</span>    <span class=\"comment\">//  component types.  Tagging if a component is &quot;transitional&quot; is also useful.  This may</span></div>\n-<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\">  181</span>    <span class=\"comment\">//  only be necessary for edges but is currently packed into a mask per-edge for faces,</span></div>\n-<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\">  182</span>    <span class=\"comment\">//  which could be deferred, in which case &quot;transitional&quot; could be a single bit.</span></div>\n-<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\">  183</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\">  184</span>    <span class=\"comment\">//  Child tags are part of the child-to-parent mapping, which consists of the parent</span></div>\n-<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\">  185</span>    <span class=\"comment\">//  component index for each child component, plus a tag for the child indicating more</span></div>\n-<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\">  186</span>    <span class=\"comment\">//  about its relationship to its parent, e.g. is it completely defined, what the parent</span></div>\n-<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\">  187</span>    <span class=\"comment\">//  component type is, what is the index of the child within its parent, etc.</span></div>\n-<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\">  188</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\">  189</span>    <span class=\"keyword\">struct </span>SparseTag {</div>\n-<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\">  190</span>        SparseTag() : _selected(0), _transitional(0) { }</div>\n-<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\">  191</span> </div>\n-<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\">  192</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> _selected     : 1;  <span class=\"comment\">// component specifically selected for refinement</span></div>\n-<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\">  193</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> _transitional : 4;  <span class=\"comment\">// adjacent to a refined component (4-bits for face)</span></div>\n-<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\">  194</span>    };</div>\n-<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\">  195</span> </div>\n-<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\">  196</span>    <span class=\"keyword\">struct </span>ChildTag {</div>\n-<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\">  197</span>        ChildTag() { }</div>\n-<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\">  198</span> </div>\n-<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\">  199</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> _incomplete    : 1;  <span class=\"comment\">// incomplete neighborhood to represent limit of parent</span></div>\n-<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\">  200</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> _parentType    : 2;  <span class=\"comment\">// type of parent component:  vertex, edge or face</span></div>\n-<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\">  201</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> _indexInParent : 2;  <span class=\"comment\">// index of child wrt parent:  0-3, or iterative if N &gt; 4</span></div>\n-<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\">  202</span>    };</div>\n-<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\">  203</span> </div>\n-<div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\">  204</span>    <span class=\"comment\">//  Methods to access and modify tags:</span></div>\n-<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\">  205</span>    SparseTag <span class=\"keyword\">const</span> &amp; getParentFaceSparseTag(  <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> f)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _parentFaceTag[f]; }</div>\n-<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\">  206</span>    SparseTag <span class=\"keyword\">const</span> &amp; getParentEdgeSparseTag(  <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> e)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _parentEdgeTag[e]; }</div>\n-<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\">  207</span>    SparseTag <span class=\"keyword\">const</span> &amp; getParentVertexSparseTag(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> v)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _parentVertexTag[v]; }</div>\n-<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\">  208</span> </div>\n-<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\">  209</span>    SparseTag &amp; getParentFaceSparseTag(  <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> f) { <span class=\"keywordflow\">return</span> _parentFaceTag[f]; }</div>\n-<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\">  210</span>    SparseTag &amp; getParentEdgeSparseTag(  <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> e) { <span class=\"keywordflow\">return</span> _parentEdgeTag[e]; }</div>\n-<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\">  211</span>    SparseTag &amp; getParentVertexSparseTag(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> v) { <span class=\"keywordflow\">return</span> _parentVertexTag[v]; }</div>\n-<div class=\"line\"><a id=\"l00212\" name=\"l00212\"></a><span class=\"lineno\">  212</span> </div>\n-<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\">  213</span>    ChildTag <span class=\"keyword\">const</span> &amp; getChildFaceTag(  <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> f)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _childFaceTag[f]; }</div>\n-<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\">  214</span>    ChildTag <span class=\"keyword\">const</span> &amp; getChildEdgeTag(  <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> e)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _childEdgeTag[e]; }</div>\n-<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\">  215</span>    ChildTag <span class=\"keyword\">const</span> &amp; getChildVertexTag(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> v)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _childVertexTag[v]; }</div>\n-<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\">  216</span> </div>\n-<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\">  217</span>    ChildTag &amp; getChildFaceTag(  <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> f) { <span class=\"keywordflow\">return</span> _childFaceTag[f]; }</div>\n-<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\">  218</span>    ChildTag &amp; getChildEdgeTag(  <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> e) { <span class=\"keywordflow\">return</span> _childEdgeTag[e]; }</div>\n-<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\">  219</span>    ChildTag &amp; getChildVertexTag(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> v) { <span class=\"keywordflow\">return</span> _childVertexTag[v]; }</div>\n-<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\">  220</span> </div>\n-<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\">  221</span><span class=\"comment\">//  Remaining methods should really be protected -- for use by subclasses...</span></div>\n-<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\">  222</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\">  223</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\">  224</span>    <span class=\"comment\">//  Methods involved in constructing the parent-to-child mapping -- when the</span></div>\n-<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\">  225</span>    <span class=\"comment\">//  refinement is sparse, additional methods are needed to identify the selection:</span></div>\n-<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\">  226</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\">  227</span>    <span class=\"keywordtype\">void</span> populateParentToChildMapping();</div>\n-<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\">  228</span>    <span class=\"keywordtype\">void</span> populateParentChildIndices();</div>\n-<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\">  229</span>    <span class=\"keywordtype\">void</span> printParentToChildMapping() <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\">  230</span> </div>\n-<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\">  231</span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> allocateParentChildIndices() = 0;</div>\n-<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\">  232</span> </div>\n-<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\">  233</span>    <span class=\"comment\">//  Supporting method for sparse refinement:</span></div>\n-<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\">  234</span>    <span class=\"keywordtype\">void</span> initializeSparseSelectionTags();</div>\n-<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\">  235</span>    <span class=\"keywordtype\">void</span> markSparseChildComponentIndices();</div>\n-<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\">  236</span>    <span class=\"keywordtype\">void</span> markSparseVertexChildren();</div>\n-<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\">  237</span>    <span class=\"keywordtype\">void</span> markSparseEdgeChildren();</div>\n-<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\">  238</span> </div>\n-<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\">  239</span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> markSparseFaceChildren() = 0;</div>\n-<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\">  240</span> </div>\n-<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\">  241</span>    <span class=\"keywordtype\">void</span> initializeChildComponentCounts();</div>\n-<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\">  242</span> </div>\n-<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\">  243</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\">  244</span>    <span class=\"comment\">//  Methods involved in constructing the child-to-parent mapping:</span></div>\n-<div class=\"line\"><a id=\"l00245\" name=\"l00245\"></a><span class=\"lineno\">  245</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\">  246</span>    <span class=\"keywordtype\">void</span> populateChildToParentMapping();</div>\n-<div class=\"line\"><a id=\"l00247\" name=\"l00247\"></a><span class=\"lineno\">  247</span> </div>\n-<div class=\"line\"><a id=\"l00248\" name=\"l00248\"></a><span class=\"lineno\">  248</span>    <span class=\"keywordtype\">void</span> populateFaceParentVectors(ChildTag <span class=\"keyword\">const</span> initialChildTags[2][4]);</div>\n-<div class=\"line\"><a id=\"l00249\" name=\"l00249\"></a><span class=\"lineno\">  249</span>    <span class=\"keywordtype\">void</span> populateFaceParentFromParentFaces(ChildTag <span class=\"keyword\">const</span> initialChildTags[2][4]);</div>\n-<div class=\"line\"><a id=\"l00250\" name=\"l00250\"></a><span class=\"lineno\">  250</span> </div>\n-<div class=\"line\"><a id=\"l00251\" name=\"l00251\"></a><span class=\"lineno\">  251</span>    <span class=\"keywordtype\">void</span> populateEdgeParentVectors(ChildTag <span class=\"keyword\">const</span> initialChildTags[2][4]);</div>\n-<div class=\"line\"><a id=\"l00252\" name=\"l00252\"></a><span class=\"lineno\">  252</span>    <span class=\"keywordtype\">void</span> populateEdgeParentFromParentFaces(ChildTag <span class=\"keyword\">const</span> initialChildTags[2][4]);</div>\n-<div class=\"line\"><a id=\"l00253\" name=\"l00253\"></a><span class=\"lineno\">  253</span>    <span class=\"keywordtype\">void</span> populateEdgeParentFromParentEdges(ChildTag <span class=\"keyword\">const</span> initialChildTags[2][4]);</div>\n-<div class=\"line\"><a id=\"l00254\" name=\"l00254\"></a><span class=\"lineno\">  254</span> </div>\n-<div class=\"line\"><a id=\"l00255\" name=\"l00255\"></a><span class=\"lineno\">  255</span>    <span class=\"keywordtype\">void</span> populateVertexParentVectors(ChildTag <span class=\"keyword\">const</span> initialChildTags[2][4]);</div>\n-<div class=\"line\"><a id=\"l00256\" name=\"l00256\"></a><span class=\"lineno\">  256</span>    <span class=\"keywordtype\">void</span> populateVertexParentFromParentFaces(ChildTag <span class=\"keyword\">const</span> initialChildTags[2][4]);</div>\n-<div class=\"line\"><a id=\"l00257\" name=\"l00257\"></a><span class=\"lineno\">  257</span>    <span class=\"keywordtype\">void</span> populateVertexParentFromParentEdges(ChildTag <span class=\"keyword\">const</span> initialChildTags[2][4]);</div>\n-<div class=\"line\"><a id=\"l00258\" name=\"l00258\"></a><span class=\"lineno\">  258</span>    <span class=\"keywordtype\">void</span> populateVertexParentFromParentVertices(ChildTag <span class=\"keyword\">const</span> initialChildTags[2][4]);</div>\n-<div class=\"line\"><a id=\"l00259\" name=\"l00259\"></a><span class=\"lineno\">  259</span> </div>\n-<div class=\"line\"><a id=\"l00260\" name=\"l00260\"></a><span class=\"lineno\">  260</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00261\" name=\"l00261\"></a><span class=\"lineno\">  261</span>    <span class=\"comment\">//  Methods involved in propagating component tags from parent to child:</span></div>\n-<div class=\"line\"><a id=\"l00262\" name=\"l00262\"></a><span class=\"lineno\">  262</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00263\" name=\"l00263\"></a><span class=\"lineno\">  263</span>    <span class=\"keywordtype\">void</span> propagateComponentTags();</div>\n-<div class=\"line\"><a id=\"l00264\" name=\"l00264\"></a><span class=\"lineno\">  264</span> </div>\n-<div class=\"line\"><a id=\"l00265\" name=\"l00265\"></a><span class=\"lineno\">  265</span>    <span class=\"keywordtype\">void</span> populateFaceTagVectors();</div>\n-<div class=\"line\"><a id=\"l00266\" name=\"l00266\"></a><span class=\"lineno\">  266</span>    <span class=\"keywordtype\">void</span> populateFaceTagsFromParentFaces();</div>\n-<div class=\"line\"><a id=\"l00267\" name=\"l00267\"></a><span class=\"lineno\">  267</span> </div>\n-<div class=\"line\"><a id=\"l00268\" name=\"l00268\"></a><span class=\"lineno\">  268</span>    <span class=\"keywordtype\">void</span> populateEdgeTagVectors();</div>\n-<div class=\"line\"><a id=\"l00269\" name=\"l00269\"></a><span class=\"lineno\">  269</span>    <span class=\"keywordtype\">void</span> populateEdgeTagsFromParentFaces();</div>\n-<div class=\"line\"><a id=\"l00270\" name=\"l00270\"></a><span class=\"lineno\">  270</span>    <span class=\"keywordtype\">void</span> populateEdgeTagsFromParentEdges();</div>\n-<div class=\"line\"><a id=\"l00271\" name=\"l00271\"></a><span class=\"lineno\">  271</span> </div>\n-<div class=\"line\"><a id=\"l00272\" name=\"l00272\"></a><span class=\"lineno\">  272</span>    <span class=\"keywordtype\">void</span> populateVertexTagVectors();</div>\n-<div class=\"line\"><a id=\"l00273\" name=\"l00273\"></a><span class=\"lineno\">  273</span>    <span class=\"keywordtype\">void</span> populateVertexTagsFromParentFaces();</div>\n-<div class=\"line\"><a id=\"l00274\" name=\"l00274\"></a><span class=\"lineno\">  274</span>    <span class=\"keywordtype\">void</span> populateVertexTagsFromParentEdges();</div>\n-<div class=\"line\"><a id=\"l00275\" name=\"l00275\"></a><span class=\"lineno\">  275</span>    <span class=\"keywordtype\">void</span> populateVertexTagsFromParentVertices();</div>\n-<div class=\"line\"><a id=\"l00276\" name=\"l00276\"></a><span class=\"lineno\">  276</span> </div>\n-<div class=\"line\"><a id=\"l00277\" name=\"l00277\"></a><span class=\"lineno\">  277</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00278\" name=\"l00278\"></a><span class=\"lineno\">  278</span>    <span class=\"comment\">//  Methods (and types) involved in subdividing the topology -- though not</span></div>\n-<div class=\"line\"><a id=\"l00279\" name=\"l00279\"></a><span class=\"lineno\">  279</span>    <span class=\"comment\">//  fully exploited, any subset of the 6 relations can be generated:</span></div>\n-<div class=\"line\"><a id=\"l00280\" name=\"l00280\"></a><span class=\"lineno\">  280</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00281\" name=\"l00281\"></a><span class=\"lineno\">  281</span>    <span class=\"keyword\">struct </span>Relations {</div>\n-<div class=\"line\"><a id=\"l00282\" name=\"l00282\"></a><span class=\"lineno\">  282</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span>   _faceVertices : 1;</div>\n-<div class=\"line\"><a id=\"l00283\" name=\"l00283\"></a><span class=\"lineno\">  283</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span>   _faceEdges    : 1;</div>\n-<div class=\"line\"><a id=\"l00284\" name=\"l00284\"></a><span class=\"lineno\">  284</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span>   _edgeVertices : 1;</div>\n-<div class=\"line\"><a id=\"l00285\" name=\"l00285\"></a><span class=\"lineno\">  285</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span>   _edgeFaces    : 1;</div>\n-<div class=\"line\"><a id=\"l00286\" name=\"l00286\"></a><span class=\"lineno\">  286</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span>   _vertexFaces  : 1;</div>\n-<div class=\"line\"><a id=\"l00287\" name=\"l00287\"></a><span class=\"lineno\">  287</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span>   _vertexEdges  : 1;</div>\n-<div class=\"line\"><a id=\"l00288\" name=\"l00288\"></a><span class=\"lineno\">  288</span> </div>\n-<div class=\"line\"><a id=\"l00289\" name=\"l00289\"></a><span class=\"lineno\">  289</span>        <span class=\"keywordtype\">void</span> setAll(<span class=\"keywordtype\">bool</span> enable) {</div>\n-<div class=\"line\"><a id=\"l00290\" name=\"l00290\"></a><span class=\"lineno\">  290</span>            _faceVertices = enable;</div>\n-<div class=\"line\"><a id=\"l00291\" name=\"l00291\"></a><span class=\"lineno\">  291</span>            _faceEdges    = enable;</div>\n-<div class=\"line\"><a id=\"l00292\" name=\"l00292\"></a><span class=\"lineno\">  292</span>            _edgeVertices = enable;</div>\n-<div class=\"line\"><a id=\"l00293\" name=\"l00293\"></a><span class=\"lineno\">  293</span>            _edgeFaces    = enable;</div>\n-<div class=\"line\"><a id=\"l00294\" name=\"l00294\"></a><span class=\"lineno\">  294</span>            _vertexFaces  = enable;</div>\n-<div class=\"line\"><a id=\"l00295\" name=\"l00295\"></a><span class=\"lineno\">  295</span>            _vertexEdges  = enable;</div>\n-<div class=\"line\"><a id=\"l00296\" name=\"l00296\"></a><span class=\"lineno\">  296</span>        }</div>\n-<div class=\"line\"><a id=\"l00297\" name=\"l00297\"></a><span class=\"lineno\">  297</span>    };</div>\n-<div class=\"line\"><a id=\"l00298\" name=\"l00298\"></a><span class=\"lineno\">  298</span> </div>\n-<div class=\"line\"><a id=\"l00299\" name=\"l00299\"></a><span class=\"lineno\">  299</span>    <span class=\"keywordtype\">void</span> subdivideTopology(Relations <span class=\"keyword\">const</span>&amp; relationsToSubdivide);</div>\n-<div class=\"line\"><a id=\"l00300\" name=\"l00300\"></a><span class=\"lineno\">  300</span> </div>\n-<div class=\"line\"><a id=\"l00301\" name=\"l00301\"></a><span class=\"lineno\">  301</span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> populateFaceVertexRelation() = 0;</div>\n-<div class=\"line\"><a id=\"l00302\" name=\"l00302\"></a><span class=\"lineno\">  302</span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> populateFaceEdgeRelation() = 0;</div>\n-<div class=\"line\"><a id=\"l00303\" name=\"l00303\"></a><span class=\"lineno\">  303</span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> populateEdgeVertexRelation() = 0;</div>\n-<div class=\"line\"><a id=\"l00304\" name=\"l00304\"></a><span class=\"lineno\">  304</span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> populateEdgeFaceRelation() = 0;</div>\n-<div class=\"line\"><a id=\"l00305\" name=\"l00305\"></a><span class=\"lineno\">  305</span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> populateVertexFaceRelation() = 0;</div>\n-<div class=\"line\"><a id=\"l00306\" name=\"l00306\"></a><span class=\"lineno\">  306</span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> populateVertexEdgeRelation() = 0;</div>\n-<div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\">  307</span> </div>\n-<div class=\"line\"><a id=\"l00308\" name=\"l00308\"></a><span class=\"lineno\">  308</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00309\" name=\"l00309\"></a><span class=\"lineno\">  309</span>    <span class=\"comment\">//  Methods involved in subdividing and inspecting sharpness values:</span></div>\n-<div class=\"line\"><a id=\"l00310\" name=\"l00310\"></a><span class=\"lineno\">  310</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00311\" name=\"l00311\"></a><span class=\"lineno\">  311</span>    <span class=\"keywordtype\">void</span> subdivideSharpnessValues();</div>\n-<div class=\"line\"><a id=\"l00312\" name=\"l00312\"></a><span class=\"lineno\">  312</span> </div>\n-<div class=\"line\"><a id=\"l00313\" name=\"l00313\"></a><span class=\"lineno\">  313</span>    <span class=\"keywordtype\">void</span> subdivideVertexSharpness();</div>\n-<div class=\"line\"><a id=\"l00314\" name=\"l00314\"></a><span class=\"lineno\">  314</span>    <span class=\"keywordtype\">void</span> subdivideEdgeSharpness();</div>\n-<div class=\"line\"><a id=\"l00315\" name=\"l00315\"></a><span class=\"lineno\">  315</span>    <span class=\"keywordtype\">void</span> reclassifySemisharpVertices();</div>\n-<div class=\"line\"><a id=\"l00316\" name=\"l00316\"></a><span class=\"lineno\">  316</span> </div>\n-<div class=\"line\"><a id=\"l00317\" name=\"l00317\"></a><span class=\"lineno\">  317</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00318\" name=\"l00318\"></a><span class=\"lineno\">  318</span>    <span class=\"comment\">//  Methods involved in subdividing face-varying topology:</span></div>\n-<div class=\"line\"><a id=\"l00319\" name=\"l00319\"></a><span class=\"lineno\">  319</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00320\" name=\"l00320\"></a><span class=\"lineno\">  320</span>    <span class=\"keywordtype\">void</span> subdivideFVarChannels();</div>\n-<div class=\"line\"><a id=\"l00321\" name=\"l00321\"></a><span class=\"lineno\">  321</span> </div>\n-<div class=\"line\"><a id=\"l00322\" name=\"l00322\"></a><span class=\"lineno\">  322</span><span class=\"keyword\">protected</span>:</div>\n-<div class=\"line\"><a id=\"l00323\" name=\"l00323\"></a><span class=\"lineno\">  323</span>    <span class=\"comment\">// A debug method of Level prints a Refinement (should really change this)</span></div>\n-<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\">  324</span>    <span class=\"keyword\">friend</span> <span class=\"keywordtype\">void</span> Level::print(<span class=\"keyword\">const</span> Refinement *) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\">  325</span> </div>\n-<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\">  326</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\">  327</span>    <span class=\"comment\">//  Data members -- the logical grouping of some of these (and methods that make use</span></div>\n-<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\">  328</span>    <span class=\"comment\">//  of them) may lead to grouping them into a few utility classes or structs...</span></div>\n-<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\">  329</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\">  330</span> </div>\n-<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\">  331</span>    <span class=\"comment\">//  Defined on construction:</span></div>\n-<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\">  332</span>    Level <span class=\"keyword\">const</span> * _parent;</div>\n-<div class=\"line\"><a id=\"l00333\" name=\"l00333\"></a><span class=\"lineno\">  333</span>    Level *       _child;</div>\n-<div class=\"line\"><a id=\"l00334\" name=\"l00334\"></a><span class=\"lineno\">  334</span>    Sdc::Options  _options;</div>\n-<div class=\"line\"><a id=\"l00335\" name=\"l00335\"></a><span class=\"lineno\">  335</span> </div>\n-<div class=\"line\"><a id=\"l00336\" name=\"l00336\"></a><span class=\"lineno\">  336</span>    <span class=\"comment\">//  Defined by the subclass:</span></div>\n-<div class=\"line\"><a id=\"l00337\" name=\"l00337\"></a><span class=\"lineno\">  337</span>    <a class=\"code hl_enumeration\" href=\"a00913.html#a61ef2f8f765ba17f8036bcc0f0fa887b\">Sdc::Split</a> _splitType;</div>\n-<div class=\"line\"><a id=\"l00338\" name=\"l00338\"></a><span class=\"lineno\">  338</span>    <span class=\"keywordtype\">int</span>        _regFaceSize;</div>\n-<div class=\"line\"><a id=\"l00339\" name=\"l00339\"></a><span class=\"lineno\">  339</span> </div>\n-<div class=\"line\"><a id=\"l00340\" name=\"l00340\"></a><span class=\"lineno\">  340</span>    <span class=\"comment\">//  Determined by the refinement options:</span></div>\n-<div class=\"line\"><a id=\"l00341\" name=\"l00341\"></a><span class=\"lineno\">  341</span>    <span class=\"keywordtype\">bool</span> _uniform;</div>\n-<div class=\"line\"><a id=\"l00342\" name=\"l00342\"></a><span class=\"lineno\">  342</span>    <span class=\"keywordtype\">bool</span> _faceVertsFirst;</div>\n-<div class=\"line\"><a id=\"l00343\" name=\"l00343\"></a><span class=\"lineno\">  343</span> </div>\n-<div class=\"line\"><a id=\"l00344\" name=\"l00344\"></a><span class=\"lineno\">  344</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00345\" name=\"l00345\"></a><span class=\"lineno\">  345</span>    <span class=\"comment\">//  Inventory and ordering of the types of child components:</span></div>\n-<div class=\"line\"><a id=\"l00346\" name=\"l00346\"></a><span class=\"lineno\">  346</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00347\" name=\"l00347\"></a><span class=\"lineno\">  347</span>    <span class=\"keywordtype\">int</span> _childFaceFromFaceCount;  <span class=\"comment\">// arguably redundant (all faces originate from faces)</span></div>\n-<div class=\"line\"><a id=\"l00348\" name=\"l00348\"></a><span class=\"lineno\">  348</span>    <span class=\"keywordtype\">int</span> _childEdgeFromFaceCount;</div>\n-<div class=\"line\"><a id=\"l00349\" name=\"l00349\"></a><span class=\"lineno\">  349</span>    <span class=\"keywordtype\">int</span> _childEdgeFromEdgeCount;</div>\n-<div class=\"line\"><a id=\"l00350\" name=\"l00350\"></a><span class=\"lineno\">  350</span>    <span class=\"keywordtype\">int</span> _childVertFromFaceCount;</div>\n-<div class=\"line\"><a id=\"l00351\" name=\"l00351\"></a><span class=\"lineno\">  351</span>    <span class=\"keywordtype\">int</span> _childVertFromEdgeCount;</div>\n-<div class=\"line\"><a id=\"l00352\" name=\"l00352\"></a><span class=\"lineno\">  352</span>    <span class=\"keywordtype\">int</span> _childVertFromVertCount;</div>\n-<div class=\"line\"><a id=\"l00353\" name=\"l00353\"></a><span class=\"lineno\">  353</span> </div>\n-<div class=\"line\"><a id=\"l00354\" name=\"l00354\"></a><span class=\"lineno\">  354</span>    <span class=\"keywordtype\">int</span> _firstChildFaceFromFace;  <span class=\"comment\">// arguably redundant (all faces originate from faces)</span></div>\n-<div class=\"line\"><a id=\"l00355\" name=\"l00355\"></a><span class=\"lineno\">  355</span>    <span class=\"keywordtype\">int</span> _firstChildEdgeFromFace;</div>\n-<div class=\"line\"><a id=\"l00356\" name=\"l00356\"></a><span class=\"lineno\">  356</span>    <span class=\"keywordtype\">int</span> _firstChildEdgeFromEdge;</div>\n-<div class=\"line\"><a id=\"l00357\" name=\"l00357\"></a><span class=\"lineno\">  357</span>    <span class=\"keywordtype\">int</span> _firstChildVertFromFace;</div>\n-<div class=\"line\"><a id=\"l00358\" name=\"l00358\"></a><span class=\"lineno\">  358</span>    <span class=\"keywordtype\">int</span> _firstChildVertFromEdge;</div>\n-<div class=\"line\"><a id=\"l00359\" name=\"l00359\"></a><span class=\"lineno\">  359</span>    <span class=\"keywordtype\">int</span> _firstChildVertFromVert;</div>\n-<div class=\"line\"><a id=\"l00360\" name=\"l00360\"></a><span class=\"lineno\">  360</span> </div>\n-<div class=\"line\"><a id=\"l00361\" name=\"l00361\"></a><span class=\"lineno\">  361</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00362\" name=\"l00362\"></a><span class=\"lineno\">  362</span>    <span class=\"comment\">//  The parent-to-child mapping:</span></div>\n-<div class=\"line\"><a id=\"l00363\" name=\"l00363\"></a><span class=\"lineno\">  363</span>    <span class=\"comment\">//      These are vectors sized according to the number of parent components (and</span></div>\n-<div class=\"line\"><a id=\"l00364\" name=\"l00364\"></a><span class=\"lineno\">  364</span>    <span class=\"comment\">//  their topology) that contain references/indices to the child components that</span></div>\n-<div class=\"line\"><a id=\"l00365\" name=\"l00365\"></a><span class=\"lineno\">  365</span>    <span class=\"comment\">//  result from them by refinement.  When refinement is sparse, parent components</span></div>\n-<div class=\"line\"><a id=\"l00366\" name=\"l00366\"></a><span class=\"lineno\">  366</span>    <span class=\"comment\">//  that have not spawned all child components will have their missing children</span></div>\n-<div class=\"line\"><a id=\"l00367\" name=\"l00367\"></a><span class=\"lineno\">  367</span>    <span class=\"comment\">//  marked as invalid.</span></div>\n-<div class=\"line\"><a id=\"l00368\" name=\"l00368\"></a><span class=\"lineno\">  368</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00369\" name=\"l00369\"></a><span class=\"lineno\">  369</span>    <span class=\"comment\">//  NOTE the &quot;Array&quot; members here.  Often vectors within the Level can be shared</span></div>\n-<div class=\"line\"><a id=\"l00370\" name=\"l00370\"></a><span class=\"lineno\">  370</span>    <span class=\"comment\">//  with the Refinement, and an Array instance is used to do so.  If not shared</span></div>\n-<div class=\"line\"><a id=\"l00371\" name=\"l00371\"></a><span class=\"lineno\">  371</span>    <span class=\"comment\">//  the subclass just initializes the Array members after allocating its own local</span></div>\n-<div class=\"line\"><a id=\"l00372\" name=\"l00372\"></a><span class=\"lineno\">  372</span>    <span class=\"comment\">//  vector members.</span></div>\n-<div class=\"line\"><a id=\"l00373\" name=\"l00373\"></a><span class=\"lineno\">  373</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00374\" name=\"l00374\"></a><span class=\"lineno\">  374</span>    <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a> _faceChildFaceCountsAndOffsets;</div>\n-<div class=\"line\"><a id=\"l00375\" name=\"l00375\"></a><span class=\"lineno\">  375</span>    <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a> _faceChildEdgeCountsAndOffsets;</div>\n-<div class=\"line\"><a id=\"l00376\" name=\"l00376\"></a><span class=\"lineno\">  376</span> </div>\n-<div class=\"line\"><a id=\"l00377\" name=\"l00377\"></a><span class=\"lineno\">  377</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a5ce395d26317168dcf613c15181476ed\">IndexVector</a> _faceChildFaceIndices;  <span class=\"comment\">// *cannot* always use face-vert counts/offsets</span></div>\n-<div class=\"line\"><a id=\"l00378\" name=\"l00378\"></a><span class=\"lineno\">  378</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a5ce395d26317168dcf613c15181476ed\">IndexVector</a> _faceChildEdgeIndices;  <span class=\"comment\">// can use face-vert counts/offsets</span></div>\n-<div class=\"line\"><a id=\"l00379\" name=\"l00379\"></a><span class=\"lineno\">  379</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a5ce395d26317168dcf613c15181476ed\">IndexVector</a> _faceChildVertIndex;</div>\n-<div class=\"line\"><a id=\"l00380\" name=\"l00380\"></a><span class=\"lineno\">  380</span> </div>\n-<div class=\"line\"><a id=\"l00381\" name=\"l00381\"></a><span class=\"lineno\">  381</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a5ce395d26317168dcf613c15181476ed\">IndexVector</a> _edgeChildEdgeIndices;  <span class=\"comment\">// trivial/corresponding pair for each</span></div>\n-<div class=\"line\"><a id=\"l00382\" name=\"l00382\"></a><span class=\"lineno\">  382</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a5ce395d26317168dcf613c15181476ed\">IndexVector</a> _edgeChildVertIndex;</div>\n-<div class=\"line\"><a id=\"l00383\" name=\"l00383\"></a><span class=\"lineno\">  383</span> </div>\n-<div class=\"line\"><a id=\"l00384\" name=\"l00384\"></a><span class=\"lineno\">  384</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a5ce395d26317168dcf613c15181476ed\">IndexVector</a> _vertChildVertIndex;</div>\n-<div class=\"line\"><a id=\"l00385\" name=\"l00385\"></a><span class=\"lineno\">  385</span> </div>\n-<div class=\"line\"><a id=\"l00386\" name=\"l00386\"></a><span class=\"lineno\">  386</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00387\" name=\"l00387\"></a><span class=\"lineno\">  387</span>    <span class=\"comment\">//  The child-to-parent mapping:</span></div>\n-<div class=\"line\"><a id=\"l00388\" name=\"l00388\"></a><span class=\"lineno\">  388</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00389\" name=\"l00389\"></a><span class=\"lineno\">  389</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a5ce395d26317168dcf613c15181476ed\">IndexVector</a> _childFaceParentIndex;</div>\n-<div class=\"line\"><a id=\"l00390\" name=\"l00390\"></a><span class=\"lineno\">  390</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a5ce395d26317168dcf613c15181476ed\">IndexVector</a> _childEdgeParentIndex;</div>\n-<div class=\"line\"><a id=\"l00391\" name=\"l00391\"></a><span class=\"lineno\">  391</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a5ce395d26317168dcf613c15181476ed\">IndexVector</a> _childVertexParentIndex;</div>\n-<div class=\"line\"><a id=\"l00392\" name=\"l00392\"></a><span class=\"lineno\">  392</span> </div>\n-<div class=\"line\"><a id=\"l00393\" name=\"l00393\"></a><span class=\"lineno\">  393</span>    std::vector&lt;ChildTag&gt; _childFaceTag;</div>\n-<div class=\"line\"><a id=\"l00394\" name=\"l00394\"></a><span class=\"lineno\">  394</span>    std::vector&lt;ChildTag&gt; _childEdgeTag;</div>\n-<div class=\"line\"><a id=\"l00395\" name=\"l00395\"></a><span class=\"lineno\">  395</span>    std::vector&lt;ChildTag&gt; _childVertexTag;</div>\n-<div class=\"line\"><a id=\"l00396\" name=\"l00396\"></a><span class=\"lineno\">  396</span> </div>\n-<div class=\"line\"><a id=\"l00397\" name=\"l00397\"></a><span class=\"lineno\">  397</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00398\" name=\"l00398\"></a><span class=\"lineno\">  398</span>    <span class=\"comment\">//  Tags for sparse selection of components:</span></div>\n-<div class=\"line\"><a id=\"l00399\" name=\"l00399\"></a><span class=\"lineno\">  399</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00400\" name=\"l00400\"></a><span class=\"lineno\">  400</span>    std::vector&lt;SparseTag&gt; _parentFaceTag;</div>\n-<div class=\"line\"><a id=\"l00401\" name=\"l00401\"></a><span class=\"lineno\">  401</span>    std::vector&lt;SparseTag&gt; _parentEdgeTag;</div>\n-<div class=\"line\"><a id=\"l00402\" name=\"l00402\"></a><span class=\"lineno\">  402</span>    std::vector&lt;SparseTag&gt; _parentVertexTag;</div>\n-<div class=\"line\"><a id=\"l00403\" name=\"l00403\"></a><span class=\"lineno\">  403</span> </div>\n-<div class=\"line\"><a id=\"l00404\" name=\"l00404\"></a><span class=\"lineno\">  404</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00405\" name=\"l00405\"></a><span class=\"lineno\">  405</span>    <span class=\"comment\">//  Refinement data for face-varying channels present in the Levels being refined:</span></div>\n-<div class=\"line\"><a id=\"l00406\" name=\"l00406\"></a><span class=\"lineno\">  406</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00407\" name=\"l00407\"></a><span class=\"lineno\">  407</span>    std::vector&lt;FVarRefinement*&gt; _fvarChannels;</div>\n-<div class=\"line\"><a id=\"l00408\" name=\"l00408\"></a><span class=\"lineno\">  408</span>};</div>\n-<div class=\"line\"><a id=\"l00409\" name=\"l00409\"></a><span class=\"lineno\">  409</span> </div>\n-<div class=\"line\"><a id=\"l00410\" name=\"l00410\"></a><span class=\"lineno\">  410</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a></div>\n-<div class=\"line\"><a id=\"l00411\" name=\"l00411\"></a><span class=\"lineno\">  411</span>Refinement::getFaceChildFaces(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> parentFace)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00412\" name=\"l00412\"></a><span class=\"lineno\">  412</span> </div>\n-<div class=\"line\"><a id=\"l00413\" name=\"l00413\"></a><span class=\"lineno\">  413</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a>(&amp;_faceChildFaceIndices[_faceChildFaceCountsAndOffsets[2*parentFace+1]],</div>\n-<div class=\"line\"><a id=\"l00414\" name=\"l00414\"></a><span class=\"lineno\">  414</span>                                             _faceChildFaceCountsAndOffsets[2*parentFace]);</div>\n-<div class=\"line\"><a id=\"l00415\" name=\"l00415\"></a><span class=\"lineno\">  415</span>}</div>\n-<div class=\"line\"><a id=\"l00416\" name=\"l00416\"></a><span class=\"lineno\">  416</span> </div>\n-<div class=\"line\"><a id=\"l00417\" name=\"l00417\"></a><span class=\"lineno\">  417</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a></div>\n-<div class=\"line\"><a id=\"l00418\" name=\"l00418\"></a><span class=\"lineno\">  418</span>Refinement::getFaceChildFaces(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> parentFace) {</div>\n-<div class=\"line\"><a id=\"l00419\" name=\"l00419\"></a><span class=\"lineno\">  419</span> </div>\n-<div class=\"line\"><a id=\"l00420\" name=\"l00420\"></a><span class=\"lineno\">  420</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a>(&amp;_faceChildFaceIndices[_faceChildFaceCountsAndOffsets[2*parentFace+1]],</div>\n-<div class=\"line\"><a id=\"l00421\" name=\"l00421\"></a><span class=\"lineno\">  421</span>                                             _faceChildFaceCountsAndOffsets[2*parentFace]);</div>\n-<div class=\"line\"><a id=\"l00422\" name=\"l00422\"></a><span class=\"lineno\">  422</span>}</div>\n-<div class=\"line\"><a id=\"l00423\" name=\"l00423\"></a><span class=\"lineno\">  423</span> </div>\n-<div class=\"line\"><a id=\"l00424\" name=\"l00424\"></a><span class=\"lineno\">  424</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a></div>\n-<div class=\"line\"><a id=\"l00425\" name=\"l00425\"></a><span class=\"lineno\">  425</span>Refinement::getFaceChildEdges(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> parentFace)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00426\" name=\"l00426\"></a><span class=\"lineno\">  426</span> </div>\n-<div class=\"line\"><a id=\"l00427\" name=\"l00427\"></a><span class=\"lineno\">  427</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a>(&amp;_faceChildEdgeIndices[_faceChildEdgeCountsAndOffsets[2*parentFace+1]],</div>\n-<div class=\"line\"><a id=\"l00428\" name=\"l00428\"></a><span class=\"lineno\">  428</span>                                             _faceChildEdgeCountsAndOffsets[2*parentFace]);</div>\n-<div class=\"line\"><a id=\"l00429\" name=\"l00429\"></a><span class=\"lineno\">  429</span>}</div>\n-<div class=\"line\"><a id=\"l00430\" name=\"l00430\"></a><span class=\"lineno\">  430</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a></div>\n-<div class=\"line\"><a id=\"l00431\" name=\"l00431\"></a><span class=\"lineno\">  431</span>Refinement::getFaceChildEdges(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> parentFace) {</div>\n-<div class=\"line\"><a id=\"l00432\" name=\"l00432\"></a><span class=\"lineno\">  432</span> </div>\n-<div class=\"line\"><a id=\"l00433\" name=\"l00433\"></a><span class=\"lineno\">  433</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a>(&amp;_faceChildEdgeIndices[_faceChildEdgeCountsAndOffsets[2*parentFace+1]],</div>\n-<div class=\"line\"><a id=\"l00434\" name=\"l00434\"></a><span class=\"lineno\">  434</span>                                             _faceChildEdgeCountsAndOffsets[2*parentFace]);</div>\n-<div class=\"line\"><a id=\"l00435\" name=\"l00435\"></a><span class=\"lineno\">  435</span>}</div>\n-<div class=\"line\"><a id=\"l00436\" name=\"l00436\"></a><span class=\"lineno\">  436</span> </div>\n-<div class=\"line\"><a id=\"l00437\" name=\"l00437\"></a><span class=\"lineno\">  437</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a></div>\n-<div class=\"line\"><a id=\"l00438\" name=\"l00438\"></a><span class=\"lineno\">  438</span>Refinement::getEdgeChildEdges(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> parentEdge)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00439\" name=\"l00439\"></a><span class=\"lineno\">  439</span> </div>\n-<div class=\"line\"><a id=\"l00440\" name=\"l00440\"></a><span class=\"lineno\">  440</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a>(&amp;_edgeChildEdgeIndices[parentEdge*2], 2);</div>\n-<div class=\"line\"><a id=\"l00441\" name=\"l00441\"></a><span class=\"lineno\">  441</span>}</div>\n-<div class=\"line\"><a id=\"l00442\" name=\"l00442\"></a><span class=\"lineno\">  442</span> </div>\n-<div class=\"line\"><a id=\"l00443\" name=\"l00443\"></a><span class=\"lineno\">  443</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a></div>\n-<div class=\"line\"><a id=\"l00444\" name=\"l00444\"></a><span class=\"lineno\">  444</span>Refinement::getEdgeChildEdges(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> parentEdge) {</div>\n-<div class=\"line\"><a id=\"l00445\" name=\"l00445\"></a><span class=\"lineno\">  445</span> </div>\n-<div class=\"line\"><a id=\"l00446\" name=\"l00446\"></a><span class=\"lineno\">  446</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a>(&amp;_edgeChildEdgeIndices[parentEdge*2], 2);</div>\n-<div class=\"line\"><a id=\"l00447\" name=\"l00447\"></a><span class=\"lineno\">  447</span>}</div>\n-<div class=\"line\"><a id=\"l00448\" name=\"l00448\"></a><span class=\"lineno\">  448</span> </div>\n-<div class=\"line\"><a id=\"l00449\" name=\"l00449\"></a><span class=\"lineno\">  449</span>} <span class=\"comment\">// end namespace internal</span></div>\n-<div class=\"line\"><a id=\"l00450\" name=\"l00450\"></a><span class=\"lineno\">  450</span>} <span class=\"comment\">// end namespace Vtr</span></div>\n-<div class=\"line\"><a id=\"l00451\" name=\"l00451\"></a><span class=\"lineno\">  451</span> </div>\n-<div class=\"line\"><a id=\"l00452\" name=\"l00452\"></a><span class=\"lineno\">  452</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00453\" name=\"l00453\"></a><span class=\"lineno\">  453</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00454\" name=\"l00454\"></a><span class=\"lineno\">  454</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l00455\" name=\"l00455\"></a><span class=\"lineno\">  455</span> </div>\n-<div class=\"line\"><a id=\"l00456\" name=\"l00456\"></a><span class=\"lineno\">  456</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_VTR_REFINEMENT_H */</span><span class=\"preprocessor\"></span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa00909_html_a4a0e50e01fef3e431767a928c2631cab\"><div class=\"ttname\"><a href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::Index</a></div><div class=\"ttdeci\">int Index</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01495_source.html#l00054\">types.h:54</a></div></div>\n-<div class=\"ttc\" id=\"aa00909_html_a5ce395d26317168dcf613c15181476ed\"><div class=\"ttname\"><a href=\"a00909.html#a5ce395d26317168dcf613c15181476ed\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::IndexVector</a></div><div class=\"ttdeci\">std::vector&lt; Index &gt; IndexVector</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01495_source.html#l00077\">types.h:77</a></div></div>\n-<div class=\"ttc\" id=\"aa00909_html_a7c31dd7ef75734862d363b332be917dd\"><div class=\"ttname\"><a href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstIndexArray</a></div><div class=\"ttdeci\">ConstArray&lt; Index &gt; ConstIndexArray</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01495_source.html#l00080\">types.h:80</a></div></div>\n-<div class=\"ttc\" id=\"aa00909_html_ab4fd2ea03eba4c01ed28072b21917a0f\"><div class=\"ttname\"><a href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::IndexArray</a></div><div class=\"ttdeci\">Array&lt; Index &gt; IndexArray</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01495_source.html#l00079\">types.h:79</a></div></div>\n-<div class=\"ttc\" id=\"aa00913_html_a61ef2f8f765ba17f8036bcc0f0fa887b\"><div class=\"ttname\"><a href=\"a00913.html#a61ef2f8f765ba17f8036bcc0f0fa887b\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Split</a></div><div class=\"ttdeci\">Split</div><div class=\"ttdoc\">Enumerated type for all face splitting schemes.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01492_source.html#l00047\">types.h:47</a></div></div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_CUDA_VERTEX_BUFFER_H</span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa01193_html\"><div class=\"ttname\"><a href=\"a01193.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaVertexBuffer</a></div><div class=\"ttdoc\">Concrete vertex buffer class for Cuda subdivision.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00674_source.html#l00042\">cudaVertexBuffer.h:42</a></div></div>\n+<div class=\"ttc\" id=\"aa01193_html_a59eb144c23606529ba730ae15598af09\"><div class=\"ttname\"><a href=\"a01193.html#a59eb144c23606529ba730ae15598af09\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaVertexBuffer::BindCudaBuffer</a></div><div class=\"ttdeci\">float * BindCudaBuffer()</div><div class=\"ttdoc\">Returns cuda memory.</div></div>\n+<div class=\"ttc\" id=\"aa01193_html_a7534b2edf898c9b6ee4a0b9c8aaf918f\"><div class=\"ttname\"><a href=\"a01193.html#a7534b2edf898c9b6ee4a0b9c8aaf918f\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaVertexBuffer::~CudaVertexBuffer</a></div><div class=\"ttdeci\">~CudaVertexBuffer()</div><div class=\"ttdoc\">Destructor.</div></div>\n+<div class=\"ttc\" id=\"aa01193_html_a77cee40767fd4936f20a8f9d9d9ea625\"><div class=\"ttname\"><a href=\"a01193.html#a77cee40767fd4936f20a8f9d9d9ea625\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaVertexBuffer::GetNumElements</a></div><div class=\"ttdeci\">int GetNumElements() const</div><div class=\"ttdoc\">Returns how many elements defined in this vertex buffer.</div></div>\n+<div class=\"ttc\" id=\"aa01193_html_a96601a091f8831823c4dd72b6c962f1b\"><div class=\"ttname\"><a href=\"a01193.html#a96601a091f8831823c4dd72b6c962f1b\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaVertexBuffer::UpdateData</a></div><div class=\"ttdeci\">void UpdateData(const float *src, int startVertex, int numVertices, void *deviceContext=NULL)</div></div>\n+<div class=\"ttc\" id=\"aa01193_html_aaf4a32b8a414eff77000c584c2015cb7\"><div class=\"ttname\"><a href=\"a01193.html#aaf4a32b8a414eff77000c584c2015cb7\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaVertexBuffer::GetNumVertices</a></div><div class=\"ttdeci\">int GetNumVertices() const</div><div class=\"ttdoc\">Returns how many vertices allocated in this vertex buffer.</div></div>\n+<div class=\"ttc\" id=\"aa01193_html_ab51afd364a99a3e33d8042537e8f167b\"><div class=\"ttname\"><a href=\"a01193.html#ab51afd364a99a3e33d8042537e8f167b\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaVertexBuffer::Create</a></div><div class=\"ttdeci\">static CudaVertexBuffer * Create(int numElements, int numVertices, void *deviceContext=NULL)</div><div class=\"ttdoc\">Creator. Returns NULL if error.</div></div>\n+<div class=\"ttc\" id=\"aa01193_html_add23d9f5bbc918076d240287a9b3664f\"><div class=\"ttname\"><a href=\"a01193.html#add23d9f5bbc918076d240287a9b3664f\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaVertexBuffer::allocate</a></div><div class=\"ttdeci\">bool allocate()</div></div>\n+<div class=\"ttc\" id=\"aa01193_html_af6cb32d896f7815cac1969c857845ba8\"><div class=\"ttname\"><a href=\"a01193.html#af6cb32d896f7815cac1969c857845ba8\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaVertexBuffer::CudaVertexBuffer</a></div><div class=\"ttdeci\">CudaVertexBuffer(int numElements, int numVertices)</div><div class=\"ttdoc\">Constructor.</div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bd5473d7d5841d48919aaa9ad0cb1f9b.html\">vtr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00674.html\">refinement.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00674.html\">cudaVertexBuffer.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-refinement.h\n+cudaVertexBuffer.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2014 DreamWorks Animation LLC.\n+2// Copyright 2013 Pixar\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -23,545 +23,90 @@\n 17//\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n-24#ifndef OPENSUBDIV3_VTR_REFINEMENT_H\n-25#define OPENSUBDIV3_VTR_REFINEMENT_H\n-26\n-27#include \"../version.h\"\n-28\n-29#include \"../sdc/types.h\"\n-30#include \"../sdc/options.h\"\n-31#include \"../vtr/types.h\"\n-32#include \"../vtr/level.h\"\n-33\n-34#include <vector>\n-35\n-36//\n-37// Declaration for the main refinement class (Refinement) and its pre-\n-requisites:\n-38//\n-39namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-40namespace OPENSUBDIV_VERSION {\n-41\n-42namespace Vtr {\n-43namespace internal {\n-44\n-45class FVarRefinement;\n-46\n-47//\n-48// Refinement:\n-49// A refinement is a mapping between two levels -- relating the components in\n-the original\n-50// (parent) level to the one refined (child). The refinement may be complete\n-(uniform) or sparse\n-51// (adaptive or otherwise selective), so not all components in the parent\n-level will spawn\n-52// components in the child level.\n-53//\n-54// Refinement is an abstract class and expects subclasses corresponding to\n-the different types\n-55// of topological splits that the supported subdivision schemes collectively\n-require, i.e. those\n-56// listed in Sdc::SplitType. Note the virtual requirements expected of the\n-subclasses in the list\n-57// of protected methods -- they differ mainly in the topology that is created\n-in the child Level\n-58// and not the propagation of tags through refinement, subdivision of\n-sharpness values or the\n-59// treatment of face-varying data. The primary subclasses are QuadRefinement\n-and TriRefinement.\n-60//\n-61// At a high level, all that is necessary in terms of interface is to\n-construct, initialize\n-62// (linking the two levels), optionally select components for sparse\n-refinement (via use of the\n-63// SparseSelector) and call the refine() method. This usage is expected of\n-Far::TopologyRefiner.\n-64//\n-65// Since we really want this class to be restricted from public access\n-eventually, all methods\n-66// begin with lower case (as is the convention for protected methods) and the\n-list of friends\n-67// will be maintained more strictly.\n-68//\n-69class Refinement {\n-70\n-71public:\n-72 Refinement(Level const & parent, Level & child, Sdc::Options const&\n-schemeOptions);\n-73 virtual ~Refinement();\n-74\n-75 Level const& parent() const { return *_parent; }\n-76 Level const& child() const { return *_child; }\n-77 Level& child() { return *_child; }\n+24\n+25#ifndef OPENSUBDIV3_OSD_CUDA_VERTEX_BUFFER_H\n+26#define OPENSUBDIV3_OSD_CUDA_VERTEX_BUFFER_H\n+27\n+28#include \"../version.h\"\n+29\n+30#include <cstddef>\n+31\n+32namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+33namespace OPENSUBDIV_VERSION {\n+34\n+35namespace Osd {\n+36\n+_\b4_\b2class _\bC_\bu_\bd_\ba_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br {\n+43\n+44public:\n+_\b4_\b6 static _\bC_\bu_\bd_\ba_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br * _\bC_\br_\be_\ba_\bt_\be(int numElements, int numVertices,\n+47 void *deviceContext = NULL);\n+48\n+_\b5_\b0 _\b~_\bC_\bu_\bd_\ba_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br();\n+51\n+_\b5_\b4 void _\bU_\bp_\bd_\ba_\bt_\be_\bD_\ba_\bt_\ba(const float *src, int startVertex, int numVertices,\n+55 void *deviceContext=NULL);\n+56\n+_\b5_\b8 int _\bG_\be_\bt_\bN_\bu_\bm_\bE_\bl_\be_\bm_\be_\bn_\bt_\bs() const;\n+59\n+_\b6_\b1 int _\bG_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs() const;\n+62\n+_\b6_\b4 float * _\bB_\bi_\bn_\bd_\bC_\bu_\bd_\ba_\bB_\bu_\bf_\bf_\be_\br();\n+65\n+66protected:\n+_\b6_\b8 _\bC_\bu_\bd_\ba_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br(int numElements, int numVertices);\n+69\n+_\b7_\b2 bool _\ba_\bl_\bl_\bo_\bc_\ba_\bt_\be();\n+73\n+74private:\n+75 int _numElements;\n+76 int _numVertices;\n+77 void *_cudaMem;\n 78\n-79 _\bS_\bd_\bc_\b:_\b:_\bS_\bp_\bl_\bi_\bt getSplitType() const { return _splitType; }\n-80 int getRegularFaceSize() const { return _regFaceSize; }\n-81 Sdc::Options getOptions() const { return _options; }\n+79};\n+80\n+81} // end namespace Osd\n 82\n-83 // Face-varying:\n-84 int getNumFVarChannels() const { return (int) _fvarChannels.size(); }\n+83} // end namespace OPENSUBDIV_VERSION\n+84using namespace OPENSUBDIV_VERSION;\n 85\n-86 FVarRefinement const & getFVarRefinement(int c) const { return\n-*_fvarChannels[c]; }\n+86} // end namespace OpenSubdiv\n 87\n-88 //\n-89 // Options associated with the actual refinement operation, which may end up\n-90 // quite involved if we want to allow for the refinement of data that is not\n-91 // of interest to be suppressed. For now we have:\n-92 //\n-93 // \"sparse\": the alternative to uniform refinement, which requires that\n-94 // components be previously selected/marked to be included.\n-95 //\n-96 // \"minimal topology\": this is one that may get broken down into a finer\n-97 // set of options. It suppresses \"full topology\" in the child level\n-98 // and only generates what is minimally necessary for interpolation --\n-99 // which requires at least the face-vertices for faces, but also the\n-100 // vertex-faces for any face-varying channels present. So it will\n-101 // generate one or two of the six possible topological relations.\n-102 //\n-103 // These are strictly controlled right now, e.g. for sparse refinement, we\n-104 // currently enforce full topology at the finest level to allow for\n-subsequent\n-105 // patch construction.\n-106 //\n-107 struct Options {\n-108 Options() : _sparse(false),\n-109 _faceVertsFirst(false),\n-110 _minimalTopology(false)\n-111 { }\n-112\n-113 unsigned int _sparse : 1;\n-114 unsigned int _faceVertsFirst : 1;\n-115 unsigned int _minimalTopology : 1;\n-116\n-117 // Still under consideration:\n-118 //unsigned int _childToParentMap : 1;\n-119 };\n-120\n-121 void refine(Options options = Options());\n-122\n-123 bool hasFaceVerticesFirst() const { return _faceVertsFirst; }\n-124\n-125public:\n-126 //\n-127 // Access to members -- some testing classes (involving vertex\n-interpolation)\n-128 // currently make use of these:\n-129 //\n-130 int getNumChildFacesFromFaces() const { return _childFaceFromFaceCount; }\n-131 int getNumChildEdgesFromFaces() const { return _childEdgeFromFaceCount; }\n-132 int getNumChildEdgesFromEdges() const { return _childEdgeFromEdgeCount; }\n-133 int getNumChildVerticesFromFaces() const { return _childVertFromFaceCount;\n-}\n-134 int getNumChildVerticesFromEdges() const { return _childVertFromEdgeCount;\n-}\n-135 int getNumChildVerticesFromVertices() const { return\n-_childVertFromVertCount; }\n-136\n-137 _\bI_\bn_\bd_\be_\bx getFirstChildFaceFromFaces() const { return _firstChildFaceFromFace;\n-}\n-138 _\bI_\bn_\bd_\be_\bx getFirstChildEdgeFromFaces() const { return _firstChildEdgeFromFace;\n-}\n-139 _\bI_\bn_\bd_\be_\bx getFirstChildEdgeFromEdges() const { return _firstChildEdgeFromEdge;\n-}\n-140 _\bI_\bn_\bd_\be_\bx getFirstChildVertexFromFaces() const { return\n-_firstChildVertFromFace; }\n-141 _\bI_\bn_\bd_\be_\bx getFirstChildVertexFromEdges() const { return\n-_firstChildVertFromEdge; }\n-142 _\bI_\bn_\bd_\be_\bx getFirstChildVertexFromVertices() const { return\n-_firstChildVertFromVert; }\n-143\n-144 _\bI_\bn_\bd_\be_\bx getFaceChildVertex(_\bI_\bn_\bd_\be_\bx f) const { return _faceChildVertIndex[f]; }\n-145 _\bI_\bn_\bd_\be_\bx getEdgeChildVertex(_\bI_\bn_\bd_\be_\bx e) const { return _edgeChildVertIndex[e]; }\n-146 _\bI_\bn_\bd_\be_\bx getVertexChildVertex(_\bI_\bn_\bd_\be_\bx v) const { return _vertChildVertIndex[v];\n-}\n-147\n-148 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getFaceChildFaces(_\bI_\bn_\bd_\be_\bx parentFace) const;\n-149 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getFaceChildEdges(_\bI_\bn_\bd_\be_\bx parentFace) const;\n-150 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getEdgeChildEdges(_\bI_\bn_\bd_\be_\bx parentEdge) const;\n-151\n-152 // Child-to-parent relationships\n-153 bool isChildVertexComplete(_\bI_\bn_\bd_\be_\bx v) const { return ! _childVertexTag\n-[v]._incomplete; }\n-154\n-155 _\bI_\bn_\bd_\be_\bx getChildFaceParentFace(_\bI_\bn_\bd_\be_\bx f) const { return _childFaceParentIndex\n-[f]; }\n-156 int getChildFaceInParentFace(_\bI_\bn_\bd_\be_\bx f) const { return _childFaceTag\n-[f]._indexInParent; }\n-157\n-158 _\bI_\bn_\bd_\be_\bx getChildEdgeParentIndex(_\bI_\bn_\bd_\be_\bx e) const { return _childEdgeParentIndex\n-[e]; }\n-159\n-160 _\bI_\bn_\bd_\be_\bx getChildVertexParentIndex(_\bI_\bn_\bd_\be_\bx v) const { return\n-_childVertexParentIndex[v]; }\n-161\n-162//\n-163// Modifiers intended for internal/protected use:\n-164//\n-165public:\n-166\n-167 _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getFaceChildFaces(_\bI_\bn_\bd_\be_\bx parentFace);\n-168 _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getFaceChildEdges(_\bI_\bn_\bd_\be_\bx parentFace);\n-169 _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getEdgeChildEdges(_\bI_\bn_\bd_\be_\bx parentEdge);\n-170\n-171public:\n-172 //\n-173 // Tags have now been added per-component in Level, but there is additional\n-need to tag\n-174 // components within Refinement -- we can't tag the parent level components\n-for any\n-175 // refinement (in order to keep it const) and tags associated with children\n-that are\n-176 // specific to the child-to-parent mapping may not be warranted in the\n-child level.\n-177 //\n-178 // Parent tags are only required for sparse refinement. The main property\n-to tag is\n-179 // whether a component was selected, and so a single SparseTag is used for\n-all three\n-180 // component types. Tagging if a component is \"transitional\" is also\n-useful. This may\n-181 // only be necessary for edges but is currently packed into a mask per-edge\n-for faces,\n-182 // which could be deferred, in which case \"transitional\" could be a single\n-bit.\n-183 //\n-184 // Child tags are part of the child-to-parent mapping, which consists of\n-the parent\n-185 // component index for each child component, plus a tag for the child\n-indicating more\n-186 // about its relationship to its parent, e.g. is it completely defined,\n-what the parent\n-187 // component type is, what is the index of the child within its parent,\n-etc.\n-188 //\n-189 struct SparseTag {\n-190 SparseTag() : _selected(0), _transitional(0) { }\n-191\n-192 unsigned char _selected : 1; // component specifically selected for\n-refinement\n-193 unsigned char _transitional : 4; // adjacent to a refined component (4-bits\n-for face)\n-194 };\n-195\n-196 struct ChildTag {\n-197 ChildTag() { }\n-198\n-199 unsigned char _incomplete : 1; // incomplete neighborhood to represent\n-limit of parent\n-200 unsigned char _parentType : 2; // type of parent component: vertex, edge or\n-face\n-201 unsigned char _indexInParent : 2; // index of child wrt parent: 0-3, or\n-iterative if N > 4\n-202 };\n-203\n-204 // Methods to access and modify tags:\n-205 SparseTag const & getParentFaceSparseTag( _\bI_\bn_\bd_\be_\bx f) const { return\n-_parentFaceTag[f]; }\n-206 SparseTag const & getParentEdgeSparseTag( _\bI_\bn_\bd_\be_\bx e) const { return\n-_parentEdgeTag[e]; }\n-207 SparseTag const & getParentVertexSparseTag(_\bI_\bn_\bd_\be_\bx v) const { return\n-_parentVertexTag[v]; }\n-208\n-209 SparseTag & getParentFaceSparseTag( _\bI_\bn_\bd_\be_\bx f) { return _parentFaceTag[f]; }\n-210 SparseTag & getParentEdgeSparseTag( _\bI_\bn_\bd_\be_\bx e) { return _parentEdgeTag[e]; }\n-211 SparseTag & getParentVertexSparseTag(_\bI_\bn_\bd_\be_\bx v) { return _parentVertexTag[v];\n-}\n-212\n-213 ChildTag const & getChildFaceTag( _\bI_\bn_\bd_\be_\bx f) const { return _childFaceTag[f];\n-}\n-214 ChildTag const & getChildEdgeTag( _\bI_\bn_\bd_\be_\bx e) const { return _childEdgeTag[e];\n-}\n-215 ChildTag const & getChildVertexTag(_\bI_\bn_\bd_\be_\bx v) const { return _childVertexTag\n-[v]; }\n-216\n-217 ChildTag & getChildFaceTag( _\bI_\bn_\bd_\be_\bx f) { return _childFaceTag[f]; }\n-218 ChildTag & getChildEdgeTag( _\bI_\bn_\bd_\be_\bx e) { return _childEdgeTag[e]; }\n-219 ChildTag & getChildVertexTag(_\bI_\bn_\bd_\be_\bx v) { return _childVertexTag[v]; }\n-220\n-221// Remaining methods should really be protected -- for use by subclasses...\n-222public:\n-223 //\n-224 // Methods involved in constructing the parent-to-child mapping -- when the\n-225 // refinement is sparse, additional methods are needed to identify the\n-selection:\n-226 //\n-227 void populateParentToChildMapping();\n-228 void populateParentChildIndices();\n-229 void printParentToChildMapping() const;\n-230\n-231 virtual void allocateParentChildIndices() = 0;\n-232\n-233 // Supporting method for sparse refinement:\n-234 void initializeSparseSelectionTags();\n-235 void markSparseChildComponentIndices();\n-236 void markSparseVertexChildren();\n-237 void markSparseEdgeChildren();\n-238\n-239 virtual void markSparseFaceChildren() = 0;\n-240\n-241 void initializeChildComponentCounts();\n-242\n-243 //\n-244 // Methods involved in constructing the child-to-parent mapping:\n-245 //\n-246 void populateChildToParentMapping();\n-247\n-248 void populateFaceParentVectors(ChildTag const initialChildTags[2][4]);\n-249 void populateFaceParentFromParentFaces(ChildTag const initialChildTags[2]\n-[4]);\n-250\n-251 void populateEdgeParentVectors(ChildTag const initialChildTags[2][4]);\n-252 void populateEdgeParentFromParentFaces(ChildTag const initialChildTags[2]\n-[4]);\n-253 void populateEdgeParentFromParentEdges(ChildTag const initialChildTags[2]\n-[4]);\n-254\n-255 void populateVertexParentVectors(ChildTag const initialChildTags[2][4]);\n-256 void populateVertexParentFromParentFaces(ChildTag const initialChildTags[2]\n-[4]);\n-257 void populateVertexParentFromParentEdges(ChildTag const initialChildTags[2]\n-[4]);\n-258 void populateVertexParentFromParentVertices(ChildTag const initialChildTags\n-[2][4]);\n-259\n-260 //\n-261 // Methods involved in propagating component tags from parent to child:\n-262 //\n-263 void propagateComponentTags();\n-264\n-265 void populateFaceTagVectors();\n-266 void populateFaceTagsFromParentFaces();\n-267\n-268 void populateEdgeTagVectors();\n-269 void populateEdgeTagsFromParentFaces();\n-270 void populateEdgeTagsFromParentEdges();\n-271\n-272 void populateVertexTagVectors();\n-273 void populateVertexTagsFromParentFaces();\n-274 void populateVertexTagsFromParentEdges();\n-275 void populateVertexTagsFromParentVertices();\n-276\n-277 //\n-278 // Methods (and types) involved in subdividing the topology -- though not\n-279 // fully exploited, any subset of the 6 relations can be generated:\n-280 //\n-281 struct Relations {\n-282 unsigned int _faceVertices : 1;\n-283 unsigned int _faceEdges : 1;\n-284 unsigned int _edgeVertices : 1;\n-285 unsigned int _edgeFaces : 1;\n-286 unsigned int _vertexFaces : 1;\n-287 unsigned int _vertexEdges : 1;\n-288\n-289 void setAll(bool enable) {\n-290 _faceVertices = enable;\n-291 _faceEdges = enable;\n-292 _edgeVertices = enable;\n-293 _edgeFaces = enable;\n-294 _vertexFaces = enable;\n-295 _vertexEdges = enable;\n-296 }\n-297 };\n-298\n-299 void subdivideTopology(Relations const& relationsToSubdivide);\n-300\n-301 virtual void populateFaceVertexRelation() = 0;\n-302 virtual void populateFaceEdgeRelation() = 0;\n-303 virtual void populateEdgeVertexRelation() = 0;\n-304 virtual void populateEdgeFaceRelation() = 0;\n-305 virtual void populateVertexFaceRelation() = 0;\n-306 virtual void populateVertexEdgeRelation() = 0;\n-307\n-308 //\n-309 // Methods involved in subdividing and inspecting sharpness values:\n-310 //\n-311 void subdivideSharpnessValues();\n-312\n-313 void subdivideVertexSharpness();\n-314 void subdivideEdgeSharpness();\n-315 void reclassifySemisharpVertices();\n-316\n-317 //\n-318 // Methods involved in subdividing face-varying topology:\n-319 //\n-320 void subdivideFVarChannels();\n-321\n-322protected:\n-323 // A debug method of Level prints a Refinement (should really change this)\n-324 friend void Level::print(const Refinement *) const;\n-325\n-326 //\n-327 // Data members -- the logical grouping of some of these (and methods that\n-make use\n-328 // of them) may lead to grouping them into a few utility classes or\n-structs...\n-329 //\n-330\n-331 // Defined on construction:\n-332 Level const * _parent;\n-333 Level * _child;\n-334 Sdc::Options _options;\n-335\n-336 // Defined by the subclass:\n-337 _\bS_\bd_\bc_\b:_\b:_\bS_\bp_\bl_\bi_\bt _splitType;\n-338 int _regFaceSize;\n-339\n-340 // Determined by the refinement options:\n-341 bool _uniform;\n-342 bool _faceVertsFirst;\n-343\n-344 //\n-345 // Inventory and ordering of the types of child components:\n-346 //\n-347 int _childFaceFromFaceCount; // arguably redundant (all faces originate\n-from faces)\n-348 int _childEdgeFromFaceCount;\n-349 int _childEdgeFromEdgeCount;\n-350 int _childVertFromFaceCount;\n-351 int _childVertFromEdgeCount;\n-352 int _childVertFromVertCount;\n-353\n-354 int _firstChildFaceFromFace; // arguably redundant (all faces originate\n-from faces)\n-355 int _firstChildEdgeFromFace;\n-356 int _firstChildEdgeFromEdge;\n-357 int _firstChildVertFromFace;\n-358 int _firstChildVertFromEdge;\n-359 int _firstChildVertFromVert;\n-360\n-361 //\n-362 // The parent-to-child mapping:\n-363 // These are vectors sized according to the number of parent components\n-(and\n-364 // their topology) that contain references/indices to the child components\n-that\n-365 // result from them by refinement. When refinement is sparse, parent\n-components\n-366 // that have not spawned all child components will have their missing\n-children\n-367 // marked as invalid.\n-368 //\n-369 // NOTE the \"Array\" members here. Often vectors within the Level can be\n-shared\n-370 // with the Refinement, and an Array instance is used to do so. If not\n-shared\n-371 // the subclass just initializes the Array members after allocating its own\n-local\n-372 // vector members.\n-373 //\n-374 _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _faceChildFaceCountsAndOffsets;\n-375 _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _faceChildEdgeCountsAndOffsets;\n-376\n-377 _\bI_\bn_\bd_\be_\bx_\bV_\be_\bc_\bt_\bo_\br _faceChildFaceIndices; // *cannot* always use face-vert counts/\n-offsets\n-378 _\bI_\bn_\bd_\be_\bx_\bV_\be_\bc_\bt_\bo_\br _faceChildEdgeIndices; // can use face-vert counts/offsets\n-379 _\bI_\bn_\bd_\be_\bx_\bV_\be_\bc_\bt_\bo_\br _faceChildVertIndex;\n-380\n-381 _\bI_\bn_\bd_\be_\bx_\bV_\be_\bc_\bt_\bo_\br _edgeChildEdgeIndices; // trivial/corresponding pair for each\n-382 _\bI_\bn_\bd_\be_\bx_\bV_\be_\bc_\bt_\bo_\br _edgeChildVertIndex;\n-383\n-384 _\bI_\bn_\bd_\be_\bx_\bV_\be_\bc_\bt_\bo_\br _vertChildVertIndex;\n-385\n-386 //\n-387 // The child-to-parent mapping:\n-388 //\n-389 _\bI_\bn_\bd_\be_\bx_\bV_\be_\bc_\bt_\bo_\br _childFaceParentIndex;\n-390 _\bI_\bn_\bd_\be_\bx_\bV_\be_\bc_\bt_\bo_\br _childEdgeParentIndex;\n-391 _\bI_\bn_\bd_\be_\bx_\bV_\be_\bc_\bt_\bo_\br _childVertexParentIndex;\n-392\n-393 std::vector<ChildTag> _childFaceTag;\n-394 std::vector<ChildTag> _childEdgeTag;\n-395 std::vector<ChildTag> _childVertexTag;\n-396\n-397 //\n-398 // Tags for sparse selection of components:\n-399 //\n-400 std::vector<SparseTag> _parentFaceTag;\n-401 std::vector<SparseTag> _parentEdgeTag;\n-402 std::vector<SparseTag> _parentVertexTag;\n-403\n-404 //\n-405 // Refinement data for face-varying channels present in the Levels being\n-refined:\n-406 //\n-407 std::vector<FVarRefinement*> _fvarChannels;\n-408};\n-409\n-410inline _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n-411Refinement::getFaceChildFaces(_\bI_\bn_\bd_\be_\bx parentFace) const {\n-412\n-413 return _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by(&_faceChildFaceIndices\n-[_faceChildFaceCountsAndOffsets[2*parentFace+1]],\n-414 _faceChildFaceCountsAndOffsets[2*parentFace]);\n-415}\n-416\n-417inline _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n-418Refinement::getFaceChildFaces(_\bI_\bn_\bd_\be_\bx parentFace) {\n-419\n-420 return _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by(&_faceChildFaceIndices[_faceChildFaceCountsAndOffsets\n-[2*parentFace+1]],\n-421 _faceChildFaceCountsAndOffsets[2*parentFace]);\n-422}\n-423\n-424inline _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n-425Refinement::getFaceChildEdges(_\bI_\bn_\bd_\be_\bx parentFace) const {\n-426\n-427 return _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by(&_faceChildEdgeIndices\n-[_faceChildEdgeCountsAndOffsets[2*parentFace+1]],\n-428 _faceChildEdgeCountsAndOffsets[2*parentFace]);\n-429}\n-430inline _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n-431Refinement::getFaceChildEdges(_\bI_\bn_\bd_\be_\bx parentFace) {\n-432\n-433 return _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by(&_faceChildEdgeIndices[_faceChildEdgeCountsAndOffsets\n-[2*parentFace+1]],\n-434 _faceChildEdgeCountsAndOffsets[2*parentFace]);\n-435}\n-436\n-437inline _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n-438Refinement::getEdgeChildEdges(_\bI_\bn_\bd_\be_\bx parentEdge) const {\n-439\n-440 return _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by(&_edgeChildEdgeIndices[parentEdge*2], 2);\n-441}\n-442\n-443inline _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n-444Refinement::getEdgeChildEdges(_\bI_\bn_\bd_\be_\bx parentEdge) {\n-445\n-446 return _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by(&_edgeChildEdgeIndices[parentEdge*2], 2);\n-447}\n-448\n-449} // end namespace internal\n-450} // end namespace Vtr\n-451\n-452} // end namespace OPENSUBDIV_VERSION\n-453using namespace OPENSUBDIV_VERSION;\n-454} // end namespace OpenSubdiv\n-455\n-456#endif /* OPENSUBDIV3_VTR_REFINEMENT_H */\n+88#endif // OPENSUBDIV3_OSD_CUDA_VERTEX_BUFFER_H\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx\n-int Index\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b5_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bV_\be_\bc_\bt_\bo_\br\n-std::vector< Index > IndexVector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b7_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n-ConstArray< Index > ConstIndexArray\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b8_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n-Array< Index > IndexArray\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b7_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bp_\bl_\bi_\bt\n-Split\n-Enumerated type for all face splitting schemes.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b4_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+Concrete vertex buffer class for Cuda subdivision.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh_\b:_\b4_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bB_\bi_\bn_\bd_\bC_\bu_\bd_\ba_\bB_\bu_\bf_\bf_\be_\br\n+float * BindCudaBuffer()\n+Returns cuda memory.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\b~_\bC_\bu_\bd_\ba_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+~CudaVertexBuffer()\n+Destructor.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bE_\bl_\be_\bm_\be_\bn_\bt_\bs\n+int GetNumElements() const\n+Returns how many elements defined in this vertex buffer.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bU_\bp_\bd_\ba_\bt_\be_\bD_\ba_\bt_\ba\n+void UpdateData(const float *src, int startVertex, int numVertices, void\n+*deviceContext=NULL)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n+int GetNumVertices() const\n+Returns how many vertices allocated in this vertex buffer.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n+static CudaVertexBuffer * Create(int numElements, int numVertices, void\n+*deviceContext=NULL)\n+Creator. Returns NULL if error.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\ba_\bl_\bl_\bo_\bc_\ba_\bt_\be\n+bool allocate()\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bC_\bu_\bd_\ba_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+CudaVertexBuffer(int numElements, int numVertices)\n+Constructor.\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bv_\bt_\br\n-    * _\br_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bc_\bu_\bd_\ba_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00677.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00677.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/vtr/sparseSelector.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/osd/cudaPatchTable.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -88,38 +88,47 @@\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n+<a href=\"#nested-classes\">Classes</a> &#124;\n <a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">sparseSelector.h File Reference</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">cudaPatchTable.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a01495_source.html\">../vtr/types.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00674_source.html\">../vtr/refinement.h</a>&quot;</code><br />\n+<code>#include &quot;../osd/nonCopyable.h&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a01489_source.html\">../osd/types.h</a>&quot;</code><br />\n <code>#include &lt;vector&gt;</code><br />\n </div>\n <p><a href=\"a00677_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n+<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n+Classes</h2></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01189.html\">CudaPatchTable</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">CUDA patch table.  <a href=\"a01189.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+</table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00909\" id=\"r_a00909\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00909.html\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr</a></td></tr>\n+<tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far</a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bd5473d7d5841d48919aaa9ad0cb1f9b.html\">vtr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00677.html\">sparseSelector.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00677.html\">cudaPatchTable.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,22 +1,28 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-sparseSelector.h File Reference\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+cudaPatchTable.h File Reference\n #include \"../version.h\"\n-#include \"_\b._\b._\b/_\bv_\bt_\br_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n-#include \"_\b._\b._\b/_\bv_\bt_\br_\b/_\br_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt_\b._\bh\"\n+#include \"../osd/nonCopyable.h\"\n+#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n #include <vector>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n+C\bCl\bla\bas\bss\bse\bes\bs\n+class \u00a0 _\bC_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+\u00a0       CUDA patch table. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br\n+\u00a0\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bv_\bt_\br\n-    * _\bs_\bp_\ba_\br_\bs_\be_\bS_\be_\bl_\be_\bc_\bt_\bo_\br_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bc_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00677_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00677_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/vtr/sparseSelector.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/osd/cudaPatchTable.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">sparseSelector.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">cudaPatchTable.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00677.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2014 DreamWorks Animation LLC.</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2015 Pixar</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -118,98 +118,132 @@\n <div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_VTR_SPARSE_SELECTOR_H</span></div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#define OPENSUBDIV3_VTR_SPARSE_SELECTOR_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span> </div>\n-<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span> </div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#include &quot;../vtr/types.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../vtr/refinement.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">namespace </span>Vtr {</div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"keyword\">namespace </span>internal {</div>\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span> </div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"comment\">//  SparseSelector:</span></div>\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span><span class=\"comment\">//      Class supporting &quot;selection&quot; of components in a Level for sparse Refinement.</span></div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"comment\">//  The term &quot;selection&quot; here implies interest in the limit for that component, i.e.</span></div>\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span><span class=\"comment\">//  the limit point for a selected vertex, the limit patch for a face, etc.  So this</span></div>\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span><span class=\"comment\">//  class is responsible for ensuring that all neighboring components required to</span></div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span><span class=\"comment\">//  support the limit of those selected are included in the refinement.</span></div>\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span><span class=\"comment\">//  This class is associated with (and constructed given) a Refinement and its role</span></div>\n-<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span><span class=\"comment\">//  is to initialize that Refinement instance for eventual sparse refinement.  So it</span></div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span><span class=\"comment\">//  is a friend of and expected to modify the Refinement as part of the selection.</span></div>\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span><span class=\"comment\">//  Given its simplicity and scope it may be worth nesting it in Vtr::Refinement.</span></div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span><span class=\"comment\">//  While all three component types -- vertices, edges and faces -- can be selected,</span></div>\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span><span class=\"comment\">//  only selection of faces is currently used and actively supported as part of the</span></div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span><span class=\"comment\">//  feature-adaptive refinement.</span></div>\n-<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span><span class=\"keyword\">class </span>SparseSelector {</div>\n+<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_CUDA_PATCH_TABLE_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_CUDA_PATCH_TABLE_H</span></div>\n+<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n+<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../osd/nonCopyable.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../osd/types.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span> </div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span> </div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span> </div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"keyword\">namespace </span>Far{</div>\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span>    <span class=\"keyword\">class </span>PatchTable;</div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span>};</div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span> </div>\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span><span class=\"keyword\">namespace </span>Osd {</div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00051\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01189.html\">   51</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01189.html\">CudaPatchTable</a> : <span class=\"keyword\">private</span> NonCopyable&lt;CudaPatchTable&gt; {</div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01189.html#a32a8745ae6ebb1fe7c6b0b9f6c3c0eae\">   54</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01189.html\">CudaPatchTable</a> *<a class=\"code hl_function\" href=\"a01189.html#a32a8745ae6ebb1fe7c6b0b9f6c3c0eae\">Create</a>(<a class=\"code hl_class\" href=\"a00993.html\">Far::PatchTable</a> <span class=\"keyword\">const</span> *patchTable,</div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span>                                  <span class=\"keywordtype\">void</span> *deviceContext = NULL);</div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01189.html#a77236fdbdacca3f2e8e21c4be8ca0bf6\">   57</a></span>    <a class=\"code hl_function\" href=\"a01189.html#a77236fdbdacca3f2e8e21c4be8ca0bf6\">~CudaPatchTable</a>();</div>\n <div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span> </div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span>    SparseSelector(Refinement&amp; refine) : _refine(&amp;refine), _selected(false) { }</div>\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span>    ~SparseSelector() { }</div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span> </div>\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>    <span class=\"keywordtype\">void</span>        setRefinement(Refinement&amp; refine) { _refine = &amp;refine; }</div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span>    Refinement&amp; getRefinement()<span class=\"keyword\"> const             </span>{ <span class=\"keywordflow\">return</span> *_refine; }</div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span> </div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span>    <span class=\"keywordtype\">bool</span> isSelectionEmpty()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> !_selected; }</div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01189.html#a7e3a54d16295a2557cf0e63cb223a2db\">   60</a></span>    <span class=\"keywordtype\">void</span> *<a class=\"code hl_function\" href=\"a01189.html#a7e3a54d16295a2557cf0e63cb223a2db\">GetPatchArrayBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01189.html#ab051492a1c9d697cdbb351fd09300659\">_patchArrays</a>; }</div>\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span> </div>\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01189.html#aa14d12be64d8e84f6303a9803e73b71d\">   63</a></span>    <span class=\"keywordtype\">void</span> *<a class=\"code hl_function\" href=\"a01189.html#aa14d12be64d8e84f6303a9803e73b71d\">GetPatchIndexBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01189.html#aff9fed47b172665795e7b46f4713cb39\">_indexBuffer</a>; }</div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span> </div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01189.html#ab9e6dd4a1062dc6560e306db28f31a67\">   66</a></span>    <span class=\"keywordtype\">void</span> *<a class=\"code hl_function\" href=\"a01189.html#ab9e6dd4a1062dc6560e306db28f31a67\">GetPatchParamBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01189.html#afec3f4b40a8f9b6e6ed2715a774d959a\">_patchParamBuffer</a>; }</div>\n <div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span> </div>\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span>    <span class=\"comment\">//  Methods for selecting (and marking) components for refinement.  All component indices</span></div>\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span>    <span class=\"comment\">//  refer to components in the parent:</span></div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>    <span class=\"keywordtype\">void</span> selectVertex(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> pVertex);</div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span>    <span class=\"keywordtype\">void</span> selectEdge(  <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> pEdge);</div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span>    <span class=\"keywordtype\">void</span> selectFace(  <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> pFace);</div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span> </div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span>    SparseSelector() : _refine(0), _selected(false) { }</div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span> </div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>    <span class=\"keywordtype\">bool</span> wasVertexSelected(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> pVertex)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _refine-&gt;getParentVertexSparseTag(pVertex)._selected; }</div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span>    <span class=\"keywordtype\">bool</span> wasEdgeSelected(  <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> pEdge)<span class=\"keyword\"> const   </span>{ <span class=\"keywordflow\">return</span> _refine-&gt;getParentEdgeSparseTag(pEdge)._selected; }</div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>    <span class=\"keywordtype\">bool</span> wasFaceSelected(  <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> pFace)<span class=\"keyword\"> const   </span>{ <span class=\"keywordflow\">return</span> _refine-&gt;getParentFaceSparseTag(pFace)._selected; }</div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span> </div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>    <span class=\"keywordtype\">void</span> markVertexSelected(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> pVertex)<span class=\"keyword\"> const </span>{ _refine-&gt;getParentVertexSparseTag(pVertex)._selected = <span class=\"keyword\">true</span>; }</div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span>    <span class=\"keywordtype\">void</span> markEdgeSelected(  <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> pEdge)<span class=\"keyword\"> const   </span>{ _refine-&gt;getParentEdgeSparseTag(pEdge)._selected = <span class=\"keyword\">true</span>; }</div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>    <span class=\"keywordtype\">void</span> markFaceSelected(  <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> pFace)<span class=\"keyword\"> const   </span>{ _refine-&gt;getParentFaceSparseTag(pFace)._selected = <span class=\"keyword\">true</span>; }</div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span> </div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>    <span class=\"keywordtype\">void</span> initializeSelection();</div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span> </div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>    Refinement* _refine;</div>\n-<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>    <span class=\"keywordtype\">bool</span>        _selected;</div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>};</div>\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span> </div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>} <span class=\"comment\">// end namespace internal</span></div>\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span>} <span class=\"comment\">// end namespace Vtr</span></div>\n-<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span> </div>\n-<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span> </div>\n-<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_VTR_SPARSE_SELECTOR_H */</span><span class=\"preprocessor\"></span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa00909_html_a4a0e50e01fef3e431767a928c2631cab\"><div class=\"ttname\"><a href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::Index</a></div><div class=\"ttdeci\">int Index</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01495_source.html#l00054\">types.h:54</a></div></div>\n+<div class=\"foldopen\" id=\"foldopen00069\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01189.html#a54e86fe3c2d4863e344fd9be2a8141c9\">   69</a></span>    <span class=\"keywordtype\">void</span> *<a class=\"code hl_function\" href=\"a01189.html#a54e86fe3c2d4863e344fd9be2a8141c9\">GetVaryingPatchArrayBuffer</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01189.html#a372ca54f02d574dc4a20aa2f35277a1d\">_varyingPatchArrays</a>;</div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>    }</div>\n+</div>\n+<div class=\"foldopen\" id=\"foldopen00073\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01189.html#a486517cc7e9296c01072ccd51f77da27\">   73</a></span>    <span class=\"keywordtype\">void</span> *<a class=\"code hl_function\" href=\"a01189.html#a486517cc7e9296c01072ccd51f77da27\">GetVaryingPatchIndexBuffer</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01189.html#a732aefa1f4a2701e2a19c828be76b7d0\">_varyingIndexBuffer</a>;</div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span> </div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01189.html#aa9be824a572029f3ec1e0c0d6cfecd77\">   78</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01189.html#aa9be824a572029f3ec1e0c0d6cfecd77\">GetNumFVarChannels</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (<span class=\"keywordtype\">int</span>)<a class=\"code hl_variable\" href=\"a01189.html#a9ae3024459ccecb8a33ef3af5f27130a\">_fvarPatchArrays</a>.size(); }</div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00081\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01189.html#a04c544025f2690d1a4973b6ff5273646\">   81</a></span>    <span class=\"keywordtype\">void</span> *<a class=\"code hl_function\" href=\"a01189.html#a04c544025f2690d1a4973b6ff5273646\">GetFVarPatchArrayBuffer</a>(<span class=\"keywordtype\">int</span> fvarChannel)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01189.html#a9ae3024459ccecb8a33ef3af5f27130a\">_fvarPatchArrays</a>[fvarChannel];</div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00086\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01189.html#abdb11e2609df00620abd8c081c3b13be\">   86</a></span>    <span class=\"keywordtype\">void</span> *<a class=\"code hl_function\" href=\"a01189.html#abdb11e2609df00620abd8c081c3b13be\">GetFVarPatchIndexBuffer</a>(<span class=\"keywordtype\">int</span> fvarChannel = 0)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01189.html#a4fd7bd0ad86a18e26331e88d278450d9\">_fvarIndexBuffers</a>[fvarChannel];</div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00091\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01189.html#adb0788b75a061fc9b650d75bf691f1d8\">   91</a></span>    <span class=\"keywordtype\">void</span> *<a class=\"code hl_function\" href=\"a01189.html#adb0788b75a061fc9b650d75bf691f1d8\">GetFVarPatchParamBuffer</a>(<span class=\"keywordtype\">int</span> fvarChannel = 0)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01189.html#a24f6a6d8efcff60c81c635786f88e951\">_fvarParamBuffers</a>[fvarChannel];</div>\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span> </div>\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span><span class=\"keyword\">protected</span>:</div>\n+<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01189.html#aefa9c1a9175327a40e7cf46ed32ced2f\">   96</a></span>    <a class=\"code hl_function\" href=\"a01189.html#aefa9c1a9175327a40e7cf46ed32ced2f\">CudaPatchTable</a>();</div>\n+<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span> </div>\n+<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01189.html#aa044493f8d93b17493055e0d389645bf\">   98</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01189.html#aa044493f8d93b17493055e0d389645bf\">allocate</a>(<a class=\"code hl_class\" href=\"a00993.html\">Far::PatchTable</a> <span class=\"keyword\">const</span> *patchTable);</div>\n+<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span> </div>\n+<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01189.html#ab051492a1c9d697cdbb351fd09300659\">  100</a></span>    <span class=\"keywordtype\">void</span> *<a class=\"code hl_variable\" href=\"a01189.html#ab051492a1c9d697cdbb351fd09300659\">_patchArrays</a>;</div>\n+<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01189.html#aff9fed47b172665795e7b46f4713cb39\">  101</a></span>    <span class=\"keywordtype\">void</span> *<a class=\"code hl_variable\" href=\"a01189.html#aff9fed47b172665795e7b46f4713cb39\">_indexBuffer</a>;</div>\n+<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01189.html#afec3f4b40a8f9b6e6ed2715a774d959a\">  102</a></span>    <span class=\"keywordtype\">void</span> *<a class=\"code hl_variable\" href=\"a01189.html#afec3f4b40a8f9b6e6ed2715a774d959a\">_patchParamBuffer</a>;</div>\n+<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span> </div>\n+<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01189.html#a372ca54f02d574dc4a20aa2f35277a1d\">  104</a></span>    <span class=\"keywordtype\">void</span> *<a class=\"code hl_variable\" href=\"a01189.html#a372ca54f02d574dc4a20aa2f35277a1d\">_varyingPatchArrays</a>;</div>\n+<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01189.html#a732aefa1f4a2701e2a19c828be76b7d0\">  105</a></span>    <span class=\"keywordtype\">void</span> *<a class=\"code hl_variable\" href=\"a01189.html#a732aefa1f4a2701e2a19c828be76b7d0\">_varyingIndexBuffer</a>;</div>\n+<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span> </div>\n+<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01189.html#a9ae3024459ccecb8a33ef3af5f27130a\">  107</a></span>    std::vector&lt;void *&gt; <a class=\"code hl_variable\" href=\"a01189.html#a9ae3024459ccecb8a33ef3af5f27130a\">_fvarPatchArrays</a>;</div>\n+<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01189.html#a4fd7bd0ad86a18e26331e88d278450d9\">  108</a></span>    std::vector&lt;void *&gt; <a class=\"code hl_variable\" href=\"a01189.html#a4fd7bd0ad86a18e26331e88d278450d9\">_fvarIndexBuffers</a>;</div>\n+<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01189.html#a24f6a6d8efcff60c81c635786f88e951\">  109</a></span>    std::vector&lt;void *&gt; <a class=\"code hl_variable\" href=\"a01189.html#a24f6a6d8efcff60c81c635786f88e951\">_fvarParamBuffers</a>;</div>\n+<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span> </div>\n+<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span>}  <span class=\"comment\">// end namespace Osd</span></div>\n+<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span> </div>\n+<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span>}  <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\">  116</span> </div>\n+<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span>}  <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\">  118</span> </div>\n+<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_CUDA_PATCH_TABLE_H</span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa00993_html\"><div class=\"ttname\"><a href=\"a00993.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable</a></div><div class=\"ttdoc\">Container for arrays of parametric patches.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00842_source.html#l00055\">patchTable.h:55</a></div></div>\n+<div class=\"ttc\" id=\"aa01189_html\"><div class=\"ttname\"><a href=\"a01189.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaPatchTable</a></div><div class=\"ttdoc\">CUDA patch table.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00677_source.html#l00051\">cudaPatchTable.h:51</a></div></div>\n+<div class=\"ttc\" id=\"aa01189_html_a04c544025f2690d1a4973b6ff5273646\"><div class=\"ttname\"><a href=\"a01189.html#a04c544025f2690d1a4973b6ff5273646\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaPatchTable::GetFVarPatchArrayBuffer</a></div><div class=\"ttdeci\">void * GetFVarPatchArrayBuffer(int fvarChannel) const</div><div class=\"ttdoc\">Returns the cuda memory of the array of Osd::PatchArray buffer.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00677_source.html#l00081\">cudaPatchTable.h:81</a></div></div>\n+<div class=\"ttc\" id=\"aa01189_html_a24f6a6d8efcff60c81c635786f88e951\"><div class=\"ttname\"><a href=\"a01189.html#a24f6a6d8efcff60c81c635786f88e951\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaPatchTable::_fvarParamBuffers</a></div><div class=\"ttdeci\">std::vector&lt; void * &gt; _fvarParamBuffers</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00677_source.html#l00109\">cudaPatchTable.h:109</a></div></div>\n+<div class=\"ttc\" id=\"aa01189_html_a32a8745ae6ebb1fe7c6b0b9f6c3c0eae\"><div class=\"ttname\"><a href=\"a01189.html#a32a8745ae6ebb1fe7c6b0b9f6c3c0eae\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaPatchTable::Create</a></div><div class=\"ttdeci\">static CudaPatchTable * Create(Far::PatchTable const *patchTable, void *deviceContext=NULL)</div><div class=\"ttdoc\">Creator. Returns NULL if error.</div></div>\n+<div class=\"ttc\" id=\"aa01189_html_a372ca54f02d574dc4a20aa2f35277a1d\"><div class=\"ttname\"><a href=\"a01189.html#a372ca54f02d574dc4a20aa2f35277a1d\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaPatchTable::_varyingPatchArrays</a></div><div class=\"ttdeci\">void * _varyingPatchArrays</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00677_source.html#l00104\">cudaPatchTable.h:104</a></div></div>\n+<div class=\"ttc\" id=\"aa01189_html_a486517cc7e9296c01072ccd51f77da27\"><div class=\"ttname\"><a href=\"a01189.html#a486517cc7e9296c01072ccd51f77da27\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaPatchTable::GetVaryingPatchIndexBuffer</a></div><div class=\"ttdeci\">void * GetVaryingPatchIndexBuffer() const</div><div class=\"ttdoc\">Returns the cuda memory of the array of varying control vertices.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00677_source.html#l00073\">cudaPatchTable.h:73</a></div></div>\n+<div class=\"ttc\" id=\"aa01189_html_a4fd7bd0ad86a18e26331e88d278450d9\"><div class=\"ttname\"><a href=\"a01189.html#a4fd7bd0ad86a18e26331e88d278450d9\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaPatchTable::_fvarIndexBuffers</a></div><div class=\"ttdeci\">std::vector&lt; void * &gt; _fvarIndexBuffers</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00677_source.html#l00108\">cudaPatchTable.h:108</a></div></div>\n+<div class=\"ttc\" id=\"aa01189_html_a54e86fe3c2d4863e344fd9be2a8141c9\"><div class=\"ttname\"><a href=\"a01189.html#a54e86fe3c2d4863e344fd9be2a8141c9\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaPatchTable::GetVaryingPatchArrayBuffer</a></div><div class=\"ttdeci\">void * GetVaryingPatchArrayBuffer() const</div><div class=\"ttdoc\">Returns the cuda memory of the array of Osd::PatchArray buffer.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00677_source.html#l00069\">cudaPatchTable.h:69</a></div></div>\n+<div class=\"ttc\" id=\"aa01189_html_a732aefa1f4a2701e2a19c828be76b7d0\"><div class=\"ttname\"><a href=\"a01189.html#a732aefa1f4a2701e2a19c828be76b7d0\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaPatchTable::_varyingIndexBuffer</a></div><div class=\"ttdeci\">void * _varyingIndexBuffer</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00677_source.html#l00105\">cudaPatchTable.h:105</a></div></div>\n+<div class=\"ttc\" id=\"aa01189_html_a77236fdbdacca3f2e8e21c4be8ca0bf6\"><div class=\"ttname\"><a href=\"a01189.html#a77236fdbdacca3f2e8e21c4be8ca0bf6\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaPatchTable::~CudaPatchTable</a></div><div class=\"ttdeci\">~CudaPatchTable()</div><div class=\"ttdoc\">Destructor.</div></div>\n+<div class=\"ttc\" id=\"aa01189_html_a7e3a54d16295a2557cf0e63cb223a2db\"><div class=\"ttname\"><a href=\"a01189.html#a7e3a54d16295a2557cf0e63cb223a2db\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaPatchTable::GetPatchArrayBuffer</a></div><div class=\"ttdeci\">void * GetPatchArrayBuffer() const</div><div class=\"ttdoc\">Returns the cuda memory of the array of Osd::PatchArray buffer.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00677_source.html#l00060\">cudaPatchTable.h:60</a></div></div>\n+<div class=\"ttc\" id=\"aa01189_html_a9ae3024459ccecb8a33ef3af5f27130a\"><div class=\"ttname\"><a href=\"a01189.html#a9ae3024459ccecb8a33ef3af5f27130a\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaPatchTable::_fvarPatchArrays</a></div><div class=\"ttdeci\">std::vector&lt; void * &gt; _fvarPatchArrays</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00677_source.html#l00107\">cudaPatchTable.h:107</a></div></div>\n+<div class=\"ttc\" id=\"aa01189_html_aa044493f8d93b17493055e0d389645bf\"><div class=\"ttname\"><a href=\"a01189.html#aa044493f8d93b17493055e0d389645bf\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaPatchTable::allocate</a></div><div class=\"ttdeci\">bool allocate(Far::PatchTable const *patchTable)</div></div>\n+<div class=\"ttc\" id=\"aa01189_html_aa14d12be64d8e84f6303a9803e73b71d\"><div class=\"ttname\"><a href=\"a01189.html#aa14d12be64d8e84f6303a9803e73b71d\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaPatchTable::GetPatchIndexBuffer</a></div><div class=\"ttdeci\">void * GetPatchIndexBuffer() const</div><div class=\"ttdoc\">Returns the cuda memory of the patch control vertices.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00677_source.html#l00063\">cudaPatchTable.h:63</a></div></div>\n+<div class=\"ttc\" id=\"aa01189_html_aa9be824a572029f3ec1e0c0d6cfecd77\"><div class=\"ttname\"><a href=\"a01189.html#aa9be824a572029f3ec1e0c0d6cfecd77\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaPatchTable::GetNumFVarChannels</a></div><div class=\"ttdeci\">int GetNumFVarChannels() const</div><div class=\"ttdoc\">Returns the number of face-varying channels buffers.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00677_source.html#l00078\">cudaPatchTable.h:78</a></div></div>\n+<div class=\"ttc\" id=\"aa01189_html_ab051492a1c9d697cdbb351fd09300659\"><div class=\"ttname\"><a href=\"a01189.html#ab051492a1c9d697cdbb351fd09300659\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaPatchTable::_patchArrays</a></div><div class=\"ttdeci\">void * _patchArrays</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00677_source.html#l00100\">cudaPatchTable.h:100</a></div></div>\n+<div class=\"ttc\" id=\"aa01189_html_ab9e6dd4a1062dc6560e306db28f31a67\"><div class=\"ttname\"><a href=\"a01189.html#ab9e6dd4a1062dc6560e306db28f31a67\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaPatchTable::GetPatchParamBuffer</a></div><div class=\"ttdeci\">void * GetPatchParamBuffer() const</div><div class=\"ttdoc\">Returns the cuda memory of the array of Osd::PatchParam buffer.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00677_source.html#l00066\">cudaPatchTable.h:66</a></div></div>\n+<div class=\"ttc\" id=\"aa01189_html_abdb11e2609df00620abd8c081c3b13be\"><div class=\"ttname\"><a href=\"a01189.html#abdb11e2609df00620abd8c081c3b13be\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaPatchTable::GetFVarPatchIndexBuffer</a></div><div class=\"ttdeci\">void * GetFVarPatchIndexBuffer(int fvarChannel=0) const</div><div class=\"ttdoc\">Returns the cuda memory of the array of face-varying control vertices.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00677_source.html#l00086\">cudaPatchTable.h:86</a></div></div>\n+<div class=\"ttc\" id=\"aa01189_html_adb0788b75a061fc9b650d75bf691f1d8\"><div class=\"ttname\"><a href=\"a01189.html#adb0788b75a061fc9b650d75bf691f1d8\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaPatchTable::GetFVarPatchParamBuffer</a></div><div class=\"ttdeci\">void * GetFVarPatchParamBuffer(int fvarChannel=0) const</div><div class=\"ttdoc\">Returns the cuda memory of the array of face-varying param.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00677_source.html#l00091\">cudaPatchTable.h:91</a></div></div>\n+<div class=\"ttc\" id=\"aa01189_html_aefa9c1a9175327a40e7cf46ed32ced2f\"><div class=\"ttname\"><a href=\"a01189.html#aefa9c1a9175327a40e7cf46ed32ced2f\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaPatchTable::CudaPatchTable</a></div><div class=\"ttdeci\">CudaPatchTable()</div></div>\n+<div class=\"ttc\" id=\"aa01189_html_afec3f4b40a8f9b6e6ed2715a774d959a\"><div class=\"ttname\"><a href=\"a01189.html#afec3f4b40a8f9b6e6ed2715a774d959a\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaPatchTable::_patchParamBuffer</a></div><div class=\"ttdeci\">void * _patchParamBuffer</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00677_source.html#l00102\">cudaPatchTable.h:102</a></div></div>\n+<div class=\"ttc\" id=\"aa01189_html_aff9fed47b172665795e7b46f4713cb39\"><div class=\"ttname\"><a href=\"a01189.html#aff9fed47b172665795e7b46f4713cb39\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaPatchTable::_indexBuffer</a></div><div class=\"ttdeci\">void * _indexBuffer</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00677_source.html#l00101\">cudaPatchTable.h:101</a></div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bd5473d7d5841d48919aaa9ad0cb1f9b.html\">vtr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00677.html\">sparseSelector.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00677.html\">cudaPatchTable.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-sparseSelector.h\n+cudaPatchTable.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2014 DreamWorks Animation LLC.\n+2// Copyright 2015 Pixar\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -23,111 +23,168 @@\n 17//\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n-24#ifndef OPENSUBDIV3_VTR_SPARSE_SELECTOR_H\n-25#define OPENSUBDIV3_VTR_SPARSE_SELECTOR_H\n-26\n-27#include \"../version.h\"\n-28\n-29#include \"../vtr/types.h\"\n-30#include \"../vtr/refinement.h\"\n-31\n-32#include <vector>\n-33\n-34namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-35namespace OPENSUBDIV_VERSION {\n-36\n-37namespace Vtr {\n-38namespace internal {\n-39\n-40//\n-41// SparseSelector:\n-42// Class supporting \"selection\" of components in a Level for sparse\n-Refinement.\n-43// The term \"selection\" here implies interest in the limit for that\n-component, i.e.\n-44// the limit point for a selected vertex, the limit patch for a face, etc. So\n-this\n-45// class is responsible for ensuring that all neighboring components required\n-to\n-46// support the limit of those selected are included in the refinement.\n-47//\n-48// This class is associated with (and constructed given) a Refinement and its\n-role\n-49// is to initialize that Refinement instance for eventual sparse refinement.\n-So it\n-50// is a friend of and expected to modify the Refinement as part of the\n-selection.\n-51// Given its simplicity and scope it may be worth nesting it in Vtr::\n-Refinement.\n-52//\n-53// While all three component types -- vertices, edges and faces -- can be\n-selected,\n-54// only selection of faces is currently used and actively supported as part\n-of the\n-55// feature-adaptive refinement.\n-56//\n-57class SparseSelector {\n+24\n+25#ifndef OPENSUBDIV3_OSD_CUDA_PATCH_TABLE_H\n+26#define OPENSUBDIV3_OSD_CUDA_PATCH_TABLE_H\n+27\n+28#include \"../version.h\"\n+29\n+30#include \"../osd/nonCopyable.h\"\n+31#include \"../osd/types.h\"\n+32\n+33#include <vector>\n+34\n+35namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+36namespace OPENSUBDIV_VERSION {\n+37\n+38namespace Far{\n+39 class PatchTable;\n+40};\n+41\n+42namespace Osd {\n+43\n+_\b5_\b1class _\bC_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be : private NonCopyable<CudaPatchTable> {\n+52public:\n+_\b5_\b4 static _\bC_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be *_\bC_\br_\be_\ba_\bt_\be(_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be const *patchTable,\n+55 void *deviceContext = NULL);\n+_\b5_\b7 _\b~_\bC_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be();\n 58\n-59public:\n-60 SparseSelector(Refinement& refine) : _refine(&refine), _selected(false) { }\n-61 ~SparseSelector() { }\n-62\n-63 void setRefinement(Refinement& refine) { _refine = &refine; }\n-64 Refinement& getRefinement() const { return *_refine; }\n-65\n-66 bool isSelectionEmpty() const { return !_selected; }\n+_\b6_\b0 void *_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bB_\bu_\bf_\bf_\be_\br() const { return _\b__\bp_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs; }\n+61\n+_\b6_\b3 void *_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br() const { return _\b__\bi_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br; }\n+64\n+_\b6_\b6 void *_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br() const { return _\b__\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br; }\n 67\n-68 //\n-69 // Methods for selecting (and marking) components for refinement. All\n-component indices\n-70 // refer to components in the parent:\n-71 //\n-72 void selectVertex(_\bI_\bn_\bd_\be_\bx pVertex);\n-73 void selectEdge( _\bI_\bn_\bd_\be_\bx pEdge);\n-74 void selectFace( _\bI_\bn_\bd_\be_\bx pFace);\n-75\n-76private:\n-77 SparseSelector() : _refine(0), _selected(false) { }\n-78\n-79 bool wasVertexSelected(_\bI_\bn_\bd_\be_\bx pVertex) const { return _refine-\n->getParentVertexSparseTag(pVertex)._selected; }\n-80 bool wasEdgeSelected( _\bI_\bn_\bd_\be_\bx pEdge) const { return _refine-\n->getParentEdgeSparseTag(pEdge)._selected; }\n-81 bool wasFaceSelected( _\bI_\bn_\bd_\be_\bx pFace) const { return _refine-\n->getParentFaceSparseTag(pFace)._selected; }\n-82\n-83 void markVertexSelected(_\bI_\bn_\bd_\be_\bx pVertex) const { _refine-\n->getParentVertexSparseTag(pVertex)._selected = true; }\n-84 void markEdgeSelected( _\bI_\bn_\bd_\be_\bx pEdge) const { _refine->getParentEdgeSparseTag\n-(pEdge)._selected = true; }\n-85 void markFaceSelected( _\bI_\bn_\bd_\be_\bx pFace) const { _refine->getParentFaceSparseTag\n-(pFace)._selected = true; }\n-86\n-87 void initializeSelection();\n-88\n-89private:\n-90 Refinement* _refine;\n-91 bool _selected;\n-92};\n-93\n-94} // end namespace internal\n-95} // end namespace Vtr\n-96\n-97} // end namespace OPENSUBDIV_VERSION\n-98using namespace OPENSUBDIV_VERSION;\n-99} // end namespace OpenSubdiv\n-100\n-101#endif /* OPENSUBDIV3_VTR_SPARSE_SELECTOR_H */\n+_\b6_\b9 void *_\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bB_\bu_\bf_\bf_\be_\br() const {\n+70 return _\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs;\n+71 }\n+_\b7_\b3 void *_\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br() const {\n+74 return _\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br;\n+75 }\n+76\n+_\b7_\b8 int _\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs() const { return (int)_\b__\bf_\bv_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs.size(); }\n+79\n+_\b8_\b1 void *_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bB_\bu_\bf_\bf_\be_\br(int fvarChannel) const {\n+82 return _\b__\bf_\bv_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs[fvarChannel];\n+83 }\n+84\n+_\b8_\b6 void *_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br(int fvarChannel = 0) const {\n+87 return _\b__\bf_\bv_\ba_\br_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bs[fvarChannel];\n+88 }\n+89\n+_\b9_\b1 void *_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br(int fvarChannel = 0) const {\n+92 return _\b__\bf_\bv_\ba_\br_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br_\bs[fvarChannel];\n+93 }\n+94\n+95protected:\n+_\b9_\b6 _\bC_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be();\n+97\n+_\b9_\b8 bool _\ba_\bl_\bl_\bo_\bc_\ba_\bt_\be(_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be const *patchTable);\n+99\n+_\b1_\b0_\b0 void *_\b__\bp_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs;\n+_\b1_\b0_\b1 void *_\b__\bi_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br;\n+_\b1_\b0_\b2 void *_\b__\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br;\n+103\n+_\b1_\b0_\b4 void *_\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs;\n+_\b1_\b0_\b5 void *_\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br;\n+106\n+_\b1_\b0_\b7 std::vector<void *> _\b__\bf_\bv_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs;\n+_\b1_\b0_\b8 std::vector<void *> _\b__\bf_\bv_\ba_\br_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bs;\n+_\b1_\b0_\b9 std::vector<void *> _\b__\bf_\bv_\ba_\br_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br_\bs;\n+110};\n+111\n+112} // end namespace Osd\n+113\n+114} // end namespace OPENSUBDIV_VERSION\n+115using namespace OPENSUBDIV_VERSION;\n+116\n+117} // end namespace OpenSubdiv\n+118\n+119#endif // OPENSUBDIV3_OSD_CUDA_PATCH_TABLE_H\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx\n-int Index\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b5_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+Container for arrays of parametric patches.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+CUDA patch table.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bB_\bu_\bf_\bf_\be_\br\n+void * GetFVarPatchArrayBuffer(int fvarChannel) const\n+Returns the cuda memory of the array of Osd::PatchArray buffer.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b8_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bf_\bv_\ba_\br_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br_\bs\n+std::vector< void * > _fvarParamBuffers\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b0_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n+static CudaPatchTable * Create(Far::PatchTable const *patchTable, void\n+*deviceContext=NULL)\n+Creator. Returns NULL if error.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs\n+void * _varyingPatchArrays\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b0_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+void * GetVaryingPatchIndexBuffer() const\n+Returns the cuda memory of the array of varying control vertices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bf_\bv_\ba_\br_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bs\n+std::vector< void * > _fvarIndexBuffers\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b0_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bB_\bu_\bf_\bf_\be_\br\n+void * GetVaryingPatchArrayBuffer() const\n+Returns the cuda memory of the array of Osd::PatchArray buffer.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+void * _varyingIndexBuffer\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b0_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b~_\bC_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+~CudaPatchTable()\n+Destructor.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bB_\bu_\bf_\bf_\be_\br\n+void * GetPatchArrayBuffer() const\n+Returns the cuda memory of the array of Osd::PatchArray buffer.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bf_\bv_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs\n+std::vector< void * > _fvarPatchArrays\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b0_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\ba_\bl_\bl_\bo_\bc_\ba_\bt_\be\n+bool allocate(Far::PatchTable const *patchTable)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+void * GetPatchIndexBuffer() const\n+Returns the cuda memory of the patch control vertices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs\n+int GetNumFVarChannels() const\n+Returns the number of face-varying channels buffers.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bp_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs\n+void * _patchArrays\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b0_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br\n+void * GetPatchParamBuffer() const\n+Returns the cuda memory of the array of Osd::PatchParam buffer.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+void * GetFVarPatchIndexBuffer(int fvarChannel=0) const\n+Returns the cuda memory of the array of face-varying control vertices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b8_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br\n+void * GetFVarPatchParamBuffer(int fvarChannel=0) const\n+Returns the cuda memory of the array of face-varying param.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b9_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+CudaPatchTable()\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br\n+void * _patchParamBuffer\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b0_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bi_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+void * _indexBuffer\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b0_\b1\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bv_\bt_\br\n-    * _\bs_\bp_\ba_\br_\bs_\be_\bS_\be_\bl_\be_\bc_\bt_\bo_\br_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bc_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00680.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00680.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/vtr/fvarRefinement.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/osd/cpuGLVertexBuffer.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -88,43 +88,44 @@\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n+<a href=\"#nested-classes\">Classes</a> &#124;\n <a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">fvarRefinement.h File Reference</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">cpuGLVertexBuffer.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a01492_source.html\">../sdc/types.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00731_source.html\">../sdc/crease.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a01495_source.html\">../vtr/types.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00674_source.html\">../vtr/refinement.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00689_source.html\">../vtr/fvarLevel.h</a>&quot;</code><br />\n-<code>#include &lt;vector&gt;</code><br />\n-<code>#include &lt;cassert&gt;</code><br />\n-<code>#include &lt;cstring&gt;</code><br />\n+<code>#include &lt;cstddef&gt;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00722_source.html\">../osd/opengl.h</a>&quot;</code><br />\n </div>\n <p><a href=\"a00680_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n+<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n+Classes</h2></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01169.html\">CpuGLVertexBuffer</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Concrete vertex buffer class for cpu subdivision and OpenGL drawing.  <a href=\"a01169.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+</table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00909\" id=\"r_a00909\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00909.html\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr</a></td></tr>\n+<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bd5473d7d5841d48919aaa9ad0cb1f9b.html\">vtr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00680.html\">fvarRefinement.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00680.html\">cpuGLVertexBuffer.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,27 +1,26 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-fvarRefinement.h File Reference\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+cpuGLVertexBuffer.h File Reference\n #include \"../version.h\"\n-#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n-#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bc_\br_\be_\ba_\bs_\be_\b._\bh\"\n-#include \"_\b._\b._\b/_\bv_\bt_\br_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n-#include \"_\b._\b._\b/_\bv_\bt_\br_\b/_\br_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt_\b._\bh\"\n-#include \"_\b._\b._\b/_\bv_\bt_\br_\b/_\bf_\bv_\ba_\br_\bL_\be_\bv_\be_\bl_\b._\bh\"\n-#include <vector>\n-#include <cassert>\n-#include <cstring>\n+#include <cstddef>\n+#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bo_\bp_\be_\bn_\bg_\bl_\b._\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n+C\bCl\bla\bas\bss\bse\bes\bs\n+class \u00a0 _\bC_\bp_\bu_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+\u00a0       Concrete vertex buffer class for cpu subdivision and OpenGL drawing.\n+        _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bv_\bt_\br\n-    * _\bf_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bc_\bp_\bu_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00680_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00680_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/vtr/fvarRefinement.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/osd/cpuGLVertexBuffer.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">fvarRefinement.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">cpuGLVertexBuffer.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00680.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2014 DreamWorks Animation LLC.</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2013 Pixar</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -118,115 +118,84 @@\n <div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_VTR_FVAR_REFINEMENT_H</span></div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#define OPENSUBDIV3_VTR_FVAR_REFINEMENT_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span> </div>\n-<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span> </div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#include &quot;../sdc/types.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../sdc/crease.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../vtr/types.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &quot;../vtr/refinement.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"preprocessor\">#include &quot;../vtr/fvarLevel.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span> </div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"preprocessor\">#include &lt;cassert&gt;</span></div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"preprocessor\">#include &lt;cstring&gt;</span></div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span> </div>\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span> </div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span> </div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"keyword\">namespace </span>Vtr {</div>\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span><span class=\"keyword\">namespace </span>internal {</div>\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span> </div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span><span class=\"comment\">//  FVarRefinement:</span></div>\n-<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span><span class=\"comment\">//      A face-varying refinement contains data to support the refinement of a</span></div>\n-<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span><span class=\"comment\">//  particular face-varying &quot;channel&quot;.  Just as Refinement maintains a mapping</span></div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span><span class=\"comment\">//  between the components of a parent Level and its child, the face-varying</span></div>\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span><span class=\"comment\">//  analog maintains a mapping between the face-varying values of a parent</span></div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span><span class=\"comment\">//  FVarLevel and its child.</span></div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span><span class=\"comment\">//  It turns out there is little data necessary here, so the class consists</span></div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span><span class=\"comment\">//  mainly of methods that populate the child FVarLevel.  The mapping data in</span></div>\n-<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span><span class=\"comment\">//  the refinement between Levels serves most purposes and all that is required</span></div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span><span class=\"comment\">//  in addition is a mapping from values in the child FVarLevel to the parent.</span></div>\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span><span class=\"keyword\">class </span>FVarRefinement {</div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span>    FVarRefinement(Refinement <span class=\"keyword\">const</span>&amp; refinement, FVarLevel&amp; parent, FVarLevel&amp; child);</div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span>    ~FVarRefinement();</div>\n+<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_CPU_GL_VERTEX_BUFFER_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_CPU_GL_VERTEX_BUFFER_H</span></div>\n+<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n+<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &lt;cstddef&gt;</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../osd/opengl.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span> </div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span> </div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"keyword\">namespace </span>Osd {</div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00047\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01169.html\">   47</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01169.html\">CpuGLVertexBuffer</a> {</div>\n+<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01169.html#acb848178657989d2c59730e90e8ac952\">   50</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01169.html\">CpuGLVertexBuffer</a> * <a class=\"code hl_function\" href=\"a01169.html#acb848178657989d2c59730e90e8ac952\">Create</a>(<span class=\"keywordtype\">int</span> numElements, <span class=\"keywordtype\">int</span> numVertices,</div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span>                                      <span class=\"keywordtype\">void</span> *deviceContext = NULL);</div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span> </div>\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01169.html#aec560f36966b5da9528b8dbc065f7cc7\">   54</a></span>    <a class=\"code hl_function\" href=\"a01169.html#aec560f36966b5da9528b8dbc065f7cc7\">~CpuGLVertexBuffer</a>();</div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span> </div>\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01169.html#a96601a091f8831823c4dd72b6c962f1b\">   58</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01169.html#a96601a091f8831823c4dd72b6c962f1b\">UpdateData</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <span class=\"keywordtype\">int</span> startVertex, <span class=\"keywordtype\">int</span> numVertices,</div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span>                    <span class=\"keywordtype\">void</span> *deviceContext = NULL);</div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span> </div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01169.html#a77cee40767fd4936f20a8f9d9d9ea625\">   62</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01169.html#a77cee40767fd4936f20a8f9d9d9ea625\">GetNumElements</a>() <span class=\"keyword\">const</span>;</div>\n <div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span> </div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span>    <span class=\"keywordtype\">int</span> getChildValueParentSource(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vIndex, <span class=\"keywordtype\">int</span> sibling)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span>        <span class=\"keywordflow\">return</span> _childValueParentSource[_childFVar.getVertexValueOffset(vIndex, (<a class=\"code hl_typedef\" href=\"a00909.html#a97c1e0c5ac33f97e2b73fde56b56c363\">LocalIndex</a>)sibling)];</div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span>    }</div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span> </div>\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span>    <span class=\"keywordtype\">float</span> getFractionalWeight(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> pVert, <a class=\"code hl_typedef\" href=\"a00909.html#a97c1e0c5ac33f97e2b73fde56b56c363\">LocalIndex</a> pSibling,</div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span>                              <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> cVert, <a class=\"code hl_typedef\" href=\"a00909.html#a97c1e0c5ac33f97e2b73fde56b56c363\">LocalIndex</a> cSibling) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01169.html#aaf4a32b8a414eff77000c584c2015cb7\">   65</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01169.html#aaf4a32b8a414eff77000c584c2015cb7\">GetNumVertices</a>() <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span> </div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01169.html#adf7a9df5d3fc4d803bf5f1f374d90274\">   69</a></span>    <span class=\"keywordtype\">float</span> * <a class=\"code hl_function\" href=\"a01169.html#adf7a9df5d3fc4d803bf5f1f374d90274\">BindCpuBuffer</a>();</div>\n <div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span> </div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span> </div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>    <span class=\"comment\">//  Modifiers supporting application of the refinement:</span></div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span>    <span class=\"keywordtype\">void</span> applyRefinement();</div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01169.html#a6a642b61f5cf7ced73523798467735a5\">   73</a></span>    GLuint <a class=\"code hl_function\" href=\"a01169.html#a6a642b61f5cf7ced73523798467735a5\">BindVBO</a>(<span class=\"keywordtype\">void</span> *deviceContext = NULL);</div>\n <div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span> </div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span>    <span class=\"keywordtype\">void</span> estimateAndAllocateChildValues();</div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span>    <span class=\"keywordtype\">void</span> populateChildValues();</div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span>    <span class=\"keywordtype\">void</span> populateChildValuesFromFaceVertices();</div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span>    <span class=\"keywordtype\">void</span> populateChildValuesFromEdgeVertices();</div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>    <span class=\"keywordtype\">int</span>  populateChildValuesForEdgeVertex(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> cVert, <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> pEdge);</div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span>    <span class=\"keywordtype\">void</span> populateChildValuesFromVertexVertices();</div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>    <span class=\"keywordtype\">int</span>  populateChildValuesForVertexVertex(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> cVert, <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> pVert);</div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>    <span class=\"keywordtype\">void</span> trimAndFinalizeChildValues();</div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span> </div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span>    <span class=\"keywordtype\">void</span> propagateEdgeTags();</div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>    <span class=\"keywordtype\">void</span> propagateValueTags();</div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>    <span class=\"keywordtype\">void</span> propagateValueCreases();</div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>    <span class=\"keywordtype\">void</span> reclassifySemisharpValues();</div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span> </div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>    <span class=\"comment\">//  Identify the Refinement, its Levels and assigned FVarLevels for more</span></div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>    <span class=\"comment\">//  immediate access -- child FVarLevel is non-const as it is to be assigned:</span></div>\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>    Refinement <span class=\"keyword\">const</span> &amp; _refinement;</div>\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span> </div>\n-<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span>    Level <span class=\"keyword\">const</span> &amp;     _parentLevel;</div>\n-<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>    FVarLevel <span class=\"keyword\">const</span> &amp; _parentFVar;</div>\n-<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span> </div>\n-<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span>    Level <span class=\"keyword\">const</span> &amp; _childLevel;</div>\n-<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span>    FVarLevel &amp;   _childFVar;</div>\n-<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span> </div>\n-<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span>    <span class=\"comment\">//  When refinement is sparse, we need a mapping between siblings of a vertex</span></div>\n-<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span>    <span class=\"comment\">//  value in the parent and child -- and for some child values, there will not</span></div>\n-<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span>    <span class=\"comment\">//  be a parent value, in which case the source of the parent component will</span></div>\n-<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span>    <span class=\"comment\">//  be stored.  So we refer to the parent &quot;source&quot; rather than &quot;sibling&quot;:</span></div>\n-<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span>    std::vector&lt;LocalIndex&gt; _childValueParentSource;</div>\n-<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span>};</div>\n-<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span> </div>\n-<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span>} <span class=\"comment\">// end namespace internal</span></div>\n-<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span>} <span class=\"comment\">// end namespace Vtr</span></div>\n-<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span> </div>\n-<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\">  116</span> </div>\n-<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_VTR_FVAR_REFINEMENT_H */</span><span class=\"preprocessor\"></span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa00909_html_a4a0e50e01fef3e431767a928c2631cab\"><div class=\"ttname\"><a href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::Index</a></div><div class=\"ttdeci\">int Index</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01495_source.html#l00054\">types.h:54</a></div></div>\n-<div class=\"ttc\" id=\"aa00909_html_a97c1e0c5ac33f97e2b73fde56b56c363\"><div class=\"ttname\"><a href=\"a00909.html#a97c1e0c5ac33f97e2b73fde56b56c363\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::LocalIndex</a></div><div class=\"ttdeci\">unsigned short LocalIndex</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01495_source.html#l00066\">types.h:66</a></div></div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span><span class=\"keyword\">protected</span>:</div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01169.html#a32dd2317d622c1b079e3219f97c86955\">   77</a></span>    <a class=\"code hl_function\" href=\"a01169.html#a32dd2317d622c1b079e3219f97c86955\">CpuGLVertexBuffer</a>(<span class=\"keywordtype\">int</span> numElements, <span class=\"keywordtype\">int</span> numVertices);</div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span> </div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01169.html#add23d9f5bbc918076d240287a9b3664f\">   80</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01169.html#add23d9f5bbc918076d240287a9b3664f\">allocate</a>();</div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span> </div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>    <span class=\"keywordtype\">int</span> _numElements;</div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span>    <span class=\"keywordtype\">int</span> _numVertices;</div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>    GLuint _vbo;</div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>    <span class=\"keywordtype\">float</span> *_cpuBuffer;</div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>    <span class=\"keywordtype\">bool</span> _dataDirty;</div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span> </div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>}  <span class=\"comment\">// end namespace Osd</span></div>\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span> </div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>}  <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span> </div>\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span>}  <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span> </div>\n+<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_CPU_GL_VERTEX_BUFFER_H</span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa01169_html\"><div class=\"ttname\"><a href=\"a01169.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuGLVertexBuffer</a></div><div class=\"ttdoc\">Concrete vertex buffer class for cpu subdivision and OpenGL drawing.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00680_source.html#l00047\">cpuGLVertexBuffer.h:47</a></div></div>\n+<div class=\"ttc\" id=\"aa01169_html_a32dd2317d622c1b079e3219f97c86955\"><div class=\"ttname\"><a href=\"a01169.html#a32dd2317d622c1b079e3219f97c86955\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuGLVertexBuffer::CpuGLVertexBuffer</a></div><div class=\"ttdeci\">CpuGLVertexBuffer(int numElements, int numVertices)</div><div class=\"ttdoc\">Constructor.</div></div>\n+<div class=\"ttc\" id=\"aa01169_html_a6a642b61f5cf7ced73523798467735a5\"><div class=\"ttname\"><a href=\"a01169.html#a6a642b61f5cf7ced73523798467735a5\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuGLVertexBuffer::BindVBO</a></div><div class=\"ttdeci\">GLuint BindVBO(void *deviceContext=NULL)</div></div>\n+<div class=\"ttc\" id=\"aa01169_html_a77cee40767fd4936f20a8f9d9d9ea625\"><div class=\"ttname\"><a href=\"a01169.html#a77cee40767fd4936f20a8f9d9d9ea625\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuGLVertexBuffer::GetNumElements</a></div><div class=\"ttdeci\">int GetNumElements() const</div><div class=\"ttdoc\">Returns how many elements defined in this vertex buffer.</div></div>\n+<div class=\"ttc\" id=\"aa01169_html_a96601a091f8831823c4dd72b6c962f1b\"><div class=\"ttname\"><a href=\"a01169.html#a96601a091f8831823c4dd72b6c962f1b\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuGLVertexBuffer::UpdateData</a></div><div class=\"ttdeci\">void UpdateData(const float *src, int startVertex, int numVertices, void *deviceContext=NULL)</div></div>\n+<div class=\"ttc\" id=\"aa01169_html_aaf4a32b8a414eff77000c584c2015cb7\"><div class=\"ttname\"><a href=\"a01169.html#aaf4a32b8a414eff77000c584c2015cb7\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuGLVertexBuffer::GetNumVertices</a></div><div class=\"ttdeci\">int GetNumVertices() const</div><div class=\"ttdoc\">Returns how many vertices allocated in this vertex buffer.</div></div>\n+<div class=\"ttc\" id=\"aa01169_html_acb848178657989d2c59730e90e8ac952\"><div class=\"ttname\"><a href=\"a01169.html#acb848178657989d2c59730e90e8ac952\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuGLVertexBuffer::Create</a></div><div class=\"ttdeci\">static CpuGLVertexBuffer * Create(int numElements, int numVertices, void *deviceContext=NULL)</div><div class=\"ttdoc\">Creator. Returns NULL if error.</div></div>\n+<div class=\"ttc\" id=\"aa01169_html_add23d9f5bbc918076d240287a9b3664f\"><div class=\"ttname\"><a href=\"a01169.html#add23d9f5bbc918076d240287a9b3664f\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuGLVertexBuffer::allocate</a></div><div class=\"ttdeci\">bool allocate()</div><div class=\"ttdoc\">Allocates VBO for this buffer. Returns true if success.</div></div>\n+<div class=\"ttc\" id=\"aa01169_html_adf7a9df5d3fc4d803bf5f1f374d90274\"><div class=\"ttname\"><a href=\"a01169.html#adf7a9df5d3fc4d803bf5f1f374d90274\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuGLVertexBuffer::BindCpuBuffer</a></div><div class=\"ttdeci\">float * BindCpuBuffer()</div></div>\n+<div class=\"ttc\" id=\"aa01169_html_aec560f36966b5da9528b8dbc065f7cc7\"><div class=\"ttname\"><a href=\"a01169.html#aec560f36966b5da9528b8dbc065f7cc7\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuGLVertexBuffer::~CpuGLVertexBuffer</a></div><div class=\"ttdeci\">~CpuGLVertexBuffer()</div><div class=\"ttdoc\">Destructor.</div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bd5473d7d5841d48919aaa9ad0cb1f9b.html\">vtr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00680.html\">fvarRefinement.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00680.html\">cpuGLVertexBuffer.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-fvarRefinement.h\n+cpuGLVertexBuffer.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2014 DreamWorks Animation LLC.\n+2// Copyright 2013 Pixar\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -23,118 +23,95 @@\n 17//\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n-24#ifndef OPENSUBDIV3_VTR_FVAR_REFINEMENT_H\n-25#define OPENSUBDIV3_VTR_FVAR_REFINEMENT_H\n-26\n-27#include \"../version.h\"\n-28\n-29#include \"../sdc/types.h\"\n-30#include \"../sdc/crease.h\"\n-31#include \"../vtr/types.h\"\n-32#include \"../vtr/refinement.h\"\n-33#include \"../vtr/fvarLevel.h\"\n-34\n-35#include <vector>\n-36#include <cassert>\n-37#include <cstring>\n-38\n-39\n-40namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-41namespace OPENSUBDIV_VERSION {\n-42\n-43namespace Vtr {\n-44namespace internal {\n-45\n-46//\n-47// FVarRefinement:\n-48// A face-varying refinement contains data to support the refinement of a\n-49// particular face-varying \"channel\". Just as Refinement maintains a mapping\n-50// between the components of a parent Level and its child, the face-varying\n-51// analog maintains a mapping between the face-varying values of a parent\n-52// FVarLevel and its child.\n-53//\n-54// It turns out there is little data necessary here, so the class consists\n-55// mainly of methods that populate the child FVarLevel. The mapping data in\n-56// the refinement between Levels serves most purposes and all that is\n-required\n-57// in addition is a mapping from values in the child FVarLevel to the parent.\n-58//\n-59class FVarRefinement {\n-60public:\n-61 FVarRefinement(Refinement const& refinement, FVarLevel& parent, FVarLevel&\n-child);\n-62 ~FVarRefinement();\n+24\n+25#ifndef OPENSUBDIV3_OSD_CPU_GL_VERTEX_BUFFER_H\n+26#define OPENSUBDIV3_OSD_CPU_GL_VERTEX_BUFFER_H\n+27\n+28#include \"../version.h\"\n+29\n+30#include <cstddef>\n+31#include \"../osd/opengl.h\"\n+32\n+33namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+34namespace OPENSUBDIV_VERSION {\n+35\n+36namespace Osd {\n+37\n+_\b4_\b7class _\bC_\bp_\bu_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br {\n+48public:\n+_\b5_\b0 static _\bC_\bp_\bu_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br * _\bC_\br_\be_\ba_\bt_\be(int numElements, int numVertices,\n+51 void *deviceContext = NULL);\n+52\n+_\b5_\b4 _\b~_\bC_\bp_\bu_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br();\n+55\n+_\b5_\b8 void _\bU_\bp_\bd_\ba_\bt_\be_\bD_\ba_\bt_\ba(const float *src, int startVertex, int numVertices,\n+59 void *deviceContext = NULL);\n+60\n+_\b6_\b2 int _\bG_\be_\bt_\bN_\bu_\bm_\bE_\bl_\be_\bm_\be_\bn_\bt_\bs() const;\n 63\n-64 int getChildValueParentSource(_\bI_\bn_\bd_\be_\bx vIndex, int sibling) const {\n-65 return _childValueParentSource[_childFVar.getVertexValueOffset(vIndex,\n-(_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx)sibling)];\n-66 }\n-67\n-68 float getFractionalWeight(_\bI_\bn_\bd_\be_\bx pVert, _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx pSibling,\n-69 _\bI_\bn_\bd_\be_\bx cVert, _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx cSibling) const;\n+_\b6_\b5 int _\bG_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs() const;\n+66\n+_\b6_\b9 float * _\bB_\bi_\bn_\bd_\bC_\bp_\bu_\bB_\bu_\bf_\bf_\be_\br();\n 70\n-71\n-72 // Modifiers supporting application of the refinement:\n-73 void applyRefinement();\n+_\b7_\b3 GLuint _\bB_\bi_\bn_\bd_\bV_\bB_\bO(void *deviceContext = NULL);\n 74\n-75 void estimateAndAllocateChildValues();\n-76 void populateChildValues();\n-77 void populateChildValuesFromFaceVertices();\n-78 void populateChildValuesFromEdgeVertices();\n-79 int populateChildValuesForEdgeVertex(_\bI_\bn_\bd_\be_\bx cVert, _\bI_\bn_\bd_\be_\bx pEdge);\n-80 void populateChildValuesFromVertexVertices();\n-81 int populateChildValuesForVertexVertex(_\bI_\bn_\bd_\be_\bx cVert, _\bI_\bn_\bd_\be_\bx pVert);\n-82 void trimAndFinalizeChildValues();\n-83\n-84 void propagateEdgeTags();\n-85 void propagateValueTags();\n-86 void propagateValueCreases();\n-87 void reclassifySemisharpValues();\n-88\n-89private:\n-90 //\n-91 // Identify the Refinement, its Levels and assigned FVarLevels for more\n-92 // immediate access -- child FVarLevel is non-const as it is to be assigned:\n-93 //\n-94 Refinement const & _refinement;\n-95\n-96 Level const & _parentLevel;\n-97 FVarLevel const & _parentFVar;\n-98\n-99 Level const & _childLevel;\n-100 FVarLevel & _childFVar;\n-101\n-102 // When refinement is sparse, we need a mapping between siblings of a\n-vertex\n-103 // value in the parent and child -- and for some child values, there will\n-not\n-104 // be a parent value, in which case the source of the parent component will\n-105 // be stored. So we refer to the parent \"source\" rather than \"sibling\":\n-106 //\n-107 std::vector<LocalIndex> _childValueParentSource;\n-108};\n-109\n-110} // end namespace internal\n-111} // end namespace Vtr\n-112\n-113} // end namespace OPENSUBDIV_VERSION\n-114using namespace OPENSUBDIV_VERSION;\n-115} // end namespace OpenSubdiv\n-116\n-117#endif /* OPENSUBDIV3_VTR_FVAR_REFINEMENT_H */\n+75protected:\n+_\b7_\b7 _\bC_\bp_\bu_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br(int numElements, int numVertices);\n+78\n+_\b8_\b0 bool _\ba_\bl_\bl_\bo_\bc_\ba_\bt_\be();\n+81\n+82private:\n+83 int _numElements;\n+84 int _numVertices;\n+85 GLuint _vbo;\n+86 float *_cpuBuffer;\n+87 bool _dataDirty;\n+88};\n+89\n+90} // end namespace Osd\n+91\n+92} // end namespace OPENSUBDIV_VERSION\n+93using namespace OPENSUBDIV_VERSION;\n+94\n+95} // end namespace OpenSubdiv\n+96\n+97#endif // OPENSUBDIV3_OSD_CPU_GL_VERTEX_BUFFER_H\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx\n-int Index\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b5_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx\n-unsigned short LocalIndex\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b6_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+Concrete vertex buffer class for cpu subdivision and OpenGL drawing.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh_\b:_\b4_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bC_\bp_\bu_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+CpuGLVertexBuffer(int numElements, int numVertices)\n+Constructor.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bB_\bi_\bn_\bd_\bV_\bB_\bO\n+GLuint BindVBO(void *deviceContext=NULL)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bE_\bl_\be_\bm_\be_\bn_\bt_\bs\n+int GetNumElements() const\n+Returns how many elements defined in this vertex buffer.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bU_\bp_\bd_\ba_\bt_\be_\bD_\ba_\bt_\ba\n+void UpdateData(const float *src, int startVertex, int numVertices, void\n+*deviceContext=NULL)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n+int GetNumVertices() const\n+Returns how many vertices allocated in this vertex buffer.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n+static CpuGLVertexBuffer * Create(int numElements, int numVertices, void\n+*deviceContext=NULL)\n+Creator. Returns NULL if error.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\ba_\bl_\bl_\bo_\bc_\ba_\bt_\be\n+bool allocate()\n+Allocates VBO for this buffer. Returns true if success.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bB_\bi_\bn_\bd_\bC_\bp_\bu_\bB_\bu_\bf_\bf_\be_\br\n+float * BindCpuBuffer()\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\b~_\bC_\bp_\bu_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+~CpuGLVertexBuffer()\n+Destructor.\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bv_\bt_\br\n-    * _\bf_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bc_\bp_\bu_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00683.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00683.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/vtr/array.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/osd/glVertexBuffer.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -90,42 +90,42 @@\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> &#124;\n <a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">array.h File Reference</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">glVertexBuffer.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &lt;cassert&gt;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00722_source.html\">../osd/opengl.h</a>&quot;</code><br />\n+<code>#include &lt;cstddef&gt;</code><br />\n </div>\n <p><a href=\"a00683_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01353.html\">ConstArray&lt; TYPE &gt;</a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01357.html\">Array&lt; TYPE &gt;</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01245.html\">GLVertexBuffer</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Concrete vertex buffer class for GLSL subdivision and OpenGL drawing.  <a href=\"a01245.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00909\" id=\"r_a00909\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00909.html\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr</a></td></tr>\n+<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bd5473d7d5841d48919aaa9ad0cb1f9b.html\">vtr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00683.html\">array.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00683.html\">glVertexBuffer.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,25 +1,26 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-array.h File Reference\n+glVertexBuffer.h File Reference\n #include \"../version.h\"\n-#include <cassert>\n+#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bo_\bp_\be_\bn_\bg_\bl_\b._\bh\"\n+#include <cstddef>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by_\b<_\b _\bT_\bY_\bP_\bE_\b _\b>\n-\u00a0\n-class \u00a0 _\bA_\br_\br_\ba_\by_\b<_\b _\bT_\bY_\bP_\bE_\b _\b>\n+class \u00a0 _\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+\u00a0       Concrete vertex buffer class for GLSL subdivision and OpenGL drawing.\n+        _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bv_\bt_\br\n-    * _\ba_\br_\br_\ba_\by_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bg_\bl_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00683.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00683.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,4 +1,3 @@\n var a00683 = [\n-    [\"ConstArray< TYPE >\", \"a01353.html\", \"a01353\"],\n-    [\"Array< TYPE >\", \"a01357.html\", \"a01357\"]\n+    [\"GLVertexBuffer\", \"a01245.html\", \"a01245\"]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00683_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00683_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/vtr/array.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/osd/glVertexBuffer.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">array.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">glVertexBuffer.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00683.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2014 DreamWorks Animation LLC.</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2013 Pixar</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -118,192 +118,79 @@\n <div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_VTR_ARRAY_INTERFACE_H</span></div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#define OPENSUBDIV3_VTR_ARRAY_INTERFACE_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span> </div>\n-<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span> </div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#include &lt;cassert&gt;</span></div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span> </div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">namespace </span>Vtr {</div>\n+<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_GL_VERTEX_BUFFER_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_GL_VERTEX_BUFFER_H</span></div>\n+<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n+<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../osd/opengl.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &lt;cstddef&gt;</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span> </div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n <div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span> </div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"comment\">//  This class provides a simple array-like interface -- a subset std::vector&#39;s interface -- for</span></div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"comment\">//  a sequence of elements stored in contiguous memory.  It provides a unified representation for</span></div>\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span><span class=\"comment\">//  referencing data on the stack, all or a subset of std::vector&lt;&gt;, or anywhere else in memory.</span></div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"comment\">//  Note that its members are head/size rather than begin/end as in std::vector -- we frequently</span></div>\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span><span class=\"comment\">//  need only the size for many queries, and that is most often what is stored elsewhere in other</span></div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"comment\">//  classes, so we hope to reduce unnecessary address arithmetic constructing the interface and</span></div>\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span><span class=\"comment\">//  accessing the size.  The size type is also specifically 32-bit (rather than size_t) to match</span></div>\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span><span class=\"comment\">//  internal usage and avoid unnecessary conversion to/from 64-bit.</span></div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span><span class=\"comment\">//  Question:</span></div>\n-<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span><span class=\"comment\">//      Naming is at issue here...  formerly called ArrayInterface until that was shot down it has</span></div>\n-<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span><span class=\"comment\">//  been simplified to Array but needs to be distanced from std::array as it DOES NOT store its</span></div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span><span class=\"comment\">//  own memory and is simply an interface to memory stored elsewhere.</span></div>\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> TYPE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00053\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01353.html\">   53</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01353.html\">ConstArray</a> {</div>\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span> </div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01353.html#a0caff2a05d659a02367f0f31ae29e45c\">   56</a></span>    <span class=\"keyword\">typedef</span> TYPE <a class=\"code hl_typedef\" href=\"a01353.html#a0caff2a05d659a02367f0f31ae29e45c\">value_type</a>;</div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01353.html#aafd1e3ba4133ad908bdbc99c4b356e5f\">   57</a></span>    <span class=\"keyword\">typedef</span> <span class=\"keywordtype\">int</span>  <a class=\"code hl_typedef\" href=\"a01353.html#aafd1e3ba4133ad908bdbc99c4b356e5f\">size_type</a>;</div>\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span> </div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01353.html#ac20b1b0146a3077fd2de652b07f94de9\">   59</a></span>    <span class=\"keyword\">typedef</span> TYPE <span class=\"keyword\">const</span>&amp; <a class=\"code hl_typedef\" href=\"a01353.html#ac20b1b0146a3077fd2de652b07f94de9\">const_reference</a>;</div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01353.html#a543c28695d3d02ccf15ea7d9125aba04\">   60</a></span>    <span class=\"keyword\">typedef</span> TYPE <span class=\"keyword\">const</span>* <a class=\"code hl_typedef\" href=\"a01353.html#a543c28695d3d02ccf15ea7d9125aba04\">const_iterator</a>;</div>\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span> </div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01353.html#a9025ff89fc9afe7d9054abb58123bbda\">   62</a></span>    <span class=\"keyword\">typedef</span> TYPE&amp; <a class=\"code hl_typedef\" href=\"a01353.html#a9025ff89fc9afe7d9054abb58123bbda\">reference</a>;</div>\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01353.html#adfa2f8bb0c1215f3b0ef976f122faf0d\">   63</a></span>    <span class=\"keyword\">typedef</span> TYPE* <a class=\"code hl_typedef\" href=\"a01353.html#adfa2f8bb0c1215f3b0ef976f122faf0d\">iterator</a>;</div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span> </div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"keyword\">namespace </span>Osd {</div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00044\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01245.html\">   44</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01245.html\">GLVertexBuffer</a> {</div>\n+<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01245.html#abfb3fc6fd2278633f65442db6528c926\">   47</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01245.html\">GLVertexBuffer</a> * <a class=\"code hl_function\" href=\"a01245.html#abfb3fc6fd2278633f65442db6528c926\">Create</a>(<span class=\"keywordtype\">int</span> numElements, <span class=\"keywordtype\">int</span> numVertices,</div>\n+<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span>                                   <span class=\"keywordtype\">void</span> *deviceContext = NULL);</div>\n+<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span> </div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01245.html#a2629b06f77082d1c67c50b03be4e465a\">   51</a></span>    <a class=\"code hl_function\" href=\"a01245.html#a2629b06f77082d1c67c50b03be4e465a\">~GLVertexBuffer</a>();</div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span> </div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01245.html#a96601a091f8831823c4dd72b6c962f1b\">   55</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01245.html#a96601a091f8831823c4dd72b6c962f1b\">UpdateData</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <span class=\"keywordtype\">int</span> startVertex, <span class=\"keywordtype\">int</span> numVertices,</div>\n+<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span>                    <span class=\"keywordtype\">void</span> *deviceContext = NULL);</div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span> </div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01245.html#a77cee40767fd4936f20a8f9d9d9ea625\">   59</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01245.html#a77cee40767fd4936f20a8f9d9d9ea625\">GetNumElements</a>() <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span> </div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01245.html#aaf4a32b8a414eff77000c584c2015cb7\">   62</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01245.html#aaf4a32b8a414eff77000c584c2015cb7\">GetNumVertices</a>() <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span> </div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01245.html#a6a642b61f5cf7ced73523798467735a5\">   65</a></span>    GLuint <a class=\"code hl_function\" href=\"a01245.html#a6a642b61f5cf7ced73523798467735a5\">BindVBO</a>(<span class=\"keywordtype\">void</span> *deviceContext = NULL);</div>\n <div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span> </div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01353.html#aeec9d58ea099acc6be7c5655c229b050\">   67</a></span>    <a class=\"code hl_function\" href=\"a01353.html#aeec9d58ea099acc6be7c5655c229b050\">ConstArray</a>() : <a class=\"code hl_variable\" href=\"a01353.html#a0b346105187c04000fd7f76046ec9909\">_begin</a>(0), <a class=\"code hl_variable\" href=\"a01353.html#a9f1927ae81f20205d93e0b86915f27d7\">_size</a>(0) { }</div>\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00069\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01353.html#a7a2762a78af05d23e5664a40720b3dc6\">   69</a></span>    <a class=\"code hl_function\" href=\"a01353.html#a7a2762a78af05d23e5664a40720b3dc6\">ConstArray</a>(<a class=\"code hl_typedef\" href=\"a01353.html#a0caff2a05d659a02367f0f31ae29e45c\">value_type</a> <span class=\"keyword\">const</span> * ptr, <a class=\"code hl_typedef\" href=\"a01353.html#aafd1e3ba4133ad908bdbc99c4b356e5f\">size_type</a> sizeArg) :</div>\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span>        <a class=\"code hl_variable\" href=\"a01353.html#a0b346105187c04000fd7f76046ec9909\">_begin</a>(ptr), <a class=\"code hl_variable\" href=\"a01353.html#a9f1927ae81f20205d93e0b86915f27d7\">_size</a>(sizeArg) { }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span> </div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01353.html#a60304b65bf89363bcc3165d3cde67f86\">   72</a></span>    <a class=\"code hl_typedef\" href=\"a01353.html#aafd1e3ba4133ad908bdbc99c4b356e5f\">size_type</a> <a class=\"code hl_function\" href=\"a01353.html#a60304b65bf89363bcc3165d3cde67f86\">size</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01353.html#a9f1927ae81f20205d93e0b86915f27d7\">_size</a>; }</div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span> </div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01353.html#a644718bb2fb240de962dc3c9a1fdf0dc\">   74</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01353.html#a644718bb2fb240de962dc3c9a1fdf0dc\">empty</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01353.html#a9f1927ae81f20205d93e0b86915f27d7\">_size</a>==0; }</div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span> </div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01353.html#a4bc7a742b78a2528f413b38fe426a74c\">   76</a></span>    <a class=\"code hl_typedef\" href=\"a01353.html#ac20b1b0146a3077fd2de652b07f94de9\">const_reference</a> <a class=\"code hl_function\" href=\"a01353.html#a4bc7a742b78a2528f413b38fe426a74c\">operator[]</a>(<span class=\"keywordtype\">int</span> index)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01353.html#a0b346105187c04000fd7f76046ec9909\">_begin</a>[index]; }</div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01353.html#a29305669b60ca1680752e2fc3592ba99\">   77</a></span>    <a class=\"code hl_typedef\" href=\"a01353.html#a543c28695d3d02ccf15ea7d9125aba04\">const_iterator</a>  <a class=\"code hl_function\" href=\"a01353.html#a29305669b60ca1680752e2fc3592ba99\">begin</a>()<span class=\"keyword\"> const               </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01353.html#a0b346105187c04000fd7f76046ec9909\">_begin</a>; }</div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01353.html#accf9a4bd0c34d4a5f6a7dab66ea10cdc\">   78</a></span>    <a class=\"code hl_typedef\" href=\"a01353.html#a543c28695d3d02ccf15ea7d9125aba04\">const_iterator</a>  <a class=\"code hl_function\" href=\"a01353.html#accf9a4bd0c34d4a5f6a7dab66ea10cdc\">end</a>()<span class=\"keyword\"> const                 </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01353.html#a0b346105187c04000fd7f76046ec9909\">_begin</a> + <a class=\"code hl_variable\" href=\"a01353.html#a9f1927ae81f20205d93e0b86915f27d7\">_size</a>; }</div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00080\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01353.html#a5afd472f9e68f5d28798ef5953a995a1\">   80</a></span>    <a class=\"code hl_typedef\" href=\"a01353.html#aafd1e3ba4133ad908bdbc99c4b356e5f\">size_type</a> <a class=\"code hl_function\" href=\"a01353.html#a5afd472f9e68f5d28798ef5953a995a1\">FindIndexIn4Tuple</a>(<a class=\"code hl_typedef\" href=\"a01353.html#a0caff2a05d659a02367f0f31ae29e45c\">value_type</a> value)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>        assert(<a class=\"code hl_variable\" href=\"a01353.html#a9f1927ae81f20205d93e0b86915f27d7\">_size</a>&gt;=4);</div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>        <span class=\"keywordflow\">if</span> (value == <a class=\"code hl_variable\" href=\"a01353.html#a0b346105187c04000fd7f76046ec9909\">_begin</a>[0]) <span class=\"keywordflow\">return</span> 0;</div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>        <span class=\"keywordflow\">if</span> (value == <a class=\"code hl_variable\" href=\"a01353.html#a0b346105187c04000fd7f76046ec9909\">_begin</a>[1]) <span class=\"keywordflow\">return</span> 1;</div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span>        <span class=\"keywordflow\">if</span> (value == <a class=\"code hl_variable\" href=\"a01353.html#a0b346105187c04000fd7f76046ec9909\">_begin</a>[2]) <span class=\"keywordflow\">return</span> 2;</div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>        <span class=\"keywordflow\">if</span> (value == <a class=\"code hl_variable\" href=\"a01353.html#a0b346105187c04000fd7f76046ec9909\">_begin</a>[3]) <span class=\"keywordflow\">return</span> 3;</div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>        assert(<span class=\"stringliteral\">&quot;FindIndexIn4Tuple() did not find expected value!&quot;</span> == 0);</div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>        <span class=\"keywordflow\">return</span> -1;</div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00090\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01353.html#aab75dd5fb27049f92ee6af282b29be8c\">   90</a></span>    <a class=\"code hl_typedef\" href=\"a01353.html#aafd1e3ba4133ad908bdbc99c4b356e5f\">size_type</a> <a class=\"code hl_function\" href=\"a01353.html#aab75dd5fb27049f92ee6af282b29be8c\">FindIndex</a>(<a class=\"code hl_typedef\" href=\"a01353.html#a0caff2a05d659a02367f0f31ae29e45c\">value_type</a> value)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>        <span class=\"keywordflow\">for</span> (<a class=\"code hl_typedef\" href=\"a01353.html#aafd1e3ba4133ad908bdbc99c4b356e5f\">size_type</a> i=0; i&lt;<a class=\"code hl_function\" href=\"a01353.html#a60304b65bf89363bcc3165d3cde67f86\">size</a>(); ++i) {</div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>            <span class=\"keywordflow\">if</span> (value==<a class=\"code hl_variable\" href=\"a01353.html#a0b346105187c04000fd7f76046ec9909\">_begin</a>[i]) {</div>\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span>                <span class=\"keywordflow\">return</span> i;</div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>            }</div>\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span>        }</div>\n-<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span>        <span class=\"keywordflow\">return</span> -1;</div>\n-<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span> </div>\n-<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span><span class=\"keyword\">protected</span>:</div>\n-<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01353.html#a0b346105187c04000fd7f76046ec9909\">  100</a></span>    <a class=\"code hl_typedef\" href=\"a01353.html#a0caff2a05d659a02367f0f31ae29e45c\">value_type</a> <span class=\"keyword\">const</span> * <a class=\"code hl_variable\" href=\"a01353.html#a0b346105187c04000fd7f76046ec9909\">_begin</a>;</div>\n-<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01353.html#a9f1927ae81f20205d93e0b86915f27d7\">  101</a></span>    <a class=\"code hl_typedef\" href=\"a01353.html#aafd1e3ba4133ad908bdbc99c4b356e5f\">size_type</a> <a class=\"code hl_variable\" href=\"a01353.html#a9f1927ae81f20205d93e0b86915f27d7\">_size</a>;</div>\n-<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span> </div>\n-<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> TYPE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00105\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01357.html\">  105</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01357.html\">Array</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"a01353.html\">ConstArray</a>&lt;TYPE&gt; {</div>\n-<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span> </div>\n-<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01357.html#a0caff2a05d659a02367f0f31ae29e45c\">  108</a></span>    <span class=\"keyword\">typedef</span> TYPE <a class=\"code hl_typedef\" href=\"a01357.html#a0caff2a05d659a02367f0f31ae29e45c\">value_type</a>;</div>\n-<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01357.html#aafd1e3ba4133ad908bdbc99c4b356e5f\">  109</a></span>    <span class=\"keyword\">typedef</span> <span class=\"keywordtype\">int</span>  <a class=\"code hl_typedef\" href=\"a01357.html#aafd1e3ba4133ad908bdbc99c4b356e5f\">size_type</a>;</div>\n-<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span> </div>\n-<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01357.html#ac20b1b0146a3077fd2de652b07f94de9\">  111</a></span>    <span class=\"keyword\">typedef</span> TYPE <span class=\"keyword\">const</span>&amp; <a class=\"code hl_typedef\" href=\"a01357.html#ac20b1b0146a3077fd2de652b07f94de9\">const_reference</a>;</div>\n-<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span> </div>\n-<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01357.html#a9025ff89fc9afe7d9054abb58123bbda\">  113</a></span>    <span class=\"keyword\">typedef</span> TYPE&amp; <a class=\"code hl_typedef\" href=\"a01357.html#a9025ff89fc9afe7d9054abb58123bbda\">reference</a>;</div>\n-<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01357.html#adfa2f8bb0c1215f3b0ef976f122faf0d\">  114</a></span>    <span class=\"keyword\">typedef</span> TYPE* <a class=\"code hl_typedef\" href=\"a01357.html#adfa2f8bb0c1215f3b0ef976f122faf0d\">iterator</a>;</div>\n-<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span> </div>\n-<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\">  116</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span> </div>\n-<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01357.html#af9474cac29f3177edf5e8d72ea4a440c\">  118</a></span>    <a class=\"code hl_function\" href=\"a01357.html#af9474cac29f3177edf5e8d72ea4a440c\">Array</a>() : <a class=\"code hl_class\" href=\"a01353.html\">ConstArray</a>&lt;TYPE&gt;() { }</div>\n-<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span>    </div>\n-<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01357.html#adbe98cd78a59ce56cb45c2239136cc10\">  120</a></span>    <a class=\"code hl_function\" href=\"a01357.html#adbe98cd78a59ce56cb45c2239136cc10\">Array</a>(<a class=\"code hl_typedef\" href=\"a01357.html#a0caff2a05d659a02367f0f31ae29e45c\">value_type</a> * ptr, <a class=\"code hl_typedef\" href=\"a01357.html#aafd1e3ba4133ad908bdbc99c4b356e5f\">size_type</a> sizeArg) : <a class=\"code hl_class\" href=\"a01353.html\">ConstArray</a>&lt;TYPE&gt;(ptr, sizeArg) { }</div>\n-<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\">  121</span> </div>\n-<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00124\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01357.html#a4bc7a742b78a2528f413b38fe426a74c\">  124</a></span>    <a class=\"code hl_typedef\" href=\"a01357.html#ac20b1b0146a3077fd2de652b07f94de9\">const_reference</a> <a class=\"code hl_function\" href=\"a01357.html#a4bc7a742b78a2528f413b38fe426a74c\">operator[]</a>(<span class=\"keywordtype\">int</span> index)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_class\" href=\"a01353.html\">ConstArray&lt;TYPE&gt;::_begin</a>[index];</div>\n-<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00128\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01357.html#ae96c1b25ff445d67d3c3e8d5858839a6\">  128</a></span>    <a class=\"code hl_typedef\" href=\"a01357.html#a9025ff89fc9afe7d9054abb58123bbda\">reference</a> <a class=\"code hl_function\" href=\"a01357.html#ae96c1b25ff445d67d3c3e8d5858839a6\">operator[]</a>(<span class=\"keywordtype\">int</span> index) {</div>\n-<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span>        <span class=\"keywordflow\">return</span> <span class=\"keyword\">const_cast&lt;</span><a class=\"code hl_typedef\" href=\"a01357.html#a9025ff89fc9afe7d9054abb58123bbda\">reference</a><span class=\"keyword\">&gt;</span>(<a class=\"code hl_class\" href=\"a01353.html\">ConstArray&lt;TYPE&gt;::_begin</a>[index]);</div>\n-<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\">  131</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00132\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01357.html#ad69bd11391be1a1dba5c8202259664f8\">  132</a></span>    <a class=\"code hl_typedef\" href=\"a01357.html#adfa2f8bb0c1215f3b0ef976f122faf0d\">iterator</a> <a class=\"code hl_function\" href=\"a01357.html#ad69bd11391be1a1dba5c8202259664f8\">begin</a>() {</div>\n-<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\">  133</span>        <span class=\"keywordflow\">return</span> <span class=\"keyword\">const_cast&lt;</span><a class=\"code hl_typedef\" href=\"a01357.html#adfa2f8bb0c1215f3b0ef976f122faf0d\">iterator</a><span class=\"keyword\">&gt;</span>(<a class=\"code hl_class\" href=\"a01353.html\">ConstArray&lt;TYPE&gt;::_begin</a>);</div>\n-<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\">  134</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\">  135</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00136\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01357.html#acad38d52497a975bfb6f2f6acd76631f\">  136</a></span>    <a class=\"code hl_typedef\" href=\"a01357.html#adfa2f8bb0c1215f3b0ef976f122faf0d\">iterator</a> <a class=\"code hl_function\" href=\"a01357.html#acad38d52497a975bfb6f2f6acd76631f\">end</a>() {</div>\n-<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\">  137</span>        <span class=\"keywordflow\">return</span> <span class=\"keyword\">const_cast&lt;</span><a class=\"code hl_typedef\" href=\"a01357.html#adfa2f8bb0c1215f3b0ef976f122faf0d\">iterator</a><span class=\"keyword\">&gt;</span>(<a class=\"code hl_class\" href=\"a01353.html\">ConstArray&lt;TYPE&gt;::_begin</a> +</div>\n-<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\">  138</span>            <a class=\"code hl_class\" href=\"a01353.html\">ConstArray&lt;TYPE&gt;::_size</a>);</div>\n-<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\">  139</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\">  140</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\">  141</span> </div>\n-<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span>} <span class=\"comment\">// end namespace Vtr</span></div>\n-<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\">  143</span> </div>\n-<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\">  144</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\">  145</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\">  146</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\">  147</span> </div>\n-<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\">  148</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_VTR_ARRAY_INTERFACE_H */</span><span class=\"preprocessor\"></span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa01353_html\"><div class=\"ttname\"><a href=\"a01353.html\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00683_source.html#l00053\">array.h:53</a></div></div>\n-<div class=\"ttc\" id=\"aa01353_html_a0b346105187c04000fd7f76046ec9909\"><div class=\"ttname\"><a href=\"a01353.html#a0b346105187c04000fd7f76046ec9909\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray::_begin</a></div><div class=\"ttdeci\">value_type const  * _begin</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00683_source.html#l00100\">array.h:100</a></div></div>\n-<div class=\"ttc\" id=\"aa01353_html_a0caff2a05d659a02367f0f31ae29e45c\"><div class=\"ttname\"><a href=\"a01353.html#a0caff2a05d659a02367f0f31ae29e45c\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray::value_type</a></div><div class=\"ttdeci\">TYPE value_type</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00683_source.html#l00056\">array.h:56</a></div></div>\n-<div class=\"ttc\" id=\"aa01353_html_a29305669b60ca1680752e2fc3592ba99\"><div class=\"ttname\"><a href=\"a01353.html#a29305669b60ca1680752e2fc3592ba99\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray::begin</a></div><div class=\"ttdeci\">const_iterator begin() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00683_source.html#l00077\">array.h:77</a></div></div>\n-<div class=\"ttc\" id=\"aa01353_html_a4bc7a742b78a2528f413b38fe426a74c\"><div class=\"ttname\"><a href=\"a01353.html#a4bc7a742b78a2528f413b38fe426a74c\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray::operator[]</a></div><div class=\"ttdeci\">const_reference operator[](int index) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00683_source.html#l00076\">array.h:76</a></div></div>\n-<div class=\"ttc\" id=\"aa01353_html_a543c28695d3d02ccf15ea7d9125aba04\"><div class=\"ttname\"><a href=\"a01353.html#a543c28695d3d02ccf15ea7d9125aba04\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray::const_iterator</a></div><div class=\"ttdeci\">TYPE const  * const_iterator</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00683_source.html#l00060\">array.h:60</a></div></div>\n-<div class=\"ttc\" id=\"aa01353_html_a5afd472f9e68f5d28798ef5953a995a1\"><div class=\"ttname\"><a href=\"a01353.html#a5afd472f9e68f5d28798ef5953a995a1\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray::FindIndexIn4Tuple</a></div><div class=\"ttdeci\">size_type FindIndexIn4Tuple(value_type value) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00683_source.html#l00080\">array.h:80</a></div></div>\n-<div class=\"ttc\" id=\"aa01353_html_a60304b65bf89363bcc3165d3cde67f86\"><div class=\"ttname\"><a href=\"a01353.html#a60304b65bf89363bcc3165d3cde67f86\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray::size</a></div><div class=\"ttdeci\">size_type size() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00683_source.html#l00072\">array.h:72</a></div></div>\n-<div class=\"ttc\" id=\"aa01353_html_a644718bb2fb240de962dc3c9a1fdf0dc\"><div class=\"ttname\"><a href=\"a01353.html#a644718bb2fb240de962dc3c9a1fdf0dc\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray::empty</a></div><div class=\"ttdeci\">bool empty() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00683_source.html#l00074\">array.h:74</a></div></div>\n-<div class=\"ttc\" id=\"aa01353_html_a7a2762a78af05d23e5664a40720b3dc6\"><div class=\"ttname\"><a href=\"a01353.html#a7a2762a78af05d23e5664a40720b3dc6\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray::ConstArray</a></div><div class=\"ttdeci\">ConstArray(value_type const *ptr, size_type sizeArg)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00683_source.html#l00069\">array.h:69</a></div></div>\n-<div class=\"ttc\" id=\"aa01353_html_a9025ff89fc9afe7d9054abb58123bbda\"><div class=\"ttname\"><a href=\"a01353.html#a9025ff89fc9afe7d9054abb58123bbda\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray::reference</a></div><div class=\"ttdeci\">TYPE &amp; reference</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00683_source.html#l00062\">array.h:62</a></div></div>\n-<div class=\"ttc\" id=\"aa01353_html_a9f1927ae81f20205d93e0b86915f27d7\"><div class=\"ttname\"><a href=\"a01353.html#a9f1927ae81f20205d93e0b86915f27d7\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray::_size</a></div><div class=\"ttdeci\">size_type _size</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00683_source.html#l00101\">array.h:101</a></div></div>\n-<div class=\"ttc\" id=\"aa01353_html_aab75dd5fb27049f92ee6af282b29be8c\"><div class=\"ttname\"><a href=\"a01353.html#aab75dd5fb27049f92ee6af282b29be8c\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray::FindIndex</a></div><div class=\"ttdeci\">size_type FindIndex(value_type value) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00683_source.html#l00090\">array.h:90</a></div></div>\n-<div class=\"ttc\" id=\"aa01353_html_aafd1e3ba4133ad908bdbc99c4b356e5f\"><div class=\"ttname\"><a href=\"a01353.html#aafd1e3ba4133ad908bdbc99c4b356e5f\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray::size_type</a></div><div class=\"ttdeci\">int size_type</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00683_source.html#l00057\">array.h:57</a></div></div>\n-<div class=\"ttc\" id=\"aa01353_html_ac20b1b0146a3077fd2de652b07f94de9\"><div class=\"ttname\"><a href=\"a01353.html#ac20b1b0146a3077fd2de652b07f94de9\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray::const_reference</a></div><div class=\"ttdeci\">TYPE const  &amp; const_reference</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00683_source.html#l00059\">array.h:59</a></div></div>\n-<div class=\"ttc\" id=\"aa01353_html_accf9a4bd0c34d4a5f6a7dab66ea10cdc\"><div class=\"ttname\"><a href=\"a01353.html#accf9a4bd0c34d4a5f6a7dab66ea10cdc\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray::end</a></div><div class=\"ttdeci\">const_iterator end() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00683_source.html#l00078\">array.h:78</a></div></div>\n-<div class=\"ttc\" id=\"aa01353_html_adfa2f8bb0c1215f3b0ef976f122faf0d\"><div class=\"ttname\"><a href=\"a01353.html#adfa2f8bb0c1215f3b0ef976f122faf0d\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray::iterator</a></div><div class=\"ttdeci\">TYPE * iterator</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00683_source.html#l00063\">array.h:63</a></div></div>\n-<div class=\"ttc\" id=\"aa01353_html_aeec9d58ea099acc6be7c5655c229b050\"><div class=\"ttname\"><a href=\"a01353.html#aeec9d58ea099acc6be7c5655c229b050\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray::ConstArray</a></div><div class=\"ttdeci\">ConstArray()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00683_source.html#l00067\">array.h:67</a></div></div>\n-<div class=\"ttc\" id=\"aa01357_html\"><div class=\"ttname\"><a href=\"a01357.html\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::Array</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00683_source.html#l00105\">array.h:105</a></div></div>\n-<div class=\"ttc\" id=\"aa01357_html_a0caff2a05d659a02367f0f31ae29e45c\"><div class=\"ttname\"><a href=\"a01357.html#a0caff2a05d659a02367f0f31ae29e45c\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::Array::value_type</a></div><div class=\"ttdeci\">TYPE value_type</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00683_source.html#l00108\">array.h:108</a></div></div>\n-<div class=\"ttc\" id=\"aa01357_html_a4bc7a742b78a2528f413b38fe426a74c\"><div class=\"ttname\"><a href=\"a01357.html#a4bc7a742b78a2528f413b38fe426a74c\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::Array::operator[]</a></div><div class=\"ttdeci\">const_reference operator[](int index) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00683_source.html#l00124\">array.h:124</a></div></div>\n-<div class=\"ttc\" id=\"aa01357_html_a9025ff89fc9afe7d9054abb58123bbda\"><div class=\"ttname\"><a href=\"a01357.html#a9025ff89fc9afe7d9054abb58123bbda\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::Array::reference</a></div><div class=\"ttdeci\">TYPE &amp; reference</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00683_source.html#l00113\">array.h:113</a></div></div>\n-<div class=\"ttc\" id=\"aa01357_html_aafd1e3ba4133ad908bdbc99c4b356e5f\"><div class=\"ttname\"><a href=\"a01357.html#aafd1e3ba4133ad908bdbc99c4b356e5f\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::Array::size_type</a></div><div class=\"ttdeci\">int size_type</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00683_source.html#l00109\">array.h:109</a></div></div>\n-<div class=\"ttc\" id=\"aa01357_html_ac20b1b0146a3077fd2de652b07f94de9\"><div class=\"ttname\"><a href=\"a01357.html#ac20b1b0146a3077fd2de652b07f94de9\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::Array::const_reference</a></div><div class=\"ttdeci\">TYPE const  &amp; const_reference</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00683_source.html#l00111\">array.h:111</a></div></div>\n-<div class=\"ttc\" id=\"aa01357_html_acad38d52497a975bfb6f2f6acd76631f\"><div class=\"ttname\"><a href=\"a01357.html#acad38d52497a975bfb6f2f6acd76631f\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::Array::end</a></div><div class=\"ttdeci\">iterator end()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00683_source.html#l00136\">array.h:136</a></div></div>\n-<div class=\"ttc\" id=\"aa01357_html_ad69bd11391be1a1dba5c8202259664f8\"><div class=\"ttname\"><a href=\"a01357.html#ad69bd11391be1a1dba5c8202259664f8\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::Array::begin</a></div><div class=\"ttdeci\">iterator begin()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00683_source.html#l00132\">array.h:132</a></div></div>\n-<div class=\"ttc\" id=\"aa01357_html_adbe98cd78a59ce56cb45c2239136cc10\"><div class=\"ttname\"><a href=\"a01357.html#adbe98cd78a59ce56cb45c2239136cc10\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::Array::Array</a></div><div class=\"ttdeci\">Array(value_type *ptr, size_type sizeArg)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00683_source.html#l00120\">array.h:120</a></div></div>\n-<div class=\"ttc\" id=\"aa01357_html_adfa2f8bb0c1215f3b0ef976f122faf0d\"><div class=\"ttname\"><a href=\"a01357.html#adfa2f8bb0c1215f3b0ef976f122faf0d\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::Array::iterator</a></div><div class=\"ttdeci\">TYPE * iterator</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00683_source.html#l00114\">array.h:114</a></div></div>\n-<div class=\"ttc\" id=\"aa01357_html_ae96c1b25ff445d67d3c3e8d5858839a6\"><div class=\"ttname\"><a href=\"a01357.html#ae96c1b25ff445d67d3c3e8d5858839a6\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::Array::operator[]</a></div><div class=\"ttdeci\">reference operator[](int index)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00683_source.html#l00128\">array.h:128</a></div></div>\n-<div class=\"ttc\" id=\"aa01357_html_af9474cac29f3177edf5e8d72ea4a440c\"><div class=\"ttname\"><a href=\"a01357.html#af9474cac29f3177edf5e8d72ea4a440c\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::Array::Array</a></div><div class=\"ttdeci\">Array()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00683_source.html#l00118\">array.h:118</a></div></div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span><span class=\"keyword\">protected</span>:</div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01245.html#aa6f38a53fba4a64d600b9c4695477049\">   69</a></span>    <a class=\"code hl_function\" href=\"a01245.html#aa6f38a53fba4a64d600b9c4695477049\">GLVertexBuffer</a>(<span class=\"keywordtype\">int</span> numElements, <span class=\"keywordtype\">int</span> numVertices);</div>\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span> </div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01245.html#add23d9f5bbc918076d240287a9b3664f\">   73</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01245.html#add23d9f5bbc918076d240287a9b3664f\">allocate</a>();</div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span> </div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span>    <span class=\"keywordtype\">int</span> _numElements;</div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span>    <span class=\"keywordtype\">int</span> _numVertices;</div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span>    GLuint _vbo;</div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span> </div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>}  <span class=\"comment\">// end namespace Osd</span></div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span> </div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>}  <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span> </div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>}  <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span> </div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_GL_VERTEX_BUFFER_H</span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa01245_html\"><div class=\"ttname\"><a href=\"a01245.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLVertexBuffer</a></div><div class=\"ttdoc\">Concrete vertex buffer class for GLSL subdivision and OpenGL drawing.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00683_source.html#l00044\">glVertexBuffer.h:44</a></div></div>\n+<div class=\"ttc\" id=\"aa01245_html_a2629b06f77082d1c67c50b03be4e465a\"><div class=\"ttname\"><a href=\"a01245.html#a2629b06f77082d1c67c50b03be4e465a\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLVertexBuffer::~GLVertexBuffer</a></div><div class=\"ttdeci\">~GLVertexBuffer()</div><div class=\"ttdoc\">Destructor.</div></div>\n+<div class=\"ttc\" id=\"aa01245_html_a6a642b61f5cf7ced73523798467735a5\"><div class=\"ttname\"><a href=\"a01245.html#a6a642b61f5cf7ced73523798467735a5\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLVertexBuffer::BindVBO</a></div><div class=\"ttdeci\">GLuint BindVBO(void *deviceContext=NULL)</div><div class=\"ttdoc\">Returns the GL buffer object.</div></div>\n+<div class=\"ttc\" id=\"aa01245_html_a77cee40767fd4936f20a8f9d9d9ea625\"><div class=\"ttname\"><a href=\"a01245.html#a77cee40767fd4936f20a8f9d9d9ea625\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLVertexBuffer::GetNumElements</a></div><div class=\"ttdeci\">int GetNumElements() const</div><div class=\"ttdoc\">Returns how many elements defined in this vertex buffer.</div></div>\n+<div class=\"ttc\" id=\"aa01245_html_a96601a091f8831823c4dd72b6c962f1b\"><div class=\"ttname\"><a href=\"a01245.html#a96601a091f8831823c4dd72b6c962f1b\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLVertexBuffer::UpdateData</a></div><div class=\"ttdeci\">void UpdateData(const float *src, int startVertex, int numVertices, void *deviceContext=NULL)</div></div>\n+<div class=\"ttc\" id=\"aa01245_html_aa6f38a53fba4a64d600b9c4695477049\"><div class=\"ttname\"><a href=\"a01245.html#aa6f38a53fba4a64d600b9c4695477049\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLVertexBuffer::GLVertexBuffer</a></div><div class=\"ttdeci\">GLVertexBuffer(int numElements, int numVertices)</div><div class=\"ttdoc\">Constructor.</div></div>\n+<div class=\"ttc\" id=\"aa01245_html_aaf4a32b8a414eff77000c584c2015cb7\"><div class=\"ttname\"><a href=\"a01245.html#aaf4a32b8a414eff77000c584c2015cb7\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLVertexBuffer::GetNumVertices</a></div><div class=\"ttdeci\">int GetNumVertices() const</div><div class=\"ttdoc\">Returns how many vertices allocated in this vertex buffer.</div></div>\n+<div class=\"ttc\" id=\"aa01245_html_abfb3fc6fd2278633f65442db6528c926\"><div class=\"ttname\"><a href=\"a01245.html#abfb3fc6fd2278633f65442db6528c926\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLVertexBuffer::Create</a></div><div class=\"ttdeci\">static GLVertexBuffer * Create(int numElements, int numVertices, void *deviceContext=NULL)</div><div class=\"ttdoc\">Creator. Returns NULL if error.</div></div>\n+<div class=\"ttc\" id=\"aa01245_html_add23d9f5bbc918076d240287a9b3664f\"><div class=\"ttname\"><a href=\"a01245.html#add23d9f5bbc918076d240287a9b3664f\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLVertexBuffer::allocate</a></div><div class=\"ttdeci\">bool allocate()</div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bd5473d7d5841d48919aaa9ad0cb1f9b.html\">vtr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00683.html\">array.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00683.html\">glVertexBuffer.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-array.h\n+glVertexBuffer.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2014 DreamWorks Animation LLC.\n+2// Copyright 2013 Pixar\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -23,236 +23,89 @@\n 17//\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n-24#ifndef OPENSUBDIV3_VTR_ARRAY_INTERFACE_H\n-25#define OPENSUBDIV3_VTR_ARRAY_INTERFACE_H\n-26\n-27#include \"../version.h\"\n-28\n-29#include <cassert>\n-30\n-31namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-32namespace OPENSUBDIV_VERSION {\n-33\n-34namespace Vtr {\n+24\n+25#ifndef OPENSUBDIV3_OSD_GL_VERTEX_BUFFER_H\n+26#define OPENSUBDIV3_OSD_GL_VERTEX_BUFFER_H\n+27\n+28#include \"../version.h\"\n+29\n+30#include \"../osd/opengl.h\"\n+31#include <cstddef>\n+32\n+33namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+34namespace OPENSUBDIV_VERSION {\n 35\n-36//\n-37// This class provides a simple array-like interface -- a subset std::\n-vector's interface -- for\n-38// a sequence of elements stored in contiguous memory. It provides a unified\n-representation for\n-39// referencing data on the stack, all or a subset of std::vector<>, or\n-anywhere else in memory.\n-40//\n-41// Note that its members are head/size rather than begin/end as in std::\n-vector -- we frequently\n-42// need only the size for many queries, and that is most often what is stored\n-elsewhere in other\n-43// classes, so we hope to reduce unnecessary address arithmetic constructing\n-the interface and\n-44// accessing the size. The size type is also specifically 32-bit (rather than\n-size_t) to match\n-45// internal usage and avoid unnecessary conversion to/from 64-bit.\n-46//\n-47// Question:\n-48// Naming is at issue here... formerly called ArrayInterface until that was\n-shot down it has\n-49// been simplified to Array but needs to be distanced from std::array as it\n-DOES NOT store its\n-50// own memory and is simply an interface to memory stored elsewhere.\n-51//\n-52template <typename TYPE>\n-_\b5_\b3class _\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by {\n-54\n-55public:\n-_\b5_\b6 typedef TYPE _\bv_\ba_\bl_\bu_\be_\b__\bt_\by_\bp_\be;\n-_\b5_\b7 typedef int _\bs_\bi_\bz_\be_\b__\bt_\by_\bp_\be;\n-58\n-_\b5_\b9 typedef TYPE const& _\bc_\bo_\bn_\bs_\bt_\b__\br_\be_\bf_\be_\br_\be_\bn_\bc_\be;\n-_\b6_\b0 typedef TYPE const* _\bc_\bo_\bn_\bs_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br;\n-61\n-_\b6_\b2 typedef TYPE& _\br_\be_\bf_\be_\br_\be_\bn_\bc_\be;\n-_\b6_\b3 typedef TYPE* _\bi_\bt_\be_\br_\ba_\bt_\bo_\br;\n-64\n-65public:\n+36namespace Osd {\n+37\n+_\b4_\b4class _\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br {\n+45public:\n+_\b4_\b7 static _\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br * _\bC_\br_\be_\ba_\bt_\be(int numElements, int numVertices,\n+48 void *deviceContext = NULL);\n+49\n+_\b5_\b1 _\b~_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br();\n+52\n+_\b5_\b5 void _\bU_\bp_\bd_\ba_\bt_\be_\bD_\ba_\bt_\ba(const float *src, int startVertex, int numVertices,\n+56 void *deviceContext = NULL);\n+57\n+_\b5_\b9 int _\bG_\be_\bt_\bN_\bu_\bm_\bE_\bl_\be_\bm_\be_\bn_\bt_\bs() const;\n+60\n+_\b6_\b2 int _\bG_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs() const;\n+63\n+_\b6_\b5 GLuint _\bB_\bi_\bn_\bd_\bV_\bB_\bO(void *deviceContext = NULL);\n 66\n-_\b6_\b7 _\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by() : _\b__\bb_\be_\bg_\bi_\bn(0), _\b__\bs_\bi_\bz_\be(0) { }\n-68\n-_\b6_\b9 _\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by(_\bv_\ba_\bl_\bu_\be_\b__\bt_\by_\bp_\be const * ptr, _\bs_\bi_\bz_\be_\b__\bt_\by_\bp_\be sizeArg) :\n-70 _\b__\bb_\be_\bg_\bi_\bn(ptr), _\b__\bs_\bi_\bz_\be(sizeArg) { }\n-71\n-_\b7_\b2 _\bs_\bi_\bz_\be_\b__\bt_\by_\bp_\be _\bs_\bi_\bz_\be() const { return _\b__\bs_\bi_\bz_\be; }\n-73\n-_\b7_\b4 bool _\be_\bm_\bp_\bt_\by() const { return _\b__\bs_\bi_\bz_\be==0; }\n-75\n-_\b7_\b6 _\bc_\bo_\bn_\bs_\bt_\b__\br_\be_\bf_\be_\br_\be_\bn_\bc_\be _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b](int index) const { return _\b__\bb_\be_\bg_\bi_\bn[index]; }\n-_\b7_\b7 _\bc_\bo_\bn_\bs_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br _\bb_\be_\bg_\bi_\bn() const { return _\b__\bb_\be_\bg_\bi_\bn; }\n-_\b7_\b8 _\bc_\bo_\bn_\bs_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br _\be_\bn_\bd() const { return _\b__\bb_\be_\bg_\bi_\bn + _\b__\bs_\bi_\bz_\be; }\n-79\n-_\b8_\b0 _\bs_\bi_\bz_\be_\b__\bt_\by_\bp_\be _\bF_\bi_\bn_\bd_\bI_\bn_\bd_\be_\bx_\bI_\bn_\b4_\bT_\bu_\bp_\bl_\be(_\bv_\ba_\bl_\bu_\be_\b__\bt_\by_\bp_\be value) const {\n-81 assert(_\b__\bs_\bi_\bz_\be>=4);\n-82 if (value == _\b__\bb_\be_\bg_\bi_\bn[0]) return 0;\n-83 if (value == _\b__\bb_\be_\bg_\bi_\bn[1]) return 1;\n-84 if (value == _\b__\bb_\be_\bg_\bi_\bn[2]) return 2;\n-85 if (value == _\b__\bb_\be_\bg_\bi_\bn[3]) return 3;\n-86 assert(\"FindIndexIn4Tuple() did not find expected value!\" == 0);\n-87 return -1;\n-88 }\n-89\n-_\b9_\b0 _\bs_\bi_\bz_\be_\b__\bt_\by_\bp_\be _\bF_\bi_\bn_\bd_\bI_\bn_\bd_\be_\bx(_\bv_\ba_\bl_\bu_\be_\b__\bt_\by_\bp_\be value) const {\n-91 for (_\bs_\bi_\bz_\be_\b__\bt_\by_\bp_\be i=0; i<_\bs_\bi_\bz_\be(); ++i) {\n-92 if (value==_\b__\bb_\be_\bg_\bi_\bn[i]) {\n-93 return i;\n-94 }\n-95 }\n-96 return -1;\n-97 }\n-98\n-99protected:\n-_\b1_\b0_\b0 _\bv_\ba_\bl_\bu_\be_\b__\bt_\by_\bp_\be const * _\b__\bb_\be_\bg_\bi_\bn;\n-_\b1_\b0_\b1 _\bs_\bi_\bz_\be_\b__\bt_\by_\bp_\be _\b__\bs_\bi_\bz_\be;\n-102};\n-103\n-104template <typename TYPE>\n-_\b1_\b0_\b5class _\bA_\br_\br_\ba_\by : public _\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by<TYPE> {\n-106\n-107public:\n-_\b1_\b0_\b8 typedef TYPE _\bv_\ba_\bl_\bu_\be_\b__\bt_\by_\bp_\be;\n-_\b1_\b0_\b9 typedef int _\bs_\bi_\bz_\be_\b__\bt_\by_\bp_\be;\n-110\n-_\b1_\b1_\b1 typedef TYPE const& _\bc_\bo_\bn_\bs_\bt_\b__\br_\be_\bf_\be_\br_\be_\bn_\bc_\be;\n-112\n-_\b1_\b1_\b3 typedef TYPE& _\br_\be_\bf_\be_\br_\be_\bn_\bc_\be;\n-_\b1_\b1_\b4 typedef TYPE* _\bi_\bt_\be_\br_\ba_\bt_\bo_\br;\n-115\n-116public:\n-117\n-_\b1_\b1_\b8 _\bA_\br_\br_\ba_\by() : _\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by<TYPE>() { }\n-119\n-_\b1_\b2_\b0 _\bA_\br_\br_\ba_\by(_\bv_\ba_\bl_\bu_\be_\b__\bt_\by_\bp_\be * ptr, _\bs_\bi_\bz_\be_\b__\bt_\by_\bp_\be sizeArg) : _\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by<TYPE>(ptr, sizeArg)\n-{ }\n-121\n-122public:\n-123\n-_\b1_\b2_\b4 _\bc_\bo_\bn_\bs_\bt_\b__\br_\be_\bf_\be_\br_\be_\bn_\bc_\be _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b](int index) const {\n-125 return _\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by_\b<_\bT_\bY_\bP_\bE_\b>_\b:_\b:_\b__\bb_\be_\bg_\bi_\bn[index];\n-126 }\n-127\n-_\b1_\b2_\b8 _\br_\be_\bf_\be_\br_\be_\bn_\bc_\be _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b](int index) {\n-129 return const_cast<_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be>(_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by_\b<_\bT_\bY_\bP_\bE_\b>_\b:_\b:_\b__\bb_\be_\bg_\bi_\bn[index]);\n-130 }\n-131\n-_\b1_\b3_\b2 _\bi_\bt_\be_\br_\ba_\bt_\bo_\br _\bb_\be_\bg_\bi_\bn() {\n-133 return const_cast<_\bi_\bt_\be_\br_\ba_\bt_\bo_\br>(_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by_\b<_\bT_\bY_\bP_\bE_\b>_\b:_\b:_\b__\bb_\be_\bg_\bi_\bn);\n-134 }\n-135\n-_\b1_\b3_\b6 _\bi_\bt_\be_\br_\ba_\bt_\bo_\br _\be_\bn_\bd() {\n-137 return const_cast<_\bi_\bt_\be_\br_\ba_\bt_\bo_\br>(_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by_\b<_\bT_\bY_\bP_\bE_\b>_\b:_\b:_\b__\bb_\be_\bg_\bi_\bn +\n-138 _\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by_\b<_\bT_\bY_\bP_\bE_\b>_\b:_\b:_\b__\bs_\bi_\bz_\be);\n-139 }\n-140};\n-141\n-142} // end namespace Vtr\n-143\n-144} // end namespace OPENSUBDIV_VERSION\n-145using namespace OPENSUBDIV_VERSION;\n-146} // end namespace OpenSubdiv\n-147\n-148#endif /* OPENSUBDIV3_VTR_ARRAY_INTERFACE_H */\n+67protected:\n+_\b6_\b9 _\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br(int numElements, int numVertices);\n+70\n+_\b7_\b3 bool _\ba_\bl_\bl_\bo_\bc_\ba_\bt_\be();\n+74\n+75private:\n+76 int _numElements;\n+77 int _numVertices;\n+78 GLuint _vbo;\n+79};\n+80\n+81} // end namespace Osd\n+82\n+83} // end namespace OPENSUBDIV_VERSION\n+84using namespace OPENSUBDIV_VERSION;\n+85\n+86} // end namespace OpenSubdiv\n+87\n+88#endif // OPENSUBDIV3_OSD_GL_VERTEX_BUFFER_H\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b5_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by_\b:_\b:_\b__\bb_\be_\bg_\bi_\bn\n-value_type const * _begin\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b1_\b0_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b__\bt_\by_\bp_\be\n-TYPE value_type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b5_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by_\b:_\b:_\bb_\be_\bg_\bi_\bn\n-const_iterator begin() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b7_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]\n-const_reference operator[](int index) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b7_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by_\b:_\b:_\bc_\bo_\bn_\bs_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br\n-TYPE const * const_iterator\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b6_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by_\b:_\b:_\bF_\bi_\bn_\bd_\bI_\bn_\bd_\be_\bx_\bI_\bn_\b4_\bT_\bu_\bp_\bl_\be\n-size_type FindIndexIn4Tuple(value_type value) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b8_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by_\b:_\b:_\bs_\bi_\bz_\be\n-size_type size() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b7_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by_\b:_\b:_\be_\bm_\bp_\bt_\by\n-bool empty() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b7_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by\n-ConstArray(value_type const *ptr, size_type sizeArg)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b6_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by_\b:_\b:_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be\n-TYPE & reference\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b6_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by_\b:_\b:_\b__\bs_\bi_\bz_\be\n-size_type _size\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b1_\b0_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by_\b:_\b:_\bF_\bi_\bn_\bd_\bI_\bn_\bd_\be_\bx\n-size_type FindIndex(value_type value) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b9_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by_\b:_\b:_\bs_\bi_\bz_\be_\b__\bt_\by_\bp_\be\n-int size_type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b5_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by_\b:_\b:_\bc_\bo_\bn_\bs_\bt_\b__\br_\be_\bf_\be_\br_\be_\bn_\bc_\be\n-TYPE const & const_reference\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b5_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by_\b:_\b:_\be_\bn_\bd\n-const_iterator end() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b7_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by_\b:_\b:_\bi_\bt_\be_\br_\ba_\bt_\bo_\br\n-TYPE * iterator\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b6_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by\n-ConstArray()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b6_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bA_\br_\br_\ba_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b1_\b0_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bA_\br_\br_\ba_\by_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b__\bt_\by_\bp_\be\n-TYPE value_type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b1_\b0_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bA_\br_\br_\ba_\by_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]\n-const_reference operator[](int index) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b1_\b2_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bA_\br_\br_\ba_\by_\b:_\b:_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be\n-TYPE & reference\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b1_\b1_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bA_\br_\br_\ba_\by_\b:_\b:_\bs_\bi_\bz_\be_\b__\bt_\by_\bp_\be\n-int size_type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b1_\b0_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bA_\br_\br_\ba_\by_\b:_\b:_\bc_\bo_\bn_\bs_\bt_\b__\br_\be_\bf_\be_\br_\be_\bn_\bc_\be\n-TYPE const & const_reference\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b1_\b1_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bA_\br_\br_\ba_\by_\b:_\b:_\be_\bn_\bd\n-iterator end()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b1_\b3_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bA_\br_\br_\ba_\by_\b:_\b:_\bb_\be_\bg_\bi_\bn\n-iterator begin()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b1_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bA_\br_\br_\ba_\by_\b:_\b:_\bA_\br_\br_\ba_\by\n-Array(value_type *ptr, size_type sizeArg)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b1_\b2_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bA_\br_\br_\ba_\by_\b:_\b:_\bi_\bt_\be_\br_\ba_\bt_\bo_\br\n-TYPE * iterator\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b1_\b1_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bA_\br_\br_\ba_\by_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]\n-reference operator[](int index)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b1_\b2_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bA_\br_\br_\ba_\by_\b:_\b:_\bA_\br_\br_\ba_\by\n-Array()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b1_\b1_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+Concrete vertex buffer class for GLSL subdivision and OpenGL drawing.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh_\b:_\b4_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\b~_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+~GLVertexBuffer()\n+Destructor.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bB_\bi_\bn_\bd_\bV_\bB_\bO\n+GLuint BindVBO(void *deviceContext=NULL)\n+Returns the GL buffer object.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bE_\bl_\be_\bm_\be_\bn_\bt_\bs\n+int GetNumElements() const\n+Returns how many elements defined in this vertex buffer.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bU_\bp_\bd_\ba_\bt_\be_\bD_\ba_\bt_\ba\n+void UpdateData(const float *src, int startVertex, int numVertices, void\n+*deviceContext=NULL)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+GLVertexBuffer(int numElements, int numVertices)\n+Constructor.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n+int GetNumVertices() const\n+Returns how many vertices allocated in this vertex buffer.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n+static GLVertexBuffer * Create(int numElements, int numVertices, void\n+*deviceContext=NULL)\n+Creator. Returns NULL if error.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\ba_\bl_\bl_\bo_\bc_\ba_\bt_\be\n+bool allocate()\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bv_\bt_\br\n-    * _\ba_\br_\br_\ba_\by_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bg_\bl_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00689.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00689.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/vtr/fvarLevel.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/osd/mtlComputeEvaluator.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -88,43 +88,48 @@\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n+<a href=\"#nested-classes\">Classes</a> &#124;\n <a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">fvarLevel.h File Reference</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">mtlComputeEvaluator.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a01492_source.html\">../sdc/types.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00731_source.html\">../sdc/crease.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00734_source.html\">../sdc/options.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a01495_source.html\">../vtr/types.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00695_source.html\">../vtr/level.h</a>&quot;</code><br />\n-<code>#include &lt;vector&gt;</code><br />\n-<code>#include &lt;cassert&gt;</code><br />\n-<code>#include &lt;cstring&gt;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a01489_source.html\">../osd/types.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00764_source.html\">../osd/bufferDescriptor.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00698_source.html\">../osd/mtlCommon.h</a>&quot;</code><br />\n </div>\n <p><a href=\"a00689_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n+<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n+Classes</h2></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01289.html\">MTLStencilTable</a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01293.html\">MTLComputeEvaluator</a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+</table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00909\" id=\"r_a00909\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00909.html\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr</a></td></tr>\n+<tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far</a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bd5473d7d5841d48919aaa9ad0cb1f9b.html\">vtr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00689.html\">fvarLevel.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00689.html\">mtlComputeEvaluator.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,27 +1,29 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-fvarLevel.h File Reference\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+mtlComputeEvaluator.h File Reference\n #include \"../version.h\"\n-#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n-#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bc_\br_\be_\ba_\bs_\be_\b._\bh\"\n-#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh\"\n-#include \"_\b._\b._\b/_\bv_\bt_\br_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n-#include \"_\b._\b._\b/_\bv_\bt_\br_\b/_\bl_\be_\bv_\be_\bl_\b._\bh\"\n-#include <vector>\n-#include <cassert>\n-#include <cstring>\n+#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n+#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh\"\n+#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bm_\bt_\bl_\bC_\bo_\bm_\bm_\bo_\bn_\b._\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n+C\bCl\bla\bas\bss\bse\bes\bs\n+class \u00a0 _\bM_\bT_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n+\u00a0\n+class \u00a0 _\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n+\u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br\n+\u00a0\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bv_\bt_\br\n-    * _\bf_\bv_\ba_\br_\bL_\be_\bv_\be_\bl_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00689_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00689_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/vtr/fvarLevel.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/osd/mtlComputeEvaluator.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">fvarLevel.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">mtlComputeEvaluator.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00689.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2014 DreamWorks Animation LLC.</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2013 Pixar</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -118,443 +118,1139 @@\n <div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_VTR_FVAR_LEVEL_H</span></div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#define OPENSUBDIV3_VTR_FVAR_LEVEL_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span> </div>\n-<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span> </div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#include &quot;../sdc/types.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../sdc/crease.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../sdc/options.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &quot;../vtr/types.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"preprocessor\">#include &quot;../vtr/level.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span> </div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"preprocessor\">#include &lt;cassert&gt;</span></div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"preprocessor\">#include &lt;cstring&gt;</span></div>\n+<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_MTL_COMPUTE_EVALUATOR_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_MTL_COMPUTE_EVALUATOR_H</span></div>\n+<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n+<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../osd/types.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../osd/bufferDescriptor.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &quot;../osd/mtlCommon.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">@protocol </span>MTLDevice;</div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">@protocol </span>MTLBuffer;</div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"keyword\">@protocol </span>MTLLibrary;</div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">@protocol </span>MTLComputePipelineState;</div>\n <div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span> </div>\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span> </div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span> </div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"keyword\">namespace </span>Vtr {</div>\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span><span class=\"keyword\">namespace </span>internal {</div>\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span> </div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span><span class=\"comment\">//  FVarLevel:</span></div>\n-<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span><span class=\"comment\">//      A &quot;face-varying channel&quot; includes the topology for a set of face-varying</span></div>\n-<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span><span class=\"comment\">//  data, relative to the topology of the Level with which it is associated.</span></div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span><span class=\"comment\">//  Analogous to a set of vertices and face-vertices that define the topology for</span></div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span><span class=\"comment\">//  the geometry, a channel requires a set of &quot;values&quot; and &quot;face-values&quot;.  The</span></div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span><span class=\"comment\">//  &quot;values&quot; are indices of entries in a set of face-varying data, just as vertices</span></div>\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span><span class=\"comment\">//  are indices into a set of vertex data.  The face-values identify a value for</span></div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span><span class=\"comment\">//  each vertex of the face, and so define topology for the values that may be</span></div>\n-<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span><span class=\"comment\">//  unique to each channel.</span></div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span><span class=\"comment\">//  In addition to the value size and the vector of face-values (which matches the</span></div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span><span class=\"comment\">//  size of the geometry&#39;s face-vertices), tags are associated with each component</span></div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span><span class=\"comment\">//  to identify deviations of the face-varying topology from the vertex topology.</span></div>\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span><span class=\"comment\">//  And since there may be a one-to-many mapping between vertices and face-varying</span></div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span><span class=\"comment\">//  values, that mapping is also allocated.</span></div>\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span><span class=\"comment\">//  It turns out that the mapping used is able to completely encode the set of</span></div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span><span class=\"comment\">//  face-values and is more amenable to refinement.  Currently the face-values</span></div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span><span class=\"comment\">//  take up almost half the memory of this representation, so if memory does</span></div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span><span class=\"comment\">//  become a concern, we do not need to store them.  The only reason we do so now</span></div>\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span><span class=\"comment\">//  is that the face-value interface for specifying base topology and inspecting</span></div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span><span class=\"comment\">//  subsequent levels is very familiar to that of face-vertices for clients.  So</span></div>\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span><span class=\"comment\">//  having them available for such access is convenient.</span></div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span><span class=\"comment\">//  Regarding scope and access...</span></div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span><span class=\"comment\">//      Unclear at this early state, but leaning towards nesting this class within</span></div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span><span class=\"comment\">//  Level, given the intimate dependency between the two.</span></div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span><span class=\"comment\">//      Everything is being declared public for now to facilitate access until it&#39;s</span></div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span><span class=\"comment\">//  clearer how this functionality will be provided.</span></div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span><span class=\"keyword\">class </span>FVarLevel {</div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>    <span class=\"comment\">//  Component tags -- trying to minimize the types needed here:</span></div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>    <span class=\"comment\">//  Tag per Edge:</span></div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span>    <span class=\"comment\">//      - facilitates topological analysis around each vertex</span></div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>    <span class=\"comment\">//      - required during refinement to spawn one or more edge-values</span></div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>    <span class=\"keyword\">struct </span>ETag {</div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>        ETag() { }</div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span> </div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>        <span class=\"keywordtype\">void</span> clear() { std::memset(<span class=\"keyword\">this</span>, 0, <span class=\"keyword\">sizeof</span>(ETag)); }</div>\n-<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span> </div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>        <span class=\"keyword\">typedef</span> <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> ETagSize;</div>\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span> </div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>        ETagSize _mismatch : 1;  <span class=\"comment\">// local FVar topology does not match</span></div>\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span>        ETagSize _disctsV0 : 1;  <span class=\"comment\">// discontinuous at vertex 0</span></div>\n-<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span>        ETagSize _disctsV1 : 1;  <span class=\"comment\">// discontinuous at vertex 1</span></div>\n-<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>        ETagSize _linear   : 1;  <span class=\"comment\">// linear boundary constraints</span></div>\n-<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span> </div>\n-<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span>        Level::ETag combineWithLevelETag(Level::ETag) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span>    };</div>\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span> </div>\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span><span class=\"keyword\">namespace </span>Far {</div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span>    <span class=\"keyword\">class </span>PatchTable;</div>\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span>    <span class=\"keyword\">class </span>StencilTable;</div>\n+<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span>    <span class=\"keyword\">class </span>LimitStencilTable;</div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span>}</div>\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span> </div>\n+<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span><span class=\"keyword\">namespace </span>Osd {</div>\n+<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00050\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01289.html\">   50</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01289.html\">MTLStencilTable</a></div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span>{</div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span>    <span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> STENCIL_TABLE, <span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00054\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01289.html#ad96fc1ad226b46fec987d3b131a87a90\">   54</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01289.html\">MTLStencilTable</a>* <a class=\"code hl_function\" href=\"a01289.html#ad96fc1ad226b46fec987d3b131a87a90\">Create</a>(STENCIL_TABLE* stencilTable,</div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span>                                   DEVICE_CONTEXT context)</div>\n+<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span>    {</div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span>        <span class=\"keywordflow\">return</span> <span class=\"keyword\">new</span> <a class=\"code hl_class\" href=\"a01289.html\">MTLStencilTable</a>(stencilTable, context);</div>\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span> </div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span> </div>\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01289.html#a45e329ffe9fe4e32a1b21bfc89a6763f\">   61</a></span>    <a class=\"code hl_function\" href=\"a01289.html#a45e329ffe9fe4e32a1b21bfc89a6763f\">MTLStencilTable</a>(<a class=\"code hl_class\" href=\"a01065.html\">Far::StencilTable</a> <span class=\"keyword\">const</span>* stencilTable, <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context);</div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01289.html#a015dc72c3360b4841ee2b3feb06c106f\">   62</a></span>    <a class=\"code hl_function\" href=\"a01289.html#a015dc72c3360b4841ee2b3feb06c106f\">MTLStencilTable</a>(<a class=\"code hl_class\" href=\"a01081.html\">Far::LimitStencilTable</a> <span class=\"keyword\">const</span>* stencilTable, <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context);</div>\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01289.html#a1ace4fd3d4d8b840a5b48415175ea8bc\">   63</a></span>    <a class=\"code hl_function\" href=\"a01289.html#a1ace4fd3d4d8b840a5b48415175ea8bc\">~MTLStencilTable</a>();</div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span> </div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01289.html#a9b2f404d67fa83cd4715d2bbbeef6b4c\">   65</a></span>    id&lt;MTLBuffer&gt; <a class=\"code hl_function\" href=\"a01289.html#a9b2f404d67fa83cd4715d2bbbeef6b4c\">GetSizesBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _sizesBuffer; }</div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01289.html#aa1aa052f6513bda4c60b0ac423fb34cc\">   66</a></span>    id&lt;MTLBuffer&gt; <a class=\"code hl_function\" href=\"a01289.html#aa1aa052f6513bda4c60b0ac423fb34cc\">GetOffsetsBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _offsetsBuffer; }</div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01289.html#a860a80d6ea4ec9aec06280c39376683c\">   67</a></span>    id&lt;MTLBuffer&gt; <a class=\"code hl_function\" href=\"a01289.html#a860a80d6ea4ec9aec06280c39376683c\">GetIndicesBuffer</a>()<span class=\"keyword\"> const  </span>{ <span class=\"keywordflow\">return</span> _indicesBuffer; }</div>\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01289.html#ab22907c9cfe58b82ddfcad8241304500\">   68</a></span>    id&lt;MTLBuffer&gt; <a class=\"code hl_function\" href=\"a01289.html#ab22907c9cfe58b82ddfcad8241304500\">GetWeightsBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _weightsBuffer; }</div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01289.html#a13aa05ad0482bad5182feb3cd75b4168\">   69</a></span>    id&lt;MTLBuffer&gt; <a class=\"code hl_function\" href=\"a01289.html#a13aa05ad0482bad5182feb3cd75b4168\">GetDuWeightsBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _duWeightsBuffer; }</div>\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01289.html#ae7df9ee000b676b2afb8b2979c006494\">   70</a></span>    id&lt;MTLBuffer&gt; <a class=\"code hl_function\" href=\"a01289.html#ae7df9ee000b676b2afb8b2979c006494\">GetDvWeightsBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _dvWeightsBuffer; }</div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01289.html#a4dec46cc7a06c6c1687109e48f04e085\">   71</a></span>    id&lt;MTLBuffer&gt; <a class=\"code hl_function\" href=\"a01289.html#a4dec46cc7a06c6c1687109e48f04e085\">GetDuuWeightsBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _duuWeightsBuffer; }</div>\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01289.html#a6175e9daf70e8c27fb5122546df3fb1f\">   72</a></span>    id&lt;MTLBuffer&gt; <a class=\"code hl_function\" href=\"a01289.html#a6175e9daf70e8c27fb5122546df3fb1f\">GetDuvWeightsBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _duvWeightsBuffer; }</div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01289.html#a2f1e271aba868c291f9e0a9e9d1ace47\">   73</a></span>    id&lt;MTLBuffer&gt; <a class=\"code hl_function\" href=\"a01289.html#a2f1e271aba868c291f9e0a9e9d1ace47\">GetDvvWeightsBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _dvvWeightsBuffer; }</div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span> </div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01289.html#a65836d2070b943c8fecbad926d074de2\">   75</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01289.html#a65836d2070b943c8fecbad926d074de2\">GetNumStencils</a>()<span class=\"keyword\"> const  </span>{ <span class=\"keywordflow\">return</span> _numStencils; }</div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span> </div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span>    id&lt;MTLBuffer&gt; _sizesBuffer;</div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>    id&lt;MTLBuffer&gt; _offsetsBuffer;</div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span>    id&lt;MTLBuffer&gt; _indicesBuffer;</div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>    id&lt;MTLBuffer&gt; _weightsBuffer;</div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>    id&lt;MTLBuffer&gt; _duWeightsBuffer;</div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>    id&lt;MTLBuffer&gt; _dvWeightsBuffer;</div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span>    id&lt;MTLBuffer&gt; _duuWeightsBuffer;</div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>    id&lt;MTLBuffer&gt; _duvWeightsBuffer;</div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>    id&lt;MTLBuffer&gt; _dvvWeightsBuffer;</div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span> </div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>    <span class=\"keywordtype\">int</span> _numStencils;</div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00091\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html\">   91</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01293.html\">MTLComputeEvaluator</a></div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>{</div>\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#a2c24b70c9312d8dff3fecb9ddea52c44\">   94</a></span>    <span class=\"keyword\">typedef</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_typedef\" href=\"a01293.html#a2c24b70c9312d8dff3fecb9ddea52c44\">Instantiatable</a>;</div>\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span> </div>\n+<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#af4625ed1f27d57760257c382ee06a71d\">   96</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01293.html\">MTLComputeEvaluator</a> * <a class=\"code hl_function\" href=\"a01293.html#af4625ed1f27d57760257c382ee06a71d\">Create</a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>                                        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span>                                        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span>                                        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span>                                        <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context);</div>\n <div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span> </div>\n-<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span>    <span class=\"comment\">//  Tag per Value:</span></div>\n-<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span>    <span class=\"comment\">//      - informs both refinement and interpolation</span></div>\n-<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span>    <span class=\"comment\">//          - every value spawns a child value in refinement</span></div>\n-<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span>    <span class=\"comment\">//      - includes a subset of Level::VTag to be later combined with a VTag</span></div>\n-<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span>    <span class=\"keyword\">struct </span>ValueTag {</div>\n-<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span>        ValueTag() { }</div>\n+<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#af56350dbfd2ba2396625e8f2cf8d9ed1\">  102</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01293.html\">MTLComputeEvaluator</a> * <a class=\"code hl_function\" href=\"a01293.html#af56350dbfd2ba2396625e8f2cf8d9ed1\">Create</a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span>                                        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span>                                        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span>                                        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span>                                        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span>                                        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span>                                        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span>                                        <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context);</div>\n <div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span> </div>\n-<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span>        <span class=\"keywordtype\">void</span> clear() { std::memset(<span class=\"keyword\">this</span>, 0, <span class=\"keyword\">sizeof</span>(ValueTag)); }</div>\n-<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span> </div>\n-<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span>        <span class=\"keywordtype\">bool</span> isMismatch()<span class=\"keyword\"> const    </span>{ <span class=\"keywordflow\">return</span> _mismatch; }</div>\n-<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span>        <span class=\"keywordtype\">bool</span> isCrease()<span class=\"keyword\"> const      </span>{ <span class=\"keywordflow\">return</span> _crease; }</div>\n-<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span>        <span class=\"keywordtype\">bool</span> isCorner()<span class=\"keyword\"> const      </span>{ <span class=\"keywordflow\">return</span> !_crease; }</div>\n-<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\">  116</span>        <span class=\"keywordtype\">bool</span> isSemiSharp()<span class=\"keyword\"> const   </span>{ <span class=\"keywordflow\">return</span> _semiSharp; }</div>\n-<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span>        <span class=\"keywordtype\">bool</span> isInfSharp()<span class=\"keyword\"> const    </span>{ <span class=\"keywordflow\">return</span> !_semiSharp &amp;&amp; !_crease; }</div>\n-<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\">  118</span>        <span class=\"keywordtype\">bool</span> isDepSharp()<span class=\"keyword\"> const    </span>{ <span class=\"keywordflow\">return</span> _depSharp; }</div>\n-<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span>        <span class=\"keywordtype\">bool</span> hasCreaseEnds()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _crease || _semiSharp; }</div>\n-<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span> </div>\n-<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\">  121</span>        <span class=\"keywordtype\">bool</span> hasInfSharpEdges()<span class=\"keyword\"> const   </span>{ <span class=\"keywordflow\">return</span> _infSharpEdges; }</div>\n-<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span>        <span class=\"keywordtype\">bool</span> hasInfIrregularity()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _infIrregular; }</div>\n-<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span> </div>\n-<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span>        <span class=\"keyword\">typedef</span> <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> ValueTagSize;</div>\n-<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span> </div>\n-<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span>        <span class=\"comment\">//  If there is no mismatch, no other members should be inspected</span></div>\n-<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span>        ValueTagSize _mismatch    : 1;  <span class=\"comment\">// local FVar topology does not match</span></div>\n-<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span>        ValueTagSize _xordinary   : 1;  <span class=\"comment\">// local FVar topology is extra-ordinary</span></div>\n-<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span>        ValueTagSize _nonManifold : 1;  <span class=\"comment\">// local FVar topology is non-manifold</span></div>\n-<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span>        ValueTagSize _crease      : 1;  <span class=\"comment\">// value is a crease, otherwise a corner</span></div>\n-<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\">  131</span>        ValueTagSize _semiSharp   : 1;  <span class=\"comment\">// value is a corner decaying to crease</span></div>\n-<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\">  132</span>        ValueTagSize _depSharp    : 1;  <span class=\"comment\">// value is a corner by dependency on another</span></div>\n-<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\">  133</span> </div>\n-<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\">  134</span>        ValueTagSize _infSharpEdges : 1;  <span class=\"comment\">// value is a corner by inf-sharp features</span></div>\n-<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\">  135</span>        ValueTagSize _infIrregular  : 1;  <span class=\"comment\">// value span includes inf-sharp irregularity</span></div>\n-<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\">  136</span> </div>\n-<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\">  137</span>        Level::VTag combineWithLevelVTag(Level::VTag) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\">  138</span> </div>\n-<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\">  139</span>        <span class=\"comment\">//  Alternate constructor and accessor for dealing with integer bits directly:</span></div>\n-<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\">  140</span>        <span class=\"keyword\">explicit</span> ValueTag(ValueTagSize bits) {</div>\n-<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\">  141</span>            std::memcpy(<span class=\"keyword\">this</span>, &amp;bits, <span class=\"keyword\">sizeof</span>(bits));</div>\n-<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span>        }</div>\n-<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\">  143</span>        ValueTagSize getBits()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\">  144</span>            ValueTagSize bits;</div>\n-<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\">  145</span>            std::memcpy(&amp;bits, <span class=\"keyword\">this</span>, <span class=\"keyword\">sizeof</span>(bits));</div>\n-<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\">  146</span>            <span class=\"keywordflow\">return</span> bits;</div>\n-<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\">  147</span>        }</div>\n-<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\">  148</span>    };</div>\n-<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\">  149</span> </div>\n-<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\">  150</span>    <span class=\"keyword\">typedef</span> Vtr::ConstArray&lt;ValueTag&gt; ConstValueTagArray;</div>\n-<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\">  151</span>    <span class=\"keyword\">typedef</span> Vtr::Array&lt;ValueTag&gt; ValueTagArray;</div>\n-<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\">  152</span> </div>\n-<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\">  153</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\">  154</span>    <span class=\"comment\">//  Simple struct containing the &quot;end faces&quot; of a crease, i.e. the faces which</span></div>\n-<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\">  155</span>    <span class=\"comment\">//  contain the FVar values to be used when interpolating the crease.  (Prefer</span></div>\n-<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\">  156</span>    <span class=\"comment\">//  the struct over std::pair for its member names)</span></div>\n-<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\">  157</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\">  158</span>    <span class=\"keyword\">struct </span>CreaseEndPair {</div>\n-<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\">  159</span>        <a class=\"code hl_typedef\" href=\"a00909.html#a97c1e0c5ac33f97e2b73fde56b56c363\">LocalIndex</a> _startFace;</div>\n-<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\">  160</span>        <a class=\"code hl_typedef\" href=\"a00909.html#a97c1e0c5ac33f97e2b73fde56b56c363\">LocalIndex</a> _endFace;</div>\n-<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\">  161</span>    };</div>\n-<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\">  162</span> </div>\n-<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\">  163</span>    <span class=\"keyword\">typedef</span> Vtr::ConstArray&lt;CreaseEndPair&gt; ConstCreaseEndPairArray;</div>\n-<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\">  164</span>    <span class=\"keyword\">typedef</span> Vtr::Array&lt;CreaseEndPair&gt; CreaseEndPairArray;</div>\n-<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\">  165</span> </div>\n-<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\">  166</span>    <span class=\"keyword\">typedef</span> <a class=\"code hl_typedef\" href=\"a00909.html#a97c1e0c5ac33f97e2b73fde56b56c363\">LocalIndex</a>      Sibling;</div>\n-<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\">  167</span> </div>\n-<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\">  168</span>    <span class=\"keyword\">typedef</span> <a class=\"code hl_typedef\" href=\"a00909.html#a175f8a210a75b8180bc7ec74459492c9\">ConstLocalIndexArray</a> ConstSiblingArray;</div>\n-<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\">  169</span>    <span class=\"keyword\">typedef</span> <a class=\"code hl_typedef\" href=\"a00909.html#a1e004d5c1e30ef69719d4083afe0f4ce\">LocalIndexArray</a> SiblingArray;</div>\n-<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\">  170</span> </div>\n-<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\">  172</span>    FVarLevel(Level <span class=\"keyword\">const</span>&amp; level);</div>\n-<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\">  173</span>    ~FVarLevel();</div>\n-<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\">  174</span> </div>\n-<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\">  175</span>    <span class=\"comment\">//  Queries for the entire channel:</span></div>\n-<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\">  176</span>    Level <span class=\"keyword\">const</span>&amp; getLevel()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _level; }</div>\n-<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span> </div>\n-<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\">  178</span>    <span class=\"keywordtype\">int</span> getNumValues()<span class=\"keyword\"> const          </span>{ <span class=\"keywordflow\">return</span> _valueCount; }</div>\n-<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\">  179</span>    <span class=\"keywordtype\">int</span> getNumFaceValuesTotal()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (<span class=\"keywordtype\">int</span>) _faceVertValues.size(); }</div>\n-<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\">  180</span> </div>\n-<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\">  181</span>    <span class=\"keywordtype\">bool</span> isLinear()<span class=\"keyword\"> const            </span>{ <span class=\"keywordflow\">return</span> _isLinear; }</div>\n-<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\">  182</span>    <span class=\"keywordtype\">bool</span> hasLinearBoundaries()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _hasLinearBoundaries; }</div>\n-<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\">  183</span>    <span class=\"keywordtype\">bool</span> hasSmoothBoundaries()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> ! _hasLinearBoundaries; }</div>\n-<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\">  184</span>    <span class=\"keywordtype\">bool</span> hasCreaseEnds()<span class=\"keyword\"> const       </span>{ <span class=\"keywordflow\">return</span> hasSmoothBoundaries(); }</div>\n-<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\">  185</span> </div>\n-<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\">  186</span>    Sdc::Options getOptions()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _options; }</div>\n-<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\">  187</span> </div>\n-<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\">  188</span>    <span class=\"comment\">//  Queries per face:</span></div>\n-<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\">  189</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a>  getFaceValues(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> fIndex) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\">  190</span>    <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a>       getFaceValues(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> fIndex);</div>\n-<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\">  191</span> </div>\n-<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\">  192</span>    <span class=\"comment\">//  Queries per edge:</span></div>\n-<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\">  193</span>    ETag getEdgeTag(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> eIndex)<span class=\"keyword\"> const          </span>{ <span class=\"keywordflow\">return</span> _edgeTags[eIndex]; }</div>\n-<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\">  194</span>    <span class=\"keywordtype\">bool</span> edgeTopologyMatches(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> eIndex)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> !getEdgeTag(eIndex)._mismatch; }</div>\n-<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\">  195</span> </div>\n-<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\">  196</span>    <span class=\"comment\">//  Queries per vertex (and its potential sibling values):</span></div>\n-<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\">  197</span>    <span class=\"keywordtype\">int</span>   getNumVertexValues(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> v)<span class=\"keyword\"> const                  </span>{ <span class=\"keywordflow\">return</span> _vertSiblingCounts[v]; }</div>\n-<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\">  198</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> getVertexValueOffset(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> v, Sibling i = 0)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _vertSiblingOffsets[v] + i; }</div>\n-<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\">  199</span> </div>\n-<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\">  200</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> getVertexValue(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> v, Sibling i = 0)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _vertValueIndices[getVertexValueOffset(v,i)]; }</div>\n-<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\">  201</span> </div>\n-<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\">  202</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> findVertexValueIndex(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertexIndex, <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> valueIndex) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\">  203</span> </div>\n-<div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\">  204</span>    <span class=\"comment\">//  Methods to access/modify array properties per vertex:</span></div>\n-<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\">  205</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a>  getVertexValues(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vIndex) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\">  206</span>    <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a>       getVertexValues(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vIndex);</div>\n-<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\">  207</span> </div>\n-<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\">  208</span>    ConstValueTagArray  getVertexValueTags(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vIndex) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\">  209</span>    ValueTagArray       getVertexValueTags(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vIndex);</div>\n-<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\">  210</span> </div>\n-<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\">  211</span>    ConstCreaseEndPairArray  getVertexValueCreaseEnds(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vIndex) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00212\" name=\"l00212\"></a><span class=\"lineno\">  212</span>    CreaseEndPairArray       getVertexValueCreaseEnds(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vIndex);</div>\n-<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\">  213</span> </div>\n-<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\">  214</span>    ConstSiblingArray  getVertexFaceSiblings(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vIndex) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\">  215</span>    SiblingArray       getVertexFaceSiblings(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vIndex);</div>\n-<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\">  216</span> </div>\n-<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\">  217</span>    <span class=\"comment\">//  Queries per value:</span></div>\n-<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\">  218</span>    ValueTag getValueTag(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> valueIndex)<span class=\"keyword\"> const          </span>{ <span class=\"keywordflow\">return</span> _vertValueTags[valueIndex]; }</div>\n-<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\">  219</span>    <span class=\"keywordtype\">bool</span>     valueTopologyMatches(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> valueIndex)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> !getValueTag(valueIndex)._mismatch; }</div>\n-<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\">  220</span> </div>\n-<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\">  221</span>    CreaseEndPair getValueCreaseEndPair(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> valueIndex)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _vertValueCreaseEnds[valueIndex]; }</div>\n-<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\">  222</span> </div>\n-<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\">  223</span>    <span class=\"comment\">//  Tag queries related to faces (use Level methods for those returning Level::VTag/ETag)</span></div>\n-<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\">  224</span>    <span class=\"keywordtype\">void</span> getFaceValueTags(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex, ValueTag valueTags[]) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\">  225</span> </div>\n-<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\">  226</span>    ValueTag getFaceCompositeValueTag(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\">  227</span> </div>\n-<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\">  228</span>    <span class=\"comment\">//  Higher-level topological queries, i.e. values in a neighborhood:</span></div>\n-<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\">  229</span>    <span class=\"keywordtype\">void</span> getEdgeFaceValues(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> eIndex, <span class=\"keywordtype\">int</span> fIncToEdge, <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> valuesPerVert[2]) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\">  230</span>    <span class=\"keywordtype\">void</span> getVertexEdgeValues(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vIndex, <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> valuesPerEdge[]) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\">  231</span>    <span class=\"keywordtype\">void</span> getVertexCreaseEndValues(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vIndex, Sibling sibling, <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> endValues[2]) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\">  232</span> </div>\n-<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\">  233</span>    <span class=\"comment\">//  Initialization and allocation helpers:</span></div>\n-<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\">  234</span>    <span class=\"keywordtype\">void</span> setOptions(Sdc::Options <span class=\"keyword\">const</span>&amp; options);</div>\n-<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\">  235</span>    <span class=\"keywordtype\">void</span> resizeVertexValues(<span class=\"keywordtype\">int</span> numVertexValues);</div>\n-<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\">  236</span>    <span class=\"keywordtype\">void</span> resizeValues(<span class=\"keywordtype\">int</span> numValues);</div>\n-<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\">  237</span>    <span class=\"keywordtype\">void</span> resizeComponents();</div>\n-<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\">  238</span> </div>\n-<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\">  239</span>    <span class=\"comment\">//  Topological analysis methods -- tagging and face-value population:</span></div>\n-<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\">  240</span>    <span class=\"keywordtype\">void</span> completeTopologyFromFaceValues(<span class=\"keywordtype\">int</span> regBoundaryValence);</div>\n-<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\">  241</span>    <span class=\"keywordtype\">void</span> initializeFaceValuesFromFaceVertices();</div>\n-<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\">  242</span>    <span class=\"keywordtype\">void</span> initializeFaceValuesFromVertexFaceSiblings();</div>\n-<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\">  243</span> </div>\n-<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\">  244</span>    <span class=\"keyword\">struct </span>ValueSpan;</div>\n-<div class=\"line\"><a id=\"l00245\" name=\"l00245\"></a><span class=\"lineno\">  245</span>    <span class=\"keywordtype\">void</span> gatherValueSpans(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vIndex, ValueSpan * vValueSpans) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\">  246</span> </div>\n-<div class=\"line\"><a id=\"l00247\" name=\"l00247\"></a><span class=\"lineno\">  247</span>    <span class=\"comment\">//  Debugging methods:</span></div>\n-<div class=\"line\"><a id=\"l00248\" name=\"l00248\"></a><span class=\"lineno\">  248</span>    <span class=\"keywordtype\">bool</span> validate() <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00249\" name=\"l00249\"></a><span class=\"lineno\">  249</span>    <span class=\"keywordtype\">void</span> print() <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00250\" name=\"l00250\"></a><span class=\"lineno\">  250</span>    <span class=\"keywordtype\">void</span> buildFaceVertexSiblingsFromVertexFaceSiblings(std::vector&lt;Sibling&gt;&amp; fvSiblings) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00251\" name=\"l00251\"></a><span class=\"lineno\">  251</span> </div>\n-<div class=\"line\"><a id=\"l00252\" name=\"l00252\"></a><span class=\"lineno\">  252</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00253\" name=\"l00253\"></a><span class=\"lineno\">  253</span>    <span class=\"comment\">//  Just as Refinements build Levels, FVarRefinements build FVarLevels...</span></div>\n-<div class=\"line\"><a id=\"l00254\" name=\"l00254\"></a><span class=\"lineno\">  254</span>    <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span>FVarRefinement;</div>\n-<div class=\"line\"><a id=\"l00255\" name=\"l00255\"></a><span class=\"lineno\">  255</span> </div>\n-<div class=\"line\"><a id=\"l00256\" name=\"l00256\"></a><span class=\"lineno\">  256</span>    Level <span class=\"keyword\">const</span> &amp; _level;</div>\n-<div class=\"line\"><a id=\"l00257\" name=\"l00257\"></a><span class=\"lineno\">  257</span> </div>\n-<div class=\"line\"><a id=\"l00258\" name=\"l00258\"></a><span class=\"lineno\">  258</span>    <span class=\"comment\">//  Linear interpolation options vary between channels:</span></div>\n-<div class=\"line\"><a id=\"l00259\" name=\"l00259\"></a><span class=\"lineno\">  259</span>    Sdc::Options _options;</div>\n-<div class=\"line\"><a id=\"l00260\" name=\"l00260\"></a><span class=\"lineno\">  260</span> </div>\n-<div class=\"line\"><a id=\"l00261\" name=\"l00261\"></a><span class=\"lineno\">  261</span>    <span class=\"keywordtype\">bool</span> _isLinear;</div>\n-<div class=\"line\"><a id=\"l00262\" name=\"l00262\"></a><span class=\"lineno\">  262</span>    <span class=\"keywordtype\">bool</span> _hasLinearBoundaries;</div>\n-<div class=\"line\"><a id=\"l00263\" name=\"l00263\"></a><span class=\"lineno\">  263</span>    <span class=\"keywordtype\">bool</span> _hasDependentSharpness;</div>\n-<div class=\"line\"><a id=\"l00264\" name=\"l00264\"></a><span class=\"lineno\">  264</span>    <span class=\"keywordtype\">int</span>  _valueCount;</div>\n-<div class=\"line\"><a id=\"l00265\" name=\"l00265\"></a><span class=\"lineno\">  265</span> </div>\n-<div class=\"line\"><a id=\"l00266\" name=\"l00266\"></a><span class=\"lineno\">  266</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00267\" name=\"l00267\"></a><span class=\"lineno\">  267</span>    <span class=\"comment\">//  Vectors recording face-varying topology including tags that help propagate</span></div>\n-<div class=\"line\"><a id=\"l00268\" name=\"l00268\"></a><span class=\"lineno\">  268</span>    <span class=\"comment\">//  data through the refinement hierarchy.  Vectors are not sparse but most use</span></div>\n-<div class=\"line\"><a id=\"l00269\" name=\"l00269\"></a><span class=\"lineno\">  269</span>    <span class=\"comment\">//  8-bit values relative to the local topology.</span></div>\n-<div class=\"line\"><a id=\"l00270\" name=\"l00270\"></a><span class=\"lineno\">  270</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00271\" name=\"l00271\"></a><span class=\"lineno\">  271</span>    <span class=\"comment\">//  The vector of face-values is actually redundant here, but is constructed as</span></div>\n-<div class=\"line\"><a id=\"l00272\" name=\"l00272\"></a><span class=\"lineno\">  272</span>    <span class=\"comment\">//  it is most convenient for clients.  It represents almost half the memory of</span></div>\n-<div class=\"line\"><a id=\"l00273\" name=\"l00273\"></a><span class=\"lineno\">  273</span>    <span class=\"comment\">//  the topology (4 32-bit integers per face) and not surprisingly, populating</span></div>\n-<div class=\"line\"><a id=\"l00274\" name=\"l00274\"></a><span class=\"lineno\">  274</span>    <span class=\"comment\">//  it takes a considerable amount of the refinement time (1/3).  We can reduce</span></div>\n-<div class=\"line\"><a id=\"l00275\" name=\"l00275\"></a><span class=\"lineno\">  275</span>    <span class=\"comment\">//  both if we are willing to compute these on demand for clients.</span></div>\n-<div class=\"line\"><a id=\"l00276\" name=\"l00276\"></a><span class=\"lineno\">  276</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00277\" name=\"l00277\"></a><span class=\"lineno\">  277</span>    <span class=\"comment\">//  Per-face (matches face-verts of corresponding level):</span></div>\n-<div class=\"line\"><a id=\"l00278\" name=\"l00278\"></a><span class=\"lineno\">  278</span>    std::vector&lt;Index&gt; _faceVertValues;</div>\n-<div class=\"line\"><a id=\"l00279\" name=\"l00279\"></a><span class=\"lineno\">  279</span> </div>\n-<div class=\"line\"><a id=\"l00280\" name=\"l00280\"></a><span class=\"lineno\">  280</span>    <span class=\"comment\">//  Per-edge:</span></div>\n-<div class=\"line\"><a id=\"l00281\" name=\"l00281\"></a><span class=\"lineno\">  281</span>    std::vector&lt;ETag&gt; _edgeTags;</div>\n-<div class=\"line\"><a id=\"l00282\" name=\"l00282\"></a><span class=\"lineno\">  282</span> </div>\n-<div class=\"line\"><a id=\"l00283\" name=\"l00283\"></a><span class=\"lineno\">  283</span>    <span class=\"comment\">//  Per-vertex:</span></div>\n-<div class=\"line\"><a id=\"l00284\" name=\"l00284\"></a><span class=\"lineno\">  284</span>    std::vector&lt;Sibling&gt;  _vertSiblingCounts;</div>\n-<div class=\"line\"><a id=\"l00285\" name=\"l00285\"></a><span class=\"lineno\">  285</span>    std::vector&lt;int&gt;      _vertSiblingOffsets;</div>\n-<div class=\"line\"><a id=\"l00286\" name=\"l00286\"></a><span class=\"lineno\">  286</span>    std::vector&lt;Sibling&gt;  _vertFaceSiblings;</div>\n-<div class=\"line\"><a id=\"l00287\" name=\"l00287\"></a><span class=\"lineno\">  287</span> </div>\n-<div class=\"line\"><a id=\"l00288\" name=\"l00288\"></a><span class=\"lineno\">  288</span>    <span class=\"comment\">//  Per-value:</span></div>\n-<div class=\"line\"><a id=\"l00289\" name=\"l00289\"></a><span class=\"lineno\">  289</span>    std::vector&lt;Index&gt;         _vertValueIndices;</div>\n-<div class=\"line\"><a id=\"l00290\" name=\"l00290\"></a><span class=\"lineno\">  290</span>    std::vector&lt;ValueTag&gt;      _vertValueTags;</div>\n-<div class=\"line\"><a id=\"l00291\" name=\"l00291\"></a><span class=\"lineno\">  291</span>    std::vector&lt;CreaseEndPair&gt; _vertValueCreaseEnds;</div>\n-<div class=\"line\"><a id=\"l00292\" name=\"l00292\"></a><span class=\"lineno\">  292</span>};</div>\n-<div class=\"line\"><a id=\"l00293\" name=\"l00293\"></a><span class=\"lineno\">  293</span> </div>\n-<div class=\"line\"><a id=\"l00294\" name=\"l00294\"></a><span class=\"lineno\">  294</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00295\" name=\"l00295\"></a><span class=\"lineno\">  295</span><span class=\"comment\">//  Access/modify the values associated with each face:</span></div>\n-<div class=\"line\"><a id=\"l00296\" name=\"l00296\"></a><span class=\"lineno\">  296</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00297\" name=\"l00297\"></a><span class=\"lineno\">  297</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a></div>\n-<div class=\"line\"><a id=\"l00298\" name=\"l00298\"></a><span class=\"lineno\">  298</span>FVarLevel::getFaceValues(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> fIndex)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00299\" name=\"l00299\"></a><span class=\"lineno\">  299</span> </div>\n-<div class=\"line\"><a id=\"l00300\" name=\"l00300\"></a><span class=\"lineno\">  300</span>    <span class=\"keywordtype\">int</span> vCount  = _level.getNumFaceVertices(fIndex);</div>\n-<div class=\"line\"><a id=\"l00301\" name=\"l00301\"></a><span class=\"lineno\">  301</span>    <span class=\"keywordtype\">int</span> vOffset = _level.getOffsetOfFaceVertices(fIndex);</div>\n-<div class=\"line\"><a id=\"l00302\" name=\"l00302\"></a><span class=\"lineno\">  302</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a>(&amp;_faceVertValues[vOffset], vCount);</div>\n-<div class=\"line\"><a id=\"l00303\" name=\"l00303\"></a><span class=\"lineno\">  303</span>}</div>\n-<div class=\"line\"><a id=\"l00304\" name=\"l00304\"></a><span class=\"lineno\">  304</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a></div>\n-<div class=\"line\"><a id=\"l00305\" name=\"l00305\"></a><span class=\"lineno\">  305</span>FVarLevel::getFaceValues(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> fIndex) {</div>\n-<div class=\"line\"><a id=\"l00306\" name=\"l00306\"></a><span class=\"lineno\">  306</span> </div>\n-<div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\">  307</span>    <span class=\"keywordtype\">int</span> vCount  = _level.getNumFaceVertices(fIndex);</div>\n-<div class=\"line\"><a id=\"l00308\" name=\"l00308\"></a><span class=\"lineno\">  308</span>    <span class=\"keywordtype\">int</span> vOffset = _level.getOffsetOfFaceVertices(fIndex);</div>\n-<div class=\"line\"><a id=\"l00309\" name=\"l00309\"></a><span class=\"lineno\">  309</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a>(&amp;_faceVertValues[vOffset], vCount);</div>\n-<div class=\"line\"><a id=\"l00310\" name=\"l00310\"></a><span class=\"lineno\">  310</span>}</div>\n-<div class=\"line\"><a id=\"l00311\" name=\"l00311\"></a><span class=\"lineno\">  311</span> </div>\n-<div class=\"line\"><a id=\"l00312\" name=\"l00312\"></a><span class=\"lineno\">  312</span><span class=\"keyword\">inline</span> FVarLevel::ConstSiblingArray</div>\n-<div class=\"line\"><a id=\"l00313\" name=\"l00313\"></a><span class=\"lineno\">  313</span>FVarLevel::getVertexFaceSiblings(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vIndex)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00314\" name=\"l00314\"></a><span class=\"lineno\">  314</span> </div>\n-<div class=\"line\"><a id=\"l00315\" name=\"l00315\"></a><span class=\"lineno\">  315</span>    <span class=\"keywordtype\">int</span> vCount  = _level.getNumVertexFaces(vIndex);</div>\n-<div class=\"line\"><a id=\"l00316\" name=\"l00316\"></a><span class=\"lineno\">  316</span>    <span class=\"keywordtype\">int</span> vOffset = _level.getOffsetOfVertexFaces(vIndex);</div>\n-<div class=\"line\"><a id=\"l00317\" name=\"l00317\"></a><span class=\"lineno\">  317</span>    <span class=\"keywordflow\">return</span> ConstSiblingArray(&amp;_vertFaceSiblings[vOffset], vCount);</div>\n-<div class=\"line\"><a id=\"l00318\" name=\"l00318\"></a><span class=\"lineno\">  318</span>}</div>\n-<div class=\"line\"><a id=\"l00319\" name=\"l00319\"></a><span class=\"lineno\">  319</span><span class=\"keyword\">inline</span> FVarLevel::SiblingArray</div>\n-<div class=\"line\"><a id=\"l00320\" name=\"l00320\"></a><span class=\"lineno\">  320</span>FVarLevel::getVertexFaceSiblings(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vIndex) {</div>\n-<div class=\"line\"><a id=\"l00321\" name=\"l00321\"></a><span class=\"lineno\">  321</span> </div>\n-<div class=\"line\"><a id=\"l00322\" name=\"l00322\"></a><span class=\"lineno\">  322</span>    <span class=\"keywordtype\">int</span> vCount  = _level.getNumVertexFaces(vIndex);</div>\n-<div class=\"line\"><a id=\"l00323\" name=\"l00323\"></a><span class=\"lineno\">  323</span>    <span class=\"keywordtype\">int</span> vOffset = _level.getOffsetOfVertexFaces(vIndex);</div>\n-<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\">  324</span>    <span class=\"keywordflow\">return</span> SiblingArray(&amp;_vertFaceSiblings[vOffset], vCount);</div>\n-<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\">  325</span>}</div>\n-<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\">  326</span> </div>\n-<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\">  327</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a></div>\n-<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\">  328</span>FVarLevel::getVertexValues(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vIndex)<span class=\"keyword\"> const</span></div>\n-<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\">  329</span><span class=\"keyword\"></span>{</div>\n-<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\">  330</span>    <span class=\"keywordtype\">int</span> vCount  = getNumVertexValues(vIndex);</div>\n-<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\">  331</span>    <span class=\"keywordtype\">int</span> vOffset = getVertexValueOffset(vIndex);</div>\n-<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\">  332</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a>(&amp;_vertValueIndices[vOffset], vCount);</div>\n-<div class=\"line\"><a id=\"l00333\" name=\"l00333\"></a><span class=\"lineno\">  333</span>}</div>\n-<div class=\"line\"><a id=\"l00334\" name=\"l00334\"></a><span class=\"lineno\">  334</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a></div>\n-<div class=\"line\"><a id=\"l00335\" name=\"l00335\"></a><span class=\"lineno\">  335</span>FVarLevel::getVertexValues(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vIndex)</div>\n-<div class=\"line\"><a id=\"l00336\" name=\"l00336\"></a><span class=\"lineno\">  336</span>{</div>\n-<div class=\"line\"><a id=\"l00337\" name=\"l00337\"></a><span class=\"lineno\">  337</span>    <span class=\"keywordtype\">int</span> vCount  = getNumVertexValues(vIndex);</div>\n-<div class=\"line\"><a id=\"l00338\" name=\"l00338\"></a><span class=\"lineno\">  338</span>    <span class=\"keywordtype\">int</span> vOffset = getVertexValueOffset(vIndex);</div>\n-<div class=\"line\"><a id=\"l00339\" name=\"l00339\"></a><span class=\"lineno\">  339</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a>(&amp;_vertValueIndices[vOffset], vCount);</div>\n-<div class=\"line\"><a id=\"l00340\" name=\"l00340\"></a><span class=\"lineno\">  340</span>}</div>\n-<div class=\"line\"><a id=\"l00341\" name=\"l00341\"></a><span class=\"lineno\">  341</span> </div>\n-<div class=\"line\"><a id=\"l00342\" name=\"l00342\"></a><span class=\"lineno\">  342</span><span class=\"keyword\">inline</span> FVarLevel::ConstValueTagArray</div>\n-<div class=\"line\"><a id=\"l00343\" name=\"l00343\"></a><span class=\"lineno\">  343</span>FVarLevel::getVertexValueTags(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vIndex)<span class=\"keyword\"> const</span></div>\n-<div class=\"line\"><a id=\"l00344\" name=\"l00344\"></a><span class=\"lineno\">  344</span><span class=\"keyword\"></span>{</div>\n-<div class=\"line\"><a id=\"l00345\" name=\"l00345\"></a><span class=\"lineno\">  345</span>    <span class=\"keywordtype\">int</span> vCount  = getNumVertexValues(vIndex);</div>\n-<div class=\"line\"><a id=\"l00346\" name=\"l00346\"></a><span class=\"lineno\">  346</span>    <span class=\"keywordtype\">int</span> vOffset = getVertexValueOffset(vIndex);</div>\n-<div class=\"line\"><a id=\"l00347\" name=\"l00347\"></a><span class=\"lineno\">  347</span>    <span class=\"keywordflow\">return</span> ConstValueTagArray(&amp;_vertValueTags[vOffset], vCount);</div>\n-<div class=\"line\"><a id=\"l00348\" name=\"l00348\"></a><span class=\"lineno\">  348</span>}</div>\n-<div class=\"line\"><a id=\"l00349\" name=\"l00349\"></a><span class=\"lineno\">  349</span><span class=\"keyword\">inline</span> FVarLevel::ValueTagArray</div>\n-<div class=\"line\"><a id=\"l00350\" name=\"l00350\"></a><span class=\"lineno\">  350</span>FVarLevel::getVertexValueTags(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vIndex)</div>\n-<div class=\"line\"><a id=\"l00351\" name=\"l00351\"></a><span class=\"lineno\">  351</span>{</div>\n-<div class=\"line\"><a id=\"l00352\" name=\"l00352\"></a><span class=\"lineno\">  352</span>    <span class=\"keywordtype\">int</span> vCount  = getNumVertexValues(vIndex);</div>\n-<div class=\"line\"><a id=\"l00353\" name=\"l00353\"></a><span class=\"lineno\">  353</span>    <span class=\"keywordtype\">int</span> vOffset = getVertexValueOffset(vIndex);</div>\n-<div class=\"line\"><a id=\"l00354\" name=\"l00354\"></a><span class=\"lineno\">  354</span>    <span class=\"keywordflow\">return</span> ValueTagArray(&amp;_vertValueTags[vOffset], vCount);</div>\n-<div class=\"line\"><a id=\"l00355\" name=\"l00355\"></a><span class=\"lineno\">  355</span>}</div>\n-<div class=\"line\"><a id=\"l00356\" name=\"l00356\"></a><span class=\"lineno\">  356</span> </div>\n-<div class=\"line\"><a id=\"l00357\" name=\"l00357\"></a><span class=\"lineno\">  357</span><span class=\"keyword\">inline</span> FVarLevel::ConstCreaseEndPairArray</div>\n-<div class=\"line\"><a id=\"l00358\" name=\"l00358\"></a><span class=\"lineno\">  358</span>FVarLevel::getVertexValueCreaseEnds(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vIndex)<span class=\"keyword\"> const</span></div>\n-<div class=\"line\"><a id=\"l00359\" name=\"l00359\"></a><span class=\"lineno\">  359</span><span class=\"keyword\"></span>{</div>\n-<div class=\"line\"><a id=\"l00360\" name=\"l00360\"></a><span class=\"lineno\">  360</span>    <span class=\"keywordtype\">int</span> vCount  = getNumVertexValues(vIndex);</div>\n-<div class=\"line\"><a id=\"l00361\" name=\"l00361\"></a><span class=\"lineno\">  361</span>    <span class=\"keywordtype\">int</span> vOffset = getVertexValueOffset(vIndex);</div>\n-<div class=\"line\"><a id=\"l00362\" name=\"l00362\"></a><span class=\"lineno\">  362</span>    <span class=\"keywordflow\">return</span> ConstCreaseEndPairArray(&amp;_vertValueCreaseEnds[vOffset], vCount);</div>\n-<div class=\"line\"><a id=\"l00363\" name=\"l00363\"></a><span class=\"lineno\">  363</span>}</div>\n-<div class=\"line\"><a id=\"l00364\" name=\"l00364\"></a><span class=\"lineno\">  364</span><span class=\"keyword\">inline</span> FVarLevel::CreaseEndPairArray</div>\n-<div class=\"line\"><a id=\"l00365\" name=\"l00365\"></a><span class=\"lineno\">  365</span>FVarLevel::getVertexValueCreaseEnds(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vIndex)</div>\n-<div class=\"line\"><a id=\"l00366\" name=\"l00366\"></a><span class=\"lineno\">  366</span>{</div>\n-<div class=\"line\"><a id=\"l00367\" name=\"l00367\"></a><span class=\"lineno\">  367</span>    <span class=\"keywordtype\">int</span> vCount  = getNumVertexValues(vIndex);</div>\n-<div class=\"line\"><a id=\"l00368\" name=\"l00368\"></a><span class=\"lineno\">  368</span>    <span class=\"keywordtype\">int</span> vOffset = getVertexValueOffset(vIndex);</div>\n-<div class=\"line\"><a id=\"l00369\" name=\"l00369\"></a><span class=\"lineno\">  369</span>    <span class=\"keywordflow\">return</span> CreaseEndPairArray(&amp;_vertValueCreaseEnds[vOffset], vCount);</div>\n-<div class=\"line\"><a id=\"l00370\" name=\"l00370\"></a><span class=\"lineno\">  370</span>}</div>\n-<div class=\"line\"><a id=\"l00371\" name=\"l00371\"></a><span class=\"lineno\">  371</span> </div>\n-<div class=\"line\"><a id=\"l00372\" name=\"l00372\"></a><span class=\"lineno\">  372</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a></div>\n-<div class=\"line\"><a id=\"l00373\" name=\"l00373\"></a><span class=\"lineno\">  373</span>FVarLevel::findVertexValueIndex(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertexIndex, <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> valueIndex)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00374\" name=\"l00374\"></a><span class=\"lineno\">  374</span> </div>\n-<div class=\"line\"><a id=\"l00375\" name=\"l00375\"></a><span class=\"lineno\">  375</span>    <span class=\"keywordflow\">if</span> (_level.getDepth() &gt; 0) <span class=\"keywordflow\">return</span> valueIndex;</div>\n-<div class=\"line\"><a id=\"l00376\" name=\"l00376\"></a><span class=\"lineno\">  376</span> </div>\n-<div class=\"line\"><a id=\"l00377\" name=\"l00377\"></a><span class=\"lineno\">  377</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vvIndex = getVertexValueOffset(vertexIndex);</div>\n-<div class=\"line\"><a id=\"l00378\" name=\"l00378\"></a><span class=\"lineno\">  378</span>    <span class=\"keywordflow\">while</span> (_vertValueIndices[vvIndex] != valueIndex) {</div>\n-<div class=\"line\"><a id=\"l00379\" name=\"l00379\"></a><span class=\"lineno\">  379</span>        ++ vvIndex;</div>\n-<div class=\"line\"><a id=\"l00380\" name=\"l00380\"></a><span class=\"lineno\">  380</span>    }</div>\n-<div class=\"line\"><a id=\"l00381\" name=\"l00381\"></a><span class=\"lineno\">  381</span>    <span class=\"keywordflow\">return</span> vvIndex;</div>\n-<div class=\"line\"><a id=\"l00382\" name=\"l00382\"></a><span class=\"lineno\">  382</span>}</div>\n-<div class=\"line\"><a id=\"l00383\" name=\"l00383\"></a><span class=\"lineno\">  383</span> </div>\n-<div class=\"line\"><a id=\"l00384\" name=\"l00384\"></a><span class=\"lineno\">  384</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00385\" name=\"l00385\"></a><span class=\"lineno\">  385</span><span class=\"comment\">//  Methods related to tagging:</span></div>\n-<div class=\"line\"><a id=\"l00386\" name=\"l00386\"></a><span class=\"lineno\">  386</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00387\" name=\"l00387\"></a><span class=\"lineno\">  387</span><span class=\"keyword\">inline</span> Level::ETag</div>\n-<div class=\"line\"><a id=\"l00388\" name=\"l00388\"></a><span class=\"lineno\">  388</span>FVarLevel::ETag::combineWithLevelETag(Level::ETag levelTag)<span class=\"keyword\"> const</span></div>\n-<div class=\"line\"><a id=\"l00389\" name=\"l00389\"></a><span class=\"lineno\">  389</span><span class=\"keyword\"></span>{</div>\n-<div class=\"line\"><a id=\"l00390\" name=\"l00390\"></a><span class=\"lineno\">  390</span>    <span class=\"keywordflow\">if</span> (this-&gt;_mismatch) {</div>\n-<div class=\"line\"><a id=\"l00391\" name=\"l00391\"></a><span class=\"lineno\">  391</span>        levelTag._boundary = <span class=\"keyword\">true</span>;</div>\n-<div class=\"line\"><a id=\"l00392\" name=\"l00392\"></a><span class=\"lineno\">  392</span>        levelTag._infSharp = <span class=\"keyword\">true</span>;</div>\n-<div class=\"line\"><a id=\"l00393\" name=\"l00393\"></a><span class=\"lineno\">  393</span>    }</div>\n-<div class=\"line\"><a id=\"l00394\" name=\"l00394\"></a><span class=\"lineno\">  394</span>    <span class=\"keywordflow\">return</span> levelTag;</div>\n-<div class=\"line\"><a id=\"l00395\" name=\"l00395\"></a><span class=\"lineno\">  395</span>}</div>\n-<div class=\"line\"><a id=\"l00396\" name=\"l00396\"></a><span class=\"lineno\">  396</span><span class=\"keyword\">inline</span> Level::VTag</div>\n-<div class=\"line\"><a id=\"l00397\" name=\"l00397\"></a><span class=\"lineno\">  397</span>FVarLevel::ValueTag::combineWithLevelVTag(Level::VTag levelTag)<span class=\"keyword\"> const</span></div>\n-<div class=\"line\"><a id=\"l00398\" name=\"l00398\"></a><span class=\"lineno\">  398</span><span class=\"keyword\"></span>{</div>\n-<div class=\"line\"><a id=\"l00399\" name=\"l00399\"></a><span class=\"lineno\">  399</span>    <span class=\"keywordflow\">if</span> (this-&gt;_mismatch) {</div>\n-<div class=\"line\"><a id=\"l00400\" name=\"l00400\"></a><span class=\"lineno\">  400</span>        <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00401\" name=\"l00401\"></a><span class=\"lineno\">  401</span>        <span class=\"comment\">//  Semi-sharp FVar values are always tagged and treated as corners</span></div>\n-<div class=\"line\"><a id=\"l00402\" name=\"l00402\"></a><span class=\"lineno\">  402</span>        <span class=\"comment\">//  (at least three sharp edges (two boundary edges and one interior</span></div>\n-<div class=\"line\"><a id=\"l00403\" name=\"l00403\"></a><span class=\"lineno\">  403</span>        <span class=\"comment\">//  semi-sharp) and/or vertex is semi-sharp) until the sharpness has</span></div>\n-<div class=\"line\"><a id=\"l00404\" name=\"l00404\"></a><span class=\"lineno\">  404</span>        <span class=\"comment\">//  decayed, but they ultimately lie on the inf-sharp crease of the</span></div>\n-<div class=\"line\"><a id=\"l00405\" name=\"l00405\"></a><span class=\"lineno\">  405</span>        <span class=\"comment\">//  FVar boundary.  Consider this when tagging inf-sharp features.</span></div>\n-<div class=\"line\"><a id=\"l00406\" name=\"l00406\"></a><span class=\"lineno\">  406</span>        <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00407\" name=\"l00407\"></a><span class=\"lineno\">  407</span>        <span class=\"keywordflow\">if</span> (this-&gt;isCorner()) {</div>\n-<div class=\"line\"><a id=\"l00408\" name=\"l00408\"></a><span class=\"lineno\">  408</span>            levelTag._rule = (Level::VTag::VTagSize) <a class=\"code hl_enumvalue\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78a27ed0595212af48db763e461bfdc29ef\">Sdc::Crease::RULE_CORNER</a>;</div>\n-<div class=\"line\"><a id=\"l00409\" name=\"l00409\"></a><span class=\"lineno\">  409</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00410\" name=\"l00410\"></a><span class=\"lineno\">  410</span>            levelTag._rule = (Level::VTag::VTagSize) <a class=\"code hl_enumvalue\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78a966fa1ae8aeb8587c498cf6a92cc3335\">Sdc::Crease::RULE_CREASE</a>;</div>\n-<div class=\"line\"><a id=\"l00411\" name=\"l00411\"></a><span class=\"lineno\">  411</span>        }</div>\n-<div class=\"line\"><a id=\"l00412\" name=\"l00412\"></a><span class=\"lineno\">  412</span>        <span class=\"keywordflow\">if</span> (this-&gt;isCrease() || this-&gt;isSemiSharp()) {</div>\n-<div class=\"line\"><a id=\"l00413\" name=\"l00413\"></a><span class=\"lineno\">  413</span>            levelTag._infSharp = <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00414\" name=\"l00414\"></a><span class=\"lineno\">  414</span>            levelTag._infSharpCrease = <span class=\"keyword\">true</span>;</div>\n-<div class=\"line\"><a id=\"l00415\" name=\"l00415\"></a><span class=\"lineno\">  415</span>            levelTag._corner = <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00416\" name=\"l00416\"></a><span class=\"lineno\">  416</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00417\" name=\"l00417\"></a><span class=\"lineno\">  417</span>            levelTag._infSharp = <span class=\"keyword\">true</span>;</div>\n-<div class=\"line\"><a id=\"l00418\" name=\"l00418\"></a><span class=\"lineno\">  418</span>            levelTag._infSharpCrease = <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00419\" name=\"l00419\"></a><span class=\"lineno\">  419</span>            levelTag._corner = !this-&gt;_infIrregular &amp;&amp; !this-&gt;_infSharpEdges;</div>\n-<div class=\"line\"><a id=\"l00420\" name=\"l00420\"></a><span class=\"lineno\">  420</span>        }</div>\n-<div class=\"line\"><a id=\"l00421\" name=\"l00421\"></a><span class=\"lineno\">  421</span>        levelTag._infSharpEdges = <span class=\"keyword\">true</span>;</div>\n-<div class=\"line\"><a id=\"l00422\" name=\"l00422\"></a><span class=\"lineno\">  422</span>        levelTag._infIrregular = this-&gt;_infIrregular;</div>\n-<div class=\"line\"><a id=\"l00423\" name=\"l00423\"></a><span class=\"lineno\">  423</span> </div>\n-<div class=\"line\"><a id=\"l00424\" name=\"l00424\"></a><span class=\"lineno\">  424</span>        levelTag._boundary = <span class=\"keyword\">true</span>;</div>\n-<div class=\"line\"><a id=\"l00425\" name=\"l00425\"></a><span class=\"lineno\">  425</span>        levelTag._xordinary = this-&gt;_xordinary;</div>\n-<div class=\"line\"><a id=\"l00426\" name=\"l00426\"></a><span class=\"lineno\">  426</span> </div>\n-<div class=\"line\"><a id=\"l00427\" name=\"l00427\"></a><span class=\"lineno\">  427</span>        levelTag._nonManifold |= this-&gt;_nonManifold;</div>\n-<div class=\"line\"><a id=\"l00428\" name=\"l00428\"></a><span class=\"lineno\">  428</span>    }</div>\n-<div class=\"line\"><a id=\"l00429\" name=\"l00429\"></a><span class=\"lineno\">  429</span>    <span class=\"keywordflow\">return</span> levelTag;</div>\n-<div class=\"line\"><a id=\"l00430\" name=\"l00430\"></a><span class=\"lineno\">  430</span>}</div>\n-<div class=\"line\"><a id=\"l00431\" name=\"l00431\"></a><span class=\"lineno\">  431</span> </div>\n-<div class=\"line\"><a id=\"l00432\" name=\"l00432\"></a><span class=\"lineno\">  432</span>} <span class=\"comment\">// end namespace internal</span></div>\n-<div class=\"line\"><a id=\"l00433\" name=\"l00433\"></a><span class=\"lineno\">  433</span>} <span class=\"comment\">// end namespace Vtr</span></div>\n-<div class=\"line\"><a id=\"l00434\" name=\"l00434\"></a><span class=\"lineno\">  434</span> </div>\n-<div class=\"line\"><a id=\"l00435\" name=\"l00435\"></a><span class=\"lineno\">  435</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00436\" name=\"l00436\"></a><span class=\"lineno\">  436</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00437\" name=\"l00437\"></a><span class=\"lineno\">  437</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l00438\" name=\"l00438\"></a><span class=\"lineno\">  438</span> </div>\n-<div class=\"line\"><a id=\"l00439\" name=\"l00439\"></a><span class=\"lineno\">  439</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_VTR_FVAR_LEVEL_H */</span><span class=\"preprocessor\"></span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa00909_html_a175f8a210a75b8180bc7ec74459492c9\"><div class=\"ttname\"><a href=\"a00909.html#a175f8a210a75b8180bc7ec74459492c9\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstLocalIndexArray</a></div><div class=\"ttdeci\">ConstArray&lt; LocalIndex &gt; ConstLocalIndexArray</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01495_source.html#l00083\">types.h:83</a></div></div>\n-<div class=\"ttc\" id=\"aa00909_html_a1e004d5c1e30ef69719d4083afe0f4ce\"><div class=\"ttname\"><a href=\"a00909.html#a1e004d5c1e30ef69719d4083afe0f4ce\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::LocalIndexArray</a></div><div class=\"ttdeci\">Array&lt; LocalIndex &gt; LocalIndexArray</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01495_source.html#l00082\">types.h:82</a></div></div>\n-<div class=\"ttc\" id=\"aa00909_html_a4a0e50e01fef3e431767a928c2631cab\"><div class=\"ttname\"><a href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::Index</a></div><div class=\"ttdeci\">int Index</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01495_source.html#l00054\">types.h:54</a></div></div>\n-<div class=\"ttc\" id=\"aa00909_html_a7c31dd7ef75734862d363b332be917dd\"><div class=\"ttname\"><a href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstIndexArray</a></div><div class=\"ttdeci\">ConstArray&lt; Index &gt; ConstIndexArray</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01495_source.html#l00080\">types.h:80</a></div></div>\n-<div class=\"ttc\" id=\"aa00909_html_a97c1e0c5ac33f97e2b73fde56b56c363\"><div class=\"ttname\"><a href=\"a00909.html#a97c1e0c5ac33f97e2b73fde56b56c363\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::LocalIndex</a></div><div class=\"ttdeci\">unsigned short LocalIndex</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01495_source.html#l00066\">types.h:66</a></div></div>\n-<div class=\"ttc\" id=\"aa00909_html_ab4fd2ea03eba4c01ed28072b21917a0f\"><div class=\"ttname\"><a href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::IndexArray</a></div><div class=\"ttdeci\">Array&lt; Index &gt; IndexArray</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01495_source.html#l00079\">types.h:79</a></div></div>\n-<div class=\"ttc\" id=\"aa01333_html_a11fcd51ef86118f65e603c1474377a78a27ed0595212af48db763e461bfdc29ef\"><div class=\"ttname\"><a href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78a27ed0595212af48db763e461bfdc29ef\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::RULE_CORNER</a></div><div class=\"ttdeci\">@ RULE_CORNER</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00731_source.html#l00088\">crease.h:87</a></div></div>\n-<div class=\"ttc\" id=\"aa01333_html_a11fcd51ef86118f65e603c1474377a78a966fa1ae8aeb8587c498cf6a92cc3335\"><div class=\"ttname\"><a href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78a966fa1ae8aeb8587c498cf6a92cc3335\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::RULE_CREASE</a></div><div class=\"ttdeci\">@ RULE_CREASE</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00731_source.html#l00086\">crease.h:86</a></div></div>\n+<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#a10015b2c4f90f3a11e60cc88dcbb9d6b\">  111</a></span>    <a class=\"code hl_function\" href=\"a01293.html#a10015b2c4f90f3a11e60cc88dcbb9d6b\">MTLComputeEvaluator</a>();</div>\n+<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#a167639c4a4c57eaae9a880ad50dcab5a\">  112</a></span>    <a class=\"code hl_function\" href=\"a01293.html#a167639c4a4c57eaae9a880ad50dcab5a\">~MTLComputeEvaluator</a>();</div>\n+<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span> </div>\n+<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span> </div>\n+<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\">  148</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00149\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#ab4a74384293a0625c6fc8d4ee6af1314\">  149</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01293.html#ab4a74384293a0625c6fc8d4ee6af1314\">EvalStencils</a>(</div>\n+<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\">  150</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\">  151</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\">  152</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n+<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\">  153</span>        <a class=\"code hl_class\" href=\"a01293.html\">MTLComputeEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n+<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\">  154</span>        <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context)</div>\n+<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\">  155</span>    {</div>\n+<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\">  156</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\">  157</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01293.html#ab4a74384293a0625c6fc8d4ee6af1314\">EvalStencils</a>(srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\">  158</span>                                          dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\">  159</span>                                          stencilTable,</div>\n+<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\">  160</span>                                          context);</div>\n+<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\">  161</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\">  162</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n+<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\">  163</span>            instance = Create(srcDesc, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\">  164</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\">  165</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\">  166</span>                              context);</div>\n+<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\">  167</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\">  168</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01293.html#ab4a74384293a0625c6fc8d4ee6af1314\">EvalStencils</a>(srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\">  169</span>                                                dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\">  170</span>                                                stencilTable,</div>\n+<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span>                                                context);</div>\n+<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\">  172</span>                <span class=\"keyword\">delete</span> instance;</div>\n+<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\">  173</span>                <span class=\"keywordflow\">return</span> r;</div>\n+<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\">  174</span>            }</div>\n+<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\">  175</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\">  176</span>        }</div>\n+<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\">  178</span> </div>\n+<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\">  219</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00220\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#a47b111c4b8b6a94c2705f04b2d7a095d\">  220</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01293.html#a47b111c4b8b6a94c2705f04b2d7a095d\">EvalStencils</a>(</div>\n+<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\">  221</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\">  222</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\">  223</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\">  224</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\">  225</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n+<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\">  226</span>        <a class=\"code hl_class\" href=\"a01293.html\">MTLComputeEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n+<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\">  227</span>        <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context) {</div>\n+<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\">  228</span> </div>\n+<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\">  229</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\">  230</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01293.html#ab4a74384293a0625c6fc8d4ee6af1314\">EvalStencils</a>(srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\">  231</span>                                          dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\">  232</span>                                          duBuffer,  duDesc,</div>\n+<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\">  233</span>                                          dvBuffer,  dvDesc,</div>\n+<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\">  234</span>                                          stencilTable,</div>\n+<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\">  235</span>                                          context);</div>\n+<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\">  236</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\">  237</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n+<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\">  238</span>            instance = Create(srcDesc, dstDesc, duDesc, dvDesc, context);</div>\n+<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\">  239</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\">  240</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01293.html#ab4a74384293a0625c6fc8d4ee6af1314\">EvalStencils</a>(srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\">  241</span>                                                dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\">  242</span>                                                duBuffer,  duDesc,</div>\n+<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\">  243</span>                                                dvBuffer,  dvDesc,</div>\n+<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\">  244</span>                                                stencilTable,</div>\n+<div class=\"line\"><a id=\"l00245\" name=\"l00245\"></a><span class=\"lineno\">  245</span>                                                context);</div>\n+<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\">  246</span>                <span class=\"keyword\">delete</span> instance;</div>\n+<div class=\"line\"><a id=\"l00247\" name=\"l00247\"></a><span class=\"lineno\">  247</span>                <span class=\"keywordflow\">return</span> r;</div>\n+<div class=\"line\"><a id=\"l00248\" name=\"l00248\"></a><span class=\"lineno\">  248</span>            }</div>\n+<div class=\"line\"><a id=\"l00249\" name=\"l00249\"></a><span class=\"lineno\">  249</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00250\" name=\"l00250\"></a><span class=\"lineno\">  250</span>        }</div>\n+<div class=\"line\"><a id=\"l00251\" name=\"l00251\"></a><span class=\"lineno\">  251</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00252\" name=\"l00252\"></a><span class=\"lineno\">  252</span> </div>\n+<div class=\"line\"><a id=\"l00311\" name=\"l00311\"></a><span class=\"lineno\">  311</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00312\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00312\" name=\"l00312\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#a05b843619ebcc7e30f6dc99a6585ef99\">  312</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01293.html#a05b843619ebcc7e30f6dc99a6585ef99\">EvalStencils</a>(</div>\n+<div class=\"line\"><a id=\"l00313\" name=\"l00313\"></a><span class=\"lineno\">  313</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00314\" name=\"l00314\"></a><span class=\"lineno\">  314</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00315\" name=\"l00315\"></a><span class=\"lineno\">  315</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00316\" name=\"l00316\"></a><span class=\"lineno\">  316</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00317\" name=\"l00317\"></a><span class=\"lineno\">  317</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l00318\" name=\"l00318\"></a><span class=\"lineno\">  318</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l00319\" name=\"l00319\"></a><span class=\"lineno\">  319</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00320\" name=\"l00320\"></a><span class=\"lineno\">  320</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n+<div class=\"line\"><a id=\"l00321\" name=\"l00321\"></a><span class=\"lineno\">  321</span>        <a class=\"code hl_class\" href=\"a01293.html\">MTLComputeEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n+<div class=\"line\"><a id=\"l00322\" name=\"l00322\"></a><span class=\"lineno\">  322</span>        <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context) {</div>\n+<div class=\"line\"><a id=\"l00323\" name=\"l00323\"></a><span class=\"lineno\">  323</span> </div>\n+<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\">  324</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\">  325</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01293.html#ab4a74384293a0625c6fc8d4ee6af1314\">EvalStencils</a>(srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\">  326</span>                                          dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\">  327</span>                                          duBuffer,  duDesc,</div>\n+<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\">  328</span>                                          dvBuffer,  dvDesc,</div>\n+<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\">  329</span>                                          duuBuffer, duuDesc,</div>\n+<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\">  330</span>                                          duvBuffer, duvDesc,</div>\n+<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\">  331</span>                                          dvvBuffer, dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\">  332</span>                                          stencilTable,</div>\n+<div class=\"line\"><a id=\"l00333\" name=\"l00333\"></a><span class=\"lineno\">  333</span>                                          context);</div>\n+<div class=\"line\"><a id=\"l00334\" name=\"l00334\"></a><span class=\"lineno\">  334</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00335\" name=\"l00335\"></a><span class=\"lineno\">  335</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n+<div class=\"line\"><a id=\"l00336\" name=\"l00336\"></a><span class=\"lineno\">  336</span>            instance = Create(srcDesc, dstDesc, duDesc, dvDesc,</div>\n+<div class=\"line\"><a id=\"l00337\" name=\"l00337\"></a><span class=\"lineno\">  337</span>                              duuDesc, duvDesc, dvvDesc, context);</div>\n+<div class=\"line\"><a id=\"l00338\" name=\"l00338\"></a><span class=\"lineno\">  338</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l00339\" name=\"l00339\"></a><span class=\"lineno\">  339</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01293.html#ab4a74384293a0625c6fc8d4ee6af1314\">EvalStencils</a>(srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l00340\" name=\"l00340\"></a><span class=\"lineno\">  340</span>                                                dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00341\" name=\"l00341\"></a><span class=\"lineno\">  341</span>                                                duBuffer,  duDesc,</div>\n+<div class=\"line\"><a id=\"l00342\" name=\"l00342\"></a><span class=\"lineno\">  342</span>                                                dvBuffer,  dvDesc,</div>\n+<div class=\"line\"><a id=\"l00343\" name=\"l00343\"></a><span class=\"lineno\">  343</span>                                                duuBuffer, duuDesc,</div>\n+<div class=\"line\"><a id=\"l00344\" name=\"l00344\"></a><span class=\"lineno\">  344</span>                                                duvBuffer, duvDesc,</div>\n+<div class=\"line\"><a id=\"l00345\" name=\"l00345\"></a><span class=\"lineno\">  345</span>                                                dvvBuffer, dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00346\" name=\"l00346\"></a><span class=\"lineno\">  346</span>                                                stencilTable,</div>\n+<div class=\"line\"><a id=\"l00347\" name=\"l00347\"></a><span class=\"lineno\">  347</span>                                                context);</div>\n+<div class=\"line\"><a id=\"l00348\" name=\"l00348\"></a><span class=\"lineno\">  348</span>                <span class=\"keyword\">delete</span> instance;</div>\n+<div class=\"line\"><a id=\"l00349\" name=\"l00349\"></a><span class=\"lineno\">  349</span>                <span class=\"keywordflow\">return</span> r;</div>\n+<div class=\"line\"><a id=\"l00350\" name=\"l00350\"></a><span class=\"lineno\">  350</span>            }</div>\n+<div class=\"line\"><a id=\"l00351\" name=\"l00351\"></a><span class=\"lineno\">  351</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00352\" name=\"l00352\"></a><span class=\"lineno\">  352</span>        }</div>\n+<div class=\"line\"><a id=\"l00353\" name=\"l00353\"></a><span class=\"lineno\">  353</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00354\" name=\"l00354\"></a><span class=\"lineno\">  354</span> </div>\n+<div class=\"line\"><a id=\"l00375\" name=\"l00375\"></a><span class=\"lineno\">  375</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00376\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00376\" name=\"l00376\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#a6bd37be5877b28116c7378aa3d81bab4\">  376</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01293.html#a6bd37be5877b28116c7378aa3d81bab4\">EvalStencils</a>(</div>\n+<div class=\"line\"><a id=\"l00377\" name=\"l00377\"></a><span class=\"lineno\">  377</span>                      SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00378\" name=\"l00378\"></a><span class=\"lineno\">  378</span>                      DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00379\" name=\"l00379\"></a><span class=\"lineno\">  379</span>                      STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n+<div class=\"line\"><a id=\"l00380\" name=\"l00380\"></a><span class=\"lineno\">  380</span>                      <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context)<span class=\"keyword\"> const</span></div>\n+<div class=\"line\"><a id=\"l00381\" name=\"l00381\"></a><span class=\"lineno\">  381</span><span class=\"keyword\">    </span>{</div>\n+<div class=\"line\"><a id=\"l00382\" name=\"l00382\"></a><span class=\"lineno\">  382</span>        <span class=\"keywordflow\">return</span> EvalStencils(srcBuffer-&gt;BindMTLBuffer(context), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00383\" name=\"l00383\"></a><span class=\"lineno\">  383</span>                            dstBuffer-&gt;BindMTLBuffer(context), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00384\" name=\"l00384\"></a><span class=\"lineno\">  384</span>                            0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l00385\" name=\"l00385\"></a><span class=\"lineno\">  385</span>                            0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l00386\" name=\"l00386\"></a><span class=\"lineno\">  386</span>                            stencilTable-&gt;GetSizesBuffer(),</div>\n+<div class=\"line\"><a id=\"l00387\" name=\"l00387\"></a><span class=\"lineno\">  387</span>                            stencilTable-&gt;GetOffsetsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00388\" name=\"l00388\"></a><span class=\"lineno\">  388</span>                            stencilTable-&gt;GetIndicesBuffer(),</div>\n+<div class=\"line\"><a id=\"l00389\" name=\"l00389\"></a><span class=\"lineno\">  389</span>                            stencilTable-&gt;GetWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00390\" name=\"l00390\"></a><span class=\"lineno\">  390</span>                            0,</div>\n+<div class=\"line\"><a id=\"l00391\" name=\"l00391\"></a><span class=\"lineno\">  391</span>                            0,</div>\n+<div class=\"line\"><a id=\"l00392\" name=\"l00392\"></a><span class=\"lineno\">  392</span>                            <span class=\"comment\">/* start = */</span> 0,</div>\n+<div class=\"line\"><a id=\"l00393\" name=\"l00393\"></a><span class=\"lineno\">  393</span>                            <span class=\"comment\">/* end   = */</span> stencilTable-&gt;GetNumStencils(),</div>\n+<div class=\"line\"><a id=\"l00394\" name=\"l00394\"></a><span class=\"lineno\">  394</span>                            context);</div>\n+<div class=\"line\"><a id=\"l00395\" name=\"l00395\"></a><span class=\"lineno\">  395</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00396\" name=\"l00396\"></a><span class=\"lineno\">  396</span> </div>\n+<div class=\"line\"><a id=\"l00429\" name=\"l00429\"></a><span class=\"lineno\">  429</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00430\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00430\" name=\"l00430\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#a8b223dcc2eb6ca7b1389f206b86d3c60\">  430</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01293.html#a8b223dcc2eb6ca7b1389f206b86d3c60\">EvalStencils</a>(</div>\n+<div class=\"line\"><a id=\"l00431\" name=\"l00431\"></a><span class=\"lineno\">  431</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00432\" name=\"l00432\"></a><span class=\"lineno\">  432</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00433\" name=\"l00433\"></a><span class=\"lineno\">  433</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00434\" name=\"l00434\"></a><span class=\"lineno\">  434</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00435\" name=\"l00435\"></a><span class=\"lineno\">  435</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n+<div class=\"line\"><a id=\"l00436\" name=\"l00436\"></a><span class=\"lineno\">  436</span>        <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context)<span class=\"keyword\"> const</span></div>\n+<div class=\"line\"><a id=\"l00437\" name=\"l00437\"></a><span class=\"lineno\">  437</span><span class=\"keyword\">    </span>{</div>\n+<div class=\"line\"><a id=\"l00438\" name=\"l00438\"></a><span class=\"lineno\">  438</span>        <span class=\"keywordflow\">return</span> EvalStencils(srcBuffer-&gt;BindMTLBuffer(context), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00439\" name=\"l00439\"></a><span class=\"lineno\">  439</span>                            dstBuffer-&gt;BindMTLBuffer(context), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00440\" name=\"l00440\"></a><span class=\"lineno\">  440</span>                            duBuffer-&gt;BindMTLBuffer(context),  duDesc,</div>\n+<div class=\"line\"><a id=\"l00441\" name=\"l00441\"></a><span class=\"lineno\">  441</span>                            dvBuffer-&gt;BindMTLBuffer(context),  dvDesc,</div>\n+<div class=\"line\"><a id=\"l00442\" name=\"l00442\"></a><span class=\"lineno\">  442</span>                            stencilTable-&gt;GetSizesBuffer(),</div>\n+<div class=\"line\"><a id=\"l00443\" name=\"l00443\"></a><span class=\"lineno\">  443</span>                            stencilTable-&gt;GetOffsetsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00444\" name=\"l00444\"></a><span class=\"lineno\">  444</span>                            stencilTable-&gt;GetIndicesBuffer(),</div>\n+<div class=\"line\"><a id=\"l00445\" name=\"l00445\"></a><span class=\"lineno\">  445</span>                            stencilTable-&gt;GetWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00446\" name=\"l00446\"></a><span class=\"lineno\">  446</span>                            stencilTable-&gt;GetDuWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00447\" name=\"l00447\"></a><span class=\"lineno\">  447</span>                            stencilTable-&gt;GetDvWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00448\" name=\"l00448\"></a><span class=\"lineno\">  448</span>                            <span class=\"comment\">/* start = */</span> 0,</div>\n+<div class=\"line\"><a id=\"l00449\" name=\"l00449\"></a><span class=\"lineno\">  449</span>                            <span class=\"comment\">/* end   = */</span> stencilTable-&gt;GetNumStencils(),</div>\n+<div class=\"line\"><a id=\"l00450\" name=\"l00450\"></a><span class=\"lineno\">  450</span>                            context);</div>\n+<div class=\"line\"><a id=\"l00451\" name=\"l00451\"></a><span class=\"lineno\">  451</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00452\" name=\"l00452\"></a><span class=\"lineno\">  452</span> </div>\n+<div class=\"line\"><a id=\"l00503\" name=\"l00503\"></a><span class=\"lineno\">  503</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00504\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00504\" name=\"l00504\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#a9e01da75168e927a75070da8dd09b06e\">  504</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01293.html#a9e01da75168e927a75070da8dd09b06e\">EvalStencils</a>(</div>\n+<div class=\"line\"><a id=\"l00505\" name=\"l00505\"></a><span class=\"lineno\">  505</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00506\" name=\"l00506\"></a><span class=\"lineno\">  506</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00507\" name=\"l00507\"></a><span class=\"lineno\">  507</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00508\" name=\"l00508\"></a><span class=\"lineno\">  508</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00509\" name=\"l00509\"></a><span class=\"lineno\">  509</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l00510\" name=\"l00510\"></a><span class=\"lineno\">  510</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l00511\" name=\"l00511\"></a><span class=\"lineno\">  511</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00512\" name=\"l00512\"></a><span class=\"lineno\">  512</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n+<div class=\"line\"><a id=\"l00513\" name=\"l00513\"></a><span class=\"lineno\">  513</span>        <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context)<span class=\"keyword\"> const</span></div>\n+<div class=\"line\"><a id=\"l00514\" name=\"l00514\"></a><span class=\"lineno\">  514</span><span class=\"keyword\">    </span>{</div>\n+<div class=\"line\"><a id=\"l00515\" name=\"l00515\"></a><span class=\"lineno\">  515</span>        <span class=\"keywordflow\">return</span> EvalStencils(srcBuffer-&gt;BindMTLBuffer(context), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00516\" name=\"l00516\"></a><span class=\"lineno\">  516</span>                            dstBuffer-&gt;BindMTLBuffer(context), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00517\" name=\"l00517\"></a><span class=\"lineno\">  517</span>                            duBuffer-&gt;BindMTLBuffer(context),  duDesc,</div>\n+<div class=\"line\"><a id=\"l00518\" name=\"l00518\"></a><span class=\"lineno\">  518</span>                            dvBuffer-&gt;BindMTLBuffer(context),  dvDesc,</div>\n+<div class=\"line\"><a id=\"l00519\" name=\"l00519\"></a><span class=\"lineno\">  519</span>                            duuBuffer-&gt;BindMTLBuffer(context), duuDesc,</div>\n+<div class=\"line\"><a id=\"l00520\" name=\"l00520\"></a><span class=\"lineno\">  520</span>                            duvBuffer-&gt;BindMTLBuffer(context), duvDesc,</div>\n+<div class=\"line\"><a id=\"l00521\" name=\"l00521\"></a><span class=\"lineno\">  521</span>                            dvvBuffer-&gt;BindMTLBuffer(context), dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00522\" name=\"l00522\"></a><span class=\"lineno\">  522</span>                            stencilTable-&gt;GetSizesBuffer(),</div>\n+<div class=\"line\"><a id=\"l00523\" name=\"l00523\"></a><span class=\"lineno\">  523</span>                            stencilTable-&gt;GetOffsetsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00524\" name=\"l00524\"></a><span class=\"lineno\">  524</span>                            stencilTable-&gt;GetIndicesBuffer(),</div>\n+<div class=\"line\"><a id=\"l00525\" name=\"l00525\"></a><span class=\"lineno\">  525</span>                            stencilTable-&gt;GetWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00526\" name=\"l00526\"></a><span class=\"lineno\">  526</span>                            stencilTable-&gt;GetDuWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00527\" name=\"l00527\"></a><span class=\"lineno\">  527</span>                            stencilTable-&gt;GetDvWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00528\" name=\"l00528\"></a><span class=\"lineno\">  528</span>                            stencilTable-&gt;GetDuuWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00529\" name=\"l00529\"></a><span class=\"lineno\">  529</span>                            stencilTable-&gt;GetDuvWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00530\" name=\"l00530\"></a><span class=\"lineno\">  530</span>                            stencilTable-&gt;GetDvvWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00531\" name=\"l00531\"></a><span class=\"lineno\">  531</span>                            <span class=\"comment\">/* start = */</span> 0,</div>\n+<div class=\"line\"><a id=\"l00532\" name=\"l00532\"></a><span class=\"lineno\">  532</span>                            <span class=\"comment\">/* end   = */</span> stencilTable-&gt;GetNumStencils(),</div>\n+<div class=\"line\"><a id=\"l00533\" name=\"l00533\"></a><span class=\"lineno\">  533</span>                            context);</div>\n+<div class=\"line\"><a id=\"l00534\" name=\"l00534\"></a><span class=\"lineno\">  534</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00535\" name=\"l00535\"></a><span class=\"lineno\">  535</span> </div>\n+<div class=\"line\"><a id=\"l00574\" name=\"l00574\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#aa877bdc66715e90bb513a7d0c08f8a73\">  574</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01293.html#aa877bdc66715e90bb513a7d0c08f8a73\">EvalStencils</a>(id&lt;MTLBuffer&gt; srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00575\" name=\"l00575\"></a><span class=\"lineno\">  575</span>                      id&lt;MTLBuffer&gt; dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00576\" name=\"l00576\"></a><span class=\"lineno\">  576</span>                      id&lt;MTLBuffer&gt; duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00577\" name=\"l00577\"></a><span class=\"lineno\">  577</span>                      id&lt;MTLBuffer&gt; dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00578\" name=\"l00578\"></a><span class=\"lineno\">  578</span>                      id&lt;MTLBuffer&gt; sizesBuffer,</div>\n+<div class=\"line\"><a id=\"l00579\" name=\"l00579\"></a><span class=\"lineno\">  579</span>                      id&lt;MTLBuffer&gt; offsetsBuffer,</div>\n+<div class=\"line\"><a id=\"l00580\" name=\"l00580\"></a><span class=\"lineno\">  580</span>                      id&lt;MTLBuffer&gt; indicesBuffer,</div>\n+<div class=\"line\"><a id=\"l00581\" name=\"l00581\"></a><span class=\"lineno\">  581</span>                      id&lt;MTLBuffer&gt; weightsBuffer,</div>\n+<div class=\"line\"><a id=\"l00582\" name=\"l00582\"></a><span class=\"lineno\">  582</span>                      id&lt;MTLBuffer&gt; duWeightsBuffer,</div>\n+<div class=\"line\"><a id=\"l00583\" name=\"l00583\"></a><span class=\"lineno\">  583</span>                      id&lt;MTLBuffer&gt; dvWeightsBuffer,</div>\n+<div class=\"line\"><a id=\"l00584\" name=\"l00584\"></a><span class=\"lineno\">  584</span>                      <span class=\"keywordtype\">int</span> start,</div>\n+<div class=\"line\"><a id=\"l00585\" name=\"l00585\"></a><span class=\"lineno\">  585</span>                      <span class=\"keywordtype\">int</span> end,</div>\n+<div class=\"line\"><a id=\"l00586\" name=\"l00586\"></a><span class=\"lineno\">  586</span>                      <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00587\" name=\"l00587\"></a><span class=\"lineno\">  587</span> </div>\n+<div class=\"line\"><a id=\"l00644\" name=\"l00644\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#a01f08038160f2a7981d56c21a69c0eb9\">  644</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01293.html#a01f08038160f2a7981d56c21a69c0eb9\">EvalStencils</a>(id&lt;MTLBuffer&gt; srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00645\" name=\"l00645\"></a><span class=\"lineno\">  645</span>                      id&lt;MTLBuffer&gt; dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00646\" name=\"l00646\"></a><span class=\"lineno\">  646</span>                      id&lt;MTLBuffer&gt; duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00647\" name=\"l00647\"></a><span class=\"lineno\">  647</span>                      id&lt;MTLBuffer&gt; dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00648\" name=\"l00648\"></a><span class=\"lineno\">  648</span>                      id&lt;MTLBuffer&gt; duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l00649\" name=\"l00649\"></a><span class=\"lineno\">  649</span>                      id&lt;MTLBuffer&gt; duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l00650\" name=\"l00650\"></a><span class=\"lineno\">  650</span>                      id&lt;MTLBuffer&gt; dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00651\" name=\"l00651\"></a><span class=\"lineno\">  651</span>                      id&lt;MTLBuffer&gt; sizesBuffer,</div>\n+<div class=\"line\"><a id=\"l00652\" name=\"l00652\"></a><span class=\"lineno\">  652</span>                      id&lt;MTLBuffer&gt; offsetsBuffer,</div>\n+<div class=\"line\"><a id=\"l00653\" name=\"l00653\"></a><span class=\"lineno\">  653</span>                      id&lt;MTLBuffer&gt; indicesBuffer,</div>\n+<div class=\"line\"><a id=\"l00654\" name=\"l00654\"></a><span class=\"lineno\">  654</span>                      id&lt;MTLBuffer&gt; weightsBuffer,</div>\n+<div class=\"line\"><a id=\"l00655\" name=\"l00655\"></a><span class=\"lineno\">  655</span>                      id&lt;MTLBuffer&gt; duWeightsBuffer,</div>\n+<div class=\"line\"><a id=\"l00656\" name=\"l00656\"></a><span class=\"lineno\">  656</span>                      id&lt;MTLBuffer&gt; dvWeightsBuffer,</div>\n+<div class=\"line\"><a id=\"l00657\" name=\"l00657\"></a><span class=\"lineno\">  657</span>                      id&lt;MTLBuffer&gt; duuWeightsBuffer,</div>\n+<div class=\"line\"><a id=\"l00658\" name=\"l00658\"></a><span class=\"lineno\">  658</span>                      id&lt;MTLBuffer&gt; duvWeightsBuffer,</div>\n+<div class=\"line\"><a id=\"l00659\" name=\"l00659\"></a><span class=\"lineno\">  659</span>                      id&lt;MTLBuffer&gt; dvvWeightsBuffer,</div>\n+<div class=\"line\"><a id=\"l00660\" name=\"l00660\"></a><span class=\"lineno\">  660</span>                      <span class=\"keywordtype\">int</span> start,</div>\n+<div class=\"line\"><a id=\"l00661\" name=\"l00661\"></a><span class=\"lineno\">  661</span>                      <span class=\"keywordtype\">int</span> end,</div>\n+<div class=\"line\"><a id=\"l00662\" name=\"l00662\"></a><span class=\"lineno\">  662</span>                      <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00663\" name=\"l00663\"></a><span class=\"lineno\">  663</span> </div>\n+<div class=\"line\"><a id=\"l00669\" name=\"l00669\"></a><span class=\"lineno\">  669</span> </div>\n+<div class=\"line\"><a id=\"l00703\" name=\"l00703\"></a><span class=\"lineno\">  703</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l00704\" name=\"l00704\"></a><span class=\"lineno\">  704</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00705\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00705\" name=\"l00705\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#a1e8b40a131056bb2e3868d4dd4a94ba6\">  705</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01293.html#a1e8b40a131056bb2e3868d4dd4a94ba6\">EvalPatches</a>(</div>\n+<div class=\"line\"><a id=\"l00706\" name=\"l00706\"></a><span class=\"lineno\">  706</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00707\" name=\"l00707\"></a><span class=\"lineno\">  707</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00708\" name=\"l00708\"></a><span class=\"lineno\">  708</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00709\" name=\"l00709\"></a><span class=\"lineno\">  709</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l00710\" name=\"l00710\"></a><span class=\"lineno\">  710</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l00711\" name=\"l00711\"></a><span class=\"lineno\">  711</span>        <a class=\"code hl_class\" href=\"a01293.html\">MTLComputeEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n+<div class=\"line\"><a id=\"l00712\" name=\"l00712\"></a><span class=\"lineno\">  712</span>        <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context) {</div>\n+<div class=\"line\"><a id=\"l00713\" name=\"l00713\"></a><span class=\"lineno\">  713</span> </div>\n+<div class=\"line\"><a id=\"l00714\" name=\"l00714\"></a><span class=\"lineno\">  714</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l00715\" name=\"l00715\"></a><span class=\"lineno\">  715</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01293.html#a1e8b40a131056bb2e3868d4dd4a94ba6\">EvalPatches</a>(srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l00716\" name=\"l00716\"></a><span class=\"lineno\">  716</span>                                         dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00717\" name=\"l00717\"></a><span class=\"lineno\">  717</span>                                         numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l00718\" name=\"l00718\"></a><span class=\"lineno\">  718</span>                                         patchTable,</div>\n+<div class=\"line\"><a id=\"l00719\" name=\"l00719\"></a><span class=\"lineno\">  719</span>                                         context);</div>\n+<div class=\"line\"><a id=\"l00720\" name=\"l00720\"></a><span class=\"lineno\">  720</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00721\" name=\"l00721\"></a><span class=\"lineno\">  721</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n+<div class=\"line\"><a id=\"l00722\" name=\"l00722\"></a><span class=\"lineno\">  722</span>            instance = Create(srcDesc, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00723\" name=\"l00723\"></a><span class=\"lineno\">  723</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l00724\" name=\"l00724\"></a><span class=\"lineno\">  724</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l00725\" name=\"l00725\"></a><span class=\"lineno\">  725</span>                              context);</div>\n+<div class=\"line\"><a id=\"l00726\" name=\"l00726\"></a><span class=\"lineno\">  726</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l00727\" name=\"l00727\"></a><span class=\"lineno\">  727</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01293.html#a1e8b40a131056bb2e3868d4dd4a94ba6\">EvalPatches</a>(srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l00728\" name=\"l00728\"></a><span class=\"lineno\">  728</span>                                               dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00729\" name=\"l00729\"></a><span class=\"lineno\">  729</span>                                               numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l00730\" name=\"l00730\"></a><span class=\"lineno\">  730</span>                                               patchTable,</div>\n+<div class=\"line\"><a id=\"l00731\" name=\"l00731\"></a><span class=\"lineno\">  731</span>                                               context);</div>\n+<div class=\"line\"><a id=\"l00732\" name=\"l00732\"></a><span class=\"lineno\">  732</span>                <span class=\"keyword\">delete</span> instance;</div>\n+<div class=\"line\"><a id=\"l00733\" name=\"l00733\"></a><span class=\"lineno\">  733</span>                <span class=\"keywordflow\">return</span> r;</div>\n+<div class=\"line\"><a id=\"l00734\" name=\"l00734\"></a><span class=\"lineno\">  734</span>            }</div>\n+<div class=\"line\"><a id=\"l00735\" name=\"l00735\"></a><span class=\"lineno\">  735</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00736\" name=\"l00736\"></a><span class=\"lineno\">  736</span>        }</div>\n+<div class=\"line\"><a id=\"l00737\" name=\"l00737\"></a><span class=\"lineno\">  737</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00738\" name=\"l00738\"></a><span class=\"lineno\">  738</span> </div>\n+<div class=\"line\"><a id=\"l00784\" name=\"l00784\"></a><span class=\"lineno\">  784</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l00785\" name=\"l00785\"></a><span class=\"lineno\">  785</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00786\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00786\" name=\"l00786\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#a04f16e003e67523aaa60a18a7104a83b\">  786</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01293.html#a04f16e003e67523aaa60a18a7104a83b\">EvalPatches</a>(</div>\n+<div class=\"line\"><a id=\"l00787\" name=\"l00787\"></a><span class=\"lineno\">  787</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00788\" name=\"l00788\"></a><span class=\"lineno\">  788</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00789\" name=\"l00789\"></a><span class=\"lineno\">  789</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00790\" name=\"l00790\"></a><span class=\"lineno\">  790</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00791\" name=\"l00791\"></a><span class=\"lineno\">  791</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00792\" name=\"l00792\"></a><span class=\"lineno\">  792</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l00793\" name=\"l00793\"></a><span class=\"lineno\">  793</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l00794\" name=\"l00794\"></a><span class=\"lineno\">  794</span>        <a class=\"code hl_class\" href=\"a01293.html\">MTLComputeEvaluator</a>* instance,</div>\n+<div class=\"line\"><a id=\"l00795\" name=\"l00795\"></a><span class=\"lineno\">  795</span>        <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context) {</div>\n+<div class=\"line\"><a id=\"l00796\" name=\"l00796\"></a><span class=\"lineno\">  796</span> </div>\n+<div class=\"line\"><a id=\"l00797\" name=\"l00797\"></a><span class=\"lineno\">  797</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l00798\" name=\"l00798\"></a><span class=\"lineno\">  798</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01293.html#a1e8b40a131056bb2e3868d4dd4a94ba6\">EvalPatches</a>(srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l00799\" name=\"l00799\"></a><span class=\"lineno\">  799</span>                                         dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00800\" name=\"l00800\"></a><span class=\"lineno\">  800</span>                                         duBuffer, duDesc,</div>\n+<div class=\"line\"><a id=\"l00801\" name=\"l00801\"></a><span class=\"lineno\">  801</span>                                         dvBuffer, dvDesc,</div>\n+<div class=\"line\"><a id=\"l00802\" name=\"l00802\"></a><span class=\"lineno\">  802</span>                                         numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l00803\" name=\"l00803\"></a><span class=\"lineno\">  803</span>                                         patchTable,</div>\n+<div class=\"line\"><a id=\"l00804\" name=\"l00804\"></a><span class=\"lineno\">  804</span>                                         context);</div>\n+<div class=\"line\"><a id=\"l00805\" name=\"l00805\"></a><span class=\"lineno\">  805</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00806\" name=\"l00806\"></a><span class=\"lineno\">  806</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n+<div class=\"line\"><a id=\"l00807\" name=\"l00807\"></a><span class=\"lineno\">  807</span>            instance = Create(srcDesc, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00808\" name=\"l00808\"></a><span class=\"lineno\">  808</span>                              duDesc, dvDesc, context);</div>\n+<div class=\"line\"><a id=\"l00809\" name=\"l00809\"></a><span class=\"lineno\">  809</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l00810\" name=\"l00810\"></a><span class=\"lineno\">  810</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01293.html#a1e8b40a131056bb2e3868d4dd4a94ba6\">EvalPatches</a>(srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l00811\" name=\"l00811\"></a><span class=\"lineno\">  811</span>                                               dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00812\" name=\"l00812\"></a><span class=\"lineno\">  812</span>                                               duBuffer, duDesc,</div>\n+<div class=\"line\"><a id=\"l00813\" name=\"l00813\"></a><span class=\"lineno\">  813</span>                                               dvBuffer, dvDesc,</div>\n+<div class=\"line\"><a id=\"l00814\" name=\"l00814\"></a><span class=\"lineno\">  814</span>                                               numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l00815\" name=\"l00815\"></a><span class=\"lineno\">  815</span>                                               patchTable,</div>\n+<div class=\"line\"><a id=\"l00816\" name=\"l00816\"></a><span class=\"lineno\">  816</span>                                               context);</div>\n+<div class=\"line\"><a id=\"l00817\" name=\"l00817\"></a><span class=\"lineno\">  817</span>                <span class=\"keyword\">delete</span> instance;</div>\n+<div class=\"line\"><a id=\"l00818\" name=\"l00818\"></a><span class=\"lineno\">  818</span>                <span class=\"keywordflow\">return</span> r;</div>\n+<div class=\"line\"><a id=\"l00819\" name=\"l00819\"></a><span class=\"lineno\">  819</span>            }</div>\n+<div class=\"line\"><a id=\"l00820\" name=\"l00820\"></a><span class=\"lineno\">  820</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00821\" name=\"l00821\"></a><span class=\"lineno\">  821</span>        }</div>\n+<div class=\"line\"><a id=\"l00822\" name=\"l00822\"></a><span class=\"lineno\">  822</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00823\" name=\"l00823\"></a><span class=\"lineno\">  823</span> </div>\n+<div class=\"line\"><a id=\"l00887\" name=\"l00887\"></a><span class=\"lineno\">  887</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l00888\" name=\"l00888\"></a><span class=\"lineno\">  888</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00889\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00889\" name=\"l00889\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#a8eb63e824548d0125a66fc5a4435d5f7\">  889</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01293.html#a8eb63e824548d0125a66fc5a4435d5f7\">EvalPatches</a>(</div>\n+<div class=\"line\"><a id=\"l00890\" name=\"l00890\"></a><span class=\"lineno\">  890</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00891\" name=\"l00891\"></a><span class=\"lineno\">  891</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00892\" name=\"l00892\"></a><span class=\"lineno\">  892</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00893\" name=\"l00893\"></a><span class=\"lineno\">  893</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00894\" name=\"l00894\"></a><span class=\"lineno\">  894</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l00895\" name=\"l00895\"></a><span class=\"lineno\">  895</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l00896\" name=\"l00896\"></a><span class=\"lineno\">  896</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00897\" name=\"l00897\"></a><span class=\"lineno\">  897</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00898\" name=\"l00898\"></a><span class=\"lineno\">  898</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l00899\" name=\"l00899\"></a><span class=\"lineno\">  899</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l00900\" name=\"l00900\"></a><span class=\"lineno\">  900</span>        <a class=\"code hl_class\" href=\"a01293.html\">MTLComputeEvaluator</a>* instance,</div>\n+<div class=\"line\"><a id=\"l00901\" name=\"l00901\"></a><span class=\"lineno\">  901</span>        <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context) {</div>\n+<div class=\"line\"><a id=\"l00902\" name=\"l00902\"></a><span class=\"lineno\">  902</span> </div>\n+<div class=\"line\"><a id=\"l00903\" name=\"l00903\"></a><span class=\"lineno\">  903</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l00904\" name=\"l00904\"></a><span class=\"lineno\">  904</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01293.html#a1e8b40a131056bb2e3868d4dd4a94ba6\">EvalPatches</a>(srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l00905\" name=\"l00905\"></a><span class=\"lineno\">  905</span>                                         dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00906\" name=\"l00906\"></a><span class=\"lineno\">  906</span>                                         duBuffer, duDesc,</div>\n+<div class=\"line\"><a id=\"l00907\" name=\"l00907\"></a><span class=\"lineno\">  907</span>                                         dvBuffer, dvDesc,</div>\n+<div class=\"line\"><a id=\"l00908\" name=\"l00908\"></a><span class=\"lineno\">  908</span>                                         duuBuffer, duuDesc,</div>\n+<div class=\"line\"><a id=\"l00909\" name=\"l00909\"></a><span class=\"lineno\">  909</span>                                         duvBuffer, duvDesc,</div>\n+<div class=\"line\"><a id=\"l00910\" name=\"l00910\"></a><span class=\"lineno\">  910</span>                                         dvvBuffer, dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00911\" name=\"l00911\"></a><span class=\"lineno\">  911</span>                                         numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l00912\" name=\"l00912\"></a><span class=\"lineno\">  912</span>                                         patchTable,</div>\n+<div class=\"line\"><a id=\"l00913\" name=\"l00913\"></a><span class=\"lineno\">  913</span>                                         context);</div>\n+<div class=\"line\"><a id=\"l00914\" name=\"l00914\"></a><span class=\"lineno\">  914</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00915\" name=\"l00915\"></a><span class=\"lineno\">  915</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n+<div class=\"line\"><a id=\"l00916\" name=\"l00916\"></a><span class=\"lineno\">  916</span>            instance = Create(srcDesc, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00917\" name=\"l00917\"></a><span class=\"lineno\">  917</span>                              duDesc, dvDesc,</div>\n+<div class=\"line\"><a id=\"l00918\" name=\"l00918\"></a><span class=\"lineno\">  918</span>                              duuDesc, duvDesc, dvvDesc, context);</div>\n+<div class=\"line\"><a id=\"l00919\" name=\"l00919\"></a><span class=\"lineno\">  919</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l00920\" name=\"l00920\"></a><span class=\"lineno\">  920</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01293.html#a1e8b40a131056bb2e3868d4dd4a94ba6\">EvalPatches</a>(srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l00921\" name=\"l00921\"></a><span class=\"lineno\">  921</span>                                               dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00922\" name=\"l00922\"></a><span class=\"lineno\">  922</span>                                               duBuffer, duDesc,</div>\n+<div class=\"line\"><a id=\"l00923\" name=\"l00923\"></a><span class=\"lineno\">  923</span>                                               dvBuffer, dvDesc,</div>\n+<div class=\"line\"><a id=\"l00924\" name=\"l00924\"></a><span class=\"lineno\">  924</span>                                               duuBuffer, duuDesc,</div>\n+<div class=\"line\"><a id=\"l00925\" name=\"l00925\"></a><span class=\"lineno\">  925</span>                                               duvBuffer, duvDesc,</div>\n+<div class=\"line\"><a id=\"l00926\" name=\"l00926\"></a><span class=\"lineno\">  926</span>                                               dvvBuffer, dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00927\" name=\"l00927\"></a><span class=\"lineno\">  927</span>                                               numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l00928\" name=\"l00928\"></a><span class=\"lineno\">  928</span>                                               patchTable,</div>\n+<div class=\"line\"><a id=\"l00929\" name=\"l00929\"></a><span class=\"lineno\">  929</span>                                               context);</div>\n+<div class=\"line\"><a id=\"l00930\" name=\"l00930\"></a><span class=\"lineno\">  930</span>                <span class=\"keyword\">delete</span> instance;</div>\n+<div class=\"line\"><a id=\"l00931\" name=\"l00931\"></a><span class=\"lineno\">  931</span>                <span class=\"keywordflow\">return</span> r;</div>\n+<div class=\"line\"><a id=\"l00932\" name=\"l00932\"></a><span class=\"lineno\">  932</span>            }</div>\n+<div class=\"line\"><a id=\"l00933\" name=\"l00933\"></a><span class=\"lineno\">  933</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00934\" name=\"l00934\"></a><span class=\"lineno\">  934</span>        }</div>\n+<div class=\"line\"><a id=\"l00935\" name=\"l00935\"></a><span class=\"lineno\">  935</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00936\" name=\"l00936\"></a><span class=\"lineno\">  936</span> </div>\n+<div class=\"line\"><a id=\"l00964\" name=\"l00964\"></a><span class=\"lineno\">  964</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l00965\" name=\"l00965\"></a><span class=\"lineno\">  965</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00966\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00966\" name=\"l00966\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#aab3cbda7289b76b077b371b92e9afaf3\">  966</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01293.html#aab3cbda7289b76b077b371b92e9afaf3\">EvalPatches</a>(</div>\n+<div class=\"line\"><a id=\"l00967\" name=\"l00967\"></a><span class=\"lineno\">  967</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00968\" name=\"l00968\"></a><span class=\"lineno\">  968</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00969\" name=\"l00969\"></a><span class=\"lineno\">  969</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00970\" name=\"l00970\"></a><span class=\"lineno\">  970</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l00971\" name=\"l00971\"></a><span class=\"lineno\">  971</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l00972\" name=\"l00972\"></a><span class=\"lineno\">  972</span>        <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00973\" name=\"l00973\"></a><span class=\"lineno\">  973</span> </div>\n+<div class=\"line\"><a id=\"l00974\" name=\"l00974\"></a><span class=\"lineno\">  974</span>        <span class=\"keywordflow\">return</span> EvalPatches(srcBuffer-&gt;BindMTLBuffer(context), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00975\" name=\"l00975\"></a><span class=\"lineno\">  975</span>                           dstBuffer-&gt;BindMTLBuffer(context), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00976\" name=\"l00976\"></a><span class=\"lineno\">  976</span>                           0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l00977\" name=\"l00977\"></a><span class=\"lineno\">  977</span>                           0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l00978\" name=\"l00978\"></a><span class=\"lineno\">  978</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00979\" name=\"l00979\"></a><span class=\"lineno\">  979</span>                           patchCoords-&gt;BindMTLBuffer(context),</div>\n+<div class=\"line\"><a id=\"l00980\" name=\"l00980\"></a><span class=\"lineno\">  980</span>                           patchTable-&gt;GetPatchArrays(),</div>\n+<div class=\"line\"><a id=\"l00981\" name=\"l00981\"></a><span class=\"lineno\">  981</span>                           patchTable-&gt;GetPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l00982\" name=\"l00982\"></a><span class=\"lineno\">  982</span>                           patchTable-&gt;GetPatchParamBuffer(),</div>\n+<div class=\"line\"><a id=\"l00983\" name=\"l00983\"></a><span class=\"lineno\">  983</span>                           context);</div>\n+<div class=\"line\"><a id=\"l00984\" name=\"l00984\"></a><span class=\"lineno\">  984</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00985\" name=\"l00985\"></a><span class=\"lineno\">  985</span> </div>\n+<div class=\"line\"><a id=\"l01023\" name=\"l01023\"></a><span class=\"lineno\"> 1023</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01024\" name=\"l01024\"></a><span class=\"lineno\"> 1024</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01025\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01025\" name=\"l01025\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#ade51863a5d2d4b642f8c78b9e85faf38\"> 1025</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01293.html#ade51863a5d2d4b642f8c78b9e85faf38\">EvalPatches</a>(</div>\n+<div class=\"line\"><a id=\"l01026\" name=\"l01026\"></a><span class=\"lineno\"> 1026</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01027\" name=\"l01027\"></a><span class=\"lineno\"> 1027</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01028\" name=\"l01028\"></a><span class=\"lineno\"> 1028</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l01029\" name=\"l01029\"></a><span class=\"lineno\"> 1029</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l01030\" name=\"l01030\"></a><span class=\"lineno\"> 1030</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01031\" name=\"l01031\"></a><span class=\"lineno\"> 1031</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01032\" name=\"l01032\"></a><span class=\"lineno\"> 1032</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l01033\" name=\"l01033\"></a><span class=\"lineno\"> 1033</span>        <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l01034\" name=\"l01034\"></a><span class=\"lineno\"> 1034</span> </div>\n+<div class=\"line\"><a id=\"l01035\" name=\"l01035\"></a><span class=\"lineno\"> 1035</span>        <span class=\"keywordflow\">return</span> EvalPatches(srcBuffer-&gt;BindMTLBuffer(context), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01036\" name=\"l01036\"></a><span class=\"lineno\"> 1036</span>                           dstBuffer-&gt;BindMTLBuffer(context), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01037\" name=\"l01037\"></a><span class=\"lineno\"> 1037</span>                           duBuffer-&gt;BindMTLBuffer(context),  duDesc,</div>\n+<div class=\"line\"><a id=\"l01038\" name=\"l01038\"></a><span class=\"lineno\"> 1038</span>                           dvBuffer-&gt;BindMTLBuffer(context),  dvDesc,</div>\n+<div class=\"line\"><a id=\"l01039\" name=\"l01039\"></a><span class=\"lineno\"> 1039</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01040\" name=\"l01040\"></a><span class=\"lineno\"> 1040</span>                           patchCoords-&gt;BindMTLBuffer(context),</div>\n+<div class=\"line\"><a id=\"l01041\" name=\"l01041\"></a><span class=\"lineno\"> 1041</span>                           patchTable-&gt;GetPatchArrays(),</div>\n+<div class=\"line\"><a id=\"l01042\" name=\"l01042\"></a><span class=\"lineno\"> 1042</span>                           patchTable-&gt;GetPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l01043\" name=\"l01043\"></a><span class=\"lineno\"> 1043</span>                           patchTable-&gt;GetPatchParamBuffer(),</div>\n+<div class=\"line\"><a id=\"l01044\" name=\"l01044\"></a><span class=\"lineno\"> 1044</span>                           context);</div>\n+<div class=\"line\"><a id=\"l01045\" name=\"l01045\"></a><span class=\"lineno\"> 1045</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01046\" name=\"l01046\"></a><span class=\"lineno\"> 1046</span> </div>\n+<div class=\"line\"><a id=\"l01102\" name=\"l01102\"></a><span class=\"lineno\"> 1102</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01103\" name=\"l01103\"></a><span class=\"lineno\"> 1103</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01104\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01104\" name=\"l01104\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#add1df0176df3d03028f001f041f26d5c\"> 1104</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01293.html#add1df0176df3d03028f001f041f26d5c\">EvalPatches</a>(</div>\n+<div class=\"line\"><a id=\"l01105\" name=\"l01105\"></a><span class=\"lineno\"> 1105</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01106\" name=\"l01106\"></a><span class=\"lineno\"> 1106</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01107\" name=\"l01107\"></a><span class=\"lineno\"> 1107</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l01108\" name=\"l01108\"></a><span class=\"lineno\"> 1108</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l01109\" name=\"l01109\"></a><span class=\"lineno\"> 1109</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l01110\" name=\"l01110\"></a><span class=\"lineno\"> 1110</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l01111\" name=\"l01111\"></a><span class=\"lineno\"> 1111</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l01112\" name=\"l01112\"></a><span class=\"lineno\"> 1112</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01113\" name=\"l01113\"></a><span class=\"lineno\"> 1113</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01114\" name=\"l01114\"></a><span class=\"lineno\"> 1114</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l01115\" name=\"l01115\"></a><span class=\"lineno\"> 1115</span>        <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l01116\" name=\"l01116\"></a><span class=\"lineno\"> 1116</span> </div>\n+<div class=\"line\"><a id=\"l01117\" name=\"l01117\"></a><span class=\"lineno\"> 1117</span>        <span class=\"keywordflow\">return</span> EvalPatches(srcBuffer-&gt;BindMTLBuffer(context), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01118\" name=\"l01118\"></a><span class=\"lineno\"> 1118</span>                           dstBuffer-&gt;BindMTLBuffer(context), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01119\" name=\"l01119\"></a><span class=\"lineno\"> 1119</span>                           duBuffer-&gt;BindMTLBuffer(context),  duDesc,</div>\n+<div class=\"line\"><a id=\"l01120\" name=\"l01120\"></a><span class=\"lineno\"> 1120</span>                           dvBuffer-&gt;BindMTLBuffer(context),  dvDesc,</div>\n+<div class=\"line\"><a id=\"l01121\" name=\"l01121\"></a><span class=\"lineno\"> 1121</span>                           duuBuffer-&gt;BindMTLBuffer(context), duuDesc,</div>\n+<div class=\"line\"><a id=\"l01122\" name=\"l01122\"></a><span class=\"lineno\"> 1122</span>                           duvBuffer-&gt;BindMTLBuffer(context), duvDesc,</div>\n+<div class=\"line\"><a id=\"l01123\" name=\"l01123\"></a><span class=\"lineno\"> 1123</span>                           dvvBuffer-&gt;BindMTLBuffer(context), dvvDesc,</div>\n+<div class=\"line\"><a id=\"l01124\" name=\"l01124\"></a><span class=\"lineno\"> 1124</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01125\" name=\"l01125\"></a><span class=\"lineno\"> 1125</span>                           patchCoords-&gt;BindMTLBuffer(context),</div>\n+<div class=\"line\"><a id=\"l01126\" name=\"l01126\"></a><span class=\"lineno\"> 1126</span>                           patchTable-&gt;GetPatchArrays(),</div>\n+<div class=\"line\"><a id=\"l01127\" name=\"l01127\"></a><span class=\"lineno\"> 1127</span>                           patchTable-&gt;GetPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l01128\" name=\"l01128\"></a><span class=\"lineno\"> 1128</span>                           patchTable-&gt;GetPatchParamBuffer(),</div>\n+<div class=\"line\"><a id=\"l01129\" name=\"l01129\"></a><span class=\"lineno\"> 1129</span>                           context);</div>\n+<div class=\"line\"><a id=\"l01130\" name=\"l01130\"></a><span class=\"lineno\"> 1130</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01131\" name=\"l01131\"></a><span class=\"lineno\"> 1131</span> </div>\n+<div class=\"line\"><a id=\"l01132\" name=\"l01132\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#af6b86e7d88e00a0f6e0e824818117f53\"> 1132</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01293.html#af6b86e7d88e00a0f6e0e824818117f53\">EvalPatches</a>(id&lt;MTLBuffer&gt; srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01133\" name=\"l01133\"></a><span class=\"lineno\"> 1133</span>                     id&lt;MTLBuffer&gt; dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01134\" name=\"l01134\"></a><span class=\"lineno\"> 1134</span>                     id&lt;MTLBuffer&gt; duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l01135\" name=\"l01135\"></a><span class=\"lineno\"> 1135</span>                     id&lt;MTLBuffer&gt; dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l01136\" name=\"l01136\"></a><span class=\"lineno\"> 1136</span>                     <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01137\" name=\"l01137\"></a><span class=\"lineno\"> 1137</span>                     id&lt;MTLBuffer&gt; patchCoordsBuffer,</div>\n+<div class=\"line\"><a id=\"l01138\" name=\"l01138\"></a><span class=\"lineno\"> 1138</span>                     <span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"a00912.html#a98098cd229f60d2397d84a76fe654a31\">PatchArrayVector</a> &amp;patchArrays,</div>\n+<div class=\"line\"><a id=\"l01139\" name=\"l01139\"></a><span class=\"lineno\"> 1139</span>                     id&lt;MTLBuffer&gt; patchIndexBuffer,</div>\n+<div class=\"line\"><a id=\"l01140\" name=\"l01140\"></a><span class=\"lineno\"> 1140</span>                     id&lt;MTLBuffer&gt; patchParamsBuffer,</div>\n+<div class=\"line\"><a id=\"l01141\" name=\"l01141\"></a><span class=\"lineno\"> 1141</span>                     <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l01142\" name=\"l01142\"></a><span class=\"lineno\"> 1142</span> </div>\n+<div class=\"line\"><a id=\"l01143\" name=\"l01143\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#a70f82ef5ff338e6170e98480997ecc86\"> 1143</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01293.html#a70f82ef5ff338e6170e98480997ecc86\">EvalPatches</a>(id&lt;MTLBuffer&gt; srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01144\" name=\"l01144\"></a><span class=\"lineno\"> 1144</span>                     id&lt;MTLBuffer&gt; dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01145\" name=\"l01145\"></a><span class=\"lineno\"> 1145</span>                     id&lt;MTLBuffer&gt; duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l01146\" name=\"l01146\"></a><span class=\"lineno\"> 1146</span>                     id&lt;MTLBuffer&gt; dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l01147\" name=\"l01147\"></a><span class=\"lineno\"> 1147</span>                     id&lt;MTLBuffer&gt; duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l01148\" name=\"l01148\"></a><span class=\"lineno\"> 1148</span>                     id&lt;MTLBuffer&gt; duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l01149\" name=\"l01149\"></a><span class=\"lineno\"> 1149</span>                     id&lt;MTLBuffer&gt; dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l01150\" name=\"l01150\"></a><span class=\"lineno\"> 1150</span>                     <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01151\" name=\"l01151\"></a><span class=\"lineno\"> 1151</span>                     id&lt;MTLBuffer&gt; patchCoordsBuffer,</div>\n+<div class=\"line\"><a id=\"l01152\" name=\"l01152\"></a><span class=\"lineno\"> 1152</span>                     <span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"a00912.html#a98098cd229f60d2397d84a76fe654a31\">PatchArrayVector</a> &amp;patchArrays,</div>\n+<div class=\"line\"><a id=\"l01153\" name=\"l01153\"></a><span class=\"lineno\"> 1153</span>                     id&lt;MTLBuffer&gt; patchIndexBuffer,</div>\n+<div class=\"line\"><a id=\"l01154\" name=\"l01154\"></a><span class=\"lineno\"> 1154</span>                     id&lt;MTLBuffer&gt; patchParamsBuffer,</div>\n+<div class=\"line\"><a id=\"l01155\" name=\"l01155\"></a><span class=\"lineno\"> 1155</span>                     <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l01156\" name=\"l01156\"></a><span class=\"lineno\"> 1156</span> </div>\n+<div class=\"line\"><a id=\"l01190\" name=\"l01190\"></a><span class=\"lineno\"> 1190</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01191\" name=\"l01191\"></a><span class=\"lineno\"> 1191</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01192\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01192\" name=\"l01192\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#a974cf5639aed61ef20e1ca50e9f866a6\"> 1192</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01293.html#a974cf5639aed61ef20e1ca50e9f866a6\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01193\" name=\"l01193\"></a><span class=\"lineno\"> 1193</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01194\" name=\"l01194\"></a><span class=\"lineno\"> 1194</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01195\" name=\"l01195\"></a><span class=\"lineno\"> 1195</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01196\" name=\"l01196\"></a><span class=\"lineno\"> 1196</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01197\" name=\"l01197\"></a><span class=\"lineno\"> 1197</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l01198\" name=\"l01198\"></a><span class=\"lineno\"> 1198</span>        <a class=\"code hl_class\" href=\"a01293.html\">MTLComputeEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n+<div class=\"line\"><a id=\"l01199\" name=\"l01199\"></a><span class=\"lineno\"> 1199</span>        <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* deviceContext) {</div>\n+<div class=\"line\"><a id=\"l01200\" name=\"l01200\"></a><span class=\"lineno\"> 1200</span> </div>\n+<div class=\"line\"><a id=\"l01201\" name=\"l01201\"></a><span class=\"lineno\"> 1201</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l01202\" name=\"l01202\"></a><span class=\"lineno\"> 1202</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01293.html#a974cf5639aed61ef20e1ca50e9f866a6\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01203\" name=\"l01203\"></a><span class=\"lineno\"> 1203</span>                                         srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l01204\" name=\"l01204\"></a><span class=\"lineno\"> 1204</span>                                         dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01205\" name=\"l01205\"></a><span class=\"lineno\"> 1205</span>                                         numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l01206\" name=\"l01206\"></a><span class=\"lineno\"> 1206</span>                                         patchTable,</div>\n+<div class=\"line\"><a id=\"l01207\" name=\"l01207\"></a><span class=\"lineno\"> 1207</span>                                         deviceContext);</div>\n+<div class=\"line\"><a id=\"l01208\" name=\"l01208\"></a><span class=\"lineno\"> 1208</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l01209\" name=\"l01209\"></a><span class=\"lineno\"> 1209</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n+<div class=\"line\"><a id=\"l01210\" name=\"l01210\"></a><span class=\"lineno\"> 1210</span>            instance = Create(srcDesc, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01211\" name=\"l01211\"></a><span class=\"lineno\"> 1211</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l01212\" name=\"l01212\"></a><span class=\"lineno\"> 1212</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l01213\" name=\"l01213\"></a><span class=\"lineno\"> 1213</span>                              deviceContext);</div>\n+<div class=\"line\"><a id=\"l01214\" name=\"l01214\"></a><span class=\"lineno\"> 1214</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l01215\" name=\"l01215\"></a><span class=\"lineno\"> 1215</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01293.html#a974cf5639aed61ef20e1ca50e9f866a6\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01216\" name=\"l01216\"></a><span class=\"lineno\"> 1216</span>                                               srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l01217\" name=\"l01217\"></a><span class=\"lineno\"> 1217</span>                                               dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01218\" name=\"l01218\"></a><span class=\"lineno\"> 1218</span>                                               numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l01219\" name=\"l01219\"></a><span class=\"lineno\"> 1219</span>                                               patchTable,</div>\n+<div class=\"line\"><a id=\"l01220\" name=\"l01220\"></a><span class=\"lineno\"> 1220</span>                                               deviceContext);</div>\n+<div class=\"line\"><a id=\"l01221\" name=\"l01221\"></a><span class=\"lineno\"> 1221</span>                <span class=\"keyword\">delete</span> instance;</div>\n+<div class=\"line\"><a id=\"l01222\" name=\"l01222\"></a><span class=\"lineno\"> 1222</span>                <span class=\"keywordflow\">return</span> r;</div>\n+<div class=\"line\"><a id=\"l01223\" name=\"l01223\"></a><span class=\"lineno\"> 1223</span>            }</div>\n+<div class=\"line\"><a id=\"l01224\" name=\"l01224\"></a><span class=\"lineno\"> 1224</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l01225\" name=\"l01225\"></a><span class=\"lineno\"> 1225</span>        }</div>\n+<div class=\"line\"><a id=\"l01226\" name=\"l01226\"></a><span class=\"lineno\"> 1226</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01227\" name=\"l01227\"></a><span class=\"lineno\"> 1227</span> </div>\n+<div class=\"line\"><a id=\"l01255\" name=\"l01255\"></a><span class=\"lineno\"> 1255</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01256\" name=\"l01256\"></a><span class=\"lineno\"> 1256</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01257\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01257\" name=\"l01257\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#ae5186e8abdeee89cbeef798c27c6ba6b\"> 1257</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01293.html#ae5186e8abdeee89cbeef798c27c6ba6b\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01258\" name=\"l01258\"></a><span class=\"lineno\"> 1258</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01259\" name=\"l01259\"></a><span class=\"lineno\"> 1259</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01260\" name=\"l01260\"></a><span class=\"lineno\"> 1260</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01261\" name=\"l01261\"></a><span class=\"lineno\"> 1261</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01262\" name=\"l01262\"></a><span class=\"lineno\"> 1262</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l01263\" name=\"l01263\"></a><span class=\"lineno\"> 1263</span>        <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* deviceContext)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l01264\" name=\"l01264\"></a><span class=\"lineno\"> 1264</span> </div>\n+<div class=\"line\"><a id=\"l01265\" name=\"l01265\"></a><span class=\"lineno\"> 1265</span>        <span class=\"keywordflow\">return</span> EvalPatches(srcBuffer-&gt;BindMTLBuffer(deviceContext), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01266\" name=\"l01266\"></a><span class=\"lineno\"> 1266</span>                           dstBuffer-&gt;BindMTLBuffer(deviceContext), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01267\" name=\"l01267\"></a><span class=\"lineno\"> 1267</span>                           0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l01268\" name=\"l01268\"></a><span class=\"lineno\"> 1268</span>                           0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l01269\" name=\"l01269\"></a><span class=\"lineno\"> 1269</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01270\" name=\"l01270\"></a><span class=\"lineno\"> 1270</span>                           patchCoords-&gt;BindMTLBuffer(deviceContext),</div>\n+<div class=\"line\"><a id=\"l01271\" name=\"l01271\"></a><span class=\"lineno\"> 1271</span>                           patchTable-&gt;GetVaryingPatchArrays(),</div>\n+<div class=\"line\"><a id=\"l01272\" name=\"l01272\"></a><span class=\"lineno\"> 1272</span>                           patchTable-&gt;GetVaryingPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l01273\" name=\"l01273\"></a><span class=\"lineno\"> 1273</span>                           patchTable-&gt;GetPatchParamBuffer(),</div>\n+<div class=\"line\"><a id=\"l01274\" name=\"l01274\"></a><span class=\"lineno\"> 1274</span>                           deviceContext</div>\n+<div class=\"line\"><a id=\"l01275\" name=\"l01275\"></a><span class=\"lineno\"> 1275</span>                           );</div>\n+<div class=\"line\"><a id=\"l01276\" name=\"l01276\"></a><span class=\"lineno\"> 1276</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01277\" name=\"l01277\"></a><span class=\"lineno\"> 1277</span> </div>\n+<div class=\"line\"><a id=\"l01323\" name=\"l01323\"></a><span class=\"lineno\"> 1323</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01324\" name=\"l01324\"></a><span class=\"lineno\"> 1324</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01325\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01325\" name=\"l01325\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#abc5af1154bccd394f7d1aba5d353206e\"> 1325</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01293.html#abc5af1154bccd394f7d1aba5d353206e\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01326\" name=\"l01326\"></a><span class=\"lineno\"> 1326</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01327\" name=\"l01327\"></a><span class=\"lineno\"> 1327</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01328\" name=\"l01328\"></a><span class=\"lineno\"> 1328</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l01329\" name=\"l01329\"></a><span class=\"lineno\"> 1329</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l01330\" name=\"l01330\"></a><span class=\"lineno\"> 1330</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01331\" name=\"l01331\"></a><span class=\"lineno\"> 1331</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01332\" name=\"l01332\"></a><span class=\"lineno\"> 1332</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l01333\" name=\"l01333\"></a><span class=\"lineno\"> 1333</span>        <a class=\"code hl_class\" href=\"a01293.html\">MTLComputeEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n+<div class=\"line\"><a id=\"l01334\" name=\"l01334\"></a><span class=\"lineno\"> 1334</span>        <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* deviceContext) {</div>\n+<div class=\"line\"><a id=\"l01335\" name=\"l01335\"></a><span class=\"lineno\"> 1335</span> </div>\n+<div class=\"line\"><a id=\"l01336\" name=\"l01336\"></a><span class=\"lineno\"> 1336</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l01337\" name=\"l01337\"></a><span class=\"lineno\"> 1337</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01293.html#a974cf5639aed61ef20e1ca50e9f866a6\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01338\" name=\"l01338\"></a><span class=\"lineno\"> 1338</span>                                         srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l01339\" name=\"l01339\"></a><span class=\"lineno\"> 1339</span>                                         dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01340\" name=\"l01340\"></a><span class=\"lineno\"> 1340</span>                                         duBuffer, duDesc,</div>\n+<div class=\"line\"><a id=\"l01341\" name=\"l01341\"></a><span class=\"lineno\"> 1341</span>                                         dvBuffer, dvDesc,</div>\n+<div class=\"line\"><a id=\"l01342\" name=\"l01342\"></a><span class=\"lineno\"> 1342</span>                                         numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l01343\" name=\"l01343\"></a><span class=\"lineno\"> 1343</span>                                         patchTable,</div>\n+<div class=\"line\"><a id=\"l01344\" name=\"l01344\"></a><span class=\"lineno\"> 1344</span>                                         deviceContext);</div>\n+<div class=\"line\"><a id=\"l01345\" name=\"l01345\"></a><span class=\"lineno\"> 1345</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l01346\" name=\"l01346\"></a><span class=\"lineno\"> 1346</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n+<div class=\"line\"><a id=\"l01347\" name=\"l01347\"></a><span class=\"lineno\"> 1347</span>            instance = Create(srcDesc, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01348\" name=\"l01348\"></a><span class=\"lineno\"> 1348</span>                              duDesc, dvDesc,</div>\n+<div class=\"line\"><a id=\"l01349\" name=\"l01349\"></a><span class=\"lineno\"> 1349</span>                              deviceContext);</div>\n+<div class=\"line\"><a id=\"l01350\" name=\"l01350\"></a><span class=\"lineno\"> 1350</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l01351\" name=\"l01351\"></a><span class=\"lineno\"> 1351</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01293.html#a974cf5639aed61ef20e1ca50e9f866a6\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01352\" name=\"l01352\"></a><span class=\"lineno\"> 1352</span>                                               srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l01353\" name=\"l01353\"></a><span class=\"lineno\"> 1353</span>                                               dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01354\" name=\"l01354\"></a><span class=\"lineno\"> 1354</span>                                               duBuffer, duDesc,</div>\n+<div class=\"line\"><a id=\"l01355\" name=\"l01355\"></a><span class=\"lineno\"> 1355</span>                                               dvBuffer, dvDesc,</div>\n+<div class=\"line\"><a id=\"l01356\" name=\"l01356\"></a><span class=\"lineno\"> 1356</span>                                               numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l01357\" name=\"l01357\"></a><span class=\"lineno\"> 1357</span>                                               patchTable,</div>\n+<div class=\"line\"><a id=\"l01358\" name=\"l01358\"></a><span class=\"lineno\"> 1358</span>                                               deviceContext);</div>\n+<div class=\"line\"><a id=\"l01359\" name=\"l01359\"></a><span class=\"lineno\"> 1359</span>                <span class=\"keyword\">delete</span> instance;</div>\n+<div class=\"line\"><a id=\"l01360\" name=\"l01360\"></a><span class=\"lineno\"> 1360</span>                <span class=\"keywordflow\">return</span> r;</div>\n+<div class=\"line\"><a id=\"l01361\" name=\"l01361\"></a><span class=\"lineno\"> 1361</span>            }</div>\n+<div class=\"line\"><a id=\"l01362\" name=\"l01362\"></a><span class=\"lineno\"> 1362</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l01363\" name=\"l01363\"></a><span class=\"lineno\"> 1363</span>        }</div>\n+<div class=\"line\"><a id=\"l01364\" name=\"l01364\"></a><span class=\"lineno\"> 1364</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01365\" name=\"l01365\"></a><span class=\"lineno\"> 1365</span> </div>\n+<div class=\"line\"><a id=\"l01405\" name=\"l01405\"></a><span class=\"lineno\"> 1405</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01406\" name=\"l01406\"></a><span class=\"lineno\"> 1406</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01407\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01407\" name=\"l01407\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#ae4dc813f334cc8b2e59659c0736bf2eb\"> 1407</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01293.html#ae4dc813f334cc8b2e59659c0736bf2eb\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01408\" name=\"l01408\"></a><span class=\"lineno\"> 1408</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01409\" name=\"l01409\"></a><span class=\"lineno\"> 1409</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01410\" name=\"l01410\"></a><span class=\"lineno\"> 1410</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l01411\" name=\"l01411\"></a><span class=\"lineno\"> 1411</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l01412\" name=\"l01412\"></a><span class=\"lineno\"> 1412</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01413\" name=\"l01413\"></a><span class=\"lineno\"> 1413</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01414\" name=\"l01414\"></a><span class=\"lineno\"> 1414</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l01415\" name=\"l01415\"></a><span class=\"lineno\"> 1415</span>        <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* deviceContext)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l01416\" name=\"l01416\"></a><span class=\"lineno\"> 1416</span> </div>\n+<div class=\"line\"><a id=\"l01417\" name=\"l01417\"></a><span class=\"lineno\"> 1417</span>        <span class=\"keywordflow\">return</span> EvalPatches(srcBuffer-&gt;BindMTLBuffer(deviceContext), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01418\" name=\"l01418\"></a><span class=\"lineno\"> 1418</span>                           dstBuffer-&gt;BindMTLBuffer(deviceContext), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01419\" name=\"l01419\"></a><span class=\"lineno\"> 1419</span>                           duBuffer-&gt;BindMTLBuffer(deviceContext),  duDesc,</div>\n+<div class=\"line\"><a id=\"l01420\" name=\"l01420\"></a><span class=\"lineno\"> 1420</span>                           dvBuffer-&gt;BindMTLBuffer(deviceContext),  dvDesc,</div>\n+<div class=\"line\"><a id=\"l01421\" name=\"l01421\"></a><span class=\"lineno\"> 1421</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01422\" name=\"l01422\"></a><span class=\"lineno\"> 1422</span>                           patchCoords-&gt;BindMTLBuffer(deviceContext),</div>\n+<div class=\"line\"><a id=\"l01423\" name=\"l01423\"></a><span class=\"lineno\"> 1423</span>                           patchTable-&gt;GetVaryingPatchArrays(),</div>\n+<div class=\"line\"><a id=\"l01424\" name=\"l01424\"></a><span class=\"lineno\"> 1424</span>                           patchTable-&gt;GetVaryingPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l01425\" name=\"l01425\"></a><span class=\"lineno\"> 1425</span>                           patchTable-&gt;GetPatchParamBuffer(),</div>\n+<div class=\"line\"><a id=\"l01426\" name=\"l01426\"></a><span class=\"lineno\"> 1426</span>                           deviceContext</div>\n+<div class=\"line\"><a id=\"l01427\" name=\"l01427\"></a><span class=\"lineno\"> 1427</span>                           );</div>\n+<div class=\"line\"><a id=\"l01428\" name=\"l01428\"></a><span class=\"lineno\"> 1428</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01429\" name=\"l01429\"></a><span class=\"lineno\"> 1429</span> </div>\n+<div class=\"line\"><a id=\"l01430\" name=\"l01430\"></a><span class=\"lineno\"> 1430</span> </div>\n+<div class=\"line\"><a id=\"l01494\" name=\"l01494\"></a><span class=\"lineno\"> 1494</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01495\" name=\"l01495\"></a><span class=\"lineno\"> 1495</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01496\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01496\" name=\"l01496\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#a6934af1b25d411774984ecec8c626470\"> 1496</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01293.html#a6934af1b25d411774984ecec8c626470\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01497\" name=\"l01497\"></a><span class=\"lineno\"> 1497</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01498\" name=\"l01498\"></a><span class=\"lineno\"> 1498</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01499\" name=\"l01499\"></a><span class=\"lineno\"> 1499</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l01500\" name=\"l01500\"></a><span class=\"lineno\"> 1500</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l01501\" name=\"l01501\"></a><span class=\"lineno\"> 1501</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l01502\" name=\"l01502\"></a><span class=\"lineno\"> 1502</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l01503\" name=\"l01503\"></a><span class=\"lineno\"> 1503</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l01504\" name=\"l01504\"></a><span class=\"lineno\"> 1504</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01505\" name=\"l01505\"></a><span class=\"lineno\"> 1505</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01506\" name=\"l01506\"></a><span class=\"lineno\"> 1506</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l01507\" name=\"l01507\"></a><span class=\"lineno\"> 1507</span>        <a class=\"code hl_class\" href=\"a01293.html\">MTLComputeEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n+<div class=\"line\"><a id=\"l01508\" name=\"l01508\"></a><span class=\"lineno\"> 1508</span>        <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* deviceContext) {</div>\n+<div class=\"line\"><a id=\"l01509\" name=\"l01509\"></a><span class=\"lineno\"> 1509</span> </div>\n+<div class=\"line\"><a id=\"l01510\" name=\"l01510\"></a><span class=\"lineno\"> 1510</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l01511\" name=\"l01511\"></a><span class=\"lineno\"> 1511</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01293.html#a974cf5639aed61ef20e1ca50e9f866a6\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01512\" name=\"l01512\"></a><span class=\"lineno\"> 1512</span>                                         srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l01513\" name=\"l01513\"></a><span class=\"lineno\"> 1513</span>                                         dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01514\" name=\"l01514\"></a><span class=\"lineno\"> 1514</span>                                         duBuffer, duDesc,</div>\n+<div class=\"line\"><a id=\"l01515\" name=\"l01515\"></a><span class=\"lineno\"> 1515</span>                                         dvBuffer, dvDesc,</div>\n+<div class=\"line\"><a id=\"l01516\" name=\"l01516\"></a><span class=\"lineno\"> 1516</span>                                         duuBuffer, duuDesc,</div>\n+<div class=\"line\"><a id=\"l01517\" name=\"l01517\"></a><span class=\"lineno\"> 1517</span>                                         duvBuffer, duvDesc,</div>\n+<div class=\"line\"><a id=\"l01518\" name=\"l01518\"></a><span class=\"lineno\"> 1518</span>                                         dvvBuffer, dvvDesc,</div>\n+<div class=\"line\"><a id=\"l01519\" name=\"l01519\"></a><span class=\"lineno\"> 1519</span>                                         numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l01520\" name=\"l01520\"></a><span class=\"lineno\"> 1520</span>                                         patchTable,</div>\n+<div class=\"line\"><a id=\"l01521\" name=\"l01521\"></a><span class=\"lineno\"> 1521</span>                                         deviceContext);</div>\n+<div class=\"line\"><a id=\"l01522\" name=\"l01522\"></a><span class=\"lineno\"> 1522</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l01523\" name=\"l01523\"></a><span class=\"lineno\"> 1523</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n+<div class=\"line\"><a id=\"l01524\" name=\"l01524\"></a><span class=\"lineno\"> 1524</span>            instance = Create(srcDesc, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01525\" name=\"l01525\"></a><span class=\"lineno\"> 1525</span>                              duDesc, dvDesc,</div>\n+<div class=\"line\"><a id=\"l01526\" name=\"l01526\"></a><span class=\"lineno\"> 1526</span>                              duuDesc, duvDesc, dvvDesc,</div>\n+<div class=\"line\"><a id=\"l01527\" name=\"l01527\"></a><span class=\"lineno\"> 1527</span>                              deviceContext);</div>\n+<div class=\"line\"><a id=\"l01528\" name=\"l01528\"></a><span class=\"lineno\"> 1528</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l01529\" name=\"l01529\"></a><span class=\"lineno\"> 1529</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01293.html#a974cf5639aed61ef20e1ca50e9f866a6\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01530\" name=\"l01530\"></a><span class=\"lineno\"> 1530</span>                                               srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l01531\" name=\"l01531\"></a><span class=\"lineno\"> 1531</span>                                               dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01532\" name=\"l01532\"></a><span class=\"lineno\"> 1532</span>                                               duBuffer, duDesc,</div>\n+<div class=\"line\"><a id=\"l01533\" name=\"l01533\"></a><span class=\"lineno\"> 1533</span>                                               dvBuffer, dvDesc,</div>\n+<div class=\"line\"><a id=\"l01534\" name=\"l01534\"></a><span class=\"lineno\"> 1534</span>                                               duuBuffer, duuDesc,</div>\n+<div class=\"line\"><a id=\"l01535\" name=\"l01535\"></a><span class=\"lineno\"> 1535</span>                                               duvBuffer, duvDesc,</div>\n+<div class=\"line\"><a id=\"l01536\" name=\"l01536\"></a><span class=\"lineno\"> 1536</span>                                               dvvBuffer, dvvDesc,</div>\n+<div class=\"line\"><a id=\"l01537\" name=\"l01537\"></a><span class=\"lineno\"> 1537</span>                                               numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l01538\" name=\"l01538\"></a><span class=\"lineno\"> 1538</span>                                               patchTable,</div>\n+<div class=\"line\"><a id=\"l01539\" name=\"l01539\"></a><span class=\"lineno\"> 1539</span>                                               deviceContext);</div>\n+<div class=\"line\"><a id=\"l01540\" name=\"l01540\"></a><span class=\"lineno\"> 1540</span>                <span class=\"keyword\">delete</span> instance;</div>\n+<div class=\"line\"><a id=\"l01541\" name=\"l01541\"></a><span class=\"lineno\"> 1541</span>                <span class=\"keywordflow\">return</span> r;</div>\n+<div class=\"line\"><a id=\"l01542\" name=\"l01542\"></a><span class=\"lineno\"> 1542</span>            }</div>\n+<div class=\"line\"><a id=\"l01543\" name=\"l01543\"></a><span class=\"lineno\"> 1543</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l01544\" name=\"l01544\"></a><span class=\"lineno\"> 1544</span>        }</div>\n+<div class=\"line\"><a id=\"l01545\" name=\"l01545\"></a><span class=\"lineno\"> 1545</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01546\" name=\"l01546\"></a><span class=\"lineno\"> 1546</span> </div>\n+<div class=\"line\"><a id=\"l01604\" name=\"l01604\"></a><span class=\"lineno\"> 1604</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01605\" name=\"l01605\"></a><span class=\"lineno\"> 1605</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01606\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01606\" name=\"l01606\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#a3642ea4f1fe75e6f580d195981f67767\"> 1606</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01293.html#a3642ea4f1fe75e6f580d195981f67767\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01607\" name=\"l01607\"></a><span class=\"lineno\"> 1607</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01608\" name=\"l01608\"></a><span class=\"lineno\"> 1608</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01609\" name=\"l01609\"></a><span class=\"lineno\"> 1609</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l01610\" name=\"l01610\"></a><span class=\"lineno\"> 1610</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l01611\" name=\"l01611\"></a><span class=\"lineno\"> 1611</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l01612\" name=\"l01612\"></a><span class=\"lineno\"> 1612</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l01613\" name=\"l01613\"></a><span class=\"lineno\"> 1613</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l01614\" name=\"l01614\"></a><span class=\"lineno\"> 1614</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01615\" name=\"l01615\"></a><span class=\"lineno\"> 1615</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01616\" name=\"l01616\"></a><span class=\"lineno\"> 1616</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l01617\" name=\"l01617\"></a><span class=\"lineno\"> 1617</span>        <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* deviceContext)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l01618\" name=\"l01618\"></a><span class=\"lineno\"> 1618</span> </div>\n+<div class=\"line\"><a id=\"l01619\" name=\"l01619\"></a><span class=\"lineno\"> 1619</span>        <span class=\"keywordflow\">return</span> EvalPatches(srcBuffer-&gt;BindMTLBuffer(deviceContext), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01620\" name=\"l01620\"></a><span class=\"lineno\"> 1620</span>                           dstBuffer-&gt;BindMTLBuffer(deviceContext), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01621\" name=\"l01621\"></a><span class=\"lineno\"> 1621</span>                           duBuffer-&gt;BindMTLBuffer(deviceContext),  duDesc,</div>\n+<div class=\"line\"><a id=\"l01622\" name=\"l01622\"></a><span class=\"lineno\"> 1622</span>                           dvBuffer-&gt;BindMTLBuffer(deviceContext),  dvDesc,</div>\n+<div class=\"line\"><a id=\"l01623\" name=\"l01623\"></a><span class=\"lineno\"> 1623</span>                           duuBuffer-&gt;BindMTLBuffer(deviceContext), duuDesc,</div>\n+<div class=\"line\"><a id=\"l01624\" name=\"l01624\"></a><span class=\"lineno\"> 1624</span>                           duvBuffer-&gt;BindMTLBuffer(deviceContext), duvDesc,</div>\n+<div class=\"line\"><a id=\"l01625\" name=\"l01625\"></a><span class=\"lineno\"> 1625</span>                           dvvBuffer-&gt;BindMTLBuffer(deviceContext), dvvDesc,</div>\n+<div class=\"line\"><a id=\"l01626\" name=\"l01626\"></a><span class=\"lineno\"> 1626</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01627\" name=\"l01627\"></a><span class=\"lineno\"> 1627</span>                           patchCoords-&gt;BindMTLBuffer(deviceContext),</div>\n+<div class=\"line\"><a id=\"l01628\" name=\"l01628\"></a><span class=\"lineno\"> 1628</span>                           patchTable-&gt;GetVaryingPatchArrays(),</div>\n+<div class=\"line\"><a id=\"l01629\" name=\"l01629\"></a><span class=\"lineno\"> 1629</span>                           patchTable-&gt;GetVaryingPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l01630\" name=\"l01630\"></a><span class=\"lineno\"> 1630</span>                           patchTable-&gt;GetPatchParamBuffer(),</div>\n+<div class=\"line\"><a id=\"l01631\" name=\"l01631\"></a><span class=\"lineno\"> 1631</span>                           deviceContext</div>\n+<div class=\"line\"><a id=\"l01632\" name=\"l01632\"></a><span class=\"lineno\"> 1632</span>                           );</div>\n+<div class=\"line\"><a id=\"l01633\" name=\"l01633\"></a><span class=\"lineno\"> 1633</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01634\" name=\"l01634\"></a><span class=\"lineno\"> 1634</span> </div>\n+<div class=\"line\"><a id=\"l01670\" name=\"l01670\"></a><span class=\"lineno\"> 1670</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01671\" name=\"l01671\"></a><span class=\"lineno\"> 1671</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01672\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01672\" name=\"l01672\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#a575672bd557a88df3702b3be802825d8\"> 1672</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01293.html#a575672bd557a88df3702b3be802825d8\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01673\" name=\"l01673\"></a><span class=\"lineno\"> 1673</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01674\" name=\"l01674\"></a><span class=\"lineno\"> 1674</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01675\" name=\"l01675\"></a><span class=\"lineno\"> 1675</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01676\" name=\"l01676\"></a><span class=\"lineno\"> 1676</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01677\" name=\"l01677\"></a><span class=\"lineno\"> 1677</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l01678\" name=\"l01678\"></a><span class=\"lineno\"> 1678</span>        <span class=\"keywordtype\">int</span> fvarChannel,</div>\n+<div class=\"line\"><a id=\"l01679\" name=\"l01679\"></a><span class=\"lineno\"> 1679</span>        <a class=\"code hl_class\" href=\"a01293.html\">MTLComputeEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n+<div class=\"line\"><a id=\"l01680\" name=\"l01680\"></a><span class=\"lineno\"> 1680</span>        <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* deviceContext) {</div>\n+<div class=\"line\"><a id=\"l01681\" name=\"l01681\"></a><span class=\"lineno\"> 1681</span> </div>\n+<div class=\"line\"><a id=\"l01682\" name=\"l01682\"></a><span class=\"lineno\"> 1682</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l01683\" name=\"l01683\"></a><span class=\"lineno\"> 1683</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01293.html#a575672bd557a88df3702b3be802825d8\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01684\" name=\"l01684\"></a><span class=\"lineno\"> 1684</span>                                         srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l01685\" name=\"l01685\"></a><span class=\"lineno\"> 1685</span>                                         dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01686\" name=\"l01686\"></a><span class=\"lineno\"> 1686</span>                                         numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l01687\" name=\"l01687\"></a><span class=\"lineno\"> 1687</span>                                         patchTable,</div>\n+<div class=\"line\"><a id=\"l01688\" name=\"l01688\"></a><span class=\"lineno\"> 1688</span>                                         fvarChannel,</div>\n+<div class=\"line\"><a id=\"l01689\" name=\"l01689\"></a><span class=\"lineno\"> 1689</span>                                         deviceContext);</div>\n+<div class=\"line\"><a id=\"l01690\" name=\"l01690\"></a><span class=\"lineno\"> 1690</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l01691\" name=\"l01691\"></a><span class=\"lineno\"> 1691</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n+<div class=\"line\"><a id=\"l01692\" name=\"l01692\"></a><span class=\"lineno\"> 1692</span>            instance = Create(srcDesc, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01693\" name=\"l01693\"></a><span class=\"lineno\"> 1693</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l01694\" name=\"l01694\"></a><span class=\"lineno\"> 1694</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l01695\" name=\"l01695\"></a><span class=\"lineno\"> 1695</span>                              deviceContext);</div>\n+<div class=\"line\"><a id=\"l01696\" name=\"l01696\"></a><span class=\"lineno\"> 1696</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l01697\" name=\"l01697\"></a><span class=\"lineno\"> 1697</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01293.html#a575672bd557a88df3702b3be802825d8\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01698\" name=\"l01698\"></a><span class=\"lineno\"> 1698</span>                                               srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l01699\" name=\"l01699\"></a><span class=\"lineno\"> 1699</span>                                               dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01700\" name=\"l01700\"></a><span class=\"lineno\"> 1700</span>                                               numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l01701\" name=\"l01701\"></a><span class=\"lineno\"> 1701</span>                                               patchTable,</div>\n+<div class=\"line\"><a id=\"l01702\" name=\"l01702\"></a><span class=\"lineno\"> 1702</span>                                               fvarChannel,</div>\n+<div class=\"line\"><a id=\"l01703\" name=\"l01703\"></a><span class=\"lineno\"> 1703</span>                                               deviceContext);</div>\n+<div class=\"line\"><a id=\"l01704\" name=\"l01704\"></a><span class=\"lineno\"> 1704</span>                <span class=\"keyword\">delete</span> instance;</div>\n+<div class=\"line\"><a id=\"l01705\" name=\"l01705\"></a><span class=\"lineno\"> 1705</span>                <span class=\"keywordflow\">return</span> r;</div>\n+<div class=\"line\"><a id=\"l01706\" name=\"l01706\"></a><span class=\"lineno\"> 1706</span>            }</div>\n+<div class=\"line\"><a id=\"l01707\" name=\"l01707\"></a><span class=\"lineno\"> 1707</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l01708\" name=\"l01708\"></a><span class=\"lineno\"> 1708</span>        }</div>\n+<div class=\"line\"><a id=\"l01709\" name=\"l01709\"></a><span class=\"lineno\"> 1709</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01710\" name=\"l01710\"></a><span class=\"lineno\"> 1710</span> </div>\n+<div class=\"line\"><a id=\"l01740\" name=\"l01740\"></a><span class=\"lineno\"> 1740</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01741\" name=\"l01741\"></a><span class=\"lineno\"> 1741</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01742\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01742\" name=\"l01742\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#a9349f2fdf4e170771e2216874f2bb23c\"> 1742</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01293.html#a9349f2fdf4e170771e2216874f2bb23c\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01743\" name=\"l01743\"></a><span class=\"lineno\"> 1743</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01744\" name=\"l01744\"></a><span class=\"lineno\"> 1744</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01745\" name=\"l01745\"></a><span class=\"lineno\"> 1745</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01746\" name=\"l01746\"></a><span class=\"lineno\"> 1746</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01747\" name=\"l01747\"></a><span class=\"lineno\"> 1747</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l01748\" name=\"l01748\"></a><span class=\"lineno\"> 1748</span>        <span class=\"keywordtype\">int</span> fvarChannel,</div>\n+<div class=\"line\"><a id=\"l01749\" name=\"l01749\"></a><span class=\"lineno\"> 1749</span>        <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* deviceContext)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l01750\" name=\"l01750\"></a><span class=\"lineno\"> 1750</span> </div>\n+<div class=\"line\"><a id=\"l01751\" name=\"l01751\"></a><span class=\"lineno\"> 1751</span>        <span class=\"keywordflow\">return</span> EvalPatches(srcBuffer-&gt;BindMTLBuffer(deviceContext), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01752\" name=\"l01752\"></a><span class=\"lineno\"> 1752</span>                           dstBuffer-&gt;BindMTLBuffer(deviceContext), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01753\" name=\"l01753\"></a><span class=\"lineno\"> 1753</span>                           0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l01754\" name=\"l01754\"></a><span class=\"lineno\"> 1754</span>                           0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l01755\" name=\"l01755\"></a><span class=\"lineno\"> 1755</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01756\" name=\"l01756\"></a><span class=\"lineno\"> 1756</span>                           patchCoords-&gt;BindMTLBuffer(deviceContext),</div>\n+<div class=\"line\"><a id=\"l01757\" name=\"l01757\"></a><span class=\"lineno\"> 1757</span>                           patchTable-&gt;GetFVarPatchArrays(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01758\" name=\"l01758\"></a><span class=\"lineno\"> 1758</span>                           patchTable-&gt;GetFVarPatchIndexBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01759\" name=\"l01759\"></a><span class=\"lineno\"> 1759</span>                           patchTable-&gt;GetFVarPatchParamBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01760\" name=\"l01760\"></a><span class=\"lineno\"> 1760</span>                           deviceContext</div>\n+<div class=\"line\"><a id=\"l01761\" name=\"l01761\"></a><span class=\"lineno\"> 1761</span>                           );</div>\n+<div class=\"line\"><a id=\"l01762\" name=\"l01762\"></a><span class=\"lineno\"> 1762</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01763\" name=\"l01763\"></a><span class=\"lineno\"> 1763</span> </div>\n+<div class=\"line\"><a id=\"l01811\" name=\"l01811\"></a><span class=\"lineno\"> 1811</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01812\" name=\"l01812\"></a><span class=\"lineno\"> 1812</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01813\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01813\" name=\"l01813\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#aa8e715d1d6cb338e9617ca3795a94021\"> 1813</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01293.html#aa8e715d1d6cb338e9617ca3795a94021\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01814\" name=\"l01814\"></a><span class=\"lineno\"> 1814</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01815\" name=\"l01815\"></a><span class=\"lineno\"> 1815</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01816\" name=\"l01816\"></a><span class=\"lineno\"> 1816</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l01817\" name=\"l01817\"></a><span class=\"lineno\"> 1817</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l01818\" name=\"l01818\"></a><span class=\"lineno\"> 1818</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01819\" name=\"l01819\"></a><span class=\"lineno\"> 1819</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01820\" name=\"l01820\"></a><span class=\"lineno\"> 1820</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l01821\" name=\"l01821\"></a><span class=\"lineno\"> 1821</span>        <span class=\"keywordtype\">int</span> fvarChannel,</div>\n+<div class=\"line\"><a id=\"l01822\" name=\"l01822\"></a><span class=\"lineno\"> 1822</span>        <a class=\"code hl_class\" href=\"a01293.html\">MTLComputeEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n+<div class=\"line\"><a id=\"l01823\" name=\"l01823\"></a><span class=\"lineno\"> 1823</span>        <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* deviceContext) {</div>\n+<div class=\"line\"><a id=\"l01824\" name=\"l01824\"></a><span class=\"lineno\"> 1824</span> </div>\n+<div class=\"line\"><a id=\"l01825\" name=\"l01825\"></a><span class=\"lineno\"> 1825</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l01826\" name=\"l01826\"></a><span class=\"lineno\"> 1826</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01293.html#a575672bd557a88df3702b3be802825d8\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01827\" name=\"l01827\"></a><span class=\"lineno\"> 1827</span>                                         srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l01828\" name=\"l01828\"></a><span class=\"lineno\"> 1828</span>                                         dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01829\" name=\"l01829\"></a><span class=\"lineno\"> 1829</span>                                         duBuffer, duDesc,</div>\n+<div class=\"line\"><a id=\"l01830\" name=\"l01830\"></a><span class=\"lineno\"> 1830</span>                                         dvBuffer, dvDesc,</div>\n+<div class=\"line\"><a id=\"l01831\" name=\"l01831\"></a><span class=\"lineno\"> 1831</span>                                         numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l01832\" name=\"l01832\"></a><span class=\"lineno\"> 1832</span>                                         patchTable,</div>\n+<div class=\"line\"><a id=\"l01833\" name=\"l01833\"></a><span class=\"lineno\"> 1833</span>                                         fvarChannel,</div>\n+<div class=\"line\"><a id=\"l01834\" name=\"l01834\"></a><span class=\"lineno\"> 1834</span>                                         deviceContext);</div>\n+<div class=\"line\"><a id=\"l01835\" name=\"l01835\"></a><span class=\"lineno\"> 1835</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l01836\" name=\"l01836\"></a><span class=\"lineno\"> 1836</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n+<div class=\"line\"><a id=\"l01837\" name=\"l01837\"></a><span class=\"lineno\"> 1837</span>            instance = Create(srcDesc, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01838\" name=\"l01838\"></a><span class=\"lineno\"> 1838</span>                              duDesc, dvDesc,</div>\n+<div class=\"line\"><a id=\"l01839\" name=\"l01839\"></a><span class=\"lineno\"> 1839</span>                              deviceContext);</div>\n+<div class=\"line\"><a id=\"l01840\" name=\"l01840\"></a><span class=\"lineno\"> 1840</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l01841\" name=\"l01841\"></a><span class=\"lineno\"> 1841</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01293.html#a575672bd557a88df3702b3be802825d8\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01842\" name=\"l01842\"></a><span class=\"lineno\"> 1842</span>                                               srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l01843\" name=\"l01843\"></a><span class=\"lineno\"> 1843</span>                                               dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01844\" name=\"l01844\"></a><span class=\"lineno\"> 1844</span>                                               duBuffer, duDesc,</div>\n+<div class=\"line\"><a id=\"l01845\" name=\"l01845\"></a><span class=\"lineno\"> 1845</span>                                               dvBuffer, dvDesc,</div>\n+<div class=\"line\"><a id=\"l01846\" name=\"l01846\"></a><span class=\"lineno\"> 1846</span>                                               numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l01847\" name=\"l01847\"></a><span class=\"lineno\"> 1847</span>                                               patchTable,</div>\n+<div class=\"line\"><a id=\"l01848\" name=\"l01848\"></a><span class=\"lineno\"> 1848</span>                                               fvarChannel,</div>\n+<div class=\"line\"><a id=\"l01849\" name=\"l01849\"></a><span class=\"lineno\"> 1849</span>                                               deviceContext);</div>\n+<div class=\"line\"><a id=\"l01850\" name=\"l01850\"></a><span class=\"lineno\"> 1850</span>                <span class=\"keyword\">delete</span> instance;</div>\n+<div class=\"line\"><a id=\"l01851\" name=\"l01851\"></a><span class=\"lineno\"> 1851</span>                <span class=\"keywordflow\">return</span> r;</div>\n+<div class=\"line\"><a id=\"l01852\" name=\"l01852\"></a><span class=\"lineno\"> 1852</span>            }</div>\n+<div class=\"line\"><a id=\"l01853\" name=\"l01853\"></a><span class=\"lineno\"> 1853</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l01854\" name=\"l01854\"></a><span class=\"lineno\"> 1854</span>        }</div>\n+<div class=\"line\"><a id=\"l01855\" name=\"l01855\"></a><span class=\"lineno\"> 1855</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01856\" name=\"l01856\"></a><span class=\"lineno\"> 1856</span> </div>\n+<div class=\"line\"><a id=\"l01898\" name=\"l01898\"></a><span class=\"lineno\"> 1898</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01899\" name=\"l01899\"></a><span class=\"lineno\"> 1899</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01900\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01900\" name=\"l01900\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#a4b6168e3efdb657463a20aa39ccdb38f\"> 1900</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01293.html#a4b6168e3efdb657463a20aa39ccdb38f\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01901\" name=\"l01901\"></a><span class=\"lineno\"> 1901</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01902\" name=\"l01902\"></a><span class=\"lineno\"> 1902</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01903\" name=\"l01903\"></a><span class=\"lineno\"> 1903</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l01904\" name=\"l01904\"></a><span class=\"lineno\"> 1904</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l01905\" name=\"l01905\"></a><span class=\"lineno\"> 1905</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01906\" name=\"l01906\"></a><span class=\"lineno\"> 1906</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01907\" name=\"l01907\"></a><span class=\"lineno\"> 1907</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l01908\" name=\"l01908\"></a><span class=\"lineno\"> 1908</span>        <span class=\"keywordtype\">int</span> fvarChannel,</div>\n+<div class=\"line\"><a id=\"l01909\" name=\"l01909\"></a><span class=\"lineno\"> 1909</span>        <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* deviceContext)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l01910\" name=\"l01910\"></a><span class=\"lineno\"> 1910</span> </div>\n+<div class=\"line\"><a id=\"l01911\" name=\"l01911\"></a><span class=\"lineno\"> 1911</span>        <span class=\"keywordflow\">return</span> EvalPatches(srcBuffer-&gt;BindMTLBuffer(deviceContext), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01912\" name=\"l01912\"></a><span class=\"lineno\"> 1912</span>                           dstBuffer-&gt;BindMTLBuffer(deviceContext), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01913\" name=\"l01913\"></a><span class=\"lineno\"> 1913</span>                           duBuffer-&gt;BindMTLBuffer(deviceContext),  duDesc,</div>\n+<div class=\"line\"><a id=\"l01914\" name=\"l01914\"></a><span class=\"lineno\"> 1914</span>                           dvBuffer-&gt;BindMTLBuffer(deviceContext),  dvDesc,</div>\n+<div class=\"line\"><a id=\"l01915\" name=\"l01915\"></a><span class=\"lineno\"> 1915</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01916\" name=\"l01916\"></a><span class=\"lineno\"> 1916</span>                           patchCoords-&gt;BindMTLBuffer(deviceContext),</div>\n+<div class=\"line\"><a id=\"l01917\" name=\"l01917\"></a><span class=\"lineno\"> 1917</span>                           patchTable-&gt;GetFVarPatchArrays(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01918\" name=\"l01918\"></a><span class=\"lineno\"> 1918</span>                           patchTable-&gt;GetFVarPatchIndexBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01919\" name=\"l01919\"></a><span class=\"lineno\"> 1919</span>                           patchTable-&gt;GetFVarPatchParamBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01920\" name=\"l01920\"></a><span class=\"lineno\"> 1920</span>                           deviceContext</div>\n+<div class=\"line\"><a id=\"l01921\" name=\"l01921\"></a><span class=\"lineno\"> 1921</span>                           );</div>\n+<div class=\"line\"><a id=\"l01922\" name=\"l01922\"></a><span class=\"lineno\"> 1922</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01923\" name=\"l01923\"></a><span class=\"lineno\"> 1923</span> </div>\n+<div class=\"line\"><a id=\"l01989\" name=\"l01989\"></a><span class=\"lineno\"> 1989</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01990\" name=\"l01990\"></a><span class=\"lineno\"> 1990</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01991\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01991\" name=\"l01991\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#a0b18216ba91299d39434a936ff58309b\"> 1991</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01293.html#a0b18216ba91299d39434a936ff58309b\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01992\" name=\"l01992\"></a><span class=\"lineno\"> 1992</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01993\" name=\"l01993\"></a><span class=\"lineno\"> 1993</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01994\" name=\"l01994\"></a><span class=\"lineno\"> 1994</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l01995\" name=\"l01995\"></a><span class=\"lineno\"> 1995</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l01996\" name=\"l01996\"></a><span class=\"lineno\"> 1996</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l01997\" name=\"l01997\"></a><span class=\"lineno\"> 1997</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l01998\" name=\"l01998\"></a><span class=\"lineno\"> 1998</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l01999\" name=\"l01999\"></a><span class=\"lineno\"> 1999</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l02000\" name=\"l02000\"></a><span class=\"lineno\"> 2000</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l02001\" name=\"l02001\"></a><span class=\"lineno\"> 2001</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l02002\" name=\"l02002\"></a><span class=\"lineno\"> 2002</span>        <span class=\"keywordtype\">int</span> fvarChannel,</div>\n+<div class=\"line\"><a id=\"l02003\" name=\"l02003\"></a><span class=\"lineno\"> 2003</span>        <a class=\"code hl_class\" href=\"a01293.html\">MTLComputeEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n+<div class=\"line\"><a id=\"l02004\" name=\"l02004\"></a><span class=\"lineno\"> 2004</span>        <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* deviceContext) {</div>\n+<div class=\"line\"><a id=\"l02005\" name=\"l02005\"></a><span class=\"lineno\"> 2005</span> </div>\n+<div class=\"line\"><a id=\"l02006\" name=\"l02006\"></a><span class=\"lineno\"> 2006</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l02007\" name=\"l02007\"></a><span class=\"lineno\"> 2007</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01293.html#a575672bd557a88df3702b3be802825d8\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l02008\" name=\"l02008\"></a><span class=\"lineno\"> 2008</span>                                         srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l02009\" name=\"l02009\"></a><span class=\"lineno\"> 2009</span>                                         dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l02010\" name=\"l02010\"></a><span class=\"lineno\"> 2010</span>                                         duBuffer, duDesc,</div>\n+<div class=\"line\"><a id=\"l02011\" name=\"l02011\"></a><span class=\"lineno\"> 2011</span>                                         dvBuffer, dvDesc,</div>\n+<div class=\"line\"><a id=\"l02012\" name=\"l02012\"></a><span class=\"lineno\"> 2012</span>                                         duuBuffer, duuDesc,</div>\n+<div class=\"line\"><a id=\"l02013\" name=\"l02013\"></a><span class=\"lineno\"> 2013</span>                                         duvBuffer, duvDesc,</div>\n+<div class=\"line\"><a id=\"l02014\" name=\"l02014\"></a><span class=\"lineno\"> 2014</span>                                         dvvBuffer, dvvDesc,</div>\n+<div class=\"line\"><a id=\"l02015\" name=\"l02015\"></a><span class=\"lineno\"> 2015</span>                                         numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l02016\" name=\"l02016\"></a><span class=\"lineno\"> 2016</span>                                         patchTable,</div>\n+<div class=\"line\"><a id=\"l02017\" name=\"l02017\"></a><span class=\"lineno\"> 2017</span>                                         fvarChannel,</div>\n+<div class=\"line\"><a id=\"l02018\" name=\"l02018\"></a><span class=\"lineno\"> 2018</span>                                         deviceContext);</div>\n+<div class=\"line\"><a id=\"l02019\" name=\"l02019\"></a><span class=\"lineno\"> 2019</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l02020\" name=\"l02020\"></a><span class=\"lineno\"> 2020</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n+<div class=\"line\"><a id=\"l02021\" name=\"l02021\"></a><span class=\"lineno\"> 2021</span>            instance = Create(srcDesc, dstDesc,</div>\n+<div class=\"line\"><a id=\"l02022\" name=\"l02022\"></a><span class=\"lineno\"> 2022</span>                              duDesc, dvDesc,</div>\n+<div class=\"line\"><a id=\"l02023\" name=\"l02023\"></a><span class=\"lineno\"> 2023</span>                              duuDesc, duvDesc, dvvDesc,</div>\n+<div class=\"line\"><a id=\"l02024\" name=\"l02024\"></a><span class=\"lineno\"> 2024</span>                              deviceContext);</div>\n+<div class=\"line\"><a id=\"l02025\" name=\"l02025\"></a><span class=\"lineno\"> 2025</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l02026\" name=\"l02026\"></a><span class=\"lineno\"> 2026</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01293.html#a575672bd557a88df3702b3be802825d8\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l02027\" name=\"l02027\"></a><span class=\"lineno\"> 2027</span>                                               srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l02028\" name=\"l02028\"></a><span class=\"lineno\"> 2028</span>                                               dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l02029\" name=\"l02029\"></a><span class=\"lineno\"> 2029</span>                                               duBuffer, duDesc,</div>\n+<div class=\"line\"><a id=\"l02030\" name=\"l02030\"></a><span class=\"lineno\"> 2030</span>                                               dvBuffer, dvDesc,</div>\n+<div class=\"line\"><a id=\"l02031\" name=\"l02031\"></a><span class=\"lineno\"> 2031</span>                                               duuBuffer, duuDesc,</div>\n+<div class=\"line\"><a id=\"l02032\" name=\"l02032\"></a><span class=\"lineno\"> 2032</span>                                               duvBuffer, duvDesc,</div>\n+<div class=\"line\"><a id=\"l02033\" name=\"l02033\"></a><span class=\"lineno\"> 2033</span>                                               dvvBuffer, dvvDesc,</div>\n+<div class=\"line\"><a id=\"l02034\" name=\"l02034\"></a><span class=\"lineno\"> 2034</span>                                               numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l02035\" name=\"l02035\"></a><span class=\"lineno\"> 2035</span>                                               patchTable,</div>\n+<div class=\"line\"><a id=\"l02036\" name=\"l02036\"></a><span class=\"lineno\"> 2036</span>                                               fvarChannel,</div>\n+<div class=\"line\"><a id=\"l02037\" name=\"l02037\"></a><span class=\"lineno\"> 2037</span>                                               deviceContext);</div>\n+<div class=\"line\"><a id=\"l02038\" name=\"l02038\"></a><span class=\"lineno\"> 2038</span>                <span class=\"keyword\">delete</span> instance;</div>\n+<div class=\"line\"><a id=\"l02039\" name=\"l02039\"></a><span class=\"lineno\"> 2039</span>                <span class=\"keywordflow\">return</span> r;</div>\n+<div class=\"line\"><a id=\"l02040\" name=\"l02040\"></a><span class=\"lineno\"> 2040</span>            }</div>\n+<div class=\"line\"><a id=\"l02041\" name=\"l02041\"></a><span class=\"lineno\"> 2041</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l02042\" name=\"l02042\"></a><span class=\"lineno\"> 2042</span>        }</div>\n+<div class=\"line\"><a id=\"l02043\" name=\"l02043\"></a><span class=\"lineno\"> 2043</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l02044\" name=\"l02044\"></a><span class=\"lineno\"> 2044</span> </div>\n+<div class=\"line\"><a id=\"l02104\" name=\"l02104\"></a><span class=\"lineno\"> 2104</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l02105\" name=\"l02105\"></a><span class=\"lineno\"> 2105</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen02106\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l02106\" name=\"l02106\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#a7ae29a65e3cfdc045541528dd58ee2d5\"> 2106</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01293.html#a7ae29a65e3cfdc045541528dd58ee2d5\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l02107\" name=\"l02107\"></a><span class=\"lineno\"> 2107</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l02108\" name=\"l02108\"></a><span class=\"lineno\"> 2108</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l02109\" name=\"l02109\"></a><span class=\"lineno\"> 2109</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l02110\" name=\"l02110\"></a><span class=\"lineno\"> 2110</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l02111\" name=\"l02111\"></a><span class=\"lineno\"> 2111</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l02112\" name=\"l02112\"></a><span class=\"lineno\"> 2112</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l02113\" name=\"l02113\"></a><span class=\"lineno\"> 2113</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l02114\" name=\"l02114\"></a><span class=\"lineno\"> 2114</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l02115\" name=\"l02115\"></a><span class=\"lineno\"> 2115</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l02116\" name=\"l02116\"></a><span class=\"lineno\"> 2116</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l02117\" name=\"l02117\"></a><span class=\"lineno\"> 2117</span>        <span class=\"keywordtype\">int</span> fvarChannel,</div>\n+<div class=\"line\"><a id=\"l02118\" name=\"l02118\"></a><span class=\"lineno\"> 2118</span>        <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* deviceContext)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l02119\" name=\"l02119\"></a><span class=\"lineno\"> 2119</span> </div>\n+<div class=\"line\"><a id=\"l02120\" name=\"l02120\"></a><span class=\"lineno\"> 2120</span>        <span class=\"keywordflow\">return</span> EvalPatches(srcBuffer-&gt;BindMTLBuffer(deviceContext), srcDesc,</div>\n+<div class=\"line\"><a id=\"l02121\" name=\"l02121\"></a><span class=\"lineno\"> 2121</span>                           dstBuffer-&gt;BindMTLBuffer(deviceContext), dstDesc,</div>\n+<div class=\"line\"><a id=\"l02122\" name=\"l02122\"></a><span class=\"lineno\"> 2122</span>                           duBuffer-&gt;BindMTLBuffer(deviceContext),  duDesc,</div>\n+<div class=\"line\"><a id=\"l02123\" name=\"l02123\"></a><span class=\"lineno\"> 2123</span>                           dvBuffer-&gt;BindMTLBuffer(deviceContext),  dvDesc,</div>\n+<div class=\"line\"><a id=\"l02124\" name=\"l02124\"></a><span class=\"lineno\"> 2124</span>                           duuBuffer-&gt;BindMTLBuffer(deviceContext), duuDesc,</div>\n+<div class=\"line\"><a id=\"l02125\" name=\"l02125\"></a><span class=\"lineno\"> 2125</span>                           duvBuffer-&gt;BindMTLBuffer(deviceContext), duvDesc,</div>\n+<div class=\"line\"><a id=\"l02126\" name=\"l02126\"></a><span class=\"lineno\"> 2126</span>                           dvvBuffer-&gt;BindMTLBuffer(deviceContext), dvvDesc,</div>\n+<div class=\"line\"><a id=\"l02127\" name=\"l02127\"></a><span class=\"lineno\"> 2127</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l02128\" name=\"l02128\"></a><span class=\"lineno\"> 2128</span>                           patchCoords-&gt;BindMTLBuffer(deviceContext),</div>\n+<div class=\"line\"><a id=\"l02129\" name=\"l02129\"></a><span class=\"lineno\"> 2129</span>                           patchTable-&gt;GetFVarPatchArrays(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l02130\" name=\"l02130\"></a><span class=\"lineno\"> 2130</span>                           patchTable-&gt;GetFVarPatchIndexBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l02131\" name=\"l02131\"></a><span class=\"lineno\"> 2131</span>                           patchTable-&gt;GetFVarPatchParamBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l02132\" name=\"l02132\"></a><span class=\"lineno\"> 2132</span>                           fvarChannel,</div>\n+<div class=\"line\"><a id=\"l02133\" name=\"l02133\"></a><span class=\"lineno\"> 2133</span>                           deviceContext</div>\n+<div class=\"line\"><a id=\"l02134\" name=\"l02134\"></a><span class=\"lineno\"> 2134</span>                           );</div>\n+<div class=\"line\"><a id=\"l02135\" name=\"l02135\"></a><span class=\"lineno\"> 2135</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l02136\" name=\"l02136\"></a><span class=\"lineno\"> 2136</span> </div>\n+<div class=\"line\"><a id=\"l02138\" name=\"l02138\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#af6645aabc094e7549c6899915ce34f67\"> 2138</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01293.html#af6645aabc094e7549c6899915ce34f67\">Compile</a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l02139\" name=\"l02139\"></a><span class=\"lineno\"> 2139</span>                 <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l02140\" name=\"l02140\"></a><span class=\"lineno\"> 2140</span>                 <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l02141\" name=\"l02141\"></a><span class=\"lineno\"> 2141</span>                 <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l02142\" name=\"l02142\"></a><span class=\"lineno\"> 2142</span>                 <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l02143\" name=\"l02143\"></a><span class=\"lineno\"> 2143</span>                 <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l02144\" name=\"l02144\"></a><span class=\"lineno\"> 2144</span>                 <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l02145\" name=\"l02145\"></a><span class=\"lineno\"> 2145</span>                 <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context);</div>\n+<div class=\"line\"><a id=\"l02146\" name=\"l02146\"></a><span class=\"lineno\"> 2146</span> </div>\n+<div class=\"line\"><a id=\"l02148\" name=\"l02148\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#a7e02041f843415c1056ea2ca3f7d0b62\"> 2148</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01293.html#a7e02041f843415c1056ea2ca3f7d0b62\">Synchronize</a>(<a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context);</div>\n+<div class=\"line\"><a id=\"l02149\" name=\"l02149\"></a><span class=\"lineno\"> 2149</span> </div>\n+<div class=\"line\"><a id=\"l02150\" name=\"l02150\"></a><span class=\"lineno\"> 2150</span>    <span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l02151\" name=\"l02151\"></a><span class=\"lineno\"> 2151</span> </div>\n+<div class=\"line\"><a id=\"l02152\" name=\"l02152\"></a><span class=\"lineno\"> 2152</span>    id&lt;MTLLibrary&gt; _computeLibrary;</div>\n+<div class=\"line\"><a id=\"l02153\" name=\"l02153\"></a><span class=\"lineno\"> 2153</span>    id&lt;MTLComputePipelineState&gt; _evalStencils;</div>\n+<div class=\"line\"><a id=\"l02154\" name=\"l02154\"></a><span class=\"lineno\"> 2154</span>    id&lt;MTLComputePipelineState&gt; _evalPatches;</div>\n+<div class=\"line\"><a id=\"l02155\" name=\"l02155\"></a><span class=\"lineno\"> 2155</span>    id&lt;MTLBuffer&gt; _parameterBuffer;</div>\n+<div class=\"line\"><a id=\"l02156\" name=\"l02156\"></a><span class=\"lineno\"> 2156</span> </div>\n+<div class=\"line\"><a id=\"l02157\" name=\"l02157\"></a><span class=\"lineno\"> 2157</span>    <span class=\"keywordtype\">int</span> _workGroupSize;</div>\n+<div class=\"line\"><a id=\"l02158\" name=\"l02158\"></a><span class=\"lineno\"> 2158</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l02159\" name=\"l02159\"></a><span class=\"lineno\"> 2159</span> </div>\n+<div class=\"line\"><a id=\"l02160\" name=\"l02160\"></a><span class=\"lineno\"> 2160</span>} <span class=\"comment\">//end namespace Osd</span></div>\n+<div class=\"line\"><a id=\"l02161\" name=\"l02161\"></a><span class=\"lineno\"> 2161</span> </div>\n+<div class=\"line\"><a id=\"l02162\" name=\"l02162\"></a><span class=\"lineno\"> 2162</span>} <span class=\"comment\">//end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l02163\" name=\"l02163\"></a><span class=\"lineno\"> 2163</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l02164\" name=\"l02164\"></a><span class=\"lineno\"> 2164</span> </div>\n+<div class=\"line\"><a id=\"l02165\" name=\"l02165\"></a><span class=\"lineno\"> 2165</span>} <span class=\"comment\">//end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l02166\" name=\"l02166\"></a><span class=\"lineno\"> 2166</span> </div>\n+<div class=\"line\"><a id=\"l02167\" name=\"l02167\"></a><span class=\"lineno\"> 2167</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// OPENSUBDIV3_OSD_MTL_COMPUTE_EVALUATOR_H</span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa00912_html_a98098cd229f60d2397d84a76fe654a31\"><div class=\"ttname\"><a href=\"a00912.html#a98098cd229f60d2397d84a76fe654a31\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchArrayVector</a></div><div class=\"ttdeci\">std::vector&lt; PatchArray &gt; PatchArrayVector</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00132\">types.h:132</a></div></div>\n+<div class=\"ttc\" id=\"aa01065_html\"><div class=\"ttname\"><a href=\"a01065.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTable</a></div><div class=\"ttdoc\">Stencil table class wrapping the template for compatibility.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00273\">stencilTable.h:273</a></div></div>\n+<div class=\"ttc\" id=\"aa01081_html\"><div class=\"ttname\"><a href=\"a01081.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTable</a></div><div class=\"ttdoc\">Limit stencil table class wrapping the template for compatibility.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00583\">stencilTable.h:583</a></div></div>\n+<div class=\"ttc\" id=\"aa01141_html\"><div class=\"ttname\"><a href=\"a01141.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::BufferDescriptor</a></div><div class=\"ttdoc\">BufferDescriptor is a struct which describes buffer elements in interleaved data buffers....</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00061\">bufferDescriptor.h:61</a></div></div>\n+<div class=\"ttc\" id=\"aa01285_html\"><div class=\"ttname\"><a href=\"a01285.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLContext</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00698_source.html#l00040\">mtlCommon.h:40</a></div></div>\n+<div class=\"ttc\" id=\"aa01289_html\"><div class=\"ttname\"><a href=\"a01289.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLStencilTable</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00689_source.html#l00050\">mtlComputeEvaluator.h:51</a></div></div>\n+<div class=\"ttc\" id=\"aa01289_html_a015dc72c3360b4841ee2b3feb06c106f\"><div class=\"ttname\"><a href=\"a01289.html#a015dc72c3360b4841ee2b3feb06c106f\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLStencilTable::MTLStencilTable</a></div><div class=\"ttdeci\">MTLStencilTable(Far::LimitStencilTable const *stencilTable, MTLContext *context)</div></div>\n+<div class=\"ttc\" id=\"aa01289_html_a13aa05ad0482bad5182feb3cd75b4168\"><div class=\"ttname\"><a href=\"a01289.html#a13aa05ad0482bad5182feb3cd75b4168\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLStencilTable::GetDuWeightsBuffer</a></div><div class=\"ttdeci\">id&lt; MTLBuffer &gt; GetDuWeightsBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00689_source.html#l00069\">mtlComputeEvaluator.h:69</a></div></div>\n+<div class=\"ttc\" id=\"aa01289_html_a1ace4fd3d4d8b840a5b48415175ea8bc\"><div class=\"ttname\"><a href=\"a01289.html#a1ace4fd3d4d8b840a5b48415175ea8bc\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLStencilTable::~MTLStencilTable</a></div><div class=\"ttdeci\">~MTLStencilTable()</div></div>\n+<div class=\"ttc\" id=\"aa01289_html_a2f1e271aba868c291f9e0a9e9d1ace47\"><div class=\"ttname\"><a href=\"a01289.html#a2f1e271aba868c291f9e0a9e9d1ace47\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLStencilTable::GetDvvWeightsBuffer</a></div><div class=\"ttdeci\">id&lt; MTLBuffer &gt; GetDvvWeightsBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00689_source.html#l00073\">mtlComputeEvaluator.h:73</a></div></div>\n+<div class=\"ttc\" id=\"aa01289_html_a45e329ffe9fe4e32a1b21bfc89a6763f\"><div class=\"ttname\"><a href=\"a01289.html#a45e329ffe9fe4e32a1b21bfc89a6763f\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLStencilTable::MTLStencilTable</a></div><div class=\"ttdeci\">MTLStencilTable(Far::StencilTable const *stencilTable, MTLContext *context)</div></div>\n+<div class=\"ttc\" id=\"aa01289_html_a4dec46cc7a06c6c1687109e48f04e085\"><div class=\"ttname\"><a href=\"a01289.html#a4dec46cc7a06c6c1687109e48f04e085\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLStencilTable::GetDuuWeightsBuffer</a></div><div class=\"ttdeci\">id&lt; MTLBuffer &gt; GetDuuWeightsBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00689_source.html#l00071\">mtlComputeEvaluator.h:71</a></div></div>\n+<div class=\"ttc\" id=\"aa01289_html_a6175e9daf70e8c27fb5122546df3fb1f\"><div class=\"ttname\"><a href=\"a01289.html#a6175e9daf70e8c27fb5122546df3fb1f\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLStencilTable::GetDuvWeightsBuffer</a></div><div class=\"ttdeci\">id&lt; MTLBuffer &gt; GetDuvWeightsBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00689_source.html#l00072\">mtlComputeEvaluator.h:72</a></div></div>\n+<div class=\"ttc\" id=\"aa01289_html_a65836d2070b943c8fecbad926d074de2\"><div class=\"ttname\"><a href=\"a01289.html#a65836d2070b943c8fecbad926d074de2\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLStencilTable::GetNumStencils</a></div><div class=\"ttdeci\">int GetNumStencils() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00689_source.html#l00075\">mtlComputeEvaluator.h:75</a></div></div>\n+<div class=\"ttc\" id=\"aa01289_html_a860a80d6ea4ec9aec06280c39376683c\"><div class=\"ttname\"><a href=\"a01289.html#a860a80d6ea4ec9aec06280c39376683c\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLStencilTable::GetIndicesBuffer</a></div><div class=\"ttdeci\">id&lt; MTLBuffer &gt; GetIndicesBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00689_source.html#l00067\">mtlComputeEvaluator.h:67</a></div></div>\n+<div class=\"ttc\" id=\"aa01289_html_a9b2f404d67fa83cd4715d2bbbeef6b4c\"><div class=\"ttname\"><a href=\"a01289.html#a9b2f404d67fa83cd4715d2bbbeef6b4c\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLStencilTable::GetSizesBuffer</a></div><div class=\"ttdeci\">id&lt; MTLBuffer &gt; GetSizesBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00689_source.html#l00065\">mtlComputeEvaluator.h:65</a></div></div>\n+<div class=\"ttc\" id=\"aa01289_html_aa1aa052f6513bda4c60b0ac423fb34cc\"><div class=\"ttname\"><a href=\"a01289.html#aa1aa052f6513bda4c60b0ac423fb34cc\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLStencilTable::GetOffsetsBuffer</a></div><div class=\"ttdeci\">id&lt; MTLBuffer &gt; GetOffsetsBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00689_source.html#l00066\">mtlComputeEvaluator.h:66</a></div></div>\n+<div class=\"ttc\" id=\"aa01289_html_ab22907c9cfe58b82ddfcad8241304500\"><div class=\"ttname\"><a href=\"a01289.html#ab22907c9cfe58b82ddfcad8241304500\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLStencilTable::GetWeightsBuffer</a></div><div class=\"ttdeci\">id&lt; MTLBuffer &gt; GetWeightsBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00689_source.html#l00068\">mtlComputeEvaluator.h:68</a></div></div>\n+<div class=\"ttc\" id=\"aa01289_html_ad96fc1ad226b46fec987d3b131a87a90\"><div class=\"ttname\"><a href=\"a01289.html#ad96fc1ad226b46fec987d3b131a87a90\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLStencilTable::Create</a></div><div class=\"ttdeci\">static MTLStencilTable * Create(STENCIL_TABLE *stencilTable, DEVICE_CONTEXT context)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00689_source.html#l00054\">mtlComputeEvaluator.h:54</a></div></div>\n+<div class=\"ttc\" id=\"aa01289_html_ae7df9ee000b676b2afb8b2979c006494\"><div class=\"ttname\"><a href=\"a01289.html#ae7df9ee000b676b2afb8b2979c006494\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLStencilTable::GetDvWeightsBuffer</a></div><div class=\"ttdeci\">id&lt; MTLBuffer &gt; GetDvWeightsBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00689_source.html#l00070\">mtlComputeEvaluator.h:70</a></div></div>\n+<div class=\"ttc\" id=\"aa01293_html\"><div class=\"ttname\"><a href=\"a01293.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00689_source.html#l00091\">mtlComputeEvaluator.h:92</a></div></div>\n+<div class=\"ttc\" id=\"aa01293_html_a01f08038160f2a7981d56c21a69c0eb9\"><div class=\"ttname\"><a href=\"a01293.html#a01f08038160f2a7981d56c21a69c0eb9\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::EvalStencils</a></div><div class=\"ttdeci\">bool EvalStencils(id&lt; MTLBuffer &gt; srcBuffer, BufferDescriptor const &amp;srcDesc, id&lt; MTLBuffer &gt; dstBuffer, BufferDescriptor const &amp;dstDesc, id&lt; MTLBuffer &gt; duBuffer, BufferDescriptor const &amp;duDesc, id&lt; MTLBuffer &gt; dvBuffer, BufferDescriptor const &amp;dvDesc, id&lt; MTLBuffer &gt; duuBuffer, BufferDescriptor const &amp;duuDesc, id&lt; MTLBuffer &gt; duvBuffer, BufferDescriptor const &amp;duvDesc, id&lt; MTLBuffer &gt; dvvBuffer, BufferDescriptor const &amp;dvvDesc, id&lt; MTLBuffer &gt; sizesBuffer, id&lt; MTLBuffer &gt; offsetsBuffer, id&lt; MTLBuffer &gt; indicesBuffer, id&lt; MTLBuffer &gt; weightsBuffer, id&lt; MTLBuffer &gt; duWeightsBuffer, id&lt; MTLBuffer &gt; dvWeightsBuffer, id&lt; MTLBuffer &gt; duuWeightsBuffer, id&lt; MTLBuffer &gt; duvWeightsBuffer, id&lt; MTLBuffer &gt; dvvWeightsBuffer, int start, int end, MTLContext *context) const</div><div class=\"ttdoc\">Dispatch the MTL compute kernel on GPU asynchronously returns false if the kernel hasn't been compile...</div></div>\n+<div class=\"ttc\" id=\"aa01293_html_a04f16e003e67523aaa60a18a7104a83b\"><div class=\"ttname\"><a href=\"a01293.html#a04f16e003e67523aaa60a18a7104a83b\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, MTLComputeEvaluator *instance, MTLContext *context)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00689_source.html#l00786\">mtlComputeEvaluator.h:786</a></div></div>\n+<div class=\"ttc\" id=\"aa01293_html_a05b843619ebcc7e30f6dc99a6585ef99\"><div class=\"ttname\"><a href=\"a01293.html#a05b843619ebcc7e30f6dc99a6585ef99\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, STENCIL_TABLE const *stencilTable, MTLComputeEvaluator const *instance, MTLContext *context)</div><div class=\"ttdoc\">Generic static stencil function. This function has a same signature as other device kernels have so t...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00689_source.html#l00312\">mtlComputeEvaluator.h:312</a></div></div>\n+<div class=\"ttc\" id=\"aa01293_html_a0b18216ba91299d39434a936ff58309b\"><div class=\"ttname\"><a href=\"a01293.html#a0b18216ba91299d39434a936ff58309b\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel, MTLComputeEvaluator const *instance, MTLContext *deviceContext)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00689_source.html#l01991\">mtlComputeEvaluator.h:1991</a></div></div>\n+<div class=\"ttc\" id=\"aa01293_html_a10015b2c4f90f3a11e60cc88dcbb9d6b\"><div class=\"ttname\"><a href=\"a01293.html#a10015b2c4f90f3a11e60cc88dcbb9d6b\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::MTLComputeEvaluator</a></div><div class=\"ttdeci\">MTLComputeEvaluator()</div></div>\n+<div class=\"ttc\" id=\"aa01293_html_a167639c4a4c57eaae9a880ad50dcab5a\"><div class=\"ttname\"><a href=\"a01293.html#a167639c4a4c57eaae9a880ad50dcab5a\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::~MTLComputeEvaluator</a></div><div class=\"ttdeci\">~MTLComputeEvaluator()</div></div>\n+<div class=\"ttc\" id=\"aa01293_html_a1e8b40a131056bb2e3868d4dd4a94ba6\"><div class=\"ttname\"><a href=\"a01293.html#a1e8b40a131056bb2e3868d4dd4a94ba6\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, MTLComputeEvaluator const *instance, MTLContext *context)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00689_source.html#l00705\">mtlComputeEvaluator.h:705</a></div></div>\n+<div class=\"ttc\" id=\"aa01293_html_a2c24b70c9312d8dff3fecb9ddea52c44\"><div class=\"ttname\"><a href=\"a01293.html#a2c24b70c9312d8dff3fecb9ddea52c44\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::Instantiatable</a></div><div class=\"ttdeci\">bool Instantiatable</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00689_source.html#l00094\">mtlComputeEvaluator.h:94</a></div></div>\n+<div class=\"ttc\" id=\"aa01293_html_a3642ea4f1fe75e6f580d195981f67767\"><div class=\"ttname\"><a href=\"a01293.html#a3642ea4f1fe75e6f580d195981f67767\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, MTLContext *deviceContext) const</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00689_source.html#l01606\">mtlComputeEvaluator.h:1606</a></div></div>\n+<div class=\"ttc\" id=\"aa01293_html_a47b111c4b8b6a94c2705f04b2d7a095d\"><div class=\"ttname\"><a href=\"a01293.html#a47b111c4b8b6a94c2705f04b2d7a095d\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, STENCIL_TABLE const *stencilTable, MTLComputeEvaluator const *instance, MTLContext *context)</div><div class=\"ttdoc\">Generic static stencil function. This function has a same signature as other device kernels have so t...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00689_source.html#l00220\">mtlComputeEvaluator.h:220</a></div></div>\n+<div class=\"ttc\" id=\"aa01293_html_a4b6168e3efdb657463a20aa39ccdb38f\"><div class=\"ttname\"><a href=\"a01293.html#a4b6168e3efdb657463a20aa39ccdb38f\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel, MTLContext *deviceContext) const</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00689_source.html#l01900\">mtlComputeEvaluator.h:1900</a></div></div>\n+<div class=\"ttc\" id=\"aa01293_html_a575672bd557a88df3702b3be802825d8\"><div class=\"ttname\"><a href=\"a01293.html#a575672bd557a88df3702b3be802825d8\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel, MTLComputeEvaluator const *instance, MTLContext *deviceContext)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00689_source.html#l01672\">mtlComputeEvaluator.h:1672</a></div></div>\n+<div class=\"ttc\" id=\"aa01293_html_a6934af1b25d411774984ecec8c626470\"><div class=\"ttname\"><a href=\"a01293.html#a6934af1b25d411774984ecec8c626470\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, MTLComputeEvaluator const *instance, MTLContext *deviceContext)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00689_source.html#l01496\">mtlComputeEvaluator.h:1496</a></div></div>\n+<div class=\"ttc\" id=\"aa01293_html_a6bd37be5877b28116c7378aa3d81bab4\"><div class=\"ttname\"><a href=\"a01293.html#a6bd37be5877b28116c7378aa3d81bab4\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::EvalStencils</a></div><div class=\"ttdeci\">bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, STENCIL_TABLE const *stencilTable, MTLContext *context) const</div><div class=\"ttdoc\">Generic stencil function.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00689_source.html#l00376\">mtlComputeEvaluator.h:376</a></div></div>\n+<div class=\"ttc\" id=\"aa01293_html_a70f82ef5ff338e6170e98480997ecc86\"><div class=\"ttname\"><a href=\"a01293.html#a70f82ef5ff338e6170e98480997ecc86\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::EvalPatches</a></div><div class=\"ttdeci\">bool EvalPatches(id&lt; MTLBuffer &gt; srcBuffer, BufferDescriptor const &amp;srcDesc, id&lt; MTLBuffer &gt; dstBuffer, BufferDescriptor const &amp;dstDesc, id&lt; MTLBuffer &gt; duBuffer, BufferDescriptor const &amp;duDesc, id&lt; MTLBuffer &gt; dvBuffer, BufferDescriptor const &amp;dvDesc, id&lt; MTLBuffer &gt; duuBuffer, BufferDescriptor const &amp;duuDesc, id&lt; MTLBuffer &gt; duvBuffer, BufferDescriptor const &amp;duvDesc, id&lt; MTLBuffer &gt; dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, id&lt; MTLBuffer &gt; patchCoordsBuffer, const PatchArrayVector &amp;patchArrays, id&lt; MTLBuffer &gt; patchIndexBuffer, id&lt; MTLBuffer &gt; patchParamsBuffer, MTLContext *context) const</div></div>\n+<div class=\"ttc\" id=\"aa01293_html_a7ae29a65e3cfdc045541528dd58ee2d5\"><div class=\"ttname\"><a href=\"a01293.html#a7ae29a65e3cfdc045541528dd58ee2d5\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel, MTLContext *deviceContext) const</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00689_source.html#l02106\">mtlComputeEvaluator.h:2106</a></div></div>\n+<div class=\"ttc\" id=\"aa01293_html_a7e02041f843415c1056ea2ca3f7d0b62\"><div class=\"ttname\"><a href=\"a01293.html#a7e02041f843415c1056ea2ca3f7d0b62\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::Synchronize</a></div><div class=\"ttdeci\">static void Synchronize(MTLContext *context)</div><div class=\"ttdoc\">Wait for the dispatched kernel to finish.</div></div>\n+<div class=\"ttc\" id=\"aa01293_html_a8b223dcc2eb6ca7b1389f206b86d3c60\"><div class=\"ttname\"><a href=\"a01293.html#a8b223dcc2eb6ca7b1389f206b86d3c60\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::EvalStencils</a></div><div class=\"ttdeci\">bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, STENCIL_TABLE const *stencilTable, MTLContext *context) const</div><div class=\"ttdoc\">Generic stencil function.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00689_source.html#l00430\">mtlComputeEvaluator.h:430</a></div></div>\n+<div class=\"ttc\" id=\"aa01293_html_a8eb63e824548d0125a66fc5a4435d5f7\"><div class=\"ttname\"><a href=\"a01293.html#a8eb63e824548d0125a66fc5a4435d5f7\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, MTLComputeEvaluator *instance, MTLContext *context)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00689_source.html#l00889\">mtlComputeEvaluator.h:889</a></div></div>\n+<div class=\"ttc\" id=\"aa01293_html_a9349f2fdf4e170771e2216874f2bb23c\"><div class=\"ttname\"><a href=\"a01293.html#a9349f2fdf4e170771e2216874f2bb23c\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel, MTLContext *deviceContext) const</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00689_source.html#l01742\">mtlComputeEvaluator.h:1742</a></div></div>\n+<div class=\"ttc\" id=\"aa01293_html_a974cf5639aed61ef20e1ca50e9f866a6\"><div class=\"ttname\"><a href=\"a01293.html#a974cf5639aed61ef20e1ca50e9f866a6\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, MTLComputeEvaluator const *instance, MTLContext *deviceContext)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00689_source.html#l01192\">mtlComputeEvaluator.h:1192</a></div></div>\n+<div class=\"ttc\" id=\"aa01293_html_a9e01da75168e927a75070da8dd09b06e\"><div class=\"ttname\"><a href=\"a01293.html#a9e01da75168e927a75070da8dd09b06e\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::EvalStencils</a></div><div class=\"ttdeci\">bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, STENCIL_TABLE const *stencilTable, MTLContext *context) const</div><div class=\"ttdoc\">Generic stencil function.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00689_source.html#l00504\">mtlComputeEvaluator.h:504</a></div></div>\n+<div class=\"ttc\" id=\"aa01293_html_aa877bdc66715e90bb513a7d0c08f8a73\"><div class=\"ttname\"><a href=\"a01293.html#aa877bdc66715e90bb513a7d0c08f8a73\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::EvalStencils</a></div><div class=\"ttdeci\">bool EvalStencils(id&lt; MTLBuffer &gt; srcBuffer, BufferDescriptor const &amp;srcDesc, id&lt; MTLBuffer &gt; dstBuffer, BufferDescriptor const &amp;dstDesc, id&lt; MTLBuffer &gt; duBuffer, BufferDescriptor const &amp;duDesc, id&lt; MTLBuffer &gt; dvBuffer, BufferDescriptor const &amp;dvDesc, id&lt; MTLBuffer &gt; sizesBuffer, id&lt; MTLBuffer &gt; offsetsBuffer, id&lt; MTLBuffer &gt; indicesBuffer, id&lt; MTLBuffer &gt; weightsBuffer, id&lt; MTLBuffer &gt; duWeightsBuffer, id&lt; MTLBuffer &gt; dvWeightsBuffer, int start, int end, MTLContext *context) const</div><div class=\"ttdoc\">Dispatch the MTL compute kernel on GPU asynchronously returns false if the kernel hasn't been compile...</div></div>\n+<div class=\"ttc\" id=\"aa01293_html_aa8e715d1d6cb338e9617ca3795a94021\"><div class=\"ttname\"><a href=\"a01293.html#aa8e715d1d6cb338e9617ca3795a94021\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel, MTLComputeEvaluator const *instance, MTLContext *deviceContext)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00689_source.html#l01813\">mtlComputeEvaluator.h:1813</a></div></div>\n+<div class=\"ttc\" id=\"aa01293_html_aab3cbda7289b76b077b371b92e9afaf3\"><div class=\"ttname\"><a href=\"a01293.html#aab3cbda7289b76b077b371b92e9afaf3\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::EvalPatches</a></div><div class=\"ttdeci\">bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, MTLContext *context) const</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00689_source.html#l00966\">mtlComputeEvaluator.h:966</a></div></div>\n+<div class=\"ttc\" id=\"aa01293_html_ab4a74384293a0625c6fc8d4ee6af1314\"><div class=\"ttname\"><a href=\"a01293.html#ab4a74384293a0625c6fc8d4ee6af1314\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, STENCIL_TABLE const *stencilTable, MTLComputeEvaluator const *instance, MTLContext *context)</div><div class=\"ttdoc\">Generic static stencil function. This function has a same signature as other device kernels have so t...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00689_source.html#l00149\">mtlComputeEvaluator.h:149</a></div></div>\n+<div class=\"ttc\" id=\"aa01293_html_abc5af1154bccd394f7d1aba5d353206e\"><div class=\"ttname\"><a href=\"a01293.html#abc5af1154bccd394f7d1aba5d353206e\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, MTLComputeEvaluator const *instance, MTLContext *deviceContext)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00689_source.html#l01325\">mtlComputeEvaluator.h:1325</a></div></div>\n+<div class=\"ttc\" id=\"aa01293_html_add1df0176df3d03028f001f041f26d5c\"><div class=\"ttname\"><a href=\"a01293.html#add1df0176df3d03028f001f041f26d5c\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::EvalPatches</a></div><div class=\"ttdeci\">bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, MTLContext *context) const</div><div class=\"ttdoc\">Generic limit eval function with derivatives. This function has a same signature as other device kern...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00689_source.html#l01104\">mtlComputeEvaluator.h:1104</a></div></div>\n+<div class=\"ttc\" id=\"aa01293_html_ade51863a5d2d4b642f8c78b9e85faf38\"><div class=\"ttname\"><a href=\"a01293.html#ade51863a5d2d4b642f8c78b9e85faf38\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::EvalPatches</a></div><div class=\"ttdeci\">bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, MTLContext *context) const</div><div class=\"ttdoc\">Generic limit eval function with derivatives. This function has a same signature as other device kern...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00689_source.html#l01025\">mtlComputeEvaluator.h:1025</a></div></div>\n+<div class=\"ttc\" id=\"aa01293_html_ae4dc813f334cc8b2e59659c0736bf2eb\"><div class=\"ttname\"><a href=\"a01293.html#ae4dc813f334cc8b2e59659c0736bf2eb\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, MTLContext *deviceContext) const</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00689_source.html#l01407\">mtlComputeEvaluator.h:1407</a></div></div>\n+<div class=\"ttc\" id=\"aa01293_html_ae5186e8abdeee89cbeef798c27c6ba6b\"><div class=\"ttname\"><a href=\"a01293.html#ae5186e8abdeee89cbeef798c27c6ba6b\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, MTLContext *deviceContext) const</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00689_source.html#l01257\">mtlComputeEvaluator.h:1257</a></div></div>\n+<div class=\"ttc\" id=\"aa01293_html_af4625ed1f27d57760257c382ee06a71d\"><div class=\"ttname\"><a href=\"a01293.html#af4625ed1f27d57760257c382ee06a71d\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::Create</a></div><div class=\"ttdeci\">static MTLComputeEvaluator * Create(BufferDescriptor const &amp;srcDesc, BufferDescriptor const &amp;dstDesc, BufferDescriptor const &amp;duDesc, BufferDescriptor const &amp;dvDesc, MTLContext *context)</div></div>\n+<div class=\"ttc\" id=\"aa01293_html_af56350dbfd2ba2396625e8f2cf8d9ed1\"><div class=\"ttname\"><a href=\"a01293.html#af56350dbfd2ba2396625e8f2cf8d9ed1\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::Create</a></div><div class=\"ttdeci\">static MTLComputeEvaluator * Create(BufferDescriptor const &amp;srcDesc, BufferDescriptor const &amp;dstDesc, BufferDescriptor const &amp;duDesc, BufferDescriptor const &amp;dvDesc, BufferDescriptor const &amp;duuDesc, BufferDescriptor const &amp;duvDesc, BufferDescriptor const &amp;dvvDesc, MTLContext *context)</div></div>\n+<div class=\"ttc\" id=\"aa01293_html_af6645aabc094e7549c6899915ce34f67\"><div class=\"ttname\"><a href=\"a01293.html#af6645aabc094e7549c6899915ce34f67\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::Compile</a></div><div class=\"ttdeci\">bool Compile(BufferDescriptor const &amp;srcDesc, BufferDescriptor const &amp;dstDesc, BufferDescriptor const &amp;duDesc, BufferDescriptor const &amp;dvDesc, BufferDescriptor const &amp;duuDesc, BufferDescriptor const &amp;duvDesc, BufferDescriptor const &amp;dvvDesc, MTLContext *context)</div><div class=\"ttdoc\">Configure compute pipline state. Returns false if it fails to create the pipeline state.</div></div>\n+<div class=\"ttc\" id=\"aa01293_html_af6b86e7d88e00a0f6e0e824818117f53\"><div class=\"ttname\"><a href=\"a01293.html#af6b86e7d88e00a0f6e0e824818117f53\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::EvalPatches</a></div><div class=\"ttdeci\">bool EvalPatches(id&lt; MTLBuffer &gt; srcBuffer, BufferDescriptor const &amp;srcDesc, id&lt; MTLBuffer &gt; dstBuffer, BufferDescriptor const &amp;dstDesc, id&lt; MTLBuffer &gt; duBuffer, BufferDescriptor const &amp;duDesc, id&lt; MTLBuffer &gt; dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, id&lt; MTLBuffer &gt; patchCoordsBuffer, const PatchArrayVector &amp;patchArrays, id&lt; MTLBuffer &gt; patchIndexBuffer, id&lt; MTLBuffer &gt; patchParamsBuffer, MTLContext *context) const</div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bd5473d7d5841d48919aaa9ad0cb1f9b.html\">vtr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00689.html\">fvarLevel.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00689.html\">mtlComputeEvaluator.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-fvarLevel.h\n+mtlComputeEvaluator.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2014 DreamWorks Animation LLC.\n+2// Copyright 2013 Pixar\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -23,484 +23,1383 @@\n 17//\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n-24#ifndef OPENSUBDIV3_VTR_FVAR_LEVEL_H\n-25#define OPENSUBDIV3_VTR_FVAR_LEVEL_H\n-26\n-27#include \"../version.h\"\n-28\n-29#include \"../sdc/types.h\"\n-30#include \"../sdc/crease.h\"\n-31#include \"../sdc/options.h\"\n-32#include \"../vtr/types.h\"\n-33#include \"../vtr/level.h\"\n-34\n-35#include <vector>\n-36#include <cassert>\n-37#include <cstring>\n+24\n+25#ifndef OPENSUBDIV3_OSD_MTL_COMPUTE_EVALUATOR_H\n+26#define OPENSUBDIV3_OSD_MTL_COMPUTE_EVALUATOR_H\n+27\n+28#include \"../version.h\"\n+29\n+30#include \"../osd/types.h\"\n+31#include \"../osd/bufferDescriptor.h\"\n+32#include \"../osd/mtlCommon.h\"\n+33\n+34@protocol MTLDevice;\n+35@protocol MTLBuffer;\n+36@protocol MTLLibrary;\n+37@protocol MTLComputePipelineState;\n 38\n-39\n-40namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-41namespace OPENSUBDIV_VERSION {\n-42\n-43namespace Vtr {\n-44namespace internal {\n-45\n-46//\n-47// FVarLevel:\n-48// A \"face-varying channel\" includes the topology for a set of face-varying\n-49// data, relative to the topology of the Level with which it is associated.\n-50//\n-51// Analogous to a set of vertices and face-vertices that define the topology\n-for\n-52// the geometry, a channel requires a set of \"values\" and \"face-values\". The\n-53// \"values\" are indices of entries in a set of face-varying data, just as\n-vertices\n-54// are indices into a set of vertex data. The face-values identify a value\n-for\n-55// each vertex of the face, and so define topology for the values that may be\n-56// unique to each channel.\n-57//\n-58// In addition to the value size and the vector of face-values (which matches\n-the\n-59// size of the geometry's face-vertices), tags are associated with each\n-component\n-60// to identify deviations of the face-varying topology from the vertex\n-topology.\n-61// And since there may be a one-to-many mapping between vertices and face-\n-varying\n-62// values, that mapping is also allocated.\n-63//\n-64// It turns out that the mapping used is able to completely encode the set of\n-65// face-values and is more amenable to refinement. Currently the face-values\n-66// take up almost half the memory of this representation, so if memory does\n-67// become a concern, we do not need to store them. The only reason we do so\n-now\n-68// is that the face-value interface for specifying base topology and\n-inspecting\n-69// subsequent levels is very familiar to that of face-vertices for clients.\n-So\n-70// having them available for such access is convenient.\n-71//\n-72// Regarding scope and access...\n-73// Unclear at this early state, but leaning towards nesting this class within\n-74// Level, given the intimate dependency between the two.\n-75// Everything is being declared public for now to facilitate access until\n-it's\n-76// clearer how this functionality will be provided.\n-77//\n-78class FVarLevel {\n-79public:\n-80 //\n-81 // Component tags -- trying to minimize the types needed here:\n-82 //\n-83 // Tag per Edge:\n-84 // - facilitates topological analysis around each vertex\n-85 // - required during refinement to spawn one or more edge-values\n-86 //\n-87 struct ETag {\n-88 ETag() { }\n-89\n-90 void clear() { std::memset(this, 0, sizeof(ETag)); }\n-91\n-92 typedef unsigned char ETagSize;\n-93\n-94 ETagSize _mismatch : 1; // local FVar topology does not match\n-95 ETagSize _disctsV0 : 1; // discontinuous at vertex 0\n-96 ETagSize _disctsV1 : 1; // discontinuous at vertex 1\n-97 ETagSize _linear : 1; // linear boundary constraints\n-98\n-99 Level::ETag combineWithLevelETag(Level::ETag) const;\n-100 };\n+39namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+40namespace OPENSUBDIV_VERSION {\n+41\n+42namespace Far {\n+43 class PatchTable;\n+44 class StencilTable;\n+45 class LimitStencilTable;\n+46}\n+47\n+48namespace Osd {\n+49\n+_\b5_\b0class _\bM_\bT_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n+51{\n+52public:\n+53 template<typename STENCIL_TABLE, typename DEVICE_CONTEXT>\n+_\b5_\b4 static _\bM_\bT_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be* _\bC_\br_\be_\ba_\bt_\be(STENCIL_TABLE* stencilTable,\n+55 DEVICE_CONTEXT context)\n+56 {\n+57 return new _\bM_\bT_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(stencilTable, context);\n+58 }\n+59\n+60\n+_\b6_\b1 _\bM_\bT_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const* stencilTable, _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context);\n+_\b6_\b2 _\bM_\bT_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const* stencilTable, _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt*\n+context);\n+_\b6_\b3 _\b~_\bM_\bT_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be();\n+64\n+_\b6_\b5 id<MTLBuffer> _\bG_\be_\bt_\bS_\bi_\bz_\be_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _sizesBuffer; }\n+_\b6_\b6 id<MTLBuffer> _\bG_\be_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _offsetsBuffer; }\n+_\b6_\b7 id<MTLBuffer> _\bG_\be_\bt_\bI_\bn_\bd_\bi_\bc_\be_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _indicesBuffer; }\n+_\b6_\b8 id<MTLBuffer> _\bG_\be_\bt_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _weightsBuffer; }\n+_\b6_\b9 id<MTLBuffer> _\bG_\be_\bt_\bD_\bu_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _duWeightsBuffer; }\n+_\b7_\b0 id<MTLBuffer> _\bG_\be_\bt_\bD_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _dvWeightsBuffer; }\n+_\b7_\b1 id<MTLBuffer> _\bG_\be_\bt_\bD_\bu_\bu_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _duuWeightsBuffer; }\n+_\b7_\b2 id<MTLBuffer> _\bG_\be_\bt_\bD_\bu_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _duvWeightsBuffer; }\n+_\b7_\b3 id<MTLBuffer> _\bG_\be_\bt_\bD_\bv_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _dvvWeightsBuffer; }\n+74\n+_\b7_\b5 int _\bG_\be_\bt_\bN_\bu_\bm_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs() const { return _numStencils; }\n+76\n+77private:\n+78 id<MTLBuffer> _sizesBuffer;\n+79 id<MTLBuffer> _offsetsBuffer;\n+80 id<MTLBuffer> _indicesBuffer;\n+81 id<MTLBuffer> _weightsBuffer;\n+82 id<MTLBuffer> _duWeightsBuffer;\n+83 id<MTLBuffer> _dvWeightsBuffer;\n+84 id<MTLBuffer> _duuWeightsBuffer;\n+85 id<MTLBuffer> _duvWeightsBuffer;\n+86 id<MTLBuffer> _dvvWeightsBuffer;\n+87\n+88 int _numStencils;\n+89};\n+90\n+_\b9_\b1class _\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n+92{\n+93public:\n+_\b9_\b4 typedef bool _\bI_\bn_\bs_\bt_\ba_\bn_\bt_\bi_\ba_\bt_\ba_\bb_\bl_\be;\n+95\n+_\b9_\b6 static _\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br * _\bC_\br_\be_\ba_\bt_\be(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+97 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+98 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+99 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+100 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context);\n 101\n-102 //\n-103 // Tag per Value:\n-104 // - informs both refinement and interpolation\n-105 // - every value spawns a child value in refinement\n-106 // - includes a subset of Level::VTag to be later combined with a VTag\n-107 //\n-108 struct ValueTag {\n-109 ValueTag() { }\n+_\b1_\b0_\b2 static _\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br * _\bC_\br_\be_\ba_\bt_\be(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+103 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+104 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+105 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+106 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+107 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+108 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+109 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context);\n 110\n-111 void clear() { std::memset(this, 0, sizeof(ValueTag)); }\n-112\n-113 bool isMismatch() const { return _mismatch; }\n-114 bool isCrease() const { return _crease; }\n-115 bool isCorner() const { return !_crease; }\n-116 bool isSemiSharp() const { return _semiSharp; }\n-117 bool isInfSharp() const { return !_semiSharp && !_crease; }\n-118 bool isDepSharp() const { return _depSharp; }\n-119 bool hasCreaseEnds() const { return _crease || _semiSharp; }\n-120\n-121 bool hasInfSharpEdges() const { return _infSharpEdges; }\n-122 bool hasInfIrregularity() const { return _infIrregular; }\n-123\n-124 typedef unsigned char ValueTagSize;\n-125\n-126 // If there is no mismatch, no other members should be inspected\n-127 ValueTagSize _mismatch : 1; // local FVar topology does not match\n-128 ValueTagSize _xordinary : 1; // local FVar topology is extra-ordinary\n-129 ValueTagSize _nonManifold : 1; // local FVar topology is non-manifold\n-130 ValueTagSize _crease : 1; // value is a crease, otherwise a corner\n-131 ValueTagSize _semiSharp : 1; // value is a corner decaying to crease\n-132 ValueTagSize _depSharp : 1; // value is a corner by dependency on another\n-133\n-134 ValueTagSize _infSharpEdges : 1; // value is a corner by inf-sharp features\n-135 ValueTagSize _infIrregular : 1; // value span includes inf-sharp\n-irregularity\n-136\n-137 Level::VTag combineWithLevelVTag(Level::VTag) const;\n-138\n-139 // Alternate constructor and accessor for dealing with integer bits\n-directly:\n-140 explicit ValueTag(ValueTagSize bits) {\n-141 std::memcpy(this, &bits, sizeof(bits));\n-142 }\n-143 ValueTagSize getBits() const {\n-144 ValueTagSize bits;\n-145 std::memcpy(&bits, this, sizeof(bits));\n-146 return bits;\n-147 }\n-148 };\n-149\n-150 typedef Vtr::ConstArray<ValueTag> ConstValueTagArray;\n-151 typedef Vtr::Array<ValueTag> ValueTagArray;\n-152\n-153 //\n-154 // Simple struct containing the \"end faces\" of a crease, i.e. the faces\n-which\n-155 // contain the FVar values to be used when interpolating the crease.\n-(Prefer\n-156 // the struct over std::pair for its member names)\n-157 //\n-158 struct CreaseEndPair {\n-159 _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx _startFace;\n-160 _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx _endFace;\n-161 };\n-162\n-163 typedef Vtr::ConstArray<CreaseEndPair> ConstCreaseEndPairArray;\n-164 typedef Vtr::Array<CreaseEndPair> CreaseEndPairArray;\n-165\n-166 typedef _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx Sibling;\n-167\n-168 typedef _\bC_\bo_\bn_\bs_\bt_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by ConstSiblingArray;\n-169 typedef _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by SiblingArray;\n-170\n-171public:\n-172 FVarLevel(Level const& level);\n-173 ~FVarLevel();\n-174\n-175 // Queries for the entire channel:\n-176 Level const& getLevel() const { return _level; }\n-177\n-178 int getNumValues() const { return _valueCount; }\n-179 int getNumFaceValuesTotal() const { return (int) _faceVertValues.size(); }\n-180\n-181 bool isLinear() const { return _isLinear; }\n-182 bool hasLinearBoundaries() const { return _hasLinearBoundaries; }\n-183 bool hasSmoothBoundaries() const { return ! _hasLinearBoundaries; }\n-184 bool hasCreaseEnds() const { return hasSmoothBoundaries(); }\n-185\n-186 Sdc::Options getOptions() const { return _options; }\n-187\n-188 // Queries per face:\n-189 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getFaceValues(_\bI_\bn_\bd_\be_\bx fIndex) const;\n-190 _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getFaceValues(_\bI_\bn_\bd_\be_\bx fIndex);\n-191\n-192 // Queries per edge:\n-193 ETag getEdgeTag(_\bI_\bn_\bd_\be_\bx eIndex) const { return _edgeTags[eIndex]; }\n-194 bool edgeTopologyMatches(_\bI_\bn_\bd_\be_\bx eIndex) const { return !getEdgeTag\n-(eIndex)._mismatch; }\n-195\n-196 // Queries per vertex (and its potential sibling values):\n-197 int getNumVertexValues(_\bI_\bn_\bd_\be_\bx v) const { return _vertSiblingCounts[v]; }\n-198 _\bI_\bn_\bd_\be_\bx getVertexValueOffset(_\bI_\bn_\bd_\be_\bx v, Sibling i = 0) const { return\n-_vertSiblingOffsets[v] + i; }\n-199\n-200 _\bI_\bn_\bd_\be_\bx getVertexValue(_\bI_\bn_\bd_\be_\bx v, Sibling i = 0) const { return\n-_vertValueIndices[getVertexValueOffset(v,i)]; }\n-201\n-202 _\bI_\bn_\bd_\be_\bx findVertexValueIndex(_\bI_\bn_\bd_\be_\bx vertexIndex, _\bI_\bn_\bd_\be_\bx valueIndex) const;\n-203\n-204 // Methods to access/modify array properties per vertex:\n-205 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getVertexValues(_\bI_\bn_\bd_\be_\bx vIndex) const;\n-206 _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getVertexValues(_\bI_\bn_\bd_\be_\bx vIndex);\n-207\n-208 ConstValueTagArray getVertexValueTags(_\bI_\bn_\bd_\be_\bx vIndex) const;\n-209 ValueTagArray getVertexValueTags(_\bI_\bn_\bd_\be_\bx vIndex);\n-210\n-211 ConstCreaseEndPairArray getVertexValueCreaseEnds(_\bI_\bn_\bd_\be_\bx vIndex) const;\n-212 CreaseEndPairArray getVertexValueCreaseEnds(_\bI_\bn_\bd_\be_\bx vIndex);\n-213\n-214 ConstSiblingArray getVertexFaceSiblings(_\bI_\bn_\bd_\be_\bx vIndex) const;\n-215 SiblingArray getVertexFaceSiblings(_\bI_\bn_\bd_\be_\bx vIndex);\n-216\n-217 // Queries per value:\n-218 ValueTag getValueTag(_\bI_\bn_\bd_\be_\bx valueIndex) const { return _vertValueTags\n-[valueIndex]; }\n-219 bool valueTopologyMatches(_\bI_\bn_\bd_\be_\bx valueIndex) const { return !getValueTag\n-(valueIndex)._mismatch; }\n-220\n-221 CreaseEndPair getValueCreaseEndPair(_\bI_\bn_\bd_\be_\bx valueIndex) const { return\n-_vertValueCreaseEnds[valueIndex]; }\n-222\n-223 // Tag queries related to faces (use Level methods for those returning\n-Level::VTag/ETag)\n-224 void getFaceValueTags(_\bI_\bn_\bd_\be_\bx faceIndex, ValueTag valueTags[]) const;\n-225\n-226 ValueTag getFaceCompositeValueTag(_\bI_\bn_\bd_\be_\bx faceIndex) const;\n-227\n-228 // Higher-level topological queries, i.e. values in a neighborhood:\n-229 void getEdgeFaceValues(_\bI_\bn_\bd_\be_\bx eIndex, int fIncToEdge, _\bI_\bn_\bd_\be_\bx valuesPerVert\n-[2]) const;\n-230 void getVertexEdgeValues(_\bI_\bn_\bd_\be_\bx vIndex, _\bI_\bn_\bd_\be_\bx valuesPerEdge[]) const;\n-231 void getVertexCreaseEndValues(_\bI_\bn_\bd_\be_\bx vIndex, Sibling sibling, _\bI_\bn_\bd_\be_\bx\n-endValues[2]) const;\n-232\n-233 // Initialization and allocation helpers:\n-234 void setOptions(Sdc::Options const& options);\n-235 void resizeVertexValues(int numVertexValues);\n-236 void resizeValues(int numValues);\n-237 void resizeComponents();\n-238\n-239 // Topological analysis methods -- tagging and face-value population:\n-240 void completeTopologyFromFaceValues(int regBoundaryValence);\n-241 void initializeFaceValuesFromFaceVertices();\n-242 void initializeFaceValuesFromVertexFaceSiblings();\n-243\n-244 struct ValueSpan;\n-245 void gatherValueSpans(_\bI_\bn_\bd_\be_\bx vIndex, ValueSpan * vValueSpans) const;\n-246\n-247 // Debugging methods:\n-248 bool validate() const;\n-249 void print() const;\n-250 void buildFaceVertexSiblingsFromVertexFaceSiblings(std::vector<Sibling>&\n-fvSiblings) const;\n-251\n-252private:\n-253 // Just as Refinements build Levels, FVarRefinements build FVarLevels...\n-254 friend class FVarRefinement;\n-255\n-256 Level const & _level;\n-257\n-258 // Linear interpolation options vary between channels:\n-259 Sdc::Options _options;\n-260\n-261 bool _isLinear;\n-262 bool _hasLinearBoundaries;\n-263 bool _hasDependentSharpness;\n-264 int _valueCount;\n-265\n-266 //\n-267 // Vectors recording face-varying topology including tags that help\n-propagate\n-268 // data through the refinement hierarchy. Vectors are not sparse but most\n-use\n-269 // 8-bit values relative to the local topology.\n-270 //\n-271 // The vector of face-values is actually redundant here, but is constructed\n-as\n-272 // it is most convenient for clients. It represents almost half the memory\n-of\n-273 // the topology (4 32-bit integers per face) and not surprisingly,\n-populating\n-274 // it takes a considerable amount of the refinement time (1/3). We can\n-reduce\n-275 // both if we are willing to compute these on demand for clients.\n-276 //\n-277 // Per-face (matches face-verts of corresponding level):\n-278 std::vector<Index> _faceVertValues;\n-279\n-280 // Per-edge:\n-281 std::vector<ETag> _edgeTags;\n-282\n-283 // Per-vertex:\n-284 std::vector<Sibling> _vertSiblingCounts;\n-285 std::vector<int> _vertSiblingOffsets;\n-286 std::vector<Sibling> _vertFaceSiblings;\n-287\n-288 // Per-value:\n-289 std::vector<Index> _vertValueIndices;\n-290 std::vector<ValueTag> _vertValueTags;\n-291 std::vector<CreaseEndPair> _vertValueCreaseEnds;\n-292};\n-293\n-294//\n-295// Access/modify the values associated with each face:\n-296//\n-297inline _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n-298FVarLevel::getFaceValues(_\bI_\bn_\bd_\be_\bx fIndex) const {\n-299\n-300 int vCount = _level.getNumFaceVertices(fIndex);\n-301 int vOffset = _level.getOffsetOfFaceVertices(fIndex);\n-302 return _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by(&_faceVertValues[vOffset], vCount);\n-303}\n-304inline _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n-305FVarLevel::getFaceValues(_\bI_\bn_\bd_\be_\bx fIndex) {\n-306\n-307 int vCount = _level.getNumFaceVertices(fIndex);\n-308 int vOffset = _level.getOffsetOfFaceVertices(fIndex);\n-309 return _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by(&_faceVertValues[vOffset], vCount);\n-310}\n-311\n-312inline FVarLevel::ConstSiblingArray\n-313FVarLevel::getVertexFaceSiblings(_\bI_\bn_\bd_\be_\bx vIndex) const {\n-314\n-315 int vCount = _level.getNumVertexFaces(vIndex);\n-316 int vOffset = _level.getOffsetOfVertexFaces(vIndex);\n-317 return ConstSiblingArray(&_vertFaceSiblings[vOffset], vCount);\n-318}\n-319inline FVarLevel::SiblingArray\n-320FVarLevel::getVertexFaceSiblings(_\bI_\bn_\bd_\be_\bx vIndex) {\n-321\n-322 int vCount = _level.getNumVertexFaces(vIndex);\n-323 int vOffset = _level.getOffsetOfVertexFaces(vIndex);\n-324 return SiblingArray(&_vertFaceSiblings[vOffset], vCount);\n-325}\n-326\n-327inline _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n-328FVarLevel::getVertexValues(_\bI_\bn_\bd_\be_\bx vIndex) const\n-329{\n-330 int vCount = getNumVertexValues(vIndex);\n-331 int vOffset = getVertexValueOffset(vIndex);\n-332 return _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by(&_vertValueIndices[vOffset], vCount);\n-333}\n-334inline _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n-335FVarLevel::getVertexValues(_\bI_\bn_\bd_\be_\bx vIndex)\n-336{\n-337 int vCount = getNumVertexValues(vIndex);\n-338 int vOffset = getVertexValueOffset(vIndex);\n-339 return _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by(&_vertValueIndices[vOffset], vCount);\n-340}\n-341\n-342inline FVarLevel::ConstValueTagArray\n-343FVarLevel::getVertexValueTags(_\bI_\bn_\bd_\be_\bx vIndex) const\n-344{\n-345 int vCount = getNumVertexValues(vIndex);\n-346 int vOffset = getVertexValueOffset(vIndex);\n-347 return ConstValueTagArray(&_vertValueTags[vOffset], vCount);\n-348}\n-349inline FVarLevel::ValueTagArray\n-350FVarLevel::getVertexValueTags(_\bI_\bn_\bd_\be_\bx vIndex)\n-351{\n-352 int vCount = getNumVertexValues(vIndex);\n-353 int vOffset = getVertexValueOffset(vIndex);\n-354 return ValueTagArray(&_vertValueTags[vOffset], vCount);\n-355}\n-356\n-357inline FVarLevel::ConstCreaseEndPairArray\n-358FVarLevel::getVertexValueCreaseEnds(_\bI_\bn_\bd_\be_\bx vIndex) const\n-359{\n-360 int vCount = getNumVertexValues(vIndex);\n-361 int vOffset = getVertexValueOffset(vIndex);\n-362 return ConstCreaseEndPairArray(&_vertValueCreaseEnds[vOffset], vCount);\n-363}\n-364inline FVarLevel::CreaseEndPairArray\n-365FVarLevel::getVertexValueCreaseEnds(_\bI_\bn_\bd_\be_\bx vIndex)\n-366{\n-367 int vCount = getNumVertexValues(vIndex);\n-368 int vOffset = getVertexValueOffset(vIndex);\n-369 return CreaseEndPairArray(&_vertValueCreaseEnds[vOffset], vCount);\n-370}\n-371\n-372inline _\bI_\bn_\bd_\be_\bx\n-373FVarLevel::findVertexValueIndex(_\bI_\bn_\bd_\be_\bx vertexIndex, _\bI_\bn_\bd_\be_\bx valueIndex) const {\n-374\n-375 if (_level.getDepth() > 0) return valueIndex;\n-376\n-377 _\bI_\bn_\bd_\be_\bx vvIndex = getVertexValueOffset(vertexIndex);\n-378 while (_vertValueIndices[vvIndex] != valueIndex) {\n-379 ++ vvIndex;\n-380 }\n-381 return vvIndex;\n-382}\n-383\n-384//\n-385// Methods related to tagging:\n-386//\n-387inline Level::ETag\n-388FVarLevel::ETag::combineWithLevelETag(Level::ETag levelTag) const\n-389{\n-390 if (this->_mismatch) {\n-391 levelTag._boundary = true;\n-392 levelTag._infSharp = true;\n-393 }\n-394 return levelTag;\n-395}\n-396inline Level::VTag\n-397FVarLevel::ValueTag::combineWithLevelVTag(Level::VTag levelTag) const\n-398{\n-399 if (this->_mismatch) {\n-400 //\n-401 // Semi-sharp FVar values are always tagged and treated as corners\n-402 // (at least three sharp edges (two boundary edges and one interior\n-403 // semi-sharp) and/or vertex is semi-sharp) until the sharpness has\n-404 // decayed, but they ultimately lie on the inf-sharp crease of the\n-405 // FVar boundary. Consider this when tagging inf-sharp features.\n-406 //\n-407 if (this->isCorner()) {\n-408 levelTag._rule = (Level::VTag::VTagSize) _\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bC_\bO_\bR_\bN_\bE_\bR;\n-409 } else {\n-410 levelTag._rule = (Level::VTag::VTagSize) _\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bC_\bR_\bE_\bA_\bS_\bE;\n-411 }\n-412 if (this->isCrease() || this->isSemiSharp()) {\n-413 levelTag._infSharp = false;\n-414 levelTag._infSharpCrease = true;\n-415 levelTag._corner = false;\n-416 } else {\n-417 levelTag._infSharp = true;\n-418 levelTag._infSharpCrease = false;\n-419 levelTag._corner = !this->_infIrregular && !this->_infSharpEdges;\n-420 }\n-421 levelTag._infSharpEdges = true;\n-422 levelTag._infIrregular = this->_infIrregular;\n-423\n-424 levelTag._boundary = true;\n-425 levelTag._xordinary = this->_xordinary;\n-426\n-427 levelTag._nonManifold |= this->_nonManifold;\n-428 }\n-429 return levelTag;\n-430}\n-431\n-432} // end namespace internal\n-433} // end namespace Vtr\n-434\n-435} // end namespace OPENSUBDIV_VERSION\n-436using namespace OPENSUBDIV_VERSION;\n-437} // end namespace OpenSubdiv\n-438\n-439#endif /* OPENSUBDIV3_VTR_FVAR_LEVEL_H */\n+_\b1_\b1_\b1 _\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br();\n+_\b1_\b1_\b2 _\b~_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br();\n+113\n+119\n+148 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n+_\b1_\b4_\b9 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n+150 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+151 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+152 STENCIL_TABLE const *stencilTable,\n+153 _\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n+154 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context)\n+155 {\n+156 if (instance) {\n+157 return instance->_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer, srcDesc,\n+158 dstBuffer, dstDesc,\n+159 stencilTable,\n+160 context);\n+161 } else {\n+162 // Create an instance on demand (slow)\n+163 instance = Create(srcDesc, dstDesc,\n+164 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+165 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+166 context);\n+167 if (instance) {\n+168 bool r = instance->_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer, srcDesc,\n+169 dstBuffer, dstDesc,\n+170 stencilTable,\n+171 context);\n+172 delete instance;\n+173 return r;\n+174 }\n+175 return false;\n+176 }\n+177 }\n+178\n+219 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n+_\b2_\b2_\b0 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n+221 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+222 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+223 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+224 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+225 STENCIL_TABLE const *stencilTable,\n+226 _\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n+227 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context) {\n+228\n+229 if (instance) {\n+230 return instance->_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer, srcDesc,\n+231 dstBuffer, dstDesc,\n+232 duBuffer, duDesc,\n+233 dvBuffer, dvDesc,\n+234 stencilTable,\n+235 context);\n+236 } else {\n+237 // Create an instance on demand (slow)\n+238 instance = Create(srcDesc, dstDesc, duDesc, dvDesc, context);\n+239 if (instance) {\n+240 bool r = instance->_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer, srcDesc,\n+241 dstBuffer, dstDesc,\n+242 duBuffer, duDesc,\n+243 dvBuffer, dvDesc,\n+244 stencilTable,\n+245 context);\n+246 delete instance;\n+247 return r;\n+248 }\n+249 return false;\n+250 }\n+251 }\n+252\n+311 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n+_\b3_\b1_\b2 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n+313 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+314 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+315 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+316 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+317 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+318 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+319 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+320 STENCIL_TABLE const *stencilTable,\n+321 _\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n+322 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context) {\n+323\n+324 if (instance) {\n+325 return instance->_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer, srcDesc,\n+326 dstBuffer, dstDesc,\n+327 duBuffer, duDesc,\n+328 dvBuffer, dvDesc,\n+329 duuBuffer, duuDesc,\n+330 duvBuffer, duvDesc,\n+331 dvvBuffer, dvvDesc,\n+332 stencilTable,\n+333 context);\n+334 } else {\n+335 // Create an instance on demand (slow)\n+336 instance = Create(srcDesc, dstDesc, duDesc, dvDesc,\n+337 duuDesc, duvDesc, dvvDesc, context);\n+338 if (instance) {\n+339 bool r = instance->_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer, srcDesc,\n+340 dstBuffer, dstDesc,\n+341 duBuffer, duDesc,\n+342 dvBuffer, dvDesc,\n+343 duuBuffer, duuDesc,\n+344 duvBuffer, duvDesc,\n+345 dvvBuffer, dvvDesc,\n+346 stencilTable,\n+347 context);\n+348 delete instance;\n+349 return r;\n+350 }\n+351 return false;\n+352 }\n+353 }\n+354\n+375 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n+_\b3_\b7_\b6 bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n+377 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+378 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+379 STENCIL_TABLE const *stencilTable,\n+380 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context) const\n+381 {\n+382 return EvalStencils(srcBuffer->BindMTLBuffer(context), srcDesc,\n+383 dstBuffer->BindMTLBuffer(context), dstDesc,\n+384 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+385 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+386 stencilTable->GetSizesBuffer(),\n+387 stencilTable->GetOffsetsBuffer(),\n+388 stencilTable->GetIndicesBuffer(),\n+389 stencilTable->GetWeightsBuffer(),\n+390 0,\n+391 0,\n+392 /* start = */ 0,\n+393 /* end = */ stencilTable->GetNumStencils(),\n+394 context);\n+395 }\n+396\n+429 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n+_\b4_\b3_\b0 bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n+431 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+432 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+433 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+434 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+435 STENCIL_TABLE const *stencilTable,\n+436 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context) const\n+437 {\n+438 return EvalStencils(srcBuffer->BindMTLBuffer(context), srcDesc,\n+439 dstBuffer->BindMTLBuffer(context), dstDesc,\n+440 duBuffer->BindMTLBuffer(context), duDesc,\n+441 dvBuffer->BindMTLBuffer(context), dvDesc,\n+442 stencilTable->GetSizesBuffer(),\n+443 stencilTable->GetOffsetsBuffer(),\n+444 stencilTable->GetIndicesBuffer(),\n+445 stencilTable->GetWeightsBuffer(),\n+446 stencilTable->GetDuWeightsBuffer(),\n+447 stencilTable->GetDvWeightsBuffer(),\n+448 /* start = */ 0,\n+449 /* end = */ stencilTable->GetNumStencils(),\n+450 context);\n+451 }\n+452\n+503 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n+_\b5_\b0_\b4 bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n+505 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+506 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+507 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+508 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+509 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+510 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+511 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+512 STENCIL_TABLE const *stencilTable,\n+513 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context) const\n+514 {\n+515 return EvalStencils(srcBuffer->BindMTLBuffer(context), srcDesc,\n+516 dstBuffer->BindMTLBuffer(context), dstDesc,\n+517 duBuffer->BindMTLBuffer(context), duDesc,\n+518 dvBuffer->BindMTLBuffer(context), dvDesc,\n+519 duuBuffer->BindMTLBuffer(context), duuDesc,\n+520 duvBuffer->BindMTLBuffer(context), duvDesc,\n+521 dvvBuffer->BindMTLBuffer(context), dvvDesc,\n+522 stencilTable->GetSizesBuffer(),\n+523 stencilTable->GetOffsetsBuffer(),\n+524 stencilTable->GetIndicesBuffer(),\n+525 stencilTable->GetWeightsBuffer(),\n+526 stencilTable->GetDuWeightsBuffer(),\n+527 stencilTable->GetDvWeightsBuffer(),\n+528 stencilTable->GetDuuWeightsBuffer(),\n+529 stencilTable->GetDuvWeightsBuffer(),\n+530 stencilTable->GetDvvWeightsBuffer(),\n+531 /* start = */ 0,\n+532 /* end = */ stencilTable->GetNumStencils(),\n+533 context);\n+534 }\n+535\n+_\b5_\b7_\b4 bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(id<MTLBuffer> srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+575 id<MTLBuffer> dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+576 id<MTLBuffer> duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+577 id<MTLBuffer> dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+578 id<MTLBuffer> sizesBuffer,\n+579 id<MTLBuffer> offsetsBuffer,\n+580 id<MTLBuffer> indicesBuffer,\n+581 id<MTLBuffer> weightsBuffer,\n+582 id<MTLBuffer> duWeightsBuffer,\n+583 id<MTLBuffer> dvWeightsBuffer,\n+584 int start,\n+585 int end,\n+586 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context) const;\n+587\n+_\b6_\b4_\b4 bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(id<MTLBuffer> srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+645 id<MTLBuffer> dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+646 id<MTLBuffer> duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+647 id<MTLBuffer> dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+648 id<MTLBuffer> duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+649 id<MTLBuffer> duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+650 id<MTLBuffer> dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+651 id<MTLBuffer> sizesBuffer,\n+652 id<MTLBuffer> offsetsBuffer,\n+653 id<MTLBuffer> indicesBuffer,\n+654 id<MTLBuffer> weightsBuffer,\n+655 id<MTLBuffer> duWeightsBuffer,\n+656 id<MTLBuffer> dvWeightsBuffer,\n+657 id<MTLBuffer> duuWeightsBuffer,\n+658 id<MTLBuffer> duvWeightsBuffer,\n+659 id<MTLBuffer> dvvWeightsBuffer,\n+660 int start,\n+661 int end,\n+662 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context) const;\n+663\n+669\n+703 template <typename SRC_BUFFER, typename DST_BUFFER,\n+704 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b7_\b0_\b5 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n+706 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+707 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+708 int numPatchCoords,\n+709 PATCHCOORD_BUFFER *patchCoords,\n+710 PATCH_TABLE *patchTable,\n+711 _\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n+712 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context) {\n+713\n+714 if (instance) {\n+715 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer, srcDesc,\n+716 dstBuffer, dstDesc,\n+717 numPatchCoords, patchCoords,\n+718 patchTable,\n+719 context);\n+720 } else {\n+721 // Create an instance on demand (slow)\n+722 instance = Create(srcDesc, dstDesc,\n+723 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+724 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+725 context);\n+726 if (instance) {\n+727 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer, srcDesc,\n+728 dstBuffer, dstDesc,\n+729 numPatchCoords, patchCoords,\n+730 patchTable,\n+731 context);\n+732 delete instance;\n+733 return r;\n+734 }\n+735 return false;\n+736 }\n+737 }\n+738\n+784 template <typename SRC_BUFFER, typename DST_BUFFER,\n+785 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b7_\b8_\b6 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n+787 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+788 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+789 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+790 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+791 int numPatchCoords,\n+792 PATCHCOORD_BUFFER *patchCoords,\n+793 PATCH_TABLE *patchTable,\n+794 _\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br* instance,\n+795 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context) {\n+796\n+797 if (instance) {\n+798 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer, srcDesc,\n+799 dstBuffer, dstDesc,\n+800 duBuffer, duDesc,\n+801 dvBuffer, dvDesc,\n+802 numPatchCoords, patchCoords,\n+803 patchTable,\n+804 context);\n+805 } else {\n+806 // Create an instance on demand (slow)\n+807 instance = Create(srcDesc, dstDesc,\n+808 duDesc, dvDesc, context);\n+809 if (instance) {\n+810 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer, srcDesc,\n+811 dstBuffer, dstDesc,\n+812 duBuffer, duDesc,\n+813 dvBuffer, dvDesc,\n+814 numPatchCoords, patchCoords,\n+815 patchTable,\n+816 context);\n+817 delete instance;\n+818 return r;\n+819 }\n+820 return false;\n+821 }\n+822 }\n+823\n+887 template <typename SRC_BUFFER, typename DST_BUFFER,\n+888 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b8_\b8_\b9 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n+890 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+891 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+892 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+893 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+894 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+895 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+896 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+897 int numPatchCoords,\n+898 PATCHCOORD_BUFFER *patchCoords,\n+899 PATCH_TABLE *patchTable,\n+900 _\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br* instance,\n+901 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context) {\n+902\n+903 if (instance) {\n+904 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer, srcDesc,\n+905 dstBuffer, dstDesc,\n+906 duBuffer, duDesc,\n+907 dvBuffer, dvDesc,\n+908 duuBuffer, duuDesc,\n+909 duvBuffer, duvDesc,\n+910 dvvBuffer, dvvDesc,\n+911 numPatchCoords, patchCoords,\n+912 patchTable,\n+913 context);\n+914 } else {\n+915 // Create an instance on demand (slow)\n+916 instance = Create(srcDesc, dstDesc,\n+917 duDesc, dvDesc,\n+918 duuDesc, duvDesc, dvvDesc, context);\n+919 if (instance) {\n+920 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer, srcDesc,\n+921 dstBuffer, dstDesc,\n+922 duBuffer, duDesc,\n+923 dvBuffer, dvDesc,\n+924 duuBuffer, duuDesc,\n+925 duvBuffer, duvDesc,\n+926 dvvBuffer, dvvDesc,\n+927 numPatchCoords, patchCoords,\n+928 patchTable,\n+929 context);\n+930 delete instance;\n+931 return r;\n+932 }\n+933 return false;\n+934 }\n+935 }\n+936\n+964 template <typename SRC_BUFFER, typename DST_BUFFER,\n+965 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b9_\b6_\b6 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n+967 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+968 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+969 int numPatchCoords,\n+970 PATCHCOORD_BUFFER *patchCoords,\n+971 PATCH_TABLE *patchTable,\n+972 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context) const {\n+973\n+974 return EvalPatches(srcBuffer->BindMTLBuffer(context), srcDesc,\n+975 dstBuffer->BindMTLBuffer(context), dstDesc,\n+976 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+977 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+978 numPatchCoords,\n+979 patchCoords->BindMTLBuffer(context),\n+980 patchTable->GetPatchArrays(),\n+981 patchTable->GetPatchIndexBuffer(),\n+982 patchTable->GetPatchParamBuffer(),\n+983 context);\n+984 }\n+985\n+1023 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1024 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b1_\b0_\b2_\b5 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n+1026 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1027 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1028 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+1029 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+1030 int numPatchCoords,\n+1031 PATCHCOORD_BUFFER *patchCoords,\n+1032 PATCH_TABLE *patchTable,\n+1033 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context) const {\n+1034\n+1035 return EvalPatches(srcBuffer->BindMTLBuffer(context), srcDesc,\n+1036 dstBuffer->BindMTLBuffer(context), dstDesc,\n+1037 duBuffer->BindMTLBuffer(context), duDesc,\n+1038 dvBuffer->BindMTLBuffer(context), dvDesc,\n+1039 numPatchCoords,\n+1040 patchCoords->BindMTLBuffer(context),\n+1041 patchTable->GetPatchArrays(),\n+1042 patchTable->GetPatchIndexBuffer(),\n+1043 patchTable->GetPatchParamBuffer(),\n+1044 context);\n+1045 }\n+1046\n+1102 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1103 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b1_\b1_\b0_\b4 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n+1105 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1106 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1107 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+1108 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+1109 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+1110 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+1111 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+1112 int numPatchCoords,\n+1113 PATCHCOORD_BUFFER *patchCoords,\n+1114 PATCH_TABLE *patchTable,\n+1115 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context) const {\n+1116\n+1117 return EvalPatches(srcBuffer->BindMTLBuffer(context), srcDesc,\n+1118 dstBuffer->BindMTLBuffer(context), dstDesc,\n+1119 duBuffer->BindMTLBuffer(context), duDesc,\n+1120 dvBuffer->BindMTLBuffer(context), dvDesc,\n+1121 duuBuffer->BindMTLBuffer(context), duuDesc,\n+1122 duvBuffer->BindMTLBuffer(context), duvDesc,\n+1123 dvvBuffer->BindMTLBuffer(context), dvvDesc,\n+1124 numPatchCoords,\n+1125 patchCoords->BindMTLBuffer(context),\n+1126 patchTable->GetPatchArrays(),\n+1127 patchTable->GetPatchIndexBuffer(),\n+1128 patchTable->GetPatchParamBuffer(),\n+1129 context);\n+1130 }\n+1131\n+_\b1_\b1_\b3_\b2 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(id<MTLBuffer> srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1133 id<MTLBuffer> dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1134 id<MTLBuffer> duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+1135 id<MTLBuffer> dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+1136 int numPatchCoords,\n+1137 id<MTLBuffer> patchCoordsBuffer,\n+1138 const _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\bc_\bt_\bo_\br &patchArrays,\n+1139 id<MTLBuffer> patchIndexBuffer,\n+1140 id<MTLBuffer> patchParamsBuffer,\n+1141 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context) const;\n+1142\n+_\b1_\b1_\b4_\b3 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(id<MTLBuffer> srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1144 id<MTLBuffer> dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1145 id<MTLBuffer> duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+1146 id<MTLBuffer> dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+1147 id<MTLBuffer> duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+1148 id<MTLBuffer> duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+1149 id<MTLBuffer> dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+1150 int numPatchCoords,\n+1151 id<MTLBuffer> patchCoordsBuffer,\n+1152 const _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\bc_\bt_\bo_\br &patchArrays,\n+1153 id<MTLBuffer> patchIndexBuffer,\n+1154 id<MTLBuffer> patchParamsBuffer,\n+1155 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context) const;\n+1156\n+1190 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1191 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b1_\b1_\b9_\b2 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1193 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1194 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1195 int numPatchCoords,\n+1196 PATCHCOORD_BUFFER *patchCoords,\n+1197 PATCH_TABLE *patchTable,\n+1198 _\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n+1199 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* deviceContext) {\n+1200\n+1201 if (instance) {\n+1202 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1203 srcBuffer, srcDesc,\n+1204 dstBuffer, dstDesc,\n+1205 numPatchCoords, patchCoords,\n+1206 patchTable,\n+1207 deviceContext);\n+1208 } else {\n+1209 // Create an instance on demand (slow)\n+1210 instance = Create(srcDesc, dstDesc,\n+1211 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+1212 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+1213 deviceContext);\n+1214 if (instance) {\n+1215 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1216 srcBuffer, srcDesc,\n+1217 dstBuffer, dstDesc,\n+1218 numPatchCoords, patchCoords,\n+1219 patchTable,\n+1220 deviceContext);\n+1221 delete instance;\n+1222 return r;\n+1223 }\n+1224 return false;\n+1225 }\n+1226 }\n+1227\n+1255 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1256 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b1_\b2_\b5_\b7 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1258 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1259 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1260 int numPatchCoords,\n+1261 PATCHCOORD_BUFFER *patchCoords,\n+1262 PATCH_TABLE *patchTable,\n+1263 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* deviceContext) const {\n+1264\n+1265 return EvalPatches(srcBuffer->BindMTLBuffer(deviceContext), srcDesc,\n+1266 dstBuffer->BindMTLBuffer(deviceContext), dstDesc,\n+1267 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+1268 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+1269 numPatchCoords,\n+1270 patchCoords->BindMTLBuffer(deviceContext),\n+1271 patchTable->GetVaryingPatchArrays(),\n+1272 patchTable->GetVaryingPatchIndexBuffer(),\n+1273 patchTable->GetPatchParamBuffer(),\n+1274 deviceContext\n+1275 );\n+1276 }\n+1277\n+1323 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1324 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b1_\b3_\b2_\b5 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1326 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1327 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1328 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+1329 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+1330 int numPatchCoords,\n+1331 PATCHCOORD_BUFFER *patchCoords,\n+1332 PATCH_TABLE *patchTable,\n+1333 _\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n+1334 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* deviceContext) {\n+1335\n+1336 if (instance) {\n+1337 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1338 srcBuffer, srcDesc,\n+1339 dstBuffer, dstDesc,\n+1340 duBuffer, duDesc,\n+1341 dvBuffer, dvDesc,\n+1342 numPatchCoords, patchCoords,\n+1343 patchTable,\n+1344 deviceContext);\n+1345 } else {\n+1346 // Create an instance on demand (slow)\n+1347 instance = Create(srcDesc, dstDesc,\n+1348 duDesc, dvDesc,\n+1349 deviceContext);\n+1350 if (instance) {\n+1351 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1352 srcBuffer, srcDesc,\n+1353 dstBuffer, dstDesc,\n+1354 duBuffer, duDesc,\n+1355 dvBuffer, dvDesc,\n+1356 numPatchCoords, patchCoords,\n+1357 patchTable,\n+1358 deviceContext);\n+1359 delete instance;\n+1360 return r;\n+1361 }\n+1362 return false;\n+1363 }\n+1364 }\n+1365\n+1405 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1406 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b1_\b4_\b0_\b7 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1408 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1409 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1410 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+1411 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+1412 int numPatchCoords,\n+1413 PATCHCOORD_BUFFER *patchCoords,\n+1414 PATCH_TABLE *patchTable,\n+1415 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* deviceContext) const {\n+1416\n+1417 return EvalPatches(srcBuffer->BindMTLBuffer(deviceContext), srcDesc,\n+1418 dstBuffer->BindMTLBuffer(deviceContext), dstDesc,\n+1419 duBuffer->BindMTLBuffer(deviceContext), duDesc,\n+1420 dvBuffer->BindMTLBuffer(deviceContext), dvDesc,\n+1421 numPatchCoords,\n+1422 patchCoords->BindMTLBuffer(deviceContext),\n+1423 patchTable->GetVaryingPatchArrays(),\n+1424 patchTable->GetVaryingPatchIndexBuffer(),\n+1425 patchTable->GetPatchParamBuffer(),\n+1426 deviceContext\n+1427 );\n+1428 }\n+1429\n+1430\n+1494 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1495 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b1_\b4_\b9_\b6 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1497 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1498 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1499 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+1500 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+1501 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+1502 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+1503 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+1504 int numPatchCoords,\n+1505 PATCHCOORD_BUFFER *patchCoords,\n+1506 PATCH_TABLE *patchTable,\n+1507 _\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n+1508 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* deviceContext) {\n+1509\n+1510 if (instance) {\n+1511 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1512 srcBuffer, srcDesc,\n+1513 dstBuffer, dstDesc,\n+1514 duBuffer, duDesc,\n+1515 dvBuffer, dvDesc,\n+1516 duuBuffer, duuDesc,\n+1517 duvBuffer, duvDesc,\n+1518 dvvBuffer, dvvDesc,\n+1519 numPatchCoords, patchCoords,\n+1520 patchTable,\n+1521 deviceContext);\n+1522 } else {\n+1523 // Create an instance on demand (slow)\n+1524 instance = Create(srcDesc, dstDesc,\n+1525 duDesc, dvDesc,\n+1526 duuDesc, duvDesc, dvvDesc,\n+1527 deviceContext);\n+1528 if (instance) {\n+1529 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1530 srcBuffer, srcDesc,\n+1531 dstBuffer, dstDesc,\n+1532 duBuffer, duDesc,\n+1533 dvBuffer, dvDesc,\n+1534 duuBuffer, duuDesc,\n+1535 duvBuffer, duvDesc,\n+1536 dvvBuffer, dvvDesc,\n+1537 numPatchCoords, patchCoords,\n+1538 patchTable,\n+1539 deviceContext);\n+1540 delete instance;\n+1541 return r;\n+1542 }\n+1543 return false;\n+1544 }\n+1545 }\n+1546\n+1604 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1605 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b1_\b6_\b0_\b6 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1607 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1608 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1609 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+1610 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+1611 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+1612 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+1613 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+1614 int numPatchCoords,\n+1615 PATCHCOORD_BUFFER *patchCoords,\n+1616 PATCH_TABLE *patchTable,\n+1617 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* deviceContext) const {\n+1618\n+1619 return EvalPatches(srcBuffer->BindMTLBuffer(deviceContext), srcDesc,\n+1620 dstBuffer->BindMTLBuffer(deviceContext), dstDesc,\n+1621 duBuffer->BindMTLBuffer(deviceContext), duDesc,\n+1622 dvBuffer->BindMTLBuffer(deviceContext), dvDesc,\n+1623 duuBuffer->BindMTLBuffer(deviceContext), duuDesc,\n+1624 duvBuffer->BindMTLBuffer(deviceContext), duvDesc,\n+1625 dvvBuffer->BindMTLBuffer(deviceContext), dvvDesc,\n+1626 numPatchCoords,\n+1627 patchCoords->BindMTLBuffer(deviceContext),\n+1628 patchTable->GetVaryingPatchArrays(),\n+1629 patchTable->GetVaryingPatchIndexBuffer(),\n+1630 patchTable->GetPatchParamBuffer(),\n+1631 deviceContext\n+1632 );\n+1633 }\n+1634\n+1670 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1671 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b1_\b6_\b7_\b2 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1673 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1674 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1675 int numPatchCoords,\n+1676 PATCHCOORD_BUFFER *patchCoords,\n+1677 PATCH_TABLE *patchTable,\n+1678 int fvarChannel,\n+1679 _\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n+1680 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* deviceContext) {\n+1681\n+1682 if (instance) {\n+1683 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1684 srcBuffer, srcDesc,\n+1685 dstBuffer, dstDesc,\n+1686 numPatchCoords, patchCoords,\n+1687 patchTable,\n+1688 fvarChannel,\n+1689 deviceContext);\n+1690 } else {\n+1691 // Create an instance on demand (slow)\n+1692 instance = Create(srcDesc, dstDesc,\n+1693 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+1694 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+1695 deviceContext);\n+1696 if (instance) {\n+1697 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1698 srcBuffer, srcDesc,\n+1699 dstBuffer, dstDesc,\n+1700 numPatchCoords, patchCoords,\n+1701 patchTable,\n+1702 fvarChannel,\n+1703 deviceContext);\n+1704 delete instance;\n+1705 return r;\n+1706 }\n+1707 return false;\n+1708 }\n+1709 }\n+1710\n+1740 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1741 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b1_\b7_\b4_\b2 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1743 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1744 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1745 int numPatchCoords,\n+1746 PATCHCOORD_BUFFER *patchCoords,\n+1747 PATCH_TABLE *patchTable,\n+1748 int fvarChannel,\n+1749 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* deviceContext) const {\n+1750\n+1751 return EvalPatches(srcBuffer->BindMTLBuffer(deviceContext), srcDesc,\n+1752 dstBuffer->BindMTLBuffer(deviceContext), dstDesc,\n+1753 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+1754 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+1755 numPatchCoords,\n+1756 patchCoords->BindMTLBuffer(deviceContext),\n+1757 patchTable->GetFVarPatchArrays(fvarChannel),\n+1758 patchTable->GetFVarPatchIndexBuffer(fvarChannel),\n+1759 patchTable->GetFVarPatchParamBuffer(fvarChannel),\n+1760 deviceContext\n+1761 );\n+1762 }\n+1763\n+1811 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1812 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b1_\b8_\b1_\b3 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1814 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1815 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1816 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+1817 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+1818 int numPatchCoords,\n+1819 PATCHCOORD_BUFFER *patchCoords,\n+1820 PATCH_TABLE *patchTable,\n+1821 int fvarChannel,\n+1822 _\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n+1823 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* deviceContext) {\n+1824\n+1825 if (instance) {\n+1826 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1827 srcBuffer, srcDesc,\n+1828 dstBuffer, dstDesc,\n+1829 duBuffer, duDesc,\n+1830 dvBuffer, dvDesc,\n+1831 numPatchCoords, patchCoords,\n+1832 patchTable,\n+1833 fvarChannel,\n+1834 deviceContext);\n+1835 } else {\n+1836 // Create an instance on demand (slow)\n+1837 instance = Create(srcDesc, dstDesc,\n+1838 duDesc, dvDesc,\n+1839 deviceContext);\n+1840 if (instance) {\n+1841 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1842 srcBuffer, srcDesc,\n+1843 dstBuffer, dstDesc,\n+1844 duBuffer, duDesc,\n+1845 dvBuffer, dvDesc,\n+1846 numPatchCoords, patchCoords,\n+1847 patchTable,\n+1848 fvarChannel,\n+1849 deviceContext);\n+1850 delete instance;\n+1851 return r;\n+1852 }\n+1853 return false;\n+1854 }\n+1855 }\n+1856\n+1898 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1899 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b1_\b9_\b0_\b0 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1901 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1902 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1903 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+1904 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+1905 int numPatchCoords,\n+1906 PATCHCOORD_BUFFER *patchCoords,\n+1907 PATCH_TABLE *patchTable,\n+1908 int fvarChannel,\n+1909 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* deviceContext) const {\n+1910\n+1911 return EvalPatches(srcBuffer->BindMTLBuffer(deviceContext), srcDesc,\n+1912 dstBuffer->BindMTLBuffer(deviceContext), dstDesc,\n+1913 duBuffer->BindMTLBuffer(deviceContext), duDesc,\n+1914 dvBuffer->BindMTLBuffer(deviceContext), dvDesc,\n+1915 numPatchCoords,\n+1916 patchCoords->BindMTLBuffer(deviceContext),\n+1917 patchTable->GetFVarPatchArrays(fvarChannel),\n+1918 patchTable->GetFVarPatchIndexBuffer(fvarChannel),\n+1919 patchTable->GetFVarPatchParamBuffer(fvarChannel),\n+1920 deviceContext\n+1921 );\n+1922 }\n+1923\n+1989 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1990 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b1_\b9_\b9_\b1 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1992 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1993 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1994 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+1995 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+1996 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+1997 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+1998 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+1999 int numPatchCoords,\n+2000 PATCHCOORD_BUFFER *patchCoords,\n+2001 PATCH_TABLE *patchTable,\n+2002 int fvarChannel,\n+2003 _\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n+2004 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* deviceContext) {\n+2005\n+2006 if (instance) {\n+2007 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+2008 srcBuffer, srcDesc,\n+2009 dstBuffer, dstDesc,\n+2010 duBuffer, duDesc,\n+2011 dvBuffer, dvDesc,\n+2012 duuBuffer, duuDesc,\n+2013 duvBuffer, duvDesc,\n+2014 dvvBuffer, dvvDesc,\n+2015 numPatchCoords, patchCoords,\n+2016 patchTable,\n+2017 fvarChannel,\n+2018 deviceContext);\n+2019 } else {\n+2020 // Create an instance on demand (slow)\n+2021 instance = Create(srcDesc, dstDesc,\n+2022 duDesc, dvDesc,\n+2023 duuDesc, duvDesc, dvvDesc,\n+2024 deviceContext);\n+2025 if (instance) {\n+2026 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+2027 srcBuffer, srcDesc,\n+2028 dstBuffer, dstDesc,\n+2029 duBuffer, duDesc,\n+2030 dvBuffer, dvDesc,\n+2031 duuBuffer, duuDesc,\n+2032 duvBuffer, duvDesc,\n+2033 dvvBuffer, dvvDesc,\n+2034 numPatchCoords, patchCoords,\n+2035 patchTable,\n+2036 fvarChannel,\n+2037 deviceContext);\n+2038 delete instance;\n+2039 return r;\n+2040 }\n+2041 return false;\n+2042 }\n+2043 }\n+2044\n+2104 template <typename SRC_BUFFER, typename DST_BUFFER,\n+2105 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b2_\b1_\b0_\b6 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+2107 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+2108 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+2109 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+2110 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+2111 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+2112 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+2113 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+2114 int numPatchCoords,\n+2115 PATCHCOORD_BUFFER *patchCoords,\n+2116 PATCH_TABLE *patchTable,\n+2117 int fvarChannel,\n+2118 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* deviceContext) const {\n+2119\n+2120 return EvalPatches(srcBuffer->BindMTLBuffer(deviceContext), srcDesc,\n+2121 dstBuffer->BindMTLBuffer(deviceContext), dstDesc,\n+2122 duBuffer->BindMTLBuffer(deviceContext), duDesc,\n+2123 dvBuffer->BindMTLBuffer(deviceContext), dvDesc,\n+2124 duuBuffer->BindMTLBuffer(deviceContext), duuDesc,\n+2125 duvBuffer->BindMTLBuffer(deviceContext), duvDesc,\n+2126 dvvBuffer->BindMTLBuffer(deviceContext), dvvDesc,\n+2127 numPatchCoords,\n+2128 patchCoords->BindMTLBuffer(deviceContext),\n+2129 patchTable->GetFVarPatchArrays(fvarChannel),\n+2130 patchTable->GetFVarPatchIndexBuffer(fvarChannel),\n+2131 patchTable->GetFVarPatchParamBuffer(fvarChannel),\n+2132 fvarChannel,\n+2133 deviceContext\n+2134 );\n+2135 }\n+2136\n+_\b2_\b1_\b3_\b8 bool _\bC_\bo_\bm_\bp_\bi_\bl_\be(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+2139 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+2140 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+2141 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+2142 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+2143 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+2144 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+2145 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context);\n+2146\n+_\b2_\b1_\b4_\b8 static void _\bS_\by_\bn_\bc_\bh_\br_\bo_\bn_\bi_\bz_\be(_\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context);\n+2149\n+2150 private:\n+2151\n+2152 id<MTLLibrary> _computeLibrary;\n+2153 id<MTLComputePipelineState> _evalStencils;\n+2154 id<MTLComputePipelineState> _evalPatches;\n+2155 id<MTLBuffer> _parameterBuffer;\n+2156\n+2157 int _workGroupSize;\n+2158};\n+2159\n+2160} //end namespace Osd\n+2161\n+2162} //end namespace OPENSUBDIV_VERSION\n+2163using namespace OPENSUBDIV_VERSION;\n+2164\n+2165} //end namespace OpenSubdiv\n+2166\n+2167#endif // OPENSUBDIV3_OSD_MTL_COMPUTE_EVALUATOR_H\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n-ConstArray< LocalIndex > ConstLocalIndexArray\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b8_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n-Array< LocalIndex > LocalIndexArray\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b8_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx\n-int Index\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b5_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n-ConstArray< Index > ConstIndexArray\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b8_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx\n-unsigned short LocalIndex\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b6_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n-Array< Index > IndexArray\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b7_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bC_\bO_\bR_\bN_\bE_\bR\n-@ RULE_CORNER\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b8_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bC_\bR_\bE_\bA_\bS_\bE\n-@ RULE_CREASE\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b8_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\bc_\bt_\bo_\br\n+std::vector< PatchArray > PatchArrayVector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b1_\b3_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n+Stencil table class wrapping the template for compatibility.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b2_\b7_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n+Limit stencil table class wrapping the template for compatibility.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b8_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n+BufferDescriptor is a struct which describes buffer elements in interleaved\n+data buffers....\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b6_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bm_\bo_\bn_\b._\bh_\b:_\b4_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b5_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bM_\bT_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n+MTLStencilTable(Far::LimitStencilTable const *stencilTable, MTLContext\n+*context)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bD_\bu_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br\n+id< MTLBuffer > GetDuWeightsBuffer() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b6_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b~_\bM_\bT_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n+~MTLStencilTable()\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bD_\bv_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br\n+id< MTLBuffer > GetDvvWeightsBuffer() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bM_\bT_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n+MTLStencilTable(Far::StencilTable const *stencilTable, MTLContext *context)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bD_\bu_\bu_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br\n+id< MTLBuffer > GetDuuWeightsBuffer() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bD_\bu_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br\n+id< MTLBuffer > GetDuvWeightsBuffer() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+int GetNumStencils() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bI_\bn_\bd_\bi_\bc_\be_\bs_\bB_\bu_\bf_\bf_\be_\br\n+id< MTLBuffer > GetIndicesBuffer() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b6_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bS_\bi_\bz_\be_\bs_\bB_\bu_\bf_\bf_\be_\br\n+id< MTLBuffer > GetSizesBuffer() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b6_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br\n+id< MTLBuffer > GetOffsetsBuffer() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b6_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br\n+id< MTLBuffer > GetWeightsBuffer() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b6_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n+static MTLStencilTable * Create(STENCIL_TABLE *stencilTable, DEVICE_CONTEXT\n+context)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b5_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bD_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br\n+id< MTLBuffer > GetDvWeightsBuffer() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b9_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+bool EvalStencils(id< MTLBuffer > srcBuffer, BufferDescriptor const &srcDesc,\n+id< MTLBuffer > dstBuffer, BufferDescriptor const &dstDesc, id< MTLBuffer >\n+duBuffer, BufferDescriptor const &duDesc, id< MTLBuffer > dvBuffer,\n+BufferDescriptor const &dvDesc, id< MTLBuffer > duuBuffer, BufferDescriptor\n+const &duuDesc, id< MTLBuffer > duvBuffer, BufferDescriptor const &duvDesc, id<\n+MTLBuffer > dvvBuffer, BufferDescriptor const &dvvDesc, id< MTLBuffer >\n+sizesBuffer, id< MTLBuffer > offsetsBuffer, id< MTLBuffer > indicesBuffer, id<\n+MTLBuffer > weightsBuffer, id< MTLBuffer > duWeightsBuffer, id< MTLBuffer >\n+dvWeightsBuffer, id< MTLBuffer > duuWeightsBuffer, id< MTLBuffer >\n+duvWeightsBuffer, id< MTLBuffer > dvvWeightsBuffer, int start, int end,\n+MTLContext *context) const\n+Dispatch the MTL compute kernel on GPU asynchronously returns false if the\n+kernel hasn't been compile...\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n+BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n+&dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE\n+*patchTable, MTLComputeEvaluator *instance, MTLContext *context)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b8_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n+*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n+BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const\n+&duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER\n+*dvvBuffer, BufferDescriptor const &dvvDesc, STENCIL_TABLE const *stencilTable,\n+MTLComputeEvaluator const *instance, MTLContext *context)\n+Generic static stencil function. This function has a same signature as other\n+device kernels have so t...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b3_\b1_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:\n+_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n+static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor\n+const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,\n+DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n+BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const\n+&duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER\n+*dvvBuffer, BufferDescriptor const &dvvDesc, int numPatchCoords,\n+PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel,\n+MTLComputeEvaluator const *instance, MTLContext *deviceContext)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b9_\b9_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n+MTLComputeEvaluator()\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\b~_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n+~MTLComputeEvaluator()\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords,\n+PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, MTLComputeEvaluator\n+const *instance, MTLContext *context)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b0_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bI_\bn_\bs_\bt_\ba_\bn_\bt_\bi_\ba_\bt_\ba_\bb_\bl_\be\n+bool Instantiatable\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b9_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n+bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n+BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n+&dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER\n+*duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer,\n+BufferDescriptor const &dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n+*patchCoords, PATCH_TABLE *patchTable, MTLContext *deviceContext) const\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b6_\b0_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n+*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n+BufferDescriptor const &dvDesc, STENCIL_TABLE const *stencilTable,\n+MTLComputeEvaluator const *instance, MTLContext *context)\n+Generic static stencil function. This function has a same signature as other\n+device kernels have so t...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b2_\b2_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:\n+_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n+bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n+*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n+BufferDescriptor const &dvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n+*patchCoords, PATCH_TABLE *patchTable, int fvarChannel, MTLContext\n+*deviceContext) const\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b9_\b0_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:\n+_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n+static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor\n+const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int\n+numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int\n+fvarChannel, MTLComputeEvaluator const *instance, MTLContext *deviceContext)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b6_\b7_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n+static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n+*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n+BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const\n+&duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER\n+*dvvBuffer, BufferDescriptor const &dvvDesc, int numPatchCoords,\n+PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, MTLComputeEvaluator\n+const *instance, MTLContext *deviceContext)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b4_\b9_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, STENCIL_TABLE const\n+*stencilTable, MTLContext *context) const\n+Generic stencil function.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b3_\b7_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+bool EvalPatches(id< MTLBuffer > srcBuffer, BufferDescriptor const &srcDesc,\n+id< MTLBuffer > dstBuffer, BufferDescriptor const &dstDesc, id< MTLBuffer >\n+duBuffer, BufferDescriptor const &duDesc, id< MTLBuffer > dvBuffer,\n+BufferDescriptor const &dvDesc, id< MTLBuffer > duuBuffer, BufferDescriptor\n+const &duuDesc, id< MTLBuffer > duvBuffer, BufferDescriptor const &duvDesc, id<\n+MTLBuffer > dvvBuffer, BufferDescriptor const &dvvDesc, int numPatchCoords, id<\n+MTLBuffer > patchCoordsBuffer, const PatchArrayVector &patchArrays, id<\n+MTLBuffer > patchIndexBuffer, id< MTLBuffer > patchParamsBuffer, MTLContext\n+*context) const\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:\n+_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n+bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n+*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n+BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const\n+&duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER\n+*dvvBuffer, BufferDescriptor const &dvvDesc, int numPatchCoords,\n+PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel,\n+MTLContext *deviceContext) const\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b2_\b1_\b0_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bS_\by_\bn_\bc_\bh_\br_\bo_\bn_\bi_\bz_\be\n+static void Synchronize(MTLContext *context)\n+Wait for the dispatched kernel to finish.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n+BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n+&dvDesc, STENCIL_TABLE const *stencilTable, MTLContext *context) const\n+Generic stencil function.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b4_\b3_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n+BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n+&dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER\n+*duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer,\n+BufferDescriptor const &dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n+*patchCoords, PATCH_TABLE *patchTable, MTLComputeEvaluator *instance,\n+MTLContext *context)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b8_\b8_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:\n+_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n+bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int\n+numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int\n+fvarChannel, MTLContext *deviceContext) const\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b7_\b4_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n+static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int\n+numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable,\n+MTLComputeEvaluator const *instance, MTLContext *deviceContext)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b1_\b9_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n+BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n+&dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER\n+*duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer,\n+BufferDescriptor const &dvvDesc, STENCIL_TABLE const *stencilTable, MTLContext\n+*context) const\n+Generic stencil function.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b5_\b0_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+bool EvalStencils(id< MTLBuffer > srcBuffer, BufferDescriptor const &srcDesc,\n+id< MTLBuffer > dstBuffer, BufferDescriptor const &dstDesc, id< MTLBuffer >\n+duBuffer, BufferDescriptor const &duDesc, id< MTLBuffer > dvBuffer,\n+BufferDescriptor const &dvDesc, id< MTLBuffer > sizesBuffer, id< MTLBuffer >\n+offsetsBuffer, id< MTLBuffer > indicesBuffer, id< MTLBuffer > weightsBuffer,\n+id< MTLBuffer > duWeightsBuffer, id< MTLBuffer > dvWeightsBuffer, int start,\n+int end, MTLContext *context) const\n+Dispatch the MTL compute kernel on GPU asynchronously returns false if the\n+kernel hasn't been compile...\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:\n+_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n+static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor\n+const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,\n+DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n+BufferDescriptor const &dvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n+*patchCoords, PATCH_TABLE *patchTable, int fvarChannel, MTLComputeEvaluator\n+const *instance, MTLContext *deviceContext)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b8_\b1_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords,\n+PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, MTLContext *context)\n+const\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b9_\b6_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, STENCIL_TABLE\n+const *stencilTable, MTLComputeEvaluator const *instance, MTLContext *context)\n+Generic static stencil function. This function has a same signature as other\n+device kernels have so t...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b4_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n+static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n+*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n+BufferDescriptor const &dvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n+*patchCoords, PATCH_TABLE *patchTable, MTLComputeEvaluator const *instance,\n+MTLContext *deviceContext)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b3_\b2_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n+BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n+&dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER\n+*duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer,\n+BufferDescriptor const &dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n+*patchCoords, PATCH_TABLE *patchTable, MTLContext *context) const\n+Generic limit eval function with derivatives. This function has a same\n+signature as other device kern...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b1_\b0_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n+BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n+&dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE\n+*patchTable, MTLContext *context) const\n+Generic limit eval function with derivatives. This function has a same\n+signature as other device kern...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b0_\b2_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n+bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n+BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n+&dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE\n+*patchTable, MTLContext *deviceContext) const\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b4_\b0_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n+bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords,\n+PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, MTLContext\n+*deviceContext) const\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b2_\b5_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n+static MTLComputeEvaluator * Create(BufferDescriptor const &srcDesc,\n+BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc,\n+BufferDescriptor const &dvDesc, MTLContext *context)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n+static MTLComputeEvaluator * Create(BufferDescriptor const &srcDesc,\n+BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc,\n+BufferDescriptor const &dvDesc, BufferDescriptor const &duuDesc,\n+BufferDescriptor const &duvDesc, BufferDescriptor const &dvvDesc, MTLContext\n+*context)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bC_\bo_\bm_\bp_\bi_\bl_\be\n+bool Compile(BufferDescriptor const &srcDesc, BufferDescriptor const &dstDesc,\n+BufferDescriptor const &duDesc, BufferDescriptor const &dvDesc,\n+BufferDescriptor const &duuDesc, BufferDescriptor const &duvDesc,\n+BufferDescriptor const &dvvDesc, MTLContext *context)\n+Configure compute pipline state. Returns false if it fails to create the\n+pipeline state.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+bool EvalPatches(id< MTLBuffer > srcBuffer, BufferDescriptor const &srcDesc,\n+id< MTLBuffer > dstBuffer, BufferDescriptor const &dstDesc, id< MTLBuffer >\n+duBuffer, BufferDescriptor const &duDesc, id< MTLBuffer > dvBuffer,\n+BufferDescriptor const &dvDesc, int numPatchCoords, id< MTLBuffer >\n+patchCoordsBuffer, const PatchArrayVector &patchArrays, id< MTLBuffer >\n+patchIndexBuffer, id< MTLBuffer > patchParamsBuffer, MTLContext *context) const\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bv_\bt_\br\n-    * _\bf_\bv_\ba_\br_\bL_\be_\bv_\be_\bl_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00692.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00692.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/vtr/stackBuffer.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/osd/cudaEvaluator.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -88,35 +88,49 @@\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n+<a href=\"#nested-classes\">Classes</a> &#124;\n <a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">stackBuffer.h File Reference</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">cudaEvaluator.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n+<code>#include &lt;vector&gt;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00764_source.html\">../osd/bufferDescriptor.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a01489_source.html\">../osd/types.h</a>&quot;</code><br />\n </div>\n <p><a href=\"a00692_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n+<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n+Classes</h2></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01181.html\">CudaStencilTable</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">CUDA stencil table.  <a href=\"a01181.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01185.html\">CudaEvaluator</a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+</table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00909\" id=\"r_a00909\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00909.html\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr</a></td></tr>\n+<tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far</a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bd5473d7d5841d48919aaa9ad0cb1f9b.html\">vtr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00692.html\">stackBuffer.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00692.html\">cudaEvaluator.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,19 +1,30 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-stackBuffer.h File Reference\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+cudaEvaluator.h File Reference\n #include \"../version.h\"\n+#include <vector>\n+#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh\"\n+#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n+C\bCl\bla\bas\bss\bse\bes\bs\n+class \u00a0 _\bC_\bu_\bd_\ba_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n+\u00a0       CUDA stencil table. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n+\u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br\n+\u00a0\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bv_\bt_\br\n-    * _\bs_\bt_\ba_\bc_\bk_\bB_\bu_\bf_\bf_\be_\br_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bc_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00692_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00692_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/vtr/stackBuffer.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/osd/cudaEvaluator.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">stackBuffer.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">cudaEvaluator.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00692.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2015 DreamWorks Animation LLC.</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2015 Pixar</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -118,223 +118,583 @@\n <div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_VTR_STACK_BUFFER_H</span></div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#define OPENSUBDIV3_VTR_STACK_BUFFER_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span> </div>\n-<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span> </div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"keyword\">namespace </span>Vtr {</div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"keyword\">namespace </span>internal {</div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span> </div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"comment\">//  The StackBuffer class is intended solely to take the place of VLAs (Variable</span></div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"comment\">//  Length Arrays) which most compilers support, but are not strictly standard C++.</span></div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"comment\">//  Portability concerns forces us to make use of either alloca() or some other</span></div>\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span><span class=\"comment\">//  mechanism to create small arrays on the stack that are typically based on the</span></div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"comment\">//  valence of a vertex -- small in general, but occasionally large.</span></div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span><span class=\"comment\">//  Note also that since the intent of this is to replace VLAs -- not general</span></div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"comment\">//  std::vectors -- support for std::vector functionality is intentionally limited</span></div>\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span><span class=\"comment\">//  and STL-like naming is avoided.  Like a VLA there is no incremental growth.</span></div>\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span><span class=\"comment\">//  Support for resizing is available to reuse an instance at the beginning of a</span></div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span><span class=\"comment\">//  loop with a new size, but resizing in this case reinitializes all elements.</span></div>\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span> </div>\n-<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> TYPE, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> SIZE, <span class=\"keywordtype\">bool</span> POD_TYPE = false&gt;</div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span><span class=\"keyword\">class </span>StackBuffer</div>\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span>{</div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span>    <span class=\"keyword\">typedef</span> <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> size_type;</div>\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span> </div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span>    <span class=\"comment\">//  Constructors and destructor -- declared inline below:</span></div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span>    StackBuffer();</div>\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span>    StackBuffer(size_type size);</div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span>    ~StackBuffer();</div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span> </div>\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span>    <span class=\"comment\">//  Note the reliance on implicit casting so that it can be used similar to</span></div>\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>    <span class=\"comment\">//  a VLA.  This removes the need for operator[] as the resulting TYPE* will</span></div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span>    <span class=\"comment\">//  natively support [].  (The presence of both TYPE* and operator[] also</span></div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span>    <span class=\"comment\">//  causes an ambiguous overloading error with 32-bit MSVC builds.)</span></div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span> </div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span>    <span class=\"keyword\">operator</span> TYPE <span class=\"keyword\">const</span> * () <span class=\"keyword\">const</span> { <span class=\"keywordflow\">return</span> _data; }</div>\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span>    <span class=\"keyword\">operator</span> TYPE *       ()       { <span class=\"keywordflow\">return</span> _data; }</div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span> </div>\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span>    size_type GetSize()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _size; }</div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span> </div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>    <span class=\"keywordtype\">void</span> SetSize(size_type size);</div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span>    <span class=\"keywordtype\">void</span> Reserve(size_type capacity);</div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span> </div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span>    <span class=\"comment\">//  Non-copyable:</span></div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span>    StackBuffer(<span class=\"keyword\">const</span> StackBuffer&lt;TYPE,SIZE,POD_TYPE&gt; &amp;) { }</div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span>    StackBuffer&amp; operator=(<span class=\"keyword\">const</span> StackBuffer&lt;TYPE,SIZE,POD_TYPE&gt; &amp;) { <span class=\"keywordflow\">return</span> *<span class=\"keyword\">this</span>; }</div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span> </div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span>    <span class=\"keywordtype\">void</span> allocate(size_type capacity);</div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>    <span class=\"keywordtype\">void</span> deallocate();</div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>    <span class=\"keywordtype\">void</span> construct();</div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>    <span class=\"keywordtype\">void</span> destruct();</div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span> </div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>    TYPE *     _data;</div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>    size_type  _size;</div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>    size_type  _capacity;</div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span> </div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>    <span class=\"comment\">//  Is alignment an issue here?  The staticData arena will at least be double-word</span></div>\n-<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>    <span class=\"comment\">//  aligned within this struct, which meets current and most anticipated needs.</span></div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>    <span class=\"keywordtype\">char</span>   _staticData[SIZE * <span class=\"keyword\">sizeof</span>(TYPE)];</div>\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span>    <span class=\"keywordtype\">char</span> * _dynamicData;</div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>};</div>\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span> </div>\n-<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span> </div>\n-<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span><span class=\"comment\">//  Core allocation/deallocation methods:</span></div>\n-<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> TYPE, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> SIZE, <span class=\"keywordtype\">bool</span> POD_TYPE&gt;</div>\n-<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span>StackBuffer&lt;TYPE,SIZE,POD_TYPE&gt;::allocate(size_type capacity) {</div>\n-<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span> </div>\n-<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span>    <span class=\"comment\">//  Again, is alignment an issue here?  C++ spec says new will return pointer</span></div>\n-<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span>    <span class=\"comment\">//  &quot;suitably aligned&quot; for conversion to pointers of other types, which implies</span></div>\n-<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span>    <span class=\"comment\">//  at least an alignment of 16.</span></div>\n-<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span>    _dynamicData = <span class=\"keyword\">static_cast&lt;</span><span class=\"keywordtype\">char</span>*<span class=\"keyword\">&gt;</span>(::operator <span class=\"keyword\">new</span>(capacity * <span class=\"keyword\">sizeof</span>(TYPE)));</div>\n-<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span> </div>\n-<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span>    _data = <span class=\"keyword\">reinterpret_cast&lt;</span>TYPE*<span class=\"keyword\">&gt;</span>(_dynamicData);</div>\n-<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span>    _capacity = capacity;</div>\n-<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span>}</div>\n-<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span> </div>\n-<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> TYPE, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> SIZE, <span class=\"keywordtype\">bool</span> POD_TYPE&gt;</div>\n-<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span>StackBuffer&lt;TYPE,SIZE,POD_TYPE&gt;::deallocate() {</div>\n-<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\">  116</span> </div>\n-<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span>    ::operator <span class=\"keyword\">delete</span>(_dynamicData);</div>\n-<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\">  118</span> </div>\n-<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span>    _data = <span class=\"keyword\">reinterpret_cast&lt;</span>TYPE*<span class=\"keyword\">&gt;</span>(_staticData);</div>\n-<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span>    _capacity = SIZE;</div>\n-<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\">  121</span>}</div>\n-<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span> </div>\n-<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span><span class=\"comment\">//  Explicit element-wise construction and destruction within allocated memory.</span></div>\n-<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span><span class=\"comment\">//  Compilers do not always optimize out the iteration here even when there is</span></div>\n-<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span><span class=\"comment\">//  no construction or destruction, so the POD_TYPE arguement can be used to</span></div>\n-<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span><span class=\"comment\">//  force this when/if it becomes an issue (and it has been in some cases).</span></div>\n-<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> TYPE, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> SIZE, <span class=\"keywordtype\">bool</span> POD_TYPE&gt;</div>\n-<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\">  131</span>StackBuffer&lt;TYPE,SIZE,POD_TYPE&gt;::construct() {</div>\n+<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_CUDA_EVALUATOR_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_CUDA_EVALUATOR_H</span></div>\n+<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n+<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../osd/bufferDescriptor.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &quot;../osd/types.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">namespace </span>Far {</div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span>    <span class=\"keyword\">class </span>PatchTable;</div>\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span>    <span class=\"keyword\">class </span>StencilTable;</div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span>    <span class=\"keyword\">class </span>LimitStencilTable;</div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span>}</div>\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span> </div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"keyword\">namespace </span>Osd {</div>\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00052\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01181.html\">   52</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01181.html\">CudaStencilTable</a> {</div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"foldopen\" id=\"foldopen00054\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01181.html#afa5ea3da09e459d3786b4249caea825d\">   54</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01181.html\">CudaStencilTable</a> *<a class=\"code hl_function\" href=\"a01181.html#afa5ea3da09e459d3786b4249caea825d\">Create</a>(<a class=\"code hl_class\" href=\"a01065.html\">Far::StencilTable</a> <span class=\"keyword\">const</span> *stencilTable,</div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span>                                    <span class=\"keywordtype\">void</span> *deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span>        <span class=\"keywordflow\">return</span> <span class=\"keyword\">new</span> <a class=\"code hl_class\" href=\"a01181.html\">CudaStencilTable</a>(stencilTable);</div>\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span>    }</div>\n+</div>\n+<div class=\"foldopen\" id=\"foldopen00059\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01181.html#ac1bda7ee1a17bc67c977cde973c0aaad\">   59</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01181.html\">CudaStencilTable</a> *<a class=\"code hl_function\" href=\"a01181.html#ac1bda7ee1a17bc67c977cde973c0aaad\">Create</a>(<a class=\"code hl_class\" href=\"a01081.html\">Far::LimitStencilTable</a> <span class=\"keyword\">const</span> *limitStencilTable,</div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span>                                    <span class=\"keywordtype\">void</span> *deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span>        <span class=\"keywordflow\">return</span> <span class=\"keyword\">new</span> <a class=\"code hl_class\" href=\"a01181.html\">CudaStencilTable</a>(limitStencilTable);</div>\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span> </div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01181.html#af872fc469b3696a745d30d22c2b89c4c\">   65</a></span>    <span class=\"keyword\">explicit</span> <a class=\"code hl_function\" href=\"a01181.html#af872fc469b3696a745d30d22c2b89c4c\">CudaStencilTable</a>(<a class=\"code hl_class\" href=\"a01065.html\">Far::StencilTable</a> <span class=\"keyword\">const</span> *stencilTable);</div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01181.html#a45150c630c07bbeabd4b91145cecf087\">   66</a></span>    <span class=\"keyword\">explicit</span> <a class=\"code hl_function\" href=\"a01181.html#a45150c630c07bbeabd4b91145cecf087\">CudaStencilTable</a>(<a class=\"code hl_class\" href=\"a01081.html\">Far::LimitStencilTable</a> <span class=\"keyword\">const</span> *limitStencilTable);</div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01181.html#a178a7d6f638161ad174b992c844004ba\">   67</a></span>    <a class=\"code hl_function\" href=\"a01181.html#a178a7d6f638161ad174b992c844004ba\">~CudaStencilTable</a>();</div>\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span> </div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span>    <span class=\"comment\">// interfaces needed for CudaCompute</span></div>\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01181.html#ac4528f233689c7f4ae7f3fd7b0eea484\">   70</a></span>    <span class=\"keywordtype\">void</span> *<a class=\"code hl_function\" href=\"a01181.html#ac4528f233689c7f4ae7f3fd7b0eea484\">GetSizesBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _sizes; }</div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01181.html#a3822b0045b4aa89b646b145acf6dc230\">   71</a></span>    <span class=\"keywordtype\">void</span> *<a class=\"code hl_function\" href=\"a01181.html#a3822b0045b4aa89b646b145acf6dc230\">GetOffsetsBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _offsets; }</div>\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01181.html#af2f896634b0a6cc6d4efb82aafbad5a6\">   72</a></span>    <span class=\"keywordtype\">void</span> *<a class=\"code hl_function\" href=\"a01181.html#af2f896634b0a6cc6d4efb82aafbad5a6\">GetIndicesBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _indices; }</div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01181.html#aa3cd13b6b7e97cebf92d03d3208b75fa\">   73</a></span>    <span class=\"keywordtype\">void</span> *<a class=\"code hl_function\" href=\"a01181.html#aa3cd13b6b7e97cebf92d03d3208b75fa\">GetWeightsBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _weights; }</div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01181.html#a2b91670573e565368e68512e02d045d6\">   74</a></span>    <span class=\"keywordtype\">void</span> *<a class=\"code hl_function\" href=\"a01181.html#a2b91670573e565368e68512e02d045d6\">GetDuWeightsBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _duWeights; }</div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01181.html#a5a1c0c8eb5d41b526ec9480f03dbf4d0\">   75</a></span>    <span class=\"keywordtype\">void</span> *<a class=\"code hl_function\" href=\"a01181.html#a5a1c0c8eb5d41b526ec9480f03dbf4d0\">GetDvWeightsBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _dvWeights; }</div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01181.html#a6b4f42dac92785ea5a1d77a4a75fa502\">   76</a></span>    <span class=\"keywordtype\">void</span> *<a class=\"code hl_function\" href=\"a01181.html#a6b4f42dac92785ea5a1d77a4a75fa502\">GetDuuWeightsBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _duuWeights; }</div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01181.html#a0227c2f6e9e0eaa1bf104e5a6efa0830\">   77</a></span>    <span class=\"keywordtype\">void</span> *<a class=\"code hl_function\" href=\"a01181.html#a0227c2f6e9e0eaa1bf104e5a6efa0830\">GetDuvWeightsBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _duvWeights; }</div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01181.html#a2fd4ce98e6978f5895dd4c79ef84e4d5\">   78</a></span>    <span class=\"keywordtype\">void</span> *<a class=\"code hl_function\" href=\"a01181.html#a2fd4ce98e6978f5895dd4c79ef84e4d5\">GetDvvWeightsBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _dvvWeights; }</div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01181.html#a65836d2070b943c8fecbad926d074de2\">   79</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01181.html#a65836d2070b943c8fecbad926d074de2\">GetNumStencils</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _numStencils; }</div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span> </div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>    <span class=\"keywordtype\">void</span> * _sizes,</div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>         * _offsets,</div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span>         * _indices,</div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>         * _weights,</div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>         * _duWeights,</div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>         * _dvWeights,</div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>         * _duuWeights,</div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>         * _duvWeights,</div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>         * _dvvWeights;</div>\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>    <span class=\"keywordtype\">int</span> _numStencils;</div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00094\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01185.html\">   94</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01185.html\">CudaEvaluator</a> {</div>\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span> </div>\n+<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00126\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01185.html#a68186cd64196498ff6a31e55a822f468\">  126</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01185.html#a68186cd64196498ff6a31e55a822f468\">EvalStencils</a>(</div>\n+<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n+<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">void</span> *instance = NULL,</div>\n+<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\">  131</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n <div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\">  132</span> </div>\n-<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\">  133</span>    <span class=\"keywordflow\">for</span> (size_type i = 0; i &lt; _size; ++i) {</div>\n-<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\">  134</span>        (void) <span class=\"keyword\">new</span> (&amp;_data[i]) TYPE;</div>\n-<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\">  135</span>    }</div>\n-<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\">  136</span>}</div>\n-<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\">  137</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> TYPE, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> SIZE, <span class=\"keywordtype\">bool</span> POD_TYPE&gt;</div>\n-<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\">  138</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\">  139</span>StackBuffer&lt;TYPE,SIZE,POD_TYPE&gt;::destruct() {</div>\n-<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\">  140</span> </div>\n-<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\">  141</span>    <span class=\"keywordflow\">for</span> (size_type i = 0; i &lt; _size; ++i) {</div>\n-<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span>        _data[i].~TYPE();</div>\n+<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\">  133</span>        (void)instance;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\">  134</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\">  135</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01185.html#a68186cd64196498ff6a31e55a822f468\">EvalStencils</a>(srcBuffer-&gt;BindCudaBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\">  136</span>                            dstBuffer-&gt;BindCudaBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\">  137</span>                            (<span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> *)stencilTable-&gt;GetSizesBuffer(),</div>\n+<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\">  138</span>                            (<span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> *)stencilTable-&gt;GetOffsetsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\">  139</span>                            (<span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> *)stencilTable-&gt;GetIndicesBuffer(),</div>\n+<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\">  140</span>                            (<span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> *)stencilTable-&gt;GetWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\">  141</span>                            <span class=\"comment\">/*start = */</span> 0,</div>\n+<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span>                            <span class=\"comment\">/*end   = */</span> stencilTable-&gt;GetNumStencils());</div>\n <div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\">  143</span>    }</div>\n-<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\">  144</span>}</div>\n-<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\">  145</span> </div>\n-<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\">  146</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\">  147</span><span class=\"comment\">//  Inline constructors and destructor:</span></div>\n-<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\">  148</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\">  149</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> TYPE, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> SIZE, <span class=\"keywordtype\">bool</span> POD_TYPE&gt;</div>\n-<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\">  150</span><span class=\"keyword\">inline</span></div>\n-<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\">  151</span>StackBuffer&lt;TYPE,SIZE,POD_TYPE&gt;::StackBuffer() :</div>\n-<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\">  152</span>    _data(reinterpret_cast&lt;TYPE*&gt;(_staticData)),</div>\n-<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\">  153</span>    _size(0),</div>\n-<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\">  154</span>    _capacity(SIZE),</div>\n-<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\">  155</span>    _dynamicData(0) {</div>\n-<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\">  156</span> </div>\n-<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\">  157</span>}</div>\n-<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\">  158</span> </div>\n-<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\">  159</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> TYPE, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> SIZE, <span class=\"keywordtype\">bool</span> POD_TYPE&gt;</div>\n-<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\">  160</span><span class=\"keyword\">inline</span></div>\n-<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\">  161</span>StackBuffer&lt;TYPE,SIZE,POD_TYPE&gt;::StackBuffer(size_type size) :</div>\n-<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\">  162</span>    _data(reinterpret_cast&lt;TYPE*&gt;(_staticData)),</div>\n-<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\">  163</span>    _size(size),</div>\n-<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\">  164</span>    _capacity(SIZE),</div>\n-<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\">  165</span>    _dynamicData(0) {</div>\n-<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\">  166</span> </div>\n-<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\">  167</span>    <span class=\"keywordflow\">if</span> (size &gt; SIZE) {</div>\n-<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\">  168</span>        allocate(size);</div>\n-<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\">  169</span>    }</div>\n-<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\">  170</span>    <span class=\"keywordflow\">if</span> (!POD_TYPE) {</div>\n-<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span>        construct();</div>\n-<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\">  172</span>    }</div>\n-<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\">  173</span>}</div>\n-<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\">  174</span> </div>\n-<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\">  175</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> TYPE, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> SIZE, <span class=\"keywordtype\">bool</span> POD_TYPE&gt;</div>\n-<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\">  176</span><span class=\"keyword\">inline</span></div>\n-<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span>StackBuffer&lt;TYPE,SIZE,POD_TYPE&gt;::~StackBuffer() {</div>\n-<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\">  178</span> </div>\n-<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\">  179</span>    <span class=\"keywordflow\">if</span> (!POD_TYPE) {</div>\n-<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\">  180</span>        destruct();</div>\n-<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\">  181</span>    }</div>\n-<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\">  182</span>    deallocate();</div>\n-<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\">  183</span>}</div>\n-<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\">  184</span> </div>\n-<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\">  185</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\">  186</span><span class=\"comment\">//  Inline sizing methods:</span></div>\n-<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\">  187</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\">  188</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> TYPE, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> SIZE, <span class=\"keywordtype\">bool</span> POD_TYPE&gt;</div>\n-<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\">  189</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\">  190</span>StackBuffer&lt;TYPE,SIZE,POD_TYPE&gt;::Reserve(size_type capacity) {</div>\n-<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\">  191</span> </div>\n-<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\">  192</span>    <span class=\"keywordflow\">if</span> (capacity &gt; _capacity) {</div>\n-<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\">  193</span>        <span class=\"keywordflow\">if</span> (!POD_TYPE) {</div>\n-<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\">  194</span>            destruct();</div>\n-<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\">  195</span>        }</div>\n-<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\">  196</span>        deallocate();</div>\n-<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\">  197</span>        allocate(capacity);</div>\n-<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\">  198</span>    }</div>\n-<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\">  199</span>}</div>\n-<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\">  200</span> </div>\n-<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\">  201</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> TYPE, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> SIZE, <span class=\"keywordtype\">bool</span> POD_TYPE&gt;</div>\n-<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\">  202</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\">  203</span>StackBuffer&lt;TYPE,SIZE,POD_TYPE&gt;::SetSize(size_type size)</div>\n-<div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\">  204</span>{</div>\n-<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\">  205</span>    <span class=\"keywordflow\">if</span> (!POD_TYPE) {</div>\n-<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\">  206</span>        destruct();</div>\n-<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\">  207</span>    }</div>\n-<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\">  208</span>    <span class=\"keywordflow\">if</span> (size == 0) {</div>\n-<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\">  209</span>        deallocate();</div>\n-<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\">  210</span>    } <span class=\"keywordflow\">else</span> <span class=\"keywordflow\">if</span> (size &gt; _capacity) {</div>\n-<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\">  211</span>        deallocate();</div>\n-<div class=\"line\"><a id=\"l00212\" name=\"l00212\"></a><span class=\"lineno\">  212</span>        allocate(size);</div>\n-<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\">  213</span>    }</div>\n-<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\">  214</span>    _size = size;</div>\n-<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\">  215</span>    <span class=\"keywordflow\">if</span> (!POD_TYPE) {</div>\n-<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\">  216</span>        construct();</div>\n-<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\">  217</span>    }</div>\n-<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\">  218</span>}</div>\n-<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\">  219</span> </div>\n-<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\">  220</span>} <span class=\"comment\">// end namespace internal</span></div>\n-<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\">  221</span>} <span class=\"comment\">// end namespace Vtr</span></div>\n-<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\">  222</span> </div>\n-<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\">  223</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\">  224</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\">  225</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+</div>\n+<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\">  144</span> </div>\n+<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01185.html#a4345e3659b7fb82f23dd51c688179ce3\">  171</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01185.html#a4345e3659b7fb82f23dd51c688179ce3\">EvalStencils</a>(</div>\n+<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\">  172</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\">  173</span>        <span class=\"keywordtype\">float</span> *dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\">  174</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * sizes,</div>\n+<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\">  175</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * offsets,</div>\n+<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\">  176</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * indices,</div>\n+<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * weights,</div>\n+<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\">  178</span>        <span class=\"keywordtype\">int</span> start, <span class=\"keywordtype\">int</span> end);</div>\n+<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\">  179</span> </div>\n+<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\">  217</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00218\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01185.html#a5d88651e38d57abedd93558865ce8f78\">  218</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01185.html#a5d88651e38d57abedd93558865ce8f78\">EvalStencils</a>(</div>\n+<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\">  219</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\">  220</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\">  221</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\">  222</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\">  223</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n+<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\">  224</span>        <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01185.html\">CudaEvaluator</a> *instance = NULL,</div>\n+<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\">  225</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n <div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\">  226</span> </div>\n-<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\">  227</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_VTR_STACK_BUFFER_H */</span><span class=\"preprocessor\"></span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\">  227</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\">  228</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\">  229</span> </div>\n+<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\">  230</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01185.html#a68186cd64196498ff6a31e55a822f468\">EvalStencils</a>(srcBuffer-&gt;BindCudaBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\">  231</span>                            dstBuffer-&gt;BindCudaBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\">  232</span>                            duBuffer-&gt;BindCudaBuffer(),  duDesc,</div>\n+<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\">  233</span>                            dvBuffer-&gt;BindCudaBuffer(),  dvDesc,</div>\n+<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\">  234</span>                            (<span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> *)stencilTable-&gt;GetSizesBuffer(),</div>\n+<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\">  235</span>                            (<span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> *)stencilTable-&gt;GetOffsetsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\">  236</span>                            (<span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> *)stencilTable-&gt;GetIndicesBuffer(),</div>\n+<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\">  237</span>                            (<span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> *)stencilTable-&gt;GetWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\">  238</span>                            (<span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> *)stencilTable-&gt;GetDuWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\">  239</span>                            (<span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> *)stencilTable-&gt;GetDvWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\">  240</span>                            <span class=\"comment\">/*start = */</span> 0,</div>\n+<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\">  241</span>                            <span class=\"comment\">/*end   = */</span> stencilTable-&gt;GetNumStencils());</div>\n+<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\">  242</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\">  243</span> </div>\n+<div class=\"line\"><a id=\"l00284\" name=\"l00284\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01185.html#a6daed6135a40cda2daf6c6ea2047b330\">  284</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01185.html#a6daed6135a40cda2daf6c6ea2047b330\">EvalStencils</a>(</div>\n+<div class=\"line\"><a id=\"l00285\" name=\"l00285\"></a><span class=\"lineno\">  285</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00286\" name=\"l00286\"></a><span class=\"lineno\">  286</span>        <span class=\"keywordtype\">float</span> *dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00287\" name=\"l00287\"></a><span class=\"lineno\">  287</span>        <span class=\"keywordtype\">float</span> *du,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00288\" name=\"l00288\"></a><span class=\"lineno\">  288</span>        <span class=\"keywordtype\">float</span> *dv,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00289\" name=\"l00289\"></a><span class=\"lineno\">  289</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * sizes,</div>\n+<div class=\"line\"><a id=\"l00290\" name=\"l00290\"></a><span class=\"lineno\">  290</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * offsets,</div>\n+<div class=\"line\"><a id=\"l00291\" name=\"l00291\"></a><span class=\"lineno\">  291</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * indices,</div>\n+<div class=\"line\"><a id=\"l00292\" name=\"l00292\"></a><span class=\"lineno\">  292</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * weights,</div>\n+<div class=\"line\"><a id=\"l00293\" name=\"l00293\"></a><span class=\"lineno\">  293</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * duWeights,</div>\n+<div class=\"line\"><a id=\"l00294\" name=\"l00294\"></a><span class=\"lineno\">  294</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * dvWeights,</div>\n+<div class=\"line\"><a id=\"l00295\" name=\"l00295\"></a><span class=\"lineno\">  295</span>        <span class=\"keywordtype\">int</span> start, <span class=\"keywordtype\">int</span> end);</div>\n+<div class=\"line\"><a id=\"l00296\" name=\"l00296\"></a><span class=\"lineno\">  296</span> </div>\n+<div class=\"line\"><a id=\"l00352\" name=\"l00352\"></a><span class=\"lineno\">  352</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00353\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00353\" name=\"l00353\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01185.html#a3f478d0122b14779fd161aa9f8076f2a\">  353</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01185.html#a3f478d0122b14779fd161aa9f8076f2a\">EvalStencils</a>(</div>\n+<div class=\"line\"><a id=\"l00354\" name=\"l00354\"></a><span class=\"lineno\">  354</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00355\" name=\"l00355\"></a><span class=\"lineno\">  355</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00356\" name=\"l00356\"></a><span class=\"lineno\">  356</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00357\" name=\"l00357\"></a><span class=\"lineno\">  357</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00358\" name=\"l00358\"></a><span class=\"lineno\">  358</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l00359\" name=\"l00359\"></a><span class=\"lineno\">  359</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l00360\" name=\"l00360\"></a><span class=\"lineno\">  360</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00361\" name=\"l00361\"></a><span class=\"lineno\">  361</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n+<div class=\"line\"><a id=\"l00362\" name=\"l00362\"></a><span class=\"lineno\">  362</span>        <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01185.html\">CudaEvaluator</a> *instance = NULL,</div>\n+<div class=\"line\"><a id=\"l00363\" name=\"l00363\"></a><span class=\"lineno\">  363</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l00364\" name=\"l00364\"></a><span class=\"lineno\">  364</span> </div>\n+<div class=\"line\"><a id=\"l00365\" name=\"l00365\"></a><span class=\"lineno\">  365</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00366\" name=\"l00366\"></a><span class=\"lineno\">  366</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00367\" name=\"l00367\"></a><span class=\"lineno\">  367</span> </div>\n+<div class=\"line\"><a id=\"l00368\" name=\"l00368\"></a><span class=\"lineno\">  368</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01185.html#a68186cd64196498ff6a31e55a822f468\">EvalStencils</a>(srcBuffer-&gt;BindCudaBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00369\" name=\"l00369\"></a><span class=\"lineno\">  369</span>                            dstBuffer-&gt;BindCudaBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00370\" name=\"l00370\"></a><span class=\"lineno\">  370</span>                            duBuffer-&gt;BindCudaBuffer(),  duDesc,</div>\n+<div class=\"line\"><a id=\"l00371\" name=\"l00371\"></a><span class=\"lineno\">  371</span>                            dvBuffer-&gt;BindCudaBuffer(),  dvDesc,</div>\n+<div class=\"line\"><a id=\"l00372\" name=\"l00372\"></a><span class=\"lineno\">  372</span>                            duuBuffer-&gt;BindCudaBuffer(), duuDesc,</div>\n+<div class=\"line\"><a id=\"l00373\" name=\"l00373\"></a><span class=\"lineno\">  373</span>                            duvBuffer-&gt;BindCudaBuffer(), duvDesc,</div>\n+<div class=\"line\"><a id=\"l00374\" name=\"l00374\"></a><span class=\"lineno\">  374</span>                            dvvBuffer-&gt;BindCudaBuffer(), dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00375\" name=\"l00375\"></a><span class=\"lineno\">  375</span>                            (<span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> *)stencilTable-&gt;GetSizesBuffer(),</div>\n+<div class=\"line\"><a id=\"l00376\" name=\"l00376\"></a><span class=\"lineno\">  376</span>                            (<span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> *)stencilTable-&gt;GetOffsetsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00377\" name=\"l00377\"></a><span class=\"lineno\">  377</span>                            (<span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> *)stencilTable-&gt;GetIndicesBuffer(),</div>\n+<div class=\"line\"><a id=\"l00378\" name=\"l00378\"></a><span class=\"lineno\">  378</span>                            (<span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> *)stencilTable-&gt;GetWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00379\" name=\"l00379\"></a><span class=\"lineno\">  379</span>                            (<span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> *)stencilTable-&gt;GetDuWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00380\" name=\"l00380\"></a><span class=\"lineno\">  380</span>                            (<span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> *)stencilTable-&gt;GetDvWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00381\" name=\"l00381\"></a><span class=\"lineno\">  381</span>                            (<span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> *)stencilTable-&gt;GetDuuWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00382\" name=\"l00382\"></a><span class=\"lineno\">  382</span>                            (<span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> *)stencilTable-&gt;GetDuvWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00383\" name=\"l00383\"></a><span class=\"lineno\">  383</span>                            (<span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> *)stencilTable-&gt;GetDvvWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00384\" name=\"l00384\"></a><span class=\"lineno\">  384</span>                            <span class=\"comment\">/*start = */</span> 0,</div>\n+<div class=\"line\"><a id=\"l00385\" name=\"l00385\"></a><span class=\"lineno\">  385</span>                            <span class=\"comment\">/*end   = */</span> stencilTable-&gt;GetNumStencils());</div>\n+<div class=\"line\"><a id=\"l00386\" name=\"l00386\"></a><span class=\"lineno\">  386</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00387\" name=\"l00387\"></a><span class=\"lineno\">  387</span> </div>\n+<div class=\"line\"><a id=\"l00449\" name=\"l00449\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01185.html#a76707de0a89ab94f15ad4b2c398a2c23\">  449</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01185.html#a76707de0a89ab94f15ad4b2c398a2c23\">EvalStencils</a>(</div>\n+<div class=\"line\"><a id=\"l00450\" name=\"l00450\"></a><span class=\"lineno\">  450</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00451\" name=\"l00451\"></a><span class=\"lineno\">  451</span>        <span class=\"keywordtype\">float</span> *dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00452\" name=\"l00452\"></a><span class=\"lineno\">  452</span>        <span class=\"keywordtype\">float</span> *du,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00453\" name=\"l00453\"></a><span class=\"lineno\">  453</span>        <span class=\"keywordtype\">float</span> *dv,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00454\" name=\"l00454\"></a><span class=\"lineno\">  454</span>        <span class=\"keywordtype\">float</span> *duu,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l00455\" name=\"l00455\"></a><span class=\"lineno\">  455</span>        <span class=\"keywordtype\">float</span> *duv,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l00456\" name=\"l00456\"></a><span class=\"lineno\">  456</span>        <span class=\"keywordtype\">float</span> *dvv,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00457\" name=\"l00457\"></a><span class=\"lineno\">  457</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * sizes,</div>\n+<div class=\"line\"><a id=\"l00458\" name=\"l00458\"></a><span class=\"lineno\">  458</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * offsets,</div>\n+<div class=\"line\"><a id=\"l00459\" name=\"l00459\"></a><span class=\"lineno\">  459</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * indices,</div>\n+<div class=\"line\"><a id=\"l00460\" name=\"l00460\"></a><span class=\"lineno\">  460</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * weights,</div>\n+<div class=\"line\"><a id=\"l00461\" name=\"l00461\"></a><span class=\"lineno\">  461</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * duWeights,</div>\n+<div class=\"line\"><a id=\"l00462\" name=\"l00462\"></a><span class=\"lineno\">  462</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * dvWeights,</div>\n+<div class=\"line\"><a id=\"l00463\" name=\"l00463\"></a><span class=\"lineno\">  463</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * duuWeights,</div>\n+<div class=\"line\"><a id=\"l00464\" name=\"l00464\"></a><span class=\"lineno\">  464</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * duvWeights,</div>\n+<div class=\"line\"><a id=\"l00465\" name=\"l00465\"></a><span class=\"lineno\">  465</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * dvvWeights,</div>\n+<div class=\"line\"><a id=\"l00466\" name=\"l00466\"></a><span class=\"lineno\">  466</span>        <span class=\"keywordtype\">int</span> start, <span class=\"keywordtype\">int</span> end);</div>\n+<div class=\"line\"><a id=\"l00467\" name=\"l00467\"></a><span class=\"lineno\">  467</span> </div>\n+<div class=\"line\"><a id=\"l00473\" name=\"l00473\"></a><span class=\"lineno\">  473</span> </div>\n+<div class=\"line\"><a id=\"l00502\" name=\"l00502\"></a><span class=\"lineno\">  502</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l00503\" name=\"l00503\"></a><span class=\"lineno\">  503</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00504\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00504\" name=\"l00504\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01185.html#ad3803e8121bc0491e9f97900ecd50022\">  504</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01185.html#ad3803e8121bc0491e9f97900ecd50022\">EvalPatches</a>(</div>\n+<div class=\"line\"><a id=\"l00505\" name=\"l00505\"></a><span class=\"lineno\">  505</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00506\" name=\"l00506\"></a><span class=\"lineno\">  506</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00507\" name=\"l00507\"></a><span class=\"lineno\">  507</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00508\" name=\"l00508\"></a><span class=\"lineno\">  508</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l00509\" name=\"l00509\"></a><span class=\"lineno\">  509</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l00510\" name=\"l00510\"></a><span class=\"lineno\">  510</span>        <a class=\"code hl_class\" href=\"a01185.html\">CudaEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n+<div class=\"line\"><a id=\"l00511\" name=\"l00511\"></a><span class=\"lineno\">  511</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l00512\" name=\"l00512\"></a><span class=\"lineno\">  512</span> </div>\n+<div class=\"line\"><a id=\"l00513\" name=\"l00513\"></a><span class=\"lineno\">  513</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00514\" name=\"l00514\"></a><span class=\"lineno\">  514</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00515\" name=\"l00515\"></a><span class=\"lineno\">  515</span> </div>\n+<div class=\"line\"><a id=\"l00516\" name=\"l00516\"></a><span class=\"lineno\">  516</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01185.html#ad3803e8121bc0491e9f97900ecd50022\">EvalPatches</a>(srcBuffer-&gt;BindCudaBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00517\" name=\"l00517\"></a><span class=\"lineno\">  517</span>                           dstBuffer-&gt;BindCudaBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00518\" name=\"l00518\"></a><span class=\"lineno\">  518</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00519\" name=\"l00519\"></a><span class=\"lineno\">  519</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a> *)patchCoords-&gt;BindCudaBuffer(),</div>\n+<div class=\"line\"><a id=\"l00520\" name=\"l00520\"></a><span class=\"lineno\">  520</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01325.html\">PatchArray</a> *)patchTable-&gt;GetPatchArrayBuffer(),</div>\n+<div class=\"line\"><a id=\"l00521\" name=\"l00521\"></a><span class=\"lineno\">  521</span>                           (<span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> *)patchTable-&gt;GetPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l00522\" name=\"l00522\"></a><span class=\"lineno\">  522</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01329.html\">PatchParam</a> *)patchTable-&gt;GetPatchParamBuffer());</div>\n+<div class=\"line\"><a id=\"l00523\" name=\"l00523\"></a><span class=\"lineno\">  523</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00524\" name=\"l00524\"></a><span class=\"lineno\">  524</span> </div>\n+<div class=\"line\"><a id=\"l00563\" name=\"l00563\"></a><span class=\"lineno\">  563</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l00564\" name=\"l00564\"></a><span class=\"lineno\">  564</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00565\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00565\" name=\"l00565\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01185.html#aed5bc5e9191bc7fccb1bdedf835d8a35\">  565</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01185.html#aed5bc5e9191bc7fccb1bdedf835d8a35\">EvalPatches</a>(</div>\n+<div class=\"line\"><a id=\"l00566\" name=\"l00566\"></a><span class=\"lineno\">  566</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00567\" name=\"l00567\"></a><span class=\"lineno\">  567</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00568\" name=\"l00568\"></a><span class=\"lineno\">  568</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00569\" name=\"l00569\"></a><span class=\"lineno\">  569</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00570\" name=\"l00570\"></a><span class=\"lineno\">  570</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00571\" name=\"l00571\"></a><span class=\"lineno\">  571</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l00572\" name=\"l00572\"></a><span class=\"lineno\">  572</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l00573\" name=\"l00573\"></a><span class=\"lineno\">  573</span>        <a class=\"code hl_class\" href=\"a01185.html\">CudaEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n+<div class=\"line\"><a id=\"l00574\" name=\"l00574\"></a><span class=\"lineno\">  574</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l00575\" name=\"l00575\"></a><span class=\"lineno\">  575</span> </div>\n+<div class=\"line\"><a id=\"l00576\" name=\"l00576\"></a><span class=\"lineno\">  576</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00577\" name=\"l00577\"></a><span class=\"lineno\">  577</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00578\" name=\"l00578\"></a><span class=\"lineno\">  578</span> </div>\n+<div class=\"line\"><a id=\"l00579\" name=\"l00579\"></a><span class=\"lineno\">  579</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01185.html#ad3803e8121bc0491e9f97900ecd50022\">EvalPatches</a>(srcBuffer-&gt;BindCudaBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00580\" name=\"l00580\"></a><span class=\"lineno\">  580</span>                           dstBuffer-&gt;BindCudaBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00581\" name=\"l00581\"></a><span class=\"lineno\">  581</span>                           duBuffer-&gt;BindCudaBuffer(),  duDesc,</div>\n+<div class=\"line\"><a id=\"l00582\" name=\"l00582\"></a><span class=\"lineno\">  582</span>                           dvBuffer-&gt;BindCudaBuffer(),  dvDesc,</div>\n+<div class=\"line\"><a id=\"l00583\" name=\"l00583\"></a><span class=\"lineno\">  583</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00584\" name=\"l00584\"></a><span class=\"lineno\">  584</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a> *)patchCoords-&gt;BindCudaBuffer(),</div>\n+<div class=\"line\"><a id=\"l00585\" name=\"l00585\"></a><span class=\"lineno\">  585</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01325.html\">PatchArray</a> *)patchTable-&gt;GetPatchArrayBuffer(),</div>\n+<div class=\"line\"><a id=\"l00586\" name=\"l00586\"></a><span class=\"lineno\">  586</span>                           (<span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> *)patchTable-&gt;GetPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l00587\" name=\"l00587\"></a><span class=\"lineno\">  587</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01329.html\">PatchParam</a> *)patchTable-&gt;GetPatchParamBuffer());</div>\n+<div class=\"line\"><a id=\"l00588\" name=\"l00588\"></a><span class=\"lineno\">  588</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00589\" name=\"l00589\"></a><span class=\"lineno\">  589</span> </div>\n+<div class=\"line\"><a id=\"l00646\" name=\"l00646\"></a><span class=\"lineno\">  646</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l00647\" name=\"l00647\"></a><span class=\"lineno\">  647</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00648\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00648\" name=\"l00648\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01185.html#a3d36fc3f9a294dfecbb09e5ba7904d12\">  648</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01185.html#a3d36fc3f9a294dfecbb09e5ba7904d12\">EvalPatches</a>(</div>\n+<div class=\"line\"><a id=\"l00649\" name=\"l00649\"></a><span class=\"lineno\">  649</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00650\" name=\"l00650\"></a><span class=\"lineno\">  650</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00651\" name=\"l00651\"></a><span class=\"lineno\">  651</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00652\" name=\"l00652\"></a><span class=\"lineno\">  652</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00653\" name=\"l00653\"></a><span class=\"lineno\">  653</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l00654\" name=\"l00654\"></a><span class=\"lineno\">  654</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l00655\" name=\"l00655\"></a><span class=\"lineno\">  655</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00656\" name=\"l00656\"></a><span class=\"lineno\">  656</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00657\" name=\"l00657\"></a><span class=\"lineno\">  657</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l00658\" name=\"l00658\"></a><span class=\"lineno\">  658</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l00659\" name=\"l00659\"></a><span class=\"lineno\">  659</span>        <a class=\"code hl_class\" href=\"a01185.html\">CudaEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n+<div class=\"line\"><a id=\"l00660\" name=\"l00660\"></a><span class=\"lineno\">  660</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l00661\" name=\"l00661\"></a><span class=\"lineno\">  661</span> </div>\n+<div class=\"line\"><a id=\"l00662\" name=\"l00662\"></a><span class=\"lineno\">  662</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00663\" name=\"l00663\"></a><span class=\"lineno\">  663</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00664\" name=\"l00664\"></a><span class=\"lineno\">  664</span> </div>\n+<div class=\"line\"><a id=\"l00665\" name=\"l00665\"></a><span class=\"lineno\">  665</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01185.html#ad3803e8121bc0491e9f97900ecd50022\">EvalPatches</a>(srcBuffer-&gt;BindCudaBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00666\" name=\"l00666\"></a><span class=\"lineno\">  666</span>                           dstBuffer-&gt;BindCudaBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00667\" name=\"l00667\"></a><span class=\"lineno\">  667</span>                           duBuffer-&gt;BindCudaBuffer(),  duDesc,</div>\n+<div class=\"line\"><a id=\"l00668\" name=\"l00668\"></a><span class=\"lineno\">  668</span>                           dvBuffer-&gt;BindCudaBuffer(),  dvDesc,</div>\n+<div class=\"line\"><a id=\"l00669\" name=\"l00669\"></a><span class=\"lineno\">  669</span>                           duuBuffer-&gt;BindCudaBuffer(), duuDesc,</div>\n+<div class=\"line\"><a id=\"l00670\" name=\"l00670\"></a><span class=\"lineno\">  670</span>                           duvBuffer-&gt;BindCudaBuffer(), duvDesc,</div>\n+<div class=\"line\"><a id=\"l00671\" name=\"l00671\"></a><span class=\"lineno\">  671</span>                           dvvBuffer-&gt;BindCudaBuffer(), dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00672\" name=\"l00672\"></a><span class=\"lineno\">  672</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00673\" name=\"l00673\"></a><span class=\"lineno\">  673</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a> *)patchCoords-&gt;BindCudaBuffer(),</div>\n+<div class=\"line\"><a id=\"l00674\" name=\"l00674\"></a><span class=\"lineno\">  674</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01325.html\">PatchArray</a> *)patchTable-&gt;GetPatchArrayBuffer(),</div>\n+<div class=\"line\"><a id=\"l00675\" name=\"l00675\"></a><span class=\"lineno\">  675</span>                           (<span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> *)patchTable-&gt;GetPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l00676\" name=\"l00676\"></a><span class=\"lineno\">  676</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01329.html\">PatchParam</a> *)patchTable-&gt;GetPatchParamBuffer());</div>\n+<div class=\"line\"><a id=\"l00677\" name=\"l00677\"></a><span class=\"lineno\">  677</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00678\" name=\"l00678\"></a><span class=\"lineno\">  678</span> </div>\n+<div class=\"line\"><a id=\"l00706\" name=\"l00706\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01185.html#a0c689958ce8fdfb81c07e124d99644cb\">  706</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01185.html#a0c689958ce8fdfb81c07e124d99644cb\">EvalPatches</a>(</div>\n+<div class=\"line\"><a id=\"l00707\" name=\"l00707\"></a><span class=\"lineno\">  707</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00708\" name=\"l00708\"></a><span class=\"lineno\">  708</span>        <span class=\"keywordtype\">float</span> *dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00709\" name=\"l00709\"></a><span class=\"lineno\">  709</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00710\" name=\"l00710\"></a><span class=\"lineno\">  710</span>        <span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a> *patchCoords,</div>\n+<div class=\"line\"><a id=\"l00711\" name=\"l00711\"></a><span class=\"lineno\">  711</span>        <span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01325.html\">PatchArray</a> *patchArrays,</div>\n+<div class=\"line\"><a id=\"l00712\" name=\"l00712\"></a><span class=\"lineno\">  712</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> *patchIndices,</div>\n+<div class=\"line\"><a id=\"l00713\" name=\"l00713\"></a><span class=\"lineno\">  713</span>        <span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01329.html\">PatchParam</a> *patchParams);</div>\n+<div class=\"line\"><a id=\"l00714\" name=\"l00714\"></a><span class=\"lineno\">  714</span> </div>\n+<div class=\"line\"><a id=\"l00752\" name=\"l00752\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01185.html#a986b308c3b7cf3d5121b0e9ceed2c72d\">  752</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01185.html#a986b308c3b7cf3d5121b0e9ceed2c72d\">EvalPatches</a>(</div>\n+<div class=\"line\"><a id=\"l00753\" name=\"l00753\"></a><span class=\"lineno\">  753</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00754\" name=\"l00754\"></a><span class=\"lineno\">  754</span>        <span class=\"keywordtype\">float</span> *dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00755\" name=\"l00755\"></a><span class=\"lineno\">  755</span>        <span class=\"keywordtype\">float</span> *du,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00756\" name=\"l00756\"></a><span class=\"lineno\">  756</span>        <span class=\"keywordtype\">float</span> *dv,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00757\" name=\"l00757\"></a><span class=\"lineno\">  757</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00758\" name=\"l00758\"></a><span class=\"lineno\">  758</span>        <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a> <span class=\"keyword\">const</span> *patchCoords,</div>\n+<div class=\"line\"><a id=\"l00759\" name=\"l00759\"></a><span class=\"lineno\">  759</span>        <a class=\"code hl_struct\" href=\"a01325.html\">PatchArray</a> <span class=\"keyword\">const</span> *patchArrays,</div>\n+<div class=\"line\"><a id=\"l00760\" name=\"l00760\"></a><span class=\"lineno\">  760</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> *patchIndices,</div>\n+<div class=\"line\"><a id=\"l00761\" name=\"l00761\"></a><span class=\"lineno\">  761</span>        <a class=\"code hl_struct\" href=\"a01329.html\">PatchParam</a> <span class=\"keyword\">const</span> *patchParams);</div>\n+<div class=\"line\"><a id=\"l00762\" name=\"l00762\"></a><span class=\"lineno\">  762</span> </div>\n+<div class=\"line\"><a id=\"l00815\" name=\"l00815\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01185.html#a5e8c8e96ba584406e87a2e63aacfb382\">  815</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01185.html#a5e8c8e96ba584406e87a2e63aacfb382\">EvalPatches</a>(</div>\n+<div class=\"line\"><a id=\"l00816\" name=\"l00816\"></a><span class=\"lineno\">  816</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00817\" name=\"l00817\"></a><span class=\"lineno\">  817</span>        <span class=\"keywordtype\">float</span> *dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00818\" name=\"l00818\"></a><span class=\"lineno\">  818</span>        <span class=\"keywordtype\">float</span> *du,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00819\" name=\"l00819\"></a><span class=\"lineno\">  819</span>        <span class=\"keywordtype\">float</span> *dv,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00820\" name=\"l00820\"></a><span class=\"lineno\">  820</span>        <span class=\"keywordtype\">float</span> *duu,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l00821\" name=\"l00821\"></a><span class=\"lineno\">  821</span>        <span class=\"keywordtype\">float</span> *duv,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l00822\" name=\"l00822\"></a><span class=\"lineno\">  822</span>        <span class=\"keywordtype\">float</span> *dvv,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00823\" name=\"l00823\"></a><span class=\"lineno\">  823</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00824\" name=\"l00824\"></a><span class=\"lineno\">  824</span>        <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a> <span class=\"keyword\">const</span> *patchCoords,</div>\n+<div class=\"line\"><a id=\"l00825\" name=\"l00825\"></a><span class=\"lineno\">  825</span>        <a class=\"code hl_struct\" href=\"a01325.html\">PatchArray</a> <span class=\"keyword\">const</span> *patchArrays,</div>\n+<div class=\"line\"><a id=\"l00826\" name=\"l00826\"></a><span class=\"lineno\">  826</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> *patchIndices,</div>\n+<div class=\"line\"><a id=\"l00827\" name=\"l00827\"></a><span class=\"lineno\">  827</span>        <a class=\"code hl_struct\" href=\"a01329.html\">PatchParam</a> <span class=\"keyword\">const</span> *patchParams);</div>\n+<div class=\"line\"><a id=\"l00828\" name=\"l00828\"></a><span class=\"lineno\">  828</span> </div>\n+<div class=\"line\"><a id=\"l00857\" name=\"l00857\"></a><span class=\"lineno\">  857</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l00858\" name=\"l00858\"></a><span class=\"lineno\">  858</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00859\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00859\" name=\"l00859\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01185.html#a5711ade355506a3ff3fe3b4f5df8c2b5\">  859</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01185.html#a5711ade355506a3ff3fe3b4f5df8c2b5\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l00860\" name=\"l00860\"></a><span class=\"lineno\">  860</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00861\" name=\"l00861\"></a><span class=\"lineno\">  861</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00862\" name=\"l00862\"></a><span class=\"lineno\">  862</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00863\" name=\"l00863\"></a><span class=\"lineno\">  863</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l00864\" name=\"l00864\"></a><span class=\"lineno\">  864</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l00865\" name=\"l00865\"></a><span class=\"lineno\">  865</span>        <a class=\"code hl_class\" href=\"a01185.html\">CudaEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n+<div class=\"line\"><a id=\"l00866\" name=\"l00866\"></a><span class=\"lineno\">  866</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l00867\" name=\"l00867\"></a><span class=\"lineno\">  867</span> </div>\n+<div class=\"line\"><a id=\"l00868\" name=\"l00868\"></a><span class=\"lineno\">  868</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00869\" name=\"l00869\"></a><span class=\"lineno\">  869</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00870\" name=\"l00870\"></a><span class=\"lineno\">  870</span> </div>\n+<div class=\"line\"><a id=\"l00871\" name=\"l00871\"></a><span class=\"lineno\">  871</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01185.html#ad3803e8121bc0491e9f97900ecd50022\">EvalPatches</a>(srcBuffer-&gt;BindCudaBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00872\" name=\"l00872\"></a><span class=\"lineno\">  872</span>                           dstBuffer-&gt;BindCudaBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00873\" name=\"l00873\"></a><span class=\"lineno\">  873</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00874\" name=\"l00874\"></a><span class=\"lineno\">  874</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a> *)patchCoords-&gt;BindCudaBuffer(),</div>\n+<div class=\"line\"><a id=\"l00875\" name=\"l00875\"></a><span class=\"lineno\">  875</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01325.html\">PatchArray</a> *)patchTable-&gt;GetVaryingPatchArrayBuffer(),</div>\n+<div class=\"line\"><a id=\"l00876\" name=\"l00876\"></a><span class=\"lineno\">  876</span>                           (<span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> *)patchTable-&gt;GetVaryingPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l00877\" name=\"l00877\"></a><span class=\"lineno\">  877</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01329.html\">PatchParam</a> *)patchTable-&gt;GetPatchParamBuffer());</div>\n+<div class=\"line\"><a id=\"l00878\" name=\"l00878\"></a><span class=\"lineno\">  878</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00879\" name=\"l00879\"></a><span class=\"lineno\">  879</span> </div>\n+<div class=\"line\"><a id=\"l00920\" name=\"l00920\"></a><span class=\"lineno\">  920</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l00921\" name=\"l00921\"></a><span class=\"lineno\">  921</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00922\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00922\" name=\"l00922\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01185.html#a1ce4601b04557e046242651341c39ea0\">  922</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01185.html#a1ce4601b04557e046242651341c39ea0\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l00923\" name=\"l00923\"></a><span class=\"lineno\">  923</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00924\" name=\"l00924\"></a><span class=\"lineno\">  924</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00925\" name=\"l00925\"></a><span class=\"lineno\">  925</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00926\" name=\"l00926\"></a><span class=\"lineno\">  926</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00927\" name=\"l00927\"></a><span class=\"lineno\">  927</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00928\" name=\"l00928\"></a><span class=\"lineno\">  928</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l00929\" name=\"l00929\"></a><span class=\"lineno\">  929</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l00930\" name=\"l00930\"></a><span class=\"lineno\">  930</span>        <a class=\"code hl_class\" href=\"a01185.html\">CudaEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n+<div class=\"line\"><a id=\"l00931\" name=\"l00931\"></a><span class=\"lineno\">  931</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l00932\" name=\"l00932\"></a><span class=\"lineno\">  932</span> </div>\n+<div class=\"line\"><a id=\"l00933\" name=\"l00933\"></a><span class=\"lineno\">  933</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00934\" name=\"l00934\"></a><span class=\"lineno\">  934</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00935\" name=\"l00935\"></a><span class=\"lineno\">  935</span> </div>\n+<div class=\"line\"><a id=\"l00936\" name=\"l00936\"></a><span class=\"lineno\">  936</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01185.html#ad3803e8121bc0491e9f97900ecd50022\">EvalPatches</a>(srcBuffer-&gt;BindCudaBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00937\" name=\"l00937\"></a><span class=\"lineno\">  937</span>                           dstBuffer-&gt;BindCudaBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00938\" name=\"l00938\"></a><span class=\"lineno\">  938</span>                           duBuffer-&gt;BindCudaBuffer(), duDesc,</div>\n+<div class=\"line\"><a id=\"l00939\" name=\"l00939\"></a><span class=\"lineno\">  939</span>                           dvBuffer-&gt;BindCudaBuffer(), dvDesc,</div>\n+<div class=\"line\"><a id=\"l00940\" name=\"l00940\"></a><span class=\"lineno\">  940</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00941\" name=\"l00941\"></a><span class=\"lineno\">  941</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a> *)patchCoords-&gt;BindCudaBuffer(),</div>\n+<div class=\"line\"><a id=\"l00942\" name=\"l00942\"></a><span class=\"lineno\">  942</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01325.html\">PatchArray</a> *)patchTable-&gt;GetVaryingPatchArrayBuffer(),</div>\n+<div class=\"line\"><a id=\"l00943\" name=\"l00943\"></a><span class=\"lineno\">  943</span>                           (<span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> *)patchTable-&gt;GetVaryingPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l00944\" name=\"l00944\"></a><span class=\"lineno\">  944</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01329.html\">PatchParam</a> *)patchTable-&gt;GetPatchParamBuffer());</div>\n+<div class=\"line\"><a id=\"l00945\" name=\"l00945\"></a><span class=\"lineno\">  945</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00946\" name=\"l00946\"></a><span class=\"lineno\">  946</span> </div>\n+<div class=\"line\"><a id=\"l01005\" name=\"l01005\"></a><span class=\"lineno\"> 1005</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01006\" name=\"l01006\"></a><span class=\"lineno\"> 1006</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01007\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01007\" name=\"l01007\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01185.html#ad13485a6dcf9e310ac0421ef1b2ad17b\"> 1007</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01185.html#ad13485a6dcf9e310ac0421ef1b2ad17b\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01008\" name=\"l01008\"></a><span class=\"lineno\"> 1008</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01009\" name=\"l01009\"></a><span class=\"lineno\"> 1009</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01010\" name=\"l01010\"></a><span class=\"lineno\"> 1010</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l01011\" name=\"l01011\"></a><span class=\"lineno\"> 1011</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l01012\" name=\"l01012\"></a><span class=\"lineno\"> 1012</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l01013\" name=\"l01013\"></a><span class=\"lineno\"> 1013</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l01014\" name=\"l01014\"></a><span class=\"lineno\"> 1014</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l01015\" name=\"l01015\"></a><span class=\"lineno\"> 1015</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01016\" name=\"l01016\"></a><span class=\"lineno\"> 1016</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01017\" name=\"l01017\"></a><span class=\"lineno\"> 1017</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l01018\" name=\"l01018\"></a><span class=\"lineno\"> 1018</span>        <a class=\"code hl_class\" href=\"a01185.html\">CudaEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n+<div class=\"line\"><a id=\"l01019\" name=\"l01019\"></a><span class=\"lineno\"> 1019</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l01020\" name=\"l01020\"></a><span class=\"lineno\"> 1020</span> </div>\n+<div class=\"line\"><a id=\"l01021\" name=\"l01021\"></a><span class=\"lineno\"> 1021</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l01022\" name=\"l01022\"></a><span class=\"lineno\"> 1022</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l01023\" name=\"l01023\"></a><span class=\"lineno\"> 1023</span> </div>\n+<div class=\"line\"><a id=\"l01024\" name=\"l01024\"></a><span class=\"lineno\"> 1024</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01185.html#ad3803e8121bc0491e9f97900ecd50022\">EvalPatches</a>(srcBuffer-&gt;BindCudaBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01025\" name=\"l01025\"></a><span class=\"lineno\"> 1025</span>                           dstBuffer-&gt;BindCudaBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01026\" name=\"l01026\"></a><span class=\"lineno\"> 1026</span>                           duBuffer-&gt;BindCudaBuffer(), duDesc,</div>\n+<div class=\"line\"><a id=\"l01027\" name=\"l01027\"></a><span class=\"lineno\"> 1027</span>                           dvBuffer-&gt;BindCudaBuffer(), dvDesc,</div>\n+<div class=\"line\"><a id=\"l01028\" name=\"l01028\"></a><span class=\"lineno\"> 1028</span>                           duuBuffer-&gt;BindCudaBuffer(), duuDesc,</div>\n+<div class=\"line\"><a id=\"l01029\" name=\"l01029\"></a><span class=\"lineno\"> 1029</span>                           duvBuffer-&gt;BindCudaBuffer(), duvDesc,</div>\n+<div class=\"line\"><a id=\"l01030\" name=\"l01030\"></a><span class=\"lineno\"> 1030</span>                           dvvBuffer-&gt;BindCudaBuffer(), dvvDesc,</div>\n+<div class=\"line\"><a id=\"l01031\" name=\"l01031\"></a><span class=\"lineno\"> 1031</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01032\" name=\"l01032\"></a><span class=\"lineno\"> 1032</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a> *)patchCoords-&gt;BindCudaBuffer(),</div>\n+<div class=\"line\"><a id=\"l01033\" name=\"l01033\"></a><span class=\"lineno\"> 1033</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01325.html\">PatchArray</a> *)patchTable-&gt;GetVaryingPatchArrayBuffer(),</div>\n+<div class=\"line\"><a id=\"l01034\" name=\"l01034\"></a><span class=\"lineno\"> 1034</span>                           (<span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> *)patchTable-&gt;GetVaryingPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l01035\" name=\"l01035\"></a><span class=\"lineno\"> 1035</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01329.html\">PatchParam</a> *)patchTable-&gt;GetPatchParamBuffer());</div>\n+<div class=\"line\"><a id=\"l01036\" name=\"l01036\"></a><span class=\"lineno\"> 1036</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01037\" name=\"l01037\"></a><span class=\"lineno\"> 1037</span> </div>\n+<div class=\"line\"><a id=\"l01068\" name=\"l01068\"></a><span class=\"lineno\"> 1068</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01069\" name=\"l01069\"></a><span class=\"lineno\"> 1069</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01070\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01070\" name=\"l01070\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01185.html#af5d3c947db15fced476cfb40f7f12203\"> 1070</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01185.html#af5d3c947db15fced476cfb40f7f12203\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01071\" name=\"l01071\"></a><span class=\"lineno\"> 1071</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01072\" name=\"l01072\"></a><span class=\"lineno\"> 1072</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01073\" name=\"l01073\"></a><span class=\"lineno\"> 1073</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01074\" name=\"l01074\"></a><span class=\"lineno\"> 1074</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01075\" name=\"l01075\"></a><span class=\"lineno\"> 1075</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l01076\" name=\"l01076\"></a><span class=\"lineno\"> 1076</span>        <span class=\"keywordtype\">int</span> fvarChannel,</div>\n+<div class=\"line\"><a id=\"l01077\" name=\"l01077\"></a><span class=\"lineno\"> 1077</span>        <a class=\"code hl_class\" href=\"a01185.html\">CudaEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n+<div class=\"line\"><a id=\"l01078\" name=\"l01078\"></a><span class=\"lineno\"> 1078</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l01079\" name=\"l01079\"></a><span class=\"lineno\"> 1079</span> </div>\n+<div class=\"line\"><a id=\"l01080\" name=\"l01080\"></a><span class=\"lineno\"> 1080</span>        (void)instance;   <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l01081\" name=\"l01081\"></a><span class=\"lineno\"> 1081</span>        (void)deviceContext;   <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l01082\" name=\"l01082\"></a><span class=\"lineno\"> 1082</span> </div>\n+<div class=\"line\"><a id=\"l01083\" name=\"l01083\"></a><span class=\"lineno\"> 1083</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01185.html#ad3803e8121bc0491e9f97900ecd50022\">EvalPatches</a>(srcBuffer-&gt;BindCudaBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01084\" name=\"l01084\"></a><span class=\"lineno\"> 1084</span>                           dstBuffer-&gt;BindCudaBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01085\" name=\"l01085\"></a><span class=\"lineno\"> 1085</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01086\" name=\"l01086\"></a><span class=\"lineno\"> 1086</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a> *)patchCoords-&gt;BindCudaBuffer(),</div>\n+<div class=\"line\"><a id=\"l01087\" name=\"l01087\"></a><span class=\"lineno\"> 1087</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01325.html\">PatchArray</a> *)patchTable-&gt;GetFVarPatchArrayBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01088\" name=\"l01088\"></a><span class=\"lineno\"> 1088</span>                           (<span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> *)patchTable-&gt;GetFVarPatchIndexBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01089\" name=\"l01089\"></a><span class=\"lineno\"> 1089</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01329.html\">PatchParam</a> *)patchTable-&gt;GetFVarPatchParamBuffer(fvarChannel));</div>\n+<div class=\"line\"><a id=\"l01090\" name=\"l01090\"></a><span class=\"lineno\"> 1090</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01091\" name=\"l01091\"></a><span class=\"lineno\"> 1091</span> </div>\n+<div class=\"line\"><a id=\"l01134\" name=\"l01134\"></a><span class=\"lineno\"> 1134</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01135\" name=\"l01135\"></a><span class=\"lineno\"> 1135</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01136\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01136\" name=\"l01136\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01185.html#a67b4efe234a614018b35d181db7855b4\"> 1136</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01185.html#a67b4efe234a614018b35d181db7855b4\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01137\" name=\"l01137\"></a><span class=\"lineno\"> 1137</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01138\" name=\"l01138\"></a><span class=\"lineno\"> 1138</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01139\" name=\"l01139\"></a><span class=\"lineno\"> 1139</span>        DST_BUFFER *duBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l01140\" name=\"l01140\"></a><span class=\"lineno\"> 1140</span>        DST_BUFFER *dvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l01141\" name=\"l01141\"></a><span class=\"lineno\"> 1141</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01142\" name=\"l01142\"></a><span class=\"lineno\"> 1142</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01143\" name=\"l01143\"></a><span class=\"lineno\"> 1143</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l01144\" name=\"l01144\"></a><span class=\"lineno\"> 1144</span>        <span class=\"keywordtype\">int</span> fvarChannel,</div>\n+<div class=\"line\"><a id=\"l01145\" name=\"l01145\"></a><span class=\"lineno\"> 1145</span>        <a class=\"code hl_class\" href=\"a01185.html\">CudaEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n+<div class=\"line\"><a id=\"l01146\" name=\"l01146\"></a><span class=\"lineno\"> 1146</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l01147\" name=\"l01147\"></a><span class=\"lineno\"> 1147</span> </div>\n+<div class=\"line\"><a id=\"l01148\" name=\"l01148\"></a><span class=\"lineno\"> 1148</span>        (void)instance;   <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l01149\" name=\"l01149\"></a><span class=\"lineno\"> 1149</span>        (void)deviceContext;   <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l01150\" name=\"l01150\"></a><span class=\"lineno\"> 1150</span> </div>\n+<div class=\"line\"><a id=\"l01151\" name=\"l01151\"></a><span class=\"lineno\"> 1151</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01185.html#ad3803e8121bc0491e9f97900ecd50022\">EvalPatches</a>(srcBuffer-&gt;BindCudaBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01152\" name=\"l01152\"></a><span class=\"lineno\"> 1152</span>                           dstBuffer-&gt;BindCudaBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01153\" name=\"l01153\"></a><span class=\"lineno\"> 1153</span>                           duBuffer-&gt;BindCudaBuffer(), duDesc,</div>\n+<div class=\"line\"><a id=\"l01154\" name=\"l01154\"></a><span class=\"lineno\"> 1154</span>                           dvBuffer-&gt;BindCudaBuffer(), dvDesc,</div>\n+<div class=\"line\"><a id=\"l01155\" name=\"l01155\"></a><span class=\"lineno\"> 1155</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01156\" name=\"l01156\"></a><span class=\"lineno\"> 1156</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a> *)patchCoords-&gt;BindCudaBuffer(),</div>\n+<div class=\"line\"><a id=\"l01157\" name=\"l01157\"></a><span class=\"lineno\"> 1157</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01325.html\">PatchArray</a> *)patchTable-&gt;GetFVarPatchArrayBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01158\" name=\"l01158\"></a><span class=\"lineno\"> 1158</span>                           (<span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> *)patchTable-&gt;GetFVarPatchIndexBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01159\" name=\"l01159\"></a><span class=\"lineno\"> 1159</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01329.html\">PatchParam</a> *)patchTable-&gt;GetFVarPatchParamBuffer(fvarChannel));</div>\n+<div class=\"line\"><a id=\"l01160\" name=\"l01160\"></a><span class=\"lineno\"> 1160</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01161\" name=\"l01161\"></a><span class=\"lineno\"> 1161</span> </div>\n+<div class=\"line\"><a id=\"l01222\" name=\"l01222\"></a><span class=\"lineno\"> 1222</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01223\" name=\"l01223\"></a><span class=\"lineno\"> 1223</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01224\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01224\" name=\"l01224\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01185.html#ad845f529b06a8cc42bead41a6641dddd\"> 1224</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01185.html#ad845f529b06a8cc42bead41a6641dddd\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01225\" name=\"l01225\"></a><span class=\"lineno\"> 1225</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01226\" name=\"l01226\"></a><span class=\"lineno\"> 1226</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01227\" name=\"l01227\"></a><span class=\"lineno\"> 1227</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l01228\" name=\"l01228\"></a><span class=\"lineno\"> 1228</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l01229\" name=\"l01229\"></a><span class=\"lineno\"> 1229</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l01230\" name=\"l01230\"></a><span class=\"lineno\"> 1230</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l01231\" name=\"l01231\"></a><span class=\"lineno\"> 1231</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l01232\" name=\"l01232\"></a><span class=\"lineno\"> 1232</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01233\" name=\"l01233\"></a><span class=\"lineno\"> 1233</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01234\" name=\"l01234\"></a><span class=\"lineno\"> 1234</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l01235\" name=\"l01235\"></a><span class=\"lineno\"> 1235</span>        <span class=\"keywordtype\">int</span> fvarChannel,</div>\n+<div class=\"line\"><a id=\"l01236\" name=\"l01236\"></a><span class=\"lineno\"> 1236</span>        <a class=\"code hl_class\" href=\"a01185.html\">CudaEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n+<div class=\"line\"><a id=\"l01237\" name=\"l01237\"></a><span class=\"lineno\"> 1237</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l01238\" name=\"l01238\"></a><span class=\"lineno\"> 1238</span> </div>\n+<div class=\"line\"><a id=\"l01239\" name=\"l01239\"></a><span class=\"lineno\"> 1239</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l01240\" name=\"l01240\"></a><span class=\"lineno\"> 1240</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l01241\" name=\"l01241\"></a><span class=\"lineno\"> 1241</span> </div>\n+<div class=\"line\"><a id=\"l01242\" name=\"l01242\"></a><span class=\"lineno\"> 1242</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01185.html#ad3803e8121bc0491e9f97900ecd50022\">EvalPatches</a>(srcBuffer-&gt;BindCudaBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01243\" name=\"l01243\"></a><span class=\"lineno\"> 1243</span>                           dstBuffer-&gt;BindCudaBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01244\" name=\"l01244\"></a><span class=\"lineno\"> 1244</span>                           duBuffer-&gt;BindCudaBuffer(), duDesc,</div>\n+<div class=\"line\"><a id=\"l01245\" name=\"l01245\"></a><span class=\"lineno\"> 1245</span>                           dvBuffer-&gt;BindCudaBuffer(), dvDesc,</div>\n+<div class=\"line\"><a id=\"l01246\" name=\"l01246\"></a><span class=\"lineno\"> 1246</span>                           duuBuffer-&gt;BindCudaBuffer(), duuDesc,</div>\n+<div class=\"line\"><a id=\"l01247\" name=\"l01247\"></a><span class=\"lineno\"> 1247</span>                           duvBuffer-&gt;BindCudaBuffer(), duvDesc,</div>\n+<div class=\"line\"><a id=\"l01248\" name=\"l01248\"></a><span class=\"lineno\"> 1248</span>                           dvvBuffer-&gt;BindCudaBuffer(), dvvDesc,</div>\n+<div class=\"line\"><a id=\"l01249\" name=\"l01249\"></a><span class=\"lineno\"> 1249</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01250\" name=\"l01250\"></a><span class=\"lineno\"> 1250</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a> *)patchCoords-&gt;BindCudaBuffer(),</div>\n+<div class=\"line\"><a id=\"l01251\" name=\"l01251\"></a><span class=\"lineno\"> 1251</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01325.html\">PatchArray</a> *)patchTable-&gt;GetFVarPatchArrayBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01252\" name=\"l01252\"></a><span class=\"lineno\"> 1252</span>                           (<span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> *)patchTable-&gt;GetFVarPatchIndexBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01253\" name=\"l01253\"></a><span class=\"lineno\"> 1253</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01329.html\">PatchParam</a> *)patchTable-&gt;GetFVarPatchParamBuffer(fvarChannel));</div>\n+<div class=\"line\"><a id=\"l01254\" name=\"l01254\"></a><span class=\"lineno\"> 1254</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01255\" name=\"l01255\"></a><span class=\"lineno\"> 1255</span> </div>\n+<div class=\"line\"><a id=\"l01261\" name=\"l01261\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01185.html#a9689407af718de4263562bb3a760c1dd\"> 1261</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01185.html#a9689407af718de4263562bb3a760c1dd\">Synchronize</a>(<span class=\"keywordtype\">void</span> *deviceContext = NULL);</div>\n+<div class=\"line\"><a id=\"l01262\" name=\"l01262\"></a><span class=\"lineno\"> 1262</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l01263\" name=\"l01263\"></a><span class=\"lineno\"> 1263</span> </div>\n+<div class=\"line\"><a id=\"l01264\" name=\"l01264\"></a><span class=\"lineno\"> 1264</span> </div>\n+<div class=\"line\"><a id=\"l01265\" name=\"l01265\"></a><span class=\"lineno\"> 1265</span>}  <span class=\"comment\">// end namespace Osd</span></div>\n+<div class=\"line\"><a id=\"l01266\" name=\"l01266\"></a><span class=\"lineno\"> 1266</span> </div>\n+<div class=\"line\"><a id=\"l01267\" name=\"l01267\"></a><span class=\"lineno\"> 1267</span>}  <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l01268\" name=\"l01268\"></a><span class=\"lineno\"> 1268</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l01269\" name=\"l01269\"></a><span class=\"lineno\"> 1269</span> </div>\n+<div class=\"line\"><a id=\"l01270\" name=\"l01270\"></a><span class=\"lineno\"> 1270</span>}  <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l01271\" name=\"l01271\"></a><span class=\"lineno\"> 1271</span> </div>\n+<div class=\"line\"><a id=\"l01272\" name=\"l01272\"></a><span class=\"lineno\"> 1272</span> </div>\n+<div class=\"line\"><a id=\"l01273\" name=\"l01273\"></a><span class=\"lineno\"> 1273</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_CUDA_EVALUATOR_H</span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa01065_html\"><div class=\"ttname\"><a href=\"a01065.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTable</a></div><div class=\"ttdoc\">Stencil table class wrapping the template for compatibility.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00273\">stencilTable.h:273</a></div></div>\n+<div class=\"ttc\" id=\"aa01081_html\"><div class=\"ttname\"><a href=\"a01081.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTable</a></div><div class=\"ttdoc\">Limit stencil table class wrapping the template for compatibility.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00583\">stencilTable.h:583</a></div></div>\n+<div class=\"ttc\" id=\"aa01141_html\"><div class=\"ttname\"><a href=\"a01141.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::BufferDescriptor</a></div><div class=\"ttdoc\">BufferDescriptor is a struct which describes buffer elements in interleaved data buffers....</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00061\">bufferDescriptor.h:61</a></div></div>\n+<div class=\"ttc\" id=\"aa01181_html\"><div class=\"ttname\"><a href=\"a01181.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaStencilTable</a></div><div class=\"ttdoc\">CUDA stencil table.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00692_source.html#l00052\">cudaEvaluator.h:52</a></div></div>\n+<div class=\"ttc\" id=\"aa01181_html_a0227c2f6e9e0eaa1bf104e5a6efa0830\"><div class=\"ttname\"><a href=\"a01181.html#a0227c2f6e9e0eaa1bf104e5a6efa0830\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaStencilTable::GetDuvWeightsBuffer</a></div><div class=\"ttdeci\">void * GetDuvWeightsBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00692_source.html#l00077\">cudaEvaluator.h:77</a></div></div>\n+<div class=\"ttc\" id=\"aa01181_html_a178a7d6f638161ad174b992c844004ba\"><div class=\"ttname\"><a href=\"a01181.html#a178a7d6f638161ad174b992c844004ba\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaStencilTable::~CudaStencilTable</a></div><div class=\"ttdeci\">~CudaStencilTable()</div></div>\n+<div class=\"ttc\" id=\"aa01181_html_a2b91670573e565368e68512e02d045d6\"><div class=\"ttname\"><a href=\"a01181.html#a2b91670573e565368e68512e02d045d6\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaStencilTable::GetDuWeightsBuffer</a></div><div class=\"ttdeci\">void * GetDuWeightsBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00692_source.html#l00074\">cudaEvaluator.h:74</a></div></div>\n+<div class=\"ttc\" id=\"aa01181_html_a2fd4ce98e6978f5895dd4c79ef84e4d5\"><div class=\"ttname\"><a href=\"a01181.html#a2fd4ce98e6978f5895dd4c79ef84e4d5\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaStencilTable::GetDvvWeightsBuffer</a></div><div class=\"ttdeci\">void * GetDvvWeightsBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00692_source.html#l00078\">cudaEvaluator.h:78</a></div></div>\n+<div class=\"ttc\" id=\"aa01181_html_a3822b0045b4aa89b646b145acf6dc230\"><div class=\"ttname\"><a href=\"a01181.html#a3822b0045b4aa89b646b145acf6dc230\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaStencilTable::GetOffsetsBuffer</a></div><div class=\"ttdeci\">void * GetOffsetsBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00692_source.html#l00071\">cudaEvaluator.h:71</a></div></div>\n+<div class=\"ttc\" id=\"aa01181_html_a45150c630c07bbeabd4b91145cecf087\"><div class=\"ttname\"><a href=\"a01181.html#a45150c630c07bbeabd4b91145cecf087\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaStencilTable::CudaStencilTable</a></div><div class=\"ttdeci\">CudaStencilTable(Far::LimitStencilTable const *limitStencilTable)</div></div>\n+<div class=\"ttc\" id=\"aa01181_html_a5a1c0c8eb5d41b526ec9480f03dbf4d0\"><div class=\"ttname\"><a href=\"a01181.html#a5a1c0c8eb5d41b526ec9480f03dbf4d0\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaStencilTable::GetDvWeightsBuffer</a></div><div class=\"ttdeci\">void * GetDvWeightsBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00692_source.html#l00075\">cudaEvaluator.h:75</a></div></div>\n+<div class=\"ttc\" id=\"aa01181_html_a65836d2070b943c8fecbad926d074de2\"><div class=\"ttname\"><a href=\"a01181.html#a65836d2070b943c8fecbad926d074de2\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaStencilTable::GetNumStencils</a></div><div class=\"ttdeci\">int GetNumStencils() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00692_source.html#l00079\">cudaEvaluator.h:79</a></div></div>\n+<div class=\"ttc\" id=\"aa01181_html_a6b4f42dac92785ea5a1d77a4a75fa502\"><div class=\"ttname\"><a href=\"a01181.html#a6b4f42dac92785ea5a1d77a4a75fa502\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaStencilTable::GetDuuWeightsBuffer</a></div><div class=\"ttdeci\">void * GetDuuWeightsBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00692_source.html#l00076\">cudaEvaluator.h:76</a></div></div>\n+<div class=\"ttc\" id=\"aa01181_html_aa3cd13b6b7e97cebf92d03d3208b75fa\"><div class=\"ttname\"><a href=\"a01181.html#aa3cd13b6b7e97cebf92d03d3208b75fa\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaStencilTable::GetWeightsBuffer</a></div><div class=\"ttdeci\">void * GetWeightsBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00692_source.html#l00073\">cudaEvaluator.h:73</a></div></div>\n+<div class=\"ttc\" id=\"aa01181_html_ac1bda7ee1a17bc67c977cde973c0aaad\"><div class=\"ttname\"><a href=\"a01181.html#ac1bda7ee1a17bc67c977cde973c0aaad\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaStencilTable::Create</a></div><div class=\"ttdeci\">static CudaStencilTable * Create(Far::LimitStencilTable const *limitStencilTable, void *deviceContext=NULL)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00692_source.html#l00059\">cudaEvaluator.h:59</a></div></div>\n+<div class=\"ttc\" id=\"aa01181_html_ac4528f233689c7f4ae7f3fd7b0eea484\"><div class=\"ttname\"><a href=\"a01181.html#ac4528f233689c7f4ae7f3fd7b0eea484\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaStencilTable::GetSizesBuffer</a></div><div class=\"ttdeci\">void * GetSizesBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00692_source.html#l00070\">cudaEvaluator.h:70</a></div></div>\n+<div class=\"ttc\" id=\"aa01181_html_af2f896634b0a6cc6d4efb82aafbad5a6\"><div class=\"ttname\"><a href=\"a01181.html#af2f896634b0a6cc6d4efb82aafbad5a6\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaStencilTable::GetIndicesBuffer</a></div><div class=\"ttdeci\">void * GetIndicesBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00692_source.html#l00072\">cudaEvaluator.h:72</a></div></div>\n+<div class=\"ttc\" id=\"aa01181_html_af872fc469b3696a745d30d22c2b89c4c\"><div class=\"ttname\"><a href=\"a01181.html#af872fc469b3696a745d30d22c2b89c4c\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaStencilTable::CudaStencilTable</a></div><div class=\"ttdeci\">CudaStencilTable(Far::StencilTable const *stencilTable)</div></div>\n+<div class=\"ttc\" id=\"aa01181_html_afa5ea3da09e459d3786b4249caea825d\"><div class=\"ttname\"><a href=\"a01181.html#afa5ea3da09e459d3786b4249caea825d\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaStencilTable::Create</a></div><div class=\"ttdeci\">static CudaStencilTable * Create(Far::StencilTable const *stencilTable, void *deviceContext=NULL)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00692_source.html#l00054\">cudaEvaluator.h:54</a></div></div>\n+<div class=\"ttc\" id=\"aa01185_html\"><div class=\"ttname\"><a href=\"a01185.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaEvaluator</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00692_source.html#l00094\">cudaEvaluator.h:94</a></div></div>\n+<div class=\"ttc\" id=\"aa01185_html_a0c689958ce8fdfb81c07e124d99644cb\"><div class=\"ttname\"><a href=\"a01185.html#a0c689958ce8fdfb81c07e124d99644cb\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(const float *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, int numPatchCoords, const PatchCoord *patchCoords, const PatchArray *patchArrays, const int *patchIndices, const PatchParam *patchParams)</div><div class=\"ttdoc\">Static limit eval function. It takes an array of PatchCoord and evaluate limit values on given PatchT...</div></div>\n+<div class=\"ttc\" id=\"aa01185_html_a1ce4601b04557e046242651341c39ea0\"><div class=\"ttname\"><a href=\"a01185.html#a1ce4601b04557e046242651341c39ea0\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, CudaEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00692_source.html#l00922\">cudaEvaluator.h:922</a></div></div>\n+<div class=\"ttc\" id=\"aa01185_html_a3d36fc3f9a294dfecbb09e5ba7904d12\"><div class=\"ttname\"><a href=\"a01185.html#a3d36fc3f9a294dfecbb09e5ba7904d12\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, CudaEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function with derivatives. This function has a same signature as other device kern...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00692_source.html#l00648\">cudaEvaluator.h:648</a></div></div>\n+<div class=\"ttc\" id=\"aa01185_html_a3f478d0122b14779fd161aa9f8076f2a\"><div class=\"ttname\"><a href=\"a01185.html#a3f478d0122b14779fd161aa9f8076f2a\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, STENCIL_TABLE const *stencilTable, const CudaEvaluator *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic static eval stencils function with derivatives. This function has a same signature as other d...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00692_source.html#l00353\">cudaEvaluator.h:353</a></div></div>\n+<div class=\"ttc\" id=\"aa01185_html_a4345e3659b7fb82f23dd51c688179ce3\"><div class=\"ttname\"><a href=\"a01185.html#a4345e3659b7fb82f23dd51c688179ce3\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(const float *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, const int *sizes, const int *offsets, const int *indices, const float *weights, int start, int end)</div><div class=\"ttdoc\">Static eval stencils function which takes raw cuda buffers for input and output.</div></div>\n+<div class=\"ttc\" id=\"aa01185_html_a5711ade355506a3ff3fe3b4f5df8c2b5\"><div class=\"ttname\"><a href=\"a01185.html#a5711ade355506a3ff3fe3b4f5df8c2b5\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, CudaEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00692_source.html#l00859\">cudaEvaluator.h:859</a></div></div>\n+<div class=\"ttc\" id=\"aa01185_html_a5d88651e38d57abedd93558865ce8f78\"><div class=\"ttname\"><a href=\"a01185.html#a5d88651e38d57abedd93558865ce8f78\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, STENCIL_TABLE const *stencilTable, const CudaEvaluator *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic static eval stencils function with derivatives. This function has a same signature as other d...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00692_source.html#l00218\">cudaEvaluator.h:218</a></div></div>\n+<div class=\"ttc\" id=\"aa01185_html_a5e8c8e96ba584406e87a2e63aacfb382\"><div class=\"ttname\"><a href=\"a01185.html#a5e8c8e96ba584406e87a2e63aacfb382\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(const float *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, float *du, BufferDescriptor const &amp;duDesc, float *dv, BufferDescriptor const &amp;dvDesc, float *duu, BufferDescriptor const &amp;duuDesc, float *duv, BufferDescriptor const &amp;duvDesc, float *dvv, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PatchCoord const *patchCoords, PatchArray const *patchArrays, const int *patchIndices, PatchParam const *patchParams)</div><div class=\"ttdoc\">Static limit eval function. It takes an array of PatchCoord and evaluate limit values on given PatchT...</div></div>\n+<div class=\"ttc\" id=\"aa01185_html_a67b4efe234a614018b35d181db7855b4\"><div class=\"ttname\"><a href=\"a01185.html#a67b4efe234a614018b35d181db7855b4\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel, CudaEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00692_source.html#l01136\">cudaEvaluator.h:1136</a></div></div>\n+<div class=\"ttc\" id=\"aa01185_html_a68186cd64196498ff6a31e55a822f468\"><div class=\"ttname\"><a href=\"a01185.html#a68186cd64196498ff6a31e55a822f468\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, STENCIL_TABLE const *stencilTable, const void *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic static compute function. This function has a same signature as other device kernels have so t...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00692_source.html#l00126\">cudaEvaluator.h:126</a></div></div>\n+<div class=\"ttc\" id=\"aa01185_html_a6daed6135a40cda2daf6c6ea2047b330\"><div class=\"ttname\"><a href=\"a01185.html#a6daed6135a40cda2daf6c6ea2047b330\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(const float *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, float *du, BufferDescriptor const &amp;duDesc, float *dv, BufferDescriptor const &amp;dvDesc, const int *sizes, const int *offsets, const int *indices, const float *weights, const float *duWeights, const float *dvWeights, int start, int end)</div><div class=\"ttdoc\">Static eval stencils function with derivatives, which takes raw cuda pointers for input and output.</div></div>\n+<div class=\"ttc\" id=\"aa01185_html_a76707de0a89ab94f15ad4b2c398a2c23\"><div class=\"ttname\"><a href=\"a01185.html#a76707de0a89ab94f15ad4b2c398a2c23\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(const float *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, float *du, BufferDescriptor const &amp;duDesc, float *dv, BufferDescriptor const &amp;dvDesc, float *duu, BufferDescriptor const &amp;duuDesc, float *duv, BufferDescriptor const &amp;duvDesc, float *dvv, BufferDescriptor const &amp;dvvDesc, const int *sizes, const int *offsets, const int *indices, const float *weights, const float *duWeights, const float *dvWeights, const float *duuWeights, const float *duvWeights, const float *dvvWeights, int start, int end)</div><div class=\"ttdoc\">Static eval stencils function with derivatives, which takes raw cuda pointers for input and output.</div></div>\n+<div class=\"ttc\" id=\"aa01185_html_a9689407af718de4263562bb3a760c1dd\"><div class=\"ttname\"><a href=\"a01185.html#a9689407af718de4263562bb3a760c1dd\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaEvaluator::Synchronize</a></div><div class=\"ttdeci\">static void Synchronize(void *deviceContext=NULL)</div></div>\n+<div class=\"ttc\" id=\"aa01185_html_a986b308c3b7cf3d5121b0e9ceed2c72d\"><div class=\"ttname\"><a href=\"a01185.html#a986b308c3b7cf3d5121b0e9ceed2c72d\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(const float *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, float *du, BufferDescriptor const &amp;duDesc, float *dv, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PatchCoord const *patchCoords, PatchArray const *patchArrays, const int *patchIndices, PatchParam const *patchParams)</div><div class=\"ttdoc\">Static limit eval function. It takes an array of PatchCoord and evaluate limit values on given PatchT...</div></div>\n+<div class=\"ttc\" id=\"aa01185_html_ad13485a6dcf9e310ac0421ef1b2ad17b\"><div class=\"ttname\"><a href=\"a01185.html#ad13485a6dcf9e310ac0421ef1b2ad17b\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, CudaEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00692_source.html#l01007\">cudaEvaluator.h:1007</a></div></div>\n+<div class=\"ttc\" id=\"aa01185_html_ad3803e8121bc0491e9f97900ecd50022\"><div class=\"ttname\"><a href=\"a01185.html#ad3803e8121bc0491e9f97900ecd50022\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, CudaEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00692_source.html#l00504\">cudaEvaluator.h:504</a></div></div>\n+<div class=\"ttc\" id=\"aa01185_html_ad845f529b06a8cc42bead41a6641dddd\"><div class=\"ttname\"><a href=\"a01185.html#ad845f529b06a8cc42bead41a6641dddd\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel, CudaEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00692_source.html#l01224\">cudaEvaluator.h:1224</a></div></div>\n+<div class=\"ttc\" id=\"aa01185_html_aed5bc5e9191bc7fccb1bdedf835d8a35\"><div class=\"ttname\"><a href=\"a01185.html#aed5bc5e9191bc7fccb1bdedf835d8a35\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, CudaEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function with derivatives. This function has a same signature as other device kern...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00692_source.html#l00565\">cudaEvaluator.h:565</a></div></div>\n+<div class=\"ttc\" id=\"aa01185_html_af5d3c947db15fced476cfb40f7f12203\"><div class=\"ttname\"><a href=\"a01185.html#af5d3c947db15fced476cfb40f7f12203\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel, CudaEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00692_source.html#l01070\">cudaEvaluator.h:1070</a></div></div>\n+<div class=\"ttc\" id=\"aa01321_html\"><div class=\"ttname\"><a href=\"a01321.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchCoord</a></div><div class=\"ttdoc\">Coordinates set on a patch table.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00042\">types.h:42</a></div></div>\n+<div class=\"ttc\" id=\"aa01325_html\"><div class=\"ttname\"><a href=\"a01325.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchArray</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00066\">types.h:66</a></div></div>\n+<div class=\"ttc\" id=\"aa01329_html\"><div class=\"ttname\"><a href=\"a01329.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchParam</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00127\">types.h:127</a></div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bd5473d7d5841d48919aaa9ad0cb1f9b.html\">vtr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00692.html\">stackBuffer.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00692.html\">cudaEvaluator.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-stackBuffer.h\n+cudaEvaluator.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2015 DreamWorks Animation LLC.\n+2// Copyright 2015 Pixar\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -23,230 +23,738 @@\n 17//\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n-24#ifndef OPENSUBDIV3_VTR_STACK_BUFFER_H\n-25#define OPENSUBDIV3_VTR_STACK_BUFFER_H\n-26\n-27#include \"../version.h\"\n-28\n-29namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-30namespace OPENSUBDIV_VERSION {\n-31\n-32namespace Vtr {\n-33namespace internal {\n-34\n-35//\n-36// The StackBuffer class is intended solely to take the place of VLAs\n-(Variable\n-37// Length Arrays) which most compilers support, but are not strictly standard\n-C++.\n-38// Portability concerns forces us to make use of either alloca() or some\n-other\n-39// mechanism to create small arrays on the stack that are typically based on\n-the\n-40// valence of a vertex -- small in general, but occasionally large.\n-41//\n-42// Note also that since the intent of this is to replace VLAs -- not general\n-43// std::vectors -- support for std::vector functionality is intentionally\n-limited\n-44// and STL-like naming is avoided. Like a VLA there is no incremental growth.\n-45// Support for resizing is available to reuse an instance at the beginning of\n-a\n-46// loop with a new size, but resizing in this case reinitializes all\n-elements.\n-47//\n-48\n-49template <typename TYPE, unsigned int SIZE, bool POD_TYPE = false>\n-50class StackBuffer\n-51{\n-52public:\n-53 typedef unsigned int size_type;\n-54\n-55public:\n-56 // Constructors and destructor -- declared inline below:\n-57 StackBuffer();\n-58 StackBuffer(size_type size);\n-59 ~StackBuffer();\n-60\n-61public:\n-62 // Note the reliance on implicit casting so that it can be used similar to\n-63 // a VLA. This removes the need for operator[] as the resulting TYPE* will\n-64 // natively support []. (The presence of both TYPE* and operator[] also\n-65 // causes an ambiguous overloading error with 32-bit MSVC builds.)\n-66\n-67 operator TYPE const * () const { return _data; }\n-68 operator TYPE * () { return _data; }\n-69\n-70 size_type GetSize() const { return _size; }\n-71\n-72 void SetSize(size_type size);\n-73 void Reserve(size_type capacity);\n-74\n-75private:\n-76 // Non-copyable:\n-77 StackBuffer(const StackBuffer<TYPE,SIZE,POD_TYPE> &) { }\n-78 StackBuffer& operator=(const StackBuffer<TYPE,SIZE,POD_TYPE> &) { return\n-*this; }\n-79\n-80 void allocate(size_type capacity);\n-81 void deallocate();\n-82 void construct();\n-83 void destruct();\n-84\n-85private:\n-86 TYPE * _data;\n-87 size_type _size;\n-88 size_type _capacity;\n-89\n-90 // Is alignment an issue here? The staticData arena will at least be double-\n-word\n-91 // aligned within this struct, which meets current and most anticipated\n-needs.\n-92 char _staticData[SIZE * sizeof(TYPE)];\n-93 char * _dynamicData;\n-94};\n-95\n-96\n-97//\n-98// Core allocation/deallocation methods:\n-99//\n-100template <typename TYPE, unsigned int SIZE, bool POD_TYPE>\n-101inline void\n-102StackBuffer<TYPE,SIZE,POD_TYPE>::allocate(size_type capacity) {\n-103\n-104 // Again, is alignment an issue here? C++ spec says new will return pointer\n-105 // \"suitably aligned\" for conversion to pointers of other types, which\n-implies\n-106 // at least an alignment of 16.\n-107 _dynamicData = static_cast<char*>(::operator new(capacity * sizeof(TYPE)));\n-108\n-109 _data = reinterpret_cast<TYPE*>(_dynamicData);\n-110 _capacity = capacity;\n-111}\n-112\n-113template <typename TYPE, unsigned int SIZE, bool POD_TYPE>\n-114inline void\n-115StackBuffer<TYPE,SIZE,POD_TYPE>::deallocate() {\n-116\n-117 ::operator delete(_dynamicData);\n-118\n-119 _data = reinterpret_cast<TYPE*>(_staticData);\n-120 _capacity = SIZE;\n-121}\n-122\n-123//\n-124// Explicit element-wise construction and destruction within allocated\n-memory.\n-125// Compilers do not always optimize out the iteration here even when there\n-is\n-126// no construction or destruction, so the POD_TYPE arguement can be used to\n-127// force this when/if it becomes an issue (and it has been in some cases).\n-128//\n-129template <typename TYPE, unsigned int SIZE, bool POD_TYPE>\n-130inline void\n-131StackBuffer<TYPE,SIZE,POD_TYPE>::construct() {\n+24\n+25#ifndef OPENSUBDIV3_OSD_CUDA_EVALUATOR_H\n+26#define OPENSUBDIV3_OSD_CUDA_EVALUATOR_H\n+27\n+28#include \"../version.h\"\n+29\n+30#include <vector>\n+31#include \"../osd/bufferDescriptor.h\"\n+32#include \"../osd/types.h\"\n+33\n+34namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+35namespace OPENSUBDIV_VERSION {\n+36\n+37namespace Far {\n+38 class PatchTable;\n+39 class StencilTable;\n+40 class LimitStencilTable;\n+41}\n+42\n+43namespace Osd {\n+44\n+_\b5_\b2class _\bC_\bu_\bd_\ba_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be {\n+53public:\n+_\b5_\b4 static _\bC_\bu_\bd_\ba_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be *_\bC_\br_\be_\ba_\bt_\be(_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *stencilTable,\n+55 void *deviceContext = NULL) {\n+56 (void)deviceContext; // unused\n+57 return new _\bC_\bu_\bd_\ba_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(stencilTable);\n+58 }\n+_\b5_\b9 static _\bC_\bu_\bd_\ba_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be *_\bC_\br_\be_\ba_\bt_\be(_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const\n+*limitStencilTable,\n+60 void *deviceContext = NULL) {\n+61 (void)deviceContext; // unused\n+62 return new _\bC_\bu_\bd_\ba_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(limitStencilTable);\n+63 }\n+64\n+_\b6_\b5 explicit _\bC_\bu_\bd_\ba_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *stencilTable);\n+_\b6_\b6 explicit _\bC_\bu_\bd_\ba_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *limitStencilTable);\n+_\b6_\b7 _\b~_\bC_\bu_\bd_\ba_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be();\n+68\n+69 // interfaces needed for CudaCompute\n+_\b7_\b0 void *_\bG_\be_\bt_\bS_\bi_\bz_\be_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _sizes; }\n+_\b7_\b1 void *_\bG_\be_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _offsets; }\n+_\b7_\b2 void *_\bG_\be_\bt_\bI_\bn_\bd_\bi_\bc_\be_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _indices; }\n+_\b7_\b3 void *_\bG_\be_\bt_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _weights; }\n+_\b7_\b4 void *_\bG_\be_\bt_\bD_\bu_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _duWeights; }\n+_\b7_\b5 void *_\bG_\be_\bt_\bD_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _dvWeights; }\n+_\b7_\b6 void *_\bG_\be_\bt_\bD_\bu_\bu_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _duuWeights; }\n+_\b7_\b7 void *_\bG_\be_\bt_\bD_\bu_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _duvWeights; }\n+_\b7_\b8 void *_\bG_\be_\bt_\bD_\bv_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _dvvWeights; }\n+_\b7_\b9 int _\bG_\be_\bt_\bN_\bu_\bm_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs() const { return _numStencils; }\n+80\n+81private:\n+82 void * _sizes,\n+83 * _offsets,\n+84 * _indices,\n+85 * _weights,\n+86 * _duWeights,\n+87 * _dvWeights,\n+88 * _duuWeights,\n+89 * _duvWeights,\n+90 * _dvvWeights;\n+91 int _numStencils;\n+92};\n+93\n+_\b9_\b4class _\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br {\n+95public:\n+101\n+125 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n+_\b1_\b2_\b6 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n+127 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+128 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+129 STENCIL_TABLE const *stencilTable,\n+130 const void *instance = NULL,\n+131 void * deviceContext = NULL) {\n 132\n-133 for (size_type i = 0; i < _size; ++i) {\n-134 (void) new (&_data[i]) TYPE;\n-135 }\n-136}\n-137template <typename TYPE, unsigned int SIZE, bool POD_TYPE>\n-138inline void\n-139StackBuffer<TYPE,SIZE,POD_TYPE>::destruct() {\n-140\n-141 for (size_type i = 0; i < _size; ++i) {\n-142 _data[i].~TYPE();\n+133 (void)instance; // unused\n+134 (void)deviceContext; // unused\n+135 return _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer->BindCudaBuffer(), srcDesc,\n+136 dstBuffer->BindCudaBuffer(), dstDesc,\n+137 (int const *)stencilTable->GetSizesBuffer(),\n+138 (int const *)stencilTable->GetOffsetsBuffer(),\n+139 (int const *)stencilTable->GetIndicesBuffer(),\n+140 (float const *)stencilTable->GetWeightsBuffer(),\n+141 /*start = */ 0,\n+142 /*end = */ stencilTable->GetNumStencils());\n 143 }\n-144}\n-145\n-146//\n-147// Inline constructors and destructor:\n-148//\n-149template <typename TYPE, unsigned int SIZE, bool POD_TYPE>\n-150inline\n-151StackBuffer<TYPE,SIZE,POD_TYPE>::StackBuffer() :\n-152 _data(reinterpret_cast<TYPE*>(_staticData)),\n-153 _size(0),\n-154 _capacity(SIZE),\n-155 _dynamicData(0) {\n-156\n-157}\n-158\n-159template <typename TYPE, unsigned int SIZE, bool POD_TYPE>\n-160inline\n-161StackBuffer<TYPE,SIZE,POD_TYPE>::StackBuffer(size_type size) :\n-162 _data(reinterpret_cast<TYPE*>(_staticData)),\n-163 _size(size),\n-164 _capacity(SIZE),\n-165 _dynamicData(0) {\n-166\n-167 if (size > SIZE) {\n-168 allocate(size);\n-169 }\n-170 if (!POD_TYPE) {\n-171 construct();\n-172 }\n-173}\n-174\n-175template <typename TYPE, unsigned int SIZE, bool POD_TYPE>\n-176inline\n-177StackBuffer<TYPE,SIZE,POD_TYPE>::~StackBuffer() {\n-178\n-179 if (!POD_TYPE) {\n-180 destruct();\n-181 }\n-182 deallocate();\n-183}\n-184\n-185//\n-186// Inline sizing methods:\n-187//\n-188template <typename TYPE, unsigned int SIZE, bool POD_TYPE>\n-189inline void\n-190StackBuffer<TYPE,SIZE,POD_TYPE>::Reserve(size_type capacity) {\n-191\n-192 if (capacity > _capacity) {\n-193 if (!POD_TYPE) {\n-194 destruct();\n-195 }\n-196 deallocate();\n-197 allocate(capacity);\n-198 }\n-199}\n-200\n-201template <typename TYPE, unsigned int SIZE, bool POD_TYPE>\n-202inline void\n-203StackBuffer<TYPE,SIZE,POD_TYPE>::SetSize(size_type size)\n-204{\n-205 if (!POD_TYPE) {\n-206 destruct();\n-207 }\n-208 if (size == 0) {\n-209 deallocate();\n-210 } else if (size > _capacity) {\n-211 deallocate();\n-212 allocate(size);\n-213 }\n-214 _size = size;\n-215 if (!POD_TYPE) {\n-216 construct();\n-217 }\n-218}\n-219\n-220} // end namespace internal\n-221} // end namespace Vtr\n-222\n-223} // end namespace OPENSUBDIV_VERSION\n-224using namespace OPENSUBDIV_VERSION;\n-225} // end namespace OpenSubdiv\n+144\n+_\b1_\b7_\b1 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n+172 const float *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+173 float *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+174 const int * sizes,\n+175 const int * offsets,\n+176 const int * indices,\n+177 const float * weights,\n+178 int start, int end);\n+179\n+217 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n+_\b2_\b1_\b8 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n+219 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+220 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+221 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+222 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+223 STENCIL_TABLE const *stencilTable,\n+224 const _\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br *instance = NULL,\n+225 void * deviceContext = NULL) {\n 226\n-227#endif /* OPENSUBDIV3_VTR_STACK_BUFFER_H */\n+227 (void)instance; // unused\n+228 (void)deviceContext; // unused\n+229\n+230 return _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer->BindCudaBuffer(), srcDesc,\n+231 dstBuffer->BindCudaBuffer(), dstDesc,\n+232 duBuffer->BindCudaBuffer(), duDesc,\n+233 dvBuffer->BindCudaBuffer(), dvDesc,\n+234 (int const *)stencilTable->GetSizesBuffer(),\n+235 (int const *)stencilTable->GetOffsetsBuffer(),\n+236 (int const *)stencilTable->GetIndicesBuffer(),\n+237 (float const *)stencilTable->GetWeightsBuffer(),\n+238 (float const *)stencilTable->GetDuWeightsBuffer(),\n+239 (float const *)stencilTable->GetDvWeightsBuffer(),\n+240 /*start = */ 0,\n+241 /*end = */ stencilTable->GetNumStencils());\n+242 }\n+243\n+_\b2_\b8_\b4 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n+285 const float *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+286 float *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+287 float *du, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+288 float *dv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+289 const int * sizes,\n+290 const int * offsets,\n+291 const int * indices,\n+292 const float * weights,\n+293 const float * duWeights,\n+294 const float * dvWeights,\n+295 int start, int end);\n+296\n+352 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n+_\b3_\b5_\b3 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n+354 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+355 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+356 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+357 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+358 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+359 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+360 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+361 STENCIL_TABLE const *stencilTable,\n+362 const _\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br *instance = NULL,\n+363 void * deviceContext = NULL) {\n+364\n+365 (void)instance; // unused\n+366 (void)deviceContext; // unused\n+367\n+368 return _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer->BindCudaBuffer(), srcDesc,\n+369 dstBuffer->BindCudaBuffer(), dstDesc,\n+370 duBuffer->BindCudaBuffer(), duDesc,\n+371 dvBuffer->BindCudaBuffer(), dvDesc,\n+372 duuBuffer->BindCudaBuffer(), duuDesc,\n+373 duvBuffer->BindCudaBuffer(), duvDesc,\n+374 dvvBuffer->BindCudaBuffer(), dvvDesc,\n+375 (int const *)stencilTable->GetSizesBuffer(),\n+376 (int const *)stencilTable->GetOffsetsBuffer(),\n+377 (int const *)stencilTable->GetIndicesBuffer(),\n+378 (float const *)stencilTable->GetWeightsBuffer(),\n+379 (float const *)stencilTable->GetDuWeightsBuffer(),\n+380 (float const *)stencilTable->GetDvWeightsBuffer(),\n+381 (float const *)stencilTable->GetDuuWeightsBuffer(),\n+382 (float const *)stencilTable->GetDuvWeightsBuffer(),\n+383 (float const *)stencilTable->GetDvvWeightsBuffer(),\n+384 /*start = */ 0,\n+385 /*end = */ stencilTable->GetNumStencils());\n+386 }\n+387\n+_\b4_\b4_\b9 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n+450 const float *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+451 float *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+452 float *du, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+453 float *dv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+454 float *duu, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+455 float *duv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+456 float *dvv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+457 const int * sizes,\n+458 const int * offsets,\n+459 const int * indices,\n+460 const float * weights,\n+461 const float * duWeights,\n+462 const float * dvWeights,\n+463 const float * duuWeights,\n+464 const float * duvWeights,\n+465 const float * dvvWeights,\n+466 int start, int end);\n+467\n+473\n+502 template <typename SRC_BUFFER, typename DST_BUFFER,\n+503 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b5_\b0_\b4 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n+505 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+506 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+507 int numPatchCoords,\n+508 PATCHCOORD_BUFFER *patchCoords,\n+509 PATCH_TABLE *patchTable,\n+510 _\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n+511 void * deviceContext = NULL) {\n+512\n+513 (void)instance; // unused\n+514 (void)deviceContext; // unused\n+515\n+516 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCudaBuffer(), srcDesc,\n+517 dstBuffer->BindCudaBuffer(), dstDesc,\n+518 numPatchCoords,\n+519 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd *)patchCoords->BindCudaBuffer(),\n+520 (const _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by *)patchTable->GetPatchArrayBuffer(),\n+521 (const int *)patchTable->GetPatchIndexBuffer(),\n+522 (const _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm *)patchTable->GetPatchParamBuffer());\n+523 }\n+524\n+563 template <typename SRC_BUFFER, typename DST_BUFFER,\n+564 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b5_\b6_\b5 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n+566 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+567 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+568 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+569 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+570 int numPatchCoords,\n+571 PATCHCOORD_BUFFER *patchCoords,\n+572 PATCH_TABLE *patchTable,\n+573 _\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n+574 void * deviceContext = NULL) {\n+575\n+576 (void)instance; // unused\n+577 (void)deviceContext; // unused\n+578\n+579 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCudaBuffer(), srcDesc,\n+580 dstBuffer->BindCudaBuffer(), dstDesc,\n+581 duBuffer->BindCudaBuffer(), duDesc,\n+582 dvBuffer->BindCudaBuffer(), dvDesc,\n+583 numPatchCoords,\n+584 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd *)patchCoords->BindCudaBuffer(),\n+585 (const _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by *)patchTable->GetPatchArrayBuffer(),\n+586 (const int *)patchTable->GetPatchIndexBuffer(),\n+587 (const _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm *)patchTable->GetPatchParamBuffer());\n+588 }\n+589\n+646 template <typename SRC_BUFFER, typename DST_BUFFER,\n+647 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b6_\b4_\b8 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n+649 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+650 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+651 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+652 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+653 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+654 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+655 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+656 int numPatchCoords,\n+657 PATCHCOORD_BUFFER *patchCoords,\n+658 PATCH_TABLE *patchTable,\n+659 _\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n+660 void * deviceContext = NULL) {\n+661\n+662 (void)instance; // unused\n+663 (void)deviceContext; // unused\n+664\n+665 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCudaBuffer(), srcDesc,\n+666 dstBuffer->BindCudaBuffer(), dstDesc,\n+667 duBuffer->BindCudaBuffer(), duDesc,\n+668 dvBuffer->BindCudaBuffer(), dvDesc,\n+669 duuBuffer->BindCudaBuffer(), duuDesc,\n+670 duvBuffer->BindCudaBuffer(), duvDesc,\n+671 dvvBuffer->BindCudaBuffer(), dvvDesc,\n+672 numPatchCoords,\n+673 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd *)patchCoords->BindCudaBuffer(),\n+674 (const _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by *)patchTable->GetPatchArrayBuffer(),\n+675 (const int *)patchTable->GetPatchIndexBuffer(),\n+676 (const _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm *)patchTable->GetPatchParamBuffer());\n+677 }\n+678\n+_\b7_\b0_\b6 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n+707 const float *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+708 float *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+709 int numPatchCoords,\n+710 const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd *patchCoords,\n+711 const _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by *patchArrays,\n+712 const int *patchIndices,\n+713 const _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm *patchParams);\n+714\n+_\b7_\b5_\b2 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n+753 const float *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+754 float *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+755 float *du, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+756 float *dv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+757 int numPatchCoords,\n+758 _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd const *patchCoords,\n+759 _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by const *patchArrays,\n+760 const int *patchIndices,\n+761 _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm const *patchParams);\n+762\n+_\b8_\b1_\b5 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n+816 const float *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+817 float *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+818 float *du, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+819 float *dv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+820 float *duu, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+821 float *duv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+822 float *dvv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+823 int numPatchCoords,\n+824 _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd const *patchCoords,\n+825 _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by const *patchArrays,\n+826 const int *patchIndices,\n+827 _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm const *patchParams);\n+828\n+857 template <typename SRC_BUFFER, typename DST_BUFFER,\n+858 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b8_\b5_\b9 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+860 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+861 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+862 int numPatchCoords,\n+863 PATCHCOORD_BUFFER *patchCoords,\n+864 PATCH_TABLE *patchTable,\n+865 _\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n+866 void * deviceContext = NULL) {\n+867\n+868 (void)instance; // unused\n+869 (void)deviceContext; // unused\n+870\n+871 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCudaBuffer(), srcDesc,\n+872 dstBuffer->BindCudaBuffer(), dstDesc,\n+873 numPatchCoords,\n+874 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd *)patchCoords->BindCudaBuffer(),\n+875 (const _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by *)patchTable->GetVaryingPatchArrayBuffer(),\n+876 (const int *)patchTable->GetVaryingPatchIndexBuffer(),\n+877 (const _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm *)patchTable->GetPatchParamBuffer());\n+878 }\n+879\n+920 template <typename SRC_BUFFER, typename DST_BUFFER,\n+921 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b9_\b2_\b2 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+923 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+924 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+925 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+926 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+927 int numPatchCoords,\n+928 PATCHCOORD_BUFFER *patchCoords,\n+929 PATCH_TABLE *patchTable,\n+930 _\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n+931 void * deviceContext = NULL) {\n+932\n+933 (void)instance; // unused\n+934 (void)deviceContext; // unused\n+935\n+936 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCudaBuffer(), srcDesc,\n+937 dstBuffer->BindCudaBuffer(), dstDesc,\n+938 duBuffer->BindCudaBuffer(), duDesc,\n+939 dvBuffer->BindCudaBuffer(), dvDesc,\n+940 numPatchCoords,\n+941 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd *)patchCoords->BindCudaBuffer(),\n+942 (const _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by *)patchTable->GetVaryingPatchArrayBuffer(),\n+943 (const int *)patchTable->GetVaryingPatchIndexBuffer(),\n+944 (const _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm *)patchTable->GetPatchParamBuffer());\n+945 }\n+946\n+1005 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1006 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b1_\b0_\b0_\b7 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1008 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1009 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1010 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+1011 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+1012 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+1013 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+1014 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+1015 int numPatchCoords,\n+1016 PATCHCOORD_BUFFER *patchCoords,\n+1017 PATCH_TABLE *patchTable,\n+1018 _\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n+1019 void * deviceContext = NULL) {\n+1020\n+1021 (void)instance; // unused\n+1022 (void)deviceContext; // unused\n+1023\n+1024 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCudaBuffer(), srcDesc,\n+1025 dstBuffer->BindCudaBuffer(), dstDesc,\n+1026 duBuffer->BindCudaBuffer(), duDesc,\n+1027 dvBuffer->BindCudaBuffer(), dvDesc,\n+1028 duuBuffer->BindCudaBuffer(), duuDesc,\n+1029 duvBuffer->BindCudaBuffer(), duvDesc,\n+1030 dvvBuffer->BindCudaBuffer(), dvvDesc,\n+1031 numPatchCoords,\n+1032 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd *)patchCoords->BindCudaBuffer(),\n+1033 (const _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by *)patchTable->GetVaryingPatchArrayBuffer(),\n+1034 (const int *)patchTable->GetVaryingPatchIndexBuffer(),\n+1035 (const _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm *)patchTable->GetPatchParamBuffer());\n+1036 }\n+1037\n+1068 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1069 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b1_\b0_\b7_\b0 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1071 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1072 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1073 int numPatchCoords,\n+1074 PATCHCOORD_BUFFER *patchCoords,\n+1075 PATCH_TABLE *patchTable,\n+1076 int fvarChannel,\n+1077 _\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n+1078 void * deviceContext = NULL) {\n+1079\n+1080 (void)instance; // unused\n+1081 (void)deviceContext; // unused\n+1082\n+1083 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCudaBuffer(), srcDesc,\n+1084 dstBuffer->BindCudaBuffer(), dstDesc,\n+1085 numPatchCoords,\n+1086 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd *)patchCoords->BindCudaBuffer(),\n+1087 (const _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by *)patchTable->GetFVarPatchArrayBuffer(fvarChannel),\n+1088 (const int *)patchTable->GetFVarPatchIndexBuffer(fvarChannel),\n+1089 (const _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm *)patchTable->GetFVarPatchParamBuffer(fvarChannel));\n+1090 }\n+1091\n+1134 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1135 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b1_\b1_\b3_\b6 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1137 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1138 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1139 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+1140 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+1141 int numPatchCoords,\n+1142 PATCHCOORD_BUFFER *patchCoords,\n+1143 PATCH_TABLE *patchTable,\n+1144 int fvarChannel,\n+1145 _\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n+1146 void * deviceContext = NULL) {\n+1147\n+1148 (void)instance; // unused\n+1149 (void)deviceContext; // unused\n+1150\n+1151 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCudaBuffer(), srcDesc,\n+1152 dstBuffer->BindCudaBuffer(), dstDesc,\n+1153 duBuffer->BindCudaBuffer(), duDesc,\n+1154 dvBuffer->BindCudaBuffer(), dvDesc,\n+1155 numPatchCoords,\n+1156 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd *)patchCoords->BindCudaBuffer(),\n+1157 (const _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by *)patchTable->GetFVarPatchArrayBuffer(fvarChannel),\n+1158 (const int *)patchTable->GetFVarPatchIndexBuffer(fvarChannel),\n+1159 (const _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm *)patchTable->GetFVarPatchParamBuffer(fvarChannel));\n+1160 }\n+1161\n+1222 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1223 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b1_\b2_\b2_\b4 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1225 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1226 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1227 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+1228 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+1229 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+1230 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+1231 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+1232 int numPatchCoords,\n+1233 PATCHCOORD_BUFFER *patchCoords,\n+1234 PATCH_TABLE *patchTable,\n+1235 int fvarChannel,\n+1236 _\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n+1237 void * deviceContext = NULL) {\n+1238\n+1239 (void)instance; // unused\n+1240 (void)deviceContext; // unused\n+1241\n+1242 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCudaBuffer(), srcDesc,\n+1243 dstBuffer->BindCudaBuffer(), dstDesc,\n+1244 duBuffer->BindCudaBuffer(), duDesc,\n+1245 dvBuffer->BindCudaBuffer(), dvDesc,\n+1246 duuBuffer->BindCudaBuffer(), duuDesc,\n+1247 duvBuffer->BindCudaBuffer(), duvDesc,\n+1248 dvvBuffer->BindCudaBuffer(), dvvDesc,\n+1249 numPatchCoords,\n+1250 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd *)patchCoords->BindCudaBuffer(),\n+1251 (const _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by *)patchTable->GetFVarPatchArrayBuffer(fvarChannel),\n+1252 (const int *)patchTable->GetFVarPatchIndexBuffer(fvarChannel),\n+1253 (const _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm *)patchTable->GetFVarPatchParamBuffer(fvarChannel));\n+1254 }\n+1255\n+_\b1_\b2_\b6_\b1 static void _\bS_\by_\bn_\bc_\bh_\br_\bo_\bn_\bi_\bz_\be(void *deviceContext = NULL);\n+1262};\n+1263\n+1264\n+1265} // end namespace Osd\n+1266\n+1267} // end namespace OPENSUBDIV_VERSION\n+1268using namespace OPENSUBDIV_VERSION;\n+1269\n+1270} // end namespace OpenSubdiv\n+1271\n+1272\n+1273#endif // OPENSUBDIV3_OSD_CUDA_EVALUATOR_H\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n+Stencil table class wrapping the template for compatibility.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b2_\b7_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n+Limit stencil table class wrapping the template for compatibility.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b8_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n+BufferDescriptor is a struct which describes buffer elements in interleaved\n+data buffers....\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b6_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n+CUDA stencil table.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b5_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bD_\bu_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br\n+void * GetDuvWeightsBuffer() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b~_\bC_\bu_\bd_\ba_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n+~CudaStencilTable()\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bD_\bu_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br\n+void * GetDuWeightsBuffer() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bD_\bv_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br\n+void * GetDvvWeightsBuffer() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br\n+void * GetOffsetsBuffer() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\bu_\bd_\ba_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n+CudaStencilTable(Far::LimitStencilTable const *limitStencilTable)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bD_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br\n+void * GetDvWeightsBuffer() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+int GetNumStencils() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bD_\bu_\bu_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br\n+void * GetDuuWeightsBuffer() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br\n+void * GetWeightsBuffer() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n+static CudaStencilTable * Create(Far::LimitStencilTable const\n+*limitStencilTable, void *deviceContext=NULL)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b5_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bS_\bi_\bz_\be_\bs_\bB_\bu_\bf_\bf_\be_\br\n+void * GetSizesBuffer() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bI_\bn_\bd_\bi_\bc_\be_\bs_\bB_\bu_\bf_\bf_\be_\br\n+void * GetIndicesBuffer() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\bu_\bd_\ba_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n+CudaStencilTable(Far::StencilTable const *stencilTable)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n+static CudaStencilTable * Create(Far::StencilTable const *stencilTable, void\n+*deviceContext=NULL)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b5_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b9_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+static bool EvalPatches(const float *src, BufferDescriptor const &srcDesc,\n+float *dst, BufferDescriptor const &dstDesc, int numPatchCoords, const\n+PatchCoord *patchCoords, const PatchArray *patchArrays, const int\n+*patchIndices, const PatchParam *patchParams)\n+Static limit eval function. It takes an array of PatchCoord and evaluate limit\n+values on given PatchT...\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n+static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n+*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n+BufferDescriptor const &dvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n+*patchCoords, PATCH_TABLE *patchTable, CudaEvaluator const *instance, void\n+*deviceContext=NULL)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b9_\b2_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n+BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n+&dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER\n+*duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer,\n+BufferDescriptor const &dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n+*patchCoords, PATCH_TABLE *patchTable, CudaEvaluator const *instance, void\n+*deviceContext=NULL)\n+Generic limit eval function with derivatives. This function has a same\n+signature as other device kern...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b6_\b4_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n+*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n+BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const\n+&duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER\n+*dvvBuffer, BufferDescriptor const &dvvDesc, STENCIL_TABLE const *stencilTable,\n+const CudaEvaluator *instance=NULL, void *deviceContext=NULL)\n+Generic static eval stencils function with derivatives. This function has a\n+same signature as other d...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b3_\b5_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+static bool EvalStencils(const float *src, BufferDescriptor const &srcDesc,\n+float *dst, BufferDescriptor const &dstDesc, const int *sizes, const int\n+*offsets, const int *indices, const float *weights, int start, int end)\n+Static eval stencils function which takes raw cuda buffers for input and\n+output.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n+static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int\n+numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable,\n+CudaEvaluator const *instance, void *deviceContext=NULL)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b8_\b5_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n+*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n+BufferDescriptor const &dvDesc, STENCIL_TABLE const *stencilTable, const\n+CudaEvaluator *instance=NULL, void *deviceContext=NULL)\n+Generic static eval stencils function with derivatives. This function has a\n+same signature as other d...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b2_\b1_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+static bool EvalPatches(const float *src, BufferDescriptor const &srcDesc,\n+float *dst, BufferDescriptor const &dstDesc, float *du, BufferDescriptor const\n+&duDesc, float *dv, BufferDescriptor const &dvDesc, float *duu,\n+BufferDescriptor const &duuDesc, float *duv, BufferDescriptor const &duvDesc,\n+float *dvv, BufferDescriptor const &dvvDesc, int numPatchCoords, PatchCoord\n+const *patchCoords, PatchArray const *patchArrays, const int *patchIndices,\n+PatchParam const *patchParams)\n+Static limit eval function. It takes an array of PatchCoord and evaluate limit\n+values on given PatchT...\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n+static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor\n+const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,\n+DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n+BufferDescriptor const &dvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n+*patchCoords, PATCH_TABLE *patchTable, int fvarChannel, CudaEvaluator const\n+*instance, void *deviceContext=NULL)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b1_\b3_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, STENCIL_TABLE\n+const *stencilTable, const void *instance=NULL, void *deviceContext=NULL)\n+Generic static compute function. This function has a same signature as other\n+device kernels have so t...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b2_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+static bool EvalStencils(const float *src, BufferDescriptor const &srcDesc,\n+float *dst, BufferDescriptor const &dstDesc, float *du, BufferDescriptor const\n+&duDesc, float *dv, BufferDescriptor const &dvDesc, const int *sizes, const int\n+*offsets, const int *indices, const float *weights, const float *duWeights,\n+const float *dvWeights, int start, int end)\n+Static eval stencils function with derivatives, which takes raw cuda pointers\n+for input and output.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+static bool EvalStencils(const float *src, BufferDescriptor const &srcDesc,\n+float *dst, BufferDescriptor const &dstDesc, float *du, BufferDescriptor const\n+&duDesc, float *dv, BufferDescriptor const &dvDesc, float *duu,\n+BufferDescriptor const &duuDesc, float *duv, BufferDescriptor const &duvDesc,\n+float *dvv, BufferDescriptor const &dvvDesc, const int *sizes, const int\n+*offsets, const int *indices, const float *weights, const float *duWeights,\n+const float *dvWeights, const float *duuWeights, const float *duvWeights, const\n+float *dvvWeights, int start, int end)\n+Static eval stencils function with derivatives, which takes raw cuda pointers\n+for input and output.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bS_\by_\bn_\bc_\bh_\br_\bo_\bn_\bi_\bz_\be\n+static void Synchronize(void *deviceContext=NULL)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+static bool EvalPatches(const float *src, BufferDescriptor const &srcDesc,\n+float *dst, BufferDescriptor const &dstDesc, float *du, BufferDescriptor const\n+&duDesc, float *dv, BufferDescriptor const &dvDesc, int numPatchCoords,\n+PatchCoord const *patchCoords, PatchArray const *patchArrays, const int\n+*patchIndices, PatchParam const *patchParams)\n+Static limit eval function. It takes an array of PatchCoord and evaluate limit\n+values on given PatchT...\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n+static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n+*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n+BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const\n+&duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER\n+*dvvBuffer, BufferDescriptor const &dvvDesc, int numPatchCoords,\n+PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, CudaEvaluator const\n+*instance, void *deviceContext=NULL)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b0_\b0_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords,\n+PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, CudaEvaluator const\n+*instance, void *deviceContext=NULL)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b5_\b0_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n+static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor\n+const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,\n+DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n+BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const\n+&duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER\n+*dvvBuffer, BufferDescriptor const &dvvDesc, int numPatchCoords,\n+PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel,\n+CudaEvaluator const *instance, void *deviceContext=NULL)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b2_\b2_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n+BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n+&dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE\n+*patchTable, CudaEvaluator const *instance, void *deviceContext=NULL)\n+Generic limit eval function with derivatives. This function has a same\n+signature as other device kern...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b5_\b6_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n+static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor\n+const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int\n+numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int\n+fvarChannel, CudaEvaluator const *instance, void *deviceContext=NULL)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b0_\b7_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd\n+Coordinates set on a patch table.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b4_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b6_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b1_\b2_\b7\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bv_\bt_\br\n-    * _\bs_\bt_\ba_\bc_\bk_\bB_\bu_\bf_\bf_\be_\br_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bc_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00695.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00695.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/vtr/level.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/osd/d3d11LegacyGregoryPatchTable.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -88,43 +88,43 @@\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n+<a href=\"#nested-classes\">Classes</a> &#124;\n <a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">level.h File Reference</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">d3d11LegacyGregoryPatchTable.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a01492_source.html\">../sdc/types.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00731_source.html\">../sdc/crease.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00734_source.html\">../sdc/options.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a01495_source.html\">../vtr/types.h</a>&quot;</code><br />\n-<code>#include &lt;algorithm&gt;</code><br />\n-<code>#include &lt;vector&gt;</code><br />\n-<code>#include &lt;cassert&gt;</code><br />\n-<code>#include &lt;cstring&gt;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00842_source.html\">../far/patchTable.h</a>&quot;</code><br />\n+<code>#include &quot;../osd/nonCopyable.h&quot;</code><br />\n </div>\n <p><a href=\"a00695_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n+<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n+Classes</h2></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01205.html\">D3D11LegacyGregoryPatchTable</a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+</table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00909\" id=\"r_a00909\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00909.html\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr</a></td></tr>\n+<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bd5473d7d5841d48919aaa9ad0cb1f9b.html\">vtr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00695.html\">level.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00695.html\">d3d11LegacyGregoryPatchTable.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,27 +1,24 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-level.h File Reference\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+d3d11LegacyGregoryPatchTable.h File Reference\n #include \"../version.h\"\n-#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n-#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bc_\br_\be_\ba_\bs_\be_\b._\bh\"\n-#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh\"\n-#include \"_\b._\b._\b/_\bv_\bt_\br_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n-#include <algorithm>\n-#include <vector>\n-#include <cassert>\n-#include <cstring>\n+#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh\"\n+#include \"../osd/nonCopyable.h\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n+C\bCl\bla\bas\bss\bse\bes\bs\n+class \u00a0 _\bD_\b3_\bD_\b1_\b1_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+\u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bv_\bt_\br\n-    * _\bl_\be_\bv_\be_\bl_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bd_\b3_\bd_\b1_\b1_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00695_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00695_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/vtr/level.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/osd/d3d11LegacyGregoryPatchTable.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">level.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">d3d11LegacyGregoryPatchTable.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00695.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2014 DreamWorks Animation LLC.</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2015 Pixar</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -118,882 +118,123 @@\n <div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_VTR_LEVEL_H</span></div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#define OPENSUBDIV3_VTR_LEVEL_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span> </div>\n-<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span> </div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#include &quot;../sdc/types.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../sdc/crease.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../sdc/options.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &quot;../vtr/types.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"preprocessor\">#include &lt;algorithm&gt;</span></div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"preprocessor\">#include &lt;cassert&gt;</span></div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"preprocessor\">#include &lt;cstring&gt;</span></div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span> </div>\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span> </div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n+<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_D3D11_LEGACY_GREGORY_PATCH_TABLE_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_D3D11_LEGACY_GREGORY_PATCH_TABLE_H</span></div>\n+<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n+<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../far/patchTable.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../osd/nonCopyable.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span> </div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"keyword\">struct </span>ID3D11Buffer;</div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">struct </span>ID3D11ShaderResourceView;</div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">struct </span>ID3D11Device;</div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"keyword\">struct </span>ID3D11DeviceContext;</div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span> </div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span> </div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"keyword\">namespace </span>Osd {</div>\n <div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span> </div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"keyword\">namespace </span>Vtr {</div>\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span><span class=\"keyword\">namespace </span>internal {</div>\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span> </div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span><span class=\"keyword\">class </span>Refinement;</div>\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span><span class=\"keyword\">class </span>TriRefinement;</div>\n-<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span><span class=\"keyword\">class </span>QuadRefinement;</div>\n-<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span><span class=\"keyword\">class </span>FVarRefinement;</div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span><span class=\"keyword\">class </span>FVarLevel;</div>\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span> </div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span><span class=\"comment\">//  Level:</span></div>\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span><span class=\"comment\">//      A refinement level includes a vectorized representation of the topology</span></div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span><span class=\"comment\">//  for a particular subdivision level.  The topology is &quot;complete&quot; in that any</span></div>\n-<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span><span class=\"comment\">//  level can be used as the base level of another subdivision hierarchy and can</span></div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span><span class=\"comment\">//  be considered a complete mesh independent of its ancestors.  It currently</span></div>\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span><span class=\"comment\">//  does contain a &quot;depth&quot; member -- as some inferences can then be made about</span></div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span><span class=\"comment\">//  the topology (i.e. all quads or all tris if not level 0).</span></div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span><span class=\"comment\">//  This class is intended for private use within the library.  There are still</span></div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span><span class=\"comment\">//  opportunities to specialize levels -- e.g. those supporting N-sided faces vs</span></div>\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span><span class=\"comment\">//  those that are purely quads or tris -- so we prefer to insulate it from public</span></div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span><span class=\"comment\">//  access.</span></div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span><span class=\"comment\">//  The representation of topology here is to store six topological relationships</span></div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span><span class=\"comment\">//  in tables of integers.  Each is stored in its own array(s) so the result is</span></div>\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span><span class=\"comment\">//  a SOA representation of the topology.  The six relations are:</span></div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span><span class=\"comment\">//      - face-verts:  vertices incident/comprising a face</span></div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span><span class=\"comment\">//      - face-edges:  edges incident a face</span></div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span><span class=\"comment\">//      - edge-verts:  vertices incident/comprising an edge</span></div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span><span class=\"comment\">//      - edge-faces:  faces incident an edge</span></div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span><span class=\"comment\">//      - vert-faces:  faces incident a vertex</span></div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span><span class=\"comment\">//      - vert-edges:  edges incident a vertex</span></div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span><span class=\"comment\">//  There is some redundancy here but the intent is not that this be a minimal</span></div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span><span class=\"comment\">//  representation, the intent is that it be amenable to refinement.  Classes in</span></div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span><span class=\"comment\">//  the Far layer essentially store 5 of these 6 in a permuted form -- we add</span></div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span><span class=\"comment\">//  the face-edges here to simplify refinement.</span></div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span> </div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span><span class=\"keyword\">class </span>Level {</div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span> </div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>    <span class=\"comment\">//  Simple nested types to hold the tags for each component type -- some of</span></div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>    <span class=\"comment\">//  which are user-specified features (e.g. whether a face is a hole or not)</span></div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>    <span class=\"comment\">//  while others indicate the topological nature of the component, how it</span></div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>    <span class=\"comment\">//  is affected by creasing in its neighborhood, etc.</span></div>\n-<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>    <span class=\"comment\">//  Most of these properties are passed down to child components during</span></div>\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span>    <span class=\"comment\">//  refinement, but some -- notably the designation of a component as semi-</span></div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>    <span class=\"comment\">//  sharp -- require re-determination as sharpness values are reduced at each</span></div>\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span>    <span class=\"comment\">//  level.</span></div>\n-<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>    <span class=\"keyword\">struct </span>VTag {</div>\n-<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span>        VTag() { }</div>\n+<div class=\"foldopen\" id=\"foldopen00043\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01205.html\">   43</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01205.html\">D3D11LegacyGregoryPatchTable</a></div>\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span>    : <span class=\"keyword\">private</span> NonCopyable&lt;D3D11LegacyGregoryPatchTable&gt; {</div>\n+<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01205.html#a1b73be1e9343a3df3d0dd6027d06fe1b\">   46</a></span>    <a class=\"code hl_function\" href=\"a01205.html#a1b73be1e9343a3df3d0dd6027d06fe1b\">~D3D11LegacyGregoryPatchTable</a>();</div>\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span> </div>\n+<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span>    <span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00049\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01205.html#aca9d1702077da362bc5ba1d046f7853d\">   49</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01205.html\">D3D11LegacyGregoryPatchTable</a> *<a class=\"code hl_function\" href=\"a01205.html#aca9d1702077da362bc5ba1d046f7853d\">Create</a>(</div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span>        <a class=\"code hl_class\" href=\"a00993.html\">Far::PatchTable</a> <span class=\"keyword\">const</span> *farPatchTable, DEVICE_CONTEXT context) {</div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01205.html#aca9d1702077da362bc5ba1d046f7853d\">Create</a>(farPatchTable, context-&gt;GetDeviceContext());</div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span> </div>\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01205.html#a976374548278711d50993273260df174\">   54</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01205.html\">D3D11LegacyGregoryPatchTable</a> *<a class=\"code hl_function\" href=\"a01205.html#a976374548278711d50993273260df174\">Create</a>(</div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span>        <a class=\"code hl_class\" href=\"a00993.html\">Far::PatchTable</a> <span class=\"keyword\">const</span> *farPatchTable,</div>\n+<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span>        ID3D11DeviceContext *deviceContext);</div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span> </div>\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01205.html#a16aad8981b0b35184b6e44cfb242003d\">   58</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01205.html#a16aad8981b0b35184b6e44cfb242003d\">UpdateVertexBuffer</a>(ID3D11Buffer *vbo,</div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span>                            <span class=\"keywordtype\">int</span> numVertices, <span class=\"keywordtype\">int</span> numVertexElements,</div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span>                            ID3D11DeviceContext *pd3d11DeviceContext);</div>\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00062\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01205.html#ab758c72f33a9e3aa46c1096446c3557e\">   62</a></span>    ID3D11ShaderResourceView* <a class=\"code hl_function\" href=\"a01205.html#ab758c72f33a9e3aa46c1096446c3557e\">GetVertexSRV</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>        <span class=\"keywordflow\">return</span> _vertexSRV;</div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00066\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01205.html#adbc155c902f4c2cb88d9fffbeb6499b4\">   66</a></span>    ID3D11ShaderResourceView* <a class=\"code hl_function\" href=\"a01205.html#adbc155c902f4c2cb88d9fffbeb6499b4\">GetVertexValenceSRV</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span>        <span class=\"keywordflow\">return</span> _vertexValenceSRV;</div>\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00070\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01205.html#af03db41bfcbbf8bb266f7b067df6433a\">   70</a></span>    ID3D11ShaderResourceView* <a class=\"code hl_function\" href=\"a01205.html#af03db41bfcbbf8bb266f7b067df6433a\">GetQuadOffsetsSRV</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>        <span class=\"keywordflow\">return</span> _quadOffsetsSRV;</div>\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00074\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01205.html#a176fb87b7ba47d5c2c2a6d332e2687ce\">   74</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01205.html#a176fb87b7ba47d5c2c2a6d332e2687ce\">GetQuadOffsetsBase</a>(<a class=\"code hl_enumeration\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">Far::PatchDescriptor::Type</a> type) {</div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span>        <span class=\"keywordflow\">if</span> (type == <a class=\"code hl_enumvalue\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7ac4ae10df9c13e44880ca7be341e44f2a\">Far::PatchDescriptor::GREGORY_BOUNDARY</a>) {</div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span>            <span class=\"keywordflow\">return</span> _quadOffsetsBase[1];</div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span>        }</div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span>        <span class=\"keywordflow\">return</span> _quadOffsetsBase[0];</div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span> </div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span><span class=\"keyword\">protected</span>:</div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01205.html#af138b4535e4db5f013225c5924e0b243\">   82</a></span>    <a class=\"code hl_function\" href=\"a01205.html#af138b4535e4db5f013225c5924e0b243\">D3D11LegacyGregoryPatchTable</a>();</div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span> </div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>    ID3D11Buffer* _vertexValenceBuffer;</div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>    ID3D11Buffer* _quadOffsetsBuffer;</div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>    ID3D11ShaderResourceView* _vertexSRV;</div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>    ID3D11ShaderResourceView* _vertexValenceSRV;</div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>    ID3D11ShaderResourceView* _quadOffsetsSRV;</div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>    <span class=\"keywordtype\">int</span> _quadOffsetsBase[2];       <span class=\"comment\">// gregory, boundaryGregory</span></div>\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span> </div>\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span> </div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span> </div>\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span>}  <span class=\"comment\">// end namespace Osd</span></div>\n+<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span> </div>\n+<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>}  <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n <div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span> </div>\n-<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span>        <span class=\"comment\">//  When cleared, the VTag ALMOST represents a smooth, regular, interior</span></div>\n-<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span>        <span class=\"comment\">//  vertex -- the Type enum requires a bit be explicitly set for Smooth,</span></div>\n-<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span>        <span class=\"comment\">//  so that must be done explicitly if desired on initialization.</span></div>\n-<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span>        <span class=\"keywordtype\">void</span> clear() { std::memset((<span class=\"keywordtype\">void</span>*) <span class=\"keyword\">this</span>, 0, <span class=\"keyword\">sizeof</span>(VTag)); }</div>\n-<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span> </div>\n-<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span>        <span class=\"keyword\">typedef</span> <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> VTagSize;</div>\n-<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span> </div>\n-<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span>        VTagSize _nonManifold     : 1;  <span class=\"comment\">// fixed</span></div>\n-<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span>        VTagSize _xordinary       : 1;  <span class=\"comment\">// fixed</span></div>\n-<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span>        VTagSize _boundary        : 1;  <span class=\"comment\">// fixed</span></div>\n-<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span>        VTagSize _corner          : 1;  <span class=\"comment\">// fixed</span></div>\n-<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span>        VTagSize _infSharp        : 1;  <span class=\"comment\">// fixed</span></div>\n-<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span>        VTagSize _semiSharp       : 1;  <span class=\"comment\">// variable</span></div>\n-<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span>        VTagSize _semiSharpEdges  : 1;  <span class=\"comment\">// variable</span></div>\n-<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span>        VTagSize _rule            : 4;  <span class=\"comment\">// variable when _semiSharp</span></div>\n-<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span> </div>\n-<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\">  116</span>        <span class=\"comment\">//  These next to tags are complementary -- the &quot;incomplete&quot; tag is only</span></div>\n-<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span>        <span class=\"comment\">//  relevant for refined levels while the &quot;incident an irregular face&quot; tag</span></div>\n-<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\">  118</span>        <span class=\"comment\">//  is only relevant for the base level.  They could be combined as both</span></div>\n-<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span>        <span class=\"comment\">//  indicate &quot;no full regular ring&quot; around a vertex</span></div>\n-<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span>        VTagSize _incomplete      : 1;  <span class=\"comment\">// variable only set in refined levels</span></div>\n-<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\">  121</span>        VTagSize _incidIrregFace  : 1;  <span class=\"comment\">// variable only set in base level</span></div>\n-<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span> </div>\n-<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span>        <span class=\"comment\">//  Tags indicating incident infinitely-sharp (permanent) features</span></div>\n-<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span>        VTagSize _infSharpEdges   : 1;  <span class=\"comment\">// fixed</span></div>\n-<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span>        VTagSize _infSharpCrease  : 1;  <span class=\"comment\">// fixed</span></div>\n-<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span>        VTagSize _infIrregular    : 1;  <span class=\"comment\">// fixed</span></div>\n-<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span> </div>\n-<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span>        <span class=\"comment\">//  Alternate constructor and accessor for dealing with integer bits directly:</span></div>\n-<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span>        <span class=\"keyword\">explicit</span> VTag(VTagSize bits) {</div>\n-<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span>            std::memcpy(<span class=\"keyword\">this</span>, &amp;bits, <span class=\"keyword\">sizeof</span>(bits));</div>\n-<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\">  131</span>        }</div>\n-<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\">  132</span>        VTagSize getBits()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\">  133</span>            VTagSize bits;</div>\n-<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\">  134</span>            std::memcpy(&amp;bits, <span class=\"keyword\">this</span>, <span class=\"keyword\">sizeof</span>(bits));</div>\n-<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\">  135</span>            <span class=\"keywordflow\">return</span> bits;</div>\n-<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\">  136</span>        }</div>\n-<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\">  137</span> </div>\n-<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\">  138</span>        <span class=\"keyword\">static</span> VTag BitwiseOr(VTag <span class=\"keyword\">const</span> vTags[], <span class=\"keywordtype\">int</span> size = 4);</div>\n-<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\">  139</span>    };</div>\n-<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\">  140</span>    <span class=\"keyword\">struct </span>ETag {</div>\n-<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\">  141</span>        ETag() { }</div>\n-<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span> </div>\n-<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\">  143</span>        <span class=\"comment\">//  When cleared, the ETag represents a smooth, manifold, interior edge</span></div>\n-<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\">  144</span>        <span class=\"keywordtype\">void</span> clear() { std::memset((<span class=\"keywordtype\">void</span>*) <span class=\"keyword\">this</span>, 0, <span class=\"keyword\">sizeof</span>(ETag)); }</div>\n-<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\">  145</span> </div>\n-<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\">  146</span>        <span class=\"keyword\">typedef</span> <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> ETagSize;</div>\n-<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\">  147</span> </div>\n-<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\">  148</span>        ETagSize _nonManifold  : 1;  <span class=\"comment\">// fixed</span></div>\n-<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\">  149</span>        ETagSize _boundary     : 1;  <span class=\"comment\">// fixed</span></div>\n-<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\">  150</span>        ETagSize _infSharp     : 1;  <span class=\"comment\">// fixed</span></div>\n-<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\">  151</span>        ETagSize _semiSharp    : 1;  <span class=\"comment\">// variable</span></div>\n-<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\">  152</span> </div>\n-<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\">  153</span>        <span class=\"comment\">//  Alternate constructor and accessor for dealing with integer bits directly:</span></div>\n-<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\">  154</span>        <span class=\"keyword\">explicit</span> ETag(ETagSize bits) {</div>\n-<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\">  155</span>            std::memcpy(<span class=\"keyword\">this</span>, &amp;bits, <span class=\"keyword\">sizeof</span>(bits));</div>\n-<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\">  156</span>        }</div>\n-<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\">  157</span>        ETagSize getBits()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\">  158</span>            ETagSize bits;</div>\n-<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\">  159</span>            std::memcpy(&amp;bits, <span class=\"keyword\">this</span>, <span class=\"keyword\">sizeof</span>(bits));</div>\n-<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\">  160</span>            <span class=\"keywordflow\">return</span> bits;</div>\n-<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\">  161</span>        }</div>\n-<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\">  162</span> </div>\n-<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\">  163</span>        <span class=\"keyword\">static</span> ETag BitwiseOr(ETag <span class=\"keyword\">const</span> eTags[], <span class=\"keywordtype\">int</span> size = 4);</div>\n-<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\">  164</span>    };</div>\n-<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\">  165</span>    <span class=\"keyword\">struct </span>FTag {</div>\n-<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\">  166</span>        FTag() { }</div>\n-<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\">  167</span> </div>\n-<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\">  168</span>        <span class=\"keywordtype\">void</span> clear() { std::memset((<span class=\"keywordtype\">void</span>*) <span class=\"keyword\">this</span>, 0, <span class=\"keyword\">sizeof</span>(FTag)); }</div>\n-<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\">  169</span> </div>\n-<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\">  170</span>        <span class=\"keyword\">typedef</span> <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> FTagSize;</div>\n-<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span> </div>\n-<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\">  172</span>        FTagSize _hole  : 1;  <span class=\"comment\">// fixed</span></div>\n-<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\">  173</span> </div>\n-<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\">  174</span>        <span class=\"comment\">//  On deck -- coming soon...</span></div>\n-<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\">  175</span>        <span class=\"comment\">//FTagSize _hasEdits : 1;  // variable</span></div>\n-<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\">  176</span>    };</div>\n-<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span> </div>\n-<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\">  178</span>    <span class=\"comment\">//  Additional simple struct to identify a &quot;span&quot; around a vertex, i.e. a</span></div>\n-<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\">  179</span>    <span class=\"comment\">//  subset of the faces around a vertex delimited by some property (e.g. a</span></div>\n-<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\">  180</span>    <span class=\"comment\">//  face-varying discontinuity, an inf-sharp edge, etc.)</span></div>\n-<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\">  181</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\">  182</span>    <span class=\"comment\">//  The span requires an &quot;origin&quot; and a &quot;size&quot; to fully define its extent.</span></div>\n-<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\">  183</span>    <span class=\"comment\">//  Use of the size is required over a leading/trailing pair as the valence</span></div>\n-<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\">  184</span>    <span class=\"comment\">//  around a non-manifold vertex cannot be trivially determined from two</span></div>\n-<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\">  185</span>    <span class=\"comment\">//  extremeties.  Similarly a start face is chosen over an edge as starting</span></div>\n-<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\">  186</span>    <span class=\"comment\">//  with a manifold edge is ambiguous.  Additional tags also support</span></div>\n-<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\">  187</span>    <span class=\"comment\">//  non-manifold cases, e.g. periodic spans at the apex of a double cone.</span></div>\n-<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\">  188</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\">  189</span>    <span class=\"comment\">//  Currently setting the size to 0 or leaving the span &quot;unassigned&quot; is an</span></div>\n-<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\">  190</span>    <span class=\"comment\">//  indication to use the full neighborhood rather than a subset -- prefer</span></div>\n-<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\">  191</span>    <span class=\"comment\">//  use of the const method here to direct inspection of the member.</span></div>\n-<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\">  192</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\">  193</span>    <span class=\"keyword\">struct </span>VSpan {</div>\n-<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\">  194</span>        VSpan() { std::memset((<span class=\"keywordtype\">void</span>*) <span class=\"keyword\">this</span>, 0, <span class=\"keyword\">sizeof</span>(VSpan)); }</div>\n-<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\">  195</span> </div>\n-<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\">  196</span>        <span class=\"keywordtype\">void</span> clear()            { std::memset((<span class=\"keywordtype\">void</span>*) <span class=\"keyword\">this</span>, 0, <span class=\"keyword\">sizeof</span>(VSpan)); }</div>\n-<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\">  197</span>        <span class=\"keywordtype\">bool</span> isAssigned()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _numFaces &gt; 0; }</div>\n-<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\">  198</span> </div>\n-<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\">  199</span>        <a class=\"code hl_typedef\" href=\"a00909.html#a97c1e0c5ac33f97e2b73fde56b56c363\">LocalIndex</a> _numFaces;</div>\n-<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\">  200</span>        <a class=\"code hl_typedef\" href=\"a00909.html#a97c1e0c5ac33f97e2b73fde56b56c363\">LocalIndex</a> _startFace;</div>\n-<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\">  201</span>        <a class=\"code hl_typedef\" href=\"a00909.html#a97c1e0c5ac33f97e2b73fde56b56c363\">LocalIndex</a> _cornerInSpan;</div>\n-<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\">  202</span> </div>\n-<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\">  203</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> _periodic : 1;</div>\n-<div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\">  204</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> _sharp    : 1;</div>\n-<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\">  205</span>    };</div>\n-<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\">  206</span> </div>\n-<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\">  207</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\">  208</span>    Level();</div>\n-<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\">  209</span>    ~Level();</div>\n-<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\">  210</span> </div>\n-<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\">  211</span>    <span class=\"comment\">//  Simple accessors:</span></div>\n-<div class=\"line\"><a id=\"l00212\" name=\"l00212\"></a><span class=\"lineno\">  212</span>    <span class=\"keywordtype\">int</span> getDepth()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _depth; }</div>\n-<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\">  213</span> </div>\n-<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\">  214</span>    <span class=\"keywordtype\">int</span> getNumVertices()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _vertCount; }</div>\n-<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\">  215</span>    <span class=\"keywordtype\">int</span> getNumFaces()<span class=\"keyword\"> const    </span>{ <span class=\"keywordflow\">return</span> _faceCount; }</div>\n-<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\">  216</span>    <span class=\"keywordtype\">int</span> getNumEdges()<span class=\"keyword\"> const    </span>{ <span class=\"keywordflow\">return</span> _edgeCount; }</div>\n-<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\">  217</span> </div>\n-<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\">  218</span>    <span class=\"comment\">//  More global sizes may prove useful...</span></div>\n-<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\">  219</span>    <span class=\"keywordtype\">int</span> getNumFaceVerticesTotal()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (<span class=\"keywordtype\">int</span>) _faceVertIndices.size(); }</div>\n-<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\">  220</span>    <span class=\"keywordtype\">int</span> getNumFaceEdgesTotal()<span class=\"keyword\"> const    </span>{ <span class=\"keywordflow\">return</span> (<span class=\"keywordtype\">int</span>) _faceEdgeIndices.size(); }</div>\n-<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\">  221</span>    <span class=\"keywordtype\">int</span> getNumEdgeVerticesTotal()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (<span class=\"keywordtype\">int</span>) _edgeVertIndices.size(); }</div>\n-<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\">  222</span>    <span class=\"keywordtype\">int</span> getNumEdgeFacesTotal()<span class=\"keyword\"> const    </span>{ <span class=\"keywordflow\">return</span> (<span class=\"keywordtype\">int</span>) _edgeFaceIndices.size(); }</div>\n-<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\">  223</span>    <span class=\"keywordtype\">int</span> getNumVertexFacesTotal()<span class=\"keyword\"> const  </span>{ <span class=\"keywordflow\">return</span> (<span class=\"keywordtype\">int</span>) _vertFaceIndices.size(); }</div>\n-<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\">  224</span>    <span class=\"keywordtype\">int</span> getNumVertexEdgesTotal()<span class=\"keyword\"> const  </span>{ <span class=\"keywordflow\">return</span> (<span class=\"keywordtype\">int</span>) _vertEdgeIndices.size(); }</div>\n-<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\">  225</span> </div>\n-<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\">  226</span>    <span class=\"keywordtype\">int</span> getMaxValence()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _maxValence; }</div>\n-<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\">  227</span>    <span class=\"keywordtype\">int</span> getMaxEdgeFaces()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _maxEdgeFaces; }</div>\n-<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\">  228</span> </div>\n-<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\">  229</span>    <span class=\"comment\">//  Methods to access the relation tables/indices -- note that for some relations</span></div>\n-<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\">  230</span>    <span class=\"comment\">//  (i.e. those where a component is &quot;contained by&quot; a neighbor, or more generally</span></div>\n-<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\">  231</span>    <span class=\"comment\">//  when the neighbor is a simplex of higher dimension) we store an additional</span></div>\n-<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\">  232</span>    <span class=\"comment\">//  &quot;local index&quot;, e.g. for the case of vert-faces if one of the faces F[i] is</span></div>\n-<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\">  233</span>    <span class=\"comment\">//  incident a vertex V, then L[i] is the &quot;local index&quot; in F[i] of vertex V.</span></div>\n-<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\">  234</span>    <span class=\"comment\">//  Once have only quads (or tris), this local index need only occupy two bits</span></div>\n-<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\">  235</span>    <span class=\"comment\">//  and could conceivably be packed into the same integer as the face index, but</span></div>\n-<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\">  236</span>    <span class=\"comment\">//  for now, given the need to support faces of potentially high valence we&#39;ll</span></div>\n-<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\">  237</span>    <span class=\"comment\">//  use an 8- or 16-bit integer.</span></div>\n-<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\">  238</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\">  239</span>    <span class=\"comment\">//  Methods to access the six topological relations:</span></div>\n-<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\">  240</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a> getFaceVertices(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\">  241</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a> getFaceEdges(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\">  242</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a> getEdgeVertices(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> edgeIndex) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\">  243</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a> getEdgeFaces(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> edgeIndex) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\">  244</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a> getVertexFaces(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00245\" name=\"l00245\"></a><span class=\"lineno\">  245</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a> getVertexEdges(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\">  246</span> </div>\n-<div class=\"line\"><a id=\"l00247\" name=\"l00247\"></a><span class=\"lineno\">  247</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a175f8a210a75b8180bc7ec74459492c9\">ConstLocalIndexArray</a> getEdgeFaceLocalIndices(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> edgeIndex) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00248\" name=\"l00248\"></a><span class=\"lineno\">  248</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a175f8a210a75b8180bc7ec74459492c9\">ConstLocalIndexArray</a> getVertexFaceLocalIndices(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00249\" name=\"l00249\"></a><span class=\"lineno\">  249</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a175f8a210a75b8180bc7ec74459492c9\">ConstLocalIndexArray</a> getVertexEdgeLocalIndices(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00250\" name=\"l00250\"></a><span class=\"lineno\">  250</span> </div>\n-<div class=\"line\"><a id=\"l00251\" name=\"l00251\"></a><span class=\"lineno\">  251</span>    <span class=\"comment\">//  Replace these with access to sharpness buffers/arrays rather than elements:</span></div>\n-<div class=\"line\"><a id=\"l00252\" name=\"l00252\"></a><span class=\"lineno\">  252</span>    <span class=\"keywordtype\">float</span> getEdgeSharpness(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> edgeIndex) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00253\" name=\"l00253\"></a><span class=\"lineno\">  253</span>    <span class=\"keywordtype\">float</span> getVertexSharpness(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00254\" name=\"l00254\"></a><span class=\"lineno\">  254</span>    <a class=\"code hl_enumeration\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78\">Sdc::Crease::Rule</a> getVertexRule(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00255\" name=\"l00255\"></a><span class=\"lineno\">  255</span> </div>\n-<div class=\"line\"><a id=\"l00256\" name=\"l00256\"></a><span class=\"lineno\">  256</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> findEdge(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> v0Index, <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> v1Index) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00257\" name=\"l00257\"></a><span class=\"lineno\">  257</span> </div>\n-<div class=\"line\"><a id=\"l00258\" name=\"l00258\"></a><span class=\"lineno\">  258</span>    <span class=\"comment\">// Holes</span></div>\n-<div class=\"line\"><a id=\"l00259\" name=\"l00259\"></a><span class=\"lineno\">  259</span>    <span class=\"keywordtype\">void</span> setFaceHole(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex, <span class=\"keywordtype\">bool</span> b);</div>\n-<div class=\"line\"><a id=\"l00260\" name=\"l00260\"></a><span class=\"lineno\">  260</span>    <span class=\"keywordtype\">bool</span> isFaceHole(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00261\" name=\"l00261\"></a><span class=\"lineno\">  261</span> </div>\n-<div class=\"line\"><a id=\"l00262\" name=\"l00262\"></a><span class=\"lineno\">  262</span>    <span class=\"comment\">// Face-varying</span></div>\n-<div class=\"line\"><a id=\"l00263\" name=\"l00263\"></a><span class=\"lineno\">  263</span>    Sdc::Options getFVarOptions(<span class=\"keywordtype\">int</span> channel) <span class=\"keyword\">const</span>; </div>\n-<div class=\"line\"><a id=\"l00264\" name=\"l00264\"></a><span class=\"lineno\">  264</span>    <span class=\"keywordtype\">int</span> getNumFVarChannels()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (<span class=\"keywordtype\">int</span>) _fvarChannels.size(); }</div>\n-<div class=\"line\"><a id=\"l00265\" name=\"l00265\"></a><span class=\"lineno\">  265</span>    <span class=\"keywordtype\">int</span> getNumFVarValues(<span class=\"keywordtype\">int</span> channel) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00266\" name=\"l00266\"></a><span class=\"lineno\">  266</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a> getFaceFVarValues(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex, <span class=\"keywordtype\">int</span> channel) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00267\" name=\"l00267\"></a><span class=\"lineno\">  267</span> </div>\n-<div class=\"line\"><a id=\"l00268\" name=\"l00268\"></a><span class=\"lineno\">  268</span>    FVarLevel &amp; getFVarLevel(<span class=\"keywordtype\">int</span> channel) { <span class=\"keywordflow\">return</span> *_fvarChannels[channel]; }</div>\n-<div class=\"line\"><a id=\"l00269\" name=\"l00269\"></a><span class=\"lineno\">  269</span>    FVarLevel <span class=\"keyword\">const</span> &amp; getFVarLevel(<span class=\"keywordtype\">int</span> channel)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> *_fvarChannels[channel]; }</div>\n-<div class=\"line\"><a id=\"l00270\" name=\"l00270\"></a><span class=\"lineno\">  270</span> </div>\n-<div class=\"line\"><a id=\"l00271\" name=\"l00271\"></a><span class=\"lineno\">  271</span>    <span class=\"comment\">//  Manifold/non-manifold tags:</span></div>\n-<div class=\"line\"><a id=\"l00272\" name=\"l00272\"></a><span class=\"lineno\">  272</span>    <span class=\"keywordtype\">void</span> setEdgeNonManifold(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> edgeIndex, <span class=\"keywordtype\">bool</span> b);</div>\n-<div class=\"line\"><a id=\"l00273\" name=\"l00273\"></a><span class=\"lineno\">  273</span>    <span class=\"keywordtype\">bool</span> isEdgeNonManifold(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> edgeIndex) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00274\" name=\"l00274\"></a><span class=\"lineno\">  274</span> </div>\n-<div class=\"line\"><a id=\"l00275\" name=\"l00275\"></a><span class=\"lineno\">  275</span>    <span class=\"keywordtype\">void</span> setVertexNonManifold(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex, <span class=\"keywordtype\">bool</span> b);</div>\n-<div class=\"line\"><a id=\"l00276\" name=\"l00276\"></a><span class=\"lineno\">  276</span>    <span class=\"keywordtype\">bool</span> isVertexNonManifold(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00277\" name=\"l00277\"></a><span class=\"lineno\">  277</span> </div>\n-<div class=\"line\"><a id=\"l00278\" name=\"l00278\"></a><span class=\"lineno\">  278</span>    <span class=\"comment\">//  General access to all component tags:</span></div>\n-<div class=\"line\"><a id=\"l00279\" name=\"l00279\"></a><span class=\"lineno\">  279</span>    VTag <span class=\"keyword\">const</span> &amp; getVertexTag(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _vertTags[vertIndex]; }</div>\n-<div class=\"line\"><a id=\"l00280\" name=\"l00280\"></a><span class=\"lineno\">  280</span>    ETag <span class=\"keyword\">const</span> &amp; getEdgeTag(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> edgeIndex)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _edgeTags[edgeIndex]; }</div>\n-<div class=\"line\"><a id=\"l00281\" name=\"l00281\"></a><span class=\"lineno\">  281</span>    FTag <span class=\"keyword\">const</span> &amp; getFaceTag(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _faceTags[faceIndex]; }</div>\n-<div class=\"line\"><a id=\"l00282\" name=\"l00282\"></a><span class=\"lineno\">  282</span> </div>\n-<div class=\"line\"><a id=\"l00283\" name=\"l00283\"></a><span class=\"lineno\">  283</span>    VTag &amp; getVertexTag(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex) { <span class=\"keywordflow\">return</span> _vertTags[vertIndex]; }</div>\n-<div class=\"line\"><a id=\"l00284\" name=\"l00284\"></a><span class=\"lineno\">  284</span>    ETag &amp; getEdgeTag(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> edgeIndex) { <span class=\"keywordflow\">return</span> _edgeTags[edgeIndex]; }</div>\n-<div class=\"line\"><a id=\"l00285\" name=\"l00285\"></a><span class=\"lineno\">  285</span>    FTag &amp; getFaceTag(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex) { <span class=\"keywordflow\">return</span> _faceTags[faceIndex]; }</div>\n-<div class=\"line\"><a id=\"l00286\" name=\"l00286\"></a><span class=\"lineno\">  286</span> </div>\n-<div class=\"line\"><a id=\"l00287\" name=\"l00287\"></a><span class=\"lineno\">  287</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00288\" name=\"l00288\"></a><span class=\"lineno\">  288</span> </div>\n-<div class=\"line\"><a id=\"l00289\" name=\"l00289\"></a><span class=\"lineno\">  289</span>    <span class=\"comment\">//  Debugging aides:</span></div>\n-<div class=\"line\"><a id=\"l00290\" name=\"l00290\"></a><span class=\"lineno\">  290</span>    <span class=\"keyword\">enum</span> TopologyError {</div>\n-<div class=\"line\"><a id=\"l00291\" name=\"l00291\"></a><span class=\"lineno\">  291</span>        TOPOLOGY_MISSING_EDGE_FACES=0,</div>\n-<div class=\"line\"><a id=\"l00292\" name=\"l00292\"></a><span class=\"lineno\">  292</span>        TOPOLOGY_MISSING_EDGE_VERTS,</div>\n-<div class=\"line\"><a id=\"l00293\" name=\"l00293\"></a><span class=\"lineno\">  293</span>        TOPOLOGY_MISSING_FACE_EDGES,</div>\n-<div class=\"line\"><a id=\"l00294\" name=\"l00294\"></a><span class=\"lineno\">  294</span>        TOPOLOGY_MISSING_FACE_VERTS,</div>\n-<div class=\"line\"><a id=\"l00295\" name=\"l00295\"></a><span class=\"lineno\">  295</span>        TOPOLOGY_MISSING_VERT_FACES,</div>\n-<div class=\"line\"><a id=\"l00296\" name=\"l00296\"></a><span class=\"lineno\">  296</span>        TOPOLOGY_MISSING_VERT_EDGES,</div>\n-<div class=\"line\"><a id=\"l00297\" name=\"l00297\"></a><span class=\"lineno\">  297</span> </div>\n-<div class=\"line\"><a id=\"l00298\" name=\"l00298\"></a><span class=\"lineno\">  298</span>        TOPOLOGY_FAILED_CORRELATION_EDGE_FACE,</div>\n-<div class=\"line\"><a id=\"l00299\" name=\"l00299\"></a><span class=\"lineno\">  299</span>        TOPOLOGY_FAILED_CORRELATION_FACE_VERT,</div>\n-<div class=\"line\"><a id=\"l00300\" name=\"l00300\"></a><span class=\"lineno\">  300</span>        TOPOLOGY_FAILED_CORRELATION_FACE_EDGE,</div>\n-<div class=\"line\"><a id=\"l00301\" name=\"l00301\"></a><span class=\"lineno\">  301</span> </div>\n-<div class=\"line\"><a id=\"l00302\" name=\"l00302\"></a><span class=\"lineno\">  302</span>        TOPOLOGY_FAILED_ORIENTATION_INCIDENT_EDGE,</div>\n-<div class=\"line\"><a id=\"l00303\" name=\"l00303\"></a><span class=\"lineno\">  303</span>        TOPOLOGY_FAILED_ORIENTATION_INCIDENT_FACE,</div>\n-<div class=\"line\"><a id=\"l00304\" name=\"l00304\"></a><span class=\"lineno\">  304</span>        TOPOLOGY_FAILED_ORIENTATION_INCIDENT_FACES_EDGES,</div>\n-<div class=\"line\"><a id=\"l00305\" name=\"l00305\"></a><span class=\"lineno\">  305</span> </div>\n-<div class=\"line\"><a id=\"l00306\" name=\"l00306\"></a><span class=\"lineno\">  306</span>        TOPOLOGY_DEGENERATE_EDGE,</div>\n-<div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\">  307</span>        TOPOLOGY_NON_MANIFOLD_EDGE,</div>\n-<div class=\"line\"><a id=\"l00308\" name=\"l00308\"></a><span class=\"lineno\">  308</span> </div>\n-<div class=\"line\"><a id=\"l00309\" name=\"l00309\"></a><span class=\"lineno\">  309</span>        TOPOLOGY_INVALID_CREASE_EDGE,</div>\n-<div class=\"line\"><a id=\"l00310\" name=\"l00310\"></a><span class=\"lineno\">  310</span>        TOPOLOGY_INVALID_CREASE_VERT</div>\n-<div class=\"line\"><a id=\"l00311\" name=\"l00311\"></a><span class=\"lineno\">  311</span>    };</div>\n-<div class=\"line\"><a id=\"l00312\" name=\"l00312\"></a><span class=\"lineno\">  312</span> </div>\n-<div class=\"line\"><a id=\"l00313\" name=\"l00313\"></a><span class=\"lineno\">  313</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">char</span> <span class=\"keyword\">const</span> * getTopologyErrorString(TopologyError errCode);</div>\n-<div class=\"line\"><a id=\"l00314\" name=\"l00314\"></a><span class=\"lineno\">  314</span> </div>\n-<div class=\"line\"><a id=\"l00315\" name=\"l00315\"></a><span class=\"lineno\">  315</span>    <span class=\"keyword\">typedef</span> void (* ValidationCallback)(TopologyError errCode, <span class=\"keywordtype\">char</span> <span class=\"keyword\">const</span> * msg, <span class=\"keywordtype\">void</span> <span class=\"keyword\">const</span> * clientData);</div>\n-<div class=\"line\"><a id=\"l00316\" name=\"l00316\"></a><span class=\"lineno\">  316</span> </div>\n-<div class=\"line\"><a id=\"l00317\" name=\"l00317\"></a><span class=\"lineno\">  317</span>    <span class=\"keywordtype\">bool</span> validateTopology(ValidationCallback callback=0, <span class=\"keywordtype\">void</span> <span class=\"keyword\">const</span> * clientData=0) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00318\" name=\"l00318\"></a><span class=\"lineno\">  318</span> </div>\n-<div class=\"line\"><a id=\"l00319\" name=\"l00319\"></a><span class=\"lineno\">  319</span>    <span class=\"keywordtype\">void</span> print(<span class=\"keyword\">const</span> Refinement* parentRefinement = 0) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00320\" name=\"l00320\"></a><span class=\"lineno\">  320</span> </div>\n-<div class=\"line\"><a id=\"l00321\" name=\"l00321\"></a><span class=\"lineno\">  321</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00322\" name=\"l00322\"></a><span class=\"lineno\">  322</span>    <span class=\"comment\">//  High-level topology queries -- these may be moved elsewhere:</span></div>\n-<div class=\"line\"><a id=\"l00323\" name=\"l00323\"></a><span class=\"lineno\">  323</span> </div>\n-<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\">  324</span>    <span class=\"keywordtype\">bool</span> isSingleCreasePatch(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> face, <span class=\"keywordtype\">float</span>* sharpnessOut=NULL, <span class=\"keywordtype\">int</span>* rotationOut=NULL) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\">  325</span> </div>\n-<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\">  326</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\">  327</span>    <span class=\"comment\">//  When inspecting topology, the component tags -- particularly VTag and ETag -- are most</span></div>\n-<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\">  328</span>    <span class=\"comment\">//  often inspected in groups for the face to which they belong.  They are designed to be</span></div>\n-<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\">  329</span>    <span class=\"comment\">//  bitwise OR&#39;d (the result then referred to as a &quot;composite&quot; tag) to make quick decisions</span></div>\n-<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\">  330</span>    <span class=\"comment\">//  about the face as a whole to avoid tedious topological inspection.</span></div>\n-<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\">  331</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\">  332</span>    <span class=\"comment\">//  The same logic can be applied to topology in a FVar channel when tags specific to that</span></div>\n-<div class=\"line\"><a id=\"l00333\" name=\"l00333\"></a><span class=\"lineno\">  333</span>    <span class=\"comment\">//  channel are used.  Note that the VTags apply to the FVar values assigned to the corners</span></div>\n-<div class=\"line\"><a id=\"l00334\" name=\"l00334\"></a><span class=\"lineno\">  334</span>    <span class=\"comment\">//  of the face and not the vertex as a whole.  The &quot;composite&quot; face-varying VTag for a</span></div>\n-<div class=\"line\"><a id=\"l00335\" name=\"l00335\"></a><span class=\"lineno\">  335</span>    <span class=\"comment\">//  vertex is the union of VTags of all distinct FVar values for that vertex.</span></div>\n-<div class=\"line\"><a id=\"l00336\" name=\"l00336\"></a><span class=\"lineno\">  336</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00337\" name=\"l00337\"></a><span class=\"lineno\">  337</span>    <span class=\"keywordtype\">bool</span> doesVertexFVarTopologyMatch(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vIndex, <span class=\"keywordtype\">int</span> fvarChannel) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00338\" name=\"l00338\"></a><span class=\"lineno\">  338</span>    <span class=\"keywordtype\">bool</span> doesFaceFVarTopologyMatch(  <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> fIndex, <span class=\"keywordtype\">int</span> fvarChannel) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00339\" name=\"l00339\"></a><span class=\"lineno\">  339</span>    <span class=\"keywordtype\">bool</span> doesEdgeFVarTopologyMatch(  <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> eIndex, <span class=\"keywordtype\">int</span> fvarChannel) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00340\" name=\"l00340\"></a><span class=\"lineno\">  340</span> </div>\n-<div class=\"line\"><a id=\"l00341\" name=\"l00341\"></a><span class=\"lineno\">  341</span>    <span class=\"keywordtype\">void</span> getFaceVTags(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> fIndex, VTag vTags[], <span class=\"keywordtype\">int</span> fvarChannel = -1) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00342\" name=\"l00342\"></a><span class=\"lineno\">  342</span>    <span class=\"keywordtype\">void</span> getFaceETags(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> fIndex, ETag eTags[], <span class=\"keywordtype\">int</span> fvarChannel = -1) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00343\" name=\"l00343\"></a><span class=\"lineno\">  343</span> </div>\n-<div class=\"line\"><a id=\"l00344\" name=\"l00344\"></a><span class=\"lineno\">  344</span>    VTag getFaceCompositeVTag(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> fIndex, <span class=\"keywordtype\">int</span> fvarChannel = -1) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00345\" name=\"l00345\"></a><span class=\"lineno\">  345</span>    VTag getFaceCompositeVTag(<a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a> &amp; fVerts) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00346\" name=\"l00346\"></a><span class=\"lineno\">  346</span> </div>\n-<div class=\"line\"><a id=\"l00347\" name=\"l00347\"></a><span class=\"lineno\">  347</span>    VTag getVertexCompositeFVarVTag(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vIndex, <span class=\"keywordtype\">int</span> fvarChannel) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00348\" name=\"l00348\"></a><span class=\"lineno\">  348</span> </div>\n-<div class=\"line\"><a id=\"l00349\" name=\"l00349\"></a><span class=\"lineno\">  349</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00350\" name=\"l00350\"></a><span class=\"lineno\">  350</span>    <span class=\"comment\">//  When gathering &quot;patch points&quot; we may want the indices of the vertices or the corresponding</span></div>\n-<div class=\"line\"><a id=\"l00351\" name=\"l00351\"></a><span class=\"lineno\">  351</span>    <span class=\"comment\">//  FVar values for a particular channel.  Both are represented and equally accessible within</span></div>\n-<div class=\"line\"><a id=\"l00352\" name=\"l00352\"></a><span class=\"lineno\">  352</span>    <span class=\"comment\">//  the faces, so we allow all to be returned through these methods.  Setting the optional FVar</span></div>\n-<div class=\"line\"><a id=\"l00353\" name=\"l00353\"></a><span class=\"lineno\">  353</span>    <span class=\"comment\">//  channel to -1 will retrieve indices of vertices instead of FVar values:</span></div>\n-<div class=\"line\"><a id=\"l00354\" name=\"l00354\"></a><span class=\"lineno\">  354</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00355\" name=\"l00355\"></a><span class=\"lineno\">  355</span>    <span class=\"keywordtype\">int</span> gatherQuadLinearPatchPoints(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> fIndex, <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> patchPoints[], <span class=\"keywordtype\">int</span> rotation = 0,</div>\n-<div class=\"line\"><a id=\"l00356\" name=\"l00356\"></a><span class=\"lineno\">  356</span>                                                                       <span class=\"keywordtype\">int</span> fvarChannel = -1) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00357\" name=\"l00357\"></a><span class=\"lineno\">  357</span> </div>\n-<div class=\"line\"><a id=\"l00358\" name=\"l00358\"></a><span class=\"lineno\">  358</span>    <span class=\"keywordtype\">int</span> gatherQuadRegularInteriorPatchPoints(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> fIndex, <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> patchPoints[], <span class=\"keywordtype\">int</span> rotation = 0,</div>\n-<div class=\"line\"><a id=\"l00359\" name=\"l00359\"></a><span class=\"lineno\">  359</span>                                                                                <span class=\"keywordtype\">int</span> fvarChannel = -1) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00360\" name=\"l00360\"></a><span class=\"lineno\">  360</span>    <span class=\"keywordtype\">int</span> gatherQuadRegularBoundaryPatchPoints(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> fIndex, <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> patchPoints[], <span class=\"keywordtype\">int</span> boundaryEdgeInFace,</div>\n-<div class=\"line\"><a id=\"l00361\" name=\"l00361\"></a><span class=\"lineno\">  361</span>                                                                                <span class=\"keywordtype\">int</span> fvarChannel = -1) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00362\" name=\"l00362\"></a><span class=\"lineno\">  362</span>    <span class=\"keywordtype\">int</span> gatherQuadRegularCornerPatchPoints(  <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> fIndex, <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> patchPoints[], <span class=\"keywordtype\">int</span> cornerVertInFace,</div>\n-<div class=\"line\"><a id=\"l00363\" name=\"l00363\"></a><span class=\"lineno\">  363</span>                                                                                <span class=\"keywordtype\">int</span> fvarChannel = -1) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00364\" name=\"l00364\"></a><span class=\"lineno\">  364</span> </div>\n-<div class=\"line\"><a id=\"l00365\" name=\"l00365\"></a><span class=\"lineno\">  365</span>    <span class=\"keywordtype\">int</span> gatherQuadRegularRingAroundVertex(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vIndex, <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> ringPoints[],</div>\n-<div class=\"line\"><a id=\"l00366\" name=\"l00366\"></a><span class=\"lineno\">  366</span>                                          <span class=\"keywordtype\">int</span> fvarChannel = -1) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00367\" name=\"l00367\"></a><span class=\"lineno\">  367</span>    <span class=\"keywordtype\">int</span> gatherQuadRegularPartialRingAroundVertex(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vIndex, VSpan <span class=\"keyword\">const</span> &amp; span, <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> ringPoints[],</div>\n-<div class=\"line\"><a id=\"l00368\" name=\"l00368\"></a><span class=\"lineno\">  368</span>                                                 <span class=\"keywordtype\">int</span> fvarChannel = -1) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00369\" name=\"l00369\"></a><span class=\"lineno\">  369</span> </div>\n-<div class=\"line\"><a id=\"l00370\" name=\"l00370\"></a><span class=\"lineno\">  370</span>    <span class=\"comment\">//  WIP -- for future use, need to extend for face-varying...</span></div>\n-<div class=\"line\"><a id=\"l00371\" name=\"l00371\"></a><span class=\"lineno\">  371</span>    <span class=\"keywordtype\">int</span> gatherTriRegularInteriorPatchPoints(      <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> fIndex, <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> patchVerts[], <span class=\"keywordtype\">int</span> rotation = 0) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00372\" name=\"l00372\"></a><span class=\"lineno\">  372</span>    <span class=\"keywordtype\">int</span> gatherTriRegularBoundaryVertexPatchPoints(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> fIndex, <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> patchVerts[], <span class=\"keywordtype\">int</span> boundaryVertInFace) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00373\" name=\"l00373\"></a><span class=\"lineno\">  373</span>    <span class=\"keywordtype\">int</span> gatherTriRegularBoundaryEdgePatchPoints(  <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> fIndex, <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> patchVerts[], <span class=\"keywordtype\">int</span> boundaryEdgeInFace) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00374\" name=\"l00374\"></a><span class=\"lineno\">  374</span>    <span class=\"keywordtype\">int</span> gatherTriRegularCornerVertexPatchPoints(  <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> fIndex, <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> patchVerts[], <span class=\"keywordtype\">int</span> cornerVertInFace) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00375\" name=\"l00375\"></a><span class=\"lineno\">  375</span>    <span class=\"keywordtype\">int</span> gatherTriRegularCornerEdgePatchPoints(    <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> fIndex, <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> patchVerts[], <span class=\"keywordtype\">int</span> cornerEdgeInFace) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00376\" name=\"l00376\"></a><span class=\"lineno\">  376</span> </div>\n-<div class=\"line\"><a id=\"l00377\" name=\"l00377\"></a><span class=\"lineno\">  377</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00378\" name=\"l00378\"></a><span class=\"lineno\">  378</span>    <span class=\"comment\">//  Sizing methods used to construct a level to populate:</span></div>\n-<div class=\"line\"><a id=\"l00379\" name=\"l00379\"></a><span class=\"lineno\">  379</span>    <span class=\"keywordtype\">void</span> resizeFaces(       <span class=\"keywordtype\">int</span> numFaces);</div>\n-<div class=\"line\"><a id=\"l00380\" name=\"l00380\"></a><span class=\"lineno\">  380</span>    <span class=\"keywordtype\">void</span> resizeFaceVertices(<span class=\"keywordtype\">int</span> numFaceVertsTotal);</div>\n-<div class=\"line\"><a id=\"l00381\" name=\"l00381\"></a><span class=\"lineno\">  381</span>    <span class=\"keywordtype\">void</span> resizeFaceEdges(   <span class=\"keywordtype\">int</span> numFaceEdgesTotal);</div>\n-<div class=\"line\"><a id=\"l00382\" name=\"l00382\"></a><span class=\"lineno\">  382</span> </div>\n-<div class=\"line\"><a id=\"l00383\" name=\"l00383\"></a><span class=\"lineno\">  383</span>    <span class=\"keywordtype\">void</span> resizeEdges(    <span class=\"keywordtype\">int</span> numEdges);</div>\n-<div class=\"line\"><a id=\"l00384\" name=\"l00384\"></a><span class=\"lineno\">  384</span>    <span class=\"keywordtype\">void</span> resizeEdgeVertices();  <span class=\"comment\">// always 2*edgeCount</span></div>\n-<div class=\"line\"><a id=\"l00385\" name=\"l00385\"></a><span class=\"lineno\">  385</span>    <span class=\"keywordtype\">void</span> resizeEdgeFaces(<span class=\"keywordtype\">int</span> numEdgeFacesTotal);</div>\n-<div class=\"line\"><a id=\"l00386\" name=\"l00386\"></a><span class=\"lineno\">  386</span> </div>\n-<div class=\"line\"><a id=\"l00387\" name=\"l00387\"></a><span class=\"lineno\">  387</span>    <span class=\"keywordtype\">void</span> resizeVertices(   <span class=\"keywordtype\">int</span> numVertices);</div>\n-<div class=\"line\"><a id=\"l00388\" name=\"l00388\"></a><span class=\"lineno\">  388</span>    <span class=\"keywordtype\">void</span> resizeVertexFaces(<span class=\"keywordtype\">int</span> numVertexFacesTotal);</div>\n-<div class=\"line\"><a id=\"l00389\" name=\"l00389\"></a><span class=\"lineno\">  389</span>    <span class=\"keywordtype\">void</span> resizeVertexEdges(<span class=\"keywordtype\">int</span> numVertexEdgesTotal);</div>\n-<div class=\"line\"><a id=\"l00390\" name=\"l00390\"></a><span class=\"lineno\">  390</span> </div>\n-<div class=\"line\"><a id=\"l00391\" name=\"l00391\"></a><span class=\"lineno\">  391</span>    <span class=\"keywordtype\">void</span> setMaxValence(<span class=\"keywordtype\">int</span> maxValence);</div>\n-<div class=\"line\"><a id=\"l00392\" name=\"l00392\"></a><span class=\"lineno\">  392</span> </div>\n-<div class=\"line\"><a id=\"l00393\" name=\"l00393\"></a><span class=\"lineno\">  393</span>    <span class=\"comment\">//  Modifiers to populate the relations for each component:</span></div>\n-<div class=\"line\"><a id=\"l00394\" name=\"l00394\"></a><span class=\"lineno\">  394</span>    <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a> getFaceVertices(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex);</div>\n-<div class=\"line\"><a id=\"l00395\" name=\"l00395\"></a><span class=\"lineno\">  395</span>    <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a> getFaceEdges(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex);</div>\n-<div class=\"line\"><a id=\"l00396\" name=\"l00396\"></a><span class=\"lineno\">  396</span>    <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a> getEdgeVertices(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> edgeIndex);</div>\n-<div class=\"line\"><a id=\"l00397\" name=\"l00397\"></a><span class=\"lineno\">  397</span>    <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a> getEdgeFaces(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> edgeIndex);</div>\n-<div class=\"line\"><a id=\"l00398\" name=\"l00398\"></a><span class=\"lineno\">  398</span>    <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a> getVertexFaces(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex);</div>\n-<div class=\"line\"><a id=\"l00399\" name=\"l00399\"></a><span class=\"lineno\">  399</span>    <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a> getVertexEdges(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex);</div>\n-<div class=\"line\"><a id=\"l00400\" name=\"l00400\"></a><span class=\"lineno\">  400</span> </div>\n-<div class=\"line\"><a id=\"l00401\" name=\"l00401\"></a><span class=\"lineno\">  401</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a1e004d5c1e30ef69719d4083afe0f4ce\">LocalIndexArray</a> getEdgeFaceLocalIndices(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> edgeIndex);</div>\n-<div class=\"line\"><a id=\"l00402\" name=\"l00402\"></a><span class=\"lineno\">  402</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a1e004d5c1e30ef69719d4083afe0f4ce\">LocalIndexArray</a> getVertexFaceLocalIndices(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex);</div>\n-<div class=\"line\"><a id=\"l00403\" name=\"l00403\"></a><span class=\"lineno\">  403</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a1e004d5c1e30ef69719d4083afe0f4ce\">LocalIndexArray</a> getVertexEdgeLocalIndices(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex);</div>\n-<div class=\"line\"><a id=\"l00404\" name=\"l00404\"></a><span class=\"lineno\">  404</span> </div>\n-<div class=\"line\"><a id=\"l00405\" name=\"l00405\"></a><span class=\"lineno\">  405</span>    <span class=\"comment\">//  Replace these with access to sharpness buffers/arrays rather than elements:</span></div>\n-<div class=\"line\"><a id=\"l00406\" name=\"l00406\"></a><span class=\"lineno\">  406</span>    <span class=\"keywordtype\">float</span>&amp; getEdgeSharpness(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> edgeIndex);</div>\n-<div class=\"line\"><a id=\"l00407\" name=\"l00407\"></a><span class=\"lineno\">  407</span>    <span class=\"keywordtype\">float</span>&amp; getVertexSharpness(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex);</div>\n-<div class=\"line\"><a id=\"l00408\" name=\"l00408\"></a><span class=\"lineno\">  408</span> </div>\n-<div class=\"line\"><a id=\"l00409\" name=\"l00409\"></a><span class=\"lineno\">  409</span>    <span class=\"comment\">//  Create, destroy and populate face-varying channels:</span></div>\n-<div class=\"line\"><a id=\"l00410\" name=\"l00410\"></a><span class=\"lineno\">  410</span>    <span class=\"keywordtype\">int</span>  createFVarChannel(<span class=\"keywordtype\">int</span> fvarValueCount, Sdc::Options <span class=\"keyword\">const</span>&amp; options);</div>\n-<div class=\"line\"><a id=\"l00411\" name=\"l00411\"></a><span class=\"lineno\">  411</span>    <span class=\"keywordtype\">void</span> destroyFVarChannel(<span class=\"keywordtype\">int</span> channel);</div>\n-<div class=\"line\"><a id=\"l00412\" name=\"l00412\"></a><span class=\"lineno\">  412</span> </div>\n-<div class=\"line\"><a id=\"l00413\" name=\"l00413\"></a><span class=\"lineno\">  413</span>    <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a> getFaceFVarValues(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex, <span class=\"keywordtype\">int</span> channel);</div>\n-<div class=\"line\"><a id=\"l00414\" name=\"l00414\"></a><span class=\"lineno\">  414</span> </div>\n-<div class=\"line\"><a id=\"l00415\" name=\"l00415\"></a><span class=\"lineno\">  415</span>    <span class=\"keywordtype\">void</span> completeFVarChannelTopology(<span class=\"keywordtype\">int</span> channel, <span class=\"keywordtype\">int</span> regBoundaryValence);</div>\n-<div class=\"line\"><a id=\"l00416\" name=\"l00416\"></a><span class=\"lineno\">  416</span> </div>\n-<div class=\"line\"><a id=\"l00417\" name=\"l00417\"></a><span class=\"lineno\">  417</span>    <span class=\"comment\">//  Counts and offsets for all relation types:</span></div>\n-<div class=\"line\"><a id=\"l00418\" name=\"l00418\"></a><span class=\"lineno\">  418</span>    <span class=\"comment\">//      - these may be unwarranted if we let Refinement access members directly...</span></div>\n-<div class=\"line\"><a id=\"l00419\" name=\"l00419\"></a><span class=\"lineno\">  419</span>    <span class=\"keywordtype\">int</span> getNumFaceVertices(     <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _faceVertCountsAndOffsets[2*faceIndex]; }</div>\n-<div class=\"line\"><a id=\"l00420\" name=\"l00420\"></a><span class=\"lineno\">  420</span>    <span class=\"keywordtype\">int</span> getOffsetOfFaceVertices(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _faceVertCountsAndOffsets[2*faceIndex + 1]; }</div>\n-<div class=\"line\"><a id=\"l00421\" name=\"l00421\"></a><span class=\"lineno\">  421</span> </div>\n-<div class=\"line\"><a id=\"l00422\" name=\"l00422\"></a><span class=\"lineno\">  422</span>    <span class=\"keywordtype\">int</span> getNumFaceEdges(     <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> getNumFaceVertices(faceIndex); }</div>\n-<div class=\"line\"><a id=\"l00423\" name=\"l00423\"></a><span class=\"lineno\">  423</span>    <span class=\"keywordtype\">int</span> getOffsetOfFaceEdges(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> getOffsetOfFaceVertices(faceIndex); }</div>\n-<div class=\"line\"><a id=\"l00424\" name=\"l00424\"></a><span class=\"lineno\">  424</span> </div>\n-<div class=\"line\"><a id=\"l00425\" name=\"l00425\"></a><span class=\"lineno\">  425</span>    <span class=\"keywordtype\">int</span> getNumEdgeVertices(     <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> )<span class=\"keyword\">          const </span>{ <span class=\"keywordflow\">return</span> 2; }</div>\n-<div class=\"line\"><a id=\"l00426\" name=\"l00426\"></a><span class=\"lineno\">  426</span>    <span class=\"keywordtype\">int</span> getOffsetOfEdgeVertices(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> edgeIndex)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> 2 * edgeIndex; }</div>\n-<div class=\"line\"><a id=\"l00427\" name=\"l00427\"></a><span class=\"lineno\">  427</span> </div>\n-<div class=\"line\"><a id=\"l00428\" name=\"l00428\"></a><span class=\"lineno\">  428</span>    <span class=\"keywordtype\">int</span> getNumEdgeFaces(     <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> edgeIndex)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _edgeFaceCountsAndOffsets[2*edgeIndex]; }</div>\n-<div class=\"line\"><a id=\"l00429\" name=\"l00429\"></a><span class=\"lineno\">  429</span>    <span class=\"keywordtype\">int</span> getOffsetOfEdgeFaces(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> edgeIndex)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _edgeFaceCountsAndOffsets[2*edgeIndex + 1]; }</div>\n-<div class=\"line\"><a id=\"l00430\" name=\"l00430\"></a><span class=\"lineno\">  430</span> </div>\n-<div class=\"line\"><a id=\"l00431\" name=\"l00431\"></a><span class=\"lineno\">  431</span>    <span class=\"keywordtype\">int</span> getNumVertexFaces(     <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _vertFaceCountsAndOffsets[2*vertIndex]; }</div>\n-<div class=\"line\"><a id=\"l00432\" name=\"l00432\"></a><span class=\"lineno\">  432</span>    <span class=\"keywordtype\">int</span> getOffsetOfVertexFaces(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _vertFaceCountsAndOffsets[2*vertIndex + 1]; }</div>\n-<div class=\"line\"><a id=\"l00433\" name=\"l00433\"></a><span class=\"lineno\">  433</span> </div>\n-<div class=\"line\"><a id=\"l00434\" name=\"l00434\"></a><span class=\"lineno\">  434</span>    <span class=\"keywordtype\">int</span> getNumVertexEdges(     <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _vertEdgeCountsAndOffsets[2*vertIndex]; }</div>\n-<div class=\"line\"><a id=\"l00435\" name=\"l00435\"></a><span class=\"lineno\">  435</span>    <span class=\"keywordtype\">int</span> getOffsetOfVertexEdges(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _vertEdgeCountsAndOffsets[2*vertIndex + 1]; }</div>\n-<div class=\"line\"><a id=\"l00436\" name=\"l00436\"></a><span class=\"lineno\">  436</span> </div>\n-<div class=\"line\"><a id=\"l00437\" name=\"l00437\"></a><span class=\"lineno\">  437</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a> getFaceVertices() <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00438\" name=\"l00438\"></a><span class=\"lineno\">  438</span> </div>\n-<div class=\"line\"><a id=\"l00439\" name=\"l00439\"></a><span class=\"lineno\">  439</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00440\" name=\"l00440\"></a><span class=\"lineno\">  440</span>    <span class=\"comment\">//  Note that for some relations, the size of the relations for a child component</span></div>\n-<div class=\"line\"><a id=\"l00441\" name=\"l00441\"></a><span class=\"lineno\">  441</span>    <span class=\"comment\">//  can vary radically from its parent due to the sparsity of the refinement.  So</span></div>\n-<div class=\"line\"><a id=\"l00442\" name=\"l00442\"></a><span class=\"lineno\">  442</span>    <span class=\"comment\">//  in these cases a few additional utilities are provided to help define the set</span></div>\n-<div class=\"line\"><a id=\"l00443\" name=\"l00443\"></a><span class=\"lineno\">  443</span>    <span class=\"comment\">//  of incident components.  Assuming adequate memory has been allocated, the</span></div>\n-<div class=\"line\"><a id=\"l00444\" name=\"l00444\"></a><span class=\"lineno\">  444</span>    <span class=\"comment\">//  &quot;resize&quot; methods here initialize the set of incident components by setting</span></div>\n-<div class=\"line\"><a id=\"l00445\" name=\"l00445\"></a><span class=\"lineno\">  445</span>    <span class=\"comment\">//  both the size and the appropriate offset, while &quot;trim&quot; is use to quickly lower</span></div>\n-<div class=\"line\"><a id=\"l00446\" name=\"l00446\"></a><span class=\"lineno\">  446</span>    <span class=\"comment\">//  the size from an upper bound and nothing else.</span></div>\n-<div class=\"line\"><a id=\"l00447\" name=\"l00447\"></a><span class=\"lineno\">  447</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00448\" name=\"l00448\"></a><span class=\"lineno\">  448</span>    <span class=\"keywordtype\">void</span> resizeFaceVertices(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> FaceIndex, <span class=\"keywordtype\">int</span> count);</div>\n-<div class=\"line\"><a id=\"l00449\" name=\"l00449\"></a><span class=\"lineno\">  449</span> </div>\n-<div class=\"line\"><a id=\"l00450\" name=\"l00450\"></a><span class=\"lineno\">  450</span>    <span class=\"keywordtype\">void</span> resizeEdgeFaces(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> edgeIndex, <span class=\"keywordtype\">int</span> count);</div>\n-<div class=\"line\"><a id=\"l00451\" name=\"l00451\"></a><span class=\"lineno\">  451</span>    <span class=\"keywordtype\">void</span> trimEdgeFaces(  <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> edgeIndex, <span class=\"keywordtype\">int</span> count);</div>\n-<div class=\"line\"><a id=\"l00452\" name=\"l00452\"></a><span class=\"lineno\">  452</span> </div>\n-<div class=\"line\"><a id=\"l00453\" name=\"l00453\"></a><span class=\"lineno\">  453</span>    <span class=\"keywordtype\">void</span> resizeVertexFaces(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex, <span class=\"keywordtype\">int</span> count);</div>\n-<div class=\"line\"><a id=\"l00454\" name=\"l00454\"></a><span class=\"lineno\">  454</span>    <span class=\"keywordtype\">void</span> trimVertexFaces(  <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex, <span class=\"keywordtype\">int</span> count);</div>\n-<div class=\"line\"><a id=\"l00455\" name=\"l00455\"></a><span class=\"lineno\">  455</span> </div>\n-<div class=\"line\"><a id=\"l00456\" name=\"l00456\"></a><span class=\"lineno\">  456</span>    <span class=\"keywordtype\">void</span> resizeVertexEdges(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex, <span class=\"keywordtype\">int</span> count);</div>\n-<div class=\"line\"><a id=\"l00457\" name=\"l00457\"></a><span class=\"lineno\">  457</span>    <span class=\"keywordtype\">void</span> trimVertexEdges(  <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex, <span class=\"keywordtype\">int</span> count);</div>\n-<div class=\"line\"><a id=\"l00458\" name=\"l00458\"></a><span class=\"lineno\">  458</span> </div>\n-<div class=\"line\"><a id=\"l00459\" name=\"l00459\"></a><span class=\"lineno\">  459</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00460\" name=\"l00460\"></a><span class=\"lineno\">  460</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00461\" name=\"l00461\"></a><span class=\"lineno\">  461</span>    <span class=\"comment\">//  Initial plans were to have a few specific classes properly construct the</span></div>\n-<div class=\"line\"><a id=\"l00462\" name=\"l00462\"></a><span class=\"lineno\">  462</span>    <span class=\"comment\">//  topology from scratch, e.g. the Refinement class and a Factory class for</span></div>\n-<div class=\"line\"><a id=\"l00463\" name=\"l00463\"></a><span class=\"lineno\">  463</span>    <span class=\"comment\">//  the base level, by populating all topological relations.  The need to have</span></div>\n-<div class=\"line\"><a id=\"l00464\" name=\"l00464\"></a><span class=\"lineno\">  464</span>    <span class=\"comment\">//  a class construct full topology given only a simple face-vertex list, made</span></div>\n-<div class=\"line\"><a id=\"l00465\" name=\"l00465\"></a><span class=\"lineno\">  465</span>    <span class=\"comment\">//  it necessary to write code to define and orient all relations -- and most</span></div>\n-<div class=\"line\"><a id=\"l00466\" name=\"l00466\"></a><span class=\"lineno\">  466</span>    <span class=\"comment\">//  of that seemed best placed here.</span></div>\n-<div class=\"line\"><a id=\"l00467\" name=\"l00467\"></a><span class=\"lineno\">  467</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00468\" name=\"l00468\"></a><span class=\"lineno\">  468</span>    <span class=\"keywordtype\">bool</span> completeTopologyFromFaceVertices();</div>\n-<div class=\"line\"><a id=\"l00469\" name=\"l00469\"></a><span class=\"lineno\">  469</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> findEdge(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> v0, <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> v1, <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a> v0Edges) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00470\" name=\"l00470\"></a><span class=\"lineno\">  470</span> </div>\n-<div class=\"line\"><a id=\"l00471\" name=\"l00471\"></a><span class=\"lineno\">  471</span>    <span class=\"comment\">//  Methods supporting the above:</span></div>\n-<div class=\"line\"><a id=\"l00472\" name=\"l00472\"></a><span class=\"lineno\">  472</span>    <span class=\"keywordtype\">void</span> orientIncidentComponents();</div>\n-<div class=\"line\"><a id=\"l00473\" name=\"l00473\"></a><span class=\"lineno\">  473</span>    <span class=\"keywordtype\">bool</span> orderVertexFacesAndEdges(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vIndex, <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a>* vFaces, <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a>* vEdges) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00474\" name=\"l00474\"></a><span class=\"lineno\">  474</span>    <span class=\"keywordtype\">bool</span> orderVertexFacesAndEdges(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vIndex);</div>\n-<div class=\"line\"><a id=\"l00475\" name=\"l00475\"></a><span class=\"lineno\">  475</span>    <span class=\"keywordtype\">void</span> populateLocalIndices();</div>\n-<div class=\"line\"><a id=\"l00476\" name=\"l00476\"></a><span class=\"lineno\">  476</span> </div>\n-<div class=\"line\"><a id=\"l00477\" name=\"l00477\"></a><span class=\"lineno\">  477</span>    <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a> shareFaceVertCountsAndOffsets() <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00478\" name=\"l00478\"></a><span class=\"lineno\">  478</span> </div>\n-<div class=\"line\"><a id=\"l00479\" name=\"l00479\"></a><span class=\"lineno\">  479</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00480\" name=\"l00480\"></a><span class=\"lineno\">  480</span>    <span class=\"comment\">//  Refinement classes (including all subclasses) build a Level:</span></div>\n-<div class=\"line\"><a id=\"l00481\" name=\"l00481\"></a><span class=\"lineno\">  481</span>    <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span>Refinement;</div>\n-<div class=\"line\"><a id=\"l00482\" name=\"l00482\"></a><span class=\"lineno\">  482</span>    <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span>TriRefinement;</div>\n-<div class=\"line\"><a id=\"l00483\" name=\"l00483\"></a><span class=\"lineno\">  483</span>    <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span>QuadRefinement;</div>\n-<div class=\"line\"><a id=\"l00484\" name=\"l00484\"></a><span class=\"lineno\">  484</span> </div>\n-<div class=\"line\"><a id=\"l00485\" name=\"l00485\"></a><span class=\"lineno\">  485</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00486\" name=\"l00486\"></a><span class=\"lineno\">  486</span>    <span class=\"comment\">//  A Level is independent of subdivision scheme or options.  While it may have been</span></div>\n-<div class=\"line\"><a id=\"l00487\" name=\"l00487\"></a><span class=\"lineno\">  487</span>    <span class=\"comment\">//  affected by them in its construction, they are not associated with it -- a Level</span></div>\n-<div class=\"line\"><a id=\"l00488\" name=\"l00488\"></a><span class=\"lineno\">  488</span>    <span class=\"comment\">//  is pure topology and any subdivision parameters are external.</span></div>\n-<div class=\"line\"><a id=\"l00489\" name=\"l00489\"></a><span class=\"lineno\">  489</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00490\" name=\"l00490\"></a><span class=\"lineno\">  490</span> </div>\n-<div class=\"line\"><a id=\"l00491\" name=\"l00491\"></a><span class=\"lineno\">  491</span>    <span class=\"comment\">//  Simple members for inventory, etc.</span></div>\n-<div class=\"line\"><a id=\"l00492\" name=\"l00492\"></a><span class=\"lineno\">  492</span>    <span class=\"keywordtype\">int</span> _faceCount;</div>\n-<div class=\"line\"><a id=\"l00493\" name=\"l00493\"></a><span class=\"lineno\">  493</span>    <span class=\"keywordtype\">int</span> _edgeCount;</div>\n-<div class=\"line\"><a id=\"l00494\" name=\"l00494\"></a><span class=\"lineno\">  494</span>    <span class=\"keywordtype\">int</span> _vertCount;</div>\n-<div class=\"line\"><a id=\"l00495\" name=\"l00495\"></a><span class=\"lineno\">  495</span> </div>\n-<div class=\"line\"><a id=\"l00496\" name=\"l00496\"></a><span class=\"lineno\">  496</span>    <span class=\"comment\">//  The &quot;depth&quot; member is clearly useful in both the topological splitting and the</span></div>\n-<div class=\"line\"><a id=\"l00497\" name=\"l00497\"></a><span class=\"lineno\">  497</span>    <span class=\"comment\">//  stencil queries, but arguably it ties the Level to a hierarchy which counters</span></div>\n-<div class=\"line\"><a id=\"l00498\" name=\"l00498\"></a><span class=\"lineno\">  498</span>    <span class=\"comment\">//  the idea of it being independent.</span></div>\n-<div class=\"line\"><a id=\"l00499\" name=\"l00499\"></a><span class=\"lineno\">  499</span>    <span class=\"keywordtype\">int</span> _depth;</div>\n-<div class=\"line\"><a id=\"l00500\" name=\"l00500\"></a><span class=\"lineno\">  500</span> </div>\n-<div class=\"line\"><a id=\"l00501\" name=\"l00501\"></a><span class=\"lineno\">  501</span>    <span class=\"comment\">//  Maxima to help clients manage sizing of data buffers.  Given &quot;max valence&quot;,</span></div>\n-<div class=\"line\"><a id=\"l00502\" name=\"l00502\"></a><span class=\"lineno\">  502</span>    <span class=\"comment\">//  the &quot;max edge faces&quot; is strictly redundant as it will always be less, but </span></div>\n-<div class=\"line\"><a id=\"l00503\" name=\"l00503\"></a><span class=\"lineno\">  503</span>    <span class=\"comment\">//  since it will typically be so much less (i.e. 2) it is kept for now.</span></div>\n-<div class=\"line\"><a id=\"l00504\" name=\"l00504\"></a><span class=\"lineno\">  504</span>    <span class=\"keywordtype\">int</span> _maxEdgeFaces;</div>\n-<div class=\"line\"><a id=\"l00505\" name=\"l00505\"></a><span class=\"lineno\">  505</span>    <span class=\"keywordtype\">int</span> _maxValence;</div>\n-<div class=\"line\"><a id=\"l00506\" name=\"l00506\"></a><span class=\"lineno\">  506</span> </div>\n-<div class=\"line\"><a id=\"l00507\" name=\"l00507\"></a><span class=\"lineno\">  507</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00508\" name=\"l00508\"></a><span class=\"lineno\">  508</span>    <span class=\"comment\">//  Topology vectors:</span></div>\n-<div class=\"line\"><a id=\"l00509\" name=\"l00509\"></a><span class=\"lineno\">  509</span>    <span class=\"comment\">//      Note that of all of these, only data for the face-edge relation is not</span></div>\n-<div class=\"line\"><a id=\"l00510\" name=\"l00510\"></a><span class=\"lineno\">  510</span>    <span class=\"comment\">//      stored in the osd::FarTables in any form.  The FarTable vectors combine</span></div>\n-<div class=\"line\"><a id=\"l00511\" name=\"l00511\"></a><span class=\"lineno\">  511</span>    <span class=\"comment\">//      the edge-vert and edge-face relations.  The eventual goal is that this</span></div>\n-<div class=\"line\"><a id=\"l00512\" name=\"l00512\"></a><span class=\"lineno\">  512</span>    <span class=\"comment\">//      data be part of the osd::Far classes and be a superset of the FarTable</span></div>\n-<div class=\"line\"><a id=\"l00513\" name=\"l00513\"></a><span class=\"lineno\">  513</span>    <span class=\"comment\">//      vectors, i.e. no data duplication or conversion.  The fact that FarTable</span></div>\n-<div class=\"line\"><a id=\"l00514\" name=\"l00514\"></a><span class=\"lineno\">  514</span>    <span class=\"comment\">//      already stores 5 of the 6 possible relations should make the topology</span></div>\n-<div class=\"line\"><a id=\"l00515\" name=\"l00515\"></a><span class=\"lineno\">  515</span>    <span class=\"comment\">//      storage as a whole a non-issue.</span></div>\n-<div class=\"line\"><a id=\"l00516\" name=\"l00516\"></a><span class=\"lineno\">  516</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00517\" name=\"l00517\"></a><span class=\"lineno\">  517</span>    <span class=\"comment\">//      The vert-face-child and vert-edge-child indices are also arguably not</span></div>\n-<div class=\"line\"><a id=\"l00518\" name=\"l00518\"></a><span class=\"lineno\">  518</span>    <span class=\"comment\">//      a topology relation but more one for parent/child relations.  But it is</span></div>\n-<div class=\"line\"><a id=\"l00519\" name=\"l00519\"></a><span class=\"lineno\">  519</span>    <span class=\"comment\">//      a topological relationship, and if named differently would not likely</span></div>\n-<div class=\"line\"><a id=\"l00520\" name=\"l00520\"></a><span class=\"lineno\">  520</span>    <span class=\"comment\">//      raise this.  It has been named with &quot;child&quot; in the name as it does play</span></div>\n-<div class=\"line\"><a id=\"l00521\" name=\"l00521\"></a><span class=\"lineno\">  521</span>    <span class=\"comment\">//      a more significant role during subdivision in mapping between parent</span></div>\n-<div class=\"line\"><a id=\"l00522\" name=\"l00522\"></a><span class=\"lineno\">  522</span>    <span class=\"comment\">//      and child components, and so has been named to reflect that more clearly.</span></div>\n-<div class=\"line\"><a id=\"l00523\" name=\"l00523\"></a><span class=\"lineno\">  523</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00524\" name=\"l00524\"></a><span class=\"lineno\">  524</span> </div>\n-<div class=\"line\"><a id=\"l00525\" name=\"l00525\"></a><span class=\"lineno\">  525</span>    <span class=\"comment\">//  Per-face:</span></div>\n-<div class=\"line\"><a id=\"l00526\" name=\"l00526\"></a><span class=\"lineno\">  526</span>    std::vector&lt;Index&gt; _faceVertCountsAndOffsets;  <span class=\"comment\">// 2 per face, redundant after level 0</span></div>\n-<div class=\"line\"><a id=\"l00527\" name=\"l00527\"></a><span class=\"lineno\">  527</span>    std::vector&lt;Index&gt; _faceVertIndices;           <span class=\"comment\">// 3 or 4 per face, variable at level 0</span></div>\n-<div class=\"line\"><a id=\"l00528\" name=\"l00528\"></a><span class=\"lineno\">  528</span>    std::vector&lt;Index&gt; _faceEdgeIndices;           <span class=\"comment\">// matches face-vert indices</span></div>\n-<div class=\"line\"><a id=\"l00529\" name=\"l00529\"></a><span class=\"lineno\">  529</span>    std::vector&lt;FTag&gt;  _faceTags;                  <span class=\"comment\">// 1 per face:  includes &quot;hole&quot; tag</span></div>\n-<div class=\"line\"><a id=\"l00530\" name=\"l00530\"></a><span class=\"lineno\">  530</span> </div>\n-<div class=\"line\"><a id=\"l00531\" name=\"l00531\"></a><span class=\"lineno\">  531</span>    <span class=\"comment\">//  Per-edge:</span></div>\n-<div class=\"line\"><a id=\"l00532\" name=\"l00532\"></a><span class=\"lineno\">  532</span>    std::vector&lt;Index&gt;      _edgeVertIndices;           <span class=\"comment\">// 2 per edge</span></div>\n-<div class=\"line\"><a id=\"l00533\" name=\"l00533\"></a><span class=\"lineno\">  533</span>    std::vector&lt;Index&gt;      _edgeFaceCountsAndOffsets;  <span class=\"comment\">// 2 per edge</span></div>\n-<div class=\"line\"><a id=\"l00534\" name=\"l00534\"></a><span class=\"lineno\">  534</span>    std::vector&lt;Index&gt;      _edgeFaceIndices;           <span class=\"comment\">// varies with faces per edge</span></div>\n-<div class=\"line\"><a id=\"l00535\" name=\"l00535\"></a><span class=\"lineno\">  535</span>    std::vector&lt;LocalIndex&gt; _edgeFaceLocalIndices;      <span class=\"comment\">// varies with faces per edge</span></div>\n-<div class=\"line\"><a id=\"l00536\" name=\"l00536\"></a><span class=\"lineno\">  536</span> </div>\n-<div class=\"line\"><a id=\"l00537\" name=\"l00537\"></a><span class=\"lineno\">  537</span>    std::vector&lt;float&gt;      _edgeSharpness;             <span class=\"comment\">// 1 per edge</span></div>\n-<div class=\"line\"><a id=\"l00538\" name=\"l00538\"></a><span class=\"lineno\">  538</span>    std::vector&lt;ETag&gt;       _edgeTags;                  <span class=\"comment\">// 1 per edge:  manifold, boundary, etc.</span></div>\n-<div class=\"line\"><a id=\"l00539\" name=\"l00539\"></a><span class=\"lineno\">  539</span> </div>\n-<div class=\"line\"><a id=\"l00540\" name=\"l00540\"></a><span class=\"lineno\">  540</span>    <span class=\"comment\">//  Per-vertex:</span></div>\n-<div class=\"line\"><a id=\"l00541\" name=\"l00541\"></a><span class=\"lineno\">  541</span>    std::vector&lt;Index&gt;      _vertFaceCountsAndOffsets;  <span class=\"comment\">// 2 per vertex</span></div>\n-<div class=\"line\"><a id=\"l00542\" name=\"l00542\"></a><span class=\"lineno\">  542</span>    std::vector&lt;Index&gt;      _vertFaceIndices;           <span class=\"comment\">// varies with valence</span></div>\n-<div class=\"line\"><a id=\"l00543\" name=\"l00543\"></a><span class=\"lineno\">  543</span>    std::vector&lt;LocalIndex&gt; _vertFaceLocalIndices;      <span class=\"comment\">// varies with valence, 8-bit for now</span></div>\n-<div class=\"line\"><a id=\"l00544\" name=\"l00544\"></a><span class=\"lineno\">  544</span> </div>\n-<div class=\"line\"><a id=\"l00545\" name=\"l00545\"></a><span class=\"lineno\">  545</span>    std::vector&lt;Index&gt;      _vertEdgeCountsAndOffsets;  <span class=\"comment\">// 2 per vertex</span></div>\n-<div class=\"line\"><a id=\"l00546\" name=\"l00546\"></a><span class=\"lineno\">  546</span>    std::vector&lt;Index&gt;      _vertEdgeIndices;           <span class=\"comment\">// varies with valence</span></div>\n-<div class=\"line\"><a id=\"l00547\" name=\"l00547\"></a><span class=\"lineno\">  547</span>    std::vector&lt;LocalIndex&gt; _vertEdgeLocalIndices;      <span class=\"comment\">// varies with valence, 8-bit for now</span></div>\n-<div class=\"line\"><a id=\"l00548\" name=\"l00548\"></a><span class=\"lineno\">  548</span> </div>\n-<div class=\"line\"><a id=\"l00549\" name=\"l00549\"></a><span class=\"lineno\">  549</span>    std::vector&lt;float&gt;      _vertSharpness;             <span class=\"comment\">// 1 per vertex</span></div>\n-<div class=\"line\"><a id=\"l00550\" name=\"l00550\"></a><span class=\"lineno\">  550</span>    std::vector&lt;VTag&gt;       _vertTags;                  <span class=\"comment\">// 1 per vertex:  manifold, Sdc::Rule, etc.</span></div>\n-<div class=\"line\"><a id=\"l00551\" name=\"l00551\"></a><span class=\"lineno\">  551</span> </div>\n-<div class=\"line\"><a id=\"l00552\" name=\"l00552\"></a><span class=\"lineno\">  552</span>    <span class=\"comment\">//  Face-varying channels:</span></div>\n-<div class=\"line\"><a id=\"l00553\" name=\"l00553\"></a><span class=\"lineno\">  553</span>    std::vector&lt;FVarLevel*&gt; _fvarChannels;</div>\n-<div class=\"line\"><a id=\"l00554\" name=\"l00554\"></a><span class=\"lineno\">  554</span>};</div>\n-<div class=\"line\"><a id=\"l00555\" name=\"l00555\"></a><span class=\"lineno\">  555</span> </div>\n-<div class=\"line\"><a id=\"l00556\" name=\"l00556\"></a><span class=\"lineno\">  556</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00557\" name=\"l00557\"></a><span class=\"lineno\">  557</span><span class=\"comment\">//  Access/modify the vertices incident a given face:</span></div>\n-<div class=\"line\"><a id=\"l00558\" name=\"l00558\"></a><span class=\"lineno\">  558</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00559\" name=\"l00559\"></a><span class=\"lineno\">  559</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a></div>\n-<div class=\"line\"><a id=\"l00560\" name=\"l00560\"></a><span class=\"lineno\">  560</span>Level::getFaceVertices(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00561\" name=\"l00561\"></a><span class=\"lineno\">  561</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a>(&amp;_faceVertIndices[_faceVertCountsAndOffsets[faceIndex*2+1]],</div>\n-<div class=\"line\"><a id=\"l00562\" name=\"l00562\"></a><span class=\"lineno\">  562</span>                          _faceVertCountsAndOffsets[faceIndex*2]);</div>\n-<div class=\"line\"><a id=\"l00563\" name=\"l00563\"></a><span class=\"lineno\">  563</span>}</div>\n-<div class=\"line\"><a id=\"l00564\" name=\"l00564\"></a><span class=\"lineno\">  564</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a></div>\n-<div class=\"line\"><a id=\"l00565\" name=\"l00565\"></a><span class=\"lineno\">  565</span>Level::getFaceVertices(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex) {</div>\n-<div class=\"line\"><a id=\"l00566\" name=\"l00566\"></a><span class=\"lineno\">  566</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a>(&amp;_faceVertIndices[_faceVertCountsAndOffsets[faceIndex*2+1]],</div>\n-<div class=\"line\"><a id=\"l00567\" name=\"l00567\"></a><span class=\"lineno\">  567</span>                          _faceVertCountsAndOffsets[faceIndex*2]);</div>\n-<div class=\"line\"><a id=\"l00568\" name=\"l00568\"></a><span class=\"lineno\">  568</span>}</div>\n-<div class=\"line\"><a id=\"l00569\" name=\"l00569\"></a><span class=\"lineno\">  569</span> </div>\n-<div class=\"line\"><a id=\"l00570\" name=\"l00570\"></a><span class=\"lineno\">  570</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"line\"><a id=\"l00571\" name=\"l00571\"></a><span class=\"lineno\">  571</span>Level::resizeFaceVertices(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex, <span class=\"keywordtype\">int</span> count) {</div>\n-<div class=\"line\"><a id=\"l00572\" name=\"l00572\"></a><span class=\"lineno\">  572</span> </div>\n-<div class=\"line\"><a id=\"l00573\" name=\"l00573\"></a><span class=\"lineno\">  573</span>    <span class=\"keywordtype\">int</span>* countOffsetPair = &amp;_faceVertCountsAndOffsets[faceIndex*2];</div>\n-<div class=\"line\"><a id=\"l00574\" name=\"l00574\"></a><span class=\"lineno\">  574</span> </div>\n-<div class=\"line\"><a id=\"l00575\" name=\"l00575\"></a><span class=\"lineno\">  575</span>    countOffsetPair[0] = count;</div>\n-<div class=\"line\"><a id=\"l00576\" name=\"l00576\"></a><span class=\"lineno\">  576</span>    countOffsetPair[1] = (faceIndex == 0) ? 0 : (countOffsetPair[-2] + countOffsetPair[-1]);</div>\n-<div class=\"line\"><a id=\"l00577\" name=\"l00577\"></a><span class=\"lineno\">  577</span> </div>\n-<div class=\"line\"><a id=\"l00578\" name=\"l00578\"></a><span class=\"lineno\">  578</span>    _maxValence = std::max(_maxValence, count);</div>\n-<div class=\"line\"><a id=\"l00579\" name=\"l00579\"></a><span class=\"lineno\">  579</span>}</div>\n-<div class=\"line\"><a id=\"l00580\" name=\"l00580\"></a><span class=\"lineno\">  580</span> </div>\n-<div class=\"line\"><a id=\"l00581\" name=\"l00581\"></a><span class=\"lineno\">  581</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a></div>\n-<div class=\"line\"><a id=\"l00582\" name=\"l00582\"></a><span class=\"lineno\">  582</span>Level::getFaceVertices()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00583\" name=\"l00583\"></a><span class=\"lineno\">  583</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a>(&amp;_faceVertIndices[0], (<span class=\"keywordtype\">int</span>)_faceVertIndices.size());</div>\n-<div class=\"line\"><a id=\"l00584\" name=\"l00584\"></a><span class=\"lineno\">  584</span>}</div>\n-<div class=\"line\"><a id=\"l00585\" name=\"l00585\"></a><span class=\"lineno\">  585</span> </div>\n-<div class=\"line\"><a id=\"l00586\" name=\"l00586\"></a><span class=\"lineno\">  586</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00587\" name=\"l00587\"></a><span class=\"lineno\">  587</span><span class=\"comment\">//  Access/modify the edges incident a given face:</span></div>\n-<div class=\"line\"><a id=\"l00588\" name=\"l00588\"></a><span class=\"lineno\">  588</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00589\" name=\"l00589\"></a><span class=\"lineno\">  589</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a></div>\n-<div class=\"line\"><a id=\"l00590\" name=\"l00590\"></a><span class=\"lineno\">  590</span>Level::getFaceEdges(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00591\" name=\"l00591\"></a><span class=\"lineno\">  591</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a>(&amp;_faceEdgeIndices[_faceVertCountsAndOffsets[faceIndex*2+1]],</div>\n-<div class=\"line\"><a id=\"l00592\" name=\"l00592\"></a><span class=\"lineno\">  592</span>                          _faceVertCountsAndOffsets[faceIndex*2]);</div>\n-<div class=\"line\"><a id=\"l00593\" name=\"l00593\"></a><span class=\"lineno\">  593</span>}</div>\n-<div class=\"line\"><a id=\"l00594\" name=\"l00594\"></a><span class=\"lineno\">  594</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a></div>\n-<div class=\"line\"><a id=\"l00595\" name=\"l00595\"></a><span class=\"lineno\">  595</span>Level::getFaceEdges(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex) {</div>\n-<div class=\"line\"><a id=\"l00596\" name=\"l00596\"></a><span class=\"lineno\">  596</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a>(&amp;_faceEdgeIndices[_faceVertCountsAndOffsets[faceIndex*2+1]],</div>\n-<div class=\"line\"><a id=\"l00597\" name=\"l00597\"></a><span class=\"lineno\">  597</span>                          _faceVertCountsAndOffsets[faceIndex*2]);</div>\n-<div class=\"line\"><a id=\"l00598\" name=\"l00598\"></a><span class=\"lineno\">  598</span>}</div>\n-<div class=\"line\"><a id=\"l00599\" name=\"l00599\"></a><span class=\"lineno\">  599</span> </div>\n-<div class=\"line\"><a id=\"l00600\" name=\"l00600\"></a><span class=\"lineno\">  600</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00601\" name=\"l00601\"></a><span class=\"lineno\">  601</span><span class=\"comment\">//  Access/modify the faces incident a given vertex:</span></div>\n-<div class=\"line\"><a id=\"l00602\" name=\"l00602\"></a><span class=\"lineno\">  602</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00603\" name=\"l00603\"></a><span class=\"lineno\">  603</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a></div>\n-<div class=\"line\"><a id=\"l00604\" name=\"l00604\"></a><span class=\"lineno\">  604</span>Level::getVertexFaces(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00605\" name=\"l00605\"></a><span class=\"lineno\">  605</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a>( (&amp;_vertFaceIndices[0]) + _vertFaceCountsAndOffsets[vertIndex*2+1],</div>\n-<div class=\"line\"><a id=\"l00606\" name=\"l00606\"></a><span class=\"lineno\">  606</span>                          _vertFaceCountsAndOffsets[vertIndex*2]);</div>\n-<div class=\"line\"><a id=\"l00607\" name=\"l00607\"></a><span class=\"lineno\">  607</span>}</div>\n-<div class=\"line\"><a id=\"l00608\" name=\"l00608\"></a><span class=\"lineno\">  608</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a></div>\n-<div class=\"line\"><a id=\"l00609\" name=\"l00609\"></a><span class=\"lineno\">  609</span>Level::getVertexFaces(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex) {</div>\n-<div class=\"line\"><a id=\"l00610\" name=\"l00610\"></a><span class=\"lineno\">  610</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a>( (&amp;_vertFaceIndices[0]) + _vertFaceCountsAndOffsets[vertIndex*2+1],</div>\n-<div class=\"line\"><a id=\"l00611\" name=\"l00611\"></a><span class=\"lineno\">  611</span>                          _vertFaceCountsAndOffsets[vertIndex*2]);</div>\n-<div class=\"line\"><a id=\"l00612\" name=\"l00612\"></a><span class=\"lineno\">  612</span>}</div>\n-<div class=\"line\"><a id=\"l00613\" name=\"l00613\"></a><span class=\"lineno\">  613</span> </div>\n-<div class=\"line\"><a id=\"l00614\" name=\"l00614\"></a><span class=\"lineno\">  614</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#a175f8a210a75b8180bc7ec74459492c9\">ConstLocalIndexArray</a></div>\n-<div class=\"line\"><a id=\"l00615\" name=\"l00615\"></a><span class=\"lineno\">  615</span>Level::getVertexFaceLocalIndices(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00616\" name=\"l00616\"></a><span class=\"lineno\">  616</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#a175f8a210a75b8180bc7ec74459492c9\">ConstLocalIndexArray</a>( (&amp;_vertFaceLocalIndices[0]) + _vertFaceCountsAndOffsets[vertIndex*2+1],</div>\n-<div class=\"line\"><a id=\"l00617\" name=\"l00617\"></a><span class=\"lineno\">  617</span>                               _vertFaceCountsAndOffsets[vertIndex*2]);</div>\n-<div class=\"line\"><a id=\"l00618\" name=\"l00618\"></a><span class=\"lineno\">  618</span>}</div>\n-<div class=\"line\"><a id=\"l00619\" name=\"l00619\"></a><span class=\"lineno\">  619</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#a1e004d5c1e30ef69719d4083afe0f4ce\">LocalIndexArray</a></div>\n-<div class=\"line\"><a id=\"l00620\" name=\"l00620\"></a><span class=\"lineno\">  620</span>Level::getVertexFaceLocalIndices(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex) {</div>\n-<div class=\"line\"><a id=\"l00621\" name=\"l00621\"></a><span class=\"lineno\">  621</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#a1e004d5c1e30ef69719d4083afe0f4ce\">LocalIndexArray</a>( (&amp;_vertFaceLocalIndices[0]) + _vertFaceCountsAndOffsets[vertIndex*2+1],</div>\n-<div class=\"line\"><a id=\"l00622\" name=\"l00622\"></a><span class=\"lineno\">  622</span>                               _vertFaceCountsAndOffsets[vertIndex*2]);</div>\n-<div class=\"line\"><a id=\"l00623\" name=\"l00623\"></a><span class=\"lineno\">  623</span>}</div>\n-<div class=\"line\"><a id=\"l00624\" name=\"l00624\"></a><span class=\"lineno\">  624</span> </div>\n-<div class=\"line\"><a id=\"l00625\" name=\"l00625\"></a><span class=\"lineno\">  625</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"line\"><a id=\"l00626\" name=\"l00626\"></a><span class=\"lineno\">  626</span>Level::resizeVertexFaces(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex, <span class=\"keywordtype\">int</span> count) {</div>\n-<div class=\"line\"><a id=\"l00627\" name=\"l00627\"></a><span class=\"lineno\">  627</span>    <span class=\"keywordtype\">int</span>* countOffsetPair = &amp;_vertFaceCountsAndOffsets[vertIndex*2];</div>\n-<div class=\"line\"><a id=\"l00628\" name=\"l00628\"></a><span class=\"lineno\">  628</span> </div>\n-<div class=\"line\"><a id=\"l00629\" name=\"l00629\"></a><span class=\"lineno\">  629</span>    countOffsetPair[0] = count;</div>\n-<div class=\"line\"><a id=\"l00630\" name=\"l00630\"></a><span class=\"lineno\">  630</span>    countOffsetPair[1] = (vertIndex == 0) ? 0 : (countOffsetPair[-2] + countOffsetPair[-1]);</div>\n-<div class=\"line\"><a id=\"l00631\" name=\"l00631\"></a><span class=\"lineno\">  631</span>}</div>\n-<div class=\"line\"><a id=\"l00632\" name=\"l00632\"></a><span class=\"lineno\">  632</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"line\"><a id=\"l00633\" name=\"l00633\"></a><span class=\"lineno\">  633</span>Level::trimVertexFaces(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex, <span class=\"keywordtype\">int</span> count) {</div>\n-<div class=\"line\"><a id=\"l00634\" name=\"l00634\"></a><span class=\"lineno\">  634</span>    _vertFaceCountsAndOffsets[vertIndex*2] = count;</div>\n-<div class=\"line\"><a id=\"l00635\" name=\"l00635\"></a><span class=\"lineno\">  635</span>}</div>\n-<div class=\"line\"><a id=\"l00636\" name=\"l00636\"></a><span class=\"lineno\">  636</span> </div>\n-<div class=\"line\"><a id=\"l00637\" name=\"l00637\"></a><span class=\"lineno\">  637</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00638\" name=\"l00638\"></a><span class=\"lineno\">  638</span><span class=\"comment\">//  Access/modify the edges incident a given vertex:</span></div>\n-<div class=\"line\"><a id=\"l00639\" name=\"l00639\"></a><span class=\"lineno\">  639</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00640\" name=\"l00640\"></a><span class=\"lineno\">  640</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a></div>\n-<div class=\"line\"><a id=\"l00641\" name=\"l00641\"></a><span class=\"lineno\">  641</span>Level::getVertexEdges(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00642\" name=\"l00642\"></a><span class=\"lineno\">  642</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a>( (&amp;_vertEdgeIndices[0]) +_vertEdgeCountsAndOffsets[vertIndex*2+1],</div>\n-<div class=\"line\"><a id=\"l00643\" name=\"l00643\"></a><span class=\"lineno\">  643</span>                          _vertEdgeCountsAndOffsets[vertIndex*2]);</div>\n-<div class=\"line\"><a id=\"l00644\" name=\"l00644\"></a><span class=\"lineno\">  644</span>}</div>\n-<div class=\"line\"><a id=\"l00645\" name=\"l00645\"></a><span class=\"lineno\">  645</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a></div>\n-<div class=\"line\"><a id=\"l00646\" name=\"l00646\"></a><span class=\"lineno\">  646</span>Level::getVertexEdges(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex) {</div>\n-<div class=\"line\"><a id=\"l00647\" name=\"l00647\"></a><span class=\"lineno\">  647</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a>( (&amp;_vertEdgeIndices[0]) +_vertEdgeCountsAndOffsets[vertIndex*2+1],</div>\n-<div class=\"line\"><a id=\"l00648\" name=\"l00648\"></a><span class=\"lineno\">  648</span>                          _vertEdgeCountsAndOffsets[vertIndex*2]);</div>\n-<div class=\"line\"><a id=\"l00649\" name=\"l00649\"></a><span class=\"lineno\">  649</span>}</div>\n-<div class=\"line\"><a id=\"l00650\" name=\"l00650\"></a><span class=\"lineno\">  650</span> </div>\n-<div class=\"line\"><a id=\"l00651\" name=\"l00651\"></a><span class=\"lineno\">  651</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#a175f8a210a75b8180bc7ec74459492c9\">ConstLocalIndexArray</a></div>\n-<div class=\"line\"><a id=\"l00652\" name=\"l00652\"></a><span class=\"lineno\">  652</span>Level::getVertexEdgeLocalIndices(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00653\" name=\"l00653\"></a><span class=\"lineno\">  653</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#a175f8a210a75b8180bc7ec74459492c9\">ConstLocalIndexArray</a>( (&amp;_vertEdgeLocalIndices[0]) + _vertEdgeCountsAndOffsets[vertIndex*2+1],</div>\n-<div class=\"line\"><a id=\"l00654\" name=\"l00654\"></a><span class=\"lineno\">  654</span>                               _vertEdgeCountsAndOffsets[vertIndex*2]);</div>\n-<div class=\"line\"><a id=\"l00655\" name=\"l00655\"></a><span class=\"lineno\">  655</span>}</div>\n-<div class=\"line\"><a id=\"l00656\" name=\"l00656\"></a><span class=\"lineno\">  656</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#a1e004d5c1e30ef69719d4083afe0f4ce\">LocalIndexArray</a></div>\n-<div class=\"line\"><a id=\"l00657\" name=\"l00657\"></a><span class=\"lineno\">  657</span>Level::getVertexEdgeLocalIndices(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex) {</div>\n-<div class=\"line\"><a id=\"l00658\" name=\"l00658\"></a><span class=\"lineno\">  658</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#a1e004d5c1e30ef69719d4083afe0f4ce\">LocalIndexArray</a>( (&amp;_vertEdgeLocalIndices[0]) + _vertEdgeCountsAndOffsets[vertIndex*2+1],</div>\n-<div class=\"line\"><a id=\"l00659\" name=\"l00659\"></a><span class=\"lineno\">  659</span>                               _vertEdgeCountsAndOffsets[vertIndex*2]);</div>\n-<div class=\"line\"><a id=\"l00660\" name=\"l00660\"></a><span class=\"lineno\">  660</span>}</div>\n-<div class=\"line\"><a id=\"l00661\" name=\"l00661\"></a><span class=\"lineno\">  661</span> </div>\n-<div class=\"line\"><a id=\"l00662\" name=\"l00662\"></a><span class=\"lineno\">  662</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"line\"><a id=\"l00663\" name=\"l00663\"></a><span class=\"lineno\">  663</span>Level::resizeVertexEdges(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex, <span class=\"keywordtype\">int</span> count) {</div>\n-<div class=\"line\"><a id=\"l00664\" name=\"l00664\"></a><span class=\"lineno\">  664</span>    <span class=\"keywordtype\">int</span>* countOffsetPair = &amp;_vertEdgeCountsAndOffsets[vertIndex*2];</div>\n-<div class=\"line\"><a id=\"l00665\" name=\"l00665\"></a><span class=\"lineno\">  665</span> </div>\n-<div class=\"line\"><a id=\"l00666\" name=\"l00666\"></a><span class=\"lineno\">  666</span>    countOffsetPair[0] = count;</div>\n-<div class=\"line\"><a id=\"l00667\" name=\"l00667\"></a><span class=\"lineno\">  667</span>    countOffsetPair[1] = (vertIndex == 0) ? 0 : (countOffsetPair[-2] + countOffsetPair[-1]);</div>\n-<div class=\"line\"><a id=\"l00668\" name=\"l00668\"></a><span class=\"lineno\">  668</span> </div>\n-<div class=\"line\"><a id=\"l00669\" name=\"l00669\"></a><span class=\"lineno\">  669</span>    _maxValence = std::max(_maxValence, count);</div>\n-<div class=\"line\"><a id=\"l00670\" name=\"l00670\"></a><span class=\"lineno\">  670</span>}</div>\n-<div class=\"line\"><a id=\"l00671\" name=\"l00671\"></a><span class=\"lineno\">  671</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"line\"><a id=\"l00672\" name=\"l00672\"></a><span class=\"lineno\">  672</span>Level::trimVertexEdges(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex, <span class=\"keywordtype\">int</span> count) {</div>\n-<div class=\"line\"><a id=\"l00673\" name=\"l00673\"></a><span class=\"lineno\">  673</span>    _vertEdgeCountsAndOffsets[vertIndex*2] = count;</div>\n-<div class=\"line\"><a id=\"l00674\" name=\"l00674\"></a><span class=\"lineno\">  674</span>}</div>\n-<div class=\"line\"><a id=\"l00675\" name=\"l00675\"></a><span class=\"lineno\">  675</span> </div>\n-<div class=\"line\"><a id=\"l00676\" name=\"l00676\"></a><span class=\"lineno\">  676</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"line\"><a id=\"l00677\" name=\"l00677\"></a><span class=\"lineno\">  677</span>Level::setMaxValence(<span class=\"keywordtype\">int</span> valence) {</div>\n-<div class=\"line\"><a id=\"l00678\" name=\"l00678\"></a><span class=\"lineno\">  678</span>    _maxValence = valence;</div>\n-<div class=\"line\"><a id=\"l00679\" name=\"l00679\"></a><span class=\"lineno\">  679</span>}</div>\n-<div class=\"line\"><a id=\"l00680\" name=\"l00680\"></a><span class=\"lineno\">  680</span> </div>\n-<div class=\"line\"><a id=\"l00681\" name=\"l00681\"></a><span class=\"lineno\">  681</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00682\" name=\"l00682\"></a><span class=\"lineno\">  682</span><span class=\"comment\">//  Access/modify the vertices incident a given edge:</span></div>\n-<div class=\"line\"><a id=\"l00683\" name=\"l00683\"></a><span class=\"lineno\">  683</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00684\" name=\"l00684\"></a><span class=\"lineno\">  684</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a></div>\n-<div class=\"line\"><a id=\"l00685\" name=\"l00685\"></a><span class=\"lineno\">  685</span>Level::getEdgeVertices(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> edgeIndex)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00686\" name=\"l00686\"></a><span class=\"lineno\">  686</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a>(&amp;_edgeVertIndices[edgeIndex*2], 2);</div>\n-<div class=\"line\"><a id=\"l00687\" name=\"l00687\"></a><span class=\"lineno\">  687</span>}</div>\n-<div class=\"line\"><a id=\"l00688\" name=\"l00688\"></a><span class=\"lineno\">  688</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a></div>\n-<div class=\"line\"><a id=\"l00689\" name=\"l00689\"></a><span class=\"lineno\">  689</span>Level::getEdgeVertices(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> edgeIndex) {</div>\n-<div class=\"line\"><a id=\"l00690\" name=\"l00690\"></a><span class=\"lineno\">  690</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a>(&amp;_edgeVertIndices[edgeIndex*2], 2);</div>\n-<div class=\"line\"><a id=\"l00691\" name=\"l00691\"></a><span class=\"lineno\">  691</span>}</div>\n-<div class=\"line\"><a id=\"l00692\" name=\"l00692\"></a><span class=\"lineno\">  692</span> </div>\n-<div class=\"line\"><a id=\"l00693\" name=\"l00693\"></a><span class=\"lineno\">  693</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00694\" name=\"l00694\"></a><span class=\"lineno\">  694</span><span class=\"comment\">//  Access/modify the faces incident a given edge:</span></div>\n-<div class=\"line\"><a id=\"l00695\" name=\"l00695\"></a><span class=\"lineno\">  695</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00696\" name=\"l00696\"></a><span class=\"lineno\">  696</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a></div>\n-<div class=\"line\"><a id=\"l00697\" name=\"l00697\"></a><span class=\"lineno\">  697</span>Level::getEdgeFaces(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> edgeIndex)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00698\" name=\"l00698\"></a><span class=\"lineno\">  698</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a>(&amp;_edgeFaceIndices[0] + </div>\n-<div class=\"line\"><a id=\"l00699\" name=\"l00699\"></a><span class=\"lineno\">  699</span>                           _edgeFaceCountsAndOffsets[edgeIndex*2+1],</div>\n-<div class=\"line\"><a id=\"l00700\" name=\"l00700\"></a><span class=\"lineno\">  700</span>                           _edgeFaceCountsAndOffsets[edgeIndex*2]);</div>\n-<div class=\"line\"><a id=\"l00701\" name=\"l00701\"></a><span class=\"lineno\">  701</span>}</div>\n-<div class=\"line\"><a id=\"l00702\" name=\"l00702\"></a><span class=\"lineno\">  702</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a></div>\n-<div class=\"line\"><a id=\"l00703\" name=\"l00703\"></a><span class=\"lineno\">  703</span>Level::getEdgeFaces(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> edgeIndex) {</div>\n-<div class=\"line\"><a id=\"l00704\" name=\"l00704\"></a><span class=\"lineno\">  704</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a>(&amp;_edgeFaceIndices[0] +</div>\n-<div class=\"line\"><a id=\"l00705\" name=\"l00705\"></a><span class=\"lineno\">  705</span>                      _edgeFaceCountsAndOffsets[edgeIndex*2+1],</div>\n-<div class=\"line\"><a id=\"l00706\" name=\"l00706\"></a><span class=\"lineno\">  706</span>                      _edgeFaceCountsAndOffsets[edgeIndex*2]);</div>\n-<div class=\"line\"><a id=\"l00707\" name=\"l00707\"></a><span class=\"lineno\">  707</span>}</div>\n-<div class=\"line\"><a id=\"l00708\" name=\"l00708\"></a><span class=\"lineno\">  708</span> </div>\n-<div class=\"line\"><a id=\"l00709\" name=\"l00709\"></a><span class=\"lineno\">  709</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#a175f8a210a75b8180bc7ec74459492c9\">ConstLocalIndexArray</a></div>\n-<div class=\"line\"><a id=\"l00710\" name=\"l00710\"></a><span class=\"lineno\">  710</span>Level::getEdgeFaceLocalIndices(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> edgeIndex)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00711\" name=\"l00711\"></a><span class=\"lineno\">  711</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#a175f8a210a75b8180bc7ec74459492c9\">ConstLocalIndexArray</a>(&amp;_edgeFaceLocalIndices[0] +</div>\n-<div class=\"line\"><a id=\"l00712\" name=\"l00712\"></a><span class=\"lineno\">  712</span>                                _edgeFaceCountsAndOffsets[edgeIndex*2+1],</div>\n-<div class=\"line\"><a id=\"l00713\" name=\"l00713\"></a><span class=\"lineno\">  713</span>                                _edgeFaceCountsAndOffsets[edgeIndex*2]);</div>\n-<div class=\"line\"><a id=\"l00714\" name=\"l00714\"></a><span class=\"lineno\">  714</span>}</div>\n-<div class=\"line\"><a id=\"l00715\" name=\"l00715\"></a><span class=\"lineno\">  715</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#a1e004d5c1e30ef69719d4083afe0f4ce\">LocalIndexArray</a></div>\n-<div class=\"line\"><a id=\"l00716\" name=\"l00716\"></a><span class=\"lineno\">  716</span>Level::getEdgeFaceLocalIndices(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> edgeIndex) {</div>\n-<div class=\"line\"><a id=\"l00717\" name=\"l00717\"></a><span class=\"lineno\">  717</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#a1e004d5c1e30ef69719d4083afe0f4ce\">LocalIndexArray</a>(&amp;_edgeFaceLocalIndices[0] +</div>\n-<div class=\"line\"><a id=\"l00718\" name=\"l00718\"></a><span class=\"lineno\">  718</span>                           _edgeFaceCountsAndOffsets[edgeIndex*2+1],</div>\n-<div class=\"line\"><a id=\"l00719\" name=\"l00719\"></a><span class=\"lineno\">  719</span>                           _edgeFaceCountsAndOffsets[edgeIndex*2]);</div>\n-<div class=\"line\"><a id=\"l00720\" name=\"l00720\"></a><span class=\"lineno\">  720</span>}</div>\n-<div class=\"line\"><a id=\"l00721\" name=\"l00721\"></a><span class=\"lineno\">  721</span> </div>\n-<div class=\"line\"><a id=\"l00722\" name=\"l00722\"></a><span class=\"lineno\">  722</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"line\"><a id=\"l00723\" name=\"l00723\"></a><span class=\"lineno\">  723</span>Level::resizeEdgeFaces(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> edgeIndex, <span class=\"keywordtype\">int</span> count) {</div>\n-<div class=\"line\"><a id=\"l00724\" name=\"l00724\"></a><span class=\"lineno\">  724</span>    <span class=\"keywordtype\">int</span>* countOffsetPair = &amp;_edgeFaceCountsAndOffsets[edgeIndex*2];</div>\n-<div class=\"line\"><a id=\"l00725\" name=\"l00725\"></a><span class=\"lineno\">  725</span> </div>\n-<div class=\"line\"><a id=\"l00726\" name=\"l00726\"></a><span class=\"lineno\">  726</span>    countOffsetPair[0] = count;</div>\n-<div class=\"line\"><a id=\"l00727\" name=\"l00727\"></a><span class=\"lineno\">  727</span>    countOffsetPair[1] = (edgeIndex == 0) ? 0 : (countOffsetPair[-2] + countOffsetPair[-1]);</div>\n-<div class=\"line\"><a id=\"l00728\" name=\"l00728\"></a><span class=\"lineno\">  728</span> </div>\n-<div class=\"line\"><a id=\"l00729\" name=\"l00729\"></a><span class=\"lineno\">  729</span>    _maxEdgeFaces = std::max(_maxEdgeFaces, count);</div>\n-<div class=\"line\"><a id=\"l00730\" name=\"l00730\"></a><span class=\"lineno\">  730</span>}</div>\n-<div class=\"line\"><a id=\"l00731\" name=\"l00731\"></a><span class=\"lineno\">  731</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"line\"><a id=\"l00732\" name=\"l00732\"></a><span class=\"lineno\">  732</span>Level::trimEdgeFaces(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> edgeIndex, <span class=\"keywordtype\">int</span> count) {</div>\n-<div class=\"line\"><a id=\"l00733\" name=\"l00733\"></a><span class=\"lineno\">  733</span>    _edgeFaceCountsAndOffsets[edgeIndex*2] = count;</div>\n-<div class=\"line\"><a id=\"l00734\" name=\"l00734\"></a><span class=\"lineno\">  734</span>}</div>\n-<div class=\"line\"><a id=\"l00735\" name=\"l00735\"></a><span class=\"lineno\">  735</span> </div>\n-<div class=\"line\"><a id=\"l00736\" name=\"l00736\"></a><span class=\"lineno\">  736</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00737\" name=\"l00737\"></a><span class=\"lineno\">  737</span><span class=\"comment\">//  Access/modify sharpness values:</span></div>\n-<div class=\"line\"><a id=\"l00738\" name=\"l00738\"></a><span class=\"lineno\">  738</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00739\" name=\"l00739\"></a><span class=\"lineno\">  739</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">float</span></div>\n-<div class=\"line\"><a id=\"l00740\" name=\"l00740\"></a><span class=\"lineno\">  740</span>Level::getEdgeSharpness(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> edgeIndex)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00741\" name=\"l00741\"></a><span class=\"lineno\">  741</span>    <span class=\"keywordflow\">return</span> _edgeSharpness[edgeIndex];</div>\n-<div class=\"line\"><a id=\"l00742\" name=\"l00742\"></a><span class=\"lineno\">  742</span>}</div>\n-<div class=\"line\"><a id=\"l00743\" name=\"l00743\"></a><span class=\"lineno\">  743</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">float</span>&amp;</div>\n-<div class=\"line\"><a id=\"l00744\" name=\"l00744\"></a><span class=\"lineno\">  744</span>Level::getEdgeSharpness(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> edgeIndex) {</div>\n-<div class=\"line\"><a id=\"l00745\" name=\"l00745\"></a><span class=\"lineno\">  745</span>    <span class=\"keywordflow\">return</span> _edgeSharpness[edgeIndex];</div>\n-<div class=\"line\"><a id=\"l00746\" name=\"l00746\"></a><span class=\"lineno\">  746</span>}</div>\n-<div class=\"line\"><a id=\"l00747\" name=\"l00747\"></a><span class=\"lineno\">  747</span> </div>\n-<div class=\"line\"><a id=\"l00748\" name=\"l00748\"></a><span class=\"lineno\">  748</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">float</span></div>\n-<div class=\"line\"><a id=\"l00749\" name=\"l00749\"></a><span class=\"lineno\">  749</span>Level::getVertexSharpness(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00750\" name=\"l00750\"></a><span class=\"lineno\">  750</span>    <span class=\"keywordflow\">return</span> _vertSharpness[vertIndex];</div>\n-<div class=\"line\"><a id=\"l00751\" name=\"l00751\"></a><span class=\"lineno\">  751</span>}</div>\n-<div class=\"line\"><a id=\"l00752\" name=\"l00752\"></a><span class=\"lineno\">  752</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">float</span>&amp;</div>\n-<div class=\"line\"><a id=\"l00753\" name=\"l00753\"></a><span class=\"lineno\">  753</span>Level::getVertexSharpness(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex) {</div>\n-<div class=\"line\"><a id=\"l00754\" name=\"l00754\"></a><span class=\"lineno\">  754</span>    <span class=\"keywordflow\">return</span> _vertSharpness[vertIndex];</div>\n-<div class=\"line\"><a id=\"l00755\" name=\"l00755\"></a><span class=\"lineno\">  755</span>}</div>\n-<div class=\"line\"><a id=\"l00756\" name=\"l00756\"></a><span class=\"lineno\">  756</span> </div>\n-<div class=\"line\"><a id=\"l00757\" name=\"l00757\"></a><span class=\"lineno\">  757</span><span class=\"keyword\">inline</span> <a class=\"code hl_enumeration\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78\">Sdc::Crease::Rule</a></div>\n-<div class=\"line\"><a id=\"l00758\" name=\"l00758\"></a><span class=\"lineno\">  758</span>Level::getVertexRule(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00759\" name=\"l00759\"></a><span class=\"lineno\">  759</span>    <span class=\"keywordflow\">return</span> (<a class=\"code hl_enumeration\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78\">Sdc::Crease::Rule</a>) _vertTags[vertIndex]._rule;</div>\n-<div class=\"line\"><a id=\"l00760\" name=\"l00760\"></a><span class=\"lineno\">  760</span>}</div>\n-<div class=\"line\"><a id=\"l00761\" name=\"l00761\"></a><span class=\"lineno\">  761</span> </div>\n-<div class=\"line\"><a id=\"l00762\" name=\"l00762\"></a><span class=\"lineno\">  762</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00763\" name=\"l00763\"></a><span class=\"lineno\">  763</span><span class=\"comment\">//  Access/modify hole tag:</span></div>\n-<div class=\"line\"><a id=\"l00764\" name=\"l00764\"></a><span class=\"lineno\">  764</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00765\" name=\"l00765\"></a><span class=\"lineno\">  765</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"line\"><a id=\"l00766\" name=\"l00766\"></a><span class=\"lineno\">  766</span>Level::setFaceHole(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex, <span class=\"keywordtype\">bool</span> b) {</div>\n-<div class=\"line\"><a id=\"l00767\" name=\"l00767\"></a><span class=\"lineno\">  767</span>    _faceTags[faceIndex]._hole = b;</div>\n-<div class=\"line\"><a id=\"l00768\" name=\"l00768\"></a><span class=\"lineno\">  768</span>}</div>\n-<div class=\"line\"><a id=\"l00769\" name=\"l00769\"></a><span class=\"lineno\">  769</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span></div>\n-<div class=\"line\"><a id=\"l00770\" name=\"l00770\"></a><span class=\"lineno\">  770</span>Level::isFaceHole(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00771\" name=\"l00771\"></a><span class=\"lineno\">  771</span>    <span class=\"keywordflow\">return</span> _faceTags[faceIndex]._hole;</div>\n-<div class=\"line\"><a id=\"l00772\" name=\"l00772\"></a><span class=\"lineno\">  772</span>}</div>\n-<div class=\"line\"><a id=\"l00773\" name=\"l00773\"></a><span class=\"lineno\">  773</span> </div>\n-<div class=\"line\"><a id=\"l00774\" name=\"l00774\"></a><span class=\"lineno\">  774</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00775\" name=\"l00775\"></a><span class=\"lineno\">  775</span><span class=\"comment\">//  Access/modify non-manifold tags:</span></div>\n-<div class=\"line\"><a id=\"l00776\" name=\"l00776\"></a><span class=\"lineno\">  776</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00777\" name=\"l00777\"></a><span class=\"lineno\">  777</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"line\"><a id=\"l00778\" name=\"l00778\"></a><span class=\"lineno\">  778</span>Level::setEdgeNonManifold(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> edgeIndex, <span class=\"keywordtype\">bool</span> b) {</div>\n-<div class=\"line\"><a id=\"l00779\" name=\"l00779\"></a><span class=\"lineno\">  779</span>    _edgeTags[edgeIndex]._nonManifold = b;</div>\n-<div class=\"line\"><a id=\"l00780\" name=\"l00780\"></a><span class=\"lineno\">  780</span>}</div>\n-<div class=\"line\"><a id=\"l00781\" name=\"l00781\"></a><span class=\"lineno\">  781</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span></div>\n-<div class=\"line\"><a id=\"l00782\" name=\"l00782\"></a><span class=\"lineno\">  782</span>Level::isEdgeNonManifold(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> edgeIndex)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00783\" name=\"l00783\"></a><span class=\"lineno\">  783</span>    <span class=\"keywordflow\">return</span> _edgeTags[edgeIndex]._nonManifold;</div>\n-<div class=\"line\"><a id=\"l00784\" name=\"l00784\"></a><span class=\"lineno\">  784</span>}</div>\n-<div class=\"line\"><a id=\"l00785\" name=\"l00785\"></a><span class=\"lineno\">  785</span> </div>\n-<div class=\"line\"><a id=\"l00786\" name=\"l00786\"></a><span class=\"lineno\">  786</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"line\"><a id=\"l00787\" name=\"l00787\"></a><span class=\"lineno\">  787</span>Level::setVertexNonManifold(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex, <span class=\"keywordtype\">bool</span> b) {</div>\n-<div class=\"line\"><a id=\"l00788\" name=\"l00788\"></a><span class=\"lineno\">  788</span>    _vertTags[vertIndex]._nonManifold = b;</div>\n-<div class=\"line\"><a id=\"l00789\" name=\"l00789\"></a><span class=\"lineno\">  789</span>}</div>\n-<div class=\"line\"><a id=\"l00790\" name=\"l00790\"></a><span class=\"lineno\">  790</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span></div>\n-<div class=\"line\"><a id=\"l00791\" name=\"l00791\"></a><span class=\"lineno\">  791</span>Level::isVertexNonManifold(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00792\" name=\"l00792\"></a><span class=\"lineno\">  792</span>    <span class=\"keywordflow\">return</span> _vertTags[vertIndex]._nonManifold;</div>\n-<div class=\"line\"><a id=\"l00793\" name=\"l00793\"></a><span class=\"lineno\">  793</span>}</div>\n-<div class=\"line\"><a id=\"l00794\" name=\"l00794\"></a><span class=\"lineno\">  794</span> </div>\n-<div class=\"line\"><a id=\"l00795\" name=\"l00795\"></a><span class=\"lineno\">  795</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00796\" name=\"l00796\"></a><span class=\"lineno\">  796</span><span class=\"comment\">//  Sizing methods to allocate space:</span></div>\n-<div class=\"line\"><a id=\"l00797\" name=\"l00797\"></a><span class=\"lineno\">  797</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00798\" name=\"l00798\"></a><span class=\"lineno\">  798</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"line\"><a id=\"l00799\" name=\"l00799\"></a><span class=\"lineno\">  799</span>Level::resizeFaces(<span class=\"keywordtype\">int</span> faceCount) {</div>\n-<div class=\"line\"><a id=\"l00800\" name=\"l00800\"></a><span class=\"lineno\">  800</span>    _faceCount = faceCount;</div>\n-<div class=\"line\"><a id=\"l00801\" name=\"l00801\"></a><span class=\"lineno\">  801</span>    _faceVertCountsAndOffsets.resize(2 * faceCount);</div>\n-<div class=\"line\"><a id=\"l00802\" name=\"l00802\"></a><span class=\"lineno\">  802</span> </div>\n-<div class=\"line\"><a id=\"l00803\" name=\"l00803\"></a><span class=\"lineno\">  803</span>    _faceTags.resize(faceCount);</div>\n-<div class=\"line\"><a id=\"l00804\" name=\"l00804\"></a><span class=\"lineno\">  804</span>    std::memset((<span class=\"keywordtype\">void</span>*) &amp;_faceTags[0], 0, _faceCount * <span class=\"keyword\">sizeof</span>(FTag));</div>\n-<div class=\"line\"><a id=\"l00805\" name=\"l00805\"></a><span class=\"lineno\">  805</span>}</div>\n-<div class=\"line\"><a id=\"l00806\" name=\"l00806\"></a><span class=\"lineno\">  806</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"line\"><a id=\"l00807\" name=\"l00807\"></a><span class=\"lineno\">  807</span>Level::resizeFaceVertices(<span class=\"keywordtype\">int</span> totalFaceVertCount) {</div>\n-<div class=\"line\"><a id=\"l00808\" name=\"l00808\"></a><span class=\"lineno\">  808</span>    _faceVertIndices.resize(totalFaceVertCount);</div>\n-<div class=\"line\"><a id=\"l00809\" name=\"l00809\"></a><span class=\"lineno\">  809</span>}</div>\n-<div class=\"line\"><a id=\"l00810\" name=\"l00810\"></a><span class=\"lineno\">  810</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"line\"><a id=\"l00811\" name=\"l00811\"></a><span class=\"lineno\">  811</span>Level::resizeFaceEdges(<span class=\"keywordtype\">int</span> totalFaceEdgeCount) {</div>\n-<div class=\"line\"><a id=\"l00812\" name=\"l00812\"></a><span class=\"lineno\">  812</span>    _faceEdgeIndices.resize(totalFaceEdgeCount);</div>\n-<div class=\"line\"><a id=\"l00813\" name=\"l00813\"></a><span class=\"lineno\">  813</span>}</div>\n-<div class=\"line\"><a id=\"l00814\" name=\"l00814\"></a><span class=\"lineno\">  814</span> </div>\n-<div class=\"line\"><a id=\"l00815\" name=\"l00815\"></a><span class=\"lineno\">  815</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"line\"><a id=\"l00816\" name=\"l00816\"></a><span class=\"lineno\">  816</span>Level::resizeEdges(<span class=\"keywordtype\">int</span> edgeCount) {</div>\n-<div class=\"line\"><a id=\"l00817\" name=\"l00817\"></a><span class=\"lineno\">  817</span> </div>\n-<div class=\"line\"><a id=\"l00818\" name=\"l00818\"></a><span class=\"lineno\">  818</span>    _edgeCount = edgeCount;</div>\n-<div class=\"line\"><a id=\"l00819\" name=\"l00819\"></a><span class=\"lineno\">  819</span>    _edgeFaceCountsAndOffsets.resize(2 * edgeCount);</div>\n-<div class=\"line\"><a id=\"l00820\" name=\"l00820\"></a><span class=\"lineno\">  820</span> </div>\n-<div class=\"line\"><a id=\"l00821\" name=\"l00821\"></a><span class=\"lineno\">  821</span>    _edgeSharpness.resize(edgeCount);</div>\n-<div class=\"line\"><a id=\"l00822\" name=\"l00822\"></a><span class=\"lineno\">  822</span>    _edgeTags.resize(edgeCount);</div>\n-<div class=\"line\"><a id=\"l00823\" name=\"l00823\"></a><span class=\"lineno\">  823</span> </div>\n-<div class=\"line\"><a id=\"l00824\" name=\"l00824\"></a><span class=\"lineno\">  824</span>    <span class=\"keywordflow\">if</span> (edgeCount&gt;0) {</div>\n-<div class=\"line\"><a id=\"l00825\" name=\"l00825\"></a><span class=\"lineno\">  825</span>        std::memset((<span class=\"keywordtype\">void</span>*) &amp;_edgeTags[0], 0, _edgeCount * <span class=\"keyword\">sizeof</span>(ETag));</div>\n-<div class=\"line\"><a id=\"l00826\" name=\"l00826\"></a><span class=\"lineno\">  826</span>    }</div>\n-<div class=\"line\"><a id=\"l00827\" name=\"l00827\"></a><span class=\"lineno\">  827</span>}</div>\n-<div class=\"line\"><a id=\"l00828\" name=\"l00828\"></a><span class=\"lineno\">  828</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"line\"><a id=\"l00829\" name=\"l00829\"></a><span class=\"lineno\">  829</span>Level::resizeEdgeVertices() {</div>\n-<div class=\"line\"><a id=\"l00830\" name=\"l00830\"></a><span class=\"lineno\">  830</span> </div>\n-<div class=\"line\"><a id=\"l00831\" name=\"l00831\"></a><span class=\"lineno\">  831</span>    _edgeVertIndices.resize(2 * _edgeCount);</div>\n-<div class=\"line\"><a id=\"l00832\" name=\"l00832\"></a><span class=\"lineno\">  832</span>}</div>\n-<div class=\"line\"><a id=\"l00833\" name=\"l00833\"></a><span class=\"lineno\">  833</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"line\"><a id=\"l00834\" name=\"l00834\"></a><span class=\"lineno\">  834</span>Level::resizeEdgeFaces(<span class=\"keywordtype\">int</span> totalEdgeFaceCount) {</div>\n-<div class=\"line\"><a id=\"l00835\" name=\"l00835\"></a><span class=\"lineno\">  835</span> </div>\n-<div class=\"line\"><a id=\"l00836\" name=\"l00836\"></a><span class=\"lineno\">  836</span>    _edgeFaceIndices.resize(totalEdgeFaceCount);</div>\n-<div class=\"line\"><a id=\"l00837\" name=\"l00837\"></a><span class=\"lineno\">  837</span>    _edgeFaceLocalIndices.resize(totalEdgeFaceCount);</div>\n-<div class=\"line\"><a id=\"l00838\" name=\"l00838\"></a><span class=\"lineno\">  838</span>}</div>\n-<div class=\"line\"><a id=\"l00839\" name=\"l00839\"></a><span class=\"lineno\">  839</span> </div>\n-<div class=\"line\"><a id=\"l00840\" name=\"l00840\"></a><span class=\"lineno\">  840</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"line\"><a id=\"l00841\" name=\"l00841\"></a><span class=\"lineno\">  841</span>Level::resizeVertices(<span class=\"keywordtype\">int</span> vertCount) {</div>\n-<div class=\"line\"><a id=\"l00842\" name=\"l00842\"></a><span class=\"lineno\">  842</span> </div>\n-<div class=\"line\"><a id=\"l00843\" name=\"l00843\"></a><span class=\"lineno\">  843</span>    _vertCount = vertCount;</div>\n-<div class=\"line\"><a id=\"l00844\" name=\"l00844\"></a><span class=\"lineno\">  844</span>    _vertFaceCountsAndOffsets.resize(2 * vertCount);</div>\n-<div class=\"line\"><a id=\"l00845\" name=\"l00845\"></a><span class=\"lineno\">  845</span>    _vertEdgeCountsAndOffsets.resize(2 * vertCount);</div>\n-<div class=\"line\"><a id=\"l00846\" name=\"l00846\"></a><span class=\"lineno\">  846</span> </div>\n-<div class=\"line\"><a id=\"l00847\" name=\"l00847\"></a><span class=\"lineno\">  847</span>    _vertSharpness.resize(vertCount);</div>\n-<div class=\"line\"><a id=\"l00848\" name=\"l00848\"></a><span class=\"lineno\">  848</span>    _vertTags.resize(vertCount);</div>\n-<div class=\"line\"><a id=\"l00849\" name=\"l00849\"></a><span class=\"lineno\">  849</span>    std::memset((<span class=\"keywordtype\">void</span>*) &amp;_vertTags[0], 0, _vertCount * <span class=\"keyword\">sizeof</span>(VTag));</div>\n-<div class=\"line\"><a id=\"l00850\" name=\"l00850\"></a><span class=\"lineno\">  850</span>}</div>\n-<div class=\"line\"><a id=\"l00851\" name=\"l00851\"></a><span class=\"lineno\">  851</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"line\"><a id=\"l00852\" name=\"l00852\"></a><span class=\"lineno\">  852</span>Level::resizeVertexFaces(<span class=\"keywordtype\">int</span> totalVertFaceCount) {</div>\n-<div class=\"line\"><a id=\"l00853\" name=\"l00853\"></a><span class=\"lineno\">  853</span> </div>\n-<div class=\"line\"><a id=\"l00854\" name=\"l00854\"></a><span class=\"lineno\">  854</span>    _vertFaceIndices.resize(totalVertFaceCount);</div>\n-<div class=\"line\"><a id=\"l00855\" name=\"l00855\"></a><span class=\"lineno\">  855</span>    _vertFaceLocalIndices.resize(totalVertFaceCount);</div>\n-<div class=\"line\"><a id=\"l00856\" name=\"l00856\"></a><span class=\"lineno\">  856</span>}</div>\n-<div class=\"line\"><a id=\"l00857\" name=\"l00857\"></a><span class=\"lineno\">  857</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"line\"><a id=\"l00858\" name=\"l00858\"></a><span class=\"lineno\">  858</span>Level::resizeVertexEdges(<span class=\"keywordtype\">int</span> totalVertEdgeCount) {</div>\n-<div class=\"line\"><a id=\"l00859\" name=\"l00859\"></a><span class=\"lineno\">  859</span> </div>\n-<div class=\"line\"><a id=\"l00860\" name=\"l00860\"></a><span class=\"lineno\">  860</span>    _vertEdgeIndices.resize(totalVertEdgeCount);</div>\n-<div class=\"line\"><a id=\"l00861\" name=\"l00861\"></a><span class=\"lineno\">  861</span>    _vertEdgeLocalIndices.resize(totalVertEdgeCount);</div>\n-<div class=\"line\"><a id=\"l00862\" name=\"l00862\"></a><span class=\"lineno\">  862</span>}</div>\n-<div class=\"line\"><a id=\"l00863\" name=\"l00863\"></a><span class=\"lineno\">  863</span> </div>\n-<div class=\"line\"><a id=\"l00864\" name=\"l00864\"></a><span class=\"lineno\">  864</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a></div>\n-<div class=\"line\"><a id=\"l00865\" name=\"l00865\"></a><span class=\"lineno\">  865</span>Level::shareFaceVertCountsAndOffsets()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00866\" name=\"l00866\"></a><span class=\"lineno\">  866</span>    <span class=\"comment\">// XXXX manuelk we have to force const casting here (classes don&#39;t &#39;share&#39;</span></div>\n-<div class=\"line\"><a id=\"l00867\" name=\"l00867\"></a><span class=\"lineno\">  867</span>    <span class=\"comment\">// members usually...)</span></div>\n-<div class=\"line\"><a id=\"l00868\" name=\"l00868\"></a><span class=\"lineno\">  868</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a>(<span class=\"keyword\">const_cast&lt;</span><a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> *<span class=\"keyword\">&gt;</span>(&amp;_faceVertCountsAndOffsets[0]),</div>\n-<div class=\"line\"><a id=\"l00869\" name=\"l00869\"></a><span class=\"lineno\">  869</span>        (<span class=\"keywordtype\">int</span>)_faceVertCountsAndOffsets.size());</div>\n-<div class=\"line\"><a id=\"l00870\" name=\"l00870\"></a><span class=\"lineno\">  870</span>}</div>\n-<div class=\"line\"><a id=\"l00871\" name=\"l00871\"></a><span class=\"lineno\">  871</span> </div>\n-<div class=\"line\"><a id=\"l00872\" name=\"l00872\"></a><span class=\"lineno\">  872</span>} <span class=\"comment\">// end namespace internal</span></div>\n-<div class=\"line\"><a id=\"l00873\" name=\"l00873\"></a><span class=\"lineno\">  873</span>} <span class=\"comment\">// end namespace Vtr</span></div>\n-<div class=\"line\"><a id=\"l00874\" name=\"l00874\"></a><span class=\"lineno\">  874</span> </div>\n-<div class=\"line\"><a id=\"l00875\" name=\"l00875\"></a><span class=\"lineno\">  875</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00876\" name=\"l00876\"></a><span class=\"lineno\">  876</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00877\" name=\"l00877\"></a><span class=\"lineno\">  877</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l00878\" name=\"l00878\"></a><span class=\"lineno\">  878</span> </div>\n-<div class=\"line\"><a id=\"l00879\" name=\"l00879\"></a><span class=\"lineno\">  879</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_VTR_LEVEL_H */</span><span class=\"preprocessor\"></span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa00909_html_a175f8a210a75b8180bc7ec74459492c9\"><div class=\"ttname\"><a href=\"a00909.html#a175f8a210a75b8180bc7ec74459492c9\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstLocalIndexArray</a></div><div class=\"ttdeci\">ConstArray&lt; LocalIndex &gt; ConstLocalIndexArray</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01495_source.html#l00083\">types.h:83</a></div></div>\n-<div class=\"ttc\" id=\"aa00909_html_a1e004d5c1e30ef69719d4083afe0f4ce\"><div class=\"ttname\"><a href=\"a00909.html#a1e004d5c1e30ef69719d4083afe0f4ce\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::LocalIndexArray</a></div><div class=\"ttdeci\">Array&lt; LocalIndex &gt; LocalIndexArray</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01495_source.html#l00082\">types.h:82</a></div></div>\n-<div class=\"ttc\" id=\"aa00909_html_a4a0e50e01fef3e431767a928c2631cab\"><div class=\"ttname\"><a href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::Index</a></div><div class=\"ttdeci\">int Index</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01495_source.html#l00054\">types.h:54</a></div></div>\n-<div class=\"ttc\" id=\"aa00909_html_a7c31dd7ef75734862d363b332be917dd\"><div class=\"ttname\"><a href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstIndexArray</a></div><div class=\"ttdeci\">ConstArray&lt; Index &gt; ConstIndexArray</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01495_source.html#l00080\">types.h:80</a></div></div>\n-<div class=\"ttc\" id=\"aa00909_html_a97c1e0c5ac33f97e2b73fde56b56c363\"><div class=\"ttname\"><a href=\"a00909.html#a97c1e0c5ac33f97e2b73fde56b56c363\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::LocalIndex</a></div><div class=\"ttdeci\">unsigned short LocalIndex</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01495_source.html#l00066\">types.h:66</a></div></div>\n-<div class=\"ttc\" id=\"aa00909_html_ab4fd2ea03eba4c01ed28072b21917a0f\"><div class=\"ttname\"><a href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::IndexArray</a></div><div class=\"ttdeci\">Array&lt; Index &gt; IndexArray</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01495_source.html#l00079\">types.h:79</a></div></div>\n-<div class=\"ttc\" id=\"aa01333_html_a11fcd51ef86118f65e603c1474377a78\"><div class=\"ttname\"><a href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::Rule</a></div><div class=\"ttdeci\">Rule</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00731_source.html#l00082\">crease.h:82</a></div></div>\n+<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span>}  <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span> </div>\n+<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_D3D11_LEGACY_GREGORY_PATCH_TABLE_H</span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa00973_html_a1d1cfd8ffb84e947f82999c682b666a7\"><div class=\"ttname\"><a href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::Type</a></div><div class=\"ttdeci\">Type</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00857_source.html#l00048\">patchDescriptor.h:48</a></div></div>\n+<div class=\"ttc\" id=\"aa00973_html_a1d1cfd8ffb84e947f82999c682b666a7ac4ae10df9c13e44880ca7be341e44f2a\"><div class=\"ttname\"><a href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7ac4ae10df9c13e44880ca7be341e44f2a\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::GREGORY_BOUNDARY</a></div><div class=\"ttdeci\">@ GREGORY_BOUNDARY</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00857_source.html#l00061\">patchDescriptor.h:61</a></div></div>\n+<div class=\"ttc\" id=\"aa00993_html\"><div class=\"ttname\"><a href=\"a00993.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable</a></div><div class=\"ttdoc\">Container for arrays of parametric patches.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00842_source.html#l00055\">patchTable.h:55</a></div></div>\n+<div class=\"ttc\" id=\"aa01205_html\"><div class=\"ttname\"><a href=\"a01205.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11LegacyGregoryPatchTable</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00695_source.html#l00043\">d3d11LegacyGregoryPatchTable.h:44</a></div></div>\n+<div class=\"ttc\" id=\"aa01205_html_a16aad8981b0b35184b6e44cfb242003d\"><div class=\"ttname\"><a href=\"a01205.html#a16aad8981b0b35184b6e44cfb242003d\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11LegacyGregoryPatchTable::UpdateVertexBuffer</a></div><div class=\"ttdeci\">void UpdateVertexBuffer(ID3D11Buffer *vbo, int numVertices, int numVertexElements, ID3D11DeviceContext *pd3d11DeviceContext)</div></div>\n+<div class=\"ttc\" id=\"aa01205_html_a176fb87b7ba47d5c2c2a6d332e2687ce\"><div class=\"ttname\"><a href=\"a01205.html#a176fb87b7ba47d5c2c2a6d332e2687ce\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11LegacyGregoryPatchTable::GetQuadOffsetsBase</a></div><div class=\"ttdeci\">int GetQuadOffsetsBase(Far::PatchDescriptor::Type type)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00695_source.html#l00074\">d3d11LegacyGregoryPatchTable.h:74</a></div></div>\n+<div class=\"ttc\" id=\"aa01205_html_a1b73be1e9343a3df3d0dd6027d06fe1b\"><div class=\"ttname\"><a href=\"a01205.html#a1b73be1e9343a3df3d0dd6027d06fe1b\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11LegacyGregoryPatchTable::~D3D11LegacyGregoryPatchTable</a></div><div class=\"ttdeci\">~D3D11LegacyGregoryPatchTable()</div></div>\n+<div class=\"ttc\" id=\"aa01205_html_a976374548278711d50993273260df174\"><div class=\"ttname\"><a href=\"a01205.html#a976374548278711d50993273260df174\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11LegacyGregoryPatchTable::Create</a></div><div class=\"ttdeci\">static D3D11LegacyGregoryPatchTable * Create(Far::PatchTable const *farPatchTable, ID3D11DeviceContext *deviceContext)</div></div>\n+<div class=\"ttc\" id=\"aa01205_html_ab758c72f33a9e3aa46c1096446c3557e\"><div class=\"ttname\"><a href=\"a01205.html#ab758c72f33a9e3aa46c1096446c3557e\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11LegacyGregoryPatchTable::GetVertexSRV</a></div><div class=\"ttdeci\">ID3D11ShaderResourceView * GetVertexSRV() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00695_source.html#l00062\">d3d11LegacyGregoryPatchTable.h:62</a></div></div>\n+<div class=\"ttc\" id=\"aa01205_html_aca9d1702077da362bc5ba1d046f7853d\"><div class=\"ttname\"><a href=\"a01205.html#aca9d1702077da362bc5ba1d046f7853d\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11LegacyGregoryPatchTable::Create</a></div><div class=\"ttdeci\">static D3D11LegacyGregoryPatchTable * Create(Far::PatchTable const *farPatchTable, DEVICE_CONTEXT context)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00695_source.html#l00049\">d3d11LegacyGregoryPatchTable.h:49</a></div></div>\n+<div class=\"ttc\" id=\"aa01205_html_adbc155c902f4c2cb88d9fffbeb6499b4\"><div class=\"ttname\"><a href=\"a01205.html#adbc155c902f4c2cb88d9fffbeb6499b4\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11LegacyGregoryPatchTable::GetVertexValenceSRV</a></div><div class=\"ttdeci\">ID3D11ShaderResourceView * GetVertexValenceSRV() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00695_source.html#l00066\">d3d11LegacyGregoryPatchTable.h:66</a></div></div>\n+<div class=\"ttc\" id=\"aa01205_html_af03db41bfcbbf8bb266f7b067df6433a\"><div class=\"ttname\"><a href=\"a01205.html#af03db41bfcbbf8bb266f7b067df6433a\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11LegacyGregoryPatchTable::GetQuadOffsetsSRV</a></div><div class=\"ttdeci\">ID3D11ShaderResourceView * GetQuadOffsetsSRV() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00695_source.html#l00070\">d3d11LegacyGregoryPatchTable.h:70</a></div></div>\n+<div class=\"ttc\" id=\"aa01205_html_af138b4535e4db5f013225c5924e0b243\"><div class=\"ttname\"><a href=\"a01205.html#af138b4535e4db5f013225c5924e0b243\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11LegacyGregoryPatchTable::D3D11LegacyGregoryPatchTable</a></div><div class=\"ttdeci\">D3D11LegacyGregoryPatchTable()</div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bd5473d7d5841d48919aaa9ad0cb1f9b.html\">vtr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00695.html\">level.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00695.html\">d3d11LegacyGregoryPatchTable.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-level.h\n+d3d11LegacyGregoryPatchTable.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2014 DreamWorks Animation LLC.\n+2// Copyright 2015 Pixar\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -23,986 +23,135 @@\n 17//\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n-24#ifndef OPENSUBDIV3_VTR_LEVEL_H\n-25#define OPENSUBDIV3_VTR_LEVEL_H\n-26\n-27#include \"../version.h\"\n-28\n-29#include \"../sdc/types.h\"\n-30#include \"../sdc/crease.h\"\n-31#include \"../sdc/options.h\"\n-32#include \"../vtr/types.h\"\n-33\n-34#include <algorithm>\n-35#include <vector>\n-36#include <cassert>\n-37#include <cstring>\n-38\n-39\n-40namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-41namespace OPENSUBDIV_VERSION {\n+24\n+25#ifndef OPENSUBDIV3_OSD_D3D11_LEGACY_GREGORY_PATCH_TABLE_H\n+26#define OPENSUBDIV3_OSD_D3D11_LEGACY_GREGORY_PATCH_TABLE_H\n+27\n+28#include \"../version.h\"\n+29\n+30#include \"../far/patchTable.h\"\n+31#include \"../osd/nonCopyable.h\"\n+32\n+33struct ID3D11Buffer;\n+34struct ID3D11ShaderResourceView;\n+35struct ID3D11Device;\n+36struct ID3D11DeviceContext;\n+37\n+38namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+39namespace OPENSUBDIV_VERSION {\n+40\n+41namespace Osd {\n 42\n-43namespace Vtr {\n-44namespace internal {\n-45\n-46class Refinement;\n-47class TriRefinement;\n-48class QuadRefinement;\n-49class FVarRefinement;\n-50class FVarLevel;\n-51\n-52//\n-53// Level:\n-54// A refinement level includes a vectorized representation of the topology\n-55// for a particular subdivision level. The topology is \"complete\" in that any\n-56// level can be used as the base level of another subdivision hierarchy and\n-can\n-57// be considered a complete mesh independent of its ancestors. It currently\n-58// does contain a \"depth\" member -- as some inferences can then be made about\n-59// the topology (i.e. all quads or all tris if not level 0).\n-60//\n-61// This class is intended for private use within the library. There are still\n-62// opportunities to specialize levels -- e.g. those supporting N-sided faces\n-vs\n-63// those that are purely quads or tris -- so we prefer to insulate it from\n-public\n-64// access.\n-65//\n-66// The representation of topology here is to store six topological\n-relationships\n-67// in tables of integers. Each is stored in its own array(s) so the result is\n-68// a SOA representation of the topology. The six relations are:\n-69//\n-70// - face-verts: vertices incident/comprising a face\n-71// - face-edges: edges incident a face\n-72// - edge-verts: vertices incident/comprising an edge\n-73// - edge-faces: faces incident an edge\n-74// - vert-faces: faces incident a vertex\n-75// - vert-edges: edges incident a vertex\n-76//\n-77// There is some redundancy here but the intent is not that this be a minimal\n-78// representation, the intent is that it be amenable to refinement. Classes\n-in\n-79// the Far layer essentially store 5 of these 6 in a permuted form -- we add\n-80// the face-edges here to simplify refinement.\n-81//\n-82\n-83class Level {\n-84\n-85public:\n-86 //\n-87 // Simple nested types to hold the tags for each component type -- some of\n-88 // which are user-specified features (e.g. whether a face is a hole or not)\n-89 // while others indicate the topological nature of the component, how it\n-90 // is affected by creasing in its neighborhood, etc.\n-91 //\n-92 // Most of these properties are passed down to child components during\n-93 // refinement, but some -- notably the designation of a component as semi-\n-94 // sharp -- require re-determination as sharpness values are reduced at each\n-95 // level.\n-96 //\n-97 struct VTag {\n-98 VTag() { }\n+_\b4_\b3class _\bD_\b3_\bD_\b1_\b1_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+44 : private NonCopyable<D3D11LegacyGregoryPatchTable> {\n+45public:\n+_\b4_\b6 _\b~_\bD_\b3_\bD_\b1_\b1_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be();\n+47\n+48 template<typename DEVICE_CONTEXT>\n+_\b4_\b9 static _\bD_\b3_\bD_\b1_\b1_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be *_\bC_\br_\be_\ba_\bt_\be(\n+50 _\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be const *farPatchTable, DEVICE_CONTEXT context) {\n+51 return _\bC_\br_\be_\ba_\bt_\be(farPatchTable, context->GetDeviceContext());\n+52 }\n+53\n+_\b5_\b4 static _\bD_\b3_\bD_\b1_\b1_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be *_\bC_\br_\be_\ba_\bt_\be(\n+55 _\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be const *farPatchTable,\n+56 ID3D11DeviceContext *deviceContext);\n+57\n+_\b5_\b8 void _\bU_\bp_\bd_\ba_\bt_\be_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br(ID3D11Buffer *vbo,\n+59 int numVertices, int numVertexElements,\n+60 ID3D11DeviceContext *pd3d11DeviceContext);\n+61\n+_\b6_\b2 ID3D11ShaderResourceView* _\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bS_\bR_\bV() const {\n+63 return _vertexSRV;\n+64 }\n+65\n+_\b6_\b6 ID3D11ShaderResourceView* _\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be_\bS_\bR_\bV() const {\n+67 return _vertexValenceSRV;\n+68 }\n+69\n+_\b7_\b0 ID3D11ShaderResourceView* _\bG_\be_\bt_\bQ_\bu_\ba_\bd_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bS_\bR_\bV() const {\n+71 return _quadOffsetsSRV;\n+72 }\n+73\n+_\b7_\b4 int _\bG_\be_\bt_\bQ_\bu_\ba_\bd_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bB_\ba_\bs_\be(_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bT_\by_\bp_\be type) {\n+75 if (type == _\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bG_\bR_\bE_\bG_\bO_\bR_\bY_\b__\bB_\bO_\bU_\bN_\bD_\bA_\bR_\bY) {\n+76 return _quadOffsetsBase[1];\n+77 }\n+78 return _quadOffsetsBase[0];\n+79 }\n+80\n+81protected:\n+_\b8_\b2 _\bD_\b3_\bD_\b1_\b1_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be();\n+83\n+84private:\n+85 ID3D11Buffer* _vertexValenceBuffer;\n+86 ID3D11Buffer* _quadOffsetsBuffer;\n+87 ID3D11ShaderResourceView* _vertexSRV;\n+88 ID3D11ShaderResourceView* _vertexValenceSRV;\n+89 ID3D11ShaderResourceView* _quadOffsetsSRV;\n+90 int _quadOffsetsBase[2]; // gregory, boundaryGregory\n+91};\n+92\n+93\n+94\n+95} // end namespace Osd\n+96\n+97} // end namespace OPENSUBDIV_VERSION\n+98using namespace OPENSUBDIV_VERSION;\n 99\n-100 // When cleared, the VTag ALMOST represents a smooth, regular, interior\n-101 // vertex -- the Type enum requires a bit be explicitly set for Smooth,\n-102 // so that must be done explicitly if desired on initialization.\n-103 void clear() { std::memset((void*) this, 0, sizeof(VTag)); }\n-104\n-105 typedef unsigned short VTagSize;\n-106\n-107 VTagSize _nonManifold : 1; // fixed\n-108 VTagSize _xordinary : 1; // fixed\n-109 VTagSize _boundary : 1; // fixed\n-110 VTagSize _corner : 1; // fixed\n-111 VTagSize _infSharp : 1; // fixed\n-112 VTagSize _semiSharp : 1; // variable\n-113 VTagSize _semiSharpEdges : 1; // variable\n-114 VTagSize _rule : 4; // variable when _semiSharp\n-115\n-116 // These next to tags are complementary -- the \"incomplete\" tag is only\n-117 // relevant for refined levels while the \"incident an irregular face\" tag\n-118 // is only relevant for the base level. They could be combined as both\n-119 // indicate \"no full regular ring\" around a vertex\n-120 VTagSize _incomplete : 1; // variable only set in refined levels\n-121 VTagSize _incidIrregFace : 1; // variable only set in base level\n-122\n-123 // Tags indicating incident infinitely-sharp (permanent) features\n-124 VTagSize _infSharpEdges : 1; // fixed\n-125 VTagSize _infSharpCrease : 1; // fixed\n-126 VTagSize _infIrregular : 1; // fixed\n-127\n-128 // Alternate constructor and accessor for dealing with integer bits\n-directly:\n-129 explicit VTag(VTagSize bits) {\n-130 std::memcpy(this, &bits, sizeof(bits));\n-131 }\n-132 VTagSize getBits() const {\n-133 VTagSize bits;\n-134 std::memcpy(&bits, this, sizeof(bits));\n-135 return bits;\n-136 }\n-137\n-138 static VTag BitwiseOr(VTag const vTags[], int size = 4);\n-139 };\n-140 struct ETag {\n-141 ETag() { }\n-142\n-143 // When cleared, the ETag represents a smooth, manifold, interior edge\n-144 void clear() { std::memset((void*) this, 0, sizeof(ETag)); }\n-145\n-146 typedef unsigned char ETagSize;\n-147\n-148 ETagSize _nonManifold : 1; // fixed\n-149 ETagSize _boundary : 1; // fixed\n-150 ETagSize _infSharp : 1; // fixed\n-151 ETagSize _semiSharp : 1; // variable\n-152\n-153 // Alternate constructor and accessor for dealing with integer bits\n-directly:\n-154 explicit ETag(ETagSize bits) {\n-155 std::memcpy(this, &bits, sizeof(bits));\n-156 }\n-157 ETagSize getBits() const {\n-158 ETagSize bits;\n-159 std::memcpy(&bits, this, sizeof(bits));\n-160 return bits;\n-161 }\n-162\n-163 static ETag BitwiseOr(ETag const eTags[], int size = 4);\n-164 };\n-165 struct FTag {\n-166 FTag() { }\n-167\n-168 void clear() { std::memset((void*) this, 0, sizeof(FTag)); }\n-169\n-170 typedef unsigned char FTagSize;\n-171\n-172 FTagSize _hole : 1; // fixed\n-173\n-174 // On deck -- coming soon...\n-175 //FTagSize _hasEdits : 1; // variable\n-176 };\n-177\n-178 // Additional simple struct to identify a \"span\" around a vertex, i.e. a\n-179 // subset of the faces around a vertex delimited by some property (e.g. a\n-180 // face-varying discontinuity, an inf-sharp edge, etc.)\n-181 //\n-182 // The span requires an \"origin\" and a \"size\" to fully define its extent.\n-183 // Use of the size is required over a leading/trailing pair as the valence\n-184 // around a non-manifold vertex cannot be trivially determined from two\n-185 // extremeties. Similarly a start face is chosen over an edge as starting\n-186 // with a manifold edge is ambiguous. Additional tags also support\n-187 // non-manifold cases, e.g. periodic spans at the apex of a double cone.\n-188 //\n-189 // Currently setting the size to 0 or leaving the span \"unassigned\" is an\n-190 // indication to use the full neighborhood rather than a subset -- prefer\n-191 // use of the const method here to direct inspection of the member.\n-192 //\n-193 struct VSpan {\n-194 VSpan() { std::memset((void*) this, 0, sizeof(VSpan)); }\n-195\n-196 void clear() { std::memset((void*) this, 0, sizeof(VSpan)); }\n-197 bool isAssigned() const { return _numFaces > 0; }\n-198\n-199 _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx _numFaces;\n-200 _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx _startFace;\n-201 _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx _cornerInSpan;\n-202\n-203 unsigned short _periodic : 1;\n-204 unsigned short _sharp : 1;\n-205 };\n-206\n-207public:\n-208 Level();\n-209 ~Level();\n-210\n-211 // Simple accessors:\n-212 int getDepth() const { return _depth; }\n-213\n-214 int getNumVertices() const { return _vertCount; }\n-215 int getNumFaces() const { return _faceCount; }\n-216 int getNumEdges() const { return _edgeCount; }\n-217\n-218 // More global sizes may prove useful...\n-219 int getNumFaceVerticesTotal() const { return (int) _faceVertIndices.size();\n-}\n-220 int getNumFaceEdgesTotal() const { return (int) _faceEdgeIndices.size(); }\n-221 int getNumEdgeVerticesTotal() const { return (int) _edgeVertIndices.size();\n-}\n-222 int getNumEdgeFacesTotal() const { return (int) _edgeFaceIndices.size(); }\n-223 int getNumVertexFacesTotal() const { return (int) _vertFaceIndices.size();\n-}\n-224 int getNumVertexEdgesTotal() const { return (int) _vertEdgeIndices.size();\n-}\n-225\n-226 int getMaxValence() const { return _maxValence; }\n-227 int getMaxEdgeFaces() const { return _maxEdgeFaces; }\n-228\n-229 // Methods to access the relation tables/indices -- note that for some\n-relations\n-230 // (i.e. those where a component is \"contained by\" a neighbor, or more\n-generally\n-231 // when the neighbor is a simplex of higher dimension) we store an\n-additional\n-232 // \"local index\", e.g. for the case of vert-faces if one of the faces F[i]\n-is\n-233 // incident a vertex V, then L[i] is the \"local index\" in F[i] of vertex V.\n-234 // Once have only quads (or tris), this local index need only occupy two\n-bits\n-235 // and could conceivably be packed into the same integer as the face index,\n-but\n-236 // for now, given the need to support faces of potentially high valence\n-we'll\n-237 // use an 8- or 16-bit integer.\n-238 //\n-239 // Methods to access the six topological relations:\n-240 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getFaceVertices(_\bI_\bn_\bd_\be_\bx faceIndex) const;\n-241 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getFaceEdges(_\bI_\bn_\bd_\be_\bx faceIndex) const;\n-242 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getEdgeVertices(_\bI_\bn_\bd_\be_\bx edgeIndex) const;\n-243 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getEdgeFaces(_\bI_\bn_\bd_\be_\bx edgeIndex) const;\n-244 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getVertexFaces(_\bI_\bn_\bd_\be_\bx vertIndex) const;\n-245 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getVertexEdges(_\bI_\bn_\bd_\be_\bx vertIndex) const;\n-246\n-247 _\bC_\bo_\bn_\bs_\bt_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getEdgeFaceLocalIndices(_\bI_\bn_\bd_\be_\bx edgeIndex) const;\n-248 _\bC_\bo_\bn_\bs_\bt_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getVertexFaceLocalIndices(_\bI_\bn_\bd_\be_\bx vertIndex) const;\n-249 _\bC_\bo_\bn_\bs_\bt_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getVertexEdgeLocalIndices(_\bI_\bn_\bd_\be_\bx vertIndex) const;\n-250\n-251 // Replace these with access to sharpness buffers/arrays rather than\n-elements:\n-252 float getEdgeSharpness(_\bI_\bn_\bd_\be_\bx edgeIndex) const;\n-253 float getVertexSharpness(_\bI_\bn_\bd_\be_\bx vertIndex) const;\n-254 _\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be getVertexRule(_\bI_\bn_\bd_\be_\bx vertIndex) const;\n-255\n-256 _\bI_\bn_\bd_\be_\bx findEdge(_\bI_\bn_\bd_\be_\bx v0Index, _\bI_\bn_\bd_\be_\bx v1Index) const;\n-257\n-258 // Holes\n-259 void setFaceHole(_\bI_\bn_\bd_\be_\bx faceIndex, bool b);\n-260 bool isFaceHole(_\bI_\bn_\bd_\be_\bx faceIndex) const;\n-261\n-262 // Face-varying\n-263 Sdc::Options getFVarOptions(int channel) const;\n-264 int getNumFVarChannels() const { return (int) _fvarChannels.size(); }\n-265 int getNumFVarValues(int channel) const;\n-266 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getFaceFVarValues(_\bI_\bn_\bd_\be_\bx faceIndex, int channel) const;\n-267\n-268 FVarLevel & getFVarLevel(int channel) { return *_fvarChannels[channel]; }\n-269 FVarLevel const & getFVarLevel(int channel) const { return *_fvarChannels\n-[channel]; }\n-270\n-271 // Manifold/non-manifold tags:\n-272 void setEdgeNonManifold(_\bI_\bn_\bd_\be_\bx edgeIndex, bool b);\n-273 bool isEdgeNonManifold(_\bI_\bn_\bd_\be_\bx edgeIndex) const;\n-274\n-275 void setVertexNonManifold(_\bI_\bn_\bd_\be_\bx vertIndex, bool b);\n-276 bool isVertexNonManifold(_\bI_\bn_\bd_\be_\bx vertIndex) const;\n-277\n-278 // General access to all component tags:\n-279 VTag const & getVertexTag(_\bI_\bn_\bd_\be_\bx vertIndex) const { return _vertTags\n-[vertIndex]; }\n-280 ETag const & getEdgeTag(_\bI_\bn_\bd_\be_\bx edgeIndex) const { return _edgeTags\n-[edgeIndex]; }\n-281 FTag const & getFaceTag(_\bI_\bn_\bd_\be_\bx faceIndex) const { return _faceTags\n-[faceIndex]; }\n-282\n-283 VTag & getVertexTag(_\bI_\bn_\bd_\be_\bx vertIndex) { return _vertTags[vertIndex]; }\n-284 ETag & getEdgeTag(_\bI_\bn_\bd_\be_\bx edgeIndex) { return _edgeTags[edgeIndex]; }\n-285 FTag & getFaceTag(_\bI_\bn_\bd_\be_\bx faceIndex) { return _faceTags[faceIndex]; }\n-286\n-287public:\n-288\n-289 // Debugging aides:\n-290 enum TopologyError {\n-291 TOPOLOGY_MISSING_EDGE_FACES=0,\n-292 TOPOLOGY_MISSING_EDGE_VERTS,\n-293 TOPOLOGY_MISSING_FACE_EDGES,\n-294 TOPOLOGY_MISSING_FACE_VERTS,\n-295 TOPOLOGY_MISSING_VERT_FACES,\n-296 TOPOLOGY_MISSING_VERT_EDGES,\n-297\n-298 TOPOLOGY_FAILED_CORRELATION_EDGE_FACE,\n-299 TOPOLOGY_FAILED_CORRELATION_FACE_VERT,\n-300 TOPOLOGY_FAILED_CORRELATION_FACE_EDGE,\n-301\n-302 TOPOLOGY_FAILED_ORIENTATION_INCIDENT_EDGE,\n-303 TOPOLOGY_FAILED_ORIENTATION_INCIDENT_FACE,\n-304 TOPOLOGY_FAILED_ORIENTATION_INCIDENT_FACES_EDGES,\n-305\n-306 TOPOLOGY_DEGENERATE_EDGE,\n-307 TOPOLOGY_NON_MANIFOLD_EDGE,\n-308\n-309 TOPOLOGY_INVALID_CREASE_EDGE,\n-310 TOPOLOGY_INVALID_CREASE_VERT\n-311 };\n-312\n-313 static char const * getTopologyErrorString(TopologyError errCode);\n-314\n-315 typedef void (* ValidationCallback)(TopologyError errCode, char const *\n-msg, void const * clientData);\n-316\n-317 bool validateTopology(ValidationCallback callback=0, void const *\n-clientData=0) const;\n-318\n-319 void print(const Refinement* parentRefinement = 0) const;\n-320\n-321public:\n-322 // High-level topology queries -- these may be moved elsewhere:\n-323\n-324 bool isSingleCreasePatch(_\bI_\bn_\bd_\be_\bx face, float* sharpnessOut=NULL, int*\n-rotationOut=NULL) const;\n-325\n-326 //\n-327 // When inspecting topology, the component tags -- particularly VTag and\n-ETag -- are most\n-328 // often inspected in groups for the face to which they belong. They are\n-designed to be\n-329 // bitwise OR'd (the result then referred to as a \"composite\" tag) to make\n-quick decisions\n-330 // about the face as a whole to avoid tedious topological inspection.\n-331 //\n-332 // The same logic can be applied to topology in a FVar channel when tags\n-specific to that\n-333 // channel are used. Note that the VTags apply to the FVar values assigned\n-to the corners\n-334 // of the face and not the vertex as a whole. The \"composite\" face-varying\n-VTag for a\n-335 // vertex is the union of VTags of all distinct FVar values for that\n-vertex.\n-336 //\n-337 bool doesVertexFVarTopologyMatch(_\bI_\bn_\bd_\be_\bx vIndex, int fvarChannel) const;\n-338 bool doesFaceFVarTopologyMatch( _\bI_\bn_\bd_\be_\bx fIndex, int fvarChannel) const;\n-339 bool doesEdgeFVarTopologyMatch( _\bI_\bn_\bd_\be_\bx eIndex, int fvarChannel) const;\n-340\n-341 void getFaceVTags(_\bI_\bn_\bd_\be_\bx fIndex, VTag vTags[], int fvarChannel = -1) const;\n-342 void getFaceETags(_\bI_\bn_\bd_\be_\bx fIndex, ETag eTags[], int fvarChannel = -1) const;\n-343\n-344 VTag getFaceCompositeVTag(_\bI_\bn_\bd_\be_\bx fIndex, int fvarChannel = -1) const;\n-345 VTag getFaceCompositeVTag(_\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by & fVerts) const;\n-346\n-347 VTag getVertexCompositeFVarVTag(_\bI_\bn_\bd_\be_\bx vIndex, int fvarChannel) const;\n-348\n-349 //\n-350 // When gathering \"patch points\" we may want the indices of the vertices or\n-the corresponding\n-351 // FVar values for a particular channel. Both are represented and equally\n-accessible within\n-352 // the faces, so we allow all to be returned through these methods. Setting\n-the optional FVar\n-353 // channel to -1 will retrieve indices of vertices instead of FVar values:\n-354 //\n-355 int gatherQuadLinearPatchPoints(_\bI_\bn_\bd_\be_\bx fIndex, _\bI_\bn_\bd_\be_\bx patchPoints[], int\n-rotation = 0,\n-356 int fvarChannel = -1) const;\n-357\n-358 int gatherQuadRegularInteriorPatchPoints(_\bI_\bn_\bd_\be_\bx fIndex, _\bI_\bn_\bd_\be_\bx patchPoints[],\n-int rotation = 0,\n-359 int fvarChannel = -1) const;\n-360 int gatherQuadRegularBoundaryPatchPoints(_\bI_\bn_\bd_\be_\bx fIndex, _\bI_\bn_\bd_\be_\bx patchPoints[],\n-int boundaryEdgeInFace,\n-361 int fvarChannel = -1) const;\n-362 int gatherQuadRegularCornerPatchPoints( _\bI_\bn_\bd_\be_\bx fIndex, _\bI_\bn_\bd_\be_\bx patchPoints[],\n-int cornerVertInFace,\n-363 int fvarChannel = -1) const;\n-364\n-365 int gatherQuadRegularRingAroundVertex(_\bI_\bn_\bd_\be_\bx vIndex, _\bI_\bn_\bd_\be_\bx ringPoints[],\n-366 int fvarChannel = -1) const;\n-367 int gatherQuadRegularPartialRingAroundVertex(_\bI_\bn_\bd_\be_\bx vIndex, VSpan const &\n-span, _\bI_\bn_\bd_\be_\bx ringPoints[],\n-368 int fvarChannel = -1) const;\n-369\n-370 // WIP -- for future use, need to extend for face-varying...\n-371 int gatherTriRegularInteriorPatchPoints( _\bI_\bn_\bd_\be_\bx fIndex, _\bI_\bn_\bd_\be_\bx patchVerts[],\n-int rotation = 0) const;\n-372 int gatherTriRegularBoundaryVertexPatchPoints(_\bI_\bn_\bd_\be_\bx fIndex, _\bI_\bn_\bd_\be_\bx\n-patchVerts[], int boundaryVertInFace) const;\n-373 int gatherTriRegularBoundaryEdgePatchPoints( _\bI_\bn_\bd_\be_\bx fIndex, _\bI_\bn_\bd_\be_\bx patchVerts\n-[], int boundaryEdgeInFace) const;\n-374 int gatherTriRegularCornerVertexPatchPoints( _\bI_\bn_\bd_\be_\bx fIndex, _\bI_\bn_\bd_\be_\bx patchVerts\n-[], int cornerVertInFace) const;\n-375 int gatherTriRegularCornerEdgePatchPoints( _\bI_\bn_\bd_\be_\bx fIndex, _\bI_\bn_\bd_\be_\bx patchVerts\n-[], int cornerEdgeInFace) const;\n-376\n-377public:\n-378 // Sizing methods used to construct a level to populate:\n-379 void resizeFaces( int numFaces);\n-380 void resizeFaceVertices(int numFaceVertsTotal);\n-381 void resizeFaceEdges( int numFaceEdgesTotal);\n-382\n-383 void resizeEdges( int numEdges);\n-384 void resizeEdgeVertices(); // always 2*edgeCount\n-385 void resizeEdgeFaces(int numEdgeFacesTotal);\n-386\n-387 void resizeVertices( int numVertices);\n-388 void resizeVertexFaces(int numVertexFacesTotal);\n-389 void resizeVertexEdges(int numVertexEdgesTotal);\n-390\n-391 void setMaxValence(int maxValence);\n-392\n-393 // Modifiers to populate the relations for each component:\n-394 _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getFaceVertices(_\bI_\bn_\bd_\be_\bx faceIndex);\n-395 _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getFaceEdges(_\bI_\bn_\bd_\be_\bx faceIndex);\n-396 _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getEdgeVertices(_\bI_\bn_\bd_\be_\bx edgeIndex);\n-397 _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getEdgeFaces(_\bI_\bn_\bd_\be_\bx edgeIndex);\n-398 _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getVertexFaces(_\bI_\bn_\bd_\be_\bx vertIndex);\n-399 _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getVertexEdges(_\bI_\bn_\bd_\be_\bx vertIndex);\n-400\n-401 _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getEdgeFaceLocalIndices(_\bI_\bn_\bd_\be_\bx edgeIndex);\n-402 _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getVertexFaceLocalIndices(_\bI_\bn_\bd_\be_\bx vertIndex);\n-403 _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getVertexEdgeLocalIndices(_\bI_\bn_\bd_\be_\bx vertIndex);\n-404\n-405 // Replace these with access to sharpness buffers/arrays rather than\n-elements:\n-406 float& getEdgeSharpness(_\bI_\bn_\bd_\be_\bx edgeIndex);\n-407 float& getVertexSharpness(_\bI_\bn_\bd_\be_\bx vertIndex);\n-408\n-409 // Create, destroy and populate face-varying channels:\n-410 int createFVarChannel(int fvarValueCount, Sdc::Options const& options);\n-411 void destroyFVarChannel(int channel);\n-412\n-413 _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getFaceFVarValues(_\bI_\bn_\bd_\be_\bx faceIndex, int channel);\n-414\n-415 void completeFVarChannelTopology(int channel, int regBoundaryValence);\n-416\n-417 // Counts and offsets for all relation types:\n-418 // - these may be unwarranted if we let Refinement access members\n-directly...\n-419 int getNumFaceVertices( _\bI_\bn_\bd_\be_\bx faceIndex) const { return\n-_faceVertCountsAndOffsets[2*faceIndex]; }\n-420 int getOffsetOfFaceVertices(_\bI_\bn_\bd_\be_\bx faceIndex) const { return\n-_faceVertCountsAndOffsets[2*faceIndex + 1]; }\n-421\n-422 int getNumFaceEdges( _\bI_\bn_\bd_\be_\bx faceIndex) const { return getNumFaceVertices\n-(faceIndex); }\n-423 int getOffsetOfFaceEdges(_\bI_\bn_\bd_\be_\bx faceIndex) const { return\n-getOffsetOfFaceVertices(faceIndex); }\n-424\n-425 int getNumEdgeVertices( _\bI_\bn_\bd_\be_\bx ) const { return 2; }\n-426 int getOffsetOfEdgeVertices(_\bI_\bn_\bd_\be_\bx edgeIndex) const { return 2 * edgeIndex;\n-}\n-427\n-428 int getNumEdgeFaces( _\bI_\bn_\bd_\be_\bx edgeIndex) const { return\n-_edgeFaceCountsAndOffsets[2*edgeIndex]; }\n-429 int getOffsetOfEdgeFaces(_\bI_\bn_\bd_\be_\bx edgeIndex) const { return\n-_edgeFaceCountsAndOffsets[2*edgeIndex + 1]; }\n-430\n-431 int getNumVertexFaces( _\bI_\bn_\bd_\be_\bx vertIndex) const { return\n-_vertFaceCountsAndOffsets[2*vertIndex]; }\n-432 int getOffsetOfVertexFaces(_\bI_\bn_\bd_\be_\bx vertIndex) const { return\n-_vertFaceCountsAndOffsets[2*vertIndex + 1]; }\n-433\n-434 int getNumVertexEdges( _\bI_\bn_\bd_\be_\bx vertIndex) const { return\n-_vertEdgeCountsAndOffsets[2*vertIndex]; }\n-435 int getOffsetOfVertexEdges(_\bI_\bn_\bd_\be_\bx vertIndex) const { return\n-_vertEdgeCountsAndOffsets[2*vertIndex + 1]; }\n-436\n-437 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getFaceVertices() const;\n-438\n-439 //\n-440 // Note that for some relations, the size of the relations for a child\n-component\n-441 // can vary radically from its parent due to the sparsity of the\n-refinement. So\n-442 // in these cases a few additional utilities are provided to help define\n-the set\n-443 // of incident components. Assuming adequate memory has been allocated, the\n-444 // \"resize\" methods here initialize the set of incident components by\n-setting\n-445 // both the size and the appropriate offset, while \"trim\" is use to quickly\n-lower\n-446 // the size from an upper bound and nothing else.\n-447 //\n-448 void resizeFaceVertices(_\bI_\bn_\bd_\be_\bx FaceIndex, int count);\n-449\n-450 void resizeEdgeFaces(_\bI_\bn_\bd_\be_\bx edgeIndex, int count);\n-451 void trimEdgeFaces( _\bI_\bn_\bd_\be_\bx edgeIndex, int count);\n-452\n-453 void resizeVertexFaces(_\bI_\bn_\bd_\be_\bx vertIndex, int count);\n-454 void trimVertexFaces( _\bI_\bn_\bd_\be_\bx vertIndex, int count);\n-455\n-456 void resizeVertexEdges(_\bI_\bn_\bd_\be_\bx vertIndex, int count);\n-457 void trimVertexEdges( _\bI_\bn_\bd_\be_\bx vertIndex, int count);\n-458\n-459public:\n-460 //\n-461 // Initial plans were to have a few specific classes properly construct the\n-462 // topology from scratch, e.g. the Refinement class and a Factory class for\n-463 // the base level, by populating all topological relations. The need to\n-have\n-464 // a class construct full topology given only a simple face-vertex list,\n-made\n-465 // it necessary to write code to define and orient all relations -- and\n-most\n-466 // of that seemed best placed here.\n-467 //\n-468 bool completeTopologyFromFaceVertices();\n-469 _\bI_\bn_\bd_\be_\bx findEdge(_\bI_\bn_\bd_\be_\bx v0, _\bI_\bn_\bd_\be_\bx v1, _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by v0Edges) const;\n-470\n-471 // Methods supporting the above:\n-472 void orientIncidentComponents();\n-473 bool orderVertexFacesAndEdges(_\bI_\bn_\bd_\be_\bx vIndex, _\bI_\bn_\bd_\be_\bx* vFaces, _\bI_\bn_\bd_\be_\bx* vEdges)\n-const;\n-474 bool orderVertexFacesAndEdges(_\bI_\bn_\bd_\be_\bx vIndex);\n-475 void populateLocalIndices();\n-476\n-477 _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by shareFaceVertCountsAndOffsets() const;\n-478\n-479private:\n-480 // Refinement classes (including all subclasses) build a Level:\n-481 friend class Refinement;\n-482 friend class TriRefinement;\n-483 friend class QuadRefinement;\n-484\n-485 //\n-486 // A Level is independent of subdivision scheme or options. While it may\n-have been\n-487 // affected by them in its construction, they are not associated with it -\n-- a Level\n-488 // is pure topology and any subdivision parameters are external.\n-489 //\n-490\n-491 // Simple members for inventory, etc.\n-492 int _faceCount;\n-493 int _edgeCount;\n-494 int _vertCount;\n-495\n-496 // The \"depth\" member is clearly useful in both the topological splitting\n-and the\n-497 // stencil queries, but arguably it ties the Level to a hierarchy which\n-counters\n-498 // the idea of it being independent.\n-499 int _depth;\n-500\n-501 // Maxima to help clients manage sizing of data buffers. Given \"max\n-valence\",\n-502 // the \"max edge faces\" is strictly redundant as it will always be less,\n-but\n-503 // since it will typically be so much less (i.e. 2) it is kept for now.\n-504 int _maxEdgeFaces;\n-505 int _maxValence;\n-506\n-507 //\n-508 // Topology vectors:\n-509 // Note that of all of these, only data for the face-edge relation is not\n-510 // stored in the osd::FarTables in any form. The FarTable vectors combine\n-511 // the edge-vert and edge-face relations. The eventual goal is that this\n-512 // data be part of the osd::Far classes and be a superset of the FarTable\n-513 // vectors, i.e. no data duplication or conversion. The fact that FarTable\n-514 // already stores 5 of the 6 possible relations should make the topology\n-515 // storage as a whole a non-issue.\n-516 //\n-517 // The vert-face-child and vert-edge-child indices are also arguably not\n-518 // a topology relation but more one for parent/child relations. But it is\n-519 // a topological relationship, and if named differently would not likely\n-520 // raise this. It has been named with \"child\" in the name as it does play\n-521 // a more significant role during subdivision in mapping between parent\n-522 // and child components, and so has been named to reflect that more\n-clearly.\n-523 //\n-524\n-525 // Per-face:\n-526 std::vector<Index> _faceVertCountsAndOffsets; // 2 per face, redundant\n-after level 0\n-527 std::vector<Index> _faceVertIndices; // 3 or 4 per face, variable at level\n-0\n-528 std::vector<Index> _faceEdgeIndices; // matches face-vert indices\n-529 std::vector<FTag> _faceTags; // 1 per face: includes \"hole\" tag\n-530\n-531 // Per-edge:\n-532 std::vector<Index> _edgeVertIndices; // 2 per edge\n-533 std::vector<Index> _edgeFaceCountsAndOffsets; // 2 per edge\n-534 std::vector<Index> _edgeFaceIndices; // varies with faces per edge\n-535 std::vector<LocalIndex> _edgeFaceLocalIndices; // varies with faces per\n-edge\n-536\n-537 std::vector<float> _edgeSharpness; // 1 per edge\n-538 std::vector<ETag> _edgeTags; // 1 per edge: manifold, boundary, etc.\n-539\n-540 // Per-vertex:\n-541 std::vector<Index> _vertFaceCountsAndOffsets; // 2 per vertex\n-542 std::vector<Index> _vertFaceIndices; // varies with valence\n-543 std::vector<LocalIndex> _vertFaceLocalIndices; // varies with valence, 8-\n-bit for now\n-544\n-545 std::vector<Index> _vertEdgeCountsAndOffsets; // 2 per vertex\n-546 std::vector<Index> _vertEdgeIndices; // varies with valence\n-547 std::vector<LocalIndex> _vertEdgeLocalIndices; // varies with valence, 8-\n-bit for now\n-548\n-549 std::vector<float> _vertSharpness; // 1 per vertex\n-550 std::vector<VTag> _vertTags; // 1 per vertex: manifold, Sdc::Rule, etc.\n-551\n-552 // Face-varying channels:\n-553 std::vector<FVarLevel*> _fvarChannels;\n-554};\n-555\n-556//\n-557// Access/modify the vertices incident a given face:\n-558//\n-559inline _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n-560Level::getFaceVertices(_\bI_\bn_\bd_\be_\bx faceIndex) const {\n-561 return _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by(&_faceVertIndices[_faceVertCountsAndOffsets\n-[faceIndex*2+1]],\n-562 _faceVertCountsAndOffsets[faceIndex*2]);\n-563}\n-564inline _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n-565Level::getFaceVertices(_\bI_\bn_\bd_\be_\bx faceIndex) {\n-566 return _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by(&_faceVertIndices[_faceVertCountsAndOffsets\n-[faceIndex*2+1]],\n-567 _faceVertCountsAndOffsets[faceIndex*2]);\n-568}\n-569\n-570inline void\n-571Level::resizeFaceVertices(_\bI_\bn_\bd_\be_\bx faceIndex, int count) {\n-572\n-573 int* countOffsetPair = &_faceVertCountsAndOffsets[faceIndex*2];\n-574\n-575 countOffsetPair[0] = count;\n-576 countOffsetPair[1] = (faceIndex == 0) ? 0 : (countOffsetPair[-2] +\n-countOffsetPair[-1]);\n-577\n-578 _maxValence = std::max(_maxValence, count);\n-579}\n-580\n-581inline _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n-582Level::getFaceVertices() const {\n-583 return _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by(&_faceVertIndices[0], (int)_faceVertIndices.size());\n-584}\n-585\n-586//\n-587// Access/modify the edges incident a given face:\n-588//\n-589inline _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n-590Level::getFaceEdges(_\bI_\bn_\bd_\be_\bx faceIndex) const {\n-591 return _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by(&_faceEdgeIndices[_faceVertCountsAndOffsets\n-[faceIndex*2+1]],\n-592 _faceVertCountsAndOffsets[faceIndex*2]);\n-593}\n-594inline _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n-595Level::getFaceEdges(_\bI_\bn_\bd_\be_\bx faceIndex) {\n-596 return _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by(&_faceEdgeIndices[_faceVertCountsAndOffsets\n-[faceIndex*2+1]],\n-597 _faceVertCountsAndOffsets[faceIndex*2]);\n-598}\n-599\n-600//\n-601// Access/modify the faces incident a given vertex:\n-602//\n-603inline _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n-604Level::getVertexFaces(_\bI_\bn_\bd_\be_\bx vertIndex) const {\n-605 return _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by( (&_vertFaceIndices[0]) + _vertFaceCountsAndOffsets\n-[vertIndex*2+1],\n-606 _vertFaceCountsAndOffsets[vertIndex*2]);\n-607}\n-608inline _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n-609Level::getVertexFaces(_\bI_\bn_\bd_\be_\bx vertIndex) {\n-610 return _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by( (&_vertFaceIndices[0]) + _vertFaceCountsAndOffsets\n-[vertIndex*2+1],\n-611 _vertFaceCountsAndOffsets[vertIndex*2]);\n-612}\n-613\n-614inline _\bC_\bo_\bn_\bs_\bt_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n-615Level::getVertexFaceLocalIndices(_\bI_\bn_\bd_\be_\bx vertIndex) const {\n-616 return _\bC_\bo_\bn_\bs_\bt_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by( (&_vertFaceLocalIndices[0]) +\n-_vertFaceCountsAndOffsets[vertIndex*2+1],\n-617 _vertFaceCountsAndOffsets[vertIndex*2]);\n-618}\n-619inline _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n-620Level::getVertexFaceLocalIndices(_\bI_\bn_\bd_\be_\bx vertIndex) {\n-621 return _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by( (&_vertFaceLocalIndices[0]) +\n-_vertFaceCountsAndOffsets[vertIndex*2+1],\n-622 _vertFaceCountsAndOffsets[vertIndex*2]);\n-623}\n-624\n-625inline void\n-626Level::resizeVertexFaces(_\bI_\bn_\bd_\be_\bx vertIndex, int count) {\n-627 int* countOffsetPair = &_vertFaceCountsAndOffsets[vertIndex*2];\n-628\n-629 countOffsetPair[0] = count;\n-630 countOffsetPair[1] = (vertIndex == 0) ? 0 : (countOffsetPair[-2] +\n-countOffsetPair[-1]);\n-631}\n-632inline void\n-633Level::trimVertexFaces(_\bI_\bn_\bd_\be_\bx vertIndex, int count) {\n-634 _vertFaceCountsAndOffsets[vertIndex*2] = count;\n-635}\n-636\n-637//\n-638// Access/modify the edges incident a given vertex:\n-639//\n-640inline _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n-641Level::getVertexEdges(_\bI_\bn_\bd_\be_\bx vertIndex) const {\n-642 return _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by( (&_vertEdgeIndices[0]) +_vertEdgeCountsAndOffsets\n-[vertIndex*2+1],\n-643 _vertEdgeCountsAndOffsets[vertIndex*2]);\n-644}\n-645inline _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n-646Level::getVertexEdges(_\bI_\bn_\bd_\be_\bx vertIndex) {\n-647 return _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by( (&_vertEdgeIndices[0]) +_vertEdgeCountsAndOffsets\n-[vertIndex*2+1],\n-648 _vertEdgeCountsAndOffsets[vertIndex*2]);\n-649}\n-650\n-651inline _\bC_\bo_\bn_\bs_\bt_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n-652Level::getVertexEdgeLocalIndices(_\bI_\bn_\bd_\be_\bx vertIndex) const {\n-653 return _\bC_\bo_\bn_\bs_\bt_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by( (&_vertEdgeLocalIndices[0]) +\n-_vertEdgeCountsAndOffsets[vertIndex*2+1],\n-654 _vertEdgeCountsAndOffsets[vertIndex*2]);\n-655}\n-656inline _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n-657Level::getVertexEdgeLocalIndices(_\bI_\bn_\bd_\be_\bx vertIndex) {\n-658 return _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by( (&_vertEdgeLocalIndices[0]) +\n-_vertEdgeCountsAndOffsets[vertIndex*2+1],\n-659 _vertEdgeCountsAndOffsets[vertIndex*2]);\n-660}\n-661\n-662inline void\n-663Level::resizeVertexEdges(_\bI_\bn_\bd_\be_\bx vertIndex, int count) {\n-664 int* countOffsetPair = &_vertEdgeCountsAndOffsets[vertIndex*2];\n-665\n-666 countOffsetPair[0] = count;\n-667 countOffsetPair[1] = (vertIndex == 0) ? 0 : (countOffsetPair[-2] +\n-countOffsetPair[-1]);\n-668\n-669 _maxValence = std::max(_maxValence, count);\n-670}\n-671inline void\n-672Level::trimVertexEdges(_\bI_\bn_\bd_\be_\bx vertIndex, int count) {\n-673 _vertEdgeCountsAndOffsets[vertIndex*2] = count;\n-674}\n-675\n-676inline void\n-677Level::setMaxValence(int valence) {\n-678 _maxValence = valence;\n-679}\n-680\n-681//\n-682// Access/modify the vertices incident a given edge:\n-683//\n-684inline _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n-685Level::getEdgeVertices(_\bI_\bn_\bd_\be_\bx edgeIndex) const {\n-686 return _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by(&_edgeVertIndices[edgeIndex*2], 2);\n-687}\n-688inline _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n-689Level::getEdgeVertices(_\bI_\bn_\bd_\be_\bx edgeIndex) {\n-690 return _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by(&_edgeVertIndices[edgeIndex*2], 2);\n-691}\n-692\n-693//\n-694// Access/modify the faces incident a given edge:\n-695//\n-696inline _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n-697Level::getEdgeFaces(_\bI_\bn_\bd_\be_\bx edgeIndex) const {\n-698 return _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by(&_edgeFaceIndices[0] +\n-699 _edgeFaceCountsAndOffsets[edgeIndex*2+1],\n-700 _edgeFaceCountsAndOffsets[edgeIndex*2]);\n-701}\n-702inline _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n-703Level::getEdgeFaces(_\bI_\bn_\bd_\be_\bx edgeIndex) {\n-704 return _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by(&_edgeFaceIndices[0] +\n-705 _edgeFaceCountsAndOffsets[edgeIndex*2+1],\n-706 _edgeFaceCountsAndOffsets[edgeIndex*2]);\n-707}\n-708\n-709inline _\bC_\bo_\bn_\bs_\bt_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n-710Level::getEdgeFaceLocalIndices(_\bI_\bn_\bd_\be_\bx edgeIndex) const {\n-711 return _\bC_\bo_\bn_\bs_\bt_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by(&_edgeFaceLocalIndices[0] +\n-712 _edgeFaceCountsAndOffsets[edgeIndex*2+1],\n-713 _edgeFaceCountsAndOffsets[edgeIndex*2]);\n-714}\n-715inline _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n-716Level::getEdgeFaceLocalIndices(_\bI_\bn_\bd_\be_\bx edgeIndex) {\n-717 return _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by(&_edgeFaceLocalIndices[0] +\n-718 _edgeFaceCountsAndOffsets[edgeIndex*2+1],\n-719 _edgeFaceCountsAndOffsets[edgeIndex*2]);\n-720}\n-721\n-722inline void\n-723Level::resizeEdgeFaces(_\bI_\bn_\bd_\be_\bx edgeIndex, int count) {\n-724 int* countOffsetPair = &_edgeFaceCountsAndOffsets[edgeIndex*2];\n-725\n-726 countOffsetPair[0] = count;\n-727 countOffsetPair[1] = (edgeIndex == 0) ? 0 : (countOffsetPair[-2] +\n-countOffsetPair[-1]);\n-728\n-729 _maxEdgeFaces = std::max(_maxEdgeFaces, count);\n-730}\n-731inline void\n-732Level::trimEdgeFaces(_\bI_\bn_\bd_\be_\bx edgeIndex, int count) {\n-733 _edgeFaceCountsAndOffsets[edgeIndex*2] = count;\n-734}\n-735\n-736//\n-737// Access/modify sharpness values:\n-738//\n-739inline float\n-740Level::getEdgeSharpness(_\bI_\bn_\bd_\be_\bx edgeIndex) const {\n-741 return _edgeSharpness[edgeIndex];\n-742}\n-743inline float&\n-744Level::getEdgeSharpness(_\bI_\bn_\bd_\be_\bx edgeIndex) {\n-745 return _edgeSharpness[edgeIndex];\n-746}\n-747\n-748inline float\n-749Level::getVertexSharpness(_\bI_\bn_\bd_\be_\bx vertIndex) const {\n-750 return _vertSharpness[vertIndex];\n-751}\n-752inline float&\n-753Level::getVertexSharpness(_\bI_\bn_\bd_\be_\bx vertIndex) {\n-754 return _vertSharpness[vertIndex];\n-755}\n-756\n-757inline _\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be\n-758Level::getVertexRule(_\bI_\bn_\bd_\be_\bx vertIndex) const {\n-759 return (_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be) _vertTags[vertIndex]._rule;\n-760}\n-761\n-762//\n-763// Access/modify hole tag:\n-764//\n-765inline void\n-766Level::setFaceHole(_\bI_\bn_\bd_\be_\bx faceIndex, bool b) {\n-767 _faceTags[faceIndex]._hole = b;\n-768}\n-769inline bool\n-770Level::isFaceHole(_\bI_\bn_\bd_\be_\bx faceIndex) const {\n-771 return _faceTags[faceIndex]._hole;\n-772}\n-773\n-774//\n-775// Access/modify non-manifold tags:\n-776//\n-777inline void\n-778Level::setEdgeNonManifold(_\bI_\bn_\bd_\be_\bx edgeIndex, bool b) {\n-779 _edgeTags[edgeIndex]._nonManifold = b;\n-780}\n-781inline bool\n-782Level::isEdgeNonManifold(_\bI_\bn_\bd_\be_\bx edgeIndex) const {\n-783 return _edgeTags[edgeIndex]._nonManifold;\n-784}\n-785\n-786inline void\n-787Level::setVertexNonManifold(_\bI_\bn_\bd_\be_\bx vertIndex, bool b) {\n-788 _vertTags[vertIndex]._nonManifold = b;\n-789}\n-790inline bool\n-791Level::isVertexNonManifold(_\bI_\bn_\bd_\be_\bx vertIndex) const {\n-792 return _vertTags[vertIndex]._nonManifold;\n-793}\n-794\n-795//\n-796// Sizing methods to allocate space:\n-797//\n-798inline void\n-799Level::resizeFaces(int faceCount) {\n-800 _faceCount = faceCount;\n-801 _faceVertCountsAndOffsets.resize(2 * faceCount);\n-802\n-803 _faceTags.resize(faceCount);\n-804 std::memset((void*) &_faceTags[0], 0, _faceCount * sizeof(FTag));\n-805}\n-806inline void\n-807Level::resizeFaceVertices(int totalFaceVertCount) {\n-808 _faceVertIndices.resize(totalFaceVertCount);\n-809}\n-810inline void\n-811Level::resizeFaceEdges(int totalFaceEdgeCount) {\n-812 _faceEdgeIndices.resize(totalFaceEdgeCount);\n-813}\n-814\n-815inline void\n-816Level::resizeEdges(int edgeCount) {\n-817\n-818 _edgeCount = edgeCount;\n-819 _edgeFaceCountsAndOffsets.resize(2 * edgeCount);\n-820\n-821 _edgeSharpness.resize(edgeCount);\n-822 _edgeTags.resize(edgeCount);\n-823\n-824 if (edgeCount>0) {\n-825 std::memset((void*) &_edgeTags[0], 0, _edgeCount * sizeof(ETag));\n-826 }\n-827}\n-828inline void\n-829Level::resizeEdgeVertices() {\n-830\n-831 _edgeVertIndices.resize(2 * _edgeCount);\n-832}\n-833inline void\n-834Level::resizeEdgeFaces(int totalEdgeFaceCount) {\n-835\n-836 _edgeFaceIndices.resize(totalEdgeFaceCount);\n-837 _edgeFaceLocalIndices.resize(totalEdgeFaceCount);\n-838}\n-839\n-840inline void\n-841Level::resizeVertices(int vertCount) {\n-842\n-843 _vertCount = vertCount;\n-844 _vertFaceCountsAndOffsets.resize(2 * vertCount);\n-845 _vertEdgeCountsAndOffsets.resize(2 * vertCount);\n-846\n-847 _vertSharpness.resize(vertCount);\n-848 _vertTags.resize(vertCount);\n-849 std::memset((void*) &_vertTags[0], 0, _vertCount * sizeof(VTag));\n-850}\n-851inline void\n-852Level::resizeVertexFaces(int totalVertFaceCount) {\n-853\n-854 _vertFaceIndices.resize(totalVertFaceCount);\n-855 _vertFaceLocalIndices.resize(totalVertFaceCount);\n-856}\n-857inline void\n-858Level::resizeVertexEdges(int totalVertEdgeCount) {\n-859\n-860 _vertEdgeIndices.resize(totalVertEdgeCount);\n-861 _vertEdgeLocalIndices.resize(totalVertEdgeCount);\n-862}\n-863\n-864inline _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n-865Level::shareFaceVertCountsAndOffsets() const {\n-866 // XXXX manuelk we have to force const casting here (classes don't 'share'\n-867 // members usually...)\n-868 return _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by(const_cast<_\bI_\bn_\bd_\be_\bx *>(&_faceVertCountsAndOffsets[0]),\n-869 (int)_faceVertCountsAndOffsets.size());\n-870}\n-871\n-872} // end namespace internal\n-873} // end namespace Vtr\n-874\n-875} // end namespace OPENSUBDIV_VERSION\n-876using namespace OPENSUBDIV_VERSION;\n-877} // end namespace OpenSubdiv\n-878\n-879#endif /* OPENSUBDIV3_VTR_LEVEL_H */\n+100} // end namespace OpenSubdiv\n+101\n+102#endif // OPENSUBDIV3_OSD_D3D11_LEGACY_GREGORY_PATCH_TABLE_H\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n-ConstArray< LocalIndex > ConstLocalIndexArray\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b8_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n-Array< LocalIndex > LocalIndexArray\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b8_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx\n-int Index\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b5_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n-ConstArray< Index > ConstIndexArray\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b8_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx\n-unsigned short LocalIndex\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b6_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n-Array< Index > IndexArray\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b7_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be\n-Rule\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b8_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bT_\by_\bp_\be\n+Type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b4_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bG_\bR_\bE_\bG_\bO_\bR_\bY_\b__\bB_\bO_\bU_\bN_\bD_\bA_\bR_\bY\n+@ GREGORY_BOUNDARY\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b6_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+Container for arrays of parametric patches.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bd_\b3_\bd_\b1_\b1_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b4_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n+_\bU_\bp_\bd_\ba_\bt_\be_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+void UpdateVertexBuffer(ID3D11Buffer *vbo, int numVertices, int\n+numVertexElements, ID3D11DeviceContext *pd3d11DeviceContext)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n+_\bG_\be_\bt_\bQ_\bu_\ba_\bd_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bB_\ba_\bs_\be\n+int GetQuadOffsetsBase(Far::PatchDescriptor::Type type)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bd_\b3_\bd_\b1_\b1_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n+_\b~_\bD_\b3_\bD_\b1_\b1_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+~D3D11LegacyGregoryPatchTable()\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n+static D3D11LegacyGregoryPatchTable * Create(Far::PatchTable const\n+*farPatchTable, ID3D11DeviceContext *deviceContext)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bS_\bR_\bV\n+ID3D11ShaderResourceView * GetVertexSRV() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bd_\b3_\bd_\b1_\b1_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n+static D3D11LegacyGregoryPatchTable * Create(Far::PatchTable const\n+*farPatchTable, DEVICE_CONTEXT context)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bd_\b3_\bd_\b1_\b1_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b4_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n+_\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be_\bS_\bR_\bV\n+ID3D11ShaderResourceView * GetVertexValenceSRV() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bd_\b3_\bd_\b1_\b1_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n+_\bG_\be_\bt_\bQ_\bu_\ba_\bd_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bS_\bR_\bV\n+ID3D11ShaderResourceView * GetQuadOffsetsSRV() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bd_\b3_\bd_\b1_\b1_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n+_\bD_\b3_\bD_\b1_\b1_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+D3D11LegacyGregoryPatchTable()\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bv_\bt_\br\n-    * _\bl_\be_\bv_\be_\bl_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bd_\b3_\bd_\b1_\b1_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00698.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00698.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/vtr/componentInterfaces.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/osd/mtlCommon.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -88,40 +88,42 @@\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n+<a href=\"#nested-classes\">Classes</a> &#124;\n <a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">componentInterfaces.h File Reference</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">mtlCommon.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a01492_source.html\">../sdc/types.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00731_source.html\">../sdc/crease.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a01495_source.html\">../vtr/types.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00692_source.html\">../vtr/stackBuffer.h</a>&quot;</code><br />\n-<code>#include &lt;vector&gt;</code><br />\n+<code>#include &lt;cstddef&gt;</code><br />\n </div>\n <p><a href=\"a00698_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n+<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n+Classes</h2></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01285.html\">MTLContext</a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+</table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00909\" id=\"r_a00909\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00909.html\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr</a></td></tr>\n+<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bd5473d7d5841d48919aaa9ad0cb1f9b.html\">vtr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00698.html\">componentInterfaces.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00698.html\">mtlCommon.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,24 +1,23 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-componentInterfaces.h File Reference\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+mtlCommon.h File Reference\n #include \"../version.h\"\n-#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n-#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bc_\br_\be_\ba_\bs_\be_\b._\bh\"\n-#include \"_\b._\b._\b/_\bv_\bt_\br_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n-#include \"_\b._\b._\b/_\bv_\bt_\br_\b/_\bs_\bt_\ba_\bc_\bk_\bB_\bu_\bf_\bf_\be_\br_\b._\bh\"\n-#include <vector>\n+#include <cstddef>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n+C\bCl\bla\bas\bss\bse\bes\bs\n+class \u00a0 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt\n+\u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bv_\bt_\br\n-    * _\bc_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bs_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bm_\bt_\bl_\bC_\bo_\bm_\bm_\bo_\bn_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00698_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00698_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/vtr/componentInterfaces.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/osd/mtlCommon.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">componentInterfaces.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">mtlCommon.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00698.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2014 DreamWorks Animation LLC.</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2013 Pixar</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -118,155 +118,54 @@\n <div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_VTR_COMPONENT_INTERFACES_H</span></div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#define OPENSUBDIV3_VTR_COMPONENT_INTERFACES_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span> </div>\n-<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span> </div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#include &quot;../sdc/types.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../sdc/crease.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../vtr/types.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &quot;../vtr/stackBuffer.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span> </div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n+<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_MTL_COMMON_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_MTL_COMMON_H</span></div>\n+<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n+<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &lt;cstddef&gt;</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"keyword\">@protocol </span>MTLDevice;</div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"keyword\">@protocol </span>MTLCommandQueue;</div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span> </div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span> </div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"keyword\">namespace </span>Osd {</div>\n <div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span> </div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"keyword\">namespace </span>Vtr {</div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"keyword\">namespace </span>internal {</div>\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span> </div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span><span class=\"comment\">//  Simple classes supporting the interfaces required of generic topological</span></div>\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span><span class=\"comment\">//  types in the Scheme mask queries, e.g. &lt;typename FACE, VERTEX, etc.&gt;</span></div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span><span class=\"comment\">//  These are not used with Vtr but arguably belong with it as the details to</span></div>\n-<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span><span class=\"comment\">//  write these efficiently depends very much on intimate details of Vtr&#39;s</span></div>\n-<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span><span class=\"comment\">//  implementation, e.g. the use of tag bits, subdivision Rules, etc.</span></div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00040\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01285.html\">   40</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a> {</div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01285.html#a7d70f5acf4efd89092645b4c44e480cf\">   42</a></span>        id&lt;MTLDevice&gt; <a class=\"code hl_variable\" href=\"a01285.html#a7d70f5acf4efd89092645b4c44e480cf\">device</a> = <span class=\"keyword\">nullptr</span>;</div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01285.html#a66809eb79c7e79a491fd8c889465166b\">   43</a></span>        id&lt;MTLCommandQueue&gt; <a class=\"code hl_variable\" href=\"a01285.html#a66809eb79c7e79a491fd8c889465166b\">commandQueue</a> = <span class=\"keyword\">nullptr</span>;</div>\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span> </div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span>} <span class=\"comment\">// end namespace Osd</span></div>\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span> </div>\n+<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span> </div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n <div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span> </div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span><span class=\"comment\">//  For &lt;typename FACE&gt;, which provides information in the neighborhood of a face:</span></div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span><span class=\"keyword\">class </span>FaceInterface {</div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span>    FaceInterface() { }</div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span>    FaceInterface(<span class=\"keywordtype\">int</span> vertCount) : _vertCount(vertCount) { }</div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span>    ~FaceInterface() { }</div>\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span> </div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span><span class=\"keyword\">public</span>:  <span class=\"comment\">//  Generic interface expected of &lt;typename FACE&gt;:</span></div>\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>    <span class=\"keywordtype\">int</span> GetNumVertices()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _vertCount; }</div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span> </div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span>    <span class=\"keywordtype\">int</span> _vertCount;</div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span>};</div>\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span> </div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span> </div>\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span><span class=\"comment\">//  For &lt;typename EDGE&gt;, which provides information in the neighborhood of an edge:</span></div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span><span class=\"keyword\">class </span>EdgeInterface {</div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span>    EdgeInterface() { }</div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span>    EdgeInterface(Level <span class=\"keyword\">const</span>&amp; level) : _level(&amp;level) { }</div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span>    ~EdgeInterface() { }</div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span> </div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>    <span class=\"keywordtype\">void</span> SetIndex(<span class=\"keywordtype\">int</span> edgeIndex) { _eIndex = edgeIndex; }</div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span> </div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span><span class=\"keyword\">public</span>:  <span class=\"comment\">//  Generic interface expected of &lt;typename EDGE&gt;:</span></div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>    <span class=\"keywordtype\">int</span>   GetNumFaces()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _level-&gt;getEdgeFaces(_eIndex).size(); }</div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>    <span class=\"keywordtype\">float</span> GetSharpness()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _level-&gt;getEdgeSharpness(_eIndex); }</div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span> </div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>    <span class=\"keywordtype\">void</span> GetChildSharpnesses(Sdc::Crease <span class=\"keyword\">const</span>&amp;, <span class=\"keywordtype\">float</span> s[2])<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>        <span class=\"comment\">//  Need to use the Refinement here to identify the two child edges:</span></div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>        s[0] = s[1] = GetSharpness() - 1.0f;</div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>    }</div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span> </div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>    <span class=\"keywordtype\">void</span> GetNumVerticesPerFace(<span class=\"keywordtype\">int</span> vertsPerFace[])<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>        <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a> eFaces = _level-&gt;getEdgeFaces(_eIndex);</div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>        <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; eFaces.size(); ++i) {</div>\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span>            vertsPerFace[i] = _level-&gt;getFaceVertices(eFaces[i]).size();</div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>        }</div>\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span>    }</div>\n-<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span> </div>\n-<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span>    <span class=\"keyword\">const</span> Level* _level;</div>\n-<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span> </div>\n-<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span>    <span class=\"keywordtype\">int</span> _eIndex;</div>\n-<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span>};</div>\n-<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span> </div>\n-<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span> </div>\n-<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span><span class=\"comment\">//  For &lt;typename VERTEX&gt;, which provides information in the neighborhood of a vertex:</span></div>\n-<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span><span class=\"keyword\">class </span>VertexInterface {</div>\n-<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span>    VertexInterface() { }</div>\n-<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span>    VertexInterface(Level <span class=\"keyword\">const</span>&amp; parent, Level <span class=\"keyword\">const</span>&amp; child) : _parent(&amp;parent), _child(&amp;child) { }</div>\n-<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span>    ~VertexInterface() { }</div>\n-<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span> </div>\n-<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span>    <span class=\"keywordtype\">void</span> SetIndex(<span class=\"keywordtype\">int</span> parentIndex, <span class=\"keywordtype\">int</span> childIndex) {</div>\n-<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span>        _pIndex = parentIndex;</div>\n-<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span>        _cIndex = childIndex;</div>\n-<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\">  116</span>        _eCount = _parent-&gt;getVertexEdges(_pIndex).size();</div>\n-<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span>        _fCount = _parent-&gt;getVertexFaces(_pIndex).size();</div>\n-<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\">  118</span>    }</div>\n-<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span> </div>\n-<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span><span class=\"keyword\">public</span>:  <span class=\"comment\">//  Generic interface expected of &lt;typename VERT&gt;:</span></div>\n-<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\">  121</span>    <span class=\"keywordtype\">int</span> GetNumEdges()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _eCount; }</div>\n-<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span>    <span class=\"keywordtype\">int</span> GetNumFaces()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _fCount; }</div>\n-<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span> </div>\n-<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span>    <span class=\"keywordtype\">float</span>  GetSharpness()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _parent-&gt;getVertexSharpness(_pIndex); }</div>\n-<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span>    <span class=\"keywordtype\">float</span>* GetSharpnessPerEdge(<span class=\"keywordtype\">float</span> pSharpness[])<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span>        <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a> pEdges = _parent-&gt;getVertexEdges(_pIndex);</div>\n-<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span>        <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; _eCount; ++i) {</div>\n-<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span>            pSharpness[i] = _parent-&gt;getEdgeSharpness(pEdges[i]);</div>\n-<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span>        }</div>\n-<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span>        <span class=\"keywordflow\">return</span> pSharpness;</div>\n-<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\">  131</span>    }</div>\n-<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\">  132</span> </div>\n-<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\">  133</span>    <span class=\"keywordtype\">float</span>  GetChildSharpness(Sdc::Crease <span class=\"keyword\">const</span>&amp;)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _child-&gt;getVertexSharpness(_cIndex); }</div>\n-<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\">  134</span>    <span class=\"keywordtype\">float</span>* GetChildSharpnessPerEdge(Sdc::Crease <span class=\"keyword\">const</span>&amp; crease, <span class=\"keywordtype\">float</span> cSharpness[])<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\">  135</span>        internal::StackBuffer&lt;float,16&gt; pSharpness(_eCount);</div>\n-<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\">  136</span>        GetSharpnessPerEdge(pSharpness);</div>\n-<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\">  137</span>        crease.SubdivideEdgeSharpnessesAroundVertex(_eCount, pSharpness, cSharpness);</div>\n-<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\">  138</span>        <span class=\"keywordflow\">return</span> cSharpness;</div>\n-<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\">  139</span>    }</div>\n-<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\">  140</span> </div>\n-<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\">  141</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span>    <span class=\"keyword\">const</span> Level* _parent;</div>\n-<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\">  143</span>    <span class=\"keyword\">const</span> Level* _child;</div>\n-<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\">  144</span> </div>\n-<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\">  145</span>    <span class=\"keywordtype\">int</span> _pIndex;</div>\n-<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\">  146</span>    <span class=\"keywordtype\">int</span> _cIndex;</div>\n-<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\">  147</span>    <span class=\"keywordtype\">int</span> _eCount;</div>\n-<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\">  148</span>    <span class=\"keywordtype\">int</span> _fCount;</div>\n-<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\">  149</span>};</div>\n-<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\">  150</span> </div>\n-<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\">  151</span>} <span class=\"comment\">// end namespace internal</span></div>\n-<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\">  152</span>} <span class=\"comment\">// end namespace Vtr</span></div>\n-<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\">  153</span> </div>\n-<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\">  154</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\">  155</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\">  156</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\">  157</span> </div>\n-<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\">  158</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_VTR_COMPONENT_INTERFACES_H */</span><span class=\"preprocessor\"></span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa00909_html_a7c31dd7ef75734862d363b332be917dd\"><div class=\"ttname\"><a href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstIndexArray</a></div><div class=\"ttdeci\">ConstArray&lt; Index &gt; ConstIndexArray</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01495_source.html#l00080\">types.h:80</a></div></div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">//OPENSUBDIV3_OSD_MTL_COMMON_H</span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa01285_html\"><div class=\"ttname\"><a href=\"a01285.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLContext</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00698_source.html#l00040\">mtlCommon.h:40</a></div></div>\n+<div class=\"ttc\" id=\"aa01285_html_a66809eb79c7e79a491fd8c889465166b\"><div class=\"ttname\"><a href=\"a01285.html#a66809eb79c7e79a491fd8c889465166b\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLContext::commandQueue</a></div><div class=\"ttdeci\">id&lt; MTLCommandQueue &gt; commandQueue</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00698_source.html#l00043\">mtlCommon.h:43</a></div></div>\n+<div class=\"ttc\" id=\"aa01285_html_a7d70f5acf4efd89092645b4c44e480cf\"><div class=\"ttname\"><a href=\"a01285.html#a7d70f5acf4efd89092645b4c44e480cf\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLContext::device</a></div><div class=\"ttdeci\">id&lt; MTLDevice &gt; device</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00698_source.html#l00042\">mtlCommon.h:42</a></div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bd5473d7d5841d48919aaa9ad0cb1f9b.html\">vtr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00698.html\">componentInterfaces.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00698.html\">mtlCommon.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-componentInterfaces.h\n+mtlCommon.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2014 DreamWorks Animation LLC.\n+2// Copyright 2013 Pixar\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -23,158 +23,51 @@\n 17//\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n-24#ifndef OPENSUBDIV3_VTR_COMPONENT_INTERFACES_H\n-25#define OPENSUBDIV3_VTR_COMPONENT_INTERFACES_H\n-26\n-27#include \"../version.h\"\n-28\n-29#include \"../sdc/types.h\"\n-30#include \"../sdc/crease.h\"\n-31#include \"../vtr/types.h\"\n-32#include \"../vtr/stackBuffer.h\"\n-33\n-34#include <vector>\n-35\n-36\n-37namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-38namespace OPENSUBDIV_VERSION {\n+24\n+25#ifndef OPENSUBDIV3_OSD_MTL_COMMON_H\n+26#define OPENSUBDIV3_OSD_MTL_COMMON_H\n+27\n+28#include \"../version.h\"\n+29\n+30#include <cstddef>\n+31\n+32@protocol MTLDevice;\n+33@protocol MTLCommandQueue;\n+34\n+35namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+36namespace OPENSUBDIV_VERSION {\n+37\n+38namespace Osd {\n 39\n-40namespace Vtr {\n-41namespace internal {\n-42\n-43//\n-44// Simple classes supporting the interfaces required of generic topological\n-45// types in the Scheme mask queries, e.g. <typename FACE, VERTEX, etc.>\n-46//\n-47// These are not used with Vtr but arguably belong with it as the details to\n-48// write these efficiently depends very much on intimate details of Vtr's\n-49// implementation, e.g. the use of tag bits, subdivision Rules, etc.\n-50//\n-51\n+_\b4_\b0class _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt {\n+41public:\n+_\b4_\b2 id<MTLDevice> _\bd_\be_\bv_\bi_\bc_\be = nullptr;\n+_\b4_\b3 id<MTLCommandQueue> _\bc_\bo_\bm_\bm_\ba_\bn_\bd_\bQ_\bu_\be_\bu_\be = nullptr;\n+44};\n+45\n+46} // end namespace Osd\n+47\n+48} // end namespace OPENSUBDIV_VERSION\n+49using namespace OPENSUBDIV_VERSION;\n+50\n+51} // end namespace OpenSubdiv\n 52\n-53//\n-54// For <typename FACE>, which provides information in the neighborhood of a\n-face:\n-55//\n-56class FaceInterface {\n-57public:\n-58 FaceInterface() { }\n-59 FaceInterface(int vertCount) : _vertCount(vertCount) { }\n-60 ~FaceInterface() { }\n-61\n-62public: // Generic interface expected of <typename FACE>:\n-63 int GetNumVertices() const { return _vertCount; }\n-64\n-65private:\n-66 int _vertCount;\n-67};\n-68\n-69\n-70//\n-71// For <typename EDGE>, which provides information in the neighborhood of an\n-edge:\n-72//\n-73class EdgeInterface {\n-74public:\n-75 EdgeInterface() { }\n-76 EdgeInterface(Level const& level) : _level(&level) { }\n-77 ~EdgeInterface() { }\n-78\n-79 void SetIndex(int edgeIndex) { _eIndex = edgeIndex; }\n-80\n-81public: // Generic interface expected of <typename EDGE>:\n-82 int GetNumFaces() const { return _level->getEdgeFaces(_eIndex).size(); }\n-83 float GetSharpness() const { return _level->getEdgeSharpness(_eIndex); }\n-84\n-85 void GetChildSharpnesses(Sdc::Crease const&, float s[2]) const {\n-86 // Need to use the Refinement here to identify the two child edges:\n-87 s[0] = s[1] = GetSharpness() - 1.0f;\n-88 }\n-89\n-90 void GetNumVerticesPerFace(int vertsPerFace[]) const {\n-91 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by eFaces = _level->getEdgeFaces(_eIndex);\n-92 for (int i = 0; i < eFaces.size(); ++i) {\n-93 vertsPerFace[i] = _level->getFaceVertices(eFaces[i]).size();\n-94 }\n-95 }\n-96\n-97private:\n-98 const Level* _level;\n-99\n-100 int _eIndex;\n-101};\n-102\n-103\n-104//\n-105// For <typename VERTEX>, which provides information in the neighborhood of\n-a vertex:\n-106//\n-107class VertexInterface {\n-108public:\n-109 VertexInterface() { }\n-110 VertexInterface(Level const& parent, Level const& child) : _parent\n-(&parent), _child(&child) { }\n-111 ~VertexInterface() { }\n-112\n-113 void SetIndex(int parentIndex, int childIndex) {\n-114 _pIndex = parentIndex;\n-115 _cIndex = childIndex;\n-116 _eCount = _parent->getVertexEdges(_pIndex).size();\n-117 _fCount = _parent->getVertexFaces(_pIndex).size();\n-118 }\n-119\n-120public: // Generic interface expected of <typename VERT>:\n-121 int GetNumEdges() const { return _eCount; }\n-122 int GetNumFaces() const { return _fCount; }\n-123\n-124 float GetSharpness() const { return _parent->getVertexSharpness(_pIndex); }\n-125 float* GetSharpnessPerEdge(float pSharpness[]) const {\n-126 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by pEdges = _parent->getVertexEdges(_pIndex);\n-127 for (int i = 0; i < _eCount; ++i) {\n-128 pSharpness[i] = _parent->getEdgeSharpness(pEdges[i]);\n-129 }\n-130 return pSharpness;\n-131 }\n-132\n-133 float GetChildSharpness(Sdc::Crease const&) const { return _child-\n->getVertexSharpness(_cIndex); }\n-134 float* GetChildSharpnessPerEdge(Sdc::Crease const& crease, float cSharpness\n-[]) const {\n-135 internal::StackBuffer<float,16> pSharpness(_eCount);\n-136 GetSharpnessPerEdge(pSharpness);\n-137 crease.SubdivideEdgeSharpnessesAroundVertex(_eCount, pSharpness,\n-cSharpness);\n-138 return cSharpness;\n-139 }\n-140\n-141private:\n-142 const Level* _parent;\n-143 const Level* _child;\n-144\n-145 int _pIndex;\n-146 int _cIndex;\n-147 int _eCount;\n-148 int _fCount;\n-149};\n-150\n-151} // end namespace internal\n-152} // end namespace Vtr\n-153\n-154} // end namespace OPENSUBDIV_VERSION\n-155using namespace OPENSUBDIV_VERSION;\n-156} // end namespace OpenSubdiv\n-157\n-158#endif /* OPENSUBDIV3_VTR_COMPONENT_INTERFACES_H */\n+53#endif //OPENSUBDIV3_OSD_MTL_COMMON_H\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n-ConstArray< Index > ConstIndexArray\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b8_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bm_\bo_\bn_\b._\bh_\b:_\b4_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt_\b:_\b:_\bc_\bo_\bm_\bm_\ba_\bn_\bd_\bQ_\bu_\be_\bu_\be\n+id< MTLCommandQueue > commandQueue\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bm_\bo_\bn_\b._\bh_\b:_\b4_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt_\b:_\b:_\bd_\be_\bv_\bi_\bc_\be\n+id< MTLDevice > device\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bm_\bo_\bn_\b._\bh_\b:_\b4_\b2\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bv_\bt_\br\n-    * _\bc_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bs_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bm_\bt_\bl_\bC_\bo_\bm_\bm_\bo_\bn_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00701.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00701.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/bfr/limits.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/osd/glXFBEvaluator.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -90,41 +90,47 @@\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> &#124;\n <a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">limits.h File Reference</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">glXFBEvaluator.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a01486_source.html\">../far/types.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00722_source.html\">../osd/opengl.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a01489_source.html\">../osd/types.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00764_source.html\">../osd/bufferDescriptor.h</a>&quot;</code><br />\n </div>\n <p><a href=\"a00701_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00917.html\">Limits</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Simple struct with limits related to topology.  <a href=\"a00917.html#details\">More...</a><br /></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01249.html\">GLStencilTableTBO</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">GL TextureBuffer stencil table.  <a href=\"a01249.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01253.html\">GLXFBEvaluator</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00907\" id=\"r_a00907\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00907.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr</a></td></tr>\n+<tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far</a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_fa5edef2a780a73fbfb6a11f1af88ceb.html\">bfr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00701.html\">limits.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00701.html\">glXFBEvaluator.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,24 +1,30 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-limits.h File Reference\n+glXFBEvaluator.h File Reference\n #include \"../version.h\"\n-#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n+#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bo_\bp_\be_\bn_\bg_\bl_\b._\bh\"\n+#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n+#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-struct \u00a0 _\bL_\bi_\bm_\bi_\bt_\bs\n-\u00a0        Simple struct with limits related to topology. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bT_\bB_\bO\n+\u00a0       GL TextureBuffer stencil table. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br\n+\u00a0\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bb_\bf_\br\n-    * _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00701.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00701.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,3 +1,4 @@\n var a00701 = [\n-    [\"Limits\", \"a00917.html\", null]\n+    [\"GLStencilTableTBO\", \"a01249.html\", \"a01249\"],\n+    [\"GLXFBEvaluator\", \"a01253.html\", \"a01253\"]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00701_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00701_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/bfr/limits.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/osd/glXFBEvaluator.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">limits.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">glXFBEvaluator.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00701.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2021 Pixar</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2015 Pixar</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -119,55 +119,1205 @@\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_BFR_LIMITS_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_BFR_LIMITS_H</span></div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_GL_XFB_EVALUATOR_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_GL_XFB_EVALUATOR_H</span></div>\n <div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n <div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n <div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../far/types.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00032\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00905.html\">   32</a></span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"foldopen\" id=\"foldopen00033\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00906.html\">   33</a></span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00035\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00907.html\">   35</a></span><span class=\"keyword\">namespace </span>Bfr {</div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../osd/opengl.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../osd/types.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &quot;../osd/bufferDescriptor.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n <div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00040\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00917.html\">   40</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a00917.html\">Limits</a> {</div>\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00917.html#aca372fcd4c25aa589418934c5056b16c\">   42</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00917.html#aca372fcd4c25aa589418934c5056b16c\">MaxValence</a>()  { <span class=\"keywordflow\">return</span> Far::VALENCE_LIMIT; }</div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span> </div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00917.html#a058dee146ff7dafb8d2b8cb0d09f5da8\">   46</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00917.html#a058dee146ff7dafb8d2b8cb0d09f5da8\">MaxFaceSize</a>() { <span class=\"keywordflow\">return</span> Far::VALENCE_LIMIT; }</div>\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span> </div>\n-<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span>} <span class=\"comment\">// end namespace Bfr</span></div>\n-</div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span> </div>\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-</div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-</div>\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span> </div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_BFR_LIMITS_H */</span><span class=\"preprocessor\"></span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa00917_html\"><div class=\"ttname\"><a href=\"a00917.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Limits</a></div><div class=\"ttdoc\">Simple struct with limits related to topology.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00040\">limits.h:40</a></div></div>\n-<div class=\"ttc\" id=\"aa00917_html_a058dee146ff7dafb8d2b8cb0d09f5da8\"><div class=\"ttname\"><a href=\"a00917.html#a058dee146ff7dafb8d2b8cb0d09f5da8\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Limits::MaxFaceSize</a></div><div class=\"ttdeci\">static int MaxFaceSize()</div><div class=\"ttdoc\">Returns the maximum allowable size for a face (number of vertices)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00046\">limits.h:46</a></div></div>\n-<div class=\"ttc\" id=\"aa00917_html_aca372fcd4c25aa589418934c5056b16c\"><div class=\"ttname\"><a href=\"a00917.html#aca372fcd4c25aa589418934c5056b16c\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Limits::MaxValence</a></div><div class=\"ttdeci\">static int MaxValence()</div><div class=\"ttdoc\">Returns the maximum allowable valence for a vertex.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00042\">limits.h:42</a></div></div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">namespace </span>Far {</div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span>    <span class=\"keyword\">class </span>PatchTable;</div>\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span>    <span class=\"keyword\">class </span>StencilTable;</div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span>    <span class=\"keyword\">class </span>LimitStencilTable;</div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span>}</div>\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span> </div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"keyword\">namespace </span>Osd {</div>\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00052\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01249.html\">   52</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01249.html\">GLStencilTableTBO</a> {</div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"foldopen\" id=\"foldopen00054\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01249.html#a24a8210b637a5b0fca2b258de3b8b8a6\">   54</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01249.html\">GLStencilTableTBO</a> *<a class=\"code hl_function\" href=\"a01249.html#a24a8210b637a5b0fca2b258de3b8b8a6\">Create</a>(</div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span>        <a class=\"code hl_class\" href=\"a01065.html\">Far::StencilTable</a> <span class=\"keyword\">const</span> *stencilTable, <span class=\"keywordtype\">void</span> *deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span>        <span class=\"keywordflow\">return</span> <span class=\"keyword\">new</span> <a class=\"code hl_class\" href=\"a01249.html\">GLStencilTableTBO</a>(stencilTable);</div>\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00060\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01249.html#ae38a4728f9debae7733ab48cfadd8312\">   60</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01249.html\">GLStencilTableTBO</a> *<a class=\"code hl_function\" href=\"a01249.html#ae38a4728f9debae7733ab48cfadd8312\">Create</a>(</div>\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span>        <a class=\"code hl_class\" href=\"a01081.html\">Far::LimitStencilTable</a> <span class=\"keyword\">const</span> *limitStencilTable,</div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span>        <span class=\"keywordtype\">void</span> *deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span>        <span class=\"keywordflow\">return</span> <span class=\"keyword\">new</span> <a class=\"code hl_class\" href=\"a01249.html\">GLStencilTableTBO</a>(limitStencilTable);</div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span> </div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01249.html#abbba46ba67be00a0eac751e3e731db6e\">   67</a></span>    <span class=\"keyword\">explicit</span> <a class=\"code hl_function\" href=\"a01249.html#abbba46ba67be00a0eac751e3e731db6e\">GLStencilTableTBO</a>(<a class=\"code hl_class\" href=\"a01065.html\">Far::StencilTable</a> <span class=\"keyword\">const</span> *stencilTable);</div>\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01249.html#ac74a769daf1fe45575a16b738bb761cd\">   68</a></span>    <span class=\"keyword\">explicit</span> <a class=\"code hl_function\" href=\"a01249.html#ac74a769daf1fe45575a16b738bb761cd\">GLStencilTableTBO</a>(<a class=\"code hl_class\" href=\"a01081.html\">Far::LimitStencilTable</a> <span class=\"keyword\">const</span> *limitStencilTable);</div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01249.html#a80dc5a5837edb75950ad0306595cbdcc\">   69</a></span>    <a class=\"code hl_function\" href=\"a01249.html#a80dc5a5837edb75950ad0306595cbdcc\">~GLStencilTableTBO</a>();</div>\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span> </div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>    <span class=\"comment\">// interfaces needed for GLSLTransformFeedbackKernel</span></div>\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01249.html#a233d7a80471d1d90eb2caf732e25115b\">   72</a></span>    GLuint <a class=\"code hl_function\" href=\"a01249.html#a233d7a80471d1d90eb2caf732e25115b\">GetSizesTexture</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _sizes; }</div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01249.html#afef26723ecaa12060e3e4744c0e206a9\">   73</a></span>    GLuint <a class=\"code hl_function\" href=\"a01249.html#afef26723ecaa12060e3e4744c0e206a9\">GetOffsetsTexture</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _offsets; }</div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01249.html#a809a960b308df1bca3d8f406dbf9f422\">   74</a></span>    GLuint <a class=\"code hl_function\" href=\"a01249.html#a809a960b308df1bca3d8f406dbf9f422\">GetIndicesTexture</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _indices; }</div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01249.html#ad5f4a852f17762c50c5d3011b11155cb\">   75</a></span>    GLuint <a class=\"code hl_function\" href=\"a01249.html#ad5f4a852f17762c50c5d3011b11155cb\">GetWeightsTexture</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _weights; }</div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01249.html#afd4ff3060d31d9650d6c2820d870fda8\">   76</a></span>    GLuint <a class=\"code hl_function\" href=\"a01249.html#afd4ff3060d31d9650d6c2820d870fda8\">GetDuWeightsTexture</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _duWeights; }</div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01249.html#afb1cd9d41b168ceeadd4892bfb3d3f77\">   77</a></span>    GLuint <a class=\"code hl_function\" href=\"a01249.html#afb1cd9d41b168ceeadd4892bfb3d3f77\">GetDvWeightsTexture</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _dvWeights; }</div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01249.html#a70fdd6f46c3a89dd4627b67c9a37d02e\">   78</a></span>    GLuint <a class=\"code hl_function\" href=\"a01249.html#a70fdd6f46c3a89dd4627b67c9a37d02e\">GetDuuWeightsTexture</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _duuWeights; }</div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01249.html#a6987f68e0e090437e6a28dadce50f566\">   79</a></span>    GLuint <a class=\"code hl_function\" href=\"a01249.html#a6987f68e0e090437e6a28dadce50f566\">GetDuvWeightsTexture</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _duvWeights; }</div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01249.html#a5d98fa1e61dcd32b8deb16bc9cf04d52\">   80</a></span>    GLuint <a class=\"code hl_function\" href=\"a01249.html#a5d98fa1e61dcd32b8deb16bc9cf04d52\">GetDvvWeightsTexture</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _dvvWeights; }</div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01249.html#a65836d2070b943c8fecbad926d074de2\">   81</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01249.html#a65836d2070b943c8fecbad926d074de2\">GetNumStencils</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _numStencils; }</div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span> </div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span>    GLuint _sizes;</div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>    GLuint _offsets;</div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>    GLuint _indices;</div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>    GLuint _weights;</div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>    GLuint _duWeights;</div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>    GLuint _dvWeights;</div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>    GLuint _duuWeights;</div>\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>    GLuint _duvWeights;</div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>    GLuint _dvvWeights;</div>\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span>    <span class=\"keywordtype\">int</span> _numStencils;</div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span> </div>\n+<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span><span class=\"comment\">// ---------------------------------------------------------------------------</span></div>\n+<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00098\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html\">   98</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01253.html\">GLXFBEvaluator</a> {</div>\n+<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#a2c24b70c9312d8dff3fecb9ddea52c44\">  100</a></span>    <span class=\"keyword\">typedef</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_typedef\" href=\"a01253.html#a2c24b70c9312d8dff3fecb9ddea52c44\">Instantiatable</a>;</div>\n+<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span> </div>\n+<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00104\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#a5be617906ad76ddcc4795dd6557a79f7\">  104</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01253.html\">GLXFBEvaluator</a> *<a class=\"code hl_function\" href=\"a01253.html#a5be617906ad76ddcc4795dd6557a79f7\">Create</a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span>                                  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span>                                  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span>                                  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span>                                  DEVICE_CONTEXT deviceContext) {</div>\n+<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span>        <span class=\"keywordtype\">bool</span> interleavedDerivativeBuffers = deviceContext</div>\n+<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span>            ? deviceContext-&gt;AreInterleavedDerivativeBuffers()</div>\n+<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span>            : <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01253.html#a5be617906ad76ddcc4795dd6557a79f7\">Create</a>(srcDesc, dstDesc, duDesc, dvDesc,</div>\n+<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span>                      interleavedDerivativeBuffers);</div>\n+<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00117\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#a429f25fc87b709736f619fb76bd6c47f\">  117</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01253.html\">GLXFBEvaluator</a> *<a class=\"code hl_function\" href=\"a01253.html#a429f25fc87b709736f619fb76bd6c47f\">Create</a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\">  118</span>                                  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span>                                  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span>                                  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\">  121</span>                                  <span class=\"keywordtype\">void</span> * deviceContext) {</div>\n+<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span>        (void)deviceContext;  <span class=\"comment\">// not used</span></div>\n+<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01253.html#a5be617906ad76ddcc4795dd6557a79f7\">Create</a>(srcDesc, dstDesc, duDesc, dvDesc);</div>\n+<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00126\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#a1355f12e6d931e3ab6c8429b798d0269\">  126</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01253.html\">GLXFBEvaluator</a> * <a class=\"code hl_function\" href=\"a01253.html#a1355f12e6d931e3ab6c8429b798d0269\">Create</a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span>                                   <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span>                                   <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span>                                   <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span>                                   <span class=\"keywordtype\">bool</span> interleavedDerivativeBuffers = <span class=\"keyword\">false</span>) {</div>\n+<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\">  131</span>        <a class=\"code hl_class\" href=\"a01253.html\">GLXFBEvaluator</a> *instance = <span class=\"keyword\">new</span> <a class=\"code hl_class\" href=\"a01253.html\">GLXFBEvaluator</a>(interleavedDerivativeBuffers);</div>\n+<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\">  132</span>        <span class=\"keywordflow\">if</span> (instance-&gt;<a class=\"code hl_function\" href=\"a01253.html#ade1086349c1a452f60bcf281383ceec2\">Compile</a>(srcDesc, dstDesc, duDesc, dvDesc))</div>\n+<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\">  133</span>            <span class=\"keywordflow\">return</span> instance;</div>\n+<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\">  134</span>        <span class=\"keyword\">delete</span> instance;</div>\n+<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\">  135</span>        <span class=\"keywordflow\">return</span> NULL;</div>\n+<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\">  136</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\">  137</span> </div>\n+<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\">  139</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00140\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#a591dd44e4e7d35454ab63664150137a3\">  140</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01253.html\">GLXFBEvaluator</a> *<a class=\"code hl_function\" href=\"a01253.html#a591dd44e4e7d35454ab63664150137a3\">Create</a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\">  141</span>                                  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span>                                  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\">  143</span>                                  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\">  144</span>                                  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\">  145</span>                                  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\">  146</span>                                  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\">  147</span>                                  DEVICE_CONTEXT deviceContext) {</div>\n+<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\">  148</span>        <span class=\"keywordtype\">bool</span> interleavedDerivativeBuffers = deviceContext</div>\n+<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\">  149</span>            ? deviceContext-&gt;AreInterleavedDerivativeBuffers()</div>\n+<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\">  150</span>            : <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\">  151</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01253.html#a5be617906ad76ddcc4795dd6557a79f7\">Create</a>(srcDesc, dstDesc, duDesc, dvDesc,</div>\n+<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\">  152</span>                      duuDesc, duvDesc, dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\">  153</span>                      interleavedDerivativeBuffers);</div>\n+<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\">  154</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\">  155</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00157\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#aaf7aeae38dd52386c15108d7e94eb30f\">  157</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01253.html\">GLXFBEvaluator</a> *<a class=\"code hl_function\" href=\"a01253.html#aaf7aeae38dd52386c15108d7e94eb30f\">Create</a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\">  158</span>                                  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\">  159</span>                                  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\">  160</span>                                  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\">  161</span>                                  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\">  162</span>                                  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\">  163</span>                                  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\">  164</span>                                  <span class=\"keywordtype\">void</span> * deviceContext) {</div>\n+<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\">  165</span>        (void)deviceContext;  <span class=\"comment\">// not used</span></div>\n+<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\">  166</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01253.html#a5be617906ad76ddcc4795dd6557a79f7\">Create</a>(srcDesc, dstDesc, duDesc, dvDesc,</div>\n+<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\">  167</span>                      duuDesc, duvDesc, dvvDesc);</div>\n+<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\">  168</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\">  169</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00170\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#a3a08d0f058b0d8dde7c853734ee446c7\">  170</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01253.html\">GLXFBEvaluator</a> * <a class=\"code hl_function\" href=\"a01253.html#a3a08d0f058b0d8dde7c853734ee446c7\">Create</a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span>                                   <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\">  172</span>                                   <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\">  173</span>                                   <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\">  174</span>                                   <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\">  175</span>                                   <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\">  176</span>                                   <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span>                                   <span class=\"keywordtype\">bool</span> interleavedDerivativeBuffers = <span class=\"keyword\">false</span>) {</div>\n+<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\">  178</span>        <a class=\"code hl_class\" href=\"a01253.html\">GLXFBEvaluator</a> *instance = <span class=\"keyword\">new</span> <a class=\"code hl_class\" href=\"a01253.html\">GLXFBEvaluator</a>(interleavedDerivativeBuffers);</div>\n+<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\">  179</span>        <span class=\"keywordflow\">if</span> (instance-&gt;<a class=\"code hl_function\" href=\"a01253.html#ade1086349c1a452f60bcf281383ceec2\">Compile</a>(srcDesc, dstDesc, duDesc, dvDesc,</div>\n+<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\">  180</span>                              duuDesc, duvDesc, dvvDesc))</div>\n+<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\">  181</span>            <span class=\"keywordflow\">return</span> instance;</div>\n+<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\">  182</span>        <span class=\"keyword\">delete</span> instance;</div>\n+<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\">  183</span>        <span class=\"keywordflow\">return</span> NULL;</div>\n+<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\">  184</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\">  185</span> </div>\n+<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#a1932f725b28e271ab11ca768ba3bb01e\">  199</a></span>    <a class=\"code hl_function\" href=\"a01253.html#a1932f725b28e271ab11ca768ba3bb01e\">GLXFBEvaluator</a>(<span class=\"keywordtype\">bool</span> interleavedDerivativeBuffers = <span class=\"keyword\">false</span>);</div>\n+<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\">  200</span> </div>\n+<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#adcf442a3c8cf38e102ed5cd50851e006\">  202</a></span>    <a class=\"code hl_function\" href=\"a01253.html#adcf442a3c8cf38e102ed5cd50851e006\">~GLXFBEvaluator</a>();</div>\n+<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\">  203</span> </div>\n+<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\">  209</span> </div>\n+<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\">  237</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00238\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#ace53e6fcf744de81b768e33166d7201c\">  238</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01253.html#ace53e6fcf744de81b768e33166d7201c\">EvalStencils</a>(</div>\n+<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\">  239</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\">  240</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\">  241</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n+<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\">  242</span>        <a class=\"code hl_class\" href=\"a01253.html\">GLXFBEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n+<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\">  243</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\">  244</span> </div>\n+<div class=\"line\"><a id=\"l00245\" name=\"l00245\"></a><span class=\"lineno\">  245</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\">  246</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01253.html#ace53e6fcf744de81b768e33166d7201c\">EvalStencils</a>(srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l00247\" name=\"l00247\"></a><span class=\"lineno\">  247</span>                                          dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00248\" name=\"l00248\"></a><span class=\"lineno\">  248</span>                                          stencilTable);</div>\n+<div class=\"line\"><a id=\"l00249\" name=\"l00249\"></a><span class=\"lineno\">  249</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00250\" name=\"l00250\"></a><span class=\"lineno\">  250</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n+<div class=\"line\"><a id=\"l00251\" name=\"l00251\"></a><span class=\"lineno\">  251</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00252\" name=\"l00252\"></a><span class=\"lineno\">  252</span>            instance = <a class=\"code hl_function\" href=\"a01253.html#a5be617906ad76ddcc4795dd6557a79f7\">Create</a>(srcDesc, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00253\" name=\"l00253\"></a><span class=\"lineno\">  253</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l00254\" name=\"l00254\"></a><span class=\"lineno\">  254</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>());</div>\n+<div class=\"line\"><a id=\"l00255\" name=\"l00255\"></a><span class=\"lineno\">  255</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l00256\" name=\"l00256\"></a><span class=\"lineno\">  256</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01253.html#ace53e6fcf744de81b768e33166d7201c\">EvalStencils</a>(srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l00257\" name=\"l00257\"></a><span class=\"lineno\">  257</span>                                                dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00258\" name=\"l00258\"></a><span class=\"lineno\">  258</span>                                                stencilTable);</div>\n+<div class=\"line\"><a id=\"l00259\" name=\"l00259\"></a><span class=\"lineno\">  259</span>                <span class=\"keyword\">delete</span> instance;</div>\n+<div class=\"line\"><a id=\"l00260\" name=\"l00260\"></a><span class=\"lineno\">  260</span>                <span class=\"keywordflow\">return</span> r;</div>\n+<div class=\"line\"><a id=\"l00261\" name=\"l00261\"></a><span class=\"lineno\">  261</span>            }</div>\n+<div class=\"line\"><a id=\"l00262\" name=\"l00262\"></a><span class=\"lineno\">  262</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00263\" name=\"l00263\"></a><span class=\"lineno\">  263</span>        }</div>\n+<div class=\"line\"><a id=\"l00264\" name=\"l00264\"></a><span class=\"lineno\">  264</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00265\" name=\"l00265\"></a><span class=\"lineno\">  265</span> </div>\n+<div class=\"line\"><a id=\"l00305\" name=\"l00305\"></a><span class=\"lineno\">  305</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00306\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00306\" name=\"l00306\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#a432c889974c11c85b8a7748412b9bfd8\">  306</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01253.html#a432c889974c11c85b8a7748412b9bfd8\">EvalStencils</a>(</div>\n+<div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\">  307</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00308\" name=\"l00308\"></a><span class=\"lineno\">  308</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00309\" name=\"l00309\"></a><span class=\"lineno\">  309</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00310\" name=\"l00310\"></a><span class=\"lineno\">  310</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00311\" name=\"l00311\"></a><span class=\"lineno\">  311</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n+<div class=\"line\"><a id=\"l00312\" name=\"l00312\"></a><span class=\"lineno\">  312</span>        <a class=\"code hl_class\" href=\"a01253.html\">GLXFBEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n+<div class=\"line\"><a id=\"l00313\" name=\"l00313\"></a><span class=\"lineno\">  313</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l00314\" name=\"l00314\"></a><span class=\"lineno\">  314</span> </div>\n+<div class=\"line\"><a id=\"l00315\" name=\"l00315\"></a><span class=\"lineno\">  315</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l00316\" name=\"l00316\"></a><span class=\"lineno\">  316</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01253.html#ace53e6fcf744de81b768e33166d7201c\">EvalStencils</a>(srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l00317\" name=\"l00317\"></a><span class=\"lineno\">  317</span>                                          dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00318\" name=\"l00318\"></a><span class=\"lineno\">  318</span>                                          duBuffer,  duDesc,</div>\n+<div class=\"line\"><a id=\"l00319\" name=\"l00319\"></a><span class=\"lineno\">  319</span>                                          dvBuffer,  dvDesc,</div>\n+<div class=\"line\"><a id=\"l00320\" name=\"l00320\"></a><span class=\"lineno\">  320</span>                                          stencilTable);</div>\n+<div class=\"line\"><a id=\"l00321\" name=\"l00321\"></a><span class=\"lineno\">  321</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00322\" name=\"l00322\"></a><span class=\"lineno\">  322</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n+<div class=\"line\"><a id=\"l00323\" name=\"l00323\"></a><span class=\"lineno\">  323</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\">  324</span>            instance = <a class=\"code hl_function\" href=\"a01253.html#a5be617906ad76ddcc4795dd6557a79f7\">Create</a>(srcDesc, dstDesc, duDesc, dvDesc);</div>\n+<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\">  325</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\">  326</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01253.html#ace53e6fcf744de81b768e33166d7201c\">EvalStencils</a>(srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\">  327</span>                                                dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\">  328</span>                                                duBuffer,  duDesc,</div>\n+<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\">  329</span>                                                dvBuffer,  dvDesc,</div>\n+<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\">  330</span>                                                stencilTable);</div>\n+<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\">  331</span>                <span class=\"keyword\">delete</span> instance;</div>\n+<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\">  332</span>                <span class=\"keywordflow\">return</span> r;</div>\n+<div class=\"line\"><a id=\"l00333\" name=\"l00333\"></a><span class=\"lineno\">  333</span>            }</div>\n+<div class=\"line\"><a id=\"l00334\" name=\"l00334\"></a><span class=\"lineno\">  334</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00335\" name=\"l00335\"></a><span class=\"lineno\">  335</span>        }</div>\n+<div class=\"line\"><a id=\"l00336\" name=\"l00336\"></a><span class=\"lineno\">  336</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00337\" name=\"l00337\"></a><span class=\"lineno\">  337</span> </div>\n+<div class=\"line\"><a id=\"l00395\" name=\"l00395\"></a><span class=\"lineno\">  395</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00396\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00396\" name=\"l00396\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#a327901007bb31de57205e906c2f7ccbf\">  396</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01253.html#a327901007bb31de57205e906c2f7ccbf\">EvalStencils</a>(</div>\n+<div class=\"line\"><a id=\"l00397\" name=\"l00397\"></a><span class=\"lineno\">  397</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00398\" name=\"l00398\"></a><span class=\"lineno\">  398</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00399\" name=\"l00399\"></a><span class=\"lineno\">  399</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00400\" name=\"l00400\"></a><span class=\"lineno\">  400</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00401\" name=\"l00401\"></a><span class=\"lineno\">  401</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l00402\" name=\"l00402\"></a><span class=\"lineno\">  402</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l00403\" name=\"l00403\"></a><span class=\"lineno\">  403</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00404\" name=\"l00404\"></a><span class=\"lineno\">  404</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n+<div class=\"line\"><a id=\"l00405\" name=\"l00405\"></a><span class=\"lineno\">  405</span>        <a class=\"code hl_class\" href=\"a01253.html\">GLXFBEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n+<div class=\"line\"><a id=\"l00406\" name=\"l00406\"></a><span class=\"lineno\">  406</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l00407\" name=\"l00407\"></a><span class=\"lineno\">  407</span> </div>\n+<div class=\"line\"><a id=\"l00408\" name=\"l00408\"></a><span class=\"lineno\">  408</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l00409\" name=\"l00409\"></a><span class=\"lineno\">  409</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01253.html#ace53e6fcf744de81b768e33166d7201c\">EvalStencils</a>(srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l00410\" name=\"l00410\"></a><span class=\"lineno\">  410</span>                                          dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00411\" name=\"l00411\"></a><span class=\"lineno\">  411</span>                                          duBuffer,  duDesc,</div>\n+<div class=\"line\"><a id=\"l00412\" name=\"l00412\"></a><span class=\"lineno\">  412</span>                                          dvBuffer,  dvDesc,</div>\n+<div class=\"line\"><a id=\"l00413\" name=\"l00413\"></a><span class=\"lineno\">  413</span>                                          duuBuffer, duuDesc,</div>\n+<div class=\"line\"><a id=\"l00414\" name=\"l00414\"></a><span class=\"lineno\">  414</span>                                          duvBuffer, duvDesc,</div>\n+<div class=\"line\"><a id=\"l00415\" name=\"l00415\"></a><span class=\"lineno\">  415</span>                                          dvvBuffer, dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00416\" name=\"l00416\"></a><span class=\"lineno\">  416</span>                                          stencilTable);</div>\n+<div class=\"line\"><a id=\"l00417\" name=\"l00417\"></a><span class=\"lineno\">  417</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00418\" name=\"l00418\"></a><span class=\"lineno\">  418</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n+<div class=\"line\"><a id=\"l00419\" name=\"l00419\"></a><span class=\"lineno\">  419</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00420\" name=\"l00420\"></a><span class=\"lineno\">  420</span>            instance = <a class=\"code hl_function\" href=\"a01253.html#a5be617906ad76ddcc4795dd6557a79f7\">Create</a>(srcDesc, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00421\" name=\"l00421\"></a><span class=\"lineno\">  421</span>                              duDesc, dvDesc,</div>\n+<div class=\"line\"><a id=\"l00422\" name=\"l00422\"></a><span class=\"lineno\">  422</span>                              duuDesc, duvDesc, dvvDesc);</div>\n+<div class=\"line\"><a id=\"l00423\" name=\"l00423\"></a><span class=\"lineno\">  423</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l00424\" name=\"l00424\"></a><span class=\"lineno\">  424</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01253.html#ace53e6fcf744de81b768e33166d7201c\">EvalStencils</a>(srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l00425\" name=\"l00425\"></a><span class=\"lineno\">  425</span>                                                dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00426\" name=\"l00426\"></a><span class=\"lineno\">  426</span>                                                duBuffer,  duDesc,</div>\n+<div class=\"line\"><a id=\"l00427\" name=\"l00427\"></a><span class=\"lineno\">  427</span>                                                dvBuffer,  dvDesc,</div>\n+<div class=\"line\"><a id=\"l00428\" name=\"l00428\"></a><span class=\"lineno\">  428</span>                                                duuBuffer, duuDesc,</div>\n+<div class=\"line\"><a id=\"l00429\" name=\"l00429\"></a><span class=\"lineno\">  429</span>                                                duvBuffer, duvDesc,</div>\n+<div class=\"line\"><a id=\"l00430\" name=\"l00430\"></a><span class=\"lineno\">  430</span>                                                dvvBuffer, dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00431\" name=\"l00431\"></a><span class=\"lineno\">  431</span>                                                stencilTable);</div>\n+<div class=\"line\"><a id=\"l00432\" name=\"l00432\"></a><span class=\"lineno\">  432</span>                <span class=\"keyword\">delete</span> instance;</div>\n+<div class=\"line\"><a id=\"l00433\" name=\"l00433\"></a><span class=\"lineno\">  433</span>                <span class=\"keywordflow\">return</span> r;</div>\n+<div class=\"line\"><a id=\"l00434\" name=\"l00434\"></a><span class=\"lineno\">  434</span>            }</div>\n+<div class=\"line\"><a id=\"l00435\" name=\"l00435\"></a><span class=\"lineno\">  435</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00436\" name=\"l00436\"></a><span class=\"lineno\">  436</span>        }</div>\n+<div class=\"line\"><a id=\"l00437\" name=\"l00437\"></a><span class=\"lineno\">  437</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00438\" name=\"l00438\"></a><span class=\"lineno\">  438</span> </div>\n+<div class=\"line\"><a id=\"l00456\" name=\"l00456\"></a><span class=\"lineno\">  456</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00457\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00457\" name=\"l00457\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#aab4ecc7e79b822b8994b326cc05ad573\">  457</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01253.html#aab4ecc7e79b822b8994b326cc05ad573\">EvalStencils</a>(</div>\n+<div class=\"line\"><a id=\"l00458\" name=\"l00458\"></a><span class=\"lineno\">  458</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00459\" name=\"l00459\"></a><span class=\"lineno\">  459</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00460\" name=\"l00460\"></a><span class=\"lineno\">  460</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00461\" name=\"l00461\"></a><span class=\"lineno\">  461</span> </div>\n+<div class=\"line\"><a id=\"l00462\" name=\"l00462\"></a><span class=\"lineno\">  462</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01253.html#ace53e6fcf744de81b768e33166d7201c\">EvalStencils</a>(srcBuffer-&gt;BindVBO(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00463\" name=\"l00463\"></a><span class=\"lineno\">  463</span>                            dstBuffer-&gt;BindVBO(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00464\" name=\"l00464\"></a><span class=\"lineno\">  464</span>                            0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l00465\" name=\"l00465\"></a><span class=\"lineno\">  465</span>                            0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l00466\" name=\"l00466\"></a><span class=\"lineno\">  466</span>                            stencilTable-&gt;GetSizesTexture(),</div>\n+<div class=\"line\"><a id=\"l00467\" name=\"l00467\"></a><span class=\"lineno\">  467</span>                            stencilTable-&gt;GetOffsetsTexture(),</div>\n+<div class=\"line\"><a id=\"l00468\" name=\"l00468\"></a><span class=\"lineno\">  468</span>                            stencilTable-&gt;GetIndicesTexture(),</div>\n+<div class=\"line\"><a id=\"l00469\" name=\"l00469\"></a><span class=\"lineno\">  469</span>                            stencilTable-&gt;GetWeightsTexture(),</div>\n+<div class=\"line\"><a id=\"l00470\" name=\"l00470\"></a><span class=\"lineno\">  470</span>                            0,</div>\n+<div class=\"line\"><a id=\"l00471\" name=\"l00471\"></a><span class=\"lineno\">  471</span>                            0,</div>\n+<div class=\"line\"><a id=\"l00472\" name=\"l00472\"></a><span class=\"lineno\">  472</span>                            <span class=\"comment\">/* start = */</span> 0,</div>\n+<div class=\"line\"><a id=\"l00473\" name=\"l00473\"></a><span class=\"lineno\">  473</span>                            <span class=\"comment\">/* end   = */</span> stencilTable-&gt;GetNumStencils());</div>\n+<div class=\"line\"><a id=\"l00474\" name=\"l00474\"></a><span class=\"lineno\">  474</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00475\" name=\"l00475\"></a><span class=\"lineno\">  475</span> </div>\n+<div class=\"line\"><a id=\"l00505\" name=\"l00505\"></a><span class=\"lineno\">  505</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00506\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00506\" name=\"l00506\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#a16dedd32573dd7f70c61f1fb6072e791\">  506</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01253.html#a16dedd32573dd7f70c61f1fb6072e791\">EvalStencils</a>(</div>\n+<div class=\"line\"><a id=\"l00507\" name=\"l00507\"></a><span class=\"lineno\">  507</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00508\" name=\"l00508\"></a><span class=\"lineno\">  508</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00509\" name=\"l00509\"></a><span class=\"lineno\">  509</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00510\" name=\"l00510\"></a><span class=\"lineno\">  510</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00511\" name=\"l00511\"></a><span class=\"lineno\">  511</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00512\" name=\"l00512\"></a><span class=\"lineno\">  512</span> </div>\n+<div class=\"line\"><a id=\"l00513\" name=\"l00513\"></a><span class=\"lineno\">  513</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01253.html#ace53e6fcf744de81b768e33166d7201c\">EvalStencils</a>(srcBuffer-&gt;BindVBO(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00514\" name=\"l00514\"></a><span class=\"lineno\">  514</span>                            dstBuffer-&gt;BindVBO(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00515\" name=\"l00515\"></a><span class=\"lineno\">  515</span>                            duBuffer-&gt;BindVBO(),  duDesc,</div>\n+<div class=\"line\"><a id=\"l00516\" name=\"l00516\"></a><span class=\"lineno\">  516</span>                            dvBuffer-&gt;BindVBO(),  dvDesc,</div>\n+<div class=\"line\"><a id=\"l00517\" name=\"l00517\"></a><span class=\"lineno\">  517</span>                            stencilTable-&gt;GetSizesTexture(),</div>\n+<div class=\"line\"><a id=\"l00518\" name=\"l00518\"></a><span class=\"lineno\">  518</span>                            stencilTable-&gt;GetOffsetsTexture(),</div>\n+<div class=\"line\"><a id=\"l00519\" name=\"l00519\"></a><span class=\"lineno\">  519</span>                            stencilTable-&gt;GetIndicesTexture(),</div>\n+<div class=\"line\"><a id=\"l00520\" name=\"l00520\"></a><span class=\"lineno\">  520</span>                            stencilTable-&gt;GetWeightsTexture(),</div>\n+<div class=\"line\"><a id=\"l00521\" name=\"l00521\"></a><span class=\"lineno\">  521</span>                            stencilTable-&gt;GetDuWeightsTexture(),</div>\n+<div class=\"line\"><a id=\"l00522\" name=\"l00522\"></a><span class=\"lineno\">  522</span>                            stencilTable-&gt;GetDvWeightsTexture(),</div>\n+<div class=\"line\"><a id=\"l00523\" name=\"l00523\"></a><span class=\"lineno\">  523</span>                            <span class=\"comment\">/* start = */</span> 0,</div>\n+<div class=\"line\"><a id=\"l00524\" name=\"l00524\"></a><span class=\"lineno\">  524</span>                            <span class=\"comment\">/* end   = */</span> stencilTable-&gt;GetNumStencils());</div>\n+<div class=\"line\"><a id=\"l00525\" name=\"l00525\"></a><span class=\"lineno\">  525</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00526\" name=\"l00526\"></a><span class=\"lineno\">  526</span> </div>\n+<div class=\"line\"><a id=\"l00574\" name=\"l00574\"></a><span class=\"lineno\">  574</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00575\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00575\" name=\"l00575\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#a20fa5a4f3311832729ea7b10f935285d\">  575</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01253.html#a20fa5a4f3311832729ea7b10f935285d\">EvalStencils</a>(</div>\n+<div class=\"line\"><a id=\"l00576\" name=\"l00576\"></a><span class=\"lineno\">  576</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00577\" name=\"l00577\"></a><span class=\"lineno\">  577</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00578\" name=\"l00578\"></a><span class=\"lineno\">  578</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00579\" name=\"l00579\"></a><span class=\"lineno\">  579</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00580\" name=\"l00580\"></a><span class=\"lineno\">  580</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l00581\" name=\"l00581\"></a><span class=\"lineno\">  581</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l00582\" name=\"l00582\"></a><span class=\"lineno\">  582</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00583\" name=\"l00583\"></a><span class=\"lineno\">  583</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00584\" name=\"l00584\"></a><span class=\"lineno\">  584</span> </div>\n+<div class=\"line\"><a id=\"l00585\" name=\"l00585\"></a><span class=\"lineno\">  585</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01253.html#ace53e6fcf744de81b768e33166d7201c\">EvalStencils</a>(srcBuffer-&gt;BindVBO(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00586\" name=\"l00586\"></a><span class=\"lineno\">  586</span>                            dstBuffer-&gt;BindVBO(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00587\" name=\"l00587\"></a><span class=\"lineno\">  587</span>                            duBuffer-&gt;BindVBO(),  duDesc,</div>\n+<div class=\"line\"><a id=\"l00588\" name=\"l00588\"></a><span class=\"lineno\">  588</span>                            dvBuffer-&gt;BindVBO(),  dvDesc,</div>\n+<div class=\"line\"><a id=\"l00589\" name=\"l00589\"></a><span class=\"lineno\">  589</span>                            duuBuffer-&gt;BindVBO(), duuDesc,</div>\n+<div class=\"line\"><a id=\"l00590\" name=\"l00590\"></a><span class=\"lineno\">  590</span>                            duvBuffer-&gt;BindVBO(), duvDesc,</div>\n+<div class=\"line\"><a id=\"l00591\" name=\"l00591\"></a><span class=\"lineno\">  591</span>                            dvvBuffer-&gt;BindVBO(), dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00592\" name=\"l00592\"></a><span class=\"lineno\">  592</span>                            stencilTable-&gt;GetSizesTexture(),</div>\n+<div class=\"line\"><a id=\"l00593\" name=\"l00593\"></a><span class=\"lineno\">  593</span>                            stencilTable-&gt;GetOffsetsTexture(),</div>\n+<div class=\"line\"><a id=\"l00594\" name=\"l00594\"></a><span class=\"lineno\">  594</span>                            stencilTable-&gt;GetIndicesTexture(),</div>\n+<div class=\"line\"><a id=\"l00595\" name=\"l00595\"></a><span class=\"lineno\">  595</span>                            stencilTable-&gt;GetWeightsTexture(),</div>\n+<div class=\"line\"><a id=\"l00596\" name=\"l00596\"></a><span class=\"lineno\">  596</span>                            stencilTable-&gt;GetDuWeightsTexture(),</div>\n+<div class=\"line\"><a id=\"l00597\" name=\"l00597\"></a><span class=\"lineno\">  597</span>                            stencilTable-&gt;GetDvWeightsTexture(),</div>\n+<div class=\"line\"><a id=\"l00598\" name=\"l00598\"></a><span class=\"lineno\">  598</span>                            stencilTable-&gt;GetDuuWeightsTexture(),</div>\n+<div class=\"line\"><a id=\"l00599\" name=\"l00599\"></a><span class=\"lineno\">  599</span>                            stencilTable-&gt;GetDuvWeightsTexture(),</div>\n+<div class=\"line\"><a id=\"l00600\" name=\"l00600\"></a><span class=\"lineno\">  600</span>                            stencilTable-&gt;GetDvvWeightsTexture(),</div>\n+<div class=\"line\"><a id=\"l00601\" name=\"l00601\"></a><span class=\"lineno\">  601</span>                            <span class=\"comment\">/* start = */</span> 0,</div>\n+<div class=\"line\"><a id=\"l00602\" name=\"l00602\"></a><span class=\"lineno\">  602</span>                            <span class=\"comment\">/* end   = */</span> stencilTable-&gt;GetNumStencils());</div>\n+<div class=\"line\"><a id=\"l00603\" name=\"l00603\"></a><span class=\"lineno\">  603</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00604\" name=\"l00604\"></a><span class=\"lineno\">  604</span> </div>\n+<div class=\"line\"><a id=\"l00640\" name=\"l00640\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#ab8d69b17b91e3066aaa7dad2d38691de\">  640</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01253.html#ab8d69b17b91e3066aaa7dad2d38691de\">EvalStencils</a>(GLuint srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00641\" name=\"l00641\"></a><span class=\"lineno\">  641</span>                      GLuint dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00642\" name=\"l00642\"></a><span class=\"lineno\">  642</span>                      GLuint duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00643\" name=\"l00643\"></a><span class=\"lineno\">  643</span>                      GLuint dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00644\" name=\"l00644\"></a><span class=\"lineno\">  644</span>                      GLuint sizesBuffer,</div>\n+<div class=\"line\"><a id=\"l00645\" name=\"l00645\"></a><span class=\"lineno\">  645</span>                      GLuint offsetsBuffer,</div>\n+<div class=\"line\"><a id=\"l00646\" name=\"l00646\"></a><span class=\"lineno\">  646</span>                      GLuint indicesBuffer,</div>\n+<div class=\"line\"><a id=\"l00647\" name=\"l00647\"></a><span class=\"lineno\">  647</span>                      GLuint weightsBuffer,</div>\n+<div class=\"line\"><a id=\"l00648\" name=\"l00648\"></a><span class=\"lineno\">  648</span>                      GLuint duWeightsBuffer,</div>\n+<div class=\"line\"><a id=\"l00649\" name=\"l00649\"></a><span class=\"lineno\">  649</span>                      GLuint dvWeightsBuffer,</div>\n+<div class=\"line\"><a id=\"l00650\" name=\"l00650\"></a><span class=\"lineno\">  650</span>                      <span class=\"keywordtype\">int</span> start,</div>\n+<div class=\"line\"><a id=\"l00651\" name=\"l00651\"></a><span class=\"lineno\">  651</span>                      <span class=\"keywordtype\">int</span> end) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00652\" name=\"l00652\"></a><span class=\"lineno\">  652</span> </div>\n+<div class=\"line\"><a id=\"l00706\" name=\"l00706\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#a54b949bb4819f61594334e599194f224\">  706</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01253.html#a54b949bb4819f61594334e599194f224\">EvalStencils</a>(GLuint srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00707\" name=\"l00707\"></a><span class=\"lineno\">  707</span>                      GLuint dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00708\" name=\"l00708\"></a><span class=\"lineno\">  708</span>                      GLuint duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00709\" name=\"l00709\"></a><span class=\"lineno\">  709</span>                      GLuint dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00710\" name=\"l00710\"></a><span class=\"lineno\">  710</span>                      GLuint duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l00711\" name=\"l00711\"></a><span class=\"lineno\">  711</span>                      GLuint duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l00712\" name=\"l00712\"></a><span class=\"lineno\">  712</span>                      GLuint dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00713\" name=\"l00713\"></a><span class=\"lineno\">  713</span>                      GLuint sizesBuffer,</div>\n+<div class=\"line\"><a id=\"l00714\" name=\"l00714\"></a><span class=\"lineno\">  714</span>                      GLuint offsetsBuffer,</div>\n+<div class=\"line\"><a id=\"l00715\" name=\"l00715\"></a><span class=\"lineno\">  715</span>                      GLuint indicesBuffer,</div>\n+<div class=\"line\"><a id=\"l00716\" name=\"l00716\"></a><span class=\"lineno\">  716</span>                      GLuint weightsBuffer,</div>\n+<div class=\"line\"><a id=\"l00717\" name=\"l00717\"></a><span class=\"lineno\">  717</span>                      GLuint duWeightsBuffer,</div>\n+<div class=\"line\"><a id=\"l00718\" name=\"l00718\"></a><span class=\"lineno\">  718</span>                      GLuint dvWeightsBuffer,</div>\n+<div class=\"line\"><a id=\"l00719\" name=\"l00719\"></a><span class=\"lineno\">  719</span>                      GLuint duuWeightsBuffer,</div>\n+<div class=\"line\"><a id=\"l00720\" name=\"l00720\"></a><span class=\"lineno\">  720</span>                      GLuint duvWeightsBuffer,</div>\n+<div class=\"line\"><a id=\"l00721\" name=\"l00721\"></a><span class=\"lineno\">  721</span>                      GLuint dvvWeightsBuffer,</div>\n+<div class=\"line\"><a id=\"l00722\" name=\"l00722\"></a><span class=\"lineno\">  722</span>                      <span class=\"keywordtype\">int</span> start,</div>\n+<div class=\"line\"><a id=\"l00723\" name=\"l00723\"></a><span class=\"lineno\">  723</span>                      <span class=\"keywordtype\">int</span> end) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00724\" name=\"l00724\"></a><span class=\"lineno\">  724</span> </div>\n+<div class=\"line\"><a id=\"l00730\" name=\"l00730\"></a><span class=\"lineno\">  730</span> </div>\n+<div class=\"line\"><a id=\"l00763\" name=\"l00763\"></a><span class=\"lineno\">  763</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l00764\" name=\"l00764\"></a><span class=\"lineno\">  764</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00765\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00765\" name=\"l00765\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#a8ba6c1bfddfa877a523c098af03af037\">  765</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01253.html#a8ba6c1bfddfa877a523c098af03af037\">EvalPatches</a>(</div>\n+<div class=\"line\"><a id=\"l00766\" name=\"l00766\"></a><span class=\"lineno\">  766</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00767\" name=\"l00767\"></a><span class=\"lineno\">  767</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00768\" name=\"l00768\"></a><span class=\"lineno\">  768</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00769\" name=\"l00769\"></a><span class=\"lineno\">  769</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l00770\" name=\"l00770\"></a><span class=\"lineno\">  770</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l00771\" name=\"l00771\"></a><span class=\"lineno\">  771</span>        <a class=\"code hl_class\" href=\"a01253.html\">GLXFBEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n+<div class=\"line\"><a id=\"l00772\" name=\"l00772\"></a><span class=\"lineno\">  772</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l00773\" name=\"l00773\"></a><span class=\"lineno\">  773</span> </div>\n+<div class=\"line\"><a id=\"l00774\" name=\"l00774\"></a><span class=\"lineno\">  774</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l00775\" name=\"l00775\"></a><span class=\"lineno\">  775</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01253.html#a8ba6c1bfddfa877a523c098af03af037\">EvalPatches</a>(srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l00776\" name=\"l00776\"></a><span class=\"lineno\">  776</span>                                         dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00777\" name=\"l00777\"></a><span class=\"lineno\">  777</span>                                         numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l00778\" name=\"l00778\"></a><span class=\"lineno\">  778</span>                                         patchTable);</div>\n+<div class=\"line\"><a id=\"l00779\" name=\"l00779\"></a><span class=\"lineno\">  779</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00780\" name=\"l00780\"></a><span class=\"lineno\">  780</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n+<div class=\"line\"><a id=\"l00781\" name=\"l00781\"></a><span class=\"lineno\">  781</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00782\" name=\"l00782\"></a><span class=\"lineno\">  782</span>            instance = <a class=\"code hl_function\" href=\"a01253.html#a5be617906ad76ddcc4795dd6557a79f7\">Create</a>(srcDesc, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00783\" name=\"l00783\"></a><span class=\"lineno\">  783</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l00784\" name=\"l00784\"></a><span class=\"lineno\">  784</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>());</div>\n+<div class=\"line\"><a id=\"l00785\" name=\"l00785\"></a><span class=\"lineno\">  785</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l00786\" name=\"l00786\"></a><span class=\"lineno\">  786</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01253.html#a8ba6c1bfddfa877a523c098af03af037\">EvalPatches</a>(srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l00787\" name=\"l00787\"></a><span class=\"lineno\">  787</span>                                               dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00788\" name=\"l00788\"></a><span class=\"lineno\">  788</span>                                               numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l00789\" name=\"l00789\"></a><span class=\"lineno\">  789</span>                                               patchTable);</div>\n+<div class=\"line\"><a id=\"l00790\" name=\"l00790\"></a><span class=\"lineno\">  790</span>                <span class=\"keyword\">delete</span> instance;</div>\n+<div class=\"line\"><a id=\"l00791\" name=\"l00791\"></a><span class=\"lineno\">  791</span>                <span class=\"keywordflow\">return</span> r;</div>\n+<div class=\"line\"><a id=\"l00792\" name=\"l00792\"></a><span class=\"lineno\">  792</span>            }</div>\n+<div class=\"line\"><a id=\"l00793\" name=\"l00793\"></a><span class=\"lineno\">  793</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00794\" name=\"l00794\"></a><span class=\"lineno\">  794</span>        }</div>\n+<div class=\"line\"><a id=\"l00795\" name=\"l00795\"></a><span class=\"lineno\">  795</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00796\" name=\"l00796\"></a><span class=\"lineno\">  796</span> </div>\n+<div class=\"line\"><a id=\"l00841\" name=\"l00841\"></a><span class=\"lineno\">  841</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l00842\" name=\"l00842\"></a><span class=\"lineno\">  842</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00843\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00843\" name=\"l00843\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#a57b0367816baf9831808847cbfe833b0\">  843</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01253.html#a57b0367816baf9831808847cbfe833b0\">EvalPatches</a>(</div>\n+<div class=\"line\"><a id=\"l00844\" name=\"l00844\"></a><span class=\"lineno\">  844</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00845\" name=\"l00845\"></a><span class=\"lineno\">  845</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00846\" name=\"l00846\"></a><span class=\"lineno\">  846</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00847\" name=\"l00847\"></a><span class=\"lineno\">  847</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00848\" name=\"l00848\"></a><span class=\"lineno\">  848</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00849\" name=\"l00849\"></a><span class=\"lineno\">  849</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l00850\" name=\"l00850\"></a><span class=\"lineno\">  850</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l00851\" name=\"l00851\"></a><span class=\"lineno\">  851</span>        <a class=\"code hl_class\" href=\"a01253.html\">GLXFBEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n+<div class=\"line\"><a id=\"l00852\" name=\"l00852\"></a><span class=\"lineno\">  852</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l00853\" name=\"l00853\"></a><span class=\"lineno\">  853</span> </div>\n+<div class=\"line\"><a id=\"l00854\" name=\"l00854\"></a><span class=\"lineno\">  854</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l00855\" name=\"l00855\"></a><span class=\"lineno\">  855</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01253.html#a8ba6c1bfddfa877a523c098af03af037\">EvalPatches</a>(srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l00856\" name=\"l00856\"></a><span class=\"lineno\">  856</span>                                         dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00857\" name=\"l00857\"></a><span class=\"lineno\">  857</span>                                         duBuffer, duDesc,</div>\n+<div class=\"line\"><a id=\"l00858\" name=\"l00858\"></a><span class=\"lineno\">  858</span>                                         dvBuffer, dvDesc,</div>\n+<div class=\"line\"><a id=\"l00859\" name=\"l00859\"></a><span class=\"lineno\">  859</span>                                         numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l00860\" name=\"l00860\"></a><span class=\"lineno\">  860</span>                                         patchTable);</div>\n+<div class=\"line\"><a id=\"l00861\" name=\"l00861\"></a><span class=\"lineno\">  861</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00862\" name=\"l00862\"></a><span class=\"lineno\">  862</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n+<div class=\"line\"><a id=\"l00863\" name=\"l00863\"></a><span class=\"lineno\">  863</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00864\" name=\"l00864\"></a><span class=\"lineno\">  864</span>            instance = <a class=\"code hl_function\" href=\"a01253.html#a5be617906ad76ddcc4795dd6557a79f7\">Create</a>(srcDesc, dstDesc, duDesc, dvDesc);</div>\n+<div class=\"line\"><a id=\"l00865\" name=\"l00865\"></a><span class=\"lineno\">  865</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l00866\" name=\"l00866\"></a><span class=\"lineno\">  866</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01253.html#a8ba6c1bfddfa877a523c098af03af037\">EvalPatches</a>(srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l00867\" name=\"l00867\"></a><span class=\"lineno\">  867</span>                                               dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00868\" name=\"l00868\"></a><span class=\"lineno\">  868</span>                                               duBuffer, duDesc,</div>\n+<div class=\"line\"><a id=\"l00869\" name=\"l00869\"></a><span class=\"lineno\">  869</span>                                               dvBuffer, dvDesc,</div>\n+<div class=\"line\"><a id=\"l00870\" name=\"l00870\"></a><span class=\"lineno\">  870</span>                                               numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l00871\" name=\"l00871\"></a><span class=\"lineno\">  871</span>                                               patchTable);</div>\n+<div class=\"line\"><a id=\"l00872\" name=\"l00872\"></a><span class=\"lineno\">  872</span>                <span class=\"keyword\">delete</span> instance;</div>\n+<div class=\"line\"><a id=\"l00873\" name=\"l00873\"></a><span class=\"lineno\">  873</span>                <span class=\"keywordflow\">return</span> r;</div>\n+<div class=\"line\"><a id=\"l00874\" name=\"l00874\"></a><span class=\"lineno\">  874</span>            }</div>\n+<div class=\"line\"><a id=\"l00875\" name=\"l00875\"></a><span class=\"lineno\">  875</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00876\" name=\"l00876\"></a><span class=\"lineno\">  876</span>        }</div>\n+<div class=\"line\"><a id=\"l00877\" name=\"l00877\"></a><span class=\"lineno\">  877</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00878\" name=\"l00878\"></a><span class=\"lineno\">  878</span> </div>\n+<div class=\"line\"><a id=\"l00941\" name=\"l00941\"></a><span class=\"lineno\">  941</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l00942\" name=\"l00942\"></a><span class=\"lineno\">  942</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00943\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00943\" name=\"l00943\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#a9a52edc932f03ffa9bbf67c093a1dd65\">  943</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01253.html#a9a52edc932f03ffa9bbf67c093a1dd65\">EvalPatches</a>(</div>\n+<div class=\"line\"><a id=\"l00944\" name=\"l00944\"></a><span class=\"lineno\">  944</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00945\" name=\"l00945\"></a><span class=\"lineno\">  945</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00946\" name=\"l00946\"></a><span class=\"lineno\">  946</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00947\" name=\"l00947\"></a><span class=\"lineno\">  947</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00948\" name=\"l00948\"></a><span class=\"lineno\">  948</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l00949\" name=\"l00949\"></a><span class=\"lineno\">  949</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l00950\" name=\"l00950\"></a><span class=\"lineno\">  950</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00951\" name=\"l00951\"></a><span class=\"lineno\">  951</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00952\" name=\"l00952\"></a><span class=\"lineno\">  952</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l00953\" name=\"l00953\"></a><span class=\"lineno\">  953</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l00954\" name=\"l00954\"></a><span class=\"lineno\">  954</span>        <a class=\"code hl_class\" href=\"a01253.html\">GLXFBEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n+<div class=\"line\"><a id=\"l00955\" name=\"l00955\"></a><span class=\"lineno\">  955</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l00956\" name=\"l00956\"></a><span class=\"lineno\">  956</span> </div>\n+<div class=\"line\"><a id=\"l00957\" name=\"l00957\"></a><span class=\"lineno\">  957</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l00958\" name=\"l00958\"></a><span class=\"lineno\">  958</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01253.html#a8ba6c1bfddfa877a523c098af03af037\">EvalPatches</a>(srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l00959\" name=\"l00959\"></a><span class=\"lineno\">  959</span>                                         dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00960\" name=\"l00960\"></a><span class=\"lineno\">  960</span>                                         duBuffer, duDesc,</div>\n+<div class=\"line\"><a id=\"l00961\" name=\"l00961\"></a><span class=\"lineno\">  961</span>                                         dvBuffer, dvDesc,</div>\n+<div class=\"line\"><a id=\"l00962\" name=\"l00962\"></a><span class=\"lineno\">  962</span>                                         duuBuffer, duuDesc,</div>\n+<div class=\"line\"><a id=\"l00963\" name=\"l00963\"></a><span class=\"lineno\">  963</span>                                         duvBuffer, duvDesc,</div>\n+<div class=\"line\"><a id=\"l00964\" name=\"l00964\"></a><span class=\"lineno\">  964</span>                                         dvvBuffer, dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00965\" name=\"l00965\"></a><span class=\"lineno\">  965</span>                                         numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l00966\" name=\"l00966\"></a><span class=\"lineno\">  966</span>                                         patchTable);</div>\n+<div class=\"line\"><a id=\"l00967\" name=\"l00967\"></a><span class=\"lineno\">  967</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00968\" name=\"l00968\"></a><span class=\"lineno\">  968</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n+<div class=\"line\"><a id=\"l00969\" name=\"l00969\"></a><span class=\"lineno\">  969</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00970\" name=\"l00970\"></a><span class=\"lineno\">  970</span>            instance = <a class=\"code hl_function\" href=\"a01253.html#a5be617906ad76ddcc4795dd6557a79f7\">Create</a>(srcDesc, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00971\" name=\"l00971\"></a><span class=\"lineno\">  971</span>                              duDesc, dvDesc,</div>\n+<div class=\"line\"><a id=\"l00972\" name=\"l00972\"></a><span class=\"lineno\">  972</span>                              duuDesc, duvDesc, dvvDesc);</div>\n+<div class=\"line\"><a id=\"l00973\" name=\"l00973\"></a><span class=\"lineno\">  973</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l00974\" name=\"l00974\"></a><span class=\"lineno\">  974</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01253.html#a8ba6c1bfddfa877a523c098af03af037\">EvalPatches</a>(srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l00975\" name=\"l00975\"></a><span class=\"lineno\">  975</span>                                               dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00976\" name=\"l00976\"></a><span class=\"lineno\">  976</span>                                               duBuffer, duDesc,</div>\n+<div class=\"line\"><a id=\"l00977\" name=\"l00977\"></a><span class=\"lineno\">  977</span>                                               dvBuffer, dvDesc,</div>\n+<div class=\"line\"><a id=\"l00978\" name=\"l00978\"></a><span class=\"lineno\">  978</span>                                               duuBuffer, duuDesc,</div>\n+<div class=\"line\"><a id=\"l00979\" name=\"l00979\"></a><span class=\"lineno\">  979</span>                                               duvBuffer, duvDesc,</div>\n+<div class=\"line\"><a id=\"l00980\" name=\"l00980\"></a><span class=\"lineno\">  980</span>                                               dvvBuffer, dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00981\" name=\"l00981\"></a><span class=\"lineno\">  981</span>                                               numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l00982\" name=\"l00982\"></a><span class=\"lineno\">  982</span>                                               patchTable);</div>\n+<div class=\"line\"><a id=\"l00983\" name=\"l00983\"></a><span class=\"lineno\">  983</span>                <span class=\"keyword\">delete</span> instance;</div>\n+<div class=\"line\"><a id=\"l00984\" name=\"l00984\"></a><span class=\"lineno\">  984</span>                <span class=\"keywordflow\">return</span> r;</div>\n+<div class=\"line\"><a id=\"l00985\" name=\"l00985\"></a><span class=\"lineno\">  985</span>            }</div>\n+<div class=\"line\"><a id=\"l00986\" name=\"l00986\"></a><span class=\"lineno\">  986</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00987\" name=\"l00987\"></a><span class=\"lineno\">  987</span>        }</div>\n+<div class=\"line\"><a id=\"l00988\" name=\"l00988\"></a><span class=\"lineno\">  988</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00989\" name=\"l00989\"></a><span class=\"lineno\">  989</span> </div>\n+<div class=\"line\"><a id=\"l01014\" name=\"l01014\"></a><span class=\"lineno\"> 1014</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01015\" name=\"l01015\"></a><span class=\"lineno\"> 1015</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01016\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01016\" name=\"l01016\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#a96616cfe920c027568e2ae931b3ba506\"> 1016</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01253.html#a96616cfe920c027568e2ae931b3ba506\">EvalPatches</a>(</div>\n+<div class=\"line\"><a id=\"l01017\" name=\"l01017\"></a><span class=\"lineno\"> 1017</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01018\" name=\"l01018\"></a><span class=\"lineno\"> 1018</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01019\" name=\"l01019\"></a><span class=\"lineno\"> 1019</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01020\" name=\"l01020\"></a><span class=\"lineno\"> 1020</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01021\" name=\"l01021\"></a><span class=\"lineno\"> 1021</span>        PATCH_TABLE *patchTable)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l01022\" name=\"l01022\"></a><span class=\"lineno\"> 1022</span> </div>\n+<div class=\"line\"><a id=\"l01023\" name=\"l01023\"></a><span class=\"lineno\"> 1023</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01253.html#a8ba6c1bfddfa877a523c098af03af037\">EvalPatches</a>(srcBuffer-&gt;BindVBO(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01024\" name=\"l01024\"></a><span class=\"lineno\"> 1024</span>                           dstBuffer-&gt;BindVBO(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01025\" name=\"l01025\"></a><span class=\"lineno\"> 1025</span>                           0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l01026\" name=\"l01026\"></a><span class=\"lineno\"> 1026</span>                           0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l01027\" name=\"l01027\"></a><span class=\"lineno\"> 1027</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01028\" name=\"l01028\"></a><span class=\"lineno\"> 1028</span>                           patchCoords-&gt;BindVBO(),</div>\n+<div class=\"line\"><a id=\"l01029\" name=\"l01029\"></a><span class=\"lineno\"> 1029</span>                           patchTable-&gt;GetPatchArrays(),</div>\n+<div class=\"line\"><a id=\"l01030\" name=\"l01030\"></a><span class=\"lineno\"> 1030</span>                           patchTable-&gt;GetPatchIndexTextureBuffer(),</div>\n+<div class=\"line\"><a id=\"l01031\" name=\"l01031\"></a><span class=\"lineno\"> 1031</span>                           patchTable-&gt;GetPatchParamTextureBuffer());</div>\n+<div class=\"line\"><a id=\"l01032\" name=\"l01032\"></a><span class=\"lineno\"> 1032</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01033\" name=\"l01033\"></a><span class=\"lineno\"> 1033</span> </div>\n+<div class=\"line\"><a id=\"l01068\" name=\"l01068\"></a><span class=\"lineno\"> 1068</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01069\" name=\"l01069\"></a><span class=\"lineno\"> 1069</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01070\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01070\" name=\"l01070\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#aa28dc7f2bd31f1cdac0013ad9de8f434\"> 1070</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01253.html#aa28dc7f2bd31f1cdac0013ad9de8f434\">EvalPatches</a>(</div>\n+<div class=\"line\"><a id=\"l01071\" name=\"l01071\"></a><span class=\"lineno\"> 1071</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01072\" name=\"l01072\"></a><span class=\"lineno\"> 1072</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01073\" name=\"l01073\"></a><span class=\"lineno\"> 1073</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l01074\" name=\"l01074\"></a><span class=\"lineno\"> 1074</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l01075\" name=\"l01075\"></a><span class=\"lineno\"> 1075</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01076\" name=\"l01076\"></a><span class=\"lineno\"> 1076</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01077\" name=\"l01077\"></a><span class=\"lineno\"> 1077</span>        PATCH_TABLE *patchTable)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l01078\" name=\"l01078\"></a><span class=\"lineno\"> 1078</span> </div>\n+<div class=\"line\"><a id=\"l01079\" name=\"l01079\"></a><span class=\"lineno\"> 1079</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01253.html#a8ba6c1bfddfa877a523c098af03af037\">EvalPatches</a>(srcBuffer-&gt;BindVBO(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01080\" name=\"l01080\"></a><span class=\"lineno\"> 1080</span>                           dstBuffer-&gt;BindVBO(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01081\" name=\"l01081\"></a><span class=\"lineno\"> 1081</span>                           duBuffer-&gt;BindVBO(),  duDesc,</div>\n+<div class=\"line\"><a id=\"l01082\" name=\"l01082\"></a><span class=\"lineno\"> 1082</span>                           dvBuffer-&gt;BindVBO(),  dvDesc,</div>\n+<div class=\"line\"><a id=\"l01083\" name=\"l01083\"></a><span class=\"lineno\"> 1083</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01084\" name=\"l01084\"></a><span class=\"lineno\"> 1084</span>                           patchCoords-&gt;BindVBO(),</div>\n+<div class=\"line\"><a id=\"l01085\" name=\"l01085\"></a><span class=\"lineno\"> 1085</span>                           patchTable-&gt;GetPatchArrays(),</div>\n+<div class=\"line\"><a id=\"l01086\" name=\"l01086\"></a><span class=\"lineno\"> 1086</span>                           patchTable-&gt;GetPatchIndexTextureBuffer(),</div>\n+<div class=\"line\"><a id=\"l01087\" name=\"l01087\"></a><span class=\"lineno\"> 1087</span>                           patchTable-&gt;GetPatchParamTextureBuffer());</div>\n+<div class=\"line\"><a id=\"l01088\" name=\"l01088\"></a><span class=\"lineno\"> 1088</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01089\" name=\"l01089\"></a><span class=\"lineno\"> 1089</span> </div>\n+<div class=\"line\"><a id=\"l01142\" name=\"l01142\"></a><span class=\"lineno\"> 1142</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01143\" name=\"l01143\"></a><span class=\"lineno\"> 1143</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01144\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01144\" name=\"l01144\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#a35609a9d5a1b087bd675035d710dc688\"> 1144</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01253.html#a35609a9d5a1b087bd675035d710dc688\">EvalPatches</a>(</div>\n+<div class=\"line\"><a id=\"l01145\" name=\"l01145\"></a><span class=\"lineno\"> 1145</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01146\" name=\"l01146\"></a><span class=\"lineno\"> 1146</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01147\" name=\"l01147\"></a><span class=\"lineno\"> 1147</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l01148\" name=\"l01148\"></a><span class=\"lineno\"> 1148</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l01149\" name=\"l01149\"></a><span class=\"lineno\"> 1149</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l01150\" name=\"l01150\"></a><span class=\"lineno\"> 1150</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l01151\" name=\"l01151\"></a><span class=\"lineno\"> 1151</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l01152\" name=\"l01152\"></a><span class=\"lineno\"> 1152</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01153\" name=\"l01153\"></a><span class=\"lineno\"> 1153</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01154\" name=\"l01154\"></a><span class=\"lineno\"> 1154</span>        PATCH_TABLE *patchTable)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l01155\" name=\"l01155\"></a><span class=\"lineno\"> 1155</span> </div>\n+<div class=\"line\"><a id=\"l01156\" name=\"l01156\"></a><span class=\"lineno\"> 1156</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01253.html#a8ba6c1bfddfa877a523c098af03af037\">EvalPatches</a>(srcBuffer-&gt;BindVBO(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01157\" name=\"l01157\"></a><span class=\"lineno\"> 1157</span>                           dstBuffer-&gt;BindVBO(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01158\" name=\"l01158\"></a><span class=\"lineno\"> 1158</span>                           duBuffer-&gt;BindVBO(),  duDesc,</div>\n+<div class=\"line\"><a id=\"l01159\" name=\"l01159\"></a><span class=\"lineno\"> 1159</span>                           dvBuffer-&gt;BindVBO(),  dvDesc,</div>\n+<div class=\"line\"><a id=\"l01160\" name=\"l01160\"></a><span class=\"lineno\"> 1160</span>                           duuBuffer-&gt;BindVBO(), duuDesc,</div>\n+<div class=\"line\"><a id=\"l01161\" name=\"l01161\"></a><span class=\"lineno\"> 1161</span>                           duvBuffer-&gt;BindVBO(), duvDesc,</div>\n+<div class=\"line\"><a id=\"l01162\" name=\"l01162\"></a><span class=\"lineno\"> 1162</span>                           dvvBuffer-&gt;BindVBO(), dvvDesc,</div>\n+<div class=\"line\"><a id=\"l01163\" name=\"l01163\"></a><span class=\"lineno\"> 1163</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01164\" name=\"l01164\"></a><span class=\"lineno\"> 1164</span>                           patchCoords-&gt;BindVBO(),</div>\n+<div class=\"line\"><a id=\"l01165\" name=\"l01165\"></a><span class=\"lineno\"> 1165</span>                           patchTable-&gt;GetPatchArrays(),</div>\n+<div class=\"line\"><a id=\"l01166\" name=\"l01166\"></a><span class=\"lineno\"> 1166</span>                           patchTable-&gt;GetPatchIndexTextureBuffer(),</div>\n+<div class=\"line\"><a id=\"l01167\" name=\"l01167\"></a><span class=\"lineno\"> 1167</span>                           patchTable-&gt;GetPatchParamTextureBuffer());</div>\n+<div class=\"line\"><a id=\"l01168\" name=\"l01168\"></a><span class=\"lineno\"> 1168</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01169\" name=\"l01169\"></a><span class=\"lineno\"> 1169</span> </div>\n+<div class=\"line\"><a id=\"l01170\" name=\"l01170\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#aac8b4b814219420a124f8a92c96fd026\"> 1170</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01253.html#aac8b4b814219420a124f8a92c96fd026\">EvalPatches</a>(GLuint srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01171\" name=\"l01171\"></a><span class=\"lineno\"> 1171</span>                     GLuint dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01172\" name=\"l01172\"></a><span class=\"lineno\"> 1172</span>                     GLuint duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l01173\" name=\"l01173\"></a><span class=\"lineno\"> 1173</span>                     GLuint dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l01174\" name=\"l01174\"></a><span class=\"lineno\"> 1174</span>                     <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01175\" name=\"l01175\"></a><span class=\"lineno\"> 1175</span>                     GLuint patchCoordsBuffer,</div>\n+<div class=\"line\"><a id=\"l01176\" name=\"l01176\"></a><span class=\"lineno\"> 1176</span>                     <span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"a00912.html#a98098cd229f60d2397d84a76fe654a31\">PatchArrayVector</a> &amp;patchArrays,</div>\n+<div class=\"line\"><a id=\"l01177\" name=\"l01177\"></a><span class=\"lineno\"> 1177</span>                     GLuint patchIndexBuffer,</div>\n+<div class=\"line\"><a id=\"l01178\" name=\"l01178\"></a><span class=\"lineno\"> 1178</span>                     GLuint patchParamsBuffer) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l01179\" name=\"l01179\"></a><span class=\"lineno\"> 1179</span> </div>\n+<div class=\"line\"><a id=\"l01180\" name=\"l01180\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#a2d1074f49212a9ae65161e9c957dbab7\"> 1180</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01253.html#a2d1074f49212a9ae65161e9c957dbab7\">EvalPatches</a>(GLuint srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01181\" name=\"l01181\"></a><span class=\"lineno\"> 1181</span>                     GLuint dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01182\" name=\"l01182\"></a><span class=\"lineno\"> 1182</span>                     GLuint duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l01183\" name=\"l01183\"></a><span class=\"lineno\"> 1183</span>                     GLuint dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l01184\" name=\"l01184\"></a><span class=\"lineno\"> 1184</span>                     GLuint duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l01185\" name=\"l01185\"></a><span class=\"lineno\"> 1185</span>                     GLuint duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l01186\" name=\"l01186\"></a><span class=\"lineno\"> 1186</span>                     GLuint dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l01187\" name=\"l01187\"></a><span class=\"lineno\"> 1187</span>                     <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01188\" name=\"l01188\"></a><span class=\"lineno\"> 1188</span>                     GLuint patchCoordsBuffer,</div>\n+<div class=\"line\"><a id=\"l01189\" name=\"l01189\"></a><span class=\"lineno\"> 1189</span>                     <span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"a00912.html#a98098cd229f60d2397d84a76fe654a31\">PatchArrayVector</a> &amp;patchArrays,</div>\n+<div class=\"line\"><a id=\"l01190\" name=\"l01190\"></a><span class=\"lineno\"> 1190</span>                     GLuint patchIndexBuffer,</div>\n+<div class=\"line\"><a id=\"l01191\" name=\"l01191\"></a><span class=\"lineno\"> 1191</span>                     GLuint patchParamsBuffer) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l01192\" name=\"l01192\"></a><span class=\"lineno\"> 1192</span> </div>\n+<div class=\"line\"><a id=\"l01225\" name=\"l01225\"></a><span class=\"lineno\"> 1225</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01226\" name=\"l01226\"></a><span class=\"lineno\"> 1226</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01227\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01227\" name=\"l01227\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#a6ee6055100beee2bc55426a0e909dc59\"> 1227</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01253.html#a6ee6055100beee2bc55426a0e909dc59\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01228\" name=\"l01228\"></a><span class=\"lineno\"> 1228</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01229\" name=\"l01229\"></a><span class=\"lineno\"> 1229</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01230\" name=\"l01230\"></a><span class=\"lineno\"> 1230</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01231\" name=\"l01231\"></a><span class=\"lineno\"> 1231</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01232\" name=\"l01232\"></a><span class=\"lineno\"> 1232</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l01233\" name=\"l01233\"></a><span class=\"lineno\"> 1233</span>        <a class=\"code hl_class\" href=\"a01253.html\">GLXFBEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n+<div class=\"line\"><a id=\"l01234\" name=\"l01234\"></a><span class=\"lineno\"> 1234</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l01235\" name=\"l01235\"></a><span class=\"lineno\"> 1235</span> </div>\n+<div class=\"line\"><a id=\"l01236\" name=\"l01236\"></a><span class=\"lineno\"> 1236</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l01237\" name=\"l01237\"></a><span class=\"lineno\"> 1237</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01253.html#a6ee6055100beee2bc55426a0e909dc59\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01238\" name=\"l01238\"></a><span class=\"lineno\"> 1238</span>                                         srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l01239\" name=\"l01239\"></a><span class=\"lineno\"> 1239</span>                                         dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01240\" name=\"l01240\"></a><span class=\"lineno\"> 1240</span>                                         numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l01241\" name=\"l01241\"></a><span class=\"lineno\"> 1241</span>                                         patchTable);</div>\n+<div class=\"line\"><a id=\"l01242\" name=\"l01242\"></a><span class=\"lineno\"> 1242</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l01243\" name=\"l01243\"></a><span class=\"lineno\"> 1243</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n+<div class=\"line\"><a id=\"l01244\" name=\"l01244\"></a><span class=\"lineno\"> 1244</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l01245\" name=\"l01245\"></a><span class=\"lineno\"> 1245</span>            instance = <a class=\"code hl_function\" href=\"a01253.html#a5be617906ad76ddcc4795dd6557a79f7\">Create</a>(srcDesc, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01246\" name=\"l01246\"></a><span class=\"lineno\"> 1246</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l01247\" name=\"l01247\"></a><span class=\"lineno\"> 1247</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>());</div>\n+<div class=\"line\"><a id=\"l01248\" name=\"l01248\"></a><span class=\"lineno\"> 1248</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l01249\" name=\"l01249\"></a><span class=\"lineno\"> 1249</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01253.html#a6ee6055100beee2bc55426a0e909dc59\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01250\" name=\"l01250\"></a><span class=\"lineno\"> 1250</span>                                               srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l01251\" name=\"l01251\"></a><span class=\"lineno\"> 1251</span>                                               dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01252\" name=\"l01252\"></a><span class=\"lineno\"> 1252</span>                                               numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l01253\" name=\"l01253\"></a><span class=\"lineno\"> 1253</span>                                               patchTable);</div>\n+<div class=\"line\"><a id=\"l01254\" name=\"l01254\"></a><span class=\"lineno\"> 1254</span>                <span class=\"keyword\">delete</span> instance;</div>\n+<div class=\"line\"><a id=\"l01255\" name=\"l01255\"></a><span class=\"lineno\"> 1255</span>                <span class=\"keywordflow\">return</span> r;</div>\n+<div class=\"line\"><a id=\"l01256\" name=\"l01256\"></a><span class=\"lineno\"> 1256</span>            }</div>\n+<div class=\"line\"><a id=\"l01257\" name=\"l01257\"></a><span class=\"lineno\"> 1257</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l01258\" name=\"l01258\"></a><span class=\"lineno\"> 1258</span>        }</div>\n+<div class=\"line\"><a id=\"l01259\" name=\"l01259\"></a><span class=\"lineno\"> 1259</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01260\" name=\"l01260\"></a><span class=\"lineno\"> 1260</span> </div>\n+<div class=\"line\"><a id=\"l01285\" name=\"l01285\"></a><span class=\"lineno\"> 1285</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01286\" name=\"l01286\"></a><span class=\"lineno\"> 1286</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01287\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01287\" name=\"l01287\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#a03c47cdd97f18b8bbdd1e3ce66cbd5d8\"> 1287</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01253.html#a03c47cdd97f18b8bbdd1e3ce66cbd5d8\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01288\" name=\"l01288\"></a><span class=\"lineno\"> 1288</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01289\" name=\"l01289\"></a><span class=\"lineno\"> 1289</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01290\" name=\"l01290\"></a><span class=\"lineno\"> 1290</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01291\" name=\"l01291\"></a><span class=\"lineno\"> 1291</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01292\" name=\"l01292\"></a><span class=\"lineno\"> 1292</span>        PATCH_TABLE *patchTable)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l01293\" name=\"l01293\"></a><span class=\"lineno\"> 1293</span> </div>\n+<div class=\"line\"><a id=\"l01294\" name=\"l01294\"></a><span class=\"lineno\"> 1294</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01253.html#a8ba6c1bfddfa877a523c098af03af037\">EvalPatches</a>(srcBuffer-&gt;BindVBO(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01295\" name=\"l01295\"></a><span class=\"lineno\"> 1295</span>                           dstBuffer-&gt;BindVBO(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01296\" name=\"l01296\"></a><span class=\"lineno\"> 1296</span>                           0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l01297\" name=\"l01297\"></a><span class=\"lineno\"> 1297</span>                           0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l01298\" name=\"l01298\"></a><span class=\"lineno\"> 1298</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01299\" name=\"l01299\"></a><span class=\"lineno\"> 1299</span>                           patchCoords-&gt;BindVBO(),</div>\n+<div class=\"line\"><a id=\"l01300\" name=\"l01300\"></a><span class=\"lineno\"> 1300</span>                           patchTable-&gt;GetVaryingPatchArrays(),</div>\n+<div class=\"line\"><a id=\"l01301\" name=\"l01301\"></a><span class=\"lineno\"> 1301</span>                           patchTable-&gt;GetVaryingPatchIndexTextureBuffer(),</div>\n+<div class=\"line\"><a id=\"l01302\" name=\"l01302\"></a><span class=\"lineno\"> 1302</span>                           patchTable-&gt;GetPatchParamTextureBuffer());</div>\n+<div class=\"line\"><a id=\"l01303\" name=\"l01303\"></a><span class=\"lineno\"> 1303</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01304\" name=\"l01304\"></a><span class=\"lineno\"> 1304</span> </div>\n+<div class=\"line\"><a id=\"l01349\" name=\"l01349\"></a><span class=\"lineno\"> 1349</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01350\" name=\"l01350\"></a><span class=\"lineno\"> 1350</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01351\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01351\" name=\"l01351\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#a4e52803429d069b9631cce1535a20c4c\"> 1351</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01253.html#a4e52803429d069b9631cce1535a20c4c\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01352\" name=\"l01352\"></a><span class=\"lineno\"> 1352</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01353\" name=\"l01353\"></a><span class=\"lineno\"> 1353</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01354\" name=\"l01354\"></a><span class=\"lineno\"> 1354</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l01355\" name=\"l01355\"></a><span class=\"lineno\"> 1355</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l01356\" name=\"l01356\"></a><span class=\"lineno\"> 1356</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01357\" name=\"l01357\"></a><span class=\"lineno\"> 1357</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01358\" name=\"l01358\"></a><span class=\"lineno\"> 1358</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l01359\" name=\"l01359\"></a><span class=\"lineno\"> 1359</span>        <a class=\"code hl_class\" href=\"a01253.html\">GLXFBEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n+<div class=\"line\"><a id=\"l01360\" name=\"l01360\"></a><span class=\"lineno\"> 1360</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l01361\" name=\"l01361\"></a><span class=\"lineno\"> 1361</span> </div>\n+<div class=\"line\"><a id=\"l01362\" name=\"l01362\"></a><span class=\"lineno\"> 1362</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l01363\" name=\"l01363\"></a><span class=\"lineno\"> 1363</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01253.html#a6ee6055100beee2bc55426a0e909dc59\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01364\" name=\"l01364\"></a><span class=\"lineno\"> 1364</span>                                         srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l01365\" name=\"l01365\"></a><span class=\"lineno\"> 1365</span>                                         dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01366\" name=\"l01366\"></a><span class=\"lineno\"> 1366</span>                                         duBuffer, duDesc,</div>\n+<div class=\"line\"><a id=\"l01367\" name=\"l01367\"></a><span class=\"lineno\"> 1367</span>                                         dvBuffer, dvDesc,</div>\n+<div class=\"line\"><a id=\"l01368\" name=\"l01368\"></a><span class=\"lineno\"> 1368</span>                                         numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l01369\" name=\"l01369\"></a><span class=\"lineno\"> 1369</span>                                         patchTable);</div>\n+<div class=\"line\"><a id=\"l01370\" name=\"l01370\"></a><span class=\"lineno\"> 1370</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l01371\" name=\"l01371\"></a><span class=\"lineno\"> 1371</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n+<div class=\"line\"><a id=\"l01372\" name=\"l01372\"></a><span class=\"lineno\"> 1372</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l01373\" name=\"l01373\"></a><span class=\"lineno\"> 1373</span>            instance = <a class=\"code hl_function\" href=\"a01253.html#a5be617906ad76ddcc4795dd6557a79f7\">Create</a>(srcDesc, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01374\" name=\"l01374\"></a><span class=\"lineno\"> 1374</span>                              duDesc, dvDesc);</div>\n+<div class=\"line\"><a id=\"l01375\" name=\"l01375\"></a><span class=\"lineno\"> 1375</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l01376\" name=\"l01376\"></a><span class=\"lineno\"> 1376</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01253.html#a6ee6055100beee2bc55426a0e909dc59\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01377\" name=\"l01377\"></a><span class=\"lineno\"> 1377</span>                                               srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l01378\" name=\"l01378\"></a><span class=\"lineno\"> 1378</span>                                               dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01379\" name=\"l01379\"></a><span class=\"lineno\"> 1379</span>                                               duBuffer, duDesc,</div>\n+<div class=\"line\"><a id=\"l01380\" name=\"l01380\"></a><span class=\"lineno\"> 1380</span>                                               dvBuffer, dvDesc,</div>\n+<div class=\"line\"><a id=\"l01381\" name=\"l01381\"></a><span class=\"lineno\"> 1381</span>                                               numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l01382\" name=\"l01382\"></a><span class=\"lineno\"> 1382</span>                                               patchTable);</div>\n+<div class=\"line\"><a id=\"l01383\" name=\"l01383\"></a><span class=\"lineno\"> 1383</span>                <span class=\"keyword\">delete</span> instance;</div>\n+<div class=\"line\"><a id=\"l01384\" name=\"l01384\"></a><span class=\"lineno\"> 1384</span>                <span class=\"keywordflow\">return</span> r;</div>\n+<div class=\"line\"><a id=\"l01385\" name=\"l01385\"></a><span class=\"lineno\"> 1385</span>            }</div>\n+<div class=\"line\"><a id=\"l01386\" name=\"l01386\"></a><span class=\"lineno\"> 1386</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l01387\" name=\"l01387\"></a><span class=\"lineno\"> 1387</span>        }</div>\n+<div class=\"line\"><a id=\"l01388\" name=\"l01388\"></a><span class=\"lineno\"> 1388</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01389\" name=\"l01389\"></a><span class=\"lineno\"> 1389</span> </div>\n+<div class=\"line\"><a id=\"l01426\" name=\"l01426\"></a><span class=\"lineno\"> 1426</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01427\" name=\"l01427\"></a><span class=\"lineno\"> 1427</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01428\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01428\" name=\"l01428\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#ae642c88c8896d4d55b1876757197b1cc\"> 1428</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01253.html#ae642c88c8896d4d55b1876757197b1cc\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01429\" name=\"l01429\"></a><span class=\"lineno\"> 1429</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01430\" name=\"l01430\"></a><span class=\"lineno\"> 1430</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01431\" name=\"l01431\"></a><span class=\"lineno\"> 1431</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l01432\" name=\"l01432\"></a><span class=\"lineno\"> 1432</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l01433\" name=\"l01433\"></a><span class=\"lineno\"> 1433</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01434\" name=\"l01434\"></a><span class=\"lineno\"> 1434</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01435\" name=\"l01435\"></a><span class=\"lineno\"> 1435</span>        PATCH_TABLE *patchTable)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l01436\" name=\"l01436\"></a><span class=\"lineno\"> 1436</span> </div>\n+<div class=\"line\"><a id=\"l01437\" name=\"l01437\"></a><span class=\"lineno\"> 1437</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01253.html#a8ba6c1bfddfa877a523c098af03af037\">EvalPatches</a>(srcBuffer-&gt;BindVBO(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01438\" name=\"l01438\"></a><span class=\"lineno\"> 1438</span>                           dstBuffer-&gt;BindVBO(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01439\" name=\"l01439\"></a><span class=\"lineno\"> 1439</span>                           duBuffer-&gt;BindVBO(), duDesc,</div>\n+<div class=\"line\"><a id=\"l01440\" name=\"l01440\"></a><span class=\"lineno\"> 1440</span>                           dvBuffer-&gt;BindVBO(), dvDesc,</div>\n+<div class=\"line\"><a id=\"l01441\" name=\"l01441\"></a><span class=\"lineno\"> 1441</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01442\" name=\"l01442\"></a><span class=\"lineno\"> 1442</span>                           patchCoords-&gt;BindVBO(),</div>\n+<div class=\"line\"><a id=\"l01443\" name=\"l01443\"></a><span class=\"lineno\"> 1443</span>                           patchTable-&gt;GetVaryingPatchArrays(),</div>\n+<div class=\"line\"><a id=\"l01444\" name=\"l01444\"></a><span class=\"lineno\"> 1444</span>                           patchTable-&gt;GetVaryingPatchIndexTextureBuffer(),</div>\n+<div class=\"line\"><a id=\"l01445\" name=\"l01445\"></a><span class=\"lineno\"> 1445</span>                           patchTable-&gt;GetPatchParamTextureBuffer());</div>\n+<div class=\"line\"><a id=\"l01446\" name=\"l01446\"></a><span class=\"lineno\"> 1446</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01447\" name=\"l01447\"></a><span class=\"lineno\"> 1447</span> </div>\n+<div class=\"line\"><a id=\"l01510\" name=\"l01510\"></a><span class=\"lineno\"> 1510</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01511\" name=\"l01511\"></a><span class=\"lineno\"> 1511</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01512\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01512\" name=\"l01512\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#ab5bace5b1f7bb4faa1fedfcf7d4fe77d\"> 1512</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01253.html#ab5bace5b1f7bb4faa1fedfcf7d4fe77d\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01513\" name=\"l01513\"></a><span class=\"lineno\"> 1513</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01514\" name=\"l01514\"></a><span class=\"lineno\"> 1514</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01515\" name=\"l01515\"></a><span class=\"lineno\"> 1515</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l01516\" name=\"l01516\"></a><span class=\"lineno\"> 1516</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l01517\" name=\"l01517\"></a><span class=\"lineno\"> 1517</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l01518\" name=\"l01518\"></a><span class=\"lineno\"> 1518</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l01519\" name=\"l01519\"></a><span class=\"lineno\"> 1519</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l01520\" name=\"l01520\"></a><span class=\"lineno\"> 1520</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01521\" name=\"l01521\"></a><span class=\"lineno\"> 1521</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01522\" name=\"l01522\"></a><span class=\"lineno\"> 1522</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l01523\" name=\"l01523\"></a><span class=\"lineno\"> 1523</span>        <a class=\"code hl_class\" href=\"a01253.html\">GLXFBEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n+<div class=\"line\"><a id=\"l01524\" name=\"l01524\"></a><span class=\"lineno\"> 1524</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l01525\" name=\"l01525\"></a><span class=\"lineno\"> 1525</span> </div>\n+<div class=\"line\"><a id=\"l01526\" name=\"l01526\"></a><span class=\"lineno\"> 1526</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l01527\" name=\"l01527\"></a><span class=\"lineno\"> 1527</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01253.html#a6ee6055100beee2bc55426a0e909dc59\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01528\" name=\"l01528\"></a><span class=\"lineno\"> 1528</span>                                         srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l01529\" name=\"l01529\"></a><span class=\"lineno\"> 1529</span>                                         dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01530\" name=\"l01530\"></a><span class=\"lineno\"> 1530</span>                                         duBuffer, duDesc,</div>\n+<div class=\"line\"><a id=\"l01531\" name=\"l01531\"></a><span class=\"lineno\"> 1531</span>                                         dvBuffer, dvDesc,</div>\n+<div class=\"line\"><a id=\"l01532\" name=\"l01532\"></a><span class=\"lineno\"> 1532</span>                                         duuBuffer, duuDesc,</div>\n+<div class=\"line\"><a id=\"l01533\" name=\"l01533\"></a><span class=\"lineno\"> 1533</span>                                         duvBuffer, duvDesc,</div>\n+<div class=\"line\"><a id=\"l01534\" name=\"l01534\"></a><span class=\"lineno\"> 1534</span>                                         dvvBuffer, dvvDesc,</div>\n+<div class=\"line\"><a id=\"l01535\" name=\"l01535\"></a><span class=\"lineno\"> 1535</span>                                         numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l01536\" name=\"l01536\"></a><span class=\"lineno\"> 1536</span>                                         patchTable);</div>\n+<div class=\"line\"><a id=\"l01537\" name=\"l01537\"></a><span class=\"lineno\"> 1537</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l01538\" name=\"l01538\"></a><span class=\"lineno\"> 1538</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n+<div class=\"line\"><a id=\"l01539\" name=\"l01539\"></a><span class=\"lineno\"> 1539</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l01540\" name=\"l01540\"></a><span class=\"lineno\"> 1540</span>            instance = <a class=\"code hl_function\" href=\"a01253.html#a5be617906ad76ddcc4795dd6557a79f7\">Create</a>(srcDesc, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01541\" name=\"l01541\"></a><span class=\"lineno\"> 1541</span>                              duDesc, dvDesc,</div>\n+<div class=\"line\"><a id=\"l01542\" name=\"l01542\"></a><span class=\"lineno\"> 1542</span>                              duuDesc, duvDesc, dvvDesc);</div>\n+<div class=\"line\"><a id=\"l01543\" name=\"l01543\"></a><span class=\"lineno\"> 1543</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l01544\" name=\"l01544\"></a><span class=\"lineno\"> 1544</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01253.html#a6ee6055100beee2bc55426a0e909dc59\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01545\" name=\"l01545\"></a><span class=\"lineno\"> 1545</span>                                               srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l01546\" name=\"l01546\"></a><span class=\"lineno\"> 1546</span>                                               dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01547\" name=\"l01547\"></a><span class=\"lineno\"> 1547</span>                                               duBuffer, duDesc,</div>\n+<div class=\"line\"><a id=\"l01548\" name=\"l01548\"></a><span class=\"lineno\"> 1548</span>                                               dvBuffer, dvDesc,</div>\n+<div class=\"line\"><a id=\"l01549\" name=\"l01549\"></a><span class=\"lineno\"> 1549</span>                                               duuBuffer, duuDesc,</div>\n+<div class=\"line\"><a id=\"l01550\" name=\"l01550\"></a><span class=\"lineno\"> 1550</span>                                               duvBuffer, duvDesc,</div>\n+<div class=\"line\"><a id=\"l01551\" name=\"l01551\"></a><span class=\"lineno\"> 1551</span>                                               dvvBuffer, dvvDesc,</div>\n+<div class=\"line\"><a id=\"l01552\" name=\"l01552\"></a><span class=\"lineno\"> 1552</span>                                               numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l01553\" name=\"l01553\"></a><span class=\"lineno\"> 1553</span>                                               patchTable);</div>\n+<div class=\"line\"><a id=\"l01554\" name=\"l01554\"></a><span class=\"lineno\"> 1554</span>                <span class=\"keyword\">delete</span> instance;</div>\n+<div class=\"line\"><a id=\"l01555\" name=\"l01555\"></a><span class=\"lineno\"> 1555</span>                <span class=\"keywordflow\">return</span> r;</div>\n+<div class=\"line\"><a id=\"l01556\" name=\"l01556\"></a><span class=\"lineno\"> 1556</span>            }</div>\n+<div class=\"line\"><a id=\"l01557\" name=\"l01557\"></a><span class=\"lineno\"> 1557</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l01558\" name=\"l01558\"></a><span class=\"lineno\"> 1558</span>        }</div>\n+<div class=\"line\"><a id=\"l01559\" name=\"l01559\"></a><span class=\"lineno\"> 1559</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01560\" name=\"l01560\"></a><span class=\"lineno\"> 1560</span> </div>\n+<div class=\"line\"><a id=\"l01615\" name=\"l01615\"></a><span class=\"lineno\"> 1615</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01616\" name=\"l01616\"></a><span class=\"lineno\"> 1616</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01617\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01617\" name=\"l01617\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#a7a65272357856989d99d800900d53e85\"> 1617</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01253.html#a7a65272357856989d99d800900d53e85\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01618\" name=\"l01618\"></a><span class=\"lineno\"> 1618</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01619\" name=\"l01619\"></a><span class=\"lineno\"> 1619</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01620\" name=\"l01620\"></a><span class=\"lineno\"> 1620</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l01621\" name=\"l01621\"></a><span class=\"lineno\"> 1621</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l01622\" name=\"l01622\"></a><span class=\"lineno\"> 1622</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l01623\" name=\"l01623\"></a><span class=\"lineno\"> 1623</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l01624\" name=\"l01624\"></a><span class=\"lineno\"> 1624</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l01625\" name=\"l01625\"></a><span class=\"lineno\"> 1625</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01626\" name=\"l01626\"></a><span class=\"lineno\"> 1626</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01627\" name=\"l01627\"></a><span class=\"lineno\"> 1627</span>        PATCH_TABLE *patchTable)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l01628\" name=\"l01628\"></a><span class=\"lineno\"> 1628</span> </div>\n+<div class=\"line\"><a id=\"l01629\" name=\"l01629\"></a><span class=\"lineno\"> 1629</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01253.html#a8ba6c1bfddfa877a523c098af03af037\">EvalPatches</a>(srcBuffer-&gt;BindVBO(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01630\" name=\"l01630\"></a><span class=\"lineno\"> 1630</span>                           dstBuffer-&gt;BindVBO(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01631\" name=\"l01631\"></a><span class=\"lineno\"> 1631</span>                           duBuffer-&gt;BindVBO(), duDesc,</div>\n+<div class=\"line\"><a id=\"l01632\" name=\"l01632\"></a><span class=\"lineno\"> 1632</span>                           dvBuffer-&gt;BindVBO(), dvDesc,</div>\n+<div class=\"line\"><a id=\"l01633\" name=\"l01633\"></a><span class=\"lineno\"> 1633</span>                           duuBuffer-&gt;BindVBO(), duuDesc,</div>\n+<div class=\"line\"><a id=\"l01634\" name=\"l01634\"></a><span class=\"lineno\"> 1634</span>                           duvBuffer-&gt;BindVBO(), duvDesc,</div>\n+<div class=\"line\"><a id=\"l01635\" name=\"l01635\"></a><span class=\"lineno\"> 1635</span>                           dvvBuffer-&gt;BindVBO(), dvvDesc,</div>\n+<div class=\"line\"><a id=\"l01636\" name=\"l01636\"></a><span class=\"lineno\"> 1636</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01637\" name=\"l01637\"></a><span class=\"lineno\"> 1637</span>                           patchCoords-&gt;BindVBO(),</div>\n+<div class=\"line\"><a id=\"l01638\" name=\"l01638\"></a><span class=\"lineno\"> 1638</span>                           patchTable-&gt;GetVaryingPatchArrays(),</div>\n+<div class=\"line\"><a id=\"l01639\" name=\"l01639\"></a><span class=\"lineno\"> 1639</span>                           patchTable-&gt;GetVaryingPatchIndexTextureBuffer(),</div>\n+<div class=\"line\"><a id=\"l01640\" name=\"l01640\"></a><span class=\"lineno\"> 1640</span>                           patchTable-&gt;GetPatchParamTextureBuffer());</div>\n+<div class=\"line\"><a id=\"l01641\" name=\"l01641\"></a><span class=\"lineno\"> 1641</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01642\" name=\"l01642\"></a><span class=\"lineno\"> 1642</span> </div>\n+<div class=\"line\"><a id=\"l01677\" name=\"l01677\"></a><span class=\"lineno\"> 1677</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01678\" name=\"l01678\"></a><span class=\"lineno\"> 1678</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01679\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01679\" name=\"l01679\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#ac843917323be2a95667e5460702b3682\"> 1679</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01253.html#ac843917323be2a95667e5460702b3682\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01680\" name=\"l01680\"></a><span class=\"lineno\"> 1680</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01681\" name=\"l01681\"></a><span class=\"lineno\"> 1681</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01682\" name=\"l01682\"></a><span class=\"lineno\"> 1682</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01683\" name=\"l01683\"></a><span class=\"lineno\"> 1683</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01684\" name=\"l01684\"></a><span class=\"lineno\"> 1684</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l01685\" name=\"l01685\"></a><span class=\"lineno\"> 1685</span>        <span class=\"keywordtype\">int</span> fvarChannel,</div>\n+<div class=\"line\"><a id=\"l01686\" name=\"l01686\"></a><span class=\"lineno\"> 1686</span>        <a class=\"code hl_class\" href=\"a01253.html\">GLXFBEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n+<div class=\"line\"><a id=\"l01687\" name=\"l01687\"></a><span class=\"lineno\"> 1687</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l01688\" name=\"l01688\"></a><span class=\"lineno\"> 1688</span> </div>\n+<div class=\"line\"><a id=\"l01689\" name=\"l01689\"></a><span class=\"lineno\"> 1689</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l01690\" name=\"l01690\"></a><span class=\"lineno\"> 1690</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01253.html#ac843917323be2a95667e5460702b3682\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01691\" name=\"l01691\"></a><span class=\"lineno\"> 1691</span>                                         srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l01692\" name=\"l01692\"></a><span class=\"lineno\"> 1692</span>                                         dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01693\" name=\"l01693\"></a><span class=\"lineno\"> 1693</span>                                         numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l01694\" name=\"l01694\"></a><span class=\"lineno\"> 1694</span>                                         patchTable, fvarChannel);</div>\n+<div class=\"line\"><a id=\"l01695\" name=\"l01695\"></a><span class=\"lineno\"> 1695</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l01696\" name=\"l01696\"></a><span class=\"lineno\"> 1696</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n+<div class=\"line\"><a id=\"l01697\" name=\"l01697\"></a><span class=\"lineno\"> 1697</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l01698\" name=\"l01698\"></a><span class=\"lineno\"> 1698</span>            instance = <a class=\"code hl_function\" href=\"a01253.html#a5be617906ad76ddcc4795dd6557a79f7\">Create</a>(srcDesc, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01699\" name=\"l01699\"></a><span class=\"lineno\"> 1699</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l01700\" name=\"l01700\"></a><span class=\"lineno\"> 1700</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>());</div>\n+<div class=\"line\"><a id=\"l01701\" name=\"l01701\"></a><span class=\"lineno\"> 1701</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l01702\" name=\"l01702\"></a><span class=\"lineno\"> 1702</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01253.html#ac843917323be2a95667e5460702b3682\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01703\" name=\"l01703\"></a><span class=\"lineno\"> 1703</span>                                               srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l01704\" name=\"l01704\"></a><span class=\"lineno\"> 1704</span>                                               dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01705\" name=\"l01705\"></a><span class=\"lineno\"> 1705</span>                                               numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l01706\" name=\"l01706\"></a><span class=\"lineno\"> 1706</span>                                               patchTable, fvarChannel);</div>\n+<div class=\"line\"><a id=\"l01707\" name=\"l01707\"></a><span class=\"lineno\"> 1707</span>                <span class=\"keyword\">delete</span> instance;</div>\n+<div class=\"line\"><a id=\"l01708\" name=\"l01708\"></a><span class=\"lineno\"> 1708</span>                <span class=\"keywordflow\">return</span> r;</div>\n+<div class=\"line\"><a id=\"l01709\" name=\"l01709\"></a><span class=\"lineno\"> 1709</span>            }</div>\n+<div class=\"line\"><a id=\"l01710\" name=\"l01710\"></a><span class=\"lineno\"> 1710</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l01711\" name=\"l01711\"></a><span class=\"lineno\"> 1711</span>        }</div>\n+<div class=\"line\"><a id=\"l01712\" name=\"l01712\"></a><span class=\"lineno\"> 1712</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01713\" name=\"l01713\"></a><span class=\"lineno\"> 1713</span> </div>\n+<div class=\"line\"><a id=\"l01740\" name=\"l01740\"></a><span class=\"lineno\"> 1740</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01741\" name=\"l01741\"></a><span class=\"lineno\"> 1741</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01742\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01742\" name=\"l01742\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#af7d3e4db03873d8c0d5da1d2c53f979e\"> 1742</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01253.html#af7d3e4db03873d8c0d5da1d2c53f979e\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01743\" name=\"l01743\"></a><span class=\"lineno\"> 1743</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01744\" name=\"l01744\"></a><span class=\"lineno\"> 1744</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01745\" name=\"l01745\"></a><span class=\"lineno\"> 1745</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01746\" name=\"l01746\"></a><span class=\"lineno\"> 1746</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01747\" name=\"l01747\"></a><span class=\"lineno\"> 1747</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l01748\" name=\"l01748\"></a><span class=\"lineno\"> 1748</span>        <span class=\"keywordtype\">int</span> fvarChannel = 0)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l01749\" name=\"l01749\"></a><span class=\"lineno\"> 1749</span> </div>\n+<div class=\"line\"><a id=\"l01750\" name=\"l01750\"></a><span class=\"lineno\"> 1750</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01253.html#a8ba6c1bfddfa877a523c098af03af037\">EvalPatches</a>(srcBuffer-&gt;BindVBO(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01751\" name=\"l01751\"></a><span class=\"lineno\"> 1751</span>                           dstBuffer-&gt;BindVBO(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01752\" name=\"l01752\"></a><span class=\"lineno\"> 1752</span>                           0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l01753\" name=\"l01753\"></a><span class=\"lineno\"> 1753</span>                           0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l01754\" name=\"l01754\"></a><span class=\"lineno\"> 1754</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01755\" name=\"l01755\"></a><span class=\"lineno\"> 1755</span>                           patchCoords-&gt;BindVBO(),</div>\n+<div class=\"line\"><a id=\"l01756\" name=\"l01756\"></a><span class=\"lineno\"> 1756</span>                           patchTable-&gt;GetFVarPatchArrays(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01757\" name=\"l01757\"></a><span class=\"lineno\"> 1757</span>                           patchTable-&gt;GetFVarPatchIndexTextureBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01758\" name=\"l01758\"></a><span class=\"lineno\"> 1758</span>                           patchTable-&gt;GetFVarPatchParamTextureBuffer(fvarChannel));</div>\n+<div class=\"line\"><a id=\"l01759\" name=\"l01759\"></a><span class=\"lineno\"> 1759</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01760\" name=\"l01760\"></a><span class=\"lineno\"> 1760</span> </div>\n+<div class=\"line\"><a id=\"l01807\" name=\"l01807\"></a><span class=\"lineno\"> 1807</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01808\" name=\"l01808\"></a><span class=\"lineno\"> 1808</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01809\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01809\" name=\"l01809\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#a9433f78f8817d1ae4f6030144cb16de5\"> 1809</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01253.html#a9433f78f8817d1ae4f6030144cb16de5\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01810\" name=\"l01810\"></a><span class=\"lineno\"> 1810</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01811\" name=\"l01811\"></a><span class=\"lineno\"> 1811</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01812\" name=\"l01812\"></a><span class=\"lineno\"> 1812</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l01813\" name=\"l01813\"></a><span class=\"lineno\"> 1813</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l01814\" name=\"l01814\"></a><span class=\"lineno\"> 1814</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01815\" name=\"l01815\"></a><span class=\"lineno\"> 1815</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01816\" name=\"l01816\"></a><span class=\"lineno\"> 1816</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l01817\" name=\"l01817\"></a><span class=\"lineno\"> 1817</span>        <span class=\"keywordtype\">int</span> fvarChannel,</div>\n+<div class=\"line\"><a id=\"l01818\" name=\"l01818\"></a><span class=\"lineno\"> 1818</span>        <a class=\"code hl_class\" href=\"a01253.html\">GLXFBEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n+<div class=\"line\"><a id=\"l01819\" name=\"l01819\"></a><span class=\"lineno\"> 1819</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l01820\" name=\"l01820\"></a><span class=\"lineno\"> 1820</span> </div>\n+<div class=\"line\"><a id=\"l01821\" name=\"l01821\"></a><span class=\"lineno\"> 1821</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l01822\" name=\"l01822\"></a><span class=\"lineno\"> 1822</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01253.html#ac843917323be2a95667e5460702b3682\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01823\" name=\"l01823\"></a><span class=\"lineno\"> 1823</span>                                         srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l01824\" name=\"l01824\"></a><span class=\"lineno\"> 1824</span>                                         dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01825\" name=\"l01825\"></a><span class=\"lineno\"> 1825</span>                                         duBuffer, duDesc,</div>\n+<div class=\"line\"><a id=\"l01826\" name=\"l01826\"></a><span class=\"lineno\"> 1826</span>                                         dvBuffer, dvDesc,</div>\n+<div class=\"line\"><a id=\"l01827\" name=\"l01827\"></a><span class=\"lineno\"> 1827</span>                                         numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l01828\" name=\"l01828\"></a><span class=\"lineno\"> 1828</span>                                         patchTable, fvarChannel);</div>\n+<div class=\"line\"><a id=\"l01829\" name=\"l01829\"></a><span class=\"lineno\"> 1829</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l01830\" name=\"l01830\"></a><span class=\"lineno\"> 1830</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n+<div class=\"line\"><a id=\"l01831\" name=\"l01831\"></a><span class=\"lineno\"> 1831</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l01832\" name=\"l01832\"></a><span class=\"lineno\"> 1832</span>            instance = <a class=\"code hl_function\" href=\"a01253.html#a5be617906ad76ddcc4795dd6557a79f7\">Create</a>(srcDesc, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01833\" name=\"l01833\"></a><span class=\"lineno\"> 1833</span>                              duDesc, dvDesc);</div>\n+<div class=\"line\"><a id=\"l01834\" name=\"l01834\"></a><span class=\"lineno\"> 1834</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l01835\" name=\"l01835\"></a><span class=\"lineno\"> 1835</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01253.html#ac843917323be2a95667e5460702b3682\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01836\" name=\"l01836\"></a><span class=\"lineno\"> 1836</span>                                               srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l01837\" name=\"l01837\"></a><span class=\"lineno\"> 1837</span>                                               dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01838\" name=\"l01838\"></a><span class=\"lineno\"> 1838</span>                                               duBuffer, duDesc,</div>\n+<div class=\"line\"><a id=\"l01839\" name=\"l01839\"></a><span class=\"lineno\"> 1839</span>                                               dvBuffer, dvDesc,</div>\n+<div class=\"line\"><a id=\"l01840\" name=\"l01840\"></a><span class=\"lineno\"> 1840</span>                                               numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l01841\" name=\"l01841\"></a><span class=\"lineno\"> 1841</span>                                               patchTable, fvarChannel);</div>\n+<div class=\"line\"><a id=\"l01842\" name=\"l01842\"></a><span class=\"lineno\"> 1842</span>                <span class=\"keyword\">delete</span> instance;</div>\n+<div class=\"line\"><a id=\"l01843\" name=\"l01843\"></a><span class=\"lineno\"> 1843</span>                <span class=\"keywordflow\">return</span> r;</div>\n+<div class=\"line\"><a id=\"l01844\" name=\"l01844\"></a><span class=\"lineno\"> 1844</span>            }</div>\n+<div class=\"line\"><a id=\"l01845\" name=\"l01845\"></a><span class=\"lineno\"> 1845</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l01846\" name=\"l01846\"></a><span class=\"lineno\"> 1846</span>        }</div>\n+<div class=\"line\"><a id=\"l01847\" name=\"l01847\"></a><span class=\"lineno\"> 1847</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01848\" name=\"l01848\"></a><span class=\"lineno\"> 1848</span> </div>\n+<div class=\"line\"><a id=\"l01887\" name=\"l01887\"></a><span class=\"lineno\"> 1887</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01888\" name=\"l01888\"></a><span class=\"lineno\"> 1888</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01889\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01889\" name=\"l01889\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#a8736b15a3afb5b221ed009b19503e063\"> 1889</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01253.html#a8736b15a3afb5b221ed009b19503e063\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01890\" name=\"l01890\"></a><span class=\"lineno\"> 1890</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01891\" name=\"l01891\"></a><span class=\"lineno\"> 1891</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01892\" name=\"l01892\"></a><span class=\"lineno\"> 1892</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l01893\" name=\"l01893\"></a><span class=\"lineno\"> 1893</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l01894\" name=\"l01894\"></a><span class=\"lineno\"> 1894</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01895\" name=\"l01895\"></a><span class=\"lineno\"> 1895</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01896\" name=\"l01896\"></a><span class=\"lineno\"> 1896</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l01897\" name=\"l01897\"></a><span class=\"lineno\"> 1897</span>        <span class=\"keywordtype\">int</span> fvarChannel = 0)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l01898\" name=\"l01898\"></a><span class=\"lineno\"> 1898</span> </div>\n+<div class=\"line\"><a id=\"l01899\" name=\"l01899\"></a><span class=\"lineno\"> 1899</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01253.html#a8ba6c1bfddfa877a523c098af03af037\">EvalPatches</a>(srcBuffer-&gt;BindVBO(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01900\" name=\"l01900\"></a><span class=\"lineno\"> 1900</span>                           dstBuffer-&gt;BindVBO(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01901\" name=\"l01901\"></a><span class=\"lineno\"> 1901</span>                           duBuffer-&gt;BindVBO(), duDesc,</div>\n+<div class=\"line\"><a id=\"l01902\" name=\"l01902\"></a><span class=\"lineno\"> 1902</span>                           dvBuffer-&gt;BindVBO(), dvDesc,</div>\n+<div class=\"line\"><a id=\"l01903\" name=\"l01903\"></a><span class=\"lineno\"> 1903</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01904\" name=\"l01904\"></a><span class=\"lineno\"> 1904</span>                           patchCoords-&gt;BindVBO(),</div>\n+<div class=\"line\"><a id=\"l01905\" name=\"l01905\"></a><span class=\"lineno\"> 1905</span>                           patchTable-&gt;GetFVarPatchArrays(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01906\" name=\"l01906\"></a><span class=\"lineno\"> 1906</span>                           patchTable-&gt;GetFVarPatchIndexTextureBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01907\" name=\"l01907\"></a><span class=\"lineno\"> 1907</span>                           patchTable-&gt;GetFVarPatchParamTextureBuffer(fvarChannel));</div>\n+<div class=\"line\"><a id=\"l01908\" name=\"l01908\"></a><span class=\"lineno\"> 1908</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01909\" name=\"l01909\"></a><span class=\"lineno\"> 1909</span> </div>\n+<div class=\"line\"><a id=\"l01974\" name=\"l01974\"></a><span class=\"lineno\"> 1974</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01975\" name=\"l01975\"></a><span class=\"lineno\"> 1975</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01976\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01976\" name=\"l01976\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#afb7e2a0c3a861f3dcd410ba0d5b2046e\"> 1976</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01253.html#afb7e2a0c3a861f3dcd410ba0d5b2046e\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01977\" name=\"l01977\"></a><span class=\"lineno\"> 1977</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01978\" name=\"l01978\"></a><span class=\"lineno\"> 1978</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01979\" name=\"l01979\"></a><span class=\"lineno\"> 1979</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l01980\" name=\"l01980\"></a><span class=\"lineno\"> 1980</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l01981\" name=\"l01981\"></a><span class=\"lineno\"> 1981</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l01982\" name=\"l01982\"></a><span class=\"lineno\"> 1982</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l01983\" name=\"l01983\"></a><span class=\"lineno\"> 1983</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l01984\" name=\"l01984\"></a><span class=\"lineno\"> 1984</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01985\" name=\"l01985\"></a><span class=\"lineno\"> 1985</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01986\" name=\"l01986\"></a><span class=\"lineno\"> 1986</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l01987\" name=\"l01987\"></a><span class=\"lineno\"> 1987</span>        <span class=\"keywordtype\">int</span> fvarChannel,</div>\n+<div class=\"line\"><a id=\"l01988\" name=\"l01988\"></a><span class=\"lineno\"> 1988</span>        <a class=\"code hl_class\" href=\"a01253.html\">GLXFBEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n+<div class=\"line\"><a id=\"l01989\" name=\"l01989\"></a><span class=\"lineno\"> 1989</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l01990\" name=\"l01990\"></a><span class=\"lineno\"> 1990</span> </div>\n+<div class=\"line\"><a id=\"l01991\" name=\"l01991\"></a><span class=\"lineno\"> 1991</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l01992\" name=\"l01992\"></a><span class=\"lineno\"> 1992</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01253.html#ac843917323be2a95667e5460702b3682\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01993\" name=\"l01993\"></a><span class=\"lineno\"> 1993</span>                                         srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l01994\" name=\"l01994\"></a><span class=\"lineno\"> 1994</span>                                         dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01995\" name=\"l01995\"></a><span class=\"lineno\"> 1995</span>                                         duBuffer, duDesc,</div>\n+<div class=\"line\"><a id=\"l01996\" name=\"l01996\"></a><span class=\"lineno\"> 1996</span>                                         dvBuffer, dvDesc,</div>\n+<div class=\"line\"><a id=\"l01997\" name=\"l01997\"></a><span class=\"lineno\"> 1997</span>                                         duuBuffer, duuDesc,</div>\n+<div class=\"line\"><a id=\"l01998\" name=\"l01998\"></a><span class=\"lineno\"> 1998</span>                                         duvBuffer, duvDesc,</div>\n+<div class=\"line\"><a id=\"l01999\" name=\"l01999\"></a><span class=\"lineno\"> 1999</span>                                         dvvBuffer, dvvDesc,</div>\n+<div class=\"line\"><a id=\"l02000\" name=\"l02000\"></a><span class=\"lineno\"> 2000</span>                                         numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l02001\" name=\"l02001\"></a><span class=\"lineno\"> 2001</span>                                         patchTable, fvarChannel);</div>\n+<div class=\"line\"><a id=\"l02002\" name=\"l02002\"></a><span class=\"lineno\"> 2002</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l02003\" name=\"l02003\"></a><span class=\"lineno\"> 2003</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n+<div class=\"line\"><a id=\"l02004\" name=\"l02004\"></a><span class=\"lineno\"> 2004</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l02005\" name=\"l02005\"></a><span class=\"lineno\"> 2005</span>            instance = <a class=\"code hl_function\" href=\"a01253.html#a5be617906ad76ddcc4795dd6557a79f7\">Create</a>(srcDesc, dstDesc,</div>\n+<div class=\"line\"><a id=\"l02006\" name=\"l02006\"></a><span class=\"lineno\"> 2006</span>                              duDesc, dvDesc,</div>\n+<div class=\"line\"><a id=\"l02007\" name=\"l02007\"></a><span class=\"lineno\"> 2007</span>                              duuDesc, duvDesc, dvvDesc);</div>\n+<div class=\"line\"><a id=\"l02008\" name=\"l02008\"></a><span class=\"lineno\"> 2008</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l02009\" name=\"l02009\"></a><span class=\"lineno\"> 2009</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01253.html#ac843917323be2a95667e5460702b3682\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l02010\" name=\"l02010\"></a><span class=\"lineno\"> 2010</span>                                               srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l02011\" name=\"l02011\"></a><span class=\"lineno\"> 2011</span>                                               dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l02012\" name=\"l02012\"></a><span class=\"lineno\"> 2012</span>                                               duBuffer, duDesc,</div>\n+<div class=\"line\"><a id=\"l02013\" name=\"l02013\"></a><span class=\"lineno\"> 2013</span>                                               dvBuffer, dvDesc,</div>\n+<div class=\"line\"><a id=\"l02014\" name=\"l02014\"></a><span class=\"lineno\"> 2014</span>                                               duuBuffer, duuDesc,</div>\n+<div class=\"line\"><a id=\"l02015\" name=\"l02015\"></a><span class=\"lineno\"> 2015</span>                                               duvBuffer, duvDesc,</div>\n+<div class=\"line\"><a id=\"l02016\" name=\"l02016\"></a><span class=\"lineno\"> 2016</span>                                               dvvBuffer, dvvDesc,</div>\n+<div class=\"line\"><a id=\"l02017\" name=\"l02017\"></a><span class=\"lineno\"> 2017</span>                                               numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l02018\" name=\"l02018\"></a><span class=\"lineno\"> 2018</span>                                               patchTable, fvarChannel);</div>\n+<div class=\"line\"><a id=\"l02019\" name=\"l02019\"></a><span class=\"lineno\"> 2019</span>                <span class=\"keyword\">delete</span> instance;</div>\n+<div class=\"line\"><a id=\"l02020\" name=\"l02020\"></a><span class=\"lineno\"> 2020</span>                <span class=\"keywordflow\">return</span> r;</div>\n+<div class=\"line\"><a id=\"l02021\" name=\"l02021\"></a><span class=\"lineno\"> 2021</span>            }</div>\n+<div class=\"line\"><a id=\"l02022\" name=\"l02022\"></a><span class=\"lineno\"> 2022</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l02023\" name=\"l02023\"></a><span class=\"lineno\"> 2023</span>        }</div>\n+<div class=\"line\"><a id=\"l02024\" name=\"l02024\"></a><span class=\"lineno\"> 2024</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l02025\" name=\"l02025\"></a><span class=\"lineno\"> 2025</span> </div>\n+<div class=\"line\"><a id=\"l02082\" name=\"l02082\"></a><span class=\"lineno\"> 2082</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l02083\" name=\"l02083\"></a><span class=\"lineno\"> 2083</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen02084\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l02084\" name=\"l02084\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#ab0a4a9c408bc2a690d879cc7c2ffd21c\"> 2084</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01253.html#ab0a4a9c408bc2a690d879cc7c2ffd21c\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l02085\" name=\"l02085\"></a><span class=\"lineno\"> 2085</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l02086\" name=\"l02086\"></a><span class=\"lineno\"> 2086</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l02087\" name=\"l02087\"></a><span class=\"lineno\"> 2087</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l02088\" name=\"l02088\"></a><span class=\"lineno\"> 2088</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l02089\" name=\"l02089\"></a><span class=\"lineno\"> 2089</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l02090\" name=\"l02090\"></a><span class=\"lineno\"> 2090</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l02091\" name=\"l02091\"></a><span class=\"lineno\"> 2091</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l02092\" name=\"l02092\"></a><span class=\"lineno\"> 2092</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l02093\" name=\"l02093\"></a><span class=\"lineno\"> 2093</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l02094\" name=\"l02094\"></a><span class=\"lineno\"> 2094</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l02095\" name=\"l02095\"></a><span class=\"lineno\"> 2095</span>        <span class=\"keywordtype\">int</span> fvarChannel = 0)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l02096\" name=\"l02096\"></a><span class=\"lineno\"> 2096</span> </div>\n+<div class=\"line\"><a id=\"l02097\" name=\"l02097\"></a><span class=\"lineno\"> 2097</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01253.html#a8ba6c1bfddfa877a523c098af03af037\">EvalPatches</a>(srcBuffer-&gt;BindVBO(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l02098\" name=\"l02098\"></a><span class=\"lineno\"> 2098</span>                           dstBuffer-&gt;BindVBO(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l02099\" name=\"l02099\"></a><span class=\"lineno\"> 2099</span>                           duBuffer-&gt;BindVBO(), duDesc,</div>\n+<div class=\"line\"><a id=\"l02100\" name=\"l02100\"></a><span class=\"lineno\"> 2100</span>                           dvBuffer-&gt;BindVBO(), dvDesc,</div>\n+<div class=\"line\"><a id=\"l02101\" name=\"l02101\"></a><span class=\"lineno\"> 2101</span>                           duuBuffer-&gt;BindVBO(), duuDesc,</div>\n+<div class=\"line\"><a id=\"l02102\" name=\"l02102\"></a><span class=\"lineno\"> 2102</span>                           duvBuffer-&gt;BindVBO(), duvDesc,</div>\n+<div class=\"line\"><a id=\"l02103\" name=\"l02103\"></a><span class=\"lineno\"> 2103</span>                           dvvBuffer-&gt;BindVBO(), dvvDesc,</div>\n+<div class=\"line\"><a id=\"l02104\" name=\"l02104\"></a><span class=\"lineno\"> 2104</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l02105\" name=\"l02105\"></a><span class=\"lineno\"> 2105</span>                           patchCoords-&gt;BindVBO(),</div>\n+<div class=\"line\"><a id=\"l02106\" name=\"l02106\"></a><span class=\"lineno\"> 2106</span>                           patchTable-&gt;GetFVarPatchArrays(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l02107\" name=\"l02107\"></a><span class=\"lineno\"> 2107</span>                           patchTable-&gt;GetFVarPatchIndexTextureBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l02108\" name=\"l02108\"></a><span class=\"lineno\"> 2108</span>                           patchTable-&gt;GetFVarPatchParamTextureBuffer(fvarChannel));</div>\n+<div class=\"line\"><a id=\"l02109\" name=\"l02109\"></a><span class=\"lineno\"> 2109</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l02110\" name=\"l02110\"></a><span class=\"lineno\"> 2110</span> </div>\n+<div class=\"line\"><a id=\"l02116\" name=\"l02116\"></a><span class=\"lineno\"> 2116</span> </div>\n+<div class=\"line\"><a id=\"l02119\" name=\"l02119\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#ade1086349c1a452f60bcf281383ceec2\"> 2119</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01253.html#ade1086349c1a452f60bcf281383ceec2\">Compile</a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l02120\" name=\"l02120\"></a><span class=\"lineno\"> 2120</span>                 <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l02121\" name=\"l02121\"></a><span class=\"lineno\"> 2121</span>                 <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc = <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l02122\" name=\"l02122\"></a><span class=\"lineno\"> 2122</span>                 <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc = <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l02123\" name=\"l02123\"></a><span class=\"lineno\"> 2123</span>                 <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc = <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l02124\" name=\"l02124\"></a><span class=\"lineno\"> 2124</span>                 <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc = <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l02125\" name=\"l02125\"></a><span class=\"lineno\"> 2125</span>                 <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc = <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>());</div>\n+<div class=\"line\"><a id=\"l02126\" name=\"l02126\"></a><span class=\"lineno\"> 2126</span> </div>\n+<div class=\"line\"><a id=\"l02128\" name=\"l02128\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#a631211712e30cb07dc6d6cc51bb1db15\"> 2128</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01253.html#a631211712e30cb07dc6d6cc51bb1db15\">Synchronize</a>(<span class=\"keywordtype\">void</span> *kernel);</div>\n+<div class=\"line\"><a id=\"l02129\" name=\"l02129\"></a><span class=\"lineno\"> 2129</span> </div>\n+<div class=\"line\"><a id=\"l02130\" name=\"l02130\"></a><span class=\"lineno\"> 2130</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l02131\" name=\"l02131\"></a><span class=\"lineno\"> 2131</span>    GLuint _srcBufferTexture;</div>\n+<div class=\"line\"><a id=\"l02132\" name=\"l02132\"></a><span class=\"lineno\"> 2132</span>    GLuint _patchArraysUBO;</div>\n+<div class=\"line\"><a id=\"l02133\" name=\"l02133\"></a><span class=\"lineno\"> 2133</span>    <span class=\"keywordtype\">bool</span> _interleavedDerivativeBuffers;</div>\n+<div class=\"line\"><a id=\"l02134\" name=\"l02134\"></a><span class=\"lineno\"> 2134</span> </div>\n+<div class=\"line\"><a id=\"l02135\" name=\"l02135\"></a><span class=\"lineno\"> 2135</span>    <span class=\"keyword\">struct </span>_StencilKernel {</div>\n+<div class=\"line\"><a id=\"l02136\" name=\"l02136\"></a><span class=\"lineno\"> 2136</span>        _StencilKernel();</div>\n+<div class=\"line\"><a id=\"l02137\" name=\"l02137\"></a><span class=\"lineno\"> 2137</span>        ~_StencilKernel();</div>\n+<div class=\"line\"><a id=\"l02138\" name=\"l02138\"></a><span class=\"lineno\"> 2138</span>        <span class=\"keywordtype\">bool</span> Compile(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l02139\" name=\"l02139\"></a><span class=\"lineno\"> 2139</span>                     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l02140\" name=\"l02140\"></a><span class=\"lineno\"> 2140</span>                     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l02141\" name=\"l02141\"></a><span class=\"lineno\"> 2141</span>                     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l02142\" name=\"l02142\"></a><span class=\"lineno\"> 2142</span>                     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l02143\" name=\"l02143\"></a><span class=\"lineno\"> 2143</span>                     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l02144\" name=\"l02144\"></a><span class=\"lineno\"> 2144</span>                     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l02145\" name=\"l02145\"></a><span class=\"lineno\"> 2145</span>                     <span class=\"keywordtype\">bool</span> interleavedDerivativeBuffers);</div>\n+<div class=\"line\"><a id=\"l02146\" name=\"l02146\"></a><span class=\"lineno\"> 2146</span>        GLuint program;</div>\n+<div class=\"line\"><a id=\"l02147\" name=\"l02147\"></a><span class=\"lineno\"> 2147</span>        GLint uniformSrcBufferTexture;</div>\n+<div class=\"line\"><a id=\"l02148\" name=\"l02148\"></a><span class=\"lineno\"> 2148</span>        GLint uniformSrcOffset;    <span class=\"comment\">// src buffer offset (in elements)</span></div>\n+<div class=\"line\"><a id=\"l02149\" name=\"l02149\"></a><span class=\"lineno\"> 2149</span> </div>\n+<div class=\"line\"><a id=\"l02150\" name=\"l02150\"></a><span class=\"lineno\"> 2150</span>        GLint uniformSizesTexture;</div>\n+<div class=\"line\"><a id=\"l02151\" name=\"l02151\"></a><span class=\"lineno\"> 2151</span>        GLint uniformOffsetsTexture;</div>\n+<div class=\"line\"><a id=\"l02152\" name=\"l02152\"></a><span class=\"lineno\"> 2152</span>        GLint uniformIndicesTexture;</div>\n+<div class=\"line\"><a id=\"l02153\" name=\"l02153\"></a><span class=\"lineno\"> 2153</span>        GLint uniformWeightsTexture;</div>\n+<div class=\"line\"><a id=\"l02154\" name=\"l02154\"></a><span class=\"lineno\"> 2154</span>        GLint uniformDuWeightsTexture;</div>\n+<div class=\"line\"><a id=\"l02155\" name=\"l02155\"></a><span class=\"lineno\"> 2155</span>        GLint uniformDvWeightsTexture;</div>\n+<div class=\"line\"><a id=\"l02156\" name=\"l02156\"></a><span class=\"lineno\"> 2156</span>        GLint uniformDuuWeightsTexture;</div>\n+<div class=\"line\"><a id=\"l02157\" name=\"l02157\"></a><span class=\"lineno\"> 2157</span>        GLint uniformDuvWeightsTexture;</div>\n+<div class=\"line\"><a id=\"l02158\" name=\"l02158\"></a><span class=\"lineno\"> 2158</span>        GLint uniformDvvWeightsTexture;</div>\n+<div class=\"line\"><a id=\"l02159\" name=\"l02159\"></a><span class=\"lineno\"> 2159</span>        GLint uniformStart;     <span class=\"comment\">// range</span></div>\n+<div class=\"line\"><a id=\"l02160\" name=\"l02160\"></a><span class=\"lineno\"> 2160</span>        GLint uniformEnd;</div>\n+<div class=\"line\"><a id=\"l02161\" name=\"l02161\"></a><span class=\"lineno\"> 2161</span>    } _stencilKernel;</div>\n+<div class=\"line\"><a id=\"l02162\" name=\"l02162\"></a><span class=\"lineno\"> 2162</span> </div>\n+<div class=\"line\"><a id=\"l02163\" name=\"l02163\"></a><span class=\"lineno\"> 2163</span>    <span class=\"keyword\">struct </span>_PatchKernel {</div>\n+<div class=\"line\"><a id=\"l02164\" name=\"l02164\"></a><span class=\"lineno\"> 2164</span>        _PatchKernel();</div>\n+<div class=\"line\"><a id=\"l02165\" name=\"l02165\"></a><span class=\"lineno\"> 2165</span>        ~_PatchKernel();</div>\n+<div class=\"line\"><a id=\"l02166\" name=\"l02166\"></a><span class=\"lineno\"> 2166</span>        <span class=\"keywordtype\">bool</span> Compile(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l02167\" name=\"l02167\"></a><span class=\"lineno\"> 2167</span>                     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l02168\" name=\"l02168\"></a><span class=\"lineno\"> 2168</span>                     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l02169\" name=\"l02169\"></a><span class=\"lineno\"> 2169</span>                     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l02170\" name=\"l02170\"></a><span class=\"lineno\"> 2170</span>                     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l02171\" name=\"l02171\"></a><span class=\"lineno\"> 2171</span>                     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l02172\" name=\"l02172\"></a><span class=\"lineno\"> 2172</span>                     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l02173\" name=\"l02173\"></a><span class=\"lineno\"> 2173</span>                     <span class=\"keywordtype\">bool</span> interleavedDerivativeBuffers);</div>\n+<div class=\"line\"><a id=\"l02174\" name=\"l02174\"></a><span class=\"lineno\"> 2174</span>        GLuint program;</div>\n+<div class=\"line\"><a id=\"l02175\" name=\"l02175\"></a><span class=\"lineno\"> 2175</span>        GLint uniformSrcBufferTexture;</div>\n+<div class=\"line\"><a id=\"l02176\" name=\"l02176\"></a><span class=\"lineno\"> 2176</span>        GLint uniformSrcOffset;    <span class=\"comment\">// src buffer offset (in elements)</span></div>\n+<div class=\"line\"><a id=\"l02177\" name=\"l02177\"></a><span class=\"lineno\"> 2177</span> </div>\n+<div class=\"line\"><a id=\"l02178\" name=\"l02178\"></a><span class=\"lineno\"> 2178</span>        GLint uniformPatchArraysUBOBinding;</div>\n+<div class=\"line\"><a id=\"l02179\" name=\"l02179\"></a><span class=\"lineno\"> 2179</span>        GLint uniformPatchParamTexture;</div>\n+<div class=\"line\"><a id=\"l02180\" name=\"l02180\"></a><span class=\"lineno\"> 2180</span>        GLint uniformPatchIndexTexture;</div>\n+<div class=\"line\"><a id=\"l02181\" name=\"l02181\"></a><span class=\"lineno\"> 2181</span>    } _patchKernel;</div>\n+<div class=\"line\"><a id=\"l02182\" name=\"l02182\"></a><span class=\"lineno\"> 2182</span> </div>\n+<div class=\"line\"><a id=\"l02183\" name=\"l02183\"></a><span class=\"lineno\"> 2183</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l02184\" name=\"l02184\"></a><span class=\"lineno\"> 2184</span> </div>\n+<div class=\"line\"><a id=\"l02185\" name=\"l02185\"></a><span class=\"lineno\"> 2185</span>}  <span class=\"comment\">// end namespace Osd</span></div>\n+<div class=\"line\"><a id=\"l02186\" name=\"l02186\"></a><span class=\"lineno\"> 2186</span> </div>\n+<div class=\"line\"><a id=\"l02187\" name=\"l02187\"></a><span class=\"lineno\"> 2187</span>}  <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l02188\" name=\"l02188\"></a><span class=\"lineno\"> 2188</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l02189\" name=\"l02189\"></a><span class=\"lineno\"> 2189</span> </div>\n+<div class=\"line\"><a id=\"l02190\" name=\"l02190\"></a><span class=\"lineno\"> 2190</span>}  <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l02191\" name=\"l02191\"></a><span class=\"lineno\"> 2191</span> </div>\n+<div class=\"line\"><a id=\"l02192\" name=\"l02192\"></a><span class=\"lineno\"> 2192</span> </div>\n+<div class=\"line\"><a id=\"l02193\" name=\"l02193\"></a><span class=\"lineno\"> 2193</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_GL_XFB_EVALUATOR_H</span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa00912_html_a98098cd229f60d2397d84a76fe654a31\"><div class=\"ttname\"><a href=\"a00912.html#a98098cd229f60d2397d84a76fe654a31\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchArrayVector</a></div><div class=\"ttdeci\">std::vector&lt; PatchArray &gt; PatchArrayVector</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00132\">types.h:132</a></div></div>\n+<div class=\"ttc\" id=\"aa01065_html\"><div class=\"ttname\"><a href=\"a01065.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTable</a></div><div class=\"ttdoc\">Stencil table class wrapping the template for compatibility.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00273\">stencilTable.h:273</a></div></div>\n+<div class=\"ttc\" id=\"aa01081_html\"><div class=\"ttname\"><a href=\"a01081.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTable</a></div><div class=\"ttdoc\">Limit stencil table class wrapping the template for compatibility.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00583\">stencilTable.h:583</a></div></div>\n+<div class=\"ttc\" id=\"aa01141_html\"><div class=\"ttname\"><a href=\"a01141.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::BufferDescriptor</a></div><div class=\"ttdoc\">BufferDescriptor is a struct which describes buffer elements in interleaved data buffers....</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00061\">bufferDescriptor.h:61</a></div></div>\n+<div class=\"ttc\" id=\"aa01249_html\"><div class=\"ttname\"><a href=\"a01249.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableTBO</a></div><div class=\"ttdoc\">GL TextureBuffer stencil table.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00052\">glXFBEvaluator.h:52</a></div></div>\n+<div class=\"ttc\" id=\"aa01249_html_a233d7a80471d1d90eb2caf732e25115b\"><div class=\"ttname\"><a href=\"a01249.html#a233d7a80471d1d90eb2caf732e25115b\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableTBO::GetSizesTexture</a></div><div class=\"ttdeci\">GLuint GetSizesTexture() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00072\">glXFBEvaluator.h:72</a></div></div>\n+<div class=\"ttc\" id=\"aa01249_html_a24a8210b637a5b0fca2b258de3b8b8a6\"><div class=\"ttname\"><a href=\"a01249.html#a24a8210b637a5b0fca2b258de3b8b8a6\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableTBO::Create</a></div><div class=\"ttdeci\">static GLStencilTableTBO * Create(Far::StencilTable const *stencilTable, void *deviceContext=NULL)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00054\">glXFBEvaluator.h:54</a></div></div>\n+<div class=\"ttc\" id=\"aa01249_html_a5d98fa1e61dcd32b8deb16bc9cf04d52\"><div class=\"ttname\"><a href=\"a01249.html#a5d98fa1e61dcd32b8deb16bc9cf04d52\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableTBO::GetDvvWeightsTexture</a></div><div class=\"ttdeci\">GLuint GetDvvWeightsTexture() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00080\">glXFBEvaluator.h:80</a></div></div>\n+<div class=\"ttc\" id=\"aa01249_html_a65836d2070b943c8fecbad926d074de2\"><div class=\"ttname\"><a href=\"a01249.html#a65836d2070b943c8fecbad926d074de2\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableTBO::GetNumStencils</a></div><div class=\"ttdeci\">int GetNumStencils() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00081\">glXFBEvaluator.h:81</a></div></div>\n+<div class=\"ttc\" id=\"aa01249_html_a6987f68e0e090437e6a28dadce50f566\"><div class=\"ttname\"><a href=\"a01249.html#a6987f68e0e090437e6a28dadce50f566\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableTBO::GetDuvWeightsTexture</a></div><div class=\"ttdeci\">GLuint GetDuvWeightsTexture() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00079\">glXFBEvaluator.h:79</a></div></div>\n+<div class=\"ttc\" id=\"aa01249_html_a70fdd6f46c3a89dd4627b67c9a37d02e\"><div class=\"ttname\"><a href=\"a01249.html#a70fdd6f46c3a89dd4627b67c9a37d02e\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableTBO::GetDuuWeightsTexture</a></div><div class=\"ttdeci\">GLuint GetDuuWeightsTexture() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00078\">glXFBEvaluator.h:78</a></div></div>\n+<div class=\"ttc\" id=\"aa01249_html_a809a960b308df1bca3d8f406dbf9f422\"><div class=\"ttname\"><a href=\"a01249.html#a809a960b308df1bca3d8f406dbf9f422\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableTBO::GetIndicesTexture</a></div><div class=\"ttdeci\">GLuint GetIndicesTexture() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00074\">glXFBEvaluator.h:74</a></div></div>\n+<div class=\"ttc\" id=\"aa01249_html_a80dc5a5837edb75950ad0306595cbdcc\"><div class=\"ttname\"><a href=\"a01249.html#a80dc5a5837edb75950ad0306595cbdcc\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableTBO::~GLStencilTableTBO</a></div><div class=\"ttdeci\">~GLStencilTableTBO()</div></div>\n+<div class=\"ttc\" id=\"aa01249_html_abbba46ba67be00a0eac751e3e731db6e\"><div class=\"ttname\"><a href=\"a01249.html#abbba46ba67be00a0eac751e3e731db6e\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableTBO::GLStencilTableTBO</a></div><div class=\"ttdeci\">GLStencilTableTBO(Far::StencilTable const *stencilTable)</div></div>\n+<div class=\"ttc\" id=\"aa01249_html_ac74a769daf1fe45575a16b738bb761cd\"><div class=\"ttname\"><a href=\"a01249.html#ac74a769daf1fe45575a16b738bb761cd\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableTBO::GLStencilTableTBO</a></div><div class=\"ttdeci\">GLStencilTableTBO(Far::LimitStencilTable const *limitStencilTable)</div></div>\n+<div class=\"ttc\" id=\"aa01249_html_ad5f4a852f17762c50c5d3011b11155cb\"><div class=\"ttname\"><a href=\"a01249.html#ad5f4a852f17762c50c5d3011b11155cb\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableTBO::GetWeightsTexture</a></div><div class=\"ttdeci\">GLuint GetWeightsTexture() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00075\">glXFBEvaluator.h:75</a></div></div>\n+<div class=\"ttc\" id=\"aa01249_html_ae38a4728f9debae7733ab48cfadd8312\"><div class=\"ttname\"><a href=\"a01249.html#ae38a4728f9debae7733ab48cfadd8312\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableTBO::Create</a></div><div class=\"ttdeci\">static GLStencilTableTBO * Create(Far::LimitStencilTable const *limitStencilTable, void *deviceContext=NULL)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00060\">glXFBEvaluator.h:60</a></div></div>\n+<div class=\"ttc\" id=\"aa01249_html_afb1cd9d41b168ceeadd4892bfb3d3f77\"><div class=\"ttname\"><a href=\"a01249.html#afb1cd9d41b168ceeadd4892bfb3d3f77\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableTBO::GetDvWeightsTexture</a></div><div class=\"ttdeci\">GLuint GetDvWeightsTexture() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00077\">glXFBEvaluator.h:77</a></div></div>\n+<div class=\"ttc\" id=\"aa01249_html_afd4ff3060d31d9650d6c2820d870fda8\"><div class=\"ttname\"><a href=\"a01249.html#afd4ff3060d31d9650d6c2820d870fda8\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableTBO::GetDuWeightsTexture</a></div><div class=\"ttdeci\">GLuint GetDuWeightsTexture() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00076\">glXFBEvaluator.h:76</a></div></div>\n+<div class=\"ttc\" id=\"aa01249_html_afef26723ecaa12060e3e4744c0e206a9\"><div class=\"ttname\"><a href=\"a01249.html#afef26723ecaa12060e3e4744c0e206a9\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableTBO::GetOffsetsTexture</a></div><div class=\"ttdeci\">GLuint GetOffsetsTexture() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00073\">glXFBEvaluator.h:73</a></div></div>\n+<div class=\"ttc\" id=\"aa01253_html\"><div class=\"ttname\"><a href=\"a01253.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00098\">glXFBEvaluator.h:98</a></div></div>\n+<div class=\"ttc\" id=\"aa01253_html_a03c47cdd97f18b8bbdd1e3ce66cbd5d8\"><div class=\"ttname\"><a href=\"a01253.html#a03c47cdd97f18b8bbdd1e3ce66cbd5d8\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable) const</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l01287\">glXFBEvaluator.h:1287</a></div></div>\n+<div class=\"ttc\" id=\"aa01253_html_a1355f12e6d931e3ab6c8429b798d0269\"><div class=\"ttname\"><a href=\"a01253.html#a1355f12e6d931e3ab6c8429b798d0269\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::Create</a></div><div class=\"ttdeci\">static GLXFBEvaluator * Create(BufferDescriptor const &amp;srcDesc, BufferDescriptor const &amp;dstDesc, BufferDescriptor const &amp;duDesc, BufferDescriptor const &amp;dvDesc, bool interleavedDerivativeBuffers=false)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00126\">glXFBEvaluator.h:126</a></div></div>\n+<div class=\"ttc\" id=\"aa01253_html_a16dedd32573dd7f70c61f1fb6072e791\"><div class=\"ttname\"><a href=\"a01253.html#a16dedd32573dd7f70c61f1fb6072e791\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalStencils</a></div><div class=\"ttdeci\">bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, STENCIL_TABLE const *stencilTable) const</div><div class=\"ttdoc\">Generic stencil function.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00506\">glXFBEvaluator.h:506</a></div></div>\n+<div class=\"ttc\" id=\"aa01253_html_a1932f725b28e271ab11ca768ba3bb01e\"><div class=\"ttname\"><a href=\"a01253.html#a1932f725b28e271ab11ca768ba3bb01e\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::GLXFBEvaluator</a></div><div class=\"ttdeci\">GLXFBEvaluator(bool interleavedDerivativeBuffers=false)</div><div class=\"ttdoc\">Constructor.</div></div>\n+<div class=\"ttc\" id=\"aa01253_html_a20fa5a4f3311832729ea7b10f935285d\"><div class=\"ttname\"><a href=\"a01253.html#a20fa5a4f3311832729ea7b10f935285d\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalStencils</a></div><div class=\"ttdeci\">bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, STENCIL_TABLE const *stencilTable) const</div><div class=\"ttdoc\">Generic stencil function.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00575\">glXFBEvaluator.h:575</a></div></div>\n+<div class=\"ttc\" id=\"aa01253_html_a2c24b70c9312d8dff3fecb9ddea52c44\"><div class=\"ttname\"><a href=\"a01253.html#a2c24b70c9312d8dff3fecb9ddea52c44\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::Instantiatable</a></div><div class=\"ttdeci\">bool Instantiatable</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00100\">glXFBEvaluator.h:100</a></div></div>\n+<div class=\"ttc\" id=\"aa01253_html_a2d1074f49212a9ae65161e9c957dbab7\"><div class=\"ttname\"><a href=\"a01253.html#a2d1074f49212a9ae65161e9c957dbab7\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalPatches</a></div><div class=\"ttdeci\">bool EvalPatches(GLuint srcBuffer, BufferDescriptor const &amp;srcDesc, GLuint dstBuffer, BufferDescriptor const &amp;dstDesc, GLuint duBuffer, BufferDescriptor const &amp;duDesc, GLuint dvBuffer, BufferDescriptor const &amp;dvDesc, GLuint duuBuffer, BufferDescriptor const &amp;duuDesc, GLuint duvBuffer, BufferDescriptor const &amp;duvDesc, GLuint dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, GLuint patchCoordsBuffer, const PatchArrayVector &amp;patchArrays, GLuint patchIndexBuffer, GLuint patchParamsBuffer) const</div></div>\n+<div class=\"ttc\" id=\"aa01253_html_a327901007bb31de57205e906c2f7ccbf\"><div class=\"ttname\"><a href=\"a01253.html#a327901007bb31de57205e906c2f7ccbf\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, STENCIL_TABLE const *stencilTable, GLXFBEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic static stencil function. This function has a same signature as other device kernels have so t...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00396\">glXFBEvaluator.h:396</a></div></div>\n+<div class=\"ttc\" id=\"aa01253_html_a35609a9d5a1b087bd675035d710dc688\"><div class=\"ttname\"><a href=\"a01253.html#a35609a9d5a1b087bd675035d710dc688\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalPatches</a></div><div class=\"ttdeci\">bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable) const</div><div class=\"ttdoc\">Generic limit eval function with derivatives. This function has a same signature as other device kern...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l01144\">glXFBEvaluator.h:1144</a></div></div>\n+<div class=\"ttc\" id=\"aa01253_html_a3a08d0f058b0d8dde7c853734ee446c7\"><div class=\"ttname\"><a href=\"a01253.html#a3a08d0f058b0d8dde7c853734ee446c7\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::Create</a></div><div class=\"ttdeci\">static GLXFBEvaluator * Create(BufferDescriptor const &amp;srcDesc, BufferDescriptor const &amp;dstDesc, BufferDescriptor const &amp;duDesc, BufferDescriptor const &amp;dvDesc, BufferDescriptor const &amp;duuDesc, BufferDescriptor const &amp;duvDesc, BufferDescriptor const &amp;dvvDesc, bool interleavedDerivativeBuffers=false)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00170\">glXFBEvaluator.h:170</a></div></div>\n+<div class=\"ttc\" id=\"aa01253_html_a429f25fc87b709736f619fb76bd6c47f\"><div class=\"ttname\"><a href=\"a01253.html#a429f25fc87b709736f619fb76bd6c47f\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::Create</a></div><div class=\"ttdeci\">static GLXFBEvaluator * Create(BufferDescriptor const &amp;srcDesc, BufferDescriptor const &amp;dstDesc, BufferDescriptor const &amp;duDesc, BufferDescriptor const &amp;dvDesc, void *deviceContext)</div><div class=\"ttdoc\">Specialization to allow creation without a device context.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00117\">glXFBEvaluator.h:117</a></div></div>\n+<div class=\"ttc\" id=\"aa01253_html_a432c889974c11c85b8a7748412b9bfd8\"><div class=\"ttname\"><a href=\"a01253.html#a432c889974c11c85b8a7748412b9bfd8\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, STENCIL_TABLE const *stencilTable, GLXFBEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic static stencil function. This function has a same signature as other device kernels have so t...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00306\">glXFBEvaluator.h:306</a></div></div>\n+<div class=\"ttc\" id=\"aa01253_html_a4e52803429d069b9631cce1535a20c4c\"><div class=\"ttname\"><a href=\"a01253.html#a4e52803429d069b9631cce1535a20c4c\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, GLXFBEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l01351\">glXFBEvaluator.h:1351</a></div></div>\n+<div class=\"ttc\" id=\"aa01253_html_a54b949bb4819f61594334e599194f224\"><div class=\"ttname\"><a href=\"a01253.html#a54b949bb4819f61594334e599194f224\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalStencils</a></div><div class=\"ttdeci\">bool EvalStencils(GLuint srcBuffer, BufferDescriptor const &amp;srcDesc, GLuint dstBuffer, BufferDescriptor const &amp;dstDesc, GLuint duBuffer, BufferDescriptor const &amp;duDesc, GLuint dvBuffer, BufferDescriptor const &amp;dvDesc, GLuint duuBuffer, BufferDescriptor const &amp;duuDesc, GLuint duvBuffer, BufferDescriptor const &amp;duvDesc, GLuint dvvBuffer, BufferDescriptor const &amp;dvvDesc, GLuint sizesBuffer, GLuint offsetsBuffer, GLuint indicesBuffer, GLuint weightsBuffer, GLuint duWeightsBuffer, GLuint dvWeightsBuffer, GLuint duuWeightsBuffer, GLuint duvWeightsBuffer, GLuint dvvWeightsBuffer, int start, int end) const</div><div class=\"ttdoc\">Dispatch the GLSL XFB kernel on on GPU asynchronously returns false if the kernel hasn't been compile...</div></div>\n+<div class=\"ttc\" id=\"aa01253_html_a57b0367816baf9831808847cbfe833b0\"><div class=\"ttname\"><a href=\"a01253.html#a57b0367816baf9831808847cbfe833b0\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, GLXFBEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00843\">glXFBEvaluator.h:843</a></div></div>\n+<div class=\"ttc\" id=\"aa01253_html_a591dd44e4e7d35454ab63664150137a3\"><div class=\"ttname\"><a href=\"a01253.html#a591dd44e4e7d35454ab63664150137a3\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::Create</a></div><div class=\"ttdeci\">static GLXFBEvaluator * Create(BufferDescriptor const &amp;srcDesc, BufferDescriptor const &amp;dstDesc, BufferDescriptor const &amp;duDesc, BufferDescriptor const &amp;dvDesc, BufferDescriptor const &amp;duuDesc, BufferDescriptor const &amp;duvDesc, BufferDescriptor const &amp;dvvDesc, DEVICE_CONTEXT deviceContext)</div><div class=\"ttdoc\">Generic creator template.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00140\">glXFBEvaluator.h:140</a></div></div>\n+<div class=\"ttc\" id=\"aa01253_html_a5be617906ad76ddcc4795dd6557a79f7\"><div class=\"ttname\"><a href=\"a01253.html#a5be617906ad76ddcc4795dd6557a79f7\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::Create</a></div><div class=\"ttdeci\">static GLXFBEvaluator * Create(BufferDescriptor const &amp;srcDesc, BufferDescriptor const &amp;dstDesc, BufferDescriptor const &amp;duDesc, BufferDescriptor const &amp;dvDesc, DEVICE_CONTEXT deviceContext)</div><div class=\"ttdoc\">Generic creator template.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00104\">glXFBEvaluator.h:104</a></div></div>\n+<div class=\"ttc\" id=\"aa01253_html_a631211712e30cb07dc6d6cc51bb1db15\"><div class=\"ttname\"><a href=\"a01253.html#a631211712e30cb07dc6d6cc51bb1db15\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::Synchronize</a></div><div class=\"ttdeci\">static void Synchronize(void *kernel)</div><div class=\"ttdoc\">Wait the dispatched kernel finishes.</div></div>\n+<div class=\"ttc\" id=\"aa01253_html_a6ee6055100beee2bc55426a0e909dc59\"><div class=\"ttname\"><a href=\"a01253.html#a6ee6055100beee2bc55426a0e909dc59\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, GLXFBEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l01227\">glXFBEvaluator.h:1227</a></div></div>\n+<div class=\"ttc\" id=\"aa01253_html_a7a65272357856989d99d800900d53e85\"><div class=\"ttname\"><a href=\"a01253.html#a7a65272357856989d99d800900d53e85\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable) const</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l01617\">glXFBEvaluator.h:1617</a></div></div>\n+<div class=\"ttc\" id=\"aa01253_html_a8736b15a3afb5b221ed009b19503e063\"><div class=\"ttname\"><a href=\"a01253.html#a8736b15a3afb5b221ed009b19503e063\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel=0) const</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l01889\">glXFBEvaluator.h:1889</a></div></div>\n+<div class=\"ttc\" id=\"aa01253_html_a8ba6c1bfddfa877a523c098af03af037\"><div class=\"ttname\"><a href=\"a01253.html#a8ba6c1bfddfa877a523c098af03af037\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, GLXFBEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00765\">glXFBEvaluator.h:765</a></div></div>\n+<div class=\"ttc\" id=\"aa01253_html_a9433f78f8817d1ae4f6030144cb16de5\"><div class=\"ttname\"><a href=\"a01253.html#a9433f78f8817d1ae4f6030144cb16de5\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel, GLXFBEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l01809\">glXFBEvaluator.h:1809</a></div></div>\n+<div class=\"ttc\" id=\"aa01253_html_a96616cfe920c027568e2ae931b3ba506\"><div class=\"ttname\"><a href=\"a01253.html#a96616cfe920c027568e2ae931b3ba506\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalPatches</a></div><div class=\"ttdeci\">bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable) const</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l01016\">glXFBEvaluator.h:1016</a></div></div>\n+<div class=\"ttc\" id=\"aa01253_html_a9a52edc932f03ffa9bbf67c093a1dd65\"><div class=\"ttname\"><a href=\"a01253.html#a9a52edc932f03ffa9bbf67c093a1dd65\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, GLXFBEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00943\">glXFBEvaluator.h:943</a></div></div>\n+<div class=\"ttc\" id=\"aa01253_html_aa28dc7f2bd31f1cdac0013ad9de8f434\"><div class=\"ttname\"><a href=\"a01253.html#aa28dc7f2bd31f1cdac0013ad9de8f434\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalPatches</a></div><div class=\"ttdeci\">bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable) const</div><div class=\"ttdoc\">Generic limit eval function with derivatives. This function has a same signature as other device kern...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l01070\">glXFBEvaluator.h:1070</a></div></div>\n+<div class=\"ttc\" id=\"aa01253_html_aab4ecc7e79b822b8994b326cc05ad573\"><div class=\"ttname\"><a href=\"a01253.html#aab4ecc7e79b822b8994b326cc05ad573\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalStencils</a></div><div class=\"ttdeci\">bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, STENCIL_TABLE const *stencilTable) const</div><div class=\"ttdoc\">Generic stencil function.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00457\">glXFBEvaluator.h:457</a></div></div>\n+<div class=\"ttc\" id=\"aa01253_html_aac8b4b814219420a124f8a92c96fd026\"><div class=\"ttname\"><a href=\"a01253.html#aac8b4b814219420a124f8a92c96fd026\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalPatches</a></div><div class=\"ttdeci\">bool EvalPatches(GLuint srcBuffer, BufferDescriptor const &amp;srcDesc, GLuint dstBuffer, BufferDescriptor const &amp;dstDesc, GLuint duBuffer, BufferDescriptor const &amp;duDesc, GLuint dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, GLuint patchCoordsBuffer, const PatchArrayVector &amp;patchArrays, GLuint patchIndexBuffer, GLuint patchParamsBuffer) const</div></div>\n+<div class=\"ttc\" id=\"aa01253_html_aaf7aeae38dd52386c15108d7e94eb30f\"><div class=\"ttname\"><a href=\"a01253.html#aaf7aeae38dd52386c15108d7e94eb30f\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::Create</a></div><div class=\"ttdeci\">static GLXFBEvaluator * Create(BufferDescriptor const &amp;srcDesc, BufferDescriptor const &amp;dstDesc, BufferDescriptor const &amp;duDesc, BufferDescriptor const &amp;dvDesc, BufferDescriptor const &amp;duuDesc, BufferDescriptor const &amp;duvDesc, BufferDescriptor const &amp;dvvDesc, void *deviceContext)</div><div class=\"ttdoc\">Specialization to allow creation without a device context.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00157\">glXFBEvaluator.h:157</a></div></div>\n+<div class=\"ttc\" id=\"aa01253_html_ab0a4a9c408bc2a690d879cc7c2ffd21c\"><div class=\"ttname\"><a href=\"a01253.html#ab0a4a9c408bc2a690d879cc7c2ffd21c\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel=0) const</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l02084\">glXFBEvaluator.h:2084</a></div></div>\n+<div class=\"ttc\" id=\"aa01253_html_ab5bace5b1f7bb4faa1fedfcf7d4fe77d\"><div class=\"ttname\"><a href=\"a01253.html#ab5bace5b1f7bb4faa1fedfcf7d4fe77d\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, GLXFBEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l01512\">glXFBEvaluator.h:1512</a></div></div>\n+<div class=\"ttc\" id=\"aa01253_html_ab8d69b17b91e3066aaa7dad2d38691de\"><div class=\"ttname\"><a href=\"a01253.html#ab8d69b17b91e3066aaa7dad2d38691de\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalStencils</a></div><div class=\"ttdeci\">bool EvalStencils(GLuint srcBuffer, BufferDescriptor const &amp;srcDesc, GLuint dstBuffer, BufferDescriptor const &amp;dstDesc, GLuint duBuffer, BufferDescriptor const &amp;duDesc, GLuint dvBuffer, BufferDescriptor const &amp;dvDesc, GLuint sizesBuffer, GLuint offsetsBuffer, GLuint indicesBuffer, GLuint weightsBuffer, GLuint duWeightsBuffer, GLuint dvWeightsBuffer, int start, int end) const</div><div class=\"ttdoc\">Dispatch the GLSL XFB kernel on on GPU asynchronously returns false if the kernel hasn't been compile...</div></div>\n+<div class=\"ttc\" id=\"aa01253_html_ac843917323be2a95667e5460702b3682\"><div class=\"ttname\"><a href=\"a01253.html#ac843917323be2a95667e5460702b3682\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel, GLXFBEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l01679\">glXFBEvaluator.h:1679</a></div></div>\n+<div class=\"ttc\" id=\"aa01253_html_ace53e6fcf744de81b768e33166d7201c\"><div class=\"ttname\"><a href=\"a01253.html#ace53e6fcf744de81b768e33166d7201c\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, STENCIL_TABLE const *stencilTable, GLXFBEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic static stencil function. This function has a same signature as other device kernels have so t...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00238\">glXFBEvaluator.h:238</a></div></div>\n+<div class=\"ttc\" id=\"aa01253_html_adcf442a3c8cf38e102ed5cd50851e006\"><div class=\"ttname\"><a href=\"a01253.html#adcf442a3c8cf38e102ed5cd50851e006\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::~GLXFBEvaluator</a></div><div class=\"ttdeci\">~GLXFBEvaluator()</div><div class=\"ttdoc\">Destructor. note that the GL context must be made current.</div></div>\n+<div class=\"ttc\" id=\"aa01253_html_ade1086349c1a452f60bcf281383ceec2\"><div class=\"ttname\"><a href=\"a01253.html#ade1086349c1a452f60bcf281383ceec2\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::Compile</a></div><div class=\"ttdeci\">bool Compile(BufferDescriptor const &amp;srcDesc, BufferDescriptor const &amp;dstDesc, BufferDescriptor const &amp;duDesc=BufferDescriptor(), BufferDescriptor const &amp;dvDesc=BufferDescriptor(), BufferDescriptor const &amp;duuDesc=BufferDescriptor(), BufferDescriptor const &amp;duvDesc=BufferDescriptor(), BufferDescriptor const &amp;dvvDesc=BufferDescriptor())</div></div>\n+<div class=\"ttc\" id=\"aa01253_html_ae642c88c8896d4d55b1876757197b1cc\"><div class=\"ttname\"><a href=\"a01253.html#ae642c88c8896d4d55b1876757197b1cc\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable) const</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l01428\">glXFBEvaluator.h:1428</a></div></div>\n+<div class=\"ttc\" id=\"aa01253_html_af7d3e4db03873d8c0d5da1d2c53f979e\"><div class=\"ttname\"><a href=\"a01253.html#af7d3e4db03873d8c0d5da1d2c53f979e\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel=0) const</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l01742\">glXFBEvaluator.h:1742</a></div></div>\n+<div class=\"ttc\" id=\"aa01253_html_afb7e2a0c3a861f3dcd410ba0d5b2046e\"><div class=\"ttname\"><a href=\"a01253.html#afb7e2a0c3a861f3dcd410ba0d5b2046e\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel, GLXFBEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l01976\">glXFBEvaluator.h:1976</a></div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_fa5edef2a780a73fbfb6a11f1af88ceb.html\">bfr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00701.html\">limits.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00701.html\">glXFBEvaluator.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-limits.h\n+glXFBEvaluator.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2021 Pixar\n+2// Copyright 2015 Pixar\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -24,49 +24,1448 @@\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n 24\n-25#ifndef OPENSUBDIV3_BFR_LIMITS_H\n-26#define OPENSUBDIV3_BFR_LIMITS_H\n+25#ifndef OPENSUBDIV3_OSD_GL_XFB_EVALUATOR_H\n+26#define OPENSUBDIV3_OSD_GL_XFB_EVALUATOR_H\n 27\n 28#include \"../version.h\"\n 29\n-30#include \"../far/types.h\"\n-31\n-_\b3_\b2namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-_\b3_\b3namespace OPENSUBDIV_VERSION {\n-34\n-_\b3_\b5namespace Bfr {\n+30#include \"../osd/opengl.h\"\n+31#include \"../osd/types.h\"\n+32#include \"../osd/bufferDescriptor.h\"\n+33\n+34namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+35namespace OPENSUBDIV_VERSION {\n 36\n-_\b4_\b0struct _\bL_\bi_\bm_\bi_\bt_\bs {\n-_\b4_\b2 static int _\bM_\ba_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be() { return Far::VALENCE_LIMIT; }\n-43\n-_\b4_\b6 static int _\bM_\ba_\bx_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be() { return Far::VALENCE_LIMIT; }\n-47};\n-48\n-49} // end namespace Bfr\n-50\n-51} // end namespace OPENSUBDIV_VERSION\n-52using namespace OPENSUBDIV_VERSION;\n-53} // end namespace OpenSubdiv\n-54\n-55#endif /* OPENSUBDIV3_BFR_LIMITS_H */\n+37namespace Far {\n+38 class PatchTable;\n+39 class StencilTable;\n+40 class LimitStencilTable;\n+41}\n+42\n+43namespace Osd {\n+44\n+_\b5_\b2class _\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bT_\bB_\bO {\n+53public:\n+_\b5_\b4 static _\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bT_\bB_\bO *_\bC_\br_\be_\ba_\bt_\be(\n+55 _\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *stencilTable, void *deviceContext = NULL) {\n+56 (void)deviceContext; // unused\n+57 return new _\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bT_\bB_\bO(stencilTable);\n+58 }\n+59\n+_\b6_\b0 static _\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bT_\bB_\bO *_\bC_\br_\be_\ba_\bt_\be(\n+61 _\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *limitStencilTable,\n+62 void *deviceContext = NULL) {\n+63 (void)deviceContext; // unused\n+64 return new _\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bT_\bB_\bO(limitStencilTable);\n+65 }\n+66\n+_\b6_\b7 explicit _\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bT_\bB_\bO(_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *stencilTable);\n+_\b6_\b8 explicit _\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bT_\bB_\bO(_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *limitStencilTable);\n+_\b6_\b9 _\b~_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bT_\bB_\bO();\n+70\n+71 // interfaces needed for GLSLTransformFeedbackKernel\n+_\b7_\b2 GLuint _\bG_\be_\bt_\bS_\bi_\bz_\be_\bs_\bT_\be_\bx_\bt_\bu_\br_\be() const { return _sizes; }\n+_\b7_\b3 GLuint _\bG_\be_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bT_\be_\bx_\bt_\bu_\br_\be() const { return _offsets; }\n+_\b7_\b4 GLuint _\bG_\be_\bt_\bI_\bn_\bd_\bi_\bc_\be_\bs_\bT_\be_\bx_\bt_\bu_\br_\be() const { return _indices; }\n+_\b7_\b5 GLuint _\bG_\be_\bt_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bT_\be_\bx_\bt_\bu_\br_\be() const { return _weights; }\n+_\b7_\b6 GLuint _\bG_\be_\bt_\bD_\bu_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bT_\be_\bx_\bt_\bu_\br_\be() const { return _duWeights; }\n+_\b7_\b7 GLuint _\bG_\be_\bt_\bD_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bT_\be_\bx_\bt_\bu_\br_\be() const { return _dvWeights; }\n+_\b7_\b8 GLuint _\bG_\be_\bt_\bD_\bu_\bu_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bT_\be_\bx_\bt_\bu_\br_\be() const { return _duuWeights; }\n+_\b7_\b9 GLuint _\bG_\be_\bt_\bD_\bu_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bT_\be_\bx_\bt_\bu_\br_\be() const { return _duvWeights; }\n+_\b8_\b0 GLuint _\bG_\be_\bt_\bD_\bv_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bT_\be_\bx_\bt_\bu_\br_\be() const { return _dvvWeights; }\n+_\b8_\b1 int _\bG_\be_\bt_\bN_\bu_\bm_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs() const { return _numStencils; }\n+82\n+83private:\n+84 GLuint _sizes;\n+85 GLuint _offsets;\n+86 GLuint _indices;\n+87 GLuint _weights;\n+88 GLuint _duWeights;\n+89 GLuint _dvWeights;\n+90 GLuint _duuWeights;\n+91 GLuint _duvWeights;\n+92 GLuint _dvvWeights;\n+93 int _numStencils;\n+94};\n+95\n+96// --------------------------------------------------------------------------\n+-\n+97\n+_\b9_\b8class _\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br {\n+99public:\n+_\b1_\b0_\b0 typedef bool _\bI_\bn_\bs_\bt_\ba_\bn_\bt_\bi_\ba_\bt_\ba_\bb_\bl_\be;\n+101\n+103 template <typename DEVICE_CONTEXT>\n+_\b1_\b0_\b4 static _\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br *_\bC_\br_\be_\ba_\bt_\be(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+105 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+106 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+107 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+108 DEVICE_CONTEXT deviceContext) {\n+109 bool interleavedDerivativeBuffers = deviceContext\n+110 ? deviceContext->AreInterleavedDerivativeBuffers()\n+111 : false;\n+112 return _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc, duDesc, dvDesc,\n+113 interleavedDerivativeBuffers);\n+114 }\n+115\n+_\b1_\b1_\b7 static _\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br *_\bC_\br_\be_\ba_\bt_\be(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+118 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+119 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+120 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+121 void * deviceContext) {\n+122 (void)deviceContext; // not used\n+123 return _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc, duDesc, dvDesc);\n+124 }\n+125\n+_\b1_\b2_\b6 static _\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br * _\bC_\br_\be_\ba_\bt_\be(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+127 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+128 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+129 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+130 bool interleavedDerivativeBuffers = false) {\n+131 _\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br *instance = new _\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n+(interleavedDerivativeBuffers);\n+132 if (instance->_\bC_\bo_\bm_\bp_\bi_\bl_\be(srcDesc, dstDesc, duDesc, dvDesc))\n+133 return instance;\n+134 delete instance;\n+135 return NULL;\n+136 }\n+137\n+139 template <typename DEVICE_CONTEXT>\n+_\b1_\b4_\b0 static _\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br *_\bC_\br_\be_\ba_\bt_\be(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+141 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+142 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+143 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+144 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+145 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+146 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+147 DEVICE_CONTEXT deviceContext) {\n+148 bool interleavedDerivativeBuffers = deviceContext\n+149 ? deviceContext->AreInterleavedDerivativeBuffers()\n+150 : false;\n+151 return _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc, duDesc, dvDesc,\n+152 duuDesc, duvDesc, dvvDesc,\n+153 interleavedDerivativeBuffers);\n+154 }\n+155\n+_\b1_\b5_\b7 static _\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br *_\bC_\br_\be_\ba_\bt_\be(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+158 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+159 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+160 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+161 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+162 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+163 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+164 void * deviceContext) {\n+165 (void)deviceContext; // not used\n+166 return _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc, duDesc, dvDesc,\n+167 duuDesc, duvDesc, dvvDesc);\n+168 }\n+169\n+_\b1_\b7_\b0 static _\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br * _\bC_\br_\be_\ba_\bt_\be(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+171 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+172 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+173 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+174 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+175 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+176 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+177 bool interleavedDerivativeBuffers = false) {\n+178 _\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br *instance = new _\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n+(interleavedDerivativeBuffers);\n+179 if (instance->_\bC_\bo_\bm_\bp_\bi_\bl_\be(srcDesc, dstDesc, duDesc, dvDesc,\n+180 duuDesc, duvDesc, dvvDesc))\n+181 return instance;\n+182 delete instance;\n+183 return NULL;\n+184 }\n+185\n+_\b1_\b9_\b9 _\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br(bool interleavedDerivativeBuffers = false);\n+200\n+_\b2_\b0_\b2 _\b~_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br();\n+203\n+209\n+237 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n+_\b2_\b3_\b8 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n+239 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+240 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+241 STENCIL_TABLE const *stencilTable,\n+242 _\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n+243 void * deviceContext = NULL) {\n+244\n+245 if (instance) {\n+246 return instance->_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer, srcDesc,\n+247 dstBuffer, dstDesc,\n+248 stencilTable);\n+249 } else {\n+250 // Create an instance on demand (slow)\n+251 (void)deviceContext; // unused\n+252 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n+253 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+254 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br());\n+255 if (instance) {\n+256 bool r = instance->_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer, srcDesc,\n+257 dstBuffer, dstDesc,\n+258 stencilTable);\n+259 delete instance;\n+260 return r;\n+261 }\n+262 return false;\n+263 }\n+264 }\n+265\n+305 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n+_\b3_\b0_\b6 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n+307 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+308 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+309 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+310 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+311 STENCIL_TABLE const *stencilTable,\n+312 _\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n+313 void * deviceContext = NULL) {\n+314\n+315 if (instance) {\n+316 return instance->_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer, srcDesc,\n+317 dstBuffer, dstDesc,\n+318 duBuffer, duDesc,\n+319 dvBuffer, dvDesc,\n+320 stencilTable);\n+321 } else {\n+322 // Create an instance on demand (slow)\n+323 (void)deviceContext; // unused\n+324 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc, duDesc, dvDesc);\n+325 if (instance) {\n+326 bool r = instance->_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer, srcDesc,\n+327 dstBuffer, dstDesc,\n+328 duBuffer, duDesc,\n+329 dvBuffer, dvDesc,\n+330 stencilTable);\n+331 delete instance;\n+332 return r;\n+333 }\n+334 return false;\n+335 }\n+336 }\n+337\n+395 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n+_\b3_\b9_\b6 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n+397 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+398 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+399 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+400 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+401 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+402 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+403 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+404 STENCIL_TABLE const *stencilTable,\n+405 _\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n+406 void * deviceContext = NULL) {\n+407\n+408 if (instance) {\n+409 return instance->_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer, srcDesc,\n+410 dstBuffer, dstDesc,\n+411 duBuffer, duDesc,\n+412 dvBuffer, dvDesc,\n+413 duuBuffer, duuDesc,\n+414 duvBuffer, duvDesc,\n+415 dvvBuffer, dvvDesc,\n+416 stencilTable);\n+417 } else {\n+418 // Create an instance on demand (slow)\n+419 (void)deviceContext; // unused\n+420 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n+421 duDesc, dvDesc,\n+422 duuDesc, duvDesc, dvvDesc);\n+423 if (instance) {\n+424 bool r = instance->_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer, srcDesc,\n+425 dstBuffer, dstDesc,\n+426 duBuffer, duDesc,\n+427 dvBuffer, dvDesc,\n+428 duuBuffer, duuDesc,\n+429 duvBuffer, duvDesc,\n+430 dvvBuffer, dvvDesc,\n+431 stencilTable);\n+432 delete instance;\n+433 return r;\n+434 }\n+435 return false;\n+436 }\n+437 }\n+438\n+456 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n+_\b4_\b5_\b7 bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n+458 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+459 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+460 STENCIL_TABLE const *stencilTable) const {\n+461\n+462 return _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer->BindVBO(), srcDesc,\n+463 dstBuffer->BindVBO(), dstDesc,\n+464 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+465 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+466 stencilTable->GetSizesTexture(),\n+467 stencilTable->GetOffsetsTexture(),\n+468 stencilTable->GetIndicesTexture(),\n+469 stencilTable->GetWeightsTexture(),\n+470 0,\n+471 0,\n+472 /* start = */ 0,\n+473 /* end = */ stencilTable->GetNumStencils());\n+474 }\n+475\n+505 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n+_\b5_\b0_\b6 bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n+507 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+508 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+509 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+510 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+511 STENCIL_TABLE const *stencilTable) const {\n+512\n+513 return _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer->BindVBO(), srcDesc,\n+514 dstBuffer->BindVBO(), dstDesc,\n+515 duBuffer->BindVBO(), duDesc,\n+516 dvBuffer->BindVBO(), dvDesc,\n+517 stencilTable->GetSizesTexture(),\n+518 stencilTable->GetOffsetsTexture(),\n+519 stencilTable->GetIndicesTexture(),\n+520 stencilTable->GetWeightsTexture(),\n+521 stencilTable->GetDuWeightsTexture(),\n+522 stencilTable->GetDvWeightsTexture(),\n+523 /* start = */ 0,\n+524 /* end = */ stencilTable->GetNumStencils());\n+525 }\n+526\n+574 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n+_\b5_\b7_\b5 bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n+576 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+577 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+578 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+579 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+580 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+581 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+582 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+583 STENCIL_TABLE const *stencilTable) const {\n+584\n+585 return _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer->BindVBO(), srcDesc,\n+586 dstBuffer->BindVBO(), dstDesc,\n+587 duBuffer->BindVBO(), duDesc,\n+588 dvBuffer->BindVBO(), dvDesc,\n+589 duuBuffer->BindVBO(), duuDesc,\n+590 duvBuffer->BindVBO(), duvDesc,\n+591 dvvBuffer->BindVBO(), dvvDesc,\n+592 stencilTable->GetSizesTexture(),\n+593 stencilTable->GetOffsetsTexture(),\n+594 stencilTable->GetIndicesTexture(),\n+595 stencilTable->GetWeightsTexture(),\n+596 stencilTable->GetDuWeightsTexture(),\n+597 stencilTable->GetDvWeightsTexture(),\n+598 stencilTable->GetDuuWeightsTexture(),\n+599 stencilTable->GetDuvWeightsTexture(),\n+600 stencilTable->GetDvvWeightsTexture(),\n+601 /* start = */ 0,\n+602 /* end = */ stencilTable->GetNumStencils());\n+603 }\n+604\n+_\b6_\b4_\b0 bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(GLuint srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+641 GLuint dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+642 GLuint duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+643 GLuint dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+644 GLuint sizesBuffer,\n+645 GLuint offsetsBuffer,\n+646 GLuint indicesBuffer,\n+647 GLuint weightsBuffer,\n+648 GLuint duWeightsBuffer,\n+649 GLuint dvWeightsBuffer,\n+650 int start,\n+651 int end) const;\n+652\n+_\b7_\b0_\b6 bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(GLuint srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+707 GLuint dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+708 GLuint duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+709 GLuint dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+710 GLuint duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+711 GLuint duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+712 GLuint dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+713 GLuint sizesBuffer,\n+714 GLuint offsetsBuffer,\n+715 GLuint indicesBuffer,\n+716 GLuint weightsBuffer,\n+717 GLuint duWeightsBuffer,\n+718 GLuint dvWeightsBuffer,\n+719 GLuint duuWeightsBuffer,\n+720 GLuint duvWeightsBuffer,\n+721 GLuint dvvWeightsBuffer,\n+722 int start,\n+723 int end) const;\n+724\n+730\n+763 template <typename SRC_BUFFER, typename DST_BUFFER,\n+764 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b7_\b6_\b5 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n+766 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+767 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+768 int numPatchCoords,\n+769 PATCHCOORD_BUFFER *patchCoords,\n+770 PATCH_TABLE *patchTable,\n+771 _\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n+772 void * deviceContext = NULL) {\n+773\n+774 if (instance) {\n+775 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer, srcDesc,\n+776 dstBuffer, dstDesc,\n+777 numPatchCoords, patchCoords,\n+778 patchTable);\n+779 } else {\n+780 // Create an instance on demand (slow)\n+781 (void)deviceContext; // unused\n+782 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n+783 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+784 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br());\n+785 if (instance) {\n+786 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer, srcDesc,\n+787 dstBuffer, dstDesc,\n+788 numPatchCoords, patchCoords,\n+789 patchTable);\n+790 delete instance;\n+791 return r;\n+792 }\n+793 return false;\n+794 }\n+795 }\n+796\n+841 template <typename SRC_BUFFER, typename DST_BUFFER,\n+842 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b8_\b4_\b3 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n+844 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+845 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+846 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+847 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+848 int numPatchCoords,\n+849 PATCHCOORD_BUFFER *patchCoords,\n+850 PATCH_TABLE *patchTable,\n+851 _\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n+852 void * deviceContext = NULL) {\n+853\n+854 if (instance) {\n+855 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer, srcDesc,\n+856 dstBuffer, dstDesc,\n+857 duBuffer, duDesc,\n+858 dvBuffer, dvDesc,\n+859 numPatchCoords, patchCoords,\n+860 patchTable);\n+861 } else {\n+862 // Create an instance on demand (slow)\n+863 (void)deviceContext; // unused\n+864 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc, duDesc, dvDesc);\n+865 if (instance) {\n+866 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer, srcDesc,\n+867 dstBuffer, dstDesc,\n+868 duBuffer, duDesc,\n+869 dvBuffer, dvDesc,\n+870 numPatchCoords, patchCoords,\n+871 patchTable);\n+872 delete instance;\n+873 return r;\n+874 }\n+875 return false;\n+876 }\n+877 }\n+878\n+941 template <typename SRC_BUFFER, typename DST_BUFFER,\n+942 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b9_\b4_\b3 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n+944 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+945 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+946 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+947 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+948 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+949 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+950 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+951 int numPatchCoords,\n+952 PATCHCOORD_BUFFER *patchCoords,\n+953 PATCH_TABLE *patchTable,\n+954 _\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n+955 void * deviceContext = NULL) {\n+956\n+957 if (instance) {\n+958 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer, srcDesc,\n+959 dstBuffer, dstDesc,\n+960 duBuffer, duDesc,\n+961 dvBuffer, dvDesc,\n+962 duuBuffer, duuDesc,\n+963 duvBuffer, duvDesc,\n+964 dvvBuffer, dvvDesc,\n+965 numPatchCoords, patchCoords,\n+966 patchTable);\n+967 } else {\n+968 // Create an instance on demand (slow)\n+969 (void)deviceContext; // unused\n+970 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n+971 duDesc, dvDesc,\n+972 duuDesc, duvDesc, dvvDesc);\n+973 if (instance) {\n+974 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer, srcDesc,\n+975 dstBuffer, dstDesc,\n+976 duBuffer, duDesc,\n+977 dvBuffer, dvDesc,\n+978 duuBuffer, duuDesc,\n+979 duvBuffer, duvDesc,\n+980 dvvBuffer, dvvDesc,\n+981 numPatchCoords, patchCoords,\n+982 patchTable);\n+983 delete instance;\n+984 return r;\n+985 }\n+986 return false;\n+987 }\n+988 }\n+989\n+1014 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1015 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b1_\b0_\b1_\b6 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n+1017 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1018 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1019 int numPatchCoords,\n+1020 PATCHCOORD_BUFFER *patchCoords,\n+1021 PATCH_TABLE *patchTable) const {\n+1022\n+1023 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindVBO(), srcDesc,\n+1024 dstBuffer->BindVBO(), dstDesc,\n+1025 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+1026 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+1027 numPatchCoords,\n+1028 patchCoords->BindVBO(),\n+1029 patchTable->GetPatchArrays(),\n+1030 patchTable->GetPatchIndexTextureBuffer(),\n+1031 patchTable->GetPatchParamTextureBuffer());\n+1032 }\n+1033\n+1068 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1069 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b1_\b0_\b7_\b0 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n+1071 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1072 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1073 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+1074 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+1075 int numPatchCoords,\n+1076 PATCHCOORD_BUFFER *patchCoords,\n+1077 PATCH_TABLE *patchTable) const {\n+1078\n+1079 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindVBO(), srcDesc,\n+1080 dstBuffer->BindVBO(), dstDesc,\n+1081 duBuffer->BindVBO(), duDesc,\n+1082 dvBuffer->BindVBO(), dvDesc,\n+1083 numPatchCoords,\n+1084 patchCoords->BindVBO(),\n+1085 patchTable->GetPatchArrays(),\n+1086 patchTable->GetPatchIndexTextureBuffer(),\n+1087 patchTable->GetPatchParamTextureBuffer());\n+1088 }\n+1089\n+1142 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1143 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b1_\b1_\b4_\b4 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n+1145 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1146 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1147 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+1148 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+1149 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+1150 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+1151 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+1152 int numPatchCoords,\n+1153 PATCHCOORD_BUFFER *patchCoords,\n+1154 PATCH_TABLE *patchTable) const {\n+1155\n+1156 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindVBO(), srcDesc,\n+1157 dstBuffer->BindVBO(), dstDesc,\n+1158 duBuffer->BindVBO(), duDesc,\n+1159 dvBuffer->BindVBO(), dvDesc,\n+1160 duuBuffer->BindVBO(), duuDesc,\n+1161 duvBuffer->BindVBO(), duvDesc,\n+1162 dvvBuffer->BindVBO(), dvvDesc,\n+1163 numPatchCoords,\n+1164 patchCoords->BindVBO(),\n+1165 patchTable->GetPatchArrays(),\n+1166 patchTable->GetPatchIndexTextureBuffer(),\n+1167 patchTable->GetPatchParamTextureBuffer());\n+1168 }\n+1169\n+_\b1_\b1_\b7_\b0 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(GLuint srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1171 GLuint dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1172 GLuint duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+1173 GLuint dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+1174 int numPatchCoords,\n+1175 GLuint patchCoordsBuffer,\n+1176 const _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\bc_\bt_\bo_\br &patchArrays,\n+1177 GLuint patchIndexBuffer,\n+1178 GLuint patchParamsBuffer) const;\n+1179\n+_\b1_\b1_\b8_\b0 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(GLuint srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1181 GLuint dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1182 GLuint duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+1183 GLuint dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+1184 GLuint duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+1185 GLuint duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+1186 GLuint dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+1187 int numPatchCoords,\n+1188 GLuint patchCoordsBuffer,\n+1189 const _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\bc_\bt_\bo_\br &patchArrays,\n+1190 GLuint patchIndexBuffer,\n+1191 GLuint patchParamsBuffer) const;\n+1192\n+1225 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1226 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b1_\b2_\b2_\b7 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1228 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1229 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1230 int numPatchCoords,\n+1231 PATCHCOORD_BUFFER *patchCoords,\n+1232 PATCH_TABLE *patchTable,\n+1233 _\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n+1234 void * deviceContext = NULL) {\n+1235\n+1236 if (instance) {\n+1237 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1238 srcBuffer, srcDesc,\n+1239 dstBuffer, dstDesc,\n+1240 numPatchCoords, patchCoords,\n+1241 patchTable);\n+1242 } else {\n+1243 // Create an instance on demand (slow)\n+1244 (void)deviceContext; // unused\n+1245 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n+1246 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+1247 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br());\n+1248 if (instance) {\n+1249 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1250 srcBuffer, srcDesc,\n+1251 dstBuffer, dstDesc,\n+1252 numPatchCoords, patchCoords,\n+1253 patchTable);\n+1254 delete instance;\n+1255 return r;\n+1256 }\n+1257 return false;\n+1258 }\n+1259 }\n+1260\n+1285 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1286 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b1_\b2_\b8_\b7 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1288 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1289 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1290 int numPatchCoords,\n+1291 PATCHCOORD_BUFFER *patchCoords,\n+1292 PATCH_TABLE *patchTable) const {\n+1293\n+1294 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindVBO(), srcDesc,\n+1295 dstBuffer->BindVBO(), dstDesc,\n+1296 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+1297 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+1298 numPatchCoords,\n+1299 patchCoords->BindVBO(),\n+1300 patchTable->GetVaryingPatchArrays(),\n+1301 patchTable->GetVaryingPatchIndexTextureBuffer(),\n+1302 patchTable->GetPatchParamTextureBuffer());\n+1303 }\n+1304\n+1349 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1350 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b1_\b3_\b5_\b1 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1352 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1353 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1354 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+1355 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+1356 int numPatchCoords,\n+1357 PATCHCOORD_BUFFER *patchCoords,\n+1358 PATCH_TABLE *patchTable,\n+1359 _\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n+1360 void * deviceContext = NULL) {\n+1361\n+1362 if (instance) {\n+1363 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1364 srcBuffer, srcDesc,\n+1365 dstBuffer, dstDesc,\n+1366 duBuffer, duDesc,\n+1367 dvBuffer, dvDesc,\n+1368 numPatchCoords, patchCoords,\n+1369 patchTable);\n+1370 } else {\n+1371 // Create an instance on demand (slow)\n+1372 (void)deviceContext; // unused\n+1373 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n+1374 duDesc, dvDesc);\n+1375 if (instance) {\n+1376 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1377 srcBuffer, srcDesc,\n+1378 dstBuffer, dstDesc,\n+1379 duBuffer, duDesc,\n+1380 dvBuffer, dvDesc,\n+1381 numPatchCoords, patchCoords,\n+1382 patchTable);\n+1383 delete instance;\n+1384 return r;\n+1385 }\n+1386 return false;\n+1387 }\n+1388 }\n+1389\n+1426 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1427 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b1_\b4_\b2_\b8 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1429 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1430 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1431 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+1432 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+1433 int numPatchCoords,\n+1434 PATCHCOORD_BUFFER *patchCoords,\n+1435 PATCH_TABLE *patchTable) const {\n+1436\n+1437 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindVBO(), srcDesc,\n+1438 dstBuffer->BindVBO(), dstDesc,\n+1439 duBuffer->BindVBO(), duDesc,\n+1440 dvBuffer->BindVBO(), dvDesc,\n+1441 numPatchCoords,\n+1442 patchCoords->BindVBO(),\n+1443 patchTable->GetVaryingPatchArrays(),\n+1444 patchTable->GetVaryingPatchIndexTextureBuffer(),\n+1445 patchTable->GetPatchParamTextureBuffer());\n+1446 }\n+1447\n+1510 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1511 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b1_\b5_\b1_\b2 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1513 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1514 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1515 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+1516 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+1517 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+1518 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+1519 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+1520 int numPatchCoords,\n+1521 PATCHCOORD_BUFFER *patchCoords,\n+1522 PATCH_TABLE *patchTable,\n+1523 _\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n+1524 void * deviceContext = NULL) {\n+1525\n+1526 if (instance) {\n+1527 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1528 srcBuffer, srcDesc,\n+1529 dstBuffer, dstDesc,\n+1530 duBuffer, duDesc,\n+1531 dvBuffer, dvDesc,\n+1532 duuBuffer, duuDesc,\n+1533 duvBuffer, duvDesc,\n+1534 dvvBuffer, dvvDesc,\n+1535 numPatchCoords, patchCoords,\n+1536 patchTable);\n+1537 } else {\n+1538 // Create an instance on demand (slow)\n+1539 (void)deviceContext; // unused\n+1540 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n+1541 duDesc, dvDesc,\n+1542 duuDesc, duvDesc, dvvDesc);\n+1543 if (instance) {\n+1544 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1545 srcBuffer, srcDesc,\n+1546 dstBuffer, dstDesc,\n+1547 duBuffer, duDesc,\n+1548 dvBuffer, dvDesc,\n+1549 duuBuffer, duuDesc,\n+1550 duvBuffer, duvDesc,\n+1551 dvvBuffer, dvvDesc,\n+1552 numPatchCoords, patchCoords,\n+1553 patchTable);\n+1554 delete instance;\n+1555 return r;\n+1556 }\n+1557 return false;\n+1558 }\n+1559 }\n+1560\n+1615 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1616 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b1_\b6_\b1_\b7 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1618 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1619 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1620 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+1621 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+1622 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+1623 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+1624 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+1625 int numPatchCoords,\n+1626 PATCHCOORD_BUFFER *patchCoords,\n+1627 PATCH_TABLE *patchTable) const {\n+1628\n+1629 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindVBO(), srcDesc,\n+1630 dstBuffer->BindVBO(), dstDesc,\n+1631 duBuffer->BindVBO(), duDesc,\n+1632 dvBuffer->BindVBO(), dvDesc,\n+1633 duuBuffer->BindVBO(), duuDesc,\n+1634 duvBuffer->BindVBO(), duvDesc,\n+1635 dvvBuffer->BindVBO(), dvvDesc,\n+1636 numPatchCoords,\n+1637 patchCoords->BindVBO(),\n+1638 patchTable->GetVaryingPatchArrays(),\n+1639 patchTable->GetVaryingPatchIndexTextureBuffer(),\n+1640 patchTable->GetPatchParamTextureBuffer());\n+1641 }\n+1642\n+1677 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1678 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b1_\b6_\b7_\b9 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1680 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1681 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1682 int numPatchCoords,\n+1683 PATCHCOORD_BUFFER *patchCoords,\n+1684 PATCH_TABLE *patchTable,\n+1685 int fvarChannel,\n+1686 _\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n+1687 void * deviceContext = NULL) {\n+1688\n+1689 if (instance) {\n+1690 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1691 srcBuffer, srcDesc,\n+1692 dstBuffer, dstDesc,\n+1693 numPatchCoords, patchCoords,\n+1694 patchTable, fvarChannel);\n+1695 } else {\n+1696 // Create an instance on demand (slow)\n+1697 (void)deviceContext; // unused\n+1698 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n+1699 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+1700 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br());\n+1701 if (instance) {\n+1702 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1703 srcBuffer, srcDesc,\n+1704 dstBuffer, dstDesc,\n+1705 numPatchCoords, patchCoords,\n+1706 patchTable, fvarChannel);\n+1707 delete instance;\n+1708 return r;\n+1709 }\n+1710 return false;\n+1711 }\n+1712 }\n+1713\n+1740 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1741 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b1_\b7_\b4_\b2 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1743 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1744 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1745 int numPatchCoords,\n+1746 PATCHCOORD_BUFFER *patchCoords,\n+1747 PATCH_TABLE *patchTable,\n+1748 int fvarChannel = 0) const {\n+1749\n+1750 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindVBO(), srcDesc,\n+1751 dstBuffer->BindVBO(), dstDesc,\n+1752 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+1753 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+1754 numPatchCoords,\n+1755 patchCoords->BindVBO(),\n+1756 patchTable->GetFVarPatchArrays(fvarChannel),\n+1757 patchTable->GetFVarPatchIndexTextureBuffer(fvarChannel),\n+1758 patchTable->GetFVarPatchParamTextureBuffer(fvarChannel));\n+1759 }\n+1760\n+1807 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1808 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b1_\b8_\b0_\b9 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1810 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1811 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1812 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+1813 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+1814 int numPatchCoords,\n+1815 PATCHCOORD_BUFFER *patchCoords,\n+1816 PATCH_TABLE *patchTable,\n+1817 int fvarChannel,\n+1818 _\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n+1819 void * deviceContext = NULL) {\n+1820\n+1821 if (instance) {\n+1822 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1823 srcBuffer, srcDesc,\n+1824 dstBuffer, dstDesc,\n+1825 duBuffer, duDesc,\n+1826 dvBuffer, dvDesc,\n+1827 numPatchCoords, patchCoords,\n+1828 patchTable, fvarChannel);\n+1829 } else {\n+1830 // Create an instance on demand (slow)\n+1831 (void)deviceContext; // unused\n+1832 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n+1833 duDesc, dvDesc);\n+1834 if (instance) {\n+1835 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1836 srcBuffer, srcDesc,\n+1837 dstBuffer, dstDesc,\n+1838 duBuffer, duDesc,\n+1839 dvBuffer, dvDesc,\n+1840 numPatchCoords, patchCoords,\n+1841 patchTable, fvarChannel);\n+1842 delete instance;\n+1843 return r;\n+1844 }\n+1845 return false;\n+1846 }\n+1847 }\n+1848\n+1887 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1888 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b1_\b8_\b8_\b9 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1890 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1891 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1892 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+1893 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+1894 int numPatchCoords,\n+1895 PATCHCOORD_BUFFER *patchCoords,\n+1896 PATCH_TABLE *patchTable,\n+1897 int fvarChannel = 0) const {\n+1898\n+1899 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindVBO(), srcDesc,\n+1900 dstBuffer->BindVBO(), dstDesc,\n+1901 duBuffer->BindVBO(), duDesc,\n+1902 dvBuffer->BindVBO(), dvDesc,\n+1903 numPatchCoords,\n+1904 patchCoords->BindVBO(),\n+1905 patchTable->GetFVarPatchArrays(fvarChannel),\n+1906 patchTable->GetFVarPatchIndexTextureBuffer(fvarChannel),\n+1907 patchTable->GetFVarPatchParamTextureBuffer(fvarChannel));\n+1908 }\n+1909\n+1974 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1975 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b1_\b9_\b7_\b6 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1977 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1978 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1979 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+1980 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+1981 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+1982 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+1983 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+1984 int numPatchCoords,\n+1985 PATCHCOORD_BUFFER *patchCoords,\n+1986 PATCH_TABLE *patchTable,\n+1987 int fvarChannel,\n+1988 _\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n+1989 void * deviceContext = NULL) {\n+1990\n+1991 if (instance) {\n+1992 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1993 srcBuffer, srcDesc,\n+1994 dstBuffer, dstDesc,\n+1995 duBuffer, duDesc,\n+1996 dvBuffer, dvDesc,\n+1997 duuBuffer, duuDesc,\n+1998 duvBuffer, duvDesc,\n+1999 dvvBuffer, dvvDesc,\n+2000 numPatchCoords, patchCoords,\n+2001 patchTable, fvarChannel);\n+2002 } else {\n+2003 // Create an instance on demand (slow)\n+2004 (void)deviceContext; // unused\n+2005 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n+2006 duDesc, dvDesc,\n+2007 duuDesc, duvDesc, dvvDesc);\n+2008 if (instance) {\n+2009 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+2010 srcBuffer, srcDesc,\n+2011 dstBuffer, dstDesc,\n+2012 duBuffer, duDesc,\n+2013 dvBuffer, dvDesc,\n+2014 duuBuffer, duuDesc,\n+2015 duvBuffer, duvDesc,\n+2016 dvvBuffer, dvvDesc,\n+2017 numPatchCoords, patchCoords,\n+2018 patchTable, fvarChannel);\n+2019 delete instance;\n+2020 return r;\n+2021 }\n+2022 return false;\n+2023 }\n+2024 }\n+2025\n+2082 template <typename SRC_BUFFER, typename DST_BUFFER,\n+2083 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b2_\b0_\b8_\b4 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+2085 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+2086 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+2087 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+2088 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+2089 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+2090 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+2091 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+2092 int numPatchCoords,\n+2093 PATCHCOORD_BUFFER *patchCoords,\n+2094 PATCH_TABLE *patchTable,\n+2095 int fvarChannel = 0) const {\n+2096\n+2097 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindVBO(), srcDesc,\n+2098 dstBuffer->BindVBO(), dstDesc,\n+2099 duBuffer->BindVBO(), duDesc,\n+2100 dvBuffer->BindVBO(), dvDesc,\n+2101 duuBuffer->BindVBO(), duuDesc,\n+2102 duvBuffer->BindVBO(), duvDesc,\n+2103 dvvBuffer->BindVBO(), dvvDesc,\n+2104 numPatchCoords,\n+2105 patchCoords->BindVBO(),\n+2106 patchTable->GetFVarPatchArrays(fvarChannel),\n+2107 patchTable->GetFVarPatchIndexTextureBuffer(fvarChannel),\n+2108 patchTable->GetFVarPatchParamTextureBuffer(fvarChannel));\n+2109 }\n+2110\n+2116\n+_\b2_\b1_\b1_\b9 bool _\bC_\bo_\bm_\bp_\bi_\bl_\be(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+2120 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+2121 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc = _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+2122 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc = _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+2123 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc = _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+2124 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc = _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+2125 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc = _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br());\n+2126\n+_\b2_\b1_\b2_\b8 static void _\bS_\by_\bn_\bc_\bh_\br_\bo_\bn_\bi_\bz_\be(void *kernel);\n+2129\n+2130private:\n+2131 GLuint _srcBufferTexture;\n+2132 GLuint _patchArraysUBO;\n+2133 bool _interleavedDerivativeBuffers;\n+2134\n+2135 struct _StencilKernel {\n+2136 _StencilKernel();\n+2137 ~_StencilKernel();\n+2138 bool Compile(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+2139 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+2140 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+2141 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+2142 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+2143 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+2144 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+2145 bool interleavedDerivativeBuffers);\n+2146 GLuint program;\n+2147 GLint uniformSrcBufferTexture;\n+2148 GLint uniformSrcOffset; // src buffer offset (in elements)\n+2149\n+2150 GLint uniformSizesTexture;\n+2151 GLint uniformOffsetsTexture;\n+2152 GLint uniformIndicesTexture;\n+2153 GLint uniformWeightsTexture;\n+2154 GLint uniformDuWeightsTexture;\n+2155 GLint uniformDvWeightsTexture;\n+2156 GLint uniformDuuWeightsTexture;\n+2157 GLint uniformDuvWeightsTexture;\n+2158 GLint uniformDvvWeightsTexture;\n+2159 GLint uniformStart; // range\n+2160 GLint uniformEnd;\n+2161 } _stencilKernel;\n+2162\n+2163 struct _PatchKernel {\n+2164 _PatchKernel();\n+2165 ~_PatchKernel();\n+2166 bool Compile(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+2167 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+2168 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+2169 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+2170 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+2171 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+2172 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+2173 bool interleavedDerivativeBuffers);\n+2174 GLuint program;\n+2175 GLint uniformSrcBufferTexture;\n+2176 GLint uniformSrcOffset; // src buffer offset (in elements)\n+2177\n+2178 GLint uniformPatchArraysUBOBinding;\n+2179 GLint uniformPatchParamTexture;\n+2180 GLint uniformPatchIndexTexture;\n+2181 } _patchKernel;\n+2182\n+2183};\n+2184\n+2185} // end namespace Osd\n+2186\n+2187} // end namespace OPENSUBDIV_VERSION\n+2188using namespace OPENSUBDIV_VERSION;\n+2189\n+2190} // end namespace OpenSubdiv\n+2191\n+2192\n+2193#endif // OPENSUBDIV3_OSD_GL_XFB_EVALUATOR_H\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bs\n-Simple struct with limits related to topology.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b4_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bs_\b:_\b:_\bM_\ba_\bx_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be\n-static int MaxFaceSize()\n-Returns the maximum allowable size for a face (number of vertices)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b4_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bs_\b:_\b:_\bM_\ba_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be\n-static int MaxValence()\n-Returns the maximum allowable valence for a vertex.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b4_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\bc_\bt_\bo_\br\n+std::vector< PatchArray > PatchArrayVector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b1_\b3_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n+Stencil table class wrapping the template for compatibility.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b2_\b7_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n+Limit stencil table class wrapping the template for compatibility.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b8_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n+BufferDescriptor is a struct which describes buffer elements in interleaved\n+data buffers....\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b6_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bT_\bB_\bO\n+GL TextureBuffer stencil table.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b5_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bT_\bB_\bO_\b:_\b:_\bG_\be_\bt_\bS_\bi_\bz_\be_\bs_\bT_\be_\bx_\bt_\bu_\br_\be\n+GLuint GetSizesTexture() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bT_\bB_\bO_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n+static GLStencilTableTBO * Create(Far::StencilTable const *stencilTable, void\n+*deviceContext=NULL)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b5_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bT_\bB_\bO_\b:_\b:_\bG_\be_\bt_\bD_\bv_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bT_\be_\bx_\bt_\bu_\br_\be\n+GLuint GetDvvWeightsTexture() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b8_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bT_\bB_\bO_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+int GetNumStencils() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b8_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bT_\bB_\bO_\b:_\b:_\bG_\be_\bt_\bD_\bu_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bT_\be_\bx_\bt_\bu_\br_\be\n+GLuint GetDuvWeightsTexture() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bT_\bB_\bO_\b:_\b:_\bG_\be_\bt_\bD_\bu_\bu_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bT_\be_\bx_\bt_\bu_\br_\be\n+GLuint GetDuuWeightsTexture() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bT_\bB_\bO_\b:_\b:_\bG_\be_\bt_\bI_\bn_\bd_\bi_\bc_\be_\bs_\bT_\be_\bx_\bt_\bu_\br_\be\n+GLuint GetIndicesTexture() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bT_\bB_\bO_\b:_\b:_\b~_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bT_\bB_\bO\n+~GLStencilTableTBO()\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bT_\bB_\bO_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bT_\bB_\bO\n+GLStencilTableTBO(Far::StencilTable const *stencilTable)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bT_\bB_\bO_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bT_\bB_\bO\n+GLStencilTableTBO(Far::LimitStencilTable const *limitStencilTable)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bT_\bB_\bO_\b:_\b:_\bG_\be_\bt_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bT_\be_\bx_\bt_\bu_\br_\be\n+GLuint GetWeightsTexture() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bT_\bB_\bO_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n+static GLStencilTableTBO * Create(Far::LimitStencilTable const\n+*limitStencilTable, void *deviceContext=NULL)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b6_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bT_\bB_\bO_\b:_\b:_\bG_\be_\bt_\bD_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bT_\be_\bx_\bt_\bu_\br_\be\n+GLuint GetDvWeightsTexture() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bT_\bB_\bO_\b:_\b:_\bG_\be_\bt_\bD_\bu_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bT_\be_\bx_\bt_\bu_\br_\be\n+GLuint GetDuWeightsTexture() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bT_\bB_\bO_\b:_\b:_\bG_\be_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bT_\be_\bx_\bt_\bu_\br_\be\n+GLuint GetOffsetsTexture() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b9_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n+bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords,\n+PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable) const\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b2_\b8_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n+static GLXFBEvaluator * Create(BufferDescriptor const &srcDesc,\n+BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc,\n+BufferDescriptor const &dvDesc, bool interleavedDerivativeBuffers=false)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b2_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n+BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n+&dvDesc, STENCIL_TABLE const *stencilTable) const\n+Generic stencil function.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b5_\b0_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n+GLXFBEvaluator(bool interleavedDerivativeBuffers=false)\n+Constructor.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n+BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n+&dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER\n+*duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer,\n+BufferDescriptor const &dvvDesc, STENCIL_TABLE const *stencilTable) const\n+Generic stencil function.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b5_\b7_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bI_\bn_\bs_\bt_\ba_\bn_\bt_\bi_\ba_\bt_\ba_\bb_\bl_\be\n+bool Instantiatable\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b0_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+bool EvalPatches(GLuint srcBuffer, BufferDescriptor const &srcDesc, GLuint\n+dstBuffer, BufferDescriptor const &dstDesc, GLuint duBuffer, BufferDescriptor\n+const &duDesc, GLuint dvBuffer, BufferDescriptor const &dvDesc, GLuint\n+duuBuffer, BufferDescriptor const &duuDesc, GLuint duvBuffer, BufferDescriptor\n+const &duvDesc, GLuint dvvBuffer, BufferDescriptor const &dvvDesc, int\n+numPatchCoords, GLuint patchCoordsBuffer, const PatchArrayVector &patchArrays,\n+GLuint patchIndexBuffer, GLuint patchParamsBuffer) const\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n+*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n+BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const\n+&duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER\n+*dvvBuffer, BufferDescriptor const &dvvDesc, STENCIL_TABLE const *stencilTable,\n+GLXFBEvaluator const *instance, void *deviceContext=NULL)\n+Generic static stencil function. This function has a same signature as other\n+device kernels have so t...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b3_\b9_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n+BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n+&dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER\n+*duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer,\n+BufferDescriptor const &dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n+*patchCoords, PATCH_TABLE *patchTable) const\n+Generic limit eval function with derivatives. This function has a same\n+signature as other device kern...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b1_\b4_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n+static GLXFBEvaluator * Create(BufferDescriptor const &srcDesc,\n+BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc,\n+BufferDescriptor const &dvDesc, BufferDescriptor const &duuDesc,\n+BufferDescriptor const &duvDesc, BufferDescriptor const &dvvDesc, bool\n+interleavedDerivativeBuffers=false)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b7_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n+static GLXFBEvaluator * Create(BufferDescriptor const &srcDesc,\n+BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc,\n+BufferDescriptor const &dvDesc, void *deviceContext)\n+Specialization to allow creation without a device context.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b1_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n+*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n+BufferDescriptor const &dvDesc, STENCIL_TABLE const *stencilTable,\n+GLXFBEvaluator const *instance, void *deviceContext=NULL)\n+Generic static stencil function. This function has a same signature as other\n+device kernels have so t...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b3_\b0_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n+static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n+*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n+BufferDescriptor const &dvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n+*patchCoords, PATCH_TABLE *patchTable, GLXFBEvaluator const *instance, void\n+*deviceContext=NULL)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b3_\b5_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+bool EvalStencils(GLuint srcBuffer, BufferDescriptor const &srcDesc, GLuint\n+dstBuffer, BufferDescriptor const &dstDesc, GLuint duBuffer, BufferDescriptor\n+const &duDesc, GLuint dvBuffer, BufferDescriptor const &dvDesc, GLuint\n+duuBuffer, BufferDescriptor const &duuDesc, GLuint duvBuffer, BufferDescriptor\n+const &duvDesc, GLuint dvvBuffer, BufferDescriptor const &dvvDesc, GLuint\n+sizesBuffer, GLuint offsetsBuffer, GLuint indicesBuffer, GLuint weightsBuffer,\n+GLuint duWeightsBuffer, GLuint dvWeightsBuffer, GLuint duuWeightsBuffer, GLuint\n+duvWeightsBuffer, GLuint dvvWeightsBuffer, int start, int end) const\n+Dispatch the GLSL XFB kernel on on GPU asynchronously returns false if the\n+kernel hasn't been compile...\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n+BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n+&dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE\n+*patchTable, GLXFBEvaluator const *instance, void *deviceContext=NULL)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b8_\b4_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n+static GLXFBEvaluator * Create(BufferDescriptor const &srcDesc,\n+BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc,\n+BufferDescriptor const &dvDesc, BufferDescriptor const &duuDesc,\n+BufferDescriptor const &duvDesc, BufferDescriptor const &dvvDesc,\n+DEVICE_CONTEXT deviceContext)\n+Generic creator template.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b4_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n+static GLXFBEvaluator * Create(BufferDescriptor const &srcDesc,\n+BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc,\n+BufferDescriptor const &dvDesc, DEVICE_CONTEXT deviceContext)\n+Generic creator template.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b0_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bS_\by_\bn_\bc_\bh_\br_\bo_\bn_\bi_\bz_\be\n+static void Synchronize(void *kernel)\n+Wait the dispatched kernel finishes.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n+static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int\n+numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable,\n+GLXFBEvaluator const *instance, void *deviceContext=NULL)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b2_\b2_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n+bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n+BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n+&dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER\n+*duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer,\n+BufferDescriptor const &dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n+*patchCoords, PATCH_TABLE *patchTable) const\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b6_\b1_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n+bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n+*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n+BufferDescriptor const &dvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n+*patchCoords, PATCH_TABLE *patchTable, int fvarChannel=0) const\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b8_\b8_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords,\n+PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, GLXFBEvaluator const\n+*instance, void *deviceContext=NULL)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b6_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n+static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor\n+const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,\n+DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n+BufferDescriptor const &dvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n+*patchCoords, PATCH_TABLE *patchTable, int fvarChannel, GLXFBEvaluator const\n+*instance, void *deviceContext=NULL)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b8_\b0_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords,\n+PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable) const\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b0_\b1_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n+BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n+&dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER\n+*duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer,\n+BufferDescriptor const &dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n+*patchCoords, PATCH_TABLE *patchTable, GLXFBEvaluator const *instance, void\n+*deviceContext=NULL)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b9_\b4_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n+BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n+&dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE\n+*patchTable) const\n+Generic limit eval function with derivatives. This function has a same\n+signature as other device kern...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b0_\b7_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, STENCIL_TABLE const\n+*stencilTable) const\n+Generic stencil function.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b4_\b5_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+bool EvalPatches(GLuint srcBuffer, BufferDescriptor const &srcDesc, GLuint\n+dstBuffer, BufferDescriptor const &dstDesc, GLuint duBuffer, BufferDescriptor\n+const &duDesc, GLuint dvBuffer, BufferDescriptor const &dvDesc, int\n+numPatchCoords, GLuint patchCoordsBuffer, const PatchArrayVector &patchArrays,\n+GLuint patchIndexBuffer, GLuint patchParamsBuffer) const\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n+static GLXFBEvaluator * Create(BufferDescriptor const &srcDesc,\n+BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc,\n+BufferDescriptor const &dvDesc, BufferDescriptor const &duuDesc,\n+BufferDescriptor const &duvDesc, BufferDescriptor const &dvvDesc, void\n+*deviceContext)\n+Specialization to allow creation without a device context.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b5_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n+bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n+*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n+BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const\n+&duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER\n+*dvvBuffer, BufferDescriptor const &dvvDesc, int numPatchCoords,\n+PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel=0)\n+const\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b2_\b0_\b8_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n+static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n+*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n+BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const\n+&duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER\n+*dvvBuffer, BufferDescriptor const &dvvDesc, int numPatchCoords,\n+PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, GLXFBEvaluator const\n+*instance, void *deviceContext=NULL)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b5_\b1_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+bool EvalStencils(GLuint srcBuffer, BufferDescriptor const &srcDesc, GLuint\n+dstBuffer, BufferDescriptor const &dstDesc, GLuint duBuffer, BufferDescriptor\n+const &duDesc, GLuint dvBuffer, BufferDescriptor const &dvDesc, GLuint\n+sizesBuffer, GLuint offsetsBuffer, GLuint indicesBuffer, GLuint weightsBuffer,\n+GLuint duWeightsBuffer, GLuint dvWeightsBuffer, int start, int end) const\n+Dispatch the GLSL XFB kernel on on GPU asynchronously returns false if the\n+kernel hasn't been compile...\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n+static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor\n+const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int\n+numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int\n+fvarChannel, GLXFBEvaluator const *instance, void *deviceContext=NULL)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b6_\b7_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, STENCIL_TABLE\n+const *stencilTable, GLXFBEvaluator const *instance, void *deviceContext=NULL)\n+Generic static stencil function. This function has a same signature as other\n+device kernels have so t...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b2_\b3_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\b~_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n+~GLXFBEvaluator()\n+Destructor. note that the GL context must be made current.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bC_\bo_\bm_\bp_\bi_\bl_\be\n+bool Compile(BufferDescriptor const &srcDesc, BufferDescriptor const &dstDesc,\n+BufferDescriptor const &duDesc=BufferDescriptor(), BufferDescriptor const\n+&dvDesc=BufferDescriptor(), BufferDescriptor const &duuDesc=BufferDescriptor(),\n+BufferDescriptor const &duvDesc=BufferDescriptor(), BufferDescriptor const\n+&dvvDesc=BufferDescriptor())\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n+bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n+BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n+&dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE\n+*patchTable) const\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b4_\b2_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n+bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int\n+numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int\n+fvarChannel=0) const\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b7_\b4_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n+static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor\n+const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,\n+DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n+BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const\n+&duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER\n+*dvvBuffer, BufferDescriptor const &dvvDesc, int numPatchCoords,\n+PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel,\n+GLXFBEvaluator const *instance, void *deviceContext=NULL)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b9_\b7_\b6\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bb_\bf_\br\n-    * _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00704.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00704.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/bfr/surface.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/osd/mesh.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -89,47 +89,108 @@\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> &#124;\n-<a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">surface.h File Reference</div></div>\n+<a href=\"#namespaces\">Namespaces</a> &#124;\n+<a href=\"#typedef-members\">Typedefs</a> &#124;\n+<a href=\"#enum-members\">Enumerations</a> &#124;\n+<a href=\"#func-members\">Functions</a>  </div>\n+  <div class=\"headertitle\"><div class=\"title\">mesh.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &quot;../bfr/surfaceData.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00719_source.html\">../bfr/parameterization.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00683_source.html\">../vtr/array.h</a>&quot;</code><br />\n+<code>#include &lt;bitset&gt;</code><br />\n+<code>#include &lt;cassert&gt;</code><br />\n+<code>#include &lt;cstring&gt;</code><br />\n+<code>#include &lt;vector&gt;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00833_source.html\">../far/topologyRefiner.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00854_source.html\">../far/patchTableFactory.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00818_source.html\">../far/stencilTable.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00824_source.html\">../far/stencilTableFactory.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00764_source.html\">../osd/bufferDescriptor.h</a>&quot;</code><br />\n </div>\n <p><a href=\"a00704_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00933.html\">Surface&lt; REAL &gt;</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Encapsulates the limit surface for a face of a mesh.  <a href=\"a00933.html#details\">More...</a><br /></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01269.html\">MeshInterface&lt; PATCH_TABLE &gt;</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00937.html\">Surface&lt; REAL &gt;::PointDescriptor</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Simple struct defining the size and stride of points in arrays.  <a href=\"a00937.html#details\">More...</a><br /></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01273.html\">EvaluatorCacheT&lt; EVALUATOR &gt;</a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01277.html\">EvaluatorCacheT&lt; EVALUATOR &gt;::Entry</a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01281.html\">Mesh&lt; VERTEX_BUFFER, STENCIL_TABLE, EVALUATOR, PATCH_TABLE, DEVICE_CONTEXT &gt;</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00907\" id=\"r_a00907\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00907.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr</a></td></tr>\n+<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+</table><table class=\"memberdecls\">\n+<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"typedef-members\" name=\"typedef-members\"></a>\n+Typedefs</h2></td></tr>\n+<tr class=\"memitem:a85ba9df501aea9af1ec9da1558c255bc\" id=\"r_a85ba9df501aea9af1ec9da1558c255bc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef std::bitset&lt; <a class=\"el\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a5676712c77d29cfdd330e2802db1c464\">NUM_MESH_BITS</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html#a85ba9df501aea9af1ec9da1558c255bc\">MeshBitset</a></td></tr>\n+<tr class=\"separator:a85ba9df501aea9af1ec9da1558c255bc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+</table><table class=\"memberdecls\">\n+<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\n+Enumerations</h2></td></tr>\n+<tr class=\"memitem:a1af6b50e9f8ae13d3d2f9d5b03b35492\" id=\"r_a1af6b50e9f8ae13d3d2f9d5b03b35492\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492\">MeshBits</a> { <br />\n+&#160;&#160;<a class=\"el\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492adef344bcbdd50a1a93136eb53183c718\">MeshAdaptive</a> = 0\n+, <br />\n+&#160;&#160;<a class=\"el\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a9313c644b9b2a998bcb55cfcc4582b1a\">MeshInterleaveVarying</a> = 1\n+, <br />\n+&#160;&#160;<a class=\"el\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492ac10e41fef659f3b3a1b730319bdedb45\">MeshFVarData</a> = 2\n+, <br />\n+&#160;&#160;<a class=\"el\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a9b8a23ab039e120012bc7c622308d603\">MeshFVarAdaptive</a> = 3\n+, <br />\n+&#160;&#160;<a class=\"el\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492ab32b8ef595539e14041e2fb0e619e3f9\">MeshUseSmoothCornerPatch</a> = 4\n+, <br />\n+&#160;&#160;<a class=\"el\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a9058d69e1089fc77f1974a76c34e2071\">MeshUseSingleCreasePatch</a> = 5\n+, <br />\n+&#160;&#160;<a class=\"el\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a8fab1b3018f94b5b2432c7435e795925\">MeshUseInfSharpPatch</a> = 6\n+, <br />\n+&#160;&#160;<a class=\"el\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a4124233e4f787f999c7975afceab34f3\">MeshEndCapBilinearBasis</a> = 7\n+, <br />\n+&#160;&#160;<a class=\"el\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492aa2f41b6ba0393698bb3af283283737f7\">MeshEndCapBSplineBasis</a> = 8\n+, <br />\n+&#160;&#160;<a class=\"el\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492aa2878e1a215530f5f6fb89f1e06f91ee\">MeshEndCapGregoryBasis</a> = 9\n+, <br />\n+&#160;&#160;<a class=\"el\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492aad7b3fb2be609abdbfafaf5b1c834158\">MeshEndCapLegacyGregory</a> = 10\n+, <br />\n+&#160;&#160;<a class=\"el\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a5676712c77d29cfdd330e2802db1c464\">NUM_MESH_BITS</a> = 11\n+<br />\n+ }</td></tr>\n+<tr class=\"separator:a1af6b50e9f8ae13d3d2f9d5b03b35492\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+</table><table class=\"memberdecls\">\n+<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\n+Functions</h2></td></tr>\n+<tr class=\"memitem:a06ceddf21c024b341a5b946049cd701a\" id=\"r_a06ceddf21c024b341a5b946049cd701a\"><td class=\"memTemplParams\" colspan=\"2\">template&lt;typename STENCIL_TABLE , typename SRC_STENCIL_TABLE , typename DEVICE_CONTEXT &gt; </td></tr>\n+<tr class=\"memitem:a06ceddf21c024b341a5b946049cd701a\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">STENCIL_TABLE const *&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html#a06ceddf21c024b341a5b946049cd701a\">convertToCompatibleStencilTable</a> (SRC_STENCIL_TABLE const *table, DEVICE_CONTEXT *context)</td></tr>\n+<tr class=\"separator:a06ceddf21c024b341a5b946049cd701a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:a33f9830228f847fae1c30c9dffe02b5a\" id=\"r_a33f9830228f847fae1c30c9dffe02b5a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">template&lt;&gt; </td></tr>\n+<tr class=\"memitem:a33f9830228f847fae1c30c9dffe02b5a\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"a01065.html\">Far::StencilTable</a> const *&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html#a33f9830228f847fae1c30c9dffe02b5a\">convertToCompatibleStencilTable&lt; Far::StencilTable, Far::StencilTable, void &gt;</a> (<a class=\"el\" href=\"a01065.html\">Far::StencilTable</a> const *table, void *)</td></tr>\n+<tr class=\"separator:a33f9830228f847fae1c30c9dffe02b5a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:a4c2520cc1a8a5a03e3f53584629d7318\" id=\"r_a4c2520cc1a8a5a03e3f53584629d7318\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">template&lt;&gt; </td></tr>\n+<tr class=\"memitem:a4c2520cc1a8a5a03e3f53584629d7318\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"a01081.html\">Far::LimitStencilTable</a> const *&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html#a4c2520cc1a8a5a03e3f53584629d7318\">convertToCompatibleStencilTable&lt; Far::LimitStencilTable, Far::LimitStencilTable, void &gt;</a> (<a class=\"el\" href=\"a01081.html\">Far::LimitStencilTable</a> const *table, void *)</td></tr>\n+<tr class=\"separator:a4c2520cc1a8a5a03e3f53584629d7318\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:ab5753a2b0a0995c8e2259d2c4765f7df\" id=\"r_ab5753a2b0a0995c8e2259d2c4765f7df\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">template&lt;&gt; </td></tr>\n+<tr class=\"memitem:ab5753a2b0a0995c8e2259d2c4765f7df\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"a01065.html\">Far::StencilTable</a> const *&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html#ab5753a2b0a0995c8e2259d2c4765f7df\">convertToCompatibleStencilTable&lt; Far::StencilTable, Far::StencilTable, ID3D11DeviceContext &gt;</a> (<a class=\"el\" href=\"a01065.html\">Far::StencilTable</a> const *table, ID3D11DeviceContext *)</td></tr>\n+<tr class=\"separator:ab5753a2b0a0995c8e2259d2c4765f7df\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_fa5edef2a780a73fbfb6a11f1af88ceb.html\">bfr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00704.html\">surface.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00704.html\">mesh.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,30 +1,80 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-surface.h File Reference\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bT_\by_\bp_\be_\bd_\be_\bf_\bs | _\bE_\bn_\bu_\bm_\be_\br_\ba_\bt_\bi_\bo_\bn_\bs | _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n+mesh.h File Reference\n #include \"../version.h\"\n-#include \"../bfr/surfaceData.h\"\n-#include \"_\b._\b._\b/_\bb_\bf_\br_\b/_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b._\bh\"\n-#include \"_\b._\b._\b/_\bv_\bt_\br_\b/_\ba_\br_\br_\ba_\by_\b._\bh\"\n+#include <bitset>\n+#include <cassert>\n+#include <cstring>\n+#include <vector>\n+#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh\"\n+#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh\"\n+#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh\"\n+#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh\"\n+#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n- class \u00a0 _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\b _\bR_\bE_\bA_\bL_\b _\b>\n-\u00a0        Encapsulates the limit surface for a face of a mesh. _\bM_\bo_\br_\be_\b._\b._\b.\n+ class \u00a0 _\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\b _\bP_\bA_\bT_\bC_\bH_\b__\bT_\bA_\bB_\bL_\bE_\b _\b>\n \u00a0\n-struct \u00a0 _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\b _\bR_\bE_\bA_\bL_\b _\b>_\b:_\b:_\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n-\u00a0        Simple struct defining the size and stride of points in arrays.\n-         _\bM_\bo_\br_\be_\b._\b._\b.\n+ class \u00a0 _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bC_\ba_\bc_\bh_\be_\bT_\b<_\b _\bE_\bV_\bA_\bL_\bU_\bA_\bT_\bO_\bR_\b _\b>\n+\u00a0\n+struct \u00a0 _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bC_\ba_\bc_\bh_\be_\bT_\b<_\b _\bE_\bV_\bA_\bL_\bU_\bA_\bT_\bO_\bR_\b _\b>_\b:_\b:_\bE_\bn_\bt_\br_\by\n+\u00a0\n+ class \u00a0 _\bM_\be_\bs_\bh_\b<_\b _\bV_\bE_\bR_\bT_\bE_\bX_\b__\bB_\bU_\bF_\bF_\bE_\bR_\b,_\b _\bS_\bT_\bE_\bN_\bC_\bI_\bL_\b__\bT_\bA_\bB_\bL_\bE_\b,_\b _\bE_\bV_\bA_\bL_\bU_\bA_\bT_\bO_\bR_\b,_\b _\bP_\bA_\bT_\bC_\bH_\b__\bT_\bA_\bB_\bL_\bE_\b,\n+         _\bD_\bE_\bV_\bI_\bC_\bE_\b__\bC_\bO_\bN_\bT_\bE_\bX_\bT_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n+\u00a0\n+T\bTy\byp\bpe\bed\bde\bef\bfs\bs\n+typedef std::bitset< _\bN_\bU_\bM_\b__\bM_\bE_\bS_\bH_\b__\bB_\bI_\bT_\bS >\u00a0 _\bM_\be_\bs_\bh_\bB_\bi_\bt_\bs_\be_\bt\n+\u00a0\n+E\bEn\bnu\bum\bme\ber\bra\bat\bti\bio\bon\bns\bs\n+enum \u00a0 _\bM_\be_\bs_\bh_\bB_\bi_\bt_\bs {\n+       \u00a0\u00a0_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be = 0 ,\n+       \u00a0\u00a0_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bl_\be_\ba_\bv_\be_\bV_\ba_\br_\by_\bi_\bn_\bg = 1 ,\n+       \u00a0\u00a0_\bM_\be_\bs_\bh_\bF_\bV_\ba_\br_\bD_\ba_\bt_\ba = 2 ,\n+       \u00a0\u00a0_\bM_\be_\bs_\bh_\bF_\bV_\ba_\br_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be = 3 ,\n+       \u00a0\u00a0_\bM_\be_\bs_\bh_\bU_\bs_\be_\bS_\bm_\bo_\bo_\bt_\bh_\bC_\bo_\br_\bn_\be_\br_\bP_\ba_\bt_\bc_\bh = 4 ,\n+       \u00a0\u00a0_\bM_\be_\bs_\bh_\bU_\bs_\be_\bS_\bi_\bn_\bg_\bl_\be_\bC_\br_\be_\ba_\bs_\be_\bP_\ba_\bt_\bc_\bh = 5 ,\n+       \u00a0\u00a0_\bM_\be_\bs_\bh_\bU_\bs_\be_\bI_\bn_\bf_\bS_\bh_\ba_\br_\bp_\bP_\ba_\bt_\bc_\bh = 6 ,\n+       \u00a0\u00a0_\bM_\be_\bs_\bh_\bE_\bn_\bd_\bC_\ba_\bp_\bB_\bi_\bl_\bi_\bn_\be_\ba_\br_\bB_\ba_\bs_\bi_\bs = 7 ,\n+       \u00a0\u00a0_\bM_\be_\bs_\bh_\bE_\bn_\bd_\bC_\ba_\bp_\bB_\bS_\bp_\bl_\bi_\bn_\be_\bB_\ba_\bs_\bi_\bs = 8 ,\n+       \u00a0\u00a0_\bM_\be_\bs_\bh_\bE_\bn_\bd_\bC_\ba_\bp_\bG_\br_\be_\bg_\bo_\br_\by_\bB_\ba_\bs_\bi_\bs = 9 ,\n+       \u00a0\u00a0_\bM_\be_\bs_\bh_\bE_\bn_\bd_\bC_\ba_\bp_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by = 10 ,\n+       \u00a0\u00a0_\bN_\bU_\bM_\b__\bM_\bE_\bS_\bH_\b__\bB_\bI_\bT_\bS = 11\n+       }\n+\u00a0\n+F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n+template<typename STENCIL_TABLE , typename SRC_STENCIL_TABLE , typename\n+DEVICE_CONTEXT >\n+         STENCIL_TABLE const *\u00a0 _\bc_\bo_\bn_\bv_\be_\br_\bt_\bT_\bo_\bC_\bo_\bm_\bp_\ba_\bt_\bi_\bb_\bl_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n+                                (SRC_STENCIL_TABLE const *table, DEVICE_CONTEXT\n+                                *context)\n+\u00a0\n+                     template<>\n+     _\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *\u00a0 _\bc_\bo_\bn_\bv_\be_\br_\bt_\bT_\bo_\bC_\bo_\bm_\bp_\ba_\bt_\bi_\bb_\bl_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b<_\b _\bF_\ba_\br_\b:_\b:\n+                                _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b,_\b _\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b,_\b _\bv_\bo_\bi_\bd_\b _\b> (_\bF_\ba_\br_\b:_\b:\n+                                _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *table, void *)\n+\u00a0\n+                     template<>\n+_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *\u00a0 _\bc_\bo_\bn_\bv_\be_\br_\bt_\bT_\bo_\bC_\bo_\bm_\bp_\ba_\bt_\bi_\bb_\bl_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b<_\b _\bF_\ba_\br_\b:_\b:\n+                                _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b,_\b _\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b,_\b _\bv_\bo_\bi_\bd\n+                                _\b> (_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *table, void *)\n+\u00a0\n+                     template<>\n+     _\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *\u00a0 _\bc_\bo_\bn_\bv_\be_\br_\bt_\bT_\bo_\bC_\bo_\bm_\bp_\ba_\bt_\bi_\bb_\bl_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b<_\b _\bF_\ba_\br_\b:_\b:\n+                                _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b,_\b _\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b,\n+                                _\bI_\bD_\b3_\bD_\b1_\b1_\bD_\be_\bv_\bi_\bc_\be_\bC_\bo_\bn_\bt_\be_\bx_\bt_\b _\b> (_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const\n+                                *table, ID3D11DeviceContext *)\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bb_\bf_\br\n-    * _\bs_\bu_\br_\bf_\ba_\bc_\be_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bm_\be_\bs_\bh_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00704.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00704.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,4 +1,25 @@\n var a00704 = [\n-    [\"Surface< REAL >\", \"a00933.html\", \"a00933\"],\n-    [\"PointDescriptor\", \"a00937.html\", \"a00937\"]\n+    [\"MeshInterface< PATCH_TABLE >\", \"a01269.html\", \"a01269\"],\n+    [\"EvaluatorCacheT< EVALUATOR >\", \"a01273.html\", \"a01273\"],\n+    [\"Entry\", \"a01277.html\", \"a01277\"],\n+    [\"Mesh< VERTEX_BUFFER, STENCIL_TABLE, EVALUATOR, PATCH_TABLE, DEVICE_CONTEXT >\", \"a01281.html\", \"a01281\"],\n+    [\"MeshBitset\", \"a00704.html#a85ba9df501aea9af1ec9da1558c255bc\", null],\n+    [\"MeshBits\", \"a00704.html#a1af6b50e9f8ae13d3d2f9d5b03b35492\", [\n+        [\"MeshAdaptive\", \"a00704.html#a1af6b50e9f8ae13d3d2f9d5b03b35492adef344bcbdd50a1a93136eb53183c718\", null],\n+        [\"MeshInterleaveVarying\", \"a00704.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a9313c644b9b2a998bcb55cfcc4582b1a\", null],\n+        [\"MeshFVarData\", \"a00704.html#a1af6b50e9f8ae13d3d2f9d5b03b35492ac10e41fef659f3b3a1b730319bdedb45\", null],\n+        [\"MeshFVarAdaptive\", \"a00704.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a9b8a23ab039e120012bc7c622308d603\", null],\n+        [\"MeshUseSmoothCornerPatch\", \"a00704.html#a1af6b50e9f8ae13d3d2f9d5b03b35492ab32b8ef595539e14041e2fb0e619e3f9\", null],\n+        [\"MeshUseSingleCreasePatch\", \"a00704.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a9058d69e1089fc77f1974a76c34e2071\", null],\n+        [\"MeshUseInfSharpPatch\", \"a00704.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a8fab1b3018f94b5b2432c7435e795925\", null],\n+        [\"MeshEndCapBilinearBasis\", \"a00704.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a4124233e4f787f999c7975afceab34f3\", null],\n+        [\"MeshEndCapBSplineBasis\", \"a00704.html#a1af6b50e9f8ae13d3d2f9d5b03b35492aa2f41b6ba0393698bb3af283283737f7\", null],\n+        [\"MeshEndCapGregoryBasis\", \"a00704.html#a1af6b50e9f8ae13d3d2f9d5b03b35492aa2878e1a215530f5f6fb89f1e06f91ee\", null],\n+        [\"MeshEndCapLegacyGregory\", \"a00704.html#a1af6b50e9f8ae13d3d2f9d5b03b35492aad7b3fb2be609abdbfafaf5b1c834158\", null],\n+        [\"NUM_MESH_BITS\", \"a00704.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a5676712c77d29cfdd330e2802db1c464\", null]\n+    ]],\n+    [\"convertToCompatibleStencilTable\", \"a00704.html#a06ceddf21c024b341a5b946049cd701a\", null],\n+    [\"convertToCompatibleStencilTable< Far::LimitStencilTable, Far::LimitStencilTable, void >\", \"a00704.html#a4c2520cc1a8a5a03e3f53584629d7318\", null],\n+    [\"convertToCompatibleStencilTable< Far::StencilTable, Far::StencilTable, ID3D11DeviceContext >\", \"a00704.html#ab5753a2b0a0995c8e2259d2c4765f7df\", null],\n+    [\"convertToCompatibleStencilTable< Far::StencilTable, Far::StencilTable, void >\", \"a00704.html#a33f9830228f847fae1c30c9dffe02b5a\", null]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00704_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00704_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/bfr/surface.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/osd/mesh.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">surface.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">mesh.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00704.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2021 Pixar</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2013 Pixar</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -119,358 +119,885 @@\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_BFR_SURFACE_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_BFR_SURFACE_H</span></div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_MESH_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_MESH_H</span></div>\n <div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n <div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n <div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../bfr/surfaceData.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../bfr/parameterization.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &quot;../vtr/array.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">namespace </span>Bfr {</div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span> </div>\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00059\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00933.html\">   59</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a00933.html\">Surface</a> {</div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"foldopen\" id=\"foldopen00063\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00937.html\">   63</a></span>    <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a00937.html\">PointDescriptor</a> {</div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00937.html#ac60ab7fa3966237e2de95cc60defa4de\">   64</a></span>        <a class=\"code hl_function\" href=\"a00937.html#ac60ab7fa3966237e2de95cc60defa4de\">PointDescriptor</a>() : <a class=\"code hl_variable\" href=\"a00937.html#a439227feff9d7f55384e8780cfc2eb82\">size</a>(0), <a class=\"code hl_variable\" href=\"a00937.html#a08f66a6870d87afcd5dc1b60d1019692\">stride</a>(0) { }</div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00937.html#a69d66788e741236b1176159a1d609189\">   65</a></span>        <a class=\"code hl_function\" href=\"a00937.html#a69d66788e741236b1176159a1d609189\">PointDescriptor</a>(<span class=\"keywordtype\">int</span> n) : <a class=\"code hl_variable\" href=\"a00937.html#a439227feff9d7f55384e8780cfc2eb82\">size</a>(n), <a class=\"code hl_variable\" href=\"a00937.html#a08f66a6870d87afcd5dc1b60d1019692\">stride</a>(n) { }</div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00937.html#a6e6069bdfef867e798fe863f40f4274a\">   66</a></span>        <a class=\"code hl_function\" href=\"a00937.html#a6e6069bdfef867e798fe863f40f4274a\">PointDescriptor</a>(<span class=\"keywordtype\">int</span> n, <span class=\"keywordtype\">int</span> m) : <a class=\"code hl_variable\" href=\"a00937.html#a439227feff9d7f55384e8780cfc2eb82\">size</a>(n), <a class=\"code hl_variable\" href=\"a00937.html#a08f66a6870d87afcd5dc1b60d1019692\">stride</a>(m) { }</div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span> </div>\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00937.html#a439227feff9d7f55384e8780cfc2eb82\">   68</a></span>        <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"a00937.html#a439227feff9d7f55384e8780cfc2eb82\">size</a>, <a class=\"code hl_variable\" href=\"a00937.html#a08f66a6870d87afcd5dc1b60d1019692\">stride</a>;</div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span>    };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span> </div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00933.html#a4a0e50e01fef3e431767a928c2631cab\">   72</a></span>    <span class=\"keyword\">typedef</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_typedef\" href=\"a00933.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a>;</div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span> </div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span> </div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &lt;bitset&gt;</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &lt;cassert&gt;</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &lt;cstring&gt;</span></div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span> </div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"preprocessor\">#include &quot;../far/topologyRefiner.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"preprocessor\">#include &quot;../far/patchTableFactory.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"preprocessor\">#include &quot;../far/stencilTable.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"preprocessor\">#include &quot;../far/stencilTableFactory.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span> </div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"preprocessor\">#include &quot;../osd/bufferDescriptor.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span> </div>\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span><span class=\"keyword\">struct </span>ID3D11DeviceContext;</div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span> </div>\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span> </div>\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span><span class=\"keyword\">namespace </span>Osd {</div>\n+<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00049\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492\">   49</a></span><span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492\">MeshBits</a> {</div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492adef344bcbdd50a1a93136eb53183c718\">   50</a></span>    <a class=\"code hl_enumvalue\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492adef344bcbdd50a1a93136eb53183c718\">MeshAdaptive</a>             = 0,</div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a9313c644b9b2a998bcb55cfcc4582b1a\">   51</a></span>    <a class=\"code hl_enumvalue\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a9313c644b9b2a998bcb55cfcc4582b1a\">MeshInterleaveVarying</a>    = 1,</div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492ac10e41fef659f3b3a1b730319bdedb45\">   52</a></span>    <a class=\"code hl_enumvalue\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492ac10e41fef659f3b3a1b730319bdedb45\">MeshFVarData</a>             = 2,</div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a9b8a23ab039e120012bc7c622308d603\">   53</a></span>    <a class=\"code hl_enumvalue\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a9b8a23ab039e120012bc7c622308d603\">MeshFVarAdaptive</a>         = 3,</div>\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492ab32b8ef595539e14041e2fb0e619e3f9\">   54</a></span>    <a class=\"code hl_enumvalue\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492ab32b8ef595539e14041e2fb0e619e3f9\">MeshUseSmoothCornerPatch</a> = 4,</div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a9058d69e1089fc77f1974a76c34e2071\">   55</a></span>    <a class=\"code hl_enumvalue\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a9058d69e1089fc77f1974a76c34e2071\">MeshUseSingleCreasePatch</a> = 5,</div>\n+<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a8fab1b3018f94b5b2432c7435e795925\">   56</a></span>    <a class=\"code hl_enumvalue\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a8fab1b3018f94b5b2432c7435e795925\">MeshUseInfSharpPatch</a>     = 6,</div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a4124233e4f787f999c7975afceab34f3\">   57</a></span>    <a class=\"code hl_enumvalue\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a4124233e4f787f999c7975afceab34f3\">MeshEndCapBilinearBasis</a>  = 7,  <span class=\"comment\">// exclusive</span></div>\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492aa2f41b6ba0393698bb3af283283737f7\">   58</a></span>    <a class=\"code hl_enumvalue\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492aa2f41b6ba0393698bb3af283283737f7\">MeshEndCapBSplineBasis</a>   = 8,  <span class=\"comment\">// exclusive</span></div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492aa2878e1a215530f5f6fb89f1e06f91ee\">   59</a></span>    <a class=\"code hl_enumvalue\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492aa2878e1a215530f5f6fb89f1e06f91ee\">MeshEndCapGregoryBasis</a>   = 9,  <span class=\"comment\">// exclusive</span></div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492aad7b3fb2be609abdbfafaf5b1c834158\">   60</a></span>    <a class=\"code hl_enumvalue\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492aad7b3fb2be609abdbfafaf5b1c834158\">MeshEndCapLegacyGregory</a>  = 10, <span class=\"comment\">// exclusive</span></div>\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a5676712c77d29cfdd330e2802db1c464\">   61</a></span>    <a class=\"code hl_enumvalue\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a5676712c77d29cfdd330e2802db1c464\">NUM_MESH_BITS</a>            = 11,</div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html#a85ba9df501aea9af1ec9da1558c255bc\">   63</a></span><span class=\"keyword\">typedef</span> std::bitset&lt;NUM_MESH_BITS&gt; <a class=\"code hl_typedef\" href=\"a00912.html#a85ba9df501aea9af1ec9da1558c255bc\">MeshBitset</a>;</div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span> </div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span><span class=\"comment\">// ---------------------------------------------------------------------------</span></div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span> </div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00068\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01269.html\">   68</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01269.html\">MeshInterface</a> {</div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01269.html#adf9352136d44e5999629c6b4530bf4e0\">   70</a></span>    <span class=\"keyword\">typedef</span> PATCH_TABLE <a class=\"code hl_typedef\" href=\"a01269.html#adf9352136d44e5999629c6b4530bf4e0\">PatchTable</a>;</div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01269.html#a9cf40ecf1b9b5c29507fe92a03f37a3c\">   71</a></span>    <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> PatchTable::VertexBufferBinding <a class=\"code hl_typedef\" href=\"a01269.html#a9cf40ecf1b9b5c29507fe92a03f37a3c\">VertexBufferBinding</a>;</div>\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span> </div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01269.html#a97aeac9a21a88e08fc89852a92011bea\">   74</a></span>    <a class=\"code hl_function\" href=\"a01269.html#a97aeac9a21a88e08fc89852a92011bea\">MeshInterface</a>() { }</div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span> </div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01269.html#a7ae07c3be3d1d28183ee669ab9739bf2\">   76</a></span>    <span class=\"keyword\">virtual</span> <a class=\"code hl_function\" href=\"a01269.html#a7ae07c3be3d1d28183ee669ab9739bf2\">~MeshInterface</a>() { }</div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span> </div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01269.html#a431ba3d2dd158085dd98ac0a74b6852e\">   78</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01269.html#a431ba3d2dd158085dd98ac0a74b6852e\">GetNumVertices</a>() <span class=\"keyword\">const</span> = 0;</div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span> </div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01269.html#a17f6f0b76abe06cfe6f518f6b84baf43\">   80</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01269.html#a17f6f0b76abe06cfe6f518f6b84baf43\">GetMaxValence</a>() <span class=\"keyword\">const</span> = 0;</div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span> </div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01269.html#a5c79ce02489e8591ee2d2bfbfab155ec\">   82</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01269.html#a5c79ce02489e8591ee2d2bfbfab155ec\">UpdateVertexBuffer</a>(<span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> *vertexData,</div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>                                    <span class=\"keywordtype\">int</span> startVertex, <span class=\"keywordtype\">int</span> numVerts) = 0;</div>\n <div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span> </div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00933.html#ac532c4b500b1a85ea22217f2c65a70ed\">   86</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00933.html#ac532c4b500b1a85ea22217f2c65a70ed\">IsValid</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _data.isValid(); }</div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01269.html#a46c5effb867afe6684124103763ea931\">   85</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01269.html#a46c5effb867afe6684124103763ea931\">UpdateVaryingBuffer</a>(<span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> *varyingData,</div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>                                     <span class=\"keywordtype\">int</span> startVertex, <span class=\"keywordtype\">int</span> numVerts) = 0;</div>\n <div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span> </div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00933.html#aa71d36872f416feaa853788a7a7a7ef8\">   89</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00933.html#aa71d36872f416feaa853788a7a7a7ef8\">Clear</a>() { _data.reinitialize(); }</div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span> </div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00933.html#a6e1a6ad293d9318f65c2e28c468c66ba\">   92</a></span>    <a class=\"code hl_function\" href=\"a00933.html#a6e1a6ad293d9318f65c2e28c468c66ba\">Surface</a>();</div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01269.html#a9a90398ba2073fe3da454f6b00deb33c\">   88</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01269.html#a9a90398ba2073fe3da454f6b00deb33c\">Refine</a>() = 0;</div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span> </div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01269.html#ae13c194d355f54c75f87897e3c5beb6b\">   90</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01269.html#ae13c194d355f54c75f87897e3c5beb6b\">Synchronize</a>() = 0;</div>\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span> </div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01269.html#a6a57ae718d1dcdeb05728bca6f18ba4e\">   92</a></span>    <span class=\"keyword\">virtual</span> <a class=\"code hl_typedef\" href=\"a01269.html#adf9352136d44e5999629c6b4530bf4e0\">PatchTable</a> * <a class=\"code hl_function\" href=\"a01269.html#a6a57ae718d1dcdeb05728bca6f18ba4e\">GetPatchTable</a>() <span class=\"keyword\">const</span> = 0;</div>\n <div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span> </div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00933.html#aa9500016cdd5cf88992541cc263a75c9\">   94</a></span>    <a class=\"code hl_function\" href=\"a00933.html#aa9500016cdd5cf88992541cc263a75c9\">Surface</a>(<a class=\"code hl_class\" href=\"a00933.html\">Surface</a> <span class=\"keyword\">const</span> &amp; src) = <span class=\"keywordflow\">default</span>;</div>\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00933.html#a85251d7cc5b0aa5838fa1767b6e31e5d\">   95</a></span>    <a class=\"code hl_class\" href=\"a00933.html\">Surface</a>&amp; <a class=\"code hl_function\" href=\"a00933.html#a85251d7cc5b0aa5838fa1767b6e31e5d\">operator=</a>(<a class=\"code hl_class\" href=\"a00933.html\">Surface</a> <span class=\"keyword\">const</span> &amp; src) = <span class=\"keywordflow\">default</span>;</div>\n-<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00933.html#a9fbe10437e4a7f3c40787283a3ecd560\">   96</a></span>    <a class=\"code hl_function\" href=\"a00933.html#a9fbe10437e4a7f3c40787283a3ecd560\">~Surface</a>() = <span class=\"keywordflow\">default</span>;</div>\n-<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span> </div>\n-<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span> </div>\n-<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span> </div>\n-<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00933.html#a66515298a982aab202e1e3e537c7d324\">  106</a></span>    <a class=\"code hl_class\" href=\"a00921.html\">Parameterization</a> <a class=\"code hl_function\" href=\"a00933.html#a66515298a982aab202e1e3e537c7d324\">GetParameterization</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _data.getParam(); }</div>\n-<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span> </div>\n-<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00933.html#a181e30653909f9d0e0afa92dd44d28ec\">  109</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00933.html#a181e30653909f9d0e0afa92dd44d28ec\">GetFaceSize</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a00933.html#a66515298a982aab202e1e3e537c7d324\">GetParameterization</a>().<a class=\"code hl_function\" href=\"a00921.html#a181e30653909f9d0e0afa92dd44d28ec\">GetFaceSize</a>(); }</div>\n-<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span> </div>\n-<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00933.html#a193470573424fe6b2e91f317509b5897\">  112</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00933.html#a193470573424fe6b2e91f317509b5897\">IsRegular</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _data.isRegular(); }</div>\n-<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span> </div>\n-<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00933.html#adb6e3801db80be8fef1fd0fa4673b041\">  115</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00933.html#adb6e3801db80be8fef1fd0fa4673b041\">IsLinear</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _data.isLinear(); }</div>\n-<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span> </div>\n-<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span> </div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01269.html#a15628b18e19d90e91fdbd659925ae5c0\">   94</a></span>    <span class=\"keyword\">virtual</span> <a class=\"code hl_class\" href=\"a00993.html\">Far::PatchTable</a> <span class=\"keyword\">const</span> *<a class=\"code hl_function\" href=\"a01269.html#a15628b18e19d90e91fdbd659925ae5c0\">GetFarPatchTable</a>() <span class=\"keyword\">const</span> = 0;</div>\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span> </div>\n+<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01269.html#a9d8ecd607dbb0749a55113224fbd39c4\">   96</a></span>    <span class=\"keyword\">virtual</span> <a class=\"code hl_typedef\" href=\"a01269.html#a9cf40ecf1b9b5c29507fe92a03f37a3c\">VertexBufferBinding</a> <a class=\"code hl_function\" href=\"a01269.html#a9d8ecd607dbb0749a55113224fbd39c4\">BindVertexBuffer</a>() = 0;</div>\n+<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span> </div>\n+<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01269.html#abcdcb8fab7865dc196900b37c2e2d279\">   98</a></span>    <span class=\"keyword\">virtual</span> <a class=\"code hl_typedef\" href=\"a01269.html#a9cf40ecf1b9b5c29507fe92a03f37a3c\">VertexBufferBinding</a> <a class=\"code hl_function\" href=\"a01269.html#abcdcb8fab7865dc196900b37c2e2d279\">BindVaryingBuffer</a>() = 0;</div>\n+<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span> </div>\n+<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span><span class=\"keyword\">protected</span>:</div>\n+<div class=\"foldopen\" id=\"foldopen00101\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01269.html#a51f237c3f08f6ddc2ea7ba5cb0d00b36\">  101</a></span>    <span class=\"keyword\">static</span> <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01269.html#a51f237c3f08f6ddc2ea7ba5cb0d00b36\">refineMesh</a>(<a class=\"code hl_class\" href=\"a01121.html\">Far::TopologyRefiner</a> &amp; refiner,</div>\n+<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span>                                  <span class=\"keywordtype\">int</span> level, <span class=\"keywordtype\">bool</span> adaptive,</div>\n+<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span>                                  <span class=\"keywordtype\">bool</span> singleCreasePatch) {</div>\n+<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span>        <span class=\"keywordflow\">if</span> (adaptive) {</div>\n+<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span>            <a class=\"code hl_struct\" href=\"a01129.html\">Far::TopologyRefiner::AdaptiveOptions</a> options(level);</div>\n+<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span>            options.<a class=\"code hl_variable\" href=\"a01129.html#a5834971432c649e28d5a0186f79a60d5\">useSingleCreasePatch</a> = singleCreasePatch;</div>\n+<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span>            refiner.<a class=\"code hl_function\" href=\"a01121.html#aff92309935db19988908471bee4fef4d\">RefineAdaptive</a>(options);</div>\n+<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span>            <span class=\"comment\">//  This dependency on FVar channels should not be necessary</span></div>\n+<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span>            <span class=\"keywordtype\">bool</span> fullTopologyInLastLevel = refiner.<a class=\"code hl_function\" href=\"a01121.html#aa9be824a572029f3ec1e0c0d6cfecd77\">GetNumFVarChannels</a>()&gt;0;</div>\n+<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span> </div>\n+<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span>            <a class=\"code hl_struct\" href=\"a01125.html\">Far::TopologyRefiner::UniformOptions</a> options(level);</div>\n+<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span>            options.<a class=\"code hl_variable\" href=\"a01125.html#ad58e8c2606ce33af17bb83fb90eb7325\">fullTopologyInLastLevel</a> = fullTopologyInLastLevel;</div>\n+<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span>            refiner.<a class=\"code hl_function\" href=\"a01121.html#ad22b7ffd9f8f3b488e5f220cf00c8c82\">RefineUniform</a>(options);</div>\n+<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span>        }</div>\n+<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\">  116</span>    }</div>\n+</div>\n+<div class=\"foldopen\" id=\"foldopen00117\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01269.html#a173851f742adc30ac139af96fe63732d\">  117</a></span>    <span class=\"keyword\">static</span> <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01269.html#a173851f742adc30ac139af96fe63732d\">refineMesh</a>(<a class=\"code hl_class\" href=\"a01121.html\">Far::TopologyRefiner</a> &amp; refiner,</div>\n+<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\">  118</span>                                  <span class=\"keywordtype\">int</span> level, <a class=\"code hl_typedef\" href=\"a00912.html#a85ba9df501aea9af1ec9da1558c255bc\">MeshBitset</a> bits) {</div>\n+<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span>        <span class=\"keywordflow\">if</span> (bits.test(<a class=\"code hl_enumvalue\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492adef344bcbdd50a1a93136eb53183c718\">MeshAdaptive</a>)) {</div>\n+<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span>            <a class=\"code hl_struct\" href=\"a01129.html\">Far::TopologyRefiner::AdaptiveOptions</a> options(level);</div>\n+<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\">  121</span>            options.<a class=\"code hl_variable\" href=\"a01129.html#a5834971432c649e28d5a0186f79a60d5\">useSingleCreasePatch</a> = bits.test(<a class=\"code hl_enumvalue\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a9058d69e1089fc77f1974a76c34e2071\">MeshUseSingleCreasePatch</a>);</div>\n+<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span>            options.<a class=\"code hl_variable\" href=\"a01129.html#a5eba866952b7be15b065060b1f5a81da\">useInfSharpPatch</a> = bits.test(<a class=\"code hl_enumvalue\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a8fab1b3018f94b5b2432c7435e795925\">MeshUseInfSharpPatch</a>);</div>\n+<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span>            options.<a class=\"code hl_variable\" href=\"a01129.html#a74c90a5955fcad9c95d4c18346f7c312\">considerFVarChannels</a> = bits.test(<a class=\"code hl_enumvalue\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a9b8a23ab039e120012bc7c622308d603\">MeshFVarAdaptive</a>);</div>\n+<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span>            refiner.<a class=\"code hl_function\" href=\"a01121.html#aff92309935db19988908471bee4fef4d\">RefineAdaptive</a>(options);</div>\n+<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span>            <span class=\"comment\">//  This dependency on FVar channels should not be necessary</span></div>\n+<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span>            <span class=\"keywordtype\">bool</span> fullTopologyInLastLevel = refiner.<a class=\"code hl_function\" href=\"a01121.html#aa9be824a572029f3ec1e0c0d6cfecd77\">GetNumFVarChannels</a>()&gt;0;</div>\n+<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span> </div>\n+<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span>            <a class=\"code hl_struct\" href=\"a01125.html\">Far::TopologyRefiner::UniformOptions</a> options(level);</div>\n+<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span>            options.<a class=\"code hl_variable\" href=\"a01125.html#ad58e8c2606ce33af17bb83fb90eb7325\">fullTopologyInLastLevel</a> = fullTopologyInLastLevel;</div>\n+<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\">  131</span>            refiner.<a class=\"code hl_function\" href=\"a01121.html#ad22b7ffd9f8f3b488e5f220cf00c8c82\">RefineUniform</a>(options);</div>\n+<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\">  132</span>        }</div>\n+<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\">  133</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\">  134</span>};</div>\n+</div>\n <div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\">  135</span> </div>\n-<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00933.html#a133ed4fbaddeb2a8036915b14cb21cff\">  137</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00933.html#a133ed4fbaddeb2a8036915b14cb21cff\">GetNumControlPoints</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _data.getNumCVs(); }</div>\n-<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\">  138</span> </div>\n-<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00933.html#a2666f2fe497e68b29337056deda176a9\">  140</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00933.html#a2666f2fe497e68b29337056deda176a9\">GetControlPointIndices</a>(<a class=\"code hl_typedef\" href=\"a00933.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> meshPointIndices[]) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\">  141</span> </div>\n-<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\">  151</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL_MESH&gt;</div>\n-<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00933.html#ad24baa29c6dfff25cd17ee1269ab9f8d\">  152</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00933.html#ad24baa29c6dfff25cd17ee1269ab9f8d\">GatherControlPoints</a>(REAL_MESH       <span class=\"keyword\">const</span>   meshPoints[],</div>\n-<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\">  153</span>                             <a class=\"code hl_struct\" href=\"a00937.html\">PointDescriptor</a> <span class=\"keyword\">const</span> &amp; meshPointDesc,</div>\n-<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\">  154</span>                             REAL                    controlPoints[],</div>\n-<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\">  155</span>                             <a class=\"code hl_struct\" href=\"a00937.html\">PointDescriptor</a> <span class=\"keyword\">const</span> &amp; controlPointDesc) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\">  136</span><span class=\"comment\">// ---------------------------------------------------------------------------</span></div>\n+<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\">  137</span> </div>\n+<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\">  138</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> STENCIL_TABLE, <span class=\"keyword\">typename</span> SRC_STENCIL_TABLE,</div>\n+<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\">  139</span>          <span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n+<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\">  140</span>STENCIL_TABLE <span class=\"keyword\">const</span> *</div>\n+<div class=\"foldopen\" id=\"foldopen00141\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html#a06ceddf21c024b341a5b946049cd701a\">  141</a></span><a class=\"code hl_function\" href=\"a00912.html#a06ceddf21c024b341a5b946049cd701a\">convertToCompatibleStencilTable</a>(</div>\n+<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span>    SRC_STENCIL_TABLE <span class=\"keyword\">const</span> *table, DEVICE_CONTEXT *context) {</div>\n+<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\">  143</span>    <span class=\"keywordflow\">if</span> (! table) <span class=\"keywordflow\">return</span> NULL;</div>\n+<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\">  144</span>    <span class=\"keywordflow\">return</span> STENCIL_TABLE::Create(table, context);</div>\n+<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\">  145</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\">  146</span> </div>\n+<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\">  147</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00148\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html#a33f9830228f847fae1c30c9dffe02b5a\">  148</a></span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a01065.html\">Far::StencilTable</a> <span class=\"keyword\">const</span> *</div>\n+<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\">  149</span><a class=\"code hl_function\" href=\"a00912.html#a33f9830228f847fae1c30c9dffe02b5a\">convertToCompatibleStencilTable&lt;Far::StencilTable, Far::StencilTable, void&gt;</a>(</div>\n+<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\">  150</span>    <a class=\"code hl_class\" href=\"a01065.html\">Far::StencilTable</a> <span class=\"keyword\">const</span> *table, <span class=\"keywordtype\">void</span> *  <span class=\"comment\">/*context*/</span>) {</div>\n+<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\">  151</span>    <span class=\"comment\">// no need for conversion</span></div>\n+<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\">  152</span>    <span class=\"comment\">// XXX: We don&#39;t want to even copy.</span></div>\n+<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\">  153</span>    <span class=\"keywordflow\">if</span> (! table) <span class=\"keywordflow\">return</span> NULL;</div>\n+<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\">  154</span>    <span class=\"keywordflow\">return</span> <span class=\"keyword\">new</span> <a class=\"code hl_class\" href=\"a01065.html\">Far::StencilTable</a>(*table);</div>\n+<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\">  155</span>}</div>\n+</div>\n <div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\">  156</span> </div>\n-<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00933.html#a22604a4489ed5fdedb0ef272de0fa637\">  158</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00933.html#a22604a4489ed5fdedb0ef272de0fa637\">BoundControlPoints</a>(REAL            <span class=\"keyword\">const</span>   controlPoints[],</div>\n-<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\">  159</span>                            <a class=\"code hl_struct\" href=\"a00937.html\">PointDescriptor</a> <span class=\"keyword\">const</span> &amp; controlPointDesc,</div>\n-<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\">  160</span>                            REAL                    minExtent[],</div>\n-<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\">  161</span>                            REAL                    maxExtent[]) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\">  162</span> </div>\n-<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00933.html#a8df5cf06cea51aeb6419fd698651ae3b\">  164</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00933.html#a8df5cf06cea51aeb6419fd698651ae3b\">BoundControlPointsFromMesh</a>(REAL            <span class=\"keyword\">const</span>   meshPoints[],</div>\n-<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\">  165</span>                                    <a class=\"code hl_struct\" href=\"a00937.html\">PointDescriptor</a> <span class=\"keyword\">const</span> &amp; meshPointDesc,</div>\n-<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\">  166</span>                                    REAL                    minExtent[],</div>\n-<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\">  167</span>                                    REAL                    maxExtent[]) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\">  169</span> </div>\n-<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span> </div>\n-<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span> </div>\n-<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00933.html#adff7aaf7aca5ccb158ebc202cb435e33\">  179</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00933.html#adff7aaf7aca5ccb158ebc202cb435e33\">GetNumPatchPoints</a>() <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\">  180</span> </div>\n-<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\">  199</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00933.html#ac11caa08d0e7f7ce63e6f3292b20840a\">PreparePatchPoints</a>(REAL            <span class=\"keyword\">const</span>   meshPoints[],</div>\n-<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\">  200</span>                            <a class=\"code hl_struct\" href=\"a00937.html\">PointDescriptor</a> <span class=\"keyword\">const</span> &amp; meshPointDesc,</div>\n-<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\">  201</span>                            REAL                    patchPoints[],</div>\n-<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\">  202</span>                            <a class=\"code hl_struct\" href=\"a00937.html\">PointDescriptor</a> <span class=\"keyword\">const</span> &amp; patchPointDesc) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\">  203</span> </div>\n-<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\">  213</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00933.html#ad2b27352bb353eeb1f1419c2ad07385e\">ComputePatchPoints</a>(REAL                    patchPoints[],</div>\n-<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\">  214</span>                            <a class=\"code hl_struct\" href=\"a00937.html\">PointDescriptor</a> <span class=\"keyword\">const</span> &amp; patchPointDesc) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\">  216</span> </div>\n-<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\">  218</span> </div>\n-<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\">  225</span> </div>\n-<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\">  227</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00933.html#a1563dc3496644c732d9644a1f7133d0e\">Evaluate</a>(REAL <span class=\"keyword\">const</span> uv[2],</div>\n-<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\">  228</span>                  REAL <span class=\"keyword\">const</span> patchPoints[], <a class=\"code hl_struct\" href=\"a00937.html\">PointDescriptor</a> <span class=\"keyword\">const</span> &amp; pointDesc,</div>\n-<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\">  229</span>                  REAL P[]) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\">  230</span> </div>\n-<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\">  232</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00933.html#a1563dc3496644c732d9644a1f7133d0e\">Evaluate</a>(REAL <span class=\"keyword\">const</span> uv[2],</div>\n-<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\">  233</span>                  REAL <span class=\"keyword\">const</span> patchPoints[], <a class=\"code hl_struct\" href=\"a00937.html\">PointDescriptor</a> <span class=\"keyword\">const</span> &amp; pointDesc,</div>\n-<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\">  234</span>                  REAL P[], REAL Du[], REAL Dv[]) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\">  235</span> </div>\n-<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\">  237</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00933.html#a1563dc3496644c732d9644a1f7133d0e\">Evaluate</a>(REAL <span class=\"keyword\">const</span> uv[2],</div>\n-<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\">  238</span>                  REAL <span class=\"keyword\">const</span> patchPoints[], <a class=\"code hl_struct\" href=\"a00937.html\">PointDescriptor</a> <span class=\"keyword\">const</span> &amp; pointDesc,</div>\n-<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\">  239</span>                  REAL P[], REAL Du[],  REAL Dv[],</div>\n-<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\">  240</span>                  REAL Duu[], REAL Duv[], REAL Dvv[]) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\">  242</span> </div>\n-<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\">  244</span> </div>\n-<div class=\"line\"><a id=\"l00256\" name=\"l00256\"></a><span class=\"lineno\">  256</span> </div>\n-<div class=\"line\"><a id=\"l00258\" name=\"l00258\"></a><span class=\"lineno\">  258</span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00933.html#afc66676db4f0e7834e8b0fa77c7c1b46\">EvaluateStencil</a>(REAL <span class=\"keyword\">const</span> uv[2], REAL sP[]) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00259\" name=\"l00259\"></a><span class=\"lineno\">  259</span> </div>\n-<div class=\"line\"><a id=\"l00261\" name=\"l00261\"></a><span class=\"lineno\">  261</span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00933.html#afc66676db4f0e7834e8b0fa77c7c1b46\">EvaluateStencil</a>(REAL <span class=\"keyword\">const</span> uv[2], REAL sP[],</div>\n-<div class=\"line\"><a id=\"l00262\" name=\"l00262\"></a><span class=\"lineno\">  262</span>                        REAL sDu[], REAL sDv[]) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\">  157</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00158\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html#a4c2520cc1a8a5a03e3f53584629d7318\">  158</a></span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a01081.html\">Far::LimitStencilTable</a> <span class=\"keyword\">const</span> *</div>\n+<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\">  159</span><a class=\"code hl_function\" href=\"a00912.html#a4c2520cc1a8a5a03e3f53584629d7318\">convertToCompatibleStencilTable&lt;Far::LimitStencilTable, Far::LimitStencilTable, void&gt;</a>(</div>\n+<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\">  160</span>    <a class=\"code hl_class\" href=\"a01081.html\">Far::LimitStencilTable</a> <span class=\"keyword\">const</span> *table, <span class=\"keywordtype\">void</span> *  <span class=\"comment\">/*context*/</span>) {</div>\n+<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\">  161</span>    <span class=\"comment\">// no need for conversion</span></div>\n+<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\">  162</span>    <span class=\"comment\">// XXX: We don&#39;t want to even copy.</span></div>\n+<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\">  163</span>    <span class=\"keywordflow\">if</span> (! table) <span class=\"keywordflow\">return</span> NULL;</div>\n+<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\">  164</span>    <span class=\"keywordflow\">return</span> <span class=\"keyword\">new</span> <a class=\"code hl_class\" href=\"a01081.html\">Far::LimitStencilTable</a>(*table);</div>\n+<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\">  165</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\">  166</span> </div>\n+<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\">  167</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00168\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html#ab5753a2b0a0995c8e2259d2c4765f7df\">  168</a></span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a01065.html\">Far::StencilTable</a> <span class=\"keyword\">const</span> *</div>\n+<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\">  169</span><a class=\"code hl_function\" href=\"a00912.html#ab5753a2b0a0995c8e2259d2c4765f7df\">convertToCompatibleStencilTable&lt;Far::StencilTable, Far::StencilTable, ID3D11DeviceContext&gt;</a>(</div>\n+<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\">  170</span>    <a class=\"code hl_class\" href=\"a01065.html\">Far::StencilTable</a> <span class=\"keyword\">const</span> *table, ID3D11DeviceContext *  <span class=\"comment\">/*context*/</span>) {</div>\n+<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span>    <span class=\"comment\">// no need for conversion</span></div>\n+<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\">  172</span>    <span class=\"comment\">// XXX: We don&#39;t want to even copy.</span></div>\n+<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\">  173</span>    <span class=\"keywordflow\">if</span> (! table) <span class=\"keywordflow\">return</span> NULL;</div>\n+<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\">  174</span>    <span class=\"keywordflow\">return</span> <span class=\"keyword\">new</span> <a class=\"code hl_class\" href=\"a01065.html\">Far::StencilTable</a>(*table);</div>\n+<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\">  175</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\">  176</span> </div>\n+<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span><span class=\"comment\">// ---------------------------------------------------------------------------</span></div>\n+<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\">  178</span> </div>\n+<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\">  179</span><span class=\"comment\">// Osd evaluator cache: for the GPU backends require compiled instance</span></div>\n+<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\">  180</span><span class=\"comment\">//   (GLXFB, GLCompute, CL)</span></div>\n+<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\">  181</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\">  182</span><span class=\"comment\">// note: this is just an example usage and client applications are supposed</span></div>\n+<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\">  183</span><span class=\"comment\">//       to implement their own structure for Evaluator instance.</span></div>\n+<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\">  184</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\">  185</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> EVALUATOR&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00186\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01273.html\">  186</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01273.html\">EvaluatorCacheT</a> {</div>\n+<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\">  187</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"foldopen\" id=\"foldopen00188\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01273.html#a922392890afb6e4f8d4d08845244f145\">  188</a></span>    <a class=\"code hl_function\" href=\"a01273.html#a922392890afb6e4f8d4d08845244f145\">~EvaluatorCacheT</a>() {</div>\n+<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\">  189</span>        <span class=\"keywordflow\">for</span>(<span class=\"keyword\">typename</span> Evaluators::iterator it = _evaluators.begin();</div>\n+<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\">  190</span>            it != _evaluators.end(); ++it) {</div>\n+<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\">  191</span>            <span class=\"keyword\">delete</span> it-&gt;evaluator;</div>\n+<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\">  192</span>        }</div>\n+<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\">  193</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\">  194</span> </div>\n+<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\">  195</span>    <span class=\"comment\">// XXX: FIXME, linear search</span></div>\n+<div class=\"foldopen\" id=\"foldopen00196\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01277.html\">  196</a></span>    <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01277.html\">Entry</a> {</div>\n+<div class=\"foldopen\" id=\"foldopen00197\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01277.html#ada6adfb697358377d8da9232690daae2\">  197</a></span>        <a class=\"code hl_function\" href=\"a01277.html#ada6adfb697358377d8da9232690daae2\">Entry</a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDescArg,</div>\n+<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\">  198</span>              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDescArg,</div>\n+<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\">  199</span>              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDescArg,</div>\n+<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\">  200</span>              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDescArg,</div>\n+<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\">  201</span>              EVALUATOR *evalArg) : <a class=\"code hl_variable\" href=\"a01277.html#a5d0b0430c7584408dbcd788f52b80fd4\">srcDesc</a>(srcDescArg), <a class=\"code hl_variable\" href=\"a01277.html#a463eaf3e8922e8aadc9e5eb0998067a9\">dstDesc</a>(dstDescArg),</div>\n+<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\">  202</span>                              <a class=\"code hl_variable\" href=\"a01277.html#a598ff84099694191b9815ad4528750d6\">duDesc</a>(duDescArg), <a class=\"code hl_variable\" href=\"a01277.html#ae8a207538288cc8048fab45cf824dc7e\">dvDesc</a>(dvDescArg),</div>\n+<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\">  203</span>                              <a class=\"code hl_variable\" href=\"a01277.html#a6f1841c958530d57dca2cf8e449623cc\">duuDesc</a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>()),</div>\n+<div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\">  204</span>                              <a class=\"code hl_variable\" href=\"a01277.html#a32b5fd50dc24be2bdd0c0ce3a68c352e\">duvDesc</a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>()),</div>\n+<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\">  205</span>                              <a class=\"code hl_variable\" href=\"a01277.html#a1b564bc13c46807d779bd7e9a74a6e73\">dvvDesc</a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>()),</div>\n+<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\">  206</span>                              <a class=\"code hl_variable\" href=\"a01277.html#a8fdf9373eaeffa18a4674b9316c12d23\">evaluator</a>(evalArg) {}</div>\n+</div>\n+<div class=\"foldopen\" id=\"foldopen00207\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01277.html#a0d596cc177157da972daa1a9911027a8\">  207</a></span>        <a class=\"code hl_function\" href=\"a01277.html#a0d596cc177157da972daa1a9911027a8\">Entry</a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDescArg,</div>\n+<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\">  208</span>              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDescArg,</div>\n+<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\">  209</span>              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDescArg,</div>\n+<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\">  210</span>              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDescArg,</div>\n+<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\">  211</span>              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDescArg,</div>\n+<div class=\"line\"><a id=\"l00212\" name=\"l00212\"></a><span class=\"lineno\">  212</span>              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDescArg,</div>\n+<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\">  213</span>              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDescArg,</div>\n+<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\">  214</span>              EVALUATOR *evalArg) : <a class=\"code hl_variable\" href=\"a01277.html#a5d0b0430c7584408dbcd788f52b80fd4\">srcDesc</a>(srcDescArg), <a class=\"code hl_variable\" href=\"a01277.html#a463eaf3e8922e8aadc9e5eb0998067a9\">dstDesc</a>(dstDescArg),</div>\n+<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\">  215</span>                              <a class=\"code hl_variable\" href=\"a01277.html#a598ff84099694191b9815ad4528750d6\">duDesc</a>(duDescArg), <a class=\"code hl_variable\" href=\"a01277.html#ae8a207538288cc8048fab45cf824dc7e\">dvDesc</a>(dvDescArg),</div>\n+<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\">  216</span>                              <a class=\"code hl_variable\" href=\"a01277.html#a6f1841c958530d57dca2cf8e449623cc\">duuDesc</a>(duuDescArg),</div>\n+<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\">  217</span>                              <a class=\"code hl_variable\" href=\"a01277.html#a32b5fd50dc24be2bdd0c0ce3a68c352e\">duvDesc</a>(duvDescArg),</div>\n+<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\">  218</span>                              <a class=\"code hl_variable\" href=\"a01277.html#a1b564bc13c46807d779bd7e9a74a6e73\">dvvDesc</a>(dvvDescArg),</div>\n+<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\">  219</span>                              <a class=\"code hl_variable\" href=\"a01277.html#a8fdf9373eaeffa18a4674b9316c12d23\">evaluator</a>(evalArg) {}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01277.html#a463eaf3e8922e8aadc9e5eb0998067a9\">  220</a></span>        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <a class=\"code hl_variable\" href=\"a01277.html#a5d0b0430c7584408dbcd788f52b80fd4\">srcDesc</a>, <a class=\"code hl_variable\" href=\"a01277.html#a463eaf3e8922e8aadc9e5eb0998067a9\">dstDesc</a>;</div>\n+<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01277.html#a598ff84099694191b9815ad4528750d6\">  221</a></span>        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <a class=\"code hl_variable\" href=\"a01277.html#a598ff84099694191b9815ad4528750d6\">duDesc</a>, <a class=\"code hl_variable\" href=\"a01277.html#ae8a207538288cc8048fab45cf824dc7e\">dvDesc</a>;</div>\n+<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01277.html#a6f1841c958530d57dca2cf8e449623cc\">  222</a></span>        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <a class=\"code hl_variable\" href=\"a01277.html#a6f1841c958530d57dca2cf8e449623cc\">duuDesc</a>, <a class=\"code hl_variable\" href=\"a01277.html#a32b5fd50dc24be2bdd0c0ce3a68c352e\">duvDesc</a>, <a class=\"code hl_variable\" href=\"a01277.html#a1b564bc13c46807d779bd7e9a74a6e73\">dvvDesc</a>;</div>\n+<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01277.html#a8fdf9373eaeffa18a4674b9316c12d23\">  223</a></span>        EVALUATOR *<a class=\"code hl_variable\" href=\"a01277.html#a8fdf9373eaeffa18a4674b9316c12d23\">evaluator</a>;</div>\n+<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\">  224</span>    };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01273.html#aa3bf448cf35c2b498ee29830343fe2de\">  225</a></span>    <span class=\"keyword\">typedef</span> std::vector&lt;Entry&gt; <a class=\"code hl_typedef\" href=\"a01273.html#aa3bf448cf35c2b498ee29830343fe2de\">Evaluators</a>;</div>\n+<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\">  226</span> </div>\n+<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\">  227</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00228\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01273.html#a7d2e3a44295a45db4d6cf935b53c3cbe\">  228</a></span>    EVALUATOR *<a class=\"code hl_function\" href=\"a01273.html#a7d2e3a44295a45db4d6cf935b53c3cbe\">GetEvaluator</a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\">  229</span>                            <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\">  230</span>                            DEVICE_CONTEXT *deviceContext) {</div>\n+<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\">  231</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01273.html#a7d2e3a44295a45db4d6cf935b53c3cbe\">GetEvaluator</a>(srcDesc, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\">  232</span>                            <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\">  233</span>                            <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\">  234</span>                            <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\">  235</span>                            <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\">  236</span>                            <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\">  237</span>                            deviceContext);</div>\n+<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\">  238</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\">  239</span> </div>\n+<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\">  240</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00241\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01273.html#a323bd60a5b0a37389ea7990836f12e18\">  241</a></span>    EVALUATOR *<a class=\"code hl_function\" href=\"a01273.html#a323bd60a5b0a37389ea7990836f12e18\">GetEvaluator</a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\">  242</span>                            <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\">  243</span>                            <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\">  244</span>                            <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00245\" name=\"l00245\"></a><span class=\"lineno\">  245</span>                            DEVICE_CONTEXT *deviceContext) {</div>\n+<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\">  246</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01273.html#a7d2e3a44295a45db4d6cf935b53c3cbe\">GetEvaluator</a>(srcDesc, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00247\" name=\"l00247\"></a><span class=\"lineno\">  247</span>                            duDesc, dvDesc,</div>\n+<div class=\"line\"><a id=\"l00248\" name=\"l00248\"></a><span class=\"lineno\">  248</span>                            <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l00249\" name=\"l00249\"></a><span class=\"lineno\">  249</span>                            <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l00250\" name=\"l00250\"></a><span class=\"lineno\">  250</span>                            <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l00251\" name=\"l00251\"></a><span class=\"lineno\">  251</span>                            deviceContext);</div>\n+<div class=\"line\"><a id=\"l00252\" name=\"l00252\"></a><span class=\"lineno\">  252</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00253\" name=\"l00253\"></a><span class=\"lineno\">  253</span> </div>\n+<div class=\"line\"><a id=\"l00254\" name=\"l00254\"></a><span class=\"lineno\">  254</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00255\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00255\" name=\"l00255\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01273.html#a6026c1c3d9b42543c0ed159214f99cc2\">  255</a></span>    EVALUATOR *<a class=\"code hl_function\" href=\"a01273.html#a6026c1c3d9b42543c0ed159214f99cc2\">GetEvaluator</a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00256\" name=\"l00256\"></a><span class=\"lineno\">  256</span>                            <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00257\" name=\"l00257\"></a><span class=\"lineno\">  257</span>                            <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00258\" name=\"l00258\"></a><span class=\"lineno\">  258</span>                            <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00259\" name=\"l00259\"></a><span class=\"lineno\">  259</span>                            <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l00260\" name=\"l00260\"></a><span class=\"lineno\">  260</span>                            <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l00261\" name=\"l00261\"></a><span class=\"lineno\">  261</span>                            <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00262\" name=\"l00262\"></a><span class=\"lineno\">  262</span>                            DEVICE_CONTEXT *deviceContext) {</div>\n <div class=\"line\"><a id=\"l00263\" name=\"l00263\"></a><span class=\"lineno\">  263</span> </div>\n-<div class=\"line\"><a id=\"l00265\" name=\"l00265\"></a><span class=\"lineno\">  265</span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00933.html#afc66676db4f0e7834e8b0fa77c7c1b46\">EvaluateStencil</a>(REAL <span class=\"keyword\">const</span> uv[2], REAL sP[],</div>\n-<div class=\"line\"><a id=\"l00266\" name=\"l00266\"></a><span class=\"lineno\">  266</span>                        REAL sDu[],  REAL sDv[],</div>\n-<div class=\"line\"><a id=\"l00267\" name=\"l00267\"></a><span class=\"lineno\">  267</span>                        REAL sDuu[], REAL sDuv[], REAL sDvv[]) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00268\" name=\"l00268\"></a><span class=\"lineno\">  268</span> </div>\n-<div class=\"line\"><a id=\"l00270\" name=\"l00270\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00933.html#a4b5e80eb39b7497712eed0009309cd3c\">  270</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00933.html#a4b5e80eb39b7497712eed0009309cd3c\">ApplyStencil</a>(REAL <span class=\"keyword\">const</span> stencil[],</div>\n-<div class=\"line\"><a id=\"l00271\" name=\"l00271\"></a><span class=\"lineno\">  271</span>                      REAL <span class=\"keyword\">const</span> controlPoints[], <a class=\"code hl_struct\" href=\"a00937.html\">PointDescriptor</a> <span class=\"keyword\">const</span> &amp;,</div>\n-<div class=\"line\"><a id=\"l00272\" name=\"l00272\"></a><span class=\"lineno\">  272</span>                      REAL result[]) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00273\" name=\"l00273\"></a><span class=\"lineno\">  273</span> </div>\n-<div class=\"line\"><a id=\"l00275\" name=\"l00275\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00933.html#a7fa4a5c3bfea7fc2ebda886f9b12eb95\">  275</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00933.html#a7fa4a5c3bfea7fc2ebda886f9b12eb95\">ApplyStencilFromMesh</a>(REAL <span class=\"keyword\">const</span> stencil[],</div>\n-<div class=\"line\"><a id=\"l00276\" name=\"l00276\"></a><span class=\"lineno\">  276</span>                              REAL <span class=\"keyword\">const</span> meshPoints[], <a class=\"code hl_struct\" href=\"a00937.html\">PointDescriptor</a> <span class=\"keyword\">const</span> &amp;,</div>\n-<div class=\"line\"><a id=\"l00277\" name=\"l00277\"></a><span class=\"lineno\">  277</span>                              REAL result[]) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00279\" name=\"l00279\"></a><span class=\"lineno\">  279</span> </div>\n-<div class=\"line\"><a id=\"l00280\" name=\"l00280\"></a><span class=\"lineno\">  280</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00281\" name=\"l00281\"></a><span class=\"lineno\">  281</span>    <span class=\"comment\">//  Internal methods for evaluating derivatives, basis weights and</span></div>\n-<div class=\"line\"><a id=\"l00282\" name=\"l00282\"></a><span class=\"lineno\">  282</span>    <span class=\"comment\">//  stencils for regular, irregular and irregular linear patches:</span></div>\n-<div class=\"line\"><a id=\"l00283\" name=\"l00283\"></a><span class=\"lineno\">  283</span>    <span class=\"keyword\">typedef</span> <a class=\"code hl_class\" href=\"a01353.html\">Vtr::ConstArray&lt;int&gt;</a> <a class=\"code hl_class\" href=\"a01353.html\">IndexArray</a>;</div>\n-<div class=\"line\"><a id=\"l00284\" name=\"l00284\"></a><span class=\"lineno\">  284</span> </div>\n-<div class=\"line\"><a id=\"l00285\" name=\"l00285\"></a><span class=\"lineno\">  285</span>    <span class=\"keywordtype\">void</span> evaluateDerivs(REAL <span class=\"keyword\">const</span> uv[2], REAL <span class=\"keyword\">const</span> patchPoints[],</div>\n-<div class=\"line\"><a id=\"l00286\" name=\"l00286\"></a><span class=\"lineno\">  286</span>                        <a class=\"code hl_struct\" href=\"a00937.html\">PointDescriptor</a> <span class=\"keyword\">const</span> &amp;, REAL * derivs[]) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00287\" name=\"l00287\"></a><span class=\"lineno\">  287</span>    <span class=\"keywordtype\">void</span> evalRegularDerivs(REAL <span class=\"keyword\">const</span> uv[2], REAL <span class=\"keyword\">const</span> patchPoints[],</div>\n-<div class=\"line\"><a id=\"l00288\" name=\"l00288\"></a><span class=\"lineno\">  288</span>                           <a class=\"code hl_struct\" href=\"a00937.html\">PointDescriptor</a> <span class=\"keyword\">const</span> &amp;, REAL * derivs[]) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00289\" name=\"l00289\"></a><span class=\"lineno\">  289</span>    <span class=\"keywordtype\">void</span> evalIrregularDerivs(REAL <span class=\"keyword\">const</span> uv[2], REAL <span class=\"keyword\">const</span> patchPoints[],</div>\n-<div class=\"line\"><a id=\"l00290\" name=\"l00290\"></a><span class=\"lineno\">  290</span>                             <a class=\"code hl_struct\" href=\"a00937.html\">PointDescriptor</a> <span class=\"keyword\">const</span> &amp;, REAL * derivs[]) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00291\" name=\"l00291\"></a><span class=\"lineno\">  291</span>    <span class=\"keywordtype\">void</span> evalMultiLinearDerivs(REAL <span class=\"keyword\">const</span> uv[2], REAL <span class=\"keyword\">const</span> patchPoints[],</div>\n-<div class=\"line\"><a id=\"l00292\" name=\"l00292\"></a><span class=\"lineno\">  292</span>                               <a class=\"code hl_struct\" href=\"a00937.html\">PointDescriptor</a> <span class=\"keyword\">const</span> &amp;, REAL * derivs[]) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00293\" name=\"l00293\"></a><span class=\"lineno\">  293</span> </div>\n-<div class=\"line\"><a id=\"l00294\" name=\"l00294\"></a><span class=\"lineno\">  294</span>    <span class=\"keywordtype\">void</span>       evalRegularBasis(REAL <span class=\"keyword\">const</span> uv[2], REAL * wDeriv[]) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00295\" name=\"l00295\"></a><span class=\"lineno\">  295</span>    <a class=\"code hl_class\" href=\"a01353.html\">IndexArray</a> evalIrregularBasis(REAL <span class=\"keyword\">const</span> uv[2], REAL * wDeriv[]) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00296\" name=\"l00296\"></a><span class=\"lineno\">  296</span>    <span class=\"keywordtype\">int</span>        evalMultiLinearBasis(REAL <span class=\"keyword\">const</span> uv[2], REAL * wDeriv[]) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00297\" name=\"l00297\"></a><span class=\"lineno\">  297</span> </div>\n-<div class=\"line\"><a id=\"l00298\" name=\"l00298\"></a><span class=\"lineno\">  298</span>    <span class=\"keywordtype\">int</span> evaluateStencils(REAL <span class=\"keyword\">const</span> uv[2], REAL * sDeriv[]) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00299\" name=\"l00299\"></a><span class=\"lineno\">  299</span>    <span class=\"keywordtype\">int</span> evalRegularStencils(REAL <span class=\"keyword\">const</span> uv[2], REAL * sDeriv[]) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00300\" name=\"l00300\"></a><span class=\"lineno\">  300</span>    <span class=\"keywordtype\">int</span> evalIrregularStencils(REAL <span class=\"keyword\">const</span> uv[2], REAL * sDeriv[]) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00301\" name=\"l00301\"></a><span class=\"lineno\">  301</span>    <span class=\"keywordtype\">int</span> evalMultiLinearStencils(REAL <span class=\"keyword\">const</span> uv[2], REAL * sDeriv[]) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00302\" name=\"l00302\"></a><span class=\"lineno\">  302</span> </div>\n-<div class=\"line\"><a id=\"l00303\" name=\"l00303\"></a><span class=\"lineno\">  303</span>    <span class=\"comment\">//  Internal methods to compute patch points:</span></div>\n-<div class=\"line\"><a id=\"l00304\" name=\"l00304\"></a><span class=\"lineno\">  304</span>    <span class=\"keywordtype\">void</span> computeLinearPatchPoints(REAL p[], <a class=\"code hl_struct\" href=\"a00937.html\">PointDescriptor</a> <span class=\"keyword\">const</span> &amp;) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00305\" name=\"l00305\"></a><span class=\"lineno\">  305</span>    <span class=\"keywordtype\">void</span> computeIrregularPatchPoints(REAL p[], <a class=\"code hl_struct\" href=\"a00937.html\">PointDescriptor</a> <span class=\"keyword\">const</span> &amp;) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00306\" name=\"l00306\"></a><span class=\"lineno\">  306</span> </div>\n-<div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\">  307</span>    <span class=\"comment\">//  Internal methods specific to regular or irregular patches:</span></div>\n-<div class=\"line\"><a id=\"l00308\" name=\"l00308\"></a><span class=\"lineno\">  308</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> getRegPatchType()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _data.getRegPatchType(); }</div>\n-<div class=\"line\"><a id=\"l00309\" name=\"l00309\"></a><span class=\"lineno\">  309</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> getRegPatchMask()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _data.getRegPatchMask(); }</div>\n-<div class=\"line\"><a id=\"l00310\" name=\"l00310\"></a><span class=\"lineno\">  310</span> </div>\n-<div class=\"line\"><a id=\"l00311\" name=\"l00311\"></a><span class=\"lineno\">  311</span>    internal::IrregularPatchType <span class=\"keyword\">const</span> &amp; getIrregPatch() <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00312\" name=\"l00312\"></a><span class=\"lineno\">  312</span> </div>\n-<div class=\"line\"><a id=\"l00313\" name=\"l00313\"></a><span class=\"lineno\">  313</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00314\" name=\"l00314\"></a><span class=\"lineno\">  314</span>    <span class=\"comment\">//  Access to the set of member variables - provided to the Factory:</span></div>\n-<div class=\"line\"><a id=\"l00315\" name=\"l00315\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00933.html#a3bdc23048cdd1242d0a429413fa89256\">  315</a></span>    <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a00941.html\">SurfaceFactory</a>;</div>\n-<div class=\"line\"><a id=\"l00316\" name=\"l00316\"></a><span class=\"lineno\">  316</span> </div>\n-<div class=\"line\"><a id=\"l00317\" name=\"l00317\"></a><span class=\"lineno\">  317</span>    internal::SurfaceData       &amp; getSurfaceData()       { <span class=\"keywordflow\">return</span> _data; }</div>\n-<div class=\"line\"><a id=\"l00318\" name=\"l00318\"></a><span class=\"lineno\">  318</span>    internal::SurfaceData <span class=\"keyword\">const</span> &amp; getSurfaceData()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _data; }</div>\n-<div class=\"line\"><a id=\"l00319\" name=\"l00319\"></a><span class=\"lineno\">  319</span> </div>\n-<div class=\"line\"><a id=\"l00320\" name=\"l00320\"></a><span class=\"lineno\">  320</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00321\" name=\"l00321\"></a><span class=\"lineno\">  321</span>    <span class=\"comment\">//  All member variables encapsulated in a single class:</span></div>\n-<div class=\"line\"><a id=\"l00322\" name=\"l00322\"></a><span class=\"lineno\">  322</span>    internal::SurfaceData _data;</div>\n-<div class=\"line\"><a id=\"l00323\" name=\"l00323\"></a><span class=\"lineno\">  323</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\">  324</span> </div>\n-<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\">  325</span> </div>\n-<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\">  326</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\">  327</span><span class=\"comment\">//  Simple inline methods composed of other methods:</span></div>\n-<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\">  328</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\">  329</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\">  330</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00331\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00933.html#ad2b27352bb353eeb1f1419c2ad07385e\">  331</a></span><a class=\"code hl_function\" href=\"a00933.html#ad2b27352bb353eeb1f1419c2ad07385e\">Surface&lt;REAL&gt;::ComputePatchPoints</a>(REAL points[],</div>\n-<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\">  332</span>                                  <a class=\"code hl_struct\" href=\"a00937.html\">PointDescriptor</a> <span class=\"keyword\">const</span> &amp; pointDesc)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00333\" name=\"l00333\"></a><span class=\"lineno\">  333</span> </div>\n-<div class=\"line\"><a id=\"l00334\" name=\"l00334\"></a><span class=\"lineno\">  334</span>    <span class=\"keywordflow\">if</span> (!IsRegular()) {</div>\n-<div class=\"line\"><a id=\"l00335\" name=\"l00335\"></a><span class=\"lineno\">  335</span>        <span class=\"keywordflow\">if</span> (IsLinear()) {</div>\n-<div class=\"line\"><a id=\"l00336\" name=\"l00336\"></a><span class=\"lineno\">  336</span>            computeLinearPatchPoints(points, pointDesc);</div>\n-<div class=\"line\"><a id=\"l00337\" name=\"l00337\"></a><span class=\"lineno\">  337</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00338\" name=\"l00338\"></a><span class=\"lineno\">  338</span>            computeIrregularPatchPoints(points, pointDesc);</div>\n-<div class=\"line\"><a id=\"l00339\" name=\"l00339\"></a><span class=\"lineno\">  339</span>        }</div>\n-<div class=\"line\"><a id=\"l00340\" name=\"l00340\"></a><span class=\"lineno\">  340</span>    }</div>\n-<div class=\"line\"><a id=\"l00341\" name=\"l00341\"></a><span class=\"lineno\">  341</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00342\" name=\"l00342\"></a><span class=\"lineno\">  342</span> </div>\n-<div class=\"line\"><a id=\"l00343\" name=\"l00343\"></a><span class=\"lineno\">  343</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00344\" name=\"l00344\"></a><span class=\"lineno\">  344</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00345\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00345\" name=\"l00345\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00933.html#ac11caa08d0e7f7ce63e6f3292b20840a\">  345</a></span><a class=\"code hl_function\" href=\"a00933.html#ac11caa08d0e7f7ce63e6f3292b20840a\">Surface&lt;REAL&gt;::PreparePatchPoints</a>(</div>\n-<div class=\"line\"><a id=\"l00346\" name=\"l00346\"></a><span class=\"lineno\">  346</span>        REAL <span class=\"keyword\">const</span> meshPoints[], <a class=\"code hl_struct\" href=\"a00937.html\">PointDescriptor</a> <span class=\"keyword\">const</span> &amp; meshPointDesc,</div>\n-<div class=\"line\"><a id=\"l00347\" name=\"l00347\"></a><span class=\"lineno\">  347</span>        REAL patchPoints[],  <a class=\"code hl_struct\" href=\"a00937.html\">PointDescriptor</a> <span class=\"keyword\">const</span> &amp; patchPointDesc)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00348\" name=\"l00348\"></a><span class=\"lineno\">  348</span> </div>\n-<div class=\"line\"><a id=\"l00349\" name=\"l00349\"></a><span class=\"lineno\">  349</span>    GatherControlPoints(meshPoints, meshPointDesc, patchPoints, patchPointDesc);</div>\n-<div class=\"line\"><a id=\"l00350\" name=\"l00350\"></a><span class=\"lineno\">  350</span>    ComputePatchPoints(patchPoints, patchPointDesc);</div>\n-<div class=\"line\"><a id=\"l00351\" name=\"l00351\"></a><span class=\"lineno\">  351</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00352\" name=\"l00352\"></a><span class=\"lineno\">  352</span> </div>\n-<div class=\"line\"><a id=\"l00353\" name=\"l00353\"></a><span class=\"lineno\">  353</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00354\" name=\"l00354\"></a><span class=\"lineno\">  354</span><span class=\"comment\">//  Inline invocations of more general methods for derivative overloads:</span></div>\n-<div class=\"line\"><a id=\"l00355\" name=\"l00355\"></a><span class=\"lineno\">  355</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00356\" name=\"l00356\"></a><span class=\"lineno\">  356</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00357\" name=\"l00357\"></a><span class=\"lineno\">  357</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"line\"><a id=\"l00358\" name=\"l00358\"></a><span class=\"lineno\">  358</span><a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;::evaluateDerivs</a>(REAL <span class=\"keyword\">const</span> uv[2],</div>\n-<div class=\"line\"><a id=\"l00359\" name=\"l00359\"></a><span class=\"lineno\">  359</span>                              REAL <span class=\"keyword\">const</span> patchPoints[],</div>\n-<div class=\"line\"><a id=\"l00360\" name=\"l00360\"></a><span class=\"lineno\">  360</span>                              PointDescriptor <span class=\"keyword\">const</span> &amp; pointDesc,</div>\n-<div class=\"line\"><a id=\"l00361\" name=\"l00361\"></a><span class=\"lineno\">  361</span>                              REAL * derivatives[])<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00362\" name=\"l00362\"></a><span class=\"lineno\">  362</span>    <span class=\"keywordflow\">if</span> (IsRegular()) {</div>\n-<div class=\"line\"><a id=\"l00363\" name=\"l00363\"></a><span class=\"lineno\">  363</span>        evalRegularDerivs(uv, patchPoints, pointDesc, derivatives);</div>\n-<div class=\"line\"><a id=\"l00364\" name=\"l00364\"></a><span class=\"lineno\">  364</span>    } <span class=\"keywordflow\">else</span> <span class=\"keywordflow\">if</span> (IsLinear()) {</div>\n-<div class=\"line\"><a id=\"l00365\" name=\"l00365\"></a><span class=\"lineno\">  365</span>        evalMultiLinearDerivs(uv, patchPoints, pointDesc, derivatives);</div>\n-<div class=\"line\"><a id=\"l00366\" name=\"l00366\"></a><span class=\"lineno\">  366</span>    } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00367\" name=\"l00367\"></a><span class=\"lineno\">  367</span>        evalIrregularDerivs(uv, patchPoints, pointDesc, derivatives);</div>\n-<div class=\"line\"><a id=\"l00368\" name=\"l00368\"></a><span class=\"lineno\">  368</span>    }</div>\n-<div class=\"line\"><a id=\"l00369\" name=\"l00369\"></a><span class=\"lineno\">  369</span>}</div>\n-<div class=\"line\"><a id=\"l00370\" name=\"l00370\"></a><span class=\"lineno\">  370</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00371\" name=\"l00371\"></a><span class=\"lineno\">  371</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00372\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00372\" name=\"l00372\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00933.html#a1563dc3496644c732d9644a1f7133d0e\">  372</a></span><a class=\"code hl_function\" href=\"a00933.html#a1563dc3496644c732d9644a1f7133d0e\">Surface&lt;REAL&gt;::Evaluate</a>(REAL <span class=\"keyword\">const</span> uv[2],</div>\n-<div class=\"line\"><a id=\"l00373\" name=\"l00373\"></a><span class=\"lineno\">  373</span>                        REAL <span class=\"keyword\">const</span> patchPoints[],</div>\n-<div class=\"line\"><a id=\"l00374\" name=\"l00374\"></a><span class=\"lineno\">  374</span>                        <a class=\"code hl_struct\" href=\"a00937.html\">PointDescriptor</a> <span class=\"keyword\">const</span> &amp; pointDesc,</div>\n-<div class=\"line\"><a id=\"l00375\" name=\"l00375\"></a><span class=\"lineno\">  375</span>                        REAL P[])<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00376\" name=\"l00376\"></a><span class=\"lineno\">  376</span> </div>\n-<div class=\"line\"><a id=\"l00377\" name=\"l00377\"></a><span class=\"lineno\">  377</span>    REAL * derivatives[6] = { P, 0, 0, 0, 0, 0 };</div>\n-<div class=\"line\"><a id=\"l00378\" name=\"l00378\"></a><span class=\"lineno\">  378</span>    evaluateDerivs(uv, patchPoints, pointDesc, derivatives);</div>\n-<div class=\"line\"><a id=\"l00379\" name=\"l00379\"></a><span class=\"lineno\">  379</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00380\" name=\"l00380\"></a><span class=\"lineno\">  380</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00381\" name=\"l00381\"></a><span class=\"lineno\">  381</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00382\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00382\" name=\"l00382\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00933.html#a13d195e96314a82c23dc716c9500770a\">  382</a></span><a class=\"code hl_function\" href=\"a00933.html#a1563dc3496644c732d9644a1f7133d0e\">Surface&lt;REAL&gt;::Evaluate</a>(REAL <span class=\"keyword\">const</span> uv[2],</div>\n-<div class=\"line\"><a id=\"l00383\" name=\"l00383\"></a><span class=\"lineno\">  383</span>                        REAL <span class=\"keyword\">const</span> patchPoints[],</div>\n-<div class=\"line\"><a id=\"l00384\" name=\"l00384\"></a><span class=\"lineno\">  384</span>                        <a class=\"code hl_struct\" href=\"a00937.html\">PointDescriptor</a> <span class=\"keyword\">const</span> &amp; pointDesc,</div>\n-<div class=\"line\"><a id=\"l00385\" name=\"l00385\"></a><span class=\"lineno\">  385</span>                        REAL P[], REAL Du[], REAL Dv[])<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00264\" name=\"l00264\"></a><span class=\"lineno\">  264</span>        <span class=\"keywordflow\">for</span>(<span class=\"keyword\">typename</span> Evaluators::iterator it = _evaluators.begin();</div>\n+<div class=\"line\"><a id=\"l00265\" name=\"l00265\"></a><span class=\"lineno\">  265</span>            it != _evaluators.end(); ++it) {</div>\n+<div class=\"line\"><a id=\"l00266\" name=\"l00266\"></a><span class=\"lineno\">  266</span>            <span class=\"keywordflow\">if</span> (isEqual(srcDesc, it-&gt;srcDesc) &amp;&amp;</div>\n+<div class=\"line\"><a id=\"l00267\" name=\"l00267\"></a><span class=\"lineno\">  267</span>                isEqual(dstDesc, it-&gt;dstDesc) &amp;&amp;</div>\n+<div class=\"line\"><a id=\"l00268\" name=\"l00268\"></a><span class=\"lineno\">  268</span>                isEqual(duDesc,  it-&gt;duDesc) &amp;&amp;</div>\n+<div class=\"line\"><a id=\"l00269\" name=\"l00269\"></a><span class=\"lineno\">  269</span>                isEqual(dvDesc,  it-&gt;dvDesc) &amp;&amp;</div>\n+<div class=\"line\"><a id=\"l00270\" name=\"l00270\"></a><span class=\"lineno\">  270</span>                isEqual(duuDesc, it-&gt;duuDesc) &amp;&amp;</div>\n+<div class=\"line\"><a id=\"l00271\" name=\"l00271\"></a><span class=\"lineno\">  271</span>                isEqual(duvDesc, it-&gt;duvDesc) &amp;&amp;</div>\n+<div class=\"line\"><a id=\"l00272\" name=\"l00272\"></a><span class=\"lineno\">  272</span>                isEqual(dvvDesc, it-&gt;dvvDesc)) {</div>\n+<div class=\"line\"><a id=\"l00273\" name=\"l00273\"></a><span class=\"lineno\">  273</span>                <span class=\"keywordflow\">return</span> it-&gt;evaluator;</div>\n+<div class=\"line\"><a id=\"l00274\" name=\"l00274\"></a><span class=\"lineno\">  274</span>            }</div>\n+<div class=\"line\"><a id=\"l00275\" name=\"l00275\"></a><span class=\"lineno\">  275</span>        }</div>\n+<div class=\"line\"><a id=\"l00276\" name=\"l00276\"></a><span class=\"lineno\">  276</span>        EVALUATOR *e = EVALUATOR::Create(srcDesc, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00277\" name=\"l00277\"></a><span class=\"lineno\">  277</span>                                         duDesc, dvDesc,</div>\n+<div class=\"line\"><a id=\"l00278\" name=\"l00278\"></a><span class=\"lineno\">  278</span>                                         duuDesc, duvDesc, dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00279\" name=\"l00279\"></a><span class=\"lineno\">  279</span>                                         deviceContext);</div>\n+<div class=\"line\"><a id=\"l00280\" name=\"l00280\"></a><span class=\"lineno\">  280</span>        _evaluators.push_back(<a class=\"code hl_struct\" href=\"a01277.html\">Entry</a>(srcDesc, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00281\" name=\"l00281\"></a><span class=\"lineno\">  281</span>                                    duDesc, dvDesc,</div>\n+<div class=\"line\"><a id=\"l00282\" name=\"l00282\"></a><span class=\"lineno\">  282</span>                                    duuDesc, duvDesc, dvvDesc, e));</div>\n+<div class=\"line\"><a id=\"l00283\" name=\"l00283\"></a><span class=\"lineno\">  283</span>        <span class=\"keywordflow\">return</span> e;</div>\n+<div class=\"line\"><a id=\"l00284\" name=\"l00284\"></a><span class=\"lineno\">  284</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00285\" name=\"l00285\"></a><span class=\"lineno\">  285</span> </div>\n+<div class=\"line\"><a id=\"l00286\" name=\"l00286\"></a><span class=\"lineno\">  286</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00287\" name=\"l00287\"></a><span class=\"lineno\">  287</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> isEqual(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;a,</div>\n+<div class=\"line\"><a id=\"l00288\" name=\"l00288\"></a><span class=\"lineno\">  288</span>                        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;b) {</div>\n+<div class=\"line\"><a id=\"l00289\" name=\"l00289\"></a><span class=\"lineno\">  289</span>        <span class=\"keywordtype\">int</span> offsetA = a.<a class=\"code hl_variable\" href=\"a01141.html#a08f66a6870d87afcd5dc1b60d1019692\">stride</a> ? (a.<a class=\"code hl_variable\" href=\"a01141.html#aed7ea92f45bd273dde380a45ddced592\">offset</a> % a.<a class=\"code hl_variable\" href=\"a01141.html#a08f66a6870d87afcd5dc1b60d1019692\">stride</a>) : 0;</div>\n+<div class=\"line\"><a id=\"l00290\" name=\"l00290\"></a><span class=\"lineno\">  290</span>        <span class=\"keywordtype\">int</span> offsetB = b.<a class=\"code hl_variable\" href=\"a01141.html#a08f66a6870d87afcd5dc1b60d1019692\">stride</a> ? (b.<a class=\"code hl_variable\" href=\"a01141.html#aed7ea92f45bd273dde380a45ddced592\">offset</a> % b.<a class=\"code hl_variable\" href=\"a01141.html#a08f66a6870d87afcd5dc1b60d1019692\">stride</a>) : 0;</div>\n+<div class=\"line\"><a id=\"l00291\" name=\"l00291\"></a><span class=\"lineno\">  291</span> </div>\n+<div class=\"line\"><a id=\"l00292\" name=\"l00292\"></a><span class=\"lineno\">  292</span>        <span class=\"comment\">// Note: XFB kernel needs to be configured with the local offset</span></div>\n+<div class=\"line\"><a id=\"l00293\" name=\"l00293\"></a><span class=\"lineno\">  293</span>        <span class=\"comment\">// of the dstDesc to skip preceding primvars.</span></div>\n+<div class=\"line\"><a id=\"l00294\" name=\"l00294\"></a><span class=\"lineno\">  294</span>        <span class=\"keywordflow\">return</span> (offsetA == offsetB &amp;&amp;</div>\n+<div class=\"line\"><a id=\"l00295\" name=\"l00295\"></a><span class=\"lineno\">  295</span>                a.<a class=\"code hl_variable\" href=\"a01141.html#a9f59b34b1f25fe00023291b678246bcc\">length</a> == b.<a class=\"code hl_variable\" href=\"a01141.html#a9f59b34b1f25fe00023291b678246bcc\">length</a> &amp;&amp;</div>\n+<div class=\"line\"><a id=\"l00296\" name=\"l00296\"></a><span class=\"lineno\">  296</span>                a.<a class=\"code hl_variable\" href=\"a01141.html#a08f66a6870d87afcd5dc1b60d1019692\">stride</a> == b.<a class=\"code hl_variable\" href=\"a01141.html#a08f66a6870d87afcd5dc1b60d1019692\">stride</a>);</div>\n+<div class=\"line\"><a id=\"l00297\" name=\"l00297\"></a><span class=\"lineno\">  297</span>    }</div>\n+<div class=\"line\"><a id=\"l00298\" name=\"l00298\"></a><span class=\"lineno\">  298</span> </div>\n+<div class=\"line\"><a id=\"l00299\" name=\"l00299\"></a><span class=\"lineno\">  299</span>    <a class=\"code hl_typedef\" href=\"a01273.html#aa3bf448cf35c2b498ee29830343fe2de\">Evaluators</a> _evaluators;</div>\n+<div class=\"line\"><a id=\"l00300\" name=\"l00300\"></a><span class=\"lineno\">  300</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00301\" name=\"l00301\"></a><span class=\"lineno\">  301</span> </div>\n+<div class=\"line\"><a id=\"l00303\" name=\"l00303\"></a><span class=\"lineno\">  303</span> </div>\n+<div class=\"line\"><a id=\"l00304\" name=\"l00304\"></a><span class=\"lineno\">  304</span><span class=\"comment\">// template helpers to see if the evaluator is instantiatable or not.</span></div>\n+<div class=\"line\"><a id=\"l00305\" name=\"l00305\"></a><span class=\"lineno\">  305</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> EVALUATOR&gt;</div>\n+<div class=\"line\"><a id=\"l00306\" name=\"l00306\"></a><span class=\"lineno\">  306</span><span class=\"keyword\">struct </span>instantiatable</div>\n+<div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\">  307</span>{</div>\n+<div class=\"line\"><a id=\"l00308\" name=\"l00308\"></a><span class=\"lineno\">  308</span>    <span class=\"keyword\">typedef</span> <span class=\"keywordtype\">char</span> yes[1];</div>\n+<div class=\"line\"><a id=\"l00309\" name=\"l00309\"></a><span class=\"lineno\">  309</span>    <span class=\"keyword\">typedef</span> <span class=\"keywordtype\">char</span> no[2];</div>\n+<div class=\"line\"><a id=\"l00310\" name=\"l00310\"></a><span class=\"lineno\">  310</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> C&gt; <span class=\"keyword\">static</span> yes &amp;chk(<span class=\"keyword\">typename</span> C::Instantiatable *t=0);</div>\n+<div class=\"line\"><a id=\"l00311\" name=\"l00311\"></a><span class=\"lineno\">  311</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> C&gt; <span class=\"keyword\">static</span> no  &amp;chk(...);</div>\n+<div class=\"line\"><a id=\"l00312\" name=\"l00312\"></a><span class=\"lineno\">  312</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <span class=\"keyword\">const</span> value = <span class=\"keyword\">sizeof</span>(chk&lt;EVALUATOR&gt;(0)) == <span class=\"keyword\">sizeof</span>(yes);</div>\n+<div class=\"line\"><a id=\"l00313\" name=\"l00313\"></a><span class=\"lineno\">  313</span>};</div>\n+<div class=\"line\"><a id=\"l00314\" name=\"l00314\"></a><span class=\"lineno\">  314</span><span class=\"keyword\">template</span> &lt;<span class=\"keywordtype\">bool</span> C, <span class=\"keyword\">typename</span> T=<span class=\"keywordtype\">void</span>&gt;</div>\n+<div class=\"line\"><a id=\"l00315\" name=\"l00315\"></a><span class=\"lineno\">  315</span><span class=\"keyword\">struct </span>enable_if { <span class=\"keyword\">typedef</span> T type; };</div>\n+<div class=\"line\"><a id=\"l00316\" name=\"l00316\"></a><span class=\"lineno\">  316</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> T&gt;</div>\n+<div class=\"line\"><a id=\"l00317\" name=\"l00317\"></a><span class=\"lineno\">  317</span><span class=\"keyword\">struct </span>enable_if&lt;false, T&gt; { };</div>\n+<div class=\"line\"><a id=\"l00318\" name=\"l00318\"></a><span class=\"lineno\">  318</span> </div>\n+<div class=\"line\"><a id=\"l00320\" name=\"l00320\"></a><span class=\"lineno\">  320</span> </div>\n+<div class=\"line\"><a id=\"l00321\" name=\"l00321\"></a><span class=\"lineno\">  321</span><span class=\"comment\">// extract a kernel from cache if available</span></div>\n+<div class=\"line\"><a id=\"l00322\" name=\"l00322\"></a><span class=\"lineno\">  322</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> EVALUATOR, <span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n+<div class=\"line\"><a id=\"l00323\" name=\"l00323\"></a><span class=\"lineno\">  323</span><span class=\"keyword\">static</span> EVALUATOR *GetEvaluator(</div>\n+<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\">  324</span>    EvaluatorCacheT&lt;EVALUATOR&gt; *cache,</div>\n+<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\">  325</span>    BufferDescriptor <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\">  326</span>    BufferDescriptor <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\">  327</span>    BufferDescriptor <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\">  328</span>    BufferDescriptor <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\">  329</span>    BufferDescriptor <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\">  330</span>    BufferDescriptor <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\">  331</span>    BufferDescriptor <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\">  332</span>    DEVICE_CONTEXT deviceContext,</div>\n+<div class=\"line\"><a id=\"l00333\" name=\"l00333\"></a><span class=\"lineno\">  333</span>    <span class=\"keyword\">typename</span> enable_if&lt;instantiatable&lt;EVALUATOR&gt;::value, <span class=\"keywordtype\">void</span>&gt;::type*t=0) {</div>\n+<div class=\"line\"><a id=\"l00334\" name=\"l00334\"></a><span class=\"lineno\">  334</span>    (void)t;</div>\n+<div class=\"line\"><a id=\"l00335\" name=\"l00335\"></a><span class=\"lineno\">  335</span>    <span class=\"keywordflow\">if</span> (cache == NULL) <span class=\"keywordflow\">return</span> NULL;</div>\n+<div class=\"line\"><a id=\"l00336\" name=\"l00336\"></a><span class=\"lineno\">  336</span>    <span class=\"keywordflow\">return</span> cache-&gt;GetEvaluator(srcDesc, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00337\" name=\"l00337\"></a><span class=\"lineno\">  337</span>                               duDesc, dvDesc, duuDesc, duvDesc, dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00338\" name=\"l00338\"></a><span class=\"lineno\">  338</span>                               deviceContext);</div>\n+<div class=\"line\"><a id=\"l00339\" name=\"l00339\"></a><span class=\"lineno\">  339</span>}</div>\n+<div class=\"line\"><a id=\"l00340\" name=\"l00340\"></a><span class=\"lineno\">  340</span> </div>\n+<div class=\"line\"><a id=\"l00341\" name=\"l00341\"></a><span class=\"lineno\">  341</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> EVALUATOR, <span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n+<div class=\"line\"><a id=\"l00342\" name=\"l00342\"></a><span class=\"lineno\">  342</span><span class=\"keyword\">static</span> EVALUATOR *GetEvaluator(</div>\n+<div class=\"line\"><a id=\"l00343\" name=\"l00343\"></a><span class=\"lineno\">  343</span>    EvaluatorCacheT&lt;EVALUATOR&gt; *cache,</div>\n+<div class=\"line\"><a id=\"l00344\" name=\"l00344\"></a><span class=\"lineno\">  344</span>    BufferDescriptor <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00345\" name=\"l00345\"></a><span class=\"lineno\">  345</span>    BufferDescriptor <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00346\" name=\"l00346\"></a><span class=\"lineno\">  346</span>    BufferDescriptor <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00347\" name=\"l00347\"></a><span class=\"lineno\">  347</span>    BufferDescriptor <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00348\" name=\"l00348\"></a><span class=\"lineno\">  348</span>    DEVICE_CONTEXT deviceContext,</div>\n+<div class=\"line\"><a id=\"l00349\" name=\"l00349\"></a><span class=\"lineno\">  349</span>    <span class=\"keyword\">typename</span> enable_if&lt;instantiatable&lt;EVALUATOR&gt;::value, <span class=\"keywordtype\">void</span>&gt;::type*t=0) {</div>\n+<div class=\"line\"><a id=\"l00350\" name=\"l00350\"></a><span class=\"lineno\">  350</span>    (void)t;</div>\n+<div class=\"line\"><a id=\"l00351\" name=\"l00351\"></a><span class=\"lineno\">  351</span>    <span class=\"keywordflow\">if</span> (cache == NULL) <span class=\"keywordflow\">return</span> NULL;</div>\n+<div class=\"line\"><a id=\"l00352\" name=\"l00352\"></a><span class=\"lineno\">  352</span>    <span class=\"keywordflow\">return</span> cache-&gt;GetEvaluator(srcDesc, dstDesc, duDesc, dvDesc, deviceContext);</div>\n+<div class=\"line\"><a id=\"l00353\" name=\"l00353\"></a><span class=\"lineno\">  353</span>}</div>\n+<div class=\"line\"><a id=\"l00354\" name=\"l00354\"></a><span class=\"lineno\">  354</span> </div>\n+<div class=\"line\"><a id=\"l00355\" name=\"l00355\"></a><span class=\"lineno\">  355</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> EVALUATOR, <span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n+<div class=\"line\"><a id=\"l00356\" name=\"l00356\"></a><span class=\"lineno\">  356</span><span class=\"keyword\">static</span> EVALUATOR *GetEvaluator(</div>\n+<div class=\"line\"><a id=\"l00357\" name=\"l00357\"></a><span class=\"lineno\">  357</span>    EvaluatorCacheT&lt;EVALUATOR&gt; *cache,</div>\n+<div class=\"line\"><a id=\"l00358\" name=\"l00358\"></a><span class=\"lineno\">  358</span>    BufferDescriptor <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00359\" name=\"l00359\"></a><span class=\"lineno\">  359</span>    BufferDescriptor <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00360\" name=\"l00360\"></a><span class=\"lineno\">  360</span>    DEVICE_CONTEXT deviceContext,</div>\n+<div class=\"line\"><a id=\"l00361\" name=\"l00361\"></a><span class=\"lineno\">  361</span>    <span class=\"keyword\">typename</span> enable_if&lt;instantiatable&lt;EVALUATOR&gt;::value, <span class=\"keywordtype\">void</span>&gt;::type*t=0) {</div>\n+<div class=\"line\"><a id=\"l00362\" name=\"l00362\"></a><span class=\"lineno\">  362</span>    (void)t;</div>\n+<div class=\"line\"><a id=\"l00363\" name=\"l00363\"></a><span class=\"lineno\">  363</span>    <span class=\"keywordflow\">if</span> (cache == NULL) <span class=\"keywordflow\">return</span> NULL;</div>\n+<div class=\"line\"><a id=\"l00364\" name=\"l00364\"></a><span class=\"lineno\">  364</span>    <span class=\"keywordflow\">return</span> cache-&gt;GetEvaluator(srcDesc, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00365\" name=\"l00365\"></a><span class=\"lineno\">  365</span>                               BufferDescriptor(),</div>\n+<div class=\"line\"><a id=\"l00366\" name=\"l00366\"></a><span class=\"lineno\">  366</span>                               BufferDescriptor(),</div>\n+<div class=\"line\"><a id=\"l00367\" name=\"l00367\"></a><span class=\"lineno\">  367</span>                               deviceContext);</div>\n+<div class=\"line\"><a id=\"l00368\" name=\"l00368\"></a><span class=\"lineno\">  368</span>}</div>\n+<div class=\"line\"><a id=\"l00369\" name=\"l00369\"></a><span class=\"lineno\">  369</span> </div>\n+<div class=\"line\"><a id=\"l00370\" name=\"l00370\"></a><span class=\"lineno\">  370</span><span class=\"comment\">// fallback</span></div>\n+<div class=\"line\"><a id=\"l00371\" name=\"l00371\"></a><span class=\"lineno\">  371</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> EVALUATOR, <span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n+<div class=\"line\"><a id=\"l00372\" name=\"l00372\"></a><span class=\"lineno\">  372</span><span class=\"keyword\">static</span> EVALUATOR *GetEvaluator(</div>\n+<div class=\"line\"><a id=\"l00373\" name=\"l00373\"></a><span class=\"lineno\">  373</span>    EvaluatorCacheT&lt;EVALUATOR&gt; *,</div>\n+<div class=\"line\"><a id=\"l00374\" name=\"l00374\"></a><span class=\"lineno\">  374</span>    BufferDescriptor <span class=\"keyword\">const</span> &amp;,</div>\n+<div class=\"line\"><a id=\"l00375\" name=\"l00375\"></a><span class=\"lineno\">  375</span>    BufferDescriptor <span class=\"keyword\">const</span> &amp;,</div>\n+<div class=\"line\"><a id=\"l00376\" name=\"l00376\"></a><span class=\"lineno\">  376</span>    BufferDescriptor <span class=\"keyword\">const</span> &amp;,</div>\n+<div class=\"line\"><a id=\"l00377\" name=\"l00377\"></a><span class=\"lineno\">  377</span>    BufferDescriptor <span class=\"keyword\">const</span> &amp;,</div>\n+<div class=\"line\"><a id=\"l00378\" name=\"l00378\"></a><span class=\"lineno\">  378</span>    BufferDescriptor <span class=\"keyword\">const</span> &amp;,</div>\n+<div class=\"line\"><a id=\"l00379\" name=\"l00379\"></a><span class=\"lineno\">  379</span>    BufferDescriptor <span class=\"keyword\">const</span> &amp;,</div>\n+<div class=\"line\"><a id=\"l00380\" name=\"l00380\"></a><span class=\"lineno\">  380</span>    BufferDescriptor <span class=\"keyword\">const</span> &amp;,</div>\n+<div class=\"line\"><a id=\"l00381\" name=\"l00381\"></a><span class=\"lineno\">  381</span>    DEVICE_CONTEXT,</div>\n+<div class=\"line\"><a id=\"l00382\" name=\"l00382\"></a><span class=\"lineno\">  382</span>    <span class=\"keyword\">typename</span> enable_if&lt;!instantiatable&lt;EVALUATOR&gt;::value, <span class=\"keywordtype\">void</span>&gt;::type*t=0) {</div>\n+<div class=\"line\"><a id=\"l00383\" name=\"l00383\"></a><span class=\"lineno\">  383</span>    (void)t;</div>\n+<div class=\"line\"><a id=\"l00384\" name=\"l00384\"></a><span class=\"lineno\">  384</span>    <span class=\"keywordflow\">return</span> NULL;</div>\n+<div class=\"line\"><a id=\"l00385\" name=\"l00385\"></a><span class=\"lineno\">  385</span>}</div>\n <div class=\"line\"><a id=\"l00386\" name=\"l00386\"></a><span class=\"lineno\">  386</span> </div>\n-<div class=\"line\"><a id=\"l00387\" name=\"l00387\"></a><span class=\"lineno\">  387</span>    REAL * derivatives[6] = { P, Du, Dv, 0, 0, 0 };</div>\n-<div class=\"line\"><a id=\"l00388\" name=\"l00388\"></a><span class=\"lineno\">  388</span>    evaluateDerivs(uv, patchPoints, pointDesc, derivatives);</div>\n-<div class=\"line\"><a id=\"l00389\" name=\"l00389\"></a><span class=\"lineno\">  389</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00390\" name=\"l00390\"></a><span class=\"lineno\">  390</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00391\" name=\"l00391\"></a><span class=\"lineno\">  391</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00392\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00392\" name=\"l00392\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00933.html#a7e06def79a1cb93ef61d58f06b3ccec1\">  392</a></span><a class=\"code hl_function\" href=\"a00933.html#a1563dc3496644c732d9644a1f7133d0e\">Surface&lt;REAL&gt;::Evaluate</a>(REAL <span class=\"keyword\">const</span> uv[2],</div>\n-<div class=\"line\"><a id=\"l00393\" name=\"l00393\"></a><span class=\"lineno\">  393</span>                        REAL <span class=\"keyword\">const</span> patchPoints[],</div>\n-<div class=\"line\"><a id=\"l00394\" name=\"l00394\"></a><span class=\"lineno\">  394</span>                        <a class=\"code hl_struct\" href=\"a00937.html\">PointDescriptor</a> <span class=\"keyword\">const</span> &amp; pointDesc,</div>\n-<div class=\"line\"><a id=\"l00395\" name=\"l00395\"></a><span class=\"lineno\">  395</span>                        REAL P[],   REAL Du[],  REAL Dv[],</div>\n-<div class=\"line\"><a id=\"l00396\" name=\"l00396\"></a><span class=\"lineno\">  396</span>                        REAL Duu[], REAL Duv[], REAL Dvv[])<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00397\" name=\"l00397\"></a><span class=\"lineno\">  397</span> </div>\n-<div class=\"line\"><a id=\"l00398\" name=\"l00398\"></a><span class=\"lineno\">  398</span>    REAL * derivatives[6] = { P, Du, Dv, Duu, Duv, Dvv };</div>\n-<div class=\"line\"><a id=\"l00399\" name=\"l00399\"></a><span class=\"lineno\">  399</span>    evaluateDerivs(uv, patchPoints, pointDesc, derivatives);</div>\n-<div class=\"line\"><a id=\"l00400\" name=\"l00400\"></a><span class=\"lineno\">  400</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00401\" name=\"l00401\"></a><span class=\"lineno\">  401</span> </div>\n-<div class=\"line\"><a id=\"l00402\" name=\"l00402\"></a><span class=\"lineno\">  402</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00403\" name=\"l00403\"></a><span class=\"lineno\">  403</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span></div>\n-<div class=\"line\"><a id=\"l00404\" name=\"l00404\"></a><span class=\"lineno\">  404</span><a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;::evaluateStencils</a>(REAL <span class=\"keyword\">const</span> uv[2], REAL * sDeriv[])<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00405\" name=\"l00405\"></a><span class=\"lineno\">  405</span> </div>\n-<div class=\"line\"><a id=\"l00406\" name=\"l00406\"></a><span class=\"lineno\">  406</span>    <span class=\"keywordflow\">if</span> (IsRegular()) {</div>\n-<div class=\"line\"><a id=\"l00407\" name=\"l00407\"></a><span class=\"lineno\">  407</span>        <span class=\"keywordflow\">return</span> evalRegularStencils(uv, sDeriv);</div>\n-<div class=\"line\"><a id=\"l00408\" name=\"l00408\"></a><span class=\"lineno\">  408</span>    } <span class=\"keywordflow\">else</span> <span class=\"keywordflow\">if</span> (IsLinear()) {</div>\n-<div class=\"line\"><a id=\"l00409\" name=\"l00409\"></a><span class=\"lineno\">  409</span>        <span class=\"keywordflow\">return</span> evalMultiLinearStencils(uv, sDeriv);</div>\n-<div class=\"line\"><a id=\"l00410\" name=\"l00410\"></a><span class=\"lineno\">  410</span>    } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00411\" name=\"l00411\"></a><span class=\"lineno\">  411</span>        <span class=\"keywordflow\">return</span> evalIrregularStencils(uv, sDeriv);</div>\n-<div class=\"line\"><a id=\"l00412\" name=\"l00412\"></a><span class=\"lineno\">  412</span>    }</div>\n-<div class=\"line\"><a id=\"l00413\" name=\"l00413\"></a><span class=\"lineno\">  413</span>}</div>\n-<div class=\"line\"><a id=\"l00414\" name=\"l00414\"></a><span class=\"lineno\">  414</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00415\" name=\"l00415\"></a><span class=\"lineno\">  415</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span></div>\n-<div class=\"foldopen\" id=\"foldopen00416\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00416\" name=\"l00416\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00933.html#afc66676db4f0e7834e8b0fa77c7c1b46\">  416</a></span><a class=\"code hl_function\" href=\"a00933.html#afc66676db4f0e7834e8b0fa77c7c1b46\">Surface&lt;REAL&gt;::EvaluateStencil</a>(REAL <span class=\"keyword\">const</span> uv[2], REAL sP[])<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00417\" name=\"l00417\"></a><span class=\"lineno\">  417</span> </div>\n-<div class=\"line\"><a id=\"l00418\" name=\"l00418\"></a><span class=\"lineno\">  418</span>    REAL * derivativeStencils[6] = { sP, 0, 0, 0, 0, 0 };</div>\n-<div class=\"line\"><a id=\"l00419\" name=\"l00419\"></a><span class=\"lineno\">  419</span>    <span class=\"keywordflow\">return</span> evaluateStencils(uv, derivativeStencils);</div>\n-<div class=\"line\"><a id=\"l00420\" name=\"l00420\"></a><span class=\"lineno\">  420</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00421\" name=\"l00421\"></a><span class=\"lineno\">  421</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00422\" name=\"l00422\"></a><span class=\"lineno\">  422</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span></div>\n-<div class=\"foldopen\" id=\"foldopen00423\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00423\" name=\"l00423\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00933.html#a79f6ee2550666194950187ff62bc4a6d\">  423</a></span><a class=\"code hl_function\" href=\"a00933.html#afc66676db4f0e7834e8b0fa77c7c1b46\">Surface&lt;REAL&gt;::EvaluateStencil</a>(REAL <span class=\"keyword\">const</span> uv[2],</div>\n-<div class=\"line\"><a id=\"l00424\" name=\"l00424\"></a><span class=\"lineno\">  424</span>                          REAL sP[], REAL sDu[], REAL sDv[])<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00425\" name=\"l00425\"></a><span class=\"lineno\">  425</span> </div>\n-<div class=\"line\"><a id=\"l00426\" name=\"l00426\"></a><span class=\"lineno\">  426</span>    REAL * derivativeStencils[6] = { sP, sDu, sDv, 0, 0, 0 };</div>\n-<div class=\"line\"><a id=\"l00427\" name=\"l00427\"></a><span class=\"lineno\">  427</span>    <span class=\"keywordflow\">return</span> evaluateStencils(uv, derivativeStencils);</div>\n-<div class=\"line\"><a id=\"l00428\" name=\"l00428\"></a><span class=\"lineno\">  428</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00429\" name=\"l00429\"></a><span class=\"lineno\">  429</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00430\" name=\"l00430\"></a><span class=\"lineno\">  430</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span></div>\n-<div class=\"foldopen\" id=\"foldopen00431\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00431\" name=\"l00431\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00933.html#a9c615b13fdbe2f618a45a22967267227\">  431</a></span><a class=\"code hl_function\" href=\"a00933.html#afc66676db4f0e7834e8b0fa77c7c1b46\">Surface&lt;REAL&gt;::EvaluateStencil</a>(REAL <span class=\"keyword\">const</span> uv[2],</div>\n-<div class=\"line\"><a id=\"l00432\" name=\"l00432\"></a><span class=\"lineno\">  432</span>                          REAL sP[],   REAL sDu[],  REAL sDv[],</div>\n-<div class=\"line\"><a id=\"l00433\" name=\"l00433\"></a><span class=\"lineno\">  433</span>                          REAL sDuu[], REAL sDuv[], REAL sDvv[])<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00434\" name=\"l00434\"></a><span class=\"lineno\">  434</span> </div>\n-<div class=\"line\"><a id=\"l00435\" name=\"l00435\"></a><span class=\"lineno\">  435</span>    REAL * derivativeStencils[6] = { sP, sDu, sDv, sDuu, sDuv, sDvv };</div>\n-<div class=\"line\"><a id=\"l00436\" name=\"l00436\"></a><span class=\"lineno\">  436</span>    <span class=\"keywordflow\">return</span> evaluateStencils(uv, derivativeStencils);</div>\n-<div class=\"line\"><a id=\"l00437\" name=\"l00437\"></a><span class=\"lineno\">  437</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00438\" name=\"l00438\"></a><span class=\"lineno\">  438</span> </div>\n-<div class=\"line\"><a id=\"l00439\" name=\"l00439\"></a><span class=\"lineno\">  439</span>} <span class=\"comment\">// end namespace Bfr</span></div>\n-<div class=\"line\"><a id=\"l00440\" name=\"l00440\"></a><span class=\"lineno\">  440</span> </div>\n-<div class=\"line\"><a id=\"l00441\" name=\"l00441\"></a><span class=\"lineno\">  441</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00442\" name=\"l00442\"></a><span class=\"lineno\">  442</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00443\" name=\"l00443\"></a><span class=\"lineno\">  443</span> </div>\n-<div class=\"line\"><a id=\"l00444\" name=\"l00444\"></a><span class=\"lineno\">  444</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l00445\" name=\"l00445\"></a><span class=\"lineno\">  445</span> </div>\n-<div class=\"line\"><a id=\"l00446\" name=\"l00446\"></a><span class=\"lineno\">  446</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_BFR_SURFACE */</span><span class=\"preprocessor\"></span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa00921_html\"><div class=\"ttname\"><a href=\"a00921.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization</a></div><div class=\"ttdoc\">Simple class defining the 2D parameterization of a face.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00719_source.html#l00052\">parameterization.h:52</a></div></div>\n-<div class=\"ttc\" id=\"aa00921_html_a181e30653909f9d0e0afa92dd44d28ec\"><div class=\"ttname\"><a href=\"a00921.html#a181e30653909f9d0e0afa92dd44d28ec\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization::GetFaceSize</a></div><div class=\"ttdeci\">int GetFaceSize() const</div><div class=\"ttdoc\">Returns the size (number of vertices) of the corresponding face.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00719_source.html#l00101\">parameterization.h:101</a></div></div>\n-<div class=\"ttc\" id=\"aa00933_html\"><div class=\"ttname\"><a href=\"a00933.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface</a></div><div class=\"ttdoc\">Encapsulates the limit surface for a face of a mesh.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00059\">surface.h:59</a></div></div>\n-<div class=\"ttc\" id=\"aa00933_html_a133ed4fbaddeb2a8036915b14cb21cff\"><div class=\"ttname\"><a href=\"a00933.html#a133ed4fbaddeb2a8036915b14cb21cff\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::GetNumControlPoints</a></div><div class=\"ttdeci\">int GetNumControlPoints() const</div><div class=\"ttdoc\">Return the number of control points affecting the Surface.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00137\">surface.h:137</a></div></div>\n-<div class=\"ttc\" id=\"aa00933_html_a1563dc3496644c732d9644a1f7133d0e\"><div class=\"ttname\"><a href=\"a00933.html#a1563dc3496644c732d9644a1f7133d0e\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::Evaluate</a></div><div class=\"ttdeci\">void Evaluate(REAL const uv[2], REAL const patchPoints[], PointDescriptor const &amp;pointDesc, REAL P[]) const</div><div class=\"ttdoc\">Evaluation of position.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00372\">surface.h:372</a></div></div>\n-<div class=\"ttc\" id=\"aa00933_html_a181e30653909f9d0e0afa92dd44d28ec\"><div class=\"ttname\"><a href=\"a00933.html#a181e30653909f9d0e0afa92dd44d28ec\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::GetFaceSize</a></div><div class=\"ttdeci\">int GetFaceSize() const</div><div class=\"ttdoc\">Return the size of the face.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00109\">surface.h:109</a></div></div>\n-<div class=\"ttc\" id=\"aa00933_html_a193470573424fe6b2e91f317509b5897\"><div class=\"ttname\"><a href=\"a00933.html#a193470573424fe6b2e91f317509b5897\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::IsRegular</a></div><div class=\"ttdeci\">bool IsRegular() const</div><div class=\"ttdoc\">Return if the Surface is a single regular patch.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00112\">surface.h:112</a></div></div>\n-<div class=\"ttc\" id=\"aa00933_html_a22604a4489ed5fdedb0ef272de0fa637\"><div class=\"ttname\"><a href=\"a00933.html#a22604a4489ed5fdedb0ef272de0fa637\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::BoundControlPoints</a></div><div class=\"ttdeci\">void BoundControlPoints(REAL const controlPoints[], PointDescriptor const &amp;controlPointDesc, REAL minExtent[], REAL maxExtent[]) const</div><div class=\"ttdoc\">Compute bounds of control points from a local array.</div></div>\n-<div class=\"ttc\" id=\"aa00933_html_a2666f2fe497e68b29337056deda176a9\"><div class=\"ttname\"><a href=\"a00933.html#a2666f2fe497e68b29337056deda176a9\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::GetControlPointIndices</a></div><div class=\"ttdeci\">int GetControlPointIndices(Index meshPointIndices[]) const</div><div class=\"ttdoc\">Identify indices of control points in the mesh.</div></div>\n-<div class=\"ttc\" id=\"aa00933_html_a4a0e50e01fef3e431767a928c2631cab\"><div class=\"ttname\"><a href=\"a00933.html#a4a0e50e01fef3e431767a928c2631cab\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::Index</a></div><div class=\"ttdeci\">int Index</div><div class=\"ttdoc\">Integer type representing a mesh index.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00072\">surface.h:72</a></div></div>\n-<div class=\"ttc\" id=\"aa00933_html_a4b5e80eb39b7497712eed0009309cd3c\"><div class=\"ttname\"><a href=\"a00933.html#a4b5e80eb39b7497712eed0009309cd3c\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::ApplyStencil</a></div><div class=\"ttdeci\">void ApplyStencil(REAL const stencil[], REAL const controlPoints[], PointDescriptor const &amp;, REAL result[]) const</div><div class=\"ttdoc\">Apply a single stencil to control points from a local array.</div></div>\n-<div class=\"ttc\" id=\"aa00933_html_a66515298a982aab202e1e3e537c7d324\"><div class=\"ttname\"><a href=\"a00933.html#a66515298a982aab202e1e3e537c7d324\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::GetParameterization</a></div><div class=\"ttdeci\">Parameterization GetParameterization() const</div><div class=\"ttdoc\">Return the Parameterization.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00106\">surface.h:106</a></div></div>\n-<div class=\"ttc\" id=\"aa00933_html_a6e1a6ad293d9318f65c2e28c468c66ba\"><div class=\"ttname\"><a href=\"a00933.html#a6e1a6ad293d9318f65c2e28c468c66ba\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::Surface</a></div><div class=\"ttdeci\">Surface()</div><div class=\"ttdoc\">Default construction produces an invalid instance.</div></div>\n-<div class=\"ttc\" id=\"aa00933_html_a7fa4a5c3bfea7fc2ebda886f9b12eb95\"><div class=\"ttname\"><a href=\"a00933.html#a7fa4a5c3bfea7fc2ebda886f9b12eb95\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::ApplyStencilFromMesh</a></div><div class=\"ttdeci\">void ApplyStencilFromMesh(REAL const stencil[], REAL const meshPoints[], PointDescriptor const &amp;, REAL result[]) const</div><div class=\"ttdoc\">Apply a single stencil to control points from the mesh data.</div></div>\n-<div class=\"ttc\" id=\"aa00933_html_a85251d7cc5b0aa5838fa1767b6e31e5d\"><div class=\"ttname\"><a href=\"a00933.html#a85251d7cc5b0aa5838fa1767b6e31e5d\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::operator=</a></div><div class=\"ttdeci\">Surface &amp; operator=(Surface const &amp;src)=default</div></div>\n-<div class=\"ttc\" id=\"aa00933_html_a8df5cf06cea51aeb6419fd698651ae3b\"><div class=\"ttname\"><a href=\"a00933.html#a8df5cf06cea51aeb6419fd698651ae3b\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::BoundControlPointsFromMesh</a></div><div class=\"ttdeci\">void BoundControlPointsFromMesh(REAL const meshPoints[], PointDescriptor const &amp;meshPointDesc, REAL minExtent[], REAL maxExtent[]) const</div><div class=\"ttdoc\">Compute bounds of control points from the mesh data.</div></div>\n-<div class=\"ttc\" id=\"aa00933_html_a9fbe10437e4a7f3c40787283a3ecd560\"><div class=\"ttname\"><a href=\"a00933.html#a9fbe10437e4a7f3c40787283a3ecd560\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::~Surface</a></div><div class=\"ttdeci\">~Surface()=default</div></div>\n-<div class=\"ttc\" id=\"aa00933_html_aa71d36872f416feaa853788a7a7a7ef8\"><div class=\"ttname\"><a href=\"a00933.html#aa71d36872f416feaa853788a7a7a7ef8\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::Clear</a></div><div class=\"ttdeci\">void Clear()</div><div class=\"ttdoc\">Clear a previously initialized Surface.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00089\">surface.h:89</a></div></div>\n-<div class=\"ttc\" id=\"aa00933_html_aa9500016cdd5cf88992541cc263a75c9\"><div class=\"ttname\"><a href=\"a00933.html#aa9500016cdd5cf88992541cc263a75c9\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::Surface</a></div><div class=\"ttdeci\">Surface(Surface const &amp;src)=default</div></div>\n-<div class=\"ttc\" id=\"aa00933_html_ac11caa08d0e7f7ce63e6f3292b20840a\"><div class=\"ttname\"><a href=\"a00933.html#ac11caa08d0e7f7ce63e6f3292b20840a\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::PreparePatchPoints</a></div><div class=\"ttdeci\">void PreparePatchPoints(REAL const meshPoints[], PointDescriptor const &amp;meshPointDesc, REAL patchPoints[], PointDescriptor const &amp;patchPointDesc) const</div><div class=\"ttdoc\">Prepare patch points in a local array for evaluation.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00345\">surface.h:345</a></div></div>\n-<div class=\"ttc\" id=\"aa00933_html_ac532c4b500b1a85ea22217f2c65a70ed\"><div class=\"ttname\"><a href=\"a00933.html#ac532c4b500b1a85ea22217f2c65a70ed\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::IsValid</a></div><div class=\"ttdeci\">bool IsValid() const</div><div class=\"ttdoc\">Return true if successfully initialized.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00086\">surface.h:86</a></div></div>\n-<div class=\"ttc\" id=\"aa00933_html_ad24baa29c6dfff25cd17ee1269ab9f8d\"><div class=\"ttname\"><a href=\"a00933.html#ad24baa29c6dfff25cd17ee1269ab9f8d\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::GatherControlPoints</a></div><div class=\"ttdeci\">void GatherControlPoints(REAL_MESH const meshPoints[], PointDescriptor const &amp;meshPointDesc, REAL controlPoints[], PointDescriptor const &amp;controlPointDesc) const</div><div class=\"ttdoc\">Gather control points in a local array.</div></div>\n-<div class=\"ttc\" id=\"aa00933_html_ad2b27352bb353eeb1f1419c2ad07385e\"><div class=\"ttname\"><a href=\"a00933.html#ad2b27352bb353eeb1f1419c2ad07385e\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::ComputePatchPoints</a></div><div class=\"ttdeci\">void ComputePatchPoints(REAL patchPoints[], PointDescriptor const &amp;patchPointDesc) const</div><div class=\"ttdoc\">Compute all patch points following the control points.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00331\">surface.h:331</a></div></div>\n-<div class=\"ttc\" id=\"aa00933_html_adb6e3801db80be8fef1fd0fa4673b041\"><div class=\"ttname\"><a href=\"a00933.html#adb6e3801db80be8fef1fd0fa4673b041\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::IsLinear</a></div><div class=\"ttdeci\">bool IsLinear() const</div><div class=\"ttdoc\">Return if the Surface is linear.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00115\">surface.h:115</a></div></div>\n-<div class=\"ttc\" id=\"aa00933_html_adff7aaf7aca5ccb158ebc202cb435e33\"><div class=\"ttname\"><a href=\"a00933.html#adff7aaf7aca5ccb158ebc202cb435e33\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::GetNumPatchPoints</a></div><div class=\"ttdeci\">int GetNumPatchPoints() const</div><div class=\"ttdoc\">Return the number of patch points representing the Surface.</div></div>\n-<div class=\"ttc\" id=\"aa00933_html_afc66676db4f0e7834e8b0fa77c7c1b46\"><div class=\"ttname\"><a href=\"a00933.html#afc66676db4f0e7834e8b0fa77c7c1b46\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::EvaluateStencil</a></div><div class=\"ttdeci\">int EvaluateStencil(REAL const uv[2], REAL sP[]) const</div><div class=\"ttdoc\">Evaluation of the limit stencil for position.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00416\">surface.h:416</a></div></div>\n-<div class=\"ttc\" id=\"aa00937_html\"><div class=\"ttname\"><a href=\"a00937.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::PointDescriptor</a></div><div class=\"ttdoc\">Simple struct defining the size and stride of points in arrays.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00063\">surface.h:63</a></div></div>\n-<div class=\"ttc\" id=\"aa00937_html_a08f66a6870d87afcd5dc1b60d1019692\"><div class=\"ttname\"><a href=\"a00937.html#a08f66a6870d87afcd5dc1b60d1019692\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::PointDescriptor::stride</a></div><div class=\"ttdeci\">int stride</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00068\">surface.h:68</a></div></div>\n-<div class=\"ttc\" id=\"aa00937_html_a439227feff9d7f55384e8780cfc2eb82\"><div class=\"ttname\"><a href=\"a00937.html#a439227feff9d7f55384e8780cfc2eb82\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::PointDescriptor::size</a></div><div class=\"ttdeci\">int size</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00068\">surface.h:68</a></div></div>\n-<div class=\"ttc\" id=\"aa00937_html_a69d66788e741236b1176159a1d609189\"><div class=\"ttname\"><a href=\"a00937.html#a69d66788e741236b1176159a1d609189\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::PointDescriptor::PointDescriptor</a></div><div class=\"ttdeci\">PointDescriptor(int n)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00065\">surface.h:65</a></div></div>\n-<div class=\"ttc\" id=\"aa00937_html_a6e6069bdfef867e798fe863f40f4274a\"><div class=\"ttname\"><a href=\"a00937.html#a6e6069bdfef867e798fe863f40f4274a\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::PointDescriptor::PointDescriptor</a></div><div class=\"ttdeci\">PointDescriptor(int n, int m)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00066\">surface.h:66</a></div></div>\n-<div class=\"ttc\" id=\"aa00937_html_ac60ab7fa3966237e2de95cc60defa4de\"><div class=\"ttname\"><a href=\"a00937.html#ac60ab7fa3966237e2de95cc60defa4de\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::PointDescriptor::PointDescriptor</a></div><div class=\"ttdeci\">PointDescriptor()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00064\">surface.h:64</a></div></div>\n-<div class=\"ttc\" id=\"aa00941_html\"><div class=\"ttname\"><a href=\"a00941.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory</a></div><div class=\"ttdoc\">Base class providing initialization of a Surface for each face of a mesh.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00713_source.html#l00103\">surfaceFactory.h:103</a></div></div>\n-<div class=\"ttc\" id=\"aa01353_html\"><div class=\"ttname\"><a href=\"a01353.html\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00683_source.html#l00053\">array.h:53</a></div></div>\n+<div class=\"line\"><a id=\"l00387\" name=\"l00387\"></a><span class=\"lineno\">  387</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> EVALUATOR, <span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n+<div class=\"line\"><a id=\"l00388\" name=\"l00388\"></a><span class=\"lineno\">  388</span><span class=\"keyword\">static</span> EVALUATOR *GetEvaluator(</div>\n+<div class=\"line\"><a id=\"l00389\" name=\"l00389\"></a><span class=\"lineno\">  389</span>    EvaluatorCacheT&lt;EVALUATOR&gt; *,</div>\n+<div class=\"line\"><a id=\"l00390\" name=\"l00390\"></a><span class=\"lineno\">  390</span>    BufferDescriptor <span class=\"keyword\">const</span> &amp;,</div>\n+<div class=\"line\"><a id=\"l00391\" name=\"l00391\"></a><span class=\"lineno\">  391</span>    BufferDescriptor <span class=\"keyword\">const</span> &amp;,</div>\n+<div class=\"line\"><a id=\"l00392\" name=\"l00392\"></a><span class=\"lineno\">  392</span>    BufferDescriptor <span class=\"keyword\">const</span> &amp;,</div>\n+<div class=\"line\"><a id=\"l00393\" name=\"l00393\"></a><span class=\"lineno\">  393</span>    BufferDescriptor <span class=\"keyword\">const</span> &amp;,</div>\n+<div class=\"line\"><a id=\"l00394\" name=\"l00394\"></a><span class=\"lineno\">  394</span>    DEVICE_CONTEXT,</div>\n+<div class=\"line\"><a id=\"l00395\" name=\"l00395\"></a><span class=\"lineno\">  395</span>    <span class=\"keyword\">typename</span> enable_if&lt;!instantiatable&lt;EVALUATOR&gt;::value, <span class=\"keywordtype\">void</span>&gt;::type*t=0) {</div>\n+<div class=\"line\"><a id=\"l00396\" name=\"l00396\"></a><span class=\"lineno\">  396</span>    (void)t;</div>\n+<div class=\"line\"><a id=\"l00397\" name=\"l00397\"></a><span class=\"lineno\">  397</span>    <span class=\"keywordflow\">return</span> NULL;</div>\n+<div class=\"line\"><a id=\"l00398\" name=\"l00398\"></a><span class=\"lineno\">  398</span>}</div>\n+<div class=\"line\"><a id=\"l00399\" name=\"l00399\"></a><span class=\"lineno\">  399</span> </div>\n+<div class=\"line\"><a id=\"l00400\" name=\"l00400\"></a><span class=\"lineno\">  400</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> EVALUATOR, <span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n+<div class=\"line\"><a id=\"l00401\" name=\"l00401\"></a><span class=\"lineno\">  401</span><span class=\"keyword\">static</span> EVALUATOR *GetEvaluator(</div>\n+<div class=\"line\"><a id=\"l00402\" name=\"l00402\"></a><span class=\"lineno\">  402</span>    EvaluatorCacheT&lt;EVALUATOR&gt; *,</div>\n+<div class=\"line\"><a id=\"l00403\" name=\"l00403\"></a><span class=\"lineno\">  403</span>    BufferDescriptor <span class=\"keyword\">const</span> &amp;,</div>\n+<div class=\"line\"><a id=\"l00404\" name=\"l00404\"></a><span class=\"lineno\">  404</span>    BufferDescriptor <span class=\"keyword\">const</span> &amp;,</div>\n+<div class=\"line\"><a id=\"l00405\" name=\"l00405\"></a><span class=\"lineno\">  405</span>    DEVICE_CONTEXT,</div>\n+<div class=\"line\"><a id=\"l00406\" name=\"l00406\"></a><span class=\"lineno\">  406</span>    <span class=\"keyword\">typename</span> enable_if&lt;!instantiatable&lt;EVALUATOR&gt;::value, <span class=\"keywordtype\">void</span>&gt;::type*t=0) {</div>\n+<div class=\"line\"><a id=\"l00407\" name=\"l00407\"></a><span class=\"lineno\">  407</span>    (void)t;</div>\n+<div class=\"line\"><a id=\"l00408\" name=\"l00408\"></a><span class=\"lineno\">  408</span>    <span class=\"keywordflow\">return</span> NULL;</div>\n+<div class=\"line\"><a id=\"l00409\" name=\"l00409\"></a><span class=\"lineno\">  409</span>}</div>\n+<div class=\"line\"><a id=\"l00410\" name=\"l00410\"></a><span class=\"lineno\">  410</span> </div>\n+<div class=\"line\"><a id=\"l00411\" name=\"l00411\"></a><span class=\"lineno\">  411</span><span class=\"comment\">// ---------------------------------------------------------------------------</span></div>\n+<div class=\"line\"><a id=\"l00412\" name=\"l00412\"></a><span class=\"lineno\">  412</span> </div>\n+<div class=\"line\"><a id=\"l00413\" name=\"l00413\"></a><span class=\"lineno\">  413</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> VERTEX_BUFFER,</div>\n+<div class=\"line\"><a id=\"l00414\" name=\"l00414\"></a><span class=\"lineno\">  414</span>          <span class=\"keyword\">typename</span> STENCIL_TABLE,</div>\n+<div class=\"line\"><a id=\"l00415\" name=\"l00415\"></a><span class=\"lineno\">  415</span>          <span class=\"keyword\">typename</span> EVALUATOR,</div>\n+<div class=\"line\"><a id=\"l00416\" name=\"l00416\"></a><span class=\"lineno\">  416</span>          <span class=\"keyword\">typename</span> PATCH_TABLE,</div>\n+<div class=\"line\"><a id=\"l00417\" name=\"l00417\"></a><span class=\"lineno\">  417</span>          <span class=\"keyword\">typename</span> DEVICE_CONTEXT = <span class=\"keywordtype\">void</span>&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00418\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00418\" name=\"l00418\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01281.html\">  418</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01281.html\">Mesh</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"a01269.html\">MeshInterface</a>&lt;PATCH_TABLE&gt; {</div>\n+<div class=\"line\"><a id=\"l00419\" name=\"l00419\"></a><span class=\"lineno\">  419</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00420\" name=\"l00420\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01281.html#a722ca2b35d7001c0eeb6298f2c3704ca\">  420</a></span>    <span class=\"keyword\">typedef</span> VERTEX_BUFFER <a class=\"code hl_typedef\" href=\"a01281.html#a722ca2b35d7001c0eeb6298f2c3704ca\">VertexBuffer</a>;</div>\n+<div class=\"line\"><a id=\"l00421\" name=\"l00421\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01281.html#a5613b23fcbadaf4ffe3dbe87c2d2e773\">  421</a></span>    <span class=\"keyword\">typedef</span> EVALUATOR <a class=\"code hl_typedef\" href=\"a01281.html#a5613b23fcbadaf4ffe3dbe87c2d2e773\">Evaluator</a>;</div>\n+<div class=\"line\"><a id=\"l00422\" name=\"l00422\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01281.html#a6b90e8290c540c78bedd053e2cc42f31\">  422</a></span>    <span class=\"keyword\">typedef</span> STENCIL_TABLE <a class=\"code hl_typedef\" href=\"a01281.html#a6b90e8290c540c78bedd053e2cc42f31\">StencilTable</a>;</div>\n+<div class=\"line\"><a id=\"l00423\" name=\"l00423\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01281.html#adf9352136d44e5999629c6b4530bf4e0\">  423</a></span>    <span class=\"keyword\">typedef</span> PATCH_TABLE <a class=\"code hl_typedef\" href=\"a01281.html#adf9352136d44e5999629c6b4530bf4e0\">PatchTable</a>;</div>\n+<div class=\"line\"><a id=\"l00424\" name=\"l00424\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01281.html#a3e2f358c45731eceb819ae70e7c8ca6e\">  424</a></span>    <span class=\"keyword\">typedef</span> DEVICE_CONTEXT <a class=\"code hl_typedef\" href=\"a01281.html#a3e2f358c45731eceb819ae70e7c8ca6e\">DeviceContext</a>;</div>\n+<div class=\"line\"><a id=\"l00425\" name=\"l00425\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01281.html#a81bf971c4b5d929fc29f37e38b519853\">  425</a></span>    <span class=\"keyword\">typedef</span> <a class=\"code hl_class\" href=\"a01273.html\">EvaluatorCacheT&lt;Evaluator&gt;</a> <a class=\"code hl_typedef\" href=\"a01281.html#a81bf971c4b5d929fc29f37e38b519853\">EvaluatorCache</a>;</div>\n+<div class=\"line\"><a id=\"l00426\" name=\"l00426\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01281.html#a9cf40ecf1b9b5c29507fe92a03f37a3c\">  426</a></span>    <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> PatchTable::VertexBufferBinding <a class=\"code hl_typedef\" href=\"a01281.html#a9cf40ecf1b9b5c29507fe92a03f37a3c\">VertexBufferBinding</a>;</div>\n+<div class=\"line\"><a id=\"l00427\" name=\"l00427\"></a><span class=\"lineno\">  427</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00428\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00428\" name=\"l00428\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01281.html#a69e70d7e23e9bd8bd8eb7b5f0589009f\">  428</a></span>    <a class=\"code hl_function\" href=\"a01281.html#a69e70d7e23e9bd8bd8eb7b5f0589009f\">Mesh</a>(<a class=\"code hl_class\" href=\"a01121.html\">Far::TopologyRefiner</a> * refiner,</div>\n+<div class=\"line\"><a id=\"l00429\" name=\"l00429\"></a><span class=\"lineno\">  429</span>         <span class=\"keywordtype\">int</span> numVertexElements,</div>\n+<div class=\"line\"><a id=\"l00430\" name=\"l00430\"></a><span class=\"lineno\">  430</span>         <span class=\"keywordtype\">int</span> numVaryingElements,</div>\n+<div class=\"line\"><a id=\"l00431\" name=\"l00431\"></a><span class=\"lineno\">  431</span>         <span class=\"keywordtype\">int</span> level,</div>\n+<div class=\"line\"><a id=\"l00432\" name=\"l00432\"></a><span class=\"lineno\">  432</span>         <a class=\"code hl_typedef\" href=\"a00912.html#a85ba9df501aea9af1ec9da1558c255bc\">MeshBitset</a> bits = <a class=\"code hl_typedef\" href=\"a00912.html#a85ba9df501aea9af1ec9da1558c255bc\">MeshBitset</a>(),</div>\n+<div class=\"line\"><a id=\"l00433\" name=\"l00433\"></a><span class=\"lineno\">  433</span>         <a class=\"code hl_class\" href=\"a01273.html\">EvaluatorCache</a> * evaluatorCache = NULL,</div>\n+<div class=\"line\"><a id=\"l00434\" name=\"l00434\"></a><span class=\"lineno\">  434</span>         <a class=\"code hl_typedef\" href=\"a01281.html#a3e2f358c45731eceb819ae70e7c8ca6e\">DeviceContext</a> * deviceContext = NULL) :</div>\n+<div class=\"line\"><a id=\"l00435\" name=\"l00435\"></a><span class=\"lineno\">  435</span> </div>\n+<div class=\"line\"><a id=\"l00436\" name=\"l00436\"></a><span class=\"lineno\">  436</span>            _refiner(refiner),</div>\n+<div class=\"line\"><a id=\"l00437\" name=\"l00437\"></a><span class=\"lineno\">  437</span>            _farPatchTable(NULL),</div>\n+<div class=\"line\"><a id=\"l00438\" name=\"l00438\"></a><span class=\"lineno\">  438</span>            _numVertices(0),</div>\n+<div class=\"line\"><a id=\"l00439\" name=\"l00439\"></a><span class=\"lineno\">  439</span>            _maxValence(0),</div>\n+<div class=\"line\"><a id=\"l00440\" name=\"l00440\"></a><span class=\"lineno\">  440</span>            _vertexBuffer(NULL),</div>\n+<div class=\"line\"><a id=\"l00441\" name=\"l00441\"></a><span class=\"lineno\">  441</span>            _varyingBuffer(NULL),</div>\n+<div class=\"line\"><a id=\"l00442\" name=\"l00442\"></a><span class=\"lineno\">  442</span>            _vertexStencilTable(NULL),</div>\n+<div class=\"line\"><a id=\"l00443\" name=\"l00443\"></a><span class=\"lineno\">  443</span>            _varyingStencilTable(NULL),</div>\n+<div class=\"line\"><a id=\"l00444\" name=\"l00444\"></a><span class=\"lineno\">  444</span>            _evaluatorCache(evaluatorCache),</div>\n+<div class=\"line\"><a id=\"l00445\" name=\"l00445\"></a><span class=\"lineno\">  445</span>            _patchTable(NULL),</div>\n+<div class=\"line\"><a id=\"l00446\" name=\"l00446\"></a><span class=\"lineno\">  446</span>            _deviceContext(deviceContext) {</div>\n+<div class=\"line\"><a id=\"l00447\" name=\"l00447\"></a><span class=\"lineno\">  447</span> </div>\n+<div class=\"line\"><a id=\"l00448\" name=\"l00448\"></a><span class=\"lineno\">  448</span>        assert(_refiner);</div>\n+<div class=\"line\"><a id=\"l00449\" name=\"l00449\"></a><span class=\"lineno\">  449</span> </div>\n+<div class=\"line\"><a id=\"l00450\" name=\"l00450\"></a><span class=\"lineno\">  450</span>        <a class=\"code hl_function\" href=\"a01269.html#a51f237c3f08f6ddc2ea7ba5cb0d00b36\">MeshInterface&lt;PATCH_TABLE&gt;::refineMesh</a>(</div>\n+<div class=\"line\"><a id=\"l00451\" name=\"l00451\"></a><span class=\"lineno\">  451</span>            *_refiner, level, bits);</div>\n+<div class=\"line\"><a id=\"l00452\" name=\"l00452\"></a><span class=\"lineno\">  452</span> </div>\n+<div class=\"line\"><a id=\"l00453\" name=\"l00453\"></a><span class=\"lineno\">  453</span>        <span class=\"keywordtype\">int</span> vertexBufferStride = numVertexElements +</div>\n+<div class=\"line\"><a id=\"l00454\" name=\"l00454\"></a><span class=\"lineno\">  454</span>            (bits.test(<a class=\"code hl_enumvalue\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a9313c644b9b2a998bcb55cfcc4582b1a\">MeshInterleaveVarying</a>) ? numVaryingElements : 0);</div>\n+<div class=\"line\"><a id=\"l00455\" name=\"l00455\"></a><span class=\"lineno\">  455</span>        <span class=\"keywordtype\">int</span> varyingBufferStride =</div>\n+<div class=\"line\"><a id=\"l00456\" name=\"l00456\"></a><span class=\"lineno\">  456</span>            (bits.test(<a class=\"code hl_enumvalue\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a9313c644b9b2a998bcb55cfcc4582b1a\">MeshInterleaveVarying</a>) ? 0 : numVaryingElements);</div>\n+<div class=\"line\"><a id=\"l00457\" name=\"l00457\"></a><span class=\"lineno\">  457</span> </div>\n+<div class=\"line\"><a id=\"l00458\" name=\"l00458\"></a><span class=\"lineno\">  458</span>        initializeContext(numVertexElements,</div>\n+<div class=\"line\"><a id=\"l00459\" name=\"l00459\"></a><span class=\"lineno\">  459</span>                          numVaryingElements,</div>\n+<div class=\"line\"><a id=\"l00460\" name=\"l00460\"></a><span class=\"lineno\">  460</span>                          level, bits);</div>\n+<div class=\"line\"><a id=\"l00461\" name=\"l00461\"></a><span class=\"lineno\">  461</span> </div>\n+<div class=\"line\"><a id=\"l00462\" name=\"l00462\"></a><span class=\"lineno\">  462</span>        initializeVertexBuffers(_numVertices,</div>\n+<div class=\"line\"><a id=\"l00463\" name=\"l00463\"></a><span class=\"lineno\">  463</span>                                vertexBufferStride,</div>\n+<div class=\"line\"><a id=\"l00464\" name=\"l00464\"></a><span class=\"lineno\">  464</span>                                varyingBufferStride);</div>\n+<div class=\"line\"><a id=\"l00465\" name=\"l00465\"></a><span class=\"lineno\">  465</span> </div>\n+<div class=\"line\"><a id=\"l00466\" name=\"l00466\"></a><span class=\"lineno\">  466</span>        <span class=\"comment\">// configure vertex buffer descriptor</span></div>\n+<div class=\"line\"><a id=\"l00467\" name=\"l00467\"></a><span class=\"lineno\">  467</span>        _vertexDesc =</div>\n+<div class=\"line\"><a id=\"l00468\" name=\"l00468\"></a><span class=\"lineno\">  468</span>            <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(0, numVertexElements, vertexBufferStride);</div>\n+<div class=\"line\"><a id=\"l00469\" name=\"l00469\"></a><span class=\"lineno\">  469</span>        <span class=\"keywordflow\">if</span> (bits.test(<a class=\"code hl_enumvalue\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a9313c644b9b2a998bcb55cfcc4582b1a\">MeshInterleaveVarying</a>)) {</div>\n+<div class=\"line\"><a id=\"l00470\" name=\"l00470\"></a><span class=\"lineno\">  470</span>            _varyingDesc = <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(</div>\n+<div class=\"line\"><a id=\"l00471\" name=\"l00471\"></a><span class=\"lineno\">  471</span>                numVertexElements, numVaryingElements, vertexBufferStride);</div>\n+<div class=\"line\"><a id=\"l00472\" name=\"l00472\"></a><span class=\"lineno\">  472</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00473\" name=\"l00473\"></a><span class=\"lineno\">  473</span>            _varyingDesc = <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(</div>\n+<div class=\"line\"><a id=\"l00474\" name=\"l00474\"></a><span class=\"lineno\">  474</span>                0, numVaryingElements, varyingBufferStride);</div>\n+<div class=\"line\"><a id=\"l00475\" name=\"l00475\"></a><span class=\"lineno\">  475</span>        }</div>\n+<div class=\"line\"><a id=\"l00476\" name=\"l00476\"></a><span class=\"lineno\">  476</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00477\" name=\"l00477\"></a><span class=\"lineno\">  477</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00478\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00478\" name=\"l00478\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01281.html#a92162d9c34b218e4c03472f3483e3a78\">  478</a></span>    <span class=\"keyword\">virtual</span> <a class=\"code hl_function\" href=\"a01281.html#a92162d9c34b218e4c03472f3483e3a78\">~Mesh</a>() {</div>\n+<div class=\"line\"><a id=\"l00479\" name=\"l00479\"></a><span class=\"lineno\">  479</span>        <span class=\"keyword\">delete</span> _refiner;</div>\n+<div class=\"line\"><a id=\"l00480\" name=\"l00480\"></a><span class=\"lineno\">  480</span>        <span class=\"keyword\">delete</span> _farPatchTable;</div>\n+<div class=\"line\"><a id=\"l00481\" name=\"l00481\"></a><span class=\"lineno\">  481</span>        <span class=\"keyword\">delete</span> _vertexBuffer;</div>\n+<div class=\"line\"><a id=\"l00482\" name=\"l00482\"></a><span class=\"lineno\">  482</span>        <span class=\"keyword\">delete</span> _varyingBuffer;</div>\n+<div class=\"line\"><a id=\"l00483\" name=\"l00483\"></a><span class=\"lineno\">  483</span>        <span class=\"keyword\">delete</span> _vertexStencilTable;</div>\n+<div class=\"line\"><a id=\"l00484\" name=\"l00484\"></a><span class=\"lineno\">  484</span>        <span class=\"keyword\">delete</span> _varyingStencilTable;</div>\n+<div class=\"line\"><a id=\"l00485\" name=\"l00485\"></a><span class=\"lineno\">  485</span>        <span class=\"keyword\">delete</span> _patchTable;</div>\n+<div class=\"line\"><a id=\"l00486\" name=\"l00486\"></a><span class=\"lineno\">  486</span>        <span class=\"comment\">// deviceContext and evaluatorCache are not owned by this class.</span></div>\n+<div class=\"line\"><a id=\"l00487\" name=\"l00487\"></a><span class=\"lineno\">  487</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00488\" name=\"l00488\"></a><span class=\"lineno\">  488</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00489\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00489\" name=\"l00489\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01281.html#aa12fdb15b7109e56fc98b256a5d1018c\">  489</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01281.html#aa12fdb15b7109e56fc98b256a5d1018c\">UpdateVertexBuffer</a>(<span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> *vertexData,</div>\n+<div class=\"line\"><a id=\"l00490\" name=\"l00490\"></a><span class=\"lineno\">  490</span>                                    <span class=\"keywordtype\">int</span> startVertex, <span class=\"keywordtype\">int</span> numVerts) {</div>\n+<div class=\"line\"><a id=\"l00491\" name=\"l00491\"></a><span class=\"lineno\">  491</span>        _vertexBuffer-&gt;UpdateData(vertexData, startVertex, numVerts,</div>\n+<div class=\"line\"><a id=\"l00492\" name=\"l00492\"></a><span class=\"lineno\">  492</span>                                  _deviceContext);</div>\n+<div class=\"line\"><a id=\"l00493\" name=\"l00493\"></a><span class=\"lineno\">  493</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00494\" name=\"l00494\"></a><span class=\"lineno\">  494</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00495\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00495\" name=\"l00495\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01281.html#a2d7dd4047fcb530d2d5a72b922142517\">  495</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01281.html#a2d7dd4047fcb530d2d5a72b922142517\">UpdateVaryingBuffer</a>(<span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> *varyingData,</div>\n+<div class=\"line\"><a id=\"l00496\" name=\"l00496\"></a><span class=\"lineno\">  496</span>                                     <span class=\"keywordtype\">int</span> startVertex, <span class=\"keywordtype\">int</span> numVerts) {</div>\n+<div class=\"line\"><a id=\"l00497\" name=\"l00497\"></a><span class=\"lineno\">  497</span>        _varyingBuffer-&gt;UpdateData(varyingData, startVertex, numVerts,</div>\n+<div class=\"line\"><a id=\"l00498\" name=\"l00498\"></a><span class=\"lineno\">  498</span>                                   _deviceContext);</div>\n+<div class=\"line\"><a id=\"l00499\" name=\"l00499\"></a><span class=\"lineno\">  499</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00500\" name=\"l00500\"></a><span class=\"lineno\">  500</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00501\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00501\" name=\"l00501\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01281.html#a32c8d641fe9ea1565be646a10c5d6c85\">  501</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01281.html#a32c8d641fe9ea1565be646a10c5d6c85\">Refine</a>() {</div>\n+<div class=\"line\"><a id=\"l00502\" name=\"l00502\"></a><span class=\"lineno\">  502</span> </div>\n+<div class=\"line\"><a id=\"l00503\" name=\"l00503\"></a><span class=\"lineno\">  503</span>        <span class=\"keywordtype\">int</span> numControlVertices = _refiner-&gt;<a class=\"code hl_function\" href=\"a01121.html#adc03a3531bd92ada5669788241e3515f\">GetLevel</a>(0).<a class=\"code hl_function\" href=\"a01113.html#aaf4a32b8a414eff77000c584c2015cb7\">GetNumVertices</a>();</div>\n+<div class=\"line\"><a id=\"l00504\" name=\"l00504\"></a><span class=\"lineno\">  504</span> </div>\n+<div class=\"line\"><a id=\"l00505\" name=\"l00505\"></a><span class=\"lineno\">  505</span>        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> srcDesc = _vertexDesc;</div>\n+<div class=\"line\"><a id=\"l00506\" name=\"l00506\"></a><span class=\"lineno\">  506</span>        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> dstDesc(srcDesc);</div>\n+<div class=\"line\"><a id=\"l00507\" name=\"l00507\"></a><span class=\"lineno\">  507</span>        dstDesc.<a class=\"code hl_variable\" href=\"a01141.html#aed7ea92f45bd273dde380a45ddced592\">offset</a> += numControlVertices * dstDesc.<a class=\"code hl_variable\" href=\"a01141.html#a08f66a6870d87afcd5dc1b60d1019692\">stride</a>;</div>\n+<div class=\"line\"><a id=\"l00508\" name=\"l00508\"></a><span class=\"lineno\">  508</span> </div>\n+<div class=\"line\"><a id=\"l00509\" name=\"l00509\"></a><span class=\"lineno\">  509</span>        <span class=\"comment\">// note that the _evaluatorCache can be NULL and thus</span></div>\n+<div class=\"line\"><a id=\"l00510\" name=\"l00510\"></a><span class=\"lineno\">  510</span>        <span class=\"comment\">// the evaluatorInstance can be NULL</span></div>\n+<div class=\"line\"><a id=\"l00511\" name=\"l00511\"></a><span class=\"lineno\">  511</span>        <span class=\"comment\">//  (for uninstantiatable kernels CPU,TBB etc)</span></div>\n+<div class=\"line\"><a id=\"l00512\" name=\"l00512\"></a><span class=\"lineno\">  512</span>        <a class=\"code hl_typedef\" href=\"a01281.html#a5613b23fcbadaf4ffe3dbe87c2d2e773\">Evaluator</a> <span class=\"keyword\">const</span> *instance = GetEvaluator&lt;Evaluator&gt;(</div>\n+<div class=\"line\"><a id=\"l00513\" name=\"l00513\"></a><span class=\"lineno\">  513</span>            _evaluatorCache, srcDesc, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00514\" name=\"l00514\"></a><span class=\"lineno\">  514</span>            _deviceContext);</div>\n+<div class=\"line\"><a id=\"l00515\" name=\"l00515\"></a><span class=\"lineno\">  515</span> </div>\n+<div class=\"line\"><a id=\"l00516\" name=\"l00516\"></a><span class=\"lineno\">  516</span>        Evaluator::EvalStencils(_vertexBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l00517\" name=\"l00517\"></a><span class=\"lineno\">  517</span>                                _vertexBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00518\" name=\"l00518\"></a><span class=\"lineno\">  518</span>                                _vertexStencilTable,</div>\n+<div class=\"line\"><a id=\"l00519\" name=\"l00519\"></a><span class=\"lineno\">  519</span>                                instance, _deviceContext);</div>\n+<div class=\"line\"><a id=\"l00520\" name=\"l00520\"></a><span class=\"lineno\">  520</span> </div>\n+<div class=\"line\"><a id=\"l00521\" name=\"l00521\"></a><span class=\"lineno\">  521</span>        <span class=\"keywordflow\">if</span> (_varyingDesc.<a class=\"code hl_variable\" href=\"a01141.html#a9f59b34b1f25fe00023291b678246bcc\">length</a> &gt; 0) {</div>\n+<div class=\"line\"><a id=\"l00522\" name=\"l00522\"></a><span class=\"lineno\">  522</span>            <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> vSrcDesc = _varyingDesc;</div>\n+<div class=\"line\"><a id=\"l00523\" name=\"l00523\"></a><span class=\"lineno\">  523</span>            <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> vDstDesc(vSrcDesc);</div>\n+<div class=\"line\"><a id=\"l00524\" name=\"l00524\"></a><span class=\"lineno\">  524</span>            vDstDesc.<a class=\"code hl_variable\" href=\"a01141.html#aed7ea92f45bd273dde380a45ddced592\">offset</a> += numControlVertices * vDstDesc.<a class=\"code hl_variable\" href=\"a01141.html#a08f66a6870d87afcd5dc1b60d1019692\">stride</a>;</div>\n+<div class=\"line\"><a id=\"l00525\" name=\"l00525\"></a><span class=\"lineno\">  525</span> </div>\n+<div class=\"line\"><a id=\"l00526\" name=\"l00526\"></a><span class=\"lineno\">  526</span>            instance = GetEvaluator&lt;Evaluator&gt;(</div>\n+<div class=\"line\"><a id=\"l00527\" name=\"l00527\"></a><span class=\"lineno\">  527</span>                _evaluatorCache, vSrcDesc, vDstDesc,</div>\n+<div class=\"line\"><a id=\"l00528\" name=\"l00528\"></a><span class=\"lineno\">  528</span>                _deviceContext);</div>\n+<div class=\"line\"><a id=\"l00529\" name=\"l00529\"></a><span class=\"lineno\">  529</span> </div>\n+<div class=\"line\"><a id=\"l00530\" name=\"l00530\"></a><span class=\"lineno\">  530</span>            <span class=\"keywordflow\">if</span> (_varyingBuffer) {</div>\n+<div class=\"line\"><a id=\"l00531\" name=\"l00531\"></a><span class=\"lineno\">  531</span>                <span class=\"comment\">// non-interleaved</span></div>\n+<div class=\"line\"><a id=\"l00532\" name=\"l00532\"></a><span class=\"lineno\">  532</span>                Evaluator::EvalStencils(_varyingBuffer, vSrcDesc,</div>\n+<div class=\"line\"><a id=\"l00533\" name=\"l00533\"></a><span class=\"lineno\">  533</span>                                        _varyingBuffer, vDstDesc,</div>\n+<div class=\"line\"><a id=\"l00534\" name=\"l00534\"></a><span class=\"lineno\">  534</span>                                        _varyingStencilTable,</div>\n+<div class=\"line\"><a id=\"l00535\" name=\"l00535\"></a><span class=\"lineno\">  535</span>                                        instance, _deviceContext);</div>\n+<div class=\"line\"><a id=\"l00536\" name=\"l00536\"></a><span class=\"lineno\">  536</span>            } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00537\" name=\"l00537\"></a><span class=\"lineno\">  537</span>                <span class=\"comment\">// interleaved</span></div>\n+<div class=\"line\"><a id=\"l00538\" name=\"l00538\"></a><span class=\"lineno\">  538</span>                Evaluator::EvalStencils(_vertexBuffer, vSrcDesc,</div>\n+<div class=\"line\"><a id=\"l00539\" name=\"l00539\"></a><span class=\"lineno\">  539</span>                                        _vertexBuffer, vDstDesc,</div>\n+<div class=\"line\"><a id=\"l00540\" name=\"l00540\"></a><span class=\"lineno\">  540</span>                                        _varyingStencilTable,</div>\n+<div class=\"line\"><a id=\"l00541\" name=\"l00541\"></a><span class=\"lineno\">  541</span>                                        instance, _deviceContext);</div>\n+<div class=\"line\"><a id=\"l00542\" name=\"l00542\"></a><span class=\"lineno\">  542</span>            }</div>\n+<div class=\"line\"><a id=\"l00543\" name=\"l00543\"></a><span class=\"lineno\">  543</span>        }</div>\n+<div class=\"line\"><a id=\"l00544\" name=\"l00544\"></a><span class=\"lineno\">  544</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00545\" name=\"l00545\"></a><span class=\"lineno\">  545</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00546\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00546\" name=\"l00546\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01281.html#ab945364bf8cadb3d1f8285551d9d49f0\">  546</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01281.html#ab945364bf8cadb3d1f8285551d9d49f0\">Synchronize</a>() {</div>\n+<div class=\"line\"><a id=\"l00547\" name=\"l00547\"></a><span class=\"lineno\">  547</span>        Evaluator::Synchronize(_deviceContext);</div>\n+<div class=\"line\"><a id=\"l00548\" name=\"l00548\"></a><span class=\"lineno\">  548</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00549\" name=\"l00549\"></a><span class=\"lineno\">  549</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00550\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00550\" name=\"l00550\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01281.html#abcd37c29ab31ebecf03405bf4e92f28a\">  550</a></span>    <span class=\"keyword\">virtual</span> <a class=\"code hl_typedef\" href=\"a01281.html#adf9352136d44e5999629c6b4530bf4e0\">PatchTable</a> * <a class=\"code hl_function\" href=\"a01281.html#abcd37c29ab31ebecf03405bf4e92f28a\">GetPatchTable</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00551\" name=\"l00551\"></a><span class=\"lineno\">  551</span>        <span class=\"keywordflow\">return</span> _patchTable;</div>\n+<div class=\"line\"><a id=\"l00552\" name=\"l00552\"></a><span class=\"lineno\">  552</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00553\" name=\"l00553\"></a><span class=\"lineno\">  553</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00554\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00554\" name=\"l00554\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01281.html#ac9e858564a58e758570a257e6db063b8\">  554</a></span>    <span class=\"keyword\">virtual</span> <a class=\"code hl_class\" href=\"a00993.html\">Far::PatchTable</a> <span class=\"keyword\">const</span> *<a class=\"code hl_function\" href=\"a01281.html#ac9e858564a58e758570a257e6db063b8\">GetFarPatchTable</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00555\" name=\"l00555\"></a><span class=\"lineno\">  555</span>        <span class=\"keywordflow\">return</span> _farPatchTable;</div>\n+<div class=\"line\"><a id=\"l00556\" name=\"l00556\"></a><span class=\"lineno\">  556</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00557\" name=\"l00557\"></a><span class=\"lineno\">  557</span> </div>\n+<div class=\"line\"><a id=\"l00558\" name=\"l00558\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01281.html#a65a924e7a9f6038025677e4aa728d9d3\">  558</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01281.html#a65a924e7a9f6038025677e4aa728d9d3\">GetNumVertices</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _numVertices; }</div>\n+<div class=\"line\"><a id=\"l00559\" name=\"l00559\"></a><span class=\"lineno\">  559</span> </div>\n+<div class=\"line\"><a id=\"l00560\" name=\"l00560\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01281.html#affef41596871be7997c1691510d02e3f\">  560</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01281.html#affef41596871be7997c1691510d02e3f\">GetMaxValence</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _maxValence; }</div>\n+<div class=\"line\"><a id=\"l00561\" name=\"l00561\"></a><span class=\"lineno\">  561</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00562\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00562\" name=\"l00562\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01281.html#a6043945695eb4786b2ff1eba1725088a\">  562</a></span>    <span class=\"keyword\">virtual</span> <a class=\"code hl_typedef\" href=\"a01281.html#a9cf40ecf1b9b5c29507fe92a03f37a3c\">VertexBufferBinding</a> <a class=\"code hl_function\" href=\"a01281.html#a6043945695eb4786b2ff1eba1725088a\">BindVertexBuffer</a>() {</div>\n+<div class=\"line\"><a id=\"l00563\" name=\"l00563\"></a><span class=\"lineno\">  563</span>        <span class=\"keywordflow\">return</span> _vertexBuffer-&gt;BindVBO(_deviceContext);</div>\n+<div class=\"line\"><a id=\"l00564\" name=\"l00564\"></a><span class=\"lineno\">  564</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00565\" name=\"l00565\"></a><span class=\"lineno\">  565</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00566\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00566\" name=\"l00566\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01281.html#a914e3cead7ba6e0634b70bcf2957e8f7\">  566</a></span>    <span class=\"keyword\">virtual</span> <a class=\"code hl_typedef\" href=\"a01281.html#a9cf40ecf1b9b5c29507fe92a03f37a3c\">VertexBufferBinding</a> <a class=\"code hl_function\" href=\"a01281.html#a914e3cead7ba6e0634b70bcf2957e8f7\">BindVaryingBuffer</a>() {</div>\n+<div class=\"line\"><a id=\"l00567\" name=\"l00567\"></a><span class=\"lineno\">  567</span>        <span class=\"keywordflow\">return</span> _varyingBuffer-&gt;BindVBO(_deviceContext);</div>\n+<div class=\"line\"><a id=\"l00568\" name=\"l00568\"></a><span class=\"lineno\">  568</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00569\" name=\"l00569\"></a><span class=\"lineno\">  569</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00570\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00570\" name=\"l00570\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01281.html#a1e4d2fe7a4770614b65af59e4a92058a\">  570</a></span>    <span class=\"keyword\">virtual</span> <a class=\"code hl_typedef\" href=\"a01281.html#a722ca2b35d7001c0eeb6298f2c3704ca\">VertexBuffer</a> * <a class=\"code hl_function\" href=\"a01281.html#a1e4d2fe7a4770614b65af59e4a92058a\">GetVertexBuffer</a>() {</div>\n+<div class=\"line\"><a id=\"l00571\" name=\"l00571\"></a><span class=\"lineno\">  571</span>        <span class=\"keywordflow\">return</span> _vertexBuffer;</div>\n+<div class=\"line\"><a id=\"l00572\" name=\"l00572\"></a><span class=\"lineno\">  572</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00573\" name=\"l00573\"></a><span class=\"lineno\">  573</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00574\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00574\" name=\"l00574\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01281.html#a2da98e35e1a94b53d77c7c5d68b44320\">  574</a></span>    <span class=\"keyword\">virtual</span> <a class=\"code hl_typedef\" href=\"a01281.html#a722ca2b35d7001c0eeb6298f2c3704ca\">VertexBuffer</a> * <a class=\"code hl_function\" href=\"a01281.html#a2da98e35e1a94b53d77c7c5d68b44320\">GetVaryingBuffer</a>() {</div>\n+<div class=\"line\"><a id=\"l00575\" name=\"l00575\"></a><span class=\"lineno\">  575</span>        <span class=\"keywordflow\">return</span> _varyingBuffer;</div>\n+<div class=\"line\"><a id=\"l00576\" name=\"l00576\"></a><span class=\"lineno\">  576</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00577\" name=\"l00577\"></a><span class=\"lineno\">  577</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00578\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00578\" name=\"l00578\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01281.html#a060777db09a25a79af64ea17acdc6d4a\">  578</a></span>    <span class=\"keyword\">virtual</span> <a class=\"code hl_class\" href=\"a01121.html\">Far::TopologyRefiner</a> <span class=\"keyword\">const</span> * <a class=\"code hl_function\" href=\"a01281.html#a060777db09a25a79af64ea17acdc6d4a\">GetTopologyRefiner</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00579\" name=\"l00579\"></a><span class=\"lineno\">  579</span>        <span class=\"keywordflow\">return</span> _refiner;</div>\n+<div class=\"line\"><a id=\"l00580\" name=\"l00580\"></a><span class=\"lineno\">  580</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00581\" name=\"l00581\"></a><span class=\"lineno\">  581</span> </div>\n+<div class=\"line\"><a id=\"l00582\" name=\"l00582\"></a><span class=\"lineno\">  582</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00583\" name=\"l00583\"></a><span class=\"lineno\">  583</span>    <span class=\"keywordtype\">void</span> initializeContext(<span class=\"keywordtype\">int</span> numVertexElements,</div>\n+<div class=\"line\"><a id=\"l00584\" name=\"l00584\"></a><span class=\"lineno\">  584</span>                           <span class=\"keywordtype\">int</span> numVaryingElements,</div>\n+<div class=\"line\"><a id=\"l00585\" name=\"l00585\"></a><span class=\"lineno\">  585</span>                           <span class=\"keywordtype\">int</span> level, <a class=\"code hl_typedef\" href=\"a00912.html#a85ba9df501aea9af1ec9da1558c255bc\">MeshBitset</a> bits) {</div>\n+<div class=\"line\"><a id=\"l00586\" name=\"l00586\"></a><span class=\"lineno\">  586</span>        assert(_refiner);</div>\n+<div class=\"line\"><a id=\"l00587\" name=\"l00587\"></a><span class=\"lineno\">  587</span> </div>\n+<div class=\"line\"><a id=\"l00588\" name=\"l00588\"></a><span class=\"lineno\">  588</span>        Far::StencilTableFactory::Options options;</div>\n+<div class=\"line\"><a id=\"l00589\" name=\"l00589\"></a><span class=\"lineno\">  589</span>        options.generateOffsets = <span class=\"keyword\">true</span>;</div>\n+<div class=\"line\"><a id=\"l00590\" name=\"l00590\"></a><span class=\"lineno\">  590</span>        options.generateIntermediateLevels =</div>\n+<div class=\"line\"><a id=\"l00591\" name=\"l00591\"></a><span class=\"lineno\">  591</span>            _refiner-&gt;<a class=\"code hl_function\" href=\"a01121.html#a5dfa6810f510fac1ec621fc9e6b530c4\">IsUniform</a>() ? false : <span class=\"keyword\">true</span>;</div>\n+<div class=\"line\"><a id=\"l00592\" name=\"l00592\"></a><span class=\"lineno\">  592</span> </div>\n+<div class=\"line\"><a id=\"l00593\" name=\"l00593\"></a><span class=\"lineno\">  593</span>        <a class=\"code hl_class\" href=\"a01065.html\">Far::StencilTable</a> <span class=\"keyword\">const</span> * vertexStencils = NULL;</div>\n+<div class=\"line\"><a id=\"l00594\" name=\"l00594\"></a><span class=\"lineno\">  594</span>        <a class=\"code hl_class\" href=\"a01065.html\">Far::StencilTable</a> <span class=\"keyword\">const</span> * varyingStencils = NULL;</div>\n+<div class=\"line\"><a id=\"l00595\" name=\"l00595\"></a><span class=\"lineno\">  595</span> </div>\n+<div class=\"line\"><a id=\"l00596\" name=\"l00596\"></a><span class=\"lineno\">  596</span>        <span class=\"keywordflow\">if</span> (numVertexElements&gt;0) {</div>\n+<div class=\"line\"><a id=\"l00597\" name=\"l00597\"></a><span class=\"lineno\">  597</span> </div>\n+<div class=\"line\"><a id=\"l00598\" name=\"l00598\"></a><span class=\"lineno\">  598</span>            vertexStencils = <a class=\"code hl_function\" href=\"a01097.html#a667e11d1b8502dd1215608af93ada08c\">Far::StencilTableFactory::Create</a>(*_refiner,</div>\n+<div class=\"line\"><a id=\"l00599\" name=\"l00599\"></a><span class=\"lineno\">  599</span>                                                              options);</div>\n+<div class=\"line\"><a id=\"l00600\" name=\"l00600\"></a><span class=\"lineno\">  600</span>        }</div>\n+<div class=\"line\"><a id=\"l00601\" name=\"l00601\"></a><span class=\"lineno\">  601</span> </div>\n+<div class=\"line\"><a id=\"l00602\" name=\"l00602\"></a><span class=\"lineno\">  602</span>        <span class=\"keywordflow\">if</span> (numVaryingElements&gt;0) {</div>\n+<div class=\"line\"><a id=\"l00603\" name=\"l00603\"></a><span class=\"lineno\">  603</span> </div>\n+<div class=\"line\"><a id=\"l00604\" name=\"l00604\"></a><span class=\"lineno\">  604</span>            options.interpolationMode =</div>\n+<div class=\"line\"><a id=\"l00605\" name=\"l00605\"></a><span class=\"lineno\">  605</span>                <a class=\"code hl_enumvalue\" href=\"a01045.html#a46c8a310cf4c094f8c80e1cb8dc1f911ab18c20abfc04611ab0aec5e1c81bb2ab\">Far::StencilTableFactory::INTERPOLATE_VARYING</a>;</div>\n+<div class=\"line\"><a id=\"l00606\" name=\"l00606\"></a><span class=\"lineno\">  606</span> </div>\n+<div class=\"line\"><a id=\"l00607\" name=\"l00607\"></a><span class=\"lineno\">  607</span>            varyingStencils = <a class=\"code hl_function\" href=\"a01097.html#a667e11d1b8502dd1215608af93ada08c\">Far::StencilTableFactory::Create</a>(*_refiner,</div>\n+<div class=\"line\"><a id=\"l00608\" name=\"l00608\"></a><span class=\"lineno\">  608</span>                                                               options);</div>\n+<div class=\"line\"><a id=\"l00609\" name=\"l00609\"></a><span class=\"lineno\">  609</span>        }</div>\n+<div class=\"line\"><a id=\"l00610\" name=\"l00610\"></a><span class=\"lineno\">  610</span> </div>\n+<div class=\"line\"><a id=\"l00611\" name=\"l00611\"></a><span class=\"lineno\">  611</span>        <a class=\"code hl_struct\" href=\"a01021.html\">Far::PatchTableFactory::Options</a> poptions(level);</div>\n+<div class=\"line\"><a id=\"l00612\" name=\"l00612\"></a><span class=\"lineno\">  612</span>        poptions.generateFVarTables = bits.test(<a class=\"code hl_enumvalue\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492ac10e41fef659f3b3a1b730319bdedb45\">MeshFVarData</a>);</div>\n+<div class=\"line\"><a id=\"l00613\" name=\"l00613\"></a><span class=\"lineno\">  613</span>        poptions.generateFVarLegacyLinearPatches = !bits.test(<a class=\"code hl_enumvalue\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a9b8a23ab039e120012bc7c622308d603\">MeshFVarAdaptive</a>);</div>\n+<div class=\"line\"><a id=\"l00614\" name=\"l00614\"></a><span class=\"lineno\">  614</span>        poptions.generateLegacySharpCornerPatches = !bits.test(<a class=\"code hl_enumvalue\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492ab32b8ef595539e14041e2fb0e619e3f9\">MeshUseSmoothCornerPatch</a>);</div>\n+<div class=\"line\"><a id=\"l00615\" name=\"l00615\"></a><span class=\"lineno\">  615</span>        poptions.useSingleCreasePatch = bits.test(<a class=\"code hl_enumvalue\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a9058d69e1089fc77f1974a76c34e2071\">MeshUseSingleCreasePatch</a>);</div>\n+<div class=\"line\"><a id=\"l00616\" name=\"l00616\"></a><span class=\"lineno\">  616</span>        poptions.useInfSharpPatch = bits.test(<a class=\"code hl_enumvalue\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a8fab1b3018f94b5b2432c7435e795925\">MeshUseInfSharpPatch</a>);</div>\n+<div class=\"line\"><a id=\"l00617\" name=\"l00617\"></a><span class=\"lineno\">  617</span> </div>\n+<div class=\"line\"><a id=\"l00618\" name=\"l00618\"></a><span class=\"lineno\">  618</span>        <span class=\"comment\">// points on bilinear and gregory basis endcap boundaries can be</span></div>\n+<div class=\"line\"><a id=\"l00619\" name=\"l00619\"></a><span class=\"lineno\">  619</span>        <span class=\"comment\">// shared among adjacent patches to save some stencils.</span></div>\n+<div class=\"line\"><a id=\"l00620\" name=\"l00620\"></a><span class=\"lineno\">  620</span>        <span class=\"keywordflow\">if</span> (bits.test(<a class=\"code hl_enumvalue\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a4124233e4f787f999c7975afceab34f3\">MeshEndCapBilinearBasis</a>)) {</div>\n+<div class=\"line\"><a id=\"l00621\" name=\"l00621\"></a><span class=\"lineno\">  621</span>            poptions.SetEndCapType(</div>\n+<div class=\"line\"><a id=\"l00622\" name=\"l00622\"></a><span class=\"lineno\">  622</span>                <a class=\"code hl_enumvalue\" href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535a90f0e9a2c992889cefdf1db954f9d98f\">Far::PatchTableFactory::Options::ENDCAP_BILINEAR_BASIS</a>);</div>\n+<div class=\"line\"><a id=\"l00623\" name=\"l00623\"></a><span class=\"lineno\">  623</span>            poptions.shareEndCapPatchPoints = <span class=\"keyword\">true</span>;</div>\n+<div class=\"line\"><a id=\"l00624\" name=\"l00624\"></a><span class=\"lineno\">  624</span>        } <span class=\"keywordflow\">else</span> <span class=\"keywordflow\">if</span> (bits.test(<a class=\"code hl_enumvalue\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492aa2f41b6ba0393698bb3af283283737f7\">MeshEndCapBSplineBasis</a>)) {</div>\n+<div class=\"line\"><a id=\"l00625\" name=\"l00625\"></a><span class=\"lineno\">  625</span>            poptions.SetEndCapType(</div>\n+<div class=\"line\"><a id=\"l00626\" name=\"l00626\"></a><span class=\"lineno\">  626</span>                <a class=\"code hl_enumvalue\" href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535ac3fc1d183b0bdfbc7bf1cce613c4ff04\">Far::PatchTableFactory::Options::ENDCAP_BSPLINE_BASIS</a>);</div>\n+<div class=\"line\"><a id=\"l00627\" name=\"l00627\"></a><span class=\"lineno\">  627</span>        } <span class=\"keywordflow\">else</span> <span class=\"keywordflow\">if</span> (bits.test(<a class=\"code hl_enumvalue\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492aa2878e1a215530f5f6fb89f1e06f91ee\">MeshEndCapGregoryBasis</a>)) {</div>\n+<div class=\"line\"><a id=\"l00628\" name=\"l00628\"></a><span class=\"lineno\">  628</span>            poptions.SetEndCapType(</div>\n+<div class=\"line\"><a id=\"l00629\" name=\"l00629\"></a><span class=\"lineno\">  629</span>                <a class=\"code hl_enumvalue\" href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535a2e89c8e5ac21dbd024ec902de51566b0\">Far::PatchTableFactory::Options::ENDCAP_GREGORY_BASIS</a>);</div>\n+<div class=\"line\"><a id=\"l00630\" name=\"l00630\"></a><span class=\"lineno\">  630</span>            poptions.shareEndCapPatchPoints = <span class=\"keyword\">true</span>;</div>\n+<div class=\"line\"><a id=\"l00631\" name=\"l00631\"></a><span class=\"lineno\">  631</span>        } <span class=\"keywordflow\">else</span> <span class=\"keywordflow\">if</span> (bits.test(<a class=\"code hl_enumvalue\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492aad7b3fb2be609abdbfafaf5b1c834158\">MeshEndCapLegacyGregory</a>)) {</div>\n+<div class=\"line\"><a id=\"l00632\" name=\"l00632\"></a><span class=\"lineno\">  632</span>            poptions.SetEndCapType(</div>\n+<div class=\"line\"><a id=\"l00633\" name=\"l00633\"></a><span class=\"lineno\">  633</span>                <a class=\"code hl_enumvalue\" href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535a0c0d3d9e480d64f20f1b32d599c88aa5\">Far::PatchTableFactory::Options::ENDCAP_LEGACY_GREGORY</a>);</div>\n+<div class=\"line\"><a id=\"l00634\" name=\"l00634\"></a><span class=\"lineno\">  634</span>        }</div>\n+<div class=\"line\"><a id=\"l00635\" name=\"l00635\"></a><span class=\"lineno\">  635</span> </div>\n+<div class=\"line\"><a id=\"l00636\" name=\"l00636\"></a><span class=\"lineno\">  636</span>        _farPatchTable = <a class=\"code hl_function\" href=\"a01017.html#a6ad8881e91652a8fe4d68d18ac16a435\">Far::PatchTableFactory::Create</a>(*_refiner, poptions);</div>\n+<div class=\"line\"><a id=\"l00637\" name=\"l00637\"></a><span class=\"lineno\">  637</span> </div>\n+<div class=\"line\"><a id=\"l00638\" name=\"l00638\"></a><span class=\"lineno\">  638</span>        <span class=\"comment\">// if there&#39;s endcap stencils, merge it into regular stencils.</span></div>\n+<div class=\"line\"><a id=\"l00639\" name=\"l00639\"></a><span class=\"lineno\">  639</span>        <span class=\"keywordflow\">if</span> (_farPatchTable-&gt;<a class=\"code hl_function\" href=\"a00993.html#a1d27edb01bfb68ba50776b25aa437783\">GetLocalPointStencilTable</a>()) {</div>\n+<div class=\"line\"><a id=\"l00640\" name=\"l00640\"></a><span class=\"lineno\">  640</span>            <span class=\"comment\">// append stencils</span></div>\n+<div class=\"line\"><a id=\"l00641\" name=\"l00641\"></a><span class=\"lineno\">  641</span>            <span class=\"keywordflow\">if</span> (Far::StencilTable <span class=\"keyword\">const</span> *vertexStencilsWithLocalPoints =</div>\n+<div class=\"line\"><a id=\"l00642\" name=\"l00642\"></a><span class=\"lineno\">  642</span>                <a class=\"code hl_function\" href=\"a01097.html#ab7374d716e8637a5ffbd12029713ec0f\">Far::StencilTableFactory::AppendLocalPointStencilTable</a>(</div>\n+<div class=\"line\"><a id=\"l00643\" name=\"l00643\"></a><span class=\"lineno\">  643</span>                    *_refiner,</div>\n+<div class=\"line\"><a id=\"l00644\" name=\"l00644\"></a><span class=\"lineno\">  644</span>                    vertexStencils,</div>\n+<div class=\"line\"><a id=\"l00645\" name=\"l00645\"></a><span class=\"lineno\">  645</span>                    _farPatchTable-&gt;<a class=\"code hl_function\" href=\"a00993.html#a1d27edb01bfb68ba50776b25aa437783\">GetLocalPointStencilTable</a>())) {</div>\n+<div class=\"line\"><a id=\"l00646\" name=\"l00646\"></a><span class=\"lineno\">  646</span>                <span class=\"keyword\">delete</span> vertexStencils;</div>\n+<div class=\"line\"><a id=\"l00647\" name=\"l00647\"></a><span class=\"lineno\">  647</span>                vertexStencils = vertexStencilsWithLocalPoints;</div>\n+<div class=\"line\"><a id=\"l00648\" name=\"l00648\"></a><span class=\"lineno\">  648</span>            }</div>\n+<div class=\"line\"><a id=\"l00649\" name=\"l00649\"></a><span class=\"lineno\">  649</span>            <span class=\"keywordflow\">if</span> (varyingStencils) {</div>\n+<div class=\"line\"><a id=\"l00650\" name=\"l00650\"></a><span class=\"lineno\">  650</span>                <span class=\"keywordflow\">if</span> (Far::StencilTable <span class=\"keyword\">const</span> *varyingStencilsWithLocalPoints =</div>\n+<div class=\"line\"><a id=\"l00651\" name=\"l00651\"></a><span class=\"lineno\">  651</span>                    <a class=\"code hl_function\" href=\"a01097.html#ab7374d716e8637a5ffbd12029713ec0f\">Far::StencilTableFactory::AppendLocalPointStencilTable</a>(</div>\n+<div class=\"line\"><a id=\"l00652\" name=\"l00652\"></a><span class=\"lineno\">  652</span>                        *_refiner,</div>\n+<div class=\"line\"><a id=\"l00653\" name=\"l00653\"></a><span class=\"lineno\">  653</span>                        varyingStencils,</div>\n+<div class=\"line\"><a id=\"l00654\" name=\"l00654\"></a><span class=\"lineno\">  654</span>                        _farPatchTable-&gt;<a class=\"code hl_function\" href=\"a00993.html#ad6bafe91da1dcf5b8fb1f7c8cb4ed619\">GetLocalPointVaryingStencilTable</a>())) {</div>\n+<div class=\"line\"><a id=\"l00655\" name=\"l00655\"></a><span class=\"lineno\">  655</span>                    <span class=\"keyword\">delete</span> varyingStencils;</div>\n+<div class=\"line\"><a id=\"l00656\" name=\"l00656\"></a><span class=\"lineno\">  656</span>                    varyingStencils = varyingStencilsWithLocalPoints;</div>\n+<div class=\"line\"><a id=\"l00657\" name=\"l00657\"></a><span class=\"lineno\">  657</span>                }</div>\n+<div class=\"line\"><a id=\"l00658\" name=\"l00658\"></a><span class=\"lineno\">  658</span>            }</div>\n+<div class=\"line\"><a id=\"l00659\" name=\"l00659\"></a><span class=\"lineno\">  659</span>        }</div>\n+<div class=\"line\"><a id=\"l00660\" name=\"l00660\"></a><span class=\"lineno\">  660</span> </div>\n+<div class=\"line\"><a id=\"l00661\" name=\"l00661\"></a><span class=\"lineno\">  661</span>        _maxValence = _farPatchTable-&gt;<a class=\"code hl_function\" href=\"a00993.html#a14bf987459715b918b370247bb24a61c\">GetMaxValence</a>();</div>\n+<div class=\"line\"><a id=\"l00662\" name=\"l00662\"></a><span class=\"lineno\">  662</span>        _patchTable = PatchTable::Create(_farPatchTable, _deviceContext);</div>\n+<div class=\"line\"><a id=\"l00663\" name=\"l00663\"></a><span class=\"lineno\">  663</span> </div>\n+<div class=\"line\"><a id=\"l00664\" name=\"l00664\"></a><span class=\"lineno\">  664</span>        <span class=\"comment\">// numvertices = coarse verts + refined verts + gregory basis verts</span></div>\n+<div class=\"line\"><a id=\"l00665\" name=\"l00665\"></a><span class=\"lineno\">  665</span>        _numVertices = vertexStencils-&gt;<a class=\"code hl_function\" href=\"a01061.html#a02e67ceab8cb5af7982ef2a31a07a2ce\">GetNumControlVertices</a>()</div>\n+<div class=\"line\"><a id=\"l00666\" name=\"l00666\"></a><span class=\"lineno\">  666</span>            + vertexStencils-&gt;<a class=\"code hl_function\" href=\"a01061.html#a65836d2070b943c8fecbad926d074de2\">GetNumStencils</a>();</div>\n+<div class=\"line\"><a id=\"l00667\" name=\"l00667\"></a><span class=\"lineno\">  667</span> </div>\n+<div class=\"line\"><a id=\"l00668\" name=\"l00668\"></a><span class=\"lineno\">  668</span>        <span class=\"comment\">// convert to device stenciltable if necessary.</span></div>\n+<div class=\"line\"><a id=\"l00669\" name=\"l00669\"></a><span class=\"lineno\">  669</span>        _vertexStencilTable =</div>\n+<div class=\"line\"><a id=\"l00670\" name=\"l00670\"></a><span class=\"lineno\">  670</span>            convertToCompatibleStencilTable&lt;StencilTable&gt;(</div>\n+<div class=\"line\"><a id=\"l00671\" name=\"l00671\"></a><span class=\"lineno\">  671</span>            vertexStencils, _deviceContext);</div>\n+<div class=\"line\"><a id=\"l00672\" name=\"l00672\"></a><span class=\"lineno\">  672</span>        _varyingStencilTable =</div>\n+<div class=\"line\"><a id=\"l00673\" name=\"l00673\"></a><span class=\"lineno\">  673</span>            convertToCompatibleStencilTable&lt;StencilTable&gt;(</div>\n+<div class=\"line\"><a id=\"l00674\" name=\"l00674\"></a><span class=\"lineno\">  674</span>            varyingStencils, _deviceContext);</div>\n+<div class=\"line\"><a id=\"l00675\" name=\"l00675\"></a><span class=\"lineno\">  675</span> </div>\n+<div class=\"line\"><a id=\"l00676\" name=\"l00676\"></a><span class=\"lineno\">  676</span>        <span class=\"comment\">// FIXME: we do extra copyings for Far::Stencils.</span></div>\n+<div class=\"line\"><a id=\"l00677\" name=\"l00677\"></a><span class=\"lineno\">  677</span>        <span class=\"keyword\">delete</span> vertexStencils;</div>\n+<div class=\"line\"><a id=\"l00678\" name=\"l00678\"></a><span class=\"lineno\">  678</span>        <span class=\"keyword\">delete</span> varyingStencils;</div>\n+<div class=\"line\"><a id=\"l00679\" name=\"l00679\"></a><span class=\"lineno\">  679</span>    }</div>\n+<div class=\"line\"><a id=\"l00680\" name=\"l00680\"></a><span class=\"lineno\">  680</span> </div>\n+<div class=\"line\"><a id=\"l00681\" name=\"l00681\"></a><span class=\"lineno\">  681</span>    <span class=\"keywordtype\">void</span> initializeVertexBuffers(<span class=\"keywordtype\">int</span> numVertices,</div>\n+<div class=\"line\"><a id=\"l00682\" name=\"l00682\"></a><span class=\"lineno\">  682</span>                                 <span class=\"keywordtype\">int</span> numVertexElements,</div>\n+<div class=\"line\"><a id=\"l00683\" name=\"l00683\"></a><span class=\"lineno\">  683</span>                                 <span class=\"keywordtype\">int</span> numVaryingElements) {</div>\n+<div class=\"line\"><a id=\"l00684\" name=\"l00684\"></a><span class=\"lineno\">  684</span> </div>\n+<div class=\"line\"><a id=\"l00685\" name=\"l00685\"></a><span class=\"lineno\">  685</span>        <span class=\"keywordflow\">if</span> (numVertexElements) {</div>\n+<div class=\"line\"><a id=\"l00686\" name=\"l00686\"></a><span class=\"lineno\">  686</span>            _vertexBuffer = VertexBuffer::Create(numVertexElements,</div>\n+<div class=\"line\"><a id=\"l00687\" name=\"l00687\"></a><span class=\"lineno\">  687</span>                                                 numVertices, _deviceContext);</div>\n+<div class=\"line\"><a id=\"l00688\" name=\"l00688\"></a><span class=\"lineno\">  688</span>        }</div>\n+<div class=\"line\"><a id=\"l00689\" name=\"l00689\"></a><span class=\"lineno\">  689</span> </div>\n+<div class=\"line\"><a id=\"l00690\" name=\"l00690\"></a><span class=\"lineno\">  690</span>        <span class=\"keywordflow\">if</span> (numVaryingElements) {</div>\n+<div class=\"line\"><a id=\"l00691\" name=\"l00691\"></a><span class=\"lineno\">  691</span>            _varyingBuffer = VertexBuffer::Create(numVaryingElements,</div>\n+<div class=\"line\"><a id=\"l00692\" name=\"l00692\"></a><span class=\"lineno\">  692</span>                                                  numVertices, _deviceContext);</div>\n+<div class=\"line\"><a id=\"l00693\" name=\"l00693\"></a><span class=\"lineno\">  693</span>        }</div>\n+<div class=\"line\"><a id=\"l00694\" name=\"l00694\"></a><span class=\"lineno\">  694</span>    }</div>\n+<div class=\"line\"><a id=\"l00695\" name=\"l00695\"></a><span class=\"lineno\">  695</span> </div>\n+<div class=\"line\"><a id=\"l00696\" name=\"l00696\"></a><span class=\"lineno\">  696</span>    Far::TopologyRefiner * _refiner;</div>\n+<div class=\"line\"><a id=\"l00697\" name=\"l00697\"></a><span class=\"lineno\">  697</span>    Far::PatchTable * _farPatchTable;</div>\n+<div class=\"line\"><a id=\"l00698\" name=\"l00698\"></a><span class=\"lineno\">  698</span> </div>\n+<div class=\"line\"><a id=\"l00699\" name=\"l00699\"></a><span class=\"lineno\">  699</span>    <span class=\"keywordtype\">int</span> _numVertices;</div>\n+<div class=\"line\"><a id=\"l00700\" name=\"l00700\"></a><span class=\"lineno\">  700</span>    <span class=\"keywordtype\">int</span> _maxValence;</div>\n+<div class=\"line\"><a id=\"l00701\" name=\"l00701\"></a><span class=\"lineno\">  701</span> </div>\n+<div class=\"line\"><a id=\"l00702\" name=\"l00702\"></a><span class=\"lineno\">  702</span>    <a class=\"code hl_typedef\" href=\"a01281.html#a722ca2b35d7001c0eeb6298f2c3704ca\">VertexBuffer</a> * _vertexBuffer;</div>\n+<div class=\"line\"><a id=\"l00703\" name=\"l00703\"></a><span class=\"lineno\">  703</span>    <a class=\"code hl_typedef\" href=\"a01281.html#a722ca2b35d7001c0eeb6298f2c3704ca\">VertexBuffer</a> * _varyingBuffer;</div>\n+<div class=\"line\"><a id=\"l00704\" name=\"l00704\"></a><span class=\"lineno\">  704</span> </div>\n+<div class=\"line\"><a id=\"l00705\" name=\"l00705\"></a><span class=\"lineno\">  705</span>    BufferDescriptor _vertexDesc;</div>\n+<div class=\"line\"><a id=\"l00706\" name=\"l00706\"></a><span class=\"lineno\">  706</span>    BufferDescriptor _varyingDesc;</div>\n+<div class=\"line\"><a id=\"l00707\" name=\"l00707\"></a><span class=\"lineno\">  707</span> </div>\n+<div class=\"line\"><a id=\"l00708\" name=\"l00708\"></a><span class=\"lineno\">  708</span>    <a class=\"code hl_typedef\" href=\"a01281.html#a6b90e8290c540c78bedd053e2cc42f31\">StencilTable</a> <span class=\"keyword\">const</span> * _vertexStencilTable;</div>\n+<div class=\"line\"><a id=\"l00709\" name=\"l00709\"></a><span class=\"lineno\">  709</span>    <a class=\"code hl_typedef\" href=\"a01281.html#a6b90e8290c540c78bedd053e2cc42f31\">StencilTable</a> <span class=\"keyword\">const</span> * _varyingStencilTable;</div>\n+<div class=\"line\"><a id=\"l00710\" name=\"l00710\"></a><span class=\"lineno\">  710</span>    <a class=\"code hl_typedef\" href=\"a01281.html#a81bf971c4b5d929fc29f37e38b519853\">EvaluatorCache</a> * _evaluatorCache;</div>\n+<div class=\"line\"><a id=\"l00711\" name=\"l00711\"></a><span class=\"lineno\">  711</span> </div>\n+<div class=\"line\"><a id=\"l00712\" name=\"l00712\"></a><span class=\"lineno\">  712</span>    <a class=\"code hl_typedef\" href=\"a01281.html#adf9352136d44e5999629c6b4530bf4e0\">PatchTable</a> *_patchTable;</div>\n+<div class=\"line\"><a id=\"l00713\" name=\"l00713\"></a><span class=\"lineno\">  713</span>    <a class=\"code hl_typedef\" href=\"a01281.html#a3e2f358c45731eceb819ae70e7c8ca6e\">DeviceContext</a> *_deviceContext;</div>\n+<div class=\"line\"><a id=\"l00714\" name=\"l00714\"></a><span class=\"lineno\">  714</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00715\" name=\"l00715\"></a><span class=\"lineno\">  715</span> </div>\n+<div class=\"line\"><a id=\"l00716\" name=\"l00716\"></a><span class=\"lineno\">  716</span>} <span class=\"comment\">// end namespace Osd</span></div>\n+<div class=\"line\"><a id=\"l00717\" name=\"l00717\"></a><span class=\"lineno\">  717</span> </div>\n+<div class=\"line\"><a id=\"l00718\" name=\"l00718\"></a><span class=\"lineno\">  718</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00719\" name=\"l00719\"></a><span class=\"lineno\">  719</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00720\" name=\"l00720\"></a><span class=\"lineno\">  720</span> </div>\n+<div class=\"line\"><a id=\"l00721\" name=\"l00721\"></a><span class=\"lineno\">  721</span>}  <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l00722\" name=\"l00722\"></a><span class=\"lineno\">  722</span> </div>\n+<div class=\"line\"><a id=\"l00723\" name=\"l00723\"></a><span class=\"lineno\">  723</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_MESH_H</span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa00912_html_a06ceddf21c024b341a5b946049cd701a\"><div class=\"ttname\"><a href=\"a00912.html#a06ceddf21c024b341a5b946049cd701a\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::convertToCompatibleStencilTable</a></div><div class=\"ttdeci\">STENCIL_TABLE const * convertToCompatibleStencilTable(SRC_STENCIL_TABLE const *table, DEVICE_CONTEXT *context)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00141\">mesh.h:141</a></div></div>\n+<div class=\"ttc\" id=\"aa00912_html_a1af6b50e9f8ae13d3d2f9d5b03b35492\"><div class=\"ttname\"><a href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshBits</a></div><div class=\"ttdeci\">MeshBits</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00049\">mesh.h:49</a></div></div>\n+<div class=\"ttc\" id=\"aa00912_html_a1af6b50e9f8ae13d3d2f9d5b03b35492a4124233e4f787f999c7975afceab34f3\"><div class=\"ttname\"><a href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a4124233e4f787f999c7975afceab34f3\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshEndCapBilinearBasis</a></div><div class=\"ttdeci\">@ MeshEndCapBilinearBasis</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00057\">mesh.h:57</a></div></div>\n+<div class=\"ttc\" id=\"aa00912_html_a1af6b50e9f8ae13d3d2f9d5b03b35492a5676712c77d29cfdd330e2802db1c464\"><div class=\"ttname\"><a href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a5676712c77d29cfdd330e2802db1c464\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::NUM_MESH_BITS</a></div><div class=\"ttdeci\">@ NUM_MESH_BITS</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00061\">mesh.h:61</a></div></div>\n+<div class=\"ttc\" id=\"aa00912_html_a1af6b50e9f8ae13d3d2f9d5b03b35492a8fab1b3018f94b5b2432c7435e795925\"><div class=\"ttname\"><a href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a8fab1b3018f94b5b2432c7435e795925\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshUseInfSharpPatch</a></div><div class=\"ttdeci\">@ MeshUseInfSharpPatch</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00056\">mesh.h:56</a></div></div>\n+<div class=\"ttc\" id=\"aa00912_html_a1af6b50e9f8ae13d3d2f9d5b03b35492a9058d69e1089fc77f1974a76c34e2071\"><div class=\"ttname\"><a href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a9058d69e1089fc77f1974a76c34e2071\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshUseSingleCreasePatch</a></div><div class=\"ttdeci\">@ MeshUseSingleCreasePatch</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00055\">mesh.h:55</a></div></div>\n+<div class=\"ttc\" id=\"aa00912_html_a1af6b50e9f8ae13d3d2f9d5b03b35492a9313c644b9b2a998bcb55cfcc4582b1a\"><div class=\"ttname\"><a href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a9313c644b9b2a998bcb55cfcc4582b1a\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshInterleaveVarying</a></div><div class=\"ttdeci\">@ MeshInterleaveVarying</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00051\">mesh.h:51</a></div></div>\n+<div class=\"ttc\" id=\"aa00912_html_a1af6b50e9f8ae13d3d2f9d5b03b35492a9b8a23ab039e120012bc7c622308d603\"><div class=\"ttname\"><a href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a9b8a23ab039e120012bc7c622308d603\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshFVarAdaptive</a></div><div class=\"ttdeci\">@ MeshFVarAdaptive</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00053\">mesh.h:53</a></div></div>\n+<div class=\"ttc\" id=\"aa00912_html_a1af6b50e9f8ae13d3d2f9d5b03b35492aa2878e1a215530f5f6fb89f1e06f91ee\"><div class=\"ttname\"><a href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492aa2878e1a215530f5f6fb89f1e06f91ee\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshEndCapGregoryBasis</a></div><div class=\"ttdeci\">@ MeshEndCapGregoryBasis</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00059\">mesh.h:59</a></div></div>\n+<div class=\"ttc\" id=\"aa00912_html_a1af6b50e9f8ae13d3d2f9d5b03b35492aa2f41b6ba0393698bb3af283283737f7\"><div class=\"ttname\"><a href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492aa2f41b6ba0393698bb3af283283737f7\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshEndCapBSplineBasis</a></div><div class=\"ttdeci\">@ MeshEndCapBSplineBasis</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00058\">mesh.h:58</a></div></div>\n+<div class=\"ttc\" id=\"aa00912_html_a1af6b50e9f8ae13d3d2f9d5b03b35492aad7b3fb2be609abdbfafaf5b1c834158\"><div class=\"ttname\"><a href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492aad7b3fb2be609abdbfafaf5b1c834158\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshEndCapLegacyGregory</a></div><div class=\"ttdeci\">@ MeshEndCapLegacyGregory</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00060\">mesh.h:60</a></div></div>\n+<div class=\"ttc\" id=\"aa00912_html_a1af6b50e9f8ae13d3d2f9d5b03b35492ab32b8ef595539e14041e2fb0e619e3f9\"><div class=\"ttname\"><a href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492ab32b8ef595539e14041e2fb0e619e3f9\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshUseSmoothCornerPatch</a></div><div class=\"ttdeci\">@ MeshUseSmoothCornerPatch</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00054\">mesh.h:54</a></div></div>\n+<div class=\"ttc\" id=\"aa00912_html_a1af6b50e9f8ae13d3d2f9d5b03b35492ac10e41fef659f3b3a1b730319bdedb45\"><div class=\"ttname\"><a href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492ac10e41fef659f3b3a1b730319bdedb45\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshFVarData</a></div><div class=\"ttdeci\">@ MeshFVarData</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00052\">mesh.h:52</a></div></div>\n+<div class=\"ttc\" id=\"aa00912_html_a1af6b50e9f8ae13d3d2f9d5b03b35492adef344bcbdd50a1a93136eb53183c718\"><div class=\"ttname\"><a href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492adef344bcbdd50a1a93136eb53183c718\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshAdaptive</a></div><div class=\"ttdeci\">@ MeshAdaptive</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00050\">mesh.h:50</a></div></div>\n+<div class=\"ttc\" id=\"aa00912_html_a33f9830228f847fae1c30c9dffe02b5a\"><div class=\"ttname\"><a href=\"a00912.html#a33f9830228f847fae1c30c9dffe02b5a\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::convertToCompatibleStencilTable&lt; Far::StencilTable, Far::StencilTable, void &gt;</a></div><div class=\"ttdeci\">Far::StencilTable const * convertToCompatibleStencilTable&lt; Far::StencilTable, Far::StencilTable, void &gt;(Far::StencilTable const *table, void *)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00148\">mesh.h:149</a></div></div>\n+<div class=\"ttc\" id=\"aa00912_html_a4c2520cc1a8a5a03e3f53584629d7318\"><div class=\"ttname\"><a href=\"a00912.html#a4c2520cc1a8a5a03e3f53584629d7318\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::convertToCompatibleStencilTable&lt; Far::LimitStencilTable, Far::LimitStencilTable, void &gt;</a></div><div class=\"ttdeci\">Far::LimitStencilTable const * convertToCompatibleStencilTable&lt; Far::LimitStencilTable, Far::LimitStencilTable, void &gt;(Far::LimitStencilTable const *table, void *)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00158\">mesh.h:159</a></div></div>\n+<div class=\"ttc\" id=\"aa00912_html_a85ba9df501aea9af1ec9da1558c255bc\"><div class=\"ttname\"><a href=\"a00912.html#a85ba9df501aea9af1ec9da1558c255bc\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshBitset</a></div><div class=\"ttdeci\">std::bitset&lt; NUM_MESH_BITS &gt; MeshBitset</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00063\">mesh.h:63</a></div></div>\n+<div class=\"ttc\" id=\"aa00912_html_ab5753a2b0a0995c8e2259d2c4765f7df\"><div class=\"ttname\"><a href=\"a00912.html#ab5753a2b0a0995c8e2259d2c4765f7df\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::convertToCompatibleStencilTable&lt; Far::StencilTable, Far::StencilTable, ID3D11DeviceContext &gt;</a></div><div class=\"ttdeci\">Far::StencilTable const * convertToCompatibleStencilTable&lt; Far::StencilTable, Far::StencilTable, ID3D11DeviceContext &gt;(Far::StencilTable const *table, ID3D11DeviceContext *)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00168\">mesh.h:169</a></div></div>\n+<div class=\"ttc\" id=\"aa00993_html\"><div class=\"ttname\"><a href=\"a00993.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable</a></div><div class=\"ttdoc\">Container for arrays of parametric patches.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00842_source.html#l00055\">patchTable.h:55</a></div></div>\n+<div class=\"ttc\" id=\"aa00993_html_a14bf987459715b918b370247bb24a61c\"><div class=\"ttname\"><a href=\"a00993.html#a14bf987459715b918b370247bb24a61c\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetMaxValence</a></div><div class=\"ttdeci\">int GetMaxValence() const</div><div class=\"ttdoc\">Returns max vertex valence.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00842_source.html#l00092\">patchTable.h:92</a></div></div>\n+<div class=\"ttc\" id=\"aa00993_html_a1d27edb01bfb68ba50776b25aa437783\"><div class=\"ttname\"><a href=\"a00993.html#a1d27edb01bfb68ba50776b25aa437783\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetLocalPointStencilTable</a></div><div class=\"ttdeci\">StencilTable const * GetLocalPointStencilTable() const</div><div class=\"ttdoc\">Returns the stencil table to compute local point vertex values.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00842_source.html#l00778\">patchTable.h:778</a></div></div>\n+<div class=\"ttc\" id=\"aa00993_html_ad6bafe91da1dcf5b8fb1f7c8cb4ed619\"><div class=\"ttname\"><a href=\"a00993.html#ad6bafe91da1dcf5b8fb1f7c8cb4ed619\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetLocalPointVaryingStencilTable</a></div><div class=\"ttdeci\">StencilTable const * GetLocalPointVaryingStencilTable() const</div><div class=\"ttdoc\">Returns the stencil table to compute local point varying values.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00842_source.html#l00783\">patchTable.h:783</a></div></div>\n+<div class=\"ttc\" id=\"aa01017_html_a6ad8881e91652a8fe4d68d18ac16a435\"><div class=\"ttname\"><a href=\"a01017.html#a6ad8881e91652a8fe4d68d18ac16a435\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Create</a></div><div class=\"ttdeci\">static PatchTable * Create(TopologyRefiner const &amp;refiner, Options options=Options(), ConstIndexArray selectedFaces=ConstIndexArray())</div><div class=\"ttdoc\">Instantiates a PatchTable from a client-provided TopologyRefiner.</div></div>\n+<div class=\"ttc\" id=\"aa01021_html\"><div class=\"ttname\"><a href=\"a01021.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options</a></div><div class=\"ttdoc\">Public options for the PatchTable factory.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l00045\">patchTableFactory.h:45</a></div></div>\n+<div class=\"ttc\" id=\"aa01021_html_aebc767d646011ab7d5bc7d6d49adf535a0c0d3d9e480d64f20f1b32d599c88aa5\"><div class=\"ttname\"><a href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535a0c0d3d9e480d64f20f1b32d599c88aa5\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::ENDCAP_LEGACY_GREGORY</a></div><div class=\"ttdeci\">@ ENDCAP_LEGACY_GREGORY</div><div class=\"ttdoc\">legacy option for 2.x style Gregory patches (Catmark only)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l00061\">patchTableFactory.h:60</a></div></div>\n+<div class=\"ttc\" id=\"aa01021_html_aebc767d646011ab7d5bc7d6d49adf535a2e89c8e5ac21dbd024ec902de51566b0\"><div class=\"ttname\"><a href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535a2e89c8e5ac21dbd024ec902de51566b0\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::ENDCAP_GREGORY_BASIS</a></div><div class=\"ttdeci\">@ ENDCAP_GREGORY_BASIS</div><div class=\"ttdoc\">use Gregory patches (highest quality, recommended default)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l00059\">patchTableFactory.h:59</a></div></div>\n+<div class=\"ttc\" id=\"aa01021_html_aebc767d646011ab7d5bc7d6d49adf535a90f0e9a2c992889cefdf1db954f9d98f\"><div class=\"ttname\"><a href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535a90f0e9a2c992889cefdf1db954f9d98f\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::ENDCAP_BILINEAR_BASIS</a></div><div class=\"ttdeci\">@ ENDCAP_BILINEAR_BASIS</div><div class=\"ttdoc\">use linear patches (simple quads or tris)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l00057\">patchTableFactory.h:57</a></div></div>\n+<div class=\"ttc\" id=\"aa01021_html_aebc767d646011ab7d5bc7d6d49adf535ac3fc1d183b0bdfbc7bf1cce613c4ff04\"><div class=\"ttname\"><a href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535ac3fc1d183b0bdfbc7bf1cce613c4ff04\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::ENDCAP_BSPLINE_BASIS</a></div><div class=\"ttdeci\">@ ENDCAP_BSPLINE_BASIS</div><div class=\"ttdoc\">use BSpline-like patches (same patch type as regular)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l00058\">patchTableFactory.h:58</a></div></div>\n+<div class=\"ttc\" id=\"aa01045_html_a46c8a310cf4c094f8c80e1cb8dc1f911ab18c20abfc04611ab0aec5e1c81bb2ab\"><div class=\"ttname\"><a href=\"a01045.html#a46c8a310cf4c094f8c80e1cb8dc1f911ab18c20abfc04611ab0aec5e1c81bb2ab\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactoryReal&lt; float &gt;::INTERPOLATE_VARYING</a></div><div class=\"ttdeci\">@ INTERPOLATE_VARYING</div><div class=\"ttdoc\">varying primvar stencils</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00824_source.html#l00057\">stencilTableFactory.h:57</a></div></div>\n+<div class=\"ttc\" id=\"aa01061_html_a02e67ceab8cb5af7982ef2a31a07a2ce\"><div class=\"ttname\"><a href=\"a01061.html#a02e67ceab8cb5af7982ef2a31a07a2ce\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::GetNumControlVertices</a></div><div class=\"ttdeci\">int GetNumControlVertices() const</div><div class=\"ttdoc\">Returns the number of control vertices indexed in the table.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00161\">stencilTable.h:161</a></div></div>\n+<div class=\"ttc\" id=\"aa01061_html_a65836d2070b943c8fecbad926d074de2\"><div class=\"ttname\"><a href=\"a01061.html#a65836d2070b943c8fecbad926d074de2\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::GetNumStencils</a></div><div class=\"ttdeci\">int GetNumStencils() const</div><div class=\"ttdoc\">Returns the number of stencils in the table.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00156\">stencilTable.h:156</a></div></div>\n+<div class=\"ttc\" id=\"aa01065_html\"><div class=\"ttname\"><a href=\"a01065.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTable</a></div><div class=\"ttdoc\">Stencil table class wrapping the template for compatibility.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00273\">stencilTable.h:273</a></div></div>\n+<div class=\"ttc\" id=\"aa01081_html\"><div class=\"ttname\"><a href=\"a01081.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTable</a></div><div class=\"ttdoc\">Limit stencil table class wrapping the template for compatibility.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00583\">stencilTable.h:583</a></div></div>\n+<div class=\"ttc\" id=\"aa01097_html_a667e11d1b8502dd1215608af93ada08c\"><div class=\"ttname\"><a href=\"a01097.html#a667e11d1b8502dd1215608af93ada08c\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactory::Create</a></div><div class=\"ttdeci\">static StencilTable const * Create(TopologyRefiner const &amp;refiner, Options options=Options())</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00824_source.html#l00293\">stencilTableFactory.h:293</a></div></div>\n+<div class=\"ttc\" id=\"aa01097_html_ab7374d716e8637a5ffbd12029713ec0f\"><div class=\"ttname\"><a href=\"a01097.html#ab7374d716e8637a5ffbd12029713ec0f\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactory::AppendLocalPointStencilTable</a></div><div class=\"ttdeci\">static StencilTable const * AppendLocalPointStencilTable(TopologyRefiner const &amp;refiner, StencilTable const *baseStencilTable, StencilTable const *localPointStencilTable, bool factorize=true)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00824_source.html#l00308\">stencilTableFactory.h:308</a></div></div>\n+<div class=\"ttc\" id=\"aa01113_html_aaf4a32b8a414eff77000c584c2015cb7\"><div class=\"ttname\"><a href=\"a01113.html#aaf4a32b8a414eff77000c584c2015cb7\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::GetNumVertices</a></div><div class=\"ttdeci\">int GetNumVertices() const</div><div class=\"ttdoc\">Return the number of vertices in this level.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00821_source.html#l00062\">topologyLevel.h:62</a></div></div>\n+<div class=\"ttc\" id=\"aa01121_html\"><div class=\"ttname\"><a href=\"a01121.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner</a></div><div class=\"ttdoc\">Stores topology data for a specified set of refinement options.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00051\">topologyRefiner.h:51</a></div></div>\n+<div class=\"ttc\" id=\"aa01121_html_a5dfa6810f510fac1ec621fc9e6b530c4\"><div class=\"ttname\"><a href=\"a01121.html#a5dfa6810f510fac1ec621fc9e6b530c4\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::IsUniform</a></div><div class=\"ttdeci\">bool IsUniform() const</div><div class=\"ttdoc\">Returns true if uniform refinement has been applied.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00068\">topologyRefiner.h:68</a></div></div>\n+<div class=\"ttc\" id=\"aa01121_html_aa9be824a572029f3ec1e0c0d6cfecd77\"><div class=\"ttname\"><a href=\"a01121.html#aa9be824a572029f3ec1e0c0d6cfecd77\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::GetNumFVarChannels</a></div><div class=\"ttdeci\">int GetNumFVarChannels() const</div><div class=\"ttdoc\">Returns the number of face-varying channels in the tables.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00293\">topologyRefiner.h:293</a></div></div>\n+<div class=\"ttc\" id=\"aa01121_html_ad22b7ffd9f8f3b488e5f220cf00c8c82\"><div class=\"ttname\"><a href=\"a01121.html#ad22b7ffd9f8f3b488e5f220cf00c8c82\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::RefineUniform</a></div><div class=\"ttdeci\">void RefineUniform(UniformOptions options)</div><div class=\"ttdoc\">Refine the topology uniformly.</div></div>\n+<div class=\"ttc\" id=\"aa01121_html_adc03a3531bd92ada5669788241e3515f\"><div class=\"ttname\"><a href=\"a01121.html#adc03a3531bd92ada5669788241e3515f\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::GetLevel</a></div><div class=\"ttdeci\">TopologyLevel const &amp; GetLevel(int level) const</div><div class=\"ttdoc\">Returns a handle to access data specific to a particular level.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00095\">topologyRefiner.h:95</a></div></div>\n+<div class=\"ttc\" id=\"aa01121_html_aff92309935db19988908471bee4fef4d\"><div class=\"ttname\"><a href=\"a01121.html#aff92309935db19988908471bee4fef4d\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::RefineAdaptive</a></div><div class=\"ttdeci\">void RefineAdaptive(AdaptiveOptions options, ConstIndexArray selectedFaces=ConstIndexArray())</div><div class=\"ttdoc\">Feature Adaptive topology refinement.</div></div>\n+<div class=\"ttc\" id=\"aa01125_html\"><div class=\"ttname\"><a href=\"a01125.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::UniformOptions</a></div><div class=\"ttdoc\">Uniform refinement options.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00118\">topologyRefiner.h:118</a></div></div>\n+<div class=\"ttc\" id=\"aa01125_html_ad58e8c2606ce33af17bb83fb90eb7325\"><div class=\"ttname\"><a href=\"a01125.html#ad58e8c2606ce33af17bb83fb90eb7325\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::UniformOptions::fullTopologyInLastLevel</a></div><div class=\"ttdeci\">unsigned int fullTopologyInLastLevel</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00131\">topologyRefiner.h:131</a></div></div>\n+<div class=\"ttc\" id=\"aa01129_html\"><div class=\"ttname\"><a href=\"a01129.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::AdaptiveOptions</a></div><div class=\"ttdoc\">Adaptive refinement options.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00156\">topologyRefiner.h:156</a></div></div>\n+<div class=\"ttc\" id=\"aa01129_html_a5834971432c649e28d5a0186f79a60d5\"><div class=\"ttname\"><a href=\"a01129.html#a5834971432c649e28d5a0186f79a60d5\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::AdaptiveOptions::useSingleCreasePatch</a></div><div class=\"ttdeci\">unsigned int useSingleCreasePatch</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00176\">topologyRefiner.h:176</a></div></div>\n+<div class=\"ttc\" id=\"aa01129_html_a5eba866952b7be15b065060b1f5a81da\"><div class=\"ttname\"><a href=\"a01129.html#a5eba866952b7be15b065060b1f5a81da\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::AdaptiveOptions::useInfSharpPatch</a></div><div class=\"ttdeci\">unsigned int useInfSharpPatch</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00178\">topologyRefiner.h:178</a></div></div>\n+<div class=\"ttc\" id=\"aa01129_html_a74c90a5955fcad9c95d4c18346f7c312\"><div class=\"ttname\"><a href=\"a01129.html#a74c90a5955fcad9c95d4c18346f7c312\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::AdaptiveOptions::considerFVarChannels</a></div><div class=\"ttdeci\">unsigned int considerFVarChannels</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00180\">topologyRefiner.h:180</a></div></div>\n+<div class=\"ttc\" id=\"aa01141_html\"><div class=\"ttname\"><a href=\"a01141.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::BufferDescriptor</a></div><div class=\"ttdoc\">BufferDescriptor is a struct which describes buffer elements in interleaved data buffers....</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00061\">bufferDescriptor.h:61</a></div></div>\n+<div class=\"ttc\" id=\"aa01141_html_a08f66a6870d87afcd5dc1b60d1019692\"><div class=\"ttname\"><a href=\"a01141.html#a08f66a6870d87afcd5dc1b60d1019692\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::BufferDescriptor::stride</a></div><div class=\"ttdeci\">int stride</div><div class=\"ttdoc\">stride to the next element</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00102\">bufferDescriptor.h:102</a></div></div>\n+<div class=\"ttc\" id=\"aa01141_html_a9f59b34b1f25fe00023291b678246bcc\"><div class=\"ttname\"><a href=\"a01141.html#a9f59b34b1f25fe00023291b678246bcc\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::BufferDescriptor::length</a></div><div class=\"ttdeci\">int length</div><div class=\"ttdoc\">number or length of the data</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00100\">bufferDescriptor.h:100</a></div></div>\n+<div class=\"ttc\" id=\"aa01141_html_aed7ea92f45bd273dde380a45ddced592\"><div class=\"ttname\"><a href=\"a01141.html#aed7ea92f45bd273dde380a45ddced592\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::BufferDescriptor::offset</a></div><div class=\"ttdeci\">int offset</div><div class=\"ttdoc\">offset to desired element data</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00098\">bufferDescriptor.h:98</a></div></div>\n+<div class=\"ttc\" id=\"aa01269_html\"><div class=\"ttname\"><a href=\"a01269.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshInterface</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00068\">mesh.h:68</a></div></div>\n+<div class=\"ttc\" id=\"aa01269_html_a15628b18e19d90e91fdbd659925ae5c0\"><div class=\"ttname\"><a href=\"a01269.html#a15628b18e19d90e91fdbd659925ae5c0\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshInterface::GetFarPatchTable</a></div><div class=\"ttdeci\">virtual Far::PatchTable const * GetFarPatchTable() const =0</div></div>\n+<div class=\"ttc\" id=\"aa01269_html_a173851f742adc30ac139af96fe63732d\"><div class=\"ttname\"><a href=\"a01269.html#a173851f742adc30ac139af96fe63732d\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshInterface::refineMesh</a></div><div class=\"ttdeci\">static void refineMesh(Far::TopologyRefiner &amp;refiner, int level, MeshBitset bits)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00117\">mesh.h:117</a></div></div>\n+<div class=\"ttc\" id=\"aa01269_html_a17f6f0b76abe06cfe6f518f6b84baf43\"><div class=\"ttname\"><a href=\"a01269.html#a17f6f0b76abe06cfe6f518f6b84baf43\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshInterface::GetMaxValence</a></div><div class=\"ttdeci\">virtual int GetMaxValence() const =0</div></div>\n+<div class=\"ttc\" id=\"aa01269_html_a431ba3d2dd158085dd98ac0a74b6852e\"><div class=\"ttname\"><a href=\"a01269.html#a431ba3d2dd158085dd98ac0a74b6852e\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshInterface::GetNumVertices</a></div><div class=\"ttdeci\">virtual int GetNumVertices() const =0</div></div>\n+<div class=\"ttc\" id=\"aa01269_html_a46c5effb867afe6684124103763ea931\"><div class=\"ttname\"><a href=\"a01269.html#a46c5effb867afe6684124103763ea931\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshInterface::UpdateVaryingBuffer</a></div><div class=\"ttdeci\">virtual void UpdateVaryingBuffer(float const *varyingData, int startVertex, int numVerts)=0</div></div>\n+<div class=\"ttc\" id=\"aa01269_html_a51f237c3f08f6ddc2ea7ba5cb0d00b36\"><div class=\"ttname\"><a href=\"a01269.html#a51f237c3f08f6ddc2ea7ba5cb0d00b36\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshInterface::refineMesh</a></div><div class=\"ttdeci\">static void refineMesh(Far::TopologyRefiner &amp;refiner, int level, bool adaptive, bool singleCreasePatch)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00101\">mesh.h:101</a></div></div>\n+<div class=\"ttc\" id=\"aa01269_html_a5c79ce02489e8591ee2d2bfbfab155ec\"><div class=\"ttname\"><a href=\"a01269.html#a5c79ce02489e8591ee2d2bfbfab155ec\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshInterface::UpdateVertexBuffer</a></div><div class=\"ttdeci\">virtual void UpdateVertexBuffer(float const *vertexData, int startVertex, int numVerts)=0</div></div>\n+<div class=\"ttc\" id=\"aa01269_html_a6a57ae718d1dcdeb05728bca6f18ba4e\"><div class=\"ttname\"><a href=\"a01269.html#a6a57ae718d1dcdeb05728bca6f18ba4e\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshInterface::GetPatchTable</a></div><div class=\"ttdeci\">virtual PatchTable * GetPatchTable() const =0</div></div>\n+<div class=\"ttc\" id=\"aa01269_html_a7ae07c3be3d1d28183ee669ab9739bf2\"><div class=\"ttname\"><a href=\"a01269.html#a7ae07c3be3d1d28183ee669ab9739bf2\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshInterface::~MeshInterface</a></div><div class=\"ttdeci\">virtual ~MeshInterface()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00076\">mesh.h:76</a></div></div>\n+<div class=\"ttc\" id=\"aa01269_html_a97aeac9a21a88e08fc89852a92011bea\"><div class=\"ttname\"><a href=\"a01269.html#a97aeac9a21a88e08fc89852a92011bea\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshInterface::MeshInterface</a></div><div class=\"ttdeci\">MeshInterface()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00074\">mesh.h:74</a></div></div>\n+<div class=\"ttc\" id=\"aa01269_html_a9a90398ba2073fe3da454f6b00deb33c\"><div class=\"ttname\"><a href=\"a01269.html#a9a90398ba2073fe3da454f6b00deb33c\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshInterface::Refine</a></div><div class=\"ttdeci\">virtual void Refine()=0</div></div>\n+<div class=\"ttc\" id=\"aa01269_html_a9cf40ecf1b9b5c29507fe92a03f37a3c\"><div class=\"ttname\"><a href=\"a01269.html#a9cf40ecf1b9b5c29507fe92a03f37a3c\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshInterface::VertexBufferBinding</a></div><div class=\"ttdeci\">PatchTable::VertexBufferBinding VertexBufferBinding</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00071\">mesh.h:71</a></div></div>\n+<div class=\"ttc\" id=\"aa01269_html_a9d8ecd607dbb0749a55113224fbd39c4\"><div class=\"ttname\"><a href=\"a01269.html#a9d8ecd607dbb0749a55113224fbd39c4\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshInterface::BindVertexBuffer</a></div><div class=\"ttdeci\">virtual VertexBufferBinding BindVertexBuffer()=0</div></div>\n+<div class=\"ttc\" id=\"aa01269_html_abcdcb8fab7865dc196900b37c2e2d279\"><div class=\"ttname\"><a href=\"a01269.html#abcdcb8fab7865dc196900b37c2e2d279\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshInterface::BindVaryingBuffer</a></div><div class=\"ttdeci\">virtual VertexBufferBinding BindVaryingBuffer()=0</div></div>\n+<div class=\"ttc\" id=\"aa01269_html_adf9352136d44e5999629c6b4530bf4e0\"><div class=\"ttname\"><a href=\"a01269.html#adf9352136d44e5999629c6b4530bf4e0\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshInterface::PatchTable</a></div><div class=\"ttdeci\">PATCH_TABLE PatchTable</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00070\">mesh.h:70</a></div></div>\n+<div class=\"ttc\" id=\"aa01269_html_ae13c194d355f54c75f87897e3c5beb6b\"><div class=\"ttname\"><a href=\"a01269.html#ae13c194d355f54c75f87897e3c5beb6b\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshInterface::Synchronize</a></div><div class=\"ttdeci\">virtual void Synchronize()=0</div></div>\n+<div class=\"ttc\" id=\"aa01273_html\"><div class=\"ttname\"><a href=\"a01273.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::EvaluatorCacheT</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00186\">mesh.h:186</a></div></div>\n+<div class=\"ttc\" id=\"aa01273_html_a323bd60a5b0a37389ea7990836f12e18\"><div class=\"ttname\"><a href=\"a01273.html#a323bd60a5b0a37389ea7990836f12e18\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::EvaluatorCacheT::GetEvaluator</a></div><div class=\"ttdeci\">EVALUATOR * GetEvaluator(BufferDescriptor const &amp;srcDesc, BufferDescriptor const &amp;dstDesc, BufferDescriptor const &amp;duDesc, BufferDescriptor const &amp;dvDesc, DEVICE_CONTEXT *deviceContext)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00241\">mesh.h:241</a></div></div>\n+<div class=\"ttc\" id=\"aa01273_html_a6026c1c3d9b42543c0ed159214f99cc2\"><div class=\"ttname\"><a href=\"a01273.html#a6026c1c3d9b42543c0ed159214f99cc2\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::EvaluatorCacheT::GetEvaluator</a></div><div class=\"ttdeci\">EVALUATOR * GetEvaluator(BufferDescriptor const &amp;srcDesc, BufferDescriptor const &amp;dstDesc, BufferDescriptor const &amp;duDesc, BufferDescriptor const &amp;dvDesc, BufferDescriptor const &amp;duuDesc, BufferDescriptor const &amp;duvDesc, BufferDescriptor const &amp;dvvDesc, DEVICE_CONTEXT *deviceContext)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00255\">mesh.h:255</a></div></div>\n+<div class=\"ttc\" id=\"aa01273_html_a7d2e3a44295a45db4d6cf935b53c3cbe\"><div class=\"ttname\"><a href=\"a01273.html#a7d2e3a44295a45db4d6cf935b53c3cbe\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::EvaluatorCacheT::GetEvaluator</a></div><div class=\"ttdeci\">EVALUATOR * GetEvaluator(BufferDescriptor const &amp;srcDesc, BufferDescriptor const &amp;dstDesc, DEVICE_CONTEXT *deviceContext)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00228\">mesh.h:228</a></div></div>\n+<div class=\"ttc\" id=\"aa01273_html_a922392890afb6e4f8d4d08845244f145\"><div class=\"ttname\"><a href=\"a01273.html#a922392890afb6e4f8d4d08845244f145\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::EvaluatorCacheT::~EvaluatorCacheT</a></div><div class=\"ttdeci\">~EvaluatorCacheT()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00188\">mesh.h:188</a></div></div>\n+<div class=\"ttc\" id=\"aa01273_html_aa3bf448cf35c2b498ee29830343fe2de\"><div class=\"ttname\"><a href=\"a01273.html#aa3bf448cf35c2b498ee29830343fe2de\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::EvaluatorCacheT::Evaluators</a></div><div class=\"ttdeci\">std::vector&lt; Entry &gt; Evaluators</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00225\">mesh.h:225</a></div></div>\n+<div class=\"ttc\" id=\"aa01277_html\"><div class=\"ttname\"><a href=\"a01277.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::EvaluatorCacheT::Entry</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00196\">mesh.h:196</a></div></div>\n+<div class=\"ttc\" id=\"aa01277_html_a0d596cc177157da972daa1a9911027a8\"><div class=\"ttname\"><a href=\"a01277.html#a0d596cc177157da972daa1a9911027a8\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::EvaluatorCacheT::Entry::Entry</a></div><div class=\"ttdeci\">Entry(BufferDescriptor const &amp;srcDescArg, BufferDescriptor const &amp;dstDescArg, BufferDescriptor const &amp;duDescArg, BufferDescriptor const &amp;dvDescArg, BufferDescriptor const &amp;duuDescArg, BufferDescriptor const &amp;duvDescArg, BufferDescriptor const &amp;dvvDescArg, EVALUATOR *evalArg)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00207\">mesh.h:207</a></div></div>\n+<div class=\"ttc\" id=\"aa01277_html_a1b564bc13c46807d779bd7e9a74a6e73\"><div class=\"ttname\"><a href=\"a01277.html#a1b564bc13c46807d779bd7e9a74a6e73\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::EvaluatorCacheT::Entry::dvvDesc</a></div><div class=\"ttdeci\">BufferDescriptor dvvDesc</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00222\">mesh.h:222</a></div></div>\n+<div class=\"ttc\" id=\"aa01277_html_a32b5fd50dc24be2bdd0c0ce3a68c352e\"><div class=\"ttname\"><a href=\"a01277.html#a32b5fd50dc24be2bdd0c0ce3a68c352e\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::EvaluatorCacheT::Entry::duvDesc</a></div><div class=\"ttdeci\">BufferDescriptor duvDesc</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00222\">mesh.h:222</a></div></div>\n+<div class=\"ttc\" id=\"aa01277_html_a463eaf3e8922e8aadc9e5eb0998067a9\"><div class=\"ttname\"><a href=\"a01277.html#a463eaf3e8922e8aadc9e5eb0998067a9\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::EvaluatorCacheT::Entry::dstDesc</a></div><div class=\"ttdeci\">BufferDescriptor dstDesc</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00220\">mesh.h:220</a></div></div>\n+<div class=\"ttc\" id=\"aa01277_html_a598ff84099694191b9815ad4528750d6\"><div class=\"ttname\"><a href=\"a01277.html#a598ff84099694191b9815ad4528750d6\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::EvaluatorCacheT::Entry::duDesc</a></div><div class=\"ttdeci\">BufferDescriptor duDesc</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00221\">mesh.h:221</a></div></div>\n+<div class=\"ttc\" id=\"aa01277_html_a5d0b0430c7584408dbcd788f52b80fd4\"><div class=\"ttname\"><a href=\"a01277.html#a5d0b0430c7584408dbcd788f52b80fd4\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::EvaluatorCacheT::Entry::srcDesc</a></div><div class=\"ttdeci\">BufferDescriptor srcDesc</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00220\">mesh.h:220</a></div></div>\n+<div class=\"ttc\" id=\"aa01277_html_a6f1841c958530d57dca2cf8e449623cc\"><div class=\"ttname\"><a href=\"a01277.html#a6f1841c958530d57dca2cf8e449623cc\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::EvaluatorCacheT::Entry::duuDesc</a></div><div class=\"ttdeci\">BufferDescriptor duuDesc</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00222\">mesh.h:222</a></div></div>\n+<div class=\"ttc\" id=\"aa01277_html_a8fdf9373eaeffa18a4674b9316c12d23\"><div class=\"ttname\"><a href=\"a01277.html#a8fdf9373eaeffa18a4674b9316c12d23\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::EvaluatorCacheT::Entry::evaluator</a></div><div class=\"ttdeci\">EVALUATOR * evaluator</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00223\">mesh.h:223</a></div></div>\n+<div class=\"ttc\" id=\"aa01277_html_ada6adfb697358377d8da9232690daae2\"><div class=\"ttname\"><a href=\"a01277.html#ada6adfb697358377d8da9232690daae2\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::EvaluatorCacheT::Entry::Entry</a></div><div class=\"ttdeci\">Entry(BufferDescriptor const &amp;srcDescArg, BufferDescriptor const &amp;dstDescArg, BufferDescriptor const &amp;duDescArg, BufferDescriptor const &amp;dvDescArg, EVALUATOR *evalArg)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00197\">mesh.h:197</a></div></div>\n+<div class=\"ttc\" id=\"aa01277_html_ae8a207538288cc8048fab45cf824dc7e\"><div class=\"ttname\"><a href=\"a01277.html#ae8a207538288cc8048fab45cf824dc7e\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::EvaluatorCacheT::Entry::dvDesc</a></div><div class=\"ttdeci\">BufferDescriptor dvDesc</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00221\">mesh.h:221</a></div></div>\n+<div class=\"ttc\" id=\"aa01281_html\"><div class=\"ttname\"><a href=\"a01281.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::Mesh</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00418\">mesh.h:418</a></div></div>\n+<div class=\"ttc\" id=\"aa01281_html_a060777db09a25a79af64ea17acdc6d4a\"><div class=\"ttname\"><a href=\"a01281.html#a060777db09a25a79af64ea17acdc6d4a\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::Mesh::GetTopologyRefiner</a></div><div class=\"ttdeci\">virtual Far::TopologyRefiner const * GetTopologyRefiner() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00578\">mesh.h:578</a></div></div>\n+<div class=\"ttc\" id=\"aa01281_html_a1e4d2fe7a4770614b65af59e4a92058a\"><div class=\"ttname\"><a href=\"a01281.html#a1e4d2fe7a4770614b65af59e4a92058a\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::Mesh::GetVertexBuffer</a></div><div class=\"ttdeci\">virtual VertexBuffer * GetVertexBuffer()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00570\">mesh.h:570</a></div></div>\n+<div class=\"ttc\" id=\"aa01281_html_a2d7dd4047fcb530d2d5a72b922142517\"><div class=\"ttname\"><a href=\"a01281.html#a2d7dd4047fcb530d2d5a72b922142517\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::Mesh::UpdateVaryingBuffer</a></div><div class=\"ttdeci\">virtual void UpdateVaryingBuffer(float const *varyingData, int startVertex, int numVerts)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00495\">mesh.h:495</a></div></div>\n+<div class=\"ttc\" id=\"aa01281_html_a2da98e35e1a94b53d77c7c5d68b44320\"><div class=\"ttname\"><a href=\"a01281.html#a2da98e35e1a94b53d77c7c5d68b44320\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::Mesh::GetVaryingBuffer</a></div><div class=\"ttdeci\">virtual VertexBuffer * GetVaryingBuffer()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00574\">mesh.h:574</a></div></div>\n+<div class=\"ttc\" id=\"aa01281_html_a32c8d641fe9ea1565be646a10c5d6c85\"><div class=\"ttname\"><a href=\"a01281.html#a32c8d641fe9ea1565be646a10c5d6c85\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::Mesh::Refine</a></div><div class=\"ttdeci\">virtual void Refine()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00501\">mesh.h:501</a></div></div>\n+<div class=\"ttc\" id=\"aa01281_html_a3e2f358c45731eceb819ae70e7c8ca6e\"><div class=\"ttname\"><a href=\"a01281.html#a3e2f358c45731eceb819ae70e7c8ca6e\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::Mesh::DeviceContext</a></div><div class=\"ttdeci\">DEVICE_CONTEXT DeviceContext</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00424\">mesh.h:424</a></div></div>\n+<div class=\"ttc\" id=\"aa01281_html_a5613b23fcbadaf4ffe3dbe87c2d2e773\"><div class=\"ttname\"><a href=\"a01281.html#a5613b23fcbadaf4ffe3dbe87c2d2e773\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::Mesh::Evaluator</a></div><div class=\"ttdeci\">EVALUATOR Evaluator</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00421\">mesh.h:421</a></div></div>\n+<div class=\"ttc\" id=\"aa01281_html_a6043945695eb4786b2ff1eba1725088a\"><div class=\"ttname\"><a href=\"a01281.html#a6043945695eb4786b2ff1eba1725088a\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::Mesh::BindVertexBuffer</a></div><div class=\"ttdeci\">virtual VertexBufferBinding BindVertexBuffer()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00562\">mesh.h:562</a></div></div>\n+<div class=\"ttc\" id=\"aa01281_html_a65a924e7a9f6038025677e4aa728d9d3\"><div class=\"ttname\"><a href=\"a01281.html#a65a924e7a9f6038025677e4aa728d9d3\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::Mesh::GetNumVertices</a></div><div class=\"ttdeci\">virtual int GetNumVertices() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00558\">mesh.h:558</a></div></div>\n+<div class=\"ttc\" id=\"aa01281_html_a69e70d7e23e9bd8bd8eb7b5f0589009f\"><div class=\"ttname\"><a href=\"a01281.html#a69e70d7e23e9bd8bd8eb7b5f0589009f\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::Mesh::Mesh</a></div><div class=\"ttdeci\">Mesh(Far::TopologyRefiner *refiner, int numVertexElements, int numVaryingElements, int level, MeshBitset bits=MeshBitset(), EvaluatorCache *evaluatorCache=NULL, DeviceContext *deviceContext=NULL)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00428\">mesh.h:428</a></div></div>\n+<div class=\"ttc\" id=\"aa01281_html_a6b90e8290c540c78bedd053e2cc42f31\"><div class=\"ttname\"><a href=\"a01281.html#a6b90e8290c540c78bedd053e2cc42f31\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::Mesh::StencilTable</a></div><div class=\"ttdeci\">STENCIL_TABLE StencilTable</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00422\">mesh.h:422</a></div></div>\n+<div class=\"ttc\" id=\"aa01281_html_a722ca2b35d7001c0eeb6298f2c3704ca\"><div class=\"ttname\"><a href=\"a01281.html#a722ca2b35d7001c0eeb6298f2c3704ca\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::Mesh::VertexBuffer</a></div><div class=\"ttdeci\">VERTEX_BUFFER VertexBuffer</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00420\">mesh.h:420</a></div></div>\n+<div class=\"ttc\" id=\"aa01281_html_a81bf971c4b5d929fc29f37e38b519853\"><div class=\"ttname\"><a href=\"a01281.html#a81bf971c4b5d929fc29f37e38b519853\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::Mesh::EvaluatorCache</a></div><div class=\"ttdeci\">EvaluatorCacheT&lt; Evaluator &gt; EvaluatorCache</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00425\">mesh.h:425</a></div></div>\n+<div class=\"ttc\" id=\"aa01281_html_a914e3cead7ba6e0634b70bcf2957e8f7\"><div class=\"ttname\"><a href=\"a01281.html#a914e3cead7ba6e0634b70bcf2957e8f7\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::Mesh::BindVaryingBuffer</a></div><div class=\"ttdeci\">virtual VertexBufferBinding BindVaryingBuffer()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00566\">mesh.h:566</a></div></div>\n+<div class=\"ttc\" id=\"aa01281_html_a92162d9c34b218e4c03472f3483e3a78\"><div class=\"ttname\"><a href=\"a01281.html#a92162d9c34b218e4c03472f3483e3a78\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::Mesh::~Mesh</a></div><div class=\"ttdeci\">virtual ~Mesh()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00478\">mesh.h:478</a></div></div>\n+<div class=\"ttc\" id=\"aa01281_html_a9cf40ecf1b9b5c29507fe92a03f37a3c\"><div class=\"ttname\"><a href=\"a01281.html#a9cf40ecf1b9b5c29507fe92a03f37a3c\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::Mesh::VertexBufferBinding</a></div><div class=\"ttdeci\">PatchTable::VertexBufferBinding VertexBufferBinding</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00426\">mesh.h:426</a></div></div>\n+<div class=\"ttc\" id=\"aa01281_html_aa12fdb15b7109e56fc98b256a5d1018c\"><div class=\"ttname\"><a href=\"a01281.html#aa12fdb15b7109e56fc98b256a5d1018c\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::Mesh::UpdateVertexBuffer</a></div><div class=\"ttdeci\">virtual void UpdateVertexBuffer(float const *vertexData, int startVertex, int numVerts)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00489\">mesh.h:489</a></div></div>\n+<div class=\"ttc\" id=\"aa01281_html_ab945364bf8cadb3d1f8285551d9d49f0\"><div class=\"ttname\"><a href=\"a01281.html#ab945364bf8cadb3d1f8285551d9d49f0\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::Mesh::Synchronize</a></div><div class=\"ttdeci\">virtual void Synchronize()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00546\">mesh.h:546</a></div></div>\n+<div class=\"ttc\" id=\"aa01281_html_abcd37c29ab31ebecf03405bf4e92f28a\"><div class=\"ttname\"><a href=\"a01281.html#abcd37c29ab31ebecf03405bf4e92f28a\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::Mesh::GetPatchTable</a></div><div class=\"ttdeci\">virtual PatchTable * GetPatchTable() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00550\">mesh.h:550</a></div></div>\n+<div class=\"ttc\" id=\"aa01281_html_ac9e858564a58e758570a257e6db063b8\"><div class=\"ttname\"><a href=\"a01281.html#ac9e858564a58e758570a257e6db063b8\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::Mesh::GetFarPatchTable</a></div><div class=\"ttdeci\">virtual Far::PatchTable const * GetFarPatchTable() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00554\">mesh.h:554</a></div></div>\n+<div class=\"ttc\" id=\"aa01281_html_adf9352136d44e5999629c6b4530bf4e0\"><div class=\"ttname\"><a href=\"a01281.html#adf9352136d44e5999629c6b4530bf4e0\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::Mesh::PatchTable</a></div><div class=\"ttdeci\">PATCH_TABLE PatchTable</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00423\">mesh.h:423</a></div></div>\n+<div class=\"ttc\" id=\"aa01281_html_affef41596871be7997c1691510d02e3f\"><div class=\"ttname\"><a href=\"a01281.html#affef41596871be7997c1691510d02e3f\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::Mesh::GetMaxValence</a></div><div class=\"ttdeci\">virtual int GetMaxValence() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00560\">mesh.h:560</a></div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_fa5edef2a780a73fbfb6a11f1af88ceb.html\">bfr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00704.html\">surface.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00704.html\">mesh.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-surface.h\n+mesh.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2021 Pixar\n+2// Copyright 2013 Pixar\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -24,420 +24,1093 @@\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n 24\n-25#ifndef OPENSUBDIV3_BFR_SURFACE_H\n-26#define OPENSUBDIV3_BFR_SURFACE_H\n+25#ifndef OPENSUBDIV3_OSD_MESH_H\n+26#define OPENSUBDIV3_OSD_MESH_H\n 27\n 28#include \"../version.h\"\n 29\n-30#include \"../bfr/surfaceData.h\"\n-31#include \"../bfr/parameterization.h\"\n-32#include \"../vtr/array.h\"\n-33\n-34namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-35namespace OPENSUBDIV_VERSION {\n-36\n-37namespace Bfr {\n-38\n-58template <typename REAL>\n-_\b5_\b9class _\bS_\bu_\br_\bf_\ba_\bc_\be {\n-60public:\n-_\b6_\b3 struct _\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br {\n-_\b6_\b4 _\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br() : _\bs_\bi_\bz_\be(0), _\bs_\bt_\br_\bi_\bd_\be(0) { }\n-_\b6_\b5 _\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(int n) : _\bs_\bi_\bz_\be(n), _\bs_\bt_\br_\bi_\bd_\be(n) { }\n-_\b6_\b6 _\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(int n, int m) : _\bs_\bi_\bz_\be(n), _\bs_\bt_\br_\bi_\bd_\be(m) { }\n-67\n-_\b6_\b8 int _\bs_\bi_\bz_\be, _\bs_\bt_\br_\bi_\bd_\be;\n-69 };\n-70\n-_\b7_\b2 typedef int _\bI_\bn_\bd_\be_\bx;\n-73\n-74public:\n-76\n+30#include <bitset>\n+31#include <cassert>\n+32#include <cstring>\n+33#include <vector>\n+34\n+35#include \"../far/topologyRefiner.h\"\n+36#include \"../far/patchTableFactory.h\"\n+37#include \"../far/stencilTable.h\"\n+38#include \"../far/stencilTableFactory.h\"\n+39\n+40#include \"../osd/bufferDescriptor.h\"\n+41\n+42struct ID3D11DeviceContext;\n+43\n+44namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+45namespace OPENSUBDIV_VERSION {\n+46\n+47namespace Osd {\n+48\n+_\b4_\b9enum _\bM_\be_\bs_\bh_\bB_\bi_\bt_\bs {\n+_\b5_\b0 _\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be = 0,\n+_\b5_\b1 _\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bl_\be_\ba_\bv_\be_\bV_\ba_\br_\by_\bi_\bn_\bg = 1,\n+_\b5_\b2 _\bM_\be_\bs_\bh_\bF_\bV_\ba_\br_\bD_\ba_\bt_\ba = 2,\n+_\b5_\b3 _\bM_\be_\bs_\bh_\bF_\bV_\ba_\br_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be = 3,\n+_\b5_\b4 _\bM_\be_\bs_\bh_\bU_\bs_\be_\bS_\bm_\bo_\bo_\bt_\bh_\bC_\bo_\br_\bn_\be_\br_\bP_\ba_\bt_\bc_\bh = 4,\n+_\b5_\b5 _\bM_\be_\bs_\bh_\bU_\bs_\be_\bS_\bi_\bn_\bg_\bl_\be_\bC_\br_\be_\ba_\bs_\be_\bP_\ba_\bt_\bc_\bh = 5,\n+_\b5_\b6 _\bM_\be_\bs_\bh_\bU_\bs_\be_\bI_\bn_\bf_\bS_\bh_\ba_\br_\bp_\bP_\ba_\bt_\bc_\bh = 6,\n+_\b5_\b7 _\bM_\be_\bs_\bh_\bE_\bn_\bd_\bC_\ba_\bp_\bB_\bi_\bl_\bi_\bn_\be_\ba_\br_\bB_\ba_\bs_\bi_\bs = 7, // exclusive\n+_\b5_\b8 _\bM_\be_\bs_\bh_\bE_\bn_\bd_\bC_\ba_\bp_\bB_\bS_\bp_\bl_\bi_\bn_\be_\bB_\ba_\bs_\bi_\bs = 8, // exclusive\n+_\b5_\b9 _\bM_\be_\bs_\bh_\bE_\bn_\bd_\bC_\ba_\bp_\bG_\br_\be_\bg_\bo_\br_\by_\bB_\ba_\bs_\bi_\bs = 9, // exclusive\n+_\b6_\b0 _\bM_\be_\bs_\bh_\bE_\bn_\bd_\bC_\ba_\bp_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by = 10, // exclusive\n+_\b6_\b1 _\bN_\bU_\bM_\b__\bM_\bE_\bS_\bH_\b__\bB_\bI_\bT_\bS = 11,\n+62};\n+_\b6_\b3typedef std::bitset<NUM_MESH_BITS> _\bM_\be_\bs_\bh_\bB_\bi_\bt_\bs_\be_\bt;\n+64\n+65// --------------------------------------------------------------------------\n+-\n+66\n+67template <class PATCH_TABLE>\n+_\b6_\b8class _\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be {\n+69public:\n+_\b7_\b0 typedef PATCH_TABLE _\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be;\n+_\b7_\b1 typedef typename PatchTable::VertexBufferBinding _\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bB_\bi_\bn_\bd_\bi_\bn_\bg;\n+72\n+73public:\n+_\b7_\b4 _\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be() { }\n+75\n+_\b7_\b6 virtual _\b~_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be() { }\n+77\n+_\b7_\b8 virtual int _\bG_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs() const = 0;\n+79\n+_\b8_\b0 virtual int _\bG_\be_\bt_\bM_\ba_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be() const = 0;\n+81\n+_\b8_\b2 virtual void _\bU_\bp_\bd_\ba_\bt_\be_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br(float const *vertexData,\n+83 int startVertex, int numVerts) = 0;\n 84\n-_\b8_\b6 bool _\bI_\bs_\bV_\ba_\bl_\bi_\bd() const { return _data.isValid(); }\n+_\b8_\b5 virtual void _\bU_\bp_\bd_\ba_\bt_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bB_\bu_\bf_\bf_\be_\br(float const *varyingData,\n+86 int startVertex, int numVerts) = 0;\n 87\n-_\b8_\b9 void _\bC_\bl_\be_\ba_\br() { _data.reinitialize(); }\n-90\n-_\b9_\b2 _\bS_\bu_\br_\bf_\ba_\bc_\be();\n+_\b8_\b8 virtual void _\bR_\be_\bf_\bi_\bn_\be() = 0;\n+89\n+_\b9_\b0 virtual void _\bS_\by_\bn_\bc_\bh_\br_\bo_\bn_\bi_\bz_\be() = 0;\n+91\n+_\b9_\b2 virtual _\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be * _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be() const = 0;\n 93\n-_\b9_\b4 _\bS_\bu_\br_\bf_\ba_\bc_\be(_\bS_\bu_\br_\bf_\ba_\bc_\be const & src) = default;\n-_\b9_\b5 _\bS_\bu_\br_\bf_\ba_\bc_\be& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(_\bS_\bu_\br_\bf_\ba_\bc_\be const & src) = default;\n-_\b9_\b6 _\b~_\bS_\bu_\br_\bf_\ba_\bc_\be() = default;\n-98\n-100\n-104\n-_\b1_\b0_\b6 _\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn _\bG_\be_\bt_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn() const { return _data.getParam(); }\n-107\n-_\b1_\b0_\b9 int _\bG_\be_\bt_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be() const { return _\bG_\be_\bt_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn()._\bG_\be_\bt_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be(); }\n-110\n-_\b1_\b1_\b2 bool _\bI_\bs_\bR_\be_\bg_\bu_\bl_\ba_\br() const { return _data.isRegular(); }\n-113\n-_\b1_\b1_\b5 bool _\bI_\bs_\bL_\bi_\bn_\be_\ba_\br() const { return _data.isLinear(); }\n-117\n-119\n+_\b9_\b4 virtual _\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be const *_\bG_\be_\bt_\bF_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be() const = 0;\n+95\n+_\b9_\b6 virtual _\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bB_\bi_\bn_\bd_\bi_\bn_\bg _\bB_\bi_\bn_\bd_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br() = 0;\n+97\n+_\b9_\b8 virtual _\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bB_\bi_\bn_\bd_\bi_\bn_\bg _\bB_\bi_\bn_\bd_\bV_\ba_\br_\by_\bi_\bn_\bg_\bB_\bu_\bf_\bf_\be_\br() = 0;\n+99\n+100protected:\n+_\b1_\b0_\b1 static inline void _\br_\be_\bf_\bi_\bn_\be_\bM_\be_\bs_\bh(_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & refiner,\n+102 int level, bool adaptive,\n+103 bool singleCreasePatch) {\n+104 if (adaptive) {\n+105 _\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs options(level);\n+106 options._\bu_\bs_\be_\bS_\bi_\bn_\bg_\bl_\be_\bC_\br_\be_\ba_\bs_\be_\bP_\ba_\bt_\bc_\bh = singleCreasePatch;\n+107 refiner._\bR_\be_\bf_\bi_\bn_\be_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be(options);\n+108 } else {\n+109 // This dependency on FVar channels should not be necessary\n+110 bool fullTopologyInLastLevel = refiner._\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs()>0;\n+111\n+112 _\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bU_\bn_\bi_\bf_\bo_\br_\bm_\bO_\bp_\bt_\bi_\bo_\bn_\bs options(level);\n+113 options._\bf_\bu_\bl_\bl_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bI_\bn_\bL_\ba_\bs_\bt_\bL_\be_\bv_\be_\bl = fullTopologyInLastLevel;\n+114 refiner._\bR_\be_\bf_\bi_\bn_\be_\bU_\bn_\bi_\bf_\bo_\br_\bm(options);\n+115 }\n+116 }\n+_\b1_\b1_\b7 static inline void _\br_\be_\bf_\bi_\bn_\be_\bM_\be_\bs_\bh(_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & refiner,\n+118 int level, _\bM_\be_\bs_\bh_\bB_\bi_\bt_\bs_\be_\bt bits) {\n+119 if (bits.test(_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be)) {\n+120 _\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs options(level);\n+121 options._\bu_\bs_\be_\bS_\bi_\bn_\bg_\bl_\be_\bC_\br_\be_\ba_\bs_\be_\bP_\ba_\bt_\bc_\bh = bits.test(_\bM_\be_\bs_\bh_\bU_\bs_\be_\bS_\bi_\bn_\bg_\bl_\be_\bC_\br_\be_\ba_\bs_\be_\bP_\ba_\bt_\bc_\bh);\n+122 options._\bu_\bs_\be_\bI_\bn_\bf_\bS_\bh_\ba_\br_\bp_\bP_\ba_\bt_\bc_\bh = bits.test(_\bM_\be_\bs_\bh_\bU_\bs_\be_\bI_\bn_\bf_\bS_\bh_\ba_\br_\bp_\bP_\ba_\bt_\bc_\bh);\n+123 options._\bc_\bo_\bn_\bs_\bi_\bd_\be_\br_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs = bits.test(_\bM_\be_\bs_\bh_\bF_\bV_\ba_\br_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be);\n+124 refiner._\bR_\be_\bf_\bi_\bn_\be_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be(options);\n+125 } else {\n+126 // This dependency on FVar channels should not be necessary\n+127 bool fullTopologyInLastLevel = refiner._\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs()>0;\n+128\n+129 _\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bU_\bn_\bi_\bf_\bo_\br_\bm_\bO_\bp_\bt_\bi_\bo_\bn_\bs options(level);\n+130 options._\bf_\bu_\bl_\bl_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bI_\bn_\bL_\ba_\bs_\bt_\bL_\be_\bv_\be_\bl = fullTopologyInLastLevel;\n+131 refiner._\bR_\be_\bf_\bi_\bn_\be_\bU_\bn_\bi_\bf_\bo_\br_\bm(options);\n+132 }\n+133 }\n+134};\n 135\n-_\b1_\b3_\b7 int _\bG_\be_\bt_\bN_\bu_\bm_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bP_\bo_\bi_\bn_\bt_\bs() const { return _data.getNumCVs(); }\n-138\n-_\b1_\b4_\b0 int _\bG_\be_\bt_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bP_\bo_\bi_\bn_\bt_\bI_\bn_\bd_\bi_\bc_\be_\bs(_\bI_\bn_\bd_\be_\bx meshPointIndices[]) const;\n-141\n-151 template <typename REAL_MESH>\n-_\b1_\b5_\b2 void _\bG_\ba_\bt_\bh_\be_\br_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bP_\bo_\bi_\bn_\bt_\bs(REAL_MESH const meshPoints[],\n-153 _\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const & meshPointDesc,\n-154 REAL controlPoints[],\n-155 _\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const & controlPointDesc) const;\n+136// -------------------------------------------------------------------------\n+--\n+137\n+138template <typename STENCIL_TABLE, typename SRC_STENCIL_TABLE,\n+139 typename DEVICE_CONTEXT>\n+140STENCIL_TABLE const *\n+_\b1_\b4_\b1_\bc_\bo_\bn_\bv_\be_\br_\bt_\bT_\bo_\bC_\bo_\bm_\bp_\ba_\bt_\bi_\bb_\bl_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(\n+142 SRC_STENCIL_TABLE const *table, DEVICE_CONTEXT *context) {\n+143 if (! table) return NULL;\n+144 return STENCIL_TABLE::Create(table, context);\n+145}\n+146\n+147template <>\n+_\b1_\b4_\b8inline _\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *\n+149_\bc_\bo_\bn_\bv_\be_\br_\bt_\bT_\bo_\bC_\bo_\bm_\bp_\ba_\bt_\bi_\bb_\bl_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b<_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b,_\b _\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b,_\b _\bv_\bo_\bi_\bd_\b>(\n+150 _\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *table, void * /*context*/) {\n+151 // no need for conversion\n+152 // XXX: We don't want to even copy.\n+153 if (! table) return NULL;\n+154 return new _\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(*table);\n+155}\n 156\n-_\b1_\b5_\b8 void _\bB_\bo_\bu_\bn_\bd_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bP_\bo_\bi_\bn_\bt_\bs(REAL const controlPoints[],\n-159 _\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const & controlPointDesc,\n-160 REAL minExtent[],\n-161 REAL maxExtent[]) const;\n-162\n-_\b1_\b6_\b4 void _\bB_\bo_\bu_\bn_\bd_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bP_\bo_\bi_\bn_\bt_\bs_\bF_\br_\bo_\bm_\bM_\be_\bs_\bh(REAL const meshPoints[],\n-165 _\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const & meshPointDesc,\n-166 REAL minExtent[],\n-167 REAL maxExtent[]) const;\n-169\n-171\n-177\n-_\b1_\b7_\b9 int _\bG_\be_\bt_\bN_\bu_\bm_\bP_\ba_\bt_\bc_\bh_\bP_\bo_\bi_\bn_\bt_\bs() const;\n-180\n-199 void _\bP_\br_\be_\bp_\ba_\br_\be_\bP_\ba_\bt_\bc_\bh_\bP_\bo_\bi_\bn_\bt_\bs(REAL const meshPoints[],\n-200 _\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const & meshPointDesc,\n-201 REAL patchPoints[],\n-202 _\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const & patchPointDesc) const;\n-203\n-213 void _\bC_\bo_\bm_\bp_\bu_\bt_\be_\bP_\ba_\bt_\bc_\bh_\bP_\bo_\bi_\bn_\bt_\bs(REAL patchPoints[],\n-214 _\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const & patchPointDesc) const;\n-216\n-218\n-225\n-227 void _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be(REAL const uv[2],\n-228 REAL const patchPoints[], _\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const & pointDesc,\n-229 REAL P[]) const;\n-230\n-232 void _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be(REAL const uv[2],\n-233 REAL const patchPoints[], _\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const & pointDesc,\n-234 REAL P[], REAL Du[], REAL Dv[]) const;\n-235\n-237 void _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be(REAL const uv[2],\n-238 REAL const patchPoints[], _\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const & pointDesc,\n-239 REAL P[], REAL Du[], REAL Dv[],\n-240 REAL Duu[], REAL Duv[], REAL Dvv[]) const;\n-242\n-244\n-256\n-258 int _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl(REAL const uv[2], REAL sP[]) const;\n-259\n-261 int _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl(REAL const uv[2], REAL sP[],\n-262 REAL sDu[], REAL sDv[]) const;\n+157template <>\n+_\b1_\b5_\b8inline _\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *\n+159_\bc_\bo_\bn_\bv_\be_\br_\bt_\bT_\bo_\bC_\bo_\bm_\bp_\ba_\bt_\bi_\bb_\bl_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b<_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b,_\b _\bF_\ba_\br_\b:_\b:\n+_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b,_\b _\bv_\bo_\bi_\bd_\b>(\n+160 _\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *table, void * /*context*/) {\n+161 // no need for conversion\n+162 // XXX: We don't want to even copy.\n+163 if (! table) return NULL;\n+164 return new _\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(*table);\n+165}\n+166\n+167template <>\n+_\b1_\b6_\b8inline _\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *\n+169_\bc_\bo_\bn_\bv_\be_\br_\bt_\bT_\bo_\bC_\bo_\bm_\bp_\ba_\bt_\bi_\bb_\bl_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b<_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b,_\b _\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b,\n+_\bI_\bD_\b3_\bD_\b1_\b1_\bD_\be_\bv_\bi_\bc_\be_\bC_\bo_\bn_\bt_\be_\bx_\bt_\b>(\n+170 _\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *table, ID3D11DeviceContext * /*context*/) {\n+171 // no need for conversion\n+172 // XXX: We don't want to even copy.\n+173 if (! table) return NULL;\n+174 return new _\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(*table);\n+175}\n+176\n+177// -------------------------------------------------------------------------\n+--\n+178\n+179// Osd evaluator cache: for the GPU backends require compiled instance\n+180// (GLXFB, GLCompute, CL)\n+181//\n+182// note: this is just an example usage and client applications are supposed\n+183// to implement their own structure for Evaluator instance.\n+184//\n+185template <typename EVALUATOR>\n+_\b1_\b8_\b6class _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bC_\ba_\bc_\bh_\be_\bT {\n+187public:\n+_\b1_\b8_\b8 _\b~_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bC_\ba_\bc_\bh_\be_\bT() {\n+189 for(typename Evaluators::iterator it = _evaluators.begin();\n+190 it != _evaluators.end(); ++it) {\n+191 delete it->evaluator;\n+192 }\n+193 }\n+194\n+195 // XXX: FIXME, linear search\n+_\b1_\b9_\b6 struct _\bE_\bn_\bt_\br_\by {\n+_\b1_\b9_\b7 _\bE_\bn_\bt_\br_\by(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDescArg,\n+198 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDescArg,\n+199 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDescArg,\n+200 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDescArg,\n+201 EVALUATOR *evalArg) : _\bs_\br_\bc_\bD_\be_\bs_\bc(srcDescArg), _\bd_\bs_\bt_\bD_\be_\bs_\bc(dstDescArg),\n+202 _\bd_\bu_\bD_\be_\bs_\bc(duDescArg), _\bd_\bv_\bD_\be_\bs_\bc(dvDescArg),\n+203 _\bd_\bu_\bu_\bD_\be_\bs_\bc(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br()),\n+204 _\bd_\bu_\bv_\bD_\be_\bs_\bc(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br()),\n+205 _\bd_\bv_\bv_\bD_\be_\bs_\bc(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br()),\n+206 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br(evalArg) {}\n+_\b2_\b0_\b7 _\bE_\bn_\bt_\br_\by(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDescArg,\n+208 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDescArg,\n+209 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDescArg,\n+210 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDescArg,\n+211 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDescArg,\n+212 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDescArg,\n+213 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDescArg,\n+214 EVALUATOR *evalArg) : _\bs_\br_\bc_\bD_\be_\bs_\bc(srcDescArg), _\bd_\bs_\bt_\bD_\be_\bs_\bc(dstDescArg),\n+215 _\bd_\bu_\bD_\be_\bs_\bc(duDescArg), _\bd_\bv_\bD_\be_\bs_\bc(dvDescArg),\n+216 _\bd_\bu_\bu_\bD_\be_\bs_\bc(duuDescArg),\n+217 _\bd_\bu_\bv_\bD_\be_\bs_\bc(duvDescArg),\n+218 _\bd_\bv_\bv_\bD_\be_\bs_\bc(dvvDescArg),\n+219 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br(evalArg) {}\n+_\b2_\b2_\b0 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br _\bs_\br_\bc_\bD_\be_\bs_\bc, _\bd_\bs_\bt_\bD_\be_\bs_\bc;\n+_\b2_\b2_\b1 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br _\bd_\bu_\bD_\be_\bs_\bc, _\bd_\bv_\bD_\be_\bs_\bc;\n+_\b2_\b2_\b2 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br _\bd_\bu_\bu_\bD_\be_\bs_\bc, _\bd_\bu_\bv_\bD_\be_\bs_\bc, _\bd_\bv_\bv_\bD_\be_\bs_\bc;\n+_\b2_\b2_\b3 EVALUATOR *_\be_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br;\n+224 };\n+_\b2_\b2_\b5 typedef std::vector<Entry> _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bs;\n+226\n+227 template <typename DEVICE_CONTEXT>\n+_\b2_\b2_\b8 EVALUATOR *_\bG_\be_\bt_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+229 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+230 DEVICE_CONTEXT *deviceContext) {\n+231 return _\bG_\be_\bt_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br(srcDesc, dstDesc,\n+232 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+233 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+234 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+235 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+236 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+237 deviceContext);\n+238 }\n+239\n+240 template <typename DEVICE_CONTEXT>\n+_\b2_\b4_\b1 EVALUATOR *_\bG_\be_\bt_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+242 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+243 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+244 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+245 DEVICE_CONTEXT *deviceContext) {\n+246 return _\bG_\be_\bt_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br(srcDesc, dstDesc,\n+247 duDesc, dvDesc,\n+248 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+249 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+250 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+251 deviceContext);\n+252 }\n+253\n+254 template <typename DEVICE_CONTEXT>\n+_\b2_\b5_\b5 EVALUATOR *_\bG_\be_\bt_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+256 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+257 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+258 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+259 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+260 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+261 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+262 DEVICE_CONTEXT *deviceContext) {\n 263\n-265 int _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl(REAL const uv[2], REAL sP[],\n-266 REAL sDu[], REAL sDv[],\n-267 REAL sDuu[], REAL sDuv[], REAL sDvv[]) const;\n-268\n-_\b2_\b7_\b0 void _\bA_\bp_\bp_\bl_\by_\bS_\bt_\be_\bn_\bc_\bi_\bl(REAL const stencil[],\n-271 REAL const controlPoints[], _\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &,\n-272 REAL result[]) const;\n-273\n-_\b2_\b7_\b5 void _\bA_\bp_\bp_\bl_\by_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bF_\br_\bo_\bm_\bM_\be_\bs_\bh(REAL const stencil[],\n-276 REAL const meshPoints[], _\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &,\n-277 REAL result[]) const;\n-279\n-280private:\n-281 // Internal methods for evaluating derivatives, basis weights and\n-282 // stencils for regular, irregular and irregular linear patches:\n-283 typedef _\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by_\b<_\bi_\bn_\bt_\b> _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by;\n-284\n-285 void evaluateDerivs(REAL const uv[2], REAL const patchPoints[],\n-286 _\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &, REAL * derivs[]) const;\n-287 void evalRegularDerivs(REAL const uv[2], REAL const patchPoints[],\n-288 _\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &, REAL * derivs[]) const;\n-289 void evalIrregularDerivs(REAL const uv[2], REAL const patchPoints[],\n-290 _\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &, REAL * derivs[]) const;\n-291 void evalMultiLinearDerivs(REAL const uv[2], REAL const patchPoints[],\n-292 _\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &, REAL * derivs[]) const;\n-293\n-294 void evalRegularBasis(REAL const uv[2], REAL * wDeriv[]) const;\n-295 _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by evalIrregularBasis(REAL const uv[2], REAL * wDeriv[]) const;\n-296 int evalMultiLinearBasis(REAL const uv[2], REAL * wDeriv[]) const;\n-297\n-298 int evaluateStencils(REAL const uv[2], REAL * sDeriv[]) const;\n-299 int evalRegularStencils(REAL const uv[2], REAL * sDeriv[]) const;\n-300 int evalIrregularStencils(REAL const uv[2], REAL * sDeriv[]) const;\n-301 int evalMultiLinearStencils(REAL const uv[2], REAL * sDeriv[]) const;\n-302\n-303 // Internal methods to compute patch points:\n-304 void computeLinearPatchPoints(REAL p[], _\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &) const;\n-305 void computeIrregularPatchPoints(REAL p[], _\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &) const;\n-306\n-307 // Internal methods specific to regular or irregular patches:\n-308 unsigned char getRegPatchType() const { return _data.getRegPatchType(); }\n-309 unsigned char getRegPatchMask() const { return _data.getRegPatchMask(); }\n-310\n-311 internal::IrregularPatchType const & getIrregPatch() const;\n-312\n-313private:\n-314 // Access to the set of member variables - provided to the Factory:\n-_\b3_\b1_\b5 friend class _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by;\n-316\n-317 internal::SurfaceData & getSurfaceData() { return _data; }\n-318 internal::SurfaceData const & getSurfaceData() const { return _data; }\n-319\n-320private:\n-321 // All member variables encapsulated in a single class:\n-322 internal::SurfaceData _data;\n-323};\n-324\n-325\n-326//\n-327// Simple inline methods composed of other methods:\n-328//\n-329template <typename REAL>\n-330inline void\n-_\b3_\b3_\b1_\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bP_\ba_\bt_\bc_\bh_\bP_\bo_\bi_\bn_\bt_\bs(REAL points[],\n-332 _\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const & pointDesc) const {\n-333\n-334 if (!IsRegular()) {\n-335 if (IsLinear()) {\n-336 computeLinearPatchPoints(points, pointDesc);\n-337 } else {\n-338 computeIrregularPatchPoints(points, pointDesc);\n-339 }\n-340 }\n-341}\n-342\n-343template <typename REAL>\n-344inline void\n-_\b3_\b4_\b5_\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\bP_\br_\be_\bp_\ba_\br_\be_\bP_\ba_\bt_\bc_\bh_\bP_\bo_\bi_\bn_\bt_\bs(\n-346 REAL const meshPoints[], _\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const & meshPointDesc,\n-347 REAL patchPoints[], _\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const & patchPointDesc) const {\n-348\n-349 GatherControlPoints(meshPoints, meshPointDesc, patchPoints,\n-patchPointDesc);\n-350 ComputePatchPoints(patchPoints, patchPointDesc);\n-351}\n-352\n-353//\n-354// Inline invocations of more general methods for derivative overloads:\n-355//\n-356template <typename REAL>\n-357inline void\n-358_\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bD_\be_\br_\bi_\bv_\bs(REAL const uv[2],\n-359 REAL const patchPoints[],\n-360 PointDescriptor const & pointDesc,\n-361 REAL * derivatives[]) const {\n-362 if (IsRegular()) {\n-363 evalRegularDerivs(uv, patchPoints, pointDesc, derivatives);\n-364 } else if (IsLinear()) {\n-365 evalMultiLinearDerivs(uv, patchPoints, pointDesc, derivatives);\n-366 } else {\n-367 evalIrregularDerivs(uv, patchPoints, pointDesc, derivatives);\n-368 }\n-369}\n-370template <typename REAL>\n-371inline void\n-_\b3_\b7_\b2_\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be(REAL const uv[2],\n-373 REAL const patchPoints[],\n-374 _\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const & pointDesc,\n-375 REAL P[]) const {\n-376\n-377 REAL * derivatives[6] = { P, 0, 0, 0, 0, 0 };\n-378 evaluateDerivs(uv, patchPoints, pointDesc, derivatives);\n-379}\n-380template <typename REAL>\n-381inline void\n-_\b3_\b8_\b2_\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be(REAL const uv[2],\n-383 REAL const patchPoints[],\n-384 _\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const & pointDesc,\n-385 REAL P[], REAL Du[], REAL Dv[]) const {\n+264 for(typename Evaluators::iterator it = _evaluators.begin();\n+265 it != _evaluators.end(); ++it) {\n+266 if (isEqual(srcDesc, it->srcDesc) &&\n+267 isEqual(dstDesc, it->dstDesc) &&\n+268 isEqual(duDesc, it->duDesc) &&\n+269 isEqual(dvDesc, it->dvDesc) &&\n+270 isEqual(duuDesc, it->duuDesc) &&\n+271 isEqual(duvDesc, it->duvDesc) &&\n+272 isEqual(dvvDesc, it->dvvDesc)) {\n+273 return it->evaluator;\n+274 }\n+275 }\n+276 EVALUATOR *e = EVALUATOR::Create(srcDesc, dstDesc,\n+277 duDesc, dvDesc,\n+278 duuDesc, duvDesc, dvvDesc,\n+279 deviceContext);\n+280 _evaluators.push_back(_\bE_\bn_\bt_\br_\by(srcDesc, dstDesc,\n+281 duDesc, dvDesc,\n+282 duuDesc, duvDesc, dvvDesc, e));\n+283 return e;\n+284 }\n+285\n+286private:\n+287 static bool isEqual(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &a,\n+288 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &b) {\n+289 int offsetA = a._\bs_\bt_\br_\bi_\bd_\be ? (a._\bo_\bf_\bf_\bs_\be_\bt % a._\bs_\bt_\br_\bi_\bd_\be) : 0;\n+290 int offsetB = b._\bs_\bt_\br_\bi_\bd_\be ? (b._\bo_\bf_\bf_\bs_\be_\bt % b._\bs_\bt_\br_\bi_\bd_\be) : 0;\n+291\n+292 // Note: XFB kernel needs to be configured with the local offset\n+293 // of the dstDesc to skip preceding primvars.\n+294 return (offsetA == offsetB &&\n+295 a._\bl_\be_\bn_\bg_\bt_\bh == b._\bl_\be_\bn_\bg_\bt_\bh &&\n+296 a._\bs_\bt_\br_\bi_\bd_\be == b._\bs_\bt_\br_\bi_\bd_\be);\n+297 }\n+298\n+299 _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bs _evaluators;\n+300};\n+301\n+303\n+304// template helpers to see if the evaluator is instantiatable or not.\n+305template <typename EVALUATOR>\n+306struct instantiatable\n+307{\n+308 typedef char yes[1];\n+309 typedef char no[2];\n+310 template <typename C> static yes &chk(typename C::Instantiatable *t=0);\n+311 template <typename C> static no &chk(...);\n+312 static bool const value = sizeof(chk<EVALUATOR>(0)) == sizeof(yes);\n+313};\n+314template <bool C, typename T=void>\n+315struct enable_if { typedef T type; };\n+316template <typename T>\n+317struct enable_if<false, T> { };\n+318\n+320\n+321// extract a kernel from cache if available\n+322template <typename EVALUATOR, typename DEVICE_CONTEXT>\n+323static EVALUATOR *GetEvaluator(\n+324 EvaluatorCacheT<EVALUATOR> *cache,\n+325 BufferDescriptor const &srcDesc,\n+326 BufferDescriptor const &dstDesc,\n+327 BufferDescriptor const &duDesc,\n+328 BufferDescriptor const &dvDesc,\n+329 BufferDescriptor const &duuDesc,\n+330 BufferDescriptor const &duvDesc,\n+331 BufferDescriptor const &dvvDesc,\n+332 DEVICE_CONTEXT deviceContext,\n+333 typename enable_if<instantiatable<EVALUATOR>::value, void>::type*t=0) {\n+334 (void)t;\n+335 if (cache == NULL) return NULL;\n+336 return cache->GetEvaluator(srcDesc, dstDesc,\n+337 duDesc, dvDesc, duuDesc, duvDesc, dvvDesc,\n+338 deviceContext);\n+339}\n+340\n+341template <typename EVALUATOR, typename DEVICE_CONTEXT>\n+342static EVALUATOR *GetEvaluator(\n+343 EvaluatorCacheT<EVALUATOR> *cache,\n+344 BufferDescriptor const &srcDesc,\n+345 BufferDescriptor const &dstDesc,\n+346 BufferDescriptor const &duDesc,\n+347 BufferDescriptor const &dvDesc,\n+348 DEVICE_CONTEXT deviceContext,\n+349 typename enable_if<instantiatable<EVALUATOR>::value, void>::type*t=0) {\n+350 (void)t;\n+351 if (cache == NULL) return NULL;\n+352 return cache->GetEvaluator(srcDesc, dstDesc, duDesc, dvDesc,\n+deviceContext);\n+353}\n+354\n+355template <typename EVALUATOR, typename DEVICE_CONTEXT>\n+356static EVALUATOR *GetEvaluator(\n+357 EvaluatorCacheT<EVALUATOR> *cache,\n+358 BufferDescriptor const &srcDesc,\n+359 BufferDescriptor const &dstDesc,\n+360 DEVICE_CONTEXT deviceContext,\n+361 typename enable_if<instantiatable<EVALUATOR>::value, void>::type*t=0) {\n+362 (void)t;\n+363 if (cache == NULL) return NULL;\n+364 return cache->GetEvaluator(srcDesc, dstDesc,\n+365 BufferDescriptor(),\n+366 BufferDescriptor(),\n+367 deviceContext);\n+368}\n+369\n+370// fallback\n+371template <typename EVALUATOR, typename DEVICE_CONTEXT>\n+372static EVALUATOR *GetEvaluator(\n+373 EvaluatorCacheT<EVALUATOR> *,\n+374 BufferDescriptor const &,\n+375 BufferDescriptor const &,\n+376 BufferDescriptor const &,\n+377 BufferDescriptor const &,\n+378 BufferDescriptor const &,\n+379 BufferDescriptor const &,\n+380 BufferDescriptor const &,\n+381 DEVICE_CONTEXT,\n+382 typename enable_if<!instantiatable<EVALUATOR>::value, void>::type*t=0) {\n+383 (void)t;\n+384 return NULL;\n+385}\n 386\n-387 REAL * derivatives[6] = { P, Du, Dv, 0, 0, 0 };\n-388 evaluateDerivs(uv, patchPoints, pointDesc, derivatives);\n-389}\n-390template <typename REAL>\n-391inline void\n-_\b3_\b9_\b2_\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be(REAL const uv[2],\n-393 REAL const patchPoints[],\n-394 _\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const & pointDesc,\n-395 REAL P[], REAL Du[], REAL Dv[],\n-396 REAL Duu[], REAL Duv[], REAL Dvv[]) const {\n-397\n-398 REAL * derivatives[6] = { P, Du, Dv, Duu, Duv, Dvv };\n-399 evaluateDerivs(uv, patchPoints, pointDesc, derivatives);\n-400}\n-401\n-402template <typename REAL>\n-403inline int\n-404_\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(REAL const uv[2], REAL * sDeriv[]) const {\n-405\n-406 if (IsRegular()) {\n-407 return evalRegularStencils(uv, sDeriv);\n-408 } else if (IsLinear()) {\n-409 return evalMultiLinearStencils(uv, sDeriv);\n-410 } else {\n-411 return evalIrregularStencils(uv, sDeriv);\n-412 }\n-413}\n-414template <typename REAL>\n-415inline int\n-_\b4_\b1_\b6_\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl(REAL const uv[2], REAL sP[]) const {\n-417\n-418 REAL * derivativeStencils[6] = { sP, 0, 0, 0, 0, 0 };\n-419 return evaluateStencils(uv, derivativeStencils);\n-420}\n-421template <typename REAL>\n-422inline int\n-_\b4_\b2_\b3_\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl(REAL const uv[2],\n-424 REAL sP[], REAL sDu[], REAL sDv[]) const {\n-425\n-426 REAL * derivativeStencils[6] = { sP, sDu, sDv, 0, 0, 0 };\n-427 return evaluateStencils(uv, derivativeStencils);\n-428}\n-429template <typename REAL>\n-430inline int\n-_\b4_\b3_\b1_\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl(REAL const uv[2],\n-432 REAL sP[], REAL sDu[], REAL sDv[],\n-433 REAL sDuu[], REAL sDuv[], REAL sDvv[]) const {\n-434\n-435 REAL * derivativeStencils[6] = { sP, sDu, sDv, sDuu, sDuv, sDvv };\n-436 return evaluateStencils(uv, derivativeStencils);\n-437}\n-438\n-439} // end namespace Bfr\n-440\n-441} // end namespace OPENSUBDIV_VERSION\n-442using namespace OPENSUBDIV_VERSION;\n-443\n-444} // end namespace OpenSubdiv\n-445\n-446#endif /* OPENSUBDIV3_BFR_SURFACE */\n+387template <typename EVALUATOR, typename DEVICE_CONTEXT>\n+388static EVALUATOR *GetEvaluator(\n+389 EvaluatorCacheT<EVALUATOR> *,\n+390 BufferDescriptor const &,\n+391 BufferDescriptor const &,\n+392 BufferDescriptor const &,\n+393 BufferDescriptor const &,\n+394 DEVICE_CONTEXT,\n+395 typename enable_if<!instantiatable<EVALUATOR>::value, void>::type*t=0) {\n+396 (void)t;\n+397 return NULL;\n+398}\n+399\n+400template <typename EVALUATOR, typename DEVICE_CONTEXT>\n+401static EVALUATOR *GetEvaluator(\n+402 EvaluatorCacheT<EVALUATOR> *,\n+403 BufferDescriptor const &,\n+404 BufferDescriptor const &,\n+405 DEVICE_CONTEXT,\n+406 typename enable_if<!instantiatable<EVALUATOR>::value, void>::type*t=0) {\n+407 (void)t;\n+408 return NULL;\n+409}\n+410\n+411// -------------------------------------------------------------------------\n+--\n+412\n+413template <typename VERTEX_BUFFER,\n+414 typename STENCIL_TABLE,\n+415 typename EVALUATOR,\n+416 typename PATCH_TABLE,\n+417 typename DEVICE_CONTEXT = void>\n+_\b4_\b1_\b8class _\bM_\be_\bs_\bh : public _\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be<PATCH_TABLE> {\n+419public:\n+_\b4_\b2_\b0 typedef VERTEX_BUFFER _\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br;\n+_\b4_\b2_\b1 typedef EVALUATOR _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br;\n+_\b4_\b2_\b2 typedef STENCIL_TABLE _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be;\n+_\b4_\b2_\b3 typedef PATCH_TABLE _\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be;\n+_\b4_\b2_\b4 typedef DEVICE_CONTEXT _\bD_\be_\bv_\bi_\bc_\be_\bC_\bo_\bn_\bt_\be_\bx_\bt;\n+_\b4_\b2_\b5 typedef _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bC_\ba_\bc_\bh_\be_\bT_\b<_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b> _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bC_\ba_\bc_\bh_\be;\n+_\b4_\b2_\b6 typedef typename PatchTable::VertexBufferBinding _\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bB_\bi_\bn_\bd_\bi_\bn_\bg;\n+427\n+_\b4_\b2_\b8 _\bM_\be_\bs_\bh(_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br * refiner,\n+429 int numVertexElements,\n+430 int numVaryingElements,\n+431 int level,\n+432 _\bM_\be_\bs_\bh_\bB_\bi_\bt_\bs_\be_\bt bits = _\bM_\be_\bs_\bh_\bB_\bi_\bt_\bs_\be_\bt(),\n+433 _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bC_\ba_\bc_\bh_\be * evaluatorCache = NULL,\n+434 _\bD_\be_\bv_\bi_\bc_\be_\bC_\bo_\bn_\bt_\be_\bx_\bt * deviceContext = NULL) :\n+435\n+436 _refiner(refiner),\n+437 _farPatchTable(NULL),\n+438 _numVertices(0),\n+439 _maxValence(0),\n+440 _vertexBuffer(NULL),\n+441 _varyingBuffer(NULL),\n+442 _vertexStencilTable(NULL),\n+443 _varyingStencilTable(NULL),\n+444 _evaluatorCache(evaluatorCache),\n+445 _patchTable(NULL),\n+446 _deviceContext(deviceContext) {\n+447\n+448 assert(_refiner);\n+449\n+450 _\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\bP_\bA_\bT_\bC_\bH_\b__\bT_\bA_\bB_\bL_\bE_\b>_\b:_\b:_\br_\be_\bf_\bi_\bn_\be_\bM_\be_\bs_\bh(\n+451 *_refiner, level, bits);\n+452\n+453 int vertexBufferStride = numVertexElements +\n+454 (bits.test(_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bl_\be_\ba_\bv_\be_\bV_\ba_\br_\by_\bi_\bn_\bg) ? numVaryingElements : 0);\n+455 int varyingBufferStride =\n+456 (bits.test(_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bl_\be_\ba_\bv_\be_\bV_\ba_\br_\by_\bi_\bn_\bg) ? 0 : numVaryingElements);\n+457\n+458 initializeContext(numVertexElements,\n+459 numVaryingElements,\n+460 level, bits);\n+461\n+462 initializeVertexBuffers(_numVertices,\n+463 vertexBufferStride,\n+464 varyingBufferStride);\n+465\n+466 // configure vertex buffer descriptor\n+467 _vertexDesc =\n+468 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(0, numVertexElements, vertexBufferStride);\n+469 if (bits.test(_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bl_\be_\ba_\bv_\be_\bV_\ba_\br_\by_\bi_\bn_\bg)) {\n+470 _varyingDesc = _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(\n+471 numVertexElements, numVaryingElements, vertexBufferStride);\n+472 } else {\n+473 _varyingDesc = _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(\n+474 0, numVaryingElements, varyingBufferStride);\n+475 }\n+476 }\n+477\n+_\b4_\b7_\b8 virtual _\b~_\bM_\be_\bs_\bh() {\n+479 delete _refiner;\n+480 delete _farPatchTable;\n+481 delete _vertexBuffer;\n+482 delete _varyingBuffer;\n+483 delete _vertexStencilTable;\n+484 delete _varyingStencilTable;\n+485 delete _patchTable;\n+486 // deviceContext and evaluatorCache are not owned by this class.\n+487 }\n+488\n+_\b4_\b8_\b9 virtual void _\bU_\bp_\bd_\ba_\bt_\be_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br(float const *vertexData,\n+490 int startVertex, int numVerts) {\n+491 _vertexBuffer->UpdateData(vertexData, startVertex, numVerts,\n+492 _deviceContext);\n+493 }\n+494\n+_\b4_\b9_\b5 virtual void _\bU_\bp_\bd_\ba_\bt_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bB_\bu_\bf_\bf_\be_\br(float const *varyingData,\n+496 int startVertex, int numVerts) {\n+497 _varyingBuffer->UpdateData(varyingData, startVertex, numVerts,\n+498 _deviceContext);\n+499 }\n+500\n+_\b5_\b0_\b1 virtual void _\bR_\be_\bf_\bi_\bn_\be() {\n+502\n+503 int numControlVertices = _refiner->_\bG_\be_\bt_\bL_\be_\bv_\be_\bl(0)._\bG_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs();\n+504\n+505 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br srcDesc = _vertexDesc;\n+506 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br dstDesc(srcDesc);\n+507 dstDesc._\bo_\bf_\bf_\bs_\be_\bt += numControlVertices * dstDesc._\bs_\bt_\br_\bi_\bd_\be;\n+508\n+509 // note that the _evaluatorCache can be NULL and thus\n+510 // the evaluatorInstance can be NULL\n+511 // (for uninstantiatable kernels CPU,TBB etc)\n+512 _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance = GetEvaluator<Evaluator>(\n+513 _evaluatorCache, srcDesc, dstDesc,\n+514 _deviceContext);\n+515\n+516 Evaluator::EvalStencils(_vertexBuffer, srcDesc,\n+517 _vertexBuffer, dstDesc,\n+518 _vertexStencilTable,\n+519 instance, _deviceContext);\n+520\n+521 if (_varyingDesc._\bl_\be_\bn_\bg_\bt_\bh > 0) {\n+522 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br vSrcDesc = _varyingDesc;\n+523 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br vDstDesc(vSrcDesc);\n+524 vDstDesc._\bo_\bf_\bf_\bs_\be_\bt += numControlVertices * vDstDesc._\bs_\bt_\br_\bi_\bd_\be;\n+525\n+526 instance = GetEvaluator<Evaluator>(\n+527 _evaluatorCache, vSrcDesc, vDstDesc,\n+528 _deviceContext);\n+529\n+530 if (_varyingBuffer) {\n+531 // non-interleaved\n+532 Evaluator::EvalStencils(_varyingBuffer, vSrcDesc,\n+533 _varyingBuffer, vDstDesc,\n+534 _varyingStencilTable,\n+535 instance, _deviceContext);\n+536 } else {\n+537 // interleaved\n+538 Evaluator::EvalStencils(_vertexBuffer, vSrcDesc,\n+539 _vertexBuffer, vDstDesc,\n+540 _varyingStencilTable,\n+541 instance, _deviceContext);\n+542 }\n+543 }\n+544 }\n+545\n+_\b5_\b4_\b6 virtual void _\bS_\by_\bn_\bc_\bh_\br_\bo_\bn_\bi_\bz_\be() {\n+547 Evaluator::Synchronize(_deviceContext);\n+548 }\n+549\n+_\b5_\b5_\b0 virtual _\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be * _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be() const {\n+551 return _patchTable;\n+552 }\n+553\n+_\b5_\b5_\b4 virtual _\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be const *_\bG_\be_\bt_\bF_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be() const {\n+555 return _farPatchTable;\n+556 }\n+557\n+_\b5_\b5_\b8 virtual int _\bG_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs() const { return _numVertices; }\n+559\n+_\b5_\b6_\b0 virtual int _\bG_\be_\bt_\bM_\ba_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be() const { return _maxValence; }\n+561\n+_\b5_\b6_\b2 virtual _\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bB_\bi_\bn_\bd_\bi_\bn_\bg _\bB_\bi_\bn_\bd_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br() {\n+563 return _vertexBuffer->BindVBO(_deviceContext);\n+564 }\n+565\n+_\b5_\b6_\b6 virtual _\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bB_\bi_\bn_\bd_\bi_\bn_\bg _\bB_\bi_\bn_\bd_\bV_\ba_\br_\by_\bi_\bn_\bg_\bB_\bu_\bf_\bf_\be_\br() {\n+567 return _varyingBuffer->BindVBO(_deviceContext);\n+568 }\n+569\n+_\b5_\b7_\b0 virtual _\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br * _\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br() {\n+571 return _vertexBuffer;\n+572 }\n+573\n+_\b5_\b7_\b4 virtual _\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br * _\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bB_\bu_\bf_\bf_\be_\br() {\n+575 return _varyingBuffer;\n+576 }\n+577\n+_\b5_\b7_\b8 virtual _\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const * _\bG_\be_\bt_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br() const {\n+579 return _refiner;\n+580 }\n+581\n+582private:\n+583 void initializeContext(int numVertexElements,\n+584 int numVaryingElements,\n+585 int level, _\bM_\be_\bs_\bh_\bB_\bi_\bt_\bs_\be_\bt bits) {\n+586 assert(_refiner);\n+587\n+588 Far::StencilTableFactory::Options options;\n+589 options.generateOffsets = true;\n+590 options.generateIntermediateLevels =\n+591 _refiner->_\bI_\bs_\bU_\bn_\bi_\bf_\bo_\br_\bm() ? false : true;\n+592\n+593 _\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const * vertexStencils = NULL;\n+594 _\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const * varyingStencils = NULL;\n+595\n+596 if (numVertexElements>0) {\n+597\n+598 vertexStencils = _\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\br_\be_\ba_\bt_\be(*_refiner,\n+599 options);\n+600 }\n+601\n+602 if (numVaryingElements>0) {\n+603\n+604 options.interpolationMode =\n+605 _\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bI_\bN_\bT_\bE_\bR_\bP_\bO_\bL_\bA_\bT_\bE_\b__\bV_\bA_\bR_\bY_\bI_\bN_\bG;\n+606\n+607 varyingStencils = _\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\br_\be_\ba_\bt_\be(*_refiner,\n+608 options);\n+609 }\n+610\n+611 _\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs poptions(level);\n+612 poptions.generateFVarTables = bits.test(_\bM_\be_\bs_\bh_\bF_\bV_\ba_\br_\bD_\ba_\bt_\ba);\n+613 poptions.generateFVarLegacyLinearPatches = !bits.test(_\bM_\be_\bs_\bh_\bF_\bV_\ba_\br_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be);\n+614 poptions.generateLegacySharpCornerPatches = !bits.test\n+(_\bM_\be_\bs_\bh_\bU_\bs_\be_\bS_\bm_\bo_\bo_\bt_\bh_\bC_\bo_\br_\bn_\be_\br_\bP_\ba_\bt_\bc_\bh);\n+615 poptions.useSingleCreasePatch = bits.test(_\bM_\be_\bs_\bh_\bU_\bs_\be_\bS_\bi_\bn_\bg_\bl_\be_\bC_\br_\be_\ba_\bs_\be_\bP_\ba_\bt_\bc_\bh);\n+616 poptions.useInfSharpPatch = bits.test(_\bM_\be_\bs_\bh_\bU_\bs_\be_\bI_\bn_\bf_\bS_\bh_\ba_\br_\bp_\bP_\ba_\bt_\bc_\bh);\n+617\n+618 // points on bilinear and gregory basis endcap boundaries can be\n+619 // shared among adjacent patches to save some stencils.\n+620 if (bits.test(_\bM_\be_\bs_\bh_\bE_\bn_\bd_\bC_\ba_\bp_\bB_\bi_\bl_\bi_\bn_\be_\ba_\br_\bB_\ba_\bs_\bi_\bs)) {\n+621 poptions.SetEndCapType(\n+622 _\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bE_\bN_\bD_\bC_\bA_\bP_\b__\bB_\bI_\bL_\bI_\bN_\bE_\bA_\bR_\b__\bB_\bA_\bS_\bI_\bS);\n+623 poptions.shareEndCapPatchPoints = true;\n+624 } else if (bits.test(_\bM_\be_\bs_\bh_\bE_\bn_\bd_\bC_\ba_\bp_\bB_\bS_\bp_\bl_\bi_\bn_\be_\bB_\ba_\bs_\bi_\bs)) {\n+625 poptions.SetEndCapType(\n+626 _\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bE_\bN_\bD_\bC_\bA_\bP_\b__\bB_\bS_\bP_\bL_\bI_\bN_\bE_\b__\bB_\bA_\bS_\bI_\bS);\n+627 } else if (bits.test(_\bM_\be_\bs_\bh_\bE_\bn_\bd_\bC_\ba_\bp_\bG_\br_\be_\bg_\bo_\br_\by_\bB_\ba_\bs_\bi_\bs)) {\n+628 poptions.SetEndCapType(\n+629 _\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bE_\bN_\bD_\bC_\bA_\bP_\b__\bG_\bR_\bE_\bG_\bO_\bR_\bY_\b__\bB_\bA_\bS_\bI_\bS);\n+630 poptions.shareEndCapPatchPoints = true;\n+631 } else if (bits.test(_\bM_\be_\bs_\bh_\bE_\bn_\bd_\bC_\ba_\bp_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by)) {\n+632 poptions.SetEndCapType(\n+633 _\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bE_\bN_\bD_\bC_\bA_\bP_\b__\bL_\bE_\bG_\bA_\bC_\bY_\b__\bG_\bR_\bE_\bG_\bO_\bR_\bY);\n+634 }\n+635\n+636 _farPatchTable = _\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\br_\be_\ba_\bt_\be(*_refiner, poptions);\n+637\n+638 // if there's endcap stencils, merge it into regular stencils.\n+639 if (_farPatchTable->_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be()) {\n+640 // append stencils\n+641 if (Far::StencilTable const *vertexStencilsWithLocalPoints =\n+642 _\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bA_\bp_\bp_\be_\bn_\bd_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(\n+643 *_refiner,\n+644 vertexStencils,\n+645 _farPatchTable->_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be())) {\n+646 delete vertexStencils;\n+647 vertexStencils = vertexStencilsWithLocalPoints;\n+648 }\n+649 if (varyingStencils) {\n+650 if (Far::StencilTable const *varyingStencilsWithLocalPoints =\n+651 _\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bA_\bp_\bp_\be_\bn_\bd_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(\n+652 *_refiner,\n+653 varyingStencils,\n+654 _farPatchTable->_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be())) {\n+655 delete varyingStencils;\n+656 varyingStencils = varyingStencilsWithLocalPoints;\n+657 }\n+658 }\n+659 }\n+660\n+661 _maxValence = _farPatchTable->_\bG_\be_\bt_\bM_\ba_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be();\n+662 _patchTable = PatchTable::Create(_farPatchTable, _deviceContext);\n+663\n+664 // numvertices = coarse verts + refined verts + gregory basis verts\n+665 _numVertices = vertexStencils->_\bG_\be_\bt_\bN_\bu_\bm_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bV_\be_\br_\bt_\bi_\bc_\be_\bs()\n+666 + vertexStencils->_\bG_\be_\bt_\bN_\bu_\bm_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs();\n+667\n+668 // convert to device stenciltable if necessary.\n+669 _vertexStencilTable =\n+670 convertToCompatibleStencilTable<StencilTable>(\n+671 vertexStencils, _deviceContext);\n+672 _varyingStencilTable =\n+673 convertToCompatibleStencilTable<StencilTable>(\n+674 varyingStencils, _deviceContext);\n+675\n+676 // FIXME: we do extra copyings for Far::Stencils.\n+677 delete vertexStencils;\n+678 delete varyingStencils;\n+679 }\n+680\n+681 void initializeVertexBuffers(int numVertices,\n+682 int numVertexElements,\n+683 int numVaryingElements) {\n+684\n+685 if (numVertexElements) {\n+686 _vertexBuffer = VertexBuffer::Create(numVertexElements,\n+687 numVertices, _deviceContext);\n+688 }\n+689\n+690 if (numVaryingElements) {\n+691 _varyingBuffer = VertexBuffer::Create(numVaryingElements,\n+692 numVertices, _deviceContext);\n+693 }\n+694 }\n+695\n+696 Far::TopologyRefiner * _refiner;\n+697 Far::PatchTable * _farPatchTable;\n+698\n+699 int _numVertices;\n+700 int _maxValence;\n+701\n+702 _\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br * _vertexBuffer;\n+703 _\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br * _varyingBuffer;\n+704\n+705 BufferDescriptor _vertexDesc;\n+706 BufferDescriptor _varyingDesc;\n+707\n+708 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const * _vertexStencilTable;\n+709 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const * _varyingStencilTable;\n+710 _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bC_\ba_\bc_\bh_\be * _evaluatorCache;\n+711\n+712 _\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be *_patchTable;\n+713 _\bD_\be_\bv_\bi_\bc_\be_\bC_\bo_\bn_\bt_\be_\bx_\bt *_deviceContext;\n+714};\n+715\n+716} // end namespace Osd\n+717\n+718} // end namespace OPENSUBDIV_VERSION\n+719using namespace OPENSUBDIV_VERSION;\n+720\n+721} // end namespace OpenSubdiv\n+722\n+723#endif // OPENSUBDIV3_OSD_MESH_H\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn\n-Simple class defining the 2D parameterization of a face.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b5_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bt_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be\n-int GetFaceSize() const\n-Returns the size (number of vertices) of the corresponding face.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b1_\b0_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be\n-Encapsulates the limit surface for a face of a mesh.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\b._\bh_\b:_\b5_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bP_\bo_\bi_\bn_\bt_\bs\n-int GetNumControlPoints() const\n-Return the number of control points affecting the Surface.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\b._\bh_\b:_\b1_\b3_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be\n-void Evaluate(REAL const uv[2], REAL const patchPoints[], PointDescriptor const\n-&pointDesc, REAL P[]) const\n-Evaluation of position.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\b._\bh_\b:_\b3_\b7_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\b:_\b:_\bG_\be_\bt_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be\n-int GetFaceSize() const\n-Return the size of the face.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\b._\bh_\b:_\b1_\b0_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\b:_\b:_\bI_\bs_\bR_\be_\bg_\bu_\bl_\ba_\br\n-bool IsRegular() const\n-Return if the Surface is a single regular patch.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\b._\bh_\b:_\b1_\b1_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bP_\bo_\bi_\bn_\bt_\bs\n-void BoundControlPoints(REAL const controlPoints[], PointDescriptor const\n-&controlPointDesc, REAL minExtent[], REAL maxExtent[]) const\n-Compute bounds of control points from a local array.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\b:_\b:_\bG_\be_\bt_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bP_\bo_\bi_\bn_\bt_\bI_\bn_\bd_\bi_\bc_\be_\bs\n-int GetControlPointIndices(Index meshPointIndices[]) const\n-Identify indices of control points in the mesh.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx\n-int Index\n-Integer type representing a mesh index.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\b._\bh_\b:_\b7_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\b:_\b:_\bA_\bp_\bp_\bl_\by_\bS_\bt_\be_\bn_\bc_\bi_\bl\n-void ApplyStencil(REAL const stencil[], REAL const controlPoints[],\n-PointDescriptor const &, REAL result[]) const\n-Apply a single stencil to control points from a local array.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn\n-Parameterization GetParameterization() const\n-Return the Parameterization.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\b._\bh_\b:_\b1_\b0_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be\n-Surface()\n-Default construction produces an invalid instance.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\b:_\b:_\bA_\bp_\bp_\bl_\by_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bF_\br_\bo_\bm_\bM_\be_\bs_\bh\n-void ApplyStencilFromMesh(REAL const stencil[], REAL const meshPoints[],\n-PointDescriptor const &, REAL result[]) const\n-Apply a single stencil to control points from the mesh data.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n-Surface & operator=(Surface const &src)=default\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bP_\bo_\bi_\bn_\bt_\bs_\bF_\br_\bo_\bm_\bM_\be_\bs_\bh\n-void BoundControlPointsFromMesh(REAL const meshPoints[], PointDescriptor const\n-&meshPointDesc, REAL minExtent[], REAL maxExtent[]) const\n-Compute bounds of control points from the mesh data.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\b:_\b:_\b~_\bS_\bu_\br_\bf_\ba_\bc_\be\n-~Surface()=default\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\b:_\b:_\bC_\bl_\be_\ba_\br\n-void Clear()\n-Clear a previously initialized Surface.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\b._\bh_\b:_\b8_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be\n-Surface(Surface const &src)=default\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\b:_\b:_\bP_\br_\be_\bp_\ba_\br_\be_\bP_\ba_\bt_\bc_\bh_\bP_\bo_\bi_\bn_\bt_\bs\n-void PreparePatchPoints(REAL const meshPoints[], PointDescriptor const\n-&meshPointDesc, REAL patchPoints[], PointDescriptor const &patchPointDesc)\n-const\n-Prepare patch points in a local array for evaluation.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\b._\bh_\b:_\b3_\b4_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\b:_\b:_\bI_\bs_\bV_\ba_\bl_\bi_\bd\n-bool IsValid() const\n-Return true if successfully initialized.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\b._\bh_\b:_\b8_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\b:_\b:_\bG_\ba_\bt_\bh_\be_\br_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bP_\bo_\bi_\bn_\bt_\bs\n-void GatherControlPoints(REAL_MESH const meshPoints[], PointDescriptor const\n-&meshPointDesc, REAL controlPoints[], PointDescriptor const &controlPointDesc)\n-const\n-Gather control points in a local array.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bP_\ba_\bt_\bc_\bh_\bP_\bo_\bi_\bn_\bt_\bs\n-void ComputePatchPoints(REAL patchPoints[], PointDescriptor const\n-&patchPointDesc) const\n-Compute all patch points following the control points.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\b._\bh_\b:_\b3_\b3_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\b:_\b:_\bI_\bs_\bL_\bi_\bn_\be_\ba_\br\n-bool IsLinear() const\n-Return if the Surface is linear.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\b._\bh_\b:_\b1_\b1_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bP_\ba_\bt_\bc_\bh_\bP_\bo_\bi_\bn_\bt_\bs\n-int GetNumPatchPoints() const\n-Return the number of patch points representing the Surface.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl\n-int EvaluateStencil(REAL const uv[2], REAL sP[]) const\n-Evaluation of the limit stencil for position.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\b._\bh_\b:_\b4_\b1_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\b:_\b:_\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n-Simple struct defining the size and stride of points in arrays.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\b._\bh_\b:_\b6_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\b:_\b:_\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bs_\bt_\br_\bi_\bd_\be\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bc_\bo_\bn_\bv_\be_\br_\bt_\bT_\bo_\bC_\bo_\bm_\bp_\ba_\bt_\bi_\bb_\bl_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n+STENCIL_TABLE const * convertToCompatibleStencilTable(SRC_STENCIL_TABLE const\n+*table, DEVICE_CONTEXT *context)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b1_\b4_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bB_\bi_\bt_\bs\n+MeshBits\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b4_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bE_\bn_\bd_\bC_\ba_\bp_\bB_\bi_\bl_\bi_\bn_\be_\ba_\br_\bB_\ba_\bs_\bi_\bs\n+@ MeshEndCapBilinearBasis\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b5_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bN_\bU_\bM_\b__\bM_\bE_\bS_\bH_\b__\bB_\bI_\bT_\bS\n+@ NUM_MESH_BITS\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b6_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bU_\bs_\be_\bI_\bn_\bf_\bS_\bh_\ba_\br_\bp_\bP_\ba_\bt_\bc_\bh\n+@ MeshUseInfSharpPatch\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b5_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bU_\bs_\be_\bS_\bi_\bn_\bg_\bl_\be_\bC_\br_\be_\ba_\bs_\be_\bP_\ba_\bt_\bc_\bh\n+@ MeshUseSingleCreasePatch\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b5_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bl_\be_\ba_\bv_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n+@ MeshInterleaveVarying\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b5_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bF_\bV_\ba_\br_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be\n+@ MeshFVarAdaptive\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b5_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bE_\bn_\bd_\bC_\ba_\bp_\bG_\br_\be_\bg_\bo_\br_\by_\bB_\ba_\bs_\bi_\bs\n+@ MeshEndCapGregoryBasis\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b5_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bE_\bn_\bd_\bC_\ba_\bp_\bB_\bS_\bp_\bl_\bi_\bn_\be_\bB_\ba_\bs_\bi_\bs\n+@ MeshEndCapBSplineBasis\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b5_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bE_\bn_\bd_\bC_\ba_\bp_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by\n+@ MeshEndCapLegacyGregory\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b6_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bU_\bs_\be_\bS_\bm_\bo_\bo_\bt_\bh_\bC_\bo_\br_\bn_\be_\br_\bP_\ba_\bt_\bc_\bh\n+@ MeshUseSmoothCornerPatch\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b5_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bF_\bV_\ba_\br_\bD_\ba_\bt_\ba\n+@ MeshFVarData\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b5_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be\n+@ MeshAdaptive\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b5_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bc_\bo_\bn_\bv_\be_\br_\bt_\bT_\bo_\bC_\bo_\bm_\bp_\ba_\bt_\bi_\bb_\bl_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b<_\b _\bF_\ba_\br_\b:_\b:\n+_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b,_\b _\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b,_\b _\bv_\bo_\bi_\bd_\b _\b>\n+Far::StencilTable const * convertToCompatibleStencilTable< Far::StencilTable,\n+Far::StencilTable, void >(Far::StencilTable const *table, void *)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b1_\b4_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bc_\bo_\bn_\bv_\be_\br_\bt_\bT_\bo_\bC_\bo_\bm_\bp_\ba_\bt_\bi_\bb_\bl_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b<_\b _\bF_\ba_\br_\b:_\b:\n+_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b,_\b _\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b,_\b _\bv_\bo_\bi_\bd_\b _\b>\n+Far::LimitStencilTable const * convertToCompatibleStencilTable< Far::\n+LimitStencilTable, Far::LimitStencilTable, void >(Far::LimitStencilTable const\n+*table, void *)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b1_\b5_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bB_\bi_\bt_\bs_\be_\bt\n+std::bitset< NUM_MESH_BITS > MeshBitset\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b6_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bc_\bo_\bn_\bv_\be_\br_\bt_\bT_\bo_\bC_\bo_\bm_\bp_\ba_\bt_\bi_\bb_\bl_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b<_\b _\bF_\ba_\br_\b:_\b:\n+_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b,_\b _\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b,_\b _\bI_\bD_\b3_\bD_\b1_\b1_\bD_\be_\bv_\bi_\bc_\be_\bC_\bo_\bn_\bt_\be_\bx_\bt_\b _\b>\n+Far::StencilTable const * convertToCompatibleStencilTable< Far::StencilTable,\n+Far::StencilTable, ID3D11DeviceContext >(Far::StencilTable const *table,\n+ID3D11DeviceContext *)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b1_\b6_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+Container for arrays of parametric patches.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bM_\ba_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be\n+int GetMaxValence() const\n+Returns max vertex valence.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b9_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n+StencilTable const * GetLocalPointStencilTable() const\n+Returns the stencil table to compute local point vertex values.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b7_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n+_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n+StencilTable const * GetLocalPointVaryingStencilTable() const\n+Returns the stencil table to compute local point varying values.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b8_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n+static PatchTable * Create(TopologyRefiner const &refiner, Options\n+options=Options(), ConstIndexArray selectedFaces=ConstIndexArray())\n+Instantiates a PatchTable from a client-provided TopologyRefiner.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n+Public options for the PatchTable factory.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b4_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bE_\bN_\bD_\bC_\bA_\bP_\b__\bL_\bE_\bG_\bA_\bC_\bY_\b__\bG_\bR_\bE_\bG_\bO_\bR_\bY\n+@ ENDCAP_LEGACY_GREGORY\n+legacy option for 2.x style Gregory patches (Catmark only)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b6_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bE_\bN_\bD_\bC_\bA_\bP_\b__\bG_\bR_\bE_\bG_\bO_\bR_\bY_\b__\bB_\bA_\bS_\bI_\bS\n+@ ENDCAP_GREGORY_BASIS\n+use Gregory patches (highest quality, recommended default)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bE_\bN_\bD_\bC_\bA_\bP_\b__\bB_\bI_\bL_\bI_\bN_\bE_\bA_\bR_\b__\bB_\bA_\bS_\bI_\bS\n+@ ENDCAP_BILINEAR_BASIS\n+use linear patches (simple quads or tris)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bE_\bN_\bD_\bC_\bA_\bP_\b__\bB_\bS_\bP_\bL_\bI_\bN_\bE_\b__\bB_\bA_\bS_\bI_\bS\n+@ ENDCAP_BSPLINE_BASIS\n+use BSpline-like patches (same patch type as regular)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b<_\b _\bf_\bl_\bo_\ba_\bt_\b _\b>_\b:_\b:\n+_\bI_\bN_\bT_\bE_\bR_\bP_\bO_\bL_\bA_\bT_\bE_\b__\bV_\bA_\bR_\bY_\bI_\bN_\bG\n+@ INTERPOLATE_VARYING\n+varying primvar stencils\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n+int GetNumControlVertices() const\n+Returns the number of control vertices indexed in the table.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b6_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+int GetNumStencils() const\n+Returns the number of stencils in the table.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b5_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n+Stencil table class wrapping the template for compatibility.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b2_\b7_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n+Limit stencil table class wrapping the template for compatibility.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b8_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n+static StencilTable const * Create(TopologyRefiner const &refiner, Options\n+options=Options())\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b2_\b9_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n+_\bA_\bp_\bp_\be_\bn_\bd_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n+static StencilTable const * AppendLocalPointStencilTable(TopologyRefiner const\n+&refiner, StencilTable const *baseStencilTable, StencilTable const\n+*localPointStencilTable, bool factorize=true)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b3_\b0_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n+int GetNumVertices() const\n+Return the number of vertices in this level.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b6_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br\n+Stores topology data for a specified set of refinement options.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b5_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bI_\bs_\bU_\bn_\bi_\bf_\bo_\br_\bm\n+bool IsUniform() const\n+Returns true if uniform refinement has been applied.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b6_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs\n+int GetNumFVarChannels() const\n+Returns the number of face-varying channels in the tables.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b2_\b9_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bU_\bn_\bi_\bf_\bo_\br_\bm\n+void RefineUniform(UniformOptions options)\n+Refine the topology uniformly.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bG_\be_\bt_\bL_\be_\bv_\be_\bl\n+TopologyLevel const & GetLevel(int level) const\n+Returns a handle to access data specific to a particular level.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b9_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be\n+void RefineAdaptive(AdaptiveOptions options, ConstIndexArray\n+selectedFaces=ConstIndexArray())\n+Feature Adaptive topology refinement.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bU_\bn_\bi_\bf_\bo_\br_\bm_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n+Uniform refinement options.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b1_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bU_\bn_\bi_\bf_\bo_\br_\bm_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bf_\bu_\bl_\bl_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bI_\bn_\bL_\ba_\bs_\bt_\bL_\be_\bv_\be_\bl\n+unsigned int fullTopologyInLastLevel\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b3_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n+Adaptive refinement options.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b5_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bu_\bs_\be_\bS_\bi_\bn_\bg_\bl_\be_\bC_\br_\be_\ba_\bs_\be_\bP_\ba_\bt_\bc_\bh\n+unsigned int useSingleCreasePatch\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b7_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bu_\bs_\be_\bI_\bn_\bf_\bS_\bh_\ba_\br_\bp_\bP_\ba_\bt_\bc_\bh\n+unsigned int useInfSharpPatch\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b7_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bc_\bo_\bn_\bs_\bi_\bd_\be_\br_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs\n+unsigned int considerFVarChannels\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b8_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n+BufferDescriptor is a struct which describes buffer elements in interleaved\n+data buffers....\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b6_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bs_\bt_\br_\bi_\bd_\be\n int stride\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\b._\bh_\b:_\b6_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\b:_\b:_\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bs_\bi_\bz_\be\n-int size\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\b._\bh_\b:_\b6_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\b:_\b:_\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n-PointDescriptor(int n)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\b._\bh_\b:_\b6_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\b:_\b:_\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n-PointDescriptor(int n, int m)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\b._\bh_\b:_\b6_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\b:_\b:_\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n-PointDescriptor()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\b._\bh_\b:_\b6_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by\n-Base class providing initialization of a Surface for each face of a mesh.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b0_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b5_\b3\n+stride to the next element\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b1_\b0_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bl_\be_\bn_\bg_\bt_\bh\n+int length\n+number or length of the data\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b1_\b0_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bo_\bf_\bf_\bs_\be_\bt\n+int offset\n+offset to desired element data\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b9_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b6_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bG_\be_\bt_\bF_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+virtual Far::PatchTable const * GetFarPatchTable() const =0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\br_\be_\bf_\bi_\bn_\be_\bM_\be_\bs_\bh\n+static void refineMesh(Far::TopologyRefiner &refiner, int level, MeshBitset\n+bits)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b1_\b1_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bG_\be_\bt_\bM_\ba_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be\n+virtual int GetMaxValence() const =0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n+virtual int GetNumVertices() const =0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bU_\bp_\bd_\ba_\bt_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bB_\bu_\bf_\bf_\be_\br\n+virtual void UpdateVaryingBuffer(float const *varyingData, int startVertex, int\n+numVerts)=0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\br_\be_\bf_\bi_\bn_\be_\bM_\be_\bs_\bh\n+static void refineMesh(Far::TopologyRefiner &refiner, int level, bool adaptive,\n+bool singleCreasePatch)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b1_\b0_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bU_\bp_\bd_\ba_\bt_\be_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+virtual void UpdateVertexBuffer(float const *vertexData, int startVertex, int\n+numVerts)=0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+virtual PatchTable * GetPatchTable() const =0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\b~_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+virtual ~MeshInterface()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b7_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+MeshInterface()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b7_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be\n+virtual void Refine()=0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bB_\bi_\bn_\bd_\bi_\bn_\bg\n+PatchTable::VertexBufferBinding VertexBufferBinding\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b7_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bB_\bi_\bn_\bd_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+virtual VertexBufferBinding BindVertexBuffer()=0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bB_\bi_\bn_\bd_\bV_\ba_\br_\by_\bi_\bn_\bg_\bB_\bu_\bf_\bf_\be_\br\n+virtual VertexBufferBinding BindVaryingBuffer()=0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+PATCH_TABLE PatchTable\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b7_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bS_\by_\bn_\bc_\bh_\br_\bo_\bn_\bi_\bz_\be\n+virtual void Synchronize()=0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bC_\ba_\bc_\bh_\be_\bT\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b1_\b8_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bC_\ba_\bc_\bh_\be_\bT_\b:_\b:_\bG_\be_\bt_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n+EVALUATOR * GetEvaluator(BufferDescriptor const &srcDesc, BufferDescriptor\n+const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &dvDesc,\n+DEVICE_CONTEXT *deviceContext)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b2_\b4_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bC_\ba_\bc_\bh_\be_\bT_\b:_\b:_\bG_\be_\bt_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n+EVALUATOR * GetEvaluator(BufferDescriptor const &srcDesc, BufferDescriptor\n+const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &dvDesc,\n+BufferDescriptor const &duuDesc, BufferDescriptor const &duvDesc,\n+BufferDescriptor const &dvvDesc, DEVICE_CONTEXT *deviceContext)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b2_\b5_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bC_\ba_\bc_\bh_\be_\bT_\b:_\b:_\bG_\be_\bt_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n+EVALUATOR * GetEvaluator(BufferDescriptor const &srcDesc, BufferDescriptor\n+const &dstDesc, DEVICE_CONTEXT *deviceContext)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b2_\b2_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bC_\ba_\bc_\bh_\be_\bT_\b:_\b:_\b~_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bC_\ba_\bc_\bh_\be_\bT\n+~EvaluatorCacheT()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b1_\b8_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bC_\ba_\bc_\bh_\be_\bT_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bs\n+std::vector< Entry > Evaluators\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b2_\b2_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bC_\ba_\bc_\bh_\be_\bT_\b:_\b:_\bE_\bn_\bt_\br_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b1_\b9_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bC_\ba_\bc_\bh_\be_\bT_\b:_\b:_\bE_\bn_\bt_\br_\by_\b:_\b:_\bE_\bn_\bt_\br_\by\n+Entry(BufferDescriptor const &srcDescArg, BufferDescriptor const &dstDescArg,\n+BufferDescriptor const &duDescArg, BufferDescriptor const &dvDescArg,\n+BufferDescriptor const &duuDescArg, BufferDescriptor const &duvDescArg,\n+BufferDescriptor const &dvvDescArg, EVALUATOR *evalArg)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b2_\b0_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bC_\ba_\bc_\bh_\be_\bT_\b:_\b:_\bE_\bn_\bt_\br_\by_\b:_\b:_\bd_\bv_\bv_\bD_\be_\bs_\bc\n+BufferDescriptor dvvDesc\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b2_\b2_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bC_\ba_\bc_\bh_\be_\bT_\b:_\b:_\bE_\bn_\bt_\br_\by_\b:_\b:_\bd_\bu_\bv_\bD_\be_\bs_\bc\n+BufferDescriptor duvDesc\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b2_\b2_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bC_\ba_\bc_\bh_\be_\bT_\b:_\b:_\bE_\bn_\bt_\br_\by_\b:_\b:_\bd_\bs_\bt_\bD_\be_\bs_\bc\n+BufferDescriptor dstDesc\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b2_\b2_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bC_\ba_\bc_\bh_\be_\bT_\b:_\b:_\bE_\bn_\bt_\br_\by_\b:_\b:_\bd_\bu_\bD_\be_\bs_\bc\n+BufferDescriptor duDesc\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b2_\b2_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bC_\ba_\bc_\bh_\be_\bT_\b:_\b:_\bE_\bn_\bt_\br_\by_\b:_\b:_\bs_\br_\bc_\bD_\be_\bs_\bc\n+BufferDescriptor srcDesc\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b2_\b2_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bC_\ba_\bc_\bh_\be_\bT_\b:_\b:_\bE_\bn_\bt_\br_\by_\b:_\b:_\bd_\bu_\bu_\bD_\be_\bs_\bc\n+BufferDescriptor duuDesc\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b2_\b2_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bC_\ba_\bc_\bh_\be_\bT_\b:_\b:_\bE_\bn_\bt_\br_\by_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n+EVALUATOR * evaluator\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b2_\b2_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bC_\ba_\bc_\bh_\be_\bT_\b:_\b:_\bE_\bn_\bt_\br_\by_\b:_\b:_\bE_\bn_\bt_\br_\by\n+Entry(BufferDescriptor const &srcDescArg, BufferDescriptor const &dstDescArg,\n+BufferDescriptor const &duDescArg, BufferDescriptor const &dvDescArg, EVALUATOR\n+*evalArg)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b1_\b9_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bC_\ba_\bc_\bh_\be_\bT_\b:_\b:_\bE_\bn_\bt_\br_\by_\b:_\b:_\bd_\bv_\bD_\be_\bs_\bc\n+BufferDescriptor dvDesc\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b2_\b2_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b4_\b1_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\b:_\b:_\bG_\be_\bt_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br\n+virtual Far::TopologyRefiner const * GetTopologyRefiner() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b5_\b7_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\b:_\b:_\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+virtual VertexBuffer * GetVertexBuffer()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b5_\b7_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\b:_\b:_\bU_\bp_\bd_\ba_\bt_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bB_\bu_\bf_\bf_\be_\br\n+virtual void UpdateVaryingBuffer(float const *varyingData, int startVertex, int\n+numVerts)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b4_\b9_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\b:_\b:_\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bB_\bu_\bf_\bf_\be_\br\n+virtual VertexBuffer * GetVaryingBuffer()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b5_\b7_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be\n+virtual void Refine()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b5_\b0_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\b:_\b:_\bD_\be_\bv_\bi_\bc_\be_\bC_\bo_\bn_\bt_\be_\bx_\bt\n+DEVICE_CONTEXT DeviceContext\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b4_\b2_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n+EVALUATOR Evaluator\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b4_\b2_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\b:_\b:_\bB_\bi_\bn_\bd_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+virtual VertexBufferBinding BindVertexBuffer()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b5_\b6_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n+virtual int GetNumVertices() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b5_\b5_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\b:_\b:_\bM_\be_\bs_\bh\n+Mesh(Far::TopologyRefiner *refiner, int numVertexElements, int\n+numVaryingElements, int level, MeshBitset bits=MeshBitset(), EvaluatorCache\n+*evaluatorCache=NULL, DeviceContext *deviceContext=NULL)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b4_\b2_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n+STENCIL_TABLE StencilTable\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b4_\b2_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+VERTEX_BUFFER VertexBuffer\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b4_\b2_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bC_\ba_\bc_\bh_\be\n+EvaluatorCacheT< Evaluator > EvaluatorCache\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b4_\b2_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\b:_\b:_\bB_\bi_\bn_\bd_\bV_\ba_\br_\by_\bi_\bn_\bg_\bB_\bu_\bf_\bf_\be_\br\n+virtual VertexBufferBinding BindVaryingBuffer()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b5_\b6_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\b:_\b:_\b~_\bM_\be_\bs_\bh\n+virtual ~Mesh()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b4_\b7_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bB_\bi_\bn_\bd_\bi_\bn_\bg\n+PatchTable::VertexBufferBinding VertexBufferBinding\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b4_\b2_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\b:_\b:_\bU_\bp_\bd_\ba_\bt_\be_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+virtual void UpdateVertexBuffer(float const *vertexData, int startVertex, int\n+numVerts)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b4_\b8_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\b:_\b:_\bS_\by_\bn_\bc_\bh_\br_\bo_\bn_\bi_\bz_\be\n+virtual void Synchronize()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b5_\b4_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+virtual PatchTable * GetPatchTable() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b5_\b5_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\b:_\b:_\bG_\be_\bt_\bF_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+virtual Far::PatchTable const * GetFarPatchTable() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b5_\b5_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+PATCH_TABLE PatchTable\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b4_\b2_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\b:_\b:_\bG_\be_\bt_\bM_\ba_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be\n+virtual int GetMaxValence() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b5_\b6_\b0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bb_\bf_\br\n-    * _\bs_\bu_\br_\bf_\ba_\bc_\be_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bm_\be_\bs_\bh_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00707.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00707.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/bfr/surfaceFactoryMeshAdapter.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/osd/ompEvaluator.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -90,41 +90,42 @@\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> &#124;\n <a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">surfaceFactoryMeshAdapter.h File Reference</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">ompEvaluator.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &lt;cstdint&gt;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00764_source.html\">../osd/bufferDescriptor.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a01489_source.html\">../osd/types.h</a>&quot;</code><br />\n+<code>#include &lt;cstddef&gt;</code><br />\n </div>\n <p><a href=\"a00707_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00957.html\">SurfaceFactoryMeshAdapter</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Abstract interface adapting <a class=\"el\" href=\"a00941.html\" title=\"Base class providing initialization of a Surface for each face of a mesh.\">SurfaceFactory</a> to a connected mesh representation.  <a href=\"a00957.html#details\">More...</a><br /></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01313.html\">OmpEvaluator</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00907\" id=\"r_a00907\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00907.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr</a></td></tr>\n+<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_fa5edef2a780a73fbfb6a11f1af88ceb.html\">bfr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00707.html\">surfaceFactoryMeshAdapter.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00707.html\">ompEvaluator.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,25 +1,25 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-surfaceFactoryMeshAdapter.h File Reference\n+ompEvaluator.h File Reference\n #include \"../version.h\"\n-#include <cstdint>\n+#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh\"\n+#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n+#include <cstddef>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br\n-\u00a0       Abstract interface adapting _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by to a connected mesh\n-        representation. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bb_\bf_\br\n-    * _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bo_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00707.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00707.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,3 +1,3 @@\n var a00707 = [\n-    [\"SurfaceFactoryMeshAdapter\", \"a00957.html\", \"a00957\"]\n+    [\"OmpEvaluator\", \"a01313.html\", null]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00707_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00707_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/bfr/surfaceFactoryMeshAdapter.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/osd/ompEvaluator.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">surfaceFactoryMeshAdapter.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">ompEvaluator.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00707.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2021 Pixar</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2015 Pixar</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -119,149 +119,528 @@\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_BFR_SURFACE_FACTORY_ADAPTER_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_BFR_SURFACE_FACTORY_ADAPTER_H</span></div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_OMP_EVALUATOR_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_OMP_EVALUATOR_H</span></div>\n <div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n <div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &lt;cstdint&gt;</span></div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#include &quot;../osd/bufferDescriptor.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../osd/types.h&quot;</span></div>\n <div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span> </div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span>Bfr {</div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &lt;cstddef&gt;</span></div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n <div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">class </span>VertexDescriptor;</div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">namespace </span>Osd {</div>\n <div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span> </div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"comment\">//  SurfaceFactoryMeshAdapter is an abstract class that defines the interface</span></div>\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span><span class=\"comment\">//  through which subclasses of SurfaceFactory adapt to a connected mesh</span></div>\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span><span class=\"comment\">//  representation. The interface defines methods that describe the mesh</span></div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span><span class=\"comment\">//  topology and control indices in the neighborhood of a mesh -- from</span></div>\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span><span class=\"comment\">//  which the SurfaceFactory to identifies an appropriate limit surface.</span></div>\n-<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span><span class=\"comment\">//  SurfaceFactoryMeshAdapter methods require a subclass to provide a complete</span></div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span><span class=\"comment\">//  description of the topology around a base face, as well as indices</span></div>\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span><span class=\"comment\">//  associated with it (both vertex and face-varying).  The intent here is</span></div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span><span class=\"comment\">//  to keep the number of methods required to a minimum, and also to minimize</span></div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span><span class=\"comment\">//  the number of invocations required by the factory.</span></div>\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span><span class=\"comment\">//  With the need to support both linear and non-linear cases (for which</span></div>\n-<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span><span class=\"comment\">//  linear is trivial by comparison) and the limit surface for both vertex</span></div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span><span class=\"comment\">//  and face-varying topologies, the result is a small set of methods</span></div>\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span><span class=\"comment\">//  covering this matrix of functionality.</span></div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span><span class=\"comment\">//  Since face-varying data may differ in topology from the vertex data --</span></div>\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span><span class=\"comment\">//  with each set of face-varying data potentially having its own unique</span></div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span><span class=\"comment\">//  topology -- sets of face-varying data are uniquely distinguished by an</span></div>\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span><span class=\"comment\">//  associated integer (a face-varying ID).</span></div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span><span class=\"comment\">//</span></div>\n-<div class=\"foldopen\" id=\"foldopen00065\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00957.html\">   65</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a00957.html\">SurfaceFactoryMeshAdapter</a> {</div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">   68</a></span>    <span class=\"keyword\">typedef</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a>;</div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span> </div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">   80</a></span>    <span class=\"keyword\">typedef</span> std::intptr_t <a class=\"code hl_typedef\" href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">FVarID</a>;</div>\n+<div class=\"foldopen\" id=\"foldopen00039\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01313.html\">   39</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01313.html\">OmpEvaluator</a> {</div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span> </div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00072\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01313.html#a76ac331e29d26f25d0d807b74c1a838b\">   72</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01313.html#a76ac331e29d26f25d0d807b74c1a838b\">EvalStencils</a>(</div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span>        <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01313.html\">OmpEvaluator</a> *instance = NULL,</div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span> </div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n <div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span> </div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span><span class=\"keyword\">protected</span>:</div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span>    <a class=\"code hl_class\" href=\"a00957.html\">SurfaceFactoryMeshAdapter</a>() { }</div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>    <span class=\"keyword\">virtual</span> <a class=\"code hl_class\" href=\"a00957.html\">~SurfaceFactoryMeshAdapter</a>() { }</div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span> </div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span><span class=\"keyword\">protected</span>:</div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span> </div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>        <span class=\"keywordflow\">if</span> (stencilTable-&gt;GetNumStencils() == 0)</div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span> </div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01313.html#a76ac331e29d26f25d0d807b74c1a838b\">EvalStencils</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>                            dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>                            &amp;stencilTable-&gt;GetSizes()[0],</div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>                            &amp;stencilTable-&gt;GetOffsets()[0],</div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>                            &amp;stencilTable-&gt;GetControlIndices()[0],</div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>                            &amp;stencilTable-&gt;GetWeights()[0],</div>\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>                            <span class=\"comment\">/*start = */</span> 0,</div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>                            <span class=\"comment\">/*end   = */</span> stencilTable-&gt;GetNumStencils());</div>\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span>    }</div>\n+</div>\n <div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span> </div>\n-<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00957.html#aebdd02cef87f646218eed308629e9aed\">   96</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00957.html#aebdd02cef87f646218eed308629e9aed\">isFaceHole</a>(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex) <span class=\"keyword\">const</span> = 0;</div>\n-<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span> </div>\n-<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00957.html#a46acc55c125fe8d843fd2b74c582abec\">   99</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00957.html#a46acc55c125fe8d843fd2b74c582abec\">getFaceSize</a>(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex) <span class=\"keyword\">const</span> = 0;</div>\n-<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span> </div>\n-<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span> </div>\n-<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span> </div>\n-<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00957.html#ac8c29cf2fda93d2c3408f80e8371d375\">  113</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00957.html#ac8c29cf2fda93d2c3408f80e8371d375\">getFaceVertexIndices</a>(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex,</div>\n-<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span>                    <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertexIndices[]) <span class=\"keyword\">const</span> = 0;</div>\n-<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span> </div>\n-<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00957.html#aba5c13d35cdaae43f2a1b4798868747a\">  117</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00957.html#aba5c13d35cdaae43f2a1b4798868747a\">getFaceFVarValueIndices</a>(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex,</div>\n-<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\">  118</span>                    <a class=\"code hl_typedef\" href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">FVarID</a> fvarID, <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> fvarValueIndices[]) <span class=\"keyword\">const</span> = 0;</div>\n-<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span> </div>\n-<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\">  121</span><span class=\"keyword\">protected</span>:</div>\n-<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span> </div>\n-<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\">  159</span> </div>\n-<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00957.html#a6f2eece993bb137b995618881c7f9160\">  161</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00957.html#a6f2eece993bb137b995618881c7f9160\">populateFaceVertexDescriptor</a>(</div>\n-<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\">  162</span>                    <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex, <span class=\"keywordtype\">int</span> faceVertex,</div>\n-<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\">  163</span>                    <a class=\"code hl_class\" href=\"a00969.html\">VertexDescriptor</a> * vertexDescriptor) <span class=\"keyword\">const</span> = 0;</div>\n-<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\">  164</span> </div>\n-<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00957.html#a2bbf77d68fb983954c51bd91cfe35302\">  166</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00957.html#a2bbf77d68fb983954c51bd91cfe35302\">getFaceVertexIncidentFaceVertexIndices</a>(</div>\n-<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\">  167</span>                    <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex, <span class=\"keywordtype\">int</span> faceVertex,</div>\n-<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\">  168</span>                    <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertexIndices[]) <span class=\"keyword\">const</span> = 0;</div>\n-<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\">  169</span> </div>\n-<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00957.html#a269c87ee7505e80e2e4db772ee73a016\">  172</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00957.html#a269c87ee7505e80e2e4db772ee73a016\">getFaceVertexIncidentFaceFVarValueIndices</a>(</div>\n-<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\">  173</span>                    <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex, <span class=\"keywordtype\">int</span> faceVertex,</div>\n-<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\">  174</span>                    <a class=\"code hl_typedef\" href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">FVarID</a> fvarID, <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> fvarValueIndices[]) <span class=\"keyword\">const</span> = 0;</div>\n+<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01313.html#a4345e3659b7fb82f23dd51c688179ce3\">  121</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01313.html#a4345e3659b7fb82f23dd51c688179ce3\">EvalStencils</a>(</div>\n+<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span>        <span class=\"keywordtype\">float</span> *dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * sizes,</div>\n+<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * offsets,</div>\n+<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * indices,</div>\n+<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * weights,</div>\n+<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span>        <span class=\"keywordtype\">int</span> start, <span class=\"keywordtype\">int</span> end);</div>\n+<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span> </div>\n+<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\">  167</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00168\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01313.html#a6b577cee117522a91402eb4237e5e913\">  168</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01313.html#a6b577cee117522a91402eb4237e5e913\">EvalStencils</a>(</div>\n+<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\">  169</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\">  170</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\">  172</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\">  173</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n+<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\">  174</span>        <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01313.html\">OmpEvaluator</a> *instance = NULL,</div>\n+<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\">  175</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n <div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\">  176</span> </div>\n-<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span><span class=\"keyword\">protected</span>:</div>\n+<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\">  178</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n <div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\">  179</span> </div>\n-<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\">  203</span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00957.html#a72634fd790cc4d1f52801aa5399328b5\">getFaceNeighborhoodVertexIndicesIfRegular</a>(</div>\n-<div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\">  204</span>            <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex, <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertexIndices[]) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\">  205</span> </div>\n-<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\">  206</span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00957.html#aa7e32ce7ba896c5ddfe6521ad0022ce2\">getFaceNeighborhoodFVarValueIndicesIfRegular</a>(</div>\n-<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\">  207</span>            <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex, <a class=\"code hl_typedef\" href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">FVarID</a> fvarID, <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> fvarValueIndices[]) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\">  209</span> </div>\n-<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\">  210</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\">  211</span>    <span class=\"comment\">//  No private members</span></div>\n-<div class=\"line\"><a id=\"l00212\" name=\"l00212\"></a><span class=\"lineno\">  212</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\">  213</span> </div>\n-<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\">  214</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\">  215</span><span class=\"comment\">//  Inline defaults for optional methods:</span></div>\n-<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\">  216</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\">  217</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span></div>\n-<div class=\"foldopen\" id=\"foldopen00218\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00957.html#a72634fd790cc4d1f52801aa5399328b5\">  218</a></span><a class=\"code hl_function\" href=\"a00957.html#a72634fd790cc4d1f52801aa5399328b5\">SurfaceFactoryMeshAdapter::getFaceNeighborhoodVertexIndicesIfRegular</a>(</div>\n-<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\">  219</span>        <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a>, <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a>[])<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\">  220</span>    <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\">  221</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\">  222</span> </div>\n-<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\">  223</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span></div>\n-<div class=\"foldopen\" id=\"foldopen00224\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00957.html#aa7e32ce7ba896c5ddfe6521ad0022ce2\">  224</a></span><a class=\"code hl_function\" href=\"a00957.html#aa7e32ce7ba896c5ddfe6521ad0022ce2\">SurfaceFactoryMeshAdapter::getFaceNeighborhoodFVarValueIndicesIfRegular</a>(</div>\n-<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\">  225</span>        <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a>, <a class=\"code hl_typedef\" href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">FVarID</a>, <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a>[])<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\">  226</span>    <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\">  227</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\">  228</span> </div>\n-<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\">  229</span>} <span class=\"comment\">// end namespace Bfr</span></div>\n-<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\">  230</span> </div>\n-<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\">  231</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\">  232</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\">  233</span> </div>\n-<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\">  234</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\">  235</span> </div>\n-<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\">  236</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_BFR_SURFACE_FACTORY_ADAPTER_H */</span><span class=\"preprocessor\"></span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa00957_html\"><div class=\"ttname\"><a href=\"a00957.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryMeshAdapter</a></div><div class=\"ttdoc\">Abstract interface adapting SurfaceFactory to a connected mesh representation.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00707_source.html#l00065\">surfaceFactoryMeshAdapter.h:65</a></div></div>\n-<div class=\"ttc\" id=\"aa00957_html_a269c87ee7505e80e2e4db772ee73a016\"><div class=\"ttname\"><a href=\"a00957.html#a269c87ee7505e80e2e4db772ee73a016\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryMeshAdapter::getFaceVertexIncidentFaceFVarValueIndices</a></div><div class=\"ttdeci\">virtual int getFaceVertexIncidentFaceFVarValueIndices(Index faceIndex, int faceVertex, FVarID fvarID, Index fvarValueIndices[]) const =0</div><div class=\"ttdoc\">Gather face-varying indices of incident faces around a face-vertex.</div></div>\n-<div class=\"ttc\" id=\"aa00957_html_a2bbf77d68fb983954c51bd91cfe35302\"><div class=\"ttname\"><a href=\"a00957.html#a2bbf77d68fb983954c51bd91cfe35302\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryMeshAdapter::getFaceVertexIncidentFaceVertexIndices</a></div><div class=\"ttdeci\">virtual int getFaceVertexIncidentFaceVertexIndices(Index faceIndex, int faceVertex, Index vertexIndices[]) const =0</div><div class=\"ttdoc\">Gather vertex indices of incident faces around a face-vertex.</div></div>\n-<div class=\"ttc\" id=\"aa00957_html_a46acc55c125fe8d843fd2b74c582abec\"><div class=\"ttname\"><a href=\"a00957.html#a46acc55c125fe8d843fd2b74c582abec\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryMeshAdapter::getFaceSize</a></div><div class=\"ttdeci\">virtual int getFaceSize(Index faceIndex) const =0</div><div class=\"ttdoc\">Returns the size of a face (number of vertices)</div></div>\n-<div class=\"ttc\" id=\"aa00957_html_a4a0e50e01fef3e431767a928c2631cab\"><div class=\"ttname\"><a href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryMeshAdapter::Index</a></div><div class=\"ttdeci\">int Index</div><div class=\"ttdoc\">Integer type representing a mesh index.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00707_source.html#l00068\">surfaceFactoryMeshAdapter.h:68</a></div></div>\n-<div class=\"ttc\" id=\"aa00957_html_a6f2eece993bb137b995618881c7f9160\"><div class=\"ttname\"><a href=\"a00957.html#a6f2eece993bb137b995618881c7f9160\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryMeshAdapter::populateFaceVertexDescriptor</a></div><div class=\"ttdeci\">virtual int populateFaceVertexDescriptor(Index faceIndex, int faceVertex, VertexDescriptor *vertexDescriptor) const =0</div><div class=\"ttdoc\">Describe the topology of incident faces around a face-vertex.</div></div>\n-<div class=\"ttc\" id=\"aa00957_html_a72634fd790cc4d1f52801aa5399328b5\"><div class=\"ttname\"><a href=\"a00957.html#a72634fd790cc4d1f52801aa5399328b5\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryMeshAdapter::getFaceNeighborhoodVertexIndicesIfRegular</a></div><div class=\"ttdeci\">virtual bool getFaceNeighborhoodVertexIndicesIfRegular(Index faceIndex, Index vertexIndices[]) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00707_source.html#l00218\">surfaceFactoryMeshAdapter.h:218</a></div></div>\n-<div class=\"ttc\" id=\"aa00957_html_aa7e32ce7ba896c5ddfe6521ad0022ce2\"><div class=\"ttname\"><a href=\"a00957.html#aa7e32ce7ba896c5ddfe6521ad0022ce2\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryMeshAdapter::getFaceNeighborhoodFVarValueIndicesIfRegular</a></div><div class=\"ttdeci\">virtual bool getFaceNeighborhoodFVarValueIndicesIfRegular(Index faceIndex, FVarID fvarID, Index fvarValueIndices[]) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00707_source.html#l00224\">surfaceFactoryMeshAdapter.h:224</a></div></div>\n-<div class=\"ttc\" id=\"aa00957_html_aba5c13d35cdaae43f2a1b4798868747a\"><div class=\"ttname\"><a href=\"a00957.html#aba5c13d35cdaae43f2a1b4798868747a\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryMeshAdapter::getFaceFVarValueIndices</a></div><div class=\"ttdeci\">virtual int getFaceFVarValueIndices(Index faceIndex, FVarID fvarID, Index fvarValueIndices[]) const =0</div><div class=\"ttdoc\">Gather the face-varying indices of the face's vertices.</div></div>\n-<div class=\"ttc\" id=\"aa00957_html_ac8c29cf2fda93d2c3408f80e8371d375\"><div class=\"ttname\"><a href=\"a00957.html#ac8c29cf2fda93d2c3408f80e8371d375\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryMeshAdapter::getFaceVertexIndices</a></div><div class=\"ttdeci\">virtual int getFaceVertexIndices(Index faceIndex, Index vertexIndices[]) const =0</div><div class=\"ttdoc\">Gather the indices of the face's vertices.</div></div>\n-<div class=\"ttc\" id=\"aa00957_html_aebdd02cef87f646218eed308629e9aed\"><div class=\"ttname\"><a href=\"a00957.html#aebdd02cef87f646218eed308629e9aed\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryMeshAdapter::isFaceHole</a></div><div class=\"ttdeci\">virtual bool isFaceHole(Index faceIndex) const =0</div><div class=\"ttdoc\">Returns if a face is a hole.</div></div>\n-<div class=\"ttc\" id=\"aa00957_html_af98288d7b5176d7295be622a10c6c64e\"><div class=\"ttname\"><a href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryMeshAdapter::FVarID</a></div><div class=\"ttdeci\">std::intptr_t FVarID</div><div class=\"ttdoc\">Type used to identify and specify face-varying primvars.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00707_source.html#l00080\">surfaceFactoryMeshAdapter.h:80</a></div></div>\n-<div class=\"ttc\" id=\"aa00969_html\"><div class=\"ttname\"><a href=\"a00969.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::VertexDescriptor</a></div><div class=\"ttdoc\">Simple class used by subclasses of SurfaceFactory to describe a vertex.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00725_source.html#l00131\">vertexDescriptor.h:131</a></div></div>\n+<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\">  180</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01313.html#a76ac331e29d26f25d0d807b74c1a838b\">EvalStencils</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\">  181</span>                            dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\">  182</span>                            duBuffer-&gt;BindCpuBuffer(),  duDesc,</div>\n+<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\">  183</span>                            dvBuffer-&gt;BindCpuBuffer(),  dvDesc,</div>\n+<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\">  184</span>                            &amp;stencilTable-&gt;GetSizes()[0],</div>\n+<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\">  185</span>                            &amp;stencilTable-&gt;GetOffsets()[0],</div>\n+<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\">  186</span>                            &amp;stencilTable-&gt;GetControlIndices()[0],</div>\n+<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\">  187</span>                            &amp;stencilTable-&gt;GetWeights()[0],</div>\n+<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\">  188</span>                            &amp;stencilTable-&gt;GetDuWeights()[0],</div>\n+<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\">  189</span>                            &amp;stencilTable-&gt;GetDvWeights()[0],</div>\n+<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\">  190</span>                            <span class=\"comment\">/*start = */</span> 0,</div>\n+<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\">  191</span>                            <span class=\"comment\">/*end   = */</span> stencilTable-&gt;GetNumStencils());</div>\n+<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\">  192</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\">  193</span> </div>\n+<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01313.html#a6daed6135a40cda2daf6c6ea2047b330\">  234</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01313.html#a6daed6135a40cda2daf6c6ea2047b330\">EvalStencils</a>(</div>\n+<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\">  235</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\">  236</span>        <span class=\"keywordtype\">float</span> *dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\">  237</span>        <span class=\"keywordtype\">float</span> *du,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\">  238</span>        <span class=\"keywordtype\">float</span> *dv,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\">  239</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * sizes,</div>\n+<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\">  240</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * offsets,</div>\n+<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\">  241</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * indices,</div>\n+<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\">  242</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * weights,</div>\n+<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\">  243</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * duWeights,</div>\n+<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\">  244</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * dvWeights,</div>\n+<div class=\"line\"><a id=\"l00245\" name=\"l00245\"></a><span class=\"lineno\">  245</span>        <span class=\"keywordtype\">int</span> start, <span class=\"keywordtype\">int</span> end);</div>\n+<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\">  246</span> </div>\n+<div class=\"line\"><a id=\"l00302\" name=\"l00302\"></a><span class=\"lineno\">  302</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00303\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00303\" name=\"l00303\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01313.html#a9b393ddc414d176a2b4438ab1e3c1682\">  303</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01313.html#a9b393ddc414d176a2b4438ab1e3c1682\">EvalStencils</a>(</div>\n+<div class=\"line\"><a id=\"l00304\" name=\"l00304\"></a><span class=\"lineno\">  304</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00305\" name=\"l00305\"></a><span class=\"lineno\">  305</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00306\" name=\"l00306\"></a><span class=\"lineno\">  306</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\">  307</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00308\" name=\"l00308\"></a><span class=\"lineno\">  308</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l00309\" name=\"l00309\"></a><span class=\"lineno\">  309</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l00310\" name=\"l00310\"></a><span class=\"lineno\">  310</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00311\" name=\"l00311\"></a><span class=\"lineno\">  311</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n+<div class=\"line\"><a id=\"l00312\" name=\"l00312\"></a><span class=\"lineno\">  312</span>        <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01313.html\">OmpEvaluator</a> *instance = NULL,</div>\n+<div class=\"line\"><a id=\"l00313\" name=\"l00313\"></a><span class=\"lineno\">  313</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l00314\" name=\"l00314\"></a><span class=\"lineno\">  314</span> </div>\n+<div class=\"line\"><a id=\"l00315\" name=\"l00315\"></a><span class=\"lineno\">  315</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00316\" name=\"l00316\"></a><span class=\"lineno\">  316</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00317\" name=\"l00317\"></a><span class=\"lineno\">  317</span> </div>\n+<div class=\"line\"><a id=\"l00318\" name=\"l00318\"></a><span class=\"lineno\">  318</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01313.html#a76ac331e29d26f25d0d807b74c1a838b\">EvalStencils</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00319\" name=\"l00319\"></a><span class=\"lineno\">  319</span>                            dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00320\" name=\"l00320\"></a><span class=\"lineno\">  320</span>                            duBuffer-&gt;BindCpuBuffer(),  duDesc,</div>\n+<div class=\"line\"><a id=\"l00321\" name=\"l00321\"></a><span class=\"lineno\">  321</span>                            dvBuffer-&gt;BindCpuBuffer(),  dvDesc,</div>\n+<div class=\"line\"><a id=\"l00322\" name=\"l00322\"></a><span class=\"lineno\">  322</span>                            duuBuffer-&gt;BindCpuBuffer(), duuDesc,</div>\n+<div class=\"line\"><a id=\"l00323\" name=\"l00323\"></a><span class=\"lineno\">  323</span>                            duvBuffer-&gt;BindCpuBuffer(), duvDesc,</div>\n+<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\">  324</span>                            dvvBuffer-&gt;BindCpuBuffer(), dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\">  325</span>                            &amp;stencilTable-&gt;GetSizes()[0],</div>\n+<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\">  326</span>                            &amp;stencilTable-&gt;GetOffsets()[0],</div>\n+<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\">  327</span>                            &amp;stencilTable-&gt;GetControlIndices()[0],</div>\n+<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\">  328</span>                            &amp;stencilTable-&gt;GetWeights()[0],</div>\n+<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\">  329</span>                            &amp;stencilTable-&gt;GetDuWeights()[0],</div>\n+<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\">  330</span>                            &amp;stencilTable-&gt;GetDvWeights()[0],</div>\n+<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\">  331</span>                            &amp;stencilTable-&gt;GetDuuWeights()[0],</div>\n+<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\">  332</span>                            &amp;stencilTable-&gt;GetDuvWeights()[0],</div>\n+<div class=\"line\"><a id=\"l00333\" name=\"l00333\"></a><span class=\"lineno\">  333</span>                            &amp;stencilTable-&gt;GetDvvWeights()[0],</div>\n+<div class=\"line\"><a id=\"l00334\" name=\"l00334\"></a><span class=\"lineno\">  334</span>                            <span class=\"comment\">/*start = */</span> 0,</div>\n+<div class=\"line\"><a id=\"l00335\" name=\"l00335\"></a><span class=\"lineno\">  335</span>                            <span class=\"comment\">/*end   = */</span> stencilTable-&gt;GetNumStencils());</div>\n+<div class=\"line\"><a id=\"l00336\" name=\"l00336\"></a><span class=\"lineno\">  336</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00337\" name=\"l00337\"></a><span class=\"lineno\">  337</span> </div>\n+<div class=\"line\"><a id=\"l00399\" name=\"l00399\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01313.html#a76707de0a89ab94f15ad4b2c398a2c23\">  399</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01313.html#a76707de0a89ab94f15ad4b2c398a2c23\">EvalStencils</a>(</div>\n+<div class=\"line\"><a id=\"l00400\" name=\"l00400\"></a><span class=\"lineno\">  400</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00401\" name=\"l00401\"></a><span class=\"lineno\">  401</span>        <span class=\"keywordtype\">float</span> *dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00402\" name=\"l00402\"></a><span class=\"lineno\">  402</span>        <span class=\"keywordtype\">float</span> *du,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00403\" name=\"l00403\"></a><span class=\"lineno\">  403</span>        <span class=\"keywordtype\">float</span> *dv,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00404\" name=\"l00404\"></a><span class=\"lineno\">  404</span>        <span class=\"keywordtype\">float</span> *duu,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l00405\" name=\"l00405\"></a><span class=\"lineno\">  405</span>        <span class=\"keywordtype\">float</span> *duv,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l00406\" name=\"l00406\"></a><span class=\"lineno\">  406</span>        <span class=\"keywordtype\">float</span> *dvv,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00407\" name=\"l00407\"></a><span class=\"lineno\">  407</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * sizes,</div>\n+<div class=\"line\"><a id=\"l00408\" name=\"l00408\"></a><span class=\"lineno\">  408</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * offsets,</div>\n+<div class=\"line\"><a id=\"l00409\" name=\"l00409\"></a><span class=\"lineno\">  409</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * indices,</div>\n+<div class=\"line\"><a id=\"l00410\" name=\"l00410\"></a><span class=\"lineno\">  410</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * weights,</div>\n+<div class=\"line\"><a id=\"l00411\" name=\"l00411\"></a><span class=\"lineno\">  411</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * duWeights,</div>\n+<div class=\"line\"><a id=\"l00412\" name=\"l00412\"></a><span class=\"lineno\">  412</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * dvWeights,</div>\n+<div class=\"line\"><a id=\"l00413\" name=\"l00413\"></a><span class=\"lineno\">  413</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * duuWeights,</div>\n+<div class=\"line\"><a id=\"l00414\" name=\"l00414\"></a><span class=\"lineno\">  414</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * duvWeights,</div>\n+<div class=\"line\"><a id=\"l00415\" name=\"l00415\"></a><span class=\"lineno\">  415</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * dvvWeights,</div>\n+<div class=\"line\"><a id=\"l00416\" name=\"l00416\"></a><span class=\"lineno\">  416</span>        <span class=\"keywordtype\">int</span> start, <span class=\"keywordtype\">int</span> end);</div>\n+<div class=\"line\"><a id=\"l00417\" name=\"l00417\"></a><span class=\"lineno\">  417</span> </div>\n+<div class=\"line\"><a id=\"l00423\" name=\"l00423\"></a><span class=\"lineno\">  423</span> </div>\n+<div class=\"line\"><a id=\"l00452\" name=\"l00452\"></a><span class=\"lineno\">  452</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l00453\" name=\"l00453\"></a><span class=\"lineno\">  453</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00454\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00454\" name=\"l00454\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01313.html#abbbc45452da270eafbeb163a0e78df03\">  454</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01313.html#abbbc45452da270eafbeb163a0e78df03\">EvalPatches</a>(</div>\n+<div class=\"line\"><a id=\"l00455\" name=\"l00455\"></a><span class=\"lineno\">  455</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00456\" name=\"l00456\"></a><span class=\"lineno\">  456</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00457\" name=\"l00457\"></a><span class=\"lineno\">  457</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00458\" name=\"l00458\"></a><span class=\"lineno\">  458</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l00459\" name=\"l00459\"></a><span class=\"lineno\">  459</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l00460\" name=\"l00460\"></a><span class=\"lineno\">  460</span>        <a class=\"code hl_class\" href=\"a01313.html\">OmpEvaluator</a> <span class=\"keyword\">const</span> *instance = NULL,</div>\n+<div class=\"line\"><a id=\"l00461\" name=\"l00461\"></a><span class=\"lineno\">  461</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l00462\" name=\"l00462\"></a><span class=\"lineno\">  462</span> </div>\n+<div class=\"line\"><a id=\"l00463\" name=\"l00463\"></a><span class=\"lineno\">  463</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00464\" name=\"l00464\"></a><span class=\"lineno\">  464</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00465\" name=\"l00465\"></a><span class=\"lineno\">  465</span> </div>\n+<div class=\"line\"><a id=\"l00466\" name=\"l00466\"></a><span class=\"lineno\">  466</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01313.html#abbbc45452da270eafbeb163a0e78df03\">EvalPatches</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00467\" name=\"l00467\"></a><span class=\"lineno\">  467</span>                           dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00468\" name=\"l00468\"></a><span class=\"lineno\">  468</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00469\" name=\"l00469\"></a><span class=\"lineno\">  469</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a>*)patchCoords-&gt;BindCpuBuffer(),</div>\n+<div class=\"line\"><a id=\"l00470\" name=\"l00470\"></a><span class=\"lineno\">  470</span>                           patchTable-&gt;GetPatchArrayBuffer(),</div>\n+<div class=\"line\"><a id=\"l00471\" name=\"l00471\"></a><span class=\"lineno\">  471</span>                           patchTable-&gt;GetPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l00472\" name=\"l00472\"></a><span class=\"lineno\">  472</span>                           patchTable-&gt;GetPatchParamBuffer());</div>\n+<div class=\"line\"><a id=\"l00473\" name=\"l00473\"></a><span class=\"lineno\">  473</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00474\" name=\"l00474\"></a><span class=\"lineno\">  474</span> </div>\n+<div class=\"line\"><a id=\"l00515\" name=\"l00515\"></a><span class=\"lineno\">  515</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l00516\" name=\"l00516\"></a><span class=\"lineno\">  516</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00517\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00517\" name=\"l00517\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01313.html#a8ec09b3a6962ce219f54fb5edec53640\">  517</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01313.html#a8ec09b3a6962ce219f54fb5edec53640\">EvalPatches</a>(</div>\n+<div class=\"line\"><a id=\"l00518\" name=\"l00518\"></a><span class=\"lineno\">  518</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00519\" name=\"l00519\"></a><span class=\"lineno\">  519</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00520\" name=\"l00520\"></a><span class=\"lineno\">  520</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00521\" name=\"l00521\"></a><span class=\"lineno\">  521</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00522\" name=\"l00522\"></a><span class=\"lineno\">  522</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00523\" name=\"l00523\"></a><span class=\"lineno\">  523</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l00524\" name=\"l00524\"></a><span class=\"lineno\">  524</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l00525\" name=\"l00525\"></a><span class=\"lineno\">  525</span>        <a class=\"code hl_class\" href=\"a01313.html\">OmpEvaluator</a> <span class=\"keyword\">const</span> *instance = NULL,</div>\n+<div class=\"line\"><a id=\"l00526\" name=\"l00526\"></a><span class=\"lineno\">  526</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l00527\" name=\"l00527\"></a><span class=\"lineno\">  527</span> </div>\n+<div class=\"line\"><a id=\"l00528\" name=\"l00528\"></a><span class=\"lineno\">  528</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00529\" name=\"l00529\"></a><span class=\"lineno\">  529</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00530\" name=\"l00530\"></a><span class=\"lineno\">  530</span> </div>\n+<div class=\"line\"><a id=\"l00531\" name=\"l00531\"></a><span class=\"lineno\">  531</span>        <span class=\"comment\">// XXX: PatchCoords is somewhat abusing vertex primvar buffer interop.</span></div>\n+<div class=\"line\"><a id=\"l00532\" name=\"l00532\"></a><span class=\"lineno\">  532</span>        <span class=\"comment\">//      ideally all buffer classes should have templated by datatype</span></div>\n+<div class=\"line\"><a id=\"l00533\" name=\"l00533\"></a><span class=\"lineno\">  533</span>        <span class=\"comment\">//      so that downcast isn&#39;t needed there.</span></div>\n+<div class=\"line\"><a id=\"l00534\" name=\"l00534\"></a><span class=\"lineno\">  534</span>        <span class=\"comment\">//      (e.g. Osd::CpuBuffer&lt;PatchCoord&gt; )</span></div>\n+<div class=\"line\"><a id=\"l00535\" name=\"l00535\"></a><span class=\"lineno\">  535</span>        <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00536\" name=\"l00536\"></a><span class=\"lineno\">  536</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01313.html#abbbc45452da270eafbeb163a0e78df03\">EvalPatches</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00537\" name=\"l00537\"></a><span class=\"lineno\">  537</span>                           dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00538\" name=\"l00538\"></a><span class=\"lineno\">  538</span>                           duBuffer-&gt;BindCpuBuffer(),  duDesc,</div>\n+<div class=\"line\"><a id=\"l00539\" name=\"l00539\"></a><span class=\"lineno\">  539</span>                           dvBuffer-&gt;BindCpuBuffer(),  dvDesc,</div>\n+<div class=\"line\"><a id=\"l00540\" name=\"l00540\"></a><span class=\"lineno\">  540</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00541\" name=\"l00541\"></a><span class=\"lineno\">  541</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a>*)patchCoords-&gt;BindCpuBuffer(),</div>\n+<div class=\"line\"><a id=\"l00542\" name=\"l00542\"></a><span class=\"lineno\">  542</span>                           patchTable-&gt;GetPatchArrayBuffer(),</div>\n+<div class=\"line\"><a id=\"l00543\" name=\"l00543\"></a><span class=\"lineno\">  543</span>                           patchTable-&gt;GetPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l00544\" name=\"l00544\"></a><span class=\"lineno\">  544</span>                           patchTable-&gt;GetPatchParamBuffer());</div>\n+<div class=\"line\"><a id=\"l00545\" name=\"l00545\"></a><span class=\"lineno\">  545</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00546\" name=\"l00546\"></a><span class=\"lineno\">  546</span> </div>\n+<div class=\"line\"><a id=\"l00605\" name=\"l00605\"></a><span class=\"lineno\">  605</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l00606\" name=\"l00606\"></a><span class=\"lineno\">  606</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00607\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00607\" name=\"l00607\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01313.html#a9644130ae2673ec46111cf6b466b3e90\">  607</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01313.html#a9644130ae2673ec46111cf6b466b3e90\">EvalPatches</a>(</div>\n+<div class=\"line\"><a id=\"l00608\" name=\"l00608\"></a><span class=\"lineno\">  608</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00609\" name=\"l00609\"></a><span class=\"lineno\">  609</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00610\" name=\"l00610\"></a><span class=\"lineno\">  610</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00611\" name=\"l00611\"></a><span class=\"lineno\">  611</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00612\" name=\"l00612\"></a><span class=\"lineno\">  612</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l00613\" name=\"l00613\"></a><span class=\"lineno\">  613</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l00614\" name=\"l00614\"></a><span class=\"lineno\">  614</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00615\" name=\"l00615\"></a><span class=\"lineno\">  615</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00616\" name=\"l00616\"></a><span class=\"lineno\">  616</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l00617\" name=\"l00617\"></a><span class=\"lineno\">  617</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l00618\" name=\"l00618\"></a><span class=\"lineno\">  618</span>        <a class=\"code hl_class\" href=\"a01313.html\">OmpEvaluator</a> <span class=\"keyword\">const</span> *instance = NULL,</div>\n+<div class=\"line\"><a id=\"l00619\" name=\"l00619\"></a><span class=\"lineno\">  619</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l00620\" name=\"l00620\"></a><span class=\"lineno\">  620</span> </div>\n+<div class=\"line\"><a id=\"l00621\" name=\"l00621\"></a><span class=\"lineno\">  621</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00622\" name=\"l00622\"></a><span class=\"lineno\">  622</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00623\" name=\"l00623\"></a><span class=\"lineno\">  623</span> </div>\n+<div class=\"line\"><a id=\"l00624\" name=\"l00624\"></a><span class=\"lineno\">  624</span>        <span class=\"comment\">// XXX: PatchCoords is somewhat abusing vertex primvar buffer interop.</span></div>\n+<div class=\"line\"><a id=\"l00625\" name=\"l00625\"></a><span class=\"lineno\">  625</span>        <span class=\"comment\">//      ideally all buffer classes should have templated by datatype</span></div>\n+<div class=\"line\"><a id=\"l00626\" name=\"l00626\"></a><span class=\"lineno\">  626</span>        <span class=\"comment\">//      so that downcast isn&#39;t needed there.</span></div>\n+<div class=\"line\"><a id=\"l00627\" name=\"l00627\"></a><span class=\"lineno\">  627</span>        <span class=\"comment\">//      (e.g. Osd::CpuBuffer&lt;PatchCoord&gt; )</span></div>\n+<div class=\"line\"><a id=\"l00628\" name=\"l00628\"></a><span class=\"lineno\">  628</span>        <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00629\" name=\"l00629\"></a><span class=\"lineno\">  629</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01313.html#abbbc45452da270eafbeb163a0e78df03\">EvalPatches</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00630\" name=\"l00630\"></a><span class=\"lineno\">  630</span>                           dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00631\" name=\"l00631\"></a><span class=\"lineno\">  631</span>                           duBuffer-&gt;BindCpuBuffer(),  duDesc,</div>\n+<div class=\"line\"><a id=\"l00632\" name=\"l00632\"></a><span class=\"lineno\">  632</span>                           dvBuffer-&gt;BindCpuBuffer(),  dvDesc,</div>\n+<div class=\"line\"><a id=\"l00633\" name=\"l00633\"></a><span class=\"lineno\">  633</span>                           duuBuffer-&gt;BindCpuBuffer(), duuDesc,</div>\n+<div class=\"line\"><a id=\"l00634\" name=\"l00634\"></a><span class=\"lineno\">  634</span>                           duvBuffer-&gt;BindCpuBuffer(), duvDesc,</div>\n+<div class=\"line\"><a id=\"l00635\" name=\"l00635\"></a><span class=\"lineno\">  635</span>                           dvvBuffer-&gt;BindCpuBuffer(), dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00636\" name=\"l00636\"></a><span class=\"lineno\">  636</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00637\" name=\"l00637\"></a><span class=\"lineno\">  637</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a>*)patchCoords-&gt;BindCpuBuffer(),</div>\n+<div class=\"line\"><a id=\"l00638\" name=\"l00638\"></a><span class=\"lineno\">  638</span>                           patchTable-&gt;GetPatchArrayBuffer(),</div>\n+<div class=\"line\"><a id=\"l00639\" name=\"l00639\"></a><span class=\"lineno\">  639</span>                           patchTable-&gt;GetPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l00640\" name=\"l00640\"></a><span class=\"lineno\">  640</span>                           patchTable-&gt;GetPatchParamBuffer());</div>\n+<div class=\"line\"><a id=\"l00641\" name=\"l00641\"></a><span class=\"lineno\">  641</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00642\" name=\"l00642\"></a><span class=\"lineno\">  642</span> </div>\n+<div class=\"line\"><a id=\"l00670\" name=\"l00670\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01313.html#ad5b907c22dfcb943e5f25f3c16543535\">  670</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01313.html#ad5b907c22dfcb943e5f25f3c16543535\">EvalPatches</a>(</div>\n+<div class=\"line\"><a id=\"l00671\" name=\"l00671\"></a><span class=\"lineno\">  671</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00672\" name=\"l00672\"></a><span class=\"lineno\">  672</span>        <span class=\"keywordtype\">float</span> *dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00673\" name=\"l00673\"></a><span class=\"lineno\">  673</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00674\" name=\"l00674\"></a><span class=\"lineno\">  674</span>        <span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a> *patchCoords,</div>\n+<div class=\"line\"><a id=\"l00675\" name=\"l00675\"></a><span class=\"lineno\">  675</span>        <span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01325.html\">PatchArray</a> *patchArrays,</div>\n+<div class=\"line\"><a id=\"l00676\" name=\"l00676\"></a><span class=\"lineno\">  676</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> *patchIndexBuffer,</div>\n+<div class=\"line\"><a id=\"l00677\" name=\"l00677\"></a><span class=\"lineno\">  677</span>        <span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01329.html\">PatchParam</a> *patchParamBuffer);</div>\n+<div class=\"line\"><a id=\"l00678\" name=\"l00678\"></a><span class=\"lineno\">  678</span> </div>\n+<div class=\"line\"><a id=\"l00716\" name=\"l00716\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01313.html#ac1dba254bc287312f8f812113c8e8ad3\">  716</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01313.html#ac1dba254bc287312f8f812113c8e8ad3\">EvalPatches</a>(</div>\n+<div class=\"line\"><a id=\"l00717\" name=\"l00717\"></a><span class=\"lineno\">  717</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00718\" name=\"l00718\"></a><span class=\"lineno\">  718</span>        <span class=\"keywordtype\">float</span> *dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00719\" name=\"l00719\"></a><span class=\"lineno\">  719</span>        <span class=\"keywordtype\">float</span> *du,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00720\" name=\"l00720\"></a><span class=\"lineno\">  720</span>        <span class=\"keywordtype\">float</span> *dv,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00721\" name=\"l00721\"></a><span class=\"lineno\">  721</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00722\" name=\"l00722\"></a><span class=\"lineno\">  722</span>        <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a> <span class=\"keyword\">const</span> *patchCoords,</div>\n+<div class=\"line\"><a id=\"l00723\" name=\"l00723\"></a><span class=\"lineno\">  723</span>        <a class=\"code hl_struct\" href=\"a01325.html\">PatchArray</a> <span class=\"keyword\">const</span> *patchArrays,</div>\n+<div class=\"line\"><a id=\"l00724\" name=\"l00724\"></a><span class=\"lineno\">  724</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> *patchIndexBuffer,</div>\n+<div class=\"line\"><a id=\"l00725\" name=\"l00725\"></a><span class=\"lineno\">  725</span>        <a class=\"code hl_struct\" href=\"a01329.html\">PatchParam</a> <span class=\"keyword\">const</span> *patchParamBuffer);</div>\n+<div class=\"line\"><a id=\"l00726\" name=\"l00726\"></a><span class=\"lineno\">  726</span> </div>\n+<div class=\"line\"><a id=\"l00779\" name=\"l00779\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01313.html#a7b556148d6ef2e04fbe99677e3a87e91\">  779</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01313.html#a7b556148d6ef2e04fbe99677e3a87e91\">EvalPatches</a>(</div>\n+<div class=\"line\"><a id=\"l00780\" name=\"l00780\"></a><span class=\"lineno\">  780</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00781\" name=\"l00781\"></a><span class=\"lineno\">  781</span>        <span class=\"keywordtype\">float</span> *dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00782\" name=\"l00782\"></a><span class=\"lineno\">  782</span>        <span class=\"keywordtype\">float</span> *du,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00783\" name=\"l00783\"></a><span class=\"lineno\">  783</span>        <span class=\"keywordtype\">float</span> *dv,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00784\" name=\"l00784\"></a><span class=\"lineno\">  784</span>        <span class=\"keywordtype\">float</span> *duu,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l00785\" name=\"l00785\"></a><span class=\"lineno\">  785</span>        <span class=\"keywordtype\">float</span> *duv,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l00786\" name=\"l00786\"></a><span class=\"lineno\">  786</span>        <span class=\"keywordtype\">float</span> *dvv,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00787\" name=\"l00787\"></a><span class=\"lineno\">  787</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00788\" name=\"l00788\"></a><span class=\"lineno\">  788</span>        <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a> <span class=\"keyword\">const</span> *patchCoords,</div>\n+<div class=\"line\"><a id=\"l00789\" name=\"l00789\"></a><span class=\"lineno\">  789</span>        <a class=\"code hl_struct\" href=\"a01325.html\">PatchArray</a> <span class=\"keyword\">const</span> *patchArrays,</div>\n+<div class=\"line\"><a id=\"l00790\" name=\"l00790\"></a><span class=\"lineno\">  790</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> *patchIndexBuffer,</div>\n+<div class=\"line\"><a id=\"l00791\" name=\"l00791\"></a><span class=\"lineno\">  791</span>        <a class=\"code hl_struct\" href=\"a01329.html\">PatchParam</a> <span class=\"keyword\">const</span> *patchParamBuffer);</div>\n+<div class=\"line\"><a id=\"l00792\" name=\"l00792\"></a><span class=\"lineno\">  792</span> </div>\n+<div class=\"line\"><a id=\"l00821\" name=\"l00821\"></a><span class=\"lineno\">  821</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l00822\" name=\"l00822\"></a><span class=\"lineno\">  822</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00823\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00823\" name=\"l00823\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01313.html#a6e57edf33d097abc92fbafe7e4ae9224\">  823</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01313.html#a6e57edf33d097abc92fbafe7e4ae9224\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l00824\" name=\"l00824\"></a><span class=\"lineno\">  824</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00825\" name=\"l00825\"></a><span class=\"lineno\">  825</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00826\" name=\"l00826\"></a><span class=\"lineno\">  826</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00827\" name=\"l00827\"></a><span class=\"lineno\">  827</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l00828\" name=\"l00828\"></a><span class=\"lineno\">  828</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l00829\" name=\"l00829\"></a><span class=\"lineno\">  829</span>        <a class=\"code hl_class\" href=\"a01313.html\">OmpEvaluator</a> <span class=\"keyword\">const</span> *instance = NULL,</div>\n+<div class=\"line\"><a id=\"l00830\" name=\"l00830\"></a><span class=\"lineno\">  830</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l00831\" name=\"l00831\"></a><span class=\"lineno\">  831</span> </div>\n+<div class=\"line\"><a id=\"l00832\" name=\"l00832\"></a><span class=\"lineno\">  832</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00833\" name=\"l00833\"></a><span class=\"lineno\">  833</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00834\" name=\"l00834\"></a><span class=\"lineno\">  834</span> </div>\n+<div class=\"line\"><a id=\"l00835\" name=\"l00835\"></a><span class=\"lineno\">  835</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01313.html#abbbc45452da270eafbeb163a0e78df03\">EvalPatches</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00836\" name=\"l00836\"></a><span class=\"lineno\">  836</span>                           dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00837\" name=\"l00837\"></a><span class=\"lineno\">  837</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00838\" name=\"l00838\"></a><span class=\"lineno\">  838</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a>*)patchCoords-&gt;BindCpuBuffer(),</div>\n+<div class=\"line\"><a id=\"l00839\" name=\"l00839\"></a><span class=\"lineno\">  839</span>                           patchTable-&gt;GetVaryingPatchArrayBuffer(),</div>\n+<div class=\"line\"><a id=\"l00840\" name=\"l00840\"></a><span class=\"lineno\">  840</span>                           patchTable-&gt;GetVaryingPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l00841\" name=\"l00841\"></a><span class=\"lineno\">  841</span>                           patchTable-&gt;GetPatchParamBuffer());</div>\n+<div class=\"line\"><a id=\"l00842\" name=\"l00842\"></a><span class=\"lineno\">  842</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00843\" name=\"l00843\"></a><span class=\"lineno\">  843</span> </div>\n+<div class=\"line\"><a id=\"l00884\" name=\"l00884\"></a><span class=\"lineno\">  884</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l00885\" name=\"l00885\"></a><span class=\"lineno\">  885</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00886\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00886\" name=\"l00886\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01313.html#a95dcfa63c8f686a8a30b46dcc563d5fe\">  886</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01313.html#a95dcfa63c8f686a8a30b46dcc563d5fe\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l00887\" name=\"l00887\"></a><span class=\"lineno\">  887</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00888\" name=\"l00888\"></a><span class=\"lineno\">  888</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00889\" name=\"l00889\"></a><span class=\"lineno\">  889</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00890\" name=\"l00890\"></a><span class=\"lineno\">  890</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00891\" name=\"l00891\"></a><span class=\"lineno\">  891</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00892\" name=\"l00892\"></a><span class=\"lineno\">  892</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l00893\" name=\"l00893\"></a><span class=\"lineno\">  893</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l00894\" name=\"l00894\"></a><span class=\"lineno\">  894</span>        <a class=\"code hl_class\" href=\"a01313.html\">OmpEvaluator</a> <span class=\"keyword\">const</span> *instance = NULL,</div>\n+<div class=\"line\"><a id=\"l00895\" name=\"l00895\"></a><span class=\"lineno\">  895</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l00896\" name=\"l00896\"></a><span class=\"lineno\">  896</span> </div>\n+<div class=\"line\"><a id=\"l00897\" name=\"l00897\"></a><span class=\"lineno\">  897</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00898\" name=\"l00898\"></a><span class=\"lineno\">  898</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00899\" name=\"l00899\"></a><span class=\"lineno\">  899</span> </div>\n+<div class=\"line\"><a id=\"l00900\" name=\"l00900\"></a><span class=\"lineno\">  900</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01313.html#abbbc45452da270eafbeb163a0e78df03\">EvalPatches</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00901\" name=\"l00901\"></a><span class=\"lineno\">  901</span>                           dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00902\" name=\"l00902\"></a><span class=\"lineno\">  902</span>                           duBuffer-&gt;BindCpuBuffer(),  duDesc,</div>\n+<div class=\"line\"><a id=\"l00903\" name=\"l00903\"></a><span class=\"lineno\">  903</span>                           dvBuffer-&gt;BindCpuBuffer(),  dvDesc,</div>\n+<div class=\"line\"><a id=\"l00904\" name=\"l00904\"></a><span class=\"lineno\">  904</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00905\" name=\"l00905\"></a><span class=\"lineno\">  905</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a>*)patchCoords-&gt;BindCpuBuffer(),</div>\n+<div class=\"line\"><a id=\"l00906\" name=\"l00906\"></a><span class=\"lineno\">  906</span>                           patchTable-&gt;GetVaryingPatchArrayBuffer(),</div>\n+<div class=\"line\"><a id=\"l00907\" name=\"l00907\"></a><span class=\"lineno\">  907</span>                           patchTable-&gt;GetVaryingPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l00908\" name=\"l00908\"></a><span class=\"lineno\">  908</span>                           patchTable-&gt;GetPatchParamBuffer());</div>\n+<div class=\"line\"><a id=\"l00909\" name=\"l00909\"></a><span class=\"lineno\">  909</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00910\" name=\"l00910\"></a><span class=\"lineno\">  910</span> </div>\n+<div class=\"line\"><a id=\"l00969\" name=\"l00969\"></a><span class=\"lineno\">  969</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l00970\" name=\"l00970\"></a><span class=\"lineno\">  970</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00971\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00971\" name=\"l00971\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01313.html#a5e2b53fce1097e9ec639828256aa44f1\">  971</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01313.html#a5e2b53fce1097e9ec639828256aa44f1\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l00972\" name=\"l00972\"></a><span class=\"lineno\">  972</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00973\" name=\"l00973\"></a><span class=\"lineno\">  973</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00974\" name=\"l00974\"></a><span class=\"lineno\">  974</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00975\" name=\"l00975\"></a><span class=\"lineno\">  975</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00976\" name=\"l00976\"></a><span class=\"lineno\">  976</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l00977\" name=\"l00977\"></a><span class=\"lineno\">  977</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l00978\" name=\"l00978\"></a><span class=\"lineno\">  978</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00979\" name=\"l00979\"></a><span class=\"lineno\">  979</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00980\" name=\"l00980\"></a><span class=\"lineno\">  980</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l00981\" name=\"l00981\"></a><span class=\"lineno\">  981</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l00982\" name=\"l00982\"></a><span class=\"lineno\">  982</span>        <a class=\"code hl_class\" href=\"a01313.html\">OmpEvaluator</a> <span class=\"keyword\">const</span> *instance = NULL,</div>\n+<div class=\"line\"><a id=\"l00983\" name=\"l00983\"></a><span class=\"lineno\">  983</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l00984\" name=\"l00984\"></a><span class=\"lineno\">  984</span> </div>\n+<div class=\"line\"><a id=\"l00985\" name=\"l00985\"></a><span class=\"lineno\">  985</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00986\" name=\"l00986\"></a><span class=\"lineno\">  986</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00987\" name=\"l00987\"></a><span class=\"lineno\">  987</span> </div>\n+<div class=\"line\"><a id=\"l00988\" name=\"l00988\"></a><span class=\"lineno\">  988</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01313.html#abbbc45452da270eafbeb163a0e78df03\">EvalPatches</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00989\" name=\"l00989\"></a><span class=\"lineno\">  989</span>                           dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00990\" name=\"l00990\"></a><span class=\"lineno\">  990</span>                           duBuffer-&gt;BindCpuBuffer(),  duDesc,</div>\n+<div class=\"line\"><a id=\"l00991\" name=\"l00991\"></a><span class=\"lineno\">  991</span>                           dvBuffer-&gt;BindCpuBuffer(),  dvDesc,</div>\n+<div class=\"line\"><a id=\"l00992\" name=\"l00992\"></a><span class=\"lineno\">  992</span>                           duuBuffer-&gt;BindCpuBuffer(), duuDesc,</div>\n+<div class=\"line\"><a id=\"l00993\" name=\"l00993\"></a><span class=\"lineno\">  993</span>                           duvBuffer-&gt;BindCpuBuffer(), duvDesc,</div>\n+<div class=\"line\"><a id=\"l00994\" name=\"l00994\"></a><span class=\"lineno\">  994</span>                           dvvBuffer-&gt;BindCpuBuffer(), dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00995\" name=\"l00995\"></a><span class=\"lineno\">  995</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00996\" name=\"l00996\"></a><span class=\"lineno\">  996</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a>*)patchCoords-&gt;BindCpuBuffer(),</div>\n+<div class=\"line\"><a id=\"l00997\" name=\"l00997\"></a><span class=\"lineno\">  997</span>                           patchTable-&gt;GetVaryingPatchArrayBuffer(),</div>\n+<div class=\"line\"><a id=\"l00998\" name=\"l00998\"></a><span class=\"lineno\">  998</span>                           patchTable-&gt;GetVaryingPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l00999\" name=\"l00999\"></a><span class=\"lineno\">  999</span>                           patchTable-&gt;GetPatchParamBuffer());</div>\n+<div class=\"line\"><a id=\"l01000\" name=\"l01000\"></a><span class=\"lineno\"> 1000</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01001\" name=\"l01001\"></a><span class=\"lineno\"> 1001</span> </div>\n+<div class=\"line\"><a id=\"l01032\" name=\"l01032\"></a><span class=\"lineno\"> 1032</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01033\" name=\"l01033\"></a><span class=\"lineno\"> 1033</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01034\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01034\" name=\"l01034\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01313.html#a0fa8e0e28a0ceff063bd07e098abd645\"> 1034</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01313.html#a0fa8e0e28a0ceff063bd07e098abd645\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01035\" name=\"l01035\"></a><span class=\"lineno\"> 1035</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01036\" name=\"l01036\"></a><span class=\"lineno\"> 1036</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01037\" name=\"l01037\"></a><span class=\"lineno\"> 1037</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01038\" name=\"l01038\"></a><span class=\"lineno\"> 1038</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01039\" name=\"l01039\"></a><span class=\"lineno\"> 1039</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l01040\" name=\"l01040\"></a><span class=\"lineno\"> 1040</span>        <span class=\"keywordtype\">int</span> fvarChannel,</div>\n+<div class=\"line\"><a id=\"l01041\" name=\"l01041\"></a><span class=\"lineno\"> 1041</span>        <a class=\"code hl_class\" href=\"a01313.html\">OmpEvaluator</a> <span class=\"keyword\">const</span> *instance = NULL,</div>\n+<div class=\"line\"><a id=\"l01042\" name=\"l01042\"></a><span class=\"lineno\"> 1042</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l01043\" name=\"l01043\"></a><span class=\"lineno\"> 1043</span> </div>\n+<div class=\"line\"><a id=\"l01044\" name=\"l01044\"></a><span class=\"lineno\"> 1044</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l01045\" name=\"l01045\"></a><span class=\"lineno\"> 1045</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l01046\" name=\"l01046\"></a><span class=\"lineno\"> 1046</span> </div>\n+<div class=\"line\"><a id=\"l01047\" name=\"l01047\"></a><span class=\"lineno\"> 1047</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01313.html#abbbc45452da270eafbeb163a0e78df03\">EvalPatches</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01048\" name=\"l01048\"></a><span class=\"lineno\"> 1048</span>                           dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01049\" name=\"l01049\"></a><span class=\"lineno\"> 1049</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01050\" name=\"l01050\"></a><span class=\"lineno\"> 1050</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a>*)patchCoords-&gt;BindCpuBuffer(),</div>\n+<div class=\"line\"><a id=\"l01051\" name=\"l01051\"></a><span class=\"lineno\"> 1051</span>                           patchTable-&gt;GetFVarPatchArrayBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01052\" name=\"l01052\"></a><span class=\"lineno\"> 1052</span>                           patchTable-&gt;GetFVarPatchIndexBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01053\" name=\"l01053\"></a><span class=\"lineno\"> 1053</span>                           patchTable-&gt;GetFVarPatchParamBuffer(fvarChannel));</div>\n+<div class=\"line\"><a id=\"l01054\" name=\"l01054\"></a><span class=\"lineno\"> 1054</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01055\" name=\"l01055\"></a><span class=\"lineno\"> 1055</span> </div>\n+<div class=\"line\"><a id=\"l01098\" name=\"l01098\"></a><span class=\"lineno\"> 1098</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01099\" name=\"l01099\"></a><span class=\"lineno\"> 1099</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01100\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01100\" name=\"l01100\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01313.html#a708ed2ca5a7497a5679cd660546ec4da\"> 1100</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01313.html#a708ed2ca5a7497a5679cd660546ec4da\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01101\" name=\"l01101\"></a><span class=\"lineno\"> 1101</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01102\" name=\"l01102\"></a><span class=\"lineno\"> 1102</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01103\" name=\"l01103\"></a><span class=\"lineno\"> 1103</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l01104\" name=\"l01104\"></a><span class=\"lineno\"> 1104</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l01105\" name=\"l01105\"></a><span class=\"lineno\"> 1105</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01106\" name=\"l01106\"></a><span class=\"lineno\"> 1106</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01107\" name=\"l01107\"></a><span class=\"lineno\"> 1107</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l01108\" name=\"l01108\"></a><span class=\"lineno\"> 1108</span>        <span class=\"keywordtype\">int</span> fvarChannel,</div>\n+<div class=\"line\"><a id=\"l01109\" name=\"l01109\"></a><span class=\"lineno\"> 1109</span>        <a class=\"code hl_class\" href=\"a01313.html\">OmpEvaluator</a> <span class=\"keyword\">const</span> *instance = NULL,</div>\n+<div class=\"line\"><a id=\"l01110\" name=\"l01110\"></a><span class=\"lineno\"> 1110</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l01111\" name=\"l01111\"></a><span class=\"lineno\"> 1111</span> </div>\n+<div class=\"line\"><a id=\"l01112\" name=\"l01112\"></a><span class=\"lineno\"> 1112</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l01113\" name=\"l01113\"></a><span class=\"lineno\"> 1113</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l01114\" name=\"l01114\"></a><span class=\"lineno\"> 1114</span> </div>\n+<div class=\"line\"><a id=\"l01115\" name=\"l01115\"></a><span class=\"lineno\"> 1115</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01313.html#abbbc45452da270eafbeb163a0e78df03\">EvalPatches</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01116\" name=\"l01116\"></a><span class=\"lineno\"> 1116</span>                           dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01117\" name=\"l01117\"></a><span class=\"lineno\"> 1117</span>                           duBuffer-&gt;BindCpuBuffer(),  duDesc,</div>\n+<div class=\"line\"><a id=\"l01118\" name=\"l01118\"></a><span class=\"lineno\"> 1118</span>                           dvBuffer-&gt;BindCpuBuffer(),  dvDesc,</div>\n+<div class=\"line\"><a id=\"l01119\" name=\"l01119\"></a><span class=\"lineno\"> 1119</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01120\" name=\"l01120\"></a><span class=\"lineno\"> 1120</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a>*)patchCoords-&gt;BindCpuBuffer(),</div>\n+<div class=\"line\"><a id=\"l01121\" name=\"l01121\"></a><span class=\"lineno\"> 1121</span>                           patchTable-&gt;GetFVarPatchArrayBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01122\" name=\"l01122\"></a><span class=\"lineno\"> 1122</span>                           patchTable-&gt;GetFVarPatchIndexBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01123\" name=\"l01123\"></a><span class=\"lineno\"> 1123</span>                           patchTable-&gt;GetFVarPatchParamBuffer(fvarChannel));</div>\n+<div class=\"line\"><a id=\"l01124\" name=\"l01124\"></a><span class=\"lineno\"> 1124</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01125\" name=\"l01125\"></a><span class=\"lineno\"> 1125</span> </div>\n+<div class=\"line\"><a id=\"l01186\" name=\"l01186\"></a><span class=\"lineno\"> 1186</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01187\" name=\"l01187\"></a><span class=\"lineno\"> 1187</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01188\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01188\" name=\"l01188\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01313.html#ae4eb5ea878fcae370e0e38dbad433a6a\"> 1188</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01313.html#ae4eb5ea878fcae370e0e38dbad433a6a\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01189\" name=\"l01189\"></a><span class=\"lineno\"> 1189</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01190\" name=\"l01190\"></a><span class=\"lineno\"> 1190</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01191\" name=\"l01191\"></a><span class=\"lineno\"> 1191</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l01192\" name=\"l01192\"></a><span class=\"lineno\"> 1192</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l01193\" name=\"l01193\"></a><span class=\"lineno\"> 1193</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l01194\" name=\"l01194\"></a><span class=\"lineno\"> 1194</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l01195\" name=\"l01195\"></a><span class=\"lineno\"> 1195</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l01196\" name=\"l01196\"></a><span class=\"lineno\"> 1196</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01197\" name=\"l01197\"></a><span class=\"lineno\"> 1197</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01198\" name=\"l01198\"></a><span class=\"lineno\"> 1198</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l01199\" name=\"l01199\"></a><span class=\"lineno\"> 1199</span>        <span class=\"keywordtype\">int</span> fvarChannel,</div>\n+<div class=\"line\"><a id=\"l01200\" name=\"l01200\"></a><span class=\"lineno\"> 1200</span>        <a class=\"code hl_class\" href=\"a01313.html\">OmpEvaluator</a> <span class=\"keyword\">const</span> *instance = NULL,</div>\n+<div class=\"line\"><a id=\"l01201\" name=\"l01201\"></a><span class=\"lineno\"> 1201</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l01202\" name=\"l01202\"></a><span class=\"lineno\"> 1202</span> </div>\n+<div class=\"line\"><a id=\"l01203\" name=\"l01203\"></a><span class=\"lineno\"> 1203</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l01204\" name=\"l01204\"></a><span class=\"lineno\"> 1204</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l01205\" name=\"l01205\"></a><span class=\"lineno\"> 1205</span> </div>\n+<div class=\"line\"><a id=\"l01206\" name=\"l01206\"></a><span class=\"lineno\"> 1206</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01313.html#abbbc45452da270eafbeb163a0e78df03\">EvalPatches</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01207\" name=\"l01207\"></a><span class=\"lineno\"> 1207</span>                           dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01208\" name=\"l01208\"></a><span class=\"lineno\"> 1208</span>                           duBuffer-&gt;BindCpuBuffer(),  duDesc,</div>\n+<div class=\"line\"><a id=\"l01209\" name=\"l01209\"></a><span class=\"lineno\"> 1209</span>                           dvBuffer-&gt;BindCpuBuffer(),  dvDesc,</div>\n+<div class=\"line\"><a id=\"l01210\" name=\"l01210\"></a><span class=\"lineno\"> 1210</span>                           duuBuffer-&gt;BindCpuBuffer(), duuDesc,</div>\n+<div class=\"line\"><a id=\"l01211\" name=\"l01211\"></a><span class=\"lineno\"> 1211</span>                           duvBuffer-&gt;BindCpuBuffer(), duvDesc,</div>\n+<div class=\"line\"><a id=\"l01212\" name=\"l01212\"></a><span class=\"lineno\"> 1212</span>                           dvvBuffer-&gt;BindCpuBuffer(), dvvDesc,</div>\n+<div class=\"line\"><a id=\"l01213\" name=\"l01213\"></a><span class=\"lineno\"> 1213</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01214\" name=\"l01214\"></a><span class=\"lineno\"> 1214</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a>*)patchCoords-&gt;BindCpuBuffer(),</div>\n+<div class=\"line\"><a id=\"l01215\" name=\"l01215\"></a><span class=\"lineno\"> 1215</span>                           patchTable-&gt;GetFVarPatchArrayBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01216\" name=\"l01216\"></a><span class=\"lineno\"> 1216</span>                           patchTable-&gt;GetFVarPatchIndexBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01217\" name=\"l01217\"></a><span class=\"lineno\"> 1217</span>                           patchTable-&gt;GetFVarPatchParamBuffer(fvarChannel));</div>\n+<div class=\"line\"><a id=\"l01218\" name=\"l01218\"></a><span class=\"lineno\"> 1218</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01219\" name=\"l01219\"></a><span class=\"lineno\"> 1219</span> </div>\n+<div class=\"line\"><a id=\"l01225\" name=\"l01225\"></a><span class=\"lineno\"> 1225</span> </div>\n+<div class=\"line\"><a id=\"l01226\" name=\"l01226\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01313.html#a9689407af718de4263562bb3a760c1dd\"> 1226</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01313.html#a9689407af718de4263562bb3a760c1dd\">Synchronize</a>(<span class=\"keywordtype\">void</span> *deviceContext = NULL);</div>\n+<div class=\"line\"><a id=\"l01227\" name=\"l01227\"></a><span class=\"lineno\"> 1227</span> </div>\n+<div class=\"line\"><a id=\"l01229\" name=\"l01229\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01313.html#ad58f2120e84fdd3f92d7cd861e97822d\"> 1229</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01313.html#ad58f2120e84fdd3f92d7cd861e97822d\">SetNumThreads</a>(<span class=\"keywordtype\">int</span> numThreads);</div>\n+<div class=\"line\"><a id=\"l01230\" name=\"l01230\"></a><span class=\"lineno\"> 1230</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l01231\" name=\"l01231\"></a><span class=\"lineno\"> 1231</span> </div>\n+<div class=\"line\"><a id=\"l01232\" name=\"l01232\"></a><span class=\"lineno\"> 1232</span> </div>\n+<div class=\"line\"><a id=\"l01233\" name=\"l01233\"></a><span class=\"lineno\"> 1233</span>}  <span class=\"comment\">// end namespace Osd</span></div>\n+<div class=\"line\"><a id=\"l01234\" name=\"l01234\"></a><span class=\"lineno\"> 1234</span> </div>\n+<div class=\"line\"><a id=\"l01235\" name=\"l01235\"></a><span class=\"lineno\"> 1235</span>}  <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l01236\" name=\"l01236\"></a><span class=\"lineno\"> 1236</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l01237\" name=\"l01237\"></a><span class=\"lineno\"> 1237</span> </div>\n+<div class=\"line\"><a id=\"l01238\" name=\"l01238\"></a><span class=\"lineno\"> 1238</span>}  <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l01239\" name=\"l01239\"></a><span class=\"lineno\"> 1239</span> </div>\n+<div class=\"line\"><a id=\"l01240\" name=\"l01240\"></a><span class=\"lineno\"> 1240</span> </div>\n+<div class=\"line\"><a id=\"l01241\" name=\"l01241\"></a><span class=\"lineno\"> 1241</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_OMP_EVALUATOR_H</span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa01141_html\"><div class=\"ttname\"><a href=\"a01141.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::BufferDescriptor</a></div><div class=\"ttdoc\">BufferDescriptor is a struct which describes buffer elements in interleaved data buffers....</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00061\">bufferDescriptor.h:61</a></div></div>\n+<div class=\"ttc\" id=\"aa01313_html\"><div class=\"ttname\"><a href=\"a01313.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::OmpEvaluator</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00707_source.html#l00039\">ompEvaluator.h:39</a></div></div>\n+<div class=\"ttc\" id=\"aa01313_html_a0fa8e0e28a0ceff063bd07e098abd645\"><div class=\"ttname\"><a href=\"a01313.html#a0fa8e0e28a0ceff063bd07e098abd645\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::OmpEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel, OmpEvaluator const *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00707_source.html#l01034\">ompEvaluator.h:1034</a></div></div>\n+<div class=\"ttc\" id=\"aa01313_html_a4345e3659b7fb82f23dd51c688179ce3\"><div class=\"ttname\"><a href=\"a01313.html#a4345e3659b7fb82f23dd51c688179ce3\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::OmpEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(const float *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, const int *sizes, const int *offsets, const int *indices, const float *weights, int start, int end)</div><div class=\"ttdoc\">Static eval stencils function which takes raw CPU pointers for input and output.</div></div>\n+<div class=\"ttc\" id=\"aa01313_html_a5e2b53fce1097e9ec639828256aa44f1\"><div class=\"ttname\"><a href=\"a01313.html#a5e2b53fce1097e9ec639828256aa44f1\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::OmpEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, OmpEvaluator const *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00707_source.html#l00971\">ompEvaluator.h:971</a></div></div>\n+<div class=\"ttc\" id=\"aa01313_html_a6b577cee117522a91402eb4237e5e913\"><div class=\"ttname\"><a href=\"a01313.html#a6b577cee117522a91402eb4237e5e913\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::OmpEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, STENCIL_TABLE const *stencilTable, const OmpEvaluator *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic static eval stencils function with derivatives. This function has a same signature as other d...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00707_source.html#l00168\">ompEvaluator.h:168</a></div></div>\n+<div class=\"ttc\" id=\"aa01313_html_a6daed6135a40cda2daf6c6ea2047b330\"><div class=\"ttname\"><a href=\"a01313.html#a6daed6135a40cda2daf6c6ea2047b330\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::OmpEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(const float *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, float *du, BufferDescriptor const &amp;duDesc, float *dv, BufferDescriptor const &amp;dvDesc, const int *sizes, const int *offsets, const int *indices, const float *weights, const float *duWeights, const float *dvWeights, int start, int end)</div><div class=\"ttdoc\">Static eval stencils function with derivatives, which takes raw CPU pointers for input and output.</div></div>\n+<div class=\"ttc\" id=\"aa01313_html_a6e57edf33d097abc92fbafe7e4ae9224\"><div class=\"ttname\"><a href=\"a01313.html#a6e57edf33d097abc92fbafe7e4ae9224\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::OmpEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, OmpEvaluator const *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00707_source.html#l00823\">ompEvaluator.h:823</a></div></div>\n+<div class=\"ttc\" id=\"aa01313_html_a708ed2ca5a7497a5679cd660546ec4da\"><div class=\"ttname\"><a href=\"a01313.html#a708ed2ca5a7497a5679cd660546ec4da\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::OmpEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel, OmpEvaluator const *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00707_source.html#l01100\">ompEvaluator.h:1100</a></div></div>\n+<div class=\"ttc\" id=\"aa01313_html_a76707de0a89ab94f15ad4b2c398a2c23\"><div class=\"ttname\"><a href=\"a01313.html#a76707de0a89ab94f15ad4b2c398a2c23\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::OmpEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(const float *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, float *du, BufferDescriptor const &amp;duDesc, float *dv, BufferDescriptor const &amp;dvDesc, float *duu, BufferDescriptor const &amp;duuDesc, float *duv, BufferDescriptor const &amp;duvDesc, float *dvv, BufferDescriptor const &amp;dvvDesc, const int *sizes, const int *offsets, const int *indices, const float *weights, const float *duWeights, const float *dvWeights, const float *duuWeights, const float *duvWeights, const float *dvvWeights, int start, int end)</div><div class=\"ttdoc\">Static eval stencils function with derivatives, which takes raw CPU pointers for input and output.</div></div>\n+<div class=\"ttc\" id=\"aa01313_html_a76ac331e29d26f25d0d807b74c1a838b\"><div class=\"ttname\"><a href=\"a01313.html#a76ac331e29d26f25d0d807b74c1a838b\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::OmpEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, STENCIL_TABLE const *stencilTable, const OmpEvaluator *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic static eval stencils function. This function has a same signature as other device kernels hav...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00707_source.html#l00072\">ompEvaluator.h:72</a></div></div>\n+<div class=\"ttc\" id=\"aa01313_html_a7b556148d6ef2e04fbe99677e3a87e91\"><div class=\"ttname\"><a href=\"a01313.html#a7b556148d6ef2e04fbe99677e3a87e91\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::OmpEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(const float *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, float *du, BufferDescriptor const &amp;duDesc, float *dv, BufferDescriptor const &amp;dvDesc, float *duu, BufferDescriptor const &amp;duuDesc, float *duv, BufferDescriptor const &amp;duvDesc, float *dvv, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PatchCoord const *patchCoords, PatchArray const *patchArrays, const int *patchIndexBuffer, PatchParam const *patchParamBuffer)</div><div class=\"ttdoc\">Static limit eval function. It takes an array of PatchCoord and evaluate limit values on given PatchT...</div></div>\n+<div class=\"ttc\" id=\"aa01313_html_a8ec09b3a6962ce219f54fb5edec53640\"><div class=\"ttname\"><a href=\"a01313.html#a8ec09b3a6962ce219f54fb5edec53640\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::OmpEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, OmpEvaluator const *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function with derivatives. This function has a same signature as other device kern...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00707_source.html#l00517\">ompEvaluator.h:517</a></div></div>\n+<div class=\"ttc\" id=\"aa01313_html_a95dcfa63c8f686a8a30b46dcc563d5fe\"><div class=\"ttname\"><a href=\"a01313.html#a95dcfa63c8f686a8a30b46dcc563d5fe\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::OmpEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, OmpEvaluator const *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00707_source.html#l00886\">ompEvaluator.h:886</a></div></div>\n+<div class=\"ttc\" id=\"aa01313_html_a9644130ae2673ec46111cf6b466b3e90\"><div class=\"ttname\"><a href=\"a01313.html#a9644130ae2673ec46111cf6b466b3e90\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::OmpEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, OmpEvaluator const *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function with derivatives. This function has a same signature as other device kern...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00707_source.html#l00607\">ompEvaluator.h:607</a></div></div>\n+<div class=\"ttc\" id=\"aa01313_html_a9689407af718de4263562bb3a760c1dd\"><div class=\"ttname\"><a href=\"a01313.html#a9689407af718de4263562bb3a760c1dd\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::OmpEvaluator::Synchronize</a></div><div class=\"ttdeci\">static void Synchronize(void *deviceContext=NULL)</div></div>\n+<div class=\"ttc\" id=\"aa01313_html_a9b393ddc414d176a2b4438ab1e3c1682\"><div class=\"ttname\"><a href=\"a01313.html#a9b393ddc414d176a2b4438ab1e3c1682\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::OmpEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, STENCIL_TABLE const *stencilTable, const OmpEvaluator *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic static eval stencils function with derivatives. This function has a same signature as other d...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00707_source.html#l00303\">ompEvaluator.h:303</a></div></div>\n+<div class=\"ttc\" id=\"aa01313_html_abbbc45452da270eafbeb163a0e78df03\"><div class=\"ttname\"><a href=\"a01313.html#abbbc45452da270eafbeb163a0e78df03\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::OmpEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, OmpEvaluator const *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00707_source.html#l00454\">ompEvaluator.h:454</a></div></div>\n+<div class=\"ttc\" id=\"aa01313_html_ac1dba254bc287312f8f812113c8e8ad3\"><div class=\"ttname\"><a href=\"a01313.html#ac1dba254bc287312f8f812113c8e8ad3\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::OmpEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(const float *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, float *du, BufferDescriptor const &amp;duDesc, float *dv, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PatchCoord const *patchCoords, PatchArray const *patchArrays, const int *patchIndexBuffer, PatchParam const *patchParamBuffer)</div><div class=\"ttdoc\">Static limit eval function. It takes an array of PatchCoord and evaluate limit values on given PatchT...</div></div>\n+<div class=\"ttc\" id=\"aa01313_html_ad58f2120e84fdd3f92d7cd861e97822d\"><div class=\"ttname\"><a href=\"a01313.html#ad58f2120e84fdd3f92d7cd861e97822d\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::OmpEvaluator::SetNumThreads</a></div><div class=\"ttdeci\">static void SetNumThreads(int numThreads)</div><div class=\"ttdoc\">Deprecated. Client code should initialize OpenMP.</div></div>\n+<div class=\"ttc\" id=\"aa01313_html_ad5b907c22dfcb943e5f25f3c16543535\"><div class=\"ttname\"><a href=\"a01313.html#ad5b907c22dfcb943e5f25f3c16543535\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::OmpEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(const float *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, int numPatchCoords, const PatchCoord *patchCoords, const PatchArray *patchArrays, const int *patchIndexBuffer, const PatchParam *patchParamBuffer)</div><div class=\"ttdoc\">Static limit eval function. It takes an array of PatchCoord and evaluate limit values on given PatchT...</div></div>\n+<div class=\"ttc\" id=\"aa01313_html_ae4eb5ea878fcae370e0e38dbad433a6a\"><div class=\"ttname\"><a href=\"a01313.html#ae4eb5ea878fcae370e0e38dbad433a6a\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::OmpEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel, OmpEvaluator const *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00707_source.html#l01188\">ompEvaluator.h:1188</a></div></div>\n+<div class=\"ttc\" id=\"aa01321_html\"><div class=\"ttname\"><a href=\"a01321.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchCoord</a></div><div class=\"ttdoc\">Coordinates set on a patch table.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00042\">types.h:42</a></div></div>\n+<div class=\"ttc\" id=\"aa01325_html\"><div class=\"ttname\"><a href=\"a01325.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchArray</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00066\">types.h:66</a></div></div>\n+<div class=\"ttc\" id=\"aa01329_html\"><div class=\"ttname\"><a href=\"a01329.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchParam</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00127\">types.h:127</a></div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_fa5edef2a780a73fbfb6a11f1af88ceb.html\">bfr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00707.html\">surfaceFactoryMeshAdapter.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00707.html\">ompEvaluator.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-surfaceFactoryMeshAdapter.h\n+ompEvaluator.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2021 Pixar\n+2// Copyright 2015 Pixar\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -24,179 +24,656 @@\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n 24\n-25#ifndef OPENSUBDIV3_BFR_SURFACE_FACTORY_ADAPTER_H\n-26#define OPENSUBDIV3_BFR_SURFACE_FACTORY_ADAPTER_H\n+25#ifndef OPENSUBDIV3_OSD_OMP_EVALUATOR_H\n+26#define OPENSUBDIV3_OSD_OMP_EVALUATOR_H\n 27\n 28#include \"../version.h\"\n-29\n-30#include <cstdint>\n+29#include \"../osd/bufferDescriptor.h\"\n+30#include \"../osd/types.h\"\n 31\n-32namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-33namespace OPENSUBDIV_VERSION {\n-34\n-35namespace Bfr {\n+32#include <cstddef>\n+33\n+34namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+35namespace OPENSUBDIV_VERSION {\n 36\n-37class VertexDescriptor;\n+37namespace Osd {\n 38\n-43// SurfaceFactoryMeshAdapter is an abstract class that defines the interface\n-44// through which subclasses of SurfaceFactory adapt to a connected mesh\n-45// representation. The interface defines methods that describe the mesh\n-46// topology and control indices in the neighborhood of a mesh -- from\n-47// which the SurfaceFactory to identifies an appropriate limit surface.\n-48//\n-49// SurfaceFactoryMeshAdapter methods require a subclass to provide a complete\n-50// description of the topology around a base face, as well as indices\n-51// associated with it (both vertex and face-varying). The intent here is\n-52// to keep the number of methods required to a minimum, and also to minimize\n-53// the number of invocations required by the factory.\n-54//\n-55// With the need to support both linear and non-linear cases (for which\n-56// linear is trivial by comparison) and the limit surface for both vertex\n-57// and face-varying topologies, the result is a small set of methods\n-58// covering this matrix of functionality.\n-59//\n-60// Since face-varying data may differ in topology from the vertex data --\n-61// with each set of face-varying data potentially having its own unique\n-62// topology -- sets of face-varying data are uniquely distinguished by an\n-63// associated integer (a face-varying ID).\n-64//\n-_\b6_\b5class _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br {\n-66public:\n-_\b6_\b8 typedef int _\bI_\bn_\bd_\be_\bx;\n-69\n-_\b8_\b0 typedef std::intptr_t _\bF_\bV_\ba_\br_\bI_\bD;\n+_\b3_\b9class _\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br {\n+40public:\n+46\n+71 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n+_\b7_\b2 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n+73 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+74 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+75 STENCIL_TABLE const *stencilTable,\n+76 const _\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br *instance = NULL,\n+77 void * deviceContext = NULL) {\n+78\n+79 (void)instance; // unused\n+80 (void)deviceContext; // unused\n 81\n-82protected:\n-84 _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br() { }\n-85 virtual _\b~_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br() { }\n-87\n-88protected:\n-90\n+82 if (stencilTable->GetNumStencils() == 0)\n+83 return false;\n+84\n+85 return _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n+86 dstBuffer->BindCpuBuffer(), dstDesc,\n+87 &stencilTable->GetSizes()[0],\n+88 &stencilTable->GetOffsets()[0],\n+89 &stencilTable->GetControlIndices()[0],\n+90 &stencilTable->GetWeights()[0],\n+91 /*start = */ 0,\n+92 /*end = */ stencilTable->GetNumStencils());\n+93 }\n 94\n-_\b9_\b6 virtual bool _\bi_\bs_\bF_\ba_\bc_\be_\bH_\bo_\bl_\be(_\bI_\bn_\bd_\be_\bx faceIndex) const = 0;\n-97\n-_\b9_\b9 virtual int _\bg_\be_\bt_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be(_\bI_\bn_\bd_\be_\bx faceIndex) const = 0;\n-101\n-103\n-111\n-_\b1_\b1_\b3 virtual int _\bg_\be_\bt_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\be_\bx_\bI_\bn_\bd_\bi_\bc_\be_\bs(_\bI_\bn_\bd_\be_\bx faceIndex,\n-114 _\bI_\bn_\bd_\be_\bx vertexIndices[]) const = 0;\n-115\n-_\b1_\b1_\b7 virtual int _\bg_\be_\bt_\bF_\ba_\bc_\be_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bI_\bn_\bd_\bi_\bc_\be_\bs(_\bI_\bn_\bd_\be_\bx faceIndex,\n-118 _\bF_\bV_\ba_\br_\bI_\bD fvarID, _\bI_\bn_\bd_\be_\bx fvarValueIndices[]) const = 0;\n-120\n-121protected:\n-123\n-159\n-_\b1_\b6_\b1 virtual int _\bp_\bo_\bp_\bu_\bl_\ba_\bt_\be_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(\n-162 _\bI_\bn_\bd_\be_\bx faceIndex, int faceVertex,\n-163 _\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br * vertexDescriptor) const = 0;\n-164\n-_\b1_\b6_\b6 virtual int _\bg_\be_\bt_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\be_\bx_\bI_\bn_\bc_\bi_\bd_\be_\bn_\bt_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\be_\bx_\bI_\bn_\bd_\bi_\bc_\be_\bs(\n-167 _\bI_\bn_\bd_\be_\bx faceIndex, int faceVertex,\n-168 _\bI_\bn_\bd_\be_\bx vertexIndices[]) const = 0;\n-169\n-_\b1_\b7_\b2 virtual int _\bg_\be_\bt_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\be_\bx_\bI_\bn_\bc_\bi_\bd_\be_\bn_\bt_\bF_\ba_\bc_\be_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bI_\bn_\bd_\bi_\bc_\be_\bs(\n-173 _\bI_\bn_\bd_\be_\bx faceIndex, int faceVertex,\n-174 _\bF_\bV_\ba_\br_\bI_\bD fvarID, _\bI_\bn_\bd_\be_\bx fvarValueIndices[]) const = 0;\n+_\b1_\b2_\b1 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n+122 const float *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+123 float *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+124 const int * sizes,\n+125 const int * offsets,\n+126 const int * indices,\n+127 const float * weights,\n+128 int start, int end);\n+129\n+167 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n+_\b1_\b6_\b8 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n+169 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+170 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+171 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+172 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+173 STENCIL_TABLE const *stencilTable,\n+174 const _\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br *instance = NULL,\n+175 void * deviceContext = NULL) {\n 176\n-177protected:\n+177 (void)instance; // unused\n+178 (void)deviceContext; // unused\n 179\n-203 virtual bool _\bg_\be_\bt_\bF_\ba_\bc_\be_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bh_\bo_\bo_\bd_\bV_\be_\br_\bt_\be_\bx_\bI_\bn_\bd_\bi_\bc_\be_\bs_\bI_\bf_\bR_\be_\bg_\bu_\bl_\ba_\br(\n-204 _\bI_\bn_\bd_\be_\bx faceIndex, _\bI_\bn_\bd_\be_\bx vertexIndices[]) const;\n-205\n-206 virtual bool _\bg_\be_\bt_\bF_\ba_\bc_\be_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bh_\bo_\bo_\bd_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bI_\bn_\bd_\bi_\bc_\be_\bs_\bI_\bf_\bR_\be_\bg_\bu_\bl_\ba_\br(\n-207 _\bI_\bn_\bd_\be_\bx faceIndex, _\bF_\bV_\ba_\br_\bI_\bD fvarID, _\bI_\bn_\bd_\be_\bx fvarValueIndices[]) const;\n-209\n-210private:\n-211 // No private members\n-212};\n-213\n-214//\n-215// Inline defaults for optional methods:\n-216//\n-217inline bool\n-_\b2_\b1_\b8_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b:_\b:_\bg_\be_\bt_\bF_\ba_\bc_\be_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bh_\bo_\bo_\bd_\bV_\be_\br_\bt_\be_\bx_\bI_\bn_\bd_\bi_\bc_\be_\bs_\bI_\bf_\bR_\be_\bg_\bu_\bl_\ba_\br(\n-219 _\bI_\bn_\bd_\be_\bx, _\bI_\bn_\bd_\be_\bx[]) const {\n-220 return false;\n-221}\n-222\n-223inline bool\n-_\b2_\b2_\b4_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b:_\b:_\bg_\be_\bt_\bF_\ba_\bc_\be_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bh_\bo_\bo_\bd_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bI_\bn_\bd_\bi_\bc_\be_\bs_\bI_\bf_\bR_\be_\bg_\bu_\bl_\ba_\br(\n-225 _\bI_\bn_\bd_\be_\bx, _\bF_\bV_\ba_\br_\bI_\bD, _\bI_\bn_\bd_\be_\bx[]) const {\n-226 return false;\n-227}\n-228\n-229} // end namespace Bfr\n-230\n-231} // end namespace OPENSUBDIV_VERSION\n-232using namespace OPENSUBDIV_VERSION;\n-233\n-234} // end namespace OpenSubdiv\n-235\n-236#endif /* OPENSUBDIV3_BFR_SURFACE_FACTORY_ADAPTER_H */\n+180 return _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n+181 dstBuffer->BindCpuBuffer(), dstDesc,\n+182 duBuffer->BindCpuBuffer(), duDesc,\n+183 dvBuffer->BindCpuBuffer(), dvDesc,\n+184 &stencilTable->GetSizes()[0],\n+185 &stencilTable->GetOffsets()[0],\n+186 &stencilTable->GetControlIndices()[0],\n+187 &stencilTable->GetWeights()[0],\n+188 &stencilTable->GetDuWeights()[0],\n+189 &stencilTable->GetDvWeights()[0],\n+190 /*start = */ 0,\n+191 /*end = */ stencilTable->GetNumStencils());\n+192 }\n+193\n+_\b2_\b3_\b4 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n+235 const float *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+236 float *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+237 float *du, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+238 float *dv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+239 const int * sizes,\n+240 const int * offsets,\n+241 const int * indices,\n+242 const float * weights,\n+243 const float * duWeights,\n+244 const float * dvWeights,\n+245 int start, int end);\n+246\n+302 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n+_\b3_\b0_\b3 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n+304 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+305 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+306 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+307 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+308 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+309 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+310 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+311 STENCIL_TABLE const *stencilTable,\n+312 const _\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br *instance = NULL,\n+313 void * deviceContext = NULL) {\n+314\n+315 (void)instance; // unused\n+316 (void)deviceContext; // unused\n+317\n+318 return _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n+319 dstBuffer->BindCpuBuffer(), dstDesc,\n+320 duBuffer->BindCpuBuffer(), duDesc,\n+321 dvBuffer->BindCpuBuffer(), dvDesc,\n+322 duuBuffer->BindCpuBuffer(), duuDesc,\n+323 duvBuffer->BindCpuBuffer(), duvDesc,\n+324 dvvBuffer->BindCpuBuffer(), dvvDesc,\n+325 &stencilTable->GetSizes()[0],\n+326 &stencilTable->GetOffsets()[0],\n+327 &stencilTable->GetControlIndices()[0],\n+328 &stencilTable->GetWeights()[0],\n+329 &stencilTable->GetDuWeights()[0],\n+330 &stencilTable->GetDvWeights()[0],\n+331 &stencilTable->GetDuuWeights()[0],\n+332 &stencilTable->GetDuvWeights()[0],\n+333 &stencilTable->GetDvvWeights()[0],\n+334 /*start = */ 0,\n+335 /*end = */ stencilTable->GetNumStencils());\n+336 }\n+337\n+_\b3_\b9_\b9 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n+400 const float *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+401 float *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+402 float *du, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+403 float *dv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+404 float *duu, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+405 float *duv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+406 float *dvv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+407 const int * sizes,\n+408 const int * offsets,\n+409 const int * indices,\n+410 const float * weights,\n+411 const float * duWeights,\n+412 const float * dvWeights,\n+413 const float * duuWeights,\n+414 const float * duvWeights,\n+415 const float * dvvWeights,\n+416 int start, int end);\n+417\n+423\n+452 template <typename SRC_BUFFER, typename DST_BUFFER,\n+453 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b4_\b5_\b4 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n+455 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+456 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+457 int numPatchCoords,\n+458 PATCHCOORD_BUFFER *patchCoords,\n+459 PATCH_TABLE *patchTable,\n+460 _\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance = NULL,\n+461 void * deviceContext = NULL) {\n+462\n+463 (void)instance; // unused\n+464 (void)deviceContext; // unused\n+465\n+466 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n+467 dstBuffer->BindCpuBuffer(), dstDesc,\n+468 numPatchCoords,\n+469 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd*)patchCoords->BindCpuBuffer(),\n+470 patchTable->GetPatchArrayBuffer(),\n+471 patchTable->GetPatchIndexBuffer(),\n+472 patchTable->GetPatchParamBuffer());\n+473 }\n+474\n+515 template <typename SRC_BUFFER, typename DST_BUFFER,\n+516 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b5_\b1_\b7 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n+518 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+519 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+520 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+521 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+522 int numPatchCoords,\n+523 PATCHCOORD_BUFFER *patchCoords,\n+524 PATCH_TABLE *patchTable,\n+525 _\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance = NULL,\n+526 void * deviceContext = NULL) {\n+527\n+528 (void)instance; // unused\n+529 (void)deviceContext; // unused\n+530\n+531 // XXX: PatchCoords is somewhat abusing vertex primvar buffer interop.\n+532 // ideally all buffer classes should have templated by datatype\n+533 // so that downcast isn't needed there.\n+534 // (e.g. Osd::CpuBuffer<PatchCoord> )\n+535 //\n+536 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n+537 dstBuffer->BindCpuBuffer(), dstDesc,\n+538 duBuffer->BindCpuBuffer(), duDesc,\n+539 dvBuffer->BindCpuBuffer(), dvDesc,\n+540 numPatchCoords,\n+541 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd*)patchCoords->BindCpuBuffer(),\n+542 patchTable->GetPatchArrayBuffer(),\n+543 patchTable->GetPatchIndexBuffer(),\n+544 patchTable->GetPatchParamBuffer());\n+545 }\n+546\n+605 template <typename SRC_BUFFER, typename DST_BUFFER,\n+606 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b6_\b0_\b7 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n+608 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+609 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+610 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+611 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+612 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+613 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+614 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+615 int numPatchCoords,\n+616 PATCHCOORD_BUFFER *patchCoords,\n+617 PATCH_TABLE *patchTable,\n+618 _\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance = NULL,\n+619 void * deviceContext = NULL) {\n+620\n+621 (void)instance; // unused\n+622 (void)deviceContext; // unused\n+623\n+624 // XXX: PatchCoords is somewhat abusing vertex primvar buffer interop.\n+625 // ideally all buffer classes should have templated by datatype\n+626 // so that downcast isn't needed there.\n+627 // (e.g. Osd::CpuBuffer<PatchCoord> )\n+628 //\n+629 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n+630 dstBuffer->BindCpuBuffer(), dstDesc,\n+631 duBuffer->BindCpuBuffer(), duDesc,\n+632 dvBuffer->BindCpuBuffer(), dvDesc,\n+633 duuBuffer->BindCpuBuffer(), duuDesc,\n+634 duvBuffer->BindCpuBuffer(), duvDesc,\n+635 dvvBuffer->BindCpuBuffer(), dvvDesc,\n+636 numPatchCoords,\n+637 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd*)patchCoords->BindCpuBuffer(),\n+638 patchTable->GetPatchArrayBuffer(),\n+639 patchTable->GetPatchIndexBuffer(),\n+640 patchTable->GetPatchParamBuffer());\n+641 }\n+642\n+_\b6_\b7_\b0 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n+671 const float *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+672 float *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+673 int numPatchCoords,\n+674 const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd *patchCoords,\n+675 const _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by *patchArrays,\n+676 const int *patchIndexBuffer,\n+677 const _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm *patchParamBuffer);\n+678\n+_\b7_\b1_\b6 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n+717 const float *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+718 float *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+719 float *du, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+720 float *dv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+721 int numPatchCoords,\n+722 _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd const *patchCoords,\n+723 _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by const *patchArrays,\n+724 const int *patchIndexBuffer,\n+725 _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm const *patchParamBuffer);\n+726\n+_\b7_\b7_\b9 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n+780 const float *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+781 float *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+782 float *du, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+783 float *dv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+784 float *duu, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+785 float *duv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+786 float *dvv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+787 int numPatchCoords,\n+788 _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd const *patchCoords,\n+789 _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by const *patchArrays,\n+790 const int *patchIndexBuffer,\n+791 _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm const *patchParamBuffer);\n+792\n+821 template <typename SRC_BUFFER, typename DST_BUFFER,\n+822 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b8_\b2_\b3 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+824 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+825 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+826 int numPatchCoords,\n+827 PATCHCOORD_BUFFER *patchCoords,\n+828 PATCH_TABLE *patchTable,\n+829 _\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance = NULL,\n+830 void * deviceContext = NULL) {\n+831\n+832 (void)instance; // unused\n+833 (void)deviceContext; // unused\n+834\n+835 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n+836 dstBuffer->BindCpuBuffer(), dstDesc,\n+837 numPatchCoords,\n+838 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd*)patchCoords->BindCpuBuffer(),\n+839 patchTable->GetVaryingPatchArrayBuffer(),\n+840 patchTable->GetVaryingPatchIndexBuffer(),\n+841 patchTable->GetPatchParamBuffer());\n+842 }\n+843\n+884 template <typename SRC_BUFFER, typename DST_BUFFER,\n+885 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b8_\b8_\b6 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+887 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+888 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+889 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+890 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+891 int numPatchCoords,\n+892 PATCHCOORD_BUFFER *patchCoords,\n+893 PATCH_TABLE *patchTable,\n+894 _\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance = NULL,\n+895 void * deviceContext = NULL) {\n+896\n+897 (void)instance; // unused\n+898 (void)deviceContext; // unused\n+899\n+900 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n+901 dstBuffer->BindCpuBuffer(), dstDesc,\n+902 duBuffer->BindCpuBuffer(), duDesc,\n+903 dvBuffer->BindCpuBuffer(), dvDesc,\n+904 numPatchCoords,\n+905 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd*)patchCoords->BindCpuBuffer(),\n+906 patchTable->GetVaryingPatchArrayBuffer(),\n+907 patchTable->GetVaryingPatchIndexBuffer(),\n+908 patchTable->GetPatchParamBuffer());\n+909 }\n+910\n+969 template <typename SRC_BUFFER, typename DST_BUFFER,\n+970 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b9_\b7_\b1 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+972 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+973 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+974 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+975 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+976 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+977 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+978 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+979 int numPatchCoords,\n+980 PATCHCOORD_BUFFER *patchCoords,\n+981 PATCH_TABLE *patchTable,\n+982 _\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance = NULL,\n+983 void * deviceContext = NULL) {\n+984\n+985 (void)instance; // unused\n+986 (void)deviceContext; // unused\n+987\n+988 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n+989 dstBuffer->BindCpuBuffer(), dstDesc,\n+990 duBuffer->BindCpuBuffer(), duDesc,\n+991 dvBuffer->BindCpuBuffer(), dvDesc,\n+992 duuBuffer->BindCpuBuffer(), duuDesc,\n+993 duvBuffer->BindCpuBuffer(), duvDesc,\n+994 dvvBuffer->BindCpuBuffer(), dvvDesc,\n+995 numPatchCoords,\n+996 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd*)patchCoords->BindCpuBuffer(),\n+997 patchTable->GetVaryingPatchArrayBuffer(),\n+998 patchTable->GetVaryingPatchIndexBuffer(),\n+999 patchTable->GetPatchParamBuffer());\n+1000 }\n+1001\n+1032 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1033 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b1_\b0_\b3_\b4 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1035 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1036 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1037 int numPatchCoords,\n+1038 PATCHCOORD_BUFFER *patchCoords,\n+1039 PATCH_TABLE *patchTable,\n+1040 int fvarChannel,\n+1041 _\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance = NULL,\n+1042 void * deviceContext = NULL) {\n+1043\n+1044 (void)instance; // unused\n+1045 (void)deviceContext; // unused\n+1046\n+1047 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n+1048 dstBuffer->BindCpuBuffer(), dstDesc,\n+1049 numPatchCoords,\n+1050 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd*)patchCoords->BindCpuBuffer(),\n+1051 patchTable->GetFVarPatchArrayBuffer(fvarChannel),\n+1052 patchTable->GetFVarPatchIndexBuffer(fvarChannel),\n+1053 patchTable->GetFVarPatchParamBuffer(fvarChannel));\n+1054 }\n+1055\n+1098 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1099 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b1_\b1_\b0_\b0 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1101 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1102 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1103 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+1104 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+1105 int numPatchCoords,\n+1106 PATCHCOORD_BUFFER *patchCoords,\n+1107 PATCH_TABLE *patchTable,\n+1108 int fvarChannel,\n+1109 _\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance = NULL,\n+1110 void * deviceContext = NULL) {\n+1111\n+1112 (void)instance; // unused\n+1113 (void)deviceContext; // unused\n+1114\n+1115 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n+1116 dstBuffer->BindCpuBuffer(), dstDesc,\n+1117 duBuffer->BindCpuBuffer(), duDesc,\n+1118 dvBuffer->BindCpuBuffer(), dvDesc,\n+1119 numPatchCoords,\n+1120 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd*)patchCoords->BindCpuBuffer(),\n+1121 patchTable->GetFVarPatchArrayBuffer(fvarChannel),\n+1122 patchTable->GetFVarPatchIndexBuffer(fvarChannel),\n+1123 patchTable->GetFVarPatchParamBuffer(fvarChannel));\n+1124 }\n+1125\n+1186 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1187 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b1_\b1_\b8_\b8 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1189 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1190 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1191 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+1192 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+1193 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+1194 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+1195 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+1196 int numPatchCoords,\n+1197 PATCHCOORD_BUFFER *patchCoords,\n+1198 PATCH_TABLE *patchTable,\n+1199 int fvarChannel,\n+1200 _\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance = NULL,\n+1201 void * deviceContext = NULL) {\n+1202\n+1203 (void)instance; // unused\n+1204 (void)deviceContext; // unused\n+1205\n+1206 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n+1207 dstBuffer->BindCpuBuffer(), dstDesc,\n+1208 duBuffer->BindCpuBuffer(), duDesc,\n+1209 dvBuffer->BindCpuBuffer(), dvDesc,\n+1210 duuBuffer->BindCpuBuffer(), duuDesc,\n+1211 duvBuffer->BindCpuBuffer(), duvDesc,\n+1212 dvvBuffer->BindCpuBuffer(), dvvDesc,\n+1213 numPatchCoords,\n+1214 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd*)patchCoords->BindCpuBuffer(),\n+1215 patchTable->GetFVarPatchArrayBuffer(fvarChannel),\n+1216 patchTable->GetFVarPatchIndexBuffer(fvarChannel),\n+1217 patchTable->GetFVarPatchParamBuffer(fvarChannel));\n+1218 }\n+1219\n+1225\n+_\b1_\b2_\b2_\b6 static void _\bS_\by_\bn_\bc_\bh_\br_\bo_\bn_\bi_\bz_\be(void *deviceContext = NULL);\n+1227\n+_\b1_\b2_\b2_\b9 static void _\bS_\be_\bt_\bN_\bu_\bm_\bT_\bh_\br_\be_\ba_\bd_\bs(int numThreads);\n+1230};\n+1231\n+1232\n+1233} // end namespace Osd\n+1234\n+1235} // end namespace OPENSUBDIV_VERSION\n+1236using namespace OPENSUBDIV_VERSION;\n+1237\n+1238} // end namespace OpenSubdiv\n+1239\n+1240\n+1241#endif // OPENSUBDIV3_OSD_OMP_EVALUATOR_H\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br\n-Abstract interface adapting SurfaceFactory to a connected mesh representation.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b._\bh_\b:_\b6_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b:_\b:\n-_\bg_\be_\bt_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\be_\bx_\bI_\bn_\bc_\bi_\bd_\be_\bn_\bt_\bF_\ba_\bc_\be_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bI_\bn_\bd_\bi_\bc_\be_\bs\n-virtual int getFaceVertexIncidentFaceFVarValueIndices(Index faceIndex, int\n-faceVertex, FVarID fvarID, Index fvarValueIndices[]) const =0\n-Gather face-varying indices of incident faces around a face-vertex.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b:_\b:\n-_\bg_\be_\bt_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\be_\bx_\bI_\bn_\bc_\bi_\bd_\be_\bn_\bt_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\be_\bx_\bI_\bn_\bd_\bi_\bc_\be_\bs\n-virtual int getFaceVertexIncidentFaceVertexIndices(Index faceIndex, int\n-faceVertex, Index vertexIndices[]) const =0\n-Gather vertex indices of incident faces around a face-vertex.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b:_\b:_\bg_\be_\bt_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be\n-virtual int getFaceSize(Index faceIndex) const =0\n-Returns the size of a face (number of vertices)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx\n-int Index\n-Integer type representing a mesh index.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b._\bh_\b:_\b6_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b:_\b:\n-_\bp_\bo_\bp_\bu_\bl_\ba_\bt_\be_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n-virtual int populateFaceVertexDescriptor(Index faceIndex, int faceVertex,\n-VertexDescriptor *vertexDescriptor) const =0\n-Describe the topology of incident faces around a face-vertex.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b:_\b:\n-_\bg_\be_\bt_\bF_\ba_\bc_\be_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bh_\bo_\bo_\bd_\bV_\be_\br_\bt_\be_\bx_\bI_\bn_\bd_\bi_\bc_\be_\bs_\bI_\bf_\bR_\be_\bg_\bu_\bl_\ba_\br\n-virtual bool getFaceNeighborhoodVertexIndicesIfRegular(Index faceIndex, Index\n-vertexIndices[]) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b._\bh_\b:_\b2_\b1_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b:_\b:\n-_\bg_\be_\bt_\bF_\ba_\bc_\be_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bh_\bo_\bo_\bd_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bI_\bn_\bd_\bi_\bc_\be_\bs_\bI_\bf_\bR_\be_\bg_\bu_\bl_\ba_\br\n-virtual bool getFaceNeighborhoodFVarValueIndicesIfRegular(Index faceIndex,\n-FVarID fvarID, Index fvarValueIndices[]) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b._\bh_\b:_\b2_\b2_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b:_\b:\n-_\bg_\be_\bt_\bF_\ba_\bc_\be_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bI_\bn_\bd_\bi_\bc_\be_\bs\n-virtual int getFaceFVarValueIndices(Index faceIndex, FVarID fvarID, Index\n-fvarValueIndices[]) const =0\n-Gather the face-varying indices of the face's vertices.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b:_\b:\n-_\bg_\be_\bt_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\be_\bx_\bI_\bn_\bd_\bi_\bc_\be_\bs\n-virtual int getFaceVertexIndices(Index faceIndex, Index vertexIndices[]) const\n-=0\n-Gather the indices of the face's vertices.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b:_\b:_\bi_\bs_\bF_\ba_\bc_\be_\bH_\bo_\bl_\be\n-virtual bool isFaceHole(Index faceIndex) const =0\n-Returns if a face is a hole.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b:_\b:_\bF_\bV_\ba_\br_\bI_\bD\n-std::intptr_t FVarID\n-Type used to identify and specify face-varying primvars.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b._\bh_\b:_\b8_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n-Simple class used by subclasses of SurfaceFactory to describe a vertex.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bv_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b1_\b3_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n+BufferDescriptor is a struct which describes buffer elements in interleaved\n+data buffers....\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b6_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b3_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n+static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor\n+const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int\n+numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int\n+fvarChannel, OmpEvaluator const *instance=NULL, void *deviceContext=NULL)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b0_\b3_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+static bool EvalStencils(const float *src, BufferDescriptor const &srcDesc,\n+float *dst, BufferDescriptor const &dstDesc, const int *sizes, const int\n+*offsets, const int *indices, const float *weights, int start, int end)\n+Static eval stencils function which takes raw CPU pointers for input and\n+output.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n+static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n+*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n+BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const\n+&duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER\n+*dvvBuffer, BufferDescriptor const &dvvDesc, int numPatchCoords,\n+PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, OmpEvaluator const\n+*instance=NULL, void *deviceContext=NULL)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b9_\b7_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n+*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n+BufferDescriptor const &dvDesc, STENCIL_TABLE const *stencilTable, const\n+OmpEvaluator *instance=NULL, void *deviceContext=NULL)\n+Generic static eval stencils function with derivatives. This function has a\n+same signature as other d...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b6_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+static bool EvalStencils(const float *src, BufferDescriptor const &srcDesc,\n+float *dst, BufferDescriptor const &dstDesc, float *du, BufferDescriptor const\n+&duDesc, float *dv, BufferDescriptor const &dvDesc, const int *sizes, const int\n+*offsets, const int *indices, const float *weights, const float *duWeights,\n+const float *dvWeights, int start, int end)\n+Static eval stencils function with derivatives, which takes raw CPU pointers\n+for input and output.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n+static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int\n+numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable,\n+OmpEvaluator const *instance=NULL, void *deviceContext=NULL)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b8_\b2_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n+static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor\n+const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,\n+DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n+BufferDescriptor const &dvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n+*patchCoords, PATCH_TABLE *patchTable, int fvarChannel, OmpEvaluator const\n+*instance=NULL, void *deviceContext=NULL)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b1_\b0_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+static bool EvalStencils(const float *src, BufferDescriptor const &srcDesc,\n+float *dst, BufferDescriptor const &dstDesc, float *du, BufferDescriptor const\n+&duDesc, float *dv, BufferDescriptor const &dvDesc, float *duu,\n+BufferDescriptor const &duuDesc, float *duv, BufferDescriptor const &duvDesc,\n+float *dvv, BufferDescriptor const &dvvDesc, const int *sizes, const int\n+*offsets, const int *indices, const float *weights, const float *duWeights,\n+const float *dvWeights, const float *duuWeights, const float *duvWeights, const\n+float *dvvWeights, int start, int end)\n+Static eval stencils function with derivatives, which takes raw CPU pointers\n+for input and output.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, STENCIL_TABLE\n+const *stencilTable, const OmpEvaluator *instance=NULL, void\n+*deviceContext=NULL)\n+Generic static eval stencils function. This function has a same signature as\n+other device kernels hav...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+static bool EvalPatches(const float *src, BufferDescriptor const &srcDesc,\n+float *dst, BufferDescriptor const &dstDesc, float *du, BufferDescriptor const\n+&duDesc, float *dv, BufferDescriptor const &dvDesc, float *duu,\n+BufferDescriptor const &duuDesc, float *duv, BufferDescriptor const &duvDesc,\n+float *dvv, BufferDescriptor const &dvvDesc, int numPatchCoords, PatchCoord\n+const *patchCoords, PatchArray const *patchArrays, const int *patchIndexBuffer,\n+PatchParam const *patchParamBuffer)\n+Static limit eval function. It takes an array of PatchCoord and evaluate limit\n+values on given PatchT...\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n+BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n+&dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE\n+*patchTable, OmpEvaluator const *instance=NULL, void *deviceContext=NULL)\n+Generic limit eval function with derivatives. This function has a same\n+signature as other device kern...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b5_\b1_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n+static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n+*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n+BufferDescriptor const &dvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n+*patchCoords, PATCH_TABLE *patchTable, OmpEvaluator const *instance=NULL, void\n+*deviceContext=NULL)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b8_\b8_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n+BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n+&dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER\n+*duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer,\n+BufferDescriptor const &dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n+*patchCoords, PATCH_TABLE *patchTable, OmpEvaluator const *instance=NULL, void\n+*deviceContext=NULL)\n+Generic limit eval function with derivatives. This function has a same\n+signature as other device kern...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b6_\b0_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bS_\by_\bn_\bc_\bh_\br_\bo_\bn_\bi_\bz_\be\n+static void Synchronize(void *deviceContext=NULL)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n+*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n+BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const\n+&duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER\n+*dvvBuffer, BufferDescriptor const &dvvDesc, STENCIL_TABLE const *stencilTable,\n+const OmpEvaluator *instance=NULL, void *deviceContext=NULL)\n+Generic static eval stencils function with derivatives. This function has a\n+same signature as other d...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b3_\b0_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords,\n+PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, OmpEvaluator const\n+*instance=NULL, void *deviceContext=NULL)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b4_\b5_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+static bool EvalPatches(const float *src, BufferDescriptor const &srcDesc,\n+float *dst, BufferDescriptor const &dstDesc, float *du, BufferDescriptor const\n+&duDesc, float *dv, BufferDescriptor const &dvDesc, int numPatchCoords,\n+PatchCoord const *patchCoords, PatchArray const *patchArrays, const int\n+*patchIndexBuffer, PatchParam const *patchParamBuffer)\n+Static limit eval function. It takes an array of PatchCoord and evaluate limit\n+values on given PatchT...\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bS_\be_\bt_\bN_\bu_\bm_\bT_\bh_\br_\be_\ba_\bd_\bs\n+static void SetNumThreads(int numThreads)\n+Deprecated. Client code should initialize OpenMP.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+static bool EvalPatches(const float *src, BufferDescriptor const &srcDesc,\n+float *dst, BufferDescriptor const &dstDesc, int numPatchCoords, const\n+PatchCoord *patchCoords, const PatchArray *patchArrays, const int\n+*patchIndexBuffer, const PatchParam *patchParamBuffer)\n+Static limit eval function. It takes an array of PatchCoord and evaluate limit\n+values on given PatchT...\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n+static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor\n+const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,\n+DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n+BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const\n+&duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER\n+*dvvBuffer, BufferDescriptor const &dvvDesc, int numPatchCoords,\n+PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel,\n+OmpEvaluator const *instance=NULL, void *deviceContext=NULL)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b1_\b8_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd\n+Coordinates set on a patch table.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b4_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b6_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b1_\b2_\b7\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bb_\bf_\br\n-    * _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bo_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00710.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00710.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/bfr/surfaceFactoryCache.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/osd/d3d11PatchTable.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -90,46 +90,45 @@\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> &#124;\n <a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">surfaceFactoryCache.h File Reference</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">d3d11PatchTable.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &quot;../bfr/irregularPatchType.h&quot;</code><br />\n-<code>#include &lt;map&gt;</code><br />\n-<code>#include &lt;cstdint&gt;</code><br />\n+<code>#include &lt;vector&gt;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00857_source.html\">../far/patchDescriptor.h</a>&quot;</code><br />\n+<code>#include &quot;../osd/nonCopyable.h&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a01489_source.html\">../osd/types.h</a>&quot;</code><br />\n </div>\n <p><a href=\"a00710_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00949.html\">SurfaceFactoryCache</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Container used internally by <a class=\"el\" href=\"a00941.html\" title=\"Base class providing initialization of a Surface for each face of a mesh.\">SurfaceFactory</a> to store reusable information.  <a href=\"a00949.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00953.html\">SurfaceFactoryCacheThreaded&lt; MUTEX_TYPE, READ_LOCK_GUARD_TYPE, WRITE_LOCK_GUARD_TYPE &gt;</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Template for declaring thread-safe subclasses of <a class=\"el\" href=\"a00949.html\" title=\"Container used internally by SurfaceFactory to store reusable information.\">SurfaceFactoryCache</a>.  <a href=\"a00953.html#details\">More...</a><br /></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01209.html\">D3D11PatchTable</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00907\" id=\"r_a00907\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00907.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr</a></td></tr>\n+<tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far</a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_fa5edef2a780a73fbfb6a11f1af88ceb.html\">bfr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00710.html\">surfaceFactoryCache.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00710.html\">d3d11PatchTable.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,32 +1,28 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-surfaceFactoryCache.h File Reference\n+d3d11PatchTable.h File Reference\n #include \"../version.h\"\n-#include \"../bfr/irregularPatchType.h\"\n-#include <map>\n-#include <cstdint>\n+#include <vector>\n+#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh\"\n+#include \"../osd/nonCopyable.h\"\n+#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be\n-\u00a0       Container used internally by _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by to store reusable\n-        information. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be_\bT_\bh_\br_\be_\ba_\bd_\be_\bd_\b<_\b _\bM_\bU_\bT_\bE_\bX_\b__\bT_\bY_\bP_\bE_\b,_\b _\bR_\bE_\bA_\bD_\b__\bL_\bO_\bC_\bK_\b__\bG_\bU_\bA_\bR_\bD_\b__\bT_\bY_\bP_\bE_\b,\n-        _\bW_\bR_\bI_\bT_\bE_\b__\bL_\bO_\bC_\bK_\b__\bG_\bU_\bA_\bR_\bD_\b__\bT_\bY_\bP_\bE_\b _\b>\n-\u00a0       Template for declaring thread-safe subclasses of _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be.\n-        _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\b3_\bD_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br\n+\u00a0\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bb_\bf_\br\n-    * _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bd_\b3_\bd_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00710.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00710.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,4 +1,3 @@\n var a00710 = [\n-    [\"SurfaceFactoryCache\", \"a00949.html\", \"a00949\"],\n-    [\"SurfaceFactoryCacheThreaded< MUTEX_TYPE, READ_LOCK_GUARD_TYPE, WRITE_LOCK_GUARD_TYPE >\", \"a00953.html\", \"a00953\"]\n+    [\"D3D11PatchTable\", \"a01209.html\", \"a01209\"]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00710_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00710_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/bfr/surfaceFactoryCache.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/osd/d3d11PatchTable.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">surfaceFactoryCache.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">d3d11PatchTable.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00710.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2021 Pixar</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2015 Pixar</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -119,126 +119,118 @@\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_BFR_SURFACE_FACTORY_CACHE_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_BFR_SURFACE_FACTORY_CACHE_H</span></div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_GL_PATCH_TABLE_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_GL_PATCH_TABLE_H</span></div>\n <div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n <div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n <div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../bfr/irregularPatchType.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &lt;map&gt;</span></div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"preprocessor\">#include &lt;cstdint&gt;</span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../far/patchDescriptor.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &quot;../osd/nonCopyable.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"preprocessor\">#include &quot;../osd/types.h&quot;</span></div>\n <div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span> </div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span> </div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"keyword\">namespace </span>Bfr {</div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">struct </span>ID3D11Buffer;</div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"keyword\">struct </span>ID3D11ShaderResourceView;</div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">struct </span>ID3D11Device;</div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"keyword\">struct </span>ID3D11DeviceContext;</div>\n <div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span> </div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span><span class=\"comment\">//  Initial/expected use requires simple searches of and additions to the</span></div>\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span><span class=\"comment\">//  cache by the SurfaceFactory or its Builders.  Longer term, with the</span></div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span><span class=\"comment\">//  possibility of instances of caches being shared between meshes and</span></div>\n-<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span><span class=\"comment\">//  factories, additional options and/or public methods may be warranted</span></div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span><span class=\"comment\">//  to limit what is cached or to prune the cache if it gets too large.</span></div>\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span><span class=\"comment\">//</span></div>\n-<div class=\"foldopen\" id=\"foldopen00059\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00949.html\">   59</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a00949.html\">SurfaceFactoryCache</a> {</div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00949.html#a3f63565868cb0b0871e2db37939ec0e2\">   61</a></span>    <a class=\"code hl_function\" href=\"a00949.html#a3f63565868cb0b0871e2db37939ec0e2\">SurfaceFactoryCache</a>();</div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00949.html#a624a2bb484d2deb54dd08d3310e746b3\">   62</a></span>    <span class=\"keyword\">virtual</span> <a class=\"code hl_function\" href=\"a00949.html#a624a2bb484d2deb54dd08d3310e746b3\">~SurfaceFactoryCache</a>();</div>\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span> </div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00949.html#a704742f6a7a07e766b5320c8d6f2f745\">   64</a></span>    <a class=\"code hl_function\" href=\"a00949.html#a704742f6a7a07e766b5320c8d6f2f745\">SurfaceFactoryCache</a>(<a class=\"code hl_class\" href=\"a00949.html\">SurfaceFactoryCache</a> <span class=\"keyword\">const</span> &amp;) = <span class=\"keyword\">delete</span>;</div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00949.html#a736c32f5c64da3442ff1c74ef1fb9ff7\">   65</a></span>    <a class=\"code hl_class\" href=\"a00949.html\">SurfaceFactoryCache</a> &amp; <a class=\"code hl_function\" href=\"a00949.html#a736c32f5c64da3442ff1c74ef1fb9ff7\">operator=</a>(<a class=\"code hl_class\" href=\"a00949.html\">SurfaceFactoryCache</a> <span class=\"keyword\">const</span> &amp;) = <span class=\"keyword\">delete</span>;</div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span> </div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span><span class=\"keyword\">protected</span>:</div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span>    <span class=\"comment\">//  Access restricted to the Factory, its Builders, etc.</span></div>\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span>    <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a00941.html\">SurfaceFactory</a>;</div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span> </div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>    <span class=\"keyword\">typedef</span> std::uint64_t                     KeyType;</div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span>    <span class=\"keyword\">typedef</span> internal::IrregularPatchSharedPtr DataType;</div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span> </div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span><span class=\"keyword\">protected</span>:</div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span>    <span class=\"keywordtype\">size_t</span> Size()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _map.size(); }</div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span> </div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>    <span class=\"comment\">//  Potential overrides by subclasses for thread-safety:</span></div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>    <span class=\"keyword\">virtual</span> DataType Find(KeyType <span class=\"keyword\">const</span> &amp; key) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span>    <span class=\"keyword\">virtual</span> DataType Add(KeyType <span class=\"keyword\">const</span> &amp; key, DataType <span class=\"keyword\">const</span> &amp; data);</div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span> </div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"keyword\">namespace </span>Far{</div>\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span>    <span class=\"keyword\">class </span>PatchTable;</div>\n+<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span>};</div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span> </div>\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span><span class=\"keyword\">namespace </span>Osd {</div>\n+<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00049\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01209.html\">   49</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01209.html\">D3D11PatchTable</a> : <span class=\"keyword\">private</span> NonCopyable&lt;D3D11PatchTable&gt; {</div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01209.html#a2d85a5ed6ddcef5023c9ef2e6fdd38a5\">   51</a></span>    <span class=\"keyword\">typedef</span> ID3D11Buffer * <a class=\"code hl_typedef\" href=\"a01209.html#a2d85a5ed6ddcef5023c9ef2e6fdd38a5\">VertexBufferBinding</a>;</div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span> </div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01209.html#ac81ed5f09e3d3a2aae5a01802b343a6d\">   53</a></span>    <a class=\"code hl_function\" href=\"a01209.html#ac81ed5f09e3d3a2aae5a01802b343a6d\">D3D11PatchTable</a>();</div>\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01209.html#a39d5e5c13d54a0f5774047ffa2bb17e4\">   54</a></span>    <a class=\"code hl_function\" href=\"a01209.html#a39d5e5c13d54a0f5774047ffa2bb17e4\">~D3D11PatchTable</a>();</div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span> </div>\n+<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span>    <span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00057\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01209.html#a0d96d4b3eaf2b3e453cbcb031340ebca\">   57</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01209.html\">D3D11PatchTable</a> *<a class=\"code hl_function\" href=\"a01209.html#a0d96d4b3eaf2b3e453cbcb031340ebca\">Create</a>(<a class=\"code hl_class\" href=\"a00993.html\">Far::PatchTable</a> <span class=\"keyword\">const</span> *farPatchTable,</div>\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span>                                   DEVICE_CONTEXT context) {</div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01209.html#a0d96d4b3eaf2b3e453cbcb031340ebca\">Create</a>(farPatchTable, context-&gt;GetDeviceContext());</div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span> </div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01209.html#a8d071db2033c568b98a8aed737e563e9\">   62</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01209.html\">D3D11PatchTable</a> *<a class=\"code hl_function\" href=\"a01209.html#a8d071db2033c568b98a8aed737e563e9\">Create</a>(<a class=\"code hl_class\" href=\"a00993.html\">Far::PatchTable</a> <span class=\"keyword\">const</span> *farPatchTable,</div>\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>                                   ID3D11DeviceContext *deviceContext);</div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00065\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01209.html#a18e3d09b0c7b7552f8e419e36788166a\">   65</a></span>    <a class=\"code hl_typedef\" href=\"a00912.html#a98098cd229f60d2397d84a76fe654a31\">PatchArrayVector</a> <span class=\"keyword\">const</span> &amp;<a class=\"code hl_function\" href=\"a01209.html#a18e3d09b0c7b7552f8e419e36788166a\">GetPatchArrays</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01209.html#a5dfb6b58580f2dec58e9b5bfdb4ed9f1\">_patchArrays</a>;</div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00070\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01209.html#a45505c8c99abe0baf8b56981fa0a31e1\">   70</a></span>    ID3D11Buffer* <a class=\"code hl_function\" href=\"a01209.html#a45505c8c99abe0baf8b56981fa0a31e1\">GetPatchIndexBuffer</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01209.html#a70f9e642d07efb73b8e7dc7a418d6311\">_indexBuffer</a>;</div>\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00075\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01209.html#ab57fd008d10c0c2c6ed4182bb3f187ee\">   75</a></span>    ID3D11ShaderResourceView* <a class=\"code hl_function\" href=\"a01209.html#ab57fd008d10c0c2c6ed4182bb3f187ee\">GetPatchParamSRV</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01209.html#a906a11e9011b14e667c4e46e0cb0089c\">_patchParamBufferSRV</a>;</div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span> </div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span><span class=\"keyword\">protected</span>:</div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span>    <span class=\"comment\">// allocate buffers from patchTable</span></div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01209.html#a281807810d02943d0819c40e111b9144\">   81</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01209.html#a281807810d02943d0819c40e111b9144\">allocate</a>(<a class=\"code hl_class\" href=\"a00993.html\">Far::PatchTable</a> <span class=\"keyword\">const</span> *farPatchTable,</div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>                  ID3D11DeviceContext *deviceContext);</div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span> </div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01209.html#a5dfb6b58580f2dec58e9b5bfdb4ed9f1\">   84</a></span>    <a class=\"code hl_typedef\" href=\"a00912.html#a98098cd229f60d2397d84a76fe654a31\">PatchArrayVector</a> <a class=\"code hl_variable\" href=\"a01209.html#a5dfb6b58580f2dec58e9b5bfdb4ed9f1\">_patchArrays</a>;</div>\n <div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span> </div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>    <span class=\"comment\">//  Common implementation used by all subclasses:</span></div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>    DataType find(KeyType <span class=\"keyword\">const</span> &amp; key) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>    DataType add(KeyType <span class=\"keyword\">const</span> &amp; key, DataType <span class=\"keyword\">const</span> &amp; data);</div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span> </div>\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>    <span class=\"keyword\">typedef</span> std::map&lt;KeyType, DataType&gt; MapType;</div>\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span> </div>\n-<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span>    MapType _map;</div>\n-<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>};</div>\n-</div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01209.html#a70f9e642d07efb73b8e7dc7a418d6311\">   86</a></span>    ID3D11Buffer             *<a class=\"code hl_variable\" href=\"a01209.html#a70f9e642d07efb73b8e7dc7a418d6311\">_indexBuffer</a>;</div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01209.html#a922297765b71fb93103914cb95b76e68\">   87</a></span>    ID3D11Buffer             *<a class=\"code hl_variable\" href=\"a01209.html#a922297765b71fb93103914cb95b76e68\">_patchParamBuffer</a>;</div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01209.html#a906a11e9011b14e667c4e46e0cb0089c\">   88</a></span>    ID3D11ShaderResourceView *<a class=\"code hl_variable\" href=\"a01209.html#a906a11e9011b14e667c4e46e0cb0089c\">_patchParamBufferSRV</a>;</div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span> </div>\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span> </div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>}  <span class=\"comment\">// end namespace Osd</span></div>\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span> </div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>}  <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span> </div>\n+<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>}  <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n <div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span> </div>\n-<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span><span class=\"comment\">//  Separate read and write locks are provided to support mutex types</span></div>\n-<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span><span class=\"comment\">//  allowing shared (read) or exclusive (write) access.</span></div>\n-<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span><span class=\"comment\">// </span></div>\n-<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\">  116</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class </span>MUTEX_TYPE, <span class=\"keyword\">class </span>READ_LOCK_GUARD_TYPE,</div>\n-<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span>                            <span class=\"keyword\">class </span>WRITE_LOCK_GUARD_TYPE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00118\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00953.html\">  118</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a00953.html\">SurfaceFactoryCacheThreaded</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"a00949.html\">SurfaceFactoryCache</a> {</div>\n-<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00953.html#a9e84b6f045809c700d7dc53c3a350afe\">  120</a></span>    <a class=\"code hl_function\" href=\"a00953.html#a9e84b6f045809c700d7dc53c3a350afe\">SurfaceFactoryCacheThreaded</a>() : <a class=\"code hl_class\" href=\"a00949.html\">SurfaceFactoryCache</a>() { }</div>\n-<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00953.html#ac74eea23eda9dbc078678ee5d440c7b8\">  121</a></span>    <a class=\"code hl_function\" href=\"a00953.html#ac74eea23eda9dbc078678ee5d440c7b8\">~SurfaceFactoryCacheThreaded</a>() <span class=\"keyword\">override</span> = <span class=\"keywordflow\">default</span>;</div>\n-<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span> </div>\n-<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span><span class=\"keyword\">protected</span>:</div>\n-<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span>    <span class=\"comment\">//  Virtual overrides from base:</span></div>\n-<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span>    DataType Find(KeyType <span class=\"keyword\">const</span> &amp; key)<span class=\"keyword\"> const override </span>{</div>\n-<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span>        READ_LOCK_GUARD_TYPE lockGuard(_mutex);</div>\n-<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span>        <span class=\"keywordflow\">return</span> find(key);</div>\n-<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\">  131</span>    }</div>\n-<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\">  132</span> </div>\n-<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\">  133</span>    DataType Add(KeyType <span class=\"keyword\">const</span> &amp; key, DataType <span class=\"keyword\">const</span> &amp; data)<span class=\"keyword\"> override </span>{</div>\n-<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\">  134</span>        WRITE_LOCK_GUARD_TYPE lockGuard(_mutex);</div>\n-<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\">  135</span>        <span class=\"keywordflow\">return</span> add(key, data);</div>\n-<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\">  136</span>    }</div>\n-<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\">  138</span> </div>\n-<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\">  139</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\">  140</span>    MUTEX_TYPE <span class=\"keyword\">mutable</span> _mutex;</div>\n-<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\">  141</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span> </div>\n-<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\">  143</span>} <span class=\"comment\">// end namespace Bfr</span></div>\n-<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\">  144</span> </div>\n-<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\">  145</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\">  146</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\">  147</span> </div>\n-<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\">  148</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\">  149</span> </div>\n-<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\">  150</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_BFR_SURFACE_FACTORY_CACHE_H */</span><span class=\"preprocessor\"></span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa00941_html\"><div class=\"ttname\"><a href=\"a00941.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory</a></div><div class=\"ttdoc\">Base class providing initialization of a Surface for each face of a mesh.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00713_source.html#l00103\">surfaceFactory.h:103</a></div></div>\n-<div class=\"ttc\" id=\"aa00949_html\"><div class=\"ttname\"><a href=\"a00949.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryCache</a></div><div class=\"ttdoc\">Container used internally by SurfaceFactory to store reusable information.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00710_source.html#l00059\">surfaceFactoryCache.h:59</a></div></div>\n-<div class=\"ttc\" id=\"aa00949_html_a3f63565868cb0b0871e2db37939ec0e2\"><div class=\"ttname\"><a href=\"a00949.html#a3f63565868cb0b0871e2db37939ec0e2\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryCache::SurfaceFactoryCache</a></div><div class=\"ttdeci\">SurfaceFactoryCache()</div></div>\n-<div class=\"ttc\" id=\"aa00949_html_a624a2bb484d2deb54dd08d3310e746b3\"><div class=\"ttname\"><a href=\"a00949.html#a624a2bb484d2deb54dd08d3310e746b3\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryCache::~SurfaceFactoryCache</a></div><div class=\"ttdeci\">virtual ~SurfaceFactoryCache()</div></div>\n-<div class=\"ttc\" id=\"aa00949_html_a704742f6a7a07e766b5320c8d6f2f745\"><div class=\"ttname\"><a href=\"a00949.html#a704742f6a7a07e766b5320c8d6f2f745\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryCache::SurfaceFactoryCache</a></div><div class=\"ttdeci\">SurfaceFactoryCache(SurfaceFactoryCache const &amp;)=delete</div></div>\n-<div class=\"ttc\" id=\"aa00949_html_a736c32f5c64da3442ff1c74ef1fb9ff7\"><div class=\"ttname\"><a href=\"a00949.html#a736c32f5c64da3442ff1c74ef1fb9ff7\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryCache::operator=</a></div><div class=\"ttdeci\">SurfaceFactoryCache &amp; operator=(SurfaceFactoryCache const &amp;)=delete</div></div>\n-<div class=\"ttc\" id=\"aa00953_html\"><div class=\"ttname\"><a href=\"a00953.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryCacheThreaded</a></div><div class=\"ttdoc\">Template for declaring thread-safe subclasses of SurfaceFactoryCache.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00710_source.html#l00118\">surfaceFactoryCache.h:118</a></div></div>\n-<div class=\"ttc\" id=\"aa00953_html_a9e84b6f045809c700d7dc53c3a350afe\"><div class=\"ttname\"><a href=\"a00953.html#a9e84b6f045809c700d7dc53c3a350afe\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryCacheThreaded::SurfaceFactoryCacheThreaded</a></div><div class=\"ttdeci\">SurfaceFactoryCacheThreaded()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00710_source.html#l00120\">surfaceFactoryCache.h:120</a></div></div>\n-<div class=\"ttc\" id=\"aa00953_html_ac74eea23eda9dbc078678ee5d440c7b8\"><div class=\"ttname\"><a href=\"a00953.html#ac74eea23eda9dbc078678ee5d440c7b8\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryCacheThreaded::~SurfaceFactoryCacheThreaded</a></div><div class=\"ttdeci\">~SurfaceFactoryCacheThreaded() override=default</div></div>\n+<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_GL_PATCH_TABLE_H</span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa00912_html_a98098cd229f60d2397d84a76fe654a31\"><div class=\"ttname\"><a href=\"a00912.html#a98098cd229f60d2397d84a76fe654a31\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchArrayVector</a></div><div class=\"ttdeci\">std::vector&lt; PatchArray &gt; PatchArrayVector</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00132\">types.h:132</a></div></div>\n+<div class=\"ttc\" id=\"aa00993_html\"><div class=\"ttname\"><a href=\"a00993.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable</a></div><div class=\"ttdoc\">Container for arrays of parametric patches.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00842_source.html#l00055\">patchTable.h:55</a></div></div>\n+<div class=\"ttc\" id=\"aa01209_html\"><div class=\"ttname\"><a href=\"a01209.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11PatchTable</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00710_source.html#l00049\">d3d11PatchTable.h:49</a></div></div>\n+<div class=\"ttc\" id=\"aa01209_html_a0d96d4b3eaf2b3e453cbcb031340ebca\"><div class=\"ttname\"><a href=\"a01209.html#a0d96d4b3eaf2b3e453cbcb031340ebca\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11PatchTable::Create</a></div><div class=\"ttdeci\">static D3D11PatchTable * Create(Far::PatchTable const *farPatchTable, DEVICE_CONTEXT context)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00710_source.html#l00057\">d3d11PatchTable.h:57</a></div></div>\n+<div class=\"ttc\" id=\"aa01209_html_a18e3d09b0c7b7552f8e419e36788166a\"><div class=\"ttname\"><a href=\"a01209.html#a18e3d09b0c7b7552f8e419e36788166a\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11PatchTable::GetPatchArrays</a></div><div class=\"ttdeci\">PatchArrayVector const &amp; GetPatchArrays() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00710_source.html#l00065\">d3d11PatchTable.h:65</a></div></div>\n+<div class=\"ttc\" id=\"aa01209_html_a281807810d02943d0819c40e111b9144\"><div class=\"ttname\"><a href=\"a01209.html#a281807810d02943d0819c40e111b9144\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11PatchTable::allocate</a></div><div class=\"ttdeci\">bool allocate(Far::PatchTable const *farPatchTable, ID3D11DeviceContext *deviceContext)</div></div>\n+<div class=\"ttc\" id=\"aa01209_html_a2d85a5ed6ddcef5023c9ef2e6fdd38a5\"><div class=\"ttname\"><a href=\"a01209.html#a2d85a5ed6ddcef5023c9ef2e6fdd38a5\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11PatchTable::VertexBufferBinding</a></div><div class=\"ttdeci\">ID3D11Buffer * VertexBufferBinding</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00710_source.html#l00051\">d3d11PatchTable.h:51</a></div></div>\n+<div class=\"ttc\" id=\"aa01209_html_a39d5e5c13d54a0f5774047ffa2bb17e4\"><div class=\"ttname\"><a href=\"a01209.html#a39d5e5c13d54a0f5774047ffa2bb17e4\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11PatchTable::~D3D11PatchTable</a></div><div class=\"ttdeci\">~D3D11PatchTable()</div></div>\n+<div class=\"ttc\" id=\"aa01209_html_a45505c8c99abe0baf8b56981fa0a31e1\"><div class=\"ttname\"><a href=\"a01209.html#a45505c8c99abe0baf8b56981fa0a31e1\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11PatchTable::GetPatchIndexBuffer</a></div><div class=\"ttdeci\">ID3D11Buffer * GetPatchIndexBuffer() const</div><div class=\"ttdoc\">Returns the index buffer containing the patch control vertices.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00710_source.html#l00070\">d3d11PatchTable.h:70</a></div></div>\n+<div class=\"ttc\" id=\"aa01209_html_a5dfb6b58580f2dec58e9b5bfdb4ed9f1\"><div class=\"ttname\"><a href=\"a01209.html#a5dfb6b58580f2dec58e9b5bfdb4ed9f1\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11PatchTable::_patchArrays</a></div><div class=\"ttdeci\">PatchArrayVector _patchArrays</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00710_source.html#l00084\">d3d11PatchTable.h:84</a></div></div>\n+<div class=\"ttc\" id=\"aa01209_html_a70f9e642d07efb73b8e7dc7a418d6311\"><div class=\"ttname\"><a href=\"a01209.html#a70f9e642d07efb73b8e7dc7a418d6311\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11PatchTable::_indexBuffer</a></div><div class=\"ttdeci\">ID3D11Buffer * _indexBuffer</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00710_source.html#l00086\">d3d11PatchTable.h:86</a></div></div>\n+<div class=\"ttc\" id=\"aa01209_html_a8d071db2033c568b98a8aed737e563e9\"><div class=\"ttname\"><a href=\"a01209.html#a8d071db2033c568b98a8aed737e563e9\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11PatchTable::Create</a></div><div class=\"ttdeci\">static D3D11PatchTable * Create(Far::PatchTable const *farPatchTable, ID3D11DeviceContext *deviceContext)</div></div>\n+<div class=\"ttc\" id=\"aa01209_html_a906a11e9011b14e667c4e46e0cb0089c\"><div class=\"ttname\"><a href=\"a01209.html#a906a11e9011b14e667c4e46e0cb0089c\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11PatchTable::_patchParamBufferSRV</a></div><div class=\"ttdeci\">ID3D11ShaderResourceView * _patchParamBufferSRV</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00710_source.html#l00088\">d3d11PatchTable.h:88</a></div></div>\n+<div class=\"ttc\" id=\"aa01209_html_a922297765b71fb93103914cb95b76e68\"><div class=\"ttname\"><a href=\"a01209.html#a922297765b71fb93103914cb95b76e68\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11PatchTable::_patchParamBuffer</a></div><div class=\"ttdeci\">ID3D11Buffer * _patchParamBuffer</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00710_source.html#l00087\">d3d11PatchTable.h:87</a></div></div>\n+<div class=\"ttc\" id=\"aa01209_html_ab57fd008d10c0c2c6ed4182bb3f187ee\"><div class=\"ttname\"><a href=\"a01209.html#ab57fd008d10c0c2c6ed4182bb3f187ee\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11PatchTable::GetPatchParamSRV</a></div><div class=\"ttdeci\">ID3D11ShaderResourceView * GetPatchParamSRV() const</div><div class=\"ttdoc\">Returns the SRV containing the patch parameter.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00710_source.html#l00075\">d3d11PatchTable.h:75</a></div></div>\n+<div class=\"ttc\" id=\"aa01209_html_ac81ed5f09e3d3a2aae5a01802b343a6d\"><div class=\"ttname\"><a href=\"a01209.html#ac81ed5f09e3d3a2aae5a01802b343a6d\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11PatchTable::D3D11PatchTable</a></div><div class=\"ttdeci\">D3D11PatchTable()</div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_fa5edef2a780a73fbfb6a11f1af88ceb.html\">bfr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00710.html\">surfaceFactoryCache.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00710.html\">d3d11PatchTable.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-surfaceFactoryCache.h\n+d3d11PatchTable.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2021 Pixar\n+2// Copyright 2015 Pixar\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -24,131 +24,134 @@\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n 24\n-25#ifndef OPENSUBDIV3_BFR_SURFACE_FACTORY_CACHE_H\n-26#define OPENSUBDIV3_BFR_SURFACE_FACTORY_CACHE_H\n+25#ifndef OPENSUBDIV3_OSD_GL_PATCH_TABLE_H\n+26#define OPENSUBDIV3_OSD_GL_PATCH_TABLE_H\n 27\n 28#include \"../version.h\"\n 29\n-30#include \"../bfr/irregularPatchType.h\"\n-31\n-32#include <map>\n-33#include <cstdint>\n+30#include <vector>\n+31#include \"../far/patchDescriptor.h\"\n+32#include \"../osd/nonCopyable.h\"\n+33#include \"../osd/types.h\"\n 34\n-35namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-36namespace OPENSUBDIV_VERSION {\n-37\n-38namespace Bfr {\n+35struct ID3D11Buffer;\n+36struct ID3D11ShaderResourceView;\n+37struct ID3D11Device;\n+38struct ID3D11DeviceContext;\n 39\n-52//\n-53// Initial/expected use requires simple searches of and additions to the\n-54// cache by the SurfaceFactory or its Builders. Longer term, with the\n-55// possibility of instances of caches being shared between meshes and\n-56// factories, additional options and/or public methods may be warranted\n-57// to limit what is cached or to prune the cache if it gets too large.\n-58//\n-_\b5_\b9class _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be {\n-60public:\n-_\b6_\b1 _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be();\n-_\b6_\b2 virtual _\b~_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be();\n-63\n-_\b6_\b4 _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be(_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be const &) = delete;\n-_\b6_\b5 _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be & _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be const &) = delete;\n-66\n-67protected:\n-69 // Access restricted to the Factory, its Builders, etc.\n-70 friend class _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by;\n-71\n-72 typedef std::uint64_t KeyType;\n-73 typedef internal::IrregularPatchSharedPtr DataType;\n-75\n-76protected:\n-78 size_t Size() const { return _map.size(); }\n-79\n-80 //\n-81 // Potential overrides by subclasses for thread-safety:\n-82 //\n-83 virtual DataType Find(KeyType const & key) const;\n-84 virtual DataType Add(KeyType const & key, DataType const & data);\n+40namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+41namespace OPENSUBDIV_VERSION {\n+42\n+43namespace Far{\n+44 class PatchTable;\n+45};\n+46\n+47namespace Osd {\n+48\n+_\b4_\b9class _\bD_\b3_\bD_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be : private NonCopyable<D3D11PatchTable> {\n+50public:\n+_\b5_\b1 typedef ID3D11Buffer * _\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bB_\bi_\bn_\bd_\bi_\bn_\bg;\n+52\n+_\b5_\b3 _\bD_\b3_\bD_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be();\n+_\b5_\b4 _\b~_\bD_\b3_\bD_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be();\n+55\n+56 template<typename DEVICE_CONTEXT>\n+_\b5_\b7 static _\bD_\b3_\bD_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be *_\bC_\br_\be_\ba_\bt_\be(_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be const *farPatchTable,\n+58 DEVICE_CONTEXT context) {\n+59 return _\bC_\br_\be_\ba_\bt_\be(farPatchTable, context->GetDeviceContext());\n+60 }\n+61\n+_\b6_\b2 static _\bD_\b3_\bD_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be *_\bC_\br_\be_\ba_\bt_\be(_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be const *farPatchTable,\n+63 ID3D11DeviceContext *deviceContext);\n+64\n+_\b6_\b5 _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\bc_\bt_\bo_\br const &_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs() const {\n+66 return _\b__\bp_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs;\n+67 }\n+68\n+_\b7_\b0 ID3D11Buffer* _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br() const {\n+71 return _\b__\bi_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br;\n+72 }\n+73\n+_\b7_\b5 ID3D11ShaderResourceView* _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bS_\bR_\bV() const {\n+76 return _\b__\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br_\bS_\bR_\bV;\n+77 }\n+78\n+79protected:\n+80 // allocate buffers from patchTable\n+_\b8_\b1 bool _\ba_\bl_\bl_\bo_\bc_\ba_\bt_\be(_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be const *farPatchTable,\n+82 ID3D11DeviceContext *deviceContext);\n+83\n+_\b8_\b4 _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\bc_\bt_\bo_\br _\b__\bp_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs;\n 85\n-86 //\n-87 // Common implementation used by all subclasses:\n-88 //\n-89 DataType find(KeyType const & key) const;\n-90 DataType add(KeyType const & key, DataType const & data);\n-92\n-93private:\n-94 typedef std::map<KeyType, DataType> MapType;\n-95\n-96 MapType _map;\n-97};\n+_\b8_\b6 ID3D11Buffer *_\b__\bi_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br;\n+_\b8_\b7 ID3D11Buffer *_\b__\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br;\n+_\b8_\b8 ID3D11ShaderResourceView *_\b__\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br_\bS_\bR_\bV;\n+89};\n+90\n+91\n+92} // end namespace Osd\n+93\n+94} // end namespace OPENSUBDIV_VERSION\n+95using namespace OPENSUBDIV_VERSION;\n+96\n+97} // end namespace OpenSubdiv\n 98\n-113// Separate read and write locks are provided to support mutex types\n-114// allowing shared (read) or exclusive (write) access.\n-115//\n-116template <class MUTEX_TYPE, class READ_LOCK_GUARD_TYPE,\n-117 class WRITE_LOCK_GUARD_TYPE>\n-_\b1_\b1_\b8class _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be_\bT_\bh_\br_\be_\ba_\bd_\be_\bd : public _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be {\n-119public:\n-_\b1_\b2_\b0 _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be_\bT_\bh_\br_\be_\ba_\bd_\be_\bd() : _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be() { }\n-_\b1_\b2_\b1 _\b~_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be_\bT_\bh_\br_\be_\ba_\bd_\be_\bd() override = default;\n-122\n-123protected:\n-125 //\n-126 // Virtual overrides from base:\n-127 //\n-128 DataType Find(KeyType const & key) const override {\n-129 READ_LOCK_GUARD_TYPE lockGuard(_mutex);\n-130 return find(key);\n-131 }\n-132\n-133 DataType Add(KeyType const & key, DataType const & data) override {\n-134 WRITE_LOCK_GUARD_TYPE lockGuard(_mutex);\n-135 return add(key, data);\n-136 }\n-138\n-139private:\n-140 MUTEX_TYPE mutable _mutex;\n-141};\n-142\n-143} // end namespace Bfr\n-144\n-145} // end namespace OPENSUBDIV_VERSION\n-146using namespace OPENSUBDIV_VERSION;\n-147\n-148} // end namespace OpenSubdiv\n-149\n-150#endif /* OPENSUBDIV3_BFR_SURFACE_FACTORY_CACHE_H */\n+99#endif // OPENSUBDIV3_OSD_GL_PATCH_TABLE_H\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by\n-Base class providing initialization of a Surface for each face of a mesh.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b0_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be\n-Container used internally by SurfaceFactory to store reusable information.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be_\b._\bh_\b:_\b5_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be\n-SurfaceFactoryCache()\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be_\b:_\b:_\b~_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be\n-virtual ~SurfaceFactoryCache()\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be\n-SurfaceFactoryCache(SurfaceFactoryCache const &)=delete\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n-SurfaceFactoryCache & operator=(SurfaceFactoryCache const &)=delete\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be_\bT_\bh_\br_\be_\ba_\bd_\be_\bd\n-Template for declaring thread-safe subclasses of SurfaceFactoryCache.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be_\b._\bh_\b:_\b1_\b1_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be_\bT_\bh_\br_\be_\ba_\bd_\be_\bd_\b:_\b:\n-_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be_\bT_\bh_\br_\be_\ba_\bd_\be_\bd\n-SurfaceFactoryCacheThreaded()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be_\b._\bh_\b:_\b1_\b2_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be_\bT_\bh_\br_\be_\ba_\bd_\be_\bd_\b:_\b:\n-_\b~_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be_\bT_\bh_\br_\be_\ba_\bd_\be_\bd\n-~SurfaceFactoryCacheThreaded() override=default\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\bc_\bt_\bo_\br\n+std::vector< PatchArray > PatchArrayVector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b1_\b3_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+Container for arrays of parametric patches.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bd_\b3_\bd_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b4_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n+static D3D11PatchTable * Create(Far::PatchTable const *farPatchTable,\n+DEVICE_CONTEXT context)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bd_\b3_\bd_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs\n+PatchArrayVector const & GetPatchArrays() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bd_\b3_\bd_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\ba_\bl_\bl_\bo_\bc_\ba_\bt_\be\n+bool allocate(Far::PatchTable const *farPatchTable, ID3D11DeviceContext\n+*deviceContext)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bB_\bi_\bn_\bd_\bi_\bn_\bg\n+ID3D11Buffer * VertexBufferBinding\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bd_\b3_\bd_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b~_\bD_\b3_\bD_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+~D3D11PatchTable()\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+ID3D11Buffer * GetPatchIndexBuffer() const\n+Returns the index buffer containing the patch control vertices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bd_\b3_\bd_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bp_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs\n+PatchArrayVector _patchArrays\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bd_\b3_\bd_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b8_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bi_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+ID3D11Buffer * _indexBuffer\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bd_\b3_\bd_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b8_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n+static D3D11PatchTable * Create(Far::PatchTable const *farPatchTable,\n+ID3D11DeviceContext *deviceContext)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br_\bS_\bR_\bV\n+ID3D11ShaderResourceView * _patchParamBufferSRV\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bd_\b3_\bd_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b8_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br\n+ID3D11Buffer * _patchParamBuffer\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bd_\b3_\bd_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b8_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bS_\bR_\bV\n+ID3D11ShaderResourceView * GetPatchParamSRV() const\n+Returns the SRV containing the patch parameter.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bd_\b3_\bd_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+D3D11PatchTable()\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bb_\bf_\br\n-    * _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bd_\b3_\bd_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00713.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00713.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/bfr/surfaceFactory.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/osd/mtlVertexBuffer.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -90,48 +90,40 @@\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> &#124;\n <a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">surfaceFactory.h File Reference</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">mtlVertexBuffer.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00704_source.html\">../bfr/surface.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00707_source.html\">../bfr/surfaceFactoryMeshAdapter.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00734_source.html\">../sdc/options.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a01492_source.html\">../sdc/types.h</a>&quot;</code><br />\n-<code>#include &lt;cstdint&gt;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00698_source.html\">../osd/mtlCommon.h</a>&quot;</code><br />\n </div>\n <p><a href=\"a00713_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00941.html\">SurfaceFactory</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Base class providing initialization of a <a class=\"el\" href=\"a00933.html\" title=\"Encapsulates the limit surface for a face of a mesh.\">Surface</a> for each face of a mesh.  <a href=\"a00941.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00945.html\">SurfaceFactory::Options</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Simple set of options assigned to instances of <a class=\"el\" href=\"a00941.html\" title=\"Base class providing initialization of a Surface for each face of a mesh.\">SurfaceFactory</a>.  <a href=\"a00945.html#details\">More...</a><br /></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01309.html\">CPUMTLVertexBuffer</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00907\" id=\"r_a00907\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00907.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr</a></td></tr>\n+<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_fa5edef2a780a73fbfb6a11f1af88ceb.html\">bfr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00713.html\">surfaceFactory.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00713.html\">mtlVertexBuffer.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,32 +1,23 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-surfaceFactory.h File Reference\n+mtlVertexBuffer.h File Reference\n #include \"../version.h\"\n-#include \"_\b._\b._\b/_\bb_\bf_\br_\b/_\bs_\bu_\br_\bf_\ba_\bc_\be_\b._\bh\"\n-#include \"_\b._\b._\b/_\bb_\bf_\br_\b/_\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b._\bh\"\n-#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh\"\n-#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n-#include <cstdint>\n+#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bm_\bt_\bl_\bC_\bo_\bm_\bm_\bo_\bn_\b._\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by\n-\u00a0       Base class providing initialization of a _\bS_\bu_\br_\bf_\ba_\bc_\be for each face of a\n-        mesh. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n-\u00a0       Simple set of options assigned to instances of _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bC_\bP_\bU_\bM_\bT_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bb_\bf_\br\n-    * _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bm_\bt_\bl_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00713.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00713.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,4 +1,3 @@\n var a00713 = [\n-    [\"SurfaceFactory\", \"a00941.html\", \"a00941\"],\n-    [\"Options\", \"a00945.html\", \"a00945\"]\n+    [\"CPUMTLVertexBuffer\", \"a01309.html\", \"a01309\"]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00713_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00713_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/bfr/surfaceFactory.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/osd/mtlVertexBuffer.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">surfaceFactory.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">mtlVertexBuffer.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00713.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2021 Pixar</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2013 Pixar</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -119,412 +119,97 @@\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_BFR_SURFACE_FACTORY_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_BFR_SURFACE_FACTORY_H</span></div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_MTL_VERTEX_BUFFER_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_MTL_VERTEX_BUFFER_H</span></div>\n <div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n <div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../bfr/surface.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../bfr/surfaceFactoryMeshAdapter.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &quot;../sdc/options.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"preprocessor\">#include &quot;../sdc/types.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span> </div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"preprocessor\">#include &lt;cstdint&gt;</span></div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#include &quot;../osd/mtlCommon.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span> </div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"keyword\">@protocol </span>MTLDevice;</div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"keyword\">@protocol </span>MTLBuffer;</div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n <div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span> </div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"keyword\">namespace </span>Bfr {</div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span> </div>\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"comment\">//  Forward declarations of public and internal classes used by factories:</span></div>\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span><span class=\"keyword\">class </span>SurfaceFactoryCache;</div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span><span class=\"keyword\">class </span>FaceTopology;</div>\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span><span class=\"keyword\">class </span>FaceSurface;</div>\n-<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00103\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00941.html\">  103</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a00941.html\">SurfaceFactory</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"a00957.html\">SurfaceFactoryMeshAdapter</a> {</div>\n-<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"foldopen\" id=\"foldopen00116\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00945.html\">  116</a></span>    <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a00945.html\">Options</a> {</div>\n-<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span>    <span class=\"keyword\">public</span>:</div>\n-<div class=\"foldopen\" id=\"foldopen00118\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00945.html#a28d39a844c3a37ab61d32ab7c6352f09\">  118</a></span>        <a class=\"code hl_function\" href=\"a00945.html#a28d39a844c3a37ab61d32ab7c6352f09\">Options</a>() : _dfltFVarID(-1), _externCache(0), _enableCache(true),</div>\n-<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span>                    _approxLevelSmooth(2), _approxLevelSharp(6) { }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span> </div>\n-<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span>        <a class=\"code hl_class\" href=\"a00945.html\">Options</a> &amp; <a class=\"code hl_function\" href=\"a00945.html#a2db0e8ff5143c3a69bf3772bac7bde78\">SetDefaultFVarID</a>(<a class=\"code hl_typedef\" href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">FVarID</a> <span class=\"keywordtype\">id</span>);</div>\n-<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00945.html#a51ba21f3605015ed597a25303143c0b1\">  125</a></span>        <a class=\"code hl_typedef\" href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">FVarID</a> <a class=\"code hl_function\" href=\"a00945.html#a51ba21f3605015ed597a25303143c0b1\">GetDefaultFVarID</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _dfltFVarID; }</div>\n-<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span> </div>\n-<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span>        <a class=\"code hl_class\" href=\"a00945.html\">Options</a> &amp; <a class=\"code hl_function\" href=\"a00945.html#a14e81c17e41ad591714664008331f41e\">EnableCaching</a>(<span class=\"keywordtype\">bool</span> on);</div>\n-<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00945.html#a2c83835832d46536d097ae6ff32659db\">  130</a></span>        <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00945.html#a2c83835832d46536d097ae6ff32659db\">IsCachingEnabled</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _enableCache; }</div>\n-<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\">  131</span> </div>\n-<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\">  133</span>        <a class=\"code hl_class\" href=\"a00945.html\">Options</a> &amp; <a class=\"code hl_function\" href=\"a00945.html#a06af1ca1d903fe5110c962bec75acec7\">SetExternalCache</a>(<a class=\"code hl_class\" href=\"a00949.html\">SurfaceFactoryCache</a> * c);</div>\n-<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00945.html#acd0411b6d29a6acae3826da06d86bd5b\">  135</a></span>        <a class=\"code hl_class\" href=\"a00949.html\">SurfaceFactoryCache</a> * <a class=\"code hl_function\" href=\"a00945.html#acd0411b6d29a6acae3826da06d86bd5b\">GetExternalCache</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _externCache; }</div>\n-<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\">  136</span> </div>\n-<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\">  137</span>        <span class=\"comment\">//  Set refinement levels used to approximate the limit surface</span></div>\n-<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\">  138</span>        <span class=\"comment\">//  for smooth and sharp features (reasonable defaults assigned):</span></div>\n-<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\">  140</span>        <a class=\"code hl_class\" href=\"a00945.html\">Options</a> &amp; <a class=\"code hl_function\" href=\"a00945.html#a1ee6780461b18cc80b5c79b520310079\">SetApproxLevelSmooth</a>(<span class=\"keywordtype\">int</span> level);</div>\n-<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00945.html#a1ff965cb913fbc4716a5985c3d3c60e3\">  142</a></span>        <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00945.html#a1ff965cb913fbc4716a5985c3d3c60e3\">GetApproxLevelSmooth</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _approxLevelSmooth; }</div>\n-<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\">  143</span> </div>\n-<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\">  145</span>        <a class=\"code hl_class\" href=\"a00945.html\">Options</a> &amp; <a class=\"code hl_function\" href=\"a00945.html#a391dfc1d3e1d75fc0aa496717784a95e\">SetApproxLevelSharp</a>(<span class=\"keywordtype\">int</span> level);</div>\n-<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00945.html#a595df0016de04902f5954b740c7baa2c\">  147</a></span>        <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00945.html#a595df0016de04902f5954b740c7baa2c\">GetApproxLevelSharp</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _approxLevelSharp; }</div>\n-<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\">  148</span> </div>\n-<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\">  149</span>    <span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\">  150</span>        <span class=\"comment\">//  Member variables:</span></div>\n-<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\">  151</span>        <a class=\"code hl_typedef\" href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">FVarID</a> _dfltFVarID;</div>\n-<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\">  152</span> </div>\n-<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\">  153</span>        <a class=\"code hl_class\" href=\"a00949.html\">SurfaceFactoryCache</a> * _externCache;</div>\n-<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\">  154</span> </div>\n-<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\">  155</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> _enableCache : 1;</div>\n-<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\">  156</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> _approxLevelSmooth;</div>\n-<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\">  157</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> _approxLevelSharp;</div>\n-<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\">  158</span>    };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\">  159</span> </div>\n-<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\">  160</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00941.html#a1e36434fc02ae0d7a087a8eb07577ee9\">  161</a></span>    <a class=\"code hl_function\" href=\"a00941.html#a1e36434fc02ae0d7a087a8eb07577ee9\">~SurfaceFactory</a>() <span class=\"keyword\">override</span>;</div>\n-<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\">  162</span> </div>\n-<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\">  164</span> </div>\n-<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\">  168</span> </div>\n-<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00941.html#a758e06255013d2d7393c3ac2d18f6922\">  170</a></span>    <a class=\"code hl_enumeration\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833d\">Sdc::SchemeType</a> <a class=\"code hl_function\" href=\"a00941.html#a758e06255013d2d7393c3ac2d18f6922\">GetSchemeType</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _subdivScheme; }</div>\n-<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span> </div>\n-<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00941.html#a4528f38657b0c96bce6c3d7deffd7c02\">  173</a></span>    <a class=\"code hl_class\" href=\"a01337.html\">Sdc::Options</a> <a class=\"code hl_function\" href=\"a00941.html#a4528f38657b0c96bce6c3d7deffd7c02\">GetSchemeOptions</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _subdivOptions; }</div>\n-<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\">  175</span> </div>\n-<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\">  176</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\">  178</span> </div>\n-<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\">  190</span> </div>\n-<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00941.html#a5cab9f649e56c15a486e3878a19bedf7\">  200</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00941.html#a5cab9f649e56c15a486e3878a19bedf7\">FaceHasLimitSurface</a>(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\">  201</span> </div>\n-<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00941.html#a59964d0c9ed91d83447ceacede2acc1d\">  208</a></span>    <a class=\"code hl_class\" href=\"a00921.html\">Parameterization</a> <a class=\"code hl_function\" href=\"a00941.html#a59964d0c9ed91d83447ceacede2acc1d\">GetFaceParameterization</a>(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\">  210</span> </div>\n-<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\">  211</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\">  213</span> </div>\n-<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\">  233</span> </div>\n-<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\">  241</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\">  242</span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00941.html#abb4a2f3f7e6623ace424afc5c0315fc1\">InitVertexSurface</a>(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex, <a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;</a> * surface) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\">  243</span> </div>\n-<div class=\"line\"><a id=\"l00251\" name=\"l00251\"></a><span class=\"lineno\">  251</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00252\" name=\"l00252\"></a><span class=\"lineno\">  252</span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00941.html#adee257f933b8440f3e1b4760c506f15f\">InitVaryingSurface</a>(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex, <a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;</a> * surface) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00253\" name=\"l00253\"></a><span class=\"lineno\">  253</span> </div>\n-<div class=\"line\"><a id=\"l00266\" name=\"l00266\"></a><span class=\"lineno\">  266</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00267\" name=\"l00267\"></a><span class=\"lineno\">  267</span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00941.html#a2236306cbbc12f5a77753e269c76fe0e\">InitFaceVaryingSurface</a>(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex, <a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;</a> * surface) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00268\" name=\"l00268\"></a><span class=\"lineno\">  268</span> </div>\n-<div class=\"line\"><a id=\"l00278\" name=\"l00278\"></a><span class=\"lineno\">  278</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00279\" name=\"l00279\"></a><span class=\"lineno\">  279</span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00941.html#a2236306cbbc12f5a77753e269c76fe0e\">InitFaceVaryingSurface</a>(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex, <a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;</a> * surface,</div>\n-<div class=\"line\"><a id=\"l00280\" name=\"l00280\"></a><span class=\"lineno\">  280</span>                                                 <a class=\"code hl_typedef\" href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">FVarID</a>          fvarID) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00281\" name=\"l00281\"></a><span class=\"lineno\">  281</span> </div>\n-<div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\">  307</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00308\" name=\"l00308\"></a><span class=\"lineno\">  308</span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00941.html#a6ab6508b7c2a5c259acf6b9b89688fc8\">InitSurfaces</a>(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex, <a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;</a> * vtxSurface,</div>\n-<div class=\"line\"><a id=\"l00309\" name=\"l00309\"></a><span class=\"lineno\">  309</span>                                       <a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;</a> * fvarSurfaces,</div>\n-<div class=\"line\"><a id=\"l00310\" name=\"l00310\"></a><span class=\"lineno\">  310</span>                                       <a class=\"code hl_typedef\" href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">FVarID</a> <span class=\"keyword\">const</span>    fvarIDs[] = 0,</div>\n-<div class=\"line\"><a id=\"l00311\" name=\"l00311\"></a><span class=\"lineno\">  311</span>                                       <span class=\"keywordtype\">int</span>             fvarCount = 0,</div>\n-<div class=\"line\"><a id=\"l00312\" name=\"l00312\"></a><span class=\"lineno\">  312</span>                                       <a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;</a> * varSurface = 0) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00314\" name=\"l00314\"></a><span class=\"lineno\">  314</span> </div>\n-<div class=\"line\"><a id=\"l00316\" name=\"l00316\"></a><span class=\"lineno\">  316</span> </div>\n-<div class=\"line\"><a id=\"l00319\" name=\"l00319\"></a><span class=\"lineno\">  319</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00320\" name=\"l00320\"></a><span class=\"lineno\">  320</span>    <span class=\"comment\">//      WIP - considering removing these since non-essential</span></div>\n-<div class=\"line\"><a id=\"l00321\" name=\"l00321\"></a><span class=\"lineno\">  321</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00322\" name=\"l00322\"></a><span class=\"lineno\">  322</span> </div>\n-<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\">  324</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL=<span class=\"keywordtype\">float</span>&gt;</div>\n-<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\">  325</span>    <a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;</a> * <a class=\"code hl_function\" href=\"a00941.html#a676cf019574c99fa77341ac09889192d\">CreateVertexSurface</a>(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\">  326</span> </div>\n-<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\">  328</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL=<span class=\"keywordtype\">float</span>&gt;</div>\n-<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\">  329</span>    <a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;</a> * <a class=\"code hl_function\" href=\"a00941.html#a81638f2ff6818fd96aa7cd1ad3ed0703\">CreateVaryingSurface</a>(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\">  330</span> </div>\n-<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\">  332</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL=<span class=\"keywordtype\">float</span>&gt;</div>\n-<div class=\"line\"><a id=\"l00333\" name=\"l00333\"></a><span class=\"lineno\">  333</span>    <a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;</a> * <a class=\"code hl_function\" href=\"a00941.html#a67a5dcab87b052d231634dd9fcf5dee2\">CreateFaceVaryingSurface</a>(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00334\" name=\"l00334\"></a><span class=\"lineno\">  334</span> </div>\n-<div class=\"line\"><a id=\"l00336\" name=\"l00336\"></a><span class=\"lineno\">  336</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL=<span class=\"keywordtype\">float</span>&gt;</div>\n-<div class=\"line\"><a id=\"l00337\" name=\"l00337\"></a><span class=\"lineno\">  337</span>    <a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;</a> * <a class=\"code hl_function\" href=\"a00941.html#a67a5dcab87b052d231634dd9fcf5dee2\">CreateFaceVaryingSurface</a>(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex, <a class=\"code hl_typedef\" href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">FVarID</a> <span class=\"keywordtype\">id</span>) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00339\" name=\"l00339\"></a><span class=\"lineno\">  339</span> </div>\n-<div class=\"line\"><a id=\"l00340\" name=\"l00340\"></a><span class=\"lineno\">  340</span><span class=\"keyword\">protected</span>:</div>\n-<div class=\"line\"><a id=\"l00342\" name=\"l00342\"></a><span class=\"lineno\">  342</span> </div>\n-<div class=\"line\"><a id=\"l00346\" name=\"l00346\"></a><span class=\"lineno\">  346</span> </div>\n-<div class=\"line\"><a id=\"l00358\" name=\"l00358\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00941.html#ae54ee5a9e2bcb2bfdf395084395a0719\">  358</a></span>    <a class=\"code hl_function\" href=\"a00941.html#ae54ee5a9e2bcb2bfdf395084395a0719\">SurfaceFactory</a>(<a class=\"code hl_enumeration\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833d\">Sdc::SchemeType</a>      schemeType,</div>\n-<div class=\"line\"><a id=\"l00359\" name=\"l00359\"></a><span class=\"lineno\">  359</span>                   <a class=\"code hl_class\" href=\"a01337.html\">Sdc::Options</a> <span class=\"keyword\">const</span> &amp; schemeOptions,</div>\n-<div class=\"line\"><a id=\"l00360\" name=\"l00360\"></a><span class=\"lineno\">  360</span>                   <a class=\"code hl_class\" href=\"a00945.html\">Options</a>      <span class=\"keyword\">const</span> &amp; limitOptions);</div>\n-<div class=\"line\"><a id=\"l00361\" name=\"l00361\"></a><span class=\"lineno\">  361</span> </div>\n-<div class=\"line\"><a id=\"l00363\" name=\"l00363\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00941.html#a043a7fc91f7bc29a4cbba51d9cb00ecb\">  363</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00941.html#a043a7fc91f7bc29a4cbba51d9cb00ecb\">setInternalCache</a>(<a class=\"code hl_class\" href=\"a00949.html\">SurfaceFactoryCache</a> * cache);</div>\n-<div class=\"line\"><a id=\"l00364\" name=\"l00364\"></a><span class=\"lineno\">  364</span> </div>\n-<div class=\"line\"><a id=\"l00365\" name=\"l00365\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00941.html#a5ac6bb6255796f79debe11e25b816093\">  365</a></span>    <a class=\"code hl_function\" href=\"a00941.html#a5ac6bb6255796f79debe11e25b816093\">SurfaceFactory</a>(<a class=\"code hl_class\" href=\"a00941.html\">SurfaceFactory</a> <span class=\"keyword\">const</span> &amp;) = <span class=\"keyword\">delete</span>;</div>\n-<div class=\"line\"><a id=\"l00366\" name=\"l00366\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00941.html#a5d089ab30f0402395635d7b389710594\">  366</a></span>    <a class=\"code hl_class\" href=\"a00941.html\">SurfaceFactory</a> &amp; <a class=\"code hl_function\" href=\"a00941.html#a5d089ab30f0402395635d7b389710594\">operator=</a>(<a class=\"code hl_class\" href=\"a00941.html\">SurfaceFactory</a> <span class=\"keyword\">const</span> &amp;) = <span class=\"keyword\">delete</span>;</div>\n-<div class=\"line\"><a id=\"l00368\" name=\"l00368\"></a><span class=\"lineno\">  368</span> </div>\n-<div class=\"line\"><a id=\"l00369\" name=\"l00369\"></a><span class=\"lineno\">  369</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00370\" name=\"l00370\"></a><span class=\"lineno\">  370</span>    <span class=\"comment\">//  Supporting internal methods:</span></div>\n-<div class=\"line\"><a id=\"l00371\" name=\"l00371\"></a><span class=\"lineno\">  371</span>    <span class=\"keywordtype\">void</span> setSubdivisionOptions(<a class=\"code hl_enumeration\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833d\">Sdc::SchemeType</a>, <a class=\"code hl_class\" href=\"a01337.html\">Sdc::Options</a> <span class=\"keyword\">const</span> &amp; options);</div>\n-<div class=\"line\"><a id=\"l00372\" name=\"l00372\"></a><span class=\"lineno\">  372</span>    <span class=\"keywordtype\">void</span> setFactoryOptions(<a class=\"code hl_class\" href=\"a00945.html\">Options</a> <span class=\"keyword\">const</span> &amp; factoryOptions);</div>\n-<div class=\"line\"><a id=\"l00373\" name=\"l00373\"></a><span class=\"lineno\">  373</span> </div>\n-<div class=\"line\"><a id=\"l00374\" name=\"l00374\"></a><span class=\"lineno\">  374</span>    <span class=\"keywordtype\">bool</span> faceHasLimitSimple(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex, <span class=\"keywordtype\">int</span> faceSize) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00375\" name=\"l00375\"></a><span class=\"lineno\">  375</span> </div>\n-<div class=\"line\"><a id=\"l00376\" name=\"l00376\"></a><span class=\"lineno\">  376</span>    <span class=\"keywordtype\">bool</span> faceHasLimitNeighborhood(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00377\" name=\"l00377\"></a><span class=\"lineno\">  377</span>    <span class=\"keywordtype\">bool</span> faceHasLimitNeighborhood(FaceTopology <span class=\"keyword\">const</span> &amp; faceTopology) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00378\" name=\"l00378\"></a><span class=\"lineno\">  378</span> </div>\n-<div class=\"line\"><a id=\"l00379\" name=\"l00379\"></a><span class=\"lineno\">  379</span>    <span class=\"keyword\">class </span>SurfaceSet;</div>\n-<div class=\"line\"><a id=\"l00380\" name=\"l00380\"></a><span class=\"lineno\">  380</span> </div>\n-<div class=\"line\"><a id=\"l00381\" name=\"l00381\"></a><span class=\"lineno\">  381</span>    <span class=\"keywordtype\">bool</span> populateAllSurfaces(      <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex, SurfaceSet * sSetPtr) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00382\" name=\"l00382\"></a><span class=\"lineno\">  382</span>    <span class=\"keywordtype\">bool</span> populateLinearSurfaces(   <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex, SurfaceSet * sSetPtr) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00383\" name=\"l00383\"></a><span class=\"lineno\">  383</span>    <span class=\"keywordtype\">bool</span> populateNonLinearSurfaces(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex, SurfaceSet * sSetPtr) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00384\" name=\"l00384\"></a><span class=\"lineno\">  384</span> </div>\n-<div class=\"line\"><a id=\"l00385\" name=\"l00385\"></a><span class=\"lineno\">  385</span>    <span class=\"keywordtype\">bool</span> initSurfaces(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex, internal::SurfaceData * vtxSurface,</div>\n-<div class=\"line\"><a id=\"l00386\" name=\"l00386\"></a><span class=\"lineno\">  386</span>                                       internal::SurfaceData * varSurface,</div>\n-<div class=\"line\"><a id=\"l00387\" name=\"l00387\"></a><span class=\"lineno\">  387</span>                                       internal::SurfaceData * fvarSurfaces,</div>\n-<div class=\"line\"><a id=\"l00388\" name=\"l00388\"></a><span class=\"lineno\">  388</span>                                       <span class=\"keywordtype\">int</span>           fvarCount,</div>\n-<div class=\"line\"><a id=\"l00389\" name=\"l00389\"></a><span class=\"lineno\">  389</span>                                       <a class=\"code hl_typedef\" href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">FVarID</a> <span class=\"keyword\">const</span>  fvarIDs[]) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00390\" name=\"l00390\"></a><span class=\"lineno\">  390</span> </div>\n-<div class=\"line\"><a id=\"l00391\" name=\"l00391\"></a><span class=\"lineno\">  391</span>    <span class=\"comment\">//  Methods to assemble topology and corresponding indices for entire face:</span></div>\n-<div class=\"line\"><a id=\"l00392\" name=\"l00392\"></a><span class=\"lineno\">  392</span>    <span class=\"keywordtype\">bool</span> isFaceNeighborhoodRegular(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a>          faceIndex,</div>\n-<div class=\"line\"><a id=\"l00393\" name=\"l00393\"></a><span class=\"lineno\">  393</span>                                   <a class=\"code hl_typedef\" href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">FVarID</a> <span class=\"keyword\">const</span> * fvarPtrOrVtx,</div>\n-<div class=\"line\"><a id=\"l00394\" name=\"l00394\"></a><span class=\"lineno\">  394</span>                                   <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a>          indices[]) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00395\" name=\"l00395\"></a><span class=\"lineno\">  395</span> </div>\n-<div class=\"line\"><a id=\"l00396\" name=\"l00396\"></a><span class=\"lineno\">  396</span>    <span class=\"keywordtype\">bool</span> initFaceNeighborhoodTopology(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a>          faceIndex,</div>\n-<div class=\"line\"><a id=\"l00397\" name=\"l00397\"></a><span class=\"lineno\">  397</span>                                      FaceTopology * topology) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00398\" name=\"l00398\"></a><span class=\"lineno\">  398</span> </div>\n-<div class=\"line\"><a id=\"l00399\" name=\"l00399\"></a><span class=\"lineno\">  399</span>    <span class=\"keywordtype\">bool</span> gatherFaceNeighborhoodTopology(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a>          faceIndex,</div>\n-<div class=\"line\"><a id=\"l00400\" name=\"l00400\"></a><span class=\"lineno\">  400</span>                                        FaceTopology * topology) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00401\" name=\"l00401\"></a><span class=\"lineno\">  401</span> </div>\n-<div class=\"line\"><a id=\"l00402\" name=\"l00402\"></a><span class=\"lineno\">  402</span>    <span class=\"keywordtype\">int</span> gatherFaceNeighborhoodIndices(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a>                faceIndex,</div>\n-<div class=\"line\"><a id=\"l00403\" name=\"l00403\"></a><span class=\"lineno\">  403</span>                                      FaceTopology <span class=\"keyword\">const</span> &amp; topology,</div>\n-<div class=\"line\"><a id=\"l00404\" name=\"l00404\"></a><span class=\"lineno\">  404</span>                                      <a class=\"code hl_typedef\" href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">FVarID</a>       <span class=\"keyword\">const</span> * fvarPtrOrVtx,</div>\n-<div class=\"line\"><a id=\"l00405\" name=\"l00405\"></a><span class=\"lineno\">  405</span>                                      <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a>                indices[]) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00406\" name=\"l00406\"></a><span class=\"lineno\">  406</span> </div>\n-<div class=\"line\"><a id=\"l00407\" name=\"l00407\"></a><span class=\"lineno\">  407</span>    <span class=\"comment\">//  Methods to assemble Surfaces for the different categories of patch:</span></div>\n-<div class=\"line\"><a id=\"l00408\" name=\"l00408\"></a><span class=\"lineno\">  408</span>    <span class=\"keyword\">typedef</span> internal::SurfaceData SurfaceType;</div>\n-<div class=\"line\"><a id=\"l00409\" name=\"l00409\"></a><span class=\"lineno\">  409</span> </div>\n-<div class=\"line\"><a id=\"l00410\" name=\"l00410\"></a><span class=\"lineno\">  410</span>    <span class=\"keywordtype\">void</span> assignLinearSurface(SurfaceType  * surfacePtr,</div>\n-<div class=\"line\"><a id=\"l00411\" name=\"l00411\"></a><span class=\"lineno\">  411</span>                             <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a>          faceIndex,</div>\n-<div class=\"line\"><a id=\"l00412\" name=\"l00412\"></a><span class=\"lineno\">  412</span>                             <a class=\"code hl_typedef\" href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">FVarID</a> <span class=\"keyword\">const</span> * fvarPtrOrVtx) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00413\" name=\"l00413\"></a><span class=\"lineno\">  413</span> </div>\n-<div class=\"line\"><a id=\"l00414\" name=\"l00414\"></a><span class=\"lineno\">  414</span>    <span class=\"keywordtype\">void</span> assignRegularSurface(SurfaceType * surfacePtr,</div>\n-<div class=\"line\"><a id=\"l00415\" name=\"l00415\"></a><span class=\"lineno\">  415</span>                              <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> <span class=\"keyword\">const</span>   surfacePatchPoints[]) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00416\" name=\"l00416\"></a><span class=\"lineno\">  416</span> </div>\n-<div class=\"line\"><a id=\"l00417\" name=\"l00417\"></a><span class=\"lineno\">  417</span>    <span class=\"keywordtype\">void</span> assignRegularSurface(SurfaceType       * surfacePtr,</div>\n-<div class=\"line\"><a id=\"l00418\" name=\"l00418\"></a><span class=\"lineno\">  418</span>                              FaceSurface <span class=\"keyword\">const</span> &amp; surfaceDescription) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00419\" name=\"l00419\"></a><span class=\"lineno\">  419</span> </div>\n-<div class=\"line\"><a id=\"l00420\" name=\"l00420\"></a><span class=\"lineno\">  420</span>    <span class=\"keywordtype\">void</span> assignIrregularSurface(SurfaceType       * surfacePtr,</div>\n-<div class=\"line\"><a id=\"l00421\" name=\"l00421\"></a><span class=\"lineno\">  421</span>                                FaceSurface <span class=\"keyword\">const</span> &amp; surfaceDescription) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00422\" name=\"l00422\"></a><span class=\"lineno\">  422</span> </div>\n-<div class=\"line\"><a id=\"l00423\" name=\"l00423\"></a><span class=\"lineno\">  423</span>    <span class=\"keywordtype\">void</span> copyNonLinearSurface(SurfaceType       * surfacePtr,</div>\n-<div class=\"line\"><a id=\"l00424\" name=\"l00424\"></a><span class=\"lineno\">  424</span>                              SurfaceType <span class=\"keyword\">const</span> &amp; surfaceSource,</div>\n-<div class=\"line\"><a id=\"l00425\" name=\"l00425\"></a><span class=\"lineno\">  425</span>                              FaceSurface <span class=\"keyword\">const</span> &amp; surfaceDescription) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00426\" name=\"l00426\"></a><span class=\"lineno\">  426</span> </div>\n-<div class=\"line\"><a id=\"l00427\" name=\"l00427\"></a><span class=\"lineno\">  427</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00428\" name=\"l00428\"></a><span class=\"lineno\">  428</span>    <span class=\"comment\">//  Members describing options and subdivision properties (very little</span></div>\n-<div class=\"line\"><a id=\"l00429\" name=\"l00429\"></a><span class=\"lineno\">  429</span>    <span class=\"comment\">//  memory and low initialization cost)</span></div>\n-<div class=\"line\"><a id=\"l00430\" name=\"l00430\"></a><span class=\"lineno\">  430</span>    <a class=\"code hl_enumeration\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833d\">Sdc::SchemeType</a> _subdivScheme;</div>\n-<div class=\"line\"><a id=\"l00431\" name=\"l00431\"></a><span class=\"lineno\">  431</span>    <a class=\"code hl_class\" href=\"a01337.html\">Sdc::Options</a>    _subdivOptions;</div>\n-<div class=\"line\"><a id=\"l00432\" name=\"l00432\"></a><span class=\"lineno\">  432</span>    <a class=\"code hl_class\" href=\"a00945.html\">Options</a>         _factoryOptions;</div>\n-<div class=\"line\"><a id=\"l00433\" name=\"l00433\"></a><span class=\"lineno\">  433</span> </div>\n-<div class=\"line\"><a id=\"l00434\" name=\"l00434\"></a><span class=\"lineno\">  434</span>    <span class=\"comment\">//  Members related to subdivision topology, options and limit tests:</span></div>\n-<div class=\"line\"><a id=\"l00435\" name=\"l00435\"></a><span class=\"lineno\">  435</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> _linearScheme      : 1;</div>\n-<div class=\"line\"><a id=\"l00436\" name=\"l00436\"></a><span class=\"lineno\">  436</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> _linearFVarInterp  : 1;</div>\n-<div class=\"line\"><a id=\"l00437\" name=\"l00437\"></a><span class=\"lineno\">  437</span> </div>\n-<div class=\"line\"><a id=\"l00438\" name=\"l00438\"></a><span class=\"lineno\">  438</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> _testNeighborhoodForLimit       : 1;</div>\n-<div class=\"line\"><a id=\"l00439\" name=\"l00439\"></a><span class=\"lineno\">  439</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> _rejectSmoothBoundariesForLimit : 1;</div>\n-<div class=\"line\"><a id=\"l00440\" name=\"l00440\"></a><span class=\"lineno\">  440</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> _rejectIrregularFacesForLimit   : 1;</div>\n-<div class=\"line\"><a id=\"l00441\" name=\"l00441\"></a><span class=\"lineno\">  441</span> </div>\n-<div class=\"line\"><a id=\"l00442\" name=\"l00442\"></a><span class=\"lineno\">  442</span>    <span class=\"keywordtype\">int</span>  _regFaceSize;</div>\n-<div class=\"line\"><a id=\"l00443\" name=\"l00443\"></a><span class=\"lineno\">  443</span> </div>\n-<div class=\"line\"><a id=\"l00444\" name=\"l00444\"></a><span class=\"lineno\">  444</span>    <span class=\"comment\">//  Members related to caching:</span></div>\n-<div class=\"line\"><a id=\"l00445\" name=\"l00445\"></a><span class=\"lineno\">  445</span>    <a class=\"code hl_class\" href=\"a00949.html\">SurfaceFactoryCache</a> <span class=\"keyword\">mutable</span> * _topologyCache;</div>\n-<div class=\"line\"><a id=\"l00446\" name=\"l00446\"></a><span class=\"lineno\">  446</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00447\" name=\"l00447\"></a><span class=\"lineno\">  447</span> </div>\n-<div class=\"line\"><a id=\"l00448\" name=\"l00448\"></a><span class=\"lineno\">  448</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00449\" name=\"l00449\"></a><span class=\"lineno\">  449</span><span class=\"comment\">//  Inline methods for Options:</span></div>\n-<div class=\"line\"><a id=\"l00450\" name=\"l00450\"></a><span class=\"lineno\">  450</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00451\" name=\"l00451\"></a><span class=\"lineno\">  451</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a00945.html\">SurfaceFactory::Options</a> &amp;</div>\n-<div class=\"foldopen\" id=\"foldopen00452\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00452\" name=\"l00452\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00945.html#a2db0e8ff5143c3a69bf3772bac7bde78\">  452</a></span><a class=\"code hl_function\" href=\"a00945.html#a2db0e8ff5143c3a69bf3772bac7bde78\">SurfaceFactory::Options::SetDefaultFVarID</a>(<a class=\"code hl_typedef\" href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">FVarID</a> <span class=\"keywordtype\">id</span>) {</div>\n-<div class=\"line\"><a id=\"l00453\" name=\"l00453\"></a><span class=\"lineno\">  453</span>    _dfltFVarID = id;</div>\n-<div class=\"line\"><a id=\"l00454\" name=\"l00454\"></a><span class=\"lineno\">  454</span>    <span class=\"keywordflow\">return</span> *<span class=\"keyword\">this</span>;</div>\n-<div class=\"line\"><a id=\"l00455\" name=\"l00455\"></a><span class=\"lineno\">  455</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00456\" name=\"l00456\"></a><span class=\"lineno\">  456</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a00945.html\">SurfaceFactory::Options</a> &amp;</div>\n-<div class=\"foldopen\" id=\"foldopen00457\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00457\" name=\"l00457\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00945.html#a14e81c17e41ad591714664008331f41e\">  457</a></span><a class=\"code hl_function\" href=\"a00945.html#a14e81c17e41ad591714664008331f41e\">SurfaceFactory::Options::EnableCaching</a>(<span class=\"keywordtype\">bool</span> on) {</div>\n-<div class=\"line\"><a id=\"l00458\" name=\"l00458\"></a><span class=\"lineno\">  458</span>    _enableCache = on;</div>\n-<div class=\"line\"><a id=\"l00459\" name=\"l00459\"></a><span class=\"lineno\">  459</span>    <span class=\"keywordflow\">return</span> *<span class=\"keyword\">this</span>;</div>\n-<div class=\"line\"><a id=\"l00460\" name=\"l00460\"></a><span class=\"lineno\">  460</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00461\" name=\"l00461\"></a><span class=\"lineno\">  461</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a00945.html\">SurfaceFactory::Options</a> &amp; </div>\n-<div class=\"foldopen\" id=\"foldopen00462\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00462\" name=\"l00462\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00945.html#a06af1ca1d903fe5110c962bec75acec7\">  462</a></span><a class=\"code hl_function\" href=\"a00945.html#a06af1ca1d903fe5110c962bec75acec7\">SurfaceFactory::Options::SetExternalCache</a>(<a class=\"code hl_class\" href=\"a00949.html\">SurfaceFactoryCache</a> * c) {</div>\n-<div class=\"line\"><a id=\"l00463\" name=\"l00463\"></a><span class=\"lineno\">  463</span>    _externCache = c;</div>\n-<div class=\"line\"><a id=\"l00464\" name=\"l00464\"></a><span class=\"lineno\">  464</span>    <span class=\"keywordflow\">return</span> *<span class=\"keyword\">this</span>;</div>\n-<div class=\"line\"><a id=\"l00465\" name=\"l00465\"></a><span class=\"lineno\">  465</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00466\" name=\"l00466\"></a><span class=\"lineno\">  466</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a00945.html\">SurfaceFactory::Options</a> &amp;</div>\n-<div class=\"foldopen\" id=\"foldopen00467\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00467\" name=\"l00467\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00945.html#a1ee6780461b18cc80b5c79b520310079\">  467</a></span><a class=\"code hl_function\" href=\"a00945.html#a1ee6780461b18cc80b5c79b520310079\">SurfaceFactory::Options::SetApproxLevelSmooth</a>(<span class=\"keywordtype\">int</span> level) {</div>\n-<div class=\"line\"><a id=\"l00468\" name=\"l00468\"></a><span class=\"lineno\">  468</span>    _approxLevelSmooth = (<span class=\"keywordtype\">unsigned</span> char) level;</div>\n-<div class=\"line\"><a id=\"l00469\" name=\"l00469\"></a><span class=\"lineno\">  469</span>    <span class=\"keywordflow\">return</span> *<span class=\"keyword\">this</span>;</div>\n-<div class=\"line\"><a id=\"l00470\" name=\"l00470\"></a><span class=\"lineno\">  470</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00471\" name=\"l00471\"></a><span class=\"lineno\">  471</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a00945.html\">SurfaceFactory::Options</a> &amp;</div>\n-<div class=\"foldopen\" id=\"foldopen00472\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00472\" name=\"l00472\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00945.html#a391dfc1d3e1d75fc0aa496717784a95e\">  472</a></span><a class=\"code hl_function\" href=\"a00945.html#a391dfc1d3e1d75fc0aa496717784a95e\">SurfaceFactory::Options::SetApproxLevelSharp</a>(<span class=\"keywordtype\">int</span> level) {</div>\n-<div class=\"line\"><a id=\"l00473\" name=\"l00473\"></a><span class=\"lineno\">  473</span>    _approxLevelSharp = (<span class=\"keywordtype\">unsigned</span> char) level;</div>\n-<div class=\"line\"><a id=\"l00474\" name=\"l00474\"></a><span class=\"lineno\">  474</span>    <span class=\"keywordflow\">return</span> *<span class=\"keyword\">this</span>;</div>\n-<div class=\"line\"><a id=\"l00475\" name=\"l00475\"></a><span class=\"lineno\">  475</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00476\" name=\"l00476\"></a><span class=\"lineno\">  476</span> </div>\n-<div class=\"line\"><a id=\"l00477\" name=\"l00477\"></a><span class=\"lineno\">  477</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00478\" name=\"l00478\"></a><span class=\"lineno\">  478</span><span class=\"comment\">//  Inline methods to initializes Surfaces:</span></div>\n-<div class=\"line\"><a id=\"l00479\" name=\"l00479\"></a><span class=\"lineno\">  479</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00480\" name=\"l00480\"></a><span class=\"lineno\">  480</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00481\" name=\"l00481\"></a><span class=\"lineno\">  481</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span></div>\n-<div class=\"foldopen\" id=\"foldopen00482\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00482\" name=\"l00482\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00941.html#abb4a2f3f7e6623ace424afc5c0315fc1\">  482</a></span><a class=\"code hl_function\" href=\"a00941.html#abb4a2f3f7e6623ace424afc5c0315fc1\">SurfaceFactory::InitVertexSurface</a>(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> face, <a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;</a> * s)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00483\" name=\"l00483\"></a><span class=\"lineno\">  483</span> </div>\n-<div class=\"line\"><a id=\"l00484\" name=\"l00484\"></a><span class=\"lineno\">  484</span>    <span class=\"keywordflow\">return</span> initSurfaces(face, &amp;s-&gt;getSurfaceData(), 0, 0, 0, 0);</div>\n-<div class=\"line\"><a id=\"l00485\" name=\"l00485\"></a><span class=\"lineno\">  485</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00486\" name=\"l00486\"></a><span class=\"lineno\">  486</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00487\" name=\"l00487\"></a><span class=\"lineno\">  487</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span></div>\n-<div class=\"foldopen\" id=\"foldopen00488\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00488\" name=\"l00488\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00941.html#adee257f933b8440f3e1b4760c506f15f\">  488</a></span><a class=\"code hl_function\" href=\"a00941.html#adee257f933b8440f3e1b4760c506f15f\">SurfaceFactory::InitVaryingSurface</a>(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> face, <a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;</a> * s)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00489\" name=\"l00489\"></a><span class=\"lineno\">  489</span> </div>\n-<div class=\"line\"><a id=\"l00490\" name=\"l00490\"></a><span class=\"lineno\">  490</span>    <span class=\"keywordflow\">return</span> initSurfaces(face, 0, &amp;s-&gt;getSurfaceData(), 0, 0, 0);</div>\n-<div class=\"line\"><a id=\"l00491\" name=\"l00491\"></a><span class=\"lineno\">  491</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00492\" name=\"l00492\"></a><span class=\"lineno\">  492</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00493\" name=\"l00493\"></a><span class=\"lineno\">  493</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span></div>\n-<div class=\"foldopen\" id=\"foldopen00494\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00494\" name=\"l00494\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00941.html#a9cd69d28232867bdbb5f0b0cfcea5db5\">  494</a></span><a class=\"code hl_function\" href=\"a00941.html#a2236306cbbc12f5a77753e269c76fe0e\">SurfaceFactory::InitFaceVaryingSurface</a>(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> face, <a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;</a> * s,</div>\n-<div class=\"line\"><a id=\"l00495\" name=\"l00495\"></a><span class=\"lineno\">  495</span>                                                   <a class=\"code hl_typedef\" href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">FVarID</a> fvarID)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00496\" name=\"l00496\"></a><span class=\"lineno\">  496</span>    <span class=\"keywordflow\">return</span> initSurfaces(face, 0, 0, &amp;s-&gt;getSurfaceData(), 1, &amp;fvarID);</div>\n-<div class=\"line\"><a id=\"l00497\" name=\"l00497\"></a><span class=\"lineno\">  497</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00498\" name=\"l00498\"></a><span class=\"lineno\">  498</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00499\" name=\"l00499\"></a><span class=\"lineno\">  499</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span></div>\n-<div class=\"foldopen\" id=\"foldopen00500\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00500\" name=\"l00500\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00941.html#a2236306cbbc12f5a77753e269c76fe0e\">  500</a></span><a class=\"code hl_function\" href=\"a00941.html#a2236306cbbc12f5a77753e269c76fe0e\">SurfaceFactory::InitFaceVaryingSurface</a>(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> face, <a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;</a> * s)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00501\" name=\"l00501\"></a><span class=\"lineno\">  501</span>    <a class=\"code hl_typedef\" href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">FVarID</a> dfltID = _factoryOptions.<a class=\"code hl_function\" href=\"a00945.html#a51ba21f3605015ed597a25303143c0b1\">GetDefaultFVarID</a>();</div>\n-<div class=\"line\"><a id=\"l00502\" name=\"l00502\"></a><span class=\"lineno\">  502</span>    <span class=\"keywordflow\">return</span> initSurfaces(face, 0, 0, &amp;s-&gt;getSurfaceData(), 1, &amp;dfltID);</div>\n-<div class=\"line\"><a id=\"l00503\" name=\"l00503\"></a><span class=\"lineno\">  503</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00504\" name=\"l00504\"></a><span class=\"lineno\">  504</span> </div>\n-<div class=\"line\"><a id=\"l00505\" name=\"l00505\"></a><span class=\"lineno\">  505</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00506\" name=\"l00506\"></a><span class=\"lineno\">  506</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span></div>\n-<div class=\"foldopen\" id=\"foldopen00507\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00507\" name=\"l00507\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00941.html#a6ab6508b7c2a5c259acf6b9b89688fc8\">  507</a></span><a class=\"code hl_function\" href=\"a00941.html#a6ab6508b7c2a5c259acf6b9b89688fc8\">SurfaceFactory::InitSurfaces</a>(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex, <a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;</a> * vtxSurface,</div>\n-<div class=\"line\"><a id=\"l00508\" name=\"l00508\"></a><span class=\"lineno\">  508</span>        <a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;</a> * fvarSurfaces, <a class=\"code hl_typedef\" href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">FVarID</a> <span class=\"keyword\">const</span> fvarIDs[], <span class=\"keywordtype\">int</span> fvarCount,</div>\n-<div class=\"line\"><a id=\"l00509\" name=\"l00509\"></a><span class=\"lineno\">  509</span>        <a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;</a> * varSurface)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00510\" name=\"l00510\"></a><span class=\"lineno\">  510</span> </div>\n-<div class=\"line\"><a id=\"l00511\" name=\"l00511\"></a><span class=\"lineno\">  511</span>    <span class=\"keywordtype\">bool</span> useDfltFVarID = fvarSurfaces &amp;&amp; (fvarIDs == 0) &amp;&amp; (fvarCount == 0);</div>\n-<div class=\"line\"><a id=\"l00512\" name=\"l00512\"></a><span class=\"lineno\">  512</span>    <a class=\"code hl_typedef\" href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">FVarID</a> dfltFVarID = useDfltFVarID ? _factoryOptions.<a class=\"code hl_function\" href=\"a00945.html#a51ba21f3605015ed597a25303143c0b1\">GetDefaultFVarID</a>() : 0;</div>\n-<div class=\"line\"><a id=\"l00513\" name=\"l00513\"></a><span class=\"lineno\">  513</span> </div>\n-<div class=\"line\"><a id=\"l00514\" name=\"l00514\"></a><span class=\"lineno\">  514</span>    <span class=\"keywordflow\">return</span> initSurfaces(faceIndex,</div>\n-<div class=\"line\"><a id=\"l00515\" name=\"l00515\"></a><span class=\"lineno\">  515</span>                        vtxSurface    ? &amp;vtxSurface-&gt;getSurfaceData()   : 0,</div>\n-<div class=\"line\"><a id=\"l00516\" name=\"l00516\"></a><span class=\"lineno\">  516</span>                        varSurface    ? &amp;varSurface-&gt;getSurfaceData()   : 0,</div>\n-<div class=\"line\"><a id=\"l00517\" name=\"l00517\"></a><span class=\"lineno\">  517</span>                        fvarSurfaces  ? &amp;fvarSurfaces-&gt;getSurfaceData() : 0,</div>\n-<div class=\"line\"><a id=\"l00518\" name=\"l00518\"></a><span class=\"lineno\">  518</span>                        fvarCount     ? fvarCount : (fvarSurfaces != 0),</div>\n-<div class=\"line\"><a id=\"l00519\" name=\"l00519\"></a><span class=\"lineno\">  519</span>                        useDfltFVarID ? &amp;dfltFVarID : fvarIDs);</div>\n-<div class=\"line\"><a id=\"l00520\" name=\"l00520\"></a><span class=\"lineno\">  520</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00521\" name=\"l00521\"></a><span class=\"lineno\">  521</span> </div>\n-<div class=\"line\"><a id=\"l00522\" name=\"l00522\"></a><span class=\"lineno\">  522</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00523\" name=\"l00523\"></a><span class=\"lineno\">  523</span><span class=\"comment\">//  Inline methods to allocate and initialize Surfaces:</span></div>\n-<div class=\"line\"><a id=\"l00524\" name=\"l00524\"></a><span class=\"lineno\">  524</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00525\" name=\"l00525\"></a><span class=\"lineno\">  525</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00526\" name=\"l00526\"></a><span class=\"lineno\">  526</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;</a> *</div>\n-<div class=\"foldopen\" id=\"foldopen00527\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00527\" name=\"l00527\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00941.html#a676cf019574c99fa77341ac09889192d\">  527</a></span><a class=\"code hl_function\" href=\"a00941.html#a676cf019574c99fa77341ac09889192d\">SurfaceFactory::CreateVertexSurface</a>(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00528\" name=\"l00528\"></a><span class=\"lineno\">  528</span>    <a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;</a> * s = <span class=\"keyword\">new</span> <a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;</a>();</div>\n-<div class=\"line\"><a id=\"l00529\" name=\"l00529\"></a><span class=\"lineno\">  529</span>    <span class=\"keywordflow\">if</span> (InitVertexSurface&lt;REAL&gt;(faceIndex, s)) <span class=\"keywordflow\">return</span> s;</div>\n-<div class=\"line\"><a id=\"l00530\" name=\"l00530\"></a><span class=\"lineno\">  530</span>    <span class=\"keyword\">delete</span> s;</div>\n-<div class=\"line\"><a id=\"l00531\" name=\"l00531\"></a><span class=\"lineno\">  531</span>    <span class=\"keywordflow\">return</span> 0;</div>\n-<div class=\"line\"><a id=\"l00532\" name=\"l00532\"></a><span class=\"lineno\">  532</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00533\" name=\"l00533\"></a><span class=\"lineno\">  533</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00534\" name=\"l00534\"></a><span class=\"lineno\">  534</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;</a> *</div>\n-<div class=\"foldopen\" id=\"foldopen00535\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00535\" name=\"l00535\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00941.html#a81638f2ff6818fd96aa7cd1ad3ed0703\">  535</a></span><a class=\"code hl_function\" href=\"a00941.html#a81638f2ff6818fd96aa7cd1ad3ed0703\">SurfaceFactory::CreateVaryingSurface</a>(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00536\" name=\"l00536\"></a><span class=\"lineno\">  536</span>    <a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;</a> * s = <span class=\"keyword\">new</span> <a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;</a>();</div>\n-<div class=\"line\"><a id=\"l00537\" name=\"l00537\"></a><span class=\"lineno\">  537</span>    <span class=\"keywordflow\">if</span> (InitVaryingSurface&lt;REAL&gt;(faceIndex, s)) <span class=\"keywordflow\">return</span> s;</div>\n-<div class=\"line\"><a id=\"l00538\" name=\"l00538\"></a><span class=\"lineno\">  538</span>    <span class=\"keyword\">delete</span> s;</div>\n-<div class=\"line\"><a id=\"l00539\" name=\"l00539\"></a><span class=\"lineno\">  539</span>    <span class=\"keywordflow\">return</span> 0;</div>\n-<div class=\"line\"><a id=\"l00540\" name=\"l00540\"></a><span class=\"lineno\">  540</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00541\" name=\"l00541\"></a><span class=\"lineno\">  541</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00542\" name=\"l00542\"></a><span class=\"lineno\">  542</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;</a> *</div>\n-<div class=\"foldopen\" id=\"foldopen00543\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00543\" name=\"l00543\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00941.html#a59227e292ea63aa9641a090521cfd457\">  543</a></span><a class=\"code hl_function\" href=\"a00941.html#a67a5dcab87b052d231634dd9fcf5dee2\">SurfaceFactory::CreateFaceVaryingSurface</a>(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex, <a class=\"code hl_typedef\" href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">FVarID</a> fvarID)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00544\" name=\"l00544\"></a><span class=\"lineno\">  544</span>    <a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;</a> * s = <span class=\"keyword\">new</span> <a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;</a>();</div>\n-<div class=\"line\"><a id=\"l00545\" name=\"l00545\"></a><span class=\"lineno\">  545</span>    <span class=\"keywordflow\">if</span> (InitFaceVaryingSurface&lt;REAL&gt;(faceIndex, s, fvarID)) <span class=\"keywordflow\">return</span> s;</div>\n-<div class=\"line\"><a id=\"l00546\" name=\"l00546\"></a><span class=\"lineno\">  546</span>    <span class=\"keyword\">delete</span> s;</div>\n-<div class=\"line\"><a id=\"l00547\" name=\"l00547\"></a><span class=\"lineno\">  547</span>    <span class=\"keywordflow\">return</span> 0;</div>\n-<div class=\"line\"><a id=\"l00548\" name=\"l00548\"></a><span class=\"lineno\">  548</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00549\" name=\"l00549\"></a><span class=\"lineno\">  549</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00550\" name=\"l00550\"></a><span class=\"lineno\">  550</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;</a> *</div>\n-<div class=\"foldopen\" id=\"foldopen00551\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00551\" name=\"l00551\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00941.html#a67a5dcab87b052d231634dd9fcf5dee2\">  551</a></span><a class=\"code hl_function\" href=\"a00941.html#a67a5dcab87b052d231634dd9fcf5dee2\">SurfaceFactory::CreateFaceVaryingSurface</a>(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> face)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00552\" name=\"l00552\"></a><span class=\"lineno\">  552</span>    <a class=\"code hl_typedef\" href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">FVarID</a> dfltID = _factoryOptions.<a class=\"code hl_function\" href=\"a00945.html#a51ba21f3605015ed597a25303143c0b1\">GetDefaultFVarID</a>();</div>\n-<div class=\"line\"><a id=\"l00553\" name=\"l00553\"></a><span class=\"lineno\">  553</span>    <span class=\"keywordflow\">return</span> CreateFaceVaryingSurface&lt;REAL&gt;(face, dfltID);</div>\n-<div class=\"line\"><a id=\"l00554\" name=\"l00554\"></a><span class=\"lineno\">  554</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00555\" name=\"l00555\"></a><span class=\"lineno\">  555</span> </div>\n-<div class=\"line\"><a id=\"l00556\" name=\"l00556\"></a><span class=\"lineno\">  556</span>} <span class=\"comment\">// end namespace Bfr</span></div>\n-<div class=\"line\"><a id=\"l00557\" name=\"l00557\"></a><span class=\"lineno\">  557</span> </div>\n-<div class=\"line\"><a id=\"l00558\" name=\"l00558\"></a><span class=\"lineno\">  558</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00559\" name=\"l00559\"></a><span class=\"lineno\">  559</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00560\" name=\"l00560\"></a><span class=\"lineno\">  560</span> </div>\n-<div class=\"line\"><a id=\"l00561\" name=\"l00561\"></a><span class=\"lineno\">  561</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l00562\" name=\"l00562\"></a><span class=\"lineno\">  562</span> </div>\n-<div class=\"line\"><a id=\"l00563\" name=\"l00563\"></a><span class=\"lineno\">  563</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_BFR_SURFACE_FACTORY_H */</span><span class=\"preprocessor\"></span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa00913_html_aa3daa2f428c6be2b1cb394f3a525833d\"><div class=\"ttname\"><a href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833d\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::SchemeType</a></div><div class=\"ttdeci\">SchemeType</div><div class=\"ttdoc\">Enumerated type for all subdivision schemes supported by OpenSubdiv.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01492_source.html#l00037\">types.h:37</a></div></div>\n-<div class=\"ttc\" id=\"aa00921_html\"><div class=\"ttname\"><a href=\"a00921.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization</a></div><div class=\"ttdoc\">Simple class defining the 2D parameterization of a face.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00719_source.html#l00052\">parameterization.h:52</a></div></div>\n-<div class=\"ttc\" id=\"aa00933_html\"><div class=\"ttname\"><a href=\"a00933.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface</a></div><div class=\"ttdoc\">Encapsulates the limit surface for a face of a mesh.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00059\">surface.h:59</a></div></div>\n-<div class=\"ttc\" id=\"aa00941_html\"><div class=\"ttname\"><a href=\"a00941.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory</a></div><div class=\"ttdoc\">Base class providing initialization of a Surface for each face of a mesh.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00713_source.html#l00103\">surfaceFactory.h:103</a></div></div>\n-<div class=\"ttc\" id=\"aa00941_html_a043a7fc91f7bc29a4cbba51d9cb00ecb\"><div class=\"ttname\"><a href=\"a00941.html#a043a7fc91f7bc29a4cbba51d9cb00ecb\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::setInternalCache</a></div><div class=\"ttdeci\">void setInternalCache(SurfaceFactoryCache *cache)</div><div class=\"ttdoc\">Subclass to identify an internal cache for use by base class.</div></div>\n-<div class=\"ttc\" id=\"aa00941_html_a1e36434fc02ae0d7a087a8eb07577ee9\"><div class=\"ttname\"><a href=\"a00941.html#a1e36434fc02ae0d7a087a8eb07577ee9\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::~SurfaceFactory</a></div><div class=\"ttdeci\">~SurfaceFactory() override</div></div>\n-<div class=\"ttc\" id=\"aa00941_html_a2236306cbbc12f5a77753e269c76fe0e\"><div class=\"ttname\"><a href=\"a00941.html#a2236306cbbc12f5a77753e269c76fe0e\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::InitFaceVaryingSurface</a></div><div class=\"ttdeci\">bool InitFaceVaryingSurface(Index faceIndex, Surface&lt; REAL &gt; *surface) const</div><div class=\"ttdoc\">Initialize a Surface for the default face-varying data.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00713_source.html#l00500\">surfaceFactory.h:500</a></div></div>\n-<div class=\"ttc\" id=\"aa00941_html_a4528f38657b0c96bce6c3d7deffd7c02\"><div class=\"ttname\"><a href=\"a00941.html#a4528f38657b0c96bce6c3d7deffd7c02\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::GetSchemeOptions</a></div><div class=\"ttdeci\">Sdc::Options GetSchemeOptions() const</div><div class=\"ttdoc\">Return the set of subdivision options.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00713_source.html#l00173\">surfaceFactory.h:173</a></div></div>\n-<div class=\"ttc\" id=\"aa00941_html_a59964d0c9ed91d83447ceacede2acc1d\"><div class=\"ttname\"><a href=\"a00941.html#a59964d0c9ed91d83447ceacede2acc1d\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::GetFaceParameterization</a></div><div class=\"ttdeci\">Parameterization GetFaceParameterization(Index faceIndex) const</div><div class=\"ttdoc\">Return the Parameterization of a face with a limit surface.</div></div>\n-<div class=\"ttc\" id=\"aa00941_html_a5ac6bb6255796f79debe11e25b816093\"><div class=\"ttname\"><a href=\"a00941.html#a5ac6bb6255796f79debe11e25b816093\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::SurfaceFactory</a></div><div class=\"ttdeci\">SurfaceFactory(SurfaceFactory const &amp;)=delete</div></div>\n-<div class=\"ttc\" id=\"aa00941_html_a5cab9f649e56c15a486e3878a19bedf7\"><div class=\"ttname\"><a href=\"a00941.html#a5cab9f649e56c15a486e3878a19bedf7\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::FaceHasLimitSurface</a></div><div class=\"ttdeci\">bool FaceHasLimitSurface(Index faceIndex) const</div><div class=\"ttdoc\">Return if a specified face has a limit surface.</div></div>\n-<div class=\"ttc\" id=\"aa00941_html_a5d089ab30f0402395635d7b389710594\"><div class=\"ttname\"><a href=\"a00941.html#a5d089ab30f0402395635d7b389710594\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::operator=</a></div><div class=\"ttdeci\">SurfaceFactory &amp; operator=(SurfaceFactory const &amp;)=delete</div></div>\n-<div class=\"ttc\" id=\"aa00941_html_a676cf019574c99fa77341ac09889192d\"><div class=\"ttname\"><a href=\"a00941.html#a676cf019574c99fa77341ac09889192d\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::CreateVertexSurface</a></div><div class=\"ttdeci\">Surface&lt; REAL &gt; * CreateVertexSurface(Index faceIndex) const</div><div class=\"ttdoc\">Construct a Surface for vertex data.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00713_source.html#l00527\">surfaceFactory.h:527</a></div></div>\n-<div class=\"ttc\" id=\"aa00941_html_a67a5dcab87b052d231634dd9fcf5dee2\"><div class=\"ttname\"><a href=\"a00941.html#a67a5dcab87b052d231634dd9fcf5dee2\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::CreateFaceVaryingSurface</a></div><div class=\"ttdeci\">Surface&lt; REAL &gt; * CreateFaceVaryingSurface(Index faceIndex) const</div><div class=\"ttdoc\">Construct a Surface for the default face-varying data.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00713_source.html#l00551\">surfaceFactory.h:551</a></div></div>\n-<div class=\"ttc\" id=\"aa00941_html_a6ab6508b7c2a5c259acf6b9b89688fc8\"><div class=\"ttname\"><a href=\"a00941.html#a6ab6508b7c2a5c259acf6b9b89688fc8\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::InitSurfaces</a></div><div class=\"ttdeci\">bool InitSurfaces(Index faceIndex, Surface&lt; REAL &gt; *vtxSurface, Surface&lt; REAL &gt; *fvarSurfaces, FVarID const fvarIDs[]=0, int fvarCount=0, Surface&lt; REAL &gt; *varSurface=0) const</div><div class=\"ttdoc\">Initialize multiple Surfaces at once.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00713_source.html#l00507\">surfaceFactory.h:507</a></div></div>\n-<div class=\"ttc\" id=\"aa00941_html_a758e06255013d2d7393c3ac2d18f6922\"><div class=\"ttname\"><a href=\"a00941.html#a758e06255013d2d7393c3ac2d18f6922\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::GetSchemeType</a></div><div class=\"ttdeci\">Sdc::SchemeType GetSchemeType() const</div><div class=\"ttdoc\">Return the subdivision scheme.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00713_source.html#l00170\">surfaceFactory.h:170</a></div></div>\n-<div class=\"ttc\" id=\"aa00941_html_a81638f2ff6818fd96aa7cd1ad3ed0703\"><div class=\"ttname\"><a href=\"a00941.html#a81638f2ff6818fd96aa7cd1ad3ed0703\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::CreateVaryingSurface</a></div><div class=\"ttdeci\">Surface&lt; REAL &gt; * CreateVaryingSurface(Index faceIndex) const</div><div class=\"ttdoc\">Construct a Surface for varying data.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00713_source.html#l00535\">surfaceFactory.h:535</a></div></div>\n-<div class=\"ttc\" id=\"aa00941_html_abb4a2f3f7e6623ace424afc5c0315fc1\"><div class=\"ttname\"><a href=\"a00941.html#abb4a2f3f7e6623ace424afc5c0315fc1\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::InitVertexSurface</a></div><div class=\"ttdeci\">bool InitVertexSurface(Index faceIndex, Surface&lt; REAL &gt; *surface) const</div><div class=\"ttdoc\">Initialize a Surface for vertex data.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00713_source.html#l00482\">surfaceFactory.h:482</a></div></div>\n-<div class=\"ttc\" id=\"aa00941_html_adee257f933b8440f3e1b4760c506f15f\"><div class=\"ttname\"><a href=\"a00941.html#adee257f933b8440f3e1b4760c506f15f\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::InitVaryingSurface</a></div><div class=\"ttdeci\">bool InitVaryingSurface(Index faceIndex, Surface&lt; REAL &gt; *surface) const</div><div class=\"ttdoc\">Initialize a Surface for varying data.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00713_source.html#l00488\">surfaceFactory.h:488</a></div></div>\n-<div class=\"ttc\" id=\"aa00941_html_ae54ee5a9e2bcb2bfdf395084395a0719\"><div class=\"ttname\"><a href=\"a00941.html#ae54ee5a9e2bcb2bfdf395084395a0719\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::SurfaceFactory</a></div><div class=\"ttdeci\">SurfaceFactory(Sdc::SchemeType schemeType, Sdc::Options const &amp;schemeOptions, Options const &amp;limitOptions)</div><div class=\"ttdoc\">Constructor to be used by subclasses.</div></div>\n-<div class=\"ttc\" id=\"aa00945_html\"><div class=\"ttname\"><a href=\"a00945.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::Options</a></div><div class=\"ttdoc\">Simple set of options assigned to instances of SurfaceFactory.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00713_source.html#l00116\">surfaceFactory.h:116</a></div></div>\n-<div class=\"ttc\" id=\"aa00945_html_a06af1ca1d903fe5110c962bec75acec7\"><div class=\"ttname\"><a href=\"a00945.html#a06af1ca1d903fe5110c962bec75acec7\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::Options::SetExternalCache</a></div><div class=\"ttdeci\">Options &amp; SetExternalCache(SurfaceFactoryCache *c)</div><div class=\"ttdoc\">Assign an external cache to override the internal.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00713_source.html#l00462\">surfaceFactory.h:462</a></div></div>\n-<div class=\"ttc\" id=\"aa00945_html_a14e81c17e41ad591714664008331f41e\"><div class=\"ttname\"><a href=\"a00945.html#a14e81c17e41ad591714664008331f41e\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::Options::EnableCaching</a></div><div class=\"ttdeci\">Options &amp; EnableCaching(bool on)</div><div class=\"ttdoc\">Enable or disable caching (default is true):</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00713_source.html#l00457\">surfaceFactory.h:457</a></div></div>\n-<div class=\"ttc\" id=\"aa00945_html_a1ee6780461b18cc80b5c79b520310079\"><div class=\"ttname\"><a href=\"a00945.html#a1ee6780461b18cc80b5c79b520310079\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::Options::SetApproxLevelSmooth</a></div><div class=\"ttdeci\">Options &amp; SetApproxLevelSmooth(int level)</div><div class=\"ttdoc\">Assign maximum refinement level for smooth features.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00713_source.html#l00467\">surfaceFactory.h:467</a></div></div>\n-<div class=\"ttc\" id=\"aa00945_html_a1ff965cb913fbc4716a5985c3d3c60e3\"><div class=\"ttname\"><a href=\"a00945.html#a1ff965cb913fbc4716a5985c3d3c60e3\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::Options::GetApproxLevelSmooth</a></div><div class=\"ttdeci\">int GetApproxLevelSmooth() const</div><div class=\"ttdoc\">Return maximum refinement level for smooth features.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00713_source.html#l00142\">surfaceFactory.h:142</a></div></div>\n-<div class=\"ttc\" id=\"aa00945_html_a28d39a844c3a37ab61d32ab7c6352f09\"><div class=\"ttname\"><a href=\"a00945.html#a28d39a844c3a37ab61d32ab7c6352f09\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::Options::Options</a></div><div class=\"ttdeci\">Options()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00713_source.html#l00118\">surfaceFactory.h:118</a></div></div>\n-<div class=\"ttc\" id=\"aa00945_html_a2c83835832d46536d097ae6ff32659db\"><div class=\"ttname\"><a href=\"a00945.html#a2c83835832d46536d097ae6ff32659db\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::Options::IsCachingEnabled</a></div><div class=\"ttdeci\">bool IsCachingEnabled() const</div><div class=\"ttdoc\">Return if caching is enable.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00713_source.html#l00130\">surfaceFactory.h:130</a></div></div>\n-<div class=\"ttc\" id=\"aa00945_html_a2db0e8ff5143c3a69bf3772bac7bde78\"><div class=\"ttname\"><a href=\"a00945.html#a2db0e8ff5143c3a69bf3772bac7bde78\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::Options::SetDefaultFVarID</a></div><div class=\"ttdeci\">Options &amp; SetDefaultFVarID(FVarID id)</div><div class=\"ttdoc\">Assign the default face-varying ID (none assigned by default)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00713_source.html#l00452\">surfaceFactory.h:452</a></div></div>\n-<div class=\"ttc\" id=\"aa00945_html_a391dfc1d3e1d75fc0aa496717784a95e\"><div class=\"ttname\"><a href=\"a00945.html#a391dfc1d3e1d75fc0aa496717784a95e\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::Options::SetApproxLevelSharp</a></div><div class=\"ttdeci\">Options &amp; SetApproxLevelSharp(int level)</div><div class=\"ttdoc\">Assign maximum refinement level for sharp features.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00713_source.html#l00472\">surfaceFactory.h:472</a></div></div>\n-<div class=\"ttc\" id=\"aa00945_html_a51ba21f3605015ed597a25303143c0b1\"><div class=\"ttname\"><a href=\"a00945.html#a51ba21f3605015ed597a25303143c0b1\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::Options::GetDefaultFVarID</a></div><div class=\"ttdeci\">FVarID GetDefaultFVarID() const</div><div class=\"ttdoc\">Return the default face-varying ID.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00713_source.html#l00125\">surfaceFactory.h:125</a></div></div>\n-<div class=\"ttc\" id=\"aa00945_html_a595df0016de04902f5954b740c7baa2c\"><div class=\"ttname\"><a href=\"a00945.html#a595df0016de04902f5954b740c7baa2c\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::Options::GetApproxLevelSharp</a></div><div class=\"ttdeci\">int GetApproxLevelSharp() const</div><div class=\"ttdoc\">Return maximum refinement level for sharp features.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00713_source.html#l00147\">surfaceFactory.h:147</a></div></div>\n-<div class=\"ttc\" id=\"aa00945_html_acd0411b6d29a6acae3826da06d86bd5b\"><div class=\"ttname\"><a href=\"a00945.html#acd0411b6d29a6acae3826da06d86bd5b\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::Options::GetExternalCache</a></div><div class=\"ttdeci\">SurfaceFactoryCache * GetExternalCache() const</div><div class=\"ttdoc\">Return any assigned external cache.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00713_source.html#l00135\">surfaceFactory.h:135</a></div></div>\n-<div class=\"ttc\" id=\"aa00949_html\"><div class=\"ttname\"><a href=\"a00949.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryCache</a></div><div class=\"ttdoc\">Container used internally by SurfaceFactory to store reusable information.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00710_source.html#l00059\">surfaceFactoryCache.h:59</a></div></div>\n-<div class=\"ttc\" id=\"aa00957_html\"><div class=\"ttname\"><a href=\"a00957.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryMeshAdapter</a></div><div class=\"ttdoc\">Abstract interface adapting SurfaceFactory to a connected mesh representation.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00707_source.html#l00065\">surfaceFactoryMeshAdapter.h:65</a></div></div>\n-<div class=\"ttc\" id=\"aa00957_html_a4a0e50e01fef3e431767a928c2631cab\"><div class=\"ttname\"><a href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryMeshAdapter::Index</a></div><div class=\"ttdeci\">int Index</div><div class=\"ttdoc\">Integer type representing a mesh index.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00707_source.html#l00068\">surfaceFactoryMeshAdapter.h:68</a></div></div>\n-<div class=\"ttc\" id=\"aa00957_html_af98288d7b5176d7295be622a10c6c64e\"><div class=\"ttname\"><a href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryMeshAdapter::FVarID</a></div><div class=\"ttdeci\">std::intptr_t FVarID</div><div class=\"ttdoc\">Type used to identify and specify face-varying primvars.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00707_source.html#l00080\">surfaceFactoryMeshAdapter.h:80</a></div></div>\n-<div class=\"ttc\" id=\"aa01337_html\"><div class=\"ttname\"><a href=\"a01337.html\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options</a></div><div class=\"ttdoc\">All supported options applying to subdivision scheme.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00734_source.html#l00051\">options.h:51</a></div></div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">namespace </span>Osd {</div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00039\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01309.html\">   39</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01309.html\">CPUMTLVertexBuffer</a> {</div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01309.html#a2d6cb1babaae310f9c4c7fb45e0d33bc\">   41</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01309.html\">CPUMTLVertexBuffer</a>* <a class=\"code hl_function\" href=\"a01309.html#a2d6cb1babaae310f9c4c7fb45e0d33bc\">Create</a>(<span class=\"keywordtype\">int</span> numElements, <span class=\"keywordtype\">int</span> numVertices, <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context);</div>\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span> </div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01309.html#a892b78f6079decdbfa11a14db932c25f\">   43</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01309.html#a892b78f6079decdbfa11a14db932c25f\">UpdateData</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span>* src, <span class=\"keywordtype\">int</span> startVertex, <span class=\"keywordtype\">int</span> numVertices, <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context);</div>\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00045\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01309.html#a77cee40767fd4936f20a8f9d9d9ea625\">   45</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01309.html#a77cee40767fd4936f20a8f9d9d9ea625\">GetNumElements</a>()<span class=\"keyword\"> const</span></div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span><span class=\"keyword\">    </span>{</div>\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span>        <span class=\"keywordflow\">return</span> _numElements;</div>\n+<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00050\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01309.html#aaf4a32b8a414eff77000c584c2015cb7\">   50</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01309.html#aaf4a32b8a414eff77000c584c2015cb7\">GetNumVertices</a>()<span class=\"keyword\"> const</span></div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span><span class=\"keyword\">    </span>{</div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span>        <span class=\"keywordflow\">return</span> _numVertices;</div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span> </div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01309.html#adf7a9df5d3fc4d803bf5f1f374d90274\">   55</a></span>    <span class=\"keywordtype\">float</span>* <a class=\"code hl_function\" href=\"a01309.html#adf7a9df5d3fc4d803bf5f1f374d90274\">BindCpuBuffer</a>();</div>\n+<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01309.html#ab72828297150416f7e6293367f5a1ddf\">   56</a></span>    id&lt;MTLBuffer&gt; <a class=\"code hl_function\" href=\"a01309.html#ab72828297150416f7e6293367f5a1ddf\">BindMTLBuffer</a>(<a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context);</div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00058\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01309.html#a0bdc1fa268a4bd0a0fce92e933532677\">   58</a></span>    id&lt;MTLBuffer&gt; <a class=\"code hl_function\" href=\"a01309.html#a0bdc1fa268a4bd0a0fce92e933532677\">BindVBO</a>(<a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context)</div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span>    {</div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01309.html#ab72828297150416f7e6293367f5a1ddf\">BindMTLBuffer</a>(context);</div>\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span> </div>\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span><span class=\"keyword\">protected</span>:</div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span> </div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01309.html#a1457f342bc3007386104aa3d29277a67\">   65</a></span>    <a class=\"code hl_function\" href=\"a01309.html#a1457f342bc3007386104aa3d29277a67\">CPUMTLVertexBuffer</a>(<span class=\"keywordtype\">int</span> numElements, <span class=\"keywordtype\">int</span> numVertices);</div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span> </div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01309.html#ae765f2922a2e542bd85c1e0c0ae1d169\">   67</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01309.html#ae765f2922a2e542bd85c1e0c0ae1d169\">allocate</a>(<a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context);</div>\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span> </div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span>    <span class=\"keywordtype\">int</span> _numElements;</div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>    <span class=\"keywordtype\">int</span> _numVertices;</div>\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>    id&lt;MTLBuffer&gt; _buffer;</div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span>    <span class=\"keywordtype\">bool</span> _dirty;</div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span> </div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span>} <span class=\"comment\">//end namespace Osd</span></div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span> </div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span>} <span class=\"comment\">//end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>    <span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span> </div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>} <span class=\"comment\">//end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span> </div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// OPENSUBDIV3_OSD_MTL_VERTEX_BUFFER_H</span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa01285_html\"><div class=\"ttname\"><a href=\"a01285.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLContext</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00698_source.html#l00040\">mtlCommon.h:40</a></div></div>\n+<div class=\"ttc\" id=\"aa01309_html\"><div class=\"ttname\"><a href=\"a01309.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CPUMTLVertexBuffer</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00713_source.html#l00039\">mtlVertexBuffer.h:39</a></div></div>\n+<div class=\"ttc\" id=\"aa01309_html_a0bdc1fa268a4bd0a0fce92e933532677\"><div class=\"ttname\"><a href=\"a01309.html#a0bdc1fa268a4bd0a0fce92e933532677\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CPUMTLVertexBuffer::BindVBO</a></div><div class=\"ttdeci\">id&lt; MTLBuffer &gt; BindVBO(MTLContext *context)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00713_source.html#l00058\">mtlVertexBuffer.h:58</a></div></div>\n+<div class=\"ttc\" id=\"aa01309_html_a1457f342bc3007386104aa3d29277a67\"><div class=\"ttname\"><a href=\"a01309.html#a1457f342bc3007386104aa3d29277a67\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CPUMTLVertexBuffer::CPUMTLVertexBuffer</a></div><div class=\"ttdeci\">CPUMTLVertexBuffer(int numElements, int numVertices)</div></div>\n+<div class=\"ttc\" id=\"aa01309_html_a2d6cb1babaae310f9c4c7fb45e0d33bc\"><div class=\"ttname\"><a href=\"a01309.html#a2d6cb1babaae310f9c4c7fb45e0d33bc\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CPUMTLVertexBuffer::Create</a></div><div class=\"ttdeci\">static CPUMTLVertexBuffer * Create(int numElements, int numVertices, MTLContext *context)</div></div>\n+<div class=\"ttc\" id=\"aa01309_html_a77cee40767fd4936f20a8f9d9d9ea625\"><div class=\"ttname\"><a href=\"a01309.html#a77cee40767fd4936f20a8f9d9d9ea625\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CPUMTLVertexBuffer::GetNumElements</a></div><div class=\"ttdeci\">int GetNumElements() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00713_source.html#l00045\">mtlVertexBuffer.h:45</a></div></div>\n+<div class=\"ttc\" id=\"aa01309_html_a892b78f6079decdbfa11a14db932c25f\"><div class=\"ttname\"><a href=\"a01309.html#a892b78f6079decdbfa11a14db932c25f\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CPUMTLVertexBuffer::UpdateData</a></div><div class=\"ttdeci\">void UpdateData(const float *src, int startVertex, int numVertices, MTLContext *context)</div></div>\n+<div class=\"ttc\" id=\"aa01309_html_aaf4a32b8a414eff77000c584c2015cb7\"><div class=\"ttname\"><a href=\"a01309.html#aaf4a32b8a414eff77000c584c2015cb7\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CPUMTLVertexBuffer::GetNumVertices</a></div><div class=\"ttdeci\">int GetNumVertices() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00713_source.html#l00050\">mtlVertexBuffer.h:50</a></div></div>\n+<div class=\"ttc\" id=\"aa01309_html_ab72828297150416f7e6293367f5a1ddf\"><div class=\"ttname\"><a href=\"a01309.html#ab72828297150416f7e6293367f5a1ddf\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CPUMTLVertexBuffer::BindMTLBuffer</a></div><div class=\"ttdeci\">id&lt; MTLBuffer &gt; BindMTLBuffer(MTLContext *context)</div></div>\n+<div class=\"ttc\" id=\"aa01309_html_adf7a9df5d3fc4d803bf5f1f374d90274\"><div class=\"ttname\"><a href=\"a01309.html#adf7a9df5d3fc4d803bf5f1f374d90274\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CPUMTLVertexBuffer::BindCpuBuffer</a></div><div class=\"ttdeci\">float * BindCpuBuffer()</div></div>\n+<div class=\"ttc\" id=\"aa01309_html_ae765f2922a2e542bd85c1e0c0ae1d169\"><div class=\"ttname\"><a href=\"a01309.html#ae765f2922a2e542bd85c1e0c0ae1d169\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CPUMTLVertexBuffer::allocate</a></div><div class=\"ttdeci\">bool allocate(MTLContext *context)</div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_fa5edef2a780a73fbfb6a11f1af88ceb.html\">bfr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00713.html\">surfaceFactory.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00713.html\">mtlVertexBuffer.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-surfaceFactory.h\n+mtlVertexBuffer.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2021 Pixar\n+2// Copyright 2013 Pixar\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -24,476 +24,101 @@\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n 24\n-25#ifndef OPENSUBDIV3_BFR_SURFACE_FACTORY_H\n-26#define OPENSUBDIV3_BFR_SURFACE_FACTORY_H\n+25#ifndef OPENSUBDIV3_OSD_MTL_VERTEX_BUFFER_H\n+26#define OPENSUBDIV3_OSD_MTL_VERTEX_BUFFER_H\n 27\n 28#include \"../version.h\"\n-29\n-30#include \"../bfr/surface.h\"\n-31#include \"../bfr/surfaceFactoryMeshAdapter.h\"\n-32#include \"../sdc/options.h\"\n-33#include \"../sdc/types.h\"\n-34\n-35#include <cstdint>\n+29#include \"../osd/mtlCommon.h\"\n+30\n+31@protocol MTLDevice;\n+32@protocol MTLBuffer;\n+33\n+34namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+35namespace OPENSUBDIV_VERSION {\n 36\n-37namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-38namespace OPENSUBDIV_VERSION {\n-39\n-40namespace Bfr {\n-41\n-42//\n-43// Forward declarations of public and internal classes used by factories:\n-44//\n-45class SurfaceFactoryCache;\n-46class FaceTopology;\n-47class FaceSurface;\n-48\n-_\b1_\b0_\b3class _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by : public _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br {\n-104public:\n-_\b1_\b1_\b6 class _\bO_\bp_\bt_\bi_\bo_\bn_\bs {\n-117 public:\n-_\b1_\b1_\b8 _\bO_\bp_\bt_\bi_\bo_\bn_\bs() : _dfltFVarID(-1), _externCache(0), _enableCache(true),\n-119 _approxLevelSmooth(2), _approxLevelSharp(6) { }\n-120\n-123 _\bO_\bp_\bt_\bi_\bo_\bn_\bs & _\bS_\be_\bt_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bF_\bV_\ba_\br_\bI_\bD(_\bF_\bV_\ba_\br_\bI_\bD id);\n-_\b1_\b2_\b5 _\bF_\bV_\ba_\br_\bI_\bD _\bG_\be_\bt_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bF_\bV_\ba_\br_\bI_\bD() const { return _dfltFVarID; }\n-126\n-128 _\bO_\bp_\bt_\bi_\bo_\bn_\bs & _\bE_\bn_\ba_\bb_\bl_\be_\bC_\ba_\bc_\bh_\bi_\bn_\bg(bool on);\n-_\b1_\b3_\b0 bool _\bI_\bs_\bC_\ba_\bc_\bh_\bi_\bn_\bg_\bE_\bn_\ba_\bb_\bl_\be_\bd() const { return _enableCache; }\n-131\n-133 _\bO_\bp_\bt_\bi_\bo_\bn_\bs & _\bS_\be_\bt_\bE_\bx_\bt_\be_\br_\bn_\ba_\bl_\bC_\ba_\bc_\bh_\be(_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be * c);\n-_\b1_\b3_\b5 _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be * _\bG_\be_\bt_\bE_\bx_\bt_\be_\br_\bn_\ba_\bl_\bC_\ba_\bc_\bh_\be() const { return _externCache; }\n-136\n-137 // Set refinement levels used to approximate the limit surface\n-138 // for smooth and sharp features (reasonable defaults assigned):\n-140 _\bO_\bp_\bt_\bi_\bo_\bn_\bs & _\bS_\be_\bt_\bA_\bp_\bp_\br_\bo_\bx_\bL_\be_\bv_\be_\bl_\bS_\bm_\bo_\bo_\bt_\bh(int level);\n-_\b1_\b4_\b2 int _\bG_\be_\bt_\bA_\bp_\bp_\br_\bo_\bx_\bL_\be_\bv_\be_\bl_\bS_\bm_\bo_\bo_\bt_\bh() const { return _approxLevelSmooth; }\n-143\n-145 _\bO_\bp_\bt_\bi_\bo_\bn_\bs & _\bS_\be_\bt_\bA_\bp_\bp_\br_\bo_\bx_\bL_\be_\bv_\be_\bl_\bS_\bh_\ba_\br_\bp(int level);\n-_\b1_\b4_\b7 int _\bG_\be_\bt_\bA_\bp_\bp_\br_\bo_\bx_\bL_\be_\bv_\be_\bl_\bS_\bh_\ba_\br_\bp() const { return _approxLevelSharp; }\n-148\n-149 private:\n-150 // Member variables:\n-151 _\bF_\bV_\ba_\br_\bI_\bD _dfltFVarID;\n-152\n-153 _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be * _externCache;\n-154\n-155 unsigned char _enableCache : 1;\n-156 unsigned char _approxLevelSmooth;\n-157 unsigned char _approxLevelSharp;\n-158 };\n-159\n-160public:\n-_\b1_\b6_\b1 _\b~_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by() override;\n-162\n-164\n-168\n-_\b1_\b7_\b0 _\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\bT_\by_\bp_\be _\bG_\be_\bt_\bS_\bc_\bh_\be_\bm_\be_\bT_\by_\bp_\be() const { return _subdivScheme; }\n-171\n-_\b1_\b7_\b3 _\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs _\bG_\be_\bt_\bS_\bc_\bh_\be_\bm_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs() const { return _subdivOptions; }\n-175\n-176public:\n-178\n-190\n-_\b2_\b0_\b0 bool _\bF_\ba_\bc_\be_\bH_\ba_\bs_\bL_\bi_\bm_\bi_\bt_\bS_\bu_\br_\bf_\ba_\bc_\be(_\bI_\bn_\bd_\be_\bx faceIndex) const;\n-201\n-_\b2_\b0_\b8 _\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn _\bG_\be_\bt_\bF_\ba_\bc_\be_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn(_\bI_\bn_\bd_\be_\bx faceIndex) const;\n-210\n-211public:\n-213\n-233\n-241 template <typename REAL>\n-242 bool _\bI_\bn_\bi_\bt_\bV_\be_\br_\bt_\be_\bx_\bS_\bu_\br_\bf_\ba_\bc_\be(_\bI_\bn_\bd_\be_\bx faceIndex, _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b> * surface) const;\n-243\n-251 template <typename REAL>\n-252 bool _\bI_\bn_\bi_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bu_\br_\bf_\ba_\bc_\be(_\bI_\bn_\bd_\be_\bx faceIndex, _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b> * surface) const;\n-253\n-266 template <typename REAL>\n-267 bool _\bI_\bn_\bi_\bt_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bu_\br_\bf_\ba_\bc_\be(_\bI_\bn_\bd_\be_\bx faceIndex, _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b> * surface)\n-const;\n-268\n-278 template <typename REAL>\n-279 bool _\bI_\bn_\bi_\bt_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bu_\br_\bf_\ba_\bc_\be(_\bI_\bn_\bd_\be_\bx faceIndex, _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b> * surface,\n-280 _\bF_\bV_\ba_\br_\bI_\bD fvarID) const;\n-281\n-307 template <typename REAL>\n-308 bool _\bI_\bn_\bi_\bt_\bS_\bu_\br_\bf_\ba_\bc_\be_\bs(_\bI_\bn_\bd_\be_\bx faceIndex, _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b> * vtxSurface,\n-309 _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b> * fvarSurfaces,\n-310 _\bF_\bV_\ba_\br_\bI_\bD const fvarIDs[] = 0,\n-311 int fvarCount = 0,\n-312 _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b> * varSurface = 0) const;\n-314\n-316\n-319 //\n-320 // WIP - considering removing these since non-essential\n-321 //\n-322\n-324 template <typename REAL=float>\n-325 _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b> * _\bC_\br_\be_\ba_\bt_\be_\bV_\be_\br_\bt_\be_\bx_\bS_\bu_\br_\bf_\ba_\bc_\be(_\bI_\bn_\bd_\be_\bx faceIndex) const;\n-326\n-328 template <typename REAL=float>\n-329 _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b> * _\bC_\br_\be_\ba_\bt_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bu_\br_\bf_\ba_\bc_\be(_\bI_\bn_\bd_\be_\bx faceIndex) const;\n-330\n-332 template <typename REAL=float>\n-333 _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b> * _\bC_\br_\be_\ba_\bt_\be_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bu_\br_\bf_\ba_\bc_\be(_\bI_\bn_\bd_\be_\bx faceIndex) const;\n-334\n-336 template <typename REAL=float>\n-337 _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b> * _\bC_\br_\be_\ba_\bt_\be_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bu_\br_\bf_\ba_\bc_\be(_\bI_\bn_\bd_\be_\bx faceIndex, _\bF_\bV_\ba_\br_\bI_\bD id) const;\n-339\n-340protected:\n-342\n-346\n-_\b3_\b5_\b8 _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by(_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\bT_\by_\bp_\be schemeType,\n-359 _\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs const & schemeOptions,\n-360 _\bO_\bp_\bt_\bi_\bo_\bn_\bs const & limitOptions);\n-361\n-_\b3_\b6_\b3 void _\bs_\be_\bt_\bI_\bn_\bt_\be_\br_\bn_\ba_\bl_\bC_\ba_\bc_\bh_\be(_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be * cache);\n-364\n-_\b3_\b6_\b5 _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by(_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by const &) = delete;\n-_\b3_\b6_\b6 _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by & _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by const &) = delete;\n-368\n-369private:\n-370 // Supporting internal methods:\n-371 void setSubdivisionOptions(_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\bT_\by_\bp_\be, _\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs const & options);\n-372 void setFactoryOptions(_\bO_\bp_\bt_\bi_\bo_\bn_\bs const & factoryOptions);\n-373\n-374 bool faceHasLimitSimple(_\bI_\bn_\bd_\be_\bx faceIndex, int faceSize) const;\n-375\n-376 bool faceHasLimitNeighborhood(_\bI_\bn_\bd_\be_\bx faceIndex) const;\n-377 bool faceHasLimitNeighborhood(FaceTopology const & faceTopology) const;\n-378\n-379 class SurfaceSet;\n-380\n-381 bool populateAllSurfaces( _\bI_\bn_\bd_\be_\bx faceIndex, SurfaceSet * sSetPtr) const;\n-382 bool populateLinearSurfaces( _\bI_\bn_\bd_\be_\bx faceIndex, SurfaceSet * sSetPtr) const;\n-383 bool populateNonLinearSurfaces(_\bI_\bn_\bd_\be_\bx faceIndex, SurfaceSet * sSetPtr)\n-const;\n-384\n-385 bool initSurfaces(_\bI_\bn_\bd_\be_\bx faceIndex, internal::SurfaceData * vtxSurface,\n-386 internal::SurfaceData * varSurface,\n-387 internal::SurfaceData * fvarSurfaces,\n-388 int fvarCount,\n-389 _\bF_\bV_\ba_\br_\bI_\bD const fvarIDs[]) const;\n-390\n-391 // Methods to assemble topology and corresponding indices for entire face:\n-392 bool isFaceNeighborhoodRegular(_\bI_\bn_\bd_\be_\bx faceIndex,\n-393 _\bF_\bV_\ba_\br_\bI_\bD const * fvarPtrOrVtx,\n-394 _\bI_\bn_\bd_\be_\bx indices[]) const;\n-395\n-396 bool initFaceNeighborhoodTopology(_\bI_\bn_\bd_\be_\bx faceIndex,\n-397 FaceTopology * topology) const;\n-398\n-399 bool gatherFaceNeighborhoodTopology(_\bI_\bn_\bd_\be_\bx faceIndex,\n-400 FaceTopology * topology) const;\n-401\n-402 int gatherFaceNeighborhoodIndices(_\bI_\bn_\bd_\be_\bx faceIndex,\n-403 FaceTopology const & topology,\n-404 _\bF_\bV_\ba_\br_\bI_\bD const * fvarPtrOrVtx,\n-405 _\bI_\bn_\bd_\be_\bx indices[]) const;\n-406\n-407 // Methods to assemble Surfaces for the different categories of patch:\n-408 typedef internal::SurfaceData SurfaceType;\n-409\n-410 void assignLinearSurface(SurfaceType * surfacePtr,\n-411 _\bI_\bn_\bd_\be_\bx faceIndex,\n-412 _\bF_\bV_\ba_\br_\bI_\bD const * fvarPtrOrVtx) const;\n-413\n-414 void assignRegularSurface(SurfaceType * surfacePtr,\n-415 _\bI_\bn_\bd_\be_\bx const surfacePatchPoints[]) const;\n-416\n-417 void assignRegularSurface(SurfaceType * surfacePtr,\n-418 FaceSurface const & surfaceDescription) const;\n-419\n-420 void assignIrregularSurface(SurfaceType * surfacePtr,\n-421 FaceSurface const & surfaceDescription) const;\n-422\n-423 void copyNonLinearSurface(SurfaceType * surfacePtr,\n-424 SurfaceType const & surfaceSource,\n-425 FaceSurface const & surfaceDescription) const;\n-426\n-427private:\n-428 // Members describing options and subdivision properties (very little\n-429 // memory and low initialization cost)\n-430 _\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\bT_\by_\bp_\be _subdivScheme;\n-431 _\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs _subdivOptions;\n-432 _\bO_\bp_\bt_\bi_\bo_\bn_\bs _factoryOptions;\n-433\n-434 // Members related to subdivision topology, options and limit tests:\n-435 unsigned int _linearScheme : 1;\n-436 unsigned int _linearFVarInterp : 1;\n-437\n-438 unsigned int _testNeighborhoodForLimit : 1;\n-439 unsigned int _rejectSmoothBoundariesForLimit : 1;\n-440 unsigned int _rejectIrregularFacesForLimit : 1;\n-441\n-442 int _regFaceSize;\n-443\n-444 // Members related to caching:\n-445 _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be mutable * _topologyCache;\n-446};\n-447\n-448//\n-449// Inline methods for Options:\n-450//\n-451inline _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs &\n-_\b4_\b5_\b2_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bS_\be_\bt_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bF_\bV_\ba_\br_\bI_\bD(_\bF_\bV_\ba_\br_\bI_\bD id) {\n-453 _dfltFVarID = id;\n-454 return *this;\n-455}\n-456inline _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs &\n-_\b4_\b5_\b7_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bE_\bn_\ba_\bb_\bl_\be_\bC_\ba_\bc_\bh_\bi_\bn_\bg(bool on) {\n-458 _enableCache = on;\n-459 return *this;\n-460}\n-461inline _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs &\n-_\b4_\b6_\b2_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bS_\be_\bt_\bE_\bx_\bt_\be_\br_\bn_\ba_\bl_\bC_\ba_\bc_\bh_\be(_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be * c) {\n-463 _externCache = c;\n-464 return *this;\n-465}\n-466inline _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs &\n-_\b4_\b6_\b7_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bS_\be_\bt_\bA_\bp_\bp_\br_\bo_\bx_\bL_\be_\bv_\be_\bl_\bS_\bm_\bo_\bo_\bt_\bh(int level) {\n-468 _approxLevelSmooth = (unsigned char) level;\n-469 return *this;\n-470}\n-471inline _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs &\n-_\b4_\b7_\b2_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bS_\be_\bt_\bA_\bp_\bp_\br_\bo_\bx_\bL_\be_\bv_\be_\bl_\bS_\bh_\ba_\br_\bp(int level) {\n-473 _approxLevelSharp = (unsigned char) level;\n-474 return *this;\n-475}\n-476\n-477//\n-478// Inline methods to initializes Surfaces:\n-479//\n-480template <typename REAL>\n-481inline bool\n-_\b4_\b8_\b2_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bI_\bn_\bi_\bt_\bV_\be_\br_\bt_\be_\bx_\bS_\bu_\br_\bf_\ba_\bc_\be(_\bI_\bn_\bd_\be_\bx face, _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b> * s) const {\n-483\n-484 return initSurfaces(face, &s->getSurfaceData(), 0, 0, 0, 0);\n-485}\n-486template <typename REAL>\n-487inline bool\n-_\b4_\b8_\b8_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bI_\bn_\bi_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bu_\br_\bf_\ba_\bc_\be(_\bI_\bn_\bd_\be_\bx face, _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b> * s) const {\n-489\n-490 return initSurfaces(face, 0, &s->getSurfaceData(), 0, 0, 0);\n-491}\n-492template <typename REAL>\n-493inline bool\n-_\b4_\b9_\b4_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bI_\bn_\bi_\bt_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bu_\br_\bf_\ba_\bc_\be(_\bI_\bn_\bd_\be_\bx face, _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b> * s,\n-495 _\bF_\bV_\ba_\br_\bI_\bD fvarID) const {\n-496 return initSurfaces(face, 0, 0, &s->getSurfaceData(), 1, &fvarID);\n-497}\n-498template <typename REAL>\n-499inline bool\n-_\b5_\b0_\b0_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bI_\bn_\bi_\bt_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bu_\br_\bf_\ba_\bc_\be(_\bI_\bn_\bd_\be_\bx face, _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b> * s) const\n-{\n-501 _\bF_\bV_\ba_\br_\bI_\bD dfltID = _factoryOptions._\bG_\be_\bt_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bF_\bV_\ba_\br_\bI_\bD();\n-502 return initSurfaces(face, 0, 0, &s->getSurfaceData(), 1, &dfltID);\n-503}\n-504\n-505template <typename REAL>\n-506inline bool\n-_\b5_\b0_\b7_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bI_\bn_\bi_\bt_\bS_\bu_\br_\bf_\ba_\bc_\be_\bs(_\bI_\bn_\bd_\be_\bx faceIndex, _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b> * vtxSurface,\n-508 _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b> * fvarSurfaces, _\bF_\bV_\ba_\br_\bI_\bD const fvarIDs[], int fvarCount,\n-509 _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b> * varSurface) const {\n-510\n-511 bool useDfltFVarID = fvarSurfaces && (fvarIDs == 0) && (fvarCount == 0);\n-512 _\bF_\bV_\ba_\br_\bI_\bD dfltFVarID = useDfltFVarID ? _factoryOptions._\bG_\be_\bt_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bF_\bV_\ba_\br_\bI_\bD() : 0;\n-513\n-514 return initSurfaces(faceIndex,\n-515 vtxSurface ? &vtxSurface->getSurfaceData() : 0,\n-516 varSurface ? &varSurface->getSurfaceData() : 0,\n-517 fvarSurfaces ? &fvarSurfaces->getSurfaceData() : 0,\n-518 fvarCount ? fvarCount : (fvarSurfaces != 0),\n-519 useDfltFVarID ? &dfltFVarID : fvarIDs);\n-520}\n-521\n-522//\n-523// Inline methods to allocate and initialize Surfaces:\n-524//\n-525template <typename REAL>\n-526inline _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b> *\n-_\b5_\b2_\b7_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\br_\be_\ba_\bt_\be_\bV_\be_\br_\bt_\be_\bx_\bS_\bu_\br_\bf_\ba_\bc_\be(_\bI_\bn_\bd_\be_\bx faceIndex) const {\n-528 _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b> * s = new _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b>();\n-529 if (InitVertexSurface<REAL>(faceIndex, s)) return s;\n-530 delete s;\n-531 return 0;\n-532}\n-533template <typename REAL>\n-534inline _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b> *\n-_\b5_\b3_\b5_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\br_\be_\ba_\bt_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bu_\br_\bf_\ba_\bc_\be(_\bI_\bn_\bd_\be_\bx faceIndex) const {\n-536 _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b> * s = new _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b>();\n-537 if (InitVaryingSurface<REAL>(faceIndex, s)) return s;\n-538 delete s;\n-539 return 0;\n-540}\n-541template <typename REAL>\n-542inline _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b> *\n-_\b5_\b4_\b3_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\br_\be_\ba_\bt_\be_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bu_\br_\bf_\ba_\bc_\be(_\bI_\bn_\bd_\be_\bx faceIndex, _\bF_\bV_\ba_\br_\bI_\bD fvarID)\n-const {\n-544 _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b> * s = new _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b>();\n-545 if (InitFaceVaryingSurface<REAL>(faceIndex, s, fvarID)) return s;\n-546 delete s;\n-547 return 0;\n-548}\n-549template <typename REAL>\n-550inline _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b> *\n-_\b5_\b5_\b1_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\br_\be_\ba_\bt_\be_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bu_\br_\bf_\ba_\bc_\be(_\bI_\bn_\bd_\be_\bx face) const {\n-552 _\bF_\bV_\ba_\br_\bI_\bD dfltID = _factoryOptions._\bG_\be_\bt_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bF_\bV_\ba_\br_\bI_\bD();\n-553 return CreateFaceVaryingSurface<REAL>(face, dfltID);\n-554}\n-555\n-556} // end namespace Bfr\n-557\n-558} // end namespace OPENSUBDIV_VERSION\n-559using namespace OPENSUBDIV_VERSION;\n-560\n-561} // end namespace OpenSubdiv\n-562\n-563#endif /* OPENSUBDIV3_BFR_SURFACE_FACTORY_H */\n+37namespace Osd {\n+38\n+_\b3_\b9class _\bC_\bP_\bU_\bM_\bT_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br {\n+40public:\n+_\b4_\b1 static _\bC_\bP_\bU_\bM_\bT_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br* _\bC_\br_\be_\ba_\bt_\be(int numElements, int numVertices,\n+_\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context);\n+42\n+_\b4_\b3 void _\bU_\bp_\bd_\ba_\bt_\be_\bD_\ba_\bt_\ba(const float* src, int startVertex, int numVertices,\n+_\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context);\n+44\n+_\b4_\b5 int _\bG_\be_\bt_\bN_\bu_\bm_\bE_\bl_\be_\bm_\be_\bn_\bt_\bs() const\n+46 {\n+47 return _numElements;\n+48 }\n+49\n+_\b5_\b0 int _\bG_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs() const\n+51 {\n+52 return _numVertices;\n+53 }\n+54\n+_\b5_\b5 float* _\bB_\bi_\bn_\bd_\bC_\bp_\bu_\bB_\bu_\bf_\bf_\be_\br();\n+_\b5_\b6 id<MTLBuffer> _\bB_\bi_\bn_\bd_\bM_\bT_\bL_\bB_\bu_\bf_\bf_\be_\br(_\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context);\n+57\n+_\b5_\b8 id<MTLBuffer> _\bB_\bi_\bn_\bd_\bV_\bB_\bO(_\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context)\n+59 {\n+60 return _\bB_\bi_\bn_\bd_\bM_\bT_\bL_\bB_\bu_\bf_\bf_\be_\br(context);\n+61 }\n+62\n+63protected:\n+64\n+_\b6_\b5 _\bC_\bP_\bU_\bM_\bT_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br(int numElements, int numVertices);\n+66\n+_\b6_\b7 bool _\ba_\bl_\bl_\bo_\bc_\ba_\bt_\be(_\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context);\n+68\n+69private:\n+70 int _numElements;\n+71 int _numVertices;\n+72 id<MTLBuffer> _buffer;\n+73 bool _dirty;\n+74};\n+75\n+76} //end namespace Osd\n+77\n+78} //end namespace OPENSUBDIV_VERSION\n+79 using namespace OPENSUBDIV_VERSION;\n+80\n+81} //end namespace OpenSubdiv\n+82\n+83#endif // OPENSUBDIV3_OSD_MTL_VERTEX_BUFFER_H\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\bT_\by_\bp_\be\n-SchemeType\n-Enumerated type for all subdivision schemes supported by OpenSubdiv.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b3_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn\n-Simple class defining the 2D parameterization of a face.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b5_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be\n-Encapsulates the limit surface for a face of a mesh.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\b._\bh_\b:_\b5_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by\n-Base class providing initialization of a Surface for each face of a mesh.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b0_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bs_\be_\bt_\bI_\bn_\bt_\be_\br_\bn_\ba_\bl_\bC_\ba_\bc_\bh_\be\n-void setInternalCache(SurfaceFactoryCache *cache)\n-Subclass to identify an internal cache for use by base class.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\b~_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by\n-~SurfaceFactory() override\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bI_\bn_\bi_\bt_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bu_\br_\bf_\ba_\bc_\be\n-bool InitFaceVaryingSurface(Index faceIndex, Surface< REAL > *surface) const\n-Initialize a Surface for the default face-varying data.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b0_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bG_\be_\bt_\bS_\bc_\bh_\be_\bm_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n-Sdc::Options GetSchemeOptions() const\n-Return the set of subdivision options.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b7_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bG_\be_\bt_\bF_\ba_\bc_\be_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn\n-Parameterization GetFaceParameterization(Index faceIndex) const\n-Return the Parameterization of a face with a limit surface.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by\n-SurfaceFactory(SurfaceFactory const &)=delete\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bF_\ba_\bc_\be_\bH_\ba_\bs_\bL_\bi_\bm_\bi_\bt_\bS_\bu_\br_\bf_\ba_\bc_\be\n-bool FaceHasLimitSurface(Index faceIndex) const\n-Return if a specified face has a limit surface.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n-SurfaceFactory & operator=(SurfaceFactory const &)=delete\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\br_\be_\ba_\bt_\be_\bV_\be_\br_\bt_\be_\bx_\bS_\bu_\br_\bf_\ba_\bc_\be\n-Surface< REAL > * CreateVertexSurface(Index faceIndex) const\n-Construct a Surface for vertex data.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b2_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\br_\be_\ba_\bt_\be_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bu_\br_\bf_\ba_\bc_\be\n-Surface< REAL > * CreateFaceVaryingSurface(Index faceIndex) const\n-Construct a Surface for the default face-varying data.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b5_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bI_\bn_\bi_\bt_\bS_\bu_\br_\bf_\ba_\bc_\be_\bs\n-bool InitSurfaces(Index faceIndex, Surface< REAL > *vtxSurface, Surface< REAL >\n-*fvarSurfaces, FVarID const fvarIDs[]=0, int fvarCount=0, Surface< REAL >\n-*varSurface=0) const\n-Initialize multiple Surfaces at once.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b0_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bG_\be_\bt_\bS_\bc_\bh_\be_\bm_\be_\bT_\by_\bp_\be\n-Sdc::SchemeType GetSchemeType() const\n-Return the subdivision scheme.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b7_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\br_\be_\ba_\bt_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bu_\br_\bf_\ba_\bc_\be\n-Surface< REAL > * CreateVaryingSurface(Index faceIndex) const\n-Construct a Surface for varying data.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b3_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bI_\bn_\bi_\bt_\bV_\be_\br_\bt_\be_\bx_\bS_\bu_\br_\bf_\ba_\bc_\be\n-bool InitVertexSurface(Index faceIndex, Surface< REAL > *surface) const\n-Initialize a Surface for vertex data.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b4_\b8_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bI_\bn_\bi_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bu_\br_\bf_\ba_\bc_\be\n-bool InitVaryingSurface(Index faceIndex, Surface< REAL > *surface) const\n-Initialize a Surface for varying data.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b4_\b8_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by\n-SurfaceFactory(Sdc::SchemeType schemeType, Sdc::Options const &schemeOptions,\n-Options const &limitOptions)\n-Constructor to be used by subclasses.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n-Simple set of options assigned to instances of SurfaceFactory.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b1_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bS_\be_\bt_\bE_\bx_\bt_\be_\br_\bn_\ba_\bl_\bC_\ba_\bc_\bh_\be\n-Options & SetExternalCache(SurfaceFactoryCache *c)\n-Assign an external cache to override the internal.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b4_\b6_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bE_\bn_\ba_\bb_\bl_\be_\bC_\ba_\bc_\bh_\bi_\bn_\bg\n-Options & EnableCaching(bool on)\n-Enable or disable caching (default is true):\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b4_\b5_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bS_\be_\bt_\bA_\bp_\bp_\br_\bo_\bx_\bL_\be_\bv_\be_\bl_\bS_\bm_\bo_\bo_\bt_\bh\n-Options & SetApproxLevelSmooth(int level)\n-Assign maximum refinement level for smooth features.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b4_\b6_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bG_\be_\bt_\bA_\bp_\bp_\br_\bo_\bx_\bL_\be_\bv_\be_\bl_\bS_\bm_\bo_\bo_\bt_\bh\n-int GetApproxLevelSmooth() const\n-Return maximum refinement level for smooth features.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b4_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n-Options()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b1_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bI_\bs_\bC_\ba_\bc_\bh_\bi_\bn_\bg_\bE_\bn_\ba_\bb_\bl_\be_\bd\n-bool IsCachingEnabled() const\n-Return if caching is enable.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b3_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bS_\be_\bt_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bF_\bV_\ba_\br_\bI_\bD\n-Options & SetDefaultFVarID(FVarID id)\n-Assign the default face-varying ID (none assigned by default)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b4_\b5_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bS_\be_\bt_\bA_\bp_\bp_\br_\bo_\bx_\bL_\be_\bv_\be_\bl_\bS_\bh_\ba_\br_\bp\n-Options & SetApproxLevelSharp(int level)\n-Assign maximum refinement level for sharp features.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b4_\b7_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bG_\be_\bt_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bF_\bV_\ba_\br_\bI_\bD\n-FVarID GetDefaultFVarID() const\n-Return the default face-varying ID.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b2_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bG_\be_\bt_\bA_\bp_\bp_\br_\bo_\bx_\bL_\be_\bv_\be_\bl_\bS_\bh_\ba_\br_\bp\n-int GetApproxLevelSharp() const\n-Return maximum refinement level for sharp features.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b4_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bG_\be_\bt_\bE_\bx_\bt_\be_\br_\bn_\ba_\bl_\bC_\ba_\bc_\bh_\be\n-SurfaceFactoryCache * GetExternalCache() const\n-Return any assigned external cache.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b3_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be\n-Container used internally by SurfaceFactory to store reusable information.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be_\b._\bh_\b:_\b5_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br\n-Abstract interface adapting SurfaceFactory to a connected mesh representation.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b._\bh_\b:_\b6_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx\n-int Index\n-Integer type representing a mesh index.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b._\bh_\b:_\b6_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b:_\b:_\bF_\bV_\ba_\br_\bI_\bD\n-std::intptr_t FVarID\n-Type used to identify and specify face-varying primvars.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b._\bh_\b:_\b8_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n-All supported options applying to subdivision scheme.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b5_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bm_\bo_\bn_\b._\bh_\b:_\b4_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bP_\bU_\bM_\bT_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh_\b:_\b3_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bP_\bU_\bM_\bT_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bB_\bi_\bn_\bd_\bV_\bB_\bO\n+id< MTLBuffer > BindVBO(MTLContext *context)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh_\b:_\b5_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bP_\bU_\bM_\bT_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bC_\bP_\bU_\bM_\bT_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+CPUMTLVertexBuffer(int numElements, int numVertices)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bP_\bU_\bM_\bT_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n+static CPUMTLVertexBuffer * Create(int numElements, int numVertices, MTLContext\n+*context)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bP_\bU_\bM_\bT_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bE_\bl_\be_\bm_\be_\bn_\bt_\bs\n+int GetNumElements() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh_\b:_\b4_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bP_\bU_\bM_\bT_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bU_\bp_\bd_\ba_\bt_\be_\bD_\ba_\bt_\ba\n+void UpdateData(const float *src, int startVertex, int numVertices, MTLContext\n+*context)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bP_\bU_\bM_\bT_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n+int GetNumVertices() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh_\b:_\b5_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bP_\bU_\bM_\bT_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bB_\bi_\bn_\bd_\bM_\bT_\bL_\bB_\bu_\bf_\bf_\be_\br\n+id< MTLBuffer > BindMTLBuffer(MTLContext *context)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bP_\bU_\bM_\bT_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bB_\bi_\bn_\bd_\bC_\bp_\bu_\bB_\bu_\bf_\bf_\be_\br\n+float * BindCpuBuffer()\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bP_\bU_\bM_\bT_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\ba_\bl_\bl_\bo_\bc_\ba_\bt_\be\n+bool allocate(MTLContext *context)\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bb_\bf_\br\n-    * _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bm_\bt_\bl_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00716.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00716.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/bfr/refinerSurfaceFactory.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/osd/hlslPatchShaderSource.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -90,47 +90,42 @@\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> &#124;\n <a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">refinerSurfaceFactory.h File Reference</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">hlslPatchShaderSource.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00713_source.html\">../bfr/surfaceFactory.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00710_source.html\">../bfr/surfaceFactoryCache.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00857_source.html\">../far/patchDescriptor.h</a>&quot;</code><br />\n+<code>#include &lt;string&gt;</code><br />\n </div>\n <p><a href=\"a00716_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00925.html\">RefinerSurfaceFactoryBase</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Intermediate subclass of <a class=\"el\" href=\"a00941.html\" title=\"Base class providing initialization of a Surface for each face of a mesh.\">SurfaceFactory</a> with <a class=\"el\" href=\"a01121.html\" title=\"Stores topology data for a specified set of refinement options.\">Far::TopologyRefiner</a> as the mesh.  <a href=\"a00925.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00929.html\">RefinerSurfaceFactory&lt; CACHE_TYPE &gt;</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Template for concrete subclasses of <a class=\"el\" href=\"a00925.html\" title=\"Intermediate subclass of SurfaceFactory with Far::TopologyRefiner as the mesh.\">RefinerSurfaceFactoryBase</a>.  <a href=\"a00929.html#details\">More...</a><br /></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01265.html\">HLSLPatchShaderSource</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Provides shader source which can be used by client code.  <a href=\"a01265.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far</a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00907\" id=\"r_a00907\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00907.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr</a></td></tr>\n+<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_fa5edef2a780a73fbfb6a11f1af88ceb.html\">bfr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00716.html\">refinerSurfaceFactory.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00716.html\">hlslPatchShaderSource.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,31 +1,25 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-refinerSurfaceFactory.h File Reference\n+hlslPatchShaderSource.h File Reference\n #include \"../version.h\"\n-#include \"_\b._\b._\b/_\bb_\bf_\br_\b/_\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh\"\n-#include \"_\b._\b._\b/_\bb_\bf_\br_\b/_\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be_\b._\bh\"\n+#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh\"\n+#include <string>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bR_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bB_\ba_\bs_\be\n-\u00a0       Intermediate subclass of _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by with _\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br as\n-        the mesh. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bR_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bC_\bA_\bC_\bH_\bE_\b__\bT_\bY_\bP_\bE_\b _\b>\n-\u00a0       Template for concrete subclasses of _\bR_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bB_\ba_\bs_\be. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bH_\bL_\bS_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be\n+\u00a0       Provides shader source which can be used by client code. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br\n-\u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bb_\bf_\br\n-    * _\br_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bh_\bl_\bs_\bl_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00716.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00716.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,4 +1,3 @@\n var a00716 = [\n-    [\"RefinerSurfaceFactoryBase\", \"a00925.html\", \"a00925\"],\n-    [\"RefinerSurfaceFactory< CACHE_TYPE >\", \"a00929.html\", \"a00929\"]\n+    [\"HLSLPatchShaderSource\", \"a01265.html\", null]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00716_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00716_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/bfr/refinerSurfaceFactory.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/osd/hlslPatchShaderSource.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">refinerSurfaceFactory.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">hlslPatchShaderSource.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00716.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2021 Pixar</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2015 Pixar</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -119,163 +119,68 @@\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_BFR_REFINER_SURFACE_FACTORY_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_BFR_REFINER_SURFACE_FACTORY_H</span></div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_HLSL_PATCH_SHADER_SOURCE_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_HLSL_PATCH_SHADER_SOURCE_H</span></div>\n <div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n <div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n <div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../bfr/surfaceFactory.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../bfr/surfaceFactoryCache.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span> </div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00036\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00908.html\">   36</a></span><span class=\"keyword\">namespace </span>Far {</div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span>    <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a>;</div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span> </div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"keyword\">namespace </span>Bfr {</div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00058\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00925.html\">   58</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a00925.html\">RefinerSurfaceFactoryBase</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"a00941.html\">SurfaceFactory</a> {</div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../far/patchDescriptor.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &lt;string&gt;</span></div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">namespace </span>Osd {</div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00040\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01265.html\">   40</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01265.html\">HLSLPatchShaderSource</a> {</div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01265.html#ad41c6e1dc4a5cd6ee4f33fc5a8e15d1d\">   45</a></span>    <span class=\"keyword\">static</span> std::string <a class=\"code hl_function\" href=\"a01265.html#ad41c6e1dc4a5cd6ee4f33fc5a8e15d1d\">GetPatchBasisShaderSource</a>();</div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span> </div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01265.html#a230efce26a4754c94dbeedd435fe471b\">   50</a></span>    <span class=\"keyword\">static</span> std::string <a class=\"code hl_function\" href=\"a01265.html#a230efce26a4754c94dbeedd435fe471b\">GetPatchDrawingShaderSource</a>();</div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span> </div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span> </div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01265.html#ad5f427d2655d384980715874209345e7\">   60</a></span>    <span class=\"keyword\">static</span> std::string <a class=\"code hl_function\" href=\"a01265.html#ad5f427d2655d384980715874209345e7\">GetCommonShaderSource</a>();</div>\n <div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span> </div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01265.html#a20cb122b561de15ed3b90d7e4f5176d2\">   62</a></span>    <span class=\"keyword\">static</span> std::string <a class=\"code hl_function\" href=\"a01265.html#a20cb122b561de15ed3b90d7e4f5176d2\">GetVertexShaderSource</a>(<a class=\"code hl_enumeration\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">Far::PatchDescriptor::Type</a> type);</div>\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span> </div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01265.html#a97a09fe0a378798cafdff72e115e373f\">   64</a></span>    <span class=\"keyword\">static</span> std::string <a class=\"code hl_function\" href=\"a01265.html#a97a09fe0a378798cafdff72e115e373f\">GetHullShaderSource</a>(<a class=\"code hl_enumeration\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">Far::PatchDescriptor::Type</a> type);</div>\n <div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span> </div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00925.html#af457c931d6d611e35737454f2c483f84\">   66</a></span>    <a class=\"code hl_function\" href=\"a00925.html#af457c931d6d611e35737454f2c483f84\">RefinerSurfaceFactoryBase</a>(<a class=\"code hl_class\" href=\"a01121.html\">Far::TopologyRefiner</a> <span class=\"keyword\">const</span> &amp; mesh,</div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span>                              <a class=\"code hl_class\" href=\"a00945.html\">Options</a> <span class=\"keyword\">const</span> &amp; options);</div>\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span> </div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00925.html#af1812d7cdae22188afec02034f1219cb\">   69</a></span>    <a class=\"code hl_function\" href=\"a00925.html#af1812d7cdae22188afec02034f1219cb\">~RefinerSurfaceFactoryBase</a>() <span class=\"keyword\">override</span> = <span class=\"keywordflow\">default</span>;</div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span> </div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span> </div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01265.html#a733309309efe67ba5d1acd7d0a9ff6ca\">   66</a></span>    <span class=\"keyword\">static</span> std::string <a class=\"code hl_function\" href=\"a01265.html#a733309309efe67ba5d1acd7d0a9ff6ca\">GetDomainShaderSource</a>(<a class=\"code hl_enumeration\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">Far::PatchDescriptor::Type</a> type);</div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span> </div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span> </div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>}  <span class=\"comment\">// end namespace Osd</span></div>\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span> </div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span>}  <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span> </div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n <div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span> </div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00925.html#ab71a07bb9e45c564b8aabe091482414c\">   79</a></span>    <a class=\"code hl_class\" href=\"a01121.html\">Far::TopologyRefiner</a> <span class=\"keyword\">const</span> &amp; <a class=\"code hl_function\" href=\"a00925.html#ab71a07bb9e45c564b8aabe091482414c\">GetMesh</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _mesh; }</div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span> </div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00925.html#a9920fb01c4b75c94a953a98008a4baba\">   82</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00925.html#a9920fb01c4b75c94a953a98008a4baba\">GetNumFaces</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _numFaces; }</div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span> </div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00925.html#aa9be824a572029f3ec1e0c0d6cfecd77\">   85</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00925.html#aa9be824a572029f3ec1e0c0d6cfecd77\">GetNumFVarChannels</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _numFVarChannels; }</div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span> </div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span><span class=\"keyword\">protected</span>:</div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>    <span class=\"comment\">//  Virtual overrides to satisfy the SurfaceFactoryMeshAdapter interface:</span></div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00957.html#aebdd02cef87f646218eed308629e9aed\">isFaceHole</a>( <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex) <span class=\"keyword\">const override</span>;</div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>    <span class=\"keywordtype\">int</span>  <a class=\"code hl_function\" href=\"a00957.html#a46acc55c125fe8d843fd2b74c582abec\">getFaceSize</a>(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex) <span class=\"keyword\">const override</span>;</div>\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span> </div>\n-<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00957.html#ac8c29cf2fda93d2c3408f80e8371d375\">getFaceVertexIndices</a>(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex,</div>\n-<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>                        <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertexIndices[]) <span class=\"keyword\">const override</span>;</div>\n-<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00957.html#aba5c13d35cdaae43f2a1b4798868747a\">getFaceFVarValueIndices</a>(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex,</div>\n-<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span>                        <a class=\"code hl_typedef\" href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">FVarID</a> fvarID, <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> fvarValueIndices[]) <span class=\"keyword\">const override</span>;</div>\n-<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span> </div>\n-<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00957.html#a6f2eece993bb137b995618881c7f9160\">populateFaceVertexDescriptor</a>(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex, <span class=\"keywordtype\">int</span> faceVertex,</div>\n-<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span>                        <a class=\"code hl_class\" href=\"a00969.html\">VertexDescriptor</a> * vertexDescriptor) <span class=\"keyword\">const override</span>;</div>\n-<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span> </div>\n-<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00957.html#a2bbf77d68fb983954c51bd91cfe35302\">getFaceVertexIncidentFaceVertexIndices</a>(</div>\n-<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span>                        <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex, <span class=\"keywordtype\">int</span> faceVertex,</div>\n-<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span>                        <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertexIndices[]) <span class=\"keyword\">const override</span>;</div>\n-<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00957.html#a269c87ee7505e80e2e4db772ee73a016\">getFaceVertexIncidentFaceFVarValueIndices</a>(</div>\n-<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span>                        <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex, <span class=\"keywordtype\">int</span> faceVertex,</div>\n-<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span>                        <a class=\"code hl_typedef\" href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">FVarID</a> fvarID, <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> fvarValueIndices[]) <span class=\"keyword\">const override</span>;</div>\n-<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span> </div>\n-<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span>    <span class=\"comment\">//  Optional SurfaceFactoryMeshAdapter overrides for regular patches:</span></div>\n-<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00957.html#a72634fd790cc4d1f52801aa5399328b5\">getFaceNeighborhoodVertexIndicesIfRegular</a>(</div>\n-<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span>                        <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex,</div>\n-<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span>                        <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertexIndices[]) <span class=\"keyword\">const override</span>;</div>\n-<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span> </div>\n-<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\">  116</span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00957.html#aa7e32ce7ba896c5ddfe6521ad0022ce2\">getFaceNeighborhoodFVarValueIndicesIfRegular</a>(</div>\n-<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span>                        <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex,</div>\n-<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\">  118</span>                        <a class=\"code hl_typedef\" href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">FVarID</a> fvarID, <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> fvarValueIndices[]) <span class=\"keyword\">const override</span>;</div>\n-<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span> </div>\n-<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\">  121</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span>    <span class=\"comment\">//  Internal supporting methods:</span></div>\n-<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span>    <span class=\"keywordtype\">int</span> getFaceVaryingChannel(<a class=\"code hl_typedef\" href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">FVarID</a> fvarID) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span> </div>\n-<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span>    <span class=\"keywordtype\">int</span> getFaceVertexPointIndices(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex, <span class=\"keywordtype\">int</span> faceVertex,</div>\n-<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span>                                  <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> indices[], <span class=\"keywordtype\">int</span> vtxOrFVarChannel) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span> </div>\n-<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span>    <span class=\"keywordtype\">int</span> getFacePatchPointIndices(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex,</div>\n-<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\">  131</span>                                 <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> indices[], <span class=\"keywordtype\">int</span> vtxOrFVarChannel) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\">  132</span> </div>\n-<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\">  133</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\">  134</span>    <span class=\"comment\">//  Additional members for the subclass:</span></div>\n-<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\">  135</span>    <a class=\"code hl_class\" href=\"a01121.html\">Far::TopologyRefiner</a> <span class=\"keyword\">const</span> &amp; _mesh;</div>\n-<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\">  136</span> </div>\n-<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\">  137</span>    <span class=\"keywordtype\">int</span> _numFaces;</div>\n-<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\">  138</span>    <span class=\"keywordtype\">int</span> _numFVarChannels;</div>\n-<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\">  139</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\">  140</span> </div>\n-<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\">  141</span> </div>\n-<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\">  156</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> CACHE_TYPE = SurfaceFactoryCache&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00157\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00929.html\">  157</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a00929.html\">RefinerSurfaceFactory</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"a00925.html\">RefinerSurfaceFactoryBase</a> {</div>\n-<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\">  158</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"foldopen\" id=\"foldopen00159\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00929.html#af74dafe122d798d4069b675c52f6665a\">  159</a></span>    <a class=\"code hl_function\" href=\"a00929.html#af74dafe122d798d4069b675c52f6665a\">RefinerSurfaceFactory</a>(<a class=\"code hl_class\" href=\"a01121.html\">Far::TopologyRefiner</a> <span class=\"keyword\">const</span> &amp; mesh,</div>\n-<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\">  160</span>                          <a class=\"code hl_class\" href=\"a00945.html\">Options</a> <span class=\"keyword\">const</span> &amp; options = <a class=\"code hl_class\" href=\"a00945.html\">Options</a>()) :</div>\n-<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\">  161</span>            <a class=\"code hl_class\" href=\"a00925.html\">RefinerSurfaceFactoryBase</a>(mesh, options),</div>\n-<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\">  162</span>            _localCache() {</div>\n-<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\">  163</span> </div>\n-<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\">  164</span>        <a class=\"code hl_function\" href=\"a00941.html#a043a7fc91f7bc29a4cbba51d9cb00ecb\">SurfaceFactory::setInternalCache</a>(&amp;_localCache);</div>\n-<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\">  165</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00929.html#aaeb5db4a748ed56e042ab8c003faa8e9\">  166</a></span>    <a class=\"code hl_function\" href=\"a00929.html#aaeb5db4a748ed56e042ab8c003faa8e9\">~RefinerSurfaceFactory</a>() <span class=\"keyword\">override</span> = <span class=\"keywordflow\">default</span>;</div>\n-<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\">  167</span> </div>\n-<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\">  168</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\">  169</span>    CACHE_TYPE _localCache;</div>\n-<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\">  170</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span> </div>\n-<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\">  172</span>} <span class=\"comment\">// end namespace Bfr</span></div>\n-<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\">  173</span> </div>\n-<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\">  174</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\">  175</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\">  176</span> </div>\n-<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\">  178</span> </div>\n-<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\">  179</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_BFR_REFINER_SURFACE_FACTORY_H */</span><span class=\"preprocessor\"></span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa00925_html\"><div class=\"ttname\"><a href=\"a00925.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::RefinerSurfaceFactoryBase</a></div><div class=\"ttdoc\">Intermediate subclass of SurfaceFactory with Far::TopologyRefiner as the mesh.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00716_source.html#l00058\">refinerSurfaceFactory.h:58</a></div></div>\n-<div class=\"ttc\" id=\"aa00925_html_a9920fb01c4b75c94a953a98008a4baba\"><div class=\"ttname\"><a href=\"a00925.html#a9920fb01c4b75c94a953a98008a4baba\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::RefinerSurfaceFactoryBase::GetNumFaces</a></div><div class=\"ttdeci\">int GetNumFaces() const</div><div class=\"ttdoc\">Return the number of faces.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00716_source.html#l00082\">refinerSurfaceFactory.h:82</a></div></div>\n-<div class=\"ttc\" id=\"aa00925_html_aa9be824a572029f3ec1e0c0d6cfecd77\"><div class=\"ttname\"><a href=\"a00925.html#aa9be824a572029f3ec1e0c0d6cfecd77\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::RefinerSurfaceFactoryBase::GetNumFVarChannels</a></div><div class=\"ttdeci\">int GetNumFVarChannels() const</div><div class=\"ttdoc\">Return the number of face-varying channels.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00716_source.html#l00085\">refinerSurfaceFactory.h:85</a></div></div>\n-<div class=\"ttc\" id=\"aa00925_html_ab71a07bb9e45c564b8aabe091482414c\"><div class=\"ttname\"><a href=\"a00925.html#ab71a07bb9e45c564b8aabe091482414c\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::RefinerSurfaceFactoryBase::GetMesh</a></div><div class=\"ttdeci\">Far::TopologyRefiner const &amp; GetMesh() const</div><div class=\"ttdoc\">Return the instance of the mesh.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00716_source.html#l00079\">refinerSurfaceFactory.h:79</a></div></div>\n-<div class=\"ttc\" id=\"aa00925_html_af1812d7cdae22188afec02034f1219cb\"><div class=\"ttname\"><a href=\"a00925.html#af1812d7cdae22188afec02034f1219cb\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::RefinerSurfaceFactoryBase::~RefinerSurfaceFactoryBase</a></div><div class=\"ttdeci\">~RefinerSurfaceFactoryBase() override=default</div></div>\n-<div class=\"ttc\" id=\"aa00925_html_af457c931d6d611e35737454f2c483f84\"><div class=\"ttname\"><a href=\"a00925.html#af457c931d6d611e35737454f2c483f84\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::RefinerSurfaceFactoryBase::RefinerSurfaceFactoryBase</a></div><div class=\"ttdeci\">RefinerSurfaceFactoryBase(Far::TopologyRefiner const &amp;mesh, Options const &amp;options)</div></div>\n-<div class=\"ttc\" id=\"aa00929_html\"><div class=\"ttname\"><a href=\"a00929.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::RefinerSurfaceFactory</a></div><div class=\"ttdoc\">Template for concrete subclasses of RefinerSurfaceFactoryBase.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00716_source.html#l00157\">refinerSurfaceFactory.h:157</a></div></div>\n-<div class=\"ttc\" id=\"aa00929_html_aaeb5db4a748ed56e042ab8c003faa8e9\"><div class=\"ttname\"><a href=\"a00929.html#aaeb5db4a748ed56e042ab8c003faa8e9\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::RefinerSurfaceFactory::~RefinerSurfaceFactory</a></div><div class=\"ttdeci\">~RefinerSurfaceFactory() override=default</div></div>\n-<div class=\"ttc\" id=\"aa00929_html_af74dafe122d798d4069b675c52f6665a\"><div class=\"ttname\"><a href=\"a00929.html#af74dafe122d798d4069b675c52f6665a\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::RefinerSurfaceFactory::RefinerSurfaceFactory</a></div><div class=\"ttdeci\">RefinerSurfaceFactory(Far::TopologyRefiner const &amp;mesh, Options const &amp;options=Options())</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00716_source.html#l00159\">refinerSurfaceFactory.h:159</a></div></div>\n-<div class=\"ttc\" id=\"aa00941_html\"><div class=\"ttname\"><a href=\"a00941.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory</a></div><div class=\"ttdoc\">Base class providing initialization of a Surface for each face of a mesh.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00713_source.html#l00103\">surfaceFactory.h:103</a></div></div>\n-<div class=\"ttc\" id=\"aa00941_html_a043a7fc91f7bc29a4cbba51d9cb00ecb\"><div class=\"ttname\"><a href=\"a00941.html#a043a7fc91f7bc29a4cbba51d9cb00ecb\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::setInternalCache</a></div><div class=\"ttdeci\">void setInternalCache(SurfaceFactoryCache *cache)</div><div class=\"ttdoc\">Subclass to identify an internal cache for use by base class.</div></div>\n-<div class=\"ttc\" id=\"aa00945_html\"><div class=\"ttname\"><a href=\"a00945.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::Options</a></div><div class=\"ttdoc\">Simple set of options assigned to instances of SurfaceFactory.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00713_source.html#l00116\">surfaceFactory.h:116</a></div></div>\n-<div class=\"ttc\" id=\"aa00957_html_a269c87ee7505e80e2e4db772ee73a016\"><div class=\"ttname\"><a href=\"a00957.html#a269c87ee7505e80e2e4db772ee73a016\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryMeshAdapter::getFaceVertexIncidentFaceFVarValueIndices</a></div><div class=\"ttdeci\">virtual int getFaceVertexIncidentFaceFVarValueIndices(Index faceIndex, int faceVertex, FVarID fvarID, Index fvarValueIndices[]) const =0</div><div class=\"ttdoc\">Gather face-varying indices of incident faces around a face-vertex.</div></div>\n-<div class=\"ttc\" id=\"aa00957_html_a2bbf77d68fb983954c51bd91cfe35302\"><div class=\"ttname\"><a href=\"a00957.html#a2bbf77d68fb983954c51bd91cfe35302\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryMeshAdapter::getFaceVertexIncidentFaceVertexIndices</a></div><div class=\"ttdeci\">virtual int getFaceVertexIncidentFaceVertexIndices(Index faceIndex, int faceVertex, Index vertexIndices[]) const =0</div><div class=\"ttdoc\">Gather vertex indices of incident faces around a face-vertex.</div></div>\n-<div class=\"ttc\" id=\"aa00957_html_a46acc55c125fe8d843fd2b74c582abec\"><div class=\"ttname\"><a href=\"a00957.html#a46acc55c125fe8d843fd2b74c582abec\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryMeshAdapter::getFaceSize</a></div><div class=\"ttdeci\">virtual int getFaceSize(Index faceIndex) const =0</div><div class=\"ttdoc\">Returns the size of a face (number of vertices)</div></div>\n-<div class=\"ttc\" id=\"aa00957_html_a4a0e50e01fef3e431767a928c2631cab\"><div class=\"ttname\"><a href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryMeshAdapter::Index</a></div><div class=\"ttdeci\">int Index</div><div class=\"ttdoc\">Integer type representing a mesh index.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00707_source.html#l00068\">surfaceFactoryMeshAdapter.h:68</a></div></div>\n-<div class=\"ttc\" id=\"aa00957_html_a6f2eece993bb137b995618881c7f9160\"><div class=\"ttname\"><a href=\"a00957.html#a6f2eece993bb137b995618881c7f9160\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryMeshAdapter::populateFaceVertexDescriptor</a></div><div class=\"ttdeci\">virtual int populateFaceVertexDescriptor(Index faceIndex, int faceVertex, VertexDescriptor *vertexDescriptor) const =0</div><div class=\"ttdoc\">Describe the topology of incident faces around a face-vertex.</div></div>\n-<div class=\"ttc\" id=\"aa00957_html_a72634fd790cc4d1f52801aa5399328b5\"><div class=\"ttname\"><a href=\"a00957.html#a72634fd790cc4d1f52801aa5399328b5\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryMeshAdapter::getFaceNeighborhoodVertexIndicesIfRegular</a></div><div class=\"ttdeci\">virtual bool getFaceNeighborhoodVertexIndicesIfRegular(Index faceIndex, Index vertexIndices[]) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00707_source.html#l00218\">surfaceFactoryMeshAdapter.h:218</a></div></div>\n-<div class=\"ttc\" id=\"aa00957_html_aa7e32ce7ba896c5ddfe6521ad0022ce2\"><div class=\"ttname\"><a href=\"a00957.html#aa7e32ce7ba896c5ddfe6521ad0022ce2\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryMeshAdapter::getFaceNeighborhoodFVarValueIndicesIfRegular</a></div><div class=\"ttdeci\">virtual bool getFaceNeighborhoodFVarValueIndicesIfRegular(Index faceIndex, FVarID fvarID, Index fvarValueIndices[]) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00707_source.html#l00224\">surfaceFactoryMeshAdapter.h:224</a></div></div>\n-<div class=\"ttc\" id=\"aa00957_html_aba5c13d35cdaae43f2a1b4798868747a\"><div class=\"ttname\"><a href=\"a00957.html#aba5c13d35cdaae43f2a1b4798868747a\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryMeshAdapter::getFaceFVarValueIndices</a></div><div class=\"ttdeci\">virtual int getFaceFVarValueIndices(Index faceIndex, FVarID fvarID, Index fvarValueIndices[]) const =0</div><div class=\"ttdoc\">Gather the face-varying indices of the face's vertices.</div></div>\n-<div class=\"ttc\" id=\"aa00957_html_ac8c29cf2fda93d2c3408f80e8371d375\"><div class=\"ttname\"><a href=\"a00957.html#ac8c29cf2fda93d2c3408f80e8371d375\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryMeshAdapter::getFaceVertexIndices</a></div><div class=\"ttdeci\">virtual int getFaceVertexIndices(Index faceIndex, Index vertexIndices[]) const =0</div><div class=\"ttdoc\">Gather the indices of the face's vertices.</div></div>\n-<div class=\"ttc\" id=\"aa00957_html_aebdd02cef87f646218eed308629e9aed\"><div class=\"ttname\"><a href=\"a00957.html#aebdd02cef87f646218eed308629e9aed\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryMeshAdapter::isFaceHole</a></div><div class=\"ttdeci\">virtual bool isFaceHole(Index faceIndex) const =0</div><div class=\"ttdoc\">Returns if a face is a hole.</div></div>\n-<div class=\"ttc\" id=\"aa00957_html_af98288d7b5176d7295be622a10c6c64e\"><div class=\"ttname\"><a href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryMeshAdapter::FVarID</a></div><div class=\"ttdeci\">std::intptr_t FVarID</div><div class=\"ttdoc\">Type used to identify and specify face-varying primvars.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00707_source.html#l00080\">surfaceFactoryMeshAdapter.h:80</a></div></div>\n-<div class=\"ttc\" id=\"aa00969_html\"><div class=\"ttname\"><a href=\"a00969.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::VertexDescriptor</a></div><div class=\"ttdoc\">Simple class used by subclasses of SurfaceFactory to describe a vertex.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00725_source.html#l00131\">vertexDescriptor.h:131</a></div></div>\n-<div class=\"ttc\" id=\"aa01121_html\"><div class=\"ttname\"><a href=\"a01121.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner</a></div><div class=\"ttdoc\">Stores topology data for a specified set of refinement options.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00051\">topologyRefiner.h:51</a></div></div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_HLSL_PATCH_SHADER_SOURCE_H</span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa00973_html_a1d1cfd8ffb84e947f82999c682b666a7\"><div class=\"ttname\"><a href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::Type</a></div><div class=\"ttdeci\">Type</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00857_source.html#l00048\">patchDescriptor.h:48</a></div></div>\n+<div class=\"ttc\" id=\"aa01265_html\"><div class=\"ttname\"><a href=\"a01265.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::HLSLPatchShaderSource</a></div><div class=\"ttdoc\">Provides shader source which can be used by client code.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00716_source.html#l00040\">hlslPatchShaderSource.h:40</a></div></div>\n+<div class=\"ttc\" id=\"aa01265_html_a20cb122b561de15ed3b90d7e4f5176d2\"><div class=\"ttname\"><a href=\"a01265.html#a20cb122b561de15ed3b90d7e4f5176d2\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::HLSLPatchShaderSource::GetVertexShaderSource</a></div><div class=\"ttdeci\">static std::string GetVertexShaderSource(Far::PatchDescriptor::Type type)</div></div>\n+<div class=\"ttc\" id=\"aa01265_html_a230efce26a4754c94dbeedd435fe471b\"><div class=\"ttname\"><a href=\"a01265.html#a230efce26a4754c94dbeedd435fe471b\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::HLSLPatchShaderSource::GetPatchDrawingShaderSource</a></div><div class=\"ttdeci\">static std::string GetPatchDrawingShaderSource()</div><div class=\"ttdoc\">Returns shader source which can be used while drawing piecewise parametric patches resulting from sub...</div></div>\n+<div class=\"ttc\" id=\"aa01265_html_a733309309efe67ba5d1acd7d0a9ff6ca\"><div class=\"ttname\"><a href=\"a01265.html#a733309309efe67ba5d1acd7d0a9ff6ca\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::HLSLPatchShaderSource::GetDomainShaderSource</a></div><div class=\"ttdeci\">static std::string GetDomainShaderSource(Far::PatchDescriptor::Type type)</div></div>\n+<div class=\"ttc\" id=\"aa01265_html_a97a09fe0a378798cafdff72e115e373f\"><div class=\"ttname\"><a href=\"a01265.html#a97a09fe0a378798cafdff72e115e373f\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::HLSLPatchShaderSource::GetHullShaderSource</a></div><div class=\"ttdeci\">static std::string GetHullShaderSource(Far::PatchDescriptor::Type type)</div></div>\n+<div class=\"ttc\" id=\"aa01265_html_ad41c6e1dc4a5cd6ee4f33fc5a8e15d1d\"><div class=\"ttname\"><a href=\"a01265.html#ad41c6e1dc4a5cd6ee4f33fc5a8e15d1d\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::HLSLPatchShaderSource::GetPatchBasisShaderSource</a></div><div class=\"ttdeci\">static std::string GetPatchBasisShaderSource()</div><div class=\"ttdoc\">Returns shader source which can be used to evaluate position and first and second derivatives on piec...</div></div>\n+<div class=\"ttc\" id=\"aa01265_html_ad5f427d2655d384980715874209345e7\"><div class=\"ttname\"><a href=\"a01265.html#ad5f427d2655d384980715874209345e7\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::HLSLPatchShaderSource::GetCommonShaderSource</a></div><div class=\"ttdeci\">static std::string GetCommonShaderSource()</div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_fa5edef2a780a73fbfb6a11f1af88ceb.html\">bfr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00716.html\">refinerSurfaceFactory.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00716.html\">hlslPatchShaderSource.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-refinerSurfaceFactory.h\n+hlslPatchShaderSource.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2021 Pixar\n+2// Copyright 2015 Pixar\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -24,222 +24,79 @@\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n 24\n-25#ifndef OPENSUBDIV3_BFR_REFINER_SURFACE_FACTORY_H\n-26#define OPENSUBDIV3_BFR_REFINER_SURFACE_FACTORY_H\n+25#ifndef OPENSUBDIV3_OSD_HLSL_PATCH_SHADER_SOURCE_H\n+26#define OPENSUBDIV3_OSD_HLSL_PATCH_SHADER_SOURCE_H\n 27\n 28#include \"../version.h\"\n 29\n-30#include \"../bfr/surfaceFactory.h\"\n-31#include \"../bfr/surfaceFactoryCache.h\"\n-32\n-33namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-34namespace OPENSUBDIV_VERSION {\n-35\n-_\b3_\b6namespace Far {\n-37 class _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br;\n-38}\n-39\n-40namespace Bfr {\n-41\n-_\b5_\b8class _\bR_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bB_\ba_\bs_\be : public _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by {\n-59public:\n+30#include \"../far/patchDescriptor.h\"\n+31\n+32#include <string>\n+33\n+34namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+35namespace OPENSUBDIV_VERSION {\n+36\n+37namespace Osd {\n+38\n+_\b4_\b0class _\bH_\bL_\bS_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be {\n+41public:\n+_\b4_\b5 static std::string _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bB_\ba_\bs_\bi_\bs_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be();\n+46\n+_\b5_\b0 static std::string _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bD_\br_\ba_\bw_\bi_\bn_\bg_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be();\n+51\n+59\n+_\b6_\b0 static std::string _\bG_\be_\bt_\bC_\bo_\bm_\bm_\bo_\bn_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be();\n 61\n+_\b6_\b2 static std::string _\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be(_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bT_\by_\bp_\be type);\n+63\n+_\b6_\b4 static std::string _\bG_\be_\bt_\bH_\bu_\bl_\bl_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be(_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bT_\by_\bp_\be type);\n 65\n-_\b6_\b6 _\bR_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bB_\ba_\bs_\be(_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const & mesh,\n-67 _\bO_\bp_\bt_\bi_\bo_\bn_\bs const & options);\n-68\n-_\b6_\b9 _\b~_\bR_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bB_\ba_\bs_\be() override = default;\n-71\n-73\n+_\b6_\b6 static std::string _\bG_\be_\bt_\bD_\bo_\bm_\ba_\bi_\bn_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be(_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bT_\by_\bp_\be type);\n+67\n+69};\n+70\n+71} // end namespace Osd\n+72\n+73} // end namespace OPENSUBDIV_VERSION\n+74using namespace OPENSUBDIV_VERSION;\n+75\n+76} // end namespace OpenSubdiv\n 77\n-_\b7_\b9 _\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const & _\bG_\be_\bt_\bM_\be_\bs_\bh() const { return _mesh; }\n-80\n-_\b8_\b2 int _\bG_\be_\bt_\bN_\bu_\bm_\bF_\ba_\bc_\be_\bs() const { return _numFaces; }\n-83\n-_\b8_\b5 int _\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs() const { return _numFVarChannels; }\n-87\n-88protected:\n-90 //\n-91 // Virtual overrides to satisfy the SurfaceFactoryMeshAdapter interface:\n-92 //\n-93 bool _\bi_\bs_\bF_\ba_\bc_\be_\bH_\bo_\bl_\be( _\bI_\bn_\bd_\be_\bx faceIndex) const override;\n-94 int _\bg_\be_\bt_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be(_\bI_\bn_\bd_\be_\bx faceIndex) const override;\n-95\n-96 int _\bg_\be_\bt_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\be_\bx_\bI_\bn_\bd_\bi_\bc_\be_\bs(_\bI_\bn_\bd_\be_\bx faceIndex,\n-97 _\bI_\bn_\bd_\be_\bx vertexIndices[]) const override;\n-98 int _\bg_\be_\bt_\bF_\ba_\bc_\be_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bI_\bn_\bd_\bi_\bc_\be_\bs(_\bI_\bn_\bd_\be_\bx faceIndex,\n-99 _\bF_\bV_\ba_\br_\bI_\bD fvarID, _\bI_\bn_\bd_\be_\bx fvarValueIndices[]) const override;\n-100\n-101 int _\bp_\bo_\bp_\bu_\bl_\ba_\bt_\be_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(_\bI_\bn_\bd_\be_\bx faceIndex, int faceVertex,\n-102 _\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br * vertexDescriptor) const override;\n-103\n-104 int _\bg_\be_\bt_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\be_\bx_\bI_\bn_\bc_\bi_\bd_\be_\bn_\bt_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\be_\bx_\bI_\bn_\bd_\bi_\bc_\be_\bs(\n-105 _\bI_\bn_\bd_\be_\bx faceIndex, int faceVertex,\n-106 _\bI_\bn_\bd_\be_\bx vertexIndices[]) const override;\n-107 int _\bg_\be_\bt_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\be_\bx_\bI_\bn_\bc_\bi_\bd_\be_\bn_\bt_\bF_\ba_\bc_\be_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bI_\bn_\bd_\bi_\bc_\be_\bs(\n-108 _\bI_\bn_\bd_\be_\bx faceIndex, int faceVertex,\n-109 _\bF_\bV_\ba_\br_\bI_\bD fvarID, _\bI_\bn_\bd_\be_\bx fvarValueIndices[]) const override;\n-110\n-111 // Optional SurfaceFactoryMeshAdapter overrides for regular patches:\n-112 bool _\bg_\be_\bt_\bF_\ba_\bc_\be_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bh_\bo_\bo_\bd_\bV_\be_\br_\bt_\be_\bx_\bI_\bn_\bd_\bi_\bc_\be_\bs_\bI_\bf_\bR_\be_\bg_\bu_\bl_\ba_\br(\n-113 _\bI_\bn_\bd_\be_\bx faceIndex,\n-114 _\bI_\bn_\bd_\be_\bx vertexIndices[]) const override;\n-115\n-116 bool _\bg_\be_\bt_\bF_\ba_\bc_\be_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bh_\bo_\bo_\bd_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bI_\bn_\bd_\bi_\bc_\be_\bs_\bI_\bf_\bR_\be_\bg_\bu_\bl_\ba_\br(\n-117 _\bI_\bn_\bd_\be_\bx faceIndex,\n-118 _\bF_\bV_\ba_\br_\bI_\bD fvarID, _\bI_\bn_\bd_\be_\bx fvarValueIndices[]) const override;\n-120\n-121private:\n-122 //\n-123 // Internal supporting methods:\n-124 //\n-125 int getFaceVaryingChannel(_\bF_\bV_\ba_\br_\bI_\bD fvarID) const;\n-126\n-127 int getFaceVertexPointIndices(_\bI_\bn_\bd_\be_\bx faceIndex, int faceVertex,\n-128 _\bI_\bn_\bd_\be_\bx indices[], int vtxOrFVarChannel) const;\n-129\n-130 int getFacePatchPointIndices(_\bI_\bn_\bd_\be_\bx faceIndex,\n-131 _\bI_\bn_\bd_\be_\bx indices[], int vtxOrFVarChannel) const;\n-132\n-133private:\n-134 // Additional members for the subclass:\n-135 _\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const & _mesh;\n-136\n-137 int _numFaces;\n-138 int _numFVarChannels;\n-139};\n-140\n-141\n-142//\n-156template <class CACHE_TYPE = SurfaceFactoryCache>\n-_\b1_\b5_\b7class _\bR_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by : public _\bR_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bB_\ba_\bs_\be {\n-158public:\n-_\b1_\b5_\b9 _\bR_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by(_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const & mesh,\n-160 _\bO_\bp_\bt_\bi_\bo_\bn_\bs const & options = _\bO_\bp_\bt_\bi_\bo_\bn_\bs()) :\n-161 _\bR_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bB_\ba_\bs_\be(mesh, options),\n-162 _localCache() {\n-163\n-164 _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bs_\be_\bt_\bI_\bn_\bt_\be_\br_\bn_\ba_\bl_\bC_\ba_\bc_\bh_\be(&_localCache);\n-165 }\n-_\b1_\b6_\b6 _\b~_\bR_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by() override = default;\n-167\n-168private:\n-169 CACHE_TYPE _localCache;\n-170};\n-171\n-172} // end namespace Bfr\n-173\n-174} // end namespace OPENSUBDIV_VERSION\n-175using namespace OPENSUBDIV_VERSION;\n-176\n-177} // end namespace OpenSubdiv\n-178\n-179#endif /* OPENSUBDIV3_BFR_REFINER_SURFACE_FACTORY_H */\n+78#endif // OPENSUBDIV3_OSD_HLSL_PATCH_SHADER_SOURCE_H\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bB_\ba_\bs_\be\n-Intermediate subclass of SurfaceFactory with Far::TopologyRefiner as the mesh.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\br_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bB_\ba_\bs_\be_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bF_\ba_\bc_\be_\bs\n-int GetNumFaces() const\n-Return the number of faces.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\br_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b8_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bB_\ba_\bs_\be_\b:_\b:\n-_\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs\n-int GetNumFVarChannels() const\n-Return the number of face-varying channels.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\br_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b8_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bB_\ba_\bs_\be_\b:_\b:_\bG_\be_\bt_\bM_\be_\bs_\bh\n-Far::TopologyRefiner const & GetMesh() const\n-Return the instance of the mesh.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\br_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b7_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bB_\ba_\bs_\be_\b:_\b:\n-_\b~_\bR_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bB_\ba_\bs_\be\n-~RefinerSurfaceFactoryBase() override=default\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bB_\ba_\bs_\be_\b:_\b:\n-_\bR_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bB_\ba_\bs_\be\n-RefinerSurfaceFactoryBase(Far::TopologyRefiner const &mesh, Options const\n-&options)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by\n-Template for concrete subclasses of RefinerSurfaceFactoryBase.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\br_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b5_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n-_\b~_\bR_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by\n-~RefinerSurfaceFactory() override=default\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n-_\bR_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by\n-RefinerSurfaceFactory(Far::TopologyRefiner const &mesh, Options const\n-&options=Options())\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\br_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b5_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by\n-Base class providing initialization of a Surface for each face of a mesh.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b0_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bs_\be_\bt_\bI_\bn_\bt_\be_\br_\bn_\ba_\bl_\bC_\ba_\bc_\bh_\be\n-void setInternalCache(SurfaceFactoryCache *cache)\n-Subclass to identify an internal cache for use by base class.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n-Simple set of options assigned to instances of SurfaceFactory.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b1_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b:_\b:\n-_\bg_\be_\bt_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\be_\bx_\bI_\bn_\bc_\bi_\bd_\be_\bn_\bt_\bF_\ba_\bc_\be_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bI_\bn_\bd_\bi_\bc_\be_\bs\n-virtual int getFaceVertexIncidentFaceFVarValueIndices(Index faceIndex, int\n-faceVertex, FVarID fvarID, Index fvarValueIndices[]) const =0\n-Gather face-varying indices of incident faces around a face-vertex.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b:_\b:\n-_\bg_\be_\bt_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\be_\bx_\bI_\bn_\bc_\bi_\bd_\be_\bn_\bt_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\be_\bx_\bI_\bn_\bd_\bi_\bc_\be_\bs\n-virtual int getFaceVertexIncidentFaceVertexIndices(Index faceIndex, int\n-faceVertex, Index vertexIndices[]) const =0\n-Gather vertex indices of incident faces around a face-vertex.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b:_\b:_\bg_\be_\bt_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be\n-virtual int getFaceSize(Index faceIndex) const =0\n-Returns the size of a face (number of vertices)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx\n-int Index\n-Integer type representing a mesh index.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b._\bh_\b:_\b6_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b:_\b:\n-_\bp_\bo_\bp_\bu_\bl_\ba_\bt_\be_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n-virtual int populateFaceVertexDescriptor(Index faceIndex, int faceVertex,\n-VertexDescriptor *vertexDescriptor) const =0\n-Describe the topology of incident faces around a face-vertex.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b:_\b:\n-_\bg_\be_\bt_\bF_\ba_\bc_\be_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bh_\bo_\bo_\bd_\bV_\be_\br_\bt_\be_\bx_\bI_\bn_\bd_\bi_\bc_\be_\bs_\bI_\bf_\bR_\be_\bg_\bu_\bl_\ba_\br\n-virtual bool getFaceNeighborhoodVertexIndicesIfRegular(Index faceIndex, Index\n-vertexIndices[]) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b._\bh_\b:_\b2_\b1_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b:_\b:\n-_\bg_\be_\bt_\bF_\ba_\bc_\be_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bh_\bo_\bo_\bd_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bI_\bn_\bd_\bi_\bc_\be_\bs_\bI_\bf_\bR_\be_\bg_\bu_\bl_\ba_\br\n-virtual bool getFaceNeighborhoodFVarValueIndicesIfRegular(Index faceIndex,\n-FVarID fvarID, Index fvarValueIndices[]) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b._\bh_\b:_\b2_\b2_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b:_\b:\n-_\bg_\be_\bt_\bF_\ba_\bc_\be_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bI_\bn_\bd_\bi_\bc_\be_\bs\n-virtual int getFaceFVarValueIndices(Index faceIndex, FVarID fvarID, Index\n-fvarValueIndices[]) const =0\n-Gather the face-varying indices of the face's vertices.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b:_\b:\n-_\bg_\be_\bt_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\be_\bx_\bI_\bn_\bd_\bi_\bc_\be_\bs\n-virtual int getFaceVertexIndices(Index faceIndex, Index vertexIndices[]) const\n-=0\n-Gather the indices of the face's vertices.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b:_\b:_\bi_\bs_\bF_\ba_\bc_\be_\bH_\bo_\bl_\be\n-virtual bool isFaceHole(Index faceIndex) const =0\n-Returns if a face is a hole.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b:_\b:_\bF_\bV_\ba_\br_\bI_\bD\n-std::intptr_t FVarID\n-Type used to identify and specify face-varying primvars.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b._\bh_\b:_\b8_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n-Simple class used by subclasses of SurfaceFactory to describe a vertex.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bv_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b1_\b3_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br\n-Stores topology data for a specified set of refinement options.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b5_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bT_\by_\bp_\be\n+Type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b4_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bH_\bL_\bS_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be\n+Provides shader source which can be used by client code.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bh_\bl_\bs_\bl_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b._\bh_\b:_\b4_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bH_\bL_\bS_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b:_\b:\n+_\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be\n+static std::string GetVertexShaderSource(Far::PatchDescriptor::Type type)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bH_\bL_\bS_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b:_\b:\n+_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bD_\br_\ba_\bw_\bi_\bn_\bg_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be\n+static std::string GetPatchDrawingShaderSource()\n+Returns shader source which can be used while drawing piecewise parametric\n+patches resulting from sub...\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bH_\bL_\bS_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b:_\b:\n+_\bG_\be_\bt_\bD_\bo_\bm_\ba_\bi_\bn_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be\n+static std::string GetDomainShaderSource(Far::PatchDescriptor::Type type)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bH_\bL_\bS_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b:_\b:_\bG_\be_\bt_\bH_\bu_\bl_\bl_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be\n+static std::string GetHullShaderSource(Far::PatchDescriptor::Type type)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bH_\bL_\bS_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b:_\b:\n+_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bB_\ba_\bs_\bi_\bs_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be\n+static std::string GetPatchBasisShaderSource()\n+Returns shader source which can be used to evaluate position and first and\n+second derivatives on piec...\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bH_\bL_\bS_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b:_\b:\n+_\bG_\be_\bt_\bC_\bo_\bm_\bm_\bo_\bn_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be\n+static std::string GetCommonShaderSource()\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bb_\bf_\br\n-    * _\br_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bh_\bl_\bs_\bl_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00719.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00719.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/bfr/parameterization.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/osd/glMesh.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -88,43 +88,43 @@\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n-<a href=\"#nested-classes\">Classes</a> &#124;\n-<a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">parameterization.h File Reference</div></div>\n+<a href=\"#namespaces\">Namespaces</a> &#124;\n+<a href=\"#typedef-members\">Typedefs</a>  </div>\n+  <div class=\"headertitle\"><div class=\"title\">glMesh.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a01492_source.html\">../sdc/types.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00704_source.html\">../osd/mesh.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00779_source.html\">../osd/glPatchTable.h</a>&quot;</code><br />\n </div>\n <p><a href=\"a00719_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n-<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n-Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00921.html\">Parameterization</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Simple class defining the 2D parameterization of a face.  <a href=\"a00921.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-</table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00907\" id=\"r_a00907\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00907.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr</a></td></tr>\n+<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+</table><table class=\"memberdecls\">\n+<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"typedef-members\" name=\"typedef-members\"></a>\n+Typedefs</h2></td></tr>\n+<tr class=\"memitem:a7f9cf2b729178bdbb847fc4afd91af9e\" id=\"r_a7f9cf2b729178bdbb847fc4afd91af9e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef <a class=\"el\" href=\"a01269.html\">MeshInterface</a>&lt; <a class=\"el\" href=\"a01237.html\">GLPatchTable</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html#a7f9cf2b729178bdbb847fc4afd91af9e\">GLMeshInterface</a></td></tr>\n+<tr class=\"separator:a7f9cf2b729178bdbb847fc4afd91af9e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_fa5edef2a780a73fbfb6a11f1af88ceb.html\">bfr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00719.html\">parameterization.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00719.html\">glMesh.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,24 +1,24 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-parameterization.h File Reference\n+_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bT_\by_\bp_\be_\bd_\be_\bf_\bs\n+glMesh.h File Reference\n #include \"../version.h\"\n-#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n+#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bm_\be_\bs_\bh_\b._\bh\"\n+#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n-C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn\n-\u00a0       Simple class defining the 2D parameterization of a face. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n+\u00a0\n+T\bTy\byp\bpe\bed\bde\bef\bfs\bs\n+typedef _\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be< _\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be >\u00a0 _\bG_\bL_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bb_\bf_\br\n-    * _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bg_\bl_\bM_\be_\bs_\bh_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00719.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00719.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,3 +1,3 @@\n var a00719 = [\n-    [\"Parameterization\", \"a00921.html\", \"a00921\"]\n+    [\"GLMeshInterface\", \"a00719.html#a7f9cf2b729178bdbb847fc4afd91af9e\", null]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00719_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00719_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/bfr/parameterization.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/osd/glMesh.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">parameterization.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">glMesh.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00719.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2021 Pixar</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2013 Pixar</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -119,200 +119,45 @@\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_BFR_PARAMETERIZATION_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_BFR_PARAMETERIZATION_H</span></div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_GL_MESH_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_GL_MESH_H</span></div>\n <div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n <div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n <div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../sdc/types.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span> </div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span>Bfr {</div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00052\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00921.html\">   52</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a00921.html\">Parameterization</a> {</div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00921.html#a1d1cfd8ffb84e947f82999c682b666a7ae1a12d53590e4fd25c9fd9006f19ab5c\">   62</a></span>    <span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"a00921.html#a1d1cfd8ffb84e947f82999c682b666a7\">Type</a> { <a class=\"code hl_enumvalue\" href=\"a00921.html#a1d1cfd8ffb84e947f82999c682b666a7ae1a12d53590e4fd25c9fd9006f19ab5c\">QUAD</a>,          </div>\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00921.html#a1d1cfd8ffb84e947f82999c682b666a7acde3f260abb10fb9633e1ca01de9e78d\">   63</a></span>                <a class=\"code hl_enumvalue\" href=\"a00921.html#a1d1cfd8ffb84e947f82999c682b666a7acde3f260abb10fb9633e1ca01de9e78d\">TRI</a>,           </div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span>                <a class=\"code hl_enumvalue\" href=\"a00921.html#a1d1cfd8ffb84e947f82999c682b666a7a7cbabd8b5f03feec7dda7f68118f0850\">QUAD_SUBFACES</a>  </div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00921.html#a1d1cfd8ffb84e947f82999c682b666a7a7cbabd8b5f03feec7dda7f68118f0850\">   65</a></span>    };</div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span> </div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span> </div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span> </div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00921.html#a301ad64c8ae0a3ba3af84377138a069f\">   78</a></span>    <a class=\"code hl_function\" href=\"a00921.html#a301ad64c8ae0a3ba3af84377138a069f\">Parameterization</a>(<a class=\"code hl_enumeration\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833d\">Sdc::SchemeType</a> scheme, <span class=\"keywordtype\">int</span> faceSize);</div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span> </div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00921.html#ac532c4b500b1a85ea22217f2c65a70ed\">   81</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00921.html#ac532c4b500b1a85ea22217f2c65a70ed\">IsValid</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (_faceSize &gt; 0); }</div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span> </div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00921.html#aa7e0b89d67d34c1dd7a37cdce95f9e2c\">   84</a></span>    <a class=\"code hl_function\" href=\"a00921.html#aa7e0b89d67d34c1dd7a37cdce95f9e2c\">Parameterization</a>() : _type(0), _uDim(0), _faceSize(0) { }</div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span> </div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00921.html#a64a4b29d36851a8d83be05af5b25f886\">   86</a></span>    <a class=\"code hl_function\" href=\"a00921.html#a64a4b29d36851a8d83be05af5b25f886\">Parameterization</a>(<a class=\"code hl_class\" href=\"a00921.html\">Parameterization</a> <span class=\"keyword\">const</span> &amp;) = <span class=\"keywordflow\">default</span>;</div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00921.html#af488514a0e7868dd273ebe767420c416\">   87</a></span>    <a class=\"code hl_class\" href=\"a00921.html\">Parameterization</a> &amp; <a class=\"code hl_function\" href=\"a00921.html#af488514a0e7868dd273ebe767420c416\">operator=</a>(<a class=\"code hl_class\" href=\"a00921.html\">Parameterization</a> <span class=\"keyword\">const</span> &amp;) = <span class=\"keywordflow\">default</span>;</div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00921.html#a4a581bbd4a90fe89f0c9210dede62c5f\">   88</a></span>    <a class=\"code hl_function\" href=\"a00921.html#a4a581bbd4a90fe89f0c9210dede62c5f\">~Parameterization</a>() = <span class=\"keywordflow\">default</span>;</div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span> </div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span> </div>\n-<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span> </div>\n-<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00921.html#a485decc00facb0972f8775a8a20851fa\">   98</a></span>    <a class=\"code hl_enumeration\" href=\"a00921.html#a1d1cfd8ffb84e947f82999c682b666a7\">Type</a> <a class=\"code hl_function\" href=\"a00921.html#a485decc00facb0972f8775a8a20851fa\">GetType</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (<a class=\"code hl_enumeration\" href=\"a00921.html#a1d1cfd8ffb84e947f82999c682b666a7\">Type</a>) _type; }</div>\n-<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span> </div>\n-<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00921.html#a181e30653909f9d0e0afa92dd44d28ec\">  101</a></span>    <span class=\"keywordtype\">int</span>  <a class=\"code hl_function\" href=\"a00921.html#a181e30653909f9d0e0afa92dd44d28ec\">GetFaceSize</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _faceSize; }</div>\n-<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span> </div>\n-<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span> </div>\n-<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\">  116</span> </div>\n-<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\">  118</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00921.html#a9cb32ed5657438f0a1b7f322b221dc75\">  119</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00921.html#a9cb32ed5657438f0a1b7f322b221dc75\">GetVertexCoord</a>(<span class=\"keywordtype\">int</span> vertexIndex, REAL uvCoord[2]) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span> </div>\n-<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00921.html#a8619f1774a47cdf85d93832261fe7d54\">  123</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00921.html#a8619f1774a47cdf85d93832261fe7d54\">GetEdgeCoord</a>(<span class=\"keywordtype\">int</span> edgeIndex, REAL t, REAL uvCoord[2]) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span> </div>\n-<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00921.html#a43caa8212032f3649809914cc0f57653\">  127</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00921.html#a43caa8212032f3649809914cc0f57653\">GetCenterCoord</a>(REAL uvCoord[2]) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span> </div>\n-<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\">  132</span> </div>\n-<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\">  147</span> </div>\n-<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\">  149</span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00921.html#adc4cd156a8fdb843b0e233a922bb8a17\">HasSubFaces</a>() <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\">  150</span> </div>\n-<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\">  152</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\">  153</span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00921.html#a0381bb479d54363806267616b61c6ed3\">GetSubFace</a>(REAL <span class=\"keyword\">const</span> uvCoord[2]) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\">  154</span> </div>\n-<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\">  157</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\">  158</span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00921.html#a41cf5ce29cf0ef8f61e9bfe9b8c007f6\">ConvertCoordToSubFace</a>(</div>\n-<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\">  159</span>                REAL <span class=\"keyword\">const</span> uvCoord[2], REAL subFaceCoord[2]) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\">  160</span> </div>\n-<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\">  162</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\">  163</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00921.html#aed9d1936ffe46b9622ae31cb43233a2e\">ConvertSubFaceToCoord</a>(<span class=\"keywordtype\">int</span> subFace,</div>\n-<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\">  164</span>                REAL <span class=\"keyword\">const</span> subFaceCoord[2], REAL uvCoord[2]) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\">  165</span> </div>\n-<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\">  168</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\">  169</span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00921.html#ae7ee02ea1bb1c8b1fff7793d51013bed\">ConvertCoordToNormalizedSubFace</a>(</div>\n-<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\">  170</span>                REAL <span class=\"keyword\">const</span> uvCoord[2], REAL subFaceCoord[2]) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span> </div>\n-<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\">  173</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\">  174</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00921.html#a9b6878c9cfa5f864aacae60e159451c8\">ConvertNormalizedSubFaceToCoord</a>(<span class=\"keywordtype\">int</span> subFace,</div>\n-<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\">  175</span>                REAL <span class=\"keyword\">const</span> subFaceCoord[2], REAL uvCoord[2]) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span> </div>\n-<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\">  178</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\">  179</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\">  180</span>    <span class=\"keywordtype\">int</span> convertCoordToSubFace(<span class=\"keywordtype\">bool</span> normalized,</div>\n-<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\">  181</span>                REAL <span class=\"keyword\">const</span> uvCoord[2], REAL subFaceCoord[2]) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\">  182</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\">  183</span>    <span class=\"keywordtype\">void</span> convertSubFaceToCoord(<span class=\"keywordtype\">bool</span> normalized, <span class=\"keywordtype\">int</span> subFace,</div>\n-<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\">  184</span>                REAL <span class=\"keyword\">const</span> subFaceCoord[2], REAL uvCoord[2]) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\">  185</span> </div>\n-<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\">  186</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\">  187</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span>  _type;</div>\n-<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\">  188</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span>  _uDim;</div>\n-<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\">  189</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> _faceSize;</div>\n-<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\">  190</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\">  191</span> </div>\n-<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\">  192</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\">  193</span><span class=\"comment\">//  Inline sub-face coordinate conversion methods:</span></div>\n-<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\">  194</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\">  195</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span></div>\n-<div class=\"foldopen\" id=\"foldopen00196\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00921.html#adc4cd156a8fdb843b0e233a922bb8a17\">  196</a></span><a class=\"code hl_function\" href=\"a00921.html#adc4cd156a8fdb843b0e233a922bb8a17\">Parameterization::HasSubFaces</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\">  197</span>    <span class=\"keywordflow\">return</span> (_type == <a class=\"code hl_enumvalue\" href=\"a00921.html#a1d1cfd8ffb84e947f82999c682b666a7a7cbabd8b5f03feec7dda7f68118f0850\">QUAD_SUBFACES</a>);</div>\n-<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\">  198</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\">  199</span> </div>\n-<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\">  200</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\">  201</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span></div>\n-<div class=\"foldopen\" id=\"foldopen00202\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00921.html#a0381bb479d54363806267616b61c6ed3\">  202</a></span><a class=\"code hl_function\" href=\"a00921.html#a0381bb479d54363806267616b61c6ed3\">Parameterization::GetSubFace</a>(REAL <span class=\"keyword\">const</span> uvCoord[2])<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\">  203</span> </div>\n-<div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\">  204</span>    <span class=\"keywordflow\">if</span> (!<a class=\"code hl_function\" href=\"a00921.html#adc4cd156a8fdb843b0e233a922bb8a17\">HasSubFaces</a>()) <span class=\"keywordflow\">return</span> 0;</div>\n-<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\">  205</span> </div>\n-<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\">  206</span>    <span class=\"keywordtype\">int</span> uTile = (int) uvCoord[0];</div>\n-<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\">  207</span>    <span class=\"keywordtype\">int</span> vTile = (int) uvCoord[1];</div>\n-<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\">  208</span>    <span class=\"keywordflow\">return</span> (vTile + ((uvCoord[1] - (REAL) vTile) &gt; 0.75f)) * _uDim +</div>\n-<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\">  209</span>           (uTile + ((uvCoord[0] - (REAL) uTile) &gt; 0.75f));</div>\n-<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\">  210</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\">  211</span> </div>\n-<div class=\"line\"><a id=\"l00212\" name=\"l00212\"></a><span class=\"lineno\">  212</span><span class=\"comment\">//  Conversions to unnormalized sub-face coordinates:</span></div>\n-<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\">  213</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\">  214</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span></div>\n-<div class=\"foldopen\" id=\"foldopen00215\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00921.html#a41cf5ce29cf0ef8f61e9bfe9b8c007f6\">  215</a></span><a class=\"code hl_function\" href=\"a00921.html#a41cf5ce29cf0ef8f61e9bfe9b8c007f6\">Parameterization::ConvertCoordToSubFace</a>(</div>\n-<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\">  216</span>        REAL <span class=\"keyword\">const</span> uvCoord[2], REAL subCoord[2])<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\">  217</span>    <span class=\"keywordflow\">return</span> convertCoordToSubFace&lt;REAL&gt;(<span class=\"keyword\">false</span>, uvCoord, subCoord);</div>\n-<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\">  218</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\">  219</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\">  220</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00221\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00921.html#aed9d1936ffe46b9622ae31cb43233a2e\">  221</a></span><a class=\"code hl_function\" href=\"a00921.html#aed9d1936ffe46b9622ae31cb43233a2e\">Parameterization::ConvertSubFaceToCoord</a>(</div>\n-<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\">  222</span>        <span class=\"keywordtype\">int</span> subFace, REAL <span class=\"keyword\">const</span> subCoord[2], REAL uvCoord[2])<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\">  223</span>    convertSubFaceToCoord&lt;REAL&gt;(<span class=\"keyword\">false</span>, subFace, subCoord, uvCoord);</div>\n-<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\">  224</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\">  225</span> </div>\n-<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\">  226</span><span class=\"comment\">//  Conversions to normalized sub-face coordinates:</span></div>\n-<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\">  227</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\">  228</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span></div>\n-<div class=\"foldopen\" id=\"foldopen00229\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00921.html#ae7ee02ea1bb1c8b1fff7793d51013bed\">  229</a></span><a class=\"code hl_function\" href=\"a00921.html#ae7ee02ea1bb1c8b1fff7793d51013bed\">Parameterization::ConvertCoordToNormalizedSubFace</a>(</div>\n-<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\">  230</span>        REAL <span class=\"keyword\">const</span> uvCoord[2], REAL subCoord[2])<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\">  231</span>    <span class=\"keywordflow\">return</span> convertCoordToSubFace&lt;REAL&gt;(<span class=\"keyword\">true</span>, uvCoord, subCoord);</div>\n-<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\">  232</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\">  233</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\">  234</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00235\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00921.html#a9b6878c9cfa5f864aacae60e159451c8\">  235</a></span><a class=\"code hl_function\" href=\"a00921.html#a9b6878c9cfa5f864aacae60e159451c8\">Parameterization::ConvertNormalizedSubFaceToCoord</a>(</div>\n-<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\">  236</span>        <span class=\"keywordtype\">int</span> subFace, REAL <span class=\"keyword\">const</span> subCoord[2], REAL uvCoord[2])<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\">  237</span>    convertSubFaceToCoord&lt;REAL&gt;(<span class=\"keyword\">true</span>, subFace, subCoord, uvCoord);</div>\n-<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\">  238</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\">  239</span> </div>\n-<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\">  240</span>} <span class=\"comment\">// end namespace Bfr</span></div>\n-<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\">  241</span> </div>\n-<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\">  242</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\">  243</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\">  244</span> </div>\n-<div class=\"line\"><a id=\"l00245\" name=\"l00245\"></a><span class=\"lineno\">  245</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\">  246</span> </div>\n-<div class=\"line\"><a id=\"l00247\" name=\"l00247\"></a><span class=\"lineno\">  247</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_BFR_PARAMETERIZATION */</span><span class=\"preprocessor\"></span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa00913_html_aa3daa2f428c6be2b1cb394f3a525833d\"><div class=\"ttname\"><a href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833d\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::SchemeType</a></div><div class=\"ttdeci\">SchemeType</div><div class=\"ttdoc\">Enumerated type for all subdivision schemes supported by OpenSubdiv.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01492_source.html#l00037\">types.h:37</a></div></div>\n-<div class=\"ttc\" id=\"aa00921_html\"><div class=\"ttname\"><a href=\"a00921.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization</a></div><div class=\"ttdoc\">Simple class defining the 2D parameterization of a face.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00719_source.html#l00052\">parameterization.h:52</a></div></div>\n-<div class=\"ttc\" id=\"aa00921_html_a0381bb479d54363806267616b61c6ed3\"><div class=\"ttname\"><a href=\"a00921.html#a0381bb479d54363806267616b61c6ed3\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization::GetSubFace</a></div><div class=\"ttdeci\">int GetSubFace(REAL const uvCoord[2]) const</div><div class=\"ttdoc\">Returns the integer sub-face containing the given (u,v)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00719_source.html#l00202\">parameterization.h:202</a></div></div>\n-<div class=\"ttc\" id=\"aa00921_html_a181e30653909f9d0e0afa92dd44d28ec\"><div class=\"ttname\"><a href=\"a00921.html#a181e30653909f9d0e0afa92dd44d28ec\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization::GetFaceSize</a></div><div class=\"ttdeci\">int GetFaceSize() const</div><div class=\"ttdoc\">Returns the size (number of vertices) of the corresponding face.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00719_source.html#l00101\">parameterization.h:101</a></div></div>\n-<div class=\"ttc\" id=\"aa00921_html_a1d1cfd8ffb84e947f82999c682b666a7\"><div class=\"ttname\"><a href=\"a00921.html#a1d1cfd8ffb84e947f82999c682b666a7\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization::Type</a></div><div class=\"ttdeci\">Type</div><div class=\"ttdoc\">Enumerated type for the different kinds of Parameterizations.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00719_source.html#l00062\">parameterization.h:62</a></div></div>\n-<div class=\"ttc\" id=\"aa00921_html_a1d1cfd8ffb84e947f82999c682b666a7a7cbabd8b5f03feec7dda7f68118f0850\"><div class=\"ttname\"><a href=\"a00921.html#a1d1cfd8ffb84e947f82999c682b666a7a7cbabd8b5f03feec7dda7f68118f0850\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization::QUAD_SUBFACES</a></div><div class=\"ttdeci\">@ QUAD_SUBFACES</div><div class=\"ttdoc\">Partitioned into quadrilateral sub-faces.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00719_source.html#l00065\">parameterization.h:64</a></div></div>\n-<div class=\"ttc\" id=\"aa00921_html_a1d1cfd8ffb84e947f82999c682b666a7acde3f260abb10fb9633e1ca01de9e78d\"><div class=\"ttname\"><a href=\"a00921.html#a1d1cfd8ffb84e947f82999c682b666a7acde3f260abb10fb9633e1ca01de9e78d\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization::TRI</a></div><div class=\"ttdeci\">@ TRI</div><div class=\"ttdoc\">Triangle.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00719_source.html#l00063\">parameterization.h:63</a></div></div>\n-<div class=\"ttc\" id=\"aa00921_html_a1d1cfd8ffb84e947f82999c682b666a7ae1a12d53590e4fd25c9fd9006f19ab5c\"><div class=\"ttname\"><a href=\"a00921.html#a1d1cfd8ffb84e947f82999c682b666a7ae1a12d53590e4fd25c9fd9006f19ab5c\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization::QUAD</a></div><div class=\"ttdeci\">@ QUAD</div><div class=\"ttdoc\">Quadrilateral.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00719_source.html#l00062\">parameterization.h:62</a></div></div>\n-<div class=\"ttc\" id=\"aa00921_html_a301ad64c8ae0a3ba3af84377138a069f\"><div class=\"ttname\"><a href=\"a00921.html#a301ad64c8ae0a3ba3af84377138a069f\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization::Parameterization</a></div><div class=\"ttdeci\">Parameterization(Sdc::SchemeType scheme, int faceSize)</div><div class=\"ttdoc\">Primary constructor with subdivision scheme and face size.</div></div>\n-<div class=\"ttc\" id=\"aa00921_html_a41cf5ce29cf0ef8f61e9bfe9b8c007f6\"><div class=\"ttname\"><a href=\"a00921.html#a41cf5ce29cf0ef8f61e9bfe9b8c007f6\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization::ConvertCoordToSubFace</a></div><div class=\"ttdeci\">int ConvertCoordToSubFace(REAL const uvCoord[2], REAL subFaceCoord[2]) const</div><div class=\"ttdoc\">Convert (u,v) to a sub-face (return value) and its local (u,v) coordinate.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00719_source.html#l00215\">parameterization.h:215</a></div></div>\n-<div class=\"ttc\" id=\"aa00921_html_a43caa8212032f3649809914cc0f57653\"><div class=\"ttname\"><a href=\"a00921.html#a43caa8212032f3649809914cc0f57653\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization::GetCenterCoord</a></div><div class=\"ttdeci\">void GetCenterCoord(REAL uvCoord[2]) const</div><div class=\"ttdoc\">Returns the (u,v) coordinate for the center of the face.</div></div>\n-<div class=\"ttc\" id=\"aa00921_html_a485decc00facb0972f8775a8a20851fa\"><div class=\"ttname\"><a href=\"a00921.html#a485decc00facb0972f8775a8a20851fa\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization::GetType</a></div><div class=\"ttdeci\">Type GetType() const</div><div class=\"ttdoc\">Returns the type of parameterization assigned.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00719_source.html#l00098\">parameterization.h:98</a></div></div>\n-<div class=\"ttc\" id=\"aa00921_html_a4a581bbd4a90fe89f0c9210dede62c5f\"><div class=\"ttname\"><a href=\"a00921.html#a4a581bbd4a90fe89f0c9210dede62c5f\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization::~Parameterization</a></div><div class=\"ttdeci\">~Parameterization()=default</div></div>\n-<div class=\"ttc\" id=\"aa00921_html_a64a4b29d36851a8d83be05af5b25f886\"><div class=\"ttname\"><a href=\"a00921.html#a64a4b29d36851a8d83be05af5b25f886\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization::Parameterization</a></div><div class=\"ttdeci\">Parameterization(Parameterization const &amp;)=default</div></div>\n-<div class=\"ttc\" id=\"aa00921_html_a8619f1774a47cdf85d93832261fe7d54\"><div class=\"ttname\"><a href=\"a00921.html#a8619f1774a47cdf85d93832261fe7d54\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization::GetEdgeCoord</a></div><div class=\"ttdeci\">void GetEdgeCoord(int edgeIndex, REAL t, REAL uvCoord[2]) const</div><div class=\"ttdoc\">Returns the (u,v) coordinate at any point on a given edge.</div></div>\n-<div class=\"ttc\" id=\"aa00921_html_a9b6878c9cfa5f864aacae60e159451c8\"><div class=\"ttname\"><a href=\"a00921.html#a9b6878c9cfa5f864aacae60e159451c8\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization::ConvertNormalizedSubFaceToCoord</a></div><div class=\"ttdeci\">void ConvertNormalizedSubFaceToCoord(int subFace, REAL const subFaceCoord[2], REAL uvCoord[2]) const</div><div class=\"ttdoc\">Convert a sub-face and its normalized (u,v) coordinate to (u,v)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00719_source.html#l00235\">parameterization.h:235</a></div></div>\n-<div class=\"ttc\" id=\"aa00921_html_a9cb32ed5657438f0a1b7f322b221dc75\"><div class=\"ttname\"><a href=\"a00921.html#a9cb32ed5657438f0a1b7f322b221dc75\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization::GetVertexCoord</a></div><div class=\"ttdeci\">void GetVertexCoord(int vertexIndex, REAL uvCoord[2]) const</div><div class=\"ttdoc\">Returns the (u,v) coordinate of a given vertex.</div></div>\n-<div class=\"ttc\" id=\"aa00921_html_aa7e0b89d67d34c1dd7a37cdce95f9e2c\"><div class=\"ttname\"><a href=\"a00921.html#aa7e0b89d67d34c1dd7a37cdce95f9e2c\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization::Parameterization</a></div><div class=\"ttdeci\">Parameterization()</div><div class=\"ttdoc\">Default construction produces an invalid instance.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00719_source.html#l00084\">parameterization.h:84</a></div></div>\n-<div class=\"ttc\" id=\"aa00921_html_ac532c4b500b1a85ea22217f2c65a70ed\"><div class=\"ttname\"><a href=\"a00921.html#ac532c4b500b1a85ea22217f2c65a70ed\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization::IsValid</a></div><div class=\"ttdeci\">bool IsValid() const</div><div class=\"ttdoc\">Returns true if correctly initialized.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00719_source.html#l00081\">parameterization.h:81</a></div></div>\n-<div class=\"ttc\" id=\"aa00921_html_adc4cd156a8fdb843b0e233a922bb8a17\"><div class=\"ttname\"><a href=\"a00921.html#adc4cd156a8fdb843b0e233a922bb8a17\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization::HasSubFaces</a></div><div class=\"ttdeci\">bool HasSubFaces() const</div><div class=\"ttdoc\">Returns if Parameterization has been partitioned into sub-faces.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00719_source.html#l00196\">parameterization.h:196</a></div></div>\n-<div class=\"ttc\" id=\"aa00921_html_ae7ee02ea1bb1c8b1fff7793d51013bed\"><div class=\"ttname\"><a href=\"a00921.html#ae7ee02ea1bb1c8b1fff7793d51013bed\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization::ConvertCoordToNormalizedSubFace</a></div><div class=\"ttdeci\">int ConvertCoordToNormalizedSubFace(REAL const uvCoord[2], REAL subFaceCoord[2]) const</div><div class=\"ttdoc\">Convert (u,v) to a sub-face (return value) and its normalized (u,v) coordinate.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00719_source.html#l00229\">parameterization.h:229</a></div></div>\n-<div class=\"ttc\" id=\"aa00921_html_aed9d1936ffe46b9622ae31cb43233a2e\"><div class=\"ttname\"><a href=\"a00921.html#aed9d1936ffe46b9622ae31cb43233a2e\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization::ConvertSubFaceToCoord</a></div><div class=\"ttdeci\">void ConvertSubFaceToCoord(int subFace, REAL const subFaceCoord[2], REAL uvCoord[2]) const</div><div class=\"ttdoc\">Convert a sub-face and its local (u,v) coordinate to (u,v)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00719_source.html#l00221\">parameterization.h:221</a></div></div>\n-<div class=\"ttc\" id=\"aa00921_html_af488514a0e7868dd273ebe767420c416\"><div class=\"ttname\"><a href=\"a00921.html#af488514a0e7868dd273ebe767420c416\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization::operator=</a></div><div class=\"ttdeci\">Parameterization &amp; operator=(Parameterization const &amp;)=default</div></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../osd/mesh.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../osd/glPatchTable.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span> </div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span> </div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"keyword\">namespace </span>Osd {</div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span> </div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html#a7f9cf2b729178bdbb847fc4afd91af9e\">   38</a></span><span class=\"keyword\">typedef</span> <a class=\"code hl_class\" href=\"a01269.html\">MeshInterface&lt;GLPatchTable&gt;</a> <a class=\"code hl_typedef\" href=\"a00912.html#a7f9cf2b729178bdbb847fc4afd91af9e\">GLMeshInterface</a>;</div>\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span> </div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span> </div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span>} <span class=\"comment\">// end namespace Osd</span></div>\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span> </div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span> </div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span>}  <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span> </div>\n+<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_GL_MESH_H</span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa00912_html_a7f9cf2b729178bdbb847fc4afd91af9e\"><div class=\"ttname\"><a href=\"a00912.html#a7f9cf2b729178bdbb847fc4afd91af9e\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLMeshInterface</a></div><div class=\"ttdeci\">MeshInterface&lt; GLPatchTable &gt; GLMeshInterface</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00719_source.html#l00038\">glMesh.h:38</a></div></div>\n+<div class=\"ttc\" id=\"aa01269_html\"><div class=\"ttname\"><a href=\"a01269.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshInterface</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00068\">mesh.h:68</a></div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_fa5edef2a780a73fbfb6a11f1af88ceb.html\">bfr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00719.html\">parameterization.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00719.html\">glMesh.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-parameterization.h\n+glMesh.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2021 Pixar\n+2// Copyright 2013 Pixar\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -24,243 +24,42 @@\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n 24\n-25#ifndef OPENSUBDIV3_BFR_PARAMETERIZATION_H\n-26#define OPENSUBDIV3_BFR_PARAMETERIZATION_H\n+25#ifndef OPENSUBDIV3_OSD_GL_MESH_H\n+26#define OPENSUBDIV3_OSD_GL_MESH_H\n 27\n 28#include \"../version.h\"\n 29\n-30#include \"../sdc/types.h\"\n-31\n-32namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-33namespace OPENSUBDIV_VERSION {\n-34\n-35namespace Bfr {\n-36\n-_\b5_\b2class _\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn {\n-53public:\n-_\b6_\b2 enum _\bT_\by_\bp_\be { _\bQ_\bU_\bA_\bD,\n-_\b6_\b3 _\bT_\bR_\bI,\n-64 _\bQ_\bU_\bA_\bD_\b__\bS_\bU_\bB_\bF_\bA_\bC_\bE_\bS\n-_\b6_\b5 };\n-66\n-67public:\n-69\n-76\n-_\b7_\b8 _\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn(_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\bT_\by_\bp_\be scheme, int faceSize);\n-79\n-_\b8_\b1 bool _\bI_\bs_\bV_\ba_\bl_\bi_\bd() const { return (_faceSize > 0); }\n-82\n-_\b8_\b4 _\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn() : _type(0), _uDim(0), _faceSize(0) { }\n-85\n-_\b8_\b6 _\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn(_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn const &) = default;\n-_\b8_\b7 _\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn & _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn const &) = default;\n-_\b8_\b8 _\b~_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn() = default;\n-90\n-92\n-96\n-_\b9_\b8 _\bT_\by_\bp_\be _\bG_\be_\bt_\bT_\by_\bp_\be() const { return (_\bT_\by_\bp_\be) _type; }\n-99\n-_\b1_\b0_\b1 int _\bG_\be_\bt_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be() const { return _faceSize; }\n-103\n-104public:\n-106\n-116\n-118 template <typename REAL>\n-_\b1_\b1_\b9 void _\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bC_\bo_\bo_\br_\bd(int vertexIndex, REAL uvCoord[2]) const;\n-120\n-122 template <typename REAL>\n-_\b1_\b2_\b3 void _\bG_\be_\bt_\bE_\bd_\bg_\be_\bC_\bo_\bo_\br_\bd(int edgeIndex, REAL t, REAL uvCoord[2]) const;\n-124\n-126 template <typename REAL>\n-_\b1_\b2_\b7 void _\bG_\be_\bt_\bC_\be_\bn_\bt_\be_\br_\bC_\bo_\bo_\br_\bd(REAL uvCoord[2]) const;\n-129\n-130public:\n-132\n-147\n-149 bool _\bH_\ba_\bs_\bS_\bu_\bb_\bF_\ba_\bc_\be_\bs() const;\n-150\n-152 template <typename REAL>\n-153 int _\bG_\be_\bt_\bS_\bu_\bb_\bF_\ba_\bc_\be(REAL const uvCoord[2]) const;\n-154\n-157 template <typename REAL>\n-158 int _\bC_\bo_\bn_\bv_\be_\br_\bt_\bC_\bo_\bo_\br_\bd_\bT_\bo_\bS_\bu_\bb_\bF_\ba_\bc_\be(\n-159 REAL const uvCoord[2], REAL subFaceCoord[2]) const;\n-160\n-162 template <typename REAL>\n-163 void _\bC_\bo_\bn_\bv_\be_\br_\bt_\bS_\bu_\bb_\bF_\ba_\bc_\be_\bT_\bo_\bC_\bo_\bo_\br_\bd(int subFace,\n-164 REAL const subFaceCoord[2], REAL uvCoord[2]) const;\n-165\n-168 template <typename REAL>\n-169 int _\bC_\bo_\bn_\bv_\be_\br_\bt_\bC_\bo_\bo_\br_\bd_\bT_\bo_\bN_\bo_\br_\bm_\ba_\bl_\bi_\bz_\be_\bd_\bS_\bu_\bb_\bF_\ba_\bc_\be(\n-170 REAL const uvCoord[2], REAL subFaceCoord[2]) const;\n-171\n-173 template <typename REAL>\n-174 void _\bC_\bo_\bn_\bv_\be_\br_\bt_\bN_\bo_\br_\bm_\ba_\bl_\bi_\bz_\be_\bd_\bS_\bu_\bb_\bF_\ba_\bc_\be_\bT_\bo_\bC_\bo_\bo_\br_\bd(int subFace,\n-175 REAL const subFaceCoord[2], REAL uvCoord[2]) const;\n-177\n-178private:\n-179 template <typename REAL>\n-180 int convertCoordToSubFace(bool normalized,\n-181 REAL const uvCoord[2], REAL subFaceCoord[2]) const;\n-182 template <typename REAL>\n-183 void convertSubFaceToCoord(bool normalized, int subFace,\n-184 REAL const subFaceCoord[2], REAL uvCoord[2]) const;\n-185\n-186private:\n-187 unsigned char _type;\n-188 unsigned char _uDim;\n-189 unsigned short _faceSize;\n-190};\n-191\n-192//\n-193// Inline sub-face coordinate conversion methods:\n-194//\n-195inline bool\n-_\b1_\b9_\b6_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bH_\ba_\bs_\bS_\bu_\bb_\bF_\ba_\bc_\be_\bs() const {\n-197 return (_type == _\bQ_\bU_\bA_\bD_\b__\bS_\bU_\bB_\bF_\bA_\bC_\bE_\bS);\n-198}\n-199\n-200template <typename REAL>\n-201inline int\n-_\b2_\b0_\b2_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bt_\bS_\bu_\bb_\bF_\ba_\bc_\be(REAL const uvCoord[2]) const {\n-203\n-204 if (!_\bH_\ba_\bs_\bS_\bu_\bb_\bF_\ba_\bc_\be_\bs()) return 0;\n-205\n-206 int uTile = (int) uvCoord[0];\n-207 int vTile = (int) uvCoord[1];\n-208 return (vTile + ((uvCoord[1] - (REAL) vTile) > 0.75f)) * _uDim +\n-209 (uTile + ((uvCoord[0] - (REAL) uTile) > 0.75f));\n-210}\n-211\n-212// Conversions to unnormalized sub-face coordinates:\n-213template <typename REAL>\n-214inline int\n-_\b2_\b1_\b5_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bC_\bo_\bn_\bv_\be_\br_\bt_\bC_\bo_\bo_\br_\bd_\bT_\bo_\bS_\bu_\bb_\bF_\ba_\bc_\be(\n-216 REAL const uvCoord[2], REAL subCoord[2]) const {\n-217 return convertCoordToSubFace<REAL>(false, uvCoord, subCoord);\n-218}\n-219template <typename REAL>\n-220inline void\n-_\b2_\b2_\b1_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bC_\bo_\bn_\bv_\be_\br_\bt_\bS_\bu_\bb_\bF_\ba_\bc_\be_\bT_\bo_\bC_\bo_\bo_\br_\bd(\n-222 int subFace, REAL const subCoord[2], REAL uvCoord[2]) const {\n-223 convertSubFaceToCoord<REAL>(false, subFace, subCoord, uvCoord);\n-224}\n-225\n-226// Conversions to normalized sub-face coordinates:\n-227template <typename REAL>\n-228inline int\n-_\b2_\b2_\b9_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bC_\bo_\bn_\bv_\be_\br_\bt_\bC_\bo_\bo_\br_\bd_\bT_\bo_\bN_\bo_\br_\bm_\ba_\bl_\bi_\bz_\be_\bd_\bS_\bu_\bb_\bF_\ba_\bc_\be(\n-230 REAL const uvCoord[2], REAL subCoord[2]) const {\n-231 return convertCoordToSubFace<REAL>(true, uvCoord, subCoord);\n-232}\n-233template <typename REAL>\n-234inline void\n-_\b2_\b3_\b5_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bC_\bo_\bn_\bv_\be_\br_\bt_\bN_\bo_\br_\bm_\ba_\bl_\bi_\bz_\be_\bd_\bS_\bu_\bb_\bF_\ba_\bc_\be_\bT_\bo_\bC_\bo_\bo_\br_\bd(\n-236 int subFace, REAL const subCoord[2], REAL uvCoord[2]) const {\n-237 convertSubFaceToCoord<REAL>(true, subFace, subCoord, uvCoord);\n-238}\n-239\n-240} // end namespace Bfr\n-241\n-242} // end namespace OPENSUBDIV_VERSION\n-243using namespace OPENSUBDIV_VERSION;\n-244\n-245} // end namespace OpenSubdiv\n-246\n-247#endif /* OPENSUBDIV3_BFR_PARAMETERIZATION */\n+30#include \"../osd/mesh.h\"\n+31#include \"../osd/glPatchTable.h\"\n+32\n+33namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+34namespace OPENSUBDIV_VERSION {\n+35\n+36namespace Osd {\n+37\n+_\b3_\b8typedef _\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b> _\bG_\bL_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be;\n+39\n+40\n+41} // end namespace Osd\n+42\n+43} // end namespace OPENSUBDIV_VERSION\n+44using namespace OPENSUBDIV_VERSION;\n+45\n+46} // end namespace OpenSubdiv\n+47\n+48#endif // OPENSUBDIV3_OSD_GL_MESH_H\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\bT_\by_\bp_\be\n-SchemeType\n-Enumerated type for all subdivision schemes supported by OpenSubdiv.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b3_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn\n-Simple class defining the 2D parameterization of a face.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b5_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bt_\bS_\bu_\bb_\bF_\ba_\bc_\be\n-int GetSubFace(REAL const uvCoord[2]) const\n-Returns the integer sub-face containing the given (u,v)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b2_\b0_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bt_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be\n-int GetFaceSize() const\n-Returns the size (number of vertices) of the corresponding face.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b1_\b0_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bT_\by_\bp_\be\n-Type\n-Enumerated type for the different kinds of Parameterizations.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b6_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bQ_\bU_\bA_\bD_\b__\bS_\bU_\bB_\bF_\bA_\bC_\bE_\bS\n-@ QUAD_SUBFACES\n-Partitioned into quadrilateral sub-faces.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b6_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bT_\bR_\bI\n-@ TRI\n-Triangle.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b6_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bQ_\bU_\bA_\bD\n-@ QUAD\n-Quadrilateral.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b6_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn\n-Parameterization(Sdc::SchemeType scheme, int faceSize)\n-Primary constructor with subdivision scheme and face size.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bC_\bo_\bn_\bv_\be_\br_\bt_\bC_\bo_\bo_\br_\bd_\bT_\bo_\bS_\bu_\bb_\bF_\ba_\bc_\be\n-int ConvertCoordToSubFace(REAL const uvCoord[2], REAL subFaceCoord[2]) const\n-Convert (u,v) to a sub-face (return value) and its local (u,v) coordinate.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b2_\b1_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bt_\bC_\be_\bn_\bt_\be_\br_\bC_\bo_\bo_\br_\bd\n-void GetCenterCoord(REAL uvCoord[2]) const\n-Returns the (u,v) coordinate for the center of the face.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bt_\bT_\by_\bp_\be\n-Type GetType() const\n-Returns the type of parameterization assigned.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b9_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\b~_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn\n-~Parameterization()=default\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn\n-Parameterization(Parameterization const &)=default\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bt_\bE_\bd_\bg_\be_\bC_\bo_\bo_\br_\bd\n-void GetEdgeCoord(int edgeIndex, REAL t, REAL uvCoord[2]) const\n-Returns the (u,v) coordinate at any point on a given edge.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:\n-_\bC_\bo_\bn_\bv_\be_\br_\bt_\bN_\bo_\br_\bm_\ba_\bl_\bi_\bz_\be_\bd_\bS_\bu_\bb_\bF_\ba_\bc_\be_\bT_\bo_\bC_\bo_\bo_\br_\bd\n-void ConvertNormalizedSubFaceToCoord(int subFace, REAL const subFaceCoord[2],\n-REAL uvCoord[2]) const\n-Convert a sub-face and its normalized (u,v) coordinate to (u,v)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b2_\b3_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bC_\bo_\bo_\br_\bd\n-void GetVertexCoord(int vertexIndex, REAL uvCoord[2]) const\n-Returns the (u,v) coordinate of a given vertex.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn\n-Parameterization()\n-Default construction produces an invalid instance.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b8_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bI_\bs_\bV_\ba_\bl_\bi_\bd\n-bool IsValid() const\n-Returns true if correctly initialized.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b8_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bH_\ba_\bs_\bS_\bu_\bb_\bF_\ba_\bc_\be_\bs\n-bool HasSubFaces() const\n-Returns if Parameterization has been partitioned into sub-faces.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b1_\b9_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:\n-_\bC_\bo_\bn_\bv_\be_\br_\bt_\bC_\bo_\bo_\br_\bd_\bT_\bo_\bN_\bo_\br_\bm_\ba_\bl_\bi_\bz_\be_\bd_\bS_\bu_\bb_\bF_\ba_\bc_\be\n-int ConvertCoordToNormalizedSubFace(REAL const uvCoord[2], REAL subFaceCoord\n-[2]) const\n-Convert (u,v) to a sub-face (return value) and its normalized (u,v) coordinate.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b2_\b2_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bC_\bo_\bn_\bv_\be_\br_\bt_\bS_\bu_\bb_\bF_\ba_\bc_\be_\bT_\bo_\bC_\bo_\bo_\br_\bd\n-void ConvertSubFaceToCoord(int subFace, REAL const subFaceCoord[2], REAL\n-uvCoord[2]) const\n-Convert a sub-face and its local (u,v) coordinate to (u,v)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b2_\b2_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n-Parameterization & operator=(Parameterization const &)=default\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+MeshInterface< GLPatchTable > GLMeshInterface\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bM_\be_\bs_\bh_\b._\bh_\b:_\b3_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b6_\b8\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bb_\bf_\br\n-    * _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bg_\bl_\bM_\be_\bs_\bh_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00722.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00722.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/bfr/tessellation.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/osd/opengl.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -87,47 +87,24 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"summary\">\n-<a href=\"#nested-classes\">Classes</a> &#124;\n-<a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">tessellation.h File Reference</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">opengl.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n-<div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00719_source.html\">../bfr/parameterization.h</a>&quot;</code><br />\n+<div class=\"textblock\"><code>#include &lt;GL/gl.h&gt;</code><br />\n </div>\n <p><a href=\"a00722_source.html\">Go to the source code of this file.</a></p>\n-<table class=\"memberdecls\">\n-<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n-Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00961.html\">Tessellation</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Encapsulates a specific tessellation pattern of a <a class=\"el\" href=\"a00921.html\" title=\"Simple class defining the 2D parameterization of a face.\">Parameterization</a>.  <a href=\"a00961.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00965.html\">Tessellation::Options</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"a00965.html\" title=\"Options configure a Tessellation to specify the nature of both its results and the structure of the c...\">Options</a> configure a <a class=\"el\" href=\"a00961.html\" title=\"Encapsulates a specific tessellation pattern of a Parameterization.\">Tessellation</a> to specify the nature of both its results and the structure of the coordinate and facet index arrays that its methods will populate.  <a href=\"a00965.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-</table><table class=\"memberdecls\">\n-<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n-Namespaces</h2></td></tr>\n-<tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00907\" id=\"r_a00907\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00907.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr</a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-</table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_fa5edef2a780a73fbfb6a11f1af88ceb.html\">bfr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00722.html\">tessellation.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00722.html\">opengl.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,30 +1,11 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-tessellation.h File Reference\n-#include \"../version.h\"\n-#include \"_\b._\b._\b/_\bb_\bf_\br_\b/_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b._\bh\"\n+opengl.h File Reference\n+#include <GL/gl.h>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n-C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn\n-\u00a0       Encapsulates a specific tessellation pattern of a _\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn.\n-        _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n-        _\bO_\bp_\bt_\bi_\bo_\bn_\bs configure a _\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn to specify the nature of both its\n-\u00a0       results and the structure of the coordinate and facet index arrays that\n-        its methods will populate. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n-\u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n-\u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br\n-\u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bb_\bf_\br\n-    * _\bt_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bo_\bp_\be_\bn_\bg_\bl_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00722_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00722_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/bfr/tessellation.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/osd/opengl.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">tessellation.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">opengl.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00722.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2021 Pixar</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2013 Pixar</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -119,281 +119,47 @@\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_BFR_TESSELLATION_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_BFR_TESSELLATION_H</span></div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_OPENGL_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_OPENGL_H</span></div>\n <div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n-<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../bfr/parameterization.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span> </div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span>Bfr {</div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00051\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00961.html\">   51</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a00961.html\">Tessellation</a> {</div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"foldopen\" id=\"foldopen00065\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00965.html\">   65</a></span>    <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a00965.html\">Options</a> {</div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span>    <span class=\"keyword\">public</span>:</div>\n-<div class=\"foldopen\" id=\"foldopen00067\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00965.html#a28d39a844c3a37ab61d32ab7c6352f09\">   67</a></span>        <a class=\"code hl_function\" href=\"a00965.html#a28d39a844c3a37ab61d32ab7c6352f09\">Options</a>() : _preserveQuads(false), _facetSize4(false),</div>\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span>                    _coordStride(0), _facetStride(0) { }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span> </div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>        <a class=\"code hl_class\" href=\"a00965.html\">Options</a> &amp; <a class=\"code hl_function\" href=\"a00965.html#ae2ec197b850e8bd12878cc67a503a07a\">PreserveQuads</a>(<span class=\"keywordtype\">bool</span> on);</div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00965.html#ae2ec197b850e8bd12878cc67a503a07a\">   74</a></span>        <span class=\"keywordtype\">bool</span>      <a class=\"code hl_function\" href=\"a00965.html#ae2ec197b850e8bd12878cc67a503a07a\">PreserveQuads</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _preserveQuads; }</div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span> </div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span>        <a class=\"code hl_class\" href=\"a00965.html\">Options</a> &amp; <a class=\"code hl_function\" href=\"a00965.html#a50c6e039e8278312e95c1dd94b8478e0\">SetFacetSize</a>(<span class=\"keywordtype\">int</span> numIndices);</div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>        <span class=\"comment\">//  @brief Return the number of indices per facet</span></div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00965.html#a671621e55bfbc48db77919d5fd31744f\">   80</a></span>        <span class=\"keywordtype\">int</span>       <a class=\"code hl_function\" href=\"a00965.html#a671621e55bfbc48db77919d5fd31744f\">GetFacetSize</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> 3 + (int)_facetSize4; }</div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span> </div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>        <a class=\"code hl_class\" href=\"a00965.html\">Options</a> &amp; <a class=\"code hl_function\" href=\"a00965.html#ad6a995daa3f819edeeaf0a8c1aeb8b6a\">SetFacetStride</a>(<span class=\"keywordtype\">int</span> stride);</div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00965.html#a54b068769e4e728e78528f9bdde25b86\">   85</a></span>        <span class=\"keywordtype\">int</span>       <a class=\"code hl_function\" href=\"a00965.html#a54b068769e4e728e78528f9bdde25b86\">GetFacetStride</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _facetStride; }</div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span> </div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>        <a class=\"code hl_class\" href=\"a00965.html\">Options</a> &amp; <a class=\"code hl_function\" href=\"a00965.html#aa7688afdaece2c387e8963d634752aa6\">SetCoordStride</a>(<span class=\"keywordtype\">int</span> stride);</div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00965.html#a3f642ed70a22d6d9d3d2fe79029653f5\">   90</a></span>        <span class=\"keywordtype\">int</span>       <a class=\"code hl_function\" href=\"a00965.html#a3f642ed70a22d6d9d3d2fe79029653f5\">GetCoordStride</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _coordStride; }</div>\n-<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span> </div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>    <span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> _preserveQuads : 1;</div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> _facetSize4    : 1;</div>\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span> </div>\n-<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span>        <span class=\"keywordtype\">short</span> _coordStride;</div>\n-<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>        <span class=\"keywordtype\">short</span> _facetStride;</div>\n-<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span>    };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span> </div>\n-<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span> </div>\n-<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span> </div>\n-<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00961.html#a7f0af117d53701f7ca6e3eb2368b89bb\">  118</a></span>    <a class=\"code hl_function\" href=\"a00961.html#a7f0af117d53701f7ca6e3eb2368b89bb\">Tessellation</a>(<a class=\"code hl_class\" href=\"a00921.html\">Parameterization</a> <span class=\"keyword\">const</span> &amp; p, <span class=\"keywordtype\">int</span> uniformRate,</div>\n-<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span>                 <a class=\"code hl_class\" href=\"a00965.html\">Options</a> <span class=\"keyword\">const</span> &amp; options = <a class=\"code hl_class\" href=\"a00965.html\">Options</a>());</div>\n-<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span> </div>\n-<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00961.html#a65ee652b3607c97bb2b04a64c55d7f99\">  158</a></span>    <a class=\"code hl_function\" href=\"a00961.html#a65ee652b3607c97bb2b04a64c55d7f99\">Tessellation</a>(<a class=\"code hl_class\" href=\"a00921.html\">Parameterization</a> <span class=\"keyword\">const</span> &amp; p, <span class=\"keywordtype\">int</span> numRates, <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> rates[],</div>\n-<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\">  159</span>                 <a class=\"code hl_class\" href=\"a00965.html\">Options</a> <span class=\"keyword\">const</span> &amp; options = <a class=\"code hl_class\" href=\"a00965.html\">Options</a>());</div>\n-<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\">  160</span> </div>\n-<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00961.html#ac532c4b500b1a85ea22217f2c65a70ed\">  162</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00961.html#ac532c4b500b1a85ea22217f2c65a70ed\">IsValid</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _isValid; }</div>\n-<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\">  163</span> </div>\n-<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00961.html#a7a3e89992f3cc492804ec9bc184a1674\">  165</a></span>    <a class=\"code hl_function\" href=\"a00961.html#a7a3e89992f3cc492804ec9bc184a1674\">Tessellation</a>() = <span class=\"keyword\">delete</span>;</div>\n-<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\">  166</span> </div>\n-<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00961.html#ab03191ef31cf0d8b0bcc44f226804e87\">  167</a></span>    <a class=\"code hl_function\" href=\"a00961.html#ab03191ef31cf0d8b0bcc44f226804e87\">Tessellation</a>(<a class=\"code hl_class\" href=\"a00961.html\">Tessellation</a> <span class=\"keyword\">const</span> &amp;) = <span class=\"keyword\">delete</span>;</div>\n-<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00961.html#add7bb6250635b7a713a1d2f5424163de\">  168</a></span>    <a class=\"code hl_class\" href=\"a00961.html\">Tessellation</a> &amp; <a class=\"code hl_function\" href=\"a00961.html#add7bb6250635b7a713a1d2f5424163de\">operator=</a>(<a class=\"code hl_class\" href=\"a00961.html\">Tessellation</a> <span class=\"keyword\">const</span> &amp;) = <span class=\"keyword\">delete</span>;</div>\n-<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00961.html#a23cbee9f350de81b12dea4bc69ba023f\">  169</a></span>    <a class=\"code hl_function\" href=\"a00961.html#a23cbee9f350de81b12dea4bc69ba023f\">~Tessellation</a>();</div>\n-<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span> </div>\n-<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\">  173</span> </div>\n-<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span> </div>\n-<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00961.html#a66515298a982aab202e1e3e537c7d324\">  179</a></span>    <a class=\"code hl_class\" href=\"a00921.html\">Parameterization</a> <a class=\"code hl_function\" href=\"a00961.html#a66515298a982aab202e1e3e537c7d324\">GetParameterization</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _param; }</div>\n-<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\">  180</span> </div>\n-<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00961.html#a181e30653909f9d0e0afa92dd44d28ec\">  182</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00961.html#a181e30653909f9d0e0afa92dd44d28ec\">GetFaceSize</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _param.<a class=\"code hl_function\" href=\"a00921.html#a181e30653909f9d0e0afa92dd44d28ec\">GetFaceSize</a>(); }</div>\n-<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\">  183</span> </div>\n-<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00961.html#ab08dc4952f122dc09ce7e39daa3c56f1\">  185</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00961.html#ab08dc4952f122dc09ce7e39daa3c56f1\">GetRates</a>(<span class=\"keywordtype\">int</span> rates[]) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\">  186</span> </div>\n-<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00961.html#a5dfa6810f510fac1ec621fc9e6b530c4\">  188</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00961.html#a5dfa6810f510fac1ec621fc9e6b530c4\">IsUniform</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _isUniform; }</div>\n-<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\">  190</span> </div>\n-<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\">  192</span> </div>\n-<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\">  203</span> </div>\n-<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00961.html#a5e16c9ef594c36629fb3fb0955101db6\">  205</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00961.html#a5e16c9ef594c36629fb3fb0955101db6\">GetNumCoords</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _numInteriorPoints + _numBoundaryPoints; }</div>\n-<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\">  206</span> </div>\n-<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00961.html#a3f642ed70a22d6d9d3d2fe79029653f5\">  208</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00961.html#a3f642ed70a22d6d9d3d2fe79029653f5\">GetCoordStride</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _coordStride; }</div>\n-<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\">  209</span> </div>\n-<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00961.html#a23a949704d2705159dd4fe15299f4308\">  211</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00961.html#a23a949704d2705159dd4fe15299f4308\">GetNumBoundaryCoords</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _numBoundaryPoints; }</div>\n-<div class=\"line\"><a id=\"l00212\" name=\"l00212\"></a><span class=\"lineno\">  212</span> </div>\n-<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00961.html#a95bd158ec25b0697574bfda5d1397c63\">  214</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00961.html#a95bd158ec25b0697574bfda5d1397c63\">GetNumInteriorCoords</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _numInteriorPoints; }</div>\n-<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\">  215</span> </div>\n-<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00961.html#a49852dfe24985b64fe13d3ef589fb8b2\">  218</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00961.html#a49852dfe24985b64fe13d3ef589fb8b2\">GetNumEdgeCoords</a>(<span class=\"keywordtype\">int</span> edge)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _outerRates[edge] - 1; }</div>\n-<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\">  219</span> </div>\n-<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\">  221</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\">  222</span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00961.html#a6087a536754ca9dc75010f34f55b5811\">GetCoords</a>(REAL coordTuples[]) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\">  223</span> </div>\n-<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\">  225</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00961.html#aab7f4c322b4b552c5abcf2e3496de60c\">  226</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00961.html#aab7f4c322b4b552c5abcf2e3496de60c\">GetBoundaryCoords</a>(REAL coordTuples[]) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\">  227</span> </div>\n-<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\">  229</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00961.html#a539f9a4fad8037e34e12ad9454f70ba1\">  230</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00961.html#a539f9a4fad8037e34e12ad9454f70ba1\">GetInteriorCoords</a>(REAL coordTuples[]) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\">  231</span> </div>\n-<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\">  233</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\">  234</span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00961.html#a981c6b6a9293adc992ee7f899a22707d\">GetVertexCoord</a>(<span class=\"keywordtype\">int</span> vertex, REAL coordTuples[]) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\">  235</span> </div>\n-<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\">  238</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00961.html#aefe76150c0f45fa43a4211b9f4cb4bc2\">  239</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00961.html#aefe76150c0f45fa43a4211b9f4cb4bc2\">GetEdgeCoords</a>(<span class=\"keywordtype\">int</span> edge,  REAL coordTuples[]) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\">  241</span> </div>\n-<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\">  243</span> </div>\n-<div class=\"line\"><a id=\"l00253\" name=\"l00253\"></a><span class=\"lineno\">  253</span> </div>\n-<div class=\"line\"><a id=\"l00255\" name=\"l00255\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00961.html#a8f84862ac65dcdc8cd9063b0264b711f\">  255</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00961.html#a8f84862ac65dcdc8cd9063b0264b711f\">GetNumFacets</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _numFacets; }</div>\n-<div class=\"line\"><a id=\"l00256\" name=\"l00256\"></a><span class=\"lineno\">  256</span> </div>\n-<div class=\"line\"><a id=\"l00258\" name=\"l00258\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00961.html#a671621e55bfbc48db77919d5fd31744f\">  258</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00961.html#a671621e55bfbc48db77919d5fd31744f\">GetFacetSize</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _facetSize; }</div>\n-<div class=\"line\"><a id=\"l00259\" name=\"l00259\"></a><span class=\"lineno\">  259</span> </div>\n-<div class=\"line\"><a id=\"l00261\" name=\"l00261\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00961.html#a54b068769e4e728e78528f9bdde25b86\">  261</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00961.html#a54b068769e4e728e78528f9bdde25b86\">GetFacetStride</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _facetStride; }</div>\n-<div class=\"line\"><a id=\"l00262\" name=\"l00262\"></a><span class=\"lineno\">  262</span> </div>\n-<div class=\"line\"><a id=\"l00264\" name=\"l00264\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00961.html#a8deec91fff8094f942051dc22769402e\">  264</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00961.html#a8deec91fff8094f942051dc22769402e\">GetFacets</a>(<span class=\"keywordtype\">int</span> facetTuples[]) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00266\" name=\"l00266\"></a><span class=\"lineno\">  266</span> </div>\n-<div class=\"line\"><a id=\"l00268\" name=\"l00268\"></a><span class=\"lineno\">  268</span> </div>\n-<div class=\"line\"><a id=\"l00283\" name=\"l00283\"></a><span class=\"lineno\">  283</span> </div>\n-<div class=\"line\"><a id=\"l00285\" name=\"l00285\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00961.html#a621ab2f30043ff7f4ecdad9e64a73173\">  285</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00961.html#a621ab2f30043ff7f4ecdad9e64a73173\">TransformFacetCoordIndices</a>(<span class=\"keywordtype\">int</span> facetTuples[], <span class=\"keywordtype\">int</span> commonOffset);</div>\n-<div class=\"line\"><a id=\"l00286\" name=\"l00286\"></a><span class=\"lineno\">  286</span> </div>\n-<div class=\"line\"><a id=\"l00289\" name=\"l00289\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00961.html#a666de589b64bea493b1d23446a1ddb49\">  289</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00961.html#a666de589b64bea493b1d23446a1ddb49\">TransformFacetCoordIndices</a>(<span class=\"keywordtype\">int</span> facetTuples[],</div>\n-<div class=\"line\"><a id=\"l00290\" name=\"l00290\"></a><span class=\"lineno\">  290</span>                                    <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> boundaryIndices[],</div>\n-<div class=\"line\"><a id=\"l00291\" name=\"l00291\"></a><span class=\"lineno\">  291</span>                                    <span class=\"keywordtype\">int</span>       interiorOffset);</div>\n-<div class=\"line\"><a id=\"l00292\" name=\"l00292\"></a><span class=\"lineno\">  292</span> </div>\n-<div class=\"line\"><a id=\"l00294\" name=\"l00294\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00961.html#a2651a3405daf40d1ffbd47c57233d3c3\">  294</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00961.html#a2651a3405daf40d1ffbd47c57233d3c3\">TransformFacetCoordIndices</a>(<span class=\"keywordtype\">int</span> facetTuples[],</div>\n-<div class=\"line\"><a id=\"l00295\" name=\"l00295\"></a><span class=\"lineno\">  295</span>                                    <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> boundaryIndices[],</div>\n-<div class=\"line\"><a id=\"l00296\" name=\"l00296\"></a><span class=\"lineno\">  296</span>                                    <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> interiorIndices[]);</div>\n-<div class=\"line\"><a id=\"l00298\" name=\"l00298\"></a><span class=\"lineno\">  298</span> </div>\n-<div class=\"line\"><a id=\"l00299\" name=\"l00299\"></a><span class=\"lineno\">  299</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00300\" name=\"l00300\"></a><span class=\"lineno\">  300</span>    <span class=\"comment\">//  Private initialization methods:</span></div>\n-<div class=\"line\"><a id=\"l00301\" name=\"l00301\"></a><span class=\"lineno\">  301</span>    <span class=\"keywordtype\">bool</span> validateArguments(<a class=\"code hl_class\" href=\"a00921.html\">Parameterization</a> <span class=\"keyword\">const</span> &amp; p,</div>\n-<div class=\"line\"><a id=\"l00302\" name=\"l00302\"></a><span class=\"lineno\">  302</span>                    <span class=\"keywordtype\">int</span> nRates, <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> rates[], <a class=\"code hl_class\" href=\"a00965.html\">Options</a> <span class=\"keyword\">const</span> &amp; options);</div>\n-<div class=\"line\"><a id=\"l00303\" name=\"l00303\"></a><span class=\"lineno\">  303</span> </div>\n-<div class=\"line\"><a id=\"l00304\" name=\"l00304\"></a><span class=\"lineno\">  304</span>    <span class=\"keywordtype\">void</span> initialize(<a class=\"code hl_class\" href=\"a00921.html\">Parameterization</a> <span class=\"keyword\">const</span> &amp; p,</div>\n-<div class=\"line\"><a id=\"l00305\" name=\"l00305\"></a><span class=\"lineno\">  305</span>                    <span class=\"keywordtype\">int</span> nRates, <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> rates[], <a class=\"code hl_class\" href=\"a00965.html\">Options</a> <span class=\"keyword\">const</span> &amp; options);</div>\n-<div class=\"line\"><a id=\"l00306\" name=\"l00306\"></a><span class=\"lineno\">  306</span> </div>\n-<div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\">  307</span>    <span class=\"keywordtype\">void</span> initializeDefaults();</div>\n-<div class=\"line\"><a id=\"l00308\" name=\"l00308\"></a><span class=\"lineno\">  308</span>    <span class=\"keywordtype\">int</span>  initializeRates(<span class=\"keywordtype\">int</span> nRates, <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> rates[]);</div>\n-<div class=\"line\"><a id=\"l00309\" name=\"l00309\"></a><span class=\"lineno\">  309</span>    <span class=\"keywordtype\">void</span> initializeInventoryForParamTri(<span class=\"keywordtype\">int</span> sumOfOuterRates);</div>\n-<div class=\"line\"><a id=\"l00310\" name=\"l00310\"></a><span class=\"lineno\">  310</span>    <span class=\"keywordtype\">void</span> initializeInventoryForParamQuad(<span class=\"keywordtype\">int</span> sumOfOuterRates);</div>\n-<div class=\"line\"><a id=\"l00311\" name=\"l00311\"></a><span class=\"lineno\">  311</span>    <span class=\"keywordtype\">void</span> initializeInventoryForParamQPoly(<span class=\"keywordtype\">int</span> sumOfOuterRates);</div>\n-<div class=\"line\"><a id=\"l00312\" name=\"l00312\"></a><span class=\"lineno\">  312</span> </div>\n-<div class=\"line\"><a id=\"l00313\" name=\"l00313\"></a><span class=\"lineno\">  313</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00314\" name=\"l00314\"></a><span class=\"lineno\">  314</span>    <span class=\"comment\">//  Private members:</span></div>\n-<div class=\"line\"><a id=\"l00315\" name=\"l00315\"></a><span class=\"lineno\">  315</span>    <a class=\"code hl_class\" href=\"a00921.html\">Parameterization</a> _param;</div>\n-<div class=\"line\"><a id=\"l00316\" name=\"l00316\"></a><span class=\"lineno\">  316</span> </div>\n-<div class=\"line\"><a id=\"l00317\" name=\"l00317\"></a><span class=\"lineno\">  317</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> _isValid       :  1;</div>\n-<div class=\"line\"><a id=\"l00318\" name=\"l00318\"></a><span class=\"lineno\">  318</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> _isUniform     :  1;</div>\n-<div class=\"line\"><a id=\"l00319\" name=\"l00319\"></a><span class=\"lineno\">  319</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> _triangulate   :  1;</div>\n-<div class=\"line\"><a id=\"l00320\" name=\"l00320\"></a><span class=\"lineno\">  320</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> _singleFace    :  1;</div>\n-<div class=\"line\"><a id=\"l00321\" name=\"l00321\"></a><span class=\"lineno\">  321</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> _segmentedFace :  1;</div>\n-<div class=\"line\"><a id=\"l00322\" name=\"l00322\"></a><span class=\"lineno\">  322</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> _triangleFan   :  1;</div>\n-<div class=\"line\"><a id=\"l00323\" name=\"l00323\"></a><span class=\"lineno\">  323</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> _splitQuad     :  1;</div>\n-<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\">  324</span> </div>\n-<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\">  325</span>    <span class=\"keywordtype\">short</span> _facetSize;</div>\n-<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\">  326</span>    <span class=\"keywordtype\">int</span>   _facetStride;</div>\n-<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\">  327</span>    <span class=\"keywordtype\">int</span>   _coordStride;</div>\n-<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\">  328</span> </div>\n-<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\">  329</span>    <span class=\"keywordtype\">int</span> _numGivenRates;</div>\n-<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\">  330</span>    <span class=\"keywordtype\">int</span> _numBoundaryPoints;</div>\n-<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\">  331</span>    <span class=\"keywordtype\">int</span> _numInteriorPoints;</div>\n-<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\">  332</span>    <span class=\"keywordtype\">int</span> _numFacets;</div>\n-<div class=\"line\"><a id=\"l00333\" name=\"l00333\"></a><span class=\"lineno\">  333</span> </div>\n-<div class=\"line\"><a id=\"l00334\" name=\"l00334\"></a><span class=\"lineno\">  334</span>    <span class=\"keywordtype\">int</span>  _innerRates[2];</div>\n-<div class=\"line\"><a id=\"l00335\" name=\"l00335\"></a><span class=\"lineno\">  335</span>    <span class=\"keywordtype\">int</span>* _outerRates;</div>\n-<div class=\"line\"><a id=\"l00336\" name=\"l00336\"></a><span class=\"lineno\">  336</span>    <span class=\"keywordtype\">int</span>  _outerRatesLocal[4];</div>\n-<div class=\"line\"><a id=\"l00337\" name=\"l00337\"></a><span class=\"lineno\">  337</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00338\" name=\"l00338\"></a><span class=\"lineno\">  338</span> </div>\n-<div class=\"line\"><a id=\"l00339\" name=\"l00339\"></a><span class=\"lineno\">  339</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00340\" name=\"l00340\"></a><span class=\"lineno\">  340</span><span class=\"comment\">//  Inline implementations:</span></div>\n-<div class=\"line\"><a id=\"l00341\" name=\"l00341\"></a><span class=\"lineno\">  341</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00342\" name=\"l00342\"></a><span class=\"lineno\">  342</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a00965.html\">Tessellation::Options</a> &amp;</div>\n-<div class=\"foldopen\" id=\"foldopen00343\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00343\" name=\"l00343\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00965.html#a98820ec764e776bd556a9b80b872b78f\">  343</a></span><a class=\"code hl_function\" href=\"a00965.html#ae2ec197b850e8bd12878cc67a503a07a\">Tessellation::Options::PreserveQuads</a>(<span class=\"keywordtype\">bool</span> on) {</div>\n-<div class=\"line\"><a id=\"l00344\" name=\"l00344\"></a><span class=\"lineno\">  344</span>    _preserveQuads = on;</div>\n-<div class=\"line\"><a id=\"l00345\" name=\"l00345\"></a><span class=\"lineno\">  345</span>    <span class=\"keywordflow\">return</span> *<span class=\"keyword\">this</span>;</div>\n-<div class=\"line\"><a id=\"l00346\" name=\"l00346\"></a><span class=\"lineno\">  346</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00347\" name=\"l00347\"></a><span class=\"lineno\">  347</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a00965.html\">Tessellation::Options</a> &amp;</div>\n-<div class=\"foldopen\" id=\"foldopen00348\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00348\" name=\"l00348\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00965.html#a50c6e039e8278312e95c1dd94b8478e0\">  348</a></span><a class=\"code hl_function\" href=\"a00965.html#a50c6e039e8278312e95c1dd94b8478e0\">Tessellation::Options::SetFacetSize</a>(<span class=\"keywordtype\">int</span> numIndices) {</div>\n-<div class=\"line\"><a id=\"l00349\" name=\"l00349\"></a><span class=\"lineno\">  349</span>    _facetSize4 = (numIndices == 4);</div>\n-<div class=\"line\"><a id=\"l00350\" name=\"l00350\"></a><span class=\"lineno\">  350</span>    <span class=\"keywordflow\">return</span> *<span class=\"keyword\">this</span>;</div>\n-<div class=\"line\"><a id=\"l00351\" name=\"l00351\"></a><span class=\"lineno\">  351</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00352\" name=\"l00352\"></a><span class=\"lineno\">  352</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a00965.html\">Tessellation::Options</a> &amp;</div>\n-<div class=\"foldopen\" id=\"foldopen00353\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00353\" name=\"l00353\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00965.html#ad6a995daa3f819edeeaf0a8c1aeb8b6a\">  353</a></span><a class=\"code hl_function\" href=\"a00965.html#ad6a995daa3f819edeeaf0a8c1aeb8b6a\">Tessellation::Options::SetFacetStride</a>(<span class=\"keywordtype\">int</span> stride)  {</div>\n-<div class=\"line\"><a id=\"l00354\" name=\"l00354\"></a><span class=\"lineno\">  354</span>    _facetStride = (short) stride;</div>\n-<div class=\"line\"><a id=\"l00355\" name=\"l00355\"></a><span class=\"lineno\">  355</span>    <span class=\"keywordflow\">return</span> *<span class=\"keyword\">this</span>;</div>\n-<div class=\"line\"><a id=\"l00356\" name=\"l00356\"></a><span class=\"lineno\">  356</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00357\" name=\"l00357\"></a><span class=\"lineno\">  357</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a00965.html\">Tessellation::Options</a> &amp;</div>\n-<div class=\"foldopen\" id=\"foldopen00358\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00358\" name=\"l00358\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00965.html#aa7688afdaece2c387e8963d634752aa6\">  358</a></span><a class=\"code hl_function\" href=\"a00965.html#aa7688afdaece2c387e8963d634752aa6\">Tessellation::Options::SetCoordStride</a>(<span class=\"keywordtype\">int</span> stride) {</div>\n-<div class=\"line\"><a id=\"l00359\" name=\"l00359\"></a><span class=\"lineno\">  359</span>    _coordStride = (short) stride;</div>\n-<div class=\"line\"><a id=\"l00360\" name=\"l00360\"></a><span class=\"lineno\">  360</span>    <span class=\"keywordflow\">return</span> *<span class=\"keyword\">this</span>;</div>\n-<div class=\"line\"><a id=\"l00361\" name=\"l00361\"></a><span class=\"lineno\">  361</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00362\" name=\"l00362\"></a><span class=\"lineno\">  362</span> </div>\n-<div class=\"line\"><a id=\"l00363\" name=\"l00363\"></a><span class=\"lineno\">  363</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00364\" name=\"l00364\"></a><span class=\"lineno\">  364</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span></div>\n-<div class=\"foldopen\" id=\"foldopen00365\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00365\" name=\"l00365\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00961.html#a981c6b6a9293adc992ee7f899a22707d\">  365</a></span><a class=\"code hl_function\" href=\"a00961.html#a981c6b6a9293adc992ee7f899a22707d\">Tessellation::GetVertexCoord</a>(<span class=\"keywordtype\">int</span> vertex, REAL coord[])<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00366\" name=\"l00366\"></a><span class=\"lineno\">  366</span>    _param.<a class=\"code hl_function\" href=\"a00921.html#a9cb32ed5657438f0a1b7f322b221dc75\">GetVertexCoord</a>(vertex, coord);</div>\n-<div class=\"line\"><a id=\"l00367\" name=\"l00367\"></a><span class=\"lineno\">  367</span>    <span class=\"keywordflow\">return</span> 1;</div>\n-<div class=\"line\"><a id=\"l00368\" name=\"l00368\"></a><span class=\"lineno\">  368</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00369\" name=\"l00369\"></a><span class=\"lineno\">  369</span> </div>\n-<div class=\"line\"><a id=\"l00370\" name=\"l00370\"></a><span class=\"lineno\">  370</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00371\" name=\"l00371\"></a><span class=\"lineno\">  371</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span></div>\n-<div class=\"foldopen\" id=\"foldopen00372\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00372\" name=\"l00372\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00961.html#a6087a536754ca9dc75010f34f55b5811\">  372</a></span><a class=\"code hl_function\" href=\"a00961.html#a6087a536754ca9dc75010f34f55b5811\">Tessellation::GetCoords</a>(REAL coordTuples[])<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00373\" name=\"l00373\"></a><span class=\"lineno\">  373</span>    <span class=\"keywordtype\">int</span> nCoords = <a class=\"code hl_function\" href=\"a00961.html#aab7f4c322b4b552c5abcf2e3496de60c\">GetBoundaryCoords</a>(coordTuples);</div>\n-<div class=\"line\"><a id=\"l00374\" name=\"l00374\"></a><span class=\"lineno\">  374</span>    nCoords += <a class=\"code hl_function\" href=\"a00961.html#a539f9a4fad8037e34e12ad9454f70ba1\">GetInteriorCoords</a>(coordTuples + nCoords * _coordStride);</div>\n-<div class=\"line\"><a id=\"l00375\" name=\"l00375\"></a><span class=\"lineno\">  375</span>    <span class=\"keywordflow\">return</span> nCoords;</div>\n-<div class=\"line\"><a id=\"l00376\" name=\"l00376\"></a><span class=\"lineno\">  376</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00377\" name=\"l00377\"></a><span class=\"lineno\">  377</span> </div>\n-<div class=\"line\"><a id=\"l00378\" name=\"l00378\"></a><span class=\"lineno\">  378</span>} <span class=\"comment\">// end namespace Bfr</span></div>\n-<div class=\"line\"><a id=\"l00379\" name=\"l00379\"></a><span class=\"lineno\">  379</span> </div>\n-<div class=\"line\"><a id=\"l00380\" name=\"l00380\"></a><span class=\"lineno\">  380</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00381\" name=\"l00381\"></a><span class=\"lineno\">  381</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00382\" name=\"l00382\"></a><span class=\"lineno\">  382</span> </div>\n-<div class=\"line\"><a id=\"l00383\" name=\"l00383\"></a><span class=\"lineno\">  383</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l00384\" name=\"l00384\"></a><span class=\"lineno\">  384</span> </div>\n-<div class=\"line\"><a id=\"l00385\" name=\"l00385\"></a><span class=\"lineno\">  385</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_BFR_TESSELLATION */</span><span class=\"preprocessor\"></span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa00921_html\"><div class=\"ttname\"><a href=\"a00921.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization</a></div><div class=\"ttdoc\">Simple class defining the 2D parameterization of a face.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00719_source.html#l00052\">parameterization.h:52</a></div></div>\n-<div class=\"ttc\" id=\"aa00921_html_a181e30653909f9d0e0afa92dd44d28ec\"><div class=\"ttname\"><a href=\"a00921.html#a181e30653909f9d0e0afa92dd44d28ec\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization::GetFaceSize</a></div><div class=\"ttdeci\">int GetFaceSize() const</div><div class=\"ttdoc\">Returns the size (number of vertices) of the corresponding face.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00719_source.html#l00101\">parameterization.h:101</a></div></div>\n-<div class=\"ttc\" id=\"aa00921_html_a9cb32ed5657438f0a1b7f322b221dc75\"><div class=\"ttname\"><a href=\"a00921.html#a9cb32ed5657438f0a1b7f322b221dc75\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization::GetVertexCoord</a></div><div class=\"ttdeci\">void GetVertexCoord(int vertexIndex, REAL uvCoord[2]) const</div><div class=\"ttdoc\">Returns the (u,v) coordinate of a given vertex.</div></div>\n-<div class=\"ttc\" id=\"aa00961_html\"><div class=\"ttname\"><a href=\"a00961.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation</a></div><div class=\"ttdoc\">Encapsulates a specific tessellation pattern of a Parameterization.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00722_source.html#l00051\">tessellation.h:51</a></div></div>\n-<div class=\"ttc\" id=\"aa00961_html_a181e30653909f9d0e0afa92dd44d28ec\"><div class=\"ttname\"><a href=\"a00961.html#a181e30653909f9d0e0afa92dd44d28ec\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::GetFaceSize</a></div><div class=\"ttdeci\">int GetFaceSize() const</div><div class=\"ttdoc\">Return the size of the face.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00722_source.html#l00182\">tessellation.h:182</a></div></div>\n-<div class=\"ttc\" id=\"aa00961_html_a23a949704d2705159dd4fe15299f4308\"><div class=\"ttname\"><a href=\"a00961.html#a23a949704d2705159dd4fe15299f4308\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::GetNumBoundaryCoords</a></div><div class=\"ttdeci\">int GetNumBoundaryCoords() const</div><div class=\"ttdoc\">Return the number of boundary coordinates.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00722_source.html#l00211\">tessellation.h:211</a></div></div>\n-<div class=\"ttc\" id=\"aa00961_html_a23cbee9f350de81b12dea4bc69ba023f\"><div class=\"ttname\"><a href=\"a00961.html#a23cbee9f350de81b12dea4bc69ba023f\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::~Tessellation</a></div><div class=\"ttdeci\">~Tessellation()</div></div>\n-<div class=\"ttc\" id=\"aa00961_html_a2651a3405daf40d1ffbd47c57233d3c3\"><div class=\"ttname\"><a href=\"a00961.html#a2651a3405daf40d1ffbd47c57233d3c3\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::TransformFacetCoordIndices</a></div><div class=\"ttdeci\">void TransformFacetCoordIndices(int facetTuples[], int const boundaryIndices[], int const interiorIndices[])</div><div class=\"ttdoc\">Reassign all facet coordinate indices.</div></div>\n-<div class=\"ttc\" id=\"aa00961_html_a3f642ed70a22d6d9d3d2fe79029653f5\"><div class=\"ttname\"><a href=\"a00961.html#a3f642ed70a22d6d9d3d2fe79029653f5\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::GetCoordStride</a></div><div class=\"ttdeci\">int GetCoordStride() const</div><div class=\"ttdoc\">Return the number of elements between each coordinate.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00722_source.html#l00208\">tessellation.h:208</a></div></div>\n-<div class=\"ttc\" id=\"aa00961_html_a49852dfe24985b64fe13d3ef589fb8b2\"><div class=\"ttname\"><a href=\"a00961.html#a49852dfe24985b64fe13d3ef589fb8b2\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::GetNumEdgeCoords</a></div><div class=\"ttdeci\">int GetNumEdgeCoords(int edge) const</div><div class=\"ttdoc\">Return the number of coordinates within a given edge (excluding those at its end vertices)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00722_source.html#l00218\">tessellation.h:218</a></div></div>\n-<div class=\"ttc\" id=\"aa00961_html_a539f9a4fad8037e34e12ad9454f70ba1\"><div class=\"ttname\"><a href=\"a00961.html#a539f9a4fad8037e34e12ad9454f70ba1\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::GetInteriorCoords</a></div><div class=\"ttdeci\">int GetInteriorCoords(REAL coordTuples[]) const</div><div class=\"ttdoc\">Retrieve the coordinates for the boundary.</div></div>\n-<div class=\"ttc\" id=\"aa00961_html_a54b068769e4e728e78528f9bdde25b86\"><div class=\"ttname\"><a href=\"a00961.html#a54b068769e4e728e78528f9bdde25b86\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::GetFacetStride</a></div><div class=\"ttdeci\">int GetFacetStride() const</div><div class=\"ttdoc\">Return the number of elements between each facet.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00722_source.html#l00261\">tessellation.h:261</a></div></div>\n-<div class=\"ttc\" id=\"aa00961_html_a5dfa6810f510fac1ec621fc9e6b530c4\"><div class=\"ttname\"><a href=\"a00961.html#a5dfa6810f510fac1ec621fc9e6b530c4\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::IsUniform</a></div><div class=\"ttdeci\">bool IsUniform() const</div><div class=\"ttdoc\">Return if the pattern is uniform.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00722_source.html#l00188\">tessellation.h:188</a></div></div>\n-<div class=\"ttc\" id=\"aa00961_html_a5e16c9ef594c36629fb3fb0955101db6\"><div class=\"ttname\"><a href=\"a00961.html#a5e16c9ef594c36629fb3fb0955101db6\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::GetNumCoords</a></div><div class=\"ttdeci\">int GetNumCoords() const</div><div class=\"ttdoc\">Return the number of coordinates in the entire pattern.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00722_source.html#l00205\">tessellation.h:205</a></div></div>\n-<div class=\"ttc\" id=\"aa00961_html_a6087a536754ca9dc75010f34f55b5811\"><div class=\"ttname\"><a href=\"a00961.html#a6087a536754ca9dc75010f34f55b5811\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::GetCoords</a></div><div class=\"ttdeci\">int GetCoords(REAL coordTuples[]) const</div><div class=\"ttdoc\">Retrieve the coordinates for the entire pattern.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00722_source.html#l00372\">tessellation.h:372</a></div></div>\n-<div class=\"ttc\" id=\"aa00961_html_a621ab2f30043ff7f4ecdad9e64a73173\"><div class=\"ttname\"><a href=\"a00961.html#a621ab2f30043ff7f4ecdad9e64a73173\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::TransformFacetCoordIndices</a></div><div class=\"ttdeci\">void TransformFacetCoordIndices(int facetTuples[], int commonOffset)</div><div class=\"ttdoc\">Apply a common offset to all facet coordinate indices.</div></div>\n-<div class=\"ttc\" id=\"aa00961_html_a65ee652b3607c97bb2b04a64c55d7f99\"><div class=\"ttname\"><a href=\"a00961.html#a65ee652b3607c97bb2b04a64c55d7f99\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::Tessellation</a></div><div class=\"ttdeci\">Tessellation(Parameterization const &amp;p, int numRates, int const rates[], Options const &amp;options=Options())</div><div class=\"ttdoc\">General constructor providing multiple tessellation rates for a non-uniform tessellation.</div></div>\n-<div class=\"ttc\" id=\"aa00961_html_a66515298a982aab202e1e3e537c7d324\"><div class=\"ttname\"><a href=\"a00961.html#a66515298a982aab202e1e3e537c7d324\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::GetParameterization</a></div><div class=\"ttdeci\">Parameterization GetParameterization() const</div><div class=\"ttdoc\">Return the Parameterization.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00722_source.html#l00179\">tessellation.h:179</a></div></div>\n-<div class=\"ttc\" id=\"aa00961_html_a666de589b64bea493b1d23446a1ddb49\"><div class=\"ttname\"><a href=\"a00961.html#a666de589b64bea493b1d23446a1ddb49\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::TransformFacetCoordIndices</a></div><div class=\"ttdeci\">void TransformFacetCoordIndices(int facetTuples[], int const boundaryIndices[], int interiorOffset)</div><div class=\"ttdoc\">Reassign indices of boundary coordinates while offseting those of interior coordinates.</div></div>\n-<div class=\"ttc\" id=\"aa00961_html_a671621e55bfbc48db77919d5fd31744f\"><div class=\"ttname\"><a href=\"a00961.html#a671621e55bfbc48db77919d5fd31744f\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::GetFacetSize</a></div><div class=\"ttdeci\">int GetFacetSize() const</div><div class=\"ttdoc\">Return the number of indices assigned to each facet.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00722_source.html#l00258\">tessellation.h:258</a></div></div>\n-<div class=\"ttc\" id=\"aa00961_html_a7a3e89992f3cc492804ec9bc184a1674\"><div class=\"ttname\"><a href=\"a00961.html#a7a3e89992f3cc492804ec9bc184a1674\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::Tessellation</a></div><div class=\"ttdeci\">Tessellation()=delete</div><div class=\"ttdoc\">Default construction is unavailable.</div></div>\n-<div class=\"ttc\" id=\"aa00961_html_a7f0af117d53701f7ca6e3eb2368b89bb\"><div class=\"ttname\"><a href=\"a00961.html#a7f0af117d53701f7ca6e3eb2368b89bb\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::Tessellation</a></div><div class=\"ttdeci\">Tessellation(Parameterization const &amp;p, int uniformRate, Options const &amp;options=Options())</div><div class=\"ttdoc\">Simple constructor providing a single uniform tessellation rate.</div></div>\n-<div class=\"ttc\" id=\"aa00961_html_a8deec91fff8094f942051dc22769402e\"><div class=\"ttname\"><a href=\"a00961.html#a8deec91fff8094f942051dc22769402e\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::GetFacets</a></div><div class=\"ttdeci\">int GetFacets(int facetTuples[]) const</div><div class=\"ttdoc\">Retrieve the facet indices for the entire pattern.</div></div>\n-<div class=\"ttc\" id=\"aa00961_html_a8f84862ac65dcdc8cd9063b0264b711f\"><div class=\"ttname\"><a href=\"a00961.html#a8f84862ac65dcdc8cd9063b0264b711f\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::GetNumFacets</a></div><div class=\"ttdeci\">int GetNumFacets() const</div><div class=\"ttdoc\">Return the number of facets in the entire pattern.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00722_source.html#l00255\">tessellation.h:255</a></div></div>\n-<div class=\"ttc\" id=\"aa00961_html_a95bd158ec25b0697574bfda5d1397c63\"><div class=\"ttname\"><a href=\"a00961.html#a95bd158ec25b0697574bfda5d1397c63\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::GetNumInteriorCoords</a></div><div class=\"ttdeci\">int GetNumInteriorCoords() const</div><div class=\"ttdoc\">Return the number of interior coordinates.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00722_source.html#l00214\">tessellation.h:214</a></div></div>\n-<div class=\"ttc\" id=\"aa00961_html_a981c6b6a9293adc992ee7f899a22707d\"><div class=\"ttname\"><a href=\"a00961.html#a981c6b6a9293adc992ee7f899a22707d\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::GetVertexCoord</a></div><div class=\"ttdeci\">int GetVertexCoord(int vertex, REAL coordTuples[]) const</div><div class=\"ttdoc\">Retrieve the coordinate for a given vertex of the face.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00722_source.html#l00365\">tessellation.h:365</a></div></div>\n-<div class=\"ttc\" id=\"aa00961_html_aab7f4c322b4b552c5abcf2e3496de60c\"><div class=\"ttname\"><a href=\"a00961.html#aab7f4c322b4b552c5abcf2e3496de60c\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::GetBoundaryCoords</a></div><div class=\"ttdeci\">int GetBoundaryCoords(REAL coordTuples[]) const</div><div class=\"ttdoc\">Retrieve the coordinates for the boundary.</div></div>\n-<div class=\"ttc\" id=\"aa00961_html_ab03191ef31cf0d8b0bcc44f226804e87\"><div class=\"ttname\"><a href=\"a00961.html#ab03191ef31cf0d8b0bcc44f226804e87\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::Tessellation</a></div><div class=\"ttdeci\">Tessellation(Tessellation const &amp;)=delete</div></div>\n-<div class=\"ttc\" id=\"aa00961_html_ab08dc4952f122dc09ce7e39daa3c56f1\"><div class=\"ttname\"><a href=\"a00961.html#ab08dc4952f122dc09ce7e39daa3c56f1\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::GetRates</a></div><div class=\"ttdeci\">int GetRates(int rates[]) const</div><div class=\"ttdoc\">Retrieve the rates assigned.</div></div>\n-<div class=\"ttc\" id=\"aa00961_html_ac532c4b500b1a85ea22217f2c65a70ed\"><div class=\"ttname\"><a href=\"a00961.html#ac532c4b500b1a85ea22217f2c65a70ed\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::IsValid</a></div><div class=\"ttdeci\">bool IsValid() const</div><div class=\"ttdoc\">Return true if correctly initialized.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00722_source.html#l00162\">tessellation.h:162</a></div></div>\n-<div class=\"ttc\" id=\"aa00961_html_add7bb6250635b7a713a1d2f5424163de\"><div class=\"ttname\"><a href=\"a00961.html#add7bb6250635b7a713a1d2f5424163de\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::operator=</a></div><div class=\"ttdeci\">Tessellation &amp; operator=(Tessellation const &amp;)=delete</div></div>\n-<div class=\"ttc\" id=\"aa00961_html_aefe76150c0f45fa43a4211b9f4cb4bc2\"><div class=\"ttname\"><a href=\"a00961.html#aefe76150c0f45fa43a4211b9f4cb4bc2\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::GetEdgeCoords</a></div><div class=\"ttdeci\">int GetEdgeCoords(int edge, REAL coordTuples[]) const</div><div class=\"ttdoc\">Retrieve the coordinates for a given edge of the face (excluding those at its end vertices)</div></div>\n-<div class=\"ttc\" id=\"aa00965_html\"><div class=\"ttname\"><a href=\"a00965.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::Options</a></div><div class=\"ttdoc\">Options configure a Tessellation to specify the nature of both its results and the structure of the c...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00722_source.html#l00065\">tessellation.h:65</a></div></div>\n-<div class=\"ttc\" id=\"aa00965_html_a28d39a844c3a37ab61d32ab7c6352f09\"><div class=\"ttname\"><a href=\"a00965.html#a28d39a844c3a37ab61d32ab7c6352f09\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::Options::Options</a></div><div class=\"ttdeci\">Options()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00722_source.html#l00067\">tessellation.h:67</a></div></div>\n-<div class=\"ttc\" id=\"aa00965_html_a3f642ed70a22d6d9d3d2fe79029653f5\"><div class=\"ttname\"><a href=\"a00965.html#a3f642ed70a22d6d9d3d2fe79029653f5\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::Options::GetCoordStride</a></div><div class=\"ttdeci\">int GetCoordStride() const</div><div class=\"ttdoc\">Return the stride between (u,v) pairs.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00722_source.html#l00090\">tessellation.h:90</a></div></div>\n-<div class=\"ttc\" id=\"aa00965_html_a50c6e039e8278312e95c1dd94b8478e0\"><div class=\"ttname\"><a href=\"a00965.html#a50c6e039e8278312e95c1dd94b8478e0\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::Options::SetFacetSize</a></div><div class=\"ttdeci\">Options &amp; SetFacetSize(int numIndices)</div><div class=\"ttdoc\">Assign the number of indices per facet (must be 3 or 4, default is 3)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00722_source.html#l00348\">tessellation.h:348</a></div></div>\n-<div class=\"ttc\" id=\"aa00965_html_a54b068769e4e728e78528f9bdde25b86\"><div class=\"ttname\"><a href=\"a00965.html#a54b068769e4e728e78528f9bdde25b86\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::Options::GetFacetStride</a></div><div class=\"ttdeci\">int GetFacetStride() const</div><div class=\"ttdoc\">Return the stride between facets.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00722_source.html#l00085\">tessellation.h:85</a></div></div>\n-<div class=\"ttc\" id=\"aa00965_html_a671621e55bfbc48db77919d5fd31744f\"><div class=\"ttname\"><a href=\"a00965.html#a671621e55bfbc48db77919d5fd31744f\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::Options::GetFacetSize</a></div><div class=\"ttdeci\">int GetFacetSize() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00722_source.html#l00080\">tessellation.h:80</a></div></div>\n-<div class=\"ttc\" id=\"aa00965_html_aa7688afdaece2c387e8963d634752aa6\"><div class=\"ttname\"><a href=\"a00965.html#aa7688afdaece2c387e8963d634752aa6\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::Options::SetCoordStride</a></div><div class=\"ttdeci\">Options &amp; SetCoordStride(int stride)</div><div class=\"ttdoc\">Assign the stride between (u,v) pairs (default is 2)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00722_source.html#l00358\">tessellation.h:358</a></div></div>\n-<div class=\"ttc\" id=\"aa00965_html_ad6a995daa3f819edeeaf0a8c1aeb8b6a\"><div class=\"ttname\"><a href=\"a00965.html#ad6a995daa3f819edeeaf0a8c1aeb8b6a\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::Options::SetFacetStride</a></div><div class=\"ttdeci\">Options &amp; SetFacetStride(int stride)</div><div class=\"ttdoc\">Assign the stride between facets (default is facet size)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00722_source.html#l00353\">tessellation.h:353</a></div></div>\n-<div class=\"ttc\" id=\"aa00965_html_ae2ec197b850e8bd12878cc67a503a07a\"><div class=\"ttname\"><a href=\"a00965.html#ae2ec197b850e8bd12878cc67a503a07a\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::Options::PreserveQuads</a></div><div class=\"ttdeci\">bool PreserveQuads() const</div><div class=\"ttdoc\">Return if preservation of quads is set.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00722_source.html#l00074\">tessellation.h:74</a></div></div>\n+<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#if defined(__APPLE__)</span></div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">    #include &quot;TargetConditionals.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">    #if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">        #include &lt;OpenGLES/ES2/gl.h&gt;</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">    #else</span></div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"preprocessor\">        #if defined(OSD_USES_GLEW)</span></div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"preprocessor\">            #include &lt;GL/glew.h&gt;</span></div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"preprocessor\">        #else</span></div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"preprocessor\">            #include &lt;OpenGL/gl3.h&gt;</span></div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"preprocessor\">        #endif</span></div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"preprocessor\">    #endif</span></div>\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span><span class=\"preprocessor\">#elif defined(ANDROID)</span></div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"preprocessor\">    #include &lt;GLES2/gl2.h&gt;</span></div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"preprocessor\">#else</span></div>\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span><span class=\"preprocessor\">    #if defined(_WIN32)</span></div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"preprocessor\">        #define WIN32_LEAN_AND_MEAN</span></div>\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span><span class=\"preprocessor\">        #include &lt;windows.h&gt;</span></div>\n+<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span><span class=\"preprocessor\">    #endif</span></div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span><span class=\"preprocessor\">    #if defined(OSD_USES_GLEW)</span></div>\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span><span class=\"preprocessor\">        #include &lt;GL/glew.h&gt;</span></div>\n+<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span><span class=\"preprocessor\">    #else</span></div>\n+<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span><span class=\"preprocessor\">        #include &lt;GL/gl.h&gt;</span></div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span><span class=\"preprocessor\">    #endif</span></div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span><span class=\"preprocessor\">#endif</span></div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span> </div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_OPENGL_H</span></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_fa5edef2a780a73fbfb6a11f1af88ceb.html\">bfr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00722.html\">tessellation.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00722.html\">opengl.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-tessellation.h\n+opengl.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2021 Pixar\n+2// Copyright 2013 Pixar\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -24,367 +24,40 @@\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n 24\n-25#ifndef OPENSUBDIV3_BFR_TESSELLATION_H\n-26#define OPENSUBDIV3_BFR_TESSELLATION_H\n+25#ifndef OPENSUBDIV3_OSD_OPENGL_H\n+26#define OPENSUBDIV3_OSD_OPENGL_H\n 27\n-28#include \"../version.h\"\n-29\n-30#include \"../bfr/parameterization.h\"\n-31\n-32namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-33namespace OPENSUBDIV_VERSION {\n-34\n-35namespace Bfr {\n-36\n-_\b5_\b1class _\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn {\n-52public:\n-_\b6_\b5 class _\bO_\bp_\bt_\bi_\bo_\bn_\bs {\n-66 public:\n-_\b6_\b7 _\bO_\bp_\bt_\bi_\bo_\bn_\bs() : _preserveQuads(false), _facetSize4(false),\n-68 _coordStride(0), _facetStride(0) { }\n-69\n-72 _\bO_\bp_\bt_\bi_\bo_\bn_\bs & _\bP_\br_\be_\bs_\be_\br_\bv_\be_\bQ_\bu_\ba_\bd_\bs(bool on);\n-_\b7_\b4 bool _\bP_\br_\be_\bs_\be_\br_\bv_\be_\bQ_\bu_\ba_\bd_\bs() const { return _preserveQuads; }\n-75\n-78 _\bO_\bp_\bt_\bi_\bo_\bn_\bs & _\bS_\be_\bt_\bF_\ba_\bc_\be_\bt_\bS_\bi_\bz_\be(int numIndices);\n-79 // @brief Return the number of indices per facet\n-_\b8_\b0 int _\bG_\be_\bt_\bF_\ba_\bc_\be_\bt_\bS_\bi_\bz_\be() const { return 3 + (int)_facetSize4; }\n-81\n-83 _\bO_\bp_\bt_\bi_\bo_\bn_\bs & _\bS_\be_\bt_\bF_\ba_\bc_\be_\bt_\bS_\bt_\br_\bi_\bd_\be(int stride);\n-_\b8_\b5 int _\bG_\be_\bt_\bF_\ba_\bc_\be_\bt_\bS_\bt_\br_\bi_\bd_\be() const { return _facetStride; }\n-86\n-88 _\bO_\bp_\bt_\bi_\bo_\bn_\bs & _\bS_\be_\bt_\bC_\bo_\bo_\br_\bd_\bS_\bt_\br_\bi_\bd_\be(int stride);\n-_\b9_\b0 int _\bG_\be_\bt_\bC_\bo_\bo_\br_\bd_\bS_\bt_\br_\bi_\bd_\be() const { return _coordStride; }\n-91\n-92 private:\n-93 unsigned int _preserveQuads : 1;\n-94 unsigned int _facetSize4 : 1;\n-95\n-96 short _coordStride;\n-97 short _facetStride;\n-98 };\n-99\n-100public:\n-102\n-111\n-_\b1_\b1_\b8 _\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn(_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn const & p, int uniformRate,\n-119 _\bO_\bp_\bt_\bi_\bo_\bn_\bs const & options = _\bO_\bp_\bt_\bi_\bo_\bn_\bs());\n-120\n-_\b1_\b5_\b8 _\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn(_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn const & p, int numRates, int const rates[],\n-159 _\bO_\bp_\bt_\bi_\bo_\bn_\bs const & options = _\bO_\bp_\bt_\bi_\bo_\bn_\bs());\n-160\n-_\b1_\b6_\b2 bool _\bI_\bs_\bV_\ba_\bl_\bi_\bd() const { return _isValid; }\n-163\n-_\b1_\b6_\b5 _\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn() = delete;\n-166\n-_\b1_\b6_\b7 _\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn(_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn const &) = delete;\n-_\b1_\b6_\b8 _\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn & _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn const &) = delete;\n-_\b1_\b6_\b9 _\b~_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn();\n-171\n-173\n-177\n-_\b1_\b7_\b9 _\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn _\bG_\be_\bt_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn() const { return _param; }\n-180\n-_\b1_\b8_\b2 int _\bG_\be_\bt_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be() const { return _param._\bG_\be_\bt_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be(); }\n-183\n-_\b1_\b8_\b5 int _\bG_\be_\bt_\bR_\ba_\bt_\be_\bs(int rates[]) const;\n-186\n-_\b1_\b8_\b8 bool _\bI_\bs_\bU_\bn_\bi_\bf_\bo_\br_\bm() const { return _isUniform; }\n-190\n-192\n-203\n-_\b2_\b0_\b5 int _\bG_\be_\bt_\bN_\bu_\bm_\bC_\bo_\bo_\br_\bd_\bs() const { return _numInteriorPoints + _numBoundaryPoints;\n-}\n-206\n-_\b2_\b0_\b8 int _\bG_\be_\bt_\bC_\bo_\bo_\br_\bd_\bS_\bt_\br_\bi_\bd_\be() const { return _coordStride; }\n-209\n-_\b2_\b1_\b1 int _\bG_\be_\bt_\bN_\bu_\bm_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bC_\bo_\bo_\br_\bd_\bs() const { return _numBoundaryPoints; }\n-212\n-_\b2_\b1_\b4 int _\bG_\be_\bt_\bN_\bu_\bm_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bC_\bo_\bo_\br_\bd_\bs() const { return _numInteriorPoints; }\n-215\n-_\b2_\b1_\b8 int _\bG_\be_\bt_\bN_\bu_\bm_\bE_\bd_\bg_\be_\bC_\bo_\bo_\br_\bd_\bs(int edge) const { return _outerRates[edge] - 1; }\n-219\n-221 template <typename REAL>\n-222 int _\bG_\be_\bt_\bC_\bo_\bo_\br_\bd_\bs(REAL coordTuples[]) const;\n-223\n-225 template <typename REAL>\n-_\b2_\b2_\b6 int _\bG_\be_\bt_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bC_\bo_\bo_\br_\bd_\bs(REAL coordTuples[]) const;\n-227\n-229 template <typename REAL>\n-_\b2_\b3_\b0 int _\bG_\be_\bt_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bC_\bo_\bo_\br_\bd_\bs(REAL coordTuples[]) const;\n-231\n-233 template <typename REAL>\n-234 int _\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bC_\bo_\bo_\br_\bd(int vertex, REAL coordTuples[]) const;\n-235\n-238 template <typename REAL>\n-_\b2_\b3_\b9 int _\bG_\be_\bt_\bE_\bd_\bg_\be_\bC_\bo_\bo_\br_\bd_\bs(int edge, REAL coordTuples[]) const;\n-241\n-243\n-253\n-_\b2_\b5_\b5 int _\bG_\be_\bt_\bN_\bu_\bm_\bF_\ba_\bc_\be_\bt_\bs() const { return _numFacets; }\n-256\n-_\b2_\b5_\b8 int _\bG_\be_\bt_\bF_\ba_\bc_\be_\bt_\bS_\bi_\bz_\be() const { return _facetSize; }\n-259\n-_\b2_\b6_\b1 int _\bG_\be_\bt_\bF_\ba_\bc_\be_\bt_\bS_\bt_\br_\bi_\bd_\be() const { return _facetStride; }\n-262\n-_\b2_\b6_\b4 int _\bG_\be_\bt_\bF_\ba_\bc_\be_\bt_\bs(int facetTuples[]) const;\n-266\n-268\n-283\n-_\b2_\b8_\b5 void _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bF_\ba_\bc_\be_\bt_\bC_\bo_\bo_\br_\bd_\bI_\bn_\bd_\bi_\bc_\be_\bs(int facetTuples[], int commonOffset);\n-286\n-_\b2_\b8_\b9 void _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bF_\ba_\bc_\be_\bt_\bC_\bo_\bo_\br_\bd_\bI_\bn_\bd_\bi_\bc_\be_\bs(int facetTuples[],\n-290 int const boundaryIndices[],\n-291 int interiorOffset);\n-292\n-_\b2_\b9_\b4 void _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bF_\ba_\bc_\be_\bt_\bC_\bo_\bo_\br_\bd_\bI_\bn_\bd_\bi_\bc_\be_\bs(int facetTuples[],\n-295 int const boundaryIndices[],\n-296 int const interiorIndices[]);\n-298\n-299private:\n-300 // Private initialization methods:\n-301 bool validateArguments(_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn const & p,\n-302 int nRates, int const rates[], _\bO_\bp_\bt_\bi_\bo_\bn_\bs const & options);\n-303\n-304 void initialize(_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn const & p,\n-305 int nRates, int const rates[], _\bO_\bp_\bt_\bi_\bo_\bn_\bs const & options);\n-306\n-307 void initializeDefaults();\n-308 int initializeRates(int nRates, int const rates[]);\n-309 void initializeInventoryForParamTri(int sumOfOuterRates);\n-310 void initializeInventoryForParamQuad(int sumOfOuterRates);\n-311 void initializeInventoryForParamQPoly(int sumOfOuterRates);\n-312\n-313private:\n-314 // Private members:\n-315 _\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn _param;\n-316\n-317 unsigned short _isValid : 1;\n-318 unsigned short _isUniform : 1;\n-319 unsigned short _triangulate : 1;\n-320 unsigned short _singleFace : 1;\n-321 unsigned short _segmentedFace : 1;\n-322 unsigned short _triangleFan : 1;\n-323 unsigned short _splitQuad : 1;\n-324\n-325 short _facetSize;\n-326 int _facetStride;\n-327 int _coordStride;\n-328\n-329 int _numGivenRates;\n-330 int _numBoundaryPoints;\n-331 int _numInteriorPoints;\n-332 int _numFacets;\n-333\n-334 int _innerRates[2];\n-335 int* _outerRates;\n-336 int _outerRatesLocal[4];\n-337};\n-338\n-339//\n-340// Inline implementations:\n-341//\n-342inline _\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs &\n-_\b3_\b4_\b3_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bP_\br_\be_\bs_\be_\br_\bv_\be_\bQ_\bu_\ba_\bd_\bs(bool on) {\n-344 _preserveQuads = on;\n-345 return *this;\n-346}\n-347inline _\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs &\n-_\b3_\b4_\b8_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bS_\be_\bt_\bF_\ba_\bc_\be_\bt_\bS_\bi_\bz_\be(int numIndices) {\n-349 _facetSize4 = (numIndices == 4);\n-350 return *this;\n-351}\n-352inline _\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs &\n-_\b3_\b5_\b3_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bS_\be_\bt_\bF_\ba_\bc_\be_\bt_\bS_\bt_\br_\bi_\bd_\be(int stride) {\n-354 _facetStride = (short) stride;\n-355 return *this;\n-356}\n-357inline _\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs &\n-_\b3_\b5_\b8_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bS_\be_\bt_\bC_\bo_\bo_\br_\bd_\bS_\bt_\br_\bi_\bd_\be(int stride) {\n-359 _coordStride = (short) stride;\n-360 return *this;\n-361}\n-362\n-363template <typename REAL>\n-364inline int\n-_\b3_\b6_\b5_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bC_\bo_\bo_\br_\bd(int vertex, REAL coord[]) const {\n-366 _param._\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bC_\bo_\bo_\br_\bd(vertex, coord);\n-367 return 1;\n-368}\n-369\n-370template <typename REAL>\n-371inline int\n-_\b3_\b7_\b2_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bt_\bC_\bo_\bo_\br_\bd_\bs(REAL coordTuples[]) const {\n-373 int nCoords = _\bG_\be_\bt_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bC_\bo_\bo_\br_\bd_\bs(coordTuples);\n-374 nCoords += _\bG_\be_\bt_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bC_\bo_\bo_\br_\bd_\bs(coordTuples + nCoords * _coordStride);\n-375 return nCoords;\n-376}\n-377\n-378} // end namespace Bfr\n-379\n-380} // end namespace OPENSUBDIV_VERSION\n-381using namespace OPENSUBDIV_VERSION;\n-382\n-383} // end namespace OpenSubdiv\n-384\n-385#endif /* OPENSUBDIV3_BFR_TESSELLATION */\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn\n-Simple class defining the 2D parameterization of a face.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b5_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bt_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be\n-int GetFaceSize() const\n-Returns the size (number of vertices) of the corresponding face.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b1_\b0_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bC_\bo_\bo_\br_\bd\n-void GetVertexCoord(int vertexIndex, REAL uvCoord[2]) const\n-Returns the (u,v) coordinate of a given vertex.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn\n-Encapsulates a specific tessellation pattern of a Parameterization.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b5_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bt_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be\n-int GetFaceSize() const\n-Return the size of the face.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b1_\b8_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bC_\bo_\bo_\br_\bd_\bs\n-int GetNumBoundaryCoords() const\n-Return the number of boundary coordinates.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b2_\b1_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\b~_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn\n-~Tessellation()\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bF_\ba_\bc_\be_\bt_\bC_\bo_\bo_\br_\bd_\bI_\bn_\bd_\bi_\bc_\be_\bs\n-void TransformFacetCoordIndices(int facetTuples[], int const boundaryIndices[],\n-int const interiorIndices[])\n-Reassign all facet coordinate indices.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bt_\bC_\bo_\bo_\br_\bd_\bS_\bt_\br_\bi_\bd_\be\n-int GetCoordStride() const\n-Return the number of elements between each coordinate.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b2_\b0_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bE_\bd_\bg_\be_\bC_\bo_\bo_\br_\bd_\bs\n-int GetNumEdgeCoords(int edge) const\n-Return the number of coordinates within a given edge (excluding those at its\n-end vertices)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b2_\b1_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bt_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bC_\bo_\bo_\br_\bd_\bs\n-int GetInteriorCoords(REAL coordTuples[]) const\n-Retrieve the coordinates for the boundary.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bt_\bF_\ba_\bc_\be_\bt_\bS_\bt_\br_\bi_\bd_\be\n-int GetFacetStride() const\n-Return the number of elements between each facet.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b2_\b6_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bI_\bs_\bU_\bn_\bi_\bf_\bo_\br_\bm\n-bool IsUniform() const\n-Return if the pattern is uniform.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b1_\b8_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bC_\bo_\bo_\br_\bd_\bs\n-int GetNumCoords() const\n-Return the number of coordinates in the entire pattern.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b2_\b0_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bt_\bC_\bo_\bo_\br_\bd_\bs\n-int GetCoords(REAL coordTuples[]) const\n-Retrieve the coordinates for the entire pattern.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b3_\b7_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bF_\ba_\bc_\be_\bt_\bC_\bo_\bo_\br_\bd_\bI_\bn_\bd_\bi_\bc_\be_\bs\n-void TransformFacetCoordIndices(int facetTuples[], int commonOffset)\n-Apply a common offset to all facet coordinate indices.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn\n-Tessellation(Parameterization const &p, int numRates, int const rates[],\n-Options const &options=Options())\n-General constructor providing multiple tessellation rates for a non-uniform\n-tessellation.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bt_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn\n-Parameterization GetParameterization() const\n-Return the Parameterization.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b1_\b7_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bF_\ba_\bc_\be_\bt_\bC_\bo_\bo_\br_\bd_\bI_\bn_\bd_\bi_\bc_\be_\bs\n-void TransformFacetCoordIndices(int facetTuples[], int const boundaryIndices[],\n-int interiorOffset)\n-Reassign indices of boundary coordinates while offseting those of interior\n-coordinates.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bt_\bF_\ba_\bc_\be_\bt_\bS_\bi_\bz_\be\n-int GetFacetSize() const\n-Return the number of indices assigned to each facet.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b2_\b5_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn\n-Tessellation()=delete\n-Default construction is unavailable.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn\n-Tessellation(Parameterization const &p, int uniformRate, Options const\n-&options=Options())\n-Simple constructor providing a single uniform tessellation rate.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bt_\bF_\ba_\bc_\be_\bt_\bs\n-int GetFacets(int facetTuples[]) const\n-Retrieve the facet indices for the entire pattern.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bF_\ba_\bc_\be_\bt_\bs\n-int GetNumFacets() const\n-Return the number of facets in the entire pattern.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b2_\b5_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bC_\bo_\bo_\br_\bd_\bs\n-int GetNumInteriorCoords() const\n-Return the number of interior coordinates.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b2_\b1_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bC_\bo_\bo_\br_\bd\n-int GetVertexCoord(int vertex, REAL coordTuples[]) const\n-Retrieve the coordinate for a given vertex of the face.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b3_\b6_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bt_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bC_\bo_\bo_\br_\bd_\bs\n-int GetBoundaryCoords(REAL coordTuples[]) const\n-Retrieve the coordinates for the boundary.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn\n-Tessellation(Tessellation const &)=delete\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bt_\bR_\ba_\bt_\be_\bs\n-int GetRates(int rates[]) const\n-Retrieve the rates assigned.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bI_\bs_\bV_\ba_\bl_\bi_\bd\n-bool IsValid() const\n-Return true if correctly initialized.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b1_\b6_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n-Tessellation & operator=(Tessellation const &)=delete\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bt_\bE_\bd_\bg_\be_\bC_\bo_\bo_\br_\bd_\bs\n-int GetEdgeCoords(int edge, REAL coordTuples[]) const\n-Retrieve the coordinates for a given edge of the face (excluding those at its\n-end vertices)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n-Options configure a Tessellation to specify the nature of both its results and\n-the structure of the c...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b6_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n-Options()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b6_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bG_\be_\bt_\bC_\bo_\bo_\br_\bd_\bS_\bt_\br_\bi_\bd_\be\n-int GetCoordStride() const\n-Return the stride between (u,v) pairs.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b9_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bS_\be_\bt_\bF_\ba_\bc_\be_\bt_\bS_\bi_\bz_\be\n-Options & SetFacetSize(int numIndices)\n-Assign the number of indices per facet (must be 3 or 4, default is 3)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b3_\b4_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bG_\be_\bt_\bF_\ba_\bc_\be_\bt_\bS_\bt_\br_\bi_\bd_\be\n-int GetFacetStride() const\n-Return the stride between facets.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b8_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bG_\be_\bt_\bF_\ba_\bc_\be_\bt_\bS_\bi_\bz_\be\n-int GetFacetSize() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b8_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bS_\be_\bt_\bC_\bo_\bo_\br_\bd_\bS_\bt_\br_\bi_\bd_\be\n-Options & SetCoordStride(int stride)\n-Assign the stride between (u,v) pairs (default is 2)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b3_\b5_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bS_\be_\bt_\bF_\ba_\bc_\be_\bt_\bS_\bt_\br_\bi_\bd_\be\n-Options & SetFacetStride(int stride)\n-Assign the stride between facets (default is facet size)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b3_\b5_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bP_\br_\be_\bs_\be_\br_\bv_\be_\bQ_\bu_\ba_\bd_\bs\n-bool PreserveQuads() const\n-Return if preservation of quads is set.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b7_\b4\n+28#if defined(__APPLE__)\n+29 #include \"TargetConditionals.h\"\n+30 #if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR\n+31 #include <OpenGLES/ES2/gl.h>\n+32 #else\n+33 #if defined(OSD_USES_GLEW)\n+34 #include <GL/glew.h>\n+35 #else\n+36 #include <OpenGL/gl3.h>\n+37 #endif\n+38 #endif\n+39#elif defined(ANDROID)\n+40 #include <GLES2/gl2.h>\n+41#else\n+42 #if defined(_WIN32)\n+43 #define WIN32_LEAN_AND_MEAN\n+44 #include <windows.h>\n+45 #endif\n+46 #if defined(OSD_USES_GLEW)\n+47 #include <GL/glew.h>\n+48 #else\n+49 #include <GL/gl.h>\n+50 #endif\n+51#endif\n+52\n+53#endif // OPENSUBDIV3_OSD_OPENGL_H\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bb_\bf_\br\n-    * _\bt_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bo_\bp_\be_\bn_\bg_\bl_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00725.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00725.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/bfr/vertexDescriptor.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/osd/clVertexBuffer.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -90,41 +90,41 @@\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> &#124;\n <a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">vertexDescriptor.h File Reference</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">clVertexBuffer.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00692_source.html\">../vtr/stackBuffer.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00755_source.html\">../osd/opencl.h</a>&quot;</code><br />\n </div>\n <p><a href=\"a00725_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00969.html\">VertexDescriptor</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Simple class used by subclasses of <a class=\"el\" href=\"a00941.html\" title=\"Base class providing initialization of a Surface for each face of a mesh.\">SurfaceFactory</a> to describe a vertex.  <a href=\"a00969.html#details\">More...</a><br /></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01157.html\">CLVertexBuffer</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Concrete vertex buffer class for OpenCL subdivision.  <a href=\"a01157.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00907\" id=\"r_a00907\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00907.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr</a></td></tr>\n+<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_fa5edef2a780a73fbfb6a11f1af88ceb.html\">bfr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00725.html\">vertexDescriptor.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00725.html\">clVertexBuffer.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,25 +1,24 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-vertexDescriptor.h File Reference\n+clVertexBuffer.h File Reference\n #include \"../version.h\"\n-#include \"_\b._\b._\b/_\bv_\bt_\br_\b/_\bs_\bt_\ba_\bc_\bk_\bB_\bu_\bf_\bf_\be_\br_\b._\bh\"\n+#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bo_\bp_\be_\bn_\bc_\bl_\b._\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n-\u00a0       Simple class used by subclasses of _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by to describe a vertex.\n-        _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bC_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+\u00a0       Concrete vertex buffer class for OpenCL subdivision. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bb_\bf_\br\n-    * _\bv_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bc_\bl_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00725.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00725.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,3 +1,3 @@\n var a00725 = [\n-    [\"VertexDescriptor\", \"a00969.html\", \"a00969\"]\n+    [\"CLVertexBuffer\", \"a01157.html\", \"a01157\"]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00725_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00725_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/bfr/vertexDescriptor.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/osd/clVertexBuffer.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">vertexDescriptor.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">clVertexBuffer.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00725.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2021 Pixar</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2013 Pixar</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -119,425 +119,95 @@\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_BFR_VERTEX_DESCRIPTOR_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_BFR_VERTEX_DESCRIPTOR_H</span></div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_CL_VERTEX_BUFFER_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_CL_VERTEX_BUFFER_H</span></div>\n <div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n <div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../vtr/stackBuffer.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span> </div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span>Bfr {</div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span><span class=\"comment\">//  WIP - need to migrate some of these comments into Doxygen</span></div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span><span class=\"comment\">//      - others will be moved to the external documentation</span></div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span><span class=\"comment\">//  It is used by subclasses of SurfaceFactory to provide a complete</span></div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span><span class=\"comment\">//  topological description for each vertex of a face, i.e. invoked via</span></div>\n-<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span><span class=\"comment\">//  the virtual method:</span></div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span><span class=\"comment\">//      int populateFaceVertexDescriptor(Index baseFace,</span></div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span><span class=\"comment\">//                                       int cornerVertex,</span></div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span><span class=\"comment\">//                                       VertexDescriptor &amp; v) const;</span></div>\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span><span class=\"comment\">//  Assignment of the full topology can be involved in the presence of</span></div>\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span><span class=\"comment\">//  irregular faces, non-manifold topology or creasing around a vertex, but</span></div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span><span class=\"comment\">//  many cases will be simple.  For example, to specify a regular boundary</span></div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span><span class=\"comment\">//  vertex of a Catmark mesh without any optional sharpness:</span></div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span><span class=\"comment\">//      int  numIncidentFaces = 2;</span></div>\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span><span class=\"comment\">//      bool vertexOnBoundary = true;</span></div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span><span class=\"comment\">//      vd.Initialize(numIncidentFaces);</span></div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span><span class=\"comment\">//          vd.SetManifold(true);</span></div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span><span class=\"comment\">//          vd.SetBoundary(vertexOnBoundary);</span></div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span><span class=\"comment\">//          vd.ClearIncidentFaceSizes();</span></div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span><span class=\"comment\">//      vd.Finalize();</span></div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span><span class=\"comment\">//  For a more general example, to assign a vertex of some valence whose</span></div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span><span class=\"comment\">//  incident faces are of different sizes (e.g. required when triangles</span></div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span><span class=\"comment\">//  appear around a vertex in an otherwise quad-dominant Catmark mesh):</span></div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span><span class=\"comment\">//      int  numIncidentFaces = meshVertex.GetNumIncidentFaces();</span></div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span><span class=\"comment\">//      bool vertexOnBoundary = meshVertex.IsBoundar();</span></div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span><span class=\"comment\">//      vd.Initialize(numIncidentFaces);</span></div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span><span class=\"comment\">//          vd.SetManifold(true);</span></div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span><span class=\"comment\">//          vd.SetBoundary(vertexOnBoundary);</span></div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span><span class=\"comment\">//          for (int i = 0; i &lt; numIncidentFaces; ++i) {</span></div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span><span class=\"comment\">//              vd.SetIncidentFaceSize(i, meshVertex.GetIncidentFaceSize(i));</span></div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span><span class=\"comment\">//          }</span></div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span><span class=\"comment\">//      vd.Finalize();</span></div>\n-<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span><span class=\"comment\">//  These examples specify the incident faces as forming a manifold ring</span></div>\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span><span class=\"comment\">//  (or half-ring) around the vertex, i.e. they can be specified as a</span></div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span><span class=\"comment\">//  continuous, connected sequence in counter-clockwise order (and also</span></div>\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span><span class=\"comment\">//  without degeneracies).  In the case of a boundary vertex, the first</span></div>\n-<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span><span class=\"comment\">//  face must be on the leading edge of the boundary while the last is on</span></div>\n-<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span><span class=\"comment\">//  the trailing edge.  For an interior vertex, which face is specified</span></div>\n-<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span><span class=\"comment\">//  first does not matter (since the set is periodic).</span></div>\n-<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span><span class=\"comment\">//  In both cases, the location of the base face in this sequence -- the</span></div>\n-<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span><span class=\"comment\">//  face whose corner vertex is being described here -- must be specified</span></div>\n-<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span><span class=\"comment\">//  in the return value to populateFaceVertexDescriptor() (e.g. when a</span></div>\n-<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span><span class=\"comment\">//  boundary vertex has 3 incident faces, a return value of 0, 1 or 2</span></div>\n-<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span><span class=\"comment\">//  will indicate which is the base face).</span></div>\n-<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span><span class=\"comment\">//  The corresponding methods to specify mesh control vertex indices (or</span></div>\n-<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span><span class=\"comment\">//  face-varying indices) complete the specification of the neighborhood:</span></div>\n-<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span><span class=\"comment\">//      int getFaceCornerVertexIndices(Index baseFace, int cornerVertex,</span></div>\n-<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span><span class=\"comment\">//                                     Index vertexIndices[]) const;</span></div>\n-<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span><span class=\"comment\">//      int getFaceCornerFVarValueIndices(Index baseFace, int cornerVertex,</span></div>\n-<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span><span class=\"comment\">//                                        Index fvarValueIndices[],</span></div>\n-<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span><span class=\"comment\">//                                        int   fvarChannel) const;</span></div>\n-<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\">  116</span><span class=\"comment\">//  and are invoked by the Factory when needed.</span></div>\n-<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\">  118</span><span class=\"comment\">//  For each incident face, the indices for all vertices of that face are</span></div>\n-<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span><span class=\"comment\">//  to be specified (not the one-ring or some other subset).  These indices</span></div>\n-<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span><span class=\"comment\">//  must also be specified in an orientation relative to the vertex, i.e.</span></div>\n-<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\">  121</span><span class=\"comment\">//  for a vertex A and an incident face with face-vertices that may be</span></div>\n-<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span><span class=\"comment\">//  stored internally as {D, C, A, B}, they must be specified with A first</span></div>\n-<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span><span class=\"comment\">//  as {A, B, C, D}.  This may seem a bit cumbersome, but it has clear</span></div>\n-<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span><span class=\"comment\">//  advantages when dealing with face-varying indices and unordered faces.</span></div>\n-<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span><span class=\"comment\">//  More compact ways of specifying vertex indices for ordered, manifold</span></div>\n-<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span><span class=\"comment\">//  cases may be worth exploring in future, but face-varying indices and</span></div>\n-<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span><span class=\"comment\">//  non-manifold (unordered) vertices will always require such a full set,</span></div>\n-<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span><span class=\"comment\">//  so both methods will need to co-exist.</span></div>\n-<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span><span class=\"comment\">//  </span></div>\n-<div class=\"foldopen\" id=\"foldopen00131\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00969.html\">  131</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a00969.html\">VertexDescriptor</a> {</div>\n-<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\">  132</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\">  133</span>    <span class=\"comment\">//  The full declaration must be enclosed by calls to these methods:</span></div>\n-<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\">  134</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\">  135</span>    <span class=\"comment\">//  Note that vertex valences or face sizes in excess of those defined</span></div>\n-<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\">  136</span>    <span class=\"comment\">//  in Bfr::Limits (typically 16-bits) are not valid.  When specifying</span></div>\n-<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\">  137</span>    <span class=\"comment\">//  values in excess of these limits, initialization will fail and/or</span></div>\n-<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\">  138</span>    <span class=\"comment\">//  the descriptor will be marked invalid and finalization will fail.</span></div>\n-<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\">  139</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\">  140</span> </div>\n-<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span> </div>\n-<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\">  149</span> </div>\n-<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00969.html#a1d4a38a2944a3705bfbd325766bda216\">  151</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00969.html#a1d4a38a2944a3705bfbd325766bda216\">Initialize</a>(<span class=\"keywordtype\">int</span> numIncidentFaces);</div>\n-<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\">  152</span> </div>\n-<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00969.html#a0cb0c1f4fa225637898cf1c7420bc064\">  154</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00969.html#a0cb0c1f4fa225637898cf1c7420bc064\">Finalize</a>();</div>\n-<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\">  155</span> </div>\n-<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\">  157</span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00969.html#ac532c4b500b1a85ea22217f2c65a70ed\">IsValid</a>() <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\">  159</span> </div>\n-<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\">  160</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\">  161</span>    <span class=\"comment\">//  WIP - need to migrate these comments into Doxygen</span></div>\n-<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\">  162</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\">  163</span>    <span class=\"comment\">//  Three groups of methods describe the topology around a vertex:</span></div>\n-<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\">  164</span>    <span class=\"comment\">//      - simple properties (vertex is a boundary, manifold, etc.)</span></div>\n-<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\">  165</span>    <span class=\"comment\">//      - sizes of incident faces (constant or size for each face)</span></div>\n-<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\">  166</span>    <span class=\"comment\">//      - sharpness of the vertex and its incident edges (optional)</span></div>\n-<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\">  167</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\">  168</span> </div>\n-<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\">  169</span>    <span class=\"comment\">//  Manifold and boundary conditions:</span></div>\n-<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\">  170</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span>    <span class=\"comment\">//  The manifold property is a strict condition but preferred for</span></div>\n-<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\">  172</span>    <span class=\"comment\">//  efficiency and is usually available from common connected mesh</span></div>\n-<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\">  173</span>    <span class=\"comment\">//  representations.  When declaring the topology as &quot;manifold&quot;,</span></div>\n-<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\">  174</span>    <span class=\"comment\">//  the Factory assumes the following:</span></div>\n-<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\">  175</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\">  176</span>    <span class=\"comment\">//      - all incident faces are &quot;ordered&quot; (counter-clockwise)</span></div>\n-<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span>    <span class=\"comment\">//      - all incident faces are consistently oriented</span></div>\n-<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\">  178</span>    <span class=\"comment\">//      - all incident edges are non-degenerate</span></div>\n-<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\">  179</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\">  180</span>    <span class=\"comment\">//  If not certain that all of these conditions are met, it is best</span></div>\n-<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\">  181</span>    <span class=\"comment\">//  to not declare manifold -- leaving the Factory to make sense of</span></div>\n-<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\">  182</span>    <span class=\"comment\">//  the set of incident faces from the face-vertex indices that are</span></div>\n-<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\">  183</span>    <span class=\"comment\">//  provided elsewhere.</span></div>\n-<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\">  184</span>    <span class=\"comment\">//  </span></div>\n-<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\">  185</span> </div>\n-<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\">  187</span> </div>\n-<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\">  191</span> </div>\n-<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\">  193</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00969.html#a100c73e08e78f4378b34a3f7abd9f1be\">SetManifold</a>(<span class=\"keywordtype\">bool</span> isManifold);</div>\n-<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\">  194</span> </div>\n-<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\">  196</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00969.html#ae228420c7ad83f58aad85b1268518df8\">SetBoundary</a>(<span class=\"keywordtype\">bool</span> isOnBoundary);</div>\n-<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\">  197</span> </div>\n-<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\">  199</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00969.html#ae9fae0d6843ce883db4c377d19dd61a8\">SetIncidentFaceSize</a>(<span class=\"keywordtype\">int</span> faceIndex, <span class=\"keywordtype\">int</span> faceSize);</div>\n-<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\">  200</span> </div>\n-<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\">  202</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00969.html#a5c719e43580059139938a6ed0f851853\">ClearIncidentFaceSizes</a>();</div>\n-<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\">  203</span> </div>\n-<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\">  205</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00969.html#a5f2854209dd55d5c420b1a7282da8793\">SetVertexSharpness</a>(<span class=\"keywordtype\">float</span> sharpness);</div>\n-<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\">  206</span> </div>\n-<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\">  208</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00969.html#a68afc60df5a617f5d7e1580548b72f9b\">ClearVertexSharpness</a>();</div>\n-<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\">  209</span> </div>\n-<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\">  221</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00969.html#aea91b4a9e7032d4fce2434c93ae2983a\">SetManifoldEdgeSharpness</a>(<span class=\"keywordtype\">int</span> edgeIndex, <span class=\"keywordtype\">float</span> edgeSharpness);</div>\n-<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\">  222</span> </div>\n-<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\">  238</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00969.html#a4dacf9da42e80ca546274402a8d3b266\">SetIncidentFaceEdgeSharpness</a>(<span class=\"keywordtype\">int</span> faceIndex, <span class=\"keywordtype\">float</span> leadingEdgeSharp,</div>\n-<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\">  239</span>                                                     <span class=\"keywordtype\">float</span> trailingEdgeSharp);</div>\n-<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\">  240</span> </div>\n-<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\">  242</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00969.html#a831025d6d817c4afb1df7d5a705af378\">ClearEdgeSharpness</a>();</div>\n-<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\">  244</span> </div>\n-<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\">  246</span> </div>\n-<div class=\"line\"><a id=\"l00251\" name=\"l00251\"></a><span class=\"lineno\">  251</span> </div>\n-<div class=\"line\"><a id=\"l00253\" name=\"l00253\"></a><span class=\"lineno\">  253</span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00969.html#a28f34ca6c256f1f7fa44e862540ec421\">IsManifold</a>() <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00254\" name=\"l00254\"></a><span class=\"lineno\">  254</span> </div>\n-<div class=\"line\"><a id=\"l00256\" name=\"l00256\"></a><span class=\"lineno\">  256</span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00969.html#ab744a59a71fffcff3e745c2c679aec29\">IsBoundary</a>() <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00257\" name=\"l00257\"></a><span class=\"lineno\">  257</span> </div>\n-<div class=\"line\"><a id=\"l00259\" name=\"l00259\"></a><span class=\"lineno\">  259</span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00969.html#ad56c50bc5582768806d7890c55b63141\">HasIncidentFaceSizes</a>() <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00260\" name=\"l00260\"></a><span class=\"lineno\">  260</span> </div>\n-<div class=\"line\"><a id=\"l00262\" name=\"l00262\"></a><span class=\"lineno\">  262</span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00969.html#a434afb577a5e287b615364d94d124e84\">GetIncidentFaceSize</a>(<span class=\"keywordtype\">int</span> faceIndex) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00263\" name=\"l00263\"></a><span class=\"lineno\">  263</span> </div>\n-<div class=\"line\"><a id=\"l00265\" name=\"l00265\"></a><span class=\"lineno\">  265</span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00969.html#a4f46be1cfd41b34d8808363c83e9ff56\">HasVertexSharpness</a>() <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00266\" name=\"l00266\"></a><span class=\"lineno\">  266</span> </div>\n-<div class=\"line\"><a id=\"l00268\" name=\"l00268\"></a><span class=\"lineno\">  268</span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"a00969.html#a03588bdc24a8240380aa0972ecae0ea1\">GetVertexSharpness</a>() <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00269\" name=\"l00269\"></a><span class=\"lineno\">  269</span> </div>\n-<div class=\"line\"><a id=\"l00271\" name=\"l00271\"></a><span class=\"lineno\">  271</span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00969.html#a2c6d182581c88931784f62fe2b8ae666\">HasEdgeSharpness</a>() <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00272\" name=\"l00272\"></a><span class=\"lineno\">  272</span> </div>\n-<div class=\"line\"><a id=\"l00274\" name=\"l00274\"></a><span class=\"lineno\">  274</span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"a00969.html#a460ea7c821fd4c2522de6503f9c25866\">GetManifoldEdgeSharpness</a>(<span class=\"keywordtype\">int</span> edgeIndex) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00275\" name=\"l00275\"></a><span class=\"lineno\">  275</span> </div>\n-<div class=\"line\"><a id=\"l00277\" name=\"l00277\"></a><span class=\"lineno\">  277</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00969.html#aa57d6053ca61cdf53b36937812b09307\">GetIncidentFaceEdgeSharpness</a>(<span class=\"keywordtype\">int</span> faceIndex,</div>\n-<div class=\"line\"><a id=\"l00278\" name=\"l00278\"></a><span class=\"lineno\">  278</span>            <span class=\"keywordtype\">float</span> * leadingEdgeSharp, <span class=\"keywordtype\">float</span> * trailingEdgeSharp) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00280\" name=\"l00280\"></a><span class=\"lineno\">  280</span> </div>\n-<div class=\"line\"><a id=\"l00281\" name=\"l00281\"></a><span class=\"lineno\">  281</span><span class=\"keyword\">protected</span>:</div>\n-<div class=\"line\"><a id=\"l00283\" name=\"l00283\"></a><span class=\"lineno\">  283</span>    <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span>FaceVertex;</div>\n-<div class=\"line\"><a id=\"l00284\" name=\"l00284\"></a><span class=\"lineno\">  284</span> </div>\n-<div class=\"line\"><a id=\"l00285\" name=\"l00285\"></a><span class=\"lineno\">  285</span>    <a class=\"code hl_class\" href=\"a00969.html\">VertexDescriptor</a>() { }</div>\n-<div class=\"line\"><a id=\"l00286\" name=\"l00286\"></a><span class=\"lineno\">  286</span>    <a class=\"code hl_class\" href=\"a00969.html\">~VertexDescriptor</a>() { }</div>\n-<div class=\"line\"><a id=\"l00287\" name=\"l00287\"></a><span class=\"lineno\">  287</span> </div>\n-<div class=\"line\"><a id=\"l00288\" name=\"l00288\"></a><span class=\"lineno\">  288</span>    <span class=\"keyword\">typedef</span> Vtr::internal::StackBuffer&lt;int,8,true&gt;    IntBuffer;</div>\n-<div class=\"line\"><a id=\"l00289\" name=\"l00289\"></a><span class=\"lineno\">  289</span>    <span class=\"keyword\">typedef</span> Vtr::internal::StackBuffer&lt;float,16,true&gt; FloatBuffer;</div>\n-<div class=\"line\"><a id=\"l00290\" name=\"l00290\"></a><span class=\"lineno\">  290</span> </div>\n-<div class=\"line\"><a id=\"l00291\" name=\"l00291\"></a><span class=\"lineno\">  291</span>    <span class=\"keywordtype\">void</span> initFaceSizes();</div>\n-<div class=\"line\"><a id=\"l00292\" name=\"l00292\"></a><span class=\"lineno\">  292</span>    <span class=\"keywordtype\">void</span> initEdgeSharpness();</div>\n-<div class=\"line\"><a id=\"l00294\" name=\"l00294\"></a><span class=\"lineno\">  294</span> </div>\n-<div class=\"line\"><a id=\"l00295\" name=\"l00295\"></a><span class=\"lineno\">  295</span><span class=\"keyword\">protected</span>:</div>\n-<div class=\"line\"><a id=\"l00297\" name=\"l00297\"></a><span class=\"lineno\">  297</span>    <span class=\"comment\">//  Member variables assigned through the above interface:</span></div>\n-<div class=\"line\"><a id=\"l00298\" name=\"l00298\"></a><span class=\"lineno\">  298</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> _isValid       : 1;</div>\n-<div class=\"line\"><a id=\"l00299\" name=\"l00299\"></a><span class=\"lineno\">  299</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> _isInitialized : 1;</div>\n-<div class=\"line\"><a id=\"l00300\" name=\"l00300\"></a><span class=\"lineno\">  300</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> _isFinalized   : 1;</div>\n-<div class=\"line\"><a id=\"l00301\" name=\"l00301\"></a><span class=\"lineno\">  301</span> </div>\n-<div class=\"line\"><a id=\"l00302\" name=\"l00302\"></a><span class=\"lineno\">  302</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> _isManifold : 1;</div>\n-<div class=\"line\"><a id=\"l00303\" name=\"l00303\"></a><span class=\"lineno\">  303</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> _isBoundary : 1;</div>\n-<div class=\"line\"><a id=\"l00304\" name=\"l00304\"></a><span class=\"lineno\">  304</span> </div>\n-<div class=\"line\"><a id=\"l00305\" name=\"l00305\"></a><span class=\"lineno\">  305</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> _hasFaceSizes     : 1;</div>\n-<div class=\"line\"><a id=\"l00306\" name=\"l00306\"></a><span class=\"lineno\">  306</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> _hasEdgeSharpness : 1;</div>\n-<div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\">  307</span> </div>\n-<div class=\"line\"><a id=\"l00308\" name=\"l00308\"></a><span class=\"lineno\">  308</span>    <span class=\"keywordtype\">short</span> _numFaces;</div>\n-<div class=\"line\"><a id=\"l00309\" name=\"l00309\"></a><span class=\"lineno\">  309</span>    <span class=\"keywordtype\">float</span> _vertSharpness;</div>\n-<div class=\"line\"><a id=\"l00310\" name=\"l00310\"></a><span class=\"lineno\">  310</span> </div>\n-<div class=\"line\"><a id=\"l00311\" name=\"l00311\"></a><span class=\"lineno\">  311</span>    FloatBuffer _faceEdgeSharpness;</div>\n-<div class=\"line\"><a id=\"l00312\" name=\"l00312\"></a><span class=\"lineno\">  312</span>    IntBuffer   _faceSizeOffsets;</div>\n-<div class=\"line\"><a id=\"l00314\" name=\"l00314\"></a><span class=\"lineno\">  314</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00315\" name=\"l00315\"></a><span class=\"lineno\">  315</span> </div>\n-<div class=\"line\"><a id=\"l00316\" name=\"l00316\"></a><span class=\"lineno\">  316</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00317\" name=\"l00317\"></a><span class=\"lineno\">  317</span><span class=\"comment\">//  Public inline methods for simple assignment:</span></div>\n-<div class=\"line\"><a id=\"l00318\" name=\"l00318\"></a><span class=\"lineno\">  318</span><span class=\"comment\">//  </span></div>\n-<div class=\"line\"><a id=\"l00319\" name=\"l00319\"></a><span class=\"lineno\">  319</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span></div>\n-<div class=\"foldopen\" id=\"foldopen00320\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00320\" name=\"l00320\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00969.html#ac532c4b500b1a85ea22217f2c65a70ed\">  320</a></span><a class=\"code hl_function\" href=\"a00969.html#ac532c4b500b1a85ea22217f2c65a70ed\">VertexDescriptor::IsValid</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00321\" name=\"l00321\"></a><span class=\"lineno\">  321</span>    <span class=\"keywordflow\">return</span> _isValid;</div>\n-<div class=\"line\"><a id=\"l00322\" name=\"l00322\"></a><span class=\"lineno\">  322</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00323\" name=\"l00323\"></a><span class=\"lineno\">  323</span> </div>\n-<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\">  324</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00325\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00969.html#a100c73e08e78f4378b34a3f7abd9f1be\">  325</a></span><a class=\"code hl_function\" href=\"a00969.html#a100c73e08e78f4378b34a3f7abd9f1be\">VertexDescriptor::SetManifold</a>(<span class=\"keywordtype\">bool</span> isManifold) {</div>\n-<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\">  326</span>    _isManifold = isManifold;</div>\n-<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\">  327</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\">  328</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span></div>\n-<div class=\"foldopen\" id=\"foldopen00329\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00969.html#a28f34ca6c256f1f7fa44e862540ec421\">  329</a></span><a class=\"code hl_function\" href=\"a00969.html#a28f34ca6c256f1f7fa44e862540ec421\">VertexDescriptor::IsManifold</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\">  330</span>    <span class=\"keywordflow\">return</span> _isManifold;</div>\n-<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\">  331</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\">  332</span> </div>\n-<div class=\"line\"><a id=\"l00333\" name=\"l00333\"></a><span class=\"lineno\">  333</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00334\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00334\" name=\"l00334\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00969.html#ae228420c7ad83f58aad85b1268518df8\">  334</a></span><a class=\"code hl_function\" href=\"a00969.html#ae228420c7ad83f58aad85b1268518df8\">VertexDescriptor::SetBoundary</a>(<span class=\"keywordtype\">bool</span> isBoundary) {</div>\n-<div class=\"line\"><a id=\"l00335\" name=\"l00335\"></a><span class=\"lineno\">  335</span>    _isBoundary = isBoundary;</div>\n-<div class=\"line\"><a id=\"l00336\" name=\"l00336\"></a><span class=\"lineno\">  336</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00337\" name=\"l00337\"></a><span class=\"lineno\">  337</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span></div>\n-<div class=\"foldopen\" id=\"foldopen00338\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00338\" name=\"l00338\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00969.html#ab744a59a71fffcff3e745c2c679aec29\">  338</a></span><a class=\"code hl_function\" href=\"a00969.html#ab744a59a71fffcff3e745c2c679aec29\">VertexDescriptor::IsBoundary</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00339\" name=\"l00339\"></a><span class=\"lineno\">  339</span>    <span class=\"keywordflow\">return</span> _isBoundary;</div>\n-<div class=\"line\"><a id=\"l00340\" name=\"l00340\"></a><span class=\"lineno\">  340</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00341\" name=\"l00341\"></a><span class=\"lineno\">  341</span> </div>\n-<div class=\"line\"><a id=\"l00342\" name=\"l00342\"></a><span class=\"lineno\">  342</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00343\" name=\"l00343\"></a><span class=\"lineno\">  343</span><span class=\"comment\">//  Public inline methods involving sizes of incident faces:</span></div>\n-<div class=\"line\"><a id=\"l00344\" name=\"l00344\"></a><span class=\"lineno\">  344</span><span class=\"comment\">//  </span></div>\n-<div class=\"line\"><a id=\"l00345\" name=\"l00345\"></a><span class=\"lineno\">  345</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span></div>\n-<div class=\"foldopen\" id=\"foldopen00346\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00346\" name=\"l00346\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00969.html#ad56c50bc5582768806d7890c55b63141\">  346</a></span><a class=\"code hl_function\" href=\"a00969.html#ad56c50bc5582768806d7890c55b63141\">VertexDescriptor::HasIncidentFaceSizes</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00347\" name=\"l00347\"></a><span class=\"lineno\">  347</span>    <span class=\"keywordflow\">return</span> _hasFaceSizes;</div>\n-<div class=\"line\"><a id=\"l00348\" name=\"l00348\"></a><span class=\"lineno\">  348</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00349\" name=\"l00349\"></a><span class=\"lineno\">  349</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00350\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00350\" name=\"l00350\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00969.html#a5c719e43580059139938a6ed0f851853\">  350</a></span><a class=\"code hl_function\" href=\"a00969.html#a5c719e43580059139938a6ed0f851853\">VertexDescriptor::ClearIncidentFaceSizes</a>() {</div>\n-<div class=\"line\"><a id=\"l00351\" name=\"l00351\"></a><span class=\"lineno\">  351</span>    _hasFaceSizes = <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00352\" name=\"l00352\"></a><span class=\"lineno\">  352</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00353\" name=\"l00353\"></a><span class=\"lineno\">  353</span> </div>\n-<div class=\"line\"><a id=\"l00354\" name=\"l00354\"></a><span class=\"lineno\">  354</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00355\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00355\" name=\"l00355\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00969.html#ae9fae0d6843ce883db4c377d19dd61a8\">  355</a></span><a class=\"code hl_function\" href=\"a00969.html#ae9fae0d6843ce883db4c377d19dd61a8\">VertexDescriptor::SetIncidentFaceSize</a>(<span class=\"keywordtype\">int</span> incFaceIndex, <span class=\"keywordtype\">int</span> faceSize) {</div>\n-<div class=\"line\"><a id=\"l00356\" name=\"l00356\"></a><span class=\"lineno\">  356</span> </div>\n-<div class=\"line\"><a id=\"l00357\" name=\"l00357\"></a><span class=\"lineno\">  357</span>    <span class=\"keywordflow\">if</span> (!_hasFaceSizes) initFaceSizes();</div>\n-<div class=\"line\"><a id=\"l00358\" name=\"l00358\"></a><span class=\"lineno\">  358</span> </div>\n-<div class=\"line\"><a id=\"l00359\" name=\"l00359\"></a><span class=\"lineno\">  359</span>    _faceSizeOffsets[incFaceIndex] = faceSize;</div>\n-<div class=\"line\"><a id=\"l00360\" name=\"l00360\"></a><span class=\"lineno\">  360</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00361\" name=\"l00361\"></a><span class=\"lineno\">  361</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span></div>\n-<div class=\"foldopen\" id=\"foldopen00362\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00362\" name=\"l00362\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00969.html#a434afb577a5e287b615364d94d124e84\">  362</a></span><a class=\"code hl_function\" href=\"a00969.html#a434afb577a5e287b615364d94d124e84\">VertexDescriptor::GetIncidentFaceSize</a>(<span class=\"keywordtype\">int</span> incFaceIndex)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00363\" name=\"l00363\"></a><span class=\"lineno\">  363</span> </div>\n-<div class=\"line\"><a id=\"l00364\" name=\"l00364\"></a><span class=\"lineno\">  364</span>    <span class=\"keywordflow\">return</span> _isFinalized ?</div>\n-<div class=\"line\"><a id=\"l00365\" name=\"l00365\"></a><span class=\"lineno\">  365</span>          (_faceSizeOffsets[incFaceIndex+1] - _faceSizeOffsets[incFaceIndex]) :</div>\n-<div class=\"line\"><a id=\"l00366\" name=\"l00366\"></a><span class=\"lineno\">  366</span>           _faceSizeOffsets[incFaceIndex];</div>\n-<div class=\"line\"><a id=\"l00367\" name=\"l00367\"></a><span class=\"lineno\">  367</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00368\" name=\"l00368\"></a><span class=\"lineno\">  368</span> </div>\n-<div class=\"line\"><a id=\"l00369\" name=\"l00369\"></a><span class=\"lineno\">  369</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00370\" name=\"l00370\"></a><span class=\"lineno\">  370</span><span class=\"comment\">//  Public inline methods involving vertex sharpness:</span></div>\n-<div class=\"line\"><a id=\"l00371\" name=\"l00371\"></a><span class=\"lineno\">  371</span><span class=\"comment\">//  </span></div>\n-<div class=\"line\"><a id=\"l00372\" name=\"l00372\"></a><span class=\"lineno\">  372</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span></div>\n-<div class=\"foldopen\" id=\"foldopen00373\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00373\" name=\"l00373\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00969.html#a4f46be1cfd41b34d8808363c83e9ff56\">  373</a></span><a class=\"code hl_function\" href=\"a00969.html#a4f46be1cfd41b34d8808363c83e9ff56\">VertexDescriptor::HasVertexSharpness</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00374\" name=\"l00374\"></a><span class=\"lineno\">  374</span>    <span class=\"keywordflow\">return</span> _vertSharpness &gt; 0.0f;</div>\n-<div class=\"line\"><a id=\"l00375\" name=\"l00375\"></a><span class=\"lineno\">  375</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00376\" name=\"l00376\"></a><span class=\"lineno\">  376</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00377\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00377\" name=\"l00377\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00969.html#a68afc60df5a617f5d7e1580548b72f9b\">  377</a></span><a class=\"code hl_function\" href=\"a00969.html#a68afc60df5a617f5d7e1580548b72f9b\">VertexDescriptor::ClearVertexSharpness</a>() {</div>\n-<div class=\"line\"><a id=\"l00378\" name=\"l00378\"></a><span class=\"lineno\">  378</span>    _vertSharpness = 0.0f;</div>\n-<div class=\"line\"><a id=\"l00379\" name=\"l00379\"></a><span class=\"lineno\">  379</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00380\" name=\"l00380\"></a><span class=\"lineno\">  380</span> </div>\n-<div class=\"line\"><a id=\"l00381\" name=\"l00381\"></a><span class=\"lineno\">  381</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00382\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00382\" name=\"l00382\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00969.html#a5f2854209dd55d5c420b1a7282da8793\">  382</a></span><a class=\"code hl_function\" href=\"a00969.html#a5f2854209dd55d5c420b1a7282da8793\">VertexDescriptor::SetVertexSharpness</a>(<span class=\"keywordtype\">float</span> vertSharpness) {</div>\n-<div class=\"line\"><a id=\"l00383\" name=\"l00383\"></a><span class=\"lineno\">  383</span>    _vertSharpness = vertSharpness;</div>\n-<div class=\"line\"><a id=\"l00384\" name=\"l00384\"></a><span class=\"lineno\">  384</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00385\" name=\"l00385\"></a><span class=\"lineno\">  385</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">float</span></div>\n-<div class=\"foldopen\" id=\"foldopen00386\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00386\" name=\"l00386\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00969.html#a03588bdc24a8240380aa0972ecae0ea1\">  386</a></span><a class=\"code hl_function\" href=\"a00969.html#a03588bdc24a8240380aa0972ecae0ea1\">VertexDescriptor::GetVertexSharpness</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00387\" name=\"l00387\"></a><span class=\"lineno\">  387</span>    <span class=\"keywordflow\">return</span> _vertSharpness;</div>\n-<div class=\"line\"><a id=\"l00388\" name=\"l00388\"></a><span class=\"lineno\">  388</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00389\" name=\"l00389\"></a><span class=\"lineno\">  389</span> </div>\n-<div class=\"line\"><a id=\"l00390\" name=\"l00390\"></a><span class=\"lineno\">  390</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00391\" name=\"l00391\"></a><span class=\"lineno\">  391</span><span class=\"comment\">//  Public inline methods involving vertex sharpness:</span></div>\n-<div class=\"line\"><a id=\"l00392\" name=\"l00392\"></a><span class=\"lineno\">  392</span><span class=\"comment\">//  </span></div>\n-<div class=\"line\"><a id=\"l00393\" name=\"l00393\"></a><span class=\"lineno\">  393</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span></div>\n-<div class=\"foldopen\" id=\"foldopen00394\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00394\" name=\"l00394\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00969.html#a2c6d182581c88931784f62fe2b8ae666\">  394</a></span><a class=\"code hl_function\" href=\"a00969.html#a2c6d182581c88931784f62fe2b8ae666\">VertexDescriptor::HasEdgeSharpness</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00395\" name=\"l00395\"></a><span class=\"lineno\">  395</span>    <span class=\"keywordflow\">return</span> _hasEdgeSharpness;</div>\n-<div class=\"line\"><a id=\"l00396\" name=\"l00396\"></a><span class=\"lineno\">  396</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00397\" name=\"l00397\"></a><span class=\"lineno\">  397</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00398\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00398\" name=\"l00398\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00969.html#a831025d6d817c4afb1df7d5a705af378\">  398</a></span><a class=\"code hl_function\" href=\"a00969.html#a831025d6d817c4afb1df7d5a705af378\">VertexDescriptor::ClearEdgeSharpness</a>() {</div>\n-<div class=\"line\"><a id=\"l00399\" name=\"l00399\"></a><span class=\"lineno\">  399</span>    _hasEdgeSharpness = <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00400\" name=\"l00400\"></a><span class=\"lineno\">  400</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00401\" name=\"l00401\"></a><span class=\"lineno\">  401</span> </div>\n-<div class=\"line\"><a id=\"l00402\" name=\"l00402\"></a><span class=\"lineno\">  402</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00403\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00403\" name=\"l00403\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00969.html#aea91b4a9e7032d4fce2434c93ae2983a\">  403</a></span><a class=\"code hl_function\" href=\"a00969.html#aea91b4a9e7032d4fce2434c93ae2983a\">VertexDescriptor::SetManifoldEdgeSharpness</a>(<span class=\"keywordtype\">int</span> edgeIndex, <span class=\"keywordtype\">float</span> sharpness) {</div>\n-<div class=\"line\"><a id=\"l00404\" name=\"l00404\"></a><span class=\"lineno\">  404</span> </div>\n-<div class=\"line\"><a id=\"l00405\" name=\"l00405\"></a><span class=\"lineno\">  405</span>    <span class=\"keywordflow\">if</span> (!_hasEdgeSharpness) initEdgeSharpness();</div>\n-<div class=\"line\"><a id=\"l00406\" name=\"l00406\"></a><span class=\"lineno\">  406</span> </div>\n-<div class=\"line\"><a id=\"l00407\" name=\"l00407\"></a><span class=\"lineno\">  407</span>    <span class=\"comment\">//  Assign the leading edge of the face after the edge (even index):</span></div>\n-<div class=\"line\"><a id=\"l00408\" name=\"l00408\"></a><span class=\"lineno\">  408</span>    <span class=\"keywordflow\">if</span> (edgeIndex &lt; _numFaces) {</div>\n-<div class=\"line\"><a id=\"l00409\" name=\"l00409\"></a><span class=\"lineno\">  409</span>        _faceEdgeSharpness[2*edgeIndex] = sharpness;</div>\n-<div class=\"line\"><a id=\"l00410\" name=\"l00410\"></a><span class=\"lineno\">  410</span>    }</div>\n-<div class=\"line\"><a id=\"l00411\" name=\"l00411\"></a><span class=\"lineno\">  411</span> </div>\n-<div class=\"line\"><a id=\"l00412\" name=\"l00412\"></a><span class=\"lineno\">  412</span>    <span class=\"comment\">//  Assign the trailing edge of the face before the edge (odd index):</span></div>\n-<div class=\"line\"><a id=\"l00413\" name=\"l00413\"></a><span class=\"lineno\">  413</span>    <span class=\"keywordflow\">if</span> (edgeIndex &gt; 0) {</div>\n-<div class=\"line\"><a id=\"l00414\" name=\"l00414\"></a><span class=\"lineno\">  414</span>        _faceEdgeSharpness[2*edgeIndex-1] = sharpness;</div>\n-<div class=\"line\"><a id=\"l00415\" name=\"l00415\"></a><span class=\"lineno\">  415</span>    } <span class=\"keywordflow\">else</span> <span class=\"keywordflow\">if</span> (!<a class=\"code hl_function\" href=\"a00969.html#ab744a59a71fffcff3e745c2c679aec29\">IsBoundary</a>()) {</div>\n-<div class=\"line\"><a id=\"l00416\" name=\"l00416\"></a><span class=\"lineno\">  416</span>        _faceEdgeSharpness[2*_numFaces-1] = sharpness;</div>\n-<div class=\"line\"><a id=\"l00417\" name=\"l00417\"></a><span class=\"lineno\">  417</span>    }</div>\n-<div class=\"line\"><a id=\"l00418\" name=\"l00418\"></a><span class=\"lineno\">  418</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00419\" name=\"l00419\"></a><span class=\"lineno\">  419</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">float</span></div>\n-<div class=\"foldopen\" id=\"foldopen00420\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00420\" name=\"l00420\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00969.html#a460ea7c821fd4c2522de6503f9c25866\">  420</a></span><a class=\"code hl_function\" href=\"a00969.html#a460ea7c821fd4c2522de6503f9c25866\">VertexDescriptor::GetManifoldEdgeSharpness</a>(<span class=\"keywordtype\">int</span> edgeIndex)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00421\" name=\"l00421\"></a><span class=\"lineno\">  421</span> </div>\n-<div class=\"line\"><a id=\"l00422\" name=\"l00422\"></a><span class=\"lineno\">  422</span>    <span class=\"comment\">//  All edges are first of the pair (even index) except last of boundary</span></div>\n-<div class=\"line\"><a id=\"l00423\" name=\"l00423\"></a><span class=\"lineno\">  423</span>    <span class=\"keywordflow\">return</span> _faceEdgeSharpness[2*edgeIndex - (edgeIndex == _numFaces)];</div>\n-<div class=\"line\"><a id=\"l00424\" name=\"l00424\"></a><span class=\"lineno\">  424</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00425\" name=\"l00425\"></a><span class=\"lineno\">  425</span> </div>\n-<div class=\"line\"><a id=\"l00426\" name=\"l00426\"></a><span class=\"lineno\">  426</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00427\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00427\" name=\"l00427\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00969.html#a4dacf9da42e80ca546274402a8d3b266\">  427</a></span><a class=\"code hl_function\" href=\"a00969.html#a4dacf9da42e80ca546274402a8d3b266\">VertexDescriptor::SetIncidentFaceEdgeSharpness</a>(<span class=\"keywordtype\">int</span> faceIndex,</div>\n-<div class=\"line\"><a id=\"l00428\" name=\"l00428\"></a><span class=\"lineno\">  428</span>        <span class=\"keywordtype\">float</span> leadingEdgeSharpness, <span class=\"keywordtype\">float</span> trailingEdgeSharpness) {</div>\n-<div class=\"line\"><a id=\"l00429\" name=\"l00429\"></a><span class=\"lineno\">  429</span> </div>\n-<div class=\"line\"><a id=\"l00430\" name=\"l00430\"></a><span class=\"lineno\">  430</span>    <span class=\"keywordflow\">if</span> (!_hasEdgeSharpness) initEdgeSharpness();</div>\n-<div class=\"line\"><a id=\"l00431\" name=\"l00431\"></a><span class=\"lineno\">  431</span> </div>\n-<div class=\"line\"><a id=\"l00432\" name=\"l00432\"></a><span class=\"lineno\">  432</span>    _faceEdgeSharpness[2*faceIndex  ] = leadingEdgeSharpness;</div>\n-<div class=\"line\"><a id=\"l00433\" name=\"l00433\"></a><span class=\"lineno\">  433</span>    _faceEdgeSharpness[2*faceIndex+1] = trailingEdgeSharpness;</div>\n-<div class=\"line\"><a id=\"l00434\" name=\"l00434\"></a><span class=\"lineno\">  434</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00435\" name=\"l00435\"></a><span class=\"lineno\">  435</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00436\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00436\" name=\"l00436\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00969.html#aa57d6053ca61cdf53b36937812b09307\">  436</a></span><a class=\"code hl_function\" href=\"a00969.html#aa57d6053ca61cdf53b36937812b09307\">VertexDescriptor::GetIncidentFaceEdgeSharpness</a>(<span class=\"keywordtype\">int</span> faceIndex,</div>\n-<div class=\"line\"><a id=\"l00437\" name=\"l00437\"></a><span class=\"lineno\">  437</span>        <span class=\"keywordtype\">float</span> * leadingEdgeSharpness, <span class=\"keywordtype\">float</span> * trailingEdgeSharpness)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00438\" name=\"l00438\"></a><span class=\"lineno\">  438</span> </div>\n-<div class=\"line\"><a id=\"l00439\" name=\"l00439\"></a><span class=\"lineno\">  439</span>    *leadingEdgeSharpness  = _faceEdgeSharpness[2*faceIndex];</div>\n-<div class=\"line\"><a id=\"l00440\" name=\"l00440\"></a><span class=\"lineno\">  440</span>    *trailingEdgeSharpness = _faceEdgeSharpness[2*faceIndex+1];</div>\n-<div class=\"line\"><a id=\"l00441\" name=\"l00441\"></a><span class=\"lineno\">  441</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00442\" name=\"l00442\"></a><span class=\"lineno\">  442</span> </div>\n-<div class=\"line\"><a id=\"l00443\" name=\"l00443\"></a><span class=\"lineno\">  443</span>} <span class=\"comment\">// end namespace Bfr</span></div>\n-<div class=\"line\"><a id=\"l00444\" name=\"l00444\"></a><span class=\"lineno\">  444</span> </div>\n-<div class=\"line\"><a id=\"l00445\" name=\"l00445\"></a><span class=\"lineno\">  445</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00446\" name=\"l00446\"></a><span class=\"lineno\">  446</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00447\" name=\"l00447\"></a><span class=\"lineno\">  447</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l00448\" name=\"l00448\"></a><span class=\"lineno\">  448</span> </div>\n-<div class=\"line\"><a id=\"l00449\" name=\"l00449\"></a><span class=\"lineno\">  449</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_BFR_VERTEX_DESCRIPTOR_H */</span><span class=\"preprocessor\"></span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa00969_html\"><div class=\"ttname\"><a href=\"a00969.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::VertexDescriptor</a></div><div class=\"ttdoc\">Simple class used by subclasses of SurfaceFactory to describe a vertex.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00725_source.html#l00131\">vertexDescriptor.h:131</a></div></div>\n-<div class=\"ttc\" id=\"aa00969_html_a03588bdc24a8240380aa0972ecae0ea1\"><div class=\"ttname\"><a href=\"a00969.html#a03588bdc24a8240380aa0972ecae0ea1\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::VertexDescriptor::GetVertexSharpness</a></div><div class=\"ttdeci\">float GetVertexSharpness() const</div><div class=\"ttdoc\">Return the sharpness of the vertex.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00725_source.html#l00386\">vertexDescriptor.h:386</a></div></div>\n-<div class=\"ttc\" id=\"aa00969_html_a0cb0c1f4fa225637898cf1c7420bc064\"><div class=\"ttname\"><a href=\"a00969.html#a0cb0c1f4fa225637898cf1c7420bc064\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::VertexDescriptor::Finalize</a></div><div class=\"ttdeci\">bool Finalize()</div><div class=\"ttdoc\">Terminate the sequence of specifications.</div></div>\n-<div class=\"ttc\" id=\"aa00969_html_a100c73e08e78f4378b34a3f7abd9f1be\"><div class=\"ttname\"><a href=\"a00969.html#a100c73e08e78f4378b34a3f7abd9f1be\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::VertexDescriptor::SetManifold</a></div><div class=\"ttdeci\">void SetManifold(bool isManifold)</div><div class=\"ttdoc\">Declare the vertex neighborhood as manifold (ordered)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00725_source.html#l00325\">vertexDescriptor.h:325</a></div></div>\n-<div class=\"ttc\" id=\"aa00969_html_a1d4a38a2944a3705bfbd325766bda216\"><div class=\"ttname\"><a href=\"a00969.html#a1d4a38a2944a3705bfbd325766bda216\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::VertexDescriptor::Initialize</a></div><div class=\"ttdeci\">bool Initialize(int numIncidentFaces)</div><div class=\"ttdoc\">Initialize specification with the number of incident faces.</div></div>\n-<div class=\"ttc\" id=\"aa00969_html_a28f34ca6c256f1f7fa44e862540ec421\"><div class=\"ttname\"><a href=\"a00969.html#a28f34ca6c256f1f7fa44e862540ec421\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::VertexDescriptor::IsManifold</a></div><div class=\"ttdeci\">bool IsManifold() const</div><div class=\"ttdoc\">Return if vertex neighborhood is manifold.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00725_source.html#l00329\">vertexDescriptor.h:329</a></div></div>\n-<div class=\"ttc\" id=\"aa00969_html_a2c6d182581c88931784f62fe2b8ae666\"><div class=\"ttname\"><a href=\"a00969.html#a2c6d182581c88931784f62fe2b8ae666\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::VertexDescriptor::HasEdgeSharpness</a></div><div class=\"ttdeci\">bool HasEdgeSharpness() const</div><div class=\"ttdoc\">Return if sharpness was assigned to the incident edges.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00725_source.html#l00394\">vertexDescriptor.h:394</a></div></div>\n-<div class=\"ttc\" id=\"aa00969_html_a434afb577a5e287b615364d94d124e84\"><div class=\"ttname\"><a href=\"a00969.html#a434afb577a5e287b615364d94d124e84\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::VertexDescriptor::GetIncidentFaceSize</a></div><div class=\"ttdeci\">int GetIncidentFaceSize(int faceIndex) const</div><div class=\"ttdoc\">Return the size of an incident face.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00725_source.html#l00362\">vertexDescriptor.h:362</a></div></div>\n-<div class=\"ttc\" id=\"aa00969_html_a460ea7c821fd4c2522de6503f9c25866\"><div class=\"ttname\"><a href=\"a00969.html#a460ea7c821fd4c2522de6503f9c25866\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::VertexDescriptor::GetManifoldEdgeSharpness</a></div><div class=\"ttdeci\">float GetManifoldEdgeSharpness(int edgeIndex) const</div><div class=\"ttdoc\">Return the sharpness assigned to a manifold edge.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00725_source.html#l00420\">vertexDescriptor.h:420</a></div></div>\n-<div class=\"ttc\" id=\"aa00969_html_a4dacf9da42e80ca546274402a8d3b266\"><div class=\"ttname\"><a href=\"a00969.html#a4dacf9da42e80ca546274402a8d3b266\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::VertexDescriptor::SetIncidentFaceEdgeSharpness</a></div><div class=\"ttdeci\">void SetIncidentFaceEdgeSharpness(int faceIndex, float leadingEdgeSharp, float trailingEdgeSharp)</div><div class=\"ttdoc\">Assign sharpness to the edges of an incident face.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00725_source.html#l00427\">vertexDescriptor.h:427</a></div></div>\n-<div class=\"ttc\" id=\"aa00969_html_a4f46be1cfd41b34d8808363c83e9ff56\"><div class=\"ttname\"><a href=\"a00969.html#a4f46be1cfd41b34d8808363c83e9ff56\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::VertexDescriptor::HasVertexSharpness</a></div><div class=\"ttdeci\">bool HasVertexSharpness() const</div><div class=\"ttdoc\">Return if sharpness was assigned to the vertex.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00725_source.html#l00373\">vertexDescriptor.h:373</a></div></div>\n-<div class=\"ttc\" id=\"aa00969_html_a5c719e43580059139938a6ed0f851853\"><div class=\"ttname\"><a href=\"a00969.html#a5c719e43580059139938a6ed0f851853\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::VertexDescriptor::ClearIncidentFaceSizes</a></div><div class=\"ttdeci\">void ClearIncidentFaceSizes()</div><div class=\"ttdoc\">Remove any assigned sizes of incident faces.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00725_source.html#l00350\">vertexDescriptor.h:350</a></div></div>\n-<div class=\"ttc\" id=\"aa00969_html_a5f2854209dd55d5c420b1a7282da8793\"><div class=\"ttname\"><a href=\"a00969.html#a5f2854209dd55d5c420b1a7282da8793\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::VertexDescriptor::SetVertexSharpness</a></div><div class=\"ttdeci\">void SetVertexSharpness(float sharpness)</div><div class=\"ttdoc\">Assign sharpness to the vertex.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00725_source.html#l00382\">vertexDescriptor.h:382</a></div></div>\n-<div class=\"ttc\" id=\"aa00969_html_a68afc60df5a617f5d7e1580548b72f9b\"><div class=\"ttname\"><a href=\"a00969.html#a68afc60df5a617f5d7e1580548b72f9b\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::VertexDescriptor::ClearVertexSharpness</a></div><div class=\"ttdeci\">void ClearVertexSharpness()</div><div class=\"ttdoc\">Remove any sharpness assigned to the vertex.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00725_source.html#l00377\">vertexDescriptor.h:377</a></div></div>\n-<div class=\"ttc\" id=\"aa00969_html_a831025d6d817c4afb1df7d5a705af378\"><div class=\"ttname\"><a href=\"a00969.html#a831025d6d817c4afb1df7d5a705af378\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::VertexDescriptor::ClearEdgeSharpness</a></div><div class=\"ttdeci\">void ClearEdgeSharpness()</div><div class=\"ttdoc\">Remove any sharpness assigned to the incident edges.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00725_source.html#l00398\">vertexDescriptor.h:398</a></div></div>\n-<div class=\"ttc\" id=\"aa00969_html_aa57d6053ca61cdf53b36937812b09307\"><div class=\"ttname\"><a href=\"a00969.html#aa57d6053ca61cdf53b36937812b09307\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::VertexDescriptor::GetIncidentFaceEdgeSharpness</a></div><div class=\"ttdeci\">void GetIncidentFaceEdgeSharpness(int faceIndex, float *leadingEdgeSharp, float *trailingEdgeSharp) const</div><div class=\"ttdoc\">Return the sharpness assigned to edges of an incident face.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00725_source.html#l00436\">vertexDescriptor.h:436</a></div></div>\n-<div class=\"ttc\" id=\"aa00969_html_ab744a59a71fffcff3e745c2c679aec29\"><div class=\"ttname\"><a href=\"a00969.html#ab744a59a71fffcff3e745c2c679aec29\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::VertexDescriptor::IsBoundary</a></div><div class=\"ttdeci\">bool IsBoundary() const</div><div class=\"ttdoc\">Return if vertex neighborhood is on a boundary.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00725_source.html#l00338\">vertexDescriptor.h:338</a></div></div>\n-<div class=\"ttc\" id=\"aa00969_html_ac532c4b500b1a85ea22217f2c65a70ed\"><div class=\"ttname\"><a href=\"a00969.html#ac532c4b500b1a85ea22217f2c65a70ed\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::VertexDescriptor::IsValid</a></div><div class=\"ttdeci\">bool IsValid() const</div><div class=\"ttdoc\">Return if instance is valid.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00725_source.html#l00320\">vertexDescriptor.h:320</a></div></div>\n-<div class=\"ttc\" id=\"aa00969_html_ad56c50bc5582768806d7890c55b63141\"><div class=\"ttname\"><a href=\"a00969.html#ad56c50bc5582768806d7890c55b63141\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::VertexDescriptor::HasIncidentFaceSizes</a></div><div class=\"ttdeci\">bool HasIncidentFaceSizes() const</div><div class=\"ttdoc\">Return if the sizes of incident faces are assigned.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00725_source.html#l00346\">vertexDescriptor.h:346</a></div></div>\n-<div class=\"ttc\" id=\"aa00969_html_ae228420c7ad83f58aad85b1268518df8\"><div class=\"ttname\"><a href=\"a00969.html#ae228420c7ad83f58aad85b1268518df8\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::VertexDescriptor::SetBoundary</a></div><div class=\"ttdeci\">void SetBoundary(bool isOnBoundary)</div><div class=\"ttdoc\">Declare the vertex neighborhood as being on a boundary.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00725_source.html#l00334\">vertexDescriptor.h:334</a></div></div>\n-<div class=\"ttc\" id=\"aa00969_html_ae9fae0d6843ce883db4c377d19dd61a8\"><div class=\"ttname\"><a href=\"a00969.html#ae9fae0d6843ce883db4c377d19dd61a8\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::VertexDescriptor::SetIncidentFaceSize</a></div><div class=\"ttdeci\">void SetIncidentFaceSize(int faceIndex, int faceSize)</div><div class=\"ttdoc\">Assign the size of an incident face.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00725_source.html#l00355\">vertexDescriptor.h:355</a></div></div>\n-<div class=\"ttc\" id=\"aa00969_html_aea91b4a9e7032d4fce2434c93ae2983a\"><div class=\"ttname\"><a href=\"a00969.html#aea91b4a9e7032d4fce2434c93ae2983a\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::VertexDescriptor::SetManifoldEdgeSharpness</a></div><div class=\"ttdeci\">void SetManifoldEdgeSharpness(int edgeIndex, float edgeSharpness)</div><div class=\"ttdoc\">Assign sharpness to the edge of a manifold neighborhood.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00725_source.html#l00403\">vertexDescriptor.h:403</a></div></div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#include &quot;../osd/opencl.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span> </div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">namespace </span>Osd {</div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00042\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01157.html\">   42</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01157.html\">CLVertexBuffer</a> {</div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span> </div>\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01157.html#ac5f331ad354f94f90a08a928f7f57bba\">   46</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01157.html\">CLVertexBuffer</a> * <a class=\"code hl_function\" href=\"a01157.html#ac5f331ad354f94f90a08a928f7f57bba\">Create</a>(<span class=\"keywordtype\">int</span> numElements, <span class=\"keywordtype\">int</span> numVertices, cl_context clContext);</div>\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span> </div>\n+<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00049\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01157.html#ad1ac8e33d52862dac84a2da1483fee51\">   49</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01157.html\">CLVertexBuffer</a> * <a class=\"code hl_function\" href=\"a01157.html#ad1ac8e33d52862dac84a2da1483fee51\">Create</a>(<span class=\"keywordtype\">int</span> numElements, <span class=\"keywordtype\">int</span> numVertices,</div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span>                                   DEVICE_CONTEXT context) {</div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01157.html#ac5f331ad354f94f90a08a928f7f57bba\">Create</a>(numElements, numVertices, context-&gt;GetContext());</div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span> </div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01157.html#a4801ba3ea81294d3e7e3da970863896e\">   55</a></span>    <a class=\"code hl_function\" href=\"a01157.html#a4801ba3ea81294d3e7e3da970863896e\">~CLVertexBuffer</a>();</div>\n+<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span> </div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01157.html#a7259d1296f30e13d171cd892708d8d0a\">   59</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01157.html#a7259d1296f30e13d171cd892708d8d0a\">UpdateData</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <span class=\"keywordtype\">int</span> startVertex, <span class=\"keywordtype\">int</span> numVertices, cl_command_queue clQueue, </div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span>        cl_event* startEvents = NULL, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents = 0, cl_event* endEvent = NULL);</div>\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span> </div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span>    <span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00063\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01157.html#a2cf1549497a0e50dde24baad4792e08c\">   63</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01157.html#a2cf1549497a0e50dde24baad4792e08c\">UpdateData</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <span class=\"keywordtype\">int</span> startVertex, <span class=\"keywordtype\">int</span> numVertices,</div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span>                    DEVICE_CONTEXT context, </div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span>                    cl_event* startEvents = NULL, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents = 0, cl_event* endEvent = NULL) {</div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span>        <a class=\"code hl_function\" href=\"a01157.html#a7259d1296f30e13d171cd892708d8d0a\">UpdateData</a>(src, startVertex, numVertices, context-&gt;GetCommandQueue(), startEvents, numStartEvents, endEvent);</div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span> </div>\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01157.html#a77cee40767fd4936f20a8f9d9d9ea625\">   70</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01157.html#a77cee40767fd4936f20a8f9d9d9ea625\">GetNumElements</a>() <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span> </div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01157.html#aaf4a32b8a414eff77000c584c2015cb7\">   73</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01157.html#aaf4a32b8a414eff77000c584c2015cb7\">GetNumVertices</a>() <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span> </div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01157.html#ad9c25d5b96f9d5e971f677d32b406ec6\">   76</a></span>    cl_mem <a class=\"code hl_function\" href=\"a01157.html#ad9c25d5b96f9d5e971f677d32b406ec6\">BindCLBuffer</a>(cl_command_queue queue);</div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span> </div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span><span class=\"keyword\">protected</span>:</div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01157.html#a48e2b665b557d5f3f838bc552152160b\">   80</a></span>    <a class=\"code hl_function\" href=\"a01157.html#a48e2b665b557d5f3f838bc552152160b\">CLVertexBuffer</a>(<span class=\"keywordtype\">int</span> numElements, <span class=\"keywordtype\">int</span> numVertices, cl_context clContext);</div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span> </div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01157.html#a7ff15d15ad0fe31e5cb9a1e6c19f09b0\">   84</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01157.html#a7ff15d15ad0fe31e5cb9a1e6c19f09b0\">allocate</a>(cl_context clContext);</div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span> </div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>    <span class=\"keywordtype\">int</span> _numElements;</div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>    <span class=\"keywordtype\">int</span> _numVertices;</div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>    cl_mem _clMemory;</div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span> </div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>}  <span class=\"comment\">// end namespace Osd</span></div>\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span> </div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>}  <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span> </div>\n+<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>}  <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span> </div>\n+<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_CL_VERTEX_BUFFER_H</span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa01157_html\"><div class=\"ttname\"><a href=\"a01157.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLVertexBuffer</a></div><div class=\"ttdoc\">Concrete vertex buffer class for OpenCL subdivision.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00725_source.html#l00042\">clVertexBuffer.h:42</a></div></div>\n+<div class=\"ttc\" id=\"aa01157_html_a2cf1549497a0e50dde24baad4792e08c\"><div class=\"ttname\"><a href=\"a01157.html#a2cf1549497a0e50dde24baad4792e08c\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLVertexBuffer::UpdateData</a></div><div class=\"ttdeci\">void UpdateData(const float *src, int startVertex, int numVertices, DEVICE_CONTEXT context, cl_event *startEvents=NULL, unsigned int numStartEvents=0, cl_event *endEvent=NULL)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00725_source.html#l00063\">clVertexBuffer.h:63</a></div></div>\n+<div class=\"ttc\" id=\"aa01157_html_a4801ba3ea81294d3e7e3da970863896e\"><div class=\"ttname\"><a href=\"a01157.html#a4801ba3ea81294d3e7e3da970863896e\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLVertexBuffer::~CLVertexBuffer</a></div><div class=\"ttdeci\">~CLVertexBuffer()</div><div class=\"ttdoc\">Destructor.</div></div>\n+<div class=\"ttc\" id=\"aa01157_html_a48e2b665b557d5f3f838bc552152160b\"><div class=\"ttname\"><a href=\"a01157.html#a48e2b665b557d5f3f838bc552152160b\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLVertexBuffer::CLVertexBuffer</a></div><div class=\"ttdeci\">CLVertexBuffer(int numElements, int numVertices, cl_context clContext)</div><div class=\"ttdoc\">Constructor.</div></div>\n+<div class=\"ttc\" id=\"aa01157_html_a7259d1296f30e13d171cd892708d8d0a\"><div class=\"ttname\"><a href=\"a01157.html#a7259d1296f30e13d171cd892708d8d0a\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLVertexBuffer::UpdateData</a></div><div class=\"ttdeci\">void UpdateData(const float *src, int startVertex, int numVertices, cl_command_queue clQueue, cl_event *startEvents=NULL, unsigned int numStartEvents=0, cl_event *endEvent=NULL)</div></div>\n+<div class=\"ttc\" id=\"aa01157_html_a77cee40767fd4936f20a8f9d9d9ea625\"><div class=\"ttname\"><a href=\"a01157.html#a77cee40767fd4936f20a8f9d9d9ea625\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLVertexBuffer::GetNumElements</a></div><div class=\"ttdeci\">int GetNumElements() const</div><div class=\"ttdoc\">Returns how many elements defined in this vertex buffer.</div></div>\n+<div class=\"ttc\" id=\"aa01157_html_a7ff15d15ad0fe31e5cb9a1e6c19f09b0\"><div class=\"ttname\"><a href=\"a01157.html#a7ff15d15ad0fe31e5cb9a1e6c19f09b0\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLVertexBuffer::allocate</a></div><div class=\"ttdeci\">bool allocate(cl_context clContext)</div></div>\n+<div class=\"ttc\" id=\"aa01157_html_aaf4a32b8a414eff77000c584c2015cb7\"><div class=\"ttname\"><a href=\"a01157.html#aaf4a32b8a414eff77000c584c2015cb7\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLVertexBuffer::GetNumVertices</a></div><div class=\"ttdeci\">int GetNumVertices() const</div><div class=\"ttdoc\">Returns how many vertices allocated in this vertex buffer.</div></div>\n+<div class=\"ttc\" id=\"aa01157_html_ac5f331ad354f94f90a08a928f7f57bba\"><div class=\"ttname\"><a href=\"a01157.html#ac5f331ad354f94f90a08a928f7f57bba\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLVertexBuffer::Create</a></div><div class=\"ttdeci\">static CLVertexBuffer * Create(int numElements, int numVertices, cl_context clContext)</div><div class=\"ttdoc\">Creator. Returns NULL if error.</div></div>\n+<div class=\"ttc\" id=\"aa01157_html_ad1ac8e33d52862dac84a2da1483fee51\"><div class=\"ttname\"><a href=\"a01157.html#ad1ac8e33d52862dac84a2da1483fee51\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLVertexBuffer::Create</a></div><div class=\"ttdeci\">static CLVertexBuffer * Create(int numElements, int numVertices, DEVICE_CONTEXT context)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00725_source.html#l00049\">clVertexBuffer.h:49</a></div></div>\n+<div class=\"ttc\" id=\"aa01157_html_ad9c25d5b96f9d5e971f677d32b406ec6\"><div class=\"ttname\"><a href=\"a01157.html#ad9c25d5b96f9d5e971f677d32b406ec6\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLVertexBuffer::BindCLBuffer</a></div><div class=\"ttdeci\">cl_mem BindCLBuffer(cl_command_queue queue)</div><div class=\"ttdoc\">Returns the CL memory object.</div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_fa5edef2a780a73fbfb6a11f1af88ceb.html\">bfr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00725.html\">vertexDescriptor.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00725.html\">clVertexBuffer.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-vertexDescriptor.h\n+clVertexBuffer.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2021 Pixar\n+2// Copyright 2013 Pixar\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -24,446 +24,114 @@\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n 24\n-25#ifndef OPENSUBDIV3_BFR_VERTEX_DESCRIPTOR_H\n-26#define OPENSUBDIV3_BFR_VERTEX_DESCRIPTOR_H\n+25#ifndef OPENSUBDIV3_OSD_CL_VERTEX_BUFFER_H\n+26#define OPENSUBDIV3_OSD_CL_VERTEX_BUFFER_H\n 27\n 28#include \"../version.h\"\n-29\n-30#include \"../vtr/stackBuffer.h\"\n-31\n-32namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-33namespace OPENSUBDIV_VERSION {\n-34\n-35namespace Bfr {\n-36\n-50//\n-51// WIP - need to migrate some of these comments into Doxygen\n-52// - others will be moved to the external documentation\n-53//\n-54// It is used by subclasses of SurfaceFactory to provide a complete\n-55// topological description for each vertex of a face, i.e. invoked via\n-56// the virtual method:\n-57//\n-58// int populateFaceVertexDescriptor(Index baseFace,\n-59// int cornerVertex,\n-60// VertexDescriptor & v) const;\n-61//\n-62// Assignment of the full topology can be involved in the presence of\n-63// irregular faces, non-manifold topology or creasing around a vertex, but\n-64// many cases will be simple. For example, to specify a regular boundary\n-65// vertex of a Catmark mesh without any optional sharpness:\n-66//\n-67// int numIncidentFaces = 2;\n-68// bool vertexOnBoundary = true;\n-69//\n-70// vd.Initialize(numIncidentFaces);\n-71// vd.SetManifold(true);\n-72// vd.SetBoundary(vertexOnBoundary);\n-73// vd.ClearIncidentFaceSizes();\n-74// vd.Finalize();\n-75//\n-76// For a more general example, to assign a vertex of some valence whose\n-77// incident faces are of different sizes (e.g. required when triangles\n-78// appear around a vertex in an otherwise quad-dominant Catmark mesh):\n-79//\n-80// int numIncidentFaces = meshVertex.GetNumIncidentFaces();\n-81// bool vertexOnBoundary = meshVertex.IsBoundar();\n-82//\n-83// vd.Initialize(numIncidentFaces);\n-84// vd.SetManifold(true);\n-85// vd.SetBoundary(vertexOnBoundary);\n-86//\n-87// for (int i = 0; i < numIncidentFaces; ++i) {\n-88// vd.SetIncidentFaceSize(i, meshVertex.GetIncidentFaceSize(i));\n-89// }\n-90// vd.Finalize();\n-91//\n-92// These examples specify the incident faces as forming a manifold ring\n-93// (or half-ring) around the vertex, i.e. they can be specified as a\n-94// continuous, connected sequence in counter-clockwise order (and also\n-95// without degeneracies). In the case of a boundary vertex, the first\n-96// face must be on the leading edge of the boundary while the last is on\n-97// the trailing edge. For an interior vertex, which face is specified\n-98// first does not matter (since the set is periodic).\n-99//\n-100// In both cases, the location of the base face in this sequence -- the\n-101// face whose corner vertex is being described here -- must be specified\n-102// in the return value to populateFaceVertexDescriptor() (e.g. when a\n-103// boundary vertex has 3 incident faces, a return value of 0, 1 or 2\n-104// will indicate which is the base face).\n-105//\n-106// The corresponding methods to specify mesh control vertex indices (or\n-107// face-varying indices) complete the specification of the neighborhood:\n-108//\n-109// int getFaceCornerVertexIndices(Index baseFace, int cornerVertex,\n-110// Index vertexIndices[]) const;\n-111//\n-112// int getFaceCornerFVarValueIndices(Index baseFace, int cornerVertex,\n-113// Index fvarValueIndices[],\n-114// int fvarChannel) const;\n-115//\n-116// and are invoked by the Factory when needed.\n-117//\n-118// For each incident face, the indices for all vertices of that face are\n-119// to be specified (not the one-ring or some other subset). These indices\n-120// must also be specified in an orientation relative to the vertex, i.e.\n-121// for a vertex A and an incident face with face-vertices that may be\n-122// stored internally as {D, C, A, B}, they must be specified with A first\n-123// as {A, B, C, D}. This may seem a bit cumbersome, but it has clear\n-124// advantages when dealing with face-varying indices and unordered faces.\n-125//\n-126// More compact ways of specifying vertex indices for ordered, manifold\n-127// cases may be worth exploring in future, but face-varying indices and\n-128// non-manifold (unordered) vertices will always require such a full set,\n-129// so both methods will need to co-exist.\n-130//\n-_\b1_\b3_\b1class _\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br {\n-132public:\n-133 // The full declaration must be enclosed by calls to these methods:\n-134 //\n-135 // Note that vertex valences or face sizes in excess of those defined\n-136 // in Bfr::Limits (typically 16-bits) are not valid. When specifying\n-137 // values in excess of these limits, initialization will fail and/or\n-138 // the descriptor will be marked invalid and finalization will fail.\n-139 //\n-140\n-142\n-149\n-_\b1_\b5_\b1 bool _\bI_\bn_\bi_\bt_\bi_\ba_\bl_\bi_\bz_\be(int numIncidentFaces);\n-152\n-_\b1_\b5_\b4 bool _\bF_\bi_\bn_\ba_\bl_\bi_\bz_\be();\n-155\n-157 bool _\bI_\bs_\bV_\ba_\bl_\bi_\bd() const;\n-159\n-160 //\n-161 // WIP - need to migrate these comments into Doxygen\n-162 //\n-163 // Three groups of methods describe the topology around a vertex:\n-164 // - simple properties (vertex is a boundary, manifold, etc.)\n-165 // - sizes of incident faces (constant or size for each face)\n-166 // - sharpness of the vertex and its incident edges (optional)\n-167 //\n-168\n-169 // Manifold and boundary conditions:\n-170 //\n-171 // The manifold property is a strict condition but preferred for\n-172 // efficiency and is usually available from common connected mesh\n-173 // representations. When declaring the topology as \"manifold\",\n-174 // the Factory assumes the following:\n-175 //\n-176 // - all incident faces are \"ordered\" (counter-clockwise)\n-177 // - all incident faces are consistently oriented\n-178 // - all incident edges are non-degenerate\n-179 //\n-180 // If not certain that all of these conditions are met, it is best\n-181 // to not declare manifold -- leaving the Factory to make sense of\n-182 // the set of incident faces from the face-vertex indices that are\n-183 // provided elsewhere.\n-184 //\n-185\n-187\n-191\n-193 void _\bS_\be_\bt_\bM_\ba_\bn_\bi_\bf_\bo_\bl_\bd(bool isManifold);\n-194\n-196 void _\bS_\be_\bt_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by(bool isOnBoundary);\n-197\n-199 void _\bS_\be_\bt_\bI_\bn_\bc_\bi_\bd_\be_\bn_\bt_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be(int faceIndex, int faceSize);\n-200\n-202 void _\bC_\bl_\be_\ba_\br_\bI_\bn_\bc_\bi_\bd_\be_\bn_\bt_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be_\bs();\n-203\n-205 void _\bS_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs(float sharpness);\n-206\n-208 void _\bC_\bl_\be_\ba_\br_\bV_\be_\br_\bt_\be_\bx_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs();\n-209\n-221 void _\bS_\be_\bt_\bM_\ba_\bn_\bi_\bf_\bo_\bl_\bd_\bE_\bd_\bg_\be_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs(int edgeIndex, float edgeSharpness);\n-222\n-238 void _\bS_\be_\bt_\bI_\bn_\bc_\bi_\bd_\be_\bn_\bt_\bF_\ba_\bc_\be_\bE_\bd_\bg_\be_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs(int faceIndex, float leadingEdgeSharp,\n-239 float trailingEdgeSharp);\n-240\n-242 void _\bC_\bl_\be_\ba_\br_\bE_\bd_\bg_\be_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs();\n-244\n-246\n-251\n-253 bool _\bI_\bs_\bM_\ba_\bn_\bi_\bf_\bo_\bl_\bd() const;\n-254\n-256 bool _\bI_\bs_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by() const;\n-257\n-259 bool _\bH_\ba_\bs_\bI_\bn_\bc_\bi_\bd_\be_\bn_\bt_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be_\bs() const;\n-260\n-262 int _\bG_\be_\bt_\bI_\bn_\bc_\bi_\bd_\be_\bn_\bt_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be(int faceIndex) const;\n-263\n-265 bool _\bH_\ba_\bs_\bV_\be_\br_\bt_\be_\bx_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs() const;\n-266\n-268 float _\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs() const;\n-269\n-271 bool _\bH_\ba_\bs_\bE_\bd_\bg_\be_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs() const;\n-272\n-274 float _\bG_\be_\bt_\bM_\ba_\bn_\bi_\bf_\bo_\bl_\bd_\bE_\bd_\bg_\be_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs(int edgeIndex) const;\n-275\n-277 void _\bG_\be_\bt_\bI_\bn_\bc_\bi_\bd_\be_\bn_\bt_\bF_\ba_\bc_\be_\bE_\bd_\bg_\be_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs(int faceIndex,\n-278 float * leadingEdgeSharp, float * trailingEdgeSharp) const;\n-280\n-281protected:\n-283 friend class FaceVertex;\n-284\n-285 _\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br() { }\n-286 _\b~_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br() { }\n-287\n-288 typedef Vtr::internal::StackBuffer<int,8,true> IntBuffer;\n-289 typedef Vtr::internal::StackBuffer<float,16,true> FloatBuffer;\n-290\n-291 void initFaceSizes();\n-292 void initEdgeSharpness();\n-294\n-295protected:\n-297 // Member variables assigned through the above interface:\n-298 unsigned short _isValid : 1;\n-299 unsigned short _isInitialized : 1;\n-300 unsigned short _isFinalized : 1;\n-301\n-302 unsigned short _isManifold : 1;\n-303 unsigned short _isBoundary : 1;\n-304\n-305 unsigned short _hasFaceSizes : 1;\n-306 unsigned short _hasEdgeSharpness : 1;\n-307\n-308 short _numFaces;\n-309 float _vertSharpness;\n-310\n-311 FloatBuffer _faceEdgeSharpness;\n-312 IntBuffer _faceSizeOffsets;\n-314};\n-315\n-316//\n-317// Public inline methods for simple assignment:\n-318//\n-319inline bool\n-_\b3_\b2_\b0_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bI_\bs_\bV_\ba_\bl_\bi_\bd() const {\n-321 return _isValid;\n-322}\n-323\n-324inline void\n-_\b3_\b2_\b5_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bS_\be_\bt_\bM_\ba_\bn_\bi_\bf_\bo_\bl_\bd(bool isManifold) {\n-326 _isManifold = isManifold;\n-327}\n-328inline bool\n-_\b3_\b2_\b9_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bI_\bs_\bM_\ba_\bn_\bi_\bf_\bo_\bl_\bd() const {\n-330 return _isManifold;\n-331}\n-332\n-333inline void\n-_\b3_\b3_\b4_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bS_\be_\bt_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by(bool isBoundary) {\n-335 _isBoundary = isBoundary;\n-336}\n-337inline bool\n-_\b3_\b3_\b8_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bI_\bs_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by() const {\n-339 return _isBoundary;\n-340}\n-341\n-342//\n-343// Public inline methods involving sizes of incident faces:\n-344//\n-345inline bool\n-_\b3_\b4_\b6_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bH_\ba_\bs_\bI_\bn_\bc_\bi_\bd_\be_\bn_\bt_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be_\bs() const {\n-347 return _hasFaceSizes;\n-348}\n-349inline void\n-_\b3_\b5_\b0_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bC_\bl_\be_\ba_\br_\bI_\bn_\bc_\bi_\bd_\be_\bn_\bt_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be_\bs() {\n-351 _hasFaceSizes = false;\n-352}\n-353\n-354inline void\n-_\b3_\b5_\b5_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bS_\be_\bt_\bI_\bn_\bc_\bi_\bd_\be_\bn_\bt_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be(int incFaceIndex, int faceSize) {\n-356\n-357 if (!_hasFaceSizes) initFaceSizes();\n-358\n-359 _faceSizeOffsets[incFaceIndex] = faceSize;\n-360}\n-361inline int\n-_\b3_\b6_\b2_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bG_\be_\bt_\bI_\bn_\bc_\bi_\bd_\be_\bn_\bt_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be(int incFaceIndex) const {\n-363\n-364 return _isFinalized ?\n-365 (_faceSizeOffsets[incFaceIndex+1] - _faceSizeOffsets[incFaceIndex]) :\n-366 _faceSizeOffsets[incFaceIndex];\n-367}\n-368\n-369//\n-370// Public inline methods involving vertex sharpness:\n-371//\n-372inline bool\n-_\b3_\b7_\b3_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bH_\ba_\bs_\bV_\be_\br_\bt_\be_\bx_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs() const {\n-374 return _vertSharpness > 0.0f;\n-375}\n-376inline void\n-_\b3_\b7_\b7_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bC_\bl_\be_\ba_\br_\bV_\be_\br_\bt_\be_\bx_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs() {\n-378 _vertSharpness = 0.0f;\n-379}\n-380\n-381inline void\n-_\b3_\b8_\b2_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bS_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs(float vertSharpness) {\n-383 _vertSharpness = vertSharpness;\n-384}\n-385inline float\n-_\b3_\b8_\b6_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs() const {\n-387 return _vertSharpness;\n-388}\n-389\n-390//\n-391// Public inline methods involving vertex sharpness:\n-392//\n-393inline bool\n-_\b3_\b9_\b4_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bH_\ba_\bs_\bE_\bd_\bg_\be_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs() const {\n-395 return _hasEdgeSharpness;\n-396}\n-397inline void\n-_\b3_\b9_\b8_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bC_\bl_\be_\ba_\br_\bE_\bd_\bg_\be_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs() {\n-399 _hasEdgeSharpness = false;\n-400}\n-401\n-402inline void\n-_\b4_\b0_\b3_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bS_\be_\bt_\bM_\ba_\bn_\bi_\bf_\bo_\bl_\bd_\bE_\bd_\bg_\be_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs(int edgeIndex, float sharpness) {\n-404\n-405 if (!_hasEdgeSharpness) initEdgeSharpness();\n-406\n-407 // Assign the leading edge of the face after the edge (even index):\n-408 if (edgeIndex < _numFaces) {\n-409 _faceEdgeSharpness[2*edgeIndex] = sharpness;\n-410 }\n-411\n-412 // Assign the trailing edge of the face before the edge (odd index):\n-413 if (edgeIndex > 0) {\n-414 _faceEdgeSharpness[2*edgeIndex-1] = sharpness;\n-415 } else if (!_\bI_\bs_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by()) {\n-416 _faceEdgeSharpness[2*_numFaces-1] = sharpness;\n-417 }\n-418}\n-419inline float\n-_\b4_\b2_\b0_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bG_\be_\bt_\bM_\ba_\bn_\bi_\bf_\bo_\bl_\bd_\bE_\bd_\bg_\be_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs(int edgeIndex) const {\n-421\n-422 // All edges are first of the pair (even index) except last of boundary\n-423 return _faceEdgeSharpness[2*edgeIndex - (edgeIndex == _numFaces)];\n-424}\n-425\n-426inline void\n-_\b4_\b2_\b7_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bS_\be_\bt_\bI_\bn_\bc_\bi_\bd_\be_\bn_\bt_\bF_\ba_\bc_\be_\bE_\bd_\bg_\be_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs(int faceIndex,\n-428 float leadingEdgeSharpness, float trailingEdgeSharpness) {\n-429\n-430 if (!_hasEdgeSharpness) initEdgeSharpness();\n-431\n-432 _faceEdgeSharpness[2*faceIndex ] = leadingEdgeSharpness;\n-433 _faceEdgeSharpness[2*faceIndex+1] = trailingEdgeSharpness;\n-434}\n-435inline void\n-_\b4_\b3_\b6_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bG_\be_\bt_\bI_\bn_\bc_\bi_\bd_\be_\bn_\bt_\bF_\ba_\bc_\be_\bE_\bd_\bg_\be_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs(int faceIndex,\n-437 float * leadingEdgeSharpness, float * trailingEdgeSharpness) const {\n-438\n-439 *leadingEdgeSharpness = _faceEdgeSharpness[2*faceIndex];\n-440 *trailingEdgeSharpness = _faceEdgeSharpness[2*faceIndex+1];\n-441}\n-442\n-443} // end namespace Bfr\n-444\n-445} // end namespace OPENSUBDIV_VERSION\n-446using namespace OPENSUBDIV_VERSION;\n-447} // end namespace OpenSubdiv\n-448\n-449#endif /* OPENSUBDIV3_BFR_VERTEX_DESCRIPTOR_H */\n+29#include \"../osd/opencl.h\"\n+30\n+31namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+32namespace OPENSUBDIV_VERSION {\n+33\n+34namespace Osd {\n+35\n+_\b4_\b2class _\bC_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br {\n+43\n+44public:\n+_\b4_\b6 static _\bC_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br * _\bC_\br_\be_\ba_\bt_\be(int numElements, int numVertices, cl_context\n+clContext);\n+47\n+48 template <typename DEVICE_CONTEXT>\n+_\b4_\b9 static _\bC_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br * _\bC_\br_\be_\ba_\bt_\be(int numElements, int numVertices,\n+50 DEVICE_CONTEXT context) {\n+51 return _\bC_\br_\be_\ba_\bt_\be(numElements, numVertices, context->GetContext());\n+52 }\n+53\n+_\b5_\b5 _\b~_\bC_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br();\n+56\n+_\b5_\b9 void _\bU_\bp_\bd_\ba_\bt_\be_\bD_\ba_\bt_\ba(const float *src, int startVertex, int numVertices,\n+cl_command_queue clQueue,\n+60 cl_event* startEvents = NULL, unsigned int numStartEvents = 0, cl_event*\n+endEvent = NULL);\n+61\n+62 template<typename DEVICE_CONTEXT>\n+_\b6_\b3 void _\bU_\bp_\bd_\ba_\bt_\be_\bD_\ba_\bt_\ba(const float *src, int startVertex, int numVertices,\n+64 DEVICE_CONTEXT context,\n+65 cl_event* startEvents = NULL, unsigned int numStartEvents = 0, cl_event*\n+endEvent = NULL) {\n+66 _\bU_\bp_\bd_\ba_\bt_\be_\bD_\ba_\bt_\ba(src, startVertex, numVertices, context->GetCommandQueue(),\n+startEvents, numStartEvents, endEvent);\n+67 }\n+68\n+_\b7_\b0 int _\bG_\be_\bt_\bN_\bu_\bm_\bE_\bl_\be_\bm_\be_\bn_\bt_\bs() const;\n+71\n+_\b7_\b3 int _\bG_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs() const;\n+74\n+_\b7_\b6 cl_mem _\bB_\bi_\bn_\bd_\bC_\bL_\bB_\bu_\bf_\bf_\be_\br(cl_command_queue queue);\n+77\n+78protected:\n+_\b8_\b0 _\bC_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br(int numElements, int numVertices, cl_context clContext);\n+81\n+_\b8_\b4 bool _\ba_\bl_\bl_\bo_\bc_\ba_\bt_\be(cl_context clContext);\n+85\n+86private:\n+87 int _numElements;\n+88 int _numVertices;\n+89 cl_mem _clMemory;\n+90};\n+91\n+92} // end namespace Osd\n+93\n+94} // end namespace OPENSUBDIV_VERSION\n+95using namespace OPENSUBDIV_VERSION;\n+96\n+97} // end namespace OpenSubdiv\n+98\n+99#endif // OPENSUBDIV3_OSD_CL_VERTEX_BUFFER_H\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n-Simple class used by subclasses of SurfaceFactory to describe a vertex.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bv_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b1_\b3_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs\n-float GetVertexSharpness() const\n-Return the sharpness of the vertex.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bv_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b3_\b8_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bF_\bi_\bn_\ba_\bl_\bi_\bz_\be\n-bool Finalize()\n-Terminate the sequence of specifications.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bS_\be_\bt_\bM_\ba_\bn_\bi_\bf_\bo_\bl_\bd\n-void SetManifold(bool isManifold)\n-Declare the vertex neighborhood as manifold (ordered)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bv_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b3_\b2_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bI_\bn_\bi_\bt_\bi_\ba_\bl_\bi_\bz_\be\n-bool Initialize(int numIncidentFaces)\n-Initialize specification with the number of incident faces.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bI_\bs_\bM_\ba_\bn_\bi_\bf_\bo_\bl_\bd\n-bool IsManifold() const\n-Return if vertex neighborhood is manifold.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bv_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b3_\b2_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bH_\ba_\bs_\bE_\bd_\bg_\be_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs\n-bool HasEdgeSharpness() const\n-Return if sharpness was assigned to the incident edges.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bv_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b3_\b9_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bG_\be_\bt_\bI_\bn_\bc_\bi_\bd_\be_\bn_\bt_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be\n-int GetIncidentFaceSize(int faceIndex) const\n-Return the size of an incident face.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bv_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b3_\b6_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bG_\be_\bt_\bM_\ba_\bn_\bi_\bf_\bo_\bl_\bd_\bE_\bd_\bg_\be_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs\n-float GetManifoldEdgeSharpness(int edgeIndex) const\n-Return the sharpness assigned to a manifold edge.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bv_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b4_\b2_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:\n-_\bS_\be_\bt_\bI_\bn_\bc_\bi_\bd_\be_\bn_\bt_\bF_\ba_\bc_\be_\bE_\bd_\bg_\be_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs\n-void SetIncidentFaceEdgeSharpness(int faceIndex, float leadingEdgeSharp, float\n-trailingEdgeSharp)\n-Assign sharpness to the edges of an incident face.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bv_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b4_\b2_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bH_\ba_\bs_\bV_\be_\br_\bt_\be_\bx_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs\n-bool HasVertexSharpness() const\n-Return if sharpness was assigned to the vertex.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bv_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b3_\b7_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bC_\bl_\be_\ba_\br_\bI_\bn_\bc_\bi_\bd_\be_\bn_\bt_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be_\bs\n-void ClearIncidentFaceSizes()\n-Remove any assigned sizes of incident faces.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bv_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b3_\b5_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bS_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs\n-void SetVertexSharpness(float sharpness)\n-Assign sharpness to the vertex.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bv_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b3_\b8_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bC_\bl_\be_\ba_\br_\bV_\be_\br_\bt_\be_\bx_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs\n-void ClearVertexSharpness()\n-Remove any sharpness assigned to the vertex.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bv_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b3_\b7_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bC_\bl_\be_\ba_\br_\bE_\bd_\bg_\be_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs\n-void ClearEdgeSharpness()\n-Remove any sharpness assigned to the incident edges.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bv_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b3_\b9_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:\n-_\bG_\be_\bt_\bI_\bn_\bc_\bi_\bd_\be_\bn_\bt_\bF_\ba_\bc_\be_\bE_\bd_\bg_\be_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs\n-void GetIncidentFaceEdgeSharpness(int faceIndex, float *leadingEdgeSharp, float\n-*trailingEdgeSharp) const\n-Return the sharpness assigned to edges of an incident face.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bv_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b4_\b3_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bI_\bs_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by\n-bool IsBoundary() const\n-Return if vertex neighborhood is on a boundary.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bv_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b3_\b3_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bI_\bs_\bV_\ba_\bl_\bi_\bd\n-bool IsValid() const\n-Return if instance is valid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bv_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b3_\b2_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bH_\ba_\bs_\bI_\bn_\bc_\bi_\bd_\be_\bn_\bt_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be_\bs\n-bool HasIncidentFaceSizes() const\n-Return if the sizes of incident faces are assigned.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bv_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b3_\b4_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bS_\be_\bt_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by\n-void SetBoundary(bool isOnBoundary)\n-Declare the vertex neighborhood as being on a boundary.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bv_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b3_\b3_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bS_\be_\bt_\bI_\bn_\bc_\bi_\bd_\be_\bn_\bt_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be\n-void SetIncidentFaceSize(int faceIndex, int faceSize)\n-Assign the size of an incident face.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bv_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b3_\b5_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bS_\be_\bt_\bM_\ba_\bn_\bi_\bf_\bo_\bl_\bd_\bE_\bd_\bg_\be_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs\n-void SetManifoldEdgeSharpness(int edgeIndex, float edgeSharpness)\n-Assign sharpness to the edge of a manifold neighborhood.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bv_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b4_\b0_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+Concrete vertex buffer class for OpenCL subdivision.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh_\b:_\b4_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bU_\bp_\bd_\ba_\bt_\be_\bD_\ba_\bt_\ba\n+void UpdateData(const float *src, int startVertex, int numVertices,\n+DEVICE_CONTEXT context, cl_event *startEvents=NULL, unsigned int\n+numStartEvents=0, cl_event *endEvent=NULL)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh_\b:_\b6_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\b~_\bC_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+~CLVertexBuffer()\n+Destructor.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bC_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+CLVertexBuffer(int numElements, int numVertices, cl_context clContext)\n+Constructor.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bU_\bp_\bd_\ba_\bt_\be_\bD_\ba_\bt_\ba\n+void UpdateData(const float *src, int startVertex, int numVertices,\n+cl_command_queue clQueue, cl_event *startEvents=NULL, unsigned int\n+numStartEvents=0, cl_event *endEvent=NULL)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bE_\bl_\be_\bm_\be_\bn_\bt_\bs\n+int GetNumElements() const\n+Returns how many elements defined in this vertex buffer.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\ba_\bl_\bl_\bo_\bc_\ba_\bt_\be\n+bool allocate(cl_context clContext)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n+int GetNumVertices() const\n+Returns how many vertices allocated in this vertex buffer.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n+static CLVertexBuffer * Create(int numElements, int numVertices, cl_context\n+clContext)\n+Creator. Returns NULL if error.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n+static CLVertexBuffer * Create(int numElements, int numVertices, DEVICE_CONTEXT\n+context)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh_\b:_\b4_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bB_\bi_\bn_\bd_\bC_\bL_\bB_\bu_\bf_\bf_\be_\br\n+cl_mem BindCLBuffer(cl_command_queue queue)\n+Returns the CL memory object.\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bb_\bf_\br\n-    * _\bv_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bc_\bl_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00728.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00728.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/sdc/loopScheme.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/osd/glslPatchShaderSource.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -88,38 +88,44 @@\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n+<a href=\"#nested-classes\">Classes</a> &#124;\n <a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">loopScheme.h File Reference</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">glslPatchShaderSource.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00743_source.html\">../sdc/scheme.h</a>&quot;</code><br />\n-<code>#include &lt;cassert&gt;</code><br />\n-<code>#include &lt;cmath&gt;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00857_source.html\">../far/patchDescriptor.h</a>&quot;</code><br />\n+<code>#include &lt;string&gt;</code><br />\n </div>\n <p><a href=\"a00728_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n+<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n+Classes</h2></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01241.html\">GLSLPatchShaderSource</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Provides shader source which can be used by client code.  <a href=\"a01241.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+</table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00913\" id=\"r_a00913\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00913.html\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc</a></td></tr>\n+<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_f61368944c63c2c1f8c69bc232e59c39.html\">sdc</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00728.html\">loopScheme.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00728.html\">glslPatchShaderSource.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,22 +1,25 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-loopScheme.h File Reference\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+glslPatchShaderSource.h File Reference\n #include \"../version.h\"\n-#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bs_\bc_\bh_\be_\bm_\be_\b._\bh\"\n-#include <cassert>\n-#include <cmath>\n+#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh\"\n+#include <string>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n+C\bCl\bla\bas\bss\bse\bes\bs\n+class \u00a0 _\bG_\bL_\bS_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be\n+\u00a0       Provides shader source which can be used by client code. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bs_\bd_\bc\n-    * _\bl_\bo_\bo_\bp_\bS_\bc_\bh_\be_\bm_\be_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bg_\bl_\bs_\bl_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00728_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00728_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/sdc/loopScheme.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/osd/glslPatchShaderSource.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">loopScheme.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">glslPatchShaderSource.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00728.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2014 DreamWorks Animation LLC.</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2015 Pixar</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -118,618 +118,72 @@\n <div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_SDC_LOOP_SCHEME_H</span></div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#define OPENSUBDIV3_SDC_LOOP_SCHEME_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span> </div>\n-<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span> </div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#include &quot;../sdc/scheme.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span> </div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &lt;cassert&gt;</span></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &lt;cmath&gt;</span></div>\n+<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_GLSL_PATCH_SHADER_SOURCE_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_GLSL_PATCH_SHADER_SOURCE_H</span></div>\n+<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n+<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../far/patchDescriptor.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &lt;string&gt;</span></div>\n <div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n <div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n <div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"keyword\">namespace </span>Sdc {</div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span> </div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">namespace </span>Osd {</div>\n <div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span> </div>\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"comment\">//  Specializations for Sdc::Scheme&lt;SCHEME_LOOP&gt;:</span></div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span> </div>\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span><span class=\"comment\">//  Loop traits:</span></div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n-<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#a0e02d297f903bddcf8bc10c0ae17ad3c\">   48</a></span><span class=\"keyword\">inline</span> <a class=\"code hl_enumeration\" href=\"a00913.html#a61ef2f8f765ba17f8036bcc0f0fa887b\">Split</a> <a class=\"code hl_function\" href=\"a01341.html#a14b97ddde5fba31ca7f933508ee649da\">Scheme&lt;SCHEME_LOOP&gt;::GetTopologicalSplitType</a>() { <span class=\"keywordflow\">return</span> <a class=\"code hl_enumvalue\" href=\"a00913.html#a61ef2f8f765ba17f8036bcc0f0fa887ba31959b36c678fcb560f478ecb7c051f5\">SPLIT_TO_TRIS</a>; }</div>\n-<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span> </div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#a36744b2ac3801874da987d36851be86c\">   51</a></span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01341.html#a531004716c07aad5436cb2db27e1ec24\">Scheme&lt;SCHEME_LOOP&gt;::GetRegularFaceSize</a>() { <span class=\"keywordflow\">return</span> 3; }</div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span> </div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#ad46ad6c30664729d163c5fcc20cdf917\">   54</a></span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01341.html#a8f7e983b2195ac6b388c7a6db17f8cb0\">Scheme&lt;SCHEME_LOOP&gt;::GetRegularVertexValence</a>() { <span class=\"keywordflow\">return</span> 6; }</div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span> </div>\n-<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#a953430a884584e984c0afbb058091be1\">   57</a></span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01341.html#a73cf51e4315ca86e5e0a3954c92f8f74\">Scheme&lt;SCHEME_LOOP&gt;::GetLocalNeighborhoodSize</a>() { <span class=\"keywordflow\">return</span> 1; }</div>\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00040\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01241.html\">   40</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01241.html\">GLSLPatchShaderSource</a> {</div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01241.html#ad41c6e1dc4a5cd6ee4f33fc5a8e15d1d\">   45</a></span>    <span class=\"keyword\">static</span> std::string <a class=\"code hl_function\" href=\"a01241.html#ad41c6e1dc4a5cd6ee4f33fc5a8e15d1d\">GetPatchBasisShaderSource</a>();</div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span> </div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01241.html#a230efce26a4754c94dbeedd435fe471b\">   50</a></span>    <span class=\"keyword\">static</span> std::string <a class=\"code hl_function\" href=\"a01241.html#a230efce26a4754c94dbeedd435fe471b\">GetPatchDrawingShaderSource</a>();</div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span> </div>\n <div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span> </div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span><span class=\"comment\">//  Protected methods to assign the two types of masks for an edge-vertex --</span></div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span><span class=\"comment\">//  Crease and Smooth.</span></div>\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span><span class=\"comment\">//  The Crease case does not really need to be specialized, though it may be</span></div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span><span class=\"comment\">//  preferable to define all explicitly here.</span></div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> EDGE, <span class=\"keyword\">typename</span> MASK&gt;</div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00070\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#a0b9bc37795aeebc3e732c117a5934426\">   70</a></span><a class=\"code hl_function\" href=\"a01341.html#a56964a4c783aa15ec1f819306ee9f214\">Scheme&lt;SCHEME_LOOP&gt;::assignCreaseMaskForEdge</a>(EDGE <span class=\"keyword\">const</span>&amp;, MASK&amp; mask)<span class=\"keyword\"> const</span></div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span><span class=\"keyword\"></span>{</div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>    mask.SetNumVertexWeights(2);</div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span>    mask.SetNumEdgeWeights(0);</div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span>    mask.SetNumFaceWeights(0);</div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span>    mask.SetFaceWeightsForFaceCenters(<span class=\"keyword\">false</span>);</div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span> </div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span>    mask.VertexWeight(0) = 0.5f;</div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span>    mask.VertexWeight(1) = 0.5f;</div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>}</div>\n-</div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01241.html#ad5f427d2655d384980715874209345e7\">   60</a></span>    <span class=\"keyword\">static</span> std::string <a class=\"code hl_function\" href=\"a01241.html#ad5f427d2655d384980715874209345e7\">GetCommonShaderSource</a>();</div>\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span> </div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01241.html#a20cb122b561de15ed3b90d7e4f5176d2\">   62</a></span>    <span class=\"keyword\">static</span> std::string <a class=\"code hl_function\" href=\"a01241.html#a20cb122b561de15ed3b90d7e4f5176d2\">GetVertexShaderSource</a>(</div>\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>        <a class=\"code hl_enumeration\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">Far::PatchDescriptor::Type</a> type);</div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span> </div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01241.html#afc38178f7de93f60d4f6c1072c33cc7e\">   65</a></span>    <span class=\"keyword\">static</span> std::string <a class=\"code hl_function\" href=\"a01241.html#afc38178f7de93f60d4f6c1072c33cc7e\">GetTessControlShaderSource</a>(</div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span>        <a class=\"code hl_enumeration\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">Far::PatchDescriptor::Type</a> type);</div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span> </div>\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01241.html#a57a46d6848317cc76a02bc166ee05c24\">   68</a></span>    <span class=\"keyword\">static</span> std::string <a class=\"code hl_function\" href=\"a01241.html#a57a46d6848317cc76a02bc166ee05c24\">GetTessEvalShaderSource</a>(</div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span>        <a class=\"code hl_enumeration\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">Far::PatchDescriptor::Type</a> type);</div>\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span> </div>\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span> </div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span>}  <span class=\"comment\">// end namespace Osd</span></div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span> </div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span>}  <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span> </div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n <div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span> </div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> EDGE, <span class=\"keyword\">typename</span> MASK&gt;</div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00084\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#a16cbaf7f173cf2fdc02c992d3a31c925\">   84</a></span><a class=\"code hl_function\" href=\"a01341.html#a059f5c2c9193be58be31955e987a0600\">Scheme&lt;SCHEME_LOOP&gt;::assignSmoothMaskForEdge</a>(EDGE <span class=\"keyword\">const</span>&amp; edge, MASK&amp; mask)<span class=\"keyword\"> const</span></div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span><span class=\"keyword\"></span>{</div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>    <span class=\"keywordtype\">int</span> faceCount = edge.GetNumFaces();</div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span> </div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>    mask.SetNumVertexWeights(2);</div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>    mask.SetNumEdgeWeights(0);</div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>    mask.SetNumFaceWeights(faceCount);</div>\n-<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>    mask.SetFaceWeightsForFaceCenters(<span class=\"keyword\">false</span>);</div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span> </div>\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>    <span class=\"comment\">//  This is where we run into the issue of &quot;face weights&quot; -- we want to weight the</span></div>\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span>    <span class=\"comment\">//  face-centers for Catmark, but face-centers are not generated for Loop.  So do</span></div>\n-<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span>    <span class=\"comment\">//  we make assumptions on how the mask is used, assign some property to the mask</span></div>\n-<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>    <span class=\"comment\">//  to indicate how they were assigned, or take input from the mask itself?</span></div>\n-<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span>    <span class=\"comment\">//  Regardless, we have two choices:</span></div>\n-<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span>    <span class=\"comment\">//      - face-weights are for the vertices opposite the edge (as in Hbr):</span></div>\n-<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span>    <span class=\"comment\">//          vertex weights = 0.375f;</span></div>\n-<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span>    <span class=\"comment\">//          face weights   = 0.125f;</span></div>\n-<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span>    <span class=\"comment\">//      - face-weights are for the face centers:</span></div>\n-<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span>    <span class=\"comment\">//          vertex weights = 0.125f;</span></div>\n-<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span>    <span class=\"comment\">//          face weights   = 0.375f;</span></div>\n-<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span>    <span class=\"comment\">//  Coincidentally the coefficients are the same but reversed.</span></div>\n-<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span>    <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> MASK::Weight Weight;</div>\n-<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span> </div>\n-<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span>    Weight vWeight = mask.AreFaceWeightsForFaceCenters() ? 0.125f : 0.375f;</div>\n-<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span>    Weight fWeight = mask.AreFaceWeightsForFaceCenters() ? 0.375f : 0.125f;</div>\n-<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span> </div>\n-<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span>    mask.VertexWeight(0) = vWeight;</div>\n-<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\">  116</span>    mask.VertexWeight(1) = vWeight;</div>\n-<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span> </div>\n-<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\">  118</span>    <span class=\"keywordflow\">if</span> (faceCount == 2) {</div>\n-<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span>        mask.FaceWeight(0) = fWeight;</div>\n-<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span>        mask.FaceWeight(1) = fWeight;</div>\n-<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\">  121</span>    } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span>        <span class=\"comment\">//  The non-manifold case is not clearly defined -- we adjust the above</span></div>\n-<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span>        <span class=\"comment\">//  face-weight to preserve the ratio of edge-center and face-centers:</span></div>\n-<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span>        fWeight *= 2.0f / (Weight) faceCount;</div>\n-<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span>        <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; faceCount; ++i) {</div>\n-<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span>            mask.FaceWeight(i) = fWeight;</div>\n-<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span>        }</div>\n-<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span>    }</div>\n-<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span> </div>\n-<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\">  131</span> </div>\n-<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\">  132</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\">  133</span><span class=\"comment\">//  Protected methods to assign the three types of masks for a vertex-vertex --</span></div>\n-<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\">  134</span><span class=\"comment\">//  Corner, Crease and Smooth (Dart is the same as Smooth).</span></div>\n-<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\">  135</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\">  136</span><span class=\"comment\">//  Corner and Crease do not really need to be specialized, though it may be</span></div>\n-<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\">  137</span><span class=\"comment\">//  preferable to define all explicitly here.</span></div>\n-<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\">  138</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\">  139</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n-<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\">  140</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK&gt;</div>\n-<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\">  141</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00142\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#a69f605f0483a055ef68c29fd0d9d10d2\">  142</a></span><a class=\"code hl_function\" href=\"a01341.html#a77644f69ede03fa62222d60a99970238\">Scheme&lt;SCHEME_LOOP&gt;::assignCornerMaskForVertex</a>(VERTEX <span class=\"keyword\">const</span>&amp;, MASK&amp; mask)<span class=\"keyword\"> const</span></div>\n-<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\">  143</span><span class=\"keyword\"></span>{</div>\n-<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\">  144</span>    mask.SetNumVertexWeights(1);</div>\n-<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\">  145</span>    mask.SetNumEdgeWeights(0);</div>\n-<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\">  146</span>    mask.SetNumFaceWeights(0);</div>\n-<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\">  147</span>    mask.SetFaceWeightsForFaceCenters(<span class=\"keyword\">false</span>);</div>\n-<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\">  148</span> </div>\n-<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\">  149</span>    mask.VertexWeight(0) = 1.0f;</div>\n-<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\">  150</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\">  151</span> </div>\n-<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\">  152</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n-<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\">  153</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK&gt;</div>\n-<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\">  154</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00155\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#aae024a2b2e5e40f3f35c836beaee2acf\">  155</a></span><a class=\"code hl_function\" href=\"a01341.html#a2439e78373d9dfd6ad3ab373c7c32dcc\">Scheme&lt;SCHEME_LOOP&gt;::assignCreaseMaskForVertex</a>(VERTEX <span class=\"keyword\">const</span>&amp; vertex, MASK&amp; mask,</div>\n-<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\">  156</span>                                               <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> creaseEnds[2])<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\">  157</span>    <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> MASK::Weight Weight;</div>\n-<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\">  158</span> </div>\n-<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\">  159</span>    <span class=\"keywordtype\">int</span> valence = vertex.GetNumEdges();</div>\n-<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\">  160</span> </div>\n-<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\">  161</span>    mask.SetNumVertexWeights(1);</div>\n-<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\">  162</span>    mask.SetNumEdgeWeights(valence);</div>\n-<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\">  163</span>    mask.SetNumFaceWeights(0);</div>\n-<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\">  164</span>    mask.SetFaceWeightsForFaceCenters(<span class=\"keyword\">false</span>);</div>\n-<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\">  165</span> </div>\n-<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\">  166</span>    Weight vWeight = 0.75f;</div>\n-<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\">  167</span>    Weight eWeight = 0.125f;</div>\n-<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\">  168</span> </div>\n-<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\">  169</span>    mask.VertexWeight(0) = vWeight;</div>\n-<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\">  170</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; valence; ++i) {</div>\n-<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span>        mask.EdgeWeight(i) = 0.0f;</div>\n-<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\">  172</span>    }</div>\n-<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\">  173</span>    mask.EdgeWeight(creaseEnds[0]) = eWeight;</div>\n-<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\">  174</span>    mask.EdgeWeight(creaseEnds[1]) = eWeight;</div>\n-<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\">  175</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\">  176</span> </div>\n-<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n-<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\">  178</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK&gt;</div>\n-<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\">  179</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00180\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#ad60bcde0b6056db8500466af6951d05a\">  180</a></span><a class=\"code hl_function\" href=\"a01341.html#a84788a5a93f17e648103123c9f4a33f9\">Scheme&lt;SCHEME_LOOP&gt;::assignSmoothMaskForVertex</a>(VERTEX <span class=\"keyword\">const</span>&amp; vertex, MASK&amp; mask)<span class=\"keyword\"> const</span></div>\n-<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\">  181</span><span class=\"keyword\"></span>{</div>\n-<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\">  182</span>    <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> MASK::Weight Weight;</div>\n-<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\">  183</span> </div>\n-<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\">  184</span>    <span class=\"keywordtype\">int</span> valence = vertex.GetNumFaces();</div>\n-<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\">  185</span> </div>\n-<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\">  186</span>    mask.SetNumVertexWeights(1);</div>\n-<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\">  187</span>    mask.SetNumEdgeWeights(valence);</div>\n-<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\">  188</span>    mask.SetNumFaceWeights(0);</div>\n-<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\">  189</span>    mask.SetFaceWeightsForFaceCenters(<span class=\"keyword\">false</span>);</div>\n-<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\">  190</span> </div>\n-<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\">  191</span>    <span class=\"comment\">//  Specialize for the regular case:  1/16 per edge-vert, 5/8 for the vert itself:</span></div>\n-<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\">  192</span>    Weight eWeight = (Weight) 0.0625f;</div>\n-<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\">  193</span>    Weight vWeight = (Weight) 0.625f;</div>\n-<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\">  194</span> </div>\n-<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\">  195</span>    <span class=\"keywordflow\">if</span> (valence != 6) {</div>\n-<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\">  196</span>        <span class=\"comment\">//  From HbrLoopSubdivision&lt;T&gt;::Subdivide(mesh, vertex):</span></div>\n-<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\">  197</span>        <span class=\"comment\">//     - could use some lookup tables here for common irregular valence (5, 7, 8)</span></div>\n-<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\">  198</span>        <span class=\"comment\">//       or all of these cosine calls will be adding up...</span></div>\n-<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\">  199</span> </div>\n-<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\">  200</span>        <span class=\"keywordtype\">double</span> dValence   = (double) valence;</div>\n-<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\">  201</span>        <span class=\"keywordtype\">double</span> invValence = 1.0f / dValence;</div>\n-<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\">  202</span>        <span class=\"keywordtype\">double</span> cosTheta   = std::cos(M_PI * 2.0f * invValence);</div>\n-<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\">  203</span> </div>\n-<div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\">  204</span>        <span class=\"keywordtype\">double</span> beta = 0.25f * cosTheta + 0.375f;</div>\n-<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\">  205</span> </div>\n-<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\">  206</span>        eWeight = (Weight) ((0.625f - (beta * beta)) * invValence);</div>\n-<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\">  207</span>        vWeight = (Weight) (1.0f - (eWeight * dValence));</div>\n-<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\">  208</span>    }</div>\n-<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\">  209</span> </div>\n-<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\">  210</span>    mask.VertexWeight(0) = vWeight;</div>\n-<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\">  211</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; valence; ++i) {</div>\n-<div class=\"line\"><a id=\"l00212\" name=\"l00212\"></a><span class=\"lineno\">  212</span>        mask.EdgeWeight(i) = eWeight;</div>\n-<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\">  213</span>    }</div>\n-<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\">  214</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\">  215</span> </div>\n-<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\">  216</span> </div>\n-<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\">  217</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\">  218</span><span class=\"comment\">//  Limit masks for position:</span></div>\n-<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\">  219</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\">  220</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n-<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\">  221</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK&gt;</div>\n-<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\">  222</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00223\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#ab38c56ce6121aed94f2796bf5df894be\">  223</a></span><a class=\"code hl_function\" href=\"a01341.html#aa2821d365ea8135d6316c0f926f87ccb\">Scheme&lt;SCHEME_LOOP&gt;::assignCornerLimitMask</a>(VERTEX <span class=\"keyword\">const</span>&amp; <span class=\"comment\">/* vertex */</span>, MASK&amp; posMask)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\">  224</span> </div>\n-<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\">  225</span>    posMask.SetNumVertexWeights(1);</div>\n-<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\">  226</span>    posMask.SetNumEdgeWeights(0);</div>\n-<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\">  227</span>    posMask.SetNumFaceWeights(0);</div>\n-<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\">  228</span>    posMask.SetFaceWeightsForFaceCenters(<span class=\"keyword\">false</span>);</div>\n-<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\">  229</span> </div>\n-<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\">  230</span>    posMask.VertexWeight(0) = 1.0f;</div>\n-<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\">  231</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\">  232</span> </div>\n-<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\">  233</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n-<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\">  234</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK&gt;</div>\n-<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\">  235</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00236\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#ad439ba00463a7af51cf821692d6cc2e3\">  236</a></span><a class=\"code hl_function\" href=\"a01341.html#a7c9316f7212d3ea41db7f3f1a66cc7e5\">Scheme&lt;SCHEME_LOOP&gt;::assignCreaseLimitMask</a>(VERTEX <span class=\"keyword\">const</span>&amp; vertex, MASK&amp; posMask,</div>\n-<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\">  237</span>                                           <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> creaseEnds[2])<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\">  238</span> </div>\n-<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\">  239</span>    <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> MASK::Weight Weight;</div>\n-<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\">  240</span> </div>\n-<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\">  241</span>    <span class=\"keywordtype\">int</span> valence = vertex.GetNumEdges();</div>\n-<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\">  242</span> </div>\n-<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\">  243</span>    posMask.SetNumVertexWeights(1);</div>\n-<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\">  244</span>    posMask.SetNumEdgeWeights(valence);</div>\n-<div class=\"line\"><a id=\"l00245\" name=\"l00245\"></a><span class=\"lineno\">  245</span>    posMask.SetNumFaceWeights(0);</div>\n-<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\">  246</span>    posMask.SetFaceWeightsForFaceCenters(<span class=\"keyword\">false</span>);</div>\n-<div class=\"line\"><a id=\"l00247\" name=\"l00247\"></a><span class=\"lineno\">  247</span> </div>\n-<div class=\"line\"><a id=\"l00248\" name=\"l00248\"></a><span class=\"lineno\">  248</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00249\" name=\"l00249\"></a><span class=\"lineno\">  249</span>    <span class=\"comment\">//  The refinement mask for a crease vertex is (1/8, 3/4, 1/8) and for a crease</span></div>\n-<div class=\"line\"><a id=\"l00250\" name=\"l00250\"></a><span class=\"lineno\">  250</span>    <span class=\"comment\">//  edge is (1/2, 1/2) -- producing a uniform B-spline curve along the crease</span></div>\n-<div class=\"line\"><a id=\"l00251\" name=\"l00251\"></a><span class=\"lineno\">  251</span>    <span class=\"comment\">//  (boundary) whether the vertex or its crease is regular or not.  The limit</span></div>\n-<div class=\"line\"><a id=\"l00252\" name=\"l00252\"></a><span class=\"lineno\">  252</span>    <span class=\"comment\">//  mask is therefore (1/6, 2/3, 1/6) for ALL cases.</span></div>\n-<div class=\"line\"><a id=\"l00253\" name=\"l00253\"></a><span class=\"lineno\">  253</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00254\" name=\"l00254\"></a><span class=\"lineno\">  254</span>    <span class=\"comment\">//  An alternative limit mask (1/5, 3/5, 1/5) is often published for use either</span></div>\n-<div class=\"line\"><a id=\"l00255\" name=\"l00255\"></a><span class=\"lineno\">  255</span>    <span class=\"comment\">//  for irregular crease vertices or for all crease/boundary vertices, but this</span></div>\n-<div class=\"line\"><a id=\"l00256\" name=\"l00256\"></a><span class=\"lineno\">  256</span>    <span class=\"comment\">//  is based on an alternate refinement mask for the edge -- (3/8, 5/8) versus</span></div>\n-<div class=\"line\"><a id=\"l00257\" name=\"l00257\"></a><span class=\"lineno\">  257</span>    <span class=\"comment\">//  the usual (1/2, 1/2) -- and will not produce the B-spline curve desired.</span></div>\n-<div class=\"line\"><a id=\"l00258\" name=\"l00258\"></a><span class=\"lineno\">  258</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00259\" name=\"l00259\"></a><span class=\"lineno\">  259</span>    Weight vWeight = (Weight) (4.0 / 6.0);</div>\n-<div class=\"line\"><a id=\"l00260\" name=\"l00260\"></a><span class=\"lineno\">  260</span>    Weight eWeight = (Weight) (1.0 / 6.0);</div>\n-<div class=\"line\"><a id=\"l00261\" name=\"l00261\"></a><span class=\"lineno\">  261</span> </div>\n-<div class=\"line\"><a id=\"l00262\" name=\"l00262\"></a><span class=\"lineno\">  262</span>    posMask.VertexWeight(0) = vWeight;</div>\n-<div class=\"line\"><a id=\"l00263\" name=\"l00263\"></a><span class=\"lineno\">  263</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; valence; ++i) {</div>\n-<div class=\"line\"><a id=\"l00264\" name=\"l00264\"></a><span class=\"lineno\">  264</span>        posMask.EdgeWeight(i) = 0.0f;</div>\n-<div class=\"line\"><a id=\"l00265\" name=\"l00265\"></a><span class=\"lineno\">  265</span>    }</div>\n-<div class=\"line\"><a id=\"l00266\" name=\"l00266\"></a><span class=\"lineno\">  266</span>    posMask.EdgeWeight(creaseEnds[0]) = eWeight;</div>\n-<div class=\"line\"><a id=\"l00267\" name=\"l00267\"></a><span class=\"lineno\">  267</span>    posMask.EdgeWeight(creaseEnds[1]) = eWeight;</div>\n-<div class=\"line\"><a id=\"l00268\" name=\"l00268\"></a><span class=\"lineno\">  268</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00269\" name=\"l00269\"></a><span class=\"lineno\">  269</span> </div>\n-<div class=\"line\"><a id=\"l00270\" name=\"l00270\"></a><span class=\"lineno\">  270</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n-<div class=\"line\"><a id=\"l00271\" name=\"l00271\"></a><span class=\"lineno\">  271</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK&gt;</div>\n-<div class=\"line\"><a id=\"l00272\" name=\"l00272\"></a><span class=\"lineno\">  272</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00273\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00273\" name=\"l00273\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#adbc763184791a8854374af8b123fa242\">  273</a></span><a class=\"code hl_function\" href=\"a01341.html#a736c10944cb921b334fbd8b81866d59f\">Scheme&lt;SCHEME_LOOP&gt;::assignSmoothLimitMask</a>(VERTEX <span class=\"keyword\">const</span>&amp; vertex, MASK&amp; posMask)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00274\" name=\"l00274\"></a><span class=\"lineno\">  274</span> </div>\n-<div class=\"line\"><a id=\"l00275\" name=\"l00275\"></a><span class=\"lineno\">  275</span>    <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> MASK::Weight Weight;</div>\n-<div class=\"line\"><a id=\"l00276\" name=\"l00276\"></a><span class=\"lineno\">  276</span> </div>\n-<div class=\"line\"><a id=\"l00277\" name=\"l00277\"></a><span class=\"lineno\">  277</span>    <span class=\"keywordtype\">int</span> valence = vertex.GetNumFaces();</div>\n-<div class=\"line\"><a id=\"l00278\" name=\"l00278\"></a><span class=\"lineno\">  278</span> </div>\n-<div class=\"line\"><a id=\"l00279\" name=\"l00279\"></a><span class=\"lineno\">  279</span>    posMask.SetNumVertexWeights(1);</div>\n-<div class=\"line\"><a id=\"l00280\" name=\"l00280\"></a><span class=\"lineno\">  280</span>    posMask.SetNumEdgeWeights(valence);</div>\n-<div class=\"line\"><a id=\"l00281\" name=\"l00281\"></a><span class=\"lineno\">  281</span>    posMask.SetNumFaceWeights(0);</div>\n-<div class=\"line\"><a id=\"l00282\" name=\"l00282\"></a><span class=\"lineno\">  282</span>    posMask.SetFaceWeightsForFaceCenters(<span class=\"keyword\">false</span>);</div>\n-<div class=\"line\"><a id=\"l00283\" name=\"l00283\"></a><span class=\"lineno\">  283</span> </div>\n-<div class=\"line\"><a id=\"l00284\" name=\"l00284\"></a><span class=\"lineno\">  284</span>    <span class=\"comment\">//  Specialize for the regular case:  1/12 per edge-vert, 1/2 for the vert itself:</span></div>\n-<div class=\"line\"><a id=\"l00285\" name=\"l00285\"></a><span class=\"lineno\">  285</span>    <span class=\"keywordflow\">if</span> (valence == 6) {</div>\n-<div class=\"line\"><a id=\"l00286\" name=\"l00286\"></a><span class=\"lineno\">  286</span>        Weight eWeight = (Weight) (1.0 / 12.0);</div>\n-<div class=\"line\"><a id=\"l00287\" name=\"l00287\"></a><span class=\"lineno\">  287</span>        Weight vWeight = 0.5f;</div>\n-<div class=\"line\"><a id=\"l00288\" name=\"l00288\"></a><span class=\"lineno\">  288</span> </div>\n-<div class=\"line\"><a id=\"l00289\" name=\"l00289\"></a><span class=\"lineno\">  289</span>        posMask.VertexWeight(0) = vWeight;</div>\n-<div class=\"line\"><a id=\"l00290\" name=\"l00290\"></a><span class=\"lineno\">  290</span> </div>\n-<div class=\"line\"><a id=\"l00291\" name=\"l00291\"></a><span class=\"lineno\">  291</span>        posMask.EdgeWeight(0) = eWeight;</div>\n-<div class=\"line\"><a id=\"l00292\" name=\"l00292\"></a><span class=\"lineno\">  292</span>        posMask.EdgeWeight(1) = eWeight;</div>\n-<div class=\"line\"><a id=\"l00293\" name=\"l00293\"></a><span class=\"lineno\">  293</span>        posMask.EdgeWeight(2) = eWeight;</div>\n-<div class=\"line\"><a id=\"l00294\" name=\"l00294\"></a><span class=\"lineno\">  294</span>        posMask.EdgeWeight(3) = eWeight;</div>\n-<div class=\"line\"><a id=\"l00295\" name=\"l00295\"></a><span class=\"lineno\">  295</span>        posMask.EdgeWeight(4) = eWeight;</div>\n-<div class=\"line\"><a id=\"l00296\" name=\"l00296\"></a><span class=\"lineno\">  296</span>        posMask.EdgeWeight(5) = eWeight;</div>\n-<div class=\"line\"><a id=\"l00297\" name=\"l00297\"></a><span class=\"lineno\">  297</span> </div>\n-<div class=\"line\"><a id=\"l00298\" name=\"l00298\"></a><span class=\"lineno\">  298</span>    } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00299\" name=\"l00299\"></a><span class=\"lineno\">  299</span>        <span class=\"keywordtype\">double</span> dValence   = (double) valence;</div>\n-<div class=\"line\"><a id=\"l00300\" name=\"l00300\"></a><span class=\"lineno\">  300</span>        <span class=\"keywordtype\">double</span> invValence = 1.0f / dValence;</div>\n-<div class=\"line\"><a id=\"l00301\" name=\"l00301\"></a><span class=\"lineno\">  301</span>        <span class=\"keywordtype\">double</span> cosTheta   = std::cos(M_PI * 2.0f * invValence);</div>\n-<div class=\"line\"><a id=\"l00302\" name=\"l00302\"></a><span class=\"lineno\">  302</span> </div>\n-<div class=\"line\"><a id=\"l00303\" name=\"l00303\"></a><span class=\"lineno\">  303</span>        <span class=\"keywordtype\">double</span> beta  = 0.25f * cosTheta + 0.375f;</div>\n-<div class=\"line\"><a id=\"l00304\" name=\"l00304\"></a><span class=\"lineno\">  304</span>        <span class=\"keywordtype\">double</span> gamma = (0.625f - (beta * beta)) * invValence;</div>\n-<div class=\"line\"><a id=\"l00305\" name=\"l00305\"></a><span class=\"lineno\">  305</span> </div>\n-<div class=\"line\"><a id=\"l00306\" name=\"l00306\"></a><span class=\"lineno\">  306</span>        Weight eWeight = (Weight) (1.0f / (dValence + 3.0f / (8.0f * gamma)));</div>\n-<div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\">  307</span>        Weight vWeight = (Weight) (1.0f - (eWeight * dValence));</div>\n-<div class=\"line\"><a id=\"l00308\" name=\"l00308\"></a><span class=\"lineno\">  308</span> </div>\n-<div class=\"line\"><a id=\"l00309\" name=\"l00309\"></a><span class=\"lineno\">  309</span>        posMask.VertexWeight(0) = vWeight;</div>\n-<div class=\"line\"><a id=\"l00310\" name=\"l00310\"></a><span class=\"lineno\">  310</span>        <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; valence; ++i) {</div>\n-<div class=\"line\"><a id=\"l00311\" name=\"l00311\"></a><span class=\"lineno\">  311</span>            posMask.EdgeWeight(i) = eWeight;</div>\n-<div class=\"line\"><a id=\"l00312\" name=\"l00312\"></a><span class=\"lineno\">  312</span>        }</div>\n-<div class=\"line\"><a id=\"l00313\" name=\"l00313\"></a><span class=\"lineno\">  313</span>    }</div>\n-<div class=\"line\"><a id=\"l00314\" name=\"l00314\"></a><span class=\"lineno\">  314</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00315\" name=\"l00315\"></a><span class=\"lineno\">  315</span> </div>\n-<div class=\"line\"><a id=\"l00316\" name=\"l00316\"></a><span class=\"lineno\">  316</span><span class=\"comment\">/*</span></div>\n-<div class=\"line\"><a id=\"l00317\" name=\"l00317\"></a><span class=\"lineno\">  317</span><span class=\"comment\">//  Limit masks for tangents:</span></div>\n-<div class=\"line\"><a id=\"l00318\" name=\"l00318\"></a><span class=\"lineno\">  318</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00319\" name=\"l00319\"></a><span class=\"lineno\">  319</span><span class=\"comment\">//  A note on tangent magnitudes:</span></div>\n-<div class=\"line\"><a id=\"l00320\" name=\"l00320\"></a><span class=\"lineno\">  320</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00321\" name=\"l00321\"></a><span class=\"lineno\">  321</span><span class=\"comment\">//  Several formulae exist for limit tangents at a vertex to accommodate the</span></div>\n-<div class=\"line\"><a id=\"l00322\" name=\"l00322\"></a><span class=\"lineno\">  322</span><span class=\"comment\">//  different topological configurations around the vertex.  While these produce</span></div>\n-<div class=\"line\"><a id=\"l00323\" name=\"l00323\"></a><span class=\"lineno\">  323</span><span class=\"comment\">//  the desired direction, there is inconsistency in the resulting magnitudes.</span></div>\n-<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\">  324</span><span class=\"comment\">//  Ideally a regular mesh of uniformly shaped triangles with similar edge lengths</span></div>\n-<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\">  325</span><span class=\"comment\">//  should produce tangents of similar magnitudes throughout -- including corners</span></div>\n-<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\">  326</span><span class=\"comment\">//  and boundaries.  So some of the common formulae for these are adjusted with</span></div>\n-<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\">  327</span><span class=\"comment\">//  scale factors.</span></div>\n-<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\">  328</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\">  329</span><span class=\"comment\">//  For uses where magnitude does not matter, this scaling should be irrelevant.</span></div>\n-<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\">  330</span><span class=\"comment\">//  But just as with patches, where the magnitudes of partial derivatives are</span></div>\n-<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\">  331</span><span class=\"comment\">//  consistent between similar patches, the magnitudes of limit tangents should</span></div>\n-<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\">  332</span><span class=\"comment\">//  also be similar.</span></div>\n-<div class=\"line\"><a id=\"l00333\" name=\"l00333\"></a><span class=\"lineno\">  333</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00334\" name=\"l00334\"></a><span class=\"lineno\">  334</span><span class=\"comment\">//  The reference tangents, in terms of magnitudes, are those produced by the</span></div>\n-<div class=\"line\"><a id=\"l00335\" name=\"l00335\"></a><span class=\"lineno\">  335</span><span class=\"comment\">//  limit tangent mask for smooth interior vertices, for which well established</span></div>\n-<div class=\"line\"><a id=\"l00336\" name=\"l00336\"></a><span class=\"lineno\">  336</span><span class=\"comment\">//  sin/cos formulae apply -- these remain unscaled.  Formulae for the other</span></div>\n-<div class=\"line\"><a id=\"l00337\" name=\"l00337\"></a><span class=\"lineno\">  337</span><span class=\"comment\">//  crease/boundary, corner tangents and irregular cases are scaled to be more</span></div>\n-<div class=\"line\"><a id=\"l00338\" name=\"l00338\"></a><span class=\"lineno\">  338</span><span class=\"comment\">//  consistent with these.</span></div>\n-<div class=\"line\"><a id=\"l00339\" name=\"l00339\"></a><span class=\"lineno\">  339</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00340\" name=\"l00340\"></a><span class=\"lineno\">  340</span><span class=\"comment\">//  The crease/boundary tangents for the regular case can be viewed as derived</span></div>\n-<div class=\"line\"><a id=\"l00341\" name=\"l00341\"></a><span class=\"lineno\">  341</span><span class=\"comment\">//  from the smooth interior masks with two &quot;phantom&quot; points extrapolated across</span></div>\n-<div class=\"line\"><a id=\"l00342\" name=\"l00342\"></a><span class=\"lineno\">  342</span><span class=\"comment\">//  the regular boundary:</span></div>\n-<div class=\"line\"><a id=\"l00343\" name=\"l00343\"></a><span class=\"lineno\">  343</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00344\" name=\"l00344\"></a><span class=\"lineno\">  344</span><span class=\"comment\">//            v3           v2          </span></div>\n-<div class=\"line\"><a id=\"l00345\" name=\"l00345\"></a><span class=\"lineno\">  345</span><span class=\"comment\">//             X - - - - - X</span></div>\n-<div class=\"line\"><a id=\"l00346\" name=\"l00346\"></a><span class=\"lineno\">  346</span><span class=\"comment\">//           /   \\       /   \\</span></div>\n-<div class=\"line\"><a id=\"l00347\" name=\"l00347\"></a><span class=\"lineno\">  347</span><span class=\"comment\">//         /       \\   /       \\</span></div>\n-<div class=\"line\"><a id=\"l00348\" name=\"l00348\"></a><span class=\"lineno\">  348</span><span class=\"comment\">//   v4  X - - - - - X - - - - - X  v1</span></div>\n-<div class=\"line\"><a id=\"l00349\" name=\"l00349\"></a><span class=\"lineno\">  349</span><span class=\"comment\">//         .       . 0 .       .</span></div>\n-<div class=\"line\"><a id=\"l00350\" name=\"l00350\"></a><span class=\"lineno\">  350</span><span class=\"comment\">//           .   .       .   .</span></div>\n-<div class=\"line\"><a id=\"l00351\" name=\"l00351\"></a><span class=\"lineno\">  351</span><span class=\"comment\">//             .   .   .   .</span></div>\n-<div class=\"line\"><a id=\"l00352\" name=\"l00352\"></a><span class=\"lineno\">  352</span><span class=\"comment\">//           (v5)         (v6)</span></div>\n-<div class=\"line\"><a id=\"l00353\" name=\"l00353\"></a><span class=\"lineno\">  353</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00354\" name=\"l00354\"></a><span class=\"lineno\">  354</span><span class=\"comment\">//  where v5 = v0 + (v4 - v3) and v6 = v0 + v1 - v2.</span></div>\n-<div class=\"line\"><a id=\"l00355\" name=\"l00355\"></a><span class=\"lineno\">  355</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00356\" name=\"l00356\"></a><span class=\"lineno\">  356</span><span class=\"comment\">//  When the standard limit tangent mask is applied, the cosines of increments</span></div>\n-<div class=\"line\"><a id=\"l00357\" name=\"l00357\"></a><span class=\"lineno\">  357</span><span class=\"comment\">//  of pi/3 give us coefficients that are multiples of 1/2, leading to the first</span></div>\n-<div class=\"line\"><a id=\"l00358\" name=\"l00358\"></a><span class=\"lineno\">  358</span><span class=\"comment\">//  tangent T1 = 3/2 * (v1 - v4), rather than the widely used T1 = v1 - v4.  So</span></div>\n-<div class=\"line\"><a id=\"l00359\" name=\"l00359\"></a><span class=\"lineno\">  359</span><span class=\"comment\">//  this scale factor of 3/2 is applied to ensure tangents along the boundaries</span></div>\n-<div class=\"line\"><a id=\"l00360\" name=\"l00360\"></a><span class=\"lineno\">  360</span><span class=\"comment\">//  are of similar magnitude as tangents in the immediate interior (which may be</span></div>\n-<div class=\"line\"><a id=\"l00361\" name=\"l00361\"></a><span class=\"lineno\">  361</span><span class=\"comment\">//  parallel).</span></div>\n-<div class=\"line\"><a id=\"l00362\" name=\"l00362\"></a><span class=\"lineno\">  362</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00363\" name=\"l00363\"></a><span class=\"lineno\">  363</span><span class=\"comment\">//  Tangents at corners are essentially a form of boundary tangent, and so its</span></div>\n-<div class=\"line\"><a id=\"l00364\" name=\"l00364\"></a><span class=\"lineno\">  364</span><span class=\"comment\">//  simple difference formula is scaled to be consistent with adjoining boundary</span></div>\n-<div class=\"line\"><a id=\"l00365\" name=\"l00365\"></a><span class=\"lineno\">  365</span><span class=\"comment\">//  tangents -- not just with the 3/2 factor from above, but with an additional</span></div>\n-<div class=\"line\"><a id=\"l00366\" name=\"l00366\"></a><span class=\"lineno\">  366</span><span class=\"comment\">//  2.0 to compensate for the fact that the difference of only side of the vertex</span></div>\n-<div class=\"line\"><a id=\"l00367\" name=\"l00367\"></a><span class=\"lineno\">  367</span><span class=\"comment\">//  is considered here.  The resulting scale factor of 3.0 for the regular corner</span></div>\n-<div class=\"line\"><a id=\"l00368\" name=\"l00368\"></a><span class=\"lineno\">  368</span><span class=\"comment\">//  is what similarly arises by extrapolating an interior region around the</span></div>\n-<div class=\"line\"><a id=\"l00369\" name=\"l00369\"></a><span class=\"lineno\">  369</span><span class=\"comment\">//  vertex and using the interior mask for the first tangent.</span></div>\n-<div class=\"line\"><a id=\"l00370\" name=\"l00370\"></a><span class=\"lineno\">  370</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00371\" name=\"l00371\"></a><span class=\"lineno\">  371</span><span class=\"comment\">//  The cross-tangent formula for the regular crease/boundary is similarly found</span></div>\n-<div class=\"line\"><a id=\"l00372\" name=\"l00372\"></a><span class=\"lineno\">  372</span><span class=\"comment\">//  from the above construction of the boundary, but the commonly used weights of</span></div>\n-<div class=\"line\"><a id=\"l00373\" name=\"l00373\"></a><span class=\"lineno\">  373</span><span class=\"comment\">//  +/- 1 and 2 result from omitting the common factor of sqrt(3)/2 (arising from</span></div>\n-<div class=\"line\"><a id=\"l00374\" name=\"l00374\"></a><span class=\"lineno\">  374</span><span class=\"comment\">//  the sines of increments of pi/3).  With that scale factor close to one, it has</span></div>\n-<div class=\"line\"><a id=\"l00375\" name=\"l00375\"></a><span class=\"lineno\">  375</span><span class=\"comment\">//  less impact than the irregular cases, which are analogous to corner tangents</span></div>\n-<div class=\"line\"><a id=\"l00376\" name=\"l00376\"></a><span class=\"lineno\">  376</span><span class=\"comment\">//  in that differences on only one side of the vertex are considered.  While a</span></div>\n-<div class=\"line\"><a id=\"l00377\" name=\"l00377\"></a><span class=\"lineno\">  377</span><span class=\"comment\">//  scaling of 3.0 is similarly understandable for the valence 2 and 3 cases, it is</span></div>\n-<div class=\"line\"><a id=\"l00378\" name=\"l00378\"></a><span class=\"lineno\">  378</span><span class=\"comment\">//  less obvious in the irregular formula for valence &gt; 4, but similarly effective.</span></div>\n-<div class=\"line\"><a id=\"l00379\" name=\"l00379\"></a><span class=\"lineno\">  379</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00380\" name=\"l00380\"></a><span class=\"lineno\">  380</span><span class=\"comment\">//  The end result of these adjustments should be a set of limit tangents that are</span></div>\n-<div class=\"line\"><a id=\"l00381\" name=\"l00381\"></a><span class=\"lineno\">  381</span><span class=\"comment\">//  of similar magnitude over a regular mesh including boundaries and corners.</span></div>\n-<div class=\"line\"><a id=\"l00382\" name=\"l00382\"></a><span class=\"lineno\">  382</span><span class=\"comment\">*/</span></div>\n-<div class=\"line\"><a id=\"l00383\" name=\"l00383\"></a><span class=\"lineno\">  383</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n-<div class=\"line\"><a id=\"l00384\" name=\"l00384\"></a><span class=\"lineno\">  384</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK&gt;</div>\n-<div class=\"line\"><a id=\"l00385\" name=\"l00385\"></a><span class=\"lineno\">  385</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00386\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00386\" name=\"l00386\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#adfe86b1bf62ea328adddf4e5c4b01049\">  386</a></span><a class=\"code hl_function\" href=\"a01341.html#ae9ee7f11f51ec6ff8c43ab0729454b54\">Scheme&lt;SCHEME_LOOP&gt;::assignCornerLimitTangentMasks</a>(VERTEX <span class=\"keyword\">const</span>&amp; vertex,</div>\n-<div class=\"line\"><a id=\"l00387\" name=\"l00387\"></a><span class=\"lineno\">  387</span>        MASK&amp; tan1Mask, MASK&amp; tan2Mask)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00388\" name=\"l00388\"></a><span class=\"lineno\">  388</span> </div>\n-<div class=\"line\"><a id=\"l00389\" name=\"l00389\"></a><span class=\"lineno\">  389</span>    <span class=\"keywordtype\">int</span> valence = vertex.GetNumEdges();</div>\n-<div class=\"line\"><a id=\"l00390\" name=\"l00390\"></a><span class=\"lineno\">  390</span> </div>\n-<div class=\"line\"><a id=\"l00391\" name=\"l00391\"></a><span class=\"lineno\">  391</span>    tan1Mask.SetNumVertexWeights(1);</div>\n-<div class=\"line\"><a id=\"l00392\" name=\"l00392\"></a><span class=\"lineno\">  392</span>    tan1Mask.SetNumEdgeWeights(valence);</div>\n-<div class=\"line\"><a id=\"l00393\" name=\"l00393\"></a><span class=\"lineno\">  393</span>    tan1Mask.SetNumFaceWeights(0);</div>\n-<div class=\"line\"><a id=\"l00394\" name=\"l00394\"></a><span class=\"lineno\">  394</span>    tan1Mask.SetFaceWeightsForFaceCenters(<span class=\"keyword\">false</span>);</div>\n-<div class=\"line\"><a id=\"l00395\" name=\"l00395\"></a><span class=\"lineno\">  395</span> </div>\n-<div class=\"line\"><a id=\"l00396\" name=\"l00396\"></a><span class=\"lineno\">  396</span>    tan2Mask.SetNumVertexWeights(1);</div>\n-<div class=\"line\"><a id=\"l00397\" name=\"l00397\"></a><span class=\"lineno\">  397</span>    tan2Mask.SetNumEdgeWeights(valence);</div>\n-<div class=\"line\"><a id=\"l00398\" name=\"l00398\"></a><span class=\"lineno\">  398</span>    tan2Mask.SetNumFaceWeights(0);</div>\n-<div class=\"line\"><a id=\"l00399\" name=\"l00399\"></a><span class=\"lineno\">  399</span>    tan2Mask.SetFaceWeightsForFaceCenters(<span class=\"keyword\">false</span>);</div>\n-<div class=\"line\"><a id=\"l00400\" name=\"l00400\"></a><span class=\"lineno\">  400</span> </div>\n-<div class=\"line\"><a id=\"l00401\" name=\"l00401\"></a><span class=\"lineno\">  401</span>    <span class=\"comment\">//  See note above regarding scale factor of 3.0:</span></div>\n-<div class=\"line\"><a id=\"l00402\" name=\"l00402\"></a><span class=\"lineno\">  402</span>    tan1Mask.VertexWeight(0) = -3.0f;</div>\n-<div class=\"line\"><a id=\"l00403\" name=\"l00403\"></a><span class=\"lineno\">  403</span>    tan1Mask.EdgeWeight(0)   =  3.0f;</div>\n-<div class=\"line\"><a id=\"l00404\" name=\"l00404\"></a><span class=\"lineno\">  404</span>    tan1Mask.EdgeWeight(1)   =  0.0f;</div>\n-<div class=\"line\"><a id=\"l00405\" name=\"l00405\"></a><span class=\"lineno\">  405</span> </div>\n-<div class=\"line\"><a id=\"l00406\" name=\"l00406\"></a><span class=\"lineno\">  406</span>    tan2Mask.VertexWeight(0) = -3.0f;</div>\n-<div class=\"line\"><a id=\"l00407\" name=\"l00407\"></a><span class=\"lineno\">  407</span>    tan2Mask.EdgeWeight(0)   =  0.0f;</div>\n-<div class=\"line\"><a id=\"l00408\" name=\"l00408\"></a><span class=\"lineno\">  408</span>    tan2Mask.EdgeWeight(1)   =  3.0f;</div>\n-<div class=\"line\"><a id=\"l00409\" name=\"l00409\"></a><span class=\"lineno\">  409</span> </div>\n-<div class=\"line\"><a id=\"l00410\" name=\"l00410\"></a><span class=\"lineno\">  410</span>    <span class=\"comment\">//  Should be at least 2 edges -- be sure to clear weights for any more:</span></div>\n-<div class=\"line\"><a id=\"l00411\" name=\"l00411\"></a><span class=\"lineno\">  411</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 2; i &lt; valence; ++i) {</div>\n-<div class=\"line\"><a id=\"l00412\" name=\"l00412\"></a><span class=\"lineno\">  412</span>        tan1Mask.EdgeWeight(i) = 0.0f;</div>\n-<div class=\"line\"><a id=\"l00413\" name=\"l00413\"></a><span class=\"lineno\">  413</span>        tan2Mask.EdgeWeight(i) = 0.0f;</div>\n-<div class=\"line\"><a id=\"l00414\" name=\"l00414\"></a><span class=\"lineno\">  414</span>    }</div>\n-<div class=\"line\"><a id=\"l00415\" name=\"l00415\"></a><span class=\"lineno\">  415</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00416\" name=\"l00416\"></a><span class=\"lineno\">  416</span> </div>\n-<div class=\"line\"><a id=\"l00417\" name=\"l00417\"></a><span class=\"lineno\">  417</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n-<div class=\"line\"><a id=\"l00418\" name=\"l00418\"></a><span class=\"lineno\">  418</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK&gt;</div>\n-<div class=\"line\"><a id=\"l00419\" name=\"l00419\"></a><span class=\"lineno\">  419</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00420\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00420\" name=\"l00420\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#a2ef69ac92171507161acb0c0af01d6f2\">  420</a></span><a class=\"code hl_function\" href=\"a01341.html#a4f8e559b93bbaf26ea0d40b1fa2f194f\">Scheme&lt;SCHEME_LOOP&gt;::assignCreaseLimitTangentMasks</a>(VERTEX <span class=\"keyword\">const</span>&amp; vertex,</div>\n-<div class=\"line\"><a id=\"l00421\" name=\"l00421\"></a><span class=\"lineno\">  421</span>        MASK&amp; tan1Mask, MASK&amp; tan2Mask, <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> creaseEnds[2])<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00422\" name=\"l00422\"></a><span class=\"lineno\">  422</span> </div>\n-<div class=\"line\"><a id=\"l00423\" name=\"l00423\"></a><span class=\"lineno\">  423</span>    <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> MASK::Weight Weight;</div>\n-<div class=\"line\"><a id=\"l00424\" name=\"l00424\"></a><span class=\"lineno\">  424</span> </div>\n-<div class=\"line\"><a id=\"l00425\" name=\"l00425\"></a><span class=\"lineno\">  425</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00426\" name=\"l00426\"></a><span class=\"lineno\">  426</span>    <span class=\"comment\">//  First, the tangent along the crease:</span></div>\n-<div class=\"line\"><a id=\"l00427\" name=\"l00427\"></a><span class=\"lineno\">  427</span>    <span class=\"comment\">//      The first crease edge is considered the &quot;leading&quot; edge of the span</span></div>\n-<div class=\"line\"><a id=\"l00428\" name=\"l00428\"></a><span class=\"lineno\">  428</span>    <span class=\"comment\">//  of surface for which we are evaluating tangents and the second edge the</span></div>\n-<div class=\"line\"><a id=\"l00429\" name=\"l00429\"></a><span class=\"lineno\">  429</span>    <span class=\"comment\">//  &quot;trailing edge&quot;.  By convention, the tangent along the crease is oriented</span></div>\n-<div class=\"line\"><a id=\"l00430\" name=\"l00430\"></a><span class=\"lineno\">  430</span>    <span class=\"comment\">//  in the direction of the leading edge.</span></div>\n-<div class=\"line\"><a id=\"l00431\" name=\"l00431\"></a><span class=\"lineno\">  431</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00432\" name=\"l00432\"></a><span class=\"lineno\">  432</span>    <span class=\"keywordtype\">int</span> valence = vertex.GetNumEdges();</div>\n-<div class=\"line\"><a id=\"l00433\" name=\"l00433\"></a><span class=\"lineno\">  433</span> </div>\n-<div class=\"line\"><a id=\"l00434\" name=\"l00434\"></a><span class=\"lineno\">  434</span>    tan1Mask.SetNumVertexWeights(1);</div>\n-<div class=\"line\"><a id=\"l00435\" name=\"l00435\"></a><span class=\"lineno\">  435</span>    tan1Mask.SetNumEdgeWeights(valence);</div>\n-<div class=\"line\"><a id=\"l00436\" name=\"l00436\"></a><span class=\"lineno\">  436</span>    tan1Mask.SetNumFaceWeights(0);</div>\n-<div class=\"line\"><a id=\"l00437\" name=\"l00437\"></a><span class=\"lineno\">  437</span>    tan1Mask.SetFaceWeightsForFaceCenters(<span class=\"keyword\">false</span>);</div>\n-<div class=\"line\"><a id=\"l00438\" name=\"l00438\"></a><span class=\"lineno\">  438</span> </div>\n-<div class=\"line\"><a id=\"l00439\" name=\"l00439\"></a><span class=\"lineno\">  439</span>    tan1Mask.VertexWeight(0) = 0.0f;</div>\n-<div class=\"line\"><a id=\"l00440\" name=\"l00440\"></a><span class=\"lineno\">  440</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; valence; ++i) {</div>\n-<div class=\"line\"><a id=\"l00441\" name=\"l00441\"></a><span class=\"lineno\">  441</span>        tan1Mask.EdgeWeight(i) = 0.0f;</div>\n-<div class=\"line\"><a id=\"l00442\" name=\"l00442\"></a><span class=\"lineno\">  442</span>    }</div>\n-<div class=\"line\"><a id=\"l00443\" name=\"l00443\"></a><span class=\"lineno\">  443</span> </div>\n-<div class=\"line\"><a id=\"l00444\" name=\"l00444\"></a><span class=\"lineno\">  444</span>    <span class=\"comment\">//  See the note above regarding scale factor of 1.5:</span></div>\n-<div class=\"line\"><a id=\"l00445\" name=\"l00445\"></a><span class=\"lineno\">  445</span>    tan1Mask.EdgeWeight(creaseEnds[0]) =  1.5f;</div>\n-<div class=\"line\"><a id=\"l00446\" name=\"l00446\"></a><span class=\"lineno\">  446</span>    tan1Mask.EdgeWeight(creaseEnds[1]) = -1.5f;</div>\n-<div class=\"line\"><a id=\"l00447\" name=\"l00447\"></a><span class=\"lineno\">  447</span> </div>\n-<div class=\"line\"><a id=\"l00448\" name=\"l00448\"></a><span class=\"lineno\">  448</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00449\" name=\"l00449\"></a><span class=\"lineno\">  449</span>    <span class=\"comment\">//  Second, the tangent across the interior faces:</span></div>\n-<div class=\"line\"><a id=\"l00450\" name=\"l00450\"></a><span class=\"lineno\">  450</span>    <span class=\"comment\">//      Note this is ambiguous for an interior vertex.  We currently return</span></div>\n-<div class=\"line\"><a id=\"l00451\" name=\"l00451\"></a><span class=\"lineno\">  451</span>    <span class=\"comment\">//  the tangent for the surface in the counter-clockwise span between the</span></div>\n-<div class=\"line\"><a id=\"l00452\" name=\"l00452\"></a><span class=\"lineno\">  452</span>    <span class=\"comment\">//  leading and trailing edges that form the crease.  Given the expected</span></div>\n-<div class=\"line\"><a id=\"l00453\" name=\"l00453\"></a><span class=\"lineno\">  453</span>    <span class=\"comment\">//  computation of a surface normal as Tan1 X Tan2, this tangent should be</span></div>\n-<div class=\"line\"><a id=\"l00454\" name=\"l00454\"></a><span class=\"lineno\">  454</span>    <span class=\"comment\">//  oriented &quot;inward&quot; from the crease/boundary -- across the surface rather</span></div>\n-<div class=\"line\"><a id=\"l00455\" name=\"l00455\"></a><span class=\"lineno\">  455</span>    <span class=\"comment\">//  than outward and away from it.</span></div>\n-<div class=\"line\"><a id=\"l00456\" name=\"l00456\"></a><span class=\"lineno\">  456</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00457\" name=\"l00457\"></a><span class=\"lineno\">  457</span>    <span class=\"comment\">//  There is inconsistency in the orientation of this tangent in commonly</span></div>\n-<div class=\"line\"><a id=\"l00458\" name=\"l00458\"></a><span class=\"lineno\">  458</span>    <span class=\"comment\">//  published results:  the general formula provided for arbitrary valence</span></div>\n-<div class=\"line\"><a id=\"l00459\" name=\"l00459\"></a><span class=\"lineno\">  459</span>    <span class=\"comment\">//  has the tangent pointing across the crease and &quot;outward&quot; from the surface,</span></div>\n-<div class=\"line\"><a id=\"l00460\" name=\"l00460\"></a><span class=\"lineno\">  460</span>    <span class=\"comment\">//  while the special cases for regular valence and lower have the tangent</span></div>\n-<div class=\"line\"><a id=\"l00461\" name=\"l00461\"></a><span class=\"lineno\">  461</span>    <span class=\"comment\">//  pointing across the surface and &quot;inward&quot; from the crease.  So if we are</span></div>\n-<div class=\"line\"><a id=\"l00462\" name=\"l00462\"></a><span class=\"lineno\">  462</span>    <span class=\"comment\">//  to consistently orient the first tangent along the crease, regardless of</span></div>\n-<div class=\"line\"><a id=\"l00463\" name=\"l00463\"></a><span class=\"lineno\">  463</span>    <span class=\"comment\">//  the interior topology, we have to correct this.  With the first tangent</span></div>\n-<div class=\"line\"><a id=\"l00464\" name=\"l00464\"></a><span class=\"lineno\">  464</span>    <span class=\"comment\">//  following the direction of the leading crease edge, we want the second</span></div>\n-<div class=\"line\"><a id=\"l00465\" name=\"l00465\"></a><span class=\"lineno\">  465</span>    <span class=\"comment\">//  tangent pointing inward/across the surface -- so we flip the result of</span></div>\n-<div class=\"line\"><a id=\"l00466\" name=\"l00466\"></a><span class=\"lineno\">  466</span>    <span class=\"comment\">//  the general formula.</span></div>\n-<div class=\"line\"><a id=\"l00467\" name=\"l00467\"></a><span class=\"lineno\">  467</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00468\" name=\"l00468\"></a><span class=\"lineno\">  468</span>    tan2Mask.SetNumVertexWeights(1);</div>\n-<div class=\"line\"><a id=\"l00469\" name=\"l00469\"></a><span class=\"lineno\">  469</span>    tan2Mask.SetNumEdgeWeights(valence);</div>\n-<div class=\"line\"><a id=\"l00470\" name=\"l00470\"></a><span class=\"lineno\">  470</span>    tan2Mask.SetNumFaceWeights(0);</div>\n-<div class=\"line\"><a id=\"l00471\" name=\"l00471\"></a><span class=\"lineno\">  471</span>    tan2Mask.SetFaceWeightsForFaceCenters(<span class=\"keyword\">false</span>);</div>\n-<div class=\"line\"><a id=\"l00472\" name=\"l00472\"></a><span class=\"lineno\">  472</span> </div>\n-<div class=\"line\"><a id=\"l00473\" name=\"l00473\"></a><span class=\"lineno\">  473</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; creaseEnds[0]; ++i) {</div>\n-<div class=\"line\"><a id=\"l00474\" name=\"l00474\"></a><span class=\"lineno\">  474</span>        tan2Mask.EdgeWeight(i) = 0.0f;</div>\n-<div class=\"line\"><a id=\"l00475\" name=\"l00475\"></a><span class=\"lineno\">  475</span>    }</div>\n-<div class=\"line\"><a id=\"l00476\" name=\"l00476\"></a><span class=\"lineno\">  476</span>    <span class=\"keywordtype\">int</span> interiorEdgeCount = creaseEnds[1] - creaseEnds[0] - 1;</div>\n-<div class=\"line\"><a id=\"l00477\" name=\"l00477\"></a><span class=\"lineno\">  477</span>    <span class=\"keywordflow\">if</span> (interiorEdgeCount == 2) {</div>\n-<div class=\"line\"><a id=\"l00478\" name=\"l00478\"></a><span class=\"lineno\">  478</span>        <span class=\"comment\">//  See note above regarding scale factor of (sin(60 degs) == sqrt(3)/2:</span></div>\n-<div class=\"line\"><a id=\"l00479\" name=\"l00479\"></a><span class=\"lineno\">  479</span> </div>\n-<div class=\"line\"><a id=\"l00480\" name=\"l00480\"></a><span class=\"lineno\">  480</span>        <span class=\"keyword\">static</span> Weight <span class=\"keyword\">const</span> Root3    = (Weight) 1.73205080756887729352;</div>\n-<div class=\"line\"><a id=\"l00481\" name=\"l00481\"></a><span class=\"lineno\">  481</span>        <span class=\"keyword\">static</span> Weight <span class=\"keyword\">const</span> Root3by2 = (Weight) (Root3 * 0.5);</div>\n-<div class=\"line\"><a id=\"l00482\" name=\"l00482\"></a><span class=\"lineno\">  482</span> </div>\n-<div class=\"line\"><a id=\"l00483\" name=\"l00483\"></a><span class=\"lineno\">  483</span>        tan2Mask.VertexWeight(0) = -Root3;</div>\n-<div class=\"line\"><a id=\"l00484\" name=\"l00484\"></a><span class=\"lineno\">  484</span> </div>\n-<div class=\"line\"><a id=\"l00485\" name=\"l00485\"></a><span class=\"lineno\">  485</span>        tan2Mask.EdgeWeight(creaseEnds[0]) = -Root3by2;</div>\n-<div class=\"line\"><a id=\"l00486\" name=\"l00486\"></a><span class=\"lineno\">  486</span>        tan2Mask.EdgeWeight(creaseEnds[1]) = -Root3by2;</div>\n-<div class=\"line\"><a id=\"l00487\" name=\"l00487\"></a><span class=\"lineno\">  487</span> </div>\n-<div class=\"line\"><a id=\"l00488\" name=\"l00488\"></a><span class=\"lineno\">  488</span>        tan2Mask.EdgeWeight(creaseEnds[0] + 1) = Root3;</div>\n-<div class=\"line\"><a id=\"l00489\" name=\"l00489\"></a><span class=\"lineno\">  489</span>        tan2Mask.EdgeWeight(creaseEnds[0] + 2) = Root3;</div>\n-<div class=\"line\"><a id=\"l00490\" name=\"l00490\"></a><span class=\"lineno\">  490</span>    } <span class=\"keywordflow\">else</span> <span class=\"keywordflow\">if</span> (interiorEdgeCount &gt; 2) {</div>\n-<div class=\"line\"><a id=\"l00491\" name=\"l00491\"></a><span class=\"lineno\">  491</span>        <span class=\"comment\">//  See notes above regarding scale factor of -3.0 (-1 for orientation,</span></div>\n-<div class=\"line\"><a id=\"l00492\" name=\"l00492\"></a><span class=\"lineno\">  492</span>        <span class=\"comment\">//  2.0 for considering the region as a half-disk, and 1.5 in keeping</span></div>\n-<div class=\"line\"><a id=\"l00493\" name=\"l00493\"></a><span class=\"lineno\">  493</span>        <span class=\"comment\">//  with the crease tangent):</span></div>\n-<div class=\"line\"><a id=\"l00494\" name=\"l00494\"></a><span class=\"lineno\">  494</span> </div>\n-<div class=\"line\"><a id=\"l00495\" name=\"l00495\"></a><span class=\"lineno\">  495</span>        <span class=\"keywordtype\">double</span> theta = M_PI / (interiorEdgeCount + 1);</div>\n-<div class=\"line\"><a id=\"l00496\" name=\"l00496\"></a><span class=\"lineno\">  496</span> </div>\n-<div class=\"line\"><a id=\"l00497\" name=\"l00497\"></a><span class=\"lineno\">  497</span>        tan2Mask.VertexWeight(0) = 0.0f;</div>\n-<div class=\"line\"><a id=\"l00498\" name=\"l00498\"></a><span class=\"lineno\">  498</span> </div>\n-<div class=\"line\"><a id=\"l00499\" name=\"l00499\"></a><span class=\"lineno\">  499</span>        Weight cWeight = (Weight) (-3.0f * std::sin(theta));</div>\n-<div class=\"line\"><a id=\"l00500\" name=\"l00500\"></a><span class=\"lineno\">  500</span>        tan2Mask.EdgeWeight(creaseEnds[0]) = cWeight;</div>\n-<div class=\"line\"><a id=\"l00501\" name=\"l00501\"></a><span class=\"lineno\">  501</span>        tan2Mask.EdgeWeight(creaseEnds[1]) = cWeight;</div>\n-<div class=\"line\"><a id=\"l00502\" name=\"l00502\"></a><span class=\"lineno\">  502</span> </div>\n-<div class=\"line\"><a id=\"l00503\" name=\"l00503\"></a><span class=\"lineno\">  503</span>        <span class=\"keywordtype\">double</span> eCoeff  = -3.0f * 2.0f * (std::cos(theta) - 1.0f);</div>\n-<div class=\"line\"><a id=\"l00504\" name=\"l00504\"></a><span class=\"lineno\">  504</span>        <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 1; i &lt;= interiorEdgeCount; ++i) {</div>\n-<div class=\"line\"><a id=\"l00505\" name=\"l00505\"></a><span class=\"lineno\">  505</span>            tan2Mask.EdgeWeight(creaseEnds[0] + i) = (Weight) (eCoeff * std::sin(i * theta));</div>\n-<div class=\"line\"><a id=\"l00506\" name=\"l00506\"></a><span class=\"lineno\">  506</span>        }</div>\n-<div class=\"line\"><a id=\"l00507\" name=\"l00507\"></a><span class=\"lineno\">  507</span>    } <span class=\"keywordflow\">else</span> <span class=\"keywordflow\">if</span> (interiorEdgeCount == 1) {</div>\n-<div class=\"line\"><a id=\"l00508\" name=\"l00508\"></a><span class=\"lineno\">  508</span>        <span class=\"comment\">//  See notes above regarding scale factor of 3.0:</span></div>\n-<div class=\"line\"><a id=\"l00509\" name=\"l00509\"></a><span class=\"lineno\">  509</span> </div>\n-<div class=\"line\"><a id=\"l00510\" name=\"l00510\"></a><span class=\"lineno\">  510</span>        tan2Mask.VertexWeight(0) = -3.0f;</div>\n-<div class=\"line\"><a id=\"l00511\" name=\"l00511\"></a><span class=\"lineno\">  511</span> </div>\n-<div class=\"line\"><a id=\"l00512\" name=\"l00512\"></a><span class=\"lineno\">  512</span>        tan2Mask.EdgeWeight(creaseEnds[0]) = 0.0f;</div>\n-<div class=\"line\"><a id=\"l00513\" name=\"l00513\"></a><span class=\"lineno\">  513</span>        tan2Mask.EdgeWeight(creaseEnds[1]) = 0.0f;</div>\n-<div class=\"line\"><a id=\"l00514\" name=\"l00514\"></a><span class=\"lineno\">  514</span> </div>\n-<div class=\"line\"><a id=\"l00515\" name=\"l00515\"></a><span class=\"lineno\">  515</span>        tan2Mask.EdgeWeight(creaseEnds[0] + 1) = 3.0f;</div>\n-<div class=\"line\"><a id=\"l00516\" name=\"l00516\"></a><span class=\"lineno\">  516</span>    } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00517\" name=\"l00517\"></a><span class=\"lineno\">  517</span>        <span class=\"comment\">//  See notes above regarding scale factor of 3.0:</span></div>\n-<div class=\"line\"><a id=\"l00518\" name=\"l00518\"></a><span class=\"lineno\">  518</span> </div>\n-<div class=\"line\"><a id=\"l00519\" name=\"l00519\"></a><span class=\"lineno\">  519</span>        tan2Mask.VertexWeight(0) = -6.0f;</div>\n-<div class=\"line\"><a id=\"l00520\" name=\"l00520\"></a><span class=\"lineno\">  520</span> </div>\n-<div class=\"line\"><a id=\"l00521\" name=\"l00521\"></a><span class=\"lineno\">  521</span>        tan2Mask.EdgeWeight(creaseEnds[0]) = 3.0f;</div>\n-<div class=\"line\"><a id=\"l00522\" name=\"l00522\"></a><span class=\"lineno\">  522</span>        tan2Mask.EdgeWeight(creaseEnds[1]) = 3.0f;</div>\n-<div class=\"line\"><a id=\"l00523\" name=\"l00523\"></a><span class=\"lineno\">  523</span>    }</div>\n-<div class=\"line\"><a id=\"l00524\" name=\"l00524\"></a><span class=\"lineno\">  524</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = creaseEnds[1] + 1; i &lt; valence; ++i) {</div>\n-<div class=\"line\"><a id=\"l00525\" name=\"l00525\"></a><span class=\"lineno\">  525</span>        tan2Mask.EdgeWeight(i) = 0.0f;</div>\n-<div class=\"line\"><a id=\"l00526\" name=\"l00526\"></a><span class=\"lineno\">  526</span>    }</div>\n-<div class=\"line\"><a id=\"l00527\" name=\"l00527\"></a><span class=\"lineno\">  527</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00528\" name=\"l00528\"></a><span class=\"lineno\">  528</span> </div>\n-<div class=\"line\"><a id=\"l00529\" name=\"l00529\"></a><span class=\"lineno\">  529</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n-<div class=\"line\"><a id=\"l00530\" name=\"l00530\"></a><span class=\"lineno\">  530</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK&gt;</div>\n-<div class=\"line\"><a id=\"l00531\" name=\"l00531\"></a><span class=\"lineno\">  531</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00532\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00532\" name=\"l00532\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#a15a82416378d985afe049eaebc185e7d\">  532</a></span><a class=\"code hl_function\" href=\"a01341.html#a9ee5e194a00832a5bfa76cf58df0bc4b\">Scheme&lt;SCHEME_LOOP&gt;::assignSmoothLimitTangentMasks</a>(VERTEX <span class=\"keyword\">const</span>&amp; vertex,</div>\n-<div class=\"line\"><a id=\"l00533\" name=\"l00533\"></a><span class=\"lineno\">  533</span>        MASK&amp; tan1Mask, MASK&amp; tan2Mask)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00534\" name=\"l00534\"></a><span class=\"lineno\">  534</span> </div>\n-<div class=\"line\"><a id=\"l00535\" name=\"l00535\"></a><span class=\"lineno\">  535</span>    <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> MASK::Weight Weight;</div>\n-<div class=\"line\"><a id=\"l00536\" name=\"l00536\"></a><span class=\"lineno\">  536</span> </div>\n-<div class=\"line\"><a id=\"l00537\" name=\"l00537\"></a><span class=\"lineno\">  537</span>    <span class=\"keywordtype\">int</span> valence = vertex.GetNumFaces();</div>\n-<div class=\"line\"><a id=\"l00538\" name=\"l00538\"></a><span class=\"lineno\">  538</span> </div>\n-<div class=\"line\"><a id=\"l00539\" name=\"l00539\"></a><span class=\"lineno\">  539</span>    tan1Mask.SetNumVertexWeights(1);</div>\n-<div class=\"line\"><a id=\"l00540\" name=\"l00540\"></a><span class=\"lineno\">  540</span>    tan1Mask.SetNumEdgeWeights(valence);</div>\n-<div class=\"line\"><a id=\"l00541\" name=\"l00541\"></a><span class=\"lineno\">  541</span>    tan1Mask.SetNumFaceWeights(0);</div>\n-<div class=\"line\"><a id=\"l00542\" name=\"l00542\"></a><span class=\"lineno\">  542</span>    tan1Mask.SetFaceWeightsForFaceCenters(<span class=\"keyword\">false</span>);</div>\n-<div class=\"line\"><a id=\"l00543\" name=\"l00543\"></a><span class=\"lineno\">  543</span> </div>\n-<div class=\"line\"><a id=\"l00544\" name=\"l00544\"></a><span class=\"lineno\">  544</span>    tan2Mask.SetNumVertexWeights(1);</div>\n-<div class=\"line\"><a id=\"l00545\" name=\"l00545\"></a><span class=\"lineno\">  545</span>    tan2Mask.SetNumEdgeWeights(valence);</div>\n-<div class=\"line\"><a id=\"l00546\" name=\"l00546\"></a><span class=\"lineno\">  546</span>    tan2Mask.SetNumFaceWeights(0);</div>\n-<div class=\"line\"><a id=\"l00547\" name=\"l00547\"></a><span class=\"lineno\">  547</span>    tan2Mask.SetFaceWeightsForFaceCenters(<span class=\"keyword\">false</span>);</div>\n-<div class=\"line\"><a id=\"l00548\" name=\"l00548\"></a><span class=\"lineno\">  548</span> </div>\n-<div class=\"line\"><a id=\"l00549\" name=\"l00549\"></a><span class=\"lineno\">  549</span>    tan1Mask.VertexWeight(0) = 0.0f;</div>\n-<div class=\"line\"><a id=\"l00550\" name=\"l00550\"></a><span class=\"lineno\">  550</span>    tan2Mask.VertexWeight(0) = 0.0f;</div>\n-<div class=\"line\"><a id=\"l00551\" name=\"l00551\"></a><span class=\"lineno\">  551</span> </div>\n-<div class=\"line\"><a id=\"l00552\" name=\"l00552\"></a><span class=\"lineno\">  552</span>    <span class=\"keywordflow\">if</span> (valence == 6) {</div>\n-<div class=\"line\"><a id=\"l00553\" name=\"l00553\"></a><span class=\"lineno\">  553</span>        <span class=\"keyword\">static</span> Weight <span class=\"keyword\">const</span> Root3by2 = (Weight)(0.5 * 1.73205080756887729352);</div>\n-<div class=\"line\"><a id=\"l00554\" name=\"l00554\"></a><span class=\"lineno\">  554</span> </div>\n-<div class=\"line\"><a id=\"l00555\" name=\"l00555\"></a><span class=\"lineno\">  555</span>        tan1Mask.EdgeWeight(0) =  1.0f;</div>\n-<div class=\"line\"><a id=\"l00556\" name=\"l00556\"></a><span class=\"lineno\">  556</span>        tan1Mask.EdgeWeight(1) =  0.5f;</div>\n-<div class=\"line\"><a id=\"l00557\" name=\"l00557\"></a><span class=\"lineno\">  557</span>        tan1Mask.EdgeWeight(2) = -0.5f;</div>\n-<div class=\"line\"><a id=\"l00558\" name=\"l00558\"></a><span class=\"lineno\">  558</span>        tan1Mask.EdgeWeight(3) = -1.0f;</div>\n-<div class=\"line\"><a id=\"l00559\" name=\"l00559\"></a><span class=\"lineno\">  559</span>        tan1Mask.EdgeWeight(4) = -0.5f;</div>\n-<div class=\"line\"><a id=\"l00560\" name=\"l00560\"></a><span class=\"lineno\">  560</span>        tan1Mask.EdgeWeight(5) =  0.5f;</div>\n-<div class=\"line\"><a id=\"l00561\" name=\"l00561\"></a><span class=\"lineno\">  561</span> </div>\n-<div class=\"line\"><a id=\"l00562\" name=\"l00562\"></a><span class=\"lineno\">  562</span>        tan2Mask.EdgeWeight(0) =  0.0f;</div>\n-<div class=\"line\"><a id=\"l00563\" name=\"l00563\"></a><span class=\"lineno\">  563</span>        tan2Mask.EdgeWeight(1) =  Root3by2;</div>\n-<div class=\"line\"><a id=\"l00564\" name=\"l00564\"></a><span class=\"lineno\">  564</span>        tan2Mask.EdgeWeight(2) =  Root3by2;</div>\n-<div class=\"line\"><a id=\"l00565\" name=\"l00565\"></a><span class=\"lineno\">  565</span>        tan2Mask.EdgeWeight(3) =  0.0f;</div>\n-<div class=\"line\"><a id=\"l00566\" name=\"l00566\"></a><span class=\"lineno\">  566</span>        tan2Mask.EdgeWeight(4) = -Root3by2;</div>\n-<div class=\"line\"><a id=\"l00567\" name=\"l00567\"></a><span class=\"lineno\">  567</span>        tan2Mask.EdgeWeight(5) = -Root3by2;</div>\n-<div class=\"line\"><a id=\"l00568\" name=\"l00568\"></a><span class=\"lineno\">  568</span>    } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00569\" name=\"l00569\"></a><span class=\"lineno\">  569</span>        <span class=\"keywordtype\">double</span> alpha = 2.0f * M_PI / valence;</div>\n-<div class=\"line\"><a id=\"l00570\" name=\"l00570\"></a><span class=\"lineno\">  570</span>        <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; valence; ++i) {</div>\n-<div class=\"line\"><a id=\"l00571\" name=\"l00571\"></a><span class=\"lineno\">  571</span>            <span class=\"keywordtype\">double</span> alphaI = alpha * i;</div>\n-<div class=\"line\"><a id=\"l00572\" name=\"l00572\"></a><span class=\"lineno\">  572</span>            tan1Mask.EdgeWeight(i) = (Weight) std::cos(alphaI);</div>\n-<div class=\"line\"><a id=\"l00573\" name=\"l00573\"></a><span class=\"lineno\">  573</span>            tan2Mask.EdgeWeight(i) = (Weight) std::sin(alphaI);</div>\n-<div class=\"line\"><a id=\"l00574\" name=\"l00574\"></a><span class=\"lineno\">  574</span>        }</div>\n-<div class=\"line\"><a id=\"l00575\" name=\"l00575\"></a><span class=\"lineno\">  575</span>    }</div>\n-<div class=\"line\"><a id=\"l00576\" name=\"l00576\"></a><span class=\"lineno\">  576</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00577\" name=\"l00577\"></a><span class=\"lineno\">  577</span> </div>\n-<div class=\"line\"><a id=\"l00578\" name=\"l00578\"></a><span class=\"lineno\">  578</span>} <span class=\"comment\">// end namespace Sdc</span></div>\n-<div class=\"line\"><a id=\"l00579\" name=\"l00579\"></a><span class=\"lineno\">  579</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00580\" name=\"l00580\"></a><span class=\"lineno\">  580</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00581\" name=\"l00581\"></a><span class=\"lineno\">  581</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l00582\" name=\"l00582\"></a><span class=\"lineno\">  582</span> </div>\n-<div class=\"line\"><a id=\"l00583\" name=\"l00583\"></a><span class=\"lineno\">  583</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_SDC_LOOP_SCHEME_H */</span><span class=\"preprocessor\"></span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa00913_html_a61ef2f8f765ba17f8036bcc0f0fa887b\"><div class=\"ttname\"><a href=\"a00913.html#a61ef2f8f765ba17f8036bcc0f0fa887b\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Split</a></div><div class=\"ttdeci\">Split</div><div class=\"ttdoc\">Enumerated type for all face splitting schemes.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01492_source.html#l00047\">types.h:47</a></div></div>\n-<div class=\"ttc\" id=\"aa00913_html_a61ef2f8f765ba17f8036bcc0f0fa887ba31959b36c678fcb560f478ecb7c051f5\"><div class=\"ttname\"><a href=\"a00913.html#a61ef2f8f765ba17f8036bcc0f0fa887ba31959b36c678fcb560f478ecb7c051f5\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::SPLIT_TO_TRIS</a></div><div class=\"ttdeci\">@ SPLIT_TO_TRIS</div><div class=\"ttdoc\">Used by Loop.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01492_source.html#l00049\">types.h:49</a></div></div>\n-<div class=\"ttc\" id=\"aa01341_html_a059f5c2c9193be58be31955e987a0600\"><div class=\"ttname\"><a href=\"a01341.html#a059f5c2c9193be58be31955e987a0600\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::assignSmoothMaskForEdge</a></div><div class=\"ttdeci\">void assignSmoothMaskForEdge(EDGE const &amp;edge, MASK &amp;mask) const</div></div>\n-<div class=\"ttc\" id=\"aa01341_html_a14b97ddde5fba31ca7f933508ee649da\"><div class=\"ttname\"><a href=\"a01341.html#a14b97ddde5fba31ca7f933508ee649da\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::GetTopologicalSplitType</a></div><div class=\"ttdeci\">static Split GetTopologicalSplitType()</div></div>\n-<div class=\"ttc\" id=\"aa01341_html_a2439e78373d9dfd6ad3ab373c7c32dcc\"><div class=\"ttname\"><a href=\"a01341.html#a2439e78373d9dfd6ad3ab373c7c32dcc\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::assignCreaseMaskForVertex</a></div><div class=\"ttdeci\">void assignCreaseMaskForVertex(VERTEX const &amp;edge, MASK &amp;mask, int const creaseEnds[2]) const</div></div>\n-<div class=\"ttc\" id=\"aa01341_html_a4f8e559b93bbaf26ea0d40b1fa2f194f\"><div class=\"ttname\"><a href=\"a01341.html#a4f8e559b93bbaf26ea0d40b1fa2f194f\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::assignCreaseLimitTangentMasks</a></div><div class=\"ttdeci\">void assignCreaseLimitTangentMasks(VERTEX const &amp;vertex, MASK &amp;tan1, MASK &amp;tan2, int const creaseEnds[2]) const</div></div>\n-<div class=\"ttc\" id=\"aa01341_html_a531004716c07aad5436cb2db27e1ec24\"><div class=\"ttname\"><a href=\"a01341.html#a531004716c07aad5436cb2db27e1ec24\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::GetRegularFaceSize</a></div><div class=\"ttdeci\">static int GetRegularFaceSize()</div></div>\n-<div class=\"ttc\" id=\"aa01341_html_a56964a4c783aa15ec1f819306ee9f214\"><div class=\"ttname\"><a href=\"a01341.html#a56964a4c783aa15ec1f819306ee9f214\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::assignCreaseMaskForEdge</a></div><div class=\"ttdeci\">void assignCreaseMaskForEdge(EDGE const &amp;edge, MASK &amp;mask) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00743_source.html#l00317\">scheme.h:317</a></div></div>\n-<div class=\"ttc\" id=\"aa01341_html_a736c10944cb921b334fbd8b81866d59f\"><div class=\"ttname\"><a href=\"a01341.html#a736c10944cb921b334fbd8b81866d59f\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::assignSmoothLimitMask</a></div><div class=\"ttdeci\">void assignSmoothLimitMask(VERTEX const &amp;vertex, MASK &amp;pos) const</div></div>\n-<div class=\"ttc\" id=\"aa01341_html_a73cf51e4315ca86e5e0a3954c92f8f74\"><div class=\"ttname\"><a href=\"a01341.html#a73cf51e4315ca86e5e0a3954c92f8f74\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::GetLocalNeighborhoodSize</a></div><div class=\"ttdeci\">static int GetLocalNeighborhoodSize()</div></div>\n-<div class=\"ttc\" id=\"aa01341_html_a77644f69ede03fa62222d60a99970238\"><div class=\"ttname\"><a href=\"a01341.html#a77644f69ede03fa62222d60a99970238\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::assignCornerMaskForVertex</a></div><div class=\"ttdeci\">void assignCornerMaskForVertex(VERTEX const &amp;edge, MASK &amp;mask) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00743_source.html#l00331\">scheme.h:331</a></div></div>\n-<div class=\"ttc\" id=\"aa01341_html_a7c9316f7212d3ea41db7f3f1a66cc7e5\"><div class=\"ttname\"><a href=\"a01341.html#a7c9316f7212d3ea41db7f3f1a66cc7e5\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::assignCreaseLimitMask</a></div><div class=\"ttdeci\">void assignCreaseLimitMask(VERTEX const &amp;vertex, MASK &amp;pos, int const creaseEnds[2]) const</div></div>\n-<div class=\"ttc\" id=\"aa01341_html_a84788a5a93f17e648103123c9f4a33f9\"><div class=\"ttname\"><a href=\"a01341.html#a84788a5a93f17e648103123c9f4a33f9\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::assignSmoothMaskForVertex</a></div><div class=\"ttdeci\">void assignSmoothMaskForVertex(VERTEX const &amp;edge, MASK &amp;mask) const</div></div>\n-<div class=\"ttc\" id=\"aa01341_html_a8f7e983b2195ac6b388c7a6db17f8cb0\"><div class=\"ttname\"><a href=\"a01341.html#a8f7e983b2195ac6b388c7a6db17f8cb0\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::GetRegularVertexValence</a></div><div class=\"ttdeci\">static int GetRegularVertexValence()</div></div>\n-<div class=\"ttc\" id=\"aa01341_html_a9ee5e194a00832a5bfa76cf58df0bc4b\"><div class=\"ttname\"><a href=\"a01341.html#a9ee5e194a00832a5bfa76cf58df0bc4b\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::assignSmoothLimitTangentMasks</a></div><div class=\"ttdeci\">void assignSmoothLimitTangentMasks(VERTEX const &amp;vertex, MASK &amp;tan1, MASK &amp;tan2) const</div></div>\n-<div class=\"ttc\" id=\"aa01341_html_aa2821d365ea8135d6316c0f926f87ccb\"><div class=\"ttname\"><a href=\"a01341.html#aa2821d365ea8135d6316c0f926f87ccb\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::assignCornerLimitMask</a></div><div class=\"ttdeci\">void assignCornerLimitMask(VERTEX const &amp;vertex, MASK &amp;pos) const</div></div>\n-<div class=\"ttc\" id=\"aa01341_html_ae9ee7f11f51ec6ff8c43ab0729454b54\"><div class=\"ttname\"><a href=\"a01341.html#ae9ee7f11f51ec6ff8c43ab0729454b54\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::assignCornerLimitTangentMasks</a></div><div class=\"ttdeci\">void assignCornerLimitTangentMasks(VERTEX const &amp;vertex, MASK &amp;tan1, MASK &amp;tan2) const</div></div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_GLSL_PATCH_SHADER_SOURCE</span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa00973_html_a1d1cfd8ffb84e947f82999c682b666a7\"><div class=\"ttname\"><a href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::Type</a></div><div class=\"ttdeci\">Type</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00857_source.html#l00048\">patchDescriptor.h:48</a></div></div>\n+<div class=\"ttc\" id=\"aa01241_html\"><div class=\"ttname\"><a href=\"a01241.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLSLPatchShaderSource</a></div><div class=\"ttdoc\">Provides shader source which can be used by client code.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00728_source.html#l00040\">glslPatchShaderSource.h:40</a></div></div>\n+<div class=\"ttc\" id=\"aa01241_html_a20cb122b561de15ed3b90d7e4f5176d2\"><div class=\"ttname\"><a href=\"a01241.html#a20cb122b561de15ed3b90d7e4f5176d2\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLSLPatchShaderSource::GetVertexShaderSource</a></div><div class=\"ttdeci\">static std::string GetVertexShaderSource(Far::PatchDescriptor::Type type)</div></div>\n+<div class=\"ttc\" id=\"aa01241_html_a230efce26a4754c94dbeedd435fe471b\"><div class=\"ttname\"><a href=\"a01241.html#a230efce26a4754c94dbeedd435fe471b\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLSLPatchShaderSource::GetPatchDrawingShaderSource</a></div><div class=\"ttdeci\">static std::string GetPatchDrawingShaderSource()</div><div class=\"ttdoc\">Returns shader source which can be used while drawing piecewise parametric patches resulting from sub...</div></div>\n+<div class=\"ttc\" id=\"aa01241_html_a57a46d6848317cc76a02bc166ee05c24\"><div class=\"ttname\"><a href=\"a01241.html#a57a46d6848317cc76a02bc166ee05c24\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLSLPatchShaderSource::GetTessEvalShaderSource</a></div><div class=\"ttdeci\">static std::string GetTessEvalShaderSource(Far::PatchDescriptor::Type type)</div></div>\n+<div class=\"ttc\" id=\"aa01241_html_ad41c6e1dc4a5cd6ee4f33fc5a8e15d1d\"><div class=\"ttname\"><a href=\"a01241.html#ad41c6e1dc4a5cd6ee4f33fc5a8e15d1d\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLSLPatchShaderSource::GetPatchBasisShaderSource</a></div><div class=\"ttdeci\">static std::string GetPatchBasisShaderSource()</div><div class=\"ttdoc\">Returns shader source which can be used to evaluate position and first and second derivatives on piec...</div></div>\n+<div class=\"ttc\" id=\"aa01241_html_ad5f427d2655d384980715874209345e7\"><div class=\"ttname\"><a href=\"a01241.html#ad5f427d2655d384980715874209345e7\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLSLPatchShaderSource::GetCommonShaderSource</a></div><div class=\"ttdeci\">static std::string GetCommonShaderSource()</div></div>\n+<div class=\"ttc\" id=\"aa01241_html_afc38178f7de93f60d4f6c1072c33cc7e\"><div class=\"ttname\"><a href=\"a01241.html#afc38178f7de93f60d4f6c1072c33cc7e\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLSLPatchShaderSource::GetTessControlShaderSource</a></div><div class=\"ttdeci\">static std::string GetTessControlShaderSource(Far::PatchDescriptor::Type type)</div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_f61368944c63c2c1f8c69bc232e59c39.html\">sdc</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00728.html\">loopScheme.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00728.html\">glslPatchShaderSource.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-loopScheme.h\n+glslPatchShaderSource.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2014 DreamWorks Animation LLC.\n+2// Copyright 2015 Pixar\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -23,671 +23,84 @@\n 17//\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n-24#ifndef OPENSUBDIV3_SDC_LOOP_SCHEME_H\n-25#define OPENSUBDIV3_SDC_LOOP_SCHEME_H\n-26\n-27#include \"../version.h\"\n-28\n-29#include \"../sdc/scheme.h\"\n-30\n-31#include <cassert>\n-32#include <cmath>\n+24\n+25#ifndef OPENSUBDIV3_OSD_GLSL_PATCH_SHADER_SOURCE_H\n+26#define OPENSUBDIV3_OSD_GLSL_PATCH_SHADER_SOURCE_H\n+27\n+28#include \"../version.h\"\n+29\n+30#include \"../far/patchDescriptor.h\"\n+31\n+32#include <string>\n 33\n 34namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n 35namespace OPENSUBDIV_VERSION {\n-36namespace Sdc {\n-37\n+36\n+37namespace Osd {\n 38\n-39//\n-40// Specializations for Sdc::Scheme<SCHEME_LOOP>:\n-41//\n-42//\n-43\n-44//\n-45// Loop traits:\n-46//\n-47template <>\n-_\b4_\b8inline _\bS_\bp_\bl_\bi_\bt _\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bL_\bO_\bO_\bP_\b>_\b:_\b:_\bG_\be_\bt_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\bi_\bc_\ba_\bl_\bS_\bp_\bl_\bi_\bt_\bT_\by_\bp_\be() { return\n-_\bS_\bP_\bL_\bI_\bT_\b__\bT_\bO_\b__\bT_\bR_\bI_\bS; }\n-49\n-50template <>\n-_\b5_\b1inline int _\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bL_\bO_\bO_\bP_\b>_\b:_\b:_\bG_\be_\bt_\bR_\be_\bg_\bu_\bl_\ba_\br_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be() { return 3; }\n-52\n-53template <>\n-_\b5_\b4inline int _\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bL_\bO_\bO_\bP_\b>_\b:_\b:_\bG_\be_\bt_\bR_\be_\bg_\bu_\bl_\ba_\br_\bV_\be_\br_\bt_\be_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be() { return 6; }\n-55\n-56template <>\n-_\b5_\b7inline int _\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bL_\bO_\bO_\bP_\b>_\b:_\b:_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bh_\bo_\bo_\bd_\bS_\bi_\bz_\be() { return 1; }\n-58\n+_\b4_\b0class _\bG_\bL_\bS_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be {\n+41public:\n+_\b4_\b5 static std::string _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bB_\ba_\bs_\bi_\bs_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be();\n+46\n+_\b5_\b0 static std::string _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bD_\br_\ba_\bw_\bi_\bn_\bg_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be();\n+51\n 59\n-60//\n-61// Protected methods to assign the two types of masks for an edge-vertex --\n-62// Crease and Smooth.\n-63//\n-64// The Crease case does not really need to be specialized, though it may be\n-65// preferable to define all explicitly here.\n-66//\n-67template <>\n-68template <typename EDGE, typename MASK>\n-69inline void\n-_\b7_\b0_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bL_\bO_\bO_\bP_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\br_\be_\ba_\bs_\be_\bM_\ba_\bs_\bk_\bF_\bo_\br_\bE_\bd_\bg_\be(EDGE const&, MASK& mask) const\n-71{\n-72 mask.SetNumVertexWeights(2);\n-73 mask.SetNumEdgeWeights(0);\n-74 mask.SetNumFaceWeights(0);\n-75 mask.SetFaceWeightsForFaceCenters(false);\n-76\n-77 mask.VertexWeight(0) = 0.5f;\n-78 mask.VertexWeight(1) = 0.5f;\n-79}\n+_\b6_\b0 static std::string _\bG_\be_\bt_\bC_\bo_\bm_\bm_\bo_\bn_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be();\n+61\n+_\b6_\b2 static std::string _\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be(\n+63 _\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bT_\by_\bp_\be type);\n+64\n+_\b6_\b5 static std::string _\bG_\be_\bt_\bT_\be_\bs_\bs_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be(\n+66 _\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bT_\by_\bp_\be type);\n+67\n+_\b6_\b8 static std::string _\bG_\be_\bt_\bT_\be_\bs_\bs_\bE_\bv_\ba_\bl_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be(\n+69 _\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bT_\by_\bp_\be type);\n+70\n+72};\n+73\n+74} // end namespace Osd\n+75\n+76} // end namespace OPENSUBDIV_VERSION\n+77using namespace OPENSUBDIV_VERSION;\n+78\n+79} // end namespace OpenSubdiv\n 80\n-81template <>\n-82template <typename EDGE, typename MASK>\n-83inline void\n-_\b8_\b4_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bL_\bO_\bO_\bP_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bS_\bm_\bo_\bo_\bt_\bh_\bM_\ba_\bs_\bk_\bF_\bo_\br_\bE_\bd_\bg_\be(EDGE const& edge, MASK& mask)\n-const\n-85{\n-86 int faceCount = edge.GetNumFaces();\n-87\n-88 mask.SetNumVertexWeights(2);\n-89 mask.SetNumEdgeWeights(0);\n-90 mask.SetNumFaceWeights(faceCount);\n-91 mask.SetFaceWeightsForFaceCenters(false);\n-92\n-93 //\n-94 // This is where we run into the issue of \"face weights\" -- we want to\n-weight the\n-95 // face-centers for Catmark, but face-centers are not generated for Loop. So\n-do\n-96 // we make assumptions on how the mask is used, assign some property to the\n-mask\n-97 // to indicate how they were assigned, or take input from the mask itself?\n-98 //\n-99 // Regardless, we have two choices:\n-100 // - face-weights are for the vertices opposite the edge (as in Hbr):\n-101 // vertex weights = 0.375f;\n-102 // face weights = 0.125f;\n-103 //\n-104 // - face-weights are for the face centers:\n-105 // vertex weights = 0.125f;\n-106 // face weights = 0.375f;\n-107 //\n-108 // Coincidentally the coefficients are the same but reversed.\n-109 //\n-110 typedef typename MASK::Weight Weight;\n-111\n-112 Weight vWeight = mask.AreFaceWeightsForFaceCenters() ? 0.125f : 0.375f;\n-113 Weight fWeight = mask.AreFaceWeightsForFaceCenters() ? 0.375f : 0.125f;\n-114\n-115 mask.VertexWeight(0) = vWeight;\n-116 mask.VertexWeight(1) = vWeight;\n-117\n-118 if (faceCount == 2) {\n-119 mask.FaceWeight(0) = fWeight;\n-120 mask.FaceWeight(1) = fWeight;\n-121 } else {\n-122 // The non-manifold case is not clearly defined -- we adjust the above\n-123 // face-weight to preserve the ratio of edge-center and face-centers:\n-124 fWeight *= 2.0f / (Weight) faceCount;\n-125 for (int i = 0; i < faceCount; ++i) {\n-126 mask.FaceWeight(i) = fWeight;\n-127 }\n-128 }\n-129}\n-130\n-131\n-132//\n-133// Protected methods to assign the three types of masks for a vertex-vertex\n---\n-134// Corner, Crease and Smooth (Dart is the same as Smooth).\n-135//\n-136// Corner and Crease do not really need to be specialized, though it may be\n-137// preferable to define all explicitly here.\n-138//\n-139template <>\n-140template <typename VERTEX, typename MASK>\n-141inline void\n-_\b1_\b4_\b2_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bL_\bO_\bO_\bP_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\br_\bn_\be_\br_\bM_\ba_\bs_\bk_\bF_\bo_\br_\bV_\be_\br_\bt_\be_\bx(VERTEX const&, MASK& mask)\n-const\n-143{\n-144 mask.SetNumVertexWeights(1);\n-145 mask.SetNumEdgeWeights(0);\n-146 mask.SetNumFaceWeights(0);\n-147 mask.SetFaceWeightsForFaceCenters(false);\n-148\n-149 mask.VertexWeight(0) = 1.0f;\n-150}\n-151\n-152template <>\n-153template <typename VERTEX, typename MASK>\n-154inline void\n-_\b1_\b5_\b5_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bL_\bO_\bO_\bP_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\br_\be_\ba_\bs_\be_\bM_\ba_\bs_\bk_\bF_\bo_\br_\bV_\be_\br_\bt_\be_\bx(VERTEX const& vertex, MASK&\n-mask,\n-156 int const creaseEnds[2]) const {\n-157 typedef typename MASK::Weight Weight;\n-158\n-159 int valence = vertex.GetNumEdges();\n-160\n-161 mask.SetNumVertexWeights(1);\n-162 mask.SetNumEdgeWeights(valence);\n-163 mask.SetNumFaceWeights(0);\n-164 mask.SetFaceWeightsForFaceCenters(false);\n-165\n-166 Weight vWeight = 0.75f;\n-167 Weight eWeight = 0.125f;\n-168\n-169 mask.VertexWeight(0) = vWeight;\n-170 for (int i = 0; i < valence; ++i) {\n-171 mask.EdgeWeight(i) = 0.0f;\n-172 }\n-173 mask.EdgeWeight(creaseEnds[0]) = eWeight;\n-174 mask.EdgeWeight(creaseEnds[1]) = eWeight;\n-175}\n-176\n-177template <>\n-178template <typename VERTEX, typename MASK>\n-179inline void\n-_\b1_\b8_\b0_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bL_\bO_\bO_\bP_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bS_\bm_\bo_\bo_\bt_\bh_\bM_\ba_\bs_\bk_\bF_\bo_\br_\bV_\be_\br_\bt_\be_\bx(VERTEX const& vertex, MASK&\n-mask) const\n-181{\n-182 typedef typename MASK::Weight Weight;\n-183\n-184 int valence = vertex.GetNumFaces();\n-185\n-186 mask.SetNumVertexWeights(1);\n-187 mask.SetNumEdgeWeights(valence);\n-188 mask.SetNumFaceWeights(0);\n-189 mask.SetFaceWeightsForFaceCenters(false);\n-190\n-191 // Specialize for the regular case: 1/16 per edge-vert, 5/8 for the vert\n-itself:\n-192 Weight eWeight = (Weight) 0.0625f;\n-193 Weight vWeight = (Weight) 0.625f;\n-194\n-195 if (valence != 6) {\n-196 // From HbrLoopSubdivision<T>::Subdivide(mesh, vertex):\n-197 // - could use some lookup tables here for common irregular valence (5, 7,\n-8)\n-198 // or all of these cosine calls will be adding up...\n-199\n-200 double dValence = (double) valence;\n-201 double invValence = 1.0f / dValence;\n-202 double cosTheta = std::cos(M_PI * 2.0f * invValence);\n-203\n-204 double beta = 0.25f * cosTheta + 0.375f;\n-205\n-206 eWeight = (Weight) ((0.625f - (beta * beta)) * invValence);\n-207 vWeight = (Weight) (1.0f - (eWeight * dValence));\n-208 }\n-209\n-210 mask.VertexWeight(0) = vWeight;\n-211 for (int i = 0; i < valence; ++i) {\n-212 mask.EdgeWeight(i) = eWeight;\n-213 }\n-214}\n-215\n-216\n-217//\n-218// Limit masks for position:\n-219//\n-220template <>\n-221template <typename VERTEX, typename MASK>\n-222inline void\n-_\b2_\b2_\b3_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bL_\bO_\bO_\bP_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\br_\bn_\be_\br_\bL_\bi_\bm_\bi_\bt_\bM_\ba_\bs_\bk(VERTEX const& /* vertex */, MASK&\n-posMask) const {\n-224\n-225 posMask.SetNumVertexWeights(1);\n-226 posMask.SetNumEdgeWeights(0);\n-227 posMask.SetNumFaceWeights(0);\n-228 posMask.SetFaceWeightsForFaceCenters(false);\n-229\n-230 posMask.VertexWeight(0) = 1.0f;\n-231}\n-232\n-233template <>\n-234template <typename VERTEX, typename MASK>\n-235inline void\n-_\b2_\b3_\b6_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bL_\bO_\bO_\bP_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\br_\be_\ba_\bs_\be_\bL_\bi_\bm_\bi_\bt_\bM_\ba_\bs_\bk(VERTEX const& vertex, MASK&\n-posMask,\n-237 int const creaseEnds[2]) const {\n-238\n-239 typedef typename MASK::Weight Weight;\n-240\n-241 int valence = vertex.GetNumEdges();\n-242\n-243 posMask.SetNumVertexWeights(1);\n-244 posMask.SetNumEdgeWeights(valence);\n-245 posMask.SetNumFaceWeights(0);\n-246 posMask.SetFaceWeightsForFaceCenters(false);\n-247\n-248 //\n-249 // The refinement mask for a crease vertex is (1/8, 3/4, 1/8) and for a\n-crease\n-250 // edge is (1/2, 1/2) -- producing a uniform B-spline curve along the\n-crease\n-251 // (boundary) whether the vertex or its crease is regular or not. The limit\n-252 // mask is therefore (1/6, 2/3, 1/6) for ALL cases.\n-253 //\n-254 // An alternative limit mask (1/5, 3/5, 1/5) is often published for use\n-either\n-255 // for irregular crease vertices or for all crease/boundary vertices, but\n-this\n-256 // is based on an alternate refinement mask for the edge -- (3/8, 5/8)\n-versus\n-257 // the usual (1/2, 1/2) -- and will not produce the B-spline curve desired.\n-258 //\n-259 Weight vWeight = (Weight) (4.0 / 6.0);\n-260 Weight eWeight = (Weight) (1.0 / 6.0);\n-261\n-262 posMask.VertexWeight(0) = vWeight;\n-263 for (int i = 0; i < valence; ++i) {\n-264 posMask.EdgeWeight(i) = 0.0f;\n-265 }\n-266 posMask.EdgeWeight(creaseEnds[0]) = eWeight;\n-267 posMask.EdgeWeight(creaseEnds[1]) = eWeight;\n-268}\n-269\n-270template <>\n-271template <typename VERTEX, typename MASK>\n-272inline void\n-_\b2_\b7_\b3_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bL_\bO_\bO_\bP_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bS_\bm_\bo_\bo_\bt_\bh_\bL_\bi_\bm_\bi_\bt_\bM_\ba_\bs_\bk(VERTEX const& vertex, MASK&\n-posMask) const {\n-274\n-275 typedef typename MASK::Weight Weight;\n-276\n-277 int valence = vertex.GetNumFaces();\n-278\n-279 posMask.SetNumVertexWeights(1);\n-280 posMask.SetNumEdgeWeights(valence);\n-281 posMask.SetNumFaceWeights(0);\n-282 posMask.SetFaceWeightsForFaceCenters(false);\n-283\n-284 // Specialize for the regular case: 1/12 per edge-vert, 1/2 for the vert\n-itself:\n-285 if (valence == 6) {\n-286 Weight eWeight = (Weight) (1.0 / 12.0);\n-287 Weight vWeight = 0.5f;\n-288\n-289 posMask.VertexWeight(0) = vWeight;\n-290\n-291 posMask.EdgeWeight(0) = eWeight;\n-292 posMask.EdgeWeight(1) = eWeight;\n-293 posMask.EdgeWeight(2) = eWeight;\n-294 posMask.EdgeWeight(3) = eWeight;\n-295 posMask.EdgeWeight(4) = eWeight;\n-296 posMask.EdgeWeight(5) = eWeight;\n-297\n-298 } else {\n-299 double dValence = (double) valence;\n-300 double invValence = 1.0f / dValence;\n-301 double cosTheta = std::cos(M_PI * 2.0f * invValence);\n-302\n-303 double beta = 0.25f * cosTheta + 0.375f;\n-304 double gamma = (0.625f - (beta * beta)) * invValence;\n-305\n-306 Weight eWeight = (Weight) (1.0f / (dValence + 3.0f / (8.0f * gamma)));\n-307 Weight vWeight = (Weight) (1.0f - (eWeight * dValence));\n-308\n-309 posMask.VertexWeight(0) = vWeight;\n-310 for (int i = 0; i < valence; ++i) {\n-311 posMask.EdgeWeight(i) = eWeight;\n-312 }\n-313 }\n-314}\n-315\n-316/*\n-317// Limit masks for tangents:\n-318//\n-319// A note on tangent magnitudes:\n-320//\n-321// Several formulae exist for limit tangents at a vertex to accommodate the\n-322// different topological configurations around the vertex. While these\n-produce\n-323// the desired direction, there is inconsistency in the resulting\n-magnitudes.\n-324// Ideally a regular mesh of uniformly shaped triangles with similar edge\n-lengths\n-325// should produce tangents of similar magnitudes throughout -- including\n-corners\n-326// and boundaries. So some of the common formulae for these are adjusted\n-with\n-327// scale factors.\n-328//\n-329// For uses where magnitude does not matter, this scaling should be\n-irrelevant.\n-330// But just as with patches, where the magnitudes of partial derivatives are\n-331// consistent between similar patches, the magnitudes of limit tangents\n-should\n-332// also be similar.\n-333//\n-334// The reference tangents, in terms of magnitudes, are those produced by the\n-335// limit tangent mask for smooth interior vertices, for which well\n-established\n-336// sin/cos formulae apply -- these remain unscaled. Formulae for the other\n-337// crease/boundary, corner tangents and irregular cases are scaled to be\n-more\n-338// consistent with these.\n-339//\n-340// The crease/boundary tangents for the regular case can be viewed as\n-derived\n-341// from the smooth interior masks with two \"phantom\" points extrapolated\n-across\n-342// the regular boundary:\n-343//\n-344// v3 v2\n-345// X - - - - - X\n-346// / \\ / \\\n-347// / \\ / \\\n-348// v4 X - - - - - X - - - - - X v1\n-349// . . 0 . .\n-350// . . . .\n-351// . . . .\n-352// (v5) (v6)\n-353//\n-354// where v5 = v0 + (v4 - v3) and v6 = v0 + v1 - v2.\n-355//\n-356// When the standard limit tangent mask is applied, the cosines of\n-increments\n-357// of pi/3 give us coefficients that are multiples of 1/2, leading to the\n-first\n-358// tangent T1 = 3/2 * (v1 - v4), rather than the widely used T1 = v1 - v4.\n-So\n-359// this scale factor of 3/2 is applied to ensure tangents along the\n-boundaries\n-360// are of similar magnitude as tangents in the immediate interior (which may\n-be\n-361// parallel).\n-362//\n-363// Tangents at corners are essentially a form of boundary tangent, and so\n-its\n-364// simple difference formula is scaled to be consistent with adjoining\n-boundary\n-365// tangents -- not just with the 3/2 factor from above, but with an\n-additional\n-366// 2.0 to compensate for the fact that the difference of only side of the\n-vertex\n-367// is considered here. The resulting scale factor of 3.0 for the regular\n-corner\n-368// is what similarly arises by extrapolating an interior region around the\n-369// vertex and using the interior mask for the first tangent.\n-370//\n-371// The cross-tangent formula for the regular crease/boundary is similarly\n-found\n-372// from the above construction of the boundary, but the commonly used\n-weights of\n-373// +/- 1 and 2 result from omitting the common factor of sqrt(3)/2 (arising\n-from\n-374// the sines of increments of pi/3). With that scale factor close to one, it\n-has\n-375// less impact than the irregular cases, which are analogous to corner\n-tangents\n-376// in that differences on only one side of the vertex are considered. While\n-a\n-377// scaling of 3.0 is similarly understandable for the valence 2 and 3 cases,\n-it is\n-378// less obvious in the irregular formula for valence > 4, but similarly\n-effective.\n-379//\n-380// The end result of these adjustments should be a set of limit tangents\n-that are\n-381// of similar magnitude over a regular mesh including boundaries and\n-corners.\n-382*/\n-383template <>\n-384template <typename VERTEX, typename MASK>\n-385inline void\n-_\b3_\b8_\b6_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bL_\bO_\bO_\bP_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\br_\bn_\be_\br_\bL_\bi_\bm_\bi_\bt_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bM_\ba_\bs_\bk_\bs(VERTEX const& vertex,\n-387 MASK& tan1Mask, MASK& tan2Mask) const {\n-388\n-389 int valence = vertex.GetNumEdges();\n-390\n-391 tan1Mask.SetNumVertexWeights(1);\n-392 tan1Mask.SetNumEdgeWeights(valence);\n-393 tan1Mask.SetNumFaceWeights(0);\n-394 tan1Mask.SetFaceWeightsForFaceCenters(false);\n-395\n-396 tan2Mask.SetNumVertexWeights(1);\n-397 tan2Mask.SetNumEdgeWeights(valence);\n-398 tan2Mask.SetNumFaceWeights(0);\n-399 tan2Mask.SetFaceWeightsForFaceCenters(false);\n-400\n-401 // See note above regarding scale factor of 3.0:\n-402 tan1Mask.VertexWeight(0) = -3.0f;\n-403 tan1Mask.EdgeWeight(0) = 3.0f;\n-404 tan1Mask.EdgeWeight(1) = 0.0f;\n-405\n-406 tan2Mask.VertexWeight(0) = -3.0f;\n-407 tan2Mask.EdgeWeight(0) = 0.0f;\n-408 tan2Mask.EdgeWeight(1) = 3.0f;\n-409\n-410 // Should be at least 2 edges -- be sure to clear weights for any more:\n-411 for (int i = 2; i < valence; ++i) {\n-412 tan1Mask.EdgeWeight(i) = 0.0f;\n-413 tan2Mask.EdgeWeight(i) = 0.0f;\n-414 }\n-415}\n-416\n-417template <>\n-418template <typename VERTEX, typename MASK>\n-419inline void\n-_\b4_\b2_\b0_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bL_\bO_\bO_\bP_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\br_\be_\ba_\bs_\be_\bL_\bi_\bm_\bi_\bt_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bM_\ba_\bs_\bk_\bs(VERTEX const& vertex,\n-421 MASK& tan1Mask, MASK& tan2Mask, int const creaseEnds[2]) const {\n-422\n-423 typedef typename MASK::Weight Weight;\n-424\n-425 //\n-426 // First, the tangent along the crease:\n-427 // The first crease edge is considered the \"leading\" edge of the span\n-428 // of surface for which we are evaluating tangents and the second edge the\n-429 // \"trailing edge\". By convention, the tangent along the crease is oriented\n-430 // in the direction of the leading edge.\n-431 //\n-432 int valence = vertex.GetNumEdges();\n-433\n-434 tan1Mask.SetNumVertexWeights(1);\n-435 tan1Mask.SetNumEdgeWeights(valence);\n-436 tan1Mask.SetNumFaceWeights(0);\n-437 tan1Mask.SetFaceWeightsForFaceCenters(false);\n-438\n-439 tan1Mask.VertexWeight(0) = 0.0f;\n-440 for (int i = 0; i < valence; ++i) {\n-441 tan1Mask.EdgeWeight(i) = 0.0f;\n-442 }\n-443\n-444 // See the note above regarding scale factor of 1.5:\n-445 tan1Mask.EdgeWeight(creaseEnds[0]) = 1.5f;\n-446 tan1Mask.EdgeWeight(creaseEnds[1]) = -1.5f;\n-447\n-448 //\n-449 // Second, the tangent across the interior faces:\n-450 // Note this is ambiguous for an interior vertex. We currently return\n-451 // the tangent for the surface in the counter-clockwise span between the\n-452 // leading and trailing edges that form the crease. Given the expected\n-453 // computation of a surface normal as Tan1 X Tan2, this tangent should be\n-454 // oriented \"inward\" from the crease/boundary -- across the surface rather\n-455 // than outward and away from it.\n-456 //\n-457 // There is inconsistency in the orientation of this tangent in commonly\n-458 // published results: the general formula provided for arbitrary valence\n-459 // has the tangent pointing across the crease and \"outward\" from the\n-surface,\n-460 // while the special cases for regular valence and lower have the tangent\n-461 // pointing across the surface and \"inward\" from the crease. So if we are\n-462 // to consistently orient the first tangent along the crease, regardless of\n-463 // the interior topology, we have to correct this. With the first tangent\n-464 // following the direction of the leading crease edge, we want the second\n-465 // tangent pointing inward/across the surface -- so we flip the result of\n-466 // the general formula.\n-467 //\n-468 tan2Mask.SetNumVertexWeights(1);\n-469 tan2Mask.SetNumEdgeWeights(valence);\n-470 tan2Mask.SetNumFaceWeights(0);\n-471 tan2Mask.SetFaceWeightsForFaceCenters(false);\n-472\n-473 for (int i = 0; i < creaseEnds[0]; ++i) {\n-474 tan2Mask.EdgeWeight(i) = 0.0f;\n-475 }\n-476 int interiorEdgeCount = creaseEnds[1] - creaseEnds[0] - 1;\n-477 if (interiorEdgeCount == 2) {\n-478 // See note above regarding scale factor of (sin(60 degs) == sqrt(3)/2:\n-479\n-480 static Weight const Root3 = (Weight) 1.73205080756887729352;\n-481 static Weight const Root3by2 = (Weight) (Root3 * 0.5);\n-482\n-483 tan2Mask.VertexWeight(0) = -Root3;\n-484\n-485 tan2Mask.EdgeWeight(creaseEnds[0]) = -Root3by2;\n-486 tan2Mask.EdgeWeight(creaseEnds[1]) = -Root3by2;\n-487\n-488 tan2Mask.EdgeWeight(creaseEnds[0] + 1) = Root3;\n-489 tan2Mask.EdgeWeight(creaseEnds[0] + 2) = Root3;\n-490 } else if (interiorEdgeCount > 2) {\n-491 // See notes above regarding scale factor of -3.0 (-1 for orientation,\n-492 // 2.0 for considering the region as a half-disk, and 1.5 in keeping\n-493 // with the crease tangent):\n-494\n-495 double theta = M_PI / (interiorEdgeCount + 1);\n-496\n-497 tan2Mask.VertexWeight(0) = 0.0f;\n-498\n-499 Weight cWeight = (Weight) (-3.0f * std::sin(theta));\n-500 tan2Mask.EdgeWeight(creaseEnds[0]) = cWeight;\n-501 tan2Mask.EdgeWeight(creaseEnds[1]) = cWeight;\n-502\n-503 double eCoeff = -3.0f * 2.0f * (std::cos(theta) - 1.0f);\n-504 for (int i = 1; i <= interiorEdgeCount; ++i) {\n-505 tan2Mask.EdgeWeight(creaseEnds[0] + i) = (Weight) (eCoeff * std::sin(i *\n-theta));\n-506 }\n-507 } else if (interiorEdgeCount == 1) {\n-508 // See notes above regarding scale factor of 3.0:\n-509\n-510 tan2Mask.VertexWeight(0) = -3.0f;\n-511\n-512 tan2Mask.EdgeWeight(creaseEnds[0]) = 0.0f;\n-513 tan2Mask.EdgeWeight(creaseEnds[1]) = 0.0f;\n-514\n-515 tan2Mask.EdgeWeight(creaseEnds[0] + 1) = 3.0f;\n-516 } else {\n-517 // See notes above regarding scale factor of 3.0:\n-518\n-519 tan2Mask.VertexWeight(0) = -6.0f;\n-520\n-521 tan2Mask.EdgeWeight(creaseEnds[0]) = 3.0f;\n-522 tan2Mask.EdgeWeight(creaseEnds[1]) = 3.0f;\n-523 }\n-524 for (int i = creaseEnds[1] + 1; i < valence; ++i) {\n-525 tan2Mask.EdgeWeight(i) = 0.0f;\n-526 }\n-527}\n-528\n-529template <>\n-530template <typename VERTEX, typename MASK>\n-531inline void\n-_\b5_\b3_\b2_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bL_\bO_\bO_\bP_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bS_\bm_\bo_\bo_\bt_\bh_\bL_\bi_\bm_\bi_\bt_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bM_\ba_\bs_\bk_\bs(VERTEX const& vertex,\n-533 MASK& tan1Mask, MASK& tan2Mask) const {\n-534\n-535 typedef typename MASK::Weight Weight;\n-536\n-537 int valence = vertex.GetNumFaces();\n-538\n-539 tan1Mask.SetNumVertexWeights(1);\n-540 tan1Mask.SetNumEdgeWeights(valence);\n-541 tan1Mask.SetNumFaceWeights(0);\n-542 tan1Mask.SetFaceWeightsForFaceCenters(false);\n-543\n-544 tan2Mask.SetNumVertexWeights(1);\n-545 tan2Mask.SetNumEdgeWeights(valence);\n-546 tan2Mask.SetNumFaceWeights(0);\n-547 tan2Mask.SetFaceWeightsForFaceCenters(false);\n-548\n-549 tan1Mask.VertexWeight(0) = 0.0f;\n-550 tan2Mask.VertexWeight(0) = 0.0f;\n-551\n-552 if (valence == 6) {\n-553 static Weight const Root3by2 = (Weight)(0.5 * 1.73205080756887729352);\n-554\n-555 tan1Mask.EdgeWeight(0) = 1.0f;\n-556 tan1Mask.EdgeWeight(1) = 0.5f;\n-557 tan1Mask.EdgeWeight(2) = -0.5f;\n-558 tan1Mask.EdgeWeight(3) = -1.0f;\n-559 tan1Mask.EdgeWeight(4) = -0.5f;\n-560 tan1Mask.EdgeWeight(5) = 0.5f;\n-561\n-562 tan2Mask.EdgeWeight(0) = 0.0f;\n-563 tan2Mask.EdgeWeight(1) = Root3by2;\n-564 tan2Mask.EdgeWeight(2) = Root3by2;\n-565 tan2Mask.EdgeWeight(3) = 0.0f;\n-566 tan2Mask.EdgeWeight(4) = -Root3by2;\n-567 tan2Mask.EdgeWeight(5) = -Root3by2;\n-568 } else {\n-569 double alpha = 2.0f * M_PI / valence;\n-570 for (int i = 0; i < valence; ++i) {\n-571 double alphaI = alpha * i;\n-572 tan1Mask.EdgeWeight(i) = (Weight) std::cos(alphaI);\n-573 tan2Mask.EdgeWeight(i) = (Weight) std::sin(alphaI);\n-574 }\n-575 }\n-576}\n-577\n-578} // end namespace Sdc\n-579} // end namespace OPENSUBDIV_VERSION\n-580using namespace OPENSUBDIV_VERSION;\n-581} // end namespace OpenSubdiv\n-582\n-583#endif /* OPENSUBDIV3_SDC_LOOP_SCHEME_H */\n+81#endif // OPENSUBDIV3_OSD_GLSL_PATCH_SHADER_SOURCE\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bp_\bl_\bi_\bt\n-Split\n-Enumerated type for all face splitting schemes.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b4_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bP_\bL_\bI_\bT_\b__\bT_\bO_\b__\bT_\bR_\bI_\bS\n-@ SPLIT_TO_TRIS\n-Used by Loop.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b4_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bS_\bm_\bo_\bo_\bt_\bh_\bM_\ba_\bs_\bk_\bF_\bo_\br_\bE_\bd_\bg_\be\n-void assignSmoothMaskForEdge(EDGE const &edge, MASK &mask) const\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bG_\be_\bt_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\bi_\bc_\ba_\bl_\bS_\bp_\bl_\bi_\bt_\bT_\by_\bp_\be\n-static Split GetTopologicalSplitType()\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\br_\be_\ba_\bs_\be_\bM_\ba_\bs_\bk_\bF_\bo_\br_\bV_\be_\br_\bt_\be_\bx\n-void assignCreaseMaskForVertex(VERTEX const &edge, MASK &mask, int const\n-creaseEnds[2]) const\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\br_\be_\ba_\bs_\be_\bL_\bi_\bm_\bi_\bt_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bM_\ba_\bs_\bk_\bs\n-void assignCreaseLimitTangentMasks(VERTEX const &vertex, MASK &tan1, MASK\n-&tan2, int const creaseEnds[2]) const\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bG_\be_\bt_\bR_\be_\bg_\bu_\bl_\ba_\br_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be\n-static int GetRegularFaceSize()\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\br_\be_\ba_\bs_\be_\bM_\ba_\bs_\bk_\bF_\bo_\br_\bE_\bd_\bg_\be\n-void assignCreaseMaskForEdge(EDGE const &edge, MASK &mask) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b3_\b1_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bS_\bm_\bo_\bo_\bt_\bh_\bL_\bi_\bm_\bi_\bt_\bM_\ba_\bs_\bk\n-void assignSmoothLimitMask(VERTEX const &vertex, MASK &pos) const\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bh_\bo_\bo_\bd_\bS_\bi_\bz_\be\n-static int GetLocalNeighborhoodSize()\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\br_\bn_\be_\br_\bM_\ba_\bs_\bk_\bF_\bo_\br_\bV_\be_\br_\bt_\be_\bx\n-void assignCornerMaskForVertex(VERTEX const &edge, MASK &mask) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b3_\b3_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\br_\be_\ba_\bs_\be_\bL_\bi_\bm_\bi_\bt_\bM_\ba_\bs_\bk\n-void assignCreaseLimitMask(VERTEX const &vertex, MASK &pos, int const\n-creaseEnds[2]) const\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bS_\bm_\bo_\bo_\bt_\bh_\bM_\ba_\bs_\bk_\bF_\bo_\br_\bV_\be_\br_\bt_\be_\bx\n-void assignSmoothMaskForVertex(VERTEX const &edge, MASK &mask) const\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bG_\be_\bt_\bR_\be_\bg_\bu_\bl_\ba_\br_\bV_\be_\br_\bt_\be_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be\n-static int GetRegularVertexValence()\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bS_\bm_\bo_\bo_\bt_\bh_\bL_\bi_\bm_\bi_\bt_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bM_\ba_\bs_\bk_\bs\n-void assignSmoothLimitTangentMasks(VERTEX const &vertex, MASK &tan1, MASK\n-&tan2) const\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\br_\bn_\be_\br_\bL_\bi_\bm_\bi_\bt_\bM_\ba_\bs_\bk\n-void assignCornerLimitMask(VERTEX const &vertex, MASK &pos) const\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\br_\bn_\be_\br_\bL_\bi_\bm_\bi_\bt_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bM_\ba_\bs_\bk_\bs\n-void assignCornerLimitTangentMasks(VERTEX const &vertex, MASK &tan1, MASK\n-&tan2) const\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bT_\by_\bp_\be\n+Type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b4_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be\n+Provides shader source which can be used by client code.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bs_\bl_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b._\bh_\b:_\b4_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b:_\b:\n+_\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be\n+static std::string GetVertexShaderSource(Far::PatchDescriptor::Type type)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b:_\b:\n+_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bD_\br_\ba_\bw_\bi_\bn_\bg_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be\n+static std::string GetPatchDrawingShaderSource()\n+Returns shader source which can be used while drawing piecewise parametric\n+patches resulting from sub...\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b:_\b:\n+_\bG_\be_\bt_\bT_\be_\bs_\bs_\bE_\bv_\ba_\bl_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be\n+static std::string GetTessEvalShaderSource(Far::PatchDescriptor::Type type)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b:_\b:\n+_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bB_\ba_\bs_\bi_\bs_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be\n+static std::string GetPatchBasisShaderSource()\n+Returns shader source which can be used to evaluate position and first and\n+second derivatives on piec...\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b:_\b:\n+_\bG_\be_\bt_\bC_\bo_\bm_\bm_\bo_\bn_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be\n+static std::string GetCommonShaderSource()\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b:_\b:\n+_\bG_\be_\bt_\bT_\be_\bs_\bs_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be\n+static std::string GetTessControlShaderSource(Far::PatchDescriptor::Type type)\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bs_\bd_\bc\n-    * _\bl_\bo_\bo_\bp_\bS_\bc_\bh_\be_\bm_\be_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bg_\bl_\bs_\bl_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00731.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00731.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/sdc/crease.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/osd/tbbEvaluator.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -90,41 +90,42 @@\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> &#124;\n <a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">crease.h File Reference</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">tbbEvaluator.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00734_source.html\">../sdc/options.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00764_source.html\">../osd/bufferDescriptor.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a01489_source.html\">../osd/types.h</a>&quot;</code><br />\n+<code>#include &lt;cstddef&gt;</code><br />\n </div>\n <p><a href=\"a00731_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01333.html\">Crease</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Types, constants and utilities related to semi-sharp creasing &ndash; whose implementation is independent of the subdivision scheme.  <a href=\"a01333.html#details\">More...</a><br /></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01317.html\">TbbEvaluator</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00913\" id=\"r_a00913\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00913.html\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc</a></td></tr>\n+<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_f61368944c63c2c1f8c69bc232e59c39.html\">sdc</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00731.html\">crease.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00731.html\">tbbEvaluator.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,25 +1,25 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-crease.h File Reference\n+tbbEvaluator.h File Reference\n #include \"../version.h\"\n-#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh\"\n+#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh\"\n+#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n+#include <cstddef>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bC_\br_\be_\ba_\bs_\be\n-\u00a0       Types, constants and utilities related to semi-sharp creasing \u2013 whose\n-        implementation is independent of the subdivision scheme. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bs_\bd_\bc\n-    * _\bc_\br_\be_\ba_\bs_\be_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bt_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00731.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00731.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,3 +1,3 @@\n var a00731 = [\n-    [\"Crease\", \"a01333.html\", \"a01333\"]\n+    [\"TbbEvaluator\", \"a01317.html\", null]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00731_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00731_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/sdc/crease.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/osd/tbbEvaluator.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">crease.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">tbbEvaluator.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00731.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2014 DreamWorks Animation LLC.</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2015 Pixar</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -118,221 +118,529 @@\n <div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_SDC_CREASE_H</span></div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#define OPENSUBDIV3_SDC_CREASE_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span> </div>\n-<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span> </div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#include &quot;../sdc/options.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span> </div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n+<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_TBB_EVALUATOR_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_TBB_EVALUATOR_H</span></div>\n+<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n+<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#include &quot;../osd/bufferDescriptor.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../osd/types.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &lt;cstddef&gt;</span></div>\n <div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">namespace </span>Sdc {</div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span> </div>\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00062\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01333.html\">   62</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01333.html\">Crease</a> {</div>\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span> </div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01333.html#a2f54449f8a8ca460b0ad468b1aa1b4e0\">   67</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> <a class=\"code hl_variable\" href=\"a01333.html#a2f54449f8a8ca460b0ad468b1aa1b4e0\">SHARPNESS_SMOOTH</a>;    <span class=\"comment\">// =  0.0f, do we really need this?</span></div>\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01333.html#a3bd7c586b7bf49ac3b1053ba789dae07\">   68</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> <a class=\"code hl_variable\" href=\"a01333.html#a3bd7c586b7bf49ac3b1053ba789dae07\">SHARPNESS_INFINITE</a>;  <span class=\"comment\">// = 10.0f;</span></div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span> </div>\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01333.html#a4620253f6da5407f55c2b95a727e0f03\">   70</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01333.html#a4620253f6da5407f55c2b95a727e0f03\">IsSmooth</a>(<span class=\"keywordtype\">float</span> sharpness)    { <span class=\"keywordflow\">return</span> sharpness &lt;= <a class=\"code hl_variable\" href=\"a01333.html#a2f54449f8a8ca460b0ad468b1aa1b4e0\">SHARPNESS_SMOOTH</a>; }</div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01333.html#ac9bfeebd44b0e47bb06c119c3b4ed750\">   71</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01333.html#ac9bfeebd44b0e47bb06c119c3b4ed750\">IsSharp</a>(<span class=\"keywordtype\">float</span> sharpness)     { <span class=\"keywordflow\">return</span> sharpness &gt; <a class=\"code hl_variable\" href=\"a01333.html#a2f54449f8a8ca460b0ad468b1aa1b4e0\">SHARPNESS_SMOOTH</a>; }</div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01333.html#a0538e02ac31e9f1118abdd1f272e7982\">   72</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01333.html#a0538e02ac31e9f1118abdd1f272e7982\">IsInfinite</a>(<span class=\"keywordtype\">float</span> sharpness)  { <span class=\"keywordflow\">return</span> sharpness &gt;= <a class=\"code hl_variable\" href=\"a01333.html#a3bd7c586b7bf49ac3b1053ba789dae07\">SHARPNESS_INFINITE</a>; }</div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01333.html#a694f45be997ab00786d1b80f5bd39d8f\">   73</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01333.html#a694f45be997ab00786d1b80f5bd39d8f\">IsSemiSharp</a>(<span class=\"keywordtype\">float</span> sharpness) { <span class=\"keywordflow\">return</span> (<a class=\"code hl_variable\" href=\"a01333.html#a2f54449f8a8ca460b0ad468b1aa1b4e0\">SHARPNESS_SMOOTH</a> &lt; sharpness) &amp;&amp; (sharpness &lt; <a class=\"code hl_variable\" href=\"a01333.html#a3bd7c586b7bf49ac3b1053ba789dae07\">SHARPNESS_INFINITE</a>); }</div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00082\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78\">   82</a></span>    <span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78\">Rule</a> {</div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78ab299aefb26013a79d52191a7887fea53\">   83</a></span>        <a class=\"code hl_enumvalue\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78ab299aefb26013a79d52191a7887fea53\">RULE_UNKNOWN</a> = 0,</div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78a61d137f866997ed3693e3fcad76def5f\">   84</a></span>        <a class=\"code hl_enumvalue\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78a61d137f866997ed3693e3fcad76def5f\">RULE_SMOOTH</a>  = (1 &lt;&lt; 0),</div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78a43469c29d8579a63bc1d6247d2624799\">   85</a></span>        <a class=\"code hl_enumvalue\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78a43469c29d8579a63bc1d6247d2624799\">RULE_DART</a>    = (1 &lt;&lt; 1),</div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78a966fa1ae8aeb8587c498cf6a92cc3335\">   86</a></span>        <a class=\"code hl_enumvalue\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78a966fa1ae8aeb8587c498cf6a92cc3335\">RULE_CREASE</a>  = (1 &lt;&lt; 2),</div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>        <a class=\"code hl_enumvalue\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78a27ed0595212af48db763e461bfdc29ef\">RULE_CORNER</a>  = (1 &lt;&lt; 3)</div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78a27ed0595212af48db763e461bfdc29ef\">   88</a></span>    };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span> </div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01333.html#a9659c3f2c73b80d9dc22763a6054079b\">   91</a></span>    <a class=\"code hl_function\" href=\"a01333.html#a9659c3f2c73b80d9dc22763a6054079b\">Crease</a>() : _options() { }</div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01333.html#a75d5d7e54170ccf6481932916e0fa9c1\">   92</a></span>    <a class=\"code hl_function\" href=\"a01333.html#a75d5d7e54170ccf6481932916e0fa9c1\">Crease</a>(<a class=\"code hl_class\" href=\"a01337.html\">Options</a> <span class=\"keyword\">const</span>&amp; options) : _options(options) { }</div>\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01333.html#af6737d6f9be18766c7a993cc9da108a8\">   93</a></span>    <a class=\"code hl_function\" href=\"a01333.html#af6737d6f9be18766c7a993cc9da108a8\">~Crease</a>() { }</div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">namespace </span>Osd {</div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00039\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01317.html\">   39</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01317.html\">TbbEvaluator</a> {</div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span> </div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00072\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01317.html#a1083776ed758e8a1ebd8915eb68c5010\">   72</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01317.html#a1083776ed758e8a1ebd8915eb68c5010\">EvalStencils</a>(</div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span>        <a class=\"code hl_class\" href=\"a01317.html\">TbbEvaluator</a> <span class=\"keyword\">const</span> *instance = NULL,</div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span>        <span class=\"keywordtype\">void</span> *deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span> </div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span> </div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>        <span class=\"keywordflow\">if</span> (stencilTable-&gt;GetNumStencils() == 0)</div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span> </div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01317.html#a1083776ed758e8a1ebd8915eb68c5010\">EvalStencils</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>                            dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>                            &amp;stencilTable-&gt;GetSizes()[0],</div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>                            &amp;stencilTable-&gt;GetOffsets()[0],</div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>                            &amp;stencilTable-&gt;GetControlIndices()[0],</div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>                            &amp;stencilTable-&gt;GetWeights()[0],</div>\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>                            <span class=\"comment\">/*start = */</span> 0,</div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>                            <span class=\"comment\">/*end   = */</span> stencilTable-&gt;GetNumStencils());</div>\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span>    }</div>\n+</div>\n <div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span> </div>\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01333.html#a5dfa6810f510fac1ec621fc9e6b530c4\">   95</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01333.html#a5dfa6810f510fac1ec621fc9e6b530c4\">IsUniform</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _options.<a class=\"code hl_function\" href=\"a01337.html#a17dfce050325c0054b6e2fa422cb62b1\">GetCreasingMethod</a>() == <a class=\"code hl_enumvalue\" href=\"a01337.html#a16ec522dc0398bf1435a912cd669ffb0a10f2956db48d2975424be2e52ebd544d\">Options::CREASE_UNIFORM</a>; }</div>\n-<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span> </div>\n-<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span> </div>\n-<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"a01333.html#aa4ac191c71a85e2929036f27377fea59\">SharpenBoundaryEdge</a>(<span class=\"keywordtype\">float</span> edgeSharpness) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"a01333.html#a121d7a72bfdf61c89df7447a52ffb848\">SharpenBoundaryVertex</a>(<span class=\"keywordtype\">float</span> edgeSharpness) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span> </div>\n-<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span>    <span class=\"comment\">//  For future consideration</span></div>\n-<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span>    <span class=\"comment\">//float SharpenNonManifoldEdge(float edgeSharpness) const;</span></div>\n-<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span>    <span class=\"comment\">//float SharpenNonManifoldVertex(float edgeSharpness) const;</span></div>\n-<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span> </div>\n-<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span> </div>\n-<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"a01333.html#a7e5126bd5cff203bcea84ef35845fb40\">SubdivideUniformSharpness</a>(<span class=\"keywordtype\">float</span> vertexOrEdgeSharpness) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span> </div>\n-<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"a01333.html#a03f4bc921d6ee6fad4440ac134e92e36\">SubdivideVertexSharpness</a>(<span class=\"keywordtype\">float</span> vertexSharpness) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span> </div>\n-<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01333.html#ab37ffb609adbeb8b5b8242b572d4d0de\">  128</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"a01333.html#ab37ffb609adbeb8b5b8242b572d4d0de\">SubdivideEdgeSharpnessAtVertex</a>(<span class=\"keywordtype\">float</span>        edgeSharpness,</div>\n-<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span>                                         <span class=\"keywordtype\">int</span>          incidentEdgeCountAtEndVertex,</div>\n-<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span>                                         <span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span>* edgeSharpnessAroundEndVertex) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\">  131</span> </div>\n-<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01333.html#a7c27382a0be83617c49b8587ba75b438\">  132</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01333.html#a7c27382a0be83617c49b8587ba75b438\">SubdivideEdgeSharpnessesAroundVertex</a>(<span class=\"keywordtype\">int</span>          incidentEdgeCountAtVertex,</div>\n-<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\">  133</span>                                              <span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span>* incidentEdgeSharpnessAroundVertex,</div>\n-<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\">  134</span>                                              <span class=\"keywordtype\">float</span>*       childEdgesSharpnessAroundVertex) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\">  136</span> </div>\n-<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\">  138</span> </div>\n-<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01333.html#a41ebb75d28c5973328e0e3883495aeba\">  144</a></span>    <a class=\"code hl_enumeration\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78\">Rule</a> <a class=\"code hl_function\" href=\"a01333.html#a41ebb75d28c5973328e0e3883495aeba\">DetermineVertexVertexRule</a>(<span class=\"keywordtype\">float</span>        vertexSharpness,</div>\n-<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\">  145</span>                                   <span class=\"keywordtype\">int</span>          incidentEdgeCount,</div>\n-<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\">  146</span>                                   <span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span>* incidentEdgeSharpness) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01333.html#a500fadaa8cec78ab9690ad7331dba3d6\">  147</a></span>    <a class=\"code hl_enumeration\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78\">Rule</a> <a class=\"code hl_function\" href=\"a01333.html#a500fadaa8cec78ab9690ad7331dba3d6\">DetermineVertexVertexRule</a>(<span class=\"keywordtype\">float</span>        vertexSharpness,</div>\n-<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\">  148</span>                                   <span class=\"keywordtype\">int</span>          sharpEdgeCount) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\">  150</span> </div>\n-<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01333.html#ab13f654f25ef7628396fd902291b8f96\">  162</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"a01333.html#ab13f654f25ef7628396fd902291b8f96\">ComputeFractionalWeightAtVertex</a>(<span class=\"keywordtype\">float</span>        vertexSharpness,</div>\n-<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\">  163</span>                                          <span class=\"keywordtype\">float</span>        childVertexSharpness,</div>\n-<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\">  164</span>                                          <span class=\"keywordtype\">int</span>          incidentEdgeCount,</div>\n-<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\">  165</span>                                          <span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span>* incidentEdgeSharpness,</div>\n-<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\">  166</span>                                          <span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span>* childEdgesSharpness) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\">  167</span> </div>\n-<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\">  168</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01333.html#a362f22e7cba1a0b9f63e9b007c19f296\">GetSharpEdgePairOfCrease</a>(<span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * incidentEdgeSharpness,</div>\n-<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\">  169</span>                                  <span class=\"keywordtype\">int</span>           incidentEdgeCount,</div>\n-<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\">  170</span>                                  <span class=\"keywordtype\">int</span>           sharpEdgePair[2]) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span> </div>\n-<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\">  172</span>    <span class=\"comment\">//  Would these really help?  Maybe only need Rules for the vertex-vertex case...</span></div>\n-<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\">  173</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\">  174</span>    <span class=\"comment\">//  Rule DetermineEdgeVertexRule(float parentEdgeSharpness) const;</span></div>\n-<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\">  175</span>    <span class=\"comment\">//  Rule DetermineEdgeVertexRule(float childEdge1Sharpness, float childEdge2Sharpness) const;</span></div>\n+<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01317.html#a4345e3659b7fb82f23dd51c688179ce3\">  121</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01317.html#a4345e3659b7fb82f23dd51c688179ce3\">EvalStencils</a>(</div>\n+<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span>        <span class=\"keywordtype\">float</span> *dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * sizes,</div>\n+<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * offsets,</div>\n+<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * indices,</div>\n+<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * weights,</div>\n+<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span>        <span class=\"keywordtype\">int</span> start, <span class=\"keywordtype\">int</span> end);</div>\n+<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span> </div>\n+<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\">  167</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00168\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01317.html#af04c6d999c9f014e93711ceb9097e2a0\">  168</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01317.html#af04c6d999c9f014e93711ceb9097e2a0\">EvalStencils</a>(</div>\n+<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\">  169</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\">  170</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\">  172</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\">  173</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n+<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\">  174</span>        <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01317.html\">TbbEvaluator</a> *instance = NULL,</div>\n+<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\">  175</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n <div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\">  176</span> </div>\n-<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span><span class=\"keyword\">protected</span>:</div>\n-<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\">  178</span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"a01333.html#a453a232c0edcafd9d484197d46ed39ec\">decrementSharpness</a>(<span class=\"keywordtype\">float</span> sharpness) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\">  178</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n <div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\">  179</span> </div>\n-<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\">  180</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\">  181</span>    <a class=\"code hl_class\" href=\"a01337.html\">Options</a> _options;</div>\n-<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\">  182</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\">  183</span> </div>\n-<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\">  184</span> </div>\n-<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\">  185</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\">  186</span><span class=\"comment\">//  Inline declarations:</span></div>\n-<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\">  187</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\">  188</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">float</span></div>\n-<div class=\"foldopen\" id=\"foldopen00189\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01333.html#aa4ac191c71a85e2929036f27377fea59\">  189</a></span><a class=\"code hl_function\" href=\"a01333.html#aa4ac191c71a85e2929036f27377fea59\">Crease::SharpenBoundaryEdge</a>(<span class=\"keywordtype\">float</span> <span class=\"comment\">/* edgeSharpness */</span>)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\">  190</span> </div>\n-<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\">  191</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\">  192</span>    <span class=\"comment\">//  Despite the presence of the BOUNDARY_NONE option, boundary edges are always sharpened.</span></div>\n-<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\">  193</span>    <span class=\"comment\">//  Much of the code relies on sharpness to indicate boundaries to avoid the more complex</span></div>\n-<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\">  194</span>    <span class=\"comment\">//  topological inspection</span></div>\n-<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\">  195</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\">  196</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01333.html#a3bd7c586b7bf49ac3b1053ba789dae07\">SHARPNESS_INFINITE</a>;</div>\n-<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\">  197</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\">  198</span> </div>\n-<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\">  199</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">float</span></div>\n-<div class=\"foldopen\" id=\"foldopen00200\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01333.html#a121d7a72bfdf61c89df7447a52ffb848\">  200</a></span><a class=\"code hl_function\" href=\"a01333.html#a121d7a72bfdf61c89df7447a52ffb848\">Crease::SharpenBoundaryVertex</a>(<span class=\"keywordtype\">float</span> vertexSharpness)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\">  201</span> </div>\n-<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\">  202</span>    <span class=\"keywordflow\">return</span> (_options.<a class=\"code hl_function\" href=\"a01337.html#a590338ee8b544306b970a0c1445cd01f\">GetVtxBoundaryInterpolation</a>() == <a class=\"code hl_enumvalue\" href=\"a01337.html#acbf78f1a6abfc8db080ef7fb3c3f417eac6e5f52f358d3b6d62cc2b708a5a8757\">Options::VTX_BOUNDARY_EDGE_AND_CORNER</a>) ?</div>\n-<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\">  203</span>            <a class=\"code hl_variable\" href=\"a01333.html#a3bd7c586b7bf49ac3b1053ba789dae07\">SHARPNESS_INFINITE</a> : vertexSharpness;</div>\n-<div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\">  204</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\">  205</span> </div>\n-<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\">  206</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">float</span></div>\n-<div class=\"foldopen\" id=\"foldopen00207\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01333.html#a453a232c0edcafd9d484197d46ed39ec\">  207</a></span><a class=\"code hl_function\" href=\"a01333.html#a453a232c0edcafd9d484197d46ed39ec\">Crease::decrementSharpness</a>(<span class=\"keywordtype\">float</span> sharpness)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\">  208</span> </div>\n-<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\">  209</span>    <span class=\"keywordflow\">if</span> (<a class=\"code hl_function\" href=\"a01333.html#a4620253f6da5407f55c2b95a727e0f03\">IsSmooth</a>(sharpness)) <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01333.html#a2f54449f8a8ca460b0ad468b1aa1b4e0\">Crease::SHARPNESS_SMOOTH</a>;  <span class=\"comment\">// redundant but most common</span></div>\n-<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\">  210</span>    <span class=\"keywordflow\">if</span> (<a class=\"code hl_function\" href=\"a01333.html#a0538e02ac31e9f1118abdd1f272e7982\">IsInfinite</a>(sharpness)) <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01333.html#a3bd7c586b7bf49ac3b1053ba789dae07\">Crease::SHARPNESS_INFINITE</a>;</div>\n-<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\">  211</span>    <span class=\"keywordflow\">if</span> (sharpness &gt; 1.0f) <span class=\"keywordflow\">return</span> (sharpness - 1.0f);</div>\n-<div class=\"line\"><a id=\"l00212\" name=\"l00212\"></a><span class=\"lineno\">  212</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01333.html#a2f54449f8a8ca460b0ad468b1aa1b4e0\">Crease::SHARPNESS_SMOOTH</a>;</div>\n-<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\">  213</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\">  214</span> </div>\n-<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\">  215</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">float</span></div>\n-<div class=\"foldopen\" id=\"foldopen00216\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01333.html#a7e5126bd5cff203bcea84ef35845fb40\">  216</a></span><a class=\"code hl_function\" href=\"a01333.html#a7e5126bd5cff203bcea84ef35845fb40\">Crease::SubdivideUniformSharpness</a>(<span class=\"keywordtype\">float</span> vertexOrEdgeSharpness)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\">  217</span> </div>\n-<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\">  218</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01333.html#a453a232c0edcafd9d484197d46ed39ec\">decrementSharpness</a>(vertexOrEdgeSharpness);</div>\n-<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\">  219</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\">  220</span> </div>\n-<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\">  221</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">float</span></div>\n-<div class=\"foldopen\" id=\"foldopen00222\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01333.html#a03f4bc921d6ee6fad4440ac134e92e36\">  222</a></span><a class=\"code hl_function\" href=\"a01333.html#a03f4bc921d6ee6fad4440ac134e92e36\">Crease::SubdivideVertexSharpness</a>(<span class=\"keywordtype\">float</span> vertexSharpness)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\">  223</span> </div>\n-<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\">  224</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01333.html#a453a232c0edcafd9d484197d46ed39ec\">decrementSharpness</a>(vertexSharpness);</div>\n-<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\">  225</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\">  226</span> </div>\n-<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\">  227</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00228\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01333.html#a362f22e7cba1a0b9f63e9b007c19f296\">  228</a></span><a class=\"code hl_function\" href=\"a01333.html#a362f22e7cba1a0b9f63e9b007c19f296\">Crease::GetSharpEdgePairOfCrease</a>(<span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * incidentEdgeSharpness, <span class=\"keywordtype\">int</span> incidentEdgeCount,</div>\n-<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\">  229</span>                                 <span class=\"keywordtype\">int</span> sharpEdgePair[2])<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\">  230</span> </div>\n-<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\">  231</span>    <span class=\"comment\">//  Only to be called when a crease is present at a vertex -- exactly two sharp</span></div>\n-<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\">  232</span>    <span class=\"comment\">//  edges are expected here:</span></div>\n-<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\">  233</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\">  234</span>    sharpEdgePair[0] = 0;</div>\n-<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\">  235</span>    <span class=\"keywordflow\">while</span> (<a class=\"code hl_function\" href=\"a01333.html#a4620253f6da5407f55c2b95a727e0f03\">IsSmooth</a>(incidentEdgeSharpness[sharpEdgePair[0]])) ++ sharpEdgePair[0];</div>\n-<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\">  236</span> </div>\n-<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\">  237</span>    sharpEdgePair[1] = incidentEdgeCount - 1;</div>\n-<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\">  238</span>    <span class=\"keywordflow\">while</span> (<a class=\"code hl_function\" href=\"a01333.html#a4620253f6da5407f55c2b95a727e0f03\">IsSmooth</a>(incidentEdgeSharpness[sharpEdgePair[1]])) -- sharpEdgePair[1];</div>\n-<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\">  239</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\">  240</span> </div>\n-<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\">  241</span>} <span class=\"comment\">// end namespace sdc</span></div>\n-<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\">  242</span> </div>\n-<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\">  243</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\">  244</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00245\" name=\"l00245\"></a><span class=\"lineno\">  245</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\">  180</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01317.html#a1083776ed758e8a1ebd8915eb68c5010\">EvalStencils</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\">  181</span>                            dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\">  182</span>                            duBuffer-&gt;BindCpuBuffer(),  duDesc,</div>\n+<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\">  183</span>                            dvBuffer-&gt;BindCpuBuffer(),  dvDesc,</div>\n+<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\">  184</span>                            &amp;stencilTable-&gt;GetSizes()[0],</div>\n+<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\">  185</span>                            &amp;stencilTable-&gt;GetOffsets()[0],</div>\n+<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\">  186</span>                            &amp;stencilTable-&gt;GetControlIndices()[0],</div>\n+<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\">  187</span>                            &amp;stencilTable-&gt;GetWeights()[0],</div>\n+<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\">  188</span>                            &amp;stencilTable-&gt;GetDuWeights()[0],</div>\n+<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\">  189</span>                            &amp;stencilTable-&gt;GetDvWeights()[0],</div>\n+<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\">  190</span>                            <span class=\"comment\">/*start = */</span> 0,</div>\n+<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\">  191</span>                            <span class=\"comment\">/*end   = */</span> stencilTable-&gt;GetNumStencils());</div>\n+<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\">  192</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\">  193</span> </div>\n+<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01317.html#a6daed6135a40cda2daf6c6ea2047b330\">  234</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01317.html#a6daed6135a40cda2daf6c6ea2047b330\">EvalStencils</a>(</div>\n+<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\">  235</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\">  236</span>        <span class=\"keywordtype\">float</span> *dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\">  237</span>        <span class=\"keywordtype\">float</span> *du,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\">  238</span>        <span class=\"keywordtype\">float</span> *dv,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\">  239</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * sizes,</div>\n+<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\">  240</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * offsets,</div>\n+<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\">  241</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * indices,</div>\n+<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\">  242</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * weights,</div>\n+<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\">  243</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * duWeights,</div>\n+<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\">  244</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * dvWeights,</div>\n+<div class=\"line\"><a id=\"l00245\" name=\"l00245\"></a><span class=\"lineno\">  245</span>        <span class=\"keywordtype\">int</span> start, <span class=\"keywordtype\">int</span> end);</div>\n <div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\">  246</span> </div>\n-<div class=\"line\"><a id=\"l00247\" name=\"l00247\"></a><span class=\"lineno\">  247</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_SDC_CREASE_H */</span><span class=\"preprocessor\"></span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa01333_html\"><div class=\"ttname\"><a href=\"a01333.html\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease</a></div><div class=\"ttdoc\">Types, constants and utilities related to semi-sharp creasing \u2013 whose implementation is independent o...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00731_source.html#l00062\">crease.h:62</a></div></div>\n-<div class=\"ttc\" id=\"aa01333_html_a03f4bc921d6ee6fad4440ac134e92e36\"><div class=\"ttname\"><a href=\"a01333.html#a03f4bc921d6ee6fad4440ac134e92e36\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::SubdivideVertexSharpness</a></div><div class=\"ttdeci\">float SubdivideVertexSharpness(float vertexSharpness) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00731_source.html#l00222\">crease.h:222</a></div></div>\n-<div class=\"ttc\" id=\"aa01333_html_a0538e02ac31e9f1118abdd1f272e7982\"><div class=\"ttname\"><a href=\"a01333.html#a0538e02ac31e9f1118abdd1f272e7982\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::IsInfinite</a></div><div class=\"ttdeci\">static bool IsInfinite(float sharpness)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00731_source.html#l00072\">crease.h:72</a></div></div>\n-<div class=\"ttc\" id=\"aa01333_html_a11fcd51ef86118f65e603c1474377a78\"><div class=\"ttname\"><a href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::Rule</a></div><div class=\"ttdeci\">Rule</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00731_source.html#l00082\">crease.h:82</a></div></div>\n-<div class=\"ttc\" id=\"aa01333_html_a11fcd51ef86118f65e603c1474377a78a27ed0595212af48db763e461bfdc29ef\"><div class=\"ttname\"><a href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78a27ed0595212af48db763e461bfdc29ef\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::RULE_CORNER</a></div><div class=\"ttdeci\">@ RULE_CORNER</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00731_source.html#l00088\">crease.h:87</a></div></div>\n-<div class=\"ttc\" id=\"aa01333_html_a11fcd51ef86118f65e603c1474377a78a43469c29d8579a63bc1d6247d2624799\"><div class=\"ttname\"><a href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78a43469c29d8579a63bc1d6247d2624799\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::RULE_DART</a></div><div class=\"ttdeci\">@ RULE_DART</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00731_source.html#l00085\">crease.h:85</a></div></div>\n-<div class=\"ttc\" id=\"aa01333_html_a11fcd51ef86118f65e603c1474377a78a61d137f866997ed3693e3fcad76def5f\"><div class=\"ttname\"><a href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78a61d137f866997ed3693e3fcad76def5f\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::RULE_SMOOTH</a></div><div class=\"ttdeci\">@ RULE_SMOOTH</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00731_source.html#l00084\">crease.h:84</a></div></div>\n-<div class=\"ttc\" id=\"aa01333_html_a11fcd51ef86118f65e603c1474377a78a966fa1ae8aeb8587c498cf6a92cc3335\"><div class=\"ttname\"><a href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78a966fa1ae8aeb8587c498cf6a92cc3335\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::RULE_CREASE</a></div><div class=\"ttdeci\">@ RULE_CREASE</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00731_source.html#l00086\">crease.h:86</a></div></div>\n-<div class=\"ttc\" id=\"aa01333_html_a11fcd51ef86118f65e603c1474377a78ab299aefb26013a79d52191a7887fea53\"><div class=\"ttname\"><a href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78ab299aefb26013a79d52191a7887fea53\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::RULE_UNKNOWN</a></div><div class=\"ttdeci\">@ RULE_UNKNOWN</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00731_source.html#l00083\">crease.h:83</a></div></div>\n-<div class=\"ttc\" id=\"aa01333_html_a121d7a72bfdf61c89df7447a52ffb848\"><div class=\"ttname\"><a href=\"a01333.html#a121d7a72bfdf61c89df7447a52ffb848\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::SharpenBoundaryVertex</a></div><div class=\"ttdeci\">float SharpenBoundaryVertex(float edgeSharpness) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00731_source.html#l00200\">crease.h:200</a></div></div>\n-<div class=\"ttc\" id=\"aa01333_html_a2f54449f8a8ca460b0ad468b1aa1b4e0\"><div class=\"ttname\"><a href=\"a01333.html#a2f54449f8a8ca460b0ad468b1aa1b4e0\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::SHARPNESS_SMOOTH</a></div><div class=\"ttdeci\">static float const SHARPNESS_SMOOTH</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00731_source.html#l00067\">crease.h:67</a></div></div>\n-<div class=\"ttc\" id=\"aa01333_html_a362f22e7cba1a0b9f63e9b007c19f296\"><div class=\"ttname\"><a href=\"a01333.html#a362f22e7cba1a0b9f63e9b007c19f296\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::GetSharpEdgePairOfCrease</a></div><div class=\"ttdeci\">void GetSharpEdgePairOfCrease(float const *incidentEdgeSharpness, int incidentEdgeCount, int sharpEdgePair[2]) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00731_source.html#l00228\">crease.h:228</a></div></div>\n-<div class=\"ttc\" id=\"aa01333_html_a3bd7c586b7bf49ac3b1053ba789dae07\"><div class=\"ttname\"><a href=\"a01333.html#a3bd7c586b7bf49ac3b1053ba789dae07\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::SHARPNESS_INFINITE</a></div><div class=\"ttdeci\">static float const SHARPNESS_INFINITE</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00731_source.html#l00068\">crease.h:68</a></div></div>\n-<div class=\"ttc\" id=\"aa01333_html_a41ebb75d28c5973328e0e3883495aeba\"><div class=\"ttname\"><a href=\"a01333.html#a41ebb75d28c5973328e0e3883495aeba\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::DetermineVertexVertexRule</a></div><div class=\"ttdeci\">Rule DetermineVertexVertexRule(float vertexSharpness, int incidentEdgeCount, float const *incidentEdgeSharpness) const</div></div>\n-<div class=\"ttc\" id=\"aa01333_html_a453a232c0edcafd9d484197d46ed39ec\"><div class=\"ttname\"><a href=\"a01333.html#a453a232c0edcafd9d484197d46ed39ec\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::decrementSharpness</a></div><div class=\"ttdeci\">float decrementSharpness(float sharpness) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00731_source.html#l00207\">crease.h:207</a></div></div>\n-<div class=\"ttc\" id=\"aa01333_html_a4620253f6da5407f55c2b95a727e0f03\"><div class=\"ttname\"><a href=\"a01333.html#a4620253f6da5407f55c2b95a727e0f03\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::IsSmooth</a></div><div class=\"ttdeci\">static bool IsSmooth(float sharpness)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00731_source.html#l00070\">crease.h:70</a></div></div>\n-<div class=\"ttc\" id=\"aa01333_html_a500fadaa8cec78ab9690ad7331dba3d6\"><div class=\"ttname\"><a href=\"a01333.html#a500fadaa8cec78ab9690ad7331dba3d6\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::DetermineVertexVertexRule</a></div><div class=\"ttdeci\">Rule DetermineVertexVertexRule(float vertexSharpness, int sharpEdgeCount) const</div></div>\n-<div class=\"ttc\" id=\"aa01333_html_a5dfa6810f510fac1ec621fc9e6b530c4\"><div class=\"ttname\"><a href=\"a01333.html#a5dfa6810f510fac1ec621fc9e6b530c4\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::IsUniform</a></div><div class=\"ttdeci\">bool IsUniform() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00731_source.html#l00095\">crease.h:95</a></div></div>\n-<div class=\"ttc\" id=\"aa01333_html_a694f45be997ab00786d1b80f5bd39d8f\"><div class=\"ttname\"><a href=\"a01333.html#a694f45be997ab00786d1b80f5bd39d8f\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::IsSemiSharp</a></div><div class=\"ttdeci\">static bool IsSemiSharp(float sharpness)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00731_source.html#l00073\">crease.h:73</a></div></div>\n-<div class=\"ttc\" id=\"aa01333_html_a75d5d7e54170ccf6481932916e0fa9c1\"><div class=\"ttname\"><a href=\"a01333.html#a75d5d7e54170ccf6481932916e0fa9c1\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::Crease</a></div><div class=\"ttdeci\">Crease(Options const &amp;options)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00731_source.html#l00092\">crease.h:92</a></div></div>\n-<div class=\"ttc\" id=\"aa01333_html_a7c27382a0be83617c49b8587ba75b438\"><div class=\"ttname\"><a href=\"a01333.html#a7c27382a0be83617c49b8587ba75b438\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::SubdivideEdgeSharpnessesAroundVertex</a></div><div class=\"ttdeci\">void SubdivideEdgeSharpnessesAroundVertex(int incidentEdgeCountAtVertex, float const *incidentEdgeSharpnessAroundVertex, float *childEdgesSharpnessAroundVertex) const</div></div>\n-<div class=\"ttc\" id=\"aa01333_html_a7e5126bd5cff203bcea84ef35845fb40\"><div class=\"ttname\"><a href=\"a01333.html#a7e5126bd5cff203bcea84ef35845fb40\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::SubdivideUniformSharpness</a></div><div class=\"ttdeci\">float SubdivideUniformSharpness(float vertexOrEdgeSharpness) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00731_source.html#l00216\">crease.h:216</a></div></div>\n-<div class=\"ttc\" id=\"aa01333_html_a9659c3f2c73b80d9dc22763a6054079b\"><div class=\"ttname\"><a href=\"a01333.html#a9659c3f2c73b80d9dc22763a6054079b\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::Crease</a></div><div class=\"ttdeci\">Crease()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00731_source.html#l00091\">crease.h:91</a></div></div>\n-<div class=\"ttc\" id=\"aa01333_html_aa4ac191c71a85e2929036f27377fea59\"><div class=\"ttname\"><a href=\"a01333.html#aa4ac191c71a85e2929036f27377fea59\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::SharpenBoundaryEdge</a></div><div class=\"ttdeci\">float SharpenBoundaryEdge(float edgeSharpness) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00731_source.html#l00189\">crease.h:189</a></div></div>\n-<div class=\"ttc\" id=\"aa01333_html_ab13f654f25ef7628396fd902291b8f96\"><div class=\"ttname\"><a href=\"a01333.html#ab13f654f25ef7628396fd902291b8f96\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::ComputeFractionalWeightAtVertex</a></div><div class=\"ttdeci\">float ComputeFractionalWeightAtVertex(float vertexSharpness, float childVertexSharpness, int incidentEdgeCount, float const *incidentEdgeSharpness, float const *childEdgesSharpness) const</div><div class=\"ttdoc\">Transitional weighting: When the rules applicable to a parent vertex and its child differ,...</div></div>\n-<div class=\"ttc\" id=\"aa01333_html_ab37ffb609adbeb8b5b8242b572d4d0de\"><div class=\"ttname\"><a href=\"a01333.html#ab37ffb609adbeb8b5b8242b572d4d0de\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::SubdivideEdgeSharpnessAtVertex</a></div><div class=\"ttdeci\">float SubdivideEdgeSharpnessAtVertex(float edgeSharpness, int incidentEdgeCountAtEndVertex, float const *edgeSharpnessAroundEndVertex) const</div></div>\n-<div class=\"ttc\" id=\"aa01333_html_ac9bfeebd44b0e47bb06c119c3b4ed750\"><div class=\"ttname\"><a href=\"a01333.html#ac9bfeebd44b0e47bb06c119c3b4ed750\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::IsSharp</a></div><div class=\"ttdeci\">static bool IsSharp(float sharpness)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00731_source.html#l00071\">crease.h:71</a></div></div>\n-<div class=\"ttc\" id=\"aa01333_html_af6737d6f9be18766c7a993cc9da108a8\"><div class=\"ttname\"><a href=\"a01333.html#af6737d6f9be18766c7a993cc9da108a8\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::~Crease</a></div><div class=\"ttdeci\">~Crease()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00731_source.html#l00093\">crease.h:93</a></div></div>\n-<div class=\"ttc\" id=\"aa01337_html\"><div class=\"ttname\"><a href=\"a01337.html\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options</a></div><div class=\"ttdoc\">All supported options applying to subdivision scheme.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00734_source.html#l00051\">options.h:51</a></div></div>\n-<div class=\"ttc\" id=\"aa01337_html_a16ec522dc0398bf1435a912cd669ffb0a10f2956db48d2975424be2e52ebd544d\"><div class=\"ttname\"><a href=\"a01337.html#a16ec522dc0398bf1435a912cd669ffb0a10f2956db48d2975424be2e52ebd544d\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::CREASE_UNIFORM</a></div><div class=\"ttdeci\">@ CREASE_UNIFORM</div><div class=\"ttdoc\">Catmark rule.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00734_source.html#l00069\">options.h:69</a></div></div>\n-<div class=\"ttc\" id=\"aa01337_html_a17dfce050325c0054b6e2fa422cb62b1\"><div class=\"ttname\"><a href=\"a01337.html#a17dfce050325c0054b6e2fa422cb62b1\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::GetCreasingMethod</a></div><div class=\"ttdeci\">CreasingMethod GetCreasingMethod() const</div><div class=\"ttdoc\">Get edge crease rule.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00734_source.html#l00101\">options.h:101</a></div></div>\n-<div class=\"ttc\" id=\"aa01337_html_a590338ee8b544306b970a0c1445cd01f\"><div class=\"ttname\"><a href=\"a01337.html#a590338ee8b544306b970a0c1445cd01f\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::GetVtxBoundaryInterpolation</a></div><div class=\"ttdeci\">VtxBoundaryInterpolation GetVtxBoundaryInterpolation() const</div><div class=\"ttdoc\">Get vertex boundary interpolation rule.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00734_source.html#l00089\">options.h:89</a></div></div>\n-<div class=\"ttc\" id=\"aa01337_html_acbf78f1a6abfc8db080ef7fb3c3f417eac6e5f52f358d3b6d62cc2b708a5a8757\"><div class=\"ttname\"><a href=\"a01337.html#acbf78f1a6abfc8db080ef7fb3c3f417eac6e5f52f358d3b6d62cc2b708a5a8757\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::VTX_BOUNDARY_EDGE_AND_CORNER</a></div><div class=\"ttdeci\">@ VTX_BOUNDARY_EDGE_AND_CORNER</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00734_source.html#l00059\">options.h:57</a></div></div>\n+<div class=\"line\"><a id=\"l00302\" name=\"l00302\"></a><span class=\"lineno\">  302</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00303\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00303\" name=\"l00303\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01317.html#a3c5d150e67161bce880678f16c11f579\">  303</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01317.html#a3c5d150e67161bce880678f16c11f579\">EvalStencils</a>(</div>\n+<div class=\"line\"><a id=\"l00304\" name=\"l00304\"></a><span class=\"lineno\">  304</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00305\" name=\"l00305\"></a><span class=\"lineno\">  305</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00306\" name=\"l00306\"></a><span class=\"lineno\">  306</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\">  307</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00308\" name=\"l00308\"></a><span class=\"lineno\">  308</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l00309\" name=\"l00309\"></a><span class=\"lineno\">  309</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l00310\" name=\"l00310\"></a><span class=\"lineno\">  310</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00311\" name=\"l00311\"></a><span class=\"lineno\">  311</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n+<div class=\"line\"><a id=\"l00312\" name=\"l00312\"></a><span class=\"lineno\">  312</span>        <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01317.html\">TbbEvaluator</a> *instance = NULL,</div>\n+<div class=\"line\"><a id=\"l00313\" name=\"l00313\"></a><span class=\"lineno\">  313</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l00314\" name=\"l00314\"></a><span class=\"lineno\">  314</span> </div>\n+<div class=\"line\"><a id=\"l00315\" name=\"l00315\"></a><span class=\"lineno\">  315</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00316\" name=\"l00316\"></a><span class=\"lineno\">  316</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00317\" name=\"l00317\"></a><span class=\"lineno\">  317</span> </div>\n+<div class=\"line\"><a id=\"l00318\" name=\"l00318\"></a><span class=\"lineno\">  318</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01317.html#a1083776ed758e8a1ebd8915eb68c5010\">EvalStencils</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00319\" name=\"l00319\"></a><span class=\"lineno\">  319</span>                            dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00320\" name=\"l00320\"></a><span class=\"lineno\">  320</span>                            duBuffer-&gt;BindCpuBuffer(),  duDesc,</div>\n+<div class=\"line\"><a id=\"l00321\" name=\"l00321\"></a><span class=\"lineno\">  321</span>                            dvBuffer-&gt;BindCpuBuffer(),  dvDesc,</div>\n+<div class=\"line\"><a id=\"l00322\" name=\"l00322\"></a><span class=\"lineno\">  322</span>                            duuBuffer-&gt;BindCpuBuffer(), duuDesc,</div>\n+<div class=\"line\"><a id=\"l00323\" name=\"l00323\"></a><span class=\"lineno\">  323</span>                            duvBuffer-&gt;BindCpuBuffer(), duvDesc,</div>\n+<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\">  324</span>                            dvvBuffer-&gt;BindCpuBuffer(), dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\">  325</span>                            &amp;stencilTable-&gt;GetSizes()[0],</div>\n+<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\">  326</span>                            &amp;stencilTable-&gt;GetOffsets()[0],</div>\n+<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\">  327</span>                            &amp;stencilTable-&gt;GetControlIndices()[0],</div>\n+<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\">  328</span>                            &amp;stencilTable-&gt;GetWeights()[0],</div>\n+<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\">  329</span>                            &amp;stencilTable-&gt;GetDuWeights()[0],</div>\n+<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\">  330</span>                            &amp;stencilTable-&gt;GetDvWeights()[0],</div>\n+<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\">  331</span>                            &amp;stencilTable-&gt;GetDuuWeights()[0],</div>\n+<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\">  332</span>                            &amp;stencilTable-&gt;GetDuvWeights()[0],</div>\n+<div class=\"line\"><a id=\"l00333\" name=\"l00333\"></a><span class=\"lineno\">  333</span>                            &amp;stencilTable-&gt;GetDvvWeights()[0],</div>\n+<div class=\"line\"><a id=\"l00334\" name=\"l00334\"></a><span class=\"lineno\">  334</span>                            <span class=\"comment\">/*start = */</span> 0,</div>\n+<div class=\"line\"><a id=\"l00335\" name=\"l00335\"></a><span class=\"lineno\">  335</span>                            <span class=\"comment\">/*end   = */</span> stencilTable-&gt;GetNumStencils());</div>\n+<div class=\"line\"><a id=\"l00336\" name=\"l00336\"></a><span class=\"lineno\">  336</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00337\" name=\"l00337\"></a><span class=\"lineno\">  337</span> </div>\n+<div class=\"line\"><a id=\"l00399\" name=\"l00399\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01317.html#a76707de0a89ab94f15ad4b2c398a2c23\">  399</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01317.html#a76707de0a89ab94f15ad4b2c398a2c23\">EvalStencils</a>(</div>\n+<div class=\"line\"><a id=\"l00400\" name=\"l00400\"></a><span class=\"lineno\">  400</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00401\" name=\"l00401\"></a><span class=\"lineno\">  401</span>        <span class=\"keywordtype\">float</span> *dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00402\" name=\"l00402\"></a><span class=\"lineno\">  402</span>        <span class=\"keywordtype\">float</span> *du,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00403\" name=\"l00403\"></a><span class=\"lineno\">  403</span>        <span class=\"keywordtype\">float</span> *dv,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00404\" name=\"l00404\"></a><span class=\"lineno\">  404</span>        <span class=\"keywordtype\">float</span> *duu,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l00405\" name=\"l00405\"></a><span class=\"lineno\">  405</span>        <span class=\"keywordtype\">float</span> *duv,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l00406\" name=\"l00406\"></a><span class=\"lineno\">  406</span>        <span class=\"keywordtype\">float</span> *dvv,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00407\" name=\"l00407\"></a><span class=\"lineno\">  407</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * sizes,</div>\n+<div class=\"line\"><a id=\"l00408\" name=\"l00408\"></a><span class=\"lineno\">  408</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * offsets,</div>\n+<div class=\"line\"><a id=\"l00409\" name=\"l00409\"></a><span class=\"lineno\">  409</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * indices,</div>\n+<div class=\"line\"><a id=\"l00410\" name=\"l00410\"></a><span class=\"lineno\">  410</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * weights,</div>\n+<div class=\"line\"><a id=\"l00411\" name=\"l00411\"></a><span class=\"lineno\">  411</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * duWeights,</div>\n+<div class=\"line\"><a id=\"l00412\" name=\"l00412\"></a><span class=\"lineno\">  412</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * dvWeights,</div>\n+<div class=\"line\"><a id=\"l00413\" name=\"l00413\"></a><span class=\"lineno\">  413</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * duuWeights,</div>\n+<div class=\"line\"><a id=\"l00414\" name=\"l00414\"></a><span class=\"lineno\">  414</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * duvWeights,</div>\n+<div class=\"line\"><a id=\"l00415\" name=\"l00415\"></a><span class=\"lineno\">  415</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * dvvWeights,</div>\n+<div class=\"line\"><a id=\"l00416\" name=\"l00416\"></a><span class=\"lineno\">  416</span>        <span class=\"keywordtype\">int</span> start, <span class=\"keywordtype\">int</span> end);</div>\n+<div class=\"line\"><a id=\"l00417\" name=\"l00417\"></a><span class=\"lineno\">  417</span> </div>\n+<div class=\"line\"><a id=\"l00423\" name=\"l00423\"></a><span class=\"lineno\">  423</span> </div>\n+<div class=\"line\"><a id=\"l00452\" name=\"l00452\"></a><span class=\"lineno\">  452</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l00453\" name=\"l00453\"></a><span class=\"lineno\">  453</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00454\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00454\" name=\"l00454\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01317.html#a16b9e4c7e07040ae42e3d49454393f5f\">  454</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01317.html#a16b9e4c7e07040ae42e3d49454393f5f\">EvalPatches</a>(</div>\n+<div class=\"line\"><a id=\"l00455\" name=\"l00455\"></a><span class=\"lineno\">  455</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00456\" name=\"l00456\"></a><span class=\"lineno\">  456</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00457\" name=\"l00457\"></a><span class=\"lineno\">  457</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00458\" name=\"l00458\"></a><span class=\"lineno\">  458</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l00459\" name=\"l00459\"></a><span class=\"lineno\">  459</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l00460\" name=\"l00460\"></a><span class=\"lineno\">  460</span>        <a class=\"code hl_class\" href=\"a01317.html\">TbbEvaluator</a> <span class=\"keyword\">const</span> *instance = NULL,</div>\n+<div class=\"line\"><a id=\"l00461\" name=\"l00461\"></a><span class=\"lineno\">  461</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l00462\" name=\"l00462\"></a><span class=\"lineno\">  462</span> </div>\n+<div class=\"line\"><a id=\"l00463\" name=\"l00463\"></a><span class=\"lineno\">  463</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00464\" name=\"l00464\"></a><span class=\"lineno\">  464</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00465\" name=\"l00465\"></a><span class=\"lineno\">  465</span> </div>\n+<div class=\"line\"><a id=\"l00466\" name=\"l00466\"></a><span class=\"lineno\">  466</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01317.html#a16b9e4c7e07040ae42e3d49454393f5f\">EvalPatches</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00467\" name=\"l00467\"></a><span class=\"lineno\">  467</span>                           dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00468\" name=\"l00468\"></a><span class=\"lineno\">  468</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00469\" name=\"l00469\"></a><span class=\"lineno\">  469</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a>*)patchCoords-&gt;BindCpuBuffer(),</div>\n+<div class=\"line\"><a id=\"l00470\" name=\"l00470\"></a><span class=\"lineno\">  470</span>                           patchTable-&gt;GetPatchArrayBuffer(),</div>\n+<div class=\"line\"><a id=\"l00471\" name=\"l00471\"></a><span class=\"lineno\">  471</span>                           patchTable-&gt;GetPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l00472\" name=\"l00472\"></a><span class=\"lineno\">  472</span>                           patchTable-&gt;GetPatchParamBuffer());</div>\n+<div class=\"line\"><a id=\"l00473\" name=\"l00473\"></a><span class=\"lineno\">  473</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00474\" name=\"l00474\"></a><span class=\"lineno\">  474</span> </div>\n+<div class=\"line\"><a id=\"l00515\" name=\"l00515\"></a><span class=\"lineno\">  515</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l00516\" name=\"l00516\"></a><span class=\"lineno\">  516</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00517\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00517\" name=\"l00517\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01317.html#ab78e3701e650dfc99c2beb39c7e611a4\">  517</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01317.html#ab78e3701e650dfc99c2beb39c7e611a4\">EvalPatches</a>(</div>\n+<div class=\"line\"><a id=\"l00518\" name=\"l00518\"></a><span class=\"lineno\">  518</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00519\" name=\"l00519\"></a><span class=\"lineno\">  519</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00520\" name=\"l00520\"></a><span class=\"lineno\">  520</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00521\" name=\"l00521\"></a><span class=\"lineno\">  521</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00522\" name=\"l00522\"></a><span class=\"lineno\">  522</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00523\" name=\"l00523\"></a><span class=\"lineno\">  523</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l00524\" name=\"l00524\"></a><span class=\"lineno\">  524</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l00525\" name=\"l00525\"></a><span class=\"lineno\">  525</span>        <a class=\"code hl_class\" href=\"a01317.html\">TbbEvaluator</a> <span class=\"keyword\">const</span> *instance = NULL,</div>\n+<div class=\"line\"><a id=\"l00526\" name=\"l00526\"></a><span class=\"lineno\">  526</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l00527\" name=\"l00527\"></a><span class=\"lineno\">  527</span> </div>\n+<div class=\"line\"><a id=\"l00528\" name=\"l00528\"></a><span class=\"lineno\">  528</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00529\" name=\"l00529\"></a><span class=\"lineno\">  529</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00530\" name=\"l00530\"></a><span class=\"lineno\">  530</span> </div>\n+<div class=\"line\"><a id=\"l00531\" name=\"l00531\"></a><span class=\"lineno\">  531</span>        <span class=\"comment\">// XXX: PatchCoords is somewhat abusing vertex primvar buffer interop.</span></div>\n+<div class=\"line\"><a id=\"l00532\" name=\"l00532\"></a><span class=\"lineno\">  532</span>        <span class=\"comment\">//      ideally all buffer classes should have templated by datatype</span></div>\n+<div class=\"line\"><a id=\"l00533\" name=\"l00533\"></a><span class=\"lineno\">  533</span>        <span class=\"comment\">//      so that downcast isn&#39;t needed there.</span></div>\n+<div class=\"line\"><a id=\"l00534\" name=\"l00534\"></a><span class=\"lineno\">  534</span>        <span class=\"comment\">//      (e.g. Osd::CpuBuffer&lt;PatchCoord&gt; )</span></div>\n+<div class=\"line\"><a id=\"l00535\" name=\"l00535\"></a><span class=\"lineno\">  535</span>        <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00536\" name=\"l00536\"></a><span class=\"lineno\">  536</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01317.html#a16b9e4c7e07040ae42e3d49454393f5f\">EvalPatches</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00537\" name=\"l00537\"></a><span class=\"lineno\">  537</span>                           dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00538\" name=\"l00538\"></a><span class=\"lineno\">  538</span>                           duBuffer-&gt;BindCpuBuffer(),  duDesc,</div>\n+<div class=\"line\"><a id=\"l00539\" name=\"l00539\"></a><span class=\"lineno\">  539</span>                           dvBuffer-&gt;BindCpuBuffer(),  dvDesc,</div>\n+<div class=\"line\"><a id=\"l00540\" name=\"l00540\"></a><span class=\"lineno\">  540</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00541\" name=\"l00541\"></a><span class=\"lineno\">  541</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a>*)patchCoords-&gt;BindCpuBuffer(),</div>\n+<div class=\"line\"><a id=\"l00542\" name=\"l00542\"></a><span class=\"lineno\">  542</span>                           patchTable-&gt;GetPatchArrayBuffer(),</div>\n+<div class=\"line\"><a id=\"l00543\" name=\"l00543\"></a><span class=\"lineno\">  543</span>                           patchTable-&gt;GetPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l00544\" name=\"l00544\"></a><span class=\"lineno\">  544</span>                           patchTable-&gt;GetPatchParamBuffer());</div>\n+<div class=\"line\"><a id=\"l00545\" name=\"l00545\"></a><span class=\"lineno\">  545</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00546\" name=\"l00546\"></a><span class=\"lineno\">  546</span> </div>\n+<div class=\"line\"><a id=\"l00605\" name=\"l00605\"></a><span class=\"lineno\">  605</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l00606\" name=\"l00606\"></a><span class=\"lineno\">  606</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00607\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00607\" name=\"l00607\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01317.html#a6d42209eb10894a07bcb88585b5ce2f3\">  607</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01317.html#a6d42209eb10894a07bcb88585b5ce2f3\">EvalPatches</a>(</div>\n+<div class=\"line\"><a id=\"l00608\" name=\"l00608\"></a><span class=\"lineno\">  608</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00609\" name=\"l00609\"></a><span class=\"lineno\">  609</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00610\" name=\"l00610\"></a><span class=\"lineno\">  610</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00611\" name=\"l00611\"></a><span class=\"lineno\">  611</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00612\" name=\"l00612\"></a><span class=\"lineno\">  612</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l00613\" name=\"l00613\"></a><span class=\"lineno\">  613</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l00614\" name=\"l00614\"></a><span class=\"lineno\">  614</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00615\" name=\"l00615\"></a><span class=\"lineno\">  615</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00616\" name=\"l00616\"></a><span class=\"lineno\">  616</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l00617\" name=\"l00617\"></a><span class=\"lineno\">  617</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l00618\" name=\"l00618\"></a><span class=\"lineno\">  618</span>        <a class=\"code hl_class\" href=\"a01317.html\">TbbEvaluator</a> <span class=\"keyword\">const</span> *instance = NULL,</div>\n+<div class=\"line\"><a id=\"l00619\" name=\"l00619\"></a><span class=\"lineno\">  619</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l00620\" name=\"l00620\"></a><span class=\"lineno\">  620</span> </div>\n+<div class=\"line\"><a id=\"l00621\" name=\"l00621\"></a><span class=\"lineno\">  621</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00622\" name=\"l00622\"></a><span class=\"lineno\">  622</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00623\" name=\"l00623\"></a><span class=\"lineno\">  623</span> </div>\n+<div class=\"line\"><a id=\"l00624\" name=\"l00624\"></a><span class=\"lineno\">  624</span>        <span class=\"comment\">// XXX: PatchCoords is somewhat abusing vertex primvar buffer interop.</span></div>\n+<div class=\"line\"><a id=\"l00625\" name=\"l00625\"></a><span class=\"lineno\">  625</span>        <span class=\"comment\">//      ideally all buffer classes should have templated by datatype</span></div>\n+<div class=\"line\"><a id=\"l00626\" name=\"l00626\"></a><span class=\"lineno\">  626</span>        <span class=\"comment\">//      so that downcast isn&#39;t needed there.</span></div>\n+<div class=\"line\"><a id=\"l00627\" name=\"l00627\"></a><span class=\"lineno\">  627</span>        <span class=\"comment\">//      (e.g. Osd::CpuBuffer&lt;PatchCoord&gt; )</span></div>\n+<div class=\"line\"><a id=\"l00628\" name=\"l00628\"></a><span class=\"lineno\">  628</span>        <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00629\" name=\"l00629\"></a><span class=\"lineno\">  629</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01317.html#a16b9e4c7e07040ae42e3d49454393f5f\">EvalPatches</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00630\" name=\"l00630\"></a><span class=\"lineno\">  630</span>                           dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00631\" name=\"l00631\"></a><span class=\"lineno\">  631</span>                           duBuffer-&gt;BindCpuBuffer(),  duDesc,</div>\n+<div class=\"line\"><a id=\"l00632\" name=\"l00632\"></a><span class=\"lineno\">  632</span>                           dvBuffer-&gt;BindCpuBuffer(),  dvDesc,</div>\n+<div class=\"line\"><a id=\"l00633\" name=\"l00633\"></a><span class=\"lineno\">  633</span>                           duuBuffer-&gt;BindCpuBuffer(), duuDesc,</div>\n+<div class=\"line\"><a id=\"l00634\" name=\"l00634\"></a><span class=\"lineno\">  634</span>                           duvBuffer-&gt;BindCpuBuffer(), duvDesc,</div>\n+<div class=\"line\"><a id=\"l00635\" name=\"l00635\"></a><span class=\"lineno\">  635</span>                           dvvBuffer-&gt;BindCpuBuffer(), dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00636\" name=\"l00636\"></a><span class=\"lineno\">  636</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00637\" name=\"l00637\"></a><span class=\"lineno\">  637</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a>*)patchCoords-&gt;BindCpuBuffer(),</div>\n+<div class=\"line\"><a id=\"l00638\" name=\"l00638\"></a><span class=\"lineno\">  638</span>                           patchTable-&gt;GetPatchArrayBuffer(),</div>\n+<div class=\"line\"><a id=\"l00639\" name=\"l00639\"></a><span class=\"lineno\">  639</span>                           patchTable-&gt;GetPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l00640\" name=\"l00640\"></a><span class=\"lineno\">  640</span>                           patchTable-&gt;GetPatchParamBuffer());</div>\n+<div class=\"line\"><a id=\"l00641\" name=\"l00641\"></a><span class=\"lineno\">  641</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00642\" name=\"l00642\"></a><span class=\"lineno\">  642</span> </div>\n+<div class=\"line\"><a id=\"l00670\" name=\"l00670\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01317.html#ad5b907c22dfcb943e5f25f3c16543535\">  670</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01317.html#ad5b907c22dfcb943e5f25f3c16543535\">EvalPatches</a>(</div>\n+<div class=\"line\"><a id=\"l00671\" name=\"l00671\"></a><span class=\"lineno\">  671</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00672\" name=\"l00672\"></a><span class=\"lineno\">  672</span>        <span class=\"keywordtype\">float</span> *dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00673\" name=\"l00673\"></a><span class=\"lineno\">  673</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00674\" name=\"l00674\"></a><span class=\"lineno\">  674</span>        <span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a> *patchCoords,</div>\n+<div class=\"line\"><a id=\"l00675\" name=\"l00675\"></a><span class=\"lineno\">  675</span>        <span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01325.html\">PatchArray</a> *patchArrays,</div>\n+<div class=\"line\"><a id=\"l00676\" name=\"l00676\"></a><span class=\"lineno\">  676</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> *patchIndexBuffer,</div>\n+<div class=\"line\"><a id=\"l00677\" name=\"l00677\"></a><span class=\"lineno\">  677</span>        <span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01329.html\">PatchParam</a> *patchParamBuffer);</div>\n+<div class=\"line\"><a id=\"l00678\" name=\"l00678\"></a><span class=\"lineno\">  678</span> </div>\n+<div class=\"line\"><a id=\"l00716\" name=\"l00716\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01317.html#ac1dba254bc287312f8f812113c8e8ad3\">  716</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01317.html#ac1dba254bc287312f8f812113c8e8ad3\">EvalPatches</a>(</div>\n+<div class=\"line\"><a id=\"l00717\" name=\"l00717\"></a><span class=\"lineno\">  717</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00718\" name=\"l00718\"></a><span class=\"lineno\">  718</span>        <span class=\"keywordtype\">float</span> *dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00719\" name=\"l00719\"></a><span class=\"lineno\">  719</span>        <span class=\"keywordtype\">float</span> *du,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00720\" name=\"l00720\"></a><span class=\"lineno\">  720</span>        <span class=\"keywordtype\">float</span> *dv,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00721\" name=\"l00721\"></a><span class=\"lineno\">  721</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00722\" name=\"l00722\"></a><span class=\"lineno\">  722</span>        <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a> <span class=\"keyword\">const</span> *patchCoords,</div>\n+<div class=\"line\"><a id=\"l00723\" name=\"l00723\"></a><span class=\"lineno\">  723</span>        <a class=\"code hl_struct\" href=\"a01325.html\">PatchArray</a> <span class=\"keyword\">const</span> *patchArrays,</div>\n+<div class=\"line\"><a id=\"l00724\" name=\"l00724\"></a><span class=\"lineno\">  724</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> *patchIndexBuffer,</div>\n+<div class=\"line\"><a id=\"l00725\" name=\"l00725\"></a><span class=\"lineno\">  725</span>        <a class=\"code hl_struct\" href=\"a01329.html\">PatchParam</a> <span class=\"keyword\">const</span> *patchParamBuffer);</div>\n+<div class=\"line\"><a id=\"l00726\" name=\"l00726\"></a><span class=\"lineno\">  726</span> </div>\n+<div class=\"line\"><a id=\"l00779\" name=\"l00779\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01317.html#a7b556148d6ef2e04fbe99677e3a87e91\">  779</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01317.html#a7b556148d6ef2e04fbe99677e3a87e91\">EvalPatches</a>(</div>\n+<div class=\"line\"><a id=\"l00780\" name=\"l00780\"></a><span class=\"lineno\">  780</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00781\" name=\"l00781\"></a><span class=\"lineno\">  781</span>        <span class=\"keywordtype\">float</span> *dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00782\" name=\"l00782\"></a><span class=\"lineno\">  782</span>        <span class=\"keywordtype\">float</span> *du,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00783\" name=\"l00783\"></a><span class=\"lineno\">  783</span>        <span class=\"keywordtype\">float</span> *dv,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00784\" name=\"l00784\"></a><span class=\"lineno\">  784</span>        <span class=\"keywordtype\">float</span> *duu,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l00785\" name=\"l00785\"></a><span class=\"lineno\">  785</span>        <span class=\"keywordtype\">float</span> *duv,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l00786\" name=\"l00786\"></a><span class=\"lineno\">  786</span>        <span class=\"keywordtype\">float</span> *dvv,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00787\" name=\"l00787\"></a><span class=\"lineno\">  787</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00788\" name=\"l00788\"></a><span class=\"lineno\">  788</span>        <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a> <span class=\"keyword\">const</span> *patchCoords,</div>\n+<div class=\"line\"><a id=\"l00789\" name=\"l00789\"></a><span class=\"lineno\">  789</span>        <a class=\"code hl_struct\" href=\"a01325.html\">PatchArray</a> <span class=\"keyword\">const</span> *patchArrays,</div>\n+<div class=\"line\"><a id=\"l00790\" name=\"l00790\"></a><span class=\"lineno\">  790</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> *patchIndexBuffer,</div>\n+<div class=\"line\"><a id=\"l00791\" name=\"l00791\"></a><span class=\"lineno\">  791</span>        <a class=\"code hl_struct\" href=\"a01329.html\">PatchParam</a> <span class=\"keyword\">const</span> *patchParamBuffer);</div>\n+<div class=\"line\"><a id=\"l00792\" name=\"l00792\"></a><span class=\"lineno\">  792</span> </div>\n+<div class=\"line\"><a id=\"l00821\" name=\"l00821\"></a><span class=\"lineno\">  821</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l00822\" name=\"l00822\"></a><span class=\"lineno\">  822</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00823\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00823\" name=\"l00823\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01317.html#afb857c7493452a91389f40021a03c45d\">  823</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01317.html#afb857c7493452a91389f40021a03c45d\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l00824\" name=\"l00824\"></a><span class=\"lineno\">  824</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00825\" name=\"l00825\"></a><span class=\"lineno\">  825</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00826\" name=\"l00826\"></a><span class=\"lineno\">  826</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00827\" name=\"l00827\"></a><span class=\"lineno\">  827</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l00828\" name=\"l00828\"></a><span class=\"lineno\">  828</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l00829\" name=\"l00829\"></a><span class=\"lineno\">  829</span>        <a class=\"code hl_class\" href=\"a01317.html\">TbbEvaluator</a> <span class=\"keyword\">const</span> *instance = NULL,</div>\n+<div class=\"line\"><a id=\"l00830\" name=\"l00830\"></a><span class=\"lineno\">  830</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l00831\" name=\"l00831\"></a><span class=\"lineno\">  831</span> </div>\n+<div class=\"line\"><a id=\"l00832\" name=\"l00832\"></a><span class=\"lineno\">  832</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00833\" name=\"l00833\"></a><span class=\"lineno\">  833</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00834\" name=\"l00834\"></a><span class=\"lineno\">  834</span> </div>\n+<div class=\"line\"><a id=\"l00835\" name=\"l00835\"></a><span class=\"lineno\">  835</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01317.html#a16b9e4c7e07040ae42e3d49454393f5f\">EvalPatches</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00836\" name=\"l00836\"></a><span class=\"lineno\">  836</span>                           dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00837\" name=\"l00837\"></a><span class=\"lineno\">  837</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00838\" name=\"l00838\"></a><span class=\"lineno\">  838</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a>*)patchCoords-&gt;BindCpuBuffer(),</div>\n+<div class=\"line\"><a id=\"l00839\" name=\"l00839\"></a><span class=\"lineno\">  839</span>                           patchTable-&gt;GetVaryingPatchArrayBuffer(),</div>\n+<div class=\"line\"><a id=\"l00840\" name=\"l00840\"></a><span class=\"lineno\">  840</span>                           patchTable-&gt;GetVaryingPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l00841\" name=\"l00841\"></a><span class=\"lineno\">  841</span>                           patchTable-&gt;GetPatchParamBuffer());</div>\n+<div class=\"line\"><a id=\"l00842\" name=\"l00842\"></a><span class=\"lineno\">  842</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00843\" name=\"l00843\"></a><span class=\"lineno\">  843</span> </div>\n+<div class=\"line\"><a id=\"l00884\" name=\"l00884\"></a><span class=\"lineno\">  884</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l00885\" name=\"l00885\"></a><span class=\"lineno\">  885</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00886\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00886\" name=\"l00886\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01317.html#a52f3dbfeaec0360f92ac83464c7c2e6c\">  886</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01317.html#a52f3dbfeaec0360f92ac83464c7c2e6c\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l00887\" name=\"l00887\"></a><span class=\"lineno\">  887</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00888\" name=\"l00888\"></a><span class=\"lineno\">  888</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00889\" name=\"l00889\"></a><span class=\"lineno\">  889</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00890\" name=\"l00890\"></a><span class=\"lineno\">  890</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00891\" name=\"l00891\"></a><span class=\"lineno\">  891</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00892\" name=\"l00892\"></a><span class=\"lineno\">  892</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l00893\" name=\"l00893\"></a><span class=\"lineno\">  893</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l00894\" name=\"l00894\"></a><span class=\"lineno\">  894</span>        <a class=\"code hl_class\" href=\"a01317.html\">TbbEvaluator</a> <span class=\"keyword\">const</span> *instance = NULL,</div>\n+<div class=\"line\"><a id=\"l00895\" name=\"l00895\"></a><span class=\"lineno\">  895</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l00896\" name=\"l00896\"></a><span class=\"lineno\">  896</span> </div>\n+<div class=\"line\"><a id=\"l00897\" name=\"l00897\"></a><span class=\"lineno\">  897</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00898\" name=\"l00898\"></a><span class=\"lineno\">  898</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00899\" name=\"l00899\"></a><span class=\"lineno\">  899</span> </div>\n+<div class=\"line\"><a id=\"l00900\" name=\"l00900\"></a><span class=\"lineno\">  900</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01317.html#a16b9e4c7e07040ae42e3d49454393f5f\">EvalPatches</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00901\" name=\"l00901\"></a><span class=\"lineno\">  901</span>                           dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00902\" name=\"l00902\"></a><span class=\"lineno\">  902</span>                           duBuffer-&gt;BindCpuBuffer(),  duDesc,</div>\n+<div class=\"line\"><a id=\"l00903\" name=\"l00903\"></a><span class=\"lineno\">  903</span>                           dvBuffer-&gt;BindCpuBuffer(),  dvDesc,</div>\n+<div class=\"line\"><a id=\"l00904\" name=\"l00904\"></a><span class=\"lineno\">  904</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00905\" name=\"l00905\"></a><span class=\"lineno\">  905</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a>*)patchCoords-&gt;BindCpuBuffer(),</div>\n+<div class=\"line\"><a id=\"l00906\" name=\"l00906\"></a><span class=\"lineno\">  906</span>                           patchTable-&gt;GetVaryingPatchArrayBuffer(),</div>\n+<div class=\"line\"><a id=\"l00907\" name=\"l00907\"></a><span class=\"lineno\">  907</span>                           patchTable-&gt;GetVaryingPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l00908\" name=\"l00908\"></a><span class=\"lineno\">  908</span>                           patchTable-&gt;GetPatchParamBuffer());</div>\n+<div class=\"line\"><a id=\"l00909\" name=\"l00909\"></a><span class=\"lineno\">  909</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00910\" name=\"l00910\"></a><span class=\"lineno\">  910</span> </div>\n+<div class=\"line\"><a id=\"l00969\" name=\"l00969\"></a><span class=\"lineno\">  969</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l00970\" name=\"l00970\"></a><span class=\"lineno\">  970</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00971\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00971\" name=\"l00971\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01317.html#aa3171fe53d673ceca93eb75372c3d7c4\">  971</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01317.html#aa3171fe53d673ceca93eb75372c3d7c4\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l00972\" name=\"l00972\"></a><span class=\"lineno\">  972</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00973\" name=\"l00973\"></a><span class=\"lineno\">  973</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00974\" name=\"l00974\"></a><span class=\"lineno\">  974</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00975\" name=\"l00975\"></a><span class=\"lineno\">  975</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00976\" name=\"l00976\"></a><span class=\"lineno\">  976</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l00977\" name=\"l00977\"></a><span class=\"lineno\">  977</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l00978\" name=\"l00978\"></a><span class=\"lineno\">  978</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00979\" name=\"l00979\"></a><span class=\"lineno\">  979</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00980\" name=\"l00980\"></a><span class=\"lineno\">  980</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l00981\" name=\"l00981\"></a><span class=\"lineno\">  981</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l00982\" name=\"l00982\"></a><span class=\"lineno\">  982</span>        <a class=\"code hl_class\" href=\"a01317.html\">TbbEvaluator</a> <span class=\"keyword\">const</span> *instance = NULL,</div>\n+<div class=\"line\"><a id=\"l00983\" name=\"l00983\"></a><span class=\"lineno\">  983</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l00984\" name=\"l00984\"></a><span class=\"lineno\">  984</span> </div>\n+<div class=\"line\"><a id=\"l00985\" name=\"l00985\"></a><span class=\"lineno\">  985</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00986\" name=\"l00986\"></a><span class=\"lineno\">  986</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00987\" name=\"l00987\"></a><span class=\"lineno\">  987</span> </div>\n+<div class=\"line\"><a id=\"l00988\" name=\"l00988\"></a><span class=\"lineno\">  988</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01317.html#a16b9e4c7e07040ae42e3d49454393f5f\">EvalPatches</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00989\" name=\"l00989\"></a><span class=\"lineno\">  989</span>                           dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00990\" name=\"l00990\"></a><span class=\"lineno\">  990</span>                           duBuffer-&gt;BindCpuBuffer(),  duDesc,</div>\n+<div class=\"line\"><a id=\"l00991\" name=\"l00991\"></a><span class=\"lineno\">  991</span>                           dvBuffer-&gt;BindCpuBuffer(),  dvDesc,</div>\n+<div class=\"line\"><a id=\"l00992\" name=\"l00992\"></a><span class=\"lineno\">  992</span>                           duuBuffer-&gt;BindCpuBuffer(), duuDesc,</div>\n+<div class=\"line\"><a id=\"l00993\" name=\"l00993\"></a><span class=\"lineno\">  993</span>                           duvBuffer-&gt;BindCpuBuffer(), duvDesc,</div>\n+<div class=\"line\"><a id=\"l00994\" name=\"l00994\"></a><span class=\"lineno\">  994</span>                           dvvBuffer-&gt;BindCpuBuffer(), dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00995\" name=\"l00995\"></a><span class=\"lineno\">  995</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00996\" name=\"l00996\"></a><span class=\"lineno\">  996</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a>*)patchCoords-&gt;BindCpuBuffer(),</div>\n+<div class=\"line\"><a id=\"l00997\" name=\"l00997\"></a><span class=\"lineno\">  997</span>                           patchTable-&gt;GetVaryingPatchArrayBuffer(),</div>\n+<div class=\"line\"><a id=\"l00998\" name=\"l00998\"></a><span class=\"lineno\">  998</span>                           patchTable-&gt;GetVaryingPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l00999\" name=\"l00999\"></a><span class=\"lineno\">  999</span>                           patchTable-&gt;GetPatchParamBuffer());</div>\n+<div class=\"line\"><a id=\"l01000\" name=\"l01000\"></a><span class=\"lineno\"> 1000</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01001\" name=\"l01001\"></a><span class=\"lineno\"> 1001</span> </div>\n+<div class=\"line\"><a id=\"l01032\" name=\"l01032\"></a><span class=\"lineno\"> 1032</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01033\" name=\"l01033\"></a><span class=\"lineno\"> 1033</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01034\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01034\" name=\"l01034\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01317.html#abeb5f95d1536bd3a7cadf440c2db96af\"> 1034</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01317.html#abeb5f95d1536bd3a7cadf440c2db96af\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01035\" name=\"l01035\"></a><span class=\"lineno\"> 1035</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01036\" name=\"l01036\"></a><span class=\"lineno\"> 1036</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01037\" name=\"l01037\"></a><span class=\"lineno\"> 1037</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01038\" name=\"l01038\"></a><span class=\"lineno\"> 1038</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01039\" name=\"l01039\"></a><span class=\"lineno\"> 1039</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l01040\" name=\"l01040\"></a><span class=\"lineno\"> 1040</span>        <span class=\"keywordtype\">int</span> fvarChannel,</div>\n+<div class=\"line\"><a id=\"l01041\" name=\"l01041\"></a><span class=\"lineno\"> 1041</span>        <a class=\"code hl_class\" href=\"a01317.html\">TbbEvaluator</a> <span class=\"keyword\">const</span> *instance = NULL,</div>\n+<div class=\"line\"><a id=\"l01042\" name=\"l01042\"></a><span class=\"lineno\"> 1042</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l01043\" name=\"l01043\"></a><span class=\"lineno\"> 1043</span> </div>\n+<div class=\"line\"><a id=\"l01044\" name=\"l01044\"></a><span class=\"lineno\"> 1044</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l01045\" name=\"l01045\"></a><span class=\"lineno\"> 1045</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l01046\" name=\"l01046\"></a><span class=\"lineno\"> 1046</span> </div>\n+<div class=\"line\"><a id=\"l01047\" name=\"l01047\"></a><span class=\"lineno\"> 1047</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01317.html#a16b9e4c7e07040ae42e3d49454393f5f\">EvalPatches</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01048\" name=\"l01048\"></a><span class=\"lineno\"> 1048</span>                           dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01049\" name=\"l01049\"></a><span class=\"lineno\"> 1049</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01050\" name=\"l01050\"></a><span class=\"lineno\"> 1050</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a>*)patchCoords-&gt;BindCpuBuffer(),</div>\n+<div class=\"line\"><a id=\"l01051\" name=\"l01051\"></a><span class=\"lineno\"> 1051</span>                           patchTable-&gt;GetFVarPatchArrayBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01052\" name=\"l01052\"></a><span class=\"lineno\"> 1052</span>                           patchTable-&gt;GetFVarPatchIndexBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01053\" name=\"l01053\"></a><span class=\"lineno\"> 1053</span>                           patchTable-&gt;GetFVarPatchParamBuffer(fvarChannel));</div>\n+<div class=\"line\"><a id=\"l01054\" name=\"l01054\"></a><span class=\"lineno\"> 1054</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01055\" name=\"l01055\"></a><span class=\"lineno\"> 1055</span> </div>\n+<div class=\"line\"><a id=\"l01098\" name=\"l01098\"></a><span class=\"lineno\"> 1098</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01099\" name=\"l01099\"></a><span class=\"lineno\"> 1099</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01100\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01100\" name=\"l01100\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01317.html#aaa27f47cddc2a42796014b8da00633fd\"> 1100</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01317.html#aaa27f47cddc2a42796014b8da00633fd\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01101\" name=\"l01101\"></a><span class=\"lineno\"> 1101</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01102\" name=\"l01102\"></a><span class=\"lineno\"> 1102</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01103\" name=\"l01103\"></a><span class=\"lineno\"> 1103</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l01104\" name=\"l01104\"></a><span class=\"lineno\"> 1104</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l01105\" name=\"l01105\"></a><span class=\"lineno\"> 1105</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01106\" name=\"l01106\"></a><span class=\"lineno\"> 1106</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01107\" name=\"l01107\"></a><span class=\"lineno\"> 1107</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l01108\" name=\"l01108\"></a><span class=\"lineno\"> 1108</span>        <span class=\"keywordtype\">int</span> fvarChannel,</div>\n+<div class=\"line\"><a id=\"l01109\" name=\"l01109\"></a><span class=\"lineno\"> 1109</span>        <a class=\"code hl_class\" href=\"a01317.html\">TbbEvaluator</a> <span class=\"keyword\">const</span> *instance = NULL,</div>\n+<div class=\"line\"><a id=\"l01110\" name=\"l01110\"></a><span class=\"lineno\"> 1110</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l01111\" name=\"l01111\"></a><span class=\"lineno\"> 1111</span> </div>\n+<div class=\"line\"><a id=\"l01112\" name=\"l01112\"></a><span class=\"lineno\"> 1112</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l01113\" name=\"l01113\"></a><span class=\"lineno\"> 1113</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l01114\" name=\"l01114\"></a><span class=\"lineno\"> 1114</span> </div>\n+<div class=\"line\"><a id=\"l01115\" name=\"l01115\"></a><span class=\"lineno\"> 1115</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01317.html#a16b9e4c7e07040ae42e3d49454393f5f\">EvalPatches</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01116\" name=\"l01116\"></a><span class=\"lineno\"> 1116</span>                           dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01117\" name=\"l01117\"></a><span class=\"lineno\"> 1117</span>                           duBuffer-&gt;BindCpuBuffer(),  duDesc,</div>\n+<div class=\"line\"><a id=\"l01118\" name=\"l01118\"></a><span class=\"lineno\"> 1118</span>                           dvBuffer-&gt;BindCpuBuffer(),  dvDesc,</div>\n+<div class=\"line\"><a id=\"l01119\" name=\"l01119\"></a><span class=\"lineno\"> 1119</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01120\" name=\"l01120\"></a><span class=\"lineno\"> 1120</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a>*)patchCoords-&gt;BindCpuBuffer(),</div>\n+<div class=\"line\"><a id=\"l01121\" name=\"l01121\"></a><span class=\"lineno\"> 1121</span>                           patchTable-&gt;GetFVarPatchArrayBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01122\" name=\"l01122\"></a><span class=\"lineno\"> 1122</span>                           patchTable-&gt;GetFVarPatchIndexBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01123\" name=\"l01123\"></a><span class=\"lineno\"> 1123</span>                           patchTable-&gt;GetFVarPatchParamBuffer(fvarChannel));</div>\n+<div class=\"line\"><a id=\"l01124\" name=\"l01124\"></a><span class=\"lineno\"> 1124</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01125\" name=\"l01125\"></a><span class=\"lineno\"> 1125</span> </div>\n+<div class=\"line\"><a id=\"l01186\" name=\"l01186\"></a><span class=\"lineno\"> 1186</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01187\" name=\"l01187\"></a><span class=\"lineno\"> 1187</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01188\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01188\" name=\"l01188\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01317.html#af8ac6af5dd3993a38da263eec54d83b0\"> 1188</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01317.html#af8ac6af5dd3993a38da263eec54d83b0\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01189\" name=\"l01189\"></a><span class=\"lineno\"> 1189</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01190\" name=\"l01190\"></a><span class=\"lineno\"> 1190</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01191\" name=\"l01191\"></a><span class=\"lineno\"> 1191</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l01192\" name=\"l01192\"></a><span class=\"lineno\"> 1192</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l01193\" name=\"l01193\"></a><span class=\"lineno\"> 1193</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l01194\" name=\"l01194\"></a><span class=\"lineno\"> 1194</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l01195\" name=\"l01195\"></a><span class=\"lineno\"> 1195</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l01196\" name=\"l01196\"></a><span class=\"lineno\"> 1196</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01197\" name=\"l01197\"></a><span class=\"lineno\"> 1197</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01198\" name=\"l01198\"></a><span class=\"lineno\"> 1198</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l01199\" name=\"l01199\"></a><span class=\"lineno\"> 1199</span>        <span class=\"keywordtype\">int</span> fvarChannel,</div>\n+<div class=\"line\"><a id=\"l01200\" name=\"l01200\"></a><span class=\"lineno\"> 1200</span>        <a class=\"code hl_class\" href=\"a01317.html\">TbbEvaluator</a> <span class=\"keyword\">const</span> *instance = NULL,</div>\n+<div class=\"line\"><a id=\"l01201\" name=\"l01201\"></a><span class=\"lineno\"> 1201</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l01202\" name=\"l01202\"></a><span class=\"lineno\"> 1202</span> </div>\n+<div class=\"line\"><a id=\"l01203\" name=\"l01203\"></a><span class=\"lineno\"> 1203</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l01204\" name=\"l01204\"></a><span class=\"lineno\"> 1204</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l01205\" name=\"l01205\"></a><span class=\"lineno\"> 1205</span> </div>\n+<div class=\"line\"><a id=\"l01206\" name=\"l01206\"></a><span class=\"lineno\"> 1206</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01317.html#a16b9e4c7e07040ae42e3d49454393f5f\">EvalPatches</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01207\" name=\"l01207\"></a><span class=\"lineno\"> 1207</span>                           dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01208\" name=\"l01208\"></a><span class=\"lineno\"> 1208</span>                           duBuffer-&gt;BindCpuBuffer(),  duDesc,</div>\n+<div class=\"line\"><a id=\"l01209\" name=\"l01209\"></a><span class=\"lineno\"> 1209</span>                           dvBuffer-&gt;BindCpuBuffer(),  dvDesc,</div>\n+<div class=\"line\"><a id=\"l01210\" name=\"l01210\"></a><span class=\"lineno\"> 1210</span>                           duuBuffer-&gt;BindCpuBuffer(), duuDesc,</div>\n+<div class=\"line\"><a id=\"l01211\" name=\"l01211\"></a><span class=\"lineno\"> 1211</span>                           duvBuffer-&gt;BindCpuBuffer(), duvDesc,</div>\n+<div class=\"line\"><a id=\"l01212\" name=\"l01212\"></a><span class=\"lineno\"> 1212</span>                           dvvBuffer-&gt;BindCpuBuffer(), dvvDesc,</div>\n+<div class=\"line\"><a id=\"l01213\" name=\"l01213\"></a><span class=\"lineno\"> 1213</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01214\" name=\"l01214\"></a><span class=\"lineno\"> 1214</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a>*)patchCoords-&gt;BindCpuBuffer(),</div>\n+<div class=\"line\"><a id=\"l01215\" name=\"l01215\"></a><span class=\"lineno\"> 1215</span>                           patchTable-&gt;GetFVarPatchArrayBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01216\" name=\"l01216\"></a><span class=\"lineno\"> 1216</span>                           patchTable-&gt;GetFVarPatchIndexBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01217\" name=\"l01217\"></a><span class=\"lineno\"> 1217</span>                           patchTable-&gt;GetFVarPatchParamBuffer(fvarChannel));</div>\n+<div class=\"line\"><a id=\"l01218\" name=\"l01218\"></a><span class=\"lineno\"> 1218</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01219\" name=\"l01219\"></a><span class=\"lineno\"> 1219</span> </div>\n+<div class=\"line\"><a id=\"l01225\" name=\"l01225\"></a><span class=\"lineno\"> 1225</span> </div>\n+<div class=\"line\"><a id=\"l01227\" name=\"l01227\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01317.html#a9689407af718de4263562bb3a760c1dd\"> 1227</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01317.html#a9689407af718de4263562bb3a760c1dd\">Synchronize</a>(<span class=\"keywordtype\">void</span> *deviceContext = NULL);</div>\n+<div class=\"line\"><a id=\"l01228\" name=\"l01228\"></a><span class=\"lineno\"> 1228</span> </div>\n+<div class=\"line\"><a id=\"l01233\" name=\"l01233\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01317.html#ad58f2120e84fdd3f92d7cd861e97822d\"> 1233</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01317.html#ad58f2120e84fdd3f92d7cd861e97822d\">SetNumThreads</a>(<span class=\"keywordtype\">int</span> numThreads);</div>\n+<div class=\"line\"><a id=\"l01234\" name=\"l01234\"></a><span class=\"lineno\"> 1234</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l01235\" name=\"l01235\"></a><span class=\"lineno\"> 1235</span> </div>\n+<div class=\"line\"><a id=\"l01236\" name=\"l01236\"></a><span class=\"lineno\"> 1236</span> </div>\n+<div class=\"line\"><a id=\"l01237\" name=\"l01237\"></a><span class=\"lineno\"> 1237</span>}  <span class=\"comment\">// end namespace Osd</span></div>\n+<div class=\"line\"><a id=\"l01238\" name=\"l01238\"></a><span class=\"lineno\"> 1238</span> </div>\n+<div class=\"line\"><a id=\"l01239\" name=\"l01239\"></a><span class=\"lineno\"> 1239</span>}  <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l01240\" name=\"l01240\"></a><span class=\"lineno\"> 1240</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l01241\" name=\"l01241\"></a><span class=\"lineno\"> 1241</span> </div>\n+<div class=\"line\"><a id=\"l01242\" name=\"l01242\"></a><span class=\"lineno\"> 1242</span>}  <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l01243\" name=\"l01243\"></a><span class=\"lineno\"> 1243</span> </div>\n+<div class=\"line\"><a id=\"l01244\" name=\"l01244\"></a><span class=\"lineno\"> 1244</span> </div>\n+<div class=\"line\"><a id=\"l01245\" name=\"l01245\"></a><span class=\"lineno\"> 1245</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_TBB_EVALUATOR_H</span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa01141_html\"><div class=\"ttname\"><a href=\"a01141.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::BufferDescriptor</a></div><div class=\"ttdoc\">BufferDescriptor is a struct which describes buffer elements in interleaved data buffers....</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00061\">bufferDescriptor.h:61</a></div></div>\n+<div class=\"ttc\" id=\"aa01317_html\"><div class=\"ttname\"><a href=\"a01317.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00731_source.html#l00039\">tbbEvaluator.h:39</a></div></div>\n+<div class=\"ttc\" id=\"aa01317_html_a1083776ed758e8a1ebd8915eb68c5010\"><div class=\"ttname\"><a href=\"a01317.html#a1083776ed758e8a1ebd8915eb68c5010\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, STENCIL_TABLE const *stencilTable, TbbEvaluator const *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic static eval stencils function. This function has a same signature as other device kernels hav...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00731_source.html#l00072\">tbbEvaluator.h:72</a></div></div>\n+<div class=\"ttc\" id=\"aa01317_html_a16b9e4c7e07040ae42e3d49454393f5f\"><div class=\"ttname\"><a href=\"a01317.html#a16b9e4c7e07040ae42e3d49454393f5f\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, TbbEvaluator const *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00731_source.html#l00454\">tbbEvaluator.h:454</a></div></div>\n+<div class=\"ttc\" id=\"aa01317_html_a3c5d150e67161bce880678f16c11f579\"><div class=\"ttname\"><a href=\"a01317.html#a3c5d150e67161bce880678f16c11f579\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, STENCIL_TABLE const *stencilTable, const TbbEvaluator *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic static eval stencils function with derivatives. This function has a same signature as other d...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00731_source.html#l00303\">tbbEvaluator.h:303</a></div></div>\n+<div class=\"ttc\" id=\"aa01317_html_a4345e3659b7fb82f23dd51c688179ce3\"><div class=\"ttname\"><a href=\"a01317.html#a4345e3659b7fb82f23dd51c688179ce3\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(const float *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, const int *sizes, const int *offsets, const int *indices, const float *weights, int start, int end)</div><div class=\"ttdoc\">Static eval stencils function which takes raw CPU pointers for input and output.</div></div>\n+<div class=\"ttc\" id=\"aa01317_html_a52f3dbfeaec0360f92ac83464c7c2e6c\"><div class=\"ttname\"><a href=\"a01317.html#a52f3dbfeaec0360f92ac83464c7c2e6c\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, TbbEvaluator const *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00731_source.html#l00886\">tbbEvaluator.h:886</a></div></div>\n+<div class=\"ttc\" id=\"aa01317_html_a6d42209eb10894a07bcb88585b5ce2f3\"><div class=\"ttname\"><a href=\"a01317.html#a6d42209eb10894a07bcb88585b5ce2f3\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, TbbEvaluator const *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function with derivatives. This function has a same signature as other device kern...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00731_source.html#l00607\">tbbEvaluator.h:607</a></div></div>\n+<div class=\"ttc\" id=\"aa01317_html_a6daed6135a40cda2daf6c6ea2047b330\"><div class=\"ttname\"><a href=\"a01317.html#a6daed6135a40cda2daf6c6ea2047b330\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(const float *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, float *du, BufferDescriptor const &amp;duDesc, float *dv, BufferDescriptor const &amp;dvDesc, const int *sizes, const int *offsets, const int *indices, const float *weights, const float *duWeights, const float *dvWeights, int start, int end)</div><div class=\"ttdoc\">Static eval stencils function with derivatives, which takes raw CPU pointers for input and output.</div></div>\n+<div class=\"ttc\" id=\"aa01317_html_a76707de0a89ab94f15ad4b2c398a2c23\"><div class=\"ttname\"><a href=\"a01317.html#a76707de0a89ab94f15ad4b2c398a2c23\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(const float *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, float *du, BufferDescriptor const &amp;duDesc, float *dv, BufferDescriptor const &amp;dvDesc, float *duu, BufferDescriptor const &amp;duuDesc, float *duv, BufferDescriptor const &amp;duvDesc, float *dvv, BufferDescriptor const &amp;dvvDesc, const int *sizes, const int *offsets, const int *indices, const float *weights, const float *duWeights, const float *dvWeights, const float *duuWeights, const float *duvWeights, const float *dvvWeights, int start, int end)</div><div class=\"ttdoc\">Static eval stencils function with derivatives, which takes raw CPU pointers for input and output.</div></div>\n+<div class=\"ttc\" id=\"aa01317_html_a7b556148d6ef2e04fbe99677e3a87e91\"><div class=\"ttname\"><a href=\"a01317.html#a7b556148d6ef2e04fbe99677e3a87e91\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(const float *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, float *du, BufferDescriptor const &amp;duDesc, float *dv, BufferDescriptor const &amp;dvDesc, float *duu, BufferDescriptor const &amp;duuDesc, float *duv, BufferDescriptor const &amp;duvDesc, float *dvv, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PatchCoord const *patchCoords, PatchArray const *patchArrays, const int *patchIndexBuffer, PatchParam const *patchParamBuffer)</div><div class=\"ttdoc\">Static limit eval function. It takes an array of PatchCoord and evaluate limit values on given PatchT...</div></div>\n+<div class=\"ttc\" id=\"aa01317_html_a9689407af718de4263562bb3a760c1dd\"><div class=\"ttname\"><a href=\"a01317.html#a9689407af718de4263562bb3a760c1dd\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::Synchronize</a></div><div class=\"ttdeci\">static void Synchronize(void *deviceContext=NULL)</div><div class=\"ttdoc\">synchronize all asynchronous computation invoked on this device.</div></div>\n+<div class=\"ttc\" id=\"aa01317_html_aa3171fe53d673ceca93eb75372c3d7c4\"><div class=\"ttname\"><a href=\"a01317.html#aa3171fe53d673ceca93eb75372c3d7c4\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, TbbEvaluator const *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00731_source.html#l00971\">tbbEvaluator.h:971</a></div></div>\n+<div class=\"ttc\" id=\"aa01317_html_aaa27f47cddc2a42796014b8da00633fd\"><div class=\"ttname\"><a href=\"a01317.html#aaa27f47cddc2a42796014b8da00633fd\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel, TbbEvaluator const *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00731_source.html#l01100\">tbbEvaluator.h:1100</a></div></div>\n+<div class=\"ttc\" id=\"aa01317_html_ab78e3701e650dfc99c2beb39c7e611a4\"><div class=\"ttname\"><a href=\"a01317.html#ab78e3701e650dfc99c2beb39c7e611a4\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, TbbEvaluator const *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function with derivatives. This function has a same signature as other device kern...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00731_source.html#l00517\">tbbEvaluator.h:517</a></div></div>\n+<div class=\"ttc\" id=\"aa01317_html_abeb5f95d1536bd3a7cadf440c2db96af\"><div class=\"ttname\"><a href=\"a01317.html#abeb5f95d1536bd3a7cadf440c2db96af\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel, TbbEvaluator const *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00731_source.html#l01034\">tbbEvaluator.h:1034</a></div></div>\n+<div class=\"ttc\" id=\"aa01317_html_ac1dba254bc287312f8f812113c8e8ad3\"><div class=\"ttname\"><a href=\"a01317.html#ac1dba254bc287312f8f812113c8e8ad3\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(const float *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, float *du, BufferDescriptor const &amp;duDesc, float *dv, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PatchCoord const *patchCoords, PatchArray const *patchArrays, const int *patchIndexBuffer, PatchParam const *patchParamBuffer)</div><div class=\"ttdoc\">Static limit eval function. It takes an array of PatchCoord and evaluate limit values on given PatchT...</div></div>\n+<div class=\"ttc\" id=\"aa01317_html_ad58f2120e84fdd3f92d7cd861e97822d\"><div class=\"ttname\"><a href=\"a01317.html#ad58f2120e84fdd3f92d7cd861e97822d\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::SetNumThreads</a></div><div class=\"ttdeci\">static void SetNumThreads(int numThreads)</div><div class=\"ttdoc\">Deprecated. Client code should initialize TBB.</div></div>\n+<div class=\"ttc\" id=\"aa01317_html_ad5b907c22dfcb943e5f25f3c16543535\"><div class=\"ttname\"><a href=\"a01317.html#ad5b907c22dfcb943e5f25f3c16543535\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(const float *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, int numPatchCoords, const PatchCoord *patchCoords, const PatchArray *patchArrays, const int *patchIndexBuffer, const PatchParam *patchParamBuffer)</div><div class=\"ttdoc\">Static limit eval function. It takes an array of PatchCoord and evaluate limit values on given PatchT...</div></div>\n+<div class=\"ttc\" id=\"aa01317_html_af04c6d999c9f014e93711ceb9097e2a0\"><div class=\"ttname\"><a href=\"a01317.html#af04c6d999c9f014e93711ceb9097e2a0\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, STENCIL_TABLE const *stencilTable, const TbbEvaluator *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic static eval stencils function with derivatives. This function has a same signature as other d...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00731_source.html#l00168\">tbbEvaluator.h:168</a></div></div>\n+<div class=\"ttc\" id=\"aa01317_html_af8ac6af5dd3993a38da263eec54d83b0\"><div class=\"ttname\"><a href=\"a01317.html#af8ac6af5dd3993a38da263eec54d83b0\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel, TbbEvaluator const *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00731_source.html#l01188\">tbbEvaluator.h:1188</a></div></div>\n+<div class=\"ttc\" id=\"aa01317_html_afb857c7493452a91389f40021a03c45d\"><div class=\"ttname\"><a href=\"a01317.html#afb857c7493452a91389f40021a03c45d\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, TbbEvaluator const *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00731_source.html#l00823\">tbbEvaluator.h:823</a></div></div>\n+<div class=\"ttc\" id=\"aa01321_html\"><div class=\"ttname\"><a href=\"a01321.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchCoord</a></div><div class=\"ttdoc\">Coordinates set on a patch table.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00042\">types.h:42</a></div></div>\n+<div class=\"ttc\" id=\"aa01325_html\"><div class=\"ttname\"><a href=\"a01325.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchArray</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00066\">types.h:66</a></div></div>\n+<div class=\"ttc\" id=\"aa01329_html\"><div class=\"ttname\"><a href=\"a01329.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchParam</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00127\">types.h:127</a></div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_f61368944c63c2c1f8c69bc232e59c39.html\">sdc</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00731.html\">crease.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00731.html\">tbbEvaluator.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "encoding", "source2": "encoding", "unified_diff": "@@ -1 +1 @@\n-utf-8\n+us-ascii\n"}, {"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-crease.h\n+tbbEvaluator.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2014 DreamWorks Animation LLC.\n+2// Copyright 2015 Pixar\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -23,289 +23,658 @@\n 17//\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n-24#ifndef OPENSUBDIV3_SDC_CREASE_H\n-25#define OPENSUBDIV3_SDC_CREASE_H\n-26\n-27#include \"../version.h\"\n-28\n-29#include \"../sdc/options.h\"\n-30\n-31namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-32namespace OPENSUBDIV_VERSION {\n+24\n+25#ifndef OPENSUBDIV3_OSD_TBB_EVALUATOR_H\n+26#define OPENSUBDIV3_OSD_TBB_EVALUATOR_H\n+27\n+28#include \"../version.h\"\n+29#include \"../osd/bufferDescriptor.h\"\n+30#include \"../osd/types.h\"\n+31\n+32#include <cstddef>\n 33\n-34namespace Sdc {\n-35\n-61\n-_\b6_\b2class _\bC_\br_\be_\ba_\bs_\be {\n-63public:\n-65\n-_\b6_\b7 static float const _\bS_\bH_\bA_\bR_\bP_\bN_\bE_\bS_\bS_\b__\bS_\bM_\bO_\bO_\bT_\bH; // = 0.0f, do we really need this?\n-_\b6_\b8 static float const _\bS_\bH_\bA_\bR_\bP_\bN_\bE_\bS_\bS_\b__\bI_\bN_\bF_\bI_\bN_\bI_\bT_\bE; // = 10.0f;\n-69\n-_\b7_\b0 static bool _\bI_\bs_\bS_\bm_\bo_\bo_\bt_\bh(float sharpness) { return sharpness <=\n-_\bS_\bH_\bA_\bR_\bP_\bN_\bE_\bS_\bS_\b__\bS_\bM_\bO_\bO_\bT_\bH; }\n-_\b7_\b1 static bool _\bI_\bs_\bS_\bh_\ba_\br_\bp(float sharpness) { return sharpness > _\bS_\bH_\bA_\bR_\bP_\bN_\bE_\bS_\bS_\b__\bS_\bM_\bO_\bO_\bT_\bH;\n-}\n-_\b7_\b2 static bool _\bI_\bs_\bI_\bn_\bf_\bi_\bn_\bi_\bt_\be(float sharpness) { return sharpness >=\n-_\bS_\bH_\bA_\bR_\bP_\bN_\bE_\bS_\bS_\b__\bI_\bN_\bF_\bI_\bN_\bI_\bT_\bE; }\n-_\b7_\b3 static bool _\bI_\bs_\bS_\be_\bm_\bi_\bS_\bh_\ba_\br_\bp(float sharpness) { return (_\bS_\bH_\bA_\bR_\bP_\bN_\bE_\bS_\bS_\b__\bS_\bM_\bO_\bO_\bT_\bH <\n-sharpness) && (sharpness < _\bS_\bH_\bA_\bR_\bP_\bN_\bE_\bS_\bS_\b__\bI_\bN_\bF_\bI_\bN_\bI_\bT_\bE); }\n-75\n-_\b8_\b2 enum _\bR_\bu_\bl_\be {\n-_\b8_\b3 _\bR_\bU_\bL_\bE_\b__\bU_\bN_\bK_\bN_\bO_\bW_\bN = 0,\n-_\b8_\b4 _\bR_\bU_\bL_\bE_\b__\bS_\bM_\bO_\bO_\bT_\bH = (1 << 0),\n-_\b8_\b5 _\bR_\bU_\bL_\bE_\b__\bD_\bA_\bR_\bT = (1 << 1),\n-_\b8_\b6 _\bR_\bU_\bL_\bE_\b__\bC_\bR_\bE_\bA_\bS_\bE = (1 << 2),\n-87 _\bR_\bU_\bL_\bE_\b__\bC_\bO_\bR_\bN_\bE_\bR = (1 << 3)\n-_\b8_\b8 };\n-89\n-90public:\n-_\b9_\b1 _\bC_\br_\be_\ba_\bs_\be() : _options() { }\n-_\b9_\b2 _\bC_\br_\be_\ba_\bs_\be(_\bO_\bp_\bt_\bi_\bo_\bn_\bs const& options) : _options(options) { }\n-_\b9_\b3 _\b~_\bC_\br_\be_\ba_\bs_\be() { }\n+34namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+35namespace OPENSUBDIV_VERSION {\n+36\n+37namespace Osd {\n+38\n+_\b3_\b9class _\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br {\n+40public:\n+46\n+71 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n+_\b7_\b2 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n+73 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+74 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+75 STENCIL_TABLE const *stencilTable,\n+76 _\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance = NULL,\n+77 void *deviceContext = NULL) {\n+78\n+79 (void)instance; // unused\n+80 (void)deviceContext; // unused\n+81\n+82 if (stencilTable->GetNumStencils() == 0)\n+83 return false;\n+84\n+85 return _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n+86 dstBuffer->BindCpuBuffer(), dstDesc,\n+87 &stencilTable->GetSizes()[0],\n+88 &stencilTable->GetOffsets()[0],\n+89 &stencilTable->GetControlIndices()[0],\n+90 &stencilTable->GetWeights()[0],\n+91 /*start = */ 0,\n+92 /*end = */ stencilTable->GetNumStencils());\n+93 }\n 94\n-_\b9_\b5 bool _\bI_\bs_\bU_\bn_\bi_\bf_\bo_\br_\bm() const { return _options._\bG_\be_\bt_\bC_\br_\be_\ba_\bs_\bi_\bn_\bg_\bM_\be_\bt_\bh_\bo_\bd() == _\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bC_\bR_\bE_\bA_\bS_\bE_\b__\bU_\bN_\bI_\bF_\bO_\bR_\bM; }\n-96\n-98\n-104 float _\bS_\bh_\ba_\br_\bp_\be_\bn_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bE_\bd_\bg_\be(float edgeSharpness) const;\n-105 float _\bS_\bh_\ba_\br_\bp_\be_\bn_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bV_\be_\br_\bt_\be_\bx(float edgeSharpness) const;\n-106\n-107 // For future consideration\n-108 //float SharpenNonManifoldEdge(float edgeSharpness) const;\n-109 //float SharpenNonManifoldVertex(float edgeSharpness) const;\n-111\n-113\n-124 float _\bS_\bu_\bb_\bd_\bi_\bv_\bi_\bd_\be_\bU_\bn_\bi_\bf_\bo_\br_\bm_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs(float vertexOrEdgeSharpness) const;\n-125\n-126 float _\bS_\bu_\bb_\bd_\bi_\bv_\bi_\bd_\be_\bV_\be_\br_\bt_\be_\bx_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs(float vertexSharpness) const;\n-127\n-_\b1_\b2_\b8 float _\bS_\bu_\bb_\bd_\bi_\bv_\bi_\bd_\be_\bE_\bd_\bg_\be_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs_\bA_\bt_\bV_\be_\br_\bt_\be_\bx(float edgeSharpness,\n-129 int incidentEdgeCountAtEndVertex,\n-130 float const* edgeSharpnessAroundEndVertex) const;\n-131\n-_\b1_\b3_\b2 void _\bS_\bu_\bb_\bd_\bi_\bv_\bi_\bd_\be_\bE_\bd_\bg_\be_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs_\be_\bs_\bA_\br_\bo_\bu_\bn_\bd_\bV_\be_\br_\bt_\be_\bx(int incidentEdgeCountAtVertex,\n-133 float const* incidentEdgeSharpnessAroundVertex,\n-134 float* childEdgesSharpnessAroundVertex) const;\n-136\n-138\n-_\b1_\b4_\b4 _\bR_\bu_\bl_\be _\bD_\be_\bt_\be_\br_\bm_\bi_\bn_\be_\bV_\be_\br_\bt_\be_\bx_\bV_\be_\br_\bt_\be_\bx_\bR_\bu_\bl_\be(float vertexSharpness,\n-145 int incidentEdgeCount,\n-146 float const* incidentEdgeSharpness) const;\n-_\b1_\b4_\b7 _\bR_\bu_\bl_\be _\bD_\be_\bt_\be_\br_\bm_\bi_\bn_\be_\bV_\be_\br_\bt_\be_\bx_\bV_\be_\br_\bt_\be_\bx_\bR_\bu_\bl_\be(float vertexSharpness,\n-148 int sharpEdgeCount) const;\n-150\n-_\b1_\b6_\b2 float _\bC_\bo_\bm_\bp_\bu_\bt_\be_\bF_\br_\ba_\bc_\bt_\bi_\bo_\bn_\ba_\bl_\bW_\be_\bi_\bg_\bh_\bt_\bA_\bt_\bV_\be_\br_\bt_\be_\bx(float vertexSharpness,\n-163 float childVertexSharpness,\n-164 int incidentEdgeCount,\n-165 float const* incidentEdgeSharpness,\n-166 float const* childEdgesSharpness) const;\n-167\n-168 void _\bG_\be_\bt_\bS_\bh_\ba_\br_\bp_\bE_\bd_\bg_\be_\bP_\ba_\bi_\br_\bO_\bf_\bC_\br_\be_\ba_\bs_\be(float const * incidentEdgeSharpness,\n-169 int incidentEdgeCount,\n-170 int sharpEdgePair[2]) const;\n-171\n-172 // Would these really help? Maybe only need Rules for the vertex-vertex\n-case...\n-173 //\n-174 // Rule DetermineEdgeVertexRule(float parentEdgeSharpness) const;\n-175 // Rule DetermineEdgeVertexRule(float childEdge1Sharpness, float\n-childEdge2Sharpness) const;\n+_\b1_\b2_\b1 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n+122 const float *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+123 float *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+124 const int * sizes,\n+125 const int * offsets,\n+126 const int * indices,\n+127 const float * weights,\n+128 int start, int end);\n+129\n+167 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n+_\b1_\b6_\b8 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n+169 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+170 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+171 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+172 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+173 STENCIL_TABLE const *stencilTable,\n+174 const _\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br *instance = NULL,\n+175 void * deviceContext = NULL) {\n 176\n-177protected:\n-178 float _\bd_\be_\bc_\br_\be_\bm_\be_\bn_\bt_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs(float sharpness) const;\n+177 (void)instance; // unused\n+178 (void)deviceContext; // unused\n 179\n-180private:\n-181 _\bO_\bp_\bt_\bi_\bo_\bn_\bs _options;\n-182};\n-183\n-184\n-185//\n-186// Inline declarations:\n-187//\n-188inline float\n-_\b1_\b8_\b9_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bS_\bh_\ba_\br_\bp_\be_\bn_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bE_\bd_\bg_\be(float /* edgeSharpness */) const {\n-190\n-191 //\n-192 // Despite the presence of the BOUNDARY_NONE option, boundary edges are\n-always sharpened.\n-193 // Much of the code relies on sharpness to indicate boundaries to avoid the\n-more complex\n-194 // topological inspection\n-195 //\n-196 return _\bS_\bH_\bA_\bR_\bP_\bN_\bE_\bS_\bS_\b__\bI_\bN_\bF_\bI_\bN_\bI_\bT_\bE;\n-197}\n-198\n-199inline float\n-_\b2_\b0_\b0_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bS_\bh_\ba_\br_\bp_\be_\bn_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bV_\be_\br_\bt_\be_\bx(float vertexSharpness) const {\n-201\n-202 return (_options._\bG_\be_\bt_\bV_\bt_\bx_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn() == _\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bV_\bT_\bX_\b__\bB_\bO_\bU_\bN_\bD_\bA_\bR_\bY_\b__\bE_\bD_\bG_\bE_\b__\bA_\bN_\bD_\b__\bC_\bO_\bR_\bN_\bE_\bR) ?\n-203 _\bS_\bH_\bA_\bR_\bP_\bN_\bE_\bS_\bS_\b__\bI_\bN_\bF_\bI_\bN_\bI_\bT_\bE : vertexSharpness;\n-204}\n-205\n-206inline float\n-_\b2_\b0_\b7_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bd_\be_\bc_\br_\be_\bm_\be_\bn_\bt_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs(float sharpness) const {\n-208\n-209 if (_\bI_\bs_\bS_\bm_\bo_\bo_\bt_\bh(sharpness)) return _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bS_\bH_\bA_\bR_\bP_\bN_\bE_\bS_\bS_\b__\bS_\bM_\bO_\bO_\bT_\bH; // redundant but\n-most common\n-210 if (_\bI_\bs_\bI_\bn_\bf_\bi_\bn_\bi_\bt_\be(sharpness)) return _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bS_\bH_\bA_\bR_\bP_\bN_\bE_\bS_\bS_\b__\bI_\bN_\bF_\bI_\bN_\bI_\bT_\bE;\n-211 if (sharpness > 1.0f) return (sharpness - 1.0f);\n-212 return _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bS_\bH_\bA_\bR_\bP_\bN_\bE_\bS_\bS_\b__\bS_\bM_\bO_\bO_\bT_\bH;\n-213}\n-214\n-215inline float\n-_\b2_\b1_\b6_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bS_\bu_\bb_\bd_\bi_\bv_\bi_\bd_\be_\bU_\bn_\bi_\bf_\bo_\br_\bm_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs(float vertexOrEdgeSharpness) const {\n-217\n-218 return _\bd_\be_\bc_\br_\be_\bm_\be_\bn_\bt_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs(vertexOrEdgeSharpness);\n-219}\n-220\n-221inline float\n-_\b2_\b2_\b2_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bS_\bu_\bb_\bd_\bi_\bv_\bi_\bd_\be_\bV_\be_\br_\bt_\be_\bx_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs(float vertexSharpness) const {\n-223\n-224 return _\bd_\be_\bc_\br_\be_\bm_\be_\bn_\bt_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs(vertexSharpness);\n-225}\n-226\n-227inline void\n-_\b2_\b2_\b8_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bG_\be_\bt_\bS_\bh_\ba_\br_\bp_\bE_\bd_\bg_\be_\bP_\ba_\bi_\br_\bO_\bf_\bC_\br_\be_\ba_\bs_\be(float const * incidentEdgeSharpness, int\n-incidentEdgeCount,\n-229 int sharpEdgePair[2]) const {\n-230\n-231 // Only to be called when a crease is present at a vertex -- exactly two\n-sharp\n-232 // edges are expected here:\n-233 //\n-234 sharpEdgePair[0] = 0;\n-235 while (_\bI_\bs_\bS_\bm_\bo_\bo_\bt_\bh(incidentEdgeSharpness[sharpEdgePair[0]])) ++ sharpEdgePair\n-[0];\n-236\n-237 sharpEdgePair[1] = incidentEdgeCount - 1;\n-238 while (_\bI_\bs_\bS_\bm_\bo_\bo_\bt_\bh(incidentEdgeSharpness[sharpEdgePair[1]])) -- sharpEdgePair\n-[1];\n-239}\n-240\n-241} // end namespace sdc\n-242\n-243} // end namespace OPENSUBDIV_VERSION\n-244using namespace OPENSUBDIV_VERSION;\n-245} // end namespace OpenSubdiv\n+180 return _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n+181 dstBuffer->BindCpuBuffer(), dstDesc,\n+182 duBuffer->BindCpuBuffer(), duDesc,\n+183 dvBuffer->BindCpuBuffer(), dvDesc,\n+184 &stencilTable->GetSizes()[0],\n+185 &stencilTable->GetOffsets()[0],\n+186 &stencilTable->GetControlIndices()[0],\n+187 &stencilTable->GetWeights()[0],\n+188 &stencilTable->GetDuWeights()[0],\n+189 &stencilTable->GetDvWeights()[0],\n+190 /*start = */ 0,\n+191 /*end = */ stencilTable->GetNumStencils());\n+192 }\n+193\n+_\b2_\b3_\b4 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n+235 const float *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+236 float *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+237 float *du, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+238 float *dv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+239 const int * sizes,\n+240 const int * offsets,\n+241 const int * indices,\n+242 const float * weights,\n+243 const float * duWeights,\n+244 const float * dvWeights,\n+245 int start, int end);\n 246\n-247#endif /* OPENSUBDIV3_SDC_CREASE_H */\n+302 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n+_\b3_\b0_\b3 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n+304 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+305 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+306 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+307 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+308 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+309 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+310 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+311 STENCIL_TABLE const *stencilTable,\n+312 const _\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br *instance = NULL,\n+313 void * deviceContext = NULL) {\n+314\n+315 (void)instance; // unused\n+316 (void)deviceContext; // unused\n+317\n+318 return _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n+319 dstBuffer->BindCpuBuffer(), dstDesc,\n+320 duBuffer->BindCpuBuffer(), duDesc,\n+321 dvBuffer->BindCpuBuffer(), dvDesc,\n+322 duuBuffer->BindCpuBuffer(), duuDesc,\n+323 duvBuffer->BindCpuBuffer(), duvDesc,\n+324 dvvBuffer->BindCpuBuffer(), dvvDesc,\n+325 &stencilTable->GetSizes()[0],\n+326 &stencilTable->GetOffsets()[0],\n+327 &stencilTable->GetControlIndices()[0],\n+328 &stencilTable->GetWeights()[0],\n+329 &stencilTable->GetDuWeights()[0],\n+330 &stencilTable->GetDvWeights()[0],\n+331 &stencilTable->GetDuuWeights()[0],\n+332 &stencilTable->GetDuvWeights()[0],\n+333 &stencilTable->GetDvvWeights()[0],\n+334 /*start = */ 0,\n+335 /*end = */ stencilTable->GetNumStencils());\n+336 }\n+337\n+_\b3_\b9_\b9 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n+400 const float *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+401 float *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+402 float *du, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+403 float *dv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+404 float *duu, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+405 float *duv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+406 float *dvv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+407 const int * sizes,\n+408 const int * offsets,\n+409 const int * indices,\n+410 const float * weights,\n+411 const float * duWeights,\n+412 const float * dvWeights,\n+413 const float * duuWeights,\n+414 const float * duvWeights,\n+415 const float * dvvWeights,\n+416 int start, int end);\n+417\n+423\n+452 template <typename SRC_BUFFER, typename DST_BUFFER,\n+453 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b4_\b5_\b4 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n+455 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+456 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+457 int numPatchCoords,\n+458 PATCHCOORD_BUFFER *patchCoords,\n+459 PATCH_TABLE *patchTable,\n+460 _\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance = NULL,\n+461 void * deviceContext = NULL) {\n+462\n+463 (void)instance; // unused\n+464 (void)deviceContext; // unused\n+465\n+466 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n+467 dstBuffer->BindCpuBuffer(), dstDesc,\n+468 numPatchCoords,\n+469 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd*)patchCoords->BindCpuBuffer(),\n+470 patchTable->GetPatchArrayBuffer(),\n+471 patchTable->GetPatchIndexBuffer(),\n+472 patchTable->GetPatchParamBuffer());\n+473 }\n+474\n+515 template <typename SRC_BUFFER, typename DST_BUFFER,\n+516 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b5_\b1_\b7 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n+518 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+519 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+520 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+521 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+522 int numPatchCoords,\n+523 PATCHCOORD_BUFFER *patchCoords,\n+524 PATCH_TABLE *patchTable,\n+525 _\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance = NULL,\n+526 void * deviceContext = NULL) {\n+527\n+528 (void)instance; // unused\n+529 (void)deviceContext; // unused\n+530\n+531 // XXX: PatchCoords is somewhat abusing vertex primvar buffer interop.\n+532 // ideally all buffer classes should have templated by datatype\n+533 // so that downcast isn't needed there.\n+534 // (e.g. Osd::CpuBuffer<PatchCoord> )\n+535 //\n+536 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n+537 dstBuffer->BindCpuBuffer(), dstDesc,\n+538 duBuffer->BindCpuBuffer(), duDesc,\n+539 dvBuffer->BindCpuBuffer(), dvDesc,\n+540 numPatchCoords,\n+541 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd*)patchCoords->BindCpuBuffer(),\n+542 patchTable->GetPatchArrayBuffer(),\n+543 patchTable->GetPatchIndexBuffer(),\n+544 patchTable->GetPatchParamBuffer());\n+545 }\n+546\n+605 template <typename SRC_BUFFER, typename DST_BUFFER,\n+606 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b6_\b0_\b7 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n+608 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+609 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+610 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+611 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+612 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+613 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+614 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+615 int numPatchCoords,\n+616 PATCHCOORD_BUFFER *patchCoords,\n+617 PATCH_TABLE *patchTable,\n+618 _\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance = NULL,\n+619 void * deviceContext = NULL) {\n+620\n+621 (void)instance; // unused\n+622 (void)deviceContext; // unused\n+623\n+624 // XXX: PatchCoords is somewhat abusing vertex primvar buffer interop.\n+625 // ideally all buffer classes should have templated by datatype\n+626 // so that downcast isn't needed there.\n+627 // (e.g. Osd::CpuBuffer<PatchCoord> )\n+628 //\n+629 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n+630 dstBuffer->BindCpuBuffer(), dstDesc,\n+631 duBuffer->BindCpuBuffer(), duDesc,\n+632 dvBuffer->BindCpuBuffer(), dvDesc,\n+633 duuBuffer->BindCpuBuffer(), duuDesc,\n+634 duvBuffer->BindCpuBuffer(), duvDesc,\n+635 dvvBuffer->BindCpuBuffer(), dvvDesc,\n+636 numPatchCoords,\n+637 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd*)patchCoords->BindCpuBuffer(),\n+638 patchTable->GetPatchArrayBuffer(),\n+639 patchTable->GetPatchIndexBuffer(),\n+640 patchTable->GetPatchParamBuffer());\n+641 }\n+642\n+_\b6_\b7_\b0 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n+671 const float *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+672 float *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+673 int numPatchCoords,\n+674 const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd *patchCoords,\n+675 const _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by *patchArrays,\n+676 const int *patchIndexBuffer,\n+677 const _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm *patchParamBuffer);\n+678\n+_\b7_\b1_\b6 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n+717 const float *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+718 float *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+719 float *du, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+720 float *dv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+721 int numPatchCoords,\n+722 _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd const *patchCoords,\n+723 _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by const *patchArrays,\n+724 const int *patchIndexBuffer,\n+725 _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm const *patchParamBuffer);\n+726\n+_\b7_\b7_\b9 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n+780 const float *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+781 float *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+782 float *du, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+783 float *dv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+784 float *duu, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+785 float *duv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+786 float *dvv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+787 int numPatchCoords,\n+788 _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd const *patchCoords,\n+789 _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by const *patchArrays,\n+790 const int *patchIndexBuffer,\n+791 _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm const *patchParamBuffer);\n+792\n+821 template <typename SRC_BUFFER, typename DST_BUFFER,\n+822 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b8_\b2_\b3 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+824 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+825 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+826 int numPatchCoords,\n+827 PATCHCOORD_BUFFER *patchCoords,\n+828 PATCH_TABLE *patchTable,\n+829 _\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance = NULL,\n+830 void * deviceContext = NULL) {\n+831\n+832 (void)instance; // unused\n+833 (void)deviceContext; // unused\n+834\n+835 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n+836 dstBuffer->BindCpuBuffer(), dstDesc,\n+837 numPatchCoords,\n+838 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd*)patchCoords->BindCpuBuffer(),\n+839 patchTable->GetVaryingPatchArrayBuffer(),\n+840 patchTable->GetVaryingPatchIndexBuffer(),\n+841 patchTable->GetPatchParamBuffer());\n+842 }\n+843\n+884 template <typename SRC_BUFFER, typename DST_BUFFER,\n+885 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b8_\b8_\b6 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+887 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+888 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+889 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+890 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+891 int numPatchCoords,\n+892 PATCHCOORD_BUFFER *patchCoords,\n+893 PATCH_TABLE *patchTable,\n+894 _\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance = NULL,\n+895 void * deviceContext = NULL) {\n+896\n+897 (void)instance; // unused\n+898 (void)deviceContext; // unused\n+899\n+900 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n+901 dstBuffer->BindCpuBuffer(), dstDesc,\n+902 duBuffer->BindCpuBuffer(), duDesc,\n+903 dvBuffer->BindCpuBuffer(), dvDesc,\n+904 numPatchCoords,\n+905 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd*)patchCoords->BindCpuBuffer(),\n+906 patchTable->GetVaryingPatchArrayBuffer(),\n+907 patchTable->GetVaryingPatchIndexBuffer(),\n+908 patchTable->GetPatchParamBuffer());\n+909 }\n+910\n+969 template <typename SRC_BUFFER, typename DST_BUFFER,\n+970 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b9_\b7_\b1 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+972 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+973 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+974 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+975 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+976 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+977 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+978 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+979 int numPatchCoords,\n+980 PATCHCOORD_BUFFER *patchCoords,\n+981 PATCH_TABLE *patchTable,\n+982 _\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance = NULL,\n+983 void * deviceContext = NULL) {\n+984\n+985 (void)instance; // unused\n+986 (void)deviceContext; // unused\n+987\n+988 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n+989 dstBuffer->BindCpuBuffer(), dstDesc,\n+990 duBuffer->BindCpuBuffer(), duDesc,\n+991 dvBuffer->BindCpuBuffer(), dvDesc,\n+992 duuBuffer->BindCpuBuffer(), duuDesc,\n+993 duvBuffer->BindCpuBuffer(), duvDesc,\n+994 dvvBuffer->BindCpuBuffer(), dvvDesc,\n+995 numPatchCoords,\n+996 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd*)patchCoords->BindCpuBuffer(),\n+997 patchTable->GetVaryingPatchArrayBuffer(),\n+998 patchTable->GetVaryingPatchIndexBuffer(),\n+999 patchTable->GetPatchParamBuffer());\n+1000 }\n+1001\n+1032 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1033 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b1_\b0_\b3_\b4 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1035 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1036 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1037 int numPatchCoords,\n+1038 PATCHCOORD_BUFFER *patchCoords,\n+1039 PATCH_TABLE *patchTable,\n+1040 int fvarChannel,\n+1041 _\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance = NULL,\n+1042 void * deviceContext = NULL) {\n+1043\n+1044 (void)instance; // unused\n+1045 (void)deviceContext; // unused\n+1046\n+1047 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n+1048 dstBuffer->BindCpuBuffer(), dstDesc,\n+1049 numPatchCoords,\n+1050 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd*)patchCoords->BindCpuBuffer(),\n+1051 patchTable->GetFVarPatchArrayBuffer(fvarChannel),\n+1052 patchTable->GetFVarPatchIndexBuffer(fvarChannel),\n+1053 patchTable->GetFVarPatchParamBuffer(fvarChannel));\n+1054 }\n+1055\n+1098 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1099 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b1_\b1_\b0_\b0 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1101 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1102 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1103 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+1104 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+1105 int numPatchCoords,\n+1106 PATCHCOORD_BUFFER *patchCoords,\n+1107 PATCH_TABLE *patchTable,\n+1108 int fvarChannel,\n+1109 _\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance = NULL,\n+1110 void * deviceContext = NULL) {\n+1111\n+1112 (void)instance; // unused\n+1113 (void)deviceContext; // unused\n+1114\n+1115 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n+1116 dstBuffer->BindCpuBuffer(), dstDesc,\n+1117 duBuffer->BindCpuBuffer(), duDesc,\n+1118 dvBuffer->BindCpuBuffer(), dvDesc,\n+1119 numPatchCoords,\n+1120 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd*)patchCoords->BindCpuBuffer(),\n+1121 patchTable->GetFVarPatchArrayBuffer(fvarChannel),\n+1122 patchTable->GetFVarPatchIndexBuffer(fvarChannel),\n+1123 patchTable->GetFVarPatchParamBuffer(fvarChannel));\n+1124 }\n+1125\n+1186 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1187 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b1_\b1_\b8_\b8 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1189 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1190 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1191 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+1192 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+1193 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+1194 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+1195 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+1196 int numPatchCoords,\n+1197 PATCHCOORD_BUFFER *patchCoords,\n+1198 PATCH_TABLE *patchTable,\n+1199 int fvarChannel,\n+1200 _\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance = NULL,\n+1201 void * deviceContext = NULL) {\n+1202\n+1203 (void)instance; // unused\n+1204 (void)deviceContext; // unused\n+1205\n+1206 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n+1207 dstBuffer->BindCpuBuffer(), dstDesc,\n+1208 duBuffer->BindCpuBuffer(), duDesc,\n+1209 dvBuffer->BindCpuBuffer(), dvDesc,\n+1210 duuBuffer->BindCpuBuffer(), duuDesc,\n+1211 duvBuffer->BindCpuBuffer(), duvDesc,\n+1212 dvvBuffer->BindCpuBuffer(), dvvDesc,\n+1213 numPatchCoords,\n+1214 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd*)patchCoords->BindCpuBuffer(),\n+1215 patchTable->GetFVarPatchArrayBuffer(fvarChannel),\n+1216 patchTable->GetFVarPatchIndexBuffer(fvarChannel),\n+1217 patchTable->GetFVarPatchParamBuffer(fvarChannel));\n+1218 }\n+1219\n+1225\n+_\b1_\b2_\b2_\b7 static void _\bS_\by_\bn_\bc_\bh_\br_\bo_\bn_\bi_\bz_\be(void *deviceContext = NULL);\n+1228\n+_\b1_\b2_\b3_\b3 static void _\bS_\be_\bt_\bN_\bu_\bm_\bT_\bh_\br_\be_\ba_\bd_\bs(int numThreads);\n+1234};\n+1235\n+1236\n+1237} // end namespace Osd\n+1238\n+1239} // end namespace OPENSUBDIV_VERSION\n+1240using namespace OPENSUBDIV_VERSION;\n+1241\n+1242} // end namespace OpenSubdiv\n+1243\n+1244\n+1245#endif // OPENSUBDIV3_OSD_TBB_EVALUATOR_H\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be\n-Types, constants and utilities related to semi-sharp creasing \u00e2\u0080\u0093 whose\n-implementation is independent o...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b6_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bS_\bu_\bb_\bd_\bi_\bv_\bi_\bd_\be_\bV_\be_\br_\bt_\be_\bx_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs\n-float SubdivideVertexSharpness(float vertexSharpness) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b2_\b2_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bI_\bs_\bI_\bn_\bf_\bi_\bn_\bi_\bt_\be\n-static bool IsInfinite(float sharpness)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b7_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be\n-Rule\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b8_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bC_\bO_\bR_\bN_\bE_\bR\n-@ RULE_CORNER\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b8_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bD_\bA_\bR_\bT\n-@ RULE_DART\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b8_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bS_\bM_\bO_\bO_\bT_\bH\n-@ RULE_SMOOTH\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b8_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bC_\bR_\bE_\bA_\bS_\bE\n-@ RULE_CREASE\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b8_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bU_\bN_\bK_\bN_\bO_\bW_\bN\n-@ RULE_UNKNOWN\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b8_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bS_\bh_\ba_\br_\bp_\be_\bn_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bV_\be_\br_\bt_\be_\bx\n-float SharpenBoundaryVertex(float edgeSharpness) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b2_\b0_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bS_\bH_\bA_\bR_\bP_\bN_\bE_\bS_\bS_\b__\bS_\bM_\bO_\bO_\bT_\bH\n-static float const SHARPNESS_SMOOTH\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b6_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bG_\be_\bt_\bS_\bh_\ba_\br_\bp_\bE_\bd_\bg_\be_\bP_\ba_\bi_\br_\bO_\bf_\bC_\br_\be_\ba_\bs_\be\n-void GetSharpEdgePairOfCrease(float const *incidentEdgeSharpness, int\n-incidentEdgeCount, int sharpEdgePair[2]) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b2_\b2_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bS_\bH_\bA_\bR_\bP_\bN_\bE_\bS_\bS_\b__\bI_\bN_\bF_\bI_\bN_\bI_\bT_\bE\n-static float const SHARPNESS_INFINITE\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b6_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bD_\be_\bt_\be_\br_\bm_\bi_\bn_\be_\bV_\be_\br_\bt_\be_\bx_\bV_\be_\br_\bt_\be_\bx_\bR_\bu_\bl_\be\n-Rule DetermineVertexVertexRule(float vertexSharpness, int incidentEdgeCount,\n-float const *incidentEdgeSharpness) const\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bd_\be_\bc_\br_\be_\bm_\be_\bn_\bt_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs\n-float decrementSharpness(float sharpness) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b2_\b0_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bI_\bs_\bS_\bm_\bo_\bo_\bt_\bh\n-static bool IsSmooth(float sharpness)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b7_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bD_\be_\bt_\be_\br_\bm_\bi_\bn_\be_\bV_\be_\br_\bt_\be_\bx_\bV_\be_\br_\bt_\be_\bx_\bR_\bu_\bl_\be\n-Rule DetermineVertexVertexRule(float vertexSharpness, int sharpEdgeCount) const\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bI_\bs_\bU_\bn_\bi_\bf_\bo_\br_\bm\n-bool IsUniform() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b9_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bI_\bs_\bS_\be_\bm_\bi_\bS_\bh_\ba_\br_\bp\n-static bool IsSemiSharp(float sharpness)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b7_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bC_\br_\be_\ba_\bs_\be\n-Crease(Options const &options)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b9_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:\n-_\bS_\bu_\bb_\bd_\bi_\bv_\bi_\bd_\be_\bE_\bd_\bg_\be_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs_\be_\bs_\bA_\br_\bo_\bu_\bn_\bd_\bV_\be_\br_\bt_\be_\bx\n-void SubdivideEdgeSharpnessesAroundVertex(int incidentEdgeCountAtVertex, float\n-const *incidentEdgeSharpnessAroundVertex, float\n-*childEdgesSharpnessAroundVertex) const\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bS_\bu_\bb_\bd_\bi_\bv_\bi_\bd_\be_\bU_\bn_\bi_\bf_\bo_\br_\bm_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs\n-float SubdivideUniformSharpness(float vertexOrEdgeSharpness) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b2_\b1_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bC_\br_\be_\ba_\bs_\be\n-Crease()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b9_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bS_\bh_\ba_\br_\bp_\be_\bn_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bE_\bd_\bg_\be\n-float SharpenBoundaryEdge(float edgeSharpness) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b1_\b8_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bF_\br_\ba_\bc_\bt_\bi_\bo_\bn_\ba_\bl_\bW_\be_\bi_\bg_\bh_\bt_\bA_\bt_\bV_\be_\br_\bt_\be_\bx\n-float ComputeFractionalWeightAtVertex(float vertexSharpness, float\n-childVertexSharpness, int incidentEdgeCount, float const\n-*incidentEdgeSharpness, float const *childEdgesSharpness) const\n-Transitional weighting: When the rules applicable to a parent vertex and its\n-child differ,...\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bS_\bu_\bb_\bd_\bi_\bv_\bi_\bd_\be_\bE_\bd_\bg_\be_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs_\bA_\bt_\bV_\be_\br_\bt_\be_\bx\n-float SubdivideEdgeSharpnessAtVertex(float edgeSharpness, int\n-incidentEdgeCountAtEndVertex, float const *edgeSharpnessAroundEndVertex) const\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bI_\bs_\bS_\bh_\ba_\br_\bp\n-static bool IsSharp(float sharpness)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b7_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\b~_\bC_\br_\be_\ba_\bs_\be\n-~Crease()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b9_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n-All supported options applying to subdivision scheme.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b5_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bC_\bR_\bE_\bA_\bS_\bE_\b__\bU_\bN_\bI_\bF_\bO_\bR_\bM\n-@ CREASE_UNIFORM\n-Catmark rule.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b6_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bG_\be_\bt_\bC_\br_\be_\ba_\bs_\bi_\bn_\bg_\bM_\be_\bt_\bh_\bo_\bd\n-CreasingMethod GetCreasingMethod() const\n-Get edge crease rule.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b1_\b0_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bG_\be_\bt_\bV_\bt_\bx_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-VtxBoundaryInterpolation GetVtxBoundaryInterpolation() const\n-Get vertex boundary interpolation rule.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b8_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bV_\bT_\bX_\b__\bB_\bO_\bU_\bN_\bD_\bA_\bR_\bY_\b__\bE_\bD_\bG_\bE_\b__\bA_\bN_\bD_\b__\bC_\bO_\bR_\bN_\bE_\bR\n-@ VTX_BOUNDARY_EDGE_AND_CORNER\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b5_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n+BufferDescriptor is a struct which describes buffer elements in interleaved\n+data buffers....\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b6_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b3_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, STENCIL_TABLE\n+const *stencilTable, TbbEvaluator const *instance=NULL, void\n+*deviceContext=NULL)\n+Generic static eval stencils function. This function has a same signature as\n+other device kernels hav...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords,\n+PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, TbbEvaluator const\n+*instance=NULL, void *deviceContext=NULL)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b4_\b5_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n+*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n+BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const\n+&duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER\n+*dvvBuffer, BufferDescriptor const &dvvDesc, STENCIL_TABLE const *stencilTable,\n+const TbbEvaluator *instance=NULL, void *deviceContext=NULL)\n+Generic static eval stencils function with derivatives. This function has a\n+same signature as other d...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b3_\b0_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+static bool EvalStencils(const float *src, BufferDescriptor const &srcDesc,\n+float *dst, BufferDescriptor const &dstDesc, const int *sizes, const int\n+*offsets, const int *indices, const float *weights, int start, int end)\n+Static eval stencils function which takes raw CPU pointers for input and\n+output.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n+static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n+*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n+BufferDescriptor const &dvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n+*patchCoords, PATCH_TABLE *patchTable, TbbEvaluator const *instance=NULL, void\n+*deviceContext=NULL)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b8_\b8_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n+BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n+&dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER\n+*duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer,\n+BufferDescriptor const &dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n+*patchCoords, PATCH_TABLE *patchTable, TbbEvaluator const *instance=NULL, void\n+*deviceContext=NULL)\n+Generic limit eval function with derivatives. This function has a same\n+signature as other device kern...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b6_\b0_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+static bool EvalStencils(const float *src, BufferDescriptor const &srcDesc,\n+float *dst, BufferDescriptor const &dstDesc, float *du, BufferDescriptor const\n+&duDesc, float *dv, BufferDescriptor const &dvDesc, const int *sizes, const int\n+*offsets, const int *indices, const float *weights, const float *duWeights,\n+const float *dvWeights, int start, int end)\n+Static eval stencils function with derivatives, which takes raw CPU pointers\n+for input and output.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+static bool EvalStencils(const float *src, BufferDescriptor const &srcDesc,\n+float *dst, BufferDescriptor const &dstDesc, float *du, BufferDescriptor const\n+&duDesc, float *dv, BufferDescriptor const &dvDesc, float *duu,\n+BufferDescriptor const &duuDesc, float *duv, BufferDescriptor const &duvDesc,\n+float *dvv, BufferDescriptor const &dvvDesc, const int *sizes, const int\n+*offsets, const int *indices, const float *weights, const float *duWeights,\n+const float *dvWeights, const float *duuWeights, const float *duvWeights, const\n+float *dvvWeights, int start, int end)\n+Static eval stencils function with derivatives, which takes raw CPU pointers\n+for input and output.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+static bool EvalPatches(const float *src, BufferDescriptor const &srcDesc,\n+float *dst, BufferDescriptor const &dstDesc, float *du, BufferDescriptor const\n+&duDesc, float *dv, BufferDescriptor const &dvDesc, float *duu,\n+BufferDescriptor const &duuDesc, float *duv, BufferDescriptor const &duvDesc,\n+float *dvv, BufferDescriptor const &dvvDesc, int numPatchCoords, PatchCoord\n+const *patchCoords, PatchArray const *patchArrays, const int *patchIndexBuffer,\n+PatchParam const *patchParamBuffer)\n+Static limit eval function. It takes an array of PatchCoord and evaluate limit\n+values on given PatchT...\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bS_\by_\bn_\bc_\bh_\br_\bo_\bn_\bi_\bz_\be\n+static void Synchronize(void *deviceContext=NULL)\n+synchronize all asynchronous computation invoked on this device.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n+static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n+*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n+BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const\n+&duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER\n+*dvvBuffer, BufferDescriptor const &dvvDesc, int numPatchCoords,\n+PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, TbbEvaluator const\n+*instance=NULL, void *deviceContext=NULL)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b9_\b7_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n+static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor\n+const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,\n+DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n+BufferDescriptor const &dvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n+*patchCoords, PATCH_TABLE *patchTable, int fvarChannel, TbbEvaluator const\n+*instance=NULL, void *deviceContext=NULL)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b1_\b0_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n+BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n+&dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE\n+*patchTable, TbbEvaluator const *instance=NULL, void *deviceContext=NULL)\n+Generic limit eval function with derivatives. This function has a same\n+signature as other device kern...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b5_\b1_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n+static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor\n+const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int\n+numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int\n+fvarChannel, TbbEvaluator const *instance=NULL, void *deviceContext=NULL)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b0_\b3_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+static bool EvalPatches(const float *src, BufferDescriptor const &srcDesc,\n+float *dst, BufferDescriptor const &dstDesc, float *du, BufferDescriptor const\n+&duDesc, float *dv, BufferDescriptor const &dvDesc, int numPatchCoords,\n+PatchCoord const *patchCoords, PatchArray const *patchArrays, const int\n+*patchIndexBuffer, PatchParam const *patchParamBuffer)\n+Static limit eval function. It takes an array of PatchCoord and evaluate limit\n+values on given PatchT...\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bS_\be_\bt_\bN_\bu_\bm_\bT_\bh_\br_\be_\ba_\bd_\bs\n+static void SetNumThreads(int numThreads)\n+Deprecated. Client code should initialize TBB.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+static bool EvalPatches(const float *src, BufferDescriptor const &srcDesc,\n+float *dst, BufferDescriptor const &dstDesc, int numPatchCoords, const\n+PatchCoord *patchCoords, const PatchArray *patchArrays, const int\n+*patchIndexBuffer, const PatchParam *patchParamBuffer)\n+Static limit eval function. It takes an array of PatchCoord and evaluate limit\n+values on given PatchT...\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n+*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n+BufferDescriptor const &dvDesc, STENCIL_TABLE const *stencilTable, const\n+TbbEvaluator *instance=NULL, void *deviceContext=NULL)\n+Generic static eval stencils function with derivatives. This function has a\n+same signature as other d...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b6_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n+static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor\n+const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,\n+DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n+BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const\n+&duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER\n+*dvvBuffer, BufferDescriptor const &dvvDesc, int numPatchCoords,\n+PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel,\n+TbbEvaluator const *instance=NULL, void *deviceContext=NULL)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b1_\b8_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n+static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int\n+numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable,\n+TbbEvaluator const *instance=NULL, void *deviceContext=NULL)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b8_\b2_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd\n+Coordinates set on a patch table.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b4_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b6_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b1_\b2_\b7\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bs_\bd_\bc\n-    * _\bc_\br_\be_\ba_\bs_\be_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bt_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00734.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00734.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/sdc/options.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/osd/mtlPatchShaderSource.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -90,40 +90,42 @@\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> &#124;\n <a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">options.h File Reference</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">mtlPatchShaderSource.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n-<div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n+<div class=\"textblock\"><code>import &quot;../version.h&quot;</code><br />\n+<code>import &quot;<a class=\"el\" href=\"a00857_source.html\">../far/patchDescriptor.h</a>&quot;</code><br />\n+<code>import &lt;string&gt;</code><br />\n </div>\n <p><a href=\"a00734_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01337.html\">Options</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">All supported options applying to subdivision scheme.  <a href=\"a01337.html#details\">More...</a><br /></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01301.html\">MTLPatchShaderSource</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Provides shader source which can be used by client code.  <a href=\"a01301.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00913\" id=\"r_a00913\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00913.html\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc</a></td></tr>\n+<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_f61368944c63c2c1f8c69bc232e59c39.html\">sdc</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00734.html\">options.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00734.html\">mtlPatchShaderSource.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,23 +1,25 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-options.h File Reference\n-#include \"../version.h\"\n+mtlPatchShaderSource.h File Reference\n+import \"../version.h\"\n+import \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh\"\n+import <string>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bO_\bp_\bt_\bi_\bo_\bn_\bs\n-\u00a0       All supported options applying to subdivision scheme. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be\n+\u00a0       Provides shader source which can be used by client code. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bs_\bd_\bc\n-    * _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bm_\bt_\bl_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00734.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00734.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,3 +1,3 @@\n var a00734 = [\n-    [\"Options\", \"a01337.html\", \"a01337\"]\n+    [\"MTLPatchShaderSource\", \"a01301.html\", null]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00734_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00734_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/sdc/options.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/osd/mtlPatchShaderSource.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">options.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">mtlPatchShaderSource.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00734.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2014 DreamWorks Animation LLC.</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2013 Pixar</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -118,137 +118,83 @@\n <div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_SDC_OPTIONS_H</span></div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#define OPENSUBDIV3_SDC_OPTIONS_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span> </div>\n-<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span> </div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n+<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_MTL_PATCH_SHADER_SOURCE_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_MTL_PATCH_SHADER_SOURCE_H</span></div>\n+<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n+<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#import &quot;../version.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#import &quot;../far/patchDescriptor.h&quot;</span></div>\n <div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"keyword\">namespace </span>Sdc {</div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#import &lt;string&gt;</span></div>\n <div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00051\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01337.html\">   51</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01337.html\">Options</a> {</div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"foldopen\" id=\"foldopen00053\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01337.html#acbf78f1a6abfc8db080ef7fb3c3f417e\">   53</a></span>    <span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"a01337.html#acbf78f1a6abfc8db080ef7fb3c3f417e\">VtxBoundaryInterpolation</a> {</div>\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span>        <a class=\"code hl_enumvalue\" href=\"a01337.html#acbf78f1a6abfc8db080ef7fb3c3f417ea5d15ed470f1f0ecce0549282de54a3ba\">VTX_BOUNDARY_NONE</a> = 0,        </div>\n-<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01337.html#acbf78f1a6abfc8db080ef7fb3c3f417ea9240987283549b42eeb262f088b68fdf\">   56</a></span>        <a class=\"code hl_enumvalue\" href=\"a01337.html#acbf78f1a6abfc8db080ef7fb3c3f417ea9240987283549b42eeb262f088b68fdf\">VTX_BOUNDARY_EDGE_ONLY</a>,       </div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span>        <a class=\"code hl_enumvalue\" href=\"a01337.html#acbf78f1a6abfc8db080ef7fb3c3f417eac6e5f52f358d3b6d62cc2b708a5a8757\">VTX_BOUNDARY_EDGE_AND_CORNER</a>  </div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01337.html#acbf78f1a6abfc8db080ef7fb3c3f417eac6e5f52f358d3b6d62cc2b708a5a8757\">   59</a></span>    };</div>\n-</div>\n-<div class=\"foldopen\" id=\"foldopen00060\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167b\">   60</a></span>    <span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167b\">FVarLinearInterpolation</a> {</div>\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167bac91a565721cd973b4d3cd3c697dda50f\">   61</a></span>        <a class=\"code hl_enumvalue\" href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167bac91a565721cd973b4d3cd3c697dda50f\">FVAR_LINEAR_NONE</a> = 0,         </div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167ba2d0edb4dd10e355f8089b4a7ab1d1d72\">   62</a></span>        <a class=\"code hl_enumvalue\" href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167ba2d0edb4dd10e355f8089b4a7ab1d1d72\">FVAR_LINEAR_CORNERS_ONLY</a>,     </div>\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167ba79d654b94893314766a372c630f142c6\">   63</a></span>        <a class=\"code hl_enumvalue\" href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167ba79d654b94893314766a372c630f142c6\">FVAR_LINEAR_CORNERS_PLUS1</a>,    </div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167ba6c323349983f89298e3ae7e06b9cdef6\">   64</a></span>        <a class=\"code hl_enumvalue\" href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167ba6c323349983f89298e3ae7e06b9cdef6\">FVAR_LINEAR_CORNERS_PLUS2</a>,    </div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167ba60007144d7e8d50ed9f907badecf8ea1\">   65</a></span>        <a class=\"code hl_enumvalue\" href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167ba60007144d7e8d50ed9f907badecf8ea1\">FVAR_LINEAR_BOUNDARIES</a>,       </div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span>        <a class=\"code hl_enumvalue\" href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167ba8d4df083104973fad1479109988e0387\">FVAR_LINEAR_ALL</a>               </div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167ba8d4df083104973fad1479109988e0387\">   67</a></span>    };</div>\n-</div>\n-<div class=\"foldopen\" id=\"foldopen00068\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01337.html#a16ec522dc0398bf1435a912cd669ffb0\">   68</a></span>    <span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"a01337.html#a16ec522dc0398bf1435a912cd669ffb0\">CreasingMethod</a> {</div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01337.html#a16ec522dc0398bf1435a912cd669ffb0a10f2956db48d2975424be2e52ebd544d\">   69</a></span>        <a class=\"code hl_enumvalue\" href=\"a01337.html#a16ec522dc0398bf1435a912cd669ffb0a10f2956db48d2975424be2e52ebd544d\">CREASE_UNIFORM</a> = 0,           </div>\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span>        <a class=\"code hl_enumvalue\" href=\"a01337.html#a16ec522dc0398bf1435a912cd669ffb0a1e31a583663dd65a7b2feffeb24268b5\">CREASE_CHAIKIN</a>                </div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01337.html#a16ec522dc0398bf1435a912cd669ffb0a1e31a583663dd65a7b2feffeb24268b5\">   71</a></span>    };</div>\n-</div>\n-<div class=\"foldopen\" id=\"foldopen00072\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01337.html#a10fe8c2b78e5c59377614876a362c38b\">   72</a></span>    <span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"a01337.html#a10fe8c2b78e5c59377614876a362c38b\">TriangleSubdivision</a> {</div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01337.html#a10fe8c2b78e5c59377614876a362c38ba2dd7b5ddb5288776e48d86049e56e730\">   73</a></span>        <a class=\"code hl_enumvalue\" href=\"a01337.html#a10fe8c2b78e5c59377614876a362c38ba2dd7b5ddb5288776e48d86049e56e730\">TRI_SUB_CATMARK</a> = 0,          </div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span>        <a class=\"code hl_enumvalue\" href=\"a01337.html#a10fe8c2b78e5c59377614876a362c38baf222ead5fa4875f2ea2794c2d765a87d\">TRI_SUB_SMOOTH</a>                </div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01337.html#a10fe8c2b78e5c59377614876a362c38baf222ead5fa4875f2ea2794c2d765a87d\">   75</a></span>    };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span> </div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00079\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01337.html#a28d39a844c3a37ab61d32ab7c6352f09\">   79</a></span>    <a class=\"code hl_function\" href=\"a01337.html#a28d39a844c3a37ab61d32ab7c6352f09\">Options</a>() : _vtxBoundInterp(<a class=\"code hl_enumvalue\" href=\"a01337.html#acbf78f1a6abfc8db080ef7fb3c3f417ea5d15ed470f1f0ecce0549282de54a3ba\">VTX_BOUNDARY_NONE</a>),</div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span>                _fvarLinInterp(<a class=\"code hl_enumvalue\" href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167ba8d4df083104973fad1479109988e0387\">FVAR_LINEAR_ALL</a>),</div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>                _creasingMethod(<a class=\"code hl_enumvalue\" href=\"a01337.html#a16ec522dc0398bf1435a912cd669ffb0a10f2956db48d2975424be2e52ebd544d\">CREASE_UNIFORM</a>),</div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>                _triangleSub(<a class=\"code hl_enumvalue\" href=\"a01337.html#a10fe8c2b78e5c59377614876a362c38ba2dd7b5ddb5288776e48d86049e56e730\">TRI_SUB_CATMARK</a>) { }</div>\n-</div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">namespace </span>Osd {</div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00040\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01301.html\">   40</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01301.html\">MTLPatchShaderSource</a> {</div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01301.html#ad41c6e1dc4a5cd6ee4f33fc5a8e15d1d\">   45</a></span>    <span class=\"keyword\">static</span> std::string <a class=\"code hl_function\" href=\"a01301.html#ad41c6e1dc4a5cd6ee4f33fc5a8e15d1d\">GetPatchBasisShaderSource</a>();</div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span> </div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01301.html#a230efce26a4754c94dbeedd435fe471b\">   50</a></span>    <span class=\"keyword\">static</span> std::string <a class=\"code hl_function\" href=\"a01301.html#a230efce26a4754c94dbeedd435fe471b\">GetPatchDrawingShaderSource</a>();</div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span> </div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span> </div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01301.html#ad5f427d2655d384980715874209345e7\">   60</a></span>    <span class=\"keyword\">static</span> std::string <a class=\"code hl_function\" href=\"a01301.html#ad5f427d2655d384980715874209345e7\">GetCommonShaderSource</a>();</div>\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span> </div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01301.html#a20cb122b561de15ed3b90d7e4f5176d2\">   62</a></span>    <span class=\"keyword\">static</span> std::string <a class=\"code hl_function\" href=\"a01301.html#a20cb122b561de15ed3b90d7e4f5176d2\">GetVertexShaderSource</a>(<a class=\"code hl_enumeration\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">Far::PatchDescriptor::Type</a> type);</div>\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span> </div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01301.html#a97a09fe0a378798cafdff72e115e373f\">   64</a></span>    <span class=\"keyword\">static</span> std::string <a class=\"code hl_function\" href=\"a01301.html#a97a09fe0a378798cafdff72e115e373f\">GetHullShaderSource</a>(<a class=\"code hl_enumeration\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">Far::PatchDescriptor::Type</a> type);</div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span> </div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01301.html#a733309309efe67ba5d1acd7d0a9ff6ca\">   66</a></span>    <span class=\"keyword\">static</span> std::string <a class=\"code hl_function\" href=\"a01301.html#a733309309efe67ba5d1acd7d0a9ff6ca\">GetDomainShaderSource</a>(<a class=\"code hl_enumeration\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">Far::PatchDescriptor::Type</a> type);</div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span> </div>\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01301.html#a7b51f245191a47026eaedcde63850f79\">   72</a></span>    <span class=\"keyword\">static</span> std::string <a class=\"code hl_function\" href=\"a01301.html#a7b51f245191a47026eaedcde63850f79\">GetVertexShaderSource</a>(</div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span>        <a class=\"code hl_enumeration\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">Far::PatchDescriptor::Type</a> type,</div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span>        <a class=\"code hl_enumeration\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">Far::PatchDescriptor::Type</a> fvarType);</div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01301.html#a55538e8657b191955044d983cf1b3649\">   75</a></span>    <span class=\"keyword\">static</span> std::string <a class=\"code hl_function\" href=\"a01301.html#a55538e8657b191955044d983cf1b3649\">GetHullShaderSource</a>(</div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span>        <a class=\"code hl_enumeration\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">Far::PatchDescriptor::Type</a> type,</div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span>        <a class=\"code hl_enumeration\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">Far::PatchDescriptor::Type</a> fvarType);</div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01301.html#a85470a02e193180c7d9c51b2d65962bb\">   78</a></span>    <span class=\"keyword\">static</span> std::string <a class=\"code hl_function\" href=\"a01301.html#a85470a02e193180c7d9c51b2d65962bb\">GetDomainShaderSource</a>(</div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>        <a class=\"code hl_enumeration\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">Far::PatchDescriptor::Type</a> type,</div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span>        <a class=\"code hl_enumeration\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">Far::PatchDescriptor::Type</a> fvarType);</div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span> </div>\n <div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span> </div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>    <span class=\"comment\">//  Trivial get/set methods:</span></div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span> </div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>}  <span class=\"comment\">// end namespace Osd</span></div>\n <div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span> </div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01337.html#a590338ee8b544306b970a0c1445cd01f\">   89</a></span>    <a class=\"code hl_enumeration\" href=\"a01337.html#acbf78f1a6abfc8db080ef7fb3c3f417e\">VtxBoundaryInterpolation</a> <a class=\"code hl_function\" href=\"a01337.html#a590338ee8b544306b970a0c1445cd01f\">GetVtxBoundaryInterpolation</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (<a class=\"code hl_enumeration\" href=\"a01337.html#acbf78f1a6abfc8db080ef7fb3c3f417e\">VtxBoundaryInterpolation</a>) _vtxBoundInterp; }</div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span> </div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01337.html#a70997d63dc747e55154e2ab4b4354141\">   92</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01337.html#a70997d63dc747e55154e2ab4b4354141\">SetVtxBoundaryInterpolation</a>(<a class=\"code hl_enumeration\" href=\"a01337.html#acbf78f1a6abfc8db080ef7fb3c3f417e\">VtxBoundaryInterpolation</a> b) { _vtxBoundInterp = (EnumIntType) b; }</div>\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span> </div>\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01337.html#acab24306782f101827103b87bbe4b8dd\">   95</a></span>    <a class=\"code hl_enumeration\" href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167b\">FVarLinearInterpolation</a> <a class=\"code hl_function\" href=\"a01337.html#acab24306782f101827103b87bbe4b8dd\">GetFVarLinearInterpolation</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (<a class=\"code hl_enumeration\" href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167b\">FVarLinearInterpolation</a>) _fvarLinInterp; }</div>\n-<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span> </div>\n-<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01337.html#a2b335eb227194b4fc6fcec7f3c4b25ce\">   98</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01337.html#a2b335eb227194b4fc6fcec7f3c4b25ce\">SetFVarLinearInterpolation</a>(<a class=\"code hl_enumeration\" href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167b\">FVarLinearInterpolation</a> b) { _fvarLinInterp = (EnumIntType) b; }</div>\n-<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span> </div>\n-<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01337.html#a17dfce050325c0054b6e2fa422cb62b1\">  101</a></span>    <a class=\"code hl_enumeration\" href=\"a01337.html#a16ec522dc0398bf1435a912cd669ffb0\">CreasingMethod</a> <a class=\"code hl_function\" href=\"a01337.html#a17dfce050325c0054b6e2fa422cb62b1\">GetCreasingMethod</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (<a class=\"code hl_enumeration\" href=\"a01337.html#a16ec522dc0398bf1435a912cd669ffb0\">CreasingMethod</a>) _creasingMethod; }</div>\n-<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span> </div>\n-<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01337.html#afc9b634a338ac29f528ec02ea0e90f10\">  104</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01337.html#afc9b634a338ac29f528ec02ea0e90f10\">SetCreasingMethod</a>(<a class=\"code hl_enumeration\" href=\"a01337.html#a16ec522dc0398bf1435a912cd669ffb0\">CreasingMethod</a> c) { _creasingMethod = (EnumIntType) c; }</div>\n-<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span> </div>\n-<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01337.html#a17cbc048b495cdae28ce8ab569da02f4\">  107</a></span>    <a class=\"code hl_enumeration\" href=\"a01337.html#a10fe8c2b78e5c59377614876a362c38b\">TriangleSubdivision</a> <a class=\"code hl_function\" href=\"a01337.html#a17cbc048b495cdae28ce8ab569da02f4\">GetTriangleSubdivision</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (<a class=\"code hl_enumeration\" href=\"a01337.html#a10fe8c2b78e5c59377614876a362c38b\">TriangleSubdivision</a>) _triangleSub; }</div>\n-<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span> </div>\n-<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01337.html#a4a4af2e71173f0acc6f26b139ebaa592\">  110</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01337.html#a4a4af2e71173f0acc6f26b139ebaa592\">SetTriangleSubdivision</a>(<a class=\"code hl_enumeration\" href=\"a01337.html#a10fe8c2b78e5c59377614876a362c38b\">TriangleSubdivision</a> t) { _triangleSub = (EnumIntType) t; }</div>\n-<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span> </div>\n-<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span>    <span class=\"comment\">//  Use a small integer type to pack these rather than bitfields:</span></div>\n-<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span>    <span class=\"keyword\">typedef</span> <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> EnumIntType;</div>\n-<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span> </div>\n-<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\">  116</span>    EnumIntType _vtxBoundInterp;</div>\n-<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span>    EnumIntType _fvarLinInterp;</div>\n-<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\">  118</span>    EnumIntType _creasingMethod;</div>\n-<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span>    EnumIntType _triangleSub;</div>\n-<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\">  121</span> </div>\n-<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span>} <span class=\"comment\">// end namespace sdc</span></div>\n-<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span> </div>\n-<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span> </div>\n-<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_SDC_OPTIONS_H */</span><span class=\"preprocessor\"></span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa01337_html\"><div class=\"ttname\"><a href=\"a01337.html\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options</a></div><div class=\"ttdoc\">All supported options applying to subdivision scheme.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00734_source.html#l00051\">options.h:51</a></div></div>\n-<div class=\"ttc\" id=\"aa01337_html_a10fe8c2b78e5c59377614876a362c38b\"><div class=\"ttname\"><a href=\"a01337.html#a10fe8c2b78e5c59377614876a362c38b\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::TriangleSubdivision</a></div><div class=\"ttdeci\">TriangleSubdivision</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00734_source.html#l00072\">options.h:72</a></div></div>\n-<div class=\"ttc\" id=\"aa01337_html_a10fe8c2b78e5c59377614876a362c38ba2dd7b5ddb5288776e48d86049e56e730\"><div class=\"ttname\"><a href=\"a01337.html#a10fe8c2b78e5c59377614876a362c38ba2dd7b5ddb5288776e48d86049e56e730\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::TRI_SUB_CATMARK</a></div><div class=\"ttdeci\">@ TRI_SUB_CATMARK</div><div class=\"ttdoc\">Catmark weights (Catmark scheme only)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00734_source.html#l00073\">options.h:73</a></div></div>\n-<div class=\"ttc\" id=\"aa01337_html_a10fe8c2b78e5c59377614876a362c38baf222ead5fa4875f2ea2794c2d765a87d\"><div class=\"ttname\"><a href=\"a01337.html#a10fe8c2b78e5c59377614876a362c38baf222ead5fa4875f2ea2794c2d765a87d\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::TRI_SUB_SMOOTH</a></div><div class=\"ttdeci\">@ TRI_SUB_SMOOTH</div><div class=\"ttdoc\">&quot;smooth triangle&quot; weights (Catmark scheme only)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00734_source.html#l00075\">options.h:74</a></div></div>\n-<div class=\"ttc\" id=\"aa01337_html_a16ec522dc0398bf1435a912cd669ffb0\"><div class=\"ttname\"><a href=\"a01337.html#a16ec522dc0398bf1435a912cd669ffb0\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::CreasingMethod</a></div><div class=\"ttdeci\">CreasingMethod</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00734_source.html#l00068\">options.h:68</a></div></div>\n-<div class=\"ttc\" id=\"aa01337_html_a16ec522dc0398bf1435a912cd669ffb0a10f2956db48d2975424be2e52ebd544d\"><div class=\"ttname\"><a href=\"a01337.html#a16ec522dc0398bf1435a912cd669ffb0a10f2956db48d2975424be2e52ebd544d\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::CREASE_UNIFORM</a></div><div class=\"ttdeci\">@ CREASE_UNIFORM</div><div class=\"ttdoc\">Catmark rule.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00734_source.html#l00069\">options.h:69</a></div></div>\n-<div class=\"ttc\" id=\"aa01337_html_a16ec522dc0398bf1435a912cd669ffb0a1e31a583663dd65a7b2feffeb24268b5\"><div class=\"ttname\"><a href=\"a01337.html#a16ec522dc0398bf1435a912cd669ffb0a1e31a583663dd65a7b2feffeb24268b5\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::CREASE_CHAIKIN</a></div><div class=\"ttdeci\">@ CREASE_CHAIKIN</div><div class=\"ttdoc\">Chaikin rule.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00734_source.html#l00071\">options.h:70</a></div></div>\n-<div class=\"ttc\" id=\"aa01337_html_a17cbc048b495cdae28ce8ab569da02f4\"><div class=\"ttname\"><a href=\"a01337.html#a17cbc048b495cdae28ce8ab569da02f4\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::GetTriangleSubdivision</a></div><div class=\"ttdeci\">TriangleSubdivision GetTriangleSubdivision() const</div><div class=\"ttdoc\">Get triangle subdivision weights rule (Catmark scheme only !)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00734_source.html#l00107\">options.h:107</a></div></div>\n-<div class=\"ttc\" id=\"aa01337_html_a17dfce050325c0054b6e2fa422cb62b1\"><div class=\"ttname\"><a href=\"a01337.html#a17dfce050325c0054b6e2fa422cb62b1\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::GetCreasingMethod</a></div><div class=\"ttdeci\">CreasingMethod GetCreasingMethod() const</div><div class=\"ttdoc\">Get edge crease rule.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00734_source.html#l00101\">options.h:101</a></div></div>\n-<div class=\"ttc\" id=\"aa01337_html_a28d39a844c3a37ab61d32ab7c6352f09\"><div class=\"ttname\"><a href=\"a01337.html#a28d39a844c3a37ab61d32ab7c6352f09\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::Options</a></div><div class=\"ttdeci\">Options()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00734_source.html#l00079\">options.h:79</a></div></div>\n-<div class=\"ttc\" id=\"aa01337_html_a2b335eb227194b4fc6fcec7f3c4b25ce\"><div class=\"ttname\"><a href=\"a01337.html#a2b335eb227194b4fc6fcec7f3c4b25ce\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::SetFVarLinearInterpolation</a></div><div class=\"ttdeci\">void SetFVarLinearInterpolation(FVarLinearInterpolation b)</div><div class=\"ttdoc\">Set face-varying interpolation rule.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00734_source.html#l00098\">options.h:98</a></div></div>\n-<div class=\"ttc\" id=\"aa01337_html_a4a4af2e71173f0acc6f26b139ebaa592\"><div class=\"ttname\"><a href=\"a01337.html#a4a4af2e71173f0acc6f26b139ebaa592\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::SetTriangleSubdivision</a></div><div class=\"ttdeci\">void SetTriangleSubdivision(TriangleSubdivision t)</div><div class=\"ttdoc\">Set triangle subdivision weights rule (Catmark scheme only !)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00734_source.html#l00110\">options.h:110</a></div></div>\n-<div class=\"ttc\" id=\"aa01337_html_a590338ee8b544306b970a0c1445cd01f\"><div class=\"ttname\"><a href=\"a01337.html#a590338ee8b544306b970a0c1445cd01f\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::GetVtxBoundaryInterpolation</a></div><div class=\"ttdeci\">VtxBoundaryInterpolation GetVtxBoundaryInterpolation() const</div><div class=\"ttdoc\">Get vertex boundary interpolation rule.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00734_source.html#l00089\">options.h:89</a></div></div>\n-<div class=\"ttc\" id=\"aa01337_html_a5b87eaca6ca0833462c9d4ad84df167b\"><div class=\"ttname\"><a href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167b\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::FVarLinearInterpolation</a></div><div class=\"ttdeci\">FVarLinearInterpolation</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00734_source.html#l00060\">options.h:60</a></div></div>\n-<div class=\"ttc\" id=\"aa01337_html_a5b87eaca6ca0833462c9d4ad84df167ba2d0edb4dd10e355f8089b4a7ab1d1d72\"><div class=\"ttname\"><a href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167ba2d0edb4dd10e355f8089b4a7ab1d1d72\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::FVAR_LINEAR_CORNERS_ONLY</a></div><div class=\"ttdeci\">@ FVAR_LINEAR_CORNERS_ONLY</div><div class=\"ttdoc\">sharpen corners only</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00734_source.html#l00062\">options.h:62</a></div></div>\n-<div class=\"ttc\" id=\"aa01337_html_a5b87eaca6ca0833462c9d4ad84df167ba60007144d7e8d50ed9f907badecf8ea1\"><div class=\"ttname\"><a href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167ba60007144d7e8d50ed9f907badecf8ea1\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::FVAR_LINEAR_BOUNDARIES</a></div><div class=\"ttdeci\">@ FVAR_LINEAR_BOUNDARIES</div><div class=\"ttdoc\">sharpen all boundaries (&quot;always sharp&quot;)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00734_source.html#l00065\">options.h:65</a></div></div>\n-<div class=\"ttc\" id=\"aa01337_html_a5b87eaca6ca0833462c9d4ad84df167ba6c323349983f89298e3ae7e06b9cdef6\"><div class=\"ttname\"><a href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167ba6c323349983f89298e3ae7e06b9cdef6\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::FVAR_LINEAR_CORNERS_PLUS2</a></div><div class=\"ttdeci\">@ FVAR_LINEAR_CORNERS_PLUS2</div><div class=\"ttdoc\">(&quot;edge and corner + propagate corner&quot;)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00734_source.html#l00064\">options.h:64</a></div></div>\n-<div class=\"ttc\" id=\"aa01337_html_a5b87eaca6ca0833462c9d4ad84df167ba79d654b94893314766a372c630f142c6\"><div class=\"ttname\"><a href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167ba79d654b94893314766a372c630f142c6\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::FVAR_LINEAR_CORNERS_PLUS1</a></div><div class=\"ttdeci\">@ FVAR_LINEAR_CORNERS_PLUS1</div><div class=\"ttdoc\">(&quot;edge corner&quot;)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00734_source.html#l00063\">options.h:63</a></div></div>\n-<div class=\"ttc\" id=\"aa01337_html_a5b87eaca6ca0833462c9d4ad84df167ba8d4df083104973fad1479109988e0387\"><div class=\"ttname\"><a href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167ba8d4df083104973fad1479109988e0387\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::FVAR_LINEAR_ALL</a></div><div class=\"ttdeci\">@ FVAR_LINEAR_ALL</div><div class=\"ttdoc\">bilinear interpolation (&quot;bilinear&quot;)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00734_source.html#l00067\">options.h:66</a></div></div>\n-<div class=\"ttc\" id=\"aa01337_html_a5b87eaca6ca0833462c9d4ad84df167bac91a565721cd973b4d3cd3c697dda50f\"><div class=\"ttname\"><a href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167bac91a565721cd973b4d3cd3c697dda50f\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::FVAR_LINEAR_NONE</a></div><div class=\"ttdeci\">@ FVAR_LINEAR_NONE</div><div class=\"ttdoc\">smooth everywhere (&quot;edge only&quot;)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00734_source.html#l00061\">options.h:61</a></div></div>\n-<div class=\"ttc\" id=\"aa01337_html_a70997d63dc747e55154e2ab4b4354141\"><div class=\"ttname\"><a href=\"a01337.html#a70997d63dc747e55154e2ab4b4354141\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::SetVtxBoundaryInterpolation</a></div><div class=\"ttdeci\">void SetVtxBoundaryInterpolation(VtxBoundaryInterpolation b)</div><div class=\"ttdoc\">Set vertex boundary interpolation rule.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00734_source.html#l00092\">options.h:92</a></div></div>\n-<div class=\"ttc\" id=\"aa01337_html_acab24306782f101827103b87bbe4b8dd\"><div class=\"ttname\"><a href=\"a01337.html#acab24306782f101827103b87bbe4b8dd\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::GetFVarLinearInterpolation</a></div><div class=\"ttdeci\">FVarLinearInterpolation GetFVarLinearInterpolation() const</div><div class=\"ttdoc\">Get face-varying interpolation rule.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00734_source.html#l00095\">options.h:95</a></div></div>\n-<div class=\"ttc\" id=\"aa01337_html_acbf78f1a6abfc8db080ef7fb3c3f417e\"><div class=\"ttname\"><a href=\"a01337.html#acbf78f1a6abfc8db080ef7fb3c3f417e\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::VtxBoundaryInterpolation</a></div><div class=\"ttdeci\">VtxBoundaryInterpolation</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00734_source.html#l00053\">options.h:53</a></div></div>\n-<div class=\"ttc\" id=\"aa01337_html_acbf78f1a6abfc8db080ef7fb3c3f417ea5d15ed470f1f0ecce0549282de54a3ba\"><div class=\"ttname\"><a href=\"a01337.html#acbf78f1a6abfc8db080ef7fb3c3f417ea5d15ed470f1f0ecce0549282de54a3ba\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::VTX_BOUNDARY_NONE</a></div><div class=\"ttdeci\">@ VTX_BOUNDARY_NONE</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00734_source.html#l00055\">options.h:54</a></div></div>\n-<div class=\"ttc\" id=\"aa01337_html_acbf78f1a6abfc8db080ef7fb3c3f417ea9240987283549b42eeb262f088b68fdf\"><div class=\"ttname\"><a href=\"a01337.html#acbf78f1a6abfc8db080ef7fb3c3f417ea9240987283549b42eeb262f088b68fdf\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::VTX_BOUNDARY_EDGE_ONLY</a></div><div class=\"ttdeci\">@ VTX_BOUNDARY_EDGE_ONLY</div><div class=\"ttdoc\">all boundary edges sharpened and interpolated</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00734_source.html#l00056\">options.h:56</a></div></div>\n-<div class=\"ttc\" id=\"aa01337_html_acbf78f1a6abfc8db080ef7fb3c3f417eac6e5f52f358d3b6d62cc2b708a5a8757\"><div class=\"ttname\"><a href=\"a01337.html#acbf78f1a6abfc8db080ef7fb3c3f417eac6e5f52f358d3b6d62cc2b708a5a8757\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::VTX_BOUNDARY_EDGE_AND_CORNER</a></div><div class=\"ttdeci\">@ VTX_BOUNDARY_EDGE_AND_CORNER</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00734_source.html#l00059\">options.h:57</a></div></div>\n-<div class=\"ttc\" id=\"aa01337_html_afc9b634a338ac29f528ec02ea0e90f10\"><div class=\"ttname\"><a href=\"a01337.html#afc9b634a338ac29f528ec02ea0e90f10\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::SetCreasingMethod</a></div><div class=\"ttdeci\">void SetCreasingMethod(CreasingMethod c)</div><div class=\"ttdoc\">Set edge crease rule.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00734_source.html#l00104\">options.h:104</a></div></div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>}  <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>    </div>\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span> </div>\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_MTL_PATCH_SHADER_SOURCE</span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa00973_html_a1d1cfd8ffb84e947f82999c682b666a7\"><div class=\"ttname\"><a href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::Type</a></div><div class=\"ttdeci\">Type</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00857_source.html#l00048\">patchDescriptor.h:48</a></div></div>\n+<div class=\"ttc\" id=\"aa01301_html\"><div class=\"ttname\"><a href=\"a01301.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchShaderSource</a></div><div class=\"ttdoc\">Provides shader source which can be used by client code.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00734_source.html#l00040\">mtlPatchShaderSource.h:40</a></div></div>\n+<div class=\"ttc\" id=\"aa01301_html_a20cb122b561de15ed3b90d7e4f5176d2\"><div class=\"ttname\"><a href=\"a01301.html#a20cb122b561de15ed3b90d7e4f5176d2\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchShaderSource::GetVertexShaderSource</a></div><div class=\"ttdeci\">static std::string GetVertexShaderSource(Far::PatchDescriptor::Type type)</div></div>\n+<div class=\"ttc\" id=\"aa01301_html_a230efce26a4754c94dbeedd435fe471b\"><div class=\"ttname\"><a href=\"a01301.html#a230efce26a4754c94dbeedd435fe471b\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchShaderSource::GetPatchDrawingShaderSource</a></div><div class=\"ttdeci\">static std::string GetPatchDrawingShaderSource()</div><div class=\"ttdoc\">Returns shader source which can be used while drawing piecewise parametric patches resulting from sub...</div></div>\n+<div class=\"ttc\" id=\"aa01301_html_a55538e8657b191955044d983cf1b3649\"><div class=\"ttname\"><a href=\"a01301.html#a55538e8657b191955044d983cf1b3649\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchShaderSource::GetHullShaderSource</a></div><div class=\"ttdeci\">static std::string GetHullShaderSource(Far::PatchDescriptor::Type type, Far::PatchDescriptor::Type fvarType)</div></div>\n+<div class=\"ttc\" id=\"aa01301_html_a733309309efe67ba5d1acd7d0a9ff6ca\"><div class=\"ttname\"><a href=\"a01301.html#a733309309efe67ba5d1acd7d0a9ff6ca\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchShaderSource::GetDomainShaderSource</a></div><div class=\"ttdeci\">static std::string GetDomainShaderSource(Far::PatchDescriptor::Type type)</div></div>\n+<div class=\"ttc\" id=\"aa01301_html_a7b51f245191a47026eaedcde63850f79\"><div class=\"ttname\"><a href=\"a01301.html#a7b51f245191a47026eaedcde63850f79\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchShaderSource::GetVertexShaderSource</a></div><div class=\"ttdeci\">static std::string GetVertexShaderSource(Far::PatchDescriptor::Type type, Far::PatchDescriptor::Type fvarType)</div><div class=\"ttdoc\">Deprecated.</div></div>\n+<div class=\"ttc\" id=\"aa01301_html_a85470a02e193180c7d9c51b2d65962bb\"><div class=\"ttname\"><a href=\"a01301.html#a85470a02e193180c7d9c51b2d65962bb\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchShaderSource::GetDomainShaderSource</a></div><div class=\"ttdeci\">static std::string GetDomainShaderSource(Far::PatchDescriptor::Type type, Far::PatchDescriptor::Type fvarType)</div></div>\n+<div class=\"ttc\" id=\"aa01301_html_a97a09fe0a378798cafdff72e115e373f\"><div class=\"ttname\"><a href=\"a01301.html#a97a09fe0a378798cafdff72e115e373f\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchShaderSource::GetHullShaderSource</a></div><div class=\"ttdeci\">static std::string GetHullShaderSource(Far::PatchDescriptor::Type type)</div></div>\n+<div class=\"ttc\" id=\"aa01301_html_ad41c6e1dc4a5cd6ee4f33fc5a8e15d1d\"><div class=\"ttname\"><a href=\"a01301.html#ad41c6e1dc4a5cd6ee4f33fc5a8e15d1d\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchShaderSource::GetPatchBasisShaderSource</a></div><div class=\"ttdeci\">static std::string GetPatchBasisShaderSource()</div><div class=\"ttdoc\">Returns shader source which can be used to evaluate position and first and second derivatives on piec...</div></div>\n+<div class=\"ttc\" id=\"aa01301_html_ad5f427d2655d384980715874209345e7\"><div class=\"ttname\"><a href=\"a01301.html#ad5f427d2655d384980715874209345e7\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchShaderSource::GetCommonShaderSource</a></div><div class=\"ttdeci\">static std::string GetCommonShaderSource()</div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_f61368944c63c2c1f8c69bc232e59c39.html\">sdc</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00734.html\">options.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00734.html\">mtlPatchShaderSource.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-options.h\n+mtlPatchShaderSource.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2014 DreamWorks Animation LLC.\n+2// Copyright 2013 Pixar\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -23,200 +23,103 @@\n 17//\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n-24#ifndef OPENSUBDIV3_SDC_OPTIONS_H\n-25#define OPENSUBDIV3_SDC_OPTIONS_H\n-26\n-27#include \"../version.h\"\n-28\n-29namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-30namespace OPENSUBDIV_VERSION {\n+24\n+25#ifndef OPENSUBDIV3_OSD_MTL_PATCH_SHADER_SOURCE_H\n+26#define OPENSUBDIV3_OSD_MTL_PATCH_SHADER_SOURCE_H\n+27\n+28#import \"../version.h\"\n+29\n+30#import \"../far/patchDescriptor.h\"\n 31\n-32namespace Sdc {\n+32#import <string>\n 33\n-50\n-_\b5_\b1class _\bO_\bp_\bt_\bi_\bo_\bn_\bs {\n-52public:\n-_\b5_\b3 enum _\bV_\bt_\bx_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn {\n-54 _\bV_\bT_\bX_\b__\bB_\bO_\bU_\bN_\bD_\bA_\bR_\bY_\b__\bN_\bO_\bN_\bE = 0,\n-_\b5_\b6 _\bV_\bT_\bX_\b__\bB_\bO_\bU_\bN_\bD_\bA_\bR_\bY_\b__\bE_\bD_\bG_\bE_\b__\bO_\bN_\bL_\bY,\n-57 _\bV_\bT_\bX_\b__\bB_\bO_\bU_\bN_\bD_\bA_\bR_\bY_\b__\bE_\bD_\bG_\bE_\b__\bA_\bN_\bD_\b__\bC_\bO_\bR_\bN_\bE_\bR\n-_\b5_\b9 };\n-_\b6_\b0 enum _\bF_\bV_\ba_\br_\bL_\bi_\bn_\be_\ba_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn {\n-_\b6_\b1 _\bF_\bV_\bA_\bR_\b__\bL_\bI_\bN_\bE_\bA_\bR_\b__\bN_\bO_\bN_\bE = 0,\n-_\b6_\b2 _\bF_\bV_\bA_\bR_\b__\bL_\bI_\bN_\bE_\bA_\bR_\b__\bC_\bO_\bR_\bN_\bE_\bR_\bS_\b__\bO_\bN_\bL_\bY,\n-_\b6_\b3 _\bF_\bV_\bA_\bR_\b__\bL_\bI_\bN_\bE_\bA_\bR_\b__\bC_\bO_\bR_\bN_\bE_\bR_\bS_\b__\bP_\bL_\bU_\bS_\b1,\n-_\b6_\b4 _\bF_\bV_\bA_\bR_\b__\bL_\bI_\bN_\bE_\bA_\bR_\b__\bC_\bO_\bR_\bN_\bE_\bR_\bS_\b__\bP_\bL_\bU_\bS_\b2,\n-_\b6_\b5 _\bF_\bV_\bA_\bR_\b__\bL_\bI_\bN_\bE_\bA_\bR_\b__\bB_\bO_\bU_\bN_\bD_\bA_\bR_\bI_\bE_\bS,\n-66 _\bF_\bV_\bA_\bR_\b__\bL_\bI_\bN_\bE_\bA_\bR_\b__\bA_\bL_\bL\n-_\b6_\b7 };\n-_\b6_\b8 enum _\bC_\br_\be_\ba_\bs_\bi_\bn_\bg_\bM_\be_\bt_\bh_\bo_\bd {\n-_\b6_\b9 _\bC_\bR_\bE_\bA_\bS_\bE_\b__\bU_\bN_\bI_\bF_\bO_\bR_\bM = 0,\n-70 _\bC_\bR_\bE_\bA_\bS_\bE_\b__\bC_\bH_\bA_\bI_\bK_\bI_\bN\n-_\b7_\b1 };\n-_\b7_\b2 enum _\bT_\br_\bi_\ba_\bn_\bg_\bl_\be_\bS_\bu_\bb_\bd_\bi_\bv_\bi_\bs_\bi_\bo_\bn {\n-_\b7_\b3 _\bT_\bR_\bI_\b__\bS_\bU_\bB_\b__\bC_\bA_\bT_\bM_\bA_\bR_\bK = 0,\n-74 _\bT_\bR_\bI_\b__\bS_\bU_\bB_\b__\bS_\bM_\bO_\bO_\bT_\bH\n-_\b7_\b5 };\n-76\n-77public:\n-78\n-_\b7_\b9 _\bO_\bp_\bt_\bi_\bo_\bn_\bs() : _vtxBoundInterp(_\bV_\bT_\bX_\b__\bB_\bO_\bU_\bN_\bD_\bA_\bR_\bY_\b__\bN_\bO_\bN_\bE),\n-80 _fvarLinInterp(_\bF_\bV_\bA_\bR_\b__\bL_\bI_\bN_\bE_\bA_\bR_\b__\bA_\bL_\bL),\n-81 _creasingMethod(_\bC_\bR_\bE_\bA_\bS_\bE_\b__\bU_\bN_\bI_\bF_\bO_\bR_\bM),\n-82 _triangleSub(_\bT_\bR_\bI_\b__\bS_\bU_\bB_\b__\bC_\bA_\bT_\bM_\bA_\bR_\bK) { }\n+34namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+35namespace OPENSUBDIV_VERSION {\n+36\n+37namespace Osd {\n+38\n+_\b4_\b0class _\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be {\n+41public:\n+_\b4_\b5 static std::string _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bB_\ba_\bs_\bi_\bs_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be();\n+46\n+_\b5_\b0 static std::string _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bD_\br_\ba_\bw_\bi_\bn_\bg_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be();\n+51\n+59\n+_\b6_\b0 static std::string _\bG_\be_\bt_\bC_\bo_\bm_\bm_\bo_\bn_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be();\n+61\n+_\b6_\b2 static std::string _\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be(_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bT_\by_\bp_\be type);\n+63\n+_\b6_\b4 static std::string _\bG_\be_\bt_\bH_\bu_\bl_\bl_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be(_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bT_\by_\bp_\be type);\n+65\n+_\b6_\b6 static std::string _\bG_\be_\bt_\bD_\bo_\bm_\ba_\bi_\bn_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be(_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bT_\by_\bp_\be type);\n+67\n+_\b7_\b2 static std::string _\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be(\n+73 _\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bT_\by_\bp_\be type,\n+74 _\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bT_\by_\bp_\be fvarType);\n+_\b7_\b5 static std::string _\bG_\be_\bt_\bH_\bu_\bl_\bl_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be(\n+76 _\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bT_\by_\bp_\be type,\n+77 _\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bT_\by_\bp_\be fvarType);\n+_\b7_\b8 static std::string _\bG_\be_\bt_\bD_\bo_\bm_\ba_\bi_\bn_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be(\n+79 _\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bT_\by_\bp_\be type,\n+80 _\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bT_\by_\bp_\be fvarType);\n+81\n 83\n-84 //\n-85 // Trivial get/set methods:\n-86 //\n+84};\n+85\n+86} // end namespace Osd\n 87\n-_\b8_\b9 _\bV_\bt_\bx_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn _\bG_\be_\bt_\bV_\bt_\bx_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn() const { return\n-(_\bV_\bt_\bx_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn) _vtxBoundInterp; }\n+88} // end namespace OPENSUBDIV_VERSION\n+89using namespace OPENSUBDIV_VERSION;\n 90\n-_\b9_\b2 void _\bS_\be_\bt_\bV_\bt_\bx_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn(_\bV_\bt_\bx_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn b)\n-{ _vtxBoundInterp = (EnumIntType) b; }\n-93\n-_\b9_\b5 _\bF_\bV_\ba_\br_\bL_\bi_\bn_\be_\ba_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn _\bG_\be_\bt_\bF_\bV_\ba_\br_\bL_\bi_\bn_\be_\ba_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn() const { return\n-(_\bF_\bV_\ba_\br_\bL_\bi_\bn_\be_\ba_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn) _fvarLinInterp; }\n-96\n-_\b9_\b8 void _\bS_\be_\bt_\bF_\bV_\ba_\br_\bL_\bi_\bn_\be_\ba_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn(_\bF_\bV_\ba_\br_\bL_\bi_\bn_\be_\ba_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn b) { _fvarLinInterp\n-= (EnumIntType) b; }\n-99\n-_\b1_\b0_\b1 _\bC_\br_\be_\ba_\bs_\bi_\bn_\bg_\bM_\be_\bt_\bh_\bo_\bd _\bG_\be_\bt_\bC_\br_\be_\ba_\bs_\bi_\bn_\bg_\bM_\be_\bt_\bh_\bo_\bd() const { return (_\bC_\br_\be_\ba_\bs_\bi_\bn_\bg_\bM_\be_\bt_\bh_\bo_\bd)\n-_creasingMethod; }\n-102\n-_\b1_\b0_\b4 void _\bS_\be_\bt_\bC_\br_\be_\ba_\bs_\bi_\bn_\bg_\bM_\be_\bt_\bh_\bo_\bd(_\bC_\br_\be_\ba_\bs_\bi_\bn_\bg_\bM_\be_\bt_\bh_\bo_\bd c) { _creasingMethod = (EnumIntType)\n-c; }\n-105\n-_\b1_\b0_\b7 _\bT_\br_\bi_\ba_\bn_\bg_\bl_\be_\bS_\bu_\bb_\bd_\bi_\bv_\bi_\bs_\bi_\bo_\bn _\bG_\be_\bt_\bT_\br_\bi_\ba_\bn_\bg_\bl_\be_\bS_\bu_\bb_\bd_\bi_\bv_\bi_\bs_\bi_\bo_\bn() const { return\n-(_\bT_\br_\bi_\ba_\bn_\bg_\bl_\be_\bS_\bu_\bb_\bd_\bi_\bv_\bi_\bs_\bi_\bo_\bn) _triangleSub; }\n-108\n-_\b1_\b1_\b0 void _\bS_\be_\bt_\bT_\br_\bi_\ba_\bn_\bg_\bl_\be_\bS_\bu_\bb_\bd_\bi_\bv_\bi_\bs_\bi_\bo_\bn(_\bT_\br_\bi_\ba_\bn_\bg_\bl_\be_\bS_\bu_\bb_\bd_\bi_\bv_\bi_\bs_\bi_\bo_\bn t) { _triangleSub =\n-(EnumIntType) t; }\n-111\n-112private:\n-113 // Use a small integer type to pack these rather than bitfields:\n-114 typedef unsigned char EnumIntType;\n-115\n-116 EnumIntType _vtxBoundInterp;\n-117 EnumIntType _fvarLinInterp;\n-118 EnumIntType _creasingMethod;\n-119 EnumIntType _triangleSub;\n-120};\n-121\n-122} // end namespace sdc\n-123\n-124} // end namespace OPENSUBDIV_VERSION\n-125using namespace OPENSUBDIV_VERSION;\n-126} // end namespace OpenSubdiv\n-127\n-128#endif /* OPENSUBDIV3_SDC_OPTIONS_H */\n+91} // end namespace OpenSubdiv\n+92\n+93#endif // OPENSUBDIV3_OSD_MTL_PATCH_SHADER_SOURCE\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n-All supported options applying to subdivision scheme.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b5_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bT_\br_\bi_\ba_\bn_\bg_\bl_\be_\bS_\bu_\bb_\bd_\bi_\bv_\bi_\bs_\bi_\bo_\bn\n-TriangleSubdivision\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b7_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bT_\bR_\bI_\b__\bS_\bU_\bB_\b__\bC_\bA_\bT_\bM_\bA_\bR_\bK\n-@ TRI_SUB_CATMARK\n-Catmark weights (Catmark scheme only)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b7_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bT_\bR_\bI_\b__\bS_\bU_\bB_\b__\bS_\bM_\bO_\bO_\bT_\bH\n-@ TRI_SUB_SMOOTH\n-\"smooth triangle\" weights (Catmark scheme only)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b7_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bC_\br_\be_\ba_\bs_\bi_\bn_\bg_\bM_\be_\bt_\bh_\bo_\bd\n-CreasingMethod\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b6_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bC_\bR_\bE_\bA_\bS_\bE_\b__\bU_\bN_\bI_\bF_\bO_\bR_\bM\n-@ CREASE_UNIFORM\n-Catmark rule.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b6_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bC_\bR_\bE_\bA_\bS_\bE_\b__\bC_\bH_\bA_\bI_\bK_\bI_\bN\n-@ CREASE_CHAIKIN\n-Chaikin rule.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b7_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bG_\be_\bt_\bT_\br_\bi_\ba_\bn_\bg_\bl_\be_\bS_\bu_\bb_\bd_\bi_\bv_\bi_\bs_\bi_\bo_\bn\n-TriangleSubdivision GetTriangleSubdivision() const\n-Get triangle subdivision weights rule (Catmark scheme only !)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b1_\b0_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bG_\be_\bt_\bC_\br_\be_\ba_\bs_\bi_\bn_\bg_\bM_\be_\bt_\bh_\bo_\bd\n-CreasingMethod GetCreasingMethod() const\n-Get edge crease rule.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b1_\b0_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n-Options()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b7_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bS_\be_\bt_\bF_\bV_\ba_\br_\bL_\bi_\bn_\be_\ba_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-void SetFVarLinearInterpolation(FVarLinearInterpolation b)\n-Set face-varying interpolation rule.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b9_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bS_\be_\bt_\bT_\br_\bi_\ba_\bn_\bg_\bl_\be_\bS_\bu_\bb_\bd_\bi_\bv_\bi_\bs_\bi_\bo_\bn\n-void SetTriangleSubdivision(TriangleSubdivision t)\n-Set triangle subdivision weights rule (Catmark scheme only !)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b1_\b1_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bG_\be_\bt_\bV_\bt_\bx_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-VtxBoundaryInterpolation GetVtxBoundaryInterpolation() const\n-Get vertex boundary interpolation rule.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b8_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bF_\bV_\ba_\br_\bL_\bi_\bn_\be_\ba_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-FVarLinearInterpolation\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b6_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bF_\bV_\bA_\bR_\b__\bL_\bI_\bN_\bE_\bA_\bR_\b__\bC_\bO_\bR_\bN_\bE_\bR_\bS_\b__\bO_\bN_\bL_\bY\n-@ FVAR_LINEAR_CORNERS_ONLY\n-sharpen corners only\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b6_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bF_\bV_\bA_\bR_\b__\bL_\bI_\bN_\bE_\bA_\bR_\b__\bB_\bO_\bU_\bN_\bD_\bA_\bR_\bI_\bE_\bS\n-@ FVAR_LINEAR_BOUNDARIES\n-sharpen all boundaries (\"always sharp\")\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b6_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bF_\bV_\bA_\bR_\b__\bL_\bI_\bN_\bE_\bA_\bR_\b__\bC_\bO_\bR_\bN_\bE_\bR_\bS_\b__\bP_\bL_\bU_\bS_\b2\n-@ FVAR_LINEAR_CORNERS_PLUS2\n-(\"edge and corner + propagate corner\")\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b6_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bF_\bV_\bA_\bR_\b__\bL_\bI_\bN_\bE_\bA_\bR_\b__\bC_\bO_\bR_\bN_\bE_\bR_\bS_\b__\bP_\bL_\bU_\bS_\b1\n-@ FVAR_LINEAR_CORNERS_PLUS1\n-(\"edge corner\")\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b6_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bF_\bV_\bA_\bR_\b__\bL_\bI_\bN_\bE_\bA_\bR_\b__\bA_\bL_\bL\n-@ FVAR_LINEAR_ALL\n-bilinear interpolation (\"bilinear\")\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b6_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bF_\bV_\bA_\bR_\b__\bL_\bI_\bN_\bE_\bA_\bR_\b__\bN_\bO_\bN_\bE\n-@ FVAR_LINEAR_NONE\n-smooth everywhere (\"edge only\")\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b6_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bS_\be_\bt_\bV_\bt_\bx_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-void SetVtxBoundaryInterpolation(VtxBoundaryInterpolation b)\n-Set vertex boundary interpolation rule.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b9_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bG_\be_\bt_\bF_\bV_\ba_\br_\bL_\bi_\bn_\be_\ba_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-FVarLinearInterpolation GetFVarLinearInterpolation() const\n-Get face-varying interpolation rule.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b9_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bV_\bt_\bx_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-VtxBoundaryInterpolation\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b5_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bV_\bT_\bX_\b__\bB_\bO_\bU_\bN_\bD_\bA_\bR_\bY_\b__\bN_\bO_\bN_\bE\n-@ VTX_BOUNDARY_NONE\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b5_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bV_\bT_\bX_\b__\bB_\bO_\bU_\bN_\bD_\bA_\bR_\bY_\b__\bE_\bD_\bG_\bE_\b__\bO_\bN_\bL_\bY\n-@ VTX_BOUNDARY_EDGE_ONLY\n-all boundary edges sharpened and interpolated\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b5_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bV_\bT_\bX_\b__\bB_\bO_\bU_\bN_\bD_\bA_\bR_\bY_\b__\bE_\bD_\bG_\bE_\b__\bA_\bN_\bD_\b__\bC_\bO_\bR_\bN_\bE_\bR\n-@ VTX_BOUNDARY_EDGE_AND_CORNER\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b5_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bS_\be_\bt_\bC_\br_\be_\ba_\bs_\bi_\bn_\bg_\bM_\be_\bt_\bh_\bo_\bd\n-void SetCreasingMethod(CreasingMethod c)\n-Set edge crease rule.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b1_\b0_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bT_\by_\bp_\be\n+Type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b4_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be\n+Provides shader source which can be used by client code.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b._\bh_\b:_\b4_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b:_\b:\n+_\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be\n+static std::string GetVertexShaderSource(Far::PatchDescriptor::Type type)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b:_\b:\n+_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bD_\br_\ba_\bw_\bi_\bn_\bg_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be\n+static std::string GetPatchDrawingShaderSource()\n+Returns shader source which can be used while drawing piecewise parametric\n+patches resulting from sub...\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b:_\b:_\bG_\be_\bt_\bH_\bu_\bl_\bl_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be\n+static std::string GetHullShaderSource(Far::PatchDescriptor::Type type, Far::\n+PatchDescriptor::Type fvarType)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b:_\b:\n+_\bG_\be_\bt_\bD_\bo_\bm_\ba_\bi_\bn_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be\n+static std::string GetDomainShaderSource(Far::PatchDescriptor::Type type)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b:_\b:\n+_\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be\n+static std::string GetVertexShaderSource(Far::PatchDescriptor::Type type, Far::\n+PatchDescriptor::Type fvarType)\n+Deprecated.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b:_\b:\n+_\bG_\be_\bt_\bD_\bo_\bm_\ba_\bi_\bn_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be\n+static std::string GetDomainShaderSource(Far::PatchDescriptor::Type type, Far::\n+PatchDescriptor::Type fvarType)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b:_\b:_\bG_\be_\bt_\bH_\bu_\bl_\bl_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be\n+static std::string GetHullShaderSource(Far::PatchDescriptor::Type type)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b:_\b:\n+_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bB_\ba_\bs_\bi_\bs_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be\n+static std::string GetPatchBasisShaderSource()\n+Returns shader source which can be used to evaluate position and first and\n+second derivatives on piec...\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b:_\b:\n+_\bG_\be_\bt_\bC_\bo_\bm_\bm_\bo_\bn_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be\n+static std::string GetCommonShaderSource()\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bs_\bd_\bc\n-    * _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bm_\bt_\bl_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00737.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00737.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/sdc/catmarkScheme.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/osd/d3d11Mesh.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -88,38 +88,43 @@\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n-<a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">catmarkScheme.h File Reference</div></div>\n+<a href=\"#namespaces\">Namespaces</a> &#124;\n+<a href=\"#typedef-members\">Typedefs</a>  </div>\n+  <div class=\"headertitle\"><div class=\"title\">d3d11Mesh.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00743_source.html\">../sdc/scheme.h</a>&quot;</code><br />\n-<code>#include &lt;cassert&gt;</code><br />\n-<code>#include &lt;cmath&gt;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00704_source.html\">../osd/mesh.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00710_source.html\">../osd/d3d11PatchTable.h</a>&quot;</code><br />\n </div>\n <p><a href=\"a00737_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00913\" id=\"r_a00913\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00913.html\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc</a></td></tr>\n+<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+</table><table class=\"memberdecls\">\n+<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"typedef-members\" name=\"typedef-members\"></a>\n+Typedefs</h2></td></tr>\n+<tr class=\"memitem:ae5c8e80d05d6eaee105d8eecfa9ab609\" id=\"r_ae5c8e80d05d6eaee105d8eecfa9ab609\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef <a class=\"el\" href=\"a01269.html\">MeshInterface</a>&lt; <a class=\"el\" href=\"a01209.html\">D3D11PatchTable</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html#ae5c8e80d05d6eaee105d8eecfa9ab609\">D3D11MeshInterface</a></td></tr>\n+<tr class=\"separator:ae5c8e80d05d6eaee105d8eecfa9ab609\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_f61368944c63c2c1f8c69bc232e59c39.html\">sdc</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00737.html\">catmarkScheme.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00737.html\">d3d11Mesh.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,22 +1,24 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-catmarkScheme.h File Reference\n+_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bT_\by_\bp_\be_\bd_\be_\bf_\bs\n+d3d11Mesh.h File Reference\n #include \"../version.h\"\n-#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bs_\bc_\bh_\be_\bm_\be_\b._\bh\"\n-#include <cassert>\n-#include <cmath>\n+#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bm_\be_\bs_\bh_\b._\bh\"\n+#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bd_\b3_\bd_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n+\u00a0\n+T\bTy\byp\bpe\bed\bde\bef\bfs\bs\n+typedef _\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be< _\bD_\b3_\bD_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be >\u00a0 _\bD_\b3_\bD_\b1_\b1_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bs_\bd_\bc\n-    * _\bc_\ba_\bt_\bm_\ba_\br_\bk_\bS_\bc_\bh_\be_\bm_\be_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bd_\b3_\bd_\b1_\b1_\bM_\be_\bs_\bh_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00737_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00737_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/sdc/catmarkScheme.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/osd/d3d11Mesh.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">catmarkScheme.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">d3d11Mesh.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00737.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2014 DreamWorks Animation LLC.</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2013 Pixar</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -118,566 +118,46 @@\n <div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_SDC_CATMARK_SCHEME_H</span></div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#define OPENSUBDIV3_SDC_CATMARK_SCHEME_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span> </div>\n-<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span> </div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#include &quot;../sdc/scheme.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span> </div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &lt;cassert&gt;</span></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &lt;cmath&gt;</span></div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">namespace </span>Sdc {</div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span> </div>\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"comment\">//  Specializations for Scheme&lt;SCHEME_CATMARK&gt;:</span></div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_D3D11MESH_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_D3D11MESH_H</span></div>\n+<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n+<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../osd/mesh.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../osd/d3d11PatchTable.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span> </div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span> </div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"keyword\">namespace </span>Osd {</div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span> </div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html#ae5c8e80d05d6eaee105d8eecfa9ab609\">   38</a></span><span class=\"keyword\">typedef</span> <a class=\"code hl_class\" href=\"a01269.html\">MeshInterface&lt;D3D11PatchTable&gt;</a> <a class=\"code hl_typedef\" href=\"a00912.html#ae5c8e80d05d6eaee105d8eecfa9ab609\">D3D11MeshInterface</a>;</div>\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span> </div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span> </div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span>} <span class=\"comment\">// end namespace Osd</span></div>\n <div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span> </div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span><span class=\"comment\">//  Catmark traits:</span></div>\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#a0e02d297f903bddcf8bc10c0ae17ad3c\">   47</a></span><span class=\"keyword\">inline</span> <a class=\"code hl_enumeration\" href=\"a00913.html#a61ef2f8f765ba17f8036bcc0f0fa887b\">Split</a> <a class=\"code hl_function\" href=\"a01341.html#a14b97ddde5fba31ca7f933508ee649da\">Scheme&lt;SCHEME_CATMARK&gt;::GetTopologicalSplitType</a>() { <span class=\"keywordflow\">return</span> <a class=\"code hl_enumvalue\" href=\"a00913.html#a61ef2f8f765ba17f8036bcc0f0fa887ba56eed514f6a5971f198c9e421054b513\">SPLIT_TO_QUADS</a>; }</div>\n-<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span> </div>\n-<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#a36744b2ac3801874da987d36851be86c\">   50</a></span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01341.html#a531004716c07aad5436cb2db27e1ec24\">Scheme&lt;SCHEME_CATMARK&gt;::GetRegularFaceSize</a>() { <span class=\"keywordflow\">return</span> 4; }</div>\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span> </div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#ad46ad6c30664729d163c5fcc20cdf917\">   53</a></span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01341.html#a8f7e983b2195ac6b388c7a6db17f8cb0\">Scheme&lt;SCHEME_CATMARK&gt;::GetRegularVertexValence</a>() { <span class=\"keywordflow\">return</span> 4; }</div>\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span> </div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n-<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#a953430a884584e984c0afbb058091be1\">   56</a></span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01341.html#a73cf51e4315ca86e5e0a3954c92f8f74\">Scheme&lt;SCHEME_CATMARK&gt;::GetLocalNeighborhoodSize</a>() { <span class=\"keywordflow\">return</span> 1; }</div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span> </div>\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span> </div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span><span class=\"comment\">//  Masks for edge-vertices:  the hard Crease mask does not need to be specialized</span></div>\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span><span class=\"comment\">//  (simply the midpoint), so all that is left is the Smooth case:</span></div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span><span class=\"comment\">//  The Smooth mask is complicated by the need to support the &quot;triangle subdivision&quot;</span></div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span><span class=\"comment\">//  option, which applies different weighting in the presence of triangles.  It is</span></div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span><span class=\"comment\">//  up for debate as to whether this is useful or not -- we may be able to deprecate</span></div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span><span class=\"comment\">//  this option.</span></div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> EDGE, <span class=\"keyword\">typename</span> MASK&gt;</div>\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00071\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#a16cbaf7f173cf2fdc02c992d3a31c925\">   71</a></span><a class=\"code hl_function\" href=\"a01341.html#a059f5c2c9193be58be31955e987a0600\">Scheme&lt;SCHEME_CATMARK&gt;::assignSmoothMaskForEdge</a>(EDGE <span class=\"keyword\">const</span>&amp; edge, MASK&amp; mask)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span> </div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span>    <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> MASK::Weight Weight;</div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span> </div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span>    <span class=\"keywordtype\">int</span> faceCount = edge.GetNumFaces();</div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span> </div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span>    mask.SetNumVertexWeights(2);</div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span>    mask.SetNumEdgeWeights(0);</div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>    mask.SetNumFaceWeights(faceCount);</div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span>    mask.SetFaceWeightsForFaceCenters(<span class=\"keyword\">true</span>);</div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span> </div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>    <span class=\"comment\">//  Determine if we need to inspect incident faces and apply alternate weighting for</span></div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span>    <span class=\"comment\">//  triangles -- and if so, determine which of the two are triangles.</span></div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>    <span class=\"keywordtype\">bool</span> face0IsTri = <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>    <span class=\"keywordtype\">bool</span> face1IsTri = <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>    <span class=\"keywordtype\">bool</span> useTriangleOption = (_options.GetTriangleSubdivision() == <a class=\"code hl_enumvalue\" href=\"a01337.html#a10fe8c2b78e5c59377614876a362c38baf222ead5fa4875f2ea2794c2d765a87d\">Options::TRI_SUB_SMOOTH</a>);</div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>    <span class=\"keywordflow\">if</span> (useTriangleOption) {</div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>        <span class=\"keywordflow\">if</span> (faceCount == 2) {</div>\n-<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>            <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>            <span class=\"comment\">//  Ideally we want to avoid this inspection when we have already subdivided at</span></div>\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span>            <span class=\"comment\">//  least once -- need something in the Edge interface to help avoid this, e.g.</span></div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>            <span class=\"comment\">//  an IsRegular() query, the subdivision level...</span></div>\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span>            <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span>            <span class=\"keywordtype\">int</span> vertsPerFace[2];</div>\n-<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>            edge.GetNumVerticesPerFace(vertsPerFace);</div>\n-<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span> </div>\n-<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span>            face0IsTri = (vertsPerFace[0] == 3);</div>\n-<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span>            face1IsTri = (vertsPerFace[1] == 3);</div>\n-<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span>            useTriangleOption = face0IsTri || face1IsTri;</div>\n-<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span>            useTriangleOption = <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span>        }</div>\n-<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span>    }</div>\n-<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span> </div>\n-<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span>    <span class=\"keywordflow\">if</span> (! useTriangleOption) {</div>\n-<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span>        mask.VertexWeight(0) = 0.25f;</div>\n-<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span>        mask.VertexWeight(1) = 0.25f;</div>\n-<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span> </div>\n-<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span>        <span class=\"keywordflow\">if</span> (faceCount == 2) {</div>\n-<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span>            mask.FaceWeight(0) = 0.25f;</div>\n-<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span>            mask.FaceWeight(1) = 0.25f;</div>\n-<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span>            Weight fWeight = 0.5f / (Weight)faceCount;</div>\n-<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\">  116</span>            <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; faceCount; ++i) {</div>\n-<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span>                mask.FaceWeight(i) = fWeight;</div>\n-<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\">  118</span>            }</div>\n-<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span>        }</div>\n-<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span>    } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\">  121</span>        <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span>        <span class=\"comment\">//  This mimics the implementation in Hbr in terms of order of operations.</span></div>\n-<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span>        <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span>        <span class=\"keyword\">const</span> Weight CATMARK_SMOOTH_TRI_EDGE_WEIGHT = (Weight) 0.470;</div>\n-<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span> </div>\n-<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span>        Weight f0Weight = face0IsTri ? CATMARK_SMOOTH_TRI_EDGE_WEIGHT : 0.25f;</div>\n-<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span>        Weight f1Weight = face1IsTri ? CATMARK_SMOOTH_TRI_EDGE_WEIGHT : 0.25f;</div>\n-<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span> </div>\n-<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span>        Weight fWeight = 0.5f * (f0Weight + f1Weight);</div>\n-<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span>        Weight vWeight = 0.5f * (1.0f - 2.0f * fWeight);</div>\n-<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\">  131</span> </div>\n-<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\">  132</span>        mask.VertexWeight(0) = vWeight;</div>\n-<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\">  133</span>        mask.VertexWeight(1) = vWeight;</div>\n-<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\">  134</span> </div>\n-<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\">  135</span>        mask.FaceWeight(0) = fWeight;</div>\n-<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\">  136</span>        mask.FaceWeight(1) = fWeight;</div>\n-<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\">  137</span>    }</div>\n-<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\">  138</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\">  139</span> </div>\n-<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\">  140</span> </div>\n-<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\">  141</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span><span class=\"comment\">//  Masks for vertex-vertices:  the hard Corner mask does not need to be specialized</span></div>\n-<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\">  143</span><span class=\"comment\">//  (simply the vertex itself), leaving the Crease and Smooth cases (Dart is smooth):</span></div>\n-<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\">  144</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\">  145</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n-<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\">  146</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK&gt;</div>\n-<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\">  147</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00148\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#aae024a2b2e5e40f3f35c836beaee2acf\">  148</a></span><a class=\"code hl_function\" href=\"a01341.html#a2439e78373d9dfd6ad3ab373c7c32dcc\">Scheme&lt;SCHEME_CATMARK&gt;::assignCreaseMaskForVertex</a>(VERTEX <span class=\"keyword\">const</span>&amp; vertex, MASK&amp; mask,</div>\n-<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\">  149</span>                                                  <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> creaseEnds[2])<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\">  150</span>    <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> MASK::Weight Weight;</div>\n-<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\">  151</span> </div>\n-<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\">  152</span>    <span class=\"keywordtype\">int</span> valence = vertex.GetNumEdges();</div>\n-<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\">  153</span> </div>\n-<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\">  154</span>    mask.SetNumVertexWeights(1);</div>\n-<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\">  155</span>    mask.SetNumEdgeWeights(valence);</div>\n-<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\">  156</span>    mask.SetNumFaceWeights(0);</div>\n-<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\">  157</span>    mask.SetFaceWeightsForFaceCenters(<span class=\"keyword\">false</span>);</div>\n-<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\">  158</span> </div>\n-<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\">  159</span>    Weight vWeight = 0.75f;</div>\n-<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\">  160</span>    Weight eWeight = 0.125f;</div>\n-<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\">  161</span> </div>\n-<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\">  162</span>    mask.VertexWeight(0) = vWeight;</div>\n-<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\">  163</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; valence; ++i) {</div>\n-<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\">  164</span>        mask.EdgeWeight(i) = 0.0f;</div>\n-<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\">  165</span>    }</div>\n-<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\">  166</span>    mask.EdgeWeight(creaseEnds[0]) = eWeight;</div>\n-<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\">  167</span>    mask.EdgeWeight(creaseEnds[1]) = eWeight;</div>\n-<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\">  168</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\">  169</span> </div>\n-<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\">  170</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n-<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK&gt;</div>\n-<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\">  172</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00173\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#ad60bcde0b6056db8500466af6951d05a\">  173</a></span><a class=\"code hl_function\" href=\"a01341.html#a84788a5a93f17e648103123c9f4a33f9\">Scheme&lt;SCHEME_CATMARK&gt;::assignSmoothMaskForVertex</a>(VERTEX <span class=\"keyword\">const</span>&amp; vertex, MASK&amp; mask)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\">  174</span> </div>\n-<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\">  175</span>    <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> MASK::Weight Weight;</div>\n-<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\">  176</span> </div>\n-<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\">  178</span>    <span class=\"comment\">//  A Smooth vertex must be manifold and interior -- manifold boundary vertices will be</span></div>\n-<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\">  179</span>    <span class=\"comment\">//  Creases and non-manifold vertices of any kind will be Corners or Creases.  If smooth</span></div>\n-<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\">  180</span>    <span class=\"comment\">//  rules for non-manifold vertices are ever defined, this will need adjusting:</span></div>\n-<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\">  181</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\">  182</span>    assert(vertex.GetNumFaces() == vertex.GetNumEdges());</div>\n-<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\">  183</span> </div>\n-<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\">  184</span>    <span class=\"keywordtype\">int</span> valence = vertex.GetNumFaces();</div>\n-<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\">  185</span> </div>\n-<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\">  186</span>    mask.SetNumVertexWeights(1);</div>\n-<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\">  187</span>    mask.SetNumEdgeWeights(valence);</div>\n-<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\">  188</span>    mask.SetNumFaceWeights(valence);</div>\n-<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\">  189</span>    mask.SetFaceWeightsForFaceCenters(<span class=\"keyword\">true</span>);</div>\n-<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\">  190</span> </div>\n-<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\">  191</span>    Weight vWeight = (Weight)(valence - 2) / (Weight)valence;</div>\n-<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\">  192</span>    Weight fWeight = 1.0f / (Weight)(valence * valence);</div>\n-<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\">  193</span>    Weight eWeight = fWeight;</div>\n-<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\">  194</span> </div>\n-<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\">  195</span>    mask.VertexWeight(0) = vWeight;</div>\n-<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\">  196</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; valence; ++i) {</div>\n-<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\">  197</span>        mask.EdgeWeight(i) = eWeight;</div>\n-<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\">  198</span>        mask.FaceWeight(i) = fWeight;</div>\n-<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\">  199</span>    }</div>\n-<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\">  200</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\">  201</span> </div>\n-<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\">  202</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\">  203</span><span class=\"comment\">//  Limit masks for position:</span></div>\n-<div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\">  204</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\">  205</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n-<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\">  206</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK&gt;</div>\n-<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\">  207</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00208\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#ab38c56ce6121aed94f2796bf5df894be\">  208</a></span><a class=\"code hl_function\" href=\"a01341.html#aa2821d365ea8135d6316c0f926f87ccb\">Scheme&lt;SCHEME_CATMARK&gt;::assignCornerLimitMask</a>(VERTEX <span class=\"keyword\">const</span>&amp; <span class=\"comment\">/* vertex */</span>, MASK&amp; posMask)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\">  209</span> </div>\n-<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\">  210</span>    posMask.SetNumVertexWeights(1);</div>\n-<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\">  211</span>    posMask.SetNumEdgeWeights(0);</div>\n-<div class=\"line\"><a id=\"l00212\" name=\"l00212\"></a><span class=\"lineno\">  212</span>    posMask.SetNumFaceWeights(0);</div>\n-<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\">  213</span>    posMask.SetFaceWeightsForFaceCenters(<span class=\"keyword\">false</span>);</div>\n-<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\">  214</span> </div>\n-<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\">  215</span>    posMask.VertexWeight(0) = 1.0f;</div>\n-<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\">  216</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\">  217</span> </div>\n-<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\">  218</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n-<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\">  219</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK&gt;</div>\n-<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\">  220</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00221\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#ad439ba00463a7af51cf821692d6cc2e3\">  221</a></span><a class=\"code hl_function\" href=\"a01341.html#a7c9316f7212d3ea41db7f3f1a66cc7e5\">Scheme&lt;SCHEME_CATMARK&gt;::assignCreaseLimitMask</a>(VERTEX <span class=\"keyword\">const</span>&amp; vertex, MASK&amp; posMask,</div>\n-<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\">  222</span>                                              <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> creaseEnds[2])<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\">  223</span> </div>\n-<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\">  224</span>    <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> MASK::Weight Weight;</div>\n-<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\">  225</span> </div>\n-<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\">  226</span>    <span class=\"keywordtype\">int</span> valence = vertex.GetNumEdges();</div>\n-<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\">  227</span> </div>\n-<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\">  228</span>    posMask.SetNumVertexWeights(1);</div>\n-<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\">  229</span>    posMask.SetNumEdgeWeights(valence);</div>\n-<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\">  230</span>    posMask.SetNumFaceWeights(0);</div>\n-<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\">  231</span>    posMask.SetFaceWeightsForFaceCenters(<span class=\"keyword\">false</span>);</div>\n-<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\">  232</span> </div>\n-<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\">  233</span>    Weight vWeight = (Weight)(2.0 / 3.0);</div>\n-<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\">  234</span>    Weight eWeight = (Weight)(1.0 / 6.0);</div>\n-<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\">  235</span> </div>\n-<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\">  236</span>    posMask.VertexWeight(0) = vWeight;</div>\n-<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\">  237</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; valence; ++i) {</div>\n-<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\">  238</span>        posMask.EdgeWeight(i) = 0.0f;</div>\n-<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\">  239</span>    }</div>\n-<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\">  240</span>    posMask.EdgeWeight(creaseEnds[0]) = eWeight;</div>\n-<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\">  241</span>    posMask.EdgeWeight(creaseEnds[1]) = eWeight;</div>\n-<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\">  242</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\">  243</span> </div>\n-<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\">  244</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n-<div class=\"line\"><a id=\"l00245\" name=\"l00245\"></a><span class=\"lineno\">  245</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK&gt;</div>\n-<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\">  246</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00247\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00247\" name=\"l00247\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#adbc763184791a8854374af8b123fa242\">  247</a></span><a class=\"code hl_function\" href=\"a01341.html#a736c10944cb921b334fbd8b81866d59f\">Scheme&lt;SCHEME_CATMARK&gt;::assignSmoothLimitMask</a>(VERTEX <span class=\"keyword\">const</span>&amp; vertex, MASK&amp; posMask)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00248\" name=\"l00248\"></a><span class=\"lineno\">  248</span> </div>\n-<div class=\"line\"><a id=\"l00249\" name=\"l00249\"></a><span class=\"lineno\">  249</span>    <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> MASK::Weight Weight;</div>\n-<div class=\"line\"><a id=\"l00250\" name=\"l00250\"></a><span class=\"lineno\">  250</span> </div>\n-<div class=\"line\"><a id=\"l00251\" name=\"l00251\"></a><span class=\"lineno\">  251</span>    <span class=\"keywordtype\">int</span> valence = vertex.GetNumFaces();</div>\n-<div class=\"line\"><a id=\"l00252\" name=\"l00252\"></a><span class=\"lineno\">  252</span>    <span class=\"keywordflow\">if</span> (valence == 2) {</div>\n-<div class=\"line\"><a id=\"l00253\" name=\"l00253\"></a><span class=\"lineno\">  253</span>        assignCornerLimitMask(vertex, posMask);</div>\n-<div class=\"line\"><a id=\"l00254\" name=\"l00254\"></a><span class=\"lineno\">  254</span>        <span class=\"keywordflow\">return</span>;</div>\n-<div class=\"line\"><a id=\"l00255\" name=\"l00255\"></a><span class=\"lineno\">  255</span>    }</div>\n-<div class=\"line\"><a id=\"l00256\" name=\"l00256\"></a><span class=\"lineno\">  256</span> </div>\n-<div class=\"line\"><a id=\"l00257\" name=\"l00257\"></a><span class=\"lineno\">  257</span>    posMask.SetNumVertexWeights(1);</div>\n-<div class=\"line\"><a id=\"l00258\" name=\"l00258\"></a><span class=\"lineno\">  258</span>    posMask.SetNumEdgeWeights(valence);</div>\n-<div class=\"line\"><a id=\"l00259\" name=\"l00259\"></a><span class=\"lineno\">  259</span>    posMask.SetNumFaceWeights(valence);</div>\n-<div class=\"line\"><a id=\"l00260\" name=\"l00260\"></a><span class=\"lineno\">  260</span>    posMask.SetFaceWeightsForFaceCenters(<span class=\"keyword\">false</span>);</div>\n-<div class=\"line\"><a id=\"l00261\" name=\"l00261\"></a><span class=\"lineno\">  261</span> </div>\n-<div class=\"line\"><a id=\"l00262\" name=\"l00262\"></a><span class=\"lineno\">  262</span>    <span class=\"comment\">//  Specialize for the regular case:</span></div>\n-<div class=\"line\"><a id=\"l00263\" name=\"l00263\"></a><span class=\"lineno\">  263</span>    <span class=\"keywordflow\">if</span> (valence == 4) {</div>\n-<div class=\"line\"><a id=\"l00264\" name=\"l00264\"></a><span class=\"lineno\">  264</span>        Weight fWeight = (Weight)(1.0 / 36.0);</div>\n-<div class=\"line\"><a id=\"l00265\" name=\"l00265\"></a><span class=\"lineno\">  265</span>        Weight eWeight = (Weight)(1.0 /  9.0);</div>\n-<div class=\"line\"><a id=\"l00266\" name=\"l00266\"></a><span class=\"lineno\">  266</span>        Weight vWeight = (Weight)(4.0 /  9.0);</div>\n-<div class=\"line\"><a id=\"l00267\" name=\"l00267\"></a><span class=\"lineno\">  267</span> </div>\n-<div class=\"line\"><a id=\"l00268\" name=\"l00268\"></a><span class=\"lineno\">  268</span>        posMask.VertexWeight(0) = vWeight;</div>\n-<div class=\"line\"><a id=\"l00269\" name=\"l00269\"></a><span class=\"lineno\">  269</span> </div>\n-<div class=\"line\"><a id=\"l00270\" name=\"l00270\"></a><span class=\"lineno\">  270</span>        posMask.EdgeWeight(0) = eWeight;</div>\n-<div class=\"line\"><a id=\"l00271\" name=\"l00271\"></a><span class=\"lineno\">  271</span>        posMask.EdgeWeight(1) = eWeight;</div>\n-<div class=\"line\"><a id=\"l00272\" name=\"l00272\"></a><span class=\"lineno\">  272</span>        posMask.EdgeWeight(2) = eWeight;</div>\n-<div class=\"line\"><a id=\"l00273\" name=\"l00273\"></a><span class=\"lineno\">  273</span>        posMask.EdgeWeight(3) = eWeight;</div>\n-<div class=\"line\"><a id=\"l00274\" name=\"l00274\"></a><span class=\"lineno\">  274</span> </div>\n-<div class=\"line\"><a id=\"l00275\" name=\"l00275\"></a><span class=\"lineno\">  275</span>        posMask.FaceWeight(0) = fWeight;</div>\n-<div class=\"line\"><a id=\"l00276\" name=\"l00276\"></a><span class=\"lineno\">  276</span>        posMask.FaceWeight(1) = fWeight;</div>\n-<div class=\"line\"><a id=\"l00277\" name=\"l00277\"></a><span class=\"lineno\">  277</span>        posMask.FaceWeight(2) = fWeight;</div>\n-<div class=\"line\"><a id=\"l00278\" name=\"l00278\"></a><span class=\"lineno\">  278</span>        posMask.FaceWeight(3) = fWeight;</div>\n-<div class=\"line\"><a id=\"l00279\" name=\"l00279\"></a><span class=\"lineno\">  279</span>    } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00280\" name=\"l00280\"></a><span class=\"lineno\">  280</span>        Weight Valence = (Weight) valence;</div>\n-<div class=\"line\"><a id=\"l00281\" name=\"l00281\"></a><span class=\"lineno\">  281</span> </div>\n-<div class=\"line\"><a id=\"l00282\" name=\"l00282\"></a><span class=\"lineno\">  282</span>        Weight fWeight = 1.0f / (Valence * (Valence + 5.0f));</div>\n-<div class=\"line\"><a id=\"l00283\" name=\"l00283\"></a><span class=\"lineno\">  283</span>        Weight eWeight = 4.0f * fWeight;</div>\n-<div class=\"line\"><a id=\"l00284\" name=\"l00284\"></a><span class=\"lineno\">  284</span>        Weight vWeight = 1.0f - Valence * (eWeight + fWeight);</div>\n-<div class=\"line\"><a id=\"l00285\" name=\"l00285\"></a><span class=\"lineno\">  285</span> </div>\n-<div class=\"line\"><a id=\"l00286\" name=\"l00286\"></a><span class=\"lineno\">  286</span>        posMask.VertexWeight(0) = vWeight;</div>\n-<div class=\"line\"><a id=\"l00287\" name=\"l00287\"></a><span class=\"lineno\">  287</span>        <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; valence; ++i) {</div>\n-<div class=\"line\"><a id=\"l00288\" name=\"l00288\"></a><span class=\"lineno\">  288</span>            posMask.EdgeWeight(i) = eWeight;</div>\n-<div class=\"line\"><a id=\"l00289\" name=\"l00289\"></a><span class=\"lineno\">  289</span>            posMask.FaceWeight(i) = fWeight;</div>\n-<div class=\"line\"><a id=\"l00290\" name=\"l00290\"></a><span class=\"lineno\">  290</span>        }</div>\n-<div class=\"line\"><a id=\"l00291\" name=\"l00291\"></a><span class=\"lineno\">  291</span>    }</div>\n-<div class=\"line\"><a id=\"l00292\" name=\"l00292\"></a><span class=\"lineno\">  292</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00293\" name=\"l00293\"></a><span class=\"lineno\">  293</span> </div>\n-<div class=\"line\"><a id=\"l00294\" name=\"l00294\"></a><span class=\"lineno\">  294</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00295\" name=\"l00295\"></a><span class=\"lineno\">  295</span><span class=\"comment\">//  Limit masks for tangents -- these are stubs for now, or have a temporary</span></div>\n-<div class=\"line\"><a id=\"l00296\" name=\"l00296\"></a><span class=\"lineno\">  296</span><span class=\"comment\">//  implementation</span></div>\n-<div class=\"line\"><a id=\"l00297\" name=\"l00297\"></a><span class=\"lineno\">  297</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00298\" name=\"l00298\"></a><span class=\"lineno\">  298</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n-<div class=\"line\"><a id=\"l00299\" name=\"l00299\"></a><span class=\"lineno\">  299</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK&gt;</div>\n-<div class=\"line\"><a id=\"l00300\" name=\"l00300\"></a><span class=\"lineno\">  300</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00301\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00301\" name=\"l00301\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#adfe86b1bf62ea328adddf4e5c4b01049\">  301</a></span><a class=\"code hl_function\" href=\"a01341.html#ae9ee7f11f51ec6ff8c43ab0729454b54\">Scheme&lt;SCHEME_CATMARK&gt;::assignCornerLimitTangentMasks</a>(VERTEX <span class=\"keyword\">const</span>&amp; vertex,</div>\n-<div class=\"line\"><a id=\"l00302\" name=\"l00302\"></a><span class=\"lineno\">  302</span>        MASK&amp; tan1Mask, MASK&amp; tan2Mask)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00303\" name=\"l00303\"></a><span class=\"lineno\">  303</span> </div>\n-<div class=\"line\"><a id=\"l00304\" name=\"l00304\"></a><span class=\"lineno\">  304</span>    <span class=\"keywordtype\">int</span> valence = vertex.GetNumEdges();</div>\n-<div class=\"line\"><a id=\"l00305\" name=\"l00305\"></a><span class=\"lineno\">  305</span> </div>\n-<div class=\"line\"><a id=\"l00306\" name=\"l00306\"></a><span class=\"lineno\">  306</span>    tan1Mask.SetNumVertexWeights(1);</div>\n-<div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\">  307</span>    tan1Mask.SetNumEdgeWeights(valence);</div>\n-<div class=\"line\"><a id=\"l00308\" name=\"l00308\"></a><span class=\"lineno\">  308</span>    tan1Mask.SetNumFaceWeights(0);</div>\n-<div class=\"line\"><a id=\"l00309\" name=\"l00309\"></a><span class=\"lineno\">  309</span>    tan1Mask.SetFaceWeightsForFaceCenters(<span class=\"keyword\">false</span>);</div>\n-<div class=\"line\"><a id=\"l00310\" name=\"l00310\"></a><span class=\"lineno\">  310</span> </div>\n-<div class=\"line\"><a id=\"l00311\" name=\"l00311\"></a><span class=\"lineno\">  311</span>    tan2Mask.SetNumVertexWeights(1);</div>\n-<div class=\"line\"><a id=\"l00312\" name=\"l00312\"></a><span class=\"lineno\">  312</span>    tan2Mask.SetNumEdgeWeights(valence);</div>\n-<div class=\"line\"><a id=\"l00313\" name=\"l00313\"></a><span class=\"lineno\">  313</span>    tan2Mask.SetNumFaceWeights(0);</div>\n-<div class=\"line\"><a id=\"l00314\" name=\"l00314\"></a><span class=\"lineno\">  314</span>    tan2Mask.SetFaceWeightsForFaceCenters(<span class=\"keyword\">false</span>);</div>\n-<div class=\"line\"><a id=\"l00315\" name=\"l00315\"></a><span class=\"lineno\">  315</span> </div>\n-<div class=\"line\"><a id=\"l00316\" name=\"l00316\"></a><span class=\"lineno\">  316</span>    <span class=\"comment\">//  Should be at least 2 edges -- be sure to clear weights for any more:</span></div>\n-<div class=\"line\"><a id=\"l00317\" name=\"l00317\"></a><span class=\"lineno\">  317</span>    tan1Mask.VertexWeight(0) = -1.0f;</div>\n-<div class=\"line\"><a id=\"l00318\" name=\"l00318\"></a><span class=\"lineno\">  318</span>    tan1Mask.EdgeWeight(0)   =  1.0f;</div>\n-<div class=\"line\"><a id=\"l00319\" name=\"l00319\"></a><span class=\"lineno\">  319</span>    tan1Mask.EdgeWeight(1)   =  0.0f;</div>\n-<div class=\"line\"><a id=\"l00320\" name=\"l00320\"></a><span class=\"lineno\">  320</span> </div>\n-<div class=\"line\"><a id=\"l00321\" name=\"l00321\"></a><span class=\"lineno\">  321</span>    tan2Mask.VertexWeight(0) = -1.0f;</div>\n-<div class=\"line\"><a id=\"l00322\" name=\"l00322\"></a><span class=\"lineno\">  322</span>    tan2Mask.EdgeWeight(0)   =  0.0f;</div>\n-<div class=\"line\"><a id=\"l00323\" name=\"l00323\"></a><span class=\"lineno\">  323</span>    tan2Mask.EdgeWeight(1)   =  1.0f;</div>\n-<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\">  324</span> </div>\n-<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\">  325</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 2; i &lt; valence; ++i) {</div>\n-<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\">  326</span>        tan1Mask.EdgeWeight(i) = 0.0f;</div>\n-<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\">  327</span>        tan2Mask.EdgeWeight(i) = 0.0f;</div>\n-<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\">  328</span>    }</div>\n-<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\">  329</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\">  330</span> </div>\n-<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\">  331</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n-<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\">  332</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK&gt;</div>\n-<div class=\"line\"><a id=\"l00333\" name=\"l00333\"></a><span class=\"lineno\">  333</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00334\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00334\" name=\"l00334\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#a2ef69ac92171507161acb0c0af01d6f2\">  334</a></span><a class=\"code hl_function\" href=\"a01341.html#a4f8e559b93bbaf26ea0d40b1fa2f194f\">Scheme&lt;SCHEME_CATMARK&gt;::assignCreaseLimitTangentMasks</a>(VERTEX <span class=\"keyword\">const</span>&amp; vertex,</div>\n-<div class=\"line\"><a id=\"l00335\" name=\"l00335\"></a><span class=\"lineno\">  335</span>        MASK&amp; tan1Mask, MASK&amp; tan2Mask, <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> creaseEnds[2])<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00336\" name=\"l00336\"></a><span class=\"lineno\">  336</span> </div>\n-<div class=\"line\"><a id=\"l00337\" name=\"l00337\"></a><span class=\"lineno\">  337</span>    <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> MASK::Weight Weight;</div>\n-<div class=\"line\"><a id=\"l00338\" name=\"l00338\"></a><span class=\"lineno\">  338</span> </div>\n-<div class=\"line\"><a id=\"l00339\" name=\"l00339\"></a><span class=\"lineno\">  339</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00340\" name=\"l00340\"></a><span class=\"lineno\">  340</span>    <span class=\"comment\">//  First, the tangent along the crease:</span></div>\n-<div class=\"line\"><a id=\"l00341\" name=\"l00341\"></a><span class=\"lineno\">  341</span>    <span class=\"comment\">//      The first crease edge is considered the &quot;leading&quot; edge of the span</span></div>\n-<div class=\"line\"><a id=\"l00342\" name=\"l00342\"></a><span class=\"lineno\">  342</span>    <span class=\"comment\">//  of surface for which we are evaluating tangents and the second edge the</span></div>\n-<div class=\"line\"><a id=\"l00343\" name=\"l00343\"></a><span class=\"lineno\">  343</span>    <span class=\"comment\">//  &quot;trailing edge&quot;.  By convention, the tangent along the crease is oriented</span></div>\n-<div class=\"line\"><a id=\"l00344\" name=\"l00344\"></a><span class=\"lineno\">  344</span>    <span class=\"comment\">//  in the direction of the leading edge.</span></div>\n-<div class=\"line\"><a id=\"l00345\" name=\"l00345\"></a><span class=\"lineno\">  345</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00346\" name=\"l00346\"></a><span class=\"lineno\">  346</span>    <span class=\"keywordtype\">int</span> numEdges = vertex.GetNumEdges();</div>\n-<div class=\"line\"><a id=\"l00347\" name=\"l00347\"></a><span class=\"lineno\">  347</span>    <span class=\"keywordtype\">int</span> numFaces = vertex.GetNumFaces();</div>\n-<div class=\"line\"><a id=\"l00348\" name=\"l00348\"></a><span class=\"lineno\">  348</span> </div>\n-<div class=\"line\"><a id=\"l00349\" name=\"l00349\"></a><span class=\"lineno\">  349</span>    tan1Mask.SetNumVertexWeights(1);</div>\n-<div class=\"line\"><a id=\"l00350\" name=\"l00350\"></a><span class=\"lineno\">  350</span>    tan1Mask.SetNumEdgeWeights(numEdges);</div>\n-<div class=\"line\"><a id=\"l00351\" name=\"l00351\"></a><span class=\"lineno\">  351</span>    tan1Mask.SetNumFaceWeights(numFaces);</div>\n-<div class=\"line\"><a id=\"l00352\" name=\"l00352\"></a><span class=\"lineno\">  352</span>    tan1Mask.SetFaceWeightsForFaceCenters(<span class=\"keyword\">false</span>);</div>\n-<div class=\"line\"><a id=\"l00353\" name=\"l00353\"></a><span class=\"lineno\">  353</span> </div>\n-<div class=\"line\"><a id=\"l00354\" name=\"l00354\"></a><span class=\"lineno\">  354</span>    tan1Mask.VertexWeight(0) = 0.0f;</div>\n-<div class=\"line\"><a id=\"l00355\" name=\"l00355\"></a><span class=\"lineno\">  355</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; numEdges; ++i) {</div>\n-<div class=\"line\"><a id=\"l00356\" name=\"l00356\"></a><span class=\"lineno\">  356</span>        tan1Mask.EdgeWeight(i) = 0.0f;</div>\n-<div class=\"line\"><a id=\"l00357\" name=\"l00357\"></a><span class=\"lineno\">  357</span>    }</div>\n-<div class=\"line\"><a id=\"l00358\" name=\"l00358\"></a><span class=\"lineno\">  358</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; numFaces; ++i) {</div>\n-<div class=\"line\"><a id=\"l00359\" name=\"l00359\"></a><span class=\"lineno\">  359</span>        tan1Mask.FaceWeight(i) = 0.0f;</div>\n-<div class=\"line\"><a id=\"l00360\" name=\"l00360\"></a><span class=\"lineno\">  360</span>    }</div>\n-<div class=\"line\"><a id=\"l00361\" name=\"l00361\"></a><span class=\"lineno\">  361</span> </div>\n-<div class=\"line\"><a id=\"l00362\" name=\"l00362\"></a><span class=\"lineno\">  362</span>    tan1Mask.EdgeWeight(creaseEnds[0]) =  0.5f;</div>\n-<div class=\"line\"><a id=\"l00363\" name=\"l00363\"></a><span class=\"lineno\">  363</span>    tan1Mask.EdgeWeight(creaseEnds[1]) = -0.5f;</div>\n-<div class=\"line\"><a id=\"l00364\" name=\"l00364\"></a><span class=\"lineno\">  364</span> </div>\n-<div class=\"line\"><a id=\"l00365\" name=\"l00365\"></a><span class=\"lineno\">  365</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00366\" name=\"l00366\"></a><span class=\"lineno\">  366</span>    <span class=\"comment\">//  Second, the tangent across the interior faces:</span></div>\n-<div class=\"line\"><a id=\"l00367\" name=\"l00367\"></a><span class=\"lineno\">  367</span>    <span class=\"comment\">//      Note this is ambiguous for an interior vertex.  We currently return</span></div>\n-<div class=\"line\"><a id=\"l00368\" name=\"l00368\"></a><span class=\"lineno\">  368</span>    <span class=\"comment\">//  the tangent for the surface in the counter-clockwise span between the</span></div>\n-<div class=\"line\"><a id=\"l00369\" name=\"l00369\"></a><span class=\"lineno\">  369</span>    <span class=\"comment\">//  leading and trailing edges that form the crease.  Given the expected</span></div>\n-<div class=\"line\"><a id=\"l00370\" name=\"l00370\"></a><span class=\"lineno\">  370</span>    <span class=\"comment\">//  computation of a surface normal as Tan1 X Tan2, this tangent should be</span></div>\n-<div class=\"line\"><a id=\"l00371\" name=\"l00371\"></a><span class=\"lineno\">  371</span>    <span class=\"comment\">//  oriented &quot;inward&quot; from the crease/boundary -- across the surface rather</span></div>\n-<div class=\"line\"><a id=\"l00372\" name=\"l00372\"></a><span class=\"lineno\">  372</span>    <span class=\"comment\">//  than outward and away from it.</span></div>\n-<div class=\"line\"><a id=\"l00373\" name=\"l00373\"></a><span class=\"lineno\">  373</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00374\" name=\"l00374\"></a><span class=\"lineno\">  374</span>    tan2Mask.SetNumVertexWeights(1);</div>\n-<div class=\"line\"><a id=\"l00375\" name=\"l00375\"></a><span class=\"lineno\">  375</span>    tan2Mask.SetNumEdgeWeights(numEdges);</div>\n-<div class=\"line\"><a id=\"l00376\" name=\"l00376\"></a><span class=\"lineno\">  376</span>    tan2Mask.SetNumFaceWeights(numFaces);</div>\n-<div class=\"line\"><a id=\"l00377\" name=\"l00377\"></a><span class=\"lineno\">  377</span>    tan2Mask.SetFaceWeightsForFaceCenters(<span class=\"keyword\">false</span>);</div>\n-<div class=\"line\"><a id=\"l00378\" name=\"l00378\"></a><span class=\"lineno\">  378</span> </div>\n-<div class=\"line\"><a id=\"l00379\" name=\"l00379\"></a><span class=\"lineno\">  379</span>    <span class=\"comment\">//  Prepend weights of 0 preceding the crease:</span></div>\n-<div class=\"line\"><a id=\"l00380\" name=\"l00380\"></a><span class=\"lineno\">  380</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; creaseEnds[0]; ++i) {</div>\n-<div class=\"line\"><a id=\"l00381\" name=\"l00381\"></a><span class=\"lineno\">  381</span>        tan2Mask.EdgeWeight(i) = 0.0f;</div>\n-<div class=\"line\"><a id=\"l00382\" name=\"l00382\"></a><span class=\"lineno\">  382</span>        tan2Mask.FaceWeight(i) = 0.0f;</div>\n-<div class=\"line\"><a id=\"l00383\" name=\"l00383\"></a><span class=\"lineno\">  383</span>    }</div>\n-<div class=\"line\"><a id=\"l00384\" name=\"l00384\"></a><span class=\"lineno\">  384</span> </div>\n-<div class=\"line\"><a id=\"l00385\" name=\"l00385\"></a><span class=\"lineno\">  385</span>    <span class=\"comment\">//  Assign weights to crease edge and interior points:</span></div>\n-<div class=\"line\"><a id=\"l00386\" name=\"l00386\"></a><span class=\"lineno\">  386</span>    <span class=\"keywordtype\">int</span> interiorEdgeCount = creaseEnds[1] - creaseEnds[0] - 1;</div>\n-<div class=\"line\"><a id=\"l00387\" name=\"l00387\"></a><span class=\"lineno\">  387</span>    <span class=\"keywordflow\">if</span> (interiorEdgeCount == 1) {</div>\n-<div class=\"line\"><a id=\"l00388\" name=\"l00388\"></a><span class=\"lineno\">  388</span>        <span class=\"comment\">//  The regular case -- uniform B-spline cross-tangent:</span></div>\n-<div class=\"line\"><a id=\"l00389\" name=\"l00389\"></a><span class=\"lineno\">  389</span> </div>\n-<div class=\"line\"><a id=\"l00390\" name=\"l00390\"></a><span class=\"lineno\">  390</span>        tan2Mask.VertexWeight(0) = (Weight)(-4.0 / 6.0);</div>\n-<div class=\"line\"><a id=\"l00391\" name=\"l00391\"></a><span class=\"lineno\">  391</span> </div>\n-<div class=\"line\"><a id=\"l00392\" name=\"l00392\"></a><span class=\"lineno\">  392</span>        tan2Mask.EdgeWeight(creaseEnds[0])     = (Weight)(-1.0 / 6.0);</div>\n-<div class=\"line\"><a id=\"l00393\" name=\"l00393\"></a><span class=\"lineno\">  393</span>        tan2Mask.EdgeWeight(creaseEnds[0] + 1) = (Weight)( 4.0 / 6.0);</div>\n-<div class=\"line\"><a id=\"l00394\" name=\"l00394\"></a><span class=\"lineno\">  394</span>        tan2Mask.EdgeWeight(creaseEnds[1])     = (Weight)(-1.0 / 6.0);</div>\n-<div class=\"line\"><a id=\"l00395\" name=\"l00395\"></a><span class=\"lineno\">  395</span> </div>\n-<div class=\"line\"><a id=\"l00396\" name=\"l00396\"></a><span class=\"lineno\">  396</span>        tan2Mask.FaceWeight(creaseEnds[0])     = (Weight)(1.0 / 6.0);</div>\n-<div class=\"line\"><a id=\"l00397\" name=\"l00397\"></a><span class=\"lineno\">  397</span>        tan2Mask.FaceWeight(creaseEnds[0] + 1) = (Weight)(1.0 / 6.0);</div>\n-<div class=\"line\"><a id=\"l00398\" name=\"l00398\"></a><span class=\"lineno\">  398</span>    } <span class=\"keywordflow\">else</span> <span class=\"keywordflow\">if</span> (interiorEdgeCount &gt; 1) {</div>\n-<div class=\"line\"><a id=\"l00399\" name=\"l00399\"></a><span class=\"lineno\">  399</span>        <span class=\"comment\">//  The irregular case -- formulae from Biermann et al:</span></div>\n-<div class=\"line\"><a id=\"l00400\" name=\"l00400\"></a><span class=\"lineno\">  400</span> </div>\n-<div class=\"line\"><a id=\"l00401\" name=\"l00401\"></a><span class=\"lineno\">  401</span>        <span class=\"keywordtype\">double</span> k     = (double) (interiorEdgeCount + 1);</div>\n-<div class=\"line\"><a id=\"l00402\" name=\"l00402\"></a><span class=\"lineno\">  402</span>        <span class=\"keywordtype\">double</span> theta = M_PI / k;</div>\n-<div class=\"line\"><a id=\"l00403\" name=\"l00403\"></a><span class=\"lineno\">  403</span> </div>\n-<div class=\"line\"><a id=\"l00404\" name=\"l00404\"></a><span class=\"lineno\">  404</span>        <span class=\"keywordtype\">double</span> cosTheta = std::cos(theta);</div>\n-<div class=\"line\"><a id=\"l00405\" name=\"l00405\"></a><span class=\"lineno\">  405</span>        <span class=\"keywordtype\">double</span> sinTheta = std::sin(theta);</div>\n-<div class=\"line\"><a id=\"l00406\" name=\"l00406\"></a><span class=\"lineno\">  406</span> </div>\n-<div class=\"line\"><a id=\"l00407\" name=\"l00407\"></a><span class=\"lineno\">  407</span>        <span class=\"comment\">//  Loop/Schaefer use a different divisor here (3*k + cos(theta)):</span></div>\n-<div class=\"line\"><a id=\"l00408\" name=\"l00408\"></a><span class=\"lineno\">  408</span>        <span class=\"keywordtype\">double</span> commonDenom = 1.0f / (k * (3.0f + cosTheta));</div>\n-<div class=\"line\"><a id=\"l00409\" name=\"l00409\"></a><span class=\"lineno\">  409</span>        <span class=\"keywordtype\">double</span> R = (cosTheta + 1.0f) / sinTheta;</div>\n-<div class=\"line\"><a id=\"l00410\" name=\"l00410\"></a><span class=\"lineno\">  410</span> </div>\n-<div class=\"line\"><a id=\"l00411\" name=\"l00411\"></a><span class=\"lineno\">  411</span>        <span class=\"keywordtype\">double</span> vertexWeight = 4.0f * R * (cosTheta - 1.0f);</div>\n-<div class=\"line\"><a id=\"l00412\" name=\"l00412\"></a><span class=\"lineno\">  412</span>        <span class=\"keywordtype\">double</span> creaseWeight = -R * (1.0f + 2.0f * cosTheta);</div>\n-<div class=\"line\"><a id=\"l00413\" name=\"l00413\"></a><span class=\"lineno\">  413</span> </div>\n-<div class=\"line\"><a id=\"l00414\" name=\"l00414\"></a><span class=\"lineno\">  414</span>        tan2Mask.VertexWeight(0) = (Weight) (vertexWeight * commonDenom);</div>\n-<div class=\"line\"><a id=\"l00415\" name=\"l00415\"></a><span class=\"lineno\">  415</span> </div>\n-<div class=\"line\"><a id=\"l00416\" name=\"l00416\"></a><span class=\"lineno\">  416</span>        tan2Mask.EdgeWeight(creaseEnds[0]) = (Weight) (creaseWeight * commonDenom);</div>\n-<div class=\"line\"><a id=\"l00417\" name=\"l00417\"></a><span class=\"lineno\">  417</span>        tan2Mask.EdgeWeight(creaseEnds[1]) = (Weight) (creaseWeight * commonDenom);</div>\n-<div class=\"line\"><a id=\"l00418\" name=\"l00418\"></a><span class=\"lineno\">  418</span> </div>\n-<div class=\"line\"><a id=\"l00419\" name=\"l00419\"></a><span class=\"lineno\">  419</span>        tan2Mask.FaceWeight(creaseEnds[0]) = (Weight) (sinTheta * commonDenom);</div>\n-<div class=\"line\"><a id=\"l00420\" name=\"l00420\"></a><span class=\"lineno\">  420</span> </div>\n-<div class=\"line\"><a id=\"l00421\" name=\"l00421\"></a><span class=\"lineno\">  421</span>        <span class=\"keywordtype\">double</span> sinThetaI      = 0.0f;</div>\n-<div class=\"line\"><a id=\"l00422\" name=\"l00422\"></a><span class=\"lineno\">  422</span>        <span class=\"keywordtype\">double</span> sinThetaIplus1 = sinTheta;</div>\n-<div class=\"line\"><a id=\"l00423\" name=\"l00423\"></a><span class=\"lineno\">  423</span>        <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 1; i &lt; k; ++i) {</div>\n-<div class=\"line\"><a id=\"l00424\" name=\"l00424\"></a><span class=\"lineno\">  424</span>            sinThetaI      = sinThetaIplus1;</div>\n-<div class=\"line\"><a id=\"l00425\" name=\"l00425\"></a><span class=\"lineno\">  425</span>            sinThetaIplus1 = std::sin((i+1)*theta);</div>\n-<div class=\"line\"><a id=\"l00426\" name=\"l00426\"></a><span class=\"lineno\">  426</span> </div>\n-<div class=\"line\"><a id=\"l00427\" name=\"l00427\"></a><span class=\"lineno\">  427</span>            tan2Mask.EdgeWeight(creaseEnds[0] + i) = (Weight) ((4.0f * sinThetaI) * commonDenom);</div>\n-<div class=\"line\"><a id=\"l00428\" name=\"l00428\"></a><span class=\"lineno\">  428</span>            tan2Mask.FaceWeight(creaseEnds[0] + i) = (Weight) ((sinThetaI + sinThetaIplus1) * commonDenom);</div>\n-<div class=\"line\"><a id=\"l00429\" name=\"l00429\"></a><span class=\"lineno\">  429</span>        }</div>\n-<div class=\"line\"><a id=\"l00430\" name=\"l00430\"></a><span class=\"lineno\">  430</span>    } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00431\" name=\"l00431\"></a><span class=\"lineno\">  431</span>        <span class=\"comment\">//  Special case for a single face -- simple average of boundary edges:</span></div>\n-<div class=\"line\"><a id=\"l00432\" name=\"l00432\"></a><span class=\"lineno\">  432</span> </div>\n-<div class=\"line\"><a id=\"l00433\" name=\"l00433\"></a><span class=\"lineno\">  433</span>        tan2Mask.VertexWeight(0) = -6.0f;</div>\n-<div class=\"line\"><a id=\"l00434\" name=\"l00434\"></a><span class=\"lineno\">  434</span> </div>\n-<div class=\"line\"><a id=\"l00435\" name=\"l00435\"></a><span class=\"lineno\">  435</span>        tan2Mask.EdgeWeight(creaseEnds[0]) = 3.0f;</div>\n-<div class=\"line\"><a id=\"l00436\" name=\"l00436\"></a><span class=\"lineno\">  436</span>        tan2Mask.EdgeWeight(creaseEnds[1]) = 3.0f;</div>\n-<div class=\"line\"><a id=\"l00437\" name=\"l00437\"></a><span class=\"lineno\">  437</span> </div>\n-<div class=\"line\"><a id=\"l00438\" name=\"l00438\"></a><span class=\"lineno\">  438</span>        tan2Mask.FaceWeight(creaseEnds[0]) = 0.0f;</div>\n-<div class=\"line\"><a id=\"l00439\" name=\"l00439\"></a><span class=\"lineno\">  439</span>    }</div>\n-<div class=\"line\"><a id=\"l00440\" name=\"l00440\"></a><span class=\"lineno\">  440</span> </div>\n-<div class=\"line\"><a id=\"l00441\" name=\"l00441\"></a><span class=\"lineno\">  441</span>    <span class=\"comment\">//  Append weights of 0 following the crease:</span></div>\n-<div class=\"line\"><a id=\"l00442\" name=\"l00442\"></a><span class=\"lineno\">  442</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = creaseEnds[1]; i &lt; numFaces; ++i) {</div>\n-<div class=\"line\"><a id=\"l00443\" name=\"l00443\"></a><span class=\"lineno\">  443</span>        tan2Mask.FaceWeight(i) = 0.0f;</div>\n-<div class=\"line\"><a id=\"l00444\" name=\"l00444\"></a><span class=\"lineno\">  444</span>    }</div>\n-<div class=\"line\"><a id=\"l00445\" name=\"l00445\"></a><span class=\"lineno\">  445</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = creaseEnds[1] + 1; i &lt; numEdges; ++i) {</div>\n-<div class=\"line\"><a id=\"l00446\" name=\"l00446\"></a><span class=\"lineno\">  446</span>        tan2Mask.EdgeWeight(i) = 0.0f;</div>\n-<div class=\"line\"><a id=\"l00447\" name=\"l00447\"></a><span class=\"lineno\">  447</span>    }</div>\n-<div class=\"line\"><a id=\"l00448\" name=\"l00448\"></a><span class=\"lineno\">  448</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00449\" name=\"l00449\"></a><span class=\"lineno\">  449</span> </div>\n-<div class=\"line\"><a id=\"l00450\" name=\"l00450\"></a><span class=\"lineno\">  450</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n-<div class=\"line\"><a id=\"l00451\" name=\"l00451\"></a><span class=\"lineno\">  451</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK&gt;</div>\n-<div class=\"line\"><a id=\"l00452\" name=\"l00452\"></a><span class=\"lineno\">  452</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00453\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00453\" name=\"l00453\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#a15a82416378d985afe049eaebc185e7d\">  453</a></span><a class=\"code hl_function\" href=\"a01341.html#a9ee5e194a00832a5bfa76cf58df0bc4b\">Scheme&lt;SCHEME_CATMARK&gt;::assignSmoothLimitTangentMasks</a>(VERTEX <span class=\"keyword\">const</span>&amp; vertex,</div>\n-<div class=\"line\"><a id=\"l00454\" name=\"l00454\"></a><span class=\"lineno\">  454</span>        MASK&amp; tan1Mask, MASK&amp; tan2Mask)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00455\" name=\"l00455\"></a><span class=\"lineno\">  455</span> </div>\n-<div class=\"line\"><a id=\"l00456\" name=\"l00456\"></a><span class=\"lineno\">  456</span>    <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> MASK::Weight Weight;</div>\n-<div class=\"line\"><a id=\"l00457\" name=\"l00457\"></a><span class=\"lineno\">  457</span> </div>\n-<div class=\"line\"><a id=\"l00458\" name=\"l00458\"></a><span class=\"lineno\">  458</span>    <span class=\"keywordtype\">int</span> valence = vertex.GetNumFaces();</div>\n-<div class=\"line\"><a id=\"l00459\" name=\"l00459\"></a><span class=\"lineno\">  459</span>    <span class=\"keywordflow\">if</span> (valence == 2) {</div>\n-<div class=\"line\"><a id=\"l00460\" name=\"l00460\"></a><span class=\"lineno\">  460</span>        assignCornerLimitTangentMasks(vertex, tan1Mask, tan2Mask);</div>\n-<div class=\"line\"><a id=\"l00461\" name=\"l00461\"></a><span class=\"lineno\">  461</span>        <span class=\"keywordflow\">return</span>;</div>\n-<div class=\"line\"><a id=\"l00462\" name=\"l00462\"></a><span class=\"lineno\">  462</span>    }</div>\n-<div class=\"line\"><a id=\"l00463\" name=\"l00463\"></a><span class=\"lineno\">  463</span> </div>\n-<div class=\"line\"><a id=\"l00464\" name=\"l00464\"></a><span class=\"lineno\">  464</span>    <span class=\"comment\">//  Compute tan1 initially -- tan2 is simply a rotation:</span></div>\n-<div class=\"line\"><a id=\"l00465\" name=\"l00465\"></a><span class=\"lineno\">  465</span>    tan1Mask.SetNumVertexWeights(1);</div>\n-<div class=\"line\"><a id=\"l00466\" name=\"l00466\"></a><span class=\"lineno\">  466</span>    tan1Mask.SetNumEdgeWeights(valence);</div>\n-<div class=\"line\"><a id=\"l00467\" name=\"l00467\"></a><span class=\"lineno\">  467</span>    tan1Mask.SetNumFaceWeights(valence);</div>\n-<div class=\"line\"><a id=\"l00468\" name=\"l00468\"></a><span class=\"lineno\">  468</span>    tan1Mask.SetFaceWeightsForFaceCenters(<span class=\"keyword\">false</span>);</div>\n-<div class=\"line\"><a id=\"l00469\" name=\"l00469\"></a><span class=\"lineno\">  469</span> </div>\n-<div class=\"line\"><a id=\"l00470\" name=\"l00470\"></a><span class=\"lineno\">  470</span>    tan1Mask.VertexWeight(0) = 0.0f;</div>\n-<div class=\"line\"><a id=\"l00471\" name=\"l00471\"></a><span class=\"lineno\">  471</span> </div>\n-<div class=\"line\"><a id=\"l00472\" name=\"l00472\"></a><span class=\"lineno\">  472</span>    <span class=\"keywordflow\">if</span> (valence == 4) {</div>\n-<div class=\"line\"><a id=\"l00473\" name=\"l00473\"></a><span class=\"lineno\">  473</span>        tan1Mask.EdgeWeight(0) =  4.0f;</div>\n-<div class=\"line\"><a id=\"l00474\" name=\"l00474\"></a><span class=\"lineno\">  474</span>        tan1Mask.EdgeWeight(1) =  0.0f;</div>\n-<div class=\"line\"><a id=\"l00475\" name=\"l00475\"></a><span class=\"lineno\">  475</span>        tan1Mask.EdgeWeight(2) = -4.0f;</div>\n-<div class=\"line\"><a id=\"l00476\" name=\"l00476\"></a><span class=\"lineno\">  476</span>        tan1Mask.EdgeWeight(3) =  0.0f;</div>\n-<div class=\"line\"><a id=\"l00477\" name=\"l00477\"></a><span class=\"lineno\">  477</span> </div>\n-<div class=\"line\"><a id=\"l00478\" name=\"l00478\"></a><span class=\"lineno\">  478</span>        tan1Mask.FaceWeight(0) =  1.0f;</div>\n-<div class=\"line\"><a id=\"l00479\" name=\"l00479\"></a><span class=\"lineno\">  479</span>        tan1Mask.FaceWeight(1) = -1.0f;</div>\n-<div class=\"line\"><a id=\"l00480\" name=\"l00480\"></a><span class=\"lineno\">  480</span>        tan1Mask.FaceWeight(2) = -1.0f;</div>\n-<div class=\"line\"><a id=\"l00481\" name=\"l00481\"></a><span class=\"lineno\">  481</span>        tan1Mask.FaceWeight(3) =  1.0f;</div>\n-<div class=\"line\"><a id=\"l00482\" name=\"l00482\"></a><span class=\"lineno\">  482</span>    } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00483\" name=\"l00483\"></a><span class=\"lineno\">  483</span>        <span class=\"keywordtype\">double</span> theta = 2.0f * M_PI / (double)valence;</div>\n-<div class=\"line\"><a id=\"l00484\" name=\"l00484\"></a><span class=\"lineno\">  484</span> </div>\n-<div class=\"line\"><a id=\"l00485\" name=\"l00485\"></a><span class=\"lineno\">  485</span>        <span class=\"keywordtype\">double</span> cosTheta     = std::cos(theta);</div>\n-<div class=\"line\"><a id=\"l00486\" name=\"l00486\"></a><span class=\"lineno\">  486</span>        <span class=\"keywordtype\">double</span> cosHalfTheta = std::cos(theta * 0.5f);</div>\n-<div class=\"line\"><a id=\"l00487\" name=\"l00487\"></a><span class=\"lineno\">  487</span> </div>\n-<div class=\"line\"><a id=\"l00488\" name=\"l00488\"></a><span class=\"lineno\">  488</span>        <span class=\"keywordtype\">double</span> lambda = (5.0 / 16.0) + (1.0 / 16.0) *</div>\n-<div class=\"line\"><a id=\"l00489\" name=\"l00489\"></a><span class=\"lineno\">  489</span>                (cosTheta + cosHalfTheta * std::sqrt(2.0f * (9.0f + cosTheta)));</div>\n-<div class=\"line\"><a id=\"l00490\" name=\"l00490\"></a><span class=\"lineno\">  490</span> </div>\n-<div class=\"line\"><a id=\"l00491\" name=\"l00491\"></a><span class=\"lineno\">  491</span>        <span class=\"keywordtype\">double</span> edgeWeightScale = 4.0f;</div>\n-<div class=\"line\"><a id=\"l00492\" name=\"l00492\"></a><span class=\"lineno\">  492</span>        <span class=\"keywordtype\">double</span> faceWeightScale = 1.0f / (4.0f * lambda - 1.0f);</div>\n-<div class=\"line\"><a id=\"l00493\" name=\"l00493\"></a><span class=\"lineno\">  493</span> </div>\n-<div class=\"line\"><a id=\"l00494\" name=\"l00494\"></a><span class=\"lineno\">  494</span>        <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; valence; ++i) {</div>\n-<div class=\"line\"><a id=\"l00495\" name=\"l00495\"></a><span class=\"lineno\">  495</span>            <span class=\"keywordtype\">double</span> cosThetaI      = std::cos(  i  * theta);</div>\n-<div class=\"line\"><a id=\"l00496\" name=\"l00496\"></a><span class=\"lineno\">  496</span>            <span class=\"keywordtype\">double</span> cosThetaIplus1 = std::cos((i+1)* theta);</div>\n-<div class=\"line\"><a id=\"l00497\" name=\"l00497\"></a><span class=\"lineno\">  497</span> </div>\n-<div class=\"line\"><a id=\"l00498\" name=\"l00498\"></a><span class=\"lineno\">  498</span>            tan1Mask.EdgeWeight(i) = (Weight) (edgeWeightScale * cosThetaI);</div>\n-<div class=\"line\"><a id=\"l00499\" name=\"l00499\"></a><span class=\"lineno\">  499</span>            tan1Mask.FaceWeight(i) = (Weight) (faceWeightScale * (cosThetaI + cosThetaIplus1));</div>\n-<div class=\"line\"><a id=\"l00500\" name=\"l00500\"></a><span class=\"lineno\">  500</span>        }</div>\n-<div class=\"line\"><a id=\"l00501\" name=\"l00501\"></a><span class=\"lineno\">  501</span>    }</div>\n-<div class=\"line\"><a id=\"l00502\" name=\"l00502\"></a><span class=\"lineno\">  502</span> </div>\n-<div class=\"line\"><a id=\"l00503\" name=\"l00503\"></a><span class=\"lineno\">  503</span>    <span class=\"comment\">//  Now rotate/copy tan1 weights to tan2:</span></div>\n-<div class=\"line\"><a id=\"l00504\" name=\"l00504\"></a><span class=\"lineno\">  504</span>    tan2Mask.SetNumVertexWeights(1);</div>\n-<div class=\"line\"><a id=\"l00505\" name=\"l00505\"></a><span class=\"lineno\">  505</span>    tan2Mask.SetNumEdgeWeights(valence);</div>\n-<div class=\"line\"><a id=\"l00506\" name=\"l00506\"></a><span class=\"lineno\">  506</span>    tan2Mask.SetNumFaceWeights(valence);</div>\n-<div class=\"line\"><a id=\"l00507\" name=\"l00507\"></a><span class=\"lineno\">  507</span>    tan2Mask.SetFaceWeightsForFaceCenters(<span class=\"keyword\">false</span>);</div>\n-<div class=\"line\"><a id=\"l00508\" name=\"l00508\"></a><span class=\"lineno\">  508</span> </div>\n-<div class=\"line\"><a id=\"l00509\" name=\"l00509\"></a><span class=\"lineno\">  509</span>    tan2Mask.VertexWeight(0) = 0.0f;</div>\n-<div class=\"line\"><a id=\"l00510\" name=\"l00510\"></a><span class=\"lineno\">  510</span>    <span class=\"keywordflow\">if</span> (valence == 4) {</div>\n-<div class=\"line\"><a id=\"l00511\" name=\"l00511\"></a><span class=\"lineno\">  511</span>        tan2Mask.EdgeWeight(0) =  0.0f;</div>\n-<div class=\"line\"><a id=\"l00512\" name=\"l00512\"></a><span class=\"lineno\">  512</span>        tan2Mask.EdgeWeight(1) =  4.0f;</div>\n-<div class=\"line\"><a id=\"l00513\" name=\"l00513\"></a><span class=\"lineno\">  513</span>        tan2Mask.EdgeWeight(2) =  0.0f;</div>\n-<div class=\"line\"><a id=\"l00514\" name=\"l00514\"></a><span class=\"lineno\">  514</span>        tan2Mask.EdgeWeight(3) = -4.0f;</div>\n-<div class=\"line\"><a id=\"l00515\" name=\"l00515\"></a><span class=\"lineno\">  515</span> </div>\n-<div class=\"line\"><a id=\"l00516\" name=\"l00516\"></a><span class=\"lineno\">  516</span>        tan2Mask.FaceWeight(0) =  1.0f;</div>\n-<div class=\"line\"><a id=\"l00517\" name=\"l00517\"></a><span class=\"lineno\">  517</span>        tan2Mask.FaceWeight(1) =  1.0f;</div>\n-<div class=\"line\"><a id=\"l00518\" name=\"l00518\"></a><span class=\"lineno\">  518</span>        tan2Mask.FaceWeight(2) = -1.0f;</div>\n-<div class=\"line\"><a id=\"l00519\" name=\"l00519\"></a><span class=\"lineno\">  519</span>        tan2Mask.FaceWeight(3) = -1.0f;</div>\n-<div class=\"line\"><a id=\"l00520\" name=\"l00520\"></a><span class=\"lineno\">  520</span>    } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00521\" name=\"l00521\"></a><span class=\"lineno\">  521</span>        tan2Mask.EdgeWeight(0) = tan1Mask.EdgeWeight(valence-1);</div>\n-<div class=\"line\"><a id=\"l00522\" name=\"l00522\"></a><span class=\"lineno\">  522</span>        tan2Mask.FaceWeight(0) = tan1Mask.FaceWeight(valence-1);</div>\n-<div class=\"line\"><a id=\"l00523\" name=\"l00523\"></a><span class=\"lineno\">  523</span>        <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 1; i &lt; valence; ++i) {</div>\n-<div class=\"line\"><a id=\"l00524\" name=\"l00524\"></a><span class=\"lineno\">  524</span>            tan2Mask.EdgeWeight(i) = tan1Mask.EdgeWeight(i-1);</div>\n-<div class=\"line\"><a id=\"l00525\" name=\"l00525\"></a><span class=\"lineno\">  525</span>            tan2Mask.FaceWeight(i) = tan1Mask.FaceWeight(i-1);</div>\n-<div class=\"line\"><a id=\"l00526\" name=\"l00526\"></a><span class=\"lineno\">  526</span>        }</div>\n-<div class=\"line\"><a id=\"l00527\" name=\"l00527\"></a><span class=\"lineno\">  527</span>    }</div>\n-<div class=\"line\"><a id=\"l00528\" name=\"l00528\"></a><span class=\"lineno\">  528</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00529\" name=\"l00529\"></a><span class=\"lineno\">  529</span> </div>\n-<div class=\"line\"><a id=\"l00530\" name=\"l00530\"></a><span class=\"lineno\">  530</span>} <span class=\"comment\">// end namespace sdc</span></div>\n-<div class=\"line\"><a id=\"l00531\" name=\"l00531\"></a><span class=\"lineno\">  531</span> </div>\n-<div class=\"line\"><a id=\"l00532\" name=\"l00532\"></a><span class=\"lineno\">  532</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00533\" name=\"l00533\"></a><span class=\"lineno\">  533</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00534\" name=\"l00534\"></a><span class=\"lineno\">  534</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l00535\" name=\"l00535\"></a><span class=\"lineno\">  535</span> </div>\n-<div class=\"line\"><a id=\"l00536\" name=\"l00536\"></a><span class=\"lineno\">  536</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_SDC_CATMARK_SCHEME_H */</span><span class=\"preprocessor\"></span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa00913_html_a61ef2f8f765ba17f8036bcc0f0fa887b\"><div class=\"ttname\"><a href=\"a00913.html#a61ef2f8f765ba17f8036bcc0f0fa887b\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Split</a></div><div class=\"ttdeci\">Split</div><div class=\"ttdoc\">Enumerated type for all face splitting schemes.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01492_source.html#l00047\">types.h:47</a></div></div>\n-<div class=\"ttc\" id=\"aa00913_html_a61ef2f8f765ba17f8036bcc0f0fa887ba56eed514f6a5971f198c9e421054b513\"><div class=\"ttname\"><a href=\"a00913.html#a61ef2f8f765ba17f8036bcc0f0fa887ba56eed514f6a5971f198c9e421054b513\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::SPLIT_TO_QUADS</a></div><div class=\"ttdeci\">@ SPLIT_TO_QUADS</div><div class=\"ttdoc\">Used by Catmark and Bilinear.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01492_source.html#l00048\">types.h:48</a></div></div>\n-<div class=\"ttc\" id=\"aa01337_html_a10fe8c2b78e5c59377614876a362c38baf222ead5fa4875f2ea2794c2d765a87d\"><div class=\"ttname\"><a href=\"a01337.html#a10fe8c2b78e5c59377614876a362c38baf222ead5fa4875f2ea2794c2d765a87d\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::TRI_SUB_SMOOTH</a></div><div class=\"ttdeci\">@ TRI_SUB_SMOOTH</div><div class=\"ttdoc\">&quot;smooth triangle&quot; weights (Catmark scheme only)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00734_source.html#l00075\">options.h:74</a></div></div>\n-<div class=\"ttc\" id=\"aa01341_html_a059f5c2c9193be58be31955e987a0600\"><div class=\"ttname\"><a href=\"a01341.html#a059f5c2c9193be58be31955e987a0600\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::assignSmoothMaskForEdge</a></div><div class=\"ttdeci\">void assignSmoothMaskForEdge(EDGE const &amp;edge, MASK &amp;mask) const</div></div>\n-<div class=\"ttc\" id=\"aa01341_html_a14b97ddde5fba31ca7f933508ee649da\"><div class=\"ttname\"><a href=\"a01341.html#a14b97ddde5fba31ca7f933508ee649da\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::GetTopologicalSplitType</a></div><div class=\"ttdeci\">static Split GetTopologicalSplitType()</div></div>\n-<div class=\"ttc\" id=\"aa01341_html_a2439e78373d9dfd6ad3ab373c7c32dcc\"><div class=\"ttname\"><a href=\"a01341.html#a2439e78373d9dfd6ad3ab373c7c32dcc\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::assignCreaseMaskForVertex</a></div><div class=\"ttdeci\">void assignCreaseMaskForVertex(VERTEX const &amp;edge, MASK &amp;mask, int const creaseEnds[2]) const</div></div>\n-<div class=\"ttc\" id=\"aa01341_html_a4f8e559b93bbaf26ea0d40b1fa2f194f\"><div class=\"ttname\"><a href=\"a01341.html#a4f8e559b93bbaf26ea0d40b1fa2f194f\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::assignCreaseLimitTangentMasks</a></div><div class=\"ttdeci\">void assignCreaseLimitTangentMasks(VERTEX const &amp;vertex, MASK &amp;tan1, MASK &amp;tan2, int const creaseEnds[2]) const</div></div>\n-<div class=\"ttc\" id=\"aa01341_html_a531004716c07aad5436cb2db27e1ec24\"><div class=\"ttname\"><a href=\"a01341.html#a531004716c07aad5436cb2db27e1ec24\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::GetRegularFaceSize</a></div><div class=\"ttdeci\">static int GetRegularFaceSize()</div></div>\n-<div class=\"ttc\" id=\"aa01341_html_a736c10944cb921b334fbd8b81866d59f\"><div class=\"ttname\"><a href=\"a01341.html#a736c10944cb921b334fbd8b81866d59f\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::assignSmoothLimitMask</a></div><div class=\"ttdeci\">void assignSmoothLimitMask(VERTEX const &amp;vertex, MASK &amp;pos) const</div></div>\n-<div class=\"ttc\" id=\"aa01341_html_a73cf51e4315ca86e5e0a3954c92f8f74\"><div class=\"ttname\"><a href=\"a01341.html#a73cf51e4315ca86e5e0a3954c92f8f74\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::GetLocalNeighborhoodSize</a></div><div class=\"ttdeci\">static int GetLocalNeighborhoodSize()</div></div>\n-<div class=\"ttc\" id=\"aa01341_html_a7c9316f7212d3ea41db7f3f1a66cc7e5\"><div class=\"ttname\"><a href=\"a01341.html#a7c9316f7212d3ea41db7f3f1a66cc7e5\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::assignCreaseLimitMask</a></div><div class=\"ttdeci\">void assignCreaseLimitMask(VERTEX const &amp;vertex, MASK &amp;pos, int const creaseEnds[2]) const</div></div>\n-<div class=\"ttc\" id=\"aa01341_html_a84788a5a93f17e648103123c9f4a33f9\"><div class=\"ttname\"><a href=\"a01341.html#a84788a5a93f17e648103123c9f4a33f9\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::assignSmoothMaskForVertex</a></div><div class=\"ttdeci\">void assignSmoothMaskForVertex(VERTEX const &amp;edge, MASK &amp;mask) const</div></div>\n-<div class=\"ttc\" id=\"aa01341_html_a8f7e983b2195ac6b388c7a6db17f8cb0\"><div class=\"ttname\"><a href=\"a01341.html#a8f7e983b2195ac6b388c7a6db17f8cb0\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::GetRegularVertexValence</a></div><div class=\"ttdeci\">static int GetRegularVertexValence()</div></div>\n-<div class=\"ttc\" id=\"aa01341_html_a9ee5e194a00832a5bfa76cf58df0bc4b\"><div class=\"ttname\"><a href=\"a01341.html#a9ee5e194a00832a5bfa76cf58df0bc4b\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::assignSmoothLimitTangentMasks</a></div><div class=\"ttdeci\">void assignSmoothLimitTangentMasks(VERTEX const &amp;vertex, MASK &amp;tan1, MASK &amp;tan2) const</div></div>\n-<div class=\"ttc\" id=\"aa01341_html_aa2821d365ea8135d6316c0f926f87ccb\"><div class=\"ttname\"><a href=\"a01341.html#aa2821d365ea8135d6316c0f926f87ccb\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::assignCornerLimitMask</a></div><div class=\"ttdeci\">void assignCornerLimitMask(VERTEX const &amp;vertex, MASK &amp;pos) const</div></div>\n-<div class=\"ttc\" id=\"aa01341_html_ae9ee7f11f51ec6ff8c43ab0729454b54\"><div class=\"ttname\"><a href=\"a01341.html#ae9ee7f11f51ec6ff8c43ab0729454b54\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::assignCornerLimitTangentMasks</a></div><div class=\"ttdeci\">void assignCornerLimitTangentMasks(VERTEX const &amp;vertex, MASK &amp;tan1, MASK &amp;tan2) const</div></div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span> </div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span>}  <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span> </div>\n+<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_D3D11MESH_H</span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa00912_html_ae5c8e80d05d6eaee105d8eecfa9ab609\"><div class=\"ttname\"><a href=\"a00912.html#ae5c8e80d05d6eaee105d8eecfa9ab609\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11MeshInterface</a></div><div class=\"ttdeci\">MeshInterface&lt; D3D11PatchTable &gt; D3D11MeshInterface</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00737_source.html#l00038\">d3d11Mesh.h:38</a></div></div>\n+<div class=\"ttc\" id=\"aa01269_html\"><div class=\"ttname\"><a href=\"a01269.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshInterface</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00068\">mesh.h:68</a></div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_f61368944c63c2c1f8c69bc232e59c39.html\">sdc</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00737.html\">catmarkScheme.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00737.html\">d3d11Mesh.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-catmarkScheme.h\n+d3d11Mesh.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2014 DreamWorks Animation LLC.\n+2// Copyright 2013 Pixar\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -23,592 +23,43 @@\n 17//\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n-24#ifndef OPENSUBDIV3_SDC_CATMARK_SCHEME_H\n-25#define OPENSUBDIV3_SDC_CATMARK_SCHEME_H\n-26\n-27#include \"../version.h\"\n-28\n-29#include \"../sdc/scheme.h\"\n-30\n-31#include <cassert>\n-32#include <cmath>\n-33\n-34namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-35namespace OPENSUBDIV_VERSION {\n-36\n-37namespace Sdc {\n-38\n-39//\n-40// Specializations for Scheme<SCHEME_CATMARK>:\n-41//\n+24\n+25#ifndef OPENSUBDIV3_OSD_D3D11MESH_H\n+26#define OPENSUBDIV3_OSD_D3D11MESH_H\n+27\n+28#include \"../version.h\"\n+29\n+30#include \"../osd/mesh.h\"\n+31#include \"../osd/d3d11PatchTable.h\"\n+32\n+33namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+34namespace OPENSUBDIV_VERSION {\n+35\n+36namespace Osd {\n+37\n+_\b3_\b8typedef _\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\bD_\b3_\bD_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b> _\bD_\b3_\bD_\b1_\b1_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be;\n+39\n+40\n+41} // end namespace Osd\n 42\n-43//\n-44// Catmark traits:\n-45//\n-46template <>\n-_\b4_\b7inline _\bS_\bp_\bl_\bi_\bt _\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bC_\bA_\bT_\bM_\bA_\bR_\bK_\b>_\b:_\b:_\bG_\be_\bt_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\bi_\bc_\ba_\bl_\bS_\bp_\bl_\bi_\bt_\bT_\by_\bp_\be() { return\n-_\bS_\bP_\bL_\bI_\bT_\b__\bT_\bO_\b__\bQ_\bU_\bA_\bD_\bS; }\n-48\n-49template <>\n-_\b5_\b0inline int _\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bC_\bA_\bT_\bM_\bA_\bR_\bK_\b>_\b:_\b:_\bG_\be_\bt_\bR_\be_\bg_\bu_\bl_\ba_\br_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be() { return 4; }\n-51\n-52template <>\n-_\b5_\b3inline int _\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bC_\bA_\bT_\bM_\bA_\bR_\bK_\b>_\b:_\b:_\bG_\be_\bt_\bR_\be_\bg_\bu_\bl_\ba_\br_\bV_\be_\br_\bt_\be_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be() { return 4; }\n-54\n-55template <>\n-_\b5_\b6inline int _\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bC_\bA_\bT_\bM_\bA_\bR_\bK_\b>_\b:_\b:_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bh_\bo_\bo_\bd_\bS_\bi_\bz_\be() { return 1; }\n-57\n-58\n-59//\n-60// Masks for edge-vertices: the hard Crease mask does not need to be\n-specialized\n-61// (simply the midpoint), so all that is left is the Smooth case:\n-62//\n-63// The Smooth mask is complicated by the need to support the \"triangle\n-subdivision\"\n-64// option, which applies different weighting in the presence of triangles. It\n-is\n-65// up for debate as to whether this is useful or not -- we may be able to\n-deprecate\n-66// this option.\n-67//\n-68template <>\n-69template <typename EDGE, typename MASK>\n-70inline void\n-_\b7_\b1_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bC_\bA_\bT_\bM_\bA_\bR_\bK_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bS_\bm_\bo_\bo_\bt_\bh_\bM_\ba_\bs_\bk_\bF_\bo_\br_\bE_\bd_\bg_\be(EDGE const& edge, MASK& mask)\n-const {\n-72\n-73 typedef typename MASK::Weight Weight;\n-74\n-75 int faceCount = edge.GetNumFaces();\n-76\n-77 mask.SetNumVertexWeights(2);\n-78 mask.SetNumEdgeWeights(0);\n-79 mask.SetNumFaceWeights(faceCount);\n-80 mask.SetFaceWeightsForFaceCenters(true);\n-81\n-82 //\n-83 // Determine if we need to inspect incident faces and apply alternate\n-weighting for\n-84 // triangles -- and if so, determine which of the two are triangles.\n-85 //\n-86 bool face0IsTri = false;\n-87 bool face1IsTri = false;\n-88 bool useTriangleOption = (_options.GetTriangleSubdivision() == _\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bT_\bR_\bI_\b__\bS_\bU_\bB_\b__\bS_\bM_\bO_\bO_\bT_\bH);\n-89 if (useTriangleOption) {\n-90 if (faceCount == 2) {\n-91 //\n-92 // Ideally we want to avoid this inspection when we have already subdivided\n-at\n-93 // least once -- need something in the Edge interface to help avoid this,\n-e.g.\n-94 // an IsRegular() query, the subdivision level...\n-95 //\n-96 int vertsPerFace[2];\n-97 edge.GetNumVerticesPerFace(vertsPerFace);\n-98\n-99 face0IsTri = (vertsPerFace[0] == 3);\n-100 face1IsTri = (vertsPerFace[1] == 3);\n-101 useTriangleOption = face0IsTri || face1IsTri;\n-102 } else {\n-103 useTriangleOption = false;\n-104 }\n-105 }\n-106\n-107 if (! useTriangleOption) {\n-108 mask.VertexWeight(0) = 0.25f;\n-109 mask.VertexWeight(1) = 0.25f;\n-110\n-111 if (faceCount == 2) {\n-112 mask.FaceWeight(0) = 0.25f;\n-113 mask.FaceWeight(1) = 0.25f;\n-114 } else {\n-115 Weight fWeight = 0.5f / (Weight)faceCount;\n-116 for (int i = 0; i < faceCount; ++i) {\n-117 mask.FaceWeight(i) = fWeight;\n-118 }\n-119 }\n-120 } else {\n-121 //\n-122 // This mimics the implementation in Hbr in terms of order of operations.\n-123 //\n-124 const Weight CATMARK_SMOOTH_TRI_EDGE_WEIGHT = (Weight) 0.470;\n-125\n-126 Weight f0Weight = face0IsTri ? CATMARK_SMOOTH_TRI_EDGE_WEIGHT : 0.25f;\n-127 Weight f1Weight = face1IsTri ? CATMARK_SMOOTH_TRI_EDGE_WEIGHT : 0.25f;\n-128\n-129 Weight fWeight = 0.5f * (f0Weight + f1Weight);\n-130 Weight vWeight = 0.5f * (1.0f - 2.0f * fWeight);\n-131\n-132 mask.VertexWeight(0) = vWeight;\n-133 mask.VertexWeight(1) = vWeight;\n-134\n-135 mask.FaceWeight(0) = fWeight;\n-136 mask.FaceWeight(1) = fWeight;\n-137 }\n-138}\n-139\n-140\n-141//\n-142// Masks for vertex-vertices: the hard Corner mask does not need to be\n-specialized\n-143// (simply the vertex itself), leaving the Crease and Smooth cases (Dart is\n-smooth):\n-144//\n-145template <>\n-146template <typename VERTEX, typename MASK>\n-147inline void\n-_\b1_\b4_\b8_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bC_\bA_\bT_\bM_\bA_\bR_\bK_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\br_\be_\ba_\bs_\be_\bM_\ba_\bs_\bk_\bF_\bo_\br_\bV_\be_\br_\bt_\be_\bx(VERTEX const& vertex,\n-MASK& mask,\n-149 int const creaseEnds[2]) const {\n-150 typedef typename MASK::Weight Weight;\n-151\n-152 int valence = vertex.GetNumEdges();\n-153\n-154 mask.SetNumVertexWeights(1);\n-155 mask.SetNumEdgeWeights(valence);\n-156 mask.SetNumFaceWeights(0);\n-157 mask.SetFaceWeightsForFaceCenters(false);\n-158\n-159 Weight vWeight = 0.75f;\n-160 Weight eWeight = 0.125f;\n-161\n-162 mask.VertexWeight(0) = vWeight;\n-163 for (int i = 0; i < valence; ++i) {\n-164 mask.EdgeWeight(i) = 0.0f;\n-165 }\n-166 mask.EdgeWeight(creaseEnds[0]) = eWeight;\n-167 mask.EdgeWeight(creaseEnds[1]) = eWeight;\n-168}\n-169\n-170template <>\n-171template <typename VERTEX, typename MASK>\n-172inline void\n-_\b1_\b7_\b3_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bC_\bA_\bT_\bM_\bA_\bR_\bK_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bS_\bm_\bo_\bo_\bt_\bh_\bM_\ba_\bs_\bk_\bF_\bo_\br_\bV_\be_\br_\bt_\be_\bx(VERTEX const& vertex,\n-MASK& mask) const {\n-174\n-175 typedef typename MASK::Weight Weight;\n-176\n-177 //\n-178 // A Smooth vertex must be manifold and interior -- manifold boundary\n-vertices will be\n-179 // Creases and non-manifold vertices of any kind will be Corners or\n-Creases. If smooth\n-180 // rules for non-manifold vertices are ever defined, this will need\n-adjusting:\n-181 //\n-182 assert(vertex.GetNumFaces() == vertex.GetNumEdges());\n-183\n-184 int valence = vertex.GetNumFaces();\n-185\n-186 mask.SetNumVertexWeights(1);\n-187 mask.SetNumEdgeWeights(valence);\n-188 mask.SetNumFaceWeights(valence);\n-189 mask.SetFaceWeightsForFaceCenters(true);\n-190\n-191 Weight vWeight = (Weight)(valence - 2) / (Weight)valence;\n-192 Weight fWeight = 1.0f / (Weight)(valence * valence);\n-193 Weight eWeight = fWeight;\n-194\n-195 mask.VertexWeight(0) = vWeight;\n-196 for (int i = 0; i < valence; ++i) {\n-197 mask.EdgeWeight(i) = eWeight;\n-198 mask.FaceWeight(i) = fWeight;\n-199 }\n-200}\n-201\n-202//\n-203// Limit masks for position:\n-204//\n-205template <>\n-206template <typename VERTEX, typename MASK>\n-207inline void\n-_\b2_\b0_\b8_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bC_\bA_\bT_\bM_\bA_\bR_\bK_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\br_\bn_\be_\br_\bL_\bi_\bm_\bi_\bt_\bM_\ba_\bs_\bk(VERTEX const& /* vertex */,\n-MASK& posMask) const {\n-209\n-210 posMask.SetNumVertexWeights(1);\n-211 posMask.SetNumEdgeWeights(0);\n-212 posMask.SetNumFaceWeights(0);\n-213 posMask.SetFaceWeightsForFaceCenters(false);\n-214\n-215 posMask.VertexWeight(0) = 1.0f;\n-216}\n-217\n-218template <>\n-219template <typename VERTEX, typename MASK>\n-220inline void\n-_\b2_\b2_\b1_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bC_\bA_\bT_\bM_\bA_\bR_\bK_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\br_\be_\ba_\bs_\be_\bL_\bi_\bm_\bi_\bt_\bM_\ba_\bs_\bk(VERTEX const& vertex, MASK&\n-posMask,\n-222 int const creaseEnds[2]) const {\n-223\n-224 typedef typename MASK::Weight Weight;\n-225\n-226 int valence = vertex.GetNumEdges();\n-227\n-228 posMask.SetNumVertexWeights(1);\n-229 posMask.SetNumEdgeWeights(valence);\n-230 posMask.SetNumFaceWeights(0);\n-231 posMask.SetFaceWeightsForFaceCenters(false);\n-232\n-233 Weight vWeight = (Weight)(2.0 / 3.0);\n-234 Weight eWeight = (Weight)(1.0 / 6.0);\n-235\n-236 posMask.VertexWeight(0) = vWeight;\n-237 for (int i = 0; i < valence; ++i) {\n-238 posMask.EdgeWeight(i) = 0.0f;\n-239 }\n-240 posMask.EdgeWeight(creaseEnds[0]) = eWeight;\n-241 posMask.EdgeWeight(creaseEnds[1]) = eWeight;\n-242}\n-243\n-244template <>\n-245template <typename VERTEX, typename MASK>\n-246inline void\n-_\b2_\b4_\b7_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bC_\bA_\bT_\bM_\bA_\bR_\bK_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bS_\bm_\bo_\bo_\bt_\bh_\bL_\bi_\bm_\bi_\bt_\bM_\ba_\bs_\bk(VERTEX const& vertex, MASK&\n-posMask) const {\n-248\n-249 typedef typename MASK::Weight Weight;\n-250\n-251 int valence = vertex.GetNumFaces();\n-252 if (valence == 2) {\n-253 assignCornerLimitMask(vertex, posMask);\n-254 return;\n-255 }\n-256\n-257 posMask.SetNumVertexWeights(1);\n-258 posMask.SetNumEdgeWeights(valence);\n-259 posMask.SetNumFaceWeights(valence);\n-260 posMask.SetFaceWeightsForFaceCenters(false);\n-261\n-262 // Specialize for the regular case:\n-263 if (valence == 4) {\n-264 Weight fWeight = (Weight)(1.0 / 36.0);\n-265 Weight eWeight = (Weight)(1.0 / 9.0);\n-266 Weight vWeight = (Weight)(4.0 / 9.0);\n-267\n-268 posMask.VertexWeight(0) = vWeight;\n-269\n-270 posMask.EdgeWeight(0) = eWeight;\n-271 posMask.EdgeWeight(1) = eWeight;\n-272 posMask.EdgeWeight(2) = eWeight;\n-273 posMask.EdgeWeight(3) = eWeight;\n-274\n-275 posMask.FaceWeight(0) = fWeight;\n-276 posMask.FaceWeight(1) = fWeight;\n-277 posMask.FaceWeight(2) = fWeight;\n-278 posMask.FaceWeight(3) = fWeight;\n-279 } else {\n-280 Weight Valence = (Weight) valence;\n-281\n-282 Weight fWeight = 1.0f / (Valence * (Valence + 5.0f));\n-283 Weight eWeight = 4.0f * fWeight;\n-284 Weight vWeight = 1.0f - Valence * (eWeight + fWeight);\n-285\n-286 posMask.VertexWeight(0) = vWeight;\n-287 for (int i = 0; i < valence; ++i) {\n-288 posMask.EdgeWeight(i) = eWeight;\n-289 posMask.FaceWeight(i) = fWeight;\n-290 }\n-291 }\n-292}\n-293\n-294//\n-295// Limit masks for tangents -- these are stubs for now, or have a temporary\n-296// implementation\n-297//\n-298template <>\n-299template <typename VERTEX, typename MASK>\n-300inline void\n-_\b3_\b0_\b1_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bC_\bA_\bT_\bM_\bA_\bR_\bK_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\br_\bn_\be_\br_\bL_\bi_\bm_\bi_\bt_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bM_\ba_\bs_\bk_\bs(VERTEX const& vertex,\n-302 MASK& tan1Mask, MASK& tan2Mask) const {\n-303\n-304 int valence = vertex.GetNumEdges();\n-305\n-306 tan1Mask.SetNumVertexWeights(1);\n-307 tan1Mask.SetNumEdgeWeights(valence);\n-308 tan1Mask.SetNumFaceWeights(0);\n-309 tan1Mask.SetFaceWeightsForFaceCenters(false);\n-310\n-311 tan2Mask.SetNumVertexWeights(1);\n-312 tan2Mask.SetNumEdgeWeights(valence);\n-313 tan2Mask.SetNumFaceWeights(0);\n-314 tan2Mask.SetFaceWeightsForFaceCenters(false);\n-315\n-316 // Should be at least 2 edges -- be sure to clear weights for any more:\n-317 tan1Mask.VertexWeight(0) = -1.0f;\n-318 tan1Mask.EdgeWeight(0) = 1.0f;\n-319 tan1Mask.EdgeWeight(1) = 0.0f;\n-320\n-321 tan2Mask.VertexWeight(0) = -1.0f;\n-322 tan2Mask.EdgeWeight(0) = 0.0f;\n-323 tan2Mask.EdgeWeight(1) = 1.0f;\n-324\n-325 for (int i = 2; i < valence; ++i) {\n-326 tan1Mask.EdgeWeight(i) = 0.0f;\n-327 tan2Mask.EdgeWeight(i) = 0.0f;\n-328 }\n-329}\n-330\n-331template <>\n-332template <typename VERTEX, typename MASK>\n-333inline void\n-_\b3_\b3_\b4_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bC_\bA_\bT_\bM_\bA_\bR_\bK_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\br_\be_\ba_\bs_\be_\bL_\bi_\bm_\bi_\bt_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bM_\ba_\bs_\bk_\bs(VERTEX const& vertex,\n-335 MASK& tan1Mask, MASK& tan2Mask, int const creaseEnds[2]) const {\n-336\n-337 typedef typename MASK::Weight Weight;\n-338\n-339 //\n-340 // First, the tangent along the crease:\n-341 // The first crease edge is considered the \"leading\" edge of the span\n-342 // of surface for which we are evaluating tangents and the second edge the\n-343 // \"trailing edge\". By convention, the tangent along the crease is oriented\n-344 // in the direction of the leading edge.\n-345 //\n-346 int numEdges = vertex.GetNumEdges();\n-347 int numFaces = vertex.GetNumFaces();\n-348\n-349 tan1Mask.SetNumVertexWeights(1);\n-350 tan1Mask.SetNumEdgeWeights(numEdges);\n-351 tan1Mask.SetNumFaceWeights(numFaces);\n-352 tan1Mask.SetFaceWeightsForFaceCenters(false);\n-353\n-354 tan1Mask.VertexWeight(0) = 0.0f;\n-355 for (int i = 0; i < numEdges; ++i) {\n-356 tan1Mask.EdgeWeight(i) = 0.0f;\n-357 }\n-358 for (int i = 0; i < numFaces; ++i) {\n-359 tan1Mask.FaceWeight(i) = 0.0f;\n-360 }\n-361\n-362 tan1Mask.EdgeWeight(creaseEnds[0]) = 0.5f;\n-363 tan1Mask.EdgeWeight(creaseEnds[1]) = -0.5f;\n-364\n-365 //\n-366 // Second, the tangent across the interior faces:\n-367 // Note this is ambiguous for an interior vertex. We currently return\n-368 // the tangent for the surface in the counter-clockwise span between the\n-369 // leading and trailing edges that form the crease. Given the expected\n-370 // computation of a surface normal as Tan1 X Tan2, this tangent should be\n-371 // oriented \"inward\" from the crease/boundary -- across the surface rather\n-372 // than outward and away from it.\n-373 //\n-374 tan2Mask.SetNumVertexWeights(1);\n-375 tan2Mask.SetNumEdgeWeights(numEdges);\n-376 tan2Mask.SetNumFaceWeights(numFaces);\n-377 tan2Mask.SetFaceWeightsForFaceCenters(false);\n-378\n-379 // Prepend weights of 0 preceding the crease:\n-380 for (int i = 0; i < creaseEnds[0]; ++i) {\n-381 tan2Mask.EdgeWeight(i) = 0.0f;\n-382 tan2Mask.FaceWeight(i) = 0.0f;\n-383 }\n-384\n-385 // Assign weights to crease edge and interior points:\n-386 int interiorEdgeCount = creaseEnds[1] - creaseEnds[0] - 1;\n-387 if (interiorEdgeCount == 1) {\n-388 // The regular case -- uniform B-spline cross-tangent:\n-389\n-390 tan2Mask.VertexWeight(0) = (Weight)(-4.0 / 6.0);\n-391\n-392 tan2Mask.EdgeWeight(creaseEnds[0]) = (Weight)(-1.0 / 6.0);\n-393 tan2Mask.EdgeWeight(creaseEnds[0] + 1) = (Weight)( 4.0 / 6.0);\n-394 tan2Mask.EdgeWeight(creaseEnds[1]) = (Weight)(-1.0 / 6.0);\n-395\n-396 tan2Mask.FaceWeight(creaseEnds[0]) = (Weight)(1.0 / 6.0);\n-397 tan2Mask.FaceWeight(creaseEnds[0] + 1) = (Weight)(1.0 / 6.0);\n-398 } else if (interiorEdgeCount > 1) {\n-399 // The irregular case -- formulae from Biermann et al:\n-400\n-401 double k = (double) (interiorEdgeCount + 1);\n-402 double theta = M_PI / k;\n-403\n-404 double cosTheta = std::cos(theta);\n-405 double sinTheta = std::sin(theta);\n-406\n-407 // Loop/Schaefer use a different divisor here (3*k + cos(theta)):\n-408 double commonDenom = 1.0f / (k * (3.0f + cosTheta));\n-409 double R = (cosTheta + 1.0f) / sinTheta;\n-410\n-411 double vertexWeight = 4.0f * R * (cosTheta - 1.0f);\n-412 double creaseWeight = -R * (1.0f + 2.0f * cosTheta);\n-413\n-414 tan2Mask.VertexWeight(0) = (Weight) (vertexWeight * commonDenom);\n-415\n-416 tan2Mask.EdgeWeight(creaseEnds[0]) = (Weight) (creaseWeight * commonDenom);\n-417 tan2Mask.EdgeWeight(creaseEnds[1]) = (Weight) (creaseWeight * commonDenom);\n-418\n-419 tan2Mask.FaceWeight(creaseEnds[0]) = (Weight) (sinTheta * commonDenom);\n-420\n-421 double sinThetaI = 0.0f;\n-422 double sinThetaIplus1 = sinTheta;\n-423 for (int i = 1; i < k; ++i) {\n-424 sinThetaI = sinThetaIplus1;\n-425 sinThetaIplus1 = std::sin((i+1)*theta);\n-426\n-427 tan2Mask.EdgeWeight(creaseEnds[0] + i) = (Weight) ((4.0f * sinThetaI) *\n-commonDenom);\n-428 tan2Mask.FaceWeight(creaseEnds[0] + i) = (Weight) ((sinThetaI +\n-sinThetaIplus1) * commonDenom);\n-429 }\n-430 } else {\n-431 // Special case for a single face -- simple average of boundary edges:\n-432\n-433 tan2Mask.VertexWeight(0) = -6.0f;\n-434\n-435 tan2Mask.EdgeWeight(creaseEnds[0]) = 3.0f;\n-436 tan2Mask.EdgeWeight(creaseEnds[1]) = 3.0f;\n-437\n-438 tan2Mask.FaceWeight(creaseEnds[0]) = 0.0f;\n-439 }\n-440\n-441 // Append weights of 0 following the crease:\n-442 for (int i = creaseEnds[1]; i < numFaces; ++i) {\n-443 tan2Mask.FaceWeight(i) = 0.0f;\n-444 }\n-445 for (int i = creaseEnds[1] + 1; i < numEdges; ++i) {\n-446 tan2Mask.EdgeWeight(i) = 0.0f;\n-447 }\n-448}\n-449\n-450template <>\n-451template <typename VERTEX, typename MASK>\n-452inline void\n-_\b4_\b5_\b3_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bC_\bA_\bT_\bM_\bA_\bR_\bK_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bS_\bm_\bo_\bo_\bt_\bh_\bL_\bi_\bm_\bi_\bt_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bM_\ba_\bs_\bk_\bs(VERTEX const& vertex,\n-454 MASK& tan1Mask, MASK& tan2Mask) const {\n-455\n-456 typedef typename MASK::Weight Weight;\n-457\n-458 int valence = vertex.GetNumFaces();\n-459 if (valence == 2) {\n-460 assignCornerLimitTangentMasks(vertex, tan1Mask, tan2Mask);\n-461 return;\n-462 }\n-463\n-464 // Compute tan1 initially -- tan2 is simply a rotation:\n-465 tan1Mask.SetNumVertexWeights(1);\n-466 tan1Mask.SetNumEdgeWeights(valence);\n-467 tan1Mask.SetNumFaceWeights(valence);\n-468 tan1Mask.SetFaceWeightsForFaceCenters(false);\n-469\n-470 tan1Mask.VertexWeight(0) = 0.0f;\n-471\n-472 if (valence == 4) {\n-473 tan1Mask.EdgeWeight(0) = 4.0f;\n-474 tan1Mask.EdgeWeight(1) = 0.0f;\n-475 tan1Mask.EdgeWeight(2) = -4.0f;\n-476 tan1Mask.EdgeWeight(3) = 0.0f;\n-477\n-478 tan1Mask.FaceWeight(0) = 1.0f;\n-479 tan1Mask.FaceWeight(1) = -1.0f;\n-480 tan1Mask.FaceWeight(2) = -1.0f;\n-481 tan1Mask.FaceWeight(3) = 1.0f;\n-482 } else {\n-483 double theta = 2.0f * M_PI / (double)valence;\n-484\n-485 double cosTheta = std::cos(theta);\n-486 double cosHalfTheta = std::cos(theta * 0.5f);\n-487\n-488 double lambda = (5.0 / 16.0) + (1.0 / 16.0) *\n-489 (cosTheta + cosHalfTheta * std::sqrt(2.0f * (9.0f + cosTheta)));\n-490\n-491 double edgeWeightScale = 4.0f;\n-492 double faceWeightScale = 1.0f / (4.0f * lambda - 1.0f);\n-493\n-494 for (int i = 0; i < valence; ++i) {\n-495 double cosThetaI = std::cos( i * theta);\n-496 double cosThetaIplus1 = std::cos((i+1)* theta);\n-497\n-498 tan1Mask.EdgeWeight(i) = (Weight) (edgeWeightScale * cosThetaI);\n-499 tan1Mask.FaceWeight(i) = (Weight) (faceWeightScale * (cosThetaI +\n-cosThetaIplus1));\n-500 }\n-501 }\n-502\n-503 // Now rotate/copy tan1 weights to tan2:\n-504 tan2Mask.SetNumVertexWeights(1);\n-505 tan2Mask.SetNumEdgeWeights(valence);\n-506 tan2Mask.SetNumFaceWeights(valence);\n-507 tan2Mask.SetFaceWeightsForFaceCenters(false);\n-508\n-509 tan2Mask.VertexWeight(0) = 0.0f;\n-510 if (valence == 4) {\n-511 tan2Mask.EdgeWeight(0) = 0.0f;\n-512 tan2Mask.EdgeWeight(1) = 4.0f;\n-513 tan2Mask.EdgeWeight(2) = 0.0f;\n-514 tan2Mask.EdgeWeight(3) = -4.0f;\n-515\n-516 tan2Mask.FaceWeight(0) = 1.0f;\n-517 tan2Mask.FaceWeight(1) = 1.0f;\n-518 tan2Mask.FaceWeight(2) = -1.0f;\n-519 tan2Mask.FaceWeight(3) = -1.0f;\n-520 } else {\n-521 tan2Mask.EdgeWeight(0) = tan1Mask.EdgeWeight(valence-1);\n-522 tan2Mask.FaceWeight(0) = tan1Mask.FaceWeight(valence-1);\n-523 for (int i = 1; i < valence; ++i) {\n-524 tan2Mask.EdgeWeight(i) = tan1Mask.EdgeWeight(i-1);\n-525 tan2Mask.FaceWeight(i) = tan1Mask.FaceWeight(i-1);\n-526 }\n-527 }\n-528}\n-529\n-530} // end namespace sdc\n-531\n-532} // end namespace OPENSUBDIV_VERSION\n-533using namespace OPENSUBDIV_VERSION;\n-534} // end namespace OpenSubdiv\n-535\n-536#endif /* OPENSUBDIV3_SDC_CATMARK_SCHEME_H */\n+43} // end namespace OPENSUBDIV_VERSION\n+44using namespace OPENSUBDIV_VERSION;\n+45\n+46} // end namespace OpenSubdiv\n+47\n+48#endif // OPENSUBDIV3_OSD_D3D11MESH_H\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bp_\bl_\bi_\bt\n-Split\n-Enumerated type for all face splitting schemes.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b4_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bP_\bL_\bI_\bT_\b__\bT_\bO_\b__\bQ_\bU_\bA_\bD_\bS\n-@ SPLIT_TO_QUADS\n-Used by Catmark and Bilinear.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b4_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bT_\bR_\bI_\b__\bS_\bU_\bB_\b__\bS_\bM_\bO_\bO_\bT_\bH\n-@ TRI_SUB_SMOOTH\n-\"smooth triangle\" weights (Catmark scheme only)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b7_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bS_\bm_\bo_\bo_\bt_\bh_\bM_\ba_\bs_\bk_\bF_\bo_\br_\bE_\bd_\bg_\be\n-void assignSmoothMaskForEdge(EDGE const &edge, MASK &mask) const\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bG_\be_\bt_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\bi_\bc_\ba_\bl_\bS_\bp_\bl_\bi_\bt_\bT_\by_\bp_\be\n-static Split GetTopologicalSplitType()\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\br_\be_\ba_\bs_\be_\bM_\ba_\bs_\bk_\bF_\bo_\br_\bV_\be_\br_\bt_\be_\bx\n-void assignCreaseMaskForVertex(VERTEX const &edge, MASK &mask, int const\n-creaseEnds[2]) const\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\br_\be_\ba_\bs_\be_\bL_\bi_\bm_\bi_\bt_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bM_\ba_\bs_\bk_\bs\n-void assignCreaseLimitTangentMasks(VERTEX const &vertex, MASK &tan1, MASK\n-&tan2, int const creaseEnds[2]) const\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bG_\be_\bt_\bR_\be_\bg_\bu_\bl_\ba_\br_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be\n-static int GetRegularFaceSize()\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bS_\bm_\bo_\bo_\bt_\bh_\bL_\bi_\bm_\bi_\bt_\bM_\ba_\bs_\bk\n-void assignSmoothLimitMask(VERTEX const &vertex, MASK &pos) const\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bh_\bo_\bo_\bd_\bS_\bi_\bz_\be\n-static int GetLocalNeighborhoodSize()\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\br_\be_\ba_\bs_\be_\bL_\bi_\bm_\bi_\bt_\bM_\ba_\bs_\bk\n-void assignCreaseLimitMask(VERTEX const &vertex, MASK &pos, int const\n-creaseEnds[2]) const\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bS_\bm_\bo_\bo_\bt_\bh_\bM_\ba_\bs_\bk_\bF_\bo_\br_\bV_\be_\br_\bt_\be_\bx\n-void assignSmoothMaskForVertex(VERTEX const &edge, MASK &mask) const\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bG_\be_\bt_\bR_\be_\bg_\bu_\bl_\ba_\br_\bV_\be_\br_\bt_\be_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be\n-static int GetRegularVertexValence()\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bS_\bm_\bo_\bo_\bt_\bh_\bL_\bi_\bm_\bi_\bt_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bM_\ba_\bs_\bk_\bs\n-void assignSmoothLimitTangentMasks(VERTEX const &vertex, MASK &tan1, MASK\n-&tan2) const\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\br_\bn_\be_\br_\bL_\bi_\bm_\bi_\bt_\bM_\ba_\bs_\bk\n-void assignCornerLimitMask(VERTEX const &vertex, MASK &pos) const\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\br_\bn_\be_\br_\bL_\bi_\bm_\bi_\bt_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bM_\ba_\bs_\bk_\bs\n-void assignCornerLimitTangentMasks(VERTEX const &vertex, MASK &tan1, MASK\n-&tan2) const\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+MeshInterface< D3D11PatchTable > D3D11MeshInterface\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bd_\b3_\bd_\b1_\b1_\bM_\be_\bs_\bh_\b._\bh_\b:_\b3_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b6_\b8\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bs_\bd_\bc\n-    * _\bc_\ba_\bt_\bm_\ba_\br_\bk_\bS_\bc_\bh_\be_\bm_\be_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bd_\b3_\bd_\b1_\b1_\bM_\be_\bs_\bh_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00740.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00740.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/sdc/bilinearScheme.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/osd/mtlMesh.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -88,36 +88,43 @@\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n-<a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">bilinearScheme.h File Reference</div></div>\n+<a href=\"#namespaces\">Namespaces</a> &#124;\n+<a href=\"#typedef-members\">Typedefs</a>  </div>\n+  <div class=\"headertitle\"><div class=\"title\">mtlMesh.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00743_source.html\">../sdc/scheme.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00704_source.html\">../osd/mesh.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00776_source.html\">../osd/mtlPatchTable.h</a>&quot;</code><br />\n </div>\n <p><a href=\"a00740_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00913\" id=\"r_a00913\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00913.html\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc</a></td></tr>\n+<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+</table><table class=\"memberdecls\">\n+<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"typedef-members\" name=\"typedef-members\"></a>\n+Typedefs</h2></td></tr>\n+<tr class=\"memitem:aa41e5b43fe46eeb0f97ff6ebdb1935aa\" id=\"r_aa41e5b43fe46eeb0f97ff6ebdb1935aa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef <a class=\"el\" href=\"a01269.html\">MeshInterface</a>&lt; <a class=\"el\" href=\"a01305.html\">MTLPatchTable</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html#aa41e5b43fe46eeb0f97ff6ebdb1935aa\">MTLMeshInterface</a></td></tr>\n+<tr class=\"separator:aa41e5b43fe46eeb0f97ff6ebdb1935aa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_f61368944c63c2c1f8c69bc232e59c39.html\">sdc</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00740.html\">bilinearScheme.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00740.html\">mtlMesh.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,20 +1,24 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-bilinearScheme.h File Reference\n+_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bT_\by_\bp_\be_\bd_\be_\bf_\bs\n+mtlMesh.h File Reference\n #include \"../version.h\"\n-#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bs_\bc_\bh_\be_\bm_\be_\b._\bh\"\n+#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bm_\be_\bs_\bh_\b._\bh\"\n+#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bm_\bt_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n+\u00a0\n+T\bTy\byp\bpe\bed\bde\bef\bfs\bs\n+typedef _\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be< _\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be >\u00a0 _\bM_\bT_\bL_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bs_\bd_\bc\n-    * _\bb_\bi_\bl_\bi_\bn_\be_\ba_\br_\bS_\bc_\bh_\be_\bm_\be_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bm_\bt_\bl_\bM_\be_\bs_\bh_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00740_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00740_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/sdc/bilinearScheme.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/osd/mtlMesh.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">bilinearScheme.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">mtlMesh.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00740.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2014 DreamWorks Animation LLC.</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2013 Pixar</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -118,193 +118,45 @@\n <div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_SDC_BILINEAR_SCHEME_H</span></div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#define OPENSUBDIV3_SDC_BILINEAR_SCHEME_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span> </div>\n-<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span> </div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#include &quot;../sdc/scheme.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span> </div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00034\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00913.html\">   34</a></span><span class=\"keyword\">namespace </span>Sdc {</div>\n+<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_MTL_MESH_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_MTL_MESH_H</span></div>\n+<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n+<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#include &quot;../osd/mesh.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../osd/mtlPatchTable.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span> </div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n <div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span> </div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"comment\">//  Specializations for Scheme&lt;SCHEME_BILINEAR&gt;:</span></div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"keyword\">namespace </span>Osd {</div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span> </div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html#aa41e5b43fe46eeb0f97ff6ebdb1935aa\">   38</a></span><span class=\"keyword\">typedef</span> <a class=\"code hl_class\" href=\"a01269.html\">MeshInterface&lt;MTLPatchTable&gt;</a> <a class=\"code hl_typedef\" href=\"a00912.html#aa41e5b43fe46eeb0f97ff6ebdb1935aa\">MTLMeshInterface</a>;</div>\n <div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span> </div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"comment\">//  Bilinear traits:</span></div>\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#a0e02d297f903bddcf8bc10c0ae17ad3c\">   44</a></span><span class=\"keyword\">inline</span> <a class=\"code hl_enumeration\" href=\"a00913.html#a61ef2f8f765ba17f8036bcc0f0fa887b\">Split</a> <a class=\"code hl_function\" href=\"a01341.html#a14b97ddde5fba31ca7f933508ee649da\">Scheme&lt;SCHEME_BILINEAR&gt;::GetTopologicalSplitType</a>() { <span class=\"keywordflow\">return</span> <a class=\"code hl_enumvalue\" href=\"a00913.html#a61ef2f8f765ba17f8036bcc0f0fa887ba56eed514f6a5971f198c9e421054b513\">SPLIT_TO_QUADS</a>; }</div>\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span> </div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#a36744b2ac3801874da987d36851be86c\">   47</a></span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01341.html#a531004716c07aad5436cb2db27e1ec24\">Scheme&lt;SCHEME_BILINEAR&gt;::GetRegularFaceSize</a>() { <span class=\"keywordflow\">return</span> 4; }</div>\n-<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span> </div>\n-<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#ad46ad6c30664729d163c5fcc20cdf917\">   50</a></span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01341.html#a8f7e983b2195ac6b388c7a6db17f8cb0\">Scheme&lt;SCHEME_BILINEAR&gt;::GetRegularVertexValence</a>() { <span class=\"keywordflow\">return</span> 4; }</div>\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span> </div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#a953430a884584e984c0afbb058091be1\">   53</a></span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01341.html#a73cf51e4315ca86e5e0a3954c92f8f74\">Scheme&lt;SCHEME_BILINEAR&gt;::GetLocalNeighborhoodSize</a>() { <span class=\"keywordflow\">return</span> 0; }</div>\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span> </div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span> </div>\n-<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span><span class=\"comment\">//  Refinement masks:</span></div>\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> EDGE, <span class=\"keyword\">typename</span> MASK&gt;</div>\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span><span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00062\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#af9dea56e1ab2f200dd03b4e35cf754c3\">   62</a></span><a class=\"code hl_function\" href=\"a01341.html#a5b5a5377a01eb4ba446e174eff9e45ac\">Scheme&lt;SCHEME_BILINEAR&gt;::ComputeEdgeVertexMask</a>(EDGE <span class=\"keyword\">const</span>&amp; edge, MASK&amp; mask,</div>\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>                                                <a class=\"code hl_enumeration\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78\">Crease::Rule</a>, <a class=\"code hl_enumeration\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78\">Crease::Rule</a>)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span>    <span class=\"comment\">//  This should be inline, otherwise trivially replicate it:</span></div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span>    assignCreaseMaskForEdge(edge, mask);</div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span> </div>\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK&gt;</div>\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span><span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00071\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#acd3f8303b964bda017e6f1e0cc77c6c3\">   71</a></span><a class=\"code hl_function\" href=\"a01341.html#a328ca26e6142838c4844b034546fb8c7\">Scheme&lt;SCHEME_BILINEAR&gt;::ComputeVertexVertexMask</a>(VERTEX <span class=\"keyword\">const</span>&amp; vertex, MASK&amp; mask,</div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>                                                  <a class=\"code hl_enumeration\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78\">Crease::Rule</a>, <a class=\"code hl_enumeration\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78\">Crease::Rule</a>)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span>    <span class=\"comment\">//  This should be inline, otherwise trivially replicate it:</span></div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span>    assignCornerMaskForVertex(vertex, mask);</div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span> </div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span> </div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span><span class=\"comment\">//  Limit masks for position -- the limit position of all vertices is the refined vertex.</span></div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK&gt;</div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00084\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#ab38c56ce6121aed94f2796bf5df894be\">   84</a></span><a class=\"code hl_function\" href=\"a01341.html#aa2821d365ea8135d6316c0f926f87ccb\">Scheme&lt;SCHEME_BILINEAR&gt;::assignCornerLimitMask</a>(VERTEX <span class=\"keyword\">const</span>&amp; <span class=\"comment\">/* vertex */</span>, MASK&amp; posMask)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span> </div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>    posMask.SetNumVertexWeights(1);</div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>    posMask.SetNumEdgeWeights(0);</div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>    posMask.SetNumFaceWeights(0);</div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>    posMask.SetFaceWeightsForFaceCenters(<span class=\"keyword\">false</span>);</div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span> </div>\n-<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>    posMask.VertexWeight(0) = 1.0f;</div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span> </div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK&gt;</div>\n-<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00097\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#afb316654a26523ceeed5600b759377b2\">   97</a></span><a class=\"code hl_function\" href=\"a01341.html#a7c9316f7212d3ea41db7f3f1a66cc7e5\">Scheme&lt;SCHEME_BILINEAR&gt;::assignCreaseLimitMask</a>(VERTEX <span class=\"keyword\">const</span>&amp; vertex, MASK&amp; posMask,</div>\n-<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span>                                               <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> <span class=\"comment\">/* creaseEnds */</span>[2])<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span> </div>\n-<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span>    assignCornerLimitMask(vertex, posMask);</div>\n-<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span> </div>\n-<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n-<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK&gt;</div>\n-<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00106\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#adbc763184791a8854374af8b123fa242\">  106</a></span><a class=\"code hl_function\" href=\"a01341.html#a736c10944cb921b334fbd8b81866d59f\">Scheme&lt;SCHEME_BILINEAR&gt;::assignSmoothLimitMask</a>(VERTEX <span class=\"keyword\">const</span>&amp; vertex, MASK&amp; posMask)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span> </div>\n-<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span>    assignCornerLimitMask(vertex, posMask);</div>\n-<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span> </div>\n-<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span><span class=\"comment\">//  Limit masks for tangents -- these are ambiguous around all vertices.  Provide</span></div>\n-<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span><span class=\"comment\">//  the tangents based on the incident edges of the first face.</span></div>\n-<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n-<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\">  116</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK&gt;</div>\n-<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00118\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#a887ec963f864c3f0782365b6865d23fc\">  118</a></span><a class=\"code hl_function\" href=\"a01341.html#ae9ee7f11f51ec6ff8c43ab0729454b54\">Scheme&lt;SCHEME_BILINEAR&gt;::assignCornerLimitTangentMasks</a>(VERTEX <span class=\"keyword\">const</span>&amp; <span class=\"comment\">/* vertex */</span>,</div>\n-<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span>        MASK&amp; tan1Mask, MASK&amp; tan2Mask)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span> </div>\n-<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\">  121</span>    tan1Mask.SetNumVertexWeights(1);</div>\n-<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span>    tan1Mask.SetNumEdgeWeights(2);</div>\n-<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span>    tan1Mask.SetNumFaceWeights(0);</div>\n-<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span>    tan1Mask.SetFaceWeightsForFaceCenters(<span class=\"keyword\">false</span>);</div>\n-<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span> </div>\n-<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span>    tan2Mask.SetNumVertexWeights(1);</div>\n-<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span>    tan2Mask.SetNumEdgeWeights(2);</div>\n-<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span>    tan2Mask.SetNumFaceWeights(0);</div>\n-<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span>    tan2Mask.SetFaceWeightsForFaceCenters(<span class=\"keyword\">false</span>);</div>\n-<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span> </div>\n-<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\">  131</span>    tan1Mask.VertexWeight(0) = -1.0f;</div>\n-<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\">  132</span>    tan1Mask.EdgeWeight(0) = 1.0f;</div>\n-<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\">  133</span>    tan1Mask.EdgeWeight(1) = 0.0f;</div>\n-<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\">  134</span> </div>\n-<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\">  135</span>    tan2Mask.VertexWeight(0) = -1.0f;</div>\n-<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\">  136</span>    tan2Mask.EdgeWeight(0) = 0.0f;</div>\n-<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\">  137</span>    tan2Mask.EdgeWeight(1) = 1.0f;</div>\n-<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\">  138</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\">  139</span> </div>\n-<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\">  140</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n-<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\">  141</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK&gt;</div>\n-<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00143\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#a7d9a8245c3860d5c975081a87b71939a\">  143</a></span><a class=\"code hl_function\" href=\"a01341.html#a4f8e559b93bbaf26ea0d40b1fa2f194f\">Scheme&lt;SCHEME_BILINEAR&gt;::assignCreaseLimitTangentMasks</a>(VERTEX <span class=\"keyword\">const</span>&amp; vertex,</div>\n-<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\">  144</span>        MASK&amp; tan1Mask, MASK&amp; tan2Mask, <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> <span class=\"comment\">/* creaseEnds */</span>[2])<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\">  145</span> </div>\n-<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\">  146</span>    assignCornerLimitTangentMasks(vertex, tan1Mask, tan2Mask);</div>\n-<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\">  147</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\">  148</span> </div>\n-<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\">  149</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n-<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\">  150</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK&gt;</div>\n-<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\">  151</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00152\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#a15a82416378d985afe049eaebc185e7d\">  152</a></span><a class=\"code hl_function\" href=\"a01341.html#a9ee5e194a00832a5bfa76cf58df0bc4b\">Scheme&lt;SCHEME_BILINEAR&gt;::assignSmoothLimitTangentMasks</a>(VERTEX <span class=\"keyword\">const</span>&amp; vertex,</div>\n-<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\">  153</span>        MASK&amp; tan1Mask, MASK&amp; tan2Mask)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\">  154</span> </div>\n-<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\">  155</span>    assignCornerLimitTangentMasks(vertex, tan1Mask, tan2Mask);</div>\n-<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\">  156</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\">  157</span> </div>\n-<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\">  158</span>} <span class=\"comment\">// end namespace sdc</span></div>\n-</div>\n-<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\">  159</span> </div>\n-<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\">  160</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\">  161</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\">  162</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\">  163</span> </div>\n-<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\">  164</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_SDC_BILINEAR_SCHEME_H */</span><span class=\"preprocessor\"></span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa00913_html_a61ef2f8f765ba17f8036bcc0f0fa887b\"><div class=\"ttname\"><a href=\"a00913.html#a61ef2f8f765ba17f8036bcc0f0fa887b\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Split</a></div><div class=\"ttdeci\">Split</div><div class=\"ttdoc\">Enumerated type for all face splitting schemes.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01492_source.html#l00047\">types.h:47</a></div></div>\n-<div class=\"ttc\" id=\"aa00913_html_a61ef2f8f765ba17f8036bcc0f0fa887ba56eed514f6a5971f198c9e421054b513\"><div class=\"ttname\"><a href=\"a00913.html#a61ef2f8f765ba17f8036bcc0f0fa887ba56eed514f6a5971f198c9e421054b513\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::SPLIT_TO_QUADS</a></div><div class=\"ttdeci\">@ SPLIT_TO_QUADS</div><div class=\"ttdoc\">Used by Catmark and Bilinear.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01492_source.html#l00048\">types.h:48</a></div></div>\n-<div class=\"ttc\" id=\"aa01333_html_a11fcd51ef86118f65e603c1474377a78\"><div class=\"ttname\"><a href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::Rule</a></div><div class=\"ttdeci\">Rule</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00731_source.html#l00082\">crease.h:82</a></div></div>\n-<div class=\"ttc\" id=\"aa01341_html_a14b97ddde5fba31ca7f933508ee649da\"><div class=\"ttname\"><a href=\"a01341.html#a14b97ddde5fba31ca7f933508ee649da\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::GetTopologicalSplitType</a></div><div class=\"ttdeci\">static Split GetTopologicalSplitType()</div></div>\n-<div class=\"ttc\" id=\"aa01341_html_a328ca26e6142838c4844b034546fb8c7\"><div class=\"ttname\"><a href=\"a01341.html#a328ca26e6142838c4844b034546fb8c7\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::ComputeVertexVertexMask</a></div><div class=\"ttdeci\">void ComputeVertexVertexMask(VERTEX const &amp;vertexNeighborhood, MASK &amp;vertexVertexMask, Crease::Rule parentRule=Crease::RULE_UNKNOWN, Crease::Rule childRule=Crease::RULE_UNKNOWN) const</div><div class=\"ttdoc\">Vertex-vertex masks If known, a single Rule or pair of Rules can be specified (indicating a crease tr...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00743_source.html#l00512\">scheme.h:512</a></div></div>\n-<div class=\"ttc\" id=\"aa01341_html_a4f8e559b93bbaf26ea0d40b1fa2f194f\"><div class=\"ttname\"><a href=\"a01341.html#a4f8e559b93bbaf26ea0d40b1fa2f194f\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::assignCreaseLimitTangentMasks</a></div><div class=\"ttdeci\">void assignCreaseLimitTangentMasks(VERTEX const &amp;vertex, MASK &amp;tan1, MASK &amp;tan2, int const creaseEnds[2]) const</div></div>\n-<div class=\"ttc\" id=\"aa01341_html_a531004716c07aad5436cb2db27e1ec24\"><div class=\"ttname\"><a href=\"a01341.html#a531004716c07aad5436cb2db27e1ec24\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::GetRegularFaceSize</a></div><div class=\"ttdeci\">static int GetRegularFaceSize()</div></div>\n-<div class=\"ttc\" id=\"aa01341_html_a5b5a5377a01eb4ba446e174eff9e45ac\"><div class=\"ttname\"><a href=\"a01341.html#a5b5a5377a01eb4ba446e174eff9e45ac\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::ComputeEdgeVertexMask</a></div><div class=\"ttdeci\">void ComputeEdgeVertexMask(EDGE const &amp;edgeNeighborhood, MASK &amp;edgeVertexMask, Crease::Rule parentRule=Crease::RULE_UNKNOWN, Crease::Rule childRule=Crease::RULE_UNKNOWN) const</div><div class=\"ttdoc\">Edge-vertex masks If known, the Rule for the edge and/or the derived vertex can be specified to accel...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00743_source.html#l00392\">scheme.h:392</a></div></div>\n-<div class=\"ttc\" id=\"aa01341_html_a736c10944cb921b334fbd8b81866d59f\"><div class=\"ttname\"><a href=\"a01341.html#a736c10944cb921b334fbd8b81866d59f\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::assignSmoothLimitMask</a></div><div class=\"ttdeci\">void assignSmoothLimitMask(VERTEX const &amp;vertex, MASK &amp;pos) const</div></div>\n-<div class=\"ttc\" id=\"aa01341_html_a73cf51e4315ca86e5e0a3954c92f8f74\"><div class=\"ttname\"><a href=\"a01341.html#a73cf51e4315ca86e5e0a3954c92f8f74\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::GetLocalNeighborhoodSize</a></div><div class=\"ttdeci\">static int GetLocalNeighborhoodSize()</div></div>\n-<div class=\"ttc\" id=\"aa01341_html_a7c9316f7212d3ea41db7f3f1a66cc7e5\"><div class=\"ttname\"><a href=\"a01341.html#a7c9316f7212d3ea41db7f3f1a66cc7e5\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::assignCreaseLimitMask</a></div><div class=\"ttdeci\">void assignCreaseLimitMask(VERTEX const &amp;vertex, MASK &amp;pos, int const creaseEnds[2]) const</div></div>\n-<div class=\"ttc\" id=\"aa01341_html_a8f7e983b2195ac6b388c7a6db17f8cb0\"><div class=\"ttname\"><a href=\"a01341.html#a8f7e983b2195ac6b388c7a6db17f8cb0\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::GetRegularVertexValence</a></div><div class=\"ttdeci\">static int GetRegularVertexValence()</div></div>\n-<div class=\"ttc\" id=\"aa01341_html_a9ee5e194a00832a5bfa76cf58df0bc4b\"><div class=\"ttname\"><a href=\"a01341.html#a9ee5e194a00832a5bfa76cf58df0bc4b\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::assignSmoothLimitTangentMasks</a></div><div class=\"ttdeci\">void assignSmoothLimitTangentMasks(VERTEX const &amp;vertex, MASK &amp;tan1, MASK &amp;tan2) const</div></div>\n-<div class=\"ttc\" id=\"aa01341_html_aa2821d365ea8135d6316c0f926f87ccb\"><div class=\"ttname\"><a href=\"a01341.html#aa2821d365ea8135d6316c0f926f87ccb\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::assignCornerLimitMask</a></div><div class=\"ttdeci\">void assignCornerLimitMask(VERTEX const &amp;vertex, MASK &amp;pos) const</div></div>\n-<div class=\"ttc\" id=\"aa01341_html_ae9ee7f11f51ec6ff8c43ab0729454b54\"><div class=\"ttname\"><a href=\"a01341.html#ae9ee7f11f51ec6ff8c43ab0729454b54\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::assignCornerLimitTangentMasks</a></div><div class=\"ttdeci\">void assignCornerLimitTangentMasks(VERTEX const &amp;vertex, MASK &amp;tan1, MASK &amp;tan2) const</div></div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span>} <span class=\"comment\">// end namespace Osd</span></div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span> </div>\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span> </div>\n+<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span> </div>\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// OPENSUBDIV3_OSD_MTL_MESH_H</span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa00912_html_aa41e5b43fe46eeb0f97ff6ebdb1935aa\"><div class=\"ttname\"><a href=\"a00912.html#aa41e5b43fe46eeb0f97ff6ebdb1935aa\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLMeshInterface</a></div><div class=\"ttdeci\">MeshInterface&lt; MTLPatchTable &gt; MTLMeshInterface</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00740_source.html#l00038\">mtlMesh.h:38</a></div></div>\n+<div class=\"ttc\" id=\"aa01269_html\"><div class=\"ttname\"><a href=\"a01269.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshInterface</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00704_source.html#l00068\">mesh.h:68</a></div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_f61368944c63c2c1f8c69bc232e59c39.html\">sdc</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00740.html\">bilinearScheme.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00740.html\">mtlMesh.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-bilinearScheme.h\n+mtlMesh.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2014 DreamWorks Animation LLC.\n+2// Copyright 2013 Pixar\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -23,211 +23,42 @@\n 17//\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n-24#ifndef OPENSUBDIV3_SDC_BILINEAR_SCHEME_H\n-25#define OPENSUBDIV3_SDC_BILINEAR_SCHEME_H\n-26\n-27#include \"../version.h\"\n-28\n-29#include \"../sdc/scheme.h\"\n-30\n-31namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-32namespace OPENSUBDIV_VERSION {\n-33\n-_\b3_\b4namespace Sdc {\n+24\n+25#ifndef OPENSUBDIV3_OSD_MTL_MESH_H\n+26#define OPENSUBDIV3_OSD_MTL_MESH_H\n+27\n+28#include \"../version.h\"\n+29#include \"../osd/mesh.h\"\n+30#include \"../osd/mtlPatchTable.h\"\n+31\n+32\n+33namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+34namespace OPENSUBDIV_VERSION {\n 35\n-36//\n-37// Specializations for Scheme<SCHEME_BILINEAR>:\n-38//\n+36namespace Osd {\n+37\n+_\b3_\b8typedef _\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b> _\bM_\bT_\bL_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be;\n 39\n-40//\n-41// Bilinear traits:\n-42//\n-43template <>\n-_\b4_\b4inline _\bS_\bp_\bl_\bi_\bt _\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bB_\bI_\bL_\bI_\bN_\bE_\bA_\bR_\b>_\b:_\b:_\bG_\be_\bt_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\bi_\bc_\ba_\bl_\bS_\bp_\bl_\bi_\bt_\bT_\by_\bp_\be() { return\n-_\bS_\bP_\bL_\bI_\bT_\b__\bT_\bO_\b__\bQ_\bU_\bA_\bD_\bS; }\n-45\n-46template <>\n-_\b4_\b7inline int _\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bB_\bI_\bL_\bI_\bN_\bE_\bA_\bR_\b>_\b:_\b:_\bG_\be_\bt_\bR_\be_\bg_\bu_\bl_\ba_\br_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be() { return 4; }\n-48\n-49template <>\n-_\b5_\b0inline int _\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bB_\bI_\bL_\bI_\bN_\bE_\bA_\bR_\b>_\b:_\b:_\bG_\be_\bt_\bR_\be_\bg_\bu_\bl_\ba_\br_\bV_\be_\br_\bt_\be_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be() { return 4; }\n-51\n-52template <>\n-_\b5_\b3inline int _\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bB_\bI_\bL_\bI_\bN_\bE_\bA_\bR_\b>_\b:_\b:_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bh_\bo_\bo_\bd_\bS_\bi_\bz_\be() { return 0; }\n-54\n-55\n-56//\n-57// Refinement masks:\n-58//\n-59template <>\n-60template <typename EDGE, typename MASK>\n-61void\n-_\b6_\b2_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bB_\bI_\bL_\bI_\bN_\bE_\bA_\bR_\b>_\b:_\b:_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bd_\bg_\be_\bV_\be_\br_\bt_\be_\bx_\bM_\ba_\bs_\bk(EDGE const& edge, MASK& mask,\n-63 _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be, _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be) const {\n-64 // This should be inline, otherwise trivially replicate it:\n-65 assignCreaseMaskForEdge(edge, mask);\n-66}\n-67\n-68template <>\n-69template <typename VERTEX, typename MASK>\n-70void\n-_\b7_\b1_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bB_\bI_\bL_\bI_\bN_\bE_\bA_\bR_\b>_\b:_\b:_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bV_\be_\br_\bt_\be_\bx_\bV_\be_\br_\bt_\be_\bx_\bM_\ba_\bs_\bk(VERTEX const& vertex, MASK&\n-mask,\n-72 _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be, _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be) const {\n-73 // This should be inline, otherwise trivially replicate it:\n-74 assignCornerMaskForVertex(vertex, mask);\n-75}\n-76\n-77\n-78//\n-79// Limit masks for position -- the limit position of all vertices is the\n-refined vertex.\n-80//\n-81template <>\n-82template <typename VERTEX, typename MASK>\n-83inline void\n-_\b8_\b4_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bB_\bI_\bL_\bI_\bN_\bE_\bA_\bR_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\br_\bn_\be_\br_\bL_\bi_\bm_\bi_\bt_\bM_\ba_\bs_\bk(VERTEX const& /* vertex */,\n-MASK& posMask) const {\n-85\n-86 posMask.SetNumVertexWeights(1);\n-87 posMask.SetNumEdgeWeights(0);\n-88 posMask.SetNumFaceWeights(0);\n-89 posMask.SetFaceWeightsForFaceCenters(false);\n-90\n-91 posMask.VertexWeight(0) = 1.0f;\n-92}\n-93\n-94template <>\n-95template <typename VERTEX, typename MASK>\n-96inline void\n-_\b9_\b7_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bB_\bI_\bL_\bI_\bN_\bE_\bA_\bR_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\br_\be_\ba_\bs_\be_\bL_\bi_\bm_\bi_\bt_\bM_\ba_\bs_\bk(VERTEX const& vertex, MASK&\n-posMask,\n-98 int const /* creaseEnds */[2]) const {\n-99\n-100 assignCornerLimitMask(vertex, posMask);\n-101}\n-102\n-103template <>\n-104template <typename VERTEX, typename MASK>\n-105inline void\n-_\b1_\b0_\b6_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bB_\bI_\bL_\bI_\bN_\bE_\bA_\bR_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bS_\bm_\bo_\bo_\bt_\bh_\bL_\bi_\bm_\bi_\bt_\bM_\ba_\bs_\bk(VERTEX const& vertex, MASK&\n-posMask) const {\n-107\n-108 assignCornerLimitMask(vertex, posMask);\n-109}\n-110\n-111//\n-112// Limit masks for tangents -- these are ambiguous around all vertices.\n-Provide\n-113// the tangents based on the incident edges of the first face.\n-114//\n-115template <>\n-116template <typename VERTEX, typename MASK>\n-117inline void\n-_\b1_\b1_\b8_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bB_\bI_\bL_\bI_\bN_\bE_\bA_\bR_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\br_\bn_\be_\br_\bL_\bi_\bm_\bi_\bt_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bM_\ba_\bs_\bk_\bs(VERTEX const& /\n-* vertex */,\n-119 MASK& tan1Mask, MASK& tan2Mask) const {\n-120\n-121 tan1Mask.SetNumVertexWeights(1);\n-122 tan1Mask.SetNumEdgeWeights(2);\n-123 tan1Mask.SetNumFaceWeights(0);\n-124 tan1Mask.SetFaceWeightsForFaceCenters(false);\n-125\n-126 tan2Mask.SetNumVertexWeights(1);\n-127 tan2Mask.SetNumEdgeWeights(2);\n-128 tan2Mask.SetNumFaceWeights(0);\n-129 tan2Mask.SetFaceWeightsForFaceCenters(false);\n-130\n-131 tan1Mask.VertexWeight(0) = -1.0f;\n-132 tan1Mask.EdgeWeight(0) = 1.0f;\n-133 tan1Mask.EdgeWeight(1) = 0.0f;\n-134\n-135 tan2Mask.VertexWeight(0) = -1.0f;\n-136 tan2Mask.EdgeWeight(0) = 0.0f;\n-137 tan2Mask.EdgeWeight(1) = 1.0f;\n-138}\n-139\n-140template <>\n-141template <typename VERTEX, typename MASK>\n-142inline void\n-_\b1_\b4_\b3_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bB_\bI_\bL_\bI_\bN_\bE_\bA_\bR_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\br_\be_\ba_\bs_\be_\bL_\bi_\bm_\bi_\bt_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bM_\ba_\bs_\bk_\bs(VERTEX const& vertex,\n-144 MASK& tan1Mask, MASK& tan2Mask, int const /* creaseEnds */[2]) const {\n-145\n-146 assignCornerLimitTangentMasks(vertex, tan1Mask, tan2Mask);\n-147}\n-148\n-149template <>\n-150template <typename VERTEX, typename MASK>\n-151inline void\n-_\b1_\b5_\b2_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bB_\bI_\bL_\bI_\bN_\bE_\bA_\bR_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bS_\bm_\bo_\bo_\bt_\bh_\bL_\bi_\bm_\bi_\bt_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bM_\ba_\bs_\bk_\bs(VERTEX const& vertex,\n-153 MASK& tan1Mask, MASK& tan2Mask) const {\n-154\n-155 assignCornerLimitTangentMasks(vertex, tan1Mask, tan2Mask);\n-156}\n-157\n-158} // end namespace sdc\n-159\n-160} // end namespace OPENSUBDIV_VERSION\n-161using namespace OPENSUBDIV_VERSION;\n-162} // end namespace OpenSubdiv\n-163\n-164#endif /* OPENSUBDIV3_SDC_BILINEAR_SCHEME_H */\n+40} // end namespace Osd\n+41\n+42} // end namespace OPENSUBDIV_VERSION\n+43using namespace OPENSUBDIV_VERSION;\n+44\n+45} // end namespace OpenSubdiv\n+46\n+47#endif // OPENSUBDIV3_OSD_MTL_MESH_H\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bp_\bl_\bi_\bt\n-Split\n-Enumerated type for all face splitting schemes.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b4_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bP_\bL_\bI_\bT_\b__\bT_\bO_\b__\bQ_\bU_\bA_\bD_\bS\n-@ SPLIT_TO_QUADS\n-Used by Catmark and Bilinear.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b4_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be\n-Rule\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b8_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bG_\be_\bt_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\bi_\bc_\ba_\bl_\bS_\bp_\bl_\bi_\bt_\bT_\by_\bp_\be\n-static Split GetTopologicalSplitType()\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bV_\be_\br_\bt_\be_\bx_\bV_\be_\br_\bt_\be_\bx_\bM_\ba_\bs_\bk\n-void ComputeVertexVertexMask(VERTEX const &vertexNeighborhood, MASK\n-&vertexVertexMask, Crease::Rule parentRule=Crease::RULE_UNKNOWN, Crease::Rule\n-childRule=Crease::RULE_UNKNOWN) const\n-Vertex-vertex masks If known, a single Rule or pair of Rules can be specified\n-(indicating a crease tr...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b5_\b1_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\br_\be_\ba_\bs_\be_\bL_\bi_\bm_\bi_\bt_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bM_\ba_\bs_\bk_\bs\n-void assignCreaseLimitTangentMasks(VERTEX const &vertex, MASK &tan1, MASK\n-&tan2, int const creaseEnds[2]) const\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bG_\be_\bt_\bR_\be_\bg_\bu_\bl_\ba_\br_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be\n-static int GetRegularFaceSize()\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bd_\bg_\be_\bV_\be_\br_\bt_\be_\bx_\bM_\ba_\bs_\bk\n-void ComputeEdgeVertexMask(EDGE const &edgeNeighborhood, MASK &edgeVertexMask,\n-Crease::Rule parentRule=Crease::RULE_UNKNOWN, Crease::Rule childRule=Crease::\n-RULE_UNKNOWN) const\n-Edge-vertex masks If known, the Rule for the edge and/or the derived vertex can\n-be specified to accel...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b3_\b9_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bS_\bm_\bo_\bo_\bt_\bh_\bL_\bi_\bm_\bi_\bt_\bM_\ba_\bs_\bk\n-void assignSmoothLimitMask(VERTEX const &vertex, MASK &pos) const\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bh_\bo_\bo_\bd_\bS_\bi_\bz_\be\n-static int GetLocalNeighborhoodSize()\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\br_\be_\ba_\bs_\be_\bL_\bi_\bm_\bi_\bt_\bM_\ba_\bs_\bk\n-void assignCreaseLimitMask(VERTEX const &vertex, MASK &pos, int const\n-creaseEnds[2]) const\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bG_\be_\bt_\bR_\be_\bg_\bu_\bl_\ba_\br_\bV_\be_\br_\bt_\be_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be\n-static int GetRegularVertexValence()\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bS_\bm_\bo_\bo_\bt_\bh_\bL_\bi_\bm_\bi_\bt_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bM_\ba_\bs_\bk_\bs\n-void assignSmoothLimitTangentMasks(VERTEX const &vertex, MASK &tan1, MASK\n-&tan2) const\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\br_\bn_\be_\br_\bL_\bi_\bm_\bi_\bt_\bM_\ba_\bs_\bk\n-void assignCornerLimitMask(VERTEX const &vertex, MASK &pos) const\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\br_\bn_\be_\br_\bL_\bi_\bm_\bi_\bt_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bM_\ba_\bs_\bk_\bs\n-void assignCornerLimitTangentMasks(VERTEX const &vertex, MASK &tan1, MASK\n-&tan2) const\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+MeshInterface< MTLPatchTable > MTLMeshInterface\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bM_\be_\bs_\bh_\b._\bh_\b:_\b3_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b6_\b8\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bs_\bd_\bc\n-    * _\bb_\bi_\bl_\bi_\bn_\be_\ba_\br_\bS_\bc_\bh_\be_\bm_\be_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bm_\bt_\bl_\bM_\be_\bs_\bh_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00743.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00743.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/sdc/scheme.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/osd/cpuVertexBuffer.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -90,49 +90,41 @@\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> &#124;\n <a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">scheme.h File Reference</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">cpuVertexBuffer.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a01492_source.html\">../sdc/types.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00734_source.html\">../sdc/options.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00731_source.html\">../sdc/crease.h</a>&quot;</code><br />\n-<code>#include &lt;cassert&gt;</code><br />\n-<code>#include &lt;cstdlib&gt;</code><br />\n-<code>#include &lt;vector&gt;</code><br />\n+<code>#include &lt;cstddef&gt;</code><br />\n </div>\n <p><a href=\"a00743_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01341.html\">Scheme&lt; SCHEME_TYPE &gt;</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"a01341.html\" title=\"Scheme is a class template which provides all implementation for the subdivision schemes supported by...\">Scheme</a> is a class template which provides all implementation for the subdivision schemes supported by <a class=\"el\" href=\"a00905.html\">OpenSubdiv</a> through specializations of the methods of each. An instance of Scheme&lt;SCHEME_TYPE&gt; includes a set of <a class=\"el\" href=\"a01337.html\" title=\"All supported options applying to subdivision scheme.\">Options</a> that will dictate the variable aspects of its behavior. <br  />\n-  <a href=\"a01341.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01345.html\">Scheme&lt; SCHEME_TYPE &gt;::LocalMask&lt; WEIGHT &gt;</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01177.html\">CpuVertexBuffer</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Concrete vertex buffer class for CPU subdivision.  <a href=\"a01177.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00913\" id=\"r_a00913\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00913.html\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc</a></td></tr>\n+<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_f61368944c63c2c1f8c69bc232e59c39.html\">sdc</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00743.html\">scheme.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00743.html\">cpuVertexBuffer.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,35 +1,24 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-scheme.h File Reference\n+cpuVertexBuffer.h File Reference\n #include \"../version.h\"\n-#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n-#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh\"\n-#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bc_\br_\be_\ba_\bs_\be_\b._\bh\"\n-#include <cassert>\n-#include <cstdlib>\n-#include <vector>\n+#include <cstddef>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bS_\bc_\bh_\be_\bm_\be_\b<_\b _\bS_\bC_\bH_\bE_\bM_\bE_\b__\bT_\bY_\bP_\bE_\b _\b>\n-        _\bS_\bc_\bh_\be_\bm_\be is a class template which provides all implementation for the\n-        subdivision schemes supported by _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv through specializations of\n-\u00a0       the methods of each. An instance of Scheme<SCHEME_TYPE> includes a set\n-        of _\bO_\bp_\bt_\bi_\bo_\bn_\bs that will dictate the variable aspects of its behavior.\n-        _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bS_\bc_\bh_\be_\bm_\be_\b<_\b _\bS_\bC_\bH_\bE_\bM_\bE_\b__\bT_\bY_\bP_\bE_\b _\b>_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bM_\ba_\bs_\bk_\b<_\b _\bW_\bE_\bI_\bG_\bH_\bT_\b _\b>\n+class \u00a0 _\bC_\bp_\bu_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+\u00a0       Concrete vertex buffer class for CPU subdivision. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bs_\bd_\bc\n-    * _\bs_\bc_\bh_\be_\bm_\be_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bc_\bp_\bu_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00743.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00743.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,4 +1,3 @@\n var a00743 = [\n-    [\"Scheme< SCHEME_TYPE >\", \"a01341.html\", \"a01341\"],\n-    [\"LocalMask< WEIGHT >\", \"a01345.html\", \"a01345\"]\n+    [\"CpuVertexBuffer\", \"a01177.html\", \"a01177\"]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00743_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00743_source.html", "has_internal_linenos": true, "unified_diff": "@@ -22,8471 +22,1183 @@\n 00000150: 656e 743d 2244 6f78 7967 656e 2031 2e39  ent=\"Doxygen 1.9\n 00000160: 2e38 222f 3e0a 3c6d 6574 6120 6e61 6d65  .8\"/>.<meta name\n 00000170: 3d22 7669 6577 706f 7274 2220 636f 6e74  =\"viewport\" cont\n 00000180: 656e 743d 2277 6964 7468 3d64 6576 6963  ent=\"width=devic\n 00000190: 652d 7769 6474 682c 2069 6e69 7469 616c  e-width, initial\n 000001a0: 2d73 6361 6c65 3d31 222f 3e0a 3c74 6974  -scale=1\"/>.<tit\n 000001b0: 6c65 3e4f 7065 6e53 7562 6469 763a 206f  le>OpenSubdiv: o\n-000001c0: 7065 6e73 7562 6469 762f 7364 632f 7363  pensubdiv/sdc/sc\n-000001d0: 6865 6d65 2e68 2053 6f75 7263 6520 4669  heme.h Source Fi\n-000001e0: 6c65 3c2f 7469 746c 653e 0a3c 6c69 6e6b  le</title>.<link\n-000001f0: 2068 7265 663d 2274 6162 732e 6373 7322   href=\"tabs.css\"\n-00000200: 2072 656c 3d22 7374 796c 6573 6865 6574   rel=\"stylesheet\n-00000210: 2220 7479 7065 3d22 7465 7874 2f63 7373  \" type=\"text/css\n-00000220: 222f 3e0a 3c73 6372 6970 7420 7479 7065  \"/>.<script type\n-00000230: 3d22 7465 7874 2f6a 6176 6173 6372 6970  =\"text/javascrip\n-00000240: 7422 2073 7263 3d22 6a71 7565 7279 2e6a  t\" src=\"jquery.j\n-00000250: 7322 3e3c 2f73 6372 6970 743e 0a3c 7363  s\"></script>.<sc\n-00000260: 7269 7074 2074 7970 653d 2274 6578 742f  ript type=\"text/\n-00000270: 6a61 7661 7363 7269 7074 2220 7372 633d  javascript\" src=\n-00000280: 2264 796e 7365 6374 696f 6e73 2e6a 7322  \"dynsections.js\"\n-00000290: 3e3c 2f73 6372 6970 743e 0a3c 6c69 6e6b  ></script>.<link\n-000002a0: 2068 7265 663d 226e 6176 7472 6565 2e63   href=\"navtree.c\n-000002b0: 7373 2220 7265 6c3d 2273 7479 6c65 7368  ss\" rel=\"stylesh\n-000002c0: 6565 7422 2074 7970 653d 2274 6578 742f  eet\" type=\"text/\n-000002d0: 6373 7322 2f3e 0a3c 7363 7269 7074 2074  css\"/>.<script t\n-000002e0: 7970 653d 2274 6578 742f 6a61 7661 7363  ype=\"text/javasc\n-000002f0: 7269 7074 2220 7372 633d 2272 6573 697a  ript\" src=\"resiz\n-00000300: 652e 6a73 223e 3c2f 7363 7269 7074 3e0a  e.js\"></script>.\n-00000310: 3c73 6372 6970 7420 7479 7065 3d22 7465  <script type=\"te\n-00000320: 7874 2f6a 6176 6173 6372 6970 7422 2073  xt/javascript\" s\n-00000330: 7263 3d22 6e61 7674 7265 6564 6174 612e  rc=\"navtreedata.\n-00000340: 6a73 223e 3c2f 7363 7269 7074 3e0a 3c73  js\"></script>.<s\n-00000350: 6372 6970 7420 7479 7065 3d22 7465 7874  cript type=\"text\n-00000360: 2f6a 6176 6173 6372 6970 7422 2073 7263  /javascript\" src\n-00000370: 3d22 6e61 7674 7265 652e 6a73 223e 3c2f  =\"navtree.js\"></\n-00000380: 7363 7269 7074 3e0a 3c6c 696e 6b20 6872  script>.<link hr\n-00000390: 6566 3d22 7365 6172 6368 2f73 6561 7263  ef=\"search/searc\n-000003a0: 682e 6373 7322 2072 656c 3d22 7374 796c  h.css\" rel=\"styl\n-000003b0: 6573 6865 6574 2220 7479 7065 3d22 7465  esheet\" type=\"te\n-000003c0: 7874 2f63 7373 222f 3e0a 3c73 6372 6970  xt/css\"/>.<scrip\n-000003d0: 7420 7479 7065 3d22 7465 7874 2f6a 6176  t type=\"text/jav\n-000003e0: 6173 6372 6970 7422 2073 7263 3d22 7365  ascript\" src=\"se\n-000003f0: 6172 6368 2f73 6561 7263 6864 6174 612e  arch/searchdata.\n-00000400: 6a73 223e 3c2f 7363 7269 7074 3e0a 3c73  js\"></script>.<s\n-00000410: 6372 6970 7420 7479 7065 3d22 7465 7874  cript type=\"text\n-00000420: 2f6a 6176 6173 6372 6970 7422 2073 7263  /javascript\" src\n-00000430: 3d22 7365 6172 6368 2f73 6561 7263 682e  =\"search/search.\n-00000440: 6a73 223e 3c2f 7363 7269 7074 3e0a 3c6c  js\"></script>.<l\n-00000450: 696e 6b20 6872 6566 3d22 646f 7879 6765  ink href=\"doxyge\n-00000460: 6e2e 6373 7322 2072 656c 3d22 7374 796c  n.css\" rel=\"styl\n-00000470: 6573 6865 6574 2220 7479 7065 3d22 7465  esheet\" type=\"te\n-00000480: 7874 2f63 7373 2220 2f3e 0a3c 6c69 6e6b  xt/css\" />.<link\n-00000490: 2068 7265 663d 2264 6f78 792e 6373 7322   href=\"doxy.css\"\n-000004a0: 2072 656c 3d22 7374 796c 6573 6865 6574   rel=\"stylesheet\n-000004b0: 2220 7479 7065 3d22 7465 7874 2f63 7373  \" type=\"text/css\n-000004c0: 222f 3e0a 3c2f 6865 6164 3e0a 3c62 6f64  \"/>.</head>.<bod\n-000004d0: 793e 0a3c 6469 7620 6964 3d22 746f 7022  y>.<div id=\"top\"\n-000004e0: 3e3c 212d 2d20 646f 206e 6f74 2072 656d  ><!-- do not rem\n-000004f0: 6f76 6520 7468 6973 2064 6976 2c20 6974  ove this div, it\n-00000500: 2069 7320 636c 6f73 6564 2062 7920 646f   is closed by do\n-00000510: 7879 6765 6e21 202d 2d3e 0a3c 6469 7620  xygen! -->.<div \n-00000520: 6964 3d22 7469 746c 6561 7265 6122 3e0a  id=\"titlearea\">.\n-00000530: 3c74 6162 6c65 2063 656c 6c73 7061 6369  <table cellspaci\n-00000540: 6e67 3d22 3022 2063 656c 6c70 6164 6469  ng=\"0\" cellpaddi\n-00000550: 6e67 3d22 3022 3e0a 203c 7462 6f64 793e  ng=\"0\">. <tbody>\n-00000560: 0a20 3c74 7220 6964 3d22 7072 6f6a 6563  . <tr id=\"projec\n-00000570: 7472 6f77 223e 0a20 203c 7464 2069 643d  trow\">.  <td id=\n-00000580: 2270 726f 6a65 6374 6c6f 676f 223e 3c69  \"projectlogo\"><i\n-00000590: 6d67 2061 6c74 3d22 4c6f 676f 2220 7372  mg alt=\"Logo\" sr\n-000005a0: 633d 226f 7065 6e73 7562 6469 765f 6c6f  c=\"opensubdiv_lo\n-000005b0: 676f 5f68 6561 6465 722e 706e 6722 2f3e  go_header.png\"/>\n-000005c0: 3c2f 7464 3e0a 2020 3c74 6420 6964 3d22  </td>.  <td id=\"\n-000005d0: 7072 6f6a 6563 7461 6c69 676e 223e 0a20  projectalign\">. \n-000005e0: 2020 3c64 6976 2069 643d 2270 726f 6a65    <div id=\"proje\n-000005f0: 6374 6e61 6d65 223e 4f70 656e 5375 6264  ctname\">OpenSubd\n-00000600: 6976 0a20 2020 3c2f 6469 763e 0a20 203c  iv.   </div>.  <\n-00000610: 2f74 643e 0a20 3c2f 7472 3e0a 203c 2f74  /td>. </tr>. </t\n-00000620: 626f 6479 3e0a 3c2f 7461 626c 653e 0a3c  body>.</table>.<\n-00000630: 2f64 6976 3e0a 3c21 2d2d 2065 6e64 2068  /div>.<!-- end h\n-00000640: 6561 6465 7220 7061 7274 202d 2d3e 0a3c  eader part -->.<\n-00000650: 212d 2d20 4765 6e65 7261 7465 6420 6279  !-- Generated by\n-00000660: 2044 6f78 7967 656e 2031 2e39 2e38 202d   Doxygen 1.9.8 -\n-00000670: 2d3e 0a3c 7363 7269 7074 2074 7970 653d  ->.<script type=\n-00000680: 2274 6578 742f 6a61 7661 7363 7269 7074  \"text/javascript\n-00000690: 223e 0a2f 2a20 406c 6963 656e 7365 206d  \">./* @license m\n-000006a0: 6167 6e65 743a 3f78 743d 7572 6e3a 6274  agnet:?xt=urn:bt\n-000006b0: 6968 3a64 3364 3961 3961 3635 3935 3532  ih:d3d9a9a659552\n-000006c0: 3166 3936 3636 6135 6539 3463 6338 3330  1f9666a5e94cc830\n-000006d0: 6461 6238 3362 3635 3639 3926 616d 703b  dab83b65699&amp;\n-000006e0: 646e 3d65 7870 6174 2e74 7874 204d 4954  dn=expat.txt MIT\n-000006f0: 202a 2f0a 7661 7220 7365 6172 6368 426f   */.var searchBo\n-00000700: 7820 3d20 6e65 7720 5365 6172 6368 426f  x = new SearchBo\n-00000710: 7828 2273 6561 7263 6842 6f78 222c 2022  x(\"searchBox\", \"\n-00000720: 7365 6172 6368 2f22 2c27 2e68 746d 6c27  search/\",'.html'\n-00000730: 293b 0a2f 2a20 406c 6963 656e 7365 2d65  );./* @license-e\n-00000740: 6e64 202a 2f0a 3c2f 7363 7269 7074 3e0a  nd */.</script>.\n-00000750: 3c73 6372 6970 7420 7479 7065 3d22 7465  <script type=\"te\n-00000760: 7874 2f6a 6176 6173 6372 6970 7422 2073  xt/javascript\" s\n-00000770: 7263 3d22 6d65 6e75 6461 7461 2e6a 7322  rc=\"menudata.js\"\n-00000780: 3e3c 2f73 6372 6970 743e 0a3c 7363 7269  ></script>.<scri\n-00000790: 7074 2074 7970 653d 2274 6578 742f 6a61  pt type=\"text/ja\n-000007a0: 7661 7363 7269 7074 2220 7372 633d 226d  vascript\" src=\"m\n-000007b0: 656e 752e 6a73 223e 3c2f 7363 7269 7074  enu.js\"></script\n-000007c0: 3e0a 3c73 6372 6970 7420 7479 7065 3d22  >.<script type=\"\n-000007d0: 7465 7874 2f6a 6176 6173 6372 6970 7422  text/javascript\"\n-000007e0: 3e0a 2f2a 2040 6c69 6365 6e73 6520 6d61  >./* @license ma\n-000007f0: 676e 6574 3a3f 7874 3d75 726e 3a62 7469  gnet:?xt=urn:bti\n-00000800: 683a 6433 6439 6139 6136 3539 3535 3231  h:d3d9a9a6595521\n-00000810: 6639 3636 3661 3565 3934 6363 3833 3064  f9666a5e94cc830d\n-00000820: 6162 3833 6236 3536 3939 2661 6d70 3b64  ab83b65699&amp;d\n-00000830: 6e3d 6578 7061 742e 7478 7420 4d49 5420  n=expat.txt MIT \n-00000840: 2a2f 0a24 2866 756e 6374 696f 6e28 2920  */.$(function() \n-00000850: 7b0a 2020 696e 6974 4d65 6e75 2827 272c  {.  initMenu('',\n-00000860: 7472 7565 2c66 616c 7365 2c27 7365 6172  true,false,'sear\n-00000870: 6368 2e70 6870 272c 2753 6561 7263 6827  ch.php','Search'\n-00000880: 293b 0a20 2024 2864 6f63 756d 656e 7429  );.  $(document)\n-00000890: 2e72 6561 6479 2866 756e 6374 696f 6e28  .ready(function(\n-000008a0: 2920 7b20 696e 6974 5f73 6561 7263 6828  ) { init_search(\n-000008b0: 293b 207d 293b 0a7d 293b 0a2f 2a20 406c  ); });.});./* @l\n-000008c0: 6963 656e 7365 2d65 6e64 202a 2f0a 3c2f  icense-end */.</\n-000008d0: 7363 7269 7074 3e0a 3c64 6976 2069 643d  script>.<div id=\n-000008e0: 226d 6169 6e2d 6e61 7622 3e3c 2f64 6976  \"main-nav\"></div\n-000008f0: 3e0a 3c73 6372 6970 7420 7479 7065 3d22  >.<script type=\"\n-00000900: 7465 7874 2f6a 6176 6173 6372 6970 7422  text/javascript\"\n-00000910: 3e0a 2f2a 2040 6c69 6365 6e73 6520 6d61  >./* @license ma\n-00000920: 676e 6574 3a3f 7874 3d75 726e 3a62 7469  gnet:?xt=urn:bti\n-00000930: 683a 6433 6439 6139 6136 3539 3535 3231  h:d3d9a9a6595521\n-00000940: 6639 3636 3661 3565 3934 6363 3833 3064  f9666a5e94cc830d\n-00000950: 6162 3833 6236 3536 3939 2661 6d70 3b64  ab83b65699&amp;d\n-00000960: 6e3d 6578 7061 742e 7478 7420 4d49 5420  n=expat.txt MIT \n-00000970: 2a2f 0a24 2864 6f63 756d 656e 7429 2e72  */.$(document).r\n-00000980: 6561 6479 2866 756e 6374 696f 6e28 2920  eady(function() \n-00000990: 7b20 696e 6974 5f63 6f64 6566 6f6c 6428  { init_codefold(\n-000009a0: 3029 3b20 7d29 3b0a 2f2a 2040 6c69 6365  0); });./* @lice\n-000009b0: 6e73 652d 656e 6420 2a2f 0a3c 2f73 6372  nse-end */.</scr\n-000009c0: 6970 743e 0a3c 2f64 6976 3e3c 212d 2d20  ipt>.</div><!-- \n-000009d0: 746f 7020 2d2d 3e0a 3c64 6976 2069 643d  top -->.<div id=\n-000009e0: 2273 6964 652d 6e61 7622 2063 6c61 7373  \"side-nav\" class\n-000009f0: 3d22 7569 2d72 6573 697a 6162 6c65 2073  =\"ui-resizable s\n-00000a00: 6964 652d 6e61 762d 7265 7369 7a61 626c  ide-nav-resizabl\n-00000a10: 6522 3e0a 2020 3c64 6976 2069 643d 226e  e\">.  <div id=\"n\n-00000a20: 6176 2d74 7265 6522 3e0a 2020 2020 3c64  av-tree\">.    <d\n-00000a30: 6976 2069 643d 226e 6176 2d74 7265 652d  iv id=\"nav-tree-\n-00000a40: 636f 6e74 656e 7473 223e 0a20 2020 2020  contents\">.     \n-00000a50: 203c 6469 7620 6964 3d22 6e61 762d 7379   <div id=\"nav-sy\n-00000a60: 6e63 2220 636c 6173 733d 2273 796e 6322  nc\" class=\"sync\"\n-00000a70: 3e3c 2f64 6976 3e0a 2020 2020 3c2f 6469  ></div>.    </di\n-00000a80: 763e 0a20 203c 2f64 6976 3e0a 2020 3c64  v>.  </div>.  <d\n-00000a90: 6976 2069 643d 2273 706c 6974 6261 7222  iv id=\"splitbar\"\n-00000aa0: 2073 7479 6c65 3d22 2d6d 6f7a 2d75 7365   style=\"-moz-use\n-00000ab0: 722d 7365 6c65 6374 3a6e 6f6e 653b 2220  r-select:none;\" \n-00000ac0: 0a20 2020 2020 2020 636c 6173 733d 2275  .       class=\"u\n-00000ad0: 692d 7265 7369 7a61 626c 652d 6861 6e64  i-resizable-hand\n-00000ae0: 6c65 223e 0a20 203c 2f64 6976 3e0a 3c2f  le\">.  </div>.</\n-00000af0: 6469 763e 0a3c 7363 7269 7074 2074 7970  div>.<script typ\n-00000b00: 653d 2274 6578 742f 6a61 7661 7363 7269  e=\"text/javascri\n-00000b10: 7074 223e 0a2f 2a20 406c 6963 656e 7365  pt\">./* @license\n-00000b20: 206d 6167 6e65 743a 3f78 743d 7572 6e3a   magnet:?xt=urn:\n-00000b30: 6274 6968 3a64 3364 3961 3961 3635 3935  btih:d3d9a9a6595\n-00000b40: 3532 3166 3936 3636 6135 6539 3463 6338  521f9666a5e94cc8\n-00000b50: 3330 6461 6238 3362 3635 3639 3926 616d  30dab83b65699&am\n-00000b60: 703b 646e 3d65 7870 6174 2e74 7874 204d  p;dn=expat.txt M\n-00000b70: 4954 202a 2f0a 2428 646f 6375 6d65 6e74  IT */.$(document\n-00000b80: 292e 7265 6164 7928 6675 6e63 7469 6f6e  ).ready(function\n-00000b90: 2829 7b69 6e69 744e 6176 5472 6565 2827  (){initNavTree('\n-00000ba0: 6130 3037 3433 5f73 6f75 7263 652e 6874  a00743_source.ht\n-00000bb0: 6d6c 272c 2727 293b 2069 6e69 7452 6573  ml',''); initRes\n-00000bc0: 697a 6162 6c65 2829 3b20 7d29 3b0a 2f2a  izable(); });./*\n-00000bd0: 2040 6c69 6365 6e73 652d 656e 6420 2a2f   @license-end */\n-00000be0: 0a3c 2f73 6372 6970 743e 0a3c 6469 7620  .</script>.<div \n-00000bf0: 6964 3d22 646f 632d 636f 6e74 656e 7422  id=\"doc-content\"\n-00000c00: 3e0a 3c21 2d2d 2077 696e 646f 7720 7368  >.<!-- window sh\n-00000c10: 6f77 696e 6720 7468 6520 6669 6c74 6572  owing the filter\n-00000c20: 206f 7074 696f 6e73 202d 2d3e 0a3c 6469   options -->.<di\n-00000c30: 7620 6964 3d22 4d53 6561 7263 6853 656c  v id=\"MSearchSel\n-00000c40: 6563 7457 696e 646f 7722 0a20 2020 2020  ectWindow\".     \n-00000c50: 6f6e 6d6f 7573 656f 7665 723d 2272 6574  onmouseover=\"ret\n-00000c60: 7572 6e20 7365 6172 6368 426f 782e 4f6e  urn searchBox.On\n-00000c70: 5365 6172 6368 5365 6c65 6374 5368 6f77  SearchSelectShow\n-00000c80: 2829 220a 2020 2020 206f 6e6d 6f75 7365  ()\".     onmouse\n-00000c90: 6f75 743d 2272 6574 7572 6e20 7365 6172  out=\"return sear\n-00000ca0: 6368 426f 782e 4f6e 5365 6172 6368 5365  chBox.OnSearchSe\n-00000cb0: 6c65 6374 4869 6465 2829 220a 2020 2020  lectHide()\".    \n-00000cc0: 206f 6e6b 6579 646f 776e 3d22 7265 7475   onkeydown=\"retu\n-00000cd0: 726e 2073 6561 7263 6842 6f78 2e4f 6e53  rn searchBox.OnS\n-00000ce0: 6561 7263 6853 656c 6563 744b 6579 2865  earchSelectKey(e\n-00000cf0: 7665 6e74 2922 3e0a 3c2f 6469 763e 0a0a  vent)\">.</div>..\n-00000d00: 3c21 2d2d 2069 6672 616d 6520 7368 6f77  <!-- iframe show\n-00000d10: 696e 6720 7468 6520 7365 6172 6368 2072  ing the search r\n-00000d20: 6573 756c 7473 2028 636c 6f73 6564 2062  esults (closed b\n-00000d30: 7920 6465 6661 756c 7429 202d 2d3e 0a3c  y default) -->.<\n-00000d40: 6469 7620 6964 3d22 4d53 6561 7263 6852  div id=\"MSearchR\n-00000d50: 6573 756c 7473 5769 6e64 6f77 223e 0a3c  esultsWindow\">.<\n-00000d60: 6469 7620 6964 3d22 4d53 6561 7263 6852  div id=\"MSearchR\n-00000d70: 6573 756c 7473 223e 0a3c 6469 7620 636c  esults\">.<div cl\n-00000d80: 6173 733d 2253 5250 6167 6522 3e0a 3c64  ass=\"SRPage\">.<d\n-00000d90: 6976 2069 643d 2253 5249 6e64 6578 223e  iv id=\"SRIndex\">\n-00000da0: 0a3c 6469 7620 6964 3d22 5352 5265 7375  .<div id=\"SRResu\n-00000db0: 6c74 7322 3e3c 2f64 6976 3e0a 3c64 6976  lts\"></div>.<div\n-00000dc0: 2063 6c61 7373 3d22 5352 5374 6174 7573   class=\"SRStatus\n-00000dd0: 2220 6964 3d22 4c6f 6164 696e 6722 3e4c  \" id=\"Loading\">L\n-00000de0: 6f61 6469 6e67 2e2e 2e3c 2f64 6976 3e0a  oading...</div>.\n-00000df0: 3c64 6976 2063 6c61 7373 3d22 5352 5374  <div class=\"SRSt\n-00000e00: 6174 7573 2220 6964 3d22 5365 6172 6368  atus\" id=\"Search\n-00000e10: 696e 6722 3e53 6561 7263 6869 6e67 2e2e  ing\">Searching..\n-00000e20: 2e3c 2f64 6976 3e0a 3c64 6976 2063 6c61  .</div>.<div cla\n-00000e30: 7373 3d22 5352 5374 6174 7573 2220 6964  ss=\"SRStatus\" id\n-00000e40: 3d22 4e6f 4d61 7463 6865 7322 3e4e 6f20  =\"NoMatches\">No \n-00000e50: 4d61 7463 6865 733c 2f64 6976 3e0a 3c2f  Matches</div>.</\n-00000e60: 6469 763e 0a3c 2f64 6976 3e0a 3c2f 6469  div>.</div>.</di\n-00000e70: 763e 0a3c 2f64 6976 3e0a 0a3c 6469 7620  v>.</div>..<div \n-00000e80: 636c 6173 733d 2268 6561 6465 7222 3e0a  class=\"header\">.\n-00000e90: 2020 3c64 6976 2063 6c61 7373 3d22 6865    <div class=\"he\n-00000ea0: 6164 6572 7469 746c 6522 3e3c 6469 7620  adertitle\"><div \n-00000eb0: 636c 6173 733d 2274 6974 6c65 223e 7363  class=\"title\">sc\n-00000ec0: 6865 6d65 2e68 3c2f 6469 763e 3c2f 6469  heme.h</div></di\n-00000ed0: 763e 0a3c 2f64 6976 3e3c 212d 2d68 6561  v>.</div><!--hea\n-00000ee0: 6465 722d 2d3e 0a3c 6469 7620 636c 6173  der-->.<div clas\n-00000ef0: 733d 2263 6f6e 7465 6e74 7322 3e0a 3c61  s=\"contents\">.<a\n-00000f00: 2068 7265 663d 2261 3030 3734 332e 6874   href=\"a00743.ht\n-00000f10: 6d6c 223e 476f 2074 6f20 7468 6520 646f  ml\">Go to the do\n-00000f20: 6375 6d65 6e74 6174 696f 6e20 6f66 2074  cumentation of t\n-00000f30: 6869 7320 6669 6c65 2e3c 2f61 3e3c 6469  his file.</a><di\n-00000f40: 7620 636c 6173 733d 2266 7261 676d 656e  v class=\"fragmen\n-00000f50: 7422 3e3c 6469 7620 636c 6173 733d 226c  t\"><div class=\"l\n-00000f60: 696e 6522 3e3c 6120 6964 3d22 6c30 3030  ine\"><a id=\"l000\n-00000f70: 3031 2220 6e61 6d65 3d22 6c30 3030 3031  01\" name=\"l00001\n-00000f80: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n-00000f90: 733d 226c 696e 656e 6f22 3e20 2020 2031  s=\"lineno\">    1\n-00000fa0: 3c2f 7370 616e 3e3c 7370 616e 2063 6c61  </span><span cla\n-00000fb0: 7373 3d22 636f 6d6d 656e 7422 3e2f 2f3c  ss=\"comment\">//<\n-00000fc0: 2f73 7061 6e3e 3c2f 6469 763e 0a3c 6469  /span></div>.<di\n-00000fd0: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n-00000fe0: 6120 6964 3d22 6c30 3030 3032 2220 6e61  a id=\"l00002\" na\n-00000ff0: 6d65 3d22 6c30 3030 3032 223e 3c2f 613e  me=\"l00002\"></a>\n-00001000: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n-00001010: 656e 6f22 3e20 2020 2032 3c2f 7370 616e  eno\">    2</span\n-00001020: 3e3c 7370 616e 2063 6c61 7373 3d22 636f  ><span class=\"co\n-00001030: 6d6d 656e 7422 3e2f 2f20 2020 436f 7079  mment\">//   Copy\n-00001040: 7269 6768 7420 3230 3134 2044 7265 616d  right 2014 Dream\n-00001050: 576f 726b 7320 416e 696d 6174 696f 6e20  Works Animation \n-00001060: 4c4c 432e 3c2f 7370 616e 3e3c 2f64 6976  LLC.</span></div\n-00001070: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n-00001080: 6e65 223e 3c61 2069 643d 226c 3030 3030  ne\"><a id=\"l0000\n-00001090: 3322 206e 616d 653d 226c 3030 3030 3322  3\" name=\"l00003\"\n-000010a0: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n-000010b0: 3d22 6c69 6e65 6e6f 223e 2020 2020 333c  =\"lineno\">    3<\n-000010c0: 2f73 7061 6e3e 3c73 7061 6e20 636c 6173  /span><span clas\n-000010d0: 733d 2263 6f6d 6d65 6e74 223e 2f2f 3c2f  s=\"comment\">//</\n-000010e0: 7370 616e 3e3c 2f64 6976 3e0a 3c64 6976  span></div>.<div\n-000010f0: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n-00001100: 2069 643d 226c 3030 3030 3422 206e 616d   id=\"l00004\" nam\n-00001110: 653d 226c 3030 3030 3422 3e3c 2f61 3e3c  e=\"l00004\"></a><\n-00001120: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n-00001130: 6e6f 223e 2020 2020 343c 2f73 7061 6e3e  no\">    4</span>\n-00001140: 3c73 7061 6e20 636c 6173 733d 2263 6f6d  <span class=\"com\n-00001150: 6d65 6e74 223e 2f2f 2020 204c 6963 656e  ment\">//   Licen\n-00001160: 7365 6420 756e 6465 7220 7468 6520 4170  sed under the Ap\n-00001170: 6163 6865 204c 6963 656e 7365 2c20 5665  ache License, Ve\n-00001180: 7273 696f 6e20 322e 3020 2874 6865 2026  rsion 2.0 (the &\n-00001190: 7175 6f74 3b41 7061 6368 6520 4c69 6365  quot;Apache Lice\n-000011a0: 6e73 6526 7175 6f74 3b29 3c2f 7370 616e  nse&quot;)</span\n-000011b0: 3e3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ></div>.<div cla\n-000011c0: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n-000011d0: 226c 3030 3030 3522 206e 616d 653d 226c  \"l00005\" name=\"l\n-000011e0: 3030 3030 3522 3e3c 2f61 3e3c 7370 616e  00005\"></a><span\n-000011f0: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n-00001200: 2020 2020 353c 2f73 7061 6e3e 3c73 7061      5</span><spa\n-00001210: 6e20 636c 6173 733d 2263 6f6d 6d65 6e74  n class=\"comment\n-00001220: 223e 2f2f 2020 2077 6974 6820 7468 6520  \">//   with the \n-00001230: 666f 6c6c 6f77 696e 6720 6d6f 6469 6669  following modifi\n-00001240: 6361 7469 6f6e 3b20 796f 7520 6d61 7920  cation; you may \n-00001250: 6e6f 7420 7573 6520 7468 6973 2066 696c  not use this fil\n-00001260: 6520 6578 6365 7074 2069 6e3c 2f73 7061  e except in</spa\n-00001270: 6e3e 3c2f 6469 763e 0a3c 6469 7620 636c  n></div>.<div cl\n-00001280: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n-00001290: 3d22 6c30 3030 3036 2220 6e61 6d65 3d22  =\"l00006\" name=\"\n-000012a0: 6c30 3030 3036 223e 3c2f 613e 3c73 7061  l00006\"></a><spa\n-000012b0: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n-000012c0: 3e20 2020 2036 3c2f 7370 616e 3e3c 7370  >    6</span><sp\n-000012d0: 616e 2063 6c61 7373 3d22 636f 6d6d 656e  an class=\"commen\n-000012e0: 7422 3e2f 2f20 2020 636f 6d70 6c69 616e  t\">//   complian\n-000012f0: 6365 2077 6974 6820 7468 6520 4170 6163  ce with the Apac\n-00001300: 6865 204c 6963 656e 7365 2061 6e64 2074  he License and t\n-00001310: 6865 2066 6f6c 6c6f 7769 6e67 206d 6f64  he following mod\n-00001320: 6966 6963 6174 696f 6e20 746f 2069 743a  ification to it:\n-00001330: 3c2f 7370 616e 3e3c 2f64 6976 3e0a 3c64  </span></div>.<d\n-00001340: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n-00001350: 3c61 2069 643d 226c 3030 3030 3722 206e  <a id=\"l00007\" n\n-00001360: 616d 653d 226c 3030 3030 3722 3e3c 2f61  ame=\"l00007\"></a\n-00001370: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n-00001380: 6e65 6e6f 223e 2020 2020 373c 2f73 7061  neno\">    7</spa\n-00001390: 6e3e 3c73 7061 6e20 636c 6173 733d 2263  n><span class=\"c\n-000013a0: 6f6d 6d65 6e74 223e 2f2f 2020 2053 6563  omment\">//   Sec\n-000013b0: 7469 6f6e 2036 2e20 5472 6164 656d 6172  tion 6. Trademar\n-000013c0: 6b73 2e20 6973 2064 656c 6574 6564 2061  ks. is deleted a\n-000013d0: 6e64 2072 6570 6c61 6365 6420 7769 7468  nd replaced with\n-000013e0: 3a3c 2f73 7061 6e3e 3c2f 6469 763e 0a3c  :</span></div>.<\n-000013f0: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n-00001400: 3e3c 6120 6964 3d22 6c30 3030 3038 2220  ><a id=\"l00008\" \n-00001410: 6e61 6d65 3d22 6c30 3030 3038 223e 3c2f  name=\"l00008\"></\n-00001420: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n-00001430: 696e 656e 6f22 3e20 2020 2038 3c2f 7370  ineno\">    8</sp\n-00001440: 616e 3e3c 7370 616e 2063 6c61 7373 3d22  an><span class=\"\n-00001450: 636f 6d6d 656e 7422 3e2f 2f3c 2f73 7061  comment\">//</spa\n-00001460: 6e3e 3c2f 6469 763e 0a3c 6469 7620 636c  n></div>.<div cl\n-00001470: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n-00001480: 3d22 6c30 3030 3039 2220 6e61 6d65 3d22  =\"l00009\" name=\"\n-00001490: 6c30 3030 3039 223e 3c2f 613e 3c73 7061  l00009\"></a><spa\n-000014a0: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n-000014b0: 3e20 2020 2039 3c2f 7370 616e 3e3c 7370  >    9</span><sp\n-000014c0: 616e 2063 6c61 7373 3d22 636f 6d6d 656e  an class=\"commen\n-000014d0: 7422 3e2f 2f20 2020 362e 2054 7261 6465  t\">//   6. Trade\n-000014e0: 6d61 726b 732e 2054 6869 7320 4c69 6365  marks. This Lice\n-000014f0: 6e73 6520 646f 6573 206e 6f74 2067 7261  nse does not gra\n-00001500: 6e74 2070 6572 6d69 7373 696f 6e20 746f  nt permission to\n-00001510: 2075 7365 2074 6865 2074 7261 6465 3c2f   use the trade</\n-00001520: 7370 616e 3e3c 2f64 6976 3e0a 3c64 6976  span></div>.<div\n-00001530: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n-00001540: 2069 643d 226c 3030 3031 3022 206e 616d   id=\"l00010\" nam\n-00001550: 653d 226c 3030 3031 3022 3e3c 2f61 3e3c  e=\"l00010\"></a><\n-00001560: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n-00001570: 6e6f 223e 2020 2031 303c 2f73 7061 6e3e  no\">   10</span>\n-00001580: 3c73 7061 6e20 636c 6173 733d 2263 6f6d  <span class=\"com\n-00001590: 6d65 6e74 223e 2f2f 2020 2020 2020 6e61  ment\">//      na\n-000015a0: 6d65 732c 2074 7261 6465 6d61 726b 732c  mes, trademarks,\n-000015b0: 2073 6572 7669 6365 206d 6172 6b73 2c20   service marks, \n-000015c0: 6f72 2070 726f 6475 6374 206e 616d 6573  or product names\n-000015d0: 206f 6620 7468 6520 4c69 6365 6e73 6f72   of the Licensor\n-000015e0: 3c2f 7370 616e 3e3c 2f64 6976 3e0a 3c64  </span></div>.<d\n-000015f0: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n-00001600: 3c61 2069 643d 226c 3030 3031 3122 206e  <a id=\"l00011\" n\n-00001610: 616d 653d 226c 3030 3031 3122 3e3c 2f61  ame=\"l00011\"></a\n-00001620: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n-00001630: 6e65 6e6f 223e 2020 2031 313c 2f73 7061  neno\">   11</spa\n-00001640: 6e3e 3c73 7061 6e20 636c 6173 733d 2263  n><span class=\"c\n-00001650: 6f6d 6d65 6e74 223e 2f2f 2020 2020 2020  omment\">//      \n-00001660: 616e 6420 6974 7320 6166 6669 6c69 6174  and its affiliat\n-00001670: 6573 2c20 6578 6365 7074 2061 7320 7265  es, except as re\n-00001680: 7175 6972 6564 2074 6f20 636f 6d70 6c79  quired to comply\n-00001690: 2077 6974 6820 5365 6374 696f 6e20 3428   with Section 4(\n-000016a0: 6329 206f 663c 2f73 7061 6e3e 3c2f 6469  c) of</span></di\n-000016b0: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n-000016c0: 696e 6522 3e3c 6120 6964 3d22 6c30 3030  ine\"><a id=\"l000\n-000016d0: 3132 2220 6e61 6d65 3d22 6c30 3030 3132  12\" name=\"l00012\n-000016e0: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n-000016f0: 733d 226c 696e 656e 6f22 3e20 2020 3132  s=\"lineno\">   12\n-00001700: 3c2f 7370 616e 3e3c 7370 616e 2063 6c61  </span><span cla\n-00001710: 7373 3d22 636f 6d6d 656e 7422 3e2f 2f20  ss=\"comment\">// \n-00001720: 2020 2020 2074 6865 204c 6963 656e 7365       the License\n-00001730: 2061 6e64 2074 6f20 7265 7072 6f64 7563   and to reproduc\n-00001740: 6520 7468 6520 636f 6e74 656e 7420 6f66  e the content of\n-00001750: 2074 6865 204e 4f54 4943 4520 6669 6c65   the NOTICE file\n-00001760: 2e3c 2f73 7061 6e3e 3c2f 6469 763e 0a3c  .</span></div>.<\n-00001770: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n-00001780: 3e3c 6120 6964 3d22 6c30 3030 3133 2220  ><a id=\"l00013\" \n-00001790: 6e61 6d65 3d22 6c30 3030 3133 223e 3c2f  name=\"l00013\"></\n-000017a0: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n-000017b0: 696e 656e 6f22 3e20 2020 3133 3c2f 7370  ineno\">   13</sp\n-000017c0: 616e 3e3c 7370 616e 2063 6c61 7373 3d22  an><span class=\"\n-000017d0: 636f 6d6d 656e 7422 3e2f 2f3c 2f73 7061  comment\">//</spa\n-000017e0: 6e3e 3c2f 6469 763e 0a3c 6469 7620 636c  n></div>.<div cl\n-000017f0: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n-00001800: 3d22 6c30 3030 3134 2220 6e61 6d65 3d22  =\"l00014\" name=\"\n-00001810: 6c30 3030 3134 223e 3c2f 613e 3c73 7061  l00014\"></a><spa\n-00001820: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n-00001830: 3e20 2020 3134 3c2f 7370 616e 3e3c 7370  >   14</span><sp\n-00001840: 616e 2063 6c61 7373 3d22 636f 6d6d 656e  an class=\"commen\n-00001850: 7422 3e2f 2f20 2020 596f 7520 6d61 7920  t\">//   You may \n-00001860: 6f62 7461 696e 2061 2063 6f70 7920 6f66  obtain a copy of\n-00001870: 2074 6865 2041 7061 6368 6520 4c69 6365   the Apache Lice\n-00001880: 6e73 6520 6174 3c2f 7370 616e 3e3c 2f64  nse at</span></d\n-00001890: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n-000018a0: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n-000018b0: 3031 3522 206e 616d 653d 226c 3030 3031  015\" name=\"l0001\n-000018c0: 3522 3e3c 2f61 3e3c 7370 616e 2063 6c61  5\"></a><span cla\n-000018d0: 7373 3d22 6c69 6e65 6e6f 223e 2020 2031  ss=\"lineno\">   1\n-000018e0: 353c 2f73 7061 6e3e 3c73 7061 6e20 636c  5</span><span cl\n-000018f0: 6173 733d 2263 6f6d 6d65 6e74 223e 2f2f  ass=\"comment\">//\n-00001900: 3c2f 7370 616e 3e3c 2f64 6976 3e0a 3c64  </span></div>.<d\n-00001910: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n-00001920: 3c61 2069 643d 226c 3030 3031 3622 206e  <a id=\"l00016\" n\n-00001930: 616d 653d 226c 3030 3031 3622 3e3c 2f61  ame=\"l00016\"></a\n-00001940: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n-00001950: 6e65 6e6f 223e 2020 2031 363c 2f73 7061  neno\">   16</spa\n-00001960: 6e3e 3c73 7061 6e20 636c 6173 733d 2263  n><span class=\"c\n-00001970: 6f6d 6d65 6e74 223e 2f2f 2020 2020 2020  omment\">//      \n-00001980: 2068 7474 703a 2f2f 7777 772e 6170 6163   http://www.apac\n-00001990: 6865 2e6f 7267 2f6c 6963 656e 7365 732f  he.org/licenses/\n-000019a0: 4c49 4345 4e53 452d 322e 303c 2f73 7061  LICENSE-2.0</spa\n-000019b0: 6e3e 3c2f 6469 763e 0a3c 6469 7620 636c  n></div>.<div cl\n-000019c0: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n-000019d0: 3d22 6c30 3030 3137 2220 6e61 6d65 3d22  =\"l00017\" name=\"\n-000019e0: 6c30 3030 3137 223e 3c2f 613e 3c73 7061  l00017\"></a><spa\n-000019f0: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n-00001a00: 3e20 2020 3137 3c2f 7370 616e 3e3c 7370  >   17</span><sp\n-00001a10: 616e 2063 6c61 7373 3d22 636f 6d6d 656e  an class=\"commen\n-00001a20: 7422 3e2f 2f3c 2f73 7061 6e3e 3c2f 6469  t\">//</span></di\n-00001a30: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n-00001a40: 696e 6522 3e3c 6120 6964 3d22 6c30 3030  ine\"><a id=\"l000\n-00001a50: 3138 2220 6e61 6d65 3d22 6c30 3030 3138  18\" name=\"l00018\n-00001a60: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n-00001a70: 733d 226c 696e 656e 6f22 3e20 2020 3138  s=\"lineno\">   18\n-00001a80: 3c2f 7370 616e 3e3c 7370 616e 2063 6c61  </span><span cla\n-00001a90: 7373 3d22 636f 6d6d 656e 7422 3e2f 2f20  ss=\"comment\">// \n-00001aa0: 2020 556e 6c65 7373 2072 6571 7569 7265    Unless require\n-00001ab0: 6420 6279 2061 7070 6c69 6361 626c 6520  d by applicable \n-00001ac0: 6c61 7720 6f72 2061 6772 6565 6420 746f  law or agreed to\n-00001ad0: 2069 6e20 7772 6974 696e 672c 2073 6f66   in writing, sof\n-00001ae0: 7477 6172 653c 2f73 7061 6e3e 3c2f 6469  tware</span></di\n-00001af0: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n-00001b00: 696e 6522 3e3c 6120 6964 3d22 6c30 3030  ine\"><a id=\"l000\n-00001b10: 3139 2220 6e61 6d65 3d22 6c30 3030 3139  19\" name=\"l00019\n-00001b20: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n-00001b30: 733d 226c 696e 656e 6f22 3e20 2020 3139  s=\"lineno\">   19\n-00001b40: 3c2f 7370 616e 3e3c 7370 616e 2063 6c61  </span><span cla\n-00001b50: 7373 3d22 636f 6d6d 656e 7422 3e2f 2f20  ss=\"comment\">// \n-00001b60: 2020 6469 7374 7269 6275 7465 6420 756e    distributed un\n-00001b70: 6465 7220 7468 6520 4170 6163 6865 204c  der the Apache L\n-00001b80: 6963 656e 7365 2077 6974 6820 7468 6520  icense with the \n-00001b90: 6162 6f76 6520 6d6f 6469 6669 6361 7469  above modificati\n-00001ba0: 6f6e 2069 733c 2f73 7061 6e3e 3c2f 6469  on is</span></di\n-00001bb0: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n-00001bc0: 696e 6522 3e3c 6120 6964 3d22 6c30 3030  ine\"><a id=\"l000\n-00001bd0: 3230 2220 6e61 6d65 3d22 6c30 3030 3230  20\" name=\"l00020\n-00001be0: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n-00001bf0: 733d 226c 696e 656e 6f22 3e20 2020 3230  s=\"lineno\">   20\n-00001c00: 3c2f 7370 616e 3e3c 7370 616e 2063 6c61  </span><span cla\n-00001c10: 7373 3d22 636f 6d6d 656e 7422 3e2f 2f20  ss=\"comment\">// \n-00001c20: 2020 6469 7374 7269 6275 7465 6420 6f6e    distributed on\n-00001c30: 2061 6e20 2671 756f 743b 4153 2049 5326   an &quot;AS IS&\n-00001c40: 7175 6f74 3b20 4241 5349 532c 2057 4954  quot; BASIS, WIT\n-00001c50: 484f 5554 2057 4152 5241 4e54 4945 5320  HOUT WARRANTIES \n-00001c60: 4f52 2043 4f4e 4449 5449 4f4e 5320 4f46  OR CONDITIONS OF\n-00001c70: 2041 4e59 3c2f 7370 616e 3e3c 2f64 6976   ANY</span></div\n-00001c80: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n-00001c90: 6e65 223e 3c61 2069 643d 226c 3030 3032  ne\"><a id=\"l0002\n-00001ca0: 3122 206e 616d 653d 226c 3030 3032 3122  1\" name=\"l00021\"\n-00001cb0: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n-00001cc0: 3d22 6c69 6e65 6e6f 223e 2020 2032 313c  =\"lineno\">   21<\n-00001cd0: 2f73 7061 6e3e 3c73 7061 6e20 636c 6173  /span><span clas\n-00001ce0: 733d 2263 6f6d 6d65 6e74 223e 2f2f 2020  s=\"comment\">//  \n-00001cf0: 204b 494e 442c 2065 6974 6865 7220 6578   KIND, either ex\n-00001d00: 7072 6573 7320 6f72 2069 6d70 6c69 6564  press or implied\n-00001d10: 2e20 5365 6520 7468 6520 4170 6163 6865  . See the Apache\n-00001d20: 204c 6963 656e 7365 2066 6f72 2074 6865   License for the\n-00001d30: 2073 7065 6369 6669 633c 2f73 7061 6e3e   specific</span>\n-00001d40: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n-00001d50: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n-00001d60: 6c30 3030 3232 2220 6e61 6d65 3d22 6c30  l00022\" name=\"l0\n-00001d70: 3030 3232 223e 3c2f 613e 3c73 7061 6e20  0022\"></a><span \n-00001d80: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n-00001d90: 2020 3232 3c2f 7370 616e 3e3c 7370 616e    22</span><span\n-00001da0: 2063 6c61 7373 3d22 636f 6d6d 656e 7422   class=\"comment\"\n-00001db0: 3e2f 2f20 2020 6c61 6e67 7561 6765 2067  >//   language g\n-00001dc0: 6f76 6572 6e69 6e67 2070 6572 6d69 7373  overning permiss\n-00001dd0: 696f 6e73 2061 6e64 206c 696d 6974 6174  ions and limitat\n-00001de0: 696f 6e73 2075 6e64 6572 2074 6865 2041  ions under the A\n-00001df0: 7061 6368 6520 4c69 6365 6e73 652e 3c2f  pache License.</\n-00001e00: 7370 616e 3e3c 2f64 6976 3e0a 3c64 6976  span></div>.<div\n-00001e10: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n-00001e20: 2069 643d 226c 3030 3032 3322 206e 616d   id=\"l00023\" nam\n-00001e30: 653d 226c 3030 3032 3322 3e3c 2f61 3e3c  e=\"l00023\"></a><\n-00001e40: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n-00001e50: 6e6f 223e 2020 2032 333c 2f73 7061 6e3e  no\">   23</span>\n-00001e60: 3c73 7061 6e20 636c 6173 733d 2263 6f6d  <span class=\"com\n-00001e70: 6d65 6e74 223e 2f2f 3c2f 7370 616e 3e3c  ment\">//</span><\n-00001e80: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n-00001e90: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n-00001ea0: 3030 3032 3422 206e 616d 653d 226c 3030  00024\" name=\"l00\n-00001eb0: 3032 3422 3e3c 2f61 3e3c 7370 616e 2063  024\"></a><span c\n-00001ec0: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n-00001ed0: 2032 343c 2f73 7061 6e3e 3c73 7061 6e20   24</span><span \n-00001ee0: 636c 6173 733d 2270 7265 7072 6f63 6573  class=\"preproces\n-00001ef0: 736f 7222 3e23 6966 6e64 6566 204f 5045  sor\">#ifndef OPE\n-00001f00: 4e53 5542 4449 5633 5f53 4443 5f53 4348  NSUBDIV3_SDC_SCH\n-00001f10: 454d 455f 483c 2f73 7061 6e3e 3c2f 6469  EME_H</span></di\n-00001f20: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n-00001f30: 696e 6522 3e3c 6120 6964 3d22 6c30 3030  ine\"><a id=\"l000\n-00001f40: 3235 2220 6e61 6d65 3d22 6c30 3030 3235  25\" name=\"l00025\n-00001f50: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n-00001f60: 733d 226c 696e 656e 6f22 3e20 2020 3235  s=\"lineno\">   25\n-00001f70: 3c2f 7370 616e 3e3c 7370 616e 2063 6c61  </span><span cla\n-00001f80: 7373 3d22 7072 6570 726f 6365 7373 6f72  ss=\"preprocessor\n-00001f90: 223e 2364 6566 696e 6520 4f50 454e 5355  \">#define OPENSU\n-00001fa0: 4244 4956 335f 5344 435f 5343 4845 4d45  BDIV3_SDC_SCHEME\n-00001fb0: 5f48 3c2f 7370 616e 3e3c 2f64 6976 3e0a  _H</span></div>.\n-00001fc0: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n-00001fd0: 223e 3c61 2069 643d 226c 3030 3032 3622  \"><a id=\"l00026\"\n-00001fe0: 206e 616d 653d 226c 3030 3032 3622 3e3c   name=\"l00026\"><\n-00001ff0: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n-00002000: 6c69 6e65 6e6f 223e 2020 2032 363c 2f73  lineno\">   26</s\n-00002010: 7061 6e3e 203c 2f64 6976 3e0a 3c64 6976  pan> </div>.<div\n-00002020: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n-00002030: 2069 643d 226c 3030 3032 3722 206e 616d   id=\"l00027\" nam\n-00002040: 653d 226c 3030 3032 3722 3e3c 2f61 3e3c  e=\"l00027\"></a><\n-00002050: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n-00002060: 6e6f 223e 2020 2032 373c 2f73 7061 6e3e  no\">   27</span>\n-00002070: 3c73 7061 6e20 636c 6173 733d 2270 7265  <span class=\"pre\n-00002080: 7072 6f63 6573 736f 7222 3e23 696e 636c  processor\">#incl\n-00002090: 7564 6520 2671 756f 743b 2e2e 2f76 6572  ude &quot;../ver\n-000020a0: 7369 6f6e 2e68 2671 756f 743b 3c2f 7370  sion.h&quot;</sp\n-000020b0: 616e 3e3c 2f64 6976 3e0a 3c64 6976 2063  an></div>.<div c\n-000020c0: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n-000020d0: 643d 226c 3030 3032 3822 206e 616d 653d  d=\"l00028\" name=\n-000020e0: 226c 3030 3032 3822 3e3c 2f61 3e3c 7370  \"l00028\"></a><sp\n-000020f0: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n-00002100: 223e 2020 2032 383c 2f73 7061 6e3e 203c  \">   28</span> <\n-00002110: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n-00002120: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n-00002130: 3030 3032 3922 206e 616d 653d 226c 3030  00029\" name=\"l00\n-00002140: 3032 3922 3e3c 2f61 3e3c 7370 616e 2063  029\"></a><span c\n-00002150: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n-00002160: 2032 393c 2f73 7061 6e3e 3c73 7061 6e20   29</span><span \n-00002170: 636c 6173 733d 2270 7265 7072 6f63 6573  class=\"preproces\n-00002180: 736f 7222 3e23 696e 636c 7564 6520 2671  sor\">#include &q\n-00002190: 756f 743b 2e2e 2f73 6463 2f74 7970 6573  uot;../sdc/types\n-000021a0: 2e68 2671 756f 743b 3c2f 7370 616e 3e3c  .h&quot;</span><\n-000021b0: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n-000021c0: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n-000021d0: 3030 3033 3022 206e 616d 653d 226c 3030  00030\" name=\"l00\n-000021e0: 3033 3022 3e3c 2f61 3e3c 7370 616e 2063  030\"></a><span c\n-000021f0: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n-00002200: 2033 303c 2f73 7061 6e3e 3c73 7061 6e20   30</span><span \n-00002210: 636c 6173 733d 2270 7265 7072 6f63 6573  class=\"preproces\n-00002220: 736f 7222 3e23 696e 636c 7564 6520 2671  sor\">#include &q\n-00002230: 756f 743b 2e2e 2f73 6463 2f6f 7074 696f  uot;../sdc/optio\n-00002240: 6e73 2e68 2671 756f 743b 3c2f 7370 616e  ns.h&quot;</span\n-00002250: 3e3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ></div>.<div cla\n-00002260: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n-00002270: 226c 3030 3033 3122 206e 616d 653d 226c  \"l00031\" name=\"l\n-00002280: 3030 3033 3122 3e3c 2f61 3e3c 7370 616e  00031\"></a><span\n-00002290: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n-000022a0: 2020 2033 313c 2f73 7061 6e3e 3c73 7061     31</span><spa\n-000022b0: 6e20 636c 6173 733d 2270 7265 7072 6f63  n class=\"preproc\n-000022c0: 6573 736f 7222 3e23 696e 636c 7564 6520  essor\">#include \n-000022d0: 2671 756f 743b 2e2e 2f73 6463 2f63 7265  &quot;../sdc/cre\n-000022e0: 6173 652e 6826 7175 6f74 3b3c 2f73 7061  ase.h&quot;</spa\n-000022f0: 6e3e 3c2f 6469 763e 0a3c 6469 7620 636c  n></div>.<div cl\n-00002300: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n-00002310: 3d22 6c30 3030 3332 2220 6e61 6d65 3d22  =\"l00032\" name=\"\n-00002320: 6c30 3030 3332 223e 3c2f 613e 3c73 7061  l00032\"></a><spa\n-00002330: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n-00002340: 3e20 2020 3332 3c2f 7370 616e 3e20 3c2f  >   32</span> </\n-00002350: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n-00002360: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n-00002370: 3030 3333 2220 6e61 6d65 3d22 6c30 3030  0033\" name=\"l000\n-00002380: 3333 223e 3c2f 613e 3c73 7061 6e20 636c  33\"></a><span cl\n-00002390: 6173 733d 226c 696e 656e 6f22 3e20 2020  ass=\"lineno\">   \n-000023a0: 3333 3c2f 7370 616e 3e3c 7370 616e 2063  33</span><span c\n-000023b0: 6c61 7373 3d22 7072 6570 726f 6365 7373  lass=\"preprocess\n-000023c0: 6f72 223e 2369 6e63 6c75 6465 2026 6c74  or\">#include &lt\n-000023d0: 3b63 6173 7365 7274 2667 743b 3c2f 7370  ;cassert&gt;</sp\n-000023e0: 616e 3e3c 2f64 6976 3e0a 3c64 6976 2063  an></div>.<div c\n-000023f0: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n-00002400: 643d 226c 3030 3033 3422 206e 616d 653d  d=\"l00034\" name=\n-00002410: 226c 3030 3033 3422 3e3c 2f61 3e3c 7370  \"l00034\"></a><sp\n-00002420: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n-00002430: 223e 2020 2033 343c 2f73 7061 6e3e 3c73  \">   34</span><s\n-00002440: 7061 6e20 636c 6173 733d 2270 7265 7072  pan class=\"prepr\n-00002450: 6f63 6573 736f 7222 3e23 696e 636c 7564  ocessor\">#includ\n-00002460: 6520 266c 743b 6373 7464 6c69 6226 6774  e &lt;cstdlib&gt\n-00002470: 3b3c 2f73 7061 6e3e 3c2f 6469 763e 0a3c  ;</span></div>.<\n-00002480: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n-00002490: 3e3c 6120 6964 3d22 6c30 3030 3335 2220  ><a id=\"l00035\" \n-000024a0: 6e61 6d65 3d22 6c30 3030 3335 223e 3c2f  name=\"l00035\"></\n-000024b0: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n-000024c0: 696e 656e 6f22 3e20 2020 3335 3c2f 7370  ineno\">   35</sp\n-000024d0: 616e 3e3c 7370 616e 2063 6c61 7373 3d22  an><span class=\"\n-000024e0: 7072 6570 726f 6365 7373 6f72 223e 2369  preprocessor\">#i\n-000024f0: 6e63 6c75 6465 2026 6c74 3b76 6563 746f  nclude &lt;vecto\n-00002500: 7226 6774 3b3c 2f73 7061 6e3e 3c2f 6469  r&gt;</span></di\n-00002510: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n-00002520: 696e 6522 3e3c 6120 6964 3d22 6c30 3030  ine\"><a id=\"l000\n-00002530: 3336 2220 6e61 6d65 3d22 6c30 3030 3336  36\" name=\"l00036\n-00002540: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n-00002550: 733d 226c 696e 656e 6f22 3e20 2020 3336  s=\"lineno\">   36\n-00002560: 3c2f 7370 616e 3e20 3c2f 6469 763e 0a3c  </span> </div>.<\n-00002570: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n-00002580: 3e3c 6120 6964 3d22 6c30 3030 3337 2220  ><a id=\"l00037\" \n-00002590: 6e61 6d65 3d22 6c30 3030 3337 223e 3c2f  name=\"l00037\"></\n-000025a0: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n-000025b0: 696e 656e 6f22 3e20 2020 3337 3c2f 7370  ineno\">   37</sp\n-000025c0: 616e 3e3c 7370 616e 2063 6c61 7373 3d22  an><span class=\"\n-000025d0: 6b65 7977 6f72 6422 3e6e 616d 6573 7061  keyword\">namespa\n-000025e0: 6365 203c 2f73 7061 6e3e 3c61 2063 6c61  ce </span><a cla\n-000025f0: 7373 3d22 636f 6465 2068 6c5f 6e61 6d65  ss=\"code hl_name\n-00002600: 7370 6163 6522 2068 7265 663d 2261 3030  space\" href=\"a00\n-00002610: 3930 352e 6874 6d6c 223e 4f70 656e 5375  905.html\">OpenSu\n-00002620: 6264 6976 3c2f 613e 207b 3c2f 6469 763e  bdiv</a> {</div>\n-00002630: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n-00002640: 6522 3e3c 6120 6964 3d22 6c30 3030 3338  e\"><a id=\"l00038\n-00002650: 2220 6e61 6d65 3d22 6c30 3030 3338 223e  \" name=\"l00038\">\n-00002660: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n-00002670: 226c 696e 656e 6f22 3e20 2020 3338 3c2f  \"lineno\">   38</\n-00002680: 7370 616e 3e3c 7370 616e 2063 6c61 7373  span><span class\n-00002690: 3d22 6b65 7977 6f72 6422 3e6e 616d 6573  =\"keyword\">names\n-000026a0: 7061 6365 203c 2f73 7061 6e3e 4f50 454e  pace </span>OPEN\n-000026b0: 5355 4244 4956 5f56 4552 5349 4f4e 207b  SUBDIV_VERSION {\n-000026c0: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n-000026d0: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n-000026e0: 6c30 3030 3339 2220 6e61 6d65 3d22 6c30  l00039\" name=\"l0\n-000026f0: 3030 3339 223e 3c2f 613e 3c73 7061 6e20  0039\"></a><span \n-00002700: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n-00002710: 2020 3339 3c2f 7370 616e 3e20 3c2f 6469    39</span> </di\n-00002720: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n-00002730: 696e 6522 3e3c 6120 6964 3d22 6c30 3030  ine\"><a id=\"l000\n-00002740: 3430 2220 6e61 6d65 3d22 6c30 3030 3430  40\" name=\"l00040\n-00002750: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n-00002760: 733d 226c 696e 656e 6f22 3e20 2020 3430  s=\"lineno\">   40\n-00002770: 3c2f 7370 616e 3e3c 7370 616e 2063 6c61  </span><span cla\n-00002780: 7373 3d22 6b65 7977 6f72 6422 3e6e 616d  ss=\"keyword\">nam\n-00002790: 6573 7061 6365 203c 2f73 7061 6e3e 5364  espace </span>Sd\n-000027a0: 6320 7b3c 2f64 6976 3e0a 3c64 6976 2063  c {</div>.<div c\n-000027b0: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n-000027c0: 643d 226c 3030 3034 3122 206e 616d 653d  d=\"l00041\" name=\n-000027d0: 226c 3030 3034 3122 3e3c 2f61 3e3c 7370  \"l00041\"></a><sp\n-000027e0: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n-000027f0: 223e 2020 2034 313c 2f73 7061 6e3e 203c  \">   41</span> <\n-00002800: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n-00002810: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n-00002820: 3030 3036 3522 206e 616d 653d 226c 3030  00065\" name=\"l00\n-00002830: 3036 3522 3e3c 2f61 3e3c 7370 616e 2063  065\"></a><span c\n-00002840: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n-00002850: 2036 353c 2f73 7061 6e3e 3c73 7061 6e20   65</span><span \n-00002860: 636c 6173 733d 226b 6579 776f 7264 223e  class=\"keyword\">\n-00002870: 7465 6d70 6c61 7465 3c2f 7370 616e 3e20  template</span> \n-00002880: 266c 743b 5363 6865 6d65 5479 7065 2053  &lt;SchemeType S\n-00002890: 4348 454d 455f 5459 5045 2667 743b 3c2f  CHEME_TYPE&gt;</\n-000028a0: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n-000028b0: 2266 6f6c 646f 7065 6e22 2069 643d 2266  \"foldopen\" id=\"f\n-000028c0: 6f6c 646f 7065 6e30 3030 3636 2220 6461  oldopen00066\" da\n-000028d0: 7461 2d73 7461 7274 3d22 7b22 2064 6174  ta-start=\"{\" dat\n-000028e0: 612d 656e 643d 227d 3b22 3e0a 3c64 6976  a-end=\"};\">.<div\n-000028f0: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n-00002900: 2069 643d 226c 3030 3036 3622 206e 616d   id=\"l00066\" nam\n-00002910: 653d 226c 3030 3036 3622 3e3c 2f61 3e3c  e=\"l00066\"></a><\n-00002920: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n-00002930: 6e6f 223e 3c61 2063 6c61 7373 3d22 6c69  no\"><a class=\"li\n-00002940: 6e65 2220 6872 6566 3d22 6130 3133 3431  ne\" href=\"a01341\n-00002950: 2e68 746d 6c22 3e20 2020 3636 3c2f 613e  .html\">   66</a>\n-00002960: 3c2f 7370 616e 3e3c 7370 616e 2063 6c61  </span><span cla\n-00002970: 7373 3d22 6b65 7977 6f72 6422 3e63 6c61  ss=\"keyword\">cla\n-00002980: 7373 203c 2f73 7061 6e3e 3c61 2063 6c61  ss </span><a cla\n-00002990: 7373 3d22 636f 6465 2068 6c5f 636c 6173  ss=\"code hl_clas\n-000029a0: 7322 2068 7265 663d 2261 3031 3334 312e  s\" href=\"a01341.\n-000029b0: 6874 6d6c 223e 5363 6865 6d65 3c2f 613e  html\">Scheme</a>\n-000029c0: 207b 3c2f 6469 763e 0a3c 6469 7620 636c   {</div>.<div cl\n-000029d0: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n-000029e0: 3d22 6c30 3030 3637 2220 6e61 6d65 3d22  =\"l00067\" name=\"\n-000029f0: 6c30 3030 3637 223e 3c2f 613e 3c73 7061  l00067\"></a><spa\n-00002a00: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n-00002a10: 3e20 2020 3637 3c2f 7370 616e 3e20 3c2f  >   67</span> </\n-00002a20: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n-00002a30: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n-00002a40: 3030 3638 2220 6e61 6d65 3d22 6c30 3030  0068\" name=\"l000\n-00002a50: 3638 223e 3c2f 613e 3c73 7061 6e20 636c  68\"></a><span cl\n-00002a60: 6173 733d 226c 696e 656e 6f22 3e20 2020  ass=\"lineno\">   \n-00002a70: 3638 3c2f 7370 616e 3e3c 7370 616e 2063  68</span><span c\n-00002a80: 6c61 7373 3d22 6b65 7977 6f72 6422 3e70  lass=\"keyword\">p\n-00002a90: 7562 6c69 633c 2f73 7061 6e3e 3a3c 2f64  ublic</span>:</d\n-00002aa0: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n-00002ab0: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n-00002ac0: 3036 3922 206e 616d 653d 226c 3030 3036  069\" name=\"l0006\n-00002ad0: 3922 3e3c 2f61 3e3c 7370 616e 2063 6c61  9\"></a><span cla\n-00002ae0: 7373 3d22 6c69 6e65 6e6f 223e 2020 2036  ss=\"lineno\">   6\n-00002af0: 393c 2f73 7061 6e3e 203c 2f64 6976 3e0a  9</span> </div>.\n-00002b00: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n-00002b10: 223e 3c61 2069 643d 226c 3030 3037 3022  \"><a id=\"l00070\"\n-00002b20: 206e 616d 653d 226c 3030 3037 3022 3e3c   name=\"l00070\"><\n-00002b30: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n-00002b40: 6c69 6e65 6e6f 223e 3c61 2063 6c61 7373  lineno\"><a class\n-00002b50: 3d22 6c69 6e65 2220 6872 6566 3d22 6130  =\"line\" href=\"a0\n-00002b60: 3133 3431 2e68 746d 6c23 6135 6331 3432  1341.html#a5c142\n-00002b70: 6334 6439 6336 6633 6265 3636 6264 3031  c4d9c6f3be66bd01\n-00002b80: 3837 3133 3539 3166 6663 6222 3e20 2020  8713591ffcb\">   \n-00002b90: 3730 3c2f 613e 3c2f 7370 616e 3e20 2020  70</a></span>   \n-00002ba0: 203c 6120 636c 6173 733d 2263 6f64 6520   <a class=\"code \n-00002bb0: 686c 5f66 756e 6374 696f 6e22 2068 7265  hl_function\" hre\n-00002bc0: 663d 2261 3031 3334 312e 6874 6d6c 2361  f=\"a01341.html#a\n-00002bd0: 3563 3134 3263 3464 3963 3666 3362 6536  5c142c4d9c6f3be6\n-00002be0: 3662 6430 3138 3731 3335 3931 6666 6362  6bd018713591ffcb\n-00002bf0: 223e 5363 6865 6d65 3c2f 613e 2829 203a  \">Scheme</a>() :\n-00002c00: 205f 6f70 7469 6f6e 7328 2920 7b20 7d3c   _options() { }<\n-00002c10: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n-00002c20: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n-00002c30: 3030 3037 3122 206e 616d 653d 226c 3030  00071\" name=\"l00\n-00002c40: 3037 3122 3e3c 2f61 3e3c 7370 616e 2063  071\"></a><span c\n-00002c50: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n-00002c60: 2037 313c 2f73 7061 6e3e 203c 2f64 6976   71</span> </div\n-00002c70: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n-00002c80: 6e65 223e 3c61 2069 643d 226c 3030 3037  ne\"><a id=\"l0007\n-00002c90: 3222 206e 616d 653d 226c 3030 3037 3222  2\" name=\"l00072\"\n-00002ca0: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n-00002cb0: 3d22 6c69 6e65 6e6f 223e 3c61 2063 6c61  =\"lineno\"><a cla\n-00002cc0: 7373 3d22 6c69 6e65 2220 6872 6566 3d22  ss=\"line\" href=\"\n-00002cd0: 6130 3133 3431 2e68 746d 6c23 6164 6439  a01341.html#add9\n-00002ce0: 3466 3932 3163 3433 6661 3134 6438 3836  4f921c43fa14d886\n-00002cf0: 6164 6662 6364 6363 3030 3231 3122 3e20  adfbcdcc00211\"> \n-00002d00: 2020 3732 3c2f 613e 3c2f 7370 616e 3e20    72</a></span> \n-00002d10: 2020 203c 6120 636c 6173 733d 2263 6f64     <a class=\"cod\n-00002d20: 6520 686c 5f66 756e 6374 696f 6e22 2068  e hl_function\" h\n-00002d30: 7265 663d 2261 3031 3334 312e 6874 6d6c  ref=\"a01341.html\n-00002d40: 2361 6464 3934 6639 3231 6334 3366 6131  #add94f921c43fa1\n-00002d50: 3464 3838 3661 6466 6263 6463 6330 3032  4d886adfbcdcc002\n-00002d60: 3131 223e 5363 6865 6d65 3c2f 613e 283c  11\">Scheme</a>(<\n-00002d70: 6120 636c 6173 733d 2263 6f64 6520 686c  a class=\"code hl\n-00002d80: 5f63 6c61 7373 2220 6872 6566 3d22 6130  _class\" href=\"a0\n-00002d90: 3133 3337 2e68 746d 6c22 3e4f 7074 696f  1337.html\">Optio\n-00002da0: 6e73 3c2f 613e 203c 7370 616e 2063 6c61  ns</a> <span cla\n-00002db0: 7373 3d22 6b65 7977 6f72 6422 3e63 6f6e  ss=\"keyword\">con\n-00002dc0: 7374 3c2f 7370 616e 3e26 616d 703b 206f  st</span>&amp; o\n-00002dd0: 7074 696f 6e73 2920 3a20 5f6f 7074 696f  ptions) : _optio\n-00002de0: 6e73 286f 7074 696f 6e73 2920 7b20 7d3c  ns(options) { }<\n-00002df0: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n-00002e00: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n-00002e10: 3030 3037 3322 206e 616d 653d 226c 3030  00073\" name=\"l00\n-00002e20: 3037 3322 3e3c 2f61 3e3c 7370 616e 2063  073\"></a><span c\n-00002e30: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n-00002e40: 2037 333c 2f73 7061 6e3e 203c 2f64 6976   73</span> </div\n-00002e50: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n-00002e60: 6e65 223e 3c61 2069 643d 226c 3030 3037  ne\"><a id=\"l0007\n-00002e70: 3422 206e 616d 653d 226c 3030 3037 3422  4\" name=\"l00074\"\n-00002e80: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n-00002e90: 3d22 6c69 6e65 6e6f 223e 3c61 2063 6c61  =\"lineno\"><a cla\n-00002ea0: 7373 3d22 6c69 6e65 2220 6872 6566 3d22  ss=\"line\" href=\"\n-00002eb0: 6130 3133 3431 2e68 746d 6c23 6139 6230  a01341.html#a9b0\n-00002ec0: 6464 6237 6336 3264 3866 6364 3630 3239  ddb7c62d8fcd6029\n-00002ed0: 6235 3935 6362 3865 6163 3638 3222 3e20  b595cb8eac682\"> \n-00002ee0: 2020 3734 3c2f 613e 3c2f 7370 616e 3e20    74</a></span> \n-00002ef0: 2020 203c 6120 636c 6173 733d 2263 6f64     <a class=\"cod\n-00002f00: 6520 686c 5f63 6c61 7373 2220 6872 6566  e hl_class\" href\n-00002f10: 3d22 6130 3133 3337 2e68 746d 6c22 3e4f  =\"a01337.html\">O\n-00002f20: 7074 696f 6e73 3c2f 613e 203c 6120 636c  ptions</a> <a cl\n-00002f30: 6173 733d 2263 6f64 6520 686c 5f66 756e  ass=\"code hl_fun\n-00002f40: 6374 696f 6e22 2068 7265 663d 2261 3031  ction\" href=\"a01\n-00002f50: 3334 312e 6874 6d6c 2361 3962 3064 6462  341.html#a9b0ddb\n-00002f60: 3763 3632 6438 6663 6436 3032 3962 3539  7c62d8fcd6029b59\n-00002f70: 3563 6238 6561 6336 3832 223e 4765 744f  5cb8eac682\">GetO\n-00002f80: 7074 696f 6e73 3c2f 613e 2829 3c73 7061  ptions</a>()<spa\n-00002f90: 6e20 636c 6173 733d 226b 6579 776f 7264  n class=\"keyword\n-00002fa0: 223e 2063 6f6e 7374 203c 2f73 7061 6e3e  \"> const </span>\n-00002fb0: 7b20 3c73 7061 6e20 636c 6173 733d 226b  { <span class=\"k\n-00002fc0: 6579 776f 7264 666c 6f77 223e 7265 7475  eywordflow\">retu\n-00002fd0: 726e 3c2f 7370 616e 3e20 5f6f 7074 696f  rn</span> _optio\n-00002fe0: 6e73 3b20 7d3c 2f64 6976 3e0a 3c64 6976  ns; }</div>.<div\n-00002ff0: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n-00003000: 2069 643d 226c 3030 3037 3522 206e 616d   id=\"l00075\" nam\n-00003010: 653d 226c 3030 3037 3522 3e3c 2f61 3e3c  e=\"l00075\"></a><\n-00003020: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n-00003030: 6e6f 223e 3c61 2063 6c61 7373 3d22 6c69  no\"><a class=\"li\n-00003040: 6e65 2220 6872 6566 3d22 6130 3133 3431  ne\" href=\"a01341\n-00003050: 2e68 746d 6c23 6166 3336 3064 3131 3134  .html#af360d1114\n-00003060: 6635 3339 3238 3232 3033 3163 6162 6164  f5392822031cabad\n-00003070: 3937 3636 6466 3522 3e20 2020 3735 3c2f  9766df5\">   75</\n-00003080: 613e 3c2f 7370 616e 3e20 2020 203c 7370  a></span>    <sp\n-00003090: 616e 2063 6c61 7373 3d22 6b65 7977 6f72  an class=\"keywor\n-000030a0: 6474 7970 6522 3e76 6f69 643c 2f73 7061  dtype\">void</spa\n-000030b0: 6e3e 2020 2020 3c61 2063 6c61 7373 3d22  n>    <a class=\"\n-000030c0: 636f 6465 2068 6c5f 6675 6e63 7469 6f6e  code hl_function\n-000030d0: 2220 6872 6566 3d22 6130 3133 3431 2e68  \" href=\"a01341.h\n-000030e0: 746d 6c23 6166 3336 3064 3131 3134 6635  tml#af360d1114f5\n-000030f0: 3339 3238 3232 3033 3163 6162 6164 3937  392822031cabad97\n-00003100: 3636 6466 3522 3e53 6574 4f70 7469 6f6e  66df5\">SetOption\n-00003110: 733c 2f61 3e28 3c73 7061 6e20 636c 6173  s</a>(<span clas\n-00003120: 733d 226b 6579 776f 7264 223e 636f 6e73  s=\"keyword\">cons\n-00003130: 743c 2f73 7061 6e3e 203c 6120 636c 6173  t</span> <a clas\n-00003140: 733d 2263 6f64 6520 686c 5f63 6c61 7373  s=\"code hl_class\n-00003150: 2220 6872 6566 3d22 6130 3133 3337 2e68  \" href=\"a01337.h\n-00003160: 746d 6c22 3e4f 7074 696f 6e73 3c2f 613e  tml\">Options</a>\n-00003170: 2661 6d70 3b20 6e65 774f 7074 696f 6e73  &amp; newOptions\n-00003180: 2920 7b20 5f6f 7074 696f 6e73 203d 206e  ) { _options = n\n-00003190: 6577 4f70 7469 6f6e 733b 207d 3c2f 6469  ewOptions; }</di\n-000031a0: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n-000031b0: 696e 6522 3e3c 6120 6964 3d22 6c30 3030  ine\"><a id=\"l000\n-000031c0: 3736 2220 6e61 6d65 3d22 6c30 3030 3736  76\" name=\"l00076\n-000031d0: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n-000031e0: 733d 226c 696e 656e 6f22 3e20 2020 3736  s=\"lineno\">   76\n-000031f0: 3c2f 7370 616e 3e20 3c2f 6469 763e 0a3c  </span> </div>.<\n-00003200: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n-00003210: 3e3c 6120 6964 3d22 6c30 3030 3830 2220  ><a id=\"l00080\" \n-00003220: 6e61 6d65 3d22 6c30 3030 3830 223e 3c2f  name=\"l00080\"></\n-00003230: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n-00003240: 696e 656e 6f22 3e20 2020 3830 3c2f 7370  ineno\">   80</sp\n-00003250: 616e 3e20 2020 203c 7370 616e 2063 6c61  an>    <span cla\n-00003260: 7373 3d22 6b65 7977 6f72 6422 3e74 656d  ss=\"keyword\">tem\n-00003270: 706c 6174 653c 2f73 7061 6e3e 2026 6c74  plate</span> &lt\n-00003280: 3b3c 7370 616e 2063 6c61 7373 3d22 6b65  ;<span class=\"ke\n-00003290: 7977 6f72 6422 3e74 7970 656e 616d 653c  yword\">typename<\n-000032a0: 2f73 7061 6e3e 2046 4143 452c 203c 7370  /span> FACE, <sp\n-000032b0: 616e 2063 6c61 7373 3d22 6b65 7977 6f72  an class=\"keywor\n-000032c0: 6422 3e74 7970 656e 616d 653c 2f73 7061  d\">typename</spa\n-000032d0: 6e3e 204d 4153 4b26 6774 3b3c 2f64 6976  n> MASK&gt;</div\n-000032e0: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n-000032f0: 6e65 223e 3c61 2069 643d 226c 3030 3038  ne\"><a id=\"l0008\n-00003300: 3122 206e 616d 653d 226c 3030 3038 3122  1\" name=\"l00081\"\n-00003310: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n-00003320: 3d22 6c69 6e65 6e6f 223e 2020 2038 313c  =\"lineno\">   81<\n-00003330: 2f73 7061 6e3e 2020 2020 3c73 7061 6e20  /span>    <span \n-00003340: 636c 6173 733d 226b 6579 776f 7264 7479  class=\"keywordty\n-00003350: 7065 223e 766f 6964 3c2f 7370 616e 3e20  pe\">void</span> \n-00003360: 3c61 2063 6c61 7373 3d22 636f 6465 2068  <a class=\"code h\n-00003370: 6c5f 6675 6e63 7469 6f6e 2220 6872 6566  l_function\" href\n-00003380: 3d22 6130 3133 3431 2e68 746d 6c23 6165  =\"a01341.html#ae\n-00003390: 3865 6432 3462 3136 3931 6536 3534 3336  8ed24b1691e65436\n-000033a0: 6434 3465 3730 3331 3839 6361 6634 3222  d44e703189caf42\"\n-000033b0: 3e43 6f6d 7075 7465 4661 6365 5665 7274  >ComputeFaceVert\n-000033c0: 6578 4d61 736b 3c2f 613e 2846 4143 4520  exMask</a>(FACE \n-000033d0: 3c73 7061 6e20 636c 6173 733d 226b 6579  <span class=\"key\n-000033e0: 776f 7264 223e 636f 6e73 743c 2f73 7061  word\">const</spa\n-000033f0: 6e3e 2661 6d70 3b20 6661 6365 4e65 6967  n>&amp; faceNeig\n-00003400: 6862 6f72 686f 6f64 2c20 4d41 534b 2661  hborhood, MASK&a\n-00003410: 6d70 3b20 6661 6365 5665 7274 6578 4d61  mp; faceVertexMa\n-00003420: 736b 2920 3c73 7061 6e20 636c 6173 733d  sk) <span class=\n-00003430: 226b 6579 776f 7264 223e 636f 6e73 743c  \"keyword\">const<\n-00003440: 2f73 7061 6e3e 3b3c 2f64 6976 3e0a 3c64  /span>;</div>.<d\n-00003450: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n-00003460: 3c61 2069 643d 226c 3030 3038 3222 206e  <a id=\"l00082\" n\n-00003470: 616d 653d 226c 3030 3038 3222 3e3c 2f61  ame=\"l00082\"></a\n-00003480: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n-00003490: 6e65 6e6f 223e 2020 2038 323c 2f73 7061  neno\">   82</spa\n-000034a0: 6e3e 203c 2f64 6976 3e0a 3c64 6976 2063  n> </div>.<div c\n-000034b0: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n-000034c0: 643d 226c 3030 3039 3822 206e 616d 653d  d=\"l00098\" name=\n-000034d0: 226c 3030 3039 3822 3e3c 2f61 3e3c 7370  \"l00098\"></a><sp\n-000034e0: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n-000034f0: 223e 2020 2039 383c 2f73 7061 6e3e 2020  \">   98</span>  \n-00003500: 2020 3c73 7061 6e20 636c 6173 733d 226b    <span class=\"k\n-00003510: 6579 776f 7264 223e 7465 6d70 6c61 7465  eyword\">template\n-00003520: 3c2f 7370 616e 3e20 266c 743b 3c73 7061  </span> &lt;<spa\n-00003530: 6e20 636c 6173 733d 226b 6579 776f 7264  n class=\"keyword\n-00003540: 223e 7479 7065 6e61 6d65 3c2f 7370 616e  \">typename</span\n-00003550: 3e20 4544 4745 2c20 3c73 7061 6e20 636c  > EDGE, <span cl\n-00003560: 6173 733d 226b 6579 776f 7264 223e 7479  ass=\"keyword\">ty\n-00003570: 7065 6e61 6d65 3c2f 7370 616e 3e20 4d41  pename</span> MA\n-00003580: 534b 2667 743b 3c2f 6469 763e 0a3c 6469  SK&gt;</div>.<di\n-00003590: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n-000035a0: 6120 6964 3d22 6c30 3030 3939 2220 6e61  a id=\"l00099\" na\n-000035b0: 6d65 3d22 6c30 3030 3939 223e 3c2f 613e  me=\"l00099\"></a>\n-000035c0: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n-000035d0: 656e 6f22 3e20 2020 3939 3c2f 7370 616e  eno\">   99</span\n-000035e0: 3e20 2020 203c 7370 616e 2063 6c61 7373  >    <span class\n-000035f0: 3d22 6b65 7977 6f72 6474 7970 6522 3e76  =\"keywordtype\">v\n-00003600: 6f69 643c 2f73 7061 6e3e 203c 6120 636c  oid</span> <a cl\n-00003610: 6173 733d 2263 6f64 6520 686c 5f66 756e  ass=\"code hl_fun\n-00003620: 6374 696f 6e22 2068 7265 663d 2261 3031  ction\" href=\"a01\n-00003630: 3334 312e 6874 6d6c 2361 3562 3561 3533  341.html#a5b5a53\n-00003640: 3737 6130 3165 6234 6261 3434 3665 3137  77a01eb4ba446e17\n-00003650: 3465 6666 3965 3435 6163 223e 436f 6d70  4eff9e45ac\">Comp\n-00003660: 7574 6545 6467 6556 6572 7465 784d 6173  uteEdgeVertexMas\n-00003670: 6b3c 2f61 3e28 4544 4745 203c 7370 616e  k</a>(EDGE <span\n-00003680: 2063 6c61 7373 3d22 6b65 7977 6f72 6422   class=\"keyword\"\n-00003690: 3e63 6f6e 7374 3c2f 7370 616e 3e26 616d  >const</span>&am\n-000036a0: 703b 2065 6467 654e 6569 6768 626f 7268  p; edgeNeighborh\n-000036b0: 6f6f 642c 204d 4153 4b26 616d 703b 2065  ood, MASK&amp; e\n-000036c0: 6467 6556 6572 7465 784d 6173 6b2c 3c2f  dgeVertexMask,</\n-000036d0: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n-000036e0: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n-000036f0: 3031 3030 2220 6e61 6d65 3d22 6c30 3031  0100\" name=\"l001\n-00003700: 3030 223e 3c2f 613e 3c73 7061 6e20 636c  00\"></a><span cl\n-00003710: 6173 733d 226c 696e 656e 6f22 3e20 2031  ass=\"lineno\">  1\n-00003720: 3030 3c2f 7370 616e 3e20 2020 2020 2020  00</span>       \n-00003730: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00003740: 2020 2020 2020 2020 3c61 2063 6c61 7373          <a class\n-00003750: 3d22 636f 6465 2068 6c5f 656e 756d 6572  =\"code hl_enumer\n-00003760: 6174 696f 6e22 2068 7265 663d 2261 3031  ation\" href=\"a01\n-00003770: 3333 332e 6874 6d6c 2361 3131 6663 6435  333.html#a11fcd5\n-00003780: 3165 6638 3631 3138 6636 3565 3630 3363  1ef86118f65e603c\n-00003790: 3134 3734 3337 3761 3738 223e 4372 6561  1474377a78\">Crea\n-000037a0: 7365 3a3a 5275 6c65 3c2f 613e 2070 6172  se::Rule</a> par\n-000037b0: 656e 7452 756c 6520 3d20 3c61 2063 6c61  entRule = <a cla\n-000037c0: 7373 3d22 636f 6465 2068 6c5f 656e 756d  ss=\"code hl_enum\n-000037d0: 7661 6c75 6522 2068 7265 663d 2261 3031  value\" href=\"a01\n-000037e0: 3333 332e 6874 6d6c 2361 3131 6663 6435  333.html#a11fcd5\n-000037f0: 3165 6638 3631 3138 6636 3565 3630 3363  1ef86118f65e603c\n-00003800: 3134 3734 3337 3761 3738 6162 3239 3961  1474377a78ab299a\n-00003810: 6566 6232 3630 3133 6137 3964 3532 3139  efb26013a79d5219\n-00003820: 3161 3738 3837 6665 6135 3322 3e43 7265  1a7887fea53\">Cre\n-00003830: 6173 653a 3a52 554c 455f 554e 4b4e 4f57  ase::RULE_UNKNOW\n-00003840: 4e3c 2f61 3e2c 3c2f 6469 763e 0a3c 6469  N</a>,</div>.<di\n-00003850: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n-00003860: 6120 6964 3d22 6c30 3031 3031 2220 6e61  a id=\"l00101\" na\n-00003870: 6d65 3d22 6c30 3031 3031 223e 3c2f 613e  me=\"l00101\"></a>\n-00003880: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n-00003890: 656e 6f22 3e20 2031 3031 3c2f 7370 616e  eno\">  101</span\n-000038a0: 3e20 2020 2020 2020 2020 2020 2020 2020  >               \n-000038b0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000038c0: 3c61 2063 6c61 7373 3d22 636f 6465 2068  <a class=\"code h\n-000038d0: 6c5f 656e 756d 6572 6174 696f 6e22 2068  l_enumeration\" h\n-000038e0: 7265 663d 2261 3031 3333 332e 6874 6d6c  ref=\"a01333.html\n-000038f0: 2361 3131 6663 6435 3165 6638 3631 3138  #a11fcd51ef86118\n-00003900: 6636 3565 3630 3363 3134 3734 3337 3761  f65e603c1474377a\n-00003910: 3738 223e 4372 6561 7365 3a3a 5275 6c65  78\">Crease::Rule\n-00003920: 3c2f 613e 2063 6869 6c64 5275 6c65 203d  </a> childRule =\n-00003930: 203c 6120 636c 6173 733d 2263 6f64 6520   <a class=\"code \n-00003940: 686c 5f65 6e75 6d76 616c 7565 2220 6872  hl_enumvalue\" hr\n-00003950: 6566 3d22 6130 3133 3333 2e68 746d 6c23  ef=\"a01333.html#\n-00003960: 6131 3166 6364 3531 6566 3836 3131 3866  a11fcd51ef86118f\n-00003970: 3635 6536 3033 6331 3437 3433 3737 6137  65e603c1474377a7\n-00003980: 3861 6232 3939 6165 6662 3236 3031 3361  8ab299aefb26013a\n-00003990: 3739 6435 3231 3931 6137 3838 3766 6561  79d52191a7887fea\n-000039a0: 3533 223e 4372 6561 7365 3a3a 5255 4c45  53\">Crease::RULE\n-000039b0: 5f55 4e4b 4e4f 574e 3c2f 613e 2920 3c73  _UNKNOWN</a>) <s\n-000039c0: 7061 6e20 636c 6173 733d 226b 6579 776f  pan class=\"keywo\n-000039d0: 7264 223e 636f 6e73 743c 2f73 7061 6e3e  rd\">const</span>\n-000039e0: 3b3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ;</div>.<div cla\n-000039f0: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n-00003a00: 226c 3030 3130 3222 206e 616d 653d 226c  \"l00102\" name=\"l\n-00003a10: 3030 3130 3222 3e3c 2f61 3e3c 7370 616e  00102\"></a><span\n-00003a20: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n-00003a30: 2020 3130 323c 2f73 7061 6e3e 203c 2f64    102</span> </d\n-00003a40: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n-00003a50: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n-00003a60: 3131 3222 206e 616d 653d 226c 3030 3131  112\" name=\"l0011\n-00003a70: 3222 3e3c 2f61 3e3c 7370 616e 2063 6c61  2\"></a><span cla\n-00003a80: 7373 3d22 6c69 6e65 6e6f 223e 2020 3131  ss=\"lineno\">  11\n-00003a90: 323c 2f73 7061 6e3e 2020 2020 3c73 7061  2</span>    <spa\n-00003aa0: 6e20 636c 6173 733d 226b 6579 776f 7264  n class=\"keyword\n-00003ab0: 223e 7465 6d70 6c61 7465 3c2f 7370 616e  \">template</span\n-00003ac0: 3e20 266c 743b 3c73 7061 6e20 636c 6173  > &lt;<span clas\n-00003ad0: 733d 226b 6579 776f 7264 223e 7479 7065  s=\"keyword\">type\n-00003ae0: 6e61 6d65 3c2f 7370 616e 3e20 5645 5254  name</span> VERT\n-00003af0: 4558 2c20 3c73 7061 6e20 636c 6173 733d  EX, <span class=\n-00003b00: 226b 6579 776f 7264 223e 7479 7065 6e61  \"keyword\">typena\n-00003b10: 6d65 3c2f 7370 616e 3e20 4d41 534b 2667  me</span> MASK&g\n-00003b20: 743b 3c2f 6469 763e 0a3c 6469 7620 636c  t;</div>.<div cl\n-00003b30: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n-00003b40: 3d22 6c30 3031 3133 2220 6e61 6d65 3d22  =\"l00113\" name=\"\n-00003b50: 6c30 3031 3133 223e 3c2f 613e 3c73 7061  l00113\"></a><spa\n-00003b60: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n-00003b70: 3e20 2031 3133 3c2f 7370 616e 3e20 2020  >  113</span>   \n-00003b80: 203c 7370 616e 2063 6c61 7373 3d22 6b65   <span class=\"ke\n-00003b90: 7977 6f72 6474 7970 6522 3e76 6f69 643c  ywordtype\">void<\n-00003ba0: 2f73 7061 6e3e 203c 6120 636c 6173 733d  /span> <a class=\n-00003bb0: 2263 6f64 6520 686c 5f66 756e 6374 696f  \"code hl_functio\n-00003bc0: 6e22 2068 7265 663d 2261 3031 3334 312e  n\" href=\"a01341.\n-00003bd0: 6874 6d6c 2361 3332 3863 6132 3665 3631  html#a328ca26e61\n-00003be0: 3432 3833 3863 3438 3434 6230 3334 3534  42838c4844b03454\n-00003bf0: 3666 6238 6337 223e 436f 6d70 7574 6556  6fb8c7\">ComputeV\n-00003c00: 6572 7465 7856 6572 7465 784d 6173 6b3c  ertexVertexMask<\n-00003c10: 2f61 3e28 5645 5254 4558 203c 7370 616e  /a>(VERTEX <span\n-00003c20: 2063 6c61 7373 3d22 6b65 7977 6f72 6422   class=\"keyword\"\n-00003c30: 3e63 6f6e 7374 3c2f 7370 616e 3e26 616d  >const</span>&am\n-00003c40: 703b 2076 6572 7465 784e 6569 6768 626f  p; vertexNeighbo\n-00003c50: 7268 6f6f 642c 204d 4153 4b26 616d 703b  rhood, MASK&amp;\n-00003c60: 2076 6572 7465 7856 6572 7465 784d 6173   vertexVertexMas\n-00003c70: 6b2c 3c2f 6469 763e 0a3c 6469 7620 636c  k,</div>.<div cl\n-00003c80: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n-00003c90: 3d22 6c30 3031 3134 2220 6e61 6d65 3d22  =\"l00114\" name=\"\n-00003ca0: 6c30 3031 3134 223e 3c2f 613e 3c73 7061  l00114\"></a><spa\n-00003cb0: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n-00003cc0: 3e20 2031 3134 3c2f 7370 616e 3e20 2020  >  114</span>   \n-00003cd0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00003ce0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00003cf0: 203c 6120 636c 6173 733d 2263 6f64 6520   <a class=\"code \n-00003d00: 686c 5f65 6e75 6d65 7261 7469 6f6e 2220  hl_enumeration\" \n-00003d10: 6872 6566 3d22 6130 3133 3333 2e68 746d  href=\"a01333.htm\n-00003d20: 6c23 6131 3166 6364 3531 6566 3836 3131  l#a11fcd51ef8611\n-00003d30: 3866 3635 6536 3033 6331 3437 3433 3737  8f65e603c1474377\n-00003d40: 6137 3822 3e43 7265 6173 653a 3a52 756c  a78\">Crease::Rul\n-00003d50: 653c 2f61 3e20 7061 7265 6e74 5275 6c65  e</a> parentRule\n-00003d60: 203d 203c 6120 636c 6173 733d 2263 6f64   = <a class=\"cod\n-00003d70: 6520 686c 5f65 6e75 6d76 616c 7565 2220  e hl_enumvalue\" \n-00003d80: 6872 6566 3d22 6130 3133 3333 2e68 746d  href=\"a01333.htm\n-00003d90: 6c23 6131 3166 6364 3531 6566 3836 3131  l#a11fcd51ef8611\n-00003da0: 3866 3635 6536 3033 6331 3437 3433 3737  8f65e603c1474377\n-00003db0: 6137 3861 6232 3939 6165 6662 3236 3031  a78ab299aefb2601\n-00003dc0: 3361 3739 6435 3231 3931 6137 3838 3766  3a79d52191a7887f\n-00003dd0: 6561 3533 223e 4372 6561 7365 3a3a 5255  ea53\">Crease::RU\n-00003de0: 4c45 5f55 4e4b 4e4f 574e 3c2f 613e 2c3c  LE_UNKNOWN</a>,<\n-00003df0: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n-00003e00: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n-00003e10: 3030 3131 3522 206e 616d 653d 226c 3030  00115\" name=\"l00\n-00003e20: 3131 3522 3e3c 2f61 3e3c 7370 616e 2063  115\"></a><span c\n-00003e30: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n-00003e40: 3131 353c 2f73 7061 6e3e 2020 2020 2020  115</span>      \n-00003e50: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00003e60: 2020 2020 2020 2020 2020 2020 2020 3c61                <a\n-00003e70: 2063 6c61 7373 3d22 636f 6465 2068 6c5f   class=\"code hl_\n-00003e80: 656e 756d 6572 6174 696f 6e22 2068 7265  enumeration\" hre\n-00003e90: 663d 2261 3031 3333 332e 6874 6d6c 2361  f=\"a01333.html#a\n-00003ea0: 3131 6663 6435 3165 6638 3631 3138 6636  11fcd51ef86118f6\n-00003eb0: 3565 3630 3363 3134 3734 3337 3761 3738  5e603c1474377a78\n-00003ec0: 223e 4372 6561 7365 3a3a 5275 6c65 3c2f  \">Crease::Rule</\n-00003ed0: 613e 2063 6869 6c64 5275 6c65 203d 203c  a> childRule = <\n-00003ee0: 6120 636c 6173 733d 2263 6f64 6520 686c  a class=\"code hl\n-00003ef0: 5f65 6e75 6d76 616c 7565 2220 6872 6566  _enumvalue\" href\n-00003f00: 3d22 6130 3133 3333 2e68 746d 6c23 6131  =\"a01333.html#a1\n-00003f10: 3166 6364 3531 6566 3836 3131 3866 3635  1fcd51ef86118f65\n-00003f20: 6536 3033 6331 3437 3433 3737 6137 3861  e603c1474377a78a\n-00003f30: 6232 3939 6165 6662 3236 3031 3361 3739  b299aefb26013a79\n-00003f40: 6435 3231 3931 6137 3838 3766 6561 3533  d52191a7887fea53\n-00003f50: 223e 4372 6561 7365 3a3a 5255 4c45 5f55  \">Crease::RULE_U\n-00003f60: 4e4b 4e4f 574e 3c2f 613e 2920 3c73 7061  NKNOWN</a>) <spa\n-00003f70: 6e20 636c 6173 733d 226b 6579 776f 7264  n class=\"keyword\n-00003f80: 223e 636f 6e73 743c 2f73 7061 6e3e 3b3c  \">const</span>;<\n-00003f90: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n-00003fa0: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n-00003fb0: 3030 3131 3622 206e 616d 653d 226c 3030  00116\" name=\"l00\n-00003fc0: 3131 3622 3e3c 2f61 3e3c 7370 616e 2063  116\"></a><span c\n-00003fd0: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n-00003fe0: 3131 363c 2f73 7061 6e3e 203c 2f64 6976  116</span> </div\n-00003ff0: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n-00004000: 6e65 223e 3c61 2069 643d 226c 3030 3134  ne\"><a id=\"l0014\n-00004010: 3122 206e 616d 653d 226c 3030 3134 3122  1\" name=\"l00141\"\n-00004020: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n-00004030: 3d22 6c69 6e65 6e6f 223e 2020 3134 313c  =\"lineno\">  141<\n-00004040: 2f73 7061 6e3e 2020 2020 3c73 7061 6e20  /span>    <span \n-00004050: 636c 6173 733d 226b 6579 776f 7264 223e  class=\"keyword\">\n-00004060: 7465 6d70 6c61 7465 3c2f 7370 616e 3e20  template</span> \n-00004070: 266c 743b 3c73 7061 6e20 636c 6173 733d  &lt;<span class=\n-00004080: 226b 6579 776f 7264 223e 7479 7065 6e61  \"keyword\">typena\n-00004090: 6d65 3c2f 7370 616e 3e20 5645 5254 4558  me</span> VERTEX\n-000040a0: 2c20 3c73 7061 6e20 636c 6173 733d 226b  , <span class=\"k\n-000040b0: 6579 776f 7264 223e 7479 7065 6e61 6d65  eyword\">typename\n-000040c0: 3c2f 7370 616e 3e20 4d41 534b 2667 743b  </span> MASK&gt;\n-000040d0: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n-000040e0: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n-000040f0: 6c30 3031 3432 2220 6e61 6d65 3d22 6c30  l00142\" name=\"l0\n-00004100: 3031 3432 223e 3c2f 613e 3c73 7061 6e20  0142\"></a><span \n-00004110: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n-00004120: 2031 3432 3c2f 7370 616e 3e20 2020 203c   142</span>    <\n-00004130: 7370 616e 2063 6c61 7373 3d22 6b65 7977  span class=\"keyw\n-00004140: 6f72 6474 7970 6522 3e76 6f69 643c 2f73  ordtype\">void</s\n-00004150: 7061 6e3e 203c 6120 636c 6173 733d 2263  pan> <a class=\"c\n-00004160: 6f64 6520 686c 5f66 756e 6374 696f 6e22  ode hl_function\"\n-00004170: 2068 7265 663d 2261 3031 3334 312e 6874   href=\"a01341.ht\n-00004180: 6d6c 2361 3363 3864 3736 3363 6131 3863  ml#a3c8d763ca18c\n-00004190: 3435 3763 3933 3664 6230 6534 3739 3937  457c936db0e47997\n-000041a0: 3436 6632 223e 436f 6d70 7574 6556 6572  46f2\">ComputeVer\n-000041b0: 7465 784c 696d 6974 4d61 736b 3c2f 613e  texLimitMask</a>\n-000041c0: 2856 4552 5445 5820 3c73 7061 6e20 636c  (VERTEX <span cl\n-000041d0: 6173 733d 226b 6579 776f 7264 223e 636f  ass=\"keyword\">co\n-000041e0: 6e73 743c 2f73 7061 6e3e 2661 6d70 3b20  nst</span>&amp; \n-000041f0: 7665 7274 6578 4e65 6967 6862 6f72 686f  vertexNeighborho\n-00004200: 6f64 2c20 4d41 534b 2661 6d70 3b20 706f  od, MASK&amp; po\n-00004210: 7369 7469 6f6e 4d61 736b 2c3c 2f64 6976  sitionMask,</div\n-00004220: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n-00004230: 6e65 223e 3c61 2069 643d 226c 3030 3134  ne\"><a id=\"l0014\n-00004240: 3322 206e 616d 653d 226c 3030 3134 3322  3\" name=\"l00143\"\n-00004250: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n-00004260: 3d22 6c69 6e65 6e6f 223e 2020 3134 333c  =\"lineno\">  143<\n-00004270: 2f73 7061 6e3e 2020 2020 2020 2020 2020  /span>          \n-00004280: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00004290: 2020 2020 2020 3c61 2063 6c61 7373 3d22        <a class=\"\n-000042a0: 636f 6465 2068 6c5f 656e 756d 6572 6174  code hl_enumerat\n-000042b0: 696f 6e22 2068 7265 663d 2261 3031 3333  ion\" href=\"a0133\n-000042c0: 332e 6874 6d6c 2361 3131 6663 6435 3165  3.html#a11fcd51e\n-000042d0: 6638 3631 3138 6636 3565 3630 3363 3134  f86118f65e603c14\n-000042e0: 3734 3337 3761 3738 223e 4372 6561 7365  74377a78\">Crease\n-000042f0: 3a3a 5275 6c65 3c2f 613e 2076 6572 7465  ::Rule</a> verte\n-00004300: 7852 756c 6529 203c 7370 616e 2063 6c61  xRule) <span cla\n-00004310: 7373 3d22 6b65 7977 6f72 6422 3e63 6f6e  ss=\"keyword\">con\n-00004320: 7374 3c2f 7370 616e 3e3b 3c2f 6469 763e  st</span>;</div>\n-00004330: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n-00004340: 6522 3e3c 6120 6964 3d22 6c30 3031 3434  e\"><a id=\"l00144\n-00004350: 2220 6e61 6d65 3d22 6c30 3031 3434 223e  \" name=\"l00144\">\n-00004360: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n-00004370: 226c 696e 656e 6f22 3e20 2031 3434 3c2f  \"lineno\">  144</\n-00004380: 7370 616e 3e20 3c2f 6469 763e 0a3c 6469  span> </div>.<di\n-00004390: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n-000043a0: 6120 6964 3d22 6c30 3031 3435 2220 6e61  a id=\"l00145\" na\n-000043b0: 6d65 3d22 6c30 3031 3435 223e 3c2f 613e  me=\"l00145\"></a>\n-000043c0: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n-000043d0: 656e 6f22 3e20 2031 3435 3c2f 7370 616e  eno\">  145</span\n-000043e0: 3e20 2020 203c 7370 616e 2063 6c61 7373  >    <span class\n-000043f0: 3d22 6b65 7977 6f72 6422 3e74 656d 706c  =\"keyword\">templ\n-00004400: 6174 653c 2f73 7061 6e3e 2026 6c74 3b3c  ate</span> &lt;<\n-00004410: 7370 616e 2063 6c61 7373 3d22 6b65 7977  span class=\"keyw\n-00004420: 6f72 6422 3e74 7970 656e 616d 653c 2f73  ord\">typename</s\n-00004430: 7061 6e3e 2056 4552 5445 582c 203c 7370  pan> VERTEX, <sp\n-00004440: 616e 2063 6c61 7373 3d22 6b65 7977 6f72  an class=\"keywor\n-00004450: 6422 3e74 7970 656e 616d 653c 2f73 7061  d\">typename</spa\n-00004460: 6e3e 204d 4153 4b26 6774 3b3c 2f64 6976  n> MASK&gt;</div\n-00004470: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n-00004480: 6e65 223e 3c61 2069 643d 226c 3030 3134  ne\"><a id=\"l0014\n-00004490: 3622 206e 616d 653d 226c 3030 3134 3622  6\" name=\"l00146\"\n-000044a0: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n-000044b0: 3d22 6c69 6e65 6e6f 223e 2020 3134 363c  =\"lineno\">  146<\n-000044c0: 2f73 7061 6e3e 2020 2020 3c73 7061 6e20  /span>    <span \n-000044d0: 636c 6173 733d 226b 6579 776f 7264 7479  class=\"keywordty\n-000044e0: 7065 223e 766f 6964 3c2f 7370 616e 3e20  pe\">void</span> \n-000044f0: 3c61 2063 6c61 7373 3d22 636f 6465 2068  <a class=\"code h\n-00004500: 6c5f 6675 6e63 7469 6f6e 2220 6872 6566  l_function\" href\n-00004510: 3d22 6130 3133 3431 2e68 746d 6c23 6133  =\"a01341.html#a3\n-00004520: 6338 6437 3633 6361 3138 6334 3537 6339  c8d763ca18c457c9\n-00004530: 3336 6462 3065 3437 3939 3734 3666 3222  36db0e4799746f2\"\n-00004540: 3e43 6f6d 7075 7465 5665 7274 6578 4c69  >ComputeVertexLi\n-00004550: 6d69 744d 6173 6b3c 2f61 3e28 5645 5254  mitMask</a>(VERT\n-00004560: 4558 203c 7370 616e 2063 6c61 7373 3d22  EX <span class=\"\n-00004570: 6b65 7977 6f72 6422 3e63 6f6e 7374 3c2f  keyword\">const</\n-00004580: 7370 616e 3e26 616d 703b 2076 6572 7465  span>&amp; verte\n-00004590: 784e 6569 6768 626f 7268 6f6f 642c 204d  xNeighborhood, M\n-000045a0: 4153 4b26 616d 703b 2070 6f73 6974 696f  ASK&amp; positio\n-000045b0: 6e4d 6173 6b2c 3c2f 6469 763e 0a3c 6469  nMask,</div>.<di\n-000045c0: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n-000045d0: 6120 6964 3d22 6c30 3031 3437 2220 6e61  a id=\"l00147\" na\n-000045e0: 6d65 3d22 6c30 3031 3437 223e 3c2f 613e  me=\"l00147\"></a>\n-000045f0: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n-00004600: 656e 6f22 3e20 2031 3437 3c2f 7370 616e  eno\">  147</span\n-00004610: 3e20 2020 2020 2020 2020 2020 2020 2020  >               \n-00004620: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00004630: 204d 4153 4b26 616d 703b 2074 616e 6765   MASK&amp; tange\n-00004640: 6e74 314d 6173 6b2c 204d 4153 4b26 616d  nt1Mask, MASK&am\n-00004650: 703b 2074 616e 6765 6e74 324d 6173 6b2c  p; tangent2Mask,\n-00004660: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n-00004670: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n-00004680: 6c30 3031 3438 2220 6e61 6d65 3d22 6c30  l00148\" name=\"l0\n-00004690: 3031 3438 223e 3c2f 613e 3c73 7061 6e20  0148\"></a><span \n-000046a0: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n-000046b0: 2031 3438 3c2f 7370 616e 3e20 2020 2020   148</span>     \n-000046c0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000046d0: 2020 2020 2020 2020 2020 203c 6120 636c             <a cl\n-000046e0: 6173 733d 2263 6f64 6520 686c 5f65 6e75  ass=\"code hl_enu\n-000046f0: 6d65 7261 7469 6f6e 2220 6872 6566 3d22  meration\" href=\"\n-00004700: 6130 3133 3333 2e68 746d 6c23 6131 3166  a01333.html#a11f\n-00004710: 6364 3531 6566 3836 3131 3866 3635 6536  cd51ef86118f65e6\n-00004720: 3033 6331 3437 3433 3737 6137 3822 3e43  03c1474377a78\">C\n-00004730: 7265 6173 653a 3a52 756c 653c 2f61 3e20  rease::Rule</a> \n-00004740: 7665 7274 6578 5275 6c65 2920 3c73 7061  vertexRule) <spa\n-00004750: 6e20 636c 6173 733d 226b 6579 776f 7264  n class=\"keyword\n-00004760: 223e 636f 6e73 743c 2f73 7061 6e3e 3b3c  \">const</span>;<\n-00004770: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n-00004780: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n-00004790: 3030 3134 3922 206e 616d 653d 226c 3030  00149\" name=\"l00\n-000047a0: 3134 3922 3e3c 2f61 3e3c 7370 616e 2063  149\"></a><span c\n-000047b0: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n-000047c0: 3134 393c 2f73 7061 6e3e 203c 2f64 6976  149</span> </div\n-000047d0: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n-000047e0: 6e65 223e 3c61 2069 643d 226c 3030 3135  ne\"><a id=\"l0015\n-000047f0: 3022 206e 616d 653d 226c 3030 3135 3022  0\" name=\"l00150\"\n-00004800: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n-00004810: 3d22 6c69 6e65 6e6f 223e 2020 3135 303c  =\"lineno\">  150<\n-00004820: 2f73 7061 6e3e 2020 2020 3c73 7061 6e20  /span>    <span \n-00004830: 636c 6173 733d 2263 6f6d 6d65 6e74 223e  class=\"comment\">\n-00004840: 2f2f 3c2f 7370 616e 3e3c 2f64 6976 3e0a  //</span></div>.\n-00004850: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n-00004860: 223e 3c61 2069 643d 226c 3030 3135 3122  \"><a id=\"l00151\"\n-00004870: 206e 616d 653d 226c 3030 3135 3122 3e3c   name=\"l00151\"><\n-00004880: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n-00004890: 6c69 6e65 6e6f 223e 2020 3135 313c 2f73  lineno\">  151</s\n-000048a0: 7061 6e3e 2020 2020 3c73 7061 6e20 636c  pan>    <span cl\n-000048b0: 6173 733d 2263 6f6d 6d65 6e74 223e 2f2f  ass=\"comment\">//\n-000048c0: 2020 5374 6174 6963 206d 6574 686f 6473    Static methods\n-000048d0: 2064 6566 696e 696e 6720 7472 6169 7473   defining traits\n-000048e0: 2f70 726f 7065 7274 6965 7320 6f66 2074  /properties of t\n-000048f0: 6865 2073 6368 656d 653a 3c2f 7370 616e  he scheme:</span\n-00004900: 3e3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ></div>.<div cla\n-00004910: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n-00004920: 226c 3030 3135 3222 206e 616d 653d 226c  \"l00152\" name=\"l\n-00004930: 3030 3135 3222 3e3c 2f61 3e3c 7370 616e  00152\"></a><span\n-00004940: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n-00004950: 2020 3135 323c 2f73 7061 6e3e 2020 2020    152</span>    \n-00004960: 3c73 7061 6e20 636c 6173 733d 2263 6f6d  <span class=\"com\n-00004970: 6d65 6e74 223e 2f2f 3c2f 7370 616e 3e3c  ment\">//</span><\n-00004980: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n-00004990: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n-000049a0: 3030 3135 3322 206e 616d 653d 226c 3030  00153\" name=\"l00\n-000049b0: 3135 3322 3e3c 2f61 3e3c 7370 616e 2063  153\"></a><span c\n-000049c0: 6c61 7373 3d22 6c69 6e65 6e6f 223e 3c61  lass=\"lineno\"><a\n-000049d0: 2063 6c61 7373 3d22 6c69 6e65 2220 6872   class=\"line\" hr\n-000049e0: 6566 3d22 6130 3133 3431 2e68 746d 6c23  ef=\"a01341.html#\n-000049f0: 6131 3462 3937 6464 6465 3566 6261 3331  a14b97ddde5fba31\n-00004a00: 6361 3766 3933 3335 3038 6565 3634 3964  ca7f933508ee649d\n-00004a10: 6122 3e20 2031 3533 3c2f 613e 3c2f 7370  a\">  153</a></sp\n-00004a20: 616e 3e20 2020 203c 7370 616e 2063 6c61  an>    <span cla\n-00004a30: 7373 3d22 6b65 7977 6f72 6422 3e73 7461  ss=\"keyword\">sta\n-00004a40: 7469 633c 2f73 7061 6e3e 203c 6120 636c  tic</span> <a cl\n-00004a50: 6173 733d 2263 6f64 6520 686c 5f65 6e75  ass=\"code hl_enu\n-00004a60: 6d65 7261 7469 6f6e 2220 6872 6566 3d22  meration\" href=\"\n-00004a70: 6130 3039 3133 2e68 746d 6c23 6136 3165  a00913.html#a61e\n-00004a80: 6632 6638 6637 3635 6261 3137 6638 3033  f2f8f765ba17f803\n-00004a90: 3662 6363 3066 3066 6138 3837 6222 3e53  6bcc0f0fa887b\">S\n-00004aa0: 706c 6974 3c2f 613e 203c 6120 636c 6173  plit</a> <a clas\n-00004ab0: 733d 2263 6f64 6520 686c 5f66 756e 6374  s=\"code hl_funct\n-00004ac0: 696f 6e22 2068 7265 663d 2261 3031 3334  ion\" href=\"a0134\n-00004ad0: 312e 6874 6d6c 2361 3134 6239 3764 6464  1.html#a14b97ddd\n-00004ae0: 6535 6662 6133 3163 6137 6639 3333 3530  e5fba31ca7f93350\n-00004af0: 3865 6536 3439 6461 223e 4765 7454 6f70  8ee649da\">GetTop\n-00004b00: 6f6c 6f67 6963 616c 5370 6c69 7454 7970  ologicalSplitTyp\n-00004b10: 653c 2f61 3e28 293b 3c2f 6469 763e 0a3c  e</a>();</div>.<\n-00004b20: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n-00004b30: 3e3c 6120 6964 3d22 6c30 3031 3534 2220  ><a id=\"l00154\" \n-00004b40: 6e61 6d65 3d22 6c30 3031 3534 223e 3c2f  name=\"l00154\"></\n-00004b50: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n-00004b60: 696e 656e 6f22 3e3c 6120 636c 6173 733d  ineno\"><a class=\n-00004b70: 226c 696e 6522 2068 7265 663d 2261 3031  \"line\" href=\"a01\n-00004b80: 3334 312e 6874 6d6c 2361 3533 3130 3034  341.html#a531004\n-00004b90: 3731 3663 3037 6161 6435 3433 3663 6232  716c07aad5436cb2\n-00004ba0: 6462 3237 6531 6563 3234 223e 2020 3135  db27e1ec24\">  15\n-00004bb0: 343c 2f61 3e3c 2f73 7061 6e3e 2020 2020  4</a></span>    \n-00004bc0: 3c73 7061 6e20 636c 6173 733d 226b 6579  <span class=\"key\n-00004bd0: 776f 7264 223e 7374 6174 6963 3c2f 7370  word\">static</sp\n-00004be0: 616e 3e20 3c73 7061 6e20 636c 6173 733d  an> <span class=\n-00004bf0: 226b 6579 776f 7264 7479 7065 223e 696e  \"keywordtype\">in\n-00004c00: 743c 2f73 7061 6e3e 2020 203c 6120 636c  t</span>   <a cl\n-00004c10: 6173 733d 2263 6f64 6520 686c 5f66 756e  ass=\"code hl_fun\n-00004c20: 6374 696f 6e22 2068 7265 663d 2261 3031  ction\" href=\"a01\n-00004c30: 3334 312e 6874 6d6c 2361 3533 3130 3034  341.html#a531004\n-00004c40: 3731 3663 3037 6161 6435 3433 3663 6232  716c07aad5436cb2\n-00004c50: 6462 3237 6531 6563 3234 223e 4765 7452  db27e1ec24\">GetR\n-00004c60: 6567 756c 6172 4661 6365 5369 7a65 3c2f  egularFaceSize</\n-00004c70: 613e 2829 3b3c 2f64 6976 3e0a 3c64 6976  a>();</div>.<div\n-00004c80: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n-00004c90: 2069 643d 226c 3030 3135 3522 206e 616d   id=\"l00155\" nam\n-00004ca0: 653d 226c 3030 3135 3522 3e3c 2f61 3e3c  e=\"l00155\"></a><\n-00004cb0: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n-00004cc0: 6e6f 223e 3c61 2063 6c61 7373 3d22 6c69  no\"><a class=\"li\n-00004cd0: 6e65 2220 6872 6566 3d22 6130 3133 3431  ne\" href=\"a01341\n-00004ce0: 2e68 746d 6c23 6138 6637 6539 3833 6232  .html#a8f7e983b2\n-00004cf0: 3139 3561 6336 6233 3838 6337 6136 6462  195ac6b388c7a6db\n-00004d00: 3137 6638 6362 3022 3e20 2031 3535 3c2f  17f8cb0\">  155</\n-00004d10: 613e 3c2f 7370 616e 3e20 2020 203c 7370  a></span>    <sp\n-00004d20: 616e 2063 6c61 7373 3d22 6b65 7977 6f72  an class=\"keywor\n-00004d30: 6422 3e73 7461 7469 633c 2f73 7061 6e3e  d\">static</span>\n-00004d40: 203c 7370 616e 2063 6c61 7373 3d22 6b65   <span class=\"ke\n-00004d50: 7977 6f72 6474 7970 6522 3e69 6e74 3c2f  ywordtype\">int</\n-00004d60: 7370 616e 3e20 2020 3c61 2063 6c61 7373  span>   <a class\n-00004d70: 3d22 636f 6465 2068 6c5f 6675 6e63 7469  =\"code hl_functi\n-00004d80: 6f6e 2220 6872 6566 3d22 6130 3133 3431  on\" href=\"a01341\n-00004d90: 2e68 746d 6c23 6138 6637 6539 3833 6232  .html#a8f7e983b2\n-00004da0: 3139 3561 6336 6233 3838 6337 6136 6462  195ac6b388c7a6db\n-00004db0: 3137 6638 6362 3022 3e47 6574 5265 6775  17f8cb0\">GetRegu\n-00004dc0: 6c61 7256 6572 7465 7856 616c 656e 6365  larVertexValence\n-00004dd0: 3c2f 613e 2829 3b3c 2f64 6976 3e0a 3c64  </a>();</div>.<d\n-00004de0: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n-00004df0: 3c61 2069 643d 226c 3030 3135 3622 206e  <a id=\"l00156\" n\n-00004e00: 616d 653d 226c 3030 3135 3622 3e3c 2f61  ame=\"l00156\"></a\n-00004e10: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n-00004e20: 6e65 6e6f 223e 3c61 2063 6c61 7373 3d22  neno\"><a class=\"\n-00004e30: 6c69 6e65 2220 6872 6566 3d22 6130 3133  line\" href=\"a013\n-00004e40: 3431 2e68 746d 6c23 6137 3363 6635 3165  41.html#a73cf51e\n-00004e50: 3433 3135 6361 3836 6535 6530 6133 3935  4315ca86e5e0a395\n-00004e60: 3463 3932 6638 6637 3422 3e20 2031 3536  4c92f8f74\">  156\n-00004e70: 3c2f 613e 3c2f 7370 616e 3e20 2020 203c  </a></span>    <\n-00004e80: 7370 616e 2063 6c61 7373 3d22 6b65 7977  span class=\"keyw\n-00004e90: 6f72 6422 3e73 7461 7469 633c 2f73 7061  ord\">static</spa\n-00004ea0: 6e3e 203c 7370 616e 2063 6c61 7373 3d22  n> <span class=\"\n-00004eb0: 6b65 7977 6f72 6474 7970 6522 3e69 6e74  keywordtype\">int\n-00004ec0: 3c2f 7370 616e 3e20 2020 3c61 2063 6c61  </span>   <a cla\n-00004ed0: 7373 3d22 636f 6465 2068 6c5f 6675 6e63  ss=\"code hl_func\n-00004ee0: 7469 6f6e 2220 6872 6566 3d22 6130 3133  tion\" href=\"a013\n-00004ef0: 3431 2e68 746d 6c23 6137 3363 6635 3165  41.html#a73cf51e\n-00004f00: 3433 3135 6361 3836 6535 6530 6133 3935  4315ca86e5e0a395\n-00004f10: 3463 3932 6638 6637 3422 3e47 6574 4c6f  4c92f8f74\">GetLo\n-00004f20: 6361 6c4e 6569 6768 626f 7268 6f6f 6453  calNeighborhoodS\n-00004f30: 697a 653c 2f61 3e28 293b 3c2f 6469 763e  ize</a>();</div>\n-00004f40: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n-00004f50: 6522 3e3c 6120 6964 3d22 6c30 3031 3537  e\"><a id=\"l00157\n-00004f60: 2220 6e61 6d65 3d22 6c30 3031 3537 223e  \" name=\"l00157\">\n-00004f70: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n-00004f80: 226c 696e 656e 6f22 3e20 2031 3537 3c2f  \"lineno\">  157</\n-00004f90: 7370 616e 3e20 3c2f 6469 763e 0a3c 6469  span> </div>.<di\n-00004fa0: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n-00004fb0: 6120 6964 3d22 6c30 3031 3538 2220 6e61  a id=\"l00158\" na\n-00004fc0: 6d65 3d22 6c30 3031 3538 223e 3c2f 613e  me=\"l00158\"></a>\n-00004fd0: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n-00004fe0: 656e 6f22 3e20 2031 3538 3c2f 7370 616e  eno\">  158</span\n-00004ff0: 3e3c 7370 616e 2063 6c61 7373 3d22 6b65  ><span class=\"ke\n-00005000: 7977 6f72 6422 3e70 726f 7465 6374 6564  yword\">protected\n-00005010: 3c2f 7370 616e 3e3a 3c2f 6469 763e 0a3c  </span>:</div>.<\n-00005020: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n-00005030: 3e3c 6120 6964 3d22 6c30 3031 3539 2220  ><a id=\"l00159\" \n-00005040: 6e61 6d65 3d22 6c30 3031 3539 223e 3c2f  name=\"l00159\"></\n-00005050: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n-00005060: 696e 656e 6f22 3e20 2031 3539 3c2f 7370  ineno\">  159</sp\n-00005070: 616e 3e20 3c2f 6469 763e 0a3c 6469 7620  an> </div>.<div \n-00005080: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n-00005090: 6964 3d22 6c30 3031 3630 2220 6e61 6d65  id=\"l00160\" name\n-000050a0: 3d22 6c30 3031 3630 223e 3c2f 613e 3c73  =\"l00160\"></a><s\n-000050b0: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n-000050c0: 6f22 3e20 2031 3630 3c2f 7370 616e 3e20  o\">  160</span> \n-000050d0: 2020 203c 7370 616e 2063 6c61 7373 3d22     <span class=\"\n-000050e0: 636f 6d6d 656e 7422 3e2f 2f3c 2f73 7061  comment\">//</spa\n-000050f0: 6e3e 3c2f 6469 763e 0a3c 6469 7620 636c  n></div>.<div cl\n-00005100: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n-00005110: 3d22 6c30 3031 3631 2220 6e61 6d65 3d22  =\"l00161\" name=\"\n-00005120: 6c30 3031 3631 223e 3c2f 613e 3c73 7061  l00161\"></a><spa\n-00005130: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n-00005140: 3e20 2031 3631 3c2f 7370 616e 3e20 2020  >  161</span>   \n-00005150: 203c 7370 616e 2063 6c61 7373 3d22 636f   <span class=\"co\n-00005160: 6d6d 656e 7422 3e2f 2f20 2053 7570 706f  mment\">//  Suppo\n-00005170: 7274 696e 6720 696e 7465 726e 616c 206d  rting internal m\n-00005180: 6574 686f 6473 202d 2d20 6f70 7469 6f6e  ethods -- option\n-00005190: 616c 6c79 2069 6d70 6c65 6d65 6e74 6564  ally implemented\n-000051a0: 2c20 6465 7065 6e64 696e 6720 6f6e 2073  , depending on s\n-000051b0: 7065 6369 616c 697a 6174 696f 6e3a 3c2f  pecialization:</\n-000051c0: 7370 616e 3e3c 2f64 6976 3e0a 3c64 6976  span></div>.<div\n-000051d0: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n-000051e0: 2069 643d 226c 3030 3136 3222 206e 616d   id=\"l00162\" nam\n-000051f0: 653d 226c 3030 3136 3222 3e3c 2f61 3e3c  e=\"l00162\"></a><\n-00005200: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n-00005210: 6e6f 223e 2020 3136 323c 2f73 7061 6e3e  no\">  162</span>\n-00005220: 2020 2020 3c73 7061 6e20 636c 6173 733d      <span class=\n-00005230: 2263 6f6d 6d65 6e74 223e 2f2f 3c2f 7370  \"comment\">//</sp\n-00005240: 616e 3e3c 2f64 6976 3e0a 3c64 6976 2063  an></div>.<div c\n-00005250: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n-00005260: 643d 226c 3030 3136 3322 206e 616d 653d  d=\"l00163\" name=\n-00005270: 226c 3030 3136 3322 3e3c 2f61 3e3c 7370  \"l00163\"></a><sp\n-00005280: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n-00005290: 223e 2020 3136 333c 2f73 7061 6e3e 203c  \">  163</span> <\n-000052a0: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n-000052b0: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n-000052c0: 3030 3136 3422 206e 616d 653d 226c 3030  00164\" name=\"l00\n-000052d0: 3136 3422 3e3c 2f61 3e3c 7370 616e 2063  164\"></a><span c\n-000052e0: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n-000052f0: 3136 343c 2f73 7061 6e3e 2020 2020 3c73  164</span>    <s\n-00005300: 7061 6e20 636c 6173 733d 2263 6f6d 6d65  pan class=\"comme\n-00005310: 6e74 223e 2f2f 2020 5375 6264 6976 6973  nt\">//  Subdivis\n-00005320: 696f 6e2f 7265 6669 6e65 6d65 6e74 206d  ion/refinement m\n-00005330: 6173 6b73 202d 2d20 7477 6f20 666f 7220  asks -- two for \n-00005340: 6564 6765 2d76 6572 7469 6365 7320 616e  edge-vertices an\n-00005350: 6420 7468 7265 6520 666f 7220 7665 7274  d three for vert\n-00005360: 6578 2d76 6572 7469 6365 733a 3c2f 7370  ex-vertices:</sp\n-00005370: 616e 3e3c 2f64 6976 3e0a 3c64 6976 2063  an></div>.<div c\n-00005380: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n-00005390: 643d 226c 3030 3136 3522 206e 616d 653d  d=\"l00165\" name=\n-000053a0: 226c 3030 3136 3522 3e3c 2f61 3e3c 7370  \"l00165\"></a><sp\n-000053b0: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n-000053c0: 223e 2020 3136 353c 2f73 7061 6e3e 2020  \">  165</span>  \n-000053d0: 2020 3c73 7061 6e20 636c 6173 733d 2263    <span class=\"c\n-000053e0: 6f6d 6d65 6e74 223e 2f2f 3c2f 7370 616e  omment\">//</span\n-000053f0: 3e3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ></div>.<div cla\n-00005400: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n-00005410: 226c 3030 3136 3622 206e 616d 653d 226c  \"l00166\" name=\"l\n-00005420: 3030 3136 3622 3e3c 2f61 3e3c 7370 616e  00166\"></a><span\n-00005430: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n-00005440: 2020 3136 363c 2f73 7061 6e3e 2020 2020    166</span>    \n-00005450: 3c73 7061 6e20 636c 6173 733d 226b 6579  <span class=\"key\n-00005460: 776f 7264 223e 7465 6d70 6c61 7465 3c2f  word\">template</\n-00005470: 7370 616e 3e20 266c 743b 3c73 7061 6e20  span> &lt;<span \n-00005480: 636c 6173 733d 226b 6579 776f 7264 223e  class=\"keyword\">\n-00005490: 7479 7065 6e61 6d65 3c2f 7370 616e 3e20  typename</span> \n-000054a0: 4544 4745 2c20 3c73 7061 6e20 636c 6173  EDGE, <span clas\n-000054b0: 733d 226b 6579 776f 7264 223e 7479 7065  s=\"keyword\">type\n-000054c0: 6e61 6d65 3c2f 7370 616e 3e20 4d41 534b  name</span> MASK\n-000054d0: 2667 743b 3c2f 6469 763e 0a3c 6469 7620  &gt;</div>.<div \n-000054e0: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n-000054f0: 6964 3d22 6c30 3031 3637 2220 6e61 6d65  id=\"l00167\" name\n-00005500: 3d22 6c30 3031 3637 223e 3c2f 613e 3c73  =\"l00167\"></a><s\n-00005510: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n-00005520: 6f22 3e20 2031 3637 3c2f 7370 616e 3e20  o\">  167</span> \n-00005530: 2020 203c 7370 616e 2063 6c61 7373 3d22     <span class=\"\n-00005540: 6b65 7977 6f72 6474 7970 6522 3e76 6f69  keywordtype\">voi\n-00005550: 643c 2f73 7061 6e3e 203c 6120 636c 6173  d</span> <a clas\n-00005560: 733d 2263 6f64 6520 686c 5f66 756e 6374  s=\"code hl_funct\n-00005570: 696f 6e22 2068 7265 663d 2261 3031 3334  ion\" href=\"a0134\n-00005580: 312e 6874 6d6c 2361 3536 3936 3461 3463  1.html#a56964a4c\n-00005590: 3738 3361 6131 3565 6331 6638 3139 3330  783aa15ec1f81930\n-000055a0: 3665 6539 6632 3134 223e 6173 7369 676e  6ee9f214\">assign\n-000055b0: 4372 6561 7365 4d61 736b 466f 7245 6467  CreaseMaskForEdg\n-000055c0: 653c 2f61 3e28 4544 4745 203c 7370 616e  e</a>(EDGE <span\n-000055d0: 2063 6c61 7373 3d22 6b65 7977 6f72 6422   class=\"keyword\"\n-000055e0: 3e63 6f6e 7374 3c2f 7370 616e 3e26 616d  >const</span>&am\n-000055f0: 703b 2065 6467 652c 204d 4153 4b26 616d  p; edge, MASK&am\n-00005600: 703b 206d 6173 6b29 203c 7370 616e 2063  p; mask) <span c\n-00005610: 6c61 7373 3d22 6b65 7977 6f72 6422 3e63  lass=\"keyword\">c\n-00005620: 6f6e 7374 3c2f 7370 616e 3e3b 3c2f 6469  onst</span>;</di\n-00005630: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n-00005640: 696e 6522 3e3c 6120 6964 3d22 6c30 3031  ine\"><a id=\"l001\n-00005650: 3638 2220 6e61 6d65 3d22 6c30 3031 3638  68\" name=\"l00168\n-00005660: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n-00005670: 733d 226c 696e 656e 6f22 3e20 2031 3638  s=\"lineno\">  168\n-00005680: 3c2f 7370 616e 3e20 2020 203c 7370 616e  </span>    <span\n-00005690: 2063 6c61 7373 3d22 6b65 7977 6f72 6422   class=\"keyword\"\n-000056a0: 3e74 656d 706c 6174 653c 2f73 7061 6e3e  >template</span>\n-000056b0: 2026 6c74 3b3c 7370 616e 2063 6c61 7373   &lt;<span class\n-000056c0: 3d22 6b65 7977 6f72 6422 3e74 7970 656e  =\"keyword\">typen\n-000056d0: 616d 653c 2f73 7061 6e3e 2045 4447 452c  ame</span> EDGE,\n-000056e0: 203c 7370 616e 2063 6c61 7373 3d22 6b65   <span class=\"ke\n-000056f0: 7977 6f72 6422 3e74 7970 656e 616d 653c  yword\">typename<\n-00005700: 2f73 7061 6e3e 204d 4153 4b26 6774 3b3c  /span> MASK&gt;<\n-00005710: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n-00005720: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n-00005730: 3030 3136 3922 206e 616d 653d 226c 3030  00169\" name=\"l00\n-00005740: 3136 3922 3e3c 2f61 3e3c 7370 616e 2063  169\"></a><span c\n-00005750: 6c61 7373 3d22 6c69 6e65 6e6f 223e 3c61  lass=\"lineno\"><a\n-00005760: 2063 6c61 7373 3d22 6c69 6e65 2220 6872   class=\"line\" hr\n-00005770: 6566 3d22 6130 3133 3431 2e68 746d 6c23  ef=\"a01341.html#\n-00005780: 6130 3539 6635 6332 6339 3139 3362 6535  a059f5c2c9193be5\n-00005790: 3862 6533 3139 3535 6539 3837 6130 3630  8be31955e987a060\n-000057a0: 3022 3e20 2031 3639 3c2f 613e 3c2f 7370  0\">  169</a></sp\n-000057b0: 616e 3e20 2020 203c 7370 616e 2063 6c61  an>    <span cla\n-000057c0: 7373 3d22 6b65 7977 6f72 6474 7970 6522  ss=\"keywordtype\"\n-000057d0: 3e76 6f69 643c 2f73 7061 6e3e 203c 6120  >void</span> <a \n-000057e0: 636c 6173 733d 2263 6f64 6520 686c 5f66  class=\"code hl_f\n-000057f0: 756e 6374 696f 6e22 2068 7265 663d 2261  unction\" href=\"a\n-00005800: 3031 3334 312e 6874 6d6c 2361 3035 3966  01341.html#a059f\n-00005810: 3563 3263 3931 3933 6265 3538 6265 3331  5c2c9193be58be31\n-00005820: 3935 3565 3938 3761 3036 3030 223e 6173  955e987a0600\">as\n-00005830: 7369 676e 536d 6f6f 7468 4d61 736b 466f  signSmoothMaskFo\n-00005840: 7245 6467 653c 2f61 3e28 4544 4745 203c  rEdge</a>(EDGE <\n-00005850: 7370 616e 2063 6c61 7373 3d22 6b65 7977  span class=\"keyw\n-00005860: 6f72 6422 3e63 6f6e 7374 3c2f 7370 616e  ord\">const</span\n-00005870: 3e26 616d 703b 2065 6467 652c 204d 4153  >&amp; edge, MAS\n-00005880: 4b26 616d 703b 206d 6173 6b29 203c 7370  K&amp; mask) <sp\n-00005890: 616e 2063 6c61 7373 3d22 6b65 7977 6f72  an class=\"keywor\n-000058a0: 6422 3e63 6f6e 7374 3c2f 7370 616e 3e3b  d\">const</span>;\n-000058b0: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n-000058c0: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n-000058d0: 6c30 3031 3730 2220 6e61 6d65 3d22 6c30  l00170\" name=\"l0\n-000058e0: 3031 3730 223e 3c2f 613e 3c73 7061 6e20  0170\"></a><span \n-000058f0: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n-00005900: 2031 3730 3c2f 7370 616e 3e20 3c2f 6469   170</span> </di\n-00005910: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n-00005920: 696e 6522 3e3c 6120 6964 3d22 6c30 3031  ine\"><a id=\"l001\n-00005930: 3731 2220 6e61 6d65 3d22 6c30 3031 3731  71\" name=\"l00171\n-00005940: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n-00005950: 733d 226c 696e 656e 6f22 3e20 2031 3731  s=\"lineno\">  171\n-00005960: 3c2f 7370 616e 3e20 2020 203c 7370 616e  </span>    <span\n-00005970: 2063 6c61 7373 3d22 6b65 7977 6f72 6422   class=\"keyword\"\n-00005980: 3e74 656d 706c 6174 653c 2f73 7061 6e3e  >template</span>\n-00005990: 2026 6c74 3b3c 7370 616e 2063 6c61 7373   &lt;<span class\n-000059a0: 3d22 6b65 7977 6f72 6422 3e74 7970 656e  =\"keyword\">typen\n-000059b0: 616d 653c 2f73 7061 6e3e 2056 4552 5445  ame</span> VERTE\n-000059c0: 582c 203c 7370 616e 2063 6c61 7373 3d22  X, <span class=\"\n-000059d0: 6b65 7977 6f72 6422 3e74 7970 656e 616d  keyword\">typenam\n-000059e0: 653c 2f73 7061 6e3e 204d 4153 4b26 6774  e</span> MASK&gt\n-000059f0: 3b3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ;</div>.<div cla\n-00005a00: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n-00005a10: 226c 3030 3137 3222 206e 616d 653d 226c  \"l00172\" name=\"l\n-00005a20: 3030 3137 3222 3e3c 2f61 3e3c 7370 616e  00172\"></a><span\n-00005a30: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n-00005a40: 2020 3137 323c 2f73 7061 6e3e 2020 2020    172</span>    \n-00005a50: 3c73 7061 6e20 636c 6173 733d 226b 6579  <span class=\"key\n-00005a60: 776f 7264 7479 7065 223e 766f 6964 3c2f  wordtype\">void</\n-00005a70: 7370 616e 3e20 3c61 2063 6c61 7373 3d22  span> <a class=\"\n-00005a80: 636f 6465 2068 6c5f 6675 6e63 7469 6f6e  code hl_function\n-00005a90: 2220 6872 6566 3d22 6130 3133 3431 2e68  \" href=\"a01341.h\n-00005aa0: 746d 6c23 6137 3736 3434 6636 3965 6465  tml#a77644f69ede\n-00005ab0: 3033 6661 3632 3232 3264 3630 6139 3939  03fa62222d60a999\n-00005ac0: 3730 3233 3822 3e61 7373 6967 6e43 6f72  70238\">assignCor\n-00005ad0: 6e65 724d 6173 6b46 6f72 5665 7274 6578  nerMaskForVertex\n-00005ae0: 3c2f 613e 2856 4552 5445 5820 3c73 7061  </a>(VERTEX <spa\n-00005af0: 6e20 636c 6173 733d 226b 6579 776f 7264  n class=\"keyword\n-00005b00: 223e 636f 6e73 743c 2f73 7061 6e3e 2661  \">const</span>&a\n-00005b10: 6d70 3b20 6564 6765 2c20 4d41 534b 2661  mp; edge, MASK&a\n-00005b20: 6d70 3b20 6d61 736b 2920 3c73 7061 6e20  mp; mask) <span \n-00005b30: 636c 6173 733d 226b 6579 776f 7264 223e  class=\"keyword\">\n-00005b40: 636f 6e73 743c 2f73 7061 6e3e 3b3c 2f64  const</span>;</d\n-00005b50: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n-00005b60: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n-00005b70: 3137 3322 206e 616d 653d 226c 3030 3137  173\" name=\"l0017\n-00005b80: 3322 3e3c 2f61 3e3c 7370 616e 2063 6c61  3\"></a><span cla\n-00005b90: 7373 3d22 6c69 6e65 6e6f 223e 2020 3137  ss=\"lineno\">  17\n-00005ba0: 333c 2f73 7061 6e3e 2020 2020 3c73 7061  3</span>    <spa\n-00005bb0: 6e20 636c 6173 733d 226b 6579 776f 7264  n class=\"keyword\n-00005bc0: 223e 7465 6d70 6c61 7465 3c2f 7370 616e  \">template</span\n-00005bd0: 3e20 266c 743b 3c73 7061 6e20 636c 6173  > &lt;<span clas\n-00005be0: 733d 226b 6579 776f 7264 223e 7479 7065  s=\"keyword\">type\n-00005bf0: 6e61 6d65 3c2f 7370 616e 3e20 5645 5254  name</span> VERT\n-00005c00: 4558 2c20 3c73 7061 6e20 636c 6173 733d  EX, <span class=\n-00005c10: 226b 6579 776f 7264 223e 7479 7065 6e61  \"keyword\">typena\n-00005c20: 6d65 3c2f 7370 616e 3e20 4d41 534b 2667  me</span> MASK&g\n-00005c30: 743b 3c2f 6469 763e 0a3c 6469 7620 636c  t;</div>.<div cl\n-00005c40: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n-00005c50: 3d22 6c30 3031 3734 2220 6e61 6d65 3d22  =\"l00174\" name=\"\n-00005c60: 6c30 3031 3734 223e 3c2f 613e 3c73 7061  l00174\"></a><spa\n-00005c70: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n-00005c80: 3e3c 6120 636c 6173 733d 226c 696e 6522  ><a class=\"line\"\n-00005c90: 2068 7265 663d 2261 3031 3334 312e 6874   href=\"a01341.ht\n-00005ca0: 6d6c 2361 3234 3339 6537 3833 3733 6439  ml#a2439e78373d9\n-00005cb0: 6466 6436 6164 3361 6233 3733 6337 6333  dfd6ad3ab373c7c3\n-00005cc0: 3264 6363 223e 2020 3137 343c 2f61 3e3c  2dcc\">  174</a><\n-00005cd0: 2f73 7061 6e3e 2020 2020 3c73 7061 6e20  /span>    <span \n-00005ce0: 636c 6173 733d 226b 6579 776f 7264 7479  class=\"keywordty\n-00005cf0: 7065 223e 766f 6964 3c2f 7370 616e 3e20  pe\">void</span> \n-00005d00: 3c61 2063 6c61 7373 3d22 636f 6465 2068  <a class=\"code h\n-00005d10: 6c5f 6675 6e63 7469 6f6e 2220 6872 6566  l_function\" href\n-00005d20: 3d22 6130 3133 3431 2e68 746d 6c23 6132  =\"a01341.html#a2\n-00005d30: 3433 3965 3738 3337 3364 3964 6664 3661  439e78373d9dfd6a\n-00005d40: 6433 6162 3337 3363 3763 3332 6463 6322  d3ab373c7c32dcc\"\n-00005d50: 3e61 7373 6967 6e43 7265 6173 654d 6173  >assignCreaseMas\n-00005d60: 6b46 6f72 5665 7274 6578 3c2f 613e 2856  kForVertex</a>(V\n-00005d70: 4552 5445 5820 3c73 7061 6e20 636c 6173  ERTEX <span clas\n-00005d80: 733d 226b 6579 776f 7264 223e 636f 6e73  s=\"keyword\">cons\n-00005d90: 743c 2f73 7061 6e3e 2661 6d70 3b20 6564  t</span>&amp; ed\n-00005da0: 6765 2c20 4d41 534b 2661 6d70 3b20 6d61  ge, MASK&amp; ma\n-00005db0: 736b 2c20 3c73 7061 6e20 636c 6173 733d  sk, <span class=\n-00005dc0: 226b 6579 776f 7264 7479 7065 223e 696e  \"keywordtype\">in\n-00005dd0: 743c 2f73 7061 6e3e 203c 7370 616e 2063  t</span> <span c\n-00005de0: 6c61 7373 3d22 6b65 7977 6f72 6422 3e63  lass=\"keyword\">c\n-00005df0: 6f6e 7374 3c2f 7370 616e 3e20 6372 6561  onst</span> crea\n-00005e00: 7365 456e 6473 5b32 5d29 203c 7370 616e  seEnds[2]) <span\n-00005e10: 2063 6c61 7373 3d22 6b65 7977 6f72 6422   class=\"keyword\"\n-00005e20: 3e63 6f6e 7374 3c2f 7370 616e 3e3b 3c2f  >const</span>;</\n-00005e30: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n-00005e40: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n-00005e50: 3031 3735 2220 6e61 6d65 3d22 6c30 3031  0175\" name=\"l001\n-00005e60: 3735 223e 3c2f 613e 3c73 7061 6e20 636c  75\"></a><span cl\n-00005e70: 6173 733d 226c 696e 656e 6f22 3e20 2031  ass=\"lineno\">  1\n-00005e80: 3735 3c2f 7370 616e 3e20 2020 203c 7370  75</span>    <sp\n-00005e90: 616e 2063 6c61 7373 3d22 6b65 7977 6f72  an class=\"keywor\n-00005ea0: 6422 3e74 656d 706c 6174 653c 2f73 7061  d\">template</spa\n-00005eb0: 6e3e 2026 6c74 3b3c 7370 616e 2063 6c61  n> &lt;<span cla\n-00005ec0: 7373 3d22 6b65 7977 6f72 6422 3e74 7970  ss=\"keyword\">typ\n-00005ed0: 656e 616d 653c 2f73 7061 6e3e 2056 4552  ename</span> VER\n-00005ee0: 5445 582c 203c 7370 616e 2063 6c61 7373  TEX, <span class\n-00005ef0: 3d22 6b65 7977 6f72 6422 3e74 7970 656e  =\"keyword\">typen\n-00005f00: 616d 653c 2f73 7061 6e3e 204d 4153 4b26  ame</span> MASK&\n-00005f10: 6774 3b3c 2f64 6976 3e0a 3c64 6976 2063  gt;</div>.<div c\n-00005f20: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n-00005f30: 643d 226c 3030 3137 3622 206e 616d 653d  d=\"l00176\" name=\n-00005f40: 226c 3030 3137 3622 3e3c 2f61 3e3c 7370  \"l00176\"></a><sp\n-00005f50: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n-00005f60: 223e 3c61 2063 6c61 7373 3d22 6c69 6e65  \"><a class=\"line\n-00005f70: 2220 6872 6566 3d22 6130 3133 3431 2e68  \" href=\"a01341.h\n-00005f80: 746d 6c23 6138 3437 3838 6135 6139 3366  tml#a84788a5a93f\n-00005f90: 3137 6536 3438 3130 3331 3233 6339 6634  17e648103123c9f4\n-00005fa0: 6133 3366 3922 3e20 2031 3736 3c2f 613e  a33f9\">  176</a>\n-00005fb0: 3c2f 7370 616e 3e20 2020 203c 7370 616e  </span>    <span\n-00005fc0: 2063 6c61 7373 3d22 6b65 7977 6f72 6474   class=\"keywordt\n-00005fd0: 7970 6522 3e76 6f69 643c 2f73 7061 6e3e  ype\">void</span>\n-00005fe0: 203c 6120 636c 6173 733d 2263 6f64 6520   <a class=\"code \n-00005ff0: 686c 5f66 756e 6374 696f 6e22 2068 7265  hl_function\" hre\n-00006000: 663d 2261 3031 3334 312e 6874 6d6c 2361  f=\"a01341.html#a\n-00006010: 3834 3738 3861 3561 3933 6631 3765 3634  84788a5a93f17e64\n-00006020: 3831 3033 3132 3363 3966 3461 3333 6639  8103123c9f4a33f9\n-00006030: 223e 6173 7369 676e 536d 6f6f 7468 4d61  \">assignSmoothMa\n-00006040: 736b 466f 7256 6572 7465 783c 2f61 3e28  skForVertex</a>(\n-00006050: 5645 5254 4558 203c 7370 616e 2063 6c61  VERTEX <span cla\n-00006060: 7373 3d22 6b65 7977 6f72 6422 3e63 6f6e  ss=\"keyword\">con\n-00006070: 7374 3c2f 7370 616e 3e26 616d 703b 2065  st</span>&amp; e\n-00006080: 6467 652c 204d 4153 4b26 616d 703b 206d  dge, MASK&amp; m\n-00006090: 6173 6b29 203c 7370 616e 2063 6c61 7373  ask) <span class\n-000060a0: 3d22 6b65 7977 6f72 6422 3e63 6f6e 7374  =\"keyword\">const\n-000060b0: 3c2f 7370 616e 3e3b 3c2f 6469 763e 0a3c  </span>;</div>.<\n-000060c0: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n-000060d0: 3e3c 6120 6964 3d22 6c30 3031 3737 2220  ><a id=\"l00177\" \n-000060e0: 6e61 6d65 3d22 6c30 3031 3737 223e 3c2f  name=\"l00177\"></\n-000060f0: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n-00006100: 696e 656e 6f22 3e20 2031 3737 3c2f 7370  ineno\">  177</sp\n-00006110: 616e 3e20 3c2f 6469 763e 0a3c 6469 7620  an> </div>.<div \n-00006120: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n-00006130: 6964 3d22 6c30 3031 3738 2220 6e61 6d65  id=\"l00178\" name\n-00006140: 3d22 6c30 3031 3738 223e 3c2f 613e 3c73  =\"l00178\"></a><s\n-00006150: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n-00006160: 6f22 3e20 2031 3738 3c2f 7370 616e 3e20  o\">  178</span> \n-00006170: 2020 203c 7370 616e 2063 6c61 7373 3d22     <span class=\"\n-00006180: 636f 6d6d 656e 7422 3e2f 2f3c 2f73 7061  comment\">//</spa\n-00006190: 6e3e 3c2f 6469 763e 0a3c 6469 7620 636c  n></div>.<div cl\n-000061a0: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n-000061b0: 3d22 6c30 3031 3739 2220 6e61 6d65 3d22  =\"l00179\" name=\"\n-000061c0: 6c30 3031 3739 223e 3c2f 613e 3c73 7061  l00179\"></a><spa\n-000061d0: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n-000061e0: 3e20 2031 3739 3c2f 7370 616e 3e20 2020  >  179</span>   \n-000061f0: 203c 7370 616e 2063 6c61 7373 3d22 636f   <span class=\"co\n-00006200: 6d6d 656e 7422 3e2f 2f20 204c 696d 6974  mment\">//  Limit\n-00006210: 206d 6173 6b73 2066 6f72 2070 6f73 6974   masks for posit\n-00006220: 696f 6e20 616e 6420 7461 6e67 656e 7473  ion and tangents\n-00006230: 2061 7420 7665 7274 6963 6573 202d 2d20   at vertices -- \n-00006240: 7468 7265 6520 6361 7365 7320 666f 7220  three cases for \n-00006250: 6561 6368 3a3c 2f73 7061 6e3e 3c2f 6469  each:</span></di\n-00006260: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n-00006270: 696e 6522 3e3c 6120 6964 3d22 6c30 3031  ine\"><a id=\"l001\n-00006280: 3830 2220 6e61 6d65 3d22 6c30 3031 3830  80\" name=\"l00180\n-00006290: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n-000062a0: 733d 226c 696e 656e 6f22 3e20 2031 3830  s=\"lineno\">  180\n-000062b0: 3c2f 7370 616e 3e20 2020 203c 7370 616e  </span>    <span\n-000062c0: 2063 6c61 7373 3d22 636f 6d6d 656e 7422   class=\"comment\"\n-000062d0: 3e2f 2f3c 2f73 7061 6e3e 3c2f 6469 763e  >//</span></div>\n-000062e0: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n-000062f0: 6522 3e3c 6120 6964 3d22 6c30 3031 3831  e\"><a id=\"l00181\n-00006300: 2220 6e61 6d65 3d22 6c30 3031 3831 223e  \" name=\"l00181\">\n-00006310: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n-00006320: 226c 696e 656e 6f22 3e20 2031 3831 3c2f  \"lineno\">  181</\n-00006330: 7370 616e 3e20 2020 203c 7370 616e 2063  span>    <span c\n-00006340: 6c61 7373 3d22 6b65 7977 6f72 6422 3e74  lass=\"keyword\">t\n-00006350: 656d 706c 6174 653c 2f73 7061 6e3e 2026  emplate</span> &\n-00006360: 6c74 3b3c 7370 616e 2063 6c61 7373 3d22  lt;<span class=\"\n-00006370: 6b65 7977 6f72 6422 3e74 7970 656e 616d  keyword\">typenam\n-00006380: 653c 2f73 7061 6e3e 2056 4552 5445 582c  e</span> VERTEX,\n-00006390: 203c 7370 616e 2063 6c61 7373 3d22 6b65   <span class=\"ke\n-000063a0: 7977 6f72 6422 3e74 7970 656e 616d 653c  yword\">typename<\n-000063b0: 2f73 7061 6e3e 204d 4153 4b26 6774 3b3c  /span> MASK&gt;<\n-000063c0: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n-000063d0: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n-000063e0: 3030 3138 3222 206e 616d 653d 226c 3030  00182\" name=\"l00\n-000063f0: 3138 3222 3e3c 2f61 3e3c 7370 616e 2063  182\"></a><span c\n-00006400: 6c61 7373 3d22 6c69 6e65 6e6f 223e 3c61  lass=\"lineno\"><a\n-00006410: 2063 6c61 7373 3d22 6c69 6e65 2220 6872   class=\"line\" hr\n-00006420: 6566 3d22 6130 3133 3431 2e68 746d 6c23  ef=\"a01341.html#\n-00006430: 6161 3238 3231 6433 3635 6561 3831 3335  aa2821d365ea8135\n-00006440: 6436 3331 3663 3066 3932 3666 3837 6363  d6316c0f926f87cc\n-00006450: 6222 3e20 2031 3832 3c2f 613e 3c2f 7370  b\">  182</a></sp\n-00006460: 616e 3e20 2020 203c 7370 616e 2063 6c61  an>    <span cla\n-00006470: 7373 3d22 6b65 7977 6f72 6474 7970 6522  ss=\"keywordtype\"\n-00006480: 3e76 6f69 643c 2f73 7061 6e3e 203c 6120  >void</span> <a \n-00006490: 636c 6173 733d 2263 6f64 6520 686c 5f66  class=\"code hl_f\n-000064a0: 756e 6374 696f 6e22 2068 7265 663d 2261  unction\" href=\"a\n-000064b0: 3031 3334 312e 6874 6d6c 2361 6132 3832  01341.html#aa282\n-000064c0: 3164 3336 3565 6138 3133 3564 3633 3136  1d365ea8135d6316\n-000064d0: 6330 6639 3236 6638 3763 6362 223e 6173  c0f926f87ccb\">as\n-000064e0: 7369 676e 436f 726e 6572 4c69 6d69 744d  signCornerLimitM\n-000064f0: 6173 6b3c 2f61 3e28 5645 5254 4558 203c  ask</a>(VERTEX <\n-00006500: 7370 616e 2063 6c61 7373 3d22 6b65 7977  span class=\"keyw\n-00006510: 6f72 6422 3e63 6f6e 7374 3c2f 7370 616e  ord\">const</span\n-00006520: 3e26 616d 703b 2076 6572 7465 782c 204d  >&amp; vertex, M\n-00006530: 4153 4b26 616d 703b 2070 6f73 2920 3c73  ASK&amp; pos) <s\n-00006540: 7061 6e20 636c 6173 733d 226b 6579 776f  pan class=\"keywo\n-00006550: 7264 223e 636f 6e73 743c 2f73 7061 6e3e  rd\">const</span>\n-00006560: 3b3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ;</div>.<div cla\n-00006570: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n-00006580: 226c 3030 3138 3322 206e 616d 653d 226c  \"l00183\" name=\"l\n-00006590: 3030 3138 3322 3e3c 2f61 3e3c 7370 616e  00183\"></a><span\n-000065a0: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n-000065b0: 2020 3138 333c 2f73 7061 6e3e 2020 2020    183</span>    \n-000065c0: 3c73 7061 6e20 636c 6173 733d 226b 6579  <span class=\"key\n-000065d0: 776f 7264 223e 7465 6d70 6c61 7465 3c2f  word\">template</\n-000065e0: 7370 616e 3e20 266c 743b 3c73 7061 6e20  span> &lt;<span \n-000065f0: 636c 6173 733d 226b 6579 776f 7264 223e  class=\"keyword\">\n-00006600: 7479 7065 6e61 6d65 3c2f 7370 616e 3e20  typename</span> \n-00006610: 5645 5254 4558 2c20 3c73 7061 6e20 636c  VERTEX, <span cl\n-00006620: 6173 733d 226b 6579 776f 7264 223e 7479  ass=\"keyword\">ty\n-00006630: 7065 6e61 6d65 3c2f 7370 616e 3e20 4d41  pename</span> MA\n-00006640: 534b 2667 743b 3c2f 6469 763e 0a3c 6469  SK&gt;</div>.<di\n-00006650: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n-00006660: 6120 6964 3d22 6c30 3031 3834 2220 6e61  a id=\"l00184\" na\n-00006670: 6d65 3d22 6c30 3031 3834 223e 3c2f 613e  me=\"l00184\"></a>\n-00006680: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n-00006690: 656e 6f22 3e3c 6120 636c 6173 733d 226c  eno\"><a class=\"l\n-000066a0: 696e 6522 2068 7265 663d 2261 3031 3334  ine\" href=\"a0134\n-000066b0: 312e 6874 6d6c 2361 3763 3933 3136 6637  1.html#a7c9316f7\n-000066c0: 3231 3264 3365 6134 3164 6237 6633 6631  212d3ea41db7f3f1\n-000066d0: 6136 3663 6337 6535 223e 2020 3138 343c  a66cc7e5\">  184<\n-000066e0: 2f61 3e3c 2f73 7061 6e3e 2020 2020 3c73  /a></span>    <s\n-000066f0: 7061 6e20 636c 6173 733d 226b 6579 776f  pan class=\"keywo\n-00006700: 7264 7479 7065 223e 766f 6964 3c2f 7370  rdtype\">void</sp\n-00006710: 616e 3e20 3c61 2063 6c61 7373 3d22 636f  an> <a class=\"co\n-00006720: 6465 2068 6c5f 6675 6e63 7469 6f6e 2220  de hl_function\" \n-00006730: 6872 6566 3d22 6130 3133 3431 2e68 746d  href=\"a01341.htm\n-00006740: 6c23 6137 6339 3331 3666 3732 3132 6433  l#a7c9316f7212d3\n-00006750: 6561 3431 6462 3766 3366 3161 3636 6363  ea41db7f3f1a66cc\n-00006760: 3765 3522 3e61 7373 6967 6e43 7265 6173  7e5\">assignCreas\n-00006770: 654c 696d 6974 4d61 736b 3c2f 613e 2856  eLimitMask</a>(V\n-00006780: 4552 5445 5820 3c73 7061 6e20 636c 6173  ERTEX <span clas\n-00006790: 733d 226b 6579 776f 7264 223e 636f 6e73  s=\"keyword\">cons\n-000067a0: 743c 2f73 7061 6e3e 2661 6d70 3b20 7665  t</span>&amp; ve\n-000067b0: 7274 6578 2c20 4d41 534b 2661 6d70 3b20  rtex, MASK&amp; \n-000067c0: 706f 732c 203c 7370 616e 2063 6c61 7373  pos, <span class\n-000067d0: 3d22 6b65 7977 6f72 6474 7970 6522 3e69  =\"keywordtype\">i\n-000067e0: 6e74 3c2f 7370 616e 3e20 3c73 7061 6e20  nt</span> <span \n-000067f0: 636c 6173 733d 226b 6579 776f 7264 223e  class=\"keyword\">\n-00006800: 636f 6e73 743c 2f73 7061 6e3e 2063 7265  const</span> cre\n-00006810: 6173 6545 6e64 735b 325d 2920 3c73 7061  aseEnds[2]) <spa\n-00006820: 6e20 636c 6173 733d 226b 6579 776f 7264  n class=\"keyword\n-00006830: 223e 636f 6e73 743c 2f73 7061 6e3e 3b3c  \">const</span>;<\n-00006840: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n-00006850: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n-00006860: 3030 3138 3522 206e 616d 653d 226c 3030  00185\" name=\"l00\n-00006870: 3138 3522 3e3c 2f61 3e3c 7370 616e 2063  185\"></a><span c\n-00006880: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n-00006890: 3138 353c 2f73 7061 6e3e 2020 2020 3c73  185</span>    <s\n-000068a0: 7061 6e20 636c 6173 733d 226b 6579 776f  pan class=\"keywo\n-000068b0: 7264 223e 7465 6d70 6c61 7465 3c2f 7370  rd\">template</sp\n-000068c0: 616e 3e20 266c 743b 3c73 7061 6e20 636c  an> &lt;<span cl\n-000068d0: 6173 733d 226b 6579 776f 7264 223e 7479  ass=\"keyword\">ty\n-000068e0: 7065 6e61 6d65 3c2f 7370 616e 3e20 5645  pename</span> VE\n-000068f0: 5254 4558 2c20 3c73 7061 6e20 636c 6173  RTEX, <span clas\n-00006900: 733d 226b 6579 776f 7264 223e 7479 7065  s=\"keyword\">type\n-00006910: 6e61 6d65 3c2f 7370 616e 3e20 4d41 534b  name</span> MASK\n-00006920: 2667 743b 3c2f 6469 763e 0a3c 6469 7620  &gt;</div>.<div \n-00006930: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n-00006940: 6964 3d22 6c30 3031 3836 2220 6e61 6d65  id=\"l00186\" name\n-00006950: 3d22 6c30 3031 3836 223e 3c2f 613e 3c73  =\"l00186\"></a><s\n-00006960: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n-00006970: 6f22 3e3c 6120 636c 6173 733d 226c 696e  o\"><a class=\"lin\n-00006980: 6522 2068 7265 663d 2261 3031 3334 312e  e\" href=\"a01341.\n-00006990: 6874 6d6c 2361 3733 3663 3130 3934 3463  html#a736c10944c\n-000069a0: 6239 3231 6233 3334 6662 6438 6238 3138  b921b334fbd8b818\n-000069b0: 3636 6435 3966 223e 2020 3138 363c 2f61  66d59f\">  186</a\n-000069c0: 3e3c 2f73 7061 6e3e 2020 2020 3c73 7061  ></span>    <spa\n-000069d0: 6e20 636c 6173 733d 226b 6579 776f 7264  n class=\"keyword\n-000069e0: 7479 7065 223e 766f 6964 3c2f 7370 616e  type\">void</span\n-000069f0: 3e20 3c61 2063 6c61 7373 3d22 636f 6465  > <a class=\"code\n-00006a00: 2068 6c5f 6675 6e63 7469 6f6e 2220 6872   hl_function\" hr\n-00006a10: 6566 3d22 6130 3133 3431 2e68 746d 6c23  ef=\"a01341.html#\n-00006a20: 6137 3336 6331 3039 3434 6362 3932 3162  a736c10944cb921b\n-00006a30: 3333 3466 6264 3862 3831 3836 3664 3539  334fbd8b81866d59\n-00006a40: 6622 3e61 7373 6967 6e53 6d6f 6f74 684c  f\">assignSmoothL\n-00006a50: 696d 6974 4d61 736b 3c2f 613e 2856 4552  imitMask</a>(VER\n-00006a60: 5445 5820 3c73 7061 6e20 636c 6173 733d  TEX <span class=\n-00006a70: 226b 6579 776f 7264 223e 636f 6e73 743c  \"keyword\">const<\n-00006a80: 2f73 7061 6e3e 2661 6d70 3b20 7665 7274  /span>&amp; vert\n-00006a90: 6578 2c20 4d41 534b 2661 6d70 3b20 706f  ex, MASK&amp; po\n-00006aa0: 7329 203c 7370 616e 2063 6c61 7373 3d22  s) <span class=\"\n-00006ab0: 6b65 7977 6f72 6422 3e63 6f6e 7374 3c2f  keyword\">const</\n-00006ac0: 7370 616e 3e3b 3c2f 6469 763e 0a3c 6469  span>;</div>.<di\n-00006ad0: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n-00006ae0: 6120 6964 3d22 6c30 3031 3837 2220 6e61  a id=\"l00187\" na\n-00006af0: 6d65 3d22 6c30 3031 3837 223e 3c2f 613e  me=\"l00187\"></a>\n-00006b00: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n-00006b10: 656e 6f22 3e20 2031 3837 3c2f 7370 616e  eno\">  187</span\n-00006b20: 3e20 3c2f 6469 763e 0a3c 6469 7620 636c  > </div>.<div cl\n-00006b30: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n-00006b40: 3d22 6c30 3031 3838 2220 6e61 6d65 3d22  =\"l00188\" name=\"\n-00006b50: 6c30 3031 3838 223e 3c2f 613e 3c73 7061  l00188\"></a><spa\n-00006b60: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n-00006b70: 3e20 2031 3838 3c2f 7370 616e 3e20 2020  >  188</span>   \n-00006b80: 203c 7370 616e 2063 6c61 7373 3d22 6b65   <span class=\"ke\n-00006b90: 7977 6f72 6422 3e74 656d 706c 6174 653c  yword\">template<\n-00006ba0: 2f73 7061 6e3e 2026 6c74 3b3c 7370 616e  /span> &lt;<span\n-00006bb0: 2063 6c61 7373 3d22 6b65 7977 6f72 6422   class=\"keyword\"\n-00006bc0: 3e74 7970 656e 616d 653c 2f73 7061 6e3e  >typename</span>\n-00006bd0: 2056 4552 5445 582c 203c 7370 616e 2063   VERTEX, <span c\n-00006be0: 6c61 7373 3d22 6b65 7977 6f72 6422 3e74  lass=\"keyword\">t\n-00006bf0: 7970 656e 616d 653c 2f73 7061 6e3e 204d  ypename</span> M\n-00006c00: 4153 4b26 6774 3b3c 2f64 6976 3e0a 3c64  ASK&gt;</div>.<d\n-00006c10: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n-00006c20: 3c61 2069 643d 226c 3030 3138 3922 206e  <a id=\"l00189\" n\n-00006c30: 616d 653d 226c 3030 3138 3922 3e3c 2f61  ame=\"l00189\"></a\n-00006c40: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n-00006c50: 6e65 6e6f 223e 3c61 2063 6c61 7373 3d22  neno\"><a class=\"\n-00006c60: 6c69 6e65 2220 6872 6566 3d22 6130 3133  line\" href=\"a013\n-00006c70: 3431 2e68 746d 6c23 6165 3965 6537 6631  41.html#ae9ee7f1\n-00006c80: 3166 3531 6563 3666 6638 6334 3361 6230  1f51ec6ff8c43ab0\n-00006c90: 3732 3934 3534 6235 3422 3e20 2031 3839  729454b54\">  189\n-00006ca0: 3c2f 613e 3c2f 7370 616e 3e20 2020 203c  </a></span>    <\n-00006cb0: 7370 616e 2063 6c61 7373 3d22 6b65 7977  span class=\"keyw\n-00006cc0: 6f72 6474 7970 6522 3e76 6f69 643c 2f73  ordtype\">void</s\n-00006cd0: 7061 6e3e 203c 6120 636c 6173 733d 2263  pan> <a class=\"c\n-00006ce0: 6f64 6520 686c 5f66 756e 6374 696f 6e22  ode hl_function\"\n-00006cf0: 2068 7265 663d 2261 3031 3334 312e 6874   href=\"a01341.ht\n-00006d00: 6d6c 2361 6539 6565 3766 3131 6635 3165  ml#ae9ee7f11f51e\n-00006d10: 6336 6666 3863 3433 6162 3037 3239 3435  c6ff8c43ab072945\n-00006d20: 3462 3534 223e 6173 7369 676e 436f 726e  4b54\">assignCorn\n-00006d30: 6572 4c69 6d69 7454 616e 6765 6e74 4d61  erLimitTangentMa\n-00006d40: 736b 733c 2f61 3e28 5645 5254 4558 203c  sks</a>(VERTEX <\n-00006d50: 7370 616e 2063 6c61 7373 3d22 6b65 7977  span class=\"keyw\n-00006d60: 6f72 6422 3e63 6f6e 7374 3c2f 7370 616e  ord\">const</span\n-00006d70: 3e26 616d 703b 2076 6572 7465 782c 204d  >&amp; vertex, M\n-00006d80: 4153 4b26 616d 703b 2074 616e 312c 204d  ASK&amp; tan1, M\n-00006d90: 4153 4b26 616d 703b 2074 616e 3229 203c  ASK&amp; tan2) <\n-00006da0: 7370 616e 2063 6c61 7373 3d22 6b65 7977  span class=\"keyw\n-00006db0: 6f72 6422 3e63 6f6e 7374 3c2f 7370 616e  ord\">const</span\n-00006dc0: 3e3b 3c2f 6469 763e 0a3c 6469 7620 636c  >;</div>.<div cl\n-00006dd0: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n-00006de0: 3d22 6c30 3031 3930 2220 6e61 6d65 3d22  =\"l00190\" name=\"\n-00006df0: 6c30 3031 3930 223e 3c2f 613e 3c73 7061  l00190\"></a><spa\n-00006e00: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n-00006e10: 3e20 2031 3930 3c2f 7370 616e 3e20 2020  >  190</span>   \n-00006e20: 203c 7370 616e 2063 6c61 7373 3d22 6b65   <span class=\"ke\n-00006e30: 7977 6f72 6422 3e74 656d 706c 6174 653c  yword\">template<\n-00006e40: 2f73 7061 6e3e 2026 6c74 3b3c 7370 616e  /span> &lt;<span\n-00006e50: 2063 6c61 7373 3d22 6b65 7977 6f72 6422   class=\"keyword\"\n-00006e60: 3e74 7970 656e 616d 653c 2f73 7061 6e3e  >typename</span>\n-00006e70: 2056 4552 5445 582c 203c 7370 616e 2063   VERTEX, <span c\n-00006e80: 6c61 7373 3d22 6b65 7977 6f72 6422 3e74  lass=\"keyword\">t\n-00006e90: 7970 656e 616d 653c 2f73 7061 6e3e 204d  ypename</span> M\n-00006ea0: 4153 4b26 6774 3b3c 2f64 6976 3e0a 3c64  ASK&gt;</div>.<d\n-00006eb0: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n-00006ec0: 3c61 2069 643d 226c 3030 3139 3122 206e  <a id=\"l00191\" n\n-00006ed0: 616d 653d 226c 3030 3139 3122 3e3c 2f61  ame=\"l00191\"></a\n-00006ee0: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n-00006ef0: 6e65 6e6f 223e 3c61 2063 6c61 7373 3d22  neno\"><a class=\"\n-00006f00: 6c69 6e65 2220 6872 6566 3d22 6130 3133  line\" href=\"a013\n-00006f10: 3431 2e68 746d 6c23 6134 6638 6535 3539  41.html#a4f8e559\n-00006f20: 6239 3362 6261 6632 3665 6130 6434 3062  b93bbaf26ea0d40b\n-00006f30: 3166 6132 6631 3934 6622 3e20 2031 3931  1fa2f194f\">  191\n-00006f40: 3c2f 613e 3c2f 7370 616e 3e20 2020 203c  </a></span>    <\n-00006f50: 7370 616e 2063 6c61 7373 3d22 6b65 7977  span class=\"keyw\n-00006f60: 6f72 6474 7970 6522 3e76 6f69 643c 2f73  ordtype\">void</s\n-00006f70: 7061 6e3e 203c 6120 636c 6173 733d 2263  pan> <a class=\"c\n-00006f80: 6f64 6520 686c 5f66 756e 6374 696f 6e22  ode hl_function\"\n-00006f90: 2068 7265 663d 2261 3031 3334 312e 6874   href=\"a01341.ht\n-00006fa0: 6d6c 2361 3466 3865 3535 3962 3933 6262  ml#a4f8e559b93bb\n-00006fb0: 6166 3236 6561 3064 3430 6231 6661 3266  af26ea0d40b1fa2f\n-00006fc0: 3139 3466 223e 6173 7369 676e 4372 6561  194f\">assignCrea\n-00006fd0: 7365 4c69 6d69 7454 616e 6765 6e74 4d61  seLimitTangentMa\n-00006fe0: 736b 733c 2f61 3e28 5645 5254 4558 203c  sks</a>(VERTEX <\n-00006ff0: 7370 616e 2063 6c61 7373 3d22 6b65 7977  span class=\"keyw\n-00007000: 6f72 6422 3e63 6f6e 7374 3c2f 7370 616e  ord\">const</span\n-00007010: 3e26 616d 703b 2076 6572 7465 782c 204d  >&amp; vertex, M\n-00007020: 4153 4b26 616d 703b 2074 616e 312c 204d  ASK&amp; tan1, M\n-00007030: 4153 4b26 616d 703b 2074 616e 322c 203c  ASK&amp; tan2, <\n-00007040: 7370 616e 2063 6c61 7373 3d22 6b65 7977  span class=\"keyw\n-00007050: 6f72 6474 7970 6522 3e69 6e74 3c2f 7370  ordtype\">int</sp\n-00007060: 616e 3e20 3c73 7061 6e20 636c 6173 733d  an> <span class=\n-00007070: 226b 6579 776f 7264 223e 636f 6e73 743c  \"keyword\">const<\n-00007080: 2f73 7061 6e3e 2063 7265 6173 6545 6e64  /span> creaseEnd\n-00007090: 735b 325d 2920 3c73 7061 6e20 636c 6173  s[2]) <span clas\n-000070a0: 733d 226b 6579 776f 7264 223e 636f 6e73  s=\"keyword\">cons\n-000070b0: 743c 2f73 7061 6e3e 3b3c 2f64 6976 3e0a  t</span>;</div>.\n-000070c0: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n-000070d0: 223e 3c61 2069 643d 226c 3030 3139 3222  \"><a id=\"l00192\"\n-000070e0: 206e 616d 653d 226c 3030 3139 3222 3e3c   name=\"l00192\"><\n-000070f0: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n-00007100: 6c69 6e65 6e6f 223e 2020 3139 323c 2f73  lineno\">  192</s\n-00007110: 7061 6e3e 2020 2020 3c73 7061 6e20 636c  pan>    <span cl\n-00007120: 6173 733d 226b 6579 776f 7264 223e 7465  ass=\"keyword\">te\n-00007130: 6d70 6c61 7465 3c2f 7370 616e 3e20 266c  mplate</span> &l\n-00007140: 743b 3c73 7061 6e20 636c 6173 733d 226b  t;<span class=\"k\n-00007150: 6579 776f 7264 223e 7479 7065 6e61 6d65  eyword\">typename\n-00007160: 3c2f 7370 616e 3e20 5645 5254 4558 2c20  </span> VERTEX, \n-00007170: 3c73 7061 6e20 636c 6173 733d 226b 6579  <span class=\"key\n-00007180: 776f 7264 223e 7479 7065 6e61 6d65 3c2f  word\">typename</\n-00007190: 7370 616e 3e20 4d41 534b 2667 743b 3c2f  span> MASK&gt;</\n-000071a0: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n-000071b0: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n-000071c0: 3031 3933 2220 6e61 6d65 3d22 6c30 3031  0193\" name=\"l001\n-000071d0: 3933 223e 3c2f 613e 3c73 7061 6e20 636c  93\"></a><span cl\n-000071e0: 6173 733d 226c 696e 656e 6f22 3e3c 6120  ass=\"lineno\"><a \n-000071f0: 636c 6173 733d 226c 696e 6522 2068 7265  class=\"line\" hre\n-00007200: 663d 2261 3031 3334 312e 6874 6d6c 2361  f=\"a01341.html#a\n-00007210: 3965 6535 6531 3934 6130 3038 3332 6135  9ee5e194a00832a5\n-00007220: 6266 6137 3663 6635 3864 6630 6263 3462  bfa76cf58df0bc4b\n-00007230: 223e 2020 3139 333c 2f61 3e3c 2f73 7061  \">  193</a></spa\n-00007240: 6e3e 2020 2020 3c73 7061 6e20 636c 6173  n>    <span clas\n-00007250: 733d 226b 6579 776f 7264 7479 7065 223e  s=\"keywordtype\">\n-00007260: 766f 6964 3c2f 7370 616e 3e20 3c61 2063  void</span> <a c\n-00007270: 6c61 7373 3d22 636f 6465 2068 6c5f 6675  lass=\"code hl_fu\n-00007280: 6e63 7469 6f6e 2220 6872 6566 3d22 6130  nction\" href=\"a0\n-00007290: 3133 3431 2e68 746d 6c23 6139 6565 3565  1341.html#a9ee5e\n-000072a0: 3139 3461 3030 3833 3261 3562 6661 3736  194a00832a5bfa76\n-000072b0: 6366 3538 6466 3062 6334 6222 3e61 7373  cf58df0bc4b\">ass\n-000072c0: 6967 6e53 6d6f 6f74 684c 696d 6974 5461  ignSmoothLimitTa\n-000072d0: 6e67 656e 744d 6173 6b73 3c2f 613e 2856  ngentMasks</a>(V\n-000072e0: 4552 5445 5820 3c73 7061 6e20 636c 6173  ERTEX <span clas\n-000072f0: 733d 226b 6579 776f 7264 223e 636f 6e73  s=\"keyword\">cons\n-00007300: 743c 2f73 7061 6e3e 2661 6d70 3b20 7665  t</span>&amp; ve\n-00007310: 7274 6578 2c20 4d41 534b 2661 6d70 3b20  rtex, MASK&amp; \n-00007320: 7461 6e31 2c20 4d41 534b 2661 6d70 3b20  tan1, MASK&amp; \n-00007330: 7461 6e32 2920 3c73 7061 6e20 636c 6173  tan2) <span clas\n-00007340: 733d 226b 6579 776f 7264 223e 636f 6e73  s=\"keyword\">cons\n-00007350: 743c 2f73 7061 6e3e 3b3c 2f64 6976 3e0a  t</span>;</div>.\n-00007360: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n-00007370: 223e 3c61 2069 643d 226c 3030 3139 3422  \"><a id=\"l00194\"\n-00007380: 206e 616d 653d 226c 3030 3139 3422 3e3c   name=\"l00194\"><\n-00007390: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n-000073a0: 6c69 6e65 6e6f 223e 2020 3139 343c 2f73  lineno\">  194</s\n-000073b0: 7061 6e3e 203c 2f64 6976 3e0a 3c64 6976  pan> </div>.<div\n-000073c0: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n-000073d0: 2069 643d 226c 3030 3139 3522 206e 616d   id=\"l00195\" nam\n-000073e0: 653d 226c 3030 3139 3522 3e3c 2f61 3e3c  e=\"l00195\"></a><\n-000073f0: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n-00007400: 6e6f 223e 2020 3139 353c 2f73 7061 6e3e  no\">  195</span>\n-00007410: 3c73 7061 6e20 636c 6173 733d 226b 6579  <span class=\"key\n-00007420: 776f 7264 223e 7072 6976 6174 653c 2f73  word\">private</s\n-00007430: 7061 6e3e 3a3c 2f64 6976 3e0a 3c64 6976  pan>:</div>.<div\n-00007440: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n-00007450: 2069 643d 226c 3030 3139 3622 206e 616d   id=\"l00196\" nam\n-00007460: 653d 226c 3030 3139 3622 3e3c 2f61 3e3c  e=\"l00196\"></a><\n-00007470: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n-00007480: 6e6f 223e 2020 3139 363c 2f73 7061 6e3e  no\">  196</span>\n-00007490: 2020 2020 3c61 2063 6c61 7373 3d22 636f      <a class=\"co\n-000074a0: 6465 2068 6c5f 636c 6173 7322 2068 7265  de hl_class\" hre\n-000074b0: 663d 2261 3031 3333 372e 6874 6d6c 223e  f=\"a01337.html\">\n-000074c0: 4f70 7469 6f6e 733c 2f61 3e20 5f6f 7074  Options</a> _opt\n-000074d0: 696f 6e73 3b3c 2f64 6976 3e0a 3c64 6976  ions;</div>.<div\n-000074e0: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n-000074f0: 2069 643d 226c 3030 3139 3722 206e 616d   id=\"l00197\" nam\n-00007500: 653d 226c 3030 3139 3722 3e3c 2f61 3e3c  e=\"l00197\"></a><\n-00007510: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n-00007520: 6e6f 223e 2020 3139 373c 2f73 7061 6e3e  no\">  197</span>\n-00007530: 203c 2f64 6976 3e0a 3c64 6976 2063 6c61   </div>.<div cla\n-00007540: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n-00007550: 226c 3030 3139 3822 206e 616d 653d 226c  \"l00198\" name=\"l\n-00007560: 3030 3139 3822 3e3c 2f61 3e3c 7370 616e  00198\"></a><span\n-00007570: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n-00007580: 2020 3139 383c 2f73 7061 6e3e 3c73 7061    198</span><spa\n-00007590: 6e20 636c 6173 733d 226b 6579 776f 7264  n class=\"keyword\n-000075a0: 223e 7072 6f74 6563 7465 643c 2f73 7061  \">protected</spa\n-000075b0: 6e3e 3a3c 2f64 6976 3e0a 3c64 6976 2063  n>:</div>.<div c\n-000075c0: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n-000075d0: 643d 226c 3030 3139 3922 206e 616d 653d  d=\"l00199\" name=\n-000075e0: 226c 3030 3139 3922 3e3c 2f61 3e3c 7370  \"l00199\"></a><sp\n-000075f0: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n-00007600: 223e 2020 3139 393c 2f73 7061 6e3e 203c  \">  199</span> <\n-00007610: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n-00007620: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n-00007630: 3030 3230 3022 206e 616d 653d 226c 3030  00200\" name=\"l00\n-00007640: 3230 3022 3e3c 2f61 3e3c 7370 616e 2063  200\"></a><span c\n-00007650: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n-00007660: 3230 303c 2f73 7061 6e3e 2020 2020 3c73  200</span>    <s\n-00007670: 7061 6e20 636c 6173 733d 2263 6f6d 6d65  pan class=\"comme\n-00007680: 6e74 223e 2f2f 3c2f 7370 616e 3e3c 2f64  nt\">//</span></d\n-00007690: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n-000076a0: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n-000076b0: 3230 3122 206e 616d 653d 226c 3030 3230  201\" name=\"l0020\n-000076c0: 3122 3e3c 2f61 3e3c 7370 616e 2063 6c61  1\"></a><span cla\n-000076d0: 7373 3d22 6c69 6e65 6e6f 223e 2020 3230  ss=\"lineno\">  20\n-000076e0: 313c 2f73 7061 6e3e 2020 2020 3c73 7061  1</span>    <spa\n-000076f0: 6e20 636c 6173 733d 2263 6f6d 6d65 6e74  n class=\"comment\n-00007700: 223e 2f2f 2020 496e 7465 726e 616c 2069  \">//  Internal i\n-00007710: 6d70 6c65 6d65 6e74 6174 696f 6e20 7375  mplementation su\n-00007720: 7070 6f72 743a 3c2f 7370 616e 3e3c 2f64  pport:</span></d\n-00007730: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n-00007740: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n-00007750: 3230 3222 206e 616d 653d 226c 3030 3230  202\" name=\"l0020\n-00007760: 3222 3e3c 2f61 3e3c 7370 616e 2063 6c61  2\"></a><span cla\n-00007770: 7373 3d22 6c69 6e65 6e6f 223e 2020 3230  ss=\"lineno\">  20\n-00007780: 323c 2f73 7061 6e3e 2020 2020 3c73 7061  2</span>    <spa\n-00007790: 6e20 636c 6173 733d 2263 6f6d 6d65 6e74  n class=\"comment\n-000077a0: 223e 2f2f 3c2f 7370 616e 3e3c 2f64 6976  \">//</span></div\n-000077b0: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n-000077c0: 6e65 223e 3c61 2069 643d 226c 3030 3230  ne\"><a id=\"l0020\n-000077d0: 3322 206e 616d 653d 226c 3030 3230 3322  3\" name=\"l00203\"\n-000077e0: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n-000077f0: 3d22 6c69 6e65 6e6f 223e 2020 3230 333c  =\"lineno\">  203<\n-00007800: 2f73 7061 6e3e 2020 2020 3c73 7061 6e20  /span>    <span \n-00007810: 636c 6173 733d 2263 6f6d 6d65 6e74 223e  class=\"comment\">\n-00007820: 2f2f 2020 5765 206e 6565 6420 6120 6c6f  //  We need a lo\n-00007830: 6361 6c20 2671 756f 743b 6d61 736b 2671  cal &quot;mask&q\n-00007840: 756f 743b 2063 6c61 7373 2074 6f20 6265  uot; class to be\n-00007850: 2064 6563 6c61 7265 6420 6c6f 6361 6c6c   declared locall\n-00007860: 7920 7769 7468 696e 2074 6865 2076 6572  y within the ver\n-00007870: 7465 782d 7665 7274 6578 206d 6173 6b20  tex-vertex mask \n-00007880: 7175 6572 793c 2f73 7061 6e3e 3c2f 6469  query</span></di\n-00007890: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n-000078a0: 696e 6522 3e3c 6120 6964 3d22 6c30 3032  ine\"><a id=\"l002\n-000078b0: 3034 2220 6e61 6d65 3d22 6c30 3032 3034  04\" name=\"l00204\n-000078c0: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n-000078d0: 733d 226c 696e 656e 6f22 3e20 2032 3034  s=\"lineno\">  204\n-000078e0: 3c2f 7370 616e 3e20 2020 203c 7370 616e  </span>    <span\n-000078f0: 2063 6c61 7373 3d22 636f 6d6d 656e 7422   class=\"comment\"\n-00007900: 3e2f 2f20 2074 6f20 686f 6c64 206f 6e65  >//  to hold one\n-00007910: 206f 6620 7468 6520 7477 6f20 706f 7373   of the two poss\n-00007920: 6962 6c65 206d 6173 6b73 2072 6571 7569  ible masks requi\n-00007930: 7265 6420 616e 6420 746f 2063 6f6d 6269  red and to combi\n-00007940: 6e65 2074 6865 206c 6f63 616c 206d 6173  ne the local mas\n-00007950: 6b20 7769 7468 2074 6865 206d 6173 6b3c  k with the mask<\n-00007960: 2f73 7061 6e3e 3c2f 6469 763e 0a3c 6469  /span></div>.<di\n-00007970: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n-00007980: 6120 6964 3d22 6c30 3032 3035 2220 6e61  a id=\"l00205\" na\n-00007990: 6d65 3d22 6c30 3032 3035 223e 3c2f 613e  me=\"l00205\"></a>\n-000079a0: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n-000079b0: 656e 6f22 3e20 2032 3035 3c2f 7370 616e  eno\">  205</span\n-000079c0: 3e20 2020 203c 7370 616e 2063 6c61 7373  >    <span class\n-000079d0: 3d22 636f 6d6d 656e 7422 3e2f 2f20 2074  =\"comment\">//  t\n-000079e0: 6865 2063 616c 6c65 7220 7072 6f76 6964  he caller provid\n-000079f0: 6573 2e20 2049 7420 6861 7320 6265 656e  es.  It has been\n-00007a00: 2070 6172 616d 6574 6572 697a 6564 2062   parameterized b\n-00007a10: 7920 266c 743b 5745 4947 4854 2667 743b  y &lt;WEIGHT&gt;\n-00007a20: 2073 6f20 7468 6174 2061 2076 6572 7369   so that a versi\n-00007a30: 6f6e 2063 6f6d 7061 7469 626c 653c 2f73  on compatible</s\n-00007a40: 7061 6e3e 3c2f 6469 763e 0a3c 6469 7620  pan></div>.<div \n-00007a50: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n-00007a60: 6964 3d22 6c30 3032 3036 2220 6e61 6d65  id=\"l00206\" name\n-00007a70: 3d22 6c30 3032 3036 223e 3c2f 613e 3c73  =\"l00206\"></a><s\n-00007a80: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n-00007a90: 6f22 3e20 2032 3036 3c2f 7370 616e 3e20  o\">  206</span> \n-00007aa0: 2020 203c 7370 616e 2063 6c61 7373 3d22     <span class=\"\n-00007ab0: 636f 6d6d 656e 7422 3e2f 2f20 2077 6974  comment\">//  wit\n-00007ac0: 6820 7468 6520 6361 6c6c 6572 2623 3339  h the caller&#39\n-00007ad0: 3b73 206d 6173 6b20 636c 6173 7320 6973  ;s mask class is\n-00007ae0: 2063 7265 6174 6564 2e3c 2f73 7061 6e3e   created.</span>\n-00007af0: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n-00007b00: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n-00007b10: 6c30 3032 3037 2220 6e61 6d65 3d22 6c30  l00207\" name=\"l0\n-00007b20: 3032 3037 223e 3c2f 613e 3c73 7061 6e20  0207\"></a><span \n-00007b30: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n-00007b40: 2032 3037 3c2f 7370 616e 3e20 2020 203c   207</span>    <\n-00007b50: 7370 616e 2063 6c61 7373 3d22 636f 6d6d  span class=\"comm\n-00007b60: 656e 7422 3e2f 2f3c 2f73 7061 6e3e 3c2f  ent\">//</span></\n-00007b70: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n-00007b80: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n-00007b90: 3032 3038 2220 6e61 6d65 3d22 6c30 3032  0208\" name=\"l002\n-00007ba0: 3038 223e 3c2f 613e 3c73 7061 6e20 636c  08\"></a><span cl\n-00007bb0: 6173 733d 226c 696e 656e 6f22 3e20 2032  ass=\"lineno\">  2\n-00007bc0: 3038 3c2f 7370 616e 3e20 2020 203c 7370  08</span>    <sp\n-00007bd0: 616e 2063 6c61 7373 3d22 6b65 7977 6f72  an class=\"keywor\n-00007be0: 6422 3e74 656d 706c 6174 653c 2f73 7061  d\">template</spa\n-00007bf0: 6e3e 2026 6c74 3b3c 7370 616e 2063 6c61  n> &lt;<span cla\n-00007c00: 7373 3d22 6b65 7977 6f72 6422 3e74 7970  ss=\"keyword\">typ\n-00007c10: 656e 616d 653c 2f73 7061 6e3e 2057 4549  ename</span> WEI\n-00007c20: 4748 5426 6774 3b3c 2f64 6976 3e0a 3c64  GHT&gt;</div>.<d\n-00007c30: 6976 2063 6c61 7373 3d22 666f 6c64 6f70  iv class=\"foldop\n-00007c40: 656e 2220 6964 3d22 666f 6c64 6f70 656e  en\" id=\"foldopen\n-00007c50: 3030 3230 3922 2064 6174 612d 7374 6172  00209\" data-star\n-00007c60: 743d 227b 2220 6461 7461 2d65 6e64 3d22  t=\"{\" data-end=\"\n-00007c70: 7d3b 223e 0a3c 6469 7620 636c 6173 733d  };\">.<div class=\n-00007c80: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n-00007c90: 3032 3039 2220 6e61 6d65 3d22 6c30 3032  0209\" name=\"l002\n-00007ca0: 3039 223e 3c2f 613e 3c73 7061 6e20 636c  09\"></a><span cl\n-00007cb0: 6173 733d 226c 696e 656e 6f22 3e3c 6120  ass=\"lineno\"><a \n-00007cc0: 636c 6173 733d 226c 696e 6522 2068 7265  class=\"line\" hre\n-00007cd0: 663d 2261 3031 3334 352e 6874 6d6c 223e  f=\"a01345.html\">\n-00007ce0: 2020 3230 393c 2f61 3e3c 2f73 7061 6e3e    209</a></span>\n-00007cf0: 2020 2020 3c73 7061 6e20 636c 6173 733d      <span class=\n-00007d00: 226b 6579 776f 7264 223e 636c 6173 7320  \"keyword\">class \n-00007d10: 3c2f 7370 616e 3e3c 6120 636c 6173 733d  </span><a class=\n-00007d20: 2263 6f64 6520 686c 5f63 6c61 7373 2220  \"code hl_class\" \n-00007d30: 6872 6566 3d22 6130 3133 3435 2e68 746d  href=\"a01345.htm\n-00007d40: 6c22 3e4c 6f63 616c 4d61 736b 3c2f 613e  l\">LocalMask</a>\n-00007d50: 207b 3c2f 6469 763e 0a3c 6469 7620 636c   {</div>.<div cl\n-00007d60: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n-00007d70: 3d22 6c30 3032 3130 2220 6e61 6d65 3d22  =\"l00210\" name=\"\n-00007d80: 6c30 3032 3130 223e 3c2f 613e 3c73 7061  l00210\"></a><spa\n-00007d90: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n-00007da0: 3e20 2032 3130 3c2f 7370 616e 3e20 3c2f  >  210</span> </\n-00007db0: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n-00007dc0: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n-00007dd0: 3032 3131 2220 6e61 6d65 3d22 6c30 3032  0211\" name=\"l002\n-00007de0: 3131 223e 3c2f 613e 3c73 7061 6e20 636c  11\"></a><span cl\n-00007df0: 6173 733d 226c 696e 656e 6f22 3e20 2032  ass=\"lineno\">  2\n-00007e00: 3131 3c2f 7370 616e 3e20 2020 203c 7370  11</span>    <sp\n-00007e10: 616e 2063 6c61 7373 3d22 6b65 7977 6f72  an class=\"keywor\n-00007e20: 6422 3e70 7562 6c69 633c 2f73 7061 6e3e  d\">public</span>\n-00007e30: 3a3c 2f64 6976 3e0a 3c64 6976 2063 6c61  :</div>.<div cla\n-00007e40: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n-00007e50: 226c 3030 3231 3222 206e 616d 653d 226c  \"l00212\" name=\"l\n-00007e60: 3030 3231 3222 3e3c 2f61 3e3c 7370 616e  00212\"></a><span\n-00007e70: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n-00007e80: 3c61 2063 6c61 7373 3d22 6c69 6e65 2220  <a class=\"line\" \n-00007e90: 6872 6566 3d22 6130 3133 3435 2e68 746d  href=\"a01345.htm\n-00007ea0: 6c23 6131 3733 6539 3865 3064 3162 3364  l#a173e98e0d1b3d\n-00007eb0: 3135 6635 6333 6164 3433 3664 3066 6564  15f5c3ad436d0fed\n-00007ec0: 3430 3122 3e20 2032 3132 3c2f 613e 3c2f  401\">  212</a></\n-00007ed0: 7370 616e 3e20 2020 2020 2020 203c 7370  span>        <sp\n-00007ee0: 616e 2063 6c61 7373 3d22 6b65 7977 6f72  an class=\"keywor\n-00007ef0: 6422 3e74 7970 6564 6566 3c2f 7370 616e  d\">typedef</span\n-00007f00: 3e20 5745 4947 4854 203c 6120 636c 6173  > WEIGHT <a clas\n-00007f10: 733d 2263 6f64 6520 686c 5f74 7970 6564  s=\"code hl_typed\n-00007f20: 6566 2220 6872 6566 3d22 6130 3133 3435  ef\" href=\"a01345\n-00007f30: 2e68 746d 6c23 6131 3733 6539 3865 3064  .html#a173e98e0d\n-00007f40: 3162 3364 3135 6635 6333 6164 3433 3664  1b3d15f5c3ad436d\n-00007f50: 3066 6564 3430 3122 3e57 6569 6768 743c  0fed401\">Weight<\n-00007f60: 2f61 3e3b 3c2f 6469 763e 0a3c 6469 7620  /a>;</div>.<div \n-00007f70: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n-00007f80: 6964 3d22 6c30 3032 3133 2220 6e61 6d65  id=\"l00213\" name\n-00007f90: 3d22 6c30 3032 3133 223e 3c2f 613e 3c73  =\"l00213\"></a><s\n-00007fa0: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n-00007fb0: 6f22 3e20 2032 3133 3c2f 7370 616e 3e20  o\">  213</span> \n-00007fc0: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n-00007fd0: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n-00007fe0: 6c30 3032 3134 2220 6e61 6d65 3d22 6c30  l00214\" name=\"l0\n-00007ff0: 3032 3134 223e 3c2f 613e 3c73 7061 6e20  0214\"></a><span \n-00008000: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n-00008010: 2032 3134 3c2f 7370 616e 3e20 2020 203c   214</span>    <\n-00008020: 7370 616e 2063 6c61 7373 3d22 6b65 7977  span class=\"keyw\n-00008030: 6f72 6422 3e70 7562 6c69 633c 2f73 7061  ord\">public</spa\n-00008040: 6e3e 3a3c 2f64 6976 3e0a 3c64 6976 2063  n>:</div>.<div c\n-00008050: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n-00008060: 643d 226c 3030 3231 3522 206e 616d 653d  d=\"l00215\" name=\n-00008070: 226c 3030 3231 3522 3e3c 2f61 3e3c 7370  \"l00215\"></a><sp\n-00008080: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n-00008090: 223e 3c61 2063 6c61 7373 3d22 6c69 6e65  \"><a class=\"line\n-000080a0: 2220 6872 6566 3d22 6130 3133 3435 2e68  \" href=\"a01345.h\n-000080b0: 746d 6c23 6163 3462 3463 3535 6662 3234  tml#ac4b4c55fb24\n-000080c0: 6461 3935 6631 3534 6634 6139 6635 3137  da95f154f4a9f517\n-000080d0: 6462 3037 3922 3e20 2032 3135 3c2f 613e  db079\">  215</a>\n-000080e0: 3c2f 7370 616e 3e20 2020 2020 2020 203c  </span>        <\n-000080f0: 6120 636c 6173 733d 2263 6f64 6520 686c  a class=\"code hl\n-00008100: 5f66 756e 6374 696f 6e22 2068 7265 663d  _function\" href=\n-00008110: 2261 3031 3334 352e 6874 6d6c 2361 6334  \"a01345.html#ac4\n-00008120: 6234 6335 3566 6232 3464 6139 3566 3135  b4c55fb24da95f15\n-00008130: 3466 3461 3966 3531 3764 6230 3739 223e  4f4a9f517db079\">\n-00008140: 4c6f 6361 6c4d 6173 6b3c 2f61 3e28 3c61  LocalMask</a>(<a\n-00008150: 2063 6c61 7373 3d22 636f 6465 2068 6c5f   class=\"code hl_\n-00008160: 7479 7065 6465 6622 2068 7265 663d 2261  typedef\" href=\"a\n-00008170: 3031 3334 352e 6874 6d6c 2361 3137 3365  01345.html#a173e\n-00008180: 3938 6530 6431 6233 6431 3566 3563 3361  98e0d1b3d15f5c3a\n-00008190: 6434 3336 6430 6665 6434 3031 223e 5765  d436d0fed401\">We\n-000081a0: 6967 6874 3c2f 613e 2a20 762c 203c 6120  ight</a>* v, <a \n-000081b0: 636c 6173 733d 2263 6f64 6520 686c 5f74  class=\"code hl_t\n-000081c0: 7970 6564 6566 2220 6872 6566 3d22 6130  ypedef\" href=\"a0\n-000081d0: 3133 3435 2e68 746d 6c23 6131 3733 6539  1345.html#a173e9\n-000081e0: 3865 3064 3162 3364 3135 6635 6333 6164  8e0d1b3d15f5c3ad\n-000081f0: 3433 3664 3066 6564 3430 3122 3e57 6569  436d0fed401\">Wei\n-00008200: 6768 743c 2f61 3e2a 2065 2c20 3c61 2063  ght</a>* e, <a c\n-00008210: 6c61 7373 3d22 636f 6465 2068 6c5f 7479  lass=\"code hl_ty\n-00008220: 7065 6465 6622 2068 7265 663d 2261 3031  pedef\" href=\"a01\n-00008230: 3334 352e 6874 6d6c 2361 3137 3365 3938  345.html#a173e98\n-00008240: 6530 6431 6233 6431 3566 3563 3361 6434  e0d1b3d15f5c3ad4\n-00008250: 3336 6430 6665 6434 3031 223e 5765 6967  36d0fed401\">Weig\n-00008260: 6874 3c2f 613e 2a20 6629 203a 205f 7657  ht</a>* f) : _vW\n-00008270: 6569 6768 7473 2876 292c 205f 6557 6569  eights(v), _eWei\n-00008280: 6768 7473 2865 292c 205f 6657 6569 6768  ghts(e), _fWeigh\n-00008290: 7473 2866 2920 7b20 7d3c 2f64 6976 3e0a  ts(f) { }</div>.\n-000082a0: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n-000082b0: 223e 3c61 2069 643d 226c 3030 3231 3622  \"><a id=\"l00216\"\n-000082c0: 206e 616d 653d 226c 3030 3231 3622 3e3c   name=\"l00216\"><\n-000082d0: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n-000082e0: 6c69 6e65 6e6f 223e 3c61 2063 6c61 7373  lineno\"><a class\n-000082f0: 3d22 6c69 6e65 2220 6872 6566 3d22 6130  =\"line\" href=\"a0\n-00008300: 3133 3435 2e68 746d 6c23 6166 3534 3239  1345.html#af5429\n-00008310: 3337 6461 3630 3530 3334 3263 6236 6439  37da6050342cb6d9\n-00008320: 6330 3432 6534 6238 3935 3222 3e20 2032  c042e4b8952\">  2\n-00008330: 3136 3c2f 613e 3c2f 7370 616e 3e20 2020  16</a></span>   \n-00008340: 2020 2020 203c 6120 636c 6173 733d 2263       <a class=\"c\n-00008350: 6f64 6520 686c 5f66 756e 6374 696f 6e22  ode hl_function\"\n-00008360: 2068 7265 663d 2261 3031 3334 352e 6874   href=\"a01345.ht\n-00008370: 6d6c 2361 6635 3432 3933 3764 6136 3035  ml#af542937da605\n-00008380: 3033 3432 6362 3664 3963 3034 3265 3462  0342cb6d9c042e4b\n-00008390: 3839 3532 223e 7e4c 6f63 616c 4d61 736b  8952\">~LocalMask\n-000083a0: 3c2f 613e 2829 207b 207d 3c2f 6469 763e  </a>() { }</div>\n-000083b0: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n-000083c0: 6522 3e3c 6120 6964 3d22 6c30 3032 3137  e\"><a id=\"l00217\n-000083d0: 2220 6e61 6d65 3d22 6c30 3032 3137 223e  \" name=\"l00217\">\n-000083e0: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n-000083f0: 226c 696e 656e 6f22 3e20 2032 3137 3c2f  \"lineno\">  217</\n-00008400: 7370 616e 3e20 3c2f 6469 763e 0a3c 6469  span> </div>.<di\n-00008410: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n-00008420: 6120 6964 3d22 6c30 3032 3138 2220 6e61  a id=\"l00218\" na\n-00008430: 6d65 3d22 6c30 3032 3138 223e 3c2f 613e  me=\"l00218\"></a>\n-00008440: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n-00008450: 656e 6f22 3e20 2032 3138 3c2f 7370 616e  eno\">  218</span\n-00008460: 3e20 2020 203c 7370 616e 2063 6c61 7373  >    <span class\n-00008470: 3d22 6b65 7977 6f72 6422 3e70 7562 6c69  =\"keyword\">publi\n-00008480: 633c 2f73 7061 6e3e 3a3c 2f64 6976 3e0a  c</span>:</div>.\n-00008490: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n-000084a0: 223e 3c61 2069 643d 226c 3030 3231 3922  \"><a id=\"l00219\"\n-000084b0: 206e 616d 653d 226c 3030 3231 3922 3e3c   name=\"l00219\"><\n-000084c0: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n-000084d0: 6c69 6e65 6e6f 223e 2020 3231 393c 2f73  lineno\">  219</s\n-000084e0: 7061 6e3e 203c 2f64 6976 3e0a 3c64 6976  pan> </div>.<div\n-000084f0: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n-00008500: 2069 643d 226c 3030 3232 3022 206e 616d   id=\"l00220\" nam\n-00008510: 653d 226c 3030 3232 3022 3e3c 2f61 3e3c  e=\"l00220\"></a><\n-00008520: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n-00008530: 6e6f 223e 2020 3232 303c 2f73 7061 6e3e  no\">  220</span>\n-00008540: 2020 2020 2020 2020 3c73 7061 6e20 636c          <span cl\n-00008550: 6173 733d 2263 6f6d 6d65 6e74 223e 2f2f  ass=\"comment\">//\n-00008560: 3c2f 7370 616e 3e3c 2f64 6976 3e0a 3c64  </span></div>.<d\n-00008570: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n-00008580: 3c61 2069 643d 226c 3030 3232 3122 206e  <a id=\"l00221\" n\n-00008590: 616d 653d 226c 3030 3232 3122 3e3c 2f61  ame=\"l00221\"></a\n-000085a0: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n-000085b0: 6e65 6e6f 223e 2020 3232 313c 2f73 7061  neno\">  221</spa\n-000085c0: 6e3e 2020 2020 2020 2020 3c73 7061 6e20  n>        <span \n-000085d0: 636c 6173 733d 2263 6f6d 6d65 6e74 223e  class=\"comment\">\n-000085e0: 2f2f 2020 4d65 7468 6f64 7320 7265 7175  //  Methods requ\n-000085f0: 6972 6564 2066 6f72 2067 656e 6572 616c  ired for general\n-00008600: 206d 6173 6b20 6173 7369 676e 6d65 6e74   mask assignment\n-00008610: 7320 616e 6420 7175 6572 6965 733a 3c2f  s and queries:</\n-00008620: 7370 616e 3e3c 2f64 6976 3e0a 3c64 6976  span></div>.<div\n-00008630: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n-00008640: 2069 643d 226c 3030 3232 3222 206e 616d   id=\"l00222\" nam\n-00008650: 653d 226c 3030 3232 3222 3e3c 2f61 3e3c  e=\"l00222\"></a><\n-00008660: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n-00008670: 6e6f 223e 2020 3232 323c 2f73 7061 6e3e  no\">  222</span>\n-00008680: 2020 2020 2020 2020 3c73 7061 6e20 636c          <span cl\n-00008690: 6173 733d 2263 6f6d 6d65 6e74 223e 2f2f  ass=\"comment\">//\n-000086a0: 3c2f 7370 616e 3e3c 2f64 6976 3e0a 3c64  </span></div>.<d\n-000086b0: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n-000086c0: 3c61 2069 643d 226c 3030 3232 3322 206e  <a id=\"l00223\" n\n-000086d0: 616d 653d 226c 3030 3232 3322 3e3c 2f61  ame=\"l00223\"></a\n-000086e0: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n-000086f0: 6e65 6e6f 223e 3c61 2063 6c61 7373 3d22  neno\"><a class=\"\n-00008700: 6c69 6e65 2220 6872 6566 3d22 6130 3133  line\" href=\"a013\n-00008710: 3435 2e68 746d 6c23 6136 3036 6439 3334  45.html#a606d934\n-00008720: 6336 6433 3062 3363 3861 6536 3137 3030  c6d30b3c8ae61700\n-00008730: 3065 6238 6335 6139 6222 3e20 2032 3233  0eb8c5a9b\">  223\n-00008740: 3c2f 613e 3c2f 7370 616e 3e20 2020 2020  </a></span>     \n-00008750: 2020 203c 7370 616e 2063 6c61 7373 3d22     <span class=\"\n-00008760: 6b65 7977 6f72 6474 7970 6522 3e69 6e74  keywordtype\">int\n-00008770: 3c2f 7370 616e 3e20 3c61 2063 6c61 7373  </span> <a class\n-00008780: 3d22 636f 6465 2068 6c5f 6675 6e63 7469  =\"code hl_functi\n-00008790: 6f6e 2220 6872 6566 3d22 6130 3133 3435  on\" href=\"a01345\n-000087a0: 2e68 746d 6c23 6136 3036 6439 3334 6336  .html#a606d934c6\n-000087b0: 6433 3062 3363 3861 6536 3137 3030 3065  d30b3c8ae617000e\n-000087c0: 6238 6335 6139 6222 3e47 6574 4e75 6d56  b8c5a9b\">GetNumV\n-000087d0: 6572 7465 7857 6569 6768 7473 3c2f 613e  ertexWeights</a>\n-000087e0: 2829 3c73 7061 6e20 636c 6173 733d 226b  ()<span class=\"k\n-000087f0: 6579 776f 7264 223e 2063 6f6e 7374 203c  eyword\"> const <\n-00008800: 2f73 7061 6e3e 7b20 3c73 7061 6e20 636c  /span>{ <span cl\n-00008810: 6173 733d 226b 6579 776f 7264 666c 6f77  ass=\"keywordflow\n-00008820: 223e 7265 7475 726e 3c2f 7370 616e 3e20  \">return</span> \n-00008830: 5f76 436f 756e 743b 207d 3c2f 6469 763e  _vCount; }</div>\n-00008840: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n-00008850: 6522 3e3c 6120 6964 3d22 6c30 3032 3234  e\"><a id=\"l00224\n-00008860: 2220 6e61 6d65 3d22 6c30 3032 3234 223e  \" name=\"l00224\">\n-00008870: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n-00008880: 226c 696e 656e 6f22 3e3c 6120 636c 6173  \"lineno\"><a clas\n-00008890: 733d 226c 696e 6522 2068 7265 663d 2261  s=\"line\" href=\"a\n-000088a0: 3031 3334 352e 6874 6d6c 2361 3930 6530  01345.html#a90e0\n-000088b0: 6432 3938 3166 3239 6263 3762 6264 6662  d2981f29bc7bbdfb\n-000088c0: 6162 6138 6462 3633 3237 3531 223e 2020  aba8db632751\">  \n-000088d0: 3232 343c 2f61 3e3c 2f73 7061 6e3e 2020  224</a></span>  \n-000088e0: 2020 2020 2020 3c73 7061 6e20 636c 6173        <span clas\n-000088f0: 733d 226b 6579 776f 7264 7479 7065 223e  s=\"keywordtype\">\n-00008900: 696e 743c 2f73 7061 6e3e 203c 6120 636c  int</span> <a cl\n-00008910: 6173 733d 2263 6f64 6520 686c 5f66 756e  ass=\"code hl_fun\n-00008920: 6374 696f 6e22 2068 7265 663d 2261 3031  ction\" href=\"a01\n-00008930: 3334 352e 6874 6d6c 2361 3930 6530 6432  345.html#a90e0d2\n-00008940: 3938 3166 3239 6263 3762 6264 6662 6162  981f29bc7bbdfbab\n-00008950: 6138 6462 3633 3237 3531 223e 4765 744e  a8db632751\">GetN\n-00008960: 756d 4564 6765 5765 6967 6874 733c 2f61  umEdgeWeights</a\n-00008970: 3e28 293c 7370 616e 2063 6c61 7373 3d22  >()<span class=\"\n-00008980: 6b65 7977 6f72 6422 3e20 2020 636f 6e73  keyword\">   cons\n-00008990: 7420 3c2f 7370 616e 3e7b 203c 7370 616e  t </span>{ <span\n-000089a0: 2063 6c61 7373 3d22 6b65 7977 6f72 6466   class=\"keywordf\n-000089b0: 6c6f 7722 3e72 6574 7572 6e3c 2f73 7061  low\">return</spa\n-000089c0: 6e3e 205f 6543 6f75 6e74 3b20 7d3c 2f64  n> _eCount; }</d\n-000089d0: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n-000089e0: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n-000089f0: 3232 3522 206e 616d 653d 226c 3030 3232  225\" name=\"l0022\n-00008a00: 3522 3e3c 2f61 3e3c 7370 616e 2063 6c61  5\"></a><span cla\n-00008a10: 7373 3d22 6c69 6e65 6e6f 223e 3c61 2063  ss=\"lineno\"><a c\n-00008a20: 6c61 7373 3d22 6c69 6e65 2220 6872 6566  lass=\"line\" href\n-00008a30: 3d22 6130 3133 3435 2e68 746d 6c23 6139  =\"a01345.html#a9\n-00008a40: 3366 3537 6535 3333 3733 3931 6332 3064  3f57e5337391c20d\n-00008a50: 3436 6465 6664 6233 6161 3263 3166 6522  46defdb3aa2c1fe\"\n-00008a60: 3e20 2032 3235 3c2f 613e 3c2f 7370 616e  >  225</a></span\n-00008a70: 3e20 2020 2020 2020 203c 7370 616e 2063  >        <span c\n-00008a80: 6c61 7373 3d22 6b65 7977 6f72 6474 7970  lass=\"keywordtyp\n-00008a90: 6522 3e69 6e74 3c2f 7370 616e 3e20 3c61  e\">int</span> <a\n-00008aa0: 2063 6c61 7373 3d22 636f 6465 2068 6c5f   class=\"code hl_\n-00008ab0: 6675 6e63 7469 6f6e 2220 6872 6566 3d22  function\" href=\"\n-00008ac0: 6130 3133 3435 2e68 746d 6c23 6139 3366  a01345.html#a93f\n-00008ad0: 3537 6535 3333 3733 3931 6332 3064 3436  57e5337391c20d46\n-00008ae0: 6465 6664 6233 6161 3263 3166 6522 3e47  defdb3aa2c1fe\">G\n-00008af0: 6574 4e75 6d46 6163 6557 6569 6768 7473  etNumFaceWeights\n-00008b00: 3c2f 613e 2829 3c73 7061 6e20 636c 6173  </a>()<span clas\n-00008b10: 733d 226b 6579 776f 7264 223e 2020 2063  s=\"keyword\">   c\n-00008b20: 6f6e 7374 203c 2f73 7061 6e3e 7b20 3c73  onst </span>{ <s\n-00008b30: 7061 6e20 636c 6173 733d 226b 6579 776f  pan class=\"keywo\n-00008b40: 7264 666c 6f77 223e 7265 7475 726e 3c2f  rdflow\">return</\n-00008b50: 7370 616e 3e20 5f66 436f 756e 743b 207d  span> _fCount; }\n-00008b60: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n-00008b70: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n-00008b80: 6c30 3032 3236 2220 6e61 6d65 3d22 6c30  l00226\" name=\"l0\n-00008b90: 3032 3236 223e 3c2f 613e 3c73 7061 6e20  0226\"></a><span \n-00008ba0: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n-00008bb0: 2032 3236 3c2f 7370 616e 3e20 3c2f 6469   226</span> </di\n-00008bc0: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n-00008bd0: 696e 6522 3e3c 6120 6964 3d22 6c30 3032  ine\"><a id=\"l002\n-00008be0: 3237 2220 6e61 6d65 3d22 6c30 3032 3237  27\" name=\"l00227\n-00008bf0: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n-00008c00: 733d 226c 696e 656e 6f22 3e3c 6120 636c  s=\"lineno\"><a cl\n-00008c10: 6173 733d 226c 696e 6522 2068 7265 663d  ass=\"line\" href=\n-00008c20: 2261 3031 3334 352e 6874 6d6c 2361 3965  \"a01345.html#a9e\n-00008c30: 6364 3632 3764 6533 6130 6361 3565 6232  cd627de3a0ca5eb2\n-00008c40: 6164 6265 6438 3465 3339 6236 3831 223e  adbed84e39b681\">\n-00008c50: 2020 3232 373c 2f61 3e3c 2f73 7061 6e3e    227</a></span>\n-00008c60: 2020 2020 2020 2020 3c73 7061 6e20 636c          <span cl\n-00008c70: 6173 733d 226b 6579 776f 7264 7479 7065  ass=\"keywordtype\n-00008c80: 223e 766f 6964 3c2f 7370 616e 3e20 3c61  \">void</span> <a\n-00008c90: 2063 6c61 7373 3d22 636f 6465 2068 6c5f   class=\"code hl_\n-00008ca0: 6675 6e63 7469 6f6e 2220 6872 6566 3d22  function\" href=\"\n-00008cb0: 6130 3133 3435 2e68 746d 6c23 6139 6563  a01345.html#a9ec\n-00008cc0: 6436 3237 6465 3361 3063 6135 6562 3261  d627de3a0ca5eb2a\n-00008cd0: 6462 6564 3834 6533 3962 3638 3122 3e53  dbed84e39b681\">S\n-00008ce0: 6574 4e75 6d56 6572 7465 7857 6569 6768  etNumVertexWeigh\n-00008cf0: 7473 3c2f 613e 283c 7370 616e 2063 6c61  ts</a>(<span cla\n-00008d00: 7373 3d22 6b65 7977 6f72 6474 7970 6522  ss=\"keywordtype\"\n-00008d10: 3e69 6e74 3c2f 7370 616e 3e20 636f 756e  >int</span> coun\n-00008d20: 7429 207b 205f 7643 6f75 6e74 203d 2063  t) { _vCount = c\n-00008d30: 6f75 6e74 3b20 7d3c 2f64 6976 3e0a 3c64  ount; }</div>.<d\n-00008d40: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n-00008d50: 3c61 2069 643d 226c 3030 3232 3822 206e  <a id=\"l00228\" n\n-00008d60: 616d 653d 226c 3030 3232 3822 3e3c 2f61  ame=\"l00228\"></a\n-00008d70: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n-00008d80: 6e65 6e6f 223e 3c61 2063 6c61 7373 3d22  neno\"><a class=\"\n-00008d90: 6c69 6e65 2220 6872 6566 3d22 6130 3133  line\" href=\"a013\n-00008da0: 3435 2e68 746d 6c23 6134 3532 3266 3161  45.html#a4522f1a\n-00008db0: 6364 3566 3934 6130 3662 6232 6635 3035  cd5f94a06bb2f505\n-00008dc0: 3532 6432 3637 3062 3722 3e20 2032 3238  52d2670b7\">  228\n-00008dd0: 3c2f 613e 3c2f 7370 616e 3e20 2020 2020  </a></span>     \n-00008de0: 2020 203c 7370 616e 2063 6c61 7373 3d22     <span class=\"\n-00008df0: 6b65 7977 6f72 6474 7970 6522 3e76 6f69  keywordtype\">voi\n-00008e00: 643c 2f73 7061 6e3e 203c 6120 636c 6173  d</span> <a clas\n-00008e10: 733d 2263 6f64 6520 686c 5f66 756e 6374  s=\"code hl_funct\n-00008e20: 696f 6e22 2068 7265 663d 2261 3031 3334  ion\" href=\"a0134\n-00008e30: 352e 6874 6d6c 2361 3435 3232 6631 6163  5.html#a4522f1ac\n-00008e40: 6435 6639 3461 3036 6262 3266 3530 3535  d5f94a06bb2f5055\n-00008e50: 3264 3236 3730 6237 223e 5365 744e 756d  2d2670b7\">SetNum\n-00008e60: 4564 6765 5765 6967 6874 733c 2f61 3e28  EdgeWeights</a>(\n-00008e70: 2020 3c73 7061 6e20 636c 6173 733d 226b    <span class=\"k\n-00008e80: 6579 776f 7264 7479 7065 223e 696e 743c  eywordtype\">int<\n-00008e90: 2f73 7061 6e3e 2063 6f75 6e74 2920 7b20  /span> count) { \n-00008ea0: 5f65 436f 756e 7420 3d20 636f 756e 743b  _eCount = count;\n-00008eb0: 207d 3c2f 6469 763e 0a3c 6469 7620 636c   }</div>.<div cl\n-00008ec0: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n-00008ed0: 3d22 6c30 3032 3239 2220 6e61 6d65 3d22  =\"l00229\" name=\"\n-00008ee0: 6c30 3032 3239 223e 3c2f 613e 3c73 7061  l00229\"></a><spa\n-00008ef0: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n-00008f00: 3e3c 6120 636c 6173 733d 226c 696e 6522  ><a class=\"line\"\n-00008f10: 2068 7265 663d 2261 3031 3334 352e 6874   href=\"a01345.ht\n-00008f20: 6d6c 2361 3631 6539 3333 6639 6131 3238  ml#a61e933f9a128\n-00008f30: 6362 3136 6433 3136 3131 6664 3936 6563  cb16d31611fd96ec\n-00008f40: 6431 3533 223e 2020 3232 393c 2f61 3e3c  d153\">  229</a><\n-00008f50: 2f73 7061 6e3e 2020 2020 2020 2020 3c73  /span>        <s\n-00008f60: 7061 6e20 636c 6173 733d 226b 6579 776f  pan class=\"keywo\n-00008f70: 7264 7479 7065 223e 766f 6964 3c2f 7370  rdtype\">void</sp\n-00008f80: 616e 3e20 3c61 2063 6c61 7373 3d22 636f  an> <a class=\"co\n-00008f90: 6465 2068 6c5f 6675 6e63 7469 6f6e 2220  de hl_function\" \n-00008fa0: 6872 6566 3d22 6130 3133 3435 2e68 746d  href=\"a01345.htm\n-00008fb0: 6c23 6136 3165 3933 3366 3961 3132 3863  l#a61e933f9a128c\n-00008fc0: 6231 3664 3331 3631 3166 6439 3665 6364  b16d31611fd96ecd\n-00008fd0: 3135 3322 3e53 6574 4e75 6d46 6163 6557  153\">SetNumFaceW\n-00008fe0: 6569 6768 7473 3c2f 613e 2820 203c 7370  eights</a>(  <sp\n-00008ff0: 616e 2063 6c61 7373 3d22 6b65 7977 6f72  an class=\"keywor\n-00009000: 6474 7970 6522 3e69 6e74 3c2f 7370 616e  dtype\">int</span\n-00009010: 3e20 636f 756e 7429 207b 205f 6643 6f75  > count) { _fCou\n-00009020: 6e74 203d 2063 6f75 6e74 3b20 7d3c 2f64  nt = count; }</d\n-00009030: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n-00009040: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n-00009050: 3233 3022 206e 616d 653d 226c 3030 3233  230\" name=\"l0023\n-00009060: 3022 3e3c 2f61 3e3c 7370 616e 2063 6c61  0\"></a><span cla\n-00009070: 7373 3d22 6c69 6e65 6e6f 223e 2020 3233  ss=\"lineno\">  23\n-00009080: 303c 2f73 7061 6e3e 203c 2f64 6976 3e0a  0</span> </div>.\n-00009090: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n-000090a0: 223e 3c61 2069 643d 226c 3030 3233 3122  \"><a id=\"l00231\"\n-000090b0: 206e 616d 653d 226c 3030 3233 3122 3e3c   name=\"l00231\"><\n-000090c0: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n-000090d0: 6c69 6e65 6e6f 223e 3c61 2063 6c61 7373  lineno\"><a class\n-000090e0: 3d22 6c69 6e65 2220 6872 6566 3d22 6130  =\"line\" href=\"a0\n-000090f0: 3133 3435 2e68 746d 6c23 6165 6335 6332  1345.html#aec5c2\n-00009100: 6162 6664 6662 6465 3464 6439 3334 6330  abfdfbde4dd934c0\n-00009110: 3631 3632 3539 3934 3739 3122 3e20 2032  61625994791\">  2\n-00009120: 3331 3c2f 613e 3c2f 7370 616e 3e20 2020  31</a></span>   \n-00009130: 2020 2020 203c 6120 636c 6173 733d 2263       <a class=\"c\n-00009140: 6f64 6520 686c 5f74 7970 6564 6566 2220  ode hl_typedef\" \n-00009150: 6872 6566 3d22 6130 3133 3435 2e68 746d  href=\"a01345.htm\n-00009160: 6c23 6131 3733 6539 3865 3064 3162 3364  l#a173e98e0d1b3d\n-00009170: 3135 6635 6333 6164 3433 3664 3066 6564  15f5c3ad436d0fed\n-00009180: 3430 3122 3e57 6569 6768 743c 2f61 3e20  401\">Weight</a> \n-00009190: 3c73 7061 6e20 636c 6173 733d 226b 6579  <span class=\"key\n-000091a0: 776f 7264 223e 636f 6e73 743c 2f73 7061  word\">const</spa\n-000091b0: 6e3e 2661 6d70 3b20 3c61 2063 6c61 7373  n>&amp; <a class\n-000091c0: 3d22 636f 6465 2068 6c5f 6675 6e63 7469  =\"code hl_functi\n-000091d0: 6f6e 2220 6872 6566 3d22 6130 3133 3435  on\" href=\"a01345\n-000091e0: 2e68 746d 6c23 6165 6335 6332 6162 6664  .html#aec5c2abfd\n-000091f0: 6662 6465 3464 6439 3334 6330 3631 3632  fbde4dd934c06162\n-00009200: 3539 3934 3739 3122 3e56 6572 7465 7857  5994791\">VertexW\n-00009210: 6569 6768 743c 2f61 3e28 3c73 7061 6e20  eight</a>(<span \n-00009220: 636c 6173 733d 226b 6579 776f 7264 7479  class=\"keywordty\n-00009230: 7065 223e 696e 743c 2f73 7061 6e3e 2069  pe\">int</span> i\n-00009240: 6e64 6578 293c 7370 616e 2063 6c61 7373  ndex)<span class\n-00009250: 3d22 6b65 7977 6f72 6422 3e20 636f 6e73  =\"keyword\"> cons\n-00009260: 7420 3c2f 7370 616e 3e7b 203c 7370 616e  t </span>{ <span\n-00009270: 2063 6c61 7373 3d22 6b65 7977 6f72 6466   class=\"keywordf\n-00009280: 6c6f 7722 3e72 6574 7572 6e3c 2f73 7061  low\">return</spa\n-00009290: 6e3e 205f 7657 6569 6768 7473 5b69 6e64  n> _vWeights[ind\n-000092a0: 6578 5d3b 207d 3c2f 6469 763e 0a3c 6469  ex]; }</div>.<di\n-000092b0: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n-000092c0: 6120 6964 3d22 6c30 3032 3332 2220 6e61  a id=\"l00232\" na\n-000092d0: 6d65 3d22 6c30 3032 3332 223e 3c2f 613e  me=\"l00232\"></a>\n-000092e0: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n-000092f0: 656e 6f22 3e3c 6120 636c 6173 733d 226c  eno\"><a class=\"l\n-00009300: 696e 6522 2068 7265 663d 2261 3031 3334  ine\" href=\"a0134\n-00009310: 352e 6874 6d6c 2361 3464 6239 3332 6138  5.html#a4db932a8\n-00009320: 6133 3366 6430 3632 3263 3764 3031 3136  a33fd0622c7d0116\n-00009330: 3765 6231 3462 3532 223e 2020 3233 323c  7eb14b52\">  232<\n-00009340: 2f61 3e3c 2f73 7061 6e3e 2020 2020 2020  /a></span>      \n-00009350: 2020 3c61 2063 6c61 7373 3d22 636f 6465    <a class=\"code\n-00009360: 2068 6c5f 7479 7065 6465 6622 2068 7265   hl_typedef\" hre\n-00009370: 663d 2261 3031 3334 352e 6874 6d6c 2361  f=\"a01345.html#a\n-00009380: 3137 3365 3938 6530 6431 6233 6431 3566  173e98e0d1b3d15f\n-00009390: 3563 3361 6434 3336 6430 6665 6434 3031  5c3ad436d0fed401\n-000093a0: 223e 5765 6967 6874 3c2f 613e 203c 7370  \">Weight</a> <sp\n-000093b0: 616e 2063 6c61 7373 3d22 6b65 7977 6f72  an class=\"keywor\n-000093c0: 6422 3e63 6f6e 7374 3c2f 7370 616e 3e26  d\">const</span>&\n-000093d0: 616d 703b 203c 6120 636c 6173 733d 2263  amp; <a class=\"c\n-000093e0: 6f64 6520 686c 5f66 756e 6374 696f 6e22  ode hl_function\"\n-000093f0: 2068 7265 663d 2261 3031 3334 352e 6874   href=\"a01345.ht\n-00009400: 6d6c 2361 3464 6239 3332 6138 6133 3366  ml#a4db932a8a33f\n-00009410: 6430 3632 3263 3764 3031 3136 3765 6231  d0622c7d01167eb1\n-00009420: 3462 3532 223e 4564 6765 5765 6967 6874  4b52\">EdgeWeight\n-00009430: 3c2f 613e 2820 203c 7370 616e 2063 6c61  </a>(  <span cla\n-00009440: 7373 3d22 6b65 7977 6f72 6474 7970 6522  ss=\"keywordtype\"\n-00009450: 3e69 6e74 3c2f 7370 616e 3e20 696e 6465  >int</span> inde\n-00009460: 7829 3c73 7061 6e20 636c 6173 733d 226b  x)<span class=\"k\n-00009470: 6579 776f 7264 223e 2063 6f6e 7374 203c  eyword\"> const <\n-00009480: 2f73 7061 6e3e 7b20 3c73 7061 6e20 636c  /span>{ <span cl\n-00009490: 6173 733d 226b 6579 776f 7264 666c 6f77  ass=\"keywordflow\n-000094a0: 223e 7265 7475 726e 3c2f 7370 616e 3e20  \">return</span> \n-000094b0: 5f65 5765 6967 6874 735b 696e 6465 785d  _eWeights[index]\n-000094c0: 3b20 7d3c 2f64 6976 3e0a 3c64 6976 2063  ; }</div>.<div c\n-000094d0: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n-000094e0: 643d 226c 3030 3233 3322 206e 616d 653d  d=\"l00233\" name=\n-000094f0: 226c 3030 3233 3322 3e3c 2f61 3e3c 7370  \"l00233\"></a><sp\n-00009500: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n-00009510: 223e 3c61 2063 6c61 7373 3d22 6c69 6e65  \"><a class=\"line\n-00009520: 2220 6872 6566 3d22 6130 3133 3435 2e68  \" href=\"a01345.h\n-00009530: 746d 6c23 6136 3734 6461 3131 3238 3839  tml#a674da112889\n-00009540: 3561 3863 6261 6661 3663 3065 6334 3965  5a8cbafa6c0ec49e\n-00009550: 3961 6563 3022 3e20 2032 3333 3c2f 613e  9aec0\">  233</a>\n-00009560: 3c2f 7370 616e 3e20 2020 2020 2020 203c  </span>        <\n-00009570: 6120 636c 6173 733d 2263 6f64 6520 686c  a class=\"code hl\n-00009580: 5f74 7970 6564 6566 2220 6872 6566 3d22  _typedef\" href=\"\n-00009590: 6130 3133 3435 2e68 746d 6c23 6131 3733  a01345.html#a173\n-000095a0: 6539 3865 3064 3162 3364 3135 6635 6333  e98e0d1b3d15f5c3\n-000095b0: 6164 3433 3664 3066 6564 3430 3122 3e57  ad436d0fed401\">W\n-000095c0: 6569 6768 743c 2f61 3e20 3c73 7061 6e20  eight</a> <span \n-000095d0: 636c 6173 733d 226b 6579 776f 7264 223e  class=\"keyword\">\n-000095e0: 636f 6e73 743c 2f73 7061 6e3e 2661 6d70  const</span>&amp\n-000095f0: 3b20 3c61 2063 6c61 7373 3d22 636f 6465  ; <a class=\"code\n-00009600: 2068 6c5f 6675 6e63 7469 6f6e 2220 6872   hl_function\" hr\n-00009610: 6566 3d22 6130 3133 3435 2e68 746d 6c23  ef=\"a01345.html#\n-00009620: 6136 3734 6461 3131 3238 3839 3561 3863  a674da1128895a8c\n-00009630: 6261 6661 3663 3065 6334 3965 3961 6563  bafa6c0ec49e9aec\n-00009640: 3022 3e46 6163 6557 6569 6768 743c 2f61  0\">FaceWeight</a\n-00009650: 3e28 2020 3c73 7061 6e20 636c 6173 733d  >(  <span class=\n-00009660: 226b 6579 776f 7264 7479 7065 223e 696e  \"keywordtype\">in\n-00009670: 743c 2f73 7061 6e3e 2069 6e64 6578 293c  t</span> index)<\n-00009680: 7370 616e 2063 6c61 7373 3d22 6b65 7977  span class=\"keyw\n-00009690: 6f72 6422 3e20 636f 6e73 7420 3c2f 7370  ord\"> const </sp\n-000096a0: 616e 3e7b 203c 7370 616e 2063 6c61 7373  an>{ <span class\n-000096b0: 3d22 6b65 7977 6f72 6466 6c6f 7722 3e72  =\"keywordflow\">r\n-000096c0: 6574 7572 6e3c 2f73 7061 6e3e 205f 6657  eturn</span> _fW\n-000096d0: 6569 6768 7473 5b69 6e64 6578 5d3b 207d  eights[index]; }\n-000096e0: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n-000096f0: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n-00009700: 6c30 3032 3334 2220 6e61 6d65 3d22 6c30  l00234\" name=\"l0\n-00009710: 3032 3334 223e 3c2f 613e 3c73 7061 6e20  0234\"></a><span \n-00009720: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n-00009730: 2032 3334 3c2f 7370 616e 3e20 3c2f 6469   234</span> </di\n-00009740: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n-00009750: 696e 6522 3e3c 6120 6964 3d22 6c30 3032  ine\"><a id=\"l002\n-00009760: 3335 2220 6e61 6d65 3d22 6c30 3032 3335  35\" name=\"l00235\n-00009770: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n-00009780: 733d 226c 696e 656e 6f22 3e3c 6120 636c  s=\"lineno\"><a cl\n-00009790: 6173 733d 226c 696e 6522 2068 7265 663d  ass=\"line\" href=\n-000097a0: 2261 3031 3334 352e 6874 6d6c 2361 3932  \"a01345.html#a92\n-000097b0: 6539 3839 3837 6639 6134 3232 3062 3965  e98987f9a4220b9e\n-000097c0: 6464 3034 3134 3031 6339 6564 3736 223e  dd041401c9ed76\">\n-000097d0: 2020 3233 353c 2f61 3e3c 2f73 7061 6e3e    235</a></span>\n-000097e0: 2020 2020 2020 2020 3c61 2063 6c61 7373          <a class\n-000097f0: 3d22 636f 6465 2068 6c5f 7479 7065 6465  =\"code hl_typede\n-00009800: 6622 2068 7265 663d 2261 3031 3334 352e  f\" href=\"a01345.\n-00009810: 6874 6d6c 2361 3137 3365 3938 6530 6431  html#a173e98e0d1\n-00009820: 6233 6431 3566 3563 3361 6434 3336 6430  b3d15f5c3ad436d0\n-00009830: 6665 6434 3031 223e 5765 6967 6874 3c2f  fed401\">Weight</\n-00009840: 613e 2661 6d70 3b20 3c61 2063 6c61 7373  a>&amp; <a class\n-00009850: 3d22 636f 6465 2068 6c5f 6675 6e63 7469  =\"code hl_functi\n-00009860: 6f6e 2220 6872 6566 3d22 6130 3133 3435  on\" href=\"a01345\n-00009870: 2e68 746d 6c23 6139 3265 3938 3938 3766  .html#a92e98987f\n-00009880: 3961 3432 3230 6239 6564 6430 3431 3430  9a4220b9edd04140\n-00009890: 3163 3965 6437 3622 3e56 6572 7465 7857  1c9ed76\">VertexW\n-000098a0: 6569 6768 743c 2f61 3e28 3c73 7061 6e20  eight</a>(<span \n-000098b0: 636c 6173 733d 226b 6579 776f 7264 7479  class=\"keywordty\n-000098c0: 7065 223e 696e 743c 2f73 7061 6e3e 2069  pe\">int</span> i\n-000098d0: 6e64 6578 2920 7b20 3c73 7061 6e20 636c  ndex) { <span cl\n-000098e0: 6173 733d 226b 6579 776f 7264 666c 6f77  ass=\"keywordflow\n-000098f0: 223e 7265 7475 726e 3c2f 7370 616e 3e20  \">return</span> \n-00009900: 5f76 5765 6967 6874 735b 696e 6465 785d  _vWeights[index]\n-00009910: 3b20 7d3c 2f64 6976 3e0a 3c64 6976 2063  ; }</div>.<div c\n-00009920: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n-00009930: 643d 226c 3030 3233 3622 206e 616d 653d  d=\"l00236\" name=\n-00009940: 226c 3030 3233 3622 3e3c 2f61 3e3c 7370  \"l00236\"></a><sp\n-00009950: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n-00009960: 223e 3c61 2063 6c61 7373 3d22 6c69 6e65  \"><a class=\"line\n-00009970: 2220 6872 6566 3d22 6130 3133 3435 2e68  \" href=\"a01345.h\n-00009980: 746d 6c23 6135 3333 6462 6133 3261 3934  tml#a533dba32a94\n-00009990: 3638 3534 6333 6632 3565 3237 6235 3231  6854c3f25e27b521\n-000099a0: 6566 3764 6622 3e20 2032 3336 3c2f 613e  ef7df\">  236</a>\n-000099b0: 3c2f 7370 616e 3e20 2020 2020 2020 203c  </span>        <\n-000099c0: 6120 636c 6173 733d 2263 6f64 6520 686c  a class=\"code hl\n-000099d0: 5f74 7970 6564 6566 2220 6872 6566 3d22  _typedef\" href=\"\n-000099e0: 6130 3133 3435 2e68 746d 6c23 6131 3733  a01345.html#a173\n-000099f0: 6539 3865 3064 3162 3364 3135 6635 6333  e98e0d1b3d15f5c3\n-00009a00: 6164 3433 3664 3066 6564 3430 3122 3e57  ad436d0fed401\">W\n-00009a10: 6569 6768 743c 2f61 3e26 616d 703b 203c  eight</a>&amp; <\n-00009a20: 6120 636c 6173 733d 2263 6f64 6520 686c  a class=\"code hl\n-00009a30: 5f66 756e 6374 696f 6e22 2068 7265 663d  _function\" href=\n-00009a40: 2261 3031 3334 352e 6874 6d6c 2361 3533  \"a01345.html#a53\n-00009a50: 3364 6261 3332 6139 3436 3835 3463 3366  3dba32a946854c3f\n-00009a60: 3235 6532 3762 3532 3165 6637 6466 223e  25e27b521ef7df\">\n-00009a70: 4564 6765 5765 6967 6874 3c2f 613e 2820  EdgeWeight</a>( \n-00009a80: 203c 7370 616e 2063 6c61 7373 3d22 6b65   <span class=\"ke\n-00009a90: 7977 6f72 6474 7970 6522 3e69 6e74 3c2f  ywordtype\">int</\n-00009aa0: 7370 616e 3e20 696e 6465 7829 207b 203c  span> index) { <\n-00009ab0: 7370 616e 2063 6c61 7373 3d22 6b65 7977  span class=\"keyw\n-00009ac0: 6f72 6466 6c6f 7722 3e72 6574 7572 6e3c  ordflow\">return<\n-00009ad0: 2f73 7061 6e3e 205f 6557 6569 6768 7473  /span> _eWeights\n-00009ae0: 5b69 6e64 6578 5d3b 207d 3c2f 6469 763e  [index]; }</div>\n-00009af0: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n-00009b00: 6522 3e3c 6120 6964 3d22 6c30 3032 3337  e\"><a id=\"l00237\n-00009b10: 2220 6e61 6d65 3d22 6c30 3032 3337 223e  \" name=\"l00237\">\n-00009b20: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n-00009b30: 226c 696e 656e 6f22 3e3c 6120 636c 6173  \"lineno\"><a clas\n-00009b40: 733d 226c 696e 6522 2068 7265 663d 2261  s=\"line\" href=\"a\n-00009b50: 3031 3334 352e 6874 6d6c 2361 6564 6632  01345.html#aedf2\n-00009b60: 3966 3330 3738 3662 3632 3337 3230 3034  9f30786b62372004\n-00009b70: 6132 3261 3366 6133 3561 3563 223e 2020  a22a3fa35a5c\">  \n-00009b80: 3233 373c 2f61 3e3c 2f73 7061 6e3e 2020  237</a></span>  \n-00009b90: 2020 2020 2020 3c61 2063 6c61 7373 3d22        <a class=\"\n-00009ba0: 636f 6465 2068 6c5f 7479 7065 6465 6622  code hl_typedef\"\n-00009bb0: 2068 7265 663d 2261 3031 3334 352e 6874   href=\"a01345.ht\n-00009bc0: 6d6c 2361 3137 3365 3938 6530 6431 6233  ml#a173e98e0d1b3\n-00009bd0: 6431 3566 3563 3361 6434 3336 6430 6665  d15f5c3ad436d0fe\n-00009be0: 6434 3031 223e 5765 6967 6874 3c2f 613e  d401\">Weight</a>\n-00009bf0: 2661 6d70 3b20 3c61 2063 6c61 7373 3d22  &amp; <a class=\"\n-00009c00: 636f 6465 2068 6c5f 6675 6e63 7469 6f6e  code hl_function\n-00009c10: 2220 6872 6566 3d22 6130 3133 3435 2e68  \" href=\"a01345.h\n-00009c20: 746d 6c23 6165 6466 3239 6633 3037 3836  tml#aedf29f30786\n-00009c30: 6236 3233 3732 3030 3461 3232 6133 6661  b62372004a22a3fa\n-00009c40: 3335 6135 6322 3e46 6163 6557 6569 6768  35a5c\">FaceWeigh\n-00009c50: 743c 2f61 3e28 2020 3c73 7061 6e20 636c  t</a>(  <span cl\n-00009c60: 6173 733d 226b 6579 776f 7264 7479 7065  ass=\"keywordtype\n-00009c70: 223e 696e 743c 2f73 7061 6e3e 2069 6e64  \">int</span> ind\n-00009c80: 6578 2920 7b20 3c73 7061 6e20 636c 6173  ex) { <span clas\n-00009c90: 733d 226b 6579 776f 7264 666c 6f77 223e  s=\"keywordflow\">\n-00009ca0: 7265 7475 726e 3c2f 7370 616e 3e20 5f66  return</span> _f\n-00009cb0: 5765 6967 6874 735b 696e 6465 785d 3b20  Weights[index]; \n-00009cc0: 7d3c 2f64 6976 3e0a 3c64 6976 2063 6c61  }</div>.<div cla\n-00009cd0: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n-00009ce0: 226c 3030 3233 3822 206e 616d 653d 226c  \"l00238\" name=\"l\n-00009cf0: 3030 3233 3822 3e3c 2f61 3e3c 7370 616e  00238\"></a><span\n-00009d00: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n-00009d10: 2020 3233 383c 2f73 7061 6e3e 203c 2f64    238</span> </d\n-00009d20: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n-00009d30: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n-00009d40: 3233 3922 206e 616d 653d 226c 3030 3233  239\" name=\"l0023\n-00009d50: 3922 3e3c 2f61 3e3c 7370 616e 2063 6c61  9\"></a><span cla\n-00009d60: 7373 3d22 6c69 6e65 6e6f 223e 3c61 2063  ss=\"lineno\"><a c\n-00009d70: 6c61 7373 3d22 6c69 6e65 2220 6872 6566  lass=\"line\" href\n-00009d80: 3d22 6130 3133 3435 2e68 746d 6c23 6133  =\"a01345.html#a3\n-00009d90: 3531 3965 3565 3035 3633 3130 3236 6661  519e5e05631026fa\n-00009da0: 6439 3463 3736 3136 6635 6530 6536 3722  d94c7616f5e0e67\"\n-00009db0: 3e20 2032 3339 3c2f 613e 3c2f 7370 616e  >  239</a></span\n-00009dc0: 3e20 2020 2020 2020 203c 7370 616e 2063  >        <span c\n-00009dd0: 6c61 7373 3d22 6b65 7977 6f72 6474 7970  lass=\"keywordtyp\n-00009de0: 6522 3e62 6f6f 6c3c 2f73 7061 6e3e 203c  e\">bool</span> <\n-00009df0: 6120 636c 6173 733d 2263 6f64 6520 686c  a class=\"code hl\n-00009e00: 5f66 756e 6374 696f 6e22 2068 7265 663d  _function\" href=\n-00009e10: 2261 3031 3334 352e 6874 6d6c 2361 3335  \"a01345.html#a35\n-00009e20: 3139 6535 6530 3536 3331 3032 3666 6164  19e5e05631026fad\n-00009e30: 3934 6337 3631 3666 3565 3065 3637 223e  94c7616f5e0e67\">\n-00009e40: 4172 6546 6163 6557 6569 6768 7473 466f  AreFaceWeightsFo\n-00009e50: 7246 6163 6543 656e 7465 7273 3c2f 613e  rFaceCenters</a>\n-00009e60: 2829 3c73 7061 6e20 636c 6173 733d 226b  ()<span class=\"k\n-00009e70: 6579 776f 7264 223e 2063 6f6e 7374 2020  eyword\"> const  \n-00009e80: 3c2f 7370 616e 3e7b 203c 7370 616e 2063  </span>{ <span c\n-00009e90: 6c61 7373 3d22 6b65 7977 6f72 6466 6c6f  lass=\"keywordflo\n-00009ea0: 7722 3e72 6574 7572 6e3c 2f73 7061 6e3e  w\">return</span>\n-00009eb0: 205f 6657 6569 6768 7473 466f 7243 656e   _fWeightsForCen\n-00009ec0: 7465 7273 3b20 7d3c 2f64 6976 3e0a 3c64  ters; }</div>.<d\n-00009ed0: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n-00009ee0: 3c61 2069 643d 226c 3030 3234 3022 206e  <a id=\"l00240\" n\n-00009ef0: 616d 653d 226c 3030 3234 3022 3e3c 2f61  ame=\"l00240\"></a\n-00009f00: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n-00009f10: 6e65 6e6f 223e 3c61 2063 6c61 7373 3d22  neno\"><a class=\"\n-00009f20: 6c69 6e65 2220 6872 6566 3d22 6130 3133  line\" href=\"a013\n-00009f30: 3435 2e68 746d 6c23 6139 6261 3439 3239  45.html#a9ba4929\n-00009f40: 6138 6138 6136 6433 3461 6466 6335 6632  a8a8a6d34adfc5f2\n-00009f50: 6265 6436 3637 6437 3622 3e20 2032 3430  bed667d76\">  240\n-00009f60: 3c2f 613e 3c2f 7370 616e 3e20 2020 2020  </a></span>     \n-00009f70: 2020 203c 7370 616e 2063 6c61 7373 3d22     <span class=\"\n-00009f80: 6b65 7977 6f72 6474 7970 6522 3e76 6f69  keywordtype\">voi\n-00009f90: 643c 2f73 7061 6e3e 203c 6120 636c 6173  d</span> <a clas\n-00009fa0: 733d 2263 6f64 6520 686c 5f66 756e 6374  s=\"code hl_funct\n-00009fb0: 696f 6e22 2068 7265 663d 2261 3031 3334  ion\" href=\"a0134\n-00009fc0: 352e 6874 6d6c 2361 3962 6134 3932 3961  5.html#a9ba4929a\n-00009fd0: 3861 3861 3664 3334 6164 6663 3566 3262  8a8a6d34adfc5f2b\n-00009fe0: 6564 3636 3764 3736 223e 5365 7446 6163  ed667d76\">SetFac\n-00009ff0: 6557 6569 6768 7473 466f 7246 6163 6543  eWeightsForFaceC\n-0000a000: 656e 7465 7273 3c2f 613e 283c 7370 616e  enters</a>(<span\n-0000a010: 2063 6c61 7373 3d22 6b65 7977 6f72 6474   class=\"keywordt\n-0000a020: 7970 6522 3e62 6f6f 6c3c 2f73 7061 6e3e  ype\">bool</span>\n-0000a030: 206f 6e29 207b 205f 6657 6569 6768 7473   on) { _fWeights\n-0000a040: 466f 7243 656e 7465 7273 203d 206f 6e3b  ForCenters = on;\n-0000a050: 207d 3c2f 6469 763e 0a3c 6469 7620 636c   }</div>.<div cl\n-0000a060: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n-0000a070: 3d22 6c30 3032 3431 2220 6e61 6d65 3d22  =\"l00241\" name=\"\n-0000a080: 6c30 3032 3431 223e 3c2f 613e 3c73 7061  l00241\"></a><spa\n-0000a090: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n-0000a0a0: 3e20 2032 3431 3c2f 7370 616e 3e20 3c2f  >  241</span> </\n-0000a0b0: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n-0000a0c0: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n-0000a0d0: 3032 3432 2220 6e61 6d65 3d22 6c30 3032  0242\" name=\"l002\n-0000a0e0: 3432 223e 3c2f 613e 3c73 7061 6e20 636c  42\"></a><span cl\n-0000a0f0: 6173 733d 226c 696e 656e 6f22 3e20 2032  ass=\"lineno\">  2\n-0000a100: 3432 3c2f 7370 616e 3e20 2020 203c 7370  42</span>    <sp\n-0000a110: 616e 2063 6c61 7373 3d22 6b65 7977 6f72  an class=\"keywor\n-0000a120: 6422 3e70 7562 6c69 633c 2f73 7061 6e3e  d\">public</span>\n-0000a130: 3a3c 2f64 6976 3e0a 3c64 6976 2063 6c61  :</div>.<div cla\n-0000a140: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n-0000a150: 226c 3030 3234 3322 206e 616d 653d 226c  \"l00243\" name=\"l\n-0000a160: 3030 3234 3322 3e3c 2f61 3e3c 7370 616e  00243\"></a><span\n-0000a170: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n-0000a180: 2020 3234 333c 2f73 7061 6e3e 203c 2f64    243</span> </d\n-0000a190: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n-0000a1a0: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n-0000a1b0: 3234 3422 206e 616d 653d 226c 3030 3234  244\" name=\"l0024\n-0000a1c0: 3422 3e3c 2f61 3e3c 7370 616e 2063 6c61  4\"></a><span cla\n-0000a1d0: 7373 3d22 6c69 6e65 6e6f 223e 2020 3234  ss=\"lineno\">  24\n-0000a1e0: 343c 2f73 7061 6e3e 2020 2020 2020 2020  4</span>        \n-0000a1f0: 3c73 7061 6e20 636c 6173 733d 2263 6f6d  <span class=\"com\n-0000a200: 6d65 6e74 223e 2f2f 3c2f 7370 616e 3e3c  ment\">//</span><\n-0000a210: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n-0000a220: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n-0000a230: 3030 3234 3522 206e 616d 653d 226c 3030  00245\" name=\"l00\n-0000a240: 3234 3522 3e3c 2f61 3e3c 7370 616e 2063  245\"></a><span c\n-0000a250: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n-0000a260: 3234 353c 2f73 7061 6e3e 2020 2020 2020  245</span>      \n-0000a270: 2020 3c73 7061 6e20 636c 6173 733d 2263    <span class=\"c\n-0000a280: 6f6d 6d65 6e74 223e 2f2f 2020 4164 6469  omment\">//  Addi\n-0000a290: 7469 6f6e 616c 206d 6574 686f 6473 202d  tional methods -\n-0000a2a0: 2d20 6d61 696e 6c79 2074 6865 2062 6c65  - mainly the ble\n-0000a2b0: 6e64 696e 6720 6d65 7468 6f64 2066 6f72  nding method for\n-0000a2c0: 2076 6572 7465 782d 7665 7274 6578 206d   vertex-vertex m\n-0000a2d0: 6173 6b73 3a3c 2f73 7061 6e3e 3c2f 6469  asks:</span></di\n-0000a2e0: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n-0000a2f0: 696e 6522 3e3c 6120 6964 3d22 6c30 3032  ine\"><a id=\"l002\n-0000a300: 3436 2220 6e61 6d65 3d22 6c30 3032 3436  46\" name=\"l00246\n-0000a310: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n-0000a320: 733d 226c 696e 656e 6f22 3e20 2032 3436  s=\"lineno\">  246\n-0000a330: 3c2f 7370 616e 3e20 2020 2020 2020 203c  </span>        <\n-0000a340: 7370 616e 2063 6c61 7373 3d22 636f 6d6d  span class=\"comm\n-0000a350: 656e 7422 3e2f 2f3c 2f73 7061 6e3e 3c2f  ent\">//</span></\n-0000a360: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n-0000a370: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n-0000a380: 3032 3437 2220 6e61 6d65 3d22 6c30 3032  0247\" name=\"l002\n-0000a390: 3437 223e 3c2f 613e 3c73 7061 6e20 636c  47\"></a><span cl\n-0000a3a0: 6173 733d 226c 696e 656e 6f22 3e20 2032  ass=\"lineno\">  2\n-0000a3b0: 3437 3c2f 7370 616e 3e20 2020 2020 2020  47</span>       \n-0000a3c0: 203c 7370 616e 2063 6c61 7373 3d22 6b65   <span class=\"ke\n-0000a3d0: 7977 6f72 6422 3e74 656d 706c 6174 653c  yword\">template<\n-0000a3e0: 2f73 7061 6e3e 2026 6c74 3b3c 7370 616e  /span> &lt;<span\n-0000a3f0: 2063 6c61 7373 3d22 6b65 7977 6f72 6422   class=\"keyword\"\n-0000a400: 3e74 7970 656e 616d 653c 2f73 7061 6e3e  >typename</span>\n-0000a410: 2055 5345 525f 4d41 534b 2667 743b 3c2f   USER_MASK&gt;</\n-0000a420: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n-0000a430: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n-0000a440: 3032 3438 2220 6e61 6d65 3d22 6c30 3032  0248\" name=\"l002\n-0000a450: 3438 223e 3c2f 613e 3c73 7061 6e20 636c  48\"></a><span cl\n-0000a460: 6173 733d 226c 696e 656e 6f22 3e20 2032  ass=\"lineno\">  2\n-0000a470: 3438 3c2f 7370 616e 3e20 2020 2020 2020  48</span>       \n-0000a480: 203c 7370 616e 2063 6c61 7373 3d22 6b65   <span class=\"ke\n-0000a490: 7977 6f72 6422 3e69 6e6c 696e 653c 2f73  yword\">inline</s\n-0000a4a0: 7061 6e3e 203c 7370 616e 2063 6c61 7373  pan> <span class\n-0000a4b0: 3d22 6b65 7977 6f72 6474 7970 6522 3e76  =\"keywordtype\">v\n-0000a4c0: 6f69 643c 2f73 7061 6e3e 3c2f 6469 763e  oid</span></div>\n-0000a4d0: 0a3c 6469 7620 636c 6173 733d 2266 6f6c  .<div class=\"fol\n-0000a4e0: 646f 7065 6e22 2069 643d 2266 6f6c 646f  dopen\" id=\"foldo\n-0000a4f0: 7065 6e30 3032 3439 2220 6461 7461 2d73  pen00249\" data-s\n-0000a500: 7461 7274 3d22 7b22 2064 6174 612d 656e  tart=\"{\" data-en\n-0000a510: 643d 227d 223e 0a3c 6469 7620 636c 6173  d=\"}\">.<div clas\n-0000a520: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n-0000a530: 6c30 3032 3439 2220 6e61 6d65 3d22 6c30  l00249\" name=\"l0\n-0000a540: 3032 3439 223e 3c2f 613e 3c73 7061 6e20  0249\"></a><span \n-0000a550: 636c 6173 733d 226c 696e 656e 6f22 3e3c  class=\"lineno\"><\n-0000a560: 6120 636c 6173 733d 226c 696e 6522 2068  a class=\"line\" h\n-0000a570: 7265 663d 2261 3031 3334 352e 6874 6d6c  ref=\"a01345.html\n-0000a580: 2361 3565 6438 3030 6539 6437 3032 6635  #a5ed800e9d702f5\n-0000a590: 3761 6539 3738 6665 3630 6261 3261 3337  7ae978fe60ba2a37\n-0000a5a0: 6463 223e 2020 3234 393c 2f61 3e3c 2f73  dc\">  249</a></s\n-0000a5b0: 7061 6e3e 2020 2020 2020 2020 3c61 2063  pan>        <a c\n-0000a5c0: 6c61 7373 3d22 636f 6465 2068 6c5f 6675  lass=\"code hl_fu\n-0000a5d0: 6e63 7469 6f6e 2220 6872 6566 3d22 6130  nction\" href=\"a0\n-0000a5e0: 3133 3435 2e68 746d 6c23 6135 6564 3830  1345.html#a5ed80\n-0000a5f0: 3065 3964 3730 3266 3537 6165 3937 3866  0e9d702f57ae978f\n-0000a600: 6536 3062 6132 6133 3764 6322 3e43 6f6d  e60ba2a37dc\">Com\n-0000a610: 6269 6e65 5665 7274 6578 5665 7274 6578  bineVertexVertex\n-0000a620: 4d61 736b 733c 2f61 3e28 3c61 2063 6c61  Masks</a>(<a cla\n-0000a630: 7373 3d22 636f 6465 2068 6c5f 7479 7065  ss=\"code hl_type\n-0000a640: 6465 6622 2068 7265 663d 2261 3031 3334  def\" href=\"a0134\n-0000a650: 352e 6874 6d6c 2361 3137 3365 3938 6530  5.html#a173e98e0\n-0000a660: 6431 6233 6431 3566 3563 3361 6434 3336  d1b3d15f5c3ad436\n-0000a670: 6430 6665 6434 3031 223e 5765 6967 6874  d0fed401\">Weight\n-0000a680: 3c2f 613e 2074 6869 7343 6f65 6666 2c20  </a> thisCoeff, \n-0000a690: 3c61 2063 6c61 7373 3d22 636f 6465 2068  <a class=\"code h\n-0000a6a0: 6c5f 7479 7065 6465 6622 2068 7265 663d  l_typedef\" href=\n-0000a6b0: 2261 3031 3334 352e 6874 6d6c 2361 3137  \"a01345.html#a17\n-0000a6c0: 3365 3938 6530 6431 6233 6431 3566 3563  3e98e0d1b3d15f5c\n-0000a6d0: 3361 6434 3336 6430 6665 6434 3031 223e  3ad436d0fed401\">\n-0000a6e0: 5765 6967 6874 3c2f 613e 2064 7374 436f  Weight</a> dstCo\n-0000a6f0: 6566 662c 2055 5345 525f 4d41 534b 2661  eff, USER_MASK&a\n-0000a700: 6d70 3b20 6473 7429 3c73 7061 6e20 636c  mp; dst)<span cl\n-0000a710: 6173 733d 226b 6579 776f 7264 223e 2063  ass=\"keyword\"> c\n-0000a720: 6f6e 7374 203c 2f73 7061 6e3e 7b3c 2f64  onst </span>{</d\n-0000a730: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n-0000a740: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n-0000a750: 3235 3022 206e 616d 653d 226c 3030 3235  250\" name=\"l0025\n-0000a760: 3022 3e3c 2f61 3e3c 7370 616e 2063 6c61  0\"></a><span cla\n-0000a770: 7373 3d22 6c69 6e65 6e6f 223e 2020 3235  ss=\"lineno\">  25\n-0000a780: 303c 2f73 7061 6e3e 203c 2f64 6976 3e0a  0</span> </div>.\n-0000a790: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n-0000a7a0: 223e 3c61 2069 643d 226c 3030 3235 3122  \"><a id=\"l00251\"\n-0000a7b0: 206e 616d 653d 226c 3030 3235 3122 3e3c   name=\"l00251\"><\n-0000a7c0: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n-0000a7d0: 6c69 6e65 6e6f 223e 2020 3235 313c 2f73  lineno\">  251</s\n-0000a7e0: 7061 6e3e 2020 2020 2020 2020 2020 2020  pan>            \n-0000a7f0: 3c73 7061 6e20 636c 6173 733d 2263 6f6d  <span class=\"com\n-0000a800: 6d65 6e74 223e 2f2f 3c2f 7370 616e 3e3c  ment\">//</span><\n-0000a810: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n-0000a820: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n-0000a830: 3030 3235 3222 206e 616d 653d 226c 3030  00252\" name=\"l00\n-0000a840: 3235 3222 3e3c 2f61 3e3c 7370 616e 2063  252\"></a><span c\n-0000a850: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n-0000a860: 3235 323c 2f73 7061 6e3e 2020 2020 2020  252</span>      \n-0000a870: 2020 2020 2020 3c73 7061 6e20 636c 6173        <span clas\n-0000a880: 733d 2263 6f6d 6d65 6e74 223e 2f2f 2020  s=\"comment\">//  \n-0000a890: 5468 6973 2069 6d70 6c65 6d65 6e74 6174  This implementat\n-0000a8a0: 696f 6e20 6973 2063 6f6e 766f 6c75 7465  ion is convolute\n-0000a8b0: 6420 6279 2074 6865 2070 6f74 656e 7469  d by the potenti\n-0000a8c0: 616c 2073 7061 7273 6974 7920 6f66 2065  al sparsity of e\n-0000a8d0: 6163 6820 6d61 736b 2e20 2053 696e 6365  ach mask.  Since\n-0000a8e0: 3c2f 7370 616e 3e3c 2f64 6976 3e0a 3c64  </span></div>.<d\n-0000a8f0: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n-0000a900: 3c61 2069 643d 226c 3030 3235 3322 206e  <a id=\"l00253\" n\n-0000a910: 616d 653d 226c 3030 3235 3322 3e3c 2f61  ame=\"l00253\"></a\n-0000a920: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n-0000a930: 6e65 6e6f 223e 2020 3235 333c 2f73 7061  neno\">  253</spa\n-0000a940: 6e3e 2020 2020 2020 2020 2020 2020 3c73  n>            <s\n-0000a950: 7061 6e20 636c 6173 733d 2263 6f6d 6d65  pan class=\"comme\n-0000a960: 6e74 223e 2f2f 2020 6974 2069 7320 7370  nt\">//  it is sp\n-0000a970: 6563 6966 6963 2074 6f20 6120 7665 7274  ecific to a vert\n-0000a980: 6578 2d76 6572 7465 7820 6d61 736b 2c20  ex-vertex mask, \n-0000a990: 7765 2061 7265 2067 7561 7261 6e74 6565  we are guarantee\n-0000a9a0: 6420 746f 2068 6176 6520 6578 6163 746c  d to have exactl\n-0000a9b0: 7920 6f6e 653c 2f73 7061 6e3e 3c2f 6469  y one</span></di\n-0000a9c0: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n-0000a9d0: 696e 6522 3e3c 6120 6964 3d22 6c30 3032  ine\"><a id=\"l002\n-0000a9e0: 3534 2220 6e61 6d65 3d22 6c30 3032 3534  54\" name=\"l00254\n-0000a9f0: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n-0000aa00: 733d 226c 696e 656e 6f22 3e20 2032 3534  s=\"lineno\">  254\n-0000aa10: 3c2f 7370 616e 3e20 2020 2020 2020 2020  </span>         \n-0000aa20: 2020 203c 7370 616e 2063 6c61 7373 3d22     <span class=\"\n-0000aa30: 636f 6d6d 656e 7422 3e2f 2f20 2076 6572  comment\">//  ver\n-0000aa40: 7465 782d 7765 6967 6874 2066 6f72 2062  tex-weight for b\n-0000aa50: 6f74 6820 6d61 736b 732c 2062 7574 2074  oth masks, but t\n-0000aa60: 6865 2065 6467 652d 2061 6e64 2066 6163  he edge- and fac\n-0000aa70: 652d 7765 6967 6874 7320 6172 6520 6f70  e-weights are op\n-0000aa80: 7469 6f6e 616c 2e20 2054 6865 3c2f 7370  tional.  The</sp\n-0000aa90: 616e 3e3c 2f64 6976 3e0a 3c64 6976 2063  an></div>.<div c\n-0000aaa0: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n-0000aab0: 643d 226c 3030 3235 3522 206e 616d 653d  d=\"l00255\" name=\n-0000aac0: 226c 3030 3235 3522 3e3c 2f61 3e3c 7370  \"l00255\"></a><sp\n-0000aad0: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n-0000aae0: 223e 2020 3235 353c 2f73 7061 6e3e 2020  \">  255</span>  \n-0000aaf0: 2020 2020 2020 2020 2020 3c73 7061 6e20            <span \n-0000ab00: 636c 6173 733d 2263 6f6d 6d65 6e74 223e  class=\"comment\">\n-0000ab10: 2f2f 2020 6368 696c 6420 6d61 736b 2028  //  child mask (\n-0000ab20: 7468 6520 2671 756f 743b 736f 7572 6365  the &quot;source\n-0000ab30: 2671 756f 743b 2920 7368 6f75 6c64 2068  &quot;) should h\n-0000ab40: 6176 6520 6120 7375 7065 7273 6574 206f  ave a superset o\n-0000ab50: 6620 7468 6520 7765 6967 6874 7320 6f66  f the weights of\n-0000ab60: 2074 6865 2070 6172 656e 743c 2f73 7061   the parent</spa\n-0000ab70: 6e3e 3c2f 6469 763e 0a3c 6469 7620 636c  n></div>.<div cl\n-0000ab80: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n-0000ab90: 3d22 6c30 3032 3536 2220 6e61 6d65 3d22  =\"l00256\" name=\"\n-0000aba0: 6c30 3032 3536 223e 3c2f 613e 3c73 7061  l00256\"></a><spa\n-0000abb0: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n-0000abc0: 3e20 2032 3536 3c2f 7370 616e 3e20 2020  >  256</span>   \n-0000abd0: 2020 2020 2020 2020 203c 7370 616e 2063           <span c\n-0000abe0: 6c61 7373 3d22 636f 6d6d 656e 7422 3e2f  lass=\"comment\">/\n-0000abf0: 2f20 2028 7468 6520 2671 756f 743b 6465  /  (the &quot;de\n-0000ac00: 7374 696e 6174 696f 6e26 7175 6f74 3b29  stination&quot;)\n-0000ac10: 2067 6976 656e 2069 7473 2072 6564 7563   given its reduc\n-0000ac20: 6564 2073 6861 7270 6e65 7373 2c20 736f  ed sharpness, so\n-0000ac30: 2077 6520 666f 7274 756e 6174 656c 7920   we fortunately \n-0000ac40: 646f 6e26 2333 393b 7420 6e65 6564 2074  don&#39;t need t\n-0000ac50: 6f3c 2f73 7061 6e3e 3c2f 6469 763e 0a3c  o</span></div>.<\n-0000ac60: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n-0000ac70: 3e3c 6120 6964 3d22 6c30 3032 3537 2220  ><a id=\"l00257\" \n-0000ac80: 6e61 6d65 3d22 6c30 3032 3537 223e 3c2f  name=\"l00257\"></\n-0000ac90: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n-0000aca0: 696e 656e 6f22 3e20 2032 3537 3c2f 7370  ineno\">  257</sp\n-0000acb0: 616e 3e20 2020 2020 2020 2020 2020 203c  an>            <\n-0000acc0: 7370 616e 2063 6c61 7373 3d22 636f 6d6d  span class=\"comm\n-0000acd0: 656e 7422 3e2f 2f20 2074 6573 7420 616c  ent\">//  test al\n-0000ace0: 6c20 7065 726d 7574 6174 696f 6e73 2e3c  l permutations.<\n-0000acf0: 2f73 7061 6e3e 3c2f 6469 763e 0a3c 6469  /span></div>.<di\n-0000ad00: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n-0000ad10: 6120 6964 3d22 6c30 3032 3538 2220 6e61  a id=\"l00258\" na\n-0000ad20: 6d65 3d22 6c30 3032 3538 223e 3c2f 613e  me=\"l00258\"></a>\n-0000ad30: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n-0000ad40: 656e 6f22 3e20 2032 3538 3c2f 7370 616e  eno\">  258</span\n-0000ad50: 3e20 2020 2020 2020 2020 2020 203c 7370  >            <sp\n-0000ad60: 616e 2063 6c61 7373 3d22 636f 6d6d 656e  an class=\"commen\n-0000ad70: 7422 3e2f 2f3c 2f73 7061 6e3e 3c2f 6469  t\">//</span></di\n-0000ad80: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n-0000ad90: 696e 6522 3e3c 6120 6964 3d22 6c30 3032  ine\"><a id=\"l002\n-0000ada0: 3539 2220 6e61 6d65 3d22 6c30 3032 3539  59\" name=\"l00259\n-0000adb0: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n-0000adc0: 733d 226c 696e 656e 6f22 3e20 2032 3539  s=\"lineno\">  259\n-0000add0: 3c2f 7370 616e 3e20 2020 2020 2020 2020  </span>         \n-0000ade0: 2020 2064 7374 2e56 6572 7465 7857 6569     dst.VertexWei\n-0000adf0: 6768 7428 3029 203d 2064 7374 436f 6566  ght(0) = dstCoef\n-0000ae00: 6620 2a20 6473 742e 5665 7274 6578 5765  f * dst.VertexWe\n-0000ae10: 6967 6874 2830 2920 2b20 7468 6973 436f  ight(0) + thisCo\n-0000ae20: 6566 6620 2a20 7468 6973 2d26 6774 3b3c  eff * this-&gt;<\n-0000ae30: 6120 636c 6173 733d 2263 6f64 6520 686c  a class=\"code hl\n-0000ae40: 5f66 756e 6374 696f 6e22 2068 7265 663d  _function\" href=\n-0000ae50: 2261 3031 3334 352e 6874 6d6c 2361 6563  \"a01345.html#aec\n-0000ae60: 3563 3261 6266 6466 6264 6534 6464 3933  5c2abfdfbde4dd93\n-0000ae70: 3463 3036 3136 3235 3939 3437 3931 223e  4c061625994791\">\n-0000ae80: 5665 7274 6578 5765 6967 6874 3c2f 613e  VertexWeight</a>\n-0000ae90: 2830 293b 3c2f 6469 763e 0a3c 6469 7620  (0);</div>.<div \n-0000aea0: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n-0000aeb0: 6964 3d22 6c30 3032 3630 2220 6e61 6d65  id=\"l00260\" name\n-0000aec0: 3d22 6c30 3032 3630 223e 3c2f 613e 3c73  =\"l00260\"></a><s\n-0000aed0: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n-0000aee0: 6f22 3e20 2032 3630 3c2f 7370 616e 3e20  o\">  260</span> \n-0000aef0: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n-0000af00: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n-0000af10: 6c30 3032 3631 2220 6e61 6d65 3d22 6c30  l00261\" name=\"l0\n-0000af20: 3032 3631 223e 3c2f 613e 3c73 7061 6e20  0261\"></a><span \n-0000af30: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n-0000af40: 2032 3631 3c2f 7370 616e 3e20 2020 2020   261</span>     \n-0000af50: 2020 2020 2020 203c 7370 616e 2063 6c61         <span cla\n-0000af60: 7373 3d22 6b65 7977 6f72 6474 7970 6522  ss=\"keywordtype\"\n-0000af70: 3e69 6e74 3c2f 7370 616e 3e20 6564 6765  >int</span> edge\n-0000af80: 5765 6967 6874 436f 756e 7420 3d20 7468  WeightCount = th\n-0000af90: 6973 2d26 6774 3b3c 6120 636c 6173 733d  is-&gt;<a class=\n-0000afa0: 2263 6f64 6520 686c 5f66 756e 6374 696f  \"code hl_functio\n-0000afb0: 6e22 2068 7265 663d 2261 3031 3334 352e  n\" href=\"a01345.\n-0000afc0: 6874 6d6c 2361 3930 6530 6432 3938 3166  html#a90e0d2981f\n-0000afd0: 3239 6263 3762 6264 6662 6162 6138 6462  29bc7bbdfbaba8db\n-0000afe0: 3633 3237 3531 223e 4765 744e 756d 4564  632751\">GetNumEd\n-0000aff0: 6765 5765 6967 6874 733c 2f61 3e28 293b  geWeights</a>();\n-0000b000: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n-0000b010: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n-0000b020: 6c30 3032 3632 2220 6e61 6d65 3d22 6c30  l00262\" name=\"l0\n-0000b030: 3032 3632 223e 3c2f 613e 3c73 7061 6e20  0262\"></a><span \n-0000b040: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n-0000b050: 2032 3632 3c2f 7370 616e 3e20 2020 2020   262</span>     \n-0000b060: 2020 2020 2020 203c 7370 616e 2063 6c61         <span cla\n-0000b070: 7373 3d22 6b65 7977 6f72 6466 6c6f 7722  ss=\"keywordflow\"\n-0000b080: 3e69 663c 2f73 7061 6e3e 2028 6564 6765  >if</span> (edge\n-0000b090: 5765 6967 6874 436f 756e 7429 207b 3c2f  WeightCount) {</\n-0000b0a0: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n-0000b0b0: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n-0000b0c0: 3032 3633 2220 6e61 6d65 3d22 6c30 3032  0263\" name=\"l002\n-0000b0d0: 3633 223e 3c2f 613e 3c73 7061 6e20 636c  63\"></a><span cl\n-0000b0e0: 6173 733d 226c 696e 656e 6f22 3e20 2032  ass=\"lineno\">  2\n-0000b0f0: 3633 3c2f 7370 616e 3e20 2020 2020 2020  63</span>       \n-0000b100: 2020 2020 2020 2020 203c 7370 616e 2063           <span c\n-0000b110: 6c61 7373 3d22 6b65 7977 6f72 6466 6c6f  lass=\"keywordflo\n-0000b120: 7722 3e69 663c 2f73 7061 6e3e 2028 6473  w\">if</span> (ds\n-0000b130: 742e 4765 744e 756d 4564 6765 5765 6967  t.GetNumEdgeWeig\n-0000b140: 6874 7328 2920 3d3d 2030 2920 7b3c 2f64  hts() == 0) {</d\n-0000b150: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n-0000b160: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n-0000b170: 3236 3422 206e 616d 653d 226c 3030 3236  264\" name=\"l0026\n-0000b180: 3422 3e3c 2f61 3e3c 7370 616e 2063 6c61  4\"></a><span cla\n-0000b190: 7373 3d22 6c69 6e65 6e6f 223e 2020 3236  ss=\"lineno\">  26\n-0000b1a0: 343c 2f73 7061 6e3e 2020 2020 2020 2020  4</span>        \n-0000b1b0: 2020 2020 2020 2020 2020 2020 6473 742e              dst.\n-0000b1c0: 5365 744e 756d 4564 6765 5765 6967 6874  SetNumEdgeWeight\n-0000b1d0: 7328 6564 6765 5765 6967 6874 436f 756e  s(edgeWeightCoun\n-0000b1e0: 7429 3b3c 2f64 6976 3e0a 3c64 6976 2063  t);</div>.<div c\n-0000b1f0: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n-0000b200: 643d 226c 3030 3236 3522 206e 616d 653d  d=\"l00265\" name=\n-0000b210: 226c 3030 3236 3522 3e3c 2f61 3e3c 7370  \"l00265\"></a><sp\n-0000b220: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n-0000b230: 223e 2020 3236 353c 2f73 7061 6e3e 2020  \">  265</span>  \n-0000b240: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000b250: 2020 3c73 7061 6e20 636c 6173 733d 226b    <span class=\"k\n-0000b260: 6579 776f 7264 666c 6f77 223e 666f 723c  eywordflow\">for<\n-0000b270: 2f73 7061 6e3e 2028 3c73 7061 6e20 636c  /span> (<span cl\n-0000b280: 6173 733d 226b 6579 776f 7264 7479 7065  ass=\"keywordtype\n-0000b290: 223e 696e 743c 2f73 7061 6e3e 2069 203d  \">int</span> i =\n-0000b2a0: 2030 3b20 6920 266c 743b 2065 6467 6557   0; i &lt; edgeW\n-0000b2b0: 6569 6768 7443 6f75 6e74 3b20 2b2b 6929  eightCount; ++i)\n-0000b2c0: 207b 3c2f 6469 763e 0a3c 6469 7620 636c   {</div>.<div cl\n-0000b2d0: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n-0000b2e0: 3d22 6c30 3032 3636 2220 6e61 6d65 3d22  =\"l00266\" name=\"\n-0000b2f0: 6c30 3032 3636 223e 3c2f 613e 3c73 7061  l00266\"></a><spa\n-0000b300: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n-0000b310: 3e20 2032 3636 3c2f 7370 616e 3e20 2020  >  266</span>   \n-0000b320: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000b330: 2020 2020 2064 7374 2e45 6467 6557 6569       dst.EdgeWei\n-0000b340: 6768 7428 6929 203d 2074 6869 7343 6f65  ght(i) = thisCoe\n-0000b350: 6666 202a 2074 6869 732d 2667 743b 3c61  ff * this-&gt;<a\n-0000b360: 2063 6c61 7373 3d22 636f 6465 2068 6c5f   class=\"code hl_\n-0000b370: 6675 6e63 7469 6f6e 2220 6872 6566 3d22  function\" href=\"\n-0000b380: 6130 3133 3435 2e68 746d 6c23 6134 6462  a01345.html#a4db\n-0000b390: 3933 3261 3861 3333 6664 3036 3232 6337  932a8a33fd0622c7\n-0000b3a0: 6430 3131 3637 6562 3134 6235 3222 3e45  d01167eb14b52\">E\n-0000b3b0: 6467 6557 6569 6768 743c 2f61 3e28 6929  dgeWeight</a>(i)\n-0000b3c0: 3b3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ;</div>.<div cla\n-0000b3d0: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n-0000b3e0: 226c 3030 3236 3722 206e 616d 653d 226c  \"l00267\" name=\"l\n-0000b3f0: 3030 3236 3722 3e3c 2f61 3e3c 7370 616e  00267\"></a><span\n-0000b400: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n-0000b410: 2020 3236 373c 2f73 7061 6e3e 2020 2020    267</span>    \n-0000b420: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000b430: 7d3c 2f64 6976 3e0a 3c64 6976 2063 6c61  }</div>.<div cla\n-0000b440: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n-0000b450: 226c 3030 3236 3822 206e 616d 653d 226c  \"l00268\" name=\"l\n-0000b460: 3030 3236 3822 3e3c 2f61 3e3c 7370 616e  00268\"></a><span\n-0000b470: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n-0000b480: 2020 3236 383c 2f73 7061 6e3e 2020 2020    268</span>    \n-0000b490: 2020 2020 2020 2020 2020 2020 7d20 3c73              } <s\n-0000b4a0: 7061 6e20 636c 6173 733d 226b 6579 776f  pan class=\"keywo\n-0000b4b0: 7264 666c 6f77 223e 656c 7365 3c2f 7370  rdflow\">else</sp\n-0000b4c0: 616e 3e20 7b3c 2f64 6976 3e0a 3c64 6976  an> {</div>.<div\n-0000b4d0: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n-0000b4e0: 2069 643d 226c 3030 3236 3922 206e 616d   id=\"l00269\" nam\n-0000b4f0: 653d 226c 3030 3236 3922 3e3c 2f61 3e3c  e=\"l00269\"></a><\n-0000b500: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n-0000b510: 6e6f 223e 2020 3236 393c 2f73 7061 6e3e  no\">  269</span>\n-0000b520: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000b530: 2020 2020 3c73 7061 6e20 636c 6173 733d      <span class=\n-0000b540: 226b 6579 776f 7264 666c 6f77 223e 666f  \"keywordflow\">fo\n-0000b550: 723c 2f73 7061 6e3e 2028 3c73 7061 6e20  r</span> (<span \n-0000b560: 636c 6173 733d 226b 6579 776f 7264 7479  class=\"keywordty\n-0000b570: 7065 223e 696e 743c 2f73 7061 6e3e 2069  pe\">int</span> i\n-0000b580: 203d 2030 3b20 6920 266c 743b 2065 6467   = 0; i &lt; edg\n-0000b590: 6557 6569 6768 7443 6f75 6e74 3b20 2b2b  eWeightCount; ++\n-0000b5a0: 6929 207b 3c2f 6469 763e 0a3c 6469 7620  i) {</div>.<div \n-0000b5b0: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n-0000b5c0: 6964 3d22 6c30 3032 3730 2220 6e61 6d65  id=\"l00270\" name\n-0000b5d0: 3d22 6c30 3032 3730 223e 3c2f 613e 3c73  =\"l00270\"></a><s\n-0000b5e0: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n-0000b5f0: 6f22 3e20 2032 3730 3c2f 7370 616e 3e20  o\">  270</span> \n-0000b600: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000b610: 2020 2020 2020 2064 7374 2e45 6467 6557         dst.EdgeW\n-0000b620: 6569 6768 7428 6929 203d 2064 7374 436f  eight(i) = dstCo\n-0000b630: 6566 6620 2a20 6473 742e 4564 6765 5765  eff * dst.EdgeWe\n-0000b640: 6967 6874 2869 2920 2b20 7468 6973 436f  ight(i) + thisCo\n-0000b650: 6566 6620 2a20 7468 6973 2d26 6774 3b3c  eff * this-&gt;<\n-0000b660: 6120 636c 6173 733d 2263 6f64 6520 686c  a class=\"code hl\n-0000b670: 5f66 756e 6374 696f 6e22 2068 7265 663d  _function\" href=\n-0000b680: 2261 3031 3334 352e 6874 6d6c 2361 3464  \"a01345.html#a4d\n-0000b690: 6239 3332 6138 6133 3366 6430 3632 3263  b932a8a33fd0622c\n-0000b6a0: 3764 3031 3136 3765 6231 3462 3532 223e  7d01167eb14b52\">\n-0000b6b0: 4564 6765 5765 6967 6874 3c2f 613e 2869  EdgeWeight</a>(i\n-0000b6c0: 293b 3c2f 6469 763e 0a3c 6469 7620 636c  );</div>.<div cl\n-0000b6d0: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n-0000b6e0: 3d22 6c30 3032 3731 2220 6e61 6d65 3d22  =\"l00271\" name=\"\n-0000b6f0: 6c30 3032 3731 223e 3c2f 613e 3c73 7061  l00271\"></a><spa\n-0000b700: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n-0000b710: 3e20 2032 3731 3c2f 7370 616e 3e20 2020  >  271</span>   \n-0000b720: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000b730: 207d 3c2f 6469 763e 0a3c 6469 7620 636c   }</div>.<div cl\n-0000b740: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n-0000b750: 3d22 6c30 3032 3732 2220 6e61 6d65 3d22  =\"l00272\" name=\"\n-0000b760: 6c30 3032 3732 223e 3c2f 613e 3c73 7061  l00272\"></a><spa\n-0000b770: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n-0000b780: 3e20 2032 3732 3c2f 7370 616e 3e20 2020  >  272</span>   \n-0000b790: 2020 2020 2020 2020 2020 2020 207d 3c2f               }</\n-0000b7a0: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n-0000b7b0: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n-0000b7c0: 3032 3733 2220 6e61 6d65 3d22 6c30 3032  0273\" name=\"l002\n-0000b7d0: 3733 223e 3c2f 613e 3c73 7061 6e20 636c  73\"></a><span cl\n-0000b7e0: 6173 733d 226c 696e 656e 6f22 3e20 2032  ass=\"lineno\">  2\n-0000b7f0: 3733 3c2f 7370 616e 3e20 2020 2020 2020  73</span>       \n-0000b800: 2020 2020 207d 3c2f 6469 763e 0a3c 6469       }</div>.<di\n-0000b810: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n-0000b820: 6120 6964 3d22 6c30 3032 3734 2220 6e61  a id=\"l00274\" na\n-0000b830: 6d65 3d22 6c30 3032 3734 223e 3c2f 613e  me=\"l00274\"></a>\n-0000b840: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n-0000b850: 656e 6f22 3e20 2032 3734 3c2f 7370 616e  eno\">  274</span\n-0000b860: 3e20 3c2f 6469 763e 0a3c 6469 7620 636c  > </div>.<div cl\n-0000b870: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n-0000b880: 3d22 6c30 3032 3735 2220 6e61 6d65 3d22  =\"l00275\" name=\"\n-0000b890: 6c30 3032 3735 223e 3c2f 613e 3c73 7061  l00275\"></a><spa\n-0000b8a0: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n-0000b8b0: 3e20 2032 3735 3c2f 7370 616e 3e20 2020  >  275</span>   \n-0000b8c0: 2020 2020 2020 2020 203c 7370 616e 2063           <span c\n-0000b8d0: 6c61 7373 3d22 6b65 7977 6f72 6474 7970  lass=\"keywordtyp\n-0000b8e0: 6522 3e69 6e74 3c2f 7370 616e 3e20 6661  e\">int</span> fa\n-0000b8f0: 6365 5765 6967 6874 436f 756e 7420 3d20  ceWeightCount = \n-0000b900: 7468 6973 2d26 6774 3b3c 6120 636c 6173  this-&gt;<a clas\n-0000b910: 733d 2263 6f64 6520 686c 5f66 756e 6374  s=\"code hl_funct\n-0000b920: 696f 6e22 2068 7265 663d 2261 3031 3334  ion\" href=\"a0134\n-0000b930: 352e 6874 6d6c 2361 3933 6635 3765 3533  5.html#a93f57e53\n-0000b940: 3337 3339 3163 3230 6434 3664 6566 6462  37391c20d46defdb\n-0000b950: 3361 6132 6331 6665 223e 4765 744e 756d  3aa2c1fe\">GetNum\n-0000b960: 4661 6365 5765 6967 6874 733c 2f61 3e28  FaceWeights</a>(\n-0000b970: 293b 3c2f 6469 763e 0a3c 6469 7620 636c  );</div>.<div cl\n-0000b980: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n-0000b990: 3d22 6c30 3032 3736 2220 6e61 6d65 3d22  =\"l00276\" name=\"\n-0000b9a0: 6c30 3032 3736 223e 3c2f 613e 3c73 7061  l00276\"></a><spa\n-0000b9b0: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n-0000b9c0: 3e20 2032 3736 3c2f 7370 616e 3e20 2020  >  276</span>   \n-0000b9d0: 2020 2020 2020 2020 203c 7370 616e 2063           <span c\n-0000b9e0: 6c61 7373 3d22 6b65 7977 6f72 6466 6c6f  lass=\"keywordflo\n-0000b9f0: 7722 3e69 663c 2f73 7061 6e3e 2028 6661  w\">if</span> (fa\n-0000ba00: 6365 5765 6967 6874 436f 756e 7429 207b  ceWeightCount) {\n-0000ba10: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n-0000ba20: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n-0000ba30: 6c30 3032 3737 2220 6e61 6d65 3d22 6c30  l00277\" name=\"l0\n-0000ba40: 3032 3737 223e 3c2f 613e 3c73 7061 6e20  0277\"></a><span \n-0000ba50: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n-0000ba60: 2032 3737 3c2f 7370 616e 3e20 2020 2020   277</span>     \n-0000ba70: 2020 2020 2020 2020 2020 203c 7370 616e             <span\n-0000ba80: 2063 6c61 7373 3d22 636f 6d6d 656e 7422   class=\"comment\"\n-0000ba90: 3e2f 2f3c 2f73 7061 6e3e 3c2f 6469 763e  >//</span></div>\n-0000baa0: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n-0000bab0: 6522 3e3c 6120 6964 3d22 6c30 3032 3738  e\"><a id=\"l00278\n-0000bac0: 2220 6e61 6d65 3d22 6c30 3032 3738 223e  \" name=\"l00278\">\n-0000bad0: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n-0000bae0: 226c 696e 656e 6f22 3e20 2032 3738 3c2f  \"lineno\">  278</\n-0000baf0: 7370 616e 3e20 2020 2020 2020 2020 2020  span>           \n-0000bb00: 2020 2020 203c 7370 616e 2063 6c61 7373       <span class\n-0000bb10: 3d22 636f 6d6d 656e 7422 3e2f 2f20 2049  =\"comment\">//  I\n-0000bb20: 6620 636f 6d62 696e 696e 6720 6661 6365  f combining face\n-0000bb30: 2077 6569 6768 7473 2c20 6265 2073 7572   weights, be sur\n-0000bb40: 6520 7468 6569 7220 696e 7465 7270 7265  e their interpre\n-0000bb50: 7461 7469 6f6e 2028 692e 652e 2066 6163  tation (i.e. fac\n-0000bb60: 652d 6365 6e74 6572 733c 2f73 7061 6e3e  e-centers</span>\n-0000bb70: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n-0000bb80: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n-0000bb90: 6c30 3032 3739 2220 6e61 6d65 3d22 6c30  l00279\" name=\"l0\n-0000bba0: 3032 3739 223e 3c2f 613e 3c73 7061 6e20  0279\"></a><span \n-0000bbb0: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n-0000bbc0: 2032 3739 3c2f 7370 616e 3e20 2020 2020   279</span>     \n-0000bbd0: 2020 2020 2020 2020 2020 203c 7370 616e             <span\n-0000bbe0: 2063 6c61 7373 3d22 636f 6d6d 656e 7422   class=\"comment\"\n-0000bbf0: 3e2f 2f20 206f 7220 6f70 706f 7369 7465  >//  or opposite\n-0000bc00: 2076 6572 7469 6365 7329 2069 7320 7072   vertices) is pr\n-0000bc10: 6f70 6572 6c79 2073 6574 2069 6e20 7468  operly set in th\n-0000bc20: 6520 6465 7374 696e 6174 696f 6e20 6d61  e destination ma\n-0000bc30: 736b 3a3c 2f73 7061 6e3e 3c2f 6469 763e  sk:</span></div>\n-0000bc40: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n-0000bc50: 6522 3e3c 6120 6964 3d22 6c30 3032 3830  e\"><a id=\"l00280\n-0000bc60: 2220 6e61 6d65 3d22 6c30 3032 3830 223e  \" name=\"l00280\">\n-0000bc70: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n-0000bc80: 226c 696e 656e 6f22 3e20 2032 3830 3c2f  \"lineno\">  280</\n-0000bc90: 7370 616e 3e20 2020 2020 2020 2020 2020  span>           \n-0000bca0: 2020 2020 203c 7370 616e 2063 6c61 7373       <span class\n-0000bcb0: 3d22 636f 6d6d 656e 7422 3e2f 2f3c 2f73  =\"comment\">//</s\n-0000bcc0: 7061 6e3e 3c2f 6469 763e 0a3c 6469 7620  pan></div>.<div \n-0000bcd0: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n-0000bce0: 6964 3d22 6c30 3032 3831 2220 6e61 6d65  id=\"l00281\" name\n-0000bcf0: 3d22 6c30 3032 3831 223e 3c2f 613e 3c73  =\"l00281\"></a><s\n-0000bd00: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n-0000bd10: 6f22 3e20 2032 3831 3c2f 7370 616e 3e20  o\">  281</span> \n-0000bd20: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-0000bd30: 7370 616e 2063 6c61 7373 3d22 6b65 7977  span class=\"keyw\n-0000bd40: 6f72 6466 6c6f 7722 3e69 663c 2f73 7061  ordflow\">if</spa\n-0000bd50: 6e3e 2028 6473 742e 4765 744e 756d 4661  n> (dst.GetNumFa\n-0000bd60: 6365 5765 6967 6874 7328 2920 3d3d 2030  ceWeights() == 0\n-0000bd70: 2920 7b3c 2f64 6976 3e0a 3c64 6976 2063  ) {</div>.<div c\n-0000bd80: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n-0000bd90: 643d 226c 3030 3238 3222 206e 616d 653d  d=\"l00282\" name=\n-0000bda0: 226c 3030 3238 3222 3e3c 2f61 3e3c 7370  \"l00282\"></a><sp\n-0000bdb0: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n-0000bdc0: 223e 2020 3238 323c 2f73 7061 6e3e 2020  \">  282</span>  \n-0000bdd0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000bde0: 2020 6473 742e 5365 744e 756d 4661 6365    dst.SetNumFace\n-0000bdf0: 5765 6967 6874 7328 6661 6365 5765 6967  Weights(faceWeig\n-0000be00: 6874 436f 756e 7429 3b3c 2f64 6976 3e0a  htCount);</div>.\n-0000be10: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n-0000be20: 223e 3c61 2069 643d 226c 3030 3238 3322  \"><a id=\"l00283\"\n-0000be30: 206e 616d 653d 226c 3030 3238 3322 3e3c   name=\"l00283\"><\n-0000be40: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n-0000be50: 6c69 6e65 6e6f 223e 2020 3238 333c 2f73  lineno\">  283</s\n-0000be60: 7061 6e3e 2020 2020 2020 2020 2020 2020  pan>            \n-0000be70: 2020 2020 2020 2020 6473 742e 5365 7446          dst.SetF\n-0000be80: 6163 6557 6569 6768 7473 466f 7246 6163  aceWeightsForFac\n-0000be90: 6543 656e 7465 7273 2874 6869 732d 2667  eCenters(this-&g\n-0000bea0: 743b 3c61 2063 6c61 7373 3d22 636f 6465  t;<a class=\"code\n-0000beb0: 2068 6c5f 6675 6e63 7469 6f6e 2220 6872   hl_function\" hr\n-0000bec0: 6566 3d22 6130 3133 3435 2e68 746d 6c23  ef=\"a01345.html#\n-0000bed0: 6133 3531 3965 3565 3035 3633 3130 3236  a3519e5e05631026\n-0000bee0: 6661 6439 3463 3736 3136 6635 6530 6536  fad94c7616f5e0e6\n-0000bef0: 3722 3e41 7265 4661 6365 5765 6967 6874  7\">AreFaceWeight\n-0000bf00: 7346 6f72 4661 6365 4365 6e74 6572 733c  sForFaceCenters<\n-0000bf10: 2f61 3e28 2929 3b3c 2f64 6976 3e0a 3c64  /a>());</div>.<d\n-0000bf20: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n-0000bf30: 3c61 2069 643d 226c 3030 3238 3422 206e  <a id=\"l00284\" n\n-0000bf40: 616d 653d 226c 3030 3238 3422 3e3c 2f61  ame=\"l00284\"></a\n-0000bf50: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n-0000bf60: 6e65 6e6f 223e 2020 3238 343c 2f73 7061  neno\">  284</spa\n-0000bf70: 6e3e 203c 2f64 6976 3e0a 3c64 6976 2063  n> </div>.<div c\n-0000bf80: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n-0000bf90: 643d 226c 3030 3238 3522 206e 616d 653d  d=\"l00285\" name=\n-0000bfa0: 226c 3030 3238 3522 3e3c 2f61 3e3c 7370  \"l00285\"></a><sp\n-0000bfb0: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n-0000bfc0: 223e 2020 3238 353c 2f73 7061 6e3e 2020  \">  285</span>  \n-0000bfd0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000bfe0: 2020 3c73 7061 6e20 636c 6173 733d 226b    <span class=\"k\n-0000bff0: 6579 776f 7264 666c 6f77 223e 666f 723c  eywordflow\">for<\n-0000c000: 2f73 7061 6e3e 2028 3c73 7061 6e20 636c  /span> (<span cl\n-0000c010: 6173 733d 226b 6579 776f 7264 7479 7065  ass=\"keywordtype\n-0000c020: 223e 696e 743c 2f73 7061 6e3e 2069 203d  \">int</span> i =\n-0000c030: 2030 3b20 6920 266c 743b 2066 6163 6557   0; i &lt; faceW\n-0000c040: 6569 6768 7443 6f75 6e74 3b20 2b2b 6929  eightCount; ++i)\n-0000c050: 207b 3c2f 6469 763e 0a3c 6469 7620 636c   {</div>.<div cl\n-0000c060: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n-0000c070: 3d22 6c30 3032 3836 2220 6e61 6d65 3d22  =\"l00286\" name=\"\n-0000c080: 6c30 3032 3836 223e 3c2f 613e 3c73 7061  l00286\"></a><spa\n-0000c090: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n-0000c0a0: 3e20 2032 3836 3c2f 7370 616e 3e20 2020  >  286</span>   \n-0000c0b0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000c0c0: 2020 2020 2064 7374 2e46 6163 6557 6569       dst.FaceWei\n-0000c0d0: 6768 7428 6929 203d 2074 6869 7343 6f65  ght(i) = thisCoe\n-0000c0e0: 6666 202a 2074 6869 732d 2667 743b 3c61  ff * this-&gt;<a\n-0000c0f0: 2063 6c61 7373 3d22 636f 6465 2068 6c5f   class=\"code hl_\n-0000c100: 6675 6e63 7469 6f6e 2220 6872 6566 3d22  function\" href=\"\n-0000c110: 6130 3133 3435 2e68 746d 6c23 6136 3734  a01345.html#a674\n-0000c120: 6461 3131 3238 3839 3561 3863 6261 6661  da1128895a8cbafa\n-0000c130: 3663 3065 6334 3965 3961 6563 3022 3e46  6c0ec49e9aec0\">F\n-0000c140: 6163 6557 6569 6768 743c 2f61 3e28 6929  aceWeight</a>(i)\n-0000c150: 3b3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ;</div>.<div cla\n-0000c160: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n-0000c170: 226c 3030 3238 3722 206e 616d 653d 226c  \"l00287\" name=\"l\n-0000c180: 3030 3238 3722 3e3c 2f61 3e3c 7370 616e  00287\"></a><span\n-0000c190: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n-0000c1a0: 2020 3238 373c 2f73 7061 6e3e 2020 2020    287</span>    \n-0000c1b0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000c1c0: 7d3c 2f64 6976 3e0a 3c64 6976 2063 6c61  }</div>.<div cla\n-0000c1d0: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n-0000c1e0: 226c 3030 3238 3822 206e 616d 653d 226c  \"l00288\" name=\"l\n-0000c1f0: 3030 3238 3822 3e3c 2f61 3e3c 7370 616e  00288\"></a><span\n-0000c200: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n-0000c210: 2020 3238 383c 2f73 7061 6e3e 2020 2020    288</span>    \n-0000c220: 2020 2020 2020 2020 2020 2020 7d20 3c73              } <s\n-0000c230: 7061 6e20 636c 6173 733d 226b 6579 776f  pan class=\"keywo\n-0000c240: 7264 666c 6f77 223e 656c 7365 3c2f 7370  rdflow\">else</sp\n-0000c250: 616e 3e20 7b3c 2f64 6976 3e0a 3c64 6976  an> {</div>.<div\n-0000c260: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n-0000c270: 2069 643d 226c 3030 3238 3922 206e 616d   id=\"l00289\" nam\n-0000c280: 653d 226c 3030 3238 3922 3e3c 2f61 3e3c  e=\"l00289\"></a><\n-0000c290: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n-0000c2a0: 6e6f 223e 2020 3238 393c 2f73 7061 6e3e  no\">  289</span>\n-0000c2b0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000c2c0: 2020 2020 6173 7365 7274 2874 6869 732d      assert(this-\n-0000c2d0: 2667 743b 3c61 2063 6c61 7373 3d22 636f  &gt;<a class=\"co\n-0000c2e0: 6465 2068 6c5f 6675 6e63 7469 6f6e 2220  de hl_function\" \n-0000c2f0: 6872 6566 3d22 6130 3133 3435 2e68 746d  href=\"a01345.htm\n-0000c300: 6c23 6133 3531 3965 3565 3035 3633 3130  l#a3519e5e056310\n-0000c310: 3236 6661 6439 3463 3736 3136 6635 6530  26fad94c7616f5e0\n-0000c320: 6536 3722 3e41 7265 4661 6365 5765 6967  e67\">AreFaceWeig\n-0000c330: 6874 7346 6f72 4661 6365 4365 6e74 6572  htsForFaceCenter\n-0000c340: 733c 2f61 3e28 2920 3d3d 2064 7374 2e41  s</a>() == dst.A\n-0000c350: 7265 4661 6365 5765 6967 6874 7346 6f72  reFaceWeightsFor\n-0000c360: 4661 6365 4365 6e74 6572 7328 2929 3b3c  FaceCenters());<\n-0000c370: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n-0000c380: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n-0000c390: 3030 3239 3022 206e 616d 653d 226c 3030  00290\" name=\"l00\n-0000c3a0: 3239 3022 3e3c 2f61 3e3c 7370 616e 2063  290\"></a><span c\n-0000c3b0: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n-0000c3c0: 3239 303c 2f73 7061 6e3e 203c 2f64 6976  290</span> </div\n-0000c3d0: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n-0000c3e0: 6e65 223e 3c61 2069 643d 226c 3030 3239  ne\"><a id=\"l0029\n-0000c3f0: 3122 206e 616d 653d 226c 3030 3239 3122  1\" name=\"l00291\"\n-0000c400: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n-0000c410: 3d22 6c69 6e65 6e6f 223e 2020 3239 313c  =\"lineno\">  291<\n-0000c420: 2f73 7061 6e3e 2020 2020 2020 2020 2020  /span>          \n-0000c430: 2020 2020 2020 2020 2020 3c73 7061 6e20            <span \n-0000c440: 636c 6173 733d 226b 6579 776f 7264 666c  class=\"keywordfl\n-0000c450: 6f77 223e 666f 723c 2f73 7061 6e3e 2028  ow\">for</span> (\n-0000c460: 3c73 7061 6e20 636c 6173 733d 226b 6579  <span class=\"key\n-0000c470: 776f 7264 7479 7065 223e 696e 743c 2f73  wordtype\">int</s\n-0000c480: 7061 6e3e 2069 203d 2030 3b20 6920 266c  pan> i = 0; i &l\n-0000c490: 743b 2066 6163 6557 6569 6768 7443 6f75  t; faceWeightCou\n-0000c4a0: 6e74 3b20 2b2b 6929 207b 3c2f 6469 763e  nt; ++i) {</div>\n-0000c4b0: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n-0000c4c0: 6522 3e3c 6120 6964 3d22 6c30 3032 3932  e\"><a id=\"l00292\n-0000c4d0: 2220 6e61 6d65 3d22 6c30 3032 3932 223e  \" name=\"l00292\">\n-0000c4e0: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n-0000c4f0: 226c 696e 656e 6f22 3e20 2032 3932 3c2f  \"lineno\">  292</\n-0000c500: 7370 616e 3e20 2020 2020 2020 2020 2020  span>           \n-0000c510: 2020 2020 2020 2020 2020 2020 2064 7374               dst\n-0000c520: 2e46 6163 6557 6569 6768 7428 6929 203d  .FaceWeight(i) =\n-0000c530: 2064 7374 436f 6566 6620 2a20 6473 742e   dstCoeff * dst.\n-0000c540: 4661 6365 5765 6967 6874 2869 2920 2b20  FaceWeight(i) + \n-0000c550: 7468 6973 436f 6566 6620 2a20 7468 6973  thisCoeff * this\n-0000c560: 2d26 6774 3b3c 6120 636c 6173 733d 2263  -&gt;<a class=\"c\n-0000c570: 6f64 6520 686c 5f66 756e 6374 696f 6e22  ode hl_function\"\n-0000c580: 2068 7265 663d 2261 3031 3334 352e 6874   href=\"a01345.ht\n-0000c590: 6d6c 2361 3637 3464 6131 3132 3838 3935  ml#a674da1128895\n-0000c5a0: 6138 6362 6166 6136 6330 6563 3439 6539  a8cbafa6c0ec49e9\n-0000c5b0: 6165 6330 223e 4661 6365 5765 6967 6874  aec0\">FaceWeight\n-0000c5c0: 3c2f 613e 2869 293b 3c2f 6469 763e 0a3c  </a>(i);</div>.<\n-0000c5d0: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n-0000c5e0: 3e3c 6120 6964 3d22 6c30 3032 3933 2220  ><a id=\"l00293\" \n-0000c5f0: 6e61 6d65 3d22 6c30 3032 3933 223e 3c2f  name=\"l00293\"></\n-0000c600: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n-0000c610: 696e 656e 6f22 3e20 2032 3933 3c2f 7370  ineno\">  293</sp\n-0000c620: 616e 3e20 2020 2020 2020 2020 2020 2020  an>             \n-0000c630: 2020 2020 2020 207d 3c2f 6469 763e 0a3c         }</div>.<\n-0000c640: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n-0000c650: 3e3c 6120 6964 3d22 6c30 3032 3934 2220  ><a id=\"l00294\" \n-0000c660: 6e61 6d65 3d22 6c30 3032 3934 223e 3c2f  name=\"l00294\"></\n-0000c670: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n-0000c680: 696e 656e 6f22 3e20 2032 3934 3c2f 7370  ineno\">  294</sp\n-0000c690: 616e 3e20 2020 2020 2020 2020 2020 2020  an>             \n-0000c6a0: 2020 207d 3c2f 6469 763e 0a3c 6469 7620     }</div>.<div \n-0000c6b0: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n-0000c6c0: 6964 3d22 6c30 3032 3935 2220 6e61 6d65  id=\"l00295\" name\n-0000c6d0: 3d22 6c30 3032 3935 223e 3c2f 613e 3c73  =\"l00295\"></a><s\n-0000c6e0: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n-0000c6f0: 6f22 3e20 2032 3935 3c2f 7370 616e 3e20  o\">  295</span> \n-0000c700: 2020 2020 2020 2020 2020 207d 3c2f 6469             }</di\n-0000c710: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n-0000c720: 696e 6522 3e3c 6120 6964 3d22 6c30 3032  ine\"><a id=\"l002\n-0000c730: 3936 2220 6e61 6d65 3d22 6c30 3032 3936  96\" name=\"l00296\n-0000c740: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n-0000c750: 733d 226c 696e 656e 6f22 3e20 2032 3936  s=\"lineno\">  296\n-0000c760: 3c2f 7370 616e 3e20 2020 2020 2020 207d  </span>        }\n-0000c770: 3c2f 6469 763e 0a3c 2f64 6976 3e0a 3c64  </div>.</div>.<d\n-0000c780: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n-0000c790: 3c61 2069 643d 226c 3030 3239 3722 206e  <a id=\"l00297\" n\n-0000c7a0: 616d 653d 226c 3030 3239 3722 3e3c 2f61  ame=\"l00297\"></a\n-0000c7b0: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n-0000c7c0: 6e65 6e6f 223e 2020 3239 373c 2f73 7061  neno\">  297</spa\n-0000c7d0: 6e3e 203c 2f64 6976 3e0a 3c64 6976 2063  n> </div>.<div c\n-0000c7e0: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n-0000c7f0: 643d 226c 3030 3239 3822 206e 616d 653d  d=\"l00298\" name=\n-0000c800: 226c 3030 3239 3822 3e3c 2f61 3e3c 7370  \"l00298\"></a><sp\n-0000c810: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n-0000c820: 223e 2020 3239 383c 2f73 7061 6e3e 2020  \">  298</span>  \n-0000c830: 2020 3c73 7061 6e20 636c 6173 733d 226b    <span class=\"k\n-0000c840: 6579 776f 7264 223e 7072 6976 6174 653c  eyword\">private<\n-0000c850: 2f73 7061 6e3e 3a3c 2f64 6976 3e0a 3c64  /span>:</div>.<d\n-0000c860: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n-0000c870: 3c61 2069 643d 226c 3030 3239 3922 206e  <a id=\"l00299\" n\n-0000c880: 616d 653d 226c 3030 3239 3922 3e3c 2f61  ame=\"l00299\"></a\n-0000c890: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n-0000c8a0: 6e65 6e6f 223e 2020 3239 393c 2f73 7061  neno\">  299</spa\n-0000c8b0: 6e3e 2020 2020 2020 2020 3c61 2063 6c61  n>        <a cla\n-0000c8c0: 7373 3d22 636f 6465 2068 6c5f 7479 7065  ss=\"code hl_type\n-0000c8d0: 6465 6622 2068 7265 663d 2261 3031 3334  def\" href=\"a0134\n-0000c8e0: 352e 6874 6d6c 2361 3137 3365 3938 6530  5.html#a173e98e0\n-0000c8f0: 6431 6233 6431 3566 3563 3361 6434 3336  d1b3d15f5c3ad436\n-0000c900: 6430 6665 6434 3031 223e 5765 6967 6874  d0fed401\">Weight\n-0000c910: 3c2f 613e 2a20 5f76 5765 6967 6874 733b  </a>* _vWeights;\n-0000c920: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n-0000c930: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n-0000c940: 6c30 3033 3030 2220 6e61 6d65 3d22 6c30  l00300\" name=\"l0\n-0000c950: 3033 3030 223e 3c2f 613e 3c73 7061 6e20  0300\"></a><span \n-0000c960: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n-0000c970: 2033 3030 3c2f 7370 616e 3e20 2020 2020   300</span>     \n-0000c980: 2020 203c 6120 636c 6173 733d 2263 6f64     <a class=\"cod\n-0000c990: 6520 686c 5f74 7970 6564 6566 2220 6872  e hl_typedef\" hr\n-0000c9a0: 6566 3d22 6130 3133 3435 2e68 746d 6c23  ef=\"a01345.html#\n-0000c9b0: 6131 3733 6539 3865 3064 3162 3364 3135  a173e98e0d1b3d15\n-0000c9c0: 6635 6333 6164 3433 3664 3066 6564 3430  f5c3ad436d0fed40\n-0000c9d0: 3122 3e57 6569 6768 743c 2f61 3e2a 205f  1\">Weight</a>* _\n-0000c9e0: 6557 6569 6768 7473 3b3c 2f64 6976 3e0a  eWeights;</div>.\n-0000c9f0: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n-0000ca00: 223e 3c61 2069 643d 226c 3030 3330 3122  \"><a id=\"l00301\"\n-0000ca10: 206e 616d 653d 226c 3030 3330 3122 3e3c   name=\"l00301\"><\n-0000ca20: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n-0000ca30: 6c69 6e65 6e6f 223e 2020 3330 313c 2f73  lineno\">  301</s\n-0000ca40: 7061 6e3e 2020 2020 2020 2020 3c61 2063  pan>        <a c\n-0000ca50: 6c61 7373 3d22 636f 6465 2068 6c5f 7479  lass=\"code hl_ty\n-0000ca60: 7065 6465 6622 2068 7265 663d 2261 3031  pedef\" href=\"a01\n-0000ca70: 3334 352e 6874 6d6c 2361 3137 3365 3938  345.html#a173e98\n-0000ca80: 6530 6431 6233 6431 3566 3563 3361 6434  e0d1b3d15f5c3ad4\n-0000ca90: 3336 6430 6665 6434 3031 223e 5765 6967  36d0fed401\">Weig\n-0000caa0: 6874 3c2f 613e 2a20 5f66 5765 6967 6874  ht</a>* _fWeight\n-0000cab0: 733b 3c2f 6469 763e 0a3c 6469 7620 636c  s;</div>.<div cl\n-0000cac0: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n-0000cad0: 3d22 6c30 3033 3032 2220 6e61 6d65 3d22  =\"l00302\" name=\"\n-0000cae0: 6c30 3033 3032 223e 3c2f 613e 3c73 7061  l00302\"></a><spa\n-0000caf0: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n-0000cb00: 3e20 2033 3032 3c2f 7370 616e 3e20 2020  >  302</span>   \n-0000cb10: 2020 2020 203c 7370 616e 2063 6c61 7373       <span class\n-0000cb20: 3d22 6b65 7977 6f72 6474 7970 6522 3e69  =\"keywordtype\">i\n-0000cb30: 6e74 3c2f 7370 616e 3e20 5f76 436f 756e  nt</span> _vCoun\n-0000cb40: 743b 3c2f 6469 763e 0a3c 6469 7620 636c  t;</div>.<div cl\n-0000cb50: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n-0000cb60: 3d22 6c30 3033 3033 2220 6e61 6d65 3d22  =\"l00303\" name=\"\n-0000cb70: 6c30 3033 3033 223e 3c2f 613e 3c73 7061  l00303\"></a><spa\n-0000cb80: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n-0000cb90: 3e20 2033 3033 3c2f 7370 616e 3e20 2020  >  303</span>   \n-0000cba0: 2020 2020 203c 7370 616e 2063 6c61 7373       <span class\n-0000cbb0: 3d22 6b65 7977 6f72 6474 7970 6522 3e69  =\"keywordtype\">i\n-0000cbc0: 6e74 3c2f 7370 616e 3e20 5f65 436f 756e  nt</span> _eCoun\n-0000cbd0: 743b 3c2f 6469 763e 0a3c 6469 7620 636c  t;</div>.<div cl\n-0000cbe0: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n-0000cbf0: 3d22 6c30 3033 3034 2220 6e61 6d65 3d22  =\"l00304\" name=\"\n-0000cc00: 6c30 3033 3034 223e 3c2f 613e 3c73 7061  l00304\"></a><spa\n-0000cc10: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n-0000cc20: 3e20 2033 3034 3c2f 7370 616e 3e20 2020  >  304</span>   \n-0000cc30: 2020 2020 203c 7370 616e 2063 6c61 7373       <span class\n-0000cc40: 3d22 6b65 7977 6f72 6474 7970 6522 3e69  =\"keywordtype\">i\n-0000cc50: 6e74 3c2f 7370 616e 3e20 5f66 436f 756e  nt</span> _fCoun\n-0000cc60: 743b 3c2f 6469 763e 0a3c 6469 7620 636c  t;</div>.<div cl\n-0000cc70: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n-0000cc80: 3d22 6c30 3033 3035 2220 6e61 6d65 3d22  =\"l00305\" name=\"\n-0000cc90: 6c30 3033 3035 223e 3c2f 613e 3c73 7061  l00305\"></a><spa\n-0000cca0: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n-0000ccb0: 3e20 2033 3035 3c2f 7370 616e 3e20 2020  >  305</span>   \n-0000ccc0: 2020 2020 203c 7370 616e 2063 6c61 7373       <span class\n-0000ccd0: 3d22 6b65 7977 6f72 6474 7970 6522 3e62  =\"keywordtype\">b\n-0000cce0: 6f6f 6c3c 2f73 7061 6e3e 205f 6657 6569  ool</span> _fWei\n-0000ccf0: 6768 7473 466f 7243 656e 7465 7273 3b3c  ghtsForCenters;<\n-0000cd00: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n-0000cd10: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n-0000cd20: 3030 3330 3622 206e 616d 653d 226c 3030  00306\" name=\"l00\n-0000cd30: 3330 3622 3e3c 2f61 3e3c 7370 616e 2063  306\"></a><span c\n-0000cd40: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n-0000cd50: 3330 363c 2f73 7061 6e3e 2020 2020 7d3b  306</span>    };\n-0000cd60: 3c2f 6469 763e 0a3c 2f64 6976 3e0a 3c64  </div>.</div>.<d\n-0000cd70: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n-0000cd80: 3c61 2069 643d 226c 3030 3330 3722 206e  <a id=\"l00307\" n\n-0000cd90: 616d 653d 226c 3030 3330 3722 3e3c 2f61  ame=\"l00307\"></a\n-0000cda0: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n-0000cdb0: 6e65 6e6f 223e 2020 3330 373c 2f73 7061  neno\">  307</spa\n-0000cdc0: 6e3e 7d3b 3c2f 6469 763e 0a3c 2f64 6976  n>};</div>.</div\n-0000cdd0: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n-0000cde0: 6e65 223e 3c61 2069 643d 226c 3030 3330  ne\"><a id=\"l0030\n-0000cdf0: 3822 206e 616d 653d 226c 3030 3330 3822  8\" name=\"l00308\"\n-0000ce00: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n-0000ce10: 3d22 6c69 6e65 6e6f 223e 2020 3330 383c  =\"lineno\">  308<\n-0000ce20: 2f73 7061 6e3e 203c 2f64 6976 3e0a 3c64  /span> </div>.<d\n-0000ce30: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n-0000ce40: 3c61 2069 643d 226c 3030 3330 3922 206e  <a id=\"l00309\" n\n-0000ce50: 616d 653d 226c 3030 3330 3922 3e3c 2f61  ame=\"l00309\"></a\n-0000ce60: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n-0000ce70: 6e65 6e6f 223e 2020 3330 393c 2f73 7061  neno\">  309</spa\n-0000ce80: 6e3e 203c 2f64 6976 3e0a 3c64 6976 2063  n> </div>.<div c\n-0000ce90: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n-0000cea0: 643d 226c 3030 3331 3022 206e 616d 653d  d=\"l00310\" name=\n-0000ceb0: 226c 3030 3331 3022 3e3c 2f61 3e3c 7370  \"l00310\"></a><sp\n-0000cec0: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n-0000ced0: 223e 2020 3331 303c 2f73 7061 6e3e 3c73  \">  310</span><s\n-0000cee0: 7061 6e20 636c 6173 733d 2263 6f6d 6d65  pan class=\"comme\n-0000cef0: 6e74 223e 2f2f 3c2f 7370 616e 3e3c 2f64  nt\">//</span></d\n-0000cf00: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n-0000cf10: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n-0000cf20: 3331 3122 206e 616d 653d 226c 3030 3331  311\" name=\"l0031\n-0000cf30: 3122 3e3c 2f61 3e3c 7370 616e 2063 6c61  1\"></a><span cla\n-0000cf40: 7373 3d22 6c69 6e65 6e6f 223e 2020 3331  ss=\"lineno\">  31\n-0000cf50: 313c 2f73 7061 6e3e 3c73 7061 6e20 636c  1</span><span cl\n-0000cf60: 6173 733d 2263 6f6d 6d65 6e74 223e 2f2f  ass=\"comment\">//\n-0000cf70: 2020 4372 6561 7365 2061 6e64 2063 6f72    Crease and cor\n-0000cf80: 6e65 7220 6d61 736b 7320 6172 6520 636f  ner masks are co\n-0000cf90: 6d6d 6f6e 2074 6f20 6d6f 7374 2073 6368  mmon to most sch\n-0000cfa0: 656d 6573 202d 2d20 7468 6520 7265 7374  emes -- the rest\n-0000cfb0: 206e 6565 6420 746f 2062 6520 7072 6f76   need to be prov\n-0000cfc0: 6964 6564 3c2f 7370 616e 3e3c 2f64 6976  ided</span></div\n-0000cfd0: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n-0000cfe0: 6e65 223e 3c61 2069 643d 226c 3030 3331  ne\"><a id=\"l0031\n-0000cff0: 3222 206e 616d 653d 226c 3030 3331 3222  2\" name=\"l00312\"\n-0000d000: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n-0000d010: 3d22 6c69 6e65 6e6f 223e 2020 3331 323c  =\"lineno\">  312<\n-0000d020: 2f73 7061 6e3e 3c73 7061 6e20 636c 6173  /span><span clas\n-0000d030: 733d 2263 6f6d 6d65 6e74 223e 2f2f 2020  s=\"comment\">//  \n-0000d040: 666f 7220 6561 6368 2053 6368 656d 6520  for each Scheme \n-0000d050: 7370 6563 6961 6c69 7a61 7469 6f6e 2e3c  specialization.<\n-0000d060: 2f73 7061 6e3e 3c2f 6469 763e 0a3c 6469  /span></div>.<di\n-0000d070: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n-0000d080: 6120 6964 3d22 6c30 3033 3133 2220 6e61  a id=\"l00313\" na\n-0000d090: 6d65 3d22 6c30 3033 3133 223e 3c2f 613e  me=\"l00313\"></a>\n-0000d0a0: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n-0000d0b0: 656e 6f22 3e20 2033 3133 3c2f 7370 616e  eno\">  313</span\n-0000d0c0: 3e3c 7370 616e 2063 6c61 7373 3d22 636f  ><span class=\"co\n-0000d0d0: 6d6d 656e 7422 3e2f 2f3c 2f73 7061 6e3e  mment\">//</span>\n-0000d0e0: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n-0000d0f0: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n-0000d100: 6c30 3033 3134 2220 6e61 6d65 3d22 6c30  l00314\" name=\"l0\n-0000d110: 3033 3134 223e 3c2f 613e 3c73 7061 6e20  0314\"></a><span \n-0000d120: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n-0000d130: 2033 3134 3c2f 7370 616e 3e3c 7370 616e   314</span><span\n-0000d140: 2063 6c61 7373 3d22 6b65 7977 6f72 6422   class=\"keyword\"\n-0000d150: 3e74 656d 706c 6174 653c 2f73 7061 6e3e  >template</span>\n-0000d160: 2026 6c74 3b53 6368 656d 6554 7970 6520   &lt;SchemeType \n-0000d170: 5343 4845 4d45 2667 743b 3c2f 6469 763e  SCHEME&gt;</div>\n-0000d180: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n-0000d190: 6522 3e3c 6120 6964 3d22 6c30 3033 3135  e\"><a id=\"l00315\n-0000d1a0: 2220 6e61 6d65 3d22 6c30 3033 3135 223e  \" name=\"l00315\">\n-0000d1b0: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n-0000d1c0: 226c 696e 656e 6f22 3e20 2033 3135 3c2f  \"lineno\">  315</\n-0000d1d0: 7370 616e 3e3c 7370 616e 2063 6c61 7373  span><span class\n-0000d1e0: 3d22 6b65 7977 6f72 6422 3e74 656d 706c  =\"keyword\">templ\n-0000d1f0: 6174 653c 2f73 7061 6e3e 2026 6c74 3b3c  ate</span> &lt;<\n-0000d200: 7370 616e 2063 6c61 7373 3d22 6b65 7977  span class=\"keyw\n-0000d210: 6f72 6422 3e74 7970 656e 616d 653c 2f73  ord\">typename</s\n-0000d220: 7061 6e3e 2045 4447 452c 203c 7370 616e  pan> EDGE, <span\n-0000d230: 2063 6c61 7373 3d22 6b65 7977 6f72 6422   class=\"keyword\"\n-0000d240: 3e74 7970 656e 616d 653c 2f73 7061 6e3e  >typename</span>\n-0000d250: 204d 4153 4b26 6774 3b3c 2f64 6976 3e0a   MASK&gt;</div>.\n-0000d260: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n-0000d270: 223e 3c61 2069 643d 226c 3030 3331 3622  \"><a id=\"l00316\"\n-0000d280: 206e 616d 653d 226c 3030 3331 3622 3e3c   name=\"l00316\"><\n-0000d290: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n-0000d2a0: 6c69 6e65 6e6f 223e 2020 3331 363c 2f73  lineno\">  316</s\n-0000d2b0: 7061 6e3e 3c73 7061 6e20 636c 6173 733d  pan><span class=\n-0000d2c0: 226b 6579 776f 7264 223e 696e 6c69 6e65  \"keyword\">inline\n-0000d2d0: 3c2f 7370 616e 3e20 3c73 7061 6e20 636c  </span> <span cl\n-0000d2e0: 6173 733d 226b 6579 776f 7264 7479 7065  ass=\"keywordtype\n-0000d2f0: 223e 766f 6964 3c2f 7370 616e 3e3c 2f64  \">void</span></d\n-0000d300: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n-0000d310: 666f 6c64 6f70 656e 2220 6964 3d22 666f  foldopen\" id=\"fo\n-0000d320: 6c64 6f70 656e 3030 3331 3722 2064 6174  ldopen00317\" dat\n-0000d330: 612d 7374 6172 743d 227b 2220 6461 7461  a-start=\"{\" data\n-0000d340: 2d65 6e64 3d22 7d22 3e0a 3c64 6976 2063  -end=\"}\">.<div c\n-0000d350: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n-0000d360: 643d 226c 3030 3331 3722 206e 616d 653d  d=\"l00317\" name=\n-0000d370: 226c 3030 3331 3722 3e3c 2f61 3e3c 7370  \"l00317\"></a><sp\n-0000d380: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n-0000d390: 223e 3c61 2063 6c61 7373 3d22 6c69 6e65  \"><a class=\"line\n-0000d3a0: 2220 6872 6566 3d22 6130 3133 3431 2e68  \" href=\"a01341.h\n-0000d3b0: 746d 6c23 6135 3639 3634 6134 6337 3833  tml#a56964a4c783\n-0000d3c0: 6161 3135 6563 3166 3831 3933 3036 6565  aa15ec1f819306ee\n-0000d3d0: 3966 3231 3422 3e20 2033 3137 3c2f 613e  9f214\">  317</a>\n-0000d3e0: 3c2f 7370 616e 3e3c 6120 636c 6173 733d  </span><a class=\n-0000d3f0: 2263 6f64 6520 686c 5f66 756e 6374 696f  \"code hl_functio\n-0000d400: 6e22 2068 7265 663d 2261 3031 3334 312e  n\" href=\"a01341.\n-0000d410: 6874 6d6c 2361 3536 3936 3461 3463 3738  html#a56964a4c78\n-0000d420: 3361 6131 3565 6331 6638 3139 3330 3665  3aa15ec1f819306e\n-0000d430: 6539 6632 3134 223e 5363 6865 6d65 266c  e9f214\">Scheme&l\n-0000d440: 743b 5343 4845 4d45 2667 743b 3a3a 6173  t;SCHEME&gt;::as\n-0000d450: 7369 676e 4372 6561 7365 4d61 736b 466f  signCreaseMaskFo\n-0000d460: 7245 6467 653c 2f61 3e28 4544 4745 203c  rEdge</a>(EDGE <\n-0000d470: 7370 616e 2063 6c61 7373 3d22 6b65 7977  span class=\"keyw\n-0000d480: 6f72 6422 3e63 6f6e 7374 3c2f 7370 616e  ord\">const</span\n-0000d490: 3e26 616d 703b 2c20 4d41 534b 2661 6d70  >&amp;, MASK&amp\n-0000d4a0: 3b20 6d61 736b 293c 7370 616e 2063 6c61  ; mask)<span cla\n-0000d4b0: 7373 3d22 6b65 7977 6f72 6422 3e20 636f  ss=\"keyword\"> co\n-0000d4c0: 6e73 7420 3c2f 7370 616e 3e7b 3c2f 6469  nst </span>{</di\n-0000d4d0: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n-0000d4e0: 696e 6522 3e3c 6120 6964 3d22 6c30 3033  ine\"><a id=\"l003\n-0000d4f0: 3138 2220 6e61 6d65 3d22 6c30 3033 3138  18\" name=\"l00318\n-0000d500: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n-0000d510: 733d 226c 696e 656e 6f22 3e20 2033 3138  s=\"lineno\">  318\n-0000d520: 3c2f 7370 616e 3e20 3c2f 6469 763e 0a3c  </span> </div>.<\n-0000d530: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n-0000d540: 3e3c 6120 6964 3d22 6c30 3033 3139 2220  ><a id=\"l00319\" \n-0000d550: 6e61 6d65 3d22 6c30 3033 3139 223e 3c2f  name=\"l00319\"></\n-0000d560: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n-0000d570: 696e 656e 6f22 3e20 2033 3139 3c2f 7370  ineno\">  319</sp\n-0000d580: 616e 3e20 2020 206d 6173 6b2e 5365 744e  an>    mask.SetN\n-0000d590: 756d 5665 7274 6578 5765 6967 6874 7328  umVertexWeights(\n-0000d5a0: 3229 3b3c 2f64 6976 3e0a 3c64 6976 2063  2);</div>.<div c\n-0000d5b0: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n-0000d5c0: 643d 226c 3030 3332 3022 206e 616d 653d  d=\"l00320\" name=\n-0000d5d0: 226c 3030 3332 3022 3e3c 2f61 3e3c 7370  \"l00320\"></a><sp\n-0000d5e0: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n-0000d5f0: 223e 2020 3332 303c 2f73 7061 6e3e 2020  \">  320</span>  \n-0000d600: 2020 6d61 736b 2e53 6574 4e75 6d45 6467    mask.SetNumEdg\n-0000d610: 6557 6569 6768 7473 2830 293b 3c2f 6469  eWeights(0);</di\n-0000d620: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n-0000d630: 696e 6522 3e3c 6120 6964 3d22 6c30 3033  ine\"><a id=\"l003\n-0000d640: 3231 2220 6e61 6d65 3d22 6c30 3033 3231  21\" name=\"l00321\n-0000d650: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n-0000d660: 733d 226c 696e 656e 6f22 3e20 2033 3231  s=\"lineno\">  321\n-0000d670: 3c2f 7370 616e 3e20 2020 206d 6173 6b2e  </span>    mask.\n-0000d680: 5365 744e 756d 4661 6365 5765 6967 6874  SetNumFaceWeight\n-0000d690: 7328 3029 3b3c 2f64 6976 3e0a 3c64 6976  s(0);</div>.<div\n-0000d6a0: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n-0000d6b0: 2069 643d 226c 3030 3332 3222 206e 616d   id=\"l00322\" nam\n-0000d6c0: 653d 226c 3030 3332 3222 3e3c 2f61 3e3c  e=\"l00322\"></a><\n-0000d6d0: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n-0000d6e0: 6e6f 223e 2020 3332 323c 2f73 7061 6e3e  no\">  322</span>\n-0000d6f0: 2020 2020 6d61 736b 2e53 6574 4661 6365      mask.SetFace\n-0000d700: 5765 6967 6874 7346 6f72 4661 6365 4365  WeightsForFaceCe\n-0000d710: 6e74 6572 7328 3c73 7061 6e20 636c 6173  nters(<span clas\n-0000d720: 733d 226b 6579 776f 7264 223e 6661 6c73  s=\"keyword\">fals\n-0000d730: 653c 2f73 7061 6e3e 293b 3c2f 6469 763e  e</span>);</div>\n-0000d740: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n-0000d750: 6522 3e3c 6120 6964 3d22 6c30 3033 3233  e\"><a id=\"l00323\n-0000d760: 2220 6e61 6d65 3d22 6c30 3033 3233 223e  \" name=\"l00323\">\n-0000d770: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n-0000d780: 226c 696e 656e 6f22 3e20 2033 3233 3c2f  \"lineno\">  323</\n-0000d790: 7370 616e 3e20 3c2f 6469 763e 0a3c 6469  span> </div>.<di\n-0000d7a0: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n-0000d7b0: 6120 6964 3d22 6c30 3033 3234 2220 6e61  a id=\"l00324\" na\n-0000d7c0: 6d65 3d22 6c30 3033 3234 223e 3c2f 613e  me=\"l00324\"></a>\n-0000d7d0: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n-0000d7e0: 656e 6f22 3e20 2033 3234 3c2f 7370 616e  eno\">  324</span\n-0000d7f0: 3e20 2020 206d 6173 6b2e 5665 7274 6578  >    mask.Vertex\n-0000d800: 5765 6967 6874 2830 2920 3d20 302e 3566  Weight(0) = 0.5f\n-0000d810: 3b3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ;</div>.<div cla\n-0000d820: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n-0000d830: 226c 3030 3332 3522 206e 616d 653d 226c  \"l00325\" name=\"l\n-0000d840: 3030 3332 3522 3e3c 2f61 3e3c 7370 616e  00325\"></a><span\n-0000d850: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n-0000d860: 2020 3332 353c 2f73 7061 6e3e 2020 2020    325</span>    \n-0000d870: 6d61 736b 2e56 6572 7465 7857 6569 6768  mask.VertexWeigh\n-0000d880: 7428 3129 203d 2030 2e35 663b 3c2f 6469  t(1) = 0.5f;</di\n-0000d890: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n-0000d8a0: 696e 6522 3e3c 6120 6964 3d22 6c30 3033  ine\"><a id=\"l003\n-0000d8b0: 3236 2220 6e61 6d65 3d22 6c30 3033 3236  26\" name=\"l00326\n-0000d8c0: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n-0000d8d0: 733d 226c 696e 656e 6f22 3e20 2033 3236  s=\"lineno\">  326\n-0000d8e0: 3c2f 7370 616e 3e7d 3c2f 6469 763e 0a3c  </span>}</div>.<\n-0000d8f0: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n-0000d900: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n-0000d910: 3030 3332 3722 206e 616d 653d 226c 3030  00327\" name=\"l00\n-0000d920: 3332 3722 3e3c 2f61 3e3c 7370 616e 2063  327\"></a><span c\n-0000d930: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n-0000d940: 3332 373c 2f73 7061 6e3e 203c 2f64 6976  327</span> </div\n-0000d950: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n-0000d960: 6e65 223e 3c61 2069 643d 226c 3030 3332  ne\"><a id=\"l0032\n-0000d970: 3822 206e 616d 653d 226c 3030 3332 3822  8\" name=\"l00328\"\n-0000d980: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n-0000d990: 3d22 6c69 6e65 6e6f 223e 2020 3332 383c  =\"lineno\">  328<\n-0000d9a0: 2f73 7061 6e3e 3c73 7061 6e20 636c 6173  /span><span clas\n-0000d9b0: 733d 226b 6579 776f 7264 223e 7465 6d70  s=\"keyword\">temp\n-0000d9c0: 6c61 7465 3c2f 7370 616e 3e20 266c 743b  late</span> &lt;\n-0000d9d0: 5363 6865 6d65 5479 7065 2053 4348 454d  SchemeType SCHEM\n-0000d9e0: 4526 6774 3b3c 2f64 6976 3e0a 3c64 6976  E&gt;</div>.<div\n-0000d9f0: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n-0000da00: 2069 643d 226c 3030 3332 3922 206e 616d   id=\"l00329\" nam\n-0000da10: 653d 226c 3030 3332 3922 3e3c 2f61 3e3c  e=\"l00329\"></a><\n-0000da20: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n-0000da30: 6e6f 223e 2020 3332 393c 2f73 7061 6e3e  no\">  329</span>\n-0000da40: 3c73 7061 6e20 636c 6173 733d 226b 6579  <span class=\"key\n-0000da50: 776f 7264 223e 7465 6d70 6c61 7465 3c2f  word\">template</\n-0000da60: 7370 616e 3e20 266c 743b 3c73 7061 6e20  span> &lt;<span \n-0000da70: 636c 6173 733d 226b 6579 776f 7264 223e  class=\"keyword\">\n-0000da80: 7479 7065 6e61 6d65 3c2f 7370 616e 3e20  typename</span> \n-0000da90: 5645 5254 4558 2c20 3c73 7061 6e20 636c  VERTEX, <span cl\n-0000daa0: 6173 733d 226b 6579 776f 7264 223e 7479  ass=\"keyword\">ty\n-0000dab0: 7065 6e61 6d65 3c2f 7370 616e 3e20 4d41  pename</span> MA\n-0000dac0: 534b 2667 743b 3c2f 6469 763e 0a3c 6469  SK&gt;</div>.<di\n-0000dad0: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n-0000dae0: 6120 6964 3d22 6c30 3033 3330 2220 6e61  a id=\"l00330\" na\n-0000daf0: 6d65 3d22 6c30 3033 3330 223e 3c2f 613e  me=\"l00330\"></a>\n-0000db00: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n-0000db10: 656e 6f22 3e20 2033 3330 3c2f 7370 616e  eno\">  330</span\n-0000db20: 3e3c 7370 616e 2063 6c61 7373 3d22 6b65  ><span class=\"ke\n-0000db30: 7977 6f72 6422 3e69 6e6c 696e 653c 2f73  yword\">inline</s\n-0000db40: 7061 6e3e 203c 7370 616e 2063 6c61 7373  pan> <span class\n-0000db50: 3d22 6b65 7977 6f72 6474 7970 6522 3e76  =\"keywordtype\">v\n-0000db60: 6f69 643c 2f73 7061 6e3e 3c2f 6469 763e  oid</span></div>\n-0000db70: 0a3c 6469 7620 636c 6173 733d 2266 6f6c  .<div class=\"fol\n-0000db80: 646f 7065 6e22 2069 643d 2266 6f6c 646f  dopen\" id=\"foldo\n-0000db90: 7065 6e30 3033 3331 2220 6461 7461 2d73  pen00331\" data-s\n-0000dba0: 7461 7274 3d22 7b22 2064 6174 612d 656e  tart=\"{\" data-en\n-0000dbb0: 643d 227d 223e 0a3c 6469 7620 636c 6173  d=\"}\">.<div clas\n-0000dbc0: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n-0000dbd0: 6c30 3033 3331 2220 6e61 6d65 3d22 6c30  l00331\" name=\"l0\n-0000dbe0: 3033 3331 223e 3c2f 613e 3c73 7061 6e20  0331\"></a><span \n-0000dbf0: 636c 6173 733d 226c 696e 656e 6f22 3e3c  class=\"lineno\"><\n-0000dc00: 6120 636c 6173 733d 226c 696e 6522 2068  a class=\"line\" h\n-0000dc10: 7265 663d 2261 3031 3334 312e 6874 6d6c  ref=\"a01341.html\n-0000dc20: 2361 3737 3634 3466 3639 6564 6530 3366  #a77644f69ede03f\n-0000dc30: 6136 3232 3232 6436 3061 3939 3937 3032  a62222d60a999702\n-0000dc40: 3338 223e 2020 3333 313c 2f61 3e3c 2f73  38\">  331</a></s\n-0000dc50: 7061 6e3e 3c61 2063 6c61 7373 3d22 636f  pan><a class=\"co\n-0000dc60: 6465 2068 6c5f 6675 6e63 7469 6f6e 2220  de hl_function\" \n-0000dc70: 6872 6566 3d22 6130 3133 3431 2e68 746d  href=\"a01341.htm\n-0000dc80: 6c23 6137 3736 3434 6636 3965 6465 3033  l#a77644f69ede03\n-0000dc90: 6661 3632 3232 3264 3630 6139 3939 3730  fa62222d60a99970\n-0000dca0: 3233 3822 3e53 6368 656d 6526 6c74 3b53  238\">Scheme&lt;S\n-0000dcb0: 4348 454d 4526 6774 3b3a 3a61 7373 6967  CHEME&gt;::assig\n-0000dcc0: 6e43 6f72 6e65 724d 6173 6b46 6f72 5665  nCornerMaskForVe\n-0000dcd0: 7274 6578 3c2f 613e 2856 4552 5445 5820  rtex</a>(VERTEX \n-0000dce0: 3c73 7061 6e20 636c 6173 733d 226b 6579  <span class=\"key\n-0000dcf0: 776f 7264 223e 636f 6e73 743c 2f73 7061  word\">const</spa\n-0000dd00: 6e3e 2661 6d70 3b2c 204d 4153 4b26 616d  n>&amp;, MASK&am\n-0000dd10: 703b 206d 6173 6b29 3c73 7061 6e20 636c  p; mask)<span cl\n-0000dd20: 6173 733d 226b 6579 776f 7264 223e 2063  ass=\"keyword\"> c\n-0000dd30: 6f6e 7374 203c 2f73 7061 6e3e 7b3c 2f64  onst </span>{</d\n-0000dd40: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n-0000dd50: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n-0000dd60: 3333 3222 206e 616d 653d 226c 3030 3333  332\" name=\"l0033\n-0000dd70: 3222 3e3c 2f61 3e3c 7370 616e 2063 6c61  2\"></a><span cla\n-0000dd80: 7373 3d22 6c69 6e65 6e6f 223e 2020 3333  ss=\"lineno\">  33\n-0000dd90: 323c 2f73 7061 6e3e 203c 2f64 6976 3e0a  2</span> </div>.\n-0000dda0: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n-0000ddb0: 223e 3c61 2069 643d 226c 3030 3333 3322  \"><a id=\"l00333\"\n-0000ddc0: 206e 616d 653d 226c 3030 3333 3322 3e3c   name=\"l00333\"><\n-0000ddd0: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n-0000dde0: 6c69 6e65 6e6f 223e 2020 3333 333c 2f73  lineno\">  333</s\n-0000ddf0: 7061 6e3e 2020 2020 6d61 736b 2e53 6574  pan>    mask.Set\n-0000de00: 4e75 6d56 6572 7465 7857 6569 6768 7473  NumVertexWeights\n-0000de10: 2831 293b 3c2f 6469 763e 0a3c 6469 7620  (1);</div>.<div \n-0000de20: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n-0000de30: 6964 3d22 6c30 3033 3334 2220 6e61 6d65  id=\"l00334\" name\n-0000de40: 3d22 6c30 3033 3334 223e 3c2f 613e 3c73  =\"l00334\"></a><s\n-0000de50: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n-0000de60: 6f22 3e20 2033 3334 3c2f 7370 616e 3e20  o\">  334</span> \n-0000de70: 2020 206d 6173 6b2e 5365 744e 756d 4564     mask.SetNumEd\n-0000de80: 6765 5765 6967 6874 7328 3029 3b3c 2f64  geWeights(0);</d\n-0000de90: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n-0000dea0: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n-0000deb0: 3333 3522 206e 616d 653d 226c 3030 3333  335\" name=\"l0033\n-0000dec0: 3522 3e3c 2f61 3e3c 7370 616e 2063 6c61  5\"></a><span cla\n-0000ded0: 7373 3d22 6c69 6e65 6e6f 223e 2020 3333  ss=\"lineno\">  33\n-0000dee0: 353c 2f73 7061 6e3e 2020 2020 6d61 736b  5</span>    mask\n-0000def0: 2e53 6574 4e75 6d46 6163 6557 6569 6768  .SetNumFaceWeigh\n-0000df00: 7473 2830 293b 3c2f 6469 763e 0a3c 6469  ts(0);</div>.<di\n-0000df10: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n-0000df20: 6120 6964 3d22 6c30 3033 3336 2220 6e61  a id=\"l00336\" na\n-0000df30: 6d65 3d22 6c30 3033 3336 223e 3c2f 613e  me=\"l00336\"></a>\n-0000df40: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n-0000df50: 656e 6f22 3e20 2033 3336 3c2f 7370 616e  eno\">  336</span\n-0000df60: 3e20 2020 206d 6173 6b2e 5365 7446 6163  >    mask.SetFac\n-0000df70: 6557 6569 6768 7473 466f 7246 6163 6543  eWeightsForFaceC\n-0000df80: 656e 7465 7273 283c 7370 616e 2063 6c61  enters(<span cla\n-0000df90: 7373 3d22 6b65 7977 6f72 6422 3e66 616c  ss=\"keyword\">fal\n-0000dfa0: 7365 3c2f 7370 616e 3e29 3b3c 2f64 6976  se</span>);</div\n-0000dfb0: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n-0000dfc0: 6e65 223e 3c61 2069 643d 226c 3030 3333  ne\"><a id=\"l0033\n-0000dfd0: 3722 206e 616d 653d 226c 3030 3333 3722  7\" name=\"l00337\"\n-0000dfe0: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n-0000dff0: 3d22 6c69 6e65 6e6f 223e 2020 3333 373c  =\"lineno\">  337<\n-0000e000: 2f73 7061 6e3e 203c 2f64 6976 3e0a 3c64  /span> </div>.<d\n-0000e010: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n-0000e020: 3c61 2069 643d 226c 3030 3333 3822 206e  <a id=\"l00338\" n\n-0000e030: 616d 653d 226c 3030 3333 3822 3e3c 2f61  ame=\"l00338\"></a\n-0000e040: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n-0000e050: 6e65 6e6f 223e 2020 3333 383c 2f73 7061  neno\">  338</spa\n-0000e060: 6e3e 2020 2020 6d61 736b 2e56 6572 7465  n>    mask.Verte\n-0000e070: 7857 6569 6768 7428 3029 203d 2031 2e30  xWeight(0) = 1.0\n-0000e080: 663b 3c2f 6469 763e 0a3c 6469 7620 636c  f;</div>.<div cl\n-0000e090: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n-0000e0a0: 3d22 6c30 3033 3339 2220 6e61 6d65 3d22  =\"l00339\" name=\"\n-0000e0b0: 6c30 3033 3339 223e 3c2f 613e 3c73 7061  l00339\"></a><spa\n-0000e0c0: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n-0000e0d0: 3e20 2033 3339 3c2f 7370 616e 3e7d 3c2f  >  339</span>}</\n-0000e0e0: 6469 763e 0a3c 2f64 6976 3e0a 3c64 6976  div>.</div>.<div\n-0000e0f0: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n-0000e100: 2069 643d 226c 3030 3334 3022 206e 616d   id=\"l00340\" nam\n-0000e110: 653d 226c 3030 3334 3022 3e3c 2f61 3e3c  e=\"l00340\"></a><\n-0000e120: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n-0000e130: 6e6f 223e 2020 3334 303c 2f73 7061 6e3e  no\">  340</span>\n-0000e140: 203c 2f64 6976 3e0a 3c64 6976 2063 6c61   </div>.<div cla\n-0000e150: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n-0000e160: 226c 3030 3334 3122 206e 616d 653d 226c  \"l00341\" name=\"l\n-0000e170: 3030 3334 3122 3e3c 2f61 3e3c 7370 616e  00341\"></a><span\n-0000e180: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n-0000e190: 2020 3334 313c 2f73 7061 6e3e 203c 2f64    341</span> </d\n-0000e1a0: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n-0000e1b0: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n-0000e1c0: 3334 3222 206e 616d 653d 226c 3030 3334  342\" name=\"l0034\n-0000e1d0: 3222 3e3c 2f61 3e3c 7370 616e 2063 6c61  2\"></a><span cla\n-0000e1e0: 7373 3d22 6c69 6e65 6e6f 223e 2020 3334  ss=\"lineno\">  34\n-0000e1f0: 323c 2f73 7061 6e3e 3c73 7061 6e20 636c  2</span><span cl\n-0000e200: 6173 733d 2263 6f6d 6d65 6e74 223e 2f2f  ass=\"comment\">//\n-0000e210: 3c2f 7370 616e 3e3c 2f64 6976 3e0a 3c64  </span></div>.<d\n-0000e220: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n-0000e230: 3c61 2069 643d 226c 3030 3334 3322 206e  <a id=\"l00343\" n\n-0000e240: 616d 653d 226c 3030 3334 3322 3e3c 2f61  ame=\"l00343\"></a\n-0000e250: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n-0000e260: 6e65 6e6f 223e 2020 3334 333c 2f73 7061  neno\">  343</spa\n-0000e270: 6e3e 3c73 7061 6e20 636c 6173 733d 2263  n><span class=\"c\n-0000e280: 6f6d 6d65 6e74 223e 2f2f 2020 5468 6520  omment\">//  The \n-0000e290: 636f 6d70 7574 6174 696f 6e20 6f66 2061  computation of a\n-0000e2a0: 2066 6163 652d 7665 7274 6578 206d 6173   face-vertex mas\n-0000e2b0: 6b20 6973 2074 7269 7669 616c 2061 6e64  k is trivial and\n-0000e2c0: 2063 6f6e 7369 7374 656e 7420 666f 7220   consistent for \n-0000e2d0: 616c 6c20 7363 6865 6d65 733a 3c2f 7370  all schemes:</sp\n-0000e2e0: 616e 3e3c 2f64 6976 3e0a 3c64 6976 2063  an></div>.<div c\n-0000e2f0: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n-0000e300: 643d 226c 3030 3334 3422 206e 616d 653d  d=\"l00344\" name=\n-0000e310: 226c 3030 3334 3422 3e3c 2f61 3e3c 7370  \"l00344\"></a><sp\n-0000e320: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n-0000e330: 223e 2020 3334 343c 2f73 7061 6e3e 3c73  \">  344</span><s\n-0000e340: 7061 6e20 636c 6173 733d 2263 6f6d 6d65  pan class=\"comme\n-0000e350: 6e74 223e 2f2f 3c2f 7370 616e 3e3c 2f64  nt\">//</span></d\n-0000e360: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n-0000e370: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n-0000e380: 3334 3522 206e 616d 653d 226c 3030 3334  345\" name=\"l0034\n-0000e390: 3522 3e3c 2f61 3e3c 7370 616e 2063 6c61  5\"></a><span cla\n-0000e3a0: 7373 3d22 6c69 6e65 6e6f 223e 2020 3334  ss=\"lineno\">  34\n-0000e3b0: 353c 2f73 7061 6e3e 3c73 7061 6e20 636c  5</span><span cl\n-0000e3c0: 6173 733d 226b 6579 776f 7264 223e 7465  ass=\"keyword\">te\n-0000e3d0: 6d70 6c61 7465 3c2f 7370 616e 3e20 266c  mplate</span> &l\n-0000e3e0: 743b 5363 6865 6d65 5479 7065 2053 4348  t;SchemeType SCH\n-0000e3f0: 454d 4526 6774 3b3c 2f64 6976 3e0a 3c64  EME&gt;</div>.<d\n-0000e400: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n-0000e410: 3c61 2069 643d 226c 3030 3334 3622 206e  <a id=\"l00346\" n\n-0000e420: 616d 653d 226c 3030 3334 3622 3e3c 2f61  ame=\"l00346\"></a\n-0000e430: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n-0000e440: 6e65 6e6f 223e 2020 3334 363c 2f73 7061  neno\">  346</spa\n-0000e450: 6e3e 3c73 7061 6e20 636c 6173 733d 226b  n><span class=\"k\n-0000e460: 6579 776f 7264 223e 7465 6d70 6c61 7465  eyword\">template\n-0000e470: 3c2f 7370 616e 3e20 266c 743b 3c73 7061  </span> &lt;<spa\n-0000e480: 6e20 636c 6173 733d 226b 6579 776f 7264  n class=\"keyword\n-0000e490: 223e 7479 7065 6e61 6d65 3c2f 7370 616e  \">typename</span\n-0000e4a0: 3e20 4641 4345 2c20 3c73 7061 6e20 636c  > FACE, <span cl\n-0000e4b0: 6173 733d 226b 6579 776f 7264 223e 7479  ass=\"keyword\">ty\n-0000e4c0: 7065 6e61 6d65 3c2f 7370 616e 3e20 4d41  pename</span> MA\n-0000e4d0: 534b 2667 743b 3c2f 6469 763e 0a3c 6469  SK&gt;</div>.<di\n-0000e4e0: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n-0000e4f0: 6120 6964 3d22 6c30 3033 3437 2220 6e61  a id=\"l00347\" na\n-0000e500: 6d65 3d22 6c30 3033 3437 223e 3c2f 613e  me=\"l00347\"></a>\n-0000e510: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n-0000e520: 656e 6f22 3e20 2033 3437 3c2f 7370 616e  eno\">  347</span\n-0000e530: 3e3c 7370 616e 2063 6c61 7373 3d22 6b65  ><span class=\"ke\n-0000e540: 7977 6f72 6474 7970 6522 3e76 6f69 643c  ywordtype\">void<\n-0000e550: 2f73 7061 6e3e 3c2f 6469 763e 0a3c 6469  /span></div>.<di\n-0000e560: 7620 636c 6173 733d 2266 6f6c 646f 7065  v class=\"foldope\n-0000e570: 6e22 2069 643d 2266 6f6c 646f 7065 6e30  n\" id=\"foldopen0\n-0000e580: 3033 3438 2220 6461 7461 2d73 7461 7274  0348\" data-start\n-0000e590: 3d22 7b22 2064 6174 612d 656e 643d 227d  =\"{\" data-end=\"}\n-0000e5a0: 223e 0a3c 6469 7620 636c 6173 733d 226c  \">.<div class=\"l\n-0000e5b0: 696e 6522 3e3c 6120 6964 3d22 6c30 3033  ine\"><a id=\"l003\n-0000e5c0: 3438 2220 6e61 6d65 3d22 6c30 3033 3438  48\" name=\"l00348\n-0000e5d0: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n-0000e5e0: 733d 226c 696e 656e 6f22 3e3c 6120 636c  s=\"lineno\"><a cl\n-0000e5f0: 6173 733d 226c 696e 6522 2068 7265 663d  ass=\"line\" href=\n-0000e600: 2261 3031 3334 312e 6874 6d6c 2361 6538  \"a01341.html#ae8\n-0000e610: 6564 3234 6231 3639 3165 3635 3433 3664  ed24b1691e65436d\n-0000e620: 3434 6537 3033 3138 3963 6166 3432 223e  44e703189caf42\">\n-0000e630: 2020 3334 383c 2f61 3e3c 2f73 7061 6e3e    348</a></span>\n-0000e640: 3c61 2063 6c61 7373 3d22 636f 6465 2068  <a class=\"code h\n-0000e650: 6c5f 6675 6e63 7469 6f6e 2220 6872 6566  l_function\" href\n-0000e660: 3d22 6130 3133 3431 2e68 746d 6c23 6165  =\"a01341.html#ae\n-0000e670: 3865 6432 3462 3136 3931 6536 3534 3336  8ed24b1691e65436\n-0000e680: 6434 3465 3730 3331 3839 6361 6634 3222  d44e703189caf42\"\n-0000e690: 3e53 6368 656d 6526 6c74 3b53 4348 454d  >Scheme&lt;SCHEM\n-0000e6a0: 4526 6774 3b3a 3a43 6f6d 7075 7465 4661  E&gt;::ComputeFa\n-0000e6b0: 6365 5665 7274 6578 4d61 736b 3c2f 613e  ceVertexMask</a>\n-0000e6c0: 2846 4143 4520 3c73 7061 6e20 636c 6173  (FACE <span clas\n-0000e6d0: 733d 226b 6579 776f 7264 223e 636f 6e73  s=\"keyword\">cons\n-0000e6e0: 743c 2f73 7061 6e3e 2661 6d70 3b20 6661  t</span>&amp; fa\n-0000e6f0: 6365 2c20 4d41 534b 2661 6d70 3b20 6d61  ce, MASK&amp; ma\n-0000e700: 736b 293c 7370 616e 2063 6c61 7373 3d22  sk)<span class=\"\n-0000e710: 6b65 7977 6f72 6422 3e20 636f 6e73 7420  keyword\"> const \n-0000e720: 3c2f 7370 616e 3e7b 3c2f 6469 763e 0a3c  </span>{</div>.<\n-0000e730: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n-0000e740: 3e3c 6120 6964 3d22 6c30 3033 3439 2220  ><a id=\"l00349\" \n-0000e750: 6e61 6d65 3d22 6c30 3033 3439 223e 3c2f  name=\"l00349\"></\n-0000e760: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n-0000e770: 696e 656e 6f22 3e20 2033 3439 3c2f 7370  ineno\">  349</sp\n-0000e780: 616e 3e20 3c2f 6469 763e 0a3c 6469 7620  an> </div>.<div \n-0000e790: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n-0000e7a0: 6964 3d22 6c30 3033 3530 2220 6e61 6d65  id=\"l00350\" name\n-0000e7b0: 3d22 6c30 3033 3530 223e 3c2f 613e 3c73  =\"l00350\"></a><s\n-0000e7c0: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n-0000e7d0: 6f22 3e20 2033 3530 3c2f 7370 616e 3e20  o\">  350</span> \n-0000e7e0: 2020 203c 7370 616e 2063 6c61 7373 3d22     <span class=\"\n-0000e7f0: 6b65 7977 6f72 6474 7970 6522 3e69 6e74  keywordtype\">int\n-0000e800: 3c2f 7370 616e 3e20 7665 7274 436f 756e  </span> vertCoun\n-0000e810: 7420 3d20 6661 6365 2e47 6574 4e75 6d56  t = face.GetNumV\n-0000e820: 6572 7469 6365 7328 293b 3c2f 6469 763e  ertices();</div>\n-0000e830: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n-0000e840: 6522 3e3c 6120 6964 3d22 6c30 3033 3531  e\"><a id=\"l00351\n-0000e850: 2220 6e61 6d65 3d22 6c30 3033 3531 223e  \" name=\"l00351\">\n-0000e860: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n-0000e870: 226c 696e 656e 6f22 3e20 2033 3531 3c2f  \"lineno\">  351</\n-0000e880: 7370 616e 3e20 3c2f 6469 763e 0a3c 6469  span> </div>.<di\n-0000e890: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n-0000e8a0: 6120 6964 3d22 6c30 3033 3532 2220 6e61  a id=\"l00352\" na\n-0000e8b0: 6d65 3d22 6c30 3033 3532 223e 3c2f 613e  me=\"l00352\"></a>\n-0000e8c0: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n-0000e8d0: 656e 6f22 3e20 2033 3532 3c2f 7370 616e  eno\">  352</span\n-0000e8e0: 3e20 2020 206d 6173 6b2e 5365 744e 756d  >    mask.SetNum\n-0000e8f0: 5665 7274 6578 5765 6967 6874 7328 7665  VertexWeights(ve\n-0000e900: 7274 436f 756e 7429 3b3c 2f64 6976 3e0a  rtCount);</div>.\n-0000e910: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n-0000e920: 223e 3c61 2069 643d 226c 3030 3335 3322  \"><a id=\"l00353\"\n-0000e930: 206e 616d 653d 226c 3030 3335 3322 3e3c   name=\"l00353\"><\n-0000e940: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n-0000e950: 6c69 6e65 6e6f 223e 2020 3335 333c 2f73  lineno\">  353</s\n-0000e960: 7061 6e3e 2020 2020 6d61 736b 2e53 6574  pan>    mask.Set\n-0000e970: 4e75 6d45 6467 6557 6569 6768 7473 2830  NumEdgeWeights(0\n-0000e980: 293b 3c2f 6469 763e 0a3c 6469 7620 636c  );</div>.<div cl\n-0000e990: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n-0000e9a0: 3d22 6c30 3033 3534 2220 6e61 6d65 3d22  =\"l00354\" name=\"\n-0000e9b0: 6c30 3033 3534 223e 3c2f 613e 3c73 7061  l00354\"></a><spa\n-0000e9c0: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n-0000e9d0: 3e20 2033 3534 3c2f 7370 616e 3e20 2020  >  354</span>   \n-0000e9e0: 206d 6173 6b2e 5365 744e 756d 4661 6365   mask.SetNumFace\n-0000e9f0: 5765 6967 6874 7328 3029 3b3c 2f64 6976  Weights(0);</div\n-0000ea00: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n-0000ea10: 6e65 223e 3c61 2069 643d 226c 3030 3335  ne\"><a id=\"l0035\n-0000ea20: 3522 206e 616d 653d 226c 3030 3335 3522  5\" name=\"l00355\"\n-0000ea30: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n-0000ea40: 3d22 6c69 6e65 6e6f 223e 2020 3335 353c  =\"lineno\">  355<\n-0000ea50: 2f73 7061 6e3e 2020 2020 6d61 736b 2e53  /span>    mask.S\n-0000ea60: 6574 4661 6365 5765 6967 6874 7346 6f72  etFaceWeightsFor\n-0000ea70: 4661 6365 4365 6e74 6572 7328 3c73 7061  FaceCenters(<spa\n-0000ea80: 6e20 636c 6173 733d 226b 6579 776f 7264  n class=\"keyword\n-0000ea90: 223e 6661 6c73 653c 2f73 7061 6e3e 293b  \">false</span>);\n-0000eaa0: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n-0000eab0: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n-0000eac0: 6c30 3033 3536 2220 6e61 6d65 3d22 6c30  l00356\" name=\"l0\n-0000ead0: 3033 3536 223e 3c2f 613e 3c73 7061 6e20  0356\"></a><span \n-0000eae0: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n-0000eaf0: 2033 3536 3c2f 7370 616e 3e20 3c2f 6469   356</span> </di\n-0000eb00: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n-0000eb10: 696e 6522 3e3c 6120 6964 3d22 6c30 3033  ine\"><a id=\"l003\n-0000eb20: 3537 2220 6e61 6d65 3d22 6c30 3033 3537  57\" name=\"l00357\n-0000eb30: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n-0000eb40: 733d 226c 696e 656e 6f22 3e20 2033 3537  s=\"lineno\">  357\n-0000eb50: 3c2f 7370 616e 3e20 2020 203c 7370 616e  </span>    <span\n-0000eb60: 2063 6c61 7373 3d22 6b65 7977 6f72 6422   class=\"keyword\"\n-0000eb70: 3e74 7970 656e 616d 653c 2f73 7061 6e3e  >typename</span>\n-0000eb80: 204d 4153 4b3a 3a57 6569 6768 7420 7657   MASK::Weight vW\n-0000eb90: 6569 6768 7420 3d20 312e 3066 202f 2028  eight = 1.0f / (\n-0000eba0: 3c73 7061 6e20 636c 6173 733d 226b 6579  <span class=\"key\n-0000ebb0: 776f 7264 223e 7479 7065 6e61 6d65 3c2f  word\">typename</\n-0000ebc0: 7370 616e 3e20 4d41 534b 3a3a 5765 6967  span> MASK::Weig\n-0000ebd0: 6874 2920 7665 7274 436f 756e 743b 3c2f  ht) vertCount;</\n-0000ebe0: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n-0000ebf0: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n-0000ec00: 3033 3538 2220 6e61 6d65 3d22 6c30 3033  0358\" name=\"l003\n-0000ec10: 3538 223e 3c2f 613e 3c73 7061 6e20 636c  58\"></a><span cl\n-0000ec20: 6173 733d 226c 696e 656e 6f22 3e20 2033  ass=\"lineno\">  3\n-0000ec30: 3538 3c2f 7370 616e 3e20 2020 203c 7370  58</span>    <sp\n-0000ec40: 616e 2063 6c61 7373 3d22 6b65 7977 6f72  an class=\"keywor\n-0000ec50: 6466 6c6f 7722 3e66 6f72 3c2f 7370 616e  dflow\">for</span\n-0000ec60: 3e20 283c 7370 616e 2063 6c61 7373 3d22  > (<span class=\"\n-0000ec70: 6b65 7977 6f72 6474 7970 6522 3e69 6e74  keywordtype\">int\n-0000ec80: 3c2f 7370 616e 3e20 6920 3d20 303b 2069  </span> i = 0; i\n-0000ec90: 2026 6c74 3b20 7665 7274 436f 756e 743b   &lt; vertCount;\n-0000eca0: 202b 2b69 2920 7b3c 2f64 6976 3e0a 3c64   ++i) {</div>.<d\n-0000ecb0: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n-0000ecc0: 3c61 2069 643d 226c 3030 3335 3922 206e  <a id=\"l00359\" n\n-0000ecd0: 616d 653d 226c 3030 3335 3922 3e3c 2f61  ame=\"l00359\"></a\n-0000ece0: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n-0000ecf0: 6e65 6e6f 223e 2020 3335 393c 2f73 7061  neno\">  359</spa\n-0000ed00: 6e3e 2020 2020 2020 2020 6d61 736b 2e56  n>        mask.V\n-0000ed10: 6572 7465 7857 6569 6768 7428 6929 203d  ertexWeight(i) =\n-0000ed20: 2076 5765 6967 6874 3b3c 2f64 6976 3e0a   vWeight;</div>.\n-0000ed30: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n-0000ed40: 223e 3c61 2069 643d 226c 3030 3336 3022  \"><a id=\"l00360\"\n-0000ed50: 206e 616d 653d 226c 3030 3336 3022 3e3c   name=\"l00360\"><\n-0000ed60: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n-0000ed70: 6c69 6e65 6e6f 223e 2020 3336 303c 2f73  lineno\">  360</s\n-0000ed80: 7061 6e3e 2020 2020 7d3c 2f64 6976 3e0a  pan>    }</div>.\n-0000ed90: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n-0000eda0: 223e 3c61 2069 643d 226c 3030 3336 3122  \"><a id=\"l00361\"\n-0000edb0: 206e 616d 653d 226c 3030 3336 3122 3e3c   name=\"l00361\"><\n-0000edc0: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n-0000edd0: 6c69 6e65 6e6f 223e 2020 3336 313c 2f73  lineno\">  361</s\n-0000ede0: 7061 6e3e 7d3c 2f64 6976 3e0a 3c2f 6469  pan>}</div>.</di\n-0000edf0: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n-0000ee00: 696e 6522 3e3c 6120 6964 3d22 6c30 3033  ine\"><a id=\"l003\n-0000ee10: 3632 2220 6e61 6d65 3d22 6c30 3033 3632  62\" name=\"l00362\n-0000ee20: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n-0000ee30: 733d 226c 696e 656e 6f22 3e20 2033 3632  s=\"lineno\">  362\n-0000ee40: 3c2f 7370 616e 3e20 3c2f 6469 763e 0a3c  </span> </div>.<\n-0000ee50: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n-0000ee60: 3e3c 6120 6964 3d22 6c30 3033 3633 2220  ><a id=\"l00363\" \n-0000ee70: 6e61 6d65 3d22 6c30 3033 3633 223e 3c2f  name=\"l00363\"></\n-0000ee80: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n-0000ee90: 696e 656e 6f22 3e20 2033 3633 3c2f 7370  ineno\">  363</sp\n-0000eea0: 616e 3e20 3c2f 6469 763e 0a3c 6469 7620  an> </div>.<div \n-0000eeb0: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n-0000eec0: 6964 3d22 6c30 3033 3634 2220 6e61 6d65  id=\"l00364\" name\n-0000eed0: 3d22 6c30 3033 3634 223e 3c2f 613e 3c73  =\"l00364\"></a><s\n-0000eee0: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n-0000eef0: 6f22 3e20 2033 3634 3c2f 7370 616e 3e3c  o\">  364</span><\n-0000ef00: 7370 616e 2063 6c61 7373 3d22 636f 6d6d  span class=\"comm\n-0000ef10: 656e 7422 3e2f 2f3c 2f73 7061 6e3e 3c2f  ent\">//</span></\n-0000ef20: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n-0000ef30: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n-0000ef40: 3033 3635 2220 6e61 6d65 3d22 6c30 3033  0365\" name=\"l003\n-0000ef50: 3635 223e 3c2f 613e 3c73 7061 6e20 636c  65\"></a><span cl\n-0000ef60: 6173 733d 226c 696e 656e 6f22 3e20 2033  ass=\"lineno\">  3\n-0000ef70: 3635 3c2f 7370 616e 3e3c 7370 616e 2063  65</span><span c\n-0000ef80: 6c61 7373 3d22 636f 6d6d 656e 7422 3e2f  lass=\"comment\">/\n-0000ef90: 2f20 2054 6865 2063 6f6d 7075 7461 7469  /  The computati\n-0000efa0: 6f6e 206f 6620 616e 2065 6467 652d 7665  on of an edge-ve\n-0000efb0: 7274 6578 206d 6173 6b20 7265 7175 6972  rtex mask requir\n-0000efc0: 6573 2069 6e73 7065 6374 696f 6e20 6f66  es inspection of\n-0000efd0: 2073 6861 7270 6e65 7373 2076 616c 7565   sharpness value\n-0000efe0: 7320 746f 3c2f 7370 616e 3e3c 2f64 6976  s to</span></div\n-0000eff0: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n-0000f000: 6e65 223e 3c61 2069 643d 226c 3030 3336  ne\"><a id=\"l0036\n-0000f010: 3622 206e 616d 653d 226c 3030 3336 3622  6\" name=\"l00366\"\n-0000f020: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n-0000f030: 3d22 6c69 6e65 6e6f 223e 2020 3336 363c  =\"lineno\">  366<\n-0000f040: 2f73 7061 6e3e 3c73 7061 6e20 636c 6173  /span><span clas\n-0000f050: 733d 2263 6f6d 6d65 6e74 223e 2f2f 2020  s=\"comment\">//  \n-0000f060: 6465 7465 726d 696e 6520 6966 2073 6d6f  determine if smo\n-0000f070: 6f74 6820 6f72 2061 2063 7265 6173 652c  oth or a crease,\n-0000f080: 2061 6e64 2061 6c73 6f20 746f 2064 6574   and also to det\n-0000f090: 6563 7420 616e 6420 6170 706c 7920 6120  ect and apply a \n-0000f0a0: 7472 616e 7369 7469 6f6e 2066 726f 6d20  transition from \n-0000f0b0: 613c 2f73 7061 6e3e 3c2f 6469 763e 0a3c  a</span></div>.<\n-0000f0c0: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n-0000f0d0: 3e3c 6120 6964 3d22 6c30 3033 3637 2220  ><a id=\"l00367\" \n-0000f0e0: 6e61 6d65 3d22 6c30 3033 3637 223e 3c2f  name=\"l00367\"></\n-0000f0f0: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n-0000f100: 696e 656e 6f22 3e20 2033 3637 3c2f 7370  ineno\">  367</sp\n-0000f110: 616e 3e3c 7370 616e 2063 6c61 7373 3d22  an><span class=\"\n-0000f120: 636f 6d6d 656e 7422 3e2f 2f20 2063 7265  comment\">//  cre\n-0000f130: 6173 6520 746f 2073 6d6f 6f74 682e 2020  ase to smooth.  \n-0000f140: 5573 696e 6720 7468 6520 7072 6f74 6563  Using the protec\n-0000f150: 7465 6420 6d65 7468 6f64 7320 746f 2061  ted methods to a\n-0000f160: 7373 6967 6e20 7468 6520 7370 6563 6966  ssign the specif\n-0000f170: 6963 206d 6173 6b73 2028 6f6e 6c79 3c2f  ic masks (only</\n-0000f180: 7370 616e 3e3c 2f64 6976 3e0a 3c64 6976  span></div>.<div\n-0000f190: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n-0000f1a0: 2069 643d 226c 3030 3336 3822 206e 616d   id=\"l00368\" nam\n-0000f1b0: 653d 226c 3030 3336 3822 3e3c 2f61 3e3c  e=\"l00368\"></a><\n-0000f1c0: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n-0000f1d0: 6e6f 223e 2020 3336 383c 2f73 7061 6e3e  no\">  368</span>\n-0000f1e0: 3c73 7061 6e20 636c 6173 733d 2263 6f6d  <span class=\"com\n-0000f1f0: 6d65 6e74 223e 2f2f 2020 7477 6f20 2d2d  ment\">//  two --\n-0000f200: 2073 6d6f 6f74 6820 6f72 2063 7265 6173   smooth or creas\n-0000f210: 6529 2074 6869 7320 696d 706c 656d 656e  e) this implemen\n-0000f220: 7461 7469 6f6e 2073 686f 756c 6420 7365  tation should se\n-0000f230: 7276 6520 616c 6c20 6e6f 6e2d 6c69 6e65  rve all non-line\n-0000f240: 6172 2073 6368 656d 6573 3c2f 7370 616e  ar schemes</span\n-0000f250: 3e3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ></div>.<div cla\n-0000f260: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n-0000f270: 226c 3030 3336 3922 206e 616d 653d 226c  \"l00369\" name=\"l\n-0000f280: 3030 3336 3922 3e3c 2f61 3e3c 7370 616e  00369\"></a><span\n-0000f290: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n-0000f2a0: 2020 3336 393c 2f73 7061 6e3e 3c73 7061    369</span><spa\n-0000f2b0: 6e20 636c 6173 733d 2263 6f6d 6d65 6e74  n class=\"comment\n-0000f2c0: 223e 2f2f 2020 2863 7572 7265 6e74 6c79  \">//  (currently\n-0000f2d0: 2043 6174 6d61 726b 2061 6e64 204c 6f6f   Catmark and Loo\n-0000f2e0: 7029 2061 6e64 206f 6e6c 7920 6e65 6564  p) and only need\n-0000f2f0: 7320 746f 2062 6520 7370 6563 6961 6c69  s to be speciali\n-0000f300: 7a65 6420 666f 7220 4269 6c69 6e65 6172  zed for Bilinear\n-0000f310: 2074 6f3c 2f73 7061 6e3e 3c2f 6469 763e   to</span></div>\n-0000f320: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n-0000f330: 6522 3e3c 6120 6964 3d22 6c30 3033 3730  e\"><a id=\"l00370\n-0000f340: 2220 6e61 6d65 3d22 6c30 3033 3730 223e  \" name=\"l00370\">\n-0000f350: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n-0000f360: 226c 696e 656e 6f22 3e20 2033 3730 3c2f  \"lineno\">  370</\n-0000f370: 7370 616e 3e3c 7370 616e 2063 6c61 7373  span><span class\n-0000f380: 3d22 636f 6d6d 656e 7422 3e2f 2f20 2074  =\"comment\">//  t\n-0000f390: 7269 7669 616c 697a 6520 6974 2074 6f20  rivialize it to \n-0000f3a0: 7468 6520 6372 6561 7365 2063 6173 652e  the crease case.\n-0000f3b0: 3c2f 7370 616e 3e3c 2f64 6976 3e0a 3c64  </span></div>.<d\n-0000f3c0: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n-0000f3d0: 3c61 2069 643d 226c 3030 3337 3122 206e  <a id=\"l00371\" n\n-0000f3e0: 616d 653d 226c 3030 3337 3122 3e3c 2f61  ame=\"l00371\"></a\n-0000f3f0: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n-0000f400: 6e65 6e6f 223e 2020 3337 313c 2f73 7061  neno\">  371</spa\n-0000f410: 6e3e 3c73 7061 6e20 636c 6173 733d 2263  n><span class=\"c\n-0000f420: 6f6d 6d65 6e74 223e 2f2f 3c2f 7370 616e  omment\">//</span\n-0000f430: 3e3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ></div>.<div cla\n-0000f440: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n-0000f450: 226c 3030 3337 3222 206e 616d 653d 226c  \"l00372\" name=\"l\n-0000f460: 3030 3337 3222 3e3c 2f61 3e3c 7370 616e  00372\"></a><span\n-0000f470: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n-0000f480: 2020 3337 323c 2f73 7061 6e3e 3c73 7061    372</span><spa\n-0000f490: 6e20 636c 6173 733d 2263 6f6d 6d65 6e74  n class=\"comment\n-0000f4a0: 223e 2f2f 2020 5468 6520 696d 706c 656d  \">//  The implem\n-0000f4b0: 656e 7461 7469 6f6e 2068 6572 6520 6973  entation here is\n-0000f4c0: 2073 6c69 6768 746c 7920 636f 6d70 6c69   slightly compli\n-0000f4d0: 6361 7465 6420 6279 2063 6f6d 6269 6e69  cated by combini\n-0000f4e0: 6e67 2074 776f 2073 6365 6e61 7269 6f73  ng two scenarios\n-0000f4f0: 2069 6e74 6f20 613c 2f73 7061 6e3e 3c2f   into a</span></\n-0000f500: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n-0000f510: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n-0000f520: 3033 3733 2220 6e61 6d65 3d22 6c30 3033  0373\" name=\"l003\n-0000f530: 3733 223e 3c2f 613e 3c73 7061 6e20 636c  73\"></a><span cl\n-0000f540: 6173 733d 226c 696e 656e 6f22 3e20 2033  ass=\"lineno\">  3\n-0000f550: 3733 3c2f 7370 616e 3e3c 7370 616e 2063  73</span><span c\n-0000f560: 6c61 7373 3d22 636f 6d6d 656e 7422 3e2f  lass=\"comment\">/\n-0000f570: 2f20 2073 696e 676c 6520 696d 706c 656d  /  single implem\n-0000f580: 656e 7461 7469 6f6e 202d 2d20 6569 7468  entation -- eith\n-0000f590: 6572 2074 6865 2063 616c 6c65 7220 6b6e  er the caller kn\n-0000f5a0: 6f77 7320 7468 6520 7061 7265 6e74 2061  ows the parent a\n-0000f5b0: 6e64 2063 6869 6c64 2072 756c 6573 2061  nd child rules a\n-0000f5c0: 6e64 3c2f 7370 616e 3e3c 2f64 6976 3e0a  nd</span></div>.\n-0000f5d0: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n-0000f5e0: 223e 3c61 2069 643d 226c 3030 3337 3422  \"><a id=\"l00374\"\n-0000f5f0: 206e 616d 653d 226c 3030 3337 3422 3e3c   name=\"l00374\"><\n-0000f600: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n-0000f610: 6c69 6e65 6e6f 223e 2020 3337 343c 2f73  lineno\">  374</s\n-0000f620: 7061 6e3e 3c73 7061 6e20 636c 6173 733d  pan><span class=\n-0000f630: 2263 6f6d 6d65 6e74 223e 2f2f 2020 7072  \"comment\">//  pr\n-0000f640: 6f76 6964 6573 2074 6865 6d2c 206f 7220  ovides them, or \n-0000f650: 7468 6579 2064 6f6e 2623 3339 3b74 2061  they don&#39;t a\n-0000f660: 6e64 2074 6865 2052 756c 6573 2068 6176  nd the Rules hav\n-0000f670: 6520 746f 2062 6520 6465 7465 726d 696e  e to be determin\n-0000f680: 6564 2066 726f 6d20 7368 6172 706e 6573  ed from sharpnes\n-0000f690: 733c 2f73 7061 6e3e 3c2f 6469 763e 0a3c  s</span></div>.<\n-0000f6a0: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n-0000f6b0: 3e3c 6120 6964 3d22 6c30 3033 3735 2220  ><a id=\"l00375\" \n-0000f6c0: 6e61 6d65 3d22 6c30 3033 3735 223e 3c2f  name=\"l00375\"></\n-0000f6d0: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n-0000f6e0: 696e 656e 6f22 3e20 2033 3735 3c2f 7370  ineno\">  375</sp\n-0000f6f0: 616e 3e3c 7370 616e 2063 6c61 7373 3d22  an><span class=\"\n-0000f700: 636f 6d6d 656e 7422 3e2f 2f20 2076 616c  comment\">//  val\n-0000f710: 7565 732e 2020 426f 7468 2063 6173 6573  ues.  Both cases\n-0000f720: 2069 6e63 6c75 6465 2071 7569 636b 2072   include quick r\n-0000f730: 6574 7572 6e20 6f6e 6365 2074 6865 2070  eturn once the p\n-0000f740: 6172 656e 7420 6973 2064 6574 6572 6d69  arent is determi\n-0000f750: 6e65 6420 746f 2062 653c 2f73 7061 6e3e  ned to be</span>\n-0000f760: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n-0000f770: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n-0000f780: 6c30 3033 3736 2220 6e61 6d65 3d22 6c30  l00376\" name=\"l0\n-0000f790: 3033 3736 223e 3c2f 613e 3c73 7061 6e20  0376\"></a><span \n-0000f7a0: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n-0000f7b0: 2033 3736 3c2f 7370 616e 3e3c 7370 616e   376</span><span\n-0000f7c0: 2063 6c61 7373 3d22 636f 6d6d 656e 7422   class=\"comment\"\n-0000f7d0: 3e2f 2f20 2073 6d6f 6f74 6820 6f72 2074  >//  smooth or t\n-0000f7e0: 6865 2063 6869 6c64 2061 2063 7265 6173  he child a creas\n-0000f7f0: 652c 206c 6561 7669 6e67 2074 6865 2074  e, leaving the t\n-0000f800: 7261 6e73 6974 696f 6e61 6c20 6361 7365  ransitional case\n-0000f810: 2072 656d 6169 6e69 6e67 2e3c 2f73 7061   remaining.</spa\n-0000f820: 6e3e 3c2f 6469 763e 0a3c 6469 7620 636c  n></div>.<div cl\n-0000f830: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n-0000f840: 3d22 6c30 3033 3737 2220 6e61 6d65 3d22  =\"l00377\" name=\"\n-0000f850: 6c30 3033 3737 223e 3c2f 613e 3c73 7061  l00377\"></a><spa\n-0000f860: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n-0000f870: 3e20 2033 3737 3c2f 7370 616e 3e3c 7370  >  377</span><sp\n-0000f880: 616e 2063 6c61 7373 3d22 636f 6d6d 656e  an class=\"commen\n-0000f890: 7422 3e2f 2f3c 2f73 7061 6e3e 3c2f 6469  t\">//</span></di\n-0000f8a0: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n-0000f8b0: 696e 6522 3e3c 6120 6964 3d22 6c30 3033  ine\"><a id=\"l003\n-0000f8c0: 3738 2220 6e61 6d65 3d22 6c30 3033 3738  78\" name=\"l00378\n-0000f8d0: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n-0000f8e0: 733d 226c 696e 656e 6f22 3e20 2033 3738  s=\"lineno\">  378\n-0000f8f0: 3c2f 7370 616e 3e3c 7370 616e 2063 6c61  </span><span cla\n-0000f900: 7373 3d22 636f 6d6d 656e 7422 3e2f 2f20  ss=\"comment\">// \n-0000f910: 2054 6865 206f 7665 7261 6c6c 2070 726f   The overall pro\n-0000f920: 6365 7373 2069 7320 6173 2066 6f6c 6c6f  cess is as follo\n-0000f930: 7773 3a3c 2f73 7061 6e3e 3c2f 6469 763e  ws:</span></div>\n-0000f940: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n-0000f950: 6522 3e3c 6120 6964 3d22 6c30 3033 3739  e\"><a id=\"l00379\n-0000f960: 2220 6e61 6d65 3d22 6c30 3033 3739 223e  \" name=\"l00379\">\n-0000f970: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n-0000f980: 226c 696e 656e 6f22 3e20 2033 3739 3c2f  \"lineno\">  379</\n-0000f990: 7370 616e 3e3c 7370 616e 2063 6c61 7373  span><span class\n-0000f9a0: 3d22 636f 6d6d 656e 7422 3e2f 2f3c 2f73  =\"comment\">//</s\n-0000f9b0: 7061 6e3e 3c2f 6469 763e 0a3c 6469 7620  pan></div>.<div \n-0000f9c0: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n-0000f9d0: 6964 3d22 6c30 3033 3830 2220 6e61 6d65  id=\"l00380\" name\n-0000f9e0: 3d22 6c30 3033 3830 223e 3c2f 613e 3c73  =\"l00380\"></a><s\n-0000f9f0: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n-0000fa00: 6f22 3e20 2033 3830 3c2f 7370 616e 3e3c  o\">  380</span><\n-0000fa10: 7370 616e 2063 6c61 7373 3d22 636f 6d6d  span class=\"comm\n-0000fa20: 656e 7422 3e2f 2f20 2020 2020 202d 2071  ent\">//      - q\n-0000fa30: 7569 636b 6c79 2064 6574 6563 7420 7468  uickly detect th\n-0000fa40: 6520 6d6f 7374 2063 6f6d 6d6f 6e20 7370  e most common sp\n-0000fa50: 6563 6966 6965 6420 6f72 2064 6574 6563  ecified or detec\n-0000fa60: 7465 6420 536d 6f6f 7468 2063 6173 6520  ted Smooth case \n-0000fa70: 616e 6420 7265 7475 726e 3c2f 7370 616e  and return</span\n-0000fa80: 3e3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ></div>.<div cla\n-0000fa90: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n-0000faa0: 226c 3030 3338 3122 206e 616d 653d 226c  \"l00381\" name=\"l\n-0000fab0: 3030 3338 3122 3e3c 2f61 3e3c 7370 616e  00381\"></a><span\n-0000fac0: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n-0000fad0: 2020 3338 313c 2f73 7061 6e3e 3c73 7061    381</span><spa\n-0000fae0: 6e20 636c 6173 733d 2263 6f6d 6d65 6e74  n class=\"comment\n-0000faf0: 223e 2f2f 2020 2020 2020 2d20 7175 6963  \">//      - quic\n-0000fb00: 6b6c 7920 6465 7465 6374 2061 2066 756c  kly detect a ful\n-0000fb10: 6c20 4372 6561 7365 2062 7920 6368 696c  l Crease by chil\n-0000fb20: 6420 5275 6c65 2061 7373 6967 6e6d 656e  d Rule assignmen\n-0000fb30: 7420 616e 6420 7265 7475 726e 3c2f 7370  t and return</sp\n-0000fb40: 616e 3e3c 2f64 6976 3e0a 3c64 6976 2063  an></div>.<div c\n-0000fb50: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n-0000fb60: 643d 226c 3030 3338 3222 206e 616d 653d  d=\"l00382\" name=\n-0000fb70: 226c 3030 3338 3222 3e3c 2f61 3e3c 7370  \"l00382\"></a><sp\n-0000fb80: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n-0000fb90: 223e 2020 3338 323c 2f73 7061 6e3e 3c73  \">  382</span><s\n-0000fba0: 7061 6e20 636c 6173 733d 2263 6f6d 6d65  pan class=\"comme\n-0000fbb0: 6e74 223e 2f2f 2020 2020 2020 2d20 6465  nt\">//      - de\n-0000fbc0: 7465 726d 696e 6520 6672 6f6d 2073 6861  termine from sha\n-0000fbd0: 7270 6e65 7373 2069 6620 756e 7370 6563  rpness if unspec\n-0000fbe0: 6966 6965 6420 6368 696c 6420 6973 2061  ified child is a\n-0000fbf0: 2063 7265 6173 6520 2d2d 2072 6574 7572   crease -- retur\n-0000fc00: 6e20 6966 2073 6f3c 2f73 7061 6e3e 3c2f  n if so</span></\n-0000fc10: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n-0000fc20: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n-0000fc30: 3033 3833 2220 6e61 6d65 3d22 6c30 3033  0383\" name=\"l003\n-0000fc40: 3833 223e 3c2f 613e 3c73 7061 6e20 636c  83\"></a><span cl\n-0000fc50: 6173 733d 226c 696e 656e 6f22 3e20 2033  ass=\"lineno\">  3\n-0000fc60: 3833 3c2f 7370 616e 3e3c 7370 616e 2063  83</span><span c\n-0000fc70: 6c61 7373 3d22 636f 6d6d 656e 7422 3e2f  lass=\"comment\">/\n-0000fc80: 2f20 2020 2020 202d 2063 6f6d 7075 7465  /      - compute\n-0000fc90: 2073 6d6f 6f74 6820 6d61 736b 2066 6f72   smooth mask for\n-0000fca0: 2063 6869 6c64 2061 6e64 2063 6f6d 6269   child and combi\n-0000fcb0: 6e65 2077 6974 6820 6372 6561 7365 2066  ne with crease f\n-0000fcc0: 726f 6d20 7061 7265 6e74 3c2f 7370 616e  rom parent</span\n-0000fcd0: 3e3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ></div>.<div cla\n-0000fce0: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n-0000fcf0: 226c 3030 3338 3422 206e 616d 653d 226c  \"l00384\" name=\"l\n-0000fd00: 3030 3338 3422 3e3c 2f61 3e3c 7370 616e  00384\"></a><span\n-0000fd10: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n-0000fd20: 2020 3338 343c 2f73 7061 6e3e 3c73 7061    384</span><spa\n-0000fd30: 6e20 636c 6173 733d 2263 6f6d 6d65 6e74  n class=\"comment\n-0000fd40: 223e 2f2f 3c2f 7370 616e 3e3c 2f64 6976  \">//</span></div\n-0000fd50: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n-0000fd60: 6e65 223e 3c61 2069 643d 226c 3030 3338  ne\"><a id=\"l0038\n-0000fd70: 3522 206e 616d 653d 226c 3030 3338 3522  5\" name=\"l00385\"\n-0000fd80: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n-0000fd90: 3d22 6c69 6e65 6e6f 223e 2020 3338 353c  =\"lineno\">  385<\n-0000fda0: 2f73 7061 6e3e 3c73 7061 6e20 636c 6173  /span><span clas\n-0000fdb0: 733d 2263 6f6d 6d65 6e74 223e 2f2f 2020  s=\"comment\">//  \n-0000fdc0: 5573 6167 6520 6f66 2074 6865 2070 6172  Usage of the par\n-0000fdd0: 656e 7420 5275 6c65 2068 6572 6520 616c  ent Rule here al\n-0000fde0: 6c6f 7773 2073 6f6d 6520 6d69 7375 7365  lows some misuse\n-0000fdf0: 2069 6e20 7468 6174 206f 6e6c 7920 7468   in that only th\n-0000fe00: 7265 6520 6f66 2066 6976 6520 706f 7373  ree of five poss\n-0000fe10: 6962 6c65 3c2f 7370 616e 3e3c 2f64 6976  ible</span></div\n-0000fe20: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n-0000fe30: 6e65 223e 3c61 2069 643d 226c 3030 3338  ne\"><a id=\"l0038\n-0000fe40: 3622 206e 616d 653d 226c 3030 3338 3622  6\" name=\"l00386\"\n-0000fe50: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n-0000fe60: 3d22 6c69 6e65 6e6f 223e 2020 3338 363c  =\"lineno\">  386<\n-0000fe70: 2f73 7061 6e3e 3c73 7061 6e20 636c 6173  /span><span clas\n-0000fe80: 733d 2263 6f6d 6d65 6e74 223e 2f2f 2020  s=\"comment\">//  \n-0000fe90: 6173 7369 676e 6d65 6e74 7320 6172 6520  assignments are \n-0000fea0: 6c65 6769 7469 6d61 7465 2066 6f72 2074  legitimate for t\n-0000feb0: 6865 2070 6172 656e 7420 616e 6420 666f  he parent and fo\n-0000fec0: 7572 2066 6f72 2074 6865 2063 6869 6c64  ur for the child\n-0000fed0: 2028 4461 7274 2062 6569 6e67 206f 6e6c   (Dart being onl\n-0000fee0: 793c 2f73 7061 6e3e 3c2f 6469 763e 0a3c  y</span></div>.<\n-0000fef0: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n-0000ff00: 3e3c 6120 6964 3d22 6c30 3033 3837 2220  ><a id=\"l00387\" \n-0000ff10: 6e61 6d65 3d22 6c30 3033 3837 223e 3c2f  name=\"l00387\"></\n-0000ff20: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n-0000ff30: 696e 656e 6f22 3e20 2033 3837 3c2f 7370  ineno\">  387</sp\n-0000ff40: 616e 3e3c 7370 616e 2063 6c61 7373 3d22  an><span class=\"\n-0000ff50: 636f 6d6d 656e 7422 3e2f 2f20 2076 616c  comment\">//  val\n-0000ff60: 6964 2066 6f72 2074 6865 2063 6869 6c64  id for the child\n-0000ff70: 2061 6e64 2043 6f72 6e65 7220 666f 7220   and Corner for \n-0000ff80: 6e65 6974 6865 7229 2e20 2052 6573 756c  neither).  Resul\n-0000ff90: 7473 2061 7265 2075 6e64 6566 696e 6564  ts are undefined\n-0000ffa0: 2069 6e20 7468 6573 6520 6361 7365 732e   in these cases.\n-0000ffb0: 3c2f 7370 616e 3e3c 2f64 6976 3e0a 3c64  </span></div>.<d\n-0000ffc0: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n-0000ffd0: 3c61 2069 643d 226c 3030 3338 3822 206e  <a id=\"l00388\" n\n-0000ffe0: 616d 653d 226c 3030 3338 3822 3e3c 2f61  ame=\"l00388\"></a\n-0000fff0: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n-00010000: 6e65 6e6f 223e 2020 3338 383c 2f73 7061  neno\">  388</spa\n-00010010: 6e3e 3c73 7061 6e20 636c 6173 733d 2263  n><span class=\"c\n-00010020: 6f6d 6d65 6e74 223e 2f2f 3c2f 7370 616e  omment\">//</span\n-00010030: 3e3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ></div>.<div cla\n-00010040: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n-00010050: 226c 3030 3338 3922 206e 616d 653d 226c  \"l00389\" name=\"l\n-00010060: 3030 3338 3922 3e3c 2f61 3e3c 7370 616e  00389\"></a><span\n-00010070: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n-00010080: 2020 3338 393c 2f73 7061 6e3e 3c73 7061    389</span><spa\n-00010090: 6e20 636c 6173 733d 226b 6579 776f 7264  n class=\"keyword\n-000100a0: 223e 7465 6d70 6c61 7465 3c2f 7370 616e  \">template</span\n-000100b0: 3e20 266c 743b 5363 6865 6d65 5479 7065  > &lt;SchemeType\n-000100c0: 2053 4348 454d 4526 6774 3b3c 2f64 6976   SCHEME&gt;</div\n-000100d0: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n-000100e0: 6e65 223e 3c61 2069 643d 226c 3030 3339  ne\"><a id=\"l0039\n-000100f0: 3022 206e 616d 653d 226c 3030 3339 3022  0\" name=\"l00390\"\n-00010100: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n-00010110: 3d22 6c69 6e65 6e6f 223e 2020 3339 303c  =\"lineno\">  390<\n-00010120: 2f73 7061 6e3e 3c73 7061 6e20 636c 6173  /span><span clas\n-00010130: 733d 226b 6579 776f 7264 223e 7465 6d70  s=\"keyword\">temp\n-00010140: 6c61 7465 3c2f 7370 616e 3e20 266c 743b  late</span> &lt;\n-00010150: 3c73 7061 6e20 636c 6173 733d 226b 6579  <span class=\"key\n-00010160: 776f 7264 223e 7479 7065 6e61 6d65 3c2f  word\">typename</\n-00010170: 7370 616e 3e20 4544 4745 2c20 3c73 7061  span> EDGE, <spa\n-00010180: 6e20 636c 6173 733d 226b 6579 776f 7264  n class=\"keyword\n-00010190: 223e 7479 7065 6e61 6d65 3c2f 7370 616e  \">typename</span\n-000101a0: 3e20 4d41 534b 2667 743b 3c2f 6469 763e  > MASK&gt;</div>\n-000101b0: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n-000101c0: 6522 3e3c 6120 6964 3d22 6c30 3033 3931  e\"><a id=\"l00391\n-000101d0: 2220 6e61 6d65 3d22 6c30 3033 3931 223e  \" name=\"l00391\">\n-000101e0: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n-000101f0: 226c 696e 656e 6f22 3e20 2033 3931 3c2f  \"lineno\">  391</\n-00010200: 7370 616e 3e3c 7370 616e 2063 6c61 7373  span><span class\n-00010210: 3d22 6b65 7977 6f72 6474 7970 6522 3e76  =\"keywordtype\">v\n-00010220: 6f69 643c 2f73 7061 6e3e 3c2f 6469 763e  oid</span></div>\n-00010230: 0a3c 6469 7620 636c 6173 733d 2266 6f6c  .<div class=\"fol\n-00010240: 646f 7065 6e22 2069 643d 2266 6f6c 646f  dopen\" id=\"foldo\n-00010250: 7065 6e30 3033 3932 2220 6461 7461 2d73  pen00392\" data-s\n-00010260: 7461 7274 3d22 7b22 2064 6174 612d 656e  tart=\"{\" data-en\n-00010270: 643d 227d 223e 0a3c 6469 7620 636c 6173  d=\"}\">.<div clas\n-00010280: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n-00010290: 6c30 3033 3932 2220 6e61 6d65 3d22 6c30  l00392\" name=\"l0\n-000102a0: 3033 3932 223e 3c2f 613e 3c73 7061 6e20  0392\"></a><span \n-000102b0: 636c 6173 733d 226c 696e 656e 6f22 3e3c  class=\"lineno\"><\n-000102c0: 6120 636c 6173 733d 226c 696e 6522 2068  a class=\"line\" h\n-000102d0: 7265 663d 2261 3031 3334 312e 6874 6d6c  ref=\"a01341.html\n-000102e0: 2361 3562 3561 3533 3737 6130 3165 6234  #a5b5a5377a01eb4\n-000102f0: 6261 3434 3665 3137 3465 6666 3965 3435  ba446e174eff9e45\n-00010300: 6163 223e 2020 3339 323c 2f61 3e3c 2f73  ac\">  392</a></s\n-00010310: 7061 6e3e 3c61 2063 6c61 7373 3d22 636f  pan><a class=\"co\n-00010320: 6465 2068 6c5f 6675 6e63 7469 6f6e 2220  de hl_function\" \n-00010330: 6872 6566 3d22 6130 3133 3431 2e68 746d  href=\"a01341.htm\n-00010340: 6c23 6135 6235 6135 3337 3761 3031 6562  l#a5b5a5377a01eb\n-00010350: 3462 6134 3436 6531 3734 6566 6639 6534  4ba446e174eff9e4\n-00010360: 3561 6322 3e53 6368 656d 6526 6c74 3b53  5ac\">Scheme&lt;S\n-00010370: 4348 454d 4526 6774 3b3a 3a43 6f6d 7075  CHEME&gt;::Compu\n-00010380: 7465 4564 6765 5665 7274 6578 4d61 736b  teEdgeVertexMask\n-00010390: 3c2f 613e 2845 4447 4520 3c73 7061 6e20  </a>(EDGE <span \n-000103a0: 636c 6173 733d 226b 6579 776f 7264 223e  class=\"keyword\">\n-000103b0: 636f 6e73 743c 2f73 7061 6e3e 2661 6d70  const</span>&amp\n-000103c0: 3b20 2020 2020 6564 6765 2c3c 2f64 6976  ;     edge,</div\n-000103d0: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n-000103e0: 6e65 223e 3c61 2069 643d 226c 3030 3339  ne\"><a id=\"l0039\n-000103f0: 3322 206e 616d 653d 226c 3030 3339 3322  3\" name=\"l00393\"\n-00010400: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n-00010410: 3d22 6c69 6e65 6e6f 223e 2020 3339 333c  =\"lineno\">  393<\n-00010420: 2f73 7061 6e3e 2020 2020 2020 2020 2020  /span>          \n-00010430: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00010440: 2020 2020 2020 2020 2020 2020 2020 204d                 M\n-00010450: 4153 4b26 616d 703b 2020 2020 2020 2020  ASK&amp;        \n-00010460: 2020 206d 6173 6b2c 3c2f 6469 763e 0a3c     mask,</div>.<\n-00010470: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n-00010480: 3e3c 6120 6964 3d22 6c30 3033 3934 2220  ><a id=\"l00394\" \n-00010490: 6e61 6d65 3d22 6c30 3033 3934 223e 3c2f  name=\"l00394\"></\n-000104a0: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n-000104b0: 696e 656e 6f22 3e20 2033 3934 3c2f 7370  ineno\">  394</sp\n-000104c0: 616e 3e20 2020 2020 2020 2020 2020 2020  an>             \n-000104d0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000104e0: 2020 2020 2020 2020 2020 2020 3c61 2063              <a c\n-000104f0: 6c61 7373 3d22 636f 6465 2068 6c5f 656e  lass=\"code hl_en\n-00010500: 756d 6572 6174 696f 6e22 2068 7265 663d  umeration\" href=\n-00010510: 2261 3031 3333 332e 6874 6d6c 2361 3131  \"a01333.html#a11\n-00010520: 6663 6435 3165 6638 3631 3138 6636 3565  fcd51ef86118f65e\n-00010530: 3630 3363 3134 3734 3337 3761 3738 223e  603c1474377a78\">\n-00010540: 4372 6561 7365 3a3a 5275 6c65 3c2f 613e  Crease::Rule</a>\n-00010550: 2070 6172 656e 7452 756c 652c 3c2f 6469   parentRule,</di\n-00010560: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n-00010570: 696e 6522 3e3c 6120 6964 3d22 6c30 3033  ine\"><a id=\"l003\n-00010580: 3935 2220 6e61 6d65 3d22 6c30 3033 3935  95\" name=\"l00395\n-00010590: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n-000105a0: 733d 226c 696e 656e 6f22 3e20 2033 3935  s=\"lineno\">  395\n-000105b0: 3c2f 7370 616e 3e20 2020 2020 2020 2020  </span>         \n-000105c0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000105d0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000105e0: 3c61 2063 6c61 7373 3d22 636f 6465 2068  <a class=\"code h\n-000105f0: 6c5f 656e 756d 6572 6174 696f 6e22 2068  l_enumeration\" h\n-00010600: 7265 663d 2261 3031 3333 332e 6874 6d6c  ref=\"a01333.html\n-00010610: 2361 3131 6663 6435 3165 6638 3631 3138  #a11fcd51ef86118\n-00010620: 6636 3565 3630 3363 3134 3734 3337 3761  f65e603c1474377a\n-00010630: 3738 223e 4372 6561 7365 3a3a 5275 6c65  78\">Crease::Rule\n-00010640: 3c2f 613e 2063 6869 6c64 5275 6c65 293c  </a> childRule)<\n-00010650: 7370 616e 2063 6c61 7373 3d22 6b65 7977  span class=\"keyw\n-00010660: 6f72 6422 3e20 636f 6e73 7420 3c2f 7370  ord\"> const </sp\n-00010670: 616e 3e7b 3c2f 6469 763e 0a3c 6469 7620  an>{</div>.<div \n-00010680: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n-00010690: 6964 3d22 6c30 3033 3936 2220 6e61 6d65  id=\"l00396\" name\n-000106a0: 3d22 6c30 3033 3936 223e 3c2f 613e 3c73  =\"l00396\"></a><s\n-000106b0: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n-000106c0: 6f22 3e20 2033 3936 3c2f 7370 616e 3e20  o\">  396</span> \n-000106d0: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n-000106e0: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n-000106f0: 6c30 3033 3937 2220 6e61 6d65 3d22 6c30  l00397\" name=\"l0\n-00010700: 3033 3937 223e 3c2f 613e 3c73 7061 6e20  0397\"></a><span \n-00010710: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n-00010720: 2033 3937 3c2f 7370 616e 3e20 2020 203c   397</span>    <\n-00010730: 7370 616e 2063 6c61 7373 3d22 636f 6d6d  span class=\"comm\n-00010740: 656e 7422 3e2f 2f3c 2f73 7061 6e3e 3c2f  ent\">//</span></\n-00010750: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n-00010760: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n-00010770: 3033 3938 2220 6e61 6d65 3d22 6c30 3033  0398\" name=\"l003\n-00010780: 3938 223e 3c2f 613e 3c73 7061 6e20 636c  98\"></a><span cl\n-00010790: 6173 733d 226c 696e 656e 6f22 3e20 2033  ass=\"lineno\">  3\n-000107a0: 3938 3c2f 7370 616e 3e20 2020 203c 7370  98</span>    <sp\n-000107b0: 616e 2063 6c61 7373 3d22 636f 6d6d 656e  an class=\"commen\n-000107c0: 7422 3e2f 2f20 2049 6620 7468 6520 7061  t\">//  If the pa\n-000107d0: 7265 6e74 2077 6173 2073 7065 6369 6669  rent was specifi\n-000107e0: 6564 206f 7220 6465 7465 726d 696e 6564  ed or determined\n-000107f0: 2074 6f20 6265 2053 6d6f 6f74 682c 2077   to be Smooth, w\n-00010800: 6520 6361 6e20 7175 6963 6b6c 7920 7265  e can quickly re\n-00010810: 7475 726e 3c2f 7370 616e 3e3c 2f64 6976  turn</span></div\n-00010820: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n-00010830: 6e65 223e 3c61 2069 643d 226c 3030 3339  ne\"><a id=\"l0039\n-00010840: 3922 206e 616d 653d 226c 3030 3339 3922  9\" name=\"l00399\"\n-00010850: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n-00010860: 3d22 6c69 6e65 6e6f 223e 2020 3339 393c  =\"lineno\">  399<\n-00010870: 2f73 7061 6e3e 2020 2020 3c73 7061 6e20  /span>    <span \n-00010880: 636c 6173 733d 2263 6f6d 6d65 6e74 223e  class=\"comment\">\n-00010890: 2f2f 2020 7769 7468 2061 2053 6d6f 6f74  //  with a Smoot\n-000108a0: 6820 6d61 736b 2e20 204f 7468 6572 7769  h mask.  Otherwi\n-000108b0: 7365 2074 6865 2070 6172 656e 7420 6973  se the parent is\n-000108c0: 2061 2063 7265 6173 6520 2d2d 2069 6620   a crease -- if \n-000108d0: 7468 6520 6368 696c 6420 7761 733c 2f73  the child was</s\n-000108e0: 7061 6e3e 3c2f 6469 763e 0a3c 6469 7620  pan></div>.<div \n-000108f0: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n-00010900: 6964 3d22 6c30 3034 3030 2220 6e61 6d65  id=\"l00400\" name\n-00010910: 3d22 6c30 3034 3030 223e 3c2f 613e 3c73  =\"l00400\"></a><s\n-00010920: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n-00010930: 6f22 3e20 2034 3030 3c2f 7370 616e 3e20  o\">  400</span> \n-00010940: 2020 203c 7370 616e 2063 6c61 7373 3d22     <span class=\"\n-00010950: 636f 6d6d 656e 7422 3e2f 2f20 2061 6c73  comment\">//  als\n-00010960: 6f20 7370 6563 6966 6965 6420 746f 2062  o specified to b\n-00010970: 6520 6120 6372 6561 7365 2c20 7765 2063  e a crease, we c\n-00010980: 616e 2071 7569 636b 6c79 2072 6574 7572  an quickly retur\n-00010990: 6e20 7769 7468 2061 2043 7265 6173 6520  n with a Crease \n-000109a0: 6d61 736b 2e3c 2f73 7061 6e3e 3c2f 6469  mask.</span></di\n-000109b0: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n-000109c0: 696e 6522 3e3c 6120 6964 3d22 6c30 3034  ine\"><a id=\"l004\n-000109d0: 3031 2220 6e61 6d65 3d22 6c30 3034 3031  01\" name=\"l00401\n-000109e0: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n-000109f0: 733d 226c 696e 656e 6f22 3e20 2034 3031  s=\"lineno\">  401\n-00010a00: 3c2f 7370 616e 3e20 2020 203c 7370 616e  </span>    <span\n-00010a10: 2063 6c61 7373 3d22 636f 6d6d 656e 7422   class=\"comment\"\n-00010a20: 3e2f 2f3c 2f73 7061 6e3e 3c2f 6469 763e  >//</span></div>\n-00010a30: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n-00010a40: 6522 3e3c 6120 6964 3d22 6c30 3034 3032  e\"><a id=\"l00402\n-00010a50: 2220 6e61 6d65 3d22 6c30 3034 3032 223e  \" name=\"l00402\">\n-00010a60: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n-00010a70: 226c 696e 656e 6f22 3e20 2034 3032 3c2f  \"lineno\">  402</\n-00010a80: 7370 616e 3e20 2020 203c 7370 616e 2063  span>    <span c\n-00010a90: 6c61 7373 3d22 6b65 7977 6f72 6466 6c6f  lass=\"keywordflo\n-00010aa0: 7722 3e69 663c 2f73 7061 6e3e 2028 2870  w\">if</span> ((p\n-00010ab0: 6172 656e 7452 756c 6520 3d3d 203c 6120  arentRule == <a \n-00010ac0: 636c 6173 733d 2263 6f64 6520 686c 5f65  class=\"code hl_e\n-00010ad0: 6e75 6d76 616c 7565 2220 6872 6566 3d22  numvalue\" href=\"\n-00010ae0: 6130 3133 3333 2e68 746d 6c23 6131 3166  a01333.html#a11f\n-00010af0: 6364 3531 6566 3836 3131 3866 3635 6536  cd51ef86118f65e6\n-00010b00: 3033 6331 3437 3433 3737 6137 3861 3631  03c1474377a78a61\n-00010b10: 6431 3337 6638 3636 3939 3765 6433 3639  d137f866997ed369\n-00010b20: 3365 3366 6361 6437 3664 6566 3566 223e  3e3fcad76def5f\">\n-00010b30: 4372 6561 7365 3a3a 5255 4c45 5f53 4d4f  Crease::RULE_SMO\n-00010b40: 4f54 483c 2f61 3e29 207c 7c3c 2f64 6976  OTH</a>) ||</div\n-00010b50: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n-00010b60: 6e65 223e 3c61 2069 643d 226c 3030 3430  ne\"><a id=\"l0040\n-00010b70: 3322 206e 616d 653d 226c 3030 3430 3322  3\" name=\"l00403\"\n-00010b80: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n-00010b90: 3d22 6c69 6e65 6e6f 223e 2020 3430 333c  =\"lineno\">  403<\n-00010ba0: 2f73 7061 6e3e 2020 2020 2020 2028 2870  /span>       ((p\n-00010bb0: 6172 656e 7452 756c 6520 3d3d 203c 6120  arentRule == <a \n-00010bc0: 636c 6173 733d 2263 6f64 6520 686c 5f65  class=\"code hl_e\n-00010bd0: 6e75 6d76 616c 7565 2220 6872 6566 3d22  numvalue\" href=\"\n-00010be0: 6130 3133 3333 2e68 746d 6c23 6131 3166  a01333.html#a11f\n-00010bf0: 6364 3531 6566 3836 3131 3866 3635 6536  cd51ef86118f65e6\n-00010c00: 3033 6331 3437 3433 3737 6137 3861 6232  03c1474377a78ab2\n-00010c10: 3939 6165 6662 3236 3031 3361 3739 6435  99aefb26013a79d5\n-00010c20: 3231 3931 6137 3838 3766 6561 3533 223e  2191a7887fea53\">\n-00010c30: 4372 6561 7365 3a3a 5255 4c45 5f55 4e4b  Crease::RULE_UNK\n-00010c40: 4e4f 574e 3c2f 613e 2920 2661 6d70 3b26  NOWN</a>) &amp;&\n-00010c50: 616d 703b 2028 6564 6765 2e47 6574 5368  amp; (edge.GetSh\n-00010c60: 6172 706e 6573 7328 2920 266c 743b 3d20  arpness() &lt;= \n-00010c70: 302e 3066 2929 2920 7b3c 2f64 6976 3e0a  0.0f))) {</div>.\n-00010c80: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n-00010c90: 223e 3c61 2069 643d 226c 3030 3430 3422  \"><a id=\"l00404\"\n-00010ca0: 206e 616d 653d 226c 3030 3430 3422 3e3c   name=\"l00404\"><\n-00010cb0: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n-00010cc0: 6c69 6e65 6e6f 223e 2020 3430 343c 2f73  lineno\">  404</s\n-00010cd0: 7061 6e3e 2020 2020 2020 2020 6173 7369  pan>        assi\n-00010ce0: 676e 536d 6f6f 7468 4d61 736b 466f 7245  gnSmoothMaskForE\n-00010cf0: 6467 6528 6564 6765 2c20 6d61 736b 293b  dge(edge, mask);\n-00010d00: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n-00010d10: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n-00010d20: 6c30 3034 3035 2220 6e61 6d65 3d22 6c30  l00405\" name=\"l0\n-00010d30: 3034 3035 223e 3c2f 613e 3c73 7061 6e20  0405\"></a><span \n-00010d40: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n-00010d50: 2034 3035 3c2f 7370 616e 3e20 2020 2020   405</span>     \n-00010d60: 2020 203c 7370 616e 2063 6c61 7373 3d22     <span class=\"\n-00010d70: 6b65 7977 6f72 6466 6c6f 7722 3e72 6574  keywordflow\">ret\n-00010d80: 7572 6e3c 2f73 7061 6e3e 3b3c 2f64 6976  urn</span>;</div\n-00010d90: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n-00010da0: 6e65 223e 3c61 2069 643d 226c 3030 3430  ne\"><a id=\"l0040\n-00010db0: 3622 206e 616d 653d 226c 3030 3430 3622  6\" name=\"l00406\"\n-00010dc0: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n-00010dd0: 3d22 6c69 6e65 6e6f 223e 2020 3430 363c  =\"lineno\">  406<\n-00010de0: 2f73 7061 6e3e 2020 2020 7d3c 2f64 6976  /span>    }</div\n-00010df0: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n-00010e00: 6e65 223e 3c61 2069 643d 226c 3030 3430  ne\"><a id=\"l0040\n-00010e10: 3722 206e 616d 653d 226c 3030 3430 3722  7\" name=\"l00407\"\n-00010e20: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n-00010e30: 3d22 6c69 6e65 6e6f 223e 2020 3430 373c  =\"lineno\">  407<\n-00010e40: 2f73 7061 6e3e 2020 2020 3c73 7061 6e20  /span>    <span \n-00010e50: 636c 6173 733d 226b 6579 776f 7264 666c  class=\"keywordfl\n-00010e60: 6f77 223e 6966 3c2f 7370 616e 3e20 2863  ow\">if</span> (c\n-00010e70: 6869 6c64 5275 6c65 203d 3d20 3c61 2063  hildRule == <a c\n-00010e80: 6c61 7373 3d22 636f 6465 2068 6c5f 656e  lass=\"code hl_en\n-00010e90: 756d 7661 6c75 6522 2068 7265 663d 2261  umvalue\" href=\"a\n-00010ea0: 3031 3333 332e 6874 6d6c 2361 3131 6663  01333.html#a11fc\n-00010eb0: 6435 3165 6638 3631 3138 6636 3565 3630  d51ef86118f65e60\n-00010ec0: 3363 3134 3734 3337 3761 3738 6139 3636  3c1474377a78a966\n-00010ed0: 6661 3161 6538 6165 6238 3538 3763 3439  fa1ae8aeb8587c49\n-00010ee0: 3863 6636 6139 3263 6333 3333 3522 3e43  8cf6a92cc3335\">C\n-00010ef0: 7265 6173 653a 3a52 554c 455f 4352 4541  rease::RULE_CREA\n-00010f00: 5345 3c2f 613e 2920 7b3c 2f64 6976 3e0a  SE</a>) {</div>.\n-00010f10: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n-00010f20: 223e 3c61 2069 643d 226c 3030 3430 3822  \"><a id=\"l00408\"\n-00010f30: 206e 616d 653d 226c 3030 3430 3822 3e3c   name=\"l00408\"><\n-00010f40: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n-00010f50: 6c69 6e65 6e6f 223e 2020 3430 383c 2f73  lineno\">  408</s\n-00010f60: 7061 6e3e 2020 2020 2020 2020 6173 7369  pan>        assi\n-00010f70: 676e 4372 6561 7365 4d61 736b 466f 7245  gnCreaseMaskForE\n-00010f80: 6467 6528 6564 6765 2c20 6d61 736b 293b  dge(edge, mask);\n-00010f90: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n-00010fa0: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n-00010fb0: 6c30 3034 3039 2220 6e61 6d65 3d22 6c30  l00409\" name=\"l0\n-00010fc0: 3034 3039 223e 3c2f 613e 3c73 7061 6e20  0409\"></a><span \n-00010fd0: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n-00010fe0: 2034 3039 3c2f 7370 616e 3e20 2020 2020   409</span>     \n-00010ff0: 2020 203c 7370 616e 2063 6c61 7373 3d22     <span class=\"\n-00011000: 6b65 7977 6f72 6466 6c6f 7722 3e72 6574  keywordflow\">ret\n-00011010: 7572 6e3c 2f73 7061 6e3e 3b3c 2f64 6976  urn</span>;</div\n-00011020: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n-00011030: 6e65 223e 3c61 2069 643d 226c 3030 3431  ne\"><a id=\"l0041\n-00011040: 3022 206e 616d 653d 226c 3030 3431 3022  0\" name=\"l00410\"\n-00011050: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n-00011060: 3d22 6c69 6e65 6e6f 223e 2020 3431 303c  =\"lineno\">  410<\n-00011070: 2f73 7061 6e3e 2020 2020 7d3c 2f64 6976  /span>    }</div\n-00011080: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n-00011090: 6e65 223e 3c61 2069 643d 226c 3030 3431  ne\"><a id=\"l0041\n-000110a0: 3122 206e 616d 653d 226c 3030 3431 3122  1\" name=\"l00411\"\n-000110b0: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n-000110c0: 3d22 6c69 6e65 6e6f 223e 2020 3431 313c  =\"lineno\">  411<\n-000110d0: 2f73 7061 6e3e 203c 2f64 6976 3e0a 3c64  /span> </div>.<d\n-000110e0: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n-000110f0: 3c61 2069 643d 226c 3030 3431 3222 206e  <a id=\"l00412\" n\n-00011100: 616d 653d 226c 3030 3431 3222 3e3c 2f61  ame=\"l00412\"></a\n-00011110: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n-00011120: 6e65 6e6f 223e 2020 3431 323c 2f73 7061  neno\">  412</spa\n-00011130: 6e3e 2020 2020 3c73 7061 6e20 636c 6173  n>    <span clas\n-00011140: 733d 2263 6f6d 6d65 6e74 223e 2f2f 3c2f  s=\"comment\">//</\n-00011150: 7370 616e 3e3c 2f64 6976 3e0a 3c64 6976  span></div>.<div\n-00011160: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n-00011170: 2069 643d 226c 3030 3431 3322 206e 616d   id=\"l00413\" nam\n-00011180: 653d 226c 3030 3431 3322 3e3c 2f61 3e3c  e=\"l00413\"></a><\n-00011190: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n-000111a0: 6e6f 223e 2020 3431 333c 2f73 7061 6e3e  no\">  413</span>\n-000111b0: 2020 2020 3c73 7061 6e20 636c 6173 733d      <span class=\n-000111c0: 2263 6f6d 6d65 6e74 223e 2f2f 2020 5765  \"comment\">//  We\n-000111d0: 2068 6176 6520 6120 4372 6561 7365 206f   have a Crease o\n-000111e0: 6e20 7468 6520 7061 7265 6e74 2061 6e64  n the parent and\n-000111f0: 2074 6865 2063 6869 6c64 2077 6173 2065   the child was e\n-00011200: 6974 6865 7220 7370 6563 6966 6965 6420  ither specified \n-00011210: 6173 2053 6d6f 6f74 683c 2f73 7061 6e3e  as Smooth</span>\n-00011220: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n-00011230: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n-00011240: 6c30 3034 3134 2220 6e61 6d65 3d22 6c30  l00414\" name=\"l0\n-00011250: 3034 3134 223e 3c2f 613e 3c73 7061 6e20  0414\"></a><span \n-00011260: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n-00011270: 2034 3134 3c2f 7370 616e 3e20 2020 203c   414</span>    <\n-00011280: 7370 616e 2063 6c61 7373 3d22 636f 6d6d  span class=\"comm\n-00011290: 656e 7422 3e2f 2f20 206f 7220 7761 7320  ent\">//  or was \n-000112a0: 6e6f 7420 7370 6563 6966 6965 6420 6174  not specified at\n-000112b0: 2061 6c6c 202d 2d20 6465 616c 2077 6974   all -- deal wit\n-000112c0: 6820 7468 6520 756e 7370 6563 6966 6965  h the unspecifie\n-000112d0: 6420 6361 7365 2066 6972 7374 2028 6167  d case first (ag\n-000112e0: 6169 6e3c 2f73 7061 6e3e 3c2f 6469 763e  ain</span></div>\n-000112f0: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n-00011300: 6522 3e3c 6120 6964 3d22 6c30 3034 3135  e\"><a id=\"l00415\n-00011310: 2220 6e61 6d65 3d22 6c30 3034 3135 223e  \" name=\"l00415\">\n-00011320: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n-00011330: 226c 696e 656e 6f22 3e20 2034 3135 3c2f  \"lineno\">  415</\n-00011340: 7370 616e 3e20 2020 203c 7370 616e 2063  span>    <span c\n-00011350: 6c61 7373 3d22 636f 6d6d 656e 7422 3e2f  lass=\"comment\">/\n-00011360: 2f20 2072 6574 7572 6e69 6e67 2061 2043  /  returning a C\n-00011370: 7265 6173 6520 6d61 736b 2069 6620 7468  rease mask if th\n-00011380: 6520 6368 696c 6420 6973 2061 6c73 6f20  e child is also \n-00011390: 6465 7465 726d 696e 6564 2074 6f20 6265  determined to be\n-000113a0: 2061 2043 7265 6173 6529 2061 6e64 3c2f   a Crease) and</\n-000113b0: 7370 616e 3e3c 2f64 6976 3e0a 3c64 6976  span></div>.<div\n-000113c0: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n-000113d0: 2069 643d 226c 3030 3431 3622 206e 616d   id=\"l00416\" nam\n-000113e0: 653d 226c 3030 3431 3622 3e3c 2f61 3e3c  e=\"l00416\"></a><\n-000113f0: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n-00011400: 6e6f 223e 2020 3431 363c 2f73 7061 6e3e  no\">  416</span>\n-00011410: 2020 2020 3c73 7061 6e20 636c 6173 733d      <span class=\n-00011420: 2263 6f6d 6d65 6e74 223e 2f2f 2020 636f  \"comment\">//  co\n-00011430: 6e74 696e 7565 2069 6620 7765 2068 6176  ntinue if we hav\n-00011440: 6520 6120 7472 616e 7369 7469 6f6e 2074  e a transition t\n-00011450: 6f20 536d 6f6f 7468 2e3c 2f73 7061 6e3e  o Smooth.</span>\n-00011460: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n-00011470: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n-00011480: 6c30 3034 3137 2220 6e61 6d65 3d22 6c30  l00417\" name=\"l0\n-00011490: 3034 3137 223e 3c2f 613e 3c73 7061 6e20  0417\"></a><span \n-000114a0: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n-000114b0: 2034 3137 3c2f 7370 616e 3e20 2020 203c   417</span>    <\n-000114c0: 7370 616e 2063 6c61 7373 3d22 636f 6d6d  span class=\"comm\n-000114d0: 656e 7422 3e2f 2f3c 2f73 7061 6e3e 3c2f  ent\">//</span></\n-000114e0: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n-000114f0: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n-00011500: 3034 3138 2220 6e61 6d65 3d22 6c30 3034  0418\" name=\"l004\n-00011510: 3138 223e 3c2f 613e 3c73 7061 6e20 636c  18\"></a><span cl\n-00011520: 6173 733d 226c 696e 656e 6f22 3e20 2034  ass=\"lineno\">  4\n-00011530: 3138 3c2f 7370 616e 3e20 2020 203c 7370  18</span>    <sp\n-00011540: 616e 2063 6c61 7373 3d22 636f 6d6d 656e  an class=\"commen\n-00011550: 7422 3e2f 2f20 204e 6f74 6520 7768 656e  t\">//  Note when\n-00011560: 2071 7561 6c69 6679 696e 6720 7468 6520   qualifying the \n-00011570: 6368 696c 6420 7468 6174 2069 6620 7468  child that if th\n-00011580: 6520 7061 7265 6e74 2073 6861 7270 6e65  e parent sharpne\n-00011590: 7373 2026 6774 3b20 312e 302c 2072 6567  ss &gt; 1.0, reg\n-000115a0: 6172 646c 6573 733c 2f73 7061 6e3e 3c2f  ardless</span></\n-000115b0: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n-000115c0: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n-000115d0: 3034 3139 2220 6e61 6d65 3d22 6c30 3034  0419\" name=\"l004\n-000115e0: 3139 223e 3c2f 613e 3c73 7061 6e20 636c  19\"></a><span cl\n-000115f0: 6173 733d 226c 696e 656e 6f22 3e20 2034  ass=\"lineno\">  4\n-00011600: 3139 3c2f 7370 616e 3e20 2020 203c 7370  19</span>    <sp\n-00011610: 616e 2063 6c61 7373 3d22 636f 6d6d 656e  an class=\"commen\n-00011620: 7422 3e2f 2f20 206f 6620 7468 6520 6372  t\">//  of the cr\n-00011630: 6561 7369 6e67 206d 6574 686f 642c 2077  easing method, w\n-00011640: 6865 7468 6572 2074 6865 2063 6869 6c64  hether the child\n-00011650: 2073 6861 7270 6e65 7373 2076 616c 7565   sharpness value\n-00011660: 7320 6465 6361 7920 746f 207a 6572 6f20  s decay to zero \n-00011670: 6973 3c2f 7370 616e 3e3c 2f64 6976 3e0a  is</span></div>.\n-00011680: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n-00011690: 223e 3c61 2069 643d 226c 3030 3432 3022  \"><a id=\"l00420\"\n-000116a0: 206e 616d 653d 226c 3030 3432 3022 3e3c   name=\"l00420\"><\n-000116b0: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n-000116c0: 6c69 6e65 6e6f 223e 2020 3432 303c 2f73  lineno\">  420</s\n-000116d0: 7061 6e3e 2020 2020 3c73 7061 6e20 636c  pan>    <span cl\n-000116e0: 6173 733d 2263 6f6d 6d65 6e74 223e 2f2f  ass=\"comment\">//\n-000116f0: 2020 6972 7265 6c65 7661 6e74 202d 2d20    irrelevant -- \n-00011700: 7468 6520 6672 6163 7469 6f6e 616c 2077  the fractional w\n-00011710: 6569 6768 7420 666f 7220 7375 6368 2061  eight for such a\n-00011720: 2063 6173 6520 2874 6865 2076 616c 7565   case (the value\n-00011730: 206f 6620 7468 6520 7061 7265 6e74 3c2f   of the parent</\n-00011740: 7370 616e 3e3c 2f64 6976 3e0a 3c64 6976  span></div>.<div\n-00011750: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n-00011760: 2069 643d 226c 3030 3432 3122 206e 616d   id=\"l00421\" nam\n-00011770: 653d 226c 3030 3432 3122 3e3c 2f61 3e3c  e=\"l00421\"></a><\n-00011780: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n-00011790: 6e6f 223e 2020 3432 313c 2f73 7061 6e3e  no\">  421</span>\n-000117a0: 2020 2020 3c73 7061 6e20 636c 6173 733d      <span class=\n-000117b0: 2263 6f6d 6d65 6e74 223e 2f2f 2020 7368  \"comment\">//  sh\n-000117c0: 6172 706e 6573 7329 2069 7320 2667 743b  arpness) is &gt;\n-000117d0: 2031 2e30 2c20 616e 6420 7768 656e 2063   1.0, and when c\n-000117e0: 6c61 6d70 6564 2074 6f20 3120 6566 6665  lamped to 1 effe\n-000117f0: 6374 6976 656c 7920 7969 656c 6473 2061  ctively yields a\n-00011800: 2066 756c 6c20 6372 6561 7365 2e3c 2f73   full crease.</s\n-00011810: 7061 6e3e 3c2f 6469 763e 0a3c 6469 7620  pan></div>.<div \n-00011820: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n-00011830: 6964 3d22 6c30 3034 3232 2220 6e61 6d65  id=\"l00422\" name\n-00011840: 3d22 6c30 3034 3232 223e 3c2f 613e 3c73  =\"l00422\"></a><s\n-00011850: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n-00011860: 6f22 3e20 2034 3232 3c2f 7370 616e 3e20  o\">  422</span> \n-00011870: 2020 203c 7370 616e 2063 6c61 7373 3d22     <span class=\"\n-00011880: 636f 6d6d 656e 7422 3e2f 2f3c 2f73 7061  comment\">//</spa\n-00011890: 6e3e 3c2f 6469 763e 0a3c 6469 7620 636c  n></div>.<div cl\n-000118a0: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n-000118b0: 3d22 6c30 3034 3233 2220 6e61 6d65 3d22  =\"l00423\" name=\"\n-000118c0: 6c30 3034 3233 223e 3c2f 613e 3c73 7061  l00423\"></a><spa\n-000118d0: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n-000118e0: 3e20 2034 3233 3c2f 7370 616e 3e20 2020  >  423</span>   \n-000118f0: 203c 7370 616e 2063 6c61 7373 3d22 6b65   <span class=\"ke\n-00011900: 7977 6f72 6466 6c6f 7722 3e69 663c 2f73  ywordflow\">if</s\n-00011910: 7061 6e3e 2028 6368 696c 6452 756c 6520  pan> (childRule \n-00011920: 3d3d 203c 6120 636c 6173 733d 2263 6f64  == <a class=\"cod\n-00011930: 6520 686c 5f65 6e75 6d76 616c 7565 2220  e hl_enumvalue\" \n-00011940: 6872 6566 3d22 6130 3133 3333 2e68 746d  href=\"a01333.htm\n-00011950: 6c23 6131 3166 6364 3531 6566 3836 3131  l#a11fcd51ef8611\n-00011960: 3866 3635 6536 3033 6331 3437 3433 3737  8f65e603c1474377\n-00011970: 6137 3861 6232 3939 6165 6662 3236 3031  a78ab299aefb2601\n-00011980: 3361 3739 6435 3231 3931 6137 3838 3766  3a79d52191a7887f\n-00011990: 6561 3533 223e 4372 6561 7365 3a3a 5255  ea53\">Crease::RU\n-000119a0: 4c45 5f55 4e4b 4e4f 574e 3c2f 613e 2920  LE_UNKNOWN</a>) \n-000119b0: 7b3c 2f64 6976 3e0a 3c64 6976 2063 6c61  {</div>.<div cla\n-000119c0: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n-000119d0: 226c 3030 3432 3422 206e 616d 653d 226c  \"l00424\" name=\"l\n-000119e0: 3030 3432 3422 3e3c 2f61 3e3c 7370 616e  00424\"></a><span\n-000119f0: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n-00011a00: 2020 3432 343c 2f73 7061 6e3e 2020 2020    424</span>    \n-00011a10: 2020 2020 3c61 2063 6c61 7373 3d22 636f      <a class=\"co\n-00011a20: 6465 2068 6c5f 636c 6173 7322 2068 7265  de hl_class\" hre\n-00011a30: 663d 2261 3031 3333 332e 6874 6d6c 223e  f=\"a01333.html\">\n-00011a40: 4372 6561 7365 3c2f 613e 2063 7265 6173  Crease</a> creas\n-00011a50: 6528 5f6f 7074 696f 6e73 293b 3c2f 6469  e(_options);</di\n-00011a60: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n-00011a70: 696e 6522 3e3c 6120 6964 3d22 6c30 3034  ine\"><a id=\"l004\n-00011a80: 3235 2220 6e61 6d65 3d22 6c30 3034 3235  25\" name=\"l00425\n-00011a90: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n-00011aa0: 733d 226c 696e 656e 6f22 3e20 2034 3235  s=\"lineno\">  425\n-00011ab0: 3c2f 7370 616e 3e20 3c2f 6469 763e 0a3c  </span> </div>.<\n-00011ac0: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n-00011ad0: 3e3c 6120 6964 3d22 6c30 3034 3236 2220  ><a id=\"l00426\" \n-00011ae0: 6e61 6d65 3d22 6c30 3034 3236 223e 3c2f  name=\"l00426\"></\n-00011af0: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n-00011b00: 696e 656e 6f22 3e20 2034 3236 3c2f 7370  ineno\">  426</sp\n-00011b10: 616e 3e20 2020 2020 2020 203c 7370 616e  an>        <span\n-00011b20: 2063 6c61 7373 3d22 6b65 7977 6f72 6474   class=\"keywordt\n-00011b30: 7970 6522 3e62 6f6f 6c3c 2f73 7061 6e3e  ype\">bool</span>\n-00011b40: 2063 6869 6c64 4973 4372 6561 7365 203d   childIsCrease =\n-00011b50: 203c 7370 616e 2063 6c61 7373 3d22 6b65   <span class=\"ke\n-00011b60: 7977 6f72 6422 3e66 616c 7365 3c2f 7370  yword\">false</sp\n-00011b70: 616e 3e3b 3c2f 6469 763e 0a3c 6469 7620  an>;</div>.<div \n-00011b80: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n-00011b90: 6964 3d22 6c30 3034 3237 2220 6e61 6d65  id=\"l00427\" name\n-00011ba0: 3d22 6c30 3034 3237 223e 3c2f 613e 3c73  =\"l00427\"></a><s\n-00011bb0: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n-00011bc0: 6f22 3e20 2034 3237 3c2f 7370 616e 3e20  o\">  427</span> \n-00011bd0: 2020 2020 2020 203c 7370 616e 2063 6c61         <span cla\n-00011be0: 7373 3d22 6b65 7977 6f72 6466 6c6f 7722  ss=\"keywordflow\"\n-00011bf0: 3e69 663c 2f73 7061 6e3e 2028 7061 7265  >if</span> (pare\n-00011c00: 6e74 5275 6c65 203d 3d20 3c61 2063 6c61  ntRule == <a cla\n-00011c10: 7373 3d22 636f 6465 2068 6c5f 656e 756d  ss=\"code hl_enum\n-00011c20: 7661 6c75 6522 2068 7265 663d 2261 3031  value\" href=\"a01\n-00011c30: 3333 332e 6874 6d6c 2361 3131 6663 6435  333.html#a11fcd5\n-00011c40: 3165 6638 3631 3138 6636 3565 3630 3363  1ef86118f65e603c\n-00011c50: 3134 3734 3337 3761 3738 6139 3636 6661  1474377a78a966fa\n-00011c60: 3161 6538 6165 6238 3538 3763 3439 3863  1ae8aeb8587c498c\n-00011c70: 6636 6139 3263 6333 3333 3522 3e43 7265  f6a92cc3335\">Cre\n-00011c80: 6173 653a 3a52 554c 455f 4352 4541 5345  ase::RULE_CREASE\n-00011c90: 3c2f 613e 2920 7b3c 2f64 6976 3e0a 3c64  </a>) {</div>.<d\n-00011ca0: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n-00011cb0: 3c61 2069 643d 226c 3030 3432 3822 206e  <a id=\"l00428\" n\n-00011cc0: 616d 653d 226c 3030 3432 3822 3e3c 2f61  ame=\"l00428\"></a\n-00011cd0: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n-00011ce0: 6e65 6e6f 223e 2020 3432 383c 2f73 7061  neno\">  428</spa\n-00011cf0: 6e3e 2020 2020 2020 2020 2020 2020 3c73  n>            <s\n-00011d00: 7061 6e20 636c 6173 733d 2263 6f6d 6d65  pan class=\"comme\n-00011d10: 6e74 223e 2f2f 2020 4368 696c 6420 756e  nt\">//  Child un\n-00011d20: 6b6e 6f77 6e20 6173 2064 6566 6175 6c74  known as default\n-00011d30: 2076 616c 7565 2062 7574 2070 6172 656e   value but paren\n-00011d40: 7420 5275 6c65 2073 7065 6369 6669 6564  t Rule specified\n-00011d50: 2061 7320 4372 6561 7365 3c2f 7370 616e   as Crease</span\n-00011d60: 3e3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ></div>.<div cla\n-00011d70: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n-00011d80: 226c 3030 3432 3922 206e 616d 653d 226c  \"l00429\" name=\"l\n-00011d90: 3030 3432 3922 3e3c 2f61 3e3c 7370 616e  00429\"></a><span\n-00011da0: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n-00011db0: 2020 3432 393c 2f73 7061 6e3e 2020 2020    429</span>    \n-00011dc0: 2020 2020 2020 2020 6368 696c 6449 7343          childIsC\n-00011dd0: 7265 6173 6520 3d20 3c73 7061 6e20 636c  rease = <span cl\n-00011de0: 6173 733d 226b 6579 776f 7264 223e 7472  ass=\"keyword\">tr\n-00011df0: 7565 3c2f 7370 616e 3e3b 3c2f 6469 763e  ue</span>;</div>\n-00011e00: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n-00011e10: 6522 3e3c 6120 6964 3d22 6c30 3034 3330  e\"><a id=\"l00430\n-00011e20: 2220 6e61 6d65 3d22 6c30 3034 3330 223e  \" name=\"l00430\">\n-00011e30: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n-00011e40: 226c 696e 656e 6f22 3e20 2034 3330 3c2f  \"lineno\">  430</\n-00011e50: 7370 616e 3e20 2020 2020 2020 207d 203c  span>        } <\n-00011e60: 7370 616e 2063 6c61 7373 3d22 6b65 7977  span class=\"keyw\n-00011e70: 6f72 6466 6c6f 7722 3e65 6c73 653c 2f73  ordflow\">else</s\n-00011e80: 7061 6e3e 203c 7370 616e 2063 6c61 7373  pan> <span class\n-00011e90: 3d22 6b65 7977 6f72 6466 6c6f 7722 3e69  =\"keywordflow\">i\n-00011ea0: 663c 2f73 7061 6e3e 2028 6564 6765 2e47  f</span> (edge.G\n-00011eb0: 6574 5368 6172 706e 6573 7328 2920 2667  etSharpness() &g\n-00011ec0: 743b 3d20 312e 3066 2920 7b3c 2f64 6976  t;= 1.0f) {</div\n-00011ed0: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n-00011ee0: 6e65 223e 3c61 2069 643d 226c 3030 3433  ne\"><a id=\"l0043\n-00011ef0: 3122 206e 616d 653d 226c 3030 3433 3122  1\" name=\"l00431\"\n-00011f00: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n-00011f10: 3d22 6c69 6e65 6e6f 223e 2020 3433 313c  =\"lineno\">  431<\n-00011f20: 2f73 7061 6e3e 2020 2020 2020 2020 2020  /span>          \n-00011f30: 2020 3c73 7061 6e20 636c 6173 733d 2263    <span class=\"c\n-00011f40: 6f6d 6d65 6e74 223e 2f2f 2020 5368 6172  omment\">//  Shar\n-00011f50: 706e 6573 7320 2667 743b 3d20 312e 3020  pness &gt;= 1.0 \n-00011f60: 616c 7761 7973 2061 2063 7265 6173 6520  always a crease \n-00011f70: 2d2d 2073 6565 206e 6f74 6520 6162 6f76  -- see note abov\n-00011f80: 653c 2f73 7061 6e3e 3c2f 6469 763e 0a3c  e</span></div>.<\n-00011f90: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n-00011fa0: 3e3c 6120 6964 3d22 6c30 3034 3332 2220  ><a id=\"l00432\" \n-00011fb0: 6e61 6d65 3d22 6c30 3034 3332 223e 3c2f  name=\"l00432\"></\n-00011fc0: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n-00011fd0: 696e 656e 6f22 3e20 2034 3332 3c2f 7370  ineno\">  432</sp\n-00011fe0: 616e 3e20 2020 2020 2020 2020 2020 2063  an>            c\n-00011ff0: 6869 6c64 4973 4372 6561 7365 203d 203c  hildIsCrease = <\n-00012000: 7370 616e 2063 6c61 7373 3d22 6b65 7977  span class=\"keyw\n-00012010: 6f72 6422 3e74 7275 653c 2f73 7061 6e3e  ord\">true</span>\n-00012020: 3b3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ;</div>.<div cla\n-00012030: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n-00012040: 226c 3030 3433 3322 206e 616d 653d 226c  \"l00433\" name=\"l\n-00012050: 3030 3433 3322 3e3c 2f61 3e3c 7370 616e  00433\"></a><span\n-00012060: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n-00012070: 2020 3433 333c 2f73 7061 6e3e 2020 2020    433</span>    \n-00012080: 2020 2020 7d20 3c73 7061 6e20 636c 6173      } <span clas\n-00012090: 733d 226b 6579 776f 7264 666c 6f77 223e  s=\"keywordflow\">\n-000120a0: 656c 7365 3c2f 7370 616e 3e20 3c73 7061  else</span> <spa\n-000120b0: 6e20 636c 6173 733d 226b 6579 776f 7264  n class=\"keyword\n-000120c0: 666c 6f77 223e 6966 3c2f 7370 616e 3e20  flow\">if</span> \n-000120d0: 2863 7265 6173 652e 3c61 2063 6c61 7373  (crease.<a class\n-000120e0: 3d22 636f 6465 2068 6c5f 6675 6e63 7469  =\"code hl_functi\n-000120f0: 6f6e 2220 6872 6566 3d22 6130 3133 3333  on\" href=\"a01333\n-00012100: 2e68 746d 6c23 6135 6466 6136 3831 3066  .html#a5dfa6810f\n-00012110: 3531 3066 6163 3165 6336 3231 6663 3965  510fac1ec621fc9e\n-00012120: 3662 3533 3063 3422 3e49 7355 6e69 666f  6b530c4\">IsUnifo\n-00012130: 726d 3c2f 613e 2829 2920 7b3c 2f64 6976  rm</a>()) {</div\n-00012140: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n-00012150: 6e65 223e 3c61 2069 643d 226c 3030 3433  ne\"><a id=\"l0043\n-00012160: 3422 206e 616d 653d 226c 3030 3433 3422  4\" name=\"l00434\"\n-00012170: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n-00012180: 3d22 6c69 6e65 6e6f 223e 2020 3433 343c  =\"lineno\">  434<\n-00012190: 2f73 7061 6e3e 2020 2020 2020 2020 2020  /span>          \n-000121a0: 2020 3c73 7061 6e20 636c 6173 733d 2263    <span class=\"c\n-000121b0: 6f6d 6d65 6e74 223e 2f2f 2020 5368 6172  omment\">//  Shar\n-000121c0: 706e 6573 7320 266c 743b 2031 2e30 2069  pness &lt; 1.0 i\n-000121d0: 7320 6775 6172 616e 7465 6564 2074 6f20  s guaranteed to \n-000121e0: 6465 6361 7920 746f 2030 2e30 2066 6f72  decay to 0.0 for\n-000121f0: 2055 6e69 666f 726d 2063 6869 6c64 2065   Uniform child e\n-00012200: 6467 6573 3c2f 7370 616e 3e3c 2f64 6976  dges</span></div\n-00012210: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n-00012220: 6e65 223e 3c61 2069 643d 226c 3030 3433  ne\"><a id=\"l0043\n-00012230: 3522 206e 616d 653d 226c 3030 3433 3522  5\" name=\"l00435\"\n-00012240: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n-00012250: 3d22 6c69 6e65 6e6f 223e 2020 3433 353c  =\"lineno\">  435<\n-00012260: 2f73 7061 6e3e 2020 2020 2020 2020 2020  /span>          \n-00012270: 2020 6368 696c 6449 7343 7265 6173 6520    childIsCrease \n-00012280: 3d20 3c73 7061 6e20 636c 6173 733d 226b  = <span class=\"k\n-00012290: 6579 776f 7264 223e 6661 6c73 653c 2f73  eyword\">false</s\n-000122a0: 7061 6e3e 3b3c 2f64 6976 3e0a 3c64 6976  pan>;</div>.<div\n-000122b0: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n-000122c0: 2069 643d 226c 3030 3433 3622 206e 616d   id=\"l00436\" nam\n-000122d0: 653d 226c 3030 3433 3622 3e3c 2f61 3e3c  e=\"l00436\"></a><\n-000122e0: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n-000122f0: 6e6f 223e 2020 3433 363c 2f73 7061 6e3e  no\">  436</span>\n-00012300: 2020 2020 2020 2020 7d20 3c73 7061 6e20          } <span \n-00012310: 636c 6173 733d 226b 6579 776f 7264 666c  class=\"keywordfl\n-00012320: 6f77 223e 656c 7365 3c2f 7370 616e 3e20  ow\">else</span> \n-00012330: 7b3c 2f64 6976 3e0a 3c64 6976 2063 6c61  {</div>.<div cla\n-00012340: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n-00012350: 226c 3030 3433 3722 206e 616d 653d 226c  \"l00437\" name=\"l\n-00012360: 3030 3433 3722 3e3c 2f61 3e3c 7370 616e  00437\"></a><span\n-00012370: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n-00012380: 2020 3433 373c 2f73 7061 6e3e 2020 2020    437</span>    \n-00012390: 2020 2020 2020 2020 3c73 7061 6e20 636c          <span cl\n-000123a0: 6173 733d 2263 6f6d 6d65 6e74 223e 2f2f  ass=\"comment\">//\n-000123b0: 2020 5368 6172 706e 6573 7320 266c 743b    Sharpness &lt;\n-000123c0: 3d20 312e 3020 646f 6573 206e 6f74 206e  = 1.0 does not n\n-000123d0: 6563 6573 7361 7269 6c79 2064 6563 6179  ecessarily decay\n-000123e0: 2074 6f20 302e 3020 666f 7220 626f 7468   to 0.0 for both\n-000123f0: 2063 6869 6c64 2065 6467 6573 2e2e 2e3c   child edges...<\n-00012400: 2f73 7061 6e3e 3c2f 6469 763e 0a3c 6469  /span></div>.<di\n-00012410: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n-00012420: 6120 6964 3d22 6c30 3034 3338 2220 6e61  a id=\"l00438\" na\n-00012430: 6d65 3d22 6c30 3034 3338 223e 3c2f 613e  me=\"l00438\"></a>\n-00012440: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n-00012450: 656e 6f22 3e20 2034 3338 3c2f 7370 616e  eno\">  438</span\n-00012460: 3e20 2020 2020 2020 2020 2020 203c 7370  >            <sp\n-00012470: 616e 2063 6c61 7373 3d22 6b65 7977 6f72  an class=\"keywor\n-00012480: 6474 7970 6522 3e66 6c6f 6174 3c2f 7370  dtype\">float</sp\n-00012490: 616e 3e20 6345 6467 6553 6861 7270 6e65  an> cEdgeSharpne\n-000124a0: 7373 5b32 5d3b 3c2f 6469 763e 0a3c 6469  ss[2];</div>.<di\n-000124b0: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n-000124c0: 6120 6964 3d22 6c30 3034 3339 2220 6e61  a id=\"l00439\" na\n-000124d0: 6d65 3d22 6c30 3034 3339 223e 3c2f 613e  me=\"l00439\"></a>\n-000124e0: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n-000124f0: 656e 6f22 3e20 2034 3339 3c2f 7370 616e  eno\">  439</span\n-00012500: 3e20 2020 2020 2020 2020 2020 2065 6467  >            edg\n-00012510: 652e 4765 7443 6869 6c64 5368 6172 706e  e.GetChildSharpn\n-00012520: 6573 7365 7328 6372 6561 7365 2c20 6345  esses(crease, cE\n-00012530: 6467 6553 6861 7270 6e65 7373 293b 3c2f  dgeSharpness);</\n-00012540: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n-00012550: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n-00012560: 3034 3430 2220 6e61 6d65 3d22 6c30 3034  0440\" name=\"l004\n-00012570: 3430 223e 3c2f 613e 3c73 7061 6e20 636c  40\"></a><span cl\n-00012580: 6173 733d 226c 696e 656e 6f22 3e20 2034  ass=\"lineno\">  4\n-00012590: 3430 3c2f 7370 616e 3e20 2020 2020 2020  40</span>       \n-000125a0: 2020 2020 2063 6869 6c64 4973 4372 6561       childIsCrea\n-000125b0: 7365 203d 2028 6345 6467 6553 6861 7270  se = (cEdgeSharp\n-000125c0: 6e65 7373 5b30 5d20 2667 743b 2030 2e30  ness[0] &gt; 0.0\n-000125d0: 6629 2026 616d 703b 2661 6d70 3b20 2863  f) &amp;&amp; (c\n-000125e0: 4564 6765 5368 6172 706e 6573 735b 315d  EdgeSharpness[1]\n-000125f0: 2026 6774 3b20 302e 3066 293b 3c2f 6469   &gt; 0.0f);</di\n-00012600: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n-00012610: 696e 6522 3e3c 6120 6964 3d22 6c30 3034  ine\"><a id=\"l004\n-00012620: 3431 2220 6e61 6d65 3d22 6c30 3034 3431  41\" name=\"l00441\n-00012630: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n-00012640: 733d 226c 696e 656e 6f22 3e20 2034 3431  s=\"lineno\">  441\n-00012650: 3c2f 7370 616e 3e20 2020 2020 2020 207d  </span>        }\n-00012660: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n-00012670: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n-00012680: 6c30 3034 3432 2220 6e61 6d65 3d22 6c30  l00442\" name=\"l0\n-00012690: 3034 3432 223e 3c2f 613e 3c73 7061 6e20  0442\"></a><span \n-000126a0: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n-000126b0: 2034 3432 3c2f 7370 616e 3e20 2020 2020   442</span>     \n-000126c0: 2020 203c 7370 616e 2063 6c61 7373 3d22     <span class=\"\n-000126d0: 6b65 7977 6f72 6466 6c6f 7722 3e69 663c  keywordflow\">if<\n-000126e0: 2f73 7061 6e3e 2028 6368 696c 6449 7343  /span> (childIsC\n-000126f0: 7265 6173 6529 207b 3c2f 6469 763e 0a3c  rease) {</div>.<\n-00012700: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n-00012710: 3e3c 6120 6964 3d22 6c30 3034 3433 2220  ><a id=\"l00443\" \n-00012720: 6e61 6d65 3d22 6c30 3034 3433 223e 3c2f  name=\"l00443\"></\n-00012730: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n-00012740: 696e 656e 6f22 3e20 2034 3433 3c2f 7370  ineno\">  443</sp\n-00012750: 616e 3e20 2020 2020 2020 2020 2020 2061  an>            a\n-00012760: 7373 6967 6e43 7265 6173 654d 6173 6b46  ssignCreaseMaskF\n-00012770: 6f72 4564 6765 2865 6467 652c 206d 6173  orEdge(edge, mas\n-00012780: 6b29 3b3c 2f64 6976 3e0a 3c64 6976 2063  k);</div>.<div c\n-00012790: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n-000127a0: 643d 226c 3030 3434 3422 206e 616d 653d  d=\"l00444\" name=\n-000127b0: 226c 3030 3434 3422 3e3c 2f61 3e3c 7370  \"l00444\"></a><sp\n-000127c0: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n-000127d0: 223e 2020 3434 343c 2f73 7061 6e3e 2020  \">  444</span>  \n-000127e0: 2020 2020 2020 2020 2020 3c73 7061 6e20            <span \n-000127f0: 636c 6173 733d 226b 6579 776f 7264 666c  class=\"keywordfl\n-00012800: 6f77 223e 7265 7475 726e 3c2f 7370 616e  ow\">return</span\n-00012810: 3e3b 3c2f 6469 763e 0a3c 6469 7620 636c  >;</div>.<div cl\n-00012820: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n-00012830: 3d22 6c30 3034 3435 2220 6e61 6d65 3d22  =\"l00445\" name=\"\n-00012840: 6c30 3034 3435 223e 3c2f 613e 3c73 7061  l00445\"></a><spa\n-00012850: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n-00012860: 3e20 2034 3435 3c2f 7370 616e 3e20 2020  >  445</span>   \n-00012870: 2020 2020 207d 3c2f 6469 763e 0a3c 6469       }</div>.<di\n-00012880: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n-00012890: 6120 6964 3d22 6c30 3034 3436 2220 6e61  a id=\"l00446\" na\n-000128a0: 6d65 3d22 6c30 3034 3436 223e 3c2f 613e  me=\"l00446\"></a>\n-000128b0: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n-000128c0: 656e 6f22 3e20 2034 3436 3c2f 7370 616e  eno\">  446</span\n-000128d0: 3e20 2020 207d 3c2f 6469 763e 0a3c 6469  >    }</div>.<di\n-000128e0: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n-000128f0: 6120 6964 3d22 6c30 3034 3437 2220 6e61  a id=\"l00447\" na\n-00012900: 6d65 3d22 6c30 3034 3437 223e 3c2f 613e  me=\"l00447\"></a>\n-00012910: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n-00012920: 656e 6f22 3e20 2034 3437 3c2f 7370 616e  eno\">  447</span\n-00012930: 3e20 3c2f 6469 763e 0a3c 6469 7620 636c  > </div>.<div cl\n-00012940: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n-00012950: 3d22 6c30 3034 3438 2220 6e61 6d65 3d22  =\"l00448\" name=\"\n-00012960: 6c30 3034 3438 223e 3c2f 613e 3c73 7061  l00448\"></a><spa\n-00012970: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n-00012980: 3e20 2034 3438 3c2f 7370 616e 3e20 2020  >  448</span>   \n-00012990: 203c 7370 616e 2063 6c61 7373 3d22 636f   <span class=\"co\n-000129a0: 6d6d 656e 7422 3e2f 2f3c 2f73 7061 6e3e  mment\">//</span>\n-000129b0: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n-000129c0: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n-000129d0: 6c30 3034 3439 2220 6e61 6d65 3d22 6c30  l00449\" name=\"l0\n-000129e0: 3034 3439 223e 3c2f 613e 3c73 7061 6e20  0449\"></a><span \n-000129f0: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n-00012a00: 2034 3439 3c2f 7370 616e 3e20 2020 203c   449</span>    <\n-00012a10: 7370 616e 2063 6c61 7373 3d22 636f 6d6d  span class=\"comm\n-00012a20: 656e 7422 3e2f 2f20 2057 6520 6172 6520  ent\">//  We are \n-00012a30: 6e6f 7720 6c65 6674 2077 6974 6820 7468  now left with th\n-00012a40: 6520 4372 6561 7365 2d74 6f2d 536d 6f6f  e Crease-to-Smoo\n-00012a50: 7468 2063 6173 6520 2d2d 2063 6f6d 7075  th case -- compu\n-00012a60: 7465 2074 6865 2053 6d6f 6f74 6820 6d61  te the Smooth ma\n-00012a70: 736b 3c2f 7370 616e 3e3c 2f64 6976 3e0a  sk</span></div>.\n-00012a80: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n-00012a90: 223e 3c61 2069 643d 226c 3030 3435 3022  \"><a id=\"l00450\"\n-00012aa0: 206e 616d 653d 226c 3030 3435 3022 3e3c   name=\"l00450\"><\n-00012ab0: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n-00012ac0: 6c69 6e65 6e6f 223e 2020 3435 303c 2f73  lineno\">  450</s\n-00012ad0: 7061 6e3e 2020 2020 3c73 7061 6e20 636c  pan>    <span cl\n-00012ae0: 6173 733d 2263 6f6d 6d65 6e74 223e 2f2f  ass=\"comment\">//\n-00012af0: 2020 666f 7220 7468 6520 6368 696c 6420    for the child \n-00012b00: 616e 6420 6175 676d 656e 7420 6974 2077  and augment it w\n-00012b10: 6974 6820 7468 6520 7472 616e 7369 7469  ith the transiti\n-00012b20: 6f6e 616c 2043 7265 6173 6520 6f66 2074  onal Crease of t\n-00012b30: 6865 2070 6172 656e 742e 3c2f 7370 616e  he parent.</span\n-00012b40: 3e3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ></div>.<div cla\n-00012b50: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n-00012b60: 226c 3030 3435 3122 206e 616d 653d 226c  \"l00451\" name=\"l\n-00012b70: 3030 3435 3122 3e3c 2f61 3e3c 7370 616e  00451\"></a><span\n-00012b80: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n-00012b90: 2020 3435 313c 2f73 7061 6e3e 2020 2020    451</span>    \n-00012ba0: 3c73 7061 6e20 636c 6173 733d 2263 6f6d  <span class=\"com\n-00012bb0: 6d65 6e74 223e 2f2f 3c2f 7370 616e 3e3c  ment\">//</span><\n-00012bc0: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n-00012bd0: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n-00012be0: 3030 3435 3222 206e 616d 653d 226c 3030  00452\" name=\"l00\n-00012bf0: 3435 3222 3e3c 2f61 3e3c 7370 616e 2063  452\"></a><span c\n-00012c00: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n-00012c10: 3435 323c 2f73 7061 6e3e 2020 2020 3c73  452</span>    <s\n-00012c20: 7061 6e20 636c 6173 733d 2263 6f6d 6d65  pan class=\"comme\n-00012c30: 6e74 223e 2f2f 2020 4120 6765 6e65 7261  nt\">//  A genera\n-00012c40: 6c20 636f 6d62 696e 6174 696f 6e20 6f66  l combination of\n-00012c50: 2073 6570 6172 6174 656c 7920 6173 7369   separately assi\n-00012c60: 676e 6564 206d 6173 6b73 2068 6572 6520  gned masks here \n-00012c70: 2861 7320 646f 6e65 2069 6e20 7468 6520  (as done in the \n-00012c80: 7665 7274 6578 2d3c 2f73 7061 6e3e 3c2f  vertex-</span></\n-00012c90: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n-00012ca0: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n-00012cb0: 3034 3533 2220 6e61 6d65 3d22 6c30 3034  0453\" name=\"l004\n-00012cc0: 3533 223e 3c2f 613e 3c73 7061 6e20 636c  53\"></a><span cl\n-00012cd0: 6173 733d 226c 696e 656e 6f22 3e20 2034  ass=\"lineno\">  4\n-00012ce0: 3533 3c2f 7370 616e 3e20 2020 203c 7370  53</span>    <sp\n-00012cf0: 616e 2063 6c61 7373 3d22 636f 6d6d 656e  an class=\"commen\n-00012d00: 7422 3e2f 2f20 2076 6572 7465 7820 6361  t\">//  vertex ca\n-00012d10: 7365 2920 6973 206f 7665 726b 696c 6c20  se) is overkill \n-00012d20: 2d2d 2074 7269 7669 616c 6c79 2063 6f6d  -- trivially com\n-00012d30: 6269 6e65 2074 6865 2030 2e35 6620 7665  bine the 0.5f ve\n-00012d40: 7274 6578 2063 6f65 6666 6963 6965 6e74  rtex coefficient\n-00012d50: 2066 6f72 3c2f 7370 616e 3e3c 2f64 6976   for</span></div\n-00012d60: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n-00012d70: 6e65 223e 3c61 2069 643d 226c 3030 3435  ne\"><a id=\"l0045\n-00012d80: 3422 206e 616d 653d 226c 3030 3435 3422  4\" name=\"l00454\"\n-00012d90: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n-00012da0: 3d22 6c69 6e65 6e6f 223e 2020 3435 343c  =\"lineno\">  454<\n-00012db0: 2f73 7061 6e3e 2020 2020 3c73 7061 6e20  /span>    <span \n-00012dc0: 636c 6173 733d 2263 6f6d 6d65 6e74 223e  class=\"comment\">\n-00012dd0: 2f2f 2020 7468 6520 4372 6561 7365 206f  //  the Crease o\n-00012de0: 6620 7468 6520 7061 7265 6e74 2077 6974  f the parent wit\n-00012df0: 6820 7468 6520 7665 7274 6578 2077 6569  h the vertex wei\n-00012e00: 6768 7473 2061 6e64 2061 7474 656e 7561  ghts and attenua\n-00012e10: 7465 2074 6865 2066 6163 6520 7765 6967  te the face weig\n-00012e20: 6874 733c 2f73 7061 6e3e 3c2f 6469 763e  hts</span></div>\n-00012e30: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n-00012e40: 6522 3e3c 6120 6964 3d22 6c30 3034 3535  e\"><a id=\"l00455\n-00012e50: 2220 6e61 6d65 3d22 6c30 3034 3535 223e  \" name=\"l00455\">\n-00012e60: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n-00012e70: 226c 696e 656e 6f22 3e20 2034 3535 3c2f  \"lineno\">  455</\n-00012e80: 7370 616e 3e20 2020 203c 7370 616e 2063  span>    <span c\n-00012e90: 6c61 7373 3d22 636f 6d6d 656e 7422 3e2f  lass=\"comment\">/\n-00012ea0: 2f20 2061 6363 6f72 6469 6e67 6c79 2e3c  /  accordingly.<\n-00012eb0: 2f73 7061 6e3e 3c2f 6469 763e 0a3c 6469  /span></div>.<di\n-00012ec0: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n-00012ed0: 6120 6964 3d22 6c30 3034 3536 2220 6e61  a id=\"l00456\" na\n-00012ee0: 6d65 3d22 6c30 3034 3536 223e 3c2f 613e  me=\"l00456\"></a>\n-00012ef0: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n-00012f00: 656e 6f22 3e20 2034 3536 3c2f 7370 616e  eno\">  456</span\n-00012f10: 3e20 2020 203c 7370 616e 2063 6c61 7373  >    <span class\n-00012f20: 3d22 636f 6d6d 656e 7422 3e2f 2f3c 2f73  =\"comment\">//</s\n-00012f30: 7061 6e3e 3c2f 6469 763e 0a3c 6469 7620  pan></div>.<div \n-00012f40: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n-00012f50: 6964 3d22 6c30 3034 3537 2220 6e61 6d65  id=\"l00457\" name\n-00012f60: 3d22 6c30 3034 3537 223e 3c2f 613e 3c73  =\"l00457\"></a><s\n-00012f70: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n-00012f80: 6f22 3e20 2034 3537 3c2f 7370 616e 3e20  o\">  457</span> \n-00012f90: 2020 2061 7373 6967 6e53 6d6f 6f74 684d     assignSmoothM\n-00012fa0: 6173 6b46 6f72 4564 6765 2865 6467 652c  askForEdge(edge,\n-00012fb0: 206d 6173 6b29 3b3c 2f64 6976 3e0a 3c64   mask);</div>.<d\n-00012fc0: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n-00012fd0: 3c61 2069 643d 226c 3030 3435 3822 206e  <a id=\"l00458\" n\n-00012fe0: 616d 653d 226c 3030 3435 3822 3e3c 2f61  ame=\"l00458\"></a\n-00012ff0: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n-00013000: 6e65 6e6f 223e 2020 3435 383c 2f73 7061  neno\">  458</spa\n-00013010: 6e3e 203c 2f64 6976 3e0a 3c64 6976 2063  n> </div>.<div c\n-00013020: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n-00013030: 643d 226c 3030 3435 3922 206e 616d 653d  d=\"l00459\" name=\n-00013040: 226c 3030 3435 3922 3e3c 2f61 3e3c 7370  \"l00459\"></a><sp\n-00013050: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n-00013060: 223e 2020 3435 393c 2f73 7061 6e3e 2020  \">  459</span>  \n-00013070: 2020 3c73 7061 6e20 636c 6173 733d 226b    <span class=\"k\n-00013080: 6579 776f 7264 223e 7479 7065 6465 663c  eyword\">typedef<\n-00013090: 2f73 7061 6e3e 203c 7370 616e 2063 6c61  /span> <span cla\n-000130a0: 7373 3d22 6b65 7977 6f72 6422 3e74 7970  ss=\"keyword\">typ\n-000130b0: 656e 616d 653c 2f73 7061 6e3e 204d 4153  ename</span> MAS\n-000130c0: 4b3a 3a57 6569 6768 7420 5765 6967 6874  K::Weight Weight\n-000130d0: 3b3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ;</div>.<div cla\n-000130e0: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n-000130f0: 226c 3030 3436 3022 206e 616d 653d 226c  \"l00460\" name=\"l\n-00013100: 3030 3436 3022 3e3c 2f61 3e3c 7370 616e  00460\"></a><span\n-00013110: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n-00013120: 2020 3436 303c 2f73 7061 6e3e 203c 2f64    460</span> </d\n-00013130: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n-00013140: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n-00013150: 3436 3122 206e 616d 653d 226c 3030 3436  461\" name=\"l0046\n-00013160: 3122 3e3c 2f61 3e3c 7370 616e 2063 6c61  1\"></a><span cla\n-00013170: 7373 3d22 6c69 6e65 6e6f 223e 2020 3436  ss=\"lineno\">  46\n-00013180: 313c 2f73 7061 6e3e 2020 2020 5765 6967  1</span>    Weig\n-00013190: 6874 2070 5765 6967 6874 203d 2065 6467  ht pWeight = edg\n-000131a0: 652e 4765 7453 6861 7270 6e65 7373 2829  e.GetSharpness()\n-000131b0: 3b3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ;</div>.<div cla\n-000131c0: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n-000131d0: 226c 3030 3436 3222 206e 616d 653d 226c  \"l00462\" name=\"l\n-000131e0: 3030 3436 3222 3e3c 2f61 3e3c 7370 616e  00462\"></a><span\n-000131f0: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n-00013200: 2020 3436 323c 2f73 7061 6e3e 2020 2020    462</span>    \n-00013210: 5765 6967 6874 2063 5765 6967 6874 203d  Weight cWeight =\n-00013220: 2031 2e30 6620 2d20 7057 6569 6768 743b   1.0f - pWeight;\n-00013230: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n-00013240: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n-00013250: 6c30 3034 3633 2220 6e61 6d65 3d22 6c30  l00463\" name=\"l0\n-00013260: 3034 3633 223e 3c2f 613e 3c73 7061 6e20  0463\"></a><span \n-00013270: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n-00013280: 2034 3633 3c2f 7370 616e 3e20 3c2f 6469   463</span> </di\n-00013290: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n-000132a0: 696e 6522 3e3c 6120 6964 3d22 6c30 3034  ine\"><a id=\"l004\n-000132b0: 3634 2220 6e61 6d65 3d22 6c30 3034 3634  64\" name=\"l00464\n-000132c0: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n-000132d0: 733d 226c 696e 656e 6f22 3e20 2034 3634  s=\"lineno\">  464\n-000132e0: 3c2f 7370 616e 3e20 2020 206d 6173 6b2e  </span>    mask.\n-000132f0: 5665 7274 6578 5765 6967 6874 2830 2920  VertexWeight(0) \n-00013300: 3d20 7057 6569 6768 7420 2a20 302e 3566  = pWeight * 0.5f\n-00013310: 202b 2063 5765 6967 6874 202a 206d 6173   + cWeight * mas\n-00013320: 6b2e 5665 7274 6578 5765 6967 6874 2830  k.VertexWeight(0\n-00013330: 293b 3c2f 6469 763e 0a3c 6469 7620 636c  );</div>.<div cl\n-00013340: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n-00013350: 3d22 6c30 3034 3635 2220 6e61 6d65 3d22  =\"l00465\" name=\"\n-00013360: 6c30 3034 3635 223e 3c2f 613e 3c73 7061  l00465\"></a><spa\n-00013370: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n-00013380: 3e20 2034 3635 3c2f 7370 616e 3e20 2020  >  465</span>   \n-00013390: 206d 6173 6b2e 5665 7274 6578 5765 6967   mask.VertexWeig\n-000133a0: 6874 2831 2920 3d20 7057 6569 6768 7420  ht(1) = pWeight \n-000133b0: 2a20 302e 3566 202b 2063 5765 6967 6874  * 0.5f + cWeight\n-000133c0: 202a 206d 6173 6b2e 5665 7274 6578 5765   * mask.VertexWe\n-000133d0: 6967 6874 2831 293b 3c2f 6469 763e 0a3c  ight(1);</div>.<\n-000133e0: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n-000133f0: 3e3c 6120 6964 3d22 6c30 3034 3636 2220  ><a id=\"l00466\" \n-00013400: 6e61 6d65 3d22 6c30 3034 3636 223e 3c2f  name=\"l00466\"></\n-00013410: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n-00013420: 696e 656e 6f22 3e20 2034 3636 3c2f 7370  ineno\">  466</sp\n-00013430: 616e 3e20 3c2f 6469 763e 0a3c 6469 7620  an> </div>.<div \n-00013440: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n-00013450: 6964 3d22 6c30 3034 3637 2220 6e61 6d65  id=\"l00467\" name\n-00013460: 3d22 6c30 3034 3637 223e 3c2f 613e 3c73  =\"l00467\"></a><s\n-00013470: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n-00013480: 6f22 3e20 2034 3637 3c2f 7370 616e 3e20  o\">  467</span> \n-00013490: 2020 203c 7370 616e 2063 6c61 7373 3d22     <span class=\"\n-000134a0: 6b65 7977 6f72 6474 7970 6522 3e69 6e74  keywordtype\">int\n-000134b0: 3c2f 7370 616e 3e20 6661 6365 436f 756e  </span> faceCoun\n-000134c0: 7420 3d20 6d61 736b 2e47 6574 4e75 6d46  t = mask.GetNumF\n-000134d0: 6163 6557 6569 6768 7473 2829 3b3c 2f64  aceWeights();</d\n-000134e0: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n-000134f0: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n-00013500: 3436 3822 206e 616d 653d 226c 3030 3436  468\" name=\"l0046\n-00013510: 3822 3e3c 2f61 3e3c 7370 616e 2063 6c61  8\"></a><span cla\n-00013520: 7373 3d22 6c69 6e65 6e6f 223e 2020 3436  ss=\"lineno\">  46\n-00013530: 383c 2f73 7061 6e3e 2020 2020 3c73 7061  8</span>    <spa\n-00013540: 6e20 636c 6173 733d 226b 6579 776f 7264  n class=\"keyword\n-00013550: 666c 6f77 223e 666f 723c 2f73 7061 6e3e  flow\">for</span>\n-00013560: 2028 3c73 7061 6e20 636c 6173 733d 226b   (<span class=\"k\n-00013570: 6579 776f 7264 7479 7065 223e 696e 743c  eywordtype\">int<\n-00013580: 2f73 7061 6e3e 2069 203d 2030 3b20 6920  /span> i = 0; i \n-00013590: 266c 743b 2066 6163 6543 6f75 6e74 3b20  &lt; faceCount; \n-000135a0: 2b2b 6929 207b 3c2f 6469 763e 0a3c 6469  ++i) {</div>.<di\n-000135b0: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n-000135c0: 6120 6964 3d22 6c30 3034 3639 2220 6e61  a id=\"l00469\" na\n-000135d0: 6d65 3d22 6c30 3034 3639 223e 3c2f 613e  me=\"l00469\"></a>\n-000135e0: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n-000135f0: 656e 6f22 3e20 2034 3639 3c2f 7370 616e  eno\">  469</span\n-00013600: 3e20 2020 2020 2020 206d 6173 6b2e 4661  >        mask.Fa\n-00013610: 6365 5765 6967 6874 2869 2920 2a3d 2063  ceWeight(i) *= c\n-00013620: 5765 6967 6874 3b3c 2f64 6976 3e0a 3c64  Weight;</div>.<d\n-00013630: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n-00013640: 3c61 2069 643d 226c 3030 3437 3022 206e  <a id=\"l00470\" n\n-00013650: 616d 653d 226c 3030 3437 3022 3e3c 2f61  ame=\"l00470\"></a\n-00013660: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n-00013670: 6e65 6e6f 223e 2020 3437 303c 2f73 7061  neno\">  470</spa\n-00013680: 6e3e 2020 2020 7d3c 2f64 6976 3e0a 3c64  n>    }</div>.<d\n-00013690: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n-000136a0: 3c61 2069 643d 226c 3030 3437 3122 206e  <a id=\"l00471\" n\n-000136b0: 616d 653d 226c 3030 3437 3122 3e3c 2f61  ame=\"l00471\"></a\n-000136c0: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n-000136d0: 6e65 6e6f 223e 2020 3437 313c 2f73 7061  neno\">  471</spa\n-000136e0: 6e3e 7d3c 2f64 6976 3e0a 3c2f 6469 763e  n>}</div>.</div>\n-000136f0: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n-00013700: 6522 3e3c 6120 6964 3d22 6c30 3034 3732  e\"><a id=\"l00472\n-00013710: 2220 6e61 6d65 3d22 6c30 3034 3732 223e  \" name=\"l00472\">\n-00013720: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n-00013730: 226c 696e 656e 6f22 3e20 2034 3732 3c2f  \"lineno\">  472</\n-00013740: 7370 616e 3e20 3c2f 6469 763e 0a3c 6469  span> </div>.<di\n-00013750: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n-00013760: 6120 6964 3d22 6c30 3034 3733 2220 6e61  a id=\"l00473\" na\n-00013770: 6d65 3d22 6c30 3034 3733 223e 3c2f 613e  me=\"l00473\"></a>\n-00013780: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n-00013790: 656e 6f22 3e20 2034 3733 3c2f 7370 616e  eno\">  473</span\n-000137a0: 3e3c 7370 616e 2063 6c61 7373 3d22 636f  ><span class=\"co\n-000137b0: 6d6d 656e 7422 3e2f 2f3c 2f73 7061 6e3e  mment\">//</span>\n-000137c0: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n-000137d0: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n-000137e0: 6c30 3034 3734 2220 6e61 6d65 3d22 6c30  l00474\" name=\"l0\n-000137f0: 3034 3734 223e 3c2f 613e 3c73 7061 6e20  0474\"></a><span \n-00013800: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n-00013810: 2034 3734 3c2f 7370 616e 3e3c 7370 616e   474</span><span\n-00013820: 2063 6c61 7373 3d22 636f 6d6d 656e 7422   class=\"comment\"\n-00013830: 3e2f 2f20 2054 6865 2063 6f6d 7075 7461  >//  The computa\n-00013840: 7469 6f6e 206f 6620 6120 7665 7274 6578  tion of a vertex\n-00013850: 2d76 6572 7465 7820 6d61 736b 2072 6571  -vertex mask req\n-00013860: 7569 7265 7320 696e 7370 6563 7469 6f6e  uires inspection\n-00013870: 206f 6620 6372 6561 7369 6e67 2073 6861   of creasing sha\n-00013880: 7270 6e65 7373 2076 616c 7565 733c 2f73  rpness values</s\n-00013890: 7061 6e3e 3c2f 6469 763e 0a3c 6469 7620  pan></div>.<div \n-000138a0: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n-000138b0: 6964 3d22 6c30 3034 3735 2220 6e61 6d65  id=\"l00475\" name\n-000138c0: 3d22 6c30 3034 3735 223e 3c2f 613e 3c73  =\"l00475\"></a><s\n-000138d0: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n-000138e0: 6f22 3e20 2034 3735 3c2f 7370 616e 3e3c  o\">  475</span><\n-000138f0: 7370 616e 2063 6c61 7373 3d22 636f 6d6d  span class=\"comm\n-00013900: 656e 7422 3e2f 2f20 2074 6f20 6465 7465  ent\">//  to dete\n-00013910: 726d 696e 6520 7768 6174 2073 7562 6469  rmine what subdi\n-00013920: 7669 7369 6f6e 2052 756c 6573 2061 7070  vision Rules app\n-00013930: 6c79 2074 6f20 7468 6520 7061 7265 6e74  ly to the parent\n-00013940: 2061 6e64 2069 7473 2063 6869 6c64 2076   and its child v\n-00013950: 6572 7465 782c 2061 6e64 2061 6c73 6f20  ertex, and also \n-00013960: 746f 3c2f 7370 616e 3e3c 2f64 6976 3e0a  to</span></div>.\n-00013970: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n-00013980: 223e 3c61 2069 643d 226c 3030 3437 3622  \"><a id=\"l00476\"\n-00013990: 206e 616d 653d 226c 3030 3437 3622 3e3c   name=\"l00476\"><\n-000139a0: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n-000139b0: 6c69 6e65 6e6f 223e 2020 3437 363c 2f73  lineno\">  476</s\n-000139c0: 7061 6e3e 3c73 7061 6e20 636c 6173 733d  pan><span class=\n-000139d0: 2263 6f6d 6d65 6e74 223e 2f2f 2020 6465  \"comment\">//  de\n-000139e0: 7465 6374 2061 6e64 2061 7070 6c79 2061  tect and apply a\n-000139f0: 2074 7261 6e73 6974 696f 6e20 6265 7477   transition betw\n-00013a00: 6565 6e20 7477 6f20 6469 6666 6572 696e  een two differin\n-00013a10: 6720 5275 6c65 732e 2020 5573 696e 6720  g Rules.  Using \n-00013a20: 7468 6520 7072 6f74 6563 7465 6420 6d65  the protected me\n-00013a30: 7468 6f64 7320 746f 3c2f 7370 616e 3e3c  thods to</span><\n-00013a40: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n-00013a50: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n-00013a60: 3030 3437 3722 206e 616d 653d 226c 3030  00477\" name=\"l00\n-00013a70: 3437 3722 3e3c 2f61 3e3c 7370 616e 2063  477\"></a><span c\n-00013a80: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n-00013a90: 3437 373c 2f73 7061 6e3e 3c73 7061 6e20  477</span><span \n-00013aa0: 636c 6173 733d 2263 6f6d 6d65 6e74 223e  class=\"comment\">\n-00013ab0: 2f2f 2020 6173 7369 676e 2073 7065 6369  //  assign speci\n-00013ac0: 6669 6320 6d61 736b 732c 2074 6869 7320  fic masks, this \n-00013ad0: 696d 706c 656d 656e 7461 7469 6f6e 2073  implementation s\n-00013ae0: 686f 756c 6420 7365 7276 6520 616c 6c20  hould serve all \n-00013af0: 6e6f 6e2d 6c69 6e65 6172 2073 6368 656d  non-linear schem\n-00013b00: 6573 2028 6375 7272 656e 746c 793c 2f73  es (currently</s\n-00013b10: 7061 6e3e 3c2f 6469 763e 0a3c 6469 7620  pan></div>.<div \n-00013b20: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n-00013b30: 6964 3d22 6c30 3034 3738 2220 6e61 6d65  id=\"l00478\" name\n-00013b40: 3d22 6c30 3034 3738 223e 3c2f 613e 3c73  =\"l00478\"></a><s\n-00013b50: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n-00013b60: 6f22 3e20 2034 3738 3c2f 7370 616e 3e3c  o\">  478</span><\n-00013b70: 7370 616e 2063 6c61 7373 3d22 636f 6d6d  span class=\"comm\n-00013b80: 656e 7422 3e2f 2f20 2043 6174 6d61 726b  ent\">//  Catmark\n-00013b90: 2061 6e64 204c 6f6f 7029 2061 6e64 206f   and Loop) and o\n-00013ba0: 6e6c 7920 6e65 6564 7320 746f 2062 6520  nly needs to be \n-00013bb0: 7370 6563 6961 6c69 7a65 6420 666f 7220  specialized for \n-00013bc0: 4269 6c69 6e65 6172 2074 6f20 7265 6d6f  Bilinear to remo\n-00013bd0: 7665 2061 6c6c 2075 6e6e 6563 6573 7361  ve all unnecessa\n-00013be0: 7279 3c2f 7370 616e 3e3c 2f64 6976 3e0a  ry</span></div>.\n-00013bf0: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n-00013c00: 223e 3c61 2069 643d 226c 3030 3437 3922  \"><a id=\"l00479\"\n-00013c10: 206e 616d 653d 226c 3030 3437 3922 3e3c   name=\"l00479\"><\n-00013c20: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n-00013c30: 6c69 6e65 6e6f 223e 2020 3437 393c 2f73  lineno\">  479</s\n-00013c40: 7061 6e3e 3c73 7061 6e20 636c 6173 733d  pan><span class=\n-00013c50: 2263 6f6d 6d65 6e74 223e 2f2f 2020 636f  \"comment\">//  co\n-00013c60: 6d70 6c65 7869 7479 2072 656c 6174 696e  mplexity relatin\n-00013c70: 6720 746f 2063 7265 6173 696e 672c 2052  g to creasing, R\n-00013c80: 756c 6573 2c20 6574 632e 3c2f 7370 616e  ules, etc.</span\n-00013c90: 3e3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ></div>.<div cla\n-00013ca0: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n-00013cb0: 226c 3030 3438 3022 206e 616d 653d 226c  \"l00480\" name=\"l\n-00013cc0: 3030 3438 3022 3e3c 2f61 3e3c 7370 616e  00480\"></a><span\n-00013cd0: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n-00013ce0: 2020 3438 303c 2f73 7061 6e3e 3c73 7061    480</span><spa\n-00013cf0: 6e20 636c 6173 733d 2263 6f6d 6d65 6e74  n class=\"comment\n-00013d00: 223e 2f2f 3c2f 7370 616e 3e3c 2f64 6976  \">//</span></div\n-00013d10: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n-00013d20: 6e65 223e 3c61 2069 643d 226c 3030 3438  ne\"><a id=\"l0048\n-00013d30: 3122 206e 616d 653d 226c 3030 3438 3122  1\" name=\"l00481\"\n-00013d40: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n-00013d50: 3d22 6c69 6e65 6e6f 223e 2020 3438 313c  =\"lineno\">  481<\n-00013d60: 2f73 7061 6e3e 3c73 7061 6e20 636c 6173  /span><span clas\n-00013d70: 733d 2263 6f6d 6d65 6e74 223e 2f2f 2020  s=\"comment\">//  \n-00013d80: 5468 6520 696d 706c 656d 656e 7461 7469  The implementati\n-00013d90: 6f6e 2068 6572 6520 6973 2073 6c69 6768  on here is sligh\n-00013da0: 746c 7920 636f 6d70 6c69 6361 7465 6420  tly complicated \n-00013db0: 6279 2063 6f6d 6269 6e69 6e67 2074 776f  by combining two\n-00013dc0: 2073 6365 6e61 7269 6f73 2069 6e74 6f20   scenarios into \n-00013dd0: 6f6e 6520 2d2d 3c2f 7370 616e 3e3c 2f64  one --</span></d\n-00013de0: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n-00013df0: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n-00013e00: 3438 3222 206e 616d 653d 226c 3030 3438  482\" name=\"l0048\n-00013e10: 3222 3e3c 2f61 3e3c 7370 616e 2063 6c61  2\"></a><span cla\n-00013e20: 7373 3d22 6c69 6e65 6e6f 223e 2020 3438  ss=\"lineno\">  48\n-00013e30: 323c 2f73 7061 6e3e 3c73 7061 6e20 636c  2</span><span cl\n-00013e40: 6173 733d 2263 6f6d 6d65 6e74 223e 2f2f  ass=\"comment\">//\n-00013e50: 2020 6569 7468 6572 2074 6865 2063 616c    either the cal\n-00013e60: 6c65 7220 6b6e 6f77 7320 7468 6520 7061  ler knows the pa\n-00013e70: 7265 6e74 2061 6e64 2063 6869 6c64 2072  rent and child r\n-00013e80: 756c 6573 2061 6e64 2070 726f 7669 6465  ules and provide\n-00013e90: 7320 7468 656d 2c20 6f72 2074 6865 7920  s them, or they \n-00013ea0: 646f 6e26 2333 393b 7420 616e 643c 2f73  don&#39;t and</s\n-00013eb0: 7061 6e3e 3c2f 6469 763e 0a3c 6469 7620  pan></div>.<div \n-00013ec0: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n-00013ed0: 6964 3d22 6c30 3034 3833 2220 6e61 6d65  id=\"l00483\" name\n-00013ee0: 3d22 6c30 3034 3833 223e 3c2f 613e 3c73  =\"l00483\"></a><s\n-00013ef0: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n-00013f00: 6f22 3e20 2034 3833 3c2f 7370 616e 3e3c  o\">  483</span><\n-00013f10: 7370 616e 2063 6c61 7373 3d22 636f 6d6d  span class=\"comm\n-00013f20: 656e 7422 3e2f 2f20 2074 6865 2052 756c  ent\">//  the Rul\n-00013f30: 6573 2068 6176 6520 746f 2062 6520 6465  es have to be de\n-00013f40: 7465 726d 696e 6564 2066 726f 6d20 7368  termined from sh\n-00013f50: 6172 706e 6573 7320 7661 6c75 6573 2e20  arpness values. \n-00013f60: 2045 7665 6e20 7768 656e 2074 6865 2052   Even when the R\n-00013f70: 756c 6573 2061 7265 206b 6e6f 776e 2061  ules are known a\n-00013f80: 6e64 3c2f 7370 616e 3e3c 2f64 6976 3e0a  nd</span></div>.\n-00013f90: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n-00013fa0: 223e 3c61 2069 643d 226c 3030 3438 3422  \"><a id=\"l00484\"\n-00013fb0: 206e 616d 653d 226c 3030 3438 3422 3e3c   name=\"l00484\"><\n-00013fc0: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n-00013fd0: 6c69 6e65 6e6f 223e 2020 3438 343c 2f73  lineno\">  484</s\n-00013fe0: 7061 6e3e 3c73 7061 6e20 636c 6173 733d  pan><span class=\n-00013ff0: 2263 6f6d 6d65 6e74 223e 2f2f 2020 7072  \"comment\">//  pr\n-00014000: 6f76 6964 6564 2074 686f 7567 682c 2074  ovided though, t\n-00014010: 6865 7265 2061 7265 2063 6173 6573 2077  here are cases w\n-00014020: 6865 7265 2074 6865 2070 6172 656e 7420  here the parent \n-00014030: 616e 6420 6368 696c 6420 7368 6172 706e  and child sharpn\n-00014040: 6573 7320 7661 6c75 6573 206e 6565 6420  ess values need \n-00014050: 746f 2062 653c 2f73 7061 6e3e 3c2f 6469  to be</span></di\n-00014060: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n-00014070: 696e 6522 3e3c 6120 6964 3d22 6c30 3034  ine\"><a id=\"l004\n-00014080: 3835 2220 6e61 6d65 3d22 6c30 3034 3835  85\" name=\"l00485\n-00014090: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n-000140a0: 733d 226c 696e 656e 6f22 3e20 2034 3835  s=\"lineno\">  485\n-000140b0: 3c2f 7370 616e 3e3c 7370 616e 2063 6c61  </span><span cla\n-000140c0: 7373 3d22 636f 6d6d 656e 7422 3e2f 2f20  ss=\"comment\">// \n-000140d0: 2069 6465 6e74 6966 6965 642c 2073 6f20   identified, so \n-000140e0: 6163 636f 756e 7469 6e67 2066 6f72 2074  accounting for t\n-000140f0: 6865 2075 6e6b 6e6f 776e 2052 756c 6573  he unknown Rules\n-00014100: 2074 6f6f 2069 7320 6e6f 7420 6d75 6368   too is not much\n-00014110: 206f 6620 616e 2061 6464 6564 2063 6f6d   of an added com\n-00014120: 706c 6963 6174 696f 6e2e 3c2f 7370 616e  plication.</span\n-00014130: 3e3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ></div>.<div cla\n-00014140: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n-00014150: 226c 3030 3438 3622 206e 616d 653d 226c  \"l00486\" name=\"l\n-00014160: 3030 3438 3622 3e3c 2f61 3e3c 7370 616e  00486\"></a><span\n-00014170: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n-00014180: 2020 3438 363c 2f73 7061 6e3e 3c73 7061    486</span><spa\n-00014190: 6e20 636c 6173 733d 2263 6f6d 6d65 6e74  n class=\"comment\n-000141a0: 223e 2f2f 3c2f 7370 616e 3e3c 2f64 6976  \">//</span></div\n-000141b0: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n-000141c0: 6e65 223e 3c61 2069 643d 226c 3030 3438  ne\"><a id=\"l0048\n-000141d0: 3722 206e 616d 653d 226c 3030 3438 3722  7\" name=\"l00487\"\n-000141e0: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n-000141f0: 3d22 6c69 6e65 6e6f 223e 2020 3438 373c  =\"lineno\">  487<\n-00014200: 2f73 7061 6e3e 3c73 7061 6e20 636c 6173  /span><span clas\n-00014210: 733d 2263 6f6d 6d65 6e74 223e 2f2f 2020  s=\"comment\">//  \n-00014220: 5468 6520 6265 6e65 6669 7420 6f66 2073  The benefit of s\n-00014230: 7570 706f 7274 696e 6720 7370 6563 6966  upporting specif\n-00014240: 6965 6420 5275 6c65 7320 6973 2074 6861  ied Rules is tha\n-00014250: 7420 7468 6579 2063 616e 206f 6674 656e  t they can often\n-00014260: 2062 6520 7472 6976 6961 6c6c 793c 2f73   be trivially</s\n-00014270: 7061 6e3e 3c2f 6469 763e 0a3c 6469 7620  pan></div>.<div \n-00014280: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n-00014290: 6964 3d22 6c30 3034 3838 2220 6e61 6d65  id=\"l00488\" name\n-000142a0: 3d22 6c30 3034 3838 223e 3c2f 613e 3c73  =\"l00488\"></a><s\n-000142b0: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n-000142c0: 6f22 3e20 2034 3838 3c2f 7370 616e 3e3c  o\">  488</span><\n-000142d0: 7370 616e 2063 6c61 7373 3d22 636f 6d6d  span class=\"comm\n-000142e0: 656e 7422 3e2f 2f20 2064 6574 6572 6d69  ent\">//  determi\n-000142f0: 6e65 6420 6672 6f6d 2063 6f6e 7465 7874  ned from context\n-00014300: 2028 652e 672e 2061 2076 6572 7465 7820   (e.g. a vertex \n-00014310: 6465 7269 7665 6420 6672 6f6d 2061 2066  derived from a f\n-00014320: 6163 6520 6174 2061 2070 7265 7669 6f75  ace at a previou\n-00014330: 7320 6c65 7665 6c20 7769 6c6c 2061 6c77  s level will alw\n-00014340: 6179 733c 2f73 7061 6e3e 3c2f 6469 763e  ays</span></div>\n-00014350: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n-00014360: 6522 3e3c 6120 6964 3d22 6c30 3034 3839  e\"><a id=\"l00489\n-00014370: 2220 6e61 6d65 3d22 6c30 3034 3839 223e  \" name=\"l00489\">\n-00014380: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n-00014390: 226c 696e 656e 6f22 3e20 2034 3839 3c2f  \"lineno\">  489</\n-000143a0: 7370 616e 3e3c 7370 616e 2063 6c61 7373  span><span class\n-000143b0: 3d22 636f 6d6d 656e 7422 3e2f 2f20 2062  =\"comment\">//  b\n-000143c0: 6520 736d 6f6f 7468 2920 7261 7468 6572  e smooth) rather\n-000143d0: 2074 6861 6e20 6d6f 7265 2067 656e 6572   than more gener\n-000143e0: 616c 6c79 2c20 616e 6420 6174 2067 7265  ally, and at gre\n-000143f0: 6174 6572 2063 6f73 742c 2069 6e73 7065  ater cost, inspe\n-00014400: 6374 696e 6720 6e65 6967 6862 6f72 696e  cting neighborin\n-00014410: 6720 616e 643c 2f73 7061 6e3e 3c2f 6469  g and</span></di\n-00014420: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n-00014430: 696e 6522 3e3c 6120 6964 3d22 6c30 3034  ine\"><a id=\"l004\n-00014440: 3930 2220 6e61 6d65 3d22 6c30 3034 3930  90\" name=\"l00490\n-00014450: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n-00014460: 733d 226c 696e 656e 6f22 3e20 2034 3930  s=\"lineno\">  490\n-00014470: 3c2f 7370 616e 3e3c 7370 616e 2063 6c61  </span><span cla\n-00014480: 7373 3d22 636f 6d6d 656e 7422 3e2f 2f20  ss=\"comment\">// \n-00014490: 2074 6865 7920 6172 6520 6f66 7465 6e20   they are often \n-000144a0: 7468 6520 7361 6d65 2066 6f72 2070 6172  the same for par\n-000144b0: 656e 7420 616e 6420 6368 696c 642e 3c2f  ent and child.</\n-000144c0: 7370 616e 3e3c 2f64 6976 3e0a 3c64 6976  span></div>.<div\n-000144d0: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n-000144e0: 2069 643d 226c 3030 3439 3122 206e 616d   id=\"l00491\" nam\n-000144f0: 653d 226c 3030 3439 3122 3e3c 2f61 3e3c  e=\"l00491\"></a><\n-00014500: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n-00014510: 6e6f 223e 2020 3439 313c 2f73 7061 6e3e  no\">  491</span>\n-00014520: 3c73 7061 6e20 636c 6173 733d 2263 6f6d  <span class=\"com\n-00014530: 6d65 6e74 223e 2f2f 3c2f 7370 616e 3e3c  ment\">//</span><\n-00014540: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n-00014550: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n-00014560: 3030 3439 3222 206e 616d 653d 226c 3030  00492\" name=\"l00\n-00014570: 3439 3222 3e3c 2f61 3e3c 7370 616e 2063  492\"></a><span c\n-00014580: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n-00014590: 3439 323c 2f73 7061 6e3e 3c73 7061 6e20  492</span><span \n-000145a0: 636c 6173 733d 2263 6f6d 6d65 6e74 223e  class=\"comment\">\n-000145b0: 2f2f 2020 5468 6520 6f76 6572 616c 6c20  //  The overall \n-000145c0: 7072 6f63 6573 7320 6973 2061 7320 666f  process is as fo\n-000145d0: 6c6c 6f77 733a 3c2f 7370 616e 3e3c 2f64  llows:</span></d\n-000145e0: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n-000145f0: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n-00014600: 3439 3322 206e 616d 653d 226c 3030 3439  493\" name=\"l0049\n-00014610: 3322 3e3c 2f61 3e3c 7370 616e 2063 6c61  3\"></a><span cla\n-00014620: 7373 3d22 6c69 6e65 6e6f 223e 2020 3439  ss=\"lineno\">  49\n-00014630: 333c 2f73 7061 6e3e 3c73 7061 6e20 636c  3</span><span cl\n-00014640: 6173 733d 2263 6f6d 6d65 6e74 223e 2f2f  ass=\"comment\">//\n-00014650: 3c2f 7370 616e 3e3c 2f64 6976 3e0a 3c64  </span></div>.<d\n-00014660: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n-00014670: 3c61 2069 643d 226c 3030 3439 3422 206e  <a id=\"l00494\" n\n-00014680: 616d 653d 226c 3030 3439 3422 3e3c 2f61  ame=\"l00494\"></a\n-00014690: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n-000146a0: 6e65 6e6f 223e 2020 3439 343c 2f73 7061  neno\">  494</spa\n-000146b0: 6e3e 3c73 7061 6e20 636c 6173 733d 2263  n><span class=\"c\n-000146c0: 6f6d 6d65 6e74 223e 2f2f 2020 2020 2020  omment\">//      \n-000146d0: 2d20 7175 6963 6b6c 7920 6465 7465 6374  - quickly detect\n-000146e0: 2074 6865 206d 6f73 7420 636f 6d6d 6f6e   the most common\n-000146f0: 2053 6d6f 6f74 6820 6361 7365 2077 6865   Smooth case whe\n-00014700: 6e20 7370 6563 6966 6965 6420 616e 6420  n specified and \n-00014710: 7265 7475 726e 3c2f 7370 616e 3e3c 2f64  return</span></d\n-00014720: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n-00014730: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n-00014740: 3439 3522 206e 616d 653d 226c 3030 3439  495\" name=\"l0049\n-00014750: 3522 3e3c 2f61 3e3c 7370 616e 2063 6c61  5\"></a><span cla\n-00014760: 7373 3d22 6c69 6e65 6e6f 223e 2020 3439  ss=\"lineno\">  49\n-00014770: 353c 2f73 7061 6e3e 3c73 7061 6e20 636c  5</span><span cl\n-00014780: 6173 733d 2263 6f6d 6d65 6e74 223e 2f2f  ass=\"comment\">//\n-00014790: 2020 2020 2020 2d20 6465 7465 726d 696e        - determin\n-000147a0: 6520 6966 2073 6861 7270 6e65 7373 2066  e if sharpness f\n-000147b0: 6f72 2070 6172 656e 7420 6973 2072 6571  or parent is req\n-000147c0: 7569 7265 6420 616e 6420 6761 7468 6572  uired and gather\n-000147d0: 2069 6620 736f 3c2f 7370 616e 3e3c 2f64   if so</span></d\n-000147e0: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n-000147f0: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n-00014800: 3439 3622 206e 616d 653d 226c 3030 3439  496\" name=\"l0049\n-00014810: 3622 3e3c 2f61 3e3c 7370 616e 2063 6c61  6\"></a><span cla\n-00014820: 7373 3d22 6c69 6e65 6e6f 223e 2020 3439  ss=\"lineno\">  49\n-00014830: 363c 2f73 7061 6e3e 3c73 7061 6e20 636c  6</span><span cl\n-00014840: 6173 733d 2263 6f6d 6d65 6e74 223e 2f2f  ass=\"comment\">//\n-00014850: 2020 2020 2020 2d20 6966 2075 6e73 7065        - if unspe\n-00014860: 6369 6669 6564 2c20 6465 7465 726d 696e  cified, determin\n-00014870: 6520 7468 6520 7061 7265 6e74 2072 756c  e the parent rul\n-00014880: 653c 2f73 7061 6e3e 3c2f 6469 763e 0a3c  e</span></div>.<\n-00014890: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n-000148a0: 3e3c 6120 6964 3d22 6c30 3034 3937 2220  ><a id=\"l00497\" \n-000148b0: 6e61 6d65 3d22 6c30 3034 3937 223e 3c2f  name=\"l00497\"></\n-000148c0: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n-000148d0: 696e 656e 6f22 3e20 2034 3937 3c2f 7370  ineno\">  497</sp\n-000148e0: 616e 3e3c 7370 616e 2063 6c61 7373 3d22  an><span class=\"\n-000148f0: 636f 6d6d 656e 7422 3e2f 2f20 2020 2020  comment\">//     \n-00014900: 202d 2061 7373 6967 6e20 6d61 736b 2066   - assign mask f\n-00014910: 6f72 2074 6865 2070 6172 656e 7420 7275  or the parent ru\n-00014920: 6c65 202d 2d20 7265 7475 726e 696e 6720  le -- returning \n-00014930: 6966 2053 6d6f 6f74 682f 4461 7274 3c2f  if Smooth/Dart</\n-00014940: 7370 616e 3e3c 2f64 6976 3e0a 3c64 6976  span></div>.<div\n-00014950: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n-00014960: 2069 643d 226c 3030 3439 3822 206e 616d   id=\"l00498\" nam\n-00014970: 653d 226c 3030 3439 3822 3e3c 2f61 3e3c  e=\"l00498\"></a><\n-00014980: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n-00014990: 6e6f 223e 2020 3439 383c 2f73 7061 6e3e  no\">  498</span>\n-000149a0: 3c73 7061 6e20 636c 6173 733d 2263 6f6d  <span class=\"com\n-000149b0: 6d65 6e74 223e 2f2f 2020 2020 2020 2d20  ment\">//      - \n-000149c0: 7265 7475 726e 2069 6620 6368 696c 6420  return if child \n-000149d0: 7275 6c65 206d 6174 6368 6573 2070 6172  rule matches par\n-000149e0: 656e 743c 2f73 7061 6e3e 3c2f 6469 763e  ent</span></div>\n-000149f0: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n-00014a00: 6522 3e3c 6120 6964 3d22 6c30 3034 3939  e\"><a id=\"l00499\n-00014a10: 2220 6e61 6d65 3d22 6c30 3034 3939 223e  \" name=\"l00499\">\n-00014a20: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n-00014a30: 226c 696e 656e 6f22 3e20 2034 3939 3c2f  \"lineno\">  499</\n-00014a40: 7370 616e 3e3c 7370 616e 2063 6c61 7373  span><span class\n-00014a50: 3d22 636f 6d6d 656e 7422 3e2f 2f20 2020  =\"comment\">//   \n-00014a60: 2020 202d 2067 6174 6865 7220 7368 6172     - gather shar\n-00014a70: 706e 6573 7320 666f 7220 6368 696c 6420  pness for child \n-00014a80: 746f 2064 6574 6572 6d69 6e65 206f 7220  to determine or \n-00014a90: 636f 6d62 696e 6520 6368 696c 6420 7275  combine child ru\n-00014aa0: 6c65 3c2f 7370 616e 3e3c 2f64 6976 3e0a  le</span></div>.\n-00014ab0: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n-00014ac0: 223e 3c61 2069 643d 226c 3030 3530 3022  \"><a id=\"l00500\"\n-00014ad0: 206e 616d 653d 226c 3030 3530 3022 3e3c   name=\"l00500\"><\n-00014ae0: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n-00014af0: 6c69 6e65 6e6f 223e 2020 3530 303c 2f73  lineno\">  500</s\n-00014b00: 7061 6e3e 3c73 7061 6e20 636c 6173 733d  pan><span class=\n-00014b10: 2263 6f6d 6d65 6e74 223e 2f2f 2020 2020  \"comment\">//    \n-00014b20: 2020 2d20 6966 2075 6e73 7065 6369 6669    - if unspecifi\n-00014b30: 6564 2c20 6465 7465 726d 696e 6520 7468  ed, determine th\n-00014b40: 6520 6368 696c 6420 7275 6c65 2c20 7265  e child rule, re\n-00014b50: 7475 726e 696e 6720 6966 2069 7420 6d61  turning if it ma\n-00014b60: 7463 6865 7320 7061 7265 6e74 3c2f 7370  tches parent</sp\n-00014b70: 616e 3e3c 2f64 6976 3e0a 3c64 6976 2063  an></div>.<div c\n-00014b80: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n-00014b90: 643d 226c 3030 3530 3122 206e 616d 653d  d=\"l00501\" name=\n-00014ba0: 226c 3030 3530 3122 3e3c 2f61 3e3c 7370  \"l00501\"></a><sp\n-00014bb0: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n-00014bc0: 223e 2020 3530 313c 2f73 7061 6e3e 3c73  \">  501</span><s\n-00014bd0: 7061 6e20 636c 6173 733d 2263 6f6d 6d65  pan class=\"comme\n-00014be0: 6e74 223e 2f2f 2020 2020 2020 2d20 6173  nt\">//      - as\n-00014bf0: 7369 676e 206c 6f63 616c 206d 6173 6b20  sign local mask \n-00014c00: 666f 7220 6368 696c 6420 7275 6c65 3c2f  for child rule</\n-00014c10: 7370 616e 3e3c 2f64 6976 3e0a 3c64 6976  span></div>.<div\n-00014c20: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n-00014c30: 2069 643d 226c 3030 3530 3222 206e 616d   id=\"l00502\" nam\n-00014c40: 653d 226c 3030 3530 3222 3e3c 2f61 3e3c  e=\"l00502\"></a><\n-00014c50: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n-00014c60: 6e6f 223e 2020 3530 323c 2f73 7061 6e3e  no\">  502</span>\n-00014c70: 3c73 7061 6e20 636c 6173 733d 2263 6f6d  <span class=\"com\n-00014c80: 6d65 6e74 223e 2f2f 2020 2020 2020 2d20  ment\">//      - \n-00014c90: 636f 6d62 696e 6520 6c6f 6361 6c20 6368  combine local ch\n-00014ca0: 696c 6420 6d61 736b 2077 6974 6820 7468  ild mask with th\n-00014cb0: 6520 7061 7265 6e74 206d 6173 6b3c 2f73  e parent mask</s\n-00014cc0: 7061 6e3e 3c2f 6469 763e 0a3c 6469 7620  pan></div>.<div \n-00014cd0: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n-00014ce0: 6964 3d22 6c30 3035 3033 2220 6e61 6d65  id=\"l00503\" name\n-00014cf0: 3d22 6c30 3035 3033 223e 3c2f 613e 3c73  =\"l00503\"></a><s\n-00014d00: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n-00014d10: 6f22 3e20 2035 3033 3c2f 7370 616e 3e3c  o\">  503</span><\n-00014d20: 7370 616e 2063 6c61 7373 3d22 636f 6d6d  span class=\"comm\n-00014d30: 656e 7422 3e2f 2f3c 2f73 7061 6e3e 3c2f  ent\">//</span></\n-00014d40: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n-00014d50: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n-00014d60: 3035 3034 2220 6e61 6d65 3d22 6c30 3035  0504\" name=\"l005\n-00014d70: 3034 223e 3c2f 613e 3c73 7061 6e20 636c  04\"></a><span cl\n-00014d80: 6173 733d 226c 696e 656e 6f22 3e20 2035  ass=\"lineno\">  5\n-00014d90: 3034 3c2f 7370 616e 3e3c 7370 616e 2063  04</span><span c\n-00014da0: 6c61 7373 3d22 636f 6d6d 656e 7422 3e2f  lass=\"comment\">/\n-00014db0: 2f20 2052 656d 656d 6265 7220 2d2d 2069  /  Remember -- i\n-00014dc0: 6620 7468 6520 7061 7265 6e74 2072 756c  f the parent rul\n-00014dd0: 6520 6973 2073 7065 6369 6669 6564 2062  e is specified b\n-00014de0: 7574 2074 6865 2063 6869 6c64 2069 7320  ut the child is \n-00014df0: 6e6f 742c 2074 6869 7320 696d 706c 6965  not, this implie\n-00014e00: 7320 6f6e 6c79 206f 6e65 3c2f 7370 616e  s only one</span\n-00014e10: 3e3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ></div>.<div cla\n-00014e20: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n-00014e30: 226c 3030 3530 3522 206e 616d 653d 226c  \"l00505\" name=\"l\n-00014e40: 3030 3530 3522 3e3c 2f61 3e3c 7370 616e  00505\"></a><span\n-00014e50: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n-00014e60: 2020 3530 353c 2f73 7061 6e3e 3c73 7061    505</span><spa\n-00014e70: 6e20 636c 6173 733d 2263 6f6d 6d65 6e74  n class=\"comment\n-00014e80: 223e 2f2f 2020 6f66 2074 6865 2074 776f  \">//  of the two\n-00014e90: 206f 7074 696f 6e61 6c20 7275 6c65 7320   optional rules \n-00014ea0: 7761 7320 7370 6563 6966 6965 6420 616e  was specified an\n-00014eb0: 6420 6973 206d 6561 6e74 2074 6f20 696e  d is meant to in\n-00014ec0: 6469 6361 7465 2074 6865 7265 2069 7320  dicate there is \n-00014ed0: 6e6f 2074 7261 6e73 6974 696f 6e2c 3c2f  no transition,</\n-00014ee0: 7370 616e 3e3c 2f64 6976 3e0a 3c64 6976  span></div>.<div\n-00014ef0: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n-00014f00: 2069 643d 226c 3030 3530 3622 206e 616d   id=\"l00506\" nam\n-00014f10: 653d 226c 3030 3530 3622 3e3c 2f61 3e3c  e=\"l00506\"></a><\n-00014f20: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n-00014f30: 6e6f 223e 2020 3530 363c 2f73 7061 6e3e  no\">  506</span>\n-00014f40: 3c73 7061 6e20 636c 6173 733d 2263 6f6d  <span class=\"com\n-00014f50: 6d65 6e74 223e 2f2f 2020 736f 2074 6865  ment\">//  so the\n-00014f60: 2063 6869 6c64 2072 756c 6520 7368 6f75   child rule shou\n-00014f70: 6c64 2062 6520 6173 7369 676e 6564 2074  ld be assigned t\n-00014f80: 6f20 6265 2074 6865 2073 616d 6520 2877  o be the same (w\n-00014f90: 6973 6820 7468 6520 636f 6d70 696c 6572  ish the compiler\n-00014fa0: 2077 6f75 6c64 2061 6c6c 6f77 2074 6869   would allow thi\n-00014fb0: 733c 2f73 7061 6e3e 3c2f 6469 763e 0a3c  s</span></div>.<\n-00014fc0: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n-00014fd0: 3e3c 6120 6964 3d22 6c30 3035 3037 2220  ><a id=\"l00507\" \n-00014fe0: 6e61 6d65 3d22 6c30 3035 3037 223e 3c2f  name=\"l00507\"></\n-00014ff0: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n-00015000: 696e 656e 6f22 3e20 2035 3037 3c2f 7370  ineno\">  507</sp\n-00015010: 616e 3e3c 7370 616e 2063 6c61 7373 3d22  an><span class=\"\n-00015020: 636f 6d6d 656e 7422 3e2f 2f20 2069 6e20  comment\">//  in \n-00015030: 6465 6661 756c 7420 7661 6c75 6520 6173  default value as\n-00015040: 7369 676e 6d65 6e74 292e 3c2f 7370 616e  signment).</span\n-00015050: 3e3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ></div>.<div cla\n-00015060: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n-00015070: 226c 3030 3530 3822 206e 616d 653d 226c  \"l00508\" name=\"l\n-00015080: 3030 3530 3822 3e3c 2f61 3e3c 7370 616e  00508\"></a><span\n-00015090: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n-000150a0: 2020 3530 383c 2f73 7061 6e3e 3c73 7061    508</span><spa\n-000150b0: 6e20 636c 6173 733d 2263 6f6d 6d65 6e74  n class=\"comment\n-000150c0: 223e 2f2f 3c2f 7370 616e 3e3c 2f64 6976  \">//</span></div\n-000150d0: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n-000150e0: 6e65 223e 3c61 2069 643d 226c 3030 3530  ne\"><a id=\"l0050\n-000150f0: 3922 206e 616d 653d 226c 3030 3530 3922  9\" name=\"l00509\"\n-00015100: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n-00015110: 3d22 6c69 6e65 6e6f 223e 2020 3530 393c  =\"lineno\">  509<\n-00015120: 2f73 7061 6e3e 3c73 7061 6e20 636c 6173  /span><span clas\n-00015130: 733d 226b 6579 776f 7264 223e 7465 6d70  s=\"keyword\">temp\n-00015140: 6c61 7465 3c2f 7370 616e 3e20 266c 743b  late</span> &lt;\n-00015150: 5363 6865 6d65 5479 7065 2053 4348 454d  SchemeType SCHEM\n-00015160: 4526 6774 3b3c 2f64 6976 3e0a 3c64 6976  E&gt;</div>.<div\n-00015170: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n-00015180: 2069 643d 226c 3030 3531 3022 206e 616d   id=\"l00510\" nam\n-00015190: 653d 226c 3030 3531 3022 3e3c 2f61 3e3c  e=\"l00510\"></a><\n-000151a0: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n-000151b0: 6e6f 223e 2020 3531 303c 2f73 7061 6e3e  no\">  510</span>\n-000151c0: 3c73 7061 6e20 636c 6173 733d 226b 6579  <span class=\"key\n-000151d0: 776f 7264 223e 7465 6d70 6c61 7465 3c2f  word\">template</\n-000151e0: 7370 616e 3e20 266c 743b 3c73 7061 6e20  span> &lt;<span \n-000151f0: 636c 6173 733d 226b 6579 776f 7264 223e  class=\"keyword\">\n-00015200: 7479 7065 6e61 6d65 3c2f 7370 616e 3e20  typename</span> \n-00015210: 5645 5254 4558 2c20 3c73 7061 6e20 636c  VERTEX, <span cl\n-00015220: 6173 733d 226b 6579 776f 7264 223e 7479  ass=\"keyword\">ty\n-00015230: 7065 6e61 6d65 3c2f 7370 616e 3e20 4d41  pename</span> MA\n-00015240: 534b 2667 743b 3c2f 6469 763e 0a3c 6469  SK&gt;</div>.<di\n-00015250: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n-00015260: 6120 6964 3d22 6c30 3035 3131 2220 6e61  a id=\"l00511\" na\n-00015270: 6d65 3d22 6c30 3035 3131 223e 3c2f 613e  me=\"l00511\"></a>\n-00015280: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n-00015290: 656e 6f22 3e20 2035 3131 3c2f 7370 616e  eno\">  511</span\n-000152a0: 3e3c 7370 616e 2063 6c61 7373 3d22 6b65  ><span class=\"ke\n-000152b0: 7977 6f72 6474 7970 6522 3e76 6f69 643c  ywordtype\">void<\n-000152c0: 2f73 7061 6e3e 3c2f 6469 763e 0a3c 6469  /span></div>.<di\n-000152d0: 7620 636c 6173 733d 2266 6f6c 646f 7065  v class=\"foldope\n-000152e0: 6e22 2069 643d 2266 6f6c 646f 7065 6e30  n\" id=\"foldopen0\n-000152f0: 3035 3132 2220 6461 7461 2d73 7461 7274  0512\" data-start\n-00015300: 3d22 7b22 2064 6174 612d 656e 643d 227d  =\"{\" data-end=\"}\n-00015310: 223e 0a3c 6469 7620 636c 6173 733d 226c  \">.<div class=\"l\n-00015320: 696e 6522 3e3c 6120 6964 3d22 6c30 3035  ine\"><a id=\"l005\n-00015330: 3132 2220 6e61 6d65 3d22 6c30 3035 3132  12\" name=\"l00512\n-00015340: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n-00015350: 733d 226c 696e 656e 6f22 3e3c 6120 636c  s=\"lineno\"><a cl\n-00015360: 6173 733d 226c 696e 6522 2068 7265 663d  ass=\"line\" href=\n-00015370: 2261 3031 3334 312e 6874 6d6c 2361 3332  \"a01341.html#a32\n-00015380: 3863 6132 3665 3631 3432 3833 3863 3438  8ca26e6142838c48\n-00015390: 3434 6230 3334 3534 3666 6238 6337 223e  44b034546fb8c7\">\n-000153a0: 2020 3531 323c 2f61 3e3c 2f73 7061 6e3e    512</a></span>\n-000153b0: 3c61 2063 6c61 7373 3d22 636f 6465 2068  <a class=\"code h\n-000153c0: 6c5f 6675 6e63 7469 6f6e 2220 6872 6566  l_function\" href\n-000153d0: 3d22 6130 3133 3431 2e68 746d 6c23 6133  =\"a01341.html#a3\n-000153e0: 3238 6361 3236 6536 3134 3238 3338 6334  28ca26e6142838c4\n-000153f0: 3834 3462 3033 3435 3436 6662 3863 3722  844b034546fb8c7\"\n-00015400: 3e53 6368 656d 6526 6c74 3b53 4348 454d  >Scheme&lt;SCHEM\n-00015410: 4526 6774 3b3a 3a43 6f6d 7075 7465 5665  E&gt;::ComputeVe\n-00015420: 7274 6578 5665 7274 6578 4d61 736b 3c2f  rtexVertexMask</\n-00015430: 613e 2856 4552 5445 5820 3c73 7061 6e20  a>(VERTEX <span \n-00015440: 636c 6173 733d 226b 6579 776f 7264 223e  class=\"keyword\">\n-00015450: 636f 6e73 743c 2f73 7061 6e3e 2661 6d70  const</span>&amp\n-00015460: 3b20 2020 7665 7274 6578 2c3c 2f64 6976  ;   vertex,</div\n-00015470: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n-00015480: 6e65 223e 3c61 2069 643d 226c 3030 3531  ne\"><a id=\"l0051\n-00015490: 3322 206e 616d 653d 226c 3030 3531 3322  3\" name=\"l00513\"\n-000154a0: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n-000154b0: 3d22 6c69 6e65 6e6f 223e 2020 3531 333c  =\"lineno\">  513<\n-000154c0: 2f73 7061 6e3e 2020 2020 2020 2020 2020  /span>          \n-000154d0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000154e0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000154f0: 204d 4153 4b26 616d 703b 2020 2020 2020   MASK&amp;      \n-00015500: 2020 2020 206d 6173 6b2c 3c2f 6469 763e       mask,</div>\n-00015510: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n-00015520: 6522 3e3c 6120 6964 3d22 6c30 3035 3134  e\"><a id=\"l00514\n-00015530: 2220 6e61 6d65 3d22 6c30 3035 3134 223e  \" name=\"l00514\">\n-00015540: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n-00015550: 226c 696e 656e 6f22 3e20 2035 3134 3c2f  \"lineno\">  514</\n-00015560: 7370 616e 3e20 2020 2020 2020 2020 2020  span>           \n-00015570: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00015580: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00015590: 3c61 2063 6c61 7373 3d22 636f 6465 2068  <a class=\"code h\n-000155a0: 6c5f 656e 756d 6572 6174 696f 6e22 2068  l_enumeration\" h\n-000155b0: 7265 663d 2261 3031 3333 332e 6874 6d6c  ref=\"a01333.html\n-000155c0: 2361 3131 6663 6435 3165 6638 3631 3138  #a11fcd51ef86118\n-000155d0: 6636 3565 3630 3363 3134 3734 3337 3761  f65e603c1474377a\n-000155e0: 3738 223e 4372 6561 7365 3a3a 5275 6c65  78\">Crease::Rule\n-000155f0: 3c2f 613e 2070 5275 6c65 2c3c 2f64 6976  </a> pRule,</div\n-00015600: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n-00015610: 6e65 223e 3c61 2069 643d 226c 3030 3531  ne\"><a id=\"l0051\n-00015620: 3522 206e 616d 653d 226c 3030 3531 3522  5\" name=\"l00515\"\n-00015630: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n-00015640: 3d22 6c69 6e65 6e6f 223e 2020 3531 353c  =\"lineno\">  515<\n-00015650: 2f73 7061 6e3e 2020 2020 2020 2020 2020  /span>          \n-00015660: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00015670: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00015680: 203c 6120 636c 6173 733d 2263 6f64 6520   <a class=\"code \n-00015690: 686c 5f65 6e75 6d65 7261 7469 6f6e 2220  hl_enumeration\" \n-000156a0: 6872 6566 3d22 6130 3133 3333 2e68 746d  href=\"a01333.htm\n-000156b0: 6c23 6131 3166 6364 3531 6566 3836 3131  l#a11fcd51ef8611\n-000156c0: 3866 3635 6536 3033 6331 3437 3433 3737  8f65e603c1474377\n-000156d0: 6137 3822 3e43 7265 6173 653a 3a52 756c  a78\">Crease::Rul\n-000156e0: 653c 2f61 3e20 6352 756c 6529 3c73 7061  e</a> cRule)<spa\n-000156f0: 6e20 636c 6173 733d 226b 6579 776f 7264  n class=\"keyword\n-00015700: 223e 2063 6f6e 7374 203c 2f73 7061 6e3e  \"> const </span>\n-00015710: 7b3c 2f64 6976 3e0a 3c64 6976 2063 6c61  {</div>.<div cla\n-00015720: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n-00015730: 226c 3030 3531 3622 206e 616d 653d 226c  \"l00516\" name=\"l\n-00015740: 3030 3531 3622 3e3c 2f61 3e3c 7370 616e  00516\"></a><span\n-00015750: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n-00015760: 2020 3531 363c 2f73 7061 6e3e 203c 2f64    516</span> </d\n-00015770: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n-00015780: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n-00015790: 3531 3722 206e 616d 653d 226c 3030 3531  517\" name=\"l0051\n-000157a0: 3722 3e3c 2f61 3e3c 7370 616e 2063 6c61  7\"></a><span cla\n-000157b0: 7373 3d22 6c69 6e65 6e6f 223e 2020 3531  ss=\"lineno\">  51\n-000157c0: 373c 2f73 7061 6e3e 2020 2020 3c73 7061  7</span>    <spa\n-000157d0: 6e20 636c 6173 733d 2263 6f6d 6d65 6e74  n class=\"comment\n-000157e0: 223e 2f2f 2020 5175 6963 6b20 6173 7369  \">//  Quick assi\n-000157f0: 676e 6d65 6e74 2061 6e64 2072 6574 7572  gnment and retur\n-00015800: 6e20 666f 7220 7468 6520 6d6f 7374 2063  n for the most c\n-00015810: 6f6d 6d6f 6e20 6361 7365 3a3c 2f73 7061  ommon case:</spa\n-00015820: 6e3e 3c2f 6469 763e 0a3c 6469 7620 636c  n></div>.<div cl\n-00015830: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n-00015840: 3d22 6c30 3035 3138 2220 6e61 6d65 3d22  =\"l00518\" name=\"\n-00015850: 6c30 3035 3138 223e 3c2f 613e 3c73 7061  l00518\"></a><spa\n-00015860: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n-00015870: 3e20 2035 3138 3c2f 7370 616e 3e20 2020  >  518</span>   \n-00015880: 203c 7370 616e 2063 6c61 7373 3d22 6b65   <span class=\"ke\n-00015890: 7977 6f72 6466 6c6f 7722 3e69 663c 2f73  ywordflow\">if</s\n-000158a0: 7061 6e3e 2028 2870 5275 6c65 203d 3d20  pan> ((pRule == \n-000158b0: 3c61 2063 6c61 7373 3d22 636f 6465 2068  <a class=\"code h\n-000158c0: 6c5f 656e 756d 7661 6c75 6522 2068 7265  l_enumvalue\" hre\n-000158d0: 663d 2261 3031 3333 332e 6874 6d6c 2361  f=\"a01333.html#a\n-000158e0: 3131 6663 6435 3165 6638 3631 3138 6636  11fcd51ef86118f6\n-000158f0: 3565 3630 3363 3134 3734 3337 3761 3738  5e603c1474377a78\n-00015900: 6136 3164 3133 3766 3836 3639 3937 6564  a61d137f866997ed\n-00015910: 3336 3933 6533 6663 6164 3736 6465 6635  3693e3fcad76def5\n-00015920: 6622 3e43 7265 6173 653a 3a52 554c 455f  f\">Crease::RULE_\n-00015930: 534d 4f4f 5448 3c2f 613e 2920 7c7c 2028  SMOOTH</a>) || (\n-00015940: 7052 756c 6520 3d3d 203c 6120 636c 6173  pRule == <a clas\n-00015950: 733d 2263 6f64 6520 686c 5f65 6e75 6d76  s=\"code hl_enumv\n-00015960: 616c 7565 2220 6872 6566 3d22 6130 3133  alue\" href=\"a013\n-00015970: 3333 2e68 746d 6c23 6131 3166 6364 3531  33.html#a11fcd51\n-00015980: 6566 3836 3131 3866 3635 6536 3033 6331  ef86118f65e603c1\n-00015990: 3437 3433 3737 6137 3861 3433 3436 3963  474377a78a43469c\n-000159a0: 3239 6438 3537 3961 3633 6263 3164 3632  29d8579a63bc1d62\n-000159b0: 3437 6432 3632 3437 3939 223e 4372 6561  47d2624799\">Crea\n-000159c0: 7365 3a3a 5255 4c45 5f44 4152 543c 2f61  se::RULE_DART</a\n-000159d0: 3e29 2920 7b3c 2f64 6976 3e0a 3c64 6976  >)) {</div>.<div\n-000159e0: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n-000159f0: 2069 643d 226c 3030 3531 3922 206e 616d   id=\"l00519\" nam\n-00015a00: 653d 226c 3030 3531 3922 3e3c 2f61 3e3c  e=\"l00519\"></a><\n-00015a10: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n-00015a20: 6e6f 223e 2020 3531 393c 2f73 7061 6e3e  no\">  519</span>\n-00015a30: 2020 2020 2020 2020 6173 7369 676e 536d          assignSm\n-00015a40: 6f6f 7468 4d61 736b 466f 7256 6572 7465  oothMaskForVerte\n-00015a50: 7828 7665 7274 6578 2c20 6d61 736b 293b  x(vertex, mask);\n-00015a60: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n-00015a70: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n-00015a80: 6c30 3035 3230 2220 6e61 6d65 3d22 6c30  l00520\" name=\"l0\n-00015a90: 3035 3230 223e 3c2f 613e 3c73 7061 6e20  0520\"></a><span \n-00015aa0: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n-00015ab0: 2035 3230 3c2f 7370 616e 3e20 2020 2020   520</span>     \n-00015ac0: 2020 203c 7370 616e 2063 6c61 7373 3d22     <span class=\"\n-00015ad0: 6b65 7977 6f72 6466 6c6f 7722 3e72 6574  keywordflow\">ret\n-00015ae0: 7572 6e3c 2f73 7061 6e3e 3b3c 2f64 6976  urn</span>;</div\n-00015af0: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n-00015b00: 6e65 223e 3c61 2069 643d 226c 3030 3532  ne\"><a id=\"l0052\n-00015b10: 3122 206e 616d 653d 226c 3030 3532 3122  1\" name=\"l00521\"\n-00015b20: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n-00015b30: 3d22 6c69 6e65 6e6f 223e 2020 3532 313c  =\"lineno\">  521<\n-00015b40: 2f73 7061 6e3e 2020 2020 7d3c 2f64 6976  /span>    }</div\n-00015b50: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n-00015b60: 6e65 223e 3c61 2069 643d 226c 3030 3532  ne\"><a id=\"l0052\n-00015b70: 3222 206e 616d 653d 226c 3030 3532 3222  2\" name=\"l00522\"\n-00015b80: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n-00015b90: 3d22 6c69 6e65 6e6f 223e 2020 3532 323c  =\"lineno\">  522<\n-00015ba0: 2f73 7061 6e3e 2020 2020 3c73 7061 6e20  /span>    <span \n-00015bb0: 636c 6173 733d 2263 6f6d 6d65 6e74 223e  class=\"comment\">\n-00015bc0: 2f2f 2020 4966 2075 6e73 7065 6369 6669  //  If unspecifi\n-00015bd0: 6564 2c20 6173 7369 676e 2074 6865 2063  ed, assign the c\n-00015be0: 6869 6c64 2072 756c 6520 746f 206d 6174  hild rule to mat\n-00015bf0: 6368 2074 6865 2070 6172 656e 7420 7275  ch the parent ru\n-00015c00: 6c65 2069 6620 7370 6563 6966 6965 643a  le if specified:\n-00015c10: 3c2f 7370 616e 3e3c 2f64 6976 3e0a 3c64  </span></div>.<d\n-00015c20: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n-00015c30: 3c61 2069 643d 226c 3030 3532 3322 206e  <a id=\"l00523\" n\n-00015c40: 616d 653d 226c 3030 3532 3322 3e3c 2f61  ame=\"l00523\"></a\n-00015c50: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n-00015c60: 6e65 6e6f 223e 2020 3532 333c 2f73 7061  neno\">  523</spa\n-00015c70: 6e3e 2020 2020 3c73 7061 6e20 636c 6173  n>    <span clas\n-00015c80: 733d 226b 6579 776f 7264 666c 6f77 223e  s=\"keywordflow\">\n-00015c90: 6966 3c2f 7370 616e 3e20 2828 6352 756c  if</span> ((cRul\n-00015ca0: 6520 3d3d 203c 6120 636c 6173 733d 2263  e == <a class=\"c\n-00015cb0: 6f64 6520 686c 5f65 6e75 6d76 616c 7565  ode hl_enumvalue\n-00015cc0: 2220 6872 6566 3d22 6130 3133 3333 2e68  \" href=\"a01333.h\n-00015cd0: 746d 6c23 6131 3166 6364 3531 6566 3836  tml#a11fcd51ef86\n-00015ce0: 3131 3866 3635 6536 3033 6331 3437 3433  118f65e603c14743\n-00015cf0: 3737 6137 3861 6232 3939 6165 6662 3236  77a78ab299aefb26\n-00015d00: 3031 3361 3739 6435 3231 3931 6137 3838  013a79d52191a788\n-00015d10: 3766 6561 3533 223e 4372 6561 7365 3a3a  7fea53\">Crease::\n-00015d20: 5255 4c45 5f55 4e4b 4e4f 574e 3c2f 613e  RULE_UNKNOWN</a>\n-00015d30: 2920 2661 6d70 3b26 616d 703b 2028 7052  ) &amp;&amp; (pR\n-00015d40: 756c 6520 213d 203c 6120 636c 6173 733d  ule != <a class=\n-00015d50: 2263 6f64 6520 686c 5f65 6e75 6d76 616c  \"code hl_enumval\n-00015d60: 7565 2220 6872 6566 3d22 6130 3133 3333  ue\" href=\"a01333\n-00015d70: 2e68 746d 6c23 6131 3166 6364 3531 6566  .html#a11fcd51ef\n-00015d80: 3836 3131 3866 3635 6536 3033 6331 3437  86118f65e603c147\n-00015d90: 3433 3737 6137 3861 6232 3939 6165 6662  4377a78ab299aefb\n-00015da0: 3236 3031 3361 3739 6435 3231 3931 6137  26013a79d52191a7\n-00015db0: 3838 3766 6561 3533 223e 4372 6561 7365  887fea53\">Crease\n-00015dc0: 3a3a 5255 4c45 5f55 4e4b 4e4f 574e 3c2f  ::RULE_UNKNOWN</\n-00015dd0: 613e 2929 207b 3c2f 6469 763e 0a3c 6469  a>)) {</div>.<di\n-00015de0: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n-00015df0: 6120 6964 3d22 6c30 3035 3234 2220 6e61  a id=\"l00524\" na\n-00015e00: 6d65 3d22 6c30 3035 3234 223e 3c2f 613e  me=\"l00524\"></a>\n-00015e10: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n-00015e20: 656e 6f22 3e20 2035 3234 3c2f 7370 616e  eno\">  524</span\n-00015e30: 3e20 2020 2020 2020 2063 5275 6c65 203d  >        cRule =\n-00015e40: 2070 5275 6c65 3b3c 2f64 6976 3e0a 3c64   pRule;</div>.<d\n-00015e50: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n-00015e60: 3c61 2069 643d 226c 3030 3532 3522 206e  <a id=\"l00525\" n\n-00015e70: 616d 653d 226c 3030 3532 3522 3e3c 2f61  ame=\"l00525\"></a\n-00015e80: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n-00015e90: 6e65 6e6f 223e 2020 3532 353c 2f73 7061  neno\">  525</spa\n-00015ea0: 6e3e 2020 2020 7d3c 2f64 6976 3e0a 3c64  n>    }</div>.<d\n-00015eb0: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n-00015ec0: 3c61 2069 643d 226c 3030 3532 3622 206e  <a id=\"l00526\" n\n-00015ed0: 616d 653d 226c 3030 3532 3622 3e3c 2f61  ame=\"l00526\"></a\n-00015ee0: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n-00015ef0: 6e65 6e6f 223e 2020 3532 363c 2f73 7061  neno\">  526</spa\n-00015f00: 6e3e 2020 2020 3c73 7061 6e20 636c 6173  n>    <span clas\n-00015f10: 733d 226b 6579 776f 7264 7479 7065 223e  s=\"keywordtype\">\n-00015f20: 696e 743c 2f73 7061 6e3e 2076 616c 656e  int</span> valen\n-00015f30: 6365 203d 2076 6572 7465 782e 4765 744e  ce = vertex.GetN\n-00015f40: 756d 4564 6765 7328 293b 3c2f 6469 763e  umEdges();</div>\n-00015f50: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n-00015f60: 6522 3e3c 6120 6964 3d22 6c30 3035 3237  e\"><a id=\"l00527\n-00015f70: 2220 6e61 6d65 3d22 6c30 3035 3237 223e  \" name=\"l00527\">\n-00015f80: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n-00015f90: 226c 696e 656e 6f22 3e20 2035 3237 3c2f  \"lineno\">  527</\n-00015fa0: 7370 616e 3e20 3c2f 6469 763e 0a3c 6469  span> </div>.<di\n-00015fb0: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n-00015fc0: 6120 6964 3d22 6c30 3035 3238 2220 6e61  a id=\"l00528\" na\n-00015fd0: 6d65 3d22 6c30 3035 3238 223e 3c2f 613e  me=\"l00528\"></a>\n-00015fe0: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n-00015ff0: 656e 6f22 3e20 2035 3238 3c2f 7370 616e  eno\">  528</span\n-00016000: 3e20 2020 203c 7370 616e 2063 6c61 7373  >    <span class\n-00016010: 3d22 636f 6d6d 656e 7422 3e2f 2f3c 2f73  =\"comment\">//</s\n-00016020: 7061 6e3e 3c2f 6469 763e 0a3c 6469 7620  pan></div>.<div \n-00016030: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n-00016040: 6964 3d22 6c30 3035 3239 2220 6e61 6d65  id=\"l00529\" name\n-00016050: 3d22 6c30 3035 3239 223e 3c2f 613e 3c73  =\"l00529\"></a><s\n-00016060: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n-00016070: 6f22 3e20 2035 3239 3c2f 7370 616e 3e20  o\">  529</span> \n-00016080: 2020 203c 7370 616e 2063 6c61 7373 3d22     <span class=\"\n-00016090: 636f 6d6d 656e 7422 3e2f 2f20 2044 6574  comment\">//  Det\n-000160a0: 6572 6d69 6e65 2069 6620 7765 206e 6565  ermine if we nee\n-000160b0: 6420 7468 6520 7061 7265 6e74 2065 6467  d the parent edg\n-000160c0: 6520 7368 6172 706e 6573 7320 7661 6c75  e sharpness valu\n-000160d0: 6573 202d 2d20 6964 656e 7469 6679 2f67  es -- identify/g\n-000160e0: 6174 6865 7220 6966 2073 6f3c 2f73 7061  ather if so</spa\n-000160f0: 6e3e 3c2f 6469 763e 0a3c 6469 7620 636c  n></div>.<div cl\n-00016100: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n-00016110: 3d22 6c30 3035 3330 2220 6e61 6d65 3d22  =\"l00530\" name=\"\n-00016120: 6c30 3035 3330 223e 3c2f 613e 3c73 7061  l00530\"></a><spa\n-00016130: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n-00016140: 3e20 2035 3330 3c2f 7370 616e 3e20 2020  >  530</span>   \n-00016150: 203c 7370 616e 2063 6c61 7373 3d22 636f   <span class=\"co\n-00016160: 6d6d 656e 7422 3e2f 2f20 2061 6e64 2075  mment\">//  and u\n-00016170: 7365 2069 7420 746f 2063 6f6d 7075 7465  se it to compute\n-00016180: 2074 6865 2070 6172 656e 7420 7275 6c65   the parent rule\n-00016190: 2069 6620 756e 7370 6563 6966 6965 643a   if unspecified:\n-000161a0: 3c2f 7370 616e 3e3c 2f64 6976 3e0a 3c64  </span></div>.<d\n-000161b0: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n-000161c0: 3c61 2069 643d 226c 3030 3533 3122 206e  <a id=\"l00531\" n\n-000161d0: 616d 653d 226c 3030 3533 3122 3e3c 2f61  ame=\"l00531\"></a\n-000161e0: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n-000161f0: 6e65 6e6f 223e 2020 3533 313c 2f73 7061  neno\">  531</spa\n-00016200: 6e3e 2020 2020 3c73 7061 6e20 636c 6173  n>    <span clas\n-00016210: 733d 2263 6f6d 6d65 6e74 223e 2f2f 3c2f  s=\"comment\">//</\n-00016220: 7370 616e 3e3c 2f64 6976 3e0a 3c64 6976  span></div>.<div\n-00016230: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n-00016240: 2069 643d 226c 3030 3533 3222 206e 616d   id=\"l00532\" nam\n-00016250: 653d 226c 3030 3533 3222 3e3c 2f61 3e3c  e=\"l00532\"></a><\n-00016260: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n-00016270: 6e6f 223e 2020 3533 323c 2f73 7061 6e3e  no\">  532</span>\n-00016280: 2020 2020 3c73 7061 6e20 636c 6173 733d      <span class=\n-00016290: 226b 6579 776f 7264 7479 7065 223e 666c  \"keywordtype\">fl\n-000162a0: 6f61 743c 2f73 7061 6e3e 202a 2070 4564  oat</span> * pEd\n-000162b0: 6765 5368 6172 706e 6573 7342 7566 6665  geSharpnessBuffe\n-000162c0: 7220 3d20 283c 7370 616e 2063 6c61 7373  r = (<span class\n-000162d0: 3d22 6b65 7977 6f72 6474 7970 6522 3e66  =\"keywordtype\">f\n-000162e0: 6c6f 6174 3c2f 7370 616e 3e20 2a29 616c  loat</span> *)al\n-000162f0: 6c6f 6361 2876 616c 656e 6365 2a3c 7370  loca(valence*<sp\n-00016300: 616e 2063 6c61 7373 3d22 6b65 7977 6f72  an class=\"keywor\n-00016310: 6422 3e73 697a 656f 663c 2f73 7061 6e3e  d\">sizeof</span>\n-00016320: 283c 7370 616e 2063 6c61 7373 3d22 6b65  (<span class=\"ke\n-00016330: 7977 6f72 6474 7970 6522 3e66 6c6f 6174  ywordtype\">float\n-00016340: 3c2f 7370 616e 3e29 292c 3c2f 6469 763e  </span>)),</div>\n-00016350: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n-00016360: 6522 3e3c 6120 6964 3d22 6c30 3035 3333  e\"><a id=\"l00533\n-00016370: 2220 6e61 6d65 3d22 6c30 3035 3333 223e  \" name=\"l00533\">\n-00016380: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n-00016390: 226c 696e 656e 6f22 3e20 2035 3333 3c2f  \"lineno\">  533</\n-000163a0: 7370 616e 3e20 2020 2020 2020 2020 202a  span>          *\n-000163b0: 2070 4564 6765 5368 6172 706e 6573 7320   pEdgeSharpness \n-000163c0: 2020 3d20 302c 3c2f 6469 763e 0a3c 6469    = 0,</div>.<di\n-000163d0: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n-000163e0: 6120 6964 3d22 6c30 3035 3334 2220 6e61  a id=\"l00534\" na\n-000163f0: 6d65 3d22 6c30 3035 3334 223e 3c2f 613e  me=\"l00534\"></a>\n-00016400: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n-00016410: 656e 6f22 3e20 2035 3334 3c2f 7370 616e  eno\">  534</span\n-00016420: 3e20 2020 2020 2020 2020 2020 2070 5665  >            pVe\n-00016430: 7274 6578 5368 6172 706e 6573 7320 3d20  rtexSharpness = \n-00016440: 302e 3066 3b3c 2f64 6976 3e0a 3c64 6976  0.0f;</div>.<div\n-00016450: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n-00016460: 2069 643d 226c 3030 3533 3522 206e 616d   id=\"l00535\" nam\n-00016470: 653d 226c 3030 3533 3522 3e3c 2f61 3e3c  e=\"l00535\"></a><\n-00016480: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n-00016490: 6e6f 223e 2020 3533 353c 2f73 7061 6e3e  no\">  535</span>\n-000164a0: 203c 2f64 6976 3e0a 3c64 6976 2063 6c61   </div>.<div cla\n-000164b0: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n-000164c0: 226c 3030 3533 3622 206e 616d 653d 226c  \"l00536\" name=\"l\n-000164d0: 3030 3533 3622 3e3c 2f61 3e3c 7370 616e  00536\"></a><span\n-000164e0: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n-000164f0: 2020 3533 363c 2f73 7061 6e3e 2020 2020    536</span>    \n-00016500: 3c73 7061 6e20 636c 6173 733d 226b 6579  <span class=\"key\n-00016510: 776f 7264 7479 7065 223e 626f 6f6c 3c2f  wordtype\">bool</\n-00016520: 7370 616e 3e20 7265 7175 6972 6550 6172  span> requirePar\n-00016530: 656e 7453 6861 7270 6e65 7373 203d 2028  entSharpness = (\n-00016540: 7052 756c 6520 3d3d 203c 6120 636c 6173  pRule == <a clas\n-00016550: 733d 2263 6f64 6520 686c 5f65 6e75 6d76  s=\"code hl_enumv\n-00016560: 616c 7565 2220 6872 6566 3d22 6130 3133  alue\" href=\"a013\n-00016570: 3333 2e68 746d 6c23 6131 3166 6364 3531  33.html#a11fcd51\n-00016580: 6566 3836 3131 3866 3635 6536 3033 6331  ef86118f65e603c1\n-00016590: 3437 3433 3737 6137 3861 6232 3939 6165  474377a78ab299ae\n-000165a0: 6662 3236 3031 3361 3739 6435 3231 3931  fb26013a79d52191\n-000165b0: 6137 3838 3766 6561 3533 223e 4372 6561  a7887fea53\">Crea\n-000165c0: 7365 3a3a 5255 4c45 5f55 4e4b 4e4f 574e  se::RULE_UNKNOWN\n-000165d0: 3c2f 613e 2920 7c7c 3c2f 6469 763e 0a3c  </a>) ||</div>.<\n-000165e0: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n-000165f0: 3e3c 6120 6964 3d22 6c30 3035 3337 2220  ><a id=\"l00537\" \n-00016600: 6e61 6d65 3d22 6c30 3035 3337 223e 3c2f  name=\"l00537\"></\n-00016610: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n-00016620: 696e 656e 6f22 3e20 2035 3337 3c2f 7370  ineno\">  537</sp\n-00016630: 616e 3e20 2020 2020 2020 2020 2020 2020  an>             \n-00016640: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00016650: 2020 2020 2028 7052 756c 6520 3d3d 203c       (pRule == <\n-00016660: 6120 636c 6173 733d 2263 6f64 6520 686c  a class=\"code hl\n-00016670: 5f65 6e75 6d76 616c 7565 2220 6872 6566  _enumvalue\" href\n-00016680: 3d22 6130 3133 3333 2e68 746d 6c23 6131  =\"a01333.html#a1\n-00016690: 3166 6364 3531 6566 3836 3131 3866 3635  1fcd51ef86118f65\n-000166a0: 6536 3033 6331 3437 3433 3737 6137 3861  e603c1474377a78a\n-000166b0: 3936 3666 6131 6165 3861 6562 3835 3837  966fa1ae8aeb8587\n-000166c0: 6334 3938 6366 3661 3932 6363 3333 3335  c498cf6a92cc3335\n-000166d0: 223e 4372 6561 7365 3a3a 5255 4c45 5f43  \">Crease::RULE_C\n-000166e0: 5245 4153 453c 2f61 3e29 207c 7c3c 2f64  REASE</a>) ||</d\n-000166f0: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n-00016700: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n-00016710: 3533 3822 206e 616d 653d 226c 3030 3533  538\" name=\"l0053\n-00016720: 3822 3e3c 2f61 3e3c 7370 616e 2063 6c61  8\"></a><span cla\n-00016730: 7373 3d22 6c69 6e65 6e6f 223e 2020 3533  ss=\"lineno\">  53\n-00016740: 383c 2f73 7061 6e3e 2020 2020 2020 2020  8</span>        \n-00016750: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00016760: 2020 2020 2020 2020 2020 2870 5275 6c65            (pRule\n-00016770: 2021 3d20 6352 756c 6529 3b3c 2f64 6976   != cRule);</div\n-00016780: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n-00016790: 6e65 223e 3c61 2069 643d 226c 3030 3533  ne\"><a id=\"l0053\n-000167a0: 3922 206e 616d 653d 226c 3030 3533 3922  9\" name=\"l00539\"\n-000167b0: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n-000167c0: 3d22 6c69 6e65 6e6f 223e 2020 3533 393c  =\"lineno\">  539<\n-000167d0: 2f73 7061 6e3e 2020 2020 3c73 7061 6e20  /span>    <span \n-000167e0: 636c 6173 733d 226b 6579 776f 7264 666c  class=\"keywordfl\n-000167f0: 6f77 223e 6966 3c2f 7370 616e 3e20 2872  ow\">if</span> (r\n-00016800: 6571 7569 7265 5061 7265 6e74 5368 6172  equireParentShar\n-00016810: 706e 6573 7329 207b 3c2f 6469 763e 0a3c  pness) {</div>.<\n-00016820: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n-00016830: 3e3c 6120 6964 3d22 6c30 3035 3430 2220  ><a id=\"l00540\" \n-00016840: 6e61 6d65 3d22 6c30 3035 3430 223e 3c2f  name=\"l00540\"></\n-00016850: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n-00016860: 696e 656e 6f22 3e20 2035 3430 3c2f 7370  ineno\">  540</sp\n-00016870: 616e 3e20 2020 2020 2020 2070 5665 7274  an>        pVert\n-00016880: 6578 5368 6172 706e 6573 7320 3d20 7665  exSharpness = ve\n-00016890: 7274 6578 2e47 6574 5368 6172 706e 6573  rtex.GetSharpnes\n-000168a0: 7328 293b 3c2f 6469 763e 0a3c 6469 7620  s();</div>.<div \n-000168b0: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n-000168c0: 6964 3d22 6c30 3035 3431 2220 6e61 6d65  id=\"l00541\" name\n-000168d0: 3d22 6c30 3035 3431 223e 3c2f 613e 3c73  =\"l00541\"></a><s\n-000168e0: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n-000168f0: 6f22 3e20 2035 3431 3c2f 7370 616e 3e20  o\">  541</span> \n-00016900: 2020 2020 2020 2070 4564 6765 5368 6172         pEdgeShar\n-00016910: 706e 6573 7320 2020 3d20 7665 7274 6578  pness   = vertex\n-00016920: 2e47 6574 5368 6172 706e 6573 7350 6572  .GetSharpnessPer\n-00016930: 4564 6765 2870 4564 6765 5368 6172 706e  Edge(pEdgeSharpn\n-00016940: 6573 7342 7566 6665 7229 3b3c 2f64 6976  essBuffer);</div\n-00016950: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n-00016960: 6e65 223e 3c61 2069 643d 226c 3030 3534  ne\"><a id=\"l0054\n-00016970: 3222 206e 616d 653d 226c 3030 3534 3222  2\" name=\"l00542\"\n-00016980: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n-00016990: 3d22 6c69 6e65 6e6f 223e 2020 3534 323c  =\"lineno\">  542<\n-000169a0: 2f73 7061 6e3e 203c 2f64 6976 3e0a 3c64  /span> </div>.<d\n-000169b0: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n-000169c0: 3c61 2069 643d 226c 3030 3534 3322 206e  <a id=\"l00543\" n\n-000169d0: 616d 653d 226c 3030 3534 3322 3e3c 2f61  ame=\"l00543\"></a\n-000169e0: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n-000169f0: 6e65 6e6f 223e 2020 3534 333c 2f73 7061  neno\">  543</spa\n-00016a00: 6e3e 2020 2020 2020 2020 3c73 7061 6e20  n>        <span \n-00016a10: 636c 6173 733d 226b 6579 776f 7264 666c  class=\"keywordfl\n-00016a20: 6f77 223e 6966 3c2f 7370 616e 3e20 2870  ow\">if</span> (p\n-00016a30: 5275 6c65 203d 3d20 3c61 2063 6c61 7373  Rule == <a class\n-00016a40: 3d22 636f 6465 2068 6c5f 656e 756d 7661  =\"code hl_enumva\n-00016a50: 6c75 6522 2068 7265 663d 2261 3031 3333  lue\" href=\"a0133\n-00016a60: 332e 6874 6d6c 2361 3131 6663 6435 3165  3.html#a11fcd51e\n-00016a70: 6638 3631 3138 6636 3565 3630 3363 3134  f86118f65e603c14\n-00016a80: 3734 3337 3761 3738 6162 3239 3961 6566  74377a78ab299aef\n-00016a90: 6232 3630 3133 6137 3964 3532 3139 3161  b26013a79d52191a\n-00016aa0: 3738 3837 6665 6135 3322 3e43 7265 6173  7887fea53\">Creas\n-00016ab0: 653a 3a52 554c 455f 554e 4b4e 4f57 4e3c  e::RULE_UNKNOWN<\n-00016ac0: 2f61 3e29 207b 3c2f 6469 763e 0a3c 6469  /a>) {</div>.<di\n-00016ad0: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n-00016ae0: 6120 6964 3d22 6c30 3035 3434 2220 6e61  a id=\"l00544\" na\n-00016af0: 6d65 3d22 6c30 3035 3434 223e 3c2f 613e  me=\"l00544\"></a>\n-00016b00: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n-00016b10: 656e 6f22 3e20 2035 3434 3c2f 7370 616e  eno\">  544</span\n-00016b20: 3e20 2020 2020 2020 2020 2020 2070 5275  >            pRu\n-00016b30: 6c65 203d 203c 6120 636c 6173 733d 2263  le = <a class=\"c\n-00016b40: 6f64 6520 686c 5f63 6c61 7373 2220 6872  ode hl_class\" hr\n-00016b50: 6566 3d22 6130 3133 3333 2e68 746d 6c22  ef=\"a01333.html\"\n-00016b60: 3e43 7265 6173 653c 2f61 3e28 5f6f 7074  >Crease</a>(_opt\n-00016b70: 696f 6e73 292e 3c61 2063 6c61 7373 3d22  ions).<a class=\"\n-00016b80: 636f 6465 2068 6c5f 6675 6e63 7469 6f6e  code hl_function\n-00016b90: 2220 6872 6566 3d22 6130 3133 3333 2e68  \" href=\"a01333.h\n-00016ba0: 746d 6c23 6134 3165 6262 3735 6432 3863  tml#a41ebb75d28c\n-00016bb0: 3539 3733 3332 3865 3065 3338 3833 3439  5973328e0e388349\n-00016bc0: 3561 6562 6122 3e44 6574 6572 6d69 6e65  5aeba\">Determine\n-00016bd0: 5665 7274 6578 5665 7274 6578 5275 6c65  VertexVertexRule\n-00016be0: 3c2f 613e 2870 5665 7274 6578 5368 6172  </a>(pVertexShar\n-00016bf0: 706e 6573 732c 2076 616c 656e 6365 2c20  pness, valence, \n-00016c00: 7045 6467 6553 6861 7270 6e65 7373 293b  pEdgeSharpness);\n-00016c10: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n-00016c20: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n-00016c30: 6c30 3035 3435 2220 6e61 6d65 3d22 6c30  l00545\" name=\"l0\n-00016c40: 3035 3435 223e 3c2f 613e 3c73 7061 6e20  0545\"></a><span \n-00016c50: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n-00016c60: 2035 3435 3c2f 7370 616e 3e20 2020 2020   545</span>     \n-00016c70: 2020 207d 3c2f 6469 763e 0a3c 6469 7620     }</div>.<div \n-00016c80: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n-00016c90: 6964 3d22 6c30 3035 3436 2220 6e61 6d65  id=\"l00546\" name\n-00016ca0: 3d22 6c30 3035 3436 223e 3c2f 613e 3c73  =\"l00546\"></a><s\n-00016cb0: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n-00016cc0: 6f22 3e20 2035 3436 3c2f 7370 616e 3e20  o\">  546</span> \n-00016cd0: 2020 207d 3c2f 6469 763e 0a3c 6469 7620     }</div>.<div \n-00016ce0: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n-00016cf0: 6964 3d22 6c30 3035 3437 2220 6e61 6d65  id=\"l00547\" name\n-00016d00: 3d22 6c30 3035 3437 223e 3c2f 613e 3c73  =\"l00547\"></a><s\n-00016d10: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n-00016d20: 6f22 3e20 2035 3437 3c2f 7370 616e 3e20  o\">  547</span> \n-00016d30: 2020 203c 7370 616e 2063 6c61 7373 3d22     <span class=\"\n-00016d40: 6b65 7977 6f72 6466 6c6f 7722 3e69 663c  keywordflow\">if<\n-00016d50: 2f73 7061 6e3e 2028 2870 5275 6c65 203d  /span> ((pRule =\n-00016d60: 3d20 3c61 2063 6c61 7373 3d22 636f 6465  = <a class=\"code\n-00016d70: 2068 6c5f 656e 756d 7661 6c75 6522 2068   hl_enumvalue\" h\n-00016d80: 7265 663d 2261 3031 3333 332e 6874 6d6c  ref=\"a01333.html\n-00016d90: 2361 3131 6663 6435 3165 6638 3631 3138  #a11fcd51ef86118\n-00016da0: 6636 3565 3630 3363 3134 3734 3337 3761  f65e603c1474377a\n-00016db0: 3738 6136 3164 3133 3766 3836 3639 3937  78a61d137f866997\n-00016dc0: 6564 3336 3933 6533 6663 6164 3736 6465  ed3693e3fcad76de\n-00016dd0: 6635 6622 3e43 7265 6173 653a 3a52 554c  f5f\">Crease::RUL\n-00016de0: 455f 534d 4f4f 5448 3c2f 613e 2920 7c7c  E_SMOOTH</a>) ||\n-00016df0: 2028 7052 756c 6520 3d3d 203c 6120 636c   (pRule == <a cl\n-00016e00: 6173 733d 2263 6f64 6520 686c 5f65 6e75  ass=\"code hl_enu\n-00016e10: 6d76 616c 7565 2220 6872 6566 3d22 6130  mvalue\" href=\"a0\n-00016e20: 3133 3333 2e68 746d 6c23 6131 3166 6364  1333.html#a11fcd\n-00016e30: 3531 6566 3836 3131 3866 3635 6536 3033  51ef86118f65e603\n-00016e40: 6331 3437 3433 3737 6137 3861 3433 3436  c1474377a78a4346\n-00016e50: 3963 3239 6438 3537 3961 3633 6263 3164  9c29d8579a63bc1d\n-00016e60: 3632 3437 6432 3632 3437 3939 223e 4372  6247d2624799\">Cr\n-00016e70: 6561 7365 3a3a 5255 4c45 5f44 4152 543c  ease::RULE_DART<\n-00016e80: 2f61 3e29 2920 7b3c 2f64 6976 3e0a 3c64  /a>)) {</div>.<d\n-00016e90: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n-00016ea0: 3c61 2069 643d 226c 3030 3534 3822 206e  <a id=\"l00548\" n\n-00016eb0: 616d 653d 226c 3030 3534 3822 3e3c 2f61  ame=\"l00548\"></a\n-00016ec0: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n-00016ed0: 6e65 6e6f 223e 2020 3534 383c 2f73 7061  neno\">  548</spa\n-00016ee0: 6e3e 2020 2020 2020 2020 6173 7369 676e  n>        assign\n-00016ef0: 536d 6f6f 7468 4d61 736b 466f 7256 6572  SmoothMaskForVer\n-00016f00: 7465 7828 7665 7274 6578 2c20 6d61 736b  tex(vertex, mask\n-00016f10: 293b 3c2f 6469 763e 0a3c 6469 7620 636c  );</div>.<div cl\n-00016f20: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n-00016f30: 3d22 6c30 3035 3439 2220 6e61 6d65 3d22  =\"l00549\" name=\"\n-00016f40: 6c30 3035 3439 223e 3c2f 613e 3c73 7061  l00549\"></a><spa\n-00016f50: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n-00016f60: 3e20 2035 3439 3c2f 7370 616e 3e20 2020  >  549</span>   \n-00016f70: 2020 2020 203c 7370 616e 2063 6c61 7373       <span class\n-00016f80: 3d22 6b65 7977 6f72 6466 6c6f 7722 3e72  =\"keywordflow\">r\n-00016f90: 6574 7572 6e3c 2f73 7061 6e3e 3b20 203c  eturn</span>;  <\n-00016fa0: 7370 616e 2063 6c61 7373 3d22 636f 6d6d  span class=\"comm\n-00016fb0: 656e 7422 3e2f 2f20 2041 7320 646f 6e65  ent\">//  As done\n-00016fc0: 206f 6e20 656e 7472 792c 2077 6520 6361   on entry, we ca\n-00016fd0: 6e20 7265 7475 726e 2069 6d6d 6564 6961  n return immedia\n-00016fe0: 7465 6c79 2069 6620 7061 7265 6e74 2069  tely if parent i\n-00016ff0: 7320 536d 6f6f 7468 2f44 6172 743c 2f73  s Smooth/Dart</s\n-00017000: 7061 6e3e 3c2f 6469 763e 0a3c 6469 7620  pan></div>.<div \n-00017010: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n-00017020: 6964 3d22 6c30 3035 3530 2220 6e61 6d65  id=\"l00550\" name\n-00017030: 3d22 6c30 3035 3530 223e 3c2f 613e 3c73  =\"l00550\"></a><s\n-00017040: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n-00017050: 6f22 3e20 2035 3530 3c2f 7370 616e 3e20  o\">  550</span> \n-00017060: 2020 207d 203c 7370 616e 2063 6c61 7373     } <span class\n-00017070: 3d22 6b65 7977 6f72 6466 6c6f 7722 3e65  =\"keywordflow\">e\n-00017080: 6c73 653c 2f73 7061 6e3e 203c 7370 616e  lse</span> <span\n-00017090: 2063 6c61 7373 3d22 6b65 7977 6f72 6466   class=\"keywordf\n-000170a0: 6c6f 7722 3e69 663c 2f73 7061 6e3e 2028  low\">if</span> (\n-000170b0: 7052 756c 6520 3d3d 203c 6120 636c 6173  pRule == <a clas\n-000170c0: 733d 2263 6f64 6520 686c 5f65 6e75 6d76  s=\"code hl_enumv\n-000170d0: 616c 7565 2220 6872 6566 3d22 6130 3133  alue\" href=\"a013\n-000170e0: 3333 2e68 746d 6c23 6131 3166 6364 3531  33.html#a11fcd51\n-000170f0: 6566 3836 3131 3866 3635 6536 3033 6331  ef86118f65e603c1\n-00017100: 3437 3433 3737 6137 3861 3936 3666 6131  474377a78a966fa1\n-00017110: 6165 3861 6562 3835 3837 6334 3938 6366  ae8aeb8587c498cf\n-00017120: 3661 3932 6363 3333 3335 223e 4372 6561  6a92cc3335\">Crea\n-00017130: 7365 3a3a 5255 4c45 5f43 5245 4153 453c  se::RULE_CREASE<\n-00017140: 2f61 3e29 207b 3c2f 6469 763e 0a3c 6469  /a>) {</div>.<di\n-00017150: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n-00017160: 6120 6964 3d22 6c30 3035 3531 2220 6e61  a id=\"l00551\" na\n-00017170: 6d65 3d22 6c30 3035 3531 223e 3c2f 613e  me=\"l00551\"></a>\n-00017180: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n-00017190: 656e 6f22 3e20 2035 3531 3c2f 7370 616e  eno\">  551</span\n-000171a0: 3e20 2020 2020 2020 203c 7370 616e 2063  >        <span c\n-000171b0: 6c61 7373 3d22 6b65 7977 6f72 6474 7970  lass=\"keywordtyp\n-000171c0: 6522 3e69 6e74 3c2f 7370 616e 3e20 6372  e\">int</span> cr\n-000171d0: 6561 7365 456e 6473 5b32 5d3b 3c2f 6469  easeEnds[2];</di\n-000171e0: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n-000171f0: 696e 6522 3e3c 6120 6964 3d22 6c30 3035  ine\"><a id=\"l005\n-00017200: 3532 2220 6e61 6d65 3d22 6c30 3035 3532  52\" name=\"l00552\n-00017210: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n-00017220: 733d 226c 696e 656e 6f22 3e20 2035 3532  s=\"lineno\">  552\n-00017230: 3c2f 7370 616e 3e20 2020 2020 2020 203c  </span>        <\n-00017240: 6120 636c 6173 733d 2263 6f64 6520 686c  a class=\"code hl\n-00017250: 5f63 6c61 7373 2220 6872 6566 3d22 6130  _class\" href=\"a0\n-00017260: 3133 3333 2e68 746d 6c22 3e43 7265 6173  1333.html\">Creas\n-00017270: 653c 2f61 3e28 5f6f 7074 696f 6e73 292e  e</a>(_options).\n-00017280: 3c61 2063 6c61 7373 3d22 636f 6465 2068  <a class=\"code h\n-00017290: 6c5f 6675 6e63 7469 6f6e 2220 6872 6566  l_function\" href\n-000172a0: 3d22 6130 3133 3333 2e68 746d 6c23 6133  =\"a01333.html#a3\n-000172b0: 3632 6632 3265 3763 6261 3161 3062 3966  62f22e7cba1a0b9f\n-000172c0: 3633 6539 6230 3037 6331 3966 3239 3622  63e9b007c19f296\"\n-000172d0: 3e47 6574 5368 6172 7045 6467 6550 6169  >GetSharpEdgePai\n-000172e0: 724f 6643 7265 6173 653c 2f61 3e28 7045  rOfCrease</a>(pE\n-000172f0: 6467 6553 6861 7270 6e65 7373 2c20 7661  dgeSharpness, va\n-00017300: 6c65 6e63 652c 2063 7265 6173 6545 6e64  lence, creaseEnd\n-00017310: 7329 3b3c 2f64 6976 3e0a 3c64 6976 2063  s);</div>.<div c\n-00017320: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n-00017330: 643d 226c 3030 3535 3322 206e 616d 653d  d=\"l00553\" name=\n-00017340: 226c 3030 3535 3322 3e3c 2f61 3e3c 7370  \"l00553\"></a><sp\n-00017350: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n-00017360: 223e 2020 3535 333c 2f73 7061 6e3e 203c  \">  553</span> <\n-00017370: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n-00017380: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n-00017390: 3030 3535 3422 206e 616d 653d 226c 3030  00554\" name=\"l00\n-000173a0: 3535 3422 3e3c 2f61 3e3c 7370 616e 2063  554\"></a><span c\n-000173b0: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n-000173c0: 3535 343c 2f73 7061 6e3e 2020 2020 2020  554</span>      \n-000173d0: 2020 6173 7369 676e 4372 6561 7365 4d61    assignCreaseMa\n-000173e0: 736b 466f 7256 6572 7465 7828 7665 7274  skForVertex(vert\n-000173f0: 6578 2c20 6d61 736b 2c20 6372 6561 7365  ex, mask, crease\n-00017400: 456e 6473 293b 3c2f 6469 763e 0a3c 6469  Ends);</div>.<di\n-00017410: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n-00017420: 6120 6964 3d22 6c30 3035 3535 2220 6e61  a id=\"l00555\" na\n-00017430: 6d65 3d22 6c30 3035 3535 223e 3c2f 613e  me=\"l00555\"></a>\n-00017440: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n-00017450: 656e 6f22 3e20 2035 3535 3c2f 7370 616e  eno\">  555</span\n-00017460: 3e20 2020 207d 203c 7370 616e 2063 6c61  >    } <span cla\n-00017470: 7373 3d22 6b65 7977 6f72 6466 6c6f 7722  ss=\"keywordflow\"\n-00017480: 3e65 6c73 653c 2f73 7061 6e3e 207b 3c2f  >else</span> {</\n-00017490: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n-000174a0: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n-000174b0: 3035 3536 2220 6e61 6d65 3d22 6c30 3035  0556\" name=\"l005\n-000174c0: 3536 223e 3c2f 613e 3c73 7061 6e20 636c  56\"></a><span cl\n-000174d0: 6173 733d 226c 696e 656e 6f22 3e20 2035  ass=\"lineno\">  5\n-000174e0: 3536 3c2f 7370 616e 3e20 2020 2020 2020  56</span>       \n-000174f0: 2061 7373 6967 6e43 6f72 6e65 724d 6173   assignCornerMas\n-00017500: 6b46 6f72 5665 7274 6578 2876 6572 7465  kForVertex(verte\n-00017510: 782c 206d 6173 6b29 3b3c 2f64 6976 3e0a  x, mask);</div>.\n-00017520: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n-00017530: 223e 3c61 2069 643d 226c 3030 3535 3722  \"><a id=\"l00557\"\n-00017540: 206e 616d 653d 226c 3030 3535 3722 3e3c   name=\"l00557\"><\n-00017550: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n-00017560: 6c69 6e65 6e6f 223e 2020 3535 373c 2f73  lineno\">  557</s\n-00017570: 7061 6e3e 2020 2020 7d3c 2f64 6976 3e0a  pan>    }</div>.\n-00017580: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n-00017590: 223e 3c61 2069 643d 226c 3030 3535 3822  \"><a id=\"l00558\"\n-000175a0: 206e 616d 653d 226c 3030 3535 3822 3e3c   name=\"l00558\"><\n-000175b0: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n-000175c0: 6c69 6e65 6e6f 223e 2020 3535 383c 2f73  lineno\">  558</s\n-000175d0: 7061 6e3e 2020 2020 3c73 7061 6e20 636c  pan>    <span cl\n-000175e0: 6173 733d 226b 6579 776f 7264 666c 6f77  ass=\"keywordflow\n-000175f0: 223e 6966 3c2f 7370 616e 3e20 2863 5275  \">if</span> (cRu\n-00017600: 6c65 203d 3d20 7052 756c 6529 203c 7370  le == pRule) <sp\n-00017610: 616e 2063 6c61 7373 3d22 6b65 7977 6f72  an class=\"keywor\n-00017620: 6466 6c6f 7722 3e72 6574 7572 6e3c 2f73  dflow\">return</s\n-00017630: 7061 6e3e 3b3c 2f64 6976 3e0a 3c64 6976  pan>;</div>.<div\n-00017640: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n-00017650: 2069 643d 226c 3030 3535 3922 206e 616d   id=\"l00559\" nam\n-00017660: 653d 226c 3030 3535 3922 3e3c 2f61 3e3c  e=\"l00559\"></a><\n-00017670: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n-00017680: 6e6f 223e 2020 3535 393c 2f73 7061 6e3e  no\">  559</span>\n-00017690: 203c 2f64 6976 3e0a 3c64 6976 2063 6c61   </div>.<div cla\n-000176a0: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n-000176b0: 226c 3030 3536 3022 206e 616d 653d 226c  \"l00560\" name=\"l\n-000176c0: 3030 3536 3022 3e3c 2f61 3e3c 7370 616e  00560\"></a><span\n-000176d0: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n-000176e0: 2020 3536 303c 2f73 7061 6e3e 2020 2020    560</span>    \n-000176f0: 3c73 7061 6e20 636c 6173 733d 2263 6f6d  <span class=\"com\n-00017700: 6d65 6e74 223e 2f2f 3c2f 7370 616e 3e3c  ment\">//</span><\n-00017710: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n-00017720: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n-00017730: 3030 3536 3122 206e 616d 653d 226c 3030  00561\" name=\"l00\n-00017740: 3536 3122 3e3c 2f61 3e3c 7370 616e 2063  561\"></a><span c\n-00017750: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n-00017760: 3536 313c 2f73 7061 6e3e 2020 2020 3c73  561</span>    <s\n-00017770: 7061 6e20 636c 6173 733d 2263 6f6d 6d65  pan class=\"comme\n-00017780: 6e74 223e 2f2f 2020 4964 656e 7469 6679  nt\">//  Identify\n-00017790: 2f67 6174 6865 7220 6368 696c 6420 7368  /gather child sh\n-000177a0: 6172 706e 6573 7320 746f 2063 6f6d 6269  arpness to combi\n-000177b0: 6e65 206d 6173 6b73 2066 6f72 2074 6865  ne masks for the\n-000177c0: 2074 776f 2064 6966 6665 7269 6e67 2052   two differing R\n-000177d0: 756c 6573 3a3c 2f73 7061 6e3e 3c2f 6469  ules:</span></di\n-000177e0: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n-000177f0: 696e 6522 3e3c 6120 6964 3d22 6c30 3035  ine\"><a id=\"l005\n-00017800: 3632 2220 6e61 6d65 3d22 6c30 3035 3632  62\" name=\"l00562\n-00017810: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n-00017820: 733d 226c 696e 656e 6f22 3e20 2035 3632  s=\"lineno\">  562\n-00017830: 3c2f 7370 616e 3e20 2020 203c 7370 616e  </span>    <span\n-00017840: 2063 6c61 7373 3d22 636f 6d6d 656e 7422   class=\"comment\"\n-00017850: 3e2f 2f3c 2f73 7061 6e3e 3c2f 6469 763e  >//</span></div>\n-00017860: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n-00017870: 6522 3e3c 6120 6964 3d22 6c30 3035 3633  e\"><a id=\"l00563\n-00017880: 2220 6e61 6d65 3d22 6c30 3035 3633 223e  \" name=\"l00563\">\n-00017890: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n-000178a0: 226c 696e 656e 6f22 3e20 2035 3633 3c2f  \"lineno\">  563</\n-000178b0: 7370 616e 3e20 2020 203c 6120 636c 6173  span>    <a clas\n-000178c0: 733d 2263 6f64 6520 686c 5f63 6c61 7373  s=\"code hl_class\n-000178d0: 2220 6872 6566 3d22 6130 3133 3333 2e68  \" href=\"a01333.h\n-000178e0: 746d 6c22 3e43 7265 6173 653c 2f61 3e20  tml\">Crease</a> \n-000178f0: 6372 6561 7365 285f 6f70 7469 6f6e 7329  crease(_options)\n-00017900: 3b3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ;</div>.<div cla\n-00017910: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n-00017920: 226c 3030 3536 3422 206e 616d 653d 226c  \"l00564\" name=\"l\n-00017930: 3030 3536 3422 3e3c 2f61 3e3c 7370 616e  00564\"></a><span\n-00017940: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n-00017950: 2020 3536 343c 2f73 7061 6e3e 203c 2f64    564</span> </d\n-00017960: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n-00017970: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n-00017980: 3536 3522 206e 616d 653d 226c 3030 3536  565\" name=\"l0056\n-00017990: 3522 3e3c 2f61 3e3c 7370 616e 2063 6c61  5\"></a><span cla\n-000179a0: 7373 3d22 6c69 6e65 6e6f 223e 2020 3536  ss=\"lineno\">  56\n-000179b0: 353c 2f73 7061 6e3e 2020 2020 3c73 7061  5</span>    <spa\n-000179c0: 6e20 636c 6173 733d 226b 6579 776f 7264  n class=\"keyword\n-000179d0: 7479 7065 223e 666c 6f61 743c 2f73 7061  type\">float</spa\n-000179e0: 6e3e 202a 2063 4564 6765 5368 6172 706e  n> * cEdgeSharpn\n-000179f0: 6573 7342 7566 6665 7220 3d20 283c 7370  essBuffer = (<sp\n-00017a00: 616e 2063 6c61 7373 3d22 6b65 7977 6f72  an class=\"keywor\n-00017a10: 6474 7970 6522 3e66 6c6f 6174 3c2f 7370  dtype\">float</sp\n-00017a20: 616e 3e20 2a29 616c 6c6f 6361 2876 616c  an> *)alloca(val\n-00017a30: 656e 6365 2a3c 7370 616e 2063 6c61 7373  ence*<span class\n-00017a40: 3d22 6b65 7977 6f72 6422 3e73 697a 656f  =\"keyword\">sizeo\n-00017a50: 663c 2f73 7061 6e3e 283c 7370 616e 2063  f</span>(<span c\n-00017a60: 6c61 7373 3d22 6b65 7977 6f72 6474 7970  lass=\"keywordtyp\n-00017a70: 6522 3e66 6c6f 6174 3c2f 7370 616e 3e29  e\">float</span>)\n-00017a80: 292c 3c2f 6469 763e 0a3c 6469 7620 636c  ),</div>.<div cl\n-00017a90: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n-00017aa0: 3d22 6c30 3035 3636 2220 6e61 6d65 3d22  =\"l00566\" name=\"\n-00017ab0: 6c30 3035 3636 223e 3c2f 613e 3c73 7061  l00566\"></a><spa\n-00017ac0: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n-00017ad0: 3e20 2035 3636 3c2f 7370 616e 3e20 2020  >  566</span>   \n-00017ae0: 2020 2020 2020 202a 2063 4564 6765 5368         * cEdgeSh\n-00017af0: 6172 706e 6573 7320 3d20 7665 7274 6578  arpness = vertex\n-00017b00: 2e47 6574 4368 696c 6453 6861 7270 6e65  .GetChildSharpne\n-00017b10: 7373 5065 7245 6467 6528 6372 6561 7365  ssPerEdge(crease\n-00017b20: 2c20 6345 6467 6553 6861 7270 6e65 7373  , cEdgeSharpness\n-00017b30: 4275 6666 6572 292c 3c2f 6469 763e 0a3c  Buffer),</div>.<\n-00017b40: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n-00017b50: 3e3c 6120 6964 3d22 6c30 3035 3637 2220  ><a id=\"l00567\" \n-00017b60: 6e61 6d65 3d22 6c30 3035 3637 223e 3c2f  name=\"l00567\"></\n-00017b70: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n-00017b80: 696e 656e 6f22 3e20 2035 3637 3c2f 7370  ineno\">  567</sp\n-00017b90: 616e 3e20 2020 2020 2020 2020 2020 2063  an>            c\n-00017ba0: 5665 7274 6578 5368 6172 706e 6573 7320  VertexSharpness \n-00017bb0: 3d20 7665 7274 6578 2e47 6574 4368 696c  = vertex.GetChil\n-00017bc0: 6453 6861 7270 6e65 7373 2863 7265 6173  dSharpness(creas\n-00017bd0: 6529 3b3c 2f64 6976 3e0a 3c64 6976 2063  e);</div>.<div c\n-00017be0: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n-00017bf0: 643d 226c 3030 3536 3822 206e 616d 653d  d=\"l00568\" name=\n-00017c00: 226c 3030 3536 3822 3e3c 2f61 3e3c 7370  \"l00568\"></a><sp\n-00017c10: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n-00017c20: 223e 2020 3536 383c 2f73 7061 6e3e 203c  \">  568</span> <\n-00017c30: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n-00017c40: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n-00017c50: 3030 3536 3922 206e 616d 653d 226c 3030  00569\" name=\"l00\n-00017c60: 3536 3922 3e3c 2f61 3e3c 7370 616e 2063  569\"></a><span c\n-00017c70: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n-00017c80: 3536 393c 2f73 7061 6e3e 2020 2020 3c73  569</span>    <s\n-00017c90: 7061 6e20 636c 6173 733d 226b 6579 776f  pan class=\"keywo\n-00017ca0: 7264 666c 6f77 223e 6966 3c2f 7370 616e  rdflow\">if</span\n-00017cb0: 3e20 2863 5275 6c65 203d 3d20 3c61 2063  > (cRule == <a c\n-00017cc0: 6c61 7373 3d22 636f 6465 2068 6c5f 656e  lass=\"code hl_en\n-00017cd0: 756d 7661 6c75 6522 2068 7265 663d 2261  umvalue\" href=\"a\n-00017ce0: 3031 3333 332e 6874 6d6c 2361 3131 6663  01333.html#a11fc\n-00017cf0: 6435 3165 6638 3631 3138 6636 3565 3630  d51ef86118f65e60\n-00017d00: 3363 3134 3734 3337 3761 3738 6162 3239  3c1474377a78ab29\n-00017d10: 3961 6566 6232 3630 3133 6137 3964 3532  9aefb26013a79d52\n-00017d20: 3139 3161 3738 3837 6665 6135 3322 3e43  191a7887fea53\">C\n-00017d30: 7265 6173 653a 3a52 554c 455f 554e 4b4e  rease::RULE_UNKN\n-00017d40: 4f57 4e3c 2f61 3e29 207b 3c2f 6469 763e  OWN</a>) {</div>\n-00017d50: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n-00017d60: 6522 3e3c 6120 6964 3d22 6c30 3035 3730  e\"><a id=\"l00570\n-00017d70: 2220 6e61 6d65 3d22 6c30 3035 3730 223e  \" name=\"l00570\">\n-00017d80: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n-00017d90: 226c 696e 656e 6f22 3e20 2035 3730 3c2f  \"lineno\">  570</\n-00017da0: 7370 616e 3e20 2020 2020 2020 2063 5275  span>        cRu\n-00017db0: 6c65 203d 2063 7265 6173 652e 3c61 2063  le = crease.<a c\n-00017dc0: 6c61 7373 3d22 636f 6465 2068 6c5f 6675  lass=\"code hl_fu\n-00017dd0: 6e63 7469 6f6e 2220 6872 6566 3d22 6130  nction\" href=\"a0\n-00017de0: 3133 3333 2e68 746d 6c23 6134 3165 6262  1333.html#a41ebb\n-00017df0: 3735 6432 3863 3539 3733 3332 3865 3065  75d28c5973328e0e\n-00017e00: 3338 3833 3439 3561 6562 6122 3e44 6574  3883495aeba\">Det\n-00017e10: 6572 6d69 6e65 5665 7274 6578 5665 7274  ermineVertexVert\n-00017e20: 6578 5275 6c65 3c2f 613e 2863 5665 7274  exRule</a>(cVert\n-00017e30: 6578 5368 6172 706e 6573 732c 2076 616c  exSharpness, val\n-00017e40: 656e 6365 2c20 6345 6467 6553 6861 7270  ence, cEdgeSharp\n-00017e50: 6e65 7373 293b 3c2f 6469 763e 0a3c 6469  ness);</div>.<di\n-00017e60: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n-00017e70: 6120 6964 3d22 6c30 3035 3731 2220 6e61  a id=\"l00571\" na\n-00017e80: 6d65 3d22 6c30 3035 3731 223e 3c2f 613e  me=\"l00571\"></a>\n-00017e90: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n-00017ea0: 656e 6f22 3e20 2035 3731 3c2f 7370 616e  eno\">  571</span\n-00017eb0: 3e20 2020 2020 2020 203c 7370 616e 2063  >        <span c\n-00017ec0: 6c61 7373 3d22 6b65 7977 6f72 6466 6c6f  lass=\"keywordflo\n-00017ed0: 7722 3e69 663c 2f73 7061 6e3e 2028 6352  w\">if</span> (cR\n-00017ee0: 756c 6520 3d3d 2070 5275 6c65 2920 3c73  ule == pRule) <s\n-00017ef0: 7061 6e20 636c 6173 733d 226b 6579 776f  pan class=\"keywo\n-00017f00: 7264 666c 6f77 223e 7265 7475 726e 3c2f  rdflow\">return</\n-00017f10: 7370 616e 3e3b 3c2f 6469 763e 0a3c 6469  span>;</div>.<di\n-00017f20: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n-00017f30: 6120 6964 3d22 6c30 3035 3732 2220 6e61  a id=\"l00572\" na\n-00017f40: 6d65 3d22 6c30 3035 3732 223e 3c2f 613e  me=\"l00572\"></a>\n-00017f50: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n-00017f60: 656e 6f22 3e20 2035 3732 3c2f 7370 616e  eno\">  572</span\n-00017f70: 3e20 2020 207d 3c2f 6469 763e 0a3c 6469  >    }</div>.<di\n-00017f80: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n-00017f90: 6120 6964 3d22 6c30 3035 3733 2220 6e61  a id=\"l00573\" na\n-00017fa0: 6d65 3d22 6c30 3035 3733 223e 3c2f 613e  me=\"l00573\"></a>\n-00017fb0: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n-00017fc0: 656e 6f22 3e20 2035 3733 3c2f 7370 616e  eno\">  573</span\n-00017fd0: 3e20 3c2f 6469 763e 0a3c 6469 7620 636c  > </div>.<div cl\n-00017fe0: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n-00017ff0: 3d22 6c30 3035 3734 2220 6e61 6d65 3d22  =\"l00574\" name=\"\n-00018000: 6c30 3035 3734 223e 3c2f 613e 3c73 7061  l00574\"></a><spa\n-00018010: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n-00018020: 3e20 2035 3734 3c2f 7370 616e 3e20 2020  >  574</span>   \n-00018030: 203c 7370 616e 2063 6c61 7373 3d22 636f   <span class=\"co\n-00018040: 6d6d 656e 7422 3e2f 2f3c 2f73 7061 6e3e  mment\">//</span>\n-00018050: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n-00018060: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n-00018070: 6c30 3035 3735 2220 6e61 6d65 3d22 6c30  l00575\" name=\"l0\n-00018080: 3035 3735 223e 3c2f 613e 3c73 7061 6e20  0575\"></a><span \n-00018090: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n-000180a0: 2035 3735 3c2f 7370 616e 3e20 2020 203c   575</span>    <\n-000180b0: 7370 616e 2063 6c61 7373 3d22 636f 6d6d  span class=\"comm\n-000180c0: 656e 7422 3e2f 2f20 2049 6e69 7469 616c  ent\">//  Initial\n-000180d0: 697a 6520 6120 6c6f 6361 6c20 6368 696c  ize a local chil\n-000180e0: 6420 6d61 736b 2c20 636f 6d70 7574 6520  d mask, compute \n-000180f0: 7468 6520 6672 6163 7469 6f6e 616c 2077  the fractional w\n-00018100: 6569 6768 7420 6672 6f6d 2070 6172 656e  eight from paren\n-00018110: 7420 616e 6420 6368 696c 643c 2f73 7061  t and child</spa\n-00018120: 6e3e 3c2f 6469 763e 0a3c 6469 7620 636c  n></div>.<div cl\n-00018130: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n-00018140: 3d22 6c30 3035 3736 2220 6e61 6d65 3d22  =\"l00576\" name=\"\n-00018150: 6c30 3035 3736 223e 3c2f 613e 3c73 7061  l00576\"></a><spa\n-00018160: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n-00018170: 3e20 2035 3736 3c2f 7370 616e 3e20 2020  >  576</span>   \n-00018180: 203c 7370 616e 2063 6c61 7373 3d22 636f   <span class=\"co\n-00018190: 6d6d 656e 7422 3e2f 2f20 2073 6861 7270  mment\">//  sharp\n-000181a0: 6e65 7373 2076 616c 7565 7320 616e 6420  ness values and \n-000181b0: 636f 6d62 696e 6520 7468 6520 7477 6f20  combine the two \n-000181c0: 6d61 736b 733a 3c2f 7370 616e 3e3c 2f64  masks:</span></d\n-000181d0: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n-000181e0: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n-000181f0: 3537 3722 206e 616d 653d 226c 3030 3537  577\" name=\"l0057\n-00018200: 3722 3e3c 2f61 3e3c 7370 616e 2063 6c61  7\"></a><span cla\n-00018210: 7373 3d22 6c69 6e65 6e6f 223e 2020 3537  ss=\"lineno\">  57\n-00018220: 373c 2f73 7061 6e3e 2020 2020 3c73 7061  7</span>    <spa\n-00018230: 6e20 636c 6173 733d 2263 6f6d 6d65 6e74  n class=\"comment\n-00018240: 223e 2f2f 3c2f 7370 616e 3e3c 2f64 6976  \">//</span></div\n-00018250: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n-00018260: 6e65 223e 3c61 2069 643d 226c 3030 3537  ne\"><a id=\"l0057\n-00018270: 3822 206e 616d 653d 226c 3030 3537 3822  8\" name=\"l00578\"\n-00018280: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n-00018290: 3d22 6c69 6e65 6e6f 223e 2020 3537 383c  =\"lineno\">  578<\n-000182a0: 2f73 7061 6e3e 2020 2020 3c73 7061 6e20  /span>    <span \n-000182b0: 636c 6173 733d 226b 6579 776f 7264 223e  class=\"keyword\">\n-000182c0: 7479 7065 6465 663c 2f73 7061 6e3e 203c  typedef</span> <\n-000182d0: 7370 616e 2063 6c61 7373 3d22 6b65 7977  span class=\"keyw\n-000182e0: 6f72 6422 3e74 7970 656e 616d 653c 2f73  ord\">typename</s\n-000182f0: 7061 6e3e 204d 4153 4b3a 3a57 6569 6768  pan> MASK::Weigh\n-00018300: 7420 5765 6967 6874 3b3c 2f64 6976 3e0a  t Weight;</div>.\n-00018310: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n-00018320: 223e 3c61 2069 643d 226c 3030 3537 3922  \"><a id=\"l00579\"\n-00018330: 206e 616d 653d 226c 3030 3537 3922 3e3c   name=\"l00579\"><\n-00018340: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n-00018350: 6c69 6e65 6e6f 223e 2020 3537 393c 2f73  lineno\">  579</s\n-00018360: 7061 6e3e 203c 2f64 6976 3e0a 3c64 6976  pan> </div>.<div\n-00018370: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n-00018380: 2069 643d 226c 3030 3538 3022 206e 616d   id=\"l00580\" nam\n-00018390: 653d 226c 3030 3538 3022 3e3c 2f61 3e3c  e=\"l00580\"></a><\n-000183a0: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n-000183b0: 6e6f 223e 2020 3538 303c 2f73 7061 6e3e  no\">  580</span>\n-000183c0: 2020 2020 5765 6967 6874 202a 2063 4d61      Weight * cMa\n-000183d0: 736b 5765 6967 6874 7320 3d20 2857 6569  skWeights = (Wei\n-000183e0: 6768 7420 2a29 616c 6c6f 6361 2828 3120  ght *)alloca((1 \n-000183f0: 2b20 3220 2a20 7661 6c65 6e63 6529 2a3c  + 2 * valence)*<\n-00018400: 7370 616e 2063 6c61 7373 3d22 6b65 7977  span class=\"keyw\n-00018410: 6f72 6422 3e73 697a 656f 663c 2f73 7061  ord\">sizeof</spa\n-00018420: 6e3e 2857 6569 6768 7429 293b 3c2f 6469  n>(Weight));</di\n-00018430: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n-00018440: 696e 6522 3e3c 6120 6964 3d22 6c30 3035  ine\"><a id=\"l005\n-00018450: 3831 2220 6e61 6d65 3d22 6c30 3035 3831  81\" name=\"l00581\n-00018460: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n-00018470: 733d 226c 696e 656e 6f22 3e20 2035 3831  s=\"lineno\">  581\n-00018480: 3c2f 7370 616e 3e20 2020 203c 6120 636c  </span>    <a cl\n-00018490: 6173 733d 2263 6f64 6520 686c 5f63 6c61  ass=\"code hl_cla\n-000184a0: 7373 2220 6872 6566 3d22 6130 3133 3435  ss\" href=\"a01345\n-000184b0: 2e68 746d 6c22 3e4c 6f63 616c 4d61 736b  .html\">LocalMask\n-000184c0: 266c 743b 5765 6967 6874 2667 743b 3c2f  &lt;Weight&gt;</\n-000184d0: 613e 2063 4d61 736b 2863 4d61 736b 5765  a> cMask(cMaskWe\n-000184e0: 6967 6874 732c 2063 4d61 736b 5765 6967  ights, cMaskWeig\n-000184f0: 6874 7320 2b20 312c 2063 4d61 736b 5765  hts + 1, cMaskWe\n-00018500: 6967 6874 7320 2b20 3120 2b20 7661 6c65  ights + 1 + vale\n-00018510: 6e63 6529 3b3c 2f64 6976 3e0a 3c64 6976  nce);</div>.<div\n-00018520: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n-00018530: 2069 643d 226c 3030 3538 3222 206e 616d   id=\"l00582\" nam\n-00018540: 653d 226c 3030 3538 3222 3e3c 2f61 3e3c  e=\"l00582\"></a><\n-00018550: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n-00018560: 6e6f 223e 2020 3538 323c 2f73 7061 6e3e  no\">  582</span>\n-00018570: 203c 2f64 6976 3e0a 3c64 6976 2063 6c61   </div>.<div cla\n-00018580: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n-00018590: 226c 3030 3538 3322 206e 616d 653d 226c  \"l00583\" name=\"l\n-000185a0: 3030 3538 3322 3e3c 2f61 3e3c 7370 616e  00583\"></a><span\n-000185b0: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n-000185c0: 2020 3538 333c 2f73 7061 6e3e 2020 2020    583</span>    \n-000185d0: 3c73 7061 6e20 636c 6173 733d 226b 6579  <span class=\"key\n-000185e0: 776f 7264 666c 6f77 223e 6966 3c2f 7370  wordflow\">if</sp\n-000185f0: 616e 3e20 2828 6352 756c 6520 3d3d 203c  an> ((cRule == <\n-00018600: 6120 636c 6173 733d 2263 6f64 6520 686c  a class=\"code hl\n-00018610: 5f65 6e75 6d76 616c 7565 2220 6872 6566  _enumvalue\" href\n-00018620: 3d22 6130 3133 3333 2e68 746d 6c23 6131  =\"a01333.html#a1\n-00018630: 3166 6364 3531 6566 3836 3131 3866 3635  1fcd51ef86118f65\n-00018640: 6536 3033 6331 3437 3433 3737 6137 3861  e603c1474377a78a\n-00018650: 3631 6431 3337 6638 3636 3939 3765 6433  61d137f866997ed3\n-00018660: 3639 3365 3366 6361 6437 3664 6566 3566  693e3fcad76def5f\n-00018670: 223e 4372 6561 7365 3a3a 5255 4c45 5f53  \">Crease::RULE_S\n-00018680: 4d4f 4f54 483c 2f61 3e29 207c 7c20 2863  MOOTH</a>) || (c\n-00018690: 5275 6c65 203d 3d20 3c61 2063 6c61 7373  Rule == <a class\n-000186a0: 3d22 636f 6465 2068 6c5f 656e 756d 7661  =\"code hl_enumva\n-000186b0: 6c75 6522 2068 7265 663d 2261 3031 3333  lue\" href=\"a0133\n-000186c0: 332e 6874 6d6c 2361 3131 6663 6435 3165  3.html#a11fcd51e\n-000186d0: 6638 3631 3138 6636 3565 3630 3363 3134  f86118f65e603c14\n-000186e0: 3734 3337 3761 3738 6134 3334 3639 6332  74377a78a43469c2\n-000186f0: 3964 3835 3739 6136 3362 6331 6436 3234  9d8579a63bc1d624\n-00018700: 3764 3236 3234 3739 3922 3e43 7265 6173  7d2624799\">Creas\n-00018710: 653a 3a52 554c 455f 4441 5254 3c2f 613e  e::RULE_DART</a>\n-00018720: 2929 207b 3c2f 6469 763e 0a3c 6469 7620  )) {</div>.<div \n-00018730: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n-00018740: 6964 3d22 6c30 3035 3834 2220 6e61 6d65  id=\"l00584\" name\n-00018750: 3d22 6c30 3035 3834 223e 3c2f 613e 3c73  =\"l00584\"></a><s\n-00018760: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n-00018770: 6f22 3e20 2035 3834 3c2f 7370 616e 3e20  o\">  584</span> \n-00018780: 2020 2020 2020 2061 7373 6967 6e53 6d6f         assignSmo\n-00018790: 6f74 684d 6173 6b46 6f72 5665 7274 6578  othMaskForVertex\n-000187a0: 2876 6572 7465 782c 2063 4d61 736b 293b  (vertex, cMask);\n-000187b0: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n-000187c0: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n-000187d0: 6c30 3035 3835 2220 6e61 6d65 3d22 6c30  l00585\" name=\"l0\n-000187e0: 3035 3835 223e 3c2f 613e 3c73 7061 6e20  0585\"></a><span \n-000187f0: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n-00018800: 2035 3835 3c2f 7370 616e 3e20 2020 207d   585</span>    }\n-00018810: 203c 7370 616e 2063 6c61 7373 3d22 6b65   <span class=\"ke\n-00018820: 7977 6f72 6466 6c6f 7722 3e65 6c73 653c  ywordflow\">else<\n-00018830: 2f73 7061 6e3e 203c 7370 616e 2063 6c61  /span> <span cla\n-00018840: 7373 3d22 6b65 7977 6f72 6466 6c6f 7722  ss=\"keywordflow\"\n-00018850: 3e69 663c 2f73 7061 6e3e 2028 6352 756c  >if</span> (cRul\n-00018860: 6520 3d3d 203c 6120 636c 6173 733d 2263  e == <a class=\"c\n-00018870: 6f64 6520 686c 5f65 6e75 6d76 616c 7565  ode hl_enumvalue\n-00018880: 2220 6872 6566 3d22 6130 3133 3333 2e68  \" href=\"a01333.h\n-00018890: 746d 6c23 6131 3166 6364 3531 6566 3836  tml#a11fcd51ef86\n-000188a0: 3131 3866 3635 6536 3033 6331 3437 3433  118f65e603c14743\n-000188b0: 3737 6137 3861 3936 3666 6131 6165 3861  77a78a966fa1ae8a\n-000188c0: 6562 3835 3837 6334 3938 6366 3661 3932  eb8587c498cf6a92\n-000188d0: 6363 3333 3335 223e 4372 6561 7365 3a3a  cc3335\">Crease::\n-000188e0: 5255 4c45 5f43 5245 4153 453c 2f61 3e29  RULE_CREASE</a>)\n-000188f0: 207b 3c2f 6469 763e 0a3c 6469 7620 636c   {</div>.<div cl\n-00018900: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n-00018910: 3d22 6c30 3035 3836 2220 6e61 6d65 3d22  =\"l00586\" name=\"\n-00018920: 6c30 3035 3836 223e 3c2f 613e 3c73 7061  l00586\"></a><spa\n-00018930: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n-00018940: 3e20 2035 3836 3c2f 7370 616e 3e20 2020  >  586</span>   \n-00018950: 2020 2020 203c 7370 616e 2063 6c61 7373       <span class\n-00018960: 3d22 6b65 7977 6f72 6474 7970 6522 3e69  =\"keywordtype\">i\n-00018970: 6e74 3c2f 7370 616e 3e20 6372 6561 7365  nt</span> crease\n-00018980: 456e 6473 5b32 5d3b 3c2f 6469 763e 0a3c  Ends[2];</div>.<\n-00018990: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n-000189a0: 3e3c 6120 6964 3d22 6c30 3035 3837 2220  ><a id=\"l00587\" \n-000189b0: 6e61 6d65 3d22 6c30 3035 3837 223e 3c2f  name=\"l00587\"></\n-000189c0: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n-000189d0: 696e 656e 6f22 3e20 2035 3837 3c2f 7370  ineno\">  587</sp\n-000189e0: 616e 3e20 2020 2020 2020 203c 6120 636c  an>        <a cl\n-000189f0: 6173 733d 2263 6f64 6520 686c 5f63 6c61  ass=\"code hl_cla\n-00018a00: 7373 2220 6872 6566 3d22 6130 3133 3333  ss\" href=\"a01333\n-00018a10: 2e68 746d 6c22 3e43 7265 6173 653c 2f61  .html\">Crease</a\n-00018a20: 3e28 5f6f 7074 696f 6e73 292e 3c61 2063  >(_options).<a c\n-00018a30: 6c61 7373 3d22 636f 6465 2068 6c5f 6675  lass=\"code hl_fu\n-00018a40: 6e63 7469 6f6e 2220 6872 6566 3d22 6130  nction\" href=\"a0\n-00018a50: 3133 3333 2e68 746d 6c23 6133 3632 6632  1333.html#a362f2\n-00018a60: 3265 3763 6261 3161 3062 3966 3633 6539  2e7cba1a0b9f63e9\n-00018a70: 6230 3037 6331 3966 3239 3622 3e47 6574  b007c19f296\">Get\n-00018a80: 5368 6172 7045 6467 6550 6169 724f 6643  SharpEdgePairOfC\n-00018a90: 7265 6173 653c 2f61 3e28 6345 6467 6553  rease</a>(cEdgeS\n-00018aa0: 6861 7270 6e65 7373 2c20 7661 6c65 6e63  harpness, valenc\n-00018ab0: 652c 2063 7265 6173 6545 6e64 7329 3b3c  e, creaseEnds);<\n-00018ac0: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n-00018ad0: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n-00018ae0: 3030 3538 3822 206e 616d 653d 226c 3030  00588\" name=\"l00\n-00018af0: 3538 3822 3e3c 2f61 3e3c 7370 616e 2063  588\"></a><span c\n-00018b00: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n-00018b10: 3538 383c 2f73 7061 6e3e 203c 2f64 6976  588</span> </div\n-00018b20: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n-00018b30: 6e65 223e 3c61 2069 643d 226c 3030 3538  ne\"><a id=\"l0058\n-00018b40: 3922 206e 616d 653d 226c 3030 3538 3922  9\" name=\"l00589\"\n-00018b50: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n-00018b60: 3d22 6c69 6e65 6e6f 223e 2020 3538 393c  =\"lineno\">  589<\n-00018b70: 2f73 7061 6e3e 2020 2020 2020 2020 6173  /span>        as\n-00018b80: 7369 676e 4372 6561 7365 4d61 736b 466f  signCreaseMaskFo\n-00018b90: 7256 6572 7465 7828 7665 7274 6578 2c20  rVertex(vertex, \n-00018ba0: 634d 6173 6b2c 2063 7265 6173 6545 6e64  cMask, creaseEnd\n-00018bb0: 7329 3b3c 2f64 6976 3e0a 3c64 6976 2063  s);</div>.<div c\n-00018bc0: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n-00018bd0: 643d 226c 3030 3539 3022 206e 616d 653d  d=\"l00590\" name=\n-00018be0: 226c 3030 3539 3022 3e3c 2f61 3e3c 7370  \"l00590\"></a><sp\n-00018bf0: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n-00018c00: 223e 2020 3539 303c 2f73 7061 6e3e 2020  \">  590</span>  \n-00018c10: 2020 7d20 3c73 7061 6e20 636c 6173 733d    } <span class=\n-00018c20: 226b 6579 776f 7264 666c 6f77 223e 656c  \"keywordflow\">el\n-00018c30: 7365 3c2f 7370 616e 3e20 7b3c 2f64 6976  se</span> {</div\n-00018c40: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n-00018c50: 6e65 223e 3c61 2069 643d 226c 3030 3539  ne\"><a id=\"l0059\n-00018c60: 3122 206e 616d 653d 226c 3030 3539 3122  1\" name=\"l00591\"\n-00018c70: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n-00018c80: 3d22 6c69 6e65 6e6f 223e 2020 3539 313c  =\"lineno\">  591<\n-00018c90: 2f73 7061 6e3e 2020 2020 2020 2020 6173  /span>        as\n-00018ca0: 7369 676e 436f 726e 6572 4d61 736b 466f  signCornerMaskFo\n-00018cb0: 7256 6572 7465 7828 7665 7274 6578 2c20  rVertex(vertex, \n-00018cc0: 634d 6173 6b29 3b3c 2f64 6976 3e0a 3c64  cMask);</div>.<d\n-00018cd0: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n-00018ce0: 3c61 2069 643d 226c 3030 3539 3222 206e  <a id=\"l00592\" n\n-00018cf0: 616d 653d 226c 3030 3539 3222 3e3c 2f61  ame=\"l00592\"></a\n-00018d00: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n-00018d10: 6e65 6e6f 223e 2020 3539 323c 2f73 7061  neno\">  592</spa\n-00018d20: 6e3e 2020 2020 7d3c 2f64 6976 3e0a 3c64  n>    }</div>.<d\n-00018d30: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n-00018d40: 3c61 2069 643d 226c 3030 3539 3322 206e  <a id=\"l00593\" n\n-00018d50: 616d 653d 226c 3030 3539 3322 3e3c 2f61  ame=\"l00593\"></a\n-00018d60: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n-00018d70: 6e65 6e6f 223e 2020 3539 333c 2f73 7061  neno\">  593</spa\n-00018d80: 6e3e 203c 2f64 6976 3e0a 3c64 6976 2063  n> </div>.<div c\n-00018d90: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n-00018da0: 643d 226c 3030 3539 3422 206e 616d 653d  d=\"l00594\" name=\n-00018db0: 226c 3030 3539 3422 3e3c 2f61 3e3c 7370  \"l00594\"></a><sp\n-00018dc0: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n-00018dd0: 223e 2020 3539 343c 2f73 7061 6e3e 2020  \">  594</span>  \n-00018de0: 2020 5765 6967 6874 2070 5765 6967 6874    Weight pWeight\n-00018df0: 203d 2063 7265 6173 652e 3c61 2063 6c61   = crease.<a cla\n-00018e00: 7373 3d22 636f 6465 2068 6c5f 6675 6e63  ss=\"code hl_func\n-00018e10: 7469 6f6e 2220 6872 6566 3d22 6130 3133  tion\" href=\"a013\n-00018e20: 3333 2e68 746d 6c23 6162 3133 6636 3534  33.html#ab13f654\n-00018e30: 6632 3565 6637 3632 3833 3936 6664 3930  f25ef7628396fd90\n-00018e40: 3232 3931 6238 6639 3622 3e43 6f6d 7075  2291b8f96\">Compu\n-00018e50: 7465 4672 6163 7469 6f6e 616c 5765 6967  teFractionalWeig\n-00018e60: 6874 4174 5665 7274 6578 3c2f 613e 2870  htAtVertex</a>(p\n-00018e70: 5665 7274 6578 5368 6172 706e 6573 732c  VertexSharpness,\n-00018e80: 2063 5665 7274 6578 5368 6172 706e 6573   cVertexSharpnes\n-00018e90: 732c 3c2f 6469 763e 0a3c 6469 7620 636c  s,</div>.<div cl\n-00018ea0: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n-00018eb0: 3d22 6c30 3035 3935 2220 6e61 6d65 3d22  =\"l00595\" name=\"\n-00018ec0: 6c30 3035 3935 223e 3c2f 613e 3c73 7061  l00595\"></a><spa\n-00018ed0: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n-00018ee0: 3e20 2035 3935 3c2f 7370 616e 3e20 2020  >  595</span>   \n-00018ef0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00018f00: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00018f10: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00018f20: 7661 6c65 6e63 652c 2070 4564 6765 5368  valence, pEdgeSh\n-00018f30: 6172 706e 6573 732c 2063 4564 6765 5368  arpness, cEdgeSh\n-00018f40: 6172 706e 6573 7329 3b3c 2f64 6976 3e0a  arpness);</div>.\n-00018f50: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n-00018f60: 223e 3c61 2069 643d 226c 3030 3539 3622  \"><a id=\"l00596\"\n-00018f70: 206e 616d 653d 226c 3030 3539 3622 3e3c   name=\"l00596\"><\n-00018f80: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n-00018f90: 6c69 6e65 6e6f 223e 2020 3539 363c 2f73  lineno\">  596</s\n-00018fa0: 7061 6e3e 2020 2020 5765 6967 6874 2063  pan>    Weight c\n-00018fb0: 5765 6967 6874 203d 2031 2e30 6620 2d20  Weight = 1.0f - \n-00018fc0: 7057 6569 6768 743b 3c2f 6469 763e 0a3c  pWeight;</div>.<\n-00018fd0: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n-00018fe0: 3e3c 6120 6964 3d22 6c30 3035 3937 2220  ><a id=\"l00597\" \n-00018ff0: 6e61 6d65 3d22 6c30 3035 3937 223e 3c2f  name=\"l00597\"></\n-00019000: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n-00019010: 696e 656e 6f22 3e20 2035 3937 3c2f 7370  ineno\">  597</sp\n-00019020: 616e 3e20 3c2f 6469 763e 0a3c 6469 7620  an> </div>.<div \n-00019030: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n-00019040: 6964 3d22 6c30 3035 3938 2220 6e61 6d65  id=\"l00598\" name\n-00019050: 3d22 6c30 3035 3938 223e 3c2f 613e 3c73  =\"l00598\"></a><s\n-00019060: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n-00019070: 6f22 3e20 2035 3938 3c2f 7370 616e 3e20  o\">  598</span> \n-00019080: 2020 2063 4d61 736b 2e3c 6120 636c 6173     cMask.<a clas\n-00019090: 733d 2263 6f64 6520 686c 5f66 756e 6374  s=\"code hl_funct\n-000190a0: 696f 6e22 2068 7265 663d 2261 3031 3334  ion\" href=\"a0134\n-000190b0: 352e 6874 6d6c 2361 3565 6438 3030 6539  5.html#a5ed800e9\n-000190c0: 6437 3032 6635 3761 6539 3738 6665 3630  d702f57ae978fe60\n-000190d0: 6261 3261 3337 6463 223e 436f 6d62 696e  ba2a37dc\">Combin\n-000190e0: 6556 6572 7465 7856 6572 7465 784d 6173  eVertexVertexMas\n-000190f0: 6b73 3c2f 613e 2863 5765 6967 6874 2c20  ks</a>(cWeight, \n-00019100: 7057 6569 6768 742c 206d 6173 6b29 3b3c  pWeight, mask);<\n-00019110: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n-00019120: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n-00019130: 3030 3539 3922 206e 616d 653d 226c 3030  00599\" name=\"l00\n-00019140: 3539 3922 3e3c 2f61 3e3c 7370 616e 2063  599\"></a><span c\n-00019150: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n-00019160: 3539 393c 2f73 7061 6e3e 7d3c 2f64 6976  599</span>}</div\n-00019170: 3e0a 3c2f 6469 763e 0a3c 6469 7620 636c  >.</div>.<div cl\n-00019180: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n-00019190: 3d22 6c30 3036 3030 2220 6e61 6d65 3d22  =\"l00600\" name=\"\n-000191a0: 6c30 3036 3030 223e 3c2f 613e 3c73 7061  l00600\"></a><spa\n-000191b0: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n-000191c0: 3e20 2036 3030 3c2f 7370 616e 3e20 3c2f  >  600</span> </\n-000191d0: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n-000191e0: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n-000191f0: 3036 3031 2220 6e61 6d65 3d22 6c30 3036  0601\" name=\"l006\n-00019200: 3031 223e 3c2f 613e 3c73 7061 6e20 636c  01\"></a><span cl\n-00019210: 6173 733d 226c 696e 656e 6f22 3e20 2036  ass=\"lineno\">  6\n-00019220: 3031 3c2f 7370 616e 3e3c 7370 616e 2063  01</span><span c\n-00019230: 6c61 7373 3d22 636f 6d6d 656e 7422 3e2f  lass=\"comment\">/\n-00019240: 2f3c 2f73 7061 6e3e 3c2f 6469 763e 0a3c  /</span></div>.<\n-00019250: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n-00019260: 3e3c 6120 6964 3d22 6c30 3036 3032 2220  ><a id=\"l00602\" \n-00019270: 6e61 6d65 3d22 6c30 3036 3032 223e 3c2f  name=\"l00602\"></\n-00019280: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n-00019290: 696e 656e 6f22 3e20 2036 3032 3c2f 7370  ineno\">  602</sp\n-000192a0: 616e 3e3c 7370 616e 2063 6c61 7373 3d22  an><span class=\"\n-000192b0: 636f 6d6d 656e 7422 3e2f 2f20 2054 6865  comment\">//  The\n-000192c0: 2063 6f6d 7075 7461 7469 6f6e 206f 6620   computation of \n-000192d0: 6c69 6d69 7420 6d61 736b 7320 666f 7220  limit masks for \n-000192e0: 7665 7274 6963 6573 3a3c 2f73 7061 6e3e  vertices:</span>\n-000192f0: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n-00019300: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n-00019310: 6c30 3036 3033 2220 6e61 6d65 3d22 6c30  l00603\" name=\"l0\n-00019320: 3036 3033 223e 3c2f 613e 3c73 7061 6e20  0603\"></a><span \n-00019330: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n-00019340: 2036 3033 3c2f 7370 616e 3e3c 7370 616e   603</span><span\n-00019350: 2063 6c61 7373 3d22 636f 6d6d 656e 7422   class=\"comment\"\n-00019360: 3e2f 2f3c 2f73 7061 6e3e 3c2f 6469 763e  >//</span></div>\n-00019370: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n-00019380: 6522 3e3c 6120 6964 3d22 6c30 3036 3034  e\"><a id=\"l00604\n-00019390: 2220 6e61 6d65 3d22 6c30 3036 3034 223e  \" name=\"l00604\">\n-000193a0: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n-000193b0: 226c 696e 656e 6f22 3e20 2036 3034 3c2f  \"lineno\">  604</\n-000193c0: 7370 616e 3e3c 7370 616e 2063 6c61 7373  span><span class\n-000193d0: 3d22 6b65 7977 6f72 6422 3e74 656d 706c  =\"keyword\">templ\n-000193e0: 6174 653c 2f73 7061 6e3e 2026 6c74 3b53  ate</span> &lt;S\n-000193f0: 6368 656d 6554 7970 6520 5343 4845 4d45  chemeType SCHEME\n-00019400: 2667 743b 3c2f 6469 763e 0a3c 6469 7620  &gt;</div>.<div \n-00019410: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n-00019420: 6964 3d22 6c30 3036 3035 2220 6e61 6d65  id=\"l00605\" name\n-00019430: 3d22 6c30 3036 3035 223e 3c2f 613e 3c73  =\"l00605\"></a><s\n-00019440: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n-00019450: 6f22 3e20 2036 3035 3c2f 7370 616e 3e3c  o\">  605</span><\n-00019460: 7370 616e 2063 6c61 7373 3d22 6b65 7977  span class=\"keyw\n-00019470: 6f72 6422 3e74 656d 706c 6174 653c 2f73  ord\">template</s\n-00019480: 7061 6e3e 2026 6c74 3b3c 7370 616e 2063  pan> &lt;<span c\n-00019490: 6c61 7373 3d22 6b65 7977 6f72 6422 3e74  lass=\"keyword\">t\n-000194a0: 7970 656e 616d 653c 2f73 7061 6e3e 2056  ypename</span> V\n-000194b0: 4552 5445 582c 203c 7370 616e 2063 6c61  ERTEX, <span cla\n-000194c0: 7373 3d22 6b65 7977 6f72 6422 3e74 7970  ss=\"keyword\">typ\n-000194d0: 656e 616d 653c 2f73 7061 6e3e 204d 4153  ename</span> MAS\n-000194e0: 4b26 6774 3b3c 2f64 6976 3e0a 3c64 6976  K&gt;</div>.<div\n-000194f0: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n-00019500: 2069 643d 226c 3030 3630 3622 206e 616d   id=\"l00606\" nam\n-00019510: 653d 226c 3030 3630 3622 3e3c 2f61 3e3c  e=\"l00606\"></a><\n-00019520: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n-00019530: 6e6f 223e 2020 3630 363c 2f73 7061 6e3e  no\">  606</span>\n-00019540: 3c73 7061 6e20 636c 6173 733d 226b 6579  <span class=\"key\n-00019550: 776f 7264 7479 7065 223e 766f 6964 3c2f  wordtype\">void</\n-00019560: 7370 616e 3e3c 2f64 6976 3e0a 3c64 6976  span></div>.<div\n-00019570: 2063 6c61 7373 3d22 666f 6c64 6f70 656e   class=\"foldopen\n-00019580: 2220 6964 3d22 666f 6c64 6f70 656e 3030  \" id=\"foldopen00\n-00019590: 3630 3722 2064 6174 612d 7374 6172 743d  607\" data-start=\n-000195a0: 227b 2220 6461 7461 2d65 6e64 3d22 7d22  \"{\" data-end=\"}\"\n-000195b0: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n-000195c0: 6e65 223e 3c61 2069 643d 226c 3030 3630  ne\"><a id=\"l0060\n-000195d0: 3722 206e 616d 653d 226c 3030 3630 3722  7\" name=\"l00607\"\n-000195e0: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n-000195f0: 3d22 6c69 6e65 6e6f 223e 3c61 2063 6c61  =\"lineno\"><a cla\n-00019600: 7373 3d22 6c69 6e65 2220 6872 6566 3d22  ss=\"line\" href=\"\n-00019610: 6130 3133 3431 2e68 746d 6c23 6133 6338  a01341.html#a3c8\n-00019620: 6437 3633 6361 3138 6334 3537 6339 3336  d763ca18c457c936\n-00019630: 6462 3065 3437 3939 3734 3666 3222 3e20  db0e4799746f2\"> \n-00019640: 2036 3037 3c2f 613e 3c2f 7370 616e 3e3c   607</a></span><\n-00019650: 6120 636c 6173 733d 2263 6f64 6520 686c  a class=\"code hl\n-00019660: 5f66 756e 6374 696f 6e22 2068 7265 663d  _function\" href=\n-00019670: 2261 3031 3334 312e 6874 6d6c 2361 3363  \"a01341.html#a3c\n-00019680: 3864 3736 3363 6131 3863 3435 3763 3933  8d763ca18c457c93\n-00019690: 3664 6230 6534 3739 3937 3436 6632 223e  6db0e4799746f2\">\n-000196a0: 5363 6865 6d65 266c 743b 5343 4845 4d45  Scheme&lt;SCHEME\n-000196b0: 2667 743b 3a3a 436f 6d70 7574 6556 6572  &gt;::ComputeVer\n-000196c0: 7465 784c 696d 6974 4d61 736b 3c2f 613e  texLimitMask</a>\n-000196d0: 2856 4552 5445 5820 3c73 7061 6e20 636c  (VERTEX <span cl\n-000196e0: 6173 733d 226b 6579 776f 7264 223e 636f  ass=\"keyword\">co\n-000196f0: 6e73 743c 2f73 7061 6e3e 2661 6d70 3b20  nst</span>&amp; \n-00019700: 7665 7274 6578 2c3c 2f64 6976 3e0a 3c64  vertex,</div>.<d\n-00019710: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n-00019720: 3c61 2069 643d 226c 3030 3630 3822 206e  <a id=\"l00608\" n\n-00019730: 616d 653d 226c 3030 3630 3822 3e3c 2f61  ame=\"l00608\"></a\n-00019740: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n-00019750: 6e65 6e6f 223e 2020 3630 383c 2f73 7061  neno\">  608</spa\n-00019760: 6e3e 2020 2020 2020 2020 2020 2020 2020  n>              \n-00019770: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00019780: 2020 2020 2020 2020 204d 4153 4b26 616d           MASK&am\n-00019790: 703b 2020 2020 2020 2020 206d 6173 6b2c  p;         mask,\n-000197a0: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n-000197b0: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n-000197c0: 6c30 3036 3039 2220 6e61 6d65 3d22 6c30  l00609\" name=\"l0\n-000197d0: 3036 3039 223e 3c2f 613e 3c73 7061 6e20  0609\"></a><span \n-000197e0: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n-000197f0: 2036 3039 3c2f 7370 616e 3e20 2020 2020   609</span>     \n-00019800: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00019810: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00019820: 2020 3c61 2063 6c61 7373 3d22 636f 6465    <a class=\"code\n-00019830: 2068 6c5f 656e 756d 6572 6174 696f 6e22   hl_enumeration\"\n-00019840: 2068 7265 663d 2261 3031 3333 332e 6874   href=\"a01333.ht\n-00019850: 6d6c 2361 3131 6663 6435 3165 6638 3631  ml#a11fcd51ef861\n-00019860: 3138 6636 3565 3630 3363 3134 3734 3337  18f65e603c147437\n-00019870: 3761 3738 223e 4372 6561 7365 3a3a 5275  7a78\">Crease::Ru\n-00019880: 6c65 3c2f 613e 2020 7275 6c65 293c 7370  le</a>  rule)<sp\n-00019890: 616e 2063 6c61 7373 3d22 6b65 7977 6f72  an class=\"keywor\n-000198a0: 6422 3e20 636f 6e73 7420 3c2f 7370 616e  d\"> const </span\n-000198b0: 3e7b 3c2f 6469 763e 0a3c 6469 7620 636c  >{</div>.<div cl\n-000198c0: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n-000198d0: 3d22 6c30 3036 3130 2220 6e61 6d65 3d22  =\"l00610\" name=\"\n-000198e0: 6c30 3036 3130 223e 3c2f 613e 3c73 7061  l00610\"></a><spa\n-000198f0: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n-00019900: 3e20 2036 3130 3c2f 7370 616e 3e20 3c2f  >  610</span> </\n-00019910: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n-00019920: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n-00019930: 3036 3131 2220 6e61 6d65 3d22 6c30 3036  0611\" name=\"l006\n-00019940: 3131 223e 3c2f 613e 3c73 7061 6e20 636c  11\"></a><span cl\n-00019950: 6173 733d 226c 696e 656e 6f22 3e20 2036  ass=\"lineno\">  6\n-00019960: 3131 3c2f 7370 616e 3e20 2020 203c 7370  11</span>    <sp\n-00019970: 616e 2063 6c61 7373 3d22 6b65 7977 6f72  an class=\"keywor\n-00019980: 6466 6c6f 7722 3e69 663c 2f73 7061 6e3e  dflow\">if</span>\n-00019990: 2028 2872 756c 6520 3d3d 203c 6120 636c   ((rule == <a cl\n-000199a0: 6173 733d 2263 6f64 6520 686c 5f65 6e75  ass=\"code hl_enu\n-000199b0: 6d76 616c 7565 2220 6872 6566 3d22 6130  mvalue\" href=\"a0\n-000199c0: 3133 3333 2e68 746d 6c23 6131 3166 6364  1333.html#a11fcd\n-000199d0: 3531 6566 3836 3131 3866 3635 6536 3033  51ef86118f65e603\n-000199e0: 6331 3437 3433 3737 6137 3861 3631 6431  c1474377a78a61d1\n-000199f0: 3337 6638 3636 3939 3765 6433 3639 3365  37f866997ed3693e\n-00019a00: 3366 6361 6437 3664 6566 3566 223e 4372  3fcad76def5f\">Cr\n-00019a10: 6561 7365 3a3a 5255 4c45 5f53 4d4f 4f54  ease::RULE_SMOOT\n-00019a20: 483c 2f61 3e29 207c 7c20 2872 756c 6520  H</a>) || (rule \n-00019a30: 3d3d 203c 6120 636c 6173 733d 2263 6f64  == <a class=\"cod\n-00019a40: 6520 686c 5f65 6e75 6d76 616c 7565 2220  e hl_enumvalue\" \n-00019a50: 6872 6566 3d22 6130 3133 3333 2e68 746d  href=\"a01333.htm\n-00019a60: 6c23 6131 3166 6364 3531 6566 3836 3131  l#a11fcd51ef8611\n-00019a70: 3866 3635 6536 3033 6331 3437 3433 3737  8f65e603c1474377\n-00019a80: 6137 3861 3433 3436 3963 3239 6438 3537  a78a43469c29d857\n-00019a90: 3961 3633 6263 3164 3632 3437 6432 3632  9a63bc1d6247d262\n-00019aa0: 3437 3939 223e 4372 6561 7365 3a3a 5255  4799\">Crease::RU\n-00019ab0: 4c45 5f44 4152 543c 2f61 3e29 2920 7b3c  LE_DART</a>)) {<\n-00019ac0: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n-00019ad0: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n-00019ae0: 3030 3631 3222 206e 616d 653d 226c 3030  00612\" name=\"l00\n-00019af0: 3631 3222 3e3c 2f61 3e3c 7370 616e 2063  612\"></a><span c\n-00019b00: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n-00019b10: 3631 323c 2f73 7061 6e3e 2020 2020 2020  612</span>      \n-00019b20: 2020 6173 7369 676e 536d 6f6f 7468 4c69    assignSmoothLi\n-00019b30: 6d69 744d 6173 6b28 7665 7274 6578 2c20  mitMask(vertex, \n-00019b40: 6d61 736b 293b 3c2f 6469 763e 0a3c 6469  mask);</div>.<di\n-00019b50: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n-00019b60: 6120 6964 3d22 6c30 3036 3133 2220 6e61  a id=\"l00613\" na\n-00019b70: 6d65 3d22 6c30 3036 3133 223e 3c2f 613e  me=\"l00613\"></a>\n-00019b80: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n-00019b90: 656e 6f22 3e20 2036 3133 3c2f 7370 616e  eno\">  613</span\n-00019ba0: 3e20 2020 207d 203c 7370 616e 2063 6c61  >    } <span cla\n-00019bb0: 7373 3d22 6b65 7977 6f72 6466 6c6f 7722  ss=\"keywordflow\"\n-00019bc0: 3e65 6c73 653c 2f73 7061 6e3e 203c 7370  >else</span> <sp\n-00019bd0: 616e 2063 6c61 7373 3d22 6b65 7977 6f72  an class=\"keywor\n-00019be0: 6466 6c6f 7722 3e69 663c 2f73 7061 6e3e  dflow\">if</span>\n-00019bf0: 2028 7275 6c65 203d 3d20 3c61 2063 6c61   (rule == <a cla\n-00019c00: 7373 3d22 636f 6465 2068 6c5f 656e 756d  ss=\"code hl_enum\n-00019c10: 7661 6c75 6522 2068 7265 663d 2261 3031  value\" href=\"a01\n-00019c20: 3333 332e 6874 6d6c 2361 3131 6663 6435  333.html#a11fcd5\n-00019c30: 3165 6638 3631 3138 6636 3565 3630 3363  1ef86118f65e603c\n-00019c40: 3134 3734 3337 3761 3738 6139 3636 6661  1474377a78a966fa\n-00019c50: 3161 6538 6165 6238 3538 3763 3439 3863  1ae8aeb8587c498c\n-00019c60: 6636 6139 3263 6333 3333 3522 3e43 7265  f6a92cc3335\">Cre\n-00019c70: 6173 653a 3a52 554c 455f 4352 4541 5345  ase::RULE_CREASE\n-00019c80: 3c2f 613e 2920 7b3c 2f64 6976 3e0a 3c64  </a>) {</div>.<d\n-00019c90: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n-00019ca0: 3c61 2069 643d 226c 3030 3631 3422 206e  <a id=\"l00614\" n\n-00019cb0: 616d 653d 226c 3030 3631 3422 3e3c 2f61  ame=\"l00614\"></a\n-00019cc0: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n-00019cd0: 6e65 6e6f 223e 2020 3631 343c 2f73 7061  neno\">  614</spa\n-00019ce0: 6e3e 2020 2020 2020 2020 3c73 7061 6e20  n>        <span \n-00019cf0: 636c 6173 733d 226b 6579 776f 7264 7479  class=\"keywordty\n-00019d00: 7065 223e 666c 6f61 743c 2f73 7061 6e3e  pe\">float</span>\n-00019d10: 202a 2065 6467 6553 6861 7270 6e65 7373   * edgeSharpness\n-00019d20: 203d 2028 3c73 7061 6e20 636c 6173 733d   = (<span class=\n-00019d30: 226b 6579 776f 7264 7479 7065 223e 666c  \"keywordtype\">fl\n-00019d40: 6f61 743c 2f73 7061 6e3e 202a 2961 6c6c  oat</span> *)all\n-00019d50: 6f63 6128 7665 7274 6578 2e47 6574 4e75  oca(vertex.GetNu\n-00019d60: 6d45 6467 6573 2829 202a 203c 7370 616e  mEdges() * <span\n-00019d70: 2063 6c61 7373 3d22 6b65 7977 6f72 6422   class=\"keyword\"\n-00019d80: 3e73 697a 656f 663c 2f73 7061 6e3e 2866  >sizeof</span>(f\n-00019d90: 6c6f 6174 2929 3b3c 2f64 6976 3e0a 3c64  loat));</div>.<d\n-00019da0: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n-00019db0: 3c61 2069 643d 226c 3030 3631 3522 206e  <a id=\"l00615\" n\n-00019dc0: 616d 653d 226c 3030 3631 3522 3e3c 2f61  ame=\"l00615\"></a\n-00019dd0: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n-00019de0: 6e65 6e6f 223e 2020 3631 353c 2f73 7061  neno\">  615</spa\n-00019df0: 6e3e 2020 2020 2020 2020 7665 7274 6578  n>        vertex\n-00019e00: 2e47 6574 5368 6172 706e 6573 7350 6572  .GetSharpnessPer\n-00019e10: 4564 6765 2865 6467 6553 6861 7270 6e65  Edge(edgeSharpne\n-00019e20: 7373 293b 3c2f 6469 763e 0a3c 6469 7620  ss);</div>.<div \n-00019e30: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n-00019e40: 6964 3d22 6c30 3036 3136 2220 6e61 6d65  id=\"l00616\" name\n-00019e50: 3d22 6c30 3036 3136 223e 3c2f 613e 3c73  =\"l00616\"></a><s\n-00019e60: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n-00019e70: 6f22 3e20 2036 3136 3c2f 7370 616e 3e20  o\">  616</span> \n-00019e80: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n-00019e90: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n-00019ea0: 6c30 3036 3137 2220 6e61 6d65 3d22 6c30  l00617\" name=\"l0\n-00019eb0: 3036 3137 223e 3c2f 613e 3c73 7061 6e20  0617\"></a><span \n-00019ec0: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n-00019ed0: 2036 3137 3c2f 7370 616e 3e20 2020 2020   617</span>     \n-00019ee0: 2020 203c 7370 616e 2063 6c61 7373 3d22     <span class=\"\n-00019ef0: 6b65 7977 6f72 6474 7970 6522 3e69 6e74  keywordtype\">int\n-00019f00: 3c2f 7370 616e 3e20 6372 6561 7365 456e  </span> creaseEn\n-00019f10: 6473 5b32 5d3b 3c2f 6469 763e 0a3c 6469  ds[2];</div>.<di\n-00019f20: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n-00019f30: 6120 6964 3d22 6c30 3036 3138 2220 6e61  a id=\"l00618\" na\n-00019f40: 6d65 3d22 6c30 3036 3138 223e 3c2f 613e  me=\"l00618\"></a>\n-00019f50: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n-00019f60: 656e 6f22 3e20 2036 3138 3c2f 7370 616e  eno\">  618</span\n-00019f70: 3e20 2020 2020 2020 203c 6120 636c 6173  >        <a clas\n-00019f80: 733d 2263 6f64 6520 686c 5f63 6c61 7373  s=\"code hl_class\n-00019f90: 2220 6872 6566 3d22 6130 3133 3333 2e68  \" href=\"a01333.h\n-00019fa0: 746d 6c22 3e43 7265 6173 653c 2f61 3e28  tml\">Crease</a>(\n-00019fb0: 5f6f 7074 696f 6e73 292e 3c61 2063 6c61  _options).<a cla\n-00019fc0: 7373 3d22 636f 6465 2068 6c5f 6675 6e63  ss=\"code hl_func\n-00019fd0: 7469 6f6e 2220 6872 6566 3d22 6130 3133  tion\" href=\"a013\n-00019fe0: 3333 2e68 746d 6c23 6133 3632 6632 3265  33.html#a362f22e\n-00019ff0: 3763 6261 3161 3062 3966 3633 6539 6230  7cba1a0b9f63e9b0\n-0001a000: 3037 6331 3966 3239 3622 3e47 6574 5368  07c19f296\">GetSh\n-0001a010: 6172 7045 6467 6550 6169 724f 6643 7265  arpEdgePairOfCre\n-0001a020: 6173 653c 2f61 3e28 6564 6765 5368 6172  ase</a>(edgeShar\n-0001a030: 706e 6573 732c 2076 6572 7465 782e 4765  pness, vertex.Ge\n-0001a040: 744e 756d 4564 6765 7328 292c 2063 7265  tNumEdges(), cre\n-0001a050: 6173 6545 6e64 7329 3b3c 2f64 6976 3e0a  aseEnds);</div>.\n-0001a060: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n-0001a070: 223e 3c61 2069 643d 226c 3030 3631 3922  \"><a id=\"l00619\"\n-0001a080: 206e 616d 653d 226c 3030 3631 3922 3e3c   name=\"l00619\"><\n-0001a090: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n-0001a0a0: 6c69 6e65 6e6f 223e 2020 3631 393c 2f73  lineno\">  619</s\n-0001a0b0: 7061 6e3e 203c 2f64 6976 3e0a 3c64 6976  pan> </div>.<div\n-0001a0c0: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n-0001a0d0: 2069 643d 226c 3030 3632 3022 206e 616d   id=\"l00620\" nam\n-0001a0e0: 653d 226c 3030 3632 3022 3e3c 2f61 3e3c  e=\"l00620\"></a><\n-0001a0f0: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n-0001a100: 6e6f 223e 2020 3632 303c 2f73 7061 6e3e  no\">  620</span>\n-0001a110: 2020 2020 2020 2020 6173 7369 676e 4372          assignCr\n-0001a120: 6561 7365 4c69 6d69 744d 6173 6b28 7665  easeLimitMask(ve\n-0001a130: 7274 6578 2c20 6d61 736b 2c20 6372 6561  rtex, mask, crea\n-0001a140: 7365 456e 6473 293b 3c2f 6469 763e 0a3c  seEnds);</div>.<\n-0001a150: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n-0001a160: 3e3c 6120 6964 3d22 6c30 3036 3231 2220  ><a id=\"l00621\" \n-0001a170: 6e61 6d65 3d22 6c30 3036 3231 223e 3c2f  name=\"l00621\"></\n-0001a180: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n-0001a190: 696e 656e 6f22 3e20 2036 3231 3c2f 7370  ineno\">  621</sp\n-0001a1a0: 616e 3e20 2020 207d 203c 7370 616e 2063  an>    } <span c\n-0001a1b0: 6c61 7373 3d22 6b65 7977 6f72 6466 6c6f  lass=\"keywordflo\n-0001a1c0: 7722 3e65 6c73 653c 2f73 7061 6e3e 207b  w\">else</span> {\n-0001a1d0: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n-0001a1e0: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n-0001a1f0: 6c30 3036 3232 2220 6e61 6d65 3d22 6c30  l00622\" name=\"l0\n-0001a200: 3036 3232 223e 3c2f 613e 3c73 7061 6e20  0622\"></a><span \n-0001a210: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n-0001a220: 2036 3232 3c2f 7370 616e 3e20 2020 2020   622</span>     \n-0001a230: 2020 2061 7373 6967 6e43 6f72 6e65 724c     assignCornerL\n-0001a240: 696d 6974 4d61 736b 2876 6572 7465 782c  imitMask(vertex,\n-0001a250: 206d 6173 6b29 3b3c 2f64 6976 3e0a 3c64   mask);</div>.<d\n-0001a260: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n-0001a270: 3c61 2069 643d 226c 3030 3632 3322 206e  <a id=\"l00623\" n\n-0001a280: 616d 653d 226c 3030 3632 3322 3e3c 2f61  ame=\"l00623\"></a\n-0001a290: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n-0001a2a0: 6e65 6e6f 223e 2020 3632 333c 2f73 7061  neno\">  623</spa\n-0001a2b0: 6e3e 2020 2020 7d3c 2f64 6976 3e0a 3c64  n>    }</div>.<d\n-0001a2c0: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n-0001a2d0: 3c61 2069 643d 226c 3030 3632 3422 206e  <a id=\"l00624\" n\n-0001a2e0: 616d 653d 226c 3030 3632 3422 3e3c 2f61  ame=\"l00624\"></a\n-0001a2f0: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n-0001a300: 6e65 6e6f 223e 2020 3632 343c 2f73 7061  neno\">  624</spa\n-0001a310: 6e3e 7d3c 2f64 6976 3e0a 3c2f 6469 763e  n>}</div>.</div>\n-0001a320: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n-0001a330: 6522 3e3c 6120 6964 3d22 6c30 3036 3235  e\"><a id=\"l00625\n-0001a340: 2220 6e61 6d65 3d22 6c30 3036 3235 223e  \" name=\"l00625\">\n-0001a350: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n-0001a360: 226c 696e 656e 6f22 3e20 2036 3235 3c2f  \"lineno\">  625</\n-0001a370: 7370 616e 3e20 3c2f 6469 763e 0a3c 6469  span> </div>.<di\n-0001a380: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n-0001a390: 6120 6964 3d22 6c30 3036 3236 2220 6e61  a id=\"l00626\" na\n-0001a3a0: 6d65 3d22 6c30 3036 3236 223e 3c2f 613e  me=\"l00626\"></a>\n-0001a3b0: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n-0001a3c0: 656e 6f22 3e20 2036 3236 3c2f 7370 616e  eno\">  626</span\n-0001a3d0: 3e3c 7370 616e 2063 6c61 7373 3d22 6b65  ><span class=\"ke\n-0001a3e0: 7977 6f72 6422 3e74 656d 706c 6174 653c  yword\">template<\n-0001a3f0: 2f73 7061 6e3e 2026 6c74 3b53 6368 656d  /span> &lt;Schem\n-0001a400: 6554 7970 6520 5343 4845 4d45 2667 743b  eType SCHEME&gt;\n-0001a410: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n-0001a420: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n-0001a430: 6c30 3036 3237 2220 6e61 6d65 3d22 6c30  l00627\" name=\"l0\n-0001a440: 3036 3237 223e 3c2f 613e 3c73 7061 6e20  0627\"></a><span \n-0001a450: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n-0001a460: 2036 3237 3c2f 7370 616e 3e3c 7370 616e   627</span><span\n-0001a470: 2063 6c61 7373 3d22 6b65 7977 6f72 6422   class=\"keyword\"\n-0001a480: 3e74 656d 706c 6174 653c 2f73 7061 6e3e  >template</span>\n-0001a490: 2026 6c74 3b3c 7370 616e 2063 6c61 7373   &lt;<span class\n-0001a4a0: 3d22 6b65 7977 6f72 6422 3e74 7970 656e  =\"keyword\">typen\n-0001a4b0: 616d 653c 2f73 7061 6e3e 2056 4552 5445  ame</span> VERTE\n-0001a4c0: 582c 203c 7370 616e 2063 6c61 7373 3d22  X, <span class=\"\n-0001a4d0: 6b65 7977 6f72 6422 3e74 7970 656e 616d  keyword\">typenam\n-0001a4e0: 653c 2f73 7061 6e3e 204d 4153 4b26 6774  e</span> MASK&gt\n-0001a4f0: 3b3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ;</div>.<div cla\n-0001a500: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n-0001a510: 226c 3030 3632 3822 206e 616d 653d 226c  \"l00628\" name=\"l\n-0001a520: 3030 3632 3822 3e3c 2f61 3e3c 7370 616e  00628\"></a><span\n-0001a530: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n-0001a540: 2020 3632 383c 2f73 7061 6e3e 3c73 7061    628</span><spa\n-0001a550: 6e20 636c 6173 733d 226b 6579 776f 7264  n class=\"keyword\n-0001a560: 7479 7065 223e 766f 6964 3c2f 7370 616e  type\">void</span\n-0001a570: 3e3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ></div>.<div cla\n-0001a580: 7373 3d22 666f 6c64 6f70 656e 2220 6964  ss=\"foldopen\" id\n-0001a590: 3d22 666f 6c64 6f70 656e 3030 3632 3922  =\"foldopen00629\"\n-0001a5a0: 2064 6174 612d 7374 6172 743d 227b 2220   data-start=\"{\" \n-0001a5b0: 6461 7461 2d65 6e64 3d22 7d22 3e0a 3c64  data-end=\"}\">.<d\n-0001a5c0: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n-0001a5d0: 3c61 2069 643d 226c 3030 3632 3922 206e  <a id=\"l00629\" n\n-0001a5e0: 616d 653d 226c 3030 3632 3922 3e3c 2f61  ame=\"l00629\"></a\n-0001a5f0: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n-0001a600: 6e65 6e6f 223e 3c61 2063 6c61 7373 3d22  neno\"><a class=\"\n-0001a610: 6c69 6e65 2220 6872 6566 3d22 6130 3133  line\" href=\"a013\n-0001a620: 3431 2e68 746d 6c23 6130 3636 3762 3233  41.html#a0667b23\n-0001a630: 6532 3735 6139 6439 3566 6533 3063 3136  e275a9d95fe30c16\n-0001a640: 3561 3864 3162 3937 3522 3e20 2036 3239  5a8d1b975\">  629\n-0001a650: 3c2f 613e 3c2f 7370 616e 3e3c 6120 636c  </a></span><a cl\n-0001a660: 6173 733d 2263 6f64 6520 686c 5f66 756e  ass=\"code hl_fun\n-0001a670: 6374 696f 6e22 2068 7265 663d 2261 3031  ction\" href=\"a01\n-0001a680: 3334 312e 6874 6d6c 2361 3363 3864 3736  341.html#a3c8d76\n-0001a690: 3363 6131 3863 3435 3763 3933 3664 6230  3ca18c457c936db0\n-0001a6a0: 6534 3739 3937 3436 6632 223e 5363 6865  e4799746f2\">Sche\n-0001a6b0: 6d65 266c 743b 5343 4845 4d45 2667 743b  me&lt;SCHEME&gt;\n-0001a6c0: 3a3a 436f 6d70 7574 6556 6572 7465 784c  ::ComputeVertexL\n-0001a6d0: 696d 6974 4d61 736b 3c2f 613e 2856 4552  imitMask</a>(VER\n-0001a6e0: 5445 5820 3c73 7061 6e20 636c 6173 733d  TEX <span class=\n-0001a6f0: 226b 6579 776f 7264 223e 636f 6e73 743c  \"keyword\">const<\n-0001a700: 2f73 7061 6e3e 2661 6d70 3b20 7665 7274  /span>&amp; vert\n-0001a710: 6578 2c3c 2f64 6976 3e0a 3c64 6976 2063  ex,</div>.<div c\n-0001a720: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n-0001a730: 643d 226c 3030 3633 3022 206e 616d 653d  d=\"l00630\" name=\n-0001a740: 226c 3030 3633 3022 3e3c 2f61 3e3c 7370  \"l00630\"></a><sp\n-0001a750: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n-0001a760: 223e 2020 3633 303c 2f73 7061 6e3e 2020  \">  630</span>  \n-0001a770: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0001a780: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0001a790: 2020 2020 204d 4153 4b26 616d 703b 2020       MASK&amp;  \n-0001a7a0: 2020 2020 2020 2070 6f73 4d61 736b 2c3c         posMask,<\n-0001a7b0: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n-0001a7c0: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n-0001a7d0: 3030 3633 3122 206e 616d 653d 226c 3030  00631\" name=\"l00\n-0001a7e0: 3633 3122 3e3c 2f61 3e3c 7370 616e 2063  631\"></a><span c\n-0001a7f0: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n-0001a800: 3633 313c 2f73 7061 6e3e 2020 2020 2020  631</span>      \n-0001a810: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0001a820: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0001a830: 204d 4153 4b26 616d 703b 2020 2020 2020   MASK&amp;      \n-0001a840: 2020 2074 616e 314d 6173 6b2c 3c2f 6469     tan1Mask,</di\n-0001a850: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n-0001a860: 696e 6522 3e3c 6120 6964 3d22 6c30 3036  ine\"><a id=\"l006\n-0001a870: 3332 2220 6e61 6d65 3d22 6c30 3036 3332  32\" name=\"l00632\n-0001a880: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n-0001a890: 733d 226c 696e 656e 6f22 3e20 2036 3332  s=\"lineno\">  632\n-0001a8a0: 3c2f 7370 616e 3e20 2020 2020 2020 2020  </span>         \n-0001a8b0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0001a8c0: 2020 2020 2020 2020 2020 2020 2020 4d41                MA\n-0001a8d0: 534b 2661 6d70 3b20 2020 2020 2020 2020  SK&amp;         \n-0001a8e0: 7461 6e32 4d61 736b 2c3c 2f64 6976 3e0a  tan2Mask,</div>.\n-0001a8f0: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n-0001a900: 223e 3c61 2069 643d 226c 3030 3633 3322  \"><a id=\"l00633\"\n-0001a910: 206e 616d 653d 226c 3030 3633 3322 3e3c   name=\"l00633\"><\n-0001a920: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n-0001a930: 6c69 6e65 6e6f 223e 2020 3633 333c 2f73  lineno\">  633</s\n-0001a940: 7061 6e3e 2020 2020 2020 2020 2020 2020  pan>            \n-0001a950: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0001a960: 2020 2020 2020 2020 2020 203c 6120 636c             <a cl\n-0001a970: 6173 733d 2263 6f64 6520 686c 5f65 6e75  ass=\"code hl_enu\n-0001a980: 6d65 7261 7469 6f6e 2220 6872 6566 3d22  meration\" href=\"\n-0001a990: 6130 3133 3333 2e68 746d 6c23 6131 3166  a01333.html#a11f\n-0001a9a0: 6364 3531 6566 3836 3131 3866 3635 6536  cd51ef86118f65e6\n-0001a9b0: 3033 6331 3437 3433 3737 6137 3822 3e43  03c1474377a78\">C\n-0001a9c0: 7265 6173 653a 3a52 756c 653c 2f61 3e20  rease::Rule</a> \n-0001a9d0: 2072 756c 6529 3c73 7061 6e20 636c 6173   rule)<span clas\n-0001a9e0: 733d 226b 6579 776f 7264 223e 2063 6f6e  s=\"keyword\"> con\n-0001a9f0: 7374 203c 2f73 7061 6e3e 7b3c 2f64 6976  st </span>{</div\n-0001aa00: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n-0001aa10: 6e65 223e 3c61 2069 643d 226c 3030 3633  ne\"><a id=\"l0063\n-0001aa20: 3422 206e 616d 653d 226c 3030 3633 3422  4\" name=\"l00634\"\n-0001aa30: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n-0001aa40: 3d22 6c69 6e65 6e6f 223e 2020 3633 343c  =\"lineno\">  634<\n-0001aa50: 2f73 7061 6e3e 203c 2f64 6976 3e0a 3c64  /span> </div>.<d\n-0001aa60: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n-0001aa70: 3c61 2069 643d 226c 3030 3633 3522 206e  <a id=\"l00635\" n\n-0001aa80: 616d 653d 226c 3030 3633 3522 3e3c 2f61  ame=\"l00635\"></a\n-0001aa90: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n-0001aaa0: 6e65 6e6f 223e 2020 3633 353c 2f73 7061  neno\">  635</spa\n-0001aab0: 6e3e 2020 2020 3c73 7061 6e20 636c 6173  n>    <span clas\n-0001aac0: 733d 226b 6579 776f 7264 666c 6f77 223e  s=\"keywordflow\">\n-0001aad0: 6966 3c2f 7370 616e 3e20 2828 7275 6c65  if</span> ((rule\n-0001aae0: 203d 3d20 3c61 2063 6c61 7373 3d22 636f   == <a class=\"co\n-0001aaf0: 6465 2068 6c5f 656e 756d 7661 6c75 6522  de hl_enumvalue\"\n-0001ab00: 2068 7265 663d 2261 3031 3333 332e 6874   href=\"a01333.ht\n-0001ab10: 6d6c 2361 3131 6663 6435 3165 6638 3631  ml#a11fcd51ef861\n-0001ab20: 3138 6636 3565 3630 3363 3134 3734 3337  18f65e603c147437\n-0001ab30: 3761 3738 6136 3164 3133 3766 3836 3639  7a78a61d137f8669\n-0001ab40: 3937 6564 3336 3933 6533 6663 6164 3736  97ed3693e3fcad76\n-0001ab50: 6465 6635 6622 3e43 7265 6173 653a 3a52  def5f\">Crease::R\n-0001ab60: 554c 455f 534d 4f4f 5448 3c2f 613e 2920  ULE_SMOOTH</a>) \n-0001ab70: 7c7c 2028 7275 6c65 203d 3d20 3c61 2063  || (rule == <a c\n-0001ab80: 6c61 7373 3d22 636f 6465 2068 6c5f 656e  lass=\"code hl_en\n-0001ab90: 756d 7661 6c75 6522 2068 7265 663d 2261  umvalue\" href=\"a\n-0001aba0: 3031 3333 332e 6874 6d6c 2361 3131 6663  01333.html#a11fc\n-0001abb0: 6435 3165 6638 3631 3138 6636 3565 3630  d51ef86118f65e60\n-0001abc0: 3363 3134 3734 3337 3761 3738 6134 3334  3c1474377a78a434\n-0001abd0: 3639 6332 3964 3835 3739 6136 3362 6331  69c29d8579a63bc1\n-0001abe0: 6436 3234 3764 3236 3234 3739 3922 3e43  d6247d2624799\">C\n-0001abf0: 7265 6173 653a 3a52 554c 455f 4441 5254  rease::RULE_DART\n-0001ac00: 3c2f 613e 2929 207b 3c2f 6469 763e 0a3c  </a>)) {</div>.<\n-0001ac10: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n-0001ac20: 3e3c 6120 6964 3d22 6c30 3036 3336 2220  ><a id=\"l00636\" \n-0001ac30: 6e61 6d65 3d22 6c30 3036 3336 223e 3c2f  name=\"l00636\"></\n-0001ac40: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n-0001ac50: 696e 656e 6f22 3e20 2036 3336 3c2f 7370  ineno\">  636</sp\n-0001ac60: 616e 3e20 2020 2020 2020 2061 7373 6967  an>        assig\n-0001ac70: 6e53 6d6f 6f74 684c 696d 6974 4d61 736b  nSmoothLimitMask\n-0001ac80: 2876 6572 7465 782c 2070 6f73 4d61 736b  (vertex, posMask\n-0001ac90: 293b 3c2f 6469 763e 0a3c 6469 7620 636c  );</div>.<div cl\n-0001aca0: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n-0001acb0: 3d22 6c30 3036 3337 2220 6e61 6d65 3d22  =\"l00637\" name=\"\n-0001acc0: 6c30 3036 3337 223e 3c2f 613e 3c73 7061  l00637\"></a><spa\n-0001acd0: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n-0001ace0: 3e20 2036 3337 3c2f 7370 616e 3e20 2020  >  637</span>   \n-0001acf0: 2020 2020 2061 7373 6967 6e53 6d6f 6f74       assignSmoot\n-0001ad00: 684c 696d 6974 5461 6e67 656e 744d 6173  hLimitTangentMas\n-0001ad10: 6b73 2876 6572 7465 782c 2074 616e 314d  ks(vertex, tan1M\n-0001ad20: 6173 6b2c 2074 616e 324d 6173 6b29 3b3c  ask, tan2Mask);<\n-0001ad30: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n-0001ad40: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n-0001ad50: 3030 3633 3822 206e 616d 653d 226c 3030  00638\" name=\"l00\n-0001ad60: 3633 3822 3e3c 2f61 3e3c 7370 616e 2063  638\"></a><span c\n-0001ad70: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n-0001ad80: 3633 383c 2f73 7061 6e3e 2020 2020 7d20  638</span>    } \n-0001ad90: 3c73 7061 6e20 636c 6173 733d 226b 6579  <span class=\"key\n-0001ada0: 776f 7264 666c 6f77 223e 656c 7365 3c2f  wordflow\">else</\n-0001adb0: 7370 616e 3e20 3c73 7061 6e20 636c 6173  span> <span clas\n-0001adc0: 733d 226b 6579 776f 7264 666c 6f77 223e  s=\"keywordflow\">\n-0001add0: 6966 3c2f 7370 616e 3e20 2872 756c 6520  if</span> (rule \n-0001ade0: 3d3d 203c 6120 636c 6173 733d 2263 6f64  == <a class=\"cod\n-0001adf0: 6520 686c 5f65 6e75 6d76 616c 7565 2220  e hl_enumvalue\" \n-0001ae00: 6872 6566 3d22 6130 3133 3333 2e68 746d  href=\"a01333.htm\n-0001ae10: 6c23 6131 3166 6364 3531 6566 3836 3131  l#a11fcd51ef8611\n-0001ae20: 3866 3635 6536 3033 6331 3437 3433 3737  8f65e603c1474377\n-0001ae30: 6137 3861 3936 3666 6131 6165 3861 6562  a78a966fa1ae8aeb\n-0001ae40: 3835 3837 6334 3938 6366 3661 3932 6363  8587c498cf6a92cc\n-0001ae50: 3333 3335 223e 4372 6561 7365 3a3a 5255  3335\">Crease::RU\n-0001ae60: 4c45 5f43 5245 4153 453c 2f61 3e29 207b  LE_CREASE</a>) {\n-0001ae70: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n-0001ae80: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n-0001ae90: 6c30 3036 3339 2220 6e61 6d65 3d22 6c30  l00639\" name=\"l0\n-0001aea0: 3036 3339 223e 3c2f 613e 3c73 7061 6e20  0639\"></a><span \n-0001aeb0: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n-0001aec0: 2036 3339 3c2f 7370 616e 3e20 2020 2020   639</span>     \n-0001aed0: 2020 203c 7370 616e 2063 6c61 7373 3d22     <span class=\"\n-0001aee0: 6b65 7977 6f72 6474 7970 6522 3e66 6c6f  keywordtype\">flo\n-0001aef0: 6174 3c2f 7370 616e 3e20 2a20 6564 6765  at</span> * edge\n-0001af00: 5368 6172 706e 6573 7320 3d20 283c 7370  Sharpness = (<sp\n-0001af10: 616e 2063 6c61 7373 3d22 6b65 7977 6f72  an class=\"keywor\n-0001af20: 6474 7970 6522 3e66 6c6f 6174 3c2f 7370  dtype\">float</sp\n-0001af30: 616e 3e20 2a29 616c 6c6f 6361 2876 6572  an> *)alloca(ver\n-0001af40: 7465 782e 4765 744e 756d 4564 6765 7328  tex.GetNumEdges(\n-0001af50: 2920 2a20 3c73 7061 6e20 636c 6173 733d  ) * <span class=\n-0001af60: 226b 6579 776f 7264 223e 7369 7a65 6f66  \"keyword\">sizeof\n-0001af70: 3c2f 7370 616e 3e28 666c 6f61 7429 293b  </span>(float));\n-0001af80: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n-0001af90: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n-0001afa0: 6c30 3036 3430 2220 6e61 6d65 3d22 6c30  l00640\" name=\"l0\n-0001afb0: 3036 3430 223e 3c2f 613e 3c73 7061 6e20  0640\"></a><span \n-0001afc0: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n-0001afd0: 2036 3430 3c2f 7370 616e 3e20 2020 2020   640</span>     \n-0001afe0: 2020 2076 6572 7465 782e 4765 7453 6861     vertex.GetSha\n-0001aff0: 7270 6e65 7373 5065 7245 6467 6528 6564  rpnessPerEdge(ed\n-0001b000: 6765 5368 6172 706e 6573 7329 3b3c 2f64  geSharpness);</d\n-0001b010: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n-0001b020: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n-0001b030: 3634 3122 206e 616d 653d 226c 3030 3634  641\" name=\"l0064\n-0001b040: 3122 3e3c 2f61 3e3c 7370 616e 2063 6c61  1\"></a><span cla\n-0001b050: 7373 3d22 6c69 6e65 6e6f 223e 2020 3634  ss=\"lineno\">  64\n-0001b060: 313c 2f73 7061 6e3e 203c 2f64 6976 3e0a  1</span> </div>.\n-0001b070: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n-0001b080: 223e 3c61 2069 643d 226c 3030 3634 3222  \"><a id=\"l00642\"\n-0001b090: 206e 616d 653d 226c 3030 3634 3222 3e3c   name=\"l00642\"><\n-0001b0a0: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n-0001b0b0: 6c69 6e65 6e6f 223e 2020 3634 323c 2f73  lineno\">  642</s\n-0001b0c0: 7061 6e3e 2020 2020 2020 2020 3c73 7061  pan>        <spa\n-0001b0d0: 6e20 636c 6173 733d 226b 6579 776f 7264  n class=\"keyword\n-0001b0e0: 7479 7065 223e 696e 743c 2f73 7061 6e3e  type\">int</span>\n-0001b0f0: 2063 7265 6173 6545 6e64 735b 325d 3b3c   creaseEnds[2];<\n-0001b100: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n-0001b110: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n-0001b120: 3030 3634 3322 206e 616d 653d 226c 3030  00643\" name=\"l00\n-0001b130: 3634 3322 3e3c 2f61 3e3c 7370 616e 2063  643\"></a><span c\n-0001b140: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n-0001b150: 3634 333c 2f73 7061 6e3e 2020 2020 2020  643</span>      \n-0001b160: 2020 3c61 2063 6c61 7373 3d22 636f 6465    <a class=\"code\n-0001b170: 2068 6c5f 636c 6173 7322 2068 7265 663d   hl_class\" href=\n-0001b180: 2261 3031 3333 332e 6874 6d6c 223e 4372  \"a01333.html\">Cr\n-0001b190: 6561 7365 3c2f 613e 285f 6f70 7469 6f6e  ease</a>(_option\n-0001b1a0: 7329 2e3c 6120 636c 6173 733d 2263 6f64  s).<a class=\"cod\n-0001b1b0: 6520 686c 5f66 756e 6374 696f 6e22 2068  e hl_function\" h\n-0001b1c0: 7265 663d 2261 3031 3333 332e 6874 6d6c  ref=\"a01333.html\n-0001b1d0: 2361 3336 3266 3232 6537 6362 6131 6130  #a362f22e7cba1a0\n-0001b1e0: 6239 6636 3365 3962 3030 3763 3139 6632  b9f63e9b007c19f2\n-0001b1f0: 3936 223e 4765 7453 6861 7270 4564 6765  96\">GetSharpEdge\n-0001b200: 5061 6972 4f66 4372 6561 7365 3c2f 613e  PairOfCrease</a>\n-0001b210: 2865 6467 6553 6861 7270 6e65 7373 2c20  (edgeSharpness, \n-0001b220: 7665 7274 6578 2e47 6574 4e75 6d45 6467  vertex.GetNumEdg\n-0001b230: 6573 2829 2c20 6372 6561 7365 456e 6473  es(), creaseEnds\n-0001b240: 293b 3c2f 6469 763e 0a3c 6469 7620 636c  );</div>.<div cl\n-0001b250: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n-0001b260: 3d22 6c30 3036 3434 2220 6e61 6d65 3d22  =\"l00644\" name=\"\n-0001b270: 6c30 3036 3434 223e 3c2f 613e 3c73 7061  l00644\"></a><spa\n-0001b280: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n-0001b290: 3e20 2036 3434 3c2f 7370 616e 3e20 3c2f  >  644</span> </\n-0001b2a0: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n-0001b2b0: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n-0001b2c0: 3036 3435 2220 6e61 6d65 3d22 6c30 3036  0645\" name=\"l006\n-0001b2d0: 3435 223e 3c2f 613e 3c73 7061 6e20 636c  45\"></a><span cl\n-0001b2e0: 6173 733d 226c 696e 656e 6f22 3e20 2036  ass=\"lineno\">  6\n-0001b2f0: 3435 3c2f 7370 616e 3e20 2020 2020 2020  45</span>       \n-0001b300: 2061 7373 6967 6e43 7265 6173 654c 696d   assignCreaseLim\n-0001b310: 6974 4d61 736b 2876 6572 7465 782c 2070  itMask(vertex, p\n-0001b320: 6f73 4d61 736b 2c20 6372 6561 7365 456e  osMask, creaseEn\n-0001b330: 6473 293b 3c2f 6469 763e 0a3c 6469 7620  ds);</div>.<div \n-0001b340: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n-0001b350: 6964 3d22 6c30 3036 3436 2220 6e61 6d65  id=\"l00646\" name\n-0001b360: 3d22 6c30 3036 3436 223e 3c2f 613e 3c73  =\"l00646\"></a><s\n-0001b370: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n-0001b380: 6f22 3e20 2036 3436 3c2f 7370 616e 3e20  o\">  646</span> \n-0001b390: 2020 2020 2020 2061 7373 6967 6e43 7265         assignCre\n-0001b3a0: 6173 654c 696d 6974 5461 6e67 656e 744d  aseLimitTangentM\n-0001b3b0: 6173 6b73 2876 6572 7465 782c 2074 616e  asks(vertex, tan\n-0001b3c0: 314d 6173 6b2c 2074 616e 324d 6173 6b2c  1Mask, tan2Mask,\n-0001b3d0: 2063 7265 6173 6545 6e64 7329 3b3c 2f64   creaseEnds);</d\n-0001b3e0: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n-0001b3f0: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n-0001b400: 3634 3722 206e 616d 653d 226c 3030 3634  647\" name=\"l0064\n-0001b410: 3722 3e3c 2f61 3e3c 7370 616e 2063 6c61  7\"></a><span cla\n-0001b420: 7373 3d22 6c69 6e65 6e6f 223e 2020 3634  ss=\"lineno\">  64\n-0001b430: 373c 2f73 7061 6e3e 2020 2020 7d20 3c73  7</span>    } <s\n-0001b440: 7061 6e20 636c 6173 733d 226b 6579 776f  pan class=\"keywo\n-0001b450: 7264 666c 6f77 223e 656c 7365 3c2f 7370  rdflow\">else</sp\n-0001b460: 616e 3e20 7b3c 2f64 6976 3e0a 3c64 6976  an> {</div>.<div\n-0001b470: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n-0001b480: 2069 643d 226c 3030 3634 3822 206e 616d   id=\"l00648\" nam\n-0001b490: 653d 226c 3030 3634 3822 3e3c 2f61 3e3c  e=\"l00648\"></a><\n-0001b4a0: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n-0001b4b0: 6e6f 223e 2020 3634 383c 2f73 7061 6e3e  no\">  648</span>\n-0001b4c0: 2020 2020 2020 2020 6173 7369 676e 436f          assignCo\n-0001b4d0: 726e 6572 4c69 6d69 744d 6173 6b28 7665  rnerLimitMask(ve\n-0001b4e0: 7274 6578 2c20 706f 734d 6173 6b29 3b3c  rtex, posMask);<\n-0001b4f0: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n-0001b500: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n-0001b510: 3030 3634 3922 206e 616d 653d 226c 3030  00649\" name=\"l00\n-0001b520: 3634 3922 3e3c 2f61 3e3c 7370 616e 2063  649\"></a><span c\n-0001b530: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n-0001b540: 3634 393c 2f73 7061 6e3e 2020 2020 2020  649</span>      \n-0001b550: 2020 6173 7369 676e 436f 726e 6572 4c69    assignCornerLi\n-0001b560: 6d69 7454 616e 6765 6e74 4d61 736b 7328  mitTangentMasks(\n-0001b570: 7665 7274 6578 2c20 7461 6e31 4d61 736b  vertex, tan1Mask\n-0001b580: 2c20 7461 6e32 4d61 736b 293b 3c2f 6469  , tan2Mask);</di\n-0001b590: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n-0001b5a0: 696e 6522 3e3c 6120 6964 3d22 6c30 3036  ine\"><a id=\"l006\n-0001b5b0: 3530 2220 6e61 6d65 3d22 6c30 3036 3530  50\" name=\"l00650\n-0001b5c0: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n-0001b5d0: 733d 226c 696e 656e 6f22 3e20 2036 3530  s=\"lineno\">  650\n-0001b5e0: 3c2f 7370 616e 3e20 2020 207d 3c2f 6469  </span>    }</di\n-0001b5f0: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n-0001b600: 696e 6522 3e3c 6120 6964 3d22 6c30 3036  ine\"><a id=\"l006\n-0001b610: 3531 2220 6e61 6d65 3d22 6c30 3036 3531  51\" name=\"l00651\n-0001b620: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n-0001b630: 733d 226c 696e 656e 6f22 3e20 2036 3531  s=\"lineno\">  651\n-0001b640: 3c2f 7370 616e 3e7d 3c2f 6469 763e 0a3c  </span>}</div>.<\n-0001b650: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n-0001b660: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n-0001b670: 3030 3635 3222 206e 616d 653d 226c 3030  00652\" name=\"l00\n-0001b680: 3635 3222 3e3c 2f61 3e3c 7370 616e 2063  652\"></a><span c\n-0001b690: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n-0001b6a0: 3635 323c 2f73 7061 6e3e 203c 2f64 6976  652</span> </div\n-0001b6b0: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n-0001b6c0: 6e65 223e 3c61 2069 643d 226c 3030 3635  ne\"><a id=\"l0065\n-0001b6d0: 3322 206e 616d 653d 226c 3030 3635 3322  3\" name=\"l00653\"\n-0001b6e0: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n-0001b6f0: 3d22 6c69 6e65 6e6f 223e 2020 3635 333c  =\"lineno\">  653<\n-0001b700: 2f73 7061 6e3e 203c 2f64 6976 3e0a 3c64  /span> </div>.<d\n-0001b710: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n-0001b720: 3c61 2069 643d 226c 3030 3635 3422 206e  <a id=\"l00654\" n\n-0001b730: 616d 653d 226c 3030 3635 3422 3e3c 2f61  ame=\"l00654\"></a\n-0001b740: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n-0001b750: 6e65 6e6f 223e 2020 3635 343c 2f73 7061  neno\">  654</spa\n-0001b760: 6e3e 7d20 3c73 7061 6e20 636c 6173 733d  n>} <span class=\n-0001b770: 2263 6f6d 6d65 6e74 223e 2f2f 2065 6e64  \"comment\">// end\n-0001b780: 206e 616d 6573 7061 6365 2073 6463 3c2f   namespace sdc</\n-0001b790: 7370 616e 3e3c 2f64 6976 3e0a 3c64 6976  span></div>.<div\n-0001b7a0: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n-0001b7b0: 2069 643d 226c 3030 3635 3522 206e 616d   id=\"l00655\" nam\n-0001b7c0: 653d 226c 3030 3635 3522 3e3c 2f61 3e3c  e=\"l00655\"></a><\n-0001b7d0: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n-0001b7e0: 6e6f 223e 2020 3635 353c 2f73 7061 6e3e  no\">  655</span>\n-0001b7f0: 203c 2f64 6976 3e0a 3c64 6976 2063 6c61   </div>.<div cla\n-0001b800: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n-0001b810: 226c 3030 3635 3622 206e 616d 653d 226c  \"l00656\" name=\"l\n-0001b820: 3030 3635 3622 3e3c 2f61 3e3c 7370 616e  00656\"></a><span\n-0001b830: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n-0001b840: 2020 3635 363c 2f73 7061 6e3e 7d20 3c73    656</span>} <s\n-0001b850: 7061 6e20 636c 6173 733d 2263 6f6d 6d65  pan class=\"comme\n-0001b860: 6e74 223e 2f2f 2065 6e64 206e 616d 6573  nt\">// end names\n-0001b870: 7061 6365 204f 5045 4e53 5542 4449 565f  pace OPENSUBDIV_\n-0001b880: 5645 5253 494f 4e3c 2f73 7061 6e3e 3c2f  VERSION</span></\n-0001b890: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n-0001b8a0: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n-0001b8b0: 3036 3537 2220 6e61 6d65 3d22 6c30 3036  0657\" name=\"l006\n-0001b8c0: 3537 223e 3c2f 613e 3c73 7061 6e20 636c  57\"></a><span cl\n-0001b8d0: 6173 733d 226c 696e 656e 6f22 3e20 2036  ass=\"lineno\">  6\n-0001b8e0: 3537 3c2f 7370 616e 3e3c 7370 616e 2063  57</span><span c\n-0001b8f0: 6c61 7373 3d22 6b65 7977 6f72 6422 3e75  lass=\"keyword\">u\n-0001b900: 7369 6e67 206e 616d 6573 7061 6365 203c  sing namespace <\n-0001b910: 2f73 7061 6e3e 4f50 454e 5355 4244 4956  /span>OPENSUBDIV\n-0001b920: 5f56 4552 5349 4f4e 3b3c 2f64 6976 3e0a  _VERSION;</div>.\n-0001b930: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n-0001b940: 223e 3c61 2069 643d 226c 3030 3635 3822  \"><a id=\"l00658\"\n-0001b950: 206e 616d 653d 226c 3030 3635 3822 3e3c   name=\"l00658\"><\n-0001b960: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n-0001b970: 6c69 6e65 6e6f 223e 2020 3635 383c 2f73  lineno\">  658</s\n-0001b980: 7061 6e3e 7d20 3c73 7061 6e20 636c 6173  pan>} <span clas\n-0001b990: 733d 2263 6f6d 6d65 6e74 223e 2f2f 2065  s=\"comment\">// e\n-0001b9a0: 6e64 206e 616d 6573 7061 6365 204f 7065  nd namespace Ope\n-0001b9b0: 6e53 7562 6469 763c 2f73 7061 6e3e 3c2f  nSubdiv</span></\n-0001b9c0: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n-0001b9d0: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n-0001b9e0: 3036 3539 2220 6e61 6d65 3d22 6c30 3036  0659\" name=\"l006\n-0001b9f0: 3539 223e 3c2f 613e 3c73 7061 6e20 636c  59\"></a><span cl\n-0001ba00: 6173 733d 226c 696e 656e 6f22 3e20 2036  ass=\"lineno\">  6\n-0001ba10: 3539 3c2f 7370 616e 3e20 3c2f 6469 763e  59</span> </div>\n-0001ba20: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n-0001ba30: 6522 3e3c 6120 6964 3d22 6c30 3036 3630  e\"><a id=\"l00660\n-0001ba40: 2220 6e61 6d65 3d22 6c30 3036 3630 223e  \" name=\"l00660\">\n-0001ba50: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n-0001ba60: 226c 696e 656e 6f22 3e20 2036 3630 3c2f  \"lineno\">  660</\n-0001ba70: 7370 616e 3e3c 7370 616e 2063 6c61 7373  span><span class\n-0001ba80: 3d22 7072 6570 726f 6365 7373 6f72 223e  =\"preprocessor\">\n-0001ba90: 2365 6e64 6966 203c 2f73 7061 6e3e 3c73  #endif </span><s\n-0001baa0: 7061 6e20 636c 6173 733d 2263 6f6d 6d65  pan class=\"comme\n-0001bab0: 6e74 223e 2f2a 204f 5045 4e53 5542 4449  nt\">/* OPENSUBDI\n-0001bac0: 5633 5f53 4443 5f53 4348 454d 455f 4820  V3_SDC_SCHEME_H \n-0001bad0: 2a2f 3c2f 7370 616e 3e3c 7370 616e 2063  */</span><span c\n-0001bae0: 6c61 7373 3d22 7072 6570 726f 6365 7373  lass=\"preprocess\n-0001baf0: 6f72 223e 3c2f 7370 616e 3e3c 2f64 6976  or\"></span></div\n-0001bb00: 3e0a 3c64 6976 2063 6c61 7373 3d22 7474  >.<div class=\"tt\n-0001bb10: 6322 2069 643d 2261 6130 3039 3035 5f68  c\" id=\"aa00905_h\n-0001bb20: 746d 6c22 3e3c 6469 7620 636c 6173 733d  tml\"><div class=\n-0001bb30: 2274 746e 616d 6522 3e3c 6120 6872 6566  \"ttname\"><a href\n-0001bb40: 3d22 6130 3039 3035 2e68 746d 6c22 3e4f  =\"a00905.html\">O\n-0001bb50: 7065 6e53 7562 6469 763c 2f61 3e3c 2f64  penSubdiv</a></d\n-0001bb60: 6976 3e3c 6469 7620 636c 6173 733d 2274  iv><div class=\"t\n-0001bb70: 7464 6566 223e 3c62 3e44 6566 696e 6974  tdef\"><b>Definit\n-0001bb80: 696f 6e3c 2f62 3e20 3c61 2068 7265 663d  ion</b> <a href=\n-0001bb90: 2261 3030 3730 315f 736f 7572 6365 2e68  \"a00701_source.h\n-0001bba0: 746d 6c23 6c30 3030 3332 223e 6c69 6d69  tml#l00032\">limi\n-0001bbb0: 7473 2e68 3a33 323c 2f61 3e3c 2f64 6976  ts.h:32</a></div\n-0001bbc0: 3e3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ></div>.<div cla\n-0001bbd0: 7373 3d22 7474 6322 2069 643d 2261 6130  ss=\"ttc\" id=\"aa0\n-0001bbe0: 3039 3133 5f68 746d 6c5f 6136 3165 6632  0913_html_a61ef2\n-0001bbf0: 6638 6637 3635 6261 3137 6638 3033 3662  f8f765ba17f8036b\n-0001bc00: 6363 3066 3066 6138 3837 6222 3e3c 6469  cc0f0fa887b\"><di\n-0001bc10: 7620 636c 6173 733d 2274 746e 616d 6522  v class=\"ttname\"\n-0001bc20: 3e3c 6120 6872 6566 3d22 6130 3039 3133  ><a href=\"a00913\n-0001bc30: 2e68 746d 6c23 6136 3165 6632 6638 6637  .html#a61ef2f8f7\n-0001bc40: 3635 6261 3137 6638 3033 3662 6363 3066  65ba17f8036bcc0f\n-0001bc50: 3066 6138 3837 6222 3e4f 7065 6e53 7562  0fa887b\">OpenSub\n-0001bc60: 6469 763a 3a4f 5045 4e53 5542 4449 565f  div::OPENSUBDIV_\n-0001bc70: 5645 5253 494f 4e3a 3a53 6463 3a3a 5370  VERSION::Sdc::Sp\n-0001bc80: 6c69 743c 2f61 3e3c 2f64 6976 3e3c 6469  lit</a></div><di\n-0001bc90: 7620 636c 6173 733d 2274 7464 6563 6922  v class=\"ttdeci\"\n-0001bca0: 3e53 706c 6974 3c2f 6469 763e 3c64 6976  >Split</div><div\n-0001bcb0: 2063 6c61 7373 3d22 7474 646f 6322 3e45   class=\"ttdoc\">E\n-0001bcc0: 6e75 6d65 7261 7465 6420 7479 7065 2066  numerated type f\n-0001bcd0: 6f72 2061 6c6c 2066 6163 6520 7370 6c69  or all face spli\n-0001bce0: 7474 696e 6720 7363 6865 6d65 732e 3c2f  tting schemes.</\n-0001bcf0: 6469 763e 3c64 6976 2063 6c61 7373 3d22  div><div class=\"\n-0001bd00: 7474 6465 6622 3e3c 623e 4465 6669 6e69  ttdef\"><b>Defini\n-0001bd10: 7469 6f6e 3c2f 623e 203c 6120 6872 6566  tion</b> <a href\n-0001bd20: 3d22 6130 3134 3932 5f73 6f75 7263 652e  =\"a01492_source.\n-0001bd30: 6874 6d6c 236c 3030 3034 3722 3e74 7970  html#l00047\">typ\n-0001bd40: 6573 2e68 3a34 373c 2f61 3e3c 2f64 6976  es.h:47</a></div\n-0001bd50: 3e3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ></div>.<div cla\n-0001bd60: 7373 3d22 7474 6322 2069 643d 2261 6130  ss=\"ttc\" id=\"aa0\n-0001bd70: 3133 3333 5f68 746d 6c22 3e3c 6469 7620  1333_html\"><div \n-0001bd80: 636c 6173 733d 2274 746e 616d 6522 3e3c  class=\"ttname\"><\n-0001bd90: 6120 6872 6566 3d22 6130 3133 3333 2e68  a href=\"a01333.h\n-0001bda0: 746d 6c22 3e4f 7065 6e53 7562 6469 763a  tml\">OpenSubdiv:\n-0001bdb0: 3a4f 5045 4e53 5542 4449 565f 5645 5253  :OPENSUBDIV_VERS\n-0001bdc0: 494f 4e3a 3a53 6463 3a3a 4372 6561 7365  ION::Sdc::Crease\n-0001bdd0: 3c2f 613e 3c2f 6469 763e 3c64 6976 2063  </a></div><div c\n-0001bde0: 6c61 7373 3d22 7474 646f 6322 3e54 7970  lass=\"ttdoc\">Typ\n-0001bdf0: 6573 2c20 636f 6e73 7461 6e74 7320 616e  es, constants an\n-0001be00: 6420 7574 696c 6974 6965 7320 7265 6c61  d utilities rela\n-0001be10: 7465 6420 746f 2073 656d 692d 7368 6172  ted to semi-shar\n-0001be20: 7020 6372 6561 7369 6e67 20e2 8093 2077  p creasing ... w\n-0001be30: 686f 7365 2069 6d70 6c65 6d65 6e74 6174  hose implementat\n-0001be40: 696f 6e20 6973 2069 6e64 6570 656e 6465  ion is independe\n-0001be50: 6e74 206f 2e2e 2e3c 2f64 6976 3e3c 6469  nt o...</div><di\n-0001be60: 7620 636c 6173 733d 2274 7464 6566 223e  v class=\"ttdef\">\n-0001be70: 3c62 3e44 6566 696e 6974 696f 6e3c 2f62  <b>Definition</b\n-0001be80: 3e20 3c61 2068 7265 663d 2261 3030 3733  > <a href=\"a0073\n-0001be90: 315f 736f 7572 6365 2e68 746d 6c23 6c30  1_source.html#l0\n-0001bea0: 3030 3632 223e 6372 6561 7365 2e68 3a36  0062\">crease.h:6\n-0001beb0: 323c 2f61 3e3c 2f64 6976 3e3c 2f64 6976  2</a></div></div\n-0001bec0: 3e0a 3c64 6976 2063 6c61 7373 3d22 7474  >.<div class=\"tt\n-0001bed0: 6322 2069 643d 2261 6130 3133 3333 5f68  c\" id=\"aa01333_h\n-0001bee0: 746d 6c5f 6131 3166 6364 3531 6566 3836  tml_a11fcd51ef86\n-0001bef0: 3131 3866 3635 6536 3033 6331 3437 3433  118f65e603c14743\n-0001bf00: 3737 6137 3822 3e3c 6469 7620 636c 6173  77a78\"><div clas\n-0001bf10: 733d 2274 746e 616d 6522 3e3c 6120 6872  s=\"ttname\"><a hr\n-0001bf20: 6566 3d22 6130 3133 3333 2e68 746d 6c23  ef=\"a01333.html#\n-0001bf30: 6131 3166 6364 3531 6566 3836 3131 3866  a11fcd51ef86118f\n-0001bf40: 3635 6536 3033 6331 3437 3433 3737 6137  65e603c1474377a7\n-0001bf50: 3822 3e4f 7065 6e53 7562 6469 763a 3a4f  8\">OpenSubdiv::O\n-0001bf60: 5045 4e53 5542 4449 565f 5645 5253 494f  PENSUBDIV_VERSIO\n-0001bf70: 4e3a 3a53 6463 3a3a 4372 6561 7365 3a3a  N::Sdc::Crease::\n-0001bf80: 5275 6c65 3c2f 613e 3c2f 6469 763e 3c64  Rule</a></div><d\n-0001bf90: 6976 2063 6c61 7373 3d22 7474 6465 6369  iv class=\"ttdeci\n-0001bfa0: 223e 5275 6c65 3c2f 6469 763e 3c64 6976  \">Rule</div><div\n-0001bfb0: 2063 6c61 7373 3d22 7474 6465 6622 3e3c   class=\"ttdef\"><\n-0001bfc0: 623e 4465 6669 6e69 7469 6f6e 3c2f 623e  b>Definition</b>\n-0001bfd0: 203c 6120 6872 6566 3d22 6130 3037 3331   <a href=\"a00731\n-0001bfe0: 5f73 6f75 7263 652e 6874 6d6c 236c 3030  _source.html#l00\n-0001bff0: 3038 3222 3e63 7265 6173 652e 683a 3832  082\">crease.h:82\n-0001c000: 3c2f 613e 3c2f 6469 763e 3c2f 6469 763e  </a></div></div>\n-0001c010: 0a3c 6469 7620 636c 6173 733d 2274 7463  .<div class=\"ttc\n-0001c020: 2220 6964 3d22 6161 3031 3333 335f 6874  \" id=\"aa01333_ht\n-0001c030: 6d6c 5f61 3131 6663 6435 3165 6638 3631  ml_a11fcd51ef861\n-0001c040: 3138 6636 3565 3630 3363 3134 3734 3337  18f65e603c147437\n-0001c050: 3761 3738 6134 3334 3639 6332 3964 3835  7a78a43469c29d85\n-0001c060: 3739 6136 3362 6331 6436 3234 3764 3236  79a63bc1d6247d26\n-0001c070: 3234 3739 3922 3e3c 6469 7620 636c 6173  24799\"><div clas\n-0001c080: 733d 2274 746e 616d 6522 3e3c 6120 6872  s=\"ttname\"><a hr\n-0001c090: 6566 3d22 6130 3133 3333 2e68 746d 6c23  ef=\"a01333.html#\n-0001c0a0: 6131 3166 6364 3531 6566 3836 3131 3866  a11fcd51ef86118f\n-0001c0b0: 3635 6536 3033 6331 3437 3433 3737 6137  65e603c1474377a7\n-0001c0c0: 3861 3433 3436 3963 3239 6438 3537 3961  8a43469c29d8579a\n-0001c0d0: 3633 6263 3164 3632 3437 6432 3632 3437  63bc1d6247d26247\n-0001c0e0: 3939 223e 4f70 656e 5375 6264 6976 3a3a  99\">OpenSubdiv::\n-0001c0f0: 4f50 454e 5355 4244 4956 5f56 4552 5349  OPENSUBDIV_VERSI\n-0001c100: 4f4e 3a3a 5364 633a 3a43 7265 6173 653a  ON::Sdc::Crease:\n-0001c110: 3a52 554c 455f 4441 5254 3c2f 613e 3c2f  :RULE_DART</a></\n-0001c120: 6469 763e 3c64 6976 2063 6c61 7373 3d22  div><div class=\"\n-0001c130: 7474 6465 6369 223e 4020 5255 4c45 5f44  ttdeci\">@ RULE_D\n-0001c140: 4152 543c 2f64 6976 3e3c 6469 7620 636c  ART</div><div cl\n-0001c150: 6173 733d 2274 7464 6566 223e 3c62 3e44  ass=\"ttdef\"><b>D\n-0001c160: 6566 696e 6974 696f 6e3c 2f62 3e20 3c61  efinition</b> <a\n-0001c170: 2068 7265 663d 2261 3030 3733 315f 736f   href=\"a00731_so\n-0001c180: 7572 6365 2e68 746d 6c23 6c30 3030 3835  urce.html#l00085\n-0001c190: 223e 6372 6561 7365 2e68 3a38 353c 2f61  \">crease.h:85</a\n-0001c1a0: 3e3c 2f64 6976 3e3c 2f64 6976 3e0a 3c64  ></div></div>.<d\n-0001c1b0: 6976 2063 6c61 7373 3d22 7474 6322 2069  iv class=\"ttc\" i\n-0001c1c0: 643d 2261 6130 3133 3333 5f68 746d 6c5f  d=\"aa01333_html_\n-0001c1d0: 6131 3166 6364 3531 6566 3836 3131 3866  a11fcd51ef86118f\n-0001c1e0: 3635 6536 3033 6331 3437 3433 3737 6137  65e603c1474377a7\n-0001c1f0: 3861 3631 6431 3337 6638 3636 3939 3765  8a61d137f866997e\n-0001c200: 6433 3639 3365 3366 6361 6437 3664 6566  d3693e3fcad76def\n-0001c210: 3566 223e 3c64 6976 2063 6c61 7373 3d22  5f\"><div class=\"\n-0001c220: 7474 6e61 6d65 223e 3c61 2068 7265 663d  ttname\"><a href=\n-0001c230: 2261 3031 3333 332e 6874 6d6c 2361 3131  \"a01333.html#a11\n-0001c240: 6663 6435 3165 6638 3631 3138 6636 3565  fcd51ef86118f65e\n-0001c250: 3630 3363 3134 3734 3337 3761 3738 6136  603c1474377a78a6\n-0001c260: 3164 3133 3766 3836 3639 3937 6564 3336  1d137f866997ed36\n-0001c270: 3933 6533 6663 6164 3736 6465 6635 6622  93e3fcad76def5f\"\n-0001c280: 3e4f 7065 6e53 7562 6469 763a 3a4f 5045  >OpenSubdiv::OPE\n-0001c290: 4e53 5542 4449 565f 5645 5253 494f 4e3a  NSUBDIV_VERSION:\n-0001c2a0: 3a53 6463 3a3a 4372 6561 7365 3a3a 5255  :Sdc::Crease::RU\n-0001c2b0: 4c45 5f53 4d4f 4f54 483c 2f61 3e3c 2f64  LE_SMOOTH</a></d\n-0001c2c0: 6976 3e3c 6469 7620 636c 6173 733d 2274  iv><div class=\"t\n-0001c2d0: 7464 6563 6922 3e40 2052 554c 455f 534d  tdeci\">@ RULE_SM\n-0001c2e0: 4f4f 5448 3c2f 6469 763e 3c64 6976 2063  OOTH</div><div c\n-0001c2f0: 6c61 7373 3d22 7474 6465 6622 3e3c 623e  lass=\"ttdef\"><b>\n-0001c300: 4465 6669 6e69 7469 6f6e 3c2f 623e 203c  Definition</b> <\n-0001c310: 6120 6872 6566 3d22 6130 3037 3331 5f73  a href=\"a00731_s\n-0001c320: 6f75 7263 652e 6874 6d6c 236c 3030 3038  ource.html#l0008\n-0001c330: 3422 3e63 7265 6173 652e 683a 3834 3c2f  4\">crease.h:84</\n-0001c340: 613e 3c2f 6469 763e 3c2f 6469 763e 0a3c  a></div></div>.<\n-0001c350: 6469 7620 636c 6173 733d 2274 7463 2220  div class=\"ttc\" \n-0001c360: 6964 3d22 6161 3031 3333 335f 6874 6d6c  id=\"aa01333_html\n-0001c370: 5f61 3131 6663 6435 3165 6638 3631 3138  _a11fcd51ef86118\n-0001c380: 6636 3565 3630 3363 3134 3734 3337 3761  f65e603c1474377a\n-0001c390: 3738 6139 3636 6661 3161 6538 6165 6238  78a966fa1ae8aeb8\n-0001c3a0: 3538 3763 3439 3863 6636 6139 3263 6333  587c498cf6a92cc3\n-0001c3b0: 3333 3522 3e3c 6469 7620 636c 6173 733d  335\"><div class=\n-0001c3c0: 2274 746e 616d 6522 3e3c 6120 6872 6566  \"ttname\"><a href\n-0001c3d0: 3d22 6130 3133 3333 2e68 746d 6c23 6131  =\"a01333.html#a1\n-0001c3e0: 3166 6364 3531 6566 3836 3131 3866 3635  1fcd51ef86118f65\n-0001c3f0: 6536 3033 6331 3437 3433 3737 6137 3861  e603c1474377a78a\n-0001c400: 3936 3666 6131 6165 3861 6562 3835 3837  966fa1ae8aeb8587\n-0001c410: 6334 3938 6366 3661 3932 6363 3333 3335  c498cf6a92cc3335\n-0001c420: 223e 4f70 656e 5375 6264 6976 3a3a 4f50  \">OpenSubdiv::OP\n-0001c430: 454e 5355 4244 4956 5f56 4552 5349 4f4e  ENSUBDIV_VERSION\n-0001c440: 3a3a 5364 633a 3a43 7265 6173 653a 3a52  ::Sdc::Crease::R\n-0001c450: 554c 455f 4352 4541 5345 3c2f 613e 3c2f  ULE_CREASE</a></\n-0001c460: 6469 763e 3c64 6976 2063 6c61 7373 3d22  div><div class=\"\n-0001c470: 7474 6465 6369 223e 4020 5255 4c45 5f43  ttdeci\">@ RULE_C\n-0001c480: 5245 4153 453c 2f64 6976 3e3c 6469 7620  REASE</div><div \n-0001c490: 636c 6173 733d 2274 7464 6566 223e 3c62  class=\"ttdef\"><b\n-0001c4a0: 3e44 6566 696e 6974 696f 6e3c 2f62 3e20  >Definition</b> \n-0001c4b0: 3c61 2068 7265 663d 2261 3030 3733 315f  <a href=\"a00731_\n-0001c4c0: 736f 7572 6365 2e68 746d 6c23 6c30 3030  source.html#l000\n-0001c4d0: 3836 223e 6372 6561 7365 2e68 3a38 363c  86\">crease.h:86<\n-0001c4e0: 2f61 3e3c 2f64 6976 3e3c 2f64 6976 3e0a  /a></div></div>.\n-0001c4f0: 3c64 6976 2063 6c61 7373 3d22 7474 6322  <div class=\"ttc\"\n-0001c500: 2069 643d 2261 6130 3133 3333 5f68 746d   id=\"aa01333_htm\n-0001c510: 6c5f 6131 3166 6364 3531 6566 3836 3131  l_a11fcd51ef8611\n-0001c520: 3866 3635 6536 3033 6331 3437 3433 3737  8f65e603c1474377\n-0001c530: 6137 3861 6232 3939 6165 6662 3236 3031  a78ab299aefb2601\n-0001c540: 3361 3739 6435 3231 3931 6137 3838 3766  3a79d52191a7887f\n-0001c550: 6561 3533 223e 3c64 6976 2063 6c61 7373  ea53\"><div class\n-0001c560: 3d22 7474 6e61 6d65 223e 3c61 2068 7265  =\"ttname\"><a hre\n-0001c570: 663d 2261 3031 3333 332e 6874 6d6c 2361  f=\"a01333.html#a\n-0001c580: 3131 6663 6435 3165 6638 3631 3138 6636  11fcd51ef86118f6\n-0001c590: 3565 3630 3363 3134 3734 3337 3761 3738  5e603c1474377a78\n-0001c5a0: 6162 3239 3961 6566 6232 3630 3133 6137  ab299aefb26013a7\n-0001c5b0: 3964 3532 3139 3161 3738 3837 6665 6135  9d52191a7887fea5\n-0001c5c0: 3322 3e4f 7065 6e53 7562 6469 763a 3a4f  3\">OpenSubdiv::O\n-0001c5d0: 5045 4e53 5542 4449 565f 5645 5253 494f  PENSUBDIV_VERSIO\n-0001c5e0: 4e3a 3a53 6463 3a3a 4372 6561 7365 3a3a  N::Sdc::Crease::\n-0001c5f0: 5255 4c45 5f55 4e4b 4e4f 574e 3c2f 613e  RULE_UNKNOWN</a>\n-0001c600: 3c2f 6469 763e 3c64 6976 2063 6c61 7373  </div><div class\n-0001c610: 3d22 7474 6465 6369 223e 4020 5255 4c45  =\"ttdeci\">@ RULE\n-0001c620: 5f55 4e4b 4e4f 574e 3c2f 6469 763e 3c64  _UNKNOWN</div><d\n-0001c630: 6976 2063 6c61 7373 3d22 7474 6465 6622  iv class=\"ttdef\"\n-0001c640: 3e3c 623e 4465 6669 6e69 7469 6f6e 3c2f  ><b>Definition</\n-0001c650: 623e 203c 6120 6872 6566 3d22 6130 3037  b> <a href=\"a007\n-0001c660: 3331 5f73 6f75 7263 652e 6874 6d6c 236c  31_source.html#l\n-0001c670: 3030 3038 3322 3e63 7265 6173 652e 683a  00083\">crease.h:\n-0001c680: 3833 3c2f 613e 3c2f 6469 763e 3c2f 6469  83</a></div></di\n-0001c690: 763e 0a3c 6469 7620 636c 6173 733d 2274  v>.<div class=\"t\n-0001c6a0: 7463 2220 6964 3d22 6161 3031 3333 335f  tc\" id=\"aa01333_\n-0001c6b0: 6874 6d6c 5f61 3336 3266 3232 6537 6362  html_a362f22e7cb\n-0001c6c0: 6131 6130 6239 6636 3365 3962 3030 3763  a1a0b9f63e9b007c\n-0001c6d0: 3139 6632 3936 223e 3c64 6976 2063 6c61  19f296\"><div cla\n-0001c6e0: 7373 3d22 7474 6e61 6d65 223e 3c61 2068  ss=\"ttname\"><a h\n-0001c6f0: 7265 663d 2261 3031 3333 332e 6874 6d6c  ref=\"a01333.html\n-0001c700: 2361 3336 3266 3232 6537 6362 6131 6130  #a362f22e7cba1a0\n-0001c710: 6239 6636 3365 3962 3030 3763 3139 6632  b9f63e9b007c19f2\n-0001c720: 3936 223e 4f70 656e 5375 6264 6976 3a3a  96\">OpenSubdiv::\n-0001c730: 4f50 454e 5355 4244 4956 5f56 4552 5349  OPENSUBDIV_VERSI\n-0001c740: 4f4e 3a3a 5364 633a 3a43 7265 6173 653a  ON::Sdc::Crease:\n-0001c750: 3a47 6574 5368 6172 7045 6467 6550 6169  :GetSharpEdgePai\n-0001c760: 724f 6643 7265 6173 653c 2f61 3e3c 2f64  rOfCrease</a></d\n-0001c770: 6976 3e3c 6469 7620 636c 6173 733d 2274  iv><div class=\"t\n-0001c780: 7464 6563 6922 3e76 6f69 6420 4765 7453  tdeci\">void GetS\n-0001c790: 6861 7270 4564 6765 5061 6972 4f66 4372  harpEdgePairOfCr\n-0001c7a0: 6561 7365 2866 6c6f 6174 2063 6f6e 7374  ease(float const\n-0001c7b0: 202a 696e 6369 6465 6e74 4564 6765 5368   *incidentEdgeSh\n-0001c7c0: 6172 706e 6573 732c 2069 6e74 2069 6e63  arpness, int inc\n-0001c7d0: 6964 656e 7445 6467 6543 6f75 6e74 2c20  identEdgeCount, \n-0001c7e0: 696e 7420 7368 6172 7045 6467 6550 6169  int sharpEdgePai\n-0001c7f0: 725b 325d 2920 636f 6e73 743c 2f64 6976  r[2]) const</div\n-0001c800: 3e3c 6469 7620 636c 6173 733d 2274 7464  ><div class=\"ttd\n-0001c810: 6566 223e 3c62 3e44 6566 696e 6974 696f  ef\"><b>Definitio\n-0001c820: 6e3c 2f62 3e20 3c61 2068 7265 663d 2261  n</b> <a href=\"a\n-0001c830: 3030 3733 315f 736f 7572 6365 2e68 746d  00731_source.htm\n-0001c840: 6c23 6c30 3032 3238 223e 6372 6561 7365  l#l00228\">crease\n-0001c850: 2e68 3a32 3238 3c2f 613e 3c2f 6469 763e  .h:228</a></div>\n-0001c860: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n-0001c870: 733d 2274 7463 2220 6964 3d22 6161 3031  s=\"ttc\" id=\"aa01\n-0001c880: 3333 335f 6874 6d6c 5f61 3431 6562 6237  333_html_a41ebb7\n-0001c890: 3564 3238 6335 3937 3333 3238 6530 6533  5d28c5973328e0e3\n-0001c8a0: 3838 3334 3935 6165 6261 223e 3c64 6976  883495aeba\"><div\n-0001c8b0: 2063 6c61 7373 3d22 7474 6e61 6d65 223e   class=\"ttname\">\n-0001c8c0: 3c61 2068 7265 663d 2261 3031 3333 332e  <a href=\"a01333.\n-0001c8d0: 6874 6d6c 2361 3431 6562 6237 3564 3238  html#a41ebb75d28\n-0001c8e0: 6335 3937 3333 3238 6530 6533 3838 3334  c5973328e0e38834\n-0001c8f0: 3935 6165 6261 223e 4f70 656e 5375 6264  95aeba\">OpenSubd\n-0001c900: 6976 3a3a 4f50 454e 5355 4244 4956 5f56  iv::OPENSUBDIV_V\n-0001c910: 4552 5349 4f4e 3a3a 5364 633a 3a43 7265  ERSION::Sdc::Cre\n-0001c920: 6173 653a 3a44 6574 6572 6d69 6e65 5665  ase::DetermineVe\n-0001c930: 7274 6578 5665 7274 6578 5275 6c65 3c2f  rtexVertexRule</\n-0001c940: 613e 3c2f 6469 763e 3c64 6976 2063 6c61  a></div><div cla\n-0001c950: 7373 3d22 7474 6465 6369 223e 5275 6c65  ss=\"ttdeci\">Rule\n-0001c960: 2044 6574 6572 6d69 6e65 5665 7274 6578   DetermineVertex\n-0001c970: 5665 7274 6578 5275 6c65 2866 6c6f 6174  VertexRule(float\n-0001c980: 2076 6572 7465 7853 6861 7270 6e65 7373   vertexSharpness\n-0001c990: 2c20 696e 7420 696e 6369 6465 6e74 4564  , int incidentEd\n-0001c9a0: 6765 436f 756e 742c 2066 6c6f 6174 2063  geCount, float c\n-0001c9b0: 6f6e 7374 202a 696e 6369 6465 6e74 4564  onst *incidentEd\n-0001c9c0: 6765 5368 6172 706e 6573 7329 2063 6f6e  geSharpness) con\n-0001c9d0: 7374 3c2f 6469 763e 3c2f 6469 763e 0a3c  st</div></div>.<\n-0001c9e0: 6469 7620 636c 6173 733d 2274 7463 2220  div class=\"ttc\" \n-0001c9f0: 6964 3d22 6161 3031 3333 335f 6874 6d6c  id=\"aa01333_html\n-0001ca00: 5f61 3564 6661 3638 3130 6635 3130 6661  _a5dfa6810f510fa\n-0001ca10: 6331 6563 3632 3166 6339 6536 6235 3330  c1ec621fc9e6b530\n-0001ca20: 6334 223e 3c64 6976 2063 6c61 7373 3d22  c4\"><div class=\"\n-0001ca30: 7474 6e61 6d65 223e 3c61 2068 7265 663d  ttname\"><a href=\n-0001ca40: 2261 3031 3333 332e 6874 6d6c 2361 3564  \"a01333.html#a5d\n-0001ca50: 6661 3638 3130 6635 3130 6661 6331 6563  fa6810f510fac1ec\n-0001ca60: 3632 3166 6339 6536 6235 3330 6334 223e  621fc9e6b530c4\">\n-0001ca70: 4f70 656e 5375 6264 6976 3a3a 4f50 454e  OpenSubdiv::OPEN\n-0001ca80: 5355 4244 4956 5f56 4552 5349 4f4e 3a3a  SUBDIV_VERSION::\n-0001ca90: 5364 633a 3a43 7265 6173 653a 3a49 7355  Sdc::Crease::IsU\n-0001caa0: 6e69 666f 726d 3c2f 613e 3c2f 6469 763e  niform</a></div>\n-0001cab0: 3c64 6976 2063 6c61 7373 3d22 7474 6465  <div class=\"ttde\n-0001cac0: 6369 223e 626f 6f6c 2049 7355 6e69 666f  ci\">bool IsUnifo\n-0001cad0: 726d 2829 2063 6f6e 7374 3c2f 6469 763e  rm() const</div>\n-0001cae0: 3c64 6976 2063 6c61 7373 3d22 7474 6465  <div class=\"ttde\n-0001caf0: 6622 3e3c 623e 4465 6669 6e69 7469 6f6e  f\"><b>Definition\n-0001cb00: 3c2f 623e 203c 6120 6872 6566 3d22 6130  </b> <a href=\"a0\n-0001cb10: 3037 3331 5f73 6f75 7263 652e 6874 6d6c  0731_source.html\n-0001cb20: 236c 3030 3039 3522 3e63 7265 6173 652e  #l00095\">crease.\n-0001cb30: 683a 3935 3c2f 613e 3c2f 6469 763e 3c2f  h:95</a></div></\n-0001cb40: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n-0001cb50: 2274 7463 2220 6964 3d22 6161 3031 3333  \"ttc\" id=\"aa0133\n-0001cb60: 335f 6874 6d6c 5f61 6231 3366 3635 3466  3_html_ab13f654f\n-0001cb70: 3235 6566 3736 3238 3339 3666 6439 3032  25ef7628396fd902\n-0001cb80: 3239 3162 3866 3936 223e 3c64 6976 2063  291b8f96\"><div c\n-0001cb90: 6c61 7373 3d22 7474 6e61 6d65 223e 3c61  lass=\"ttname\"><a\n-0001cba0: 2068 7265 663d 2261 3031 3333 332e 6874   href=\"a01333.ht\n-0001cbb0: 6d6c 2361 6231 3366 3635 3466 3235 6566  ml#ab13f654f25ef\n-0001cbc0: 3736 3238 3339 3666 6439 3032 3239 3162  7628396fd902291b\n-0001cbd0: 3866 3936 223e 4f70 656e 5375 6264 6976  8f96\">OpenSubdiv\n-0001cbe0: 3a3a 4f50 454e 5355 4244 4956 5f56 4552  ::OPENSUBDIV_VER\n-0001cbf0: 5349 4f4e 3a3a 5364 633a 3a43 7265 6173  SION::Sdc::Creas\n-0001cc00: 653a 3a43 6f6d 7075 7465 4672 6163 7469  e::ComputeFracti\n-0001cc10: 6f6e 616c 5765 6967 6874 4174 5665 7274  onalWeightAtVert\n-0001cc20: 6578 3c2f 613e 3c2f 6469 763e 3c64 6976  ex</a></div><div\n-0001cc30: 2063 6c61 7373 3d22 7474 6465 6369 223e   class=\"ttdeci\">\n-0001cc40: 666c 6f61 7420 436f 6d70 7574 6546 7261  float ComputeFra\n-0001cc50: 6374 696f 6e61 6c57 6569 6768 7441 7456  ctionalWeightAtV\n-0001cc60: 6572 7465 7828 666c 6f61 7420 7665 7274  ertex(float vert\n-0001cc70: 6578 5368 6172 706e 6573 732c 2066 6c6f  exSharpness, flo\n-0001cc80: 6174 2063 6869 6c64 5665 7274 6578 5368  at childVertexSh\n-0001cc90: 6172 706e 6573 732c 2069 6e74 2069 6e63  arpness, int inc\n-0001cca0: 6964 656e 7445 6467 6543 6f75 6e74 2c20  identEdgeCount, \n-0001ccb0: 666c 6f61 7420 636f 6e73 7420 2a69 6e63  float const *inc\n-0001ccc0: 6964 656e 7445 6467 6553 6861 7270 6e65  identEdgeSharpne\n-0001ccd0: 7373 2c20 666c 6f61 7420 636f 6e73 7420  ss, float const \n-0001cce0: 2a63 6869 6c64 4564 6765 7353 6861 7270  *childEdgesSharp\n-0001ccf0: 6e65 7373 2920 636f 6e73 743c 2f64 6976  ness) const</div\n-0001cd00: 3e3c 6469 7620 636c 6173 733d 2274 7464  ><div class=\"ttd\n-0001cd10: 6f63 223e 5472 616e 7369 7469 6f6e 616c  oc\">Transitional\n-0001cd20: 2077 6569 6768 7469 6e67 3a20 5768 656e   weighting: When\n-0001cd30: 2074 6865 2072 756c 6573 2061 7070 6c69   the rules appli\n-0001cd40: 6361 626c 6520 746f 2061 2070 6172 656e  cable to a paren\n-0001cd50: 7420 7665 7274 6578 2061 6e64 2069 7473  t vertex and its\n-0001cd60: 2063 6869 6c64 2064 6966 6665 722c 2e2e   child differ,..\n-0001cd70: 2e3c 2f64 6976 3e3c 2f64 6976 3e0a 3c64  .</div></div>.<d\n-0001cd80: 6976 2063 6c61 7373 3d22 7474 6322 2069  iv class=\"ttc\" i\n-0001cd90: 643d 2261 6130 3133 3337 5f68 746d 6c22  d=\"aa01337_html\"\n-0001cda0: 3e3c 6469 7620 636c 6173 733d 2274 746e  ><div class=\"ttn\n-0001cdb0: 616d 6522 3e3c 6120 6872 6566 3d22 6130  ame\"><a href=\"a0\n-0001cdc0: 3133 3337 2e68 746d 6c22 3e4f 7065 6e53  1337.html\">OpenS\n-0001cdd0: 7562 6469 763a 3a4f 5045 4e53 5542 4449  ubdiv::OPENSUBDI\n-0001cde0: 565f 5645 5253 494f 4e3a 3a53 6463 3a3a  V_VERSION::Sdc::\n-0001cdf0: 4f70 7469 6f6e 733c 2f61 3e3c 2f64 6976  Options</a></div\n-0001ce00: 3e3c 6469 7620 636c 6173 733d 2274 7464  ><div class=\"ttd\n-0001ce10: 6f63 223e 416c 6c20 7375 7070 6f72 7465  oc\">All supporte\n-0001ce20: 6420 6f70 7469 6f6e 7320 6170 706c 7969  d options applyi\n-0001ce30: 6e67 2074 6f20 7375 6264 6976 6973 696f  ng to subdivisio\n-0001ce40: 6e20 7363 6865 6d65 2e3c 2f64 6976 3e3c  n scheme.</div><\n-0001ce50: 6469 7620 636c 6173 733d 2274 7464 6566  div class=\"ttdef\n-0001ce60: 223e 3c62 3e44 6566 696e 6974 696f 6e3c  \"><b>Definition<\n-0001ce70: 2f62 3e20 3c61 2068 7265 663d 2261 3030  /b> <a href=\"a00\n-0001ce80: 3733 345f 736f 7572 6365 2e68 746d 6c23  734_source.html#\n-0001ce90: 6c30 3030 3531 223e 6f70 7469 6f6e 732e  l00051\">options.\n-0001cea0: 683a 3531 3c2f 613e 3c2f 6469 763e 3c2f  h:51</a></div></\n-0001ceb0: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n-0001cec0: 2274 7463 2220 6964 3d22 6161 3031 3334  \"ttc\" id=\"aa0134\n-0001ced0: 315f 6874 6d6c 223e 3c64 6976 2063 6c61  1_html\"><div cla\n-0001cee0: 7373 3d22 7474 6e61 6d65 223e 3c61 2068  ss=\"ttname\"><a h\n-0001cef0: 7265 663d 2261 3031 3334 312e 6874 6d6c  ref=\"a01341.html\n-0001cf00: 223e 4f70 656e 5375 6264 6976 3a3a 4f50  \">OpenSubdiv::OP\n-0001cf10: 454e 5355 4244 4956 5f56 4552 5349 4f4e  ENSUBDIV_VERSION\n-0001cf20: 3a3a 5364 633a 3a53 6368 656d 653c 2f61  ::Sdc::Scheme</a\n-0001cf30: 3e3c 2f64 6976 3e3c 6469 7620 636c 6173  ></div><div clas\n-0001cf40: 733d 2274 7464 6f63 223e 5363 6865 6d65  s=\"ttdoc\">Scheme\n-0001cf50: 2069 7320 6120 636c 6173 7320 7465 6d70   is a class temp\n-0001cf60: 6c61 7465 2077 6869 6368 2070 726f 7669  late which provi\n-0001cf70: 6465 7320 616c 6c20 696d 706c 656d 656e  des all implemen\n-0001cf80: 7461 7469 6f6e 2066 6f72 2074 6865 2073  tation for the s\n-0001cf90: 7562 6469 7669 7369 6f6e 2073 6368 656d  ubdivision schem\n-0001cfa0: 6573 2073 7570 706f 7274 6564 2062 792e  es supported by.\n-0001cfb0: 2e2e 3c2f 6469 763e 3c64 6976 2063 6c61  ..</div><div cla\n-0001cfc0: 7373 3d22 7474 6465 6622 3e3c 623e 4465  ss=\"ttdef\"><b>De\n-0001cfd0: 6669 6e69 7469 6f6e 3c2f 623e 203c 6120  finition</b> <a \n-0001cfe0: 6872 6566 3d22 6130 3037 3433 5f73 6f75  href=\"a00743_sou\n-0001cff0: 7263 652e 6874 6d6c 236c 3030 3036 3622  rce.html#l00066\"\n-0001d000: 3e73 6368 656d 652e 683a 3636 3c2f 613e  >scheme.h:66</a>\n-0001d010: 3c2f 6469 763e 3c2f 6469 763e 0a3c 6469  </div></div>.<di\n-0001d020: 7620 636c 6173 733d 2274 7463 2220 6964  v class=\"ttc\" id\n-0001d030: 3d22 6161 3031 3334 315f 6874 6d6c 5f61  =\"aa01341_html_a\n-0001d040: 3035 3966 3563 3263 3931 3933 6265 3538  059f5c2c9193be58\n-0001d050: 6265 3331 3935 3565 3938 3761 3036 3030  be31955e987a0600\n-0001d060: 223e 3c64 6976 2063 6c61 7373 3d22 7474  \"><div class=\"tt\n-0001d070: 6e61 6d65 223e 3c61 2068 7265 663d 2261  name\"><a href=\"a\n-0001d080: 3031 3334 312e 6874 6d6c 2361 3035 3966  01341.html#a059f\n-0001d090: 3563 3263 3931 3933 6265 3538 6265 3331  5c2c9193be58be31\n-0001d0a0: 3935 3565 3938 3761 3036 3030 223e 4f70  955e987a0600\">Op\n-0001d0b0: 656e 5375 6264 6976 3a3a 4f50 454e 5355  enSubdiv::OPENSU\n-0001d0c0: 4244 4956 5f56 4552 5349 4f4e 3a3a 5364  BDIV_VERSION::Sd\n-0001d0d0: 633a 3a53 6368 656d 653a 3a61 7373 6967  c::Scheme::assig\n-0001d0e0: 6e53 6d6f 6f74 684d 6173 6b46 6f72 4564  nSmoothMaskForEd\n-0001d0f0: 6765 3c2f 613e 3c2f 6469 763e 3c64 6976  ge</a></div><div\n-0001d100: 2063 6c61 7373 3d22 7474 6465 6369 223e   class=\"ttdeci\">\n-0001d110: 766f 6964 2061 7373 6967 6e53 6d6f 6f74  void assignSmoot\n-0001d120: 684d 6173 6b46 6f72 4564 6765 2845 4447  hMaskForEdge(EDG\n-0001d130: 4520 636f 6e73 7420 2661 6d70 3b65 6467  E const &amp;edg\n-0001d140: 652c 204d 4153 4b20 2661 6d70 3b6d 6173  e, MASK &amp;mas\n-0001d150: 6b29 2063 6f6e 7374 3c2f 6469 763e 3c2f  k) const</div></\n-0001d160: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n-0001d170: 2274 7463 2220 6964 3d22 6161 3031 3334  \"ttc\" id=\"aa0134\n-0001d180: 315f 6874 6d6c 5f61 3134 6239 3764 6464  1_html_a14b97ddd\n-0001d190: 6535 6662 6133 3163 6137 6639 3333 3530  e5fba31ca7f93350\n-0001d1a0: 3865 6536 3439 6461 223e 3c64 6976 2063  8ee649da\"><div c\n-0001d1b0: 6c61 7373 3d22 7474 6e61 6d65 223e 3c61  lass=\"ttname\"><a\n-0001d1c0: 2068 7265 663d 2261 3031 3334 312e 6874   href=\"a01341.ht\n-0001d1d0: 6d6c 2361 3134 6239 3764 6464 6535 6662  ml#a14b97ddde5fb\n-0001d1e0: 6133 3163 6137 6639 3333 3530 3865 6536  a31ca7f933508ee6\n-0001d1f0: 3439 6461 223e 4f70 656e 5375 6264 6976  49da\">OpenSubdiv\n-0001d200: 3a3a 4f50 454e 5355 4244 4956 5f56 4552  ::OPENSUBDIV_VER\n-0001d210: 5349 4f4e 3a3a 5364 633a 3a53 6368 656d  SION::Sdc::Schem\n-0001d220: 653a 3a47 6574 546f 706f 6c6f 6769 6361  e::GetTopologica\n-0001d230: 6c53 706c 6974 5479 7065 3c2f 613e 3c2f  lSplitType</a></\n-0001d240: 6469 763e 3c64 6976 2063 6c61 7373 3d22  div><div class=\"\n-0001d250: 7474 6465 6369 223e 7374 6174 6963 2053  ttdeci\">static S\n-0001d260: 706c 6974 2047 6574 546f 706f 6c6f 6769  plit GetTopologi\n-0001d270: 6361 6c53 706c 6974 5479 7065 2829 3c2f  calSplitType()</\n-0001d280: 6469 763e 3c2f 6469 763e 0a3c 6469 7620  div></div>.<div \n-0001d290: 636c 6173 733d 2274 7463 2220 6964 3d22  class=\"ttc\" id=\"\n-0001d2a0: 6161 3031 3334 315f 6874 6d6c 5f61 3234  aa01341_html_a24\n-0001d2b0: 3339 6537 3833 3733 6439 6466 6436 6164  39e78373d9dfd6ad\n-0001d2c0: 3361 6233 3733 6337 6333 3264 6363 223e  3ab373c7c32dcc\">\n-0001d2d0: 3c64 6976 2063 6c61 7373 3d22 7474 6e61  <div class=\"ttna\n-0001d2e0: 6d65 223e 3c61 2068 7265 663d 2261 3031  me\"><a href=\"a01\n-0001d2f0: 3334 312e 6874 6d6c 2361 3234 3339 6537  341.html#a2439e7\n-0001d300: 3833 3733 6439 6466 6436 6164 3361 6233  8373d9dfd6ad3ab3\n-0001d310: 3733 6337 6333 3264 6363 223e 4f70 656e  73c7c32dcc\">Open\n-0001d320: 5375 6264 6976 3a3a 4f50 454e 5355 4244  Subdiv::OPENSUBD\n-0001d330: 4956 5f56 4552 5349 4f4e 3a3a 5364 633a  IV_VERSION::Sdc:\n-0001d340: 3a53 6368 656d 653a 3a61 7373 6967 6e43  :Scheme::assignC\n-0001d350: 7265 6173 654d 6173 6b46 6f72 5665 7274  reaseMaskForVert\n-0001d360: 6578 3c2f 613e 3c2f 6469 763e 3c64 6976  ex</a></div><div\n-0001d370: 2063 6c61 7373 3d22 7474 6465 6369 223e   class=\"ttdeci\">\n-0001d380: 766f 6964 2061 7373 6967 6e43 7265 6173  void assignCreas\n-0001d390: 654d 6173 6b46 6f72 5665 7274 6578 2856  eMaskForVertex(V\n-0001d3a0: 4552 5445 5820 636f 6e73 7420 2661 6d70  ERTEX const &amp\n-0001d3b0: 3b65 6467 652c 204d 4153 4b20 2661 6d70  ;edge, MASK &amp\n-0001d3c0: 3b6d 6173 6b2c 2069 6e74 2063 6f6e 7374  ;mask, int const\n-0001d3d0: 2063 7265 6173 6545 6e64 735b 325d 2920   creaseEnds[2]) \n-0001d3e0: 636f 6e73 743c 2f64 6976 3e3c 2f64 6976  const</div></div\n-0001d3f0: 3e0a 3c64 6976 2063 6c61 7373 3d22 7474  >.<div class=\"tt\n-0001d400: 6322 2069 643d 2261 6130 3133 3431 5f68  c\" id=\"aa01341_h\n-0001d410: 746d 6c5f 6133 3238 6361 3236 6536 3134  tml_a328ca26e614\n-0001d420: 3238 3338 6334 3834 3462 3033 3435 3436  2838c4844b034546\n-0001d430: 6662 3863 3722 3e3c 6469 7620 636c 6173  fb8c7\"><div clas\n-0001d440: 733d 2274 746e 616d 6522 3e3c 6120 6872  s=\"ttname\"><a hr\n-0001d450: 6566 3d22 6130 3133 3431 2e68 746d 6c23  ef=\"a01341.html#\n-0001d460: 6133 3238 6361 3236 6536 3134 3238 3338  a328ca26e6142838\n-0001d470: 6334 3834 3462 3033 3435 3436 6662 3863  c4844b034546fb8c\n-0001d480: 3722 3e4f 7065 6e53 7562 6469 763a 3a4f  7\">OpenSubdiv::O\n-0001d490: 5045 4e53 5542 4449 565f 5645 5253 494f  PENSUBDIV_VERSIO\n-0001d4a0: 4e3a 3a53 6463 3a3a 5363 6865 6d65 3a3a  N::Sdc::Scheme::\n-0001d4b0: 436f 6d70 7574 6556 6572 7465 7856 6572  ComputeVertexVer\n-0001d4c0: 7465 784d 6173 6b3c 2f61 3e3c 2f64 6976  texMask</a></div\n-0001d4d0: 3e3c 6469 7620 636c 6173 733d 2274 7464  ><div class=\"ttd\n-0001d4e0: 6563 6922 3e76 6f69 6420 436f 6d70 7574  eci\">void Comput\n-0001d4f0: 6556 6572 7465 7856 6572 7465 784d 6173  eVertexVertexMas\n-0001d500: 6b28 5645 5254 4558 2063 6f6e 7374 2026  k(VERTEX const &\n-0001d510: 616d 703b 7665 7274 6578 4e65 6967 6862  amp;vertexNeighb\n-0001d520: 6f72 686f 6f64 2c20 4d41 534b 2026 616d  orhood, MASK &am\n-0001d530: 703b 7665 7274 6578 5665 7274 6578 4d61  p;vertexVertexMa\n-0001d540: 736b 2c20 4372 6561 7365 3a3a 5275 6c65  sk, Crease::Rule\n-0001d550: 2070 6172 656e 7452 756c 653d 4372 6561   parentRule=Crea\n-0001d560: 7365 3a3a 5255 4c45 5f55 4e4b 4e4f 574e  se::RULE_UNKNOWN\n-0001d570: 2c20 4372 6561 7365 3a3a 5275 6c65 2063  , Crease::Rule c\n-0001d580: 6869 6c64 5275 6c65 3d43 7265 6173 653a  hildRule=Crease:\n-0001d590: 3a52 554c 455f 554e 4b4e 4f57 4e29 2063  :RULE_UNKNOWN) c\n-0001d5a0: 6f6e 7374 3c2f 6469 763e 3c64 6976 2063  onst</div><div c\n-0001d5b0: 6c61 7373 3d22 7474 646f 6322 3e56 6572  lass=\"ttdoc\">Ver\n-0001d5c0: 7465 782d 7665 7274 6578 206d 6173 6b73  tex-vertex masks\n-0001d5d0: 2049 6620 6b6e 6f77 6e2c 2061 2073 696e   If known, a sin\n-0001d5e0: 676c 6520 5275 6c65 206f 7220 7061 6972  gle Rule or pair\n-0001d5f0: 206f 6620 5275 6c65 7320 6361 6e20 6265   of Rules can be\n-0001d600: 2073 7065 6369 6669 6564 2028 696e 6469   specified (indi\n-0001d610: 6361 7469 6e67 2061 2063 7265 6173 6520  cating a crease \n-0001d620: 7472 2e2e 2e3c 2f64 6976 3e3c 6469 7620  tr...</div><div \n-0001d630: 636c 6173 733d 2274 7464 6566 223e 3c62  class=\"ttdef\"><b\n-0001d640: 3e44 6566 696e 6974 696f 6e3c 2f62 3e20  >Definition</b> \n-0001d650: 3c61 2068 7265 663d 2261 3030 3734 335f  <a href=\"a00743_\n-0001d660: 736f 7572 6365 2e68 746d 6c23 6c30 3035  source.html#l005\n-0001d670: 3132 223e 7363 6865 6d65 2e68 3a35 3132  12\">scheme.h:512\n-0001d680: 3c2f 613e 3c2f 6469 763e 3c2f 6469 763e  </a></div></div>\n-0001d690: 0a3c 6469 7620 636c 6173 733d 2274 7463  .<div class=\"ttc\n-0001d6a0: 2220 6964 3d22 6161 3031 3334 315f 6874  \" id=\"aa01341_ht\n-0001d6b0: 6d6c 5f61 3363 3864 3736 3363 6131 3863  ml_a3c8d763ca18c\n-0001d6c0: 3435 3763 3933 3664 6230 6534 3739 3937  457c936db0e47997\n-0001d6d0: 3436 6632 223e 3c64 6976 2063 6c61 7373  46f2\"><div class\n-0001d6e0: 3d22 7474 6e61 6d65 223e 3c61 2068 7265  =\"ttname\"><a hre\n-0001d6f0: 663d 2261 3031 3334 312e 6874 6d6c 2361  f=\"a01341.html#a\n-0001d700: 3363 3864 3736 3363 6131 3863 3435 3763  3c8d763ca18c457c\n-0001d710: 3933 3664 6230 6534 3739 3937 3436 6632  936db0e4799746f2\n-0001d720: 223e 4f70 656e 5375 6264 6976 3a3a 4f50  \">OpenSubdiv::OP\n-0001d730: 454e 5355 4244 4956 5f56 4552 5349 4f4e  ENSUBDIV_VERSION\n-0001d740: 3a3a 5364 633a 3a53 6368 656d 653a 3a43  ::Sdc::Scheme::C\n-0001d750: 6f6d 7075 7465 5665 7274 6578 4c69 6d69  omputeVertexLimi\n-0001d760: 744d 6173 6b3c 2f61 3e3c 2f64 6976 3e3c  tMask</a></div><\n-0001d770: 6469 7620 636c 6173 733d 2274 7464 6563  div class=\"ttdec\n-0001d780: 6922 3e76 6f69 6420 436f 6d70 7574 6556  i\">void ComputeV\n-0001d790: 6572 7465 784c 696d 6974 4d61 736b 2856  ertexLimitMask(V\n-0001d7a0: 4552 5445 5820 636f 6e73 7420 2661 6d70  ERTEX const &amp\n-0001d7b0: 3b76 6572 7465 784e 6569 6768 626f 7268  ;vertexNeighborh\n-0001d7c0: 6f6f 642c 204d 4153 4b20 2661 6d70 3b70  ood, MASK &amp;p\n-0001d7d0: 6f73 6974 696f 6e4d 6173 6b2c 2043 7265  ositionMask, Cre\n-0001d7e0: 6173 653a 3a52 756c 6520 7665 7274 6578  ase::Rule vertex\n-0001d7f0: 5275 6c65 2920 636f 6e73 743c 2f64 6976  Rule) const</div\n-0001d800: 3e3c 6469 7620 636c 6173 733d 2274 7464  ><div class=\"ttd\n-0001d810: 6f63 223e 4c69 6d69 7420 6d61 736b 7320  oc\">Limit masks \n-0001d820: 666f 7220 7665 7274 6963 6573 20e2 8093  for vertices ...\n-0001d830: 2070 6f73 6974 696f 6e20 616e 6420 7461   position and ta\n-0001d840: 6e67 656e 7473 2054 6865 7365 2070 7265  ngents These pre\n-0001d850: 7375 6d65 2074 6861 7420 6120 7665 7274  sume that a vert\n-0001d860: 6578 2069 7320 7375 6974 6162 6c79 2069  ex is suitably i\n-0001d870: 736f 6c61 7465 6420 666f 722e 2e2e 3c2f  solated for...</\n-0001d880: 6469 763e 3c64 6976 2063 6c61 7373 3d22  div><div class=\"\n-0001d890: 7474 6465 6622 3e3c 623e 4465 6669 6e69  ttdef\"><b>Defini\n-0001d8a0: 7469 6f6e 3c2f 623e 203c 6120 6872 6566  tion</b> <a href\n-0001d8b0: 3d22 6130 3037 3433 5f73 6f75 7263 652e  =\"a00743_source.\n-0001d8c0: 6874 6d6c 236c 3030 3630 3722 3e73 6368  html#l00607\">sch\n-0001d8d0: 656d 652e 683a 3630 373c 2f61 3e3c 2f64  eme.h:607</a></d\n-0001d8e0: 6976 3e3c 2f64 6976 3e0a 3c64 6976 2063  iv></div>.<div c\n-0001d8f0: 6c61 7373 3d22 7474 6322 2069 643d 2261  lass=\"ttc\" id=\"a\n-0001d900: 6130 3133 3431 5f68 746d 6c5f 6134 6638  a01341_html_a4f8\n-0001d910: 6535 3539 6239 3362 6261 6632 3665 6130  e559b93bbaf26ea0\n-0001d920: 6434 3062 3166 6132 6631 3934 6622 3e3c  d40b1fa2f194f\"><\n-0001d930: 6469 7620 636c 6173 733d 2274 746e 616d  div class=\"ttnam\n-0001d940: 6522 3e3c 6120 6872 6566 3d22 6130 3133  e\"><a href=\"a013\n-0001d950: 3431 2e68 746d 6c23 6134 6638 6535 3539  41.html#a4f8e559\n-0001d960: 6239 3362 6261 6632 3665 6130 6434 3062  b93bbaf26ea0d40b\n-0001d970: 3166 6132 6631 3934 6622 3e4f 7065 6e53  1fa2f194f\">OpenS\n-0001d980: 7562 6469 763a 3a4f 5045 4e53 5542 4449  ubdiv::OPENSUBDI\n-0001d990: 565f 5645 5253 494f 4e3a 3a53 6463 3a3a  V_VERSION::Sdc::\n-0001d9a0: 5363 6865 6d65 3a3a 6173 7369 676e 4372  Scheme::assignCr\n-0001d9b0: 6561 7365 4c69 6d69 7454 616e 6765 6e74  easeLimitTangent\n-0001d9c0: 4d61 736b 733c 2f61 3e3c 2f64 6976 3e3c  Masks</a></div><\n-0001d9d0: 6469 7620 636c 6173 733d 2274 7464 6563  div class=\"ttdec\n-0001d9e0: 6922 3e76 6f69 6420 6173 7369 676e 4372  i\">void assignCr\n-0001d9f0: 6561 7365 4c69 6d69 7454 616e 6765 6e74  easeLimitTangent\n-0001da00: 4d61 736b 7328 5645 5254 4558 2063 6f6e  Masks(VERTEX con\n-0001da10: 7374 2026 616d 703b 7665 7274 6578 2c20  st &amp;vertex, \n-0001da20: 4d41 534b 2026 616d 703b 7461 6e31 2c20  MASK &amp;tan1, \n-0001da30: 4d41 534b 2026 616d 703b 7461 6e32 2c20  MASK &amp;tan2, \n-0001da40: 696e 7420 636f 6e73 7420 6372 6561 7365  int const crease\n-0001da50: 456e 6473 5b32 5d29 2063 6f6e 7374 3c2f  Ends[2]) const</\n-0001da60: 6469 763e 3c2f 6469 763e 0a3c 6469 7620  div></div>.<div \n-0001da70: 636c 6173 733d 2274 7463 2220 6964 3d22  class=\"ttc\" id=\"\n-0001da80: 6161 3031 3334 315f 6874 6d6c 5f61 3533  aa01341_html_a53\n-0001da90: 3130 3034 3731 3663 3037 6161 6435 3433  1004716c07aad543\n-0001daa0: 3663 6232 6462 3237 6531 6563 3234 223e  6cb2db27e1ec24\">\n-0001dab0: 3c64 6976 2063 6c61 7373 3d22 7474 6e61  <div class=\"ttna\n-0001dac0: 6d65 223e 3c61 2068 7265 663d 2261 3031  me\"><a href=\"a01\n-0001dad0: 3334 312e 6874 6d6c 2361 3533 3130 3034  341.html#a531004\n-0001dae0: 3731 3663 3037 6161 6435 3433 3663 6232  716c07aad5436cb2\n-0001daf0: 6462 3237 6531 6563 3234 223e 4f70 656e  db27e1ec24\">Open\n-0001db00: 5375 6264 6976 3a3a 4f50 454e 5355 4244  Subdiv::OPENSUBD\n-0001db10: 4956 5f56 4552 5349 4f4e 3a3a 5364 633a  IV_VERSION::Sdc:\n-0001db20: 3a53 6368 656d 653a 3a47 6574 5265 6775  :Scheme::GetRegu\n-0001db30: 6c61 7246 6163 6553 697a 653c 2f61 3e3c  larFaceSize</a><\n-0001db40: 2f64 6976 3e3c 6469 7620 636c 6173 733d  /div><div class=\n-0001db50: 2274 7464 6563 6922 3e73 7461 7469 6320  \"ttdeci\">static \n-0001db60: 696e 7420 4765 7452 6567 756c 6172 4661  int GetRegularFa\n-0001db70: 6365 5369 7a65 2829 3c2f 6469 763e 3c2f  ceSize()</div></\n-0001db80: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n-0001db90: 2274 7463 2220 6964 3d22 6161 3031 3334  \"ttc\" id=\"aa0134\n-0001dba0: 315f 6874 6d6c 5f61 3536 3936 3461 3463  1_html_a56964a4c\n-0001dbb0: 3738 3361 6131 3565 6331 6638 3139 3330  783aa15ec1f81930\n-0001dbc0: 3665 6539 6632 3134 223e 3c64 6976 2063  6ee9f214\"><div c\n-0001dbd0: 6c61 7373 3d22 7474 6e61 6d65 223e 3c61  lass=\"ttname\"><a\n-0001dbe0: 2068 7265 663d 2261 3031 3334 312e 6874   href=\"a01341.ht\n-0001dbf0: 6d6c 2361 3536 3936 3461 3463 3738 3361  ml#a56964a4c783a\n-0001dc00: 6131 3565 6331 6638 3139 3330 3665 6539  a15ec1f819306ee9\n-0001dc10: 6632 3134 223e 4f70 656e 5375 6264 6976  f214\">OpenSubdiv\n-0001dc20: 3a3a 4f50 454e 5355 4244 4956 5f56 4552  ::OPENSUBDIV_VER\n-0001dc30: 5349 4f4e 3a3a 5364 633a 3a53 6368 656d  SION::Sdc::Schem\n-0001dc40: 653a 3a61 7373 6967 6e43 7265 6173 654d  e::assignCreaseM\n-0001dc50: 6173 6b46 6f72 4564 6765 3c2f 613e 3c2f  askForEdge</a></\n-0001dc60: 6469 763e 3c64 6976 2063 6c61 7373 3d22  div><div class=\"\n-0001dc70: 7474 6465 6369 223e 766f 6964 2061 7373  ttdeci\">void ass\n-0001dc80: 6967 6e43 7265 6173 654d 6173 6b46 6f72  ignCreaseMaskFor\n-0001dc90: 4564 6765 2845 4447 4520 636f 6e73 7420  Edge(EDGE const \n-0001dca0: 2661 6d70 3b65 6467 652c 204d 4153 4b20  &amp;edge, MASK \n-0001dcb0: 2661 6d70 3b6d 6173 6b29 2063 6f6e 7374  &amp;mask) const\n-0001dcc0: 3c2f 6469 763e 3c64 6976 2063 6c61 7373  </div><div class\n-0001dcd0: 3d22 7474 6465 6622 3e3c 623e 4465 6669  =\"ttdef\"><b>Defi\n-0001dce0: 6e69 7469 6f6e 3c2f 623e 203c 6120 6872  nition</b> <a hr\n-0001dcf0: 6566 3d22 6130 3037 3433 5f73 6f75 7263  ef=\"a00743_sourc\n-0001dd00: 652e 6874 6d6c 236c 3030 3331 3722 3e73  e.html#l00317\">s\n-0001dd10: 6368 656d 652e 683a 3331 373c 2f61 3e3c  cheme.h:317</a><\n-0001dd20: 2f64 6976 3e3c 2f64 6976 3e0a 3c64 6976  /div></div>.<div\n-0001dd30: 2063 6c61 7373 3d22 7474 6322 2069 643d   class=\"ttc\" id=\n-0001dd40: 2261 6130 3133 3431 5f68 746d 6c5f 6135  \"aa01341_html_a5\n-0001dd50: 6235 6135 3337 3761 3031 6562 3462 6134  b5a5377a01eb4ba4\n-0001dd60: 3436 6531 3734 6566 6639 6534 3561 6322  46e174eff9e45ac\"\n-0001dd70: 3e3c 6469 7620 636c 6173 733d 2274 746e  ><div class=\"ttn\n-0001dd80: 616d 6522 3e3c 6120 6872 6566 3d22 6130  ame\"><a href=\"a0\n-0001dd90: 3133 3431 2e68 746d 6c23 6135 6235 6135  1341.html#a5b5a5\n-0001dda0: 3337 3761 3031 6562 3462 6134 3436 6531  377a01eb4ba446e1\n-0001ddb0: 3734 6566 6639 6534 3561 6322 3e4f 7065  74eff9e45ac\">Ope\n-0001ddc0: 6e53 7562 6469 763a 3a4f 5045 4e53 5542  nSubdiv::OPENSUB\n-0001ddd0: 4449 565f 5645 5253 494f 4e3a 3a53 6463  DIV_VERSION::Sdc\n-0001dde0: 3a3a 5363 6865 6d65 3a3a 436f 6d70 7574  ::Scheme::Comput\n-0001ddf0: 6545 6467 6556 6572 7465 784d 6173 6b3c  eEdgeVertexMask<\n-0001de00: 2f61 3e3c 2f64 6976 3e3c 6469 7620 636c  /a></div><div cl\n-0001de10: 6173 733d 2274 7464 6563 6922 3e76 6f69  ass=\"ttdeci\">voi\n-0001de20: 6420 436f 6d70 7574 6545 6467 6556 6572  d ComputeEdgeVer\n-0001de30: 7465 784d 6173 6b28 4544 4745 2063 6f6e  texMask(EDGE con\n-0001de40: 7374 2026 616d 703b 6564 6765 4e65 6967  st &amp;edgeNeig\n-0001de50: 6862 6f72 686f 6f64 2c20 4d41 534b 2026  hborhood, MASK &\n-0001de60: 616d 703b 6564 6765 5665 7274 6578 4d61  amp;edgeVertexMa\n-0001de70: 736b 2c20 4372 6561 7365 3a3a 5275 6c65  sk, Crease::Rule\n-0001de80: 2070 6172 656e 7452 756c 653d 4372 6561   parentRule=Crea\n-0001de90: 7365 3a3a 5255 4c45 5f55 4e4b 4e4f 574e  se::RULE_UNKNOWN\n-0001dea0: 2c20 4372 6561 7365 3a3a 5275 6c65 2063  , Crease::Rule c\n-0001deb0: 6869 6c64 5275 6c65 3d43 7265 6173 653a  hildRule=Crease:\n-0001dec0: 3a52 554c 455f 554e 4b4e 4f57 4e29 2063  :RULE_UNKNOWN) c\n-0001ded0: 6f6e 7374 3c2f 6469 763e 3c64 6976 2063  onst</div><div c\n-0001dee0: 6c61 7373 3d22 7474 646f 6322 3e45 6467  lass=\"ttdoc\">Edg\n-0001def0: 652d 7665 7274 6578 206d 6173 6b73 2049  e-vertex masks I\n-0001df00: 6620 6b6e 6f77 6e2c 2074 6865 2052 756c  f known, the Rul\n-0001df10: 6520 666f 7220 7468 6520 6564 6765 2061  e for the edge a\n-0001df20: 6e64 2f6f 7220 7468 6520 6465 7269 7665  nd/or the derive\n-0001df30: 6420 7665 7274 6578 2063 616e 2062 6520  d vertex can be \n-0001df40: 7370 6563 6966 6965 6420 746f 2061 6363  specified to acc\n-0001df50: 656c 2e2e 2e3c 2f64 6976 3e3c 6469 7620  el...</div><div \n-0001df60: 636c 6173 733d 2274 7464 6566 223e 3c62  class=\"ttdef\"><b\n-0001df70: 3e44 6566 696e 6974 696f 6e3c 2f62 3e20  >Definition</b> \n-0001df80: 3c61 2068 7265 663d 2261 3030 3734 335f  <a href=\"a00743_\n-0001df90: 736f 7572 6365 2e68 746d 6c23 6c30 3033  source.html#l003\n-0001dfa0: 3932 223e 7363 6865 6d65 2e68 3a33 3932  92\">scheme.h:392\n-0001dfb0: 3c2f 613e 3c2f 6469 763e 3c2f 6469 763e  </a></div></div>\n-0001dfc0: 0a3c 6469 7620 636c 6173 733d 2274 7463  .<div class=\"ttc\n-0001dfd0: 2220 6964 3d22 6161 3031 3334 315f 6874  \" id=\"aa01341_ht\n-0001dfe0: 6d6c 5f61 3563 3134 3263 3464 3963 3666  ml_a5c142c4d9c6f\n-0001dff0: 3362 6536 3662 6430 3138 3731 3335 3931  3be66bd018713591\n-0001e000: 6666 6362 223e 3c64 6976 2063 6c61 7373  ffcb\"><div class\n-0001e010: 3d22 7474 6e61 6d65 223e 3c61 2068 7265  =\"ttname\"><a hre\n-0001e020: 663d 2261 3031 3334 312e 6874 6d6c 2361  f=\"a01341.html#a\n-0001e030: 3563 3134 3263 3464 3963 3666 3362 6536  5c142c4d9c6f3be6\n-0001e040: 3662 6430 3138 3731 3335 3931 6666 6362  6bd018713591ffcb\n-0001e050: 223e 4f70 656e 5375 6264 6976 3a3a 4f50  \">OpenSubdiv::OP\n-0001e060: 454e 5355 4244 4956 5f56 4552 5349 4f4e  ENSUBDIV_VERSION\n-0001e070: 3a3a 5364 633a 3a53 6368 656d 653a 3a53  ::Sdc::Scheme::S\n-0001e080: 6368 656d 653c 2f61 3e3c 2f64 6976 3e3c  cheme</a></div><\n-0001e090: 6469 7620 636c 6173 733d 2274 7464 6563  div class=\"ttdec\n-0001e0a0: 6922 3e53 6368 656d 6528 293c 2f64 6976  i\">Scheme()</div\n-0001e0b0: 3e3c 6469 7620 636c 6173 733d 2274 7464  ><div class=\"ttd\n-0001e0c0: 6566 223e 3c62 3e44 6566 696e 6974 696f  ef\"><b>Definitio\n-0001e0d0: 6e3c 2f62 3e20 3c61 2068 7265 663d 2261  n</b> <a href=\"a\n-0001e0e0: 3030 3734 335f 736f 7572 6365 2e68 746d  00743_source.htm\n-0001e0f0: 6c23 6c30 3030 3730 223e 7363 6865 6d65  l#l00070\">scheme\n-0001e100: 2e68 3a37 303c 2f61 3e3c 2f64 6976 3e3c  .h:70</a></div><\n-0001e110: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n-0001e120: 3d22 7474 6322 2069 643d 2261 6130 3133  =\"ttc\" id=\"aa013\n-0001e130: 3431 5f68 746d 6c5f 6137 3336 6331 3039  41_html_a736c109\n-0001e140: 3434 6362 3932 3162 3333 3466 6264 3862  44cb921b334fbd8b\n-0001e150: 3831 3836 3664 3539 6622 3e3c 6469 7620  81866d59f\"><div \n-0001e160: 636c 6173 733d 2274 746e 616d 6522 3e3c  class=\"ttname\"><\n-0001e170: 6120 6872 6566 3d22 6130 3133 3431 2e68  a href=\"a01341.h\n-0001e180: 746d 6c23 6137 3336 6331 3039 3434 6362  tml#a736c10944cb\n-0001e190: 3932 3162 3333 3466 6264 3862 3831 3836  921b334fbd8b8186\n-0001e1a0: 3664 3539 6622 3e4f 7065 6e53 7562 6469  6d59f\">OpenSubdi\n-0001e1b0: 763a 3a4f 5045 4e53 5542 4449 565f 5645  v::OPENSUBDIV_VE\n-0001e1c0: 5253 494f 4e3a 3a53 6463 3a3a 5363 6865  RSION::Sdc::Sche\n-0001e1d0: 6d65 3a3a 6173 7369 676e 536d 6f6f 7468  me::assignSmooth\n-0001e1e0: 4c69 6d69 744d 6173 6b3c 2f61 3e3c 2f64  LimitMask</a></d\n-0001e1f0: 6976 3e3c 6469 7620 636c 6173 733d 2274  iv><div class=\"t\n-0001e200: 7464 6563 6922 3e76 6f69 6420 6173 7369  tdeci\">void assi\n-0001e210: 676e 536d 6f6f 7468 4c69 6d69 744d 6173  gnSmoothLimitMas\n-0001e220: 6b28 5645 5254 4558 2063 6f6e 7374 2026  k(VERTEX const &\n-0001e230: 616d 703b 7665 7274 6578 2c20 4d41 534b  amp;vertex, MASK\n-0001e240: 2026 616d 703b 706f 7329 2063 6f6e 7374   &amp;pos) const\n-0001e250: 3c2f 6469 763e 3c2f 6469 763e 0a3c 6469  </div></div>.<di\n-0001e260: 7620 636c 6173 733d 2274 7463 2220 6964  v class=\"ttc\" id\n-0001e270: 3d22 6161 3031 3334 315f 6874 6d6c 5f61  =\"aa01341_html_a\n-0001e280: 3733 6366 3531 6534 3331 3563 6138 3665  73cf51e4315ca86e\n-0001e290: 3565 3061 3339 3534 6339 3266 3866 3734  5e0a3954c92f8f74\n-0001e2a0: 223e 3c64 6976 2063 6c61 7373 3d22 7474  \"><div class=\"tt\n-0001e2b0: 6e61 6d65 223e 3c61 2068 7265 663d 2261  name\"><a href=\"a\n-0001e2c0: 3031 3334 312e 6874 6d6c 2361 3733 6366  01341.html#a73cf\n-0001e2d0: 3531 6534 3331 3563 6138 3665 3565 3061  51e4315ca86e5e0a\n-0001e2e0: 3339 3534 6339 3266 3866 3734 223e 4f70  3954c92f8f74\">Op\n-0001e2f0: 656e 5375 6264 6976 3a3a 4f50 454e 5355  enSubdiv::OPENSU\n-0001e300: 4244 4956 5f56 4552 5349 4f4e 3a3a 5364  BDIV_VERSION::Sd\n-0001e310: 633a 3a53 6368 656d 653a 3a47 6574 4c6f  c::Scheme::GetLo\n-0001e320: 6361 6c4e 6569 6768 626f 7268 6f6f 6453  calNeighborhoodS\n-0001e330: 697a 653c 2f61 3e3c 2f64 6976 3e3c 6469  ize</a></div><di\n-0001e340: 7620 636c 6173 733d 2274 7464 6563 6922  v class=\"ttdeci\"\n-0001e350: 3e73 7461 7469 6320 696e 7420 4765 744c  >static int GetL\n-0001e360: 6f63 616c 4e65 6967 6862 6f72 686f 6f64  ocalNeighborhood\n-0001e370: 5369 7a65 2829 3c2f 6469 763e 3c2f 6469  Size()</div></di\n-0001e380: 763e 0a3c 6469 7620 636c 6173 733d 2274  v>.<div class=\"t\n-0001e390: 7463 2220 6964 3d22 6161 3031 3334 315f  tc\" id=\"aa01341_\n-0001e3a0: 6874 6d6c 5f61 3737 3634 3466 3639 6564  html_a77644f69ed\n-0001e3b0: 6530 3366 6136 3232 3232 6436 3061 3939  e03fa62222d60a99\n-0001e3c0: 3937 3032 3338 223e 3c64 6976 2063 6c61  970238\"><div cla\n-0001e3d0: 7373 3d22 7474 6e61 6d65 223e 3c61 2068  ss=\"ttname\"><a h\n-0001e3e0: 7265 663d 2261 3031 3334 312e 6874 6d6c  ref=\"a01341.html\n-0001e3f0: 2361 3737 3634 3466 3639 6564 6530 3366  #a77644f69ede03f\n-0001e400: 6136 3232 3232 6436 3061 3939 3937 3032  a62222d60a999702\n-0001e410: 3338 223e 4f70 656e 5375 6264 6976 3a3a  38\">OpenSubdiv::\n-0001e420: 4f50 454e 5355 4244 4956 5f56 4552 5349  OPENSUBDIV_VERSI\n-0001e430: 4f4e 3a3a 5364 633a 3a53 6368 656d 653a  ON::Sdc::Scheme:\n-0001e440: 3a61 7373 6967 6e43 6f72 6e65 724d 6173  :assignCornerMas\n-0001e450: 6b46 6f72 5665 7274 6578 3c2f 613e 3c2f  kForVertex</a></\n-0001e460: 6469 763e 3c64 6976 2063 6c61 7373 3d22  div><div class=\"\n-0001e470: 7474 6465 6369 223e 766f 6964 2061 7373  ttdeci\">void ass\n-0001e480: 6967 6e43 6f72 6e65 724d 6173 6b46 6f72  ignCornerMaskFor\n-0001e490: 5665 7274 6578 2856 4552 5445 5820 636f  Vertex(VERTEX co\n-0001e4a0: 6e73 7420 2661 6d70 3b65 6467 652c 204d  nst &amp;edge, M\n-0001e4b0: 4153 4b20 2661 6d70 3b6d 6173 6b29 2063  ASK &amp;mask) c\n-0001e4c0: 6f6e 7374 3c2f 6469 763e 3c64 6976 2063  onst</div><div c\n-0001e4d0: 6c61 7373 3d22 7474 6465 6622 3e3c 623e  lass=\"ttdef\"><b>\n-0001e4e0: 4465 6669 6e69 7469 6f6e 3c2f 623e 203c  Definition</b> <\n-0001e4f0: 6120 6872 6566 3d22 6130 3037 3433 5f73  a href=\"a00743_s\n-0001e500: 6f75 7263 652e 6874 6d6c 236c 3030 3333  ource.html#l0033\n-0001e510: 3122 3e73 6368 656d 652e 683a 3333 313c  1\">scheme.h:331<\n-0001e520: 2f61 3e3c 2f64 6976 3e3c 2f64 6976 3e0a  /a></div></div>.\n-0001e530: 3c64 6976 2063 6c61 7373 3d22 7474 6322  <div class=\"ttc\"\n-0001e540: 2069 643d 2261 6130 3133 3431 5f68 746d   id=\"aa01341_htm\n-0001e550: 6c5f 6137 6339 3331 3666 3732 3132 6433  l_a7c9316f7212d3\n-0001e560: 6561 3431 6462 3766 3366 3161 3636 6363  ea41db7f3f1a66cc\n-0001e570: 3765 3522 3e3c 6469 7620 636c 6173 733d  7e5\"><div class=\n-0001e580: 2274 746e 616d 6522 3e3c 6120 6872 6566  \"ttname\"><a href\n-0001e590: 3d22 6130 3133 3431 2e68 746d 6c23 6137  =\"a01341.html#a7\n-0001e5a0: 6339 3331 3666 3732 3132 6433 6561 3431  c9316f7212d3ea41\n-0001e5b0: 6462 3766 3366 3161 3636 6363 3765 3522  db7f3f1a66cc7e5\"\n-0001e5c0: 3e4f 7065 6e53 7562 6469 763a 3a4f 5045  >OpenSubdiv::OPE\n-0001e5d0: 4e53 5542 4449 565f 5645 5253 494f 4e3a  NSUBDIV_VERSION:\n-0001e5e0: 3a53 6463 3a3a 5363 6865 6d65 3a3a 6173  :Sdc::Scheme::as\n-0001e5f0: 7369 676e 4372 6561 7365 4c69 6d69 744d  signCreaseLimitM\n-0001e600: 6173 6b3c 2f61 3e3c 2f64 6976 3e3c 6469  ask</a></div><di\n-0001e610: 7620 636c 6173 733d 2274 7464 6563 6922  v class=\"ttdeci\"\n-0001e620: 3e76 6f69 6420 6173 7369 676e 4372 6561  >void assignCrea\n-0001e630: 7365 4c69 6d69 744d 6173 6b28 5645 5254  seLimitMask(VERT\n-0001e640: 4558 2063 6f6e 7374 2026 616d 703b 7665  EX const &amp;ve\n-0001e650: 7274 6578 2c20 4d41 534b 2026 616d 703b  rtex, MASK &amp;\n-0001e660: 706f 732c 2069 6e74 2063 6f6e 7374 2063  pos, int const c\n-0001e670: 7265 6173 6545 6e64 735b 325d 2920 636f  reaseEnds[2]) co\n-0001e680: 6e73 743c 2f64 6976 3e3c 2f64 6976 3e0a  nst</div></div>.\n-0001e690: 3c64 6976 2063 6c61 7373 3d22 7474 6322  <div class=\"ttc\"\n-0001e6a0: 2069 643d 2261 6130 3133 3431 5f68 746d   id=\"aa01341_htm\n-0001e6b0: 6c5f 6138 3437 3838 6135 6139 3366 3137  l_a84788a5a93f17\n-0001e6c0: 6536 3438 3130 3331 3233 6339 6634 6133  e648103123c9f4a3\n-0001e6d0: 3366 3922 3e3c 6469 7620 636c 6173 733d  3f9\"><div class=\n-0001e6e0: 2274 746e 616d 6522 3e3c 6120 6872 6566  \"ttname\"><a href\n-0001e6f0: 3d22 6130 3133 3431 2e68 746d 6c23 6138  =\"a01341.html#a8\n-0001e700: 3437 3838 6135 6139 3366 3137 6536 3438  4788a5a93f17e648\n-0001e710: 3130 3331 3233 6339 6634 6133 3366 3922  103123c9f4a33f9\"\n-0001e720: 3e4f 7065 6e53 7562 6469 763a 3a4f 5045  >OpenSubdiv::OPE\n-0001e730: 4e53 5542 4449 565f 5645 5253 494f 4e3a  NSUBDIV_VERSION:\n-0001e740: 3a53 6463 3a3a 5363 6865 6d65 3a3a 6173  :Sdc::Scheme::as\n-0001e750: 7369 676e 536d 6f6f 7468 4d61 736b 466f  signSmoothMaskFo\n-0001e760: 7256 6572 7465 783c 2f61 3e3c 2f64 6976  rVertex</a></div\n-0001e770: 3e3c 6469 7620 636c 6173 733d 2274 7464  ><div class=\"ttd\n-0001e780: 6563 6922 3e76 6f69 6420 6173 7369 676e  eci\">void assign\n-0001e790: 536d 6f6f 7468 4d61 736b 466f 7256 6572  SmoothMaskForVer\n-0001e7a0: 7465 7828 5645 5254 4558 2063 6f6e 7374  tex(VERTEX const\n-0001e7b0: 2026 616d 703b 6564 6765 2c20 4d41 534b   &amp;edge, MASK\n-0001e7c0: 2026 616d 703b 6d61 736b 2920 636f 6e73   &amp;mask) cons\n-0001e7d0: 743c 2f64 6976 3e3c 2f64 6976 3e0a 3c64  t</div></div>.<d\n-0001e7e0: 6976 2063 6c61 7373 3d22 7474 6322 2069  iv class=\"ttc\" i\n-0001e7f0: 643d 2261 6130 3133 3431 5f68 746d 6c5f  d=\"aa01341_html_\n-0001e800: 6138 6637 6539 3833 6232 3139 3561 6336  a8f7e983b2195ac6\n-0001e810: 6233 3838 6337 6136 6462 3137 6638 6362  b388c7a6db17f8cb\n-0001e820: 3022 3e3c 6469 7620 636c 6173 733d 2274  0\"><div class=\"t\n-0001e830: 746e 616d 6522 3e3c 6120 6872 6566 3d22  tname\"><a href=\"\n-0001e840: 6130 3133 3431 2e68 746d 6c23 6138 6637  a01341.html#a8f7\n-0001e850: 6539 3833 6232 3139 3561 6336 6233 3838  e983b2195ac6b388\n-0001e860: 6337 6136 6462 3137 6638 6362 3022 3e4f  c7a6db17f8cb0\">O\n-0001e870: 7065 6e53 7562 6469 763a 3a4f 5045 4e53  penSubdiv::OPENS\n-0001e880: 5542 4449 565f 5645 5253 494f 4e3a 3a53  UBDIV_VERSION::S\n-0001e890: 6463 3a3a 5363 6865 6d65 3a3a 4765 7452  dc::Scheme::GetR\n-0001e8a0: 6567 756c 6172 5665 7274 6578 5661 6c65  egularVertexVale\n-0001e8b0: 6e63 653c 2f61 3e3c 2f64 6976 3e3c 6469  nce</a></div><di\n-0001e8c0: 7620 636c 6173 733d 2274 7464 6563 6922  v class=\"ttdeci\"\n-0001e8d0: 3e73 7461 7469 6320 696e 7420 4765 7452  >static int GetR\n-0001e8e0: 6567 756c 6172 5665 7274 6578 5661 6c65  egularVertexVale\n-0001e8f0: 6e63 6528 293c 2f64 6976 3e3c 2f64 6976  nce()</div></div\n-0001e900: 3e0a 3c64 6976 2063 6c61 7373 3d22 7474  >.<div class=\"tt\n-0001e910: 6322 2069 643d 2261 6130 3133 3431 5f68  c\" id=\"aa01341_h\n-0001e920: 746d 6c5f 6139 6230 6464 6237 6336 3264  tml_a9b0ddb7c62d\n-0001e930: 3866 6364 3630 3239 6235 3935 6362 3865  8fcd6029b595cb8e\n-0001e940: 6163 3638 3222 3e3c 6469 7620 636c 6173  ac682\"><div clas\n-0001e950: 733d 2274 746e 616d 6522 3e3c 6120 6872  s=\"ttname\"><a hr\n-0001e960: 6566 3d22 6130 3133 3431 2e68 746d 6c23  ef=\"a01341.html#\n-0001e970: 6139 6230 6464 6237 6336 3264 3866 6364  a9b0ddb7c62d8fcd\n-0001e980: 3630 3239 6235 3935 6362 3865 6163 3638  6029b595cb8eac68\n-0001e990: 3222 3e4f 7065 6e53 7562 6469 763a 3a4f  2\">OpenSubdiv::O\n-0001e9a0: 5045 4e53 5542 4449 565f 5645 5253 494f  PENSUBDIV_VERSIO\n-0001e9b0: 4e3a 3a53 6463 3a3a 5363 6865 6d65 3a3a  N::Sdc::Scheme::\n-0001e9c0: 4765 744f 7074 696f 6e73 3c2f 613e 3c2f  GetOptions</a></\n-0001e9d0: 6469 763e 3c64 6976 2063 6c61 7373 3d22  div><div class=\"\n-0001e9e0: 7474 6465 6369 223e 4f70 7469 6f6e 7320  ttdeci\">Options \n-0001e9f0: 4765 744f 7074 696f 6e73 2829 2063 6f6e  GetOptions() con\n-0001ea00: 7374 3c2f 6469 763e 3c64 6976 2063 6c61  st</div><div cla\n-0001ea10: 7373 3d22 7474 6465 6622 3e3c 623e 4465  ss=\"ttdef\"><b>De\n-0001ea20: 6669 6e69 7469 6f6e 3c2f 623e 203c 6120  finition</b> <a \n-0001ea30: 6872 6566 3d22 6130 3037 3433 5f73 6f75  href=\"a00743_sou\n-0001ea40: 7263 652e 6874 6d6c 236c 3030 3037 3422  rce.html#l00074\"\n-0001ea50: 3e73 6368 656d 652e 683a 3734 3c2f 613e  >scheme.h:74</a>\n-0001ea60: 3c2f 6469 763e 3c2f 6469 763e 0a3c 6469  </div></div>.<di\n-0001ea70: 7620 636c 6173 733d 2274 7463 2220 6964  v class=\"ttc\" id\n-0001ea80: 3d22 6161 3031 3334 315f 6874 6d6c 5f61  =\"aa01341_html_a\n-0001ea90: 3965 6535 6531 3934 6130 3038 3332 6135  9ee5e194a00832a5\n-0001eaa0: 6266 6137 3663 6635 3864 6630 6263 3462  bfa76cf58df0bc4b\n-0001eab0: 223e 3c64 6976 2063 6c61 7373 3d22 7474  \"><div class=\"tt\n-0001eac0: 6e61 6d65 223e 3c61 2068 7265 663d 2261  name\"><a href=\"a\n-0001ead0: 3031 3334 312e 6874 6d6c 2361 3965 6535  01341.html#a9ee5\n-0001eae0: 6531 3934 6130 3038 3332 6135 6266 6137  e194a00832a5bfa7\n-0001eaf0: 3663 6635 3864 6630 6263 3462 223e 4f70  6cf58df0bc4b\">Op\n-0001eb00: 656e 5375 6264 6976 3a3a 4f50 454e 5355  enSubdiv::OPENSU\n-0001eb10: 4244 4956 5f56 4552 5349 4f4e 3a3a 5364  BDIV_VERSION::Sd\n-0001eb20: 633a 3a53 6368 656d 653a 3a61 7373 6967  c::Scheme::assig\n-0001eb30: 6e53 6d6f 6f74 684c 696d 6974 5461 6e67  nSmoothLimitTang\n-0001eb40: 656e 744d 6173 6b73 3c2f 613e 3c2f 6469  entMasks</a></di\n-0001eb50: 763e 3c64 6976 2063 6c61 7373 3d22 7474  v><div class=\"tt\n-0001eb60: 6465 6369 223e 766f 6964 2061 7373 6967  deci\">void assig\n-0001eb70: 6e53 6d6f 6f74 684c 696d 6974 5461 6e67  nSmoothLimitTang\n-0001eb80: 656e 744d 6173 6b73 2856 4552 5445 5820  entMasks(VERTEX \n-0001eb90: 636f 6e73 7420 2661 6d70 3b76 6572 7465  const &amp;verte\n-0001eba0: 782c 204d 4153 4b20 2661 6d70 3b74 616e  x, MASK &amp;tan\n-0001ebb0: 312c 204d 4153 4b20 2661 6d70 3b74 616e  1, MASK &amp;tan\n-0001ebc0: 3229 2063 6f6e 7374 3c2f 6469 763e 3c2f  2) const</div></\n-0001ebd0: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n-0001ebe0: 2274 7463 2220 6964 3d22 6161 3031 3334  \"ttc\" id=\"aa0134\n-0001ebf0: 315f 6874 6d6c 5f61 6132 3832 3164 3336  1_html_aa2821d36\n-0001ec00: 3565 6138 3133 3564 3633 3136 6330 6639  5ea8135d6316c0f9\n-0001ec10: 3236 6638 3763 6362 223e 3c64 6976 2063  26f87ccb\"><div c\n-0001ec20: 6c61 7373 3d22 7474 6e61 6d65 223e 3c61  lass=\"ttname\"><a\n-0001ec30: 2068 7265 663d 2261 3031 3334 312e 6874   href=\"a01341.ht\n-0001ec40: 6d6c 2361 6132 3832 3164 3336 3565 6138  ml#aa2821d365ea8\n-0001ec50: 3133 3564 3633 3136 6330 6639 3236 6638  135d6316c0f926f8\n-0001ec60: 3763 6362 223e 4f70 656e 5375 6264 6976  7ccb\">OpenSubdiv\n-0001ec70: 3a3a 4f50 454e 5355 4244 4956 5f56 4552  ::OPENSUBDIV_VER\n-0001ec80: 5349 4f4e 3a3a 5364 633a 3a53 6368 656d  SION::Sdc::Schem\n-0001ec90: 653a 3a61 7373 6967 6e43 6f72 6e65 724c  e::assignCornerL\n-0001eca0: 696d 6974 4d61 736b 3c2f 613e 3c2f 6469  imitMask</a></di\n-0001ecb0: 763e 3c64 6976 2063 6c61 7373 3d22 7474  v><div class=\"tt\n-0001ecc0: 6465 6369 223e 766f 6964 2061 7373 6967  deci\">void assig\n-0001ecd0: 6e43 6f72 6e65 724c 696d 6974 4d61 736b  nCornerLimitMask\n-0001ece0: 2856 4552 5445 5820 636f 6e73 7420 2661  (VERTEX const &a\n-0001ecf0: 6d70 3b76 6572 7465 782c 204d 4153 4b20  mp;vertex, MASK \n-0001ed00: 2661 6d70 3b70 6f73 2920 636f 6e73 743c  &amp;pos) const<\n-0001ed10: 2f64 6976 3e3c 2f64 6976 3e0a 3c64 6976  /div></div>.<div\n-0001ed20: 2063 6c61 7373 3d22 7474 6322 2069 643d   class=\"ttc\" id=\n-0001ed30: 2261 6130 3133 3431 5f68 746d 6c5f 6164  \"aa01341_html_ad\n-0001ed40: 6439 3466 3932 3163 3433 6661 3134 6438  d94f921c43fa14d8\n-0001ed50: 3836 6164 6662 6364 6363 3030 3231 3122  86adfbcdcc00211\"\n-0001ed60: 3e3c 6469 7620 636c 6173 733d 2274 746e  ><div class=\"ttn\n-0001ed70: 616d 6522 3e3c 6120 6872 6566 3d22 6130  ame\"><a href=\"a0\n-0001ed80: 3133 3431 2e68 746d 6c23 6164 6439 3466  1341.html#add94f\n-0001ed90: 3932 3163 3433 6661 3134 6438 3836 6164  921c43fa14d886ad\n-0001eda0: 6662 6364 6363 3030 3231 3122 3e4f 7065  fbcdcc00211\">Ope\n-0001edb0: 6e53 7562 6469 763a 3a4f 5045 4e53 5542  nSubdiv::OPENSUB\n-0001edc0: 4449 565f 5645 5253 494f 4e3a 3a53 6463  DIV_VERSION::Sdc\n-0001edd0: 3a3a 5363 6865 6d65 3a3a 5363 6865 6d65  ::Scheme::Scheme\n-0001ede0: 3c2f 613e 3c2f 6469 763e 3c64 6976 2063  </a></div><div c\n-0001edf0: 6c61 7373 3d22 7474 6465 6369 223e 5363  lass=\"ttdeci\">Sc\n-0001ee00: 6865 6d65 284f 7074 696f 6e73 2063 6f6e  heme(Options con\n-0001ee10: 7374 2026 616d 703b 6f70 7469 6f6e 7329  st &amp;options)\n-0001ee20: 3c2f 6469 763e 3c64 6976 2063 6c61 7373  </div><div class\n-0001ee30: 3d22 7474 6465 6622 3e3c 623e 4465 6669  =\"ttdef\"><b>Defi\n-0001ee40: 6e69 7469 6f6e 3c2f 623e 203c 6120 6872  nition</b> <a hr\n-0001ee50: 6566 3d22 6130 3037 3433 5f73 6f75 7263  ef=\"a00743_sourc\n-0001ee60: 652e 6874 6d6c 236c 3030 3037 3222 3e73  e.html#l00072\">s\n-0001ee70: 6368 656d 652e 683a 3732 3c2f 613e 3c2f  cheme.h:72</a></\n-0001ee80: 6469 763e 3c2f 6469 763e 0a3c 6469 7620  div></div>.<div \n-0001ee90: 636c 6173 733d 2274 7463 2220 6964 3d22  class=\"ttc\" id=\"\n-0001eea0: 6161 3031 3334 315f 6874 6d6c 5f61 6538  aa01341_html_ae8\n-0001eeb0: 6564 3234 6231 3639 3165 3635 3433 3664  ed24b1691e65436d\n-0001eec0: 3434 6537 3033 3138 3963 6166 3432 223e  44e703189caf42\">\n-0001eed0: 3c64 6976 2063 6c61 7373 3d22 7474 6e61  <div class=\"ttna\n-0001eee0: 6d65 223e 3c61 2068 7265 663d 2261 3031  me\"><a href=\"a01\n-0001eef0: 3334 312e 6874 6d6c 2361 6538 6564 3234  341.html#ae8ed24\n-0001ef00: 6231 3639 3165 3635 3433 3664 3434 6537  b1691e65436d44e7\n-0001ef10: 3033 3138 3963 6166 3432 223e 4f70 656e  03189caf42\">Open\n-0001ef20: 5375 6264 6976 3a3a 4f50 454e 5355 4244  Subdiv::OPENSUBD\n-0001ef30: 4956 5f56 4552 5349 4f4e 3a3a 5364 633a  IV_VERSION::Sdc:\n-0001ef40: 3a53 6368 656d 653a 3a43 6f6d 7075 7465  :Scheme::Compute\n-0001ef50: 4661 6365 5665 7274 6578 4d61 736b 3c2f  FaceVertexMask</\n-0001ef60: 613e 3c2f 6469 763e 3c64 6976 2063 6c61  a></div><div cla\n-0001ef70: 7373 3d22 7474 6465 6369 223e 766f 6964  ss=\"ttdeci\">void\n-0001ef80: 2043 6f6d 7075 7465 4661 6365 5665 7274   ComputeFaceVert\n-0001ef90: 6578 4d61 736b 2846 4143 4520 636f 6e73  exMask(FACE cons\n-0001efa0: 7420 2661 6d70 3b66 6163 654e 6569 6768  t &amp;faceNeigh\n-0001efb0: 626f 7268 6f6f 642c 204d 4153 4b20 2661  borhood, MASK &a\n-0001efc0: 6d70 3b66 6163 6556 6572 7465 784d 6173  mp;faceVertexMas\n-0001efd0: 6b29 2063 6f6e 7374 3c2f 6469 763e 3c64  k) const</div><d\n-0001efe0: 6976 2063 6c61 7373 3d22 7474 646f 6322  iv class=\"ttdoc\"\n-0001eff0: 3e46 6163 652d 7665 7274 6578 206d 6173  >Face-vertex mas\n-0001f000: 6b73 202d 2074 7269 7669 616c 2066 6f72  ks - trivial for\n-0001f010: 2061 6c6c 2063 7572 7265 6e74 2073 6368   all current sch\n-0001f020: 656d 6573 2e3c 2f64 6976 3e3c 6469 7620  emes.</div><div \n-0001f030: 636c 6173 733d 2274 7464 6566 223e 3c62  class=\"ttdef\"><b\n-0001f040: 3e44 6566 696e 6974 696f 6e3c 2f62 3e20  >Definition</b> \n-0001f050: 3c61 2068 7265 663d 2261 3030 3734 335f  <a href=\"a00743_\n-0001f060: 736f 7572 6365 2e68 746d 6c23 6c30 3033  source.html#l003\n-0001f070: 3438 223e 7363 6865 6d65 2e68 3a33 3438  48\">scheme.h:348\n-0001f080: 3c2f 613e 3c2f 6469 763e 3c2f 6469 763e  </a></div></div>\n-0001f090: 0a3c 6469 7620 636c 6173 733d 2274 7463  .<div class=\"ttc\n-0001f0a0: 2220 6964 3d22 6161 3031 3334 315f 6874  \" id=\"aa01341_ht\n-0001f0b0: 6d6c 5f61 6539 6565 3766 3131 6635 3165  ml_ae9ee7f11f51e\n-0001f0c0: 6336 6666 3863 3433 6162 3037 3239 3435  c6ff8c43ab072945\n-0001f0d0: 3462 3534 223e 3c64 6976 2063 6c61 7373  4b54\"><div class\n-0001f0e0: 3d22 7474 6e61 6d65 223e 3c61 2068 7265  =\"ttname\"><a hre\n-0001f0f0: 663d 2261 3031 3334 312e 6874 6d6c 2361  f=\"a01341.html#a\n-0001f100: 6539 6565 3766 3131 6635 3165 6336 6666  e9ee7f11f51ec6ff\n-0001f110: 3863 3433 6162 3037 3239 3435 3462 3534  8c43ab0729454b54\n-0001f120: 223e 4f70 656e 5375 6264 6976 3a3a 4f50  \">OpenSubdiv::OP\n-0001f130: 454e 5355 4244 4956 5f56 4552 5349 4f4e  ENSUBDIV_VERSION\n-0001f140: 3a3a 5364 633a 3a53 6368 656d 653a 3a61  ::Sdc::Scheme::a\n-0001f150: 7373 6967 6e43 6f72 6e65 724c 696d 6974  ssignCornerLimit\n-0001f160: 5461 6e67 656e 744d 6173 6b73 3c2f 613e  TangentMasks</a>\n-0001f170: 3c2f 6469 763e 3c64 6976 2063 6c61 7373  </div><div class\n-0001f180: 3d22 7474 6465 6369 223e 766f 6964 2061  =\"ttdeci\">void a\n-0001f190: 7373 6967 6e43 6f72 6e65 724c 696d 6974  ssignCornerLimit\n-0001f1a0: 5461 6e67 656e 744d 6173 6b73 2856 4552  TangentMasks(VER\n-0001f1b0: 5445 5820 636f 6e73 7420 2661 6d70 3b76  TEX const &amp;v\n-0001f1c0: 6572 7465 782c 204d 4153 4b20 2661 6d70  ertex, MASK &amp\n-0001f1d0: 3b74 616e 312c 204d 4153 4b20 2661 6d70  ;tan1, MASK &amp\n-0001f1e0: 3b74 616e 3229 2063 6f6e 7374 3c2f 6469  ;tan2) const</di\n-0001f1f0: 763e 3c2f 6469 763e 0a3c 6469 7620 636c  v></div>.<div cl\n-0001f200: 6173 733d 2274 7463 2220 6964 3d22 6161  ass=\"ttc\" id=\"aa\n-0001f210: 3031 3334 315f 6874 6d6c 5f61 6633 3630  01341_html_af360\n-0001f220: 6431 3131 3466 3533 3932 3832 3230 3331  d1114f5392822031\n-0001f230: 6361 6261 6439 3736 3664 6635 223e 3c64  cabad9766df5\"><d\n-0001f240: 6976 2063 6c61 7373 3d22 7474 6e61 6d65  iv class=\"ttname\n-0001f250: 223e 3c61 2068 7265 663d 2261 3031 3334  \"><a href=\"a0134\n-0001f260: 312e 6874 6d6c 2361 6633 3630 6431 3131  1.html#af360d111\n-0001f270: 3466 3533 3932 3832 3230 3331 6361 6261  4f5392822031caba\n-0001f280: 6439 3736 3664 6635 223e 4f70 656e 5375  d9766df5\">OpenSu\n-0001f290: 6264 6976 3a3a 4f50 454e 5355 4244 4956  bdiv::OPENSUBDIV\n-0001f2a0: 5f56 4552 5349 4f4e 3a3a 5364 633a 3a53  _VERSION::Sdc::S\n-0001f2b0: 6368 656d 653a 3a53 6574 4f70 7469 6f6e  cheme::SetOption\n-0001f2c0: 733c 2f61 3e3c 2f64 6976 3e3c 6469 7620  s</a></div><div \n-0001f2d0: 636c 6173 733d 2274 7464 6563 6922 3e76  class=\"ttdeci\">v\n-0001f2e0: 6f69 6420 5365 744f 7074 696f 6e73 2863  oid SetOptions(c\n-0001f2f0: 6f6e 7374 204f 7074 696f 6e73 2026 616d  onst Options &am\n-0001f300: 703b 6e65 774f 7074 696f 6e73 293c 2f64  p;newOptions)</d\n-0001f310: 6976 3e3c 6469 7620 636c 6173 733d 2274  iv><div class=\"t\n-0001f320: 7464 6566 223e 3c62 3e44 6566 696e 6974  tdef\"><b>Definit\n-0001f330: 696f 6e3c 2f62 3e20 3c61 2068 7265 663d  ion</b> <a href=\n-0001f340: 2261 3030 3734 335f 736f 7572 6365 2e68  \"a00743_source.h\n-0001f350: 746d 6c23 6c30 3030 3735 223e 7363 6865  tml#l00075\">sche\n-0001f360: 6d65 2e68 3a37 353c 2f61 3e3c 2f64 6976  me.h:75</a></div\n-0001f370: 3e3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ></div>.<div cla\n-0001f380: 7373 3d22 7474 6322 2069 643d 2261 6130  ss=\"ttc\" id=\"aa0\n-0001f390: 3133 3435 5f68 746d 6c22 3e3c 6469 7620  1345_html\"><div \n-0001f3a0: 636c 6173 733d 2274 746e 616d 6522 3e3c  class=\"ttname\"><\n-0001f3b0: 6120 6872 6566 3d22 6130 3133 3435 2e68  a href=\"a01345.h\n-0001f3c0: 746d 6c22 3e4f 7065 6e53 7562 6469 763a  tml\">OpenSubdiv:\n-0001f3d0: 3a4f 5045 4e53 5542 4449 565f 5645 5253  :OPENSUBDIV_VERS\n-0001f3e0: 494f 4e3a 3a53 6463 3a3a 5363 6865 6d65  ION::Sdc::Scheme\n-0001f3f0: 3a3a 4c6f 6361 6c4d 6173 6b3c 2f61 3e3c  ::LocalMask</a><\n-0001f400: 2f64 6976 3e3c 6469 7620 636c 6173 733d  /div><div class=\n-0001f410: 2274 7464 6566 223e 3c62 3e44 6566 696e  \"ttdef\"><b>Defin\n-0001f420: 6974 696f 6e3c 2f62 3e20 3c61 2068 7265  ition</b> <a hre\n-0001f430: 663d 2261 3030 3734 335f 736f 7572 6365  f=\"a00743_source\n-0001f440: 2e68 746d 6c23 6c30 3032 3039 223e 7363  .html#l00209\">sc\n-0001f450: 6865 6d65 2e68 3a32 3039 3c2f 613e 3c2f  heme.h:209</a></\n-0001f460: 6469 763e 3c2f 6469 763e 0a3c 6469 7620  div></div>.<div \n-0001f470: 636c 6173 733d 2274 7463 2220 6964 3d22  class=\"ttc\" id=\"\n-0001f480: 6161 3031 3334 355f 6874 6d6c 5f61 3137  aa01345_html_a17\n-0001f490: 3365 3938 6530 6431 6233 6431 3566 3563  3e98e0d1b3d15f5c\n-0001f4a0: 3361 6434 3336 6430 6665 6434 3031 223e  3ad436d0fed401\">\n-0001f4b0: 3c64 6976 2063 6c61 7373 3d22 7474 6e61  <div class=\"ttna\n-0001f4c0: 6d65 223e 3c61 2068 7265 663d 2261 3031  me\"><a href=\"a01\n-0001f4d0: 3334 352e 6874 6d6c 2361 3137 3365 3938  345.html#a173e98\n-0001f4e0: 6530 6431 6233 6431 3566 3563 3361 6434  e0d1b3d15f5c3ad4\n-0001f4f0: 3336 6430 6665 6434 3031 223e 4f70 656e  36d0fed401\">Open\n-0001f500: 5375 6264 6976 3a3a 4f50 454e 5355 4244  Subdiv::OPENSUBD\n-0001f510: 4956 5f56 4552 5349 4f4e 3a3a 5364 633a  IV_VERSION::Sdc:\n-0001f520: 3a53 6368 656d 653a 3a4c 6f63 616c 4d61  :Scheme::LocalMa\n-0001f530: 736b 3a3a 5765 6967 6874 3c2f 613e 3c2f  sk::Weight</a></\n-0001f540: 6469 763e 3c64 6976 2063 6c61 7373 3d22  div><div class=\"\n-0001f550: 7474 6465 6369 223e 5745 4947 4854 2057  ttdeci\">WEIGHT W\n-0001f560: 6569 6768 743c 2f64 6976 3e3c 6469 7620  eight</div><div \n-0001f570: 636c 6173 733d 2274 7464 6566 223e 3c62  class=\"ttdef\"><b\n-0001f580: 3e44 6566 696e 6974 696f 6e3c 2f62 3e20  >Definition</b> \n-0001f590: 3c61 2068 7265 663d 2261 3030 3734 335f  <a href=\"a00743_\n-0001f5a0: 736f 7572 6365 2e68 746d 6c23 6c30 3032  source.html#l002\n-0001f5b0: 3132 223e 7363 6865 6d65 2e68 3a32 3132  12\">scheme.h:212\n-0001f5c0: 3c2f 613e 3c2f 6469 763e 3c2f 6469 763e  </a></div></div>\n-0001f5d0: 0a3c 6469 7620 636c 6173 733d 2274 7463  .<div class=\"ttc\n-0001f5e0: 2220 6964 3d22 6161 3031 3334 355f 6874  \" id=\"aa01345_ht\n-0001f5f0: 6d6c 5f61 3335 3139 6535 6530 3536 3331  ml_a3519e5e05631\n-0001f600: 3032 3666 6164 3934 6337 3631 3666 3565  026fad94c7616f5e\n-0001f610: 3065 3637 223e 3c64 6976 2063 6c61 7373  0e67\"><div class\n-0001f620: 3d22 7474 6e61 6d65 223e 3c61 2068 7265  =\"ttname\"><a hre\n-0001f630: 663d 2261 3031 3334 352e 6874 6d6c 2361  f=\"a01345.html#a\n-0001f640: 3335 3139 6535 6530 3536 3331 3032 3666  3519e5e05631026f\n-0001f650: 6164 3934 6337 3631 3666 3565 3065 3637  ad94c7616f5e0e67\n-0001f660: 223e 4f70 656e 5375 6264 6976 3a3a 4f50  \">OpenSubdiv::OP\n-0001f670: 454e 5355 4244 4956 5f56 4552 5349 4f4e  ENSUBDIV_VERSION\n-0001f680: 3a3a 5364 633a 3a53 6368 656d 653a 3a4c  ::Sdc::Scheme::L\n-0001f690: 6f63 616c 4d61 736b 3a3a 4172 6546 6163  ocalMask::AreFac\n-0001f6a0: 6557 6569 6768 7473 466f 7246 6163 6543  eWeightsForFaceC\n-0001f6b0: 656e 7465 7273 3c2f 613e 3c2f 6469 763e  enters</a></div>\n-0001f6c0: 3c64 6976 2063 6c61 7373 3d22 7474 6465  <div class=\"ttde\n-0001f6d0: 6369 223e 626f 6f6c 2041 7265 4661 6365  ci\">bool AreFace\n-0001f6e0: 5765 6967 6874 7346 6f72 4661 6365 4365  WeightsForFaceCe\n-0001f6f0: 6e74 6572 7328 2920 636f 6e73 743c 2f64  nters() const</d\n-0001f700: 6976 3e3c 6469 7620 636c 6173 733d 2274  iv><div class=\"t\n-0001f710: 7464 6566 223e 3c62 3e44 6566 696e 6974  tdef\"><b>Definit\n-0001f720: 696f 6e3c 2f62 3e20 3c61 2068 7265 663d  ion</b> <a href=\n-0001f730: 2261 3030 3734 335f 736f 7572 6365 2e68  \"a00743_source.h\n-0001f740: 746d 6c23 6c30 3032 3339 223e 7363 6865  tml#l00239\">sche\n-0001f750: 6d65 2e68 3a32 3339 3c2f 613e 3c2f 6469  me.h:239</a></di\n-0001f760: 763e 3c2f 6469 763e 0a3c 6469 7620 636c  v></div>.<div cl\n-0001f770: 6173 733d 2274 7463 2220 6964 3d22 6161  ass=\"ttc\" id=\"aa\n-0001f780: 3031 3334 355f 6874 6d6c 5f61 3435 3232  01345_html_a4522\n-0001f790: 6631 6163 6435 6639 3461 3036 6262 3266  f1acd5f94a06bb2f\n-0001f7a0: 3530 3535 3264 3236 3730 6237 223e 3c64  50552d2670b7\"><d\n-0001f7b0: 6976 2063 6c61 7373 3d22 7474 6e61 6d65  iv class=\"ttname\n-0001f7c0: 223e 3c61 2068 7265 663d 2261 3031 3334  \"><a href=\"a0134\n-0001f7d0: 352e 6874 6d6c 2361 3435 3232 6631 6163  5.html#a4522f1ac\n-0001f7e0: 6435 6639 3461 3036 6262 3266 3530 3535  d5f94a06bb2f5055\n-0001f7f0: 3264 3236 3730 6237 223e 4f70 656e 5375  2d2670b7\">OpenSu\n-0001f800: 6264 6976 3a3a 4f50 454e 5355 4244 4956  bdiv::OPENSUBDIV\n-0001f810: 5f56 4552 5349 4f4e 3a3a 5364 633a 3a53  _VERSION::Sdc::S\n-0001f820: 6368 656d 653a 3a4c 6f63 616c 4d61 736b  cheme::LocalMask\n-0001f830: 3a3a 5365 744e 756d 4564 6765 5765 6967  ::SetNumEdgeWeig\n-0001f840: 6874 733c 2f61 3e3c 2f64 6976 3e3c 6469  hts</a></div><di\n-0001f850: 7620 636c 6173 733d 2274 7464 6563 6922  v class=\"ttdeci\"\n-0001f860: 3e76 6f69 6420 5365 744e 756d 4564 6765  >void SetNumEdge\n-0001f870: 5765 6967 6874 7328 696e 7420 636f 756e  Weights(int coun\n-0001f880: 7429 3c2f 6469 763e 3c64 6976 2063 6c61  t)</div><div cla\n-0001f890: 7373 3d22 7474 6465 6622 3e3c 623e 4465  ss=\"ttdef\"><b>De\n-0001f8a0: 6669 6e69 7469 6f6e 3c2f 623e 203c 6120  finition</b> <a \n-0001f8b0: 6872 6566 3d22 6130 3037 3433 5f73 6f75  href=\"a00743_sou\n-0001f8c0: 7263 652e 6874 6d6c 236c 3030 3232 3822  rce.html#l00228\"\n-0001f8d0: 3e73 6368 656d 652e 683a 3232 383c 2f61  >scheme.h:228</a\n-0001f8e0: 3e3c 2f64 6976 3e3c 2f64 6976 3e0a 3c64  ></div></div>.<d\n-0001f8f0: 6976 2063 6c61 7373 3d22 7474 6322 2069  iv class=\"ttc\" i\n-0001f900: 643d 2261 6130 3133 3435 5f68 746d 6c5f  d=\"aa01345_html_\n-0001f910: 6134 6462 3933 3261 3861 3333 6664 3036  a4db932a8a33fd06\n-0001f920: 3232 6337 6430 3131 3637 6562 3134 6235  22c7d01167eb14b5\n-0001f930: 3222 3e3c 6469 7620 636c 6173 733d 2274  2\"><div class=\"t\n-0001f940: 746e 616d 6522 3e3c 6120 6872 6566 3d22  tname\"><a href=\"\n-0001f950: 6130 3133 3435 2e68 746d 6c23 6134 6462  a01345.html#a4db\n-0001f960: 3933 3261 3861 3333 6664 3036 3232 6337  932a8a33fd0622c7\n-0001f970: 6430 3131 3637 6562 3134 6235 3222 3e4f  d01167eb14b52\">O\n-0001f980: 7065 6e53 7562 6469 763a 3a4f 5045 4e53  penSubdiv::OPENS\n-0001f990: 5542 4449 565f 5645 5253 494f 4e3a 3a53  UBDIV_VERSION::S\n-0001f9a0: 6463 3a3a 5363 6865 6d65 3a3a 4c6f 6361  dc::Scheme::Loca\n-0001f9b0: 6c4d 6173 6b3a 3a45 6467 6557 6569 6768  lMask::EdgeWeigh\n-0001f9c0: 743c 2f61 3e3c 2f64 6976 3e3c 6469 7620  t</a></div><div \n-0001f9d0: 636c 6173 733d 2274 7464 6563 6922 3e57  class=\"ttdeci\">W\n-0001f9e0: 6569 6768 7420 636f 6e73 7420 2661 6d70  eight const &amp\n-0001f9f0: 3b20 4564 6765 5765 6967 6874 2869 6e74  ; EdgeWeight(int\n-0001fa00: 2069 6e64 6578 2920 636f 6e73 743c 2f64   index) const</d\n-0001fa10: 6976 3e3c 6469 7620 636c 6173 733d 2274  iv><div class=\"t\n-0001fa20: 7464 6566 223e 3c62 3e44 6566 696e 6974  tdef\"><b>Definit\n-0001fa30: 696f 6e3c 2f62 3e20 3c61 2068 7265 663d  ion</b> <a href=\n-0001fa40: 2261 3030 3734 335f 736f 7572 6365 2e68  \"a00743_source.h\n-0001fa50: 746d 6c23 6c30 3032 3332 223e 7363 6865  tml#l00232\">sche\n-0001fa60: 6d65 2e68 3a32 3332 3c2f 613e 3c2f 6469  me.h:232</a></di\n-0001fa70: 763e 3c2f 6469 763e 0a3c 6469 7620 636c  v></div>.<div cl\n-0001fa80: 6173 733d 2274 7463 2220 6964 3d22 6161  ass=\"ttc\" id=\"aa\n-0001fa90: 3031 3334 355f 6874 6d6c 5f61 3533 3364  01345_html_a533d\n-0001faa0: 6261 3332 6139 3436 3835 3463 3366 3235  ba32a946854c3f25\n-0001fab0: 6532 3762 3532 3165 6637 6466 223e 3c64  e27b521ef7df\"><d\n-0001fac0: 6976 2063 6c61 7373 3d22 7474 6e61 6d65  iv class=\"ttname\n-0001fad0: 223e 3c61 2068 7265 663d 2261 3031 3334  \"><a href=\"a0134\n-0001fae0: 352e 6874 6d6c 2361 3533 3364 6261 3332  5.html#a533dba32\n-0001faf0: 6139 3436 3835 3463 3366 3235 6532 3762  a946854c3f25e27b\n-0001fb00: 3532 3165 6637 6466 223e 4f70 656e 5375  521ef7df\">OpenSu\n-0001fb10: 6264 6976 3a3a 4f50 454e 5355 4244 4956  bdiv::OPENSUBDIV\n-0001fb20: 5f56 4552 5349 4f4e 3a3a 5364 633a 3a53  _VERSION::Sdc::S\n-0001fb30: 6368 656d 653a 3a4c 6f63 616c 4d61 736b  cheme::LocalMask\n-0001fb40: 3a3a 4564 6765 5765 6967 6874 3c2f 613e  ::EdgeWeight</a>\n-0001fb50: 3c2f 6469 763e 3c64 6976 2063 6c61 7373  </div><div class\n-0001fb60: 3d22 7474 6465 6369 223e 5765 6967 6874  =\"ttdeci\">Weight\n-0001fb70: 2026 616d 703b 2045 6467 6557 6569 6768   &amp; EdgeWeigh\n-0001fb80: 7428 696e 7420 696e 6465 7829 3c2f 6469  t(int index)</di\n-0001fb90: 763e 3c64 6976 2063 6c61 7373 3d22 7474  v><div class=\"tt\n-0001fba0: 6465 6622 3e3c 623e 4465 6669 6e69 7469  def\"><b>Definiti\n-0001fbb0: 6f6e 3c2f 623e 203c 6120 6872 6566 3d22  on</b> <a href=\"\n-0001fbc0: 6130 3037 3433 5f73 6f75 7263 652e 6874  a00743_source.ht\n-0001fbd0: 6d6c 236c 3030 3233 3622 3e73 6368 656d  ml#l00236\">schem\n-0001fbe0: 652e 683a 3233 363c 2f61 3e3c 2f64 6976  e.h:236</a></div\n-0001fbf0: 3e3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ></div>.<div cla\n-0001fc00: 7373 3d22 7474 6322 2069 643d 2261 6130  ss=\"ttc\" id=\"aa0\n-0001fc10: 3133 3435 5f68 746d 6c5f 6135 6564 3830  1345_html_a5ed80\n-0001fc20: 3065 3964 3730 3266 3537 6165 3937 3866  0e9d702f57ae978f\n-0001fc30: 6536 3062 6132 6133 3764 6322 3e3c 6469  e60ba2a37dc\"><di\n-0001fc40: 7620 636c 6173 733d 2274 746e 616d 6522  v class=\"ttname\"\n-0001fc50: 3e3c 6120 6872 6566 3d22 6130 3133 3435  ><a href=\"a01345\n-0001fc60: 2e68 746d 6c23 6135 6564 3830 3065 3964  .html#a5ed800e9d\n-0001fc70: 3730 3266 3537 6165 3937 3866 6536 3062  702f57ae978fe60b\n-0001fc80: 6132 6133 3764 6322 3e4f 7065 6e53 7562  a2a37dc\">OpenSub\n-0001fc90: 6469 763a 3a4f 5045 4e53 5542 4449 565f  div::OPENSUBDIV_\n-0001fca0: 5645 5253 494f 4e3a 3a53 6463 3a3a 5363  VERSION::Sdc::Sc\n-0001fcb0: 6865 6d65 3a3a 4c6f 6361 6c4d 6173 6b3a  heme::LocalMask:\n-0001fcc0: 3a43 6f6d 6269 6e65 5665 7274 6578 5665  :CombineVertexVe\n-0001fcd0: 7274 6578 4d61 736b 733c 2f61 3e3c 2f64  rtexMasks</a></d\n-0001fce0: 6976 3e3c 6469 7620 636c 6173 733d 2274  iv><div class=\"t\n-0001fcf0: 7464 6563 6922 3e76 6f69 6420 436f 6d62  tdeci\">void Comb\n-0001fd00: 696e 6556 6572 7465 7856 6572 7465 784d  ineVertexVertexM\n-0001fd10: 6173 6b73 2857 6569 6768 7420 7468 6973  asks(Weight this\n-0001fd20: 436f 6566 662c 2057 6569 6768 7420 6473  Coeff, Weight ds\n-0001fd30: 7443 6f65 6666 2c20 5553 4552 5f4d 4153  tCoeff, USER_MAS\n-0001fd40: 4b20 2661 6d70 3b64 7374 2920 636f 6e73  K &amp;dst) cons\n-0001fd50: 743c 2f64 6976 3e3c 6469 7620 636c 6173  t</div><div clas\n-0001fd60: 733d 2274 7464 6566 223e 3c62 3e44 6566  s=\"ttdef\"><b>Def\n-0001fd70: 696e 6974 696f 6e3c 2f62 3e20 3c61 2068  inition</b> <a h\n-0001fd80: 7265 663d 2261 3030 3734 335f 736f 7572  ref=\"a00743_sour\n-0001fd90: 6365 2e68 746d 6c23 6c30 3032 3439 223e  ce.html#l00249\">\n-0001fda0: 7363 6865 6d65 2e68 3a32 3439 3c2f 613e  scheme.h:249</a>\n-0001fdb0: 3c2f 6469 763e 3c2f 6469 763e 0a3c 6469  </div></div>.<di\n-0001fdc0: 7620 636c 6173 733d 2274 7463 2220 6964  v class=\"ttc\" id\n-0001fdd0: 3d22 6161 3031 3334 355f 6874 6d6c 5f61  =\"aa01345_html_a\n-0001fde0: 3630 3664 3933 3463 3664 3330 6233 6338  606d934c6d30b3c8\n-0001fdf0: 6165 3631 3730 3030 6562 3863 3561 3962  ae617000eb8c5a9b\n-0001fe00: 223e 3c64 6976 2063 6c61 7373 3d22 7474  \"><div class=\"tt\n-0001fe10: 6e61 6d65 223e 3c61 2068 7265 663d 2261  name\"><a href=\"a\n-0001fe20: 3031 3334 352e 6874 6d6c 2361 3630 3664  01345.html#a606d\n-0001fe30: 3933 3463 3664 3330 6233 6338 6165 3631  934c6d30b3c8ae61\n-0001fe40: 3730 3030 6562 3863 3561 3962 223e 4f70  7000eb8c5a9b\">Op\n-0001fe50: 656e 5375 6264 6976 3a3a 4f50 454e 5355  enSubdiv::OPENSU\n-0001fe60: 4244 4956 5f56 4552 5349 4f4e 3a3a 5364  BDIV_VERSION::Sd\n-0001fe70: 633a 3a53 6368 656d 653a 3a4c 6f63 616c  c::Scheme::Local\n-0001fe80: 4d61 736b 3a3a 4765 744e 756d 5665 7274  Mask::GetNumVert\n-0001fe90: 6578 5765 6967 6874 733c 2f61 3e3c 2f64  exWeights</a></d\n-0001fea0: 6976 3e3c 6469 7620 636c 6173 733d 2274  iv><div class=\"t\n-0001feb0: 7464 6563 6922 3e69 6e74 2047 6574 4e75  tdeci\">int GetNu\n-0001fec0: 6d56 6572 7465 7857 6569 6768 7473 2829  mVertexWeights()\n-0001fed0: 2063 6f6e 7374 3c2f 6469 763e 3c64 6976   const</div><div\n-0001fee0: 2063 6c61 7373 3d22 7474 6465 6622 3e3c   class=\"ttdef\"><\n-0001fef0: 623e 4465 6669 6e69 7469 6f6e 3c2f 623e  b>Definition</b>\n-0001ff00: 203c 6120 6872 6566 3d22 6130 3037 3433   <a href=\"a00743\n-0001ff10: 5f73 6f75 7263 652e 6874 6d6c 236c 3030  _source.html#l00\n-0001ff20: 3232 3322 3e73 6368 656d 652e 683a 3232  223\">scheme.h:22\n-0001ff30: 333c 2f61 3e3c 2f64 6976 3e3c 2f64 6976  3</a></div></div\n-0001ff40: 3e0a 3c64 6976 2063 6c61 7373 3d22 7474  >.<div class=\"tt\n-0001ff50: 6322 2069 643d 2261 6130 3133 3435 5f68  c\" id=\"aa01345_h\n-0001ff60: 746d 6c5f 6136 3165 3933 3366 3961 3132  tml_a61e933f9a12\n-0001ff70: 3863 6231 3664 3331 3631 3166 6439 3665  8cb16d31611fd96e\n-0001ff80: 6364 3135 3322 3e3c 6469 7620 636c 6173  cd153\"><div clas\n-0001ff90: 733d 2274 746e 616d 6522 3e3c 6120 6872  s=\"ttname\"><a hr\n-0001ffa0: 6566 3d22 6130 3133 3435 2e68 746d 6c23  ef=\"a01345.html#\n-0001ffb0: 6136 3165 3933 3366 3961 3132 3863 6231  a61e933f9a128cb1\n-0001ffc0: 3664 3331 3631 3166 6439 3665 6364 3135  6d31611fd96ecd15\n-0001ffd0: 3322 3e4f 7065 6e53 7562 6469 763a 3a4f  3\">OpenSubdiv::O\n-0001ffe0: 5045 4e53 5542 4449 565f 5645 5253 494f  PENSUBDIV_VERSIO\n-0001fff0: 4e3a 3a53 6463 3a3a 5363 6865 6d65 3a3a  N::Sdc::Scheme::\n-00020000: 4c6f 6361 6c4d 6173 6b3a 3a53 6574 4e75  LocalMask::SetNu\n-00020010: 6d46 6163 6557 6569 6768 7473 3c2f 613e  mFaceWeights</a>\n-00020020: 3c2f 6469 763e 3c64 6976 2063 6c61 7373  </div><div class\n-00020030: 3d22 7474 6465 6369 223e 766f 6964 2053  =\"ttdeci\">void S\n-00020040: 6574 4e75 6d46 6163 6557 6569 6768 7473  etNumFaceWeights\n-00020050: 2869 6e74 2063 6f75 6e74 293c 2f64 6976  (int count)</div\n-00020060: 3e3c 6469 7620 636c 6173 733d 2274 7464  ><div class=\"ttd\n-00020070: 6566 223e 3c62 3e44 6566 696e 6974 696f  ef\"><b>Definitio\n-00020080: 6e3c 2f62 3e20 3c61 2068 7265 663d 2261  n</b> <a href=\"a\n-00020090: 3030 3734 335f 736f 7572 6365 2e68 746d  00743_source.htm\n-000200a0: 6c23 6c30 3032 3239 223e 7363 6865 6d65  l#l00229\">scheme\n-000200b0: 2e68 3a32 3239 3c2f 613e 3c2f 6469 763e  .h:229</a></div>\n-000200c0: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n-000200d0: 733d 2274 7463 2220 6964 3d22 6161 3031  s=\"ttc\" id=\"aa01\n-000200e0: 3334 355f 6874 6d6c 5f61 3637 3464 6131  345_html_a674da1\n-000200f0: 3132 3838 3935 6138 6362 6166 6136 6330  128895a8cbafa6c0\n-00020100: 6563 3439 6539 6165 6330 223e 3c64 6976  ec49e9aec0\"><div\n-00020110: 2063 6c61 7373 3d22 7474 6e61 6d65 223e   class=\"ttname\">\n-00020120: 3c61 2068 7265 663d 2261 3031 3334 352e  <a href=\"a01345.\n-00020130: 6874 6d6c 2361 3637 3464 6131 3132 3838  html#a674da11288\n-00020140: 3935 6138 6362 6166 6136 6330 6563 3439  95a8cbafa6c0ec49\n-00020150: 6539 6165 6330 223e 4f70 656e 5375 6264  e9aec0\">OpenSubd\n-00020160: 6976 3a3a 4f50 454e 5355 4244 4956 5f56  iv::OPENSUBDIV_V\n-00020170: 4552 5349 4f4e 3a3a 5364 633a 3a53 6368  ERSION::Sdc::Sch\n-00020180: 656d 653a 3a4c 6f63 616c 4d61 736b 3a3a  eme::LocalMask::\n-00020190: 4661 6365 5765 6967 6874 3c2f 613e 3c2f  FaceWeight</a></\n-000201a0: 6469 763e 3c64 6976 2063 6c61 7373 3d22  div><div class=\"\n-000201b0: 7474 6465 6369 223e 5765 6967 6874 2063  ttdeci\">Weight c\n-000201c0: 6f6e 7374 2026 616d 703b 2046 6163 6557  onst &amp; FaceW\n-000201d0: 6569 6768 7428 696e 7420 696e 6465 7829  eight(int index)\n-000201e0: 2063 6f6e 7374 3c2f 6469 763e 3c64 6976   const</div><div\n-000201f0: 2063 6c61 7373 3d22 7474 6465 6622 3e3c   class=\"ttdef\"><\n-00020200: 623e 4465 6669 6e69 7469 6f6e 3c2f 623e  b>Definition</b>\n-00020210: 203c 6120 6872 6566 3d22 6130 3037 3433   <a href=\"a00743\n-00020220: 5f73 6f75 7263 652e 6874 6d6c 236c 3030  _source.html#l00\n-00020230: 3233 3322 3e73 6368 656d 652e 683a 3233  233\">scheme.h:23\n-00020240: 333c 2f61 3e3c 2f64 6976 3e3c 2f64 6976  3</a></div></div\n-00020250: 3e0a 3c64 6976 2063 6c61 7373 3d22 7474  >.<div class=\"tt\n-00020260: 6322 2069 643d 2261 6130 3133 3435 5f68  c\" id=\"aa01345_h\n-00020270: 746d 6c5f 6139 3065 3064 3239 3831 6632  tml_a90e0d2981f2\n-00020280: 3962 6337 6262 6466 6261 6261 3864 6236  9bc7bbdfbaba8db6\n-00020290: 3332 3735 3122 3e3c 6469 7620 636c 6173  32751\"><div clas\n-000202a0: 733d 2274 746e 616d 6522 3e3c 6120 6872  s=\"ttname\"><a hr\n-000202b0: 6566 3d22 6130 3133 3435 2e68 746d 6c23  ef=\"a01345.html#\n-000202c0: 6139 3065 3064 3239 3831 6632 3962 6337  a90e0d2981f29bc7\n-000202d0: 6262 6466 6261 6261 3864 6236 3332 3735  bbdfbaba8db63275\n-000202e0: 3122 3e4f 7065 6e53 7562 6469 763a 3a4f  1\">OpenSubdiv::O\n-000202f0: 5045 4e53 5542 4449 565f 5645 5253 494f  PENSUBDIV_VERSIO\n-00020300: 4e3a 3a53 6463 3a3a 5363 6865 6d65 3a3a  N::Sdc::Scheme::\n-00020310: 4c6f 6361 6c4d 6173 6b3a 3a47 6574 4e75  LocalMask::GetNu\n-00020320: 6d45 6467 6557 6569 6768 7473 3c2f 613e  mEdgeWeights</a>\n-00020330: 3c2f 6469 763e 3c64 6976 2063 6c61 7373  </div><div class\n-00020340: 3d22 7474 6465 6369 223e 696e 7420 4765  =\"ttdeci\">int Ge\n-00020350: 744e 756d 4564 6765 5765 6967 6874 7328  tNumEdgeWeights(\n-00020360: 2920 636f 6e73 743c 2f64 6976 3e3c 6469  ) const</div><di\n-00020370: 7620 636c 6173 733d 2274 7464 6566 223e  v class=\"ttdef\">\n-00020380: 3c62 3e44 6566 696e 6974 696f 6e3c 2f62  <b>Definition</b\n-00020390: 3e20 3c61 2068 7265 663d 2261 3030 3734  > <a href=\"a0074\n-000203a0: 335f 736f 7572 6365 2e68 746d 6c23 6c30  3_source.html#l0\n-000203b0: 3032 3234 223e 7363 6865 6d65 2e68 3a32  0224\">scheme.h:2\n-000203c0: 3234 3c2f 613e 3c2f 6469 763e 3c2f 6469  24</a></div></di\n-000203d0: 763e 0a3c 6469 7620 636c 6173 733d 2274  v>.<div class=\"t\n-000203e0: 7463 2220 6964 3d22 6161 3031 3334 355f  tc\" id=\"aa01345_\n-000203f0: 6874 6d6c 5f61 3932 6539 3839 3837 6639  html_a92e98987f9\n-00020400: 6134 3232 3062 3965 6464 3034 3134 3031  a4220b9edd041401\n-00020410: 6339 6564 3736 223e 3c64 6976 2063 6c61  c9ed76\"><div cla\n-00020420: 7373 3d22 7474 6e61 6d65 223e 3c61 2068  ss=\"ttname\"><a h\n-00020430: 7265 663d 2261 3031 3334 352e 6874 6d6c  ref=\"a01345.html\n-00020440: 2361 3932 6539 3839 3837 6639 6134 3232  #a92e98987f9a422\n-00020450: 3062 3965 6464 3034 3134 3031 6339 6564  0b9edd041401c9ed\n-00020460: 3736 223e 4f70 656e 5375 6264 6976 3a3a  76\">OpenSubdiv::\n-00020470: 4f50 454e 5355 4244 4956 5f56 4552 5349  OPENSUBDIV_VERSI\n-00020480: 4f4e 3a3a 5364 633a 3a53 6368 656d 653a  ON::Sdc::Scheme:\n-00020490: 3a4c 6f63 616c 4d61 736b 3a3a 5665 7274  :LocalMask::Vert\n-000204a0: 6578 5765 6967 6874 3c2f 613e 3c2f 6469  exWeight</a></di\n-000204b0: 763e 3c64 6976 2063 6c61 7373 3d22 7474  v><div class=\"tt\n-000204c0: 6465 6369 223e 5765 6967 6874 2026 616d  deci\">Weight &am\n-000204d0: 703b 2056 6572 7465 7857 6569 6768 7428  p; VertexWeight(\n-000204e0: 696e 7420 696e 6465 7829 3c2f 6469 763e  int index)</div>\n-000204f0: 3c64 6976 2063 6c61 7373 3d22 7474 6465  <div class=\"ttde\n-00020500: 6622 3e3c 623e 4465 6669 6e69 7469 6f6e  f\"><b>Definition\n-00020510: 3c2f 623e 203c 6120 6872 6566 3d22 6130  </b> <a href=\"a0\n-00020520: 3037 3433 5f73 6f75 7263 652e 6874 6d6c  0743_source.html\n-00020530: 236c 3030 3233 3522 3e73 6368 656d 652e  #l00235\">scheme.\n-00020540: 683a 3233 353c 2f61 3e3c 2f64 6976 3e3c  h:235</a></div><\n-00020550: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n-00020560: 3d22 7474 6322 2069 643d 2261 6130 3133  =\"ttc\" id=\"aa013\n-00020570: 3435 5f68 746d 6c5f 6139 3366 3537 6535  45_html_a93f57e5\n-00020580: 3333 3733 3931 6332 3064 3436 6465 6664  337391c20d46defd\n-00020590: 6233 6161 3263 3166 6522 3e3c 6469 7620  b3aa2c1fe\"><div \n-000205a0: 636c 6173 733d 2274 746e 616d 6522 3e3c  class=\"ttname\"><\n-000205b0: 6120 6872 6566 3d22 6130 3133 3435 2e68  a href=\"a01345.h\n-000205c0: 746d 6c23 6139 3366 3537 6535 3333 3733  tml#a93f57e53373\n-000205d0: 3931 6332 3064 3436 6465 6664 6233 6161  91c20d46defdb3aa\n-000205e0: 3263 3166 6522 3e4f 7065 6e53 7562 6469  2c1fe\">OpenSubdi\n-000205f0: 763a 3a4f 5045 4e53 5542 4449 565f 5645  v::OPENSUBDIV_VE\n-00020600: 5253 494f 4e3a 3a53 6463 3a3a 5363 6865  RSION::Sdc::Sche\n-00020610: 6d65 3a3a 4c6f 6361 6c4d 6173 6b3a 3a47  me::LocalMask::G\n-00020620: 6574 4e75 6d46 6163 6557 6569 6768 7473  etNumFaceWeights\n-00020630: 3c2f 613e 3c2f 6469 763e 3c64 6976 2063  </a></div><div c\n-00020640: 6c61 7373 3d22 7474 6465 6369 223e 696e  lass=\"ttdeci\">in\n-00020650: 7420 4765 744e 756d 4661 6365 5765 6967  t GetNumFaceWeig\n-00020660: 6874 7328 2920 636f 6e73 743c 2f64 6976  hts() const</div\n-00020670: 3e3c 6469 7620 636c 6173 733d 2274 7464  ><div class=\"ttd\n-00020680: 6566 223e 3c62 3e44 6566 696e 6974 696f  ef\"><b>Definitio\n-00020690: 6e3c 2f62 3e20 3c61 2068 7265 663d 2261  n</b> <a href=\"a\n-000206a0: 3030 3734 335f 736f 7572 6365 2e68 746d  00743_source.htm\n-000206b0: 6c23 6c30 3032 3235 223e 7363 6865 6d65  l#l00225\">scheme\n-000206c0: 2e68 3a32 3235 3c2f 613e 3c2f 6469 763e  .h:225</a></div>\n-000206d0: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n-000206e0: 733d 2274 7463 2220 6964 3d22 6161 3031  s=\"ttc\" id=\"aa01\n-000206f0: 3334 355f 6874 6d6c 5f61 3962 6134 3932  345_html_a9ba492\n-00020700: 3961 3861 3861 3664 3334 6164 6663 3566  9a8a8a6d34adfc5f\n-00020710: 3262 6564 3636 3764 3736 223e 3c64 6976  2bed667d76\"><div\n-00020720: 2063 6c61 7373 3d22 7474 6e61 6d65 223e   class=\"ttname\">\n-00020730: 3c61 2068 7265 663d 2261 3031 3334 352e  <a href=\"a01345.\n-00020740: 6874 6d6c 2361 3962 6134 3932 3961 3861  html#a9ba4929a8a\n-00020750: 3861 3664 3334 6164 6663 3566 3262 6564  8a6d34adfc5f2bed\n-00020760: 3636 3764 3736 223e 4f70 656e 5375 6264  667d76\">OpenSubd\n-00020770: 6976 3a3a 4f50 454e 5355 4244 4956 5f56  iv::OPENSUBDIV_V\n-00020780: 4552 5349 4f4e 3a3a 5364 633a 3a53 6368  ERSION::Sdc::Sch\n-00020790: 656d 653a 3a4c 6f63 616c 4d61 736b 3a3a  eme::LocalMask::\n-000207a0: 5365 7446 6163 6557 6569 6768 7473 466f  SetFaceWeightsFo\n-000207b0: 7246 6163 6543 656e 7465 7273 3c2f 613e  rFaceCenters</a>\n-000207c0: 3c2f 6469 763e 3c64 6976 2063 6c61 7373  </div><div class\n-000207d0: 3d22 7474 6465 6369 223e 766f 6964 2053  =\"ttdeci\">void S\n-000207e0: 6574 4661 6365 5765 6967 6874 7346 6f72  etFaceWeightsFor\n-000207f0: 4661 6365 4365 6e74 6572 7328 626f 6f6c  FaceCenters(bool\n-00020800: 206f 6e29 3c2f 6469 763e 3c64 6976 2063   on)</div><div c\n-00020810: 6c61 7373 3d22 7474 6465 6622 3e3c 623e  lass=\"ttdef\"><b>\n-00020820: 4465 6669 6e69 7469 6f6e 3c2f 623e 203c  Definition</b> <\n-00020830: 6120 6872 6566 3d22 6130 3037 3433 5f73  a href=\"a00743_s\n-00020840: 6f75 7263 652e 6874 6d6c 236c 3030 3234  ource.html#l0024\n-00020850: 3022 3e73 6368 656d 652e 683a 3234 303c  0\">scheme.h:240<\n-00020860: 2f61 3e3c 2f64 6976 3e3c 2f64 6976 3e0a  /a></div></div>.\n-00020870: 3c64 6976 2063 6c61 7373 3d22 7474 6322  <div class=\"ttc\"\n-00020880: 2069 643d 2261 6130 3133 3435 5f68 746d   id=\"aa01345_htm\n-00020890: 6c5f 6139 6563 6436 3237 6465 3361 3063  l_a9ecd627de3a0c\n-000208a0: 6135 6562 3261 6462 6564 3834 6533 3962  a5eb2adbed84e39b\n-000208b0: 3638 3122 3e3c 6469 7620 636c 6173 733d  681\"><div class=\n-000208c0: 2274 746e 616d 6522 3e3c 6120 6872 6566  \"ttname\"><a href\n-000208d0: 3d22 6130 3133 3435 2e68 746d 6c23 6139  =\"a01345.html#a9\n-000208e0: 6563 6436 3237 6465 3361 3063 6135 6562  ecd627de3a0ca5eb\n-000208f0: 3261 6462 6564 3834 6533 3962 3638 3122  2adbed84e39b681\"\n-00020900: 3e4f 7065 6e53 7562 6469 763a 3a4f 5045  >OpenSubdiv::OPE\n-00020910: 4e53 5542 4449 565f 5645 5253 494f 4e3a  NSUBDIV_VERSION:\n-00020920: 3a53 6463 3a3a 5363 6865 6d65 3a3a 4c6f  :Sdc::Scheme::Lo\n-00020930: 6361 6c4d 6173 6b3a 3a53 6574 4e75 6d56  calMask::SetNumV\n-00020940: 6572 7465 7857 6569 6768 7473 3c2f 613e  ertexWeights</a>\n-00020950: 3c2f 6469 763e 3c64 6976 2063 6c61 7373  </div><div class\n-00020960: 3d22 7474 6465 6369 223e 766f 6964 2053  =\"ttdeci\">void S\n-00020970: 6574 4e75 6d56 6572 7465 7857 6569 6768  etNumVertexWeigh\n-00020980: 7473 2869 6e74 2063 6f75 6e74 293c 2f64  ts(int count)</d\n-00020990: 6976 3e3c 6469 7620 636c 6173 733d 2274  iv><div class=\"t\n-000209a0: 7464 6566 223e 3c62 3e44 6566 696e 6974  tdef\"><b>Definit\n-000209b0: 696f 6e3c 2f62 3e20 3c61 2068 7265 663d  ion</b> <a href=\n-000209c0: 2261 3030 3734 335f 736f 7572 6365 2e68  \"a00743_source.h\n-000209d0: 746d 6c23 6c30 3032 3237 223e 7363 6865  tml#l00227\">sche\n-000209e0: 6d65 2e68 3a32 3237 3c2f 613e 3c2f 6469  me.h:227</a></di\n-000209f0: 763e 3c2f 6469 763e 0a3c 6469 7620 636c  v></div>.<div cl\n-00020a00: 6173 733d 2274 7463 2220 6964 3d22 6161  ass=\"ttc\" id=\"aa\n-00020a10: 3031 3334 355f 6874 6d6c 5f61 6334 6234  01345_html_ac4b4\n-00020a20: 6335 3566 6232 3464 6139 3566 3135 3466  c55fb24da95f154f\n-00020a30: 3461 3966 3531 3764 6230 3739 223e 3c64  4a9f517db079\"><d\n-00020a40: 6976 2063 6c61 7373 3d22 7474 6e61 6d65  iv class=\"ttname\n-00020a50: 223e 3c61 2068 7265 663d 2261 3031 3334  \"><a href=\"a0134\n-00020a60: 352e 6874 6d6c 2361 6334 6234 6335 3566  5.html#ac4b4c55f\n-00020a70: 6232 3464 6139 3566 3135 3466 3461 3966  b24da95f154f4a9f\n-00020a80: 3531 3764 6230 3739 223e 4f70 656e 5375  517db079\">OpenSu\n-00020a90: 6264 6976 3a3a 4f50 454e 5355 4244 4956  bdiv::OPENSUBDIV\n-00020aa0: 5f56 4552 5349 4f4e 3a3a 5364 633a 3a53  _VERSION::Sdc::S\n-00020ab0: 6368 656d 653a 3a4c 6f63 616c 4d61 736b  cheme::LocalMask\n-00020ac0: 3a3a 4c6f 6361 6c4d 6173 6b3c 2f61 3e3c  ::LocalMask</a><\n-00020ad0: 2f64 6976 3e3c 6469 7620 636c 6173 733d  /div><div class=\n-00020ae0: 2274 7464 6563 6922 3e4c 6f63 616c 4d61  \"ttdeci\">LocalMa\n-00020af0: 736b 2857 6569 6768 7420 2a76 2c20 5765  sk(Weight *v, We\n-00020b00: 6967 6874 202a 652c 2057 6569 6768 7420  ight *e, Weight \n-00020b10: 2a66 293c 2f64 6976 3e3c 6469 7620 636c  *f)</div><div cl\n-00020b20: 6173 733d 2274 7464 6566 223e 3c62 3e44  ass=\"ttdef\"><b>D\n-00020b30: 6566 696e 6974 696f 6e3c 2f62 3e20 3c61  efinition</b> <a\n-00020b40: 2068 7265 663d 2261 3030 3734 335f 736f   href=\"a00743_so\n-00020b50: 7572 6365 2e68 746d 6c23 6c30 3032 3135  urce.html#l00215\n-00020b60: 223e 7363 6865 6d65 2e68 3a32 3135 3c2f  \">scheme.h:215</\n-00020b70: 613e 3c2f 6469 763e 3c2f 6469 763e 0a3c  a></div></div>.<\n-00020b80: 6469 7620 636c 6173 733d 2274 7463 2220  div class=\"ttc\" \n-00020b90: 6964 3d22 6161 3031 3334 355f 6874 6d6c  id=\"aa01345_html\n-00020ba0: 5f61 6563 3563 3261 6266 6466 6264 6534  _aec5c2abfdfbde4\n-00020bb0: 6464 3933 3463 3036 3136 3235 3939 3437  dd934c0616259947\n-00020bc0: 3931 223e 3c64 6976 2063 6c61 7373 3d22  91\"><div class=\"\n-00020bd0: 7474 6e61 6d65 223e 3c61 2068 7265 663d  ttname\"><a href=\n-00020be0: 2261 3031 3334 352e 6874 6d6c 2361 6563  \"a01345.html#aec\n-00020bf0: 3563 3261 6266 6466 6264 6534 6464 3933  5c2abfdfbde4dd93\n-00020c00: 3463 3036 3136 3235 3939 3437 3931 223e  4c061625994791\">\n-00020c10: 4f70 656e 5375 6264 6976 3a3a 4f50 454e  OpenSubdiv::OPEN\n-00020c20: 5355 4244 4956 5f56 4552 5349 4f4e 3a3a  SUBDIV_VERSION::\n-00020c30: 5364 633a 3a53 6368 656d 653a 3a4c 6f63  Sdc::Scheme::Loc\n-00020c40: 616c 4d61 736b 3a3a 5665 7274 6578 5765  alMask::VertexWe\n-00020c50: 6967 6874 3c2f 613e 3c2f 6469 763e 3c64  ight</a></div><d\n-00020c60: 6976 2063 6c61 7373 3d22 7474 6465 6369  iv class=\"ttdeci\n-00020c70: 223e 5765 6967 6874 2063 6f6e 7374 2026  \">Weight const &\n-00020c80: 616d 703b 2056 6572 7465 7857 6569 6768  amp; VertexWeigh\n-00020c90: 7428 696e 7420 696e 6465 7829 2063 6f6e  t(int index) con\n-00020ca0: 7374 3c2f 6469 763e 3c64 6976 2063 6c61  st</div><div cla\n-00020cb0: 7373 3d22 7474 6465 6622 3e3c 623e 4465  ss=\"ttdef\"><b>De\n-00020cc0: 6669 6e69 7469 6f6e 3c2f 623e 203c 6120  finition</b> <a \n-00020cd0: 6872 6566 3d22 6130 3037 3433 5f73 6f75  href=\"a00743_sou\n-00020ce0: 7263 652e 6874 6d6c 236c 3030 3233 3122  rce.html#l00231\"\n-00020cf0: 3e73 6368 656d 652e 683a 3233 313c 2f61  >scheme.h:231</a\n-00020d00: 3e3c 2f64 6976 3e3c 2f64 6976 3e0a 3c64  ></div></div>.<d\n-00020d10: 6976 2063 6c61 7373 3d22 7474 6322 2069  iv class=\"ttc\" i\n-00020d20: 643d 2261 6130 3133 3435 5f68 746d 6c5f  d=\"aa01345_html_\n-00020d30: 6165 6466 3239 6633 3037 3836 6236 3233  aedf29f30786b623\n-00020d40: 3732 3030 3461 3232 6133 6661 3335 6135  72004a22a3fa35a5\n-00020d50: 6322 3e3c 6469 7620 636c 6173 733d 2274  c\"><div class=\"t\n-00020d60: 746e 616d 6522 3e3c 6120 6872 6566 3d22  tname\"><a href=\"\n-00020d70: 6130 3133 3435 2e68 746d 6c23 6165 6466  a01345.html#aedf\n-00020d80: 3239 6633 3037 3836 6236 3233 3732 3030  29f30786b6237200\n-00020d90: 3461 3232 6133 6661 3335 6135 6322 3e4f  4a22a3fa35a5c\">O\n-00020da0: 7065 6e53 7562 6469 763a 3a4f 5045 4e53  penSubdiv::OPENS\n-00020db0: 5542 4449 565f 5645 5253 494f 4e3a 3a53  UBDIV_VERSION::S\n-00020dc0: 6463 3a3a 5363 6865 6d65 3a3a 4c6f 6361  dc::Scheme::Loca\n-00020dd0: 6c4d 6173 6b3a 3a46 6163 6557 6569 6768  lMask::FaceWeigh\n-00020de0: 743c 2f61 3e3c 2f64 6976 3e3c 6469 7620  t</a></div><div \n-00020df0: 636c 6173 733d 2274 7464 6563 6922 3e57  class=\"ttdeci\">W\n-00020e00: 6569 6768 7420 2661 6d70 3b20 4661 6365  eight &amp; Face\n-00020e10: 5765 6967 6874 2869 6e74 2069 6e64 6578  Weight(int index\n-00020e20: 293c 2f64 6976 3e3c 6469 7620 636c 6173  )</div><div clas\n-00020e30: 733d 2274 7464 6566 223e 3c62 3e44 6566  s=\"ttdef\"><b>Def\n-00020e40: 696e 6974 696f 6e3c 2f62 3e20 3c61 2068  inition</b> <a h\n-00020e50: 7265 663d 2261 3030 3734 335f 736f 7572  ref=\"a00743_sour\n-00020e60: 6365 2e68 746d 6c23 6c30 3032 3337 223e  ce.html#l00237\">\n-00020e70: 7363 6865 6d65 2e68 3a32 3337 3c2f 613e  scheme.h:237</a>\n-00020e80: 3c2f 6469 763e 3c2f 6469 763e 0a3c 6469  </div></div>.<di\n-00020e90: 7620 636c 6173 733d 2274 7463 2220 6964  v class=\"ttc\" id\n-00020ea0: 3d22 6161 3031 3334 355f 6874 6d6c 5f61  =\"aa01345_html_a\n-00020eb0: 6635 3432 3933 3764 6136 3035 3033 3432  f542937da6050342\n-00020ec0: 6362 3664 3963 3034 3265 3462 3839 3532  cb6d9c042e4b8952\n-00020ed0: 223e 3c64 6976 2063 6c61 7373 3d22 7474  \"><div class=\"tt\n-00020ee0: 6e61 6d65 223e 3c61 2068 7265 663d 2261  name\"><a href=\"a\n-00020ef0: 3031 3334 352e 6874 6d6c 2361 6635 3432  01345.html#af542\n-00020f00: 3933 3764 6136 3035 3033 3432 6362 3664  937da6050342cb6d\n-00020f10: 3963 3034 3265 3462 3839 3532 223e 4f70  9c042e4b8952\">Op\n-00020f20: 656e 5375 6264 6976 3a3a 4f50 454e 5355  enSubdiv::OPENSU\n-00020f30: 4244 4956 5f56 4552 5349 4f4e 3a3a 5364  BDIV_VERSION::Sd\n-00020f40: 633a 3a53 6368 656d 653a 3a4c 6f63 616c  c::Scheme::Local\n-00020f50: 4d61 736b 3a3a 7e4c 6f63 616c 4d61 736b  Mask::~LocalMask\n-00020f60: 3c2f 613e 3c2f 6469 763e 3c64 6976 2063  </a></div><div c\n-00020f70: 6c61 7373 3d22 7474 6465 6369 223e 7e4c  lass=\"ttdeci\">~L\n-00020f80: 6f63 616c 4d61 736b 2829 3c2f 6469 763e  ocalMask()</div>\n-00020f90: 3c64 6976 2063 6c61 7373 3d22 7474 6465  <div class=\"ttde\n-00020fa0: 6622 3e3c 623e 4465 6669 6e69 7469 6f6e  f\"><b>Definition\n-00020fb0: 3c2f 623e 203c 6120 6872 6566 3d22 6130  </b> <a href=\"a0\n-00020fc0: 3037 3433 5f73 6f75 7263 652e 6874 6d6c  0743_source.html\n-00020fd0: 236c 3030 3231 3622 3e73 6368 656d 652e  #l00216\">scheme.\n-00020fe0: 683a 3231 363c 2f61 3e3c 2f64 6976 3e3c  h:216</a></div><\n-00020ff0: 2f64 6976 3e0a 3c2f 6469 763e 3c21 2d2d  /div>.</div><!--\n-00021000: 2066 7261 676d 656e 7420 2d2d 3e3c 2f64   fragment --></d\n-00021010: 6976 3e3c 212d 2d20 636f 6e74 656e 7473  iv><!-- contents\n-00021020: 202d 2d3e 0a3c 2f64 6976 3e3c 212d 2d20   -->.</div><!-- \n-00021030: 646f 632d 636f 6e74 656e 7420 2d2d 3e0a  doc-content -->.\n-00021040: 3c21 2d2d 2073 7461 7274 2066 6f6f 7465  <!-- start foote\n-00021050: 7220 7061 7274 202d 2d3e 0a3c 6469 7620  r part -->.<div \n-00021060: 6964 3d22 6e61 762d 7061 7468 2220 636c  id=\"nav-path\" cl\n-00021070: 6173 733d 226e 6176 7061 7468 223e 3c21  ass=\"navpath\"><!\n-00021080: 2d2d 2069 6420 6973 206e 6565 6465 6420  -- id is needed \n-00021090: 666f 7220 7472 6565 7669 6577 2066 756e  for treeview fun\n-000210a0: 6374 696f 6e21 202d 2d3e 0a20 203c 756c  ction! -->.  <ul\n-000210b0: 3e0a 2020 2020 3c6c 6920 636c 6173 733d  >.    <li class=\n-000210c0: 226e 6176 656c 656d 223e 3c61 2063 6c61  \"navelem\"><a cla\n-000210d0: 7373 3d22 656c 2220 6872 6566 3d22 6469  ss=\"el\" href=\"di\n-000210e0: 725f 3932 6433 3265 6432 6565 3561 3531  r_92d32ed2ee5a51\n-000210f0: 3839 6332 3437 3732 3763 3833 6534 6230  89c247727c83e4b0\n-00021100: 6661 2e68 746d 6c22 3e6f 7065 6e73 7562  fa.html\">opensub\n-00021110: 6469 763c 2f61 3e3c 2f6c 693e 3c6c 6920  div</a></li><li \n-00021120: 636c 6173 733d 226e 6176 656c 656d 223e  class=\"navelem\">\n-00021130: 3c61 2063 6c61 7373 3d22 656c 2220 6872  <a class=\"el\" hr\n-00021140: 6566 3d22 6469 725f 6636 3133 3638 3934  ef=\"dir_f6136894\n-00021150: 3463 3633 6332 6331 6638 6336 3962 6332  4c63c2c1f8c69bc2\n-00021160: 3332 6535 3963 3339 2e68 746d 6c22 3e73  32e59c39.html\">s\n-00021170: 6463 3c2f 613e 3c2f 6c69 3e3c 6c69 2063  dc</a></li><li c\n-00021180: 6c61 7373 3d22 6e61 7665 6c65 6d22 3e3c  lass=\"navelem\"><\n-00021190: 6120 636c 6173 733d 2265 6c22 2068 7265  a class=\"el\" hre\n-000211a0: 663d 2261 3030 3734 332e 6874 6d6c 223e  f=\"a00743.html\">\n-000211b0: 7363 6865 6d65 2e68 3c2f 613e 3c2f 6c69  scheme.h</a></li\n-000211c0: 3e0a 2020 2020 3c6c 6920 636c 6173 733d  >.    <li class=\n-000211d0: 2266 6f6f 7465 7222 3e47 656e 6572 6174  \"footer\">Generat\n-000211e0: 6564 206f 6e20 5468 7520 4a61 6e20 3220  ed on Thu Jan 2 \n-000211f0: 3230 3235 2030 383a 3437 3a34 3620 666f  2025 08:47:46 fo\n-00021200: 7220 4f70 656e 5375 6264 6976 2062 7920  r OpenSubdiv by \n-00021210: 3c61 2068 7265 663d 2268 7474 7073 3a2f  <a href=\"https:/\n-00021220: 2f77 7777 2e64 6f78 7967 656e 2e6f 7267  /www.doxygen.org\n-00021230: 2f69 6e64 6578 2e68 746d 6c22 3e3c 696d  /index.html\"><im\n-00021240: 6720 636c 6173 733d 2266 6f6f 7465 7222  g class=\"footer\"\n-00021250: 2073 7263 3d22 646f 7879 6765 6e2e 7376   src=\"doxygen.sv\n-00021260: 6722 2077 6964 7468 3d22 3130 3422 2068  g\" width=\"104\" h\n-00021270: 6569 6768 743d 2233 3122 2061 6c74 3d22  eight=\"31\" alt=\"\n-00021280: 646f 7879 6765 6e22 2f3e 3c2f 613e 2031  doxygen\"/></a> 1\n-00021290: 2e39 2e38 203c 2f6c 693e 0a20 203c 2f75  .9.8 </li>.  </u\n-000212a0: 6c3e 0a3c 2f64 6976 3e0a 3c2f 626f 6479  l>.</div>.</body\n-000212b0: 3e0a 3c2f 6874 6d6c 3e0a                 >.</html>.\n+000001c0: 7065 6e73 7562 6469 762f 6f73 642f 6370  pensubdiv/osd/cp\n+000001d0: 7556 6572 7465 7842 7566 6665 722e 6820  uVertexBuffer.h \n+000001e0: 536f 7572 6365 2046 696c 653c 2f74 6974  Source File</tit\n+000001f0: 6c65 3e0a 3c6c 696e 6b20 6872 6566 3d22  le>.<link href=\"\n+00000200: 7461 6273 2e63 7373 2220 7265 6c3d 2273  tabs.css\" rel=\"s\n+00000210: 7479 6c65 7368 6565 7422 2074 7970 653d  tylesheet\" type=\n+00000220: 2274 6578 742f 6373 7322 2f3e 0a3c 7363  \"text/css\"/>.<sc\n+00000230: 7269 7074 2074 7970 653d 2274 6578 742f  ript type=\"text/\n+00000240: 6a61 7661 7363 7269 7074 2220 7372 633d  javascript\" src=\n+00000250: 226a 7175 6572 792e 6a73 223e 3c2f 7363  \"jquery.js\"></sc\n+00000260: 7269 7074 3e0a 3c73 6372 6970 7420 7479  ript>.<script ty\n+00000270: 7065 3d22 7465 7874 2f6a 6176 6173 6372  pe=\"text/javascr\n+00000280: 6970 7422 2073 7263 3d22 6479 6e73 6563  ipt\" src=\"dynsec\n+00000290: 7469 6f6e 732e 6a73 223e 3c2f 7363 7269  tions.js\"></scri\n+000002a0: 7074 3e0a 3c6c 696e 6b20 6872 6566 3d22  pt>.<link href=\"\n+000002b0: 6e61 7674 7265 652e 6373 7322 2072 656c  navtree.css\" rel\n+000002c0: 3d22 7374 796c 6573 6865 6574 2220 7479  =\"stylesheet\" ty\n+000002d0: 7065 3d22 7465 7874 2f63 7373 222f 3e0a  pe=\"text/css\"/>.\n+000002e0: 3c73 6372 6970 7420 7479 7065 3d22 7465  <script type=\"te\n+000002f0: 7874 2f6a 6176 6173 6372 6970 7422 2073  xt/javascript\" s\n+00000300: 7263 3d22 7265 7369 7a65 2e6a 7322 3e3c  rc=\"resize.js\"><\n+00000310: 2f73 6372 6970 743e 0a3c 7363 7269 7074  /script>.<script\n+00000320: 2074 7970 653d 2274 6578 742f 6a61 7661   type=\"text/java\n+00000330: 7363 7269 7074 2220 7372 633d 226e 6176  script\" src=\"nav\n+00000340: 7472 6565 6461 7461 2e6a 7322 3e3c 2f73  treedata.js\"></s\n+00000350: 6372 6970 743e 0a3c 7363 7269 7074 2074  cript>.<script t\n+00000360: 7970 653d 2274 6578 742f 6a61 7661 7363  ype=\"text/javasc\n+00000370: 7269 7074 2220 7372 633d 226e 6176 7472  ript\" src=\"navtr\n+00000380: 6565 2e6a 7322 3e3c 2f73 6372 6970 743e  ee.js\"></script>\n+00000390: 0a3c 6c69 6e6b 2068 7265 663d 2273 6561  .<link href=\"sea\n+000003a0: 7263 682f 7365 6172 6368 2e63 7373 2220  rch/search.css\" \n+000003b0: 7265 6c3d 2273 7479 6c65 7368 6565 7422  rel=\"stylesheet\"\n+000003c0: 2074 7970 653d 2274 6578 742f 6373 7322   type=\"text/css\"\n+000003d0: 2f3e 0a3c 7363 7269 7074 2074 7970 653d  />.<script type=\n+000003e0: 2274 6578 742f 6a61 7661 7363 7269 7074  \"text/javascript\n+000003f0: 2220 7372 633d 2273 6561 7263 682f 7365  \" src=\"search/se\n+00000400: 6172 6368 6461 7461 2e6a 7322 3e3c 2f73  archdata.js\"></s\n+00000410: 6372 6970 743e 0a3c 7363 7269 7074 2074  cript>.<script t\n+00000420: 7970 653d 2274 6578 742f 6a61 7661 7363  ype=\"text/javasc\n+00000430: 7269 7074 2220 7372 633d 2273 6561 7263  ript\" src=\"searc\n+00000440: 682f 7365 6172 6368 2e6a 7322 3e3c 2f73  h/search.js\"></s\n+00000450: 6372 6970 743e 0a3c 6c69 6e6b 2068 7265  cript>.<link hre\n+00000460: 663d 2264 6f78 7967 656e 2e63 7373 2220  f=\"doxygen.css\" \n+00000470: 7265 6c3d 2273 7479 6c65 7368 6565 7422  rel=\"stylesheet\"\n+00000480: 2074 7970 653d 2274 6578 742f 6373 7322   type=\"text/css\"\n+00000490: 202f 3e0a 3c6c 696e 6b20 6872 6566 3d22   />.<link href=\"\n+000004a0: 646f 7879 2e63 7373 2220 7265 6c3d 2273  doxy.css\" rel=\"s\n+000004b0: 7479 6c65 7368 6565 7422 2074 7970 653d  tylesheet\" type=\n+000004c0: 2274 6578 742f 6373 7322 2f3e 0a3c 2f68  \"text/css\"/>.</h\n+000004d0: 6561 643e 0a3c 626f 6479 3e0a 3c64 6976  ead>.<body>.<div\n+000004e0: 2069 643d 2274 6f70 223e 3c21 2d2d 2064   id=\"top\"><!-- d\n+000004f0: 6f20 6e6f 7420 7265 6d6f 7665 2074 6869  o not remove thi\n+00000500: 7320 6469 762c 2069 7420 6973 2063 6c6f  s div, it is clo\n+00000510: 7365 6420 6279 2064 6f78 7967 656e 2120  sed by doxygen! \n+00000520: 2d2d 3e0a 3c64 6976 2069 643d 2274 6974  -->.<div id=\"tit\n+00000530: 6c65 6172 6561 223e 0a3c 7461 626c 6520  learea\">.<table \n+00000540: 6365 6c6c 7370 6163 696e 673d 2230 2220  cellspacing=\"0\" \n+00000550: 6365 6c6c 7061 6464 696e 673d 2230 223e  cellpadding=\"0\">\n+00000560: 0a20 3c74 626f 6479 3e0a 203c 7472 2069  . <tbody>. <tr i\n+00000570: 643d 2270 726f 6a65 6374 726f 7722 3e0a  d=\"projectrow\">.\n+00000580: 2020 3c74 6420 6964 3d22 7072 6f6a 6563    <td id=\"projec\n+00000590: 746c 6f67 6f22 3e3c 696d 6720 616c 743d  tlogo\"><img alt=\n+000005a0: 224c 6f67 6f22 2073 7263 3d22 6f70 656e  \"Logo\" src=\"open\n+000005b0: 7375 6264 6976 5f6c 6f67 6f5f 6865 6164  subdiv_logo_head\n+000005c0: 6572 2e70 6e67 222f 3e3c 2f74 643e 0a20  er.png\"/></td>. \n+000005d0: 203c 7464 2069 643d 2270 726f 6a65 6374   <td id=\"project\n+000005e0: 616c 6967 6e22 3e0a 2020 203c 6469 7620  align\">.   <div \n+000005f0: 6964 3d22 7072 6f6a 6563 746e 616d 6522  id=\"projectname\"\n+00000600: 3e4f 7065 6e53 7562 6469 760a 2020 203c  >OpenSubdiv.   <\n+00000610: 2f64 6976 3e0a 2020 3c2f 7464 3e0a 203c  /div>.  </td>. <\n+00000620: 2f74 723e 0a20 3c2f 7462 6f64 793e 0a3c  /tr>. </tbody>.<\n+00000630: 2f74 6162 6c65 3e0a 3c2f 6469 763e 0a3c  /table>.</div>.<\n+00000640: 212d 2d20 656e 6420 6865 6164 6572 2070  !-- end header p\n+00000650: 6172 7420 2d2d 3e0a 3c21 2d2d 2047 656e  art -->.<!-- Gen\n+00000660: 6572 6174 6564 2062 7920 446f 7879 6765  erated by Doxyge\n+00000670: 6e20 312e 392e 3820 2d2d 3e0a 3c73 6372  n 1.9.8 -->.<scr\n+00000680: 6970 7420 7479 7065 3d22 7465 7874 2f6a  ipt type=\"text/j\n+00000690: 6176 6173 6372 6970 7422 3e0a 2f2a 2040  avascript\">./* @\n+000006a0: 6c69 6365 6e73 6520 6d61 676e 6574 3a3f  license magnet:?\n+000006b0: 7874 3d75 726e 3a62 7469 683a 6433 6439  xt=urn:btih:d3d9\n+000006c0: 6139 6136 3539 3535 3231 6639 3636 3661  a9a6595521f9666a\n+000006d0: 3565 3934 6363 3833 3064 6162 3833 6236  5e94cc830dab83b6\n+000006e0: 3536 3939 2661 6d70 3b64 6e3d 6578 7061  5699&amp;dn=expa\n+000006f0: 742e 7478 7420 4d49 5420 2a2f 0a76 6172  t.txt MIT */.var\n+00000700: 2073 6561 7263 6842 6f78 203d 206e 6577   searchBox = new\n+00000710: 2053 6561 7263 6842 6f78 2822 7365 6172   SearchBox(\"sear\n+00000720: 6368 426f 7822 2c20 2273 6561 7263 682f  chBox\", \"search/\n+00000730: 222c 272e 6874 6d6c 2729 3b0a 2f2a 2040  \",'.html');./* @\n+00000740: 6c69 6365 6e73 652d 656e 6420 2a2f 0a3c  license-end */.<\n+00000750: 2f73 6372 6970 743e 0a3c 7363 7269 7074  /script>.<script\n+00000760: 2074 7970 653d 2274 6578 742f 6a61 7661   type=\"text/java\n+00000770: 7363 7269 7074 2220 7372 633d 226d 656e  script\" src=\"men\n+00000780: 7564 6174 612e 6a73 223e 3c2f 7363 7269  udata.js\"></scri\n+00000790: 7074 3e0a 3c73 6372 6970 7420 7479 7065  pt>.<script type\n+000007a0: 3d22 7465 7874 2f6a 6176 6173 6372 6970  =\"text/javascrip\n+000007b0: 7422 2073 7263 3d22 6d65 6e75 2e6a 7322  t\" src=\"menu.js\"\n+000007c0: 3e3c 2f73 6372 6970 743e 0a3c 7363 7269  ></script>.<scri\n+000007d0: 7074 2074 7970 653d 2274 6578 742f 6a61  pt type=\"text/ja\n+000007e0: 7661 7363 7269 7074 223e 0a2f 2a20 406c  vascript\">./* @l\n+000007f0: 6963 656e 7365 206d 6167 6e65 743a 3f78  icense magnet:?x\n+00000800: 743d 7572 6e3a 6274 6968 3a64 3364 3961  t=urn:btih:d3d9a\n+00000810: 3961 3635 3935 3532 3166 3936 3636 6135  9a6595521f9666a5\n+00000820: 6539 3463 6338 3330 6461 6238 3362 3635  e94cc830dab83b65\n+00000830: 3639 3926 616d 703b 646e 3d65 7870 6174  699&amp;dn=expat\n+00000840: 2e74 7874 204d 4954 202a 2f0a 2428 6675  .txt MIT */.$(fu\n+00000850: 6e63 7469 6f6e 2829 207b 0a20 2069 6e69  nction() {.  ini\n+00000860: 744d 656e 7528 2727 2c74 7275 652c 6661  tMenu('',true,fa\n+00000870: 6c73 652c 2773 6561 7263 682e 7068 7027  lse,'search.php'\n+00000880: 2c27 5365 6172 6368 2729 3b0a 2020 2428  ,'Search');.  $(\n+00000890: 646f 6375 6d65 6e74 292e 7265 6164 7928  document).ready(\n+000008a0: 6675 6e63 7469 6f6e 2829 207b 2069 6e69  function() { ini\n+000008b0: 745f 7365 6172 6368 2829 3b20 7d29 3b0a  t_search(); });.\n+000008c0: 7d29 3b0a 2f2a 2040 6c69 6365 6e73 652d  });./* @license-\n+000008d0: 656e 6420 2a2f 0a3c 2f73 6372 6970 743e  end */.</script>\n+000008e0: 0a3c 6469 7620 6964 3d22 6d61 696e 2d6e  .<div id=\"main-n\n+000008f0: 6176 223e 3c2f 6469 763e 0a3c 7363 7269  av\"></div>.<scri\n+00000900: 7074 2074 7970 653d 2274 6578 742f 6a61  pt type=\"text/ja\n+00000910: 7661 7363 7269 7074 223e 0a2f 2a20 406c  vascript\">./* @l\n+00000920: 6963 656e 7365 206d 6167 6e65 743a 3f78  icense magnet:?x\n+00000930: 743d 7572 6e3a 6274 6968 3a64 3364 3961  t=urn:btih:d3d9a\n+00000940: 3961 3635 3935 3532 3166 3936 3636 6135  9a6595521f9666a5\n+00000950: 6539 3463 6338 3330 6461 6238 3362 3635  e94cc830dab83b65\n+00000960: 3639 3926 616d 703b 646e 3d65 7870 6174  699&amp;dn=expat\n+00000970: 2e74 7874 204d 4954 202a 2f0a 2428 646f  .txt MIT */.$(do\n+00000980: 6375 6d65 6e74 292e 7265 6164 7928 6675  cument).ready(fu\n+00000990: 6e63 7469 6f6e 2829 207b 2069 6e69 745f  nction() { init_\n+000009a0: 636f 6465 666f 6c64 2830 293b 207d 293b  codefold(0); });\n+000009b0: 0a2f 2a20 406c 6963 656e 7365 2d65 6e64  ./* @license-end\n+000009c0: 202a 2f0a 3c2f 7363 7269 7074 3e0a 3c2f   */.</script>.</\n+000009d0: 6469 763e 3c21 2d2d 2074 6f70 202d 2d3e  div><!-- top -->\n+000009e0: 0a3c 6469 7620 6964 3d22 7369 6465 2d6e  .<div id=\"side-n\n+000009f0: 6176 2220 636c 6173 733d 2275 692d 7265  av\" class=\"ui-re\n+00000a00: 7369 7a61 626c 6520 7369 6465 2d6e 6176  sizable side-nav\n+00000a10: 2d72 6573 697a 6162 6c65 223e 0a20 203c  -resizable\">.  <\n+00000a20: 6469 7620 6964 3d22 6e61 762d 7472 6565  div id=\"nav-tree\n+00000a30: 223e 0a20 2020 203c 6469 7620 6964 3d22  \">.    <div id=\"\n+00000a40: 6e61 762d 7472 6565 2d63 6f6e 7465 6e74  nav-tree-content\n+00000a50: 7322 3e0a 2020 2020 2020 3c64 6976 2069  s\">.      <div i\n+00000a60: 643d 226e 6176 2d73 796e 6322 2063 6c61  d=\"nav-sync\" cla\n+00000a70: 7373 3d22 7379 6e63 223e 3c2f 6469 763e  ss=\"sync\"></div>\n+00000a80: 0a20 2020 203c 2f64 6976 3e0a 2020 3c2f  .    </div>.  </\n+00000a90: 6469 763e 0a20 203c 6469 7620 6964 3d22  div>.  <div id=\"\n+00000aa0: 7370 6c69 7462 6172 2220 7374 796c 653d  splitbar\" style=\n+00000ab0: 222d 6d6f 7a2d 7573 6572 2d73 656c 6563  \"-moz-user-selec\n+00000ac0: 743a 6e6f 6e65 3b22 200a 2020 2020 2020  t:none;\" .      \n+00000ad0: 2063 6c61 7373 3d22 7569 2d72 6573 697a   class=\"ui-resiz\n+00000ae0: 6162 6c65 2d68 616e 646c 6522 3e0a 2020  able-handle\">.  \n+00000af0: 3c2f 6469 763e 0a3c 2f64 6976 3e0a 3c73  </div>.</div>.<s\n+00000b00: 6372 6970 7420 7479 7065 3d22 7465 7874  cript type=\"text\n+00000b10: 2f6a 6176 6173 6372 6970 7422 3e0a 2f2a  /javascript\">./*\n+00000b20: 2040 6c69 6365 6e73 6520 6d61 676e 6574   @license magnet\n+00000b30: 3a3f 7874 3d75 726e 3a62 7469 683a 6433  :?xt=urn:btih:d3\n+00000b40: 6439 6139 6136 3539 3535 3231 6639 3636  d9a9a6595521f966\n+00000b50: 3661 3565 3934 6363 3833 3064 6162 3833  6a5e94cc830dab83\n+00000b60: 6236 3536 3939 2661 6d70 3b64 6e3d 6578  b65699&amp;dn=ex\n+00000b70: 7061 742e 7478 7420 4d49 5420 2a2f 0a24  pat.txt MIT */.$\n+00000b80: 2864 6f63 756d 656e 7429 2e72 6561 6479  (document).ready\n+00000b90: 2866 756e 6374 696f 6e28 297b 696e 6974  (function(){init\n+00000ba0: 4e61 7654 7265 6528 2761 3030 3734 335f  NavTree('a00743_\n+00000bb0: 736f 7572 6365 2e68 746d 6c27 2c27 2729  source.html','')\n+00000bc0: 3b20 696e 6974 5265 7369 7a61 626c 6528  ; initResizable(\n+00000bd0: 293b 207d 293b 0a2f 2a20 406c 6963 656e  ); });./* @licen\n+00000be0: 7365 2d65 6e64 202a 2f0a 3c2f 7363 7269  se-end */.</scri\n+00000bf0: 7074 3e0a 3c64 6976 2069 643d 2264 6f63  pt>.<div id=\"doc\n+00000c00: 2d63 6f6e 7465 6e74 223e 0a3c 212d 2d20  -content\">.<!-- \n+00000c10: 7769 6e64 6f77 2073 686f 7769 6e67 2074  window showing t\n+00000c20: 6865 2066 696c 7465 7220 6f70 7469 6f6e  he filter option\n+00000c30: 7320 2d2d 3e0a 3c64 6976 2069 643d 224d  s -->.<div id=\"M\n+00000c40: 5365 6172 6368 5365 6c65 6374 5769 6e64  SearchSelectWind\n+00000c50: 6f77 220a 2020 2020 206f 6e6d 6f75 7365  ow\".     onmouse\n+00000c60: 6f76 6572 3d22 7265 7475 726e 2073 6561  over=\"return sea\n+00000c70: 7263 6842 6f78 2e4f 6e53 6561 7263 6853  rchBox.OnSearchS\n+00000c80: 656c 6563 7453 686f 7728 2922 0a20 2020  electShow()\".   \n+00000c90: 2020 6f6e 6d6f 7573 656f 7574 3d22 7265    onmouseout=\"re\n+00000ca0: 7475 726e 2073 6561 7263 6842 6f78 2e4f  turn searchBox.O\n+00000cb0: 6e53 6561 7263 6853 656c 6563 7448 6964  nSearchSelectHid\n+00000cc0: 6528 2922 0a20 2020 2020 6f6e 6b65 7964  e()\".     onkeyd\n+00000cd0: 6f77 6e3d 2272 6574 7572 6e20 7365 6172  own=\"return sear\n+00000ce0: 6368 426f 782e 4f6e 5365 6172 6368 5365  chBox.OnSearchSe\n+00000cf0: 6c65 6374 4b65 7928 6576 656e 7429 223e  lectKey(event)\">\n+00000d00: 0a3c 2f64 6976 3e0a 0a3c 212d 2d20 6966  .</div>..<!-- if\n+00000d10: 7261 6d65 2073 686f 7769 6e67 2074 6865  rame showing the\n+00000d20: 2073 6561 7263 6820 7265 7375 6c74 7320   search results \n+00000d30: 2863 6c6f 7365 6420 6279 2064 6566 6175  (closed by defau\n+00000d40: 6c74 2920 2d2d 3e0a 3c64 6976 2069 643d  lt) -->.<div id=\n+00000d50: 224d 5365 6172 6368 5265 7375 6c74 7357  \"MSearchResultsW\n+00000d60: 696e 646f 7722 3e0a 3c64 6976 2069 643d  indow\">.<div id=\n+00000d70: 224d 5365 6172 6368 5265 7375 6c74 7322  \"MSearchResults\"\n+00000d80: 3e0a 3c64 6976 2063 6c61 7373 3d22 5352  >.<div class=\"SR\n+00000d90: 5061 6765 223e 0a3c 6469 7620 6964 3d22  Page\">.<div id=\"\n+00000da0: 5352 496e 6465 7822 3e0a 3c64 6976 2069  SRIndex\">.<div i\n+00000db0: 643d 2253 5252 6573 756c 7473 223e 3c2f  d=\"SRResults\"></\n+00000dc0: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n+00000dd0: 2253 5253 7461 7475 7322 2069 643d 224c  \"SRStatus\" id=\"L\n+00000de0: 6f61 6469 6e67 223e 4c6f 6164 696e 672e  oading\">Loading.\n+00000df0: 2e2e 3c2f 6469 763e 0a3c 6469 7620 636c  ..</div>.<div cl\n+00000e00: 6173 733d 2253 5253 7461 7475 7322 2069  ass=\"SRStatus\" i\n+00000e10: 643d 2253 6561 7263 6869 6e67 223e 5365  d=\"Searching\">Se\n+00000e20: 6172 6368 696e 672e 2e2e 3c2f 6469 763e  arching...</div>\n+00000e30: 0a3c 6469 7620 636c 6173 733d 2253 5253  .<div class=\"SRS\n+00000e40: 7461 7475 7322 2069 643d 224e 6f4d 6174  tatus\" id=\"NoMat\n+00000e50: 6368 6573 223e 4e6f 204d 6174 6368 6573  ches\">No Matches\n+00000e60: 3c2f 6469 763e 0a3c 2f64 6976 3e0a 3c2f  </div>.</div>.</\n+00000e70: 6469 763e 0a3c 2f64 6976 3e0a 3c2f 6469  div>.</div>.</di\n+00000e80: 763e 0a0a 3c64 6976 2063 6c61 7373 3d22  v>..<div class=\"\n+00000e90: 6865 6164 6572 223e 0a20 203c 6469 7620  header\">.  <div \n+00000ea0: 636c 6173 733d 2268 6561 6465 7274 6974  class=\"headertit\n+00000eb0: 6c65 223e 3c64 6976 2063 6c61 7373 3d22  le\"><div class=\"\n+00000ec0: 7469 746c 6522 3e63 7075 5665 7274 6578  title\">cpuVertex\n+00000ed0: 4275 6666 6572 2e68 3c2f 6469 763e 3c2f  Buffer.h</div></\n+00000ee0: 6469 763e 0a3c 2f64 6976 3e3c 212d 2d68  div>.</div><!--h\n+00000ef0: 6561 6465 722d 2d3e 0a3c 6469 7620 636c  eader-->.<div cl\n+00000f00: 6173 733d 2263 6f6e 7465 6e74 7322 3e0a  ass=\"contents\">.\n+00000f10: 3c61 2068 7265 663d 2261 3030 3734 332e  <a href=\"a00743.\n+00000f20: 6874 6d6c 223e 476f 2074 6f20 7468 6520  html\">Go to the \n+00000f30: 646f 6375 6d65 6e74 6174 696f 6e20 6f66  documentation of\n+00000f40: 2074 6869 7320 6669 6c65 2e3c 2f61 3e3c   this file.</a><\n+00000f50: 6469 7620 636c 6173 733d 2266 7261 676d  div class=\"fragm\n+00000f60: 656e 7422 3e3c 6469 7620 636c 6173 733d  ent\"><div class=\n+00000f70: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n+00000f80: 3030 3031 2220 6e61 6d65 3d22 6c30 3030  0001\" name=\"l000\n+00000f90: 3031 223e 3c2f 613e 3c73 7061 6e20 636c  01\"></a><span cl\n+00000fa0: 6173 733d 226c 696e 656e 6f22 3e20 2020  ass=\"lineno\">   \n+00000fb0: 2031 3c2f 7370 616e 3e3c 7370 616e 2063   1</span><span c\n+00000fc0: 6c61 7373 3d22 636f 6d6d 656e 7422 3e2f  lass=\"comment\">/\n+00000fd0: 2f3c 2f73 7061 6e3e 3c2f 6469 763e 0a3c  /</span></div>.<\n+00000fe0: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n+00000ff0: 3e3c 6120 6964 3d22 6c30 3030 3032 2220  ><a id=\"l00002\" \n+00001000: 6e61 6d65 3d22 6c30 3030 3032 223e 3c2f  name=\"l00002\"></\n+00001010: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n+00001020: 696e 656e 6f22 3e20 2020 2032 3c2f 7370  ineno\">    2</sp\n+00001030: 616e 3e3c 7370 616e 2063 6c61 7373 3d22  an><span class=\"\n+00001040: 636f 6d6d 656e 7422 3e2f 2f20 2020 436f  comment\">//   Co\n+00001050: 7079 7269 6768 7420 3230 3133 2050 6978  pyright 2013 Pix\n+00001060: 6172 3c2f 7370 616e 3e3c 2f64 6976 3e0a  ar</span></div>.\n+00001070: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n+00001080: 223e 3c61 2069 643d 226c 3030 3030 3322  \"><a id=\"l00003\"\n+00001090: 206e 616d 653d 226c 3030 3030 3322 3e3c   name=\"l00003\"><\n+000010a0: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n+000010b0: 6c69 6e65 6e6f 223e 2020 2020 333c 2f73  lineno\">    3</s\n+000010c0: 7061 6e3e 3c73 7061 6e20 636c 6173 733d  pan><span class=\n+000010d0: 2263 6f6d 6d65 6e74 223e 2f2f 3c2f 7370  \"comment\">//</sp\n+000010e0: 616e 3e3c 2f64 6976 3e0a 3c64 6976 2063  an></div>.<div c\n+000010f0: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n+00001100: 643d 226c 3030 3030 3422 206e 616d 653d  d=\"l00004\" name=\n+00001110: 226c 3030 3030 3422 3e3c 2f61 3e3c 7370  \"l00004\"></a><sp\n+00001120: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n+00001130: 223e 2020 2020 343c 2f73 7061 6e3e 3c73  \">    4</span><s\n+00001140: 7061 6e20 636c 6173 733d 2263 6f6d 6d65  pan class=\"comme\n+00001150: 6e74 223e 2f2f 2020 204c 6963 656e 7365  nt\">//   License\n+00001160: 6420 756e 6465 7220 7468 6520 4170 6163  d under the Apac\n+00001170: 6865 204c 6963 656e 7365 2c20 5665 7273  he License, Vers\n+00001180: 696f 6e20 322e 3020 2874 6865 2026 7175  ion 2.0 (the &qu\n+00001190: 6f74 3b41 7061 6368 6520 4c69 6365 6e73  ot;Apache Licens\n+000011a0: 6526 7175 6f74 3b29 3c2f 7370 616e 3e3c  e&quot;)</span><\n+000011b0: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n+000011c0: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n+000011d0: 3030 3030 3522 206e 616d 653d 226c 3030  00005\" name=\"l00\n+000011e0: 3030 3522 3e3c 2f61 3e3c 7370 616e 2063  005\"></a><span c\n+000011f0: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n+00001200: 2020 353c 2f73 7061 6e3e 3c73 7061 6e20    5</span><span \n+00001210: 636c 6173 733d 2263 6f6d 6d65 6e74 223e  class=\"comment\">\n+00001220: 2f2f 2020 2077 6974 6820 7468 6520 666f  //   with the fo\n+00001230: 6c6c 6f77 696e 6720 6d6f 6469 6669 6361  llowing modifica\n+00001240: 7469 6f6e 3b20 796f 7520 6d61 7920 6e6f  tion; you may no\n+00001250: 7420 7573 6520 7468 6973 2066 696c 6520  t use this file \n+00001260: 6578 6365 7074 2069 6e3c 2f73 7061 6e3e  except in</span>\n+00001270: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n+00001280: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n+00001290: 6c30 3030 3036 2220 6e61 6d65 3d22 6c30  l00006\" name=\"l0\n+000012a0: 3030 3036 223e 3c2f 613e 3c73 7061 6e20  0006\"></a><span \n+000012b0: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n+000012c0: 2020 2036 3c2f 7370 616e 3e3c 7370 616e     6</span><span\n+000012d0: 2063 6c61 7373 3d22 636f 6d6d 656e 7422   class=\"comment\"\n+000012e0: 3e2f 2f20 2020 636f 6d70 6c69 616e 6365  >//   compliance\n+000012f0: 2077 6974 6820 7468 6520 4170 6163 6865   with the Apache\n+00001300: 204c 6963 656e 7365 2061 6e64 2074 6865   License and the\n+00001310: 2066 6f6c 6c6f 7769 6e67 206d 6f64 6966   following modif\n+00001320: 6963 6174 696f 6e20 746f 2069 743a 3c2f  ication to it:</\n+00001330: 7370 616e 3e3c 2f64 6976 3e0a 3c64 6976  span></div>.<div\n+00001340: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n+00001350: 2069 643d 226c 3030 3030 3722 206e 616d   id=\"l00007\" nam\n+00001360: 653d 226c 3030 3030 3722 3e3c 2f61 3e3c  e=\"l00007\"></a><\n+00001370: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n+00001380: 6e6f 223e 2020 2020 373c 2f73 7061 6e3e  no\">    7</span>\n+00001390: 3c73 7061 6e20 636c 6173 733d 2263 6f6d  <span class=\"com\n+000013a0: 6d65 6e74 223e 2f2f 2020 2053 6563 7469  ment\">//   Secti\n+000013b0: 6f6e 2036 2e20 5472 6164 656d 6172 6b73  on 6. Trademarks\n+000013c0: 2e20 6973 2064 656c 6574 6564 2061 6e64  . is deleted and\n+000013d0: 2072 6570 6c61 6365 6420 7769 7468 3a3c   replaced with:<\n+000013e0: 2f73 7061 6e3e 3c2f 6469 763e 0a3c 6469  /span></div>.<di\n+000013f0: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n+00001400: 6120 6964 3d22 6c30 3030 3038 2220 6e61  a id=\"l00008\" na\n+00001410: 6d65 3d22 6c30 3030 3038 223e 3c2f 613e  me=\"l00008\"></a>\n+00001420: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n+00001430: 656e 6f22 3e20 2020 2038 3c2f 7370 616e  eno\">    8</span\n+00001440: 3e3c 7370 616e 2063 6c61 7373 3d22 636f  ><span class=\"co\n+00001450: 6d6d 656e 7422 3e2f 2f3c 2f73 7061 6e3e  mment\">//</span>\n+00001460: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n+00001470: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n+00001480: 6c30 3030 3039 2220 6e61 6d65 3d22 6c30  l00009\" name=\"l0\n+00001490: 3030 3039 223e 3c2f 613e 3c73 7061 6e20  0009\"></a><span \n+000014a0: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n+000014b0: 2020 2039 3c2f 7370 616e 3e3c 7370 616e     9</span><span\n+000014c0: 2063 6c61 7373 3d22 636f 6d6d 656e 7422   class=\"comment\"\n+000014d0: 3e2f 2f20 2020 362e 2054 7261 6465 6d61  >//   6. Tradema\n+000014e0: 726b 732e 2054 6869 7320 4c69 6365 6e73  rks. This Licens\n+000014f0: 6520 646f 6573 206e 6f74 2067 7261 6e74  e does not grant\n+00001500: 2070 6572 6d69 7373 696f 6e20 746f 2075   permission to u\n+00001510: 7365 2074 6865 2074 7261 6465 3c2f 7370  se the trade</sp\n+00001520: 616e 3e3c 2f64 6976 3e0a 3c64 6976 2063  an></div>.<div c\n+00001530: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n+00001540: 643d 226c 3030 3031 3022 206e 616d 653d  d=\"l00010\" name=\n+00001550: 226c 3030 3031 3022 3e3c 2f61 3e3c 7370  \"l00010\"></a><sp\n+00001560: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n+00001570: 223e 2020 2031 303c 2f73 7061 6e3e 3c73  \">   10</span><s\n+00001580: 7061 6e20 636c 6173 733d 2263 6f6d 6d65  pan class=\"comme\n+00001590: 6e74 223e 2f2f 2020 2020 2020 6e61 6d65  nt\">//      name\n+000015a0: 732c 2074 7261 6465 6d61 726b 732c 2073  s, trademarks, s\n+000015b0: 6572 7669 6365 206d 6172 6b73 2c20 6f72  ervice marks, or\n+000015c0: 2070 726f 6475 6374 206e 616d 6573 206f   product names o\n+000015d0: 6620 7468 6520 4c69 6365 6e73 6f72 3c2f  f the Licensor</\n+000015e0: 7370 616e 3e3c 2f64 6976 3e0a 3c64 6976  span></div>.<div\n+000015f0: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n+00001600: 2069 643d 226c 3030 3031 3122 206e 616d   id=\"l00011\" nam\n+00001610: 653d 226c 3030 3031 3122 3e3c 2f61 3e3c  e=\"l00011\"></a><\n+00001620: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n+00001630: 6e6f 223e 2020 2031 313c 2f73 7061 6e3e  no\">   11</span>\n+00001640: 3c73 7061 6e20 636c 6173 733d 2263 6f6d  <span class=\"com\n+00001650: 6d65 6e74 223e 2f2f 2020 2020 2020 616e  ment\">//      an\n+00001660: 6420 6974 7320 6166 6669 6c69 6174 6573  d its affiliates\n+00001670: 2c20 6578 6365 7074 2061 7320 7265 7175  , except as requ\n+00001680: 6972 6564 2074 6f20 636f 6d70 6c79 2077  ired to comply w\n+00001690: 6974 6820 5365 6374 696f 6e20 3428 6329  ith Section 4(c)\n+000016a0: 206f 663c 2f73 7061 6e3e 3c2f 6469 763e   of</span></div>\n+000016b0: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n+000016c0: 6522 3e3c 6120 6964 3d22 6c30 3030 3132  e\"><a id=\"l00012\n+000016d0: 2220 6e61 6d65 3d22 6c30 3030 3132 223e  \" name=\"l00012\">\n+000016e0: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n+000016f0: 226c 696e 656e 6f22 3e20 2020 3132 3c2f  \"lineno\">   12</\n+00001700: 7370 616e 3e3c 7370 616e 2063 6c61 7373  span><span class\n+00001710: 3d22 636f 6d6d 656e 7422 3e2f 2f20 2020  =\"comment\">//   \n+00001720: 2020 2074 6865 204c 6963 656e 7365 2061     the License a\n+00001730: 6e64 2074 6f20 7265 7072 6f64 7563 6520  nd to reproduce \n+00001740: 7468 6520 636f 6e74 656e 7420 6f66 2074  the content of t\n+00001750: 6865 204e 4f54 4943 4520 6669 6c65 2e3c  he NOTICE file.<\n+00001760: 2f73 7061 6e3e 3c2f 6469 763e 0a3c 6469  /span></div>.<di\n+00001770: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n+00001780: 6120 6964 3d22 6c30 3030 3133 2220 6e61  a id=\"l00013\" na\n+00001790: 6d65 3d22 6c30 3030 3133 223e 3c2f 613e  me=\"l00013\"></a>\n+000017a0: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n+000017b0: 656e 6f22 3e20 2020 3133 3c2f 7370 616e  eno\">   13</span\n+000017c0: 3e3c 7370 616e 2063 6c61 7373 3d22 636f  ><span class=\"co\n+000017d0: 6d6d 656e 7422 3e2f 2f3c 2f73 7061 6e3e  mment\">//</span>\n+000017e0: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n+000017f0: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n+00001800: 6c30 3030 3134 2220 6e61 6d65 3d22 6c30  l00014\" name=\"l0\n+00001810: 3030 3134 223e 3c2f 613e 3c73 7061 6e20  0014\"></a><span \n+00001820: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n+00001830: 2020 3134 3c2f 7370 616e 3e3c 7370 616e    14</span><span\n+00001840: 2063 6c61 7373 3d22 636f 6d6d 656e 7422   class=\"comment\"\n+00001850: 3e2f 2f20 2020 596f 7520 6d61 7920 6f62  >//   You may ob\n+00001860: 7461 696e 2061 2063 6f70 7920 6f66 2074  tain a copy of t\n+00001870: 6865 2041 7061 6368 6520 4c69 6365 6e73  he Apache Licens\n+00001880: 6520 6174 3c2f 7370 616e 3e3c 2f64 6976  e at</span></div\n+00001890: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n+000018a0: 6e65 223e 3c61 2069 643d 226c 3030 3031  ne\"><a id=\"l0001\n+000018b0: 3522 206e 616d 653d 226c 3030 3031 3522  5\" name=\"l00015\"\n+000018c0: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n+000018d0: 3d22 6c69 6e65 6e6f 223e 2020 2031 353c  =\"lineno\">   15<\n+000018e0: 2f73 7061 6e3e 3c73 7061 6e20 636c 6173  /span><span clas\n+000018f0: 733d 2263 6f6d 6d65 6e74 223e 2f2f 3c2f  s=\"comment\">//</\n+00001900: 7370 616e 3e3c 2f64 6976 3e0a 3c64 6976  span></div>.<div\n+00001910: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n+00001920: 2069 643d 226c 3030 3031 3622 206e 616d   id=\"l00016\" nam\n+00001930: 653d 226c 3030 3031 3622 3e3c 2f61 3e3c  e=\"l00016\"></a><\n+00001940: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n+00001950: 6e6f 223e 2020 2031 363c 2f73 7061 6e3e  no\">   16</span>\n+00001960: 3c73 7061 6e20 636c 6173 733d 2263 6f6d  <span class=\"com\n+00001970: 6d65 6e74 223e 2f2f 2020 2020 2020 2068  ment\">//       h\n+00001980: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n+00001990: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n+000019a0: 4345 4e53 452d 322e 303c 2f73 7061 6e3e  CENSE-2.0</span>\n+000019b0: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n+000019c0: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n+000019d0: 6c30 3030 3137 2220 6e61 6d65 3d22 6c30  l00017\" name=\"l0\n+000019e0: 3030 3137 223e 3c2f 613e 3c73 7061 6e20  0017\"></a><span \n+000019f0: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n+00001a00: 2020 3137 3c2f 7370 616e 3e3c 7370 616e    17</span><span\n+00001a10: 2063 6c61 7373 3d22 636f 6d6d 656e 7422   class=\"comment\"\n+00001a20: 3e2f 2f3c 2f73 7061 6e3e 3c2f 6469 763e  >//</span></div>\n+00001a30: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n+00001a40: 6522 3e3c 6120 6964 3d22 6c30 3030 3138  e\"><a id=\"l00018\n+00001a50: 2220 6e61 6d65 3d22 6c30 3030 3138 223e  \" name=\"l00018\">\n+00001a60: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n+00001a70: 226c 696e 656e 6f22 3e20 2020 3138 3c2f  \"lineno\">   18</\n+00001a80: 7370 616e 3e3c 7370 616e 2063 6c61 7373  span><span class\n+00001a90: 3d22 636f 6d6d 656e 7422 3e2f 2f20 2020  =\"comment\">//   \n+00001aa0: 556e 6c65 7373 2072 6571 7569 7265 6420  Unless required \n+00001ab0: 6279 2061 7070 6c69 6361 626c 6520 6c61  by applicable la\n+00001ac0: 7720 6f72 2061 6772 6565 6420 746f 2069  w or agreed to i\n+00001ad0: 6e20 7772 6974 696e 672c 2073 6f66 7477  n writing, softw\n+00001ae0: 6172 653c 2f73 7061 6e3e 3c2f 6469 763e  are</span></div>\n+00001af0: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n+00001b00: 6522 3e3c 6120 6964 3d22 6c30 3030 3139  e\"><a id=\"l00019\n+00001b10: 2220 6e61 6d65 3d22 6c30 3030 3139 223e  \" name=\"l00019\">\n+00001b20: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n+00001b30: 226c 696e 656e 6f22 3e20 2020 3139 3c2f  \"lineno\">   19</\n+00001b40: 7370 616e 3e3c 7370 616e 2063 6c61 7373  span><span class\n+00001b50: 3d22 636f 6d6d 656e 7422 3e2f 2f20 2020  =\"comment\">//   \n+00001b60: 6469 7374 7269 6275 7465 6420 756e 6465  distributed unde\n+00001b70: 7220 7468 6520 4170 6163 6865 204c 6963  r the Apache Lic\n+00001b80: 656e 7365 2077 6974 6820 7468 6520 6162  ense with the ab\n+00001b90: 6f76 6520 6d6f 6469 6669 6361 7469 6f6e  ove modification\n+00001ba0: 2069 733c 2f73 7061 6e3e 3c2f 6469 763e   is</span></div>\n+00001bb0: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n+00001bc0: 6522 3e3c 6120 6964 3d22 6c30 3030 3230  e\"><a id=\"l00020\n+00001bd0: 2220 6e61 6d65 3d22 6c30 3030 3230 223e  \" name=\"l00020\">\n+00001be0: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n+00001bf0: 226c 696e 656e 6f22 3e20 2020 3230 3c2f  \"lineno\">   20</\n+00001c00: 7370 616e 3e3c 7370 616e 2063 6c61 7373  span><span class\n+00001c10: 3d22 636f 6d6d 656e 7422 3e2f 2f20 2020  =\"comment\">//   \n+00001c20: 6469 7374 7269 6275 7465 6420 6f6e 2061  distributed on a\n+00001c30: 6e20 2671 756f 743b 4153 2049 5326 7175  n &quot;AS IS&qu\n+00001c40: 6f74 3b20 4241 5349 532c 2057 4954 484f  ot; BASIS, WITHO\n+00001c50: 5554 2057 4152 5241 4e54 4945 5320 4f52  UT WARRANTIES OR\n+00001c60: 2043 4f4e 4449 5449 4f4e 5320 4f46 2041   CONDITIONS OF A\n+00001c70: 4e59 3c2f 7370 616e 3e3c 2f64 6976 3e0a  NY</span></div>.\n+00001c80: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n+00001c90: 223e 3c61 2069 643d 226c 3030 3032 3122  \"><a id=\"l00021\"\n+00001ca0: 206e 616d 653d 226c 3030 3032 3122 3e3c   name=\"l00021\"><\n+00001cb0: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n+00001cc0: 6c69 6e65 6e6f 223e 2020 2032 313c 2f73  lineno\">   21</s\n+00001cd0: 7061 6e3e 3c73 7061 6e20 636c 6173 733d  pan><span class=\n+00001ce0: 2263 6f6d 6d65 6e74 223e 2f2f 2020 204b  \"comment\">//   K\n+00001cf0: 494e 442c 2065 6974 6865 7220 6578 7072  IND, either expr\n+00001d00: 6573 7320 6f72 2069 6d70 6c69 6564 2e20  ess or implied. \n+00001d10: 5365 6520 7468 6520 4170 6163 6865 204c  See the Apache L\n+00001d20: 6963 656e 7365 2066 6f72 2074 6865 2073  icense for the s\n+00001d30: 7065 6369 6669 633c 2f73 7061 6e3e 3c2f  pecific</span></\n+00001d40: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n+00001d50: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n+00001d60: 3030 3232 2220 6e61 6d65 3d22 6c30 3030  0022\" name=\"l000\n+00001d70: 3232 223e 3c2f 613e 3c73 7061 6e20 636c  22\"></a><span cl\n+00001d80: 6173 733d 226c 696e 656e 6f22 3e20 2020  ass=\"lineno\">   \n+00001d90: 3232 3c2f 7370 616e 3e3c 7370 616e 2063  22</span><span c\n+00001da0: 6c61 7373 3d22 636f 6d6d 656e 7422 3e2f  lass=\"comment\">/\n+00001db0: 2f20 2020 6c61 6e67 7561 6765 2067 6f76  /   language gov\n+00001dc0: 6572 6e69 6e67 2070 6572 6d69 7373 696f  erning permissio\n+00001dd0: 6e73 2061 6e64 206c 696d 6974 6174 696f  ns and limitatio\n+00001de0: 6e73 2075 6e64 6572 2074 6865 2041 7061  ns under the Apa\n+00001df0: 6368 6520 4c69 6365 6e73 652e 3c2f 7370  che License.</sp\n+00001e00: 616e 3e3c 2f64 6976 3e0a 3c64 6976 2063  an></div>.<div c\n+00001e10: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n+00001e20: 643d 226c 3030 3032 3322 206e 616d 653d  d=\"l00023\" name=\n+00001e30: 226c 3030 3032 3322 3e3c 2f61 3e3c 7370  \"l00023\"></a><sp\n+00001e40: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n+00001e50: 223e 2020 2032 333c 2f73 7061 6e3e 3c73  \">   23</span><s\n+00001e60: 7061 6e20 636c 6173 733d 2263 6f6d 6d65  pan class=\"comme\n+00001e70: 6e74 223e 2f2f 3c2f 7370 616e 3e3c 2f64  nt\">//</span></d\n+00001e80: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n+00001e90: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n+00001ea0: 3032 3422 206e 616d 653d 226c 3030 3032  024\" name=\"l0002\n+00001eb0: 3422 3e3c 2f61 3e3c 7370 616e 2063 6c61  4\"></a><span cla\n+00001ec0: 7373 3d22 6c69 6e65 6e6f 223e 2020 2032  ss=\"lineno\">   2\n+00001ed0: 343c 2f73 7061 6e3e 203c 2f64 6976 3e0a  4</span> </div>.\n+00001ee0: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n+00001ef0: 223e 3c61 2069 643d 226c 3030 3032 3522  \"><a id=\"l00025\"\n+00001f00: 206e 616d 653d 226c 3030 3032 3522 3e3c   name=\"l00025\"><\n+00001f10: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n+00001f20: 6c69 6e65 6e6f 223e 2020 2032 353c 2f73  lineno\">   25</s\n+00001f30: 7061 6e3e 3c73 7061 6e20 636c 6173 733d  pan><span class=\n+00001f40: 2270 7265 7072 6f63 6573 736f 7222 3e23  \"preprocessor\">#\n+00001f50: 6966 6e64 6566 204f 5045 4e53 5542 4449  ifndef OPENSUBDI\n+00001f60: 5633 5f4f 5344 5f43 5055 5f56 4552 5445  V3_OSD_CPU_VERTE\n+00001f70: 585f 4255 4646 4552 5f48 3c2f 7370 616e  X_BUFFER_H</span\n+00001f80: 3e3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ></div>.<div cla\n+00001f90: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n+00001fa0: 226c 3030 3032 3622 206e 616d 653d 226c  \"l00026\" name=\"l\n+00001fb0: 3030 3032 3622 3e3c 2f61 3e3c 7370 616e  00026\"></a><span\n+00001fc0: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n+00001fd0: 2020 2032 363c 2f73 7061 6e3e 3c73 7061     26</span><spa\n+00001fe0: 6e20 636c 6173 733d 2270 7265 7072 6f63  n class=\"preproc\n+00001ff0: 6573 736f 7222 3e23 6465 6669 6e65 204f  essor\">#define O\n+00002000: 5045 4e53 5542 4449 5633 5f4f 5344 5f43  PENSUBDIV3_OSD_C\n+00002010: 5055 5f56 4552 5445 585f 4255 4646 4552  PU_VERTEX_BUFFER\n+00002020: 5f48 3c2f 7370 616e 3e3c 2f64 6976 3e0a  _H</span></div>.\n+00002030: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n+00002040: 223e 3c61 2069 643d 226c 3030 3032 3722  \"><a id=\"l00027\"\n+00002050: 206e 616d 653d 226c 3030 3032 3722 3e3c   name=\"l00027\"><\n+00002060: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n+00002070: 6c69 6e65 6e6f 223e 2020 2032 373c 2f73  lineno\">   27</s\n+00002080: 7061 6e3e 203c 2f64 6976 3e0a 3c64 6976  pan> </div>.<div\n+00002090: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n+000020a0: 2069 643d 226c 3030 3032 3822 206e 616d   id=\"l00028\" nam\n+000020b0: 653d 226c 3030 3032 3822 3e3c 2f61 3e3c  e=\"l00028\"></a><\n+000020c0: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n+000020d0: 6e6f 223e 2020 2032 383c 2f73 7061 6e3e  no\">   28</span>\n+000020e0: 3c73 7061 6e20 636c 6173 733d 2270 7265  <span class=\"pre\n+000020f0: 7072 6f63 6573 736f 7222 3e23 696e 636c  processor\">#incl\n+00002100: 7564 6520 2671 756f 743b 2e2e 2f76 6572  ude &quot;../ver\n+00002110: 7369 6f6e 2e68 2671 756f 743b 3c2f 7370  sion.h&quot;</sp\n+00002120: 616e 3e3c 2f64 6976 3e0a 3c64 6976 2063  an></div>.<div c\n+00002130: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n+00002140: 643d 226c 3030 3032 3922 206e 616d 653d  d=\"l00029\" name=\n+00002150: 226c 3030 3032 3922 3e3c 2f61 3e3c 7370  \"l00029\"></a><sp\n+00002160: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n+00002170: 223e 2020 2032 393c 2f73 7061 6e3e 203c  \">   29</span> <\n+00002180: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n+00002190: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n+000021a0: 3030 3033 3022 206e 616d 653d 226c 3030  00030\" name=\"l00\n+000021b0: 3033 3022 3e3c 2f61 3e3c 7370 616e 2063  030\"></a><span c\n+000021c0: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n+000021d0: 2033 303c 2f73 7061 6e3e 3c73 7061 6e20   30</span><span \n+000021e0: 636c 6173 733d 2270 7265 7072 6f63 6573  class=\"preproces\n+000021f0: 736f 7222 3e23 696e 636c 7564 6520 266c  sor\">#include &l\n+00002200: 743b 6373 7464 6465 6626 6774 3b3c 2f73  t;cstddef&gt;</s\n+00002210: 7061 6e3e 3c2f 6469 763e 0a3c 6469 7620  pan></div>.<div \n+00002220: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n+00002230: 6964 3d22 6c30 3030 3331 2220 6e61 6d65  id=\"l00031\" name\n+00002240: 3d22 6c30 3030 3331 223e 3c2f 613e 3c73  =\"l00031\"></a><s\n+00002250: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n+00002260: 6f22 3e20 2020 3331 3c2f 7370 616e 3e20  o\">   31</span> \n+00002270: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n+00002280: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n+00002290: 6c30 3030 3332 2220 6e61 6d65 3d22 6c30  l00032\" name=\"l0\n+000022a0: 3030 3332 223e 3c2f 613e 3c73 7061 6e20  0032\"></a><span \n+000022b0: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n+000022c0: 2020 3332 3c2f 7370 616e 3e3c 7370 616e    32</span><span\n+000022d0: 2063 6c61 7373 3d22 6b65 7977 6f72 6422   class=\"keyword\"\n+000022e0: 3e6e 616d 6573 7061 6365 203c 2f73 7061  >namespace </spa\n+000022f0: 6e3e 3c61 2063 6c61 7373 3d22 636f 6465  n><a class=\"code\n+00002300: 2068 6c5f 6e61 6d65 7370 6163 6522 2068   hl_namespace\" h\n+00002310: 7265 663d 2261 3030 3930 352e 6874 6d6c  ref=\"a00905.html\n+00002320: 223e 4f70 656e 5375 6264 6976 3c2f 613e  \">OpenSubdiv</a>\n+00002330: 207b 3c2f 6469 763e 0a3c 6469 7620 636c   {</div>.<div cl\n+00002340: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n+00002350: 3d22 6c30 3030 3333 2220 6e61 6d65 3d22  =\"l00033\" name=\"\n+00002360: 6c30 3030 3333 223e 3c2f 613e 3c73 7061  l00033\"></a><spa\n+00002370: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n+00002380: 3e20 2020 3333 3c2f 7370 616e 3e3c 7370  >   33</span><sp\n+00002390: 616e 2063 6c61 7373 3d22 6b65 7977 6f72  an class=\"keywor\n+000023a0: 6422 3e6e 616d 6573 7061 6365 203c 2f73  d\">namespace </s\n+000023b0: 7061 6e3e 4f50 454e 5355 4244 4956 5f56  pan>OPENSUBDIV_V\n+000023c0: 4552 5349 4f4e 207b 3c2f 6469 763e 0a3c  ERSION {</div>.<\n+000023d0: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n+000023e0: 3e3c 6120 6964 3d22 6c30 3030 3334 2220  ><a id=\"l00034\" \n+000023f0: 6e61 6d65 3d22 6c30 3030 3334 223e 3c2f  name=\"l00034\"></\n+00002400: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n+00002410: 696e 656e 6f22 3e20 2020 3334 3c2f 7370  ineno\">   34</sp\n+00002420: 616e 3e20 3c2f 6469 763e 0a3c 6469 7620  an> </div>.<div \n+00002430: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n+00002440: 6964 3d22 6c30 3030 3335 2220 6e61 6d65  id=\"l00035\" name\n+00002450: 3d22 6c30 3030 3335 223e 3c2f 613e 3c73  =\"l00035\"></a><s\n+00002460: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n+00002470: 6f22 3e20 2020 3335 3c2f 7370 616e 3e3c  o\">   35</span><\n+00002480: 7370 616e 2063 6c61 7373 3d22 6b65 7977  span class=\"keyw\n+00002490: 6f72 6422 3e6e 616d 6573 7061 6365 203c  ord\">namespace <\n+000024a0: 2f73 7061 6e3e 4f73 6420 7b3c 2f64 6976  /span>Osd {</div\n+000024b0: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n+000024c0: 6e65 223e 3c61 2069 643d 226c 3030 3033  ne\"><a id=\"l0003\n+000024d0: 3622 206e 616d 653d 226c 3030 3033 3622  6\" name=\"l00036\"\n+000024e0: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n+000024f0: 3d22 6c69 6e65 6e6f 223e 2020 2033 363c  =\"lineno\">   36<\n+00002500: 2f73 7061 6e3e 203c 2f64 6976 3e0a 3c64  /span> </div>.<d\n+00002510: 6976 2063 6c61 7373 3d22 666f 6c64 6f70  iv class=\"foldop\n+00002520: 656e 2220 6964 3d22 666f 6c64 6f70 656e  en\" id=\"foldopen\n+00002530: 3030 3034 3222 2064 6174 612d 7374 6172  00042\" data-star\n+00002540: 743d 227b 2220 6461 7461 2d65 6e64 3d22  t=\"{\" data-end=\"\n+00002550: 7d3b 223e 0a3c 6469 7620 636c 6173 733d  };\">.<div class=\n+00002560: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n+00002570: 3030 3432 2220 6e61 6d65 3d22 6c30 3030  0042\" name=\"l000\n+00002580: 3432 223e 3c2f 613e 3c73 7061 6e20 636c  42\"></a><span cl\n+00002590: 6173 733d 226c 696e 656e 6f22 3e3c 6120  ass=\"lineno\"><a \n+000025a0: 636c 6173 733d 226c 696e 6522 2068 7265  class=\"line\" hre\n+000025b0: 663d 2261 3031 3137 372e 6874 6d6c 223e  f=\"a01177.html\">\n+000025c0: 2020 2034 323c 2f61 3e3c 2f73 7061 6e3e     42</a></span>\n+000025d0: 3c73 7061 6e20 636c 6173 733d 226b 6579  <span class=\"key\n+000025e0: 776f 7264 223e 636c 6173 7320 3c2f 7370  word\">class </sp\n+000025f0: 616e 3e3c 6120 636c 6173 733d 2263 6f64  an><a class=\"cod\n+00002600: 6520 686c 5f63 6c61 7373 2220 6872 6566  e hl_class\" href\n+00002610: 3d22 6130 3131 3737 2e68 746d 6c22 3e43  =\"a01177.html\">C\n+00002620: 7075 5665 7274 6578 4275 6666 6572 3c2f  puVertexBuffer</\n+00002630: 613e 207b 3c2f 6469 763e 0a3c 6469 7620  a> {</div>.<div \n+00002640: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n+00002650: 6964 3d22 6c30 3030 3433 2220 6e61 6d65  id=\"l00043\" name\n+00002660: 3d22 6c30 3030 3433 223e 3c2f 613e 3c73  =\"l00043\"></a><s\n+00002670: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n+00002680: 6f22 3e20 2020 3433 3c2f 7370 616e 3e3c  o\">   43</span><\n+00002690: 7370 616e 2063 6c61 7373 3d22 6b65 7977  span class=\"keyw\n+000026a0: 6f72 6422 3e70 7562 6c69 633c 2f73 7061  ord\">public</spa\n+000026b0: 6e3e 3a3c 2f64 6976 3e0a 3c64 6976 2063  n>:</div>.<div c\n+000026c0: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n+000026d0: 643d 226c 3030 3034 3522 206e 616d 653d  d=\"l00045\" name=\n+000026e0: 226c 3030 3034 3522 3e3c 2f61 3e3c 7370  \"l00045\"></a><sp\n+000026f0: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n+00002700: 223e 3c61 2063 6c61 7373 3d22 6c69 6e65  \"><a class=\"line\n+00002710: 2220 6872 6566 3d22 6130 3131 3737 2e68  \" href=\"a01177.h\n+00002720: 746d 6c23 6138 6239 3364 3530 3033 6536  tml#a8b93d5003e6\n+00002730: 3464 3531 6339 6264 3765 3438 3763 6431  4d51c9bd7e487cd1\n+00002740: 3563 3130 3122 3e20 2020 3435 3c2f 613e  5c101\">   45</a>\n+00002750: 3c2f 7370 616e 3e20 2020 203c 7370 616e  </span>    <span\n+00002760: 2063 6c61 7373 3d22 6b65 7977 6f72 6422   class=\"keyword\"\n+00002770: 3e73 7461 7469 633c 2f73 7061 6e3e 203c  >static</span> <\n+00002780: 6120 636c 6173 733d 2263 6f64 6520 686c  a class=\"code hl\n+00002790: 5f63 6c61 7373 2220 6872 6566 3d22 6130  _class\" href=\"a0\n+000027a0: 3131 3737 2e68 746d 6c22 3e43 7075 5665  1177.html\">CpuVe\n+000027b0: 7274 6578 4275 6666 6572 3c2f 613e 202a  rtexBuffer</a> *\n+000027c0: 203c 6120 636c 6173 733d 2263 6f64 6520   <a class=\"code \n+000027d0: 686c 5f66 756e 6374 696f 6e22 2068 7265  hl_function\" hre\n+000027e0: 663d 2261 3031 3137 372e 6874 6d6c 2361  f=\"a01177.html#a\n+000027f0: 3862 3933 6435 3030 3365 3634 6435 3163  8b93d5003e64d51c\n+00002800: 3962 6437 6534 3837 6364 3135 6331 3031  9bd7e487cd15c101\n+00002810: 223e 4372 6561 7465 3c2f 613e 283c 7370  \">Create</a>(<sp\n+00002820: 616e 2063 6c61 7373 3d22 6b65 7977 6f72  an class=\"keywor\n+00002830: 6474 7970 6522 3e69 6e74 3c2f 7370 616e  dtype\">int</span\n+00002840: 3e20 6e75 6d45 6c65 6d65 6e74 732c 203c  > numElements, <\n+00002850: 7370 616e 2063 6c61 7373 3d22 6b65 7977  span class=\"keyw\n+00002860: 6f72 6474 7970 6522 3e69 6e74 3c2f 7370  ordtype\">int</sp\n+00002870: 616e 3e20 6e75 6d56 6572 7469 6365 732c  an> numVertices,\n+00002880: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n+00002890: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n+000028a0: 6c30 3030 3436 2220 6e61 6d65 3d22 6c30  l00046\" name=\"l0\n+000028b0: 3030 3436 223e 3c2f 613e 3c73 7061 6e20  0046\"></a><span \n+000028c0: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n+000028d0: 2020 3436 3c2f 7370 616e 3e20 2020 2020    46</span>     \n+000028e0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000028f0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+00002900: 7370 616e 2063 6c61 7373 3d22 6b65 7977  span class=\"keyw\n+00002910: 6f72 6474 7970 6522 3e76 6f69 643c 2f73  ordtype\">void</s\n+00002920: 7061 6e3e 202a 6465 7669 6365 436f 6e74  pan> *deviceCont\n+00002930: 6578 7420 3d20 4e55 4c4c 293b 3c2f 6469  ext = NULL);</di\n+00002940: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n+00002950: 696e 6522 3e3c 6120 6964 3d22 6c30 3030  ine\"><a id=\"l000\n+00002960: 3437 2220 6e61 6d65 3d22 6c30 3030 3437  47\" name=\"l00047\n+00002970: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n+00002980: 733d 226c 696e 656e 6f22 3e20 2020 3437  s=\"lineno\">   47\n+00002990: 3c2f 7370 616e 3e20 3c2f 6469 763e 0a3c  </span> </div>.<\n+000029a0: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n+000029b0: 3e3c 6120 6964 3d22 6c30 3030 3439 2220  ><a id=\"l00049\" \n+000029c0: 6e61 6d65 3d22 6c30 3030 3439 223e 3c2f  name=\"l00049\"></\n+000029d0: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n+000029e0: 696e 656e 6f22 3e3c 6120 636c 6173 733d  ineno\"><a class=\n+000029f0: 226c 696e 6522 2068 7265 663d 2261 3031  \"line\" href=\"a01\n+00002a00: 3137 372e 6874 6d6c 2361 6430 3933 3235  177.html#ad09325\n+00002a10: 3139 6561 6636 3737 6334 3261 3863 6366  19eaf677c42a8ccf\n+00002a20: 6539 6137 3861 3236 3938 223e 2020 2034  e9a78a2698\">   4\n+00002a30: 393c 2f61 3e3c 2f73 7061 6e3e 2020 2020  9</a></span>    \n+00002a40: 3c61 2063 6c61 7373 3d22 636f 6465 2068  <a class=\"code h\n+00002a50: 6c5f 6675 6e63 7469 6f6e 2220 6872 6566  l_function\" href\n+00002a60: 3d22 6130 3131 3737 2e68 746d 6c23 6164  =\"a01177.html#ad\n+00002a70: 3039 3332 3531 3965 6166 3637 3763 3432  0932519eaf677c42\n+00002a80: 6138 6363 6665 3961 3738 6132 3639 3822  a8ccfe9a78a2698\"\n+00002a90: 3e7e 4370 7556 6572 7465 7842 7566 6665  >~CpuVertexBuffe\n+00002aa0: 723c 2f61 3e28 293b 3c2f 6469 763e 0a3c  r</a>();</div>.<\n+00002ab0: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n+00002ac0: 3e3c 6120 6964 3d22 6c30 3030 3530 2220  ><a id=\"l00050\" \n+00002ad0: 6e61 6d65 3d22 6c30 3030 3530 223e 3c2f  name=\"l00050\"></\n+00002ae0: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n+00002af0: 696e 656e 6f22 3e20 2020 3530 3c2f 7370  ineno\">   50</sp\n+00002b00: 616e 3e20 3c2f 6469 763e 0a3c 6469 7620  an> </div>.<div \n+00002b10: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n+00002b20: 6964 3d22 6c30 3030 3533 2220 6e61 6d65  id=\"l00053\" name\n+00002b30: 3d22 6c30 3030 3533 223e 3c2f 613e 3c73  =\"l00053\"></a><s\n+00002b40: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n+00002b50: 6f22 3e3c 6120 636c 6173 733d 226c 696e  o\"><a class=\"lin\n+00002b60: 6522 2068 7265 663d 2261 3031 3137 372e  e\" href=\"a01177.\n+00002b70: 6874 6d6c 2361 3936 3630 3161 3039 3166  html#a96601a091f\n+00002b80: 3838 3331 3832 3363 3464 6437 3262 3663  8831823c4dd72b6c\n+00002b90: 3936 3266 3162 223e 2020 2035 333c 2f61  962f1b\">   53</a\n+00002ba0: 3e3c 2f73 7061 6e3e 2020 2020 3c73 7061  ></span>    <spa\n+00002bb0: 6e20 636c 6173 733d 226b 6579 776f 7264  n class=\"keyword\n+00002bc0: 7479 7065 223e 766f 6964 3c2f 7370 616e  type\">void</span\n+00002bd0: 3e20 3c61 2063 6c61 7373 3d22 636f 6465  > <a class=\"code\n+00002be0: 2068 6c5f 6675 6e63 7469 6f6e 2220 6872   hl_function\" hr\n+00002bf0: 6566 3d22 6130 3131 3737 2e68 746d 6c23  ef=\"a01177.html#\n+00002c00: 6139 3636 3031 6130 3931 6638 3833 3138  a96601a091f88318\n+00002c10: 3233 6334 6464 3732 6236 6339 3632 6631  23c4dd72b6c962f1\n+00002c20: 6222 3e55 7064 6174 6544 6174 613c 2f61  b\">UpdateData</a\n+00002c30: 3e28 3c73 7061 6e20 636c 6173 733d 226b  >(<span class=\"k\n+00002c40: 6579 776f 7264 223e 636f 6e73 743c 2f73  eyword\">const</s\n+00002c50: 7061 6e3e 203c 7370 616e 2063 6c61 7373  pan> <span class\n+00002c60: 3d22 6b65 7977 6f72 6474 7970 6522 3e66  =\"keywordtype\">f\n+00002c70: 6c6f 6174 3c2f 7370 616e 3e20 2a73 7263  loat</span> *src\n+00002c80: 2c20 3c73 7061 6e20 636c 6173 733d 226b  , <span class=\"k\n+00002c90: 6579 776f 7264 7479 7065 223e 696e 743c  eywordtype\">int<\n+00002ca0: 2f73 7061 6e3e 2073 7461 7274 5665 7274  /span> startVert\n+00002cb0: 6578 2c20 3c73 7061 6e20 636c 6173 733d  ex, <span class=\n+00002cc0: 226b 6579 776f 7264 7479 7065 223e 696e  \"keywordtype\">in\n+00002cd0: 743c 2f73 7061 6e3e 206e 756d 5665 7274  t</span> numVert\n+00002ce0: 6963 6573 2c3c 2f64 6976 3e0a 3c64 6976  ices,</div>.<div\n+00002cf0: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n+00002d00: 2069 643d 226c 3030 3035 3422 206e 616d   id=\"l00054\" nam\n+00002d10: 653d 226c 3030 3035 3422 3e3c 2f61 3e3c  e=\"l00054\"></a><\n+00002d20: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n+00002d30: 6e6f 223e 2020 2035 343c 2f73 7061 6e3e  no\">   54</span>\n+00002d40: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00002d50: 2020 2020 3c73 7061 6e20 636c 6173 733d      <span class=\n+00002d60: 226b 6579 776f 7264 7479 7065 223e 766f  \"keywordtype\">vo\n+00002d70: 6964 3c2f 7370 616e 3e20 2a64 6576 6963  id</span> *devic\n+00002d80: 6543 6f6e 7465 7874 203d 204e 554c 4c29  eContext = NULL)\n+00002d90: 3b3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ;</div>.<div cla\n+00002da0: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n+00002db0: 226c 3030 3035 3522 206e 616d 653d 226c  \"l00055\" name=\"l\n+00002dc0: 3030 3035 3522 3e3c 2f61 3e3c 7370 616e  00055\"></a><span\n+00002dd0: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n+00002de0: 2020 2035 353c 2f73 7061 6e3e 203c 2f64     55</span> </d\n+00002df0: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n+00002e00: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n+00002e10: 3035 3722 206e 616d 653d 226c 3030 3035  057\" name=\"l0005\n+00002e20: 3722 3e3c 2f61 3e3c 7370 616e 2063 6c61  7\"></a><span cla\n+00002e30: 7373 3d22 6c69 6e65 6e6f 223e 3c61 2063  ss=\"lineno\"><a c\n+00002e40: 6c61 7373 3d22 6c69 6e65 2220 6872 6566  lass=\"line\" href\n+00002e50: 3d22 6130 3131 3737 2e68 746d 6c23 6137  =\"a01177.html#a7\n+00002e60: 3763 6565 3430 3736 3766 6434 3933 3666  7cee40767fd4936f\n+00002e70: 3230 6138 6639 6439 6439 6561 3632 3522  20a8f9d9d9ea625\"\n+00002e80: 3e20 2020 3537 3c2f 613e 3c2f 7370 616e  >   57</a></span\n+00002e90: 3e20 2020 203c 7370 616e 2063 6c61 7373  >    <span class\n+00002ea0: 3d22 6b65 7977 6f72 6474 7970 6522 3e69  =\"keywordtype\">i\n+00002eb0: 6e74 3c2f 7370 616e 3e20 3c61 2063 6c61  nt</span> <a cla\n+00002ec0: 7373 3d22 636f 6465 2068 6c5f 6675 6e63  ss=\"code hl_func\n+00002ed0: 7469 6f6e 2220 6872 6566 3d22 6130 3131  tion\" href=\"a011\n+00002ee0: 3737 2e68 746d 6c23 6137 3763 6565 3430  77.html#a77cee40\n+00002ef0: 3736 3766 6434 3933 3666 3230 6138 6639  767fd4936f20a8f9\n+00002f00: 6439 6439 6561 3632 3522 3e47 6574 4e75  d9d9ea625\">GetNu\n+00002f10: 6d45 6c65 6d65 6e74 733c 2f61 3e28 2920  mElements</a>() \n+00002f20: 3c73 7061 6e20 636c 6173 733d 226b 6579  <span class=\"key\n+00002f30: 776f 7264 223e 636f 6e73 743c 2f73 7061  word\">const</spa\n+00002f40: 6e3e 3b3c 2f64 6976 3e0a 3c64 6976 2063  n>;</div>.<div c\n+00002f50: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n+00002f60: 643d 226c 3030 3035 3822 206e 616d 653d  d=\"l00058\" name=\n+00002f70: 226c 3030 3035 3822 3e3c 2f61 3e3c 7370  \"l00058\"></a><sp\n+00002f80: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n+00002f90: 223e 2020 2035 383c 2f73 7061 6e3e 203c  \">   58</span> <\n+00002fa0: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n+00002fb0: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n+00002fc0: 3030 3036 3022 206e 616d 653d 226c 3030  00060\" name=\"l00\n+00002fd0: 3036 3022 3e3c 2f61 3e3c 7370 616e 2063  060\"></a><span c\n+00002fe0: 6c61 7373 3d22 6c69 6e65 6e6f 223e 3c61  lass=\"lineno\"><a\n+00002ff0: 2063 6c61 7373 3d22 6c69 6e65 2220 6872   class=\"line\" hr\n+00003000: 6566 3d22 6130 3131 3737 2e68 746d 6c23  ef=\"a01177.html#\n+00003010: 6161 6634 6133 3262 3861 3431 3465 6666  aaf4a32b8a414eff\n+00003020: 3737 3030 3063 3538 3463 3230 3135 6362  77000c584c2015cb\n+00003030: 3722 3e20 2020 3630 3c2f 613e 3c2f 7370  7\">   60</a></sp\n+00003040: 616e 3e20 2020 203c 7370 616e 2063 6c61  an>    <span cla\n+00003050: 7373 3d22 6b65 7977 6f72 6474 7970 6522  ss=\"keywordtype\"\n+00003060: 3e69 6e74 3c2f 7370 616e 3e20 3c61 2063  >int</span> <a c\n+00003070: 6c61 7373 3d22 636f 6465 2068 6c5f 6675  lass=\"code hl_fu\n+00003080: 6e63 7469 6f6e 2220 6872 6566 3d22 6130  nction\" href=\"a0\n+00003090: 3131 3737 2e68 746d 6c23 6161 6634 6133  1177.html#aaf4a3\n+000030a0: 3262 3861 3431 3465 6666 3737 3030 3063  2b8a414eff77000c\n+000030b0: 3538 3463 3230 3135 6362 3722 3e47 6574  584c2015cb7\">Get\n+000030c0: 4e75 6d56 6572 7469 6365 733c 2f61 3e28  NumVertices</a>(\n+000030d0: 2920 3c73 7061 6e20 636c 6173 733d 226b  ) <span class=\"k\n+000030e0: 6579 776f 7264 223e 636f 6e73 743c 2f73  eyword\">const</s\n+000030f0: 7061 6e3e 3b3c 2f64 6976 3e0a 3c64 6976  pan>;</div>.<div\n+00003100: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n+00003110: 2069 643d 226c 3030 3036 3122 206e 616d   id=\"l00061\" nam\n+00003120: 653d 226c 3030 3036 3122 3e3c 2f61 3e3c  e=\"l00061\"></a><\n+00003130: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n+00003140: 6e6f 223e 2020 2036 313c 2f73 7061 6e3e  no\">   61</span>\n+00003150: 203c 2f64 6976 3e0a 3c64 6976 2063 6c61   </div>.<div cla\n+00003160: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n+00003170: 226c 3030 3036 3322 206e 616d 653d 226c  \"l00063\" name=\"l\n+00003180: 3030 3036 3322 3e3c 2f61 3e3c 7370 616e  00063\"></a><span\n+00003190: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n+000031a0: 3c61 2063 6c61 7373 3d22 6c69 6e65 2220  <a class=\"line\" \n+000031b0: 6872 6566 3d22 6130 3131 3737 2e68 746d  href=\"a01177.htm\n+000031c0: 6c23 6164 6637 6139 6466 3564 3366 6334  l#adf7a9df5d3fc4\n+000031d0: 6438 3033 6266 3566 3166 3337 3464 3930  d803bf5f1f374d90\n+000031e0: 3237 3422 3e20 2020 3633 3c2f 613e 3c2f  274\">   63</a></\n+000031f0: 7370 616e 3e20 2020 203c 7370 616e 2063  span>    <span c\n+00003200: 6c61 7373 3d22 6b65 7977 6f72 6474 7970  lass=\"keywordtyp\n+00003210: 6522 3e66 6c6f 6174 3c2f 7370 616e 3e20  e\">float</span> \n+00003220: 2a20 3c61 2063 6c61 7373 3d22 636f 6465  * <a class=\"code\n+00003230: 2068 6c5f 6675 6e63 7469 6f6e 2220 6872   hl_function\" hr\n+00003240: 6566 3d22 6130 3131 3737 2e68 746d 6c23  ef=\"a01177.html#\n+00003250: 6164 6637 6139 6466 3564 3366 6334 6438  adf7a9df5d3fc4d8\n+00003260: 3033 6266 3566 3166 3337 3464 3930 3237  03bf5f1f374d9027\n+00003270: 3422 3e42 696e 6443 7075 4275 6666 6572  4\">BindCpuBuffer\n+00003280: 3c2f 613e 2829 3b3c 2f64 6976 3e0a 3c64  </a>();</div>.<d\n+00003290: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n+000032a0: 3c61 2069 643d 226c 3030 3036 3422 206e  <a id=\"l00064\" n\n+000032b0: 616d 653d 226c 3030 3036 3422 3e3c 2f61  ame=\"l00064\"></a\n+000032c0: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n+000032d0: 6e65 6e6f 223e 2020 2036 343c 2f73 7061  neno\">   64</spa\n+000032e0: 6e3e 203c 2f64 6976 3e0a 3c64 6976 2063  n> </div>.<div c\n+000032f0: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n+00003300: 643d 226c 3030 3036 3522 206e 616d 653d  d=\"l00065\" name=\n+00003310: 226c 3030 3036 3522 3e3c 2f61 3e3c 7370  \"l00065\"></a><sp\n+00003320: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n+00003330: 223e 2020 2036 353c 2f73 7061 6e3e 3c73  \">   65</span><s\n+00003340: 7061 6e20 636c 6173 733d 226b 6579 776f  pan class=\"keywo\n+00003350: 7264 223e 7072 6f74 6563 7465 643c 2f73  rd\">protected</s\n+00003360: 7061 6e3e 3a3c 2f64 6976 3e0a 3c64 6976  pan>:</div>.<div\n+00003370: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n+00003380: 2069 643d 226c 3030 3036 3722 206e 616d   id=\"l00067\" nam\n+00003390: 653d 226c 3030 3036 3722 3e3c 2f61 3e3c  e=\"l00067\"></a><\n+000033a0: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n+000033b0: 6e6f 223e 3c61 2063 6c61 7373 3d22 6c69  no\"><a class=\"li\n+000033c0: 6e65 2220 6872 6566 3d22 6130 3131 3737  ne\" href=\"a01177\n+000033d0: 2e68 746d 6c23 6166 6139 3136 3866 3466  .html#afa9168f4f\n+000033e0: 3166 3034 3661 6561 3466 6639 3439 3333  1f046aea4ff94933\n+000033f0: 6163 3438 3937 3222 3e20 2020 3637 3c2f  ac48972\">   67</\n+00003400: 613e 3c2f 7370 616e 3e20 2020 203c 6120  a></span>    <a \n+00003410: 636c 6173 733d 2263 6f64 6520 686c 5f66  class=\"code hl_f\n+00003420: 756e 6374 696f 6e22 2068 7265 663d 2261  unction\" href=\"a\n+00003430: 3031 3137 372e 6874 6d6c 2361 6661 3931  01177.html#afa91\n+00003440: 3638 6634 6631 6630 3436 6165 6134 6666  68f4f1f046aea4ff\n+00003450: 3934 3933 3361 6334 3839 3732 223e 4370  94933ac48972\">Cp\n+00003460: 7556 6572 7465 7842 7566 6665 723c 2f61  uVertexBuffer</a\n+00003470: 3e28 3c73 7061 6e20 636c 6173 733d 226b  >(<span class=\"k\n+00003480: 6579 776f 7264 7479 7065 223e 696e 743c  eywordtype\">int<\n+00003490: 2f73 7061 6e3e 206e 756d 456c 656d 656e  /span> numElemen\n+000034a0: 7473 2c20 3c73 7061 6e20 636c 6173 733d  ts, <span class=\n+000034b0: 226b 6579 776f 7264 7479 7065 223e 696e  \"keywordtype\">in\n+000034c0: 743c 2f73 7061 6e3e 206e 756d 5665 7274  t</span> numVert\n+000034d0: 6963 6573 293b 3c2f 6469 763e 0a3c 6469  ices);</div>.<di\n+000034e0: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n+000034f0: 6120 6964 3d22 6c30 3030 3638 2220 6e61  a id=\"l00068\" na\n+00003500: 6d65 3d22 6c30 3030 3638 223e 3c2f 613e  me=\"l00068\"></a>\n+00003510: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n+00003520: 656e 6f22 3e20 2020 3638 3c2f 7370 616e  eno\">   68</span\n+00003530: 3e20 3c2f 6469 763e 0a3c 6469 7620 636c  > </div>.<div cl\n+00003540: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n+00003550: 3d22 6c30 3030 3639 2220 6e61 6d65 3d22  =\"l00069\" name=\"\n+00003560: 6c30 3030 3639 223e 3c2f 613e 3c73 7061  l00069\"></a><spa\n+00003570: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n+00003580: 3e20 2020 3639 3c2f 7370 616e 3e3c 7370  >   69</span><sp\n+00003590: 616e 2063 6c61 7373 3d22 6b65 7977 6f72  an class=\"keywor\n+000035a0: 6422 3e70 7269 7661 7465 3c2f 7370 616e  d\">private</span\n+000035b0: 3e3a 3c2f 6469 763e 0a3c 6469 7620 636c  >:</div>.<div cl\n+000035c0: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n+000035d0: 3d22 6c30 3030 3730 2220 6e61 6d65 3d22  =\"l00070\" name=\"\n+000035e0: 6c30 3030 3730 223e 3c2f 613e 3c73 7061  l00070\"></a><spa\n+000035f0: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n+00003600: 3e20 2020 3730 3c2f 7370 616e 3e20 2020  >   70</span>   \n+00003610: 203c 7370 616e 2063 6c61 7373 3d22 6b65   <span class=\"ke\n+00003620: 7977 6f72 6474 7970 6522 3e69 6e74 3c2f  ywordtype\">int</\n+00003630: 7370 616e 3e20 5f6e 756d 456c 656d 656e  span> _numElemen\n+00003640: 7473 3b3c 2f64 6976 3e0a 3c64 6976 2063  ts;</div>.<div c\n+00003650: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n+00003660: 643d 226c 3030 3037 3122 206e 616d 653d  d=\"l00071\" name=\n+00003670: 226c 3030 3037 3122 3e3c 2f61 3e3c 7370  \"l00071\"></a><sp\n+00003680: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n+00003690: 223e 2020 2037 313c 2f73 7061 6e3e 2020  \">   71</span>  \n+000036a0: 2020 3c73 7061 6e20 636c 6173 733d 226b    <span class=\"k\n+000036b0: 6579 776f 7264 7479 7065 223e 696e 743c  eywordtype\">int<\n+000036c0: 2f73 7061 6e3e 205f 6e75 6d56 6572 7469  /span> _numVerti\n+000036d0: 6365 733b 3c2f 6469 763e 0a3c 6469 7620  ces;</div>.<div \n+000036e0: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n+000036f0: 6964 3d22 6c30 3030 3732 2220 6e61 6d65  id=\"l00072\" name\n+00003700: 3d22 6c30 3030 3732 223e 3c2f 613e 3c73  =\"l00072\"></a><s\n+00003710: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n+00003720: 6f22 3e20 2020 3732 3c2f 7370 616e 3e20  o\">   72</span> \n+00003730: 2020 203c 7370 616e 2063 6c61 7373 3d22     <span class=\"\n+00003740: 6b65 7977 6f72 6474 7970 6522 3e66 6c6f  keywordtype\">flo\n+00003750: 6174 3c2f 7370 616e 3e20 2a5f 6370 7542  at</span> *_cpuB\n+00003760: 7566 6665 723b 3c2f 6469 763e 0a3c 6469  uffer;</div>.<di\n+00003770: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n+00003780: 6120 6964 3d22 6c30 3030 3733 2220 6e61  a id=\"l00073\" na\n+00003790: 6d65 3d22 6c30 3030 3733 223e 3c2f 613e  me=\"l00073\"></a>\n+000037a0: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n+000037b0: 656e 6f22 3e20 2020 3733 3c2f 7370 616e  eno\">   73</span\n+000037c0: 3e7d 3b3c 2f64 6976 3e0a 3c2f 6469 763e  >};</div>.</div>\n+000037d0: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n+000037e0: 6522 3e3c 6120 6964 3d22 6c30 3030 3734  e\"><a id=\"l00074\n+000037f0: 2220 6e61 6d65 3d22 6c30 3030 3734 223e  \" name=\"l00074\">\n+00003800: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n+00003810: 226c 696e 656e 6f22 3e20 2020 3734 3c2f  \"lineno\">   74</\n+00003820: 7370 616e 3e20 3c2f 6469 763e 0a3c 6469  span> </div>.<di\n+00003830: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n+00003840: 6120 6964 3d22 6c30 3030 3735 2220 6e61  a id=\"l00075\" na\n+00003850: 6d65 3d22 6c30 3030 3735 223e 3c2f 613e  me=\"l00075\"></a>\n+00003860: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n+00003870: 656e 6f22 3e20 2020 3735 3c2f 7370 616e  eno\">   75</span\n+00003880: 3e20 3c2f 6469 763e 0a3c 6469 7620 636c  > </div>.<div cl\n+00003890: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n+000038a0: 3d22 6c30 3030 3736 2220 6e61 6d65 3d22  =\"l00076\" name=\"\n+000038b0: 6c30 3030 3736 223e 3c2f 613e 3c73 7061  l00076\"></a><spa\n+000038c0: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n+000038d0: 3e20 2020 3736 3c2f 7370 616e 3e7d 2020  >   76</span>}  \n+000038e0: 3c73 7061 6e20 636c 6173 733d 2263 6f6d  <span class=\"com\n+000038f0: 6d65 6e74 223e 2f2f 2065 6e64 206e 616d  ment\">// end nam\n+00003900: 6573 7061 6365 204f 7364 3c2f 7370 616e  espace Osd</span\n+00003910: 3e3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ></div>.<div cla\n+00003920: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n+00003930: 226c 3030 3037 3722 206e 616d 653d 226c  \"l00077\" name=\"l\n+00003940: 3030 3037 3722 3e3c 2f61 3e3c 7370 616e  00077\"></a><span\n+00003950: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n+00003960: 2020 2037 373c 2f73 7061 6e3e 203c 2f64     77</span> </d\n+00003970: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n+00003980: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n+00003990: 3037 3822 206e 616d 653d 226c 3030 3037  078\" name=\"l0007\n+000039a0: 3822 3e3c 2f61 3e3c 7370 616e 2063 6c61  8\"></a><span cla\n+000039b0: 7373 3d22 6c69 6e65 6e6f 223e 2020 2037  ss=\"lineno\">   7\n+000039c0: 383c 2f73 7061 6e3e 7d20 203c 7370 616e  8</span>}  <span\n+000039d0: 2063 6c61 7373 3d22 636f 6d6d 656e 7422   class=\"comment\"\n+000039e0: 3e2f 2f20 656e 6420 6e61 6d65 7370 6163  >// end namespac\n+000039f0: 6520 4f50 454e 5355 4244 4956 5f56 4552  e OPENSUBDIV_VER\n+00003a00: 5349 4f4e 3c2f 7370 616e 3e3c 2f64 6976  SION</span></div\n+00003a10: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n+00003a20: 6e65 223e 3c61 2069 643d 226c 3030 3037  ne\"><a id=\"l0007\n+00003a30: 3922 206e 616d 653d 226c 3030 3037 3922  9\" name=\"l00079\"\n+00003a40: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n+00003a50: 3d22 6c69 6e65 6e6f 223e 2020 2037 393c  =\"lineno\">   79<\n+00003a60: 2f73 7061 6e3e 3c73 7061 6e20 636c 6173  /span><span clas\n+00003a70: 733d 226b 6579 776f 7264 223e 7573 696e  s=\"keyword\">usin\n+00003a80: 6720 6e61 6d65 7370 6163 6520 3c2f 7370  g namespace </sp\n+00003a90: 616e 3e4f 5045 4e53 5542 4449 565f 5645  an>OPENSUBDIV_VE\n+00003aa0: 5253 494f 4e3b 3c2f 6469 763e 0a3c 6469  RSION;</div>.<di\n+00003ab0: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n+00003ac0: 6120 6964 3d22 6c30 3030 3830 2220 6e61  a id=\"l00080\" na\n+00003ad0: 6d65 3d22 6c30 3030 3830 223e 3c2f 613e  me=\"l00080\"></a>\n+00003ae0: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n+00003af0: 656e 6f22 3e20 2020 3830 3c2f 7370 616e  eno\">   80</span\n+00003b00: 3e20 3c2f 6469 763e 0a3c 6469 7620 636c  > </div>.<div cl\n+00003b10: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n+00003b20: 3d22 6c30 3030 3831 2220 6e61 6d65 3d22  =\"l00081\" name=\"\n+00003b30: 6c30 3030 3831 223e 3c2f 613e 3c73 7061  l00081\"></a><spa\n+00003b40: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n+00003b50: 3e20 2020 3831 3c2f 7370 616e 3e7d 2020  >   81</span>}  \n+00003b60: 3c73 7061 6e20 636c 6173 733d 2263 6f6d  <span class=\"com\n+00003b70: 6d65 6e74 223e 2f2f 2065 6e64 206e 616d  ment\">// end nam\n+00003b80: 6573 7061 6365 204f 7065 6e53 7562 6469  espace OpenSubdi\n+00003b90: 763c 2f73 7061 6e3e 3c2f 6469 763e 0a3c  v</span></div>.<\n+00003ba0: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n+00003bb0: 3e3c 6120 6964 3d22 6c30 3030 3832 2220  ><a id=\"l00082\" \n+00003bc0: 6e61 6d65 3d22 6c30 3030 3832 223e 3c2f  name=\"l00082\"></\n+00003bd0: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n+00003be0: 696e 656e 6f22 3e20 2020 3832 3c2f 7370  ineno\">   82</sp\n+00003bf0: 616e 3e20 3c2f 6469 763e 0a3c 6469 7620  an> </div>.<div \n+00003c00: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n+00003c10: 6964 3d22 6c30 3030 3833 2220 6e61 6d65  id=\"l00083\" name\n+00003c20: 3d22 6c30 3030 3833 223e 3c2f 613e 3c73  =\"l00083\"></a><s\n+00003c30: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n+00003c40: 6f22 3e20 2020 3833 3c2f 7370 616e 3e3c  o\">   83</span><\n+00003c50: 7370 616e 2063 6c61 7373 3d22 7072 6570  span class=\"prep\n+00003c60: 726f 6365 7373 6f72 223e 2365 6e64 6966  rocessor\">#endif\n+00003c70: 2020 3c2f 7370 616e 3e3c 7370 616e 2063    </span><span c\n+00003c80: 6c61 7373 3d22 636f 6d6d 656e 7422 3e2f  lass=\"comment\">/\n+00003c90: 2f20 4f50 454e 5355 4244 4956 335f 4f53  / OPENSUBDIV3_OS\n+00003ca0: 445f 4350 555f 5645 5254 4558 5f42 5546  D_CPU_VERTEX_BUF\n+00003cb0: 4645 525f 483c 2f73 7061 6e3e 3c2f 6469  FER_H</span></di\n+00003cc0: 763e 0a3c 6469 7620 636c 6173 733d 2274  v>.<div class=\"t\n+00003cd0: 7463 2220 6964 3d22 6161 3030 3930 355f  tc\" id=\"aa00905_\n+00003ce0: 6874 6d6c 223e 3c64 6976 2063 6c61 7373  html\"><div class\n+00003cf0: 3d22 7474 6e61 6d65 223e 3c61 2068 7265  =\"ttname\"><a hre\n+00003d00: 663d 2261 3030 3930 352e 6874 6d6c 223e  f=\"a00905.html\">\n+00003d10: 4f70 656e 5375 6264 6976 3c2f 613e 3c2f  OpenSubdiv</a></\n+00003d20: 6469 763e 3c64 6976 2063 6c61 7373 3d22  div><div class=\"\n+00003d30: 7474 6465 6622 3e3c 623e 4465 6669 6e69  ttdef\"><b>Defini\n+00003d40: 7469 6f6e 3c2f 623e 203c 6120 6872 6566  tion</b> <a href\n+00003d50: 3d22 6130 3038 3930 5f73 6f75 7263 652e  =\"a00890_source.\n+00003d60: 6874 6d6c 236c 3030 3033 3222 3e6c 696d  html#l00032\">lim\n+00003d70: 6974 732e 683a 3332 3c2f 613e 3c2f 6469  its.h:32</a></di\n+00003d80: 763e 3c2f 6469 763e 0a3c 6469 7620 636c  v></div>.<div cl\n+00003d90: 6173 733d 2274 7463 2220 6964 3d22 6161  ass=\"ttc\" id=\"aa\n+00003da0: 3031 3137 375f 6874 6d6c 223e 3c64 6976  01177_html\"><div\n+00003db0: 2063 6c61 7373 3d22 7474 6e61 6d65 223e   class=\"ttname\">\n+00003dc0: 3c61 2068 7265 663d 2261 3031 3137 372e  <a href=\"a01177.\n+00003dd0: 6874 6d6c 223e 4f70 656e 5375 6264 6976  html\">OpenSubdiv\n+00003de0: 3a3a 4f50 454e 5355 4244 4956 5f56 4552  ::OPENSUBDIV_VER\n+00003df0: 5349 4f4e 3a3a 4f73 643a 3a43 7075 5665  SION::Osd::CpuVe\n+00003e00: 7274 6578 4275 6666 6572 3c2f 613e 3c2f  rtexBuffer</a></\n+00003e10: 6469 763e 3c64 6976 2063 6c61 7373 3d22  div><div class=\"\n+00003e20: 7474 646f 6322 3e43 6f6e 6372 6574 6520  ttdoc\">Concrete \n+00003e30: 7665 7274 6578 2062 7566 6665 7220 636c  vertex buffer cl\n+00003e40: 6173 7320 666f 7220 4350 5520 7375 6264  ass for CPU subd\n+00003e50: 6976 6973 696f 6e2e 3c2f 6469 763e 3c64  ivision.</div><d\n+00003e60: 6976 2063 6c61 7373 3d22 7474 6465 6622  iv class=\"ttdef\"\n+00003e70: 3e3c 623e 4465 6669 6e69 7469 6f6e 3c2f  ><b>Definition</\n+00003e80: 623e 203c 6120 6872 6566 3d22 6130 3037  b> <a href=\"a007\n+00003e90: 3433 5f73 6f75 7263 652e 6874 6d6c 236c  43_source.html#l\n+00003ea0: 3030 3034 3222 3e63 7075 5665 7274 6578  00042\">cpuVertex\n+00003eb0: 4275 6666 6572 2e68 3a34 323c 2f61 3e3c  Buffer.h:42</a><\n+00003ec0: 2f64 6976 3e3c 2f64 6976 3e0a 3c64 6976  /div></div>.<div\n+00003ed0: 2063 6c61 7373 3d22 7474 6322 2069 643d   class=\"ttc\" id=\n+00003ee0: 2261 6130 3131 3737 5f68 746d 6c5f 6137  \"aa01177_html_a7\n+00003ef0: 3763 6565 3430 3736 3766 6434 3933 3666  7cee40767fd4936f\n+00003f00: 3230 6138 6639 6439 6439 6561 3632 3522  20a8f9d9d9ea625\"\n+00003f10: 3e3c 6469 7620 636c 6173 733d 2274 746e  ><div class=\"ttn\n+00003f20: 616d 6522 3e3c 6120 6872 6566 3d22 6130  ame\"><a href=\"a0\n+00003f30: 3131 3737 2e68 746d 6c23 6137 3763 6565  1177.html#a77cee\n+00003f40: 3430 3736 3766 6434 3933 3666 3230 6138  40767fd4936f20a8\n+00003f50: 6639 6439 6439 6561 3632 3522 3e4f 7065  f9d9d9ea625\">Ope\n+00003f60: 6e53 7562 6469 763a 3a4f 5045 4e53 5542  nSubdiv::OPENSUB\n+00003f70: 4449 565f 5645 5253 494f 4e3a 3a4f 7364  DIV_VERSION::Osd\n+00003f80: 3a3a 4370 7556 6572 7465 7842 7566 6665  ::CpuVertexBuffe\n+00003f90: 723a 3a47 6574 4e75 6d45 6c65 6d65 6e74  r::GetNumElement\n+00003fa0: 733c 2f61 3e3c 2f64 6976 3e3c 6469 7620  s</a></div><div \n+00003fb0: 636c 6173 733d 2274 7464 6563 6922 3e69  class=\"ttdeci\">i\n+00003fc0: 6e74 2047 6574 4e75 6d45 6c65 6d65 6e74  nt GetNumElement\n+00003fd0: 7328 2920 636f 6e73 743c 2f64 6976 3e3c  s() const</div><\n+00003fe0: 6469 7620 636c 6173 733d 2274 7464 6f63  div class=\"ttdoc\n+00003ff0: 223e 5265 7475 726e 7320 686f 7720 6d61  \">Returns how ma\n+00004000: 6e79 2065 6c65 6d65 6e74 7320 6465 6669  ny elements defi\n+00004010: 6e65 6420 696e 2074 6869 7320 7665 7274  ned in this vert\n+00004020: 6578 2062 7566 6665 722e 3c2f 6469 763e  ex buffer.</div>\n+00004030: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n+00004040: 733d 2274 7463 2220 6964 3d22 6161 3031  s=\"ttc\" id=\"aa01\n+00004050: 3137 375f 6874 6d6c 5f61 3862 3933 6435  177_html_a8b93d5\n+00004060: 3030 3365 3634 6435 3163 3962 6437 6534  003e64d51c9bd7e4\n+00004070: 3837 6364 3135 6331 3031 223e 3c64 6976  87cd15c101\"><div\n+00004080: 2063 6c61 7373 3d22 7474 6e61 6d65 223e   class=\"ttname\">\n+00004090: 3c61 2068 7265 663d 2261 3031 3137 372e  <a href=\"a01177.\n+000040a0: 6874 6d6c 2361 3862 3933 6435 3030 3365  html#a8b93d5003e\n+000040b0: 3634 6435 3163 3962 6437 6534 3837 6364  64d51c9bd7e487cd\n+000040c0: 3135 6331 3031 223e 4f70 656e 5375 6264  15c101\">OpenSubd\n+000040d0: 6976 3a3a 4f50 454e 5355 4244 4956 5f56  iv::OPENSUBDIV_V\n+000040e0: 4552 5349 4f4e 3a3a 4f73 643a 3a43 7075  ERSION::Osd::Cpu\n+000040f0: 5665 7274 6578 4275 6666 6572 3a3a 4372  VertexBuffer::Cr\n+00004100: 6561 7465 3c2f 613e 3c2f 6469 763e 3c64  eate</a></div><d\n+00004110: 6976 2063 6c61 7373 3d22 7474 6465 6369  iv class=\"ttdeci\n+00004120: 223e 7374 6174 6963 2043 7075 5665 7274  \">static CpuVert\n+00004130: 6578 4275 6666 6572 202a 2043 7265 6174  exBuffer * Creat\n+00004140: 6528 696e 7420 6e75 6d45 6c65 6d65 6e74  e(int numElement\n+00004150: 732c 2069 6e74 206e 756d 5665 7274 6963  s, int numVertic\n+00004160: 6573 2c20 766f 6964 202a 6465 7669 6365  es, void *device\n+00004170: 436f 6e74 6578 743d 4e55 4c4c 293c 2f64  Context=NULL)</d\n+00004180: 6976 3e3c 6469 7620 636c 6173 733d 2274  iv><div class=\"t\n+00004190: 7464 6f63 223e 4372 6561 746f 722e 2052  tdoc\">Creator. R\n+000041a0: 6574 7572 6e73 204e 554c 4c20 6966 2065  eturns NULL if e\n+000041b0: 7272 6f72 2e3c 2f64 6976 3e3c 2f64 6976  rror.</div></div\n+000041c0: 3e0a 3c64 6976 2063 6c61 7373 3d22 7474  >.<div class=\"tt\n+000041d0: 6322 2069 643d 2261 6130 3131 3737 5f68  c\" id=\"aa01177_h\n+000041e0: 746d 6c5f 6139 3636 3031 6130 3931 6638  tml_a96601a091f8\n+000041f0: 3833 3138 3233 6334 6464 3732 6236 6339  831823c4dd72b6c9\n+00004200: 3632 6631 6222 3e3c 6469 7620 636c 6173  62f1b\"><div clas\n+00004210: 733d 2274 746e 616d 6522 3e3c 6120 6872  s=\"ttname\"><a hr\n+00004220: 6566 3d22 6130 3131 3737 2e68 746d 6c23  ef=\"a01177.html#\n+00004230: 6139 3636 3031 6130 3931 6638 3833 3138  a96601a091f88318\n+00004240: 3233 6334 6464 3732 6236 6339 3632 6631  23c4dd72b6c962f1\n+00004250: 6222 3e4f 7065 6e53 7562 6469 763a 3a4f  b\">OpenSubdiv::O\n+00004260: 5045 4e53 5542 4449 565f 5645 5253 494f  PENSUBDIV_VERSIO\n+00004270: 4e3a 3a4f 7364 3a3a 4370 7556 6572 7465  N::Osd::CpuVerte\n+00004280: 7842 7566 6665 723a 3a55 7064 6174 6544  xBuffer::UpdateD\n+00004290: 6174 613c 2f61 3e3c 2f64 6976 3e3c 6469  ata</a></div><di\n+000042a0: 7620 636c 6173 733d 2274 7464 6563 6922  v class=\"ttdeci\"\n+000042b0: 3e76 6f69 6420 5570 6461 7465 4461 7461  >void UpdateData\n+000042c0: 2863 6f6e 7374 2066 6c6f 6174 202a 7372  (const float *sr\n+000042d0: 632c 2069 6e74 2073 7461 7274 5665 7274  c, int startVert\n+000042e0: 6578 2c20 696e 7420 6e75 6d56 6572 7469  ex, int numVerti\n+000042f0: 6365 732c 2076 6f69 6420 2a64 6576 6963  ces, void *devic\n+00004300: 6543 6f6e 7465 7874 3d4e 554c 4c29 3c2f  eContext=NULL)</\n+00004310: 6469 763e 3c2f 6469 763e 0a3c 6469 7620  div></div>.<div \n+00004320: 636c 6173 733d 2274 7463 2220 6964 3d22  class=\"ttc\" id=\"\n+00004330: 6161 3031 3137 375f 6874 6d6c 5f61 6166  aa01177_html_aaf\n+00004340: 3461 3332 6238 6134 3134 6566 6637 3730  4a32b8a414eff770\n+00004350: 3030 6335 3834 6332 3031 3563 6237 223e  00c584c2015cb7\">\n+00004360: 3c64 6976 2063 6c61 7373 3d22 7474 6e61  <div class=\"ttna\n+00004370: 6d65 223e 3c61 2068 7265 663d 2261 3031  me\"><a href=\"a01\n+00004380: 3137 372e 6874 6d6c 2361 6166 3461 3332  177.html#aaf4a32\n+00004390: 6238 6134 3134 6566 6637 3730 3030 6335  b8a414eff77000c5\n+000043a0: 3834 6332 3031 3563 6237 223e 4f70 656e  84c2015cb7\">Open\n+000043b0: 5375 6264 6976 3a3a 4f50 454e 5355 4244  Subdiv::OPENSUBD\n+000043c0: 4956 5f56 4552 5349 4f4e 3a3a 4f73 643a  IV_VERSION::Osd:\n+000043d0: 3a43 7075 5665 7274 6578 4275 6666 6572  :CpuVertexBuffer\n+000043e0: 3a3a 4765 744e 756d 5665 7274 6963 6573  ::GetNumVertices\n+000043f0: 3c2f 613e 3c2f 6469 763e 3c64 6976 2063  </a></div><div c\n+00004400: 6c61 7373 3d22 7474 6465 6369 223e 696e  lass=\"ttdeci\">in\n+00004410: 7420 4765 744e 756d 5665 7274 6963 6573  t GetNumVertices\n+00004420: 2829 2063 6f6e 7374 3c2f 6469 763e 3c64  () const</div><d\n+00004430: 6976 2063 6c61 7373 3d22 7474 646f 6322  iv class=\"ttdoc\"\n+00004440: 3e52 6574 7572 6e73 2068 6f77 206d 616e  >Returns how man\n+00004450: 7920 7665 7274 6963 6573 2061 6c6c 6f63  y vertices alloc\n+00004460: 6174 6564 2069 6e20 7468 6973 2076 6572  ated in this ver\n+00004470: 7465 7820 6275 6666 6572 2e3c 2f64 6976  tex buffer.</div\n+00004480: 3e3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ></div>.<div cla\n+00004490: 7373 3d22 7474 6322 2069 643d 2261 6130  ss=\"ttc\" id=\"aa0\n+000044a0: 3131 3737 5f68 746d 6c5f 6164 3039 3332  1177_html_ad0932\n+000044b0: 3531 3965 6166 3637 3763 3432 6138 6363  519eaf677c42a8cc\n+000044c0: 6665 3961 3738 6132 3639 3822 3e3c 6469  fe9a78a2698\"><di\n+000044d0: 7620 636c 6173 733d 2274 746e 616d 6522  v class=\"ttname\"\n+000044e0: 3e3c 6120 6872 6566 3d22 6130 3131 3737  ><a href=\"a01177\n+000044f0: 2e68 746d 6c23 6164 3039 3332 3531 3965  .html#ad0932519e\n+00004500: 6166 3637 3763 3432 6138 6363 6665 3961  af677c42a8ccfe9a\n+00004510: 3738 6132 3639 3822 3e4f 7065 6e53 7562  78a2698\">OpenSub\n+00004520: 6469 763a 3a4f 5045 4e53 5542 4449 565f  div::OPENSUBDIV_\n+00004530: 5645 5253 494f 4e3a 3a4f 7364 3a3a 4370  VERSION::Osd::Cp\n+00004540: 7556 6572 7465 7842 7566 6665 723a 3a7e  uVertexBuffer::~\n+00004550: 4370 7556 6572 7465 7842 7566 6665 723c  CpuVertexBuffer<\n+00004560: 2f61 3e3c 2f64 6976 3e3c 6469 7620 636c  /a></div><div cl\n+00004570: 6173 733d 2274 7464 6563 6922 3e7e 4370  ass=\"ttdeci\">~Cp\n+00004580: 7556 6572 7465 7842 7566 6665 7228 293c  uVertexBuffer()<\n+00004590: 2f64 6976 3e3c 6469 7620 636c 6173 733d  /div><div class=\n+000045a0: 2274 7464 6f63 223e 4465 7374 7275 6374  \"ttdoc\">Destruct\n+000045b0: 6f72 2e3c 2f64 6976 3e3c 2f64 6976 3e0a  or.</div></div>.\n+000045c0: 3c64 6976 2063 6c61 7373 3d22 7474 6322  <div class=\"ttc\"\n+000045d0: 2069 643d 2261 6130 3131 3737 5f68 746d   id=\"aa01177_htm\n+000045e0: 6c5f 6164 6637 6139 6466 3564 3366 6334  l_adf7a9df5d3fc4\n+000045f0: 6438 3033 6266 3566 3166 3337 3464 3930  d803bf5f1f374d90\n+00004600: 3237 3422 3e3c 6469 7620 636c 6173 733d  274\"><div class=\n+00004610: 2274 746e 616d 6522 3e3c 6120 6872 6566  \"ttname\"><a href\n+00004620: 3d22 6130 3131 3737 2e68 746d 6c23 6164  =\"a01177.html#ad\n+00004630: 6637 6139 6466 3564 3366 6334 6438 3033  f7a9df5d3fc4d803\n+00004640: 6266 3566 3166 3337 3464 3930 3237 3422  bf5f1f374d90274\"\n+00004650: 3e4f 7065 6e53 7562 6469 763a 3a4f 5045  >OpenSubdiv::OPE\n+00004660: 4e53 5542 4449 565f 5645 5253 494f 4e3a  NSUBDIV_VERSION:\n+00004670: 3a4f 7364 3a3a 4370 7556 6572 7465 7842  :Osd::CpuVertexB\n+00004680: 7566 6665 723a 3a42 696e 6443 7075 4275  uffer::BindCpuBu\n+00004690: 6666 6572 3c2f 613e 3c2f 6469 763e 3c64  ffer</a></div><d\n+000046a0: 6976 2063 6c61 7373 3d22 7474 6465 6369  iv class=\"ttdeci\n+000046b0: 223e 666c 6f61 7420 2a20 4269 6e64 4370  \">float * BindCp\n+000046c0: 7542 7566 6665 7228 293c 2f64 6976 3e3c  uBuffer()</div><\n+000046d0: 6469 7620 636c 6173 733d 2274 7464 6f63  div class=\"ttdoc\n+000046e0: 223e 5265 7475 726e 7320 7468 6520 6164  \">Returns the ad\n+000046f0: 6472 6573 7320 6f66 2043 5055 2062 7566  dress of CPU buf\n+00004700: 6665 722e 3c2f 6469 763e 3c2f 6469 763e  fer.</div></div>\n+00004710: 0a3c 6469 7620 636c 6173 733d 2274 7463  .<div class=\"ttc\n+00004720: 2220 6964 3d22 6161 3031 3137 375f 6874  \" id=\"aa01177_ht\n+00004730: 6d6c 5f61 6661 3931 3638 6634 6631 6630  ml_afa9168f4f1f0\n+00004740: 3436 6165 6134 6666 3934 3933 3361 6334  46aea4ff94933ac4\n+00004750: 3839 3732 223e 3c64 6976 2063 6c61 7373  8972\"><div class\n+00004760: 3d22 7474 6e61 6d65 223e 3c61 2068 7265  =\"ttname\"><a hre\n+00004770: 663d 2261 3031 3137 372e 6874 6d6c 2361  f=\"a01177.html#a\n+00004780: 6661 3931 3638 6634 6631 6630 3436 6165  fa9168f4f1f046ae\n+00004790: 6134 6666 3934 3933 3361 6334 3839 3732  a4ff94933ac48972\n+000047a0: 223e 4f70 656e 5375 6264 6976 3a3a 4f50  \">OpenSubdiv::OP\n+000047b0: 454e 5355 4244 4956 5f56 4552 5349 4f4e  ENSUBDIV_VERSION\n+000047c0: 3a3a 4f73 643a 3a43 7075 5665 7274 6578  ::Osd::CpuVertex\n+000047d0: 4275 6666 6572 3a3a 4370 7556 6572 7465  Buffer::CpuVerte\n+000047e0: 7842 7566 6665 723c 2f61 3e3c 2f64 6976  xBuffer</a></div\n+000047f0: 3e3c 6469 7620 636c 6173 733d 2274 7464  ><div class=\"ttd\n+00004800: 6563 6922 3e43 7075 5665 7274 6578 4275  eci\">CpuVertexBu\n+00004810: 6666 6572 2869 6e74 206e 756d 456c 656d  ffer(int numElem\n+00004820: 656e 7473 2c20 696e 7420 6e75 6d56 6572  ents, int numVer\n+00004830: 7469 6365 7329 3c2f 6469 763e 3c64 6976  tices)</div><div\n+00004840: 2063 6c61 7373 3d22 7474 646f 6322 3e43   class=\"ttdoc\">C\n+00004850: 6f6e 7374 7275 6374 6f72 2e3c 2f64 6976  onstructor.</div\n+00004860: 3e3c 2f64 6976 3e0a 3c2f 6469 763e 3c21  ></div>.</div><!\n+00004870: 2d2d 2066 7261 676d 656e 7420 2d2d 3e3c  -- fragment --><\n+00004880: 2f64 6976 3e3c 212d 2d20 636f 6e74 656e  /div><!-- conten\n+00004890: 7473 202d 2d3e 0a3c 2f64 6976 3e3c 212d  ts -->.</div><!-\n+000048a0: 2d20 646f 632d 636f 6e74 656e 7420 2d2d  - doc-content --\n+000048b0: 3e0a 3c21 2d2d 2073 7461 7274 2066 6f6f  >.<!-- start foo\n+000048c0: 7465 7220 7061 7274 202d 2d3e 0a3c 6469  ter part -->.<di\n+000048d0: 7620 6964 3d22 6e61 762d 7061 7468 2220  v id=\"nav-path\" \n+000048e0: 636c 6173 733d 226e 6176 7061 7468 223e  class=\"navpath\">\n+000048f0: 3c21 2d2d 2069 6420 6973 206e 6565 6465  <!-- id is neede\n+00004900: 6420 666f 7220 7472 6565 7669 6577 2066  d for treeview f\n+00004910: 756e 6374 696f 6e21 202d 2d3e 0a20 203c  unction! -->.  <\n+00004920: 756c 3e0a 2020 2020 3c6c 6920 636c 6173  ul>.    <li clas\n+00004930: 733d 226e 6176 656c 656d 223e 3c61 2063  s=\"navelem\"><a c\n+00004940: 6c61 7373 3d22 656c 2220 6872 6566 3d22  lass=\"el\" href=\"\n+00004950: 6469 725f 3932 6433 3265 6432 6565 3561  dir_92d32ed2ee5a\n+00004960: 3531 3839 6332 3437 3732 3763 3833 6534  5189c247727c83e4\n+00004970: 6230 6661 2e68 746d 6c22 3e6f 7065 6e73  b0fa.html\">opens\n+00004980: 7562 6469 763c 2f61 3e3c 2f6c 693e 3c6c  ubdiv</a></li><l\n+00004990: 6920 636c 6173 733d 226e 6176 656c 656d  i class=\"navelem\n+000049a0: 223e 3c61 2063 6c61 7373 3d22 656c 2220  \"><a class=\"el\" \n+000049b0: 6872 6566 3d22 6469 725f 3234 3833 3035  href=\"dir_248305\n+000049c0: 3062 3731 3163 3138 3239 6136 3433 3430  0b711c1829a64340\n+000049d0: 3036 6430 6265 6231 3063 2e68 746d 6c22  06d0beb10c.html\"\n+000049e0: 3e6f 7364 3c2f 613e 3c2f 6c69 3e3c 6c69  >osd</a></li><li\n+000049f0: 2063 6c61 7373 3d22 6e61 7665 6c65 6d22   class=\"navelem\"\n+00004a00: 3e3c 6120 636c 6173 733d 2265 6c22 2068  ><a class=\"el\" h\n+00004a10: 7265 663d 2261 3030 3734 332e 6874 6d6c  ref=\"a00743.html\n+00004a20: 223e 6370 7556 6572 7465 7842 7566 6665  \">cpuVertexBuffe\n+00004a30: 722e 683c 2f61 3e3c 2f6c 693e 0a20 2020  r.h</a></li>.   \n+00004a40: 203c 6c69 2063 6c61 7373 3d22 666f 6f74   <li class=\"foot\n+00004a50: 6572 223e 4765 6e65 7261 7465 6420 6f6e  er\">Generated on\n+00004a60: 2054 6875 204a 616e 2032 2032 3032 3520   Thu Jan 2 2025 \n+00004a70: 3038 3a34 373a 3436 2066 6f72 204f 7065  08:47:46 for Ope\n+00004a80: 6e53 7562 6469 7620 6279 203c 6120 6872  nSubdiv by <a hr\n+00004a90: 6566 3d22 6874 7470 733a 2f2f 7777 772e  ef=\"https://www.\n+00004aa0: 646f 7879 6765 6e2e 6f72 672f 696e 6465  doxygen.org/inde\n+00004ab0: 782e 6874 6d6c 223e 3c69 6d67 2063 6c61  x.html\"><img cla\n+00004ac0: 7373 3d22 666f 6f74 6572 2220 7372 633d  ss=\"footer\" src=\n+00004ad0: 2264 6f78 7967 656e 2e73 7667 2220 7769  \"doxygen.svg\" wi\n+00004ae0: 6474 683d 2231 3034 2220 6865 6967 6874  dth=\"104\" height\n+00004af0: 3d22 3331 2220 616c 743d 2264 6f78 7967  =\"31\" alt=\"doxyg\n+00004b00: 656e 222f 3e3c 2f61 3e20 312e 392e 3820  en\"/></a> 1.9.8 \n+00004b10: 3c2f 6c69 3e0a 2020 3c2f 756c 3e0a 3c2f  </li>.  </ul>.</\n+00004b20: 6469 763e 0a3c 2f62 6f64 793e 0a3c 2f68  div>.</body>.</h\n+00004b30: 746d 6c3e 0a                             tml>.\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-scheme.h\n+cpuVertexBuffer.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2014 DreamWorks Animation LLC.\n+2// Copyright 2013 Pixar\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -23,847 +23,85 @@\n 17//\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n-24#ifndef OPENSUBDIV3_SDC_SCHEME_H\n-25#define OPENSUBDIV3_SDC_SCHEME_H\n-26\n-27#include \"../version.h\"\n-28\n-29#include \"../sdc/types.h\"\n-30#include \"../sdc/options.h\"\n-31#include \"../sdc/crease.h\"\n-32\n-33#include <cassert>\n-34#include <cstdlib>\n-35#include <vector>\n+24\n+25#ifndef OPENSUBDIV3_OSD_CPU_VERTEX_BUFFER_H\n+26#define OPENSUBDIV3_OSD_CPU_VERTEX_BUFFER_H\n+27\n+28#include \"../version.h\"\n+29\n+30#include <cstddef>\n+31\n+32namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+33namespace OPENSUBDIV_VERSION {\n+34\n+35namespace Osd {\n 36\n-37namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-38namespace OPENSUBDIV_VERSION {\n-39\n-40namespace Sdc {\n-41\n-65template <SchemeType SCHEME_TYPE>\n-_\b6_\b6class _\bS_\bc_\bh_\be_\bm_\be {\n-67\n-68public:\n-69\n-_\b7_\b0 _\bS_\bc_\bh_\be_\bm_\be() : _options() { }\n-71\n-_\b7_\b2 _\bS_\bc_\bh_\be_\bm_\be(_\bO_\bp_\bt_\bi_\bo_\bn_\bs const& options) : _options(options) { }\n-73\n-_\b7_\b4 _\bO_\bp_\bt_\bi_\bo_\bn_\bs _\bG_\be_\bt_\bO_\bp_\bt_\bi_\bo_\bn_\bs() const { return _options; }\n-_\b7_\b5 void _\bS_\be_\bt_\bO_\bp_\bt_\bi_\bo_\bn_\bs(const _\bO_\bp_\bt_\bi_\bo_\bn_\bs& newOptions) { _options = newOptions; }\n-76\n-80 template <typename FACE, typename MASK>\n-81 void _\bC_\bo_\bm_\bp_\bu_\bt_\be_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\be_\bx_\bM_\ba_\bs_\bk(FACE const& faceNeighborhood, MASK&\n-faceVertexMask) const;\n+_\b4_\b2class _\bC_\bp_\bu_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br {\n+43public:\n+_\b4_\b5 static _\bC_\bp_\bu_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br * _\bC_\br_\be_\ba_\bt_\be(int numElements, int numVertices,\n+46 void *deviceContext = NULL);\n+47\n+_\b4_\b9 _\b~_\bC_\bp_\bu_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br();\n+50\n+_\b5_\b3 void _\bU_\bp_\bd_\ba_\bt_\be_\bD_\ba_\bt_\ba(const float *src, int startVertex, int numVertices,\n+54 void *deviceContext = NULL);\n+55\n+_\b5_\b7 int _\bG_\be_\bt_\bN_\bu_\bm_\bE_\bl_\be_\bm_\be_\bn_\bt_\bs() const;\n+58\n+_\b6_\b0 int _\bG_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs() const;\n+61\n+_\b6_\b3 float * _\bB_\bi_\bn_\bd_\bC_\bp_\bu_\bB_\bu_\bf_\bf_\be_\br();\n+64\n+65protected:\n+_\b6_\b7 _\bC_\bp_\bu_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br(int numElements, int numVertices);\n+68\n+69private:\n+70 int _numElements;\n+71 int _numVertices;\n+72 float *_cpuBuffer;\n+73};\n+74\n+75\n+76} // end namespace Osd\n+77\n+78} // end namespace OPENSUBDIV_VERSION\n+79using namespace OPENSUBDIV_VERSION;\n+80\n+81} // end namespace OpenSubdiv\n 82\n-98 template <typename EDGE, typename MASK>\n-99 void _\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bd_\bg_\be_\bV_\be_\br_\bt_\be_\bx_\bM_\ba_\bs_\bk(EDGE const& edgeNeighborhood, MASK&\n-edgeVertexMask,\n-100 _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be parentRule = _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bU_\bN_\bK_\bN_\bO_\bW_\bN,\n-101 _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be childRule = _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bU_\bN_\bK_\bN_\bO_\bW_\bN) const;\n-102\n-112 template <typename VERTEX, typename MASK>\n-113 void _\bC_\bo_\bm_\bp_\bu_\bt_\be_\bV_\be_\br_\bt_\be_\bx_\bV_\be_\br_\bt_\be_\bx_\bM_\ba_\bs_\bk(VERTEX const& vertexNeighborhood, MASK&\n-vertexVertexMask,\n-114 _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be parentRule = _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bU_\bN_\bK_\bN_\bO_\bW_\bN,\n-115 _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be childRule = _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bU_\bN_\bK_\bN_\bO_\bW_\bN) const;\n-116\n-141 template <typename VERTEX, typename MASK>\n-142 void _\bC_\bo_\bm_\bp_\bu_\bt_\be_\bV_\be_\br_\bt_\be_\bx_\bL_\bi_\bm_\bi_\bt_\bM_\ba_\bs_\bk(VERTEX const& vertexNeighborhood, MASK&\n-positionMask,\n-143 _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be vertexRule) const;\n-144\n-145 template <typename VERTEX, typename MASK>\n-146 void _\bC_\bo_\bm_\bp_\bu_\bt_\be_\bV_\be_\br_\bt_\be_\bx_\bL_\bi_\bm_\bi_\bt_\bM_\ba_\bs_\bk(VERTEX const& vertexNeighborhood, MASK&\n-positionMask,\n-147 MASK& tangent1Mask, MASK& tangent2Mask,\n-148 _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be vertexRule) const;\n-149\n-150 //\n-151 // Static methods defining traits/properties of the scheme:\n-152 //\n-_\b1_\b5_\b3 static _\bS_\bp_\bl_\bi_\bt _\bG_\be_\bt_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\bi_\bc_\ba_\bl_\bS_\bp_\bl_\bi_\bt_\bT_\by_\bp_\be();\n-_\b1_\b5_\b4 static int _\bG_\be_\bt_\bR_\be_\bg_\bu_\bl_\ba_\br_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be();\n-_\b1_\b5_\b5 static int _\bG_\be_\bt_\bR_\be_\bg_\bu_\bl_\ba_\br_\bV_\be_\br_\bt_\be_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be();\n-_\b1_\b5_\b6 static int _\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bh_\bo_\bo_\bd_\bS_\bi_\bz_\be();\n-157\n-158protected:\n-159\n-160 //\n-161 // Supporting internal methods -- optionally implemented, depending on\n-specialization:\n-162 //\n-163\n-164 // Subdivision/refinement masks -- two for edge-vertices and three for\n-vertex-vertices:\n-165 //\n-166 template <typename EDGE, typename MASK>\n-167 void _\ba_\bs_\bs_\bi_\bg_\bn_\bC_\br_\be_\ba_\bs_\be_\bM_\ba_\bs_\bk_\bF_\bo_\br_\bE_\bd_\bg_\be(EDGE const& edge, MASK& mask) const;\n-168 template <typename EDGE, typename MASK>\n-_\b1_\b6_\b9 void _\ba_\bs_\bs_\bi_\bg_\bn_\bS_\bm_\bo_\bo_\bt_\bh_\bM_\ba_\bs_\bk_\bF_\bo_\br_\bE_\bd_\bg_\be(EDGE const& edge, MASK& mask) const;\n-170\n-171 template <typename VERTEX, typename MASK>\n-172 void _\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\br_\bn_\be_\br_\bM_\ba_\bs_\bk_\bF_\bo_\br_\bV_\be_\br_\bt_\be_\bx(VERTEX const& edge, MASK& mask) const;\n-173 template <typename VERTEX, typename MASK>\n-_\b1_\b7_\b4 void _\ba_\bs_\bs_\bi_\bg_\bn_\bC_\br_\be_\ba_\bs_\be_\bM_\ba_\bs_\bk_\bF_\bo_\br_\bV_\be_\br_\bt_\be_\bx(VERTEX const& edge, MASK& mask, int const\n-creaseEnds[2]) const;\n-175 template <typename VERTEX, typename MASK>\n-_\b1_\b7_\b6 void _\ba_\bs_\bs_\bi_\bg_\bn_\bS_\bm_\bo_\bo_\bt_\bh_\bM_\ba_\bs_\bk_\bF_\bo_\br_\bV_\be_\br_\bt_\be_\bx(VERTEX const& edge, MASK& mask) const;\n-177\n-178 //\n-179 // Limit masks for position and tangents at vertices -- three cases for\n-each:\n-180 //\n-181 template <typename VERTEX, typename MASK>\n-_\b1_\b8_\b2 void _\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\br_\bn_\be_\br_\bL_\bi_\bm_\bi_\bt_\bM_\ba_\bs_\bk(VERTEX const& vertex, MASK& pos) const;\n-183 template <typename VERTEX, typename MASK>\n-_\b1_\b8_\b4 void _\ba_\bs_\bs_\bi_\bg_\bn_\bC_\br_\be_\ba_\bs_\be_\bL_\bi_\bm_\bi_\bt_\bM_\ba_\bs_\bk(VERTEX const& vertex, MASK& pos, int const\n-creaseEnds[2]) const;\n-185 template <typename VERTEX, typename MASK>\n-_\b1_\b8_\b6 void _\ba_\bs_\bs_\bi_\bg_\bn_\bS_\bm_\bo_\bo_\bt_\bh_\bL_\bi_\bm_\bi_\bt_\bM_\ba_\bs_\bk(VERTEX const& vertex, MASK& pos) const;\n-187\n-188 template <typename VERTEX, typename MASK>\n-_\b1_\b8_\b9 void _\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\br_\bn_\be_\br_\bL_\bi_\bm_\bi_\bt_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bM_\ba_\bs_\bk_\bs(VERTEX const& vertex, MASK& tan1, MASK&\n-tan2) const;\n-190 template <typename VERTEX, typename MASK>\n-_\b1_\b9_\b1 void _\ba_\bs_\bs_\bi_\bg_\bn_\bC_\br_\be_\ba_\bs_\be_\bL_\bi_\bm_\bi_\bt_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bM_\ba_\bs_\bk_\bs(VERTEX const& vertex, MASK& tan1, MASK&\n-tan2, int const creaseEnds[2]) const;\n-192 template <typename VERTEX, typename MASK>\n-_\b1_\b9_\b3 void _\ba_\bs_\bs_\bi_\bg_\bn_\bS_\bm_\bo_\bo_\bt_\bh_\bL_\bi_\bm_\bi_\bt_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bM_\ba_\bs_\bk_\bs(VERTEX const& vertex, MASK& tan1, MASK&\n-tan2) const;\n-194\n-195private:\n-196 _\bO_\bp_\bt_\bi_\bo_\bn_\bs _options;\n-197\n-198protected:\n-199\n-200 //\n-201 // Internal implementation support:\n-202 //\n-203 // We need a local \"mask\" class to be declared locally within the vertex-\n-vertex mask query\n-204 // to hold one of the two possible masks required and to combine the local\n-mask with the mask\n-205 // the caller provides. It has been parameterized by <WEIGHT> so that a\n-version compatible\n-206 // with the caller's mask class is created.\n-207 //\n-208 template <typename WEIGHT>\n-_\b2_\b0_\b9 class _\bL_\bo_\bc_\ba_\bl_\bM_\ba_\bs_\bk {\n-210\n-211 public:\n-_\b2_\b1_\b2 typedef WEIGHT _\bW_\be_\bi_\bg_\bh_\bt;\n-213\n-214 public:\n-_\b2_\b1_\b5 _\bL_\bo_\bc_\ba_\bl_\bM_\ba_\bs_\bk(_\bW_\be_\bi_\bg_\bh_\bt* v, _\bW_\be_\bi_\bg_\bh_\bt* e, _\bW_\be_\bi_\bg_\bh_\bt* f) : _vWeights(v), _eWeights(e),\n-_fWeights(f) { }\n-_\b2_\b1_\b6 _\b~_\bL_\bo_\bc_\ba_\bl_\bM_\ba_\bs_\bk() { }\n-217\n-218 public:\n-219\n-220 //\n-221 // Methods required for general mask assignments and queries:\n-222 //\n-_\b2_\b2_\b3 int _\bG_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\be_\bx_\bW_\be_\bi_\bg_\bh_\bt_\bs() const { return _vCount; }\n-_\b2_\b2_\b4 int _\bG_\be_\bt_\bN_\bu_\bm_\bE_\bd_\bg_\be_\bW_\be_\bi_\bg_\bh_\bt_\bs() const { return _eCount; }\n-_\b2_\b2_\b5 int _\bG_\be_\bt_\bN_\bu_\bm_\bF_\ba_\bc_\be_\bW_\be_\bi_\bg_\bh_\bt_\bs() const { return _fCount; }\n-226\n-_\b2_\b2_\b7 void _\bS_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\be_\bx_\bW_\be_\bi_\bg_\bh_\bt_\bs(int count) { _vCount = count; }\n-_\b2_\b2_\b8 void _\bS_\be_\bt_\bN_\bu_\bm_\bE_\bd_\bg_\be_\bW_\be_\bi_\bg_\bh_\bt_\bs( int count) { _eCount = count; }\n-_\b2_\b2_\b9 void _\bS_\be_\bt_\bN_\bu_\bm_\bF_\ba_\bc_\be_\bW_\be_\bi_\bg_\bh_\bt_\bs( int count) { _fCount = count; }\n-230\n-_\b2_\b3_\b1 _\bW_\be_\bi_\bg_\bh_\bt const& _\bV_\be_\br_\bt_\be_\bx_\bW_\be_\bi_\bg_\bh_\bt(int index) const { return _vWeights[index]; }\n-_\b2_\b3_\b2 _\bW_\be_\bi_\bg_\bh_\bt const& _\bE_\bd_\bg_\be_\bW_\be_\bi_\bg_\bh_\bt( int index) const { return _eWeights[index]; }\n-_\b2_\b3_\b3 _\bW_\be_\bi_\bg_\bh_\bt const& _\bF_\ba_\bc_\be_\bW_\be_\bi_\bg_\bh_\bt( int index) const { return _fWeights[index]; }\n-234\n-_\b2_\b3_\b5 _\bW_\be_\bi_\bg_\bh_\bt& _\bV_\be_\br_\bt_\be_\bx_\bW_\be_\bi_\bg_\bh_\bt(int index) { return _vWeights[index]; }\n-_\b2_\b3_\b6 _\bW_\be_\bi_\bg_\bh_\bt& _\bE_\bd_\bg_\be_\bW_\be_\bi_\bg_\bh_\bt( int index) { return _eWeights[index]; }\n-_\b2_\b3_\b7 _\bW_\be_\bi_\bg_\bh_\bt& _\bF_\ba_\bc_\be_\bW_\be_\bi_\bg_\bh_\bt( int index) { return _fWeights[index]; }\n-238\n-_\b2_\b3_\b9 bool _\bA_\br_\be_\bF_\ba_\bc_\be_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bF_\bo_\br_\bF_\ba_\bc_\be_\bC_\be_\bn_\bt_\be_\br_\bs() const { return _fWeightsForCenters; }\n-_\b2_\b4_\b0 void _\bS_\be_\bt_\bF_\ba_\bc_\be_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bF_\bo_\br_\bF_\ba_\bc_\be_\bC_\be_\bn_\bt_\be_\br_\bs(bool on) { _fWeightsForCenters = on; }\n-241\n-242 public:\n-243\n-244 //\n-245 // Additional methods -- mainly the blending method for vertex-vertex\n-masks:\n-246 //\n-247 template <typename USER_MASK>\n-248 inline void\n-_\b2_\b4_\b9 _\bC_\bo_\bm_\bb_\bi_\bn_\be_\bV_\be_\br_\bt_\be_\bx_\bV_\be_\br_\bt_\be_\bx_\bM_\ba_\bs_\bk_\bs(_\bW_\be_\bi_\bg_\bh_\bt thisCoeff, _\bW_\be_\bi_\bg_\bh_\bt dstCoeff, USER_MASK& dst)\n-const {\n-250\n-251 //\n-252 // This implementation is convoluted by the potential sparsity of each\n-mask. Since\n-253 // it is specific to a vertex-vertex mask, we are guaranteed to have\n-exactly one\n-254 // vertex-weight for both masks, but the edge- and face-weights are\n-optional. The\n-255 // child mask (the \"source\") should have a superset of the weights of the\n-parent\n-256 // (the \"destination\") given its reduced sharpness, so we fortunately don't\n-need to\n-257 // test all permutations.\n-258 //\n-259 dst.VertexWeight(0) = dstCoeff * dst.VertexWeight(0) + thisCoeff * this-\n->_\bV_\be_\br_\bt_\be_\bx_\bW_\be_\bi_\bg_\bh_\bt(0);\n-260\n-261 int edgeWeightCount = this->_\bG_\be_\bt_\bN_\bu_\bm_\bE_\bd_\bg_\be_\bW_\be_\bi_\bg_\bh_\bt_\bs();\n-262 if (edgeWeightCount) {\n-263 if (dst.GetNumEdgeWeights() == 0) {\n-264 dst.SetNumEdgeWeights(edgeWeightCount);\n-265 for (int i = 0; i < edgeWeightCount; ++i) {\n-266 dst.EdgeWeight(i) = thisCoeff * this->_\bE_\bd_\bg_\be_\bW_\be_\bi_\bg_\bh_\bt(i);\n-267 }\n-268 } else {\n-269 for (int i = 0; i < edgeWeightCount; ++i) {\n-270 dst.EdgeWeight(i) = dstCoeff * dst.EdgeWeight(i) + thisCoeff * this-\n->_\bE_\bd_\bg_\be_\bW_\be_\bi_\bg_\bh_\bt(i);\n-271 }\n-272 }\n-273 }\n-274\n-275 int faceWeightCount = this->_\bG_\be_\bt_\bN_\bu_\bm_\bF_\ba_\bc_\be_\bW_\be_\bi_\bg_\bh_\bt_\bs();\n-276 if (faceWeightCount) {\n-277 //\n-278 // If combining face weights, be sure their interpretation (i.e. face-\n-centers\n-279 // or opposite vertices) is properly set in the destination mask:\n-280 //\n-281 if (dst.GetNumFaceWeights() == 0) {\n-282 dst.SetNumFaceWeights(faceWeightCount);\n-283 dst.SetFaceWeightsForFaceCenters(this->_\bA_\br_\be_\bF_\ba_\bc_\be_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bF_\bo_\br_\bF_\ba_\bc_\be_\bC_\be_\bn_\bt_\be_\br_\bs());\n-284\n-285 for (int i = 0; i < faceWeightCount; ++i) {\n-286 dst.FaceWeight(i) = thisCoeff * this->_\bF_\ba_\bc_\be_\bW_\be_\bi_\bg_\bh_\bt(i);\n-287 }\n-288 } else {\n-289 assert(this->_\bA_\br_\be_\bF_\ba_\bc_\be_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bF_\bo_\br_\bF_\ba_\bc_\be_\bC_\be_\bn_\bt_\be_\br_\bs() ==\n-dst.AreFaceWeightsForFaceCenters());\n-290\n-291 for (int i = 0; i < faceWeightCount; ++i) {\n-292 dst.FaceWeight(i) = dstCoeff * dst.FaceWeight(i) + thisCoeff * this-\n->_\bF_\ba_\bc_\be_\bW_\be_\bi_\bg_\bh_\bt(i);\n-293 }\n-294 }\n-295 }\n-296 }\n-297\n-298 private:\n-299 _\bW_\be_\bi_\bg_\bh_\bt* _vWeights;\n-300 _\bW_\be_\bi_\bg_\bh_\bt* _eWeights;\n-301 _\bW_\be_\bi_\bg_\bh_\bt* _fWeights;\n-302 int _vCount;\n-303 int _eCount;\n-304 int _fCount;\n-305 bool _fWeightsForCenters;\n-306 };\n-307};\n-308\n-309\n-310//\n-311// Crease and corner masks are common to most schemes -- the rest need to be\n-provided\n-312// for each Scheme specialization.\n-313//\n-314template <SchemeType SCHEME>\n-315template <typename EDGE, typename MASK>\n-316inline void\n-_\b3_\b1_\b7_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\br_\be_\ba_\bs_\be_\bM_\ba_\bs_\bk_\bF_\bo_\br_\bE_\bd_\bg_\be(EDGE const&, MASK& mask) const {\n-318\n-319 mask.SetNumVertexWeights(2);\n-320 mask.SetNumEdgeWeights(0);\n-321 mask.SetNumFaceWeights(0);\n-322 mask.SetFaceWeightsForFaceCenters(false);\n-323\n-324 mask.VertexWeight(0) = 0.5f;\n-325 mask.VertexWeight(1) = 0.5f;\n-326}\n-327\n-328template <SchemeType SCHEME>\n-329template <typename VERTEX, typename MASK>\n-330inline void\n-_\b3_\b3_\b1_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\br_\bn_\be_\br_\bM_\ba_\bs_\bk_\bF_\bo_\br_\bV_\be_\br_\bt_\be_\bx(VERTEX const&, MASK& mask) const {\n-332\n-333 mask.SetNumVertexWeights(1);\n-334 mask.SetNumEdgeWeights(0);\n-335 mask.SetNumFaceWeights(0);\n-336 mask.SetFaceWeightsForFaceCenters(false);\n-337\n-338 mask.VertexWeight(0) = 1.0f;\n-339}\n-340\n-341\n-342//\n-343// The computation of a face-vertex mask is trivial and consistent for all\n-schemes:\n-344//\n-345template <SchemeType SCHEME>\n-346template <typename FACE, typename MASK>\n-347void\n-_\b3_\b4_\b8_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b>_\b:_\b:_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\be_\bx_\bM_\ba_\bs_\bk(FACE const& face, MASK& mask) const {\n-349\n-350 int vertCount = face.GetNumVertices();\n-351\n-352 mask.SetNumVertexWeights(vertCount);\n-353 mask.SetNumEdgeWeights(0);\n-354 mask.SetNumFaceWeights(0);\n-355 mask.SetFaceWeightsForFaceCenters(false);\n-356\n-357 typename MASK::Weight vWeight = 1.0f / (typename MASK::Weight) vertCount;\n-358 for (int i = 0; i < vertCount; ++i) {\n-359 mask.VertexWeight(i) = vWeight;\n-360 }\n-361}\n-362\n-363\n-364//\n-365// The computation of an edge-vertex mask requires inspection of sharpness\n-values to\n-366// determine if smooth or a crease, and also to detect and apply a\n-transition from a\n-367// crease to smooth. Using the protected methods to assign the specific\n-masks (only\n-368// two -- smooth or crease) this implementation should serve all non-linear\n-schemes\n-369// (currently Catmark and Loop) and only needs to be specialized for\n-Bilinear to\n-370// trivialize it to the crease case.\n-371//\n-372// The implementation here is slightly complicated by combining two\n-scenarios into a\n-373// single implementation -- either the caller knows the parent and child\n-rules and\n-374// provides them, or they don't and the Rules have to be determined from\n-sharpness\n-375// values. Both cases include quick return once the parent is determined to\n-be\n-376// smooth or the child a crease, leaving the transitional case remaining.\n-377//\n-378// The overall process is as follows:\n-379//\n-380// - quickly detect the most common specified or detected Smooth case and\n-return\n-381// - quickly detect a full Crease by child Rule assignment and return\n-382// - determine from sharpness if unspecified child is a crease -- return if\n-so\n-383// - compute smooth mask for child and combine with crease from parent\n-384//\n-385// Usage of the parent Rule here allows some misuse in that only three of\n-five possible\n-386// assignments are legitimate for the parent and four for the child (Dart\n-being only\n-387// valid for the child and Corner for neither). Results are undefined in\n-these cases.\n-388//\n-389template <SchemeType SCHEME>\n-390template <typename EDGE, typename MASK>\n-391void\n-_\b3_\b9_\b2_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b>_\b:_\b:_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bd_\bg_\be_\bV_\be_\br_\bt_\be_\bx_\bM_\ba_\bs_\bk(EDGE const& edge,\n-393 MASK& mask,\n-394 _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be parentRule,\n-395 _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be childRule) const {\n-396\n-397 //\n-398 // If the parent was specified or determined to be Smooth, we can quickly\n-return\n-399 // with a Smooth mask. Otherwise the parent is a crease -- if the child was\n-400 // also specified to be a crease, we can quickly return with a Crease mask.\n-401 //\n-402 if ((parentRule == _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bS_\bM_\bO_\bO_\bT_\bH) ||\n-403 ((parentRule == _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bU_\bN_\bK_\bN_\bO_\bW_\bN) && (edge.GetSharpness() <= 0.0f))) {\n-404 assignSmoothMaskForEdge(edge, mask);\n-405 return;\n-406 }\n-407 if (childRule == _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bC_\bR_\bE_\bA_\bS_\bE) {\n-408 assignCreaseMaskForEdge(edge, mask);\n-409 return;\n-410 }\n-411\n-412 //\n-413 // We have a Crease on the parent and the child was either specified as\n-Smooth\n-414 // or was not specified at all -- deal with the unspecified case first\n-(again\n-415 // returning a Crease mask if the child is also determined to be a Crease)\n-and\n-416 // continue if we have a transition to Smooth.\n-417 //\n-418 // Note when qualifying the child that if the parent sharpness > 1.0,\n-regardless\n-419 // of the creasing method, whether the child sharpness values decay to zero\n-is\n-420 // irrelevant -- the fractional weight for such a case (the value of the\n-parent\n-421 // sharpness) is > 1.0, and when clamped to 1 effectively yields a full\n-crease.\n-422 //\n-423 if (childRule == _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bU_\bN_\bK_\bN_\bO_\bW_\bN) {\n-424 _\bC_\br_\be_\ba_\bs_\be crease(_options);\n-425\n-426 bool childIsCrease = false;\n-427 if (parentRule == _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bC_\bR_\bE_\bA_\bS_\bE) {\n-428 // Child unknown as default value but parent Rule specified as Crease\n-429 childIsCrease = true;\n-430 } else if (edge.GetSharpness() >= 1.0f) {\n-431 // Sharpness >= 1.0 always a crease -- see note above\n-432 childIsCrease = true;\n-433 } else if (crease._\bI_\bs_\bU_\bn_\bi_\bf_\bo_\br_\bm()) {\n-434 // Sharpness < 1.0 is guaranteed to decay to 0.0 for Uniform child edges\n-435 childIsCrease = false;\n-436 } else {\n-437 // Sharpness <= 1.0 does not necessarily decay to 0.0 for both child\n-edges...\n-438 float cEdgeSharpness[2];\n-439 edge.GetChildSharpnesses(crease, cEdgeSharpness);\n-440 childIsCrease = (cEdgeSharpness[0] > 0.0f) && (cEdgeSharpness[1] > 0.0f);\n-441 }\n-442 if (childIsCrease) {\n-443 assignCreaseMaskForEdge(edge, mask);\n-444 return;\n-445 }\n-446 }\n-447\n-448 //\n-449 // We are now left with the Crease-to-Smooth case -- compute the Smooth\n-mask\n-450 // for the child and augment it with the transitional Crease of the parent.\n-451 //\n-452 // A general combination of separately assigned masks here (as done in the\n-vertex-\n-453 // vertex case) is overkill -- trivially combine the 0.5f vertex\n-coefficient for\n-454 // the Crease of the parent with the vertex weights and attenuate the face\n-weights\n-455 // accordingly.\n-456 //\n-457 assignSmoothMaskForEdge(edge, mask);\n-458\n-459 typedef typename MASK::Weight Weight;\n-460\n-461 Weight pWeight = edge.GetSharpness();\n-462 Weight cWeight = 1.0f - pWeight;\n-463\n-464 mask.VertexWeight(0) = pWeight * 0.5f + cWeight * mask.VertexWeight(0);\n-465 mask.VertexWeight(1) = pWeight * 0.5f + cWeight * mask.VertexWeight(1);\n-466\n-467 int faceCount = mask.GetNumFaceWeights();\n-468 for (int i = 0; i < faceCount; ++i) {\n-469 mask.FaceWeight(i) *= cWeight;\n-470 }\n-471}\n-472\n-473//\n-474// The computation of a vertex-vertex mask requires inspection of creasing\n-sharpness values\n-475// to determine what subdivision Rules apply to the parent and its child\n-vertex, and also to\n-476// detect and apply a transition between two differing Rules. Using the\n-protected methods to\n-477// assign specific masks, this implementation should serve all non-linear\n-schemes (currently\n-478// Catmark and Loop) and only needs to be specialized for Bilinear to remove\n-all unnecessary\n-479// complexity relating to creasing, Rules, etc.\n-480//\n-481// The implementation here is slightly complicated by combining two\n-scenarios into one --\n-482// either the caller knows the parent and child rules and provides them, or\n-they don't and\n-483// the Rules have to be determined from sharpness values. Even when the\n-Rules are known and\n-484// provided though, there are cases where the parent and child sharpness\n-values need to be\n-485// identified, so accounting for the unknown Rules too is not much of an\n-added complication.\n-486//\n-487// The benefit of supporting specified Rules is that they can often be\n-trivially\n-488// determined from context (e.g. a vertex derived from a face at a previous\n-level will always\n-489// be smooth) rather than more generally, and at greater cost, inspecting\n-neighboring and\n-490// they are often the same for parent and child.\n-491//\n-492// The overall process is as follows:\n-493//\n-494// - quickly detect the most common Smooth case when specified and return\n-495// - determine if sharpness for parent is required and gather if so\n-496// - if unspecified, determine the parent rule\n-497// - assign mask for the parent rule -- returning if Smooth/Dart\n-498// - return if child rule matches parent\n-499// - gather sharpness for child to determine or combine child rule\n-500// - if unspecified, determine the child rule, returning if it matches\n-parent\n-501// - assign local mask for child rule\n-502// - combine local child mask with the parent mask\n-503//\n-504// Remember -- if the parent rule is specified but the child is not, this\n-implies only one\n-505// of the two optional rules was specified and is meant to indicate there is\n-no transition,\n-506// so the child rule should be assigned to be the same (wish the compiler\n-would allow this\n-507// in default value assignment).\n-508//\n-509template <SchemeType SCHEME>\n-510template <typename VERTEX, typename MASK>\n-511void\n-_\b5_\b1_\b2_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b>_\b:_\b:_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bV_\be_\br_\bt_\be_\bx_\bV_\be_\br_\bt_\be_\bx_\bM_\ba_\bs_\bk(VERTEX const& vertex,\n-513 MASK& mask,\n-514 _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be pRule,\n-515 _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be cRule) const {\n-516\n-517 // Quick assignment and return for the most common case:\n-518 if ((pRule == _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bS_\bM_\bO_\bO_\bT_\bH) || (pRule == _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bD_\bA_\bR_\bT)) {\n-519 assignSmoothMaskForVertex(vertex, mask);\n-520 return;\n-521 }\n-522 // If unspecified, assign the child rule to match the parent rule if\n-specified:\n-523 if ((cRule == _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bU_\bN_\bK_\bN_\bO_\bW_\bN) && (pRule != _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bU_\bN_\bK_\bN_\bO_\bW_\bN)) {\n-524 cRule = pRule;\n-525 }\n-526 int valence = vertex.GetNumEdges();\n-527\n-528 //\n-529 // Determine if we need the parent edge sharpness values -- identify/gather\n-if so\n-530 // and use it to compute the parent rule if unspecified:\n-531 //\n-532 float * pEdgeSharpnessBuffer = (float *)alloca(valence*sizeof(float)),\n-533 * pEdgeSharpness = 0,\n-534 pVertexSharpness = 0.0f;\n-535\n-536 bool requireParentSharpness = (pRule == _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bU_\bN_\bK_\bN_\bO_\bW_\bN) ||\n-537 (pRule == _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bC_\bR_\bE_\bA_\bS_\bE) ||\n-538 (pRule != cRule);\n-539 if (requireParentSharpness) {\n-540 pVertexSharpness = vertex.GetSharpness();\n-541 pEdgeSharpness = vertex.GetSharpnessPerEdge(pEdgeSharpnessBuffer);\n-542\n-543 if (pRule == _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bU_\bN_\bK_\bN_\bO_\bW_\bN) {\n-544 pRule = _\bC_\br_\be_\ba_\bs_\be(_options)._\bD_\be_\bt_\be_\br_\bm_\bi_\bn_\be_\bV_\be_\br_\bt_\be_\bx_\bV_\be_\br_\bt_\be_\bx_\bR_\bu_\bl_\be(pVertexSharpness,\n-valence, pEdgeSharpness);\n-545 }\n-546 }\n-547 if ((pRule == _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bS_\bM_\bO_\bO_\bT_\bH) || (pRule == _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bD_\bA_\bR_\bT)) {\n-548 assignSmoothMaskForVertex(vertex, mask);\n-549 return; // As done on entry, we can return immediately if parent is Smooth/\n-Dart\n-550 } else if (pRule == _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bC_\bR_\bE_\bA_\bS_\bE) {\n-551 int creaseEnds[2];\n-552 _\bC_\br_\be_\ba_\bs_\be(_options)._\bG_\be_\bt_\bS_\bh_\ba_\br_\bp_\bE_\bd_\bg_\be_\bP_\ba_\bi_\br_\bO_\bf_\bC_\br_\be_\ba_\bs_\be(pEdgeSharpness, valence,\n-creaseEnds);\n-553\n-554 assignCreaseMaskForVertex(vertex, mask, creaseEnds);\n-555 } else {\n-556 assignCornerMaskForVertex(vertex, mask);\n-557 }\n-558 if (cRule == pRule) return;\n-559\n-560 //\n-561 // Identify/gather child sharpness to combine masks for the two differing\n-Rules:\n-562 //\n-563 _\bC_\br_\be_\ba_\bs_\be crease(_options);\n-564\n-565 float * cEdgeSharpnessBuffer = (float *)alloca(valence*sizeof(float)),\n-566 * cEdgeSharpness = vertex.GetChildSharpnessPerEdge(crease,\n-cEdgeSharpnessBuffer),\n-567 cVertexSharpness = vertex.GetChildSharpness(crease);\n-568\n-569 if (cRule == _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bU_\bN_\bK_\bN_\bO_\bW_\bN) {\n-570 cRule = crease._\bD_\be_\bt_\be_\br_\bm_\bi_\bn_\be_\bV_\be_\br_\bt_\be_\bx_\bV_\be_\br_\bt_\be_\bx_\bR_\bu_\bl_\be(cVertexSharpness, valence,\n-cEdgeSharpness);\n-571 if (cRule == pRule) return;\n-572 }\n-573\n-574 //\n-575 // Initialize a local child mask, compute the fractional weight from parent\n-and child\n-576 // sharpness values and combine the two masks:\n-577 //\n-578 typedef typename MASK::Weight Weight;\n-579\n-580 Weight * cMaskWeights = (Weight *)alloca((1 + 2 * valence)*sizeof(Weight));\n-581 _\bL_\bo_\bc_\ba_\bl_\bM_\ba_\bs_\bk_\b<_\bW_\be_\bi_\bg_\bh_\bt_\b> cMask(cMaskWeights, cMaskWeights + 1, cMaskWeights + 1 +\n-valence);\n-582\n-583 if ((cRule == _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bS_\bM_\bO_\bO_\bT_\bH) || (cRule == _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bD_\bA_\bR_\bT)) {\n-584 assignSmoothMaskForVertex(vertex, cMask);\n-585 } else if (cRule == _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bC_\bR_\bE_\bA_\bS_\bE) {\n-586 int creaseEnds[2];\n-587 _\bC_\br_\be_\ba_\bs_\be(_options)._\bG_\be_\bt_\bS_\bh_\ba_\br_\bp_\bE_\bd_\bg_\be_\bP_\ba_\bi_\br_\bO_\bf_\bC_\br_\be_\ba_\bs_\be(cEdgeSharpness, valence,\n-creaseEnds);\n-588\n-589 assignCreaseMaskForVertex(vertex, cMask, creaseEnds);\n-590 } else {\n-591 assignCornerMaskForVertex(vertex, cMask);\n-592 }\n-593\n-594 Weight pWeight = crease._\bC_\bo_\bm_\bp_\bu_\bt_\be_\bF_\br_\ba_\bc_\bt_\bi_\bo_\bn_\ba_\bl_\bW_\be_\bi_\bg_\bh_\bt_\bA_\bt_\bV_\be_\br_\bt_\be_\bx(pVertexSharpness,\n-cVertexSharpness,\n-595 valence, pEdgeSharpness, cEdgeSharpness);\n-596 Weight cWeight = 1.0f - pWeight;\n-597\n-598 cMask._\bC_\bo_\bm_\bb_\bi_\bn_\be_\bV_\be_\br_\bt_\be_\bx_\bV_\be_\br_\bt_\be_\bx_\bM_\ba_\bs_\bk_\bs(cWeight, pWeight, mask);\n-599}\n-600\n-601//\n-602// The computation of limit masks for vertices:\n-603//\n-604template <SchemeType SCHEME>\n-605template <typename VERTEX, typename MASK>\n-606void\n-_\b6_\b0_\b7_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b>_\b:_\b:_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bV_\be_\br_\bt_\be_\bx_\bL_\bi_\bm_\bi_\bt_\bM_\ba_\bs_\bk(VERTEX const& vertex,\n-608 MASK& mask,\n-609 _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be rule) const {\n-610\n-611 if ((rule == _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bS_\bM_\bO_\bO_\bT_\bH) || (rule == _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bD_\bA_\bR_\bT)) {\n-612 assignSmoothLimitMask(vertex, mask);\n-613 } else if (rule == _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bC_\bR_\bE_\bA_\bS_\bE) {\n-614 float * edgeSharpness = (float *)alloca(vertex.GetNumEdges() * sizeof\n-(float));\n-615 vertex.GetSharpnessPerEdge(edgeSharpness);\n-616\n-617 int creaseEnds[2];\n-618 _\bC_\br_\be_\ba_\bs_\be(_options)._\bG_\be_\bt_\bS_\bh_\ba_\br_\bp_\bE_\bd_\bg_\be_\bP_\ba_\bi_\br_\bO_\bf_\bC_\br_\be_\ba_\bs_\be(edgeSharpness, vertex.GetNumEdges\n-(), creaseEnds);\n-619\n-620 assignCreaseLimitMask(vertex, mask, creaseEnds);\n-621 } else {\n-622 assignCornerLimitMask(vertex, mask);\n-623 }\n-624}\n-625\n-626template <SchemeType SCHEME>\n-627template <typename VERTEX, typename MASK>\n-628void\n-_\b6_\b2_\b9_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b>_\b:_\b:_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bV_\be_\br_\bt_\be_\bx_\bL_\bi_\bm_\bi_\bt_\bM_\ba_\bs_\bk(VERTEX const& vertex,\n-630 MASK& posMask,\n-631 MASK& tan1Mask,\n-632 MASK& tan2Mask,\n-633 _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be rule) const {\n-634\n-635 if ((rule == _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bS_\bM_\bO_\bO_\bT_\bH) || (rule == _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bD_\bA_\bR_\bT)) {\n-636 assignSmoothLimitMask(vertex, posMask);\n-637 assignSmoothLimitTangentMasks(vertex, tan1Mask, tan2Mask);\n-638 } else if (rule == _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bC_\bR_\bE_\bA_\bS_\bE) {\n-639 float * edgeSharpness = (float *)alloca(vertex.GetNumEdges() * sizeof\n-(float));\n-640 vertex.GetSharpnessPerEdge(edgeSharpness);\n-641\n-642 int creaseEnds[2];\n-643 _\bC_\br_\be_\ba_\bs_\be(_options)._\bG_\be_\bt_\bS_\bh_\ba_\br_\bp_\bE_\bd_\bg_\be_\bP_\ba_\bi_\br_\bO_\bf_\bC_\br_\be_\ba_\bs_\be(edgeSharpness, vertex.GetNumEdges\n-(), creaseEnds);\n-644\n-645 assignCreaseLimitMask(vertex, posMask, creaseEnds);\n-646 assignCreaseLimitTangentMasks(vertex, tan1Mask, tan2Mask, creaseEnds);\n-647 } else {\n-648 assignCornerLimitMask(vertex, posMask);\n-649 assignCornerLimitTangentMasks(vertex, tan1Mask, tan2Mask);\n-650 }\n-651}\n-652\n-653\n-654} // end namespace sdc\n-655\n-656} // end namespace OPENSUBDIV_VERSION\n-657using namespace OPENSUBDIV_VERSION;\n-658} // end namespace OpenSubdiv\n-659\n-660#endif /* OPENSUBDIV3_SDC_SCHEME_H */\n+83#endif // OPENSUBDIV3_OSD_CPU_VERTEX_BUFFER_H\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bp_\bl_\bi_\bt\n-Split\n-Enumerated type for all face splitting schemes.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b4_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be\n-Types, constants and utilities related to semi-sharp creasing \u00e2\u0080\u0093 whose\n-implementation is independent o...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b6_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be\n-Rule\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b8_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bD_\bA_\bR_\bT\n-@ RULE_DART\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b8_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bS_\bM_\bO_\bO_\bT_\bH\n-@ RULE_SMOOTH\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b8_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bC_\bR_\bE_\bA_\bS_\bE\n-@ RULE_CREASE\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b8_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bU_\bN_\bK_\bN_\bO_\bW_\bN\n-@ RULE_UNKNOWN\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b8_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bG_\be_\bt_\bS_\bh_\ba_\br_\bp_\bE_\bd_\bg_\be_\bP_\ba_\bi_\br_\bO_\bf_\bC_\br_\be_\ba_\bs_\be\n-void GetSharpEdgePairOfCrease(float const *incidentEdgeSharpness, int\n-incidentEdgeCount, int sharpEdgePair[2]) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b2_\b2_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bD_\be_\bt_\be_\br_\bm_\bi_\bn_\be_\bV_\be_\br_\bt_\be_\bx_\bV_\be_\br_\bt_\be_\bx_\bR_\bu_\bl_\be\n-Rule DetermineVertexVertexRule(float vertexSharpness, int incidentEdgeCount,\n-float const *incidentEdgeSharpness) const\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bI_\bs_\bU_\bn_\bi_\bf_\bo_\br_\bm\n-bool IsUniform() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b9_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bF_\br_\ba_\bc_\bt_\bi_\bo_\bn_\ba_\bl_\bW_\be_\bi_\bg_\bh_\bt_\bA_\bt_\bV_\be_\br_\bt_\be_\bx\n-float ComputeFractionalWeightAtVertex(float vertexSharpness, float\n-childVertexSharpness, int incidentEdgeCount, float const\n-*incidentEdgeSharpness, float const *childEdgesSharpness) const\n-Transitional weighting: When the rules applicable to a parent vertex and its\n-child differ,...\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n-All supported options applying to subdivision scheme.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b5_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be\n-Scheme is a class template which provides all implementation for the\n-subdivision schemes supported by...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b6_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bS_\bm_\bo_\bo_\bt_\bh_\bM_\ba_\bs_\bk_\bF_\bo_\br_\bE_\bd_\bg_\be\n-void assignSmoothMaskForEdge(EDGE const &edge, MASK &mask) const\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bG_\be_\bt_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\bi_\bc_\ba_\bl_\bS_\bp_\bl_\bi_\bt_\bT_\by_\bp_\be\n-static Split GetTopologicalSplitType()\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\br_\be_\ba_\bs_\be_\bM_\ba_\bs_\bk_\bF_\bo_\br_\bV_\be_\br_\bt_\be_\bx\n-void assignCreaseMaskForVertex(VERTEX const &edge, MASK &mask, int const\n-creaseEnds[2]) const\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bV_\be_\br_\bt_\be_\bx_\bV_\be_\br_\bt_\be_\bx_\bM_\ba_\bs_\bk\n-void ComputeVertexVertexMask(VERTEX const &vertexNeighborhood, MASK\n-&vertexVertexMask, Crease::Rule parentRule=Crease::RULE_UNKNOWN, Crease::Rule\n-childRule=Crease::RULE_UNKNOWN) const\n-Vertex-vertex masks If known, a single Rule or pair of Rules can be specified\n-(indicating a crease tr...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b5_\b1_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bV_\be_\br_\bt_\be_\bx_\bL_\bi_\bm_\bi_\bt_\bM_\ba_\bs_\bk\n-void ComputeVertexLimitMask(VERTEX const &vertexNeighborhood, MASK\n-&positionMask, Crease::Rule vertexRule) const\n-Limit masks for vertices \u00e2\u0080\u0093 position and tangents These presume that a vertex\n-is suitably isolated for...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b6_\b0_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\br_\be_\ba_\bs_\be_\bL_\bi_\bm_\bi_\bt_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bM_\ba_\bs_\bk_\bs\n-void assignCreaseLimitTangentMasks(VERTEX const &vertex, MASK &tan1, MASK\n-&tan2, int const creaseEnds[2]) const\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bG_\be_\bt_\bR_\be_\bg_\bu_\bl_\ba_\br_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be\n-static int GetRegularFaceSize()\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\br_\be_\ba_\bs_\be_\bM_\ba_\bs_\bk_\bF_\bo_\br_\bE_\bd_\bg_\be\n-void assignCreaseMaskForEdge(EDGE const &edge, MASK &mask) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b3_\b1_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bd_\bg_\be_\bV_\be_\br_\bt_\be_\bx_\bM_\ba_\bs_\bk\n-void ComputeEdgeVertexMask(EDGE const &edgeNeighborhood, MASK &edgeVertexMask,\n-Crease::Rule parentRule=Crease::RULE_UNKNOWN, Crease::Rule childRule=Crease::\n-RULE_UNKNOWN) const\n-Edge-vertex masks If known, the Rule for the edge and/or the derived vertex can\n-be specified to accel...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b3_\b9_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be\n-Scheme()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b7_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bS_\bm_\bo_\bo_\bt_\bh_\bL_\bi_\bm_\bi_\bt_\bM_\ba_\bs_\bk\n-void assignSmoothLimitMask(VERTEX const &vertex, MASK &pos) const\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bh_\bo_\bo_\bd_\bS_\bi_\bz_\be\n-static int GetLocalNeighborhoodSize()\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\br_\bn_\be_\br_\bM_\ba_\bs_\bk_\bF_\bo_\br_\bV_\be_\br_\bt_\be_\bx\n-void assignCornerMaskForVertex(VERTEX const &edge, MASK &mask) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b3_\b3_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\br_\be_\ba_\bs_\be_\bL_\bi_\bm_\bi_\bt_\bM_\ba_\bs_\bk\n-void assignCreaseLimitMask(VERTEX const &vertex, MASK &pos, int const\n-creaseEnds[2]) const\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bS_\bm_\bo_\bo_\bt_\bh_\bM_\ba_\bs_\bk_\bF_\bo_\br_\bV_\be_\br_\bt_\be_\bx\n-void assignSmoothMaskForVertex(VERTEX const &edge, MASK &mask) const\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bG_\be_\bt_\bR_\be_\bg_\bu_\bl_\ba_\br_\bV_\be_\br_\bt_\be_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be\n-static int GetRegularVertexValence()\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bG_\be_\bt_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n-Options GetOptions() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b7_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bS_\bm_\bo_\bo_\bt_\bh_\bL_\bi_\bm_\bi_\bt_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bM_\ba_\bs_\bk_\bs\n-void assignSmoothLimitTangentMasks(VERTEX const &vertex, MASK &tan1, MASK\n-&tan2) const\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\br_\bn_\be_\br_\bL_\bi_\bm_\bi_\bt_\bM_\ba_\bs_\bk\n-void assignCornerLimitMask(VERTEX const &vertex, MASK &pos) const\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be\n-Scheme(Options const &options)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b7_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\be_\bx_\bM_\ba_\bs_\bk\n-void ComputeFaceVertexMask(FACE const &faceNeighborhood, MASK &faceVertexMask)\n-const\n-Face-vertex masks - trivial for all current schemes.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b3_\b4_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\br_\bn_\be_\br_\bL_\bi_\bm_\bi_\bt_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bM_\ba_\bs_\bk_\bs\n-void assignCornerLimitTangentMasks(VERTEX const &vertex, MASK &tan1, MASK\n-&tan2) const\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bS_\be_\bt_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n-void SetOptions(const Options &newOptions)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b7_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bM_\ba_\bs_\bk\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b2_\b0_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bM_\ba_\bs_\bk_\b:_\b:_\bW_\be_\bi_\bg_\bh_\bt\n-WEIGHT Weight\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b2_\b1_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bM_\ba_\bs_\bk_\b:_\b:\n-_\bA_\br_\be_\bF_\ba_\bc_\be_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bF_\bo_\br_\bF_\ba_\bc_\be_\bC_\be_\bn_\bt_\be_\br_\bs\n-bool AreFaceWeightsForFaceCenters() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b2_\b3_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bM_\ba_\bs_\bk_\b:_\b:_\bS_\be_\bt_\bN_\bu_\bm_\bE_\bd_\bg_\be_\bW_\be_\bi_\bg_\bh_\bt_\bs\n-void SetNumEdgeWeights(int count)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b2_\b2_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bM_\ba_\bs_\bk_\b:_\b:_\bE_\bd_\bg_\be_\bW_\be_\bi_\bg_\bh_\bt\n-Weight const & EdgeWeight(int index) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b2_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bM_\ba_\bs_\bk_\b:_\b:_\bE_\bd_\bg_\be_\bW_\be_\bi_\bg_\bh_\bt\n-Weight & EdgeWeight(int index)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b2_\b3_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bM_\ba_\bs_\bk_\b:_\b:\n-_\bC_\bo_\bm_\bb_\bi_\bn_\be_\bV_\be_\br_\bt_\be_\bx_\bV_\be_\br_\bt_\be_\bx_\bM_\ba_\bs_\bk_\bs\n-void CombineVertexVertexMasks(Weight thisCoeff, Weight dstCoeff, USER_MASK\n-&dst) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b2_\b4_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bM_\ba_\bs_\bk_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\be_\bx_\bW_\be_\bi_\bg_\bh_\bt_\bs\n-int GetNumVertexWeights() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b2_\b2_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bM_\ba_\bs_\bk_\b:_\b:_\bS_\be_\bt_\bN_\bu_\bm_\bF_\ba_\bc_\be_\bW_\be_\bi_\bg_\bh_\bt_\bs\n-void SetNumFaceWeights(int count)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b2_\b2_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bM_\ba_\bs_\bk_\b:_\b:_\bF_\ba_\bc_\be_\bW_\be_\bi_\bg_\bh_\bt\n-Weight const & FaceWeight(int index) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b2_\b3_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bM_\ba_\bs_\bk_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bE_\bd_\bg_\be_\bW_\be_\bi_\bg_\bh_\bt_\bs\n-int GetNumEdgeWeights() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b2_\b2_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bM_\ba_\bs_\bk_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bW_\be_\bi_\bg_\bh_\bt\n-Weight & VertexWeight(int index)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b2_\b3_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bM_\ba_\bs_\bk_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bF_\ba_\bc_\be_\bW_\be_\bi_\bg_\bh_\bt_\bs\n-int GetNumFaceWeights() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b2_\b2_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bM_\ba_\bs_\bk_\b:_\b:\n-_\bS_\be_\bt_\bF_\ba_\bc_\be_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bF_\bo_\br_\bF_\ba_\bc_\be_\bC_\be_\bn_\bt_\be_\br_\bs\n-void SetFaceWeightsForFaceCenters(bool on)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b2_\b4_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bM_\ba_\bs_\bk_\b:_\b:_\bS_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\be_\bx_\bW_\be_\bi_\bg_\bh_\bt_\bs\n-void SetNumVertexWeights(int count)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b2_\b2_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bM_\ba_\bs_\bk_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bM_\ba_\bs_\bk\n-LocalMask(Weight *v, Weight *e, Weight *f)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b2_\b1_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bM_\ba_\bs_\bk_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bW_\be_\bi_\bg_\bh_\bt\n-Weight const & VertexWeight(int index) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b2_\b3_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bM_\ba_\bs_\bk_\b:_\b:_\bF_\ba_\bc_\be_\bW_\be_\bi_\bg_\bh_\bt\n-Weight & FaceWeight(int index)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b2_\b3_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bM_\ba_\bs_\bk_\b:_\b:_\b~_\bL_\bo_\bc_\ba_\bl_\bM_\ba_\bs_\bk\n-~LocalMask()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b2_\b1_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+Concrete vertex buffer class for CPU subdivision.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh_\b:_\b4_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bE_\bl_\be_\bm_\be_\bn_\bt_\bs\n+int GetNumElements() const\n+Returns how many elements defined in this vertex buffer.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n+static CpuVertexBuffer * Create(int numElements, int numVertices, void\n+*deviceContext=NULL)\n+Creator. Returns NULL if error.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bU_\bp_\bd_\ba_\bt_\be_\bD_\ba_\bt_\ba\n+void UpdateData(const float *src, int startVertex, int numVertices, void\n+*deviceContext=NULL)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n+int GetNumVertices() const\n+Returns how many vertices allocated in this vertex buffer.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\b~_\bC_\bp_\bu_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+~CpuVertexBuffer()\n+Destructor.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bB_\bi_\bn_\bd_\bC_\bp_\bu_\bB_\bu_\bf_\bf_\be_\br\n+float * BindCpuBuffer()\n+Returns the address of CPU buffer.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bC_\bp_\bu_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+CpuVertexBuffer(int numElements, int numVertices)\n+Constructor.\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bs_\bd_\bc\n-    * _\bs_\bc_\bh_\be_\bm_\be_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bc_\bp_\bu_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00746.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00746.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/far/primvarRefiner.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/osd/mtlLegacyGregoryPatchTable.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -90,58 +90,42 @@\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> &#124;\n <a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">primvarRefiner.h File Reference</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">mtlLegacyGregoryPatchTable.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a01492_source.html\">../sdc/types.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00734_source.html\">../sdc/options.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00740_source.html\">../sdc/bilinearScheme.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00737_source.html\">../sdc/catmarkScheme.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00728_source.html\">../sdc/loopScheme.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00695_source.html\">../vtr/level.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00689_source.html\">../vtr/fvarLevel.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00674_source.html\">../vtr/refinement.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00680_source.html\">../vtr/fvarRefinement.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00692_source.html\">../vtr/stackBuffer.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00698_source.html\">../vtr/componentInterfaces.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a01486_source.html\">../far/types.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00749_source.html\">../far/error.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00782_source.html\">../far/topologyLevel.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00764_source.html\">../far/topologyRefiner.h</a>&quot;</code><br />\n-<code>#include &lt;cassert&gt;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00842_source.html\">../far/patchTable.h</a>&quot;</code><br />\n+<code>#include &quot;../osd/nonCopyable.h&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00698_source.html\">../osd/mtlCommon.h</a>&quot;</code><br />\n </div>\n <p><a href=\"a00746_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01029.html\">PrimvarRefinerReal&lt; REAL &gt;</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Applies refinement operations to generic primvar data.  <a href=\"a01029.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01037.html\">PrimvarRefiner</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01297.html\">MTLLegacyGregoryPatchTable</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far</a></td></tr>\n+<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7f420b72a822828cfa8b0561c695a5cc.html\">far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00746.html\">primvarRefiner.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00746.html\">mtlLegacyGregoryPatchTable.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,41 +1,25 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-primvarRefiner.h File Reference\n+mtlLegacyGregoryPatchTable.h File Reference\n #include \"../version.h\"\n-#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n-#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh\"\n-#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bb_\bi_\bl_\bi_\bn_\be_\ba_\br_\bS_\bc_\bh_\be_\bm_\be_\b._\bh\"\n-#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bc_\ba_\bt_\bm_\ba_\br_\bk_\bS_\bc_\bh_\be_\bm_\be_\b._\bh\"\n-#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bl_\bo_\bo_\bp_\bS_\bc_\bh_\be_\bm_\be_\b._\bh\"\n-#include \"_\b._\b._\b/_\bv_\bt_\br_\b/_\bl_\be_\bv_\be_\bl_\b._\bh\"\n-#include \"_\b._\b._\b/_\bv_\bt_\br_\b/_\bf_\bv_\ba_\br_\bL_\be_\bv_\be_\bl_\b._\bh\"\n-#include \"_\b._\b._\b/_\bv_\bt_\br_\b/_\br_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt_\b._\bh\"\n-#include \"_\b._\b._\b/_\bv_\bt_\br_\b/_\bf_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt_\b._\bh\"\n-#include \"_\b._\b._\b/_\bv_\bt_\br_\b/_\bs_\bt_\ba_\bc_\bk_\bB_\bu_\bf_\bf_\be_\br_\b._\bh\"\n-#include \"_\b._\b._\b/_\bv_\bt_\br_\b/_\bc_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bs_\b._\bh\"\n-#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n-#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\be_\br_\br_\bo_\br_\b._\bh\"\n-#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh\"\n-#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh\"\n-#include <cassert>\n+#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh\"\n+#include \"../osd/nonCopyable.h\"\n+#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bm_\bt_\bl_\bC_\bo_\bm_\bm_\bo_\bn_\b._\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl_\b<_\b _\bR_\bE_\bA_\bL_\b _\b>\n-\u00a0       Applies refinement operations to generic primvar data. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br\n+class \u00a0 _\bM_\bT_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bf_\ba_\br\n-    * _\bp_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bm_\bt_\bl_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00746.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00746.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,4 +1,3 @@\n var a00746 = [\n-    [\"PrimvarRefinerReal< REAL >\", \"a01029.html\", \"a01029\"],\n-    [\"PrimvarRefiner\", \"a01037.html\", \"a01037\"]\n+    [\"MTLLegacyGregoryPatchTable\", \"a01297.html\", \"a01297\"]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00746_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00746_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/far/primvarRefiner.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/osd/mtlLegacyGregoryPatchTable.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">primvarRefiner.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">mtlLegacyGregoryPatchTable.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00746.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2015 DreamWorks Animation LLC.</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2013 Pixar</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -118,1233 +118,113 @@\n <div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_FAR_PRIMVAR_REFINER_H</span></div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#define OPENSUBDIV3_FAR_PRIMVAR_REFINER_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span> </div>\n-<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span> </div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#include &quot;../sdc/types.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../sdc/options.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../sdc/bilinearScheme.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &quot;../sdc/catmarkScheme.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"preprocessor\">#include &quot;../sdc/loopScheme.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"preprocessor\">#include &quot;../vtr/level.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"preprocessor\">#include &quot;../vtr/fvarLevel.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"preprocessor\">#include &quot;../vtr/refinement.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"preprocessor\">#include &quot;../vtr/fvarRefinement.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"preprocessor\">#include &quot;../vtr/stackBuffer.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span><span class=\"preprocessor\">#include &quot;../vtr/componentInterfaces.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"preprocessor\">#include &quot;../far/types.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"preprocessor\">#include &quot;../far/error.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span><span class=\"preprocessor\">#include &quot;../far/topologyLevel.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"preprocessor\">#include &quot;../far/topologyRefiner.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span> </div>\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span><span class=\"preprocessor\">#include &lt;cassert&gt;</span></div>\n+<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_MTL_LEGACY_GREGORY_PATCH_TABLE_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_MTL_LEGACY_GREGORY_PATCH_TABLE_H</span></div>\n+<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n+<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#include &quot;../far/patchTable.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../osd/nonCopyable.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../osd/mtlCommon.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span> </div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"keyword\">@protocol </span>MTLDevice;</div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">@protocol </span>MTLBuffer;</div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span> </div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span> </div>\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span><span class=\"keyword\">namespace </span>Osd {</div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00041\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01297.html\">   41</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01297.html\">MTLLegacyGregoryPatchTable</a></div>\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span>: <span class=\"keyword\">private</span> NonCopyable&lt;MTLLegacyGregoryPatchTable&gt;</div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span>{</div>\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01297.html#aed8ca15f9dfcacfcfc31ab1227b61dcc\">   45</a></span>    <a class=\"code hl_function\" href=\"a01297.html#aed8ca15f9dfcacfcfc31ab1227b61dcc\">~MTLLegacyGregoryPatchTable</a>();</div>\n <div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span> </div>\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n-<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span> </div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span><span class=\"keyword\">namespace </span>Far {</div>\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span> </div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00056\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01029.html\">   56</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01029.html\">PrimvarRefinerReal</a> {</div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span> </div>\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01029.html#a1fe1fbda93c01c326f13929d1c3c6247\">   59</a></span>    <a class=\"code hl_function\" href=\"a01029.html#a1fe1fbda93c01c326f13929d1c3c6247\">PrimvarRefinerReal</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> &amp; refiner) : _refiner(refiner) { }</div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01029.html#ade7a1750cdc922e27c561520815d8b27\">   60</a></span>    <a class=\"code hl_function\" href=\"a01029.html#ade7a1750cdc922e27c561520815d8b27\">~PrimvarRefinerReal</a>() { }</div>\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span> </div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01029.html#a6f7fc8b9ce66fa57ac58ed977cc9c6f0\">   62</a></span>    <a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> &amp; <a class=\"code hl_function\" href=\"a01029.html#a6f7fc8b9ce66fa57ac58ed977cc9c6f0\">GetTopologyRefiner</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _refiner; }</div>\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span> </div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span> </div>\n-<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00113\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01029.html#ab97b75b7c0fffa06a5948bd6ba7b420d\">  113</a></span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt; <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01029.html#ab97b75b7c0fffa06a5948bd6ba7b420d\">Interpolate</a>(<span class=\"keywordtype\">int</span> level, T <span class=\"keyword\">const</span> &amp; src, U &amp; dst) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00130\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01029.html#aa2fd72e336a12bf454dd79ba6ce8ee56\">  130</a></span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt; <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01029.html#aa2fd72e336a12bf454dd79ba6ce8ee56\">InterpolateVarying</a>(<span class=\"keywordtype\">int</span> level, T <span class=\"keyword\">const</span> &amp; src, U &amp; dst) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\">  131</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00148\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01029.html#a3f8bd2ef902e11aad1debbdda26bb596\">  148</a></span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt; <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01029.html#a3f8bd2ef902e11aad1debbdda26bb596\">InterpolateFaceUniform</a>(<span class=\"keywordtype\">int</span> level, T <span class=\"keyword\">const</span> &amp; src, U &amp; dst) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\">  149</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00161\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01029.html#ad8f74e1887299ed02e0094100f18c998\">  161</a></span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt; <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01029.html#ad8f74e1887299ed02e0094100f18c998\">InterpolateFaceVarying</a>(<span class=\"keywordtype\">int</span> level, T <span class=\"keyword\">const</span> &amp; src, U &amp; dst, <span class=\"keywordtype\">int</span> channel = 0) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\">  162</span> </div>\n-<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\">  163</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00175\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01029.html#a0357839a7fabaa02f1d6d6a3c75e1ec2\">  175</a></span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt; <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01029.html#a0357839a7fabaa02f1d6d6a3c75e1ec2\">Limit</a>(T <span class=\"keyword\">const</span> &amp; src, U &amp; dstPos) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\">  176</span> </div>\n-<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U, <span class=\"keyword\">class</span> U1, <span class=\"keyword\">class</span> U2&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00178\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01029.html#a2cf4c50a1117c44ba4d11db92b067401\">  178</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01029.html#a2cf4c50a1117c44ba4d11db92b067401\">Limit</a>(T <span class=\"keyword\">const</span> &amp; src, U &amp; dstPos, U1 &amp; dstTan1, U2 &amp; dstTan2) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\">  179</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00180\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01029.html#afdee0e9e9c6edd34c96892efff808a87\">  180</a></span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt; <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01029.html#afdee0e9e9c6edd34c96892efff808a87\">LimitFaceVarying</a>(T <span class=\"keyword\">const</span> &amp; src, U &amp; dst, <span class=\"keywordtype\">int</span> channel = 0) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\">  181</span> </div>\n-<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\">  183</span> </div>\n-<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\">  184</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\">  185</span>    <span class=\"keyword\">typedef</span> REAL Weight;</div>\n-<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\">  186</span> </div>\n-<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\">  187</span>    <span class=\"comment\">//  Non-copyable:</span></div>\n-<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\">  188</span>    <a class=\"code hl_class\" href=\"a01029.html\">PrimvarRefinerReal</a>(<a class=\"code hl_class\" href=\"a01029.html\">PrimvarRefinerReal</a> <span class=\"keyword\">const</span> &amp; src) : _refiner(src._refiner) { }</div>\n-<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\">  189</span>    <a class=\"code hl_class\" href=\"a01029.html\">PrimvarRefinerReal</a> &amp; operator=(<a class=\"code hl_class\" href=\"a01029.html\">PrimvarRefinerReal</a> <span class=\"keyword\">const</span> &amp;) { <span class=\"keywordflow\">return</span> *<span class=\"keyword\">this</span>; }</div>\n-<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\">  190</span> </div>\n-<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\">  191</span>    <span class=\"keyword\">template</span> &lt;Sdc::SchemeType SCHEME, <span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt; <span class=\"keywordtype\">void</span> interpFromFaces(<span class=\"keywordtype\">int</span>, T <span class=\"keyword\">const</span> &amp;, U &amp;) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\">  192</span>    <span class=\"keyword\">template</span> &lt;Sdc::SchemeType SCHEME, <span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt; <span class=\"keywordtype\">void</span> interpFromEdges(<span class=\"keywordtype\">int</span>, T <span class=\"keyword\">const</span> &amp;, U &amp;) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\">  193</span>    <span class=\"keyword\">template</span> &lt;Sdc::SchemeType SCHEME, <span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt; <span class=\"keywordtype\">void</span> interpFromVerts(<span class=\"keywordtype\">int</span>, T <span class=\"keyword\">const</span> &amp;, U &amp;) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\">  194</span> </div>\n-<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\">  195</span>    <span class=\"keyword\">template</span> &lt;Sdc::SchemeType SCHEME, <span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt; <span class=\"keywordtype\">void</span> interpFVarFromFaces(<span class=\"keywordtype\">int</span>, T <span class=\"keyword\">const</span> &amp;, U &amp;, <span class=\"keywordtype\">int</span>) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\">  196</span>    <span class=\"keyword\">template</span> &lt;Sdc::SchemeType SCHEME, <span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt; <span class=\"keywordtype\">void</span> interpFVarFromEdges(<span class=\"keywordtype\">int</span>, T <span class=\"keyword\">const</span> &amp;, U &amp;, <span class=\"keywordtype\">int</span>) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\">  197</span>    <span class=\"keyword\">template</span> &lt;Sdc::SchemeType SCHEME, <span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt; <span class=\"keywordtype\">void</span> interpFVarFromVerts(<span class=\"keywordtype\">int</span>, T <span class=\"keyword\">const</span> &amp;, U &amp;, <span class=\"keywordtype\">int</span>) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\">  198</span> </div>\n-<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\">  199</span>    <span class=\"keyword\">template</span> &lt;Sdc::SchemeType SCHEME, <span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U, <span class=\"keyword\">class</span> U1, <span class=\"keyword\">class</span> U2&gt;</div>\n-<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\">  200</span>    <span class=\"keywordtype\">void</span> limit(T <span class=\"keyword\">const</span> &amp; src, U &amp; pos, U1 * tan1, U2 * tan2) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\">  201</span> </div>\n-<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\">  202</span>    <span class=\"keyword\">template</span> &lt;Sdc::SchemeType SCHEME, <span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt;</div>\n-<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\">  203</span>    <span class=\"keywordtype\">void</span> limitFVar(T <span class=\"keyword\">const</span> &amp; src, U &amp; dst, <span class=\"keywordtype\">int</span> channel) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\">  204</span> </div>\n-<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\">  205</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\">  206</span>    TopologyRefiner <span class=\"keyword\">const</span> &amp;  _refiner;</div>\n-<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\">  207</span> </div>\n-<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\">  208</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\">  209</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\">  210</span>    <span class=\"comment\">//  Local class to fulfill interface for &lt;typename MASK&gt; in the Scheme mask queries:</span></div>\n-<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\">  211</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00212\" name=\"l00212\"></a><span class=\"lineno\">  212</span>    <span class=\"keyword\">class </span>Mask {</div>\n-<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\">  213</span>    <span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\">  214</span>        <span class=\"keyword\">typedef</span> REAL Weight;  <span class=\"comment\">//  Also part of the expected interface</span></div>\n-<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\">  215</span> </div>\n-<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\">  216</span>    <span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\">  217</span>        Mask(Weight* v, Weight* e, Weight* f) : </div>\n-<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\">  218</span>            _vertWeights(v), _edgeWeights(e), _faceWeights(f),</div>\n-<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\">  219</span>            _vertCount(0), _edgeCount(0), _faceCount(0), </div>\n-<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\">  220</span>            _faceWeightsForFaceCenters(false)</div>\n-<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\">  221</span>        { }</div>\n-<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\">  222</span> </div>\n-<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\">  223</span>        ~Mask() { }</div>\n-<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\">  224</span> </div>\n-<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\">  225</span>    <span class=\"keyword\">public</span>:  <span class=\"comment\">//  Generic interface expected of &lt;typename MASK&gt;:</span></div>\n-<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\">  226</span>        <span class=\"keywordtype\">int</span> GetNumVertexWeights()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _vertCount; }</div>\n-<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\">  227</span>        <span class=\"keywordtype\">int</span> GetNumEdgeWeights()<span class=\"keyword\">   const </span>{ <span class=\"keywordflow\">return</span> _edgeCount; }</div>\n-<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\">  228</span>        <span class=\"keywordtype\">int</span> GetNumFaceWeights()<span class=\"keyword\">   const </span>{ <span class=\"keywordflow\">return</span> _faceCount; }</div>\n-<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\">  229</span> </div>\n-<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\">  230</span>        <span class=\"keywordtype\">void</span> SetNumVertexWeights(<span class=\"keywordtype\">int</span> count) { _vertCount = count; }</div>\n-<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\">  231</span>        <span class=\"keywordtype\">void</span> SetNumEdgeWeights(  <span class=\"keywordtype\">int</span> count) { _edgeCount = count; }</div>\n-<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\">  232</span>        <span class=\"keywordtype\">void</span> SetNumFaceWeights(  <span class=\"keywordtype\">int</span> count) { _faceCount = count; }</div>\n-<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\">  233</span> </div>\n-<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\">  234</span>        Weight <span class=\"keyword\">const</span>&amp; VertexWeight(<span class=\"keywordtype\">int</span> index)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _vertWeights[index]; }</div>\n-<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\">  235</span>        Weight <span class=\"keyword\">const</span>&amp; EdgeWeight(  <span class=\"keywordtype\">int</span> index)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _edgeWeights[index]; }</div>\n-<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\">  236</span>        Weight <span class=\"keyword\">const</span>&amp; FaceWeight(  <span class=\"keywordtype\">int</span> index)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _faceWeights[index]; }</div>\n-<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\">  237</span> </div>\n-<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\">  238</span>        Weight&amp; VertexWeight(<span class=\"keywordtype\">int</span> index) { <span class=\"keywordflow\">return</span> _vertWeights[index]; }</div>\n-<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\">  239</span>        Weight&amp; EdgeWeight(  <span class=\"keywordtype\">int</span> index) { <span class=\"keywordflow\">return</span> _edgeWeights[index]; }</div>\n-<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\">  240</span>        Weight&amp; FaceWeight(  <span class=\"keywordtype\">int</span> index) { <span class=\"keywordflow\">return</span> _faceWeights[index]; }</div>\n-<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\">  241</span> </div>\n-<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\">  242</span>        <span class=\"keywordtype\">bool</span> AreFaceWeightsForFaceCenters()<span class=\"keyword\"> const  </span>{ <span class=\"keywordflow\">return</span> _faceWeightsForFaceCenters; }</div>\n-<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\">  243</span>        <span class=\"keywordtype\">void</span> SetFaceWeightsForFaceCenters(<span class=\"keywordtype\">bool</span> on) { _faceWeightsForFaceCenters = on; }</div>\n-<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\">  244</span> </div>\n-<div class=\"line\"><a id=\"l00245\" name=\"l00245\"></a><span class=\"lineno\">  245</span>    <span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\">  246</span>        Weight* _vertWeights;</div>\n-<div class=\"line\"><a id=\"l00247\" name=\"l00247\"></a><span class=\"lineno\">  247</span>        Weight* _edgeWeights;</div>\n-<div class=\"line\"><a id=\"l00248\" name=\"l00248\"></a><span class=\"lineno\">  248</span>        Weight* _faceWeights;</div>\n-<div class=\"line\"><a id=\"l00249\" name=\"l00249\"></a><span class=\"lineno\">  249</span> </div>\n-<div class=\"line\"><a id=\"l00250\" name=\"l00250\"></a><span class=\"lineno\">  250</span>        <span class=\"keywordtype\">int</span> _vertCount;</div>\n-<div class=\"line\"><a id=\"l00251\" name=\"l00251\"></a><span class=\"lineno\">  251</span>        <span class=\"keywordtype\">int</span> _edgeCount;</div>\n-<div class=\"line\"><a id=\"l00252\" name=\"l00252\"></a><span class=\"lineno\">  252</span>        <span class=\"keywordtype\">int</span> _faceCount;</div>\n-<div class=\"line\"><a id=\"l00253\" name=\"l00253\"></a><span class=\"lineno\">  253</span> </div>\n-<div class=\"line\"><a id=\"l00254\" name=\"l00254\"></a><span class=\"lineno\">  254</span>        <span class=\"keywordtype\">bool</span> _faceWeightsForFaceCenters;</div>\n-<div class=\"line\"><a id=\"l00255\" name=\"l00255\"></a><span class=\"lineno\">  255</span>    };</div>\n-<div class=\"line\"><a id=\"l00256\" name=\"l00256\"></a><span class=\"lineno\">  256</span>};</div>\n-<div class=\"line\"><a id=\"l00257\" name=\"l00257\"></a><span class=\"lineno\">  257</span> </div>\n-<div class=\"line\"><a id=\"l00258\" name=\"l00258\"></a><span class=\"lineno\">  258</span> </div>\n-<div class=\"line\"><a id=\"l00259\" name=\"l00259\"></a><span class=\"lineno\">  259</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00260\" name=\"l00260\"></a><span class=\"lineno\">  260</span><span class=\"comment\">//  Public entry points to the methods.  Queries of the scheme type and its</span></div>\n-<div class=\"line\"><a id=\"l00261\" name=\"l00261\"></a><span class=\"lineno\">  261</span><span class=\"comment\">//  use as a template parameter in subsequent implementation will be factored</span></div>\n-<div class=\"line\"><a id=\"l00262\" name=\"l00262\"></a><span class=\"lineno\">  262</span><span class=\"comment\">//  out of a later release:</span></div>\n-<div class=\"line\"><a id=\"l00263\" name=\"l00263\"></a><span class=\"lineno\">  263</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00264\" name=\"l00264\"></a><span class=\"lineno\">  264</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00265\" name=\"l00265\"></a><span class=\"lineno\">  265</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt;</div>\n-<div class=\"line\"><a id=\"l00266\" name=\"l00266\"></a><span class=\"lineno\">  266</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00267\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00267\" name=\"l00267\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01029.html#ab97b75b7c0fffa06a5948bd6ba7b420d\">  267</a></span><a class=\"code hl_function\" href=\"a01029.html#ab97b75b7c0fffa06a5948bd6ba7b420d\">PrimvarRefinerReal&lt;REAL&gt;::Interpolate</a>(<span class=\"keywordtype\">int</span> level, T <span class=\"keyword\">const</span> &amp; src, U &amp; dst)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00268\" name=\"l00268\"></a><span class=\"lineno\">  268</span> </div>\n-<div class=\"line\"><a id=\"l00269\" name=\"l00269\"></a><span class=\"lineno\">  269</span>    assert(level&gt;0 &amp;&amp; level&lt;=(<span class=\"keywordtype\">int</span>)_refiner._refinements.size());</div>\n-<div class=\"line\"><a id=\"l00270\" name=\"l00270\"></a><span class=\"lineno\">  270</span> </div>\n-<div class=\"line\"><a id=\"l00271\" name=\"l00271\"></a><span class=\"lineno\">  271</span>    <span class=\"keywordflow\">switch</span> (_refiner._subdivType) {</div>\n-<div class=\"line\"><a id=\"l00272\" name=\"l00272\"></a><span class=\"lineno\">  272</span>    <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833da29c9704ef8a61670dfc242b6e6b82a9f\">Sdc::SCHEME_CATMARK</a>:</div>\n-<div class=\"line\"><a id=\"l00273\" name=\"l00273\"></a><span class=\"lineno\">  273</span>        interpFromFaces&lt;Sdc::SCHEME_CATMARK&gt;(level, src, dst);</div>\n-<div class=\"line\"><a id=\"l00274\" name=\"l00274\"></a><span class=\"lineno\">  274</span>        interpFromEdges&lt;Sdc::SCHEME_CATMARK&gt;(level, src, dst);</div>\n-<div class=\"line\"><a id=\"l00275\" name=\"l00275\"></a><span class=\"lineno\">  275</span>        interpFromVerts&lt;Sdc::SCHEME_CATMARK&gt;(level, src, dst);</div>\n-<div class=\"line\"><a id=\"l00276\" name=\"l00276\"></a><span class=\"lineno\">  276</span>        <span class=\"keywordflow\">break</span>;</div>\n-<div class=\"line\"><a id=\"l00277\" name=\"l00277\"></a><span class=\"lineno\">  277</span>    <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833da529a2651a5dcfac532e933ffefc36e99\">Sdc::SCHEME_LOOP</a>:</div>\n-<div class=\"line\"><a id=\"l00278\" name=\"l00278\"></a><span class=\"lineno\">  278</span>        interpFromFaces&lt;Sdc::SCHEME_LOOP&gt;(level, src, dst);</div>\n-<div class=\"line\"><a id=\"l00279\" name=\"l00279\"></a><span class=\"lineno\">  279</span>        interpFromEdges&lt;Sdc::SCHEME_LOOP&gt;(level, src, dst);</div>\n-<div class=\"line\"><a id=\"l00280\" name=\"l00280\"></a><span class=\"lineno\">  280</span>        interpFromVerts&lt;Sdc::SCHEME_LOOP&gt;(level, src, dst);</div>\n-<div class=\"line\"><a id=\"l00281\" name=\"l00281\"></a><span class=\"lineno\">  281</span>        <span class=\"keywordflow\">break</span>;</div>\n-<div class=\"line\"><a id=\"l00282\" name=\"l00282\"></a><span class=\"lineno\">  282</span>    <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833da02558f420bac2d6bd3f8411d4b3957a0\">Sdc::SCHEME_BILINEAR</a>:</div>\n-<div class=\"line\"><a id=\"l00283\" name=\"l00283\"></a><span class=\"lineno\">  283</span>        interpFromFaces&lt;Sdc::SCHEME_BILINEAR&gt;(level, src, dst);</div>\n-<div class=\"line\"><a id=\"l00284\" name=\"l00284\"></a><span class=\"lineno\">  284</span>        interpFromEdges&lt;Sdc::SCHEME_BILINEAR&gt;(level, src, dst);</div>\n-<div class=\"line\"><a id=\"l00285\" name=\"l00285\"></a><span class=\"lineno\">  285</span>        interpFromVerts&lt;Sdc::SCHEME_BILINEAR&gt;(level, src, dst);</div>\n-<div class=\"line\"><a id=\"l00286\" name=\"l00286\"></a><span class=\"lineno\">  286</span>        <span class=\"keywordflow\">break</span>;</div>\n-<div class=\"line\"><a id=\"l00287\" name=\"l00287\"></a><span class=\"lineno\">  287</span>    }</div>\n-<div class=\"line\"><a id=\"l00288\" name=\"l00288\"></a><span class=\"lineno\">  288</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00289\" name=\"l00289\"></a><span class=\"lineno\">  289</span> </div>\n-<div class=\"line\"><a id=\"l00290\" name=\"l00290\"></a><span class=\"lineno\">  290</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00291\" name=\"l00291\"></a><span class=\"lineno\">  291</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt;</div>\n-<div class=\"line\"><a id=\"l00292\" name=\"l00292\"></a><span class=\"lineno\">  292</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00293\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00293\" name=\"l00293\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01029.html#ad8f74e1887299ed02e0094100f18c998\">  293</a></span><a class=\"code hl_function\" href=\"a01029.html#ad8f74e1887299ed02e0094100f18c998\">PrimvarRefinerReal&lt;REAL&gt;::InterpolateFaceVarying</a>(<span class=\"keywordtype\">int</span> level, T <span class=\"keyword\">const</span> &amp; src, U &amp; dst, <span class=\"keywordtype\">int</span> channel)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00294\" name=\"l00294\"></a><span class=\"lineno\">  294</span> </div>\n-<div class=\"line\"><a id=\"l00295\" name=\"l00295\"></a><span class=\"lineno\">  295</span>    assert(level&gt;0 &amp;&amp; level&lt;=(<span class=\"keywordtype\">int</span>)_refiner._refinements.size());</div>\n-<div class=\"line\"><a id=\"l00296\" name=\"l00296\"></a><span class=\"lineno\">  296</span> </div>\n-<div class=\"line\"><a id=\"l00297\" name=\"l00297\"></a><span class=\"lineno\">  297</span>    <span class=\"keywordflow\">switch</span> (_refiner._subdivType) {</div>\n-<div class=\"line\"><a id=\"l00298\" name=\"l00298\"></a><span class=\"lineno\">  298</span>    <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833da29c9704ef8a61670dfc242b6e6b82a9f\">Sdc::SCHEME_CATMARK</a>:</div>\n-<div class=\"line\"><a id=\"l00299\" name=\"l00299\"></a><span class=\"lineno\">  299</span>        interpFVarFromFaces&lt;Sdc::SCHEME_CATMARK&gt;(level, src, dst, channel);</div>\n-<div class=\"line\"><a id=\"l00300\" name=\"l00300\"></a><span class=\"lineno\">  300</span>        interpFVarFromEdges&lt;Sdc::SCHEME_CATMARK&gt;(level, src, dst, channel);</div>\n-<div class=\"line\"><a id=\"l00301\" name=\"l00301\"></a><span class=\"lineno\">  301</span>        interpFVarFromVerts&lt;Sdc::SCHEME_CATMARK&gt;(level, src, dst, channel);</div>\n-<div class=\"line\"><a id=\"l00302\" name=\"l00302\"></a><span class=\"lineno\">  302</span>        <span class=\"keywordflow\">break</span>;</div>\n-<div class=\"line\"><a id=\"l00303\" name=\"l00303\"></a><span class=\"lineno\">  303</span>    <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833da529a2651a5dcfac532e933ffefc36e99\">Sdc::SCHEME_LOOP</a>:</div>\n-<div class=\"line\"><a id=\"l00304\" name=\"l00304\"></a><span class=\"lineno\">  304</span>        interpFVarFromFaces&lt;Sdc::SCHEME_LOOP&gt;(level, src, dst, channel);</div>\n-<div class=\"line\"><a id=\"l00305\" name=\"l00305\"></a><span class=\"lineno\">  305</span>        interpFVarFromEdges&lt;Sdc::SCHEME_LOOP&gt;(level, src, dst, channel);</div>\n-<div class=\"line\"><a id=\"l00306\" name=\"l00306\"></a><span class=\"lineno\">  306</span>        interpFVarFromVerts&lt;Sdc::SCHEME_LOOP&gt;(level, src, dst, channel);</div>\n-<div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\">  307</span>        <span class=\"keywordflow\">break</span>;</div>\n-<div class=\"line\"><a id=\"l00308\" name=\"l00308\"></a><span class=\"lineno\">  308</span>    <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833da02558f420bac2d6bd3f8411d4b3957a0\">Sdc::SCHEME_BILINEAR</a>:</div>\n-<div class=\"line\"><a id=\"l00309\" name=\"l00309\"></a><span class=\"lineno\">  309</span>        interpFVarFromFaces&lt;Sdc::SCHEME_BILINEAR&gt;(level, src, dst, channel);</div>\n-<div class=\"line\"><a id=\"l00310\" name=\"l00310\"></a><span class=\"lineno\">  310</span>        interpFVarFromEdges&lt;Sdc::SCHEME_BILINEAR&gt;(level, src, dst, channel);</div>\n-<div class=\"line\"><a id=\"l00311\" name=\"l00311\"></a><span class=\"lineno\">  311</span>        interpFVarFromVerts&lt;Sdc::SCHEME_BILINEAR&gt;(level, src, dst, channel);</div>\n-<div class=\"line\"><a id=\"l00312\" name=\"l00312\"></a><span class=\"lineno\">  312</span>        <span class=\"keywordflow\">break</span>;</div>\n-<div class=\"line\"><a id=\"l00313\" name=\"l00313\"></a><span class=\"lineno\">  313</span>    }</div>\n-<div class=\"line\"><a id=\"l00314\" name=\"l00314\"></a><span class=\"lineno\">  314</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00315\" name=\"l00315\"></a><span class=\"lineno\">  315</span> </div>\n-<div class=\"line\"><a id=\"l00316\" name=\"l00316\"></a><span class=\"lineno\">  316</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00317\" name=\"l00317\"></a><span class=\"lineno\">  317</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt;</div>\n-<div class=\"line\"><a id=\"l00318\" name=\"l00318\"></a><span class=\"lineno\">  318</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00319\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00319\" name=\"l00319\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01029.html#a0357839a7fabaa02f1d6d6a3c75e1ec2\">  319</a></span><a class=\"code hl_function\" href=\"a01029.html#a0357839a7fabaa02f1d6d6a3c75e1ec2\">PrimvarRefinerReal&lt;REAL&gt;::Limit</a>(T <span class=\"keyword\">const</span> &amp; src, U &amp; dst)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00320\" name=\"l00320\"></a><span class=\"lineno\">  320</span> </div>\n-<div class=\"line\"><a id=\"l00321\" name=\"l00321\"></a><span class=\"lineno\">  321</span>    <span class=\"keywordflow\">if</span> (_refiner.getLevel(_refiner.GetMaxLevel()).getNumVertexEdgesTotal() == 0) {</div>\n-<div class=\"line\"><a id=\"l00322\" name=\"l00322\"></a><span class=\"lineno\">  322</span>        <a class=\"code hl_function\" href=\"a00908.html#a25d51c3a61fb3dacded6e48d01fd2fdb\">Error</a>(<a class=\"code hl_enumvalue\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45aac565fa39d681e2766584dd87246c3bdd\">FAR_RUNTIME_ERROR</a>,</div>\n-<div class=\"line\"><a id=\"l00323\" name=\"l00323\"></a><span class=\"lineno\">  323</span>            <span class=\"stringliteral\">&quot;Failure in PrimvarRefiner::Limit() -- &quot;</span></div>\n-<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\">  324</span>            <span class=\"stringliteral\">&quot;last level of refinement does not include full topology.&quot;</span>);</div>\n-<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\">  325</span>        <span class=\"keywordflow\">return</span>;</div>\n-<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\">  326</span>    }</div>\n-<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\">  327</span> </div>\n-<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\">  328</span>    <span class=\"keywordflow\">switch</span> (_refiner._subdivType) {</div>\n-<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\">  329</span>    <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833da29c9704ef8a61670dfc242b6e6b82a9f\">Sdc::SCHEME_CATMARK</a>:</div>\n-<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\">  330</span>        limit&lt;Sdc::SCHEME_CATMARK&gt;(src, dst, (U*)0, (U*)0);</div>\n-<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\">  331</span>        <span class=\"keywordflow\">break</span>;</div>\n-<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\">  332</span>    <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833da529a2651a5dcfac532e933ffefc36e99\">Sdc::SCHEME_LOOP</a>:</div>\n-<div class=\"line\"><a id=\"l00333\" name=\"l00333\"></a><span class=\"lineno\">  333</span>        limit&lt;Sdc::SCHEME_LOOP&gt;(src, dst, (U*)0, (U*)0);</div>\n-<div class=\"line\"><a id=\"l00334\" name=\"l00334\"></a><span class=\"lineno\">  334</span>        <span class=\"keywordflow\">break</span>;</div>\n-<div class=\"line\"><a id=\"l00335\" name=\"l00335\"></a><span class=\"lineno\">  335</span>    <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833da02558f420bac2d6bd3f8411d4b3957a0\">Sdc::SCHEME_BILINEAR</a>:</div>\n-<div class=\"line\"><a id=\"l00336\" name=\"l00336\"></a><span class=\"lineno\">  336</span>        limit&lt;Sdc::SCHEME_BILINEAR&gt;(src, dst, (U*)0, (U*)0);</div>\n-<div class=\"line\"><a id=\"l00337\" name=\"l00337\"></a><span class=\"lineno\">  337</span>        <span class=\"keywordflow\">break</span>;</div>\n-<div class=\"line\"><a id=\"l00338\" name=\"l00338\"></a><span class=\"lineno\">  338</span>    }</div>\n-<div class=\"line\"><a id=\"l00339\" name=\"l00339\"></a><span class=\"lineno\">  339</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00340\" name=\"l00340\"></a><span class=\"lineno\">  340</span> </div>\n-<div class=\"line\"><a id=\"l00341\" name=\"l00341\"></a><span class=\"lineno\">  341</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00342\" name=\"l00342\"></a><span class=\"lineno\">  342</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U, <span class=\"keyword\">class</span> U1, <span class=\"keyword\">class</span> U2&gt;</div>\n-<div class=\"line\"><a id=\"l00343\" name=\"l00343\"></a><span class=\"lineno\">  343</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00344\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00344\" name=\"l00344\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01029.html#a2cf4c50a1117c44ba4d11db92b067401\">  344</a></span><a class=\"code hl_function\" href=\"a01029.html#a0357839a7fabaa02f1d6d6a3c75e1ec2\">PrimvarRefinerReal&lt;REAL&gt;::Limit</a>(T <span class=\"keyword\">const</span> &amp; src, U &amp; dstPos, U1 &amp; dstTan1, U2 &amp; dstTan2)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00345\" name=\"l00345\"></a><span class=\"lineno\">  345</span> </div>\n-<div class=\"line\"><a id=\"l00346\" name=\"l00346\"></a><span class=\"lineno\">  346</span>    <span class=\"keywordflow\">if</span> (_refiner.getLevel(_refiner.GetMaxLevel()).getNumVertexEdgesTotal() == 0) {</div>\n-<div class=\"line\"><a id=\"l00347\" name=\"l00347\"></a><span class=\"lineno\">  347</span>        <a class=\"code hl_function\" href=\"a00908.html#a25d51c3a61fb3dacded6e48d01fd2fdb\">Error</a>(<a class=\"code hl_enumvalue\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45aac565fa39d681e2766584dd87246c3bdd\">FAR_RUNTIME_ERROR</a>,</div>\n-<div class=\"line\"><a id=\"l00348\" name=\"l00348\"></a><span class=\"lineno\">  348</span>            <span class=\"stringliteral\">&quot;Failure in PrimvarRefiner::Limit() -- &quot;</span></div>\n-<div class=\"line\"><a id=\"l00349\" name=\"l00349\"></a><span class=\"lineno\">  349</span>            <span class=\"stringliteral\">&quot;last level of refinement does not include full topology.&quot;</span>);</div>\n-<div class=\"line\"><a id=\"l00350\" name=\"l00350\"></a><span class=\"lineno\">  350</span>        <span class=\"keywordflow\">return</span>;</div>\n-<div class=\"line\"><a id=\"l00351\" name=\"l00351\"></a><span class=\"lineno\">  351</span>    }</div>\n-<div class=\"line\"><a id=\"l00352\" name=\"l00352\"></a><span class=\"lineno\">  352</span> </div>\n-<div class=\"line\"><a id=\"l00353\" name=\"l00353\"></a><span class=\"lineno\">  353</span>    <span class=\"keywordflow\">switch</span> (_refiner._subdivType) {</div>\n-<div class=\"line\"><a id=\"l00354\" name=\"l00354\"></a><span class=\"lineno\">  354</span>    <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833da29c9704ef8a61670dfc242b6e6b82a9f\">Sdc::SCHEME_CATMARK</a>:</div>\n-<div class=\"line\"><a id=\"l00355\" name=\"l00355\"></a><span class=\"lineno\">  355</span>        limit&lt;Sdc::SCHEME_CATMARK&gt;(src, dstPos, &amp;dstTan1, &amp;dstTan2);</div>\n-<div class=\"line\"><a id=\"l00356\" name=\"l00356\"></a><span class=\"lineno\">  356</span>        <span class=\"keywordflow\">break</span>;</div>\n-<div class=\"line\"><a id=\"l00357\" name=\"l00357\"></a><span class=\"lineno\">  357</span>    <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833da529a2651a5dcfac532e933ffefc36e99\">Sdc::SCHEME_LOOP</a>:</div>\n-<div class=\"line\"><a id=\"l00358\" name=\"l00358\"></a><span class=\"lineno\">  358</span>        limit&lt;Sdc::SCHEME_LOOP&gt;(src, dstPos, &amp;dstTan1, &amp;dstTan2);</div>\n-<div class=\"line\"><a id=\"l00359\" name=\"l00359\"></a><span class=\"lineno\">  359</span>        <span class=\"keywordflow\">break</span>;</div>\n-<div class=\"line\"><a id=\"l00360\" name=\"l00360\"></a><span class=\"lineno\">  360</span>    <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833da02558f420bac2d6bd3f8411d4b3957a0\">Sdc::SCHEME_BILINEAR</a>:</div>\n-<div class=\"line\"><a id=\"l00361\" name=\"l00361\"></a><span class=\"lineno\">  361</span>        limit&lt;Sdc::SCHEME_BILINEAR&gt;(src, dstPos, &amp;dstTan1, &amp;dstTan2);</div>\n-<div class=\"line\"><a id=\"l00362\" name=\"l00362\"></a><span class=\"lineno\">  362</span>        <span class=\"keywordflow\">break</span>;</div>\n-<div class=\"line\"><a id=\"l00363\" name=\"l00363\"></a><span class=\"lineno\">  363</span>    }</div>\n-<div class=\"line\"><a id=\"l00364\" name=\"l00364\"></a><span class=\"lineno\">  364</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00365\" name=\"l00365\"></a><span class=\"lineno\">  365</span> </div>\n-<div class=\"line\"><a id=\"l00366\" name=\"l00366\"></a><span class=\"lineno\">  366</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00367\" name=\"l00367\"></a><span class=\"lineno\">  367</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt;</div>\n-<div class=\"line\"><a id=\"l00368\" name=\"l00368\"></a><span class=\"lineno\">  368</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00369\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00369\" name=\"l00369\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01029.html#afdee0e9e9c6edd34c96892efff808a87\">  369</a></span><a class=\"code hl_function\" href=\"a01029.html#afdee0e9e9c6edd34c96892efff808a87\">PrimvarRefinerReal&lt;REAL&gt;::LimitFaceVarying</a>(T <span class=\"keyword\">const</span> &amp; src, U &amp; dst, <span class=\"keywordtype\">int</span> channel)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00370\" name=\"l00370\"></a><span class=\"lineno\">  370</span> </div>\n-<div class=\"line\"><a id=\"l00371\" name=\"l00371\"></a><span class=\"lineno\">  371</span>    <span class=\"keywordflow\">if</span> (_refiner.getLevel(_refiner.GetMaxLevel()).getNumVertexEdgesTotal() == 0) {</div>\n-<div class=\"line\"><a id=\"l00372\" name=\"l00372\"></a><span class=\"lineno\">  372</span>        <a class=\"code hl_function\" href=\"a00908.html#a25d51c3a61fb3dacded6e48d01fd2fdb\">Error</a>(<a class=\"code hl_enumvalue\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45aac565fa39d681e2766584dd87246c3bdd\">FAR_RUNTIME_ERROR</a>,</div>\n-<div class=\"line\"><a id=\"l00373\" name=\"l00373\"></a><span class=\"lineno\">  373</span>            <span class=\"stringliteral\">&quot;Failure in PrimvarRefiner::LimitFaceVarying() -- &quot;</span></div>\n-<div class=\"line\"><a id=\"l00374\" name=\"l00374\"></a><span class=\"lineno\">  374</span>            <span class=\"stringliteral\">&quot;last level of refinement does not include full topology.&quot;</span>);</div>\n-<div class=\"line\"><a id=\"l00375\" name=\"l00375\"></a><span class=\"lineno\">  375</span>        <span class=\"keywordflow\">return</span>;</div>\n-<div class=\"line\"><a id=\"l00376\" name=\"l00376\"></a><span class=\"lineno\">  376</span>    }</div>\n-<div class=\"line\"><a id=\"l00377\" name=\"l00377\"></a><span class=\"lineno\">  377</span> </div>\n-<div class=\"line\"><a id=\"l00378\" name=\"l00378\"></a><span class=\"lineno\">  378</span>    <span class=\"keywordflow\">switch</span> (_refiner._subdivType) {</div>\n-<div class=\"line\"><a id=\"l00379\" name=\"l00379\"></a><span class=\"lineno\">  379</span>    <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833da29c9704ef8a61670dfc242b6e6b82a9f\">Sdc::SCHEME_CATMARK</a>:</div>\n-<div class=\"line\"><a id=\"l00380\" name=\"l00380\"></a><span class=\"lineno\">  380</span>        limitFVar&lt;Sdc::SCHEME_CATMARK&gt;(src, dst, channel);</div>\n-<div class=\"line\"><a id=\"l00381\" name=\"l00381\"></a><span class=\"lineno\">  381</span>        <span class=\"keywordflow\">break</span>;</div>\n-<div class=\"line\"><a id=\"l00382\" name=\"l00382\"></a><span class=\"lineno\">  382</span>    <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833da529a2651a5dcfac532e933ffefc36e99\">Sdc::SCHEME_LOOP</a>:</div>\n-<div class=\"line\"><a id=\"l00383\" name=\"l00383\"></a><span class=\"lineno\">  383</span>        limitFVar&lt;Sdc::SCHEME_LOOP&gt;(src, dst, channel);</div>\n-<div class=\"line\"><a id=\"l00384\" name=\"l00384\"></a><span class=\"lineno\">  384</span>        <span class=\"keywordflow\">break</span>;</div>\n-<div class=\"line\"><a id=\"l00385\" name=\"l00385\"></a><span class=\"lineno\">  385</span>    <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833da02558f420bac2d6bd3f8411d4b3957a0\">Sdc::SCHEME_BILINEAR</a>:</div>\n-<div class=\"line\"><a id=\"l00386\" name=\"l00386\"></a><span class=\"lineno\">  386</span>        limitFVar&lt;Sdc::SCHEME_BILINEAR&gt;(src, dst, channel);</div>\n-<div class=\"line\"><a id=\"l00387\" name=\"l00387\"></a><span class=\"lineno\">  387</span>        <span class=\"keywordflow\">break</span>;</div>\n-<div class=\"line\"><a id=\"l00388\" name=\"l00388\"></a><span class=\"lineno\">  388</span>    }</div>\n-<div class=\"line\"><a id=\"l00389\" name=\"l00389\"></a><span class=\"lineno\">  389</span>}</div>\n-</div>\n-</div>\n-<div class=\"line\"><a id=\"l00390\" name=\"l00390\"></a><span class=\"lineno\">  390</span> </div>\n-<div class=\"line\"><a id=\"l00391\" name=\"l00391\"></a><span class=\"lineno\">  391</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00392\" name=\"l00392\"></a><span class=\"lineno\">  392</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt;</div>\n-<div class=\"line\"><a id=\"l00393\" name=\"l00393\"></a><span class=\"lineno\">  393</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00394\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00394\" name=\"l00394\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01029.html#a3f8bd2ef902e11aad1debbdda26bb596\">  394</a></span><a class=\"code hl_function\" href=\"a01029.html#a3f8bd2ef902e11aad1debbdda26bb596\">PrimvarRefinerReal&lt;REAL&gt;::InterpolateFaceUniform</a>(<span class=\"keywordtype\">int</span> level, T <span class=\"keyword\">const</span> &amp; src, U &amp; dst)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00395\" name=\"l00395\"></a><span class=\"lineno\">  395</span> </div>\n-<div class=\"line\"><a id=\"l00396\" name=\"l00396\"></a><span class=\"lineno\">  396</span>    assert(level&gt;0 &amp;&amp; level&lt;=(<span class=\"keywordtype\">int</span>)_refiner._refinements.size());</div>\n-<div class=\"line\"><a id=\"l00397\" name=\"l00397\"></a><span class=\"lineno\">  397</span> </div>\n-<div class=\"line\"><a id=\"l00398\" name=\"l00398\"></a><span class=\"lineno\">  398</span>    Vtr::internal::Refinement <span class=\"keyword\">const</span> &amp; refinement = _refiner.getRefinement(level-1);</div>\n-<div class=\"line\"><a id=\"l00399\" name=\"l00399\"></a><span class=\"lineno\">  399</span>    Vtr::internal::Level <span class=\"keyword\">const</span> &amp; child = refinement.child();</div>\n-<div class=\"line\"><a id=\"l00400\" name=\"l00400\"></a><span class=\"lineno\">  400</span> </div>\n-<div class=\"line\"><a id=\"l00401\" name=\"l00401\"></a><span class=\"lineno\">  401</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> cFace = 0; cFace &lt; child.getNumFaces(); ++cFace) {</div>\n-<div class=\"line\"><a id=\"l00402\" name=\"l00402\"></a><span class=\"lineno\">  402</span> </div>\n-<div class=\"line\"><a id=\"l00403\" name=\"l00403\"></a><span class=\"lineno\">  403</span>        <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a> pFace = refinement.getChildFaceParentFace(cFace);</div>\n-<div class=\"line\"><a id=\"l00404\" name=\"l00404\"></a><span class=\"lineno\">  404</span> </div>\n-<div class=\"line\"><a id=\"l00405\" name=\"l00405\"></a><span class=\"lineno\">  405</span>        dst[cFace] = src[pFace];</div>\n-<div class=\"line\"><a id=\"l00406\" name=\"l00406\"></a><span class=\"lineno\">  406</span>    }</div>\n-<div class=\"line\"><a id=\"l00407\" name=\"l00407\"></a><span class=\"lineno\">  407</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00408\" name=\"l00408\"></a><span class=\"lineno\">  408</span> </div>\n-<div class=\"line\"><a id=\"l00409\" name=\"l00409\"></a><span class=\"lineno\">  409</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00410\" name=\"l00410\"></a><span class=\"lineno\">  410</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt;</div>\n-<div class=\"line\"><a id=\"l00411\" name=\"l00411\"></a><span class=\"lineno\">  411</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00412\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00412\" name=\"l00412\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01029.html#aa2fd72e336a12bf454dd79ba6ce8ee56\">  412</a></span><a class=\"code hl_function\" href=\"a01029.html#aa2fd72e336a12bf454dd79ba6ce8ee56\">PrimvarRefinerReal&lt;REAL&gt;::InterpolateVarying</a>(<span class=\"keywordtype\">int</span> level, T <span class=\"keyword\">const</span> &amp; src, U &amp; dst)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00413\" name=\"l00413\"></a><span class=\"lineno\">  413</span> </div>\n-<div class=\"line\"><a id=\"l00414\" name=\"l00414\"></a><span class=\"lineno\">  414</span>    assert(level&gt;0 &amp;&amp; level&lt;=(<span class=\"keywordtype\">int</span>)_refiner._refinements.size());</div>\n-<div class=\"line\"><a id=\"l00415\" name=\"l00415\"></a><span class=\"lineno\">  415</span> </div>\n-<div class=\"line\"><a id=\"l00416\" name=\"l00416\"></a><span class=\"lineno\">  416</span>    Vtr::internal::Refinement <span class=\"keyword\">const</span> &amp; refinement = _refiner.getRefinement(level-1);</div>\n-<div class=\"line\"><a id=\"l00417\" name=\"l00417\"></a><span class=\"lineno\">  417</span>    Vtr::internal::Level <span class=\"keyword\">const</span> &amp;      parent     = refinement.parent();</div>\n-<div class=\"line\"><a id=\"l00418\" name=\"l00418\"></a><span class=\"lineno\">  418</span> </div>\n-<div class=\"line\"><a id=\"l00419\" name=\"l00419\"></a><span class=\"lineno\">  419</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00420\" name=\"l00420\"></a><span class=\"lineno\">  420</span>    <span class=\"comment\">//  Group values to interpolate based on origin -- note that there may</span></div>\n-<div class=\"line\"><a id=\"l00421\" name=\"l00421\"></a><span class=\"lineno\">  421</span>    <span class=\"comment\">//  be none originating from faces:</span></div>\n-<div class=\"line\"><a id=\"l00422\" name=\"l00422\"></a><span class=\"lineno\">  422</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00423\" name=\"l00423\"></a><span class=\"lineno\">  423</span>    <span class=\"keywordflow\">if</span> (refinement.getNumChildVerticesFromFaces() &gt; 0) {</div>\n-<div class=\"line\"><a id=\"l00424\" name=\"l00424\"></a><span class=\"lineno\">  424</span> </div>\n-<div class=\"line\"><a id=\"l00425\" name=\"l00425\"></a><span class=\"lineno\">  425</span>        <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> face = 0; face &lt; parent.getNumFaces(); ++face) {</div>\n-<div class=\"line\"><a id=\"l00426\" name=\"l00426\"></a><span class=\"lineno\">  426</span> </div>\n-<div class=\"line\"><a id=\"l00427\" name=\"l00427\"></a><span class=\"lineno\">  427</span>            <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a> cVert = refinement.getFaceChildVertex(face);</div>\n-<div class=\"line\"><a id=\"l00428\" name=\"l00428\"></a><span class=\"lineno\">  428</span>            <span class=\"keywordflow\">if</span> (<a class=\"code hl_function\" href=\"a00909.html#a98af1cee938a3f984af1e7e9a205080c\">Vtr::IndexIsValid</a>(cVert)) {</div>\n-<div class=\"line\"><a id=\"l00429\" name=\"l00429\"></a><span class=\"lineno\">  429</span> </div>\n-<div class=\"line\"><a id=\"l00430\" name=\"l00430\"></a><span class=\"lineno\">  430</span>                <span class=\"comment\">//  Apply the weights to the parent face&#39;s vertices:</span></div>\n-<div class=\"line\"><a id=\"l00431\" name=\"l00431\"></a><span class=\"lineno\">  431</span>                <a class=\"code hl_class\" href=\"a01353.html\">ConstIndexArray</a> fVerts = parent.getFaceVertices(face);</div>\n-<div class=\"line\"><a id=\"l00432\" name=\"l00432\"></a><span class=\"lineno\">  432</span> </div>\n-<div class=\"line\"><a id=\"l00433\" name=\"l00433\"></a><span class=\"lineno\">  433</span>                Weight fVaryingWeight = 1.0f / (Weight) fVerts.<a class=\"code hl_function\" href=\"a01353.html#a60304b65bf89363bcc3165d3cde67f86\">size</a>();</div>\n-<div class=\"line\"><a id=\"l00434\" name=\"l00434\"></a><span class=\"lineno\">  434</span> </div>\n-<div class=\"line\"><a id=\"l00435\" name=\"l00435\"></a><span class=\"lineno\">  435</span>                dst[cVert].Clear();</div>\n-<div class=\"line\"><a id=\"l00436\" name=\"l00436\"></a><span class=\"lineno\">  436</span>                <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; fVerts.<a class=\"code hl_function\" href=\"a01353.html#a60304b65bf89363bcc3165d3cde67f86\">size</a>(); ++i) {</div>\n-<div class=\"line\"><a id=\"l00437\" name=\"l00437\"></a><span class=\"lineno\">  437</span>                    dst[cVert].AddWithWeight(src[fVerts[i]], fVaryingWeight);</div>\n-<div class=\"line\"><a id=\"l00438\" name=\"l00438\"></a><span class=\"lineno\">  438</span>                }</div>\n-<div class=\"line\"><a id=\"l00439\" name=\"l00439\"></a><span class=\"lineno\">  439</span>            }</div>\n-<div class=\"line\"><a id=\"l00440\" name=\"l00440\"></a><span class=\"lineno\">  440</span>        }</div>\n-<div class=\"line\"><a id=\"l00441\" name=\"l00441\"></a><span class=\"lineno\">  441</span>    }</div>\n-<div class=\"line\"><a id=\"l00442\" name=\"l00442\"></a><span class=\"lineno\">  442</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> edge = 0; edge &lt; parent.getNumEdges(); ++edge) {</div>\n-<div class=\"line\"><a id=\"l00443\" name=\"l00443\"></a><span class=\"lineno\">  443</span> </div>\n-<div class=\"line\"><a id=\"l00444\" name=\"l00444\"></a><span class=\"lineno\">  444</span>        <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a> cVert = refinement.getEdgeChildVertex(edge);</div>\n-<div class=\"line\"><a id=\"l00445\" name=\"l00445\"></a><span class=\"lineno\">  445</span>        <span class=\"keywordflow\">if</span> (<a class=\"code hl_function\" href=\"a00909.html#a98af1cee938a3f984af1e7e9a205080c\">Vtr::IndexIsValid</a>(cVert)) {</div>\n-<div class=\"line\"><a id=\"l00446\" name=\"l00446\"></a><span class=\"lineno\">  446</span> </div>\n-<div class=\"line\"><a id=\"l00447\" name=\"l00447\"></a><span class=\"lineno\">  447</span>            <span class=\"comment\">//  Apply the weights to the parent edges&#39;s vertices</span></div>\n-<div class=\"line\"><a id=\"l00448\" name=\"l00448\"></a><span class=\"lineno\">  448</span>            <a class=\"code hl_class\" href=\"a01353.html\">ConstIndexArray</a> eVerts = parent.getEdgeVertices(edge);</div>\n-<div class=\"line\"><a id=\"l00449\" name=\"l00449\"></a><span class=\"lineno\">  449</span> </div>\n-<div class=\"line\"><a id=\"l00450\" name=\"l00450\"></a><span class=\"lineno\">  450</span>            dst[cVert].Clear();</div>\n-<div class=\"line\"><a id=\"l00451\" name=\"l00451\"></a><span class=\"lineno\">  451</span>            dst[cVert].AddWithWeight(src[eVerts[0]], 0.5f);</div>\n-<div class=\"line\"><a id=\"l00452\" name=\"l00452\"></a><span class=\"lineno\">  452</span>            dst[cVert].AddWithWeight(src[eVerts[1]], 0.5f);</div>\n-<div class=\"line\"><a id=\"l00453\" name=\"l00453\"></a><span class=\"lineno\">  453</span>        }</div>\n-<div class=\"line\"><a id=\"l00454\" name=\"l00454\"></a><span class=\"lineno\">  454</span>    }</div>\n-<div class=\"line\"><a id=\"l00455\" name=\"l00455\"></a><span class=\"lineno\">  455</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> vert = 0; vert &lt; parent.getNumVertices(); ++vert) {</div>\n-<div class=\"line\"><a id=\"l00456\" name=\"l00456\"></a><span class=\"lineno\">  456</span> </div>\n-<div class=\"line\"><a id=\"l00457\" name=\"l00457\"></a><span class=\"lineno\">  457</span>        <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a> cVert = refinement.getVertexChildVertex(vert);</div>\n-<div class=\"line\"><a id=\"l00458\" name=\"l00458\"></a><span class=\"lineno\">  458</span>        <span class=\"keywordflow\">if</span> (<a class=\"code hl_function\" href=\"a00909.html#a98af1cee938a3f984af1e7e9a205080c\">Vtr::IndexIsValid</a>(cVert)) {</div>\n-<div class=\"line\"><a id=\"l00459\" name=\"l00459\"></a><span class=\"lineno\">  459</span> </div>\n-<div class=\"line\"><a id=\"l00460\" name=\"l00460\"></a><span class=\"lineno\">  460</span>            <span class=\"comment\">//  Essentially copy the parent vertex:</span></div>\n-<div class=\"line\"><a id=\"l00461\" name=\"l00461\"></a><span class=\"lineno\">  461</span>            dst[cVert].Clear();</div>\n-<div class=\"line\"><a id=\"l00462\" name=\"l00462\"></a><span class=\"lineno\">  462</span>            dst[cVert].AddWithWeight(src[vert], 1.0f);</div>\n-<div class=\"line\"><a id=\"l00463\" name=\"l00463\"></a><span class=\"lineno\">  463</span>        }</div>\n-<div class=\"line\"><a id=\"l00464\" name=\"l00464\"></a><span class=\"lineno\">  464</span>    }</div>\n-<div class=\"line\"><a id=\"l00465\" name=\"l00465\"></a><span class=\"lineno\">  465</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00466\" name=\"l00466\"></a><span class=\"lineno\">  466</span> </div>\n-<div class=\"line\"><a id=\"l00467\" name=\"l00467\"></a><span class=\"lineno\">  467</span> </div>\n-<div class=\"line\"><a id=\"l00468\" name=\"l00468\"></a><span class=\"lineno\">  468</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00469\" name=\"l00469\"></a><span class=\"lineno\">  469</span><span class=\"comment\">//  Internal implementation methods -- grouping vertices to be interpolated</span></div>\n-<div class=\"line\"><a id=\"l00470\" name=\"l00470\"></a><span class=\"lineno\">  470</span><span class=\"comment\">//  based on the type of parent component from which they originated:</span></div>\n-<div class=\"line\"><a id=\"l00471\" name=\"l00471\"></a><span class=\"lineno\">  471</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00472\" name=\"l00472\"></a><span class=\"lineno\">  472</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00473\" name=\"l00473\"></a><span class=\"lineno\">  473</span><span class=\"keyword\">template</span> &lt;Sdc::SchemeType SCHEME, <span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt;</div>\n-<div class=\"line\"><a id=\"l00474\" name=\"l00474\"></a><span class=\"lineno\">  474</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"line\"><a id=\"l00475\" name=\"l00475\"></a><span class=\"lineno\">  475</span><a class=\"code hl_class\" href=\"a01029.html\">PrimvarRefinerReal&lt;REAL&gt;::interpFromFaces</a>(<span class=\"keywordtype\">int</span> level, T <span class=\"keyword\">const</span> &amp; src, U &amp; dst)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00476\" name=\"l00476\"></a><span class=\"lineno\">  476</span> </div>\n-<div class=\"line\"><a id=\"l00477\" name=\"l00477\"></a><span class=\"lineno\">  477</span>    Vtr::internal::Refinement <span class=\"keyword\">const</span> &amp; refinement = _refiner.getRefinement(level-1);</div>\n-<div class=\"line\"><a id=\"l00478\" name=\"l00478\"></a><span class=\"lineno\">  478</span>    Vtr::internal::Level <span class=\"keyword\">const</span> &amp;      parent     = refinement.parent();</div>\n-<div class=\"line\"><a id=\"l00479\" name=\"l00479\"></a><span class=\"lineno\">  479</span> </div>\n-<div class=\"line\"><a id=\"l00480\" name=\"l00480\"></a><span class=\"lineno\">  480</span>    <span class=\"keywordflow\">if</span> (refinement.getNumChildVerticesFromFaces() == 0) <span class=\"keywordflow\">return</span>;</div>\n-<div class=\"line\"><a id=\"l00481\" name=\"l00481\"></a><span class=\"lineno\">  481</span> </div>\n-<div class=\"line\"><a id=\"l00482\" name=\"l00482\"></a><span class=\"lineno\">  482</span>    <a class=\"code hl_class\" href=\"a01341.html\">Sdc::Scheme&lt;SCHEME&gt;</a> scheme(_refiner._subdivOptions);</div>\n-<div class=\"line\"><a id=\"l00483\" name=\"l00483\"></a><span class=\"lineno\">  483</span> </div>\n-<div class=\"line\"><a id=\"l00484\" name=\"l00484\"></a><span class=\"lineno\">  484</span>    Vtr::internal::StackBuffer&lt;Weight,16&gt; fVertWeights(parent.getMaxValence());</div>\n-<div class=\"line\"><a id=\"l00485\" name=\"l00485\"></a><span class=\"lineno\">  485</span> </div>\n-<div class=\"line\"><a id=\"l00486\" name=\"l00486\"></a><span class=\"lineno\">  486</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> face = 0; face &lt; parent.getNumFaces(); ++face) {</div>\n-<div class=\"line\"><a id=\"l00487\" name=\"l00487\"></a><span class=\"lineno\">  487</span> </div>\n-<div class=\"line\"><a id=\"l00488\" name=\"l00488\"></a><span class=\"lineno\">  488</span>        <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a> cVert = refinement.getFaceChildVertex(face);</div>\n-<div class=\"line\"><a id=\"l00489\" name=\"l00489\"></a><span class=\"lineno\">  489</span>        <span class=\"keywordflow\">if</span> (!<a class=\"code hl_function\" href=\"a00909.html#a98af1cee938a3f984af1e7e9a205080c\">Vtr::IndexIsValid</a>(cVert))</div>\n-<div class=\"line\"><a id=\"l00490\" name=\"l00490\"></a><span class=\"lineno\">  490</span>            <span class=\"keywordflow\">continue</span>;</div>\n-<div class=\"line\"><a id=\"l00491\" name=\"l00491\"></a><span class=\"lineno\">  491</span> </div>\n-<div class=\"line\"><a id=\"l00492\" name=\"l00492\"></a><span class=\"lineno\">  492</span>        <span class=\"comment\">//  Declare and compute mask weights for this vertex relative to its parent face:</span></div>\n-<div class=\"line\"><a id=\"l00493\" name=\"l00493\"></a><span class=\"lineno\">  493</span>        <a class=\"code hl_class\" href=\"a01353.html\">ConstIndexArray</a> fVerts = parent.getFaceVertices(face);</div>\n-<div class=\"line\"><a id=\"l00494\" name=\"l00494\"></a><span class=\"lineno\">  494</span> </div>\n-<div class=\"line\"><a id=\"l00495\" name=\"l00495\"></a><span class=\"lineno\">  495</span>        Mask fMask(fVertWeights, 0, 0);</div>\n-<div class=\"line\"><a id=\"l00496\" name=\"l00496\"></a><span class=\"lineno\">  496</span>        Vtr::internal::FaceInterface fHood(fVerts.<a class=\"code hl_function\" href=\"a01353.html#a60304b65bf89363bcc3165d3cde67f86\">size</a>());</div>\n-<div class=\"line\"><a id=\"l00497\" name=\"l00497\"></a><span class=\"lineno\">  497</span> </div>\n-<div class=\"line\"><a id=\"l00498\" name=\"l00498\"></a><span class=\"lineno\">  498</span>        scheme.ComputeFaceVertexMask(fHood, fMask);</div>\n-<div class=\"line\"><a id=\"l00499\" name=\"l00499\"></a><span class=\"lineno\">  499</span> </div>\n-<div class=\"line\"><a id=\"l00500\" name=\"l00500\"></a><span class=\"lineno\">  500</span>        <span class=\"comment\">//  Apply the weights to the parent face&#39;s vertices:</span></div>\n-<div class=\"line\"><a id=\"l00501\" name=\"l00501\"></a><span class=\"lineno\">  501</span>        dst[cVert].Clear();</div>\n-<div class=\"line\"><a id=\"l00502\" name=\"l00502\"></a><span class=\"lineno\">  502</span> </div>\n-<div class=\"line\"><a id=\"l00503\" name=\"l00503\"></a><span class=\"lineno\">  503</span>        <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; fVerts.<a class=\"code hl_function\" href=\"a01353.html#a60304b65bf89363bcc3165d3cde67f86\">size</a>(); ++i) {</div>\n-<div class=\"line\"><a id=\"l00504\" name=\"l00504\"></a><span class=\"lineno\">  504</span> </div>\n-<div class=\"line\"><a id=\"l00505\" name=\"l00505\"></a><span class=\"lineno\">  505</span>            dst[cVert].AddWithWeight(src[fVerts[i]], fVertWeights[i]);</div>\n-<div class=\"line\"><a id=\"l00506\" name=\"l00506\"></a><span class=\"lineno\">  506</span>        }</div>\n-<div class=\"line\"><a id=\"l00507\" name=\"l00507\"></a><span class=\"lineno\">  507</span>    }</div>\n-<div class=\"line\"><a id=\"l00508\" name=\"l00508\"></a><span class=\"lineno\">  508</span>}</div>\n-<div class=\"line\"><a id=\"l00509\" name=\"l00509\"></a><span class=\"lineno\">  509</span> </div>\n-<div class=\"line\"><a id=\"l00510\" name=\"l00510\"></a><span class=\"lineno\">  510</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00511\" name=\"l00511\"></a><span class=\"lineno\">  511</span><span class=\"keyword\">template</span> &lt;Sdc::SchemeType SCHEME, <span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt;</div>\n-<div class=\"line\"><a id=\"l00512\" name=\"l00512\"></a><span class=\"lineno\">  512</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"line\"><a id=\"l00513\" name=\"l00513\"></a><span class=\"lineno\">  513</span>PrimvarRefinerReal&lt;REAL&gt;::interpFromEdges(<span class=\"keywordtype\">int</span> level, T <span class=\"keyword\">const</span> &amp; src, U &amp; dst)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00514\" name=\"l00514\"></a><span class=\"lineno\">  514</span> </div>\n-<div class=\"line\"><a id=\"l00515\" name=\"l00515\"></a><span class=\"lineno\">  515</span>    Vtr::internal::Refinement <span class=\"keyword\">const</span> &amp; refinement = _refiner.getRefinement(level-1);</div>\n-<div class=\"line\"><a id=\"l00516\" name=\"l00516\"></a><span class=\"lineno\">  516</span>    Vtr::internal::Level <span class=\"keyword\">const</span> &amp;      parent     = refinement.parent();</div>\n-<div class=\"line\"><a id=\"l00517\" name=\"l00517\"></a><span class=\"lineno\">  517</span>    Vtr::internal::Level <span class=\"keyword\">const</span> &amp;      child      = refinement.child();</div>\n-<div class=\"line\"><a id=\"l00518\" name=\"l00518\"></a><span class=\"lineno\">  518</span> </div>\n-<div class=\"line\"><a id=\"l00519\" name=\"l00519\"></a><span class=\"lineno\">  519</span>    Sdc::Scheme&lt;SCHEME&gt; scheme(_refiner._subdivOptions);</div>\n-<div class=\"line\"><a id=\"l00520\" name=\"l00520\"></a><span class=\"lineno\">  520</span> </div>\n-<div class=\"line\"><a id=\"l00521\" name=\"l00521\"></a><span class=\"lineno\">  521</span>    Vtr::internal::EdgeInterface eHood(parent);</div>\n-<div class=\"line\"><a id=\"l00522\" name=\"l00522\"></a><span class=\"lineno\">  522</span> </div>\n-<div class=\"line\"><a id=\"l00523\" name=\"l00523\"></a><span class=\"lineno\">  523</span>    Weight                               eVertWeights[2];</div>\n-<div class=\"line\"><a id=\"l00524\" name=\"l00524\"></a><span class=\"lineno\">  524</span>    Vtr::internal::StackBuffer&lt;Weight,8&gt; eFaceWeights(parent.getMaxEdgeFaces());</div>\n-<div class=\"line\"><a id=\"l00525\" name=\"l00525\"></a><span class=\"lineno\">  525</span> </div>\n-<div class=\"line\"><a id=\"l00526\" name=\"l00526\"></a><span class=\"lineno\">  526</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> edge = 0; edge &lt; parent.getNumEdges(); ++edge) {</div>\n-<div class=\"line\"><a id=\"l00527\" name=\"l00527\"></a><span class=\"lineno\">  527</span> </div>\n-<div class=\"line\"><a id=\"l00528\" name=\"l00528\"></a><span class=\"lineno\">  528</span>        <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a> cVert = refinement.getEdgeChildVertex(edge);</div>\n-<div class=\"line\"><a id=\"l00529\" name=\"l00529\"></a><span class=\"lineno\">  529</span>        <span class=\"keywordflow\">if</span> (!<a class=\"code hl_function\" href=\"a00909.html#a98af1cee938a3f984af1e7e9a205080c\">Vtr::IndexIsValid</a>(cVert))</div>\n-<div class=\"line\"><a id=\"l00530\" name=\"l00530\"></a><span class=\"lineno\">  530</span>            <span class=\"keywordflow\">continue</span>;</div>\n-<div class=\"line\"><a id=\"l00531\" name=\"l00531\"></a><span class=\"lineno\">  531</span> </div>\n-<div class=\"line\"><a id=\"l00532\" name=\"l00532\"></a><span class=\"lineno\">  532</span>        <span class=\"comment\">//  Declare and compute mask weights for this vertex relative to its parent edge:</span></div>\n-<div class=\"line\"><a id=\"l00533\" name=\"l00533\"></a><span class=\"lineno\">  533</span>        <a class=\"code hl_typedef\" href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">ConstIndexArray</a> eVerts = parent.getEdgeVertices(edge),</div>\n-<div class=\"line\"><a id=\"l00534\" name=\"l00534\"></a><span class=\"lineno\">  534</span>                        eFaces = parent.getEdgeFaces(edge);</div>\n-<div class=\"line\"><a id=\"l00535\" name=\"l00535\"></a><span class=\"lineno\">  535</span> </div>\n-<div class=\"line\"><a id=\"l00536\" name=\"l00536\"></a><span class=\"lineno\">  536</span>        Mask eMask(eVertWeights, 0, eFaceWeights);</div>\n-<div class=\"line\"><a id=\"l00537\" name=\"l00537\"></a><span class=\"lineno\">  537</span> </div>\n-<div class=\"line\"><a id=\"l00538\" name=\"l00538\"></a><span class=\"lineno\">  538</span>        eHood.SetIndex(edge);</div>\n-<div class=\"line\"><a id=\"l00539\" name=\"l00539\"></a><span class=\"lineno\">  539</span> </div>\n-<div class=\"line\"><a id=\"l00540\" name=\"l00540\"></a><span class=\"lineno\">  540</span>        <a class=\"code hl_enumeration\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78\">Sdc::Crease::Rule</a> pRule = (parent.getEdgeSharpness(edge) &gt; 0.0f) ? <a class=\"code hl_enumvalue\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78a966fa1ae8aeb8587c498cf6a92cc3335\">Sdc::Crease::RULE_CREASE</a> : Sdc::Crease::RULE_SMOOTH;</div>\n-<div class=\"line\"><a id=\"l00541\" name=\"l00541\"></a><span class=\"lineno\">  541</span>        <a class=\"code hl_enumeration\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78\">Sdc::Crease::Rule</a> cRule = child.getVertexRule(cVert);</div>\n-<div class=\"line\"><a id=\"l00542\" name=\"l00542\"></a><span class=\"lineno\">  542</span> </div>\n-<div class=\"line\"><a id=\"l00543\" name=\"l00543\"></a><span class=\"lineno\">  543</span>        scheme.ComputeEdgeVertexMask(eHood, eMask, pRule, cRule);</div>\n-<div class=\"line\"><a id=\"l00544\" name=\"l00544\"></a><span class=\"lineno\">  544</span> </div>\n-<div class=\"line\"><a id=\"l00545\" name=\"l00545\"></a><span class=\"lineno\">  545</span>        <span class=\"comment\">//  Apply the weights to the parent edges&#39;s vertices and (if applicable) to</span></div>\n-<div class=\"line\"><a id=\"l00546\" name=\"l00546\"></a><span class=\"lineno\">  546</span>        <span class=\"comment\">//  the child vertices of its incident faces:</span></div>\n-<div class=\"line\"><a id=\"l00547\" name=\"l00547\"></a><span class=\"lineno\">  547</span>        dst[cVert].Clear();</div>\n-<div class=\"line\"><a id=\"l00548\" name=\"l00548\"></a><span class=\"lineno\">  548</span>        dst[cVert].AddWithWeight(src[eVerts[0]], eVertWeights[0]);</div>\n-<div class=\"line\"><a id=\"l00549\" name=\"l00549\"></a><span class=\"lineno\">  549</span>        dst[cVert].AddWithWeight(src[eVerts[1]], eVertWeights[1]);</div>\n-<div class=\"line\"><a id=\"l00550\" name=\"l00550\"></a><span class=\"lineno\">  550</span> </div>\n-<div class=\"line\"><a id=\"l00551\" name=\"l00551\"></a><span class=\"lineno\">  551</span>        <span class=\"keywordflow\">if</span> (eMask.GetNumFaceWeights() &gt; 0) {</div>\n-<div class=\"line\"><a id=\"l00552\" name=\"l00552\"></a><span class=\"lineno\">  552</span> </div>\n-<div class=\"line\"><a id=\"l00553\" name=\"l00553\"></a><span class=\"lineno\">  553</span>            <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; eFaces.size(); ++i) {</div>\n-<div class=\"line\"><a id=\"l00554\" name=\"l00554\"></a><span class=\"lineno\">  554</span> </div>\n-<div class=\"line\"><a id=\"l00555\" name=\"l00555\"></a><span class=\"lineno\">  555</span>                <span class=\"keywordflow\">if</span> (eMask.AreFaceWeightsForFaceCenters()) {</div>\n-<div class=\"line\"><a id=\"l00556\" name=\"l00556\"></a><span class=\"lineno\">  556</span>                    assert(refinement.getNumChildVerticesFromFaces() &gt; 0);</div>\n-<div class=\"line\"><a id=\"l00557\" name=\"l00557\"></a><span class=\"lineno\">  557</span>                    <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a> cVertOfFace = refinement.getFaceChildVertex(eFaces[i]);</div>\n-<div class=\"line\"><a id=\"l00558\" name=\"l00558\"></a><span class=\"lineno\">  558</span> </div>\n-<div class=\"line\"><a id=\"l00559\" name=\"l00559\"></a><span class=\"lineno\">  559</span>                    assert(<a class=\"code hl_function\" href=\"a00909.html#a98af1cee938a3f984af1e7e9a205080c\">Vtr::IndexIsValid</a>(cVertOfFace));</div>\n-<div class=\"line\"><a id=\"l00560\" name=\"l00560\"></a><span class=\"lineno\">  560</span>                    dst[cVert].AddWithWeight(dst[cVertOfFace], eFaceWeights[i]);</div>\n-<div class=\"line\"><a id=\"l00561\" name=\"l00561\"></a><span class=\"lineno\">  561</span>                } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00562\" name=\"l00562\"></a><span class=\"lineno\">  562</span>                    <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a>            pFace      = eFaces[i];</div>\n-<div class=\"line\"><a id=\"l00563\" name=\"l00563\"></a><span class=\"lineno\">  563</span>                    <a class=\"code hl_typedef\" href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">ConstIndexArray</a> pFaceEdges = parent.getFaceEdges(pFace),</div>\n-<div class=\"line\"><a id=\"l00564\" name=\"l00564\"></a><span class=\"lineno\">  564</span>                                    pFaceVerts = parent.getFaceVertices(pFace);</div>\n-<div class=\"line\"><a id=\"l00565\" name=\"l00565\"></a><span class=\"lineno\">  565</span> </div>\n-<div class=\"line\"><a id=\"l00566\" name=\"l00566\"></a><span class=\"lineno\">  566</span>                    <span class=\"keywordtype\">int</span> eInFace = 0;</div>\n-<div class=\"line\"><a id=\"l00567\" name=\"l00567\"></a><span class=\"lineno\">  567</span>                    <span class=\"keywordflow\">for</span> ( ; pFaceEdges[eInFace] != edge; ++eInFace ) ;</div>\n-<div class=\"line\"><a id=\"l00568\" name=\"l00568\"></a><span class=\"lineno\">  568</span> </div>\n-<div class=\"line\"><a id=\"l00569\" name=\"l00569\"></a><span class=\"lineno\">  569</span>                    <span class=\"keywordtype\">int</span> vInFace = eInFace + 2;</div>\n-<div class=\"line\"><a id=\"l00570\" name=\"l00570\"></a><span class=\"lineno\">  570</span>                    <span class=\"keywordflow\">if</span> (vInFace &gt;= pFaceVerts.size()) vInFace -= pFaceVerts.<a class=\"code hl_function\" href=\"a01353.html#a60304b65bf89363bcc3165d3cde67f86\">size</a>();</div>\n-<div class=\"line\"><a id=\"l00571\" name=\"l00571\"></a><span class=\"lineno\">  571</span> </div>\n-<div class=\"line\"><a id=\"l00572\" name=\"l00572\"></a><span class=\"lineno\">  572</span>                    <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a> pVertNext = pFaceVerts[vInFace];</div>\n-<div class=\"line\"><a id=\"l00573\" name=\"l00573\"></a><span class=\"lineno\">  573</span>                    dst[cVert].AddWithWeight(src[pVertNext], eFaceWeights[i]);</div>\n-<div class=\"line\"><a id=\"l00574\" name=\"l00574\"></a><span class=\"lineno\">  574</span>                }</div>\n-<div class=\"line\"><a id=\"l00575\" name=\"l00575\"></a><span class=\"lineno\">  575</span>            }</div>\n-<div class=\"line\"><a id=\"l00576\" name=\"l00576\"></a><span class=\"lineno\">  576</span>        }</div>\n-<div class=\"line\"><a id=\"l00577\" name=\"l00577\"></a><span class=\"lineno\">  577</span>    }</div>\n-<div class=\"line\"><a id=\"l00578\" name=\"l00578\"></a><span class=\"lineno\">  578</span>}</div>\n-<div class=\"line\"><a id=\"l00579\" name=\"l00579\"></a><span class=\"lineno\">  579</span> </div>\n-<div class=\"line\"><a id=\"l00580\" name=\"l00580\"></a><span class=\"lineno\">  580</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00581\" name=\"l00581\"></a><span class=\"lineno\">  581</span><span class=\"keyword\">template</span> &lt;Sdc::SchemeType SCHEME, <span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt;</div>\n-<div class=\"line\"><a id=\"l00582\" name=\"l00582\"></a><span class=\"lineno\">  582</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"line\"><a id=\"l00583\" name=\"l00583\"></a><span class=\"lineno\">  583</span>PrimvarRefinerReal&lt;REAL&gt;::interpFromVerts(<span class=\"keywordtype\">int</span> level, T <span class=\"keyword\">const</span> &amp; src, U &amp; dst)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00584\" name=\"l00584\"></a><span class=\"lineno\">  584</span> </div>\n-<div class=\"line\"><a id=\"l00585\" name=\"l00585\"></a><span class=\"lineno\">  585</span>    Vtr::internal::Refinement <span class=\"keyword\">const</span> &amp; refinement = _refiner.getRefinement(level-1);</div>\n-<div class=\"line\"><a id=\"l00586\" name=\"l00586\"></a><span class=\"lineno\">  586</span>    Vtr::internal::Level <span class=\"keyword\">const</span> &amp;      parent     = refinement.parent();</div>\n-<div class=\"line\"><a id=\"l00587\" name=\"l00587\"></a><span class=\"lineno\">  587</span>    Vtr::internal::Level <span class=\"keyword\">const</span> &amp;      child      = refinement.child();</div>\n-<div class=\"line\"><a id=\"l00588\" name=\"l00588\"></a><span class=\"lineno\">  588</span> </div>\n-<div class=\"line\"><a id=\"l00589\" name=\"l00589\"></a><span class=\"lineno\">  589</span>    Sdc::Scheme&lt;SCHEME&gt; scheme(_refiner._subdivOptions);</div>\n-<div class=\"line\"><a id=\"l00590\" name=\"l00590\"></a><span class=\"lineno\">  590</span> </div>\n-<div class=\"line\"><a id=\"l00591\" name=\"l00591\"></a><span class=\"lineno\">  591</span>    Vtr::internal::VertexInterface vHood(parent, child);</div>\n-<div class=\"line\"><a id=\"l00592\" name=\"l00592\"></a><span class=\"lineno\">  592</span> </div>\n-<div class=\"line\"><a id=\"l00593\" name=\"l00593\"></a><span class=\"lineno\">  593</span>    Vtr::internal::StackBuffer&lt;Weight,32&gt; weightBuffer(2*parent.getMaxValence());</div>\n-<div class=\"line\"><a id=\"l00594\" name=\"l00594\"></a><span class=\"lineno\">  594</span> </div>\n-<div class=\"line\"><a id=\"l00595\" name=\"l00595\"></a><span class=\"lineno\">  595</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> vert = 0; vert &lt; parent.getNumVertices(); ++vert) {</div>\n-<div class=\"line\"><a id=\"l00596\" name=\"l00596\"></a><span class=\"lineno\">  596</span> </div>\n-<div class=\"line\"><a id=\"l00597\" name=\"l00597\"></a><span class=\"lineno\">  597</span>        <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a> cVert = refinement.getVertexChildVertex(vert);</div>\n-<div class=\"line\"><a id=\"l00598\" name=\"l00598\"></a><span class=\"lineno\">  598</span>        <span class=\"keywordflow\">if</span> (!<a class=\"code hl_function\" href=\"a00909.html#a98af1cee938a3f984af1e7e9a205080c\">Vtr::IndexIsValid</a>(cVert))</div>\n-<div class=\"line\"><a id=\"l00599\" name=\"l00599\"></a><span class=\"lineno\">  599</span>            <span class=\"keywordflow\">continue</span>;</div>\n-<div class=\"line\"><a id=\"l00600\" name=\"l00600\"></a><span class=\"lineno\">  600</span> </div>\n-<div class=\"line\"><a id=\"l00601\" name=\"l00601\"></a><span class=\"lineno\">  601</span>        <span class=\"comment\">//  Declare and compute mask weights for this vertex relative to its parent edge:</span></div>\n-<div class=\"line\"><a id=\"l00602\" name=\"l00602\"></a><span class=\"lineno\">  602</span>        <a class=\"code hl_typedef\" href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">ConstIndexArray</a> vEdges = parent.getVertexEdges(vert),</div>\n-<div class=\"line\"><a id=\"l00603\" name=\"l00603\"></a><span class=\"lineno\">  603</span>                        vFaces = parent.getVertexFaces(vert);</div>\n-<div class=\"line\"><a id=\"l00604\" name=\"l00604\"></a><span class=\"lineno\">  604</span> </div>\n-<div class=\"line\"><a id=\"l00605\" name=\"l00605\"></a><span class=\"lineno\">  605</span>        Weight   vVertWeight,</div>\n-<div class=\"line\"><a id=\"l00606\" name=\"l00606\"></a><span class=\"lineno\">  606</span>               * vEdgeWeights = weightBuffer,</div>\n-<div class=\"line\"><a id=\"l00607\" name=\"l00607\"></a><span class=\"lineno\">  607</span>               * vFaceWeights = vEdgeWeights + vEdges.<a class=\"code hl_function\" href=\"a01353.html#a60304b65bf89363bcc3165d3cde67f86\">size</a>();</div>\n-<div class=\"line\"><a id=\"l00608\" name=\"l00608\"></a><span class=\"lineno\">  608</span> </div>\n-<div class=\"line\"><a id=\"l00609\" name=\"l00609\"></a><span class=\"lineno\">  609</span>        Mask vMask(&amp;vVertWeight, vEdgeWeights, vFaceWeights);</div>\n-<div class=\"line\"><a id=\"l00610\" name=\"l00610\"></a><span class=\"lineno\">  610</span> </div>\n-<div class=\"line\"><a id=\"l00611\" name=\"l00611\"></a><span class=\"lineno\">  611</span>        vHood.SetIndex(vert, cVert);</div>\n-<div class=\"line\"><a id=\"l00612\" name=\"l00612\"></a><span class=\"lineno\">  612</span> </div>\n-<div class=\"line\"><a id=\"l00613\" name=\"l00613\"></a><span class=\"lineno\">  613</span>        <a class=\"code hl_enumeration\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78\">Sdc::Crease::Rule</a> pRule = parent.getVertexRule(vert);</div>\n-<div class=\"line\"><a id=\"l00614\" name=\"l00614\"></a><span class=\"lineno\">  614</span>        <a class=\"code hl_enumeration\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78\">Sdc::Crease::Rule</a> cRule = child.getVertexRule(cVert);</div>\n-<div class=\"line\"><a id=\"l00615\" name=\"l00615\"></a><span class=\"lineno\">  615</span> </div>\n-<div class=\"line\"><a id=\"l00616\" name=\"l00616\"></a><span class=\"lineno\">  616</span>        scheme.ComputeVertexVertexMask(vHood, vMask, pRule, cRule);</div>\n-<div class=\"line\"><a id=\"l00617\" name=\"l00617\"></a><span class=\"lineno\">  617</span> </div>\n-<div class=\"line\"><a id=\"l00618\" name=\"l00618\"></a><span class=\"lineno\">  618</span>        <span class=\"comment\">//  Apply the weights to the parent vertex, the vertices opposite its incident</span></div>\n-<div class=\"line\"><a id=\"l00619\" name=\"l00619\"></a><span class=\"lineno\">  619</span>        <span class=\"comment\">//  edges, and the child vertices of its incident faces:</span></div>\n-<div class=\"line\"><a id=\"l00620\" name=\"l00620\"></a><span class=\"lineno\">  620</span>        <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00621\" name=\"l00621\"></a><span class=\"lineno\">  621</span>        <span class=\"comment\">//  In order to improve numerical precision, it&#39;s better to apply smaller weights</span></div>\n-<div class=\"line\"><a id=\"l00622\" name=\"l00622\"></a><span class=\"lineno\">  622</span>        <span class=\"comment\">//  first, so begin with the face-weights followed by the edge-weights and the</span></div>\n-<div class=\"line\"><a id=\"l00623\" name=\"l00623\"></a><span class=\"lineno\">  623</span>        <span class=\"comment\">//  vertex weight last.</span></div>\n-<div class=\"line\"><a id=\"l00624\" name=\"l00624\"></a><span class=\"lineno\">  624</span>        dst[cVert].Clear();</div>\n-<div class=\"line\"><a id=\"l00625\" name=\"l00625\"></a><span class=\"lineno\">  625</span> </div>\n-<div class=\"line\"><a id=\"l00626\" name=\"l00626\"></a><span class=\"lineno\">  626</span>        <span class=\"keywordflow\">if</span> (vMask.GetNumFaceWeights() &gt; 0) {</div>\n-<div class=\"line\"><a id=\"l00627\" name=\"l00627\"></a><span class=\"lineno\">  627</span>            assert(vMask.AreFaceWeightsForFaceCenters());</div>\n-<div class=\"line\"><a id=\"l00628\" name=\"l00628\"></a><span class=\"lineno\">  628</span> </div>\n-<div class=\"line\"><a id=\"l00629\" name=\"l00629\"></a><span class=\"lineno\">  629</span>            <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; vFaces.size(); ++i) {</div>\n-<div class=\"line\"><a id=\"l00630\" name=\"l00630\"></a><span class=\"lineno\">  630</span> </div>\n-<div class=\"line\"><a id=\"l00631\" name=\"l00631\"></a><span class=\"lineno\">  631</span>                <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a> cVertOfFace = refinement.getFaceChildVertex(vFaces[i]);</div>\n-<div class=\"line\"><a id=\"l00632\" name=\"l00632\"></a><span class=\"lineno\">  632</span>                assert(<a class=\"code hl_function\" href=\"a00909.html#a98af1cee938a3f984af1e7e9a205080c\">Vtr::IndexIsValid</a>(cVertOfFace));</div>\n-<div class=\"line\"><a id=\"l00633\" name=\"l00633\"></a><span class=\"lineno\">  633</span>                dst[cVert].AddWithWeight(dst[cVertOfFace], vFaceWeights[i]);</div>\n-<div class=\"line\"><a id=\"l00634\" name=\"l00634\"></a><span class=\"lineno\">  634</span>            }</div>\n-<div class=\"line\"><a id=\"l00635\" name=\"l00635\"></a><span class=\"lineno\">  635</span>        }</div>\n-<div class=\"line\"><a id=\"l00636\" name=\"l00636\"></a><span class=\"lineno\">  636</span>        <span class=\"keywordflow\">if</span> (vMask.GetNumEdgeWeights() &gt; 0) {</div>\n-<div class=\"line\"><a id=\"l00637\" name=\"l00637\"></a><span class=\"lineno\">  637</span> </div>\n-<div class=\"line\"><a id=\"l00638\" name=\"l00638\"></a><span class=\"lineno\">  638</span>            <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; vEdges.size(); ++i) {</div>\n-<div class=\"line\"><a id=\"l00639\" name=\"l00639\"></a><span class=\"lineno\">  639</span> </div>\n-<div class=\"line\"><a id=\"l00640\" name=\"l00640\"></a><span class=\"lineno\">  640</span>                <a class=\"code hl_typedef\" href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">ConstIndexArray</a> eVerts = parent.getEdgeVertices(vEdges[i]);</div>\n-<div class=\"line\"><a id=\"l00641\" name=\"l00641\"></a><span class=\"lineno\">  641</span>                <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a> pVertOppositeEdge = (eVerts[0] == vert) ? eVerts[1] : eVerts[0];</div>\n-<div class=\"line\"><a id=\"l00642\" name=\"l00642\"></a><span class=\"lineno\">  642</span> </div>\n-<div class=\"line\"><a id=\"l00643\" name=\"l00643\"></a><span class=\"lineno\">  643</span>                dst[cVert].AddWithWeight(src[pVertOppositeEdge], vEdgeWeights[i]);</div>\n-<div class=\"line\"><a id=\"l00644\" name=\"l00644\"></a><span class=\"lineno\">  644</span>            }</div>\n-<div class=\"line\"><a id=\"l00645\" name=\"l00645\"></a><span class=\"lineno\">  645</span>        }</div>\n-<div class=\"line\"><a id=\"l00646\" name=\"l00646\"></a><span class=\"lineno\">  646</span>        dst[cVert].AddWithWeight(src[vert], vVertWeight);</div>\n-<div class=\"line\"><a id=\"l00647\" name=\"l00647\"></a><span class=\"lineno\">  647</span>    }</div>\n-<div class=\"line\"><a id=\"l00648\" name=\"l00648\"></a><span class=\"lineno\">  648</span>}</div>\n-<div class=\"line\"><a id=\"l00649\" name=\"l00649\"></a><span class=\"lineno\">  649</span> </div>\n-<div class=\"line\"><a id=\"l00650\" name=\"l00650\"></a><span class=\"lineno\">  650</span> </div>\n-<div class=\"line\"><a id=\"l00651\" name=\"l00651\"></a><span class=\"lineno\">  651</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00652\" name=\"l00652\"></a><span class=\"lineno\">  652</span><span class=\"comment\">// Internal face-varying implementation details:</span></div>\n-<div class=\"line\"><a id=\"l00653\" name=\"l00653\"></a><span class=\"lineno\">  653</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00654\" name=\"l00654\"></a><span class=\"lineno\">  654</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00655\" name=\"l00655\"></a><span class=\"lineno\">  655</span><span class=\"keyword\">template</span> &lt;Sdc::SchemeType SCHEME, <span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt;</div>\n-<div class=\"line\"><a id=\"l00656\" name=\"l00656\"></a><span class=\"lineno\">  656</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"line\"><a id=\"l00657\" name=\"l00657\"></a><span class=\"lineno\">  657</span>PrimvarRefinerReal&lt;REAL&gt;::interpFVarFromFaces(<span class=\"keywordtype\">int</span> level, T <span class=\"keyword\">const</span> &amp; src, U &amp; dst, <span class=\"keywordtype\">int</span> channel)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00658\" name=\"l00658\"></a><span class=\"lineno\">  658</span> </div>\n-<div class=\"line\"><a id=\"l00659\" name=\"l00659\"></a><span class=\"lineno\">  659</span>    Vtr::internal::Refinement <span class=\"keyword\">const</span> &amp; refinement = _refiner.getRefinement(level-1);</div>\n-<div class=\"line\"><a id=\"l00660\" name=\"l00660\"></a><span class=\"lineno\">  660</span> </div>\n-<div class=\"line\"><a id=\"l00661\" name=\"l00661\"></a><span class=\"lineno\">  661</span>    <span class=\"keywordflow\">if</span> (refinement.getNumChildVerticesFromFaces() == 0) <span class=\"keywordflow\">return</span>;</div>\n-<div class=\"line\"><a id=\"l00662\" name=\"l00662\"></a><span class=\"lineno\">  662</span> </div>\n-<div class=\"line\"><a id=\"l00663\" name=\"l00663\"></a><span class=\"lineno\">  663</span>    Sdc::Scheme&lt;SCHEME&gt; scheme(_refiner._subdivOptions);</div>\n-<div class=\"line\"><a id=\"l00664\" name=\"l00664\"></a><span class=\"lineno\">  664</span> </div>\n-<div class=\"line\"><a id=\"l00665\" name=\"l00665\"></a><span class=\"lineno\">  665</span>    Vtr::internal::Level <span class=\"keyword\">const</span> &amp; parentLevel = refinement.parent();</div>\n-<div class=\"line\"><a id=\"l00666\" name=\"l00666\"></a><span class=\"lineno\">  666</span>    Vtr::internal::Level <span class=\"keyword\">const</span> &amp; childLevel  = refinement.child();</div>\n-<div class=\"line\"><a id=\"l00667\" name=\"l00667\"></a><span class=\"lineno\">  667</span> </div>\n-<div class=\"line\"><a id=\"l00668\" name=\"l00668\"></a><span class=\"lineno\">  668</span>    Vtr::internal::FVarLevel <span class=\"keyword\">const</span> &amp; parentFVar = parentLevel.getFVarLevel(channel);</div>\n-<div class=\"line\"><a id=\"l00669\" name=\"l00669\"></a><span class=\"lineno\">  669</span>    Vtr::internal::FVarLevel <span class=\"keyword\">const</span> &amp; childFVar  = childLevel.getFVarLevel(channel);</div>\n-<div class=\"line\"><a id=\"l00670\" name=\"l00670\"></a><span class=\"lineno\">  670</span> </div>\n-<div class=\"line\"><a id=\"l00671\" name=\"l00671\"></a><span class=\"lineno\">  671</span>    Vtr::internal::StackBuffer&lt;Weight,16&gt; fValueWeights(parentLevel.getMaxValence());</div>\n-<div class=\"line\"><a id=\"l00672\" name=\"l00672\"></a><span class=\"lineno\">  672</span> </div>\n-<div class=\"line\"><a id=\"l00673\" name=\"l00673\"></a><span class=\"lineno\">  673</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> face = 0; face &lt; parentLevel.getNumFaces(); ++face) {</div>\n-<div class=\"line\"><a id=\"l00674\" name=\"l00674\"></a><span class=\"lineno\">  674</span> </div>\n-<div class=\"line\"><a id=\"l00675\" name=\"l00675\"></a><span class=\"lineno\">  675</span>        <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a> cVert = refinement.getFaceChildVertex(face);</div>\n-<div class=\"line\"><a id=\"l00676\" name=\"l00676\"></a><span class=\"lineno\">  676</span>        <span class=\"keywordflow\">if</span> (!<a class=\"code hl_function\" href=\"a00909.html#a98af1cee938a3f984af1e7e9a205080c\">Vtr::IndexIsValid</a>(cVert))</div>\n-<div class=\"line\"><a id=\"l00677\" name=\"l00677\"></a><span class=\"lineno\">  677</span>            <span class=\"keywordflow\">continue</span>;</div>\n-<div class=\"line\"><a id=\"l00678\" name=\"l00678\"></a><span class=\"lineno\">  678</span> </div>\n-<div class=\"line\"><a id=\"l00679\" name=\"l00679\"></a><span class=\"lineno\">  679</span>        <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a> cVertValue = childFVar.getVertexValueOffset(cVert);</div>\n-<div class=\"line\"><a id=\"l00680\" name=\"l00680\"></a><span class=\"lineno\">  680</span> </div>\n-<div class=\"line\"><a id=\"l00681\" name=\"l00681\"></a><span class=\"lineno\">  681</span>        <span class=\"comment\">//  The only difference for face-varying here is that we get the values associated</span></div>\n-<div class=\"line\"><a id=\"l00682\" name=\"l00682\"></a><span class=\"lineno\">  682</span>        <span class=\"comment\">//  with each face-vertex directly from the FVarLevel, rather than using the parent</span></div>\n-<div class=\"line\"><a id=\"l00683\" name=\"l00683\"></a><span class=\"lineno\">  683</span>        <span class=\"comment\">//  face-vertices directly.  If any face-vertex has any sibling values, then we may</span></div>\n-<div class=\"line\"><a id=\"l00684\" name=\"l00684\"></a><span class=\"lineno\">  684</span>        <span class=\"comment\">//  get the wrong one using the face-vertex index directly.</span></div>\n-<div class=\"line\"><a id=\"l00685\" name=\"l00685\"></a><span class=\"lineno\">  685</span> </div>\n-<div class=\"line\"><a id=\"l00686\" name=\"l00686\"></a><span class=\"lineno\">  686</span>        <span class=\"comment\">//  Declare and compute mask weights for this vertex relative to its parent face:</span></div>\n-<div class=\"line\"><a id=\"l00687\" name=\"l00687\"></a><span class=\"lineno\">  687</span>        <a class=\"code hl_typedef\" href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">ConstIndexArray</a> fValues = parentFVar.getFaceValues(face);</div>\n-<div class=\"line\"><a id=\"l00688\" name=\"l00688\"></a><span class=\"lineno\">  688</span> </div>\n-<div class=\"line\"><a id=\"l00689\" name=\"l00689\"></a><span class=\"lineno\">  689</span>        Mask fMask(fValueWeights, 0, 0);</div>\n-<div class=\"line\"><a id=\"l00690\" name=\"l00690\"></a><span class=\"lineno\">  690</span>        Vtr::internal::FaceInterface fHood(fValues.size());</div>\n-<div class=\"line\"><a id=\"l00691\" name=\"l00691\"></a><span class=\"lineno\">  691</span> </div>\n-<div class=\"line\"><a id=\"l00692\" name=\"l00692\"></a><span class=\"lineno\">  692</span>        scheme.ComputeFaceVertexMask(fHood, fMask);</div>\n-<div class=\"line\"><a id=\"l00693\" name=\"l00693\"></a><span class=\"lineno\">  693</span> </div>\n-<div class=\"line\"><a id=\"l00694\" name=\"l00694\"></a><span class=\"lineno\">  694</span>        <span class=\"comment\">//  Apply the weights to the parent face&#39;s vertices:</span></div>\n-<div class=\"line\"><a id=\"l00695\" name=\"l00695\"></a><span class=\"lineno\">  695</span>        dst[cVertValue].Clear();</div>\n-<div class=\"line\"><a id=\"l00696\" name=\"l00696\"></a><span class=\"lineno\">  696</span> </div>\n-<div class=\"line\"><a id=\"l00697\" name=\"l00697\"></a><span class=\"lineno\">  697</span>        <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; fValues.size(); ++i) {</div>\n-<div class=\"line\"><a id=\"l00698\" name=\"l00698\"></a><span class=\"lineno\">  698</span>            dst[cVertValue].AddWithWeight(src[fValues[i]], fValueWeights[i]);</div>\n-<div class=\"line\"><a id=\"l00699\" name=\"l00699\"></a><span class=\"lineno\">  699</span>        }</div>\n-<div class=\"line\"><a id=\"l00700\" name=\"l00700\"></a><span class=\"lineno\">  700</span>    }</div>\n-<div class=\"line\"><a id=\"l00701\" name=\"l00701\"></a><span class=\"lineno\">  701</span>}</div>\n-<div class=\"line\"><a id=\"l00702\" name=\"l00702\"></a><span class=\"lineno\">  702</span> </div>\n-<div class=\"line\"><a id=\"l00703\" name=\"l00703\"></a><span class=\"lineno\">  703</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00704\" name=\"l00704\"></a><span class=\"lineno\">  704</span><span class=\"keyword\">template</span> &lt;Sdc::SchemeType SCHEME, <span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt;</div>\n-<div class=\"line\"><a id=\"l00705\" name=\"l00705\"></a><span class=\"lineno\">  705</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"line\"><a id=\"l00706\" name=\"l00706\"></a><span class=\"lineno\">  706</span>PrimvarRefinerReal&lt;REAL&gt;::interpFVarFromEdges(<span class=\"keywordtype\">int</span> level, T <span class=\"keyword\">const</span> &amp; src, U &amp; dst, <span class=\"keywordtype\">int</span> channel)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00707\" name=\"l00707\"></a><span class=\"lineno\">  707</span> </div>\n-<div class=\"line\"><a id=\"l00708\" name=\"l00708\"></a><span class=\"lineno\">  708</span>    Vtr::internal::Refinement <span class=\"keyword\">const</span> &amp; refinement = _refiner.getRefinement(level-1);</div>\n-<div class=\"line\"><a id=\"l00709\" name=\"l00709\"></a><span class=\"lineno\">  709</span> </div>\n-<div class=\"line\"><a id=\"l00710\" name=\"l00710\"></a><span class=\"lineno\">  710</span>    Sdc::Scheme&lt;SCHEME&gt; scheme(_refiner._subdivOptions);</div>\n-<div class=\"line\"><a id=\"l00711\" name=\"l00711\"></a><span class=\"lineno\">  711</span> </div>\n-<div class=\"line\"><a id=\"l00712\" name=\"l00712\"></a><span class=\"lineno\">  712</span>    Vtr::internal::Level <span class=\"keyword\">const</span> &amp; parentLevel = refinement.parent();</div>\n-<div class=\"line\"><a id=\"l00713\" name=\"l00713\"></a><span class=\"lineno\">  713</span>    Vtr::internal::Level <span class=\"keyword\">const</span> &amp; childLevel  = refinement.child();</div>\n-<div class=\"line\"><a id=\"l00714\" name=\"l00714\"></a><span class=\"lineno\">  714</span> </div>\n-<div class=\"line\"><a id=\"l00715\" name=\"l00715\"></a><span class=\"lineno\">  715</span>    Vtr::internal::FVarRefinement <span class=\"keyword\">const</span> &amp; refineFVar = refinement.getFVarRefinement(channel);</div>\n-<div class=\"line\"><a id=\"l00716\" name=\"l00716\"></a><span class=\"lineno\">  716</span>    Vtr::internal::FVarLevel <span class=\"keyword\">const</span> &amp;      parentFVar = parentLevel.getFVarLevel(channel);</div>\n-<div class=\"line\"><a id=\"l00717\" name=\"l00717\"></a><span class=\"lineno\">  717</span>    Vtr::internal::FVarLevel <span class=\"keyword\">const</span> &amp;      childFVar  = childLevel.getFVarLevel(channel);</div>\n-<div class=\"line\"><a id=\"l00718\" name=\"l00718\"></a><span class=\"lineno\">  718</span> </div>\n-<div class=\"line\"><a id=\"l00719\" name=\"l00719\"></a><span class=\"lineno\">  719</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00720\" name=\"l00720\"></a><span class=\"lineno\">  720</span>    <span class=\"comment\">//  Allocate and initialize (if linearly interpolated) interpolation weights for</span></div>\n-<div class=\"line\"><a id=\"l00721\" name=\"l00721\"></a><span class=\"lineno\">  721</span>    <span class=\"comment\">//  the edge mask:</span></div>\n-<div class=\"line\"><a id=\"l00722\" name=\"l00722\"></a><span class=\"lineno\">  722</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00723\" name=\"l00723\"></a><span class=\"lineno\">  723</span>    Weight                               eVertWeights[2];</div>\n-<div class=\"line\"><a id=\"l00724\" name=\"l00724\"></a><span class=\"lineno\">  724</span>    Vtr::internal::StackBuffer&lt;Weight,8&gt; eFaceWeights(parentLevel.getMaxEdgeFaces());</div>\n-<div class=\"line\"><a id=\"l00725\" name=\"l00725\"></a><span class=\"lineno\">  725</span> </div>\n-<div class=\"line\"><a id=\"l00726\" name=\"l00726\"></a><span class=\"lineno\">  726</span>    Mask eMask(eVertWeights, 0, eFaceWeights);</div>\n-<div class=\"line\"><a id=\"l00727\" name=\"l00727\"></a><span class=\"lineno\">  727</span> </div>\n-<div class=\"line\"><a id=\"l00728\" name=\"l00728\"></a><span class=\"lineno\">  728</span>    <span class=\"keywordtype\">bool</span> isLinearFVar = parentFVar.isLinear() || (_refiner._subdivType == <a class=\"code hl_enumvalue\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833da02558f420bac2d6bd3f8411d4b3957a0\">Sdc::SCHEME_BILINEAR</a>);</div>\n-<div class=\"line\"><a id=\"l00729\" name=\"l00729\"></a><span class=\"lineno\">  729</span>    <span class=\"keywordflow\">if</span> (isLinearFVar) {</div>\n-<div class=\"line\"><a id=\"l00730\" name=\"l00730\"></a><span class=\"lineno\">  730</span>        eMask.SetNumVertexWeights(2);</div>\n-<div class=\"line\"><a id=\"l00731\" name=\"l00731\"></a><span class=\"lineno\">  731</span>        eMask.SetNumEdgeWeights(0);</div>\n-<div class=\"line\"><a id=\"l00732\" name=\"l00732\"></a><span class=\"lineno\">  732</span>        eMask.SetNumFaceWeights(0);</div>\n-<div class=\"line\"><a id=\"l00733\" name=\"l00733\"></a><span class=\"lineno\">  733</span> </div>\n-<div class=\"line\"><a id=\"l00734\" name=\"l00734\"></a><span class=\"lineno\">  734</span>        eVertWeights[0] = 0.5f;</div>\n-<div class=\"line\"><a id=\"l00735\" name=\"l00735\"></a><span class=\"lineno\">  735</span>        eVertWeights[1] = 0.5f;</div>\n-<div class=\"line\"><a id=\"l00736\" name=\"l00736\"></a><span class=\"lineno\">  736</span>    }</div>\n-<div class=\"line\"><a id=\"l00737\" name=\"l00737\"></a><span class=\"lineno\">  737</span> </div>\n-<div class=\"line\"><a id=\"l00738\" name=\"l00738\"></a><span class=\"lineno\">  738</span>    Vtr::internal::EdgeInterface eHood(parentLevel);</div>\n-<div class=\"line\"><a id=\"l00739\" name=\"l00739\"></a><span class=\"lineno\">  739</span> </div>\n-<div class=\"line\"><a id=\"l00740\" name=\"l00740\"></a><span class=\"lineno\">  740</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> edge = 0; edge &lt; parentLevel.getNumEdges(); ++edge) {</div>\n-<div class=\"line\"><a id=\"l00741\" name=\"l00741\"></a><span class=\"lineno\">  741</span> </div>\n-<div class=\"line\"><a id=\"l00742\" name=\"l00742\"></a><span class=\"lineno\">  742</span>        <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a> cVert = refinement.getEdgeChildVertex(edge);</div>\n-<div class=\"line\"><a id=\"l00743\" name=\"l00743\"></a><span class=\"lineno\">  743</span>        <span class=\"keywordflow\">if</span> (!<a class=\"code hl_function\" href=\"a00909.html#a98af1cee938a3f984af1e7e9a205080c\">Vtr::IndexIsValid</a>(cVert))</div>\n-<div class=\"line\"><a id=\"l00744\" name=\"l00744\"></a><span class=\"lineno\">  744</span>            <span class=\"keywordflow\">continue</span>;</div>\n-<div class=\"line\"><a id=\"l00745\" name=\"l00745\"></a><span class=\"lineno\">  745</span> </div>\n-<div class=\"line\"><a id=\"l00746\" name=\"l00746\"></a><span class=\"lineno\">  746</span>        <a class=\"code hl_typedef\" href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">ConstIndexArray</a> cVertValues = childFVar.getVertexValues(cVert);</div>\n-<div class=\"line\"><a id=\"l00747\" name=\"l00747\"></a><span class=\"lineno\">  747</span> </div>\n-<div class=\"line\"><a id=\"l00748\" name=\"l00748\"></a><span class=\"lineno\">  748</span>        <span class=\"keywordtype\">bool</span> fvarEdgeVertMatchesVertex = childFVar.valueTopologyMatches(cVertValues[0]);</div>\n-<div class=\"line\"><a id=\"l00749\" name=\"l00749\"></a><span class=\"lineno\">  749</span>        <span class=\"keywordflow\">if</span> (fvarEdgeVertMatchesVertex) {</div>\n-<div class=\"line\"><a id=\"l00750\" name=\"l00750\"></a><span class=\"lineno\">  750</span>            <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00751\" name=\"l00751\"></a><span class=\"lineno\">  751</span>            <span class=\"comment\">//  If smoothly interpolated, compute new weights for the edge mask:</span></div>\n-<div class=\"line\"><a id=\"l00752\" name=\"l00752\"></a><span class=\"lineno\">  752</span>            <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00753\" name=\"l00753\"></a><span class=\"lineno\">  753</span>            <span class=\"keywordflow\">if</span> (!isLinearFVar) {</div>\n-<div class=\"line\"><a id=\"l00754\" name=\"l00754\"></a><span class=\"lineno\">  754</span>                eHood.SetIndex(edge);</div>\n-<div class=\"line\"><a id=\"l00755\" name=\"l00755\"></a><span class=\"lineno\">  755</span> </div>\n-<div class=\"line\"><a id=\"l00756\" name=\"l00756\"></a><span class=\"lineno\">  756</span>                <a class=\"code hl_enumeration\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78\">Sdc::Crease::Rule</a> pRule = (parentLevel.getEdgeSharpness(edge) &gt; 0.0f)</div>\n-<div class=\"line\"><a id=\"l00757\" name=\"l00757\"></a><span class=\"lineno\">  757</span>                                        ? <a class=\"code hl_enumvalue\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78a966fa1ae8aeb8587c498cf6a92cc3335\">Sdc::Crease::RULE_CREASE</a> : Sdc::Crease::RULE_SMOOTH;</div>\n-<div class=\"line\"><a id=\"l00758\" name=\"l00758\"></a><span class=\"lineno\">  758</span>                <a class=\"code hl_enumeration\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78\">Sdc::Crease::Rule</a> cRule = childLevel.getVertexRule(cVert);</div>\n-<div class=\"line\"><a id=\"l00759\" name=\"l00759\"></a><span class=\"lineno\">  759</span> </div>\n-<div class=\"line\"><a id=\"l00760\" name=\"l00760\"></a><span class=\"lineno\">  760</span>                scheme.ComputeEdgeVertexMask(eHood, eMask, pRule, cRule);</div>\n-<div class=\"line\"><a id=\"l00761\" name=\"l00761\"></a><span class=\"lineno\">  761</span>            }</div>\n-<div class=\"line\"><a id=\"l00762\" name=\"l00762\"></a><span class=\"lineno\">  762</span> </div>\n-<div class=\"line\"><a id=\"l00763\" name=\"l00763\"></a><span class=\"lineno\">  763</span>            <span class=\"comment\">//  Apply the weights to the parent edge&#39;s vertices and (if applicable) to</span></div>\n-<div class=\"line\"><a id=\"l00764\" name=\"l00764\"></a><span class=\"lineno\">  764</span>            <span class=\"comment\">//  the child vertices of its incident faces:</span></div>\n-<div class=\"line\"><a id=\"l00765\" name=\"l00765\"></a><span class=\"lineno\">  765</span>            <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00766\" name=\"l00766\"></a><span class=\"lineno\">  766</span>            <span class=\"comment\">//  Even though the face-varying topology matches the vertex topology, we need</span></div>\n-<div class=\"line\"><a id=\"l00767\" name=\"l00767\"></a><span class=\"lineno\">  767</span>            <span class=\"comment\">//  to be careful here when getting values corresponding to the two end-vertices.</span></div>\n-<div class=\"line\"><a id=\"l00768\" name=\"l00768\"></a><span class=\"lineno\">  768</span>            <span class=\"comment\">//  While the edge may be continuous, the vertices at their ends may have</span></div>\n-<div class=\"line\"><a id=\"l00769\" name=\"l00769\"></a><span class=\"lineno\">  769</span>            <span class=\"comment\">//  discontinuities elsewhere in their neighborhood (i.e. on the &quot;other side&quot;</span></div>\n-<div class=\"line\"><a id=\"l00770\" name=\"l00770\"></a><span class=\"lineno\">  770</span>            <span class=\"comment\">//  of the end-vertex) and so have sibling values associated with them.  In most</span></div>\n-<div class=\"line\"><a id=\"l00771\" name=\"l00771\"></a><span class=\"lineno\">  771</span>            <span class=\"comment\">//  cases the topology for an end-vertex will match and we can use it directly,</span></div>\n-<div class=\"line\"><a id=\"l00772\" name=\"l00772\"></a><span class=\"lineno\">  772</span>            <span class=\"comment\">//  but we must still check and retrieve as needed.</span></div>\n-<div class=\"line\"><a id=\"l00773\" name=\"l00773\"></a><span class=\"lineno\">  773</span>            <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00774\" name=\"l00774\"></a><span class=\"lineno\">  774</span>            <span class=\"comment\">//  Indices for values corresponding to face-vertices are guaranteed to match,</span></div>\n-<div class=\"line\"><a id=\"l00775\" name=\"l00775\"></a><span class=\"lineno\">  775</span>            <span class=\"comment\">//  so we can use the child-vertex indices directly.</span></div>\n-<div class=\"line\"><a id=\"l00776\" name=\"l00776\"></a><span class=\"lineno\">  776</span>            <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00777\" name=\"l00777\"></a><span class=\"lineno\">  777</span>            <span class=\"comment\">//  And by &quot;directly&quot;, we always use getVertexValue(vertexIndex) to reference</span></div>\n-<div class=\"line\"><a id=\"l00778\" name=\"l00778\"></a><span class=\"lineno\">  778</span>            <span class=\"comment\">//  values in the &quot;src&quot; to account for the possible indirection that may exist at</span></div>\n-<div class=\"line\"><a id=\"l00779\" name=\"l00779\"></a><span class=\"lineno\">  779</span>            <span class=\"comment\">//  level 0 -- where there may be fewer values than vertices and an additional</span></div>\n-<div class=\"line\"><a id=\"l00780\" name=\"l00780\"></a><span class=\"lineno\">  780</span>            <span class=\"comment\">//  indirection is necessary.  We can use a vertex index directly for &quot;dst&quot; when</span></div>\n-<div class=\"line\"><a id=\"l00781\" name=\"l00781\"></a><span class=\"lineno\">  781</span>            <span class=\"comment\">//  it matches.</span></div>\n-<div class=\"line\"><a id=\"l00782\" name=\"l00782\"></a><span class=\"lineno\">  782</span>            <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00783\" name=\"l00783\"></a><span class=\"lineno\">  783</span>            <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a> eVertValues[2];</div>\n-<div class=\"line\"><a id=\"l00784\" name=\"l00784\"></a><span class=\"lineno\">  784</span> </div>\n-<div class=\"line\"><a id=\"l00785\" name=\"l00785\"></a><span class=\"lineno\">  785</span>            parentFVar.getEdgeFaceValues(edge, 0, eVertValues);</div>\n-<div class=\"line\"><a id=\"l00786\" name=\"l00786\"></a><span class=\"lineno\">  786</span> </div>\n-<div class=\"line\"><a id=\"l00787\" name=\"l00787\"></a><span class=\"lineno\">  787</span>            <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> cVertValue = cVertValues[0];</div>\n-<div class=\"line\"><a id=\"l00788\" name=\"l00788\"></a><span class=\"lineno\">  788</span> </div>\n-<div class=\"line\"><a id=\"l00789\" name=\"l00789\"></a><span class=\"lineno\">  789</span>            dst[cVertValue].Clear();</div>\n-<div class=\"line\"><a id=\"l00790\" name=\"l00790\"></a><span class=\"lineno\">  790</span>            dst[cVertValue].AddWithWeight(src[eVertValues[0]], eVertWeights[0]);</div>\n-<div class=\"line\"><a id=\"l00791\" name=\"l00791\"></a><span class=\"lineno\">  791</span>            dst[cVertValue].AddWithWeight(src[eVertValues[1]], eVertWeights[1]);</div>\n-<div class=\"line\"><a id=\"l00792\" name=\"l00792\"></a><span class=\"lineno\">  792</span> </div>\n-<div class=\"line\"><a id=\"l00793\" name=\"l00793\"></a><span class=\"lineno\">  793</span>            <span class=\"keywordflow\">if</span> (eMask.GetNumFaceWeights() &gt; 0) {</div>\n-<div class=\"line\"><a id=\"l00794\" name=\"l00794\"></a><span class=\"lineno\">  794</span> </div>\n-<div class=\"line\"><a id=\"l00795\" name=\"l00795\"></a><span class=\"lineno\">  795</span>                <a class=\"code hl_typedef\" href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">ConstIndexArray</a>  eFaces = parentLevel.getEdgeFaces(edge);</div>\n-<div class=\"line\"><a id=\"l00796\" name=\"l00796\"></a><span class=\"lineno\">  796</span> </div>\n-<div class=\"line\"><a id=\"l00797\" name=\"l00797\"></a><span class=\"lineno\">  797</span>                <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; eFaces.size(); ++i) {</div>\n-<div class=\"line\"><a id=\"l00798\" name=\"l00798\"></a><span class=\"lineno\">  798</span>                    <span class=\"keywordflow\">if</span> (eMask.AreFaceWeightsForFaceCenters()) {</div>\n-<div class=\"line\"><a id=\"l00799\" name=\"l00799\"></a><span class=\"lineno\">  799</span> </div>\n-<div class=\"line\"><a id=\"l00800\" name=\"l00800\"></a><span class=\"lineno\">  800</span>                        <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a> cVertOfFace = refinement.getFaceChildVertex(eFaces[i]);</div>\n-<div class=\"line\"><a id=\"l00801\" name=\"l00801\"></a><span class=\"lineno\">  801</span>                        assert(<a class=\"code hl_function\" href=\"a00909.html#a98af1cee938a3f984af1e7e9a205080c\">Vtr::IndexIsValid</a>(cVertOfFace));</div>\n-<div class=\"line\"><a id=\"l00802\" name=\"l00802\"></a><span class=\"lineno\">  802</span> </div>\n-<div class=\"line\"><a id=\"l00803\" name=\"l00803\"></a><span class=\"lineno\">  803</span>                        <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a> cValueOfFace = childFVar.getVertexValueOffset(cVertOfFace);</div>\n-<div class=\"line\"><a id=\"l00804\" name=\"l00804\"></a><span class=\"lineno\">  804</span>                        dst[cVertValue].AddWithWeight(dst[cValueOfFace], eFaceWeights[i]);</div>\n-<div class=\"line\"><a id=\"l00805\" name=\"l00805\"></a><span class=\"lineno\">  805</span>                    } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00806\" name=\"l00806\"></a><span class=\"lineno\">  806</span>                        <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a>            pFace      = eFaces[i];</div>\n-<div class=\"line\"><a id=\"l00807\" name=\"l00807\"></a><span class=\"lineno\">  807</span>                        <a class=\"code hl_typedef\" href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">ConstIndexArray</a> pFaceEdges = parentLevel.getFaceEdges(pFace),</div>\n-<div class=\"line\"><a id=\"l00808\" name=\"l00808\"></a><span class=\"lineno\">  808</span>                                        pFaceVerts = parentLevel.getFaceVertices(pFace);</div>\n-<div class=\"line\"><a id=\"l00809\" name=\"l00809\"></a><span class=\"lineno\">  809</span> </div>\n-<div class=\"line\"><a id=\"l00810\" name=\"l00810\"></a><span class=\"lineno\">  810</span>                        <span class=\"keywordtype\">int</span> eInFace = 0;</div>\n-<div class=\"line\"><a id=\"l00811\" name=\"l00811\"></a><span class=\"lineno\">  811</span>                        <span class=\"keywordflow\">for</span> ( ; pFaceEdges[eInFace] != edge; ++eInFace ) ;</div>\n-<div class=\"line\"><a id=\"l00812\" name=\"l00812\"></a><span class=\"lineno\">  812</span> </div>\n-<div class=\"line\"><a id=\"l00813\" name=\"l00813\"></a><span class=\"lineno\">  813</span>                        <span class=\"comment\">//  Edge &quot;i&quot; spans vertices [i,i+1] so we want i+2...</span></div>\n-<div class=\"line\"><a id=\"l00814\" name=\"l00814\"></a><span class=\"lineno\">  814</span>                        <span class=\"keywordtype\">int</span> vInFace = eInFace + 2;</div>\n-<div class=\"line\"><a id=\"l00815\" name=\"l00815\"></a><span class=\"lineno\">  815</span>                        <span class=\"keywordflow\">if</span> (vInFace &gt;= pFaceVerts.size()) vInFace -= pFaceVerts.<a class=\"code hl_function\" href=\"a01353.html#a60304b65bf89363bcc3165d3cde67f86\">size</a>();</div>\n-<div class=\"line\"><a id=\"l00816\" name=\"l00816\"></a><span class=\"lineno\">  816</span> </div>\n-<div class=\"line\"><a id=\"l00817\" name=\"l00817\"></a><span class=\"lineno\">  817</span>                        <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a> pValueNext = parentFVar.getFaceValues(pFace)[vInFace];</div>\n-<div class=\"line\"><a id=\"l00818\" name=\"l00818\"></a><span class=\"lineno\">  818</span>                        dst[cVertValue].AddWithWeight(src[pValueNext], eFaceWeights[i]);</div>\n-<div class=\"line\"><a id=\"l00819\" name=\"l00819\"></a><span class=\"lineno\">  819</span>                    }</div>\n-<div class=\"line\"><a id=\"l00820\" name=\"l00820\"></a><span class=\"lineno\">  820</span>                }</div>\n-<div class=\"line\"><a id=\"l00821\" name=\"l00821\"></a><span class=\"lineno\">  821</span>            }</div>\n-<div class=\"line\"><a id=\"l00822\" name=\"l00822\"></a><span class=\"lineno\">  822</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00823\" name=\"l00823\"></a><span class=\"lineno\">  823</span>            <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00824\" name=\"l00824\"></a><span class=\"lineno\">  824</span>            <span class=\"comment\">//  Mismatched edge-verts should just be linearly interpolated between the pairs of</span></div>\n-<div class=\"line\"><a id=\"l00825\" name=\"l00825\"></a><span class=\"lineno\">  825</span>            <span class=\"comment\">//  values for each sibling of the child edge-vertex -- the question is:  which face</span></div>\n-<div class=\"line\"><a id=\"l00826\" name=\"l00826\"></a><span class=\"lineno\">  826</span>            <span class=\"comment\">//  holds that pair of values for a given sibling?</span></div>\n-<div class=\"line\"><a id=\"l00827\" name=\"l00827\"></a><span class=\"lineno\">  827</span>            <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00828\" name=\"l00828\"></a><span class=\"lineno\">  828</span>            <span class=\"comment\">//  In the manifold case, the sibling and edge-face indices will correspond.  We</span></div>\n-<div class=\"line\"><a id=\"l00829\" name=\"l00829\"></a><span class=\"lineno\">  829</span>            <span class=\"comment\">//  will eventually need to update this to account for &gt; 3 incident faces.</span></div>\n-<div class=\"line\"><a id=\"l00830\" name=\"l00830\"></a><span class=\"lineno\">  830</span>            <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00831\" name=\"l00831\"></a><span class=\"lineno\">  831</span>            <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; cVertValues.size(); ++i) {</div>\n-<div class=\"line\"><a id=\"l00832\" name=\"l00832\"></a><span class=\"lineno\">  832</span>                <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a> eVertValues[2];</div>\n-<div class=\"line\"><a id=\"l00833\" name=\"l00833\"></a><span class=\"lineno\">  833</span>                <span class=\"keywordtype\">int</span>      eFaceIndex = refineFVar.getChildValueParentSource(cVert, i);</div>\n-<div class=\"line\"><a id=\"l00834\" name=\"l00834\"></a><span class=\"lineno\">  834</span>                assert(eFaceIndex == i);</div>\n-<div class=\"line\"><a id=\"l00835\" name=\"l00835\"></a><span class=\"lineno\">  835</span> </div>\n-<div class=\"line\"><a id=\"l00836\" name=\"l00836\"></a><span class=\"lineno\">  836</span>                parentFVar.getEdgeFaceValues(edge, eFaceIndex, eVertValues);</div>\n-<div class=\"line\"><a id=\"l00837\" name=\"l00837\"></a><span class=\"lineno\">  837</span> </div>\n-<div class=\"line\"><a id=\"l00838\" name=\"l00838\"></a><span class=\"lineno\">  838</span>                <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> cVertValue = cVertValues[i];</div>\n-<div class=\"line\"><a id=\"l00839\" name=\"l00839\"></a><span class=\"lineno\">  839</span> </div>\n-<div class=\"line\"><a id=\"l00840\" name=\"l00840\"></a><span class=\"lineno\">  840</span>                dst[cVertValue].Clear();</div>\n-<div class=\"line\"><a id=\"l00841\" name=\"l00841\"></a><span class=\"lineno\">  841</span>                dst[cVertValue].AddWithWeight(src[eVertValues[0]], 0.5);</div>\n-<div class=\"line\"><a id=\"l00842\" name=\"l00842\"></a><span class=\"lineno\">  842</span>                dst[cVertValue].AddWithWeight(src[eVertValues[1]], 0.5);</div>\n-<div class=\"line\"><a id=\"l00843\" name=\"l00843\"></a><span class=\"lineno\">  843</span>            }</div>\n-<div class=\"line\"><a id=\"l00844\" name=\"l00844\"></a><span class=\"lineno\">  844</span>        }</div>\n-<div class=\"line\"><a id=\"l00845\" name=\"l00845\"></a><span class=\"lineno\">  845</span>    }</div>\n-<div class=\"line\"><a id=\"l00846\" name=\"l00846\"></a><span class=\"lineno\">  846</span>}</div>\n-<div class=\"line\"><a id=\"l00847\" name=\"l00847\"></a><span class=\"lineno\">  847</span> </div>\n-<div class=\"line\"><a id=\"l00848\" name=\"l00848\"></a><span class=\"lineno\">  848</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00849\" name=\"l00849\"></a><span class=\"lineno\">  849</span><span class=\"keyword\">template</span> &lt;Sdc::SchemeType SCHEME, <span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt;</div>\n-<div class=\"line\"><a id=\"l00850\" name=\"l00850\"></a><span class=\"lineno\">  850</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"line\"><a id=\"l00851\" name=\"l00851\"></a><span class=\"lineno\">  851</span>PrimvarRefinerReal&lt;REAL&gt;::interpFVarFromVerts(<span class=\"keywordtype\">int</span> level, T <span class=\"keyword\">const</span> &amp; src, U &amp; dst, <span class=\"keywordtype\">int</span> channel)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00852\" name=\"l00852\"></a><span class=\"lineno\">  852</span> </div>\n-<div class=\"line\"><a id=\"l00853\" name=\"l00853\"></a><span class=\"lineno\">  853</span>    Vtr::internal::Refinement <span class=\"keyword\">const</span> &amp; refinement = _refiner.getRefinement(level-1);</div>\n-<div class=\"line\"><a id=\"l00854\" name=\"l00854\"></a><span class=\"lineno\">  854</span> </div>\n-<div class=\"line\"><a id=\"l00855\" name=\"l00855\"></a><span class=\"lineno\">  855</span>    Sdc::Scheme&lt;SCHEME&gt; scheme(_refiner._subdivOptions);</div>\n-<div class=\"line\"><a id=\"l00856\" name=\"l00856\"></a><span class=\"lineno\">  856</span> </div>\n-<div class=\"line\"><a id=\"l00857\" name=\"l00857\"></a><span class=\"lineno\">  857</span>    Vtr::internal::Level <span class=\"keyword\">const</span> &amp; parentLevel = refinement.parent();</div>\n-<div class=\"line\"><a id=\"l00858\" name=\"l00858\"></a><span class=\"lineno\">  858</span>    Vtr::internal::Level <span class=\"keyword\">const</span> &amp; childLevel  = refinement.child();</div>\n-<div class=\"line\"><a id=\"l00859\" name=\"l00859\"></a><span class=\"lineno\">  859</span> </div>\n-<div class=\"line\"><a id=\"l00860\" name=\"l00860\"></a><span class=\"lineno\">  860</span>    Vtr::internal::FVarRefinement <span class=\"keyword\">const</span> &amp; refineFVar = refinement.getFVarRefinement(channel);</div>\n-<div class=\"line\"><a id=\"l00861\" name=\"l00861\"></a><span class=\"lineno\">  861</span>    Vtr::internal::FVarLevel <span class=\"keyword\">const</span> &amp;      parentFVar = parentLevel.getFVarLevel(channel);</div>\n-<div class=\"line\"><a id=\"l00862\" name=\"l00862\"></a><span class=\"lineno\">  862</span>    Vtr::internal::FVarLevel <span class=\"keyword\">const</span> &amp;      childFVar  = childLevel.getFVarLevel(channel);</div>\n-<div class=\"line\"><a id=\"l00863\" name=\"l00863\"></a><span class=\"lineno\">  863</span> </div>\n-<div class=\"line\"><a id=\"l00864\" name=\"l00864\"></a><span class=\"lineno\">  864</span>    <span class=\"keywordtype\">bool</span> isLinearFVar = parentFVar.isLinear() || (_refiner._subdivType == <a class=\"code hl_enumvalue\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833da02558f420bac2d6bd3f8411d4b3957a0\">Sdc::SCHEME_BILINEAR</a>);</div>\n-<div class=\"line\"><a id=\"l00865\" name=\"l00865\"></a><span class=\"lineno\">  865</span> </div>\n-<div class=\"line\"><a id=\"l00866\" name=\"l00866\"></a><span class=\"lineno\">  866</span>    Vtr::internal::StackBuffer&lt;Weight,32&gt; weightBuffer(2*parentLevel.getMaxValence());</div>\n-<div class=\"line\"><a id=\"l00867\" name=\"l00867\"></a><span class=\"lineno\">  867</span> </div>\n-<div class=\"line\"><a id=\"l00868\" name=\"l00868\"></a><span class=\"lineno\">  868</span>    Vtr::internal::StackBuffer&lt;Vtr::Index,16&gt; vEdgeValues(parentLevel.getMaxValence());</div>\n-<div class=\"line\"><a id=\"l00869\" name=\"l00869\"></a><span class=\"lineno\">  869</span> </div>\n-<div class=\"line\"><a id=\"l00870\" name=\"l00870\"></a><span class=\"lineno\">  870</span>    Vtr::internal::VertexInterface vHood(parentLevel, childLevel);</div>\n-<div class=\"line\"><a id=\"l00871\" name=\"l00871\"></a><span class=\"lineno\">  871</span> </div>\n-<div class=\"line\"><a id=\"l00872\" name=\"l00872\"></a><span class=\"lineno\">  872</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> vert = 0; vert &lt; parentLevel.getNumVertices(); ++vert) {</div>\n-<div class=\"line\"><a id=\"l00873\" name=\"l00873\"></a><span class=\"lineno\">  873</span> </div>\n-<div class=\"line\"><a id=\"l00874\" name=\"l00874\"></a><span class=\"lineno\">  874</span>        <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a> cVert = refinement.getVertexChildVertex(vert);</div>\n-<div class=\"line\"><a id=\"l00875\" name=\"l00875\"></a><span class=\"lineno\">  875</span>        <span class=\"keywordflow\">if</span> (!<a class=\"code hl_function\" href=\"a00909.html#a98af1cee938a3f984af1e7e9a205080c\">Vtr::IndexIsValid</a>(cVert))</div>\n-<div class=\"line\"><a id=\"l00876\" name=\"l00876\"></a><span class=\"lineno\">  876</span>            <span class=\"keywordflow\">continue</span>;</div>\n-<div class=\"line\"><a id=\"l00877\" name=\"l00877\"></a><span class=\"lineno\">  877</span> </div>\n-<div class=\"line\"><a id=\"l00878\" name=\"l00878\"></a><span class=\"lineno\">  878</span>        <a class=\"code hl_typedef\" href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">ConstIndexArray</a> pVertValues = parentFVar.getVertexValues(vert),</div>\n-<div class=\"line\"><a id=\"l00879\" name=\"l00879\"></a><span class=\"lineno\">  879</span>                        cVertValues = childFVar.getVertexValues(cVert);</div>\n-<div class=\"line\"><a id=\"l00880\" name=\"l00880\"></a><span class=\"lineno\">  880</span> </div>\n-<div class=\"line\"><a id=\"l00881\" name=\"l00881\"></a><span class=\"lineno\">  881</span>        <span class=\"keywordtype\">bool</span> fvarVertVertMatchesVertex = childFVar.valueTopologyMatches(cVertValues[0]);</div>\n-<div class=\"line\"><a id=\"l00882\" name=\"l00882\"></a><span class=\"lineno\">  882</span>        <span class=\"keywordflow\">if</span> (isLinearFVar &amp;&amp; fvarVertVertMatchesVertex) {</div>\n-<div class=\"line\"><a id=\"l00883\" name=\"l00883\"></a><span class=\"lineno\">  883</span>            dst[cVertValues[0]].Clear();</div>\n-<div class=\"line\"><a id=\"l00884\" name=\"l00884\"></a><span class=\"lineno\">  884</span>            dst[cVertValues[0]].AddWithWeight(src[pVertValues[0]], 1.0f);</div>\n-<div class=\"line\"><a id=\"l00885\" name=\"l00885\"></a><span class=\"lineno\">  885</span>            <span class=\"keywordflow\">continue</span>;</div>\n-<div class=\"line\"><a id=\"l00886\" name=\"l00886\"></a><span class=\"lineno\">  886</span>        }</div>\n-<div class=\"line\"><a id=\"l00887\" name=\"l00887\"></a><span class=\"lineno\">  887</span> </div>\n-<div class=\"line\"><a id=\"l00888\" name=\"l00888\"></a><span class=\"lineno\">  888</span>        <span class=\"keywordflow\">if</span> (fvarVertVertMatchesVertex) {</div>\n-<div class=\"line\"><a id=\"l00889\" name=\"l00889\"></a><span class=\"lineno\">  889</span>            <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00890\" name=\"l00890\"></a><span class=\"lineno\">  890</span>            <span class=\"comment\">//  Declare and compute mask weights for this vertex relative to its parent edge:</span></div>\n-<div class=\"line\"><a id=\"l00891\" name=\"l00891\"></a><span class=\"lineno\">  891</span>            <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00892\" name=\"l00892\"></a><span class=\"lineno\">  892</span>            <span class=\"comment\">//  (We really need to encapsulate this somewhere else for use here and in the</span></div>\n-<div class=\"line\"><a id=\"l00893\" name=\"l00893\"></a><span class=\"lineno\">  893</span>            <span class=\"comment\">//  general case)</span></div>\n-<div class=\"line\"><a id=\"l00894\" name=\"l00894\"></a><span class=\"lineno\">  894</span>            <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00895\" name=\"l00895\"></a><span class=\"lineno\">  895</span>            <a class=\"code hl_typedef\" href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">ConstIndexArray</a> vEdges = parentLevel.getVertexEdges(vert);</div>\n-<div class=\"line\"><a id=\"l00896\" name=\"l00896\"></a><span class=\"lineno\">  896</span> </div>\n-<div class=\"line\"><a id=\"l00897\" name=\"l00897\"></a><span class=\"lineno\">  897</span>            Weight   vVertWeight;</div>\n-<div class=\"line\"><a id=\"l00898\" name=\"l00898\"></a><span class=\"lineno\">  898</span>            Weight * vEdgeWeights = weightBuffer;</div>\n-<div class=\"line\"><a id=\"l00899\" name=\"l00899\"></a><span class=\"lineno\">  899</span>            Weight * vFaceWeights = vEdgeWeights + vEdges.<a class=\"code hl_function\" href=\"a01353.html#a60304b65bf89363bcc3165d3cde67f86\">size</a>();</div>\n-<div class=\"line\"><a id=\"l00900\" name=\"l00900\"></a><span class=\"lineno\">  900</span> </div>\n-<div class=\"line\"><a id=\"l00901\" name=\"l00901\"></a><span class=\"lineno\">  901</span>            Mask vMask(&amp;vVertWeight, vEdgeWeights, vFaceWeights);</div>\n-<div class=\"line\"><a id=\"l00902\" name=\"l00902\"></a><span class=\"lineno\">  902</span> </div>\n-<div class=\"line\"><a id=\"l00903\" name=\"l00903\"></a><span class=\"lineno\">  903</span>            vHood.SetIndex(vert, cVert);</div>\n-<div class=\"line\"><a id=\"l00904\" name=\"l00904\"></a><span class=\"lineno\">  904</span> </div>\n-<div class=\"line\"><a id=\"l00905\" name=\"l00905\"></a><span class=\"lineno\">  905</span>            <a class=\"code hl_enumeration\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78\">Sdc::Crease::Rule</a> pRule = parentLevel.getVertexRule(vert);</div>\n-<div class=\"line\"><a id=\"l00906\" name=\"l00906\"></a><span class=\"lineno\">  906</span>            <a class=\"code hl_enumeration\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78\">Sdc::Crease::Rule</a> cRule = childLevel.getVertexRule(cVert);</div>\n-<div class=\"line\"><a id=\"l00907\" name=\"l00907\"></a><span class=\"lineno\">  907</span> </div>\n-<div class=\"line\"><a id=\"l00908\" name=\"l00908\"></a><span class=\"lineno\">  908</span>            scheme.ComputeVertexVertexMask(vHood, vMask, pRule, cRule);</div>\n-<div class=\"line\"><a id=\"l00909\" name=\"l00909\"></a><span class=\"lineno\">  909</span> </div>\n-<div class=\"line\"><a id=\"l00910\" name=\"l00910\"></a><span class=\"lineno\">  910</span>            <span class=\"comment\">//  Apply the weights to the parent vertex, the vertices opposite its incident</span></div>\n-<div class=\"line\"><a id=\"l00911\" name=\"l00911\"></a><span class=\"lineno\">  911</span>            <span class=\"comment\">//  edges, and the child vertices of its incident faces:</span></div>\n-<div class=\"line\"><a id=\"l00912\" name=\"l00912\"></a><span class=\"lineno\">  912</span>            <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00913\" name=\"l00913\"></a><span class=\"lineno\">  913</span>            <span class=\"comment\">//  Even though the face-varying topology matches the vertex topology, we need</span></div>\n-<div class=\"line\"><a id=\"l00914\" name=\"l00914\"></a><span class=\"lineno\">  914</span>            <span class=\"comment\">//  to be careful here when getting values corresponding to vertices at the</span></div>\n-<div class=\"line\"><a id=\"l00915\" name=\"l00915\"></a><span class=\"lineno\">  915</span>            <span class=\"comment\">//  ends of edges.  While the edge may be continuous, the end vertex may have</span></div>\n-<div class=\"line\"><a id=\"l00916\" name=\"l00916\"></a><span class=\"lineno\">  916</span>            <span class=\"comment\">//  discontinuities elsewhere in their neighborhood (i.e. on the &quot;other side&quot;</span></div>\n-<div class=\"line\"><a id=\"l00917\" name=\"l00917\"></a><span class=\"lineno\">  917</span>            <span class=\"comment\">//  of the end-vertex) and so have sibling values associated with them.  In most</span></div>\n-<div class=\"line\"><a id=\"l00918\" name=\"l00918\"></a><span class=\"lineno\">  918</span>            <span class=\"comment\">//  cases the topology for an end-vertex will match and we can use it directly,</span></div>\n-<div class=\"line\"><a id=\"l00919\" name=\"l00919\"></a><span class=\"lineno\">  919</span>            <span class=\"comment\">//  but we must still check and retrieve as needed.</span></div>\n-<div class=\"line\"><a id=\"l00920\" name=\"l00920\"></a><span class=\"lineno\">  920</span>            <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00921\" name=\"l00921\"></a><span class=\"lineno\">  921</span>            <span class=\"comment\">//  Indices for values corresponding to face-vertices are guaranteed to match,</span></div>\n-<div class=\"line\"><a id=\"l00922\" name=\"l00922\"></a><span class=\"lineno\">  922</span>            <span class=\"comment\">//  so we can use the child-vertex indices directly.</span></div>\n-<div class=\"line\"><a id=\"l00923\" name=\"l00923\"></a><span class=\"lineno\">  923</span>            <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00924\" name=\"l00924\"></a><span class=\"lineno\">  924</span>            <span class=\"comment\">//  And by &quot;directly&quot;, we always use getVertexValue(vertexIndex) to reference</span></div>\n-<div class=\"line\"><a id=\"l00925\" name=\"l00925\"></a><span class=\"lineno\">  925</span>            <span class=\"comment\">//  values in the &quot;src&quot; to account for the possible indirection that may exist at</span></div>\n-<div class=\"line\"><a id=\"l00926\" name=\"l00926\"></a><span class=\"lineno\">  926</span>            <span class=\"comment\">//  level 0 -- where there may be fewer values than vertices and an additional</span></div>\n-<div class=\"line\"><a id=\"l00927\" name=\"l00927\"></a><span class=\"lineno\">  927</span>            <span class=\"comment\">//  indirection is necessary.  We can use a vertex index directly for &quot;dst&quot; when</span></div>\n-<div class=\"line\"><a id=\"l00928\" name=\"l00928\"></a><span class=\"lineno\">  928</span>            <span class=\"comment\">//  it matches.</span></div>\n-<div class=\"line\"><a id=\"l00929\" name=\"l00929\"></a><span class=\"lineno\">  929</span>            <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00930\" name=\"l00930\"></a><span class=\"lineno\">  930</span>            <span class=\"comment\">//  As with applying the mask to vertex data, in order to improve numerical</span></div>\n-<div class=\"line\"><a id=\"l00931\" name=\"l00931\"></a><span class=\"lineno\">  931</span>            <span class=\"comment\">//  precision, it&#39;s better to apply smaller weights first, so begin with the</span></div>\n-<div class=\"line\"><a id=\"l00932\" name=\"l00932\"></a><span class=\"lineno\">  932</span>            <span class=\"comment\">//  face-weights followed by the edge-weights and the vertex weight last.</span></div>\n-<div class=\"line\"><a id=\"l00933\" name=\"l00933\"></a><span class=\"lineno\">  933</span>            <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00934\" name=\"l00934\"></a><span class=\"lineno\">  934</span>            <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a> pVertValue = pVertValues[0];</div>\n-<div class=\"line\"><a id=\"l00935\" name=\"l00935\"></a><span class=\"lineno\">  935</span>            <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a> cVertValue = cVertValues[0];</div>\n-<div class=\"line\"><a id=\"l00936\" name=\"l00936\"></a><span class=\"lineno\">  936</span> </div>\n-<div class=\"line\"><a id=\"l00937\" name=\"l00937\"></a><span class=\"lineno\">  937</span>            dst[cVertValue].Clear();</div>\n-<div class=\"line\"><a id=\"l00938\" name=\"l00938\"></a><span class=\"lineno\">  938</span>            <span class=\"keywordflow\">if</span> (vMask.GetNumFaceWeights() &gt; 0) {</div>\n-<div class=\"line\"><a id=\"l00939\" name=\"l00939\"></a><span class=\"lineno\">  939</span>                assert(vMask.AreFaceWeightsForFaceCenters());</div>\n-<div class=\"line\"><a id=\"l00940\" name=\"l00940\"></a><span class=\"lineno\">  940</span> </div>\n-<div class=\"line\"><a id=\"l00941\" name=\"l00941\"></a><span class=\"lineno\">  941</span>                <a class=\"code hl_typedef\" href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">ConstIndexArray</a> vFaces = parentLevel.getVertexFaces(vert);</div>\n-<div class=\"line\"><a id=\"l00942\" name=\"l00942\"></a><span class=\"lineno\">  942</span> </div>\n-<div class=\"line\"><a id=\"l00943\" name=\"l00943\"></a><span class=\"lineno\">  943</span>                <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; vFaces.size(); ++i) {</div>\n-<div class=\"line\"><a id=\"l00944\" name=\"l00944\"></a><span class=\"lineno\">  944</span> </div>\n-<div class=\"line\"><a id=\"l00945\" name=\"l00945\"></a><span class=\"lineno\">  945</span>                    <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a> cVertOfFace  = refinement.getFaceChildVertex(vFaces[i]);</div>\n-<div class=\"line\"><a id=\"l00946\" name=\"l00946\"></a><span class=\"lineno\">  946</span>                    assert(<a class=\"code hl_function\" href=\"a00909.html#a98af1cee938a3f984af1e7e9a205080c\">Vtr::IndexIsValid</a>(cVertOfFace));</div>\n-<div class=\"line\"><a id=\"l00947\" name=\"l00947\"></a><span class=\"lineno\">  947</span> </div>\n-<div class=\"line\"><a id=\"l00948\" name=\"l00948\"></a><span class=\"lineno\">  948</span>                    <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a> cValueOfFace = childFVar.getVertexValueOffset(cVertOfFace);</div>\n-<div class=\"line\"><a id=\"l00949\" name=\"l00949\"></a><span class=\"lineno\">  949</span>                    dst[cVertValue].AddWithWeight(dst[cValueOfFace], vFaceWeights[i]);</div>\n-<div class=\"line\"><a id=\"l00950\" name=\"l00950\"></a><span class=\"lineno\">  950</span>                }</div>\n-<div class=\"line\"><a id=\"l00951\" name=\"l00951\"></a><span class=\"lineno\">  951</span>            }</div>\n-<div class=\"line\"><a id=\"l00952\" name=\"l00952\"></a><span class=\"lineno\">  952</span>            <span class=\"keywordflow\">if</span> (vMask.GetNumEdgeWeights() &gt; 0) {</div>\n-<div class=\"line\"><a id=\"l00953\" name=\"l00953\"></a><span class=\"lineno\">  953</span> </div>\n-<div class=\"line\"><a id=\"l00954\" name=\"l00954\"></a><span class=\"lineno\">  954</span>                parentFVar.getVertexEdgeValues(vert, vEdgeValues);</div>\n-<div class=\"line\"><a id=\"l00955\" name=\"l00955\"></a><span class=\"lineno\">  955</span> </div>\n-<div class=\"line\"><a id=\"l00956\" name=\"l00956\"></a><span class=\"lineno\">  956</span>                <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; vEdges.size(); ++i) {</div>\n-<div class=\"line\"><a id=\"l00957\" name=\"l00957\"></a><span class=\"lineno\">  957</span>                    dst[cVertValue].AddWithWeight(src[vEdgeValues[i]], vEdgeWeights[i]);</div>\n-<div class=\"line\"><a id=\"l00958\" name=\"l00958\"></a><span class=\"lineno\">  958</span>                }</div>\n-<div class=\"line\"><a id=\"l00959\" name=\"l00959\"></a><span class=\"lineno\">  959</span>            }</div>\n-<div class=\"line\"><a id=\"l00960\" name=\"l00960\"></a><span class=\"lineno\">  960</span>            dst[cVertValue].AddWithWeight(src[pVertValue], vVertWeight);</div>\n-<div class=\"line\"><a id=\"l00961\" name=\"l00961\"></a><span class=\"lineno\">  961</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00962\" name=\"l00962\"></a><span class=\"lineno\">  962</span>            <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00963\" name=\"l00963\"></a><span class=\"lineno\">  963</span>            <span class=\"comment\">//  Each FVar value associated with a vertex will be either a corner or a crease,</span></div>\n-<div class=\"line\"><a id=\"l00964\" name=\"l00964\"></a><span class=\"lineno\">  964</span>            <span class=\"comment\">//  or potentially in transition from corner to crease:</span></div>\n-<div class=\"line\"><a id=\"l00965\" name=\"l00965\"></a><span class=\"lineno\">  965</span>            <span class=\"comment\">//      - if the CHILD is a corner, there can be no transition so we have a corner</span></div>\n-<div class=\"line\"><a id=\"l00966\" name=\"l00966\"></a><span class=\"lineno\">  966</span>            <span class=\"comment\">//      - otherwise if the PARENT is a crease, both will be creases (no transition)</span></div>\n-<div class=\"line\"><a id=\"l00967\" name=\"l00967\"></a><span class=\"lineno\">  967</span>            <span class=\"comment\">//      - otherwise the parent must be a corner and the child a crease (transition)</span></div>\n-<div class=\"line\"><a id=\"l00968\" name=\"l00968\"></a><span class=\"lineno\">  968</span>            <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00969\" name=\"l00969\"></a><span class=\"lineno\">  969</span>            Vtr::internal::FVarLevel::ConstValueTagArray pValueTags = parentFVar.getVertexValueTags(vert);</div>\n-<div class=\"line\"><a id=\"l00970\" name=\"l00970\"></a><span class=\"lineno\">  970</span>            Vtr::internal::FVarLevel::ConstValueTagArray cValueTags = childFVar.getVertexValueTags(cVert);</div>\n-<div class=\"line\"><a id=\"l00971\" name=\"l00971\"></a><span class=\"lineno\">  971</span> </div>\n-<div class=\"line\"><a id=\"l00972\" name=\"l00972\"></a><span class=\"lineno\">  972</span>            <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> cSiblingIndex = 0; cSiblingIndex &lt; cVertValues.size(); ++cSiblingIndex) {</div>\n-<div class=\"line\"><a id=\"l00973\" name=\"l00973\"></a><span class=\"lineno\">  973</span>                <span class=\"keywordtype\">int</span> pSiblingIndex = refineFVar.getChildValueParentSource(cVert, cSiblingIndex);</div>\n-<div class=\"line\"><a id=\"l00974\" name=\"l00974\"></a><span class=\"lineno\">  974</span>                assert(pSiblingIndex == cSiblingIndex);</div>\n-<div class=\"line\"><a id=\"l00975\" name=\"l00975\"></a><span class=\"lineno\">  975</span> </div>\n-<div class=\"line\"><a id=\"l00976\" name=\"l00976\"></a><span class=\"lineno\">  976</span>                <span class=\"keyword\">typedef</span> Vtr::internal::FVarLevel::Sibling SiblingIntType;</div>\n-<div class=\"line\"><a id=\"l00977\" name=\"l00977\"></a><span class=\"lineno\">  977</span> </div>\n-<div class=\"line\"><a id=\"l00978\" name=\"l00978\"></a><span class=\"lineno\">  978</span>                SiblingIntType cSibling = (SiblingIntType) cSiblingIndex;</div>\n-<div class=\"line\"><a id=\"l00979\" name=\"l00979\"></a><span class=\"lineno\">  979</span>                SiblingIntType pSibling = (SiblingIntType) pSiblingIndex;</div>\n-<div class=\"line\"><a id=\"l00980\" name=\"l00980\"></a><span class=\"lineno\">  980</span> </div>\n-<div class=\"line\"><a id=\"l00981\" name=\"l00981\"></a><span class=\"lineno\">  981</span>                <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a> pVertValue = pVertValues[pSibling];</div>\n-<div class=\"line\"><a id=\"l00982\" name=\"l00982\"></a><span class=\"lineno\">  982</span>                <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a> cVertValue = cVertValues[cSibling];</div>\n-<div class=\"line\"><a id=\"l00983\" name=\"l00983\"></a><span class=\"lineno\">  983</span> </div>\n-<div class=\"line\"><a id=\"l00984\" name=\"l00984\"></a><span class=\"lineno\">  984</span>                dst[cVertValue].Clear();</div>\n-<div class=\"line\"><a id=\"l00985\" name=\"l00985\"></a><span class=\"lineno\">  985</span>                <span class=\"keywordflow\">if</span> (isLinearFVar || cValueTags[cSibling].isCorner()) {</div>\n-<div class=\"line\"><a id=\"l00986\" name=\"l00986\"></a><span class=\"lineno\">  986</span>                    dst[cVertValue].AddWithWeight(src[pVertValue], 1.0f);</div>\n-<div class=\"line\"><a id=\"l00987\" name=\"l00987\"></a><span class=\"lineno\">  987</span>                } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00988\" name=\"l00988\"></a><span class=\"lineno\">  988</span>                    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00989\" name=\"l00989\"></a><span class=\"lineno\">  989</span>                    <span class=\"comment\">//  We have either a crease or a transition from corner to crease -- in</span></div>\n-<div class=\"line\"><a id=\"l00990\" name=\"l00990\"></a><span class=\"lineno\">  990</span>                    <span class=\"comment\">//  either case, we need the end values for the full/fractional crease:</span></div>\n-<div class=\"line\"><a id=\"l00991\" name=\"l00991\"></a><span class=\"lineno\">  991</span>                    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00992\" name=\"l00992\"></a><span class=\"lineno\">  992</span>                    <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> pEndValues[2];</div>\n-<div class=\"line\"><a id=\"l00993\" name=\"l00993\"></a><span class=\"lineno\">  993</span>                    parentFVar.getVertexCreaseEndValues(vert, pSibling, pEndValues);</div>\n-<div class=\"line\"><a id=\"l00994\" name=\"l00994\"></a><span class=\"lineno\">  994</span> </div>\n-<div class=\"line\"><a id=\"l00995\" name=\"l00995\"></a><span class=\"lineno\">  995</span>                    Weight vWeight = 0.75f;</div>\n-<div class=\"line\"><a id=\"l00996\" name=\"l00996\"></a><span class=\"lineno\">  996</span>                    Weight eWeight = 0.125f;</div>\n-<div class=\"line\"><a id=\"l00997\" name=\"l00997\"></a><span class=\"lineno\">  997</span> </div>\n-<div class=\"line\"><a id=\"l00998\" name=\"l00998\"></a><span class=\"lineno\">  998</span>                    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00999\" name=\"l00999\"></a><span class=\"lineno\">  999</span>                    <span class=\"comment\">//  If semi-sharp we need to apply fractional weighting -- if made sharp because</span></div>\n-<div class=\"line\"><a id=\"l01000\" name=\"l01000\"></a><span class=\"lineno\"> 1000</span>                    <span class=\"comment\">//  of the other sibling (dependent-sharp) use the fractional weight from that</span></div>\n-<div class=\"line\"><a id=\"l01001\" name=\"l01001\"></a><span class=\"lineno\"> 1001</span>                    <span class=\"comment\">//  other sibling (should only occur when there are 2):</span></div>\n-<div class=\"line\"><a id=\"l01002\" name=\"l01002\"></a><span class=\"lineno\"> 1002</span>                    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l01003\" name=\"l01003\"></a><span class=\"lineno\"> 1003</span>                    <span class=\"keywordflow\">if</span> (pValueTags[pSibling].isSemiSharp()) {</div>\n-<div class=\"line\"><a id=\"l01004\" name=\"l01004\"></a><span class=\"lineno\"> 1004</span>                        Weight wCorner = pValueTags[pSibling].isDepSharp()</div>\n-<div class=\"line\"><a id=\"l01005\" name=\"l01005\"></a><span class=\"lineno\"> 1005</span>                                      ? refineFVar.getFractionalWeight(vert, !pSibling, cVert, !cSibling)</div>\n-<div class=\"line\"><a id=\"l01006\" name=\"l01006\"></a><span class=\"lineno\"> 1006</span>                                      : refineFVar.getFractionalWeight(vert, pSibling, cVert, cSibling);</div>\n-<div class=\"line\"><a id=\"l01007\" name=\"l01007\"></a><span class=\"lineno\"> 1007</span>                        Weight wCrease = 1.0f - wCorner;</div>\n-<div class=\"line\"><a id=\"l01008\" name=\"l01008\"></a><span class=\"lineno\"> 1008</span> </div>\n-<div class=\"line\"><a id=\"l01009\" name=\"l01009\"></a><span class=\"lineno\"> 1009</span>                        vWeight = wCrease * 0.75f + wCorner;</div>\n-<div class=\"line\"><a id=\"l01010\" name=\"l01010\"></a><span class=\"lineno\"> 1010</span>                        eWeight = wCrease * 0.125f;</div>\n-<div class=\"line\"><a id=\"l01011\" name=\"l01011\"></a><span class=\"lineno\"> 1011</span>                    }</div>\n-<div class=\"line\"><a id=\"l01012\" name=\"l01012\"></a><span class=\"lineno\"> 1012</span>                    dst[cVertValue].AddWithWeight(src[pEndValues[0]], eWeight);</div>\n-<div class=\"line\"><a id=\"l01013\" name=\"l01013\"></a><span class=\"lineno\"> 1013</span>                    dst[cVertValue].AddWithWeight(src[pEndValues[1]], eWeight);</div>\n-<div class=\"line\"><a id=\"l01014\" name=\"l01014\"></a><span class=\"lineno\"> 1014</span>                    dst[cVertValue].AddWithWeight(src[pVertValue], vWeight);</div>\n-<div class=\"line\"><a id=\"l01015\" name=\"l01015\"></a><span class=\"lineno\"> 1015</span>                }</div>\n-<div class=\"line\"><a id=\"l01016\" name=\"l01016\"></a><span class=\"lineno\"> 1016</span>            }</div>\n-<div class=\"line\"><a id=\"l01017\" name=\"l01017\"></a><span class=\"lineno\"> 1017</span>        }</div>\n-<div class=\"line\"><a id=\"l01018\" name=\"l01018\"></a><span class=\"lineno\"> 1018</span>    }</div>\n-<div class=\"line\"><a id=\"l01019\" name=\"l01019\"></a><span class=\"lineno\"> 1019</span>}</div>\n-<div class=\"line\"><a id=\"l01020\" name=\"l01020\"></a><span class=\"lineno\"> 1020</span> </div>\n-<div class=\"line\"><a id=\"l01021\" name=\"l01021\"></a><span class=\"lineno\"> 1021</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l01022\" name=\"l01022\"></a><span class=\"lineno\"> 1022</span><span class=\"keyword\">template</span> &lt;Sdc::SchemeType SCHEME, <span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U, <span class=\"keyword\">class</span> U1, <span class=\"keyword\">class</span> U2&gt;</div>\n-<div class=\"line\"><a id=\"l01023\" name=\"l01023\"></a><span class=\"lineno\"> 1023</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"line\"><a id=\"l01024\" name=\"l01024\"></a><span class=\"lineno\"> 1024</span>PrimvarRefinerReal&lt;REAL&gt;::limit(T <span class=\"keyword\">const</span> &amp; src, U &amp; dstPos, U1 * dstTan1Ptr, U2 * dstTan2Ptr)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l01025\" name=\"l01025\"></a><span class=\"lineno\"> 1025</span> </div>\n-<div class=\"line\"><a id=\"l01026\" name=\"l01026\"></a><span class=\"lineno\"> 1026</span>    Sdc::Scheme&lt;SCHEME&gt; scheme(_refiner._subdivOptions);</div>\n-<div class=\"line\"><a id=\"l01027\" name=\"l01027\"></a><span class=\"lineno\"> 1027</span> </div>\n-<div class=\"line\"><a id=\"l01028\" name=\"l01028\"></a><span class=\"lineno\"> 1028</span>    Vtr::internal::Level <span class=\"keyword\">const</span> &amp; level = _refiner.getLevel(_refiner.GetMaxLevel());</div>\n-<div class=\"line\"><a id=\"l01029\" name=\"l01029\"></a><span class=\"lineno\"> 1029</span> </div>\n-<div class=\"line\"><a id=\"l01030\" name=\"l01030\"></a><span class=\"lineno\"> 1030</span>    <span class=\"keywordtype\">int</span>  maxWeightsPerMask = 1 + 2 * level.getMaxValence();</div>\n-<div class=\"line\"><a id=\"l01031\" name=\"l01031\"></a><span class=\"lineno\"> 1031</span>    <span class=\"keywordtype\">bool</span> hasTangents = (dstTan1Ptr &amp;&amp; dstTan2Ptr);</div>\n-<div class=\"line\"><a id=\"l01032\" name=\"l01032\"></a><span class=\"lineno\"> 1032</span>    <span class=\"keywordtype\">int</span>  numMasks = 1 + (hasTangents ? 2 : 0);</div>\n-<div class=\"line\"><a id=\"l01033\" name=\"l01033\"></a><span class=\"lineno\"> 1033</span> </div>\n-<div class=\"line\"><a id=\"l01034\" name=\"l01034\"></a><span class=\"lineno\"> 1034</span>    Vtr::internal::StackBuffer&lt;Index,33&gt; indexBuffer(maxWeightsPerMask);</div>\n-<div class=\"line\"><a id=\"l01035\" name=\"l01035\"></a><span class=\"lineno\"> 1035</span>    Vtr::internal::StackBuffer&lt;Weight,99&gt; weightBuffer(numMasks * maxWeightsPerMask);</div>\n-<div class=\"line\"><a id=\"l01036\" name=\"l01036\"></a><span class=\"lineno\"> 1036</span> </div>\n-<div class=\"line\"><a id=\"l01037\" name=\"l01037\"></a><span class=\"lineno\"> 1037</span>    Weight * vPosWeights = weightBuffer,</div>\n-<div class=\"line\"><a id=\"l01038\" name=\"l01038\"></a><span class=\"lineno\"> 1038</span>           * ePosWeights = vPosWeights + 1,</div>\n-<div class=\"line\"><a id=\"l01039\" name=\"l01039\"></a><span class=\"lineno\"> 1039</span>           * fPosWeights = ePosWeights + level.getMaxValence();</div>\n-<div class=\"line\"><a id=\"l01040\" name=\"l01040\"></a><span class=\"lineno\"> 1040</span>    Weight * vTan1Weights = vPosWeights + maxWeightsPerMask,</div>\n-<div class=\"line\"><a id=\"l01041\" name=\"l01041\"></a><span class=\"lineno\"> 1041</span>           * eTan1Weights = ePosWeights + maxWeightsPerMask,</div>\n-<div class=\"line\"><a id=\"l01042\" name=\"l01042\"></a><span class=\"lineno\"> 1042</span>           * fTan1Weights = fPosWeights + maxWeightsPerMask;</div>\n-<div class=\"line\"><a id=\"l01043\" name=\"l01043\"></a><span class=\"lineno\"> 1043</span>    Weight * vTan2Weights = vTan1Weights + maxWeightsPerMask,</div>\n-<div class=\"line\"><a id=\"l01044\" name=\"l01044\"></a><span class=\"lineno\"> 1044</span>           * eTan2Weights = eTan1Weights + maxWeightsPerMask,</div>\n-<div class=\"line\"><a id=\"l01045\" name=\"l01045\"></a><span class=\"lineno\"> 1045</span>           * fTan2Weights = fTan1Weights + maxWeightsPerMask;</div>\n-<div class=\"line\"><a id=\"l01046\" name=\"l01046\"></a><span class=\"lineno\"> 1046</span> </div>\n-<div class=\"line\"><a id=\"l01047\" name=\"l01047\"></a><span class=\"lineno\"> 1047</span>    Mask posMask( vPosWeights,  ePosWeights,  fPosWeights);</div>\n-<div class=\"line\"><a id=\"l01048\" name=\"l01048\"></a><span class=\"lineno\"> 1048</span>    Mask tan1Mask(vTan1Weights, eTan1Weights, fTan1Weights);</div>\n-<div class=\"line\"><a id=\"l01049\" name=\"l01049\"></a><span class=\"lineno\"> 1049</span>    Mask tan2Mask(vTan2Weights, eTan2Weights, fTan2Weights);</div>\n-<div class=\"line\"><a id=\"l01050\" name=\"l01050\"></a><span class=\"lineno\"> 1050</span> </div>\n-<div class=\"line\"><a id=\"l01051\" name=\"l01051\"></a><span class=\"lineno\"> 1051</span>    <span class=\"comment\">//  This is a bit obscure -- assigning both parent and child as last level -- but</span></div>\n-<div class=\"line\"><a id=\"l01052\" name=\"l01052\"></a><span class=\"lineno\"> 1052</span>    <span class=\"comment\">//  this mask type was intended for another purpose.  Consider one for the limit:</span></div>\n-<div class=\"line\"><a id=\"l01053\" name=\"l01053\"></a><span class=\"lineno\"> 1053</span>    Vtr::internal::VertexInterface vHood(level, level);</div>\n-<div class=\"line\"><a id=\"l01054\" name=\"l01054\"></a><span class=\"lineno\"> 1054</span> </div>\n-<div class=\"line\"><a id=\"l01055\" name=\"l01055\"></a><span class=\"lineno\"> 1055</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> vert = 0; vert &lt; level.getNumVertices(); ++vert) {</div>\n-<div class=\"line\"><a id=\"l01056\" name=\"l01056\"></a><span class=\"lineno\"> 1056</span>        <a class=\"code hl_typedef\" href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">ConstIndexArray</a> vEdges = level.getVertexEdges(vert);</div>\n-<div class=\"line\"><a id=\"l01057\" name=\"l01057\"></a><span class=\"lineno\"> 1057</span> </div>\n-<div class=\"line\"><a id=\"l01058\" name=\"l01058\"></a><span class=\"lineno\"> 1058</span>        <span class=\"comment\">//  Incomplete vertices (present in sparse refinement) do not have their full</span></div>\n-<div class=\"line\"><a id=\"l01059\" name=\"l01059\"></a><span class=\"lineno\"> 1059</span>        <span class=\"comment\">//  topological neighborhood to determine a proper limit -- just leave the</span></div>\n-<div class=\"line\"><a id=\"l01060\" name=\"l01060\"></a><span class=\"lineno\"> 1060</span>        <span class=\"comment\">//  vertex at the refined location and continue to the next:</span></div>\n-<div class=\"line\"><a id=\"l01061\" name=\"l01061\"></a><span class=\"lineno\"> 1061</span>        <span class=\"keywordflow\">if</span> (level.getVertexTag(vert)._incomplete || (vEdges.size() == 0)) {</div>\n-<div class=\"line\"><a id=\"l01062\" name=\"l01062\"></a><span class=\"lineno\"> 1062</span>            dstPos[vert].Clear();</div>\n-<div class=\"line\"><a id=\"l01063\" name=\"l01063\"></a><span class=\"lineno\"> 1063</span>            dstPos[vert].AddWithWeight(src[vert], 1.0);</div>\n-<div class=\"line\"><a id=\"l01064\" name=\"l01064\"></a><span class=\"lineno\"> 1064</span>            <span class=\"keywordflow\">if</span> (hasTangents) {</div>\n-<div class=\"line\"><a id=\"l01065\" name=\"l01065\"></a><span class=\"lineno\"> 1065</span>                (*dstTan1Ptr)[vert].Clear();</div>\n-<div class=\"line\"><a id=\"l01066\" name=\"l01066\"></a><span class=\"lineno\"> 1066</span>                (*dstTan2Ptr)[vert].Clear();</div>\n-<div class=\"line\"><a id=\"l01067\" name=\"l01067\"></a><span class=\"lineno\"> 1067</span>            }</div>\n-<div class=\"line\"><a id=\"l01068\" name=\"l01068\"></a><span class=\"lineno\"> 1068</span>            <span class=\"keywordflow\">continue</span>;</div>\n-<div class=\"line\"><a id=\"l01069\" name=\"l01069\"></a><span class=\"lineno\"> 1069</span>        }</div>\n-<div class=\"line\"><a id=\"l01070\" name=\"l01070\"></a><span class=\"lineno\"> 1070</span> </div>\n-<div class=\"line\"><a id=\"l01071\" name=\"l01071\"></a><span class=\"lineno\"> 1071</span>        <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l01072\" name=\"l01072\"></a><span class=\"lineno\"> 1072</span>        <span class=\"comment\">//  Limit masks require the subdivision Rule for the vertex in order to deal</span></div>\n-<div class=\"line\"><a id=\"l01073\" name=\"l01073\"></a><span class=\"lineno\"> 1073</span>        <span class=\"comment\">//  with infinitely sharp features correctly -- including boundaries and corners.</span></div>\n-<div class=\"line\"><a id=\"l01074\" name=\"l01074\"></a><span class=\"lineno\"> 1074</span>        <span class=\"comment\">//  The vertex neighborhood is minimally defined with vertex and edge counts.</span></div>\n-<div class=\"line\"><a id=\"l01075\" name=\"l01075\"></a><span class=\"lineno\"> 1075</span>        <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l01076\" name=\"l01076\"></a><span class=\"lineno\"> 1076</span>        <a class=\"code hl_enumeration\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78\">Sdc::Crease::Rule</a> vRule = level.getVertexRule(vert);</div>\n-<div class=\"line\"><a id=\"l01077\" name=\"l01077\"></a><span class=\"lineno\"> 1077</span> </div>\n-<div class=\"line\"><a id=\"l01078\" name=\"l01078\"></a><span class=\"lineno\"> 1078</span>        <span class=\"comment\">//  This is a bit obscure -- child vertex index will be ignored here</span></div>\n-<div class=\"line\"><a id=\"l01079\" name=\"l01079\"></a><span class=\"lineno\"> 1079</span>        vHood.SetIndex(vert, vert);</div>\n-<div class=\"line\"><a id=\"l01080\" name=\"l01080\"></a><span class=\"lineno\"> 1080</span> </div>\n-<div class=\"line\"><a id=\"l01081\" name=\"l01081\"></a><span class=\"lineno\"> 1081</span>        <span class=\"keywordflow\">if</span> (hasTangents) {</div>\n-<div class=\"line\"><a id=\"l01082\" name=\"l01082\"></a><span class=\"lineno\"> 1082</span>            scheme.ComputeVertexLimitMask(vHood, posMask, tan1Mask, tan2Mask, vRule);</div>\n-<div class=\"line\"><a id=\"l01083\" name=\"l01083\"></a><span class=\"lineno\"> 1083</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l01084\" name=\"l01084\"></a><span class=\"lineno\"> 1084</span>            scheme.ComputeVertexLimitMask(vHood, posMask, vRule);</div>\n-<div class=\"line\"><a id=\"l01085\" name=\"l01085\"></a><span class=\"lineno\"> 1085</span>        }</div>\n-<div class=\"line\"><a id=\"l01086\" name=\"l01086\"></a><span class=\"lineno\"> 1086</span> </div>\n-<div class=\"line\"><a id=\"l01087\" name=\"l01087\"></a><span class=\"lineno\"> 1087</span>        <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l01088\" name=\"l01088\"></a><span class=\"lineno\"> 1088</span>        <span class=\"comment\">//  Gather the neighboring vertices of this vertex -- the vertices opposite its</span></div>\n-<div class=\"line\"><a id=\"l01089\" name=\"l01089\"></a><span class=\"lineno\"> 1089</span>        <span class=\"comment\">//  incident edges, and the opposite vertices of its incident faces:</span></div>\n-<div class=\"line\"><a id=\"l01090\" name=\"l01090\"></a><span class=\"lineno\"> 1090</span>        <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l01091\" name=\"l01091\"></a><span class=\"lineno\"> 1091</span>        <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> * eIndices = indexBuffer;</div>\n-<div class=\"line\"><a id=\"l01092\" name=\"l01092\"></a><span class=\"lineno\"> 1092</span>        <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> * fIndices = indexBuffer + vEdges.<a class=\"code hl_function\" href=\"a01353.html#a60304b65bf89363bcc3165d3cde67f86\">size</a>();</div>\n-<div class=\"line\"><a id=\"l01093\" name=\"l01093\"></a><span class=\"lineno\"> 1093</span> </div>\n-<div class=\"line\"><a id=\"l01094\" name=\"l01094\"></a><span class=\"lineno\"> 1094</span>        <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; vEdges.size(); ++i) {</div>\n-<div class=\"line\"><a id=\"l01095\" name=\"l01095\"></a><span class=\"lineno\"> 1095</span>            <a class=\"code hl_typedef\" href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">ConstIndexArray</a> eVerts = level.getEdgeVertices(vEdges[i]);</div>\n-<div class=\"line\"><a id=\"l01096\" name=\"l01096\"></a><span class=\"lineno\"> 1096</span> </div>\n-<div class=\"line\"><a id=\"l01097\" name=\"l01097\"></a><span class=\"lineno\"> 1097</span>            eIndices[i] = (eVerts[0] == vert) ? eVerts[1] : eVerts[0];</div>\n-<div class=\"line\"><a id=\"l01098\" name=\"l01098\"></a><span class=\"lineno\"> 1098</span>        }</div>\n-<div class=\"line\"><a id=\"l01099\" name=\"l01099\"></a><span class=\"lineno\"> 1099</span>        <span class=\"keywordflow\">if</span> (posMask.GetNumFaceWeights() || (hasTangents &amp;&amp; tan1Mask.GetNumFaceWeights())) {</div>\n-<div class=\"line\"><a id=\"l01100\" name=\"l01100\"></a><span class=\"lineno\"> 1100</span>            <a class=\"code hl_typedef\" href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">ConstIndexArray</a>      vFaces = level.getVertexFaces(vert);</div>\n-<div class=\"line\"><a id=\"l01101\" name=\"l01101\"></a><span class=\"lineno\"> 1101</span>            <a class=\"code hl_typedef\" href=\"a00908.html#a48f809d54fe9eb8cbd9d3f7521ba4fb1\">ConstLocalIndexArray</a> vInFace = level.getVertexFaceLocalIndices(vert);</div>\n-<div class=\"line\"><a id=\"l01102\" name=\"l01102\"></a><span class=\"lineno\"> 1102</span> </div>\n-<div class=\"line\"><a id=\"l01103\" name=\"l01103\"></a><span class=\"lineno\"> 1103</span>            <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; vFaces.size(); ++i) {</div>\n-<div class=\"line\"><a id=\"l01104\" name=\"l01104\"></a><span class=\"lineno\"> 1104</span>                <a class=\"code hl_typedef\" href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">ConstIndexArray</a> fVerts = level.getFaceVertices(vFaces[i]);</div>\n-<div class=\"line\"><a id=\"l01105\" name=\"l01105\"></a><span class=\"lineno\"> 1105</span> </div>\n-<div class=\"line\"><a id=\"l01106\" name=\"l01106\"></a><span class=\"lineno\"> 1106</span>                <a class=\"code hl_typedef\" href=\"a00908.html#a200172f1c19545bc01f292afa2167e2f\">LocalIndex</a> vOppInFace = (vInFace[i] + 2);</div>\n-<div class=\"line\"><a id=\"l01107\" name=\"l01107\"></a><span class=\"lineno\"> 1107</span>                <span class=\"keywordflow\">if</span> (vOppInFace &gt;= fVerts.size()) vOppInFace -= (<a class=\"code hl_typedef\" href=\"a00908.html#a200172f1c19545bc01f292afa2167e2f\">LocalIndex</a>)fVerts.<a class=\"code hl_function\" href=\"a01353.html#a60304b65bf89363bcc3165d3cde67f86\">size</a>();</div>\n-<div class=\"line\"><a id=\"l01108\" name=\"l01108\"></a><span class=\"lineno\"> 1108</span> </div>\n-<div class=\"line\"><a id=\"l01109\" name=\"l01109\"></a><span class=\"lineno\"> 1109</span>                fIndices[i] = level.getFaceVertices(vFaces[i])[vOppInFace];</div>\n-<div class=\"line\"><a id=\"l01110\" name=\"l01110\"></a><span class=\"lineno\"> 1110</span>            }</div>\n-<div class=\"line\"><a id=\"l01111\" name=\"l01111\"></a><span class=\"lineno\"> 1111</span>        }</div>\n-<div class=\"line\"><a id=\"l01112\" name=\"l01112\"></a><span class=\"lineno\"> 1112</span> </div>\n-<div class=\"line\"><a id=\"l01113\" name=\"l01113\"></a><span class=\"lineno\"> 1113</span>        <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l01114\" name=\"l01114\"></a><span class=\"lineno\"> 1114</span>        <span class=\"comment\">//  Combine the weights and indices for position and tangents.  As with applying</span></div>\n-<div class=\"line\"><a id=\"l01115\" name=\"l01115\"></a><span class=\"lineno\"> 1115</span>        <span class=\"comment\">//  refinement masks to vertex data, in order to improve numerical precision, it&#39;s</span></div>\n-<div class=\"line\"><a id=\"l01116\" name=\"l01116\"></a><span class=\"lineno\"> 1116</span>        <span class=\"comment\">//  better to apply smaller weights first, so begin with the face-weights followed</span></div>\n-<div class=\"line\"><a id=\"l01117\" name=\"l01117\"></a><span class=\"lineno\"> 1117</span>        <span class=\"comment\">//  by the edge-weights and the vertex weight last.</span></div>\n-<div class=\"line\"><a id=\"l01118\" name=\"l01118\"></a><span class=\"lineno\"> 1118</span>        <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l01119\" name=\"l01119\"></a><span class=\"lineno\"> 1119</span>        dstPos[vert].Clear();</div>\n-<div class=\"line\"><a id=\"l01120\" name=\"l01120\"></a><span class=\"lineno\"> 1120</span>        <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; posMask.GetNumFaceWeights(); ++i) {</div>\n-<div class=\"line\"><a id=\"l01121\" name=\"l01121\"></a><span class=\"lineno\"> 1121</span>            dstPos[vert].AddWithWeight(src[fIndices[i]], fPosWeights[i]);</div>\n-<div class=\"line\"><a id=\"l01122\" name=\"l01122\"></a><span class=\"lineno\"> 1122</span>        }</div>\n-<div class=\"line\"><a id=\"l01123\" name=\"l01123\"></a><span class=\"lineno\"> 1123</span>        <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; posMask.GetNumEdgeWeights(); ++i) {</div>\n-<div class=\"line\"><a id=\"l01124\" name=\"l01124\"></a><span class=\"lineno\"> 1124</span>            dstPos[vert].AddWithWeight(src[eIndices[i]], ePosWeights[i]);</div>\n-<div class=\"line\"><a id=\"l01125\" name=\"l01125\"></a><span class=\"lineno\"> 1125</span>        }</div>\n-<div class=\"line\"><a id=\"l01126\" name=\"l01126\"></a><span class=\"lineno\"> 1126</span>        dstPos[vert].AddWithWeight(src[vert], vPosWeights[0]);</div>\n-<div class=\"line\"><a id=\"l01127\" name=\"l01127\"></a><span class=\"lineno\"> 1127</span> </div>\n-<div class=\"line\"><a id=\"l01128\" name=\"l01128\"></a><span class=\"lineno\"> 1128</span>        <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l01129\" name=\"l01129\"></a><span class=\"lineno\"> 1129</span>        <span class=\"comment\">//  Apply the tangent masks -- both will have the same number of weights and </span></div>\n-<div class=\"line\"><a id=\"l01130\" name=\"l01130\"></a><span class=\"lineno\"> 1130</span>        <span class=\"comment\">//  indices (one tangent may be &quot;padded&quot; to accommodate the other), but these</span></div>\n-<div class=\"line\"><a id=\"l01131\" name=\"l01131\"></a><span class=\"lineno\"> 1131</span>        <span class=\"comment\">//  may differ from those of the position:</span></div>\n-<div class=\"line\"><a id=\"l01132\" name=\"l01132\"></a><span class=\"lineno\"> 1132</span>        <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l01133\" name=\"l01133\"></a><span class=\"lineno\"> 1133</span>        <span class=\"keywordflow\">if</span> (hasTangents) {</div>\n-<div class=\"line\"><a id=\"l01134\" name=\"l01134\"></a><span class=\"lineno\"> 1134</span>            assert(tan1Mask.GetNumFaceWeights() == tan2Mask.GetNumFaceWeights());</div>\n-<div class=\"line\"><a id=\"l01135\" name=\"l01135\"></a><span class=\"lineno\"> 1135</span>            assert(tan1Mask.GetNumEdgeWeights() == tan2Mask.GetNumEdgeWeights());</div>\n-<div class=\"line\"><a id=\"l01136\" name=\"l01136\"></a><span class=\"lineno\"> 1136</span> </div>\n-<div class=\"line\"><a id=\"l01137\" name=\"l01137\"></a><span class=\"lineno\"> 1137</span>            U1 &amp; dstTan1 = *dstTan1Ptr;</div>\n-<div class=\"line\"><a id=\"l01138\" name=\"l01138\"></a><span class=\"lineno\"> 1138</span>            U2 &amp; dstTan2 = *dstTan2Ptr;</div>\n-<div class=\"line\"><a id=\"l01139\" name=\"l01139\"></a><span class=\"lineno\"> 1139</span> </div>\n-<div class=\"line\"><a id=\"l01140\" name=\"l01140\"></a><span class=\"lineno\"> 1140</span>            dstTan1[vert].Clear();</div>\n-<div class=\"line\"><a id=\"l01141\" name=\"l01141\"></a><span class=\"lineno\"> 1141</span>            dstTan2[vert].Clear();</div>\n-<div class=\"line\"><a id=\"l01142\" name=\"l01142\"></a><span class=\"lineno\"> 1142</span>            <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; tan1Mask.GetNumFaceWeights(); ++i) {</div>\n-<div class=\"line\"><a id=\"l01143\" name=\"l01143\"></a><span class=\"lineno\"> 1143</span>                dstTan1[vert].AddWithWeight(src[fIndices[i]], fTan1Weights[i]);</div>\n-<div class=\"line\"><a id=\"l01144\" name=\"l01144\"></a><span class=\"lineno\"> 1144</span>                dstTan2[vert].AddWithWeight(src[fIndices[i]], fTan2Weights[i]);</div>\n-<div class=\"line\"><a id=\"l01145\" name=\"l01145\"></a><span class=\"lineno\"> 1145</span>            }</div>\n-<div class=\"line\"><a id=\"l01146\" name=\"l01146\"></a><span class=\"lineno\"> 1146</span>            <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; tan1Mask.GetNumEdgeWeights(); ++i) {</div>\n-<div class=\"line\"><a id=\"l01147\" name=\"l01147\"></a><span class=\"lineno\"> 1147</span>                dstTan1[vert].AddWithWeight(src[eIndices[i]], eTan1Weights[i]);</div>\n-<div class=\"line\"><a id=\"l01148\" name=\"l01148\"></a><span class=\"lineno\"> 1148</span>                dstTan2[vert].AddWithWeight(src[eIndices[i]], eTan2Weights[i]);</div>\n-<div class=\"line\"><a id=\"l01149\" name=\"l01149\"></a><span class=\"lineno\"> 1149</span>            }</div>\n-<div class=\"line\"><a id=\"l01150\" name=\"l01150\"></a><span class=\"lineno\"> 1150</span>            dstTan1[vert].AddWithWeight(src[vert], vTan1Weights[0]);</div>\n-<div class=\"line\"><a id=\"l01151\" name=\"l01151\"></a><span class=\"lineno\"> 1151</span>            dstTan2[vert].AddWithWeight(src[vert], vTan2Weights[0]);</div>\n-<div class=\"line\"><a id=\"l01152\" name=\"l01152\"></a><span class=\"lineno\"> 1152</span>        }</div>\n-<div class=\"line\"><a id=\"l01153\" name=\"l01153\"></a><span class=\"lineno\"> 1153</span>    }</div>\n-<div class=\"line\"><a id=\"l01154\" name=\"l01154\"></a><span class=\"lineno\"> 1154</span>}</div>\n-<div class=\"line\"><a id=\"l01155\" name=\"l01155\"></a><span class=\"lineno\"> 1155</span> </div>\n-<div class=\"line\"><a id=\"l01156\" name=\"l01156\"></a><span class=\"lineno\"> 1156</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l01157\" name=\"l01157\"></a><span class=\"lineno\"> 1157</span><span class=\"keyword\">template</span> &lt;Sdc::SchemeType SCHEME, <span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt;</div>\n-<div class=\"line\"><a id=\"l01158\" name=\"l01158\"></a><span class=\"lineno\"> 1158</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"line\"><a id=\"l01159\" name=\"l01159\"></a><span class=\"lineno\"> 1159</span>PrimvarRefinerReal&lt;REAL&gt;::limitFVar(T <span class=\"keyword\">const</span> &amp; src, U &amp; dst, <span class=\"keywordtype\">int</span> channel)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l01160\" name=\"l01160\"></a><span class=\"lineno\"> 1160</span> </div>\n-<div class=\"line\"><a id=\"l01161\" name=\"l01161\"></a><span class=\"lineno\"> 1161</span>    Sdc::Scheme&lt;SCHEME&gt; scheme(_refiner._subdivOptions);</div>\n-<div class=\"line\"><a id=\"l01162\" name=\"l01162\"></a><span class=\"lineno\"> 1162</span> </div>\n-<div class=\"line\"><a id=\"l01163\" name=\"l01163\"></a><span class=\"lineno\"> 1163</span>    Vtr::internal::Level <span class=\"keyword\">const</span> &amp;      level       = _refiner.getLevel(_refiner.GetMaxLevel());</div>\n-<div class=\"line\"><a id=\"l01164\" name=\"l01164\"></a><span class=\"lineno\"> 1164</span>    Vtr::internal::FVarLevel <span class=\"keyword\">const</span> &amp;  fvarChannel = level.getFVarLevel(channel);</div>\n-<div class=\"line\"><a id=\"l01165\" name=\"l01165\"></a><span class=\"lineno\"> 1165</span> </div>\n-<div class=\"line\"><a id=\"l01166\" name=\"l01166\"></a><span class=\"lineno\"> 1166</span>    <span class=\"keywordtype\">int</span> maxWeightsPerMask = 1 + 2 * level.getMaxValence();</div>\n-<div class=\"line\"><a id=\"l01167\" name=\"l01167\"></a><span class=\"lineno\"> 1167</span> </div>\n-<div class=\"line\"><a id=\"l01168\" name=\"l01168\"></a><span class=\"lineno\"> 1168</span>    Vtr::internal::StackBuffer&lt;Weight,33&gt; weightBuffer(maxWeightsPerMask);</div>\n-<div class=\"line\"><a id=\"l01169\" name=\"l01169\"></a><span class=\"lineno\"> 1169</span>    Vtr::internal::StackBuffer&lt;Index,16&gt; vEdgeBuffer(level.getMaxValence());</div>\n-<div class=\"line\"><a id=\"l01170\" name=\"l01170\"></a><span class=\"lineno\"> 1170</span> </div>\n-<div class=\"line\"><a id=\"l01171\" name=\"l01171\"></a><span class=\"lineno\"> 1171</span>    <span class=\"comment\">//  This is a bit obscure -- assign both parent and child as last level</span></div>\n-<div class=\"line\"><a id=\"l01172\" name=\"l01172\"></a><span class=\"lineno\"> 1172</span>    Vtr::internal::VertexInterface vHood(level, level);</div>\n-<div class=\"line\"><a id=\"l01173\" name=\"l01173\"></a><span class=\"lineno\"> 1173</span> </div>\n-<div class=\"line\"><a id=\"l01174\" name=\"l01174\"></a><span class=\"lineno\"> 1174</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> vert = 0; vert &lt; level.getNumVertices(); ++vert) {</div>\n-<div class=\"line\"><a id=\"l01175\" name=\"l01175\"></a><span class=\"lineno\"> 1175</span> </div>\n-<div class=\"line\"><a id=\"l01176\" name=\"l01176\"></a><span class=\"lineno\"> 1176</span>        <a class=\"code hl_typedef\" href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">ConstIndexArray</a> vEdges  = level.getVertexEdges(vert);</div>\n-<div class=\"line\"><a id=\"l01177\" name=\"l01177\"></a><span class=\"lineno\"> 1177</span>        <a class=\"code hl_typedef\" href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">ConstIndexArray</a> vValues = fvarChannel.getVertexValues(vert);</div>\n-<div class=\"line\"><a id=\"l01178\" name=\"l01178\"></a><span class=\"lineno\"> 1178</span> </div>\n-<div class=\"line\"><a id=\"l01179\" name=\"l01179\"></a><span class=\"lineno\"> 1179</span>        <span class=\"comment\">//  Incomplete vertices (present in sparse refinement) do not have their full</span></div>\n-<div class=\"line\"><a id=\"l01180\" name=\"l01180\"></a><span class=\"lineno\"> 1180</span>        <span class=\"comment\">//  topological neighborhood to determine a proper limit -- just leave the</span></div>\n-<div class=\"line\"><a id=\"l01181\" name=\"l01181\"></a><span class=\"lineno\"> 1181</span>        <span class=\"comment\">//  values (perhaps more than one per vertex) at the refined location.</span></div>\n-<div class=\"line\"><a id=\"l01182\" name=\"l01182\"></a><span class=\"lineno\"> 1182</span>        <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l01183\" name=\"l01183\"></a><span class=\"lineno\"> 1183</span>        <span class=\"comment\">//  The same can be done if the face-varying channel is purely linear.</span></div>\n-<div class=\"line\"><a id=\"l01184\" name=\"l01184\"></a><span class=\"lineno\"> 1184</span>        <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l01185\" name=\"l01185\"></a><span class=\"lineno\"> 1185</span>        <span class=\"keywordtype\">bool</span> isIncomplete = (level.getVertexTag(vert)._incomplete || (vEdges.size() == 0));</div>\n-<div class=\"line\"><a id=\"l01186\" name=\"l01186\"></a><span class=\"lineno\"> 1186</span>        <span class=\"keywordflow\">if</span> (isIncomplete || fvarChannel.isLinear()) {</div>\n-<div class=\"line\"><a id=\"l01187\" name=\"l01187\"></a><span class=\"lineno\"> 1187</span>            <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; vValues.size(); ++i) {</div>\n-<div class=\"line\"><a id=\"l01188\" name=\"l01188\"></a><span class=\"lineno\"> 1188</span>                <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a> vValue = vValues[i];</div>\n-<div class=\"line\"><a id=\"l01189\" name=\"l01189\"></a><span class=\"lineno\"> 1189</span> </div>\n-<div class=\"line\"><a id=\"l01190\" name=\"l01190\"></a><span class=\"lineno\"> 1190</span>                dst[vValue].Clear();</div>\n-<div class=\"line\"><a id=\"l01191\" name=\"l01191\"></a><span class=\"lineno\"> 1191</span>                dst[vValue].AddWithWeight(src[vValue], 1.0f);</div>\n-<div class=\"line\"><a id=\"l01192\" name=\"l01192\"></a><span class=\"lineno\"> 1192</span>            }</div>\n-<div class=\"line\"><a id=\"l01193\" name=\"l01193\"></a><span class=\"lineno\"> 1193</span>            <span class=\"keywordflow\">continue</span>;</div>\n-<div class=\"line\"><a id=\"l01194\" name=\"l01194\"></a><span class=\"lineno\"> 1194</span>        }</div>\n-<div class=\"line\"><a id=\"l01195\" name=\"l01195\"></a><span class=\"lineno\"> 1195</span> </div>\n-<div class=\"line\"><a id=\"l01196\" name=\"l01196\"></a><span class=\"lineno\"> 1196</span>        <span class=\"keywordtype\">bool</span> fvarVertMatchesVertex = fvarChannel.valueTopologyMatches(vValues[0]);</div>\n-<div class=\"line\"><a id=\"l01197\" name=\"l01197\"></a><span class=\"lineno\"> 1197</span>        <span class=\"keywordflow\">if</span> (fvarVertMatchesVertex) {</div>\n-<div class=\"line\"><a id=\"l01198\" name=\"l01198\"></a><span class=\"lineno\"> 1198</span> </div>\n-<div class=\"line\"><a id=\"l01199\" name=\"l01199\"></a><span class=\"lineno\"> 1199</span>            <span class=\"comment\">//  Assign the mask weights to the common buffer and compute the mask:</span></div>\n-<div class=\"line\"><a id=\"l01200\" name=\"l01200\"></a><span class=\"lineno\"> 1200</span>            <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l01201\" name=\"l01201\"></a><span class=\"lineno\"> 1201</span>            Weight * vWeights = weightBuffer,</div>\n-<div class=\"line\"><a id=\"l01202\" name=\"l01202\"></a><span class=\"lineno\"> 1202</span>                   * eWeights = vWeights + 1,</div>\n-<div class=\"line\"><a id=\"l01203\" name=\"l01203\"></a><span class=\"lineno\"> 1203</span>                   * fWeights = eWeights + vEdges.<a class=\"code hl_function\" href=\"a01353.html#a60304b65bf89363bcc3165d3cde67f86\">size</a>();</div>\n-<div class=\"line\"><a id=\"l01204\" name=\"l01204\"></a><span class=\"lineno\"> 1204</span> </div>\n-<div class=\"line\"><a id=\"l01205\" name=\"l01205\"></a><span class=\"lineno\"> 1205</span>            Mask vMask(vWeights, eWeights, fWeights);</div>\n-<div class=\"line\"><a id=\"l01206\" name=\"l01206\"></a><span class=\"lineno\"> 1206</span> </div>\n-<div class=\"line\"><a id=\"l01207\" name=\"l01207\"></a><span class=\"lineno\"> 1207</span>            vHood.SetIndex(vert, vert);</div>\n-<div class=\"line\"><a id=\"l01208\" name=\"l01208\"></a><span class=\"lineno\"> 1208</span> </div>\n-<div class=\"line\"><a id=\"l01209\" name=\"l01209\"></a><span class=\"lineno\"> 1209</span>            scheme.ComputeVertexLimitMask(vHood, vMask, level.getVertexRule(vert));</div>\n-<div class=\"line\"><a id=\"l01210\" name=\"l01210\"></a><span class=\"lineno\"> 1210</span> </div>\n-<div class=\"line\"><a id=\"l01211\" name=\"l01211\"></a><span class=\"lineno\"> 1211</span>            <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l01212\" name=\"l01212\"></a><span class=\"lineno\"> 1212</span>            <span class=\"comment\">//  Apply mask to corresponding FVar values for neighboring vertices:</span></div>\n-<div class=\"line\"><a id=\"l01213\" name=\"l01213\"></a><span class=\"lineno\"> 1213</span>            <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l01214\" name=\"l01214\"></a><span class=\"lineno\"> 1214</span>            <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a> vValue = vValues[0];</div>\n-<div class=\"line\"><a id=\"l01215\" name=\"l01215\"></a><span class=\"lineno\"> 1215</span> </div>\n-<div class=\"line\"><a id=\"l01216\" name=\"l01216\"></a><span class=\"lineno\"> 1216</span>            dst[vValue].Clear();</div>\n-<div class=\"line\"><a id=\"l01217\" name=\"l01217\"></a><span class=\"lineno\"> 1217</span>            <span class=\"keywordflow\">if</span> (vMask.GetNumFaceWeights() &gt; 0) {</div>\n-<div class=\"line\"><a id=\"l01218\" name=\"l01218\"></a><span class=\"lineno\"> 1218</span>                assert(!vMask.AreFaceWeightsForFaceCenters());</div>\n-<div class=\"line\"><a id=\"l01219\" name=\"l01219\"></a><span class=\"lineno\"> 1219</span> </div>\n-<div class=\"line\"><a id=\"l01220\" name=\"l01220\"></a><span class=\"lineno\"> 1220</span>                <a class=\"code hl_typedef\" href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">ConstIndexArray</a>      vFaces = level.getVertexFaces(vert);</div>\n-<div class=\"line\"><a id=\"l01221\" name=\"l01221\"></a><span class=\"lineno\"> 1221</span>                <a class=\"code hl_typedef\" href=\"a00908.html#a48f809d54fe9eb8cbd9d3f7521ba4fb1\">ConstLocalIndexArray</a> vInFace = level.getVertexFaceLocalIndices(vert);</div>\n-<div class=\"line\"><a id=\"l01222\" name=\"l01222\"></a><span class=\"lineno\"> 1222</span> </div>\n-<div class=\"line\"><a id=\"l01223\" name=\"l01223\"></a><span class=\"lineno\"> 1223</span>                <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; vFaces.size(); ++i) {</div>\n-<div class=\"line\"><a id=\"l01224\" name=\"l01224\"></a><span class=\"lineno\"> 1224</span>                    <a class=\"code hl_typedef\" href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">ConstIndexArray</a> faceValues = fvarChannel.getFaceValues(vFaces[i]);</div>\n-<div class=\"line\"><a id=\"l01225\" name=\"l01225\"></a><span class=\"lineno\"> 1225</span>                    <a class=\"code hl_typedef\" href=\"a00908.html#a200172f1c19545bc01f292afa2167e2f\">LocalIndex</a> vOppInFace = vInFace[i] + 2;</div>\n-<div class=\"line\"><a id=\"l01226\" name=\"l01226\"></a><span class=\"lineno\"> 1226</span>                    <span class=\"keywordflow\">if</span> (vOppInFace &gt;= faceValues.size()) vOppInFace -= faceValues.<a class=\"code hl_function\" href=\"a01353.html#a60304b65bf89363bcc3165d3cde67f86\">size</a>();</div>\n-<div class=\"line\"><a id=\"l01227\" name=\"l01227\"></a><span class=\"lineno\"> 1227</span> </div>\n-<div class=\"line\"><a id=\"l01228\" name=\"l01228\"></a><span class=\"lineno\"> 1228</span>                    <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> vValueOppositeFace = faceValues[vOppInFace];</div>\n-<div class=\"line\"><a id=\"l01229\" name=\"l01229\"></a><span class=\"lineno\"> 1229</span> </div>\n-<div class=\"line\"><a id=\"l01230\" name=\"l01230\"></a><span class=\"lineno\"> 1230</span>                    dst[vValue].AddWithWeight(src[vValueOppositeFace], fWeights[i]);</div>\n-<div class=\"line\"><a id=\"l01231\" name=\"l01231\"></a><span class=\"lineno\"> 1231</span>                }</div>\n-<div class=\"line\"><a id=\"l01232\" name=\"l01232\"></a><span class=\"lineno\"> 1232</span>            }</div>\n-<div class=\"line\"><a id=\"l01233\" name=\"l01233\"></a><span class=\"lineno\"> 1233</span>            <span class=\"keywordflow\">if</span> (vMask.GetNumEdgeWeights() &gt; 0) {</div>\n-<div class=\"line\"><a id=\"l01234\" name=\"l01234\"></a><span class=\"lineno\"> 1234</span>                <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> * vEdgeValues = vEdgeBuffer;</div>\n-<div class=\"line\"><a id=\"l01235\" name=\"l01235\"></a><span class=\"lineno\"> 1235</span>                fvarChannel.getVertexEdgeValues(vert, vEdgeValues);</div>\n-<div class=\"line\"><a id=\"l01236\" name=\"l01236\"></a><span class=\"lineno\"> 1236</span> </div>\n-<div class=\"line\"><a id=\"l01237\" name=\"l01237\"></a><span class=\"lineno\"> 1237</span>                <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; vEdges.size(); ++i) {</div>\n-<div class=\"line\"><a id=\"l01238\" name=\"l01238\"></a><span class=\"lineno\"> 1238</span>                    dst[vValue].AddWithWeight(src[vEdgeValues[i]], eWeights[i]);</div>\n-<div class=\"line\"><a id=\"l01239\" name=\"l01239\"></a><span class=\"lineno\"> 1239</span>                }</div>\n-<div class=\"line\"><a id=\"l01240\" name=\"l01240\"></a><span class=\"lineno\"> 1240</span>            }</div>\n-<div class=\"line\"><a id=\"l01241\" name=\"l01241\"></a><span class=\"lineno\"> 1241</span>            dst[vValue].AddWithWeight(src[vValue], vWeights[0]);</div>\n-<div class=\"line\"><a id=\"l01242\" name=\"l01242\"></a><span class=\"lineno\"> 1242</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l01243\" name=\"l01243\"></a><span class=\"lineno\"> 1243</span>            <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l01244\" name=\"l01244\"></a><span class=\"lineno\"> 1244</span>            <span class=\"comment\">//  Sibling FVar values associated with a vertex will be either a corner or a crease:</span></div>\n-<div class=\"line\"><a id=\"l01245\" name=\"l01245\"></a><span class=\"lineno\"> 1245</span>            <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l01246\" name=\"l01246\"></a><span class=\"lineno\"> 1246</span>            <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; vValues.size(); ++i) {</div>\n-<div class=\"line\"><a id=\"l01247\" name=\"l01247\"></a><span class=\"lineno\"> 1247</span>                <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a> vValue = vValues[i];</div>\n-<div class=\"line\"><a id=\"l01248\" name=\"l01248\"></a><span class=\"lineno\"> 1248</span> </div>\n-<div class=\"line\"><a id=\"l01249\" name=\"l01249\"></a><span class=\"lineno\"> 1249</span>                dst[vValue].Clear();</div>\n-<div class=\"line\"><a id=\"l01250\" name=\"l01250\"></a><span class=\"lineno\"> 1250</span>                <span class=\"keywordflow\">if</span> (fvarChannel.getValueTag(vValue).isCorner()) {</div>\n-<div class=\"line\"><a id=\"l01251\" name=\"l01251\"></a><span class=\"lineno\"> 1251</span>                    dst[vValue].AddWithWeight(src[vValue], 1.0f);</div>\n-<div class=\"line\"><a id=\"l01252\" name=\"l01252\"></a><span class=\"lineno\"> 1252</span>                } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l01253\" name=\"l01253\"></a><span class=\"lineno\"> 1253</span>                    <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> vEndValues[2];</div>\n-<div class=\"line\"><a id=\"l01254\" name=\"l01254\"></a><span class=\"lineno\"> 1254</span>                    fvarChannel.getVertexCreaseEndValues(vert, i, vEndValues);</div>\n-<div class=\"line\"><a id=\"l01255\" name=\"l01255\"></a><span class=\"lineno\"> 1255</span> </div>\n-<div class=\"line\"><a id=\"l01256\" name=\"l01256\"></a><span class=\"lineno\"> 1256</span>                    dst[vValue].AddWithWeight(src[vEndValues[0]], 1.0f/6.0f);</div>\n-<div class=\"line\"><a id=\"l01257\" name=\"l01257\"></a><span class=\"lineno\"> 1257</span>                    dst[vValue].AddWithWeight(src[vEndValues[1]], 1.0f/6.0f);</div>\n-<div class=\"line\"><a id=\"l01258\" name=\"l01258\"></a><span class=\"lineno\"> 1258</span>                    dst[vValue].AddWithWeight(src[vValue], 2.0f/3.0f);</div>\n-<div class=\"line\"><a id=\"l01259\" name=\"l01259\"></a><span class=\"lineno\"> 1259</span>                }</div>\n-<div class=\"line\"><a id=\"l01260\" name=\"l01260\"></a><span class=\"lineno\"> 1260</span>            }</div>\n-<div class=\"line\"><a id=\"l01261\" name=\"l01261\"></a><span class=\"lineno\"> 1261</span>        }</div>\n-<div class=\"line\"><a id=\"l01262\" name=\"l01262\"></a><span class=\"lineno\"> 1262</span>    }</div>\n-<div class=\"line\"><a id=\"l01263\" name=\"l01263\"></a><span class=\"lineno\"> 1263</span>}</div>\n-<div class=\"line\"><a id=\"l01264\" name=\"l01264\"></a><span class=\"lineno\"> 1264</span> </div>\n-<div class=\"foldopen\" id=\"foldopen01265\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l01265\" name=\"l01265\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01037.html\"> 1265</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01037.html\">PrimvarRefiner</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"a01029.html\">PrimvarRefinerReal</a>&lt;float&gt; {</div>\n-<div class=\"line\"><a id=\"l01266\" name=\"l01266\"></a><span class=\"lineno\"> 1266</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"foldopen\" id=\"foldopen01267\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01267\" name=\"l01267\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01037.html#a643d81a2ae20ba1897433f5af5a3697a\"> 1267</a></span>    <a class=\"code hl_function\" href=\"a01037.html#a643d81a2ae20ba1897433f5af5a3697a\">PrimvarRefiner</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> &amp; refiner)</div>\n-<div class=\"line\"><a id=\"l01268\" name=\"l01268\"></a><span class=\"lineno\"> 1268</span>        : <a class=\"code hl_class\" href=\"a01029.html\">PrimvarRefinerReal</a>&lt;float&gt;(refiner) { }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01269\" name=\"l01269\"></a><span class=\"lineno\"> 1269</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l01270\" name=\"l01270\"></a><span class=\"lineno\"> 1270</span> </div>\n-<div class=\"line\"><a id=\"l01271\" name=\"l01271\"></a><span class=\"lineno\"> 1271</span>} <span class=\"comment\">// end namespace Far</span></div>\n-<div class=\"line\"><a id=\"l01272\" name=\"l01272\"></a><span class=\"lineno\"> 1272</span> </div>\n-<div class=\"line\"><a id=\"l01273\" name=\"l01273\"></a><span class=\"lineno\"> 1273</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l01274\" name=\"l01274\"></a><span class=\"lineno\"> 1274</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l01275\" name=\"l01275\"></a><span class=\"lineno\"> 1275</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l01276\" name=\"l01276\"></a><span class=\"lineno\"> 1276</span> </div>\n-<div class=\"line\"><a id=\"l01277\" name=\"l01277\"></a><span class=\"lineno\"> 1277</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_FAR_PRIMVAR_REFINER_H */</span><span class=\"preprocessor\"></span></div>\n-</div>\n-</div>\n-</div>\n-</div>\n-</div>\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span>    <span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00048\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01297.html#a25a5b8f002589cba7fd380492019ece8\">   48</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01297.html\">MTLLegacyGregoryPatchTable</a>* <a class=\"code hl_function\" href=\"a01297.html#a25a5b8f002589cba7fd380492019ece8\">Create</a>(<a class=\"code hl_class\" href=\"a00993.html\">Far::PatchTable</a> <span class=\"keyword\">const</span>* farPatchTable, DEVICE_CONTEXT context) {</div>\n+<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span>        <span class=\"keywordflow\">return</span> Create(farPatchTable, context);</div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span>    }</div>\n </div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span> </div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01297.html#ac51e7db7abdd0eaaca33d4947bbe41b4\">   52</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01297.html\">MTLLegacyGregoryPatchTable</a>* <a class=\"code hl_function\" href=\"a01297.html#ac51e7db7abdd0eaaca33d4947bbe41b4\">Create</a>(<a class=\"code hl_class\" href=\"a00993.html\">Far::PatchTable</a> <span class=\"keyword\">const</span>* farPatchTable, <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context);</div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span> </div>\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01297.html#ad922644c53b64f5b60565065f09cbd17\">   54</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01297.html#ad922644c53b64f5b60565065f09cbd17\">UpdateVertexBuffer</a>(id&lt;MTLBuffer&gt; vbo, <span class=\"keywordtype\">int</span> numVertices, <span class=\"keywordtype\">int</span> numVertexElements, <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context);</div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00056\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01297.html#afffd8d6da44d9c7113d9dc190eefdb3d\">   56</a></span>    id&lt;MTLBuffer&gt; <a class=\"code hl_function\" href=\"a01297.html#afffd8d6da44d9c7113d9dc190eefdb3d\">GetVertexBuffer</a>()<span class=\"keyword\"> const</span></div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span><span class=\"keyword\">    </span>{</div>\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span>        <span class=\"keywordflow\">return</span> _vertexBuffer;</div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00061\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01297.html#a7e1414cf8ab619f18f532b58f614b123\">   61</a></span>    id&lt;MTLBuffer&gt; <a class=\"code hl_function\" href=\"a01297.html#a7e1414cf8ab619f18f532b58f614b123\">GetVertexValenceBuffer</a>()<span class=\"keyword\"> const</span></div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span><span class=\"keyword\">    </span>{</div>\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>        <span class=\"keywordflow\">return</span> _vertexValenceBuffer;</div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span>    }</div>\n </div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa00908_html_a200172f1c19545bc01f292afa2167e2f\"><div class=\"ttname\"><a href=\"a00908.html#a200172f1c19545bc01f292afa2167e2f\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LocalIndex</a></div><div class=\"ttdeci\">Vtr::LocalIndex LocalIndex</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01486_source.html#l00042\">types.h:42</a></div></div>\n-<div class=\"ttc\" id=\"aa00908_html_a25d51c3a61fb3dacded6e48d01fd2fdb\"><div class=\"ttname\"><a href=\"a00908.html#a25d51c3a61fb3dacded6e48d01fd2fdb\">OpenSubdiv::OPENSUBDIV_VERSION::Far::Error</a></div><div class=\"ttdeci\">void Error(ErrorType err, const char *format,...)</div><div class=\"ttdoc\">Sends an OSD error with a message (internal use only)</div></div>\n-<div class=\"ttc\" id=\"aa00908_html_a35788aa710e3f7e277e5f0b008d76d61\"><div class=\"ttname\"><a href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">OpenSubdiv::OPENSUBDIV_VERSION::Far::ConstIndexArray</a></div><div class=\"ttdeci\">Vtr::ConstIndexArray ConstIndexArray</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01486_source.html#l00047\">types.h:47</a></div></div>\n-<div class=\"ttc\" id=\"aa00908_html_a48f809d54fe9eb8cbd9d3f7521ba4fb1\"><div class=\"ttname\"><a href=\"a00908.html#a48f809d54fe9eb8cbd9d3f7521ba4fb1\">OpenSubdiv::OPENSUBDIV_VERSION::Far::ConstLocalIndexArray</a></div><div class=\"ttdeci\">Vtr::ConstLocalIndexArray ConstLocalIndexArray</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01486_source.html#l00048\">types.h:48</a></div></div>\n-<div class=\"ttc\" id=\"aa00908_html_ab0df38968e4f03a3f1f6d6df0f31f45aac565fa39d681e2766584dd87246c3bdd\"><div class=\"ttname\"><a href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45aac565fa39d681e2766584dd87246c3bdd\">OpenSubdiv::OPENSUBDIV_VERSION::Far::FAR_RUNTIME_ERROR</a></div><div class=\"ttdeci\">@ FAR_RUNTIME_ERROR</div><div class=\"ttdoc\">Issue a generic runtime error, but continue execution.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00749_source.html#l00041\">error.h:40</a></div></div>\n-<div class=\"ttc\" id=\"aa00908_html_ab34c85a48f33dfe7b8bf4d966fdebbf2\"><div class=\"ttname\"><a href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">OpenSubdiv::OPENSUBDIV_VERSION::Far::Index</a></div><div class=\"ttdeci\">Vtr::Index Index</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01486_source.html#l00041\">types.h:41</a></div></div>\n-<div class=\"ttc\" id=\"aa00909_html_a4a0e50e01fef3e431767a928c2631cab\"><div class=\"ttname\"><a href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::Index</a></div><div class=\"ttdeci\">int Index</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01495_source.html#l00054\">types.h:54</a></div></div>\n-<div class=\"ttc\" id=\"aa00909_html_a98af1cee938a3f984af1e7e9a205080c\"><div class=\"ttname\"><a href=\"a00909.html#a98af1cee938a3f984af1e7e9a205080c\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::IndexIsValid</a></div><div class=\"ttdeci\">bool IndexIsValid(Index index)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01495_source.html#l00058\">types.h:58</a></div></div>\n-<div class=\"ttc\" id=\"aa00913_html_aa3daa2f428c6be2b1cb394f3a525833da02558f420bac2d6bd3f8411d4b3957a0\"><div class=\"ttname\"><a href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833da02558f420bac2d6bd3f8411d4b3957a0\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::SCHEME_BILINEAR</a></div><div class=\"ttdeci\">@ SCHEME_BILINEAR</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01492_source.html#l00038\">types.h:38</a></div></div>\n-<div class=\"ttc\" id=\"aa00913_html_aa3daa2f428c6be2b1cb394f3a525833da29c9704ef8a61670dfc242b6e6b82a9f\"><div class=\"ttname\"><a href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833da29c9704ef8a61670dfc242b6e6b82a9f\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::SCHEME_CATMARK</a></div><div class=\"ttdeci\">@ SCHEME_CATMARK</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01492_source.html#l00039\">types.h:39</a></div></div>\n-<div class=\"ttc\" id=\"aa00913_html_aa3daa2f428c6be2b1cb394f3a525833da529a2651a5dcfac532e933ffefc36e99\"><div class=\"ttname\"><a href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833da529a2651a5dcfac532e933ffefc36e99\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::SCHEME_LOOP</a></div><div class=\"ttdeci\">@ SCHEME_LOOP</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01492_source.html#l00041\">types.h:40</a></div></div>\n-<div class=\"ttc\" id=\"aa01029_html\"><div class=\"ttname\"><a href=\"a01029.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PrimvarRefinerReal</a></div><div class=\"ttdoc\">Applies refinement operations to generic primvar data.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00746_source.html#l00056\">primvarRefiner.h:56</a></div></div>\n-<div class=\"ttc\" id=\"aa01029_html_a0357839a7fabaa02f1d6d6a3c75e1ec2\"><div class=\"ttname\"><a href=\"a01029.html#a0357839a7fabaa02f1d6d6a3c75e1ec2\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PrimvarRefinerReal::Limit</a></div><div class=\"ttdeci\">void Limit(T const &amp;src, U &amp;dstPos) const</div><div class=\"ttdoc\">Apply limit weights to a primvar buffer.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00746_source.html#l00319\">primvarRefiner.h:319</a></div></div>\n-<div class=\"ttc\" id=\"aa01029_html_a1fe1fbda93c01c326f13929d1c3c6247\"><div class=\"ttname\"><a href=\"a01029.html#a1fe1fbda93c01c326f13929d1c3c6247\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PrimvarRefinerReal::PrimvarRefinerReal</a></div><div class=\"ttdeci\">PrimvarRefinerReal(TopologyRefiner const &amp;refiner)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00746_source.html#l00059\">primvarRefiner.h:59</a></div></div>\n-<div class=\"ttc\" id=\"aa01029_html_a2cf4c50a1117c44ba4d11db92b067401\"><div class=\"ttname\"><a href=\"a01029.html#a2cf4c50a1117c44ba4d11db92b067401\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PrimvarRefinerReal::Limit</a></div><div class=\"ttdeci\">void Limit(T const &amp;src, U &amp;dstPos, U1 &amp;dstTan1, U2 &amp;dstTan2) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00746_source.html#l00344\">primvarRefiner.h:344</a></div></div>\n-<div class=\"ttc\" id=\"aa01029_html_a3f8bd2ef902e11aad1debbdda26bb596\"><div class=\"ttname\"><a href=\"a01029.html#a3f8bd2ef902e11aad1debbdda26bb596\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PrimvarRefinerReal::InterpolateFaceUniform</a></div><div class=\"ttdeci\">void InterpolateFaceUniform(int level, T const &amp;src, U &amp;dst) const</div><div class=\"ttdoc\">Refine uniform (per-face) primvar data between levels.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00746_source.html#l00394\">primvarRefiner.h:394</a></div></div>\n-<div class=\"ttc\" id=\"aa01029_html_a6f7fc8b9ce66fa57ac58ed977cc9c6f0\"><div class=\"ttname\"><a href=\"a01029.html#a6f7fc8b9ce66fa57ac58ed977cc9c6f0\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PrimvarRefinerReal::GetTopologyRefiner</a></div><div class=\"ttdeci\">TopologyRefiner const &amp; GetTopologyRefiner() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00746_source.html#l00062\">primvarRefiner.h:62</a></div></div>\n-<div class=\"ttc\" id=\"aa01029_html_aa2fd72e336a12bf454dd79ba6ce8ee56\"><div class=\"ttname\"><a href=\"a01029.html#aa2fd72e336a12bf454dd79ba6ce8ee56\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PrimvarRefinerReal::InterpolateVarying</a></div><div class=\"ttdeci\">void InterpolateVarying(int level, T const &amp;src, U &amp;dst) const</div><div class=\"ttdoc\">Apply only varying interpolation weights to a primvar buffer for a single level of refinement.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00746_source.html#l00412\">primvarRefiner.h:412</a></div></div>\n-<div class=\"ttc\" id=\"aa01029_html_ab97b75b7c0fffa06a5948bd6ba7b420d\"><div class=\"ttname\"><a href=\"a01029.html#ab97b75b7c0fffa06a5948bd6ba7b420d\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PrimvarRefinerReal::Interpolate</a></div><div class=\"ttdeci\">void Interpolate(int level, T const &amp;src, U &amp;dst) const</div><div class=\"ttdoc\">Apply vertex interpolation weights to a primvar buffer for a single level of refinement.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00746_source.html#l00267\">primvarRefiner.h:267</a></div></div>\n-<div class=\"ttc\" id=\"aa01029_html_ad8f74e1887299ed02e0094100f18c998\"><div class=\"ttname\"><a href=\"a01029.html#ad8f74e1887299ed02e0094100f18c998\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PrimvarRefinerReal::InterpolateFaceVarying</a></div><div class=\"ttdeci\">void InterpolateFaceVarying(int level, T const &amp;src, U &amp;dst, int channel=0) const</div><div class=\"ttdoc\">Apply face-varying interpolation weights to a primvar buffer associated with a particular face-varyin...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00746_source.html#l00293\">primvarRefiner.h:293</a></div></div>\n-<div class=\"ttc\" id=\"aa01029_html_ade7a1750cdc922e27c561520815d8b27\"><div class=\"ttname\"><a href=\"a01029.html#ade7a1750cdc922e27c561520815d8b27\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PrimvarRefinerReal::~PrimvarRefinerReal</a></div><div class=\"ttdeci\">~PrimvarRefinerReal()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00746_source.html#l00060\">primvarRefiner.h:60</a></div></div>\n-<div class=\"ttc\" id=\"aa01029_html_afdee0e9e9c6edd34c96892efff808a87\"><div class=\"ttname\"><a href=\"a01029.html#afdee0e9e9c6edd34c96892efff808a87\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PrimvarRefinerReal::LimitFaceVarying</a></div><div class=\"ttdeci\">void LimitFaceVarying(T const &amp;src, U &amp;dst, int channel=0) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00746_source.html#l00369\">primvarRefiner.h:369</a></div></div>\n-<div class=\"ttc\" id=\"aa01037_html\"><div class=\"ttname\"><a href=\"a01037.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PrimvarRefiner</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00746_source.html#l01265\">primvarRefiner.h:1265</a></div></div>\n-<div class=\"ttc\" id=\"aa01037_html_a643d81a2ae20ba1897433f5af5a3697a\"><div class=\"ttname\"><a href=\"a01037.html#a643d81a2ae20ba1897433f5af5a3697a\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PrimvarRefiner::PrimvarRefiner</a></div><div class=\"ttdeci\">PrimvarRefiner(TopologyRefiner const &amp;refiner)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00746_source.html#l01267\">primvarRefiner.h:1267</a></div></div>\n-<div class=\"ttc\" id=\"aa01121_html\"><div class=\"ttname\"><a href=\"a01121.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner</a></div><div class=\"ttdoc\">Stores topology data for a specified set of refinement options.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00051\">topologyRefiner.h:51</a></div></div>\n-<div class=\"ttc\" id=\"aa01333_html_a11fcd51ef86118f65e603c1474377a78\"><div class=\"ttname\"><a href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::Rule</a></div><div class=\"ttdeci\">Rule</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00731_source.html#l00082\">crease.h:82</a></div></div>\n-<div class=\"ttc\" id=\"aa01333_html_a11fcd51ef86118f65e603c1474377a78a966fa1ae8aeb8587c498cf6a92cc3335\"><div class=\"ttname\"><a href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78a966fa1ae8aeb8587c498cf6a92cc3335\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::RULE_CREASE</a></div><div class=\"ttdeci\">@ RULE_CREASE</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00731_source.html#l00086\">crease.h:86</a></div></div>\n-<div class=\"ttc\" id=\"aa01341_html\"><div class=\"ttname\"><a href=\"a01341.html\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme</a></div><div class=\"ttdoc\">Scheme is a class template which provides all implementation for the subdivision schemes supported by...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00743_source.html#l00066\">scheme.h:66</a></div></div>\n-<div class=\"ttc\" id=\"aa01353_html\"><div class=\"ttname\"><a href=\"a01353.html\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00683_source.html#l00053\">array.h:53</a></div></div>\n-<div class=\"ttc\" id=\"aa01353_html_a60304b65bf89363bcc3165d3cde67f86\"><div class=\"ttname\"><a href=\"a01353.html#a60304b65bf89363bcc3165d3cde67f86\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray::size</a></div><div class=\"ttdeci\">size_type size() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00683_source.html#l00072\">array.h:72</a></div></div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00066\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01297.html#a846f5698d4874b41374c2ac6c52c3ea2\">   66</a></span>    id&lt;MTLBuffer&gt; <a class=\"code hl_function\" href=\"a01297.html#a846f5698d4874b41374c2ac6c52c3ea2\">GetQuadOffsetsBuffer</a>()<span class=\"keyword\"> const</span></div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span><span class=\"keyword\">    </span>{</div>\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span>        <span class=\"keywordflow\">return</span> _quadOffsetsBuffer;</div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00071\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01297.html#a176fb87b7ba47d5c2c2a6d332e2687ce\">   71</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01297.html#a176fb87b7ba47d5c2c2a6d332e2687ce\">GetQuadOffsetsBase</a>(<a class=\"code hl_enumeration\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">Far::PatchDescriptor::Type</a> type)</div>\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>    {</div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span>        <span class=\"keywordflow\">if</span>(type == <a class=\"code hl_enumvalue\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7ac4ae10df9c13e44880ca7be341e44f2a\">Far::PatchDescriptor::GREGORY_BOUNDARY</a>)</div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span>            <span class=\"keywordflow\">return</span> _quadOffsetsBase[1];</div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span>        <span class=\"keywordflow\">return</span> _quadOffsetsBase[0];</div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span> </div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>    id&lt;MTLBuffer&gt; _vertexBuffer;</div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span>    id&lt;MTLBuffer&gt; _vertexValenceBuffer;</div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>    id&lt;MTLBuffer&gt; _quadOffsetsBuffer;</div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>    <span class=\"keywordtype\">int</span> _quadOffsetsBase[2];</div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span> </div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>} <span class=\"comment\">//end namespace Osd</span></div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span> </div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>} <span class=\"comment\">//end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span> </div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>} <span class=\"comment\">//end namespace OpenSuddiv</span></div>\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span> </div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// OPENSUBDIV3_OSD_MTL_LEGACY_GREGORY_PATCH_TABLE_H</span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa00973_html_a1d1cfd8ffb84e947f82999c682b666a7\"><div class=\"ttname\"><a href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::Type</a></div><div class=\"ttdeci\">Type</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00857_source.html#l00048\">patchDescriptor.h:48</a></div></div>\n+<div class=\"ttc\" id=\"aa00973_html_a1d1cfd8ffb84e947f82999c682b666a7ac4ae10df9c13e44880ca7be341e44f2a\"><div class=\"ttname\"><a href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7ac4ae10df9c13e44880ca7be341e44f2a\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::GREGORY_BOUNDARY</a></div><div class=\"ttdeci\">@ GREGORY_BOUNDARY</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00857_source.html#l00061\">patchDescriptor.h:61</a></div></div>\n+<div class=\"ttc\" id=\"aa00993_html\"><div class=\"ttname\"><a href=\"a00993.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable</a></div><div class=\"ttdoc\">Container for arrays of parametric patches.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00842_source.html#l00055\">patchTable.h:55</a></div></div>\n+<div class=\"ttc\" id=\"aa01285_html\"><div class=\"ttname\"><a href=\"a01285.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLContext</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00698_source.html#l00040\">mtlCommon.h:40</a></div></div>\n+<div class=\"ttc\" id=\"aa01297_html\"><div class=\"ttname\"><a href=\"a01297.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLLegacyGregoryPatchTable</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00746_source.html#l00041\">mtlLegacyGregoryPatchTable.h:43</a></div></div>\n+<div class=\"ttc\" id=\"aa01297_html_a176fb87b7ba47d5c2c2a6d332e2687ce\"><div class=\"ttname\"><a href=\"a01297.html#a176fb87b7ba47d5c2c2a6d332e2687ce\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLLegacyGregoryPatchTable::GetQuadOffsetsBase</a></div><div class=\"ttdeci\">int GetQuadOffsetsBase(Far::PatchDescriptor::Type type)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00746_source.html#l00071\">mtlLegacyGregoryPatchTable.h:71</a></div></div>\n+<div class=\"ttc\" id=\"aa01297_html_a25a5b8f002589cba7fd380492019ece8\"><div class=\"ttname\"><a href=\"a01297.html#a25a5b8f002589cba7fd380492019ece8\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLLegacyGregoryPatchTable::Create</a></div><div class=\"ttdeci\">static MTLLegacyGregoryPatchTable * Create(Far::PatchTable const *farPatchTable, DEVICE_CONTEXT context)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00746_source.html#l00048\">mtlLegacyGregoryPatchTable.h:48</a></div></div>\n+<div class=\"ttc\" id=\"aa01297_html_a7e1414cf8ab619f18f532b58f614b123\"><div class=\"ttname\"><a href=\"a01297.html#a7e1414cf8ab619f18f532b58f614b123\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLLegacyGregoryPatchTable::GetVertexValenceBuffer</a></div><div class=\"ttdeci\">id&lt; MTLBuffer &gt; GetVertexValenceBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00746_source.html#l00061\">mtlLegacyGregoryPatchTable.h:61</a></div></div>\n+<div class=\"ttc\" id=\"aa01297_html_a846f5698d4874b41374c2ac6c52c3ea2\"><div class=\"ttname\"><a href=\"a01297.html#a846f5698d4874b41374c2ac6c52c3ea2\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLLegacyGregoryPatchTable::GetQuadOffsetsBuffer</a></div><div class=\"ttdeci\">id&lt; MTLBuffer &gt; GetQuadOffsetsBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00746_source.html#l00066\">mtlLegacyGregoryPatchTable.h:66</a></div></div>\n+<div class=\"ttc\" id=\"aa01297_html_ac51e7db7abdd0eaaca33d4947bbe41b4\"><div class=\"ttname\"><a href=\"a01297.html#ac51e7db7abdd0eaaca33d4947bbe41b4\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLLegacyGregoryPatchTable::Create</a></div><div class=\"ttdeci\">static MTLLegacyGregoryPatchTable * Create(Far::PatchTable const *farPatchTable, MTLContext *context)</div></div>\n+<div class=\"ttc\" id=\"aa01297_html_ad922644c53b64f5b60565065f09cbd17\"><div class=\"ttname\"><a href=\"a01297.html#ad922644c53b64f5b60565065f09cbd17\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLLegacyGregoryPatchTable::UpdateVertexBuffer</a></div><div class=\"ttdeci\">void UpdateVertexBuffer(id&lt; MTLBuffer &gt; vbo, int numVertices, int numVertexElements, MTLContext *context)</div></div>\n+<div class=\"ttc\" id=\"aa01297_html_aed8ca15f9dfcacfcfc31ab1227b61dcc\"><div class=\"ttname\"><a href=\"a01297.html#aed8ca15f9dfcacfcfc31ab1227b61dcc\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLLegacyGregoryPatchTable::~MTLLegacyGregoryPatchTable</a></div><div class=\"ttdeci\">~MTLLegacyGregoryPatchTable()</div></div>\n+<div class=\"ttc\" id=\"aa01297_html_afffd8d6da44d9c7113d9dc190eefdb3d\"><div class=\"ttname\"><a href=\"a01297.html#afffd8d6da44d9c7113d9dc190eefdb3d\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLLegacyGregoryPatchTable::GetVertexBuffer</a></div><div class=\"ttdeci\">id&lt; MTLBuffer &gt; GetVertexBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00746_source.html#l00056\">mtlLegacyGregoryPatchTable.h:56</a></div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7f420b72a822828cfa8b0561c695a5cc.html\">far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00746.html\">primvarRefiner.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00746.html\">mtlLegacyGregoryPatchTable.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-primvarRefiner.h\n+mtlLegacyGregoryPatchTable.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2015 DreamWorks Animation LLC.\n+2// Copyright 2013 Pixar\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -23,1388 +23,128 @@\n 17//\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n-24#ifndef OPENSUBDIV3_FAR_PRIMVAR_REFINER_H\n-25#define OPENSUBDIV3_FAR_PRIMVAR_REFINER_H\n-26\n-27#include \"../version.h\"\n-28\n-29#include \"../sdc/types.h\"\n-30#include \"../sdc/options.h\"\n-31#include \"../sdc/bilinearScheme.h\"\n-32#include \"../sdc/catmarkScheme.h\"\n-33#include \"../sdc/loopScheme.h\"\n-34#include \"../vtr/level.h\"\n-35#include \"../vtr/fvarLevel.h\"\n-36#include \"../vtr/refinement.h\"\n-37#include \"../vtr/fvarRefinement.h\"\n-38#include \"../vtr/stackBuffer.h\"\n-39#include \"../vtr/componentInterfaces.h\"\n-40#include \"../far/types.h\"\n-41#include \"../far/error.h\"\n-42#include \"../far/topologyLevel.h\"\n-43#include \"../far/topologyRefiner.h\"\n-44\n-45#include <cassert>\n+24\n+25#ifndef OPENSUBDIV3_OSD_MTL_LEGACY_GREGORY_PATCH_TABLE_H\n+26#define OPENSUBDIV3_OSD_MTL_LEGACY_GREGORY_PATCH_TABLE_H\n+27\n+28#include \"../version.h\"\n+29#include \"../far/patchTable.h\"\n+30#include \"../osd/nonCopyable.h\"\n+31#include \"../osd/mtlCommon.h\"\n+32\n+33@protocol MTLDevice;\n+34@protocol MTLBuffer;\n+35\n+36namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+37namespace OPENSUBDIV_VERSION {\n+38\n+39namespace Osd {\n+40\n+_\b4_\b1class _\bM_\bT_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+42: private NonCopyable<MTLLegacyGregoryPatchTable>\n+43{\n+44public:\n+_\b4_\b5 _\b~_\bM_\bT_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be();\n 46\n-47namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-48namespace OPENSUBDIV_VERSION {\n-49\n-50namespace Far {\n+47 template<typename DEVICE_CONTEXT>\n+_\b4_\b8 static _\bM_\bT_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be* _\bC_\br_\be_\ba_\bt_\be(_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be const*\n+farPatchTable, DEVICE_CONTEXT context) {\n+49 return Create(farPatchTable, context);\n+50 }\n 51\n-55template <typename REAL>\n-_\b5_\b6class _\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl {\n-57\n-58public:\n-_\b5_\b9 _\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const & refiner) : _refiner(refiner) { }\n-_\b6_\b0 _\b~_\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl() { }\n-61\n-_\b6_\b2 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const & _\bG_\be_\bt_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br() const { return _refiner; }\n-63\n+_\b5_\b2 static _\bM_\bT_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be* _\bC_\br_\be_\ba_\bt_\be(_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be const*\n+farPatchTable, _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context);\n+53\n+_\b5_\b4 void _\bU_\bp_\bd_\ba_\bt_\be_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br(id<MTLBuffer> vbo, int numVertices, int\n+numVertexElements, _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context);\n+55\n+_\b5_\b6 id<MTLBuffer> _\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br() const\n+57 {\n+58 return _vertexBuffer;\n+59 }\n+60\n+_\b6_\b1 id<MTLBuffer> _\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be_\bB_\bu_\bf_\bf_\be_\br() const\n+62 {\n+63 return _vertexValenceBuffer;\n+64 }\n 65\n-100\n-_\b1_\b1_\b3 template <class T, class U> void _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be(int level, T const & src, U &\n-dst) const;\n-114\n-_\b1_\b3_\b0 template <class T, class U> void _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(int level, T const &\n-src, U & dst) const;\n-131\n-_\b1_\b4_\b8 template <class T, class U> void _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be_\bF_\ba_\bc_\be_\bU_\bn_\bi_\bf_\bo_\br_\bm(int level, T const\n-& src, U & dst) const;\n-149\n-_\b1_\b6_\b1 template <class T, class U> void _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(int level, T const\n-& src, U & dst, int channel = 0) const;\n-162\n-163\n-_\b1_\b7_\b5 template <class T, class U> void _\bL_\bi_\bm_\bi_\bt(T const & src, U & dstPos) const;\n-176\n-177 template <class T, class U, class U1, class U2>\n-_\b1_\b7_\b8 void _\bL_\bi_\bm_\bi_\bt(T const & src, U & dstPos, U1 & dstTan1, U2 & dstTan2) const;\n-179\n-_\b1_\b8_\b0 template <class T, class U> void _\bL_\bi_\bm_\bi_\bt_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(T const & src, U & dst,\n-int channel = 0) const;\n-181\n-183\n-184private:\n-185 typedef REAL Weight;\n-186\n-187 // Non-copyable:\n-188 _\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl(_\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl const & src) : _refiner(src._refiner)\n-{ }\n-189 _\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl & operator=(_\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl const &) { return *this;\n-}\n-190\n-191 template <Sdc::SchemeType SCHEME, class T, class U> void interpFromFaces\n-(int, T const &, U &) const;\n-192 template <Sdc::SchemeType SCHEME, class T, class U> void interpFromEdges\n-(int, T const &, U &) const;\n-193 template <Sdc::SchemeType SCHEME, class T, class U> void interpFromVerts\n-(int, T const &, U &) const;\n-194\n-195 template <Sdc::SchemeType SCHEME, class T, class U> void\n-interpFVarFromFaces(int, T const &, U &, int) const;\n-196 template <Sdc::SchemeType SCHEME, class T, class U> void\n-interpFVarFromEdges(int, T const &, U &, int) const;\n-197 template <Sdc::SchemeType SCHEME, class T, class U> void\n-interpFVarFromVerts(int, T const &, U &, int) const;\n-198\n-199 template <Sdc::SchemeType SCHEME, class T, class U, class U1, class U2>\n-200 void limit(T const & src, U & pos, U1 * tan1, U2 * tan2) const;\n-201\n-202 template <Sdc::SchemeType SCHEME, class T, class U>\n-203 void limitFVar(T const & src, U & dst, int channel) const;\n-204\n-205private:\n-206 TopologyRefiner const & _refiner;\n-207\n-208private:\n-209 //\n-210 // Local class to fulfill interface for <typename MASK> in the Scheme mask\n-queries:\n-211 //\n-212 class Mask {\n-213 public:\n-214 typedef REAL Weight; // Also part of the expected interface\n-215\n-216 public:\n-217 Mask(Weight* v, Weight* e, Weight* f) :\n-218 _vertWeights(v), _edgeWeights(e), _faceWeights(f),\n-219 _vertCount(0), _edgeCount(0), _faceCount(0),\n-220 _faceWeightsForFaceCenters(false)\n-221 { }\n-222\n-223 ~Mask() { }\n-224\n-225 public: // Generic interface expected of <typename MASK>:\n-226 int GetNumVertexWeights() const { return _vertCount; }\n-227 int GetNumEdgeWeights() const { return _edgeCount; }\n-228 int GetNumFaceWeights() const { return _faceCount; }\n-229\n-230 void SetNumVertexWeights(int count) { _vertCount = count; }\n-231 void SetNumEdgeWeights( int count) { _edgeCount = count; }\n-232 void SetNumFaceWeights( int count) { _faceCount = count; }\n-233\n-234 Weight const& VertexWeight(int index) const { return _vertWeights[index]; }\n-235 Weight const& EdgeWeight( int index) const { return _edgeWeights[index]; }\n-236 Weight const& FaceWeight( int index) const { return _faceWeights[index]; }\n-237\n-238 Weight& VertexWeight(int index) { return _vertWeights[index]; }\n-239 Weight& EdgeWeight( int index) { return _edgeWeights[index]; }\n-240 Weight& FaceWeight( int index) { return _faceWeights[index]; }\n-241\n-242 bool AreFaceWeightsForFaceCenters() const { return\n-_faceWeightsForFaceCenters; }\n-243 void SetFaceWeightsForFaceCenters(bool on) { _faceWeightsForFaceCenters =\n-on; }\n-244\n-245 private:\n-246 Weight* _vertWeights;\n-247 Weight* _edgeWeights;\n-248 Weight* _faceWeights;\n-249\n-250 int _vertCount;\n-251 int _edgeCount;\n-252 int _faceCount;\n-253\n-254 bool _faceWeightsForFaceCenters;\n-255 };\n-256};\n-257\n-258\n-259//\n-260// Public entry points to the methods. Queries of the scheme type and its\n-261// use as a template parameter in subsequent implementation will be factored\n-262// out of a later release:\n-263//\n-264template <typename REAL>\n-265template <class T, class U>\n-266inline void\n-_\b2_\b6_\b7_\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be(int level, T const & src, U & dst)\n-const {\n-268\n-269 assert(level>0 && level<=(int)_refiner._refinements.size());\n-270\n-271 switch (_refiner._subdivType) {\n-272 case _\bS_\bd_\bc_\b:_\b:_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bC_\bA_\bT_\bM_\bA_\bR_\bK:\n-273 interpFromFaces<Sdc::SCHEME_CATMARK>(level, src, dst);\n-274 interpFromEdges<Sdc::SCHEME_CATMARK>(level, src, dst);\n-275 interpFromVerts<Sdc::SCHEME_CATMARK>(level, src, dst);\n-276 break;\n-277 case _\bS_\bd_\bc_\b:_\b:_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bL_\bO_\bO_\bP:\n-278 interpFromFaces<Sdc::SCHEME_LOOP>(level, src, dst);\n-279 interpFromEdges<Sdc::SCHEME_LOOP>(level, src, dst);\n-280 interpFromVerts<Sdc::SCHEME_LOOP>(level, src, dst);\n-281 break;\n-282 case _\bS_\bd_\bc_\b:_\b:_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bB_\bI_\bL_\bI_\bN_\bE_\bA_\bR:\n-283 interpFromFaces<Sdc::SCHEME_BILINEAR>(level, src, dst);\n-284 interpFromEdges<Sdc::SCHEME_BILINEAR>(level, src, dst);\n-285 interpFromVerts<Sdc::SCHEME_BILINEAR>(level, src, dst);\n-286 break;\n-287 }\n-288}\n-289\n-290template <typename REAL>\n-291template <class T, class U>\n-292inline void\n-_\b2_\b9_\b3_\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(int level, T const & src, U\n-& dst, int channel) const {\n-294\n-295 assert(level>0 && level<=(int)_refiner._refinements.size());\n-296\n-297 switch (_refiner._subdivType) {\n-298 case _\bS_\bd_\bc_\b:_\b:_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bC_\bA_\bT_\bM_\bA_\bR_\bK:\n-299 interpFVarFromFaces<Sdc::SCHEME_CATMARK>(level, src, dst, channel);\n-300 interpFVarFromEdges<Sdc::SCHEME_CATMARK>(level, src, dst, channel);\n-301 interpFVarFromVerts<Sdc::SCHEME_CATMARK>(level, src, dst, channel);\n-302 break;\n-303 case _\bS_\bd_\bc_\b:_\b:_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bL_\bO_\bO_\bP:\n-304 interpFVarFromFaces<Sdc::SCHEME_LOOP>(level, src, dst, channel);\n-305 interpFVarFromEdges<Sdc::SCHEME_LOOP>(level, src, dst, channel);\n-306 interpFVarFromVerts<Sdc::SCHEME_LOOP>(level, src, dst, channel);\n-307 break;\n-308 case _\bS_\bd_\bc_\b:_\b:_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bB_\bI_\bL_\bI_\bN_\bE_\bA_\bR:\n-309 interpFVarFromFaces<Sdc::SCHEME_BILINEAR>(level, src, dst, channel);\n-310 interpFVarFromEdges<Sdc::SCHEME_BILINEAR>(level, src, dst, channel);\n-311 interpFVarFromVerts<Sdc::SCHEME_BILINEAR>(level, src, dst, channel);\n-312 break;\n-313 }\n-314}\n-315\n-316template <typename REAL>\n-317template <class T, class U>\n-318inline void\n-_\b3_\b1_\b9_\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\bL_\bi_\bm_\bi_\bt(T const & src, U & dst) const {\n-320\n-321 if (_refiner.getLevel(_refiner.GetMaxLevel()).getNumVertexEdgesTotal() ==\n-0) {\n-322 _\bE_\br_\br_\bo_\br(_\bF_\bA_\bR_\b__\bR_\bU_\bN_\bT_\bI_\bM_\bE_\b__\bE_\bR_\bR_\bO_\bR,\n-323 \"Failure in PrimvarRefiner::Limit() -- \"\n-324 \"last level of refinement does not include full topology.\");\n-325 return;\n-326 }\n-327\n-328 switch (_refiner._subdivType) {\n-329 case _\bS_\bd_\bc_\b:_\b:_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bC_\bA_\bT_\bM_\bA_\bR_\bK:\n-330 limit<Sdc::SCHEME_CATMARK>(src, dst, (U*)0, (U*)0);\n-331 break;\n-332 case _\bS_\bd_\bc_\b:_\b:_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bL_\bO_\bO_\bP:\n-333 limit<Sdc::SCHEME_LOOP>(src, dst, (U*)0, (U*)0);\n-334 break;\n-335 case _\bS_\bd_\bc_\b:_\b:_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bB_\bI_\bL_\bI_\bN_\bE_\bA_\bR:\n-336 limit<Sdc::SCHEME_BILINEAR>(src, dst, (U*)0, (U*)0);\n-337 break;\n-338 }\n-339}\n-340\n-341template <typename REAL>\n-342template <class T, class U, class U1, class U2>\n-343inline void\n-_\b3_\b4_\b4_\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\bL_\bi_\bm_\bi_\bt(T const & src, U & dstPos, U1 & dstTan1, U2\n-& dstTan2) const {\n-345\n-346 if (_refiner.getLevel(_refiner.GetMaxLevel()).getNumVertexEdgesTotal() ==\n-0) {\n-347 _\bE_\br_\br_\bo_\br(_\bF_\bA_\bR_\b__\bR_\bU_\bN_\bT_\bI_\bM_\bE_\b__\bE_\bR_\bR_\bO_\bR,\n-348 \"Failure in PrimvarRefiner::Limit() -- \"\n-349 \"last level of refinement does not include full topology.\");\n-350 return;\n-351 }\n-352\n-353 switch (_refiner._subdivType) {\n-354 case _\bS_\bd_\bc_\b:_\b:_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bC_\bA_\bT_\bM_\bA_\bR_\bK:\n-355 limit<Sdc::SCHEME_CATMARK>(src, dstPos, &dstTan1, &dstTan2);\n-356 break;\n-357 case _\bS_\bd_\bc_\b:_\b:_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bL_\bO_\bO_\bP:\n-358 limit<Sdc::SCHEME_LOOP>(src, dstPos, &dstTan1, &dstTan2);\n-359 break;\n-360 case _\bS_\bd_\bc_\b:_\b:_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bB_\bI_\bL_\bI_\bN_\bE_\bA_\bR:\n-361 limit<Sdc::SCHEME_BILINEAR>(src, dstPos, &dstTan1, &dstTan2);\n-362 break;\n-363 }\n-364}\n-365\n-366template <typename REAL>\n-367template <class T, class U>\n-368inline void\n-_\b3_\b6_\b9_\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(T const & src, U & dst, int\n-channel) const {\n-370\n-371 if (_refiner.getLevel(_refiner.GetMaxLevel()).getNumVertexEdgesTotal() ==\n-0) {\n-372 _\bE_\br_\br_\bo_\br(_\bF_\bA_\bR_\b__\bR_\bU_\bN_\bT_\bI_\bM_\bE_\b__\bE_\bR_\bR_\bO_\bR,\n-373 \"Failure in PrimvarRefiner::LimitFaceVarying() -- \"\n-374 \"last level of refinement does not include full topology.\");\n-375 return;\n-376 }\n-377\n-378 switch (_refiner._subdivType) {\n-379 case _\bS_\bd_\bc_\b:_\b:_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bC_\bA_\bT_\bM_\bA_\bR_\bK:\n-380 limitFVar<Sdc::SCHEME_CATMARK>(src, dst, channel);\n-381 break;\n-382 case _\bS_\bd_\bc_\b:_\b:_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bL_\bO_\bO_\bP:\n-383 limitFVar<Sdc::SCHEME_LOOP>(src, dst, channel);\n-384 break;\n-385 case _\bS_\bd_\bc_\b:_\b:_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bB_\bI_\bL_\bI_\bN_\bE_\bA_\bR:\n-386 limitFVar<Sdc::SCHEME_BILINEAR>(src, dst, channel);\n-387 break;\n-388 }\n-389}\n-390\n-391template <typename REAL>\n-392template <class T, class U>\n-393inline void\n-_\b3_\b9_\b4_\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be_\bF_\ba_\bc_\be_\bU_\bn_\bi_\bf_\bo_\br_\bm(int level, T const & src, U\n-& dst) const {\n-395\n-396 assert(level>0 && level<=(int)_refiner._refinements.size());\n-397\n-398 Vtr::internal::Refinement const & refinement = _refiner.getRefinement\n-(level-1);\n-399 Vtr::internal::Level const & child = refinement.child();\n-400\n-401 for (int cFace = 0; cFace < child.getNumFaces(); ++cFace) {\n-402\n-403 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx pFace = refinement.getChildFaceParentFace(cFace);\n-404\n-405 dst[cFace] = src[pFace];\n-406 }\n-407}\n-408\n-409template <typename REAL>\n-410template <class T, class U>\n-411inline void\n-_\b4_\b1_\b2_\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(int level, T const & src, U &\n-dst) const {\n-413\n-414 assert(level>0 && level<=(int)_refiner._refinements.size());\n-415\n-416 Vtr::internal::Refinement const & refinement = _refiner.getRefinement\n-(level-1);\n-417 Vtr::internal::Level const & parent = refinement.parent();\n-418\n-419 //\n-420 // Group values to interpolate based on origin -- note that there may\n-421 // be none originating from faces:\n-422 //\n-423 if (refinement.getNumChildVerticesFromFaces() > 0) {\n-424\n-425 for (int face = 0; face < parent.getNumFaces(); ++face) {\n-426\n-427 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx cVert = refinement.getFaceChildVertex(face);\n-428 if (_\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bI_\bs_\bV_\ba_\bl_\bi_\bd(cVert)) {\n-429\n-430 // Apply the weights to the parent face's vertices:\n-431 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by fVerts = parent.getFaceVertices(face);\n-432\n-433 Weight fVaryingWeight = 1.0f / (Weight) fVerts._\bs_\bi_\bz_\be();\n-434\n-435 dst[cVert].Clear();\n-436 for (int i = 0; i < fVerts._\bs_\bi_\bz_\be(); ++i) {\n-437 dst[cVert].AddWithWeight(src[fVerts[i]], fVaryingWeight);\n-438 }\n-439 }\n-440 }\n-441 }\n-442 for (int edge = 0; edge < parent.getNumEdges(); ++edge) {\n-443\n-444 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx cVert = refinement.getEdgeChildVertex(edge);\n-445 if (_\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bI_\bs_\bV_\ba_\bl_\bi_\bd(cVert)) {\n-446\n-447 // Apply the weights to the parent edges's vertices\n-448 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by eVerts = parent.getEdgeVertices(edge);\n-449\n-450 dst[cVert].Clear();\n-451 dst[cVert].AddWithWeight(src[eVerts[0]], 0.5f);\n-452 dst[cVert].AddWithWeight(src[eVerts[1]], 0.5f);\n-453 }\n-454 }\n-455 for (int vert = 0; vert < parent.getNumVertices(); ++vert) {\n-456\n-457 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx cVert = refinement.getVertexChildVertex(vert);\n-458 if (_\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bI_\bs_\bV_\ba_\bl_\bi_\bd(cVert)) {\n-459\n-460 // Essentially copy the parent vertex:\n-461 dst[cVert].Clear();\n-462 dst[cVert].AddWithWeight(src[vert], 1.0f);\n-463 }\n-464 }\n-465}\n-466\n-467\n-468//\n-469// Internal implementation methods -- grouping vertices to be interpolated\n-470// based on the type of parent component from which they originated:\n-471//\n-472template <typename REAL>\n-473template <Sdc::SchemeType SCHEME, class T, class U>\n-474inline void\n-475_\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bF_\br_\bo_\bm_\bF_\ba_\bc_\be_\bs(int level, T const & src, U & dst)\n-const {\n-476\n-477 Vtr::internal::Refinement const & refinement = _refiner.getRefinement\n-(level-1);\n-478 Vtr::internal::Level const & parent = refinement.parent();\n-479\n-480 if (refinement.getNumChildVerticesFromFaces() == 0) return;\n-481\n-482 _\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b> scheme(_refiner._subdivOptions);\n-483\n-484 Vtr::internal::StackBuffer<Weight,16> fVertWeights(parent.getMaxValence());\n-485\n-486 for (int face = 0; face < parent.getNumFaces(); ++face) {\n-487\n-488 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx cVert = refinement.getFaceChildVertex(face);\n-489 if (!_\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bI_\bs_\bV_\ba_\bl_\bi_\bd(cVert))\n-490 continue;\n-491\n-492 // Declare and compute mask weights for this vertex relative to its parent\n-face:\n-493 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by fVerts = parent.getFaceVertices(face);\n-494\n-495 Mask fMask(fVertWeights, 0, 0);\n-496 Vtr::internal::FaceInterface fHood(fVerts._\bs_\bi_\bz_\be());\n-497\n-498 scheme.ComputeFaceVertexMask(fHood, fMask);\n-499\n-500 // Apply the weights to the parent face's vertices:\n-501 dst[cVert].Clear();\n-502\n-503 for (int i = 0; i < fVerts._\bs_\bi_\bz_\be(); ++i) {\n-504\n-505 dst[cVert].AddWithWeight(src[fVerts[i]], fVertWeights[i]);\n-506 }\n-507 }\n-508}\n-509\n-510template <typename REAL>\n-511template <Sdc::SchemeType SCHEME, class T, class U>\n-512inline void\n-513PrimvarRefinerReal<REAL>::interpFromEdges(int level, T const & src, U & dst)\n-const {\n-514\n-515 Vtr::internal::Refinement const & refinement = _refiner.getRefinement\n-(level-1);\n-516 Vtr::internal::Level const & parent = refinement.parent();\n-517 Vtr::internal::Level const & child = refinement.child();\n-518\n-519 Sdc::Scheme<SCHEME> scheme(_refiner._subdivOptions);\n-520\n-521 Vtr::internal::EdgeInterface eHood(parent);\n-522\n-523 Weight eVertWeights[2];\n-524 Vtr::internal::StackBuffer<Weight,8> eFaceWeights(parent.getMaxEdgeFaces\n-());\n-525\n-526 for (int edge = 0; edge < parent.getNumEdges(); ++edge) {\n-527\n-528 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx cVert = refinement.getEdgeChildVertex(edge);\n-529 if (!_\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bI_\bs_\bV_\ba_\bl_\bi_\bd(cVert))\n-530 continue;\n-531\n-532 // Declare and compute mask weights for this vertex relative to its parent\n-edge:\n-533 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by eVerts = parent.getEdgeVertices(edge),\n-534 eFaces = parent.getEdgeFaces(edge);\n-535\n-536 Mask eMask(eVertWeights, 0, eFaceWeights);\n-537\n-538 eHood.SetIndex(edge);\n-539\n-540 _\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be pRule = (parent.getEdgeSharpness(edge) > 0.0f) ? _\bS_\bd_\bc_\b:_\b:\n-_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bC_\bR_\bE_\bA_\bS_\bE : Sdc::Crease::RULE_SMOOTH;\n-541 _\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be cRule = child.getVertexRule(cVert);\n-542\n-543 scheme.ComputeEdgeVertexMask(eHood, eMask, pRule, cRule);\n-544\n-545 // Apply the weights to the parent edges's vertices and (if applicable) to\n-546 // the child vertices of its incident faces:\n-547 dst[cVert].Clear();\n-548 dst[cVert].AddWithWeight(src[eVerts[0]], eVertWeights[0]);\n-549 dst[cVert].AddWithWeight(src[eVerts[1]], eVertWeights[1]);\n-550\n-551 if (eMask.GetNumFaceWeights() > 0) {\n-552\n-553 for (int i = 0; i < eFaces.size(); ++i) {\n-554\n-555 if (eMask.AreFaceWeightsForFaceCenters()) {\n-556 assert(refinement.getNumChildVerticesFromFaces() > 0);\n-557 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx cVertOfFace = refinement.getFaceChildVertex(eFaces[i]);\n-558\n-559 assert(_\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bI_\bs_\bV_\ba_\bl_\bi_\bd(cVertOfFace));\n-560 dst[cVert].AddWithWeight(dst[cVertOfFace], eFaceWeights[i]);\n-561 } else {\n-562 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx pFace = eFaces[i];\n-563 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by pFaceEdges = parent.getFaceEdges(pFace),\n-564 pFaceVerts = parent.getFaceVertices(pFace);\n-565\n-566 int eInFace = 0;\n-567 for ( ; pFaceEdges[eInFace] != edge; ++eInFace ) ;\n-568\n-569 int vInFace = eInFace + 2;\n-570 if (vInFace >= pFaceVerts.size()) vInFace -= pFaceVerts._\bs_\bi_\bz_\be();\n-571\n-572 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx pVertNext = pFaceVerts[vInFace];\n-573 dst[cVert].AddWithWeight(src[pVertNext], eFaceWeights[i]);\n-574 }\n-575 }\n-576 }\n-577 }\n-578}\n-579\n-580template <typename REAL>\n-581template <Sdc::SchemeType SCHEME, class T, class U>\n-582inline void\n-583PrimvarRefinerReal<REAL>::interpFromVerts(int level, T const & src, U & dst)\n-const {\n-584\n-585 Vtr::internal::Refinement const & refinement = _refiner.getRefinement\n-(level-1);\n-586 Vtr::internal::Level const & parent = refinement.parent();\n-587 Vtr::internal::Level const & child = refinement.child();\n-588\n-589 Sdc::Scheme<SCHEME> scheme(_refiner._subdivOptions);\n-590\n-591 Vtr::internal::VertexInterface vHood(parent, child);\n-592\n-593 Vtr::internal::StackBuffer<Weight,32> weightBuffer(2*parent.getMaxValence\n-());\n-594\n-595 for (int vert = 0; vert < parent.getNumVertices(); ++vert) {\n-596\n-597 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx cVert = refinement.getVertexChildVertex(vert);\n-598 if (!_\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bI_\bs_\bV_\ba_\bl_\bi_\bd(cVert))\n-599 continue;\n-600\n-601 // Declare and compute mask weights for this vertex relative to its parent\n-edge:\n-602 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by vEdges = parent.getVertexEdges(vert),\n-603 vFaces = parent.getVertexFaces(vert);\n-604\n-605 Weight vVertWeight,\n-606 * vEdgeWeights = weightBuffer,\n-607 * vFaceWeights = vEdgeWeights + vEdges._\bs_\bi_\bz_\be();\n-608\n-609 Mask vMask(&vVertWeight, vEdgeWeights, vFaceWeights);\n-610\n-611 vHood.SetIndex(vert, cVert);\n-612\n-613 _\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be pRule = parent.getVertexRule(vert);\n-614 _\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be cRule = child.getVertexRule(cVert);\n-615\n-616 scheme.ComputeVertexVertexMask(vHood, vMask, pRule, cRule);\n-617\n-618 // Apply the weights to the parent vertex, the vertices opposite its\n-incident\n-619 // edges, and the child vertices of its incident faces:\n-620 //\n-621 // In order to improve numerical precision, it's better to apply smaller\n-weights\n-622 // first, so begin with the face-weights followed by the edge-weights and\n-the\n-623 // vertex weight last.\n-624 dst[cVert].Clear();\n-625\n-626 if (vMask.GetNumFaceWeights() > 0) {\n-627 assert(vMask.AreFaceWeightsForFaceCenters());\n-628\n-629 for (int i = 0; i < vFaces.size(); ++i) {\n-630\n-631 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx cVertOfFace = refinement.getFaceChildVertex(vFaces[i]);\n-632 assert(_\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bI_\bs_\bV_\ba_\bl_\bi_\bd(cVertOfFace));\n-633 dst[cVert].AddWithWeight(dst[cVertOfFace], vFaceWeights[i]);\n-634 }\n-635 }\n-636 if (vMask.GetNumEdgeWeights() > 0) {\n-637\n-638 for (int i = 0; i < vEdges.size(); ++i) {\n-639\n-640 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by eVerts = parent.getEdgeVertices(vEdges[i]);\n-641 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx pVertOppositeEdge = (eVerts[0] == vert) ? eVerts[1] : eVerts[0];\n-642\n-643 dst[cVert].AddWithWeight(src[pVertOppositeEdge], vEdgeWeights[i]);\n-644 }\n-645 }\n-646 dst[cVert].AddWithWeight(src[vert], vVertWeight);\n-647 }\n-648}\n-649\n-650\n-651//\n-652// Internal face-varying implementation details:\n-653//\n-654template <typename REAL>\n-655template <Sdc::SchemeType SCHEME, class T, class U>\n-656inline void\n-657PrimvarRefinerReal<REAL>::interpFVarFromFaces(int level, T const & src, U &\n-dst, int channel) const {\n-658\n-659 Vtr::internal::Refinement const & refinement = _refiner.getRefinement\n-(level-1);\n-660\n-661 if (refinement.getNumChildVerticesFromFaces() == 0) return;\n-662\n-663 Sdc::Scheme<SCHEME> scheme(_refiner._subdivOptions);\n-664\n-665 Vtr::internal::Level const & parentLevel = refinement.parent();\n-666 Vtr::internal::Level const & childLevel = refinement.child();\n-667\n-668 Vtr::internal::FVarLevel const & parentFVar = parentLevel.getFVarLevel\n-(channel);\n-669 Vtr::internal::FVarLevel const & childFVar = childLevel.getFVarLevel\n-(channel);\n-670\n-671 Vtr::internal::StackBuffer<Weight,16> fValueWeights\n-(parentLevel.getMaxValence());\n-672\n-673 for (int face = 0; face < parentLevel.getNumFaces(); ++face) {\n-674\n-675 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx cVert = refinement.getFaceChildVertex(face);\n-676 if (!_\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bI_\bs_\bV_\ba_\bl_\bi_\bd(cVert))\n-677 continue;\n-678\n-679 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx cVertValue = childFVar.getVertexValueOffset(cVert);\n-680\n-681 // The only difference for face-varying here is that we get the values\n-associated\n-682 // with each face-vertex directly from the FVarLevel, rather than using the\n-parent\n-683 // face-vertices directly. If any face-vertex has any sibling values, then\n-we may\n-684 // get the wrong one using the face-vertex index directly.\n-685\n-686 // Declare and compute mask weights for this vertex relative to its parent\n-face:\n-687 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by fValues = parentFVar.getFaceValues(face);\n-688\n-689 Mask fMask(fValueWeights, 0, 0);\n-690 Vtr::internal::FaceInterface fHood(fValues.size());\n-691\n-692 scheme.ComputeFaceVertexMask(fHood, fMask);\n-693\n-694 // Apply the weights to the parent face's vertices:\n-695 dst[cVertValue].Clear();\n-696\n-697 for (int i = 0; i < fValues.size(); ++i) {\n-698 dst[cVertValue].AddWithWeight(src[fValues[i]], fValueWeights[i]);\n-699 }\n-700 }\n-701}\n-702\n-703template <typename REAL>\n-704template <Sdc::SchemeType SCHEME, class T, class U>\n-705inline void\n-706PrimvarRefinerReal<REAL>::interpFVarFromEdges(int level, T const & src, U &\n-dst, int channel) const {\n-707\n-708 Vtr::internal::Refinement const & refinement = _refiner.getRefinement\n-(level-1);\n-709\n-710 Sdc::Scheme<SCHEME> scheme(_refiner._subdivOptions);\n-711\n-712 Vtr::internal::Level const & parentLevel = refinement.parent();\n-713 Vtr::internal::Level const & childLevel = refinement.child();\n-714\n-715 Vtr::internal::FVarRefinement const & refineFVar =\n-refinement.getFVarRefinement(channel);\n-716 Vtr::internal::FVarLevel const & parentFVar = parentLevel.getFVarLevel\n-(channel);\n-717 Vtr::internal::FVarLevel const & childFVar = childLevel.getFVarLevel\n-(channel);\n-718\n-719 //\n-720 // Allocate and initialize (if linearly interpolated) interpolation weights\n-for\n-721 // the edge mask:\n-722 //\n-723 Weight eVertWeights[2];\n-724 Vtr::internal::StackBuffer<Weight,8> eFaceWeights\n-(parentLevel.getMaxEdgeFaces());\n-725\n-726 Mask eMask(eVertWeights, 0, eFaceWeights);\n-727\n-728 bool isLinearFVar = parentFVar.isLinear() || (_refiner._subdivType == _\bS_\bd_\bc_\b:_\b:\n-_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bB_\bI_\bL_\bI_\bN_\bE_\bA_\bR);\n-729 if (isLinearFVar) {\n-730 eMask.SetNumVertexWeights(2);\n-731 eMask.SetNumEdgeWeights(0);\n-732 eMask.SetNumFaceWeights(0);\n-733\n-734 eVertWeights[0] = 0.5f;\n-735 eVertWeights[1] = 0.5f;\n-736 }\n-737\n-738 Vtr::internal::EdgeInterface eHood(parentLevel);\n-739\n-740 for (int edge = 0; edge < parentLevel.getNumEdges(); ++edge) {\n-741\n-742 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx cVert = refinement.getEdgeChildVertex(edge);\n-743 if (!_\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bI_\bs_\bV_\ba_\bl_\bi_\bd(cVert))\n-744 continue;\n-745\n-746 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by cVertValues = childFVar.getVertexValues(cVert);\n-747\n-748 bool fvarEdgeVertMatchesVertex = childFVar.valueTopologyMatches(cVertValues\n-[0]);\n-749 if (fvarEdgeVertMatchesVertex) {\n-750 //\n-751 // If smoothly interpolated, compute new weights for the edge mask:\n-752 //\n-753 if (!isLinearFVar) {\n-754 eHood.SetIndex(edge);\n-755\n-756 _\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be pRule = (parentLevel.getEdgeSharpness(edge) > 0.0f)\n-757 ? _\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bC_\bR_\bE_\bA_\bS_\bE : Sdc::Crease::RULE_SMOOTH;\n-758 _\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be cRule = childLevel.getVertexRule(cVert);\n-759\n-760 scheme.ComputeEdgeVertexMask(eHood, eMask, pRule, cRule);\n-761 }\n-762\n-763 // Apply the weights to the parent edge's vertices and (if applicable) to\n-764 // the child vertices of its incident faces:\n-765 //\n-766 // Even though the face-varying topology matches the vertex topology, we\n-need\n-767 // to be careful here when getting values corresponding to the two end-\n-vertices.\n-768 // While the edge may be continuous, the vertices at their ends may have\n-769 // discontinuities elsewhere in their neighborhood (i.e. on the \"other\n-side\"\n-770 // of the end-vertex) and so have sibling values associated with them. In\n-most\n-771 // cases the topology for an end-vertex will match and we can use it\n-directly,\n-772 // but we must still check and retrieve as needed.\n-773 //\n-774 // Indices for values corresponding to face-vertices are guaranteed to\n-match,\n-775 // so we can use the child-vertex indices directly.\n-776 //\n-777 // And by \"directly\", we always use getVertexValue(vertexIndex) to\n-reference\n-778 // values in the \"src\" to account for the possible indirection that may\n-exist at\n-779 // level 0 -- where there may be fewer values than vertices and an\n-additional\n-780 // indirection is necessary. We can use a vertex index directly for \"dst\"\n-when\n-781 // it matches.\n-782 //\n-783 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx eVertValues[2];\n-784\n-785 parentFVar.getEdgeFaceValues(edge, 0, eVertValues);\n-786\n-787 _\bI_\bn_\bd_\be_\bx cVertValue = cVertValues[0];\n-788\n-789 dst[cVertValue].Clear();\n-790 dst[cVertValue].AddWithWeight(src[eVertValues[0]], eVertWeights[0]);\n-791 dst[cVertValue].AddWithWeight(src[eVertValues[1]], eVertWeights[1]);\n-792\n-793 if (eMask.GetNumFaceWeights() > 0) {\n-794\n-795 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by eFaces = parentLevel.getEdgeFaces(edge);\n-796\n-797 for (int i = 0; i < eFaces.size(); ++i) {\n-798 if (eMask.AreFaceWeightsForFaceCenters()) {\n-799\n-800 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx cVertOfFace = refinement.getFaceChildVertex(eFaces[i]);\n-801 assert(_\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bI_\bs_\bV_\ba_\bl_\bi_\bd(cVertOfFace));\n-802\n-803 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx cValueOfFace = childFVar.getVertexValueOffset(cVertOfFace);\n-804 dst[cVertValue].AddWithWeight(dst[cValueOfFace], eFaceWeights[i]);\n-805 } else {\n-806 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx pFace = eFaces[i];\n-807 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by pFaceEdges = parentLevel.getFaceEdges(pFace),\n-808 pFaceVerts = parentLevel.getFaceVertices(pFace);\n-809\n-810 int eInFace = 0;\n-811 for ( ; pFaceEdges[eInFace] != edge; ++eInFace ) ;\n-812\n-813 // Edge \"i\" spans vertices [i,i+1] so we want i+2...\n-814 int vInFace = eInFace + 2;\n-815 if (vInFace >= pFaceVerts.size()) vInFace -= pFaceVerts._\bs_\bi_\bz_\be();\n-816\n-817 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx pValueNext = parentFVar.getFaceValues(pFace)[vInFace];\n-818 dst[cVertValue].AddWithWeight(src[pValueNext], eFaceWeights[i]);\n-819 }\n-820 }\n-821 }\n-822 } else {\n-823 //\n-824 // Mismatched edge-verts should just be linearly interpolated between the\n-pairs of\n-825 // values for each sibling of the child edge-vertex -- the question is:\n-which face\n-826 // holds that pair of values for a given sibling?\n-827 //\n-828 // In the manifold case, the sibling and edge-face indices will correspond.\n-We\n-829 // will eventually need to update this to account for > 3 incident faces.\n-830 //\n-831 for (int i = 0; i < cVertValues.size(); ++i) {\n-832 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx eVertValues[2];\n-833 int eFaceIndex = refineFVar.getChildValueParentSource(cVert, i);\n-834 assert(eFaceIndex == i);\n-835\n-836 parentFVar.getEdgeFaceValues(edge, eFaceIndex, eVertValues);\n-837\n-838 _\bI_\bn_\bd_\be_\bx cVertValue = cVertValues[i];\n-839\n-840 dst[cVertValue].Clear();\n-841 dst[cVertValue].AddWithWeight(src[eVertValues[0]], 0.5);\n-842 dst[cVertValue].AddWithWeight(src[eVertValues[1]], 0.5);\n-843 }\n-844 }\n-845 }\n-846}\n-847\n-848template <typename REAL>\n-849template <Sdc::SchemeType SCHEME, class T, class U>\n-850inline void\n-851PrimvarRefinerReal<REAL>::interpFVarFromVerts(int level, T const & src, U &\n-dst, int channel) const {\n-852\n-853 Vtr::internal::Refinement const & refinement = _refiner.getRefinement\n-(level-1);\n-854\n-855 Sdc::Scheme<SCHEME> scheme(_refiner._subdivOptions);\n-856\n-857 Vtr::internal::Level const & parentLevel = refinement.parent();\n-858 Vtr::internal::Level const & childLevel = refinement.child();\n-859\n-860 Vtr::internal::FVarRefinement const & refineFVar =\n-refinement.getFVarRefinement(channel);\n-861 Vtr::internal::FVarLevel const & parentFVar = parentLevel.getFVarLevel\n-(channel);\n-862 Vtr::internal::FVarLevel const & childFVar = childLevel.getFVarLevel\n-(channel);\n-863\n-864 bool isLinearFVar = parentFVar.isLinear() || (_refiner._subdivType == _\bS_\bd_\bc_\b:_\b:\n-_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bB_\bI_\bL_\bI_\bN_\bE_\bA_\bR);\n-865\n-866 Vtr::internal::StackBuffer<Weight,32> weightBuffer\n-(2*parentLevel.getMaxValence());\n-867\n-868 Vtr::internal::StackBuffer<Vtr::Index,16> vEdgeValues\n-(parentLevel.getMaxValence());\n-869\n-870 Vtr::internal::VertexInterface vHood(parentLevel, childLevel);\n-871\n-872 for (int vert = 0; vert < parentLevel.getNumVertices(); ++vert) {\n-873\n-874 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx cVert = refinement.getVertexChildVertex(vert);\n-875 if (!_\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bI_\bs_\bV_\ba_\bl_\bi_\bd(cVert))\n-876 continue;\n-877\n-878 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by pVertValues = parentFVar.getVertexValues(vert),\n-879 cVertValues = childFVar.getVertexValues(cVert);\n-880\n-881 bool fvarVertVertMatchesVertex = childFVar.valueTopologyMatches(cVertValues\n-[0]);\n-882 if (isLinearFVar && fvarVertVertMatchesVertex) {\n-883 dst[cVertValues[0]].Clear();\n-884 dst[cVertValues[0]].AddWithWeight(src[pVertValues[0]], 1.0f);\n-885 continue;\n-886 }\n-887\n-888 if (fvarVertVertMatchesVertex) {\n-889 //\n-890 // Declare and compute mask weights for this vertex relative to its parent\n-edge:\n-891 //\n-892 // (We really need to encapsulate this somewhere else for use here and in\n-the\n-893 // general case)\n-894 //\n-895 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by vEdges = parentLevel.getVertexEdges(vert);\n-896\n-897 Weight vVertWeight;\n-898 Weight * vEdgeWeights = weightBuffer;\n-899 Weight * vFaceWeights = vEdgeWeights + vEdges._\bs_\bi_\bz_\be();\n-900\n-901 Mask vMask(&vVertWeight, vEdgeWeights, vFaceWeights);\n-902\n-903 vHood.SetIndex(vert, cVert);\n-904\n-905 _\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be pRule = parentLevel.getVertexRule(vert);\n-906 _\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be cRule = childLevel.getVertexRule(cVert);\n-907\n-908 scheme.ComputeVertexVertexMask(vHood, vMask, pRule, cRule);\n-909\n-910 // Apply the weights to the parent vertex, the vertices opposite its\n-incident\n-911 // edges, and the child vertices of its incident faces:\n-912 //\n-913 // Even though the face-varying topology matches the vertex topology, we\n-need\n-914 // to be careful here when getting values corresponding to vertices at the\n-915 // ends of edges. While the edge may be continuous, the end vertex may have\n-916 // discontinuities elsewhere in their neighborhood (i.e. on the \"other\n-side\"\n-917 // of the end-vertex) and so have sibling values associated with them. In\n-most\n-918 // cases the topology for an end-vertex will match and we can use it\n-directly,\n-919 // but we must still check and retrieve as needed.\n-920 //\n-921 // Indices for values corresponding to face-vertices are guaranteed to\n-match,\n-922 // so we can use the child-vertex indices directly.\n-923 //\n-924 // And by \"directly\", we always use getVertexValue(vertexIndex) to\n-reference\n-925 // values in the \"src\" to account for the possible indirection that may\n-exist at\n-926 // level 0 -- where there may be fewer values than vertices and an\n-additional\n-927 // indirection is necessary. We can use a vertex index directly for \"dst\"\n-when\n-928 // it matches.\n-929 //\n-930 // As with applying the mask to vertex data, in order to improve numerical\n-931 // precision, it's better to apply smaller weights first, so begin with the\n-932 // face-weights followed by the edge-weights and the vertex weight last.\n-933 //\n-934 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx pVertValue = pVertValues[0];\n-935 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx cVertValue = cVertValues[0];\n-936\n-937 dst[cVertValue].Clear();\n-938 if (vMask.GetNumFaceWeights() > 0) {\n-939 assert(vMask.AreFaceWeightsForFaceCenters());\n-940\n-941 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by vFaces = parentLevel.getVertexFaces(vert);\n-942\n-943 for (int i = 0; i < vFaces.size(); ++i) {\n-944\n-945 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx cVertOfFace = refinement.getFaceChildVertex(vFaces[i]);\n-946 assert(_\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bI_\bs_\bV_\ba_\bl_\bi_\bd(cVertOfFace));\n-947\n-948 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx cValueOfFace = childFVar.getVertexValueOffset(cVertOfFace);\n-949 dst[cVertValue].AddWithWeight(dst[cValueOfFace], vFaceWeights[i]);\n-950 }\n-951 }\n-952 if (vMask.GetNumEdgeWeights() > 0) {\n-953\n-954 parentFVar.getVertexEdgeValues(vert, vEdgeValues);\n-955\n-956 for (int i = 0; i < vEdges.size(); ++i) {\n-957 dst[cVertValue].AddWithWeight(src[vEdgeValues[i]], vEdgeWeights[i]);\n-958 }\n-959 }\n-960 dst[cVertValue].AddWithWeight(src[pVertValue], vVertWeight);\n-961 } else {\n-962 //\n-963 // Each FVar value associated with a vertex will be either a corner or a\n-crease,\n-964 // or potentially in transition from corner to crease:\n-965 // - if the CHILD is a corner, there can be no transition so we have a\n-corner\n-966 // - otherwise if the PARENT is a crease, both will be creases (no\n-transition)\n-967 // - otherwise the parent must be a corner and the child a crease\n-(transition)\n-968 //\n-969 Vtr::internal::FVarLevel::ConstValueTagArray pValueTags =\n-parentFVar.getVertexValueTags(vert);\n-970 Vtr::internal::FVarLevel::ConstValueTagArray cValueTags =\n-childFVar.getVertexValueTags(cVert);\n-971\n-972 for (int cSiblingIndex = 0; cSiblingIndex < cVertValues.size();\n-++cSiblingIndex) {\n-973 int pSiblingIndex = refineFVar.getChildValueParentSource(cVert,\n-cSiblingIndex);\n-974 assert(pSiblingIndex == cSiblingIndex);\n-975\n-976 typedef Vtr::internal::FVarLevel::Sibling SiblingIntType;\n-977\n-978 SiblingIntType cSibling = (SiblingIntType) cSiblingIndex;\n-979 SiblingIntType pSibling = (SiblingIntType) pSiblingIndex;\n-980\n-981 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx pVertValue = pVertValues[pSibling];\n-982 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx cVertValue = cVertValues[cSibling];\n-983\n-984 dst[cVertValue].Clear();\n-985 if (isLinearFVar || cValueTags[cSibling].isCorner()) {\n-986 dst[cVertValue].AddWithWeight(src[pVertValue], 1.0f);\n-987 } else {\n-988 //\n-989 // We have either a crease or a transition from corner to crease -- in\n-990 // either case, we need the end values for the full/fractional crease:\n-991 //\n-992 _\bI_\bn_\bd_\be_\bx pEndValues[2];\n-993 parentFVar.getVertexCreaseEndValues(vert, pSibling, pEndValues);\n-994\n-995 Weight vWeight = 0.75f;\n-996 Weight eWeight = 0.125f;\n-997\n-998 //\n-999 // If semi-sharp we need to apply fractional weighting -- if made sharp\n-because\n-1000 // of the other sibling (dependent-sharp) use the fractional weight from\n-that\n-1001 // other sibling (should only occur when there are 2):\n-1002 //\n-1003 if (pValueTags[pSibling].isSemiSharp()) {\n-1004 Weight wCorner = pValueTags[pSibling].isDepSharp()\n-1005 ? refineFVar.getFractionalWeight(vert, !pSibling, cVert, !cSibling)\n-1006 : refineFVar.getFractionalWeight(vert, pSibling, cVert, cSibling);\n-1007 Weight wCrease = 1.0f - wCorner;\n-1008\n-1009 vWeight = wCrease * 0.75f + wCorner;\n-1010 eWeight = wCrease * 0.125f;\n-1011 }\n-1012 dst[cVertValue].AddWithWeight(src[pEndValues[0]], eWeight);\n-1013 dst[cVertValue].AddWithWeight(src[pEndValues[1]], eWeight);\n-1014 dst[cVertValue].AddWithWeight(src[pVertValue], vWeight);\n-1015 }\n-1016 }\n-1017 }\n-1018 }\n-1019}\n-1020\n-1021template <typename REAL>\n-1022template <Sdc::SchemeType SCHEME, class T, class U, class U1, class U2>\n-1023inline void\n-1024PrimvarRefinerReal<REAL>::limit(T const & src, U & dstPos, U1 * dstTan1Ptr,\n-U2 * dstTan2Ptr) const {\n-1025\n-1026 Sdc::Scheme<SCHEME> scheme(_refiner._subdivOptions);\n-1027\n-1028 Vtr::internal::Level const & level = _refiner.getLevel\n-(_refiner.GetMaxLevel());\n-1029\n-1030 int maxWeightsPerMask = 1 + 2 * level.getMaxValence();\n-1031 bool hasTangents = (dstTan1Ptr && dstTan2Ptr);\n-1032 int numMasks = 1 + (hasTangents ? 2 : 0);\n-1033\n-1034 Vtr::internal::StackBuffer<Index,33> indexBuffer(maxWeightsPerMask);\n-1035 Vtr::internal::StackBuffer<Weight,99> weightBuffer(numMasks *\n-maxWeightsPerMask);\n-1036\n-1037 Weight * vPosWeights = weightBuffer,\n-1038 * ePosWeights = vPosWeights + 1,\n-1039 * fPosWeights = ePosWeights + level.getMaxValence();\n-1040 Weight * vTan1Weights = vPosWeights + maxWeightsPerMask,\n-1041 * eTan1Weights = ePosWeights + maxWeightsPerMask,\n-1042 * fTan1Weights = fPosWeights + maxWeightsPerMask;\n-1043 Weight * vTan2Weights = vTan1Weights + maxWeightsPerMask,\n-1044 * eTan2Weights = eTan1Weights + maxWeightsPerMask,\n-1045 * fTan2Weights = fTan1Weights + maxWeightsPerMask;\n-1046\n-1047 Mask posMask( vPosWeights, ePosWeights, fPosWeights);\n-1048 Mask tan1Mask(vTan1Weights, eTan1Weights, fTan1Weights);\n-1049 Mask tan2Mask(vTan2Weights, eTan2Weights, fTan2Weights);\n-1050\n-1051 // This is a bit obscure -- assigning both parent and child as last level\n--- but\n-1052 // this mask type was intended for another purpose. Consider one for the\n-limit:\n-1053 Vtr::internal::VertexInterface vHood(level, level);\n-1054\n-1055 for (int vert = 0; vert < level.getNumVertices(); ++vert) {\n-1056 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by vEdges = level.getVertexEdges(vert);\n-1057\n-1058 // Incomplete vertices (present in sparse refinement) do not have their\n-full\n-1059 // topological neighborhood to determine a proper limit -- just leave the\n-1060 // vertex at the refined location and continue to the next:\n-1061 if (level.getVertexTag(vert)._incomplete || (vEdges.size() == 0)) {\n-1062 dstPos[vert].Clear();\n-1063 dstPos[vert].AddWithWeight(src[vert], 1.0);\n-1064 if (hasTangents) {\n-1065 (*dstTan1Ptr)[vert].Clear();\n-1066 (*dstTan2Ptr)[vert].Clear();\n-1067 }\n-1068 continue;\n-1069 }\n-1070\n-1071 //\n-1072 // Limit masks require the subdivision Rule for the vertex in order to\n-deal\n-1073 // with infinitely sharp features correctly -- including boundaries and\n-corners.\n-1074 // The vertex neighborhood is minimally defined with vertex and edge\n-counts.\n-1075 //\n-1076 _\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be vRule = level.getVertexRule(vert);\n-1077\n-1078 // This is a bit obscure -- child vertex index will be ignored here\n-1079 vHood.SetIndex(vert, vert);\n-1080\n-1081 if (hasTangents) {\n-1082 scheme.ComputeVertexLimitMask(vHood, posMask, tan1Mask, tan2Mask, vRule);\n-1083 } else {\n-1084 scheme.ComputeVertexLimitMask(vHood, posMask, vRule);\n-1085 }\n-1086\n-1087 //\n-1088 // Gather the neighboring vertices of this vertex -- the vertices opposite\n-its\n-1089 // incident edges, and the opposite vertices of its incident faces:\n-1090 //\n-1091 _\bI_\bn_\bd_\be_\bx * eIndices = indexBuffer;\n-1092 _\bI_\bn_\bd_\be_\bx * fIndices = indexBuffer + vEdges._\bs_\bi_\bz_\be();\n-1093\n-1094 for (int i = 0; i < vEdges.size(); ++i) {\n-1095 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by eVerts = level.getEdgeVertices(vEdges[i]);\n-1096\n-1097 eIndices[i] = (eVerts[0] == vert) ? eVerts[1] : eVerts[0];\n-1098 }\n-1099 if (posMask.GetNumFaceWeights() || (hasTangents &&\n-tan1Mask.GetNumFaceWeights())) {\n-1100 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by vFaces = level.getVertexFaces(vert);\n-1101 _\bC_\bo_\bn_\bs_\bt_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by vInFace = level.getVertexFaceLocalIndices(vert);\n-1102\n-1103 for (int i = 0; i < vFaces.size(); ++i) {\n-1104 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by fVerts = level.getFaceVertices(vFaces[i]);\n-1105\n-1106 _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx vOppInFace = (vInFace[i] + 2);\n-1107 if (vOppInFace >= fVerts.size()) vOppInFace -= (_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx)fVerts._\bs_\bi_\bz_\be();\n-1108\n-1109 fIndices[i] = level.getFaceVertices(vFaces[i])[vOppInFace];\n-1110 }\n-1111 }\n-1112\n-1113 //\n-1114 // Combine the weights and indices for position and tangents. As with\n-applying\n-1115 // refinement masks to vertex data, in order to improve numerical\n-precision, it's\n-1116 // better to apply smaller weights first, so begin with the face-weights\n-followed\n-1117 // by the edge-weights and the vertex weight last.\n-1118 //\n-1119 dstPos[vert].Clear();\n-1120 for (int i = 0; i < posMask.GetNumFaceWeights(); ++i) {\n-1121 dstPos[vert].AddWithWeight(src[fIndices[i]], fPosWeights[i]);\n-1122 }\n-1123 for (int i = 0; i < posMask.GetNumEdgeWeights(); ++i) {\n-1124 dstPos[vert].AddWithWeight(src[eIndices[i]], ePosWeights[i]);\n-1125 }\n-1126 dstPos[vert].AddWithWeight(src[vert], vPosWeights[0]);\n-1127\n-1128 //\n-1129 // Apply the tangent masks -- both will have the same number of weights\n-and\n-1130 // indices (one tangent may be \"padded\" to accommodate the other), but\n-these\n-1131 // may differ from those of the position:\n-1132 //\n-1133 if (hasTangents) {\n-1134 assert(tan1Mask.GetNumFaceWeights() == tan2Mask.GetNumFaceWeights());\n-1135 assert(tan1Mask.GetNumEdgeWeights() == tan2Mask.GetNumEdgeWeights());\n-1136\n-1137 U1 & dstTan1 = *dstTan1Ptr;\n-1138 U2 & dstTan2 = *dstTan2Ptr;\n-1139\n-1140 dstTan1[vert].Clear();\n-1141 dstTan2[vert].Clear();\n-1142 for (int i = 0; i < tan1Mask.GetNumFaceWeights(); ++i) {\n-1143 dstTan1[vert].AddWithWeight(src[fIndices[i]], fTan1Weights[i]);\n-1144 dstTan2[vert].AddWithWeight(src[fIndices[i]], fTan2Weights[i]);\n-1145 }\n-1146 for (int i = 0; i < tan1Mask.GetNumEdgeWeights(); ++i) {\n-1147 dstTan1[vert].AddWithWeight(src[eIndices[i]], eTan1Weights[i]);\n-1148 dstTan2[vert].AddWithWeight(src[eIndices[i]], eTan2Weights[i]);\n-1149 }\n-1150 dstTan1[vert].AddWithWeight(src[vert], vTan1Weights[0]);\n-1151 dstTan2[vert].AddWithWeight(src[vert], vTan2Weights[0]);\n-1152 }\n-1153 }\n-1154}\n-1155\n-1156template <typename REAL>\n-1157template <Sdc::SchemeType SCHEME, class T, class U>\n-1158inline void\n-1159PrimvarRefinerReal<REAL>::limitFVar(T const & src, U & dst, int channel)\n-const {\n-1160\n-1161 Sdc::Scheme<SCHEME> scheme(_refiner._subdivOptions);\n-1162\n-1163 Vtr::internal::Level const & level = _refiner.getLevel\n-(_refiner.GetMaxLevel());\n-1164 Vtr::internal::FVarLevel const & fvarChannel = level.getFVarLevel\n-(channel);\n-1165\n-1166 int maxWeightsPerMask = 1 + 2 * level.getMaxValence();\n-1167\n-1168 Vtr::internal::StackBuffer<Weight,33> weightBuffer(maxWeightsPerMask);\n-1169 Vtr::internal::StackBuffer<Index,16> vEdgeBuffer(level.getMaxValence());\n-1170\n-1171 // This is a bit obscure -- assign both parent and child as last level\n-1172 Vtr::internal::VertexInterface vHood(level, level);\n-1173\n-1174 for (int vert = 0; vert < level.getNumVertices(); ++vert) {\n-1175\n-1176 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by vEdges = level.getVertexEdges(vert);\n-1177 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by vValues = fvarChannel.getVertexValues(vert);\n-1178\n-1179 // Incomplete vertices (present in sparse refinement) do not have their\n-full\n-1180 // topological neighborhood to determine a proper limit -- just leave the\n-1181 // values (perhaps more than one per vertex) at the refined location.\n-1182 //\n-1183 // The same can be done if the face-varying channel is purely linear.\n-1184 //\n-1185 bool isIncomplete = (level.getVertexTag(vert)._incomplete || (vEdges.size\n-() == 0));\n-1186 if (isIncomplete || fvarChannel.isLinear()) {\n-1187 for (int i = 0; i < vValues.size(); ++i) {\n-1188 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx vValue = vValues[i];\n-1189\n-1190 dst[vValue].Clear();\n-1191 dst[vValue].AddWithWeight(src[vValue], 1.0f);\n-1192 }\n-1193 continue;\n-1194 }\n-1195\n-1196 bool fvarVertMatchesVertex = fvarChannel.valueTopologyMatches(vValues[0]);\n-1197 if (fvarVertMatchesVertex) {\n-1198\n-1199 // Assign the mask weights to the common buffer and compute the mask:\n-1200 //\n-1201 Weight * vWeights = weightBuffer,\n-1202 * eWeights = vWeights + 1,\n-1203 * fWeights = eWeights + vEdges._\bs_\bi_\bz_\be();\n-1204\n-1205 Mask vMask(vWeights, eWeights, fWeights);\n-1206\n-1207 vHood.SetIndex(vert, vert);\n-1208\n-1209 scheme.ComputeVertexLimitMask(vHood, vMask, level.getVertexRule(vert));\n-1210\n-1211 //\n-1212 // Apply mask to corresponding FVar values for neighboring vertices:\n-1213 //\n-1214 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx vValue = vValues[0];\n-1215\n-1216 dst[vValue].Clear();\n-1217 if (vMask.GetNumFaceWeights() > 0) {\n-1218 assert(!vMask.AreFaceWeightsForFaceCenters());\n-1219\n-1220 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by vFaces = level.getVertexFaces(vert);\n-1221 _\bC_\bo_\bn_\bs_\bt_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by vInFace = level.getVertexFaceLocalIndices(vert);\n-1222\n-1223 for (int i = 0; i < vFaces.size(); ++i) {\n-1224 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by faceValues = fvarChannel.getFaceValues(vFaces[i]);\n-1225 _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx vOppInFace = vInFace[i] + 2;\n-1226 if (vOppInFace >= faceValues.size()) vOppInFace -= faceValues._\bs_\bi_\bz_\be();\n-1227\n-1228 _\bI_\bn_\bd_\be_\bx vValueOppositeFace = faceValues[vOppInFace];\n-1229\n-1230 dst[vValue].AddWithWeight(src[vValueOppositeFace], fWeights[i]);\n-1231 }\n-1232 }\n-1233 if (vMask.GetNumEdgeWeights() > 0) {\n-1234 _\bI_\bn_\bd_\be_\bx * vEdgeValues = vEdgeBuffer;\n-1235 fvarChannel.getVertexEdgeValues(vert, vEdgeValues);\n-1236\n-1237 for (int i = 0; i < vEdges.size(); ++i) {\n-1238 dst[vValue].AddWithWeight(src[vEdgeValues[i]], eWeights[i]);\n-1239 }\n-1240 }\n-1241 dst[vValue].AddWithWeight(src[vValue], vWeights[0]);\n-1242 } else {\n-1243 //\n-1244 // Sibling FVar values associated with a vertex will be either a corner or\n-a crease:\n-1245 //\n-1246 for (int i = 0; i < vValues.size(); ++i) {\n-1247 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx vValue = vValues[i];\n-1248\n-1249 dst[vValue].Clear();\n-1250 if (fvarChannel.getValueTag(vValue).isCorner()) {\n-1251 dst[vValue].AddWithWeight(src[vValue], 1.0f);\n-1252 } else {\n-1253 _\bI_\bn_\bd_\be_\bx vEndValues[2];\n-1254 fvarChannel.getVertexCreaseEndValues(vert, i, vEndValues);\n-1255\n-1256 dst[vValue].AddWithWeight(src[vEndValues[0]], 1.0f/6.0f);\n-1257 dst[vValue].AddWithWeight(src[vEndValues[1]], 1.0f/6.0f);\n-1258 dst[vValue].AddWithWeight(src[vValue], 2.0f/3.0f);\n-1259 }\n-1260 }\n-1261 }\n-1262 }\n-1263}\n-1264\n-_\b1_\b2_\b6_\b5class _\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br : public _\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl<float> {\n-1266public:\n-_\b1_\b2_\b6_\b7 _\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const & refiner)\n-1268 : _\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl<float>(refiner) { }\n-1269};\n-1270\n-1271} // end namespace Far\n-1272\n-1273} // end namespace OPENSUBDIV_VERSION\n-1274using namespace OPENSUBDIV_VERSION;\n-1275} // end namespace OpenSubdiv\n-1276\n-1277#endif /* OPENSUBDIV3_FAR_PRIMVAR_REFINER_H */\n+_\b6_\b6 id<MTLBuffer> _\bG_\be_\bt_\bQ_\bu_\ba_\bd_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br() const\n+67 {\n+68 return _quadOffsetsBuffer;\n+69 }\n+70\n+_\b7_\b1 int _\bG_\be_\bt_\bQ_\bu_\ba_\bd_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bB_\ba_\bs_\be(_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bT_\by_\bp_\be type)\n+72 {\n+73 if(type == _\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bG_\bR_\bE_\bG_\bO_\bR_\bY_\b__\bB_\bO_\bU_\bN_\bD_\bA_\bR_\bY)\n+74 return _quadOffsetsBase[1];\n+75 return _quadOffsetsBase[0];\n+76 }\n+77\n+78private:\n+79 id<MTLBuffer> _vertexBuffer;\n+80 id<MTLBuffer> _vertexValenceBuffer;\n+81 id<MTLBuffer> _quadOffsetsBuffer;\n+82 int _quadOffsetsBase[2];\n+83};\n+84\n+85} //end namespace Osd\n+86\n+87} //end namespace OPENSUBDIV_VERSION\n+88using namespace OPENSUBDIV_VERSION;\n+89\n+90} //end namespace OpenSuddiv\n+91\n+92#endif // OPENSUBDIV3_OSD_MTL_LEGACY_GREGORY_PATCH_TABLE_H\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx\n-Vtr::LocalIndex LocalIndex\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b4_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bE_\br_\br_\bo_\br\n-void Error(ErrorType err, const char *format,...)\n-Sends an OSD error with a message (internal use only)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n-Vtr::ConstIndexArray ConstIndexArray\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b4_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n-Vtr::ConstLocalIndexArray ConstLocalIndexArray\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b4_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bF_\bA_\bR_\b__\bR_\bU_\bN_\bT_\bI_\bM_\bE_\b__\bE_\bR_\bR_\bO_\bR\n-@ FAR_RUNTIME_ERROR\n-Issue a generic runtime error, but continue execution.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\be_\br_\br_\bo_\br_\b._\bh_\b:_\b4_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx\n-Vtr::Index Index\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b4_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx\n-int Index\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b5_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bI_\bs_\bV_\ba_\bl_\bi_\bd\n-bool IndexIsValid(Index index)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b5_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bB_\bI_\bL_\bI_\bN_\bE_\bA_\bR\n-@ SCHEME_BILINEAR\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b3_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bC_\bA_\bT_\bM_\bA_\bR_\bK\n-@ SCHEME_CATMARK\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b3_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bL_\bO_\bO_\bP\n-@ SCHEME_LOOP\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b4_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl\n-Applies refinement operations to generic primvar data.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b5_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl_\b:_\b:_\bL_\bi_\bm_\bi_\bt\n-void Limit(T const &src, U &dstPos) const\n-Apply limit weights to a primvar buffer.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b3_\b1_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl_\b:_\b:_\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl\n-PrimvarRefinerReal(TopologyRefiner const &refiner)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b5_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl_\b:_\b:_\bL_\bi_\bm_\bi_\bt\n-void Limit(T const &src, U &dstPos, U1 &dstTan1, U2 &dstTan2) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b3_\b4_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be_\bF_\ba_\bc_\be_\bU_\bn_\bi_\bf_\bo_\br_\bm\n-void InterpolateFaceUniform(int level, T const &src, U &dst) const\n-Refine uniform (per-face) primvar data between levels.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b3_\b9_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl_\b:_\b:_\bG_\be_\bt_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br\n-TopologyRefiner const & GetTopologyRefiner() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b6_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n-void InterpolateVarying(int level, T const &src, U &dst) const\n-Apply only varying interpolation weights to a primvar buffer for a single level\n-of refinement.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b4_\b1_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n-void Interpolate(int level, T const &src, U &dst) const\n-Apply vertex interpolation weights to a primvar buffer for a single level of\n-refinement.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b2_\b6_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n-void InterpolateFaceVarying(int level, T const &src, U &dst, int channel=0)\n-const\n-Apply face-varying interpolation weights to a primvar buffer associated with a\n-particular face-varyin...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b2_\b9_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl_\b:_\b:_\b~_\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl\n-~PrimvarRefinerReal()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b6_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n-void LimitFaceVarying(T const &src, U &dst, int channel=0) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b3_\b6_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b2_\b6_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br\n-PrimvarRefiner(TopologyRefiner const &refiner)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b2_\b6_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br\n-Stores topology data for a specified set of refinement options.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b5_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be\n-Rule\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b8_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bC_\bR_\bE_\bA_\bS_\bE\n-@ RULE_CREASE\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b8_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be\n-Scheme is a class template which provides all implementation for the\n-subdivision schemes supported by...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b6_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b5_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by_\b:_\b:_\bs_\bi_\bz_\be\n-size_type size() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b7_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bT_\by_\bp_\be\n+Type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b4_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bG_\bR_\bE_\bG_\bO_\bR_\bY_\b__\bB_\bO_\bU_\bN_\bD_\bA_\bR_\bY\n+@ GREGORY_BOUNDARY\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b6_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+Container for arrays of parametric patches.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bm_\bo_\bn_\b._\bh_\b:_\b4_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b4_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n+_\bG_\be_\bt_\bQ_\bu_\ba_\bd_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bB_\ba_\bs_\be\n+int GetQuadOffsetsBase(Far::PatchDescriptor::Type type)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n+static MTLLegacyGregoryPatchTable * Create(Far::PatchTable const\n+*farPatchTable, DEVICE_CONTEXT context)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b4_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n+_\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be_\bB_\bu_\bf_\bf_\be_\br\n+id< MTLBuffer > GetVertexValenceBuffer() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n+_\bG_\be_\bt_\bQ_\bu_\ba_\bd_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br\n+id< MTLBuffer > GetQuadOffsetsBuffer() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n+static MTLLegacyGregoryPatchTable * Create(Far::PatchTable const\n+*farPatchTable, MTLContext *context)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n+_\bU_\bp_\bd_\ba_\bt_\be_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+void UpdateVertexBuffer(id< MTLBuffer > vbo, int numVertices, int\n+numVertexElements, MTLContext *context)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n+_\b~_\bM_\bT_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+~MTLLegacyGregoryPatchTable()\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n+_\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+id< MTLBuffer > GetVertexBuffer() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b6\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bf_\ba_\br\n-    * _\bp_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bm_\bt_\bl_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00749.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00749.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/far/error.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/osd/clEvaluator.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -88,78 +88,49 @@\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n-<a href=\"#namespaces\">Namespaces</a> &#124;\n-<a href=\"#typedef-members\">Typedefs</a> &#124;\n-<a href=\"#enum-members\">Enumerations</a> &#124;\n-<a href=\"#func-members\">Functions</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">error.h File Reference</div></div>\n+<a href=\"#nested-classes\">Classes</a> &#124;\n+<a href=\"#namespaces\">Namespaces</a>  </div>\n+  <div class=\"headertitle\"><div class=\"title\">clEvaluator.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00755_source.html\">../osd/opencl.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a01489_source.html\">../osd/types.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00764_source.html\">../osd/bufferDescriptor.h</a>&quot;</code><br />\n </div>\n <p><a href=\"a00749_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n+<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n+Classes</h2></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01145.html\">CLStencilTable</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">OpenCL stencil table.  <a href=\"a01145.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01149.html\">CLEvaluator</a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+</table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-</table><table class=\"memberdecls\">\n-<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"typedef-members\" name=\"typedef-members\"></a>\n-Typedefs</h2></td></tr>\n-<tr class=\"memitem:aa1630f297a91dfc683dfcfddeeebb2ac\" id=\"r_aa1630f297a91dfc683dfcfddeeebb2ac\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef void(*&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html#aa1630f297a91dfc683dfcfddeeebb2ac\">ErrorCallbackFunc</a>) (<a class=\"el\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45a\">ErrorType</a> err, const char *message)</td></tr>\n-<tr class=\"memdesc:aa1630f297a91dfc683dfcfddeeebb2ac\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">The error callback function type (default is \"printf\")  <br /></td></tr>\n-<tr class=\"separator:aa1630f297a91dfc683dfcfddeeebb2ac\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a2bd300390ebc686e71a3690f4a0b1726\" id=\"r_a2bd300390ebc686e71a3690f4a0b1726\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef void(*&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html#a2bd300390ebc686e71a3690f4a0b1726\">WarningCallbackFunc</a>) (const char *message)</td></tr>\n-<tr class=\"memdesc:a2bd300390ebc686e71a3690f4a0b1726\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">The warning callback function type (default is \"printf\")  <br /></td></tr>\n-<tr class=\"separator:a2bd300390ebc686e71a3690f4a0b1726\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-</table><table class=\"memberdecls\">\n-<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\n-Enumerations</h2></td></tr>\n-<tr class=\"memitem:ab0df38968e4f03a3f1f6d6df0f31f45a\" id=\"r_ab0df38968e4f03a3f1f6d6df0f31f45a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45a\">ErrorType</a> { <br />\n-&#160;&#160;<a class=\"el\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45aabeca977bc439b451aea1325f48a52a0b\">FAR_NO_ERROR</a>\n-, <br />\n-&#160;&#160;<a class=\"el\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45aa2a5bda2a3e25aa282462381f55284980\">FAR_FATAL_ERROR</a>\n-, <br />\n-&#160;&#160;<a class=\"el\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45aa3efe6cb2ec7e23769d53919dfb3291b5\">FAR_INTERNAL_CODING_ERROR</a>\n-, <br />\n-&#160;&#160;<a class=\"el\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45aa9b2839feb039937015e9668f601e4d32\">FAR_CODING_ERROR</a>\n-, <br />\n-&#160;&#160;<a class=\"el\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45aac565fa39d681e2766584dd87246c3bdd\">FAR_RUNTIME_ERROR</a>\n-<br />\n- }</td></tr>\n-<tr class=\"separator:ab0df38968e4f03a3f1f6d6df0f31f45a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-</table><table class=\"memberdecls\">\n-<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\n-Functions</h2></td></tr>\n-<tr class=\"memitem:a3ba4fd4ed534a5c9c32ad01fa88bb8d9\" id=\"r_a3ba4fd4ed534a5c9c32ad01fa88bb8d9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html#a3ba4fd4ed534a5c9c32ad01fa88bb8d9\">SetErrorCallback</a> (<a class=\"el\" href=\"a00908.html#aa1630f297a91dfc683dfcfddeeebb2ac\">ErrorCallbackFunc</a> func)</td></tr>\n-<tr class=\"memdesc:a3ba4fd4ed534a5c9c32ad01fa88bb8d9\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the error callback function (default is \"printf\")  <br /></td></tr>\n-<tr class=\"separator:a3ba4fd4ed534a5c9c32ad01fa88bb8d9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a73bbe6b41209e4c34234f192f0193a63\" id=\"r_a73bbe6b41209e4c34234f192f0193a63\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html#a73bbe6b41209e4c34234f192f0193a63\">SetWarningCallback</a> (<a class=\"el\" href=\"a00908.html#a2bd300390ebc686e71a3690f4a0b1726\">WarningCallbackFunc</a> func)</td></tr>\n-<tr class=\"memdesc:a73bbe6b41209e4c34234f192f0193a63\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the warning callback function (default is \"printf\")  <br /></td></tr>\n-<tr class=\"separator:a73bbe6b41209e4c34234f192f0193a63\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a25d51c3a61fb3dacded6e48d01fd2fdb\" id=\"r_a25d51c3a61fb3dacded6e48d01fd2fdb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html#a25d51c3a61fb3dacded6e48d01fd2fdb\">Error</a> (<a class=\"el\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45a\">ErrorType</a> err, const char *format,...)</td></tr>\n-<tr class=\"memdesc:a25d51c3a61fb3dacded6e48d01fd2fdb\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sends an OSD error with a message (internal use only)  <br /></td></tr>\n-<tr class=\"separator:a25d51c3a61fb3dacded6e48d01fd2fdb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a97d41b6faaf421937e6b82bd1c3067db\" id=\"r_a97d41b6faaf421937e6b82bd1c3067db\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html#a97d41b6faaf421937e6b82bd1c3067db\">Warning</a> (const char *format,...)</td></tr>\n-<tr class=\"memdesc:a97d41b6faaf421937e6b82bd1c3067db\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sends an OSD warning message (internal use only)  <br /></td></tr>\n-<tr class=\"separator:a97d41b6faaf421937e6b82bd1c3067db\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7f420b72a822828cfa8b0561c695a5cc.html\">far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00749.html\">error.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00749.html\">clEvaluator.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,48 +1,30 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bT_\by_\bp_\be_\bd_\be_\bf_\bs | _\bE_\bn_\bu_\bm_\be_\br_\ba_\bt_\bi_\bo_\bn_\bs | _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n-error.h File Reference\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+clEvaluator.h File Reference\n #include \"../version.h\"\n+#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bo_\bp_\be_\bn_\bc_\bl_\b._\bh\"\n+#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n+#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n+C\bCl\bla\bas\bss\bse\bes\bs\n+class \u00a0 _\bC_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n+\u00a0       OpenCL stencil table. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n+\u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br\n \u00a0\n-T\bTy\byp\bpe\bed\bde\bef\bfs\bs\n-typedef void(*\u00a0 _\bE_\br_\br_\bo_\br_\bC_\ba_\bl_\bl_\bb_\ba_\bc_\bk_\bF_\bu_\bn_\bc) (_\bE_\br_\br_\bo_\br_\bT_\by_\bp_\be err, const char *message)\n-\u00a0               The error callback function type (default is \"printf\")\n-\u00a0\n-typedef void(*\u00a0 _\bW_\ba_\br_\bn_\bi_\bn_\bg_\bC_\ba_\bl_\bl_\bb_\ba_\bc_\bk_\bF_\bu_\bn_\bc) (const char *message)\n-\u00a0               The warning callback function type (default is \"printf\")\n-\u00a0\n-E\bEn\bnu\bum\bme\ber\bra\bat\bti\bio\bon\bns\bs\n-enum \u00a0 _\bE_\br_\br_\bo_\br_\bT_\by_\bp_\be {\n-       \u00a0\u00a0_\bF_\bA_\bR_\b__\bN_\bO_\b__\bE_\bR_\bR_\bO_\bR ,\n-       \u00a0\u00a0_\bF_\bA_\bR_\b__\bF_\bA_\bT_\bA_\bL_\b__\bE_\bR_\bR_\bO_\bR ,\n-       \u00a0\u00a0_\bF_\bA_\bR_\b__\bI_\bN_\bT_\bE_\bR_\bN_\bA_\bL_\b__\bC_\bO_\bD_\bI_\bN_\bG_\b__\bE_\bR_\bR_\bO_\bR ,\n-       \u00a0\u00a0_\bF_\bA_\bR_\b__\bC_\bO_\bD_\bI_\bN_\bG_\b__\bE_\bR_\bR_\bO_\bR ,\n-       \u00a0\u00a0_\bF_\bA_\bR_\b__\bR_\bU_\bN_\bT_\bI_\bM_\bE_\b__\bE_\bR_\bR_\bO_\bR\n-       }\n-\u00a0\n-F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n-void\u00a0 _\bS_\be_\bt_\bE_\br_\br_\bo_\br_\bC_\ba_\bl_\bl_\bb_\ba_\bc_\bk (_\bE_\br_\br_\bo_\br_\bC_\ba_\bl_\bl_\bb_\ba_\bc_\bk_\bF_\bu_\bn_\bc func)\n-\u00a0     Sets the error callback function (default is \"printf\")\n-\u00a0\n-void\u00a0 _\bS_\be_\bt_\bW_\ba_\br_\bn_\bi_\bn_\bg_\bC_\ba_\bl_\bl_\bb_\ba_\bc_\bk (_\bW_\ba_\br_\bn_\bi_\bn_\bg_\bC_\ba_\bl_\bl_\bb_\ba_\bc_\bk_\bF_\bu_\bn_\bc func)\n-\u00a0     Sets the warning callback function (default is \"printf\")\n-\u00a0\n-void\u00a0 _\bE_\br_\br_\bo_\br (_\bE_\br_\br_\bo_\br_\bT_\by_\bp_\be err, const char *format,...)\n-\u00a0     Sends an OSD error with a message (internal use only)\n-\u00a0\n-void\u00a0 _\bW_\ba_\br_\bn_\bi_\bn_\bg (const char *format,...)\n-\u00a0     Sends an OSD warning message (internal use only)\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bf_\ba_\br\n-    * _\be_\br_\br_\bo_\br_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00749.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00749.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,15 +1,4 @@\n var a00749 = [\n-    [\"ErrorCallbackFunc\", \"a00749.html#aa1630f297a91dfc683dfcfddeeebb2ac\", null],\n-    [\"WarningCallbackFunc\", \"a00749.html#a2bd300390ebc686e71a3690f4a0b1726\", null],\n-    [\"ErrorType\", \"a00749.html#ab0df38968e4f03a3f1f6d6df0f31f45a\", [\n-        [\"FAR_NO_ERROR\", \"a00749.html#ab0df38968e4f03a3f1f6d6df0f31f45aabeca977bc439b451aea1325f48a52a0b\", null],\n-        [\"FAR_FATAL_ERROR\", \"a00749.html#ab0df38968e4f03a3f1f6d6df0f31f45aa2a5bda2a3e25aa282462381f55284980\", null],\n-        [\"FAR_INTERNAL_CODING_ERROR\", \"a00749.html#ab0df38968e4f03a3f1f6d6df0f31f45aa3efe6cb2ec7e23769d53919dfb3291b5\", null],\n-        [\"FAR_CODING_ERROR\", \"a00749.html#ab0df38968e4f03a3f1f6d6df0f31f45aa9b2839feb039937015e9668f601e4d32\", null],\n-        [\"FAR_RUNTIME_ERROR\", \"a00749.html#ab0df38968e4f03a3f1f6d6df0f31f45aac565fa39d681e2766584dd87246c3bdd\", null]\n-    ]],\n-    [\"Error\", \"a00749.html#a25d51c3a61fb3dacded6e48d01fd2fdb\", null],\n-    [\"SetErrorCallback\", \"a00749.html#a3ba4fd4ed534a5c9c32ad01fa88bb8d9\", null],\n-    [\"SetWarningCallback\", \"a00749.html#a73bbe6b41209e4c34234f192f0193a63\", null],\n-    [\"Warning\", \"a00749.html#a97d41b6faaf421937e6b82bd1c3067db\", null]\n+    [\"CLStencilTable\", \"a01145.html\", \"a01145\"],\n+    [\"CLEvaluator\", \"a01149.html\", \"a01149\"]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00749_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00749_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/far/error.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/osd/clEvaluator.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">error.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">clEvaluator.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00749.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2013 Pixar</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2015 Pixar</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -119,80 +119,1283 @@\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_FAR_ERROR_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_FAR_ERROR_H</span></div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_CL_EVALUATOR_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_CL_EVALUATOR_H</span></div>\n <div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n <div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n <div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span> </div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"keyword\">namespace </span>Far {</div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00035\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45a\">   35</a></span><span class=\"keyword\">typedef</span> <span class=\"keyword\">enum</span> {</div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45aabeca977bc439b451aea1325f48a52a0b\">   36</a></span>    <a class=\"code hl_enumvalue\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45aabeca977bc439b451aea1325f48a52a0b\">FAR_NO_ERROR</a>,               </div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45aa2a5bda2a3e25aa282462381f55284980\">   37</a></span>    <a class=\"code hl_enumvalue\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45aa2a5bda2a3e25aa282462381f55284980\">FAR_FATAL_ERROR</a>,            </div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45aa3efe6cb2ec7e23769d53919dfb3291b5\">   38</a></span>    <a class=\"code hl_enumvalue\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45aa3efe6cb2ec7e23769d53919dfb3291b5\">FAR_INTERNAL_CODING_ERROR</a>,  </div>\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45aa9b2839feb039937015e9668f601e4d32\">   39</a></span>    <a class=\"code hl_enumvalue\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45aa9b2839feb039937015e9668f601e4d32\">FAR_CODING_ERROR</a>,           </div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span>    <a class=\"code hl_enumvalue\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45aac565fa39d681e2766584dd87246c3bdd\">FAR_RUNTIME_ERROR</a>           </div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45aac565fa39d681e2766584dd87246c3bdd\">   41</a></span>} <a class=\"code hl_enumeration\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45a\">ErrorType</a>;</div>\n-</div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../osd/opencl.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../osd/types.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &quot;../osd/bufferDescriptor.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">namespace </span>Far {</div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span>    <span class=\"keyword\">class </span>PatchTable;</div>\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span>    <span class=\"keyword\">class </span>StencilTable;</div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span>    <span class=\"keyword\">class </span>LimitStencilTable;</div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span>}</div>\n <div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span> </div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span> </div>\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00908.html#aa1630f297a91dfc683dfcfddeeebb2ac\">   45</a></span><span class=\"keyword\">typedef</span> void (*<a class=\"code hl_typedef\" href=\"a00908.html#aa1630f297a91dfc683dfcfddeeebb2ac\">ErrorCallbackFunc</a>)(<a class=\"code hl_enumeration\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45a\">ErrorType</a> err, <span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span> *message);</div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span> </div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00908.html#a3ba4fd4ed534a5c9c32ad01fa88bb8d9\">   53</a></span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00908.html#a3ba4fd4ed534a5c9c32ad01fa88bb8d9\">SetErrorCallback</a>(<a class=\"code hl_typedef\" href=\"a00908.html#aa1630f297a91dfc683dfcfddeeebb2ac\">ErrorCallbackFunc</a> func);</div>\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span> </div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span> </div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00908.html#a2bd300390ebc686e71a3690f4a0b1726\">   57</a></span><span class=\"keyword\">typedef</span> void (*<a class=\"code hl_typedef\" href=\"a00908.html#a2bd300390ebc686e71a3690f4a0b1726\">WarningCallbackFunc</a>)(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span> *message);</div>\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span> </div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00908.html#a73bbe6b41209e4c34234f192f0193a63\">   65</a></span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00908.html#a73bbe6b41209e4c34234f192f0193a63\">SetWarningCallback</a>(<a class=\"code hl_typedef\" href=\"a00908.html#a2bd300390ebc686e71a3690f4a0b1726\">WarningCallbackFunc</a> func);</div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"keyword\">namespace </span>Osd {</div>\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00052\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01145.html\">   52</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01145.html\">CLStencilTable</a> {</div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00055\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01145.html#ad4e05c20d99b64b2160c1a0c96cb0c01\">   55</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01145.html\">CLStencilTable</a> *<a class=\"code hl_function\" href=\"a01145.html#ad4e05c20d99b64b2160c1a0c96cb0c01\">Create</a>(<a class=\"code hl_class\" href=\"a01065.html\">Far::StencilTable</a> <span class=\"keyword\">const</span> *stencilTable,</div>\n+<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span>                                  DEVICE_CONTEXT context) {</div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span>        <span class=\"keywordflow\">return</span> <span class=\"keyword\">new</span> <a class=\"code hl_class\" href=\"a01145.html\">CLStencilTable</a>(stencilTable, context-&gt;GetContext());</div>\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span> </div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00061\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01145.html#a474edc933635aca814471b8d48950a0e\">   61</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01145.html\">CLStencilTable</a> *<a class=\"code hl_function\" href=\"a01145.html#a474edc933635aca814471b8d48950a0e\">Create</a>(</div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span>        <a class=\"code hl_class\" href=\"a01081.html\">Far::LimitStencilTable</a> <span class=\"keyword\">const</span> *limitStencilTable,</div>\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>        DEVICE_CONTEXT context) {</div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span>        <span class=\"keywordflow\">return</span> <span class=\"keyword\">new</span> <a class=\"code hl_class\" href=\"a01145.html\">CLStencilTable</a>(limitStencilTable, context-&gt;GetContext());</div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span>    }</div>\n+</div>\n <div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span> </div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span> </div>\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span><span class=\"comment\">//  The following are intended for internal use only (and will eventually</span></div>\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span><span class=\"comment\">//  be moved within namespace internal)</span></div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01145.html#a33ca6bb1dba9f8e390a58395d164431e\">   67</a></span>    <a class=\"code hl_function\" href=\"a01145.html#a33ca6bb1dba9f8e390a58395d164431e\">CLStencilTable</a>(<a class=\"code hl_class\" href=\"a01065.html\">Far::StencilTable</a> <span class=\"keyword\">const</span> *stencilTable,</div>\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span>                   cl_context clContext);</div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01145.html#af2994e79cf93c872e39659321750351a\">   69</a></span>    <a class=\"code hl_function\" href=\"a01145.html#af2994e79cf93c872e39659321750351a\">CLStencilTable</a>(<a class=\"code hl_class\" href=\"a01081.html\">Far::LimitStencilTable</a> <span class=\"keyword\">const</span> *limitStencilTable,</div>\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span>                   cl_context clContext);</div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01145.html#ab84d9750ece4e75ae7a51e7d912df82b\">   71</a></span>    <a class=\"code hl_function\" href=\"a01145.html#ab84d9750ece4e75ae7a51e7d912df82b\">~CLStencilTable</a>();</div>\n <div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span> </div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00908.html#a25d51c3a61fb3dacded6e48d01fd2fdb\">   79</a></span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00908.html#a25d51c3a61fb3dacded6e48d01fd2fdb\">Error</a>(<a class=\"code hl_enumeration\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45a\">ErrorType</a> err, <span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span> *format, ...);</div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span> </div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00908.html#a97d41b6faaf421937e6b82bd1c3067db\">   85</a></span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00908.html#a97d41b6faaf421937e6b82bd1c3067db\">Warning</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span> *format, ...);</div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span> </div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span> </div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>} <span class=\"comment\">// end namespace</span></div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span> </div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span> </div>\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span> </div>\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// OPENSUBDIV3_FAR_ERROR_H</span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa00908_html_a25d51c3a61fb3dacded6e48d01fd2fdb\"><div class=\"ttname\"><a href=\"a00908.html#a25d51c3a61fb3dacded6e48d01fd2fdb\">OpenSubdiv::OPENSUBDIV_VERSION::Far::Error</a></div><div class=\"ttdeci\">void Error(ErrorType err, const char *format,...)</div><div class=\"ttdoc\">Sends an OSD error with a message (internal use only)</div></div>\n-<div class=\"ttc\" id=\"aa00908_html_a2bd300390ebc686e71a3690f4a0b1726\"><div class=\"ttname\"><a href=\"a00908.html#a2bd300390ebc686e71a3690f4a0b1726\">OpenSubdiv::OPENSUBDIV_VERSION::Far::WarningCallbackFunc</a></div><div class=\"ttdeci\">void(* WarningCallbackFunc)(const char *message)</div><div class=\"ttdoc\">The warning callback function type (default is &quot;printf&quot;)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00749_source.html#l00057\">error.h:57</a></div></div>\n-<div class=\"ttc\" id=\"aa00908_html_a3ba4fd4ed534a5c9c32ad01fa88bb8d9\"><div class=\"ttname\"><a href=\"a00908.html#a3ba4fd4ed534a5c9c32ad01fa88bb8d9\">OpenSubdiv::OPENSUBDIV_VERSION::Far::SetErrorCallback</a></div><div class=\"ttdeci\">void SetErrorCallback(ErrorCallbackFunc func)</div><div class=\"ttdoc\">Sets the error callback function (default is &quot;printf&quot;)</div></div>\n-<div class=\"ttc\" id=\"aa00908_html_a73bbe6b41209e4c34234f192f0193a63\"><div class=\"ttname\"><a href=\"a00908.html#a73bbe6b41209e4c34234f192f0193a63\">OpenSubdiv::OPENSUBDIV_VERSION::Far::SetWarningCallback</a></div><div class=\"ttdeci\">void SetWarningCallback(WarningCallbackFunc func)</div><div class=\"ttdoc\">Sets the warning callback function (default is &quot;printf&quot;)</div></div>\n-<div class=\"ttc\" id=\"aa00908_html_a97d41b6faaf421937e6b82bd1c3067db\"><div class=\"ttname\"><a href=\"a00908.html#a97d41b6faaf421937e6b82bd1c3067db\">OpenSubdiv::OPENSUBDIV_VERSION::Far::Warning</a></div><div class=\"ttdeci\">void Warning(const char *format,...)</div><div class=\"ttdoc\">Sends an OSD warning message (internal use only)</div></div>\n-<div class=\"ttc\" id=\"aa00908_html_aa1630f297a91dfc683dfcfddeeebb2ac\"><div class=\"ttname\"><a href=\"a00908.html#aa1630f297a91dfc683dfcfddeeebb2ac\">OpenSubdiv::OPENSUBDIV_VERSION::Far::ErrorCallbackFunc</a></div><div class=\"ttdeci\">void(* ErrorCallbackFunc)(ErrorType err, const char *message)</div><div class=\"ttdoc\">The error callback function type (default is &quot;printf&quot;)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00749_source.html#l00045\">error.h:45</a></div></div>\n-<div class=\"ttc\" id=\"aa00908_html_ab0df38968e4f03a3f1f6d6df0f31f45a\"><div class=\"ttname\"><a href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45a\">OpenSubdiv::OPENSUBDIV_VERSION::Far::ErrorType</a></div><div class=\"ttdeci\">ErrorType</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00749_source.html#l00035\">error.h:35</a></div></div>\n-<div class=\"ttc\" id=\"aa00908_html_ab0df38968e4f03a3f1f6d6df0f31f45aa2a5bda2a3e25aa282462381f55284980\"><div class=\"ttname\"><a href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45aa2a5bda2a3e25aa282462381f55284980\">OpenSubdiv::OPENSUBDIV_VERSION::Far::FAR_FATAL_ERROR</a></div><div class=\"ttdeci\">@ FAR_FATAL_ERROR</div><div class=\"ttdoc\">Issue a fatal error and end the program.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00749_source.html#l00037\">error.h:37</a></div></div>\n-<div class=\"ttc\" id=\"aa00908_html_ab0df38968e4f03a3f1f6d6df0f31f45aa3efe6cb2ec7e23769d53919dfb3291b5\"><div class=\"ttname\"><a href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45aa3efe6cb2ec7e23769d53919dfb3291b5\">OpenSubdiv::OPENSUBDIV_VERSION::Far::FAR_INTERNAL_CODING_ERROR</a></div><div class=\"ttdeci\">@ FAR_INTERNAL_CODING_ERROR</div><div class=\"ttdoc\">Issue an internal programming error, but continue execution.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00749_source.html#l00038\">error.h:38</a></div></div>\n-<div class=\"ttc\" id=\"aa00908_html_ab0df38968e4f03a3f1f6d6df0f31f45aa9b2839feb039937015e9668f601e4d32\"><div class=\"ttname\"><a href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45aa9b2839feb039937015e9668f601e4d32\">OpenSubdiv::OPENSUBDIV_VERSION::Far::FAR_CODING_ERROR</a></div><div class=\"ttdeci\">@ FAR_CODING_ERROR</div><div class=\"ttdoc\">Issue a generic programming error, but continue execution.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00749_source.html#l00039\">error.h:39</a></div></div>\n-<div class=\"ttc\" id=\"aa00908_html_ab0df38968e4f03a3f1f6d6df0f31f45aabeca977bc439b451aea1325f48a52a0b\"><div class=\"ttname\"><a href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45aabeca977bc439b451aea1325f48a52a0b\">OpenSubdiv::OPENSUBDIV_VERSION::Far::FAR_NO_ERROR</a></div><div class=\"ttdeci\">@ FAR_NO_ERROR</div><div class=\"ttdoc\">No error. Move along.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00749_source.html#l00036\">error.h:36</a></div></div>\n-<div class=\"ttc\" id=\"aa00908_html_ab0df38968e4f03a3f1f6d6df0f31f45aac565fa39d681e2766584dd87246c3bdd\"><div class=\"ttname\"><a href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45aac565fa39d681e2766584dd87246c3bdd\">OpenSubdiv::OPENSUBDIV_VERSION::Far::FAR_RUNTIME_ERROR</a></div><div class=\"ttdeci\">@ FAR_RUNTIME_ERROR</div><div class=\"ttdoc\">Issue a generic runtime error, but continue execution.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00749_source.html#l00041\">error.h:40</a></div></div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span>    <span class=\"comment\">// interfaces needed for CLComputeKernel</span></div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01145.html#a65e52572efdebb80844185aada8d5951\">   74</a></span>    cl_mem <a class=\"code hl_function\" href=\"a01145.html#a65e52572efdebb80844185aada8d5951\">GetSizesBuffer</a>()<span class=\"keyword\">      const </span>{ <span class=\"keywordflow\">return</span> _sizes; }</div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01145.html#a3bd38b85fd2bea1c4d2018d2f8e177a3\">   75</a></span>    cl_mem <a class=\"code hl_function\" href=\"a01145.html#a3bd38b85fd2bea1c4d2018d2f8e177a3\">GetOffsetsBuffer</a>()<span class=\"keyword\">    const </span>{ <span class=\"keywordflow\">return</span> _offsets; }</div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01145.html#a5cbc4ec76e497871b20b4ef91f5f054f\">   76</a></span>    cl_mem <a class=\"code hl_function\" href=\"a01145.html#a5cbc4ec76e497871b20b4ef91f5f054f\">GetIndicesBuffer</a>()<span class=\"keyword\">    const </span>{ <span class=\"keywordflow\">return</span> _indices; }</div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01145.html#af37e0ab1fae60f201db4eb21ff7e941e\">   77</a></span>    cl_mem <a class=\"code hl_function\" href=\"a01145.html#af37e0ab1fae60f201db4eb21ff7e941e\">GetWeightsBuffer</a>()<span class=\"keyword\">    const </span>{ <span class=\"keywordflow\">return</span> _weights; }</div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01145.html#aab6c794e109053815894e2314f05564b\">   78</a></span>    cl_mem <a class=\"code hl_function\" href=\"a01145.html#aab6c794e109053815894e2314f05564b\">GetDuWeightsBuffer</a>()<span class=\"keyword\">  const </span>{ <span class=\"keywordflow\">return</span> _duWeights; }</div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01145.html#aa1550324554767683ae2bf0317e6bad6\">   79</a></span>    cl_mem <a class=\"code hl_function\" href=\"a01145.html#aa1550324554767683ae2bf0317e6bad6\">GetDvWeightsBuffer</a>()<span class=\"keyword\">  const </span>{ <span class=\"keywordflow\">return</span> _dvWeights; }</div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01145.html#a9a1d122f4bea431331fa542cf6dee1f6\">   80</a></span>    cl_mem <a class=\"code hl_function\" href=\"a01145.html#a9a1d122f4bea431331fa542cf6dee1f6\">GetDuuWeightsBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _duuWeights; }</div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01145.html#aa79d14d151020f9298c742c3072e7fc9\">   81</a></span>    cl_mem <a class=\"code hl_function\" href=\"a01145.html#aa79d14d151020f9298c742c3072e7fc9\">GetDuvWeightsBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _duvWeights; }</div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01145.html#a015241b43d27300535376319ae7b6dc4\">   82</a></span>    cl_mem <a class=\"code hl_function\" href=\"a01145.html#a015241b43d27300535376319ae7b6dc4\">GetDvvWeightsBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _dvvWeights; }</div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01145.html#a65836d2070b943c8fecbad926d074de2\">   83</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01145.html#a65836d2070b943c8fecbad926d074de2\">GetNumStencils</a>()<span class=\"keyword\">         const </span>{ <span class=\"keywordflow\">return</span> _numStencils; }</div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span> </div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>    cl_mem _sizes;</div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>    cl_mem _offsets;</div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>    cl_mem _indices;</div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>    cl_mem _weights;</div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>    cl_mem _duWeights;</div>\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>    cl_mem _dvWeights;</div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>    cl_mem _duuWeights;</div>\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span>    cl_mem _duvWeights;</div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>    cl_mem _dvvWeights;</div>\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span>    <span class=\"keywordtype\">int</span> _numStencils;</div>\n+<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span> </div>\n+<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span><span class=\"comment\">// ---------------------------------------------------------------------------</span></div>\n+<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00100\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html\">  100</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01149.html\">CLEvaluator</a> {</div>\n+<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#a2c24b70c9312d8dff3fecb9ddea52c44\">  102</a></span>    <span class=\"keyword\">typedef</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_typedef\" href=\"a01149.html#a2c24b70c9312d8dff3fecb9ddea52c44\">Instantiatable</a>;</div>\n+<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span> </div>\n+<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00106\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#a3a2faa1170cedd851fea7266e0ff7eda\">  106</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01149.html\">CLEvaluator</a> *<a class=\"code hl_function\" href=\"a01149.html#a3a2faa1170cedd851fea7266e0ff7eda\">Create</a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span>                               <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span>                               <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span>                               <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span>                               DEVICE_CONTEXT deviceContext) {</div>\n+<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01149.html#a3a2faa1170cedd851fea7266e0ff7eda\">Create</a>(srcDesc, dstDesc, duDesc, dvDesc,</div>\n+<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span>                      deviceContext-&gt;GetContext(),</div>\n+<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span>                      deviceContext-&gt;GetCommandQueue());</div>\n+<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00116\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#a1243e4560da0f71a3dcd290772548d98\">  116</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01149.html\">CLEvaluator</a> * <a class=\"code hl_function\" href=\"a01149.html#a1243e4560da0f71a3dcd290772548d98\">Create</a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span>                                <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\">  118</span>                                <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span>                                <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span>                                cl_context clContext,</div>\n+<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\">  121</span>                                cl_command_queue clCommandQueue) {</div>\n+<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span>        <a class=\"code hl_class\" href=\"a01149.html\">CLEvaluator</a> *instance = <span class=\"keyword\">new</span> <a class=\"code hl_class\" href=\"a01149.html\">CLEvaluator</a>(clContext, clCommandQueue);</div>\n+<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span>        <span class=\"keywordflow\">if</span> (instance-&gt;<a class=\"code hl_function\" href=\"a01149.html#ade1086349c1a452f60bcf281383ceec2\">Compile</a>(srcDesc, dstDesc, duDesc, dvDesc))</div>\n+<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span>            <span class=\"keywordflow\">return</span> instance;</div>\n+<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span>        <span class=\"keyword\">delete</span> instance;</div>\n+<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span>        <span class=\"keywordflow\">return</span> NULL;</div>\n+<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span> </div>\n+<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00131\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#a49cef5f95d8dec6c11fc1dd62dcd7045\">  131</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01149.html\">CLEvaluator</a> *<a class=\"code hl_function\" href=\"a01149.html#a49cef5f95d8dec6c11fc1dd62dcd7045\">Create</a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\">  132</span>                               <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\">  133</span>                               <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\">  134</span>                               <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\">  135</span>                               <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\">  136</span>                               <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\">  137</span>                               <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\">  138</span>                               DEVICE_CONTEXT deviceContext) {</div>\n+<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\">  139</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01149.html#a3a2faa1170cedd851fea7266e0ff7eda\">Create</a>(srcDesc, dstDesc, duDesc, dvDesc,</div>\n+<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\">  140</span>                      duuDesc, duvDesc, dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\">  141</span>                      deviceContext-&gt;GetContext(),</div>\n+<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span>                      deviceContext-&gt;GetCommandQueue());</div>\n+<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\">  143</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\">  144</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00145\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#aae831ff91b8da1852052d65ffc032ff9\">  145</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01149.html\">CLEvaluator</a> * <a class=\"code hl_function\" href=\"a01149.html#aae831ff91b8da1852052d65ffc032ff9\">Create</a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\">  146</span>                                <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\">  147</span>                                <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\">  148</span>                                <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\">  149</span>                                <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\">  150</span>                                <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\">  151</span>                                <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\">  152</span>                                cl_context clContext,</div>\n+<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\">  153</span>                                cl_command_queue clCommandQueue) {</div>\n+<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\">  154</span>        <a class=\"code hl_class\" href=\"a01149.html\">CLEvaluator</a> *instance = <span class=\"keyword\">new</span> <a class=\"code hl_class\" href=\"a01149.html\">CLEvaluator</a>(clContext, clCommandQueue);</div>\n+<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\">  155</span>        <span class=\"keywordflow\">if</span> (instance-&gt;<a class=\"code hl_function\" href=\"a01149.html#ade1086349c1a452f60bcf281383ceec2\">Compile</a>(srcDesc, dstDesc, duDesc, dvDesc,</div>\n+<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\">  156</span>                              duuDesc, duvDesc, dvvDesc))</div>\n+<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\">  157</span>            <span class=\"keywordflow\">return</span> instance;</div>\n+<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\">  158</span>        <span class=\"keyword\">delete</span> instance;</div>\n+<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\">  159</span>        <span class=\"keywordflow\">return</span> NULL;</div>\n+<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\">  160</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\">  161</span> </div>\n+<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#adbb0aafb7db3284f164499e8007c4cac\">  163</a></span>    <a class=\"code hl_function\" href=\"a01149.html#adbb0aafb7db3284f164499e8007c4cac\">CLEvaluator</a>(cl_context context, cl_command_queue queue);</div>\n+<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\">  164</span> </div>\n+<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#a0852475f515ff2419bea208c2783742b\">  166</a></span>    <a class=\"code hl_function\" href=\"a01149.html#a0852475f515ff2419bea208c2783742b\">~CLEvaluator</a>();</div>\n+<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\">  167</span> </div>\n+<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\">  173</span> </div>\n+<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\">  217</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\">  218</span>              <span class=\"keyword\">typename</span> STENCIL_TABLE, <span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00219\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#a0f2d760bbb9a4ea58eaf6e2806d033ca\">  219</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#a0f2d760bbb9a4ea58eaf6e2806d033ca\">EvalStencils</a>(</div>\n+<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\">  220</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\">  221</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\">  222</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n+<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\">  223</span>        <a class=\"code hl_class\" href=\"a01149.html\">CLEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n+<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\">  224</span>        DEVICE_CONTEXT deviceContext,</div>\n+<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\">  225</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents=0,</div>\n+<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\">  226</span>        <span class=\"keyword\">const</span> cl_event* startEvents=NULL,</div>\n+<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\">  227</span>        cl_event* endEvent=NULL) {</div>\n+<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\">  228</span> </div>\n+<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\">  229</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\">  230</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01149.html#a0f2d760bbb9a4ea58eaf6e2806d033ca\">EvalStencils</a>(srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\">  231</span>                                          dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\">  232</span>                                          stencilTable,</div>\n+<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\">  233</span>                                          numStartEvents, startEvents, endEvent);</div>\n+<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\">  234</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\">  235</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n+<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\">  236</span>            instance = <a class=\"code hl_function\" href=\"a01149.html#a3a2faa1170cedd851fea7266e0ff7eda\">Create</a>(srcDesc, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\">  237</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\">  238</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\">  239</span>                              deviceContext);</div>\n+<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\">  240</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\">  241</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01149.html#a0f2d760bbb9a4ea58eaf6e2806d033ca\">EvalStencils</a>(srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\">  242</span>                                                dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\">  243</span>                                                stencilTable,</div>\n+<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\">  244</span>                                                numStartEvents, startEvents, endEvent);</div>\n+<div class=\"line\"><a id=\"l00245\" name=\"l00245\"></a><span class=\"lineno\">  245</span>                <span class=\"keyword\">delete</span> instance;</div>\n+<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\">  246</span>                <span class=\"keywordflow\">return</span> r;</div>\n+<div class=\"line\"><a id=\"l00247\" name=\"l00247\"></a><span class=\"lineno\">  247</span>            }</div>\n+<div class=\"line\"><a id=\"l00248\" name=\"l00248\"></a><span class=\"lineno\">  248</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00249\" name=\"l00249\"></a><span class=\"lineno\">  249</span>        }</div>\n+<div class=\"line\"><a id=\"l00250\" name=\"l00250\"></a><span class=\"lineno\">  250</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00251\" name=\"l00251\"></a><span class=\"lineno\">  251</span> </div>\n+<div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\">  307</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l00308\" name=\"l00308\"></a><span class=\"lineno\">  308</span>              <span class=\"keyword\">typename</span> STENCIL_TABLE, <span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00309\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00309\" name=\"l00309\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#a035ab75e105567802674d86736e0959a\">  309</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#a035ab75e105567802674d86736e0959a\">EvalStencils</a>(</div>\n+<div class=\"line\"><a id=\"l00310\" name=\"l00310\"></a><span class=\"lineno\">  310</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00311\" name=\"l00311\"></a><span class=\"lineno\">  311</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00312\" name=\"l00312\"></a><span class=\"lineno\">  312</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00313\" name=\"l00313\"></a><span class=\"lineno\">  313</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00314\" name=\"l00314\"></a><span class=\"lineno\">  314</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n+<div class=\"line\"><a id=\"l00315\" name=\"l00315\"></a><span class=\"lineno\">  315</span>        <a class=\"code hl_class\" href=\"a01149.html\">CLEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n+<div class=\"line\"><a id=\"l00316\" name=\"l00316\"></a><span class=\"lineno\">  316</span>        DEVICE_CONTEXT deviceContext,</div>\n+<div class=\"line\"><a id=\"l00317\" name=\"l00317\"></a><span class=\"lineno\">  317</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents=0,</div>\n+<div class=\"line\"><a id=\"l00318\" name=\"l00318\"></a><span class=\"lineno\">  318</span>        <span class=\"keyword\">const</span> cl_event* startEvents=NULL,</div>\n+<div class=\"line\"><a id=\"l00319\" name=\"l00319\"></a><span class=\"lineno\">  319</span>        cl_event* endEvent=NULL) {</div>\n+<div class=\"line\"><a id=\"l00320\" name=\"l00320\"></a><span class=\"lineno\">  320</span> </div>\n+<div class=\"line\"><a id=\"l00321\" name=\"l00321\"></a><span class=\"lineno\">  321</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l00322\" name=\"l00322\"></a><span class=\"lineno\">  322</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01149.html#a0f2d760bbb9a4ea58eaf6e2806d033ca\">EvalStencils</a>(srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l00323\" name=\"l00323\"></a><span class=\"lineno\">  323</span>                                          dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\">  324</span>                                          duBuffer,  duDesc,</div>\n+<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\">  325</span>                                          dvBuffer,  dvDesc,</div>\n+<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\">  326</span>                                          stencilTable,</div>\n+<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\">  327</span>                                          numStartEvents, startEvents, endEvent);</div>\n+<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\">  328</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\">  329</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n+<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\">  330</span>            instance = <a class=\"code hl_function\" href=\"a01149.html#a3a2faa1170cedd851fea7266e0ff7eda\">Create</a>(srcDesc, dstDesc, duDesc, dvDesc,</div>\n+<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\">  331</span>                              deviceContext);</div>\n+<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\">  332</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l00333\" name=\"l00333\"></a><span class=\"lineno\">  333</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01149.html#a0f2d760bbb9a4ea58eaf6e2806d033ca\">EvalStencils</a>(srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l00334\" name=\"l00334\"></a><span class=\"lineno\">  334</span>                                                dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00335\" name=\"l00335\"></a><span class=\"lineno\">  335</span>                                                duBuffer,  duDesc,</div>\n+<div class=\"line\"><a id=\"l00336\" name=\"l00336\"></a><span class=\"lineno\">  336</span>                                                dvBuffer,  dvDesc,</div>\n+<div class=\"line\"><a id=\"l00337\" name=\"l00337\"></a><span class=\"lineno\">  337</span>                                                stencilTable,</div>\n+<div class=\"line\"><a id=\"l00338\" name=\"l00338\"></a><span class=\"lineno\">  338</span>                                                numStartEvents, startEvents, endEvent);</div>\n+<div class=\"line\"><a id=\"l00339\" name=\"l00339\"></a><span class=\"lineno\">  339</span>                <span class=\"keyword\">delete</span> instance;</div>\n+<div class=\"line\"><a id=\"l00340\" name=\"l00340\"></a><span class=\"lineno\">  340</span>                <span class=\"keywordflow\">return</span> r;</div>\n+<div class=\"line\"><a id=\"l00341\" name=\"l00341\"></a><span class=\"lineno\">  341</span>            }</div>\n+<div class=\"line\"><a id=\"l00342\" name=\"l00342\"></a><span class=\"lineno\">  342</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00343\" name=\"l00343\"></a><span class=\"lineno\">  343</span>        }</div>\n+<div class=\"line\"><a id=\"l00344\" name=\"l00344\"></a><span class=\"lineno\">  344</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00345\" name=\"l00345\"></a><span class=\"lineno\">  345</span> </div>\n+<div class=\"line\"><a id=\"l00419\" name=\"l00419\"></a><span class=\"lineno\">  419</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l00420\" name=\"l00420\"></a><span class=\"lineno\">  420</span>              <span class=\"keyword\">typename</span> STENCIL_TABLE, <span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00421\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00421\" name=\"l00421\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#a804e77ddd54d0d006f2274d0450cca6b\">  421</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#a804e77ddd54d0d006f2274d0450cca6b\">EvalStencils</a>(</div>\n+<div class=\"line\"><a id=\"l00422\" name=\"l00422\"></a><span class=\"lineno\">  422</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00423\" name=\"l00423\"></a><span class=\"lineno\">  423</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00424\" name=\"l00424\"></a><span class=\"lineno\">  424</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00425\" name=\"l00425\"></a><span class=\"lineno\">  425</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00426\" name=\"l00426\"></a><span class=\"lineno\">  426</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l00427\" name=\"l00427\"></a><span class=\"lineno\">  427</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l00428\" name=\"l00428\"></a><span class=\"lineno\">  428</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00429\" name=\"l00429\"></a><span class=\"lineno\">  429</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n+<div class=\"line\"><a id=\"l00430\" name=\"l00430\"></a><span class=\"lineno\">  430</span>        <a class=\"code hl_class\" href=\"a01149.html\">CLEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n+<div class=\"line\"><a id=\"l00431\" name=\"l00431\"></a><span class=\"lineno\">  431</span>        DEVICE_CONTEXT deviceContext,</div>\n+<div class=\"line\"><a id=\"l00432\" name=\"l00432\"></a><span class=\"lineno\">  432</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents=0,</div>\n+<div class=\"line\"><a id=\"l00433\" name=\"l00433\"></a><span class=\"lineno\">  433</span>        <span class=\"keyword\">const</span> cl_event* startEvents=NULL,</div>\n+<div class=\"line\"><a id=\"l00434\" name=\"l00434\"></a><span class=\"lineno\">  434</span>        cl_event* endEvent=NULL) {</div>\n+<div class=\"line\"><a id=\"l00435\" name=\"l00435\"></a><span class=\"lineno\">  435</span> </div>\n+<div class=\"line\"><a id=\"l00436\" name=\"l00436\"></a><span class=\"lineno\">  436</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l00437\" name=\"l00437\"></a><span class=\"lineno\">  437</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01149.html#a0f2d760bbb9a4ea58eaf6e2806d033ca\">EvalStencils</a>(srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l00438\" name=\"l00438\"></a><span class=\"lineno\">  438</span>                                          dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00439\" name=\"l00439\"></a><span class=\"lineno\">  439</span>                                          duBuffer,  duDesc,</div>\n+<div class=\"line\"><a id=\"l00440\" name=\"l00440\"></a><span class=\"lineno\">  440</span>                                          dvBuffer,  dvDesc,</div>\n+<div class=\"line\"><a id=\"l00441\" name=\"l00441\"></a><span class=\"lineno\">  441</span>                                          duuBuffer, duuDesc,</div>\n+<div class=\"line\"><a id=\"l00442\" name=\"l00442\"></a><span class=\"lineno\">  442</span>                                          duvBuffer, duvDesc,</div>\n+<div class=\"line\"><a id=\"l00443\" name=\"l00443\"></a><span class=\"lineno\">  443</span>                                          dvvBuffer, dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00444\" name=\"l00444\"></a><span class=\"lineno\">  444</span>                                          stencilTable,</div>\n+<div class=\"line\"><a id=\"l00445\" name=\"l00445\"></a><span class=\"lineno\">  445</span>                                          numStartEvents, startEvents, endEvent);</div>\n+<div class=\"line\"><a id=\"l00446\" name=\"l00446\"></a><span class=\"lineno\">  446</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00447\" name=\"l00447\"></a><span class=\"lineno\">  447</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n+<div class=\"line\"><a id=\"l00448\" name=\"l00448\"></a><span class=\"lineno\">  448</span>            instance = <a class=\"code hl_function\" href=\"a01149.html#a3a2faa1170cedd851fea7266e0ff7eda\">Create</a>(srcDesc, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00449\" name=\"l00449\"></a><span class=\"lineno\">  449</span>                              duDesc, dvDesc,</div>\n+<div class=\"line\"><a id=\"l00450\" name=\"l00450\"></a><span class=\"lineno\">  450</span>                              duuDesc, duvDesc, dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00451\" name=\"l00451\"></a><span class=\"lineno\">  451</span>                              deviceContext);</div>\n+<div class=\"line\"><a id=\"l00452\" name=\"l00452\"></a><span class=\"lineno\">  452</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l00453\" name=\"l00453\"></a><span class=\"lineno\">  453</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01149.html#a0f2d760bbb9a4ea58eaf6e2806d033ca\">EvalStencils</a>(srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l00454\" name=\"l00454\"></a><span class=\"lineno\">  454</span>                                                dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00455\" name=\"l00455\"></a><span class=\"lineno\">  455</span>                                                duBuffer,  duDesc,</div>\n+<div class=\"line\"><a id=\"l00456\" name=\"l00456\"></a><span class=\"lineno\">  456</span>                                                dvBuffer,  dvDesc,</div>\n+<div class=\"line\"><a id=\"l00457\" name=\"l00457\"></a><span class=\"lineno\">  457</span>                                                duuBuffer, duuDesc,</div>\n+<div class=\"line\"><a id=\"l00458\" name=\"l00458\"></a><span class=\"lineno\">  458</span>                                                duvBuffer, duvDesc,</div>\n+<div class=\"line\"><a id=\"l00459\" name=\"l00459\"></a><span class=\"lineno\">  459</span>                                                dvvBuffer, dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00460\" name=\"l00460\"></a><span class=\"lineno\">  460</span>                                                stencilTable,</div>\n+<div class=\"line\"><a id=\"l00461\" name=\"l00461\"></a><span class=\"lineno\">  461</span>                                                numStartEvents, startEvents, endEvent);</div>\n+<div class=\"line\"><a id=\"l00462\" name=\"l00462\"></a><span class=\"lineno\">  462</span>                <span class=\"keyword\">delete</span> instance;</div>\n+<div class=\"line\"><a id=\"l00463\" name=\"l00463\"></a><span class=\"lineno\">  463</span>                <span class=\"keywordflow\">return</span> r;</div>\n+<div class=\"line\"><a id=\"l00464\" name=\"l00464\"></a><span class=\"lineno\">  464</span>            }</div>\n+<div class=\"line\"><a id=\"l00465\" name=\"l00465\"></a><span class=\"lineno\">  465</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00466\" name=\"l00466\"></a><span class=\"lineno\">  466</span>        }</div>\n+<div class=\"line\"><a id=\"l00467\" name=\"l00467\"></a><span class=\"lineno\">  467</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00468\" name=\"l00468\"></a><span class=\"lineno\">  468</span> </div>\n+<div class=\"line\"><a id=\"l00499\" name=\"l00499\"></a><span class=\"lineno\">  499</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00500\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00500\" name=\"l00500\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#ac9a39efadbe573a03ffe5971586f72e8\">  500</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#ac9a39efadbe573a03ffe5971586f72e8\">EvalStencils</a>(</div>\n+<div class=\"line\"><a id=\"l00501\" name=\"l00501\"></a><span class=\"lineno\">  501</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00502\" name=\"l00502\"></a><span class=\"lineno\">  502</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00503\" name=\"l00503\"></a><span class=\"lineno\">  503</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n+<div class=\"line\"><a id=\"l00504\" name=\"l00504\"></a><span class=\"lineno\">  504</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents=0,</div>\n+<div class=\"line\"><a id=\"l00505\" name=\"l00505\"></a><span class=\"lineno\">  505</span>        <span class=\"keyword\">const</span> cl_event* startEvents=NULL,</div>\n+<div class=\"line\"><a id=\"l00506\" name=\"l00506\"></a><span class=\"lineno\">  506</span>        cl_event* endEvent=NULL)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00507\" name=\"l00507\"></a><span class=\"lineno\">  507</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01149.html#a0f2d760bbb9a4ea58eaf6e2806d033ca\">EvalStencils</a>(srcBuffer-&gt;BindCLBuffer(_clCommandQueue), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00508\" name=\"l00508\"></a><span class=\"lineno\">  508</span>                            dstBuffer-&gt;BindCLBuffer(_clCommandQueue), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00509\" name=\"l00509\"></a><span class=\"lineno\">  509</span>                            stencilTable-&gt;GetSizesBuffer(),</div>\n+<div class=\"line\"><a id=\"l00510\" name=\"l00510\"></a><span class=\"lineno\">  510</span>                            stencilTable-&gt;GetOffsetsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00511\" name=\"l00511\"></a><span class=\"lineno\">  511</span>                            stencilTable-&gt;GetIndicesBuffer(),</div>\n+<div class=\"line\"><a id=\"l00512\" name=\"l00512\"></a><span class=\"lineno\">  512</span>                            stencilTable-&gt;GetWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00513\" name=\"l00513\"></a><span class=\"lineno\">  513</span>                            0,</div>\n+<div class=\"line\"><a id=\"l00514\" name=\"l00514\"></a><span class=\"lineno\">  514</span>                            stencilTable-&gt;GetNumStencils(),</div>\n+<div class=\"line\"><a id=\"l00515\" name=\"l00515\"></a><span class=\"lineno\">  515</span>                            numStartEvents, startEvents, endEvent);</div>\n+<div class=\"line\"><a id=\"l00516\" name=\"l00516\"></a><span class=\"lineno\">  516</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00517\" name=\"l00517\"></a><span class=\"lineno\">  517</span> </div>\n+<div class=\"line\"><a id=\"l00560\" name=\"l00560\"></a><span class=\"lineno\">  560</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00561\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00561\" name=\"l00561\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#a26fd58275b838dbf0da96410269a41ef\">  561</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#a26fd58275b838dbf0da96410269a41ef\">EvalStencils</a>(</div>\n+<div class=\"line\"><a id=\"l00562\" name=\"l00562\"></a><span class=\"lineno\">  562</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00563\" name=\"l00563\"></a><span class=\"lineno\">  563</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00564\" name=\"l00564\"></a><span class=\"lineno\">  564</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00565\" name=\"l00565\"></a><span class=\"lineno\">  565</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00566\" name=\"l00566\"></a><span class=\"lineno\">  566</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n+<div class=\"line\"><a id=\"l00567\" name=\"l00567\"></a><span class=\"lineno\">  567</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents=0,</div>\n+<div class=\"line\"><a id=\"l00568\" name=\"l00568\"></a><span class=\"lineno\">  568</span>        <span class=\"keyword\">const</span> cl_event* startEvents=NULL,</div>\n+<div class=\"line\"><a id=\"l00569\" name=\"l00569\"></a><span class=\"lineno\">  569</span>        cl_event* endEvent=NULL)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00570\" name=\"l00570\"></a><span class=\"lineno\">  570</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01149.html#a0f2d760bbb9a4ea58eaf6e2806d033ca\">EvalStencils</a>(srcBuffer-&gt;BindCLBuffer(_clCommandQueue), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00571\" name=\"l00571\"></a><span class=\"lineno\">  571</span>                            dstBuffer-&gt;BindCLBuffer(_clCommandQueue), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00572\" name=\"l00572\"></a><span class=\"lineno\">  572</span>                            duBuffer-&gt;BindCLBuffer(_clCommandQueue), duDesc,</div>\n+<div class=\"line\"><a id=\"l00573\" name=\"l00573\"></a><span class=\"lineno\">  573</span>                            dvBuffer-&gt;BindCLBuffer(_clCommandQueue), dvDesc,</div>\n+<div class=\"line\"><a id=\"l00574\" name=\"l00574\"></a><span class=\"lineno\">  574</span>                            stencilTable-&gt;GetSizesBuffer(),</div>\n+<div class=\"line\"><a id=\"l00575\" name=\"l00575\"></a><span class=\"lineno\">  575</span>                            stencilTable-&gt;GetOffsetsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00576\" name=\"l00576\"></a><span class=\"lineno\">  576</span>                            stencilTable-&gt;GetIndicesBuffer(),</div>\n+<div class=\"line\"><a id=\"l00577\" name=\"l00577\"></a><span class=\"lineno\">  577</span>                            stencilTable-&gt;GetWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00578\" name=\"l00578\"></a><span class=\"lineno\">  578</span>                            stencilTable-&gt;GetDuWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00579\" name=\"l00579\"></a><span class=\"lineno\">  579</span>                            stencilTable-&gt;GetDvWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00580\" name=\"l00580\"></a><span class=\"lineno\">  580</span>                            0,</div>\n+<div class=\"line\"><a id=\"l00581\" name=\"l00581\"></a><span class=\"lineno\">  581</span>                            stencilTable-&gt;GetNumStencils(),</div>\n+<div class=\"line\"><a id=\"l00582\" name=\"l00582\"></a><span class=\"lineno\">  582</span>                            numStartEvents, startEvents, endEvent);</div>\n+<div class=\"line\"><a id=\"l00583\" name=\"l00583\"></a><span class=\"lineno\">  583</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00584\" name=\"l00584\"></a><span class=\"lineno\">  584</span> </div>\n+<div class=\"line\"><a id=\"l00645\" name=\"l00645\"></a><span class=\"lineno\">  645</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00646\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00646\" name=\"l00646\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#a74b2f41060f4bc17f3522444d30126b6\">  646</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#a74b2f41060f4bc17f3522444d30126b6\">EvalStencils</a>(</div>\n+<div class=\"line\"><a id=\"l00647\" name=\"l00647\"></a><span class=\"lineno\">  647</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00648\" name=\"l00648\"></a><span class=\"lineno\">  648</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00649\" name=\"l00649\"></a><span class=\"lineno\">  649</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00650\" name=\"l00650\"></a><span class=\"lineno\">  650</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00651\" name=\"l00651\"></a><span class=\"lineno\">  651</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l00652\" name=\"l00652\"></a><span class=\"lineno\">  652</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l00653\" name=\"l00653\"></a><span class=\"lineno\">  653</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00654\" name=\"l00654\"></a><span class=\"lineno\">  654</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n+<div class=\"line\"><a id=\"l00655\" name=\"l00655\"></a><span class=\"lineno\">  655</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents=0,</div>\n+<div class=\"line\"><a id=\"l00656\" name=\"l00656\"></a><span class=\"lineno\">  656</span>        <span class=\"keyword\">const</span> cl_event* startEvents=NULL,</div>\n+<div class=\"line\"><a id=\"l00657\" name=\"l00657\"></a><span class=\"lineno\">  657</span>        cl_event* endEvent=NULL)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00658\" name=\"l00658\"></a><span class=\"lineno\">  658</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01149.html#a0f2d760bbb9a4ea58eaf6e2806d033ca\">EvalStencils</a>(srcBuffer-&gt;BindCLBuffer(_clCommandQueue), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00659\" name=\"l00659\"></a><span class=\"lineno\">  659</span>                            dstBuffer-&gt;BindCLBuffer(_clCommandQueue), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00660\" name=\"l00660\"></a><span class=\"lineno\">  660</span>                            duBuffer-&gt;BindCLBuffer(_clCommandQueue), duDesc,</div>\n+<div class=\"line\"><a id=\"l00661\" name=\"l00661\"></a><span class=\"lineno\">  661</span>                            dvBuffer-&gt;BindCLBuffer(_clCommandQueue), dvDesc,</div>\n+<div class=\"line\"><a id=\"l00662\" name=\"l00662\"></a><span class=\"lineno\">  662</span>                            duuBuffer-&gt;BindCLBuffer(_clCommandQueue), duuDesc,</div>\n+<div class=\"line\"><a id=\"l00663\" name=\"l00663\"></a><span class=\"lineno\">  663</span>                            duvBuffer-&gt;BindCLBuffer(_clCommandQueue), duvDesc,</div>\n+<div class=\"line\"><a id=\"l00664\" name=\"l00664\"></a><span class=\"lineno\">  664</span>                            dvvBuffer-&gt;BindCLBuffer(_clCommandQueue), dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00665\" name=\"l00665\"></a><span class=\"lineno\">  665</span>                            stencilTable-&gt;GetSizesBuffer(),</div>\n+<div class=\"line\"><a id=\"l00666\" name=\"l00666\"></a><span class=\"lineno\">  666</span>                            stencilTable-&gt;GetOffsetsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00667\" name=\"l00667\"></a><span class=\"lineno\">  667</span>                            stencilTable-&gt;GetIndicesBuffer(),</div>\n+<div class=\"line\"><a id=\"l00668\" name=\"l00668\"></a><span class=\"lineno\">  668</span>                            stencilTable-&gt;GetWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00669\" name=\"l00669\"></a><span class=\"lineno\">  669</span>                            stencilTable-&gt;GetDuWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00670\" name=\"l00670\"></a><span class=\"lineno\">  670</span>                            stencilTable-&gt;GetDvWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00671\" name=\"l00671\"></a><span class=\"lineno\">  671</span>                            stencilTable-&gt;GetDuuWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00672\" name=\"l00672\"></a><span class=\"lineno\">  672</span>                            stencilTable-&gt;GetDuvWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00673\" name=\"l00673\"></a><span class=\"lineno\">  673</span>                            stencilTable-&gt;GetDvvWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00674\" name=\"l00674\"></a><span class=\"lineno\">  674</span>                            0,</div>\n+<div class=\"line\"><a id=\"l00675\" name=\"l00675\"></a><span class=\"lineno\">  675</span>                            stencilTable-&gt;GetNumStencils(),</div>\n+<div class=\"line\"><a id=\"l00676\" name=\"l00676\"></a><span class=\"lineno\">  676</span>                            numStartEvents, startEvents, endEvent);</div>\n+<div class=\"line\"><a id=\"l00677\" name=\"l00677\"></a><span class=\"lineno\">  677</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00678\" name=\"l00678\"></a><span class=\"lineno\">  678</span> </div>\n+<div class=\"line\"><a id=\"l00681\" name=\"l00681\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#a81c2668b311eec00fd35e1451e7132b7\">  681</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#a81c2668b311eec00fd35e1451e7132b7\">EvalStencils</a>(cl_mem src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00682\" name=\"l00682\"></a><span class=\"lineno\">  682</span>                      cl_mem dst, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00683\" name=\"l00683\"></a><span class=\"lineno\">  683</span>                      cl_mem sizes,</div>\n+<div class=\"line\"><a id=\"l00684\" name=\"l00684\"></a><span class=\"lineno\">  684</span>                      cl_mem offsets,</div>\n+<div class=\"line\"><a id=\"l00685\" name=\"l00685\"></a><span class=\"lineno\">  685</span>                      cl_mem indices,</div>\n+<div class=\"line\"><a id=\"l00686\" name=\"l00686\"></a><span class=\"lineno\">  686</span>                      cl_mem weights,</div>\n+<div class=\"line\"><a id=\"l00687\" name=\"l00687\"></a><span class=\"lineno\">  687</span>                      <span class=\"keywordtype\">int</span> start,</div>\n+<div class=\"line\"><a id=\"l00688\" name=\"l00688\"></a><span class=\"lineno\">  688</span>                      <span class=\"keywordtype\">int</span> end,</div>\n+<div class=\"line\"><a id=\"l00689\" name=\"l00689\"></a><span class=\"lineno\">  689</span>                      <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents=0,</div>\n+<div class=\"line\"><a id=\"l00690\" name=\"l00690\"></a><span class=\"lineno\">  690</span>                      <span class=\"keyword\">const</span> cl_event* startEvents=NULL,</div>\n+<div class=\"line\"><a id=\"l00691\" name=\"l00691\"></a><span class=\"lineno\">  691</span>                      cl_event* endEvent=NULL) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00692\" name=\"l00692\"></a><span class=\"lineno\">  692</span> </div>\n+<div class=\"line\"><a id=\"l00741\" name=\"l00741\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#a09c5fcdc9e1230c625d3205008d41c08\">  741</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#a09c5fcdc9e1230c625d3205008d41c08\">EvalStencils</a>(cl_mem src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00742\" name=\"l00742\"></a><span class=\"lineno\">  742</span>                      cl_mem dst, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00743\" name=\"l00743\"></a><span class=\"lineno\">  743</span>                      cl_mem du,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00744\" name=\"l00744\"></a><span class=\"lineno\">  744</span>                      cl_mem dv,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00745\" name=\"l00745\"></a><span class=\"lineno\">  745</span>                      cl_mem sizes,</div>\n+<div class=\"line\"><a id=\"l00746\" name=\"l00746\"></a><span class=\"lineno\">  746</span>                      cl_mem offsets,</div>\n+<div class=\"line\"><a id=\"l00747\" name=\"l00747\"></a><span class=\"lineno\">  747</span>                      cl_mem indices,</div>\n+<div class=\"line\"><a id=\"l00748\" name=\"l00748\"></a><span class=\"lineno\">  748</span>                      cl_mem weights,</div>\n+<div class=\"line\"><a id=\"l00749\" name=\"l00749\"></a><span class=\"lineno\">  749</span>                      cl_mem duWeights,</div>\n+<div class=\"line\"><a id=\"l00750\" name=\"l00750\"></a><span class=\"lineno\">  750</span>                      cl_mem dvWeights,</div>\n+<div class=\"line\"><a id=\"l00751\" name=\"l00751\"></a><span class=\"lineno\">  751</span>                      <span class=\"keywordtype\">int</span> start,</div>\n+<div class=\"line\"><a id=\"l00752\" name=\"l00752\"></a><span class=\"lineno\">  752</span>                      <span class=\"keywordtype\">int</span> end,</div>\n+<div class=\"line\"><a id=\"l00753\" name=\"l00753\"></a><span class=\"lineno\">  753</span>                      <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents=0,</div>\n+<div class=\"line\"><a id=\"l00754\" name=\"l00754\"></a><span class=\"lineno\">  754</span>                      <span class=\"keyword\">const</span> cl_event* startEvents=NULL,</div>\n+<div class=\"line\"><a id=\"l00755\" name=\"l00755\"></a><span class=\"lineno\">  755</span>                      cl_event* endEvent=NULL) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00756\" name=\"l00756\"></a><span class=\"lineno\">  756</span> </div>\n+<div class=\"line\"><a id=\"l00823\" name=\"l00823\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#a5d554da3e958f90c0c39296029b69c4e\">  823</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#a5d554da3e958f90c0c39296029b69c4e\">EvalStencils</a>(cl_mem src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00824\" name=\"l00824\"></a><span class=\"lineno\">  824</span>                      cl_mem dst, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00825\" name=\"l00825\"></a><span class=\"lineno\">  825</span>                      cl_mem du,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00826\" name=\"l00826\"></a><span class=\"lineno\">  826</span>                      cl_mem dv,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00827\" name=\"l00827\"></a><span class=\"lineno\">  827</span>                      cl_mem duu, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l00828\" name=\"l00828\"></a><span class=\"lineno\">  828</span>                      cl_mem duv, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l00829\" name=\"l00829\"></a><span class=\"lineno\">  829</span>                      cl_mem dvv, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00830\" name=\"l00830\"></a><span class=\"lineno\">  830</span>                      cl_mem sizes,</div>\n+<div class=\"line\"><a id=\"l00831\" name=\"l00831\"></a><span class=\"lineno\">  831</span>                      cl_mem offsets,</div>\n+<div class=\"line\"><a id=\"l00832\" name=\"l00832\"></a><span class=\"lineno\">  832</span>                      cl_mem indices,</div>\n+<div class=\"line\"><a id=\"l00833\" name=\"l00833\"></a><span class=\"lineno\">  833</span>                      cl_mem weights,</div>\n+<div class=\"line\"><a id=\"l00834\" name=\"l00834\"></a><span class=\"lineno\">  834</span>                      cl_mem duWeights,</div>\n+<div class=\"line\"><a id=\"l00835\" name=\"l00835\"></a><span class=\"lineno\">  835</span>                      cl_mem dvWeights,</div>\n+<div class=\"line\"><a id=\"l00836\" name=\"l00836\"></a><span class=\"lineno\">  836</span>                      cl_mem duuWeights,</div>\n+<div class=\"line\"><a id=\"l00837\" name=\"l00837\"></a><span class=\"lineno\">  837</span>                      cl_mem duvWeights,</div>\n+<div class=\"line\"><a id=\"l00838\" name=\"l00838\"></a><span class=\"lineno\">  838</span>                      cl_mem dvvWeights,</div>\n+<div class=\"line\"><a id=\"l00839\" name=\"l00839\"></a><span class=\"lineno\">  839</span>                      <span class=\"keywordtype\">int</span> start,</div>\n+<div class=\"line\"><a id=\"l00840\" name=\"l00840\"></a><span class=\"lineno\">  840</span>                      <span class=\"keywordtype\">int</span> end,</div>\n+<div class=\"line\"><a id=\"l00841\" name=\"l00841\"></a><span class=\"lineno\">  841</span>                      <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents=0,</div>\n+<div class=\"line\"><a id=\"l00842\" name=\"l00842\"></a><span class=\"lineno\">  842</span>                      <span class=\"keyword\">const</span> cl_event* startEvents=NULL,</div>\n+<div class=\"line\"><a id=\"l00843\" name=\"l00843\"></a><span class=\"lineno\">  843</span>                      cl_event* endEvent=NULL) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00844\" name=\"l00844\"></a><span class=\"lineno\">  844</span> </div>\n+<div class=\"line\"><a id=\"l00850\" name=\"l00850\"></a><span class=\"lineno\">  850</span> </div>\n+<div class=\"line\"><a id=\"l00899\" name=\"l00899\"></a><span class=\"lineno\">  899</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l00900\" name=\"l00900\"></a><span class=\"lineno\">  900</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE,</div>\n+<div class=\"line\"><a id=\"l00901\" name=\"l00901\"></a><span class=\"lineno\">  901</span>              <span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00902\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00902\" name=\"l00902\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#ab5cae7e895f2efe955b27ae3dafccfd2\">  902</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#ab5cae7e895f2efe955b27ae3dafccfd2\">EvalPatches</a>(</div>\n+<div class=\"line\"><a id=\"l00903\" name=\"l00903\"></a><span class=\"lineno\">  903</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00904\" name=\"l00904\"></a><span class=\"lineno\">  904</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00905\" name=\"l00905\"></a><span class=\"lineno\">  905</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00906\" name=\"l00906\"></a><span class=\"lineno\">  906</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l00907\" name=\"l00907\"></a><span class=\"lineno\">  907</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l00908\" name=\"l00908\"></a><span class=\"lineno\">  908</span>        <a class=\"code hl_class\" href=\"a01149.html\">CLEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n+<div class=\"line\"><a id=\"l00909\" name=\"l00909\"></a><span class=\"lineno\">  909</span>        DEVICE_CONTEXT deviceContext,</div>\n+<div class=\"line\"><a id=\"l00910\" name=\"l00910\"></a><span class=\"lineno\">  910</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents=0,</div>\n+<div class=\"line\"><a id=\"l00911\" name=\"l00911\"></a><span class=\"lineno\">  911</span>        <span class=\"keyword\">const</span> cl_event* startEvents=NULL,</div>\n+<div class=\"line\"><a id=\"l00912\" name=\"l00912\"></a><span class=\"lineno\">  912</span>        cl_event* endEvent=NULL) {</div>\n+<div class=\"line\"><a id=\"l00913\" name=\"l00913\"></a><span class=\"lineno\">  913</span> </div>\n+<div class=\"line\"><a id=\"l00914\" name=\"l00914\"></a><span class=\"lineno\">  914</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l00915\" name=\"l00915\"></a><span class=\"lineno\">  915</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01149.html#ab5cae7e895f2efe955b27ae3dafccfd2\">EvalPatches</a>(srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l00916\" name=\"l00916\"></a><span class=\"lineno\">  916</span>                                         dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00917\" name=\"l00917\"></a><span class=\"lineno\">  917</span>                                         numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l00918\" name=\"l00918\"></a><span class=\"lineno\">  918</span>                                         patchTable,</div>\n+<div class=\"line\"><a id=\"l00919\" name=\"l00919\"></a><span class=\"lineno\">  919</span>                                         numStartEvents, startEvents, endEvent);</div>\n+<div class=\"line\"><a id=\"l00920\" name=\"l00920\"></a><span class=\"lineno\">  920</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00921\" name=\"l00921\"></a><span class=\"lineno\">  921</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n+<div class=\"line\"><a id=\"l00922\" name=\"l00922\"></a><span class=\"lineno\">  922</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00923\" name=\"l00923\"></a><span class=\"lineno\">  923</span>            instance = <a class=\"code hl_function\" href=\"a01149.html#a3a2faa1170cedd851fea7266e0ff7eda\">Create</a>(srcDesc, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00924\" name=\"l00924\"></a><span class=\"lineno\">  924</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l00925\" name=\"l00925\"></a><span class=\"lineno\">  925</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l00926\" name=\"l00926\"></a><span class=\"lineno\">  926</span>                              deviceContext);</div>\n+<div class=\"line\"><a id=\"l00927\" name=\"l00927\"></a><span class=\"lineno\">  927</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l00928\" name=\"l00928\"></a><span class=\"lineno\">  928</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01149.html#ab5cae7e895f2efe955b27ae3dafccfd2\">EvalPatches</a>(srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l00929\" name=\"l00929\"></a><span class=\"lineno\">  929</span>                                               dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00930\" name=\"l00930\"></a><span class=\"lineno\">  930</span>                                               numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l00931\" name=\"l00931\"></a><span class=\"lineno\">  931</span>                                               patchTable,</div>\n+<div class=\"line\"><a id=\"l00932\" name=\"l00932\"></a><span class=\"lineno\">  932</span>                                               numStartEvents, startEvents, endEvent);</div>\n+<div class=\"line\"><a id=\"l00933\" name=\"l00933\"></a><span class=\"lineno\">  933</span>                <span class=\"keyword\">delete</span> instance;</div>\n+<div class=\"line\"><a id=\"l00934\" name=\"l00934\"></a><span class=\"lineno\">  934</span>                <span class=\"keywordflow\">return</span> r;</div>\n+<div class=\"line\"><a id=\"l00935\" name=\"l00935\"></a><span class=\"lineno\">  935</span>            }</div>\n+<div class=\"line\"><a id=\"l00936\" name=\"l00936\"></a><span class=\"lineno\">  936</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00937\" name=\"l00937\"></a><span class=\"lineno\">  937</span>        }</div>\n+<div class=\"line\"><a id=\"l00938\" name=\"l00938\"></a><span class=\"lineno\">  938</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00939\" name=\"l00939\"></a><span class=\"lineno\">  939</span> </div>\n+<div class=\"line\"><a id=\"l01000\" name=\"l01000\"></a><span class=\"lineno\"> 1000</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01001\" name=\"l01001\"></a><span class=\"lineno\"> 1001</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE,</div>\n+<div class=\"line\"><a id=\"l01002\" name=\"l01002\"></a><span class=\"lineno\"> 1002</span>              <span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01003\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01003\" name=\"l01003\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#ab011f671d8598811f0ed39a28616f908\"> 1003</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#ab011f671d8598811f0ed39a28616f908\">EvalPatches</a>(</div>\n+<div class=\"line\"><a id=\"l01004\" name=\"l01004\"></a><span class=\"lineno\"> 1004</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01005\" name=\"l01005\"></a><span class=\"lineno\"> 1005</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01006\" name=\"l01006\"></a><span class=\"lineno\"> 1006</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l01007\" name=\"l01007\"></a><span class=\"lineno\"> 1007</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l01008\" name=\"l01008\"></a><span class=\"lineno\"> 1008</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01009\" name=\"l01009\"></a><span class=\"lineno\"> 1009</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01010\" name=\"l01010\"></a><span class=\"lineno\"> 1010</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l01011\" name=\"l01011\"></a><span class=\"lineno\"> 1011</span>        <a class=\"code hl_class\" href=\"a01149.html\">CLEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n+<div class=\"line\"><a id=\"l01012\" name=\"l01012\"></a><span class=\"lineno\"> 1012</span>        DEVICE_CONTEXT deviceContext,</div>\n+<div class=\"line\"><a id=\"l01013\" name=\"l01013\"></a><span class=\"lineno\"> 1013</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents=0,</div>\n+<div class=\"line\"><a id=\"l01014\" name=\"l01014\"></a><span class=\"lineno\"> 1014</span>        <span class=\"keyword\">const</span> cl_event* startEvents=NULL,</div>\n+<div class=\"line\"><a id=\"l01015\" name=\"l01015\"></a><span class=\"lineno\"> 1015</span>        cl_event* endEvent=NULL) {</div>\n+<div class=\"line\"><a id=\"l01016\" name=\"l01016\"></a><span class=\"lineno\"> 1016</span> </div>\n+<div class=\"line\"><a id=\"l01017\" name=\"l01017\"></a><span class=\"lineno\"> 1017</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l01018\" name=\"l01018\"></a><span class=\"lineno\"> 1018</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01149.html#ab5cae7e895f2efe955b27ae3dafccfd2\">EvalPatches</a>(srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l01019\" name=\"l01019\"></a><span class=\"lineno\"> 1019</span>                                         dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01020\" name=\"l01020\"></a><span class=\"lineno\"> 1020</span>                                         duBuffer, duDesc,</div>\n+<div class=\"line\"><a id=\"l01021\" name=\"l01021\"></a><span class=\"lineno\"> 1021</span>                                         dvBuffer, dvDesc,</div>\n+<div class=\"line\"><a id=\"l01022\" name=\"l01022\"></a><span class=\"lineno\"> 1022</span>                                         numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l01023\" name=\"l01023\"></a><span class=\"lineno\"> 1023</span>                                         patchTable,</div>\n+<div class=\"line\"><a id=\"l01024\" name=\"l01024\"></a><span class=\"lineno\"> 1024</span>                                         numStartEvents, startEvents, endEvent);</div>\n+<div class=\"line\"><a id=\"l01025\" name=\"l01025\"></a><span class=\"lineno\"> 1025</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l01026\" name=\"l01026\"></a><span class=\"lineno\"> 1026</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n+<div class=\"line\"><a id=\"l01027\" name=\"l01027\"></a><span class=\"lineno\"> 1027</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l01028\" name=\"l01028\"></a><span class=\"lineno\"> 1028</span>            instance = <a class=\"code hl_function\" href=\"a01149.html#a3a2faa1170cedd851fea7266e0ff7eda\">Create</a>(srcDesc, dstDesc, duDesc, dvDesc, deviceContext);</div>\n+<div class=\"line\"><a id=\"l01029\" name=\"l01029\"></a><span class=\"lineno\"> 1029</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l01030\" name=\"l01030\"></a><span class=\"lineno\"> 1030</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01149.html#ab5cae7e895f2efe955b27ae3dafccfd2\">EvalPatches</a>(srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l01031\" name=\"l01031\"></a><span class=\"lineno\"> 1031</span>                                               dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01032\" name=\"l01032\"></a><span class=\"lineno\"> 1032</span>                                               duBuffer, duDesc,</div>\n+<div class=\"line\"><a id=\"l01033\" name=\"l01033\"></a><span class=\"lineno\"> 1033</span>                                               dvBuffer, dvDesc,</div>\n+<div class=\"line\"><a id=\"l01034\" name=\"l01034\"></a><span class=\"lineno\"> 1034</span>                                               numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l01035\" name=\"l01035\"></a><span class=\"lineno\"> 1035</span>                                               patchTable,</div>\n+<div class=\"line\"><a id=\"l01036\" name=\"l01036\"></a><span class=\"lineno\"> 1036</span>                                               numStartEvents, startEvents, endEvent);</div>\n+<div class=\"line\"><a id=\"l01037\" name=\"l01037\"></a><span class=\"lineno\"> 1037</span>                <span class=\"keyword\">delete</span> instance;</div>\n+<div class=\"line\"><a id=\"l01038\" name=\"l01038\"></a><span class=\"lineno\"> 1038</span>                <span class=\"keywordflow\">return</span> r;</div>\n+<div class=\"line\"><a id=\"l01039\" name=\"l01039\"></a><span class=\"lineno\"> 1039</span>            }</div>\n+<div class=\"line\"><a id=\"l01040\" name=\"l01040\"></a><span class=\"lineno\"> 1040</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l01041\" name=\"l01041\"></a><span class=\"lineno\"> 1041</span>        }</div>\n+<div class=\"line\"><a id=\"l01042\" name=\"l01042\"></a><span class=\"lineno\"> 1042</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01043\" name=\"l01043\"></a><span class=\"lineno\"> 1043</span> </div>\n+<div class=\"line\"><a id=\"l01122\" name=\"l01122\"></a><span class=\"lineno\"> 1122</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01123\" name=\"l01123\"></a><span class=\"lineno\"> 1123</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE,</div>\n+<div class=\"line\"><a id=\"l01124\" name=\"l01124\"></a><span class=\"lineno\"> 1124</span>              <span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01125\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01125\" name=\"l01125\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#a7fc185c4d801f80736021470b10e0ebd\"> 1125</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#a7fc185c4d801f80736021470b10e0ebd\">EvalPatches</a>(</div>\n+<div class=\"line\"><a id=\"l01126\" name=\"l01126\"></a><span class=\"lineno\"> 1126</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01127\" name=\"l01127\"></a><span class=\"lineno\"> 1127</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01128\" name=\"l01128\"></a><span class=\"lineno\"> 1128</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l01129\" name=\"l01129\"></a><span class=\"lineno\"> 1129</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l01130\" name=\"l01130\"></a><span class=\"lineno\"> 1130</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l01131\" name=\"l01131\"></a><span class=\"lineno\"> 1131</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l01132\" name=\"l01132\"></a><span class=\"lineno\"> 1132</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l01133\" name=\"l01133\"></a><span class=\"lineno\"> 1133</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01134\" name=\"l01134\"></a><span class=\"lineno\"> 1134</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01135\" name=\"l01135\"></a><span class=\"lineno\"> 1135</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l01136\" name=\"l01136\"></a><span class=\"lineno\"> 1136</span>        <a class=\"code hl_class\" href=\"a01149.html\">CLEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n+<div class=\"line\"><a id=\"l01137\" name=\"l01137\"></a><span class=\"lineno\"> 1137</span>        DEVICE_CONTEXT deviceContext,</div>\n+<div class=\"line\"><a id=\"l01138\" name=\"l01138\"></a><span class=\"lineno\"> 1138</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents=0,</div>\n+<div class=\"line\"><a id=\"l01139\" name=\"l01139\"></a><span class=\"lineno\"> 1139</span>        <span class=\"keyword\">const</span> cl_event* startEvents=NULL,</div>\n+<div class=\"line\"><a id=\"l01140\" name=\"l01140\"></a><span class=\"lineno\"> 1140</span>        cl_event* endEvent=NULL) {</div>\n+<div class=\"line\"><a id=\"l01141\" name=\"l01141\"></a><span class=\"lineno\"> 1141</span> </div>\n+<div class=\"line\"><a id=\"l01142\" name=\"l01142\"></a><span class=\"lineno\"> 1142</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l01143\" name=\"l01143\"></a><span class=\"lineno\"> 1143</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01149.html#ab5cae7e895f2efe955b27ae3dafccfd2\">EvalPatches</a>(srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l01144\" name=\"l01144\"></a><span class=\"lineno\"> 1144</span>                                         dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01145\" name=\"l01145\"></a><span class=\"lineno\"> 1145</span>                                         duBuffer, duDesc,</div>\n+<div class=\"line\"><a id=\"l01146\" name=\"l01146\"></a><span class=\"lineno\"> 1146</span>                                         dvBuffer, dvDesc,</div>\n+<div class=\"line\"><a id=\"l01147\" name=\"l01147\"></a><span class=\"lineno\"> 1147</span>                                         duuBuffer, duuDesc,</div>\n+<div class=\"line\"><a id=\"l01148\" name=\"l01148\"></a><span class=\"lineno\"> 1148</span>                                         duvBuffer, duvDesc,</div>\n+<div class=\"line\"><a id=\"l01149\" name=\"l01149\"></a><span class=\"lineno\"> 1149</span>                                         dvvBuffer, dvvDesc,</div>\n+<div class=\"line\"><a id=\"l01150\" name=\"l01150\"></a><span class=\"lineno\"> 1150</span>                                         numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l01151\" name=\"l01151\"></a><span class=\"lineno\"> 1151</span>                                         patchTable,</div>\n+<div class=\"line\"><a id=\"l01152\" name=\"l01152\"></a><span class=\"lineno\"> 1152</span>                                         numStartEvents, startEvents, endEvent);</div>\n+<div class=\"line\"><a id=\"l01153\" name=\"l01153\"></a><span class=\"lineno\"> 1153</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l01154\" name=\"l01154\"></a><span class=\"lineno\"> 1154</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n+<div class=\"line\"><a id=\"l01155\" name=\"l01155\"></a><span class=\"lineno\"> 1155</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l01156\" name=\"l01156\"></a><span class=\"lineno\"> 1156</span>            instance = <a class=\"code hl_function\" href=\"a01149.html#a3a2faa1170cedd851fea7266e0ff7eda\">Create</a>(srcDesc, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01157\" name=\"l01157\"></a><span class=\"lineno\"> 1157</span>                              duDesc, dvDesc,</div>\n+<div class=\"line\"><a id=\"l01158\" name=\"l01158\"></a><span class=\"lineno\"> 1158</span>                              duuDesc, duvDesc, dvvDesc,</div>\n+<div class=\"line\"><a id=\"l01159\" name=\"l01159\"></a><span class=\"lineno\"> 1159</span>                              deviceContext);</div>\n+<div class=\"line\"><a id=\"l01160\" name=\"l01160\"></a><span class=\"lineno\"> 1160</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l01161\" name=\"l01161\"></a><span class=\"lineno\"> 1161</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01149.html#ab5cae7e895f2efe955b27ae3dafccfd2\">EvalPatches</a>(srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l01162\" name=\"l01162\"></a><span class=\"lineno\"> 1162</span>                                               dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01163\" name=\"l01163\"></a><span class=\"lineno\"> 1163</span>                                               duBuffer, duDesc,</div>\n+<div class=\"line\"><a id=\"l01164\" name=\"l01164\"></a><span class=\"lineno\"> 1164</span>                                               dvBuffer, dvDesc,</div>\n+<div class=\"line\"><a id=\"l01165\" name=\"l01165\"></a><span class=\"lineno\"> 1165</span>                                               duuBuffer, duuDesc,</div>\n+<div class=\"line\"><a id=\"l01166\" name=\"l01166\"></a><span class=\"lineno\"> 1166</span>                                               duvBuffer, duvDesc,</div>\n+<div class=\"line\"><a id=\"l01167\" name=\"l01167\"></a><span class=\"lineno\"> 1167</span>                                               dvvBuffer, dvvDesc,</div>\n+<div class=\"line\"><a id=\"l01168\" name=\"l01168\"></a><span class=\"lineno\"> 1168</span>                                               numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l01169\" name=\"l01169\"></a><span class=\"lineno\"> 1169</span>                                               patchTable,</div>\n+<div class=\"line\"><a id=\"l01170\" name=\"l01170\"></a><span class=\"lineno\"> 1170</span>                                               numStartEvents, startEvents, endEvent);</div>\n+<div class=\"line\"><a id=\"l01171\" name=\"l01171\"></a><span class=\"lineno\"> 1171</span>                <span class=\"keyword\">delete</span> instance;</div>\n+<div class=\"line\"><a id=\"l01172\" name=\"l01172\"></a><span class=\"lineno\"> 1172</span>                <span class=\"keywordflow\">return</span> r;</div>\n+<div class=\"line\"><a id=\"l01173\" name=\"l01173\"></a><span class=\"lineno\"> 1173</span>            }</div>\n+<div class=\"line\"><a id=\"l01174\" name=\"l01174\"></a><span class=\"lineno\"> 1174</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l01175\" name=\"l01175\"></a><span class=\"lineno\"> 1175</span>        }</div>\n+<div class=\"line\"><a id=\"l01176\" name=\"l01176\"></a><span class=\"lineno\"> 1176</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01177\" name=\"l01177\"></a><span class=\"lineno\"> 1177</span> </div>\n+<div class=\"line\"><a id=\"l01215\" name=\"l01215\"></a><span class=\"lineno\"> 1215</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01216\" name=\"l01216\"></a><span class=\"lineno\"> 1216</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01217\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01217\" name=\"l01217\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#a7053fc9101b3f27878eb21c1d96a6421\"> 1217</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#a7053fc9101b3f27878eb21c1d96a6421\">EvalPatches</a>(</div>\n+<div class=\"line\"><a id=\"l01218\" name=\"l01218\"></a><span class=\"lineno\"> 1218</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01219\" name=\"l01219\"></a><span class=\"lineno\"> 1219</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01220\" name=\"l01220\"></a><span class=\"lineno\"> 1220</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01221\" name=\"l01221\"></a><span class=\"lineno\"> 1221</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01222\" name=\"l01222\"></a><span class=\"lineno\"> 1222</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l01223\" name=\"l01223\"></a><span class=\"lineno\"> 1223</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents=0,</div>\n+<div class=\"line\"><a id=\"l01224\" name=\"l01224\"></a><span class=\"lineno\"> 1224</span>        <span class=\"keyword\">const</span> cl_event* startEvents=NULL,</div>\n+<div class=\"line\"><a id=\"l01225\" name=\"l01225\"></a><span class=\"lineno\"> 1225</span>        cl_event* endEvent=NULL)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l01226\" name=\"l01226\"></a><span class=\"lineno\"> 1226</span> </div>\n+<div class=\"line\"><a id=\"l01227\" name=\"l01227\"></a><span class=\"lineno\"> 1227</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01149.html#ab5cae7e895f2efe955b27ae3dafccfd2\">EvalPatches</a>(srcBuffer-&gt;BindCLBuffer(_clCommandQueue), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01228\" name=\"l01228\"></a><span class=\"lineno\"> 1228</span>                           dstBuffer-&gt;BindCLBuffer(_clCommandQueue), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01229\" name=\"l01229\"></a><span class=\"lineno\"> 1229</span>                           0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l01230\" name=\"l01230\"></a><span class=\"lineno\"> 1230</span>                           0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l01231\" name=\"l01231\"></a><span class=\"lineno\"> 1231</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01232\" name=\"l01232\"></a><span class=\"lineno\"> 1232</span>                           patchCoords-&gt;BindCLBuffer(_clCommandQueue),</div>\n+<div class=\"line\"><a id=\"l01233\" name=\"l01233\"></a><span class=\"lineno\"> 1233</span>                           patchTable-&gt;GetPatchArrayBuffer(),</div>\n+<div class=\"line\"><a id=\"l01234\" name=\"l01234\"></a><span class=\"lineno\"> 1234</span>                           patchTable-&gt;GetPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l01235\" name=\"l01235\"></a><span class=\"lineno\"> 1235</span>                           patchTable-&gt;GetPatchParamBuffer(),</div>\n+<div class=\"line\"><a id=\"l01236\" name=\"l01236\"></a><span class=\"lineno\"> 1236</span>                           numStartEvents, startEvents, endEvent);</div>\n+<div class=\"line\"><a id=\"l01237\" name=\"l01237\"></a><span class=\"lineno\"> 1237</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01238\" name=\"l01238\"></a><span class=\"lineno\"> 1238</span> </div>\n+<div class=\"line\"><a id=\"l01286\" name=\"l01286\"></a><span class=\"lineno\"> 1286</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01287\" name=\"l01287\"></a><span class=\"lineno\"> 1287</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01288\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01288\" name=\"l01288\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#ad62bdcb72a8d878f80a6e6a53abebccd\"> 1288</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#ad62bdcb72a8d878f80a6e6a53abebccd\">EvalPatches</a>(</div>\n+<div class=\"line\"><a id=\"l01289\" name=\"l01289\"></a><span class=\"lineno\"> 1289</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01290\" name=\"l01290\"></a><span class=\"lineno\"> 1290</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01291\" name=\"l01291\"></a><span class=\"lineno\"> 1291</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l01292\" name=\"l01292\"></a><span class=\"lineno\"> 1292</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l01293\" name=\"l01293\"></a><span class=\"lineno\"> 1293</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01294\" name=\"l01294\"></a><span class=\"lineno\"> 1294</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01295\" name=\"l01295\"></a><span class=\"lineno\"> 1295</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l01296\" name=\"l01296\"></a><span class=\"lineno\"> 1296</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents=0,</div>\n+<div class=\"line\"><a id=\"l01297\" name=\"l01297\"></a><span class=\"lineno\"> 1297</span>        <span class=\"keyword\">const</span> cl_event* startEvents=NULL,</div>\n+<div class=\"line\"><a id=\"l01298\" name=\"l01298\"></a><span class=\"lineno\"> 1298</span>        cl_event* endEvent=NULL)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l01299\" name=\"l01299\"></a><span class=\"lineno\"> 1299</span> </div>\n+<div class=\"line\"><a id=\"l01300\" name=\"l01300\"></a><span class=\"lineno\"> 1300</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01149.html#ab5cae7e895f2efe955b27ae3dafccfd2\">EvalPatches</a>(srcBuffer-&gt;BindCLBuffer(_clCommandQueue), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01301\" name=\"l01301\"></a><span class=\"lineno\"> 1301</span>                           dstBuffer-&gt;BindCLBuffer(_clCommandQueue), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01302\" name=\"l01302\"></a><span class=\"lineno\"> 1302</span>                           duBuffer-&gt;BindCLBuffer(_clCommandQueue),  duDesc,</div>\n+<div class=\"line\"><a id=\"l01303\" name=\"l01303\"></a><span class=\"lineno\"> 1303</span>                           dvBuffer-&gt;BindCLBuffer(_clCommandQueue),  dvDesc,</div>\n+<div class=\"line\"><a id=\"l01304\" name=\"l01304\"></a><span class=\"lineno\"> 1304</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01305\" name=\"l01305\"></a><span class=\"lineno\"> 1305</span>                           patchCoords-&gt;BindCLBuffer(_clCommandQueue),</div>\n+<div class=\"line\"><a id=\"l01306\" name=\"l01306\"></a><span class=\"lineno\"> 1306</span>                           patchTable-&gt;GetPatchArrayBuffer(),</div>\n+<div class=\"line\"><a id=\"l01307\" name=\"l01307\"></a><span class=\"lineno\"> 1307</span>                           patchTable-&gt;GetPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l01308\" name=\"l01308\"></a><span class=\"lineno\"> 1308</span>                           patchTable-&gt;GetPatchParamBuffer(),</div>\n+<div class=\"line\"><a id=\"l01309\" name=\"l01309\"></a><span class=\"lineno\"> 1309</span>                           numStartEvents, startEvents, endEvent);</div>\n+<div class=\"line\"><a id=\"l01310\" name=\"l01310\"></a><span class=\"lineno\"> 1310</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01311\" name=\"l01311\"></a><span class=\"lineno\"> 1311</span> </div>\n+<div class=\"line\"><a id=\"l01377\" name=\"l01377\"></a><span class=\"lineno\"> 1377</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01378\" name=\"l01378\"></a><span class=\"lineno\"> 1378</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01379\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01379\" name=\"l01379\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#a28ceea444575e321b0e98cb33fd0ed61\"> 1379</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#a28ceea444575e321b0e98cb33fd0ed61\">EvalPatches</a>(</div>\n+<div class=\"line\"><a id=\"l01380\" name=\"l01380\"></a><span class=\"lineno\"> 1380</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01381\" name=\"l01381\"></a><span class=\"lineno\"> 1381</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01382\" name=\"l01382\"></a><span class=\"lineno\"> 1382</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l01383\" name=\"l01383\"></a><span class=\"lineno\"> 1383</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l01384\" name=\"l01384\"></a><span class=\"lineno\"> 1384</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l01385\" name=\"l01385\"></a><span class=\"lineno\"> 1385</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l01386\" name=\"l01386\"></a><span class=\"lineno\"> 1386</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l01387\" name=\"l01387\"></a><span class=\"lineno\"> 1387</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01388\" name=\"l01388\"></a><span class=\"lineno\"> 1388</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01389\" name=\"l01389\"></a><span class=\"lineno\"> 1389</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l01390\" name=\"l01390\"></a><span class=\"lineno\"> 1390</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents=0,</div>\n+<div class=\"line\"><a id=\"l01391\" name=\"l01391\"></a><span class=\"lineno\"> 1391</span>        <span class=\"keyword\">const</span> cl_event* startEvents=NULL,</div>\n+<div class=\"line\"><a id=\"l01392\" name=\"l01392\"></a><span class=\"lineno\"> 1392</span>        cl_event* endEvent=NULL)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l01393\" name=\"l01393\"></a><span class=\"lineno\"> 1393</span> </div>\n+<div class=\"line\"><a id=\"l01394\" name=\"l01394\"></a><span class=\"lineno\"> 1394</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01149.html#ab5cae7e895f2efe955b27ae3dafccfd2\">EvalPatches</a>(srcBuffer-&gt;BindCLBuffer(_clCommandQueue), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01395\" name=\"l01395\"></a><span class=\"lineno\"> 1395</span>                           dstBuffer-&gt;BindCLBuffer(_clCommandQueue), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01396\" name=\"l01396\"></a><span class=\"lineno\"> 1396</span>                           duBuffer-&gt;BindCLBuffer(_clCommandQueue),  duDesc,</div>\n+<div class=\"line\"><a id=\"l01397\" name=\"l01397\"></a><span class=\"lineno\"> 1397</span>                           dvBuffer-&gt;BindCLBuffer(_clCommandQueue),  dvDesc,</div>\n+<div class=\"line\"><a id=\"l01398\" name=\"l01398\"></a><span class=\"lineno\"> 1398</span>                           duuBuffer-&gt;BindCLBuffer(_clCommandQueue), duuDesc,</div>\n+<div class=\"line\"><a id=\"l01399\" name=\"l01399\"></a><span class=\"lineno\"> 1399</span>                           duvBuffer-&gt;BindCLBuffer(_clCommandQueue), duvDesc,</div>\n+<div class=\"line\"><a id=\"l01400\" name=\"l01400\"></a><span class=\"lineno\"> 1400</span>                           dvvBuffer-&gt;BindCLBuffer(_clCommandQueue), dvvDesc,</div>\n+<div class=\"line\"><a id=\"l01401\" name=\"l01401\"></a><span class=\"lineno\"> 1401</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01402\" name=\"l01402\"></a><span class=\"lineno\"> 1402</span>                           patchCoords-&gt;BindCLBuffer(_clCommandQueue),</div>\n+<div class=\"line\"><a id=\"l01403\" name=\"l01403\"></a><span class=\"lineno\"> 1403</span>                           patchTable-&gt;GetPatchArrayBuffer(),</div>\n+<div class=\"line\"><a id=\"l01404\" name=\"l01404\"></a><span class=\"lineno\"> 1404</span>                           patchTable-&gt;GetPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l01405\" name=\"l01405\"></a><span class=\"lineno\"> 1405</span>                           patchTable-&gt;GetPatchParamBuffer(),</div>\n+<div class=\"line\"><a id=\"l01406\" name=\"l01406\"></a><span class=\"lineno\"> 1406</span>                           numStartEvents, startEvents, endEvent);</div>\n+<div class=\"line\"><a id=\"l01407\" name=\"l01407\"></a><span class=\"lineno\"> 1407</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01408\" name=\"l01408\"></a><span class=\"lineno\"> 1408</span> </div>\n+<div class=\"line\"><a id=\"l01409\" name=\"l01409\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#a22187001e33f98dc3195caab9968f1f0\"> 1409</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#a22187001e33f98dc3195caab9968f1f0\">EvalPatches</a>(cl_mem src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01410\" name=\"l01410\"></a><span class=\"lineno\"> 1410</span>                     cl_mem dst, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01411\" name=\"l01411\"></a><span class=\"lineno\"> 1411</span>                     cl_mem du,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l01412\" name=\"l01412\"></a><span class=\"lineno\"> 1412</span>                     cl_mem dv,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l01413\" name=\"l01413\"></a><span class=\"lineno\"> 1413</span>                     <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01414\" name=\"l01414\"></a><span class=\"lineno\"> 1414</span>                     cl_mem patchCoordsBuffer,</div>\n+<div class=\"line\"><a id=\"l01415\" name=\"l01415\"></a><span class=\"lineno\"> 1415</span>                     cl_mem patchArrayBuffer,</div>\n+<div class=\"line\"><a id=\"l01416\" name=\"l01416\"></a><span class=\"lineno\"> 1416</span>                     cl_mem patchIndexBuffer,</div>\n+<div class=\"line\"><a id=\"l01417\" name=\"l01417\"></a><span class=\"lineno\"> 1417</span>                     cl_mem patchParamsBuffer,</div>\n+<div class=\"line\"><a id=\"l01418\" name=\"l01418\"></a><span class=\"lineno\"> 1418</span>                     <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents=0,</div>\n+<div class=\"line\"><a id=\"l01419\" name=\"l01419\"></a><span class=\"lineno\"> 1419</span>                     <span class=\"keyword\">const</span> cl_event* startEvents=NULL,</div>\n+<div class=\"line\"><a id=\"l01420\" name=\"l01420\"></a><span class=\"lineno\"> 1420</span>                     cl_event* endEvent=NULL) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l01421\" name=\"l01421\"></a><span class=\"lineno\"> 1421</span> </div>\n+<div class=\"line\"><a id=\"l01422\" name=\"l01422\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#a4d6d90d5c4b0237cbeab58062dbdf5c8\"> 1422</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#a4d6d90d5c4b0237cbeab58062dbdf5c8\">EvalPatches</a>(cl_mem src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01423\" name=\"l01423\"></a><span class=\"lineno\"> 1423</span>                     cl_mem dst, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01424\" name=\"l01424\"></a><span class=\"lineno\"> 1424</span>                     cl_mem du,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l01425\" name=\"l01425\"></a><span class=\"lineno\"> 1425</span>                     cl_mem dv,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l01426\" name=\"l01426\"></a><span class=\"lineno\"> 1426</span>                     cl_mem duu, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l01427\" name=\"l01427\"></a><span class=\"lineno\"> 1427</span>                     cl_mem duv, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l01428\" name=\"l01428\"></a><span class=\"lineno\"> 1428</span>                     cl_mem dvv, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l01429\" name=\"l01429\"></a><span class=\"lineno\"> 1429</span>                     <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01430\" name=\"l01430\"></a><span class=\"lineno\"> 1430</span>                     cl_mem patchCoordsBuffer,</div>\n+<div class=\"line\"><a id=\"l01431\" name=\"l01431\"></a><span class=\"lineno\"> 1431</span>                     cl_mem patchArrayBuffer,</div>\n+<div class=\"line\"><a id=\"l01432\" name=\"l01432\"></a><span class=\"lineno\"> 1432</span>                     cl_mem patchIndexBuffer,</div>\n+<div class=\"line\"><a id=\"l01433\" name=\"l01433\"></a><span class=\"lineno\"> 1433</span>                     cl_mem patchParamsBuffer,</div>\n+<div class=\"line\"><a id=\"l01434\" name=\"l01434\"></a><span class=\"lineno\"> 1434</span>                     <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents=0,</div>\n+<div class=\"line\"><a id=\"l01435\" name=\"l01435\"></a><span class=\"lineno\"> 1435</span>                     <span class=\"keyword\">const</span> cl_event* startEvents=NULL,</div>\n+<div class=\"line\"><a id=\"l01436\" name=\"l01436\"></a><span class=\"lineno\"> 1436</span>                     cl_event* endEvent=NULL) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l01437\" name=\"l01437\"></a><span class=\"lineno\"> 1437</span> </div>\n+<div class=\"line\"><a id=\"l01486\" name=\"l01486\"></a><span class=\"lineno\"> 1486</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01487\" name=\"l01487\"></a><span class=\"lineno\"> 1487</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE,</div>\n+<div class=\"line\"><a id=\"l01488\" name=\"l01488\"></a><span class=\"lineno\"> 1488</span>              <span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01489\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01489\" name=\"l01489\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#a927d8aae868323d5208b1e95c2591ad1\"> 1489</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#a927d8aae868323d5208b1e95c2591ad1\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01490\" name=\"l01490\"></a><span class=\"lineno\"> 1490</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01491\" name=\"l01491\"></a><span class=\"lineno\"> 1491</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01492\" name=\"l01492\"></a><span class=\"lineno\"> 1492</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01493\" name=\"l01493\"></a><span class=\"lineno\"> 1493</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01494\" name=\"l01494\"></a><span class=\"lineno\"> 1494</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l01495\" name=\"l01495\"></a><span class=\"lineno\"> 1495</span>        <a class=\"code hl_class\" href=\"a01149.html\">CLEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n+<div class=\"line\"><a id=\"l01496\" name=\"l01496\"></a><span class=\"lineno\"> 1496</span>        DEVICE_CONTEXT deviceContext,</div>\n+<div class=\"line\"><a id=\"l01497\" name=\"l01497\"></a><span class=\"lineno\"> 1497</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents=0,</div>\n+<div class=\"line\"><a id=\"l01498\" name=\"l01498\"></a><span class=\"lineno\"> 1498</span>        <span class=\"keyword\">const</span> cl_event* startEvents=NULL,</div>\n+<div class=\"line\"><a id=\"l01499\" name=\"l01499\"></a><span class=\"lineno\"> 1499</span>        cl_event* endEvent=NULL) {</div>\n+<div class=\"line\"><a id=\"l01500\" name=\"l01500\"></a><span class=\"lineno\"> 1500</span> </div>\n+<div class=\"line\"><a id=\"l01501\" name=\"l01501\"></a><span class=\"lineno\"> 1501</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l01502\" name=\"l01502\"></a><span class=\"lineno\"> 1502</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01149.html#a927d8aae868323d5208b1e95c2591ad1\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01503\" name=\"l01503\"></a><span class=\"lineno\"> 1503</span>                                         srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l01504\" name=\"l01504\"></a><span class=\"lineno\"> 1504</span>                                         dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01505\" name=\"l01505\"></a><span class=\"lineno\"> 1505</span>                                         numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l01506\" name=\"l01506\"></a><span class=\"lineno\"> 1506</span>                                         patchTable,</div>\n+<div class=\"line\"><a id=\"l01507\" name=\"l01507\"></a><span class=\"lineno\"> 1507</span>                                         numStartEvents, startEvents, endEvent);</div>\n+<div class=\"line\"><a id=\"l01508\" name=\"l01508\"></a><span class=\"lineno\"> 1508</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l01509\" name=\"l01509\"></a><span class=\"lineno\"> 1509</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n+<div class=\"line\"><a id=\"l01510\" name=\"l01510\"></a><span class=\"lineno\"> 1510</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l01511\" name=\"l01511\"></a><span class=\"lineno\"> 1511</span>            instance = <a class=\"code hl_function\" href=\"a01149.html#a3a2faa1170cedd851fea7266e0ff7eda\">Create</a>(srcDesc, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01512\" name=\"l01512\"></a><span class=\"lineno\"> 1512</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l01513\" name=\"l01513\"></a><span class=\"lineno\"> 1513</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l01514\" name=\"l01514\"></a><span class=\"lineno\"> 1514</span>                              deviceContext);</div>\n+<div class=\"line\"><a id=\"l01515\" name=\"l01515\"></a><span class=\"lineno\"> 1515</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l01516\" name=\"l01516\"></a><span class=\"lineno\"> 1516</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01149.html#a927d8aae868323d5208b1e95c2591ad1\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01517\" name=\"l01517\"></a><span class=\"lineno\"> 1517</span>                                               srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l01518\" name=\"l01518\"></a><span class=\"lineno\"> 1518</span>                                               dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01519\" name=\"l01519\"></a><span class=\"lineno\"> 1519</span>                                               numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l01520\" name=\"l01520\"></a><span class=\"lineno\"> 1520</span>                                               patchTable,</div>\n+<div class=\"line\"><a id=\"l01521\" name=\"l01521\"></a><span class=\"lineno\"> 1521</span>                                               numStartEvents, startEvents, endEvent);</div>\n+<div class=\"line\"><a id=\"l01522\" name=\"l01522\"></a><span class=\"lineno\"> 1522</span>                <span class=\"keyword\">delete</span> instance;</div>\n+<div class=\"line\"><a id=\"l01523\" name=\"l01523\"></a><span class=\"lineno\"> 1523</span>                <span class=\"keywordflow\">return</span> r;</div>\n+<div class=\"line\"><a id=\"l01524\" name=\"l01524\"></a><span class=\"lineno\"> 1524</span>            }</div>\n+<div class=\"line\"><a id=\"l01525\" name=\"l01525\"></a><span class=\"lineno\"> 1525</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l01526\" name=\"l01526\"></a><span class=\"lineno\"> 1526</span>        }</div>\n+<div class=\"line\"><a id=\"l01527\" name=\"l01527\"></a><span class=\"lineno\"> 1527</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01528\" name=\"l01528\"></a><span class=\"lineno\"> 1528</span> </div>\n+<div class=\"line\"><a id=\"l01566\" name=\"l01566\"></a><span class=\"lineno\"> 1566</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01567\" name=\"l01567\"></a><span class=\"lineno\"> 1567</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01568\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01568\" name=\"l01568\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#ac15f843a06ecca29a922132ab59e3890\"> 1568</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#ac15f843a06ecca29a922132ab59e3890\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01569\" name=\"l01569\"></a><span class=\"lineno\"> 1569</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01570\" name=\"l01570\"></a><span class=\"lineno\"> 1570</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01571\" name=\"l01571\"></a><span class=\"lineno\"> 1571</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01572\" name=\"l01572\"></a><span class=\"lineno\"> 1572</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01573\" name=\"l01573\"></a><span class=\"lineno\"> 1573</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l01574\" name=\"l01574\"></a><span class=\"lineno\"> 1574</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents=0,</div>\n+<div class=\"line\"><a id=\"l01575\" name=\"l01575\"></a><span class=\"lineno\"> 1575</span>        <span class=\"keyword\">const</span> cl_event* startEvents=NULL,</div>\n+<div class=\"line\"><a id=\"l01576\" name=\"l01576\"></a><span class=\"lineno\"> 1576</span>        cl_event* endEvent=NULL)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l01577\" name=\"l01577\"></a><span class=\"lineno\"> 1577</span> </div>\n+<div class=\"line\"><a id=\"l01578\" name=\"l01578\"></a><span class=\"lineno\"> 1578</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01149.html#ab5cae7e895f2efe955b27ae3dafccfd2\">EvalPatches</a>(srcBuffer-&gt;BindCLBuffer(_clCommandQueue), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01579\" name=\"l01579\"></a><span class=\"lineno\"> 1579</span>                           dstBuffer-&gt;BindCLBuffer(_clCommandQueue), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01580\" name=\"l01580\"></a><span class=\"lineno\"> 1580</span>                           0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l01581\" name=\"l01581\"></a><span class=\"lineno\"> 1581</span>                           0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l01582\" name=\"l01582\"></a><span class=\"lineno\"> 1582</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01583\" name=\"l01583\"></a><span class=\"lineno\"> 1583</span>                           patchCoords-&gt;BindCLBuffer(_clCommandQueue),</div>\n+<div class=\"line\"><a id=\"l01584\" name=\"l01584\"></a><span class=\"lineno\"> 1584</span>                           patchTable-&gt;GetVaryingPatchArrayBuffer(),</div>\n+<div class=\"line\"><a id=\"l01585\" name=\"l01585\"></a><span class=\"lineno\"> 1585</span>                           patchTable-&gt;GetVaryingPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l01586\" name=\"l01586\"></a><span class=\"lineno\"> 1586</span>                           patchTable-&gt;GetPatchParamBuffer(),</div>\n+<div class=\"line\"><a id=\"l01587\" name=\"l01587\"></a><span class=\"lineno\"> 1587</span>                           numStartEvents, startEvents, endEvent);</div>\n+<div class=\"line\"><a id=\"l01588\" name=\"l01588\"></a><span class=\"lineno\"> 1588</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01589\" name=\"l01589\"></a><span class=\"lineno\"> 1589</span> </div>\n+<div class=\"line\"><a id=\"l01650\" name=\"l01650\"></a><span class=\"lineno\"> 1650</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01651\" name=\"l01651\"></a><span class=\"lineno\"> 1651</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE,</div>\n+<div class=\"line\"><a id=\"l01652\" name=\"l01652\"></a><span class=\"lineno\"> 1652</span>              <span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01653\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01653\" name=\"l01653\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#a7676de92e41c1e04e85f097f3d6d931e\"> 1653</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#a7676de92e41c1e04e85f097f3d6d931e\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01654\" name=\"l01654\"></a><span class=\"lineno\"> 1654</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01655\" name=\"l01655\"></a><span class=\"lineno\"> 1655</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01656\" name=\"l01656\"></a><span class=\"lineno\"> 1656</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l01657\" name=\"l01657\"></a><span class=\"lineno\"> 1657</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l01658\" name=\"l01658\"></a><span class=\"lineno\"> 1658</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01659\" name=\"l01659\"></a><span class=\"lineno\"> 1659</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01660\" name=\"l01660\"></a><span class=\"lineno\"> 1660</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l01661\" name=\"l01661\"></a><span class=\"lineno\"> 1661</span>        <a class=\"code hl_class\" href=\"a01149.html\">CLEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n+<div class=\"line\"><a id=\"l01662\" name=\"l01662\"></a><span class=\"lineno\"> 1662</span>        DEVICE_CONTEXT deviceContext,</div>\n+<div class=\"line\"><a id=\"l01663\" name=\"l01663\"></a><span class=\"lineno\"> 1663</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents=0,</div>\n+<div class=\"line\"><a id=\"l01664\" name=\"l01664\"></a><span class=\"lineno\"> 1664</span>        <span class=\"keyword\">const</span> cl_event* startEvents=NULL,</div>\n+<div class=\"line\"><a id=\"l01665\" name=\"l01665\"></a><span class=\"lineno\"> 1665</span>        cl_event* endEvent=NULL) {</div>\n+<div class=\"line\"><a id=\"l01666\" name=\"l01666\"></a><span class=\"lineno\"> 1666</span> </div>\n+<div class=\"line\"><a id=\"l01667\" name=\"l01667\"></a><span class=\"lineno\"> 1667</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l01668\" name=\"l01668\"></a><span class=\"lineno\"> 1668</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01149.html#a927d8aae868323d5208b1e95c2591ad1\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01669\" name=\"l01669\"></a><span class=\"lineno\"> 1669</span>                                         srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l01670\" name=\"l01670\"></a><span class=\"lineno\"> 1670</span>                                         dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01671\" name=\"l01671\"></a><span class=\"lineno\"> 1671</span>                                         duBuffer, duDesc,</div>\n+<div class=\"line\"><a id=\"l01672\" name=\"l01672\"></a><span class=\"lineno\"> 1672</span>                                         dvBuffer, dvDesc,</div>\n+<div class=\"line\"><a id=\"l01673\" name=\"l01673\"></a><span class=\"lineno\"> 1673</span>                                         numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l01674\" name=\"l01674\"></a><span class=\"lineno\"> 1674</span>                                         patchTable,</div>\n+<div class=\"line\"><a id=\"l01675\" name=\"l01675\"></a><span class=\"lineno\"> 1675</span>                                         numStartEvents, startEvents, endEvent);</div>\n+<div class=\"line\"><a id=\"l01676\" name=\"l01676\"></a><span class=\"lineno\"> 1676</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l01677\" name=\"l01677\"></a><span class=\"lineno\"> 1677</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n+<div class=\"line\"><a id=\"l01678\" name=\"l01678\"></a><span class=\"lineno\"> 1678</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l01679\" name=\"l01679\"></a><span class=\"lineno\"> 1679</span>            instance = <a class=\"code hl_function\" href=\"a01149.html#a3a2faa1170cedd851fea7266e0ff7eda\">Create</a>(srcDesc, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01680\" name=\"l01680\"></a><span class=\"lineno\"> 1680</span>                              duDesc, dvDesc,</div>\n+<div class=\"line\"><a id=\"l01681\" name=\"l01681\"></a><span class=\"lineno\"> 1681</span>                              deviceContext);</div>\n+<div class=\"line\"><a id=\"l01682\" name=\"l01682\"></a><span class=\"lineno\"> 1682</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l01683\" name=\"l01683\"></a><span class=\"lineno\"> 1683</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01149.html#a927d8aae868323d5208b1e95c2591ad1\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01684\" name=\"l01684\"></a><span class=\"lineno\"> 1684</span>                                               srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l01685\" name=\"l01685\"></a><span class=\"lineno\"> 1685</span>                                               dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01686\" name=\"l01686\"></a><span class=\"lineno\"> 1686</span>                                               duBuffer, duDesc,</div>\n+<div class=\"line\"><a id=\"l01687\" name=\"l01687\"></a><span class=\"lineno\"> 1687</span>                                               dvBuffer, dvDesc,</div>\n+<div class=\"line\"><a id=\"l01688\" name=\"l01688\"></a><span class=\"lineno\"> 1688</span>                                               numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l01689\" name=\"l01689\"></a><span class=\"lineno\"> 1689</span>                                               patchTable,</div>\n+<div class=\"line\"><a id=\"l01690\" name=\"l01690\"></a><span class=\"lineno\"> 1690</span>                                               numStartEvents, startEvents, endEvent);</div>\n+<div class=\"line\"><a id=\"l01691\" name=\"l01691\"></a><span class=\"lineno\"> 1691</span>                <span class=\"keyword\">delete</span> instance;</div>\n+<div class=\"line\"><a id=\"l01692\" name=\"l01692\"></a><span class=\"lineno\"> 1692</span>                <span class=\"keywordflow\">return</span> r;</div>\n+<div class=\"line\"><a id=\"l01693\" name=\"l01693\"></a><span class=\"lineno\"> 1693</span>            }</div>\n+<div class=\"line\"><a id=\"l01694\" name=\"l01694\"></a><span class=\"lineno\"> 1694</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l01695\" name=\"l01695\"></a><span class=\"lineno\"> 1695</span>        }</div>\n+<div class=\"line\"><a id=\"l01696\" name=\"l01696\"></a><span class=\"lineno\"> 1696</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01697\" name=\"l01697\"></a><span class=\"lineno\"> 1697</span> </div>\n+<div class=\"line\"><a id=\"l01747\" name=\"l01747\"></a><span class=\"lineno\"> 1747</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01748\" name=\"l01748\"></a><span class=\"lineno\"> 1748</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01749\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01749\" name=\"l01749\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#ab2a20bb6b2533aba43bd534e43e7dcac\"> 1749</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#ab2a20bb6b2533aba43bd534e43e7dcac\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01750\" name=\"l01750\"></a><span class=\"lineno\"> 1750</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01751\" name=\"l01751\"></a><span class=\"lineno\"> 1751</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01752\" name=\"l01752\"></a><span class=\"lineno\"> 1752</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l01753\" name=\"l01753\"></a><span class=\"lineno\"> 1753</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l01754\" name=\"l01754\"></a><span class=\"lineno\"> 1754</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01755\" name=\"l01755\"></a><span class=\"lineno\"> 1755</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01756\" name=\"l01756\"></a><span class=\"lineno\"> 1756</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l01757\" name=\"l01757\"></a><span class=\"lineno\"> 1757</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents=0,</div>\n+<div class=\"line\"><a id=\"l01758\" name=\"l01758\"></a><span class=\"lineno\"> 1758</span>        <span class=\"keyword\">const</span> cl_event* startEvents=NULL,</div>\n+<div class=\"line\"><a id=\"l01759\" name=\"l01759\"></a><span class=\"lineno\"> 1759</span>        cl_event* endEvent=NULL)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l01760\" name=\"l01760\"></a><span class=\"lineno\"> 1760</span> </div>\n+<div class=\"line\"><a id=\"l01761\" name=\"l01761\"></a><span class=\"lineno\"> 1761</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01149.html#ab5cae7e895f2efe955b27ae3dafccfd2\">EvalPatches</a>(srcBuffer-&gt;BindCLBuffer(_clCommandQueue), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01762\" name=\"l01762\"></a><span class=\"lineno\"> 1762</span>                           dstBuffer-&gt;BindCLBuffer(_clCommandQueue), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01763\" name=\"l01763\"></a><span class=\"lineno\"> 1763</span>                           duBuffer-&gt;BindCLBuffer(_clCommandQueue), duDesc,</div>\n+<div class=\"line\"><a id=\"l01764\" name=\"l01764\"></a><span class=\"lineno\"> 1764</span>                           dvBuffer-&gt;BindCLBuffer(_clCommandQueue), dvDesc,</div>\n+<div class=\"line\"><a id=\"l01765\" name=\"l01765\"></a><span class=\"lineno\"> 1765</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01766\" name=\"l01766\"></a><span class=\"lineno\"> 1766</span>                           patchCoords-&gt;BindCLBuffer(_clCommandQueue),</div>\n+<div class=\"line\"><a id=\"l01767\" name=\"l01767\"></a><span class=\"lineno\"> 1767</span>                           patchTable-&gt;GetVaryingPatchArrayBuffer(),</div>\n+<div class=\"line\"><a id=\"l01768\" name=\"l01768\"></a><span class=\"lineno\"> 1768</span>                           patchTable-&gt;GetVaryingPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l01769\" name=\"l01769\"></a><span class=\"lineno\"> 1769</span>                           patchTable-&gt;GetPatchParamBuffer(),</div>\n+<div class=\"line\"><a id=\"l01770\" name=\"l01770\"></a><span class=\"lineno\"> 1770</span>                           numStartEvents, startEvents, endEvent);</div>\n+<div class=\"line\"><a id=\"l01771\" name=\"l01771\"></a><span class=\"lineno\"> 1771</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01772\" name=\"l01772\"></a><span class=\"lineno\"> 1772</span> </div>\n+<div class=\"line\"><a id=\"l01851\" name=\"l01851\"></a><span class=\"lineno\"> 1851</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01852\" name=\"l01852\"></a><span class=\"lineno\"> 1852</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE,</div>\n+<div class=\"line\"><a id=\"l01853\" name=\"l01853\"></a><span class=\"lineno\"> 1853</span>              <span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01854\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01854\" name=\"l01854\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#ac81e120ca5b078e6563f78e7726e3c40\"> 1854</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#ac81e120ca5b078e6563f78e7726e3c40\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01855\" name=\"l01855\"></a><span class=\"lineno\"> 1855</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01856\" name=\"l01856\"></a><span class=\"lineno\"> 1856</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01857\" name=\"l01857\"></a><span class=\"lineno\"> 1857</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l01858\" name=\"l01858\"></a><span class=\"lineno\"> 1858</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l01859\" name=\"l01859\"></a><span class=\"lineno\"> 1859</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l01860\" name=\"l01860\"></a><span class=\"lineno\"> 1860</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l01861\" name=\"l01861\"></a><span class=\"lineno\"> 1861</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l01862\" name=\"l01862\"></a><span class=\"lineno\"> 1862</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01863\" name=\"l01863\"></a><span class=\"lineno\"> 1863</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01864\" name=\"l01864\"></a><span class=\"lineno\"> 1864</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l01865\" name=\"l01865\"></a><span class=\"lineno\"> 1865</span>        <a class=\"code hl_class\" href=\"a01149.html\">CLEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n+<div class=\"line\"><a id=\"l01866\" name=\"l01866\"></a><span class=\"lineno\"> 1866</span>        DEVICE_CONTEXT deviceContext,</div>\n+<div class=\"line\"><a id=\"l01867\" name=\"l01867\"></a><span class=\"lineno\"> 1867</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents=0,</div>\n+<div class=\"line\"><a id=\"l01868\" name=\"l01868\"></a><span class=\"lineno\"> 1868</span>        <span class=\"keyword\">const</span> cl_event* startEvents=NULL,</div>\n+<div class=\"line\"><a id=\"l01869\" name=\"l01869\"></a><span class=\"lineno\"> 1869</span>        cl_event* endEvent=NULL) {</div>\n+<div class=\"line\"><a id=\"l01870\" name=\"l01870\"></a><span class=\"lineno\"> 1870</span> </div>\n+<div class=\"line\"><a id=\"l01871\" name=\"l01871\"></a><span class=\"lineno\"> 1871</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l01872\" name=\"l01872\"></a><span class=\"lineno\"> 1872</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01149.html#a927d8aae868323d5208b1e95c2591ad1\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01873\" name=\"l01873\"></a><span class=\"lineno\"> 1873</span>                                         srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l01874\" name=\"l01874\"></a><span class=\"lineno\"> 1874</span>                                         dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01875\" name=\"l01875\"></a><span class=\"lineno\"> 1875</span>                                         duBuffer, duDesc,</div>\n+<div class=\"line\"><a id=\"l01876\" name=\"l01876\"></a><span class=\"lineno\"> 1876</span>                                         dvBuffer, dvDesc,</div>\n+<div class=\"line\"><a id=\"l01877\" name=\"l01877\"></a><span class=\"lineno\"> 1877</span>                                         duuBuffer, duuDesc,</div>\n+<div class=\"line\"><a id=\"l01878\" name=\"l01878\"></a><span class=\"lineno\"> 1878</span>                                         duvBuffer, duvDesc,</div>\n+<div class=\"line\"><a id=\"l01879\" name=\"l01879\"></a><span class=\"lineno\"> 1879</span>                                         dvvBuffer, dvvDesc,</div>\n+<div class=\"line\"><a id=\"l01880\" name=\"l01880\"></a><span class=\"lineno\"> 1880</span>                                         numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l01881\" name=\"l01881\"></a><span class=\"lineno\"> 1881</span>                                         patchTable,</div>\n+<div class=\"line\"><a id=\"l01882\" name=\"l01882\"></a><span class=\"lineno\"> 1882</span>                                         numStartEvents, startEvents, endEvent);</div>\n+<div class=\"line\"><a id=\"l01883\" name=\"l01883\"></a><span class=\"lineno\"> 1883</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l01884\" name=\"l01884\"></a><span class=\"lineno\"> 1884</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n+<div class=\"line\"><a id=\"l01885\" name=\"l01885\"></a><span class=\"lineno\"> 1885</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l01886\" name=\"l01886\"></a><span class=\"lineno\"> 1886</span>            instance = <a class=\"code hl_function\" href=\"a01149.html#a3a2faa1170cedd851fea7266e0ff7eda\">Create</a>(srcDesc, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01887\" name=\"l01887\"></a><span class=\"lineno\"> 1887</span>                              duDesc, dvDesc,</div>\n+<div class=\"line\"><a id=\"l01888\" name=\"l01888\"></a><span class=\"lineno\"> 1888</span>                              duuDesc, duvDesc, dvvDesc,</div>\n+<div class=\"line\"><a id=\"l01889\" name=\"l01889\"></a><span class=\"lineno\"> 1889</span>                              deviceContext);</div>\n+<div class=\"line\"><a id=\"l01890\" name=\"l01890\"></a><span class=\"lineno\"> 1890</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l01891\" name=\"l01891\"></a><span class=\"lineno\"> 1891</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01149.html#a927d8aae868323d5208b1e95c2591ad1\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01892\" name=\"l01892\"></a><span class=\"lineno\"> 1892</span>                                               srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l01893\" name=\"l01893\"></a><span class=\"lineno\"> 1893</span>                                               dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01894\" name=\"l01894\"></a><span class=\"lineno\"> 1894</span>                                               duBuffer, duDesc,</div>\n+<div class=\"line\"><a id=\"l01895\" name=\"l01895\"></a><span class=\"lineno\"> 1895</span>                                               dvBuffer, dvDesc,</div>\n+<div class=\"line\"><a id=\"l01896\" name=\"l01896\"></a><span class=\"lineno\"> 1896</span>                                               duuBuffer, duuDesc,</div>\n+<div class=\"line\"><a id=\"l01897\" name=\"l01897\"></a><span class=\"lineno\"> 1897</span>                                               duvBuffer, duvDesc,</div>\n+<div class=\"line\"><a id=\"l01898\" name=\"l01898\"></a><span class=\"lineno\"> 1898</span>                                               dvvBuffer, dvvDesc,</div>\n+<div class=\"line\"><a id=\"l01899\" name=\"l01899\"></a><span class=\"lineno\"> 1899</span>                                               numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l01900\" name=\"l01900\"></a><span class=\"lineno\"> 1900</span>                                               patchTable,</div>\n+<div class=\"line\"><a id=\"l01901\" name=\"l01901\"></a><span class=\"lineno\"> 1901</span>                                               numStartEvents, startEvents, endEvent);</div>\n+<div class=\"line\"><a id=\"l01902\" name=\"l01902\"></a><span class=\"lineno\"> 1902</span>                <span class=\"keyword\">delete</span> instance;</div>\n+<div class=\"line\"><a id=\"l01903\" name=\"l01903\"></a><span class=\"lineno\"> 1903</span>                <span class=\"keywordflow\">return</span> r;</div>\n+<div class=\"line\"><a id=\"l01904\" name=\"l01904\"></a><span class=\"lineno\"> 1904</span>            }</div>\n+<div class=\"line\"><a id=\"l01905\" name=\"l01905\"></a><span class=\"lineno\"> 1905</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l01906\" name=\"l01906\"></a><span class=\"lineno\"> 1906</span>        }</div>\n+<div class=\"line\"><a id=\"l01907\" name=\"l01907\"></a><span class=\"lineno\"> 1907</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01908\" name=\"l01908\"></a><span class=\"lineno\"> 1908</span> </div>\n+<div class=\"line\"><a id=\"l01976\" name=\"l01976\"></a><span class=\"lineno\"> 1976</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01977\" name=\"l01977\"></a><span class=\"lineno\"> 1977</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01978\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01978\" name=\"l01978\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#a222342a2581dc8a6366a16589b316959\"> 1978</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#a222342a2581dc8a6366a16589b316959\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01979\" name=\"l01979\"></a><span class=\"lineno\"> 1979</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01980\" name=\"l01980\"></a><span class=\"lineno\"> 1980</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01981\" name=\"l01981\"></a><span class=\"lineno\"> 1981</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l01982\" name=\"l01982\"></a><span class=\"lineno\"> 1982</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l01983\" name=\"l01983\"></a><span class=\"lineno\"> 1983</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l01984\" name=\"l01984\"></a><span class=\"lineno\"> 1984</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l01985\" name=\"l01985\"></a><span class=\"lineno\"> 1985</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l01986\" name=\"l01986\"></a><span class=\"lineno\"> 1986</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01987\" name=\"l01987\"></a><span class=\"lineno\"> 1987</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01988\" name=\"l01988\"></a><span class=\"lineno\"> 1988</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l01989\" name=\"l01989\"></a><span class=\"lineno\"> 1989</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents=0,</div>\n+<div class=\"line\"><a id=\"l01990\" name=\"l01990\"></a><span class=\"lineno\"> 1990</span>        <span class=\"keyword\">const</span> cl_event* startEvents=NULL,</div>\n+<div class=\"line\"><a id=\"l01991\" name=\"l01991\"></a><span class=\"lineno\"> 1991</span>        cl_event* endEvent=NULL)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l01992\" name=\"l01992\"></a><span class=\"lineno\"> 1992</span> </div>\n+<div class=\"line\"><a id=\"l01993\" name=\"l01993\"></a><span class=\"lineno\"> 1993</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01149.html#ab5cae7e895f2efe955b27ae3dafccfd2\">EvalPatches</a>(srcBuffer-&gt;BindCLBuffer(_clCommandQueue), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01994\" name=\"l01994\"></a><span class=\"lineno\"> 1994</span>                           dstBuffer-&gt;BindCLBuffer(_clCommandQueue), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01995\" name=\"l01995\"></a><span class=\"lineno\"> 1995</span>                           duBuffer-&gt;BindCLBuffer(_clCommandQueue), duDesc,</div>\n+<div class=\"line\"><a id=\"l01996\" name=\"l01996\"></a><span class=\"lineno\"> 1996</span>                           dvBuffer-&gt;BindCLBuffer(_clCommandQueue), dvDesc,</div>\n+<div class=\"line\"><a id=\"l01997\" name=\"l01997\"></a><span class=\"lineno\"> 1997</span>                           duuBuffer-&gt;BindCLBuffer(_clCommandQueue), duuDesc,</div>\n+<div class=\"line\"><a id=\"l01998\" name=\"l01998\"></a><span class=\"lineno\"> 1998</span>                           duvBuffer-&gt;BindCLBuffer(_clCommandQueue), duvDesc,</div>\n+<div class=\"line\"><a id=\"l01999\" name=\"l01999\"></a><span class=\"lineno\"> 1999</span>                           dvvBuffer-&gt;BindCLBuffer(_clCommandQueue), dvvDesc,</div>\n+<div class=\"line\"><a id=\"l02000\" name=\"l02000\"></a><span class=\"lineno\"> 2000</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l02001\" name=\"l02001\"></a><span class=\"lineno\"> 2001</span>                           patchCoords-&gt;BindCLBuffer(_clCommandQueue),</div>\n+<div class=\"line\"><a id=\"l02002\" name=\"l02002\"></a><span class=\"lineno\"> 2002</span>                           patchTable-&gt;GetVaryingPatchArrayBuffer(),</div>\n+<div class=\"line\"><a id=\"l02003\" name=\"l02003\"></a><span class=\"lineno\"> 2003</span>                           patchTable-&gt;GetVaryingPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l02004\" name=\"l02004\"></a><span class=\"lineno\"> 2004</span>                           patchTable-&gt;GetPatchParamBuffer(),</div>\n+<div class=\"line\"><a id=\"l02005\" name=\"l02005\"></a><span class=\"lineno\"> 2005</span>                           numStartEvents, startEvents, endEvent);</div>\n+<div class=\"line\"><a id=\"l02006\" name=\"l02006\"></a><span class=\"lineno\"> 2006</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l02007\" name=\"l02007\"></a><span class=\"lineno\"> 2007</span> </div>\n+<div class=\"line\"><a id=\"l02058\" name=\"l02058\"></a><span class=\"lineno\"> 2058</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l02059\" name=\"l02059\"></a><span class=\"lineno\"> 2059</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE,</div>\n+<div class=\"line\"><a id=\"l02060\" name=\"l02060\"></a><span class=\"lineno\"> 2060</span>              <span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen02061\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l02061\" name=\"l02061\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#a4306bdafdbba79ec4c659b9743701955\"> 2061</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#a4306bdafdbba79ec4c659b9743701955\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l02062\" name=\"l02062\"></a><span class=\"lineno\"> 2062</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l02063\" name=\"l02063\"></a><span class=\"lineno\"> 2063</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l02064\" name=\"l02064\"></a><span class=\"lineno\"> 2064</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l02065\" name=\"l02065\"></a><span class=\"lineno\"> 2065</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l02066\" name=\"l02066\"></a><span class=\"lineno\"> 2066</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l02067\" name=\"l02067\"></a><span class=\"lineno\"> 2067</span>        <span class=\"keywordtype\">int</span> fvarChannel,</div>\n+<div class=\"line\"><a id=\"l02068\" name=\"l02068\"></a><span class=\"lineno\"> 2068</span>        <a class=\"code hl_class\" href=\"a01149.html\">CLEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n+<div class=\"line\"><a id=\"l02069\" name=\"l02069\"></a><span class=\"lineno\"> 2069</span>        DEVICE_CONTEXT deviceContext,</div>\n+<div class=\"line\"><a id=\"l02070\" name=\"l02070\"></a><span class=\"lineno\"> 2070</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents=0,</div>\n+<div class=\"line\"><a id=\"l02071\" name=\"l02071\"></a><span class=\"lineno\"> 2071</span>        <span class=\"keyword\">const</span> cl_event* startEvents=NULL,</div>\n+<div class=\"line\"><a id=\"l02072\" name=\"l02072\"></a><span class=\"lineno\"> 2072</span>        cl_event* endEvent=NULL) {</div>\n+<div class=\"line\"><a id=\"l02073\" name=\"l02073\"></a><span class=\"lineno\"> 2073</span> </div>\n+<div class=\"line\"><a id=\"l02074\" name=\"l02074\"></a><span class=\"lineno\"> 2074</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l02075\" name=\"l02075\"></a><span class=\"lineno\"> 2075</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01149.html#a4306bdafdbba79ec4c659b9743701955\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l02076\" name=\"l02076\"></a><span class=\"lineno\"> 2076</span>                                         srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l02077\" name=\"l02077\"></a><span class=\"lineno\"> 2077</span>                                         dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l02078\" name=\"l02078\"></a><span class=\"lineno\"> 2078</span>                                         numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l02079\" name=\"l02079\"></a><span class=\"lineno\"> 2079</span>                                         patchTable, fvarChannel,</div>\n+<div class=\"line\"><a id=\"l02080\" name=\"l02080\"></a><span class=\"lineno\"> 2080</span>                                         numStartEvents, startEvents, endEvent);</div>\n+<div class=\"line\"><a id=\"l02081\" name=\"l02081\"></a><span class=\"lineno\"> 2081</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l02082\" name=\"l02082\"></a><span class=\"lineno\"> 2082</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n+<div class=\"line\"><a id=\"l02083\" name=\"l02083\"></a><span class=\"lineno\"> 2083</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l02084\" name=\"l02084\"></a><span class=\"lineno\"> 2084</span>            instance = <a class=\"code hl_function\" href=\"a01149.html#a3a2faa1170cedd851fea7266e0ff7eda\">Create</a>(srcDesc, dstDesc,</div>\n+<div class=\"line\"><a id=\"l02085\" name=\"l02085\"></a><span class=\"lineno\"> 2085</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l02086\" name=\"l02086\"></a><span class=\"lineno\"> 2086</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l02087\" name=\"l02087\"></a><span class=\"lineno\"> 2087</span>                              deviceContext);</div>\n+<div class=\"line\"><a id=\"l02088\" name=\"l02088\"></a><span class=\"lineno\"> 2088</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l02089\" name=\"l02089\"></a><span class=\"lineno\"> 2089</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01149.html#a4306bdafdbba79ec4c659b9743701955\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l02090\" name=\"l02090\"></a><span class=\"lineno\"> 2090</span>                                               srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l02091\" name=\"l02091\"></a><span class=\"lineno\"> 2091</span>                                               dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l02092\" name=\"l02092\"></a><span class=\"lineno\"> 2092</span>                                               numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l02093\" name=\"l02093\"></a><span class=\"lineno\"> 2093</span>                                               patchTable, fvarChannel,</div>\n+<div class=\"line\"><a id=\"l02094\" name=\"l02094\"></a><span class=\"lineno\"> 2094</span>                                               numStartEvents, startEvents, endEvent);</div>\n+<div class=\"line\"><a id=\"l02095\" name=\"l02095\"></a><span class=\"lineno\"> 2095</span>                <span class=\"keyword\">delete</span> instance;</div>\n+<div class=\"line\"><a id=\"l02096\" name=\"l02096\"></a><span class=\"lineno\"> 2096</span>                <span class=\"keywordflow\">return</span> r;</div>\n+<div class=\"line\"><a id=\"l02097\" name=\"l02097\"></a><span class=\"lineno\"> 2097</span>            }</div>\n+<div class=\"line\"><a id=\"l02098\" name=\"l02098\"></a><span class=\"lineno\"> 2098</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l02099\" name=\"l02099\"></a><span class=\"lineno\"> 2099</span>        }</div>\n+<div class=\"line\"><a id=\"l02100\" name=\"l02100\"></a><span class=\"lineno\"> 2100</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l02101\" name=\"l02101\"></a><span class=\"lineno\"> 2101</span> </div>\n+<div class=\"line\"><a id=\"l02141\" name=\"l02141\"></a><span class=\"lineno\"> 2141</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l02142\" name=\"l02142\"></a><span class=\"lineno\"> 2142</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen02143\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l02143\" name=\"l02143\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#afadb249fa0e871eead60821dff48d73c\"> 2143</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#afadb249fa0e871eead60821dff48d73c\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l02144\" name=\"l02144\"></a><span class=\"lineno\"> 2144</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l02145\" name=\"l02145\"></a><span class=\"lineno\"> 2145</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l02146\" name=\"l02146\"></a><span class=\"lineno\"> 2146</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l02147\" name=\"l02147\"></a><span class=\"lineno\"> 2147</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l02148\" name=\"l02148\"></a><span class=\"lineno\"> 2148</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l02149\" name=\"l02149\"></a><span class=\"lineno\"> 2149</span>        <span class=\"keywordtype\">int</span> fvarChannel = 0,</div>\n+<div class=\"line\"><a id=\"l02150\" name=\"l02150\"></a><span class=\"lineno\"> 2150</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents=0,</div>\n+<div class=\"line\"><a id=\"l02151\" name=\"l02151\"></a><span class=\"lineno\"> 2151</span>        <span class=\"keyword\">const</span> cl_event* startEvents=NULL,</div>\n+<div class=\"line\"><a id=\"l02152\" name=\"l02152\"></a><span class=\"lineno\"> 2152</span>        cl_event* endEvent=NULL)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l02153\" name=\"l02153\"></a><span class=\"lineno\"> 2153</span> </div>\n+<div class=\"line\"><a id=\"l02154\" name=\"l02154\"></a><span class=\"lineno\"> 2154</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01149.html#ab5cae7e895f2efe955b27ae3dafccfd2\">EvalPatches</a>(srcBuffer-&gt;BindCLBuffer(_clCommandQueue), srcDesc,</div>\n+<div class=\"line\"><a id=\"l02155\" name=\"l02155\"></a><span class=\"lineno\"> 2155</span>                           dstBuffer-&gt;BindCLBuffer(_clCommandQueue), dstDesc,</div>\n+<div class=\"line\"><a id=\"l02156\" name=\"l02156\"></a><span class=\"lineno\"> 2156</span>                           0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l02157\" name=\"l02157\"></a><span class=\"lineno\"> 2157</span>                           0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l02158\" name=\"l02158\"></a><span class=\"lineno\"> 2158</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l02159\" name=\"l02159\"></a><span class=\"lineno\"> 2159</span>                           patchCoords-&gt;BindCLBuffer(_clCommandQueue),</div>\n+<div class=\"line\"><a id=\"l02160\" name=\"l02160\"></a><span class=\"lineno\"> 2160</span>                           patchTable-&gt;GetFVarPatchArrayBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l02161\" name=\"l02161\"></a><span class=\"lineno\"> 2161</span>                           patchTable-&gt;GetFVarPatchIndexBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l02162\" name=\"l02162\"></a><span class=\"lineno\"> 2162</span>                           patchTable-&gt;GetFVarPatchParamBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l02163\" name=\"l02163\"></a><span class=\"lineno\"> 2163</span>                           numStartEvents, startEvents, endEvent);</div>\n+<div class=\"line\"><a id=\"l02164\" name=\"l02164\"></a><span class=\"lineno\"> 2164</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l02165\" name=\"l02165\"></a><span class=\"lineno\"> 2165</span> </div>\n+<div class=\"line\"><a id=\"l02228\" name=\"l02228\"></a><span class=\"lineno\"> 2228</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l02229\" name=\"l02229\"></a><span class=\"lineno\"> 2229</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE,</div>\n+<div class=\"line\"><a id=\"l02230\" name=\"l02230\"></a><span class=\"lineno\"> 2230</span>              <span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen02231\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l02231\" name=\"l02231\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#a1f66ce14f335d4a575fc95365bf811d9\"> 2231</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#a1f66ce14f335d4a575fc95365bf811d9\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l02232\" name=\"l02232\"></a><span class=\"lineno\"> 2232</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l02233\" name=\"l02233\"></a><span class=\"lineno\"> 2233</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l02234\" name=\"l02234\"></a><span class=\"lineno\"> 2234</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l02235\" name=\"l02235\"></a><span class=\"lineno\"> 2235</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l02236\" name=\"l02236\"></a><span class=\"lineno\"> 2236</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l02237\" name=\"l02237\"></a><span class=\"lineno\"> 2237</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l02238\" name=\"l02238\"></a><span class=\"lineno\"> 2238</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l02239\" name=\"l02239\"></a><span class=\"lineno\"> 2239</span>        <span class=\"keywordtype\">int</span> fvarChannel,</div>\n+<div class=\"line\"><a id=\"l02240\" name=\"l02240\"></a><span class=\"lineno\"> 2240</span>        <a class=\"code hl_class\" href=\"a01149.html\">CLEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n+<div class=\"line\"><a id=\"l02241\" name=\"l02241\"></a><span class=\"lineno\"> 2241</span>        DEVICE_CONTEXT deviceContext,</div>\n+<div class=\"line\"><a id=\"l02242\" name=\"l02242\"></a><span class=\"lineno\"> 2242</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents=0,</div>\n+<div class=\"line\"><a id=\"l02243\" name=\"l02243\"></a><span class=\"lineno\"> 2243</span>        <span class=\"keyword\">const</span> cl_event* startEvents=NULL,</div>\n+<div class=\"line\"><a id=\"l02244\" name=\"l02244\"></a><span class=\"lineno\"> 2244</span>        cl_event* endEvent=NULL) {</div>\n+<div class=\"line\"><a id=\"l02245\" name=\"l02245\"></a><span class=\"lineno\"> 2245</span> </div>\n+<div class=\"line\"><a id=\"l02246\" name=\"l02246\"></a><span class=\"lineno\"> 2246</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l02247\" name=\"l02247\"></a><span class=\"lineno\"> 2247</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01149.html#a4306bdafdbba79ec4c659b9743701955\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l02248\" name=\"l02248\"></a><span class=\"lineno\"> 2248</span>                                         srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l02249\" name=\"l02249\"></a><span class=\"lineno\"> 2249</span>                                         dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l02250\" name=\"l02250\"></a><span class=\"lineno\"> 2250</span>                                         duBuffer, duDesc,</div>\n+<div class=\"line\"><a id=\"l02251\" name=\"l02251\"></a><span class=\"lineno\"> 2251</span>                                         dvBuffer, dvDesc,</div>\n+<div class=\"line\"><a id=\"l02252\" name=\"l02252\"></a><span class=\"lineno\"> 2252</span>                                         numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l02253\" name=\"l02253\"></a><span class=\"lineno\"> 2253</span>                                         patchTable, fvarChannel,</div>\n+<div class=\"line\"><a id=\"l02254\" name=\"l02254\"></a><span class=\"lineno\"> 2254</span>                                         numStartEvents, startEvents, endEvent);</div>\n+<div class=\"line\"><a id=\"l02255\" name=\"l02255\"></a><span class=\"lineno\"> 2255</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l02256\" name=\"l02256\"></a><span class=\"lineno\"> 2256</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n+<div class=\"line\"><a id=\"l02257\" name=\"l02257\"></a><span class=\"lineno\"> 2257</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l02258\" name=\"l02258\"></a><span class=\"lineno\"> 2258</span>            instance = <a class=\"code hl_function\" href=\"a01149.html#a3a2faa1170cedd851fea7266e0ff7eda\">Create</a>(srcDesc, dstDesc,</div>\n+<div class=\"line\"><a id=\"l02259\" name=\"l02259\"></a><span class=\"lineno\"> 2259</span>                              duDesc, dvDesc, deviceContext);</div>\n+<div class=\"line\"><a id=\"l02260\" name=\"l02260\"></a><span class=\"lineno\"> 2260</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l02261\" name=\"l02261\"></a><span class=\"lineno\"> 2261</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01149.html#a4306bdafdbba79ec4c659b9743701955\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l02262\" name=\"l02262\"></a><span class=\"lineno\"> 2262</span>                                               srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l02263\" name=\"l02263\"></a><span class=\"lineno\"> 2263</span>                                               dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l02264\" name=\"l02264\"></a><span class=\"lineno\"> 2264</span>                                               duBuffer, duDesc,</div>\n+<div class=\"line\"><a id=\"l02265\" name=\"l02265\"></a><span class=\"lineno\"> 2265</span>                                               dvBuffer, dvDesc,</div>\n+<div class=\"line\"><a id=\"l02266\" name=\"l02266\"></a><span class=\"lineno\"> 2266</span>                                               numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l02267\" name=\"l02267\"></a><span class=\"lineno\"> 2267</span>                                               patchTable, fvarChannel,</div>\n+<div class=\"line\"><a id=\"l02268\" name=\"l02268\"></a><span class=\"lineno\"> 2268</span>                                               numStartEvents, startEvents, endEvent);</div>\n+<div class=\"line\"><a id=\"l02269\" name=\"l02269\"></a><span class=\"lineno\"> 2269</span>                <span class=\"keyword\">delete</span> instance;</div>\n+<div class=\"line\"><a id=\"l02270\" name=\"l02270\"></a><span class=\"lineno\"> 2270</span>                <span class=\"keywordflow\">return</span> r;</div>\n+<div class=\"line\"><a id=\"l02271\" name=\"l02271\"></a><span class=\"lineno\"> 2271</span>            }</div>\n+<div class=\"line\"><a id=\"l02272\" name=\"l02272\"></a><span class=\"lineno\"> 2272</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l02273\" name=\"l02273\"></a><span class=\"lineno\"> 2273</span>        }</div>\n+<div class=\"line\"><a id=\"l02274\" name=\"l02274\"></a><span class=\"lineno\"> 2274</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l02275\" name=\"l02275\"></a><span class=\"lineno\"> 2275</span> </div>\n+<div class=\"line\"><a id=\"l02327\" name=\"l02327\"></a><span class=\"lineno\"> 2327</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l02328\" name=\"l02328\"></a><span class=\"lineno\"> 2328</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen02329\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l02329\" name=\"l02329\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#aa479c7900943eed61feede277083eb08\"> 2329</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#aa479c7900943eed61feede277083eb08\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l02330\" name=\"l02330\"></a><span class=\"lineno\"> 2330</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l02331\" name=\"l02331\"></a><span class=\"lineno\"> 2331</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l02332\" name=\"l02332\"></a><span class=\"lineno\"> 2332</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l02333\" name=\"l02333\"></a><span class=\"lineno\"> 2333</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l02334\" name=\"l02334\"></a><span class=\"lineno\"> 2334</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l02335\" name=\"l02335\"></a><span class=\"lineno\"> 2335</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l02336\" name=\"l02336\"></a><span class=\"lineno\"> 2336</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l02337\" name=\"l02337\"></a><span class=\"lineno\"> 2337</span>        <span class=\"keywordtype\">int</span> fvarChannel = 0,</div>\n+<div class=\"line\"><a id=\"l02338\" name=\"l02338\"></a><span class=\"lineno\"> 2338</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents=0,</div>\n+<div class=\"line\"><a id=\"l02339\" name=\"l02339\"></a><span class=\"lineno\"> 2339</span>        <span class=\"keyword\">const</span> cl_event* startEvents=NULL,</div>\n+<div class=\"line\"><a id=\"l02340\" name=\"l02340\"></a><span class=\"lineno\"> 2340</span>        cl_event* endEvent=NULL)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l02341\" name=\"l02341\"></a><span class=\"lineno\"> 2341</span> </div>\n+<div class=\"line\"><a id=\"l02342\" name=\"l02342\"></a><span class=\"lineno\"> 2342</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01149.html#ab5cae7e895f2efe955b27ae3dafccfd2\">EvalPatches</a>(srcBuffer-&gt;BindCLBuffer(_clCommandQueue), srcDesc,</div>\n+<div class=\"line\"><a id=\"l02343\" name=\"l02343\"></a><span class=\"lineno\"> 2343</span>                           dstBuffer-&gt;BindCLBuffer(_clCommandQueue), dstDesc,</div>\n+<div class=\"line\"><a id=\"l02344\" name=\"l02344\"></a><span class=\"lineno\"> 2344</span>                           duBuffer-&gt;BindCLBuffer(_clCommandQueue), duDesc,</div>\n+<div class=\"line\"><a id=\"l02345\" name=\"l02345\"></a><span class=\"lineno\"> 2345</span>                           dvBuffer-&gt;BindCLBuffer(_clCommandQueue), dvDesc,</div>\n+<div class=\"line\"><a id=\"l02346\" name=\"l02346\"></a><span class=\"lineno\"> 2346</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l02347\" name=\"l02347\"></a><span class=\"lineno\"> 2347</span>                           patchCoords-&gt;BindCLBuffer(_clCommandQueue),</div>\n+<div class=\"line\"><a id=\"l02348\" name=\"l02348\"></a><span class=\"lineno\"> 2348</span>                           patchTable-&gt;GetFVarPatchArrayBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l02349\" name=\"l02349\"></a><span class=\"lineno\"> 2349</span>                           patchTable-&gt;GetFVarPatchIndexBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l02350\" name=\"l02350\"></a><span class=\"lineno\"> 2350</span>                           patchTable-&gt;GetFVarPatchParamBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l02351\" name=\"l02351\"></a><span class=\"lineno\"> 2351</span>                           numStartEvents, startEvents, endEvent);</div>\n+<div class=\"line\"><a id=\"l02352\" name=\"l02352\"></a><span class=\"lineno\"> 2352</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l02353\" name=\"l02353\"></a><span class=\"lineno\"> 2353</span> </div>\n+<div class=\"line\"><a id=\"l02434\" name=\"l02434\"></a><span class=\"lineno\"> 2434</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l02435\" name=\"l02435\"></a><span class=\"lineno\"> 2435</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE,</div>\n+<div class=\"line\"><a id=\"l02436\" name=\"l02436\"></a><span class=\"lineno\"> 2436</span>              <span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen02437\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l02437\" name=\"l02437\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#aa55b9dc6ee02d2a3beb2f85df1794afb\"> 2437</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#aa55b9dc6ee02d2a3beb2f85df1794afb\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l02438\" name=\"l02438\"></a><span class=\"lineno\"> 2438</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l02439\" name=\"l02439\"></a><span class=\"lineno\"> 2439</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l02440\" name=\"l02440\"></a><span class=\"lineno\"> 2440</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l02441\" name=\"l02441\"></a><span class=\"lineno\"> 2441</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l02442\" name=\"l02442\"></a><span class=\"lineno\"> 2442</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l02443\" name=\"l02443\"></a><span class=\"lineno\"> 2443</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l02444\" name=\"l02444\"></a><span class=\"lineno\"> 2444</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l02445\" name=\"l02445\"></a><span class=\"lineno\"> 2445</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l02446\" name=\"l02446\"></a><span class=\"lineno\"> 2446</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l02447\" name=\"l02447\"></a><span class=\"lineno\"> 2447</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l02448\" name=\"l02448\"></a><span class=\"lineno\"> 2448</span>        <span class=\"keywordtype\">int</span> fvarChannel,</div>\n+<div class=\"line\"><a id=\"l02449\" name=\"l02449\"></a><span class=\"lineno\"> 2449</span>        <a class=\"code hl_class\" href=\"a01149.html\">CLEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n+<div class=\"line\"><a id=\"l02450\" name=\"l02450\"></a><span class=\"lineno\"> 2450</span>        DEVICE_CONTEXT deviceContext,</div>\n+<div class=\"line\"><a id=\"l02451\" name=\"l02451\"></a><span class=\"lineno\"> 2451</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents=0,</div>\n+<div class=\"line\"><a id=\"l02452\" name=\"l02452\"></a><span class=\"lineno\"> 2452</span>        <span class=\"keyword\">const</span> cl_event* startEvents=NULL,</div>\n+<div class=\"line\"><a id=\"l02453\" name=\"l02453\"></a><span class=\"lineno\"> 2453</span>        cl_event* endEvent=NULL) {</div>\n+<div class=\"line\"><a id=\"l02454\" name=\"l02454\"></a><span class=\"lineno\"> 2454</span> </div>\n+<div class=\"line\"><a id=\"l02455\" name=\"l02455\"></a><span class=\"lineno\"> 2455</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l02456\" name=\"l02456\"></a><span class=\"lineno\"> 2456</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01149.html#a4306bdafdbba79ec4c659b9743701955\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l02457\" name=\"l02457\"></a><span class=\"lineno\"> 2457</span>                                         srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l02458\" name=\"l02458\"></a><span class=\"lineno\"> 2458</span>                                         dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l02459\" name=\"l02459\"></a><span class=\"lineno\"> 2459</span>                                         duBuffer, duDesc,</div>\n+<div class=\"line\"><a id=\"l02460\" name=\"l02460\"></a><span class=\"lineno\"> 2460</span>                                         dvBuffer, dvDesc,</div>\n+<div class=\"line\"><a id=\"l02461\" name=\"l02461\"></a><span class=\"lineno\"> 2461</span>                                         duuBuffer, duuDesc,</div>\n+<div class=\"line\"><a id=\"l02462\" name=\"l02462\"></a><span class=\"lineno\"> 2462</span>                                         duvBuffer, duvDesc,</div>\n+<div class=\"line\"><a id=\"l02463\" name=\"l02463\"></a><span class=\"lineno\"> 2463</span>                                         dvvBuffer, dvvDesc,</div>\n+<div class=\"line\"><a id=\"l02464\" name=\"l02464\"></a><span class=\"lineno\"> 2464</span>                                         numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l02465\" name=\"l02465\"></a><span class=\"lineno\"> 2465</span>                                         patchTable, fvarChannel,</div>\n+<div class=\"line\"><a id=\"l02466\" name=\"l02466\"></a><span class=\"lineno\"> 2466</span>                                         numStartEvents, startEvents, endEvent);</div>\n+<div class=\"line\"><a id=\"l02467\" name=\"l02467\"></a><span class=\"lineno\"> 2467</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l02468\" name=\"l02468\"></a><span class=\"lineno\"> 2468</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n+<div class=\"line\"><a id=\"l02469\" name=\"l02469\"></a><span class=\"lineno\"> 2469</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l02470\" name=\"l02470\"></a><span class=\"lineno\"> 2470</span>            instance = <a class=\"code hl_function\" href=\"a01149.html#a3a2faa1170cedd851fea7266e0ff7eda\">Create</a>(srcDesc, dstDesc,</div>\n+<div class=\"line\"><a id=\"l02471\" name=\"l02471\"></a><span class=\"lineno\"> 2471</span>                              duDesc, dvDesc,</div>\n+<div class=\"line\"><a id=\"l02472\" name=\"l02472\"></a><span class=\"lineno\"> 2472</span>                              duuDesc, duvDesc, dvvDesc,</div>\n+<div class=\"line\"><a id=\"l02473\" name=\"l02473\"></a><span class=\"lineno\"> 2473</span>                              deviceContext);</div>\n+<div class=\"line\"><a id=\"l02474\" name=\"l02474\"></a><span class=\"lineno\"> 2474</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l02475\" name=\"l02475\"></a><span class=\"lineno\"> 2475</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01149.html#a4306bdafdbba79ec4c659b9743701955\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l02476\" name=\"l02476\"></a><span class=\"lineno\"> 2476</span>                                               srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l02477\" name=\"l02477\"></a><span class=\"lineno\"> 2477</span>                                               dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l02478\" name=\"l02478\"></a><span class=\"lineno\"> 2478</span>                                               duBuffer, duDesc,</div>\n+<div class=\"line\"><a id=\"l02479\" name=\"l02479\"></a><span class=\"lineno\"> 2479</span>                                               dvBuffer, dvDesc,</div>\n+<div class=\"line\"><a id=\"l02480\" name=\"l02480\"></a><span class=\"lineno\"> 2480</span>                                               duuBuffer, duuDesc,</div>\n+<div class=\"line\"><a id=\"l02481\" name=\"l02481\"></a><span class=\"lineno\"> 2481</span>                                               duvBuffer, duvDesc,</div>\n+<div class=\"line\"><a id=\"l02482\" name=\"l02482\"></a><span class=\"lineno\"> 2482</span>                                               dvvBuffer, dvvDesc,</div>\n+<div class=\"line\"><a id=\"l02483\" name=\"l02483\"></a><span class=\"lineno\"> 2483</span>                                               numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l02484\" name=\"l02484\"></a><span class=\"lineno\"> 2484</span>                                               patchTable, fvarChannel,</div>\n+<div class=\"line\"><a id=\"l02485\" name=\"l02485\"></a><span class=\"lineno\"> 2485</span>                                               numStartEvents, startEvents, endEvent);</div>\n+<div class=\"line\"><a id=\"l02486\" name=\"l02486\"></a><span class=\"lineno\"> 2486</span>                <span class=\"keyword\">delete</span> instance;</div>\n+<div class=\"line\"><a id=\"l02487\" name=\"l02487\"></a><span class=\"lineno\"> 2487</span>                <span class=\"keywordflow\">return</span> r;</div>\n+<div class=\"line\"><a id=\"l02488\" name=\"l02488\"></a><span class=\"lineno\"> 2488</span>            }</div>\n+<div class=\"line\"><a id=\"l02489\" name=\"l02489\"></a><span class=\"lineno\"> 2489</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l02490\" name=\"l02490\"></a><span class=\"lineno\"> 2490</span>        }</div>\n+<div class=\"line\"><a id=\"l02491\" name=\"l02491\"></a><span class=\"lineno\"> 2491</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l02492\" name=\"l02492\"></a><span class=\"lineno\"> 2492</span> </div>\n+<div class=\"line\"><a id=\"l02562\" name=\"l02562\"></a><span class=\"lineno\"> 2562</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l02563\" name=\"l02563\"></a><span class=\"lineno\"> 2563</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen02564\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l02564\" name=\"l02564\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#a67b59f584f05e87e91b371cb3744f137\"> 2564</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#a67b59f584f05e87e91b371cb3744f137\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l02565\" name=\"l02565\"></a><span class=\"lineno\"> 2565</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l02566\" name=\"l02566\"></a><span class=\"lineno\"> 2566</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l02567\" name=\"l02567\"></a><span class=\"lineno\"> 2567</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l02568\" name=\"l02568\"></a><span class=\"lineno\"> 2568</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l02569\" name=\"l02569\"></a><span class=\"lineno\"> 2569</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l02570\" name=\"l02570\"></a><span class=\"lineno\"> 2570</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l02571\" name=\"l02571\"></a><span class=\"lineno\"> 2571</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l02572\" name=\"l02572\"></a><span class=\"lineno\"> 2572</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l02573\" name=\"l02573\"></a><span class=\"lineno\"> 2573</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l02574\" name=\"l02574\"></a><span class=\"lineno\"> 2574</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l02575\" name=\"l02575\"></a><span class=\"lineno\"> 2575</span>        <span class=\"keywordtype\">int</span> fvarChannel = 0,</div>\n+<div class=\"line\"><a id=\"l02576\" name=\"l02576\"></a><span class=\"lineno\"> 2576</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents=0,</div>\n+<div class=\"line\"><a id=\"l02577\" name=\"l02577\"></a><span class=\"lineno\"> 2577</span>        <span class=\"keyword\">const</span> cl_event* startEvents=NULL,</div>\n+<div class=\"line\"><a id=\"l02578\" name=\"l02578\"></a><span class=\"lineno\"> 2578</span>        cl_event* endEvent=NULL)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l02579\" name=\"l02579\"></a><span class=\"lineno\"> 2579</span> </div>\n+<div class=\"line\"><a id=\"l02580\" name=\"l02580\"></a><span class=\"lineno\"> 2580</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01149.html#ab5cae7e895f2efe955b27ae3dafccfd2\">EvalPatches</a>(srcBuffer-&gt;BindCLBuffer(_clCommandQueue), srcDesc,</div>\n+<div class=\"line\"><a id=\"l02581\" name=\"l02581\"></a><span class=\"lineno\"> 2581</span>                           dstBuffer-&gt;BindCLBuffer(_clCommandQueue), dstDesc,</div>\n+<div class=\"line\"><a id=\"l02582\" name=\"l02582\"></a><span class=\"lineno\"> 2582</span>                           duBuffer-&gt;BindCLBuffer(_clCommandQueue), duDesc,</div>\n+<div class=\"line\"><a id=\"l02583\" name=\"l02583\"></a><span class=\"lineno\"> 2583</span>                           dvBuffer-&gt;BindCLBuffer(_clCommandQueue), dvDesc,</div>\n+<div class=\"line\"><a id=\"l02584\" name=\"l02584\"></a><span class=\"lineno\"> 2584</span>                           duuBuffer-&gt;BindCLBuffer(_clCommandQueue), duuDesc,</div>\n+<div class=\"line\"><a id=\"l02585\" name=\"l02585\"></a><span class=\"lineno\"> 2585</span>                           duvBuffer-&gt;BindCLBuffer(_clCommandQueue), duvDesc,</div>\n+<div class=\"line\"><a id=\"l02586\" name=\"l02586\"></a><span class=\"lineno\"> 2586</span>                           dvvBuffer-&gt;BindCLBuffer(_clCommandQueue), dvvDesc,</div>\n+<div class=\"line\"><a id=\"l02587\" name=\"l02587\"></a><span class=\"lineno\"> 2587</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l02588\" name=\"l02588\"></a><span class=\"lineno\"> 2588</span>                           patchCoords-&gt;BindCLBuffer(_clCommandQueue),</div>\n+<div class=\"line\"><a id=\"l02589\" name=\"l02589\"></a><span class=\"lineno\"> 2589</span>                           patchTable-&gt;GetFVarPatchArrayBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l02590\" name=\"l02590\"></a><span class=\"lineno\"> 2590</span>                           patchTable-&gt;GetFVarPatchIndexBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l02591\" name=\"l02591\"></a><span class=\"lineno\"> 2591</span>                           patchTable-&gt;GetFVarPatchParamBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l02592\" name=\"l02592\"></a><span class=\"lineno\"> 2592</span>                           numStartEvents, startEvents, endEvent);</div>\n+<div class=\"line\"><a id=\"l02593\" name=\"l02593\"></a><span class=\"lineno\"> 2593</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l02594\" name=\"l02594\"></a><span class=\"lineno\"> 2594</span> </div>\n+<div class=\"line\"><a id=\"l02600\" name=\"l02600\"></a><span class=\"lineno\"> 2600</span> </div>\n+<div class=\"line\"><a id=\"l02603\" name=\"l02603\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#ade1086349c1a452f60bcf281383ceec2\"> 2603</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#ade1086349c1a452f60bcf281383ceec2\">Compile</a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l02604\" name=\"l02604\"></a><span class=\"lineno\"> 2604</span>                 <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l02605\" name=\"l02605\"></a><span class=\"lineno\"> 2605</span>                 <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc = <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l02606\" name=\"l02606\"></a><span class=\"lineno\"> 2606</span>                 <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc = <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l02607\" name=\"l02607\"></a><span class=\"lineno\"> 2607</span>                 <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc = <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l02608\" name=\"l02608\"></a><span class=\"lineno\"> 2608</span>                 <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc = <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l02609\" name=\"l02609\"></a><span class=\"lineno\"> 2609</span>                 <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc = <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>());</div>\n+<div class=\"line\"><a id=\"l02610\" name=\"l02610\"></a><span class=\"lineno\"> 2610</span> </div>\n+<div class=\"line\"><a id=\"l02612\" name=\"l02612\"></a><span class=\"lineno\"> 2612</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen02613\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l02613\" name=\"l02613\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#a7e77f811e9d48160701e705bb4300388\"> 2613</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01149.html#a7e77f811e9d48160701e705bb4300388\">Synchronize</a>(DEVICE_CONTEXT deviceContext) {</div>\n+<div class=\"line\"><a id=\"l02614\" name=\"l02614\"></a><span class=\"lineno\"> 2614</span>        <a class=\"code hl_function\" href=\"a01149.html#a7e77f811e9d48160701e705bb4300388\">Synchronize</a>(deviceContext-&gt;GetCommandQueue());</div>\n+<div class=\"line\"><a id=\"l02615\" name=\"l02615\"></a><span class=\"lineno\"> 2615</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l02616\" name=\"l02616\"></a><span class=\"lineno\"> 2616</span> </div>\n+<div class=\"line\"><a id=\"l02617\" name=\"l02617\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#a0529a707250f9931f945ec49d4e428d2\"> 2617</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01149.html#a0529a707250f9931f945ec49d4e428d2\">Synchronize</a>(cl_command_queue queue);</div>\n+<div class=\"line\"><a id=\"l02618\" name=\"l02618\"></a><span class=\"lineno\"> 2618</span> </div>\n+<div class=\"line\"><a id=\"l02619\" name=\"l02619\"></a><span class=\"lineno\"> 2619</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l02620\" name=\"l02620\"></a><span class=\"lineno\"> 2620</span>    cl_context _clContext;</div>\n+<div class=\"line\"><a id=\"l02621\" name=\"l02621\"></a><span class=\"lineno\"> 2621</span>    cl_command_queue _clCommandQueue;</div>\n+<div class=\"line\"><a id=\"l02622\" name=\"l02622\"></a><span class=\"lineno\"> 2622</span>    cl_program _program;</div>\n+<div class=\"line\"><a id=\"l02623\" name=\"l02623\"></a><span class=\"lineno\"> 2623</span>    cl_kernel _stencilKernel;</div>\n+<div class=\"line\"><a id=\"l02624\" name=\"l02624\"></a><span class=\"lineno\"> 2624</span>    cl_kernel _stencilDerivKernel;</div>\n+<div class=\"line\"><a id=\"l02625\" name=\"l02625\"></a><span class=\"lineno\"> 2625</span>    cl_kernel _patchKernel;</div>\n+<div class=\"line\"><a id=\"l02626\" name=\"l02626\"></a><span class=\"lineno\"> 2626</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l02627\" name=\"l02627\"></a><span class=\"lineno\"> 2627</span> </div>\n+<div class=\"line\"><a id=\"l02628\" name=\"l02628\"></a><span class=\"lineno\"> 2628</span>}  <span class=\"comment\">// end namespace Osd</span></div>\n+<div class=\"line\"><a id=\"l02629\" name=\"l02629\"></a><span class=\"lineno\"> 2629</span> </div>\n+<div class=\"line\"><a id=\"l02630\" name=\"l02630\"></a><span class=\"lineno\"> 2630</span>}  <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l02631\" name=\"l02631\"></a><span class=\"lineno\"> 2631</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l02632\" name=\"l02632\"></a><span class=\"lineno\"> 2632</span> </div>\n+<div class=\"line\"><a id=\"l02633\" name=\"l02633\"></a><span class=\"lineno\"> 2633</span>}  <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l02634\" name=\"l02634\"></a><span class=\"lineno\"> 2634</span> </div>\n+<div class=\"line\"><a id=\"l02635\" name=\"l02635\"></a><span class=\"lineno\"> 2635</span> </div>\n+<div class=\"line\"><a id=\"l02636\" name=\"l02636\"></a><span class=\"lineno\"> 2636</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_CL_EVALUATOR_H</span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa01065_html\"><div class=\"ttname\"><a href=\"a01065.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTable</a></div><div class=\"ttdoc\">Stencil table class wrapping the template for compatibility.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00273\">stencilTable.h:273</a></div></div>\n+<div class=\"ttc\" id=\"aa01081_html\"><div class=\"ttname\"><a href=\"a01081.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTable</a></div><div class=\"ttdoc\">Limit stencil table class wrapping the template for compatibility.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00583\">stencilTable.h:583</a></div></div>\n+<div class=\"ttc\" id=\"aa01141_html\"><div class=\"ttname\"><a href=\"a01141.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::BufferDescriptor</a></div><div class=\"ttdoc\">BufferDescriptor is a struct which describes buffer elements in interleaved data buffers....</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00061\">bufferDescriptor.h:61</a></div></div>\n+<div class=\"ttc\" id=\"aa01145_html\"><div class=\"ttname\"><a href=\"a01145.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLStencilTable</a></div><div class=\"ttdoc\">OpenCL stencil table.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00749_source.html#l00052\">clEvaluator.h:52</a></div></div>\n+<div class=\"ttc\" id=\"aa01145_html_a015241b43d27300535376319ae7b6dc4\"><div class=\"ttname\"><a href=\"a01145.html#a015241b43d27300535376319ae7b6dc4\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLStencilTable::GetDvvWeightsBuffer</a></div><div class=\"ttdeci\">cl_mem GetDvvWeightsBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00749_source.html#l00082\">clEvaluator.h:82</a></div></div>\n+<div class=\"ttc\" id=\"aa01145_html_a33ca6bb1dba9f8e390a58395d164431e\"><div class=\"ttname\"><a href=\"a01145.html#a33ca6bb1dba9f8e390a58395d164431e\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLStencilTable::CLStencilTable</a></div><div class=\"ttdeci\">CLStencilTable(Far::StencilTable const *stencilTable, cl_context clContext)</div></div>\n+<div class=\"ttc\" id=\"aa01145_html_a3bd38b85fd2bea1c4d2018d2f8e177a3\"><div class=\"ttname\"><a href=\"a01145.html#a3bd38b85fd2bea1c4d2018d2f8e177a3\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLStencilTable::GetOffsetsBuffer</a></div><div class=\"ttdeci\">cl_mem GetOffsetsBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00749_source.html#l00075\">clEvaluator.h:75</a></div></div>\n+<div class=\"ttc\" id=\"aa01145_html_a474edc933635aca814471b8d48950a0e\"><div class=\"ttname\"><a href=\"a01145.html#a474edc933635aca814471b8d48950a0e\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLStencilTable::Create</a></div><div class=\"ttdeci\">static CLStencilTable * Create(Far::LimitStencilTable const *limitStencilTable, DEVICE_CONTEXT context)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00749_source.html#l00061\">clEvaluator.h:61</a></div></div>\n+<div class=\"ttc\" id=\"aa01145_html_a5cbc4ec76e497871b20b4ef91f5f054f\"><div class=\"ttname\"><a href=\"a01145.html#a5cbc4ec76e497871b20b4ef91f5f054f\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLStencilTable::GetIndicesBuffer</a></div><div class=\"ttdeci\">cl_mem GetIndicesBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00749_source.html#l00076\">clEvaluator.h:76</a></div></div>\n+<div class=\"ttc\" id=\"aa01145_html_a65836d2070b943c8fecbad926d074de2\"><div class=\"ttname\"><a href=\"a01145.html#a65836d2070b943c8fecbad926d074de2\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLStencilTable::GetNumStencils</a></div><div class=\"ttdeci\">int GetNumStencils() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00749_source.html#l00083\">clEvaluator.h:83</a></div></div>\n+<div class=\"ttc\" id=\"aa01145_html_a65e52572efdebb80844185aada8d5951\"><div class=\"ttname\"><a href=\"a01145.html#a65e52572efdebb80844185aada8d5951\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLStencilTable::GetSizesBuffer</a></div><div class=\"ttdeci\">cl_mem GetSizesBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00749_source.html#l00074\">clEvaluator.h:74</a></div></div>\n+<div class=\"ttc\" id=\"aa01145_html_a9a1d122f4bea431331fa542cf6dee1f6\"><div class=\"ttname\"><a href=\"a01145.html#a9a1d122f4bea431331fa542cf6dee1f6\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLStencilTable::GetDuuWeightsBuffer</a></div><div class=\"ttdeci\">cl_mem GetDuuWeightsBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00749_source.html#l00080\">clEvaluator.h:80</a></div></div>\n+<div class=\"ttc\" id=\"aa01145_html_aa1550324554767683ae2bf0317e6bad6\"><div class=\"ttname\"><a href=\"a01145.html#aa1550324554767683ae2bf0317e6bad6\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLStencilTable::GetDvWeightsBuffer</a></div><div class=\"ttdeci\">cl_mem GetDvWeightsBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00749_source.html#l00079\">clEvaluator.h:79</a></div></div>\n+<div class=\"ttc\" id=\"aa01145_html_aa79d14d151020f9298c742c3072e7fc9\"><div class=\"ttname\"><a href=\"a01145.html#aa79d14d151020f9298c742c3072e7fc9\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLStencilTable::GetDuvWeightsBuffer</a></div><div class=\"ttdeci\">cl_mem GetDuvWeightsBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00749_source.html#l00081\">clEvaluator.h:81</a></div></div>\n+<div class=\"ttc\" id=\"aa01145_html_aab6c794e109053815894e2314f05564b\"><div class=\"ttname\"><a href=\"a01145.html#aab6c794e109053815894e2314f05564b\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLStencilTable::GetDuWeightsBuffer</a></div><div class=\"ttdeci\">cl_mem GetDuWeightsBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00749_source.html#l00078\">clEvaluator.h:78</a></div></div>\n+<div class=\"ttc\" id=\"aa01145_html_ab84d9750ece4e75ae7a51e7d912df82b\"><div class=\"ttname\"><a href=\"a01145.html#ab84d9750ece4e75ae7a51e7d912df82b\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLStencilTable::~CLStencilTable</a></div><div class=\"ttdeci\">~CLStencilTable()</div></div>\n+<div class=\"ttc\" id=\"aa01145_html_ad4e05c20d99b64b2160c1a0c96cb0c01\"><div class=\"ttname\"><a href=\"a01145.html#ad4e05c20d99b64b2160c1a0c96cb0c01\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLStencilTable::Create</a></div><div class=\"ttdeci\">static CLStencilTable * Create(Far::StencilTable const *stencilTable, DEVICE_CONTEXT context)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00749_source.html#l00055\">clEvaluator.h:55</a></div></div>\n+<div class=\"ttc\" id=\"aa01145_html_af2994e79cf93c872e39659321750351a\"><div class=\"ttname\"><a href=\"a01145.html#af2994e79cf93c872e39659321750351a\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLStencilTable::CLStencilTable</a></div><div class=\"ttdeci\">CLStencilTable(Far::LimitStencilTable const *limitStencilTable, cl_context clContext)</div></div>\n+<div class=\"ttc\" id=\"aa01145_html_af37e0ab1fae60f201db4eb21ff7e941e\"><div class=\"ttname\"><a href=\"a01145.html#af37e0ab1fae60f201db4eb21ff7e941e\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLStencilTable::GetWeightsBuffer</a></div><div class=\"ttdeci\">cl_mem GetWeightsBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00749_source.html#l00077\">clEvaluator.h:77</a></div></div>\n+<div class=\"ttc\" id=\"aa01149_html\"><div class=\"ttname\"><a href=\"a01149.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00749_source.html#l00100\">clEvaluator.h:100</a></div></div>\n+<div class=\"ttc\" id=\"aa01149_html_a035ab75e105567802674d86736e0959a\"><div class=\"ttname\"><a href=\"a01149.html#a035ab75e105567802674d86736e0959a\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, STENCIL_TABLE const *stencilTable, CLEvaluator const *instance, DEVICE_CONTEXT deviceContext, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL)</div><div class=\"ttdoc\">Generic static stencil function. This function has a same signature as other device kernels have so t...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00749_source.html#l00309\">clEvaluator.h:309</a></div></div>\n+<div class=\"ttc\" id=\"aa01149_html_a0529a707250f9931f945ec49d4e428d2\"><div class=\"ttname\"><a href=\"a01149.html#a0529a707250f9931f945ec49d4e428d2\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::Synchronize</a></div><div class=\"ttdeci\">static void Synchronize(cl_command_queue queue)</div></div>\n+<div class=\"ttc\" id=\"aa01149_html_a0852475f515ff2419bea208c2783742b\"><div class=\"ttname\"><a href=\"a01149.html#a0852475f515ff2419bea208c2783742b\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::~CLEvaluator</a></div><div class=\"ttdeci\">~CLEvaluator()</div><div class=\"ttdoc\">Destructor.</div></div>\n+<div class=\"ttc\" id=\"aa01149_html_a09c5fcdc9e1230c625d3205008d41c08\"><div class=\"ttname\"><a href=\"a01149.html#a09c5fcdc9e1230c625d3205008d41c08\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::EvalStencils</a></div><div class=\"ttdeci\">bool EvalStencils(cl_mem src, BufferDescriptor const &amp;srcDesc, cl_mem dst, BufferDescriptor const &amp;dstDesc, cl_mem du, BufferDescriptor const &amp;duDesc, cl_mem dv, BufferDescriptor const &amp;dvDesc, cl_mem sizes, cl_mem offsets, cl_mem indices, cl_mem weights, cl_mem duWeights, cl_mem dvWeights, int start, int end, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL) const</div><div class=\"ttdoc\">Dispatch the CL compute kernel asynchronously. returns false if the kernel hasn't been compiled yet.</div></div>\n+<div class=\"ttc\" id=\"aa01149_html_a0f2d760bbb9a4ea58eaf6e2806d033ca\"><div class=\"ttname\"><a href=\"a01149.html#a0f2d760bbb9a4ea58eaf6e2806d033ca\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, STENCIL_TABLE const *stencilTable, CLEvaluator const *instance, DEVICE_CONTEXT deviceContext, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL)</div><div class=\"ttdoc\">Generic static stencil function. This function has a same signature as other device kernels have so t...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00749_source.html#l00219\">clEvaluator.h:219</a></div></div>\n+<div class=\"ttc\" id=\"aa01149_html_a1243e4560da0f71a3dcd290772548d98\"><div class=\"ttname\"><a href=\"a01149.html#a1243e4560da0f71a3dcd290772548d98\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::Create</a></div><div class=\"ttdeci\">static CLEvaluator * Create(BufferDescriptor const &amp;srcDesc, BufferDescriptor const &amp;dstDesc, BufferDescriptor const &amp;duDesc, BufferDescriptor const &amp;dvDesc, cl_context clContext, cl_command_queue clCommandQueue)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00749_source.html#l00116\">clEvaluator.h:116</a></div></div>\n+<div class=\"ttc\" id=\"aa01149_html_a1f66ce14f335d4a575fc95365bf811d9\"><div class=\"ttname\"><a href=\"a01149.html#a1f66ce14f335d4a575fc95365bf811d9\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel, CLEvaluator const *instance, DEVICE_CONTEXT deviceContext, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00749_source.html#l02231\">clEvaluator.h:2231</a></div></div>\n+<div class=\"ttc\" id=\"aa01149_html_a22187001e33f98dc3195caab9968f1f0\"><div class=\"ttname\"><a href=\"a01149.html#a22187001e33f98dc3195caab9968f1f0\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::EvalPatches</a></div><div class=\"ttdeci\">bool EvalPatches(cl_mem src, BufferDescriptor const &amp;srcDesc, cl_mem dst, BufferDescriptor const &amp;dstDesc, cl_mem du, BufferDescriptor const &amp;duDesc, cl_mem dv, BufferDescriptor const &amp;dvDesc, int numPatchCoords, cl_mem patchCoordsBuffer, cl_mem patchArrayBuffer, cl_mem patchIndexBuffer, cl_mem patchParamsBuffer, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL) const</div></div>\n+<div class=\"ttc\" id=\"aa01149_html_a222342a2581dc8a6366a16589b316959\"><div class=\"ttname\"><a href=\"a01149.html#a222342a2581dc8a6366a16589b316959\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL) const</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00749_source.html#l01978\">clEvaluator.h:1978</a></div></div>\n+<div class=\"ttc\" id=\"aa01149_html_a26fd58275b838dbf0da96410269a41ef\"><div class=\"ttname\"><a href=\"a01149.html#a26fd58275b838dbf0da96410269a41ef\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::EvalStencils</a></div><div class=\"ttdeci\">bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, STENCIL_TABLE const *stencilTable, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL) const</div><div class=\"ttdoc\">Generic stencil function.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00749_source.html#l00561\">clEvaluator.h:561</a></div></div>\n+<div class=\"ttc\" id=\"aa01149_html_a28ceea444575e321b0e98cb33fd0ed61\"><div class=\"ttname\"><a href=\"a01149.html#a28ceea444575e321b0e98cb33fd0ed61\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::EvalPatches</a></div><div class=\"ttdeci\">bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL) const</div><div class=\"ttdoc\">Generic limit eval function with derivatives. This function has a same signature as other device kern...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00749_source.html#l01379\">clEvaluator.h:1379</a></div></div>\n+<div class=\"ttc\" id=\"aa01149_html_a2c24b70c9312d8dff3fecb9ddea52c44\"><div class=\"ttname\"><a href=\"a01149.html#a2c24b70c9312d8dff3fecb9ddea52c44\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::Instantiatable</a></div><div class=\"ttdeci\">bool Instantiatable</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00749_source.html#l00102\">clEvaluator.h:102</a></div></div>\n+<div class=\"ttc\" id=\"aa01149_html_a3a2faa1170cedd851fea7266e0ff7eda\"><div class=\"ttname\"><a href=\"a01149.html#a3a2faa1170cedd851fea7266e0ff7eda\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::Create</a></div><div class=\"ttdeci\">static CLEvaluator * Create(BufferDescriptor const &amp;srcDesc, BufferDescriptor const &amp;dstDesc, BufferDescriptor const &amp;duDesc, BufferDescriptor const &amp;dvDesc, DEVICE_CONTEXT deviceContext)</div><div class=\"ttdoc\">Generic creator template.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00749_source.html#l00106\">clEvaluator.h:106</a></div></div>\n+<div class=\"ttc\" id=\"aa01149_html_a4306bdafdbba79ec4c659b9743701955\"><div class=\"ttname\"><a href=\"a01149.html#a4306bdafdbba79ec4c659b9743701955\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel, CLEvaluator const *instance, DEVICE_CONTEXT deviceContext, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00749_source.html#l02061\">clEvaluator.h:2061</a></div></div>\n+<div class=\"ttc\" id=\"aa01149_html_a49cef5f95d8dec6c11fc1dd62dcd7045\"><div class=\"ttname\"><a href=\"a01149.html#a49cef5f95d8dec6c11fc1dd62dcd7045\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::Create</a></div><div class=\"ttdeci\">static CLEvaluator * Create(BufferDescriptor const &amp;srcDesc, BufferDescriptor const &amp;dstDesc, BufferDescriptor const &amp;duDesc, BufferDescriptor const &amp;dvDesc, BufferDescriptor const &amp;duuDesc, BufferDescriptor const &amp;duvDesc, BufferDescriptor const &amp;dvvDesc, DEVICE_CONTEXT deviceContext)</div><div class=\"ttdoc\">Generic creator template.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00749_source.html#l00131\">clEvaluator.h:131</a></div></div>\n+<div class=\"ttc\" id=\"aa01149_html_a4d6d90d5c4b0237cbeab58062dbdf5c8\"><div class=\"ttname\"><a href=\"a01149.html#a4d6d90d5c4b0237cbeab58062dbdf5c8\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::EvalPatches</a></div><div class=\"ttdeci\">bool EvalPatches(cl_mem src, BufferDescriptor const &amp;srcDesc, cl_mem dst, BufferDescriptor const &amp;dstDesc, cl_mem du, BufferDescriptor const &amp;duDesc, cl_mem dv, BufferDescriptor const &amp;dvDesc, cl_mem duu, BufferDescriptor const &amp;duuDesc, cl_mem duv, BufferDescriptor const &amp;duvDesc, cl_mem dvv, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, cl_mem patchCoordsBuffer, cl_mem patchArrayBuffer, cl_mem patchIndexBuffer, cl_mem patchParamsBuffer, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL) const</div></div>\n+<div class=\"ttc\" id=\"aa01149_html_a5d554da3e958f90c0c39296029b69c4e\"><div class=\"ttname\"><a href=\"a01149.html#a5d554da3e958f90c0c39296029b69c4e\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::EvalStencils</a></div><div class=\"ttdeci\">bool EvalStencils(cl_mem src, BufferDescriptor const &amp;srcDesc, cl_mem dst, BufferDescriptor const &amp;dstDesc, cl_mem du, BufferDescriptor const &amp;duDesc, cl_mem dv, BufferDescriptor const &amp;dvDesc, cl_mem duu, BufferDescriptor const &amp;duuDesc, cl_mem duv, BufferDescriptor const &amp;duvDesc, cl_mem dvv, BufferDescriptor const &amp;dvvDesc, cl_mem sizes, cl_mem offsets, cl_mem indices, cl_mem weights, cl_mem duWeights, cl_mem dvWeights, cl_mem duuWeights, cl_mem duvWeights, cl_mem dvvWeights, int start, int end, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL) const</div><div class=\"ttdoc\">Dispatch the CL compute kernel asynchronously. returns false if the kernel hasn't been compiled yet.</div></div>\n+<div class=\"ttc\" id=\"aa01149_html_a67b59f584f05e87e91b371cb3744f137\"><div class=\"ttname\"><a href=\"a01149.html#a67b59f584f05e87e91b371cb3744f137\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel=0, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL) const</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00749_source.html#l02564\">clEvaluator.h:2564</a></div></div>\n+<div class=\"ttc\" id=\"aa01149_html_a7053fc9101b3f27878eb21c1d96a6421\"><div class=\"ttname\"><a href=\"a01149.html#a7053fc9101b3f27878eb21c1d96a6421\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::EvalPatches</a></div><div class=\"ttdeci\">bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL) const</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00749_source.html#l01217\">clEvaluator.h:1217</a></div></div>\n+<div class=\"ttc\" id=\"aa01149_html_a74b2f41060f4bc17f3522444d30126b6\"><div class=\"ttname\"><a href=\"a01149.html#a74b2f41060f4bc17f3522444d30126b6\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::EvalStencils</a></div><div class=\"ttdeci\">bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, STENCIL_TABLE const *stencilTable, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL) const</div><div class=\"ttdoc\">Generic stencil function.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00749_source.html#l00646\">clEvaluator.h:646</a></div></div>\n+<div class=\"ttc\" id=\"aa01149_html_a7676de92e41c1e04e85f097f3d6d931e\"><div class=\"ttname\"><a href=\"a01149.html#a7676de92e41c1e04e85f097f3d6d931e\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, CLEvaluator const *instance, DEVICE_CONTEXT deviceContext, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00749_source.html#l01653\">clEvaluator.h:1653</a></div></div>\n+<div class=\"ttc\" id=\"aa01149_html_a7e77f811e9d48160701e705bb4300388\"><div class=\"ttname\"><a href=\"a01149.html#a7e77f811e9d48160701e705bb4300388\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::Synchronize</a></div><div class=\"ttdeci\">static void Synchronize(DEVICE_CONTEXT deviceContext)</div><div class=\"ttdoc\">Wait the OpenCL kernels finish.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00749_source.html#l02613\">clEvaluator.h:2613</a></div></div>\n+<div class=\"ttc\" id=\"aa01149_html_a7fc185c4d801f80736021470b10e0ebd\"><div class=\"ttname\"><a href=\"a01149.html#a7fc185c4d801f80736021470b10e0ebd\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, CLEvaluator const *instance, DEVICE_CONTEXT deviceContext, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00749_source.html#l01125\">clEvaluator.h:1125</a></div></div>\n+<div class=\"ttc\" id=\"aa01149_html_a804e77ddd54d0d006f2274d0450cca6b\"><div class=\"ttname\"><a href=\"a01149.html#a804e77ddd54d0d006f2274d0450cca6b\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, STENCIL_TABLE const *stencilTable, CLEvaluator const *instance, DEVICE_CONTEXT deviceContext, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL)</div><div class=\"ttdoc\">Generic static stencil function. This function has a same signature as other device kernels have so t...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00749_source.html#l00421\">clEvaluator.h:421</a></div></div>\n+<div class=\"ttc\" id=\"aa01149_html_a81c2668b311eec00fd35e1451e7132b7\"><div class=\"ttname\"><a href=\"a01149.html#a81c2668b311eec00fd35e1451e7132b7\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::EvalStencils</a></div><div class=\"ttdeci\">bool EvalStencils(cl_mem src, BufferDescriptor const &amp;srcDesc, cl_mem dst, BufferDescriptor const &amp;dstDesc, cl_mem sizes, cl_mem offsets, cl_mem indices, cl_mem weights, int start, int end, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL) const</div></div>\n+<div class=\"ttc\" id=\"aa01149_html_a927d8aae868323d5208b1e95c2591ad1\"><div class=\"ttname\"><a href=\"a01149.html#a927d8aae868323d5208b1e95c2591ad1\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, CLEvaluator const *instance, DEVICE_CONTEXT deviceContext, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00749_source.html#l01489\">clEvaluator.h:1489</a></div></div>\n+<div class=\"ttc\" id=\"aa01149_html_aa479c7900943eed61feede277083eb08\"><div class=\"ttname\"><a href=\"a01149.html#aa479c7900943eed61feede277083eb08\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel=0, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL) const</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00749_source.html#l02329\">clEvaluator.h:2329</a></div></div>\n+<div class=\"ttc\" id=\"aa01149_html_aa55b9dc6ee02d2a3beb2f85df1794afb\"><div class=\"ttname\"><a href=\"a01149.html#aa55b9dc6ee02d2a3beb2f85df1794afb\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel, CLEvaluator const *instance, DEVICE_CONTEXT deviceContext, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00749_source.html#l02437\">clEvaluator.h:2437</a></div></div>\n+<div class=\"ttc\" id=\"aa01149_html_aae831ff91b8da1852052d65ffc032ff9\"><div class=\"ttname\"><a href=\"a01149.html#aae831ff91b8da1852052d65ffc032ff9\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::Create</a></div><div class=\"ttdeci\">static CLEvaluator * Create(BufferDescriptor const &amp;srcDesc, BufferDescriptor const &amp;dstDesc, BufferDescriptor const &amp;duDesc, BufferDescriptor const &amp;dvDesc, BufferDescriptor const &amp;duuDesc, BufferDescriptor const &amp;duvDesc, BufferDescriptor const &amp;dvvDesc, cl_context clContext, cl_command_queue clCommandQueue)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00749_source.html#l00145\">clEvaluator.h:145</a></div></div>\n+<div class=\"ttc\" id=\"aa01149_html_ab011f671d8598811f0ed39a28616f908\"><div class=\"ttname\"><a href=\"a01149.html#ab011f671d8598811f0ed39a28616f908\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, CLEvaluator const *instance, DEVICE_CONTEXT deviceContext, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00749_source.html#l01003\">clEvaluator.h:1003</a></div></div>\n+<div class=\"ttc\" id=\"aa01149_html_ab2a20bb6b2533aba43bd534e43e7dcac\"><div class=\"ttname\"><a href=\"a01149.html#ab2a20bb6b2533aba43bd534e43e7dcac\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL) const</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00749_source.html#l01749\">clEvaluator.h:1749</a></div></div>\n+<div class=\"ttc\" id=\"aa01149_html_ab5cae7e895f2efe955b27ae3dafccfd2\"><div class=\"ttname\"><a href=\"a01149.html#ab5cae7e895f2efe955b27ae3dafccfd2\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, CLEvaluator const *instance, DEVICE_CONTEXT deviceContext, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00749_source.html#l00902\">clEvaluator.h:902</a></div></div>\n+<div class=\"ttc\" id=\"aa01149_html_ac15f843a06ecca29a922132ab59e3890\"><div class=\"ttname\"><a href=\"a01149.html#ac15f843a06ecca29a922132ab59e3890\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL) const</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00749_source.html#l01568\">clEvaluator.h:1568</a></div></div>\n+<div class=\"ttc\" id=\"aa01149_html_ac81e120ca5b078e6563f78e7726e3c40\"><div class=\"ttname\"><a href=\"a01149.html#ac81e120ca5b078e6563f78e7726e3c40\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, CLEvaluator const *instance, DEVICE_CONTEXT deviceContext, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00749_source.html#l01854\">clEvaluator.h:1854</a></div></div>\n+<div class=\"ttc\" id=\"aa01149_html_ac9a39efadbe573a03ffe5971586f72e8\"><div class=\"ttname\"><a href=\"a01149.html#ac9a39efadbe573a03ffe5971586f72e8\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::EvalStencils</a></div><div class=\"ttdeci\">bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, STENCIL_TABLE const *stencilTable, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL) const</div><div class=\"ttdoc\">Generic stencil function.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00749_source.html#l00500\">clEvaluator.h:500</a></div></div>\n+<div class=\"ttc\" id=\"aa01149_html_ad62bdcb72a8d878f80a6e6a53abebccd\"><div class=\"ttname\"><a href=\"a01149.html#ad62bdcb72a8d878f80a6e6a53abebccd\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::EvalPatches</a></div><div class=\"ttdeci\">bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL) const</div><div class=\"ttdoc\">Generic limit eval function with derivatives. This function has a same signature as other device kern...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00749_source.html#l01288\">clEvaluator.h:1288</a></div></div>\n+<div class=\"ttc\" id=\"aa01149_html_adbb0aafb7db3284f164499e8007c4cac\"><div class=\"ttname\"><a href=\"a01149.html#adbb0aafb7db3284f164499e8007c4cac\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::CLEvaluator</a></div><div class=\"ttdeci\">CLEvaluator(cl_context context, cl_command_queue queue)</div><div class=\"ttdoc\">Constructor.</div></div>\n+<div class=\"ttc\" id=\"aa01149_html_ade1086349c1a452f60bcf281383ceec2\"><div class=\"ttname\"><a href=\"a01149.html#ade1086349c1a452f60bcf281383ceec2\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::Compile</a></div><div class=\"ttdeci\">bool Compile(BufferDescriptor const &amp;srcDesc, BufferDescriptor const &amp;dstDesc, BufferDescriptor const &amp;duDesc=BufferDescriptor(), BufferDescriptor const &amp;dvDesc=BufferDescriptor(), BufferDescriptor const &amp;duuDesc=BufferDescriptor(), BufferDescriptor const &amp;duvDesc=BufferDescriptor(), BufferDescriptor const &amp;dvvDesc=BufferDescriptor())</div></div>\n+<div class=\"ttc\" id=\"aa01149_html_afadb249fa0e871eead60821dff48d73c\"><div class=\"ttname\"><a href=\"a01149.html#afadb249fa0e871eead60821dff48d73c\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel=0, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL) const</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00749_source.html#l02143\">clEvaluator.h:2143</a></div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7f420b72a822828cfa8b0561c695a5cc.html\">far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00749.html\">error.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00749.html\">clEvaluator.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-error.h\n+clEvaluator.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2013 Pixar\n+2// Copyright 2015 Pixar\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -24,103 +24,1553 @@\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n 24\n-25#ifndef OPENSUBDIV3_FAR_ERROR_H\n-26#define OPENSUBDIV3_FAR_ERROR_H\n+25#ifndef OPENSUBDIV3_OSD_CL_EVALUATOR_H\n+26#define OPENSUBDIV3_OSD_CL_EVALUATOR_H\n 27\n 28#include \"../version.h\"\n 29\n-30namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-31namespace OPENSUBDIV_VERSION {\n-32\n-33namespace Far {\n-34\n-_\b3_\b5typedef enum {\n-_\b3_\b6 _\bF_\bA_\bR_\b__\bN_\bO_\b__\bE_\bR_\bR_\bO_\bR,\n-_\b3_\b7 _\bF_\bA_\bR_\b__\bF_\bA_\bT_\bA_\bL_\b__\bE_\bR_\bR_\bO_\bR,\n-_\b3_\b8 _\bF_\bA_\bR_\b__\bI_\bN_\bT_\bE_\bR_\bN_\bA_\bL_\b__\bC_\bO_\bD_\bI_\bN_\bG_\b__\bE_\bR_\bR_\bO_\bR,\n-_\b3_\b9 _\bF_\bA_\bR_\b__\bC_\bO_\bD_\bI_\bN_\bG_\b__\bE_\bR_\bR_\bO_\bR,\n-40 _\bF_\bA_\bR_\b__\bR_\bU_\bN_\bT_\bI_\bM_\bE_\b__\bE_\bR_\bR_\bO_\bR\n-_\b4_\b1} _\bE_\br_\br_\bo_\br_\bT_\by_\bp_\be;\n+30#include \"../osd/opencl.h\"\n+31#include \"../osd/types.h\"\n+32#include \"../osd/bufferDescriptor.h\"\n+33\n+34namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+35namespace OPENSUBDIV_VERSION {\n+36\n+37namespace Far {\n+38 class PatchTable;\n+39 class StencilTable;\n+40 class LimitStencilTable;\n+41}\n 42\n-43\n-_\b4_\b5typedef void (*_\bE_\br_\br_\bo_\br_\bC_\ba_\bl_\bl_\bb_\ba_\bc_\bk_\bF_\bu_\bn_\bc)(_\bE_\br_\br_\bo_\br_\bT_\by_\bp_\be err, const char *message);\n-46\n-_\b5_\b3void _\bS_\be_\bt_\bE_\br_\br_\bo_\br_\bC_\ba_\bl_\bl_\bb_\ba_\bc_\bk(_\bE_\br_\br_\bo_\br_\bC_\ba_\bl_\bl_\bb_\ba_\bc_\bk_\bF_\bu_\bn_\bc func);\n-54\n-55\n-_\b5_\b7typedef void (*_\bW_\ba_\br_\bn_\bi_\bn_\bg_\bC_\ba_\bl_\bl_\bb_\ba_\bc_\bk_\bF_\bu_\bn_\bc)(const char *message);\n-58\n-_\b6_\b5void _\bS_\be_\bt_\bW_\ba_\br_\bn_\bi_\bn_\bg_\bC_\ba_\bl_\bl_\bb_\ba_\bc_\bk(_\bW_\ba_\br_\bn_\bi_\bn_\bg_\bC_\ba_\bl_\bl_\bb_\ba_\bc_\bk_\bF_\bu_\bn_\bc func);\n+43namespace Osd {\n+44\n+_\b5_\b2class _\bC_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be {\n+53public:\n+54 template <typename DEVICE_CONTEXT>\n+_\b5_\b5 static _\bC_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be *_\bC_\br_\be_\ba_\bt_\be(_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *stencilTable,\n+56 DEVICE_CONTEXT context) {\n+57 return new _\bC_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(stencilTable, context->GetContext());\n+58 }\n+59\n+60 template <typename DEVICE_CONTEXT>\n+_\b6_\b1 static _\bC_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be *_\bC_\br_\be_\ba_\bt_\be(\n+62 _\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *limitStencilTable,\n+63 DEVICE_CONTEXT context) {\n+64 return new _\bC_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(limitStencilTable, context->GetContext());\n+65 }\n 66\n-67\n-68//\n-69// The following are intended for internal use only (and will eventually\n-70// be moved within namespace internal)\n-71//\n+_\b6_\b7 _\bC_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *stencilTable,\n+68 cl_context clContext);\n+_\b6_\b9 _\bC_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *limitStencilTable,\n+70 cl_context clContext);\n+_\b7_\b1 _\b~_\bC_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be();\n 72\n-_\b7_\b9void _\bE_\br_\br_\bo_\br(_\bE_\br_\br_\bo_\br_\bT_\by_\bp_\be err, const char *format, ...);\n-80\n-_\b8_\b5void _\bW_\ba_\br_\bn_\bi_\bn_\bg(const char *format, ...);\n-86\n-87\n-88} // end namespace\n-89\n-90} // end namespace OPENSUBDIV_VERSION\n-91using namespace OPENSUBDIV_VERSION;\n-92\n-93} // end namespace OpenSubdiv\n-94\n-95#endif // OPENSUBDIV3_FAR_ERROR_H\n+73 // interfaces needed for CLComputeKernel\n+_\b7_\b4 cl_mem _\bG_\be_\bt_\bS_\bi_\bz_\be_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _sizes; }\n+_\b7_\b5 cl_mem _\bG_\be_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _offsets; }\n+_\b7_\b6 cl_mem _\bG_\be_\bt_\bI_\bn_\bd_\bi_\bc_\be_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _indices; }\n+_\b7_\b7 cl_mem _\bG_\be_\bt_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _weights; }\n+_\b7_\b8 cl_mem _\bG_\be_\bt_\bD_\bu_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _duWeights; }\n+_\b7_\b9 cl_mem _\bG_\be_\bt_\bD_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _dvWeights; }\n+_\b8_\b0 cl_mem _\bG_\be_\bt_\bD_\bu_\bu_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _duuWeights; }\n+_\b8_\b1 cl_mem _\bG_\be_\bt_\bD_\bu_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _duvWeights; }\n+_\b8_\b2 cl_mem _\bG_\be_\bt_\bD_\bv_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _dvvWeights; }\n+_\b8_\b3 int _\bG_\be_\bt_\bN_\bu_\bm_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs() const { return _numStencils; }\n+84\n+85private:\n+86 cl_mem _sizes;\n+87 cl_mem _offsets;\n+88 cl_mem _indices;\n+89 cl_mem _weights;\n+90 cl_mem _duWeights;\n+91 cl_mem _dvWeights;\n+92 cl_mem _duuWeights;\n+93 cl_mem _duvWeights;\n+94 cl_mem _dvvWeights;\n+95 int _numStencils;\n+96};\n+97\n+98// --------------------------------------------------------------------------\n+-\n+99\n+_\b1_\b0_\b0class _\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br {\n+101public:\n+_\b1_\b0_\b2 typedef bool _\bI_\bn_\bs_\bt_\ba_\bn_\bt_\bi_\ba_\bt_\ba_\bb_\bl_\be;\n+103\n+105 template <typename DEVICE_CONTEXT>\n+_\b1_\b0_\b6 static _\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br *_\bC_\br_\be_\ba_\bt_\be(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+107 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+108 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+109 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+110 DEVICE_CONTEXT deviceContext) {\n+111 return _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc, duDesc, dvDesc,\n+112 deviceContext->GetContext(),\n+113 deviceContext->GetCommandQueue());\n+114 }\n+115\n+_\b1_\b1_\b6 static _\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br * _\bC_\br_\be_\ba_\bt_\be(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+117 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+118 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+119 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+120 cl_context clContext,\n+121 cl_command_queue clCommandQueue) {\n+122 _\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br *instance = new _\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br(clContext, clCommandQueue);\n+123 if (instance->_\bC_\bo_\bm_\bp_\bi_\bl_\be(srcDesc, dstDesc, duDesc, dvDesc))\n+124 return instance;\n+125 delete instance;\n+126 return NULL;\n+127 }\n+128\n+130 template <typename DEVICE_CONTEXT>\n+_\b1_\b3_\b1 static _\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br *_\bC_\br_\be_\ba_\bt_\be(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+132 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+133 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+134 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+135 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+136 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+137 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+138 DEVICE_CONTEXT deviceContext) {\n+139 return _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc, duDesc, dvDesc,\n+140 duuDesc, duvDesc, dvvDesc,\n+141 deviceContext->GetContext(),\n+142 deviceContext->GetCommandQueue());\n+143 }\n+144\n+_\b1_\b4_\b5 static _\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br * _\bC_\br_\be_\ba_\bt_\be(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+146 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+147 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+148 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+149 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+150 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+151 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+152 cl_context clContext,\n+153 cl_command_queue clCommandQueue) {\n+154 _\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br *instance = new _\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br(clContext, clCommandQueue);\n+155 if (instance->_\bC_\bo_\bm_\bp_\bi_\bl_\be(srcDesc, dstDesc, duDesc, dvDesc,\n+156 duuDesc, duvDesc, dvvDesc))\n+157 return instance;\n+158 delete instance;\n+159 return NULL;\n+160 }\n+161\n+_\b1_\b6_\b3 _\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br(cl_context context, cl_command_queue queue);\n+164\n+_\b1_\b6_\b6 _\b~_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br();\n+167\n+173\n+217 template <typename SRC_BUFFER, typename DST_BUFFER,\n+218 typename STENCIL_TABLE, typename DEVICE_CONTEXT>\n+_\b2_\b1_\b9 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n+220 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+221 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+222 STENCIL_TABLE const *stencilTable,\n+223 _\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n+224 DEVICE_CONTEXT deviceContext,\n+225 unsigned int numStartEvents=0,\n+226 const cl_event* startEvents=NULL,\n+227 cl_event* endEvent=NULL) {\n+228\n+229 if (instance) {\n+230 return instance->_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer, srcDesc,\n+231 dstBuffer, dstDesc,\n+232 stencilTable,\n+233 numStartEvents, startEvents, endEvent);\n+234 } else {\n+235 // Create an instance on demand (slow)\n+236 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n+237 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+238 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+239 deviceContext);\n+240 if (instance) {\n+241 bool r = instance->_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer, srcDesc,\n+242 dstBuffer, dstDesc,\n+243 stencilTable,\n+244 numStartEvents, startEvents, endEvent);\n+245 delete instance;\n+246 return r;\n+247 }\n+248 return false;\n+249 }\n+250 }\n+251\n+307 template <typename SRC_BUFFER, typename DST_BUFFER,\n+308 typename STENCIL_TABLE, typename DEVICE_CONTEXT>\n+_\b3_\b0_\b9 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n+310 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+311 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+312 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+313 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+314 STENCIL_TABLE const *stencilTable,\n+315 _\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n+316 DEVICE_CONTEXT deviceContext,\n+317 unsigned int numStartEvents=0,\n+318 const cl_event* startEvents=NULL,\n+319 cl_event* endEvent=NULL) {\n+320\n+321 if (instance) {\n+322 return instance->_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer, srcDesc,\n+323 dstBuffer, dstDesc,\n+324 duBuffer, duDesc,\n+325 dvBuffer, dvDesc,\n+326 stencilTable,\n+327 numStartEvents, startEvents, endEvent);\n+328 } else {\n+329 // Create an instance on demand (slow)\n+330 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc, duDesc, dvDesc,\n+331 deviceContext);\n+332 if (instance) {\n+333 bool r = instance->_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer, srcDesc,\n+334 dstBuffer, dstDesc,\n+335 duBuffer, duDesc,\n+336 dvBuffer, dvDesc,\n+337 stencilTable,\n+338 numStartEvents, startEvents, endEvent);\n+339 delete instance;\n+340 return r;\n+341 }\n+342 return false;\n+343 }\n+344 }\n+345\n+419 template <typename SRC_BUFFER, typename DST_BUFFER,\n+420 typename STENCIL_TABLE, typename DEVICE_CONTEXT>\n+_\b4_\b2_\b1 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n+422 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+423 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+424 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+425 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+426 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+427 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+428 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+429 STENCIL_TABLE const *stencilTable,\n+430 _\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n+431 DEVICE_CONTEXT deviceContext,\n+432 unsigned int numStartEvents=0,\n+433 const cl_event* startEvents=NULL,\n+434 cl_event* endEvent=NULL) {\n+435\n+436 if (instance) {\n+437 return instance->_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer, srcDesc,\n+438 dstBuffer, dstDesc,\n+439 duBuffer, duDesc,\n+440 dvBuffer, dvDesc,\n+441 duuBuffer, duuDesc,\n+442 duvBuffer, duvDesc,\n+443 dvvBuffer, dvvDesc,\n+444 stencilTable,\n+445 numStartEvents, startEvents, endEvent);\n+446 } else {\n+447 // Create an instance on demand (slow)\n+448 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n+449 duDesc, dvDesc,\n+450 duuDesc, duvDesc, dvvDesc,\n+451 deviceContext);\n+452 if (instance) {\n+453 bool r = instance->_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer, srcDesc,\n+454 dstBuffer, dstDesc,\n+455 duBuffer, duDesc,\n+456 dvBuffer, dvDesc,\n+457 duuBuffer, duuDesc,\n+458 duvBuffer, duvDesc,\n+459 dvvBuffer, dvvDesc,\n+460 stencilTable,\n+461 numStartEvents, startEvents, endEvent);\n+462 delete instance;\n+463 return r;\n+464 }\n+465 return false;\n+466 }\n+467 }\n+468\n+499 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n+_\b5_\b0_\b0 bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n+501 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+502 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+503 STENCIL_TABLE const *stencilTable,\n+504 unsigned int numStartEvents=0,\n+505 const cl_event* startEvents=NULL,\n+506 cl_event* endEvent=NULL) const {\n+507 return _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc,\n+508 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc,\n+509 stencilTable->GetSizesBuffer(),\n+510 stencilTable->GetOffsetsBuffer(),\n+511 stencilTable->GetIndicesBuffer(),\n+512 stencilTable->GetWeightsBuffer(),\n+513 0,\n+514 stencilTable->GetNumStencils(),\n+515 numStartEvents, startEvents, endEvent);\n+516 }\n+517\n+560 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n+_\b5_\b6_\b1 bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n+562 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+563 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+564 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+565 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+566 STENCIL_TABLE const *stencilTable,\n+567 unsigned int numStartEvents=0,\n+568 const cl_event* startEvents=NULL,\n+569 cl_event* endEvent=NULL) const {\n+570 return _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc,\n+571 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc,\n+572 duBuffer->BindCLBuffer(_clCommandQueue), duDesc,\n+573 dvBuffer->BindCLBuffer(_clCommandQueue), dvDesc,\n+574 stencilTable->GetSizesBuffer(),\n+575 stencilTable->GetOffsetsBuffer(),\n+576 stencilTable->GetIndicesBuffer(),\n+577 stencilTable->GetWeightsBuffer(),\n+578 stencilTable->GetDuWeightsBuffer(),\n+579 stencilTable->GetDvWeightsBuffer(),\n+580 0,\n+581 stencilTable->GetNumStencils(),\n+582 numStartEvents, startEvents, endEvent);\n+583 }\n+584\n+645 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n+_\b6_\b4_\b6 bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n+647 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+648 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+649 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+650 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+651 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+652 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+653 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+654 STENCIL_TABLE const *stencilTable,\n+655 unsigned int numStartEvents=0,\n+656 const cl_event* startEvents=NULL,\n+657 cl_event* endEvent=NULL) const {\n+658 return _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc,\n+659 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc,\n+660 duBuffer->BindCLBuffer(_clCommandQueue), duDesc,\n+661 dvBuffer->BindCLBuffer(_clCommandQueue), dvDesc,\n+662 duuBuffer->BindCLBuffer(_clCommandQueue), duuDesc,\n+663 duvBuffer->BindCLBuffer(_clCommandQueue), duvDesc,\n+664 dvvBuffer->BindCLBuffer(_clCommandQueue), dvvDesc,\n+665 stencilTable->GetSizesBuffer(),\n+666 stencilTable->GetOffsetsBuffer(),\n+667 stencilTable->GetIndicesBuffer(),\n+668 stencilTable->GetWeightsBuffer(),\n+669 stencilTable->GetDuWeightsBuffer(),\n+670 stencilTable->GetDvWeightsBuffer(),\n+671 stencilTable->GetDuuWeightsBuffer(),\n+672 stencilTable->GetDuvWeightsBuffer(),\n+673 stencilTable->GetDvvWeightsBuffer(),\n+674 0,\n+675 stencilTable->GetNumStencils(),\n+676 numStartEvents, startEvents, endEvent);\n+677 }\n+678\n+_\b6_\b8_\b1 bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(cl_mem src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+682 cl_mem dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+683 cl_mem sizes,\n+684 cl_mem offsets,\n+685 cl_mem indices,\n+686 cl_mem weights,\n+687 int start,\n+688 int end,\n+689 unsigned int numStartEvents=0,\n+690 const cl_event* startEvents=NULL,\n+691 cl_event* endEvent=NULL) const;\n+692\n+_\b7_\b4_\b1 bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(cl_mem src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+742 cl_mem dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+743 cl_mem du, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+744 cl_mem dv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+745 cl_mem sizes,\n+746 cl_mem offsets,\n+747 cl_mem indices,\n+748 cl_mem weights,\n+749 cl_mem duWeights,\n+750 cl_mem dvWeights,\n+751 int start,\n+752 int end,\n+753 unsigned int numStartEvents=0,\n+754 const cl_event* startEvents=NULL,\n+755 cl_event* endEvent=NULL) const;\n+756\n+_\b8_\b2_\b3 bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(cl_mem src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+824 cl_mem dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+825 cl_mem du, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+826 cl_mem dv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+827 cl_mem duu, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+828 cl_mem duv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+829 cl_mem dvv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+830 cl_mem sizes,\n+831 cl_mem offsets,\n+832 cl_mem indices,\n+833 cl_mem weights,\n+834 cl_mem duWeights,\n+835 cl_mem dvWeights,\n+836 cl_mem duuWeights,\n+837 cl_mem duvWeights,\n+838 cl_mem dvvWeights,\n+839 int start,\n+840 int end,\n+841 unsigned int numStartEvents=0,\n+842 const cl_event* startEvents=NULL,\n+843 cl_event* endEvent=NULL) const;\n+844\n+850\n+899 template <typename SRC_BUFFER, typename DST_BUFFER,\n+900 typename PATCHCOORD_BUFFER, typename PATCH_TABLE,\n+901 typename DEVICE_CONTEXT>\n+_\b9_\b0_\b2 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n+903 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+904 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+905 int numPatchCoords,\n+906 PATCHCOORD_BUFFER *patchCoords,\n+907 PATCH_TABLE *patchTable,\n+908 _\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n+909 DEVICE_CONTEXT deviceContext,\n+910 unsigned int numStartEvents=0,\n+911 const cl_event* startEvents=NULL,\n+912 cl_event* endEvent=NULL) {\n+913\n+914 if (instance) {\n+915 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer, srcDesc,\n+916 dstBuffer, dstDesc,\n+917 numPatchCoords, patchCoords,\n+918 patchTable,\n+919 numStartEvents, startEvents, endEvent);\n+920 } else {\n+921 // Create an instance on demand (slow)\n+922 (void)deviceContext; // unused\n+923 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n+924 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+925 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+926 deviceContext);\n+927 if (instance) {\n+928 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer, srcDesc,\n+929 dstBuffer, dstDesc,\n+930 numPatchCoords, patchCoords,\n+931 patchTable,\n+932 numStartEvents, startEvents, endEvent);\n+933 delete instance;\n+934 return r;\n+935 }\n+936 return false;\n+937 }\n+938 }\n+939\n+1000 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1001 typename PATCHCOORD_BUFFER, typename PATCH_TABLE,\n+1002 typename DEVICE_CONTEXT>\n+_\b1_\b0_\b0_\b3 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n+1004 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1005 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1006 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+1007 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+1008 int numPatchCoords,\n+1009 PATCHCOORD_BUFFER *patchCoords,\n+1010 PATCH_TABLE *patchTable,\n+1011 _\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n+1012 DEVICE_CONTEXT deviceContext,\n+1013 unsigned int numStartEvents=0,\n+1014 const cl_event* startEvents=NULL,\n+1015 cl_event* endEvent=NULL) {\n+1016\n+1017 if (instance) {\n+1018 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer, srcDesc,\n+1019 dstBuffer, dstDesc,\n+1020 duBuffer, duDesc,\n+1021 dvBuffer, dvDesc,\n+1022 numPatchCoords, patchCoords,\n+1023 patchTable,\n+1024 numStartEvents, startEvents, endEvent);\n+1025 } else {\n+1026 // Create an instance on demand (slow)\n+1027 (void)deviceContext; // unused\n+1028 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc, duDesc, dvDesc, deviceContext);\n+1029 if (instance) {\n+1030 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer, srcDesc,\n+1031 dstBuffer, dstDesc,\n+1032 duBuffer, duDesc,\n+1033 dvBuffer, dvDesc,\n+1034 numPatchCoords, patchCoords,\n+1035 patchTable,\n+1036 numStartEvents, startEvents, endEvent);\n+1037 delete instance;\n+1038 return r;\n+1039 }\n+1040 return false;\n+1041 }\n+1042 }\n+1043\n+1122 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1123 typename PATCHCOORD_BUFFER, typename PATCH_TABLE,\n+1124 typename DEVICE_CONTEXT>\n+_\b1_\b1_\b2_\b5 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n+1126 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1127 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1128 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+1129 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+1130 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+1131 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+1132 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+1133 int numPatchCoords,\n+1134 PATCHCOORD_BUFFER *patchCoords,\n+1135 PATCH_TABLE *patchTable,\n+1136 _\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n+1137 DEVICE_CONTEXT deviceContext,\n+1138 unsigned int numStartEvents=0,\n+1139 const cl_event* startEvents=NULL,\n+1140 cl_event* endEvent=NULL) {\n+1141\n+1142 if (instance) {\n+1143 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer, srcDesc,\n+1144 dstBuffer, dstDesc,\n+1145 duBuffer, duDesc,\n+1146 dvBuffer, dvDesc,\n+1147 duuBuffer, duuDesc,\n+1148 duvBuffer, duvDesc,\n+1149 dvvBuffer, dvvDesc,\n+1150 numPatchCoords, patchCoords,\n+1151 patchTable,\n+1152 numStartEvents, startEvents, endEvent);\n+1153 } else {\n+1154 // Create an instance on demand (slow)\n+1155 (void)deviceContext; // unused\n+1156 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n+1157 duDesc, dvDesc,\n+1158 duuDesc, duvDesc, dvvDesc,\n+1159 deviceContext);\n+1160 if (instance) {\n+1161 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer, srcDesc,\n+1162 dstBuffer, dstDesc,\n+1163 duBuffer, duDesc,\n+1164 dvBuffer, dvDesc,\n+1165 duuBuffer, duuDesc,\n+1166 duvBuffer, duvDesc,\n+1167 dvvBuffer, dvvDesc,\n+1168 numPatchCoords, patchCoords,\n+1169 patchTable,\n+1170 numStartEvents, startEvents, endEvent);\n+1171 delete instance;\n+1172 return r;\n+1173 }\n+1174 return false;\n+1175 }\n+1176 }\n+1177\n+1215 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1216 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b1_\b2_\b1_\b7 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n+1218 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1219 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1220 int numPatchCoords,\n+1221 PATCHCOORD_BUFFER *patchCoords,\n+1222 PATCH_TABLE *patchTable,\n+1223 unsigned int numStartEvents=0,\n+1224 const cl_event* startEvents=NULL,\n+1225 cl_event* endEvent=NULL) const {\n+1226\n+1227 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc,\n+1228 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc,\n+1229 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+1230 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+1231 numPatchCoords,\n+1232 patchCoords->BindCLBuffer(_clCommandQueue),\n+1233 patchTable->GetPatchArrayBuffer(),\n+1234 patchTable->GetPatchIndexBuffer(),\n+1235 patchTable->GetPatchParamBuffer(),\n+1236 numStartEvents, startEvents, endEvent);\n+1237 }\n+1238\n+1286 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1287 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b1_\b2_\b8_\b8 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n+1289 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1290 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1291 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+1292 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+1293 int numPatchCoords,\n+1294 PATCHCOORD_BUFFER *patchCoords,\n+1295 PATCH_TABLE *patchTable,\n+1296 unsigned int numStartEvents=0,\n+1297 const cl_event* startEvents=NULL,\n+1298 cl_event* endEvent=NULL) const {\n+1299\n+1300 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc,\n+1301 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc,\n+1302 duBuffer->BindCLBuffer(_clCommandQueue), duDesc,\n+1303 dvBuffer->BindCLBuffer(_clCommandQueue), dvDesc,\n+1304 numPatchCoords,\n+1305 patchCoords->BindCLBuffer(_clCommandQueue),\n+1306 patchTable->GetPatchArrayBuffer(),\n+1307 patchTable->GetPatchIndexBuffer(),\n+1308 patchTable->GetPatchParamBuffer(),\n+1309 numStartEvents, startEvents, endEvent);\n+1310 }\n+1311\n+1377 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1378 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b1_\b3_\b7_\b9 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n+1380 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1381 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1382 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+1383 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+1384 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+1385 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+1386 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+1387 int numPatchCoords,\n+1388 PATCHCOORD_BUFFER *patchCoords,\n+1389 PATCH_TABLE *patchTable,\n+1390 unsigned int numStartEvents=0,\n+1391 const cl_event* startEvents=NULL,\n+1392 cl_event* endEvent=NULL) const {\n+1393\n+1394 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc,\n+1395 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc,\n+1396 duBuffer->BindCLBuffer(_clCommandQueue), duDesc,\n+1397 dvBuffer->BindCLBuffer(_clCommandQueue), dvDesc,\n+1398 duuBuffer->BindCLBuffer(_clCommandQueue), duuDesc,\n+1399 duvBuffer->BindCLBuffer(_clCommandQueue), duvDesc,\n+1400 dvvBuffer->BindCLBuffer(_clCommandQueue), dvvDesc,\n+1401 numPatchCoords,\n+1402 patchCoords->BindCLBuffer(_clCommandQueue),\n+1403 patchTable->GetPatchArrayBuffer(),\n+1404 patchTable->GetPatchIndexBuffer(),\n+1405 patchTable->GetPatchParamBuffer(),\n+1406 numStartEvents, startEvents, endEvent);\n+1407 }\n+1408\n+_\b1_\b4_\b0_\b9 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(cl_mem src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1410 cl_mem dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1411 cl_mem du, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+1412 cl_mem dv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+1413 int numPatchCoords,\n+1414 cl_mem patchCoordsBuffer,\n+1415 cl_mem patchArrayBuffer,\n+1416 cl_mem patchIndexBuffer,\n+1417 cl_mem patchParamsBuffer,\n+1418 unsigned int numStartEvents=0,\n+1419 const cl_event* startEvents=NULL,\n+1420 cl_event* endEvent=NULL) const;\n+1421\n+_\b1_\b4_\b2_\b2 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(cl_mem src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1423 cl_mem dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1424 cl_mem du, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+1425 cl_mem dv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+1426 cl_mem duu, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+1427 cl_mem duv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+1428 cl_mem dvv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+1429 int numPatchCoords,\n+1430 cl_mem patchCoordsBuffer,\n+1431 cl_mem patchArrayBuffer,\n+1432 cl_mem patchIndexBuffer,\n+1433 cl_mem patchParamsBuffer,\n+1434 unsigned int numStartEvents=0,\n+1435 const cl_event* startEvents=NULL,\n+1436 cl_event* endEvent=NULL) const;\n+1437\n+1486 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1487 typename PATCHCOORD_BUFFER, typename PATCH_TABLE,\n+1488 typename DEVICE_CONTEXT>\n+_\b1_\b4_\b8_\b9 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1490 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1491 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1492 int numPatchCoords,\n+1493 PATCHCOORD_BUFFER *patchCoords,\n+1494 PATCH_TABLE *patchTable,\n+1495 _\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n+1496 DEVICE_CONTEXT deviceContext,\n+1497 unsigned int numStartEvents=0,\n+1498 const cl_event* startEvents=NULL,\n+1499 cl_event* endEvent=NULL) {\n+1500\n+1501 if (instance) {\n+1502 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1503 srcBuffer, srcDesc,\n+1504 dstBuffer, dstDesc,\n+1505 numPatchCoords, patchCoords,\n+1506 patchTable,\n+1507 numStartEvents, startEvents, endEvent);\n+1508 } else {\n+1509 // Create an instance on demand (slow)\n+1510 (void)deviceContext; // unused\n+1511 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n+1512 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+1513 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+1514 deviceContext);\n+1515 if (instance) {\n+1516 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1517 srcBuffer, srcDesc,\n+1518 dstBuffer, dstDesc,\n+1519 numPatchCoords, patchCoords,\n+1520 patchTable,\n+1521 numStartEvents, startEvents, endEvent);\n+1522 delete instance;\n+1523 return r;\n+1524 }\n+1525 return false;\n+1526 }\n+1527 }\n+1528\n+1566 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1567 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b1_\b5_\b6_\b8 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1569 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1570 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1571 int numPatchCoords,\n+1572 PATCHCOORD_BUFFER *patchCoords,\n+1573 PATCH_TABLE *patchTable,\n+1574 unsigned int numStartEvents=0,\n+1575 const cl_event* startEvents=NULL,\n+1576 cl_event* endEvent=NULL) const {\n+1577\n+1578 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc,\n+1579 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc,\n+1580 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+1581 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+1582 numPatchCoords,\n+1583 patchCoords->BindCLBuffer(_clCommandQueue),\n+1584 patchTable->GetVaryingPatchArrayBuffer(),\n+1585 patchTable->GetVaryingPatchIndexBuffer(),\n+1586 patchTable->GetPatchParamBuffer(),\n+1587 numStartEvents, startEvents, endEvent);\n+1588 }\n+1589\n+1650 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1651 typename PATCHCOORD_BUFFER, typename PATCH_TABLE,\n+1652 typename DEVICE_CONTEXT>\n+_\b1_\b6_\b5_\b3 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1654 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1655 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1656 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+1657 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+1658 int numPatchCoords,\n+1659 PATCHCOORD_BUFFER *patchCoords,\n+1660 PATCH_TABLE *patchTable,\n+1661 _\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n+1662 DEVICE_CONTEXT deviceContext,\n+1663 unsigned int numStartEvents=0,\n+1664 const cl_event* startEvents=NULL,\n+1665 cl_event* endEvent=NULL) {\n+1666\n+1667 if (instance) {\n+1668 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1669 srcBuffer, srcDesc,\n+1670 dstBuffer, dstDesc,\n+1671 duBuffer, duDesc,\n+1672 dvBuffer, dvDesc,\n+1673 numPatchCoords, patchCoords,\n+1674 patchTable,\n+1675 numStartEvents, startEvents, endEvent);\n+1676 } else {\n+1677 // Create an instance on demand (slow)\n+1678 (void)deviceContext; // unused\n+1679 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n+1680 duDesc, dvDesc,\n+1681 deviceContext);\n+1682 if (instance) {\n+1683 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1684 srcBuffer, srcDesc,\n+1685 dstBuffer, dstDesc,\n+1686 duBuffer, duDesc,\n+1687 dvBuffer, dvDesc,\n+1688 numPatchCoords, patchCoords,\n+1689 patchTable,\n+1690 numStartEvents, startEvents, endEvent);\n+1691 delete instance;\n+1692 return r;\n+1693 }\n+1694 return false;\n+1695 }\n+1696 }\n+1697\n+1747 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1748 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b1_\b7_\b4_\b9 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1750 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1751 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1752 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+1753 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+1754 int numPatchCoords,\n+1755 PATCHCOORD_BUFFER *patchCoords,\n+1756 PATCH_TABLE *patchTable,\n+1757 unsigned int numStartEvents=0,\n+1758 const cl_event* startEvents=NULL,\n+1759 cl_event* endEvent=NULL) const {\n+1760\n+1761 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc,\n+1762 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc,\n+1763 duBuffer->BindCLBuffer(_clCommandQueue), duDesc,\n+1764 dvBuffer->BindCLBuffer(_clCommandQueue), dvDesc,\n+1765 numPatchCoords,\n+1766 patchCoords->BindCLBuffer(_clCommandQueue),\n+1767 patchTable->GetVaryingPatchArrayBuffer(),\n+1768 patchTable->GetVaryingPatchIndexBuffer(),\n+1769 patchTable->GetPatchParamBuffer(),\n+1770 numStartEvents, startEvents, endEvent);\n+1771 }\n+1772\n+1851 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1852 typename PATCHCOORD_BUFFER, typename PATCH_TABLE,\n+1853 typename DEVICE_CONTEXT>\n+_\b1_\b8_\b5_\b4 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1855 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1856 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1857 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+1858 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+1859 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+1860 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+1861 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+1862 int numPatchCoords,\n+1863 PATCHCOORD_BUFFER *patchCoords,\n+1864 PATCH_TABLE *patchTable,\n+1865 _\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n+1866 DEVICE_CONTEXT deviceContext,\n+1867 unsigned int numStartEvents=0,\n+1868 const cl_event* startEvents=NULL,\n+1869 cl_event* endEvent=NULL) {\n+1870\n+1871 if (instance) {\n+1872 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1873 srcBuffer, srcDesc,\n+1874 dstBuffer, dstDesc,\n+1875 duBuffer, duDesc,\n+1876 dvBuffer, dvDesc,\n+1877 duuBuffer, duuDesc,\n+1878 duvBuffer, duvDesc,\n+1879 dvvBuffer, dvvDesc,\n+1880 numPatchCoords, patchCoords,\n+1881 patchTable,\n+1882 numStartEvents, startEvents, endEvent);\n+1883 } else {\n+1884 // Create an instance on demand (slow)\n+1885 (void)deviceContext; // unused\n+1886 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n+1887 duDesc, dvDesc,\n+1888 duuDesc, duvDesc, dvvDesc,\n+1889 deviceContext);\n+1890 if (instance) {\n+1891 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1892 srcBuffer, srcDesc,\n+1893 dstBuffer, dstDesc,\n+1894 duBuffer, duDesc,\n+1895 dvBuffer, dvDesc,\n+1896 duuBuffer, duuDesc,\n+1897 duvBuffer, duvDesc,\n+1898 dvvBuffer, dvvDesc,\n+1899 numPatchCoords, patchCoords,\n+1900 patchTable,\n+1901 numStartEvents, startEvents, endEvent);\n+1902 delete instance;\n+1903 return r;\n+1904 }\n+1905 return false;\n+1906 }\n+1907 }\n+1908\n+1976 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1977 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b1_\b9_\b7_\b8 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1979 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1980 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1981 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+1982 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+1983 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+1984 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+1985 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+1986 int numPatchCoords,\n+1987 PATCHCOORD_BUFFER *patchCoords,\n+1988 PATCH_TABLE *patchTable,\n+1989 unsigned int numStartEvents=0,\n+1990 const cl_event* startEvents=NULL,\n+1991 cl_event* endEvent=NULL) const {\n+1992\n+1993 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc,\n+1994 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc,\n+1995 duBuffer->BindCLBuffer(_clCommandQueue), duDesc,\n+1996 dvBuffer->BindCLBuffer(_clCommandQueue), dvDesc,\n+1997 duuBuffer->BindCLBuffer(_clCommandQueue), duuDesc,\n+1998 duvBuffer->BindCLBuffer(_clCommandQueue), duvDesc,\n+1999 dvvBuffer->BindCLBuffer(_clCommandQueue), dvvDesc,\n+2000 numPatchCoords,\n+2001 patchCoords->BindCLBuffer(_clCommandQueue),\n+2002 patchTable->GetVaryingPatchArrayBuffer(),\n+2003 patchTable->GetVaryingPatchIndexBuffer(),\n+2004 patchTable->GetPatchParamBuffer(),\n+2005 numStartEvents, startEvents, endEvent);\n+2006 }\n+2007\n+2058 template <typename SRC_BUFFER, typename DST_BUFFER,\n+2059 typename PATCHCOORD_BUFFER, typename PATCH_TABLE,\n+2060 typename DEVICE_CONTEXT>\n+_\b2_\b0_\b6_\b1 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+2062 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+2063 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+2064 int numPatchCoords,\n+2065 PATCHCOORD_BUFFER *patchCoords,\n+2066 PATCH_TABLE *patchTable,\n+2067 int fvarChannel,\n+2068 _\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n+2069 DEVICE_CONTEXT deviceContext,\n+2070 unsigned int numStartEvents=0,\n+2071 const cl_event* startEvents=NULL,\n+2072 cl_event* endEvent=NULL) {\n+2073\n+2074 if (instance) {\n+2075 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+2076 srcBuffer, srcDesc,\n+2077 dstBuffer, dstDesc,\n+2078 numPatchCoords, patchCoords,\n+2079 patchTable, fvarChannel,\n+2080 numStartEvents, startEvents, endEvent);\n+2081 } else {\n+2082 // Create an instance on demand (slow)\n+2083 (void)deviceContext; // unused\n+2084 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n+2085 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+2086 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+2087 deviceContext);\n+2088 if (instance) {\n+2089 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+2090 srcBuffer, srcDesc,\n+2091 dstBuffer, dstDesc,\n+2092 numPatchCoords, patchCoords,\n+2093 patchTable, fvarChannel,\n+2094 numStartEvents, startEvents, endEvent);\n+2095 delete instance;\n+2096 return r;\n+2097 }\n+2098 return false;\n+2099 }\n+2100 }\n+2101\n+2141 template <typename SRC_BUFFER, typename DST_BUFFER,\n+2142 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b2_\b1_\b4_\b3 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+2144 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+2145 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+2146 int numPatchCoords,\n+2147 PATCHCOORD_BUFFER *patchCoords,\n+2148 PATCH_TABLE *patchTable,\n+2149 int fvarChannel = 0,\n+2150 unsigned int numStartEvents=0,\n+2151 const cl_event* startEvents=NULL,\n+2152 cl_event* endEvent=NULL) const {\n+2153\n+2154 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc,\n+2155 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc,\n+2156 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+2157 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+2158 numPatchCoords,\n+2159 patchCoords->BindCLBuffer(_clCommandQueue),\n+2160 patchTable->GetFVarPatchArrayBuffer(fvarChannel),\n+2161 patchTable->GetFVarPatchIndexBuffer(fvarChannel),\n+2162 patchTable->GetFVarPatchParamBuffer(fvarChannel),\n+2163 numStartEvents, startEvents, endEvent);\n+2164 }\n+2165\n+2228 template <typename SRC_BUFFER, typename DST_BUFFER,\n+2229 typename PATCHCOORD_BUFFER, typename PATCH_TABLE,\n+2230 typename DEVICE_CONTEXT>\n+_\b2_\b2_\b3_\b1 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+2232 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+2233 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+2234 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+2235 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+2236 int numPatchCoords,\n+2237 PATCHCOORD_BUFFER *patchCoords,\n+2238 PATCH_TABLE *patchTable,\n+2239 int fvarChannel,\n+2240 _\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n+2241 DEVICE_CONTEXT deviceContext,\n+2242 unsigned int numStartEvents=0,\n+2243 const cl_event* startEvents=NULL,\n+2244 cl_event* endEvent=NULL) {\n+2245\n+2246 if (instance) {\n+2247 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+2248 srcBuffer, srcDesc,\n+2249 dstBuffer, dstDesc,\n+2250 duBuffer, duDesc,\n+2251 dvBuffer, dvDesc,\n+2252 numPatchCoords, patchCoords,\n+2253 patchTable, fvarChannel,\n+2254 numStartEvents, startEvents, endEvent);\n+2255 } else {\n+2256 // Create an instance on demand (slow)\n+2257 (void)deviceContext; // unused\n+2258 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n+2259 duDesc, dvDesc, deviceContext);\n+2260 if (instance) {\n+2261 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+2262 srcBuffer, srcDesc,\n+2263 dstBuffer, dstDesc,\n+2264 duBuffer, duDesc,\n+2265 dvBuffer, dvDesc,\n+2266 numPatchCoords, patchCoords,\n+2267 patchTable, fvarChannel,\n+2268 numStartEvents, startEvents, endEvent);\n+2269 delete instance;\n+2270 return r;\n+2271 }\n+2272 return false;\n+2273 }\n+2274 }\n+2275\n+2327 template <typename SRC_BUFFER, typename DST_BUFFER,\n+2328 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b2_\b3_\b2_\b9 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+2330 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+2331 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+2332 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+2333 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+2334 int numPatchCoords,\n+2335 PATCHCOORD_BUFFER *patchCoords,\n+2336 PATCH_TABLE *patchTable,\n+2337 int fvarChannel = 0,\n+2338 unsigned int numStartEvents=0,\n+2339 const cl_event* startEvents=NULL,\n+2340 cl_event* endEvent=NULL) const {\n+2341\n+2342 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc,\n+2343 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc,\n+2344 duBuffer->BindCLBuffer(_clCommandQueue), duDesc,\n+2345 dvBuffer->BindCLBuffer(_clCommandQueue), dvDesc,\n+2346 numPatchCoords,\n+2347 patchCoords->BindCLBuffer(_clCommandQueue),\n+2348 patchTable->GetFVarPatchArrayBuffer(fvarChannel),\n+2349 patchTable->GetFVarPatchIndexBuffer(fvarChannel),\n+2350 patchTable->GetFVarPatchParamBuffer(fvarChannel),\n+2351 numStartEvents, startEvents, endEvent);\n+2352 }\n+2353\n+2434 template <typename SRC_BUFFER, typename DST_BUFFER,\n+2435 typename PATCHCOORD_BUFFER, typename PATCH_TABLE,\n+2436 typename DEVICE_CONTEXT>\n+_\b2_\b4_\b3_\b7 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+2438 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+2439 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+2440 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+2441 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+2442 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+2443 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+2444 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+2445 int numPatchCoords,\n+2446 PATCHCOORD_BUFFER *patchCoords,\n+2447 PATCH_TABLE *patchTable,\n+2448 int fvarChannel,\n+2449 _\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n+2450 DEVICE_CONTEXT deviceContext,\n+2451 unsigned int numStartEvents=0,\n+2452 const cl_event* startEvents=NULL,\n+2453 cl_event* endEvent=NULL) {\n+2454\n+2455 if (instance) {\n+2456 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+2457 srcBuffer, srcDesc,\n+2458 dstBuffer, dstDesc,\n+2459 duBuffer, duDesc,\n+2460 dvBuffer, dvDesc,\n+2461 duuBuffer, duuDesc,\n+2462 duvBuffer, duvDesc,\n+2463 dvvBuffer, dvvDesc,\n+2464 numPatchCoords, patchCoords,\n+2465 patchTable, fvarChannel,\n+2466 numStartEvents, startEvents, endEvent);\n+2467 } else {\n+2468 // Create an instance on demand (slow)\n+2469 (void)deviceContext; // unused\n+2470 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n+2471 duDesc, dvDesc,\n+2472 duuDesc, duvDesc, dvvDesc,\n+2473 deviceContext);\n+2474 if (instance) {\n+2475 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+2476 srcBuffer, srcDesc,\n+2477 dstBuffer, dstDesc,\n+2478 duBuffer, duDesc,\n+2479 dvBuffer, dvDesc,\n+2480 duuBuffer, duuDesc,\n+2481 duvBuffer, duvDesc,\n+2482 dvvBuffer, dvvDesc,\n+2483 numPatchCoords, patchCoords,\n+2484 patchTable, fvarChannel,\n+2485 numStartEvents, startEvents, endEvent);\n+2486 delete instance;\n+2487 return r;\n+2488 }\n+2489 return false;\n+2490 }\n+2491 }\n+2492\n+2562 template <typename SRC_BUFFER, typename DST_BUFFER,\n+2563 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b2_\b5_\b6_\b4 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+2565 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+2566 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+2567 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+2568 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+2569 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+2570 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+2571 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+2572 int numPatchCoords,\n+2573 PATCHCOORD_BUFFER *patchCoords,\n+2574 PATCH_TABLE *patchTable,\n+2575 int fvarChannel = 0,\n+2576 unsigned int numStartEvents=0,\n+2577 const cl_event* startEvents=NULL,\n+2578 cl_event* endEvent=NULL) const {\n+2579\n+2580 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc,\n+2581 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc,\n+2582 duBuffer->BindCLBuffer(_clCommandQueue), duDesc,\n+2583 dvBuffer->BindCLBuffer(_clCommandQueue), dvDesc,\n+2584 duuBuffer->BindCLBuffer(_clCommandQueue), duuDesc,\n+2585 duvBuffer->BindCLBuffer(_clCommandQueue), duvDesc,\n+2586 dvvBuffer->BindCLBuffer(_clCommandQueue), dvvDesc,\n+2587 numPatchCoords,\n+2588 patchCoords->BindCLBuffer(_clCommandQueue),\n+2589 patchTable->GetFVarPatchArrayBuffer(fvarChannel),\n+2590 patchTable->GetFVarPatchIndexBuffer(fvarChannel),\n+2591 patchTable->GetFVarPatchParamBuffer(fvarChannel),\n+2592 numStartEvents, startEvents, endEvent);\n+2593 }\n+2594\n+2600\n+_\b2_\b6_\b0_\b3 bool _\bC_\bo_\bm_\bp_\bi_\bl_\be(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+2604 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+2605 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc = _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+2606 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc = _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+2607 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc = _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+2608 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc = _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+2609 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc = _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br());\n+2610\n+2612 template <typename DEVICE_CONTEXT>\n+_\b2_\b6_\b1_\b3 static void _\bS_\by_\bn_\bc_\bh_\br_\bo_\bn_\bi_\bz_\be(DEVICE_CONTEXT deviceContext) {\n+2614 _\bS_\by_\bn_\bc_\bh_\br_\bo_\bn_\bi_\bz_\be(deviceContext->GetCommandQueue());\n+2615 }\n+2616\n+_\b2_\b6_\b1_\b7 static void _\bS_\by_\bn_\bc_\bh_\br_\bo_\bn_\bi_\bz_\be(cl_command_queue queue);\n+2618\n+2619private:\n+2620 cl_context _clContext;\n+2621 cl_command_queue _clCommandQueue;\n+2622 cl_program _program;\n+2623 cl_kernel _stencilKernel;\n+2624 cl_kernel _stencilDerivKernel;\n+2625 cl_kernel _patchKernel;\n+2626};\n+2627\n+2628} // end namespace Osd\n+2629\n+2630} // end namespace OPENSUBDIV_VERSION\n+2631using namespace OPENSUBDIV_VERSION;\n+2632\n+2633} // end namespace OpenSubdiv\n+2634\n+2635\n+2636#endif // OPENSUBDIV3_OSD_CL_EVALUATOR_H\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bE_\br_\br_\bo_\br\n-void Error(ErrorType err, const char *format,...)\n-Sends an OSD error with a message (internal use only)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bW_\ba_\br_\bn_\bi_\bn_\bg_\bC_\ba_\bl_\bl_\bb_\ba_\bc_\bk_\bF_\bu_\bn_\bc\n-void(* WarningCallbackFunc)(const char *message)\n-The warning callback function type (default is \"printf\")\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\be_\br_\br_\bo_\br_\b._\bh_\b:_\b5_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\be_\bt_\bE_\br_\br_\bo_\br_\bC_\ba_\bl_\bl_\bb_\ba_\bc_\bk\n-void SetErrorCallback(ErrorCallbackFunc func)\n-Sets the error callback function (default is \"printf\")\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\be_\bt_\bW_\ba_\br_\bn_\bi_\bn_\bg_\bC_\ba_\bl_\bl_\bb_\ba_\bc_\bk\n-void SetWarningCallback(WarningCallbackFunc func)\n-Sets the warning callback function (default is \"printf\")\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bW_\ba_\br_\bn_\bi_\bn_\bg\n-void Warning(const char *format,...)\n-Sends an OSD warning message (internal use only)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bE_\br_\br_\bo_\br_\bC_\ba_\bl_\bl_\bb_\ba_\bc_\bk_\bF_\bu_\bn_\bc\n-void(* ErrorCallbackFunc)(ErrorType err, const char *message)\n-The error callback function type (default is \"printf\")\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\be_\br_\br_\bo_\br_\b._\bh_\b:_\b4_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bE_\br_\br_\bo_\br_\bT_\by_\bp_\be\n-ErrorType\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\be_\br_\br_\bo_\br_\b._\bh_\b:_\b3_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bF_\bA_\bR_\b__\bF_\bA_\bT_\bA_\bL_\b__\bE_\bR_\bR_\bO_\bR\n-@ FAR_FATAL_ERROR\n-Issue a fatal error and end the program.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\be_\br_\br_\bo_\br_\b._\bh_\b:_\b3_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bF_\bA_\bR_\b__\bI_\bN_\bT_\bE_\bR_\bN_\bA_\bL_\b__\bC_\bO_\bD_\bI_\bN_\bG_\b__\bE_\bR_\bR_\bO_\bR\n-@ FAR_INTERNAL_CODING_ERROR\n-Issue an internal programming error, but continue execution.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\be_\br_\br_\bo_\br_\b._\bh_\b:_\b3_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bF_\bA_\bR_\b__\bC_\bO_\bD_\bI_\bN_\bG_\b__\bE_\bR_\bR_\bO_\bR\n-@ FAR_CODING_ERROR\n-Issue a generic programming error, but continue execution.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\be_\br_\br_\bo_\br_\b._\bh_\b:_\b3_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bF_\bA_\bR_\b__\bN_\bO_\b__\bE_\bR_\bR_\bO_\bR\n-@ FAR_NO_ERROR\n-No error. Move along.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\be_\br_\br_\bo_\br_\b._\bh_\b:_\b3_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bF_\bA_\bR_\b__\bR_\bU_\bN_\bT_\bI_\bM_\bE_\b__\bE_\bR_\bR_\bO_\bR\n-@ FAR_RUNTIME_ERROR\n-Issue a generic runtime error, but continue execution.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\be_\br_\br_\bo_\br_\b._\bh_\b:_\b4_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n+Stencil table class wrapping the template for compatibility.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b2_\b7_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n+Limit stencil table class wrapping the template for compatibility.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b8_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n+BufferDescriptor is a struct which describes buffer elements in interleaved\n+data buffers....\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b6_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n+OpenCL stencil table.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b5_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bD_\bv_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br\n+cl_mem GetDvvWeightsBuffer() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b8_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n+CLStencilTable(Far::StencilTable const *stencilTable, cl_context clContext)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br\n+cl_mem GetOffsetsBuffer() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n+static CLStencilTable * Create(Far::LimitStencilTable const *limitStencilTable,\n+DEVICE_CONTEXT context)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b6_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bI_\bn_\bd_\bi_\bc_\be_\bs_\bB_\bu_\bf_\bf_\be_\br\n+cl_mem GetIndicesBuffer() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+int GetNumStencils() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b8_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bS_\bi_\bz_\be_\bs_\bB_\bu_\bf_\bf_\be_\br\n+cl_mem GetSizesBuffer() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bD_\bu_\bu_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br\n+cl_mem GetDuuWeightsBuffer() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b8_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bD_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br\n+cl_mem GetDvWeightsBuffer() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bD_\bu_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br\n+cl_mem GetDuvWeightsBuffer() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b8_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bD_\bu_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br\n+cl_mem GetDuWeightsBuffer() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b~_\bC_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n+~CLStencilTable()\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n+static CLStencilTable * Create(Far::StencilTable const *stencilTable,\n+DEVICE_CONTEXT context)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b5_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n+CLStencilTable(Far::LimitStencilTable const *limitStencilTable, cl_context\n+clContext)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br\n+cl_mem GetWeightsBuffer() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b0_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n+*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n+BufferDescriptor const &dvDesc, STENCIL_TABLE const *stencilTable, CLEvaluator\n+const *instance, DEVICE_CONTEXT deviceContext, unsigned int numStartEvents=0,\n+const cl_event *startEvents=NULL, cl_event *endEvent=NULL)\n+Generic static stencil function. This function has a same signature as other\n+device kernels have so t...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b3_\b0_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bS_\by_\bn_\bc_\bh_\br_\bo_\bn_\bi_\bz_\be\n+static void Synchronize(cl_command_queue queue)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\b~_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n+~CLEvaluator()\n+Destructor.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+bool EvalStencils(cl_mem src, BufferDescriptor const &srcDesc, cl_mem dst,\n+BufferDescriptor const &dstDesc, cl_mem du, BufferDescriptor const &duDesc,\n+cl_mem dv, BufferDescriptor const &dvDesc, cl_mem sizes, cl_mem offsets, cl_mem\n+indices, cl_mem weights, cl_mem duWeights, cl_mem dvWeights, int start, int\n+end, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event\n+*endEvent=NULL) const\n+Dispatch the CL compute kernel asynchronously. returns false if the kernel\n+hasn't been compiled yet.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, STENCIL_TABLE\n+const *stencilTable, CLEvaluator const *instance, DEVICE_CONTEXT deviceContext,\n+unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event\n+*endEvent=NULL)\n+Generic static stencil function. This function has a same signature as other\n+device kernels have so t...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b2_\b1_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n+static CLEvaluator * Create(BufferDescriptor const &srcDesc, BufferDescriptor\n+const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &dvDesc,\n+cl_context clContext, cl_command_queue clCommandQueue)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b1_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n+static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor\n+const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,\n+DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n+BufferDescriptor const &dvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n+*patchCoords, PATCH_TABLE *patchTable, int fvarChannel, CLEvaluator const\n+*instance, DEVICE_CONTEXT deviceContext, unsigned int numStartEvents=0, const\n+cl_event *startEvents=NULL, cl_event *endEvent=NULL)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b2_\b2_\b3_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+bool EvalPatches(cl_mem src, BufferDescriptor const &srcDesc, cl_mem dst,\n+BufferDescriptor const &dstDesc, cl_mem du, BufferDescriptor const &duDesc,\n+cl_mem dv, BufferDescriptor const &dvDesc, int numPatchCoords, cl_mem\n+patchCoordsBuffer, cl_mem patchArrayBuffer, cl_mem patchIndexBuffer, cl_mem\n+patchParamsBuffer, unsigned int numStartEvents=0, const cl_event\n+*startEvents=NULL, cl_event *endEvent=NULL) const\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n+bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n+BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n+&dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER\n+*duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer,\n+BufferDescriptor const &dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n+*patchCoords, PATCH_TABLE *patchTable, unsigned int numStartEvents=0, const\n+cl_event *startEvents=NULL, cl_event *endEvent=NULL) const\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b9_\b7_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n+BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n+&dvDesc, STENCIL_TABLE const *stencilTable, unsigned int numStartEvents=0,\n+const cl_event *startEvents=NULL, cl_event *endEvent=NULL) const\n+Generic stencil function.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b5_\b6_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n+BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n+&dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER\n+*duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer,\n+BufferDescriptor const &dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n+*patchCoords, PATCH_TABLE *patchTable, unsigned int numStartEvents=0, const\n+cl_event *startEvents=NULL, cl_event *endEvent=NULL) const\n+Generic limit eval function with derivatives. This function has a same\n+signature as other device kern...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b3_\b7_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bI_\bn_\bs_\bt_\ba_\bn_\bt_\bi_\ba_\bt_\ba_\bb_\bl_\be\n+bool Instantiatable\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b0_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n+static CLEvaluator * Create(BufferDescriptor const &srcDesc, BufferDescriptor\n+const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &dvDesc,\n+DEVICE_CONTEXT deviceContext)\n+Generic creator template.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b0_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n+static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor\n+const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int\n+numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int\n+fvarChannel, CLEvaluator const *instance, DEVICE_CONTEXT deviceContext,\n+unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event\n+*endEvent=NULL)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b2_\b0_\b6_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n+static CLEvaluator * Create(BufferDescriptor const &srcDesc, BufferDescriptor\n+const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &dvDesc,\n+BufferDescriptor const &duuDesc, BufferDescriptor const &duvDesc,\n+BufferDescriptor const &dvvDesc, DEVICE_CONTEXT deviceContext)\n+Generic creator template.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b3_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+bool EvalPatches(cl_mem src, BufferDescriptor const &srcDesc, cl_mem dst,\n+BufferDescriptor const &dstDesc, cl_mem du, BufferDescriptor const &duDesc,\n+cl_mem dv, BufferDescriptor const &dvDesc, cl_mem duu, BufferDescriptor const\n+&duuDesc, cl_mem duv, BufferDescriptor const &duvDesc, cl_mem dvv,\n+BufferDescriptor const &dvvDesc, int numPatchCoords, cl_mem patchCoordsBuffer,\n+cl_mem patchArrayBuffer, cl_mem patchIndexBuffer, cl_mem patchParamsBuffer,\n+unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event\n+*endEvent=NULL) const\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+bool EvalStencils(cl_mem src, BufferDescriptor const &srcDesc, cl_mem dst,\n+BufferDescriptor const &dstDesc, cl_mem du, BufferDescriptor const &duDesc,\n+cl_mem dv, BufferDescriptor const &dvDesc, cl_mem duu, BufferDescriptor const\n+&duuDesc, cl_mem duv, BufferDescriptor const &duvDesc, cl_mem dvv,\n+BufferDescriptor const &dvvDesc, cl_mem sizes, cl_mem offsets, cl_mem indices,\n+cl_mem weights, cl_mem duWeights, cl_mem dvWeights, cl_mem duuWeights, cl_mem\n+duvWeights, cl_mem dvvWeights, int start, int end, unsigned int\n+numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL)\n+const\n+Dispatch the CL compute kernel asynchronously. returns false if the kernel\n+hasn't been compiled yet.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n+bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n+*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n+BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const\n+&duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER\n+*dvvBuffer, BufferDescriptor const &dvvDesc, int numPatchCoords,\n+PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel=0,\n+unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event\n+*endEvent=NULL) const\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b2_\b5_\b6_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords,\n+PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, unsigned int\n+numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL)\n+const\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b2_\b1_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n+BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n+&dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER\n+*duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer,\n+BufferDescriptor const &dvvDesc, STENCIL_TABLE const *stencilTable, unsigned\n+int numStartEvents=0, const cl_event *startEvents=NULL, cl_event\n+*endEvent=NULL) const\n+Generic stencil function.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b6_\b4_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n+static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n+*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n+BufferDescriptor const &dvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n+*patchCoords, PATCH_TABLE *patchTable, CLEvaluator const *instance,\n+DEVICE_CONTEXT deviceContext, unsigned int numStartEvents=0, const cl_event\n+*startEvents=NULL, cl_event *endEvent=NULL)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b6_\b5_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bS_\by_\bn_\bc_\bh_\br_\bo_\bn_\bi_\bz_\be\n+static void Synchronize(DEVICE_CONTEXT deviceContext)\n+Wait the OpenCL kernels finish.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b2_\b6_\b1_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n+BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n+&dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER\n+*duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer,\n+BufferDescriptor const &dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n+*patchCoords, PATCH_TABLE *patchTable, CLEvaluator const *instance,\n+DEVICE_CONTEXT deviceContext, unsigned int numStartEvents=0, const cl_event\n+*startEvents=NULL, cl_event *endEvent=NULL)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b1_\b2_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n+*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n+BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const\n+&duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER\n+*dvvBuffer, BufferDescriptor const &dvvDesc, STENCIL_TABLE const *stencilTable,\n+CLEvaluator const *instance, DEVICE_CONTEXT deviceContext, unsigned int\n+numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL)\n+Generic static stencil function. This function has a same signature as other\n+device kernels have so t...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b4_\b2_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+bool EvalStencils(cl_mem src, BufferDescriptor const &srcDesc, cl_mem dst,\n+BufferDescriptor const &dstDesc, cl_mem sizes, cl_mem offsets, cl_mem indices,\n+cl_mem weights, int start, int end, unsigned int numStartEvents=0, const\n+cl_event *startEvents=NULL, cl_event *endEvent=NULL) const\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n+static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int\n+numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable,\n+CLEvaluator const *instance, DEVICE_CONTEXT deviceContext, unsigned int\n+numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b4_\b8_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n+bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n+*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n+BufferDescriptor const &dvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n+*patchCoords, PATCH_TABLE *patchTable, int fvarChannel=0, unsigned int\n+numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL)\n+const\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b2_\b3_\b2_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n+static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor\n+const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,\n+DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n+BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const\n+&duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER\n+*dvvBuffer, BufferDescriptor const &dvvDesc, int numPatchCoords,\n+PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel,\n+CLEvaluator const *instance, DEVICE_CONTEXT deviceContext, unsigned int\n+numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b2_\b4_\b3_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n+static CLEvaluator * Create(BufferDescriptor const &srcDesc, BufferDescriptor\n+const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &dvDesc,\n+BufferDescriptor const &duuDesc, BufferDescriptor const &duvDesc,\n+BufferDescriptor const &dvvDesc, cl_context clContext, cl_command_queue\n+clCommandQueue)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b4_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n+BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n+&dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE\n+*patchTable, CLEvaluator const *instance, DEVICE_CONTEXT deviceContext,\n+unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event\n+*endEvent=NULL)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b0_\b0_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n+bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n+BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n+&dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE\n+*patchTable, unsigned int numStartEvents=0, const cl_event *startEvents=NULL,\n+cl_event *endEvent=NULL) const\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b7_\b4_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords,\n+PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, CLEvaluator const\n+*instance, DEVICE_CONTEXT deviceContext, unsigned int numStartEvents=0, const\n+cl_event *startEvents=NULL, cl_event *endEvent=NULL)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b9_\b0_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n+bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords,\n+PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, unsigned int\n+numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL)\n+const\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b5_\b6_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n+static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n+*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n+BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const\n+&duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER\n+*dvvBuffer, BufferDescriptor const &dvvDesc, int numPatchCoords,\n+PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, CLEvaluator const\n+*instance, DEVICE_CONTEXT deviceContext, unsigned int numStartEvents=0, const\n+cl_event *startEvents=NULL, cl_event *endEvent=NULL)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b8_\b5_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, STENCIL_TABLE const\n+*stencilTable, unsigned int numStartEvents=0, const cl_event *startEvents=NULL,\n+cl_event *endEvent=NULL) const\n+Generic stencil function.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b5_\b0_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n+BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n+&dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE\n+*patchTable, unsigned int numStartEvents=0, const cl_event *startEvents=NULL,\n+cl_event *endEvent=NULL) const\n+Generic limit eval function with derivatives. This function has a same\n+signature as other device kern...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b2_\b8_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n+CLEvaluator(cl_context context, cl_command_queue queue)\n+Constructor.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bC_\bo_\bm_\bp_\bi_\bl_\be\n+bool Compile(BufferDescriptor const &srcDesc, BufferDescriptor const &dstDesc,\n+BufferDescriptor const &duDesc=BufferDescriptor(), BufferDescriptor const\n+&dvDesc=BufferDescriptor(), BufferDescriptor const &duuDesc=BufferDescriptor(),\n+BufferDescriptor const &duvDesc=BufferDescriptor(), BufferDescriptor const\n+&dvvDesc=BufferDescriptor())\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n+bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int\n+numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int\n+fvarChannel=0, unsigned int numStartEvents=0, const cl_event *startEvents=NULL,\n+cl_event *endEvent=NULL) const\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b2_\b1_\b4_\b3\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bf_\ba_\br\n-    * _\be_\br_\br_\bo_\br_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00752.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00752.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/far/stencilTableFactory.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/osd/glComputeEvaluator.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -90,58 +90,47 @@\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> &#124;\n <a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">stencilTableFactory.h File Reference</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">glComputeEvaluator.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00761_source.html\">../far/patchTable.h</a>&quot;</code><br />\n-<code>#include &lt;vector&gt;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00722_source.html\">../osd/opengl.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a01489_source.html\">../osd/types.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00764_source.html\">../osd/bufferDescriptor.h</a>&quot;</code><br />\n </div>\n <p><a href=\"a00752_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01045.html\">StencilTableFactoryReal&lt; REAL &gt;</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">A specialized factory for <a class=\"el\" href=\"a01065.html\" title=\"Stencil table class wrapping the template for compatibility.\">StencilTable</a>.  <a href=\"a01045.html#details\">More...</a><br /></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01217.html\">GLStencilTableSSBO</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">GL stencil table (Shader Storage buffer)  <a href=\"a01217.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01085.html\">StencilTableFactoryReal&lt; REAL &gt;::Options</a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01049.html\">LimitStencilTableFactoryReal&lt; REAL &gt;</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">A specialized factory for <a class=\"el\" href=\"a01081.html\" title=\"Limit stencil table class wrapping the template for compatibility.\">LimitStencilTable</a>.  <a href=\"a01049.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01089.html\">LimitStencilTableFactoryReal&lt; REAL &gt;::Options</a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01093.html\">LimitStencilTableFactoryReal&lt; REAL &gt;::LocationArray</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Descriptor for limit surface locations.  <a href=\"a01093.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01097.html\">StencilTableFactory</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"a01057.html\" title=\"Vertex stencil class wrapping the template for compatibility.\">Stencil</a> table factory class wrapping the template for compatibility.  <a href=\"a01097.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01101.html\">LimitStencilTableFactory</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"a01057.html\" title=\"Vertex stencil class wrapping the template for compatibility.\">Stencil</a> table factory class wrapping the template for compatibility.  <a href=\"a01101.html#details\">More...</a><br /></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01221.html\">GLComputeEvaluator</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7f420b72a822828cfa8b0561c695a5cc.html\">far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00752.html\">stencilTableFactory.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00752.html\">glComputeEvaluator.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,43 +1,30 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-stencilTableFactory.h File Reference\n+glComputeEvaluator.h File Reference\n #include \"../version.h\"\n-#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh\"\n-#include <vector>\n+#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bo_\bp_\be_\bn_\bg_\bl_\b._\bh\"\n+#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n+#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n- class \u00a0 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b<_\b _\bR_\bE_\bA_\bL_\b _\b>\n-\u00a0        A specialized factory for _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bS_\bS_\bB_\bO\n+\u00a0       GL stencil table (Shader Storage buffer) _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n-struct \u00a0 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b<_\b _\bR_\bE_\bA_\bL_\b _\b>_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n-\u00a0\n- class \u00a0 _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b<_\b _\bR_\bE_\bA_\bL_\b _\b>\n-\u00a0        A specialized factory for _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b<_\b _\bR_\bE_\bA_\bL_\b _\b>_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n-\u00a0\n-struct \u00a0 _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b<_\b _\bR_\bE_\bA_\bL_\b _\b>_\b:_\b:_\bL_\bo_\bc_\ba_\bt_\bi_\bo_\bn_\bA_\br_\br_\ba_\by\n-\u00a0        Descriptor for limit surface locations. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n- class \u00a0 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by\n-\u00a0        _\bS_\bt_\be_\bn_\bc_\bi_\bl table factory class wrapping the template for compatibility.\n-         _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n- class \u00a0 _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by\n-\u00a0        _\bS_\bt_\be_\bn_\bc_\bi_\bl table factory class wrapping the template for compatibility.\n-         _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br\n \u00a0\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n+\u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bf_\ba_\br\n-    * _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00752.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00752.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,9 +1,4 @@\n var a00752 = [\n-    [\"StencilTableFactoryReal< REAL >\", \"a01045.html\", \"a01045\"],\n-    [\"Options\", \"a01085.html\", \"a01085\"],\n-    [\"LimitStencilTableFactoryReal< REAL >\", \"a01049.html\", \"a01049\"],\n-    [\"Options\", \"a01089.html\", \"a01089\"],\n-    [\"LocationArray\", \"a01093.html\", \"a01093\"],\n-    [\"StencilTableFactory\", \"a01097.html\", null],\n-    [\"LimitStencilTableFactory\", \"a01101.html\", null]\n+    [\"GLStencilTableSSBO\", \"a01217.html\", \"a01217\"],\n+    [\"GLComputeEvaluator\", \"a01221.html\", \"a01221\"]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00752_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00752_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/far/stencilTableFactory.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/osd/glComputeEvaluator.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">stencilTableFactory.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">glComputeEvaluator.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00752.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2013 Pixar</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2015 Pixar</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -119,357 +119,1132 @@\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_FAR_STENCILTABLE_FACTORY_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_FAR_STENCILTABLE_FACTORY_H</span></div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_GL_COMPUTE_EVALUATOR_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_GL_COMPUTE_EVALUATOR_H</span></div>\n <div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n <div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n <div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../far/patchTable.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../osd/opengl.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../osd/types.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &quot;../osd/bufferDescriptor.h&quot;</span></div>\n <div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n <div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n <div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n <div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n <div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">namespace </span>Far {</div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span> </div>\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span><span class=\"keyword\">class </span>TopologyRefiner;</div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span> </div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt; <span class=\"keyword\">class </span>StencilReal;</div>\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt; <span class=\"keyword\">class </span>StencilTableReal;</div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span> </div>\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt; <span class=\"keyword\">class </span>LimitStencilReal;</div>\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt; <span class=\"keyword\">class </span>LimitStencilTableReal;</div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span> </div>\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span> </div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span>    <span class=\"keyword\">class </span>PatchTable;</div>\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span>    <span class=\"keyword\">class </span>StencilTable;</div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span>    <span class=\"keyword\">class </span>LimitStencilTable;</div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span>}</div>\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span> </div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"keyword\">namespace </span>Osd {</div>\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span> </div>\n <div class=\"foldopen\" id=\"foldopen00051\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01045.html\">   51</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01045.html\">StencilTableFactoryReal</a> {</div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span> </div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00055\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01045.html#a46c8a310cf4c094f8c80e1cb8dc1f911\">   55</a></span>    <span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"a01045.html#a46c8a310cf4c094f8c80e1cb8dc1f911\">Mode</a> {</div>\n-<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01045.html#a46c8a310cf4c094f8c80e1cb8dc1f911ab491ed84aea170a330914a3f88b16d50\">   56</a></span>        <a class=\"code hl_enumvalue\" href=\"a01045.html#a46c8a310cf4c094f8c80e1cb8dc1f911ab491ed84aea170a330914a3f88b16d50\">INTERPOLATE_VERTEX</a>=0,           </div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01045.html#a46c8a310cf4c094f8c80e1cb8dc1f911ab18c20abfc04611ab0aec5e1c81bb2ab\">   57</a></span>        <a class=\"code hl_enumvalue\" href=\"a01045.html#a46c8a310cf4c094f8c80e1cb8dc1f911ab18c20abfc04611ab0aec5e1c81bb2ab\">INTERPOLATE_VARYING</a>,            </div>\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span>        <a class=\"code hl_enumvalue\" href=\"a01045.html#a46c8a310cf4c094f8c80e1cb8dc1f911a4178369e390d2596ce60676642fec077\">INTERPOLATE_FACE_VARYING</a>        </div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01045.html#a46c8a310cf4c094f8c80e1cb8dc1f911a4178369e390d2596ce60676642fec077\">   59</a></span>    };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00061\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01085.html\">   61</a></span>    <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01085.html\">Options</a> {</div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00063\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01085.html#a28d39a844c3a37ab61d32ab7c6352f09\">   63</a></span>        <a class=\"code hl_function\" href=\"a01085.html#a28d39a844c3a37ab61d32ab7c6352f09\">Options</a>() : <a class=\"code hl_variable\" href=\"a01085.html#ab7c383a49298cf060574242fe679378f\">interpolationMode</a>(<a class=\"code hl_enumvalue\" href=\"a01045.html#a46c8a310cf4c094f8c80e1cb8dc1f911ab491ed84aea170a330914a3f88b16d50\">INTERPOLATE_VERTEX</a>),</div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span>                    <a class=\"code hl_variable\" href=\"a01085.html#a73289d5e55adccde08afd7399a2357f2\">generateOffsets</a>(false),</div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span>                    <a class=\"code hl_variable\" href=\"a01085.html#a7091c369d67630320a623dbc4a2b34b7\">generateControlVerts</a>(false),</div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span>                    <a class=\"code hl_variable\" href=\"a01085.html#a55457e193a57e08a56663abf8cc838b4\">generateIntermediateLevels</a>(true),</div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span>                    <a class=\"code hl_variable\" href=\"a01085.html#a059c9b4a95b37faa88d1dd0fac0adc8d\">factorizeIntermediateLevels</a>(true),</div>\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span>                    <a class=\"code hl_variable\" href=\"a01085.html#a110477b0e61b09d8be1a472df34f6386\">maxLevel</a>(10),</div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span>                    <a class=\"code hl_variable\" href=\"a01085.html#a7cd8273eef086a749ce3d40063fb4a28\">fvarChannel</a>(0) { }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span> </div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01085.html#ab7c383a49298cf060574242fe679378f\">   71</a></span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"a01085.html#ab7c383a49298cf060574242fe679378f\">interpolationMode</a>           : 2, </div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01085.html#a73289d5e55adccde08afd7399a2357f2\">   72</a></span>                     <a class=\"code hl_variable\" href=\"a01085.html#a73289d5e55adccde08afd7399a2357f2\">generateOffsets</a>             : 1, </div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01085.html#a7091c369d67630320a623dbc4a2b34b7\">   73</a></span>                     <a class=\"code hl_variable\" href=\"a01085.html#a7091c369d67630320a623dbc4a2b34b7\">generateControlVerts</a>        : 1, </div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01085.html#a55457e193a57e08a56663abf8cc838b4\">   74</a></span>                     <a class=\"code hl_variable\" href=\"a01085.html#a55457e193a57e08a56663abf8cc838b4\">generateIntermediateLevels</a>  : 1, </div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01085.html#a059c9b4a95b37faa88d1dd0fac0adc8d\">   75</a></span>                     <a class=\"code hl_variable\" href=\"a01085.html#a059c9b4a95b37faa88d1dd0fac0adc8d\">factorizeIntermediateLevels</a> : 1, </div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01085.html#a110477b0e61b09d8be1a472df34f6386\">   78</a></span>                     <a class=\"code hl_variable\" href=\"a01085.html#a110477b0e61b09d8be1a472df34f6386\">maxLevel</a>                    : 4; </div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01085.html#a7cd8273eef086a749ce3d40063fb4a28\">   79</a></span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"a01085.html#a7cd8273eef086a749ce3d40063fb4a28\">fvarChannel</a>;                     </div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>    };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span> </div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01045.html#a0f706293d0b11df8ec9d06ce7e4b6bb2\">   94</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01061.html\">StencilTableReal&lt;REAL&gt;</a> <span class=\"keyword\">const</span> * <a class=\"code hl_function\" href=\"a01045.html#a0f706293d0b11df8ec9d06ce7e4b6bb2\">Create</a>(</div>\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span>                <a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> &amp; refiner, <a class=\"code hl_struct\" href=\"a01085.html\">Options</a> options = <a class=\"code hl_struct\" href=\"a01085.html\">Options</a>());</div>\n-<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span> </div>\n-<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span> </div>\n-<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01045.html#aecc6558dfbb8b7bb2c2a89150cb8340a\">  110</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01061.html\">StencilTableReal&lt;REAL&gt;</a> <span class=\"keyword\">const</span> * <a class=\"code hl_function\" href=\"a01045.html#aecc6558dfbb8b7bb2c2a89150cb8340a\">Create</a>(</div>\n-<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span>                <span class=\"keywordtype\">int</span> numTables, <a class=\"code hl_class\" href=\"a01061.html\">StencilTableReal&lt;REAL&gt;</a> <span class=\"keyword\">const</span> ** tables);</div>\n-<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span> </div>\n-<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span> </div>\n-<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01045.html#ac3115cc051309860811962d0b1fa9413\">  128</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01061.html\">StencilTableReal&lt;REAL&gt;</a> <span class=\"keyword\">const</span> * <a class=\"code hl_function\" href=\"a01045.html#ac3115cc051309860811962d0b1fa9413\">AppendLocalPointStencilTable</a>(</div>\n-<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span>                <a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> &amp;refiner,</div>\n-<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span>                <a class=\"code hl_class\" href=\"a01061.html\">StencilTableReal&lt;REAL&gt;</a> <span class=\"keyword\">const</span> *baseStencilTable,</div>\n-<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\">  131</span>                <a class=\"code hl_class\" href=\"a01061.html\">StencilTableReal&lt;REAL&gt;</a> <span class=\"keyword\">const</span> *localPointStencilTable,</div>\n-<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\">  132</span>                <span class=\"keywordtype\">bool</span> factorize = <span class=\"keyword\">true</span>);</div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01217.html\">   51</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01217.html\">GLStencilTableSSBO</a> {</div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"foldopen\" id=\"foldopen00053\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01217.html#af687fa998cd70f0e79b87d59c96c6a72\">   53</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01217.html\">GLStencilTableSSBO</a> *<a class=\"code hl_function\" href=\"a01217.html#af687fa998cd70f0e79b87d59c96c6a72\">Create</a>(<a class=\"code hl_class\" href=\"a01065.html\">Far::StencilTable</a> <span class=\"keyword\">const</span> *stencilTable,</div>\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span>                                       <span class=\"keywordtype\">void</span> *deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span>        <span class=\"keywordflow\">return</span> <span class=\"keyword\">new</span> <a class=\"code hl_class\" href=\"a01217.html\">GLStencilTableSSBO</a>(stencilTable);</div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span>    }</div>\n+</div>\n+<div class=\"foldopen\" id=\"foldopen00058\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01217.html#ab739faa3277bb2ea54b5198b3b664f37\">   58</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01217.html\">GLStencilTableSSBO</a> *<a class=\"code hl_function\" href=\"a01217.html#ab739faa3277bb2ea54b5198b3b664f37\">Create</a>(</div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span>        <a class=\"code hl_class\" href=\"a01081.html\">Far::LimitStencilTable</a> <span class=\"keyword\">const</span> *limitStencilTable,</div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span>        <span class=\"keywordtype\">void</span> *deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span>        <span class=\"keywordflow\">return</span> <span class=\"keyword\">new</span> <a class=\"code hl_class\" href=\"a01217.html\">GLStencilTableSSBO</a>(limitStencilTable);</div>\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span> </div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01217.html#aaacee6173a99bb3d7bbfb0a352ef9828\">   65</a></span>    <span class=\"keyword\">explicit</span> <a class=\"code hl_function\" href=\"a01217.html#aaacee6173a99bb3d7bbfb0a352ef9828\">GLStencilTableSSBO</a>(<a class=\"code hl_class\" href=\"a01065.html\">Far::StencilTable</a> <span class=\"keyword\">const</span> *stencilTable);</div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01217.html#a27a911fea9736fbe935c0edc4de9b998\">   66</a></span>    <span class=\"keyword\">explicit</span> <a class=\"code hl_function\" href=\"a01217.html#a27a911fea9736fbe935c0edc4de9b998\">GLStencilTableSSBO</a>(<a class=\"code hl_class\" href=\"a01081.html\">Far::LimitStencilTable</a> <span class=\"keyword\">const</span> *limitStencilTable);</div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01217.html#a4bef0031fb9295436a4049ef5801fec5\">   67</a></span>    <a class=\"code hl_function\" href=\"a01217.html#a4bef0031fb9295436a4049ef5801fec5\">~GLStencilTableSSBO</a>();</div>\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span> </div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span>    <span class=\"comment\">// interfaces needed for GLSLComputeKernel</span></div>\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01217.html#ab44562bc3f0ba09049f60ed0553e158a\">   70</a></span>    GLuint <a class=\"code hl_function\" href=\"a01217.html#ab44562bc3f0ba09049f60ed0553e158a\">GetSizesBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _sizes; }</div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01217.html#a8ccadebd4c9c36a15a5cbec461bd07e7\">   71</a></span>    GLuint <a class=\"code hl_function\" href=\"a01217.html#a8ccadebd4c9c36a15a5cbec461bd07e7\">GetOffsetsBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _offsets; }</div>\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01217.html#a6bacf93d27488cfcbf2e66d23b4073a1\">   72</a></span>    GLuint <a class=\"code hl_function\" href=\"a01217.html#a6bacf93d27488cfcbf2e66d23b4073a1\">GetIndicesBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _indices; }</div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01217.html#a18892fc15bb6ed7166dc6bfd5aaf0065\">   73</a></span>    GLuint <a class=\"code hl_function\" href=\"a01217.html#a18892fc15bb6ed7166dc6bfd5aaf0065\">GetWeightsBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _weights; }</div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01217.html#a2e90e1efa299fe2698ce2d1aa87ade49\">   74</a></span>    GLuint <a class=\"code hl_function\" href=\"a01217.html#a2e90e1efa299fe2698ce2d1aa87ade49\">GetDuWeightsBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _duWeights; }</div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01217.html#ae418f2ccdfaec79f90a3ccb92cd511a2\">   75</a></span>    GLuint <a class=\"code hl_function\" href=\"a01217.html#ae418f2ccdfaec79f90a3ccb92cd511a2\">GetDvWeightsBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _dvWeights; }</div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01217.html#abe929adc8bb596b84057169f5ade4663\">   76</a></span>    GLuint <a class=\"code hl_function\" href=\"a01217.html#abe929adc8bb596b84057169f5ade4663\">GetDuuWeightsBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _duuWeights; }</div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01217.html#a0684aca639f38b5f1b0c8efffe5f8bd8\">   77</a></span>    GLuint <a class=\"code hl_function\" href=\"a01217.html#a0684aca639f38b5f1b0c8efffe5f8bd8\">GetDuvWeightsBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _duvWeights; }</div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01217.html#aadc7c7c9d50c030f7aee9e486b3b1d55\">   78</a></span>    GLuint <a class=\"code hl_function\" href=\"a01217.html#aadc7c7c9d50c030f7aee9e486b3b1d55\">GetDvvWeightsBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _dvvWeights; }</div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01217.html#a65836d2070b943c8fecbad926d074de2\">   79</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01217.html#a65836d2070b943c8fecbad926d074de2\">GetNumStencils</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _numStencils; }</div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span> </div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>    GLuint _sizes;</div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>    GLuint _offsets;</div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span>    GLuint _indices;</div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>    GLuint _weights;</div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>    GLuint _duWeights;</div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>    GLuint _dvWeights;</div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>    GLuint _duuWeights;</div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>    GLuint _duvWeights;</div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>    GLuint _dvvWeights;</div>\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>    <span class=\"keywordtype\">int</span> _numStencils;</div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span> </div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span><span class=\"comment\">// ---------------------------------------------------------------------------</span></div>\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00096\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html\">   96</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01221.html\">GLComputeEvaluator</a> {</div>\n+<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#a2c24b70c9312d8dff3fecb9ddea52c44\">   98</a></span>    <span class=\"keyword\">typedef</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_typedef\" href=\"a01221.html#a2c24b70c9312d8dff3fecb9ddea52c44\">Instantiatable</a>;</div>\n+<div class=\"foldopen\" id=\"foldopen00099\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#ab4c3cfbc05a1b3c7e08aac8258e38139\">   99</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01221.html\">GLComputeEvaluator</a> * <a class=\"code hl_function\" href=\"a01221.html#ab4c3cfbc05a1b3c7e08aac8258e38139\">Create</a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span>                                       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span>                                       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span>                                       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span>                                       <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01221.html#ab4c3cfbc05a1b3c7e08aac8258e38139\">Create</a>(srcDesc, dstDesc, duDesc, dvDesc,</div>\n+<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span>                      <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span>                      <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span>                      <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span>                      deviceContext);</div>\n+<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00111\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#aeeb1dfce13c31a0b2af5f68091c85352\">  111</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01221.html\">GLComputeEvaluator</a> * <a class=\"code hl_function\" href=\"a01221.html#aeeb1dfce13c31a0b2af5f68091c85352\">Create</a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span>                                       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span>                                       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span>                                       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span>                                       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\">  116</span>                                       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span>                                       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\">  118</span>                                       <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span>        (void)deviceContext;  <span class=\"comment\">// not used</span></div>\n+<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span>        <a class=\"code hl_class\" href=\"a01221.html\">GLComputeEvaluator</a> *instance = <span class=\"keyword\">new</span> <a class=\"code hl_function\" href=\"a01221.html#a9fe54ab76e32fb2dc6f7cd631ce2e678\">GLComputeEvaluator</a>();</div>\n+<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\">  121</span>        <span class=\"keywordflow\">if</span> (instance-&gt;<a class=\"code hl_function\" href=\"a01221.html#ade1086349c1a452f60bcf281383ceec2\">Compile</a>(srcDesc, dstDesc, duDesc, dvDesc,</div>\n+<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span>                              duuDesc, duvDesc, dvvDesc))</div>\n+<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span>            <span class=\"keywordflow\">return</span> instance;</div>\n+<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span>        <span class=\"keyword\">delete</span> instance;</div>\n+<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span>        <span class=\"keywordflow\">return</span> NULL;</div>\n+<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span> </div>\n+<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#a9fe54ab76e32fb2dc6f7cd631ce2e678\">  129</a></span>    <a class=\"code hl_function\" href=\"a01221.html#a9fe54ab76e32fb2dc6f7cd631ce2e678\">GLComputeEvaluator</a>();</div>\n+<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span> </div>\n+<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#a2f39a072765ebdc9d4d2b4289685b815\">  132</a></span>    <a class=\"code hl_function\" href=\"a01221.html#a2f39a072765ebdc9d4d2b4289685b815\">~GLComputeEvaluator</a>();</div>\n <div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\">  133</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00148\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01045.html#abad17ff90d068c3fb121b6524a69dc04\">  148</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01061.html\">StencilTableReal&lt;REAL&gt;</a> <span class=\"keyword\">const</span> * <a class=\"code hl_function\" href=\"a01045.html#abad17ff90d068c3fb121b6524a69dc04\">AppendLocalPointStencilTableVarying</a>(</div>\n-<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\">  149</span>                <a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> &amp;refiner,</div>\n-<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\">  150</span>                <a class=\"code hl_class\" href=\"a01061.html\">StencilTableReal&lt;REAL&gt;</a> <span class=\"keyword\">const</span> *baseStencilTable,</div>\n-<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\">  151</span>                <a class=\"code hl_class\" href=\"a01061.html\">StencilTableReal&lt;REAL&gt;</a> <span class=\"keyword\">const</span> *localPointStencilTable,</div>\n-<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\">  152</span>                <span class=\"keywordtype\">bool</span> factorize = <span class=\"keyword\">true</span>) {</div>\n-<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\">  153</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01045.html#ac3115cc051309860811962d0b1fa9413\">AppendLocalPointStencilTable</a>(</div>\n-<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\">  154</span>                refiner, baseStencilTable, localPointStencilTable, factorize);</div>\n-<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\">  155</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\">  156</span> </div>\n-<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01045.html#a33b8f611576b3e0907832e571e4844f5\">  174</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01061.html\">StencilTableReal&lt;REAL&gt;</a> <span class=\"keyword\">const</span> * <a class=\"code hl_function\" href=\"a01045.html#a33b8f611576b3e0907832e571e4844f5\">AppendLocalPointStencilTableFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\">  175</span>                <a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> &amp;refiner,</div>\n-<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\">  176</span>                <a class=\"code hl_class\" href=\"a01061.html\">StencilTableReal&lt;REAL&gt;</a> <span class=\"keyword\">const</span> *baseStencilTable,</div>\n-<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span>                <a class=\"code hl_class\" href=\"a01061.html\">StencilTableReal&lt;REAL&gt;</a> <span class=\"keyword\">const</span> *localPointStencilTable,</div>\n-<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\">  178</span>                <span class=\"keywordtype\">int</span> channel = 0,</div>\n-<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\">  179</span>                <span class=\"keywordtype\">bool</span> factorize = <span class=\"keyword\">true</span>);</div>\n-<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\">  180</span> </div>\n-<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\">  181</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\">  182</span> </div>\n-<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\">  183</span>    <span class=\"comment\">// Generate stencils for the coarse control-vertices (single weight = 1.0f)</span></div>\n-<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\">  184</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> generateControlVertStencils(</div>\n-<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\">  185</span>                <span class=\"keywordtype\">int</span> numControlVerts,</div>\n-<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\">  186</span>                <a class=\"code hl_class\" href=\"a01053.html\">StencilReal&lt;REAL&gt;</a> &amp; dst);</div>\n-<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\">  187</span> </div>\n-<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\">  188</span>    <span class=\"comment\">// Internal method to splice local point stencils</span></div>\n-<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\">  189</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01061.html\">StencilTableReal&lt;REAL&gt;</a> <span class=\"keyword\">const</span> * appendLocalPointStencilTable(</div>\n-<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\">  190</span>                <a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> &amp;refiner,</div>\n-<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\">  191</span>                <a class=\"code hl_class\" href=\"a01061.html\">StencilTableReal&lt;REAL&gt;</a> <span class=\"keyword\">const</span> * baseStencilTable,</div>\n-<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\">  192</span>                <a class=\"code hl_class\" href=\"a01061.html\">StencilTableReal&lt;REAL&gt;</a> <span class=\"keyword\">const</span> * localPointStencilTable,</div>\n-<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\">  193</span>                <span class=\"keywordtype\">int</span> channel,</div>\n-<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\">  194</span>                <span class=\"keywordtype\">bool</span> factorize);</div>\n-<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\">  195</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\">  196</span> </div>\n-<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\">  208</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00209\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01049.html\">  209</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01049.html\">LimitStencilTableFactoryReal</a> {</div>\n-<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\">  210</span> </div>\n-<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\">  211</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00212\" name=\"l00212\"></a><span class=\"lineno\">  212</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00213\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01049.html#a46c8a310cf4c094f8c80e1cb8dc1f911\">  213</a></span>    <span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"a01049.html#a46c8a310cf4c094f8c80e1cb8dc1f911\">Mode</a> {</div>\n-<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01049.html#a46c8a310cf4c094f8c80e1cb8dc1f911ab491ed84aea170a330914a3f88b16d50\">  214</a></span>        <a class=\"code hl_enumvalue\" href=\"a01049.html#a46c8a310cf4c094f8c80e1cb8dc1f911ab491ed84aea170a330914a3f88b16d50\">INTERPOLATE_VERTEX</a>=0,           </div>\n-<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01049.html#a46c8a310cf4c094f8c80e1cb8dc1f911ab18c20abfc04611ab0aec5e1c81bb2ab\">  215</a></span>        <a class=\"code hl_enumvalue\" href=\"a01049.html#a46c8a310cf4c094f8c80e1cb8dc1f911ab18c20abfc04611ab0aec5e1c81bb2ab\">INTERPOLATE_VARYING</a>,            </div>\n-<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\">  216</span>        <a class=\"code hl_enumvalue\" href=\"a01049.html#a46c8a310cf4c094f8c80e1cb8dc1f911a4178369e390d2596ce60676642fec077\">INTERPOLATE_FACE_VARYING</a>        </div>\n-<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01049.html#a46c8a310cf4c094f8c80e1cb8dc1f911a4178369e390d2596ce60676642fec077\">  217</a></span>    };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\">  218</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00219\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01089.html\">  219</a></span>    <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01089.html\">Options</a> {</div>\n-<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\">  220</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00221\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01089.html#a28d39a844c3a37ab61d32ab7c6352f09\">  221</a></span>        <a class=\"code hl_function\" href=\"a01089.html#a28d39a844c3a37ab61d32ab7c6352f09\">Options</a>() : <a class=\"code hl_variable\" href=\"a01089.html#ab7c383a49298cf060574242fe679378f\">interpolationMode</a>(<a class=\"code hl_enumvalue\" href=\"a01049.html#a46c8a310cf4c094f8c80e1cb8dc1f911ab491ed84aea170a330914a3f88b16d50\">INTERPOLATE_VERTEX</a>),</div>\n-<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\">  222</span>                    <a class=\"code hl_variable\" href=\"a01089.html#af252d435ac2f27d8f77717cd529a2339\">generate1stDerivatives</a>(true),</div>\n-<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\">  223</span>                    <a class=\"code hl_variable\" href=\"a01089.html#adb29a270ae6d25f74593a6c23488adeb\">generate2ndDerivatives</a>(false),</div>\n-<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\">  224</span>                    <a class=\"code hl_variable\" href=\"a01089.html#a7cd8273eef086a749ce3d40063fb4a28\">fvarChannel</a>(0) { }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\">  225</span> </div>\n-<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01089.html#ab7c383a49298cf060574242fe679378f\">  226</a></span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"a01089.html#ab7c383a49298cf060574242fe679378f\">interpolationMode</a>           : 2, </div>\n-<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01089.html#af252d435ac2f27d8f77717cd529a2339\">  227</a></span>                     <a class=\"code hl_variable\" href=\"a01089.html#af252d435ac2f27d8f77717cd529a2339\">generate1stDerivatives</a>      : 1, </div>\n-<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01089.html#adb29a270ae6d25f74593a6c23488adeb\">  228</a></span>                     <a class=\"code hl_variable\" href=\"a01089.html#adb29a270ae6d25f74593a6c23488adeb\">generate2ndDerivatives</a>      : 1; </div>\n-<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01089.html#a7cd8273eef086a749ce3d40063fb4a28\">  229</a></span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"a01089.html#a7cd8273eef086a749ce3d40063fb4a28\">fvarChannel</a>;                     </div>\n-<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\">  230</span>    };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\">  231</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00233\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01093.html\">  233</a></span>    <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01093.html\">LocationArray</a> {</div>\n-<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\">  234</span> </div>\n-<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01093.html#a23ed026fe98bd57164dbb601791f51fc\">  235</a></span>        <a class=\"code hl_function\" href=\"a01093.html#a23ed026fe98bd57164dbb601791f51fc\">LocationArray</a>() : <a class=\"code hl_variable\" href=\"a01093.html#afb60a8380cb9df186de7183b32bd84e2\">ptexIdx</a>(-1), <a class=\"code hl_variable\" href=\"a01093.html#ab9e5cd822f289b54101de5a704d68ac5\">numLocations</a>(0), <a class=\"code hl_variable\" href=\"a01093.html#a22a5e18d1aeafd28cdd38b543c50c688\">s</a>(0), <a class=\"code hl_variable\" href=\"a01093.html#a1e42f8f49a2deb57d4c2f0005c4ec020\">t</a>(0) { }</div>\n-<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\">  236</span> </div>\n-<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01093.html#afb60a8380cb9df186de7183b32bd84e2\">  237</a></span>        <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"a01093.html#afb60a8380cb9df186de7183b32bd84e2\">ptexIdx</a>,        </div>\n-<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01093.html#ab9e5cd822f289b54101de5a704d68ac5\">  238</a></span>            <a class=\"code hl_variable\" href=\"a01093.html#ab9e5cd822f289b54101de5a704d68ac5\">numLocations</a>;   </div>\n-<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\">  239</span> </div>\n-<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01093.html#a22a5e18d1aeafd28cdd38b543c50c688\">  240</a></span>        REAL  <span class=\"keyword\">const</span> * <a class=\"code hl_variable\" href=\"a01093.html#a22a5e18d1aeafd28cdd38b543c50c688\">s</a>,    </div>\n-<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01093.html#a1e42f8f49a2deb57d4c2f0005c4ec020\">  241</a></span>                    * <a class=\"code hl_variable\" href=\"a01093.html#a1e42f8f49a2deb57d4c2f0005c4ec020\">t</a>;    </div>\n-<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\">  242</span>    };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\">  243</span> </div>\n-<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01049.html#a940880e2d35dea72f52db5bcdc9c94b7\">  244</a></span>    <span class=\"keyword\">typedef</span> std::vector&lt;LocationArray&gt; <a class=\"code hl_typedef\" href=\"a01049.html#a940880e2d35dea72f52db5bcdc9c94b7\">LocationArrayVec</a>;</div>\n-<div class=\"line\"><a id=\"l00245\" name=\"l00245\"></a><span class=\"lineno\">  245</span> </div>\n-<div class=\"line\"><a id=\"l00269\" name=\"l00269\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01049.html#aeed4f0b7aa0a6a1d8f3673e01c062d48\">  269</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01077.html\">LimitStencilTableReal&lt;REAL&gt;</a> <span class=\"keyword\">const</span> * <a class=\"code hl_function\" href=\"a01049.html#aeed4f0b7aa0a6a1d8f3673e01c062d48\">Create</a>(</div>\n-<div class=\"line\"><a id=\"l00270\" name=\"l00270\"></a><span class=\"lineno\">  270</span>                <a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> &amp; refiner,</div>\n-<div class=\"line\"><a id=\"l00271\" name=\"l00271\"></a><span class=\"lineno\">  271</span>                <a class=\"code hl_typedef\" href=\"a01049.html#a940880e2d35dea72f52db5bcdc9c94b7\">LocationArrayVec</a> <span class=\"keyword\">const</span> &amp; locationArrays,</div>\n-<div class=\"line\"><a id=\"l00272\" name=\"l00272\"></a><span class=\"lineno\">  272</span>                <a class=\"code hl_class\" href=\"a01061.html\">StencilTableReal&lt;REAL&gt;</a> <span class=\"keyword\">const</span> * cvStencils = 0,</div>\n-<div class=\"line\"><a id=\"l00273\" name=\"l00273\"></a><span class=\"lineno\">  273</span>                <a class=\"code hl_class\" href=\"a00993.html\">PatchTable</a> <span class=\"keyword\">const</span> * patchTable = 0,</div>\n-<div class=\"line\"><a id=\"l00274\" name=\"l00274\"></a><span class=\"lineno\">  274</span>                <a class=\"code hl_struct\" href=\"a01089.html\">Options</a> options = <a class=\"code hl_struct\" href=\"a01089.html\">Options</a>());</div>\n-<div class=\"line\"><a id=\"l00275\" name=\"l00275\"></a><span class=\"lineno\">  275</span> </div>\n-<div class=\"line\"><a id=\"l00276\" name=\"l00276\"></a><span class=\"lineno\">  276</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00277\" name=\"l00277\"></a><span class=\"lineno\">  277</span> </div>\n-<div class=\"line\"><a id=\"l00278\" name=\"l00278\"></a><span class=\"lineno\">  278</span> </div>\n-<div class=\"line\"><a id=\"l00279\" name=\"l00279\"></a><span class=\"lineno\">  279</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00280\" name=\"l00280\"></a><span class=\"lineno\">  280</span><span class=\"comment\">//  Public wrapper classes for the templates</span></div>\n-<div class=\"line\"><a id=\"l00281\" name=\"l00281\"></a><span class=\"lineno\">  281</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00282\" name=\"l00282\"></a><span class=\"lineno\">  282</span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01057.html\">Stencil</a>;</div>\n-<div class=\"line\"><a id=\"l00283\" name=\"l00283\"></a><span class=\"lineno\">  283</span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a>;</div>\n-<div class=\"line\"><a id=\"l00284\" name=\"l00284\"></a><span class=\"lineno\">  284</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00287\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00287\" name=\"l00287\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01097.html\">  287</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01097.html\">StencilTableFactory</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"a01045.html\">StencilTableFactoryReal</a>&lt;float&gt; {</div>\n-<div class=\"line\"><a id=\"l00288\" name=\"l00288\"></a><span class=\"lineno\">  288</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00289\" name=\"l00289\"></a><span class=\"lineno\">  289</span>    <span class=\"keyword\">typedef</span> <a class=\"code hl_class\" href=\"a01045.html\">StencilTableFactoryReal&lt;float&gt;</a> <a class=\"code hl_class\" href=\"a01045.html\">BaseFactory</a>;</div>\n-<div class=\"line\"><a id=\"l00290\" name=\"l00290\"></a><span class=\"lineno\">  290</span>    <span class=\"keyword\">typedef</span> <a class=\"code hl_class\" href=\"a01061.html\">StencilTableReal&lt;float&gt;</a>        <a class=\"code hl_class\" href=\"a01061.html\">BaseTable</a>;</div>\n-<div class=\"line\"><a id=\"l00291\" name=\"l00291\"></a><span class=\"lineno\">  291</span> </div>\n-<div class=\"line\"><a id=\"l00292\" name=\"l00292\"></a><span class=\"lineno\">  292</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"foldopen\" id=\"foldopen00293\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00293\" name=\"l00293\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01097.html#a667e11d1b8502dd1215608af93ada08c\">  293</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const</span> * <a class=\"code hl_function\" href=\"a01097.html#a667e11d1b8502dd1215608af93ada08c\">Create</a>(</div>\n-<div class=\"line\"><a id=\"l00294\" name=\"l00294\"></a><span class=\"lineno\">  294</span>                <a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> &amp; refiner, Options options = Options()) {</div>\n-<div class=\"line\"><a id=\"l00295\" name=\"l00295\"></a><span class=\"lineno\">  295</span> </div>\n-<div class=\"line\"><a id=\"l00296\" name=\"l00296\"></a><span class=\"lineno\">  296</span>        <span class=\"keywordflow\">return</span> <span class=\"keyword\">static_cast&lt;</span><a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">&gt;</span>(</div>\n-<div class=\"line\"><a id=\"l00297\" name=\"l00297\"></a><span class=\"lineno\">  297</span>                <a class=\"code hl_function\" href=\"a01045.html#a0f706293d0b11df8ec9d06ce7e4b6bb2\">BaseFactory::Create</a>(refiner, options));</div>\n-<div class=\"line\"><a id=\"l00298\" name=\"l00298\"></a><span class=\"lineno\">  298</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00299\" name=\"l00299\"></a><span class=\"lineno\">  299</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00300\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00300\" name=\"l00300\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01097.html#ac5c331f10fb4518358660a5538fac897\">  300</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const</span> * <a class=\"code hl_function\" href=\"a01097.html#ac5c331f10fb4518358660a5538fac897\">Create</a>(</div>\n-<div class=\"line\"><a id=\"l00301\" name=\"l00301\"></a><span class=\"lineno\">  301</span>                <span class=\"keywordtype\">int</span> numTables, <a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const</span> ** tables) {</div>\n-<div class=\"line\"><a id=\"l00302\" name=\"l00302\"></a><span class=\"lineno\">  302</span> </div>\n-<div class=\"line\"><a id=\"l00303\" name=\"l00303\"></a><span class=\"lineno\">  303</span>        <span class=\"keywordflow\">return</span> <span class=\"keyword\">static_cast&lt;</span><a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">&gt;</span>(</div>\n-<div class=\"line\"><a id=\"l00304\" name=\"l00304\"></a><span class=\"lineno\">  304</span>                <a class=\"code hl_function\" href=\"a01045.html#a0f706293d0b11df8ec9d06ce7e4b6bb2\">BaseFactory::Create</a>(numTables,</div>\n-<div class=\"line\"><a id=\"l00305\" name=\"l00305\"></a><span class=\"lineno\">  305</span>                        <span class=\"keyword\">reinterpret_cast&lt;</span><a class=\"code hl_class\" href=\"a01061.html\">BaseTable</a> <span class=\"keyword\">const </span>**<span class=\"keyword\">&gt;</span>(tables)));</div>\n-<div class=\"line\"><a id=\"l00306\" name=\"l00306\"></a><span class=\"lineno\">  306</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\">  307</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00308\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00308\" name=\"l00308\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01097.html#ab7374d716e8637a5ffbd12029713ec0f\">  308</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const</span> * <a class=\"code hl_function\" href=\"a01097.html#ab7374d716e8637a5ffbd12029713ec0f\">AppendLocalPointStencilTable</a>(</div>\n-<div class=\"line\"><a id=\"l00309\" name=\"l00309\"></a><span class=\"lineno\">  309</span>                <a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> &amp;refiner,</div>\n-<div class=\"line\"><a id=\"l00310\" name=\"l00310\"></a><span class=\"lineno\">  310</span>                <a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const</span> *baseStencilTable,</div>\n-<div class=\"line\"><a id=\"l00311\" name=\"l00311\"></a><span class=\"lineno\">  311</span>                <a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const</span> *localPointStencilTable,</div>\n-<div class=\"line\"><a id=\"l00312\" name=\"l00312\"></a><span class=\"lineno\">  312</span>                <span class=\"keywordtype\">bool</span> factorize = <span class=\"keyword\">true</span>) {</div>\n-<div class=\"line\"><a id=\"l00313\" name=\"l00313\"></a><span class=\"lineno\">  313</span> </div>\n-<div class=\"line\"><a id=\"l00314\" name=\"l00314\"></a><span class=\"lineno\">  314</span>        <span class=\"keywordflow\">return</span> <span class=\"keyword\">static_cast&lt;</span><a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">&gt;</span>(</div>\n-<div class=\"line\"><a id=\"l00315\" name=\"l00315\"></a><span class=\"lineno\">  315</span>                <a class=\"code hl_function\" href=\"a01045.html#ac3115cc051309860811962d0b1fa9413\">BaseFactory::AppendLocalPointStencilTable</a>(refiner,</div>\n-<div class=\"line\"><a id=\"l00316\" name=\"l00316\"></a><span class=\"lineno\">  316</span>                        <span class=\"keyword\">static_cast&lt;</span><a class=\"code hl_class\" href=\"a01061.html\">BaseTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">&gt;</span>(baseStencilTable),</div>\n-<div class=\"line\"><a id=\"l00317\" name=\"l00317\"></a><span class=\"lineno\">  317</span>                        <span class=\"keyword\">static_cast&lt;</span><a class=\"code hl_class\" href=\"a01061.html\">BaseTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">&gt;</span>(localPointStencilTable),</div>\n-<div class=\"line\"><a id=\"l00318\" name=\"l00318\"></a><span class=\"lineno\">  318</span>                        factorize));</div>\n-<div class=\"line\"><a id=\"l00319\" name=\"l00319\"></a><span class=\"lineno\">  319</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00320\" name=\"l00320\"></a><span class=\"lineno\">  320</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00321\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00321\" name=\"l00321\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01097.html#a51e4075d73757537a600b85c8f3d2cfa\">  321</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const</span> * <a class=\"code hl_function\" href=\"a01097.html#a51e4075d73757537a600b85c8f3d2cfa\">AppendLocalPointStencilTableVarying</a>(</div>\n-<div class=\"line\"><a id=\"l00322\" name=\"l00322\"></a><span class=\"lineno\">  322</span>                <a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> &amp;refiner,</div>\n-<div class=\"line\"><a id=\"l00323\" name=\"l00323\"></a><span class=\"lineno\">  323</span>                <a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const</span> *baseStencilTable,</div>\n-<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\">  324</span>                <a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const</span> *localPointStencilTable,</div>\n-<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\">  325</span>                <span class=\"keywordtype\">bool</span> factorize = <span class=\"keyword\">true</span>) {</div>\n-<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\">  326</span> </div>\n-<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\">  327</span>        <span class=\"keywordflow\">return</span> <span class=\"keyword\">static_cast&lt;</span><a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">&gt;</span>(</div>\n-<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\">  328</span>                <a class=\"code hl_function\" href=\"a01045.html#abad17ff90d068c3fb121b6524a69dc04\">BaseFactory::AppendLocalPointStencilTableVarying</a>(refiner,</div>\n-<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\">  329</span>                        <span class=\"keyword\">static_cast&lt;</span><a class=\"code hl_class\" href=\"a01061.html\">BaseTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">&gt;</span>(baseStencilTable),</div>\n-<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\">  330</span>                        <span class=\"keyword\">static_cast&lt;</span><a class=\"code hl_class\" href=\"a01061.html\">BaseTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">&gt;</span>(localPointStencilTable),</div>\n-<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\">  331</span>                        factorize));</div>\n-<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\">  332</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00333\" name=\"l00333\"></a><span class=\"lineno\">  333</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00334\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00334\" name=\"l00334\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01097.html#aa8beed46ad3a5f5f34241b9d21907f84\">  334</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const</span> * <a class=\"code hl_function\" href=\"a01097.html#aa8beed46ad3a5f5f34241b9d21907f84\">AppendLocalPointStencilTableFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l00335\" name=\"l00335\"></a><span class=\"lineno\">  335</span>                <a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> &amp;refiner,</div>\n-<div class=\"line\"><a id=\"l00336\" name=\"l00336\"></a><span class=\"lineno\">  336</span>                <a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const</span> *baseStencilTable,</div>\n-<div class=\"line\"><a id=\"l00337\" name=\"l00337\"></a><span class=\"lineno\">  337</span>                <a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const</span> *localPointStencilTable,</div>\n-<div class=\"line\"><a id=\"l00338\" name=\"l00338\"></a><span class=\"lineno\">  338</span>                <span class=\"keywordtype\">int</span> channel = 0,</div>\n-<div class=\"line\"><a id=\"l00339\" name=\"l00339\"></a><span class=\"lineno\">  339</span>                <span class=\"keywordtype\">bool</span> factorize = <span class=\"keyword\">true</span>) {</div>\n-<div class=\"line\"><a id=\"l00340\" name=\"l00340\"></a><span class=\"lineno\">  340</span> </div>\n-<div class=\"line\"><a id=\"l00341\" name=\"l00341\"></a><span class=\"lineno\">  341</span>        <span class=\"keywordflow\">return</span> <span class=\"keyword\">static_cast&lt;</span><a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">&gt;</span>(</div>\n-<div class=\"line\"><a id=\"l00342\" name=\"l00342\"></a><span class=\"lineno\">  342</span>                <a class=\"code hl_function\" href=\"a01045.html#a33b8f611576b3e0907832e571e4844f5\">BaseFactory::AppendLocalPointStencilTableFaceVarying</a>(refiner,</div>\n-<div class=\"line\"><a id=\"l00343\" name=\"l00343\"></a><span class=\"lineno\">  343</span>                        <span class=\"keyword\">static_cast&lt;</span><a class=\"code hl_class\" href=\"a01061.html\">BaseTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">&gt;</span>(baseStencilTable),</div>\n-<div class=\"line\"><a id=\"l00344\" name=\"l00344\"></a><span class=\"lineno\">  344</span>                        <span class=\"keyword\">static_cast&lt;</span><a class=\"code hl_class\" href=\"a01061.html\">BaseTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">&gt;</span>(localPointStencilTable),</div>\n-<div class=\"line\"><a id=\"l00345\" name=\"l00345\"></a><span class=\"lineno\">  345</span>                        channel, factorize));</div>\n-<div class=\"line\"><a id=\"l00346\" name=\"l00346\"></a><span class=\"lineno\">  346</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00347\" name=\"l00347\"></a><span class=\"lineno\">  347</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00348\" name=\"l00348\"></a><span class=\"lineno\">  348</span> </div>\n-<div class=\"line\"><a id=\"l00349\" name=\"l00349\"></a><span class=\"lineno\">  349</span><span class=\"keyword\">class </span>LimitStencil;</div>\n-<div class=\"line\"><a id=\"l00350\" name=\"l00350\"></a><span class=\"lineno\">  350</span><span class=\"keyword\">class </span>LimitStencilTable;</div>\n-<div class=\"line\"><a id=\"l00351\" name=\"l00351\"></a><span class=\"lineno\">  351</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00354\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00354\" name=\"l00354\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01101.html\">  354</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01101.html\">LimitStencilTableFactory</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"a01049.html\">LimitStencilTableFactoryReal</a>&lt;float&gt; {</div>\n-<div class=\"line\"><a id=\"l00355\" name=\"l00355\"></a><span class=\"lineno\">  355</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00356\" name=\"l00356\"></a><span class=\"lineno\">  356</span>    <span class=\"keyword\">typedef</span> <a class=\"code hl_class\" href=\"a01049.html\">LimitStencilTableFactoryReal&lt;float&gt;</a> <a class=\"code hl_class\" href=\"a01049.html\">BaseFactory</a>;</div>\n-<div class=\"line\"><a id=\"l00357\" name=\"l00357\"></a><span class=\"lineno\">  357</span>    <span class=\"keyword\">typedef</span> <a class=\"code hl_class\" href=\"a01061.html\">StencilTableReal&lt;float&gt;</a>             <a class=\"code hl_class\" href=\"a01061.html\">BaseTable</a>;</div>\n-<div class=\"line\"><a id=\"l00358\" name=\"l00358\"></a><span class=\"lineno\">  358</span> </div>\n-<div class=\"line\"><a id=\"l00359\" name=\"l00359\"></a><span class=\"lineno\">  359</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"foldopen\" id=\"foldopen00360\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00360\" name=\"l00360\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01101.html#a1a5ba2b86bac859c158ec1c8141e29a7\">  360</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01081.html\">LimitStencilTable</a> <span class=\"keyword\">const</span> * <a class=\"code hl_function\" href=\"a01101.html#a1a5ba2b86bac859c158ec1c8141e29a7\">Create</a>(</div>\n-<div class=\"line\"><a id=\"l00361\" name=\"l00361\"></a><span class=\"lineno\">  361</span>                <a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> &amp; refiner,</div>\n-<div class=\"line\"><a id=\"l00362\" name=\"l00362\"></a><span class=\"lineno\">  362</span>                <a class=\"code hl_typedef\" href=\"a01049.html#a940880e2d35dea72f52db5bcdc9c94b7\">LocationArrayVec</a> <span class=\"keyword\">const</span> &amp; locationArrays,</div>\n-<div class=\"line\"><a id=\"l00363\" name=\"l00363\"></a><span class=\"lineno\">  363</span>                <a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const</span> * cvStencils = 0,</div>\n-<div class=\"line\"><a id=\"l00364\" name=\"l00364\"></a><span class=\"lineno\">  364</span>                <a class=\"code hl_class\" href=\"a00993.html\">PatchTable</a> <span class=\"keyword\">const</span> * patchTable = 0,</div>\n-<div class=\"line\"><a id=\"l00365\" name=\"l00365\"></a><span class=\"lineno\">  365</span>                Options options = Options()) {</div>\n-<div class=\"line\"><a id=\"l00366\" name=\"l00366\"></a><span class=\"lineno\">  366</span> </div>\n-<div class=\"line\"><a id=\"l00367\" name=\"l00367\"></a><span class=\"lineno\">  367</span>        <span class=\"keywordflow\">return</span> <span class=\"keyword\">static_cast&lt;</span><a class=\"code hl_class\" href=\"a01081.html\">LimitStencilTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">&gt;</span>(</div>\n-<div class=\"line\"><a id=\"l00368\" name=\"l00368\"></a><span class=\"lineno\">  368</span>                <a class=\"code hl_function\" href=\"a01049.html#aeed4f0b7aa0a6a1d8f3673e01c062d48\">BaseFactory::Create</a>(</div>\n-<div class=\"line\"><a id=\"l00369\" name=\"l00369\"></a><span class=\"lineno\">  369</span>                        refiner,</div>\n-<div class=\"line\"><a id=\"l00370\" name=\"l00370\"></a><span class=\"lineno\">  370</span>                        locationArrays,</div>\n-<div class=\"line\"><a id=\"l00371\" name=\"l00371\"></a><span class=\"lineno\">  371</span>                        <span class=\"keyword\">static_cast&lt;</span><a class=\"code hl_class\" href=\"a01061.html\">BaseTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">&gt;</span>(cvStencils),</div>\n-<div class=\"line\"><a id=\"l00372\" name=\"l00372\"></a><span class=\"lineno\">  372</span>                        patchTable,</div>\n-<div class=\"line\"><a id=\"l00373\" name=\"l00373\"></a><span class=\"lineno\">  373</span>                        options));</div>\n-<div class=\"line\"><a id=\"l00374\" name=\"l00374\"></a><span class=\"lineno\">  374</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00375\" name=\"l00375\"></a><span class=\"lineno\">  375</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00376\" name=\"l00376\"></a><span class=\"lineno\">  376</span> </div>\n-<div class=\"line\"><a id=\"l00377\" name=\"l00377\"></a><span class=\"lineno\">  377</span>} <span class=\"comment\">// end namespace Far</span></div>\n-<div class=\"line\"><a id=\"l00378\" name=\"l00378\"></a><span class=\"lineno\">  378</span> </div>\n-<div class=\"line\"><a id=\"l00379\" name=\"l00379\"></a><span class=\"lineno\">  379</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00380\" name=\"l00380\"></a><span class=\"lineno\">  380</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00381\" name=\"l00381\"></a><span class=\"lineno\">  381</span> </div>\n-<div class=\"line\"><a id=\"l00382\" name=\"l00382\"></a><span class=\"lineno\">  382</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l00383\" name=\"l00383\"></a><span class=\"lineno\">  383</span> </div>\n-<div class=\"line\"><a id=\"l00384\" name=\"l00384\"></a><span class=\"lineno\">  384</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// OPENSUBDIV3_FAR_STENCILTABLE_FACTORY_H</span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa00993_html\"><div class=\"ttname\"><a href=\"a00993.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable</a></div><div class=\"ttdoc\">Container for arrays of parametric patches.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00761_source.html#l00055\">patchTable.h:55</a></div></div>\n-<div class=\"ttc\" id=\"aa01045_html\"><div class=\"ttname\"><a href=\"a01045.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactoryReal</a></div><div class=\"ttdoc\">A specialized factory for StencilTable.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00051\">stencilTableFactory.h:51</a></div></div>\n-<div class=\"ttc\" id=\"aa01045_html_a0f706293d0b11df8ec9d06ce7e4b6bb2\"><div class=\"ttname\"><a href=\"a01045.html#a0f706293d0b11df8ec9d06ce7e4b6bb2\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactoryReal::Create</a></div><div class=\"ttdeci\">static StencilTableReal&lt; REAL &gt; const * Create(TopologyRefiner const &amp;refiner, Options options=Options())</div><div class=\"ttdoc\">Instantiates StencilTable from TopologyRefiner that have been refined uniformly or adaptively.</div></div>\n-<div class=\"ttc\" id=\"aa01045_html_a33b8f611576b3e0907832e571e4844f5\"><div class=\"ttname\"><a href=\"a01045.html#a33b8f611576b3e0907832e571e4844f5\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactoryReal::AppendLocalPointStencilTableFaceVarying</a></div><div class=\"ttdeci\">static StencilTableReal&lt; REAL &gt; const * AppendLocalPointStencilTableFaceVarying(TopologyRefiner const &amp;refiner, StencilTableReal&lt; REAL &gt; const *baseStencilTable, StencilTableReal&lt; REAL &gt; const *localPointStencilTable, int channel=0, bool factorize=true)</div><div class=\"ttdoc\">Utility function for stencil splicing for local point face-varying stencils.</div></div>\n-<div class=\"ttc\" id=\"aa01045_html_a46c8a310cf4c094f8c80e1cb8dc1f911\"><div class=\"ttname\"><a href=\"a01045.html#a46c8a310cf4c094f8c80e1cb8dc1f911\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactoryReal::Mode</a></div><div class=\"ttdeci\">Mode</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00055\">stencilTableFactory.h:55</a></div></div>\n-<div class=\"ttc\" id=\"aa01045_html_a46c8a310cf4c094f8c80e1cb8dc1f911a4178369e390d2596ce60676642fec077\"><div class=\"ttname\"><a href=\"a01045.html#a46c8a310cf4c094f8c80e1cb8dc1f911a4178369e390d2596ce60676642fec077\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactoryReal::INTERPOLATE_FACE_VARYING</a></div><div class=\"ttdeci\">@ INTERPOLATE_FACE_VARYING</div><div class=\"ttdoc\">face-varying primvar stencils</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00059\">stencilTableFactory.h:58</a></div></div>\n-<div class=\"ttc\" id=\"aa01045_html_a46c8a310cf4c094f8c80e1cb8dc1f911ab18c20abfc04611ab0aec5e1c81bb2ab\"><div class=\"ttname\"><a href=\"a01045.html#a46c8a310cf4c094f8c80e1cb8dc1f911ab18c20abfc04611ab0aec5e1c81bb2ab\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactoryReal::INTERPOLATE_VARYING</a></div><div class=\"ttdeci\">@ INTERPOLATE_VARYING</div><div class=\"ttdoc\">varying primvar stencils</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00057\">stencilTableFactory.h:57</a></div></div>\n-<div class=\"ttc\" id=\"aa01045_html_a46c8a310cf4c094f8c80e1cb8dc1f911ab491ed84aea170a330914a3f88b16d50\"><div class=\"ttname\"><a href=\"a01045.html#a46c8a310cf4c094f8c80e1cb8dc1f911ab491ed84aea170a330914a3f88b16d50\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactoryReal::INTERPOLATE_VERTEX</a></div><div class=\"ttdeci\">@ INTERPOLATE_VERTEX</div><div class=\"ttdoc\">vertex primvar stencils</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00056\">stencilTableFactory.h:56</a></div></div>\n-<div class=\"ttc\" id=\"aa01045_html_abad17ff90d068c3fb121b6524a69dc04\"><div class=\"ttname\"><a href=\"a01045.html#abad17ff90d068c3fb121b6524a69dc04\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactoryReal::AppendLocalPointStencilTableVarying</a></div><div class=\"ttdeci\">static StencilTableReal&lt; REAL &gt; const * AppendLocalPointStencilTableVarying(TopologyRefiner const &amp;refiner, StencilTableReal&lt; REAL &gt; const *baseStencilTable, StencilTableReal&lt; REAL &gt; const *localPointStencilTable, bool factorize=true)</div><div class=\"ttdoc\">Utility function for stencil splicing for local point varying stencils.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00148\">stencilTableFactory.h:148</a></div></div>\n-<div class=\"ttc\" id=\"aa01045_html_ac3115cc051309860811962d0b1fa9413\"><div class=\"ttname\"><a href=\"a01045.html#ac3115cc051309860811962d0b1fa9413\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactoryReal::AppendLocalPointStencilTable</a></div><div class=\"ttdeci\">static StencilTableReal&lt; REAL &gt; const * AppendLocalPointStencilTable(TopologyRefiner const &amp;refiner, StencilTableReal&lt; REAL &gt; const *baseStencilTable, StencilTableReal&lt; REAL &gt; const *localPointStencilTable, bool factorize=true)</div><div class=\"ttdoc\">Utility function for stencil splicing for local point stencils.</div></div>\n-<div class=\"ttc\" id=\"aa01045_html_aecc6558dfbb8b7bb2c2a89150cb8340a\"><div class=\"ttname\"><a href=\"a01045.html#aecc6558dfbb8b7bb2c2a89150cb8340a\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactoryReal::Create</a></div><div class=\"ttdeci\">static StencilTableReal&lt; REAL &gt; const * Create(int numTables, StencilTableReal&lt; REAL &gt; const **tables)</div><div class=\"ttdoc\">Instantiates StencilTable by concatenating an array of existing stencil tables.</div></div>\n-<div class=\"ttc\" id=\"aa01049_html\"><div class=\"ttname\"><a href=\"a01049.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableFactoryReal</a></div><div class=\"ttdoc\">A specialized factory for LimitStencilTable.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00209\">stencilTableFactory.h:209</a></div></div>\n-<div class=\"ttc\" id=\"aa01049_html_a46c8a310cf4c094f8c80e1cb8dc1f911\"><div class=\"ttname\"><a href=\"a01049.html#a46c8a310cf4c094f8c80e1cb8dc1f911\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableFactoryReal::Mode</a></div><div class=\"ttdeci\">Mode</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00213\">stencilTableFactory.h:213</a></div></div>\n-<div class=\"ttc\" id=\"aa01049_html_a46c8a310cf4c094f8c80e1cb8dc1f911a4178369e390d2596ce60676642fec077\"><div class=\"ttname\"><a href=\"a01049.html#a46c8a310cf4c094f8c80e1cb8dc1f911a4178369e390d2596ce60676642fec077\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableFactoryReal::INTERPOLATE_FACE_VARYING</a></div><div class=\"ttdeci\">@ INTERPOLATE_FACE_VARYING</div><div class=\"ttdoc\">face-varying primvar stencils</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00217\">stencilTableFactory.h:216</a></div></div>\n-<div class=\"ttc\" id=\"aa01049_html_a46c8a310cf4c094f8c80e1cb8dc1f911ab18c20abfc04611ab0aec5e1c81bb2ab\"><div class=\"ttname\"><a href=\"a01049.html#a46c8a310cf4c094f8c80e1cb8dc1f911ab18c20abfc04611ab0aec5e1c81bb2ab\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableFactoryReal::INTERPOLATE_VARYING</a></div><div class=\"ttdeci\">@ INTERPOLATE_VARYING</div><div class=\"ttdoc\">varying primvar stencils</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00215\">stencilTableFactory.h:215</a></div></div>\n-<div class=\"ttc\" id=\"aa01049_html_a46c8a310cf4c094f8c80e1cb8dc1f911ab491ed84aea170a330914a3f88b16d50\"><div class=\"ttname\"><a href=\"a01049.html#a46c8a310cf4c094f8c80e1cb8dc1f911ab491ed84aea170a330914a3f88b16d50\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableFactoryReal::INTERPOLATE_VERTEX</a></div><div class=\"ttdeci\">@ INTERPOLATE_VERTEX</div><div class=\"ttdoc\">vertex primvar stencils</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00214\">stencilTableFactory.h:214</a></div></div>\n-<div class=\"ttc\" id=\"aa01049_html_a940880e2d35dea72f52db5bcdc9c94b7\"><div class=\"ttname\"><a href=\"a01049.html#a940880e2d35dea72f52db5bcdc9c94b7\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableFactoryReal::LocationArrayVec</a></div><div class=\"ttdeci\">std::vector&lt; LocationArray &gt; LocationArrayVec</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00244\">stencilTableFactory.h:244</a></div></div>\n-<div class=\"ttc\" id=\"aa01049_html_aeed4f0b7aa0a6a1d8f3673e01c062d48\"><div class=\"ttname\"><a href=\"a01049.html#aeed4f0b7aa0a6a1d8f3673e01c062d48\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableFactoryReal::Create</a></div><div class=\"ttdeci\">static LimitStencilTableReal&lt; REAL &gt; const * Create(TopologyRefiner const &amp;refiner, LocationArrayVec const &amp;locationArrays, StencilTableReal&lt; REAL &gt; const *cvStencils=0, PatchTable const *patchTable=0, Options options=Options())</div><div class=\"ttdoc\">Instantiates LimitStencilTable from a TopologyRefiner that has been refined either uniformly or adapt...</div></div>\n-<div class=\"ttc\" id=\"aa01053_html\"><div class=\"ttname\"><a href=\"a01053.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilReal</a></div><div class=\"ttdoc\">Vertex stencil descriptor.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00053\">stencilTable.h:53</a></div></div>\n-<div class=\"ttc\" id=\"aa01057_html\"><div class=\"ttname\"><a href=\"a01057.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::Stencil</a></div><div class=\"ttdoc\">Vertex stencil class wrapping the template for compatibility.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00116\">stencilTable.h:116</a></div></div>\n-<div class=\"ttc\" id=\"aa01061_html\"><div class=\"ttname\"><a href=\"a01061.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal</a></div><div class=\"ttdoc\">Table of subdivision stencils.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00141\">stencilTable.h:141</a></div></div>\n-<div class=\"ttc\" id=\"aa01065_html\"><div class=\"ttname\"><a href=\"a01065.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTable</a></div><div class=\"ttdoc\">Stencil table class wrapping the template for compatibility.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00273\">stencilTable.h:273</a></div></div>\n-<div class=\"ttc\" id=\"aa01077_html\"><div class=\"ttname\"><a href=\"a01077.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableReal</a></div><div class=\"ttdoc\">Table of limit subdivision stencils.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00409\">stencilTable.h:409</a></div></div>\n-<div class=\"ttc\" id=\"aa01081_html\"><div class=\"ttname\"><a href=\"a01081.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTable</a></div><div class=\"ttdoc\">Limit stencil table class wrapping the template for compatibility.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00583\">stencilTable.h:583</a></div></div>\n-<div class=\"ttc\" id=\"aa01085_html\"><div class=\"ttname\"><a href=\"a01085.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactoryReal::Options</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00061\">stencilTableFactory.h:61</a></div></div>\n-<div class=\"ttc\" id=\"aa01085_html_a059c9b4a95b37faa88d1dd0fac0adc8d\"><div class=\"ttname\"><a href=\"a01085.html#a059c9b4a95b37faa88d1dd0fac0adc8d\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactoryReal::Options::factorizeIntermediateLevels</a></div><div class=\"ttdeci\">unsigned int factorizeIntermediateLevels</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00075\">stencilTableFactory.h:77</a></div></div>\n-<div class=\"ttc\" id=\"aa01085_html_a110477b0e61b09d8be1a472df34f6386\"><div class=\"ttname\"><a href=\"a01085.html#a110477b0e61b09d8be1a472df34f6386\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactoryReal::Options::maxLevel</a></div><div class=\"ttdeci\">unsigned int maxLevel</div><div class=\"ttdoc\">generate stencils up to 'maxLevel'</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00078\">stencilTableFactory.h:78</a></div></div>\n-<div class=\"ttc\" id=\"aa01085_html_a28d39a844c3a37ab61d32ab7c6352f09\"><div class=\"ttname\"><a href=\"a01085.html#a28d39a844c3a37ab61d32ab7c6352f09\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactoryReal::Options::Options</a></div><div class=\"ttdeci\">Options()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00063\">stencilTableFactory.h:63</a></div></div>\n-<div class=\"ttc\" id=\"aa01085_html_a55457e193a57e08a56663abf8cc838b4\"><div class=\"ttname\"><a href=\"a01085.html#a55457e193a57e08a56663abf8cc838b4\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactoryReal::Options::generateIntermediateLevels</a></div><div class=\"ttdeci\">unsigned int generateIntermediateLevels</div><div class=\"ttdoc\">vertices at all levels or highest only</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00074\">stencilTableFactory.h:74</a></div></div>\n-<div class=\"ttc\" id=\"aa01085_html_a7091c369d67630320a623dbc4a2b34b7\"><div class=\"ttname\"><a href=\"a01085.html#a7091c369d67630320a623dbc4a2b34b7\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactoryReal::Options::generateControlVerts</a></div><div class=\"ttdeci\">unsigned int generateControlVerts</div><div class=\"ttdoc\">generate stencils for control-vertices</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00073\">stencilTableFactory.h:73</a></div></div>\n-<div class=\"ttc\" id=\"aa01085_html_a73289d5e55adccde08afd7399a2357f2\"><div class=\"ttname\"><a href=\"a01085.html#a73289d5e55adccde08afd7399a2357f2\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactoryReal::Options::generateOffsets</a></div><div class=\"ttdeci\">unsigned int generateOffsets</div><div class=\"ttdoc\">populate optional &quot;_offsets&quot; field</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00072\">stencilTableFactory.h:72</a></div></div>\n-<div class=\"ttc\" id=\"aa01085_html_a7cd8273eef086a749ce3d40063fb4a28\"><div class=\"ttname\"><a href=\"a01085.html#a7cd8273eef086a749ce3d40063fb4a28\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactoryReal::Options::fvarChannel</a></div><div class=\"ttdeci\">unsigned int fvarChannel</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00079\">stencilTableFactory.h:79</a></div></div>\n-<div class=\"ttc\" id=\"aa01085_html_ab7c383a49298cf060574242fe679378f\"><div class=\"ttname\"><a href=\"a01085.html#ab7c383a49298cf060574242fe679378f\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactoryReal::Options::interpolationMode</a></div><div class=\"ttdeci\">unsigned int interpolationMode</div><div class=\"ttdoc\">interpolation mode</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00071\">stencilTableFactory.h:71</a></div></div>\n-<div class=\"ttc\" id=\"aa01089_html\"><div class=\"ttname\"><a href=\"a01089.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableFactoryReal::Options</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00219\">stencilTableFactory.h:219</a></div></div>\n-<div class=\"ttc\" id=\"aa01089_html_a28d39a844c3a37ab61d32ab7c6352f09\"><div class=\"ttname\"><a href=\"a01089.html#a28d39a844c3a37ab61d32ab7c6352f09\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableFactoryReal::Options::Options</a></div><div class=\"ttdeci\">Options()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00221\">stencilTableFactory.h:221</a></div></div>\n-<div class=\"ttc\" id=\"aa01089_html_a7cd8273eef086a749ce3d40063fb4a28\"><div class=\"ttname\"><a href=\"a01089.html#a7cd8273eef086a749ce3d40063fb4a28\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableFactoryReal::Options::fvarChannel</a></div><div class=\"ttdeci\">unsigned int fvarChannel</div><div class=\"ttdoc\">face-varying channel to use</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00229\">stencilTableFactory.h:229</a></div></div>\n-<div class=\"ttc\" id=\"aa01089_html_ab7c383a49298cf060574242fe679378f\"><div class=\"ttname\"><a href=\"a01089.html#ab7c383a49298cf060574242fe679378f\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableFactoryReal::Options::interpolationMode</a></div><div class=\"ttdeci\">unsigned int interpolationMode</div><div class=\"ttdoc\">interpolation mode</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00226\">stencilTableFactory.h:226</a></div></div>\n-<div class=\"ttc\" id=\"aa01089_html_adb29a270ae6d25f74593a6c23488adeb\"><div class=\"ttname\"><a href=\"a01089.html#adb29a270ae6d25f74593a6c23488adeb\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableFactoryReal::Options::generate2ndDerivatives</a></div><div class=\"ttdeci\">unsigned int generate2ndDerivatives</div><div class=\"ttdoc\">Generate weights for 2nd derivatives.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00228\">stencilTableFactory.h:228</a></div></div>\n-<div class=\"ttc\" id=\"aa01089_html_af252d435ac2f27d8f77717cd529a2339\"><div class=\"ttname\"><a href=\"a01089.html#af252d435ac2f27d8f77717cd529a2339\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableFactoryReal::Options::generate1stDerivatives</a></div><div class=\"ttdeci\">unsigned int generate1stDerivatives</div><div class=\"ttdoc\">Generate weights for 1st derivatives.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00227\">stencilTableFactory.h:227</a></div></div>\n-<div class=\"ttc\" id=\"aa01093_html\"><div class=\"ttname\"><a href=\"a01093.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableFactoryReal::LocationArray</a></div><div class=\"ttdoc\">Descriptor for limit surface locations.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00233\">stencilTableFactory.h:233</a></div></div>\n-<div class=\"ttc\" id=\"aa01093_html_a1e42f8f49a2deb57d4c2f0005c4ec020\"><div class=\"ttname\"><a href=\"a01093.html#a1e42f8f49a2deb57d4c2f0005c4ec020\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableFactoryReal::LocationArray::t</a></div><div class=\"ttdeci\">REAL const * t</div><div class=\"ttdoc\">array of v coordinates</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00241\">stencilTableFactory.h:241</a></div></div>\n-<div class=\"ttc\" id=\"aa01093_html_a22a5e18d1aeafd28cdd38b543c50c688\"><div class=\"ttname\"><a href=\"a01093.html#a22a5e18d1aeafd28cdd38b543c50c688\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableFactoryReal::LocationArray::s</a></div><div class=\"ttdeci\">REAL const  * s</div><div class=\"ttdoc\">array of u coordinates</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00240\">stencilTableFactory.h:240</a></div></div>\n-<div class=\"ttc\" id=\"aa01093_html_a23ed026fe98bd57164dbb601791f51fc\"><div class=\"ttname\"><a href=\"a01093.html#a23ed026fe98bd57164dbb601791f51fc\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableFactoryReal::LocationArray::LocationArray</a></div><div class=\"ttdeci\">LocationArray()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00235\">stencilTableFactory.h:235</a></div></div>\n-<div class=\"ttc\" id=\"aa01093_html_ab9e5cd822f289b54101de5a704d68ac5\"><div class=\"ttname\"><a href=\"a01093.html#ab9e5cd822f289b54101de5a704d68ac5\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableFactoryReal::LocationArray::numLocations</a></div><div class=\"ttdeci\">int numLocations</div><div class=\"ttdoc\">number of (u,v) coordinates in the array</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00238\">stencilTableFactory.h:238</a></div></div>\n-<div class=\"ttc\" id=\"aa01093_html_afb60a8380cb9df186de7183b32bd84e2\"><div class=\"ttname\"><a href=\"a01093.html#afb60a8380cb9df186de7183b32bd84e2\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableFactoryReal::LocationArray::ptexIdx</a></div><div class=\"ttdeci\">int ptexIdx</div><div class=\"ttdoc\">ptex face index</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00237\">stencilTableFactory.h:237</a></div></div>\n-<div class=\"ttc\" id=\"aa01097_html\"><div class=\"ttname\"><a href=\"a01097.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactory</a></div><div class=\"ttdoc\">Stencil table factory class wrapping the template for compatibility.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00287\">stencilTableFactory.h:287</a></div></div>\n-<div class=\"ttc\" id=\"aa01097_html_a51e4075d73757537a600b85c8f3d2cfa\"><div class=\"ttname\"><a href=\"a01097.html#a51e4075d73757537a600b85c8f3d2cfa\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactory::AppendLocalPointStencilTableVarying</a></div><div class=\"ttdeci\">static StencilTable const * AppendLocalPointStencilTableVarying(TopologyRefiner const &amp;refiner, StencilTable const *baseStencilTable, StencilTable const *localPointStencilTable, bool factorize=true)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00321\">stencilTableFactory.h:321</a></div></div>\n-<div class=\"ttc\" id=\"aa01097_html_a667e11d1b8502dd1215608af93ada08c\"><div class=\"ttname\"><a href=\"a01097.html#a667e11d1b8502dd1215608af93ada08c\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactory::Create</a></div><div class=\"ttdeci\">static StencilTable const * Create(TopologyRefiner const &amp;refiner, Options options=Options())</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00293\">stencilTableFactory.h:293</a></div></div>\n-<div class=\"ttc\" id=\"aa01097_html_aa8beed46ad3a5f5f34241b9d21907f84\"><div class=\"ttname\"><a href=\"a01097.html#aa8beed46ad3a5f5f34241b9d21907f84\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactory::AppendLocalPointStencilTableFaceVarying</a></div><div class=\"ttdeci\">static StencilTable const * AppendLocalPointStencilTableFaceVarying(TopologyRefiner const &amp;refiner, StencilTable const *baseStencilTable, StencilTable const *localPointStencilTable, int channel=0, bool factorize=true)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00334\">stencilTableFactory.h:334</a></div></div>\n-<div class=\"ttc\" id=\"aa01097_html_ab7374d716e8637a5ffbd12029713ec0f\"><div class=\"ttname\"><a href=\"a01097.html#ab7374d716e8637a5ffbd12029713ec0f\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactory::AppendLocalPointStencilTable</a></div><div class=\"ttdeci\">static StencilTable const * AppendLocalPointStencilTable(TopologyRefiner const &amp;refiner, StencilTable const *baseStencilTable, StencilTable const *localPointStencilTable, bool factorize=true)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00308\">stencilTableFactory.h:308</a></div></div>\n-<div class=\"ttc\" id=\"aa01097_html_ac5c331f10fb4518358660a5538fac897\"><div class=\"ttname\"><a href=\"a01097.html#ac5c331f10fb4518358660a5538fac897\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactory::Create</a></div><div class=\"ttdeci\">static StencilTable const * Create(int numTables, StencilTable const **tables)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00300\">stencilTableFactory.h:300</a></div></div>\n-<div class=\"ttc\" id=\"aa01101_html\"><div class=\"ttname\"><a href=\"a01101.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableFactory</a></div><div class=\"ttdoc\">Stencil table factory class wrapping the template for compatibility.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00354\">stencilTableFactory.h:354</a></div></div>\n-<div class=\"ttc\" id=\"aa01101_html_a1a5ba2b86bac859c158ec1c8141e29a7\"><div class=\"ttname\"><a href=\"a01101.html#a1a5ba2b86bac859c158ec1c8141e29a7\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableFactory::Create</a></div><div class=\"ttdeci\">static LimitStencilTable const * Create(TopologyRefiner const &amp;refiner, LocationArrayVec const &amp;locationArrays, StencilTable const *cvStencils=0, PatchTable const *patchTable=0, Options options=Options())</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00360\">stencilTableFactory.h:360</a></div></div>\n-<div class=\"ttc\" id=\"aa01121_html\"><div class=\"ttname\"><a href=\"a01121.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner</a></div><div class=\"ttdoc\">Stores topology data for a specified set of refinement options.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00051\">topologyRefiner.h:51</a></div></div>\n+<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\">  139</span> </div>\n+<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\">  167</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00168\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#a5a332778562ac0aaa3b59e7d504329f6\">  168</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01221.html#a5a332778562ac0aaa3b59e7d504329f6\">EvalStencils</a>(</div>\n+<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\">  169</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\">  170</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n+<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\">  172</span>        <a class=\"code hl_class\" href=\"a01221.html\">GLComputeEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n+<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\">  173</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\">  174</span> </div>\n+<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\">  175</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\">  176</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01221.html#a5a332778562ac0aaa3b59e7d504329f6\">EvalStencils</a>(srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span>                                          dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\">  178</span>                                          stencilTable);</div>\n+<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\">  179</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\">  180</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n+<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\">  181</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\">  182</span>            instance = <a class=\"code hl_function\" href=\"a01221.html#ab4c3cfbc05a1b3c7e08aac8258e38139\">Create</a>(srcDesc, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\">  183</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\">  184</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>());</div>\n+<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\">  185</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\">  186</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01221.html#a5a332778562ac0aaa3b59e7d504329f6\">EvalStencils</a>(srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\">  187</span>                                                dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\">  188</span>                                                stencilTable);</div>\n+<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\">  189</span>                <span class=\"keyword\">delete</span> instance;</div>\n+<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\">  190</span>                <span class=\"keywordflow\">return</span> r;</div>\n+<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\">  191</span>            }</div>\n+<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\">  192</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\">  193</span>        }</div>\n+<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\">  194</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\">  195</span> </div>\n+<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\">  235</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00236\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#a4290a43277fbcd7d5f55aaa369939e54\">  236</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01221.html#a4290a43277fbcd7d5f55aaa369939e54\">EvalStencils</a>(</div>\n+<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\">  237</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\">  238</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\">  239</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\">  240</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\">  241</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n+<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\">  242</span>        <a class=\"code hl_class\" href=\"a01221.html\">GLComputeEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n+<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\">  243</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\">  244</span> </div>\n+<div class=\"line\"><a id=\"l00245\" name=\"l00245\"></a><span class=\"lineno\">  245</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\">  246</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01221.html#a5a332778562ac0aaa3b59e7d504329f6\">EvalStencils</a>(srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l00247\" name=\"l00247\"></a><span class=\"lineno\">  247</span>                                          dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00248\" name=\"l00248\"></a><span class=\"lineno\">  248</span>                                          duBuffer,  duDesc,</div>\n+<div class=\"line\"><a id=\"l00249\" name=\"l00249\"></a><span class=\"lineno\">  249</span>                                          dvBuffer,  dvDesc,</div>\n+<div class=\"line\"><a id=\"l00250\" name=\"l00250\"></a><span class=\"lineno\">  250</span>                                          stencilTable);</div>\n+<div class=\"line\"><a id=\"l00251\" name=\"l00251\"></a><span class=\"lineno\">  251</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00252\" name=\"l00252\"></a><span class=\"lineno\">  252</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n+<div class=\"line\"><a id=\"l00253\" name=\"l00253\"></a><span class=\"lineno\">  253</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00254\" name=\"l00254\"></a><span class=\"lineno\">  254</span>            instance = <a class=\"code hl_function\" href=\"a01221.html#ab4c3cfbc05a1b3c7e08aac8258e38139\">Create</a>(srcDesc, dstDesc, duDesc, dvDesc);</div>\n+<div class=\"line\"><a id=\"l00255\" name=\"l00255\"></a><span class=\"lineno\">  255</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l00256\" name=\"l00256\"></a><span class=\"lineno\">  256</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01221.html#a5a332778562ac0aaa3b59e7d504329f6\">EvalStencils</a>(srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l00257\" name=\"l00257\"></a><span class=\"lineno\">  257</span>                                                dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00258\" name=\"l00258\"></a><span class=\"lineno\">  258</span>                                                duBuffer,  duDesc,</div>\n+<div class=\"line\"><a id=\"l00259\" name=\"l00259\"></a><span class=\"lineno\">  259</span>                                                dvBuffer,  dvDesc,</div>\n+<div class=\"line\"><a id=\"l00260\" name=\"l00260\"></a><span class=\"lineno\">  260</span>                                                stencilTable);</div>\n+<div class=\"line\"><a id=\"l00261\" name=\"l00261\"></a><span class=\"lineno\">  261</span>                <span class=\"keyword\">delete</span> instance;</div>\n+<div class=\"line\"><a id=\"l00262\" name=\"l00262\"></a><span class=\"lineno\">  262</span>                <span class=\"keywordflow\">return</span> r;</div>\n+<div class=\"line\"><a id=\"l00263\" name=\"l00263\"></a><span class=\"lineno\">  263</span>            }</div>\n+<div class=\"line\"><a id=\"l00264\" name=\"l00264\"></a><span class=\"lineno\">  264</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00265\" name=\"l00265\"></a><span class=\"lineno\">  265</span>        }</div>\n+<div class=\"line\"><a id=\"l00266\" name=\"l00266\"></a><span class=\"lineno\">  266</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00267\" name=\"l00267\"></a><span class=\"lineno\">  267</span> </div>\n+<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\">  325</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00326\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#ab914d6c888b41d82916edf17e35d5fbe\">  326</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01221.html#ab914d6c888b41d82916edf17e35d5fbe\">EvalStencils</a>(</div>\n+<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\">  327</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\">  328</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\">  329</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\">  330</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\">  331</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\">  332</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l00333\" name=\"l00333\"></a><span class=\"lineno\">  333</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00334\" name=\"l00334\"></a><span class=\"lineno\">  334</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n+<div class=\"line\"><a id=\"l00335\" name=\"l00335\"></a><span class=\"lineno\">  335</span>        <a class=\"code hl_class\" href=\"a01221.html\">GLComputeEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n+<div class=\"line\"><a id=\"l00336\" name=\"l00336\"></a><span class=\"lineno\">  336</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l00337\" name=\"l00337\"></a><span class=\"lineno\">  337</span> </div>\n+<div class=\"line\"><a id=\"l00338\" name=\"l00338\"></a><span class=\"lineno\">  338</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l00339\" name=\"l00339\"></a><span class=\"lineno\">  339</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01221.html#a5a332778562ac0aaa3b59e7d504329f6\">EvalStencils</a>(srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l00340\" name=\"l00340\"></a><span class=\"lineno\">  340</span>                                          dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00341\" name=\"l00341\"></a><span class=\"lineno\">  341</span>                                          duBuffer,  duDesc,</div>\n+<div class=\"line\"><a id=\"l00342\" name=\"l00342\"></a><span class=\"lineno\">  342</span>                                          dvBuffer,  dvDesc,</div>\n+<div class=\"line\"><a id=\"l00343\" name=\"l00343\"></a><span class=\"lineno\">  343</span>                                          duuBuffer, duuDesc,</div>\n+<div class=\"line\"><a id=\"l00344\" name=\"l00344\"></a><span class=\"lineno\">  344</span>                                          duvBuffer, duvDesc,</div>\n+<div class=\"line\"><a id=\"l00345\" name=\"l00345\"></a><span class=\"lineno\">  345</span>                                          dvvBuffer, dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00346\" name=\"l00346\"></a><span class=\"lineno\">  346</span>                                          stencilTable);</div>\n+<div class=\"line\"><a id=\"l00347\" name=\"l00347\"></a><span class=\"lineno\">  347</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00348\" name=\"l00348\"></a><span class=\"lineno\">  348</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n+<div class=\"line\"><a id=\"l00349\" name=\"l00349\"></a><span class=\"lineno\">  349</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00350\" name=\"l00350\"></a><span class=\"lineno\">  350</span>            instance = <a class=\"code hl_function\" href=\"a01221.html#ab4c3cfbc05a1b3c7e08aac8258e38139\">Create</a>(srcDesc, dstDesc, duDesc, dvDesc,</div>\n+<div class=\"line\"><a id=\"l00351\" name=\"l00351\"></a><span class=\"lineno\">  351</span>                              duuDesc, duvDesc, dvvDesc);</div>\n+<div class=\"line\"><a id=\"l00352\" name=\"l00352\"></a><span class=\"lineno\">  352</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l00353\" name=\"l00353\"></a><span class=\"lineno\">  353</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01221.html#a5a332778562ac0aaa3b59e7d504329f6\">EvalStencils</a>(srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l00354\" name=\"l00354\"></a><span class=\"lineno\">  354</span>                                                dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00355\" name=\"l00355\"></a><span class=\"lineno\">  355</span>                                                duBuffer,  duDesc,</div>\n+<div class=\"line\"><a id=\"l00356\" name=\"l00356\"></a><span class=\"lineno\">  356</span>                                                dvBuffer,  dvDesc,</div>\n+<div class=\"line\"><a id=\"l00357\" name=\"l00357\"></a><span class=\"lineno\">  357</span>                                                duuBuffer, duuDesc,</div>\n+<div class=\"line\"><a id=\"l00358\" name=\"l00358\"></a><span class=\"lineno\">  358</span>                                                duvBuffer, duvDesc,</div>\n+<div class=\"line\"><a id=\"l00359\" name=\"l00359\"></a><span class=\"lineno\">  359</span>                                                dvvBuffer, dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00360\" name=\"l00360\"></a><span class=\"lineno\">  360</span>                                                stencilTable);</div>\n+<div class=\"line\"><a id=\"l00361\" name=\"l00361\"></a><span class=\"lineno\">  361</span>                <span class=\"keyword\">delete</span> instance;</div>\n+<div class=\"line\"><a id=\"l00362\" name=\"l00362\"></a><span class=\"lineno\">  362</span>                <span class=\"keywordflow\">return</span> r;</div>\n+<div class=\"line\"><a id=\"l00363\" name=\"l00363\"></a><span class=\"lineno\">  363</span>            }</div>\n+<div class=\"line\"><a id=\"l00364\" name=\"l00364\"></a><span class=\"lineno\">  364</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00365\" name=\"l00365\"></a><span class=\"lineno\">  365</span>        }</div>\n+<div class=\"line\"><a id=\"l00366\" name=\"l00366\"></a><span class=\"lineno\">  366</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00367\" name=\"l00367\"></a><span class=\"lineno\">  367</span> </div>\n+<div class=\"line\"><a id=\"l00385\" name=\"l00385\"></a><span class=\"lineno\">  385</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00386\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00386\" name=\"l00386\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#aab4ecc7e79b822b8994b326cc05ad573\">  386</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01221.html#aab4ecc7e79b822b8994b326cc05ad573\">EvalStencils</a>(</div>\n+<div class=\"line\"><a id=\"l00387\" name=\"l00387\"></a><span class=\"lineno\">  387</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00388\" name=\"l00388\"></a><span class=\"lineno\">  388</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00389\" name=\"l00389\"></a><span class=\"lineno\">  389</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00390\" name=\"l00390\"></a><span class=\"lineno\">  390</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01221.html#a5a332778562ac0aaa3b59e7d504329f6\">EvalStencils</a>(srcBuffer-&gt;BindVBO(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00391\" name=\"l00391\"></a><span class=\"lineno\">  391</span>                            dstBuffer-&gt;BindVBO(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00392\" name=\"l00392\"></a><span class=\"lineno\">  392</span>                            0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l00393\" name=\"l00393\"></a><span class=\"lineno\">  393</span>                            0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l00394\" name=\"l00394\"></a><span class=\"lineno\">  394</span>                            stencilTable-&gt;GetSizesBuffer(),</div>\n+<div class=\"line\"><a id=\"l00395\" name=\"l00395\"></a><span class=\"lineno\">  395</span>                            stencilTable-&gt;GetOffsetsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00396\" name=\"l00396\"></a><span class=\"lineno\">  396</span>                            stencilTable-&gt;GetIndicesBuffer(),</div>\n+<div class=\"line\"><a id=\"l00397\" name=\"l00397\"></a><span class=\"lineno\">  397</span>                            stencilTable-&gt;GetWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00398\" name=\"l00398\"></a><span class=\"lineno\">  398</span>                            0,</div>\n+<div class=\"line\"><a id=\"l00399\" name=\"l00399\"></a><span class=\"lineno\">  399</span>                            0,</div>\n+<div class=\"line\"><a id=\"l00400\" name=\"l00400\"></a><span class=\"lineno\">  400</span>                            <span class=\"comment\">/* start = */</span> 0,</div>\n+<div class=\"line\"><a id=\"l00401\" name=\"l00401\"></a><span class=\"lineno\">  401</span>                            <span class=\"comment\">/* end   = */</span> stencilTable-&gt;GetNumStencils());</div>\n+<div class=\"line\"><a id=\"l00402\" name=\"l00402\"></a><span class=\"lineno\">  402</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00403\" name=\"l00403\"></a><span class=\"lineno\">  403</span> </div>\n+<div class=\"line\"><a id=\"l00433\" name=\"l00433\"></a><span class=\"lineno\">  433</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00434\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00434\" name=\"l00434\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#a16dedd32573dd7f70c61f1fb6072e791\">  434</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01221.html#a16dedd32573dd7f70c61f1fb6072e791\">EvalStencils</a>(</div>\n+<div class=\"line\"><a id=\"l00435\" name=\"l00435\"></a><span class=\"lineno\">  435</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00436\" name=\"l00436\"></a><span class=\"lineno\">  436</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00437\" name=\"l00437\"></a><span class=\"lineno\">  437</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00438\" name=\"l00438\"></a><span class=\"lineno\">  438</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00439\" name=\"l00439\"></a><span class=\"lineno\">  439</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00440\" name=\"l00440\"></a><span class=\"lineno\">  440</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01221.html#a5a332778562ac0aaa3b59e7d504329f6\">EvalStencils</a>(srcBuffer-&gt;BindVBO(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00441\" name=\"l00441\"></a><span class=\"lineno\">  441</span>                            dstBuffer-&gt;BindVBO(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00442\" name=\"l00442\"></a><span class=\"lineno\">  442</span>                            duBuffer-&gt;BindVBO(),  duDesc,</div>\n+<div class=\"line\"><a id=\"l00443\" name=\"l00443\"></a><span class=\"lineno\">  443</span>                            dvBuffer-&gt;BindVBO(),  dvDesc,</div>\n+<div class=\"line\"><a id=\"l00444\" name=\"l00444\"></a><span class=\"lineno\">  444</span>                            stencilTable-&gt;GetSizesBuffer(),</div>\n+<div class=\"line\"><a id=\"l00445\" name=\"l00445\"></a><span class=\"lineno\">  445</span>                            stencilTable-&gt;GetOffsetsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00446\" name=\"l00446\"></a><span class=\"lineno\">  446</span>                            stencilTable-&gt;GetIndicesBuffer(),</div>\n+<div class=\"line\"><a id=\"l00447\" name=\"l00447\"></a><span class=\"lineno\">  447</span>                            stencilTable-&gt;GetWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00448\" name=\"l00448\"></a><span class=\"lineno\">  448</span>                            stencilTable-&gt;GetDuWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00449\" name=\"l00449\"></a><span class=\"lineno\">  449</span>                            stencilTable-&gt;GetDvWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00450\" name=\"l00450\"></a><span class=\"lineno\">  450</span>                            <span class=\"comment\">/* start = */</span> 0,</div>\n+<div class=\"line\"><a id=\"l00451\" name=\"l00451\"></a><span class=\"lineno\">  451</span>                            <span class=\"comment\">/* end   = */</span> stencilTable-&gt;GetNumStencils());</div>\n+<div class=\"line\"><a id=\"l00452\" name=\"l00452\"></a><span class=\"lineno\">  452</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00453\" name=\"l00453\"></a><span class=\"lineno\">  453</span> </div>\n+<div class=\"line\"><a id=\"l00501\" name=\"l00501\"></a><span class=\"lineno\">  501</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00502\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00502\" name=\"l00502\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#a20fa5a4f3311832729ea7b10f935285d\">  502</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01221.html#a20fa5a4f3311832729ea7b10f935285d\">EvalStencils</a>(</div>\n+<div class=\"line\"><a id=\"l00503\" name=\"l00503\"></a><span class=\"lineno\">  503</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00504\" name=\"l00504\"></a><span class=\"lineno\">  504</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00505\" name=\"l00505\"></a><span class=\"lineno\">  505</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00506\" name=\"l00506\"></a><span class=\"lineno\">  506</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00507\" name=\"l00507\"></a><span class=\"lineno\">  507</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l00508\" name=\"l00508\"></a><span class=\"lineno\">  508</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l00509\" name=\"l00509\"></a><span class=\"lineno\">  509</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00510\" name=\"l00510\"></a><span class=\"lineno\">  510</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00511\" name=\"l00511\"></a><span class=\"lineno\">  511</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01221.html#a5a332778562ac0aaa3b59e7d504329f6\">EvalStencils</a>(srcBuffer-&gt;BindVBO(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00512\" name=\"l00512\"></a><span class=\"lineno\">  512</span>                            dstBuffer-&gt;BindVBO(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00513\" name=\"l00513\"></a><span class=\"lineno\">  513</span>                            duBuffer-&gt;BindVBO(),  duDesc,</div>\n+<div class=\"line\"><a id=\"l00514\" name=\"l00514\"></a><span class=\"lineno\">  514</span>                            dvBuffer-&gt;BindVBO(),  dvDesc,</div>\n+<div class=\"line\"><a id=\"l00515\" name=\"l00515\"></a><span class=\"lineno\">  515</span>                            duuBuffer-&gt;BindVBO(), duuDesc,</div>\n+<div class=\"line\"><a id=\"l00516\" name=\"l00516\"></a><span class=\"lineno\">  516</span>                            duvBuffer-&gt;BindVBO(), duvDesc,</div>\n+<div class=\"line\"><a id=\"l00517\" name=\"l00517\"></a><span class=\"lineno\">  517</span>                            dvvBuffer-&gt;BindVBO(), dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00518\" name=\"l00518\"></a><span class=\"lineno\">  518</span>                            stencilTable-&gt;GetSizesBuffer(),</div>\n+<div class=\"line\"><a id=\"l00519\" name=\"l00519\"></a><span class=\"lineno\">  519</span>                            stencilTable-&gt;GetOffsetsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00520\" name=\"l00520\"></a><span class=\"lineno\">  520</span>                            stencilTable-&gt;GetIndicesBuffer(),</div>\n+<div class=\"line\"><a id=\"l00521\" name=\"l00521\"></a><span class=\"lineno\">  521</span>                            stencilTable-&gt;GetWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00522\" name=\"l00522\"></a><span class=\"lineno\">  522</span>                            stencilTable-&gt;GetDuWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00523\" name=\"l00523\"></a><span class=\"lineno\">  523</span>                            stencilTable-&gt;GetDvWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00524\" name=\"l00524\"></a><span class=\"lineno\">  524</span>                            stencilTable-&gt;GetDuuWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00525\" name=\"l00525\"></a><span class=\"lineno\">  525</span>                            stencilTable-&gt;GetDuvWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00526\" name=\"l00526\"></a><span class=\"lineno\">  526</span>                            stencilTable-&gt;GetDvvWeightsBuffer(),</div>\n+<div class=\"line\"><a id=\"l00527\" name=\"l00527\"></a><span class=\"lineno\">  527</span>                            <span class=\"comment\">/* start = */</span> 0,</div>\n+<div class=\"line\"><a id=\"l00528\" name=\"l00528\"></a><span class=\"lineno\">  528</span>                            <span class=\"comment\">/* end   = */</span> stencilTable-&gt;GetNumStencils());</div>\n+<div class=\"line\"><a id=\"l00529\" name=\"l00529\"></a><span class=\"lineno\">  529</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00530\" name=\"l00530\"></a><span class=\"lineno\">  530</span> </div>\n+<div class=\"line\"><a id=\"l00566\" name=\"l00566\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#ab8d69b17b91e3066aaa7dad2d38691de\">  566</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01221.html#ab8d69b17b91e3066aaa7dad2d38691de\">EvalStencils</a>(GLuint srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00567\" name=\"l00567\"></a><span class=\"lineno\">  567</span>                      GLuint dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00568\" name=\"l00568\"></a><span class=\"lineno\">  568</span>                      GLuint duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00569\" name=\"l00569\"></a><span class=\"lineno\">  569</span>                      GLuint dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00570\" name=\"l00570\"></a><span class=\"lineno\">  570</span>                      GLuint sizesBuffer,</div>\n+<div class=\"line\"><a id=\"l00571\" name=\"l00571\"></a><span class=\"lineno\">  571</span>                      GLuint offsetsBuffer,</div>\n+<div class=\"line\"><a id=\"l00572\" name=\"l00572\"></a><span class=\"lineno\">  572</span>                      GLuint indicesBuffer,</div>\n+<div class=\"line\"><a id=\"l00573\" name=\"l00573\"></a><span class=\"lineno\">  573</span>                      GLuint weightsBuffer,</div>\n+<div class=\"line\"><a id=\"l00574\" name=\"l00574\"></a><span class=\"lineno\">  574</span>                      GLuint duWeightsBuffer,</div>\n+<div class=\"line\"><a id=\"l00575\" name=\"l00575\"></a><span class=\"lineno\">  575</span>                      GLuint dvWeightsBuffer,</div>\n+<div class=\"line\"><a id=\"l00576\" name=\"l00576\"></a><span class=\"lineno\">  576</span>                      <span class=\"keywordtype\">int</span> start,</div>\n+<div class=\"line\"><a id=\"l00577\" name=\"l00577\"></a><span class=\"lineno\">  577</span>                      <span class=\"keywordtype\">int</span> end) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00578\" name=\"l00578\"></a><span class=\"lineno\">  578</span> </div>\n+<div class=\"line\"><a id=\"l00632\" name=\"l00632\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#a54b949bb4819f61594334e599194f224\">  632</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01221.html#a54b949bb4819f61594334e599194f224\">EvalStencils</a>(GLuint srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00633\" name=\"l00633\"></a><span class=\"lineno\">  633</span>                      GLuint dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00634\" name=\"l00634\"></a><span class=\"lineno\">  634</span>                      GLuint duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00635\" name=\"l00635\"></a><span class=\"lineno\">  635</span>                      GLuint dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00636\" name=\"l00636\"></a><span class=\"lineno\">  636</span>                      GLuint duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l00637\" name=\"l00637\"></a><span class=\"lineno\">  637</span>                      GLuint duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l00638\" name=\"l00638\"></a><span class=\"lineno\">  638</span>                      GLuint dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00639\" name=\"l00639\"></a><span class=\"lineno\">  639</span>                      GLuint sizesBuffer,</div>\n+<div class=\"line\"><a id=\"l00640\" name=\"l00640\"></a><span class=\"lineno\">  640</span>                      GLuint offsetsBuffer,</div>\n+<div class=\"line\"><a id=\"l00641\" name=\"l00641\"></a><span class=\"lineno\">  641</span>                      GLuint indicesBuffer,</div>\n+<div class=\"line\"><a id=\"l00642\" name=\"l00642\"></a><span class=\"lineno\">  642</span>                      GLuint weightsBuffer,</div>\n+<div class=\"line\"><a id=\"l00643\" name=\"l00643\"></a><span class=\"lineno\">  643</span>                      GLuint duWeightsBuffer,</div>\n+<div class=\"line\"><a id=\"l00644\" name=\"l00644\"></a><span class=\"lineno\">  644</span>                      GLuint dvWeightsBuffer,</div>\n+<div class=\"line\"><a id=\"l00645\" name=\"l00645\"></a><span class=\"lineno\">  645</span>                      GLuint duuWeightsBuffer,</div>\n+<div class=\"line\"><a id=\"l00646\" name=\"l00646\"></a><span class=\"lineno\">  646</span>                      GLuint duvWeightsBuffer,</div>\n+<div class=\"line\"><a id=\"l00647\" name=\"l00647\"></a><span class=\"lineno\">  647</span>                      GLuint dvvWeightsBuffer,</div>\n+<div class=\"line\"><a id=\"l00648\" name=\"l00648\"></a><span class=\"lineno\">  648</span>                      <span class=\"keywordtype\">int</span> start,</div>\n+<div class=\"line\"><a id=\"l00649\" name=\"l00649\"></a><span class=\"lineno\">  649</span>                      <span class=\"keywordtype\">int</span> end) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00650\" name=\"l00650\"></a><span class=\"lineno\">  650</span> </div>\n+<div class=\"line\"><a id=\"l00656\" name=\"l00656\"></a><span class=\"lineno\">  656</span> </div>\n+<div class=\"line\"><a id=\"l00689\" name=\"l00689\"></a><span class=\"lineno\">  689</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l00690\" name=\"l00690\"></a><span class=\"lineno\">  690</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00691\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00691\" name=\"l00691\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#aa6e408cc03b3625bb31a2822075bd87c\">  691</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01221.html#aa6e408cc03b3625bb31a2822075bd87c\">EvalPatches</a>(</div>\n+<div class=\"line\"><a id=\"l00692\" name=\"l00692\"></a><span class=\"lineno\">  692</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00693\" name=\"l00693\"></a><span class=\"lineno\">  693</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00694\" name=\"l00694\"></a><span class=\"lineno\">  694</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00695\" name=\"l00695\"></a><span class=\"lineno\">  695</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l00696\" name=\"l00696\"></a><span class=\"lineno\">  696</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l00697\" name=\"l00697\"></a><span class=\"lineno\">  697</span>        <a class=\"code hl_class\" href=\"a01221.html\">GLComputeEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n+<div class=\"line\"><a id=\"l00698\" name=\"l00698\"></a><span class=\"lineno\">  698</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l00699\" name=\"l00699\"></a><span class=\"lineno\">  699</span> </div>\n+<div class=\"line\"><a id=\"l00700\" name=\"l00700\"></a><span class=\"lineno\">  700</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l00701\" name=\"l00701\"></a><span class=\"lineno\">  701</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01221.html#aa6e408cc03b3625bb31a2822075bd87c\">EvalPatches</a>(srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l00702\" name=\"l00702\"></a><span class=\"lineno\">  702</span>                                         dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00703\" name=\"l00703\"></a><span class=\"lineno\">  703</span>                                         numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l00704\" name=\"l00704\"></a><span class=\"lineno\">  704</span>                                         patchTable);</div>\n+<div class=\"line\"><a id=\"l00705\" name=\"l00705\"></a><span class=\"lineno\">  705</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00706\" name=\"l00706\"></a><span class=\"lineno\">  706</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n+<div class=\"line\"><a id=\"l00707\" name=\"l00707\"></a><span class=\"lineno\">  707</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00708\" name=\"l00708\"></a><span class=\"lineno\">  708</span>            instance = <a class=\"code hl_function\" href=\"a01221.html#ab4c3cfbc05a1b3c7e08aac8258e38139\">Create</a>(srcDesc, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00709\" name=\"l00709\"></a><span class=\"lineno\">  709</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l00710\" name=\"l00710\"></a><span class=\"lineno\">  710</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>());</div>\n+<div class=\"line\"><a id=\"l00711\" name=\"l00711\"></a><span class=\"lineno\">  711</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l00712\" name=\"l00712\"></a><span class=\"lineno\">  712</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01221.html#aa6e408cc03b3625bb31a2822075bd87c\">EvalPatches</a>(srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l00713\" name=\"l00713\"></a><span class=\"lineno\">  713</span>                                               dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00714\" name=\"l00714\"></a><span class=\"lineno\">  714</span>                                               numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l00715\" name=\"l00715\"></a><span class=\"lineno\">  715</span>                                               patchTable);</div>\n+<div class=\"line\"><a id=\"l00716\" name=\"l00716\"></a><span class=\"lineno\">  716</span>                <span class=\"keyword\">delete</span> instance;</div>\n+<div class=\"line\"><a id=\"l00717\" name=\"l00717\"></a><span class=\"lineno\">  717</span>                <span class=\"keywordflow\">return</span> r;</div>\n+<div class=\"line\"><a id=\"l00718\" name=\"l00718\"></a><span class=\"lineno\">  718</span>            }</div>\n+<div class=\"line\"><a id=\"l00719\" name=\"l00719\"></a><span class=\"lineno\">  719</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00720\" name=\"l00720\"></a><span class=\"lineno\">  720</span>        }</div>\n+<div class=\"line\"><a id=\"l00721\" name=\"l00721\"></a><span class=\"lineno\">  721</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00722\" name=\"l00722\"></a><span class=\"lineno\">  722</span> </div>\n+<div class=\"line\"><a id=\"l00767\" name=\"l00767\"></a><span class=\"lineno\">  767</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l00768\" name=\"l00768\"></a><span class=\"lineno\">  768</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00769\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00769\" name=\"l00769\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#a6a85616578cd5275f4a1d69f6db5ad3b\">  769</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01221.html#a6a85616578cd5275f4a1d69f6db5ad3b\">EvalPatches</a>(</div>\n+<div class=\"line\"><a id=\"l00770\" name=\"l00770\"></a><span class=\"lineno\">  770</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00771\" name=\"l00771\"></a><span class=\"lineno\">  771</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00772\" name=\"l00772\"></a><span class=\"lineno\">  772</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00773\" name=\"l00773\"></a><span class=\"lineno\">  773</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00774\" name=\"l00774\"></a><span class=\"lineno\">  774</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00775\" name=\"l00775\"></a><span class=\"lineno\">  775</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l00776\" name=\"l00776\"></a><span class=\"lineno\">  776</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l00777\" name=\"l00777\"></a><span class=\"lineno\">  777</span>        <a class=\"code hl_class\" href=\"a01221.html\">GLComputeEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n+<div class=\"line\"><a id=\"l00778\" name=\"l00778\"></a><span class=\"lineno\">  778</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l00779\" name=\"l00779\"></a><span class=\"lineno\">  779</span> </div>\n+<div class=\"line\"><a id=\"l00780\" name=\"l00780\"></a><span class=\"lineno\">  780</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l00781\" name=\"l00781\"></a><span class=\"lineno\">  781</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01221.html#aa6e408cc03b3625bb31a2822075bd87c\">EvalPatches</a>(srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l00782\" name=\"l00782\"></a><span class=\"lineno\">  782</span>                                         dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00783\" name=\"l00783\"></a><span class=\"lineno\">  783</span>                                         duBuffer, duDesc,</div>\n+<div class=\"line\"><a id=\"l00784\" name=\"l00784\"></a><span class=\"lineno\">  784</span>                                         dvBuffer, dvDesc,</div>\n+<div class=\"line\"><a id=\"l00785\" name=\"l00785\"></a><span class=\"lineno\">  785</span>                                         numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l00786\" name=\"l00786\"></a><span class=\"lineno\">  786</span>                                         patchTable);</div>\n+<div class=\"line\"><a id=\"l00787\" name=\"l00787\"></a><span class=\"lineno\">  787</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00788\" name=\"l00788\"></a><span class=\"lineno\">  788</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n+<div class=\"line\"><a id=\"l00789\" name=\"l00789\"></a><span class=\"lineno\">  789</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00790\" name=\"l00790\"></a><span class=\"lineno\">  790</span>            instance = <a class=\"code hl_function\" href=\"a01221.html#ab4c3cfbc05a1b3c7e08aac8258e38139\">Create</a>(srcDesc, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00791\" name=\"l00791\"></a><span class=\"lineno\">  791</span>                              duDesc, dvDesc);</div>\n+<div class=\"line\"><a id=\"l00792\" name=\"l00792\"></a><span class=\"lineno\">  792</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l00793\" name=\"l00793\"></a><span class=\"lineno\">  793</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01221.html#aa6e408cc03b3625bb31a2822075bd87c\">EvalPatches</a>(srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l00794\" name=\"l00794\"></a><span class=\"lineno\">  794</span>                                               dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00795\" name=\"l00795\"></a><span class=\"lineno\">  795</span>                                               duBuffer, duDesc,</div>\n+<div class=\"line\"><a id=\"l00796\" name=\"l00796\"></a><span class=\"lineno\">  796</span>                                               dvBuffer, dvDesc,</div>\n+<div class=\"line\"><a id=\"l00797\" name=\"l00797\"></a><span class=\"lineno\">  797</span>                                               numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l00798\" name=\"l00798\"></a><span class=\"lineno\">  798</span>                                               patchTable);</div>\n+<div class=\"line\"><a id=\"l00799\" name=\"l00799\"></a><span class=\"lineno\">  799</span>                <span class=\"keyword\">delete</span> instance;</div>\n+<div class=\"line\"><a id=\"l00800\" name=\"l00800\"></a><span class=\"lineno\">  800</span>                <span class=\"keywordflow\">return</span> r;</div>\n+<div class=\"line\"><a id=\"l00801\" name=\"l00801\"></a><span class=\"lineno\">  801</span>            }</div>\n+<div class=\"line\"><a id=\"l00802\" name=\"l00802\"></a><span class=\"lineno\">  802</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00803\" name=\"l00803\"></a><span class=\"lineno\">  803</span>        }</div>\n+<div class=\"line\"><a id=\"l00804\" name=\"l00804\"></a><span class=\"lineno\">  804</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00805\" name=\"l00805\"></a><span class=\"lineno\">  805</span> </div>\n+<div class=\"line\"><a id=\"l00868\" name=\"l00868\"></a><span class=\"lineno\">  868</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l00869\" name=\"l00869\"></a><span class=\"lineno\">  869</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00870\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00870\" name=\"l00870\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#af806842b89f37a3cd5e153ed67c926ec\">  870</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01221.html#af806842b89f37a3cd5e153ed67c926ec\">EvalPatches</a>(</div>\n+<div class=\"line\"><a id=\"l00871\" name=\"l00871\"></a><span class=\"lineno\">  871</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00872\" name=\"l00872\"></a><span class=\"lineno\">  872</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00873\" name=\"l00873\"></a><span class=\"lineno\">  873</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00874\" name=\"l00874\"></a><span class=\"lineno\">  874</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00875\" name=\"l00875\"></a><span class=\"lineno\">  875</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l00876\" name=\"l00876\"></a><span class=\"lineno\">  876</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l00877\" name=\"l00877\"></a><span class=\"lineno\">  877</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00878\" name=\"l00878\"></a><span class=\"lineno\">  878</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00879\" name=\"l00879\"></a><span class=\"lineno\">  879</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l00880\" name=\"l00880\"></a><span class=\"lineno\">  880</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l00881\" name=\"l00881\"></a><span class=\"lineno\">  881</span>        <a class=\"code hl_class\" href=\"a01221.html\">GLComputeEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n+<div class=\"line\"><a id=\"l00882\" name=\"l00882\"></a><span class=\"lineno\">  882</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l00883\" name=\"l00883\"></a><span class=\"lineno\">  883</span> </div>\n+<div class=\"line\"><a id=\"l00884\" name=\"l00884\"></a><span class=\"lineno\">  884</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l00885\" name=\"l00885\"></a><span class=\"lineno\">  885</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01221.html#aa6e408cc03b3625bb31a2822075bd87c\">EvalPatches</a>(srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l00886\" name=\"l00886\"></a><span class=\"lineno\">  886</span>                                         dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00887\" name=\"l00887\"></a><span class=\"lineno\">  887</span>                                         duBuffer, duDesc,</div>\n+<div class=\"line\"><a id=\"l00888\" name=\"l00888\"></a><span class=\"lineno\">  888</span>                                         dvBuffer, dvDesc,</div>\n+<div class=\"line\"><a id=\"l00889\" name=\"l00889\"></a><span class=\"lineno\">  889</span>                                         duuBuffer, duuDesc,</div>\n+<div class=\"line\"><a id=\"l00890\" name=\"l00890\"></a><span class=\"lineno\">  890</span>                                         duvBuffer, duvDesc,</div>\n+<div class=\"line\"><a id=\"l00891\" name=\"l00891\"></a><span class=\"lineno\">  891</span>                                         dvvBuffer, dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00892\" name=\"l00892\"></a><span class=\"lineno\">  892</span>                                         numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l00893\" name=\"l00893\"></a><span class=\"lineno\">  893</span>                                         patchTable);</div>\n+<div class=\"line\"><a id=\"l00894\" name=\"l00894\"></a><span class=\"lineno\">  894</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00895\" name=\"l00895\"></a><span class=\"lineno\">  895</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n+<div class=\"line\"><a id=\"l00896\" name=\"l00896\"></a><span class=\"lineno\">  896</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00897\" name=\"l00897\"></a><span class=\"lineno\">  897</span>            instance = <a class=\"code hl_function\" href=\"a01221.html#ab4c3cfbc05a1b3c7e08aac8258e38139\">Create</a>(srcDesc, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00898\" name=\"l00898\"></a><span class=\"lineno\">  898</span>                              duDesc, dvDesc,</div>\n+<div class=\"line\"><a id=\"l00899\" name=\"l00899\"></a><span class=\"lineno\">  899</span>                              duuDesc, duvDesc, dvvDesc);</div>\n+<div class=\"line\"><a id=\"l00900\" name=\"l00900\"></a><span class=\"lineno\">  900</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l00901\" name=\"l00901\"></a><span class=\"lineno\">  901</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01221.html#aa6e408cc03b3625bb31a2822075bd87c\">EvalPatches</a>(srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l00902\" name=\"l00902\"></a><span class=\"lineno\">  902</span>                                               dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l00903\" name=\"l00903\"></a><span class=\"lineno\">  903</span>                                               duBuffer, duDesc,</div>\n+<div class=\"line\"><a id=\"l00904\" name=\"l00904\"></a><span class=\"lineno\">  904</span>                                               dvBuffer, dvDesc,</div>\n+<div class=\"line\"><a id=\"l00905\" name=\"l00905\"></a><span class=\"lineno\">  905</span>                                               duuBuffer, duuDesc,</div>\n+<div class=\"line\"><a id=\"l00906\" name=\"l00906\"></a><span class=\"lineno\">  906</span>                                               duvBuffer, duvDesc,</div>\n+<div class=\"line\"><a id=\"l00907\" name=\"l00907\"></a><span class=\"lineno\">  907</span>                                               dvvBuffer, dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00908\" name=\"l00908\"></a><span class=\"lineno\">  908</span>                                               numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l00909\" name=\"l00909\"></a><span class=\"lineno\">  909</span>                                               patchTable);</div>\n+<div class=\"line\"><a id=\"l00910\" name=\"l00910\"></a><span class=\"lineno\">  910</span>                <span class=\"keyword\">delete</span> instance;</div>\n+<div class=\"line\"><a id=\"l00911\" name=\"l00911\"></a><span class=\"lineno\">  911</span>                <span class=\"keywordflow\">return</span> r;</div>\n+<div class=\"line\"><a id=\"l00912\" name=\"l00912\"></a><span class=\"lineno\">  912</span>            }</div>\n+<div class=\"line\"><a id=\"l00913\" name=\"l00913\"></a><span class=\"lineno\">  913</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00914\" name=\"l00914\"></a><span class=\"lineno\">  914</span>        }</div>\n+<div class=\"line\"><a id=\"l00915\" name=\"l00915\"></a><span class=\"lineno\">  915</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00916\" name=\"l00916\"></a><span class=\"lineno\">  916</span> </div>\n+<div class=\"line\"><a id=\"l00941\" name=\"l00941\"></a><span class=\"lineno\">  941</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l00942\" name=\"l00942\"></a><span class=\"lineno\">  942</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00943\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00943\" name=\"l00943\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#a96616cfe920c027568e2ae931b3ba506\">  943</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01221.html#a96616cfe920c027568e2ae931b3ba506\">EvalPatches</a>(</div>\n+<div class=\"line\"><a id=\"l00944\" name=\"l00944\"></a><span class=\"lineno\">  944</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00945\" name=\"l00945\"></a><span class=\"lineno\">  945</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00946\" name=\"l00946\"></a><span class=\"lineno\">  946</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00947\" name=\"l00947\"></a><span class=\"lineno\">  947</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l00948\" name=\"l00948\"></a><span class=\"lineno\">  948</span>        PATCH_TABLE *patchTable)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00949\" name=\"l00949\"></a><span class=\"lineno\">  949</span> </div>\n+<div class=\"line\"><a id=\"l00950\" name=\"l00950\"></a><span class=\"lineno\">  950</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01221.html#aa6e408cc03b3625bb31a2822075bd87c\">EvalPatches</a>(srcBuffer-&gt;BindVBO(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00951\" name=\"l00951\"></a><span class=\"lineno\">  951</span>                           dstBuffer-&gt;BindVBO(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00952\" name=\"l00952\"></a><span class=\"lineno\">  952</span>                           0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l00953\" name=\"l00953\"></a><span class=\"lineno\">  953</span>                           0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l00954\" name=\"l00954\"></a><span class=\"lineno\">  954</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00955\" name=\"l00955\"></a><span class=\"lineno\">  955</span>                           patchCoords-&gt;BindVBO(),</div>\n+<div class=\"line\"><a id=\"l00956\" name=\"l00956\"></a><span class=\"lineno\">  956</span>                           patchTable-&gt;GetPatchArrays(),</div>\n+<div class=\"line\"><a id=\"l00957\" name=\"l00957\"></a><span class=\"lineno\">  957</span>                           patchTable-&gt;GetPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l00958\" name=\"l00958\"></a><span class=\"lineno\">  958</span>                           patchTable-&gt;GetPatchParamBuffer());</div>\n+<div class=\"line\"><a id=\"l00959\" name=\"l00959\"></a><span class=\"lineno\">  959</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00960\" name=\"l00960\"></a><span class=\"lineno\">  960</span> </div>\n+<div class=\"line\"><a id=\"l00995\" name=\"l00995\"></a><span class=\"lineno\">  995</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l00996\" name=\"l00996\"></a><span class=\"lineno\">  996</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00997\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00997\" name=\"l00997\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#aa28dc7f2bd31f1cdac0013ad9de8f434\">  997</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01221.html#aa28dc7f2bd31f1cdac0013ad9de8f434\">EvalPatches</a>(</div>\n+<div class=\"line\"><a id=\"l00998\" name=\"l00998\"></a><span class=\"lineno\">  998</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00999\" name=\"l00999\"></a><span class=\"lineno\">  999</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01000\" name=\"l01000\"></a><span class=\"lineno\"> 1000</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l01001\" name=\"l01001\"></a><span class=\"lineno\"> 1001</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l01002\" name=\"l01002\"></a><span class=\"lineno\"> 1002</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01003\" name=\"l01003\"></a><span class=\"lineno\"> 1003</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01004\" name=\"l01004\"></a><span class=\"lineno\"> 1004</span>        PATCH_TABLE *patchTable)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l01005\" name=\"l01005\"></a><span class=\"lineno\"> 1005</span> </div>\n+<div class=\"line\"><a id=\"l01006\" name=\"l01006\"></a><span class=\"lineno\"> 1006</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01221.html#aa6e408cc03b3625bb31a2822075bd87c\">EvalPatches</a>(srcBuffer-&gt;BindVBO(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01007\" name=\"l01007\"></a><span class=\"lineno\"> 1007</span>                           dstBuffer-&gt;BindVBO(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01008\" name=\"l01008\"></a><span class=\"lineno\"> 1008</span>                           duBuffer-&gt;BindVBO(),  duDesc,</div>\n+<div class=\"line\"><a id=\"l01009\" name=\"l01009\"></a><span class=\"lineno\"> 1009</span>                           dvBuffer-&gt;BindVBO(),  dvDesc,</div>\n+<div class=\"line\"><a id=\"l01010\" name=\"l01010\"></a><span class=\"lineno\"> 1010</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01011\" name=\"l01011\"></a><span class=\"lineno\"> 1011</span>                           patchCoords-&gt;BindVBO(),</div>\n+<div class=\"line\"><a id=\"l01012\" name=\"l01012\"></a><span class=\"lineno\"> 1012</span>                           patchTable-&gt;GetPatchArrays(),</div>\n+<div class=\"line\"><a id=\"l01013\" name=\"l01013\"></a><span class=\"lineno\"> 1013</span>                           patchTable-&gt;GetPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l01014\" name=\"l01014\"></a><span class=\"lineno\"> 1014</span>                           patchTable-&gt;GetPatchParamBuffer());</div>\n+<div class=\"line\"><a id=\"l01015\" name=\"l01015\"></a><span class=\"lineno\"> 1015</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01016\" name=\"l01016\"></a><span class=\"lineno\"> 1016</span> </div>\n+<div class=\"line\"><a id=\"l01069\" name=\"l01069\"></a><span class=\"lineno\"> 1069</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01070\" name=\"l01070\"></a><span class=\"lineno\"> 1070</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01071\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01071\" name=\"l01071\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#a35609a9d5a1b087bd675035d710dc688\"> 1071</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01221.html#a35609a9d5a1b087bd675035d710dc688\">EvalPatches</a>(</div>\n+<div class=\"line\"><a id=\"l01072\" name=\"l01072\"></a><span class=\"lineno\"> 1072</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01073\" name=\"l01073\"></a><span class=\"lineno\"> 1073</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01074\" name=\"l01074\"></a><span class=\"lineno\"> 1074</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l01075\" name=\"l01075\"></a><span class=\"lineno\"> 1075</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l01076\" name=\"l01076\"></a><span class=\"lineno\"> 1076</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l01077\" name=\"l01077\"></a><span class=\"lineno\"> 1077</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l01078\" name=\"l01078\"></a><span class=\"lineno\"> 1078</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l01079\" name=\"l01079\"></a><span class=\"lineno\"> 1079</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01080\" name=\"l01080\"></a><span class=\"lineno\"> 1080</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01081\" name=\"l01081\"></a><span class=\"lineno\"> 1081</span>        PATCH_TABLE *patchTable)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l01082\" name=\"l01082\"></a><span class=\"lineno\"> 1082</span> </div>\n+<div class=\"line\"><a id=\"l01083\" name=\"l01083\"></a><span class=\"lineno\"> 1083</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01221.html#aa6e408cc03b3625bb31a2822075bd87c\">EvalPatches</a>(srcBuffer-&gt;BindVBO(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01084\" name=\"l01084\"></a><span class=\"lineno\"> 1084</span>                           dstBuffer-&gt;BindVBO(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01085\" name=\"l01085\"></a><span class=\"lineno\"> 1085</span>                           duBuffer-&gt;BindVBO(),  duDesc,</div>\n+<div class=\"line\"><a id=\"l01086\" name=\"l01086\"></a><span class=\"lineno\"> 1086</span>                           dvBuffer-&gt;BindVBO(),  dvDesc,</div>\n+<div class=\"line\"><a id=\"l01087\" name=\"l01087\"></a><span class=\"lineno\"> 1087</span>                           duuBuffer-&gt;BindVBO(), duuDesc,</div>\n+<div class=\"line\"><a id=\"l01088\" name=\"l01088\"></a><span class=\"lineno\"> 1088</span>                           duvBuffer-&gt;BindVBO(), duvDesc,</div>\n+<div class=\"line\"><a id=\"l01089\" name=\"l01089\"></a><span class=\"lineno\"> 1089</span>                           dvvBuffer-&gt;BindVBO(), dvvDesc,</div>\n+<div class=\"line\"><a id=\"l01090\" name=\"l01090\"></a><span class=\"lineno\"> 1090</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01091\" name=\"l01091\"></a><span class=\"lineno\"> 1091</span>                           patchCoords-&gt;BindVBO(),</div>\n+<div class=\"line\"><a id=\"l01092\" name=\"l01092\"></a><span class=\"lineno\"> 1092</span>                           patchTable-&gt;GetPatchArrays(),</div>\n+<div class=\"line\"><a id=\"l01093\" name=\"l01093\"></a><span class=\"lineno\"> 1093</span>                           patchTable-&gt;GetPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l01094\" name=\"l01094\"></a><span class=\"lineno\"> 1094</span>                           patchTable-&gt;GetPatchParamBuffer());</div>\n+<div class=\"line\"><a id=\"l01095\" name=\"l01095\"></a><span class=\"lineno\"> 1095</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01096\" name=\"l01096\"></a><span class=\"lineno\"> 1096</span> </div>\n+<div class=\"line\"><a id=\"l01097\" name=\"l01097\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#aac8b4b814219420a124f8a92c96fd026\"> 1097</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01221.html#aac8b4b814219420a124f8a92c96fd026\">EvalPatches</a>(GLuint srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01098\" name=\"l01098\"></a><span class=\"lineno\"> 1098</span>                     GLuint dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01099\" name=\"l01099\"></a><span class=\"lineno\"> 1099</span>                     GLuint duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l01100\" name=\"l01100\"></a><span class=\"lineno\"> 1100</span>                     GLuint dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l01101\" name=\"l01101\"></a><span class=\"lineno\"> 1101</span>                     <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01102\" name=\"l01102\"></a><span class=\"lineno\"> 1102</span>                     GLuint patchCoordsBuffer,</div>\n+<div class=\"line\"><a id=\"l01103\" name=\"l01103\"></a><span class=\"lineno\"> 1103</span>                     <span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"a00912.html#a98098cd229f60d2397d84a76fe654a31\">PatchArrayVector</a> &amp;patchArrays,</div>\n+<div class=\"line\"><a id=\"l01104\" name=\"l01104\"></a><span class=\"lineno\"> 1104</span>                     GLuint patchIndexBuffer,</div>\n+<div class=\"line\"><a id=\"l01105\" name=\"l01105\"></a><span class=\"lineno\"> 1105</span>                     GLuint patchParamsBuffer) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l01106\" name=\"l01106\"></a><span class=\"lineno\"> 1106</span> </div>\n+<div class=\"line\"><a id=\"l01107\" name=\"l01107\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#a2d1074f49212a9ae65161e9c957dbab7\"> 1107</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01221.html#a2d1074f49212a9ae65161e9c957dbab7\">EvalPatches</a>(GLuint srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01108\" name=\"l01108\"></a><span class=\"lineno\"> 1108</span>                     GLuint dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01109\" name=\"l01109\"></a><span class=\"lineno\"> 1109</span>                     GLuint duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l01110\" name=\"l01110\"></a><span class=\"lineno\"> 1110</span>                     GLuint dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l01111\" name=\"l01111\"></a><span class=\"lineno\"> 1111</span>                     GLuint duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l01112\" name=\"l01112\"></a><span class=\"lineno\"> 1112</span>                     GLuint duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l01113\" name=\"l01113\"></a><span class=\"lineno\"> 1113</span>                     GLuint dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l01114\" name=\"l01114\"></a><span class=\"lineno\"> 1114</span>                     <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01115\" name=\"l01115\"></a><span class=\"lineno\"> 1115</span>                     GLuint patchCoordsBuffer,</div>\n+<div class=\"line\"><a id=\"l01116\" name=\"l01116\"></a><span class=\"lineno\"> 1116</span>                     <span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"a00912.html#a98098cd229f60d2397d84a76fe654a31\">PatchArrayVector</a> &amp;patchArrays,</div>\n+<div class=\"line\"><a id=\"l01117\" name=\"l01117\"></a><span class=\"lineno\"> 1117</span>                     GLuint patchIndexBuffer,</div>\n+<div class=\"line\"><a id=\"l01118\" name=\"l01118\"></a><span class=\"lineno\"> 1118</span>                     GLuint patchParamsBuffer) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l01119\" name=\"l01119\"></a><span class=\"lineno\"> 1119</span> </div>\n+<div class=\"line\"><a id=\"l01152\" name=\"l01152\"></a><span class=\"lineno\"> 1152</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01153\" name=\"l01153\"></a><span class=\"lineno\"> 1153</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01154\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01154\" name=\"l01154\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#a1c6ee39e3debcf0f71886acfeac5ce47\"> 1154</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01221.html#a1c6ee39e3debcf0f71886acfeac5ce47\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01155\" name=\"l01155\"></a><span class=\"lineno\"> 1155</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01156\" name=\"l01156\"></a><span class=\"lineno\"> 1156</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01157\" name=\"l01157\"></a><span class=\"lineno\"> 1157</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01158\" name=\"l01158\"></a><span class=\"lineno\"> 1158</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01159\" name=\"l01159\"></a><span class=\"lineno\"> 1159</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l01160\" name=\"l01160\"></a><span class=\"lineno\"> 1160</span>        <a class=\"code hl_class\" href=\"a01221.html\">GLComputeEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n+<div class=\"line\"><a id=\"l01161\" name=\"l01161\"></a><span class=\"lineno\"> 1161</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l01162\" name=\"l01162\"></a><span class=\"lineno\"> 1162</span> </div>\n+<div class=\"line\"><a id=\"l01163\" name=\"l01163\"></a><span class=\"lineno\"> 1163</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l01164\" name=\"l01164\"></a><span class=\"lineno\"> 1164</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01221.html#a1c6ee39e3debcf0f71886acfeac5ce47\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01165\" name=\"l01165\"></a><span class=\"lineno\"> 1165</span>                                         srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l01166\" name=\"l01166\"></a><span class=\"lineno\"> 1166</span>                                         dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01167\" name=\"l01167\"></a><span class=\"lineno\"> 1167</span>                                         numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l01168\" name=\"l01168\"></a><span class=\"lineno\"> 1168</span>                                         patchTable);</div>\n+<div class=\"line\"><a id=\"l01169\" name=\"l01169\"></a><span class=\"lineno\"> 1169</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l01170\" name=\"l01170\"></a><span class=\"lineno\"> 1170</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n+<div class=\"line\"><a id=\"l01171\" name=\"l01171\"></a><span class=\"lineno\"> 1171</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l01172\" name=\"l01172\"></a><span class=\"lineno\"> 1172</span>            instance = <a class=\"code hl_function\" href=\"a01221.html#ab4c3cfbc05a1b3c7e08aac8258e38139\">Create</a>(srcDesc, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01173\" name=\"l01173\"></a><span class=\"lineno\"> 1173</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l01174\" name=\"l01174\"></a><span class=\"lineno\"> 1174</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>());</div>\n+<div class=\"line\"><a id=\"l01175\" name=\"l01175\"></a><span class=\"lineno\"> 1175</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l01176\" name=\"l01176\"></a><span class=\"lineno\"> 1176</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01221.html#a1c6ee39e3debcf0f71886acfeac5ce47\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01177\" name=\"l01177\"></a><span class=\"lineno\"> 1177</span>                                               srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l01178\" name=\"l01178\"></a><span class=\"lineno\"> 1178</span>                                               dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01179\" name=\"l01179\"></a><span class=\"lineno\"> 1179</span>                                               numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l01180\" name=\"l01180\"></a><span class=\"lineno\"> 1180</span>                                               patchTable);</div>\n+<div class=\"line\"><a id=\"l01181\" name=\"l01181\"></a><span class=\"lineno\"> 1181</span>                <span class=\"keyword\">delete</span> instance;</div>\n+<div class=\"line\"><a id=\"l01182\" name=\"l01182\"></a><span class=\"lineno\"> 1182</span>                <span class=\"keywordflow\">return</span> r;</div>\n+<div class=\"line\"><a id=\"l01183\" name=\"l01183\"></a><span class=\"lineno\"> 1183</span>            }</div>\n+<div class=\"line\"><a id=\"l01184\" name=\"l01184\"></a><span class=\"lineno\"> 1184</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l01185\" name=\"l01185\"></a><span class=\"lineno\"> 1185</span>        }</div>\n+<div class=\"line\"><a id=\"l01186\" name=\"l01186\"></a><span class=\"lineno\"> 1186</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01187\" name=\"l01187\"></a><span class=\"lineno\"> 1187</span> </div>\n+<div class=\"line\"><a id=\"l01212\" name=\"l01212\"></a><span class=\"lineno\"> 1212</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01213\" name=\"l01213\"></a><span class=\"lineno\"> 1213</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01214\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01214\" name=\"l01214\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#a03c47cdd97f18b8bbdd1e3ce66cbd5d8\"> 1214</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01221.html#a03c47cdd97f18b8bbdd1e3ce66cbd5d8\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01215\" name=\"l01215\"></a><span class=\"lineno\"> 1215</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01216\" name=\"l01216\"></a><span class=\"lineno\"> 1216</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01217\" name=\"l01217\"></a><span class=\"lineno\"> 1217</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01218\" name=\"l01218\"></a><span class=\"lineno\"> 1218</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01219\" name=\"l01219\"></a><span class=\"lineno\"> 1219</span>        PATCH_TABLE *patchTable)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l01220\" name=\"l01220\"></a><span class=\"lineno\"> 1220</span> </div>\n+<div class=\"line\"><a id=\"l01221\" name=\"l01221\"></a><span class=\"lineno\"> 1221</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01221.html#aa6e408cc03b3625bb31a2822075bd87c\">EvalPatches</a>(srcBuffer-&gt;BindVBO(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01222\" name=\"l01222\"></a><span class=\"lineno\"> 1222</span>                           dstBuffer-&gt;BindVBO(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01223\" name=\"l01223\"></a><span class=\"lineno\"> 1223</span>                           0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l01224\" name=\"l01224\"></a><span class=\"lineno\"> 1224</span>                           0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l01225\" name=\"l01225\"></a><span class=\"lineno\"> 1225</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01226\" name=\"l01226\"></a><span class=\"lineno\"> 1226</span>                           patchCoords-&gt;BindVBO(),</div>\n+<div class=\"line\"><a id=\"l01227\" name=\"l01227\"></a><span class=\"lineno\"> 1227</span>                           patchTable-&gt;GetVaryingPatchArrays(),</div>\n+<div class=\"line\"><a id=\"l01228\" name=\"l01228\"></a><span class=\"lineno\"> 1228</span>                           patchTable-&gt;GetVaryingPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l01229\" name=\"l01229\"></a><span class=\"lineno\"> 1229</span>                           patchTable-&gt;GetPatchParamBuffer());</div>\n+<div class=\"line\"><a id=\"l01230\" name=\"l01230\"></a><span class=\"lineno\"> 1230</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01231\" name=\"l01231\"></a><span class=\"lineno\"> 1231</span> </div>\n+<div class=\"line\"><a id=\"l01276\" name=\"l01276\"></a><span class=\"lineno\"> 1276</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01277\" name=\"l01277\"></a><span class=\"lineno\"> 1277</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01278\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01278\" name=\"l01278\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#a2accf86fd727ccc3d78bb4acd9842978\"> 1278</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01221.html#a2accf86fd727ccc3d78bb4acd9842978\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01279\" name=\"l01279\"></a><span class=\"lineno\"> 1279</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01280\" name=\"l01280\"></a><span class=\"lineno\"> 1280</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01281\" name=\"l01281\"></a><span class=\"lineno\"> 1281</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l01282\" name=\"l01282\"></a><span class=\"lineno\"> 1282</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l01283\" name=\"l01283\"></a><span class=\"lineno\"> 1283</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01284\" name=\"l01284\"></a><span class=\"lineno\"> 1284</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01285\" name=\"l01285\"></a><span class=\"lineno\"> 1285</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l01286\" name=\"l01286\"></a><span class=\"lineno\"> 1286</span>        <a class=\"code hl_class\" href=\"a01221.html\">GLComputeEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n+<div class=\"line\"><a id=\"l01287\" name=\"l01287\"></a><span class=\"lineno\"> 1287</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l01288\" name=\"l01288\"></a><span class=\"lineno\"> 1288</span> </div>\n+<div class=\"line\"><a id=\"l01289\" name=\"l01289\"></a><span class=\"lineno\"> 1289</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l01290\" name=\"l01290\"></a><span class=\"lineno\"> 1290</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01221.html#a1c6ee39e3debcf0f71886acfeac5ce47\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01291\" name=\"l01291\"></a><span class=\"lineno\"> 1291</span>                                         srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l01292\" name=\"l01292\"></a><span class=\"lineno\"> 1292</span>                                         dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01293\" name=\"l01293\"></a><span class=\"lineno\"> 1293</span>                                         duBuffer, duDesc,</div>\n+<div class=\"line\"><a id=\"l01294\" name=\"l01294\"></a><span class=\"lineno\"> 1294</span>                                         dvBuffer, dvDesc,</div>\n+<div class=\"line\"><a id=\"l01295\" name=\"l01295\"></a><span class=\"lineno\"> 1295</span>                                         numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l01296\" name=\"l01296\"></a><span class=\"lineno\"> 1296</span>                                         patchTable);</div>\n+<div class=\"line\"><a id=\"l01297\" name=\"l01297\"></a><span class=\"lineno\"> 1297</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l01298\" name=\"l01298\"></a><span class=\"lineno\"> 1298</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n+<div class=\"line\"><a id=\"l01299\" name=\"l01299\"></a><span class=\"lineno\"> 1299</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l01300\" name=\"l01300\"></a><span class=\"lineno\"> 1300</span>            instance = <a class=\"code hl_function\" href=\"a01221.html#ab4c3cfbc05a1b3c7e08aac8258e38139\">Create</a>(srcDesc, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01301\" name=\"l01301\"></a><span class=\"lineno\"> 1301</span>                              duDesc, dvDesc);</div>\n+<div class=\"line\"><a id=\"l01302\" name=\"l01302\"></a><span class=\"lineno\"> 1302</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l01303\" name=\"l01303\"></a><span class=\"lineno\"> 1303</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01221.html#a1c6ee39e3debcf0f71886acfeac5ce47\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01304\" name=\"l01304\"></a><span class=\"lineno\"> 1304</span>                                               srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l01305\" name=\"l01305\"></a><span class=\"lineno\"> 1305</span>                                               dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01306\" name=\"l01306\"></a><span class=\"lineno\"> 1306</span>                                               duBuffer, duDesc,</div>\n+<div class=\"line\"><a id=\"l01307\" name=\"l01307\"></a><span class=\"lineno\"> 1307</span>                                               dvBuffer, dvDesc,</div>\n+<div class=\"line\"><a id=\"l01308\" name=\"l01308\"></a><span class=\"lineno\"> 1308</span>                                               numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l01309\" name=\"l01309\"></a><span class=\"lineno\"> 1309</span>                                               patchTable);</div>\n+<div class=\"line\"><a id=\"l01310\" name=\"l01310\"></a><span class=\"lineno\"> 1310</span>                <span class=\"keyword\">delete</span> instance;</div>\n+<div class=\"line\"><a id=\"l01311\" name=\"l01311\"></a><span class=\"lineno\"> 1311</span>                <span class=\"keywordflow\">return</span> r;</div>\n+<div class=\"line\"><a id=\"l01312\" name=\"l01312\"></a><span class=\"lineno\"> 1312</span>            }</div>\n+<div class=\"line\"><a id=\"l01313\" name=\"l01313\"></a><span class=\"lineno\"> 1313</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l01314\" name=\"l01314\"></a><span class=\"lineno\"> 1314</span>        }</div>\n+<div class=\"line\"><a id=\"l01315\" name=\"l01315\"></a><span class=\"lineno\"> 1315</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01316\" name=\"l01316\"></a><span class=\"lineno\"> 1316</span> </div>\n+<div class=\"line\"><a id=\"l01353\" name=\"l01353\"></a><span class=\"lineno\"> 1353</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01354\" name=\"l01354\"></a><span class=\"lineno\"> 1354</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01355\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01355\" name=\"l01355\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#ae642c88c8896d4d55b1876757197b1cc\"> 1355</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01221.html#ae642c88c8896d4d55b1876757197b1cc\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01356\" name=\"l01356\"></a><span class=\"lineno\"> 1356</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01357\" name=\"l01357\"></a><span class=\"lineno\"> 1357</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01358\" name=\"l01358\"></a><span class=\"lineno\"> 1358</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l01359\" name=\"l01359\"></a><span class=\"lineno\"> 1359</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l01360\" name=\"l01360\"></a><span class=\"lineno\"> 1360</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01361\" name=\"l01361\"></a><span class=\"lineno\"> 1361</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01362\" name=\"l01362\"></a><span class=\"lineno\"> 1362</span>        PATCH_TABLE *patchTable)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l01363\" name=\"l01363\"></a><span class=\"lineno\"> 1363</span> </div>\n+<div class=\"line\"><a id=\"l01364\" name=\"l01364\"></a><span class=\"lineno\"> 1364</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01221.html#aa6e408cc03b3625bb31a2822075bd87c\">EvalPatches</a>(srcBuffer-&gt;BindVBO(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01365\" name=\"l01365\"></a><span class=\"lineno\"> 1365</span>                           dstBuffer-&gt;BindVBO(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01366\" name=\"l01366\"></a><span class=\"lineno\"> 1366</span>                           duBuffer-&gt;BindVBO(),  duDesc,</div>\n+<div class=\"line\"><a id=\"l01367\" name=\"l01367\"></a><span class=\"lineno\"> 1367</span>                           dvBuffer-&gt;BindVBO(),  dvDesc,</div>\n+<div class=\"line\"><a id=\"l01368\" name=\"l01368\"></a><span class=\"lineno\"> 1368</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01369\" name=\"l01369\"></a><span class=\"lineno\"> 1369</span>                           patchCoords-&gt;BindVBO(),</div>\n+<div class=\"line\"><a id=\"l01370\" name=\"l01370\"></a><span class=\"lineno\"> 1370</span>                           patchTable-&gt;GetVaryingPatchArrays(),</div>\n+<div class=\"line\"><a id=\"l01371\" name=\"l01371\"></a><span class=\"lineno\"> 1371</span>                           patchTable-&gt;GetVaryingPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l01372\" name=\"l01372\"></a><span class=\"lineno\"> 1372</span>                           patchTable-&gt;GetPatchParamBuffer());</div>\n+<div class=\"line\"><a id=\"l01373\" name=\"l01373\"></a><span class=\"lineno\"> 1373</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01374\" name=\"l01374\"></a><span class=\"lineno\"> 1374</span> </div>\n+<div class=\"line\"><a id=\"l01437\" name=\"l01437\"></a><span class=\"lineno\"> 1437</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01438\" name=\"l01438\"></a><span class=\"lineno\"> 1438</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01439\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01439\" name=\"l01439\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#a5e61f61981d7584a2297f249946bd445\"> 1439</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01221.html#a5e61f61981d7584a2297f249946bd445\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01440\" name=\"l01440\"></a><span class=\"lineno\"> 1440</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01441\" name=\"l01441\"></a><span class=\"lineno\"> 1441</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01442\" name=\"l01442\"></a><span class=\"lineno\"> 1442</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l01443\" name=\"l01443\"></a><span class=\"lineno\"> 1443</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l01444\" name=\"l01444\"></a><span class=\"lineno\"> 1444</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l01445\" name=\"l01445\"></a><span class=\"lineno\"> 1445</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l01446\" name=\"l01446\"></a><span class=\"lineno\"> 1446</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l01447\" name=\"l01447\"></a><span class=\"lineno\"> 1447</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01448\" name=\"l01448\"></a><span class=\"lineno\"> 1448</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01449\" name=\"l01449\"></a><span class=\"lineno\"> 1449</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l01450\" name=\"l01450\"></a><span class=\"lineno\"> 1450</span>        <a class=\"code hl_class\" href=\"a01221.html\">GLComputeEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n+<div class=\"line\"><a id=\"l01451\" name=\"l01451\"></a><span class=\"lineno\"> 1451</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l01452\" name=\"l01452\"></a><span class=\"lineno\"> 1452</span> </div>\n+<div class=\"line\"><a id=\"l01453\" name=\"l01453\"></a><span class=\"lineno\"> 1453</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l01454\" name=\"l01454\"></a><span class=\"lineno\"> 1454</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01221.html#a1c6ee39e3debcf0f71886acfeac5ce47\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01455\" name=\"l01455\"></a><span class=\"lineno\"> 1455</span>                                         srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l01456\" name=\"l01456\"></a><span class=\"lineno\"> 1456</span>                                         dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01457\" name=\"l01457\"></a><span class=\"lineno\"> 1457</span>                                         duBuffer, duDesc,</div>\n+<div class=\"line\"><a id=\"l01458\" name=\"l01458\"></a><span class=\"lineno\"> 1458</span>                                         dvBuffer, dvDesc,</div>\n+<div class=\"line\"><a id=\"l01459\" name=\"l01459\"></a><span class=\"lineno\"> 1459</span>                                         duuBuffer, duuDesc,</div>\n+<div class=\"line\"><a id=\"l01460\" name=\"l01460\"></a><span class=\"lineno\"> 1460</span>                                         duvBuffer, duvDesc,</div>\n+<div class=\"line\"><a id=\"l01461\" name=\"l01461\"></a><span class=\"lineno\"> 1461</span>                                         dvvBuffer, dvvDesc,</div>\n+<div class=\"line\"><a id=\"l01462\" name=\"l01462\"></a><span class=\"lineno\"> 1462</span>                                         numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l01463\" name=\"l01463\"></a><span class=\"lineno\"> 1463</span>                                         patchTable);</div>\n+<div class=\"line\"><a id=\"l01464\" name=\"l01464\"></a><span class=\"lineno\"> 1464</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l01465\" name=\"l01465\"></a><span class=\"lineno\"> 1465</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n+<div class=\"line\"><a id=\"l01466\" name=\"l01466\"></a><span class=\"lineno\"> 1466</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l01467\" name=\"l01467\"></a><span class=\"lineno\"> 1467</span>            instance = <a class=\"code hl_function\" href=\"a01221.html#ab4c3cfbc05a1b3c7e08aac8258e38139\">Create</a>(srcDesc, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01468\" name=\"l01468\"></a><span class=\"lineno\"> 1468</span>                              duDesc, dvDesc,</div>\n+<div class=\"line\"><a id=\"l01469\" name=\"l01469\"></a><span class=\"lineno\"> 1469</span>                              duuDesc, duvDesc, dvvDesc);</div>\n+<div class=\"line\"><a id=\"l01470\" name=\"l01470\"></a><span class=\"lineno\"> 1470</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l01471\" name=\"l01471\"></a><span class=\"lineno\"> 1471</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01221.html#a1c6ee39e3debcf0f71886acfeac5ce47\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01472\" name=\"l01472\"></a><span class=\"lineno\"> 1472</span>                                               srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l01473\" name=\"l01473\"></a><span class=\"lineno\"> 1473</span>                                               dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01474\" name=\"l01474\"></a><span class=\"lineno\"> 1474</span>                                               duBuffer, duDesc,</div>\n+<div class=\"line\"><a id=\"l01475\" name=\"l01475\"></a><span class=\"lineno\"> 1475</span>                                               dvBuffer, dvDesc,</div>\n+<div class=\"line\"><a id=\"l01476\" name=\"l01476\"></a><span class=\"lineno\"> 1476</span>                                               duuBuffer, duuDesc,</div>\n+<div class=\"line\"><a id=\"l01477\" name=\"l01477\"></a><span class=\"lineno\"> 1477</span>                                               duvBuffer, duvDesc,</div>\n+<div class=\"line\"><a id=\"l01478\" name=\"l01478\"></a><span class=\"lineno\"> 1478</span>                                               dvvBuffer, dvvDesc,</div>\n+<div class=\"line\"><a id=\"l01479\" name=\"l01479\"></a><span class=\"lineno\"> 1479</span>                                               numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l01480\" name=\"l01480\"></a><span class=\"lineno\"> 1480</span>                                               patchTable);</div>\n+<div class=\"line\"><a id=\"l01481\" name=\"l01481\"></a><span class=\"lineno\"> 1481</span>                <span class=\"keyword\">delete</span> instance;</div>\n+<div class=\"line\"><a id=\"l01482\" name=\"l01482\"></a><span class=\"lineno\"> 1482</span>                <span class=\"keywordflow\">return</span> r;</div>\n+<div class=\"line\"><a id=\"l01483\" name=\"l01483\"></a><span class=\"lineno\"> 1483</span>            }</div>\n+<div class=\"line\"><a id=\"l01484\" name=\"l01484\"></a><span class=\"lineno\"> 1484</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l01485\" name=\"l01485\"></a><span class=\"lineno\"> 1485</span>        }</div>\n+<div class=\"line\"><a id=\"l01486\" name=\"l01486\"></a><span class=\"lineno\"> 1486</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01487\" name=\"l01487\"></a><span class=\"lineno\"> 1487</span> </div>\n+<div class=\"line\"><a id=\"l01542\" name=\"l01542\"></a><span class=\"lineno\"> 1542</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01543\" name=\"l01543\"></a><span class=\"lineno\"> 1543</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01544\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01544\" name=\"l01544\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#a7a65272357856989d99d800900d53e85\"> 1544</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01221.html#a7a65272357856989d99d800900d53e85\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01545\" name=\"l01545\"></a><span class=\"lineno\"> 1545</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01546\" name=\"l01546\"></a><span class=\"lineno\"> 1546</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01547\" name=\"l01547\"></a><span class=\"lineno\"> 1547</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l01548\" name=\"l01548\"></a><span class=\"lineno\"> 1548</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l01549\" name=\"l01549\"></a><span class=\"lineno\"> 1549</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l01550\" name=\"l01550\"></a><span class=\"lineno\"> 1550</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l01551\" name=\"l01551\"></a><span class=\"lineno\"> 1551</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l01552\" name=\"l01552\"></a><span class=\"lineno\"> 1552</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01553\" name=\"l01553\"></a><span class=\"lineno\"> 1553</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01554\" name=\"l01554\"></a><span class=\"lineno\"> 1554</span>        PATCH_TABLE *patchTable)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l01555\" name=\"l01555\"></a><span class=\"lineno\"> 1555</span> </div>\n+<div class=\"line\"><a id=\"l01556\" name=\"l01556\"></a><span class=\"lineno\"> 1556</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01221.html#aa6e408cc03b3625bb31a2822075bd87c\">EvalPatches</a>(srcBuffer-&gt;BindVBO(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01557\" name=\"l01557\"></a><span class=\"lineno\"> 1557</span>                           dstBuffer-&gt;BindVBO(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01558\" name=\"l01558\"></a><span class=\"lineno\"> 1558</span>                           duBuffer-&gt;BindVBO(), duDesc,</div>\n+<div class=\"line\"><a id=\"l01559\" name=\"l01559\"></a><span class=\"lineno\"> 1559</span>                           dvBuffer-&gt;BindVBO(), dvDesc,</div>\n+<div class=\"line\"><a id=\"l01560\" name=\"l01560\"></a><span class=\"lineno\"> 1560</span>                           duuBuffer-&gt;BindVBO(), duuDesc,</div>\n+<div class=\"line\"><a id=\"l01561\" name=\"l01561\"></a><span class=\"lineno\"> 1561</span>                           duvBuffer-&gt;BindVBO(), duvDesc,</div>\n+<div class=\"line\"><a id=\"l01562\" name=\"l01562\"></a><span class=\"lineno\"> 1562</span>                           dvvBuffer-&gt;BindVBO(), dvvDesc,</div>\n+<div class=\"line\"><a id=\"l01563\" name=\"l01563\"></a><span class=\"lineno\"> 1563</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01564\" name=\"l01564\"></a><span class=\"lineno\"> 1564</span>                           patchCoords-&gt;BindVBO(),</div>\n+<div class=\"line\"><a id=\"l01565\" name=\"l01565\"></a><span class=\"lineno\"> 1565</span>                           patchTable-&gt;GetVaryingPatchArrays(),</div>\n+<div class=\"line\"><a id=\"l01566\" name=\"l01566\"></a><span class=\"lineno\"> 1566</span>                           patchTable-&gt;GetVaryingPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l01567\" name=\"l01567\"></a><span class=\"lineno\"> 1567</span>                           patchTable-&gt;GetPatchParamBuffer());</div>\n+<div class=\"line\"><a id=\"l01568\" name=\"l01568\"></a><span class=\"lineno\"> 1568</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01569\" name=\"l01569\"></a><span class=\"lineno\"> 1569</span> </div>\n+<div class=\"line\"><a id=\"l01604\" name=\"l01604\"></a><span class=\"lineno\"> 1604</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01605\" name=\"l01605\"></a><span class=\"lineno\"> 1605</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01606\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01606\" name=\"l01606\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#a1fddf904b732d4adcc2c77287a11da21\"> 1606</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01221.html#a1fddf904b732d4adcc2c77287a11da21\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01607\" name=\"l01607\"></a><span class=\"lineno\"> 1607</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01608\" name=\"l01608\"></a><span class=\"lineno\"> 1608</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01609\" name=\"l01609\"></a><span class=\"lineno\"> 1609</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01610\" name=\"l01610\"></a><span class=\"lineno\"> 1610</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01611\" name=\"l01611\"></a><span class=\"lineno\"> 1611</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l01612\" name=\"l01612\"></a><span class=\"lineno\"> 1612</span>        <span class=\"keywordtype\">int</span> fvarChannel,</div>\n+<div class=\"line\"><a id=\"l01613\" name=\"l01613\"></a><span class=\"lineno\"> 1613</span>        <a class=\"code hl_class\" href=\"a01221.html\">GLComputeEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n+<div class=\"line\"><a id=\"l01614\" name=\"l01614\"></a><span class=\"lineno\"> 1614</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l01615\" name=\"l01615\"></a><span class=\"lineno\"> 1615</span> </div>\n+<div class=\"line\"><a id=\"l01616\" name=\"l01616\"></a><span class=\"lineno\"> 1616</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l01617\" name=\"l01617\"></a><span class=\"lineno\"> 1617</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01221.html#a1fddf904b732d4adcc2c77287a11da21\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01618\" name=\"l01618\"></a><span class=\"lineno\"> 1618</span>                                         srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l01619\" name=\"l01619\"></a><span class=\"lineno\"> 1619</span>                                         dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01620\" name=\"l01620\"></a><span class=\"lineno\"> 1620</span>                                         numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l01621\" name=\"l01621\"></a><span class=\"lineno\"> 1621</span>                                         patchTable, fvarChannel);</div>\n+<div class=\"line\"><a id=\"l01622\" name=\"l01622\"></a><span class=\"lineno\"> 1622</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l01623\" name=\"l01623\"></a><span class=\"lineno\"> 1623</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n+<div class=\"line\"><a id=\"l01624\" name=\"l01624\"></a><span class=\"lineno\"> 1624</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l01625\" name=\"l01625\"></a><span class=\"lineno\"> 1625</span>            instance = <a class=\"code hl_function\" href=\"a01221.html#ab4c3cfbc05a1b3c7e08aac8258e38139\">Create</a>(srcDesc, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01626\" name=\"l01626\"></a><span class=\"lineno\"> 1626</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l01627\" name=\"l01627\"></a><span class=\"lineno\"> 1627</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>());</div>\n+<div class=\"line\"><a id=\"l01628\" name=\"l01628\"></a><span class=\"lineno\"> 1628</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l01629\" name=\"l01629\"></a><span class=\"lineno\"> 1629</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01221.html#a1fddf904b732d4adcc2c77287a11da21\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01630\" name=\"l01630\"></a><span class=\"lineno\"> 1630</span>                                               srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l01631\" name=\"l01631\"></a><span class=\"lineno\"> 1631</span>                                               dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01632\" name=\"l01632\"></a><span class=\"lineno\"> 1632</span>                                               numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l01633\" name=\"l01633\"></a><span class=\"lineno\"> 1633</span>                                               patchTable, fvarChannel);</div>\n+<div class=\"line\"><a id=\"l01634\" name=\"l01634\"></a><span class=\"lineno\"> 1634</span>                <span class=\"keyword\">delete</span> instance;</div>\n+<div class=\"line\"><a id=\"l01635\" name=\"l01635\"></a><span class=\"lineno\"> 1635</span>                <span class=\"keywordflow\">return</span> r;</div>\n+<div class=\"line\"><a id=\"l01636\" name=\"l01636\"></a><span class=\"lineno\"> 1636</span>            }</div>\n+<div class=\"line\"><a id=\"l01637\" name=\"l01637\"></a><span class=\"lineno\"> 1637</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l01638\" name=\"l01638\"></a><span class=\"lineno\"> 1638</span>        }</div>\n+<div class=\"line\"><a id=\"l01639\" name=\"l01639\"></a><span class=\"lineno\"> 1639</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01640\" name=\"l01640\"></a><span class=\"lineno\"> 1640</span> </div>\n+<div class=\"line\"><a id=\"l01667\" name=\"l01667\"></a><span class=\"lineno\"> 1667</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01668\" name=\"l01668\"></a><span class=\"lineno\"> 1668</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01669\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01669\" name=\"l01669\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#af7d3e4db03873d8c0d5da1d2c53f979e\"> 1669</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01221.html#af7d3e4db03873d8c0d5da1d2c53f979e\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01670\" name=\"l01670\"></a><span class=\"lineno\"> 1670</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01671\" name=\"l01671\"></a><span class=\"lineno\"> 1671</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01672\" name=\"l01672\"></a><span class=\"lineno\"> 1672</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01673\" name=\"l01673\"></a><span class=\"lineno\"> 1673</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01674\" name=\"l01674\"></a><span class=\"lineno\"> 1674</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l01675\" name=\"l01675\"></a><span class=\"lineno\"> 1675</span>        <span class=\"keywordtype\">int</span> fvarChannel = 0)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l01676\" name=\"l01676\"></a><span class=\"lineno\"> 1676</span> </div>\n+<div class=\"line\"><a id=\"l01677\" name=\"l01677\"></a><span class=\"lineno\"> 1677</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01221.html#aa6e408cc03b3625bb31a2822075bd87c\">EvalPatches</a>(srcBuffer-&gt;BindVBO(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01678\" name=\"l01678\"></a><span class=\"lineno\"> 1678</span>                           dstBuffer-&gt;BindVBO(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01679\" name=\"l01679\"></a><span class=\"lineno\"> 1679</span>                           0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l01680\" name=\"l01680\"></a><span class=\"lineno\"> 1680</span>                           0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l01681\" name=\"l01681\"></a><span class=\"lineno\"> 1681</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01682\" name=\"l01682\"></a><span class=\"lineno\"> 1682</span>                           patchCoords-&gt;BindVBO(),</div>\n+<div class=\"line\"><a id=\"l01683\" name=\"l01683\"></a><span class=\"lineno\"> 1683</span>                           patchTable-&gt;GetFVarPatchArrays(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01684\" name=\"l01684\"></a><span class=\"lineno\"> 1684</span>                           patchTable-&gt;GetFVarPatchIndexBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01685\" name=\"l01685\"></a><span class=\"lineno\"> 1685</span>                           patchTable-&gt;GetFVarPatchParamBuffer(fvarChannel));</div>\n+<div class=\"line\"><a id=\"l01686\" name=\"l01686\"></a><span class=\"lineno\"> 1686</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01687\" name=\"l01687\"></a><span class=\"lineno\"> 1687</span> </div>\n+<div class=\"line\"><a id=\"l01734\" name=\"l01734\"></a><span class=\"lineno\"> 1734</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01735\" name=\"l01735\"></a><span class=\"lineno\"> 1735</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01736\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01736\" name=\"l01736\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#a151b29da7c29ca329738e6a5f0c64898\"> 1736</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01221.html#a151b29da7c29ca329738e6a5f0c64898\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01737\" name=\"l01737\"></a><span class=\"lineno\"> 1737</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01738\" name=\"l01738\"></a><span class=\"lineno\"> 1738</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01739\" name=\"l01739\"></a><span class=\"lineno\"> 1739</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l01740\" name=\"l01740\"></a><span class=\"lineno\"> 1740</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l01741\" name=\"l01741\"></a><span class=\"lineno\"> 1741</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01742\" name=\"l01742\"></a><span class=\"lineno\"> 1742</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01743\" name=\"l01743\"></a><span class=\"lineno\"> 1743</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l01744\" name=\"l01744\"></a><span class=\"lineno\"> 1744</span>        <span class=\"keywordtype\">int</span> fvarChannel,</div>\n+<div class=\"line\"><a id=\"l01745\" name=\"l01745\"></a><span class=\"lineno\"> 1745</span>        <a class=\"code hl_class\" href=\"a01221.html\">GLComputeEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n+<div class=\"line\"><a id=\"l01746\" name=\"l01746\"></a><span class=\"lineno\"> 1746</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l01747\" name=\"l01747\"></a><span class=\"lineno\"> 1747</span> </div>\n+<div class=\"line\"><a id=\"l01748\" name=\"l01748\"></a><span class=\"lineno\"> 1748</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l01749\" name=\"l01749\"></a><span class=\"lineno\"> 1749</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01221.html#a1fddf904b732d4adcc2c77287a11da21\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01750\" name=\"l01750\"></a><span class=\"lineno\"> 1750</span>                                         srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l01751\" name=\"l01751\"></a><span class=\"lineno\"> 1751</span>                                         dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01752\" name=\"l01752\"></a><span class=\"lineno\"> 1752</span>                                         duBuffer, duDesc,</div>\n+<div class=\"line\"><a id=\"l01753\" name=\"l01753\"></a><span class=\"lineno\"> 1753</span>                                         dvBuffer, dvDesc,</div>\n+<div class=\"line\"><a id=\"l01754\" name=\"l01754\"></a><span class=\"lineno\"> 1754</span>                                         numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l01755\" name=\"l01755\"></a><span class=\"lineno\"> 1755</span>                                         patchTable, fvarChannel);</div>\n+<div class=\"line\"><a id=\"l01756\" name=\"l01756\"></a><span class=\"lineno\"> 1756</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l01757\" name=\"l01757\"></a><span class=\"lineno\"> 1757</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n+<div class=\"line\"><a id=\"l01758\" name=\"l01758\"></a><span class=\"lineno\"> 1758</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l01759\" name=\"l01759\"></a><span class=\"lineno\"> 1759</span>            instance = <a class=\"code hl_function\" href=\"a01221.html#ab4c3cfbc05a1b3c7e08aac8258e38139\">Create</a>(srcDesc, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01760\" name=\"l01760\"></a><span class=\"lineno\"> 1760</span>                              duDesc, dvDesc);</div>\n+<div class=\"line\"><a id=\"l01761\" name=\"l01761\"></a><span class=\"lineno\"> 1761</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l01762\" name=\"l01762\"></a><span class=\"lineno\"> 1762</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01221.html#a1fddf904b732d4adcc2c77287a11da21\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01763\" name=\"l01763\"></a><span class=\"lineno\"> 1763</span>                                               srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l01764\" name=\"l01764\"></a><span class=\"lineno\"> 1764</span>                                               dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01765\" name=\"l01765\"></a><span class=\"lineno\"> 1765</span>                                               duBuffer, duDesc,</div>\n+<div class=\"line\"><a id=\"l01766\" name=\"l01766\"></a><span class=\"lineno\"> 1766</span>                                               dvBuffer, dvDesc,</div>\n+<div class=\"line\"><a id=\"l01767\" name=\"l01767\"></a><span class=\"lineno\"> 1767</span>                                               numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l01768\" name=\"l01768\"></a><span class=\"lineno\"> 1768</span>                                               patchTable, fvarChannel);</div>\n+<div class=\"line\"><a id=\"l01769\" name=\"l01769\"></a><span class=\"lineno\"> 1769</span>                <span class=\"keyword\">delete</span> instance;</div>\n+<div class=\"line\"><a id=\"l01770\" name=\"l01770\"></a><span class=\"lineno\"> 1770</span>                <span class=\"keywordflow\">return</span> r;</div>\n+<div class=\"line\"><a id=\"l01771\" name=\"l01771\"></a><span class=\"lineno\"> 1771</span>            }</div>\n+<div class=\"line\"><a id=\"l01772\" name=\"l01772\"></a><span class=\"lineno\"> 1772</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l01773\" name=\"l01773\"></a><span class=\"lineno\"> 1773</span>        }</div>\n+<div class=\"line\"><a id=\"l01774\" name=\"l01774\"></a><span class=\"lineno\"> 1774</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01775\" name=\"l01775\"></a><span class=\"lineno\"> 1775</span> </div>\n+<div class=\"line\"><a id=\"l01814\" name=\"l01814\"></a><span class=\"lineno\"> 1814</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01815\" name=\"l01815\"></a><span class=\"lineno\"> 1815</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01816\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01816\" name=\"l01816\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#a8736b15a3afb5b221ed009b19503e063\"> 1816</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01221.html#a8736b15a3afb5b221ed009b19503e063\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01817\" name=\"l01817\"></a><span class=\"lineno\"> 1817</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01818\" name=\"l01818\"></a><span class=\"lineno\"> 1818</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01819\" name=\"l01819\"></a><span class=\"lineno\"> 1819</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l01820\" name=\"l01820\"></a><span class=\"lineno\"> 1820</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l01821\" name=\"l01821\"></a><span class=\"lineno\"> 1821</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01822\" name=\"l01822\"></a><span class=\"lineno\"> 1822</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01823\" name=\"l01823\"></a><span class=\"lineno\"> 1823</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l01824\" name=\"l01824\"></a><span class=\"lineno\"> 1824</span>        <span class=\"keywordtype\">int</span> fvarChannel = 0)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l01825\" name=\"l01825\"></a><span class=\"lineno\"> 1825</span> </div>\n+<div class=\"line\"><a id=\"l01826\" name=\"l01826\"></a><span class=\"lineno\"> 1826</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01221.html#aa6e408cc03b3625bb31a2822075bd87c\">EvalPatches</a>(srcBuffer-&gt;BindVBO(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01827\" name=\"l01827\"></a><span class=\"lineno\"> 1827</span>                           dstBuffer-&gt;BindVBO(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01828\" name=\"l01828\"></a><span class=\"lineno\"> 1828</span>                           duBuffer-&gt;BindVBO(), duDesc,</div>\n+<div class=\"line\"><a id=\"l01829\" name=\"l01829\"></a><span class=\"lineno\"> 1829</span>                           dvBuffer-&gt;BindVBO(), dvDesc,</div>\n+<div class=\"line\"><a id=\"l01830\" name=\"l01830\"></a><span class=\"lineno\"> 1830</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01831\" name=\"l01831\"></a><span class=\"lineno\"> 1831</span>                           patchCoords-&gt;BindVBO(),</div>\n+<div class=\"line\"><a id=\"l01832\" name=\"l01832\"></a><span class=\"lineno\"> 1832</span>                           patchTable-&gt;GetFVarPatchArrays(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01833\" name=\"l01833\"></a><span class=\"lineno\"> 1833</span>                           patchTable-&gt;GetFVarPatchIndexBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01834\" name=\"l01834\"></a><span class=\"lineno\"> 1834</span>                           patchTable-&gt;GetFVarPatchParamBuffer(fvarChannel));</div>\n+<div class=\"line\"><a id=\"l01835\" name=\"l01835\"></a><span class=\"lineno\"> 1835</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01836\" name=\"l01836\"></a><span class=\"lineno\"> 1836</span> </div>\n+<div class=\"line\"><a id=\"l01901\" name=\"l01901\"></a><span class=\"lineno\"> 1901</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01902\" name=\"l01902\"></a><span class=\"lineno\"> 1902</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01903\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01903\" name=\"l01903\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#a719692669b13f988a0f61f4beacd79bb\"> 1903</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01221.html#a719692669b13f988a0f61f4beacd79bb\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01904\" name=\"l01904\"></a><span class=\"lineno\"> 1904</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01905\" name=\"l01905\"></a><span class=\"lineno\"> 1905</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01906\" name=\"l01906\"></a><span class=\"lineno\"> 1906</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l01907\" name=\"l01907\"></a><span class=\"lineno\"> 1907</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l01908\" name=\"l01908\"></a><span class=\"lineno\"> 1908</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l01909\" name=\"l01909\"></a><span class=\"lineno\"> 1909</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l01910\" name=\"l01910\"></a><span class=\"lineno\"> 1910</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l01911\" name=\"l01911\"></a><span class=\"lineno\"> 1911</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01912\" name=\"l01912\"></a><span class=\"lineno\"> 1912</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01913\" name=\"l01913\"></a><span class=\"lineno\"> 1913</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l01914\" name=\"l01914\"></a><span class=\"lineno\"> 1914</span>        <span class=\"keywordtype\">int</span> fvarChannel,</div>\n+<div class=\"line\"><a id=\"l01915\" name=\"l01915\"></a><span class=\"lineno\"> 1915</span>        <a class=\"code hl_class\" href=\"a01221.html\">GLComputeEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n+<div class=\"line\"><a id=\"l01916\" name=\"l01916\"></a><span class=\"lineno\"> 1916</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l01917\" name=\"l01917\"></a><span class=\"lineno\"> 1917</span> </div>\n+<div class=\"line\"><a id=\"l01918\" name=\"l01918\"></a><span class=\"lineno\"> 1918</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l01919\" name=\"l01919\"></a><span class=\"lineno\"> 1919</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01221.html#a1fddf904b732d4adcc2c77287a11da21\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01920\" name=\"l01920\"></a><span class=\"lineno\"> 1920</span>                                         srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l01921\" name=\"l01921\"></a><span class=\"lineno\"> 1921</span>                                         dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01922\" name=\"l01922\"></a><span class=\"lineno\"> 1922</span>                                         duBuffer, duDesc,</div>\n+<div class=\"line\"><a id=\"l01923\" name=\"l01923\"></a><span class=\"lineno\"> 1923</span>                                         dvBuffer, dvDesc,</div>\n+<div class=\"line\"><a id=\"l01924\" name=\"l01924\"></a><span class=\"lineno\"> 1924</span>                                         duuBuffer, duuDesc,</div>\n+<div class=\"line\"><a id=\"l01925\" name=\"l01925\"></a><span class=\"lineno\"> 1925</span>                                         duvBuffer, duvDesc,</div>\n+<div class=\"line\"><a id=\"l01926\" name=\"l01926\"></a><span class=\"lineno\"> 1926</span>                                         dvvBuffer, dvvDesc,</div>\n+<div class=\"line\"><a id=\"l01927\" name=\"l01927\"></a><span class=\"lineno\"> 1927</span>                                         numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l01928\" name=\"l01928\"></a><span class=\"lineno\"> 1928</span>                                         patchTable, fvarChannel);</div>\n+<div class=\"line\"><a id=\"l01929\" name=\"l01929\"></a><span class=\"lineno\"> 1929</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l01930\" name=\"l01930\"></a><span class=\"lineno\"> 1930</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n+<div class=\"line\"><a id=\"l01931\" name=\"l01931\"></a><span class=\"lineno\"> 1931</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l01932\" name=\"l01932\"></a><span class=\"lineno\"> 1932</span>            instance = <a class=\"code hl_function\" href=\"a01221.html#ab4c3cfbc05a1b3c7e08aac8258e38139\">Create</a>(srcDesc, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01933\" name=\"l01933\"></a><span class=\"lineno\"> 1933</span>                              duDesc, dvDesc,</div>\n+<div class=\"line\"><a id=\"l01934\" name=\"l01934\"></a><span class=\"lineno\"> 1934</span>                              duuDesc, duvDesc, dvvDesc);</div>\n+<div class=\"line\"><a id=\"l01935\" name=\"l01935\"></a><span class=\"lineno\"> 1935</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n+<div class=\"line\"><a id=\"l01936\" name=\"l01936\"></a><span class=\"lineno\"> 1936</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01221.html#a1fddf904b732d4adcc2c77287a11da21\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01937\" name=\"l01937\"></a><span class=\"lineno\"> 1937</span>                                               srcBuffer, srcDesc,</div>\n+<div class=\"line\"><a id=\"l01938\" name=\"l01938\"></a><span class=\"lineno\"> 1938</span>                                               dstBuffer, dstDesc,</div>\n+<div class=\"line\"><a id=\"l01939\" name=\"l01939\"></a><span class=\"lineno\"> 1939</span>                                               duBuffer, duDesc,</div>\n+<div class=\"line\"><a id=\"l01940\" name=\"l01940\"></a><span class=\"lineno\"> 1940</span>                                               dvBuffer, dvDesc,</div>\n+<div class=\"line\"><a id=\"l01941\" name=\"l01941\"></a><span class=\"lineno\"> 1941</span>                                               duuBuffer, duuDesc,</div>\n+<div class=\"line\"><a id=\"l01942\" name=\"l01942\"></a><span class=\"lineno\"> 1942</span>                                               duvBuffer, duvDesc,</div>\n+<div class=\"line\"><a id=\"l01943\" name=\"l01943\"></a><span class=\"lineno\"> 1943</span>                                               dvvBuffer, dvvDesc,</div>\n+<div class=\"line\"><a id=\"l01944\" name=\"l01944\"></a><span class=\"lineno\"> 1944</span>                                               numPatchCoords, patchCoords,</div>\n+<div class=\"line\"><a id=\"l01945\" name=\"l01945\"></a><span class=\"lineno\"> 1945</span>                                               patchTable, fvarChannel);</div>\n+<div class=\"line\"><a id=\"l01946\" name=\"l01946\"></a><span class=\"lineno\"> 1946</span>                <span class=\"keyword\">delete</span> instance;</div>\n+<div class=\"line\"><a id=\"l01947\" name=\"l01947\"></a><span class=\"lineno\"> 1947</span>                <span class=\"keywordflow\">return</span> r;</div>\n+<div class=\"line\"><a id=\"l01948\" name=\"l01948\"></a><span class=\"lineno\"> 1948</span>            }</div>\n+<div class=\"line\"><a id=\"l01949\" name=\"l01949\"></a><span class=\"lineno\"> 1949</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l01950\" name=\"l01950\"></a><span class=\"lineno\"> 1950</span>        }</div>\n+<div class=\"line\"><a id=\"l01951\" name=\"l01951\"></a><span class=\"lineno\"> 1951</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01952\" name=\"l01952\"></a><span class=\"lineno\"> 1952</span> </div>\n+<div class=\"line\"><a id=\"l02009\" name=\"l02009\"></a><span class=\"lineno\"> 2009</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l02010\" name=\"l02010\"></a><span class=\"lineno\"> 2010</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen02011\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l02011\" name=\"l02011\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#ab0a4a9c408bc2a690d879cc7c2ffd21c\"> 2011</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01221.html#ab0a4a9c408bc2a690d879cc7c2ffd21c\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l02012\" name=\"l02012\"></a><span class=\"lineno\"> 2012</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l02013\" name=\"l02013\"></a><span class=\"lineno\"> 2013</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l02014\" name=\"l02014\"></a><span class=\"lineno\"> 2014</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l02015\" name=\"l02015\"></a><span class=\"lineno\"> 2015</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l02016\" name=\"l02016\"></a><span class=\"lineno\"> 2016</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l02017\" name=\"l02017\"></a><span class=\"lineno\"> 2017</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l02018\" name=\"l02018\"></a><span class=\"lineno\"> 2018</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l02019\" name=\"l02019\"></a><span class=\"lineno\"> 2019</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l02020\" name=\"l02020\"></a><span class=\"lineno\"> 2020</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l02021\" name=\"l02021\"></a><span class=\"lineno\"> 2021</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l02022\" name=\"l02022\"></a><span class=\"lineno\"> 2022</span>        <span class=\"keywordtype\">int</span> fvarChannel = 0)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l02023\" name=\"l02023\"></a><span class=\"lineno\"> 2023</span> </div>\n+<div class=\"line\"><a id=\"l02024\" name=\"l02024\"></a><span class=\"lineno\"> 2024</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01221.html#aa6e408cc03b3625bb31a2822075bd87c\">EvalPatches</a>(srcBuffer-&gt;BindVBO(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l02025\" name=\"l02025\"></a><span class=\"lineno\"> 2025</span>                           dstBuffer-&gt;BindVBO(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l02026\" name=\"l02026\"></a><span class=\"lineno\"> 2026</span>                           duBuffer-&gt;BindVBO(), duDesc,</div>\n+<div class=\"line\"><a id=\"l02027\" name=\"l02027\"></a><span class=\"lineno\"> 2027</span>                           dvBuffer-&gt;BindVBO(), dvDesc,</div>\n+<div class=\"line\"><a id=\"l02028\" name=\"l02028\"></a><span class=\"lineno\"> 2028</span>                           duuBuffer-&gt;BindVBO(), duuDesc,</div>\n+<div class=\"line\"><a id=\"l02029\" name=\"l02029\"></a><span class=\"lineno\"> 2029</span>                           duvBuffer-&gt;BindVBO(), duvDesc,</div>\n+<div class=\"line\"><a id=\"l02030\" name=\"l02030\"></a><span class=\"lineno\"> 2030</span>                           dvvBuffer-&gt;BindVBO(), dvvDesc,</div>\n+<div class=\"line\"><a id=\"l02031\" name=\"l02031\"></a><span class=\"lineno\"> 2031</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l02032\" name=\"l02032\"></a><span class=\"lineno\"> 2032</span>                           patchCoords-&gt;BindVBO(),</div>\n+<div class=\"line\"><a id=\"l02033\" name=\"l02033\"></a><span class=\"lineno\"> 2033</span>                           patchTable-&gt;GetFVarPatchArrays(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l02034\" name=\"l02034\"></a><span class=\"lineno\"> 2034</span>                           patchTable-&gt;GetFVarPatchIndexBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l02035\" name=\"l02035\"></a><span class=\"lineno\"> 2035</span>                           patchTable-&gt;GetFVarPatchParamBuffer(fvarChannel));</div>\n+<div class=\"line\"><a id=\"l02036\" name=\"l02036\"></a><span class=\"lineno\"> 2036</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l02037\" name=\"l02037\"></a><span class=\"lineno\"> 2037</span> </div>\n+<div class=\"line\"><a id=\"l02043\" name=\"l02043\"></a><span class=\"lineno\"> 2043</span> </div>\n+<div class=\"line\"><a id=\"l02046\" name=\"l02046\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#ade1086349c1a452f60bcf281383ceec2\"> 2046</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01221.html#ade1086349c1a452f60bcf281383ceec2\">Compile</a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l02047\" name=\"l02047\"></a><span class=\"lineno\"> 2047</span>                 <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l02048\" name=\"l02048\"></a><span class=\"lineno\"> 2048</span>                 <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc = <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l02049\" name=\"l02049\"></a><span class=\"lineno\"> 2049</span>                 <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc = <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l02050\" name=\"l02050\"></a><span class=\"lineno\"> 2050</span>                 <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc = <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l02051\" name=\"l02051\"></a><span class=\"lineno\"> 2051</span>                 <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc = <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n+<div class=\"line\"><a id=\"l02052\" name=\"l02052\"></a><span class=\"lineno\"> 2052</span>                 <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc = <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>());</div>\n+<div class=\"line\"><a id=\"l02053\" name=\"l02053\"></a><span class=\"lineno\"> 2053</span> </div>\n+<div class=\"line\"><a id=\"l02055\" name=\"l02055\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#ac6c93ad38a7902d0e5ec28ff3bf9e52e\"> 2055</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01221.html#ac6c93ad38a7902d0e5ec28ff3bf9e52e\">Synchronize</a>(<span class=\"keywordtype\">void</span> *deviceContext);</div>\n+<div class=\"line\"><a id=\"l02056\" name=\"l02056\"></a><span class=\"lineno\"> 2056</span> </div>\n+<div class=\"line\"><a id=\"l02057\" name=\"l02057\"></a><span class=\"lineno\"> 2057</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l02058\" name=\"l02058\"></a><span class=\"lineno\"> 2058</span>    <span class=\"keyword\">struct </span>_StencilKernel {</div>\n+<div class=\"line\"><a id=\"l02059\" name=\"l02059\"></a><span class=\"lineno\"> 2059</span>        _StencilKernel();</div>\n+<div class=\"line\"><a id=\"l02060\" name=\"l02060\"></a><span class=\"lineno\"> 2060</span>        ~_StencilKernel();</div>\n+<div class=\"line\"><a id=\"l02061\" name=\"l02061\"></a><span class=\"lineno\"> 2061</span>        <span class=\"keywordtype\">bool</span> Compile(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l02062\" name=\"l02062\"></a><span class=\"lineno\"> 2062</span>                     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l02063\" name=\"l02063\"></a><span class=\"lineno\"> 2063</span>                     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l02064\" name=\"l02064\"></a><span class=\"lineno\"> 2064</span>                     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l02065\" name=\"l02065\"></a><span class=\"lineno\"> 2065</span>                     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l02066\" name=\"l02066\"></a><span class=\"lineno\"> 2066</span>                     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l02067\" name=\"l02067\"></a><span class=\"lineno\"> 2067</span>                     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l02068\" name=\"l02068\"></a><span class=\"lineno\"> 2068</span>                     <span class=\"keywordtype\">int</span> workGroupSize);</div>\n+<div class=\"line\"><a id=\"l02069\" name=\"l02069\"></a><span class=\"lineno\"> 2069</span>        GLuint program;</div>\n+<div class=\"line\"><a id=\"l02070\" name=\"l02070\"></a><span class=\"lineno\"> 2070</span>        GLuint uniformStart;</div>\n+<div class=\"line\"><a id=\"l02071\" name=\"l02071\"></a><span class=\"lineno\"> 2071</span>        GLuint uniformEnd;</div>\n+<div class=\"line\"><a id=\"l02072\" name=\"l02072\"></a><span class=\"lineno\"> 2072</span>        GLuint uniformSrcOffset;</div>\n+<div class=\"line\"><a id=\"l02073\" name=\"l02073\"></a><span class=\"lineno\"> 2073</span>        GLuint uniformDstOffset;</div>\n+<div class=\"line\"><a id=\"l02074\" name=\"l02074\"></a><span class=\"lineno\"> 2074</span>        GLuint uniformDuDesc;</div>\n+<div class=\"line\"><a id=\"l02075\" name=\"l02075\"></a><span class=\"lineno\"> 2075</span>        GLuint uniformDvDesc;</div>\n+<div class=\"line\"><a id=\"l02076\" name=\"l02076\"></a><span class=\"lineno\"> 2076</span>        GLuint uniformDuuDesc;</div>\n+<div class=\"line\"><a id=\"l02077\" name=\"l02077\"></a><span class=\"lineno\"> 2077</span>        GLuint uniformDuvDesc;</div>\n+<div class=\"line\"><a id=\"l02078\" name=\"l02078\"></a><span class=\"lineno\"> 2078</span>        GLuint uniformDvvDesc;</div>\n+<div class=\"line\"><a id=\"l02079\" name=\"l02079\"></a><span class=\"lineno\"> 2079</span>    } _stencilKernel;</div>\n+<div class=\"line\"><a id=\"l02080\" name=\"l02080\"></a><span class=\"lineno\"> 2080</span> </div>\n+<div class=\"line\"><a id=\"l02081\" name=\"l02081\"></a><span class=\"lineno\"> 2081</span>    <span class=\"keyword\">struct </span>_PatchKernel {</div>\n+<div class=\"line\"><a id=\"l02082\" name=\"l02082\"></a><span class=\"lineno\"> 2082</span>        _PatchKernel();</div>\n+<div class=\"line\"><a id=\"l02083\" name=\"l02083\"></a><span class=\"lineno\"> 2083</span>        ~_PatchKernel();</div>\n+<div class=\"line\"><a id=\"l02084\" name=\"l02084\"></a><span class=\"lineno\"> 2084</span>        <span class=\"keywordtype\">bool</span> Compile(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l02085\" name=\"l02085\"></a><span class=\"lineno\"> 2085</span>                     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l02086\" name=\"l02086\"></a><span class=\"lineno\"> 2086</span>                     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l02087\" name=\"l02087\"></a><span class=\"lineno\"> 2087</span>                     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l02088\" name=\"l02088\"></a><span class=\"lineno\"> 2088</span>                     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l02089\" name=\"l02089\"></a><span class=\"lineno\"> 2089</span>                     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l02090\" name=\"l02090\"></a><span class=\"lineno\"> 2090</span>                     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l02091\" name=\"l02091\"></a><span class=\"lineno\"> 2091</span>                     <span class=\"keywordtype\">int</span> workGroupSize);</div>\n+<div class=\"line\"><a id=\"l02092\" name=\"l02092\"></a><span class=\"lineno\"> 2092</span>        GLuint program;</div>\n+<div class=\"line\"><a id=\"l02093\" name=\"l02093\"></a><span class=\"lineno\"> 2093</span>        GLuint uniformSrcOffset;</div>\n+<div class=\"line\"><a id=\"l02094\" name=\"l02094\"></a><span class=\"lineno\"> 2094</span>        GLuint uniformDstOffset;</div>\n+<div class=\"line\"><a id=\"l02095\" name=\"l02095\"></a><span class=\"lineno\"> 2095</span>        GLuint uniformPatchArray;</div>\n+<div class=\"line\"><a id=\"l02096\" name=\"l02096\"></a><span class=\"lineno\"> 2096</span>        GLuint uniformDuDesc;</div>\n+<div class=\"line\"><a id=\"l02097\" name=\"l02097\"></a><span class=\"lineno\"> 2097</span>        GLuint uniformDvDesc;</div>\n+<div class=\"line\"><a id=\"l02098\" name=\"l02098\"></a><span class=\"lineno\"> 2098</span>        GLuint uniformDuuDesc;</div>\n+<div class=\"line\"><a id=\"l02099\" name=\"l02099\"></a><span class=\"lineno\"> 2099</span>        GLuint uniformDuvDesc;</div>\n+<div class=\"line\"><a id=\"l02100\" name=\"l02100\"></a><span class=\"lineno\"> 2100</span>        GLuint uniformDvvDesc;</div>\n+<div class=\"line\"><a id=\"l02101\" name=\"l02101\"></a><span class=\"lineno\"> 2101</span>    } _patchKernel;</div>\n+<div class=\"line\"><a id=\"l02102\" name=\"l02102\"></a><span class=\"lineno\"> 2102</span> </div>\n+<div class=\"line\"><a id=\"l02103\" name=\"l02103\"></a><span class=\"lineno\"> 2103</span>    <span class=\"keywordtype\">int</span> _workGroupSize;</div>\n+<div class=\"line\"><a id=\"l02104\" name=\"l02104\"></a><span class=\"lineno\"> 2104</span>    GLuint _patchArraysSSBO;</div>\n+<div class=\"line\"><a id=\"l02105\" name=\"l02105\"></a><span class=\"lineno\"> 2105</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l02106\" name=\"l02106\"></a><span class=\"lineno\"> 2106</span> </div>\n+<div class=\"line\"><a id=\"l02107\" name=\"l02107\"></a><span class=\"lineno\"> 2107</span>}  <span class=\"comment\">// end namespace Osd</span></div>\n+<div class=\"line\"><a id=\"l02108\" name=\"l02108\"></a><span class=\"lineno\"> 2108</span> </div>\n+<div class=\"line\"><a id=\"l02109\" name=\"l02109\"></a><span class=\"lineno\"> 2109</span>}  <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l02110\" name=\"l02110\"></a><span class=\"lineno\"> 2110</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l02111\" name=\"l02111\"></a><span class=\"lineno\"> 2111</span> </div>\n+<div class=\"line\"><a id=\"l02112\" name=\"l02112\"></a><span class=\"lineno\"> 2112</span>}  <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l02113\" name=\"l02113\"></a><span class=\"lineno\"> 2113</span> </div>\n+<div class=\"line\"><a id=\"l02114\" name=\"l02114\"></a><span class=\"lineno\"> 2114</span> </div>\n+<div class=\"line\"><a id=\"l02115\" name=\"l02115\"></a><span class=\"lineno\"> 2115</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_GL_COMPUTE_EVALUATOR_H</span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa00912_html_a98098cd229f60d2397d84a76fe654a31\"><div class=\"ttname\"><a href=\"a00912.html#a98098cd229f60d2397d84a76fe654a31\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchArrayVector</a></div><div class=\"ttdeci\">std::vector&lt; PatchArray &gt; PatchArrayVector</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00132\">types.h:132</a></div></div>\n+<div class=\"ttc\" id=\"aa01065_html\"><div class=\"ttname\"><a href=\"a01065.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTable</a></div><div class=\"ttdoc\">Stencil table class wrapping the template for compatibility.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00273\">stencilTable.h:273</a></div></div>\n+<div class=\"ttc\" id=\"aa01081_html\"><div class=\"ttname\"><a href=\"a01081.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTable</a></div><div class=\"ttdoc\">Limit stencil table class wrapping the template for compatibility.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00583\">stencilTable.h:583</a></div></div>\n+<div class=\"ttc\" id=\"aa01141_html\"><div class=\"ttname\"><a href=\"a01141.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::BufferDescriptor</a></div><div class=\"ttdoc\">BufferDescriptor is a struct which describes buffer elements in interleaved data buffers....</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00061\">bufferDescriptor.h:61</a></div></div>\n+<div class=\"ttc\" id=\"aa01217_html\"><div class=\"ttname\"><a href=\"a01217.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableSSBO</a></div><div class=\"ttdoc\">GL stencil table (Shader Storage buffer)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00051\">glComputeEvaluator.h:51</a></div></div>\n+<div class=\"ttc\" id=\"aa01217_html_a0684aca639f38b5f1b0c8efffe5f8bd8\"><div class=\"ttname\"><a href=\"a01217.html#a0684aca639f38b5f1b0c8efffe5f8bd8\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableSSBO::GetDuvWeightsBuffer</a></div><div class=\"ttdeci\">GLuint GetDuvWeightsBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00077\">glComputeEvaluator.h:77</a></div></div>\n+<div class=\"ttc\" id=\"aa01217_html_a18892fc15bb6ed7166dc6bfd5aaf0065\"><div class=\"ttname\"><a href=\"a01217.html#a18892fc15bb6ed7166dc6bfd5aaf0065\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableSSBO::GetWeightsBuffer</a></div><div class=\"ttdeci\">GLuint GetWeightsBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00073\">glComputeEvaluator.h:73</a></div></div>\n+<div class=\"ttc\" id=\"aa01217_html_a27a911fea9736fbe935c0edc4de9b998\"><div class=\"ttname\"><a href=\"a01217.html#a27a911fea9736fbe935c0edc4de9b998\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableSSBO::GLStencilTableSSBO</a></div><div class=\"ttdeci\">GLStencilTableSSBO(Far::LimitStencilTable const *limitStencilTable)</div></div>\n+<div class=\"ttc\" id=\"aa01217_html_a2e90e1efa299fe2698ce2d1aa87ade49\"><div class=\"ttname\"><a href=\"a01217.html#a2e90e1efa299fe2698ce2d1aa87ade49\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableSSBO::GetDuWeightsBuffer</a></div><div class=\"ttdeci\">GLuint GetDuWeightsBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00074\">glComputeEvaluator.h:74</a></div></div>\n+<div class=\"ttc\" id=\"aa01217_html_a4bef0031fb9295436a4049ef5801fec5\"><div class=\"ttname\"><a href=\"a01217.html#a4bef0031fb9295436a4049ef5801fec5\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableSSBO::~GLStencilTableSSBO</a></div><div class=\"ttdeci\">~GLStencilTableSSBO()</div></div>\n+<div class=\"ttc\" id=\"aa01217_html_a65836d2070b943c8fecbad926d074de2\"><div class=\"ttname\"><a href=\"a01217.html#a65836d2070b943c8fecbad926d074de2\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableSSBO::GetNumStencils</a></div><div class=\"ttdeci\">int GetNumStencils() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00079\">glComputeEvaluator.h:79</a></div></div>\n+<div class=\"ttc\" id=\"aa01217_html_a6bacf93d27488cfcbf2e66d23b4073a1\"><div class=\"ttname\"><a href=\"a01217.html#a6bacf93d27488cfcbf2e66d23b4073a1\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableSSBO::GetIndicesBuffer</a></div><div class=\"ttdeci\">GLuint GetIndicesBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00072\">glComputeEvaluator.h:72</a></div></div>\n+<div class=\"ttc\" id=\"aa01217_html_a8ccadebd4c9c36a15a5cbec461bd07e7\"><div class=\"ttname\"><a href=\"a01217.html#a8ccadebd4c9c36a15a5cbec461bd07e7\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableSSBO::GetOffsetsBuffer</a></div><div class=\"ttdeci\">GLuint GetOffsetsBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00071\">glComputeEvaluator.h:71</a></div></div>\n+<div class=\"ttc\" id=\"aa01217_html_aaacee6173a99bb3d7bbfb0a352ef9828\"><div class=\"ttname\"><a href=\"a01217.html#aaacee6173a99bb3d7bbfb0a352ef9828\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableSSBO::GLStencilTableSSBO</a></div><div class=\"ttdeci\">GLStencilTableSSBO(Far::StencilTable const *stencilTable)</div></div>\n+<div class=\"ttc\" id=\"aa01217_html_aadc7c7c9d50c030f7aee9e486b3b1d55\"><div class=\"ttname\"><a href=\"a01217.html#aadc7c7c9d50c030f7aee9e486b3b1d55\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableSSBO::GetDvvWeightsBuffer</a></div><div class=\"ttdeci\">GLuint GetDvvWeightsBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00078\">glComputeEvaluator.h:78</a></div></div>\n+<div class=\"ttc\" id=\"aa01217_html_ab44562bc3f0ba09049f60ed0553e158a\"><div class=\"ttname\"><a href=\"a01217.html#ab44562bc3f0ba09049f60ed0553e158a\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableSSBO::GetSizesBuffer</a></div><div class=\"ttdeci\">GLuint GetSizesBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00070\">glComputeEvaluator.h:70</a></div></div>\n+<div class=\"ttc\" id=\"aa01217_html_ab739faa3277bb2ea54b5198b3b664f37\"><div class=\"ttname\"><a href=\"a01217.html#ab739faa3277bb2ea54b5198b3b664f37\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableSSBO::Create</a></div><div class=\"ttdeci\">static GLStencilTableSSBO * Create(Far::LimitStencilTable const *limitStencilTable, void *deviceContext=NULL)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00058\">glComputeEvaluator.h:58</a></div></div>\n+<div class=\"ttc\" id=\"aa01217_html_abe929adc8bb596b84057169f5ade4663\"><div class=\"ttname\"><a href=\"a01217.html#abe929adc8bb596b84057169f5ade4663\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableSSBO::GetDuuWeightsBuffer</a></div><div class=\"ttdeci\">GLuint GetDuuWeightsBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00076\">glComputeEvaluator.h:76</a></div></div>\n+<div class=\"ttc\" id=\"aa01217_html_ae418f2ccdfaec79f90a3ccb92cd511a2\"><div class=\"ttname\"><a href=\"a01217.html#ae418f2ccdfaec79f90a3ccb92cd511a2\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableSSBO::GetDvWeightsBuffer</a></div><div class=\"ttdeci\">GLuint GetDvWeightsBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00075\">glComputeEvaluator.h:75</a></div></div>\n+<div class=\"ttc\" id=\"aa01217_html_af687fa998cd70f0e79b87d59c96c6a72\"><div class=\"ttname\"><a href=\"a01217.html#af687fa998cd70f0e79b87d59c96c6a72\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableSSBO::Create</a></div><div class=\"ttdeci\">static GLStencilTableSSBO * Create(Far::StencilTable const *stencilTable, void *deviceContext=NULL)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00053\">glComputeEvaluator.h:53</a></div></div>\n+<div class=\"ttc\" id=\"aa01221_html\"><div class=\"ttname\"><a href=\"a01221.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00096\">glComputeEvaluator.h:96</a></div></div>\n+<div class=\"ttc\" id=\"aa01221_html_a03c47cdd97f18b8bbdd1e3ce66cbd5d8\"><div class=\"ttname\"><a href=\"a01221.html#a03c47cdd97f18b8bbdd1e3ce66cbd5d8\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable) const</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l01214\">glComputeEvaluator.h:1214</a></div></div>\n+<div class=\"ttc\" id=\"aa01221_html_a151b29da7c29ca329738e6a5f0c64898\"><div class=\"ttname\"><a href=\"a01221.html#a151b29da7c29ca329738e6a5f0c64898\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel, GLComputeEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l01736\">glComputeEvaluator.h:1736</a></div></div>\n+<div class=\"ttc\" id=\"aa01221_html_a16dedd32573dd7f70c61f1fb6072e791\"><div class=\"ttname\"><a href=\"a01221.html#a16dedd32573dd7f70c61f1fb6072e791\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::EvalStencils</a></div><div class=\"ttdeci\">bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, STENCIL_TABLE const *stencilTable) const</div><div class=\"ttdoc\">Generic stencil function.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00434\">glComputeEvaluator.h:434</a></div></div>\n+<div class=\"ttc\" id=\"aa01221_html_a1c6ee39e3debcf0f71886acfeac5ce47\"><div class=\"ttname\"><a href=\"a01221.html#a1c6ee39e3debcf0f71886acfeac5ce47\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, GLComputeEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l01154\">glComputeEvaluator.h:1154</a></div></div>\n+<div class=\"ttc\" id=\"aa01221_html_a1fddf904b732d4adcc2c77287a11da21\"><div class=\"ttname\"><a href=\"a01221.html#a1fddf904b732d4adcc2c77287a11da21\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel, GLComputeEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l01606\">glComputeEvaluator.h:1606</a></div></div>\n+<div class=\"ttc\" id=\"aa01221_html_a20fa5a4f3311832729ea7b10f935285d\"><div class=\"ttname\"><a href=\"a01221.html#a20fa5a4f3311832729ea7b10f935285d\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::EvalStencils</a></div><div class=\"ttdeci\">bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, STENCIL_TABLE const *stencilTable) const</div><div class=\"ttdoc\">Generic stencil function.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00502\">glComputeEvaluator.h:502</a></div></div>\n+<div class=\"ttc\" id=\"aa01221_html_a2accf86fd727ccc3d78bb4acd9842978\"><div class=\"ttname\"><a href=\"a01221.html#a2accf86fd727ccc3d78bb4acd9842978\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, GLComputeEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l01278\">glComputeEvaluator.h:1278</a></div></div>\n+<div class=\"ttc\" id=\"aa01221_html_a2c24b70c9312d8dff3fecb9ddea52c44\"><div class=\"ttname\"><a href=\"a01221.html#a2c24b70c9312d8dff3fecb9ddea52c44\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::Instantiatable</a></div><div class=\"ttdeci\">bool Instantiatable</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00098\">glComputeEvaluator.h:98</a></div></div>\n+<div class=\"ttc\" id=\"aa01221_html_a2d1074f49212a9ae65161e9c957dbab7\"><div class=\"ttname\"><a href=\"a01221.html#a2d1074f49212a9ae65161e9c957dbab7\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::EvalPatches</a></div><div class=\"ttdeci\">bool EvalPatches(GLuint srcBuffer, BufferDescriptor const &amp;srcDesc, GLuint dstBuffer, BufferDescriptor const &amp;dstDesc, GLuint duBuffer, BufferDescriptor const &amp;duDesc, GLuint dvBuffer, BufferDescriptor const &amp;dvDesc, GLuint duuBuffer, BufferDescriptor const &amp;duuDesc, GLuint duvBuffer, BufferDescriptor const &amp;duvDesc, GLuint dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, GLuint patchCoordsBuffer, const PatchArrayVector &amp;patchArrays, GLuint patchIndexBuffer, GLuint patchParamsBuffer) const</div></div>\n+<div class=\"ttc\" id=\"aa01221_html_a2f39a072765ebdc9d4d2b4289685b815\"><div class=\"ttname\"><a href=\"a01221.html#a2f39a072765ebdc9d4d2b4289685b815\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::~GLComputeEvaluator</a></div><div class=\"ttdeci\">~GLComputeEvaluator()</div><div class=\"ttdoc\">Destructor. note that the GL context must be made current.</div></div>\n+<div class=\"ttc\" id=\"aa01221_html_a35609a9d5a1b087bd675035d710dc688\"><div class=\"ttname\"><a href=\"a01221.html#a35609a9d5a1b087bd675035d710dc688\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::EvalPatches</a></div><div class=\"ttdeci\">bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable) const</div><div class=\"ttdoc\">Generic limit eval function with derivatives. This function has a same signature as other device kern...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l01071\">glComputeEvaluator.h:1071</a></div></div>\n+<div class=\"ttc\" id=\"aa01221_html_a4290a43277fbcd7d5f55aaa369939e54\"><div class=\"ttname\"><a href=\"a01221.html#a4290a43277fbcd7d5f55aaa369939e54\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, STENCIL_TABLE const *stencilTable, GLComputeEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic static stencil function. This function has a same signature as other device kernels have so t...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00236\">glComputeEvaluator.h:236</a></div></div>\n+<div class=\"ttc\" id=\"aa01221_html_a54b949bb4819f61594334e599194f224\"><div class=\"ttname\"><a href=\"a01221.html#a54b949bb4819f61594334e599194f224\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::EvalStencils</a></div><div class=\"ttdeci\">bool EvalStencils(GLuint srcBuffer, BufferDescriptor const &amp;srcDesc, GLuint dstBuffer, BufferDescriptor const &amp;dstDesc, GLuint duBuffer, BufferDescriptor const &amp;duDesc, GLuint dvBuffer, BufferDescriptor const &amp;dvDesc, GLuint duuBuffer, BufferDescriptor const &amp;duuDesc, GLuint duvBuffer, BufferDescriptor const &amp;duvDesc, GLuint dvvBuffer, BufferDescriptor const &amp;dvvDesc, GLuint sizesBuffer, GLuint offsetsBuffer, GLuint indicesBuffer, GLuint weightsBuffer, GLuint duWeightsBuffer, GLuint dvWeightsBuffer, GLuint duuWeightsBuffer, GLuint duvWeightsBuffer, GLuint dvvWeightsBuffer, int start, int end) const</div><div class=\"ttdoc\">Dispatch the GLSL compute kernel on GPU asynchronously returns false if the kernel hasn't been compil...</div></div>\n+<div class=\"ttc\" id=\"aa01221_html_a5a332778562ac0aaa3b59e7d504329f6\"><div class=\"ttname\"><a href=\"a01221.html#a5a332778562ac0aaa3b59e7d504329f6\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, STENCIL_TABLE const *stencilTable, GLComputeEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic static stencil function. This function has a same signature as other device kernels have so t...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00168\">glComputeEvaluator.h:168</a></div></div>\n+<div class=\"ttc\" id=\"aa01221_html_a5e61f61981d7584a2297f249946bd445\"><div class=\"ttname\"><a href=\"a01221.html#a5e61f61981d7584a2297f249946bd445\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, GLComputeEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l01439\">glComputeEvaluator.h:1439</a></div></div>\n+<div class=\"ttc\" id=\"aa01221_html_a6a85616578cd5275f4a1d69f6db5ad3b\"><div class=\"ttname\"><a href=\"a01221.html#a6a85616578cd5275f4a1d69f6db5ad3b\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, GLComputeEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00769\">glComputeEvaluator.h:769</a></div></div>\n+<div class=\"ttc\" id=\"aa01221_html_a719692669b13f988a0f61f4beacd79bb\"><div class=\"ttname\"><a href=\"a01221.html#a719692669b13f988a0f61f4beacd79bb\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel, GLComputeEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l01903\">glComputeEvaluator.h:1903</a></div></div>\n+<div class=\"ttc\" id=\"aa01221_html_a7a65272357856989d99d800900d53e85\"><div class=\"ttname\"><a href=\"a01221.html#a7a65272357856989d99d800900d53e85\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable) const</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l01544\">glComputeEvaluator.h:1544</a></div></div>\n+<div class=\"ttc\" id=\"aa01221_html_a8736b15a3afb5b221ed009b19503e063\"><div class=\"ttname\"><a href=\"a01221.html#a8736b15a3afb5b221ed009b19503e063\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel=0) const</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l01816\">glComputeEvaluator.h:1816</a></div></div>\n+<div class=\"ttc\" id=\"aa01221_html_a96616cfe920c027568e2ae931b3ba506\"><div class=\"ttname\"><a href=\"a01221.html#a96616cfe920c027568e2ae931b3ba506\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::EvalPatches</a></div><div class=\"ttdeci\">bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable) const</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00943\">glComputeEvaluator.h:943</a></div></div>\n+<div class=\"ttc\" id=\"aa01221_html_a9fe54ab76e32fb2dc6f7cd631ce2e678\"><div class=\"ttname\"><a href=\"a01221.html#a9fe54ab76e32fb2dc6f7cd631ce2e678\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::GLComputeEvaluator</a></div><div class=\"ttdeci\">GLComputeEvaluator()</div><div class=\"ttdoc\">Constructor.</div></div>\n+<div class=\"ttc\" id=\"aa01221_html_aa28dc7f2bd31f1cdac0013ad9de8f434\"><div class=\"ttname\"><a href=\"a01221.html#aa28dc7f2bd31f1cdac0013ad9de8f434\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::EvalPatches</a></div><div class=\"ttdeci\">bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable) const</div><div class=\"ttdoc\">Generic limit eval function with derivatives. This function has a same signature as other device kern...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00997\">glComputeEvaluator.h:997</a></div></div>\n+<div class=\"ttc\" id=\"aa01221_html_aa6e408cc03b3625bb31a2822075bd87c\"><div class=\"ttname\"><a href=\"a01221.html#aa6e408cc03b3625bb31a2822075bd87c\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, GLComputeEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00691\">glComputeEvaluator.h:691</a></div></div>\n+<div class=\"ttc\" id=\"aa01221_html_aab4ecc7e79b822b8994b326cc05ad573\"><div class=\"ttname\"><a href=\"a01221.html#aab4ecc7e79b822b8994b326cc05ad573\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::EvalStencils</a></div><div class=\"ttdeci\">bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, STENCIL_TABLE const *stencilTable) const</div><div class=\"ttdoc\">Generic stencil function.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00386\">glComputeEvaluator.h:386</a></div></div>\n+<div class=\"ttc\" id=\"aa01221_html_aac8b4b814219420a124f8a92c96fd026\"><div class=\"ttname\"><a href=\"a01221.html#aac8b4b814219420a124f8a92c96fd026\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::EvalPatches</a></div><div class=\"ttdeci\">bool EvalPatches(GLuint srcBuffer, BufferDescriptor const &amp;srcDesc, GLuint dstBuffer, BufferDescriptor const &amp;dstDesc, GLuint duBuffer, BufferDescriptor const &amp;duDesc, GLuint dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, GLuint patchCoordsBuffer, const PatchArrayVector &amp;patchArrays, GLuint patchIndexBuffer, GLuint patchParamsBuffer) const</div></div>\n+<div class=\"ttc\" id=\"aa01221_html_ab0a4a9c408bc2a690d879cc7c2ffd21c\"><div class=\"ttname\"><a href=\"a01221.html#ab0a4a9c408bc2a690d879cc7c2ffd21c\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel=0) const</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l02011\">glComputeEvaluator.h:2011</a></div></div>\n+<div class=\"ttc\" id=\"aa01221_html_ab4c3cfbc05a1b3c7e08aac8258e38139\"><div class=\"ttname\"><a href=\"a01221.html#ab4c3cfbc05a1b3c7e08aac8258e38139\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::Create</a></div><div class=\"ttdeci\">static GLComputeEvaluator * Create(BufferDescriptor const &amp;srcDesc, BufferDescriptor const &amp;dstDesc, BufferDescriptor const &amp;duDesc, BufferDescriptor const &amp;dvDesc, void *deviceContext=NULL)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00099\">glComputeEvaluator.h:99</a></div></div>\n+<div class=\"ttc\" id=\"aa01221_html_ab8d69b17b91e3066aaa7dad2d38691de\"><div class=\"ttname\"><a href=\"a01221.html#ab8d69b17b91e3066aaa7dad2d38691de\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::EvalStencils</a></div><div class=\"ttdeci\">bool EvalStencils(GLuint srcBuffer, BufferDescriptor const &amp;srcDesc, GLuint dstBuffer, BufferDescriptor const &amp;dstDesc, GLuint duBuffer, BufferDescriptor const &amp;duDesc, GLuint dvBuffer, BufferDescriptor const &amp;dvDesc, GLuint sizesBuffer, GLuint offsetsBuffer, GLuint indicesBuffer, GLuint weightsBuffer, GLuint duWeightsBuffer, GLuint dvWeightsBuffer, int start, int end) const</div><div class=\"ttdoc\">Dispatch the GLSL compute kernel on GPU asynchronously returns false if the kernel hasn't been compil...</div></div>\n+<div class=\"ttc\" id=\"aa01221_html_ab914d6c888b41d82916edf17e35d5fbe\"><div class=\"ttname\"><a href=\"a01221.html#ab914d6c888b41d82916edf17e35d5fbe\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, STENCIL_TABLE const *stencilTable, GLComputeEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic static stencil function. This function has a same signature as other device kernels have so t...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00326\">glComputeEvaluator.h:326</a></div></div>\n+<div class=\"ttc\" id=\"aa01221_html_ac6c93ad38a7902d0e5ec28ff3bf9e52e\"><div class=\"ttname\"><a href=\"a01221.html#ac6c93ad38a7902d0e5ec28ff3bf9e52e\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::Synchronize</a></div><div class=\"ttdeci\">static void Synchronize(void *deviceContext)</div><div class=\"ttdoc\">Wait the dispatched kernel finishes.</div></div>\n+<div class=\"ttc\" id=\"aa01221_html_ade1086349c1a452f60bcf281383ceec2\"><div class=\"ttname\"><a href=\"a01221.html#ade1086349c1a452f60bcf281383ceec2\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::Compile</a></div><div class=\"ttdeci\">bool Compile(BufferDescriptor const &amp;srcDesc, BufferDescriptor const &amp;dstDesc, BufferDescriptor const &amp;duDesc=BufferDescriptor(), BufferDescriptor const &amp;dvDesc=BufferDescriptor(), BufferDescriptor const &amp;duuDesc=BufferDescriptor(), BufferDescriptor const &amp;duvDesc=BufferDescriptor(), BufferDescriptor const &amp;dvvDesc=BufferDescriptor())</div></div>\n+<div class=\"ttc\" id=\"aa01221_html_ae642c88c8896d4d55b1876757197b1cc\"><div class=\"ttname\"><a href=\"a01221.html#ae642c88c8896d4d55b1876757197b1cc\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable) const</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l01355\">glComputeEvaluator.h:1355</a></div></div>\n+<div class=\"ttc\" id=\"aa01221_html_aeeb1dfce13c31a0b2af5f68091c85352\"><div class=\"ttname\"><a href=\"a01221.html#aeeb1dfce13c31a0b2af5f68091c85352\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::Create</a></div><div class=\"ttdeci\">static GLComputeEvaluator * Create(BufferDescriptor const &amp;srcDesc, BufferDescriptor const &amp;dstDesc, BufferDescriptor const &amp;duDesc, BufferDescriptor const &amp;dvDesc, BufferDescriptor const &amp;duuDesc, BufferDescriptor const &amp;duvDesc, BufferDescriptor const &amp;dvvDesc, void *deviceContext=NULL)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00111\">glComputeEvaluator.h:111</a></div></div>\n+<div class=\"ttc\" id=\"aa01221_html_af7d3e4db03873d8c0d5da1d2c53f979e\"><div class=\"ttname\"><a href=\"a01221.html#af7d3e4db03873d8c0d5da1d2c53f979e\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel=0) const</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l01669\">glComputeEvaluator.h:1669</a></div></div>\n+<div class=\"ttc\" id=\"aa01221_html_af806842b89f37a3cd5e153ed67c926ec\"><div class=\"ttname\"><a href=\"a01221.html#af806842b89f37a3cd5e153ed67c926ec\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, GLComputeEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00870\">glComputeEvaluator.h:870</a></div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7f420b72a822828cfa8b0561c695a5cc.html\">far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00752.html\">stencilTableFactory.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00752.html\">glComputeEvaluator.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-stencilTableFactory.h\n+glComputeEvaluator.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2013 Pixar\n+2// Copyright 2015 Pixar\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -24,497 +24,1359 @@\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n 24\n-25#ifndef OPENSUBDIV3_FAR_STENCILTABLE_FACTORY_H\n-26#define OPENSUBDIV3_FAR_STENCILTABLE_FACTORY_H\n+25#ifndef OPENSUBDIV3_OSD_GL_COMPUTE_EVALUATOR_H\n+26#define OPENSUBDIV3_OSD_GL_COMPUTE_EVALUATOR_H\n 27\n 28#include \"../version.h\"\n 29\n-30#include \"../far/patchTable.h\"\n-31\n-32#include <vector>\n+30#include \"../osd/opengl.h\"\n+31#include \"../osd/types.h\"\n+32#include \"../osd/bufferDescriptor.h\"\n 33\n 34namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n 35namespace OPENSUBDIV_VERSION {\n 36\n 37namespace Far {\n-38\n-39class TopologyRefiner;\n-40\n-41template <typename REAL> class StencilReal;\n-42template <typename REAL> class StencilTableReal;\n-43\n-44template <typename REAL> class LimitStencilReal;\n-45template <typename REAL> class LimitStencilTableReal;\n-46\n-47\n-50template <typename REAL>\n-_\b5_\b1class _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl {\n-52\n-53public:\n-54\n-_\b5_\b5 enum _\bM_\bo_\bd_\be {\n-_\b5_\b6 _\bI_\bN_\bT_\bE_\bR_\bP_\bO_\bL_\bA_\bT_\bE_\b__\bV_\bE_\bR_\bT_\bE_\bX=0,\n-_\b5_\b7 _\bI_\bN_\bT_\bE_\bR_\bP_\bO_\bL_\bA_\bT_\bE_\b__\bV_\bA_\bR_\bY_\bI_\bN_\bG,\n-58 _\bI_\bN_\bT_\bE_\bR_\bP_\bO_\bL_\bA_\bT_\bE_\b__\bF_\bA_\bC_\bE_\b__\bV_\bA_\bR_\bY_\bI_\bN_\bG\n-_\b5_\b9 };\n-60\n-_\b6_\b1 struct _\bO_\bp_\bt_\bi_\bo_\bn_\bs {\n-62\n-_\b6_\b3 _\bO_\bp_\bt_\bi_\bo_\bn_\bs() : _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bM_\bo_\bd_\be(_\bI_\bN_\bT_\bE_\bR_\bP_\bO_\bL_\bA_\bT_\bE_\b__\bV_\bE_\bR_\bT_\bE_\bX),\n-64 _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bO_\bf_\bf_\bs_\be_\bt_\bs(false),\n-65 _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bV_\be_\br_\bt_\bs(false),\n-66 _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bI_\bn_\bt_\be_\br_\bm_\be_\bd_\bi_\ba_\bt_\be_\bL_\be_\bv_\be_\bl_\bs(true),\n-67 _\bf_\ba_\bc_\bt_\bo_\br_\bi_\bz_\be_\bI_\bn_\bt_\be_\br_\bm_\be_\bd_\bi_\ba_\bt_\be_\bL_\be_\bv_\be_\bl_\bs(true),\n-68 _\bm_\ba_\bx_\bL_\be_\bv_\be_\bl(10),\n-69 _\bf_\bv_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl(0) { }\n-70\n-_\b7_\b1 unsigned int _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bM_\bo_\bd_\be : 2,\n-_\b7_\b2 _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bO_\bf_\bf_\bs_\be_\bt_\bs : 1,\n-_\b7_\b3 _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bV_\be_\br_\bt_\bs : 1,\n-_\b7_\b4 _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bI_\bn_\bt_\be_\br_\bm_\be_\bd_\bi_\ba_\bt_\be_\bL_\be_\bv_\be_\bl_\bs : 1,\n-_\b7_\b5 _\bf_\ba_\bc_\bt_\bo_\br_\bi_\bz_\be_\bI_\bn_\bt_\be_\br_\bm_\be_\bd_\bi_\ba_\bt_\be_\bL_\be_\bv_\be_\bl_\bs : 1,\n-_\b7_\b8 _\bm_\ba_\bx_\bL_\be_\bv_\be_\bl : 4;\n-_\b7_\b9 unsigned int _\bf_\bv_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl;\n-81 };\n-82\n-_\b9_\b4 static _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b> const * _\bC_\br_\be_\ba_\bt_\be(\n-95 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const & refiner, _\bO_\bp_\bt_\bi_\bo_\bn_\bs options = _\bO_\bp_\bt_\bi_\bo_\bn_\bs());\n-96\n-97\n-_\b1_\b1_\b0 static _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b> const * _\bC_\br_\be_\ba_\bt_\be(\n-111 int numTables, _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b> const ** tables);\n-112\n-113\n-_\b1_\b2_\b8 static _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b> const * _\bA_\bp_\bp_\be_\bn_\bd_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(\n-129 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const &refiner,\n-130 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b> const *baseStencilTable,\n-131 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b> const *localPointStencilTable,\n-132 bool factorize = true);\n+38 class PatchTable;\n+39 class StencilTable;\n+40 class LimitStencilTable;\n+41}\n+42\n+43namespace Osd {\n+44\n+_\b5_\b1class _\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bS_\bS_\bB_\bO {\n+52public:\n+_\b5_\b3 static _\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bS_\bS_\bB_\bO *_\bC_\br_\be_\ba_\bt_\be(_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *stencilTable,\n+54 void *deviceContext = NULL) {\n+55 (void)deviceContext; // unused\n+56 return new _\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bS_\bS_\bB_\bO(stencilTable);\n+57 }\n+_\b5_\b8 static _\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bS_\bS_\bB_\bO *_\bC_\br_\be_\ba_\bt_\be(\n+59 _\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *limitStencilTable,\n+60 void *deviceContext = NULL) {\n+61 (void)deviceContext; // unused\n+62 return new _\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bS_\bS_\bB_\bO(limitStencilTable);\n+63 }\n+64\n+_\b6_\b5 explicit _\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bS_\bS_\bB_\bO(_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *stencilTable);\n+_\b6_\b6 explicit _\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bS_\bS_\bB_\bO(_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const\n+*limitStencilTable);\n+_\b6_\b7 _\b~_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bS_\bS_\bB_\bO();\n+68\n+69 // interfaces needed for GLSLComputeKernel\n+_\b7_\b0 GLuint _\bG_\be_\bt_\bS_\bi_\bz_\be_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _sizes; }\n+_\b7_\b1 GLuint _\bG_\be_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _offsets; }\n+_\b7_\b2 GLuint _\bG_\be_\bt_\bI_\bn_\bd_\bi_\bc_\be_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _indices; }\n+_\b7_\b3 GLuint _\bG_\be_\bt_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _weights; }\n+_\b7_\b4 GLuint _\bG_\be_\bt_\bD_\bu_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _duWeights; }\n+_\b7_\b5 GLuint _\bG_\be_\bt_\bD_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _dvWeights; }\n+_\b7_\b6 GLuint _\bG_\be_\bt_\bD_\bu_\bu_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _duuWeights; }\n+_\b7_\b7 GLuint _\bG_\be_\bt_\bD_\bu_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _duvWeights; }\n+_\b7_\b8 GLuint _\bG_\be_\bt_\bD_\bv_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _dvvWeights; }\n+_\b7_\b9 int _\bG_\be_\bt_\bN_\bu_\bm_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs() const { return _numStencils; }\n+80\n+81private:\n+82 GLuint _sizes;\n+83 GLuint _offsets;\n+84 GLuint _indices;\n+85 GLuint _weights;\n+86 GLuint _duWeights;\n+87 GLuint _dvWeights;\n+88 GLuint _duuWeights;\n+89 GLuint _duvWeights;\n+90 GLuint _dvvWeights;\n+91 int _numStencils;\n+92};\n+93\n+94// --------------------------------------------------------------------------\n+-\n+95\n+_\b9_\b6class _\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br {\n+97public:\n+_\b9_\b8 typedef bool _\bI_\bn_\bs_\bt_\ba_\bn_\bt_\bi_\ba_\bt_\ba_\bb_\bl_\be;\n+_\b9_\b9 static _\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br * _\bC_\br_\be_\ba_\bt_\be(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+100 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+101 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+102 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+103 void * deviceContext = NULL) {\n+104 return _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc, duDesc, dvDesc,\n+105 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+106 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+107 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+108 deviceContext);\n+109 }\n+110\n+_\b1_\b1_\b1 static _\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br * _\bC_\br_\be_\ba_\bt_\be(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+112 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+113 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+114 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+115 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+116 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+117 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+118 void * deviceContext = NULL) {\n+119 (void)deviceContext; // not used\n+120 _\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br *instance = new _\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br();\n+121 if (instance->_\bC_\bo_\bm_\bp_\bi_\bl_\be(srcDesc, dstDesc, duDesc, dvDesc,\n+122 duuDesc, duvDesc, dvvDesc))\n+123 return instance;\n+124 delete instance;\n+125 return NULL;\n+126 }\n+127\n+_\b1_\b2_\b9 _\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br();\n+130\n+_\b1_\b3_\b2 _\b~_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br();\n 133\n-_\b1_\b4_\b8 static _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b> const * _\bA_\bp_\bp_\be_\bn_\bd_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-149 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const &refiner,\n-150 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b> const *baseStencilTable,\n-151 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b> const *localPointStencilTable,\n-152 bool factorize = true) {\n-153 return _\bA_\bp_\bp_\be_\bn_\bd_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(\n-154 refiner, baseStencilTable, localPointStencilTable, factorize);\n-155 }\n-156\n-_\b1_\b7_\b4 static _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b> const *\n-_\bA_\bp_\bp_\be_\bn_\bd_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-175 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const &refiner,\n-176 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b> const *baseStencilTable,\n-177 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b> const *localPointStencilTable,\n-178 int channel = 0,\n-179 bool factorize = true);\n-180\n-181private:\n-182\n-183 // Generate stencils for the coarse control-vertices (single weight = 1.0f)\n-184 static void generateControlVertStencils(\n-185 int numControlVerts,\n-186 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b> & dst);\n-187\n-188 // Internal method to splice local point stencils\n-189 static _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b> const * appendLocalPointStencilTable(\n-190 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const &refiner,\n-191 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b> const * baseStencilTable,\n-192 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b> const * localPointStencilTable,\n-193 int channel,\n-194 bool factorize);\n-195};\n-196\n-208template <typename REAL>\n-_\b2_\b0_\b9class _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl {\n-210\n-211public:\n-212\n-_\b2_\b1_\b3 enum _\bM_\bo_\bd_\be {\n-_\b2_\b1_\b4 _\bI_\bN_\bT_\bE_\bR_\bP_\bO_\bL_\bA_\bT_\bE_\b__\bV_\bE_\bR_\bT_\bE_\bX=0,\n-_\b2_\b1_\b5 _\bI_\bN_\bT_\bE_\bR_\bP_\bO_\bL_\bA_\bT_\bE_\b__\bV_\bA_\bR_\bY_\bI_\bN_\bG,\n-216 _\bI_\bN_\bT_\bE_\bR_\bP_\bO_\bL_\bA_\bT_\bE_\b__\bF_\bA_\bC_\bE_\b__\bV_\bA_\bR_\bY_\bI_\bN_\bG\n-_\b2_\b1_\b7 };\n-218\n-_\b2_\b1_\b9 struct _\bO_\bp_\bt_\bi_\bo_\bn_\bs {\n-220\n-_\b2_\b2_\b1 _\bO_\bp_\bt_\bi_\bo_\bn_\bs() : _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bM_\bo_\bd_\be(_\bI_\bN_\bT_\bE_\bR_\bP_\bO_\bL_\bA_\bT_\bE_\b__\bV_\bE_\bR_\bT_\bE_\bX),\n-222 _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\b1_\bs_\bt_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs(true),\n-223 _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\b2_\bn_\bd_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs(false),\n-224 _\bf_\bv_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl(0) { }\n-225\n-_\b2_\b2_\b6 unsigned int _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bM_\bo_\bd_\be : 2,\n-_\b2_\b2_\b7 _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\b1_\bs_\bt_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs : 1,\n-_\b2_\b2_\b8 _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\b2_\bn_\bd_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs : 1;\n-_\b2_\b2_\b9 unsigned int _\bf_\bv_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl;\n-230 };\n-231\n-_\b2_\b3_\b3 struct _\bL_\bo_\bc_\ba_\bt_\bi_\bo_\bn_\bA_\br_\br_\ba_\by {\n-234\n-_\b2_\b3_\b5 _\bL_\bo_\bc_\ba_\bt_\bi_\bo_\bn_\bA_\br_\br_\ba_\by() : _\bp_\bt_\be_\bx_\bI_\bd_\bx(-1), _\bn_\bu_\bm_\bL_\bo_\bc_\ba_\bt_\bi_\bo_\bn_\bs(0), _\bs(0), _\bt(0) { }\n-236\n-_\b2_\b3_\b7 int _\bp_\bt_\be_\bx_\bI_\bd_\bx,\n-_\b2_\b3_\b8 _\bn_\bu_\bm_\bL_\bo_\bc_\ba_\bt_\bi_\bo_\bn_\bs;\n-239\n-_\b2_\b4_\b0 REAL const * _\bs,\n-_\b2_\b4_\b1 * _\bt;\n-242 };\n-243\n-_\b2_\b4_\b4 typedef std::vector<LocationArray> _\bL_\bo_\bc_\ba_\bt_\bi_\bo_\bn_\bA_\br_\br_\ba_\by_\bV_\be_\bc;\n-245\n-_\b2_\b6_\b9 static _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b> const * _\bC_\br_\be_\ba_\bt_\be(\n-270 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const & refiner,\n-271 _\bL_\bo_\bc_\ba_\bt_\bi_\bo_\bn_\bA_\br_\br_\ba_\by_\bV_\be_\bc const & locationArrays,\n-272 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b> const * cvStencils = 0,\n-273 _\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be const * patchTable = 0,\n-274 _\bO_\bp_\bt_\bi_\bo_\bn_\bs options = _\bO_\bp_\bt_\bi_\bo_\bn_\bs());\n-275\n-276};\n-277\n-278\n-279//\n-280// Public wrapper classes for the templates\n-281//\n-282class _\bS_\bt_\be_\bn_\bc_\bi_\bl;\n-283class _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be;\n-284\n-_\b2_\b8_\b7class _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by : public _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl<float> {\n-288private:\n-289 typedef _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b<_\bf_\bl_\bo_\ba_\bt_\b> _\bB_\ba_\bs_\be_\bF_\ba_\bc_\bt_\bo_\br_\by;\n-290 typedef _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bf_\bl_\bo_\ba_\bt_\b> _\bB_\ba_\bs_\be_\bT_\ba_\bb_\bl_\be;\n-291\n-292public:\n-_\b2_\b9_\b3 static _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const * _\bC_\br_\be_\ba_\bt_\be(\n-294 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const & refiner, Options options = Options()) {\n-295\n-296 return static_cast<_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *>(\n-297 _\bB_\ba_\bs_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\br_\be_\ba_\bt_\be(refiner, options));\n-298 }\n-299\n-_\b3_\b0_\b0 static _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const * _\bC_\br_\be_\ba_\bt_\be(\n-301 int numTables, _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const ** tables) {\n-302\n-303 return static_cast<_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *>(\n-304 _\bB_\ba_\bs_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\br_\be_\ba_\bt_\be(numTables,\n-305 reinterpret_cast<_\bB_\ba_\bs_\be_\bT_\ba_\bb_\bl_\be const **>(tables)));\n-306 }\n-307\n-_\b3_\b0_\b8 static _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const * _\bA_\bp_\bp_\be_\bn_\bd_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(\n-309 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const &refiner,\n-310 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *baseStencilTable,\n-311 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *localPointStencilTable,\n-312 bool factorize = true) {\n-313\n-314 return static_cast<_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *>(\n-315 _\bB_\ba_\bs_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bA_\bp_\bp_\be_\bn_\bd_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(refiner,\n-316 static_cast<_\bB_\ba_\bs_\be_\bT_\ba_\bb_\bl_\be const *>(baseStencilTable),\n-317 static_cast<_\bB_\ba_\bs_\be_\bT_\ba_\bb_\bl_\be const *>(localPointStencilTable),\n-318 factorize));\n-319 }\n-320\n-_\b3_\b2_\b1 static _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const * _\bA_\bp_\bp_\be_\bn_\bd_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-322 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const &refiner,\n-323 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *baseStencilTable,\n-324 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *localPointStencilTable,\n-325 bool factorize = true) {\n-326\n-327 return static_cast<_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *>(\n-328 _\bB_\ba_\bs_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bA_\bp_\bp_\be_\bn_\bd_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(refiner,\n-329 static_cast<_\bB_\ba_\bs_\be_\bT_\ba_\bb_\bl_\be const *>(baseStencilTable),\n-330 static_cast<_\bB_\ba_\bs_\be_\bT_\ba_\bb_\bl_\be const *>(localPointStencilTable),\n-331 factorize));\n-332 }\n-333\n-_\b3_\b3_\b4 static _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const * _\bA_\bp_\bp_\be_\bn_\bd_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-335 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const &refiner,\n-336 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *baseStencilTable,\n-337 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *localPointStencilTable,\n-338 int channel = 0,\n-339 bool factorize = true) {\n-340\n-341 return static_cast<_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *>(\n-342 _\bB_\ba_\bs_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bA_\bp_\bp_\be_\bn_\bd_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(refiner,\n-343 static_cast<_\bB_\ba_\bs_\be_\bT_\ba_\bb_\bl_\be const *>(baseStencilTable),\n-344 static_cast<_\bB_\ba_\bs_\be_\bT_\ba_\bb_\bl_\be const *>(localPointStencilTable),\n-345 channel, factorize));\n-346 }\n-347};\n-348\n-349class LimitStencil;\n-350class LimitStencilTable;\n-351\n-_\b3_\b5_\b4class _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by : public _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl<float>\n-{\n-355private:\n-356 typedef _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b<_\bf_\bl_\bo_\ba_\bt_\b> _\bB_\ba_\bs_\be_\bF_\ba_\bc_\bt_\bo_\br_\by;\n-357 typedef _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bf_\bl_\bo_\ba_\bt_\b> _\bB_\ba_\bs_\be_\bT_\ba_\bb_\bl_\be;\n-358\n-359public:\n-_\b3_\b6_\b0 static _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const * _\bC_\br_\be_\ba_\bt_\be(\n-361 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const & refiner,\n-362 _\bL_\bo_\bc_\ba_\bt_\bi_\bo_\bn_\bA_\br_\br_\ba_\by_\bV_\be_\bc const & locationArrays,\n-363 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const * cvStencils = 0,\n-364 _\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be const * patchTable = 0,\n-365 Options options = Options()) {\n-366\n-367 return static_cast<_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *>(\n-368 _\bB_\ba_\bs_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\br_\be_\ba_\bt_\be(\n-369 refiner,\n-370 locationArrays,\n-371 static_cast<_\bB_\ba_\bs_\be_\bT_\ba_\bb_\bl_\be const *>(cvStencils),\n-372 patchTable,\n-373 options));\n-374 }\n-375};\n-376\n-377} // end namespace Far\n-378\n-379} // end namespace OPENSUBDIV_VERSION\n-380using namespace OPENSUBDIV_VERSION;\n-381\n-382} // end namespace OpenSubdiv\n-383\n-384#endif // OPENSUBDIV3_FAR_STENCILTABLE_FACTORY_H\n+139\n+167 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n+_\b1_\b6_\b8 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n+169 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+170 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+171 STENCIL_TABLE const *stencilTable,\n+172 _\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n+173 void * deviceContext = NULL) {\n+174\n+175 if (instance) {\n+176 return instance->_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer, srcDesc,\n+177 dstBuffer, dstDesc,\n+178 stencilTable);\n+179 } else {\n+180 // Create an instance on demand (slow)\n+181 (void)deviceContext; // unused\n+182 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n+183 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+184 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br());\n+185 if (instance) {\n+186 bool r = instance->_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer, srcDesc,\n+187 dstBuffer, dstDesc,\n+188 stencilTable);\n+189 delete instance;\n+190 return r;\n+191 }\n+192 return false;\n+193 }\n+194 }\n+195\n+235 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n+_\b2_\b3_\b6 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n+237 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+238 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+239 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+240 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+241 STENCIL_TABLE const *stencilTable,\n+242 _\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n+243 void * deviceContext = NULL) {\n+244\n+245 if (instance) {\n+246 return instance->_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer, srcDesc,\n+247 dstBuffer, dstDesc,\n+248 duBuffer, duDesc,\n+249 dvBuffer, dvDesc,\n+250 stencilTable);\n+251 } else {\n+252 // Create an instance on demand (slow)\n+253 (void)deviceContext; // unused\n+254 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc, duDesc, dvDesc);\n+255 if (instance) {\n+256 bool r = instance->_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer, srcDesc,\n+257 dstBuffer, dstDesc,\n+258 duBuffer, duDesc,\n+259 dvBuffer, dvDesc,\n+260 stencilTable);\n+261 delete instance;\n+262 return r;\n+263 }\n+264 return false;\n+265 }\n+266 }\n+267\n+325 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n+_\b3_\b2_\b6 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n+327 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+328 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+329 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+330 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+331 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+332 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+333 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+334 STENCIL_TABLE const *stencilTable,\n+335 _\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n+336 void * deviceContext = NULL) {\n+337\n+338 if (instance) {\n+339 return instance->_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer, srcDesc,\n+340 dstBuffer, dstDesc,\n+341 duBuffer, duDesc,\n+342 dvBuffer, dvDesc,\n+343 duuBuffer, duuDesc,\n+344 duvBuffer, duvDesc,\n+345 dvvBuffer, dvvDesc,\n+346 stencilTable);\n+347 } else {\n+348 // Create an instance on demand (slow)\n+349 (void)deviceContext; // unused\n+350 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc, duDesc, dvDesc,\n+351 duuDesc, duvDesc, dvvDesc);\n+352 if (instance) {\n+353 bool r = instance->_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer, srcDesc,\n+354 dstBuffer, dstDesc,\n+355 duBuffer, duDesc,\n+356 dvBuffer, dvDesc,\n+357 duuBuffer, duuDesc,\n+358 duvBuffer, duvDesc,\n+359 dvvBuffer, dvvDesc,\n+360 stencilTable);\n+361 delete instance;\n+362 return r;\n+363 }\n+364 return false;\n+365 }\n+366 }\n+367\n+385 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n+_\b3_\b8_\b6 bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n+387 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+388 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+389 STENCIL_TABLE const *stencilTable) const {\n+390 return _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer->BindVBO(), srcDesc,\n+391 dstBuffer->BindVBO(), dstDesc,\n+392 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+393 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+394 stencilTable->GetSizesBuffer(),\n+395 stencilTable->GetOffsetsBuffer(),\n+396 stencilTable->GetIndicesBuffer(),\n+397 stencilTable->GetWeightsBuffer(),\n+398 0,\n+399 0,\n+400 /* start = */ 0,\n+401 /* end = */ stencilTable->GetNumStencils());\n+402 }\n+403\n+433 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n+_\b4_\b3_\b4 bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n+435 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+436 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+437 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+438 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+439 STENCIL_TABLE const *stencilTable) const {\n+440 return _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer->BindVBO(), srcDesc,\n+441 dstBuffer->BindVBO(), dstDesc,\n+442 duBuffer->BindVBO(), duDesc,\n+443 dvBuffer->BindVBO(), dvDesc,\n+444 stencilTable->GetSizesBuffer(),\n+445 stencilTable->GetOffsetsBuffer(),\n+446 stencilTable->GetIndicesBuffer(),\n+447 stencilTable->GetWeightsBuffer(),\n+448 stencilTable->GetDuWeightsBuffer(),\n+449 stencilTable->GetDvWeightsBuffer(),\n+450 /* start = */ 0,\n+451 /* end = */ stencilTable->GetNumStencils());\n+452 }\n+453\n+501 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n+_\b5_\b0_\b2 bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n+503 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+504 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+505 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+506 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+507 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+508 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+509 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+510 STENCIL_TABLE const *stencilTable) const {\n+511 return _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer->BindVBO(), srcDesc,\n+512 dstBuffer->BindVBO(), dstDesc,\n+513 duBuffer->BindVBO(), duDesc,\n+514 dvBuffer->BindVBO(), dvDesc,\n+515 duuBuffer->BindVBO(), duuDesc,\n+516 duvBuffer->BindVBO(), duvDesc,\n+517 dvvBuffer->BindVBO(), dvvDesc,\n+518 stencilTable->GetSizesBuffer(),\n+519 stencilTable->GetOffsetsBuffer(),\n+520 stencilTable->GetIndicesBuffer(),\n+521 stencilTable->GetWeightsBuffer(),\n+522 stencilTable->GetDuWeightsBuffer(),\n+523 stencilTable->GetDvWeightsBuffer(),\n+524 stencilTable->GetDuuWeightsBuffer(),\n+525 stencilTable->GetDuvWeightsBuffer(),\n+526 stencilTable->GetDvvWeightsBuffer(),\n+527 /* start = */ 0,\n+528 /* end = */ stencilTable->GetNumStencils());\n+529 }\n+530\n+_\b5_\b6_\b6 bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(GLuint srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+567 GLuint dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+568 GLuint duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+569 GLuint dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+570 GLuint sizesBuffer,\n+571 GLuint offsetsBuffer,\n+572 GLuint indicesBuffer,\n+573 GLuint weightsBuffer,\n+574 GLuint duWeightsBuffer,\n+575 GLuint dvWeightsBuffer,\n+576 int start,\n+577 int end) const;\n+578\n+_\b6_\b3_\b2 bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(GLuint srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+633 GLuint dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+634 GLuint duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+635 GLuint dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+636 GLuint duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+637 GLuint duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+638 GLuint dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+639 GLuint sizesBuffer,\n+640 GLuint offsetsBuffer,\n+641 GLuint indicesBuffer,\n+642 GLuint weightsBuffer,\n+643 GLuint duWeightsBuffer,\n+644 GLuint dvWeightsBuffer,\n+645 GLuint duuWeightsBuffer,\n+646 GLuint duvWeightsBuffer,\n+647 GLuint dvvWeightsBuffer,\n+648 int start,\n+649 int end) const;\n+650\n+656\n+689 template <typename SRC_BUFFER, typename DST_BUFFER,\n+690 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b6_\b9_\b1 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n+692 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+693 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+694 int numPatchCoords,\n+695 PATCHCOORD_BUFFER *patchCoords,\n+696 PATCH_TABLE *patchTable,\n+697 _\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n+698 void * deviceContext = NULL) {\n+699\n+700 if (instance) {\n+701 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer, srcDesc,\n+702 dstBuffer, dstDesc,\n+703 numPatchCoords, patchCoords,\n+704 patchTable);\n+705 } else {\n+706 // Create an instance on demand (slow)\n+707 (void)deviceContext; // unused\n+708 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n+709 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+710 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br());\n+711 if (instance) {\n+712 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer, srcDesc,\n+713 dstBuffer, dstDesc,\n+714 numPatchCoords, patchCoords,\n+715 patchTable);\n+716 delete instance;\n+717 return r;\n+718 }\n+719 return false;\n+720 }\n+721 }\n+722\n+767 template <typename SRC_BUFFER, typename DST_BUFFER,\n+768 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b7_\b6_\b9 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n+770 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+771 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+772 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+773 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+774 int numPatchCoords,\n+775 PATCHCOORD_BUFFER *patchCoords,\n+776 PATCH_TABLE *patchTable,\n+777 _\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n+778 void * deviceContext = NULL) {\n+779\n+780 if (instance) {\n+781 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer, srcDesc,\n+782 dstBuffer, dstDesc,\n+783 duBuffer, duDesc,\n+784 dvBuffer, dvDesc,\n+785 numPatchCoords, patchCoords,\n+786 patchTable);\n+787 } else {\n+788 // Create an instance on demand (slow)\n+789 (void)deviceContext; // unused\n+790 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n+791 duDesc, dvDesc);\n+792 if (instance) {\n+793 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer, srcDesc,\n+794 dstBuffer, dstDesc,\n+795 duBuffer, duDesc,\n+796 dvBuffer, dvDesc,\n+797 numPatchCoords, patchCoords,\n+798 patchTable);\n+799 delete instance;\n+800 return r;\n+801 }\n+802 return false;\n+803 }\n+804 }\n+805\n+868 template <typename SRC_BUFFER, typename DST_BUFFER,\n+869 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b8_\b7_\b0 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n+871 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+872 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+873 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+874 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+875 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+876 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+877 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+878 int numPatchCoords,\n+879 PATCHCOORD_BUFFER *patchCoords,\n+880 PATCH_TABLE *patchTable,\n+881 _\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n+882 void * deviceContext = NULL) {\n+883\n+884 if (instance) {\n+885 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer, srcDesc,\n+886 dstBuffer, dstDesc,\n+887 duBuffer, duDesc,\n+888 dvBuffer, dvDesc,\n+889 duuBuffer, duuDesc,\n+890 duvBuffer, duvDesc,\n+891 dvvBuffer, dvvDesc,\n+892 numPatchCoords, patchCoords,\n+893 patchTable);\n+894 } else {\n+895 // Create an instance on demand (slow)\n+896 (void)deviceContext; // unused\n+897 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n+898 duDesc, dvDesc,\n+899 duuDesc, duvDesc, dvvDesc);\n+900 if (instance) {\n+901 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer, srcDesc,\n+902 dstBuffer, dstDesc,\n+903 duBuffer, duDesc,\n+904 dvBuffer, dvDesc,\n+905 duuBuffer, duuDesc,\n+906 duvBuffer, duvDesc,\n+907 dvvBuffer, dvvDesc,\n+908 numPatchCoords, patchCoords,\n+909 patchTable);\n+910 delete instance;\n+911 return r;\n+912 }\n+913 return false;\n+914 }\n+915 }\n+916\n+941 template <typename SRC_BUFFER, typename DST_BUFFER,\n+942 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b9_\b4_\b3 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n+944 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+945 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+946 int numPatchCoords,\n+947 PATCHCOORD_BUFFER *patchCoords,\n+948 PATCH_TABLE *patchTable) const {\n+949\n+950 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindVBO(), srcDesc,\n+951 dstBuffer->BindVBO(), dstDesc,\n+952 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+953 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+954 numPatchCoords,\n+955 patchCoords->BindVBO(),\n+956 patchTable->GetPatchArrays(),\n+957 patchTable->GetPatchIndexBuffer(),\n+958 patchTable->GetPatchParamBuffer());\n+959 }\n+960\n+995 template <typename SRC_BUFFER, typename DST_BUFFER,\n+996 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b9_\b9_\b7 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n+998 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+999 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1000 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+1001 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+1002 int numPatchCoords,\n+1003 PATCHCOORD_BUFFER *patchCoords,\n+1004 PATCH_TABLE *patchTable) const {\n+1005\n+1006 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindVBO(), srcDesc,\n+1007 dstBuffer->BindVBO(), dstDesc,\n+1008 duBuffer->BindVBO(), duDesc,\n+1009 dvBuffer->BindVBO(), dvDesc,\n+1010 numPatchCoords,\n+1011 patchCoords->BindVBO(),\n+1012 patchTable->GetPatchArrays(),\n+1013 patchTable->GetPatchIndexBuffer(),\n+1014 patchTable->GetPatchParamBuffer());\n+1015 }\n+1016\n+1069 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1070 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b1_\b0_\b7_\b1 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n+1072 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1073 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1074 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+1075 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+1076 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+1077 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+1078 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+1079 int numPatchCoords,\n+1080 PATCHCOORD_BUFFER *patchCoords,\n+1081 PATCH_TABLE *patchTable) const {\n+1082\n+1083 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindVBO(), srcDesc,\n+1084 dstBuffer->BindVBO(), dstDesc,\n+1085 duBuffer->BindVBO(), duDesc,\n+1086 dvBuffer->BindVBO(), dvDesc,\n+1087 duuBuffer->BindVBO(), duuDesc,\n+1088 duvBuffer->BindVBO(), duvDesc,\n+1089 dvvBuffer->BindVBO(), dvvDesc,\n+1090 numPatchCoords,\n+1091 patchCoords->BindVBO(),\n+1092 patchTable->GetPatchArrays(),\n+1093 patchTable->GetPatchIndexBuffer(),\n+1094 patchTable->GetPatchParamBuffer());\n+1095 }\n+1096\n+_\b1_\b0_\b9_\b7 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(GLuint srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1098 GLuint dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1099 GLuint duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+1100 GLuint dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+1101 int numPatchCoords,\n+1102 GLuint patchCoordsBuffer,\n+1103 const _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\bc_\bt_\bo_\br &patchArrays,\n+1104 GLuint patchIndexBuffer,\n+1105 GLuint patchParamsBuffer) const;\n+1106\n+_\b1_\b1_\b0_\b7 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(GLuint srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1108 GLuint dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1109 GLuint duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+1110 GLuint dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+1111 GLuint duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+1112 GLuint duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+1113 GLuint dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+1114 int numPatchCoords,\n+1115 GLuint patchCoordsBuffer,\n+1116 const _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\bc_\bt_\bo_\br &patchArrays,\n+1117 GLuint patchIndexBuffer,\n+1118 GLuint patchParamsBuffer) const;\n+1119\n+1152 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1153 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b1_\b1_\b5_\b4 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1155 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1156 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1157 int numPatchCoords,\n+1158 PATCHCOORD_BUFFER *patchCoords,\n+1159 PATCH_TABLE *patchTable,\n+1160 _\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n+1161 void * deviceContext = NULL) {\n+1162\n+1163 if (instance) {\n+1164 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1165 srcBuffer, srcDesc,\n+1166 dstBuffer, dstDesc,\n+1167 numPatchCoords, patchCoords,\n+1168 patchTable);\n+1169 } else {\n+1170 // Create an instance on demand (slow)\n+1171 (void)deviceContext; // unused\n+1172 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n+1173 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+1174 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br());\n+1175 if (instance) {\n+1176 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1177 srcBuffer, srcDesc,\n+1178 dstBuffer, dstDesc,\n+1179 numPatchCoords, patchCoords,\n+1180 patchTable);\n+1181 delete instance;\n+1182 return r;\n+1183 }\n+1184 return false;\n+1185 }\n+1186 }\n+1187\n+1212 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1213 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b1_\b2_\b1_\b4 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1215 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1216 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1217 int numPatchCoords,\n+1218 PATCHCOORD_BUFFER *patchCoords,\n+1219 PATCH_TABLE *patchTable) const {\n+1220\n+1221 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindVBO(), srcDesc,\n+1222 dstBuffer->BindVBO(), dstDesc,\n+1223 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+1224 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+1225 numPatchCoords,\n+1226 patchCoords->BindVBO(),\n+1227 patchTable->GetVaryingPatchArrays(),\n+1228 patchTable->GetVaryingPatchIndexBuffer(),\n+1229 patchTable->GetPatchParamBuffer());\n+1230 }\n+1231\n+1276 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1277 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b1_\b2_\b7_\b8 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1279 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1280 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1281 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+1282 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+1283 int numPatchCoords,\n+1284 PATCHCOORD_BUFFER *patchCoords,\n+1285 PATCH_TABLE *patchTable,\n+1286 _\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n+1287 void * deviceContext = NULL) {\n+1288\n+1289 if (instance) {\n+1290 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1291 srcBuffer, srcDesc,\n+1292 dstBuffer, dstDesc,\n+1293 duBuffer, duDesc,\n+1294 dvBuffer, dvDesc,\n+1295 numPatchCoords, patchCoords,\n+1296 patchTable);\n+1297 } else {\n+1298 // Create an instance on demand (slow)\n+1299 (void)deviceContext; // unused\n+1300 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n+1301 duDesc, dvDesc);\n+1302 if (instance) {\n+1303 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1304 srcBuffer, srcDesc,\n+1305 dstBuffer, dstDesc,\n+1306 duBuffer, duDesc,\n+1307 dvBuffer, dvDesc,\n+1308 numPatchCoords, patchCoords,\n+1309 patchTable);\n+1310 delete instance;\n+1311 return r;\n+1312 }\n+1313 return false;\n+1314 }\n+1315 }\n+1316\n+1353 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1354 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b1_\b3_\b5_\b5 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1356 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1357 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1358 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+1359 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+1360 int numPatchCoords,\n+1361 PATCHCOORD_BUFFER *patchCoords,\n+1362 PATCH_TABLE *patchTable) const {\n+1363\n+1364 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindVBO(), srcDesc,\n+1365 dstBuffer->BindVBO(), dstDesc,\n+1366 duBuffer->BindVBO(), duDesc,\n+1367 dvBuffer->BindVBO(), dvDesc,\n+1368 numPatchCoords,\n+1369 patchCoords->BindVBO(),\n+1370 patchTable->GetVaryingPatchArrays(),\n+1371 patchTable->GetVaryingPatchIndexBuffer(),\n+1372 patchTable->GetPatchParamBuffer());\n+1373 }\n+1374\n+1437 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1438 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b1_\b4_\b3_\b9 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1440 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1441 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1442 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+1443 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+1444 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+1445 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+1446 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+1447 int numPatchCoords,\n+1448 PATCHCOORD_BUFFER *patchCoords,\n+1449 PATCH_TABLE *patchTable,\n+1450 _\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n+1451 void * deviceContext = NULL) {\n+1452\n+1453 if (instance) {\n+1454 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1455 srcBuffer, srcDesc,\n+1456 dstBuffer, dstDesc,\n+1457 duBuffer, duDesc,\n+1458 dvBuffer, dvDesc,\n+1459 duuBuffer, duuDesc,\n+1460 duvBuffer, duvDesc,\n+1461 dvvBuffer, dvvDesc,\n+1462 numPatchCoords, patchCoords,\n+1463 patchTable);\n+1464 } else {\n+1465 // Create an instance on demand (slow)\n+1466 (void)deviceContext; // unused\n+1467 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n+1468 duDesc, dvDesc,\n+1469 duuDesc, duvDesc, dvvDesc);\n+1470 if (instance) {\n+1471 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1472 srcBuffer, srcDesc,\n+1473 dstBuffer, dstDesc,\n+1474 duBuffer, duDesc,\n+1475 dvBuffer, dvDesc,\n+1476 duuBuffer, duuDesc,\n+1477 duvBuffer, duvDesc,\n+1478 dvvBuffer, dvvDesc,\n+1479 numPatchCoords, patchCoords,\n+1480 patchTable);\n+1481 delete instance;\n+1482 return r;\n+1483 }\n+1484 return false;\n+1485 }\n+1486 }\n+1487\n+1542 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1543 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b1_\b5_\b4_\b4 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1545 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1546 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1547 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+1548 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+1549 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+1550 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+1551 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+1552 int numPatchCoords,\n+1553 PATCHCOORD_BUFFER *patchCoords,\n+1554 PATCH_TABLE *patchTable) const {\n+1555\n+1556 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindVBO(), srcDesc,\n+1557 dstBuffer->BindVBO(), dstDesc,\n+1558 duBuffer->BindVBO(), duDesc,\n+1559 dvBuffer->BindVBO(), dvDesc,\n+1560 duuBuffer->BindVBO(), duuDesc,\n+1561 duvBuffer->BindVBO(), duvDesc,\n+1562 dvvBuffer->BindVBO(), dvvDesc,\n+1563 numPatchCoords,\n+1564 patchCoords->BindVBO(),\n+1565 patchTable->GetVaryingPatchArrays(),\n+1566 patchTable->GetVaryingPatchIndexBuffer(),\n+1567 patchTable->GetPatchParamBuffer());\n+1568 }\n+1569\n+1604 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1605 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b1_\b6_\b0_\b6 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1607 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1608 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1609 int numPatchCoords,\n+1610 PATCHCOORD_BUFFER *patchCoords,\n+1611 PATCH_TABLE *patchTable,\n+1612 int fvarChannel,\n+1613 _\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n+1614 void * deviceContext = NULL) {\n+1615\n+1616 if (instance) {\n+1617 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1618 srcBuffer, srcDesc,\n+1619 dstBuffer, dstDesc,\n+1620 numPatchCoords, patchCoords,\n+1621 patchTable, fvarChannel);\n+1622 } else {\n+1623 // Create an instance on demand (slow)\n+1624 (void)deviceContext; // unused\n+1625 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n+1626 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+1627 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br());\n+1628 if (instance) {\n+1629 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1630 srcBuffer, srcDesc,\n+1631 dstBuffer, dstDesc,\n+1632 numPatchCoords, patchCoords,\n+1633 patchTable, fvarChannel);\n+1634 delete instance;\n+1635 return r;\n+1636 }\n+1637 return false;\n+1638 }\n+1639 }\n+1640\n+1667 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1668 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b1_\b6_\b6_\b9 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1670 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1671 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1672 int numPatchCoords,\n+1673 PATCHCOORD_BUFFER *patchCoords,\n+1674 PATCH_TABLE *patchTable,\n+1675 int fvarChannel = 0) const {\n+1676\n+1677 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindVBO(), srcDesc,\n+1678 dstBuffer->BindVBO(), dstDesc,\n+1679 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+1680 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+1681 numPatchCoords,\n+1682 patchCoords->BindVBO(),\n+1683 patchTable->GetFVarPatchArrays(fvarChannel),\n+1684 patchTable->GetFVarPatchIndexBuffer(fvarChannel),\n+1685 patchTable->GetFVarPatchParamBuffer(fvarChannel));\n+1686 }\n+1687\n+1734 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1735 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b1_\b7_\b3_\b6 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1737 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1738 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1739 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+1740 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+1741 int numPatchCoords,\n+1742 PATCHCOORD_BUFFER *patchCoords,\n+1743 PATCH_TABLE *patchTable,\n+1744 int fvarChannel,\n+1745 _\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n+1746 void * deviceContext = NULL) {\n+1747\n+1748 if (instance) {\n+1749 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1750 srcBuffer, srcDesc,\n+1751 dstBuffer, dstDesc,\n+1752 duBuffer, duDesc,\n+1753 dvBuffer, dvDesc,\n+1754 numPatchCoords, patchCoords,\n+1755 patchTable, fvarChannel);\n+1756 } else {\n+1757 // Create an instance on demand (slow)\n+1758 (void)deviceContext; // unused\n+1759 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n+1760 duDesc, dvDesc);\n+1761 if (instance) {\n+1762 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1763 srcBuffer, srcDesc,\n+1764 dstBuffer, dstDesc,\n+1765 duBuffer, duDesc,\n+1766 dvBuffer, dvDesc,\n+1767 numPatchCoords, patchCoords,\n+1768 patchTable, fvarChannel);\n+1769 delete instance;\n+1770 return r;\n+1771 }\n+1772 return false;\n+1773 }\n+1774 }\n+1775\n+1814 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1815 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b1_\b8_\b1_\b6 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1817 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1818 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1819 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+1820 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+1821 int numPatchCoords,\n+1822 PATCHCOORD_BUFFER *patchCoords,\n+1823 PATCH_TABLE *patchTable,\n+1824 int fvarChannel = 0) const {\n+1825\n+1826 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindVBO(), srcDesc,\n+1827 dstBuffer->BindVBO(), dstDesc,\n+1828 duBuffer->BindVBO(), duDesc,\n+1829 dvBuffer->BindVBO(), dvDesc,\n+1830 numPatchCoords,\n+1831 patchCoords->BindVBO(),\n+1832 patchTable->GetFVarPatchArrays(fvarChannel),\n+1833 patchTable->GetFVarPatchIndexBuffer(fvarChannel),\n+1834 patchTable->GetFVarPatchParamBuffer(fvarChannel));\n+1835 }\n+1836\n+1901 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1902 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b1_\b9_\b0_\b3 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1904 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1905 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1906 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+1907 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+1908 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+1909 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+1910 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+1911 int numPatchCoords,\n+1912 PATCHCOORD_BUFFER *patchCoords,\n+1913 PATCH_TABLE *patchTable,\n+1914 int fvarChannel,\n+1915 _\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n+1916 void * deviceContext = NULL) {\n+1917\n+1918 if (instance) {\n+1919 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1920 srcBuffer, srcDesc,\n+1921 dstBuffer, dstDesc,\n+1922 duBuffer, duDesc,\n+1923 dvBuffer, dvDesc,\n+1924 duuBuffer, duuDesc,\n+1925 duvBuffer, duvDesc,\n+1926 dvvBuffer, dvvDesc,\n+1927 numPatchCoords, patchCoords,\n+1928 patchTable, fvarChannel);\n+1929 } else {\n+1930 // Create an instance on demand (slow)\n+1931 (void)deviceContext; // unused\n+1932 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n+1933 duDesc, dvDesc,\n+1934 duuDesc, duvDesc, dvvDesc);\n+1935 if (instance) {\n+1936 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1937 srcBuffer, srcDesc,\n+1938 dstBuffer, dstDesc,\n+1939 duBuffer, duDesc,\n+1940 dvBuffer, dvDesc,\n+1941 duuBuffer, duuDesc,\n+1942 duvBuffer, duvDesc,\n+1943 dvvBuffer, dvvDesc,\n+1944 numPatchCoords, patchCoords,\n+1945 patchTable, fvarChannel);\n+1946 delete instance;\n+1947 return r;\n+1948 }\n+1949 return false;\n+1950 }\n+1951 }\n+1952\n+2009 template <typename SRC_BUFFER, typename DST_BUFFER,\n+2010 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b2_\b0_\b1_\b1 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+2012 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+2013 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+2014 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+2015 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+2016 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+2017 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+2018 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+2019 int numPatchCoords,\n+2020 PATCHCOORD_BUFFER *patchCoords,\n+2021 PATCH_TABLE *patchTable,\n+2022 int fvarChannel = 0) const {\n+2023\n+2024 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindVBO(), srcDesc,\n+2025 dstBuffer->BindVBO(), dstDesc,\n+2026 duBuffer->BindVBO(), duDesc,\n+2027 dvBuffer->BindVBO(), dvDesc,\n+2028 duuBuffer->BindVBO(), duuDesc,\n+2029 duvBuffer->BindVBO(), duvDesc,\n+2030 dvvBuffer->BindVBO(), dvvDesc,\n+2031 numPatchCoords,\n+2032 patchCoords->BindVBO(),\n+2033 patchTable->GetFVarPatchArrays(fvarChannel),\n+2034 patchTable->GetFVarPatchIndexBuffer(fvarChannel),\n+2035 patchTable->GetFVarPatchParamBuffer(fvarChannel));\n+2036 }\n+2037\n+2043\n+_\b2_\b0_\b4_\b6 bool _\bC_\bo_\bm_\bp_\bi_\bl_\be(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+2047 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+2048 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc = _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+2049 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc = _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+2050 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc = _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+2051 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc = _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n+2052 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc = _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br());\n+2053\n+_\b2_\b0_\b5_\b5 static void _\bS_\by_\bn_\bc_\bh_\br_\bo_\bn_\bi_\bz_\be(void *deviceContext);\n+2056\n+2057private:\n+2058 struct _StencilKernel {\n+2059 _StencilKernel();\n+2060 ~_StencilKernel();\n+2061 bool Compile(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+2062 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+2063 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+2064 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+2065 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+2066 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+2067 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+2068 int workGroupSize);\n+2069 GLuint program;\n+2070 GLuint uniformStart;\n+2071 GLuint uniformEnd;\n+2072 GLuint uniformSrcOffset;\n+2073 GLuint uniformDstOffset;\n+2074 GLuint uniformDuDesc;\n+2075 GLuint uniformDvDesc;\n+2076 GLuint uniformDuuDesc;\n+2077 GLuint uniformDuvDesc;\n+2078 GLuint uniformDvvDesc;\n+2079 } _stencilKernel;\n+2080\n+2081 struct _PatchKernel {\n+2082 _PatchKernel();\n+2083 ~_PatchKernel();\n+2084 bool Compile(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+2085 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+2086 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+2087 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+2088 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+2089 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+2090 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+2091 int workGroupSize);\n+2092 GLuint program;\n+2093 GLuint uniformSrcOffset;\n+2094 GLuint uniformDstOffset;\n+2095 GLuint uniformPatchArray;\n+2096 GLuint uniformDuDesc;\n+2097 GLuint uniformDvDesc;\n+2098 GLuint uniformDuuDesc;\n+2099 GLuint uniformDuvDesc;\n+2100 GLuint uniformDvvDesc;\n+2101 } _patchKernel;\n+2102\n+2103 int _workGroupSize;\n+2104 GLuint _patchArraysSSBO;\n+2105};\n+2106\n+2107} // end namespace Osd\n+2108\n+2109} // end namespace OPENSUBDIV_VERSION\n+2110using namespace OPENSUBDIV_VERSION;\n+2111\n+2112} // end namespace OpenSubdiv\n+2113\n+2114\n+2115#endif // OPENSUBDIV3_OSD_GL_COMPUTE_EVALUATOR_H\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n-Container for arrays of parametric patches.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl\n-A specialized factory for StencilTable.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static StencilTableReal< REAL > const * Create(TopologyRefiner const &refiner,\n-Options options=Options())\n-Instantiates StencilTable from TopologyRefiner that have been refined uniformly\n-or adaptively.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:\n-_\bA_\bp_\bp_\be_\bn_\bd_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n-static StencilTableReal< REAL > const * AppendLocalPointStencilTableFaceVarying\n-(TopologyRefiner const &refiner, StencilTableReal< REAL > const\n-*baseStencilTable, StencilTableReal< REAL > const *localPointStencilTable, int\n-channel=0, bool factorize=true)\n-Utility function for stencil splicing for local point face-varying stencils.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:_\bM_\bo_\bd_\be\n-Mode\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:\n-_\bI_\bN_\bT_\bE_\bR_\bP_\bO_\bL_\bA_\bT_\bE_\b__\bF_\bA_\bC_\bE_\b__\bV_\bA_\bR_\bY_\bI_\bN_\bG\n-@ INTERPOLATE_FACE_VARYING\n-face-varying primvar stencils\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:\n-_\bI_\bN_\bT_\bE_\bR_\bP_\bO_\bL_\bA_\bT_\bE_\b__\bV_\bA_\bR_\bY_\bI_\bN_\bG\n-@ INTERPOLATE_VARYING\n-varying primvar stencils\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:\n-_\bI_\bN_\bT_\bE_\bR_\bP_\bO_\bL_\bA_\bT_\bE_\b__\bV_\bE_\bR_\bT_\bE_\bX\n-@ INTERPOLATE_VERTEX\n-vertex primvar stencils\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:\n-_\bA_\bp_\bp_\be_\bn_\bd_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n-static StencilTableReal< REAL > const * AppendLocalPointStencilTableVarying\n-(TopologyRefiner const &refiner, StencilTableReal< REAL > const\n-*baseStencilTable, StencilTableReal< REAL > const *localPointStencilTable, bool\n-factorize=true)\n-Utility function for stencil splicing for local point varying stencils.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b4_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:\n-_\bA_\bp_\bp_\be_\bn_\bd_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n-static StencilTableReal< REAL > const * AppendLocalPointStencilTable\n-(TopologyRefiner const &refiner, StencilTableReal< REAL > const\n-*baseStencilTable, StencilTableReal< REAL > const *localPointStencilTable, bool\n-factorize=true)\n-Utility function for stencil splicing for local point stencils.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static StencilTableReal< REAL > const * Create(int numTables, StencilTableReal<\n-REAL > const **tables)\n-Instantiates StencilTable by concatenating an array of existing stencil tables.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl\n-A specialized factory for LimitStencilTable.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b2_\b0_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:_\bM_\bo_\bd_\be\n-Mode\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b2_\b1_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:\n-_\bI_\bN_\bT_\bE_\bR_\bP_\bO_\bL_\bA_\bT_\bE_\b__\bF_\bA_\bC_\bE_\b__\bV_\bA_\bR_\bY_\bI_\bN_\bG\n-@ INTERPOLATE_FACE_VARYING\n-face-varying primvar stencils\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b2_\b1_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:\n-_\bI_\bN_\bT_\bE_\bR_\bP_\bO_\bL_\bA_\bT_\bE_\b__\bV_\bA_\bR_\bY_\bI_\bN_\bG\n-@ INTERPOLATE_VARYING\n-varying primvar stencils\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b2_\b1_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:\n-_\bI_\bN_\bT_\bE_\bR_\bP_\bO_\bL_\bA_\bT_\bE_\b__\bV_\bE_\bR_\bT_\bE_\bX\n-@ INTERPOLATE_VERTEX\n-vertex primvar stencils\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b2_\b1_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:\n-_\bL_\bo_\bc_\ba_\bt_\bi_\bo_\bn_\bA_\br_\br_\ba_\by_\bV_\be_\bc\n-std::vector< LocationArray > LocationArrayVec\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b2_\b4_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static LimitStencilTableReal< REAL > const * Create(TopologyRefiner const\n-&refiner, LocationArrayVec const &locationArrays, StencilTableReal< REAL >\n-const *cvStencils=0, PatchTable const *patchTable=0, Options options=Options())\n-Instantiates LimitStencilTable from a TopologyRefiner that has been refined\n-either uniformly or adapt...\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl\n-Vertex stencil descriptor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl\n-Vertex stencil class wrapping the template for compatibility.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b1_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl\n-Table of subdivision stencils.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b4_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\bc_\bt_\bo_\br\n+std::vector< PatchArray > PatchArrayVector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b1_\b3_\b2\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n Stencil table class wrapping the template for compatibility.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b2_\b7_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl\n-Table of limit subdivision stencils.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b4_\b0_\b9\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n Limit stencil table class wrapping the template for compatibility.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b8_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b6_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bf_\ba_\bc_\bt_\bo_\br_\bi_\bz_\be_\bI_\bn_\bt_\be_\br_\bm_\be_\bd_\bi_\ba_\bt_\be_\bL_\be_\bv_\be_\bl_\bs\n-unsigned int factorizeIntermediateLevels\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b7_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bm_\ba_\bx_\bL_\be_\bv_\be_\bl\n-unsigned int maxLevel\n-generate stencils up to 'maxLevel'\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b7_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n-Options()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b6_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bI_\bn_\bt_\be_\br_\bm_\be_\bd_\bi_\ba_\bt_\be_\bL_\be_\bv_\be_\bl_\bs\n-unsigned int generateIntermediateLevels\n-vertices at all levels or highest only\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b7_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bV_\be_\br_\bt_\bs\n-unsigned int generateControlVerts\n-generate stencils for control-vertices\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b7_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bO_\bf_\bf_\bs_\be_\bt_\bs\n-unsigned int generateOffsets\n-populate optional \"_offsets\" field\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b7_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bf_\bv_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl\n-unsigned int fvarChannel\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b7_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bM_\bo_\bd_\be\n-unsigned int interpolationMode\n-interpolation mode\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b7_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b2_\b1_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n-Options()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b2_\b2_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bf_\bv_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl\n-unsigned int fvarChannel\n-face-varying channel to use\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b2_\b2_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bM_\bo_\bd_\be\n-unsigned int interpolationMode\n-interpolation mode\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b2_\b2_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bg_\be_\bn_\be_\br_\ba_\bt_\be_\b2_\bn_\bd_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs\n-unsigned int generate2ndDerivatives\n-Generate weights for 2nd derivatives.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b2_\b2_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bg_\be_\bn_\be_\br_\ba_\bt_\be_\b1_\bs_\bt_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs\n-unsigned int generate1stDerivatives\n-Generate weights for 1st derivatives.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b2_\b2_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:\n-_\bL_\bo_\bc_\ba_\bt_\bi_\bo_\bn_\bA_\br_\br_\ba_\by\n-Descriptor for limit surface locations.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b2_\b3_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:\n-_\bL_\bo_\bc_\ba_\bt_\bi_\bo_\bn_\bA_\br_\br_\ba_\by_\b:_\b:_\bt\n-REAL const * t\n-array of v coordinates\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b2_\b4_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:\n-_\bL_\bo_\bc_\ba_\bt_\bi_\bo_\bn_\bA_\br_\br_\ba_\by_\b:_\b:_\bs\n-REAL const * s\n-array of u coordinates\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b2_\b4_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:\n-_\bL_\bo_\bc_\ba_\bt_\bi_\bo_\bn_\bA_\br_\br_\ba_\by_\b:_\b:_\bL_\bo_\bc_\ba_\bt_\bi_\bo_\bn_\bA_\br_\br_\ba_\by\n-LocationArray()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b2_\b3_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:\n-_\bL_\bo_\bc_\ba_\bt_\bi_\bo_\bn_\bA_\br_\br_\ba_\by_\b:_\b:_\bn_\bu_\bm_\bL_\bo_\bc_\ba_\bt_\bi_\bo_\bn_\bs\n-int numLocations\n-number of (u,v) coordinates in the array\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b2_\b3_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:\n-_\bL_\bo_\bc_\ba_\bt_\bi_\bo_\bn_\bA_\br_\br_\ba_\by_\b:_\b:_\bp_\bt_\be_\bx_\bI_\bd_\bx\n-int ptexIdx\n-ptex face index\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b2_\b3_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by\n-Stencil table factory class wrapping the template for compatibility.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b2_\b8_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n-_\bA_\bp_\bp_\be_\bn_\bd_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n-static StencilTable const * AppendLocalPointStencilTableVarying(TopologyRefiner\n-const &refiner, StencilTable const *baseStencilTable, StencilTable const\n-*localPointStencilTable, bool factorize=true)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b3_\b2_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static StencilTable const * Create(TopologyRefiner const &refiner, Options\n-options=Options())\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b2_\b9_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n-_\bA_\bp_\bp_\be_\bn_\bd_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n-static StencilTable const * AppendLocalPointStencilTableFaceVarying\n-(TopologyRefiner const &refiner, StencilTable const *baseStencilTable,\n-StencilTable const *localPointStencilTable, int channel=0, bool factorize=true)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b3_\b3_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n-_\bA_\bp_\bp_\be_\bn_\bd_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n-static StencilTable const * AppendLocalPointStencilTable(TopologyRefiner const\n-&refiner, StencilTable const *baseStencilTable, StencilTable const\n-*localPointStencilTable, bool factorize=true)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b3_\b0_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static StencilTable const * Create(int numTables, StencilTable const **tables)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b3_\b0_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by\n-Stencil table factory class wrapping the template for compatibility.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b3_\b5_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static LimitStencilTable const * Create(TopologyRefiner const &refiner,\n-LocationArrayVec const &locationArrays, StencilTable const *cvStencils=0,\n-PatchTable const *patchTable=0, Options options=Options())\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b3_\b6_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br\n-Stores topology data for a specified set of refinement options.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b5_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n+BufferDescriptor is a struct which describes buffer elements in interleaved\n+data buffers....\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b6_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bS_\bS_\bB_\bO\n+GL stencil table (Shader Storage buffer)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b5_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bS_\bS_\bB_\bO_\b:_\b:_\bG_\be_\bt_\bD_\bu_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br\n+GLuint GetDuvWeightsBuffer() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bS_\bS_\bB_\bO_\b:_\b:_\bG_\be_\bt_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br\n+GLuint GetWeightsBuffer() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bS_\bS_\bB_\bO_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bS_\bS_\bB_\bO\n+GLStencilTableSSBO(Far::LimitStencilTable const *limitStencilTable)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bS_\bS_\bB_\bO_\b:_\b:_\bG_\be_\bt_\bD_\bu_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br\n+GLuint GetDuWeightsBuffer() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bS_\bS_\bB_\bO_\b:_\b:_\b~_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bS_\bS_\bB_\bO\n+~GLStencilTableSSBO()\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bS_\bS_\bB_\bO_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+int GetNumStencils() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bS_\bS_\bB_\bO_\b:_\b:_\bG_\be_\bt_\bI_\bn_\bd_\bi_\bc_\be_\bs_\bB_\bu_\bf_\bf_\be_\br\n+GLuint GetIndicesBuffer() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bS_\bS_\bB_\bO_\b:_\b:_\bG_\be_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br\n+GLuint GetOffsetsBuffer() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bS_\bS_\bB_\bO_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bS_\bS_\bB_\bO\n+GLStencilTableSSBO(Far::StencilTable const *stencilTable)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bS_\bS_\bB_\bO_\b:_\b:_\bG_\be_\bt_\bD_\bv_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br\n+GLuint GetDvvWeightsBuffer() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bS_\bS_\bB_\bO_\b:_\b:_\bG_\be_\bt_\bS_\bi_\bz_\be_\bs_\bB_\bu_\bf_\bf_\be_\br\n+GLuint GetSizesBuffer() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bS_\bS_\bB_\bO_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n+static GLStencilTableSSBO * Create(Far::LimitStencilTable const\n+*limitStencilTable, void *deviceContext=NULL)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b5_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bS_\bS_\bB_\bO_\b:_\b:_\bG_\be_\bt_\bD_\bu_\bu_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br\n+GLuint GetDuuWeightsBuffer() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bS_\bS_\bB_\bO_\b:_\b:_\bG_\be_\bt_\bD_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br\n+GLuint GetDvWeightsBuffer() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bS_\bS_\bB_\bO_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n+static GLStencilTableSSBO * Create(Far::StencilTable const *stencilTable, void\n+*deviceContext=NULL)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b5_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b9_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n+bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords,\n+PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable) const\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b2_\b1_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n+static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor\n+const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,\n+DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n+BufferDescriptor const &dvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n+*patchCoords, PATCH_TABLE *patchTable, int fvarChannel, GLComputeEvaluator\n+const *instance, void *deviceContext=NULL)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b7_\b3_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n+BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n+&dvDesc, STENCIL_TABLE const *stencilTable) const\n+Generic stencil function.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b4_\b3_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n+static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int\n+numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable,\n+GLComputeEvaluator const *instance, void *deviceContext=NULL)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b1_\b5_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n+static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor\n+const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int\n+numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int\n+fvarChannel, GLComputeEvaluator const *instance, void *deviceContext=NULL)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b6_\b0_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n+BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n+&dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER\n+*duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer,\n+BufferDescriptor const &dvvDesc, STENCIL_TABLE const *stencilTable) const\n+Generic stencil function.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b5_\b0_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n+static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n+*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n+BufferDescriptor const &dvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n+*patchCoords, PATCH_TABLE *patchTable, GLComputeEvaluator const *instance, void\n+*deviceContext=NULL)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b2_\b7_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bI_\bn_\bs_\bt_\ba_\bn_\bt_\bi_\ba_\bt_\ba_\bb_\bl_\be\n+bool Instantiatable\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b9_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+bool EvalPatches(GLuint srcBuffer, BufferDescriptor const &srcDesc, GLuint\n+dstBuffer, BufferDescriptor const &dstDesc, GLuint duBuffer, BufferDescriptor\n+const &duDesc, GLuint dvBuffer, BufferDescriptor const &dvDesc, GLuint\n+duuBuffer, BufferDescriptor const &duuDesc, GLuint duvBuffer, BufferDescriptor\n+const &duvDesc, GLuint dvvBuffer, BufferDescriptor const &dvvDesc, int\n+numPatchCoords, GLuint patchCoordsBuffer, const PatchArrayVector &patchArrays,\n+GLuint patchIndexBuffer, GLuint patchParamsBuffer) const\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\b~_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n+~GLComputeEvaluator()\n+Destructor. note that the GL context must be made current.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n+BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n+&dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER\n+*duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer,\n+BufferDescriptor const &dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n+*patchCoords, PATCH_TABLE *patchTable) const\n+Generic limit eval function with derivatives. This function has a same\n+signature as other device kern...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b0_\b7_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n+*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n+BufferDescriptor const &dvDesc, STENCIL_TABLE const *stencilTable,\n+GLComputeEvaluator const *instance, void *deviceContext=NULL)\n+Generic static stencil function. This function has a same signature as other\n+device kernels have so t...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b2_\b3_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+bool EvalStencils(GLuint srcBuffer, BufferDescriptor const &srcDesc, GLuint\n+dstBuffer, BufferDescriptor const &dstDesc, GLuint duBuffer, BufferDescriptor\n+const &duDesc, GLuint dvBuffer, BufferDescriptor const &dvDesc, GLuint\n+duuBuffer, BufferDescriptor const &duuDesc, GLuint duvBuffer, BufferDescriptor\n+const &duvDesc, GLuint dvvBuffer, BufferDescriptor const &dvvDesc, GLuint\n+sizesBuffer, GLuint offsetsBuffer, GLuint indicesBuffer, GLuint weightsBuffer,\n+GLuint duWeightsBuffer, GLuint dvWeightsBuffer, GLuint duuWeightsBuffer, GLuint\n+duvWeightsBuffer, GLuint dvvWeightsBuffer, int start, int end) const\n+Dispatch the GLSL compute kernel on GPU asynchronously returns false if the\n+kernel hasn't been compil...\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, STENCIL_TABLE\n+const *stencilTable, GLComputeEvaluator const *instance, void\n+*deviceContext=NULL)\n+Generic static stencil function. This function has a same signature as other\n+device kernels have so t...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b6_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n+static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n+*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n+BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const\n+&duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER\n+*dvvBuffer, BufferDescriptor const &dvvDesc, int numPatchCoords,\n+PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, GLComputeEvaluator\n+const *instance, void *deviceContext=NULL)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b4_\b3_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n+BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n+&dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE\n+*patchTable, GLComputeEvaluator const *instance, void *deviceContext=NULL)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b6_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n+static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor\n+const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,\n+DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n+BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const\n+&duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER\n+*dvvBuffer, BufferDescriptor const &dvvDesc, int numPatchCoords,\n+PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel,\n+GLComputeEvaluator const *instance, void *deviceContext=NULL)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b9_\b0_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n+bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n+BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n+&dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER\n+*duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer,\n+BufferDescriptor const &dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n+*patchCoords, PATCH_TABLE *patchTable) const\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b5_\b4_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n+bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n+*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n+BufferDescriptor const &dvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n+*patchCoords, PATCH_TABLE *patchTable, int fvarChannel=0) const\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b8_\b1_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords,\n+PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable) const\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b9_\b4_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n+GLComputeEvaluator()\n+Constructor.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n+BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n+&dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE\n+*patchTable) const\n+Generic limit eval function with derivatives. This function has a same\n+signature as other device kern...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b9_\b9_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords,\n+PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, GLComputeEvaluator\n+const *instance, void *deviceContext=NULL)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b6_\b9_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, STENCIL_TABLE const\n+*stencilTable) const\n+Generic stencil function.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b3_\b8_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+bool EvalPatches(GLuint srcBuffer, BufferDescriptor const &srcDesc, GLuint\n+dstBuffer, BufferDescriptor const &dstDesc, GLuint duBuffer, BufferDescriptor\n+const &duDesc, GLuint dvBuffer, BufferDescriptor const &dvDesc, int\n+numPatchCoords, GLuint patchCoordsBuffer, const PatchArrayVector &patchArrays,\n+GLuint patchIndexBuffer, GLuint patchParamsBuffer) const\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n+bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n+*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n+BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const\n+&duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER\n+*dvvBuffer, BufferDescriptor const &dvvDesc, int numPatchCoords,\n+PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel=0)\n+const\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b2_\b0_\b1_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n+static GLComputeEvaluator * Create(BufferDescriptor const &srcDesc,\n+BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc,\n+BufferDescriptor const &dvDesc, void *deviceContext=NULL)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b9_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+bool EvalStencils(GLuint srcBuffer, BufferDescriptor const &srcDesc, GLuint\n+dstBuffer, BufferDescriptor const &dstDesc, GLuint duBuffer, BufferDescriptor\n+const &duDesc, GLuint dvBuffer, BufferDescriptor const &dvDesc, GLuint\n+sizesBuffer, GLuint offsetsBuffer, GLuint indicesBuffer, GLuint weightsBuffer,\n+GLuint duWeightsBuffer, GLuint dvWeightsBuffer, int start, int end) const\n+Dispatch the GLSL compute kernel on GPU asynchronously returns false if the\n+kernel hasn't been compil...\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n+*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n+BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const\n+&duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER\n+*dvvBuffer, BufferDescriptor const &dvvDesc, STENCIL_TABLE const *stencilTable,\n+GLComputeEvaluator const *instance, void *deviceContext=NULL)\n+Generic static stencil function. This function has a same signature as other\n+device kernels have so t...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b3_\b2_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bS_\by_\bn_\bc_\bh_\br_\bo_\bn_\bi_\bz_\be\n+static void Synchronize(void *deviceContext)\n+Wait the dispatched kernel finishes.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bC_\bo_\bm_\bp_\bi_\bl_\be\n+bool Compile(BufferDescriptor const &srcDesc, BufferDescriptor const &dstDesc,\n+BufferDescriptor const &duDesc=BufferDescriptor(), BufferDescriptor const\n+&dvDesc=BufferDescriptor(), BufferDescriptor const &duuDesc=BufferDescriptor(),\n+BufferDescriptor const &duvDesc=BufferDescriptor(), BufferDescriptor const\n+&dvvDesc=BufferDescriptor())\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n+bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n+BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n+&dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE\n+*patchTable) const\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b3_\b5_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n+static GLComputeEvaluator * Create(BufferDescriptor const &srcDesc,\n+BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc,\n+BufferDescriptor const &dvDesc, BufferDescriptor const &duuDesc,\n+BufferDescriptor const &duvDesc, BufferDescriptor const &dvvDesc, void\n+*deviceContext=NULL)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b1_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n+bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int\n+numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int\n+fvarChannel=0) const\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b6_\b6_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n+BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n+&dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER\n+*duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer,\n+BufferDescriptor const &dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n+*patchCoords, PATCH_TABLE *patchTable, GLComputeEvaluator const *instance, void\n+*deviceContext=NULL)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b8_\b7_\b0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bf_\ba_\br\n-    * _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00755.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00755.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/far/patchParam.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/osd/opencl.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -87,54 +87,24 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"summary\">\n-<a href=\"#nested-classes\">Classes</a> &#124;\n-<a href=\"#namespaces\">Namespaces</a> &#124;\n-<a href=\"#typedef-members\">Typedefs</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">patchParam.h File Reference</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">opencl.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n-<div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a01486_source.html\">../far/types.h</a>&quot;</code><br />\n+<div class=\"textblock\"><code>#include &lt;CL/opencl.h&gt;</code><br />\n </div>\n <p><a href=\"a00755_source.html\">Go to the source code of this file.</a></p>\n-<table class=\"memberdecls\">\n-<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n-Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00989.html\">PatchParam</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Patch parameterization.  <a href=\"a00989.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-</table><table class=\"memberdecls\">\n-<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n-Namespaces</h2></td></tr>\n-<tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far</a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-</table><table class=\"memberdecls\">\n-<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"typedef-members\" name=\"typedef-members\"></a>\n-Typedefs</h2></td></tr>\n-<tr class=\"memitem:a46ea68db89cc3d55c4191ef7648281ce\" id=\"r_a46ea68db89cc3d55c4191ef7648281ce\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef std::vector&lt; <a class=\"el\" href=\"a00989.html\">PatchParam</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html#a46ea68db89cc3d55c4191ef7648281ce\">PatchParamTable</a></td></tr>\n-<tr class=\"separator:a46ea68db89cc3d55c4191ef7648281ce\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:abe07210a029a01571c54276ae28b4d88\" id=\"r_abe07210a029a01571c54276ae28b4d88\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef <a class=\"el\" href=\"a01357.html\">Vtr::Array</a>&lt; <a class=\"el\" href=\"a00989.html\">PatchParam</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html#abe07210a029a01571c54276ae28b4d88\">PatchParamArray</a></td></tr>\n-<tr class=\"separator:abe07210a029a01571c54276ae28b4d88\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a3139c7c52ddf26b2403e8e95ff63eeb3\" id=\"r_a3139c7c52ddf26b2403e8e95ff63eeb3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef <a class=\"el\" href=\"a01353.html\">Vtr::ConstArray</a>&lt; <a class=\"el\" href=\"a00989.html\">PatchParam</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html#a3139c7c52ddf26b2403e8e95ff63eeb3\">ConstPatchParamArray</a></td></tr>\n-<tr class=\"separator:a3139c7c52ddf26b2403e8e95ff63eeb3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-</table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7f420b72a822828cfa8b0561c695a5cc.html\">far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00755.html\">patchParam.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00755.html\">opencl.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,31 +1,11 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bT_\by_\bp_\be_\bd_\be_\bf_\bs\n-patchParam.h File Reference\n-#include \"../version.h\"\n-#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n+opencl.h File Reference\n+#include <CL/opencl.h>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n-C\bCl\bla\bas\bss\bse\bes\bs\n-struct \u00a0 _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm\n-\u00a0        Patch parameterization. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n-\u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n-\u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br\n-\u00a0\n-T\bTy\byp\bpe\bed\bde\bef\bfs\bs\n-    typedef std::vector< _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm >\u00a0 _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bT_\ba_\bb_\bl_\be\n-\u00a0\n-     typedef _\bV_\bt_\br_\b:_\b:_\bA_\br_\br_\ba_\by< _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm >\u00a0 _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bA_\br_\br_\ba_\by\n-\u00a0\n-typedef _\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by< _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm >\u00a0 _\bC_\bo_\bn_\bs_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bA_\br_\br_\ba_\by\n-\u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bf_\ba_\br\n-    * _\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bo_\bp_\be_\bn_\bc_\bl_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00755_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00755_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/far/patchParam.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/osd/opencl.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">patchParam.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">opencl.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00755.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2013 Pixar</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2014 Pixar</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -119,214 +119,32 @@\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_FAR_PATCH_PARAM_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_FAR_PATCH_PARAM_H</span></div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_OPENCL_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_OPENCL_H</span></div>\n <div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n-<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../far/types.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span> </div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span>Far {</div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n-<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00152\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00989.html\">  152</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a00989.html\">PatchParam</a> {</div>\n-<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\">  168</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00989.html#a98adcbce89caf00ca5c67c978d1f8576\">Set</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> faceid, <span class=\"keywordtype\">short</span> u, <span class=\"keywordtype\">short</span> v,</div>\n-<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\">  169</span>             <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> depth, <span class=\"keywordtype\">bool</span> nonquad,</div>\n-<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\">  170</span>             <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> boundary, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> transition,</div>\n-<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span>             <span class=\"keywordtype\">bool</span> regular = <span class=\"keyword\">false</span>);</div>\n-<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\">  172</span> </div>\n-<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00989.html#aa71d36872f416feaa853788a7a7a7ef8\">  174</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00989.html#aa71d36872f416feaa853788a7a7a7ef8\">Clear</a>() { <a class=\"code hl_variable\" href=\"a00989.html#ae918c114a445f892134cb94b70d3f07e\">field0</a> = <a class=\"code hl_variable\" href=\"a00989.html#aa992496f945c3e0ffb3a55ca84a7cb60\">field1</a> = 0; }</div>\n-<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\">  175</span> </div>\n-<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00989.html#a71fe5a723e7c3a29b26cb6a0af33a7ee\">  177</a></span>    <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> <a class=\"code hl_function\" href=\"a00989.html#a71fe5a723e7c3a29b26cb6a0af33a7ee\">GetFaceId</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a>(unpack(<a class=\"code hl_variable\" href=\"a00989.html#ae918c114a445f892134cb94b70d3f07e\">field0</a>,28,0)); }</div>\n-<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\">  178</span> </div>\n-<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00989.html#a5e290d380300d960b35a9e4bb36532b3\">  181</a></span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> <a class=\"code hl_function\" href=\"a00989.html#a5e290d380300d960b35a9e4bb36532b3\">GetU</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (<span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span>)unpack(<a class=\"code hl_variable\" href=\"a00989.html#aa992496f945c3e0ffb3a55ca84a7cb60\">field1</a>,10,22); }</div>\n-<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\">  182</span> </div>\n-<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00989.html#adf00c825e17a25a22eddd4a5dc3f3ea2\">  185</a></span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> <a class=\"code hl_function\" href=\"a00989.html#adf00c825e17a25a22eddd4a5dc3f3ea2\">GetV</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (<span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span>)unpack(<a class=\"code hl_variable\" href=\"a00989.html#aa992496f945c3e0ffb3a55ca84a7cb60\">field1</a>,10,12); }</div>\n-<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\">  186</span> </div>\n-<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00989.html#a3e80fdc78d4e976e88f8d035a6bdfe9a\">  188</a></span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> <a class=\"code hl_function\" href=\"a00989.html#a3e80fdc78d4e976e88f8d035a6bdfe9a\">GetTransition</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (<span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span>)unpack(<a class=\"code hl_variable\" href=\"a00989.html#ae918c114a445f892134cb94b70d3f07e\">field0</a>,4,28); }</div>\n-<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\">  189</span> </div>\n-<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00989.html#a3ce6d530fdd758f089cd61589cf13937\">  191</a></span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> <a class=\"code hl_function\" href=\"a00989.html#a3ce6d530fdd758f089cd61589cf13937\">GetBoundary</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (<span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span>)unpack(<a class=\"code hl_variable\" href=\"a00989.html#aa992496f945c3e0ffb3a55ca84a7cb60\">field1</a>,5,7); }</div>\n-<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\">  192</span> </div>\n-<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00989.html#a8a53fc370a76c5d29d610d9ae926f4fe\">  194</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00989.html#a8a53fc370a76c5d29d610d9ae926f4fe\">NonQuadRoot</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (unpack(<a class=\"code hl_variable\" href=\"a00989.html#aa992496f945c3e0ffb3a55ca84a7cb60\">field1</a>,1,4) != 0); }</div>\n-<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\">  195</span> </div>\n-<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00989.html#a75d02f3fb15201f2a2ca9850f77db8bb\">  197</a></span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> <a class=\"code hl_function\" href=\"a00989.html#a75d02f3fb15201f2a2ca9850f77db8bb\">GetDepth</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (<span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span>)unpack(<a class=\"code hl_variable\" href=\"a00989.html#aa992496f945c3e0ffb3a55ca84a7cb60\">field1</a>,4,0); }</div>\n-<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\">  198</span> </div>\n-<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\">  200</span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"a00989.html#a3fb8c711847e677119dcecab48e27200\">GetParamFraction</a>() <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\">  201</span> </div>\n-<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\">  208</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\">  209</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00989.html#af348a1feaddb11b275b5291bfe7e76f7\">Normalize</a>( REAL &amp; u, REAL &amp; v ) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\">  210</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\">  211</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00989.html#a2adc7ff754a40f9a22c04cf2ab04d75c\">NormalizeTriangle</a>( REAL &amp; u, REAL &amp; v ) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00212\" name=\"l00212\"></a><span class=\"lineno\">  212</span> </div>\n-<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\">  219</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\">  220</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00989.html#ac1285d0e8771e821487cb18d0a324097\">Unnormalize</a>( REAL &amp; u, REAL &amp; v ) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\">  221</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\">  222</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00989.html#acf6abf4b1514b90d77bff5c2563ef1c3\">UnnormalizeTriangle</a>( REAL &amp; u, REAL &amp; v ) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\">  223</span> </div>\n-<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\">  225</span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00989.html#a117b0b4f76b0e63ad1f6a3d83591f034\">IsTriangleRotated</a>() <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\">  226</span> </div>\n-<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00989.html#a193470573424fe6b2e91f317509b5897\">  228</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00989.html#a193470573424fe6b2e91f317509b5897\">IsRegular</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (unpack(<a class=\"code hl_variable\" href=\"a00989.html#aa992496f945c3e0ffb3a55ca84a7cb60\">field1</a>,1,5) != 0); }</div>\n-<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\">  229</span> </div>\n-<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00989.html#ae918c114a445f892134cb94b70d3f07e\">  230</a></span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"a00989.html#ae918c114a445f892134cb94b70d3f07e\">field0</a>:32;</div>\n-<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00989.html#aa992496f945c3e0ffb3a55ca84a7cb60\">  231</a></span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"a00989.html#aa992496f945c3e0ffb3a55ca84a7cb60\">field1</a>:32;</div>\n-<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\">  232</span> </div>\n-<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\">  233</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\">  234</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> pack(<span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> value, <span class=\"keywordtype\">int</span> width, <span class=\"keywordtype\">int</span> offset)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\">  235</span>        <span class=\"keywordflow\">return</span> (<span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span>)((value &amp; ((1&lt;&lt;width)-1)) &lt;&lt; offset);</div>\n-<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\">  236</span>    }</div>\n-<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\">  237</span> </div>\n-<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\">  238</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> unpack(<span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> value, <span class=\"keywordtype\">int</span> width, <span class=\"keywordtype\">int</span> offset)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\">  239</span>        <span class=\"keywordflow\">return</span> (<span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span>)((value &gt;&gt; offset) &amp; ((1&lt;&lt;width)-1));</div>\n-<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\">  240</span>    }</div>\n-<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\">  241</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\">  242</span> </div>\n-<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00908.html#a46ea68db89cc3d55c4191ef7648281ce\">  243</a></span><span class=\"keyword\">typedef</span> std::vector&lt;PatchParam&gt; <a class=\"code hl_typedef\" href=\"a00908.html#a46ea68db89cc3d55c4191ef7648281ce\">PatchParamTable</a>;</div>\n-<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\">  244</span> </div>\n-<div class=\"line\"><a id=\"l00245\" name=\"l00245\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00908.html#abe07210a029a01571c54276ae28b4d88\">  245</a></span><span class=\"keyword\">typedef</span> <a class=\"code hl_class\" href=\"a01357.html\">Vtr::Array&lt;PatchParam&gt;</a> <a class=\"code hl_typedef\" href=\"a00908.html#abe07210a029a01571c54276ae28b4d88\">PatchParamArray</a>;</div>\n-<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00908.html#a3139c7c52ddf26b2403e8e95ff63eeb3\">  246</a></span><span class=\"keyword\">typedef</span> <a class=\"code hl_class\" href=\"a01353.html\">Vtr::ConstArray&lt;PatchParam&gt;</a> <a class=\"code hl_typedef\" href=\"a00908.html#a3139c7c52ddf26b2403e8e95ff63eeb3\">ConstPatchParamArray</a>;</div>\n-<div class=\"line\"><a id=\"l00247\" name=\"l00247\"></a><span class=\"lineno\">  247</span> </div>\n-<div class=\"line\"><a id=\"l00248\" name=\"l00248\"></a><span class=\"lineno\">  248</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00249\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00249\" name=\"l00249\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00989.html#a98adcbce89caf00ca5c67c978d1f8576\">  249</a></span><a class=\"code hl_function\" href=\"a00989.html#a98adcbce89caf00ca5c67c978d1f8576\">PatchParam::Set</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> faceid, <span class=\"keywordtype\">short</span> u, <span class=\"keywordtype\">short</span> v,</div>\n-<div class=\"line\"><a id=\"l00250\" name=\"l00250\"></a><span class=\"lineno\">  250</span>                <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> depth, <span class=\"keywordtype\">bool</span> nonquad,</div>\n-<div class=\"line\"><a id=\"l00251\" name=\"l00251\"></a><span class=\"lineno\">  251</span>                <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> boundary, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> transition,</div>\n-<div class=\"line\"><a id=\"l00252\" name=\"l00252\"></a><span class=\"lineno\">  252</span>                <span class=\"keywordtype\">bool</span> regular) {</div>\n-<div class=\"line\"><a id=\"l00253\" name=\"l00253\"></a><span class=\"lineno\">  253</span>    <a class=\"code hl_variable\" href=\"a00989.html#ae918c114a445f892134cb94b70d3f07e\">field0</a> = pack(faceid,    28,  0) |</div>\n-<div class=\"line\"><a id=\"l00254\" name=\"l00254\"></a><span class=\"lineno\">  254</span>             pack(transition, 4, 28);</div>\n-<div class=\"line\"><a id=\"l00255\" name=\"l00255\"></a><span class=\"lineno\">  255</span> </div>\n-<div class=\"line\"><a id=\"l00256\" name=\"l00256\"></a><span class=\"lineno\">  256</span>    <a class=\"code hl_variable\" href=\"a00989.html#aa992496f945c3e0ffb3a55ca84a7cb60\">field1</a> = pack(u,         10, 22) |</div>\n-<div class=\"line\"><a id=\"l00257\" name=\"l00257\"></a><span class=\"lineno\">  257</span>             pack(v,         10, 12) |</div>\n-<div class=\"line\"><a id=\"l00258\" name=\"l00258\"></a><span class=\"lineno\">  258</span>             pack(boundary,   5,  7) |</div>\n-<div class=\"line\"><a id=\"l00259\" name=\"l00259\"></a><span class=\"lineno\">  259</span>             pack(regular,    1,  5) |</div>\n-<div class=\"line\"><a id=\"l00260\" name=\"l00260\"></a><span class=\"lineno\">  260</span>             pack(nonquad,    1,  4) |</div>\n-<div class=\"line\"><a id=\"l00261\" name=\"l00261\"></a><span class=\"lineno\">  261</span>             pack(depth,      4,  0);</div>\n-<div class=\"line\"><a id=\"l00262\" name=\"l00262\"></a><span class=\"lineno\">  262</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00263\" name=\"l00263\"></a><span class=\"lineno\">  263</span> </div>\n-<div class=\"line\"><a id=\"l00264\" name=\"l00264\"></a><span class=\"lineno\">  264</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">float</span></div>\n-<div class=\"foldopen\" id=\"foldopen00265\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00265\" name=\"l00265\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00989.html#a3fb8c711847e677119dcecab48e27200\">  265</a></span><a class=\"code hl_function\" href=\"a00989.html#a3fb8c711847e677119dcecab48e27200\">PatchParam::GetParamFraction</a>( )<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00266\" name=\"l00266\"></a><span class=\"lineno\">  266</span>    <span class=\"keywordflow\">return</span> 1.0f / (float)(1 &lt;&lt; (<a class=\"code hl_function\" href=\"a00989.html#a75d02f3fb15201f2a2ca9850f77db8bb\">GetDepth</a>() - <a class=\"code hl_function\" href=\"a00989.html#a8a53fc370a76c5d29d610d9ae926f4fe\">NonQuadRoot</a>()));</div>\n-<div class=\"line\"><a id=\"l00267\" name=\"l00267\"></a><span class=\"lineno\">  267</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00268\" name=\"l00268\"></a><span class=\"lineno\">  268</span> </div>\n-<div class=\"line\"><a id=\"l00269\" name=\"l00269\"></a><span class=\"lineno\">  269</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00270\" name=\"l00270\"></a><span class=\"lineno\">  270</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00271\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00271\" name=\"l00271\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00989.html#af348a1feaddb11b275b5291bfe7e76f7\">  271</a></span><a class=\"code hl_function\" href=\"a00989.html#af348a1feaddb11b275b5291bfe7e76f7\">PatchParam::Normalize</a>( REAL &amp; u, REAL &amp; v )<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00272\" name=\"l00272\"></a><span class=\"lineno\">  272</span> </div>\n-<div class=\"line\"><a id=\"l00273\" name=\"l00273\"></a><span class=\"lineno\">  273</span>    REAL fracInv = (REAL)(1.0f / <a class=\"code hl_function\" href=\"a00989.html#a3fb8c711847e677119dcecab48e27200\">GetParamFraction</a>());</div>\n-<div class=\"line\"><a id=\"l00274\" name=\"l00274\"></a><span class=\"lineno\">  274</span> </div>\n-<div class=\"line\"><a id=\"l00275\" name=\"l00275\"></a><span class=\"lineno\">  275</span>    u = u * fracInv - (REAL)<a class=\"code hl_function\" href=\"a00989.html#a5e290d380300d960b35a9e4bb36532b3\">GetU</a>();</div>\n-<div class=\"line\"><a id=\"l00276\" name=\"l00276\"></a><span class=\"lineno\">  276</span>    v = v * fracInv - (REAL)<a class=\"code hl_function\" href=\"a00989.html#adf00c825e17a25a22eddd4a5dc3f3ea2\">GetV</a>();</div>\n-<div class=\"line\"><a id=\"l00277\" name=\"l00277\"></a><span class=\"lineno\">  277</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00278\" name=\"l00278\"></a><span class=\"lineno\">  278</span> </div>\n-<div class=\"line\"><a id=\"l00279\" name=\"l00279\"></a><span class=\"lineno\">  279</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00280\" name=\"l00280\"></a><span class=\"lineno\">  280</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00281\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00281\" name=\"l00281\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00989.html#ac1285d0e8771e821487cb18d0a324097\">  281</a></span><a class=\"code hl_function\" href=\"a00989.html#ac1285d0e8771e821487cb18d0a324097\">PatchParam::Unnormalize</a>( REAL &amp; u, REAL &amp; v )<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00282\" name=\"l00282\"></a><span class=\"lineno\">  282</span> </div>\n-<div class=\"line\"><a id=\"l00283\" name=\"l00283\"></a><span class=\"lineno\">  283</span>    REAL frac = (REAL)<a class=\"code hl_function\" href=\"a00989.html#a3fb8c711847e677119dcecab48e27200\">GetParamFraction</a>();</div>\n-<div class=\"line\"><a id=\"l00284\" name=\"l00284\"></a><span class=\"lineno\">  284</span> </div>\n-<div class=\"line\"><a id=\"l00285\" name=\"l00285\"></a><span class=\"lineno\">  285</span>    u = (u + (REAL)<a class=\"code hl_function\" href=\"a00989.html#a5e290d380300d960b35a9e4bb36532b3\">GetU</a>()) * frac;</div>\n-<div class=\"line\"><a id=\"l00286\" name=\"l00286\"></a><span class=\"lineno\">  286</span>    v = (v + (REAL)<a class=\"code hl_function\" href=\"a00989.html#adf00c825e17a25a22eddd4a5dc3f3ea2\">GetV</a>()) * frac;</div>\n-<div class=\"line\"><a id=\"l00287\" name=\"l00287\"></a><span class=\"lineno\">  287</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00288\" name=\"l00288\"></a><span class=\"lineno\">  288</span> </div>\n-<div class=\"line\"><a id=\"l00289\" name=\"l00289\"></a><span class=\"lineno\">  289</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span></div>\n-<div class=\"foldopen\" id=\"foldopen00290\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00290\" name=\"l00290\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00989.html#a117b0b4f76b0e63ad1f6a3d83591f034\">  290</a></span><a class=\"code hl_function\" href=\"a00989.html#a117b0b4f76b0e63ad1f6a3d83591f034\">PatchParam::IsTriangleRotated</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00291\" name=\"l00291\"></a><span class=\"lineno\">  291</span> </div>\n-<div class=\"line\"><a id=\"l00292\" name=\"l00292\"></a><span class=\"lineno\">  292</span>    <span class=\"keywordflow\">return</span> (<a class=\"code hl_function\" href=\"a00989.html#a5e290d380300d960b35a9e4bb36532b3\">GetU</a>() + <a class=\"code hl_function\" href=\"a00989.html#adf00c825e17a25a22eddd4a5dc3f3ea2\">GetV</a>()) &gt;= (1 &lt;&lt; <a class=\"code hl_function\" href=\"a00989.html#a75d02f3fb15201f2a2ca9850f77db8bb\">GetDepth</a>());</div>\n-<div class=\"line\"><a id=\"l00293\" name=\"l00293\"></a><span class=\"lineno\">  293</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00294\" name=\"l00294\"></a><span class=\"lineno\">  294</span> </div>\n-<div class=\"line\"><a id=\"l00295\" name=\"l00295\"></a><span class=\"lineno\">  295</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00296\" name=\"l00296\"></a><span class=\"lineno\">  296</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00297\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00297\" name=\"l00297\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00989.html#a2adc7ff754a40f9a22c04cf2ab04d75c\">  297</a></span><a class=\"code hl_function\" href=\"a00989.html#a2adc7ff754a40f9a22c04cf2ab04d75c\">PatchParam::NormalizeTriangle</a>( REAL &amp; u, REAL &amp; v )<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00298\" name=\"l00298\"></a><span class=\"lineno\">  298</span> </div>\n-<div class=\"line\"><a id=\"l00299\" name=\"l00299\"></a><span class=\"lineno\">  299</span>    <span class=\"keywordflow\">if</span> (<a class=\"code hl_function\" href=\"a00989.html#a117b0b4f76b0e63ad1f6a3d83591f034\">IsTriangleRotated</a>()) {</div>\n-<div class=\"line\"><a id=\"l00300\" name=\"l00300\"></a><span class=\"lineno\">  300</span>        REAL fracInv = (REAL)(1.0f / <a class=\"code hl_function\" href=\"a00989.html#a3fb8c711847e677119dcecab48e27200\">GetParamFraction</a>());</div>\n-<div class=\"line\"><a id=\"l00301\" name=\"l00301\"></a><span class=\"lineno\">  301</span> </div>\n-<div class=\"line\"><a id=\"l00302\" name=\"l00302\"></a><span class=\"lineno\">  302</span>        <span class=\"keywordtype\">int</span> depthFactor = 1 &lt;&lt; <a class=\"code hl_function\" href=\"a00989.html#a75d02f3fb15201f2a2ca9850f77db8bb\">GetDepth</a>();</div>\n-<div class=\"line\"><a id=\"l00303\" name=\"l00303\"></a><span class=\"lineno\">  303</span>        u = (REAL)(depthFactor - <a class=\"code hl_function\" href=\"a00989.html#a5e290d380300d960b35a9e4bb36532b3\">GetU</a>()) - (u * fracInv);</div>\n-<div class=\"line\"><a id=\"l00304\" name=\"l00304\"></a><span class=\"lineno\">  304</span>        v = (REAL)(depthFactor - <a class=\"code hl_function\" href=\"a00989.html#adf00c825e17a25a22eddd4a5dc3f3ea2\">GetV</a>()) - (v * fracInv);</div>\n-<div class=\"line\"><a id=\"l00305\" name=\"l00305\"></a><span class=\"lineno\">  305</span>    } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00306\" name=\"l00306\"></a><span class=\"lineno\">  306</span>        <a class=\"code hl_function\" href=\"a00989.html#af348a1feaddb11b275b5291bfe7e76f7\">Normalize</a>(u, v);</div>\n-<div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\">  307</span>    }</div>\n-<div class=\"line\"><a id=\"l00308\" name=\"l00308\"></a><span class=\"lineno\">  308</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00309\" name=\"l00309\"></a><span class=\"lineno\">  309</span> </div>\n-<div class=\"line\"><a id=\"l00310\" name=\"l00310\"></a><span class=\"lineno\">  310</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00311\" name=\"l00311\"></a><span class=\"lineno\">  311</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00312\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00312\" name=\"l00312\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00989.html#acf6abf4b1514b90d77bff5c2563ef1c3\">  312</a></span><a class=\"code hl_function\" href=\"a00989.html#acf6abf4b1514b90d77bff5c2563ef1c3\">PatchParam::UnnormalizeTriangle</a>( REAL &amp; u, REAL &amp; v )<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00313\" name=\"l00313\"></a><span class=\"lineno\">  313</span> </div>\n-<div class=\"line\"><a id=\"l00314\" name=\"l00314\"></a><span class=\"lineno\">  314</span>    <span class=\"keywordflow\">if</span> (<a class=\"code hl_function\" href=\"a00989.html#a117b0b4f76b0e63ad1f6a3d83591f034\">IsTriangleRotated</a>()) {</div>\n-<div class=\"line\"><a id=\"l00315\" name=\"l00315\"></a><span class=\"lineno\">  315</span>        REAL frac = <a class=\"code hl_function\" href=\"a00989.html#a3fb8c711847e677119dcecab48e27200\">GetParamFraction</a>();</div>\n-<div class=\"line\"><a id=\"l00316\" name=\"l00316\"></a><span class=\"lineno\">  316</span> </div>\n-<div class=\"line\"><a id=\"l00317\" name=\"l00317\"></a><span class=\"lineno\">  317</span>        <span class=\"keywordtype\">int</span> depthFactor = 1 &lt;&lt; <a class=\"code hl_function\" href=\"a00989.html#a75d02f3fb15201f2a2ca9850f77db8bb\">GetDepth</a>();</div>\n-<div class=\"line\"><a id=\"l00318\" name=\"l00318\"></a><span class=\"lineno\">  318</span>        u = ((REAL)(depthFactor - <a class=\"code hl_function\" href=\"a00989.html#a5e290d380300d960b35a9e4bb36532b3\">GetU</a>()) - u) * frac;</div>\n-<div class=\"line\"><a id=\"l00319\" name=\"l00319\"></a><span class=\"lineno\">  319</span>        v = ((REAL)(depthFactor - <a class=\"code hl_function\" href=\"a00989.html#adf00c825e17a25a22eddd4a5dc3f3ea2\">GetV</a>()) - v) * frac;</div>\n-<div class=\"line\"><a id=\"l00320\" name=\"l00320\"></a><span class=\"lineno\">  320</span>    } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00321\" name=\"l00321\"></a><span class=\"lineno\">  321</span>        <a class=\"code hl_function\" href=\"a00989.html#ac1285d0e8771e821487cb18d0a324097\">Unnormalize</a>(u, v);</div>\n-<div class=\"line\"><a id=\"l00322\" name=\"l00322\"></a><span class=\"lineno\">  322</span>    }</div>\n-<div class=\"line\"><a id=\"l00323\" name=\"l00323\"></a><span class=\"lineno\">  323</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\">  324</span> </div>\n-<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\">  325</span>} <span class=\"comment\">// end namespace Far</span></div>\n-<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\">  326</span> </div>\n-<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\">  327</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\">  328</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\">  329</span> </div>\n-<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\">  330</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\">  331</span> </div>\n-<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\">  332</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_FAR_PATCH_PARAM */</span><span class=\"preprocessor\"></span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa00908_html_a3139c7c52ddf26b2403e8e95ff63eeb3\"><div class=\"ttname\"><a href=\"a00908.html#a3139c7c52ddf26b2403e8e95ff63eeb3\">OpenSubdiv::OPENSUBDIV_VERSION::Far::ConstPatchParamArray</a></div><div class=\"ttdeci\">Vtr::ConstArray&lt; PatchParam &gt; ConstPatchParamArray</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00755_source.html#l00246\">patchParam.h:246</a></div></div>\n-<div class=\"ttc\" id=\"aa00908_html_a46ea68db89cc3d55c4191ef7648281ce\"><div class=\"ttname\"><a href=\"a00908.html#a46ea68db89cc3d55c4191ef7648281ce\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchParamTable</a></div><div class=\"ttdeci\">std::vector&lt; PatchParam &gt; PatchParamTable</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00755_source.html#l00243\">patchParam.h:243</a></div></div>\n-<div class=\"ttc\" id=\"aa00908_html_ab34c85a48f33dfe7b8bf4d966fdebbf2\"><div class=\"ttname\"><a href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">OpenSubdiv::OPENSUBDIV_VERSION::Far::Index</a></div><div class=\"ttdeci\">Vtr::Index Index</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01486_source.html#l00041\">types.h:41</a></div></div>\n-<div class=\"ttc\" id=\"aa00908_html_abe07210a029a01571c54276ae28b4d88\"><div class=\"ttname\"><a href=\"a00908.html#abe07210a029a01571c54276ae28b4d88\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchParamArray</a></div><div class=\"ttdeci\">Vtr::Array&lt; PatchParam &gt; PatchParamArray</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00755_source.html#l00245\">patchParam.h:245</a></div></div>\n-<div class=\"ttc\" id=\"aa00989_html\"><div class=\"ttname\"><a href=\"a00989.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchParam</a></div><div class=\"ttdoc\">Patch parameterization.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00755_source.html#l00152\">patchParam.h:152</a></div></div>\n-<div class=\"ttc\" id=\"aa00989_html_a117b0b4f76b0e63ad1f6a3d83591f034\"><div class=\"ttname\"><a href=\"a00989.html#a117b0b4f76b0e63ad1f6a3d83591f034\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchParam::IsTriangleRotated</a></div><div class=\"ttdeci\">bool IsTriangleRotated() const</div><div class=\"ttdoc\">Returns if a triangular patch is parametrically rotated 180 degrees.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00755_source.html#l00290\">patchParam.h:290</a></div></div>\n-<div class=\"ttc\" id=\"aa00989_html_a193470573424fe6b2e91f317509b5897\"><div class=\"ttname\"><a href=\"a00989.html#a193470573424fe6b2e91f317509b5897\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchParam::IsRegular</a></div><div class=\"ttdeci\">bool IsRegular() const</div><div class=\"ttdoc\">Returns whether the patch is regular.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00755_source.html#l00228\">patchParam.h:228</a></div></div>\n-<div class=\"ttc\" id=\"aa00989_html_a2adc7ff754a40f9a22c04cf2ab04d75c\"><div class=\"ttname\"><a href=\"a00989.html#a2adc7ff754a40f9a22c04cf2ab04d75c\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchParam::NormalizeTriangle</a></div><div class=\"ttdeci\">void NormalizeTriangle(REAL &amp;u, REAL &amp;v) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00755_source.html#l00297\">patchParam.h:297</a></div></div>\n-<div class=\"ttc\" id=\"aa00989_html_a3ce6d530fdd758f089cd61589cf13937\"><div class=\"ttname\"><a href=\"a00989.html#a3ce6d530fdd758f089cd61589cf13937\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchParam::GetBoundary</a></div><div class=\"ttdeci\">unsigned short GetBoundary() const</div><div class=\"ttdoc\">Returns the boundary edge encoding for the patch.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00755_source.html#l00191\">patchParam.h:191</a></div></div>\n-<div class=\"ttc\" id=\"aa00989_html_a3e80fdc78d4e976e88f8d035a6bdfe9a\"><div class=\"ttname\"><a href=\"a00989.html#a3e80fdc78d4e976e88f8d035a6bdfe9a\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchParam::GetTransition</a></div><div class=\"ttdeci\">unsigned short GetTransition() const</div><div class=\"ttdoc\">Returns the transition edge encoding for the patch.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00755_source.html#l00188\">patchParam.h:188</a></div></div>\n-<div class=\"ttc\" id=\"aa00989_html_a3fb8c711847e677119dcecab48e27200\"><div class=\"ttname\"><a href=\"a00989.html#a3fb8c711847e677119dcecab48e27200\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchParam::GetParamFraction</a></div><div class=\"ttdeci\">float GetParamFraction() const</div><div class=\"ttdoc\">Returns the fraction of unit parametric space covered by this face.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00755_source.html#l00265\">patchParam.h:265</a></div></div>\n-<div class=\"ttc\" id=\"aa00989_html_a5e290d380300d960b35a9e4bb36532b3\"><div class=\"ttname\"><a href=\"a00989.html#a5e290d380300d960b35a9e4bb36532b3\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchParam::GetU</a></div><div class=\"ttdeci\">unsigned short GetU() const</div><div class=\"ttdoc\">Returns the log2 value of the u parameter at the first corner of the patch.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00755_source.html#l00181\">patchParam.h:181</a></div></div>\n-<div class=\"ttc\" id=\"aa00989_html_a71fe5a723e7c3a29b26cb6a0af33a7ee\"><div class=\"ttname\"><a href=\"a00989.html#a71fe5a723e7c3a29b26cb6a0af33a7ee\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchParam::GetFaceId</a></div><div class=\"ttdeci\">Index GetFaceId() const</div><div class=\"ttdoc\">Returns the faceid.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00755_source.html#l00177\">patchParam.h:177</a></div></div>\n-<div class=\"ttc\" id=\"aa00989_html_a75d02f3fb15201f2a2ca9850f77db8bb\"><div class=\"ttname\"><a href=\"a00989.html#a75d02f3fb15201f2a2ca9850f77db8bb\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchParam::GetDepth</a></div><div class=\"ttdeci\">unsigned short GetDepth() const</div><div class=\"ttdoc\">Returns the level of subdivision of the patch.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00755_source.html#l00197\">patchParam.h:197</a></div></div>\n-<div class=\"ttc\" id=\"aa00989_html_a8a53fc370a76c5d29d610d9ae926f4fe\"><div class=\"ttname\"><a href=\"a00989.html#a8a53fc370a76c5d29d610d9ae926f4fe\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchParam::NonQuadRoot</a></div><div class=\"ttdeci\">bool NonQuadRoot() const</div><div class=\"ttdoc\">True if the parent base face is a non-quad.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00755_source.html#l00194\">patchParam.h:194</a></div></div>\n-<div class=\"ttc\" id=\"aa00989_html_a98adcbce89caf00ca5c67c978d1f8576\"><div class=\"ttname\"><a href=\"a00989.html#a98adcbce89caf00ca5c67c978d1f8576\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchParam::Set</a></div><div class=\"ttdeci\">void Set(Index faceid, short u, short v, unsigned short depth, bool nonquad, unsigned short boundary, unsigned short transition, bool regular=false)</div><div class=\"ttdoc\">Sets the values of the bit fields.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00755_source.html#l00249\">patchParam.h:249</a></div></div>\n-<div class=\"ttc\" id=\"aa00989_html_aa71d36872f416feaa853788a7a7a7ef8\"><div class=\"ttname\"><a href=\"a00989.html#aa71d36872f416feaa853788a7a7a7ef8\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchParam::Clear</a></div><div class=\"ttdeci\">void Clear()</div><div class=\"ttdoc\">Resets everything to 0.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00755_source.html#l00174\">patchParam.h:174</a></div></div>\n-<div class=\"ttc\" id=\"aa00989_html_aa992496f945c3e0ffb3a55ca84a7cb60\"><div class=\"ttname\"><a href=\"a00989.html#aa992496f945c3e0ffb3a55ca84a7cb60\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchParam::field1</a></div><div class=\"ttdeci\">unsigned int field1</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00755_source.html#l00231\">patchParam.h:231</a></div></div>\n-<div class=\"ttc\" id=\"aa00989_html_ac1285d0e8771e821487cb18d0a324097\"><div class=\"ttname\"><a href=\"a00989.html#ac1285d0e8771e821487cb18d0a324097\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchParam::Unnormalize</a></div><div class=\"ttdeci\">void Unnormalize(REAL &amp;u, REAL &amp;v) const</div><div class=\"ttdoc\">A (u,v) pair in a normalized parametric space is mapped back into the fraction of parametric space co...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00755_source.html#l00281\">patchParam.h:281</a></div></div>\n-<div class=\"ttc\" id=\"aa00989_html_acf6abf4b1514b90d77bff5c2563ef1c3\"><div class=\"ttname\"><a href=\"a00989.html#acf6abf4b1514b90d77bff5c2563ef1c3\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchParam::UnnormalizeTriangle</a></div><div class=\"ttdeci\">void UnnormalizeTriangle(REAL &amp;u, REAL &amp;v) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00755_source.html#l00312\">patchParam.h:312</a></div></div>\n-<div class=\"ttc\" id=\"aa00989_html_adf00c825e17a25a22eddd4a5dc3f3ea2\"><div class=\"ttname\"><a href=\"a00989.html#adf00c825e17a25a22eddd4a5dc3f3ea2\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchParam::GetV</a></div><div class=\"ttdeci\">unsigned short GetV() const</div><div class=\"ttdoc\">Returns the log2 value of the v parameter at the first corner of the patch.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00755_source.html#l00185\">patchParam.h:185</a></div></div>\n-<div class=\"ttc\" id=\"aa00989_html_ae918c114a445f892134cb94b70d3f07e\"><div class=\"ttname\"><a href=\"a00989.html#ae918c114a445f892134cb94b70d3f07e\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchParam::field0</a></div><div class=\"ttdeci\">unsigned int field0</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00755_source.html#l00230\">patchParam.h:230</a></div></div>\n-<div class=\"ttc\" id=\"aa00989_html_af348a1feaddb11b275b5291bfe7e76f7\"><div class=\"ttname\"><a href=\"a00989.html#af348a1feaddb11b275b5291bfe7e76f7\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchParam::Normalize</a></div><div class=\"ttdeci\">void Normalize(REAL &amp;u, REAL &amp;v) const</div><div class=\"ttdoc\">A (u,v) pair in the fraction of parametric space covered by this face is mapped into a normalized par...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00755_source.html#l00271\">patchParam.h:271</a></div></div>\n-<div class=\"ttc\" id=\"aa01353_html\"><div class=\"ttname\"><a href=\"a01353.html\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00683_source.html#l00053\">array.h:53</a></div></div>\n-<div class=\"ttc\" id=\"aa01357_html\"><div class=\"ttname\"><a href=\"a01357.html\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::Array</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00683_source.html#l00105\">array.h:105</a></div></div>\n+<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#if defined(OPENSUBDIV_HAS_CLEW)</span></div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#  include &lt;clew.h&gt;</span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#else</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#  if defined(__APPLE__)</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#    include &lt;OpenCL/opencl.h&gt;</span></div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"preprocessor\">#  else</span></div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"preprocessor\">#    include &lt;CL/opencl.h&gt;</span></div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"preprocessor\">#  endif</span></div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"preprocessor\">#endif</span></div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span> </div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_CL_UTIL_H</span></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7f420b72a822828cfa8b0561c695a5cc.html\">far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00755.html\">patchParam.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00755.html\">opencl.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-patchParam.h\n+opencl.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2013 Pixar\n+2// Copyright 2014 Pixar\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -24,262 +24,25 @@\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n 24\n-25#ifndef OPENSUBDIV3_FAR_PATCH_PARAM_H\n-26#define OPENSUBDIV3_FAR_PATCH_PARAM_H\n+25#ifndef OPENSUBDIV3_OSD_OPENCL_H\n+26#define OPENSUBDIV3_OSD_OPENCL_H\n 27\n-28#include \"../version.h\"\n-29\n-30#include \"../far/types.h\"\n-31\n-32namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-33namespace OPENSUBDIV_VERSION {\n-34\n-35namespace Far {\n-36\n-101\n-_\b1_\b5_\b2struct _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm {\n-168 void _\bS_\be_\bt(_\bI_\bn_\bd_\be_\bx faceid, short u, short v,\n-169 unsigned short depth, bool nonquad,\n-170 unsigned short boundary, unsigned short transition,\n-171 bool regular = false);\n-172\n-_\b1_\b7_\b4 void _\bC_\bl_\be_\ba_\br() { _\bf_\bi_\be_\bl_\bd_\b0 = _\bf_\bi_\be_\bl_\bd_\b1 = 0; }\n-175\n-_\b1_\b7_\b7 _\bI_\bn_\bd_\be_\bx _\bG_\be_\bt_\bF_\ba_\bc_\be_\bI_\bd() const { return _\bI_\bn_\bd_\be_\bx(unpack(_\bf_\bi_\be_\bl_\bd_\b0,28,0)); }\n-178\n-_\b1_\b8_\b1 unsigned short _\bG_\be_\bt_\bU() const { return (unsigned short)unpack(_\bf_\bi_\be_\bl_\bd_\b1,10,22);\n-}\n-182\n-_\b1_\b8_\b5 unsigned short _\bG_\be_\bt_\bV() const { return (unsigned short)unpack(_\bf_\bi_\be_\bl_\bd_\b1,10,12);\n-}\n-186\n-_\b1_\b8_\b8 unsigned short _\bG_\be_\bt_\bT_\br_\ba_\bn_\bs_\bi_\bt_\bi_\bo_\bn() const { return (unsigned short)unpack\n-(_\bf_\bi_\be_\bl_\bd_\b0,4,28); }\n-189\n-_\b1_\b9_\b1 unsigned short _\bG_\be_\bt_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by() const { return (unsigned short)unpack\n-(_\bf_\bi_\be_\bl_\bd_\b1,5,7); }\n-192\n-_\b1_\b9_\b4 bool _\bN_\bo_\bn_\bQ_\bu_\ba_\bd_\bR_\bo_\bo_\bt() const { return (unpack(_\bf_\bi_\be_\bl_\bd_\b1,1,4) != 0); }\n-195\n-_\b1_\b9_\b7 unsigned short _\bG_\be_\bt_\bD_\be_\bp_\bt_\bh() const { return (unsigned short)unpack\n-(_\bf_\bi_\be_\bl_\bd_\b1,4,0); }\n-198\n-200 float _\bG_\be_\bt_\bP_\ba_\br_\ba_\bm_\bF_\br_\ba_\bc_\bt_\bi_\bo_\bn() const;\n-201\n-208 template <typename REAL>\n-209 void _\bN_\bo_\br_\bm_\ba_\bl_\bi_\bz_\be( REAL & u, REAL & v ) const;\n-210 template <typename REAL>\n-211 void _\bN_\bo_\br_\bm_\ba_\bl_\bi_\bz_\be_\bT_\br_\bi_\ba_\bn_\bg_\bl_\be( REAL & u, REAL & v ) const;\n-212\n-219 template <typename REAL>\n-220 void _\bU_\bn_\bn_\bo_\br_\bm_\ba_\bl_\bi_\bz_\be( REAL & u, REAL & v ) const;\n-221 template <typename REAL>\n-222 void _\bU_\bn_\bn_\bo_\br_\bm_\ba_\bl_\bi_\bz_\be_\bT_\br_\bi_\ba_\bn_\bg_\bl_\be( REAL & u, REAL & v ) const;\n-223\n-225 bool _\bI_\bs_\bT_\br_\bi_\ba_\bn_\bg_\bl_\be_\bR_\bo_\bt_\ba_\bt_\be_\bd() const;\n-226\n-_\b2_\b2_\b8 bool _\bI_\bs_\bR_\be_\bg_\bu_\bl_\ba_\br() const { return (unpack(_\bf_\bi_\be_\bl_\bd_\b1,1,5) != 0); }\n-229\n-_\b2_\b3_\b0 unsigned int _\bf_\bi_\be_\bl_\bd_\b0:32;\n-_\b2_\b3_\b1 unsigned int _\bf_\bi_\be_\bl_\bd_\b1:32;\n-232\n-233private:\n-234 unsigned int pack(unsigned int value, int width, int offset) const {\n-235 return (unsigned int)((value & ((1<<width)-1)) << offset);\n-236 }\n-237\n-238 unsigned int unpack(unsigned int value, int width, int offset) const {\n-239 return (unsigned int)((value >> offset) & ((1<<width)-1));\n-240 }\n-241};\n-242\n-_\b2_\b4_\b3typedef std::vector<PatchParam> _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bT_\ba_\bb_\bl_\be;\n-244\n-_\b2_\b4_\b5typedef _\bV_\bt_\br_\b:_\b:_\bA_\br_\br_\ba_\by_\b<_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b> _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bA_\br_\br_\ba_\by;\n-_\b2_\b4_\b6typedef _\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by_\b<_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b> _\bC_\bo_\bn_\bs_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bA_\br_\br_\ba_\by;\n-247\n-248inline void\n-_\b2_\b4_\b9_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b:_\b:_\bS_\be_\bt(_\bI_\bn_\bd_\be_\bx faceid, short u, short v,\n-250 unsigned short depth, bool nonquad,\n-251 unsigned short boundary, unsigned short transition,\n-252 bool regular) {\n-253 _\bf_\bi_\be_\bl_\bd_\b0 = pack(faceid, 28, 0) |\n-254 pack(transition, 4, 28);\n-255\n-256 _\bf_\bi_\be_\bl_\bd_\b1 = pack(u, 10, 22) |\n-257 pack(v, 10, 12) |\n-258 pack(boundary, 5, 7) |\n-259 pack(regular, 1, 5) |\n-260 pack(nonquad, 1, 4) |\n-261 pack(depth, 4, 0);\n-262}\n-263\n-264inline float\n-_\b2_\b6_\b5_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b:_\b:_\bG_\be_\bt_\bP_\ba_\br_\ba_\bm_\bF_\br_\ba_\bc_\bt_\bi_\bo_\bn( ) const {\n-266 return 1.0f / (float)(1 << (_\bG_\be_\bt_\bD_\be_\bp_\bt_\bh() - _\bN_\bo_\bn_\bQ_\bu_\ba_\bd_\bR_\bo_\bo_\bt()));\n-267}\n-268\n-269template <typename REAL>\n-270inline void\n-_\b2_\b7_\b1_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b:_\b:_\bN_\bo_\br_\bm_\ba_\bl_\bi_\bz_\be( REAL & u, REAL & v ) const {\n-272\n-273 REAL fracInv = (REAL)(1.0f / _\bG_\be_\bt_\bP_\ba_\br_\ba_\bm_\bF_\br_\ba_\bc_\bt_\bi_\bo_\bn());\n-274\n-275 u = u * fracInv - (REAL)_\bG_\be_\bt_\bU();\n-276 v = v * fracInv - (REAL)_\bG_\be_\bt_\bV();\n-277}\n-278\n-279template <typename REAL>\n-280inline void\n-_\b2_\b8_\b1_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b:_\b:_\bU_\bn_\bn_\bo_\br_\bm_\ba_\bl_\bi_\bz_\be( REAL & u, REAL & v ) const {\n-282\n-283 REAL frac = (REAL)_\bG_\be_\bt_\bP_\ba_\br_\ba_\bm_\bF_\br_\ba_\bc_\bt_\bi_\bo_\bn();\n-284\n-285 u = (u + (REAL)_\bG_\be_\bt_\bU()) * frac;\n-286 v = (v + (REAL)_\bG_\be_\bt_\bV()) * frac;\n-287}\n-288\n-289inline bool\n-_\b2_\b9_\b0_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b:_\b:_\bI_\bs_\bT_\br_\bi_\ba_\bn_\bg_\bl_\be_\bR_\bo_\bt_\ba_\bt_\be_\bd() const {\n-291\n-292 return (_\bG_\be_\bt_\bU() + _\bG_\be_\bt_\bV()) >= (1 << _\bG_\be_\bt_\bD_\be_\bp_\bt_\bh());\n-293}\n-294\n-295template <typename REAL>\n-296inline void\n-_\b2_\b9_\b7_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b:_\b:_\bN_\bo_\br_\bm_\ba_\bl_\bi_\bz_\be_\bT_\br_\bi_\ba_\bn_\bg_\bl_\be( REAL & u, REAL & v ) const {\n-298\n-299 if (_\bI_\bs_\bT_\br_\bi_\ba_\bn_\bg_\bl_\be_\bR_\bo_\bt_\ba_\bt_\be_\bd()) {\n-300 REAL fracInv = (REAL)(1.0f / _\bG_\be_\bt_\bP_\ba_\br_\ba_\bm_\bF_\br_\ba_\bc_\bt_\bi_\bo_\bn());\n-301\n-302 int depthFactor = 1 << _\bG_\be_\bt_\bD_\be_\bp_\bt_\bh();\n-303 u = (REAL)(depthFactor - _\bG_\be_\bt_\bU()) - (u * fracInv);\n-304 v = (REAL)(depthFactor - _\bG_\be_\bt_\bV()) - (v * fracInv);\n-305 } else {\n-306 _\bN_\bo_\br_\bm_\ba_\bl_\bi_\bz_\be(u, v);\n-307 }\n-308}\n-309\n-310template <typename REAL>\n-311inline void\n-_\b3_\b1_\b2_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b:_\b:_\bU_\bn_\bn_\bo_\br_\bm_\ba_\bl_\bi_\bz_\be_\bT_\br_\bi_\ba_\bn_\bg_\bl_\be( REAL & u, REAL & v ) const {\n-313\n-314 if (_\bI_\bs_\bT_\br_\bi_\ba_\bn_\bg_\bl_\be_\bR_\bo_\bt_\ba_\bt_\be_\bd()) {\n-315 REAL frac = _\bG_\be_\bt_\bP_\ba_\br_\ba_\bm_\bF_\br_\ba_\bc_\bt_\bi_\bo_\bn();\n-316\n-317 int depthFactor = 1 << _\bG_\be_\bt_\bD_\be_\bp_\bt_\bh();\n-318 u = ((REAL)(depthFactor - _\bG_\be_\bt_\bU()) - u) * frac;\n-319 v = ((REAL)(depthFactor - _\bG_\be_\bt_\bV()) - v) * frac;\n-320 } else {\n-321 _\bU_\bn_\bn_\bo_\br_\bm_\ba_\bl_\bi_\bz_\be(u, v);\n-322 }\n-323}\n-324\n-325} // end namespace Far\n-326\n-327} // end namespace OPENSUBDIV_VERSION\n-328using namespace OPENSUBDIV_VERSION;\n-329\n-330} // end namespace OpenSubdiv\n-331\n-332#endif /* OPENSUBDIV3_FAR_PATCH_PARAM */\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bA_\br_\br_\ba_\by\n-Vtr::ConstArray< PatchParam > ConstPatchParamArray\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b._\bh_\b:_\b2_\b4_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bT_\ba_\bb_\bl_\be\n-std::vector< PatchParam > PatchParamTable\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b._\bh_\b:_\b2_\b4_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx\n-Vtr::Index Index\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b4_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bA_\br_\br_\ba_\by\n-Vtr::Array< PatchParam > PatchParamArray\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b._\bh_\b:_\b2_\b4_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm\n-Patch parameterization.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b._\bh_\b:_\b1_\b5_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b:_\b:_\bI_\bs_\bT_\br_\bi_\ba_\bn_\bg_\bl_\be_\bR_\bo_\bt_\ba_\bt_\be_\bd\n-bool IsTriangleRotated() const\n-Returns if a triangular patch is parametrically rotated 180 degrees.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b._\bh_\b:_\b2_\b9_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b:_\b:_\bI_\bs_\bR_\be_\bg_\bu_\bl_\ba_\br\n-bool IsRegular() const\n-Returns whether the patch is regular.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b._\bh_\b:_\b2_\b2_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b:_\b:_\bN_\bo_\br_\bm_\ba_\bl_\bi_\bz_\be_\bT_\br_\bi_\ba_\bn_\bg_\bl_\be\n-void NormalizeTriangle(REAL &u, REAL &v) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b._\bh_\b:_\b2_\b9_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b:_\b:_\bG_\be_\bt_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by\n-unsigned short GetBoundary() const\n-Returns the boundary edge encoding for the patch.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b._\bh_\b:_\b1_\b9_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b:_\b:_\bG_\be_\bt_\bT_\br_\ba_\bn_\bs_\bi_\bt_\bi_\bo_\bn\n-unsigned short GetTransition() const\n-Returns the transition edge encoding for the patch.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b._\bh_\b:_\b1_\b8_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b:_\b:_\bG_\be_\bt_\bP_\ba_\br_\ba_\bm_\bF_\br_\ba_\bc_\bt_\bi_\bo_\bn\n-float GetParamFraction() const\n-Returns the fraction of unit parametric space covered by this face.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b._\bh_\b:_\b2_\b6_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b:_\b:_\bG_\be_\bt_\bU\n-unsigned short GetU() const\n-Returns the log2 value of the u parameter at the first corner of the patch.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b._\bh_\b:_\b1_\b8_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b:_\b:_\bG_\be_\bt_\bF_\ba_\bc_\be_\bI_\bd\n-Index GetFaceId() const\n-Returns the faceid.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b._\bh_\b:_\b1_\b7_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b:_\b:_\bG_\be_\bt_\bD_\be_\bp_\bt_\bh\n-unsigned short GetDepth() const\n-Returns the level of subdivision of the patch.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b._\bh_\b:_\b1_\b9_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b:_\b:_\bN_\bo_\bn_\bQ_\bu_\ba_\bd_\bR_\bo_\bo_\bt\n-bool NonQuadRoot() const\n-True if the parent base face is a non-quad.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b._\bh_\b:_\b1_\b9_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b:_\b:_\bS_\be_\bt\n-void Set(Index faceid, short u, short v, unsigned short depth, bool nonquad,\n-unsigned short boundary, unsigned short transition, bool regular=false)\n-Sets the values of the bit fields.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b._\bh_\b:_\b2_\b4_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b:_\b:_\bC_\bl_\be_\ba_\br\n-void Clear()\n-Resets everything to 0.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b._\bh_\b:_\b1_\b7_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b1\n-unsigned int field1\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b._\bh_\b:_\b2_\b3_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b:_\b:_\bU_\bn_\bn_\bo_\br_\bm_\ba_\bl_\bi_\bz_\be\n-void Unnormalize(REAL &u, REAL &v) const\n-A (u,v) pair in a normalized parametric space is mapped back into the fraction\n-of parametric space co...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b._\bh_\b:_\b2_\b8_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b:_\b:_\bU_\bn_\bn_\bo_\br_\bm_\ba_\bl_\bi_\bz_\be_\bT_\br_\bi_\ba_\bn_\bg_\bl_\be\n-void UnnormalizeTriangle(REAL &u, REAL &v) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b._\bh_\b:_\b3_\b1_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b:_\b:_\bG_\be_\bt_\bV\n-unsigned short GetV() const\n-Returns the log2 value of the v parameter at the first corner of the patch.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b._\bh_\b:_\b1_\b8_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b0\n-unsigned int field0\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b._\bh_\b:_\b2_\b3_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b:_\b:_\bN_\bo_\br_\bm_\ba_\bl_\bi_\bz_\be\n-void Normalize(REAL &u, REAL &v) const\n-A (u,v) pair in the fraction of parametric space covered by this face is mapped\n-into a normalized par...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b._\bh_\b:_\b2_\b7_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b5_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bA_\br_\br_\ba_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b1_\b0_\b5\n+28#if defined(OPENSUBDIV_HAS_CLEW)\n+29# include <clew.h>\n+30#else\n+31# if defined(__APPLE__)\n+32# include <OpenCL/opencl.h>\n+33# else\n+34# include <CL/opencl.h>\n+35# endif\n+36#endif\n+37\n+38#endif // OPENSUBDIV3_OSD_CL_UTIL_H\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bf_\ba_\br\n-    * _\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bo_\bp_\be_\bn_\bc_\bl_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00758.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00758.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/far/stencilTable.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/osd/tbbKernel.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -88,68 +88,51 @@\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n-<a href=\"#nested-classes\">Classes</a> &#124;\n-<a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">stencilTable.h File Reference</div></div>\n+<a href=\"#namespaces\">Namespaces</a> &#124;\n+<a href=\"#func-members\">Functions</a>  </div>\n+  <div class=\"headertitle\"><div class=\"title\">tbbKernel.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a01486_source.html\">../far/types.h</a>&quot;</code><br />\n-<code>#include &lt;cassert&gt;</code><br />\n-<code>#include &lt;cstring&gt;</code><br />\n-<code>#include &lt;vector&gt;</code><br />\n-<code>#include &lt;iostream&gt;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00857_source.html\">../far/patchDescriptor.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00836_source.html\">../far/patchParam.h</a>&quot;</code><br />\n </div>\n <p><a href=\"a00758_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n-<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n-Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01053.html\">StencilReal&lt; REAL &gt;</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Vertex stencil descriptor.  <a href=\"a01053.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01057.html\">Stencil</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Vertex stencil class wrapping the template for compatibility.  <a href=\"a01057.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01061.html\">StencilTableReal&lt; REAL &gt;</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Table of subdivision stencils.  <a href=\"a01061.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01065.html\">StencilTable</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"a01057.html\" title=\"Vertex stencil class wrapping the template for compatibility.\">Stencil</a> table class wrapping the template for compatibility.  <a href=\"a01065.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01069.html\">LimitStencilReal&lt; REAL &gt;</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Limit point stencil descriptor.  <a href=\"a01069.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01073.html\">LimitStencil</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Limit point stencil class wrapping the template for compatibility.  <a href=\"a01073.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01077.html\">LimitStencilTableReal&lt; REAL &gt;</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Table of limit subdivision stencils.  <a href=\"a01077.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01081.html\">LimitStencilTable</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Limit stencil table class wrapping the template for compatibility.  <a href=\"a01081.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-</table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far</a></td></tr>\n+<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+</table><table class=\"memberdecls\">\n+<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\n+Functions</h2></td></tr>\n+<tr class=\"memitem:a4a6a0fcc01638f2a0316b32ad158b485\" id=\"r_a4a6a0fcc01638f2a0316b32ad158b485\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html#a4a6a0fcc01638f2a0316b32ad158b485\">TbbEvalStencils</a> (float const *src, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;srcDesc, float *dst, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDesc, int const *sizes, int const *offsets, int const *indices, float const *weights, int start, int end)</td></tr>\n+<tr class=\"separator:a4a6a0fcc01638f2a0316b32ad158b485\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:af23c35537952bfdd493441e5c42ff2ed\" id=\"r_af23c35537952bfdd493441e5c42ff2ed\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html#af23c35537952bfdd493441e5c42ff2ed\">TbbEvalStencils</a> (float const *src, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;srcDesc, float *dst, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDesc, float *dstDu, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDuDesc, float *dstDv, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDvDesc, int const *sizes, int const *offsets, int const *indices, float const *weights, float const *duWeights, float const *dvWeights, int start, int end)</td></tr>\n+<tr class=\"separator:af23c35537952bfdd493441e5c42ff2ed\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:aa65ed860a2fa5935d99129a898a8f0b6\" id=\"r_aa65ed860a2fa5935d99129a898a8f0b6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html#aa65ed860a2fa5935d99129a898a8f0b6\">TbbEvalStencils</a> (float const *src, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;srcDesc, float *dst, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDesc, float *dstDu, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDuDesc, float *dstDv, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDvDesc, float *dstDuu, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDuuDesc, float *dstDuv, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDuvDesc, float *dstDvv, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDvvDesc, int const *sizes, int const *offsets, int const *indices, float const *weights, float const *duWeights, float const *dvWeights, float const *duuWeights, float const *duvWeights, float const *dvvWeights, int start, int end)</td></tr>\n+<tr class=\"separator:aa65ed860a2fa5935d99129a898a8f0b6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:a20e08be34d6183b6943ed7a1586eca4a\" id=\"r_a20e08be34d6183b6943ed7a1586eca4a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html#a20e08be34d6183b6943ed7a1586eca4a\">TbbEvalPatches</a> (float const *src, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;srcDesc, float *dst, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDesc, float *dstDu, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDuDesc, float *dstDv, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDvDesc, int numPatchCoords, const <a class=\"el\" href=\"a01321.html\">PatchCoord</a> *patchCoords, const <a class=\"el\" href=\"a01325.html\">PatchArray</a> *patchArrayBuffer, const int *patchIndexBuffer, const <a class=\"el\" href=\"a01329.html\">PatchParam</a> *patchParamBuffer)</td></tr>\n+<tr class=\"separator:a20e08be34d6183b6943ed7a1586eca4a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:aa0c3c264a43eeddc5cb3a58b006d3d32\" id=\"r_aa0c3c264a43eeddc5cb3a58b006d3d32\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html#aa0c3c264a43eeddc5cb3a58b006d3d32\">TbbEvalPatches</a> (float const *src, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;srcDesc, float *dst, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDesc, float *dstDu, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDuDesc, float *dstDv, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDvDesc, float *dstDuu, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDuuDesc, float *dstDuv, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDuvDesc, float *dstDvv, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDvvDesc, int numPatchCoords, const <a class=\"el\" href=\"a01321.html\">PatchCoord</a> *patchCoords, const <a class=\"el\" href=\"a01325.html\">PatchArray</a> *patchArrayBuffer, const int *patchIndexBuffer, const <a class=\"el\" href=\"a01329.html\">PatchParam</a> *patchParamBuffer)</td></tr>\n+<tr class=\"separator:aa0c3c264a43eeddc5cb3a58b006d3d32\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7f420b72a822828cfa8b0561c695a5cc.html\">far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00758.html\">stencilTable.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00758.html\">tbbKernel.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,51 +1,59 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-stencilTable.h File Reference\n+_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n+tbbKernel.h File Reference\n #include \"../version.h\"\n-#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n-#include <cassert>\n-#include <cstring>\n-#include <vector>\n-#include <iostream>\n+#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh\"\n+#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b._\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n-C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b<_\b _\bR_\bE_\bA_\bL_\b _\b>\n-\u00a0       Vertex stencil descriptor. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bS_\bt_\be_\bn_\bc_\bi_\bl\n-\u00a0       Vertex stencil class wrapping the template for compatibility. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\b _\bR_\bE_\bA_\bL_\b _\b>\n-\u00a0       Table of subdivision stencils. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n-\u00a0       _\bS_\bt_\be_\bn_\bc_\bi_\bl table class wrapping the template for compatibility. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b<_\b _\bR_\bE_\bA_\bL_\b _\b>\n-\u00a0       Limit point stencil descriptor. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl\n-\u00a0       Limit point stencil class wrapping the template for compatibility.\n-        _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\b _\bR_\bE_\bA_\bL_\b _\b>\n-\u00a0       Table of limit subdivision stencils. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n-\u00a0       Limit stencil table class wrapping the template for compatibility.\n-        _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n+\u00a0\n+F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n+void\u00a0 _\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs (float const *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc, float\n+      *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc, int const *sizes, int const\n+      *offsets, int const *indices, float const *weights, int start, int end)\n+\u00a0\n+void\u00a0 _\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs (float const *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc, float\n+      *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc, float *dstDu, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n+      const &dstDuDesc, float *dstDv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDvDesc, int\n+      const *sizes, int const *offsets, int const *indices, float const\n+      *weights, float const *duWeights, float const *dvWeights, int start, int\n+      end)\n+\u00a0\n+void\u00a0 _\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs (float const *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc, float\n+      *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc, float *dstDu, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n+      const &dstDuDesc, float *dstDv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDvDesc, float\n+      *dstDuu, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDuuDesc, float *dstDuv,\n+      _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDuvDesc, float *dstDvv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const\n+      &dstDvvDesc, int const *sizes, int const *offsets, int const *indices,\n+      float const *weights, float const *duWeights, float const *dvWeights,\n+      float const *duuWeights, float const *duvWeights, float const\n+      *dvvWeights, int start, int end)\n+\u00a0\n+void\u00a0 _\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs (float const *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc, float\n+      *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc, float *dstDu, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n+      const &dstDuDesc, float *dstDv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDvDesc, int\n+      numPatchCoords, const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd *patchCoords, const _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by\n+      *patchArrayBuffer, const int *patchIndexBuffer, const _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm\n+      *patchParamBuffer)\n+\u00a0\n+void\u00a0 _\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs (float const *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc, float\n+      *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc, float *dstDu, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n+      const &dstDuDesc, float *dstDv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDvDesc, float\n+      *dstDuu, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDuuDesc, float *dstDuv,\n+      _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDuvDesc, float *dstDvv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const\n+      &dstDvvDesc, int numPatchCoords, const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd *patchCoords, const\n+      _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by *patchArrayBuffer, const int *patchIndexBuffer, const\n+      _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm *patchParamBuffer)\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bf_\ba_\br\n-    * _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bt_\bb_\bb_\bK_\be_\br_\bn_\be_\bl_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00758.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00758.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,10 +1,7 @@\n var a00758 = [\n-    [\"StencilReal< REAL >\", \"a01053.html\", \"a01053\"],\n-    [\"Stencil\", \"a01057.html\", \"a01057\"],\n-    [\"StencilTableReal< REAL >\", \"a01061.html\", \"a01061\"],\n-    [\"StencilTable\", \"a01065.html\", \"a01065\"],\n-    [\"LimitStencilReal< REAL >\", \"a01069.html\", \"a01069\"],\n-    [\"LimitStencil\", \"a01073.html\", \"a01073\"],\n-    [\"LimitStencilTableReal< REAL >\", \"a01077.html\", \"a01077\"],\n-    [\"LimitStencilTable\", \"a01081.html\", \"a01081\"]\n+    [\"TbbEvalPatches\", \"a00758.html#aa0c3c264a43eeddc5cb3a58b006d3d32\", null],\n+    [\"TbbEvalPatches\", \"a00758.html#a20e08be34d6183b6943ed7a1586eca4a\", null],\n+    [\"TbbEvalStencils\", \"a00758.html#aa65ed860a2fa5935d99129a898a8f0b6\", null],\n+    [\"TbbEvalStencils\", \"a00758.html#af23c35537952bfdd493441e5c42ff2ed\", null],\n+    [\"TbbEvalStencils\", \"a00758.html#a4a6a0fcc01638f2a0316b32ad158b485\", null]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00758_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00758_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/far/stencilTable.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/osd/tbbKernel.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,15 +92,15 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">stencilTable.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">tbbKernel.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00758.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2013 Pixar</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n@@ -119,892 +119,116 @@\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_FAR_STENCILTABLE_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_FAR_STENCILTABLE_H</span></div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_TBB_KERNEL_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_TBB_KERNEL_H</span></div>\n <div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n <div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../far/types.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#include &quot;../far/patchDescriptor.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../far/patchParam.h&quot;</span></div>\n <div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &lt;cassert&gt;</span></div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"preprocessor\">#include &lt;cstring&gt;</span></div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"preprocessor\">#include &lt;iostream&gt;</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span> </div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span>Osd {</div>\n <div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span> </div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"keyword\">namespace </span>Far {</div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">struct </span>PatchArray;</div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"keyword\">struct </span>PatchCoord;</div>\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span><span class=\"keyword\">struct </span>PatchParam;</div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"keyword\">struct </span>BufferDescriptor;</div>\n <div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span> </div>\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span><span class=\"comment\">//  Forward declarations for friends:</span></div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"keyword\">class </span>PatchTableBuilder;</div>\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span> </div>\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt; <span class=\"keyword\">class </span>StencilTableFactoryReal;</div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt; <span class=\"keyword\">class </span>LimitStencilTableFactoryReal;</div>\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span> </div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00053\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01053.html\">   53</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01053.html\">StencilReal</a> {</div>\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span> </div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01053.html#a1bacc5a5c4ae6f44d4f06c1dd0adf8f4\">   57</a></span>    <a class=\"code hl_function\" href=\"a01053.html#a1bacc5a5c4ae6f44d4f06c1dd0adf8f4\">StencilReal</a>() {}</div>\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00067\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01053.html#a52ca26745627f4704181d58dc919ae57\">   67</a></span>    <a class=\"code hl_function\" href=\"a01053.html#a52ca26745627f4704181d58dc919ae57\">StencilReal</a>(<span class=\"keywordtype\">int</span> * size, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> * indices, REAL * weights)</div>\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span>        : <a class=\"code hl_variable\" href=\"a01053.html#a52397f1270007c943b8539338a796608\">_size</a>(size), <a class=\"code hl_variable\" href=\"a01053.html#a8b387cbfb5a56ee18bf92d10f3cdad6d\">_indices</a>(indices), <a class=\"code hl_variable\" href=\"a01053.html#aab5755075fff28578bfd3387c504d303\">_weights</a>(weights) { }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00071\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01053.html#a698f69e8409658c6afaf5ea1ff0f15b8\">   71</a></span>    <a class=\"code hl_function\" href=\"a01053.html#a698f69e8409658c6afaf5ea1ff0f15b8\">StencilReal</a>(<a class=\"code hl_class\" href=\"a01053.html\">StencilReal</a> <span class=\"keyword\">const</span> &amp; other) {</div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>        <a class=\"code hl_variable\" href=\"a01053.html#a52397f1270007c943b8539338a796608\">_size</a> = other.<a class=\"code hl_variable\" href=\"a01053.html#a52397f1270007c943b8539338a796608\">_size</a>;</div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span>        <a class=\"code hl_variable\" href=\"a01053.html#a8b387cbfb5a56ee18bf92d10f3cdad6d\">_indices</a> = other.<a class=\"code hl_variable\" href=\"a01053.html#a8b387cbfb5a56ee18bf92d10f3cdad6d\">_indices</a>;</div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span>        <a class=\"code hl_variable\" href=\"a01053.html#aab5755075fff28578bfd3387c504d303\">_weights</a> = other.<a class=\"code hl_variable\" href=\"a01053.html#aab5755075fff28578bfd3387c504d303\">_weights</a>;</div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00078\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01053.html#aa4907b035ab197f57102411e48b2cfc0\">   78</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01053.html#aa4907b035ab197f57102411e48b2cfc0\">GetSize</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>        <span class=\"keywordflow\">return</span> *<a class=\"code hl_variable\" href=\"a01053.html#a52397f1270007c943b8539338a796608\">_size</a>;</div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00083\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01053.html#ab823038f11d7c069fc63a2b992055535\">   83</a></span>    <span class=\"keywordtype\">int</span> * <a class=\"code hl_function\" href=\"a01053.html#ab823038f11d7c069fc63a2b992055535\">GetSizePtr</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01053.html#a52397f1270007c943b8539338a796608\">_size</a>;</div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00088\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01053.html#a8d6f065bafcef50d1f904979c794d1ce\">   88</a></span>    <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> <span class=\"keyword\">const</span> * <a class=\"code hl_function\" href=\"a01053.html#a8d6f065bafcef50d1f904979c794d1ce\">GetVertexIndices</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01053.html#a8b387cbfb5a56ee18bf92d10f3cdad6d\">_indices</a>;</div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00093\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01053.html#aecc2be688aecf08f7a98e49db8fed2f8\">   93</a></span>    REAL <span class=\"keyword\">const</span> * <a class=\"code hl_function\" href=\"a01053.html#aecc2be688aecf08f7a98e49db8fed2f8\">GetWeights</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01053.html#aab5755075fff28578bfd3387c504d303\">_weights</a>;</div>\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span> </div>\n-<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01053.html#a19f9c49c05d967ad8e51bc2a696caf4b\">   98</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01053.html#a659a293dd51073a1b9560bb80f687705\">Next</a>() {</div>\n-<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span>        <span class=\"keywordtype\">int</span> stride = *<a class=\"code hl_variable\" href=\"a01053.html#a52397f1270007c943b8539338a796608\">_size</a>;</div>\n-<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span>        ++<a class=\"code hl_variable\" href=\"a01053.html#a52397f1270007c943b8539338a796608\">_size</a>;</div>\n-<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span>        <a class=\"code hl_variable\" href=\"a01053.html#a8b387cbfb5a56ee18bf92d10f3cdad6d\">_indices</a> += stride;</div>\n-<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span>        <a class=\"code hl_variable\" href=\"a01053.html#aab5755075fff28578bfd3387c504d303\">_weights</a> += stride;</div>\n-<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span>    }</div>\n-<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span> </div>\n-<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span><span class=\"keyword\">protected</span>:</div>\n-<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span>    <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01045.html\">StencilTableFactoryReal</a>&lt;REAL&gt;;</div>\n-<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span>    <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01049.html\">LimitStencilTableFactoryReal</a>&lt;REAL&gt;;</div>\n-<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span> </div>\n-<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01053.html#a52397f1270007c943b8539338a796608\">  109</a></span>    <span class=\"keywordtype\">int</span> * <a class=\"code hl_variable\" href=\"a01053.html#a52397f1270007c943b8539338a796608\">_size</a>;</div>\n-<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01053.html#a8b387cbfb5a56ee18bf92d10f3cdad6d\">  110</a></span>    <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> * <a class=\"code hl_variable\" href=\"a01053.html#a8b387cbfb5a56ee18bf92d10f3cdad6d\">_indices</a>;</div>\n-<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01053.html#aab5755075fff28578bfd3387c504d303\">  111</a></span>    REAL  * <a class=\"code hl_variable\" href=\"a01053.html#aab5755075fff28578bfd3387c504d303\">_weights</a>;</div>\n-<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00116\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01057.html\">  116</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01057.html\">Stencil</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"a01053.html\">StencilReal</a>&lt;float&gt; {</div>\n-<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span><span class=\"keyword\">protected</span>:</div>\n-<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01057.html#a71b0ccb1e01e77608b938cb11039a34a\">  118</a></span>    <span class=\"keyword\">typedef</span> <a class=\"code hl_class\" href=\"a01053.html\">StencilReal&lt;float&gt;</a>   <a class=\"code hl_typedef\" href=\"a01057.html#a71b0ccb1e01e77608b938cb11039a34a\">BaseStencil</a>;</div>\n-<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span> </div>\n-<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01057.html#af3b2d4f28b2b1edbb491db39b0658c2a\">  121</a></span>    <a class=\"code hl_function\" href=\"a01057.html#af3b2d4f28b2b1edbb491db39b0658c2a\">Stencil</a>() : <a class=\"code hl_class\" href=\"a01053.html\">BaseStencil</a>() { }</div>\n-<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01057.html#a540bd990ac7c5770b6f1a5eb5b58d874\">  122</a></span>    <a class=\"code hl_function\" href=\"a01057.html#a540bd990ac7c5770b6f1a5eb5b58d874\">Stencil</a>(<a class=\"code hl_class\" href=\"a01053.html\">BaseStencil</a> <span class=\"keyword\">const</span> &amp; other) : <a class=\"code hl_class\" href=\"a01053.html\">BaseStencil</a>(other) { }</div>\n-<div class=\"foldopen\" id=\"foldopen00123\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01057.html#a685b0ef36235914f7c10ff8f1169ade8\">  123</a></span>    <a class=\"code hl_function\" href=\"a01057.html#a685b0ef36235914f7c10ff8f1169ade8\">Stencil</a>(<span class=\"keywordtype\">int</span> * size, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> * indices, <span class=\"keywordtype\">float</span> * weights)</div>\n-<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span>        : <a class=\"code hl_class\" href=\"a01053.html\">BaseStencil</a>(size, indices, weights) { }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span> </div>\n-<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span> </div>\n-<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\">  140</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00141\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html\">  141</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01061.html\">StencilTableReal</a> {</div>\n-<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span><span class=\"keyword\">protected</span>:</div>\n-<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#acfd28c310b1539af45e019690b1cb211\">  143</a></span>    <a class=\"code hl_function\" href=\"a01061.html#acfd28c310b1539af45e019690b1cb211\">StencilTableReal</a>(<span class=\"keywordtype\">int</span> numControlVerts,</div>\n-<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\">  144</span>                    std::vector&lt;int&gt; <span class=\"keyword\">const</span>&amp; offsets,</div>\n-<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\">  145</span>                    std::vector&lt;int&gt; <span class=\"keyword\">const</span>&amp; sizes,</div>\n-<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\">  146</span>                    std::vector&lt;int&gt; <span class=\"keyword\">const</span>&amp; sources,</div>\n-<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\">  147</span>                    std::vector&lt;REAL&gt; <span class=\"keyword\">const</span>&amp; weights,</div>\n-<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\">  148</span>                    <span class=\"keywordtype\">bool</span> includeCoarseVerts,</div>\n-<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\">  149</span>                    <span class=\"keywordtype\">size_t</span> firstOffset);</div>\n-<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\">  150</span> </div>\n-<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\">  151</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\">  152</span> </div>\n-<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#a680f5b6b2b873a149a997c4b5fca2be8\">  153</a></span>    <span class=\"keyword\">virtual</span> <a class=\"code hl_function\" href=\"a01061.html#a680f5b6b2b873a149a997c4b5fca2be8\">~StencilTableReal</a>() {};</div>\n-<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\">  154</span>    </div>\n-<div class=\"foldopen\" id=\"foldopen00156\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#a65836d2070b943c8fecbad926d074de2\">  156</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01061.html#a65836d2070b943c8fecbad926d074de2\">GetNumStencils</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\">  157</span>        <span class=\"keywordflow\">return</span> (<span class=\"keywordtype\">int</span>)<a class=\"code hl_variable\" href=\"a01061.html#a11ad3846bf577760d1c829835f62b8d3\">_sizes</a>.size();</div>\n-<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\">  158</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\">  159</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00161\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#a02e67ceab8cb5af7982ef2a31a07a2ce\">  161</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01061.html#a02e67ceab8cb5af7982ef2a31a07a2ce\">GetNumControlVertices</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\">  162</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01061.html#a385a2eb32312f28d79a02461a59c0630\">_numControlVertices</a>;</div>\n-<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\">  163</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\">  164</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00166\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#a84969a9edeae22167a83fde274f002af\">  166</a></span>    <a class=\"code hl_class\" href=\"a01053.html\">StencilReal&lt;REAL&gt;</a> <a class=\"code hl_function\" href=\"a01061.html#a84969a9edeae22167a83fde274f002af\">GetStencil</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> i) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\">  167</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00169\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#a50345bcc33c588cf49520a79396e105d\">  169</a></span>    std::vector&lt;int&gt; <span class=\"keyword\">const</span> &amp; <a class=\"code hl_function\" href=\"a01061.html#a50345bcc33c588cf49520a79396e105d\">GetSizes</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\">  170</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01061.html#a11ad3846bf577760d1c829835f62b8d3\">_sizes</a>;</div>\n-<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\">  172</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00174\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#a82005658c7c2b4aea6222587d06ce4ef\">  174</a></span>    std::vector&lt;Index&gt; <span class=\"keyword\">const</span> &amp; <a class=\"code hl_function\" href=\"a01061.html#a82005658c7c2b4aea6222587d06ce4ef\">GetOffsets</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\">  175</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01061.html#aac45e3e693e9298942da27bef3cec02c\">_offsets</a>;</div>\n-<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\">  176</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00179\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#a2c225eadcb49bfb4af44bfb883516809\">  179</a></span>    std::vector&lt;Index&gt; <span class=\"keyword\">const</span> &amp; <a class=\"code hl_function\" href=\"a01061.html#a2c225eadcb49bfb4af44bfb883516809\">GetControlIndices</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\">  180</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01061.html#ad6ce8118325de299bd7d9735f68e6de2\">_indices</a>;</div>\n-<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\">  181</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\">  182</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00184\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#ac5effc231d2dad1b9fb193c4cf43ab83\">  184</a></span>    std::vector&lt;REAL&gt; <span class=\"keyword\">const</span> &amp; <a class=\"code hl_function\" href=\"a01061.html#ac5effc231d2dad1b9fb193c4cf43ab83\">GetWeights</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\">  185</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01061.html#aae5a4bd49c41df5f949d773549c09d19\">_weights</a>;</div>\n-<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\">  186</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\">  187</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00189\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#a35786984f5caa4684165da2c96fba9b3\">  189</a></span>    <a class=\"code hl_class\" href=\"a01053.html\">StencilReal&lt;REAL&gt;</a> <a class=\"code hl_function\" href=\"a01061.html#a35786984f5caa4684165da2c96fba9b3\">operator[] </a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> index) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\">  190</span> </div>\n-<div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\">  204</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00205\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#afbd961bebfa92a8fd0826f219baaf8f5\">  205</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01061.html#afbd961bebfa92a8fd0826f219baaf8f5\">UpdateValues</a>(T <span class=\"keyword\">const</span> &amp;srcValues, U &amp;dstValues, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> start=-1, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> end=-1)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\">  206</span>        this-&gt;<a class=\"code hl_function\" href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">update</a>(srcValues, dstValues, <a class=\"code hl_variable\" href=\"a01061.html#aae5a4bd49c41df5f949d773549c09d19\">_weights</a>, start, end);</div>\n-<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\">  207</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\">  208</span> </div>\n-<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\">  209</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T1, <span class=\"keyword\">class</span> T2, <span class=\"keyword\">class</span> U&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00210\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#a232ddf5a15e24e91b2ec55f83a1436b5\">  210</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01061.html#a232ddf5a15e24e91b2ec55f83a1436b5\">UpdateValues</a>(T1 <span class=\"keyword\">const</span> &amp;srcBase, <span class=\"keywordtype\">int</span> numBase, T2 <span class=\"keyword\">const</span> &amp;srcRef,</div>\n-<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\">  211</span>        U &amp;dstValues, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> start=-1, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> end=-1)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00212\" name=\"l00212\"></a><span class=\"lineno\">  212</span>        this-&gt;<a class=\"code hl_function\" href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">update</a>(srcBase, numBase, srcRef, dstValues, <a class=\"code hl_variable\" href=\"a01061.html#aae5a4bd49c41df5f949d773549c09d19\">_weights</a>, start, end);</div>\n-<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\">  213</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\">  214</span> </div>\n-<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\">  215</span>    <span class=\"comment\">//  Pointer interface for backward compatibility</span></div>\n-<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\">  216</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00217\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#ae1ff7caf5509b4d76bc8220608d5b176\">  217</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01061.html#ae1ff7caf5509b4d76bc8220608d5b176\">UpdateValues</a>(T <span class=\"keyword\">const</span> *src, U *dst, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> start=-1, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> end=-1)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\">  218</span>        this-&gt;<a class=\"code hl_function\" href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">update</a>(src, dst, <a class=\"code hl_variable\" href=\"a01061.html#aae5a4bd49c41df5f949d773549c09d19\">_weights</a>, start, end);</div>\n-<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\">  219</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\">  220</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T1, <span class=\"keyword\">class</span> T2, <span class=\"keyword\">class</span> U&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00221\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#ac67bfdfb875671203b222a0a25b1cfe3\">  221</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01061.html#ac67bfdfb875671203b222a0a25b1cfe3\">UpdateValues</a>(T1 <span class=\"keyword\">const</span> *srcBase, <span class=\"keywordtype\">int</span> numBase, T2 <span class=\"keyword\">const</span> *srcRef,</div>\n-<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\">  222</span>        U *dst, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> start=-1, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> end=-1)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\">  223</span>        this-&gt;<a class=\"code hl_function\" href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">update</a>(srcBase, numBase, srcRef, dst, <a class=\"code hl_variable\" href=\"a01061.html#aae5a4bd49c41df5f949d773549c09d19\">_weights</a>, start, end);</div>\n-<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\">  224</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\">  225</span> </div>\n-<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#aa71d36872f416feaa853788a7a7a7ef8\">  227</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01061.html#aa71d36872f416feaa853788a7a7a7ef8\">Clear</a>();</div>\n-<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\">  228</span> </div>\n-<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\">  229</span><span class=\"keyword\">protected</span>:</div>\n-<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\">  230</span> </div>\n-<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\">  231</span>    <span class=\"comment\">// Update values by applying cached stencil weights to new control values</span></div>\n-<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\">  232</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00233\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">  233</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">update</a>( T <span class=\"keyword\">const</span> &amp;srcValues, U &amp;dstValues,</div>\n-<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\">  234</span>        std::vector&lt;REAL&gt; <span class=\"keyword\">const</span> &amp; valueWeights, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> start, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> end) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\">  235</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T1, <span class=\"keyword\">class</span> T2, <span class=\"keyword\">class</span> U&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00236\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#a1bcd132b8e6d40cb6ed1543f28ff998c\">  236</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01061.html#a1bcd132b8e6d40cb6ed1543f28ff998c\">update</a>( T1 <span class=\"keyword\">const</span> &amp;srcBase, <span class=\"keywordtype\">int</span> numBase, T2 <span class=\"keyword\">const</span> &amp;srcRef, U &amp;dstValues,</div>\n-<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\">  237</span>        std::vector&lt;REAL&gt; <span class=\"keyword\">const</span> &amp; valueWeights, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> start, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> end) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\">  238</span> </div>\n-<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\">  239</span>    <span class=\"comment\">// Populate the offsets table from the stencil sizes in _sizes (factory helper)</span></div>\n-<div class=\"foldopen\" id=\"foldopen00240\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#a8ac84e48ecd3aec3db72f62a4c8206f8\">  240</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01061.html#a8ac84e48ecd3aec3db72f62a4c8206f8\">generateOffsets</a>();</div>\n-<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\">  241</span> </div>\n-<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\">  242</span>    <span class=\"comment\">// Resize the table arrays (factory helper)</span></div>\n-<div class=\"foldopen\" id=\"foldopen00243\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#ac21f18df5c8da2db4d23287cdab5fcc1\">  243</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01061.html#ac21f18df5c8da2db4d23287cdab5fcc1\">resize</a>(<span class=\"keywordtype\">int</span> nstencils, <span class=\"keywordtype\">int</span> nelems);</div>\n-<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\">  244</span> </div>\n-<div class=\"line\"><a id=\"l00245\" name=\"l00245\"></a><span class=\"lineno\">  245</span>    <span class=\"comment\">// Reserves the table arrays (factory helper)</span></div>\n-<div class=\"foldopen\" id=\"foldopen00246\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#ae00a9e01294323589df33d2680dab235\">  246</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01061.html#ae00a9e01294323589df33d2680dab235\">reserve</a>(<span class=\"keywordtype\">int</span> nstencils, <span class=\"keywordtype\">int</span> nelems);</div>\n-<div class=\"line\"><a id=\"l00247\" name=\"l00247\"></a><span class=\"lineno\">  247</span> </div>\n-<div class=\"line\"><a id=\"l00248\" name=\"l00248\"></a><span class=\"lineno\">  248</span>    <span class=\"comment\">// Reallocates the table arrays to remove excess capacity (factory helper)</span></div>\n-<div class=\"foldopen\" id=\"foldopen00249\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00249\" name=\"l00249\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#a84fb9ead4f0f7458491b5d310592cea9\">  249</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01061.html#a84fb9ead4f0f7458491b5d310592cea9\">shrinkToFit</a>();</div>\n-<div class=\"line\"><a id=\"l00250\" name=\"l00250\"></a><span class=\"lineno\">  250</span> </div>\n-<div class=\"line\"><a id=\"l00251\" name=\"l00251\"></a><span class=\"lineno\">  251</span>    <span class=\"comment\">// Performs any final operations on internal tables (factory helper)</span></div>\n-<div class=\"foldopen\" id=\"foldopen00252\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00252\" name=\"l00252\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#a32d626626eee0bc4ade146973f6abb1c\">  252</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01061.html#a32d626626eee0bc4ade146973f6abb1c\">finalize</a>();</div>\n-<div class=\"line\"><a id=\"l00253\" name=\"l00253\"></a><span class=\"lineno\">  253</span> </div>\n-<div class=\"line\"><a id=\"l00254\" name=\"l00254\"></a><span class=\"lineno\">  254</span><span class=\"keyword\">protected</span>:</div>\n-<div class=\"line\"><a id=\"l00255\" name=\"l00255\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#adb82c38de4fd0bdc8550e62ebe932c48\">  255</a></span>    <a class=\"code hl_function\" href=\"a01061.html#adb82c38de4fd0bdc8550e62ebe932c48\">StencilTableReal</a>() : <a class=\"code hl_variable\" href=\"a01061.html#a385a2eb32312f28d79a02461a59c0630\">_numControlVertices</a>(0) {}</div>\n-<div class=\"line\"><a id=\"l00256\" name=\"l00256\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#af58f6a3f9b167c3330097c1a69ca36a8\">  256</a></span>    <a class=\"code hl_function\" href=\"a01061.html#adb82c38de4fd0bdc8550e62ebe932c48\">StencilTableReal</a>(<span class=\"keywordtype\">int</span> numControlVerts)</div>\n-<div class=\"line\"><a id=\"l00257\" name=\"l00257\"></a><span class=\"lineno\">  257</span>        : <a class=\"code hl_variable\" href=\"a01061.html#a385a2eb32312f28d79a02461a59c0630\">_numControlVertices</a>(numControlVerts) </div>\n-<div class=\"line\"><a id=\"l00258\" name=\"l00258\"></a><span class=\"lineno\">  258</span>    { }</div>\n-<div class=\"line\"><a id=\"l00259\" name=\"l00259\"></a><span class=\"lineno\">  259</span> </div>\n-<div class=\"line\"><a id=\"l00260\" name=\"l00260\"></a><span class=\"lineno\">  260</span>    <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01045.html\">StencilTableFactoryReal</a>&lt;REAL&gt;;</div>\n-<div class=\"line\"><a id=\"l00261\" name=\"l00261\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#a15cb55501155c442dba5f0e14bf03124\">  261</a></span>    <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span><a class=\"code hl_friend\" href=\"a01061.html#a15cb55501155c442dba5f0e14bf03124\">Far::PatchTableBuilder</a>;</div>\n-<div class=\"line\"><a id=\"l00262\" name=\"l00262\"></a><span class=\"lineno\">  262</span> </div>\n-<div class=\"line\"><a id=\"l00263\" name=\"l00263\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#a385a2eb32312f28d79a02461a59c0630\">  263</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"a01061.html#a385a2eb32312f28d79a02461a59c0630\">_numControlVertices</a>;              <span class=\"comment\">// number of control vertices</span></div>\n-<div class=\"line\"><a id=\"l00264\" name=\"l00264\"></a><span class=\"lineno\">  264</span> </div>\n-<div class=\"line\"><a id=\"l00265\" name=\"l00265\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#a11ad3846bf577760d1c829835f62b8d3\">  265</a></span>    std::vector&lt;int&gt;           <a class=\"code hl_variable\" href=\"a01061.html#a11ad3846bf577760d1c829835f62b8d3\">_sizes</a>;    <span class=\"comment\">// number of coefficients for each stencil</span></div>\n-<div class=\"line\"><a id=\"l00266\" name=\"l00266\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#aac45e3e693e9298942da27bef3cec02c\">  266</a></span>    std::vector&lt;Index&gt;         <a class=\"code hl_variable\" href=\"a01061.html#aac45e3e693e9298942da27bef3cec02c\">_offsets</a>,  <span class=\"comment\">// offset to the start of each stencil</span></div>\n-<div class=\"line\"><a id=\"l00267\" name=\"l00267\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#ad6ce8118325de299bd7d9735f68e6de2\">  267</a></span>                               <a class=\"code hl_variable\" href=\"a01061.html#ad6ce8118325de299bd7d9735f68e6de2\">_indices</a>;  <span class=\"comment\">// indices of contributing coarse vertices</span></div>\n-<div class=\"line\"><a id=\"l00268\" name=\"l00268\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#aae5a4bd49c41df5f949d773549c09d19\">  268</a></span>    std::vector&lt;REAL&gt;         <a class=\"code hl_variable\" href=\"a01061.html#aae5a4bd49c41df5f949d773549c09d19\">_weights</a>;  <span class=\"comment\">// stencil weight coefficients</span></div>\n-<div class=\"line\"><a id=\"l00269\" name=\"l00269\"></a><span class=\"lineno\">  269</span>};</div>\n-<div class=\"line\"><a id=\"l00270\" name=\"l00270\"></a><span class=\"lineno\">  270</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00273\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00273\" name=\"l00273\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01065.html\">  273</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"a01061.html\">StencilTableReal</a>&lt;float&gt; {</div>\n-<div class=\"line\"><a id=\"l00274\" name=\"l00274\"></a><span class=\"lineno\">  274</span><span class=\"keyword\">protected</span>:</div>\n-<div class=\"line\"><a id=\"l00275\" name=\"l00275\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01065.html#a54f0bb223290a17a59f51f4cbcfbc2e2\">  275</a></span>    <span class=\"keyword\">typedef</span> <a class=\"code hl_class\" href=\"a01061.html\">StencilTableReal&lt;float&gt;</a>   <a class=\"code hl_typedef\" href=\"a01065.html#a54f0bb223290a17a59f51f4cbcfbc2e2\">BaseTable</a>;</div>\n-<div class=\"line\"><a id=\"l00276\" name=\"l00276\"></a><span class=\"lineno\">  276</span> </div>\n-<div class=\"line\"><a id=\"l00277\" name=\"l00277\"></a><span class=\"lineno\">  277</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"foldopen\" id=\"foldopen00278\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00278\" name=\"l00278\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01065.html#a67e208e25b2922502d5f0c9d8e36ce88\">  278</a></span>    <a class=\"code hl_class\" href=\"a01057.html\">Stencil</a> <a class=\"code hl_function\" href=\"a01065.html#a67e208e25b2922502d5f0c9d8e36ce88\">GetStencil</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> index)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00279\" name=\"l00279\"></a><span class=\"lineno\">  279</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_class\" href=\"a01057.html\">Stencil</a>(<a class=\"code hl_function\" href=\"a01061.html#a84969a9edeae22167a83fde274f002af\">BaseTable::GetStencil</a>(index));</div>\n-<div class=\"line\"><a id=\"l00280\" name=\"l00280\"></a><span class=\"lineno\">  280</span>    }</div>\n-</div>\n-<div class=\"foldopen\" id=\"foldopen00281\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00281\" name=\"l00281\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01065.html#aa4c7aa3ea058d947fa1a2021704f9ee5\">  281</a></span>    <a class=\"code hl_class\" href=\"a01057.html\">Stencil</a> <a class=\"code hl_function\" href=\"a01065.html#aa4c7aa3ea058d947fa1a2021704f9ee5\">operator[] </a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> index)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00282\" name=\"l00282\"></a><span class=\"lineno\">  282</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_class\" href=\"a01057.html\">Stencil</a>(<a class=\"code hl_function\" href=\"a01061.html#a84969a9edeae22167a83fde274f002af\">BaseTable::GetStencil</a>(index));</div>\n-<div class=\"line\"><a id=\"l00283\" name=\"l00283\"></a><span class=\"lineno\">  283</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00284\" name=\"l00284\"></a><span class=\"lineno\">  284</span> </div>\n-<div class=\"line\"><a id=\"l00285\" name=\"l00285\"></a><span class=\"lineno\">  285</span><span class=\"keyword\">protected</span>:</div>\n-<div class=\"line\"><a id=\"l00286\" name=\"l00286\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01065.html#acc553d2d5624ab2a790ae9613812393e\">  286</a></span>    <a class=\"code hl_function\" href=\"a01065.html#acc553d2d5624ab2a790ae9613812393e\">StencilTable</a>() : <a class=\"code hl_class\" href=\"a01061.html\">BaseTable</a>() { }</div>\n-<div class=\"line\"><a id=\"l00287\" name=\"l00287\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01065.html#a54db76b34112b5cb3c623be8789dd8f4\">  287</a></span>    <a class=\"code hl_function\" href=\"a01065.html#a54db76b34112b5cb3c623be8789dd8f4\">StencilTable</a>(<span class=\"keywordtype\">int</span> numControlVerts) : <a class=\"code hl_class\" href=\"a01061.html\">BaseTable</a>(numControlVerts) { }</div>\n-<div class=\"foldopen\" id=\"foldopen00288\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00288\" name=\"l00288\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01065.html#a3d12830eb0d421206de500d7abc9decf\">  288</a></span>    <a class=\"code hl_function\" href=\"a01065.html#a3d12830eb0d421206de500d7abc9decf\">StencilTable</a>(<span class=\"keywordtype\">int</span> numControlVerts,</div>\n-<div class=\"line\"><a id=\"l00289\" name=\"l00289\"></a><span class=\"lineno\">  289</span>                 std::vector&lt;int&gt; <span class=\"keyword\">const</span>&amp; offsets,</div>\n-<div class=\"line\"><a id=\"l00290\" name=\"l00290\"></a><span class=\"lineno\">  290</span>                 std::vector&lt;int&gt; <span class=\"keyword\">const</span>&amp; sizes,</div>\n-<div class=\"line\"><a id=\"l00291\" name=\"l00291\"></a><span class=\"lineno\">  291</span>                 std::vector&lt;int&gt; <span class=\"keyword\">const</span>&amp; sources,</div>\n-<div class=\"line\"><a id=\"l00292\" name=\"l00292\"></a><span class=\"lineno\">  292</span>                 std::vector&lt;float&gt; <span class=\"keyword\">const</span>&amp; weights,</div>\n-<div class=\"line\"><a id=\"l00293\" name=\"l00293\"></a><span class=\"lineno\">  293</span>                 <span class=\"keywordtype\">bool</span> includeCoarseVerts,</div>\n-<div class=\"line\"><a id=\"l00294\" name=\"l00294\"></a><span class=\"lineno\">  294</span>                 <span class=\"keywordtype\">size_t</span> firstOffset)</div>\n-<div class=\"line\"><a id=\"l00295\" name=\"l00295\"></a><span class=\"lineno\">  295</span>        : <a class=\"code hl_class\" href=\"a01061.html\">BaseTable</a>(numControlVerts, offsets,</div>\n-<div class=\"line\"><a id=\"l00296\" name=\"l00296\"></a><span class=\"lineno\">  296</span>                sizes, sources, weights, includeCoarseVerts, firstOffset) { }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00297\" name=\"l00297\"></a><span class=\"lineno\">  297</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00298\" name=\"l00298\"></a><span class=\"lineno\">  298</span> </div>\n-<div class=\"line\"><a id=\"l00299\" name=\"l00299\"></a><span class=\"lineno\">  299</span> </div>\n-<div class=\"line\"><a id=\"l00302\" name=\"l00302\"></a><span class=\"lineno\">  302</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00303\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00303\" name=\"l00303\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01069.html\">  303</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01069.html\">LimitStencilReal</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"a01053.html\">StencilReal</a>&lt;REAL&gt; {</div>\n-<div class=\"line\"><a id=\"l00304\" name=\"l00304\"></a><span class=\"lineno\">  304</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00305\" name=\"l00305\"></a><span class=\"lineno\">  305</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00324\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01069.html#ad6ade692f92a3bf50c813a82bd63d4c7\">  324</a></span>    <a class=\"code hl_function\" href=\"a01069.html#ad6ade692f92a3bf50c813a82bd63d4c7\">LimitStencilReal</a>( <span class=\"keywordtype\">int</span>* size,</div>\n-<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\">  325</span>                      <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> * indices,</div>\n-<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\">  326</span>                      REAL * weights,</div>\n-<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\">  327</span>                      REAL * duWeights=0,</div>\n-<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\">  328</span>                      REAL * dvWeights=0,</div>\n-<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\">  329</span>                      REAL * duuWeights=0,</div>\n-<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\">  330</span>                      REAL * duvWeights=0,</div>\n-<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\">  331</span>                      REAL * dvvWeights=0)</div>\n-<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\">  332</span>        : <a class=\"code hl_class\" href=\"a01053.html\">StencilReal</a>&lt;REAL&gt;(size, indices, weights),</div>\n-<div class=\"line\"><a id=\"l00333\" name=\"l00333\"></a><span class=\"lineno\">  333</span>          _duWeights(duWeights),</div>\n-<div class=\"line\"><a id=\"l00334\" name=\"l00334\"></a><span class=\"lineno\">  334</span>          _dvWeights(dvWeights),</div>\n-<div class=\"line\"><a id=\"l00335\" name=\"l00335\"></a><span class=\"lineno\">  335</span>          _duuWeights(duuWeights),</div>\n-<div class=\"line\"><a id=\"l00336\" name=\"l00336\"></a><span class=\"lineno\">  336</span>          _duvWeights(duvWeights),</div>\n-<div class=\"line\"><a id=\"l00337\" name=\"l00337\"></a><span class=\"lineno\">  337</span>          _dvvWeights(dvvWeights) {</div>\n-<div class=\"line\"><a id=\"l00338\" name=\"l00338\"></a><span class=\"lineno\">  338</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00339\" name=\"l00339\"></a><span class=\"lineno\">  339</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00341\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00341\" name=\"l00341\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01069.html#ae18b32c2a684569e90392e2548cd9f53\">  341</a></span>    REAL <span class=\"keyword\">const</span> * <a class=\"code hl_function\" href=\"a01069.html#ae18b32c2a684569e90392e2548cd9f53\">GetDuWeights</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00342\" name=\"l00342\"></a><span class=\"lineno\">  342</span>        <span class=\"keywordflow\">return</span> _duWeights;</div>\n-<div class=\"line\"><a id=\"l00343\" name=\"l00343\"></a><span class=\"lineno\">  343</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00344\" name=\"l00344\"></a><span class=\"lineno\">  344</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00346\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00346\" name=\"l00346\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01069.html#a4fe06ffb99a6663f5262d9ac1fe06dd4\">  346</a></span>    REAL <span class=\"keyword\">const</span> * <a class=\"code hl_function\" href=\"a01069.html#a4fe06ffb99a6663f5262d9ac1fe06dd4\">GetDvWeights</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00347\" name=\"l00347\"></a><span class=\"lineno\">  347</span>        <span class=\"keywordflow\">return</span> _dvWeights;</div>\n-<div class=\"line\"><a id=\"l00348\" name=\"l00348\"></a><span class=\"lineno\">  348</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00349\" name=\"l00349\"></a><span class=\"lineno\">  349</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00351\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00351\" name=\"l00351\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01069.html#ae5f480289f879cf877d43c9db90acd50\">  351</a></span>    REAL <span class=\"keyword\">const</span> * <a class=\"code hl_function\" href=\"a01069.html#ae5f480289f879cf877d43c9db90acd50\">GetDuuWeights</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00352\" name=\"l00352\"></a><span class=\"lineno\">  352</span>        <span class=\"keywordflow\">return</span> _duuWeights;</div>\n-<div class=\"line\"><a id=\"l00353\" name=\"l00353\"></a><span class=\"lineno\">  353</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00354\" name=\"l00354\"></a><span class=\"lineno\">  354</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00356\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00356\" name=\"l00356\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01069.html#a448678fc2c70f09429f6a105b7aea8e4\">  356</a></span>    REAL <span class=\"keyword\">const</span> * <a class=\"code hl_function\" href=\"a01069.html#a448678fc2c70f09429f6a105b7aea8e4\">GetDuvWeights</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00357\" name=\"l00357\"></a><span class=\"lineno\">  357</span>        <span class=\"keywordflow\">return</span> _duvWeights;</div>\n-<div class=\"line\"><a id=\"l00358\" name=\"l00358\"></a><span class=\"lineno\">  358</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00359\" name=\"l00359\"></a><span class=\"lineno\">  359</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00361\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00361\" name=\"l00361\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01069.html#a9f286a1d78b9333a3c3efbe793e10b47\">  361</a></span>    REAL <span class=\"keyword\">const</span> * <a class=\"code hl_function\" href=\"a01069.html#a9f286a1d78b9333a3c3efbe793e10b47\">GetDvvWeights</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00362\" name=\"l00362\"></a><span class=\"lineno\">  362</span>        <span class=\"keywordflow\">return</span> _dvvWeights;</div>\n-<div class=\"line\"><a id=\"l00363\" name=\"l00363\"></a><span class=\"lineno\">  363</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00364\" name=\"l00364\"></a><span class=\"lineno\">  364</span> </div>\n-<div class=\"line\"><a id=\"l00366\" name=\"l00366\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01069.html#a19f9c49c05d967ad8e51bc2a696caf4b\">  366</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01069.html#a659a293dd51073a1b9560bb80f687705\">Next</a>() {</div>\n-<div class=\"line\"><a id=\"l00367\" name=\"l00367\"></a><span class=\"lineno\">  367</span>       <span class=\"keywordtype\">int</span> stride = *this-&gt;<a class=\"code hl_variable\" href=\"a01053.html#a52397f1270007c943b8539338a796608\">_size</a>;</div>\n-<div class=\"line\"><a id=\"l00368\" name=\"l00368\"></a><span class=\"lineno\">  368</span>       ++this-&gt;<a class=\"code hl_variable\" href=\"a01053.html#a52397f1270007c943b8539338a796608\">_size</a>;</div>\n-<div class=\"line\"><a id=\"l00369\" name=\"l00369\"></a><span class=\"lineno\">  369</span>       this-&gt;<a class=\"code hl_variable\" href=\"a01053.html#a8b387cbfb5a56ee18bf92d10f3cdad6d\">_indices</a> += stride;</div>\n-<div class=\"line\"><a id=\"l00370\" name=\"l00370\"></a><span class=\"lineno\">  370</span>       this-&gt;<a class=\"code hl_variable\" href=\"a01053.html#aab5755075fff28578bfd3387c504d303\">_weights</a> += stride;</div>\n-<div class=\"line\"><a id=\"l00371\" name=\"l00371\"></a><span class=\"lineno\">  371</span>       <span class=\"keywordflow\">if</span> (_duWeights) _duWeights += stride;</div>\n-<div class=\"line\"><a id=\"l00372\" name=\"l00372\"></a><span class=\"lineno\">  372</span>       <span class=\"keywordflow\">if</span> (_dvWeights) _dvWeights += stride;</div>\n-<div class=\"line\"><a id=\"l00373\" name=\"l00373\"></a><span class=\"lineno\">  373</span>       <span class=\"keywordflow\">if</span> (_duuWeights) _duuWeights += stride;</div>\n-<div class=\"line\"><a id=\"l00374\" name=\"l00374\"></a><span class=\"lineno\">  374</span>       <span class=\"keywordflow\">if</span> (_duvWeights) _duvWeights += stride;</div>\n-<div class=\"line\"><a id=\"l00375\" name=\"l00375\"></a><span class=\"lineno\">  375</span>       <span class=\"keywordflow\">if</span> (_dvvWeights) _dvvWeights += stride;</div>\n-<div class=\"line\"><a id=\"l00376\" name=\"l00376\"></a><span class=\"lineno\">  376</span>    }</div>\n-<div class=\"line\"><a id=\"l00377\" name=\"l00377\"></a><span class=\"lineno\">  377</span> </div>\n-<div class=\"line\"><a id=\"l00378\" name=\"l00378\"></a><span class=\"lineno\">  378</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00379\" name=\"l00379\"></a><span class=\"lineno\">  379</span> </div>\n-<div class=\"line\"><a id=\"l00380\" name=\"l00380\"></a><span class=\"lineno\">  380</span>    <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01045.html\">StencilTableFactoryReal</a>&lt;REAL&gt;;</div>\n-<div class=\"line\"><a id=\"l00381\" name=\"l00381\"></a><span class=\"lineno\">  381</span>    <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01049.html\">LimitStencilTableFactoryReal</a>&lt;REAL&gt;;</div>\n-<div class=\"line\"><a id=\"l00382\" name=\"l00382\"></a><span class=\"lineno\">  382</span> </div>\n-<div class=\"line\"><a id=\"l00383\" name=\"l00383\"></a><span class=\"lineno\">  383</span>    REAL  * _duWeights,  <span class=\"comment\">// pointer to stencil u derivative limit weights</span></div>\n-<div class=\"line\"><a id=\"l00384\" name=\"l00384\"></a><span class=\"lineno\">  384</span>          * _dvWeights,  <span class=\"comment\">// pointer to stencil v derivative limit weights</span></div>\n-<div class=\"line\"><a id=\"l00385\" name=\"l00385\"></a><span class=\"lineno\">  385</span>          * _duuWeights, <span class=\"comment\">// pointer to stencil uu derivative limit weights</span></div>\n-<div class=\"line\"><a id=\"l00386\" name=\"l00386\"></a><span class=\"lineno\">  386</span>          * _duvWeights, <span class=\"comment\">// pointer to stencil uv derivative limit weights</span></div>\n-<div class=\"line\"><a id=\"l00387\" name=\"l00387\"></a><span class=\"lineno\">  387</span>          * _dvvWeights; <span class=\"comment\">// pointer to stencil vv derivative limit weights</span></div>\n-<div class=\"line\"><a id=\"l00388\" name=\"l00388\"></a><span class=\"lineno\">  388</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00389\" name=\"l00389\"></a><span class=\"lineno\">  389</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00392\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00392\" name=\"l00392\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01073.html\">  392</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01073.html\">LimitStencil</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"a01069.html\">LimitStencilReal</a>&lt;float&gt; {</div>\n-<div class=\"line\"><a id=\"l00393\" name=\"l00393\"></a><span class=\"lineno\">  393</span><span class=\"keyword\">protected</span>:</div>\n-<div class=\"line\"><a id=\"l00394\" name=\"l00394\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01073.html#a1449f658bfbe067e5c7d709e700bbc29\">  394</a></span>    <span class=\"keyword\">typedef</span> <a class=\"code hl_class\" href=\"a01069.html\">LimitStencilReal&lt;float&gt;</a>   <a class=\"code hl_typedef\" href=\"a01073.html#a1449f658bfbe067e5c7d709e700bbc29\">BaseStencil</a>;</div>\n-<div class=\"line\"><a id=\"l00395\" name=\"l00395\"></a><span class=\"lineno\">  395</span> </div>\n-<div class=\"line\"><a id=\"l00396\" name=\"l00396\"></a><span class=\"lineno\">  396</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00397\" name=\"l00397\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01073.html#a071ea9b75540c3d54d9bf934fc944e5a\">  397</a></span>    <a class=\"code hl_function\" href=\"a01073.html#a071ea9b75540c3d54d9bf934fc944e5a\">LimitStencil</a>(<a class=\"code hl_class\" href=\"a01069.html\">BaseStencil</a> <span class=\"keyword\">const</span> &amp; other) : <a class=\"code hl_class\" href=\"a01069.html\">BaseStencil</a>(other) { }</div>\n-<div class=\"foldopen\" id=\"foldopen00398\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00398\" name=\"l00398\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01073.html#a51e1d601373aa0cd9ce70b630ce22adf\">  398</a></span>    <a class=\"code hl_function\" href=\"a01073.html#a51e1d601373aa0cd9ce70b630ce22adf\">LimitStencil</a>(<span class=\"keywordtype\">int</span>* size, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> * indices, <span class=\"keywordtype\">float</span> * weights,</div>\n-<div class=\"line\"><a id=\"l00399\" name=\"l00399\"></a><span class=\"lineno\">  399</span>                 <span class=\"keywordtype\">float</span> * duWeights=0, <span class=\"keywordtype\">float</span> * dvWeights=0,</div>\n-<div class=\"line\"><a id=\"l00400\" name=\"l00400\"></a><span class=\"lineno\">  400</span>                 <span class=\"keywordtype\">float</span> * duuWeights=0, <span class=\"keywordtype\">float</span> * duvWeights=0, <span class=\"keywordtype\">float</span> * dvvWeights=0)</div>\n-<div class=\"line\"><a id=\"l00401\" name=\"l00401\"></a><span class=\"lineno\">  401</span>        : <a class=\"code hl_class\" href=\"a01069.html\">BaseStencil</a>(size, indices, weights,</div>\n-<div class=\"line\"><a id=\"l00402\" name=\"l00402\"></a><span class=\"lineno\">  402</span>                 duWeights, dvWeights, duuWeights, duvWeights, dvvWeights) { }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00403\" name=\"l00403\"></a><span class=\"lineno\">  403</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00404\" name=\"l00404\"></a><span class=\"lineno\">  404</span> </div>\n-<div class=\"line\"><a id=\"l00405\" name=\"l00405\"></a><span class=\"lineno\">  405</span> </div>\n-<div class=\"line\"><a id=\"l00408\" name=\"l00408\"></a><span class=\"lineno\">  408</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00409\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00409\" name=\"l00409\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01077.html\">  409</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01077.html\">LimitStencilTableReal</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"a01061.html\">StencilTableReal</a>&lt;REAL&gt; {</div>\n-<div class=\"line\"><a id=\"l00410\" name=\"l00410\"></a><span class=\"lineno\">  410</span><span class=\"keyword\">protected</span>:</div>\n-<div class=\"line\"><a id=\"l00411\" name=\"l00411\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01077.html#a8bd530eac9ff33dc0b117d5f4a0cb939\">  411</a></span>    <a class=\"code hl_function\" href=\"a01077.html#a8bd530eac9ff33dc0b117d5f4a0cb939\">LimitStencilTableReal</a>(</div>\n-<div class=\"line\"><a id=\"l00412\" name=\"l00412\"></a><span class=\"lineno\">  412</span>                    <span class=\"keywordtype\">int</span> numControlVerts,</div>\n-<div class=\"line\"><a id=\"l00413\" name=\"l00413\"></a><span class=\"lineno\">  413</span>                    std::vector&lt;int&gt; <span class=\"keyword\">const</span>&amp; offsets,</div>\n-<div class=\"line\"><a id=\"l00414\" name=\"l00414\"></a><span class=\"lineno\">  414</span>                    std::vector&lt;int&gt; <span class=\"keyword\">const</span>&amp; sizes,</div>\n-<div class=\"line\"><a id=\"l00415\" name=\"l00415\"></a><span class=\"lineno\">  415</span>                    std::vector&lt;int&gt; <span class=\"keyword\">const</span>&amp; sources,</div>\n-<div class=\"line\"><a id=\"l00416\" name=\"l00416\"></a><span class=\"lineno\">  416</span>                    std::vector&lt;REAL&gt; <span class=\"keyword\">const</span>&amp; weights,</div>\n-<div class=\"line\"><a id=\"l00417\" name=\"l00417\"></a><span class=\"lineno\">  417</span>                    std::vector&lt;REAL&gt; <span class=\"keyword\">const</span>&amp; duWeights,</div>\n-<div class=\"line\"><a id=\"l00418\" name=\"l00418\"></a><span class=\"lineno\">  418</span>                    std::vector&lt;REAL&gt; <span class=\"keyword\">const</span>&amp; dvWeights,</div>\n-<div class=\"line\"><a id=\"l00419\" name=\"l00419\"></a><span class=\"lineno\">  419</span>                    std::vector&lt;REAL&gt; <span class=\"keyword\">const</span>&amp; duuWeights,</div>\n-<div class=\"line\"><a id=\"l00420\" name=\"l00420\"></a><span class=\"lineno\">  420</span>                    std::vector&lt;REAL&gt; <span class=\"keyword\">const</span>&amp; duvWeights,</div>\n-<div class=\"line\"><a id=\"l00421\" name=\"l00421\"></a><span class=\"lineno\">  421</span>                    std::vector&lt;REAL&gt; <span class=\"keyword\">const</span>&amp; dvvWeights,</div>\n-<div class=\"line\"><a id=\"l00422\" name=\"l00422\"></a><span class=\"lineno\">  422</span>                    <span class=\"keywordtype\">bool</span> includeCoarseVerts,</div>\n-<div class=\"line\"><a id=\"l00423\" name=\"l00423\"></a><span class=\"lineno\">  423</span>                    <span class=\"keywordtype\">size_t</span> firstOffset);</div>\n-<div class=\"line\"><a id=\"l00424\" name=\"l00424\"></a><span class=\"lineno\">  424</span> </div>\n-<div class=\"line\"><a id=\"l00425\" name=\"l00425\"></a><span class=\"lineno\">  425</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00426\" name=\"l00426\"></a><span class=\"lineno\">  426</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00428\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00428\" name=\"l00428\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01077.html#a785195dfb6a281904181b1cba18b3e62\">  428</a></span>    <a class=\"code hl_class\" href=\"a01069.html\">LimitStencilReal&lt;REAL&gt;</a> <a class=\"code hl_function\" href=\"a01077.html#a785195dfb6a281904181b1cba18b3e62\">GetLimitStencil</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> i) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00429\" name=\"l00429\"></a><span class=\"lineno\">  429</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00431\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00431\" name=\"l00431\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01077.html#a14f00fd1df2ddd7e1d4750e7dbda200c\">  431</a></span>    <a class=\"code hl_class\" href=\"a01069.html\">LimitStencilReal&lt;REAL&gt;</a> <a class=\"code hl_function\" href=\"a01077.html#a14f00fd1df2ddd7e1d4750e7dbda200c\">operator[] </a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> index) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00432\" name=\"l00432\"></a><span class=\"lineno\">  432</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00434\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00434\" name=\"l00434\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01077.html#aa3883f989c1ef593204f33e6ff8d31fe\">  434</a></span>    std::vector&lt;REAL&gt; <span class=\"keyword\">const</span> &amp; <a class=\"code hl_function\" href=\"a01077.html#aa3883f989c1ef593204f33e6ff8d31fe\">GetDuWeights</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00435\" name=\"l00435\"></a><span class=\"lineno\">  435</span>        <span class=\"keywordflow\">return</span> _duWeights;</div>\n-<div class=\"line\"><a id=\"l00436\" name=\"l00436\"></a><span class=\"lineno\">  436</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00437\" name=\"l00437\"></a><span class=\"lineno\">  437</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00439\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00439\" name=\"l00439\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01077.html#a3b267a7fa353373736643e1a003c0d96\">  439</a></span>    std::vector&lt;REAL&gt; <span class=\"keyword\">const</span> &amp; <a class=\"code hl_function\" href=\"a01077.html#a3b267a7fa353373736643e1a003c0d96\">GetDvWeights</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00440\" name=\"l00440\"></a><span class=\"lineno\">  440</span>        <span class=\"keywordflow\">return</span> _dvWeights;</div>\n-<div class=\"line\"><a id=\"l00441\" name=\"l00441\"></a><span class=\"lineno\">  441</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00442\" name=\"l00442\"></a><span class=\"lineno\">  442</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00444\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00444\" name=\"l00444\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01077.html#a143d96a8988e32c1497cfb4e07bd4d1e\">  444</a></span>    std::vector&lt;REAL&gt; <span class=\"keyword\">const</span> &amp; <a class=\"code hl_function\" href=\"a01077.html#a143d96a8988e32c1497cfb4e07bd4d1e\">GetDuuWeights</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00445\" name=\"l00445\"></a><span class=\"lineno\">  445</span>        <span class=\"keywordflow\">return</span> _duuWeights;</div>\n-<div class=\"line\"><a id=\"l00446\" name=\"l00446\"></a><span class=\"lineno\">  446</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00447\" name=\"l00447\"></a><span class=\"lineno\">  447</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00449\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00449\" name=\"l00449\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01077.html#ac6b92b68f0b56967e7ffa2d13aea72d0\">  449</a></span>    std::vector&lt;REAL&gt; <span class=\"keyword\">const</span> &amp; <a class=\"code hl_function\" href=\"a01077.html#ac6b92b68f0b56967e7ffa2d13aea72d0\">GetDuvWeights</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00450\" name=\"l00450\"></a><span class=\"lineno\">  450</span>        <span class=\"keywordflow\">return</span> _duvWeights;</div>\n-<div class=\"line\"><a id=\"l00451\" name=\"l00451\"></a><span class=\"lineno\">  451</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00452\" name=\"l00452\"></a><span class=\"lineno\">  452</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00454\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00454\" name=\"l00454\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01077.html#a176d8d4711bcb252f95b79f40549eaad\">  454</a></span>    std::vector&lt;REAL&gt; <span class=\"keyword\">const</span> &amp; <a class=\"code hl_function\" href=\"a01077.html#a176d8d4711bcb252f95b79f40549eaad\">GetDvvWeights</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00455\" name=\"l00455\"></a><span class=\"lineno\">  455</span>        <span class=\"keywordflow\">return</span> _dvvWeights;</div>\n-<div class=\"line\"><a id=\"l00456\" name=\"l00456\"></a><span class=\"lineno\">  456</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00457\" name=\"l00457\"></a><span class=\"lineno\">  457</span> </div>\n-<div class=\"line\"><a id=\"l00475\" name=\"l00475\"></a><span class=\"lineno\">  475</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00476\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00476\" name=\"l00476\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01077.html#a6388396152cb879c2766329f2b0091f8\">  476</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01077.html#a6388396152cb879c2766329f2b0091f8\">UpdateDerivs</a>(T <span class=\"keyword\">const</span> &amp; srcValues, U &amp; uderivs, U &amp; vderivs,</div>\n-<div class=\"line\"><a id=\"l00477\" name=\"l00477\"></a><span class=\"lineno\">  477</span>        <span class=\"keywordtype\">int</span> start=-1, <span class=\"keywordtype\">int</span> end=-1)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00478\" name=\"l00478\"></a><span class=\"lineno\">  478</span> </div>\n-<div class=\"line\"><a id=\"l00479\" name=\"l00479\"></a><span class=\"lineno\">  479</span>        this-&gt;<a class=\"code hl_function\" href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">update</a>(srcValues, uderivs, _duWeights, start, end);</div>\n-<div class=\"line\"><a id=\"l00480\" name=\"l00480\"></a><span class=\"lineno\">  480</span>        this-&gt;<a class=\"code hl_function\" href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">update</a>(srcValues, vderivs, _dvWeights, start, end);</div>\n-<div class=\"line\"><a id=\"l00481\" name=\"l00481\"></a><span class=\"lineno\">  481</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00482\" name=\"l00482\"></a><span class=\"lineno\">  482</span> </div>\n-<div class=\"line\"><a id=\"l00483\" name=\"l00483\"></a><span class=\"lineno\">  483</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T1, <span class=\"keyword\">class</span> T2, <span class=\"keyword\">class</span> U&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00484\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00484\" name=\"l00484\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01077.html#ad3029ef69f3a4b90c058c27cfa968897\">  484</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01077.html#ad3029ef69f3a4b90c058c27cfa968897\">UpdateDerivs</a>(T1 <span class=\"keyword\">const</span> &amp; srcBase, <span class=\"keywordtype\">int</span> numBase, T2 <span class=\"keyword\">const</span> &amp; srcRef,</div>\n-<div class=\"line\"><a id=\"l00485\" name=\"l00485\"></a><span class=\"lineno\">  485</span>        U &amp; uderivs, U &amp; vderivs, <span class=\"keywordtype\">int</span> start=-1, <span class=\"keywordtype\">int</span> end=-1)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00486\" name=\"l00486\"></a><span class=\"lineno\">  486</span> </div>\n-<div class=\"line\"><a id=\"l00487\" name=\"l00487\"></a><span class=\"lineno\">  487</span>        this-&gt;<a class=\"code hl_function\" href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">update</a>(srcBase, numBase, srcRef, uderivs, _duWeights, start, end);</div>\n-<div class=\"line\"><a id=\"l00488\" name=\"l00488\"></a><span class=\"lineno\">  488</span>        this-&gt;<a class=\"code hl_function\" href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">update</a>(srcBase, numBase, srcRef, vderivs, _dvWeights, start, end);</div>\n-<div class=\"line\"><a id=\"l00489\" name=\"l00489\"></a><span class=\"lineno\">  489</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00490\" name=\"l00490\"></a><span class=\"lineno\">  490</span> </div>\n-<div class=\"line\"><a id=\"l00491\" name=\"l00491\"></a><span class=\"lineno\">  491</span>    <span class=\"comment\">//  Pointer interface for backward compatibility</span></div>\n-<div class=\"line\"><a id=\"l00492\" name=\"l00492\"></a><span class=\"lineno\">  492</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00493\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00493\" name=\"l00493\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01077.html#a1de3a0b02983c7a753ca434492d72a41\">  493</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01077.html#a1de3a0b02983c7a753ca434492d72a41\">UpdateDerivs</a>(T <span class=\"keyword\">const</span> *src, U *uderivs, U *vderivs,</div>\n-<div class=\"line\"><a id=\"l00494\" name=\"l00494\"></a><span class=\"lineno\">  494</span>        <span class=\"keywordtype\">int</span> start=-1, <span class=\"keywordtype\">int</span> end=-1)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00495\" name=\"l00495\"></a><span class=\"lineno\">  495</span> </div>\n-<div class=\"line\"><a id=\"l00496\" name=\"l00496\"></a><span class=\"lineno\">  496</span>        this-&gt;<a class=\"code hl_function\" href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">update</a>(src, uderivs, _duWeights, start, end);</div>\n-<div class=\"line\"><a id=\"l00497\" name=\"l00497\"></a><span class=\"lineno\">  497</span>        this-&gt;<a class=\"code hl_function\" href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">update</a>(src, vderivs, _dvWeights, start, end);</div>\n-<div class=\"line\"><a id=\"l00498\" name=\"l00498\"></a><span class=\"lineno\">  498</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00499\" name=\"l00499\"></a><span class=\"lineno\">  499</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T1, <span class=\"keyword\">class</span> T2, <span class=\"keyword\">class</span> U&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00500\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00500\" name=\"l00500\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01077.html#aeb3fc8705b16ef80f1686b6fc7cd44e7\">  500</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01077.html#aeb3fc8705b16ef80f1686b6fc7cd44e7\">UpdateDerivs</a>(T1 <span class=\"keyword\">const</span> *srcBase, <span class=\"keywordtype\">int</span> numBase, T2 <span class=\"keyword\">const</span> *srcRef,</div>\n-<div class=\"line\"><a id=\"l00501\" name=\"l00501\"></a><span class=\"lineno\">  501</span>        U *uderivs, U *vderivs, <span class=\"keywordtype\">int</span> start=-1, <span class=\"keywordtype\">int</span> end=-1)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00502\" name=\"l00502\"></a><span class=\"lineno\">  502</span> </div>\n-<div class=\"line\"><a id=\"l00503\" name=\"l00503\"></a><span class=\"lineno\">  503</span>        this-&gt;<a class=\"code hl_function\" href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">update</a>(srcBase, numBase, srcRef, uderivs, _duWeights, start, end);</div>\n-<div class=\"line\"><a id=\"l00504\" name=\"l00504\"></a><span class=\"lineno\">  504</span>        this-&gt;<a class=\"code hl_function\" href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">update</a>(srcBase, numBase, srcRef, vderivs, _dvWeights, start, end);</div>\n-<div class=\"line\"><a id=\"l00505\" name=\"l00505\"></a><span class=\"lineno\">  505</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00506\" name=\"l00506\"></a><span class=\"lineno\">  506</span> </div>\n-<div class=\"line\"><a id=\"l00527\" name=\"l00527\"></a><span class=\"lineno\">  527</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00528\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00528\" name=\"l00528\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01077.html#a9afad522b48b3d7a0fe296ec26e1484b\">  528</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01077.html#a9afad522b48b3d7a0fe296ec26e1484b\">Update2ndDerivs</a>(T <span class=\"keyword\">const</span> &amp; srcValues,</div>\n-<div class=\"line\"><a id=\"l00529\" name=\"l00529\"></a><span class=\"lineno\">  529</span>        U &amp; uuderivs, U &amp; uvderivs, U &amp; vvderivs,</div>\n-<div class=\"line\"><a id=\"l00530\" name=\"l00530\"></a><span class=\"lineno\">  530</span>        <span class=\"keywordtype\">int</span> start=-1, <span class=\"keywordtype\">int</span> end=-1)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00531\" name=\"l00531\"></a><span class=\"lineno\">  531</span> </div>\n-<div class=\"line\"><a id=\"l00532\" name=\"l00532\"></a><span class=\"lineno\">  532</span>        this-&gt;<a class=\"code hl_function\" href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">update</a>(srcValues, uuderivs, _duuWeights, start, end);</div>\n-<div class=\"line\"><a id=\"l00533\" name=\"l00533\"></a><span class=\"lineno\">  533</span>        this-&gt;<a class=\"code hl_function\" href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">update</a>(srcValues, uvderivs, _duvWeights, start, end);</div>\n-<div class=\"line\"><a id=\"l00534\" name=\"l00534\"></a><span class=\"lineno\">  534</span>        this-&gt;<a class=\"code hl_function\" href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">update</a>(srcValues, vvderivs, _dvvWeights, start, end);</div>\n-<div class=\"line\"><a id=\"l00535\" name=\"l00535\"></a><span class=\"lineno\">  535</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00536\" name=\"l00536\"></a><span class=\"lineno\">  536</span> </div>\n-<div class=\"line\"><a id=\"l00537\" name=\"l00537\"></a><span class=\"lineno\">  537</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T1, <span class=\"keyword\">class</span> T2, <span class=\"keyword\">class</span> U&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00538\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00538\" name=\"l00538\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01077.html#ac0752d706ee5bbf7ef22f26a9399538f\">  538</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01077.html#ac0752d706ee5bbf7ef22f26a9399538f\">Update2ndDerivs</a>(T1 <span class=\"keyword\">const</span> &amp; srcBase, <span class=\"keywordtype\">int</span> numBase, T2 <span class=\"keyword\">const</span> &amp; srcRef,</div>\n-<div class=\"line\"><a id=\"l00539\" name=\"l00539\"></a><span class=\"lineno\">  539</span>        U &amp; uuderivs, U &amp; uvderivs, U &amp; vvderivs, <span class=\"keywordtype\">int</span> start=-1, <span class=\"keywordtype\">int</span> end=-1)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00540\" name=\"l00540\"></a><span class=\"lineno\">  540</span> </div>\n-<div class=\"line\"><a id=\"l00541\" name=\"l00541\"></a><span class=\"lineno\">  541</span>        this-&gt;<a class=\"code hl_function\" href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">update</a>(srcBase, numBase, srcRef, uuderivs, _duuWeights, start, end);</div>\n-<div class=\"line\"><a id=\"l00542\" name=\"l00542\"></a><span class=\"lineno\">  542</span>        this-&gt;<a class=\"code hl_function\" href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">update</a>(srcBase, numBase, srcRef, uvderivs, _duvWeights, start, end);</div>\n-<div class=\"line\"><a id=\"l00543\" name=\"l00543\"></a><span class=\"lineno\">  543</span>        this-&gt;<a class=\"code hl_function\" href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">update</a>(srcBase, numBase, srcRef, vvderivs, _dvvWeights, start, end);</div>\n-<div class=\"line\"><a id=\"l00544\" name=\"l00544\"></a><span class=\"lineno\">  544</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00545\" name=\"l00545\"></a><span class=\"lineno\">  545</span> </div>\n-<div class=\"line\"><a id=\"l00546\" name=\"l00546\"></a><span class=\"lineno\">  546</span>    <span class=\"comment\">//  Pointer interface for backward compatibility</span></div>\n-<div class=\"line\"><a id=\"l00547\" name=\"l00547\"></a><span class=\"lineno\">  547</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00548\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00548\" name=\"l00548\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01077.html#a1efa2668bb0085a23b0b590f7a765ab2\">  548</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01077.html#a1efa2668bb0085a23b0b590f7a765ab2\">Update2ndDerivs</a>(T <span class=\"keyword\">const</span> *src, T *uuderivs, U *uvderivs, U *vvderivs,</div>\n-<div class=\"line\"><a id=\"l00549\" name=\"l00549\"></a><span class=\"lineno\">  549</span>        <span class=\"keywordtype\">int</span> start=-1, <span class=\"keywordtype\">int</span> end=-1)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00550\" name=\"l00550\"></a><span class=\"lineno\">  550</span> </div>\n-<div class=\"line\"><a id=\"l00551\" name=\"l00551\"></a><span class=\"lineno\">  551</span>        this-&gt;<a class=\"code hl_function\" href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">update</a>(src, uuderivs, _duuWeights, start, end);</div>\n-<div class=\"line\"><a id=\"l00552\" name=\"l00552\"></a><span class=\"lineno\">  552</span>        this-&gt;<a class=\"code hl_function\" href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">update</a>(src, uvderivs, _duvWeights, start, end);</div>\n-<div class=\"line\"><a id=\"l00553\" name=\"l00553\"></a><span class=\"lineno\">  553</span>        this-&gt;<a class=\"code hl_function\" href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">update</a>(src, vvderivs, _dvvWeights, start, end);</div>\n-<div class=\"line\"><a id=\"l00554\" name=\"l00554\"></a><span class=\"lineno\">  554</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00555\" name=\"l00555\"></a><span class=\"lineno\">  555</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T1, <span class=\"keyword\">class</span> T2, <span class=\"keyword\">class</span> U&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00556\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00556\" name=\"l00556\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01077.html#a4ee18e8eea83ee57a5a993154ed4cfbd\">  556</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01077.html#a4ee18e8eea83ee57a5a993154ed4cfbd\">Update2ndDerivs</a>(T1 <span class=\"keyword\">const</span> *srcBase, <span class=\"keywordtype\">int</span> numBase, T2 <span class=\"keyword\">const</span> *srcRef,</div>\n-<div class=\"line\"><a id=\"l00557\" name=\"l00557\"></a><span class=\"lineno\">  557</span>        U *uuderivs, U *uvderivs, U *vvderivs, <span class=\"keywordtype\">int</span> start=-1, <span class=\"keywordtype\">int</span> end=-1)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00558\" name=\"l00558\"></a><span class=\"lineno\">  558</span> </div>\n-<div class=\"line\"><a id=\"l00559\" name=\"l00559\"></a><span class=\"lineno\">  559</span>        this-&gt;<a class=\"code hl_function\" href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">update</a>(srcBase, numBase, srcRef, uuderivs, _duuWeights, start, end);</div>\n-<div class=\"line\"><a id=\"l00560\" name=\"l00560\"></a><span class=\"lineno\">  560</span>        this-&gt;<a class=\"code hl_function\" href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">update</a>(srcBase, numBase, srcRef, uvderivs, _duvWeights, start, end);</div>\n-<div class=\"line\"><a id=\"l00561\" name=\"l00561\"></a><span class=\"lineno\">  561</span>        this-&gt;<a class=\"code hl_function\" href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">update</a>(srcBase, numBase, srcRef, vvderivs, _dvvWeights, start, end);</div>\n-<div class=\"line\"><a id=\"l00562\" name=\"l00562\"></a><span class=\"lineno\">  562</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00563\" name=\"l00563\"></a><span class=\"lineno\">  563</span> </div>\n-<div class=\"line\"><a id=\"l00565\" name=\"l00565\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01077.html#aa71d36872f416feaa853788a7a7a7ef8\">  565</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01077.html#aa71d36872f416feaa853788a7a7a7ef8\">Clear</a>();</div>\n-<div class=\"line\"><a id=\"l00566\" name=\"l00566\"></a><span class=\"lineno\">  566</span> </div>\n-<div class=\"line\"><a id=\"l00567\" name=\"l00567\"></a><span class=\"lineno\">  567</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00568\" name=\"l00568\"></a><span class=\"lineno\">  568</span>    <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01049.html\">LimitStencilTableFactoryReal</a>&lt;REAL&gt;;</div>\n-<div class=\"line\"><a id=\"l00569\" name=\"l00569\"></a><span class=\"lineno\">  569</span> </div>\n-<div class=\"line\"><a id=\"l00570\" name=\"l00570\"></a><span class=\"lineno\">  570</span>    <span class=\"comment\">// Resize the table arrays (factory helper)</span></div>\n-<div class=\"line\"><a id=\"l00571\" name=\"l00571\"></a><span class=\"lineno\">  571</span>    <span class=\"keywordtype\">void</span> resize(<span class=\"keywordtype\">int</span> nstencils, <span class=\"keywordtype\">int</span> nelems);</div>\n-<div class=\"line\"><a id=\"l00572\" name=\"l00572\"></a><span class=\"lineno\">  572</span> </div>\n-<div class=\"line\"><a id=\"l00573\" name=\"l00573\"></a><span class=\"lineno\">  573</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00574\" name=\"l00574\"></a><span class=\"lineno\">  574</span>    std::vector&lt;REAL&gt;   _duWeights,   <span class=\"comment\">// u  derivative limit stencil weights</span></div>\n-<div class=\"line\"><a id=\"l00575\" name=\"l00575\"></a><span class=\"lineno\">  575</span>                        _dvWeights,   <span class=\"comment\">// v  derivative limit stencil weights</span></div>\n-<div class=\"line\"><a id=\"l00576\" name=\"l00576\"></a><span class=\"lineno\">  576</span>                        _duuWeights,  <span class=\"comment\">// uu derivative limit stencil weights</span></div>\n-<div class=\"line\"><a id=\"l00577\" name=\"l00577\"></a><span class=\"lineno\">  577</span>                        _duvWeights,  <span class=\"comment\">// uv derivative limit stencil weights</span></div>\n-<div class=\"line\"><a id=\"l00578\" name=\"l00578\"></a><span class=\"lineno\">  578</span>                        _dvvWeights;  <span class=\"comment\">// vv derivative limit stencil weights</span></div>\n-<div class=\"line\"><a id=\"l00579\" name=\"l00579\"></a><span class=\"lineno\">  579</span>};</div>\n-<div class=\"line\"><a id=\"l00580\" name=\"l00580\"></a><span class=\"lineno\">  580</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00583\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00583\" name=\"l00583\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01081.html\">  583</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01081.html\">LimitStencilTable</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"a01077.html\">LimitStencilTableReal</a>&lt;float&gt; {</div>\n-<div class=\"line\"><a id=\"l00584\" name=\"l00584\"></a><span class=\"lineno\">  584</span><span class=\"keyword\">protected</span>:</div>\n-<div class=\"line\"><a id=\"l00585\" name=\"l00585\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01081.html#a13d2ee8ca9cdc9073905193ea1cefd95\">  585</a></span>    <span class=\"keyword\">typedef</span> <a class=\"code hl_class\" href=\"a01077.html\">LimitStencilTableReal&lt;float&gt;</a>   <a class=\"code hl_typedef\" href=\"a01081.html#a13d2ee8ca9cdc9073905193ea1cefd95\">BaseTable</a>;</div>\n-<div class=\"line\"><a id=\"l00586\" name=\"l00586\"></a><span class=\"lineno\">  586</span> </div>\n-<div class=\"line\"><a id=\"l00587\" name=\"l00587\"></a><span class=\"lineno\">  587</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"foldopen\" id=\"foldopen00588\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00588\" name=\"l00588\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01081.html#a177ff72b08f474982eaa70fa93fe5471\">  588</a></span>    <a class=\"code hl_class\" href=\"a01073.html\">LimitStencil</a> <a class=\"code hl_function\" href=\"a01081.html#a177ff72b08f474982eaa70fa93fe5471\">GetLimitStencil</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> index)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00589\" name=\"l00589\"></a><span class=\"lineno\">  589</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_class\" href=\"a01073.html\">LimitStencil</a>(<a class=\"code hl_function\" href=\"a01077.html#a785195dfb6a281904181b1cba18b3e62\">BaseTable::GetLimitStencil</a>(index));</div>\n-<div class=\"line\"><a id=\"l00590\" name=\"l00590\"></a><span class=\"lineno\">  590</span>    }</div>\n-</div>\n-<div class=\"foldopen\" id=\"foldopen00591\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00591\" name=\"l00591\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01081.html#a486c20121d63d5149d01adbe45d3b9b6\">  591</a></span>    <a class=\"code hl_class\" href=\"a01073.html\">LimitStencil</a> <a class=\"code hl_function\" href=\"a01081.html#a486c20121d63d5149d01adbe45d3b9b6\">operator[] </a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> index)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00592\" name=\"l00592\"></a><span class=\"lineno\">  592</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_class\" href=\"a01073.html\">LimitStencil</a>(<a class=\"code hl_function\" href=\"a01077.html#a785195dfb6a281904181b1cba18b3e62\">BaseTable::GetLimitStencil</a>(index));</div>\n-<div class=\"line\"><a id=\"l00593\" name=\"l00593\"></a><span class=\"lineno\">  593</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00594\" name=\"l00594\"></a><span class=\"lineno\">  594</span> </div>\n-<div class=\"line\"><a id=\"l00595\" name=\"l00595\"></a><span class=\"lineno\">  595</span><span class=\"keyword\">protected</span>:</div>\n-<div class=\"foldopen\" id=\"foldopen00596\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00596\" name=\"l00596\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01081.html#a45723c21481c3887e0740fe69acbac40\">  596</a></span>    <a class=\"code hl_function\" href=\"a01081.html#a45723c21481c3887e0740fe69acbac40\">LimitStencilTable</a>(<span class=\"keywordtype\">int</span> numControlVerts,</div>\n-<div class=\"line\"><a id=\"l00597\" name=\"l00597\"></a><span class=\"lineno\">  597</span>                    std::vector&lt;int&gt; <span class=\"keyword\">const</span>&amp; offsets,</div>\n-<div class=\"line\"><a id=\"l00598\" name=\"l00598\"></a><span class=\"lineno\">  598</span>                    std::vector&lt;int&gt; <span class=\"keyword\">const</span>&amp; sizes,</div>\n-<div class=\"line\"><a id=\"l00599\" name=\"l00599\"></a><span class=\"lineno\">  599</span>                    std::vector&lt;int&gt; <span class=\"keyword\">const</span>&amp; sources,</div>\n-<div class=\"line\"><a id=\"l00600\" name=\"l00600\"></a><span class=\"lineno\">  600</span>                    std::vector&lt;float&gt; <span class=\"keyword\">const</span>&amp; weights,</div>\n-<div class=\"line\"><a id=\"l00601\" name=\"l00601\"></a><span class=\"lineno\">  601</span>                    std::vector&lt;float&gt; <span class=\"keyword\">const</span>&amp; duWeights,</div>\n-<div class=\"line\"><a id=\"l00602\" name=\"l00602\"></a><span class=\"lineno\">  602</span>                    std::vector&lt;float&gt; <span class=\"keyword\">const</span>&amp; dvWeights,</div>\n-<div class=\"line\"><a id=\"l00603\" name=\"l00603\"></a><span class=\"lineno\">  603</span>                    std::vector&lt;float&gt; <span class=\"keyword\">const</span>&amp; duuWeights,</div>\n-<div class=\"line\"><a id=\"l00604\" name=\"l00604\"></a><span class=\"lineno\">  604</span>                    std::vector&lt;float&gt; <span class=\"keyword\">const</span>&amp; duvWeights,</div>\n-<div class=\"line\"><a id=\"l00605\" name=\"l00605\"></a><span class=\"lineno\">  605</span>                    std::vector&lt;float&gt; <span class=\"keyword\">const</span>&amp; dvvWeights,</div>\n-<div class=\"line\"><a id=\"l00606\" name=\"l00606\"></a><span class=\"lineno\">  606</span>                    <span class=\"keywordtype\">bool</span> includeCoarseVerts,</div>\n-<div class=\"line\"><a id=\"l00607\" name=\"l00607\"></a><span class=\"lineno\">  607</span>                    <span class=\"keywordtype\">size_t</span> firstOffset)</div>\n-<div class=\"line\"><a id=\"l00608\" name=\"l00608\"></a><span class=\"lineno\">  608</span>        : <a class=\"code hl_class\" href=\"a01077.html\">BaseTable</a>(numControlVerts,</div>\n-<div class=\"line\"><a id=\"l00609\" name=\"l00609\"></a><span class=\"lineno\">  609</span>                    offsets, sizes, sources, weights,</div>\n-<div class=\"line\"><a id=\"l00610\" name=\"l00610\"></a><span class=\"lineno\">  610</span>                    duWeights, dvWeights, duuWeights, duvWeights, dvvWeights,</div>\n-<div class=\"line\"><a id=\"l00611\" name=\"l00611\"></a><span class=\"lineno\">  611</span>                    includeCoarseVerts, firstOffset) { }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00612\" name=\"l00612\"></a><span class=\"lineno\">  612</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00613\" name=\"l00613\"></a><span class=\"lineno\">  613</span> </div>\n-<div class=\"line\"><a id=\"l00614\" name=\"l00614\"></a><span class=\"lineno\">  614</span> </div>\n-<div class=\"line\"><a id=\"l00615\" name=\"l00615\"></a><span class=\"lineno\">  615</span><span class=\"comment\">// Update values by applying cached stencil weights to new control values</span></div>\n-<div class=\"line\"><a id=\"l00616\" name=\"l00616\"></a><span class=\"lineno\">  616</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00617\" name=\"l00617\"></a><span class=\"lineno\">  617</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T1, <span class=\"keyword\">class</span> T2, <span class=\"keyword\">class</span> U&gt; <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00618\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00618\" name=\"l00618\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#a1bcd132b8e6d40cb6ed1543f28ff998c\">  618</a></span><a class=\"code hl_function\" href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">StencilTableReal&lt;REAL&gt;::update</a>(T1 <span class=\"keyword\">const</span> &amp;srcBase, <span class=\"keywordtype\">int</span> numBase,</div>\n-<div class=\"line\"><a id=\"l00619\" name=\"l00619\"></a><span class=\"lineno\">  619</span>    T2 <span class=\"keyword\">const</span> &amp;srcRef, U &amp;dstValues,</div>\n-<div class=\"line\"><a id=\"l00620\" name=\"l00620\"></a><span class=\"lineno\">  620</span>    std::vector&lt;REAL&gt; <span class=\"keyword\">const</span> &amp;valueWeights, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> start, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> end)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00621\" name=\"l00621\"></a><span class=\"lineno\">  621</span> </div>\n-<div class=\"line\"><a id=\"l00622\" name=\"l00622\"></a><span class=\"lineno\">  622</span>    <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> * sizes = &amp;_sizes.at(0);</div>\n-<div class=\"line\"><a id=\"l00623\" name=\"l00623\"></a><span class=\"lineno\">  623</span>    <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> <span class=\"keyword\">const</span> * indices = &amp;_indices.at(0);</div>\n-<div class=\"line\"><a id=\"l00624\" name=\"l00624\"></a><span class=\"lineno\">  624</span>    REAL <span class=\"keyword\">const</span> * weights = &amp;valueWeights.at(0);</div>\n-<div class=\"line\"><a id=\"l00625\" name=\"l00625\"></a><span class=\"lineno\">  625</span> </div>\n-<div class=\"line\"><a id=\"l00626\" name=\"l00626\"></a><span class=\"lineno\">  626</span>    <span class=\"keywordflow\">if</span> (start &gt; 0) {</div>\n-<div class=\"line\"><a id=\"l00627\" name=\"l00627\"></a><span class=\"lineno\">  627</span>        assert(start &lt; (<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a>)_offsets.size());</div>\n-<div class=\"line\"><a id=\"l00628\" name=\"l00628\"></a><span class=\"lineno\">  628</span>        sizes += start;</div>\n-<div class=\"line\"><a id=\"l00629\" name=\"l00629\"></a><span class=\"lineno\">  629</span>        indices += _offsets[start];</div>\n-<div class=\"line\"><a id=\"l00630\" name=\"l00630\"></a><span class=\"lineno\">  630</span>        weights += _offsets[start];</div>\n-<div class=\"line\"><a id=\"l00631\" name=\"l00631\"></a><span class=\"lineno\">  631</span>    } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00632\" name=\"l00632\"></a><span class=\"lineno\">  632</span>        start = 0;</div>\n-<div class=\"line\"><a id=\"l00633\" name=\"l00633\"></a><span class=\"lineno\">  633</span>    }</div>\n-<div class=\"line\"><a id=\"l00634\" name=\"l00634\"></a><span class=\"lineno\">  634</span> </div>\n-<div class=\"line\"><a id=\"l00635\" name=\"l00635\"></a><span class=\"lineno\">  635</span>    <span class=\"keywordtype\">int</span> nstencils = ((end &lt; start) ? GetNumStencils() : end) - start;</div>\n-<div class=\"line\"><a id=\"l00636\" name=\"l00636\"></a><span class=\"lineno\">  636</span> </div>\n-<div class=\"line\"><a id=\"l00637\" name=\"l00637\"></a><span class=\"lineno\">  637</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; nstencils; ++i, ++sizes) {</div>\n-<div class=\"line\"><a id=\"l00638\" name=\"l00638\"></a><span class=\"lineno\">  638</span>        dstValues[start + i].Clear();</div>\n-<div class=\"line\"><a id=\"l00639\" name=\"l00639\"></a><span class=\"lineno\">  639</span>        <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> j = 0; j &lt; *sizes; ++j, ++indices, ++weights) {</div>\n-<div class=\"line\"><a id=\"l00640\" name=\"l00640\"></a><span class=\"lineno\">  640</span>            <span class=\"keywordflow\">if</span> (*indices &lt; numBase) {</div>\n-<div class=\"line\"><a id=\"l00641\" name=\"l00641\"></a><span class=\"lineno\">  641</span>                dstValues[start + i].AddWithWeight(srcBase[*indices], *weights);</div>\n-<div class=\"line\"><a id=\"l00642\" name=\"l00642\"></a><span class=\"lineno\">  642</span>            } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00643\" name=\"l00643\"></a><span class=\"lineno\">  643</span>                dstValues[start + i].AddWithWeight(srcRef[*indices - numBase], *weights);</div>\n-<div class=\"line\"><a id=\"l00644\" name=\"l00644\"></a><span class=\"lineno\">  644</span>            }</div>\n-<div class=\"line\"><a id=\"l00645\" name=\"l00645\"></a><span class=\"lineno\">  645</span>        }</div>\n-<div class=\"line\"><a id=\"l00646\" name=\"l00646\"></a><span class=\"lineno\">  646</span>    }</div>\n-<div class=\"line\"><a id=\"l00647\" name=\"l00647\"></a><span class=\"lineno\">  647</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00648\" name=\"l00648\"></a><span class=\"lineno\">  648</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00649\" name=\"l00649\"></a><span class=\"lineno\">  649</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt; <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00650\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00650\" name=\"l00650\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">  650</a></span><a class=\"code hl_function\" href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">StencilTableReal&lt;REAL&gt;::update</a>(T <span class=\"keyword\">const</span> &amp;srcValues, U &amp;dstValues,</div>\n-<div class=\"line\"><a id=\"l00651\" name=\"l00651\"></a><span class=\"lineno\">  651</span>    std::vector&lt;REAL&gt; <span class=\"keyword\">const</span> &amp;valueWeights, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> start, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> end)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00652\" name=\"l00652\"></a><span class=\"lineno\">  652</span> </div>\n-<div class=\"line\"><a id=\"l00653\" name=\"l00653\"></a><span class=\"lineno\">  653</span>    <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> * sizes = &amp;_sizes.at(0);</div>\n-<div class=\"line\"><a id=\"l00654\" name=\"l00654\"></a><span class=\"lineno\">  654</span>    <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> <span class=\"keyword\">const</span> * indices = &amp;_indices.at(0);</div>\n-<div class=\"line\"><a id=\"l00655\" name=\"l00655\"></a><span class=\"lineno\">  655</span>    REAL <span class=\"keyword\">const</span> * weights = &amp;valueWeights.at(0);</div>\n-<div class=\"line\"><a id=\"l00656\" name=\"l00656\"></a><span class=\"lineno\">  656</span> </div>\n-<div class=\"line\"><a id=\"l00657\" name=\"l00657\"></a><span class=\"lineno\">  657</span>    <span class=\"keywordflow\">if</span> (start &gt; 0) {</div>\n-<div class=\"line\"><a id=\"l00658\" name=\"l00658\"></a><span class=\"lineno\">  658</span>        assert(start &lt; (<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a>)_offsets.size());</div>\n-<div class=\"line\"><a id=\"l00659\" name=\"l00659\"></a><span class=\"lineno\">  659</span>        sizes += start;</div>\n-<div class=\"line\"><a id=\"l00660\" name=\"l00660\"></a><span class=\"lineno\">  660</span>        indices += _offsets[start];</div>\n-<div class=\"line\"><a id=\"l00661\" name=\"l00661\"></a><span class=\"lineno\">  661</span>        weights += _offsets[start];</div>\n-<div class=\"line\"><a id=\"l00662\" name=\"l00662\"></a><span class=\"lineno\">  662</span>    } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00663\" name=\"l00663\"></a><span class=\"lineno\">  663</span>        start = 0;</div>\n-<div class=\"line\"><a id=\"l00664\" name=\"l00664\"></a><span class=\"lineno\">  664</span>    }</div>\n-<div class=\"line\"><a id=\"l00665\" name=\"l00665\"></a><span class=\"lineno\">  665</span> </div>\n-<div class=\"line\"><a id=\"l00666\" name=\"l00666\"></a><span class=\"lineno\">  666</span>    <span class=\"keywordtype\">int</span> nstencils = ((end &lt; start) ? GetNumStencils() : end) - start;</div>\n-<div class=\"line\"><a id=\"l00667\" name=\"l00667\"></a><span class=\"lineno\">  667</span> </div>\n-<div class=\"line\"><a id=\"l00668\" name=\"l00668\"></a><span class=\"lineno\">  668</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; nstencils; ++i, ++sizes) {</div>\n-<div class=\"line\"><a id=\"l00669\" name=\"l00669\"></a><span class=\"lineno\">  669</span>        dstValues[start + i].Clear();</div>\n-<div class=\"line\"><a id=\"l00670\" name=\"l00670\"></a><span class=\"lineno\">  670</span>        <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> j = 0; j &lt; *sizes; ++j, ++indices, ++weights) {</div>\n-<div class=\"line\"><a id=\"l00671\" name=\"l00671\"></a><span class=\"lineno\">  671</span>            dstValues[start + i].AddWithWeight(srcValues[*indices], *weights);</div>\n-<div class=\"line\"><a id=\"l00672\" name=\"l00672\"></a><span class=\"lineno\">  672</span>        }</div>\n-<div class=\"line\"><a id=\"l00673\" name=\"l00673\"></a><span class=\"lineno\">  673</span>    }</div>\n-<div class=\"line\"><a id=\"l00674\" name=\"l00674\"></a><span class=\"lineno\">  674</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00675\" name=\"l00675\"></a><span class=\"lineno\">  675</span> </div>\n-<div class=\"line\"><a id=\"l00676\" name=\"l00676\"></a><span class=\"lineno\">  676</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00677\" name=\"l00677\"></a><span class=\"lineno\">  677</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00678\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00678\" name=\"l00678\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#a8ac84e48ecd3aec3db72f62a4c8206f8\">  678</a></span><a class=\"code hl_function\" href=\"a01061.html#a8ac84e48ecd3aec3db72f62a4c8206f8\">StencilTableReal&lt;REAL&gt;::generateOffsets</a>() {</div>\n-<div class=\"line\"><a id=\"l00679\" name=\"l00679\"></a><span class=\"lineno\">  679</span>    <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> offset=0;</div>\n-<div class=\"line\"><a id=\"l00680\" name=\"l00680\"></a><span class=\"lineno\">  680</span>    <span class=\"keywordtype\">int</span> noffsets = (int)_sizes.size();</div>\n-<div class=\"line\"><a id=\"l00681\" name=\"l00681\"></a><span class=\"lineno\">  681</span>    _offsets.resize(noffsets);</div>\n-<div class=\"line\"><a id=\"l00682\" name=\"l00682\"></a><span class=\"lineno\">  682</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i=0; i&lt;(int)_sizes.size(); ++i ) {</div>\n-<div class=\"line\"><a id=\"l00683\" name=\"l00683\"></a><span class=\"lineno\">  683</span>        _offsets[i]=offset;</div>\n-<div class=\"line\"><a id=\"l00684\" name=\"l00684\"></a><span class=\"lineno\">  684</span>        offset+=_sizes[i];</div>\n-<div class=\"line\"><a id=\"l00685\" name=\"l00685\"></a><span class=\"lineno\">  685</span>    }</div>\n-<div class=\"line\"><a id=\"l00686\" name=\"l00686\"></a><span class=\"lineno\">  686</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00687\" name=\"l00687\"></a><span class=\"lineno\">  687</span> </div>\n-<div class=\"line\"><a id=\"l00688\" name=\"l00688\"></a><span class=\"lineno\">  688</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00689\" name=\"l00689\"></a><span class=\"lineno\">  689</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00690\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00690\" name=\"l00690\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#ac21f18df5c8da2db4d23287cdab5fcc1\">  690</a></span><a class=\"code hl_function\" href=\"a01061.html#ac21f18df5c8da2db4d23287cdab5fcc1\">StencilTableReal&lt;REAL&gt;::resize</a>(<span class=\"keywordtype\">int</span> nstencils, <span class=\"keywordtype\">int</span> nelems) {</div>\n-<div class=\"line\"><a id=\"l00691\" name=\"l00691\"></a><span class=\"lineno\">  691</span>    _sizes.resize(nstencils);</div>\n-<div class=\"line\"><a id=\"l00692\" name=\"l00692\"></a><span class=\"lineno\">  692</span>    _indices.resize(nelems);</div>\n-<div class=\"line\"><a id=\"l00693\" name=\"l00693\"></a><span class=\"lineno\">  693</span>    _weights.resize(nelems);</div>\n-<div class=\"line\"><a id=\"l00694\" name=\"l00694\"></a><span class=\"lineno\">  694</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00695\" name=\"l00695\"></a><span class=\"lineno\">  695</span> </div>\n-<div class=\"line\"><a id=\"l00696\" name=\"l00696\"></a><span class=\"lineno\">  696</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00697\" name=\"l00697\"></a><span class=\"lineno\">  697</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00698\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00698\" name=\"l00698\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#ae00a9e01294323589df33d2680dab235\">  698</a></span><a class=\"code hl_function\" href=\"a01061.html#ae00a9e01294323589df33d2680dab235\">StencilTableReal&lt;REAL&gt;::reserve</a>(<span class=\"keywordtype\">int</span> nstencils, <span class=\"keywordtype\">int</span> nelems) {</div>\n-<div class=\"line\"><a id=\"l00699\" name=\"l00699\"></a><span class=\"lineno\">  699</span>    _sizes.reserve(nstencils);</div>\n-<div class=\"line\"><a id=\"l00700\" name=\"l00700\"></a><span class=\"lineno\">  700</span>    _indices.reserve(nelems);</div>\n-<div class=\"line\"><a id=\"l00701\" name=\"l00701\"></a><span class=\"lineno\">  701</span>    _weights.reserve(nelems);</div>\n-<div class=\"line\"><a id=\"l00702\" name=\"l00702\"></a><span class=\"lineno\">  702</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00703\" name=\"l00703\"></a><span class=\"lineno\">  703</span> </div>\n-<div class=\"line\"><a id=\"l00704\" name=\"l00704\"></a><span class=\"lineno\">  704</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00705\" name=\"l00705\"></a><span class=\"lineno\">  705</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00706\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00706\" name=\"l00706\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#a84fb9ead4f0f7458491b5d310592cea9\">  706</a></span><a class=\"code hl_function\" href=\"a01061.html#a84fb9ead4f0f7458491b5d310592cea9\">StencilTableReal&lt;REAL&gt;::shrinkToFit</a>() {</div>\n-<div class=\"line\"><a id=\"l00707\" name=\"l00707\"></a><span class=\"lineno\">  707</span>    std::vector&lt;int&gt;(_sizes).swap(_sizes);</div>\n-<div class=\"line\"><a id=\"l00708\" name=\"l00708\"></a><span class=\"lineno\">  708</span>    std::vector&lt;Index&gt;(_indices).swap(_indices);</div>\n-<div class=\"line\"><a id=\"l00709\" name=\"l00709\"></a><span class=\"lineno\">  709</span>    std::vector&lt;REAL&gt;(_weights).swap(_weights);</div>\n-<div class=\"line\"><a id=\"l00710\" name=\"l00710\"></a><span class=\"lineno\">  710</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00711\" name=\"l00711\"></a><span class=\"lineno\">  711</span> </div>\n-<div class=\"line\"><a id=\"l00712\" name=\"l00712\"></a><span class=\"lineno\">  712</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00713\" name=\"l00713\"></a><span class=\"lineno\">  713</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00714\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00714\" name=\"l00714\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#a32d626626eee0bc4ade146973f6abb1c\">  714</a></span><a class=\"code hl_function\" href=\"a01061.html#a32d626626eee0bc4ade146973f6abb1c\">StencilTableReal&lt;REAL&gt;::finalize</a>() {</div>\n-<div class=\"line\"><a id=\"l00715\" name=\"l00715\"></a><span class=\"lineno\">  715</span>    shrinkToFit();</div>\n-<div class=\"line\"><a id=\"l00716\" name=\"l00716\"></a><span class=\"lineno\">  716</span>    generateOffsets();</div>\n-<div class=\"line\"><a id=\"l00717\" name=\"l00717\"></a><span class=\"lineno\">  717</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00718\" name=\"l00718\"></a><span class=\"lineno\">  718</span> </div>\n-<div class=\"line\"><a id=\"l00719\" name=\"l00719\"></a><span class=\"lineno\">  719</span><span class=\"comment\">// Returns a Stencil at index i in the table</span></div>\n-<div class=\"line\"><a id=\"l00720\" name=\"l00720\"></a><span class=\"lineno\">  720</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00721\" name=\"l00721\"></a><span class=\"lineno\">  721</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a01053.html\">StencilReal&lt;REAL&gt;</a></div>\n-<div class=\"foldopen\" id=\"foldopen00722\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00722\" name=\"l00722\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#a84969a9edeae22167a83fde274f002af\">  722</a></span><a class=\"code hl_function\" href=\"a01061.html#a84969a9edeae22167a83fde274f002af\">StencilTableReal&lt;REAL&gt;::GetStencil</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> i)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00723\" name=\"l00723\"></a><span class=\"lineno\">  723</span>    assert((! _offsets.empty()) &amp;&amp; i&lt;(<span class=\"keywordtype\">int</span>)_offsets.size());</div>\n-<div class=\"line\"><a id=\"l00724\" name=\"l00724\"></a><span class=\"lineno\">  724</span> </div>\n-<div class=\"line\"><a id=\"l00725\" name=\"l00725\"></a><span class=\"lineno\">  725</span>    <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> ofs = _offsets[i];</div>\n-<div class=\"line\"><a id=\"l00726\" name=\"l00726\"></a><span class=\"lineno\">  726</span> </div>\n-<div class=\"line\"><a id=\"l00727\" name=\"l00727\"></a><span class=\"lineno\">  727</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_class\" href=\"a01053.html\">StencilReal&lt;REAL&gt;</a>(<span class=\"keyword\">const_cast&lt;</span><span class=\"keywordtype\">int</span>*<span class=\"keyword\">&gt;</span>(&amp;_sizes[i]),</div>\n-<div class=\"line\"><a id=\"l00728\" name=\"l00728\"></a><span class=\"lineno\">  728</span>                             <span class=\"keyword\">const_cast&lt;</span><a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a>*<span class=\"keyword\">&gt;</span>(&amp;_indices[ofs]),</div>\n-<div class=\"line\"><a id=\"l00729\" name=\"l00729\"></a><span class=\"lineno\">  729</span>                             <span class=\"keyword\">const_cast&lt;</span>REAL*<span class=\"keyword\">&gt;</span>(&amp;_weights[ofs]));</div>\n-<div class=\"line\"><a id=\"l00730\" name=\"l00730\"></a><span class=\"lineno\">  730</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00731\" name=\"l00731\"></a><span class=\"lineno\">  731</span> </div>\n-<div class=\"line\"><a id=\"l00732\" name=\"l00732\"></a><span class=\"lineno\">  732</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00733\" name=\"l00733\"></a><span class=\"lineno\">  733</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a01053.html\">StencilReal&lt;REAL&gt;</a></div>\n-<div class=\"foldopen\" id=\"foldopen00734\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00734\" name=\"l00734\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#a35786984f5caa4684165da2c96fba9b3\">  734</a></span><a class=\"code hl_function\" href=\"a01061.html#a35786984f5caa4684165da2c96fba9b3\">StencilTableReal&lt;REAL&gt;::operator[] </a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> index)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00735\" name=\"l00735\"></a><span class=\"lineno\">  735</span>    <span class=\"keywordflow\">return</span> GetStencil(index);</div>\n-<div class=\"line\"><a id=\"l00736\" name=\"l00736\"></a><span class=\"lineno\">  736</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00737\" name=\"l00737\"></a><span class=\"lineno\">  737</span> </div>\n-<div class=\"line\"><a id=\"l00738\" name=\"l00738\"></a><span class=\"lineno\">  738</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00739\" name=\"l00739\"></a><span class=\"lineno\">  739</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"line\"><a id=\"l00740\" name=\"l00740\"></a><span class=\"lineno\">  740</span><a class=\"code hl_class\" href=\"a01077.html\">LimitStencilTableReal&lt;REAL&gt;::resize</a>(<span class=\"keywordtype\">int</span> nstencils, <span class=\"keywordtype\">int</span> nelems) {</div>\n-<div class=\"line\"><a id=\"l00741\" name=\"l00741\"></a><span class=\"lineno\">  741</span>    <a class=\"code hl_function\" href=\"a01061.html#ac21f18df5c8da2db4d23287cdab5fcc1\">StencilTableReal&lt;REAL&gt;::resize</a>(nstencils, nelems);</div>\n-<div class=\"line\"><a id=\"l00742\" name=\"l00742\"></a><span class=\"lineno\">  742</span>    _duWeights.resize(nelems);</div>\n-<div class=\"line\"><a id=\"l00743\" name=\"l00743\"></a><span class=\"lineno\">  743</span>    _dvWeights.resize(nelems);</div>\n-<div class=\"line\"><a id=\"l00744\" name=\"l00744\"></a><span class=\"lineno\">  744</span>}</div>\n-<div class=\"line\"><a id=\"l00745\" name=\"l00745\"></a><span class=\"lineno\">  745</span> </div>\n-<div class=\"line\"><a id=\"l00746\" name=\"l00746\"></a><span class=\"lineno\">  746</span><span class=\"comment\">// Returns a LimitStencil at index i in the table</span></div>\n-<div class=\"line\"><a id=\"l00747\" name=\"l00747\"></a><span class=\"lineno\">  747</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00748\" name=\"l00748\"></a><span class=\"lineno\">  748</span><span class=\"keyword\">inline</span> LimitStencilReal&lt;REAL&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00749\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00749\" name=\"l00749\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01077.html#a785195dfb6a281904181b1cba18b3e62\">  749</a></span><a class=\"code hl_function\" href=\"a01077.html#a785195dfb6a281904181b1cba18b3e62\">LimitStencilTableReal&lt;REAL&gt;::GetLimitStencil</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> i)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00750\" name=\"l00750\"></a><span class=\"lineno\">  750</span>    assert((! this-&gt;GetOffsets().empty()) &amp;&amp; i&lt;(<span class=\"keywordtype\">int</span>)this-&gt;GetOffsets().size());</div>\n-<div class=\"line\"><a id=\"l00751\" name=\"l00751\"></a><span class=\"lineno\">  751</span> </div>\n-<div class=\"line\"><a id=\"l00752\" name=\"l00752\"></a><span class=\"lineno\">  752</span>    <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> ofs = this-&gt;GetOffsets()[i];</div>\n-<div class=\"line\"><a id=\"l00753\" name=\"l00753\"></a><span class=\"lineno\">  753</span> </div>\n-<div class=\"line\"><a id=\"l00754\" name=\"l00754\"></a><span class=\"lineno\">  754</span>    <span class=\"keywordflow\">if</span> (!_duWeights.empty() &amp;&amp; !_dvWeights.empty() &amp;&amp;</div>\n-<div class=\"line\"><a id=\"l00755\" name=\"l00755\"></a><span class=\"lineno\">  755</span>        !_duuWeights.empty() &amp;&amp; !_duvWeights.empty() &amp;&amp; !_dvvWeights.empty()) {</div>\n-<div class=\"line\"><a id=\"l00756\" name=\"l00756\"></a><span class=\"lineno\">  756</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_class\" href=\"a01069.html\">LimitStencilReal&lt;REAL&gt;</a>(</div>\n-<div class=\"line\"><a id=\"l00757\" name=\"l00757\"></a><span class=\"lineno\">  757</span>                             <span class=\"keyword\">const_cast&lt;</span><span class=\"keywordtype\">int</span> *<span class=\"keyword\">&gt;</span>(&amp;this-&gt;GetSizes()[i]),</div>\n-<div class=\"line\"><a id=\"l00758\" name=\"l00758\"></a><span class=\"lineno\">  758</span>                             <span class=\"keyword\">const_cast&lt;</span><a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> *<span class=\"keyword\">&gt;</span>(&amp;this-&gt;GetControlIndices()[ofs]),</div>\n-<div class=\"line\"><a id=\"l00759\" name=\"l00759\"></a><span class=\"lineno\">  759</span>                             <span class=\"keyword\">const_cast&lt;</span>REAL *<span class=\"keyword\">&gt;</span>(&amp;this-&gt;GetWeights()[ofs]),</div>\n-<div class=\"line\"><a id=\"l00760\" name=\"l00760\"></a><span class=\"lineno\">  760</span>                             <span class=\"keyword\">const_cast&lt;</span>REAL *<span class=\"keyword\">&gt;</span>(&amp;GetDuWeights()[ofs]),</div>\n-<div class=\"line\"><a id=\"l00761\" name=\"l00761\"></a><span class=\"lineno\">  761</span>                             <span class=\"keyword\">const_cast&lt;</span>REAL *<span class=\"keyword\">&gt;</span>(&amp;GetDvWeights()[ofs]),</div>\n-<div class=\"line\"><a id=\"l00762\" name=\"l00762\"></a><span class=\"lineno\">  762</span>                             <span class=\"keyword\">const_cast&lt;</span>REAL *<span class=\"keyword\">&gt;</span>(&amp;GetDuuWeights()[ofs]),</div>\n-<div class=\"line\"><a id=\"l00763\" name=\"l00763\"></a><span class=\"lineno\">  763</span>                             <span class=\"keyword\">const_cast&lt;</span>REAL *<span class=\"keyword\">&gt;</span>(&amp;GetDuvWeights()[ofs]),</div>\n-<div class=\"line\"><a id=\"l00764\" name=\"l00764\"></a><span class=\"lineno\">  764</span>                             <span class=\"keyword\">const_cast&lt;</span>REAL *<span class=\"keyword\">&gt;</span>(&amp;GetDvvWeights()[ofs]) );</div>\n-<div class=\"line\"><a id=\"l00765\" name=\"l00765\"></a><span class=\"lineno\">  765</span>    } <span class=\"keywordflow\">else</span> <span class=\"keywordflow\">if</span> (!_duWeights.empty() &amp;&amp; !_dvWeights.empty()) {</div>\n-<div class=\"line\"><a id=\"l00766\" name=\"l00766\"></a><span class=\"lineno\">  766</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_class\" href=\"a01069.html\">LimitStencilReal&lt;REAL&gt;</a>(</div>\n-<div class=\"line\"><a id=\"l00767\" name=\"l00767\"></a><span class=\"lineno\">  767</span>                             <span class=\"keyword\">const_cast&lt;</span><span class=\"keywordtype\">int</span> *<span class=\"keyword\">&gt;</span>(&amp;this-&gt;GetSizes()[i]),</div>\n-<div class=\"line\"><a id=\"l00768\" name=\"l00768\"></a><span class=\"lineno\">  768</span>                             <span class=\"keyword\">const_cast&lt;</span><a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> *<span class=\"keyword\">&gt;</span>(&amp;this-&gt;GetControlIndices()[ofs]),</div>\n-<div class=\"line\"><a id=\"l00769\" name=\"l00769\"></a><span class=\"lineno\">  769</span>                             <span class=\"keyword\">const_cast&lt;</span>REAL *<span class=\"keyword\">&gt;</span>(&amp;this-&gt;GetWeights()[ofs]),</div>\n-<div class=\"line\"><a id=\"l00770\" name=\"l00770\"></a><span class=\"lineno\">  770</span>                             <span class=\"keyword\">const_cast&lt;</span>REAL *<span class=\"keyword\">&gt;</span>(&amp;GetDuWeights()[ofs]),</div>\n-<div class=\"line\"><a id=\"l00771\" name=\"l00771\"></a><span class=\"lineno\">  771</span>                             <span class=\"keyword\">const_cast&lt;</span>REAL *<span class=\"keyword\">&gt;</span>(&amp;GetDvWeights()[ofs]) );</div>\n-<div class=\"line\"><a id=\"l00772\" name=\"l00772\"></a><span class=\"lineno\">  772</span>    } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00773\" name=\"l00773\"></a><span class=\"lineno\">  773</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_class\" href=\"a01069.html\">LimitStencilReal&lt;REAL&gt;</a>(</div>\n-<div class=\"line\"><a id=\"l00774\" name=\"l00774\"></a><span class=\"lineno\">  774</span>                             <span class=\"keyword\">const_cast&lt;</span><span class=\"keywordtype\">int</span> *<span class=\"keyword\">&gt;</span>(&amp;this-&gt;GetSizes()[i]),</div>\n-<div class=\"line\"><a id=\"l00775\" name=\"l00775\"></a><span class=\"lineno\">  775</span>                             <span class=\"keyword\">const_cast&lt;</span><a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> *<span class=\"keyword\">&gt;</span>(&amp;this-&gt;GetControlIndices()[ofs]),</div>\n-<div class=\"line\"><a id=\"l00776\" name=\"l00776\"></a><span class=\"lineno\">  776</span>                             <span class=\"keyword\">const_cast&lt;</span>REAL *<span class=\"keyword\">&gt;</span>(&amp;this-&gt;GetWeights()[ofs]) );</div>\n-<div class=\"line\"><a id=\"l00777\" name=\"l00777\"></a><span class=\"lineno\">  777</span>    }</div>\n-<div class=\"line\"><a id=\"l00778\" name=\"l00778\"></a><span class=\"lineno\">  778</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00779\" name=\"l00779\"></a><span class=\"lineno\">  779</span> </div>\n-<div class=\"line\"><a id=\"l00780\" name=\"l00780\"></a><span class=\"lineno\">  780</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00781\" name=\"l00781\"></a><span class=\"lineno\">  781</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a01069.html\">LimitStencilReal&lt;REAL&gt;</a></div>\n-<div class=\"foldopen\" id=\"foldopen00782\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00782\" name=\"l00782\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01077.html#a14f00fd1df2ddd7e1d4750e7dbda200c\">  782</a></span><a class=\"code hl_function\" href=\"a01077.html#a14f00fd1df2ddd7e1d4750e7dbda200c\">LimitStencilTableReal&lt;REAL&gt;::operator[] </a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> index)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00783\" name=\"l00783\"></a><span class=\"lineno\">  783</span>    <span class=\"keywordflow\">return</span> GetLimitStencil(index);</div>\n-<div class=\"line\"><a id=\"l00784\" name=\"l00784\"></a><span class=\"lineno\">  784</span>}</div>\n-</div>\n-</div>\n-<div class=\"line\"><a id=\"l00785\" name=\"l00785\"></a><span class=\"lineno\">  785</span> </div>\n-<div class=\"line\"><a id=\"l00786\" name=\"l00786\"></a><span class=\"lineno\">  786</span>} <span class=\"comment\">// end namespace Far</span></div>\n-<div class=\"line\"><a id=\"l00787\" name=\"l00787\"></a><span class=\"lineno\">  787</span> </div>\n-<div class=\"line\"><a id=\"l00788\" name=\"l00788\"></a><span class=\"lineno\">  788</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00789\" name=\"l00789\"></a><span class=\"lineno\">  789</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00790\" name=\"l00790\"></a><span class=\"lineno\">  790</span> </div>\n-<div class=\"line\"><a id=\"l00791\" name=\"l00791\"></a><span class=\"lineno\">  791</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l00792\" name=\"l00792\"></a><span class=\"lineno\">  792</span> </div>\n-<div class=\"line\"><a id=\"l00793\" name=\"l00793\"></a><span class=\"lineno\">  793</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// OPENSUBDIV3_FAR_STENCILTABLE_H</span></div>\n-</div>\n-</div>\n-</div>\n-</div>\n-</div>\n-</div>\n-</div>\n-</div>\n-</div>\n-</div>\n-</div>\n-</div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa00908_html_ab34c85a48f33dfe7b8bf4d966fdebbf2\"><div class=\"ttname\"><a href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">OpenSubdiv::OPENSUBDIV_VERSION::Far::Index</a></div><div class=\"ttdeci\">Vtr::Index Index</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01486_source.html#l00041\">types.h:41</a></div></div>\n-<div class=\"ttc\" id=\"aa01045_html\"><div class=\"ttname\"><a href=\"a01045.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactoryReal</a></div><div class=\"ttdoc\">A specialized factory for StencilTable.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00051\">stencilTableFactory.h:51</a></div></div>\n-<div class=\"ttc\" id=\"aa01049_html\"><div class=\"ttname\"><a href=\"a01049.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableFactoryReal</a></div><div class=\"ttdoc\">A specialized factory for LimitStencilTable.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00209\">stencilTableFactory.h:209</a></div></div>\n-<div class=\"ttc\" id=\"aa01053_html\"><div class=\"ttname\"><a href=\"a01053.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilReal</a></div><div class=\"ttdoc\">Vertex stencil descriptor.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00053\">stencilTable.h:53</a></div></div>\n-<div class=\"ttc\" id=\"aa01053_html_a1bacc5a5c4ae6f44d4f06c1dd0adf8f4\"><div class=\"ttname\"><a href=\"a01053.html#a1bacc5a5c4ae6f44d4f06c1dd0adf8f4\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilReal::StencilReal</a></div><div class=\"ttdeci\">StencilReal()</div><div class=\"ttdoc\">Default constructor.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00057\">stencilTable.h:57</a></div></div>\n-<div class=\"ttc\" id=\"aa01053_html_a52397f1270007c943b8539338a796608\"><div class=\"ttname\"><a href=\"a01053.html#a52397f1270007c943b8539338a796608\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilReal::_size</a></div><div class=\"ttdeci\">int * _size</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00109\">stencilTable.h:109</a></div></div>\n-<div class=\"ttc\" id=\"aa01053_html_a52ca26745627f4704181d58dc919ae57\"><div class=\"ttname\"><a href=\"a01053.html#a52ca26745627f4704181d58dc919ae57\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilReal::StencilReal</a></div><div class=\"ttdeci\">StencilReal(int *size, Index *indices, REAL *weights)</div><div class=\"ttdoc\">Constructor.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00067\">stencilTable.h:67</a></div></div>\n-<div class=\"ttc\" id=\"aa01053_html_a659a293dd51073a1b9560bb80f687705\"><div class=\"ttname\"><a href=\"a01053.html#a659a293dd51073a1b9560bb80f687705\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilReal::Next</a></div><div class=\"ttdeci\">void Next()</div><div class=\"ttdoc\">Advance to the next stencil in the table.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00098\">stencilTable.h:98</a></div></div>\n-<div class=\"ttc\" id=\"aa01053_html_a698f69e8409658c6afaf5ea1ff0f15b8\"><div class=\"ttname\"><a href=\"a01053.html#a698f69e8409658c6afaf5ea1ff0f15b8\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilReal::StencilReal</a></div><div class=\"ttdeci\">StencilReal(StencilReal const &amp;other)</div><div class=\"ttdoc\">Copy constructor.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00071\">stencilTable.h:71</a></div></div>\n-<div class=\"ttc\" id=\"aa01053_html_a8b387cbfb5a56ee18bf92d10f3cdad6d\"><div class=\"ttname\"><a href=\"a01053.html#a8b387cbfb5a56ee18bf92d10f3cdad6d\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilReal::_indices</a></div><div class=\"ttdeci\">Index * _indices</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00110\">stencilTable.h:110</a></div></div>\n-<div class=\"ttc\" id=\"aa01053_html_a8d6f065bafcef50d1f904979c794d1ce\"><div class=\"ttname\"><a href=\"a01053.html#a8d6f065bafcef50d1f904979c794d1ce\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilReal::GetVertexIndices</a></div><div class=\"ttdeci\">Index const * GetVertexIndices() const</div><div class=\"ttdoc\">Returns the control vertices' indices.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00088\">stencilTable.h:88</a></div></div>\n-<div class=\"ttc\" id=\"aa01053_html_aa4907b035ab197f57102411e48b2cfc0\"><div class=\"ttname\"><a href=\"a01053.html#aa4907b035ab197f57102411e48b2cfc0\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilReal::GetSize</a></div><div class=\"ttdeci\">int GetSize() const</div><div class=\"ttdoc\">Returns the size of the stencil.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00078\">stencilTable.h:78</a></div></div>\n-<div class=\"ttc\" id=\"aa01053_html_aab5755075fff28578bfd3387c504d303\"><div class=\"ttname\"><a href=\"a01053.html#aab5755075fff28578bfd3387c504d303\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilReal::_weights</a></div><div class=\"ttdeci\">REAL * _weights</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00111\">stencilTable.h:111</a></div></div>\n-<div class=\"ttc\" id=\"aa01053_html_ab823038f11d7c069fc63a2b992055535\"><div class=\"ttname\"><a href=\"a01053.html#ab823038f11d7c069fc63a2b992055535\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilReal::GetSizePtr</a></div><div class=\"ttdeci\">int * GetSizePtr() const</div><div class=\"ttdoc\">Returns the size of the stencil as a pointer.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00083\">stencilTable.h:83</a></div></div>\n-<div class=\"ttc\" id=\"aa01053_html_aecc2be688aecf08f7a98e49db8fed2f8\"><div class=\"ttname\"><a href=\"a01053.html#aecc2be688aecf08f7a98e49db8fed2f8\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilReal::GetWeights</a></div><div class=\"ttdeci\">REAL const * GetWeights() const</div><div class=\"ttdoc\">Returns the interpolation weights.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00093\">stencilTable.h:93</a></div></div>\n-<div class=\"ttc\" id=\"aa01057_html\"><div class=\"ttname\"><a href=\"a01057.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::Stencil</a></div><div class=\"ttdoc\">Vertex stencil class wrapping the template for compatibility.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00116\">stencilTable.h:116</a></div></div>\n-<div class=\"ttc\" id=\"aa01057_html_a540bd990ac7c5770b6f1a5eb5b58d874\"><div class=\"ttname\"><a href=\"a01057.html#a540bd990ac7c5770b6f1a5eb5b58d874\">OpenSubdiv::OPENSUBDIV_VERSION::Far::Stencil::Stencil</a></div><div class=\"ttdeci\">Stencil(BaseStencil const &amp;other)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00122\">stencilTable.h:122</a></div></div>\n-<div class=\"ttc\" id=\"aa01057_html_a685b0ef36235914f7c10ff8f1169ade8\"><div class=\"ttname\"><a href=\"a01057.html#a685b0ef36235914f7c10ff8f1169ade8\">OpenSubdiv::OPENSUBDIV_VERSION::Far::Stencil::Stencil</a></div><div class=\"ttdeci\">Stencil(int *size, Index *indices, float *weights)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00123\">stencilTable.h:123</a></div></div>\n-<div class=\"ttc\" id=\"aa01057_html_a71b0ccb1e01e77608b938cb11039a34a\"><div class=\"ttname\"><a href=\"a01057.html#a71b0ccb1e01e77608b938cb11039a34a\">OpenSubdiv::OPENSUBDIV_VERSION::Far::Stencil::BaseStencil</a></div><div class=\"ttdeci\">StencilReal&lt; float &gt; BaseStencil</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00118\">stencilTable.h:118</a></div></div>\n-<div class=\"ttc\" id=\"aa01057_html_af3b2d4f28b2b1edbb491db39b0658c2a\"><div class=\"ttname\"><a href=\"a01057.html#af3b2d4f28b2b1edbb491db39b0658c2a\">OpenSubdiv::OPENSUBDIV_VERSION::Far::Stencil::Stencil</a></div><div class=\"ttdeci\">Stencil()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00121\">stencilTable.h:121</a></div></div>\n-<div class=\"ttc\" id=\"aa01061_html\"><div class=\"ttname\"><a href=\"a01061.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal</a></div><div class=\"ttdoc\">Table of subdivision stencils.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00141\">stencilTable.h:141</a></div></div>\n-<div class=\"ttc\" id=\"aa01061_html_a02e67ceab8cb5af7982ef2a31a07a2ce\"><div class=\"ttname\"><a href=\"a01061.html#a02e67ceab8cb5af7982ef2a31a07a2ce\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::GetNumControlVertices</a></div><div class=\"ttdeci\">int GetNumControlVertices() const</div><div class=\"ttdoc\">Returns the number of control vertices indexed in the table.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00161\">stencilTable.h:161</a></div></div>\n-<div class=\"ttc\" id=\"aa01061_html_a11ad3846bf577760d1c829835f62b8d3\"><div class=\"ttname\"><a href=\"a01061.html#a11ad3846bf577760d1c829835f62b8d3\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::_sizes</a></div><div class=\"ttdeci\">std::vector&lt; int &gt; _sizes</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00265\">stencilTable.h:265</a></div></div>\n-<div class=\"ttc\" id=\"aa01061_html_a15cb55501155c442dba5f0e14bf03124\"><div class=\"ttname\"><a href=\"a01061.html#a15cb55501155c442dba5f0e14bf03124\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::PatchTableBuilder</a></div><div class=\"ttdeci\">friend class Far::PatchTableBuilder</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00261\">stencilTable.h:261</a></div></div>\n-<div class=\"ttc\" id=\"aa01061_html_a1bcd132b8e6d40cb6ed1543f28ff998c\"><div class=\"ttname\"><a href=\"a01061.html#a1bcd132b8e6d40cb6ed1543f28ff998c\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::update</a></div><div class=\"ttdeci\">void update(T1 const &amp;srcBase, int numBase, T2 const &amp;srcRef, U &amp;dstValues, std::vector&lt; REAL &gt; const &amp;valueWeights, Index start, Index end) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00618\">stencilTable.h:618</a></div></div>\n-<div class=\"ttc\" id=\"aa01061_html_a232ddf5a15e24e91b2ec55f83a1436b5\"><div class=\"ttname\"><a href=\"a01061.html#a232ddf5a15e24e91b2ec55f83a1436b5\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::UpdateValues</a></div><div class=\"ttdeci\">void UpdateValues(T1 const &amp;srcBase, int numBase, T2 const &amp;srcRef, U &amp;dstValues, Index start=-1, Index end=-1) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00210\">stencilTable.h:210</a></div></div>\n-<div class=\"ttc\" id=\"aa01061_html_a2c225eadcb49bfb4af44bfb883516809\"><div class=\"ttname\"><a href=\"a01061.html#a2c225eadcb49bfb4af44bfb883516809\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::GetControlIndices</a></div><div class=\"ttdeci\">std::vector&lt; Index &gt; const &amp; GetControlIndices() const</div><div class=\"ttdoc\">Returns the indices of the control vertices.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00179\">stencilTable.h:179</a></div></div>\n-<div class=\"ttc\" id=\"aa01061_html_a32d626626eee0bc4ade146973f6abb1c\"><div class=\"ttname\"><a href=\"a01061.html#a32d626626eee0bc4ade146973f6abb1c\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::finalize</a></div><div class=\"ttdeci\">void finalize()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00714\">stencilTable.h:714</a></div></div>\n-<div class=\"ttc\" id=\"aa01061_html_a35786984f5caa4684165da2c96fba9b3\"><div class=\"ttname\"><a href=\"a01061.html#a35786984f5caa4684165da2c96fba9b3\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::operator[]</a></div><div class=\"ttdeci\">StencilReal&lt; REAL &gt; operator[](Index index) const</div><div class=\"ttdoc\">Returns the stencil at index i in the table.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00734\">stencilTable.h:734</a></div></div>\n-<div class=\"ttc\" id=\"aa01061_html_a385a2eb32312f28d79a02461a59c0630\"><div class=\"ttname\"><a href=\"a01061.html#a385a2eb32312f28d79a02461a59c0630\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::_numControlVertices</a></div><div class=\"ttdeci\">int _numControlVertices</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00263\">stencilTable.h:263</a></div></div>\n-<div class=\"ttc\" id=\"aa01061_html_a3cd3b8de1630c159f3c66dfc950210cf\"><div class=\"ttname\"><a href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::update</a></div><div class=\"ttdeci\">void update(T const &amp;srcValues, U &amp;dstValues, std::vector&lt; REAL &gt; const &amp;valueWeights, Index start, Index end) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00650\">stencilTable.h:650</a></div></div>\n-<div class=\"ttc\" id=\"aa01061_html_a50345bcc33c588cf49520a79396e105d\"><div class=\"ttname\"><a href=\"a01061.html#a50345bcc33c588cf49520a79396e105d\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::GetSizes</a></div><div class=\"ttdeci\">std::vector&lt; int &gt; const &amp; GetSizes() const</div><div class=\"ttdoc\">Returns the number of control vertices of each stencil in the table.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00169\">stencilTable.h:169</a></div></div>\n-<div class=\"ttc\" id=\"aa01061_html_a65836d2070b943c8fecbad926d074de2\"><div class=\"ttname\"><a href=\"a01061.html#a65836d2070b943c8fecbad926d074de2\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::GetNumStencils</a></div><div class=\"ttdeci\">int GetNumStencils() const</div><div class=\"ttdoc\">Returns the number of stencils in the table.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00156\">stencilTable.h:156</a></div></div>\n-<div class=\"ttc\" id=\"aa01061_html_a680f5b6b2b873a149a997c4b5fca2be8\"><div class=\"ttname\"><a href=\"a01061.html#a680f5b6b2b873a149a997c4b5fca2be8\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::~StencilTableReal</a></div><div class=\"ttdeci\">virtual ~StencilTableReal()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00153\">stencilTable.h:153</a></div></div>\n-<div class=\"ttc\" id=\"aa01061_html_a82005658c7c2b4aea6222587d06ce4ef\"><div class=\"ttname\"><a href=\"a01061.html#a82005658c7c2b4aea6222587d06ce4ef\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::GetOffsets</a></div><div class=\"ttdeci\">std::vector&lt; Index &gt; const &amp; GetOffsets() const</div><div class=\"ttdoc\">Returns the offset to a given stencil (factory may leave empty)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00174\">stencilTable.h:174</a></div></div>\n-<div class=\"ttc\" id=\"aa01061_html_a84969a9edeae22167a83fde274f002af\"><div class=\"ttname\"><a href=\"a01061.html#a84969a9edeae22167a83fde274f002af\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::GetStencil</a></div><div class=\"ttdeci\">StencilReal&lt; REAL &gt; GetStencil(Index i) const</div><div class=\"ttdoc\">Returns a Stencil at index i in the table.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00722\">stencilTable.h:722</a></div></div>\n-<div class=\"ttc\" id=\"aa01061_html_a84fb9ead4f0f7458491b5d310592cea9\"><div class=\"ttname\"><a href=\"a01061.html#a84fb9ead4f0f7458491b5d310592cea9\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::shrinkToFit</a></div><div class=\"ttdeci\">void shrinkToFit()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00706\">stencilTable.h:706</a></div></div>\n-<div class=\"ttc\" id=\"aa01061_html_a8ac84e48ecd3aec3db72f62a4c8206f8\"><div class=\"ttname\"><a href=\"a01061.html#a8ac84e48ecd3aec3db72f62a4c8206f8\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::generateOffsets</a></div><div class=\"ttdeci\">void generateOffsets()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00678\">stencilTable.h:678</a></div></div>\n-<div class=\"ttc\" id=\"aa01061_html_aa71d36872f416feaa853788a7a7a7ef8\"><div class=\"ttname\"><a href=\"a01061.html#aa71d36872f416feaa853788a7a7a7ef8\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::Clear</a></div><div class=\"ttdeci\">void Clear()</div><div class=\"ttdoc\">Clears the stencils from the table.</div></div>\n-<div class=\"ttc\" id=\"aa01061_html_aac45e3e693e9298942da27bef3cec02c\"><div class=\"ttname\"><a href=\"a01061.html#aac45e3e693e9298942da27bef3cec02c\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::_offsets</a></div><div class=\"ttdeci\">std::vector&lt; Index &gt; _offsets</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00266\">stencilTable.h:266</a></div></div>\n-<div class=\"ttc\" id=\"aa01061_html_aae5a4bd49c41df5f949d773549c09d19\"><div class=\"ttname\"><a href=\"a01061.html#aae5a4bd49c41df5f949d773549c09d19\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::_weights</a></div><div class=\"ttdeci\">std::vector&lt; REAL &gt; _weights</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00268\">stencilTable.h:268</a></div></div>\n-<div class=\"ttc\" id=\"aa01061_html_ac21f18df5c8da2db4d23287cdab5fcc1\"><div class=\"ttname\"><a href=\"a01061.html#ac21f18df5c8da2db4d23287cdab5fcc1\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::resize</a></div><div class=\"ttdeci\">void resize(int nstencils, int nelems)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00690\">stencilTable.h:690</a></div></div>\n-<div class=\"ttc\" id=\"aa01061_html_ac5effc231d2dad1b9fb193c4cf43ab83\"><div class=\"ttname\"><a href=\"a01061.html#ac5effc231d2dad1b9fb193c4cf43ab83\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::GetWeights</a></div><div class=\"ttdeci\">std::vector&lt; REAL &gt; const &amp; GetWeights() const</div><div class=\"ttdoc\">Returns the stencil interpolation weights.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00184\">stencilTable.h:184</a></div></div>\n-<div class=\"ttc\" id=\"aa01061_html_ac67bfdfb875671203b222a0a25b1cfe3\"><div class=\"ttname\"><a href=\"a01061.html#ac67bfdfb875671203b222a0a25b1cfe3\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::UpdateValues</a></div><div class=\"ttdeci\">void UpdateValues(T1 const *srcBase, int numBase, T2 const *srcRef, U *dst, Index start=-1, Index end=-1) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00221\">stencilTable.h:221</a></div></div>\n-<div class=\"ttc\" id=\"aa01061_html_acfd28c310b1539af45e019690b1cb211\"><div class=\"ttname\"><a href=\"a01061.html#acfd28c310b1539af45e019690b1cb211\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::StencilTableReal</a></div><div class=\"ttdeci\">StencilTableReal(int numControlVerts, std::vector&lt; int &gt; const &amp;offsets, std::vector&lt; int &gt; const &amp;sizes, std::vector&lt; int &gt; const &amp;sources, std::vector&lt; REAL &gt; const &amp;weights, bool includeCoarseVerts, size_t firstOffset)</div></div>\n-<div class=\"ttc\" id=\"aa01061_html_ad6ce8118325de299bd7d9735f68e6de2\"><div class=\"ttname\"><a href=\"a01061.html#ad6ce8118325de299bd7d9735f68e6de2\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::_indices</a></div><div class=\"ttdeci\">std::vector&lt; Index &gt; _indices</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00267\">stencilTable.h:267</a></div></div>\n-<div class=\"ttc\" id=\"aa01061_html_adb82c38de4fd0bdc8550e62ebe932c48\"><div class=\"ttname\"><a href=\"a01061.html#adb82c38de4fd0bdc8550e62ebe932c48\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::StencilTableReal</a></div><div class=\"ttdeci\">StencilTableReal()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00255\">stencilTable.h:255</a></div></div>\n-<div class=\"ttc\" id=\"aa01061_html_ae00a9e01294323589df33d2680dab235\"><div class=\"ttname\"><a href=\"a01061.html#ae00a9e01294323589df33d2680dab235\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::reserve</a></div><div class=\"ttdeci\">void reserve(int nstencils, int nelems)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00698\">stencilTable.h:698</a></div></div>\n-<div class=\"ttc\" id=\"aa01061_html_ae1ff7caf5509b4d76bc8220608d5b176\"><div class=\"ttname\"><a href=\"a01061.html#ae1ff7caf5509b4d76bc8220608d5b176\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::UpdateValues</a></div><div class=\"ttdeci\">void UpdateValues(T const *src, U *dst, Index start=-1, Index end=-1) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00217\">stencilTable.h:217</a></div></div>\n-<div class=\"ttc\" id=\"aa01061_html_afbd961bebfa92a8fd0826f219baaf8f5\"><div class=\"ttname\"><a href=\"a01061.html#afbd961bebfa92a8fd0826f219baaf8f5\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::UpdateValues</a></div><div class=\"ttdeci\">void UpdateValues(T const &amp;srcValues, U &amp;dstValues, Index start=-1, Index end=-1) const</div><div class=\"ttdoc\">Updates point values based on the control values.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00205\">stencilTable.h:205</a></div></div>\n-<div class=\"ttc\" id=\"aa01065_html\"><div class=\"ttname\"><a href=\"a01065.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTable</a></div><div class=\"ttdoc\">Stencil table class wrapping the template for compatibility.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00273\">stencilTable.h:273</a></div></div>\n-<div class=\"ttc\" id=\"aa01065_html_a3d12830eb0d421206de500d7abc9decf\"><div class=\"ttname\"><a href=\"a01065.html#a3d12830eb0d421206de500d7abc9decf\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTable::StencilTable</a></div><div class=\"ttdeci\">StencilTable(int numControlVerts, std::vector&lt; int &gt; const &amp;offsets, std::vector&lt; int &gt; const &amp;sizes, std::vector&lt; int &gt; const &amp;sources, std::vector&lt; float &gt; const &amp;weights, bool includeCoarseVerts, size_t firstOffset)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00288\">stencilTable.h:288</a></div></div>\n-<div class=\"ttc\" id=\"aa01065_html_a54db76b34112b5cb3c623be8789dd8f4\"><div class=\"ttname\"><a href=\"a01065.html#a54db76b34112b5cb3c623be8789dd8f4\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTable::StencilTable</a></div><div class=\"ttdeci\">StencilTable(int numControlVerts)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00287\">stencilTable.h:287</a></div></div>\n-<div class=\"ttc\" id=\"aa01065_html_a54f0bb223290a17a59f51f4cbcfbc2e2\"><div class=\"ttname\"><a href=\"a01065.html#a54f0bb223290a17a59f51f4cbcfbc2e2\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTable::BaseTable</a></div><div class=\"ttdeci\">StencilTableReal&lt; float &gt; BaseTable</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00275\">stencilTable.h:275</a></div></div>\n-<div class=\"ttc\" id=\"aa01065_html_a67e208e25b2922502d5f0c9d8e36ce88\"><div class=\"ttname\"><a href=\"a01065.html#a67e208e25b2922502d5f0c9d8e36ce88\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTable::GetStencil</a></div><div class=\"ttdeci\">Stencil GetStencil(Index index) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00278\">stencilTable.h:278</a></div></div>\n-<div class=\"ttc\" id=\"aa01065_html_aa4c7aa3ea058d947fa1a2021704f9ee5\"><div class=\"ttname\"><a href=\"a01065.html#aa4c7aa3ea058d947fa1a2021704f9ee5\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTable::operator[]</a></div><div class=\"ttdeci\">Stencil operator[](Index index) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00281\">stencilTable.h:281</a></div></div>\n-<div class=\"ttc\" id=\"aa01065_html_acc553d2d5624ab2a790ae9613812393e\"><div class=\"ttname\"><a href=\"a01065.html#acc553d2d5624ab2a790ae9613812393e\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTable::StencilTable</a></div><div class=\"ttdeci\">StencilTable()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00286\">stencilTable.h:286</a></div></div>\n-<div class=\"ttc\" id=\"aa01069_html\"><div class=\"ttname\"><a href=\"a01069.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilReal</a></div><div class=\"ttdoc\">Limit point stencil descriptor.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00303\">stencilTable.h:303</a></div></div>\n-<div class=\"ttc\" id=\"aa01069_html_a448678fc2c70f09429f6a105b7aea8e4\"><div class=\"ttname\"><a href=\"a01069.html#a448678fc2c70f09429f6a105b7aea8e4\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilReal::GetDuvWeights</a></div><div class=\"ttdeci\">REAL const * GetDuvWeights() const</div><div class=\"ttdoc\">Returns the uv derivative weights.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00356\">stencilTable.h:356</a></div></div>\n-<div class=\"ttc\" id=\"aa01069_html_a4fe06ffb99a6663f5262d9ac1fe06dd4\"><div class=\"ttname\"><a href=\"a01069.html#a4fe06ffb99a6663f5262d9ac1fe06dd4\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilReal::GetDvWeights</a></div><div class=\"ttdeci\">REAL const * GetDvWeights() const</div><div class=\"ttdoc\">Returns the v derivative weights.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00346\">stencilTable.h:346</a></div></div>\n-<div class=\"ttc\" id=\"aa01069_html_a659a293dd51073a1b9560bb80f687705\"><div class=\"ttname\"><a href=\"a01069.html#a659a293dd51073a1b9560bb80f687705\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilReal::Next</a></div><div class=\"ttdeci\">void Next()</div><div class=\"ttdoc\">Advance to the next stencil in the table.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00366\">stencilTable.h:366</a></div></div>\n-<div class=\"ttc\" id=\"aa01069_html_a9f286a1d78b9333a3c3efbe793e10b47\"><div class=\"ttname\"><a href=\"a01069.html#a9f286a1d78b9333a3c3efbe793e10b47\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilReal::GetDvvWeights</a></div><div class=\"ttdeci\">REAL const * GetDvvWeights() const</div><div class=\"ttdoc\">Returns the vv derivative weights.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00361\">stencilTable.h:361</a></div></div>\n-<div class=\"ttc\" id=\"aa01069_html_ad6ade692f92a3bf50c813a82bd63d4c7\"><div class=\"ttname\"><a href=\"a01069.html#ad6ade692f92a3bf50c813a82bd63d4c7\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilReal::LimitStencilReal</a></div><div class=\"ttdeci\">LimitStencilReal(int *size, Index *indices, REAL *weights, REAL *duWeights=0, REAL *dvWeights=0, REAL *duuWeights=0, REAL *duvWeights=0, REAL *dvvWeights=0)</div><div class=\"ttdoc\">Constructor.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00324\">stencilTable.h:324</a></div></div>\n-<div class=\"ttc\" id=\"aa01069_html_ae18b32c2a684569e90392e2548cd9f53\"><div class=\"ttname\"><a href=\"a01069.html#ae18b32c2a684569e90392e2548cd9f53\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilReal::GetDuWeights</a></div><div class=\"ttdeci\">REAL const * GetDuWeights() const</div><div class=\"ttdoc\">Returns the u derivative weights.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00341\">stencilTable.h:341</a></div></div>\n-<div class=\"ttc\" id=\"aa01069_html_ae5f480289f879cf877d43c9db90acd50\"><div class=\"ttname\"><a href=\"a01069.html#ae5f480289f879cf877d43c9db90acd50\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilReal::GetDuuWeights</a></div><div class=\"ttdeci\">REAL const * GetDuuWeights() const</div><div class=\"ttdoc\">Returns the uu derivative weights.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00351\">stencilTable.h:351</a></div></div>\n-<div class=\"ttc\" id=\"aa01073_html\"><div class=\"ttname\"><a href=\"a01073.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencil</a></div><div class=\"ttdoc\">Limit point stencil class wrapping the template for compatibility.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00392\">stencilTable.h:392</a></div></div>\n-<div class=\"ttc\" id=\"aa01073_html_a071ea9b75540c3d54d9bf934fc944e5a\"><div class=\"ttname\"><a href=\"a01073.html#a071ea9b75540c3d54d9bf934fc944e5a\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencil::LimitStencil</a></div><div class=\"ttdeci\">LimitStencil(BaseStencil const &amp;other)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00397\">stencilTable.h:397</a></div></div>\n-<div class=\"ttc\" id=\"aa01073_html_a1449f658bfbe067e5c7d709e700bbc29\"><div class=\"ttname\"><a href=\"a01073.html#a1449f658bfbe067e5c7d709e700bbc29\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencil::BaseStencil</a></div><div class=\"ttdeci\">LimitStencilReal&lt; float &gt; BaseStencil</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00394\">stencilTable.h:394</a></div></div>\n-<div class=\"ttc\" id=\"aa01073_html_a51e1d601373aa0cd9ce70b630ce22adf\"><div class=\"ttname\"><a href=\"a01073.html#a51e1d601373aa0cd9ce70b630ce22adf\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencil::LimitStencil</a></div><div class=\"ttdeci\">LimitStencil(int *size, Index *indices, float *weights, float *duWeights=0, float *dvWeights=0, float *duuWeights=0, float *duvWeights=0, float *dvvWeights=0)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00398\">stencilTable.h:398</a></div></div>\n-<div class=\"ttc\" id=\"aa01077_html\"><div class=\"ttname\"><a href=\"a01077.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableReal</a></div><div class=\"ttdoc\">Table of limit subdivision stencils.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00409\">stencilTable.h:409</a></div></div>\n-<div class=\"ttc\" id=\"aa01077_html_a143d96a8988e32c1497cfb4e07bd4d1e\"><div class=\"ttname\"><a href=\"a01077.html#a143d96a8988e32c1497cfb4e07bd4d1e\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableReal::GetDuuWeights</a></div><div class=\"ttdeci\">std::vector&lt; REAL &gt; const &amp; GetDuuWeights() const</div><div class=\"ttdoc\">Returns the 'uu' derivative stencil interpolation weights.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00444\">stencilTable.h:444</a></div></div>\n-<div class=\"ttc\" id=\"aa01077_html_a14f00fd1df2ddd7e1d4750e7dbda200c\"><div class=\"ttname\"><a href=\"a01077.html#a14f00fd1df2ddd7e1d4750e7dbda200c\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableReal::operator[]</a></div><div class=\"ttdeci\">LimitStencilReal&lt; REAL &gt; operator[](Index index) const</div><div class=\"ttdoc\">Returns the limit stencil at index i in the table.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00782\">stencilTable.h:782</a></div></div>\n-<div class=\"ttc\" id=\"aa01077_html_a176d8d4711bcb252f95b79f40549eaad\"><div class=\"ttname\"><a href=\"a01077.html#a176d8d4711bcb252f95b79f40549eaad\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableReal::GetDvvWeights</a></div><div class=\"ttdeci\">std::vector&lt; REAL &gt; const &amp; GetDvvWeights() const</div><div class=\"ttdoc\">Returns the 'vv' derivative stencil interpolation weights.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00454\">stencilTable.h:454</a></div></div>\n-<div class=\"ttc\" id=\"aa01077_html_a1de3a0b02983c7a753ca434492d72a41\"><div class=\"ttname\"><a href=\"a01077.html#a1de3a0b02983c7a753ca434492d72a41\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableReal::UpdateDerivs</a></div><div class=\"ttdeci\">void UpdateDerivs(T const *src, U *uderivs, U *vderivs, int start=-1, int end=-1) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00493\">stencilTable.h:493</a></div></div>\n-<div class=\"ttc\" id=\"aa01077_html_a1efa2668bb0085a23b0b590f7a765ab2\"><div class=\"ttname\"><a href=\"a01077.html#a1efa2668bb0085a23b0b590f7a765ab2\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableReal::Update2ndDerivs</a></div><div class=\"ttdeci\">void Update2ndDerivs(T const *src, T *uuderivs, U *uvderivs, U *vvderivs, int start=-1, int end=-1) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00548\">stencilTable.h:548</a></div></div>\n-<div class=\"ttc\" id=\"aa01077_html_a3b267a7fa353373736643e1a003c0d96\"><div class=\"ttname\"><a href=\"a01077.html#a3b267a7fa353373736643e1a003c0d96\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableReal::GetDvWeights</a></div><div class=\"ttdeci\">std::vector&lt; REAL &gt; const &amp; GetDvWeights() const</div><div class=\"ttdoc\">Returns the 'v' derivative stencil interpolation weights.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00439\">stencilTable.h:439</a></div></div>\n-<div class=\"ttc\" id=\"aa01077_html_a4ee18e8eea83ee57a5a993154ed4cfbd\"><div class=\"ttname\"><a href=\"a01077.html#a4ee18e8eea83ee57a5a993154ed4cfbd\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableReal::Update2ndDerivs</a></div><div class=\"ttdeci\">void Update2ndDerivs(T1 const *srcBase, int numBase, T2 const *srcRef, U *uuderivs, U *uvderivs, U *vvderivs, int start=-1, int end=-1) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00556\">stencilTable.h:556</a></div></div>\n-<div class=\"ttc\" id=\"aa01077_html_a6388396152cb879c2766329f2b0091f8\"><div class=\"ttname\"><a href=\"a01077.html#a6388396152cb879c2766329f2b0091f8\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableReal::UpdateDerivs</a></div><div class=\"ttdeci\">void UpdateDerivs(T const &amp;srcValues, U &amp;uderivs, U &amp;vderivs, int start=-1, int end=-1) const</div><div class=\"ttdoc\">Updates derivative values based on the control values.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00476\">stencilTable.h:476</a></div></div>\n-<div class=\"ttc\" id=\"aa01077_html_a785195dfb6a281904181b1cba18b3e62\"><div class=\"ttname\"><a href=\"a01077.html#a785195dfb6a281904181b1cba18b3e62\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableReal::GetLimitStencil</a></div><div class=\"ttdeci\">LimitStencilReal&lt; REAL &gt; GetLimitStencil(Index i) const</div><div class=\"ttdoc\">Returns a LimitStencil at index i in the table.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00749\">stencilTable.h:749</a></div></div>\n-<div class=\"ttc\" id=\"aa01077_html_a8bd530eac9ff33dc0b117d5f4a0cb939\"><div class=\"ttname\"><a href=\"a01077.html#a8bd530eac9ff33dc0b117d5f4a0cb939\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableReal::LimitStencilTableReal</a></div><div class=\"ttdeci\">LimitStencilTableReal(int numControlVerts, std::vector&lt; int &gt; const &amp;offsets, std::vector&lt; int &gt; const &amp;sizes, std::vector&lt; int &gt; const &amp;sources, std::vector&lt; REAL &gt; const &amp;weights, std::vector&lt; REAL &gt; const &amp;duWeights, std::vector&lt; REAL &gt; const &amp;dvWeights, std::vector&lt; REAL &gt; const &amp;duuWeights, std::vector&lt; REAL &gt; const &amp;duvWeights, std::vector&lt; REAL &gt; const &amp;dvvWeights, bool includeCoarseVerts, size_t firstOffset)</div></div>\n-<div class=\"ttc\" id=\"aa01077_html_a9afad522b48b3d7a0fe296ec26e1484b\"><div class=\"ttname\"><a href=\"a01077.html#a9afad522b48b3d7a0fe296ec26e1484b\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableReal::Update2ndDerivs</a></div><div class=\"ttdeci\">void Update2ndDerivs(T const &amp;srcValues, U &amp;uuderivs, U &amp;uvderivs, U &amp;vvderivs, int start=-1, int end=-1) const</div><div class=\"ttdoc\">Updates 2nd derivative values based on the control values.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00528\">stencilTable.h:528</a></div></div>\n-<div class=\"ttc\" id=\"aa01077_html_aa3883f989c1ef593204f33e6ff8d31fe\"><div class=\"ttname\"><a href=\"a01077.html#aa3883f989c1ef593204f33e6ff8d31fe\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableReal::GetDuWeights</a></div><div class=\"ttdeci\">std::vector&lt; REAL &gt; const &amp; GetDuWeights() const</div><div class=\"ttdoc\">Returns the 'u' derivative stencil interpolation weights.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00434\">stencilTable.h:434</a></div></div>\n-<div class=\"ttc\" id=\"aa01077_html_aa71d36872f416feaa853788a7a7a7ef8\"><div class=\"ttname\"><a href=\"a01077.html#aa71d36872f416feaa853788a7a7a7ef8\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableReal::Clear</a></div><div class=\"ttdeci\">void Clear()</div><div class=\"ttdoc\">Clears the stencils from the table.</div></div>\n-<div class=\"ttc\" id=\"aa01077_html_ac0752d706ee5bbf7ef22f26a9399538f\"><div class=\"ttname\"><a href=\"a01077.html#ac0752d706ee5bbf7ef22f26a9399538f\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableReal::Update2ndDerivs</a></div><div class=\"ttdeci\">void Update2ndDerivs(T1 const &amp;srcBase, int numBase, T2 const &amp;srcRef, U &amp;uuderivs, U &amp;uvderivs, U &amp;vvderivs, int start=-1, int end=-1) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00538\">stencilTable.h:538</a></div></div>\n-<div class=\"ttc\" id=\"aa01077_html_ac6b92b68f0b56967e7ffa2d13aea72d0\"><div class=\"ttname\"><a href=\"a01077.html#ac6b92b68f0b56967e7ffa2d13aea72d0\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableReal::GetDuvWeights</a></div><div class=\"ttdeci\">std::vector&lt; REAL &gt; const &amp; GetDuvWeights() const</div><div class=\"ttdoc\">Returns the 'uv' derivative stencil interpolation weights.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00449\">stencilTable.h:449</a></div></div>\n-<div class=\"ttc\" id=\"aa01077_html_ad3029ef69f3a4b90c058c27cfa968897\"><div class=\"ttname\"><a href=\"a01077.html#ad3029ef69f3a4b90c058c27cfa968897\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableReal::UpdateDerivs</a></div><div class=\"ttdeci\">void UpdateDerivs(T1 const &amp;srcBase, int numBase, T2 const &amp;srcRef, U &amp;uderivs, U &amp;vderivs, int start=-1, int end=-1) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00484\">stencilTable.h:484</a></div></div>\n-<div class=\"ttc\" id=\"aa01077_html_aeb3fc8705b16ef80f1686b6fc7cd44e7\"><div class=\"ttname\"><a href=\"a01077.html#aeb3fc8705b16ef80f1686b6fc7cd44e7\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableReal::UpdateDerivs</a></div><div class=\"ttdeci\">void UpdateDerivs(T1 const *srcBase, int numBase, T2 const *srcRef, U *uderivs, U *vderivs, int start=-1, int end=-1) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00500\">stencilTable.h:500</a></div></div>\n-<div class=\"ttc\" id=\"aa01081_html\"><div class=\"ttname\"><a href=\"a01081.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTable</a></div><div class=\"ttdoc\">Limit stencil table class wrapping the template for compatibility.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00583\">stencilTable.h:583</a></div></div>\n-<div class=\"ttc\" id=\"aa01081_html_a13d2ee8ca9cdc9073905193ea1cefd95\"><div class=\"ttname\"><a href=\"a01081.html#a13d2ee8ca9cdc9073905193ea1cefd95\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTable::BaseTable</a></div><div class=\"ttdeci\">LimitStencilTableReal&lt; float &gt; BaseTable</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00585\">stencilTable.h:585</a></div></div>\n-<div class=\"ttc\" id=\"aa01081_html_a177ff72b08f474982eaa70fa93fe5471\"><div class=\"ttname\"><a href=\"a01081.html#a177ff72b08f474982eaa70fa93fe5471\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTable::GetLimitStencil</a></div><div class=\"ttdeci\">LimitStencil GetLimitStencil(Index index) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00588\">stencilTable.h:588</a></div></div>\n-<div class=\"ttc\" id=\"aa01081_html_a45723c21481c3887e0740fe69acbac40\"><div class=\"ttname\"><a href=\"a01081.html#a45723c21481c3887e0740fe69acbac40\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTable::LimitStencilTable</a></div><div class=\"ttdeci\">LimitStencilTable(int numControlVerts, std::vector&lt; int &gt; const &amp;offsets, std::vector&lt; int &gt; const &amp;sizes, std::vector&lt; int &gt; const &amp;sources, std::vector&lt; float &gt; const &amp;weights, std::vector&lt; float &gt; const &amp;duWeights, std::vector&lt; float &gt; const &amp;dvWeights, std::vector&lt; float &gt; const &amp;duuWeights, std::vector&lt; float &gt; const &amp;duvWeights, std::vector&lt; float &gt; const &amp;dvvWeights, bool includeCoarseVerts, size_t firstOffset)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00596\">stencilTable.h:596</a></div></div>\n-<div class=\"ttc\" id=\"aa01081_html_a486c20121d63d5149d01adbe45d3b9b6\"><div class=\"ttname\"><a href=\"a01081.html#a486c20121d63d5149d01adbe45d3b9b6\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTable::operator[]</a></div><div class=\"ttdeci\">LimitStencil operator[](Index index) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00591\">stencilTable.h:591</a></div></div>\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span><span class=\"keywordtype\">void</span></div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html#a4a6a0fcc01638f2a0316b32ad158b485\">   43</a></span><a class=\"code hl_function\" href=\"a00912.html#a4a6a0fcc01638f2a0316b32ad158b485\">TbbEvalStencils</a>(<span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span>                <span class=\"keywordtype\">float</span> * dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span>                <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> * sizes,</div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span>                <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> * offsets,</div>\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span>                <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> * indices,</div>\n+<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span>                <span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * weights,</div>\n+<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span>                <span class=\"keywordtype\">int</span> start, <span class=\"keywordtype\">int</span> end);</div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span> </div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span><span class=\"keywordtype\">void</span></div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html#af23c35537952bfdd493441e5c42ff2ed\">   52</a></span><a class=\"code hl_function\" href=\"a00912.html#a4a6a0fcc01638f2a0316b32ad158b485\">TbbEvalStencils</a>(<span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span>                <span class=\"keywordtype\">float</span> * dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span>                <span class=\"keywordtype\">float</span> * dstDu,     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDuDesc,</div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span>                <span class=\"keywordtype\">float</span> * dstDv,     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDvDesc,</div>\n+<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span>                <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> * sizes,</div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span>                <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> * offsets,</div>\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span>                <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> * indices,</div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span>                <span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * weights,</div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span>                <span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * duWeights,</div>\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span>                <span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * dvWeights,</div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span>                <span class=\"keywordtype\">int</span> start, <span class=\"keywordtype\">int</span> end);</div>\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span> </div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span><span class=\"keywordtype\">void</span></div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html#aa65ed860a2fa5935d99129a898a8f0b6\">   65</a></span><a class=\"code hl_function\" href=\"a00912.html#a4a6a0fcc01638f2a0316b32ad158b485\">TbbEvalStencils</a>(<span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span>                <span class=\"keywordtype\">float</span> * dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span>                <span class=\"keywordtype\">float</span> * dstDu,     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDuDesc,</div>\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span>                <span class=\"keywordtype\">float</span> * dstDv,     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDvDesc,</div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span>                <span class=\"keywordtype\">float</span> * dstDuu,    <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDuuDesc,</div>\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span>                <span class=\"keywordtype\">float</span> * dstDuv,    <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDuvDesc,</div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>                <span class=\"keywordtype\">float</span> * dstDvv,    <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDvvDesc,</div>\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>                <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> * sizes,</div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span>                <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> * offsets,</div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span>                <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> * indices,</div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span>                <span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * weights,</div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span>                <span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * duWeights,</div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span>                <span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * dvWeights,</div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span>                <span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * duuWeights,</div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>                <span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * duvWeights,</div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span>                <span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * dvvWeights,</div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>                <span class=\"keywordtype\">int</span> start, <span class=\"keywordtype\">int</span> end);</div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span> </div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span><span class=\"keywordtype\">void</span></div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html#a20e08be34d6183b6943ed7a1586eca4a\">   84</a></span><a class=\"code hl_function\" href=\"a00912.html#a20e08be34d6183b6943ed7a1586eca4a\">TbbEvalPatches</a>(<span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> *src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>               <span class=\"keywordtype\">float</span> *dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>               <span class=\"keywordtype\">float</span> *dstDu,     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDuDesc,</div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>               <span class=\"keywordtype\">float</span> *dstDv,     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDvDesc,</div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>               <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>               <span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a> *patchCoords,</div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>               <span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01325.html\">PatchArray</a> *patchArrayBuffer,</div>\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>               <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> *patchIndexBuffer,</div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>               <span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01329.html\">PatchParam</a> *patchParamBuffer);</div>\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span> </div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span><span class=\"keywordtype\">void</span></div>\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html#aa0c3c264a43eeddc5cb3a58b006d3d32\">   95</a></span><a class=\"code hl_function\" href=\"a00912.html#a20e08be34d6183b6943ed7a1586eca4a\">TbbEvalPatches</a>(<span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> *src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span>               <span class=\"keywordtype\">float</span> *dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>               <span class=\"keywordtype\">float</span> *dstDu,     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDuDesc,</div>\n+<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span>               <span class=\"keywordtype\">float</span> *dstDv,     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDvDesc,</div>\n+<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span>               <span class=\"keywordtype\">float</span> *dstDuu,    <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDuuDesc,</div>\n+<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span>               <span class=\"keywordtype\">float</span> *dstDuv,    <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDuvDesc,</div>\n+<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span>               <span class=\"keywordtype\">float</span> *dstDvv,    <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDvvDesc,</div>\n+<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span>               <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span>               <span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a> *patchCoords,</div>\n+<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span>               <span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01325.html\">PatchArray</a> *patchArrayBuffer,</div>\n+<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span>               <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> *patchIndexBuffer,</div>\n+<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span>               <span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01329.html\">PatchParam</a> *patchParamBuffer);</div>\n+<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span> </div>\n+<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span>}  <span class=\"comment\">// end namespace Osd</span></div>\n+<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span> </div>\n+<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span>}  <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span> </div>\n+<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span>}  <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span> </div>\n+<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_TBB_KERNEL_H</span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa00912_html_a20e08be34d6183b6943ed7a1586eca4a\"><div class=\"ttname\"><a href=\"a00912.html#a20e08be34d6183b6943ed7a1586eca4a\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvalPatches</a></div><div class=\"ttdeci\">void TbbEvalPatches(float const *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, float *dstDu, BufferDescriptor const &amp;dstDuDesc, float *dstDv, BufferDescriptor const &amp;dstDvDesc, int numPatchCoords, const PatchCoord *patchCoords, const PatchArray *patchArrayBuffer, const int *patchIndexBuffer, const PatchParam *patchParamBuffer)</div></div>\n+<div class=\"ttc\" id=\"aa00912_html_a4a6a0fcc01638f2a0316b32ad158b485\"><div class=\"ttname\"><a href=\"a00912.html#a4a6a0fcc01638f2a0316b32ad158b485\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvalStencils</a></div><div class=\"ttdeci\">void TbbEvalStencils(float const *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, int const *sizes, int const *offsets, int const *indices, float const *weights, int start, int end)</div></div>\n+<div class=\"ttc\" id=\"aa01141_html\"><div class=\"ttname\"><a href=\"a01141.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::BufferDescriptor</a></div><div class=\"ttdoc\">BufferDescriptor is a struct which describes buffer elements in interleaved data buffers....</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00061\">bufferDescriptor.h:61</a></div></div>\n+<div class=\"ttc\" id=\"aa01321_html\"><div class=\"ttname\"><a href=\"a01321.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchCoord</a></div><div class=\"ttdoc\">Coordinates set on a patch table.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00042\">types.h:42</a></div></div>\n+<div class=\"ttc\" id=\"aa01325_html\"><div class=\"ttname\"><a href=\"a01325.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchArray</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00066\">types.h:66</a></div></div>\n+<div class=\"ttc\" id=\"aa01329_html\"><div class=\"ttname\"><a href=\"a01329.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchParam</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00127\">types.h:127</a></div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7f420b72a822828cfa8b0561c695a5cc.html\">far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00758.html\">stencilTable.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00758.html\">tbbKernel.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,12 +1,12 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-stencilTable.h\n+tbbKernel.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n 2// Copyright 2013 Pixar\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n@@ -24,990 +24,126 @@\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n 24\n-25#ifndef OPENSUBDIV3_FAR_STENCILTABLE_H\n-26#define OPENSUBDIV3_FAR_STENCILTABLE_H\n+25#ifndef OPENSUBDIV3_OSD_TBB_KERNEL_H\n+26#define OPENSUBDIV3_OSD_TBB_KERNEL_H\n 27\n 28#include \"../version.h\"\n-29\n-30#include \"../far/types.h\"\n+29#include \"../far/patchDescriptor.h\"\n+30#include \"../far/patchParam.h\"\n 31\n-32#include <cassert>\n-33#include <cstring>\n-34#include <vector>\n-35#include <iostream>\n+32namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+33namespace OPENSUBDIV_VERSION {\n+34\n+35namespace Osd {\n 36\n-37namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-38namespace OPENSUBDIV_VERSION {\n-39\n-40namespace Far {\n+37struct PatchArray;\n+38struct PatchCoord;\n+39struct PatchParam;\n+40struct BufferDescriptor;\n 41\n-42// Forward declarations for friends:\n-43class PatchTableBuilder;\n-44\n-45template <typename REAL> class StencilTableFactoryReal;\n-46template <typename REAL> class LimitStencilTableFactoryReal;\n-47\n-52template <typename REAL>\n-_\b5_\b3class _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl {\n-54public:\n-55\n-_\b5_\b7 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl() {}\n-58\n-_\b6_\b7 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl(int * size, _\bI_\bn_\bd_\be_\bx * indices, REAL * weights)\n-68 : _\b__\bs_\bi_\bz_\be(size), _\b__\bi_\bn_\bd_\bi_\bc_\be_\bs(indices), _\b__\bw_\be_\bi_\bg_\bh_\bt_\bs(weights) { }\n-69\n-_\b7_\b1 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl(_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl const & other) {\n-72 _\b__\bs_\bi_\bz_\be = other._\b__\bs_\bi_\bz_\be;\n-73 _\b__\bi_\bn_\bd_\bi_\bc_\be_\bs = other._\b__\bi_\bn_\bd_\bi_\bc_\be_\bs;\n-74 _\b__\bw_\be_\bi_\bg_\bh_\bt_\bs = other._\b__\bw_\be_\bi_\bg_\bh_\bt_\bs;\n-75 }\n-76\n-_\b7_\b8 int _\bG_\be_\bt_\bS_\bi_\bz_\be() const {\n-79 return *_\b__\bs_\bi_\bz_\be;\n-80 }\n-81\n-_\b8_\b3 int * _\bG_\be_\bt_\bS_\bi_\bz_\be_\bP_\bt_\br() const {\n-84 return _\b__\bs_\bi_\bz_\be;\n-85 }\n-86\n-_\b8_\b8 _\bI_\bn_\bd_\be_\bx const * _\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bI_\bn_\bd_\bi_\bc_\be_\bs() const {\n-89 return _\b__\bi_\bn_\bd_\bi_\bc_\be_\bs;\n-90 }\n-91\n-_\b9_\b3 REAL const * _\bG_\be_\bt_\bW_\be_\bi_\bg_\bh_\bt_\bs() const {\n-94 return _\b__\bw_\be_\bi_\bg_\bh_\bt_\bs;\n-95 }\n-96\n-_\b9_\b8 void _\bN_\be_\bx_\bt() {\n-99 int stride = *_\b__\bs_\bi_\bz_\be;\n-100 ++_\b__\bs_\bi_\bz_\be;\n-101 _\b__\bi_\bn_\bd_\bi_\bc_\be_\bs += stride;\n-102 _\b__\bw_\be_\bi_\bg_\bh_\bt_\bs += stride;\n-103 }\n-104\n-105protected:\n-106 friend class _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl<REAL>;\n-107 friend class _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl<REAL>;\n-108\n-_\b1_\b0_\b9 int * _\b__\bs_\bi_\bz_\be;\n-_\b1_\b1_\b0 _\bI_\bn_\bd_\be_\bx * _\b__\bi_\bn_\bd_\bi_\bc_\be_\bs;\n-_\b1_\b1_\b1 REAL * _\b__\bw_\be_\bi_\bg_\bh_\bt_\bs;\n-112};\n-113\n-_\b1_\b1_\b6class _\bS_\bt_\be_\bn_\bc_\bi_\bl : public _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl<float> {\n-117protected:\n-_\b1_\b1_\b8 typedef _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b<_\bf_\bl_\bo_\ba_\bt_\b> _\bB_\ba_\bs_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl;\n-119\n-120public:\n-_\b1_\b2_\b1 _\bS_\bt_\be_\bn_\bc_\bi_\bl() : _\bB_\ba_\bs_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl() { }\n-_\b1_\b2_\b2 _\bS_\bt_\be_\bn_\bc_\bi_\bl(_\bB_\ba_\bs_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl const & other) : _\bB_\ba_\bs_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl(other) { }\n-_\b1_\b2_\b3 _\bS_\bt_\be_\bn_\bc_\bi_\bl(int * size, _\bI_\bn_\bd_\be_\bx * indices, float * weights)\n-124 : _\bB_\ba_\bs_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl(size, indices, weights) { }\n-125};\n-126\n-127\n-140template <typename REAL>\n-_\b1_\b4_\b1class _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl {\n-142protected:\n-_\b1_\b4_\b3 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl(int numControlVerts,\n-144 std::vector<int> const& offsets,\n-145 std::vector<int> const& sizes,\n-146 std::vector<int> const& sources,\n-147 std::vector<REAL> const& weights,\n-148 bool includeCoarseVerts,\n-149 size_t firstOffset);\n-150\n-151public:\n-152\n-_\b1_\b5_\b3 virtual _\b~_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl() {};\n-154\n-_\b1_\b5_\b6 int _\bG_\be_\bt_\bN_\bu_\bm_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs() const {\n-157 return (int)_\b__\bs_\bi_\bz_\be_\bs.size();\n-158 }\n-159\n-_\b1_\b6_\b1 int _\bG_\be_\bt_\bN_\bu_\bm_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bV_\be_\br_\bt_\bi_\bc_\be_\bs() const {\n-162 return _\b__\bn_\bu_\bm_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bV_\be_\br_\bt_\bi_\bc_\be_\bs;\n-163 }\n-164\n-_\b1_\b6_\b6 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b> _\bG_\be_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl(_\bI_\bn_\bd_\be_\bx i) const;\n-167\n-_\b1_\b6_\b9 std::vector<int> const & _\bG_\be_\bt_\bS_\bi_\bz_\be_\bs() const {\n-170 return _\b__\bs_\bi_\bz_\be_\bs;\n-171 }\n-172\n-_\b1_\b7_\b4 std::vector<Index> const & _\bG_\be_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bs() const {\n-175 return _\b__\bo_\bf_\bf_\bs_\be_\bt_\bs;\n-176 }\n-177\n-_\b1_\b7_\b9 std::vector<Index> const & _\bG_\be_\bt_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bI_\bn_\bd_\bi_\bc_\be_\bs() const {\n-180 return _\b__\bi_\bn_\bd_\bi_\bc_\be_\bs;\n-181 }\n-182\n-_\b1_\b8_\b4 std::vector<REAL> const & _\bG_\be_\bt_\bW_\be_\bi_\bg_\bh_\bt_\bs() const {\n-185 return _\b__\bw_\be_\bi_\bg_\bh_\bt_\bs;\n-186 }\n-187\n-_\b1_\b8_\b9 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b> _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b (_\bI_\bn_\bd_\be_\bx index) const;\n-190\n-204 template <class T, class U>\n-_\b2_\b0_\b5 void _\bU_\bp_\bd_\ba_\bt_\be_\bV_\ba_\bl_\bu_\be_\bs(T const &srcValues, U &dstValues, _\bI_\bn_\bd_\be_\bx start=-1, _\bI_\bn_\bd_\be_\bx\n-end=-1) const {\n-206 this->_\bu_\bp_\bd_\ba_\bt_\be(srcValues, dstValues, _\b__\bw_\be_\bi_\bg_\bh_\bt_\bs, start, end);\n-207 }\n-208\n-209 template <class T1, class T2, class U>\n-_\b2_\b1_\b0 void _\bU_\bp_\bd_\ba_\bt_\be_\bV_\ba_\bl_\bu_\be_\bs(T1 const &srcBase, int numBase, T2 const &srcRef,\n-211 U &dstValues, _\bI_\bn_\bd_\be_\bx start=-1, _\bI_\bn_\bd_\be_\bx end=-1) const {\n-212 this->_\bu_\bp_\bd_\ba_\bt_\be(srcBase, numBase, srcRef, dstValues, _\b__\bw_\be_\bi_\bg_\bh_\bt_\bs, start, end);\n-213 }\n-214\n-215 // Pointer interface for backward compatibility\n-216 template <class T, class U>\n-_\b2_\b1_\b7 void _\bU_\bp_\bd_\ba_\bt_\be_\bV_\ba_\bl_\bu_\be_\bs(T const *src, U *dst, _\bI_\bn_\bd_\be_\bx start=-1, _\bI_\bn_\bd_\be_\bx end=-1) const\n-{\n-218 this->_\bu_\bp_\bd_\ba_\bt_\be(src, dst, _\b__\bw_\be_\bi_\bg_\bh_\bt_\bs, start, end);\n-219 }\n-220 template <class T1, class T2, class U>\n-_\b2_\b2_\b1 void _\bU_\bp_\bd_\ba_\bt_\be_\bV_\ba_\bl_\bu_\be_\bs(T1 const *srcBase, int numBase, T2 const *srcRef,\n-222 U *dst, _\bI_\bn_\bd_\be_\bx start=-1, _\bI_\bn_\bd_\be_\bx end=-1) const {\n-223 this->_\bu_\bp_\bd_\ba_\bt_\be(srcBase, numBase, srcRef, dst, _\b__\bw_\be_\bi_\bg_\bh_\bt_\bs, start, end);\n-224 }\n-225\n-_\b2_\b2_\b7 void _\bC_\bl_\be_\ba_\br();\n-228\n-229protected:\n-230\n-231 // Update values by applying cached stencil weights to new control values\n-232 template <class T, class U>\n-_\b2_\b3_\b3 void _\bu_\bp_\bd_\ba_\bt_\be( T const &srcValues, U &dstValues,\n-234 std::vector<REAL> const & valueWeights, _\bI_\bn_\bd_\be_\bx start, _\bI_\bn_\bd_\be_\bx end) const;\n-235 template <class T1, class T2, class U>\n-_\b2_\b3_\b6 void _\bu_\bp_\bd_\ba_\bt_\be( T1 const &srcBase, int numBase, T2 const &srcRef, U\n-&dstValues,\n-237 std::vector<REAL> const & valueWeights, _\bI_\bn_\bd_\be_\bx start, _\bI_\bn_\bd_\be_\bx end) const;\n-238\n-239 // Populate the offsets table from the stencil sizes in _sizes (factory\n-helper)\n-_\b2_\b4_\b0 void _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bO_\bf_\bf_\bs_\be_\bt_\bs();\n-241\n-242 // Resize the table arrays (factory helper)\n-_\b2_\b4_\b3 void _\br_\be_\bs_\bi_\bz_\be(int nstencils, int nelems);\n-244\n-245 // Reserves the table arrays (factory helper)\n-_\b2_\b4_\b6 void _\br_\be_\bs_\be_\br_\bv_\be(int nstencils, int nelems);\n-247\n-248 // Reallocates the table arrays to remove excess capacity (factory helper)\n-_\b2_\b4_\b9 void _\bs_\bh_\br_\bi_\bn_\bk_\bT_\bo_\bF_\bi_\bt();\n-250\n-251 // Performs any final operations on internal tables (factory helper)\n-_\b2_\b5_\b2 void _\bf_\bi_\bn_\ba_\bl_\bi_\bz_\be();\n-253\n-254protected:\n-_\b2_\b5_\b5 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl() : _\b__\bn_\bu_\bm_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bV_\be_\br_\bt_\bi_\bc_\be_\bs(0) {}\n-_\b2_\b5_\b6 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl(int numControlVerts)\n-257 : _\b__\bn_\bu_\bm_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bV_\be_\br_\bt_\bi_\bc_\be_\bs(numControlVerts)\n-258 { }\n-259\n-260 friend class _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl<REAL>;\n-_\b2_\b6_\b1 friend class _\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bB_\bu_\bi_\bl_\bd_\be_\br;\n-262\n-_\b2_\b6_\b3 int _\b__\bn_\bu_\bm_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bV_\be_\br_\bt_\bi_\bc_\be_\bs; // number of control vertices\n-264\n-_\b2_\b6_\b5 std::vector<int> _\b__\bs_\bi_\bz_\be_\bs; // number of coefficients for each stencil\n-_\b2_\b6_\b6 std::vector<Index> _\b__\bo_\bf_\bf_\bs_\be_\bt_\bs, // offset to the start of each stencil\n-_\b2_\b6_\b7 _\b__\bi_\bn_\bd_\bi_\bc_\be_\bs; // indices of contributing coarse vertices\n-_\b2_\b6_\b8 std::vector<REAL> _\b__\bw_\be_\bi_\bg_\bh_\bt_\bs; // stencil weight coefficients\n-269};\n-270\n-_\b2_\b7_\b3class _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be : public _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl<float> {\n-274protected:\n-_\b2_\b7_\b5 typedef _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bf_\bl_\bo_\ba_\bt_\b> _\bB_\ba_\bs_\be_\bT_\ba_\bb_\bl_\be;\n-276\n-277public:\n-_\b2_\b7_\b8 _\bS_\bt_\be_\bn_\bc_\bi_\bl _\bG_\be_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl(_\bI_\bn_\bd_\be_\bx index) const {\n-279 return _\bS_\bt_\be_\bn_\bc_\bi_\bl(_\bB_\ba_\bs_\be_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl(index));\n-280 }\n-_\b2_\b8_\b1 _\bS_\bt_\be_\bn_\bc_\bi_\bl _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b (_\bI_\bn_\bd_\be_\bx index) const {\n-282 return _\bS_\bt_\be_\bn_\bc_\bi_\bl(_\bB_\ba_\bs_\be_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl(index));\n-283 }\n-284\n-285protected:\n-_\b2_\b8_\b6 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be() : _\bB_\ba_\bs_\be_\bT_\ba_\bb_\bl_\be() { }\n-_\b2_\b8_\b7 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(int numControlVerts) : _\bB_\ba_\bs_\be_\bT_\ba_\bb_\bl_\be(numControlVerts) { }\n-_\b2_\b8_\b8 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(int numControlVerts,\n-289 std::vector<int> const& offsets,\n-290 std::vector<int> const& sizes,\n-291 std::vector<int> const& sources,\n-292 std::vector<float> const& weights,\n-293 bool includeCoarseVerts,\n-294 size_t firstOffset)\n-295 : _\bB_\ba_\bs_\be_\bT_\ba_\bb_\bl_\be(numControlVerts, offsets,\n-296 sizes, sources, weights, includeCoarseVerts, firstOffset) { }\n-297};\n-298\n-299\n-302template <typename REAL>\n-_\b3_\b0_\b3class _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl : public _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl<REAL> {\n-304public:\n-305\n-_\b3_\b2_\b4 _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl( int* size,\n-325 _\bI_\bn_\bd_\be_\bx * indices,\n-326 REAL * weights,\n-327 REAL * duWeights=0,\n-328 REAL * dvWeights=0,\n-329 REAL * duuWeights=0,\n-330 REAL * duvWeights=0,\n-331 REAL * dvvWeights=0)\n-332 : _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl<REAL>(size, indices, weights),\n-333 _duWeights(duWeights),\n-334 _dvWeights(dvWeights),\n-335 _duuWeights(duuWeights),\n-336 _duvWeights(duvWeights),\n-337 _dvvWeights(dvvWeights) {\n-338 }\n-339\n-_\b3_\b4_\b1 REAL const * _\bG_\be_\bt_\bD_\bu_\bW_\be_\bi_\bg_\bh_\bt_\bs() const {\n-342 return _duWeights;\n-343 }\n-344\n-_\b3_\b4_\b6 REAL const * _\bG_\be_\bt_\bD_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs() const {\n-347 return _dvWeights;\n-348 }\n-349\n-_\b3_\b5_\b1 REAL const * _\bG_\be_\bt_\bD_\bu_\bu_\bW_\be_\bi_\bg_\bh_\bt_\bs() const {\n-352 return _duuWeights;\n-353 }\n-354\n-_\b3_\b5_\b6 REAL const * _\bG_\be_\bt_\bD_\bu_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs() const {\n-357 return _duvWeights;\n-358 }\n-359\n-_\b3_\b6_\b1 REAL const * _\bG_\be_\bt_\bD_\bv_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs() const {\n-362 return _dvvWeights;\n-363 }\n-364\n-_\b3_\b6_\b6 void _\bN_\be_\bx_\bt() {\n-367 int stride = *this->_\b__\bs_\bi_\bz_\be;\n-368 ++this->_\b__\bs_\bi_\bz_\be;\n-369 this->_\b__\bi_\bn_\bd_\bi_\bc_\be_\bs += stride;\n-370 this->_\b__\bw_\be_\bi_\bg_\bh_\bt_\bs += stride;\n-371 if (_duWeights) _duWeights += stride;\n-372 if (_dvWeights) _dvWeights += stride;\n-373 if (_duuWeights) _duuWeights += stride;\n-374 if (_duvWeights) _duvWeights += stride;\n-375 if (_dvvWeights) _dvvWeights += stride;\n-376 }\n-377\n-378private:\n-379\n-380 friend class _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl<REAL>;\n-381 friend class _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl<REAL>;\n-382\n-383 REAL * _duWeights, // pointer to stencil u derivative limit weights\n-384 * _dvWeights, // pointer to stencil v derivative limit weights\n-385 * _duuWeights, // pointer to stencil uu derivative limit weights\n-386 * _duvWeights, // pointer to stencil uv derivative limit weights\n-387 * _dvvWeights; // pointer to stencil vv derivative limit weights\n-388};\n-389\n-_\b3_\b9_\b2class _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl : public _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl<float> {\n-393protected:\n-_\b3_\b9_\b4 typedef _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b<_\bf_\bl_\bo_\ba_\bt_\b> _\bB_\ba_\bs_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl;\n-395\n-396public:\n-_\b3_\b9_\b7 _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl(_\bB_\ba_\bs_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl const & other) : _\bB_\ba_\bs_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl(other) { }\n-_\b3_\b9_\b8 _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl(int* size, _\bI_\bn_\bd_\be_\bx * indices, float * weights,\n-399 float * duWeights=0, float * dvWeights=0,\n-400 float * duuWeights=0, float * duvWeights=0, float * dvvWeights=0)\n-401 : _\bB_\ba_\bs_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl(size, indices, weights,\n-402 duWeights, dvWeights, duuWeights, duvWeights, dvvWeights) { }\n-403};\n-404\n-405\n-408template <typename REAL>\n-_\b4_\b0_\b9class _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl : public _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl<REAL> {\n-410protected:\n-_\b4_\b1_\b1 _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl(\n-412 int numControlVerts,\n-413 std::vector<int> const& offsets,\n-414 std::vector<int> const& sizes,\n-415 std::vector<int> const& sources,\n-416 std::vector<REAL> const& weights,\n-417 std::vector<REAL> const& duWeights,\n-418 std::vector<REAL> const& dvWeights,\n-419 std::vector<REAL> const& duuWeights,\n-420 std::vector<REAL> const& duvWeights,\n-421 std::vector<REAL> const& dvvWeights,\n-422 bool includeCoarseVerts,\n-423 size_t firstOffset);\n-424\n-425public:\n-426\n-_\b4_\b2_\b8 _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b> _\bG_\be_\bt_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl(_\bI_\bn_\bd_\be_\bx i) const;\n-429\n-_\b4_\b3_\b1 _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b> _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b (_\bI_\bn_\bd_\be_\bx index) const;\n-432\n-_\b4_\b3_\b4 std::vector<REAL> const & _\bG_\be_\bt_\bD_\bu_\bW_\be_\bi_\bg_\bh_\bt_\bs() const {\n-435 return _duWeights;\n-436 }\n-437\n-_\b4_\b3_\b9 std::vector<REAL> const & _\bG_\be_\bt_\bD_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs() const {\n-440 return _dvWeights;\n-441 }\n-442\n-_\b4_\b4_\b4 std::vector<REAL> const & _\bG_\be_\bt_\bD_\bu_\bu_\bW_\be_\bi_\bg_\bh_\bt_\bs() const {\n-445 return _duuWeights;\n-446 }\n-447\n-_\b4_\b4_\b9 std::vector<REAL> const & _\bG_\be_\bt_\bD_\bu_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs() const {\n-450 return _duvWeights;\n-451 }\n-452\n-_\b4_\b5_\b4 std::vector<REAL> const & _\bG_\be_\bt_\bD_\bv_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs() const {\n-455 return _dvvWeights;\n-456 }\n-457\n-475 template <class T, class U>\n-_\b4_\b7_\b6 void _\bU_\bp_\bd_\ba_\bt_\be_\bD_\be_\br_\bi_\bv_\bs(T const & srcValues, U & uderivs, U & vderivs,\n-477 int start=-1, int end=-1) const {\n-478\n-479 this->_\bu_\bp_\bd_\ba_\bt_\be(srcValues, uderivs, _duWeights, start, end);\n-480 this->_\bu_\bp_\bd_\ba_\bt_\be(srcValues, vderivs, _dvWeights, start, end);\n-481 }\n-482\n-483 template <class T1, class T2, class U>\n-_\b4_\b8_\b4 void _\bU_\bp_\bd_\ba_\bt_\be_\bD_\be_\br_\bi_\bv_\bs(T1 const & srcBase, int numBase, T2 const & srcRef,\n-485 U & uderivs, U & vderivs, int start=-1, int end=-1) const {\n-486\n-487 this->_\bu_\bp_\bd_\ba_\bt_\be(srcBase, numBase, srcRef, uderivs, _duWeights, start, end);\n-488 this->_\bu_\bp_\bd_\ba_\bt_\be(srcBase, numBase, srcRef, vderivs, _dvWeights, start, end);\n-489 }\n-490\n-491 // Pointer interface for backward compatibility\n-492 template <class T, class U>\n-_\b4_\b9_\b3 void _\bU_\bp_\bd_\ba_\bt_\be_\bD_\be_\br_\bi_\bv_\bs(T const *src, U *uderivs, U *vderivs,\n-494 int start=-1, int end=-1) const {\n-495\n-496 this->_\bu_\bp_\bd_\ba_\bt_\be(src, uderivs, _duWeights, start, end);\n-497 this->_\bu_\bp_\bd_\ba_\bt_\be(src, vderivs, _dvWeights, start, end);\n-498 }\n-499 template <class T1, class T2, class U>\n-_\b5_\b0_\b0 void _\bU_\bp_\bd_\ba_\bt_\be_\bD_\be_\br_\bi_\bv_\bs(T1 const *srcBase, int numBase, T2 const *srcRef,\n-501 U *uderivs, U *vderivs, int start=-1, int end=-1) const {\n-502\n-503 this->_\bu_\bp_\bd_\ba_\bt_\be(srcBase, numBase, srcRef, uderivs, _duWeights, start, end);\n-504 this->_\bu_\bp_\bd_\ba_\bt_\be(srcBase, numBase, srcRef, vderivs, _dvWeights, start, end);\n-505 }\n-506\n-527 template <class T, class U>\n-_\b5_\b2_\b8 void _\bU_\bp_\bd_\ba_\bt_\be_\b2_\bn_\bd_\bD_\be_\br_\bi_\bv_\bs(T const & srcValues,\n-529 U & uuderivs, U & uvderivs, U & vvderivs,\n-530 int start=-1, int end=-1) const {\n-531\n-532 this->_\bu_\bp_\bd_\ba_\bt_\be(srcValues, uuderivs, _duuWeights, start, end);\n-533 this->_\bu_\bp_\bd_\ba_\bt_\be(srcValues, uvderivs, _duvWeights, start, end);\n-534 this->_\bu_\bp_\bd_\ba_\bt_\be(srcValues, vvderivs, _dvvWeights, start, end);\n-535 }\n-536\n-537 template <class T1, class T2, class U>\n-_\b5_\b3_\b8 void _\bU_\bp_\bd_\ba_\bt_\be_\b2_\bn_\bd_\bD_\be_\br_\bi_\bv_\bs(T1 const & srcBase, int numBase, T2 const & srcRef,\n-539 U & uuderivs, U & uvderivs, U & vvderivs, int start=-1, int end=-1) const {\n-540\n-541 this->_\bu_\bp_\bd_\ba_\bt_\be(srcBase, numBase, srcRef, uuderivs, _duuWeights, start, end);\n-542 this->_\bu_\bp_\bd_\ba_\bt_\be(srcBase, numBase, srcRef, uvderivs, _duvWeights, start, end);\n-543 this->_\bu_\bp_\bd_\ba_\bt_\be(srcBase, numBase, srcRef, vvderivs, _dvvWeights, start, end);\n-544 }\n-545\n-546 // Pointer interface for backward compatibility\n-547 template <class T, class U>\n-_\b5_\b4_\b8 void _\bU_\bp_\bd_\ba_\bt_\be_\b2_\bn_\bd_\bD_\be_\br_\bi_\bv_\bs(T const *src, T *uuderivs, U *uvderivs, U *vvderivs,\n-549 int start=-1, int end=-1) const {\n-550\n-551 this->_\bu_\bp_\bd_\ba_\bt_\be(src, uuderivs, _duuWeights, start, end);\n-552 this->_\bu_\bp_\bd_\ba_\bt_\be(src, uvderivs, _duvWeights, start, end);\n-553 this->_\bu_\bp_\bd_\ba_\bt_\be(src, vvderivs, _dvvWeights, start, end);\n-554 }\n-555 template <class T1, class T2, class U>\n-_\b5_\b5_\b6 void _\bU_\bp_\bd_\ba_\bt_\be_\b2_\bn_\bd_\bD_\be_\br_\bi_\bv_\bs(T1 const *srcBase, int numBase, T2 const *srcRef,\n-557 U *uuderivs, U *uvderivs, U *vvderivs, int start=-1, int end=-1) const {\n-558\n-559 this->_\bu_\bp_\bd_\ba_\bt_\be(srcBase, numBase, srcRef, uuderivs, _duuWeights, start, end);\n-560 this->_\bu_\bp_\bd_\ba_\bt_\be(srcBase, numBase, srcRef, uvderivs, _duvWeights, start, end);\n-561 this->_\bu_\bp_\bd_\ba_\bt_\be(srcBase, numBase, srcRef, vvderivs, _dvvWeights, start, end);\n-562 }\n-563\n-_\b5_\b6_\b5 void _\bC_\bl_\be_\ba_\br();\n-566\n-567private:\n-568 friend class _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl<REAL>;\n-569\n-570 // Resize the table arrays (factory helper)\n-571 void resize(int nstencils, int nelems);\n-572\n-573private:\n-574 std::vector<REAL> _duWeights, // u derivative limit stencil weights\n-575 _dvWeights, // v derivative limit stencil weights\n-576 _duuWeights, // uu derivative limit stencil weights\n-577 _duvWeights, // uv derivative limit stencil weights\n-578 _dvvWeights; // vv derivative limit stencil weights\n-579};\n-580\n-_\b5_\b8_\b3class _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be : public _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl<float> {\n-584protected:\n-_\b5_\b8_\b5 typedef _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bf_\bl_\bo_\ba_\bt_\b> _\bB_\ba_\bs_\be_\bT_\ba_\bb_\bl_\be;\n-586\n-587public:\n-_\b5_\b8_\b8 _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl _\bG_\be_\bt_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl(_\bI_\bn_\bd_\be_\bx index) const {\n-589 return _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl(_\bB_\ba_\bs_\be_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl(index));\n-590 }\n-_\b5_\b9_\b1 _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b (_\bI_\bn_\bd_\be_\bx index) const {\n-592 return _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl(_\bB_\ba_\bs_\be_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl(index));\n-593 }\n-594\n-595protected:\n-_\b5_\b9_\b6 _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(int numControlVerts,\n-597 std::vector<int> const& offsets,\n-598 std::vector<int> const& sizes,\n-599 std::vector<int> const& sources,\n-600 std::vector<float> const& weights,\n-601 std::vector<float> const& duWeights,\n-602 std::vector<float> const& dvWeights,\n-603 std::vector<float> const& duuWeights,\n-604 std::vector<float> const& duvWeights,\n-605 std::vector<float> const& dvvWeights,\n-606 bool includeCoarseVerts,\n-607 size_t firstOffset)\n-608 : _\bB_\ba_\bs_\be_\bT_\ba_\bb_\bl_\be(numControlVerts,\n-609 offsets, sizes, sources, weights,\n-610 duWeights, dvWeights, duuWeights, duvWeights, dvvWeights,\n-611 includeCoarseVerts, firstOffset) { }\n-612};\n-613\n-614\n-615// Update values by applying cached stencil weights to new control values\n-616template <typename REAL>\n-617template <class T1, class T2, class U> void\n-_\b6_\b1_\b8_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\bu_\bp_\bd_\ba_\bt_\be(T1 const &srcBase, int numBase,\n-619 T2 const &srcRef, U &dstValues,\n-620 std::vector<REAL> const &valueWeights, _\bI_\bn_\bd_\be_\bx start, _\bI_\bn_\bd_\be_\bx end) const {\n-621\n-622 int const * sizes = &_sizes.at(0);\n-623 _\bI_\bn_\bd_\be_\bx const * indices = &_indices.at(0);\n-624 REAL const * weights = &valueWeights.at(0);\n-625\n-626 if (start > 0) {\n-627 assert(start < (_\bI_\bn_\bd_\be_\bx)_offsets.size());\n-628 sizes += start;\n-629 indices += _offsets[start];\n-630 weights += _offsets[start];\n-631 } else {\n-632 start = 0;\n-633 }\n-634\n-635 int nstencils = ((end < start) ? GetNumStencils() : end) - start;\n-636\n-637 for (int i = 0; i < nstencils; ++i, ++sizes) {\n-638 dstValues[start + i].Clear();\n-639 for (int j = 0; j < *sizes; ++j, ++indices, ++weights) {\n-640 if (*indices < numBase) {\n-641 dstValues[start + i].AddWithWeight(srcBase[*indices], *weights);\n-642 } else {\n-643 dstValues[start + i].AddWithWeight(srcRef[*indices - numBase], *weights);\n-644 }\n-645 }\n-646 }\n-647}\n-648template <typename REAL>\n-649template <class T, class U> void\n-_\b6_\b5_\b0_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\bu_\bp_\bd_\ba_\bt_\be(T const &srcValues, U &dstValues,\n-651 std::vector<REAL> const &valueWeights, _\bI_\bn_\bd_\be_\bx start, _\bI_\bn_\bd_\be_\bx end) const {\n-652\n-653 int const * sizes = &_sizes.at(0);\n-654 _\bI_\bn_\bd_\be_\bx const * indices = &_indices.at(0);\n-655 REAL const * weights = &valueWeights.at(0);\n-656\n-657 if (start > 0) {\n-658 assert(start < (_\bI_\bn_\bd_\be_\bx)_offsets.size());\n-659 sizes += start;\n-660 indices += _offsets[start];\n-661 weights += _offsets[start];\n-662 } else {\n-663 start = 0;\n-664 }\n-665\n-666 int nstencils = ((end < start) ? GetNumStencils() : end) - start;\n-667\n-668 for (int i = 0; i < nstencils; ++i, ++sizes) {\n-669 dstValues[start + i].Clear();\n-670 for (int j = 0; j < *sizes; ++j, ++indices, ++weights) {\n-671 dstValues[start + i].AddWithWeight(srcValues[*indices], *weights);\n-672 }\n-673 }\n-674}\n-675\n-676template <typename REAL>\n-677inline void\n-_\b6_\b7_\b8_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bO_\bf_\bf_\bs_\be_\bt_\bs() {\n-679 _\bI_\bn_\bd_\be_\bx offset=0;\n-680 int noffsets = (int)_sizes.size();\n-681 _offsets.resize(noffsets);\n-682 for (int i=0; i<(int)_sizes.size(); ++i ) {\n-683 _offsets[i]=offset;\n-684 offset+=_sizes[i];\n-685 }\n-686}\n-687\n-688template <typename REAL>\n-689inline void\n-_\b6_\b9_\b0_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\br_\be_\bs_\bi_\bz_\be(int nstencils, int nelems) {\n-691 _sizes.resize(nstencils);\n-692 _indices.resize(nelems);\n-693 _weights.resize(nelems);\n-694}\n-695\n-696template <typename REAL>\n-697inline void\n-_\b6_\b9_\b8_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\br_\be_\bs_\be_\br_\bv_\be(int nstencils, int nelems) {\n-699 _sizes.reserve(nstencils);\n-700 _indices.reserve(nelems);\n-701 _weights.reserve(nelems);\n-702}\n-703\n-704template <typename REAL>\n-705inline void\n-_\b7_\b0_\b6_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\bs_\bh_\br_\bi_\bn_\bk_\bT_\bo_\bF_\bi_\bt() {\n-707 std::vector<int>(_sizes).swap(_sizes);\n-708 std::vector<Index>(_indices).swap(_indices);\n-709 std::vector<REAL>(_weights).swap(_weights);\n-710}\n-711\n-712template <typename REAL>\n-713inline void\n-_\b7_\b1_\b4_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\bf_\bi_\bn_\ba_\bl_\bi_\bz_\be() {\n-715 shrinkToFit();\n-716 generateOffsets();\n-717}\n-718\n-719// Returns a Stencil at index i in the table\n-720template <typename REAL>\n-721inline _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b>\n-_\b7_\b2_\b2_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\bG_\be_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl(_\bI_\bn_\bd_\be_\bx i) const {\n-723 assert((! _offsets.empty()) && i<(int)_offsets.size());\n-724\n-725 _\bI_\bn_\bd_\be_\bx ofs = _offsets[i];\n-726\n-727 return _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b>(const_cast<int*>(&_sizes[i]),\n-728 const_cast<_\bI_\bn_\bd_\be_\bx*>(&_indices[ofs]),\n-729 const_cast<REAL*>(&_weights[ofs]));\n-730}\n-731\n-732template <typename REAL>\n-733inline _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b>\n-_\b7_\b3_\b4_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b (_\bI_\bn_\bd_\be_\bx index) const {\n-735 return GetStencil(index);\n-736}\n-737\n-738template <typename REAL>\n-739inline void\n-740_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\br_\be_\bs_\bi_\bz_\be(int nstencils, int nelems) {\n-741 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\br_\be_\bs_\bi_\bz_\be(nstencils, nelems);\n-742 _duWeights.resize(nelems);\n-743 _dvWeights.resize(nelems);\n-744}\n-745\n-746// Returns a LimitStencil at index i in the table\n-747template <typename REAL>\n-748inline LimitStencilReal<REAL>\n-_\b7_\b4_\b9_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\bG_\be_\bt_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl(_\bI_\bn_\bd_\be_\bx i) const {\n-750 assert((! this->GetOffsets().empty()) && i<(int)this->GetOffsets().size());\n-751\n-752 _\bI_\bn_\bd_\be_\bx ofs = this->GetOffsets()[i];\n-753\n-754 if (!_duWeights.empty() && !_dvWeights.empty() &&\n-755 !_duuWeights.empty() && !_duvWeights.empty() && !_dvvWeights.empty()) {\n-756 return _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b>(\n-757 const_cast<int *>(&this->GetSizes()[i]),\n-758 const_cast<_\bI_\bn_\bd_\be_\bx *>(&this->GetControlIndices()[ofs]),\n-759 const_cast<REAL *>(&this->GetWeights()[ofs]),\n-760 const_cast<REAL *>(&GetDuWeights()[ofs]),\n-761 const_cast<REAL *>(&GetDvWeights()[ofs]),\n-762 const_cast<REAL *>(&GetDuuWeights()[ofs]),\n-763 const_cast<REAL *>(&GetDuvWeights()[ofs]),\n-764 const_cast<REAL *>(&GetDvvWeights()[ofs]) );\n-765 } else if (!_duWeights.empty() && !_dvWeights.empty()) {\n-766 return _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b>(\n-767 const_cast<int *>(&this->GetSizes()[i]),\n-768 const_cast<_\bI_\bn_\bd_\be_\bx *>(&this->GetControlIndices()[ofs]),\n-769 const_cast<REAL *>(&this->GetWeights()[ofs]),\n-770 const_cast<REAL *>(&GetDuWeights()[ofs]),\n-771 const_cast<REAL *>(&GetDvWeights()[ofs]) );\n-772 } else {\n-773 return _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b>(\n-774 const_cast<int *>(&this->GetSizes()[i]),\n-775 const_cast<_\bI_\bn_\bd_\be_\bx *>(&this->GetControlIndices()[ofs]),\n-776 const_cast<REAL *>(&this->GetWeights()[ofs]) );\n-777 }\n-778}\n-779\n-780template <typename REAL>\n-781inline _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b>\n-_\b7_\b8_\b2_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b (_\bI_\bn_\bd_\be_\bx index) const {\n-783 return GetLimitStencil(index);\n-784}\n-785\n-786} // end namespace Far\n-787\n-788} // end namespace OPENSUBDIV_VERSION\n-789using namespace OPENSUBDIV_VERSION;\n-790\n-791} // end namespace OpenSubdiv\n-792\n-793#endif // OPENSUBDIV3_FAR_STENCILTABLE_H\n+42void\n+_\b4_\b3_\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(float const * src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+44 float * dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+45 int const * sizes,\n+46 int const * offsets,\n+47 int const * indices,\n+48 float const * weights,\n+49 int start, int end);\n+50\n+51void\n+_\b5_\b2_\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(float const * src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+53 float * dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+54 float * dstDu, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDuDesc,\n+55 float * dstDv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDvDesc,\n+56 int const * sizes,\n+57 int const * offsets,\n+58 int const * indices,\n+59 float const * weights,\n+60 float const * duWeights,\n+61 float const * dvWeights,\n+62 int start, int end);\n+63\n+64void\n+_\b6_\b5_\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(float const * src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+66 float * dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+67 float * dstDu, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDuDesc,\n+68 float * dstDv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDvDesc,\n+69 float * dstDuu, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDuuDesc,\n+70 float * dstDuv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDuvDesc,\n+71 float * dstDvv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDvvDesc,\n+72 int const * sizes,\n+73 int const * offsets,\n+74 int const * indices,\n+75 float const * weights,\n+76 float const * duWeights,\n+77 float const * dvWeights,\n+78 float const * duuWeights,\n+79 float const * duvWeights,\n+80 float const * dvvWeights,\n+81 int start, int end);\n+82\n+83void\n+_\b8_\b4_\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(float const *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+85 float *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+86 float *dstDu, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDuDesc,\n+87 float *dstDv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDvDesc,\n+88 int numPatchCoords,\n+89 const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd *patchCoords,\n+90 const _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by *patchArrayBuffer,\n+91 const int *patchIndexBuffer,\n+92 const _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm *patchParamBuffer);\n+93\n+94void\n+_\b9_\b5_\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(float const *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+96 float *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+97 float *dstDu, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDuDesc,\n+98 float *dstDv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDvDesc,\n+99 float *dstDuu, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDuuDesc,\n+100 float *dstDuv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDuvDesc,\n+101 float *dstDvv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDvvDesc,\n+102 int numPatchCoords,\n+103 const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd *patchCoords,\n+104 const _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by *patchArrayBuffer,\n+105 const int *patchIndexBuffer,\n+106 const _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm *patchParamBuffer);\n+107\n+108} // end namespace Osd\n+109\n+110} // end namespace OPENSUBDIV_VERSION\n+111using namespace OPENSUBDIV_VERSION;\n+112\n+113} // end namespace OpenSubdiv\n+114\n+115#endif // OPENSUBDIV3_OSD_TBB_KERNEL_H\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx\n-Vtr::Index Index\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b4_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl\n-A specialized factory for StencilTable.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl\n-A specialized factory for LimitStencilTable.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b2_\b0_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl\n-Vertex stencil descriptor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl\n-StencilReal()\n-Default constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b:_\b:_\b__\bs_\bi_\bz_\be\n-int * _size\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b0_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl\n-StencilReal(int *size, Index *indices, REAL *weights)\n-Constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b:_\b:_\bN_\be_\bx_\bt\n-void Next()\n-Advance to the next stencil in the table.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b9_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl\n-StencilReal(StencilReal const &other)\n-Copy constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b:_\b:_\b__\bi_\bn_\bd_\bi_\bc_\be_\bs\n-Index * _indices\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b1_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b:_\b:_\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bI_\bn_\bd_\bi_\bc_\be_\bs\n-Index const * GetVertexIndices() const\n-Returns the control vertices' indices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b8_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b:_\b:_\bG_\be_\bt_\bS_\bi_\bz_\be\n-int GetSize() const\n-Returns the size of the stencil.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b:_\b:_\b__\bw_\be_\bi_\bg_\bh_\bt_\bs\n-REAL * _weights\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b1_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b:_\b:_\bG_\be_\bt_\bS_\bi_\bz_\be_\bP_\bt_\br\n-int * GetSizePtr() const\n-Returns the size of the stencil as a pointer.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b8_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b:_\b:_\bG_\be_\bt_\bW_\be_\bi_\bg_\bh_\bt_\bs\n-REAL const * GetWeights() const\n-Returns the interpolation weights.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b9_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl\n-Vertex stencil class wrapping the template for compatibility.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b1_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl\n-Stencil(BaseStencil const &other)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b2_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl\n-Stencil(int *size, Index *indices, float *weights)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b2_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\b:_\b:_\bB_\ba_\bs_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl\n-StencilReal< float > BaseStencil\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b1_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl\n-Stencil()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b2_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl\n-Table of subdivision stencils.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b4_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n-int GetNumControlVertices() const\n-Returns the number of control vertices indexed in the table.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b6_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\b__\bs_\bi_\bz_\be_\bs\n-std::vector< int > _sizes\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b2_\b6_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bB_\bu_\bi_\bl_\bd_\be_\br\n-friend class Far::PatchTableBuilder\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b2_\b6_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bu_\bp_\bd_\ba_\bt_\be\n-void update(T1 const &srcBase, int numBase, T2 const &srcRef, U &dstValues,\n-std::vector< REAL > const &valueWeights, Index start, Index end) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b1_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bU_\bp_\bd_\ba_\bt_\be_\bV_\ba_\bl_\bu_\be_\bs\n-void UpdateValues(T1 const &srcBase, int numBase, T2 const &srcRef, U\n-&dstValues, Index start=-1, Index end=-1) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b2_\b1_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bG_\be_\bt_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bI_\bn_\bd_\bi_\bc_\be_\bs\n-std::vector< Index > const & GetControlIndices() const\n-Returns the indices of the control vertices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b7_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bf_\bi_\bn_\ba_\bl_\bi_\bz_\be\n-void finalize()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b1_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]\n-StencilReal< REAL > operator[](Index index) const\n-Returns the stencil at index i in the table.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b3_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\b__\bn_\bu_\bm_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n-int _numControlVertices\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b2_\b6_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bu_\bp_\bd_\ba_\bt_\be\n-void update(T const &srcValues, U &dstValues, std::vector< REAL > const\n-&valueWeights, Index start, Index end) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b5_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bG_\be_\bt_\bS_\bi_\bz_\be_\bs\n-std::vector< int > const & GetSizes() const\n-Returns the number of control vertices of each stencil in the table.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b6_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-int GetNumStencils() const\n-Returns the number of stencils in the table.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b5_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\b~_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl\n-virtual ~StencilTableReal()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b5_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bG_\be_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bs\n-std::vector< Index > const & GetOffsets() const\n-Returns the offset to a given stencil (factory may leave empty)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b7_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bG_\be_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl\n-StencilReal< REAL > GetStencil(Index i) const\n-Returns a Stencil at index i in the table.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b2_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bs_\bh_\br_\bi_\bn_\bk_\bT_\bo_\bF_\bi_\bt\n-void shrinkToFit()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b0_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bO_\bf_\bf_\bs_\be_\bt_\bs\n-void generateOffsets()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b7_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bC_\bl_\be_\ba_\br\n-void Clear()\n-Clears the stencils from the table.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\b__\bo_\bf_\bf_\bs_\be_\bt_\bs\n-std::vector< Index > _offsets\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b2_\b6_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\b__\bw_\be_\bi_\bg_\bh_\bt_\bs\n-std::vector< REAL > _weights\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b2_\b6_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\br_\be_\bs_\bi_\bz_\be\n-void resize(int nstencils, int nelems)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b9_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bG_\be_\bt_\bW_\be_\bi_\bg_\bh_\bt_\bs\n-std::vector< REAL > const & GetWeights() const\n-Returns the stencil interpolation weights.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b8_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bU_\bp_\bd_\ba_\bt_\be_\bV_\ba_\bl_\bu_\be_\bs\n-void UpdateValues(T1 const *srcBase, int numBase, T2 const *srcRef, U *dst,\n-Index start=-1, Index end=-1) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b2_\b2_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl\n-StencilTableReal(int numControlVerts, std::vector< int > const &offsets, std::\n-vector< int > const &sizes, std::vector< int > const &sources, std::vector<\n-REAL > const &weights, bool includeCoarseVerts, size_t firstOffset)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\b__\bi_\bn_\bd_\bi_\bc_\be_\bs\n-std::vector< Index > _indices\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b2_\b6_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl\n-StencilTableReal()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b2_\b5_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\br_\be_\bs_\be_\br_\bv_\be\n-void reserve(int nstencils, int nelems)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b9_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bU_\bp_\bd_\ba_\bt_\be_\bV_\ba_\bl_\bu_\be_\bs\n-void UpdateValues(T const *src, U *dst, Index start=-1, Index end=-1) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b2_\b1_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bU_\bp_\bd_\ba_\bt_\be_\bV_\ba_\bl_\bu_\be_\bs\n-void UpdateValues(T const &srcValues, U &dstValues, Index start=-1, Index end=-\n-1) const\n-Updates point values based on the control values.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b2_\b0_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n-Stencil table class wrapping the template for compatibility.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b2_\b7_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n-StencilTable(int numControlVerts, std::vector< int > const &offsets, std::\n-vector< int > const &sizes, std::vector< int > const &sources, std::vector<\n-float > const &weights, bool includeCoarseVerts, size_t firstOffset)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b2_\b8_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n-StencilTable(int numControlVerts)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b2_\b8_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bB_\ba_\bs_\be_\bT_\ba_\bb_\bl_\be\n-StencilTableReal< float > BaseTable\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b2_\b7_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl\n-Stencil GetStencil(Index index) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b2_\b7_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]\n-Stencil operator[](Index index) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b2_\b8_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n-StencilTable()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b2_\b8_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl\n-Limit point stencil descriptor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b3_\b0_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b:_\b:_\bG_\be_\bt_\bD_\bu_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs\n-REAL const * GetDuvWeights() const\n-Returns the uv derivative weights.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b3_\b5_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b:_\b:_\bG_\be_\bt_\bD_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs\n-REAL const * GetDvWeights() const\n-Returns the v derivative weights.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b3_\b4_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b:_\b:_\bN_\be_\bx_\bt\n-void Next()\n-Advance to the next stencil in the table.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b3_\b6_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b:_\b:_\bG_\be_\bt_\bD_\bv_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs\n-REAL const * GetDvvWeights() const\n-Returns the vv derivative weights.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b3_\b6_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl\n-LimitStencilReal(int *size, Index *indices, REAL *weights, REAL *duWeights=0,\n-REAL *dvWeights=0, REAL *duuWeights=0, REAL *duvWeights=0, REAL *dvvWeights=0)\n-Constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b3_\b2_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b:_\b:_\bG_\be_\bt_\bD_\bu_\bW_\be_\bi_\bg_\bh_\bt_\bs\n-REAL const * GetDuWeights() const\n-Returns the u derivative weights.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b3_\b4_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b:_\b:_\bG_\be_\bt_\bD_\bu_\bu_\bW_\be_\bi_\bg_\bh_\bt_\bs\n-REAL const * GetDuuWeights() const\n-Returns the uu derivative weights.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b3_\b5_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl\n-Limit point stencil class wrapping the template for compatibility.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b3_\b9_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl\n-LimitStencil(BaseStencil const &other)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b3_\b9_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\b:_\b:_\bB_\ba_\bs_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl\n-LimitStencilReal< float > BaseStencil\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b3_\b9_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl\n-LimitStencil(int *size, Index *indices, float *weights, float *duWeights=0,\n-float *dvWeights=0, float *duuWeights=0, float *duvWeights=0, float\n-*dvvWeights=0)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b3_\b9_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl\n-Table of limit subdivision stencils.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b4_\b0_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bG_\be_\bt_\bD_\bu_\bu_\bW_\be_\bi_\bg_\bh_\bt_\bs\n-std::vector< REAL > const & GetDuuWeights() const\n-Returns the 'uu' derivative stencil interpolation weights.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b4_\b4_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]\n-LimitStencilReal< REAL > operator[](Index index) const\n-Returns the limit stencil at index i in the table.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b8_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bG_\be_\bt_\bD_\bv_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs\n-std::vector< REAL > const & GetDvvWeights() const\n-Returns the 'vv' derivative stencil interpolation weights.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b4_\b5_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bU_\bp_\bd_\ba_\bt_\be_\bD_\be_\br_\bi_\bv_\bs\n-void UpdateDerivs(T const *src, U *uderivs, U *vderivs, int start=-1, int end=-\n-1) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b4_\b9_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bU_\bp_\bd_\ba_\bt_\be_\b2_\bn_\bd_\bD_\be_\br_\bi_\bv_\bs\n-void Update2ndDerivs(T const *src, T *uuderivs, U *uvderivs, U *vvderivs, int\n-start=-1, int end=-1) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b4_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bG_\be_\bt_\bD_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs\n-std::vector< REAL > const & GetDvWeights() const\n-Returns the 'v' derivative stencil interpolation weights.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b4_\b3_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bU_\bp_\bd_\ba_\bt_\be_\b2_\bn_\bd_\bD_\be_\br_\bi_\bv_\bs\n-void Update2ndDerivs(T1 const *srcBase, int numBase, T2 const *srcRef, U\n-*uuderivs, U *uvderivs, U *vvderivs, int start=-1, int end=-1) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b5_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bU_\bp_\bd_\ba_\bt_\be_\bD_\be_\br_\bi_\bv_\bs\n-void UpdateDerivs(T const &srcValues, U &uderivs, U &vderivs, int start=-1, int\n-end=-1) const\n-Updates derivative values based on the control values.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b4_\b7_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bG_\be_\bt_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl\n-LimitStencilReal< REAL > GetLimitStencil(Index i) const\n-Returns a LimitStencil at index i in the table.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b4_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:\n-_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl\n-LimitStencilTableReal(int numControlVerts, std::vector< int > const &offsets,\n-std::vector< int > const &sizes, std::vector< int > const &sources, std::\n-vector< REAL > const &weights, std::vector< REAL > const &duWeights, std::\n-vector< REAL > const &dvWeights, std::vector< REAL > const &duuWeights, std::\n-vector< REAL > const &duvWeights, std::vector< REAL > const &dvvWeights, bool\n-includeCoarseVerts, size_t firstOffset)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bU_\bp_\bd_\ba_\bt_\be_\b2_\bn_\bd_\bD_\be_\br_\bi_\bv_\bs\n-void Update2ndDerivs(T const &srcValues, U &uuderivs, U &uvderivs, U &vvderivs,\n-int start=-1, int end=-1) const\n-Updates 2nd derivative values based on the control values.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b2_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bG_\be_\bt_\bD_\bu_\bW_\be_\bi_\bg_\bh_\bt_\bs\n-std::vector< REAL > const & GetDuWeights() const\n-Returns the 'u' derivative stencil interpolation weights.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b4_\b3_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bC_\bl_\be_\ba_\br\n-void Clear()\n-Clears the stencils from the table.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bU_\bp_\bd_\ba_\bt_\be_\b2_\bn_\bd_\bD_\be_\br_\bi_\bv_\bs\n-void Update2ndDerivs(T1 const &srcBase, int numBase, T2 const &srcRef, U\n-&uuderivs, U &uvderivs, U &vvderivs, int start=-1, int end=-1) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b3_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bG_\be_\bt_\bD_\bu_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs\n-std::vector< REAL > const & GetDuvWeights() const\n-Returns the 'uv' derivative stencil interpolation weights.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b4_\b4_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bU_\bp_\bd_\ba_\bt_\be_\bD_\be_\br_\bi_\bv_\bs\n-void UpdateDerivs(T1 const &srcBase, int numBase, T2 const &srcRef, U &uderivs,\n-U &vderivs, int start=-1, int end=-1) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b4_\b8_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bU_\bp_\bd_\ba_\bt_\be_\bD_\be_\br_\bi_\bv_\bs\n-void UpdateDerivs(T1 const *srcBase, int numBase, T2 const *srcRef, U *uderivs,\n-U *vderivs, int start=-1, int end=-1) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b0_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n-Limit stencil table class wrapping the template for compatibility.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b8_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bB_\ba_\bs_\be_\bT_\ba_\bb_\bl_\be\n-LimitStencilTableReal< float > BaseTable\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b8_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl\n-LimitStencil GetLimitStencil(Index index) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b8_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n-LimitStencilTable(int numControlVerts, std::vector< int > const &offsets, std::\n-vector< int > const &sizes, std::vector< int > const &sources, std::vector<\n-float > const &weights, std::vector< float > const &duWeights, std::vector<\n-float > const &dvWeights, std::vector< float > const &duuWeights, std::vector<\n-float > const &duvWeights, std::vector< float > const &dvvWeights, bool\n-includeCoarseVerts, size_t firstOffset)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b9_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]\n-LimitStencil operator[](Index index) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b9_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+void TbbEvalPatches(float const *src, BufferDescriptor const &srcDesc, float\n+*dst, BufferDescriptor const &dstDesc, float *dstDu, BufferDescriptor const\n+&dstDuDesc, float *dstDv, BufferDescriptor const &dstDvDesc, int\n+numPatchCoords, const PatchCoord *patchCoords, const PatchArray\n+*patchArrayBuffer, const int *patchIndexBuffer, const PatchParam\n+*patchParamBuffer)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+void TbbEvalStencils(float const *src, BufferDescriptor const &srcDesc, float\n+*dst, BufferDescriptor const &dstDesc, int const *sizes, int const *offsets,\n+int const *indices, float const *weights, int start, int end)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n+BufferDescriptor is a struct which describes buffer elements in interleaved\n+data buffers....\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b6_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd\n+Coordinates set on a patch table.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b4_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b6_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b1_\b2_\b7\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bf_\ba_\br\n-    * _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bt_\bb_\bb_\bK_\be_\br_\bn_\be_\bl_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00761.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00761.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/far/patchTable.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/osd/ompKernel.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -88,50 +88,45 @@\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n-<a href=\"#nested-classes\">Classes</a> &#124;\n-<a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">patchTable.h File Reference</div></div>\n+<a href=\"#namespaces\">Namespaces</a> &#124;\n+<a href=\"#func-members\">Functions</a>  </div>\n+  <div class=\"headertitle\"><div class=\"title\">ompKernel.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00773_source.html\">../far/patchDescriptor.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00755_source.html\">../far/patchParam.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00758_source.html\">../far/stencilTable.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00734_source.html\">../sdc/options.h</a>&quot;</code><br />\n-<code>#include &lt;vector&gt;</code><br />\n </div>\n <p><a href=\"a00761_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n-<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n-Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00993.html\">PatchTable</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Container for arrays of parametric patches.  <a href=\"a00993.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00997.html\">PatchTable::PatchHandle</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Handle that can be used as unique patch identifier within <a class=\"el\" href=\"a00993.html\" title=\"Container for arrays of parametric patches.\">PatchTable</a>.  <a href=\"a00997.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-</table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far</a></td></tr>\n+<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+</table><table class=\"memberdecls\">\n+<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\n+Functions</h2></td></tr>\n+<tr class=\"memitem:a870745ff3e883b32547d4db42b3be2bd\" id=\"r_a870745ff3e883b32547d4db42b3be2bd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html#a870745ff3e883b32547d4db42b3be2bd\">OmpEvalStencils</a> (float const *src, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;srcDesc, float *dst, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDesc, int const *sizes, int const *offsets, int const *indices, float const *weights, int start, int end)</td></tr>\n+<tr class=\"separator:a870745ff3e883b32547d4db42b3be2bd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:a907dc53421460557871ddc35f77751f5\" id=\"r_a907dc53421460557871ddc35f77751f5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html#a907dc53421460557871ddc35f77751f5\">OmpEvalStencils</a> (float const *src, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;srcDesc, float *dst, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDesc, float *dstDu, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDuDesc, float *dstDv, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDvDesc, int const *sizes, int const *offsets, int const *indices, float const *weights, float const *duWeights, float const *dvWeights, int start, int end)</td></tr>\n+<tr class=\"separator:a907dc53421460557871ddc35f77751f5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:a44a05502feb5015035bc81b93cffb99c\" id=\"r_a44a05502feb5015035bc81b93cffb99c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html#a44a05502feb5015035bc81b93cffb99c\">OmpEvalStencils</a> (float const *src, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;srcDesc, float *dst, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDesc, float *dstDu, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDuDesc, float *dstDv, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDvDesc, float *dstDuu, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDuuDesc, float *dstDuv, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDuvDesc, float *dstDvv, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDvvDesc, int const *sizes, int const *offsets, int const *indices, float const *weights, float const *duWeights, float const *dvWeights, float const *duuWeights, float const *duvWeights, float const *dvvWeights, int start, int end)</td></tr>\n+<tr class=\"separator:a44a05502feb5015035bc81b93cffb99c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7f420b72a822828cfa8b0561c695a5cc.html\">far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00761.html\">patchTable.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00761.html\">ompKernel.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,32 +1,41 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-patchTable.h File Reference\n+_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n+ompKernel.h File Reference\n #include \"../version.h\"\n-#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh\"\n-#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b._\bh\"\n-#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh\"\n-#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh\"\n-#include <vector>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n-C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n-\u00a0       Container for arrays of parametric patches. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be\n-\u00a0       Handle that can be used as unique patch identifier within _\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be.\n-        _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n+\u00a0\n+F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n+void\u00a0 _\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs (float const *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc, float\n+      *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc, int const *sizes, int const\n+      *offsets, int const *indices, float const *weights, int start, int end)\n+\u00a0\n+void\u00a0 _\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs (float const *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc, float\n+      *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc, float *dstDu, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n+      const &dstDuDesc, float *dstDv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDvDesc, int\n+      const *sizes, int const *offsets, int const *indices, float const\n+      *weights, float const *duWeights, float const *dvWeights, int start, int\n+      end)\n+\u00a0\n+void\u00a0 _\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs (float const *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc, float\n+      *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc, float *dstDu, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n+      const &dstDuDesc, float *dstDv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDvDesc, float\n+      *dstDuu, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDuuDesc, float *dstDuv,\n+      _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDuvDesc, float *dstDvv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const\n+      &dstDvvDesc, int const *sizes, int const *offsets, int const *indices,\n+      float const *weights, float const *duWeights, float const *dvWeights,\n+      float const *duuWeights, float const *duvWeights, float const\n+      *dvvWeights, int start, int end)\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bf_\ba_\br\n-    * _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bo_\bm_\bp_\bK_\be_\br_\bn_\be_\bl_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00761.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00761.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,4 +1,5 @@\n var a00761 = [\n-    [\"PatchTable\", \"a00993.html\", \"a00993\"],\n-    [\"PatchHandle\", \"a00997.html\", \"a00997\"]\n+    [\"OmpEvalStencils\", \"a00761.html#a44a05502feb5015035bc81b93cffb99c\", null],\n+    [\"OmpEvalStencils\", \"a00761.html#a907dc53421460557871ddc35f77751f5\", null],\n+    [\"OmpEvalStencils\", \"a00761.html#a870745ff3e883b32547d4db42b3be2bd\", null]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00761_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00761_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/far/patchTable.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/osd/ompKernel.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,15 +92,15 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">patchTable.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">ompKernel.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00761.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2013 Pixar</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n@@ -119,798 +119,82 @@\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_FAR_PATCH_TABLE_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_FAR_PATCH_TABLE_H</span></div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_OMP_KERNEL_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_OMP_KERNEL_H</span></div>\n <div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n <div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n <div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../far/patchDescriptor.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../far/patchParam.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &quot;../far/stencilTable.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"preprocessor\">#include &quot;../sdc/options.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span> </div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span> </div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span> </div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"keyword\">namespace </span>Far {</div>\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00055\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html\">   55</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a00993.html\">PatchTable</a> {</div>\n-<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span> </div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span> </div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"keyword\">namespace </span>Osd {</div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span> </div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">struct </span>BufferDescriptor;</div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keywordtype\">void</span></div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html#a870745ff3e883b32547d4db42b3be2bd\">   38</a></span><a class=\"code hl_function\" href=\"a00912.html#a870745ff3e883b32547d4db42b3be2bd\">OmpEvalStencils</a>(<span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span>                <span class=\"keywordtype\">float</span> * dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span>                <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> * sizes,</div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span>                <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> * offsets,</div>\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span>                <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> * indices,</div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span>                <span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * weights,</div>\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span>                <span class=\"keywordtype\">int</span> start, <span class=\"keywordtype\">int</span> end);</div>\n+<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span> </div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span><span class=\"keywordtype\">void</span></div>\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html#a907dc53421460557871ddc35f77751f5\">   47</a></span><a class=\"code hl_function\" href=\"a00912.html#a870745ff3e883b32547d4db42b3be2bd\">OmpEvalStencils</a>(<span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span>                <span class=\"keywordtype\">float</span> * dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span>                <span class=\"keywordtype\">float</span> * dstDu,     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDuDesc,</div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span>                <span class=\"keywordtype\">float</span> * dstDv,     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDvDesc,</div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span>                <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> * sizes,</div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span>                <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> * offsets,</div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span>                <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> * indices,</div>\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span>                <span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * weights,</div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span>                <span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * duWeights,</div>\n+<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span>                <span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * dvWeights,</div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span>                <span class=\"keywordtype\">int</span> start, <span class=\"keywordtype\">int</span> end);</div>\n <div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00060\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00997.html\">   60</a></span>    <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a00997.html\">PatchHandle</a> {</div>\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span>    <span class=\"comment\">// XXXX manuelk members will eventually be made private</span></div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span>    <span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span> </div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00997.html#ad4867d502f9704b7e45a7974e8918dc3\">   64</a></span>        <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a00993.html\">PatchTable</a>;</div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00997.html#aff380d8d7f072959898c0a4e25150d2a\">   65</a></span>        <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a00977.html\">PatchMap</a>;</div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span> </div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00997.html#a4430ecde7e1d784b2bef6dc4c2ff04c2\">   67</a></span>        <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> <a class=\"code hl_variable\" href=\"a00997.html#a4430ecde7e1d784b2bef6dc4c2ff04c2\">arrayIndex</a>, <span class=\"comment\">// Array index of the patch</span></div>\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00997.html#a31bdf15525ab73560c2b725ff7f8ae3a\">   68</a></span>              <a class=\"code hl_variable\" href=\"a00997.html#a31bdf15525ab73560c2b725ff7f8ae3a\">patchIndex</a>, <span class=\"comment\">// Absolute Index of the patch</span></div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00997.html#a46d1a8129375c3ee40a33a81d44b685a\">   69</a></span>              <a class=\"code hl_variable\" href=\"a00997.html#a46d1a8129375c3ee40a33a81d44b685a\">vertIndex</a>;  <span class=\"comment\">// Relative offset to the first CV of the patch in array</span></div>\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span>    };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span> </div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span> </div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a3419c5d57330d6787f8c14a7677b8d9b\">   75</a></span>    <a class=\"code hl_function\" href=\"a00993.html#a3419c5d57330d6787f8c14a7677b8d9b\">PatchTable</a>(<a class=\"code hl_class\" href=\"a00993.html\">PatchTable</a> <span class=\"keyword\">const</span> &amp; src);</div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span> </div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a5cbd789bd429e35377db5f4c97701874\">   78</a></span>    <a class=\"code hl_function\" href=\"a00993.html#a5cbd789bd429e35377db5f4c97701874\">~PatchTable</a>();</div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span><span class=\"keywordtype\">void</span></div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html#a44a05502feb5015035bc81b93cffb99c\">   60</a></span><a class=\"code hl_function\" href=\"a00912.html#a870745ff3e883b32547d4db42b3be2bd\">OmpEvalStencils</a>(<span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span>                <span class=\"keywordtype\">float</span> * dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span>                <span class=\"keywordtype\">float</span> * dstDu,     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDuDesc,</div>\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>                <span class=\"keywordtype\">float</span> * dstDv,     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDvDesc,</div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span>                <span class=\"keywordtype\">float</span> * dstDuu,    <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDuuDesc,</div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span>                <span class=\"keywordtype\">float</span> * dstDuv,    <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDuvDesc,</div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span>                <span class=\"keywordtype\">float</span> * dstDvv,    <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDvvDesc,</div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span>                <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> * sizes,</div>\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span>                <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> * offsets,</div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span>                <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> * indices,</div>\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span>                <span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * weights,</div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>                <span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * duWeights,</div>\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>                <span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * dvWeights,</div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span>                <span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * duuWeights,</div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span>                <span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * duvWeights,</div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span>                <span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * dvvWeights,</div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span>                <span class=\"keywordtype\">int</span> start, <span class=\"keywordtype\">int</span> end);</div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span> </div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span>} <span class=\"comment\">// end namespace Osd</span></div>\n <div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span> </div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a11c0f8be31c18b856cf9cdea511e54de\">   81</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00993.html#a11c0f8be31c18b856cf9cdea511e54de\">IsFeatureAdaptive</a>() <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span>}  <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n <div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00084\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#aa7d301570e6f7b39e1eaa546e2937018\">   84</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00993.html#aa7d301570e6f7b39e1eaa546e2937018\">GetNumControlVerticesTotal</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>        <span class=\"keywordflow\">return</span> (<span class=\"keywordtype\">int</span>)_patchVerts.size();</div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span> </div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#ac39a9665667b0a4fcc7ed028b7faaa47\">   89</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00993.html#ac39a9665667b0a4fcc7ed028b7faaa47\">GetNumPatchesTotal</a>() <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span> </div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a14bf987459715b918b370247bb24a61c\">   92</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00993.html#a14bf987459715b918b370247bb24a61c\">GetMaxValence</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _maxValence; }</div>\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span> </div>\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#ab45dd46b44737845ca57f634f11f1bbc\">   95</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00993.html#ab45dd46b44737845ca57f634f11f1bbc\">GetNumPtexFaces</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _numPtexFaces; }</div>\n-<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span> </div>\n-<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span> </div>\n-<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span> </div>\n-<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span> </div>\n-<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a9373bf15eaee019dd08099d05515e080\">  107</a></span>    <a class=\"code hl_class\" href=\"a00973.html\">PatchDescriptor</a> <a class=\"code hl_function\" href=\"a00993.html#a9373bf15eaee019dd08099d05515e080\">GetPatchDescriptor</a>(<a class=\"code hl_class\" href=\"a00997.html\">PatchHandle</a> <span class=\"keyword\">const</span> &amp; handle) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span> </div>\n-<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a37804f17e707ef64a7f165d15b6cf013\">  110</a></span>    <a class=\"code hl_class\" href=\"a01353.html\">ConstIndexArray</a> <a class=\"code hl_function\" href=\"a00993.html#a37804f17e707ef64a7f165d15b6cf013\">GetPatchVertices</a>(<a class=\"code hl_class\" href=\"a00997.html\">PatchHandle</a> <span class=\"keyword\">const</span> &amp; handle) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span> </div>\n-<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#ac44a6262548ebebae9bbc5b5f3c43e3a\">  113</a></span>    <a class=\"code hl_struct\" href=\"a00989.html\">PatchParam</a> <a class=\"code hl_function\" href=\"a00993.html#ac44a6262548ebebae9bbc5b5f3c43e3a\">GetPatchParam</a>(<a class=\"code hl_class\" href=\"a00997.html\">PatchHandle</a> <span class=\"keyword\">const</span> &amp; handle) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span> </div>\n-<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#ad897fbe60d2921cfbf5e1bed8760d49f\">  116</a></span>    <a class=\"code hl_class\" href=\"a01353.html\">ConstIndexArray</a> <a class=\"code hl_function\" href=\"a00993.html#ad897fbe60d2921cfbf5e1bed8760d49f\">GetPatchVertices</a>(<span class=\"keywordtype\">int</span> array, <span class=\"keywordtype\">int</span> patch) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span> </div>\n-<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a8c1242bf6bffa416c2e172a02f3ee31c\">  119</a></span>    <a class=\"code hl_struct\" href=\"a00989.html\">PatchParam</a> <a class=\"code hl_function\" href=\"a00993.html#a8c1242bf6bffa416c2e172a02f3ee31c\">GetPatchParam</a>(<span class=\"keywordtype\">int</span> array, <span class=\"keywordtype\">int</span> patch) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\">  121</span> </div>\n-<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span> </div>\n-<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span> </div>\n-<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span> </div>\n-<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a3432d7022e415ef661ccd6726ed3743f\">  132</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00993.html#a3432d7022e415ef661ccd6726ed3743f\">GetNumPatchArrays</a>() <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\">  133</span> </div>\n-<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a9d7d8d4411b09211fbf901cb7564df4c\">  135</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00993.html#a9d7d8d4411b09211fbf901cb7564df4c\">GetNumPatches</a>(<span class=\"keywordtype\">int</span> array) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\">  136</span> </div>\n-<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a5b32465be706d80f4fac5ea05e3e0ded\">  138</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00993.html#a5b32465be706d80f4fac5ea05e3e0ded\">GetNumControlVertices</a>(<span class=\"keywordtype\">int</span> array) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\">  139</span> </div>\n-<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#ad2744ba943362370738d6bd8448cd779\">  141</a></span>    <a class=\"code hl_class\" href=\"a00973.html\">PatchDescriptor</a> <a class=\"code hl_function\" href=\"a00993.html#ad2744ba943362370738d6bd8448cd779\">GetPatchArrayDescriptor</a>(<span class=\"keywordtype\">int</span> array) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span> </div>\n-<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#ab3133704d2b372da1204e6650d4800ee\">  144</a></span>    <a class=\"code hl_class\" href=\"a01353.html\">ConstIndexArray</a> <a class=\"code hl_function\" href=\"a00993.html#ab3133704d2b372da1204e6650d4800ee\">GetPatchArrayVertices</a>(<span class=\"keywordtype\">int</span> array) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\">  145</span> </div>\n-<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#aa3dd3f4235b25b5feca23351835207b5\">  147</a></span>    <a class=\"code hl_class\" href=\"a01353.html\">ConstPatchParamArray</a> <span class=\"keyword\">const</span> <a class=\"code hl_function\" href=\"a00993.html#aa3dd3f4235b25b5feca23351835207b5\">GetPatchParams</a>(<span class=\"keywordtype\">int</span> array) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\">  149</span> </div>\n-<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\">  150</span> </div>\n-<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\">  152</span> </div>\n-<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\">  159</span> </div>\n-<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#ab15bba670f52d55d19967104b95b9024\">  161</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00993.html#ab15bba670f52d55d19967104b95b9024\">GetNumLocalPoints</a>() <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\">  162</span> </div>\n-<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\">  164</span>    <a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const</span> *<a class=\"code hl_function\" href=\"a00993.html#a1d27edb01bfb68ba50776b25aa437783\">GetLocalPointStencilTable</a>() <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\">  165</span> </div>\n-<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\">  167</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a1c85ed58e2e3362dd22fbdb815f2c5a3\">  168</a></span>    <a class=\"code hl_class\" href=\"a01061.html\">StencilTableReal&lt;REAL&gt;</a> <span class=\"keyword\">const</span> *<a class=\"code hl_function\" href=\"a00993.html#a1c85ed58e2e3362dd22fbdb815f2c5a3\">GetLocalPointStencilTable</a>() <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\">  169</span> </div>\n-<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#ae7d9c513e950df25aebfeed309666764\">  172</a></span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt; <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00993.html#ae7d9c513e950df25aebfeed309666764\">LocalPointStencilPrecisionMatchesType</a>() <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\">  173</span> </div>\n-<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\">  186</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T&gt; <span class=\"keywordtype\">void</span></div>\n-<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\">  187</span>    <a class=\"code hl_function\" href=\"a00993.html#a7dcb88c32ded6c233f129d7b6fb7a159\">ComputeLocalPointValues</a>(T <span class=\"keyword\">const</span> *src, T *dst) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\">  188</span> </div>\n-<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\">  189</span> </div>\n-<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#adf2a870e7fccf780894d17160b7967f0\">  191</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00993.html#adf2a870e7fccf780894d17160b7967f0\">GetNumLocalPointsVarying</a>() <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\">  192</span> </div>\n-<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\">  194</span>    <a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const</span> *<a class=\"code hl_function\" href=\"a00993.html#ad6bafe91da1dcf5b8fb1f7c8cb4ed619\">GetLocalPointVaryingStencilTable</a>() <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\">  195</span> </div>\n-<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\">  197</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#af903f44e0f0743652b5f465ff60492a2\">  198</a></span>    <a class=\"code hl_class\" href=\"a01061.html\">StencilTableReal&lt;REAL&gt;</a> <span class=\"keyword\">const</span> *<a class=\"code hl_function\" href=\"a00993.html#af903f44e0f0743652b5f465ff60492a2\">GetLocalPointVaryingStencilTable</a>() <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\">  199</span> </div>\n-<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#ab181437e35cfc57ef3efdd368bb51a69\">  202</a></span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt; <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00993.html#ab181437e35cfc57ef3efdd368bb51a69\">LocalPointVaryingStencilPrecisionMatchesType</a>() <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\">  203</span> </div>\n-<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\">  216</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T&gt; <span class=\"keywordtype\">void</span></div>\n-<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\">  217</span>    <a class=\"code hl_function\" href=\"a00993.html#a08ccda63d26e5b06957be5f5eec75d01\">ComputeLocalPointValuesVarying</a>(T <span class=\"keyword\">const</span> *src, T *dst) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\">  218</span> </div>\n-<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\">  219</span> </div>\n-<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#afc91733be6989f2f18c4817fc43ab070\">  221</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00993.html#afc91733be6989f2f18c4817fc43ab070\">GetNumLocalPointsFaceVarying</a>(<span class=\"keywordtype\">int</span> channel = 0) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\">  222</span> </div>\n-<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\">  224</span>    <a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const</span> *<a class=\"code hl_function\" href=\"a00993.html#a523e2a6f899aede5166441b14efa348a\">GetLocalPointFaceVaryingStencilTable</a>(<span class=\"keywordtype\">int</span> channel = 0) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\">  225</span> </div>\n-<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\">  227</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#ac176593fac078b4f7dd4801d586d6c41\">  228</a></span>    <a class=\"code hl_class\" href=\"a01061.html\">StencilTableReal&lt;REAL&gt;</a> <span class=\"keyword\">const</span> * <a class=\"code hl_function\" href=\"a00993.html#ac176593fac078b4f7dd4801d586d6c41\">GetLocalPointFaceVaryingStencilTable</a>(<span class=\"keywordtype\">int</span> channel = 0) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\">  229</span> </div>\n-<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a38d50a271b91fe5b1a9f11904d06ce49\">  232</a></span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt; <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00993.html#a38d50a271b91fe5b1a9f11904d06ce49\">LocalPointFaceVaryingStencilPrecisionMatchesType</a>() <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\">  233</span> </div>\n-<div class=\"line\"><a id=\"l00248\" name=\"l00248\"></a><span class=\"lineno\">  248</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T&gt; <span class=\"keywordtype\">void</span></div>\n-<div class=\"line\"><a id=\"l00249\" name=\"l00249\"></a><span class=\"lineno\">  249</span>    <a class=\"code hl_function\" href=\"a00993.html#a059c9506f9ef8ebf24a68fc298be58be\">ComputeLocalPointValuesFaceVarying</a>(T <span class=\"keyword\">const</span> *src, T *dst, <span class=\"keywordtype\">int</span> channel = 0) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00251\" name=\"l00251\"></a><span class=\"lineno\">  251</span> </div>\n-<div class=\"line\"><a id=\"l00252\" name=\"l00252\"></a><span class=\"lineno\">  252</span> </div>\n-<div class=\"line\"><a id=\"l00254\" name=\"l00254\"></a><span class=\"lineno\">  254</span> </div>\n-<div class=\"line\"><a id=\"l00255\" name=\"l00255\"></a><span class=\"lineno\">  255</span> </div>\n-<div class=\"line\"><a id=\"l00259\" name=\"l00259\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#ab72c4254f74c932eeb7d7b08805932c5\">  259</a></span>    <span class=\"keyword\">typedef</span> <a class=\"code hl_class\" href=\"a01353.html\">Vtr::ConstArray&lt;unsigned int&gt;</a> <a class=\"code hl_typedef\" href=\"a00993.html#ab72c4254f74c932eeb7d7b08805932c5\">ConstQuadOffsetsArray</a>;</div>\n-<div class=\"line\"><a id=\"l00260\" name=\"l00260\"></a><span class=\"lineno\">  260</span> </div>\n-<div class=\"line\"><a id=\"l00262\" name=\"l00262\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a68a029efbad55b2fd991d29aa37a7c28\">  262</a></span>    <a class=\"code hl_class\" href=\"a01353.html\">ConstQuadOffsetsArray</a> <a class=\"code hl_function\" href=\"a00993.html#a68a029efbad55b2fd991d29aa37a7c28\">GetPatchQuadOffsets</a>(<a class=\"code hl_class\" href=\"a00997.html\">PatchHandle</a> <span class=\"keyword\">const</span> &amp; handle) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00263\" name=\"l00263\"></a><span class=\"lineno\">  263</span> </div>\n-<div class=\"line\"><a id=\"l00264\" name=\"l00264\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a2fbf111cac9d122eeaec5c0cb73fa77d\">  264</a></span>    <span class=\"keyword\">typedef</span> std::vector&lt;Index&gt; <a class=\"code hl_typedef\" href=\"a00993.html#a2fbf111cac9d122eeaec5c0cb73fa77d\">VertexValenceTable</a>;</div>\n-<div class=\"line\"><a id=\"l00265\" name=\"l00265\"></a><span class=\"lineno\">  265</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00267\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00267\" name=\"l00267\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a442f93101ba3ac94d07f1d9ceb1cdcd6\">  267</a></span>    <a class=\"code hl_typedef\" href=\"a00993.html#a2fbf111cac9d122eeaec5c0cb73fa77d\">VertexValenceTable</a> <span class=\"keyword\">const</span> &amp; <a class=\"code hl_function\" href=\"a00993.html#a442f93101ba3ac94d07f1d9ceb1cdcd6\">GetVertexValenceTable</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00268\" name=\"l00268\"></a><span class=\"lineno\">  268</span>        <span class=\"keywordflow\">return</span> _vertexValenceTable;</div>\n-<div class=\"line\"><a id=\"l00269\" name=\"l00269\"></a><span class=\"lineno\">  269</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00271\" name=\"l00271\"></a><span class=\"lineno\">  271</span> </div>\n-<div class=\"line\"><a id=\"l00272\" name=\"l00272\"></a><span class=\"lineno\">  272</span> </div>\n-<div class=\"line\"><a id=\"l00274\" name=\"l00274\"></a><span class=\"lineno\">  274</span> </div>\n-<div class=\"line\"><a id=\"l00280\" name=\"l00280\"></a><span class=\"lineno\">  280</span> </div>\n-<div class=\"line\"><a id=\"l00283\" name=\"l00283\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a875abc47934c4076304f3b9c4edde3cc\">  283</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"a00993.html#a875abc47934c4076304f3b9c4edde3cc\">GetSingleCreasePatchSharpnessValue</a>(<a class=\"code hl_class\" href=\"a00997.html\">PatchHandle</a> <span class=\"keyword\">const</span> &amp; handle) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00284\" name=\"l00284\"></a><span class=\"lineno\">  284</span> </div>\n-<div class=\"line\"><a id=\"l00287\" name=\"l00287\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a73752510551b8bda85fbc7f43e97730b\">  287</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"a00993.html#a73752510551b8bda85fbc7f43e97730b\">GetSingleCreasePatchSharpnessValue</a>(<span class=\"keywordtype\">int</span> array, <span class=\"keywordtype\">int</span> patch) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00289\" name=\"l00289\"></a><span class=\"lineno\">  289</span> </div>\n-<div class=\"line\"><a id=\"l00290\" name=\"l00290\"></a><span class=\"lineno\">  290</span> </div>\n-<div class=\"line\"><a id=\"l00292\" name=\"l00292\"></a><span class=\"lineno\">  292</span> </div>\n-<div class=\"line\"><a id=\"l00298\" name=\"l00298\"></a><span class=\"lineno\">  298</span> </div>\n-<div class=\"line\"><a id=\"l00300\" name=\"l00300\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a9f14d69df88fa663dcfdec990ec9e3f3\">  300</a></span>    <a class=\"code hl_class\" href=\"a00973.html\">PatchDescriptor</a> <a class=\"code hl_function\" href=\"a00993.html#a9f14d69df88fa663dcfdec990ec9e3f3\">GetVaryingPatchDescriptor</a>() <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00301\" name=\"l00301\"></a><span class=\"lineno\">  301</span> </div>\n-<div class=\"line\"><a id=\"l00303\" name=\"l00303\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a0cb33d03729931750660ebf58b9e89ec\">  303</a></span>    <a class=\"code hl_class\" href=\"a01353.html\">ConstIndexArray</a> <a class=\"code hl_function\" href=\"a00993.html#a0cb33d03729931750660ebf58b9e89ec\">GetPatchVaryingVertices</a>(<a class=\"code hl_class\" href=\"a00997.html\">PatchHandle</a> <span class=\"keyword\">const</span> &amp; handle) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00304\" name=\"l00304\"></a><span class=\"lineno\">  304</span> </div>\n-<div class=\"line\"><a id=\"l00306\" name=\"l00306\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a31b548d9f8334f3c4f9341eda3479982\">  306</a></span>    <a class=\"code hl_class\" href=\"a01353.html\">ConstIndexArray</a> <a class=\"code hl_function\" href=\"a00993.html#a31b548d9f8334f3c4f9341eda3479982\">GetPatchVaryingVertices</a>(<span class=\"keywordtype\">int</span> array, <span class=\"keywordtype\">int</span> patch) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\">  307</span> </div>\n-<div class=\"line\"><a id=\"l00309\" name=\"l00309\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a012069d0bc0036c1e2bb75bc2a170c58\">  309</a></span>    <a class=\"code hl_class\" href=\"a01353.html\">ConstIndexArray</a> <a class=\"code hl_function\" href=\"a00993.html#a012069d0bc0036c1e2bb75bc2a170c58\">GetPatchArrayVaryingVertices</a>(<span class=\"keywordtype\">int</span> array) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00310\" name=\"l00310\"></a><span class=\"lineno\">  310</span> </div>\n-<div class=\"line\"><a id=\"l00312\" name=\"l00312\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a062d31216b535f604b3bc4d69434270d\">  312</a></span>    <a class=\"code hl_class\" href=\"a01353.html\">ConstIndexArray</a> <a class=\"code hl_function\" href=\"a00993.html#a062d31216b535f604b3bc4d69434270d\">GetVaryingVertices</a>() <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00314\" name=\"l00314\"></a><span class=\"lineno\">  314</span> </div>\n-<div class=\"line\"><a id=\"l00315\" name=\"l00315\"></a><span class=\"lineno\">  315</span> </div>\n-<div class=\"line\"><a id=\"l00317\" name=\"l00317\"></a><span class=\"lineno\">  317</span> </div>\n-<div class=\"line\"><a id=\"l00323\" name=\"l00323\"></a><span class=\"lineno\">  323</span> </div>\n-<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#aa9be824a572029f3ec1e0c0d6cfecd77\">  325</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00993.html#aa9be824a572029f3ec1e0c0d6cfecd77\">GetNumFVarChannels</a>() <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\">  326</span> </div>\n-<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a90705c85d6b680933c93344c9804e4d6\">  328</a></span>    <a class=\"code hl_class\" href=\"a00973.html\">PatchDescriptor</a> <a class=\"code hl_function\" href=\"a00993.html#a90705c85d6b680933c93344c9804e4d6\">GetFVarPatchDescriptorRegular</a>(<span class=\"keywordtype\">int</span> channel = 0) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\">  329</span> </div>\n-<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a733ff80d6d940519b47091c58abbed34\">  331</a></span>    <a class=\"code hl_class\" href=\"a00973.html\">PatchDescriptor</a> <a class=\"code hl_function\" href=\"a00993.html#a733ff80d6d940519b47091c58abbed34\">GetFVarPatchDescriptorIrregular</a>(<span class=\"keywordtype\">int</span> channel = 0) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\">  332</span> </div>\n-<div class=\"line\"><a id=\"l00334\" name=\"l00334\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#adccd68da8d26bb5f5c2b7f29e0a14e89\">  334</a></span>    <a class=\"code hl_class\" href=\"a00973.html\">PatchDescriptor</a> <a class=\"code hl_function\" href=\"a00993.html#adccd68da8d26bb5f5c2b7f29e0a14e89\">GetFVarPatchDescriptor</a>(<span class=\"keywordtype\">int</span> channel = 0) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00335\" name=\"l00335\"></a><span class=\"lineno\">  335</span> </div>\n-<div class=\"line\"><a id=\"l00337\" name=\"l00337\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#aa3020b88381e6966efbe6c4febf8c04f\">  337</a></span>    <a class=\"code hl_class\" href=\"a01353.html\">ConstIndexArray</a> <a class=\"code hl_function\" href=\"a00993.html#aa3020b88381e6966efbe6c4febf8c04f\">GetPatchFVarValues</a>(<a class=\"code hl_class\" href=\"a00997.html\">PatchHandle</a> <span class=\"keyword\">const</span> &amp; handle, <span class=\"keywordtype\">int</span> channel = 0) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00338\" name=\"l00338\"></a><span class=\"lineno\">  338</span> </div>\n-<div class=\"line\"><a id=\"l00340\" name=\"l00340\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a8cc9b6bbaaecd1facf0cfae0853e3a60\">  340</a></span>    <a class=\"code hl_class\" href=\"a01353.html\">ConstIndexArray</a> <a class=\"code hl_function\" href=\"a00993.html#a8cc9b6bbaaecd1facf0cfae0853e3a60\">GetPatchFVarValues</a>(<span class=\"keywordtype\">int</span> array, <span class=\"keywordtype\">int</span> patch, <span class=\"keywordtype\">int</span> channel = 0) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00341\" name=\"l00341\"></a><span class=\"lineno\">  341</span> </div>\n-<div class=\"line\"><a id=\"l00343\" name=\"l00343\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a2a749eef1377f4f13a23c95e4038525d\">  343</a></span>    <a class=\"code hl_class\" href=\"a01353.html\">ConstIndexArray</a> <a class=\"code hl_function\" href=\"a00993.html#a2a749eef1377f4f13a23c95e4038525d\">GetPatchArrayFVarValues</a>(<span class=\"keywordtype\">int</span> array, <span class=\"keywordtype\">int</span> channel = 0) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00344\" name=\"l00344\"></a><span class=\"lineno\">  344</span> </div>\n-<div class=\"line\"><a id=\"l00346\" name=\"l00346\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#ab6810a0252d1c07b7459065c3dde2903\">  346</a></span>    <a class=\"code hl_class\" href=\"a01353.html\">ConstIndexArray</a> <a class=\"code hl_function\" href=\"a00993.html#ab6810a0252d1c07b7459065c3dde2903\">GetFVarValues</a>(<span class=\"keywordtype\">int</span> channel = 0) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00347\" name=\"l00347\"></a><span class=\"lineno\">  347</span> </div>\n-<div class=\"line\"><a id=\"l00349\" name=\"l00349\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#ad98dc91babcdddf20876169a70e10402\">  349</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00993.html#ad98dc91babcdddf20876169a70e10402\">GetFVarValueStride</a>(<span class=\"keywordtype\">int</span> channel = 0) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00350\" name=\"l00350\"></a><span class=\"lineno\">  350</span> </div>\n-<div class=\"line\"><a id=\"l00352\" name=\"l00352\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#ad9481ab788a82c6a48364fff6a8ab193\">  352</a></span>    <a class=\"code hl_struct\" href=\"a00989.html\">PatchParam</a> <a class=\"code hl_function\" href=\"a00993.html#ad9481ab788a82c6a48364fff6a8ab193\">GetPatchFVarPatchParam</a>(<a class=\"code hl_class\" href=\"a00997.html\">PatchHandle</a> <span class=\"keyword\">const</span> &amp; handle, <span class=\"keywordtype\">int</span> channel = 0) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00353\" name=\"l00353\"></a><span class=\"lineno\">  353</span> </div>\n-<div class=\"line\"><a id=\"l00355\" name=\"l00355\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a315fc19f788ba446560b2641186c393e\">  355</a></span>    <a class=\"code hl_struct\" href=\"a00989.html\">PatchParam</a> <a class=\"code hl_function\" href=\"a00993.html#a315fc19f788ba446560b2641186c393e\">GetPatchFVarPatchParam</a>(<span class=\"keywordtype\">int</span> array, <span class=\"keywordtype\">int</span> patch, <span class=\"keywordtype\">int</span> channel = 0) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00356\" name=\"l00356\"></a><span class=\"lineno\">  356</span> </div>\n-<div class=\"line\"><a id=\"l00358\" name=\"l00358\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#aa9e55389ca0f7adf332423216b31134d\">  358</a></span>    <a class=\"code hl_class\" href=\"a01353.html\">ConstPatchParamArray</a> <a class=\"code hl_function\" href=\"a00993.html#aa9e55389ca0f7adf332423216b31134d\">GetPatchArrayFVarPatchParams</a>(<span class=\"keywordtype\">int</span> array, <span class=\"keywordtype\">int</span> channel = 0) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00359\" name=\"l00359\"></a><span class=\"lineno\">  359</span> </div>\n-<div class=\"line\"><a id=\"l00361\" name=\"l00361\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#adb4260cb1d469935a32df5ad35d98bb4\">  361</a></span>    <a class=\"code hl_class\" href=\"a01353.html\">ConstPatchParamArray</a> <a class=\"code hl_function\" href=\"a00993.html#adb4260cb1d469935a32df5ad35d98bb4\">GetFVarPatchParams</a>(<span class=\"keywordtype\">int</span> channel = 0) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00362\" name=\"l00362\"></a><span class=\"lineno\">  362</span> </div>\n-<div class=\"line\"><a id=\"l00364\" name=\"l00364\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#ad0e821181a94f5019cc79b75d3eb74b6\">  364</a></span>    <a class=\"code hl_enumeration\" href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167b\">Sdc::Options::FVarLinearInterpolation</a> <a class=\"code hl_function\" href=\"a00993.html#ad0e821181a94f5019cc79b75d3eb74b6\">GetFVarChannelLinearInterpolation</a>(<span class=\"keywordtype\">int</span> channel = 0) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00366\" name=\"l00366\"></a><span class=\"lineno\">  366</span> </div>\n-<div class=\"line\"><a id=\"l00367\" name=\"l00367\"></a><span class=\"lineno\">  367</span> </div>\n-<div class=\"line\"><a id=\"l00369\" name=\"l00369\"></a><span class=\"lineno\">  369</span> </div>\n-<div class=\"line\"><a id=\"l00374\" name=\"l00374\"></a><span class=\"lineno\">  374</span> </div>\n-<div class=\"line\"><a id=\"l00375\" name=\"l00375\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a9484ab8a323750c2f639ee8709b1349b\">  375</a></span>    <span class=\"keyword\">typedef</span> std::vector&lt;Index&gt; <a class=\"code hl_typedef\" href=\"a00993.html#a9484ab8a323750c2f639ee8709b1349b\">PatchVertsTable</a>;</div>\n-<div class=\"line\"><a id=\"l00376\" name=\"l00376\"></a><span class=\"lineno\">  376</span> </div>\n-<div class=\"line\"><a id=\"l00378\" name=\"l00378\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a02ba6ac8fc716dd7349a8a1143319079\">  378</a></span>    <a class=\"code hl_typedef\" href=\"a00993.html#a9484ab8a323750c2f639ee8709b1349b\">PatchVertsTable</a> <span class=\"keyword\">const</span> &amp; <a class=\"code hl_function\" href=\"a00993.html#a02ba6ac8fc716dd7349a8a1143319079\">GetPatchControlVerticesTable</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _patchVerts; }</div>\n-<div class=\"line\"><a id=\"l00379\" name=\"l00379\"></a><span class=\"lineno\">  379</span> </div>\n-<div class=\"line\"><a id=\"l00381\" name=\"l00381\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a39cd14c1ae309f7fc7872b7b0d03dde3\">  381</a></span>    <a class=\"code hl_typedef\" href=\"a00908.html#a46ea68db89cc3d55c4191ef7648281ce\">PatchParamTable</a> <span class=\"keyword\">const</span> &amp; <a class=\"code hl_function\" href=\"a00993.html#a39cd14c1ae309f7fc7872b7b0d03dde3\">GetPatchParamTable</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _paramTable; }</div>\n-<div class=\"line\"><a id=\"l00382\" name=\"l00382\"></a><span class=\"lineno\">  382</span> </div>\n-<div class=\"line\"><a id=\"l00384\" name=\"l00384\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#ad173086439fbbf0412b86b3d1262847d\">  384</a></span>    std::vector&lt;Index&gt; <span class=\"keyword\">const</span> &amp;<a class=\"code hl_function\" href=\"a00993.html#ad173086439fbbf0412b86b3d1262847d\">GetSharpnessIndexTable</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _sharpnessIndices; }</div>\n-<div class=\"line\"><a id=\"l00385\" name=\"l00385\"></a><span class=\"lineno\">  385</span> </div>\n-<div class=\"line\"><a id=\"l00387\" name=\"l00387\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a2d2c7ac649a9a285741dfdc1ed3089b3\">  387</a></span>    std::vector&lt;float&gt; <span class=\"keyword\">const</span> &amp;<a class=\"code hl_function\" href=\"a00993.html#a2d2c7ac649a9a285741dfdc1ed3089b3\">GetSharpnessValues</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _sharpnessValues; }</div>\n-<div class=\"line\"><a id=\"l00388\" name=\"l00388\"></a><span class=\"lineno\">  388</span> </div>\n-<div class=\"line\"><a id=\"l00389\" name=\"l00389\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#ad71e6ae07059dc39b0550c98cfcee291\">  389</a></span>    <span class=\"keyword\">typedef</span> std::vector&lt;unsigned int&gt; <a class=\"code hl_typedef\" href=\"a00993.html#ad71e6ae07059dc39b0550c98cfcee291\">QuadOffsetsTable</a>;</div>\n-<div class=\"line\"><a id=\"l00390\" name=\"l00390\"></a><span class=\"lineno\">  390</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00392\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00392\" name=\"l00392\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a99b23eec59013306ea2f1df119a7574d\">  392</a></span>    <a class=\"code hl_typedef\" href=\"a00993.html#ad71e6ae07059dc39b0550c98cfcee291\">QuadOffsetsTable</a> <span class=\"keyword\">const</span> &amp; <a class=\"code hl_function\" href=\"a00993.html#a99b23eec59013306ea2f1df119a7574d\">GetQuadOffsetsTable</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00393\" name=\"l00393\"></a><span class=\"lineno\">  393</span>        <span class=\"keywordflow\">return</span> _quadOffsetsTable;</div>\n-<div class=\"line\"><a id=\"l00394\" name=\"l00394\"></a><span class=\"lineno\">  394</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00396\" name=\"l00396\"></a><span class=\"lineno\">  396</span> </div>\n-<div class=\"line\"><a id=\"l00398\" name=\"l00398\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#acd0f82d3c49b8a5dd436d4003c44b713\">  398</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00993.html#acd0f82d3c49b8a5dd436d4003c44b713\">print</a>() <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00399\" name=\"l00399\"></a><span class=\"lineno\">  399</span> </div>\n-<div class=\"line\"><a id=\"l00400\" name=\"l00400\"></a><span class=\"lineno\">  400</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00401\" name=\"l00401\"></a><span class=\"lineno\">  401</span> </div>\n-<div class=\"line\"><a id=\"l00403\" name=\"l00403\"></a><span class=\"lineno\">  403</span> </div>\n-<div class=\"line\"><a id=\"l00405\" name=\"l00405\"></a><span class=\"lineno\">  405</span> </div>\n-<div class=\"line\"><a id=\"l00428\" name=\"l00428\"></a><span class=\"lineno\">  428</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00429\" name=\"l00429\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#ab8a09f15edef57b9b4aed0d0d6183b75\">  429</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00993.html#ab8a09f15edef57b9b4aed0d0d6183b75\">EvaluateBasis</a>(<a class=\"code hl_class\" href=\"a00997.html\">PatchHandle</a> <span class=\"keyword\">const</span> &amp; handle, REAL u, REAL v,</div>\n-<div class=\"line\"><a id=\"l00430\" name=\"l00430\"></a><span class=\"lineno\">  430</span>        REAL wP[], REAL wDu[] = 0, REAL wDv[] = 0,</div>\n-<div class=\"line\"><a id=\"l00431\" name=\"l00431\"></a><span class=\"lineno\">  431</span>        REAL wDuu[] = 0, REAL wDuv[] = 0, REAL wDvv[] = 0) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00432\" name=\"l00432\"></a><span class=\"lineno\">  432</span> </div>\n-<div class=\"line\"><a id=\"l00435\" name=\"l00435\"></a><span class=\"lineno\">  435</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00993.html#ab8a09f15edef57b9b4aed0d0d6183b75\">EvaluateBasis</a>(<a class=\"code hl_class\" href=\"a00997.html\">PatchHandle</a> <span class=\"keyword\">const</span> &amp; handle, <span class=\"keywordtype\">float</span> u, <span class=\"keywordtype\">float</span> v,</div>\n-<div class=\"line\"><a id=\"l00436\" name=\"l00436\"></a><span class=\"lineno\">  436</span>        <span class=\"keywordtype\">float</span> wP[], <span class=\"keywordtype\">float</span> wDu[] = 0, <span class=\"keywordtype\">float</span> wDv[] = 0,</div>\n-<div class=\"line\"><a id=\"l00437\" name=\"l00437\"></a><span class=\"lineno\">  437</span>        <span class=\"keywordtype\">float</span> wDuu[] = 0, <span class=\"keywordtype\">float</span> wDuv[] = 0, <span class=\"keywordtype\">float</span> wDvv[] = 0) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00438\" name=\"l00438\"></a><span class=\"lineno\">  438</span> </div>\n-<div class=\"line\"><a id=\"l00441\" name=\"l00441\"></a><span class=\"lineno\">  441</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00993.html#ab8a09f15edef57b9b4aed0d0d6183b75\">EvaluateBasis</a>(<a class=\"code hl_class\" href=\"a00997.html\">PatchHandle</a> <span class=\"keyword\">const</span> &amp; handle, <span class=\"keywordtype\">double</span> u, <span class=\"keywordtype\">double</span> v,</div>\n-<div class=\"line\"><a id=\"l00442\" name=\"l00442\"></a><span class=\"lineno\">  442</span>        <span class=\"keywordtype\">double</span> wP[], <span class=\"keywordtype\">double</span> wDu[] = 0, <span class=\"keywordtype\">double</span> wDv[] = 0,</div>\n-<div class=\"line\"><a id=\"l00443\" name=\"l00443\"></a><span class=\"lineno\">  443</span>        <span class=\"keywordtype\">double</span> wDuu[] = 0, <span class=\"keywordtype\">double</span> wDuv[] = 0, <span class=\"keywordtype\">double</span> wDvv[] = 0) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00444\" name=\"l00444\"></a><span class=\"lineno\">  444</span> </div>\n-<div class=\"line\"><a id=\"l00467\" name=\"l00467\"></a><span class=\"lineno\">  467</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00468\" name=\"l00468\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#ad690cee703683b70def7a4419120cc9a\">  468</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00993.html#ad690cee703683b70def7a4419120cc9a\">EvaluateBasisVarying</a>(<a class=\"code hl_class\" href=\"a00997.html\">PatchHandle</a> <span class=\"keyword\">const</span> &amp; handle, REAL u, REAL v,</div>\n-<div class=\"line\"><a id=\"l00469\" name=\"l00469\"></a><span class=\"lineno\">  469</span>        REAL wP[], REAL wDu[] = 0, REAL wDv[] = 0,</div>\n-<div class=\"line\"><a id=\"l00470\" name=\"l00470\"></a><span class=\"lineno\">  470</span>        REAL wDuu[] = 0, REAL wDuv[] = 0, REAL wDvv[] = 0) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00471\" name=\"l00471\"></a><span class=\"lineno\">  471</span> </div>\n-<div class=\"line\"><a id=\"l00474\" name=\"l00474\"></a><span class=\"lineno\">  474</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00993.html#ad690cee703683b70def7a4419120cc9a\">EvaluateBasisVarying</a>(<a class=\"code hl_class\" href=\"a00997.html\">PatchHandle</a> <span class=\"keyword\">const</span> &amp; handle, <span class=\"keywordtype\">float</span> u, <span class=\"keywordtype\">float</span> v,</div>\n-<div class=\"line\"><a id=\"l00475\" name=\"l00475\"></a><span class=\"lineno\">  475</span>        <span class=\"keywordtype\">float</span> wP[], <span class=\"keywordtype\">float</span> wDu[] = 0, <span class=\"keywordtype\">float</span> wDv[] = 0,</div>\n-<div class=\"line\"><a id=\"l00476\" name=\"l00476\"></a><span class=\"lineno\">  476</span>        <span class=\"keywordtype\">float</span> wDuu[] = 0, <span class=\"keywordtype\">float</span> wDuv[] = 0, <span class=\"keywordtype\">float</span> wDvv[] = 0) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00477\" name=\"l00477\"></a><span class=\"lineno\">  477</span> </div>\n-<div class=\"line\"><a id=\"l00480\" name=\"l00480\"></a><span class=\"lineno\">  480</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00993.html#ad690cee703683b70def7a4419120cc9a\">EvaluateBasisVarying</a>(<a class=\"code hl_class\" href=\"a00997.html\">PatchHandle</a> <span class=\"keyword\">const</span> &amp; handle, <span class=\"keywordtype\">double</span> u, <span class=\"keywordtype\">double</span> v,</div>\n-<div class=\"line\"><a id=\"l00481\" name=\"l00481\"></a><span class=\"lineno\">  481</span>        <span class=\"keywordtype\">double</span> wP[], <span class=\"keywordtype\">double</span> wDu[] = 0, <span class=\"keywordtype\">double</span> wDv[] = 0,</div>\n-<div class=\"line\"><a id=\"l00482\" name=\"l00482\"></a><span class=\"lineno\">  482</span>        <span class=\"keywordtype\">double</span> wDuu[] = 0, <span class=\"keywordtype\">double</span> wDuv[] = 0, <span class=\"keywordtype\">double</span> wDvv[] = 0) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00483\" name=\"l00483\"></a><span class=\"lineno\">  483</span> </div>\n-<div class=\"line\"><a id=\"l00508\" name=\"l00508\"></a><span class=\"lineno\">  508</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00509\" name=\"l00509\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a64fe119d6034e4b1f39e81d39ad9dfc4\">  509</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00993.html#a64fe119d6034e4b1f39e81d39ad9dfc4\">EvaluateBasisFaceVarying</a>(<a class=\"code hl_class\" href=\"a00997.html\">PatchHandle</a> <span class=\"keyword\">const</span> &amp; handle, REAL u, REAL v,</div>\n-<div class=\"line\"><a id=\"l00510\" name=\"l00510\"></a><span class=\"lineno\">  510</span>        REAL wP[], REAL wDu[] = 0, REAL wDv[] = 0,</div>\n-<div class=\"line\"><a id=\"l00511\" name=\"l00511\"></a><span class=\"lineno\">  511</span>        REAL wDuu[] = 0, REAL wDuv[] = 0, REAL wDvv[] = 0,</div>\n-<div class=\"line\"><a id=\"l00512\" name=\"l00512\"></a><span class=\"lineno\">  512</span>        <span class=\"keywordtype\">int</span> channel = 0) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00513\" name=\"l00513\"></a><span class=\"lineno\">  513</span> </div>\n-<div class=\"line\"><a id=\"l00516\" name=\"l00516\"></a><span class=\"lineno\">  516</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00993.html#a64fe119d6034e4b1f39e81d39ad9dfc4\">EvaluateBasisFaceVarying</a>(<a class=\"code hl_class\" href=\"a00997.html\">PatchHandle</a> <span class=\"keyword\">const</span> &amp; handle, <span class=\"keywordtype\">float</span> u, <span class=\"keywordtype\">float</span> v,</div>\n-<div class=\"line\"><a id=\"l00517\" name=\"l00517\"></a><span class=\"lineno\">  517</span>        <span class=\"keywordtype\">float</span> wP[], <span class=\"keywordtype\">float</span> wDu[] = 0, <span class=\"keywordtype\">float</span> wDv[] = 0,</div>\n-<div class=\"line\"><a id=\"l00518\" name=\"l00518\"></a><span class=\"lineno\">  518</span>        <span class=\"keywordtype\">float</span> wDuu[] = 0, <span class=\"keywordtype\">float</span> wDuv[] = 0, <span class=\"keywordtype\">float</span> wDvv[] = 0,</div>\n-<div class=\"line\"><a id=\"l00519\" name=\"l00519\"></a><span class=\"lineno\">  519</span>        <span class=\"keywordtype\">int</span> channel = 0) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00520\" name=\"l00520\"></a><span class=\"lineno\">  520</span> </div>\n-<div class=\"line\"><a id=\"l00523\" name=\"l00523\"></a><span class=\"lineno\">  523</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00993.html#a64fe119d6034e4b1f39e81d39ad9dfc4\">EvaluateBasisFaceVarying</a>(<a class=\"code hl_class\" href=\"a00997.html\">PatchHandle</a> <span class=\"keyword\">const</span> &amp; handle, <span class=\"keywordtype\">double</span> u, <span class=\"keywordtype\">double</span> v,</div>\n-<div class=\"line\"><a id=\"l00524\" name=\"l00524\"></a><span class=\"lineno\">  524</span>        <span class=\"keywordtype\">double</span> wP[], <span class=\"keywordtype\">double</span> wDu[] = 0, <span class=\"keywordtype\">double</span> wDv[] = 0,</div>\n-<div class=\"line\"><a id=\"l00525\" name=\"l00525\"></a><span class=\"lineno\">  525</span>        <span class=\"keywordtype\">double</span> wDuu[] = 0, <span class=\"keywordtype\">double</span> wDuv[] = 0, <span class=\"keywordtype\">double</span> wDvv[] = 0,</div>\n-<div class=\"line\"><a id=\"l00526\" name=\"l00526\"></a><span class=\"lineno\">  526</span>        <span class=\"keywordtype\">int</span> channel = 0) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00528\" name=\"l00528\"></a><span class=\"lineno\">  528</span> </div>\n-<div class=\"line\"><a id=\"l00529\" name=\"l00529\"></a><span class=\"lineno\">  529</span><span class=\"keyword\">protected</span>:</div>\n-<div class=\"line\"><a id=\"l00530\" name=\"l00530\"></a><span class=\"lineno\">  530</span> </div>\n-<div class=\"line\"><a id=\"l00531\" name=\"l00531\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#ad452cef79832abb71eef0c3d88acc1a0\">  531</a></span>    <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span><a class=\"code hl_friend\" href=\"a00993.html#ad452cef79832abb71eef0c3d88acc1a0\">PatchTableBuilder</a>;</div>\n-<div class=\"line\"><a id=\"l00532\" name=\"l00532\"></a><span class=\"lineno\">  532</span> </div>\n-<div class=\"line\"><a id=\"l00533\" name=\"l00533\"></a><span class=\"lineno\">  533</span>    <span class=\"comment\">// Factory constructor</span></div>\n-<div class=\"line\"><a id=\"l00534\" name=\"l00534\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a37e24b0244219eef61cc1ab2a5a5450e\">  534</a></span>    <a class=\"code hl_function\" href=\"a00993.html#a37e24b0244219eef61cc1ab2a5a5450e\">PatchTable</a>(<span class=\"keywordtype\">int</span> maxvalence);</div>\n-<div class=\"line\"><a id=\"l00535\" name=\"l00535\"></a><span class=\"lineno\">  535</span> </div>\n-<div class=\"line\"><a id=\"l00536\" name=\"l00536\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#ab0adae83e2dd316f9ed297fe745dab55\">  536</a></span>    <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> <a class=\"code hl_function\" href=\"a00993.html#ab0adae83e2dd316f9ed297fe745dab55\">getPatchIndex</a>(<span class=\"keywordtype\">int</span> array, <span class=\"keywordtype\">int</span> patch) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00537\" name=\"l00537\"></a><span class=\"lineno\">  537</span> </div>\n-<div class=\"line\"><a id=\"l00538\" name=\"l00538\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a21130b3d23cd5c27045d03c601e4642d\">  538</a></span>    <a class=\"code hl_class\" href=\"a01357.html\">PatchParamArray</a> <a class=\"code hl_function\" href=\"a00993.html#a21130b3d23cd5c27045d03c601e4642d\">getPatchParams</a>(<span class=\"keywordtype\">int</span> arrayIndex);</div>\n-<div class=\"line\"><a id=\"l00539\" name=\"l00539\"></a><span class=\"lineno\">  539</span> </div>\n-<div class=\"line\"><a id=\"l00540\" name=\"l00540\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a7c1135ced687d1313ed925b8441fdf60\">  540</a></span>    <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> * <a class=\"code hl_function\" href=\"a00993.html#a7c1135ced687d1313ed925b8441fdf60\">getSharpnessIndices</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> arrayIndex);</div>\n-<div class=\"line\"><a id=\"l00541\" name=\"l00541\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a02449704e384b32232b06d0d57968138\">  541</a></span>    <span class=\"keywordtype\">float</span> * <a class=\"code hl_function\" href=\"a00993.html#a02449704e384b32232b06d0d57968138\">getSharpnessValues</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> arrayIndex);</div>\n-<div class=\"line\"><a id=\"l00542\" name=\"l00542\"></a><span class=\"lineno\">  542</span> </div>\n-<div class=\"line\"><a id=\"l00543\" name=\"l00543\"></a><span class=\"lineno\">  543</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00544\" name=\"l00544\"></a><span class=\"lineno\">  544</span> </div>\n-<div class=\"line\"><a id=\"l00545\" name=\"l00545\"></a><span class=\"lineno\">  545</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00546\" name=\"l00546\"></a><span class=\"lineno\">  546</span>    <span class=\"comment\">// Patch arrays</span></div>\n-<div class=\"line\"><a id=\"l00547\" name=\"l00547\"></a><span class=\"lineno\">  547</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00548\" name=\"l00548\"></a><span class=\"lineno\">  548</span>    <span class=\"keyword\">struct </span>PatchArray {</div>\n-<div class=\"line\"><a id=\"l00549\" name=\"l00549\"></a><span class=\"lineno\">  549</span>        PatchArray(<a class=\"code hl_class\" href=\"a00973.html\">PatchDescriptor</a> d, <span class=\"keywordtype\">int</span> np, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> p, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> qo) :</div>\n-<div class=\"line\"><a id=\"l00550\" name=\"l00550\"></a><span class=\"lineno\">  550</span>            desc(d), numPatches(np), vertIndex(v),</div>\n-<div class=\"line\"><a id=\"l00551\" name=\"l00551\"></a><span class=\"lineno\">  551</span>            patchIndex(p), quadOffsetIndex (qo) { }</div>\n-<div class=\"line\"><a id=\"l00552\" name=\"l00552\"></a><span class=\"lineno\">  552</span> </div>\n-<div class=\"line\"><a id=\"l00553\" name=\"l00553\"></a><span class=\"lineno\">  553</span>        <span class=\"keywordtype\">void</span> print() <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00554\" name=\"l00554\"></a><span class=\"lineno\">  554</span> </div>\n-<div class=\"line\"><a id=\"l00555\" name=\"l00555\"></a><span class=\"lineno\">  555</span>        <a class=\"code hl_class\" href=\"a00973.html\">PatchDescriptor</a> desc;  <span class=\"comment\">// type of patches in the array</span></div>\n-<div class=\"line\"><a id=\"l00556\" name=\"l00556\"></a><span class=\"lineno\">  556</span> </div>\n-<div class=\"line\"><a id=\"l00557\" name=\"l00557\"></a><span class=\"lineno\">  557</span>        <span class=\"keywordtype\">int</span> numPatches;        <span class=\"comment\">// number of patches in the array</span></div>\n-<div class=\"line\"><a id=\"l00558\" name=\"l00558\"></a><span class=\"lineno\">  558</span> </div>\n-<div class=\"line\"><a id=\"l00559\" name=\"l00559\"></a><span class=\"lineno\">  559</span>        <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> vertIndex,       <span class=\"comment\">// index to the first control vertex</span></div>\n-<div class=\"line\"><a id=\"l00560\" name=\"l00560\"></a><span class=\"lineno\">  560</span>              patchIndex,      <span class=\"comment\">// absolute index of the first patch in the array</span></div>\n-<div class=\"line\"><a id=\"l00561\" name=\"l00561\"></a><span class=\"lineno\">  561</span>              quadOffsetIndex; <span class=\"comment\">// index of the first quad offset entry</span></div>\n-<div class=\"line\"><a id=\"l00562\" name=\"l00562\"></a><span class=\"lineno\">  562</span>    };</div>\n-<div class=\"line\"><a id=\"l00563\" name=\"l00563\"></a><span class=\"lineno\">  563</span> </div>\n-<div class=\"line\"><a id=\"l00564\" name=\"l00564\"></a><span class=\"lineno\">  564</span>    <span class=\"keyword\">typedef</span> std::vector&lt;PatchArray&gt; PatchArrayVector;</div>\n-<div class=\"line\"><a id=\"l00565\" name=\"l00565\"></a><span class=\"lineno\">  565</span> </div>\n-<div class=\"line\"><a id=\"l00566\" name=\"l00566\"></a><span class=\"lineno\">  566</span>    PatchArray &amp; getPatchArray(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> arrayIndex);</div>\n-<div class=\"line\"><a id=\"l00567\" name=\"l00567\"></a><span class=\"lineno\">  567</span>    PatchArray <span class=\"keyword\">const</span> &amp; getPatchArray(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> arrayIndex) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00568\" name=\"l00568\"></a><span class=\"lineno\">  568</span> </div>\n-<div class=\"line\"><a id=\"l00569\" name=\"l00569\"></a><span class=\"lineno\">  569</span>    <span class=\"keywordtype\">void</span> reservePatchArrays(<span class=\"keywordtype\">int</span> numPatchArrays);</div>\n-<div class=\"line\"><a id=\"l00570\" name=\"l00570\"></a><span class=\"lineno\">  570</span>    <span class=\"keywordtype\">void</span> pushPatchArray(PatchDescriptor desc, <span class=\"keywordtype\">int</span> npatches,</div>\n-<div class=\"line\"><a id=\"l00571\" name=\"l00571\"></a><span class=\"lineno\">  571</span>        <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> * vidx, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> * pidx, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> * qoidx=0);</div>\n-<div class=\"line\"><a id=\"l00572\" name=\"l00572\"></a><span class=\"lineno\">  572</span> </div>\n-<div class=\"line\"><a id=\"l00573\" name=\"l00573\"></a><span class=\"lineno\">  573</span>    <a class=\"code hl_typedef\" href=\"a00908.html#a70ecf570850744b0efeeedd7b743e950\">IndexArray</a> getPatchArrayVertices(<span class=\"keywordtype\">int</span> arrayIndex);</div>\n-<div class=\"line\"><a id=\"l00574\" name=\"l00574\"></a><span class=\"lineno\">  574</span> </div>\n-<div class=\"line\"><a id=\"l00575\" name=\"l00575\"></a><span class=\"lineno\">  575</span>    <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> findPatchArray(PatchDescriptor desc);</div>\n-<div class=\"line\"><a id=\"l00576\" name=\"l00576\"></a><span class=\"lineno\">  576</span> </div>\n-<div class=\"line\"><a id=\"l00577\" name=\"l00577\"></a><span class=\"lineno\">  577</span> </div>\n-<div class=\"line\"><a id=\"l00578\" name=\"l00578\"></a><span class=\"lineno\">  578</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00579\" name=\"l00579\"></a><span class=\"lineno\">  579</span>    <span class=\"comment\">// Varying patch arrays</span></div>\n-<div class=\"line\"><a id=\"l00580\" name=\"l00580\"></a><span class=\"lineno\">  580</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00581\" name=\"l00581\"></a><span class=\"lineno\">  581</span>    <a class=\"code hl_typedef\" href=\"a00908.html#a70ecf570850744b0efeeedd7b743e950\">IndexArray</a> getPatchArrayVaryingVertices(<span class=\"keywordtype\">int</span> arrayIndex);</div>\n-<div class=\"line\"><a id=\"l00582\" name=\"l00582\"></a><span class=\"lineno\">  582</span> </div>\n-<div class=\"line\"><a id=\"l00583\" name=\"l00583\"></a><span class=\"lineno\">  583</span>    <span class=\"keywordtype\">void</span> allocateVaryingVertices(</div>\n-<div class=\"line\"><a id=\"l00584\" name=\"l00584\"></a><span class=\"lineno\">  584</span>        PatchDescriptor desc, <span class=\"keywordtype\">int</span> numPatches);</div>\n-<div class=\"line\"><a id=\"l00585\" name=\"l00585\"></a><span class=\"lineno\">  585</span>    <span class=\"keywordtype\">void</span> populateVaryingVertices();</div>\n-<div class=\"line\"><a id=\"l00586\" name=\"l00586\"></a><span class=\"lineno\">  586</span> </div>\n-<div class=\"line\"><a id=\"l00587\" name=\"l00587\"></a><span class=\"lineno\">  587</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00588\" name=\"l00588\"></a><span class=\"lineno\">  588</span>    <span class=\"comment\">// Face-varying patch channels</span></div>\n-<div class=\"line\"><a id=\"l00589\" name=\"l00589\"></a><span class=\"lineno\">  589</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00590\" name=\"l00590\"></a><span class=\"lineno\">  590</span> </div>\n-<div class=\"line\"><a id=\"l00591\" name=\"l00591\"></a><span class=\"lineno\">  591</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00592\" name=\"l00592\"></a><span class=\"lineno\">  592</span>    <span class=\"comment\">// FVarPatchChannel</span></div>\n-<div class=\"line\"><a id=\"l00593\" name=\"l00593\"></a><span class=\"lineno\">  593</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00594\" name=\"l00594\"></a><span class=\"lineno\">  594</span>    <span class=\"comment\">// Stores a record for each patch in the primitive :</span></div>\n-<div class=\"line\"><a id=\"l00595\" name=\"l00595\"></a><span class=\"lineno\">  595</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00596\" name=\"l00596\"></a><span class=\"lineno\">  596</span>    <span class=\"comment\">//  - Each patch in the PatchTable has a corresponding patch in each</span></div>\n-<div class=\"line\"><a id=\"l00597\" name=\"l00597\"></a><span class=\"lineno\">  597</span>    <span class=\"comment\">//    face-varying patch channel. Patch vertex indices are sorted in the same</span></div>\n-<div class=\"line\"><a id=\"l00598\" name=\"l00598\"></a><span class=\"lineno\">  598</span>    <span class=\"comment\">//    patch-type order as PatchTable::PTables. Face-varying data for a patch</span></div>\n-<div class=\"line\"><a id=\"l00599\" name=\"l00599\"></a><span class=\"lineno\">  599</span>    <span class=\"comment\">//    can therefore be quickly accessed by using the patch primitive ID as</span></div>\n-<div class=\"line\"><a id=\"l00600\" name=\"l00600\"></a><span class=\"lineno\">  600</span>    <span class=\"comment\">//    index into patchValueOffsets to locate the face-varying control vertex</span></div>\n-<div class=\"line\"><a id=\"l00601\" name=\"l00601\"></a><span class=\"lineno\">  601</span>    <span class=\"comment\">//    indices.</span></div>\n-<div class=\"line\"><a id=\"l00602\" name=\"l00602\"></a><span class=\"lineno\">  602</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00603\" name=\"l00603\"></a><span class=\"lineno\">  603</span>    <span class=\"comment\">//  - Face-varying channels can have a different interpolation modes</span></div>\n-<div class=\"line\"><a id=\"l00604\" name=\"l00604\"></a><span class=\"lineno\">  604</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00605\" name=\"l00605\"></a><span class=\"lineno\">  605</span>    <span class=\"comment\">//  - Unlike &quot;vertex&quot; patches, there are no transition masks required</span></div>\n-<div class=\"line\"><a id=\"l00606\" name=\"l00606\"></a><span class=\"lineno\">  606</span>    <span class=\"comment\">//    for face-varying patches.</span></div>\n-<div class=\"line\"><a id=\"l00607\" name=\"l00607\"></a><span class=\"lineno\">  607</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00608\" name=\"l00608\"></a><span class=\"lineno\">  608</span>    <span class=\"comment\">//  - Face-varying patches still require boundary edge masks.</span></div>\n-<div class=\"line\"><a id=\"l00609\" name=\"l00609\"></a><span class=\"lineno\">  609</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00610\" name=\"l00610\"></a><span class=\"lineno\">  610</span>    <span class=\"comment\">//  - currently most patches with sharp boundaries but smooth interiors have</span></div>\n-<div class=\"line\"><a id=\"l00611\" name=\"l00611\"></a><span class=\"lineno\">  611</span>    <span class=\"comment\">//    to be isolated to level 10 : we need a special type of bicubic patch</span></div>\n-<div class=\"line\"><a id=\"l00612\" name=\"l00612\"></a><span class=\"lineno\">  612</span>    <span class=\"comment\">//    similar to single-crease to resolve this condition without requiring</span></div>\n-<div class=\"line\"><a id=\"l00613\" name=\"l00613\"></a><span class=\"lineno\">  613</span>    <span class=\"comment\">//    isolation if possible</span></div>\n-<div class=\"line\"><a id=\"l00614\" name=\"l00614\"></a><span class=\"lineno\">  614</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00615\" name=\"l00615\"></a><span class=\"lineno\">  615</span>    <span class=\"keyword\">struct </span>FVarPatchChannel {</div>\n-<div class=\"line\"><a id=\"l00616\" name=\"l00616\"></a><span class=\"lineno\">  616</span>        <a class=\"code hl_enumeration\" href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167b\">Sdc::Options::FVarLinearInterpolation</a> interpolation;</div>\n-<div class=\"line\"><a id=\"l00617\" name=\"l00617\"></a><span class=\"lineno\">  617</span> </div>\n-<div class=\"line\"><a id=\"l00618\" name=\"l00618\"></a><span class=\"lineno\">  618</span>        PatchDescriptor regDesc;</div>\n-<div class=\"line\"><a id=\"l00619\" name=\"l00619\"></a><span class=\"lineno\">  619</span>        PatchDescriptor irregDesc;</div>\n-<div class=\"line\"><a id=\"l00620\" name=\"l00620\"></a><span class=\"lineno\">  620</span> </div>\n-<div class=\"line\"><a id=\"l00621\" name=\"l00621\"></a><span class=\"lineno\">  621</span>        <span class=\"keywordtype\">int</span> stride;</div>\n-<div class=\"line\"><a id=\"l00622\" name=\"l00622\"></a><span class=\"lineno\">  622</span> </div>\n-<div class=\"line\"><a id=\"l00623\" name=\"l00623\"></a><span class=\"lineno\">  623</span>        std::vector&lt;Index&gt; patchValues;</div>\n-<div class=\"line\"><a id=\"l00624\" name=\"l00624\"></a><span class=\"lineno\">  624</span>        std::vector&lt;PatchParam&gt; patchParam;</div>\n-<div class=\"line\"><a id=\"l00625\" name=\"l00625\"></a><span class=\"lineno\">  625</span>    };</div>\n-<div class=\"line\"><a id=\"l00626\" name=\"l00626\"></a><span class=\"lineno\">  626</span>    <span class=\"keyword\">typedef</span> std::vector&lt;FVarPatchChannel&gt; FVarPatchChannelVector;</div>\n-<div class=\"line\"><a id=\"l00627\" name=\"l00627\"></a><span class=\"lineno\">  627</span> </div>\n-<div class=\"line\"><a id=\"l00628\" name=\"l00628\"></a><span class=\"lineno\">  628</span>    FVarPatchChannel &amp; getFVarPatchChannel(<span class=\"keywordtype\">int</span> channel);</div>\n-<div class=\"line\"><a id=\"l00629\" name=\"l00629\"></a><span class=\"lineno\">  629</span>    FVarPatchChannel <span class=\"keyword\">const</span> &amp; getFVarPatchChannel(<span class=\"keywordtype\">int</span> channel) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00630\" name=\"l00630\"></a><span class=\"lineno\">  630</span> </div>\n-<div class=\"line\"><a id=\"l00631\" name=\"l00631\"></a><span class=\"lineno\">  631</span>    <span class=\"keywordtype\">void</span> allocateFVarPatchChannels(<span class=\"keywordtype\">int</span> numChannels);</div>\n-<div class=\"line\"><a id=\"l00632\" name=\"l00632\"></a><span class=\"lineno\">  632</span>    <span class=\"keywordtype\">void</span> allocateFVarPatchChannelValues(</div>\n-<div class=\"line\"><a id=\"l00633\" name=\"l00633\"></a><span class=\"lineno\">  633</span>        PatchDescriptor regDesc, PatchDescriptor irregDesc,</div>\n-<div class=\"line\"><a id=\"l00634\" name=\"l00634\"></a><span class=\"lineno\">  634</span>        <span class=\"keywordtype\">int</span> numPatches, <span class=\"keywordtype\">int</span> channel);</div>\n-<div class=\"line\"><a id=\"l00635\" name=\"l00635\"></a><span class=\"lineno\">  635</span> </div>\n-<div class=\"line\"><a id=\"l00636\" name=\"l00636\"></a><span class=\"lineno\">  636</span>    <span class=\"comment\">// deprecated</span></div>\n-<div class=\"line\"><a id=\"l00637\" name=\"l00637\"></a><span class=\"lineno\">  637</span>    <span class=\"keywordtype\">void</span> setFVarPatchChannelLinearInterpolation(</div>\n-<div class=\"line\"><a id=\"l00638\" name=\"l00638\"></a><span class=\"lineno\">  638</span>        <a class=\"code hl_enumeration\" href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167b\">Sdc::Options::FVarLinearInterpolation</a> interpolation, <span class=\"keywordtype\">int</span> channel);</div>\n-<div class=\"line\"><a id=\"l00639\" name=\"l00639\"></a><span class=\"lineno\">  639</span> </div>\n-<div class=\"line\"><a id=\"l00640\" name=\"l00640\"></a><span class=\"lineno\">  640</span>    <a class=\"code hl_typedef\" href=\"a00908.html#a70ecf570850744b0efeeedd7b743e950\">IndexArray</a> getFVarValues(<span class=\"keywordtype\">int</span> channel);</div>\n-<div class=\"line\"><a id=\"l00641\" name=\"l00641\"></a><span class=\"lineno\">  641</span>    <a class=\"code hl_typedef\" href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">ConstIndexArray</a> getPatchFVarValues(<span class=\"keywordtype\">int</span> patch, <span class=\"keywordtype\">int</span> channel) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00642\" name=\"l00642\"></a><span class=\"lineno\">  642</span> </div>\n-<div class=\"line\"><a id=\"l00643\" name=\"l00643\"></a><span class=\"lineno\">  643</span>    <a class=\"code hl_typedef\" href=\"a00908.html#abe07210a029a01571c54276ae28b4d88\">PatchParamArray</a> getFVarPatchParams(<span class=\"keywordtype\">int</span> channel);</div>\n-<div class=\"line\"><a id=\"l00644\" name=\"l00644\"></a><span class=\"lineno\">  644</span>    PatchParam getPatchFVarPatchParam(<span class=\"keywordtype\">int</span> patch, <span class=\"keywordtype\">int</span> channel) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00645\" name=\"l00645\"></a><span class=\"lineno\">  645</span> </div>\n-<div class=\"line\"><a id=\"l00646\" name=\"l00646\"></a><span class=\"lineno\">  646</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00647\" name=\"l00647\"></a><span class=\"lineno\">  647</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00648\" name=\"l00648\"></a><span class=\"lineno\">  648</span>    <span class=\"comment\">//  Simple private class to hold stencil table pointers of varying precision,</span></div>\n-<div class=\"line\"><a id=\"l00649\" name=\"l00649\"></a><span class=\"lineno\">  649</span>    <span class=\"comment\">//  where the discriminant of the precision is external.</span></div>\n-<div class=\"line\"><a id=\"l00650\" name=\"l00650\"></a><span class=\"lineno\">  650</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00651\" name=\"l00651\"></a><span class=\"lineno\">  651</span>    <span class=\"comment\">//  NOTE that this is a simple pointer container and NOT a smart pointer that</span></div>\n-<div class=\"line\"><a id=\"l00652\" name=\"l00652\"></a><span class=\"lineno\">  652</span>    <span class=\"comment\">//  manages the ownership of the object referred to by it.</span></div>\n-<div class=\"line\"><a id=\"l00653\" name=\"l00653\"></a><span class=\"lineno\">  653</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00654\" name=\"l00654\"></a><span class=\"lineno\">  654</span>    <span class=\"keyword\">class </span>StencilTablePtr {</div>\n-<div class=\"line\"><a id=\"l00655\" name=\"l00655\"></a><span class=\"lineno\">  655</span>    <span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00656\" name=\"l00656\"></a><span class=\"lineno\">  656</span>        <span class=\"keyword\">typedef</span> StencilTableReal&lt;float&gt;  float_type;</div>\n-<div class=\"line\"><a id=\"l00657\" name=\"l00657\"></a><span class=\"lineno\">  657</span>        <span class=\"keyword\">typedef</span> StencilTableReal&lt;double&gt; double_type;</div>\n-<div class=\"line\"><a id=\"l00658\" name=\"l00658\"></a><span class=\"lineno\">  658</span> </div>\n-<div class=\"line\"><a id=\"l00659\" name=\"l00659\"></a><span class=\"lineno\">  659</span>        <span class=\"keyword\">union </span>{</div>\n-<div class=\"line\"><a id=\"l00660\" name=\"l00660\"></a><span class=\"lineno\">  660</span>            float_type  * _fPtr;</div>\n-<div class=\"line\"><a id=\"l00661\" name=\"l00661\"></a><span class=\"lineno\">  661</span>            double_type * _dPtr;</div>\n-<div class=\"line\"><a id=\"l00662\" name=\"l00662\"></a><span class=\"lineno\">  662</span>        };</div>\n-<div class=\"line\"><a id=\"l00663\" name=\"l00663\"></a><span class=\"lineno\">  663</span> </div>\n-<div class=\"line\"><a id=\"l00664\" name=\"l00664\"></a><span class=\"lineno\">  664</span>    <span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00665\" name=\"l00665\"></a><span class=\"lineno\">  665</span>        StencilTablePtr()                  { _fPtr = 0; }</div>\n-<div class=\"line\"><a id=\"l00666\" name=\"l00666\"></a><span class=\"lineno\">  666</span>        StencilTablePtr(float_type  * ptr) { _fPtr = ptr; }</div>\n-<div class=\"line\"><a id=\"l00667\" name=\"l00667\"></a><span class=\"lineno\">  667</span>        StencilTablePtr(double_type * ptr) { _dPtr = ptr; }</div>\n-<div class=\"line\"><a id=\"l00668\" name=\"l00668\"></a><span class=\"lineno\">  668</span> </div>\n-<div class=\"line\"><a id=\"l00669\" name=\"l00669\"></a><span class=\"lineno\">  669</span>        <span class=\"keyword\">operator</span> bool()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _fPtr != 0; }</div>\n-<div class=\"line\"><a id=\"l00670\" name=\"l00670\"></a><span class=\"lineno\">  670</span> </div>\n-<div class=\"line\"><a id=\"l00671\" name=\"l00671\"></a><span class=\"lineno\">  671</span>        <span class=\"keywordtype\">void</span> Set()                  { _fPtr = 0; }</div>\n-<div class=\"line\"><a id=\"l00672\" name=\"l00672\"></a><span class=\"lineno\">  672</span>        <span class=\"keywordtype\">void</span> Set(float_type  * ptr) { _fPtr = ptr; }</div>\n-<div class=\"line\"><a id=\"l00673\" name=\"l00673\"></a><span class=\"lineno\">  673</span>        <span class=\"keywordtype\">void</span> Set(double_type * ptr) { _dPtr = ptr; }</div>\n-<div class=\"line\"><a id=\"l00674\" name=\"l00674\"></a><span class=\"lineno\">  674</span> </div>\n-<div class=\"line\"><a id=\"l00675\" name=\"l00675\"></a><span class=\"lineno\">  675</span>        <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt; StencilTableReal&lt;REAL&gt; * Get() <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00676\" name=\"l00676\"></a><span class=\"lineno\">  676</span>    };</div>\n-<div class=\"line\"><a id=\"l00677\" name=\"l00677\"></a><span class=\"lineno\">  677</span> </div>\n-<div class=\"line\"><a id=\"l00678\" name=\"l00678\"></a><span class=\"lineno\">  678</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00679\" name=\"l00679\"></a><span class=\"lineno\">  679</span> </div>\n-<div class=\"line\"><a id=\"l00680\" name=\"l00680\"></a><span class=\"lineno\">  680</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00681\" name=\"l00681\"></a><span class=\"lineno\">  681</span>    <span class=\"comment\">// Topology</span></div>\n-<div class=\"line\"><a id=\"l00682\" name=\"l00682\"></a><span class=\"lineno\">  682</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00683\" name=\"l00683\"></a><span class=\"lineno\">  683</span> </div>\n-<div class=\"line\"><a id=\"l00684\" name=\"l00684\"></a><span class=\"lineno\">  684</span>    <span class=\"keywordtype\">int</span> _maxValence,   <span class=\"comment\">// highest vertex valence found in the mesh</span></div>\n-<div class=\"line\"><a id=\"l00685\" name=\"l00685\"></a><span class=\"lineno\">  685</span>        _numPtexFaces; <span class=\"comment\">// total number of ptex faces</span></div>\n-<div class=\"line\"><a id=\"l00686\" name=\"l00686\"></a><span class=\"lineno\">  686</span> </div>\n-<div class=\"line\"><a id=\"l00687\" name=\"l00687\"></a><span class=\"lineno\">  687</span>    <a class=\"code hl_typedef\" href=\"a00912.html#a98098cd229f60d2397d84a76fe654a31\">PatchArrayVector</a>     _patchArrays;  <span class=\"comment\">// Vector of descriptors for arrays of patches</span></div>\n-<div class=\"line\"><a id=\"l00688\" name=\"l00688\"></a><span class=\"lineno\">  688</span> </div>\n-<div class=\"line\"><a id=\"l00689\" name=\"l00689\"></a><span class=\"lineno\">  689</span>    std::vector&lt;Index&gt;   _patchVerts;   <span class=\"comment\">// Indices of the control vertices of the patches</span></div>\n-<div class=\"line\"><a id=\"l00690\" name=\"l00690\"></a><span class=\"lineno\">  690</span> </div>\n-<div class=\"line\"><a id=\"l00691\" name=\"l00691\"></a><span class=\"lineno\">  691</span>    <a class=\"code hl_typedef\" href=\"a00908.html#a46ea68db89cc3d55c4191ef7648281ce\">PatchParamTable</a>      _paramTable;   <span class=\"comment\">// PatchParam bitfields (one per patch)</span></div>\n-<div class=\"line\"><a id=\"l00692\" name=\"l00692\"></a><span class=\"lineno\">  692</span> </div>\n-<div class=\"line\"><a id=\"l00693\" name=\"l00693\"></a><span class=\"lineno\">  693</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00694\" name=\"l00694\"></a><span class=\"lineno\">  694</span>    <span class=\"comment\">// Extraordinary vertex closed-form evaluation / endcap basis conversion</span></div>\n-<div class=\"line\"><a id=\"l00695\" name=\"l00695\"></a><span class=\"lineno\">  695</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00696\" name=\"l00696\"></a><span class=\"lineno\">  696</span>    <span class=\"comment\">// XXXtakahito: these data will probably be replaced with mask coefficient or something</span></div>\n-<div class=\"line\"><a id=\"l00697\" name=\"l00697\"></a><span class=\"lineno\">  697</span>    <span class=\"comment\">//              SchemeWorker populates.</span></div>\n-<div class=\"line\"><a id=\"l00698\" name=\"l00698\"></a><span class=\"lineno\">  698</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00699\" name=\"l00699\"></a><span class=\"lineno\">  699</span>    <a class=\"code hl_typedef\" href=\"a00993.html#ad71e6ae07059dc39b0550c98cfcee291\">QuadOffsetsTable</a>     _quadOffsetsTable;   <span class=\"comment\">// Quad offsets (for Gregory patches)</span></div>\n-<div class=\"line\"><a id=\"l00700\" name=\"l00700\"></a><span class=\"lineno\">  700</span>    <a class=\"code hl_typedef\" href=\"a00993.html#a2fbf111cac9d122eeaec5c0cb73fa77d\">VertexValenceTable</a>   _vertexValenceTable; <span class=\"comment\">// Vertex valence table (for Gregory patches)</span></div>\n-<div class=\"line\"><a id=\"l00701\" name=\"l00701\"></a><span class=\"lineno\">  701</span> </div>\n-<div class=\"line\"><a id=\"l00702\" name=\"l00702\"></a><span class=\"lineno\">  702</span>    StencilTablePtr _localPointStencils;        <span class=\"comment\">// local point conversion stencils</span></div>\n-<div class=\"line\"><a id=\"l00703\" name=\"l00703\"></a><span class=\"lineno\">  703</span>    StencilTablePtr _localPointVaryingStencils; <span class=\"comment\">// local point varying stencils</span></div>\n-<div class=\"line\"><a id=\"l00704\" name=\"l00704\"></a><span class=\"lineno\">  704</span> </div>\n-<div class=\"line\"><a id=\"l00705\" name=\"l00705\"></a><span class=\"lineno\">  705</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00706\" name=\"l00706\"></a><span class=\"lineno\">  706</span>    <span class=\"comment\">// Varying data</span></div>\n-<div class=\"line\"><a id=\"l00707\" name=\"l00707\"></a><span class=\"lineno\">  707</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00708\" name=\"l00708\"></a><span class=\"lineno\">  708</span>    PatchDescriptor _varyingDesc;</div>\n-<div class=\"line\"><a id=\"l00709\" name=\"l00709\"></a><span class=\"lineno\">  709</span> </div>\n-<div class=\"line\"><a id=\"l00710\" name=\"l00710\"></a><span class=\"lineno\">  710</span>    std::vector&lt;Index&gt;   _varyingVerts;</div>\n-<div class=\"line\"><a id=\"l00711\" name=\"l00711\"></a><span class=\"lineno\">  711</span> </div>\n-<div class=\"line\"><a id=\"l00712\" name=\"l00712\"></a><span class=\"lineno\">  712</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00713\" name=\"l00713\"></a><span class=\"lineno\">  713</span>    <span class=\"comment\">// Face-varying data</span></div>\n-<div class=\"line\"><a id=\"l00714\" name=\"l00714\"></a><span class=\"lineno\">  714</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00715\" name=\"l00715\"></a><span class=\"lineno\">  715</span>    FVarPatchChannelVector _fvarChannels;</div>\n-<div class=\"line\"><a id=\"l00716\" name=\"l00716\"></a><span class=\"lineno\">  716</span> </div>\n-<div class=\"line\"><a id=\"l00717\" name=\"l00717\"></a><span class=\"lineno\">  717</span>    std::vector&lt;StencilTablePtr&gt; _localPointFaceVaryingStencils;</div>\n-<div class=\"line\"><a id=\"l00718\" name=\"l00718\"></a><span class=\"lineno\">  718</span> </div>\n-<div class=\"line\"><a id=\"l00719\" name=\"l00719\"></a><span class=\"lineno\">  719</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00720\" name=\"l00720\"></a><span class=\"lineno\">  720</span>    <span class=\"comment\">// &#39;single-crease&#39; patch sharpness tables</span></div>\n-<div class=\"line\"><a id=\"l00721\" name=\"l00721\"></a><span class=\"lineno\">  721</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00722\" name=\"l00722\"></a><span class=\"lineno\">  722</span>    std::vector&lt;Index&gt;   _sharpnessIndices; <span class=\"comment\">// Indices of single-crease sharpness (one per patch)</span></div>\n-<div class=\"line\"><a id=\"l00723\" name=\"l00723\"></a><span class=\"lineno\">  723</span>    std::vector&lt;float&gt;   _sharpnessValues;  <span class=\"comment\">// Sharpness values.</span></div>\n-<div class=\"line\"><a id=\"l00724\" name=\"l00724\"></a><span class=\"lineno\">  724</span> </div>\n-<div class=\"line\"><a id=\"l00725\" name=\"l00725\"></a><span class=\"lineno\">  725</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00726\" name=\"l00726\"></a><span class=\"lineno\">  726</span>    <span class=\"comment\">//  Construction history -- relevant to at least one public query:</span></div>\n-<div class=\"line\"><a id=\"l00727\" name=\"l00727\"></a><span class=\"lineno\">  727</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00728\" name=\"l00728\"></a><span class=\"lineno\">  728</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> _isUniformLinear : 1;</div>\n-<div class=\"line\"><a id=\"l00729\" name=\"l00729\"></a><span class=\"lineno\">  729</span> </div>\n-<div class=\"line\"><a id=\"l00730\" name=\"l00730\"></a><span class=\"lineno\">  730</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00731\" name=\"l00731\"></a><span class=\"lineno\">  731</span>    <span class=\"comment\">//  Precision -- only applies to local-point stencil tables</span></div>\n-<div class=\"line\"><a id=\"l00732\" name=\"l00732\"></a><span class=\"lineno\">  732</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00733\" name=\"l00733\"></a><span class=\"lineno\">  733</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> _vertexPrecisionIsDouble      : 1;</div>\n-<div class=\"line\"><a id=\"l00734\" name=\"l00734\"></a><span class=\"lineno\">  734</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> _varyingPrecisionIsDouble     : 1;</div>\n-<div class=\"line\"><a id=\"l00735\" name=\"l00735\"></a><span class=\"lineno\">  735</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> _faceVaryingPrecisionIsDouble : 1;</div>\n-<div class=\"line\"><a id=\"l00736\" name=\"l00736\"></a><span class=\"lineno\">  736</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00737\" name=\"l00737\"></a><span class=\"lineno\">  737</span> </div>\n-<div class=\"line\"><a id=\"l00738\" name=\"l00738\"></a><span class=\"lineno\">  738</span> </div>\n-<div class=\"line\"><a id=\"l00739\" name=\"l00739\"></a><span class=\"lineno\">  739</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00740\" name=\"l00740\"></a><span class=\"lineno\">  740</span><span class=\"comment\">//  Template specializations for float/double -- to be defined before used:</span></div>\n-<div class=\"line\"><a id=\"l00741\" name=\"l00741\"></a><span class=\"lineno\">  741</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00742\" name=\"l00742\"></a><span class=\"lineno\">  742</span><span class=\"keyword\">template</span> &lt;&gt; <span class=\"keyword\">inline</span> StencilTableReal&lt;float&gt; *</div>\n-<div class=\"line\"><a id=\"l00743\" name=\"l00743\"></a><span class=\"lineno\">  743</span>PatchTable::StencilTablePtr::Get&lt;float&gt;()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _fPtr; }</div>\n-<div class=\"line\"><a id=\"l00744\" name=\"l00744\"></a><span class=\"lineno\">  744</span> </div>\n-<div class=\"line\"><a id=\"l00745\" name=\"l00745\"></a><span class=\"lineno\">  745</span><span class=\"keyword\">template</span> &lt;&gt; <span class=\"keyword\">inline</span> StencilTableReal&lt;double&gt; *</div>\n-<div class=\"line\"><a id=\"l00746\" name=\"l00746\"></a><span class=\"lineno\">  746</span>PatchTable::StencilTablePtr::Get&lt;double&gt;()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _dPtr; }</div>\n-<div class=\"line\"><a id=\"l00747\" name=\"l00747\"></a><span class=\"lineno\">  747</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00748\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00748\" name=\"l00748\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a24c2f632253c21d97fdba264ac2635a9\">  748</a></span><span class=\"keyword\">template</span> &lt;&gt; <span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span></div>\n-<div class=\"line\"><a id=\"l00749\" name=\"l00749\"></a><span class=\"lineno\">  749</span>PatchTable::LocalPointStencilPrecisionMatchesType&lt;float&gt;()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00750\" name=\"l00750\"></a><span class=\"lineno\">  750</span>    <span class=\"keywordflow\">return</span> !_vertexPrecisionIsDouble;</div>\n-<div class=\"line\"><a id=\"l00751\" name=\"l00751\"></a><span class=\"lineno\">  751</span>}</div>\n-</div>\n-<div class=\"foldopen\" id=\"foldopen00752\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00752\" name=\"l00752\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#af22fd3afdc99098cc89463f530de5011\">  752</a></span><span class=\"keyword\">template</span> &lt;&gt; <span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span></div>\n-<div class=\"line\"><a id=\"l00753\" name=\"l00753\"></a><span class=\"lineno\">  753</span>PatchTable::LocalPointVaryingStencilPrecisionMatchesType&lt;float&gt;()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00754\" name=\"l00754\"></a><span class=\"lineno\">  754</span>    <span class=\"keywordflow\">return</span> !_varyingPrecisionIsDouble;</div>\n-<div class=\"line\"><a id=\"l00755\" name=\"l00755\"></a><span class=\"lineno\">  755</span>}</div>\n-</div>\n-<div class=\"foldopen\" id=\"foldopen00756\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00756\" name=\"l00756\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a4814cce8e9b999c4dbb64bcf09ab73e1\">  756</a></span><span class=\"keyword\">template</span> &lt;&gt; <span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span></div>\n-<div class=\"line\"><a id=\"l00757\" name=\"l00757\"></a><span class=\"lineno\">  757</span>PatchTable::LocalPointFaceVaryingStencilPrecisionMatchesType&lt;float&gt;()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00758\" name=\"l00758\"></a><span class=\"lineno\">  758</span>    <span class=\"keywordflow\">return</span> !_faceVaryingPrecisionIsDouble;</div>\n-<div class=\"line\"><a id=\"l00759\" name=\"l00759\"></a><span class=\"lineno\">  759</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00760\" name=\"l00760\"></a><span class=\"lineno\">  760</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00761\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00761\" name=\"l00761\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a24c2f632253c21d97fdba264ac2635a9\">  761</a></span><span class=\"keyword\">template</span> &lt;&gt; <span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span></div>\n-<div class=\"line\"><a id=\"l00762\" name=\"l00762\"></a><span class=\"lineno\">  762</span>PatchTable::LocalPointStencilPrecisionMatchesType&lt;double&gt;()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00763\" name=\"l00763\"></a><span class=\"lineno\">  763</span>    <span class=\"keywordflow\">return</span> _vertexPrecisionIsDouble;</div>\n-<div class=\"line\"><a id=\"l00764\" name=\"l00764\"></a><span class=\"lineno\">  764</span>}</div>\n-</div>\n-<div class=\"foldopen\" id=\"foldopen00765\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00765\" name=\"l00765\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#af22fd3afdc99098cc89463f530de5011\">  765</a></span><span class=\"keyword\">template</span> &lt;&gt; <span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span></div>\n-<div class=\"line\"><a id=\"l00766\" name=\"l00766\"></a><span class=\"lineno\">  766</span>PatchTable::LocalPointVaryingStencilPrecisionMatchesType&lt;double&gt;()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00767\" name=\"l00767\"></a><span class=\"lineno\">  767</span>    <span class=\"keywordflow\">return</span> _varyingPrecisionIsDouble;</div>\n-<div class=\"line\"><a id=\"l00768\" name=\"l00768\"></a><span class=\"lineno\">  768</span>}</div>\n-</div>\n-<div class=\"foldopen\" id=\"foldopen00769\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00769\" name=\"l00769\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a4814cce8e9b999c4dbb64bcf09ab73e1\">  769</a></span><span class=\"keyword\">template</span> &lt;&gt; <span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span></div>\n-<div class=\"line\"><a id=\"l00770\" name=\"l00770\"></a><span class=\"lineno\">  770</span>PatchTable::LocalPointFaceVaryingStencilPrecisionMatchesType&lt;double&gt;()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00771\" name=\"l00771\"></a><span class=\"lineno\">  771</span>    <span class=\"keywordflow\">return</span> _faceVaryingPrecisionIsDouble;</div>\n-<div class=\"line\"><a id=\"l00772\" name=\"l00772\"></a><span class=\"lineno\">  772</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00773\" name=\"l00773\"></a><span class=\"lineno\">  773</span> </div>\n-<div class=\"line\"><a id=\"l00774\" name=\"l00774\"></a><span class=\"lineno\">  774</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00775\" name=\"l00775\"></a><span class=\"lineno\">  775</span><span class=\"comment\">//  StencilTable access -- backward compatible and generic:</span></div>\n-<div class=\"line\"><a id=\"l00776\" name=\"l00776\"></a><span class=\"lineno\">  776</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00777\" name=\"l00777\"></a><span class=\"lineno\">  777</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const</span> *</div>\n-<div class=\"foldopen\" id=\"foldopen00778\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00778\" name=\"l00778\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a1d27edb01bfb68ba50776b25aa437783\">  778</a></span><a class=\"code hl_function\" href=\"a00993.html#a1d27edb01bfb68ba50776b25aa437783\">PatchTable::GetLocalPointStencilTable</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00779\" name=\"l00779\"></a><span class=\"lineno\">  779</span>    assert(LocalPointStencilPrecisionMatchesType&lt;float&gt;());</div>\n-<div class=\"line\"><a id=\"l00780\" name=\"l00780\"></a><span class=\"lineno\">  780</span>    <span class=\"keywordflow\">return</span> <span class=\"keyword\">static_cast&lt;</span><a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">&gt;</span>(_localPointStencils.Get&lt;<span class=\"keywordtype\">float</span>&gt;());</div>\n-<div class=\"line\"><a id=\"l00781\" name=\"l00781\"></a><span class=\"lineno\">  781</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00782\" name=\"l00782\"></a><span class=\"lineno\">  782</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const</span> *</div>\n-<div class=\"foldopen\" id=\"foldopen00783\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00783\" name=\"l00783\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#ad6bafe91da1dcf5b8fb1f7c8cb4ed619\">  783</a></span><a class=\"code hl_function\" href=\"a00993.html#ad6bafe91da1dcf5b8fb1f7c8cb4ed619\">PatchTable::GetLocalPointVaryingStencilTable</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00784\" name=\"l00784\"></a><span class=\"lineno\">  784</span>    assert(LocalPointVaryingStencilPrecisionMatchesType&lt;float&gt;());</div>\n-<div class=\"line\"><a id=\"l00785\" name=\"l00785\"></a><span class=\"lineno\">  785</span>    <span class=\"keywordflow\">return</span> <span class=\"keyword\">static_cast&lt;</span><a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">&gt;</span>(</div>\n-<div class=\"line\"><a id=\"l00786\" name=\"l00786\"></a><span class=\"lineno\">  786</span>            _localPointVaryingStencils.Get&lt;<span class=\"keywordtype\">float</span>&gt;());</div>\n-<div class=\"line\"><a id=\"l00787\" name=\"l00787\"></a><span class=\"lineno\">  787</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00788\" name=\"l00788\"></a><span class=\"lineno\">  788</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const</span> *</div>\n-<div class=\"foldopen\" id=\"foldopen00789\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00789\" name=\"l00789\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a523e2a6f899aede5166441b14efa348a\">  789</a></span><a class=\"code hl_function\" href=\"a00993.html#a523e2a6f899aede5166441b14efa348a\">PatchTable::GetLocalPointFaceVaryingStencilTable</a>(<span class=\"keywordtype\">int</span> channel)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00790\" name=\"l00790\"></a><span class=\"lineno\">  790</span>    assert(LocalPointFaceVaryingStencilPrecisionMatchesType&lt;float&gt;());</div>\n-<div class=\"line\"><a id=\"l00791\" name=\"l00791\"></a><span class=\"lineno\">  791</span>    <span class=\"keywordflow\">if</span> (channel &gt;= 0 &amp;&amp; channel &lt; (<span class=\"keywordtype\">int</span>)_localPointFaceVaryingStencils.size()) {</div>\n-<div class=\"line\"><a id=\"l00792\" name=\"l00792\"></a><span class=\"lineno\">  792</span>        <span class=\"keywordflow\">return</span> <span class=\"keyword\">static_cast&lt;</span><a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">&gt;</span>(</div>\n-<div class=\"line\"><a id=\"l00793\" name=\"l00793\"></a><span class=\"lineno\">  793</span>                _localPointFaceVaryingStencils[channel].Get&lt;<span class=\"keywordtype\">float</span>&gt;());</div>\n-<div class=\"line\"><a id=\"l00794\" name=\"l00794\"></a><span class=\"lineno\">  794</span>    }</div>\n-<div class=\"line\"><a id=\"l00795\" name=\"l00795\"></a><span class=\"lineno\">  795</span>    <span class=\"keywordflow\">return</span> NULL;</div>\n-<div class=\"line\"><a id=\"l00796\" name=\"l00796\"></a><span class=\"lineno\">  796</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00797\" name=\"l00797\"></a><span class=\"lineno\">  797</span> </div>\n-<div class=\"line\"><a id=\"l00798\" name=\"l00798\"></a><span class=\"lineno\">  798</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00799\" name=\"l00799\"></a><span class=\"lineno\">  799</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a01061.html\">StencilTableReal&lt;REAL&gt;</a> <span class=\"keyword\">const</span> *</div>\n-<div class=\"foldopen\" id=\"foldopen00800\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00800\" name=\"l00800\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a1c85ed58e2e3362dd22fbdb815f2c5a3\">  800</a></span><a class=\"code hl_function\" href=\"a00993.html#a1d27edb01bfb68ba50776b25aa437783\">PatchTable::GetLocalPointStencilTable</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00801\" name=\"l00801\"></a><span class=\"lineno\">  801</span>    assert(LocalPointStencilPrecisionMatchesType&lt;REAL&gt;());</div>\n-<div class=\"line\"><a id=\"l00802\" name=\"l00802\"></a><span class=\"lineno\">  802</span>    <span class=\"keywordflow\">return</span> _localPointStencils.Get&lt;REAL&gt;();</div>\n-<div class=\"line\"><a id=\"l00803\" name=\"l00803\"></a><span class=\"lineno\">  803</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00804\" name=\"l00804\"></a><span class=\"lineno\">  804</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00805\" name=\"l00805\"></a><span class=\"lineno\">  805</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a01061.html\">StencilTableReal&lt;REAL&gt;</a> <span class=\"keyword\">const</span> *</div>\n-<div class=\"foldopen\" id=\"foldopen00806\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00806\" name=\"l00806\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#af903f44e0f0743652b5f465ff60492a2\">  806</a></span><a class=\"code hl_function\" href=\"a00993.html#ad6bafe91da1dcf5b8fb1f7c8cb4ed619\">PatchTable::GetLocalPointVaryingStencilTable</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00807\" name=\"l00807\"></a><span class=\"lineno\">  807</span>    assert(LocalPointVaryingStencilPrecisionMatchesType&lt;REAL&gt;());</div>\n-<div class=\"line\"><a id=\"l00808\" name=\"l00808\"></a><span class=\"lineno\">  808</span>    <span class=\"keywordflow\">return</span> _localPointVaryingStencils.Get&lt;REAL&gt;();</div>\n-<div class=\"line\"><a id=\"l00809\" name=\"l00809\"></a><span class=\"lineno\">  809</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00810\" name=\"l00810\"></a><span class=\"lineno\">  810</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00811\" name=\"l00811\"></a><span class=\"lineno\">  811</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a01061.html\">StencilTableReal&lt;REAL&gt;</a> <span class=\"keyword\">const</span> *</div>\n-<div class=\"foldopen\" id=\"foldopen00812\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00812\" name=\"l00812\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a56a6ad825eff8823aee85348b73e70f7\">  812</a></span><a class=\"code hl_function\" href=\"a00993.html#a523e2a6f899aede5166441b14efa348a\">PatchTable::GetLocalPointFaceVaryingStencilTable</a>(<span class=\"keywordtype\">int</span> channel)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00813\" name=\"l00813\"></a><span class=\"lineno\">  813</span>    assert(LocalPointFaceVaryingStencilPrecisionMatchesType&lt;REAL&gt;());</div>\n-<div class=\"line\"><a id=\"l00814\" name=\"l00814\"></a><span class=\"lineno\">  814</span>    <span class=\"keywordflow\">if</span> (channel &gt;= 0 &amp;&amp; channel &lt; (<span class=\"keywordtype\">int</span>)_localPointFaceVaryingStencils.size()) {</div>\n-<div class=\"line\"><a id=\"l00815\" name=\"l00815\"></a><span class=\"lineno\">  815</span>        <span class=\"keywordflow\">return</span> _localPointFaceVaryingStencils[channel].Get&lt;REAL&gt;();</div>\n-<div class=\"line\"><a id=\"l00816\" name=\"l00816\"></a><span class=\"lineno\">  816</span>    }</div>\n-<div class=\"line\"><a id=\"l00817\" name=\"l00817\"></a><span class=\"lineno\">  817</span>    <span class=\"keywordflow\">return</span> NULL;</div>\n-<div class=\"line\"><a id=\"l00818\" name=\"l00818\"></a><span class=\"lineno\">  818</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00819\" name=\"l00819\"></a><span class=\"lineno\">  819</span> </div>\n-<div class=\"line\"><a id=\"l00820\" name=\"l00820\"></a><span class=\"lineno\">  820</span> </div>\n-<div class=\"line\"><a id=\"l00821\" name=\"l00821\"></a><span class=\"lineno\">  821</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00822\" name=\"l00822\"></a><span class=\"lineno\">  822</span><span class=\"comment\">//  Computation of local point values:</span></div>\n-<div class=\"line\"><a id=\"l00823\" name=\"l00823\"></a><span class=\"lineno\">  823</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00824\" name=\"l00824\"></a><span class=\"lineno\">  824</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T&gt;</div>\n-<div class=\"line\"><a id=\"l00825\" name=\"l00825\"></a><span class=\"lineno\">  825</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00826\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00826\" name=\"l00826\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a7dcb88c32ded6c233f129d7b6fb7a159\">  826</a></span><a class=\"code hl_function\" href=\"a00993.html#a7dcb88c32ded6c233f129d7b6fb7a159\">PatchTable::ComputeLocalPointValues</a>(T <span class=\"keyword\">const</span> *src, T *dst)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00827\" name=\"l00827\"></a><span class=\"lineno\">  827</span>    assert(LocalPointStencilPrecisionMatchesType&lt;float&gt;());</div>\n-<div class=\"line\"><a id=\"l00828\" name=\"l00828\"></a><span class=\"lineno\">  828</span>    <span class=\"keywordflow\">if</span> (_localPointStencils) {</div>\n-<div class=\"line\"><a id=\"l00829\" name=\"l00829\"></a><span class=\"lineno\">  829</span>        _localPointStencils.Get&lt;<span class=\"keywordtype\">float</span>&gt;()-&gt;UpdateValues(src, dst);</div>\n-<div class=\"line\"><a id=\"l00830\" name=\"l00830\"></a><span class=\"lineno\">  830</span>    }</div>\n-<div class=\"line\"><a id=\"l00831\" name=\"l00831\"></a><span class=\"lineno\">  831</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00832\" name=\"l00832\"></a><span class=\"lineno\">  832</span> </div>\n-<div class=\"line\"><a id=\"l00833\" name=\"l00833\"></a><span class=\"lineno\">  833</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T&gt;</div>\n-<div class=\"line\"><a id=\"l00834\" name=\"l00834\"></a><span class=\"lineno\">  834</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00835\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00835\" name=\"l00835\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a08ccda63d26e5b06957be5f5eec75d01\">  835</a></span><a class=\"code hl_function\" href=\"a00993.html#a08ccda63d26e5b06957be5f5eec75d01\">PatchTable::ComputeLocalPointValuesVarying</a>(T <span class=\"keyword\">const</span> *src, T *dst)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00836\" name=\"l00836\"></a><span class=\"lineno\">  836</span>    assert(LocalPointVaryingStencilPrecisionMatchesType&lt;float&gt;());</div>\n-<div class=\"line\"><a id=\"l00837\" name=\"l00837\"></a><span class=\"lineno\">  837</span>    <span class=\"keywordflow\">if</span> (_localPointVaryingStencils) {</div>\n-<div class=\"line\"><a id=\"l00838\" name=\"l00838\"></a><span class=\"lineno\">  838</span>        _localPointVaryingStencils.Get&lt;<span class=\"keywordtype\">float</span>&gt;()-&gt;UpdateValues(src, dst);</div>\n-<div class=\"line\"><a id=\"l00839\" name=\"l00839\"></a><span class=\"lineno\">  839</span>    }</div>\n-<div class=\"line\"><a id=\"l00840\" name=\"l00840\"></a><span class=\"lineno\">  840</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00841\" name=\"l00841\"></a><span class=\"lineno\">  841</span> </div>\n-<div class=\"line\"><a id=\"l00842\" name=\"l00842\"></a><span class=\"lineno\">  842</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T&gt;</div>\n-<div class=\"line\"><a id=\"l00843\" name=\"l00843\"></a><span class=\"lineno\">  843</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00844\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00844\" name=\"l00844\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a059c9506f9ef8ebf24a68fc298be58be\">  844</a></span><a class=\"code hl_function\" href=\"a00993.html#a059c9506f9ef8ebf24a68fc298be58be\">PatchTable::ComputeLocalPointValuesFaceVarying</a>(T <span class=\"keyword\">const</span> *src, T *dst, <span class=\"keywordtype\">int</span> channel)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00845\" name=\"l00845\"></a><span class=\"lineno\">  845</span>    assert(LocalPointFaceVaryingStencilPrecisionMatchesType&lt;float&gt;());</div>\n-<div class=\"line\"><a id=\"l00846\" name=\"l00846\"></a><span class=\"lineno\">  846</span>    <span class=\"keywordflow\">if</span> (channel &gt;= 0 &amp;&amp; channel &lt; (<span class=\"keywordtype\">int</span>)_localPointFaceVaryingStencils.size()) {</div>\n-<div class=\"line\"><a id=\"l00847\" name=\"l00847\"></a><span class=\"lineno\">  847</span>        <span class=\"keywordflow\">if</span> (_localPointFaceVaryingStencils[channel]) {</div>\n-<div class=\"line\"><a id=\"l00848\" name=\"l00848\"></a><span class=\"lineno\">  848</span>            _localPointFaceVaryingStencils[channel].Get&lt;<span class=\"keywordtype\">float</span>&gt;()-&gt;UpdateValues(src, dst);</div>\n-<div class=\"line\"><a id=\"l00849\" name=\"l00849\"></a><span class=\"lineno\">  849</span>        }</div>\n-<div class=\"line\"><a id=\"l00850\" name=\"l00850\"></a><span class=\"lineno\">  850</span>    }</div>\n-<div class=\"line\"><a id=\"l00851\" name=\"l00851\"></a><span class=\"lineno\">  851</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00852\" name=\"l00852\"></a><span class=\"lineno\">  852</span> </div>\n-<div class=\"line\"><a id=\"l00853\" name=\"l00853\"></a><span class=\"lineno\">  853</span> </div>\n-<div class=\"line\"><a id=\"l00854\" name=\"l00854\"></a><span class=\"lineno\">  854</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00855\" name=\"l00855\"></a><span class=\"lineno\">  855</span><span class=\"comment\">//  Basis evaluation overloads</span></div>\n-<div class=\"line\"><a id=\"l00856\" name=\"l00856\"></a><span class=\"lineno\">  856</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00857\" name=\"l00857\"></a><span class=\"lineno\">  857</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00858\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00858\" name=\"l00858\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a3c912c55ec0579d5f16fb2946a9e7f72\">  858</a></span><a class=\"code hl_function\" href=\"a00993.html#ab8a09f15edef57b9b4aed0d0d6183b75\">PatchTable::EvaluateBasis</a>(<a class=\"code hl_class\" href=\"a00997.html\">PatchHandle</a> <span class=\"keyword\">const</span> &amp; handle, <span class=\"keywordtype\">float</span> u, <span class=\"keywordtype\">float</span> v,</div>\n-<div class=\"line\"><a id=\"l00859\" name=\"l00859\"></a><span class=\"lineno\">  859</span>    <span class=\"keywordtype\">float</span> wP[], <span class=\"keywordtype\">float</span> wDu[], <span class=\"keywordtype\">float</span> wDv[],</div>\n-<div class=\"line\"><a id=\"l00860\" name=\"l00860\"></a><span class=\"lineno\">  860</span>    <span class=\"keywordtype\">float</span> wDuu[], <span class=\"keywordtype\">float</span> wDuv[], <span class=\"keywordtype\">float</span> wDvv[])<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00861\" name=\"l00861\"></a><span class=\"lineno\">  861</span> </div>\n-<div class=\"line\"><a id=\"l00862\" name=\"l00862\"></a><span class=\"lineno\">  862</span>    EvaluateBasis&lt;float&gt;(handle, u, v, wP, wDu, wDv, wDuu, wDuv, wDvv);</div>\n-<div class=\"line\"><a id=\"l00863\" name=\"l00863\"></a><span class=\"lineno\">  863</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00864\" name=\"l00864\"></a><span class=\"lineno\">  864</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00865\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00865\" name=\"l00865\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a80a3dced9165fc1a8a9bdbfe6b6111a4\">  865</a></span><a class=\"code hl_function\" href=\"a00993.html#ab8a09f15edef57b9b4aed0d0d6183b75\">PatchTable::EvaluateBasis</a>(<a class=\"code hl_class\" href=\"a00997.html\">PatchHandle</a> <span class=\"keyword\">const</span> &amp; handle, <span class=\"keywordtype\">double</span> u, <span class=\"keywordtype\">double</span> v,</div>\n-<div class=\"line\"><a id=\"l00866\" name=\"l00866\"></a><span class=\"lineno\">  866</span>    <span class=\"keywordtype\">double</span> wP[], <span class=\"keywordtype\">double</span> wDu[], <span class=\"keywordtype\">double</span> wDv[],</div>\n-<div class=\"line\"><a id=\"l00867\" name=\"l00867\"></a><span class=\"lineno\">  867</span>    <span class=\"keywordtype\">double</span> wDuu[], <span class=\"keywordtype\">double</span> wDuv[], <span class=\"keywordtype\">double</span> wDvv[])<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00868\" name=\"l00868\"></a><span class=\"lineno\">  868</span> </div>\n-<div class=\"line\"><a id=\"l00869\" name=\"l00869\"></a><span class=\"lineno\">  869</span>    EvaluateBasis&lt;double&gt;(handle, u, v, wP, wDu, wDv, wDuu, wDuv, wDvv);</div>\n-<div class=\"line\"><a id=\"l00870\" name=\"l00870\"></a><span class=\"lineno\">  870</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00871\" name=\"l00871\"></a><span class=\"lineno\">  871</span> </div>\n-<div class=\"line\"><a id=\"l00872\" name=\"l00872\"></a><span class=\"lineno\">  872</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00873\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00873\" name=\"l00873\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a30c6cda6c630d6823cdcc718e79a99ca\">  873</a></span><a class=\"code hl_function\" href=\"a00993.html#ad690cee703683b70def7a4419120cc9a\">PatchTable::EvaluateBasisVarying</a>(<a class=\"code hl_class\" href=\"a00997.html\">PatchHandle</a> <span class=\"keyword\">const</span> &amp; handle, <span class=\"keywordtype\">float</span> u, <span class=\"keywordtype\">float</span> v,</div>\n-<div class=\"line\"><a id=\"l00874\" name=\"l00874\"></a><span class=\"lineno\">  874</span>    <span class=\"keywordtype\">float</span> wP[], <span class=\"keywordtype\">float</span> wDu[], <span class=\"keywordtype\">float</span> wDv[],</div>\n-<div class=\"line\"><a id=\"l00875\" name=\"l00875\"></a><span class=\"lineno\">  875</span>    <span class=\"keywordtype\">float</span> wDuu[], <span class=\"keywordtype\">float</span> wDuv[], <span class=\"keywordtype\">float</span> wDvv[])<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00876\" name=\"l00876\"></a><span class=\"lineno\">  876</span> </div>\n-<div class=\"line\"><a id=\"l00877\" name=\"l00877\"></a><span class=\"lineno\">  877</span>    EvaluateBasisVarying&lt;float&gt;(handle, u, v, wP, wDu, wDv, wDuu, wDuv, wDvv);</div>\n-<div class=\"line\"><a id=\"l00878\" name=\"l00878\"></a><span class=\"lineno\">  878</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00879\" name=\"l00879\"></a><span class=\"lineno\">  879</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00880\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00880\" name=\"l00880\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#ac326c7af7f135ba41829dd20bd1c2f34\">  880</a></span><a class=\"code hl_function\" href=\"a00993.html#ad690cee703683b70def7a4419120cc9a\">PatchTable::EvaluateBasisVarying</a>(<a class=\"code hl_class\" href=\"a00997.html\">PatchHandle</a> <span class=\"keyword\">const</span> &amp; handle, <span class=\"keywordtype\">double</span> u, <span class=\"keywordtype\">double</span> v,</div>\n-<div class=\"line\"><a id=\"l00881\" name=\"l00881\"></a><span class=\"lineno\">  881</span>    <span class=\"keywordtype\">double</span> wP[], <span class=\"keywordtype\">double</span> wDu[], <span class=\"keywordtype\">double</span> wDv[],</div>\n-<div class=\"line\"><a id=\"l00882\" name=\"l00882\"></a><span class=\"lineno\">  882</span>    <span class=\"keywordtype\">double</span> wDuu[], <span class=\"keywordtype\">double</span> wDuv[], <span class=\"keywordtype\">double</span> wDvv[])<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00883\" name=\"l00883\"></a><span class=\"lineno\">  883</span> </div>\n-<div class=\"line\"><a id=\"l00884\" name=\"l00884\"></a><span class=\"lineno\">  884</span>    EvaluateBasisVarying&lt;double&gt;(handle, u, v, wP, wDu, wDv, wDuu, wDuv, wDvv);</div>\n-<div class=\"line\"><a id=\"l00885\" name=\"l00885\"></a><span class=\"lineno\">  885</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00886\" name=\"l00886\"></a><span class=\"lineno\">  886</span> </div>\n-<div class=\"line\"><a id=\"l00887\" name=\"l00887\"></a><span class=\"lineno\">  887</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00888\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00888\" name=\"l00888\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#aa78873a43e9f5b599cba62356882d0a5\">  888</a></span><a class=\"code hl_function\" href=\"a00993.html#a64fe119d6034e4b1f39e81d39ad9dfc4\">PatchTable::EvaluateBasisFaceVarying</a>(<a class=\"code hl_class\" href=\"a00997.html\">PatchHandle</a> <span class=\"keyword\">const</span> &amp; handle, <span class=\"keywordtype\">float</span> u, <span class=\"keywordtype\">float</span> v,</div>\n-<div class=\"line\"><a id=\"l00889\" name=\"l00889\"></a><span class=\"lineno\">  889</span>    <span class=\"keywordtype\">float</span> wP[], <span class=\"keywordtype\">float</span> wDu[], <span class=\"keywordtype\">float</span> wDv[],</div>\n-<div class=\"line\"><a id=\"l00890\" name=\"l00890\"></a><span class=\"lineno\">  890</span>    <span class=\"keywordtype\">float</span> wDuu[], <span class=\"keywordtype\">float</span> wDuv[], <span class=\"keywordtype\">float</span> wDvv[], <span class=\"keywordtype\">int</span> channel)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00891\" name=\"l00891\"></a><span class=\"lineno\">  891</span> </div>\n-<div class=\"line\"><a id=\"l00892\" name=\"l00892\"></a><span class=\"lineno\">  892</span>    EvaluateBasisFaceVarying&lt;float&gt;(handle, u, v, wP, wDu, wDv, wDuu, wDuv, wDvv, channel);</div>\n-<div class=\"line\"><a id=\"l00893\" name=\"l00893\"></a><span class=\"lineno\">  893</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00894\" name=\"l00894\"></a><span class=\"lineno\">  894</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00895\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00895\" name=\"l00895\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#aa09810ac68ebdc45a1e4b1a2bb657bdd\">  895</a></span><a class=\"code hl_function\" href=\"a00993.html#a64fe119d6034e4b1f39e81d39ad9dfc4\">PatchTable::EvaluateBasisFaceVarying</a>(<a class=\"code hl_class\" href=\"a00997.html\">PatchHandle</a> <span class=\"keyword\">const</span> &amp; handle, <span class=\"keywordtype\">double</span> u, <span class=\"keywordtype\">double</span> v,</div>\n-<div class=\"line\"><a id=\"l00896\" name=\"l00896\"></a><span class=\"lineno\">  896</span>    <span class=\"keywordtype\">double</span> wP[], <span class=\"keywordtype\">double</span> wDu[], <span class=\"keywordtype\">double</span> wDv[],</div>\n-<div class=\"line\"><a id=\"l00897\" name=\"l00897\"></a><span class=\"lineno\">  897</span>    <span class=\"keywordtype\">double</span> wDuu[], <span class=\"keywordtype\">double</span> wDuv[], <span class=\"keywordtype\">double</span> wDvv[], <span class=\"keywordtype\">int</span> channel)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00898\" name=\"l00898\"></a><span class=\"lineno\">  898</span> </div>\n-<div class=\"line\"><a id=\"l00899\" name=\"l00899\"></a><span class=\"lineno\">  899</span>    EvaluateBasisFaceVarying&lt;double&gt;(handle, u, v, wP, wDu, wDv, wDuu, wDuv, wDvv, channel);</div>\n-<div class=\"line\"><a id=\"l00900\" name=\"l00900\"></a><span class=\"lineno\">  900</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00901\" name=\"l00901\"></a><span class=\"lineno\">  901</span> </div>\n-<div class=\"line\"><a id=\"l00902\" name=\"l00902\"></a><span class=\"lineno\">  902</span>} <span class=\"comment\">// end namespace Far</span></div>\n-<div class=\"line\"><a id=\"l00903\" name=\"l00903\"></a><span class=\"lineno\">  903</span> </div>\n-<div class=\"line\"><a id=\"l00904\" name=\"l00904\"></a><span class=\"lineno\">  904</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00905\" name=\"l00905\"></a><span class=\"lineno\">  905</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00906\" name=\"l00906\"></a><span class=\"lineno\">  906</span> </div>\n-<div class=\"line\"><a id=\"l00907\" name=\"l00907\"></a><span class=\"lineno\">  907</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l00908\" name=\"l00908\"></a><span class=\"lineno\">  908</span> </div>\n-<div class=\"line\"><a id=\"l00909\" name=\"l00909\"></a><span class=\"lineno\">  909</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_FAR_PATCH_TABLE */</span><span class=\"preprocessor\"></span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa00908_html_a35788aa710e3f7e277e5f0b008d76d61\"><div class=\"ttname\"><a href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">OpenSubdiv::OPENSUBDIV_VERSION::Far::ConstIndexArray</a></div><div class=\"ttdeci\">Vtr::ConstIndexArray ConstIndexArray</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01486_source.html#l00047\">types.h:47</a></div></div>\n-<div class=\"ttc\" id=\"aa00908_html_a46ea68db89cc3d55c4191ef7648281ce\"><div class=\"ttname\"><a href=\"a00908.html#a46ea68db89cc3d55c4191ef7648281ce\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchParamTable</a></div><div class=\"ttdeci\">std::vector&lt; PatchParam &gt; PatchParamTable</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00755_source.html#l00243\">patchParam.h:243</a></div></div>\n-<div class=\"ttc\" id=\"aa00908_html_a70ecf570850744b0efeeedd7b743e950\"><div class=\"ttname\"><a href=\"a00908.html#a70ecf570850744b0efeeedd7b743e950\">OpenSubdiv::OPENSUBDIV_VERSION::Far::IndexArray</a></div><div class=\"ttdeci\">Vtr::IndexArray IndexArray</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01486_source.html#l00044\">types.h:44</a></div></div>\n-<div class=\"ttc\" id=\"aa00908_html_ab34c85a48f33dfe7b8bf4d966fdebbf2\"><div class=\"ttname\"><a href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">OpenSubdiv::OPENSUBDIV_VERSION::Far::Index</a></div><div class=\"ttdeci\">Vtr::Index Index</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01486_source.html#l00041\">types.h:41</a></div></div>\n-<div class=\"ttc\" id=\"aa00908_html_abe07210a029a01571c54276ae28b4d88\"><div class=\"ttname\"><a href=\"a00908.html#abe07210a029a01571c54276ae28b4d88\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchParamArray</a></div><div class=\"ttdeci\">Vtr::Array&lt; PatchParam &gt; PatchParamArray</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00755_source.html#l00245\">patchParam.h:245</a></div></div>\n-<div class=\"ttc\" id=\"aa00912_html_a98098cd229f60d2397d84a76fe654a31\"><div class=\"ttname\"><a href=\"a00912.html#a98098cd229f60d2397d84a76fe654a31\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchArrayVector</a></div><div class=\"ttdeci\">std::vector&lt; PatchArray &gt; PatchArrayVector</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00132\">types.h:132</a></div></div>\n-<div class=\"ttc\" id=\"aa00973_html\"><div class=\"ttname\"><a href=\"a00973.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor</a></div><div class=\"ttdoc\">Describes the type of a patch.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00773_source.html#l00044\">patchDescriptor.h:44</a></div></div>\n-<div class=\"ttc\" id=\"aa00977_html\"><div class=\"ttname\"><a href=\"a00977.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchMap</a></div><div class=\"ttdoc\">An quadtree-based map connecting coarse faces to their sub-patches.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00779_source.html#l00049\">patchMap.h:49</a></div></div>\n-<div class=\"ttc\" id=\"aa00989_html\"><div class=\"ttname\"><a href=\"a00989.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchParam</a></div><div class=\"ttdoc\">Patch parameterization.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00755_source.html#l00152\">patchParam.h:152</a></div></div>\n-<div class=\"ttc\" id=\"aa00993_html\"><div class=\"ttname\"><a href=\"a00993.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable</a></div><div class=\"ttdoc\">Container for arrays of parametric patches.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00761_source.html#l00055\">patchTable.h:55</a></div></div>\n-<div class=\"ttc\" id=\"aa00993_html_a012069d0bc0036c1e2bb75bc2a170c58\"><div class=\"ttname\"><a href=\"a00993.html#a012069d0bc0036c1e2bb75bc2a170c58\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetPatchArrayVaryingVertices</a></div><div class=\"ttdeci\">ConstIndexArray GetPatchArrayVaryingVertices(int array) const</div><div class=\"ttdoc\">Returns the varying vertex indices for the patches in array.</div></div>\n-<div class=\"ttc\" id=\"aa00993_html_a02449704e384b32232b06d0d57968138\"><div class=\"ttname\"><a href=\"a00993.html#a02449704e384b32232b06d0d57968138\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::getSharpnessValues</a></div><div class=\"ttdeci\">float * getSharpnessValues(Index arrayIndex)</div></div>\n-<div class=\"ttc\" id=\"aa00993_html_a02ba6ac8fc716dd7349a8a1143319079\"><div class=\"ttname\"><a href=\"a00993.html#a02ba6ac8fc716dd7349a8a1143319079\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetPatchControlVerticesTable</a></div><div class=\"ttdeci\">PatchVertsTable const &amp; GetPatchControlVerticesTable() const</div><div class=\"ttdoc\">Get the table of patch control vertices.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00761_source.html#l00378\">patchTable.h:378</a></div></div>\n-<div class=\"ttc\" id=\"aa00993_html_a059c9506f9ef8ebf24a68fc298be58be\"><div class=\"ttname\"><a href=\"a00993.html#a059c9506f9ef8ebf24a68fc298be58be\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::ComputeLocalPointValuesFaceVarying</a></div><div class=\"ttdeci\">void ComputeLocalPointValuesFaceVarying(T const *src, T *dst, int channel=0) const</div><div class=\"ttdoc\">Updates local point face-varying values.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00761_source.html#l00844\">patchTable.h:844</a></div></div>\n-<div class=\"ttc\" id=\"aa00993_html_a062d31216b535f604b3bc4d69434270d\"><div class=\"ttname\"><a href=\"a00993.html#a062d31216b535f604b3bc4d69434270d\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetVaryingVertices</a></div><div class=\"ttdeci\">ConstIndexArray GetVaryingVertices() const</div><div class=\"ttdoc\">Returns an array of varying vertex indices for the patches.</div></div>\n-<div class=\"ttc\" id=\"aa00993_html_a08ccda63d26e5b06957be5f5eec75d01\"><div class=\"ttname\"><a href=\"a00993.html#a08ccda63d26e5b06957be5f5eec75d01\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::ComputeLocalPointValuesVarying</a></div><div class=\"ttdeci\">void ComputeLocalPointValuesVarying(T const *src, T *dst) const</div><div class=\"ttdoc\">Updates local point varying values.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00761_source.html#l00835\">patchTable.h:835</a></div></div>\n-<div class=\"ttc\" id=\"aa00993_html_a0cb33d03729931750660ebf58b9e89ec\"><div class=\"ttname\"><a href=\"a00993.html#a0cb33d03729931750660ebf58b9e89ec\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetPatchVaryingVertices</a></div><div class=\"ttdeci\">ConstIndexArray GetPatchVaryingVertices(PatchHandle const &amp;handle) const</div><div class=\"ttdoc\">Returns the varying vertex indices for a given patch.</div></div>\n-<div class=\"ttc\" id=\"aa00993_html_a11c0f8be31c18b856cf9cdea511e54de\"><div class=\"ttname\"><a href=\"a00993.html#a11c0f8be31c18b856cf9cdea511e54de\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::IsFeatureAdaptive</a></div><div class=\"ttdeci\">bool IsFeatureAdaptive() const</div><div class=\"ttdoc\">True if the patches are of feature adaptive types.</div></div>\n-<div class=\"ttc\" id=\"aa00993_html_a14bf987459715b918b370247bb24a61c\"><div class=\"ttname\"><a href=\"a00993.html#a14bf987459715b918b370247bb24a61c\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetMaxValence</a></div><div class=\"ttdeci\">int GetMaxValence() const</div><div class=\"ttdoc\">Returns max vertex valence.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00761_source.html#l00092\">patchTable.h:92</a></div></div>\n-<div class=\"ttc\" id=\"aa00993_html_a1c85ed58e2e3362dd22fbdb815f2c5a3\"><div class=\"ttname\"><a href=\"a00993.html#a1c85ed58e2e3362dd22fbdb815f2c5a3\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetLocalPointStencilTable</a></div><div class=\"ttdeci\">StencilTableReal&lt; REAL &gt; const * GetLocalPointStencilTable() const</div><div class=\"ttdoc\">Returns the stencil table to compute local point vertex values.</div></div>\n-<div class=\"ttc\" id=\"aa00993_html_a1d27edb01bfb68ba50776b25aa437783\"><div class=\"ttname\"><a href=\"a00993.html#a1d27edb01bfb68ba50776b25aa437783\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetLocalPointStencilTable</a></div><div class=\"ttdeci\">StencilTable const * GetLocalPointStencilTable() const</div><div class=\"ttdoc\">Returns the stencil table to compute local point vertex values.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00761_source.html#l00778\">patchTable.h:778</a></div></div>\n-<div class=\"ttc\" id=\"aa00993_html_a21130b3d23cd5c27045d03c601e4642d\"><div class=\"ttname\"><a href=\"a00993.html#a21130b3d23cd5c27045d03c601e4642d\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::getPatchParams</a></div><div class=\"ttdeci\">PatchParamArray getPatchParams(int arrayIndex)</div></div>\n-<div class=\"ttc\" id=\"aa00993_html_a2a749eef1377f4f13a23c95e4038525d\"><div class=\"ttname\"><a href=\"a00993.html#a2a749eef1377f4f13a23c95e4038525d\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetPatchArrayFVarValues</a></div><div class=\"ttdeci\">ConstIndexArray GetPatchArrayFVarValues(int array, int channel=0) const</div><div class=\"ttdoc\">Returns the value indices for the patches in array in channel.</div></div>\n-<div class=\"ttc\" id=\"aa00993_html_a2d2c7ac649a9a285741dfdc1ed3089b3\"><div class=\"ttname\"><a href=\"a00993.html#a2d2c7ac649a9a285741dfdc1ed3089b3\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetSharpnessValues</a></div><div class=\"ttdeci\">std::vector&lt; float &gt; const &amp; GetSharpnessValues() const</div><div class=\"ttdoc\">Returns sharpness values table.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00761_source.html#l00387\">patchTable.h:387</a></div></div>\n-<div class=\"ttc\" id=\"aa00993_html_a2fbf111cac9d122eeaec5c0cb73fa77d\"><div class=\"ttname\"><a href=\"a00993.html#a2fbf111cac9d122eeaec5c0cb73fa77d\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::VertexValenceTable</a></div><div class=\"ttdeci\">std::vector&lt; Index &gt; VertexValenceTable</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00761_source.html#l00264\">patchTable.h:264</a></div></div>\n-<div class=\"ttc\" id=\"aa00993_html_a315fc19f788ba446560b2641186c393e\"><div class=\"ttname\"><a href=\"a00993.html#a315fc19f788ba446560b2641186c393e\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetPatchFVarPatchParam</a></div><div class=\"ttdeci\">PatchParam GetPatchFVarPatchParam(int array, int patch, int channel=0) const</div><div class=\"ttdoc\">Returns the face-varying params for a given patch channel.</div></div>\n-<div class=\"ttc\" id=\"aa00993_html_a31b548d9f8334f3c4f9341eda3479982\"><div class=\"ttname\"><a href=\"a00993.html#a31b548d9f8334f3c4f9341eda3479982\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetPatchVaryingVertices</a></div><div class=\"ttdeci\">ConstIndexArray GetPatchVaryingVertices(int array, int patch) const</div><div class=\"ttdoc\">Returns the varying vertex indices for a given patch.</div></div>\n-<div class=\"ttc\" id=\"aa00993_html_a3419c5d57330d6787f8c14a7677b8d9b\"><div class=\"ttname\"><a href=\"a00993.html#a3419c5d57330d6787f8c14a7677b8d9b\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::PatchTable</a></div><div class=\"ttdeci\">PatchTable(PatchTable const &amp;src)</div><div class=\"ttdoc\">Copy constructor.</div></div>\n-<div class=\"ttc\" id=\"aa00993_html_a3432d7022e415ef661ccd6726ed3743f\"><div class=\"ttname\"><a href=\"a00993.html#a3432d7022e415ef661ccd6726ed3743f\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetNumPatchArrays</a></div><div class=\"ttdeci\">int GetNumPatchArrays() const</div><div class=\"ttdoc\">Returns the number of patch arrays in the table.</div></div>\n-<div class=\"ttc\" id=\"aa00993_html_a37804f17e707ef64a7f165d15b6cf013\"><div class=\"ttname\"><a href=\"a00993.html#a37804f17e707ef64a7f165d15b6cf013\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetPatchVertices</a></div><div class=\"ttdeci\">ConstIndexArray GetPatchVertices(PatchHandle const &amp;handle) const</div><div class=\"ttdoc\">Returns the control vertex indices for the patch identified by handle.</div></div>\n-<div class=\"ttc\" id=\"aa00993_html_a37e24b0244219eef61cc1ab2a5a5450e\"><div class=\"ttname\"><a href=\"a00993.html#a37e24b0244219eef61cc1ab2a5a5450e\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::PatchTable</a></div><div class=\"ttdeci\">PatchTable(int maxvalence)</div></div>\n-<div class=\"ttc\" id=\"aa00993_html_a38d50a271b91fe5b1a9f11904d06ce49\"><div class=\"ttname\"><a href=\"a00993.html#a38d50a271b91fe5b1a9f11904d06ce49\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::LocalPointFaceVaryingStencilPrecisionMatchesType</a></div><div class=\"ttdeci\">bool LocalPointFaceVaryingStencilPrecisionMatchesType() const</div><div class=\"ttdoc\">Tests if the precision of the stencil table to compute local point face-varying values matches the gi...</div></div>\n-<div class=\"ttc\" id=\"aa00993_html_a39cd14c1ae309f7fc7872b7b0d03dde3\"><div class=\"ttname\"><a href=\"a00993.html#a39cd14c1ae309f7fc7872b7b0d03dde3\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetPatchParamTable</a></div><div class=\"ttdeci\">PatchParamTable const &amp; GetPatchParamTable() const</div><div class=\"ttdoc\">Returns the PatchParamTable (PatchParams order matches patch array sorting)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00761_source.html#l00381\">patchTable.h:381</a></div></div>\n-<div class=\"ttc\" id=\"aa00993_html_a442f93101ba3ac94d07f1d9ceb1cdcd6\"><div class=\"ttname\"><a href=\"a00993.html#a442f93101ba3ac94d07f1d9ceb1cdcd6\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetVertexValenceTable</a></div><div class=\"ttdeci\">VertexValenceTable const &amp; GetVertexValenceTable() const</div><div class=\"ttdoc\">Returns the 'VertexValences' table (vertex neighborhoods table)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00761_source.html#l00267\">patchTable.h:267</a></div></div>\n-<div class=\"ttc\" id=\"aa00993_html_a523e2a6f899aede5166441b14efa348a\"><div class=\"ttname\"><a href=\"a00993.html#a523e2a6f899aede5166441b14efa348a\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetLocalPointFaceVaryingStencilTable</a></div><div class=\"ttdeci\">StencilTable const * GetLocalPointFaceVaryingStencilTable(int channel=0) const</div><div class=\"ttdoc\">Returns the stencil table to compute local point face-varying values.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00761_source.html#l00789\">patchTable.h:789</a></div></div>\n-<div class=\"ttc\" id=\"aa00993_html_a5b32465be706d80f4fac5ea05e3e0ded\"><div class=\"ttname\"><a href=\"a00993.html#a5b32465be706d80f4fac5ea05e3e0ded\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetNumControlVertices</a></div><div class=\"ttdeci\">int GetNumControlVertices(int array) const</div><div class=\"ttdoc\">Returns the number of control vertices in array.</div></div>\n-<div class=\"ttc\" id=\"aa00993_html_a5cbd789bd429e35377db5f4c97701874\"><div class=\"ttname\"><a href=\"a00993.html#a5cbd789bd429e35377db5f4c97701874\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::~PatchTable</a></div><div class=\"ttdeci\">~PatchTable()</div><div class=\"ttdoc\">Destructor.</div></div>\n-<div class=\"ttc\" id=\"aa00993_html_a64fe119d6034e4b1f39e81d39ad9dfc4\"><div class=\"ttname\"><a href=\"a00993.html#a64fe119d6034e4b1f39e81d39ad9dfc4\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::EvaluateBasisFaceVarying</a></div><div class=\"ttdeci\">void EvaluateBasisFaceVarying(PatchHandle const &amp;handle, REAL u, REAL v, REAL wP[], REAL wDu[]=0, REAL wDv[]=0, REAL wDuu[]=0, REAL wDuv[]=0, REAL wDvv[]=0, int channel=0) const</div><div class=\"ttdoc\">Evaluate basis functions for a face-varying value and derivatives at a given (u,v) parametric locatio...</div></div>\n-<div class=\"ttc\" id=\"aa00993_html_a68a029efbad55b2fd991d29aa37a7c28\"><div class=\"ttname\"><a href=\"a00993.html#a68a029efbad55b2fd991d29aa37a7c28\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetPatchQuadOffsets</a></div><div class=\"ttdeci\">ConstQuadOffsetsArray GetPatchQuadOffsets(PatchHandle const &amp;handle) const</div><div class=\"ttdoc\">Returns the 'QuadOffsets' for the Gregory patch identified by handle.</div></div>\n-<div class=\"ttc\" id=\"aa00993_html_a733ff80d6d940519b47091c58abbed34\"><div class=\"ttname\"><a href=\"a00993.html#a733ff80d6d940519b47091c58abbed34\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetFVarPatchDescriptorIrregular</a></div><div class=\"ttdeci\">PatchDescriptor GetFVarPatchDescriptorIrregular(int channel=0) const</div><div class=\"ttdoc\">Returns the irregular patch descriptor for channel.</div></div>\n-<div class=\"ttc\" id=\"aa00993_html_a73752510551b8bda85fbc7f43e97730b\"><div class=\"ttname\"><a href=\"a00993.html#a73752510551b8bda85fbc7f43e97730b\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetSingleCreasePatchSharpnessValue</a></div><div class=\"ttdeci\">float GetSingleCreasePatchSharpnessValue(int array, int patch) const</div><div class=\"ttdoc\">Returns the crease sharpness for the patch in array if it is a single-crease patch,...</div></div>\n-<div class=\"ttc\" id=\"aa00993_html_a7c1135ced687d1313ed925b8441fdf60\"><div class=\"ttname\"><a href=\"a00993.html#a7c1135ced687d1313ed925b8441fdf60\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::getSharpnessIndices</a></div><div class=\"ttdeci\">Index * getSharpnessIndices(Index arrayIndex)</div></div>\n-<div class=\"ttc\" id=\"aa00993_html_a7dcb88c32ded6c233f129d7b6fb7a159\"><div class=\"ttname\"><a href=\"a00993.html#a7dcb88c32ded6c233f129d7b6fb7a159\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::ComputeLocalPointValues</a></div><div class=\"ttdeci\">void ComputeLocalPointValues(T const *src, T *dst) const</div><div class=\"ttdoc\">Updates local point vertex values.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00761_source.html#l00826\">patchTable.h:826</a></div></div>\n-<div class=\"ttc\" id=\"aa00993_html_a875abc47934c4076304f3b9c4edde3cc\"><div class=\"ttname\"><a href=\"a00993.html#a875abc47934c4076304f3b9c4edde3cc\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetSingleCreasePatchSharpnessValue</a></div><div class=\"ttdeci\">float GetSingleCreasePatchSharpnessValue(PatchHandle const &amp;handle) const</div><div class=\"ttdoc\">Returns the crease sharpness for the patch identified by handle if it is a single-crease patch,...</div></div>\n-<div class=\"ttc\" id=\"aa00993_html_a8c1242bf6bffa416c2e172a02f3ee31c\"><div class=\"ttname\"><a href=\"a00993.html#a8c1242bf6bffa416c2e172a02f3ee31c\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetPatchParam</a></div><div class=\"ttdeci\">PatchParam GetPatchParam(int array, int patch) const</div><div class=\"ttdoc\">Returns the PatchParam for patch in array.</div></div>\n-<div class=\"ttc\" id=\"aa00993_html_a8cc9b6bbaaecd1facf0cfae0853e3a60\"><div class=\"ttname\"><a href=\"a00993.html#a8cc9b6bbaaecd1facf0cfae0853e3a60\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetPatchFVarValues</a></div><div class=\"ttdeci\">ConstIndexArray GetPatchFVarValues(int array, int patch, int channel=0) const</div><div class=\"ttdoc\">Returns the value indices for a given patch in channel.</div></div>\n-<div class=\"ttc\" id=\"aa00993_html_a90705c85d6b680933c93344c9804e4d6\"><div class=\"ttname\"><a href=\"a00993.html#a90705c85d6b680933c93344c9804e4d6\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetFVarPatchDescriptorRegular</a></div><div class=\"ttdeci\">PatchDescriptor GetFVarPatchDescriptorRegular(int channel=0) const</div><div class=\"ttdoc\">Returns the regular patch descriptor for channel.</div></div>\n-<div class=\"ttc\" id=\"aa00993_html_a9373bf15eaee019dd08099d05515e080\"><div class=\"ttname\"><a href=\"a00993.html#a9373bf15eaee019dd08099d05515e080\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetPatchDescriptor</a></div><div class=\"ttdeci\">PatchDescriptor GetPatchDescriptor(PatchHandle const &amp;handle) const</div><div class=\"ttdoc\">Returns the PatchDescriptor for the patch identified by handle.</div></div>\n-<div class=\"ttc\" id=\"aa00993_html_a9484ab8a323750c2f639ee8709b1349b\"><div class=\"ttname\"><a href=\"a00993.html#a9484ab8a323750c2f639ee8709b1349b\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::PatchVertsTable</a></div><div class=\"ttdeci\">std::vector&lt; Index &gt; PatchVertsTable</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00761_source.html#l00375\">patchTable.h:375</a></div></div>\n-<div class=\"ttc\" id=\"aa00993_html_a99b23eec59013306ea2f1df119a7574d\"><div class=\"ttname\"><a href=\"a00993.html#a99b23eec59013306ea2f1df119a7574d\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetQuadOffsetsTable</a></div><div class=\"ttdeci\">QuadOffsetsTable const &amp; GetQuadOffsetsTable() const</div><div class=\"ttdoc\">Returns the quad-offsets table.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00761_source.html#l00392\">patchTable.h:392</a></div></div>\n-<div class=\"ttc\" id=\"aa00993_html_a9d7d8d4411b09211fbf901cb7564df4c\"><div class=\"ttname\"><a href=\"a00993.html#a9d7d8d4411b09211fbf901cb7564df4c\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetNumPatches</a></div><div class=\"ttdeci\">int GetNumPatches(int array) const</div><div class=\"ttdoc\">Returns the number of patches in array.</div></div>\n-<div class=\"ttc\" id=\"aa00993_html_a9f14d69df88fa663dcfdec990ec9e3f3\"><div class=\"ttname\"><a href=\"a00993.html#a9f14d69df88fa663dcfdec990ec9e3f3\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetVaryingPatchDescriptor</a></div><div class=\"ttdeci\">PatchDescriptor GetVaryingPatchDescriptor() const</div><div class=\"ttdoc\">Returns the varying patch descriptor.</div></div>\n-<div class=\"ttc\" id=\"aa00993_html_aa3020b88381e6966efbe6c4febf8c04f\"><div class=\"ttname\"><a href=\"a00993.html#aa3020b88381e6966efbe6c4febf8c04f\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetPatchFVarValues</a></div><div class=\"ttdeci\">ConstIndexArray GetPatchFVarValues(PatchHandle const &amp;handle, int channel=0) const</div><div class=\"ttdoc\">Returns the value indices for a given patch in channel.</div></div>\n-<div class=\"ttc\" id=\"aa00993_html_aa3dd3f4235b25b5feca23351835207b5\"><div class=\"ttname\"><a href=\"a00993.html#aa3dd3f4235b25b5feca23351835207b5\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetPatchParams</a></div><div class=\"ttdeci\">ConstPatchParamArray const GetPatchParams(int array) const</div><div class=\"ttdoc\">Returns the PatchParams for the patches in array.</div></div>\n-<div class=\"ttc\" id=\"aa00993_html_aa7d301570e6f7b39e1eaa546e2937018\"><div class=\"ttname\"><a href=\"a00993.html#aa7d301570e6f7b39e1eaa546e2937018\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetNumControlVerticesTotal</a></div><div class=\"ttdeci\">int GetNumControlVerticesTotal() const</div><div class=\"ttdoc\">Returns the total number of control vertex indices in the table.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00761_source.html#l00084\">patchTable.h:84</a></div></div>\n-<div class=\"ttc\" id=\"aa00993_html_aa9be824a572029f3ec1e0c0d6cfecd77\"><div class=\"ttname\"><a href=\"a00993.html#aa9be824a572029f3ec1e0c0d6cfecd77\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetNumFVarChannels</a></div><div class=\"ttdeci\">int GetNumFVarChannels() const</div><div class=\"ttdoc\">Returns the number of face-varying channels.</div></div>\n-<div class=\"ttc\" id=\"aa00993_html_aa9e55389ca0f7adf332423216b31134d\"><div class=\"ttname\"><a href=\"a00993.html#aa9e55389ca0f7adf332423216b31134d\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetPatchArrayFVarPatchParams</a></div><div class=\"ttdeci\">ConstPatchParamArray GetPatchArrayFVarPatchParams(int array, int channel=0) const</div><div class=\"ttdoc\">Returns the face-varying for a given patch in array in channel.</div></div>\n-<div class=\"ttc\" id=\"aa00993_html_ab0adae83e2dd316f9ed297fe745dab55\"><div class=\"ttname\"><a href=\"a00993.html#ab0adae83e2dd316f9ed297fe745dab55\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::getPatchIndex</a></div><div class=\"ttdeci\">Index getPatchIndex(int array, int patch) const</div></div>\n-<div class=\"ttc\" id=\"aa00993_html_ab15bba670f52d55d19967104b95b9024\"><div class=\"ttname\"><a href=\"a00993.html#ab15bba670f52d55d19967104b95b9024\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetNumLocalPoints</a></div><div class=\"ttdeci\">int GetNumLocalPoints() const</div><div class=\"ttdoc\">Returns the number of local vertex points.</div></div>\n-<div class=\"ttc\" id=\"aa00993_html_ab181437e35cfc57ef3efdd368bb51a69\"><div class=\"ttname\"><a href=\"a00993.html#ab181437e35cfc57ef3efdd368bb51a69\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::LocalPointVaryingStencilPrecisionMatchesType</a></div><div class=\"ttdeci\">bool LocalPointVaryingStencilPrecisionMatchesType() const</div><div class=\"ttdoc\">Tests if the precision of the stencil table to compute local point varying values matches the given f...</div></div>\n-<div class=\"ttc\" id=\"aa00993_html_ab3133704d2b372da1204e6650d4800ee\"><div class=\"ttname\"><a href=\"a00993.html#ab3133704d2b372da1204e6650d4800ee\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetPatchArrayVertices</a></div><div class=\"ttdeci\">ConstIndexArray GetPatchArrayVertices(int array) const</div><div class=\"ttdoc\">Returns the control vertex indices for the patches in array.</div></div>\n-<div class=\"ttc\" id=\"aa00993_html_ab45dd46b44737845ca57f634f11f1bbc\"><div class=\"ttname\"><a href=\"a00993.html#ab45dd46b44737845ca57f634f11f1bbc\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetNumPtexFaces</a></div><div class=\"ttdeci\">int GetNumPtexFaces() const</div><div class=\"ttdoc\">Returns the total number of ptex faces in the mesh.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00761_source.html#l00095\">patchTable.h:95</a></div></div>\n-<div class=\"ttc\" id=\"aa00993_html_ab6810a0252d1c07b7459065c3dde2903\"><div class=\"ttname\"><a href=\"a00993.html#ab6810a0252d1c07b7459065c3dde2903\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetFVarValues</a></div><div class=\"ttdeci\">ConstIndexArray GetFVarValues(int channel=0) const</div><div class=\"ttdoc\">Returns an array of value indices for the patches in channel.</div></div>\n-<div class=\"ttc\" id=\"aa00993_html_ab72c4254f74c932eeb7d7b08805932c5\"><div class=\"ttname\"><a href=\"a00993.html#ab72c4254f74c932eeb7d7b08805932c5\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::ConstQuadOffsetsArray</a></div><div class=\"ttdeci\">Vtr::ConstArray&lt; unsigned int &gt; ConstQuadOffsetsArray</div><div class=\"ttdoc\">Accessors for the gregory patch evaluation buffers. These methods will be deprecated.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00761_source.html#l00259\">patchTable.h:259</a></div></div>\n-<div class=\"ttc\" id=\"aa00993_html_ab8a09f15edef57b9b4aed0d0d6183b75\"><div class=\"ttname\"><a href=\"a00993.html#ab8a09f15edef57b9b4aed0d0d6183b75\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::EvaluateBasis</a></div><div class=\"ttdeci\">void EvaluateBasis(PatchHandle const &amp;handle, REAL u, REAL v, REAL wP[], REAL wDu[]=0, REAL wDv[]=0, REAL wDuu[]=0, REAL wDuv[]=0, REAL wDvv[]=0) const</div><div class=\"ttdoc\">Evaluate basis functions for position and derivatives at a given (u,v) parametric location of a patch...</div></div>\n-<div class=\"ttc\" id=\"aa00993_html_ac176593fac078b4f7dd4801d586d6c41\"><div class=\"ttname\"><a href=\"a00993.html#ac176593fac078b4f7dd4801d586d6c41\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetLocalPointFaceVaryingStencilTable</a></div><div class=\"ttdeci\">StencilTableReal&lt; REAL &gt; const * GetLocalPointFaceVaryingStencilTable(int channel=0) const</div><div class=\"ttdoc\">Returns the stencil table to compute local point face-varying values.</div></div>\n-<div class=\"ttc\" id=\"aa00993_html_ac39a9665667b0a4fcc7ed028b7faaa47\"><div class=\"ttname\"><a href=\"a00993.html#ac39a9665667b0a4fcc7ed028b7faaa47\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetNumPatchesTotal</a></div><div class=\"ttdeci\">int GetNumPatchesTotal() const</div><div class=\"ttdoc\">Returns the total number of patches stored in the table.</div></div>\n-<div class=\"ttc\" id=\"aa00993_html_ac44a6262548ebebae9bbc5b5f3c43e3a\"><div class=\"ttname\"><a href=\"a00993.html#ac44a6262548ebebae9bbc5b5f3c43e3a\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetPatchParam</a></div><div class=\"ttdeci\">PatchParam GetPatchParam(PatchHandle const &amp;handle) const</div><div class=\"ttdoc\">Returns a PatchParam for the patch identified by handle.</div></div>\n-<div class=\"ttc\" id=\"aa00993_html_acd0f82d3c49b8a5dd436d4003c44b713\"><div class=\"ttname\"><a href=\"a00993.html#acd0f82d3c49b8a5dd436d4003c44b713\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::print</a></div><div class=\"ttdeci\">void print() const</div><div class=\"ttdoc\">debug helper</div></div>\n-<div class=\"ttc\" id=\"aa00993_html_ad0e821181a94f5019cc79b75d3eb74b6\"><div class=\"ttname\"><a href=\"a00993.html#ad0e821181a94f5019cc79b75d3eb74b6\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetFVarChannelLinearInterpolation</a></div><div class=\"ttdeci\">Sdc::Options::FVarLinearInterpolation GetFVarChannelLinearInterpolation(int channel=0) const</div><div class=\"ttdoc\">Deprecated.</div></div>\n-<div class=\"ttc\" id=\"aa00993_html_ad173086439fbbf0412b86b3d1262847d\"><div class=\"ttname\"><a href=\"a00993.html#ad173086439fbbf0412b86b3d1262847d\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetSharpnessIndexTable</a></div><div class=\"ttdeci\">std::vector&lt; Index &gt; const &amp; GetSharpnessIndexTable() const</div><div class=\"ttdoc\">Returns a sharpness index table for each patch (if exists)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00761_source.html#l00384\">patchTable.h:384</a></div></div>\n-<div class=\"ttc\" id=\"aa00993_html_ad2744ba943362370738d6bd8448cd779\"><div class=\"ttname\"><a href=\"a00993.html#ad2744ba943362370738d6bd8448cd779\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetPatchArrayDescriptor</a></div><div class=\"ttdeci\">PatchDescriptor GetPatchArrayDescriptor(int array) const</div><div class=\"ttdoc\">Returns the PatchDescriptor for the patches in array.</div></div>\n-<div class=\"ttc\" id=\"aa00993_html_ad452cef79832abb71eef0c3d88acc1a0\"><div class=\"ttname\"><a href=\"a00993.html#ad452cef79832abb71eef0c3d88acc1a0\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::PatchTableBuilder</a></div><div class=\"ttdeci\">friend class PatchTableBuilder</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00761_source.html#l00531\">patchTable.h:531</a></div></div>\n-<div class=\"ttc\" id=\"aa00993_html_ad690cee703683b70def7a4419120cc9a\"><div class=\"ttname\"><a href=\"a00993.html#ad690cee703683b70def7a4419120cc9a\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::EvaluateBasisVarying</a></div><div class=\"ttdeci\">void EvaluateBasisVarying(PatchHandle const &amp;handle, REAL u, REAL v, REAL wP[], REAL wDu[]=0, REAL wDv[]=0, REAL wDuu[]=0, REAL wDuv[]=0, REAL wDvv[]=0) const</div><div class=\"ttdoc\">Evaluate basis functions for a varying value and derivatives at a given (u,v) parametric location of ...</div></div>\n-<div class=\"ttc\" id=\"aa00993_html_ad6bafe91da1dcf5b8fb1f7c8cb4ed619\"><div class=\"ttname\"><a href=\"a00993.html#ad6bafe91da1dcf5b8fb1f7c8cb4ed619\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetLocalPointVaryingStencilTable</a></div><div class=\"ttdeci\">StencilTable const * GetLocalPointVaryingStencilTable() const</div><div class=\"ttdoc\">Returns the stencil table to compute local point varying values.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00761_source.html#l00783\">patchTable.h:783</a></div></div>\n-<div class=\"ttc\" id=\"aa00993_html_ad71e6ae07059dc39b0550c98cfcee291\"><div class=\"ttname\"><a href=\"a00993.html#ad71e6ae07059dc39b0550c98cfcee291\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::QuadOffsetsTable</a></div><div class=\"ttdeci\">std::vector&lt; unsigned int &gt; QuadOffsetsTable</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00761_source.html#l00389\">patchTable.h:389</a></div></div>\n-<div class=\"ttc\" id=\"aa00993_html_ad897fbe60d2921cfbf5e1bed8760d49f\"><div class=\"ttname\"><a href=\"a00993.html#ad897fbe60d2921cfbf5e1bed8760d49f\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetPatchVertices</a></div><div class=\"ttdeci\">ConstIndexArray GetPatchVertices(int array, int patch) const</div><div class=\"ttdoc\">Returns the control vertex indices for patch in array.</div></div>\n-<div class=\"ttc\" id=\"aa00993_html_ad9481ab788a82c6a48364fff6a8ab193\"><div class=\"ttname\"><a href=\"a00993.html#ad9481ab788a82c6a48364fff6a8ab193\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetPatchFVarPatchParam</a></div><div class=\"ttdeci\">PatchParam GetPatchFVarPatchParam(PatchHandle const &amp;handle, int channel=0) const</div><div class=\"ttdoc\">Returns the value indices for a given patch in channel.</div></div>\n-<div class=\"ttc\" id=\"aa00993_html_ad98dc91babcdddf20876169a70e10402\"><div class=\"ttname\"><a href=\"a00993.html#ad98dc91babcdddf20876169a70e10402\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetFVarValueStride</a></div><div class=\"ttdeci\">int GetFVarValueStride(int channel=0) const</div><div class=\"ttdoc\">Returns the stride between patches in the value index array of channel.</div></div>\n-<div class=\"ttc\" id=\"aa00993_html_adb4260cb1d469935a32df5ad35d98bb4\"><div class=\"ttname\"><a href=\"a00993.html#adb4260cb1d469935a32df5ad35d98bb4\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetFVarPatchParams</a></div><div class=\"ttdeci\">ConstPatchParamArray GetFVarPatchParams(int channel=0) const</div><div class=\"ttdoc\">Returns an array of face-varying patch param for channel.</div></div>\n-<div class=\"ttc\" id=\"aa00993_html_adccd68da8d26bb5f5c2b7f29e0a14e89\"><div class=\"ttname\"><a href=\"a00993.html#adccd68da8d26bb5f5c2b7f29e0a14e89\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetFVarPatchDescriptor</a></div><div class=\"ttdeci\">PatchDescriptor GetFVarPatchDescriptor(int channel=0) const</div><div class=\"ttdoc\">Returns the default/irregular patch descriptor for channel.</div></div>\n-<div class=\"ttc\" id=\"aa00993_html_adf2a870e7fccf780894d17160b7967f0\"><div class=\"ttname\"><a href=\"a00993.html#adf2a870e7fccf780894d17160b7967f0\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetNumLocalPointsVarying</a></div><div class=\"ttdeci\">int GetNumLocalPointsVarying() const</div><div class=\"ttdoc\">Returns the number of local varying points.</div></div>\n-<div class=\"ttc\" id=\"aa00993_html_ae7d9c513e950df25aebfeed309666764\"><div class=\"ttname\"><a href=\"a00993.html#ae7d9c513e950df25aebfeed309666764\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::LocalPointStencilPrecisionMatchesType</a></div><div class=\"ttdeci\">bool LocalPointStencilPrecisionMatchesType() const</div><div class=\"ttdoc\">Tests if the precision of the stencil table to compute local point vertex values matches the given fl...</div></div>\n-<div class=\"ttc\" id=\"aa00993_html_af903f44e0f0743652b5f465ff60492a2\"><div class=\"ttname\"><a href=\"a00993.html#af903f44e0f0743652b5f465ff60492a2\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetLocalPointVaryingStencilTable</a></div><div class=\"ttdeci\">StencilTableReal&lt; REAL &gt; const * GetLocalPointVaryingStencilTable() const</div><div class=\"ttdoc\">Returns the stencil table to compute local point varying values.</div></div>\n-<div class=\"ttc\" id=\"aa00993_html_afc91733be6989f2f18c4817fc43ab070\"><div class=\"ttname\"><a href=\"a00993.html#afc91733be6989f2f18c4817fc43ab070\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetNumLocalPointsFaceVarying</a></div><div class=\"ttdeci\">int GetNumLocalPointsFaceVarying(int channel=0) const</div><div class=\"ttdoc\">Returns the number of local face-varying points for channel.</div></div>\n-<div class=\"ttc\" id=\"aa00997_html\"><div class=\"ttname\"><a href=\"a00997.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::PatchHandle</a></div><div class=\"ttdoc\">Handle that can be used as unique patch identifier within PatchTable.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00761_source.html#l00060\">patchTable.h:60</a></div></div>\n-<div class=\"ttc\" id=\"aa00997_html_a31bdf15525ab73560c2b725ff7f8ae3a\"><div class=\"ttname\"><a href=\"a00997.html#a31bdf15525ab73560c2b725ff7f8ae3a\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::PatchHandle::patchIndex</a></div><div class=\"ttdeci\">Index patchIndex</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00761_source.html#l00068\">patchTable.h:68</a></div></div>\n-<div class=\"ttc\" id=\"aa00997_html_a4430ecde7e1d784b2bef6dc4c2ff04c2\"><div class=\"ttname\"><a href=\"a00997.html#a4430ecde7e1d784b2bef6dc4c2ff04c2\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::PatchHandle::arrayIndex</a></div><div class=\"ttdeci\">Index arrayIndex</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00761_source.html#l00067\">patchTable.h:67</a></div></div>\n-<div class=\"ttc\" id=\"aa00997_html_a46d1a8129375c3ee40a33a81d44b685a\"><div class=\"ttname\"><a href=\"a00997.html#a46d1a8129375c3ee40a33a81d44b685a\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::PatchHandle::vertIndex</a></div><div class=\"ttdeci\">Index vertIndex</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00761_source.html#l00069\">patchTable.h:69</a></div></div>\n-<div class=\"ttc\" id=\"aa01061_html\"><div class=\"ttname\"><a href=\"a01061.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal</a></div><div class=\"ttdoc\">Table of subdivision stencils.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00141\">stencilTable.h:141</a></div></div>\n-<div class=\"ttc\" id=\"aa01065_html\"><div class=\"ttname\"><a href=\"a01065.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTable</a></div><div class=\"ttdoc\">Stencil table class wrapping the template for compatibility.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00273\">stencilTable.h:273</a></div></div>\n-<div class=\"ttc\" id=\"aa01337_html_a5b87eaca6ca0833462c9d4ad84df167b\"><div class=\"ttname\"><a href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167b\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::FVarLinearInterpolation</a></div><div class=\"ttdeci\">FVarLinearInterpolation</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00734_source.html#l00060\">options.h:60</a></div></div>\n-<div class=\"ttc\" id=\"aa01353_html\"><div class=\"ttname\"><a href=\"a01353.html\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00683_source.html#l00053\">array.h:53</a></div></div>\n-<div class=\"ttc\" id=\"aa01357_html\"><div class=\"ttname\"><a href=\"a01357.html\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::Array</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00683_source.html#l00105\">array.h:105</a></div></div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>}  <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span> </div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_OMP_KERNEL_H</span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa00912_html_a870745ff3e883b32547d4db42b3be2bd\"><div class=\"ttname\"><a href=\"a00912.html#a870745ff3e883b32547d4db42b3be2bd\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::OmpEvalStencils</a></div><div class=\"ttdeci\">void OmpEvalStencils(float const *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, int const *sizes, int const *offsets, int const *indices, float const *weights, int start, int end)</div></div>\n+<div class=\"ttc\" id=\"aa01141_html\"><div class=\"ttname\"><a href=\"a01141.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::BufferDescriptor</a></div><div class=\"ttdoc\">BufferDescriptor is a struct which describes buffer elements in interleaved data buffers....</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00061\">bufferDescriptor.h:61</a></div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7f420b72a822828cfa8b0561c695a5cc.html\">far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00761.html\">patchTable.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00761.html\">ompKernel.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,12 +1,12 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-patchTable.h\n+ompKernel.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n 2// Copyright 2013 Pixar\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n@@ -24,1002 +24,82 @@\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n 24\n-25#ifndef OPENSUBDIV3_FAR_PATCH_TABLE_H\n-26#define OPENSUBDIV3_FAR_PATCH_TABLE_H\n+25#ifndef OPENSUBDIV3_OSD_OMP_KERNEL_H\n+26#define OPENSUBDIV3_OSD_OMP_KERNEL_H\n 27\n 28#include \"../version.h\"\n 29\n-30#include \"../far/patchDescriptor.h\"\n-31#include \"../far/patchParam.h\"\n-32#include \"../far/stencilTable.h\"\n-33\n-34#include \"../sdc/options.h\"\n-35\n-36#include <vector>\n-37\n-38namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-39namespace OPENSUBDIV_VERSION {\n-40\n-41namespace Far {\n-42\n-_\b5_\b5class _\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be {\n-56\n-57public:\n+30namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+31namespace OPENSUBDIV_VERSION {\n+32\n+33namespace Osd {\n+34\n+35struct BufferDescriptor;\n+36\n+37void\n+_\b3_\b8_\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(float const * src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+39 float * dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+40 int const * sizes,\n+41 int const * offsets,\n+42 int const * indices,\n+43 float const * weights,\n+44 int start, int end);\n+45\n+46void\n+_\b4_\b7_\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(float const * src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+48 float * dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+49 float * dstDu, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDuDesc,\n+50 float * dstDv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDvDesc,\n+51 int const * sizes,\n+52 int const * offsets,\n+53 int const * indices,\n+54 float const * weights,\n+55 float const * duWeights,\n+56 float const * dvWeights,\n+57 int start, int end);\n 58\n-_\b6_\b0 class _\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be {\n-61 // XXXX manuelk members will eventually be made private\n-62 public:\n-63\n-_\b6_\b4 friend class _\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be;\n-_\b6_\b5 friend class _\bP_\ba_\bt_\bc_\bh_\bM_\ba_\bp;\n-66\n-_\b6_\b7 _\bI_\bn_\bd_\be_\bx _\ba_\br_\br_\ba_\by_\bI_\bn_\bd_\be_\bx, // Array index of the patch\n-_\b6_\b8 _\bp_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx, // Absolute Index of the patch\n-_\b6_\b9 _\bv_\be_\br_\bt_\bI_\bn_\bd_\be_\bx; // Relative offset to the first CV of the patch in array\n-70 };\n-71\n-72public:\n-73\n-_\b7_\b5 _\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be(_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be const & src);\n-76\n-_\b7_\b8 _\b~_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be();\n+59void\n+_\b6_\b0_\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(float const * src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+61 float * dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+62 float * dstDu, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDuDesc,\n+63 float * dstDv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDvDesc,\n+64 float * dstDuu, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDuuDesc,\n+65 float * dstDuv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDuvDesc,\n+66 float * dstDvv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDvvDesc,\n+67 int const * sizes,\n+68 int const * offsets,\n+69 int const * indices,\n+70 float const * weights,\n+71 float const * duWeights,\n+72 float const * dvWeights,\n+73 float const * duuWeights,\n+74 float const * duvWeights,\n+75 float const * dvvWeights,\n+76 int start, int end);\n+77\n+78} // end namespace Osd\n 79\n-_\b8_\b1 bool _\bI_\bs_\bF_\be_\ba_\bt_\bu_\br_\be_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be() const;\n+80} // end namespace OPENSUBDIV_VERSION\n+81using namespace OPENSUBDIV_VERSION;\n 82\n-_\b8_\b4 int _\bG_\be_\bt_\bN_\bu_\bm_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bV_\be_\br_\bt_\bi_\bc_\be_\bs_\bT_\bo_\bt_\ba_\bl() const {\n-85 return (int)_patchVerts.size();\n-86 }\n-87\n-_\b8_\b9 int _\bG_\be_\bt_\bN_\bu_\bm_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bT_\bo_\bt_\ba_\bl() const;\n-90\n-_\b9_\b2 int _\bG_\be_\bt_\bM_\ba_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be() const { return _maxValence; }\n-93\n-_\b9_\b5 int _\bG_\be_\bt_\bN_\bu_\bm_\bP_\bt_\be_\bx_\bF_\ba_\bc_\be_\bs() const { return _numPtexFaces; }\n-96\n-97\n-99\n-105\n-_\b1_\b0_\b7 _\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be const & handle) const;\n-108\n-_\b1_\b1_\b0 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bV_\be_\br_\bt_\bi_\bc_\be_\bs(_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be const & handle) const;\n-111\n-_\b1_\b1_\b3 _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm(_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be const & handle) const;\n-114\n-_\b1_\b1_\b6 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bV_\be_\br_\bt_\bi_\bc_\be_\bs(int array, int patch) const;\n-117\n-_\b1_\b1_\b9 _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm(int array, int patch) const;\n-121\n-122\n-124\n-130\n-_\b1_\b3_\b2 int _\bG_\be_\bt_\bN_\bu_\bm_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs() const;\n-133\n-_\b1_\b3_\b5 int _\bG_\be_\bt_\bN_\bu_\bm_\bP_\ba_\bt_\bc_\bh_\be_\bs(int array) const;\n-136\n-_\b1_\b3_\b8 int _\bG_\be_\bt_\bN_\bu_\bm_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bV_\be_\br_\bt_\bi_\bc_\be_\bs(int array) const;\n-139\n-_\b1_\b4_\b1 _\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(int array) const;\n-142\n-_\b1_\b4_\b4 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\br_\bt_\bi_\bc_\be_\bs(int array) const;\n-145\n-_\b1_\b4_\b7 _\bC_\bo_\bn_\bs_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bA_\br_\br_\ba_\by const _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bs(int array) const;\n-149\n-150\n-152\n-159\n-_\b1_\b6_\b1 int _\bG_\be_\bt_\bN_\bu_\bm_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bs() const;\n-162\n-164 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be() const;\n-165\n-167 template <typename REAL>\n-_\b1_\b6_\b8 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b> const *_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be() const;\n-169\n-_\b1_\b7_\b2 template <typename REAL> bool _\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\bM_\ba_\bt_\bc_\bh_\be_\bs_\bT_\by_\bp_\be()\n-const;\n-173\n-186 template <class T> void\n-187 _\bC_\bo_\bm_\bp_\bu_\bt_\be_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bV_\ba_\bl_\bu_\be_\bs(T const *src, T *dst) const;\n-188\n-189\n-_\b1_\b9_\b1 int _\bG_\be_\bt_\bN_\bu_\bm_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg() const;\n-192\n-194 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be() const;\n-195\n-197 template <typename REAL>\n-_\b1_\b9_\b8 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b> const *_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be() const;\n-199\n-_\b2_\b0_\b2 template <typename REAL> bool _\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\bM_\ba_\bt_\bc_\bh_\be_\bs_\bT_\by_\bp_\be\n-() const;\n-203\n-216 template <class T> void\n-217 _\bC_\bo_\bm_\bp_\bu_\bt_\be_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bV_\ba_\bl_\bu_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(T const *src, T *dst) const;\n-218\n-219\n-_\b2_\b2_\b1 int _\bG_\be_\bt_\bN_\bu_\bm_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(int channel = 0) const;\n-222\n-224 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(int channel = 0)\n-const;\n-225\n-227 template <typename REAL>\n-_\b2_\b2_\b8 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b> const * _\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(int\n-channel = 0) const;\n-229\n-_\b2_\b3_\b2 template <typename REAL> bool\n-_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\bM_\ba_\bt_\bc_\bh_\be_\bs_\bT_\by_\bp_\be() const;\n-233\n-248 template <class T> void\n-249 _\bC_\bo_\bm_\bp_\bu_\bt_\be_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bV_\ba_\bl_\bu_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(T const *src, T *dst, int channel = 0)\n-const;\n-251\n-252\n-254\n-255\n-_\b2_\b5_\b9 typedef _\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by_\b<_\bu_\bn_\bs_\bi_\bg_\bn_\be_\bd_\b _\bi_\bn_\bt_\b> _\bC_\bo_\bn_\bs_\bt_\bQ_\bu_\ba_\bd_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bA_\br_\br_\ba_\by;\n-260\n-_\b2_\b6_\b2 _\bC_\bo_\bn_\bs_\bt_\bQ_\bu_\ba_\bd_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bA_\br_\br_\ba_\by _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bQ_\bu_\ba_\bd_\bO_\bf_\bf_\bs_\be_\bt_\bs(_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be const & handle)\n-const;\n-263\n-_\b2_\b6_\b4 typedef std::vector<Index> _\bV_\be_\br_\bt_\be_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be_\bT_\ba_\bb_\bl_\be;\n-265\n-_\b2_\b6_\b7 _\bV_\be_\br_\bt_\be_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be_\bT_\ba_\bb_\bl_\be const & _\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be_\bT_\ba_\bb_\bl_\be() const {\n-268 return _vertexValenceTable;\n-269 }\n-271\n-272\n-274\n-280\n-_\b2_\b8_\b3 float _\bG_\be_\bt_\bS_\bi_\bn_\bg_\bl_\be_\bC_\br_\be_\ba_\bs_\be_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs_\bV_\ba_\bl_\bu_\be(_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be const & handle) const;\n-284\n-_\b2_\b8_\b7 float _\bG_\be_\bt_\bS_\bi_\bn_\bg_\bl_\be_\bC_\br_\be_\ba_\bs_\be_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs_\bV_\ba_\bl_\bu_\be(int array, int patch) const;\n-289\n-290\n-292\n-298\n-_\b3_\b0_\b0 _\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br _\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br() const;\n-301\n-_\b3_\b0_\b3 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bV_\ba_\br_\by_\bi_\bn_\bg_\bV_\be_\br_\bt_\bi_\bc_\be_\bs(_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be const & handle) const;\n-304\n-_\b3_\b0_\b6 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bV_\ba_\br_\by_\bi_\bn_\bg_\bV_\be_\br_\bt_\bi_\bc_\be_\bs(int array, int patch) const;\n-307\n-_\b3_\b0_\b9 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\ba_\br_\by_\bi_\bn_\bg_\bV_\be_\br_\bt_\bi_\bc_\be_\bs(int array) const;\n-310\n-_\b3_\b1_\b2 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bV_\be_\br_\bt_\bi_\bc_\be_\bs() const;\n-314\n-315\n-317\n-323\n-_\b3_\b2_\b5 int _\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs() const;\n-326\n-_\b3_\b2_\b8 _\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br _\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\bR_\be_\bg_\bu_\bl_\ba_\br(int channel = 0) const;\n-329\n-_\b3_\b3_\b1 _\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br _\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\bI_\br_\br_\be_\bg_\bu_\bl_\ba_\br(int channel = 0) const;\n-332\n-_\b3_\b3_\b4 _\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br _\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(int channel = 0) const;\n-335\n-_\b3_\b3_\b7 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bs(_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be const & handle, int channel\n-= 0) const;\n-338\n-_\b3_\b4_\b0 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bs(int array, int patch, int channel = 0)\n-const;\n-341\n-_\b3_\b4_\b3 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bs(int array, int channel = 0) const;\n-344\n-_\b3_\b4_\b6 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bG_\be_\bt_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bs(int channel = 0) const;\n-347\n-_\b3_\b4_\b9 int _\bG_\be_\bt_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bS_\bt_\br_\bi_\bd_\be(int channel = 0) const;\n-350\n-_\b3_\b5_\b2 _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm(_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be const & handle, int channel =\n-0) const;\n-353\n-_\b3_\b5_\b5 _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm(int array, int patch, int channel = 0)\n-const;\n-356\n-_\b3_\b5_\b8 _\bC_\bo_\bn_\bs_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bA_\br_\br_\ba_\by _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bs(int array, int channel =\n-0) const;\n-359\n-_\b3_\b6_\b1 _\bC_\bo_\bn_\bs_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bA_\br_\br_\ba_\by _\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bs(int channel = 0) const;\n-362\n-_\b3_\b6_\b4 _\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bF_\bV_\ba_\br_\bL_\bi_\bn_\be_\ba_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn _\bG_\be_\bt_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bL_\bi_\bn_\be_\ba_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn(int\n-channel = 0) const;\n-366\n-367\n-369\n-374\n-_\b3_\b7_\b5 typedef std::vector<Index> _\bP_\ba_\bt_\bc_\bh_\bV_\be_\br_\bt_\bs_\bT_\ba_\bb_\bl_\be;\n-376\n-_\b3_\b7_\b8 _\bP_\ba_\bt_\bc_\bh_\bV_\be_\br_\bt_\bs_\bT_\ba_\bb_\bl_\be const & _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bV_\be_\br_\bt_\bi_\bc_\be_\bs_\bT_\ba_\bb_\bl_\be() const { return\n-_patchVerts; }\n-379\n-_\b3_\b8_\b1 _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bT_\ba_\bb_\bl_\be const & _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bT_\ba_\bb_\bl_\be() const { return _paramTable; }\n-382\n-_\b3_\b8_\b4 std::vector<Index> const &_\bG_\be_\bt_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs_\bI_\bn_\bd_\be_\bx_\bT_\ba_\bb_\bl_\be() const { return\n-_sharpnessIndices; }\n-385\n-_\b3_\b8_\b7 std::vector<float> const &_\bG_\be_\bt_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs_\bV_\ba_\bl_\bu_\be_\bs() const { return\n-_sharpnessValues; }\n-388\n-_\b3_\b8_\b9 typedef std::vector<unsigned int> _\bQ_\bu_\ba_\bd_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bT_\ba_\bb_\bl_\be;\n-390\n-_\b3_\b9_\b2 _\bQ_\bu_\ba_\bd_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bT_\ba_\bb_\bl_\be const & _\bG_\be_\bt_\bQ_\bu_\ba_\bd_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bT_\ba_\bb_\bl_\be() const {\n-393 return _quadOffsetsTable;\n-394 }\n-396\n-_\b3_\b9_\b8 void _\bp_\br_\bi_\bn_\bt() const;\n-399\n-400public:\n-401\n-403\n-405\n-428 template <typename REAL>\n-_\b4_\b2_\b9 void _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bB_\ba_\bs_\bi_\bs(_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be const & handle, REAL u, REAL v,\n-430 REAL wP[], REAL wDu[] = 0, REAL wDv[] = 0,\n-431 REAL wDuu[] = 0, REAL wDuv[] = 0, REAL wDvv[] = 0) const;\n-432\n-435 void _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bB_\ba_\bs_\bi_\bs(_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be const & handle, float u, float v,\n-436 float wP[], float wDu[] = 0, float wDv[] = 0,\n-437 float wDuu[] = 0, float wDuv[] = 0, float wDvv[] = 0) const;\n-438\n-441 void _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bB_\ba_\bs_\bi_\bs(_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be const & handle, double u, double v,\n-442 double wP[], double wDu[] = 0, double wDv[] = 0,\n-443 double wDuu[] = 0, double wDuv[] = 0, double wDvv[] = 0) const;\n-444\n-467 template <typename REAL>\n-_\b4_\b6_\b8 void _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bB_\ba_\bs_\bi_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be const & handle, REAL u, REAL v,\n-469 REAL wP[], REAL wDu[] = 0, REAL wDv[] = 0,\n-470 REAL wDuu[] = 0, REAL wDuv[] = 0, REAL wDvv[] = 0) const;\n-471\n-474 void _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bB_\ba_\bs_\bi_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be const & handle, float u, float v,\n-475 float wP[], float wDu[] = 0, float wDv[] = 0,\n-476 float wDuu[] = 0, float wDuv[] = 0, float wDvv[] = 0) const;\n-477\n-480 void _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bB_\ba_\bs_\bi_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be const & handle, double u, double v,\n-481 double wP[], double wDu[] = 0, double wDv[] = 0,\n-482 double wDuu[] = 0, double wDuv[] = 0, double wDvv[] = 0) const;\n-483\n-508 template <typename REAL>\n-_\b5_\b0_\b9 void _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be const & handle, REAL u, REAL v,\n-510 REAL wP[], REAL wDu[] = 0, REAL wDv[] = 0,\n-511 REAL wDuu[] = 0, REAL wDuv[] = 0, REAL wDvv[] = 0,\n-512 int channel = 0) const;\n-513\n-516 void _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be const & handle, float u, float v,\n-517 float wP[], float wDu[] = 0, float wDv[] = 0,\n-518 float wDuu[] = 0, float wDuv[] = 0, float wDvv[] = 0,\n-519 int channel = 0) const;\n-520\n-523 void _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be const & handle, double u, double\n-v,\n-524 double wP[], double wDu[] = 0, double wDv[] = 0,\n-525 double wDuu[] = 0, double wDuv[] = 0, double wDvv[] = 0,\n-526 int channel = 0) const;\n-528\n-529protected:\n-530\n-_\b5_\b3_\b1 friend class _\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bB_\bu_\bi_\bl_\bd_\be_\br;\n-532\n-533 // Factory constructor\n-_\b5_\b3_\b4 _\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be(int maxvalence);\n-535\n-_\b5_\b3_\b6 _\bI_\bn_\bd_\be_\bx _\bg_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx(int array, int patch) const;\n-537\n-_\b5_\b3_\b8 _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bA_\br_\br_\ba_\by _\bg_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bs(int arrayIndex);\n-539\n-_\b5_\b4_\b0 _\bI_\bn_\bd_\be_\bx * _\bg_\be_\bt_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs_\bI_\bn_\bd_\bi_\bc_\be_\bs(_\bI_\bn_\bd_\be_\bx arrayIndex);\n-_\b5_\b4_\b1 float * _\bg_\be_\bt_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs_\bV_\ba_\bl_\bu_\be_\bs(_\bI_\bn_\bd_\be_\bx arrayIndex);\n-542\n-543private:\n-544\n-545 //\n-546 // Patch arrays\n-547 //\n-548 struct PatchArray {\n-549 PatchArray(_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br d, int np, _\bI_\bn_\bd_\be_\bx v, _\bI_\bn_\bd_\be_\bx p, _\bI_\bn_\bd_\be_\bx qo) :\n-550 desc(d), numPatches(np), vertIndex(v),\n-551 patchIndex(p), quadOffsetIndex (qo) { }\n-552\n-553 void print() const;\n-554\n-555 _\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br desc; // type of patches in the array\n-556\n-557 int numPatches; // number of patches in the array\n-558\n-559 _\bI_\bn_\bd_\be_\bx vertIndex, // index to the first control vertex\n-560 patchIndex, // absolute index of the first patch in the array\n-561 quadOffsetIndex; // index of the first quad offset entry\n-562 };\n-563\n-564 typedef std::vector<PatchArray> PatchArrayVector;\n-565\n-566 PatchArray & getPatchArray(_\bI_\bn_\bd_\be_\bx arrayIndex);\n-567 PatchArray const & getPatchArray(_\bI_\bn_\bd_\be_\bx arrayIndex) const;\n-568\n-569 void reservePatchArrays(int numPatchArrays);\n-570 void pushPatchArray(PatchDescriptor desc, int npatches,\n-571 _\bI_\bn_\bd_\be_\bx * vidx, _\bI_\bn_\bd_\be_\bx * pidx, _\bI_\bn_\bd_\be_\bx * qoidx=0);\n-572\n-573 _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getPatchArrayVertices(int arrayIndex);\n-574\n-575 _\bI_\bn_\bd_\be_\bx findPatchArray(PatchDescriptor desc);\n-576\n-577\n-578 //\n-579 // Varying patch arrays\n-580 //\n-581 _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getPatchArrayVaryingVertices(int arrayIndex);\n-582\n-583 void allocateVaryingVertices(\n-584 PatchDescriptor desc, int numPatches);\n-585 void populateVaryingVertices();\n-586\n-587 //\n-588 // Face-varying patch channels\n-589 //\n-590\n-591 //\n-592 // FVarPatchChannel\n-593 //\n-594 // Stores a record for each patch in the primitive :\n-595 //\n-596 // - Each patch in the PatchTable has a corresponding patch in each\n-597 // face-varying patch channel. Patch vertex indices are sorted in the same\n-598 // patch-type order as PatchTable::PTables. Face-varying data for a patch\n-599 // can therefore be quickly accessed by using the patch primitive ID as\n-600 // index into patchValueOffsets to locate the face-varying control vertex\n-601 // indices.\n-602 //\n-603 // - Face-varying channels can have a different interpolation modes\n-604 //\n-605 // - Unlike \"vertex\" patches, there are no transition masks required\n-606 // for face-varying patches.\n-607 //\n-608 // - Face-varying patches still require boundary edge masks.\n-609 //\n-610 // - currently most patches with sharp boundaries but smooth interiors have\n-611 // to be isolated to level 10 : we need a special type of bicubic patch\n-612 // similar to single-crease to resolve this condition without requiring\n-613 // isolation if possible\n-614 //\n-615 struct FVarPatchChannel {\n-616 _\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bF_\bV_\ba_\br_\bL_\bi_\bn_\be_\ba_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn interpolation;\n-617\n-618 PatchDescriptor regDesc;\n-619 PatchDescriptor irregDesc;\n-620\n-621 int stride;\n-622\n-623 std::vector<Index> patchValues;\n-624 std::vector<PatchParam> patchParam;\n-625 };\n-626 typedef std::vector<FVarPatchChannel> FVarPatchChannelVector;\n-627\n-628 FVarPatchChannel & getFVarPatchChannel(int channel);\n-629 FVarPatchChannel const & getFVarPatchChannel(int channel) const;\n-630\n-631 void allocateFVarPatchChannels(int numChannels);\n-632 void allocateFVarPatchChannelValues(\n-633 PatchDescriptor regDesc, PatchDescriptor irregDesc,\n-634 int numPatches, int channel);\n-635\n-636 // deprecated\n-637 void setFVarPatchChannelLinearInterpolation(\n-638 _\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bF_\bV_\ba_\br_\bL_\bi_\bn_\be_\ba_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn interpolation, int channel);\n-639\n-640 _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getFVarValues(int channel);\n-641 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getPatchFVarValues(int patch, int channel) const;\n-642\n-643 _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bA_\br_\br_\ba_\by getFVarPatchParams(int channel);\n-644 PatchParam getPatchFVarPatchParam(int patch, int channel) const;\n-645\n-646private:\n-647 //\n-648 // Simple private class to hold stencil table pointers of varying\n-precision,\n-649 // where the discriminant of the precision is external.\n-650 //\n-651 // NOTE that this is a simple pointer container and NOT a smart pointer\n-that\n-652 // manages the ownership of the object referred to by it.\n-653 //\n-654 class StencilTablePtr {\n-655 private:\n-656 typedef StencilTableReal<float> float_type;\n-657 typedef StencilTableReal<double> double_type;\n-658\n-659 union {\n-660 float_type * _fPtr;\n-661 double_type * _dPtr;\n-662 };\n-663\n-664 public:\n-665 StencilTablePtr() { _fPtr = 0; }\n-666 StencilTablePtr(float_type * ptr) { _fPtr = ptr; }\n-667 StencilTablePtr(double_type * ptr) { _dPtr = ptr; }\n-668\n-669 operator bool() const { return _fPtr != 0; }\n-670\n-671 void Set() { _fPtr = 0; }\n-672 void Set(float_type * ptr) { _fPtr = ptr; }\n-673 void Set(double_type * ptr) { _dPtr = ptr; }\n-674\n-675 template <typename REAL> StencilTableReal<REAL> * Get() const;\n-676 };\n-677\n-678private:\n-679\n-680 //\n-681 // Topology\n-682 //\n-683\n-684 int _maxValence, // highest vertex valence found in the mesh\n-685 _numPtexFaces; // total number of ptex faces\n-686\n-687 _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\bc_\bt_\bo_\br _patchArrays; // Vector of descriptors for arrays of\n-patches\n-688\n-689 std::vector<Index> _patchVerts; // Indices of the control vertices of the\n-patches\n-690\n-691 _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bT_\ba_\bb_\bl_\be _paramTable; // PatchParam bitfields (one per patch)\n-692\n-693 //\n-694 // Extraordinary vertex closed-form evaluation / endcap basis conversion\n-695 //\n-696 // XXXtakahito: these data will probably be replaced with mask coefficient\n-or something\n-697 // SchemeWorker populates.\n-698 //\n-699 _\bQ_\bu_\ba_\bd_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bT_\ba_\bb_\bl_\be _quadOffsetsTable; // Quad offsets (for Gregory patches)\n-700 _\bV_\be_\br_\bt_\be_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be_\bT_\ba_\bb_\bl_\be _vertexValenceTable; // Vertex valence table (for\n-Gregory patches)\n-701\n-702 StencilTablePtr _localPointStencils; // local point conversion stencils\n-703 StencilTablePtr _localPointVaryingStencils; // local point varying stencils\n-704\n-705 //\n-706 // Varying data\n-707 //\n-708 PatchDescriptor _varyingDesc;\n-709\n-710 std::vector<Index> _varyingVerts;\n-711\n-712 //\n-713 // Face-varying data\n-714 //\n-715 FVarPatchChannelVector _fvarChannels;\n-716\n-717 std::vector<StencilTablePtr> _localPointFaceVaryingStencils;\n-718\n-719 //\n-720 // 'single-crease' patch sharpness tables\n-721 //\n-722 std::vector<Index> _sharpnessIndices; // Indices of single-crease sharpness\n-(one per patch)\n-723 std::vector<float> _sharpnessValues; // Sharpness values.\n-724\n-725 //\n-726 // Construction history -- relevant to at least one public query:\n-727 //\n-728 unsigned int _isUniformLinear : 1;\n-729\n-730 //\n-731 // Precision -- only applies to local-point stencil tables\n-732 //\n-733 unsigned int _vertexPrecisionIsDouble : 1;\n-734 unsigned int _varyingPrecisionIsDouble : 1;\n-735 unsigned int _faceVaryingPrecisionIsDouble : 1;\n-736};\n-737\n-738\n-739//\n-740// Template specializations for float/double -- to be defined before used:\n-741//\n-742template <> inline StencilTableReal<float> *\n-743PatchTable::StencilTablePtr::Get<float>() const { return _fPtr; }\n-744\n-745template <> inline StencilTableReal<double> *\n-746PatchTable::StencilTablePtr::Get<double>() const { return _dPtr; }\n-747\n-_\b7_\b4_\b8template <> inline bool\n-749PatchTable::LocalPointStencilPrecisionMatchesType<float>() const {\n-750 return !_vertexPrecisionIsDouble;\n-751}\n-_\b7_\b5_\b2template <> inline bool\n-753PatchTable::LocalPointVaryingStencilPrecisionMatchesType<float>() const {\n-754 return !_varyingPrecisionIsDouble;\n-755}\n-_\b7_\b5_\b6template <> inline bool\n-757PatchTable::LocalPointFaceVaryingStencilPrecisionMatchesType<float>() const\n-{\n-758 return !_faceVaryingPrecisionIsDouble;\n-759}\n-760\n-_\b7_\b6_\b1template <> inline bool\n-762PatchTable::LocalPointStencilPrecisionMatchesType<double>() const {\n-763 return _vertexPrecisionIsDouble;\n-764}\n-_\b7_\b6_\b5template <> inline bool\n-766PatchTable::LocalPointVaryingStencilPrecisionMatchesType<double>() const {\n-767 return _varyingPrecisionIsDouble;\n-768}\n-_\b7_\b6_\b9template <> inline bool\n-770PatchTable::LocalPointFaceVaryingStencilPrecisionMatchesType<double>() const\n-{\n-771 return _faceVaryingPrecisionIsDouble;\n-772}\n-773\n-774//\n-775// StencilTable access -- backward compatible and generic:\n-776//\n-777inline _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *\n-_\b7_\b7_\b8_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be() const {\n-779 assert(LocalPointStencilPrecisionMatchesType<float>());\n-780 return static_cast<_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *>(_localPointStencils.Get<float>());\n-781}\n-782inline _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *\n-_\b7_\b8_\b3_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be() const {\n-784 assert(LocalPointVaryingStencilPrecisionMatchesType<float>());\n-785 return static_cast<_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *>(\n-786 _localPointVaryingStencils.Get<float>());\n-787}\n-788inline _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *\n-_\b7_\b8_\b9_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(int channel) const {\n-790 assert(LocalPointFaceVaryingStencilPrecisionMatchesType<float>());\n-791 if (channel >= 0 && channel < (int)_localPointFaceVaryingStencils.size()) {\n-792 return static_cast<_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *>(\n-793 _localPointFaceVaryingStencils[channel].Get<float>());\n-794 }\n-795 return NULL;\n-796}\n-797\n-798template <typename REAL>\n-799inline _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b> const *\n-_\b8_\b0_\b0_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be() const {\n-801 assert(LocalPointStencilPrecisionMatchesType<REAL>());\n-802 return _localPointStencils.Get<REAL>();\n-803}\n-804template <typename REAL>\n-805inline _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b> const *\n-_\b8_\b0_\b6_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be() const {\n-807 assert(LocalPointVaryingStencilPrecisionMatchesType<REAL>());\n-808 return _localPointVaryingStencils.Get<REAL>();\n-809}\n-810template <typename REAL>\n-811inline _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b> const *\n-_\b8_\b1_\b2_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(int channel) const {\n-813 assert(LocalPointFaceVaryingStencilPrecisionMatchesType<REAL>());\n-814 if (channel >= 0 && channel < (int)_localPointFaceVaryingStencils.size()) {\n-815 return _localPointFaceVaryingStencils[channel].Get<REAL>();\n-816 }\n-817 return NULL;\n-818}\n-819\n-820\n-821//\n-822// Computation of local point values:\n-823//\n-824template <class T>\n-825inline void\n-_\b8_\b2_\b6_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bV_\ba_\bl_\bu_\be_\bs(T const *src, T *dst) const {\n-827 assert(LocalPointStencilPrecisionMatchesType<float>());\n-828 if (_localPointStencils) {\n-829 _localPointStencils.Get<float>()->UpdateValues(src, dst);\n-830 }\n-831}\n-832\n-833template <class T>\n-834inline void\n-_\b8_\b3_\b5_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bV_\ba_\bl_\bu_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(T const *src, T *dst) const {\n-836 assert(LocalPointVaryingStencilPrecisionMatchesType<float>());\n-837 if (_localPointVaryingStencils) {\n-838 _localPointVaryingStencils.Get<float>()->UpdateValues(src, dst);\n-839 }\n-840}\n-841\n-842template <class T>\n-843inline void\n-_\b8_\b4_\b4_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bV_\ba_\bl_\bu_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(T const *src, T *dst, int\n-channel) const {\n-845 assert(LocalPointFaceVaryingStencilPrecisionMatchesType<float>());\n-846 if (channel >= 0 && channel < (int)_localPointFaceVaryingStencils.size()) {\n-847 if (_localPointFaceVaryingStencils[channel]) {\n-848 _localPointFaceVaryingStencils[channel].Get<float>()->UpdateValues(src,\n-dst);\n-849 }\n-850 }\n-851}\n-852\n-853\n-854//\n-855// Basis evaluation overloads\n-856//\n-857inline void\n-_\b8_\b5_\b8_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bB_\ba_\bs_\bi_\bs(_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be const & handle, float u, float v,\n-859 float wP[], float wDu[], float wDv[],\n-860 float wDuu[], float wDuv[], float wDvv[]) const {\n-861\n-862 EvaluateBasis<float>(handle, u, v, wP, wDu, wDv, wDuu, wDuv, wDvv);\n-863}\n-864inline void\n-_\b8_\b6_\b5_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bB_\ba_\bs_\bi_\bs(_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be const & handle, double u, double v,\n-866 double wP[], double wDu[], double wDv[],\n-867 double wDuu[], double wDuv[], double wDvv[]) const {\n-868\n-869 EvaluateBasis<double>(handle, u, v, wP, wDu, wDv, wDuu, wDuv, wDvv);\n-870}\n-871\n-872inline void\n-_\b8_\b7_\b3_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bB_\ba_\bs_\bi_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be const & handle, float u, float\n-v,\n-874 float wP[], float wDu[], float wDv[],\n-875 float wDuu[], float wDuv[], float wDvv[]) const {\n-876\n-877 EvaluateBasisVarying<float>(handle, u, v, wP, wDu, wDv, wDuu, wDuv, wDvv);\n-878}\n-879inline void\n-_\b8_\b8_\b0_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bB_\ba_\bs_\bi_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be const & handle, double u,\n-double v,\n-881 double wP[], double wDu[], double wDv[],\n-882 double wDuu[], double wDuv[], double wDvv[]) const {\n-883\n-884 EvaluateBasisVarying<double>(handle, u, v, wP, wDu, wDv, wDuu, wDuv, wDvv);\n-885}\n-886\n-887inline void\n-_\b8_\b8_\b8_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be const & handle, float u,\n-float v,\n-889 float wP[], float wDu[], float wDv[],\n-890 float wDuu[], float wDuv[], float wDvv[], int channel) const {\n-891\n-892 EvaluateBasisFaceVarying<float>(handle, u, v, wP, wDu, wDv, wDuu, wDuv,\n-wDvv, channel);\n-893}\n-894inline void\n-_\b8_\b9_\b5_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be const & handle, double u,\n-double v,\n-896 double wP[], double wDu[], double wDv[],\n-897 double wDuu[], double wDuv[], double wDvv[], int channel) const {\n-898\n-899 EvaluateBasisFaceVarying<double>(handle, u, v, wP, wDu, wDv, wDuu, wDuv,\n-wDvv, channel);\n-900}\n-901\n-902} // end namespace Far\n-903\n-904} // end namespace OPENSUBDIV_VERSION\n-905using namespace OPENSUBDIV_VERSION;\n-906\n-907} // end namespace OpenSubdiv\n-908\n-909#endif /* OPENSUBDIV3_FAR_PATCH_TABLE */\n+83} // end namespace OpenSubdiv\n+84\n+85#endif // OPENSUBDIV3_OSD_OMP_KERNEL_H\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n-Vtr::ConstIndexArray ConstIndexArray\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b4_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bT_\ba_\bb_\bl_\be\n-std::vector< PatchParam > PatchParamTable\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b._\bh_\b:_\b2_\b4_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n-Vtr::IndexArray IndexArray\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b4_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx\n-Vtr::Index Index\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b4_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bA_\br_\br_\ba_\by\n-Vtr::Array< PatchParam > PatchParamArray\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b._\bh_\b:_\b2_\b4_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\bc_\bt_\bo_\br\n-std::vector< PatchArray > PatchArrayVector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b1_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n-Describes the type of a patch.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b4_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bM_\ba_\bp\n-An quadtree-based map connecting coarse faces to their sub-patches.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bM_\ba_\bp_\b._\bh_\b:_\b4_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm\n-Patch parameterization.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b._\bh_\b:_\b1_\b5_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n-Container for arrays of parametric patches.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\ba_\br_\by_\bi_\bn_\bg_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n-ConstIndexArray GetPatchArrayVaryingVertices(int array) const\n-Returns the varying vertex indices for the patches in array.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bg_\be_\bt_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs_\bV_\ba_\bl_\bu_\be_\bs\n-float * getSharpnessValues(Index arrayIndex)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bV_\be_\br_\bt_\bi_\bc_\be_\bs_\bT_\ba_\bb_\bl_\be\n-PatchVertsTable const & GetPatchControlVerticesTable() const\n-Get the table of patch control vertices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b3_\b7_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n-_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bV_\ba_\bl_\bu_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n-void ComputeLocalPointValuesFaceVarying(T const *src, T *dst, int channel=0)\n-const\n-Updates local point face-varying values.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b8_\b4_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n-ConstIndexArray GetVaryingVertices() const\n-Returns an array of varying vertex indices for the patches.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bV_\ba_\bl_\bu_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n-void ComputeLocalPointValuesVarying(T const *src, T *dst) const\n-Updates local point varying values.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b8_\b3_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bV_\ba_\br_\by_\bi_\bn_\bg_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n-ConstIndexArray GetPatchVaryingVertices(PatchHandle const &handle) const\n-Returns the varying vertex indices for a given patch.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bI_\bs_\bF_\be_\ba_\bt_\bu_\br_\be_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be\n-bool IsFeatureAdaptive() const\n-True if the patches are of feature adaptive types.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bM_\ba_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be\n-int GetMaxValence() const\n-Returns max vertex valence.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b9_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n-StencilTableReal< REAL > const * GetLocalPointStencilTable() const\n-Returns the stencil table to compute local point vertex values.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n-StencilTable const * GetLocalPointStencilTable() const\n-Returns the stencil table to compute local point vertex values.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b7_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bg_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bs\n-PatchParamArray getPatchParams(int arrayIndex)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bs\n-ConstIndexArray GetPatchArrayFVarValues(int array, int channel=0) const\n-Returns the value indices for the patches in array in channel.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs_\bV_\ba_\bl_\bu_\be_\bs\n-std::vector< float > const & GetSharpnessValues() const\n-Returns sharpness values table.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b3_\b8_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be_\bT_\ba_\bb_\bl_\be\n-std::vector< Index > VertexValenceTable\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b2_\b6_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm\n-PatchParam GetPatchFVarPatchParam(int array, int patch, int channel=0) const\n-Returns the face-varying params for a given patch channel.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bV_\ba_\br_\by_\bi_\bn_\bg_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n-ConstIndexArray GetPatchVaryingVertices(int array, int patch) const\n-Returns the varying vertex indices for a given patch.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n-PatchTable(PatchTable const &src)\n-Copy constructor.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs\n-int GetNumPatchArrays() const\n-Returns the number of patch arrays in the table.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n-ConstIndexArray GetPatchVertices(PatchHandle const &handle) const\n-Returns the control vertex indices for the patch identified by handle.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n-PatchTable(int maxvalence)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n-_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\bM_\ba_\bt_\bc_\bh_\be_\bs_\bT_\by_\bp_\be\n-bool LocalPointFaceVaryingStencilPrecisionMatchesType() const\n-Tests if the precision of the stencil table to compute local point face-varying\n-values matches the gi...\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bT_\ba_\bb_\bl_\be\n-PatchParamTable const & GetPatchParamTable() const\n-Returns the PatchParamTable (PatchParams order matches patch array sorting)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b3_\b8_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be_\bT_\ba_\bb_\bl_\be\n-VertexValenceTable const & GetVertexValenceTable() const\n-Returns the 'VertexValences' table (vertex neighborhoods table)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b2_\b6_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n-_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n-StencilTable const * GetLocalPointFaceVaryingStencilTable(int channel=0) const\n-Returns the stencil table to compute local point face-varying values.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b8_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n-int GetNumControlVertices(int array) const\n-Returns the number of control vertices in array.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b~_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n-~PatchTable()\n-Destructor.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n-void EvaluateBasisFaceVarying(PatchHandle const &handle, REAL u, REAL v, REAL\n-wP[], REAL wDu[]=0, REAL wDv[]=0, REAL wDuu[]=0, REAL wDuv[]=0, REAL wDvv[]=0,\n-int channel=0) const\n-Evaluate basis functions for a face-varying value and derivatives at a given\n-(u,v) parametric locatio...\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bQ_\bu_\ba_\bd_\bO_\bf_\bf_\bs_\be_\bt_\bs\n-ConstQuadOffsetsArray GetPatchQuadOffsets(PatchHandle const &handle) const\n-Returns the 'QuadOffsets' for the Gregory patch identified by handle.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n-_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\bI_\br_\br_\be_\bg_\bu_\bl_\ba_\br\n-PatchDescriptor GetFVarPatchDescriptorIrregular(int channel=0) const\n-Returns the irregular patch descriptor for channel.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n-_\bG_\be_\bt_\bS_\bi_\bn_\bg_\bl_\be_\bC_\br_\be_\ba_\bs_\be_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs_\bV_\ba_\bl_\bu_\be\n-float GetSingleCreasePatchSharpnessValue(int array, int patch) const\n-Returns the crease sharpness for the patch in array if it is a single-crease\n-patch,...\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bg_\be_\bt_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs_\bI_\bn_\bd_\bi_\bc_\be_\bs\n-Index * getSharpnessIndices(Index arrayIndex)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bV_\ba_\bl_\bu_\be_\bs\n-void ComputeLocalPointValues(T const *src, T *dst) const\n-Updates local point vertex values.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b8_\b2_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n-_\bG_\be_\bt_\bS_\bi_\bn_\bg_\bl_\be_\bC_\br_\be_\ba_\bs_\be_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs_\bV_\ba_\bl_\bu_\be\n-float GetSingleCreasePatchSharpnessValue(PatchHandle const &handle) const\n-Returns the crease sharpness for the patch identified by handle if it is a\n-single-crease patch,...\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm\n-PatchParam GetPatchParam(int array, int patch) const\n-Returns the PatchParam for patch in array.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bs\n-ConstIndexArray GetPatchFVarValues(int array, int patch, int channel=0) const\n-Returns the value indices for a given patch in channel.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\bR_\be_\bg_\bu_\bl_\ba_\br\n-PatchDescriptor GetFVarPatchDescriptorRegular(int channel=0) const\n-Returns the regular patch descriptor for channel.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n-PatchDescriptor GetPatchDescriptor(PatchHandle const &handle) const\n-Returns the PatchDescriptor for the patch identified by handle.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bV_\be_\br_\bt_\bs_\bT_\ba_\bb_\bl_\be\n-std::vector< Index > PatchVertsTable\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b3_\b7_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bQ_\bu_\ba_\bd_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bT_\ba_\bb_\bl_\be\n-QuadOffsetsTable const & GetQuadOffsetsTable() const\n-Returns the quad-offsets table.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b3_\b9_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-int GetNumPatches(int array) const\n-Returns the number of patches in array.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n-PatchDescriptor GetVaryingPatchDescriptor() const\n-Returns the varying patch descriptor.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bs\n-ConstIndexArray GetPatchFVarValues(PatchHandle const &handle, int channel=0)\n-const\n-Returns the value indices for a given patch in channel.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bs\n-ConstPatchParamArray const GetPatchParams(int array) const\n-Returns the PatchParams for the patches in array.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bV_\be_\br_\bt_\bi_\bc_\be_\bs_\bT_\bo_\bt_\ba_\bl\n-int GetNumControlVerticesTotal() const\n-Returns the total number of control vertex indices in the table.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b8_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs\n-int GetNumFVarChannels() const\n-Returns the number of face-varying channels.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bs\n-ConstPatchParamArray GetPatchArrayFVarPatchParams(int array, int channel=0)\n-const\n-Returns the face-varying for a given patch in array in channel.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bg_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx\n-Index getPatchIndex(int array, int patch) const\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bs\n-int GetNumLocalPoints() const\n-Returns the number of local vertex points.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n-_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\bM_\ba_\bt_\bc_\bh_\be_\bs_\bT_\by_\bp_\be\n-bool LocalPointVaryingStencilPrecisionMatchesType() const\n-Tests if the precision of the stencil table to compute local point varying\n-values matches the given f...\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n-ConstIndexArray GetPatchArrayVertices(int array) const\n-Returns the control vertex indices for the patches in array.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bP_\bt_\be_\bx_\bF_\ba_\bc_\be_\bs\n-int GetNumPtexFaces() const\n-Returns the total number of ptex faces in the mesh.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b9_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bs\n-ConstIndexArray GetFVarValues(int channel=0) const\n-Returns an array of value indices for the patches in channel.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bQ_\bu_\ba_\bd_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bA_\br_\br_\ba_\by\n-Vtr::ConstArray< unsigned int > ConstQuadOffsetsArray\n-Accessors for the gregory patch evaluation buffers. These methods will be\n-deprecated.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b2_\b5_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bB_\ba_\bs_\bi_\bs\n-void EvaluateBasis(PatchHandle const &handle, REAL u, REAL v, REAL wP[], REAL\n-wDu[]=0, REAL wDv[]=0, REAL wDuu[]=0, REAL wDuv[]=0, REAL wDvv[]=0) const\n-Evaluate basis functions for position and derivatives at a given (u,v)\n-parametric location of a patch...\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n-_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n-StencilTableReal< REAL > const * GetLocalPointFaceVaryingStencilTable(int\n-channel=0) const\n-Returns the stencil table to compute local point face-varying values.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bT_\bo_\bt_\ba_\bl\n-int GetNumPatchesTotal() const\n-Returns the total number of patches stored in the table.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm\n-PatchParam GetPatchParam(PatchHandle const &handle) const\n-Returns a PatchParam for the patch identified by handle.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bp_\br_\bi_\bn_\bt\n-void print() const\n-debug helper\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n-_\bG_\be_\bt_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bL_\bi_\bn_\be_\ba_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-Sdc::Options::FVarLinearInterpolation GetFVarChannelLinearInterpolation(int\n-channel=0) const\n-Deprecated.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs_\bI_\bn_\bd_\be_\bx_\bT_\ba_\bb_\bl_\be\n-std::vector< Index > const & GetSharpnessIndexTable() const\n-Returns a sharpness index table for each patch (if exists)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b3_\b8_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n-PatchDescriptor GetPatchArrayDescriptor(int array) const\n-Returns the PatchDescriptor for the patches in array.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bB_\bu_\bi_\bl_\bd_\be_\br\n-friend class PatchTableBuilder\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b3_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bB_\ba_\bs_\bi_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n-void EvaluateBasisVarying(PatchHandle const &handle, REAL u, REAL v, REAL wP[],\n-REAL wDu[]=0, REAL wDv[]=0, REAL wDuu[]=0, REAL wDuv[]=0, REAL wDvv[]=0) const\n-Evaluate basis functions for a varying value and derivatives at a given (u,v)\n-parametric location of ...\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n-_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n-StencilTable const * GetLocalPointVaryingStencilTable() const\n-Returns the stencil table to compute local point varying values.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b8_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bQ_\bu_\ba_\bd_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bT_\ba_\bb_\bl_\be\n-std::vector< unsigned int > QuadOffsetsTable\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b3_\b8_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n-ConstIndexArray GetPatchVertices(int array, int patch) const\n-Returns the control vertex indices for patch in array.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm\n-PatchParam GetPatchFVarPatchParam(PatchHandle const &handle, int channel=0)\n-const\n-Returns the value indices for a given patch in channel.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bS_\bt_\br_\bi_\bd_\be\n-int GetFVarValueStride(int channel=0) const\n-Returns the stride between patches in the value index array of channel.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bs\n-ConstPatchParamArray GetFVarPatchParams(int channel=0) const\n-Returns an array of face-varying patch param for channel.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n-PatchDescriptor GetFVarPatchDescriptor(int channel=0) const\n-Returns the default/irregular patch descriptor for channel.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n-int GetNumLocalPointsVarying() const\n-Returns the number of local varying points.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n-_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\bM_\ba_\bt_\bc_\bh_\be_\bs_\bT_\by_\bp_\be\n-bool LocalPointStencilPrecisionMatchesType() const\n-Tests if the precision of the stencil table to compute local point vertex\n-values matches the given fl...\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n-_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n-StencilTableReal< REAL > const * GetLocalPointVaryingStencilTable() const\n-Returns the stencil table to compute local point varying values.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n-int GetNumLocalPointsFaceVarying(int channel=0) const\n-Returns the number of local face-varying points for channel.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be\n-Handle that can be used as unique patch identifier within PatchTable.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be_\b:_\b:_\bp_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx\n-Index patchIndex\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be_\b:_\b:_\ba_\br_\br_\ba_\by_\bI_\bn_\bd_\be_\bx\n-Index arrayIndex\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be_\b:_\b:_\bv_\be_\br_\bt_\bI_\bn_\bd_\be_\bx\n-Index vertIndex\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl\n-Table of subdivision stencils.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b4_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n-Stencil table class wrapping the template for compatibility.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b2_\b7_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bF_\bV_\ba_\br_\bL_\bi_\bn_\be_\ba_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-FVarLinearInterpolation\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b6_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b5_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bA_\br_\br_\ba_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b1_\b0_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+void OmpEvalStencils(float const *src, BufferDescriptor const &srcDesc, float\n+*dst, BufferDescriptor const &dstDesc, int const *sizes, int const *offsets,\n+int const *indices, float const *weights, int start, int end)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n+BufferDescriptor is a struct which describes buffer elements in interleaved\n+data buffers....\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b6_\b1\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bf_\ba_\br\n-    * _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bo_\bm_\bp_\bK_\be_\br_\bn_\be_\bl_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00764.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00764.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/far/topologyRefiner.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/osd/bufferDescriptor.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -90,53 +90,41 @@\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> &#124;\n <a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">topologyRefiner.h File Reference</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">bufferDescriptor.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a01492_source.html\">../sdc/types.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00734_source.html\">../sdc/options.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a01486_source.html\">../far/types.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00782_source.html\">../far/topologyLevel.h</a>&quot;</code><br />\n-<code>#include &lt;vector&gt;</code><br />\n+<code>#include &lt;string.h&gt;</code><br />\n </div>\n <p><a href=\"a00764_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01121.html\">TopologyRefiner</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Stores topology data for a specified set of refinement options.  <a href=\"a01121.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01125.html\">TopologyRefiner::UniformOptions</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Uniform refinement options.  <a href=\"a01125.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01129.html\">TopologyRefiner::AdaptiveOptions</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Adaptive refinement options.  <a href=\"a01129.html#details\">More...</a><br /></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01141.html\">BufferDescriptor</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"a01141.html\" title=\"BufferDescriptor is a struct which describes buffer elements in interleaved data buffers....\">BufferDescriptor</a> is a struct which describes buffer elements in interleaved data buffers. Almost all <a class=\"el\" href=\"a00912.html\">Osd</a> Evaluator APIs take BufferDescriptors along with device-specific buffer objects.  <a href=\"a01141.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00909\" id=\"r_a00909\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00909.html\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr</a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far</a></td></tr>\n+<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7f420b72a822828cfa8b0561c695a5cc.html\">far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00764.html\">topologyRefiner.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00764.html\">bufferDescriptor.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,37 +1,26 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-topologyRefiner.h File Reference\n+bufferDescriptor.h File Reference\n #include \"../version.h\"\n-#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n-#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh\"\n-#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n-#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh\"\n-#include <vector>\n+#include <string.h>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n- class \u00a0 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br\n-\u00a0        Stores topology data for a specified set of refinement options.\n-         _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bU_\bn_\bi_\bf_\bo_\br_\bm_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n-\u00a0        Uniform refinement options. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n-\u00a0        Adaptive refinement options. _\bM_\bo_\br_\be_\b._\b._\b.\n+struct \u00a0 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n+         _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br is a struct which describes buffer elements in\n+\u00a0        interleaved data buffers. Almost all _\bO_\bs_\bd Evaluator APIs take\n+         BufferDescriptors along with device-specific buffer objects. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br\n-\u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bf_\ba_\br\n-    * _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00764.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00764.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,5 +1,3 @@\n var a00764 = [\n-    [\"TopologyRefiner\", \"a01121.html\", \"a01121\"],\n-    [\"UniformOptions\", \"a01125.html\", \"a01125\"],\n-    [\"AdaptiveOptions\", \"a01129.html\", \"a01129\"]\n+    [\"BufferDescriptor\", \"a01141.html\", \"a01141\"]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00764_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00764_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/far/topologyRefiner.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/osd/bufferDescriptor.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">topologyRefiner.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">bufferDescriptor.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00764.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2014 DreamWorks Animation LLC.</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2015 Pixar</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -118,305 +118,113 @@\n <div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_FAR_TOPOLOGY_REFINER_H</span></div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#define OPENSUBDIV3_FAR_TOPOLOGY_REFINER_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span> </div>\n-<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span> </div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#include &quot;../sdc/types.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../sdc/options.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../far/types.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &quot;../far/topologyLevel.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_BUFFER_DESCRIPTOR_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_BUFFER_DESCRIPTOR_H</span></div>\n+<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n+<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#include &lt;string.h&gt;</span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span> </div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n <div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n+<div class=\"foldopen\" id=\"foldopen00034\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html\">   34</a></span><span class=\"keyword\">namespace </span>Osd {</div>\n <div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span> </div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span> </div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00909.html\">   40</a></span><span class=\"keyword\">namespace </span>Vtr { <span class=\"keyword\">namespace </span>internal { <span class=\"keyword\">class </span>SparseSelector; } }</div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"keyword\">namespace </span>Far { <span class=\"keyword\">namespace </span>internal { <span class=\"keyword\">class </span>FeatureMask; } }</div>\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span> </div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"keyword\">namespace </span>Far {</div>\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span> </div>\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt; <span class=\"keyword\">class </span>PrimvarRefinerReal;</div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt; <span class=\"keyword\">class </span>TopologyRefinerFactory;</div>\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00051\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html\">   51</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> {</div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span> </div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span> </div>\n-<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#a91353962838bff64448014136e0e11ff\">   56</a></span>    <a class=\"code hl_function\" href=\"a01121.html#a91353962838bff64448014136e0e11ff\">TopologyRefiner</a>(<a class=\"code hl_enumeration\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833d\">Sdc::SchemeType</a> type, <a class=\"code hl_class\" href=\"a01337.html\">Sdc::Options</a> options = <a class=\"code hl_class\" href=\"a01337.html\">Sdc::Options</a>());</div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span> </div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#ad34359a8dc42748122362e459f1409aa\">   59</a></span>    <a class=\"code hl_function\" href=\"a01121.html#ad34359a8dc42748122362e459f1409aa\">~TopologyRefiner</a>();</div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span> </div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#a758e06255013d2d7393c3ac2d18f6922\">   62</a></span>    <a class=\"code hl_enumeration\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833d\">Sdc::SchemeType</a> <a class=\"code hl_function\" href=\"a01121.html#a758e06255013d2d7393c3ac2d18f6922\">GetSchemeType</a>()<span class=\"keyword\"> const    </span>{ <span class=\"keywordflow\">return</span> _subdivType; }</div>\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span> </div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#a4528f38657b0c96bce6c3d7deffd7c02\">   65</a></span>    <a class=\"code hl_class\" href=\"a01337.html\">Sdc::Options</a> <a class=\"code hl_function\" href=\"a01121.html#a4528f38657b0c96bce6c3d7deffd7c02\">GetSchemeOptions</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _subdivOptions; }</div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span> </div>\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#a5dfa6810f510fac1ec621fc9e6b530c4\">   68</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01121.html#a5dfa6810f510fac1ec621fc9e6b530c4\">IsUniform</a>()<span class=\"keyword\"> const   </span>{ <span class=\"keywordflow\">return</span> _isUniform; }</div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span> </div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#a239ca467443788cab395336ec33c7dbe\">   71</a></span>    <span class=\"keywordtype\">int</span>  <a class=\"code hl_function\" href=\"a01121.html#a239ca467443788cab395336ec33c7dbe\">GetNumLevels</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (<span class=\"keywordtype\">int</span>)_farLevels.size(); }</div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span> </div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#a7d0b5dc6f7f567507a906e00d1887151\">   74</a></span>    <span class=\"keywordtype\">int</span>  <a class=\"code hl_function\" href=\"a01121.html#a7d0b5dc6f7f567507a906e00d1887151\">GetMaxLevel</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _maxLevel; }</div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span> </div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#a14bf987459715b918b370247bb24a61c\">   77</a></span>    <span class=\"keywordtype\">int</span>  <a class=\"code hl_function\" href=\"a01121.html#a14bf987459715b918b370247bb24a61c\">GetMaxValence</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _maxValence; }</div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span> </div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#a1b68f0501aabb94ba410e006181d2cc5\">   80</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01121.html#a1b68f0501aabb94ba410e006181d2cc5\">HasHoles</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _hasHoles; }</div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span> </div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#ae8ef99a47f8185a3a621e4d5b10a20a0\">   83</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01121.html#ae8ef99a47f8185a3a621e4d5b10a20a0\">GetNumVerticesTotal</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _totalVertices; }</div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span> </div>\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span><span class=\"comment\">//  example:</span></div>\n+<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span><span class=\"comment\">//       n</span></div>\n+<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span><span class=\"comment\">//  -----+----------------------------------------+-------------------------</span></div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span><span class=\"comment\">//       |               vertex  0                |</span></div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span><span class=\"comment\">//  -----+----------------------------------------+-------------------------</span></div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span><span class=\"comment\">//       |  X  Y  Z  R  G  B  A Xu Yu Zu Xv Yv Zv |</span></div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span><span class=\"comment\">//  -----+----------------------------------------+-------------------------</span></div>\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span><span class=\"comment\">//       &lt;------------- stride = 13 --------------&gt;</span></div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span><span class=\"comment\">//     - XYZ      (offset = n+0,  length = 3, stride = 13)</span></div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span><span class=\"comment\">//     - RGBA     (offset = n+3,  length = 4, stride = 13)</span></div>\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span><span class=\"comment\">//     - uTangent (offset = n+7,  length = 3, stride = 13)</span></div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span><span class=\"comment\">//     - vTangent (offset = n+10, length = 3, stride = 13)</span></div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span><span class=\"comment\">//</span></div>\n+<div class=\"foldopen\" id=\"foldopen00061\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01141.html\">   61</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> {</div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span> </div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01141.html#a446218762f5de8c77d06ee61e14b6b61\">   64</a></span>    <a class=\"code hl_function\" href=\"a01141.html#a446218762f5de8c77d06ee61e14b6b61\">BufferDescriptor</a>() : <a class=\"code hl_variable\" href=\"a01141.html#aed7ea92f45bd273dde380a45ddced592\">offset</a>(0), <a class=\"code hl_variable\" href=\"a01141.html#a9f59b34b1f25fe00023291b678246bcc\">length</a>(0), <a class=\"code hl_variable\" href=\"a01141.html#a08f66a6870d87afcd5dc1b60d1019692\">stride</a>(0) { }</div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span> </div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01141.html#a958068066d1d10ae2a452ac57d9c0401\">   67</a></span>    <a class=\"code hl_function\" href=\"a01141.html#a958068066d1d10ae2a452ac57d9c0401\">BufferDescriptor</a>(<span class=\"keywordtype\">int</span> o, <span class=\"keywordtype\">int</span> l, <span class=\"keywordtype\">int</span> s) : <a class=\"code hl_variable\" href=\"a01141.html#aed7ea92f45bd273dde380a45ddced592\">offset</a>(o), <a class=\"code hl_variable\" href=\"a01141.html#a9f59b34b1f25fe00023291b678246bcc\">length</a>(l), <a class=\"code hl_variable\" href=\"a01141.html#a08f66a6870d87afcd5dc1b60d1019692\">stride</a>(s) { }</div>\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00070\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01141.html#ae3d9db59ffddaff0873246935222c6a8\">   70</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01141.html#ae3d9db59ffddaff0873246935222c6a8\">GetLocalOffset</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01141.html#a08f66a6870d87afcd5dc1b60d1019692\">stride</a> &gt; 0 ? <a class=\"code hl_variable\" href=\"a01141.html#aed7ea92f45bd273dde380a45ddced592\">offset</a> % <a class=\"code hl_variable\" href=\"a01141.html#a08f66a6870d87afcd5dc1b60d1019692\">stride</a> : 0;</div>\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00075\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01141.html#ac532c4b500b1a85ea22217f2c65a70ed\">   75</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01141.html#ac532c4b500b1a85ea22217f2c65a70ed\">IsValid</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span>        <span class=\"keywordflow\">return</span> ((<a class=\"code hl_variable\" href=\"a01141.html#a9f59b34b1f25fe00023291b678246bcc\">length</a> &gt; 0) &amp;&amp;</div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span>                (<a class=\"code hl_variable\" href=\"a01141.html#a9f59b34b1f25fe00023291b678246bcc\">length</a> &lt;= <a class=\"code hl_variable\" href=\"a01141.html#a08f66a6870d87afcd5dc1b60d1019692\">stride</a> - <a class=\"code hl_function\" href=\"a01141.html#ae3d9db59ffddaff0873246935222c6a8\">GetLocalOffset</a>()));</div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00081\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01141.html#a372de693ad40b3f42839c8ec6ac845f4\">   81</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01141.html#a372de693ad40b3f42839c8ec6ac845f4\">Reset</a>() {</div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>        <a class=\"code hl_variable\" href=\"a01141.html#aed7ea92f45bd273dde380a45ddced592\">offset</a> = <a class=\"code hl_variable\" href=\"a01141.html#a9f59b34b1f25fe00023291b678246bcc\">length</a> = <a class=\"code hl_variable\" href=\"a01141.html#a08f66a6870d87afcd5dc1b60d1019692\">stride</a> = 0;</div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>    }</div>\n+</div>\n <div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span> </div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#a96f712a5e40873f00b0b61f72ffb9e3c\">   86</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01121.html#a96f712a5e40873f00b0b61f72ffb9e3c\">GetNumEdgesTotal</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _totalEdges; }</div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span> </div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#ac5eadebfdd9b11ac383653e5a2383231\">   89</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01121.html#ac5eadebfdd9b11ac383653e5a2383231\">GetNumFacesTotal</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _totalFaces; }</div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span> </div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#accbb5f2a2fa9138df8c399b9f1d37982\">   92</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01121.html#accbb5f2a2fa9138df8c399b9f1d37982\">GetNumFaceVerticesTotal</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _totalFaceVertices; }</div>\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span> </div>\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#adc03a3531bd92ada5669788241e3515f\">   95</a></span>    <a class=\"code hl_class\" href=\"a01113.html\">TopologyLevel</a> <span class=\"keyword\">const</span> &amp; <a class=\"code hl_function\" href=\"a01121.html#adc03a3531bd92ada5669788241e3515f\">GetLevel</a>(<span class=\"keywordtype\">int</span> level)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _farLevels[level]; }</div>\n+<div class=\"foldopen\" id=\"foldopen00086\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01141.html#aaff9aa09cae91e39d5422c8cfc878ba5\">   86</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01141.html#aaff9aa09cae91e39d5422c8cfc878ba5\">operator == </a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;other)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>        <span class=\"keywordflow\">return</span> (<a class=\"code hl_variable\" href=\"a01141.html#aed7ea92f45bd273dde380a45ddced592\">offset</a> == other.<a class=\"code hl_variable\" href=\"a01141.html#aed7ea92f45bd273dde380a45ddced592\">offset</a> &amp;&amp;</div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>                <a class=\"code hl_variable\" href=\"a01141.html#a9f59b34b1f25fe00023291b678246bcc\">length</a> == other.<a class=\"code hl_variable\" href=\"a01141.html#a9f59b34b1f25fe00023291b678246bcc\">length</a> &amp;&amp;</div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>                <a class=\"code hl_variable\" href=\"a01141.html#a08f66a6870d87afcd5dc1b60d1019692\">stride</a> == other.<a class=\"code hl_variable\" href=\"a01141.html#a08f66a6870d87afcd5dc1b60d1019692\">stride</a>);</div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00093\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01141.html#a9f79e5aef7aa7198087e68c98c9804d3\">   93</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01141.html#a9f79e5aef7aa7198087e68c98c9804d3\">operator != </a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;other)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>        <span class=\"keywordflow\">return</span> !(this-&gt;<a class=\"code hl_function\" href=\"a01141.html#aaff9aa09cae91e39d5422c8cfc878ba5\">operator==</a>(other));</div>\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span>    }</div>\n+</div>\n <div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span> </div>\n-<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span> </div>\n-<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span> </div>\n-<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span>    <span class=\"comment\">// Uniform refinement</span></div>\n-<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01141.html#aed7ea92f45bd273dde380a45ddced592\">   98</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"a01141.html#aed7ea92f45bd273dde380a45ddced592\">offset</a>;</div>\n+<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01141.html#a9f59b34b1f25fe00023291b678246bcc\">  100</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"a01141.html#a9f59b34b1f25fe00023291b678246bcc\">length</a>;</div>\n+<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01141.html#a08f66a6870d87afcd5dc1b60d1019692\">  102</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"a01141.html#a08f66a6870d87afcd5dc1b60d1019692\">stride</a>;</div>\n+<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span>};</div>\n+</div>\n <div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00118\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01125.html\">  118</a></span>    <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01125.html\">UniformOptions</a> {</div>\n-<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00120\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01125.html#af20c4ed6bf53695afb4a978fdf472ed3\">  120</a></span>        <a class=\"code hl_function\" href=\"a01125.html#af20c4ed6bf53695afb4a978fdf472ed3\">UniformOptions</a>(<span class=\"keywordtype\">int</span> level) :</div>\n-<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\">  121</span>            <a class=\"code hl_variable\" href=\"a01125.html#a240d1e5f5b743486e8122db6223d4562\">refinementLevel</a>(level &amp; 0xf),</div>\n-<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span>            <a class=\"code hl_variable\" href=\"a01125.html#a3b1e47f9568213cc322ef29a84c932b6\">orderVerticesFromFacesFirst</a>(false),</div>\n-<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span>            <a class=\"code hl_variable\" href=\"a01125.html#ad58e8c2606ce33af17bb83fb90eb7325\">fullTopologyInLastLevel</a>(false) { }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span> </div>\n-<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01125.html#a47a5b6a174f91a113c7f50b1b55bd664\">  126</a></span>        <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01125.html#a47a5b6a174f91a113c7f50b1b55bd664\">SetRefinementLevel</a>(<span class=\"keywordtype\">int</span> level) { <a class=\"code hl_variable\" href=\"a01125.html#a240d1e5f5b743486e8122db6223d4562\">refinementLevel</a> = level &amp; 0xf; }</div>\n-<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span> </div>\n-<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01125.html#a240d1e5f5b743486e8122db6223d4562\">  128</a></span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"a01125.html#a240d1e5f5b743486e8122db6223d4562\">refinementLevel</a>:4,             </div>\n-<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01125.html#a3b1e47f9568213cc322ef29a84c932b6\">  129</a></span>                     <a class=\"code hl_variable\" href=\"a01125.html#a3b1e47f9568213cc322ef29a84c932b6\">orderVerticesFromFacesFirst</a>:1, </div>\n-<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01125.html#ad58e8c2606ce33af17bb83fb90eb7325\">  131</a></span>                     <a class=\"code hl_variable\" href=\"a01125.html#ad58e8c2606ce33af17bb83fb90eb7325\">fullTopologyInLastLevel</a>:1;     </div>\n-<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\">  134</span>    };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\">  135</span> </div>\n-<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#ad22b7ffd9f8f3b488e5f220cf00c8c82\">  146</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01121.html#ad22b7ffd9f8f3b488e5f220cf00c8c82\">RefineUniform</a>(<a class=\"code hl_struct\" href=\"a01125.html\">UniformOptions</a> options);</div>\n-<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\">  147</span> </div>\n-<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#abb1241288f333733e84a5676f55f6bb9\">  149</a></span>    <a class=\"code hl_struct\" href=\"a01125.html\">UniformOptions</a> <a class=\"code hl_function\" href=\"a01121.html#abb1241288f333733e84a5676f55f6bb9\">GetUniformOptions</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _uniformOptions; }</div>\n-<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\">  150</span> </div>\n-<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\">  151</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\">  152</span>    <span class=\"comment\">// Adaptive refinement</span></div>\n-<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\">  153</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\">  154</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00156\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01129.html\">  156</a></span>    <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01129.html\">AdaptiveOptions</a> {</div>\n-<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\">  157</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00158\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01129.html#a3c39e6532871f8952e2f94332b8c80bf\">  158</a></span>        <a class=\"code hl_function\" href=\"a01129.html#a3c39e6532871f8952e2f94332b8c80bf\">AdaptiveOptions</a>(<span class=\"keywordtype\">int</span> level) :</div>\n-<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\">  159</span>            <a class=\"code hl_variable\" href=\"a01129.html#a5561c34bac948dc836506e8e8d3ee134\">isolationLevel</a>(level &amp; 0xf),</div>\n-<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\">  160</span>            <a class=\"code hl_variable\" href=\"a01129.html#a1c8854b9dd7ff2353b618434d08d054a\">secondaryLevel</a>(0xf),</div>\n-<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\">  161</span>            <a class=\"code hl_variable\" href=\"a01129.html#a5834971432c649e28d5a0186f79a60d5\">useSingleCreasePatch</a>(false),</div>\n-<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\">  162</span>            <a class=\"code hl_variable\" href=\"a01129.html#a5eba866952b7be15b065060b1f5a81da\">useInfSharpPatch</a>(false),</div>\n-<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\">  163</span>            <a class=\"code hl_variable\" href=\"a01129.html#a74c90a5955fcad9c95d4c18346f7c312\">considerFVarChannels</a>(false),</div>\n-<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\">  164</span>            <a class=\"code hl_variable\" href=\"a01129.html#a3b1e47f9568213cc322ef29a84c932b6\">orderVerticesFromFacesFirst</a>(false) { }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\">  165</span> </div>\n-<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01129.html#a5ef292b43e4824968e72d664012be93f\">  167</a></span>        <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01129.html#a5ef292b43e4824968e72d664012be93f\">SetIsolationLevel</a>(<span class=\"keywordtype\">int</span> level) { <a class=\"code hl_variable\" href=\"a01129.html#a5561c34bac948dc836506e8e8d3ee134\">isolationLevel</a> = level &amp; 0xf; }</div>\n-<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\">  168</span> </div>\n-<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01129.html#aef7c0b69c6709719e4d985ca7b5d6dd6\">  170</a></span>        <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01129.html#aef7c0b69c6709719e4d985ca7b5d6dd6\">SetSecondaryLevel</a>(<span class=\"keywordtype\">int</span> level) { <a class=\"code hl_variable\" href=\"a01129.html#a1c8854b9dd7ff2353b618434d08d054a\">secondaryLevel</a> = level &amp; 0xf; }</div>\n-<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span> </div>\n-<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01129.html#a5561c34bac948dc836506e8e8d3ee134\">  172</a></span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"a01129.html#a5561c34bac948dc836506e8e8d3ee134\">isolationLevel</a>:4;              </div>\n-<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01129.html#a1c8854b9dd7ff2353b618434d08d054a\">  174</a></span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"a01129.html#a1c8854b9dd7ff2353b618434d08d054a\">secondaryLevel</a>:4;              </div>\n-<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01129.html#a5834971432c649e28d5a0186f79a60d5\">  176</a></span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"a01129.html#a5834971432c649e28d5a0186f79a60d5\">useSingleCreasePatch</a>:1;        </div>\n-<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01129.html#a5eba866952b7be15b065060b1f5a81da\">  178</a></span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"a01129.html#a5eba866952b7be15b065060b1f5a81da\">useInfSharpPatch</a>:1;            </div>\n-<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01129.html#a74c90a5955fcad9c95d4c18346f7c312\">  180</a></span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"a01129.html#a74c90a5955fcad9c95d4c18346f7c312\">considerFVarChannels</a>:1;        </div>\n-<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01129.html#a3b1e47f9568213cc322ef29a84c932b6\">  182</a></span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"a01129.html#a3b1e47f9568213cc322ef29a84c932b6\">orderVerticesFromFacesFirst</a>:1; </div>\n-<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\">  184</span>    };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\">  185</span> </div>\n-<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#aff92309935db19988908471bee4fef4d\">  192</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01121.html#aff92309935db19988908471bee4fef4d\">RefineAdaptive</a>(<a class=\"code hl_struct\" href=\"a01129.html\">AdaptiveOptions</a> options,</div>\n-<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\">  193</span>                        <a class=\"code hl_class\" href=\"a01353.html\">ConstIndexArray</a> selectedFaces = <a class=\"code hl_typedef\" href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">ConstIndexArray</a>());</div>\n-<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\">  194</span> </div>\n-<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#af1cb63210dc03f27cbdb15dc4d3c48b6\">  196</a></span>    <a class=\"code hl_struct\" href=\"a01129.html\">AdaptiveOptions</a> <a class=\"code hl_function\" href=\"a01121.html#af1cb63210dc03f27cbdb15dc4d3c48b6\">GetAdaptiveOptions</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _adaptiveOptions; }</div>\n-<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\">  197</span> </div>\n-<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#ae93be3ade4e67999007460900bbbe039\">  199</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01121.html#ae93be3ade4e67999007460900bbbe039\">Unrefine</a>();</div>\n-<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\">  200</span> </div>\n-<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\">  201</span> </div>\n-<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\">  203</span> </div>\n-<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\">  205</span> </div>\n-<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\">  207</span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01121.html#aa9be824a572029f3ec1e0c0d6cfecd77\">GetNumFVarChannels</a>() <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\">  208</span> </div>\n-<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\">  210</span>    <a class=\"code hl_enumeration\" href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167b\">Sdc::Options::FVarLinearInterpolation</a> <a class=\"code hl_function\" href=\"a01121.html#af29a7e9914ee6860c7167300ea17e514\">GetFVarLinearInterpolation</a>(<span class=\"keywordtype\">int</span> channel = 0) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\">  211</span> </div>\n-<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#a30e986821916537de9d85e6b032ff5da\">  213</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01121.html#a30e986821916537de9d85e6b032ff5da\">GetNumFVarValuesTotal</a>(<span class=\"keywordtype\">int</span> channel = 0) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\">  214</span> </div>\n-<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\">  216</span> </div>\n-<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\">  217</span><span class=\"keyword\">protected</span>:</div>\n-<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\">  218</span> </div>\n-<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\">  219</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\">  220</span>    <span class=\"comment\">//  Lower level protected methods intended strictly for internal use:</span></div>\n-<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\">  221</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\">  222</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n-<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#a7efec9ae15b61001dcf6a0de284914b7\">  223</a></span>    <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01117.html\">TopologyRefinerFactory</a>;</div>\n-<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#a7b09fef2ae2989a546c50a65add2091f\">  224</a></span>    <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01133.html\">TopologyRefinerFactoryBase</a>;</div>\n-<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#ad452cef79832abb71eef0c3d88acc1a0\">  225</a></span>    <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span><a class=\"code hl_friend\" href=\"a01121.html#ad452cef79832abb71eef0c3d88acc1a0\">PatchTableBuilder</a>;</div>\n-<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#a97612a1a955f8b65e6d7e7761ed1cef7\">  226</a></span>    <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span><a class=\"code hl_friend\" href=\"a01121.html#a97612a1a955f8b65e6d7e7761ed1cef7\">PatchBuilder</a>;</div>\n-<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#a3e6c896f40ac50aec4b28f19bc4eae9c\">  227</a></span>    <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01041.html\">PtexIndices</a>;</div>\n-<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\">  228</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n-<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#a2cb48b58c1c2ecef25abb39339a95ac1\">  229</a></span>    <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01029.html\">PrimvarRefinerReal</a>;</div>\n-<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\">  230</span> </div>\n-<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\">  231</span>    <span class=\"comment\">//  Copy constructor exposed via the factory class:</span></div>\n-<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#a13c709a24feeed80409924510e3efc5e\">  232</a></span>    <a class=\"code hl_function\" href=\"a01121.html#a13c709a24feeed80409924510e3efc5e\">TopologyRefiner</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> &amp; source);</div>\n-<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\">  233</span> </div>\n-<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\">  234</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\">  235</span>    <span class=\"comment\">//  Levels and Refinements available internally (avoids need for more friends)</span></div>\n-<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#a523d4cb42fe52e7b330bd027712c7f04\">  236</a></span>    Vtr::internal::Level &amp; <a class=\"code hl_function\" href=\"a01121.html#a523d4cb42fe52e7b330bd027712c7f04\">getLevel</a>(<span class=\"keywordtype\">int</span> l) { <span class=\"keywordflow\">return</span> *_levels[l]; }</div>\n-<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#a1712dfb8f057c939b48f6fb62c4c66e8\">  237</a></span>    Vtr::internal::Level <span class=\"keyword\">const</span> &amp; <a class=\"code hl_function\" href=\"a01121.html#a1712dfb8f057c939b48f6fb62c4c66e8\">getLevel</a>(<span class=\"keywordtype\">int</span> l)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> *_levels[l]; }</div>\n-<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\">  238</span> </div>\n-<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#ad111e17222fca3c7877734ef1780e37f\">  239</a></span>    Vtr::internal::Refinement &amp; <a class=\"code hl_function\" href=\"a01121.html#ad111e17222fca3c7877734ef1780e37f\">getRefinement</a>(<span class=\"keywordtype\">int</span> l) { <span class=\"keywordflow\">return</span> *_refinements[l]; }</div>\n-<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#a402a532c087e1e0041ad6bb613b1a79e\">  240</a></span>    Vtr::internal::Refinement <span class=\"keyword\">const</span> &amp; <a class=\"code hl_function\" href=\"a01121.html#a402a532c087e1e0041ad6bb613b1a79e\">getRefinement</a>(<span class=\"keywordtype\">int</span> l)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> *_refinements[l]; }</div>\n-<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\">  241</span> </div>\n-<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\">  242</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\">  243</span>    <span class=\"comment\">//  Not default constructible or copyable:</span></div>\n-<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\">  244</span>    <a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a>() : _uniformOptions(0), _adaptiveOptions(0) { }</div>\n-<div class=\"line\"><a id=\"l00245\" name=\"l00245\"></a><span class=\"lineno\">  245</span>    TopologyRefiner &amp; operator=(TopologyRefiner <span class=\"keyword\">const</span> &amp;) { <span class=\"keywordflow\">return</span> *<span class=\"keyword\">this</span>; }</div>\n-<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\">  246</span> </div>\n-<div class=\"line\"><a id=\"l00247\" name=\"l00247\"></a><span class=\"lineno\">  247</span>    <span class=\"keywordtype\">void</span> selectFeatureAdaptiveComponents(Vtr::internal::SparseSelector&amp; selector,</div>\n-<div class=\"line\"><a id=\"l00248\" name=\"l00248\"></a><span class=\"lineno\">  248</span>                                         internal::FeatureMask <span class=\"keyword\">const</span> &amp; mask,</div>\n-<div class=\"line\"><a id=\"l00249\" name=\"l00249\"></a><span class=\"lineno\">  249</span>                                         <a class=\"code hl_typedef\" href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">ConstIndexArray</a> selectedFaces);</div>\n-<div class=\"line\"><a id=\"l00250\" name=\"l00250\"></a><span class=\"lineno\">  250</span>    <span class=\"keywordtype\">void</span> selectLinearIrregularFaces(Vtr::internal::SparseSelector&amp; selector,</div>\n-<div class=\"line\"><a id=\"l00251\" name=\"l00251\"></a><span class=\"lineno\">  251</span>                                    <a class=\"code hl_typedef\" href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">ConstIndexArray</a> selectedFaces);</div>\n-<div class=\"line\"><a id=\"l00252\" name=\"l00252\"></a><span class=\"lineno\">  252</span> </div>\n-<div class=\"line\"><a id=\"l00253\" name=\"l00253\"></a><span class=\"lineno\">  253</span>    <span class=\"keywordtype\">void</span> initializeInventory();</div>\n-<div class=\"line\"><a id=\"l00254\" name=\"l00254\"></a><span class=\"lineno\">  254</span>    <span class=\"keywordtype\">void</span> updateInventory(Vtr::internal::Level <span class=\"keyword\">const</span> &amp; newLevel);</div>\n-<div class=\"line\"><a id=\"l00255\" name=\"l00255\"></a><span class=\"lineno\">  255</span> </div>\n-<div class=\"line\"><a id=\"l00256\" name=\"l00256\"></a><span class=\"lineno\">  256</span>    <span class=\"keywordtype\">void</span> appendLevel(Vtr::internal::Level &amp; newLevel);</div>\n-<div class=\"line\"><a id=\"l00257\" name=\"l00257\"></a><span class=\"lineno\">  257</span>    <span class=\"keywordtype\">void</span> appendRefinement(Vtr::internal::Refinement &amp; newRefinement);</div>\n-<div class=\"line\"><a id=\"l00258\" name=\"l00258\"></a><span class=\"lineno\">  258</span>    <span class=\"keywordtype\">void</span> assembleFarLevels();</div>\n-<div class=\"line\"><a id=\"l00259\" name=\"l00259\"></a><span class=\"lineno\">  259</span> </div>\n-<div class=\"line\"><a id=\"l00260\" name=\"l00260\"></a><span class=\"lineno\">  260</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00261\" name=\"l00261\"></a><span class=\"lineno\">  261</span> </div>\n-<div class=\"line\"><a id=\"l00262\" name=\"l00262\"></a><span class=\"lineno\">  262</span>    <a class=\"code hl_enumeration\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833d\">Sdc::SchemeType</a> _subdivType;</div>\n-<div class=\"line\"><a id=\"l00263\" name=\"l00263\"></a><span class=\"lineno\">  263</span>    <a class=\"code hl_class\" href=\"a01337.html\">Sdc::Options</a>    _subdivOptions;</div>\n-<div class=\"line\"><a id=\"l00264\" name=\"l00264\"></a><span class=\"lineno\">  264</span> </div>\n-<div class=\"line\"><a id=\"l00265\" name=\"l00265\"></a><span class=\"lineno\">  265</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> _isUniform     : 1;</div>\n-<div class=\"line\"><a id=\"l00266\" name=\"l00266\"></a><span class=\"lineno\">  266</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> _hasHoles      : 1;</div>\n-<div class=\"line\"><a id=\"l00267\" name=\"l00267\"></a><span class=\"lineno\">  267</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> _hasIrregFaces : 1;</div>\n-<div class=\"line\"><a id=\"l00268\" name=\"l00268\"></a><span class=\"lineno\">  268</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> _regFaceSize   : 3;</div>\n-<div class=\"line\"><a id=\"l00269\" name=\"l00269\"></a><span class=\"lineno\">  269</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> _maxLevel      : 4;</div>\n-<div class=\"line\"><a id=\"l00270\" name=\"l00270\"></a><span class=\"lineno\">  270</span> </div>\n-<div class=\"line\"><a id=\"l00271\" name=\"l00271\"></a><span class=\"lineno\">  271</span>    <span class=\"comment\">//  Options assigned on refinement:</span></div>\n-<div class=\"line\"><a id=\"l00272\" name=\"l00272\"></a><span class=\"lineno\">  272</span>    UniformOptions  _uniformOptions;</div>\n-<div class=\"line\"><a id=\"l00273\" name=\"l00273\"></a><span class=\"lineno\">  273</span>    AdaptiveOptions _adaptiveOptions;</div>\n-<div class=\"line\"><a id=\"l00274\" name=\"l00274\"></a><span class=\"lineno\">  274</span> </div>\n-<div class=\"line\"><a id=\"l00275\" name=\"l00275\"></a><span class=\"lineno\">  275</span>    <span class=\"comment\">//  Cumulative properties of all levels:</span></div>\n-<div class=\"line\"><a id=\"l00276\" name=\"l00276\"></a><span class=\"lineno\">  276</span>    <span class=\"keywordtype\">int</span> _totalVertices;</div>\n-<div class=\"line\"><a id=\"l00277\" name=\"l00277\"></a><span class=\"lineno\">  277</span>    <span class=\"keywordtype\">int</span> _totalEdges;</div>\n-<div class=\"line\"><a id=\"l00278\" name=\"l00278\"></a><span class=\"lineno\">  278</span>    <span class=\"keywordtype\">int</span> _totalFaces;</div>\n-<div class=\"line\"><a id=\"l00279\" name=\"l00279\"></a><span class=\"lineno\">  279</span>    <span class=\"keywordtype\">int</span> _totalFaceVertices;</div>\n-<div class=\"line\"><a id=\"l00280\" name=\"l00280\"></a><span class=\"lineno\">  280</span>    <span class=\"keywordtype\">int</span> _maxValence;</div>\n-<div class=\"line\"><a id=\"l00281\" name=\"l00281\"></a><span class=\"lineno\">  281</span> </div>\n-<div class=\"line\"><a id=\"l00282\" name=\"l00282\"></a><span class=\"lineno\">  282</span>    <span class=\"comment\">//  Note the base level may be shared with another instance</span></div>\n-<div class=\"line\"><a id=\"l00283\" name=\"l00283\"></a><span class=\"lineno\">  283</span>    <span class=\"keywordtype\">bool</span> _baseLevelOwned;</div>\n-<div class=\"line\"><a id=\"l00284\" name=\"l00284\"></a><span class=\"lineno\">  284</span> </div>\n-<div class=\"line\"><a id=\"l00285\" name=\"l00285\"></a><span class=\"lineno\">  285</span>    std::vector&lt;Vtr::internal::Level *&gt;      _levels;</div>\n-<div class=\"line\"><a id=\"l00286\" name=\"l00286\"></a><span class=\"lineno\">  286</span>    std::vector&lt;Vtr::internal::Refinement *&gt; _refinements;</div>\n-<div class=\"line\"><a id=\"l00287\" name=\"l00287\"></a><span class=\"lineno\">  287</span> </div>\n-<div class=\"line\"><a id=\"l00288\" name=\"l00288\"></a><span class=\"lineno\">  288</span>    std::vector&lt;TopologyLevel&gt; _farLevels;</div>\n-<div class=\"line\"><a id=\"l00289\" name=\"l00289\"></a><span class=\"lineno\">  289</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00290\" name=\"l00290\"></a><span class=\"lineno\">  290</span> </div>\n-<div class=\"line\"><a id=\"l00291\" name=\"l00291\"></a><span class=\"lineno\">  291</span> </div>\n-<div class=\"line\"><a id=\"l00292\" name=\"l00292\"></a><span class=\"lineno\">  292</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span></div>\n-<div class=\"foldopen\" id=\"foldopen00293\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00293\" name=\"l00293\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#aa9be824a572029f3ec1e0c0d6cfecd77\">  293</a></span><a class=\"code hl_function\" href=\"a01121.html#aa9be824a572029f3ec1e0c0d6cfecd77\">TopologyRefiner::GetNumFVarChannels</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00294\" name=\"l00294\"></a><span class=\"lineno\">  294</span> </div>\n-<div class=\"line\"><a id=\"l00295\" name=\"l00295\"></a><span class=\"lineno\">  295</span>    <span class=\"keywordflow\">return</span> _levels[0]-&gt;getNumFVarChannels();</div>\n-<div class=\"line\"><a id=\"l00296\" name=\"l00296\"></a><span class=\"lineno\">  296</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00297\" name=\"l00297\"></a><span class=\"lineno\">  297</span><span class=\"keyword\">inline</span> <a class=\"code hl_enumeration\" href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167b\">Sdc::Options::FVarLinearInterpolation</a></div>\n-<div class=\"foldopen\" id=\"foldopen00298\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00298\" name=\"l00298\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#af29a7e9914ee6860c7167300ea17e514\">  298</a></span><a class=\"code hl_function\" href=\"a01121.html#af29a7e9914ee6860c7167300ea17e514\">TopologyRefiner::GetFVarLinearInterpolation</a>(<span class=\"keywordtype\">int</span> channel)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00299\" name=\"l00299\"></a><span class=\"lineno\">  299</span> </div>\n-<div class=\"line\"><a id=\"l00300\" name=\"l00300\"></a><span class=\"lineno\">  300</span>    <span class=\"keywordflow\">return</span> _levels[0]-&gt;getFVarOptions(channel).GetFVarLinearInterpolation();</div>\n-<div class=\"line\"><a id=\"l00301\" name=\"l00301\"></a><span class=\"lineno\">  301</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00302\" name=\"l00302\"></a><span class=\"lineno\">  302</span> </div>\n-<div class=\"line\"><a id=\"l00303\" name=\"l00303\"></a><span class=\"lineno\">  303</span>} <span class=\"comment\">// end namespace Far</span></div>\n-<div class=\"line\"><a id=\"l00304\" name=\"l00304\"></a><span class=\"lineno\">  304</span> </div>\n-<div class=\"line\"><a id=\"l00305\" name=\"l00305\"></a><span class=\"lineno\">  305</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00306\" name=\"l00306\"></a><span class=\"lineno\">  306</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\">  307</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l00308\" name=\"l00308\"></a><span class=\"lineno\">  308</span> </div>\n-<div class=\"line\"><a id=\"l00309\" name=\"l00309\"></a><span class=\"lineno\">  309</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_FAR_TOPOLOGY_REFINER_H */</span><span class=\"preprocessor\"></span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa00908_html_a35788aa710e3f7e277e5f0b008d76d61\"><div class=\"ttname\"><a href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">OpenSubdiv::OPENSUBDIV_VERSION::Far::ConstIndexArray</a></div><div class=\"ttdeci\">Vtr::ConstIndexArray ConstIndexArray</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01486_source.html#l00047\">types.h:47</a></div></div>\n-<div class=\"ttc\" id=\"aa00913_html_aa3daa2f428c6be2b1cb394f3a525833d\"><div class=\"ttname\"><a href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833d\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::SchemeType</a></div><div class=\"ttdeci\">SchemeType</div><div class=\"ttdoc\">Enumerated type for all subdivision schemes supported by OpenSubdiv.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01492_source.html#l00037\">types.h:37</a></div></div>\n-<div class=\"ttc\" id=\"aa01029_html\"><div class=\"ttname\"><a href=\"a01029.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PrimvarRefinerReal</a></div><div class=\"ttdoc\">Applies refinement operations to generic primvar data.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00746_source.html#l00056\">primvarRefiner.h:56</a></div></div>\n-<div class=\"ttc\" id=\"aa01041_html\"><div class=\"ttname\"><a href=\"a01041.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PtexIndices</a></div><div class=\"ttdoc\">Object used to compute and query ptex face indices.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00770_source.html#l00046\">ptexIndices.h:46</a></div></div>\n-<div class=\"ttc\" id=\"aa01113_html\"><div class=\"ttname\"><a href=\"a01113.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel</a></div><div class=\"ttdoc\">An interface for accessing data in a specific level of a refined topology hierarchy.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l00049\">topologyLevel.h:49</a></div></div>\n-<div class=\"ttc\" id=\"aa01117_html\"><div class=\"ttname\"><a href=\"a01117.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory</a></div><div class=\"ttdoc\">Factory for constructing TopologyRefiners from specific mesh classes.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00767_source.html#l00078\">topologyRefinerFactory.h:78</a></div></div>\n-<div class=\"ttc\" id=\"aa01121_html\"><div class=\"ttname\"><a href=\"a01121.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner</a></div><div class=\"ttdoc\">Stores topology data for a specified set of refinement options.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00051\">topologyRefiner.h:51</a></div></div>\n-<div class=\"ttc\" id=\"aa01121_html_a13c709a24feeed80409924510e3efc5e\"><div class=\"ttname\"><a href=\"a01121.html#a13c709a24feeed80409924510e3efc5e\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::TopologyRefiner</a></div><div class=\"ttdeci\">TopologyRefiner(TopologyRefiner const &amp;source)</div></div>\n-<div class=\"ttc\" id=\"aa01121_html_a14bf987459715b918b370247bb24a61c\"><div class=\"ttname\"><a href=\"a01121.html#a14bf987459715b918b370247bb24a61c\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::GetMaxValence</a></div><div class=\"ttdeci\">int GetMaxValence() const</div><div class=\"ttdoc\">Returns the maximum vertex valence in all levels.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00077\">topologyRefiner.h:77</a></div></div>\n-<div class=\"ttc\" id=\"aa01121_html_a1712dfb8f057c939b48f6fb62c4c66e8\"><div class=\"ttname\"><a href=\"a01121.html#a1712dfb8f057c939b48f6fb62c4c66e8\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::getLevel</a></div><div class=\"ttdeci\">Vtr::internal::Level const &amp; getLevel(int l) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00237\">topologyRefiner.h:237</a></div></div>\n-<div class=\"ttc\" id=\"aa01121_html_a1b68f0501aabb94ba410e006181d2cc5\"><div class=\"ttname\"><a href=\"a01121.html#a1b68f0501aabb94ba410e006181d2cc5\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::HasHoles</a></div><div class=\"ttdeci\">bool HasHoles() const</div><div class=\"ttdoc\">Returns true if faces have been tagged as holes.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00080\">topologyRefiner.h:80</a></div></div>\n-<div class=\"ttc\" id=\"aa01121_html_a239ca467443788cab395336ec33c7dbe\"><div class=\"ttname\"><a href=\"a01121.html#a239ca467443788cab395336ec33c7dbe\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::GetNumLevels</a></div><div class=\"ttdeci\">int GetNumLevels() const</div><div class=\"ttdoc\">Returns the number of refinement levels.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00071\">topologyRefiner.h:71</a></div></div>\n-<div class=\"ttc\" id=\"aa01121_html_a30e986821916537de9d85e6b032ff5da\"><div class=\"ttname\"><a href=\"a01121.html#a30e986821916537de9d85e6b032ff5da\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::GetNumFVarValuesTotal</a></div><div class=\"ttdeci\">int GetNumFVarValuesTotal(int channel=0) const</div><div class=\"ttdoc\">Returns the total number of face-varying values in all levels.</div></div>\n-<div class=\"ttc\" id=\"aa01121_html_a402a532c087e1e0041ad6bb613b1a79e\"><div class=\"ttname\"><a href=\"a01121.html#a402a532c087e1e0041ad6bb613b1a79e\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::getRefinement</a></div><div class=\"ttdeci\">Vtr::internal::Refinement const &amp; getRefinement(int l) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00240\">topologyRefiner.h:240</a></div></div>\n-<div class=\"ttc\" id=\"aa01121_html_a4528f38657b0c96bce6c3d7deffd7c02\"><div class=\"ttname\"><a href=\"a01121.html#a4528f38657b0c96bce6c3d7deffd7c02\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::GetSchemeOptions</a></div><div class=\"ttdeci\">Sdc::Options GetSchemeOptions() const</div><div class=\"ttdoc\">Returns the subdivision options.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00065\">topologyRefiner.h:65</a></div></div>\n-<div class=\"ttc\" id=\"aa01121_html_a523d4cb42fe52e7b330bd027712c7f04\"><div class=\"ttname\"><a href=\"a01121.html#a523d4cb42fe52e7b330bd027712c7f04\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::getLevel</a></div><div class=\"ttdeci\">Vtr::internal::Level &amp; getLevel(int l)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00236\">topologyRefiner.h:236</a></div></div>\n-<div class=\"ttc\" id=\"aa01121_html_a5dfa6810f510fac1ec621fc9e6b530c4\"><div class=\"ttname\"><a href=\"a01121.html#a5dfa6810f510fac1ec621fc9e6b530c4\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::IsUniform</a></div><div class=\"ttdeci\">bool IsUniform() const</div><div class=\"ttdoc\">Returns true if uniform refinement has been applied.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00068\">topologyRefiner.h:68</a></div></div>\n-<div class=\"ttc\" id=\"aa01121_html_a758e06255013d2d7393c3ac2d18f6922\"><div class=\"ttname\"><a href=\"a01121.html#a758e06255013d2d7393c3ac2d18f6922\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::GetSchemeType</a></div><div class=\"ttdeci\">Sdc::SchemeType GetSchemeType() const</div><div class=\"ttdoc\">Returns the subdivision scheme.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00062\">topologyRefiner.h:62</a></div></div>\n-<div class=\"ttc\" id=\"aa01121_html_a7d0b5dc6f7f567507a906e00d1887151\"><div class=\"ttname\"><a href=\"a01121.html#a7d0b5dc6f7f567507a906e00d1887151\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::GetMaxLevel</a></div><div class=\"ttdeci\">int GetMaxLevel() const</div><div class=\"ttdoc\">Returns the highest level of refinement.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00074\">topologyRefiner.h:74</a></div></div>\n-<div class=\"ttc\" id=\"aa01121_html_a91353962838bff64448014136e0e11ff\"><div class=\"ttname\"><a href=\"a01121.html#a91353962838bff64448014136e0e11ff\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::TopologyRefiner</a></div><div class=\"ttdeci\">TopologyRefiner(Sdc::SchemeType type, Sdc::Options options=Sdc::Options())</div><div class=\"ttdoc\">Constructor.</div></div>\n-<div class=\"ttc\" id=\"aa01121_html_a96f712a5e40873f00b0b61f72ffb9e3c\"><div class=\"ttname\"><a href=\"a01121.html#a96f712a5e40873f00b0b61f72ffb9e3c\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::GetNumEdgesTotal</a></div><div class=\"ttdeci\">int GetNumEdgesTotal() const</div><div class=\"ttdoc\">Returns the total number of edges in all levels.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00086\">topologyRefiner.h:86</a></div></div>\n-<div class=\"ttc\" id=\"aa01121_html_a97612a1a955f8b65e6d7e7761ed1cef7\"><div class=\"ttname\"><a href=\"a01121.html#a97612a1a955f8b65e6d7e7761ed1cef7\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::PatchBuilder</a></div><div class=\"ttdeci\">friend class PatchBuilder</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00226\">topologyRefiner.h:226</a></div></div>\n-<div class=\"ttc\" id=\"aa01121_html_aa9be824a572029f3ec1e0c0d6cfecd77\"><div class=\"ttname\"><a href=\"a01121.html#aa9be824a572029f3ec1e0c0d6cfecd77\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::GetNumFVarChannels</a></div><div class=\"ttdeci\">int GetNumFVarChannels() const</div><div class=\"ttdoc\">Returns the number of face-varying channels in the tables.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00293\">topologyRefiner.h:293</a></div></div>\n-<div class=\"ttc\" id=\"aa01121_html_abb1241288f333733e84a5676f55f6bb9\"><div class=\"ttname\"><a href=\"a01121.html#abb1241288f333733e84a5676f55f6bb9\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::GetUniformOptions</a></div><div class=\"ttdeci\">UniformOptions GetUniformOptions() const</div><div class=\"ttdoc\">Returns the options specified on refinement.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00149\">topologyRefiner.h:149</a></div></div>\n-<div class=\"ttc\" id=\"aa01121_html_ac5eadebfdd9b11ac383653e5a2383231\"><div class=\"ttname\"><a href=\"a01121.html#ac5eadebfdd9b11ac383653e5a2383231\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::GetNumFacesTotal</a></div><div class=\"ttdeci\">int GetNumFacesTotal() const</div><div class=\"ttdoc\">Returns the total number of edges in all levels.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00089\">topologyRefiner.h:89</a></div></div>\n-<div class=\"ttc\" id=\"aa01121_html_accbb5f2a2fa9138df8c399b9f1d37982\"><div class=\"ttname\"><a href=\"a01121.html#accbb5f2a2fa9138df8c399b9f1d37982\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::GetNumFaceVerticesTotal</a></div><div class=\"ttdeci\">int GetNumFaceVerticesTotal() const</div><div class=\"ttdoc\">Returns the total number of face vertices in all levels.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00092\">topologyRefiner.h:92</a></div></div>\n-<div class=\"ttc\" id=\"aa01121_html_ad111e17222fca3c7877734ef1780e37f\"><div class=\"ttname\"><a href=\"a01121.html#ad111e17222fca3c7877734ef1780e37f\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::getRefinement</a></div><div class=\"ttdeci\">Vtr::internal::Refinement &amp; getRefinement(int l)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00239\">topologyRefiner.h:239</a></div></div>\n-<div class=\"ttc\" id=\"aa01121_html_ad22b7ffd9f8f3b488e5f220cf00c8c82\"><div class=\"ttname\"><a href=\"a01121.html#ad22b7ffd9f8f3b488e5f220cf00c8c82\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::RefineUniform</a></div><div class=\"ttdeci\">void RefineUniform(UniformOptions options)</div><div class=\"ttdoc\">Refine the topology uniformly.</div></div>\n-<div class=\"ttc\" id=\"aa01121_html_ad34359a8dc42748122362e459f1409aa\"><div class=\"ttname\"><a href=\"a01121.html#ad34359a8dc42748122362e459f1409aa\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::~TopologyRefiner</a></div><div class=\"ttdeci\">~TopologyRefiner()</div><div class=\"ttdoc\">Destructor.</div></div>\n-<div class=\"ttc\" id=\"aa01121_html_ad452cef79832abb71eef0c3d88acc1a0\"><div class=\"ttname\"><a href=\"a01121.html#ad452cef79832abb71eef0c3d88acc1a0\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::PatchTableBuilder</a></div><div class=\"ttdeci\">friend class PatchTableBuilder</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00225\">topologyRefiner.h:225</a></div></div>\n-<div class=\"ttc\" id=\"aa01121_html_adc03a3531bd92ada5669788241e3515f\"><div class=\"ttname\"><a href=\"a01121.html#adc03a3531bd92ada5669788241e3515f\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::GetLevel</a></div><div class=\"ttdeci\">TopologyLevel const &amp; GetLevel(int level) const</div><div class=\"ttdoc\">Returns a handle to access data specific to a particular level.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00095\">topologyRefiner.h:95</a></div></div>\n-<div class=\"ttc\" id=\"aa01121_html_ae8ef99a47f8185a3a621e4d5b10a20a0\"><div class=\"ttname\"><a href=\"a01121.html#ae8ef99a47f8185a3a621e4d5b10a20a0\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::GetNumVerticesTotal</a></div><div class=\"ttdeci\">int GetNumVerticesTotal() const</div><div class=\"ttdoc\">Returns the total number of vertices in all levels.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00083\">topologyRefiner.h:83</a></div></div>\n-<div class=\"ttc\" id=\"aa01121_html_ae93be3ade4e67999007460900bbbe039\"><div class=\"ttname\"><a href=\"a01121.html#ae93be3ade4e67999007460900bbbe039\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::Unrefine</a></div><div class=\"ttdeci\">void Unrefine()</div><div class=\"ttdoc\">Unrefine the topology, keeping only the base level.</div></div>\n-<div class=\"ttc\" id=\"aa01121_html_af1cb63210dc03f27cbdb15dc4d3c48b6\"><div class=\"ttname\"><a href=\"a01121.html#af1cb63210dc03f27cbdb15dc4d3c48b6\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::GetAdaptiveOptions</a></div><div class=\"ttdeci\">AdaptiveOptions GetAdaptiveOptions() const</div><div class=\"ttdoc\">Returns the options specified on refinement.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00196\">topologyRefiner.h:196</a></div></div>\n-<div class=\"ttc\" id=\"aa01121_html_af29a7e9914ee6860c7167300ea17e514\"><div class=\"ttname\"><a href=\"a01121.html#af29a7e9914ee6860c7167300ea17e514\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::GetFVarLinearInterpolation</a></div><div class=\"ttdeci\">Sdc::Options::FVarLinearInterpolation GetFVarLinearInterpolation(int channel=0) const</div><div class=\"ttdoc\">Returns the face-varying interpolation rule set for a given channel.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00298\">topologyRefiner.h:298</a></div></div>\n-<div class=\"ttc\" id=\"aa01121_html_aff92309935db19988908471bee4fef4d\"><div class=\"ttname\"><a href=\"a01121.html#aff92309935db19988908471bee4fef4d\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::RefineAdaptive</a></div><div class=\"ttdeci\">void RefineAdaptive(AdaptiveOptions options, ConstIndexArray selectedFaces=ConstIndexArray())</div><div class=\"ttdoc\">Feature Adaptive topology refinement.</div></div>\n-<div class=\"ttc\" id=\"aa01125_html\"><div class=\"ttname\"><a href=\"a01125.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::UniformOptions</a></div><div class=\"ttdoc\">Uniform refinement options.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00118\">topologyRefiner.h:118</a></div></div>\n-<div class=\"ttc\" id=\"aa01125_html_a240d1e5f5b743486e8122db6223d4562\"><div class=\"ttname\"><a href=\"a01125.html#a240d1e5f5b743486e8122db6223d4562\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::UniformOptions::refinementLevel</a></div><div class=\"ttdeci\">unsigned int refinementLevel</div><div class=\"ttdoc\">Number of refinement iterations.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00128\">topologyRefiner.h:128</a></div></div>\n-<div class=\"ttc\" id=\"aa01125_html_a3b1e47f9568213cc322ef29a84c932b6\"><div class=\"ttname\"><a href=\"a01125.html#a3b1e47f9568213cc322ef29a84c932b6\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::UniformOptions::orderVerticesFromFacesFirst</a></div><div class=\"ttdeci\">unsigned int orderVerticesFromFacesFirst</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00129\">topologyRefiner.h:130</a></div></div>\n-<div class=\"ttc\" id=\"aa01125_html_a47a5b6a174f91a113c7f50b1b55bd664\"><div class=\"ttname\"><a href=\"a01125.html#a47a5b6a174f91a113c7f50b1b55bd664\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::UniformOptions::SetRefinementLevel</a></div><div class=\"ttdeci\">void SetRefinementLevel(int level)</div><div class=\"ttdoc\">Set uniform refinement level.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00126\">topologyRefiner.h:126</a></div></div>\n-<div class=\"ttc\" id=\"aa01125_html_ad58e8c2606ce33af17bb83fb90eb7325\"><div class=\"ttname\"><a href=\"a01125.html#ad58e8c2606ce33af17bb83fb90eb7325\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::UniformOptions::fullTopologyInLastLevel</a></div><div class=\"ttdeci\">unsigned int fullTopologyInLastLevel</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00131\">topologyRefiner.h:131</a></div></div>\n-<div class=\"ttc\" id=\"aa01125_html_af20c4ed6bf53695afb4a978fdf472ed3\"><div class=\"ttname\"><a href=\"a01125.html#af20c4ed6bf53695afb4a978fdf472ed3\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::UniformOptions::UniformOptions</a></div><div class=\"ttdeci\">UniformOptions(int level)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00120\">topologyRefiner.h:120</a></div></div>\n-<div class=\"ttc\" id=\"aa01129_html\"><div class=\"ttname\"><a href=\"a01129.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::AdaptiveOptions</a></div><div class=\"ttdoc\">Adaptive refinement options.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00156\">topologyRefiner.h:156</a></div></div>\n-<div class=\"ttc\" id=\"aa01129_html_a1c8854b9dd7ff2353b618434d08d054a\"><div class=\"ttname\"><a href=\"a01129.html#a1c8854b9dd7ff2353b618434d08d054a\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::AdaptiveOptions::secondaryLevel</a></div><div class=\"ttdeci\">unsigned int secondaryLevel</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00174\">topologyRefiner.h:174</a></div></div>\n-<div class=\"ttc\" id=\"aa01129_html_a3b1e47f9568213cc322ef29a84c932b6\"><div class=\"ttname\"><a href=\"a01129.html#a3b1e47f9568213cc322ef29a84c932b6\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::AdaptiveOptions::orderVerticesFromFacesFirst</a></div><div class=\"ttdeci\">unsigned int orderVerticesFromFacesFirst</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00182\">topologyRefiner.h:182</a></div></div>\n-<div class=\"ttc\" id=\"aa01129_html_a3c39e6532871f8952e2f94332b8c80bf\"><div class=\"ttname\"><a href=\"a01129.html#a3c39e6532871f8952e2f94332b8c80bf\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::AdaptiveOptions::AdaptiveOptions</a></div><div class=\"ttdeci\">AdaptiveOptions(int level)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00158\">topologyRefiner.h:158</a></div></div>\n-<div class=\"ttc\" id=\"aa01129_html_a5561c34bac948dc836506e8e8d3ee134\"><div class=\"ttname\"><a href=\"a01129.html#a5561c34bac948dc836506e8e8d3ee134\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::AdaptiveOptions::isolationLevel</a></div><div class=\"ttdeci\">unsigned int isolationLevel</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00172\">topologyRefiner.h:172</a></div></div>\n-<div class=\"ttc\" id=\"aa01129_html_a5834971432c649e28d5a0186f79a60d5\"><div class=\"ttname\"><a href=\"a01129.html#a5834971432c649e28d5a0186f79a60d5\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::AdaptiveOptions::useSingleCreasePatch</a></div><div class=\"ttdeci\">unsigned int useSingleCreasePatch</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00176\">topologyRefiner.h:176</a></div></div>\n-<div class=\"ttc\" id=\"aa01129_html_a5eba866952b7be15b065060b1f5a81da\"><div class=\"ttname\"><a href=\"a01129.html#a5eba866952b7be15b065060b1f5a81da\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::AdaptiveOptions::useInfSharpPatch</a></div><div class=\"ttdeci\">unsigned int useInfSharpPatch</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00178\">topologyRefiner.h:178</a></div></div>\n-<div class=\"ttc\" id=\"aa01129_html_a5ef292b43e4824968e72d664012be93f\"><div class=\"ttname\"><a href=\"a01129.html#a5ef292b43e4824968e72d664012be93f\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::AdaptiveOptions::SetIsolationLevel</a></div><div class=\"ttdeci\">void SetIsolationLevel(int level)</div><div class=\"ttdoc\">Set isolation level.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00167\">topologyRefiner.h:167</a></div></div>\n-<div class=\"ttc\" id=\"aa01129_html_a74c90a5955fcad9c95d4c18346f7c312\"><div class=\"ttname\"><a href=\"a01129.html#a74c90a5955fcad9c95d4c18346f7c312\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::AdaptiveOptions::considerFVarChannels</a></div><div class=\"ttdeci\">unsigned int considerFVarChannels</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00180\">topologyRefiner.h:180</a></div></div>\n-<div class=\"ttc\" id=\"aa01129_html_aef7c0b69c6709719e4d985ca7b5d6dd6\"><div class=\"ttname\"><a href=\"a01129.html#aef7c0b69c6709719e4d985ca7b5d6dd6\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::AdaptiveOptions::SetSecondaryLevel</a></div><div class=\"ttdeci\">void SetSecondaryLevel(int level)</div><div class=\"ttdoc\">Set secondary isolation level.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00170\">topologyRefiner.h:170</a></div></div>\n-<div class=\"ttc\" id=\"aa01133_html\"><div class=\"ttname\"><a href=\"a01133.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactoryBase</a></div><div class=\"ttdoc\">Private base class of Factories for constructing TopologyRefiners.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00767_source.html#l00047\">topologyRefinerFactory.h:47</a></div></div>\n-<div class=\"ttc\" id=\"aa01337_html\"><div class=\"ttname\"><a href=\"a01337.html\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options</a></div><div class=\"ttdoc\">All supported options applying to subdivision scheme.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00734_source.html#l00051\">options.h:51</a></div></div>\n-<div class=\"ttc\" id=\"aa01337_html_a5b87eaca6ca0833462c9d4ad84df167b\"><div class=\"ttname\"><a href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167b\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::FVarLinearInterpolation</a></div><div class=\"ttdeci\">FVarLinearInterpolation</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00734_source.html#l00060\">options.h:60</a></div></div>\n-<div class=\"ttc\" id=\"aa01353_html\"><div class=\"ttname\"><a href=\"a01353.html\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00683_source.html#l00053\">array.h:53</a></div></div>\n+<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span>} <span class=\"comment\">// end namespace Osd</span></div>\n+</div>\n+<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span> </div>\n+<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span> </div>\n+<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span> </div>\n+<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_BUFFER_DESCRIPTOR_H</span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa01141_html\"><div class=\"ttname\"><a href=\"a01141.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::BufferDescriptor</a></div><div class=\"ttdoc\">BufferDescriptor is a struct which describes buffer elements in interleaved data buffers....</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00061\">bufferDescriptor.h:61</a></div></div>\n+<div class=\"ttc\" id=\"aa01141_html_a08f66a6870d87afcd5dc1b60d1019692\"><div class=\"ttname\"><a href=\"a01141.html#a08f66a6870d87afcd5dc1b60d1019692\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::BufferDescriptor::stride</a></div><div class=\"ttdeci\">int stride</div><div class=\"ttdoc\">stride to the next element</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00102\">bufferDescriptor.h:102</a></div></div>\n+<div class=\"ttc\" id=\"aa01141_html_a372de693ad40b3f42839c8ec6ac845f4\"><div class=\"ttname\"><a href=\"a01141.html#a372de693ad40b3f42839c8ec6ac845f4\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::BufferDescriptor::Reset</a></div><div class=\"ttdeci\">void Reset()</div><div class=\"ttdoc\">Resets the descriptor to default.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00081\">bufferDescriptor.h:81</a></div></div>\n+<div class=\"ttc\" id=\"aa01141_html_a446218762f5de8c77d06ee61e14b6b61\"><div class=\"ttname\"><a href=\"a01141.html#a446218762f5de8c77d06ee61e14b6b61\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::BufferDescriptor::BufferDescriptor</a></div><div class=\"ttdeci\">BufferDescriptor()</div><div class=\"ttdoc\">Default Constructor.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00064\">bufferDescriptor.h:64</a></div></div>\n+<div class=\"ttc\" id=\"aa01141_html_a958068066d1d10ae2a452ac57d9c0401\"><div class=\"ttname\"><a href=\"a01141.html#a958068066d1d10ae2a452ac57d9c0401\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::BufferDescriptor::BufferDescriptor</a></div><div class=\"ttdeci\">BufferDescriptor(int o, int l, int s)</div><div class=\"ttdoc\">Constructor.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00067\">bufferDescriptor.h:67</a></div></div>\n+<div class=\"ttc\" id=\"aa01141_html_a9f59b34b1f25fe00023291b678246bcc\"><div class=\"ttname\"><a href=\"a01141.html#a9f59b34b1f25fe00023291b678246bcc\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::BufferDescriptor::length</a></div><div class=\"ttdeci\">int length</div><div class=\"ttdoc\">number or length of the data</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00100\">bufferDescriptor.h:100</a></div></div>\n+<div class=\"ttc\" id=\"aa01141_html_a9f79e5aef7aa7198087e68c98c9804d3\"><div class=\"ttname\"><a href=\"a01141.html#a9f79e5aef7aa7198087e68c98c9804d3\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::BufferDescriptor::operator!=</a></div><div class=\"ttdeci\">bool operator!=(BufferDescriptor const &amp;other) const</div><div class=\"ttdoc\">True if the descriptors are not identical.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00093\">bufferDescriptor.h:93</a></div></div>\n+<div class=\"ttc\" id=\"aa01141_html_aaff9aa09cae91e39d5422c8cfc878ba5\"><div class=\"ttname\"><a href=\"a01141.html#aaff9aa09cae91e39d5422c8cfc878ba5\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::BufferDescriptor::operator==</a></div><div class=\"ttdeci\">bool operator==(BufferDescriptor const &amp;other) const</div><div class=\"ttdoc\">True if the descriptors are identical.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00086\">bufferDescriptor.h:86</a></div></div>\n+<div class=\"ttc\" id=\"aa01141_html_ac532c4b500b1a85ea22217f2c65a70ed\"><div class=\"ttname\"><a href=\"a01141.html#ac532c4b500b1a85ea22217f2c65a70ed\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::BufferDescriptor::IsValid</a></div><div class=\"ttdeci\">bool IsValid() const</div><div class=\"ttdoc\">True if the descriptor values are internally consistent.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00075\">bufferDescriptor.h:75</a></div></div>\n+<div class=\"ttc\" id=\"aa01141_html_ae3d9db59ffddaff0873246935222c6a8\"><div class=\"ttname\"><a href=\"a01141.html#ae3d9db59ffddaff0873246935222c6a8\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::BufferDescriptor::GetLocalOffset</a></div><div class=\"ttdeci\">int GetLocalOffset() const</div><div class=\"ttdoc\">Returns the relative offset within a stride.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00070\">bufferDescriptor.h:70</a></div></div>\n+<div class=\"ttc\" id=\"aa01141_html_aed7ea92f45bd273dde380a45ddced592\"><div class=\"ttname\"><a href=\"a01141.html#aed7ea92f45bd273dde380a45ddced592\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::BufferDescriptor::offset</a></div><div class=\"ttdeci\">int offset</div><div class=\"ttdoc\">offset to desired element data</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00098\">bufferDescriptor.h:98</a></div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7f420b72a822828cfa8b0561c695a5cc.html\">far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00764.html\">topologyRefiner.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00764.html\">bufferDescriptor.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-topologyRefiner.h\n+bufferDescriptor.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2014 DreamWorks Animation LLC.\n+2// Copyright 2015 Pixar\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -23,441 +23,126 @@\n 17//\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n-24#ifndef OPENSUBDIV3_FAR_TOPOLOGY_REFINER_H\n-25#define OPENSUBDIV3_FAR_TOPOLOGY_REFINER_H\n-26\n-27#include \"../version.h\"\n-28\n-29#include \"../sdc/types.h\"\n-30#include \"../sdc/options.h\"\n-31#include \"../far/types.h\"\n-32#include \"../far/topologyLevel.h\"\n+24\n+25#ifndef OPENSUBDIV3_OSD_BUFFER_DESCRIPTOR_H\n+26#define OPENSUBDIV3_OSD_BUFFER_DESCRIPTOR_H\n+27\n+28#include \"../version.h\"\n+29#include <string.h>\n+30\n+31namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+32namespace OPENSUBDIV_VERSION {\n 33\n-34#include <vector>\n+_\b3_\b4namespace Osd {\n 35\n-36\n-37namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-38namespace OPENSUBDIV_VERSION {\n-39\n-_\b4_\b0namespace Vtr { namespace internal { class SparseSelector; } }\n-41namespace Far { namespace internal { class FeatureMask; } }\n-42\n-43namespace Far {\n-44\n-45template <typename REAL> class PrimvarRefinerReal;\n-46template <class MESH> class TopologyRefinerFactory;\n-47\n-_\b5_\b1class _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br {\n-52\n-53public:\n-54\n-_\b5_\b6 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br(_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\bT_\by_\bp_\be type, _\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs options = _\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n-());\n-57\n-_\b5_\b9 _\b~_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br();\n-60\n-_\b6_\b2 _\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\bT_\by_\bp_\be _\bG_\be_\bt_\bS_\bc_\bh_\be_\bm_\be_\bT_\by_\bp_\be() const { return _subdivType; }\n-63\n-_\b6_\b5 _\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs _\bG_\be_\bt_\bS_\bc_\bh_\be_\bm_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs() const { return _subdivOptions; }\n-66\n-_\b6_\b8 bool _\bI_\bs_\bU_\bn_\bi_\bf_\bo_\br_\bm() const { return _isUniform; }\n-69\n-_\b7_\b1 int _\bG_\be_\bt_\bN_\bu_\bm_\bL_\be_\bv_\be_\bl_\bs() const { return (int)_farLevels.size(); }\n-72\n-_\b7_\b4 int _\bG_\be_\bt_\bM_\ba_\bx_\bL_\be_\bv_\be_\bl() const { return _maxLevel; }\n-75\n-_\b7_\b7 int _\bG_\be_\bt_\bM_\ba_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be() const { return _maxValence; }\n-78\n-_\b8_\b0 bool _\bH_\ba_\bs_\bH_\bo_\bl_\be_\bs() const { return _hasHoles; }\n-81\n-_\b8_\b3 int _\bG_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs_\bT_\bo_\bt_\ba_\bl() const { return _totalVertices; }\n+46\n+47// example:\n+48// n\n+49// -----+----------------------------------------+-------------------------\n+50// | vertex 0 |\n+51// -----+----------------------------------------+-------------------------\n+52// | X Y Z R G B A Xu Yu Zu Xv Yv Zv |\n+53// -----+----------------------------------------+-------------------------\n+54// <------------- stride = 13 -------------->\n+55//\n+56// - XYZ (offset = n+0, length = 3, stride = 13)\n+57// - RGBA (offset = n+3, length = 4, stride = 13)\n+58// - uTangent (offset = n+7, length = 3, stride = 13)\n+59// - vTangent (offset = n+10, length = 3, stride = 13)\n+60//\n+_\b6_\b1struct _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br {\n+62\n+_\b6_\b4 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br() : _\bo_\bf_\bf_\bs_\be_\bt(0), _\bl_\be_\bn_\bg_\bt_\bh(0), _\bs_\bt_\br_\bi_\bd_\be(0) { }\n+65\n+_\b6_\b7 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(int o, int l, int s) : _\bo_\bf_\bf_\bs_\be_\bt(o), _\bl_\be_\bn_\bg_\bt_\bh(l), _\bs_\bt_\br_\bi_\bd_\be(s) { }\n+68\n+_\b7_\b0 int _\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bO_\bf_\bf_\bs_\be_\bt() const {\n+71 return _\bs_\bt_\br_\bi_\bd_\be > 0 ? _\bo_\bf_\bf_\bs_\be_\bt % _\bs_\bt_\br_\bi_\bd_\be : 0;\n+72 }\n+73\n+_\b7_\b5 bool _\bI_\bs_\bV_\ba_\bl_\bi_\bd() const {\n+76 return ((_\bl_\be_\bn_\bg_\bt_\bh > 0) &&\n+77 (_\bl_\be_\bn_\bg_\bt_\bh <= _\bs_\bt_\br_\bi_\bd_\be - _\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bO_\bf_\bf_\bs_\be_\bt()));\n+78 }\n+79\n+_\b8_\b1 void _\bR_\be_\bs_\be_\bt() {\n+82 _\bo_\bf_\bf_\bs_\be_\bt = _\bl_\be_\bn_\bg_\bt_\bh = _\bs_\bt_\br_\bi_\bd_\be = 0;\n+83 }\n 84\n-_\b8_\b6 int _\bG_\be_\bt_\bN_\bu_\bm_\bE_\bd_\bg_\be_\bs_\bT_\bo_\bt_\ba_\bl() const { return _totalEdges; }\n-87\n-_\b8_\b9 int _\bG_\be_\bt_\bN_\bu_\bm_\bF_\ba_\bc_\be_\bs_\bT_\bo_\bt_\ba_\bl() const { return _totalFaces; }\n-90\n-_\b9_\b2 int _\bG_\be_\bt_\bN_\bu_\bm_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\bi_\bc_\be_\bs_\bT_\bo_\bt_\ba_\bl() const { return _totalFaceVertices; }\n-93\n-_\b9_\b5 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl const & _\bG_\be_\bt_\bL_\be_\bv_\be_\bl(int level) const { return _farLevels[level];\n-}\n+_\b8_\b6 bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b _\b=_\b=_\b (_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &other) const {\n+87 return (_\bo_\bf_\bf_\bs_\be_\bt == other._\bo_\bf_\bf_\bs_\be_\bt &&\n+88 _\bl_\be_\bn_\bg_\bt_\bh == other._\bl_\be_\bn_\bg_\bt_\bh &&\n+89 _\bs_\bt_\br_\bi_\bd_\be == other._\bs_\bt_\br_\bi_\bd_\be);\n+90 }\n+91\n+_\b9_\b3 bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b _\b!_\b=_\b (_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &other) const {\n+94 return !(this->_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b=(other));\n+95 }\n 96\n-98\n-100\n-101 //\n-102 // Uniform refinement\n-103 //\n+_\b9_\b8 int _\bo_\bf_\bf_\bs_\be_\bt;\n+_\b1_\b0_\b0 int _\bl_\be_\bn_\bg_\bt_\bh;\n+_\b1_\b0_\b2 int _\bs_\bt_\br_\bi_\bd_\be;\n+103};\n 104\n-_\b1_\b1_\b8 struct _\bU_\bn_\bi_\bf_\bo_\br_\bm_\bO_\bp_\bt_\bi_\bo_\bn_\bs {\n-119\n-_\b1_\b2_\b0 _\bU_\bn_\bi_\bf_\bo_\br_\bm_\bO_\bp_\bt_\bi_\bo_\bn_\bs(int level) :\n-121 _\br_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt_\bL_\be_\bv_\be_\bl(level & 0xf),\n-122 _\bo_\br_\bd_\be_\br_\bV_\be_\br_\bt_\bi_\bc_\be_\bs_\bF_\br_\bo_\bm_\bF_\ba_\bc_\be_\bs_\bF_\bi_\br_\bs_\bt(false),\n-123 _\bf_\bu_\bl_\bl_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bI_\bn_\bL_\ba_\bs_\bt_\bL_\be_\bv_\be_\bl(false) { }\n-124\n-_\b1_\b2_\b6 void _\bS_\be_\bt_\bR_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt_\bL_\be_\bv_\be_\bl(int level) { _\br_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt_\bL_\be_\bv_\be_\bl = level & 0xf; }\n-127\n-_\b1_\b2_\b8 unsigned int _\br_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt_\bL_\be_\bv_\be_\bl:4,\n-_\b1_\b2_\b9 _\bo_\br_\bd_\be_\br_\bV_\be_\br_\bt_\bi_\bc_\be_\bs_\bF_\br_\bo_\bm_\bF_\ba_\bc_\be_\bs_\bF_\bi_\br_\bs_\bt:1,\n-_\b1_\b3_\b1 _\bf_\bu_\bl_\bl_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bI_\bn_\bL_\ba_\bs_\bt_\bL_\be_\bv_\be_\bl:1;\n-134 };\n-135\n-_\b1_\b4_\b6 void _\bR_\be_\bf_\bi_\bn_\be_\bU_\bn_\bi_\bf_\bo_\br_\bm(_\bU_\bn_\bi_\bf_\bo_\br_\bm_\bO_\bp_\bt_\bi_\bo_\bn_\bs options);\n-147\n-_\b1_\b4_\b9 _\bU_\bn_\bi_\bf_\bo_\br_\bm_\bO_\bp_\bt_\bi_\bo_\bn_\bs _\bG_\be_\bt_\bU_\bn_\bi_\bf_\bo_\br_\bm_\bO_\bp_\bt_\bi_\bo_\bn_\bs() const { return _uniformOptions; }\n-150\n-151 //\n-152 // Adaptive refinement\n-153 //\n-154\n-_\b1_\b5_\b6 struct _\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs {\n-157\n-_\b1_\b5_\b8 _\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs(int level) :\n-159 _\bi_\bs_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bL_\be_\bv_\be_\bl(level & 0xf),\n-160 _\bs_\be_\bc_\bo_\bn_\bd_\ba_\br_\by_\bL_\be_\bv_\be_\bl(0xf),\n-161 _\bu_\bs_\be_\bS_\bi_\bn_\bg_\bl_\be_\bC_\br_\be_\ba_\bs_\be_\bP_\ba_\bt_\bc_\bh(false),\n-162 _\bu_\bs_\be_\bI_\bn_\bf_\bS_\bh_\ba_\br_\bp_\bP_\ba_\bt_\bc_\bh(false),\n-163 _\bc_\bo_\bn_\bs_\bi_\bd_\be_\br_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs(false),\n-164 _\bo_\br_\bd_\be_\br_\bV_\be_\br_\bt_\bi_\bc_\be_\bs_\bF_\br_\bo_\bm_\bF_\ba_\bc_\be_\bs_\bF_\bi_\br_\bs_\bt(false) { }\n-165\n-_\b1_\b6_\b7 void _\bS_\be_\bt_\bI_\bs_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bL_\be_\bv_\be_\bl(int level) { _\bi_\bs_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bL_\be_\bv_\be_\bl = level & 0xf; }\n-168\n-_\b1_\b7_\b0 void _\bS_\be_\bt_\bS_\be_\bc_\bo_\bn_\bd_\ba_\br_\by_\bL_\be_\bv_\be_\bl(int level) { _\bs_\be_\bc_\bo_\bn_\bd_\ba_\br_\by_\bL_\be_\bv_\be_\bl = level & 0xf; }\n-171\n-_\b1_\b7_\b2 unsigned int _\bi_\bs_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bL_\be_\bv_\be_\bl:4;\n-_\b1_\b7_\b4 unsigned int _\bs_\be_\bc_\bo_\bn_\bd_\ba_\br_\by_\bL_\be_\bv_\be_\bl:4;\n-_\b1_\b7_\b6 unsigned int _\bu_\bs_\be_\bS_\bi_\bn_\bg_\bl_\be_\bC_\br_\be_\ba_\bs_\be_\bP_\ba_\bt_\bc_\bh:1;\n-_\b1_\b7_\b8 unsigned int _\bu_\bs_\be_\bI_\bn_\bf_\bS_\bh_\ba_\br_\bp_\bP_\ba_\bt_\bc_\bh:1;\n-_\b1_\b8_\b0 unsigned int _\bc_\bo_\bn_\bs_\bi_\bd_\be_\br_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs:1;\n-_\b1_\b8_\b2 unsigned int _\bo_\br_\bd_\be_\br_\bV_\be_\br_\bt_\bi_\bc_\be_\bs_\bF_\br_\bo_\bm_\bF_\ba_\bc_\be_\bs_\bF_\bi_\br_\bs_\bt:1;\n-184 };\n-185\n-_\b1_\b9_\b2 void _\bR_\be_\bf_\bi_\bn_\be_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be(_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs options,\n-193 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by selectedFaces = _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by());\n-194\n-_\b1_\b9_\b6 _\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs _\bG_\be_\bt_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs() const { return _adaptiveOptions; }\n-197\n-_\b1_\b9_\b9 void _\bU_\bn_\br_\be_\bf_\bi_\bn_\be();\n-200\n-201\n-203\n-205\n-207 int _\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs() const;\n-208\n-210 _\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bF_\bV_\ba_\br_\bL_\bi_\bn_\be_\ba_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn _\bG_\be_\bt_\bF_\bV_\ba_\br_\bL_\bi_\bn_\be_\ba_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn(int\n-channel = 0) const;\n-211\n-_\b2_\b1_\b3 int _\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bs_\bT_\bo_\bt_\ba_\bl(int channel = 0) const;\n-214\n-216\n-217protected:\n-218\n-219 //\n-220 // Lower level protected methods intended strictly for internal use:\n-221 //\n-222 template <class MESH>\n-_\b2_\b2_\b3 friend class _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by;\n-_\b2_\b2_\b4 friend class _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\bB_\ba_\bs_\be;\n-_\b2_\b2_\b5 friend class _\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bB_\bu_\bi_\bl_\bd_\be_\br;\n-_\b2_\b2_\b6 friend class _\bP_\ba_\bt_\bc_\bh_\bB_\bu_\bi_\bl_\bd_\be_\br;\n-_\b2_\b2_\b7 friend class _\bP_\bt_\be_\bx_\bI_\bn_\bd_\bi_\bc_\be_\bs;\n-228 template <typename REAL>\n-_\b2_\b2_\b9 friend class _\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl;\n-230\n-231 // Copy constructor exposed via the factory class:\n-_\b2_\b3_\b2 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const & source);\n-233\n-234public:\n-235 // Levels and Refinements available internally (avoids need for more\n-friends)\n-_\b2_\b3_\b6 Vtr::internal::Level & _\bg_\be_\bt_\bL_\be_\bv_\be_\bl(int l) { return *_levels[l]; }\n-_\b2_\b3_\b7 Vtr::internal::Level const & _\bg_\be_\bt_\bL_\be_\bv_\be_\bl(int l) const { return *_levels[l]; }\n-238\n-_\b2_\b3_\b9 Vtr::internal::Refinement & _\bg_\be_\bt_\bR_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt(int l) { return *_refinements[l];\n-}\n-_\b2_\b4_\b0 Vtr::internal::Refinement const & _\bg_\be_\bt_\bR_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt(int l) const { return\n-*_refinements[l]; }\n-241\n-242private:\n-243 // Not default constructible or copyable:\n-244 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br() : _uniformOptions(0), _adaptiveOptions(0) { }\n-245 TopologyRefiner & operator=(TopologyRefiner const &) { return *this; }\n-246\n-247 void selectFeatureAdaptiveComponents(Vtr::internal::SparseSelector&\n-selector,\n-248 internal::FeatureMask const & mask,\n-249 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by selectedFaces);\n-250 void selectLinearIrregularFaces(Vtr::internal::SparseSelector& selector,\n-251 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by selectedFaces);\n-252\n-253 void initializeInventory();\n-254 void updateInventory(Vtr::internal::Level const & newLevel);\n-255\n-256 void appendLevel(Vtr::internal::Level & newLevel);\n-257 void appendRefinement(Vtr::internal::Refinement & newRefinement);\n-258 void assembleFarLevels();\n-259\n-260private:\n-261\n-262 _\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\bT_\by_\bp_\be _subdivType;\n-263 _\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs _subdivOptions;\n-264\n-265 unsigned int _isUniform : 1;\n-266 unsigned int _hasHoles : 1;\n-267 unsigned int _hasIrregFaces : 1;\n-268 unsigned int _regFaceSize : 3;\n-269 unsigned int _maxLevel : 4;\n-270\n-271 // Options assigned on refinement:\n-272 UniformOptions _uniformOptions;\n-273 AdaptiveOptions _adaptiveOptions;\n-274\n-275 // Cumulative properties of all levels:\n-276 int _totalVertices;\n-277 int _totalEdges;\n-278 int _totalFaces;\n-279 int _totalFaceVertices;\n-280 int _maxValence;\n-281\n-282 // Note the base level may be shared with another instance\n-283 bool _baseLevelOwned;\n-284\n-285 std::vector<Vtr::internal::Level *> _levels;\n-286 std::vector<Vtr::internal::Refinement *> _refinements;\n-287\n-288 std::vector<TopologyLevel> _farLevels;\n-289};\n-290\n-291\n-292inline int\n-_\b2_\b9_\b3_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs() const {\n-294\n-295 return _levels[0]->getNumFVarChannels();\n-296}\n-297inline _\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bF_\bV_\ba_\br_\bL_\bi_\bn_\be_\ba_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-_\b2_\b9_\b8_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bG_\be_\bt_\bF_\bV_\ba_\br_\bL_\bi_\bn_\be_\ba_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn(int channel) const {\n-299\n-300 return _levels[0]->getFVarOptions(channel).GetFVarLinearInterpolation();\n-301}\n-302\n-303} // end namespace Far\n-304\n-305} // end namespace OPENSUBDIV_VERSION\n-306using namespace OPENSUBDIV_VERSION;\n-307} // end namespace OpenSubdiv\n-308\n-309#endif /* OPENSUBDIV3_FAR_TOPOLOGY_REFINER_H */\n+105} // end namespace Osd\n+106\n+107} // end namespace OPENSUBDIV_VERSION\n+108using namespace OPENSUBDIV_VERSION;\n+109\n+110} // end namespace OpenSubdiv\n+111\n+112#endif // OPENSUBDIV3_OSD_BUFFER_DESCRIPTOR_H\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n-Vtr::ConstIndexArray ConstIndexArray\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b4_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\bT_\by_\bp_\be\n-SchemeType\n-Enumerated type for all subdivision schemes supported by OpenSubdiv.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b3_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl\n-Applies refinement operations to generic primvar data.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b5_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\bt_\be_\bx_\bI_\bn_\bd_\bi_\bc_\be_\bs\n-Object used to compute and query ptex face indices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\bt_\be_\bx_\bI_\bn_\bd_\bi_\bc_\be_\bs_\b._\bh_\b:_\b4_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl\n-An interface for accessing data in a specific level of a refined topology\n-hierarchy.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b4_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by\n-Factory for constructing TopologyRefiners from specific mesh classes.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b7_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br\n-Stores topology data for a specified set of refinement options.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b5_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br\n-TopologyRefiner(TopologyRefiner const &source)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bG_\be_\bt_\bM_\ba_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be\n-int GetMaxValence() const\n-Returns the maximum vertex valence in all levels.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b7_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bg_\be_\bt_\bL_\be_\bv_\be_\bl\n-Vtr::internal::Level const & getLevel(int l) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b2_\b3_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bH_\ba_\bs_\bH_\bo_\bl_\be_\bs\n-bool HasHoles() const\n-Returns true if faces have been tagged as holes.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b8_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bL_\be_\bv_\be_\bl_\bs\n-int GetNumLevels() const\n-Returns the number of refinement levels.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b7_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bs_\bT_\bo_\bt_\ba_\bl\n-int GetNumFVarValuesTotal(int channel=0) const\n-Returns the total number of face-varying values in all levels.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bg_\be_\bt_\bR_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt\n-Vtr::internal::Refinement const & getRefinement(int l) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b2_\b4_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bG_\be_\bt_\bS_\bc_\bh_\be_\bm_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n-Sdc::Options GetSchemeOptions() const\n-Returns the subdivision options.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b6_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bg_\be_\bt_\bL_\be_\bv_\be_\bl\n-Vtr::internal::Level & getLevel(int l)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b2_\b3_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bI_\bs_\bU_\bn_\bi_\bf_\bo_\br_\bm\n-bool IsUniform() const\n-Returns true if uniform refinement has been applied.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b6_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bG_\be_\bt_\bS_\bc_\bh_\be_\bm_\be_\bT_\by_\bp_\be\n-Sdc::SchemeType GetSchemeType() const\n-Returns the subdivision scheme.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b6_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bG_\be_\bt_\bM_\ba_\bx_\bL_\be_\bv_\be_\bl\n-int GetMaxLevel() const\n-Returns the highest level of refinement.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b7_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br\n-TopologyRefiner(Sdc::SchemeType type, Sdc::Options options=Sdc::Options())\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n+BufferDescriptor is a struct which describes buffer elements in interleaved\n+data buffers....\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b6_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bs_\bt_\br_\bi_\bd_\be\n+int stride\n+stride to the next element\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b1_\b0_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bR_\be_\bs_\be_\bt\n+void Reset()\n+Resets the descriptor to default.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b8_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n+BufferDescriptor()\n+Default Constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b6_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n+BufferDescriptor(int o, int l, int s)\n Constructor.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bE_\bd_\bg_\be_\bs_\bT_\bo_\bt_\ba_\bl\n-int GetNumEdgesTotal() const\n-Returns the total number of edges in all levels.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b8_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bB_\bu_\bi_\bl_\bd_\be_\br\n-friend class PatchBuilder\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b2_\b2_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs\n-int GetNumFVarChannels() const\n-Returns the number of face-varying channels in the tables.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b2_\b9_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bG_\be_\bt_\bU_\bn_\bi_\bf_\bo_\br_\bm_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n-UniformOptions GetUniformOptions() const\n-Returns the options specified on refinement.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b4_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bF_\ba_\bc_\be_\bs_\bT_\bo_\bt_\ba_\bl\n-int GetNumFacesTotal() const\n-Returns the total number of edges in all levels.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b8_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\bi_\bc_\be_\bs_\bT_\bo_\bt_\ba_\bl\n-int GetNumFaceVerticesTotal() const\n-Returns the total number of face vertices in all levels.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b9_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bg_\be_\bt_\bR_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt\n-Vtr::internal::Refinement & getRefinement(int l)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b2_\b3_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bU_\bn_\bi_\bf_\bo_\br_\bm\n-void RefineUniform(UniformOptions options)\n-Refine the topology uniformly.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\b~_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br\n-~TopologyRefiner()\n-Destructor.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bB_\bu_\bi_\bl_\bd_\be_\br\n-friend class PatchTableBuilder\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b2_\b2_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bG_\be_\bt_\bL_\be_\bv_\be_\bl\n-TopologyLevel const & GetLevel(int level) const\n-Returns a handle to access data specific to a particular level.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b9_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs_\bT_\bo_\bt_\ba_\bl\n-int GetNumVerticesTotal() const\n-Returns the total number of vertices in all levels.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b8_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bU_\bn_\br_\be_\bf_\bi_\bn_\be\n-void Unrefine()\n-Unrefine the topology, keeping only the base level.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bG_\be_\bt_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n-AdaptiveOptions GetAdaptiveOptions() const\n-Returns the options specified on refinement.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b9_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:\n-_\bG_\be_\bt_\bF_\bV_\ba_\br_\bL_\bi_\bn_\be_\ba_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-Sdc::Options::FVarLinearInterpolation GetFVarLinearInterpolation(int channel=0)\n-const\n-Returns the face-varying interpolation rule set for a given channel.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b2_\b9_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be\n-void RefineAdaptive(AdaptiveOptions options, ConstIndexArray\n-selectedFaces=ConstIndexArray())\n-Feature Adaptive topology refinement.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bU_\bn_\bi_\bf_\bo_\br_\bm_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n-Uniform refinement options.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b1_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bU_\bn_\bi_\bf_\bo_\br_\bm_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\br_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt_\bL_\be_\bv_\be_\bl\n-unsigned int refinementLevel\n-Number of refinement iterations.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b2_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bU_\bn_\bi_\bf_\bo_\br_\bm_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bo_\br_\bd_\be_\br_\bV_\be_\br_\bt_\bi_\bc_\be_\bs_\bF_\br_\bo_\bm_\bF_\ba_\bc_\be_\bs_\bF_\bi_\br_\bs_\bt\n-unsigned int orderVerticesFromFacesFirst\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b3_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bU_\bn_\bi_\bf_\bo_\br_\bm_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bS_\be_\bt_\bR_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt_\bL_\be_\bv_\be_\bl\n-void SetRefinementLevel(int level)\n-Set uniform refinement level.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b2_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bU_\bn_\bi_\bf_\bo_\br_\bm_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bf_\bu_\bl_\bl_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bI_\bn_\bL_\ba_\bs_\bt_\bL_\be_\bv_\be_\bl\n-unsigned int fullTopologyInLastLevel\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b3_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bU_\bn_\bi_\bf_\bo_\br_\bm_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bU_\bn_\bi_\bf_\bo_\br_\bm_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n-UniformOptions(int level)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b2_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n-Adaptive refinement options.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b5_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bs_\be_\bc_\bo_\bn_\bd_\ba_\br_\by_\bL_\be_\bv_\be_\bl\n-unsigned int secondaryLevel\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b7_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bo_\br_\bd_\be_\br_\bV_\be_\br_\bt_\bi_\bc_\be_\bs_\bF_\br_\bo_\bm_\bF_\ba_\bc_\be_\bs_\bF_\bi_\br_\bs_\bt\n-unsigned int orderVerticesFromFacesFirst\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b8_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n-AdaptiveOptions(int level)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b5_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bi_\bs_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bL_\be_\bv_\be_\bl\n-unsigned int isolationLevel\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b7_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bu_\bs_\be_\bS_\bi_\bn_\bg_\bl_\be_\bC_\br_\be_\ba_\bs_\be_\bP_\ba_\bt_\bc_\bh\n-unsigned int useSingleCreasePatch\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b7_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bu_\bs_\be_\bI_\bn_\bf_\bS_\bh_\ba_\br_\bp_\bP_\ba_\bt_\bc_\bh\n-unsigned int useInfSharpPatch\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b7_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bS_\be_\bt_\bI_\bs_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bL_\be_\bv_\be_\bl\n-void SetIsolationLevel(int level)\n-Set isolation level.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b6_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bc_\bo_\bn_\bs_\bi_\bd_\be_\br_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs\n-unsigned int considerFVarChannels\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b8_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bS_\be_\bt_\bS_\be_\bc_\bo_\bn_\bd_\ba_\br_\by_\bL_\be_\bv_\be_\bl\n-void SetSecondaryLevel(int level)\n-Set secondary isolation level.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b7_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\bB_\ba_\bs_\be\n-Private base class of Factories for constructing TopologyRefiners.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b4_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n-All supported options applying to subdivision scheme.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b5_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bF_\bV_\ba_\br_\bL_\bi_\bn_\be_\ba_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-FVarLinearInterpolation\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b6_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b5_\b3\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b6_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bl_\be_\bn_\bg_\bt_\bh\n+int length\n+number or length of the data\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b1_\b0_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b!_\b=\n+bool operator!=(BufferDescriptor const &other) const\n+True if the descriptors are not identical.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b9_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b=\n+bool operator==(BufferDescriptor const &other) const\n+True if the descriptors are identical.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b8_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bI_\bs_\bV_\ba_\bl_\bi_\bd\n+bool IsValid() const\n+True if the descriptor values are internally consistent.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b7_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bO_\bf_\bf_\bs_\be_\bt\n+int GetLocalOffset() const\n+Returns the relative offset within a stride.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b7_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bo_\bf_\bf_\bs_\be_\bt\n+int offset\n+offset to desired element data\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b9_\b8\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bf_\ba_\br\n-    * _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00767.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00767.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/far/topologyRefinerFactory.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/osd/glLegacyGregoryPatchTable.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -90,49 +90,42 @@\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> &#124;\n <a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">topologyRefinerFactory.h File Reference</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">glLegacyGregoryPatchTable.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00764_source.html\">../far/topologyRefiner.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00749_source.html\">../far/error.h</a>&quot;</code><br />\n-<code>#include &lt;cassert&gt;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00842_source.html\">../far/patchTable.h</a>&quot;</code><br />\n+<code>#include &quot;../osd/nonCopyable.h&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00722_source.html\">../osd/opengl.h</a>&quot;</code><br />\n </div>\n <p><a href=\"a00767_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01133.html\">TopologyRefinerFactoryBase</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Private base class of Factories for constructing TopologyRefiners.  <a href=\"a01133.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01117.html\">TopologyRefinerFactory&lt; MESH &gt;</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Factory for constructing TopologyRefiners from specific mesh classes.  <a href=\"a01117.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01137.html\">TopologyRefinerFactory&lt; MESH &gt;::Options</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"a01137.html\" title=\"Options related to the construction of each TopologyRefiner.\">Options</a> related to the construction of each <a class=\"el\" href=\"a01121.html\" title=\"Stores topology data for a specified set of refinement options.\">TopologyRefiner</a>.  <a href=\"a01137.html#details\">More...</a><br /></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01233.html\">GLLegacyGregoryPatchTable</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far</a></td></tr>\n+<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7f420b72a822828cfa8b0561c695a5cc.html\">far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00767.html\">topologyRefinerFactory.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00767.html\">glLegacyGregoryPatchTable.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,34 +1,25 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-topologyRefinerFactory.h File Reference\n+glLegacyGregoryPatchTable.h File Reference\n #include \"../version.h\"\n-#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh\"\n-#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\be_\br_\br_\bo_\br_\b._\bh\"\n-#include <cassert>\n+#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh\"\n+#include \"../osd/nonCopyable.h\"\n+#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bo_\bp_\be_\bn_\bg_\bl_\b._\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n- class \u00a0 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\bB_\ba_\bs_\be\n-\u00a0        Private base class of Factories for constructing TopologyRefiners.\n-         _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n- class \u00a0 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bM_\bE_\bS_\bH_\b _\b>\n-\u00a0        Factory for constructing TopologyRefiners from specific mesh classes.\n-         _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bM_\bE_\bS_\bH_\b _\b>_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n-\u00a0        _\bO_\bp_\bt_\bi_\bo_\bn_\bs related to the construction of each _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bG_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bf_\ba_\br\n-    * _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bg_\bl_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00767.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00767.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,5 +1,3 @@\n var a00767 = [\n-    [\"TopologyRefinerFactoryBase\", \"a01133.html\", \"a01133\"],\n-    [\"TopologyRefinerFactory< MESH >\", \"a01117.html\", \"a01117\"],\n-    [\"Options\", \"a01137.html\", \"a01137\"]\n+    [\"GLLegacyGregoryPatchTable\", \"a01233.html\", \"a01233\"]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00767_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00767_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/far/topologyRefinerFactory.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/osd/glLegacyGregoryPatchTable.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">topologyRefinerFactory.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">glLegacyGregoryPatchTable.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00767.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2014 DreamWorks Animation LLC.</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2015 Pixar</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -118,698 +118,104 @@\n <div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_FAR_TOPOLOGY_REFINER_FACTORY_H</span></div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#define OPENSUBDIV3_FAR_TOPOLOGY_REFINER_FACTORY_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span> </div>\n-<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span> </div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#include &quot;../far/topologyRefiner.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../far/error.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &lt;cassert&gt;</span></div>\n+<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_GL_LEGACY_GREGORY_PATCH_TABLE_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_GL_LEGACY_GREGORY_PATCH_TABLE_H</span></div>\n+<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n+<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../far/patchTable.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../osd/nonCopyable.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &quot;../osd/opengl.h&quot;</span></div>\n <div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n <div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n <div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n <div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">namespace </span>Far {</div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">namespace </span>Osd {</div>\n <div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span> </div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span><span class=\"comment\">//</span></div>\n-<div class=\"foldopen\" id=\"foldopen00047\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01133.html\">   47</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01133.html\">TopologyRefinerFactoryBase</a> {</div>\n-<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span><span class=\"keyword\">protected</span>:</div>\n-<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span> </div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span>    <span class=\"comment\">//  Protected methods invoked by the subclass template to verify and process each</span></div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span>    <span class=\"comment\">//  stage of construction implemented by the subclass:</span></div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01133.html#a896a964625491e084b3d776acd10f053\">   54</a></span>    <span class=\"keyword\">typedef</span> Vtr::internal::Level::ValidationCallback <a class=\"code hl_typedef\" href=\"a01133.html#a896a964625491e084b3d776acd10f053\">TopologyCallback</a>;</div>\n+<div class=\"foldopen\" id=\"foldopen00039\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01233.html\">   39</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01233.html\">GLLegacyGregoryPatchTable</a></div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span>    : <span class=\"keyword\">private</span> NonCopyable&lt;GLLegacyGregoryPatchTable&gt; {</div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01233.html#a51fd18f3671b7b6c473a039d75808067\">   42</a></span>    <a class=\"code hl_function\" href=\"a01233.html#a51fd18f3671b7b6c473a039d75808067\">~GLLegacyGregoryPatchTable</a>();</div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span> </div>\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01233.html#afa527b26d9eade00d0fa657646b1a151\">   44</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01233.html\">GLLegacyGregoryPatchTable</a> *<a class=\"code hl_function\" href=\"a01233.html#afa527b26d9eade00d0fa657646b1a151\">Create</a>(<a class=\"code hl_class\" href=\"a00993.html\">Far::PatchTable</a> <span class=\"keyword\">const</span> *patchTable);</div>\n+<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span> </div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01233.html#a733eda5d63a4d77324d7d50d704eaf3a\">   46</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01233.html#a733eda5d63a4d77324d7d50d704eaf3a\">UpdateVertexBuffer</a>(GLuint vbo);</div>\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00048\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01233.html#af81d48caf41d4a7e0c5ceb166d4de990\">   48</a></span>    GLuint <a class=\"code hl_function\" href=\"a01233.html#af81d48caf41d4a7e0c5ceb166d4de990\">GetVertexTextureBuffer</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span>        <span class=\"keywordflow\">return</span> _vertexTextureBuffer;</div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00052\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01233.html#a36f9d327f21d3dee80bb225000403cce\">   52</a></span>    GLuint <a class=\"code hl_function\" href=\"a01233.html#a36f9d327f21d3dee80bb225000403cce\">GetVertexValenceTextureBuffer</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span>        <span class=\"keywordflow\">return</span> _vertexValenceTextureBuffer;</div>\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span>    }</div>\n+</div>\n <div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span> </div>\n-<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01133.html#aba57674bcc5cb7367ce1fe527ec219ad\">   56</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01133.html#aba57674bcc5cb7367ce1fe527ec219ad\">prepareComponentTopologySizing</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a>&amp; refiner);</div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01133.html#a30ee63853ace8ecb0c3c2a6e3303aefc\">   57</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01133.html#a30ee63853ace8ecb0c3c2a6e3303aefc\">prepareComponentTopologyAssignment</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a>&amp; refiner, <span class=\"keywordtype\">bool</span> fullValidation,</div>\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span>                                                   <a class=\"code hl_typedef\" href=\"a01133.html#a896a964625491e084b3d776acd10f053\">TopologyCallback</a> callback, <span class=\"keywordtype\">void</span> <span class=\"keyword\">const</span> * callbackData);</div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01133.html#a8d7f178267895f2a90585e60849b9119\">   59</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01133.html#a8d7f178267895f2a90585e60849b9119\">prepareComponentTagsAndSharpness</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a>&amp; refiner);</div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01133.html#ac800e6db9b484b31f8fa11799ee4ac1b\">   60</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01133.html#ac800e6db9b484b31f8fa11799ee4ac1b\">prepareFaceVaryingChannels</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a>&amp; refiner);</div>\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span> </div>\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span> </div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00078\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html\">   78</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01117.html\">TopologyRefinerFactory</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"a01133.html\">TopologyRefinerFactoryBase</a> {</div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span> </div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00084\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01137.html\">   84</a></span>    <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01137.html\">Options</a> {</div>\n+<div class=\"foldopen\" id=\"foldopen00056\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01233.html#a4968ced94d61cc4d5e8f0e9883fd2116\">   56</a></span>    GLuint <a class=\"code hl_function\" href=\"a01233.html#a4968ced94d61cc4d5e8f0e9883fd2116\">GetQuadOffsetsTextureBuffer</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span>        <span class=\"keywordflow\">return</span> _quadOffsetsTextureBuffer;</div>\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00060\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01233.html#a7d706a485061caef58778fdc8a7348d1\">   60</a></span>    GLuint <a class=\"code hl_function\" href=\"a01233.html#a7d706a485061caef58778fdc8a7348d1\">GetQuadOffsetsBase</a>(<a class=\"code hl_enumeration\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">Far::PatchDescriptor::Type</a> type) {</div>\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span>        <span class=\"keywordflow\">if</span> (type == <a class=\"code hl_enumvalue\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7ac4ae10df9c13e44880ca7be341e44f2a\">Far::PatchDescriptor::GREGORY_BOUNDARY</a>) {</div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span>            <span class=\"keywordflow\">return</span> _quadOffsetsBase[1];</div>\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>        }</div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span>        <span class=\"keywordflow\">return</span> _quadOffsetsBase[0];</div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span> </div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span><span class=\"keyword\">protected</span>:</div>\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01233.html#a5b78188b846b316c5c0cdb42f4ee9563\">   68</a></span>    <a class=\"code hl_function\" href=\"a01233.html#a5b78188b846b316c5c0cdb42f4ee9563\">GLLegacyGregoryPatchTable</a>();</div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span> </div>\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>    GLuint _vertexTextureBuffer;</div>\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>    GLuint _vertexValenceTextureBuffer;</div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span>    GLuint _quadOffsetsTextureBuffer;</div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span>    GLuint _quadOffsetsBase[2];       <span class=\"comment\">// gregory, boundaryGregory</span></div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span> </div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span> </div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span> </div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>}  <span class=\"comment\">// end namespace Osd</span></div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span> </div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>}  <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span> </div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span>}  <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n <div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00086\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01137.html#a33cde130beeee5dd5125d2c188b1a088\">   86</a></span>        <a class=\"code hl_function\" href=\"a01137.html#a33cde130beeee5dd5125d2c188b1a088\">Options</a>(<a class=\"code hl_enumeration\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833d\">Sdc::SchemeType</a> sdcType = <a class=\"code hl_enumvalue\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833da29c9704ef8a61670dfc242b6e6b82a9f\">Sdc::SCHEME_CATMARK</a>, <a class=\"code hl_class\" href=\"a01337.html\">Sdc::Options</a> sdcOptions = <a class=\"code hl_class\" href=\"a01337.html\">Sdc::Options</a>()) :</div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>            <a class=\"code hl_variable\" href=\"a01137.html#ab4a105466e7c764e3aabaa6c44c1eeb6\">schemeType</a>(sdcType),</div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>            <a class=\"code hl_variable\" href=\"a01137.html#a9ec2ab2b4bd49c6cf367dac80c8cbb94\">schemeOptions</a>(sdcOptions),</div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>            <a class=\"code hl_variable\" href=\"a01137.html#adaa22b025e8615d6e4281a86b794e5df\">validateFullTopology</a>(false) { }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span> </div>\n-<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01137.html#ab4a105466e7c764e3aabaa6c44c1eeb6\">   91</a></span>        <a class=\"code hl_enumeration\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833d\">Sdc::SchemeType</a> <a class=\"code hl_variable\" href=\"a01137.html#ab4a105466e7c764e3aabaa6c44c1eeb6\">schemeType</a>;             </div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01137.html#a9ec2ab2b4bd49c6cf367dac80c8cbb94\">   92</a></span>        <a class=\"code hl_class\" href=\"a01337.html\">Sdc::Options</a>    <a class=\"code hl_variable\" href=\"a01137.html#a9ec2ab2b4bd49c6cf367dac80c8cbb94\">schemeOptions</a>;          </div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01137.html#adaa22b025e8615d6e4281a86b794e5df\">   94</a></span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"a01137.html#adaa22b025e8615d6e4281a86b794e5df\">validateFullTopology</a> : 1;  </div>\n-<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>    };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span> </div>\n-<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a>* <a class=\"code hl_function\" href=\"a01117.html#ab10eb061eba33095095d754241081ff9\">Create</a>(MESH <span class=\"keyword\">const</span>&amp; mesh, <a class=\"code hl_struct\" href=\"a01137.html\">Options</a> options = <a class=\"code hl_struct\" href=\"a01137.html\">Options</a>());</div>\n-<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span> </div>\n-<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a>* <a class=\"code hl_function\" href=\"a01117.html#ab10eb061eba33095095d754241081ff9\">Create</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> &amp; baseLevel);</div>\n-<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span> </div>\n-<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span><span class=\"keyword\">protected</span>:</div>\n-<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#a5458be6ce3f2e63c8d8555f4ab3b2b62\">  131</a></span>    <span class=\"keyword\">typedef</span> Vtr::internal::Level::TopologyError <a class=\"code hl_typedef\" href=\"a01117.html#a5458be6ce3f2e63c8d8555f4ab3b2b62\">TopologyError</a>;</div>\n-<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\">  132</span> </div>\n-<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\">  134</span> </div>\n-<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\">  149</span> </div>\n-<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\">  151</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01117.html#a4c574c458d080393a258f48e0ab20938\">resizeComponentTopology</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a>&amp; newRefiner, MESH <span class=\"keyword\">const</span>&amp; mesh);</div>\n-<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\">  152</span> </div>\n-<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\">  155</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01117.html#a098784adfa428c620663baf9c2d8e41a\">assignComponentTopology</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a>&amp; newRefiner, MESH <span class=\"keyword\">const</span>&amp; mesh);</div>\n-<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\">  156</span> </div>\n-<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\">  158</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01117.html#a3df7295af055588a7b4f20d4da021ad1\">assignComponentTags</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a>&amp; newRefiner, MESH <span class=\"keyword\">const</span>&amp; mesh);</div>\n-<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\">  159</span> </div>\n-<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\">  161</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01117.html#a6999e259e020bc687d09ef616ab3825b\">assignFaceVaryingTopology</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a>&amp; newRefiner, MESH <span class=\"keyword\">const</span>&amp; mesh);</div>\n-<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\">  162</span> </div>\n-<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\">  164</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01117.html#a0c4c1d44df4c480bd0adfa9e86891b39\">reportInvalidTopology</a>(TopologyError errCode, <span class=\"keywordtype\">char</span> <span class=\"keyword\">const</span> * msg, MESH <span class=\"keyword\">const</span>&amp; mesh);</div>\n-<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\">  165</span> </div>\n-<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\">  167</span> </div>\n-<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\">  168</span><span class=\"keyword\">protected</span>:</div>\n-<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\">  170</span> </div>\n-<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\">  187</span> </div>\n-<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\">  189</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01117.html#ade6bd4c9d2e9eaf232d928f45b58e070\">setNumBaseVertices</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <span class=\"keywordtype\">int</span> count);</div>\n-<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\">  190</span> </div>\n-<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\">  192</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01117.html#a7ea1b1dae066a5255ac2c2d0d56c1460\">setNumBaseFaces</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <span class=\"keywordtype\">int</span> count);</div>\n-<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\">  193</span> </div>\n-<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\">  195</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01117.html#aac57d69b5bb270ccabe0d84364d065ce\">setNumBaseEdges</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <span class=\"keywordtype\">int</span> count);</div>\n-<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\">  196</span> </div>\n-<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\">  198</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01117.html#a8eea2866a8b3ba7bf6898984fe2a543a\">setNumBaseFaceVertices</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> f, <span class=\"keywordtype\">int</span> count);</div>\n-<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\">  199</span> </div>\n-<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\">  201</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01117.html#a11f84f47a826b23f96914e6c032ad0c3\">setNumBaseEdgeFaces</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> e, <span class=\"keywordtype\">int</span> count);</div>\n-<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\">  202</span> </div>\n-<div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\">  204</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01117.html#a5dabb3b53480f7070826d20114b826b3\">setNumBaseVertexFaces</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v, <span class=\"keywordtype\">int</span> count);</div>\n-<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\">  205</span> </div>\n-<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\">  207</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01117.html#a53afbc1d886920a1f7bd9fb66bc7c764\">setNumBaseVertexEdges</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v, <span class=\"keywordtype\">int</span> count);</div>\n-<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\">  208</span> </div>\n-<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\">  209</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01117.html#a117dbe541844bdb9987238648c4097f2\">getNumBaseVertices</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> &amp; newRefiner);</div>\n-<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\">  210</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01117.html#a020886e09179d60d2ca1dfaf99ef8c41\">getNumBaseFaces</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> &amp; newRefiner);</div>\n-<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\">  211</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01117.html#ad86027437b67e115c875a494ba140ccb\">getNumBaseEdges</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> &amp; newRefiner);</div>\n-<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\">  213</span> </div>\n-<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\">  215</span> </div>\n-<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\">  237</span> </div>\n-<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\">  239</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01357.html\">IndexArray</a> <a class=\"code hl_function\" href=\"a01117.html#a1c58093296637493b5d5f4f8dea7e02a\">getBaseFaceVertices</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> f);</div>\n-<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\">  240</span> </div>\n-<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\">  242</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01357.html\">IndexArray</a> <a class=\"code hl_function\" href=\"a01117.html#a8233d0fd9a411e3cebb6de37f0b4dd52\">getBaseFaceEdges</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner,    <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> f);</div>\n-<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\">  243</span> </div>\n-<div class=\"line\"><a id=\"l00245\" name=\"l00245\"></a><span class=\"lineno\">  245</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01357.html\">IndexArray</a> <a class=\"code hl_function\" href=\"a01117.html#a78f9b78d9fd7895d88449157202d2320\">getBaseEdgeVertices</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> e);</div>\n-<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\">  246</span> </div>\n-<div class=\"line\"><a id=\"l00248\" name=\"l00248\"></a><span class=\"lineno\">  248</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01357.html\">IndexArray</a> <a class=\"code hl_function\" href=\"a01117.html#a598f3a70a526b3d47f1edd383d904792\">getBaseEdgeFaces</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner,    <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> e);</div>\n-<div class=\"line\"><a id=\"l00249\" name=\"l00249\"></a><span class=\"lineno\">  249</span> </div>\n-<div class=\"line\"><a id=\"l00251\" name=\"l00251\"></a><span class=\"lineno\">  251</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01357.html\">IndexArray</a> <a class=\"code hl_function\" href=\"a01117.html#a7af5443e6de72365777b88c44ca73c05\">getBaseVertexFaces</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner,  <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v);</div>\n-<div class=\"line\"><a id=\"l00252\" name=\"l00252\"></a><span class=\"lineno\">  252</span> </div>\n-<div class=\"line\"><a id=\"l00254\" name=\"l00254\"></a><span class=\"lineno\">  254</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01357.html\">IndexArray</a> <a class=\"code hl_function\" href=\"a01117.html#ad2e926d52d7682c6e6453831e91eeb98\">getBaseVertexEdges</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner,  <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v);</div>\n-<div class=\"line\"><a id=\"l00255\" name=\"l00255\"></a><span class=\"lineno\">  255</span> </div>\n-<div class=\"line\"><a id=\"l00257\" name=\"l00257\"></a><span class=\"lineno\">  257</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01357.html\">LocalIndexArray</a> <a class=\"code hl_function\" href=\"a01117.html#a0f20907169dab737f3b4ca7fd45674fe\">getBaseVertexFaceLocalIndices</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v);</div>\n-<div class=\"line\"><a id=\"l00259\" name=\"l00259\"></a><span class=\"lineno\">  259</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01357.html\">LocalIndexArray</a> <a class=\"code hl_function\" href=\"a01117.html#a6ff4d209a7fa096c6fd8d314519006fb\">getBaseVertexEdgeLocalIndices</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v);</div>\n-<div class=\"line\"><a id=\"l00261\" name=\"l00261\"></a><span class=\"lineno\">  261</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01357.html\">LocalIndexArray</a> <a class=\"code hl_function\" href=\"a01117.html#a20ee9f5a59d04c6448e0e8903947cf03\">getBaseEdgeFaceLocalIndices</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> e);</div>\n-<div class=\"line\"><a id=\"l00262\" name=\"l00262\"></a><span class=\"lineno\">  262</span> </div>\n-<div class=\"line\"><a id=\"l00264\" name=\"l00264\"></a><span class=\"lineno\">  264</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01117.html#a363ef6e3c1fa9e4a58ff0a3852deec66\">populateBaseLocalIndices</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner);</div>\n-<div class=\"line\"><a id=\"l00265\" name=\"l00265\"></a><span class=\"lineno\">  265</span> </div>\n-<div class=\"line\"><a id=\"l00267\" name=\"l00267\"></a><span class=\"lineno\">  267</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01117.html#aaa60d4a0d80d8e76e3569ddeb3d16ca4\">setBaseEdgeNonManifold</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> e, <span class=\"keywordtype\">bool</span> b);</div>\n-<div class=\"line\"><a id=\"l00268\" name=\"l00268\"></a><span class=\"lineno\">  268</span> </div>\n-<div class=\"line\"><a id=\"l00270\" name=\"l00270\"></a><span class=\"lineno\">  270</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01117.html#a7b7a064f825e85f70c995e1614d3f569\">setBaseVertexNonManifold</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v, <span class=\"keywordtype\">bool</span> b);</div>\n-<div class=\"line\"><a id=\"l00272\" name=\"l00272\"></a><span class=\"lineno\">  272</span> </div>\n-<div class=\"line\"><a id=\"l00274\" name=\"l00274\"></a><span class=\"lineno\">  274</span> </div>\n-<div class=\"line\"><a id=\"l00283\" name=\"l00283\"></a><span class=\"lineno\">  283</span> </div>\n-<div class=\"line\"><a id=\"l00285\" name=\"l00285\"></a><span class=\"lineno\">  285</span>    <span class=\"keyword\">static</span> <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> <a class=\"code hl_function\" href=\"a01117.html#abadf245d872a6a226772a14a471324d0\">findBaseEdge</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v0, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v1);</div>\n-<div class=\"line\"><a id=\"l00286\" name=\"l00286\"></a><span class=\"lineno\">  286</span> </div>\n-<div class=\"line\"><a id=\"l00288\" name=\"l00288\"></a><span class=\"lineno\">  288</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01117.html#aa1b903734e1a9136e087c3cd4e3ff657\">setBaseEdgeSharpness</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> e, <span class=\"keywordtype\">float</span> sharpness);</div>\n-<div class=\"line\"><a id=\"l00289\" name=\"l00289\"></a><span class=\"lineno\">  289</span> </div>\n-<div class=\"line\"><a id=\"l00291\" name=\"l00291\"></a><span class=\"lineno\">  291</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01117.html#a6bcd3738db74e1efce001beee0693c8a\">setBaseVertexSharpness</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v, <span class=\"keywordtype\">float</span> sharpness);</div>\n-<div class=\"line\"><a id=\"l00292\" name=\"l00292\"></a><span class=\"lineno\">  292</span> </div>\n-<div class=\"line\"><a id=\"l00294\" name=\"l00294\"></a><span class=\"lineno\">  294</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01117.html#afe44424c4c292e12634a9eb1d4efbc7e\">setBaseFaceHole</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> f, <span class=\"keywordtype\">bool</span> isHole);</div>\n-<div class=\"line\"><a id=\"l00296\" name=\"l00296\"></a><span class=\"lineno\">  296</span> </div>\n-<div class=\"line\"><a id=\"l00298\" name=\"l00298\"></a><span class=\"lineno\">  298</span> </div>\n-<div class=\"line\"><a id=\"l00308\" name=\"l00308\"></a><span class=\"lineno\">  308</span> </div>\n-<div class=\"line\"><a id=\"l00310\" name=\"l00310\"></a><span class=\"lineno\">  310</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01117.html#ad73911f95b0a7025a510631c13526d4d\">createBaseFVarChannel</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <span class=\"keywordtype\">int</span> numValues);</div>\n-<div class=\"line\"><a id=\"l00311\" name=\"l00311\"></a><span class=\"lineno\">  311</span> </div>\n-<div class=\"line\"><a id=\"l00313\" name=\"l00313\"></a><span class=\"lineno\">  313</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01117.html#ad73911f95b0a7025a510631c13526d4d\">createBaseFVarChannel</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <span class=\"keywordtype\">int</span> numValues, <a class=\"code hl_class\" href=\"a01337.html\">Sdc::Options</a> <span class=\"keyword\">const</span>&amp; fvarOptions);</div>\n-<div class=\"line\"><a id=\"l00314\" name=\"l00314\"></a><span class=\"lineno\">  314</span> </div>\n-<div class=\"line\"><a id=\"l00316\" name=\"l00316\"></a><span class=\"lineno\">  316</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01357.html\">IndexArray</a> <a class=\"code hl_function\" href=\"a01117.html#a5709feae1ab1f49570e4adf485e21433\">getBaseFaceFVarValues</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> face, <span class=\"keywordtype\">int</span> channel = 0);</div>\n-<div class=\"line\"><a id=\"l00317\" name=\"l00317\"></a><span class=\"lineno\">  317</span> </div>\n-<div class=\"line\"><a id=\"l00319\" name=\"l00319\"></a><span class=\"lineno\">  319</span> </div>\n-<div class=\"line\"><a id=\"l00320\" name=\"l00320\"></a><span class=\"lineno\">  320</span><span class=\"keyword\">protected</span>:</div>\n-<div class=\"line\"><a id=\"l00321\" name=\"l00321\"></a><span class=\"lineno\">  321</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00322\" name=\"l00322\"></a><span class=\"lineno\">  322</span>    <span class=\"comment\">//  Not to be specialized:</span></div>\n-<div class=\"line\"><a id=\"l00323\" name=\"l00323\"></a><span class=\"lineno\">  323</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\">  324</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01117.html#a2c34b14ad2b2ea6959f262de4974fdae\">populateBaseLevel</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a>&amp; refiner, MESH <span class=\"keyword\">const</span>&amp; mesh, <a class=\"code hl_struct\" href=\"a01137.html\">Options</a> options);</div>\n-<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\">  325</span> </div>\n-<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\">  326</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\">  327</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\">  328</span>    <span class=\"comment\">//  An oversight in the interfaces of the error reporting function between the factory</span></div>\n-<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\">  329</span>    <span class=\"comment\">//  class and the Vtr::Level requires this adapter function to avoid warnings.</span></div>\n-<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\">  330</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\">  331</span>    <span class=\"comment\">//  The static class method requires a reference as the MESH argument, but the interface</span></div>\n-<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\">  332</span>    <span class=\"comment\">//  for Vtr::Level requires a pointer (void*). So this adapter with a MESH* argument is</span></div>\n-<div class=\"line\"><a id=\"l00333\" name=\"l00333\"></a><span class=\"lineno\">  333</span>    <span class=\"comment\">//  used to effectively cast the function pointer required by Vtr::Level error reporting:</span></div>\n-<div class=\"line\"><a id=\"l00334\" name=\"l00334\"></a><span class=\"lineno\">  334</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00335\" name=\"l00335\"></a><span class=\"lineno\">  335</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> reportInvalidTopologyAdapter(TopologyError errCode, <span class=\"keywordtype\">char</span> <span class=\"keyword\">const</span> * msg, MESH <span class=\"keyword\">const</span> * mesh) {</div>\n-<div class=\"line\"><a id=\"l00336\" name=\"l00336\"></a><span class=\"lineno\">  336</span>        <a class=\"code hl_function\" href=\"a01117.html#a0c4c1d44df4c480bd0adfa9e86891b39\">reportInvalidTopology</a>(errCode, msg, *mesh);</div>\n-<div class=\"line\"><a id=\"l00337\" name=\"l00337\"></a><span class=\"lineno\">  337</span>    }</div>\n-<div class=\"line\"><a id=\"l00338\" name=\"l00338\"></a><span class=\"lineno\">  338</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00339\" name=\"l00339\"></a><span class=\"lineno\">  339</span> </div>\n-<div class=\"line\"><a id=\"l00340\" name=\"l00340\"></a><span class=\"lineno\">  340</span> </div>\n-<div class=\"line\"><a id=\"l00341\" name=\"l00341\"></a><span class=\"lineno\">  341</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00342\" name=\"l00342\"></a><span class=\"lineno\">  342</span><span class=\"comment\">//  Generic implementations:</span></div>\n-<div class=\"line\"><a id=\"l00343\" name=\"l00343\"></a><span class=\"lineno\">  343</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00344\" name=\"l00344\"></a><span class=\"lineno\">  344</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n-<div class=\"line\"><a id=\"l00345\" name=\"l00345\"></a><span class=\"lineno\">  345</span>TopologyRefiner*</div>\n-<div class=\"foldopen\" id=\"foldopen00346\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00346\" name=\"l00346\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#ab10eb061eba33095095d754241081ff9\">  346</a></span><a class=\"code hl_function\" href=\"a01117.html#ab10eb061eba33095095d754241081ff9\">TopologyRefinerFactory&lt;MESH&gt;::Create</a>(MESH <span class=\"keyword\">const</span>&amp; mesh, <a class=\"code hl_struct\" href=\"a01137.html\">Options</a> options) {</div>\n-<div class=\"line\"><a id=\"l00347\" name=\"l00347\"></a><span class=\"lineno\">  347</span> </div>\n-<div class=\"line\"><a id=\"l00348\" name=\"l00348\"></a><span class=\"lineno\">  348</span>    <a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> * refiner = <span class=\"keyword\">new</span> <a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a>(options.<a class=\"code hl_variable\" href=\"a01137.html#ab4a105466e7c764e3aabaa6c44c1eeb6\">schemeType</a>, options.<a class=\"code hl_variable\" href=\"a01137.html#a9ec2ab2b4bd49c6cf367dac80c8cbb94\">schemeOptions</a>);</div>\n-<div class=\"line\"><a id=\"l00349\" name=\"l00349\"></a><span class=\"lineno\">  349</span> </div>\n-<div class=\"line\"><a id=\"l00350\" name=\"l00350\"></a><span class=\"lineno\">  350</span>    <span class=\"keywordflow\">if</span> (! populateBaseLevel(*refiner, mesh, options)) {</div>\n-<div class=\"line\"><a id=\"l00351\" name=\"l00351\"></a><span class=\"lineno\">  351</span>        <span class=\"keyword\">delete</span> refiner;</div>\n-<div class=\"line\"><a id=\"l00352\" name=\"l00352\"></a><span class=\"lineno\">  352</span>        <span class=\"keywordflow\">return</span> 0;</div>\n-<div class=\"line\"><a id=\"l00353\" name=\"l00353\"></a><span class=\"lineno\">  353</span>    }</div>\n-<div class=\"line\"><a id=\"l00354\" name=\"l00354\"></a><span class=\"lineno\">  354</span> </div>\n-<div class=\"line\"><a id=\"l00355\" name=\"l00355\"></a><span class=\"lineno\">  355</span>    <span class=\"comment\">//  Eventually want to move the Refiner&#39;s inventory initialization here.  Currently it</span></div>\n-<div class=\"line\"><a id=\"l00356\" name=\"l00356\"></a><span class=\"lineno\">  356</span>    <span class=\"comment\">//  is handled after topology assignment, but if the inventory is to include additional</span></div>\n-<div class=\"line\"><a id=\"l00357\" name=\"l00357\"></a><span class=\"lineno\">  357</span>    <span class=\"comment\">//  features (e.g. holes, etc.) it is better off deferred to here.</span></div>\n-<div class=\"line\"><a id=\"l00358\" name=\"l00358\"></a><span class=\"lineno\">  358</span> </div>\n-<div class=\"line\"><a id=\"l00359\" name=\"l00359\"></a><span class=\"lineno\">  359</span>    <span class=\"keywordflow\">return</span> refiner;</div>\n-<div class=\"line\"><a id=\"l00360\" name=\"l00360\"></a><span class=\"lineno\">  360</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00361\" name=\"l00361\"></a><span class=\"lineno\">  361</span> </div>\n-<div class=\"line\"><a id=\"l00362\" name=\"l00362\"></a><span class=\"lineno\">  362</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n-<div class=\"line\"><a id=\"l00363\" name=\"l00363\"></a><span class=\"lineno\">  363</span><a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a>*</div>\n-<div class=\"foldopen\" id=\"foldopen00364\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00364\" name=\"l00364\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#adbb03cacfb38376d07a8ce7e99b98f4a\">  364</a></span><a class=\"code hl_function\" href=\"a01117.html#ab10eb061eba33095095d754241081ff9\">TopologyRefinerFactory&lt;MESH&gt;::Create</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> &amp; source) {</div>\n-<div class=\"line\"><a id=\"l00365\" name=\"l00365\"></a><span class=\"lineno\">  365</span> </div>\n-<div class=\"line\"><a id=\"l00366\" name=\"l00366\"></a><span class=\"lineno\">  366</span>    <span class=\"keywordflow\">return</span> <span class=\"keyword\">new</span> <a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a>(source);</div>\n-<div class=\"line\"><a id=\"l00367\" name=\"l00367\"></a><span class=\"lineno\">  367</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00368\" name=\"l00368\"></a><span class=\"lineno\">  368</span> </div>\n-<div class=\"line\"><a id=\"l00369\" name=\"l00369\"></a><span class=\"lineno\">  369</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n-<div class=\"line\"><a id=\"l00370\" name=\"l00370\"></a><span class=\"lineno\">  370</span><span class=\"keywordtype\">bool</span></div>\n-<div class=\"foldopen\" id=\"foldopen00371\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00371\" name=\"l00371\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#a2c34b14ad2b2ea6959f262de4974fdae\">  371</a></span><a class=\"code hl_function\" href=\"a01117.html#a2c34b14ad2b2ea6959f262de4974fdae\">TopologyRefinerFactory&lt;MESH&gt;::populateBaseLevel</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a>&amp; refiner, MESH <span class=\"keyword\">const</span>&amp; mesh, <a class=\"code hl_struct\" href=\"a01137.html\">Options</a> options) {</div>\n-<div class=\"line\"><a id=\"l00372\" name=\"l00372\"></a><span class=\"lineno\">  372</span> </div>\n-<div class=\"line\"><a id=\"l00373\" name=\"l00373\"></a><span class=\"lineno\">  373</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00374\" name=\"l00374\"></a><span class=\"lineno\">  374</span>    <span class=\"comment\">//  Construction of a specialized topology refiner involves four steps, each of which</span></div>\n-<div class=\"line\"><a id=\"l00375\" name=\"l00375\"></a><span class=\"lineno\">  375</span>    <span class=\"comment\">//  involves a method specialized for MESH followed by one that takes an action in</span></div>\n-<div class=\"line\"><a id=\"l00376\" name=\"l00376\"></a><span class=\"lineno\">  376</span>    <span class=\"comment\">//  response to it or in preparation for the next step.</span></div>\n-<div class=\"line\"><a id=\"l00377\" name=\"l00377\"></a><span class=\"lineno\">  377</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00378\" name=\"l00378\"></a><span class=\"lineno\">  378</span>    <span class=\"comment\">//  Both the specialized methods and those that follow them may find fault in the</span></div>\n-<div class=\"line\"><a id=\"l00379\" name=\"l00379\"></a><span class=\"lineno\">  379</span>    <span class=\"comment\">//  construction and trigger failure at any time:</span></div>\n-<div class=\"line\"><a id=\"l00380\" name=\"l00380\"></a><span class=\"lineno\">  380</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00381\" name=\"l00381\"></a><span class=\"lineno\">  381</span> </div>\n-<div class=\"line\"><a id=\"l00382\" name=\"l00382\"></a><span class=\"lineno\">  382</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00383\" name=\"l00383\"></a><span class=\"lineno\">  383</span>    <span class=\"comment\">//  Sizing of the topology -- this is a required specialization for MESH.  This defines</span></div>\n-<div class=\"line\"><a id=\"l00384\" name=\"l00384\"></a><span class=\"lineno\">  384</span>    <span class=\"comment\">//  an inventory of all components and their relations that is used to allocate buffers</span></div>\n-<div class=\"line\"><a id=\"l00385\" name=\"l00385\"></a><span class=\"lineno\">  385</span>    <span class=\"comment\">//  to be efficiently populated in the subsequent topology assignment step.</span></div>\n-<div class=\"line\"><a id=\"l00386\" name=\"l00386\"></a><span class=\"lineno\">  386</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00387\" name=\"l00387\"></a><span class=\"lineno\">  387</span>    <span class=\"keywordflow\">if</span> (! resizeComponentTopology(refiner, mesh)) <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00388\" name=\"l00388\"></a><span class=\"lineno\">  388</span>    <span class=\"keywordflow\">if</span> (! prepareComponentTopologySizing(refiner)) <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00389\" name=\"l00389\"></a><span class=\"lineno\">  389</span> </div>\n-<div class=\"line\"><a id=\"l00390\" name=\"l00390\"></a><span class=\"lineno\">  390</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00391\" name=\"l00391\"></a><span class=\"lineno\">  391</span>    <span class=\"comment\">//  Assignment of the topology -- this is a required specialization for MESH.  If edges</span></div>\n-<div class=\"line\"><a id=\"l00392\" name=\"l00392\"></a><span class=\"lineno\">  392</span>    <span class=\"comment\">//  are specified, all other topological relations are expected to be defined for them.</span></div>\n-<div class=\"line\"><a id=\"l00393\" name=\"l00393\"></a><span class=\"lineno\">  393</span>    <span class=\"comment\">//  Otherwise edges and remaining topology will be completed from the face-vertices:</span></div>\n-<div class=\"line\"><a id=\"l00394\" name=\"l00394\"></a><span class=\"lineno\">  394</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00395\" name=\"l00395\"></a><span class=\"lineno\">  395</span>    <span class=\"keywordtype\">bool</span>             validate = options.<a class=\"code hl_variable\" href=\"a01137.html#adaa22b025e8615d6e4281a86b794e5df\">validateFullTopology</a>;</div>\n-<div class=\"line\"><a id=\"l00396\" name=\"l00396\"></a><span class=\"lineno\">  396</span>    <a class=\"code hl_typedef\" href=\"a01133.html#a896a964625491e084b3d776acd10f053\">TopologyCallback</a> callback = <span class=\"keyword\">reinterpret_cast&lt;</span><a class=\"code hl_typedef\" href=\"a01133.html#a896a964625491e084b3d776acd10f053\">TopologyCallback</a><span class=\"keyword\">&gt;</span>(reportInvalidTopologyAdapter);</div>\n-<div class=\"line\"><a id=\"l00397\" name=\"l00397\"></a><span class=\"lineno\">  397</span>    <span class=\"keywordtype\">void</span> <span class=\"keyword\">const</span> *     userData = &amp;mesh;</div>\n-<div class=\"line\"><a id=\"l00398\" name=\"l00398\"></a><span class=\"lineno\">  398</span>        </div>\n-<div class=\"line\"><a id=\"l00399\" name=\"l00399\"></a><span class=\"lineno\">  399</span>    <span class=\"keywordflow\">if</span> (! assignComponentTopology(refiner, mesh)) <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00400\" name=\"l00400\"></a><span class=\"lineno\">  400</span>    <span class=\"keywordflow\">if</span> (! prepareComponentTopologyAssignment(refiner, validate, callback, userData)) <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00401\" name=\"l00401\"></a><span class=\"lineno\">  401</span> </div>\n-<div class=\"line\"><a id=\"l00402\" name=\"l00402\"></a><span class=\"lineno\">  402</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00403\" name=\"l00403\"></a><span class=\"lineno\">  403</span>    <span class=\"comment\">//  User assigned and internal tagging of components -- an optional specialization for</span></div>\n-<div class=\"line\"><a id=\"l00404\" name=\"l00404\"></a><span class=\"lineno\">  404</span>    <span class=\"comment\">//  MESH.  Allows the specification of sharpness values, holes, etc.</span></div>\n-<div class=\"line\"><a id=\"l00405\" name=\"l00405\"></a><span class=\"lineno\">  405</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00406\" name=\"l00406\"></a><span class=\"lineno\">  406</span>    <span class=\"keywordflow\">if</span> (! assignComponentTags(refiner, mesh)) <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00407\" name=\"l00407\"></a><span class=\"lineno\">  407</span>    <span class=\"keywordflow\">if</span> (! prepareComponentTagsAndSharpness(refiner)) <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00408\" name=\"l00408\"></a><span class=\"lineno\">  408</span> </div>\n-<div class=\"line\"><a id=\"l00409\" name=\"l00409\"></a><span class=\"lineno\">  409</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00410\" name=\"l00410\"></a><span class=\"lineno\">  410</span>    <span class=\"comment\">//  Defining channels of face-varying primvar data -- an optional specialization for MESH.</span></div>\n-<div class=\"line\"><a id=\"l00411\" name=\"l00411\"></a><span class=\"lineno\">  411</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00412\" name=\"l00412\"></a><span class=\"lineno\">  412</span>    <span class=\"keywordflow\">if</span> (! assignFaceVaryingTopology(refiner, mesh)) <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00413\" name=\"l00413\"></a><span class=\"lineno\">  413</span>    <span class=\"keywordflow\">if</span> (! prepareFaceVaryingChannels(refiner)) <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00414\" name=\"l00414\"></a><span class=\"lineno\">  414</span> </div>\n-<div class=\"line\"><a id=\"l00415\" name=\"l00415\"></a><span class=\"lineno\">  415</span>    <span class=\"keywordflow\">return</span> <span class=\"keyword\">true</span>;</div>\n-<div class=\"line\"><a id=\"l00416\" name=\"l00416\"></a><span class=\"lineno\">  416</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00417\" name=\"l00417\"></a><span class=\"lineno\">  417</span> </div>\n-<div class=\"line\"><a id=\"l00418\" name=\"l00418\"></a><span class=\"lineno\">  418</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n-<div class=\"line\"><a id=\"l00419\" name=\"l00419\"></a><span class=\"lineno\">  419</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00420\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00420\" name=\"l00420\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#a7ea1b1dae066a5255ac2c2d0d56c1460\">  420</a></span><a class=\"code hl_function\" href=\"a01117.html#a7ea1b1dae066a5255ac2c2d0d56c1460\">TopologyRefinerFactory&lt;MESH&gt;::setNumBaseFaces</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <span class=\"keywordtype\">int</span> count) {</div>\n-<div class=\"line\"><a id=\"l00421\" name=\"l00421\"></a><span class=\"lineno\">  421</span>    newRefiner._levels[0]-&gt;resizeFaces(count);</div>\n-<div class=\"line\"><a id=\"l00422\" name=\"l00422\"></a><span class=\"lineno\">  422</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00423\" name=\"l00423\"></a><span class=\"lineno\">  423</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n-<div class=\"line\"><a id=\"l00424\" name=\"l00424\"></a><span class=\"lineno\">  424</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00425\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00425\" name=\"l00425\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#aac57d69b5bb270ccabe0d84364d065ce\">  425</a></span><a class=\"code hl_function\" href=\"a01117.html#aac57d69b5bb270ccabe0d84364d065ce\">TopologyRefinerFactory&lt;MESH&gt;::setNumBaseEdges</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <span class=\"keywordtype\">int</span> count) {</div>\n-<div class=\"line\"><a id=\"l00426\" name=\"l00426\"></a><span class=\"lineno\">  426</span>    newRefiner._levels[0]-&gt;resizeEdges(count);</div>\n-<div class=\"line\"><a id=\"l00427\" name=\"l00427\"></a><span class=\"lineno\">  427</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00428\" name=\"l00428\"></a><span class=\"lineno\">  428</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n-<div class=\"line\"><a id=\"l00429\" name=\"l00429\"></a><span class=\"lineno\">  429</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00430\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00430\" name=\"l00430\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#ade6bd4c9d2e9eaf232d928f45b58e070\">  430</a></span><a class=\"code hl_function\" href=\"a01117.html#ade6bd4c9d2e9eaf232d928f45b58e070\">TopologyRefinerFactory&lt;MESH&gt;::setNumBaseVertices</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <span class=\"keywordtype\">int</span> count) {</div>\n-<div class=\"line\"><a id=\"l00431\" name=\"l00431\"></a><span class=\"lineno\">  431</span>    newRefiner._levels[0]-&gt;resizeVertices(count);</div>\n-<div class=\"line\"><a id=\"l00432\" name=\"l00432\"></a><span class=\"lineno\">  432</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00433\" name=\"l00433\"></a><span class=\"lineno\">  433</span> </div>\n-<div class=\"line\"><a id=\"l00434\" name=\"l00434\"></a><span class=\"lineno\">  434</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n-<div class=\"line\"><a id=\"l00435\" name=\"l00435\"></a><span class=\"lineno\">  435</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span></div>\n-<div class=\"foldopen\" id=\"foldopen00436\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00436\" name=\"l00436\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#a020886e09179d60d2ca1dfaf99ef8c41\">  436</a></span><a class=\"code hl_function\" href=\"a01117.html#a020886e09179d60d2ca1dfaf99ef8c41\">TopologyRefinerFactory&lt;MESH&gt;::getNumBaseFaces</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> &amp; newRefiner) {</div>\n-<div class=\"line\"><a id=\"l00437\" name=\"l00437\"></a><span class=\"lineno\">  437</span>    <span class=\"keywordflow\">return</span> newRefiner._levels[0]-&gt;getNumFaces();</div>\n-<div class=\"line\"><a id=\"l00438\" name=\"l00438\"></a><span class=\"lineno\">  438</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00439\" name=\"l00439\"></a><span class=\"lineno\">  439</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n-<div class=\"line\"><a id=\"l00440\" name=\"l00440\"></a><span class=\"lineno\">  440</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span></div>\n-<div class=\"foldopen\" id=\"foldopen00441\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00441\" name=\"l00441\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#ad86027437b67e115c875a494ba140ccb\">  441</a></span><a class=\"code hl_function\" href=\"a01117.html#ad86027437b67e115c875a494ba140ccb\">TopologyRefinerFactory&lt;MESH&gt;::getNumBaseEdges</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> &amp; newRefiner) {</div>\n-<div class=\"line\"><a id=\"l00442\" name=\"l00442\"></a><span class=\"lineno\">  442</span>    <span class=\"keywordflow\">return</span> newRefiner._levels[0]-&gt;getNumEdges();</div>\n-<div class=\"line\"><a id=\"l00443\" name=\"l00443\"></a><span class=\"lineno\">  443</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00444\" name=\"l00444\"></a><span class=\"lineno\">  444</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n-<div class=\"line\"><a id=\"l00445\" name=\"l00445\"></a><span class=\"lineno\">  445</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span></div>\n-<div class=\"foldopen\" id=\"foldopen00446\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00446\" name=\"l00446\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#a117dbe541844bdb9987238648c4097f2\">  446</a></span><a class=\"code hl_function\" href=\"a01117.html#a117dbe541844bdb9987238648c4097f2\">TopologyRefinerFactory&lt;MESH&gt;::getNumBaseVertices</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> &amp; newRefiner) {</div>\n-<div class=\"line\"><a id=\"l00447\" name=\"l00447\"></a><span class=\"lineno\">  447</span>    <span class=\"keywordflow\">return</span> newRefiner._levels[0]-&gt;getNumVertices();</div>\n-<div class=\"line\"><a id=\"l00448\" name=\"l00448\"></a><span class=\"lineno\">  448</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00449\" name=\"l00449\"></a><span class=\"lineno\">  449</span> </div>\n-<div class=\"line\"><a id=\"l00450\" name=\"l00450\"></a><span class=\"lineno\">  450</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n-<div class=\"line\"><a id=\"l00451\" name=\"l00451\"></a><span class=\"lineno\">  451</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00452\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00452\" name=\"l00452\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#a8eea2866a8b3ba7bf6898984fe2a543a\">  452</a></span><a class=\"code hl_function\" href=\"a01117.html#a8eea2866a8b3ba7bf6898984fe2a543a\">TopologyRefinerFactory&lt;MESH&gt;::setNumBaseFaceVertices</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> f, <span class=\"keywordtype\">int</span> count) {</div>\n-<div class=\"line\"><a id=\"l00453\" name=\"l00453\"></a><span class=\"lineno\">  453</span>    newRefiner._levels[0]-&gt;resizeFaceVertices(f, count);</div>\n-<div class=\"line\"><a id=\"l00454\" name=\"l00454\"></a><span class=\"lineno\">  454</span>    newRefiner._hasIrregFaces = newRefiner._hasIrregFaces || (count != newRefiner._regFaceSize);</div>\n-<div class=\"line\"><a id=\"l00455\" name=\"l00455\"></a><span class=\"lineno\">  455</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00456\" name=\"l00456\"></a><span class=\"lineno\">  456</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n-<div class=\"line\"><a id=\"l00457\" name=\"l00457\"></a><span class=\"lineno\">  457</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00458\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00458\" name=\"l00458\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#a11f84f47a826b23f96914e6c032ad0c3\">  458</a></span><a class=\"code hl_function\" href=\"a01117.html#a11f84f47a826b23f96914e6c032ad0c3\">TopologyRefinerFactory&lt;MESH&gt;::setNumBaseEdgeFaces</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> e, <span class=\"keywordtype\">int</span> count) {</div>\n-<div class=\"line\"><a id=\"l00459\" name=\"l00459\"></a><span class=\"lineno\">  459</span>    newRefiner._levels[0]-&gt;resizeEdgeFaces(e, count);</div>\n-<div class=\"line\"><a id=\"l00460\" name=\"l00460\"></a><span class=\"lineno\">  460</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00461\" name=\"l00461\"></a><span class=\"lineno\">  461</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n-<div class=\"line\"><a id=\"l00462\" name=\"l00462\"></a><span class=\"lineno\">  462</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00463\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00463\" name=\"l00463\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#a5dabb3b53480f7070826d20114b826b3\">  463</a></span><a class=\"code hl_function\" href=\"a01117.html#a5dabb3b53480f7070826d20114b826b3\">TopologyRefinerFactory&lt;MESH&gt;::setNumBaseVertexFaces</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v, <span class=\"keywordtype\">int</span> count) {</div>\n-<div class=\"line\"><a id=\"l00464\" name=\"l00464\"></a><span class=\"lineno\">  464</span>    newRefiner._levels[0]-&gt;resizeVertexFaces(v, count);</div>\n-<div class=\"line\"><a id=\"l00465\" name=\"l00465\"></a><span class=\"lineno\">  465</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00466\" name=\"l00466\"></a><span class=\"lineno\">  466</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n-<div class=\"line\"><a id=\"l00467\" name=\"l00467\"></a><span class=\"lineno\">  467</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00468\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00468\" name=\"l00468\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#a53afbc1d886920a1f7bd9fb66bc7c764\">  468</a></span><a class=\"code hl_function\" href=\"a01117.html#a53afbc1d886920a1f7bd9fb66bc7c764\">TopologyRefinerFactory&lt;MESH&gt;::setNumBaseVertexEdges</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v, <span class=\"keywordtype\">int</span> count) {</div>\n-<div class=\"line\"><a id=\"l00469\" name=\"l00469\"></a><span class=\"lineno\">  469</span>    newRefiner._levels[0]-&gt;resizeVertexEdges(v, count);</div>\n-<div class=\"line\"><a id=\"l00470\" name=\"l00470\"></a><span class=\"lineno\">  470</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00471\" name=\"l00471\"></a><span class=\"lineno\">  471</span> </div>\n-<div class=\"line\"><a id=\"l00472\" name=\"l00472\"></a><span class=\"lineno\">  472</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n-<div class=\"line\"><a id=\"l00473\" name=\"l00473\"></a><span class=\"lineno\">  473</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a01357.html\">IndexArray</a></div>\n-<div class=\"foldopen\" id=\"foldopen00474\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00474\" name=\"l00474\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#a1c58093296637493b5d5f4f8dea7e02a\">  474</a></span><a class=\"code hl_function\" href=\"a01117.html#a1c58093296637493b5d5f4f8dea7e02a\">TopologyRefinerFactory&lt;MESH&gt;::getBaseFaceVertices</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> f) {</div>\n-<div class=\"line\"><a id=\"l00475\" name=\"l00475\"></a><span class=\"lineno\">  475</span>    <span class=\"keywordflow\">return</span> newRefiner._levels[0]-&gt;getFaceVertices(f);</div>\n-<div class=\"line\"><a id=\"l00476\" name=\"l00476\"></a><span class=\"lineno\">  476</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00477\" name=\"l00477\"></a><span class=\"lineno\">  477</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n-<div class=\"line\"><a id=\"l00478\" name=\"l00478\"></a><span class=\"lineno\">  478</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a01357.html\">IndexArray</a></div>\n-<div class=\"foldopen\" id=\"foldopen00479\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00479\" name=\"l00479\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#a8233d0fd9a411e3cebb6de37f0b4dd52\">  479</a></span><a class=\"code hl_function\" href=\"a01117.html#a8233d0fd9a411e3cebb6de37f0b4dd52\">TopologyRefinerFactory&lt;MESH&gt;::getBaseFaceEdges</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner,    <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> f) {</div>\n-<div class=\"line\"><a id=\"l00480\" name=\"l00480\"></a><span class=\"lineno\">  480</span>    <span class=\"keywordflow\">return</span> newRefiner._levels[0]-&gt;getFaceEdges(f);</div>\n-<div class=\"line\"><a id=\"l00481\" name=\"l00481\"></a><span class=\"lineno\">  481</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00482\" name=\"l00482\"></a><span class=\"lineno\">  482</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n-<div class=\"line\"><a id=\"l00483\" name=\"l00483\"></a><span class=\"lineno\">  483</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a01357.html\">IndexArray</a></div>\n-<div class=\"foldopen\" id=\"foldopen00484\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00484\" name=\"l00484\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#a78f9b78d9fd7895d88449157202d2320\">  484</a></span><a class=\"code hl_function\" href=\"a01117.html#a78f9b78d9fd7895d88449157202d2320\">TopologyRefinerFactory&lt;MESH&gt;::getBaseEdgeVertices</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> e) {</div>\n-<div class=\"line\"><a id=\"l00485\" name=\"l00485\"></a><span class=\"lineno\">  485</span>    <span class=\"keywordflow\">return</span> newRefiner._levels[0]-&gt;getEdgeVertices(e);</div>\n-<div class=\"line\"><a id=\"l00486\" name=\"l00486\"></a><span class=\"lineno\">  486</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00487\" name=\"l00487\"></a><span class=\"lineno\">  487</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n-<div class=\"line\"><a id=\"l00488\" name=\"l00488\"></a><span class=\"lineno\">  488</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a01357.html\">IndexArray</a></div>\n-<div class=\"foldopen\" id=\"foldopen00489\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00489\" name=\"l00489\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#a598f3a70a526b3d47f1edd383d904792\">  489</a></span><a class=\"code hl_function\" href=\"a01117.html#a598f3a70a526b3d47f1edd383d904792\">TopologyRefinerFactory&lt;MESH&gt;::getBaseEdgeFaces</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner,    <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> e) {</div>\n-<div class=\"line\"><a id=\"l00490\" name=\"l00490\"></a><span class=\"lineno\">  490</span>    <span class=\"keywordflow\">return</span> newRefiner._levels[0]-&gt;getEdgeFaces(e);</div>\n-<div class=\"line\"><a id=\"l00491\" name=\"l00491\"></a><span class=\"lineno\">  491</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00492\" name=\"l00492\"></a><span class=\"lineno\">  492</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n-<div class=\"line\"><a id=\"l00493\" name=\"l00493\"></a><span class=\"lineno\">  493</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a01357.html\">IndexArray</a></div>\n-<div class=\"foldopen\" id=\"foldopen00494\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00494\" name=\"l00494\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#a7af5443e6de72365777b88c44ca73c05\">  494</a></span><a class=\"code hl_function\" href=\"a01117.html#a7af5443e6de72365777b88c44ca73c05\">TopologyRefinerFactory&lt;MESH&gt;::getBaseVertexFaces</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner,  <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v) {</div>\n-<div class=\"line\"><a id=\"l00495\" name=\"l00495\"></a><span class=\"lineno\">  495</span>    <span class=\"keywordflow\">return</span> newRefiner._levels[0]-&gt;getVertexFaces(v);</div>\n-<div class=\"line\"><a id=\"l00496\" name=\"l00496\"></a><span class=\"lineno\">  496</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00497\" name=\"l00497\"></a><span class=\"lineno\">  497</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n-<div class=\"line\"><a id=\"l00498\" name=\"l00498\"></a><span class=\"lineno\">  498</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a01357.html\">IndexArray</a></div>\n-<div class=\"foldopen\" id=\"foldopen00499\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00499\" name=\"l00499\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#ad2e926d52d7682c6e6453831e91eeb98\">  499</a></span><a class=\"code hl_function\" href=\"a01117.html#ad2e926d52d7682c6e6453831e91eeb98\">TopologyRefinerFactory&lt;MESH&gt;::getBaseVertexEdges</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner,  <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v) {</div>\n-<div class=\"line\"><a id=\"l00500\" name=\"l00500\"></a><span class=\"lineno\">  500</span>    <span class=\"keywordflow\">return</span> newRefiner._levels[0]-&gt;getVertexEdges(v);</div>\n-<div class=\"line\"><a id=\"l00501\" name=\"l00501\"></a><span class=\"lineno\">  501</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00502\" name=\"l00502\"></a><span class=\"lineno\">  502</span> </div>\n-<div class=\"line\"><a id=\"l00503\" name=\"l00503\"></a><span class=\"lineno\">  503</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n-<div class=\"line\"><a id=\"l00504\" name=\"l00504\"></a><span class=\"lineno\">  504</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a01357.html\">LocalIndexArray</a></div>\n-<div class=\"foldopen\" id=\"foldopen00505\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00505\" name=\"l00505\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#a20ee9f5a59d04c6448e0e8903947cf03\">  505</a></span><a class=\"code hl_function\" href=\"a01117.html#a20ee9f5a59d04c6448e0e8903947cf03\">TopologyRefinerFactory&lt;MESH&gt;::getBaseEdgeFaceLocalIndices</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> e)   {</div>\n-<div class=\"line\"><a id=\"l00506\" name=\"l00506\"></a><span class=\"lineno\">  506</span>    <span class=\"keywordflow\">return</span> newRefiner._levels[0]-&gt;getEdgeFaceLocalIndices(e);</div>\n-<div class=\"line\"><a id=\"l00507\" name=\"l00507\"></a><span class=\"lineno\">  507</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00508\" name=\"l00508\"></a><span class=\"lineno\">  508</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n-<div class=\"line\"><a id=\"l00509\" name=\"l00509\"></a><span class=\"lineno\">  509</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a01357.html\">LocalIndexArray</a></div>\n-<div class=\"foldopen\" id=\"foldopen00510\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00510\" name=\"l00510\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#a0f20907169dab737f3b4ca7fd45674fe\">  510</a></span><a class=\"code hl_function\" href=\"a01117.html#a0f20907169dab737f3b4ca7fd45674fe\">TopologyRefinerFactory&lt;MESH&gt;::getBaseVertexFaceLocalIndices</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v) {</div>\n-<div class=\"line\"><a id=\"l00511\" name=\"l00511\"></a><span class=\"lineno\">  511</span>    <span class=\"keywordflow\">return</span> newRefiner._levels[0]-&gt;getVertexFaceLocalIndices(v);</div>\n-<div class=\"line\"><a id=\"l00512\" name=\"l00512\"></a><span class=\"lineno\">  512</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00513\" name=\"l00513\"></a><span class=\"lineno\">  513</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n-<div class=\"line\"><a id=\"l00514\" name=\"l00514\"></a><span class=\"lineno\">  514</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a01357.html\">LocalIndexArray</a></div>\n-<div class=\"foldopen\" id=\"foldopen00515\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00515\" name=\"l00515\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#a6ff4d209a7fa096c6fd8d314519006fb\">  515</a></span><a class=\"code hl_function\" href=\"a01117.html#a6ff4d209a7fa096c6fd8d314519006fb\">TopologyRefinerFactory&lt;MESH&gt;::getBaseVertexEdgeLocalIndices</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v) {</div>\n-<div class=\"line\"><a id=\"l00516\" name=\"l00516\"></a><span class=\"lineno\">  516</span>    <span class=\"keywordflow\">return</span> newRefiner._levels[0]-&gt;getVertexEdgeLocalIndices(v);</div>\n-<div class=\"line\"><a id=\"l00517\" name=\"l00517\"></a><span class=\"lineno\">  517</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00518\" name=\"l00518\"></a><span class=\"lineno\">  518</span> </div>\n-<div class=\"line\"><a id=\"l00519\" name=\"l00519\"></a><span class=\"lineno\">  519</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n-<div class=\"line\"><a id=\"l00520\" name=\"l00520\"></a><span class=\"lineno\">  520</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a></div>\n-<div class=\"foldopen\" id=\"foldopen00521\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00521\" name=\"l00521\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#abadf245d872a6a226772a14a471324d0\">  521</a></span><a class=\"code hl_function\" href=\"a01117.html#abadf245d872a6a226772a14a471324d0\">TopologyRefinerFactory&lt;MESH&gt;::findBaseEdge</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v0, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v1) {</div>\n-<div class=\"line\"><a id=\"l00522\" name=\"l00522\"></a><span class=\"lineno\">  522</span>    <span class=\"keywordflow\">return</span> newRefiner._levels[0]-&gt;findEdge(v0, v1);</div>\n-<div class=\"line\"><a id=\"l00523\" name=\"l00523\"></a><span class=\"lineno\">  523</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00524\" name=\"l00524\"></a><span class=\"lineno\">  524</span> </div>\n-<div class=\"line\"><a id=\"l00525\" name=\"l00525\"></a><span class=\"lineno\">  525</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n-<div class=\"line\"><a id=\"l00526\" name=\"l00526\"></a><span class=\"lineno\">  526</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00527\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00527\" name=\"l00527\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#a363ef6e3c1fa9e4a58ff0a3852deec66\">  527</a></span><a class=\"code hl_function\" href=\"a01117.html#a363ef6e3c1fa9e4a58ff0a3852deec66\">TopologyRefinerFactory&lt;MESH&gt;::populateBaseLocalIndices</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner) {</div>\n-<div class=\"line\"><a id=\"l00528\" name=\"l00528\"></a><span class=\"lineno\">  528</span>    newRefiner._levels[0]-&gt;populateLocalIndices();</div>\n-<div class=\"line\"><a id=\"l00529\" name=\"l00529\"></a><span class=\"lineno\">  529</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00530\" name=\"l00530\"></a><span class=\"lineno\">  530</span> </div>\n-<div class=\"line\"><a id=\"l00531\" name=\"l00531\"></a><span class=\"lineno\">  531</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n-<div class=\"line\"><a id=\"l00532\" name=\"l00532\"></a><span class=\"lineno\">  532</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00533\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00533\" name=\"l00533\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#aaa60d4a0d80d8e76e3569ddeb3d16ca4\">  533</a></span><a class=\"code hl_function\" href=\"a01117.html#aaa60d4a0d80d8e76e3569ddeb3d16ca4\">TopologyRefinerFactory&lt;MESH&gt;::setBaseEdgeNonManifold</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> e, <span class=\"keywordtype\">bool</span> b) {</div>\n-<div class=\"line\"><a id=\"l00534\" name=\"l00534\"></a><span class=\"lineno\">  534</span>    newRefiner._levels[0]-&gt;setEdgeNonManifold(e, b);</div>\n-<div class=\"line\"><a id=\"l00535\" name=\"l00535\"></a><span class=\"lineno\">  535</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00536\" name=\"l00536\"></a><span class=\"lineno\">  536</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n-<div class=\"line\"><a id=\"l00537\" name=\"l00537\"></a><span class=\"lineno\">  537</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00538\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00538\" name=\"l00538\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#a7b7a064f825e85f70c995e1614d3f569\">  538</a></span><a class=\"code hl_function\" href=\"a01117.html#a7b7a064f825e85f70c995e1614d3f569\">TopologyRefinerFactory&lt;MESH&gt;::setBaseVertexNonManifold</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v, <span class=\"keywordtype\">bool</span> b) {</div>\n-<div class=\"line\"><a id=\"l00539\" name=\"l00539\"></a><span class=\"lineno\">  539</span>    newRefiner._levels[0]-&gt;setVertexNonManifold(v, b);</div>\n-<div class=\"line\"><a id=\"l00540\" name=\"l00540\"></a><span class=\"lineno\">  540</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00541\" name=\"l00541\"></a><span class=\"lineno\">  541</span> </div>\n-<div class=\"line\"><a id=\"l00542\" name=\"l00542\"></a><span class=\"lineno\">  542</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n-<div class=\"line\"><a id=\"l00543\" name=\"l00543\"></a><span class=\"lineno\">  543</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00544\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00544\" name=\"l00544\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#aa1b903734e1a9136e087c3cd4e3ff657\">  544</a></span><a class=\"code hl_function\" href=\"a01117.html#aa1b903734e1a9136e087c3cd4e3ff657\">TopologyRefinerFactory&lt;MESH&gt;::setBaseEdgeSharpness</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> e, <span class=\"keywordtype\">float</span> s)   {</div>\n-<div class=\"line\"><a id=\"l00545\" name=\"l00545\"></a><span class=\"lineno\">  545</span>    newRefiner._levels[0]-&gt;getEdgeSharpness(e) = s;</div>\n-<div class=\"line\"><a id=\"l00546\" name=\"l00546\"></a><span class=\"lineno\">  546</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00547\" name=\"l00547\"></a><span class=\"lineno\">  547</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n-<div class=\"line\"><a id=\"l00548\" name=\"l00548\"></a><span class=\"lineno\">  548</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00549\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00549\" name=\"l00549\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#a6bcd3738db74e1efce001beee0693c8a\">  549</a></span><a class=\"code hl_function\" href=\"a01117.html#a6bcd3738db74e1efce001beee0693c8a\">TopologyRefinerFactory&lt;MESH&gt;::setBaseVertexSharpness</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v, <span class=\"keywordtype\">float</span> s) {</div>\n-<div class=\"line\"><a id=\"l00550\" name=\"l00550\"></a><span class=\"lineno\">  550</span>    newRefiner._levels[0]-&gt;getVertexSharpness(v) = s;</div>\n-<div class=\"line\"><a id=\"l00551\" name=\"l00551\"></a><span class=\"lineno\">  551</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00552\" name=\"l00552\"></a><span class=\"lineno\">  552</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n-<div class=\"line\"><a id=\"l00553\" name=\"l00553\"></a><span class=\"lineno\">  553</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00554\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00554\" name=\"l00554\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#afe44424c4c292e12634a9eb1d4efbc7e\">  554</a></span><a class=\"code hl_function\" href=\"a01117.html#afe44424c4c292e12634a9eb1d4efbc7e\">TopologyRefinerFactory&lt;MESH&gt;::setBaseFaceHole</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> f, <span class=\"keywordtype\">bool</span> b) {</div>\n-<div class=\"line\"><a id=\"l00555\" name=\"l00555\"></a><span class=\"lineno\">  555</span>    newRefiner._levels[0]-&gt;setFaceHole(f, b);</div>\n-<div class=\"line\"><a id=\"l00556\" name=\"l00556\"></a><span class=\"lineno\">  556</span>    newRefiner._hasHoles = newRefiner._hasHoles || b;</div>\n-<div class=\"line\"><a id=\"l00557\" name=\"l00557\"></a><span class=\"lineno\">  557</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00558\" name=\"l00558\"></a><span class=\"lineno\">  558</span> </div>\n-<div class=\"line\"><a id=\"l00559\" name=\"l00559\"></a><span class=\"lineno\">  559</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n-<div class=\"line\"><a id=\"l00560\" name=\"l00560\"></a><span class=\"lineno\">  560</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span></div>\n-<div class=\"foldopen\" id=\"foldopen00561\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00561\" name=\"l00561\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#ad73911f95b0a7025a510631c13526d4d\">  561</a></span><a class=\"code hl_function\" href=\"a01117.html#ad73911f95b0a7025a510631c13526d4d\">TopologyRefinerFactory&lt;MESH&gt;::createBaseFVarChannel</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <span class=\"keywordtype\">int</span> numValues) {</div>\n-<div class=\"line\"><a id=\"l00562\" name=\"l00562\"></a><span class=\"lineno\">  562</span>    <span class=\"keywordflow\">return</span> newRefiner._levels[0]-&gt;createFVarChannel(numValues, newRefiner._subdivOptions);</div>\n-<div class=\"line\"><a id=\"l00563\" name=\"l00563\"></a><span class=\"lineno\">  563</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00564\" name=\"l00564\"></a><span class=\"lineno\">  564</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n-<div class=\"line\"><a id=\"l00565\" name=\"l00565\"></a><span class=\"lineno\">  565</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span></div>\n-<div class=\"foldopen\" id=\"foldopen00566\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00566\" name=\"l00566\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#ae1a1f2e7baae99c0bd9f179c8e17df01\">  566</a></span><a class=\"code hl_function\" href=\"a01117.html#ad73911f95b0a7025a510631c13526d4d\">TopologyRefinerFactory&lt;MESH&gt;::createBaseFVarChannel</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <span class=\"keywordtype\">int</span> numValues, <a class=\"code hl_class\" href=\"a01337.html\">Sdc::Options</a> <span class=\"keyword\">const</span>&amp; fvarOptions) {</div>\n-<div class=\"line\"><a id=\"l00567\" name=\"l00567\"></a><span class=\"lineno\">  567</span>    <a class=\"code hl_class\" href=\"a01337.html\">Sdc::Options</a> newOptions = newRefiner._subdivOptions;</div>\n-<div class=\"line\"><a id=\"l00568\" name=\"l00568\"></a><span class=\"lineno\">  568</span>    newOptions.<a class=\"code hl_function\" href=\"a01337.html#a2b335eb227194b4fc6fcec7f3c4b25ce\">SetFVarLinearInterpolation</a>(fvarOptions.<a class=\"code hl_function\" href=\"a01337.html#acab24306782f101827103b87bbe4b8dd\">GetFVarLinearInterpolation</a>());</div>\n-<div class=\"line\"><a id=\"l00569\" name=\"l00569\"></a><span class=\"lineno\">  569</span>    <span class=\"keywordflow\">return</span> newRefiner._levels[0]-&gt;createFVarChannel(numValues, newOptions);</div>\n-<div class=\"line\"><a id=\"l00570\" name=\"l00570\"></a><span class=\"lineno\">  570</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00571\" name=\"l00571\"></a><span class=\"lineno\">  571</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n-<div class=\"line\"><a id=\"l00572\" name=\"l00572\"></a><span class=\"lineno\">  572</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a01357.html\">IndexArray</a></div>\n-<div class=\"foldopen\" id=\"foldopen00573\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00573\" name=\"l00573\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#a5709feae1ab1f49570e4adf485e21433\">  573</a></span><a class=\"code hl_function\" href=\"a01117.html#a5709feae1ab1f49570e4adf485e21433\">TopologyRefinerFactory&lt;MESH&gt;::getBaseFaceFVarValues</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> face, <span class=\"keywordtype\">int</span> channel) {</div>\n-<div class=\"line\"><a id=\"l00574\" name=\"l00574\"></a><span class=\"lineno\">  574</span>    <span class=\"keywordflow\">return</span> newRefiner._levels[0]-&gt;getFaceFVarValues(face, channel);</div>\n-<div class=\"line\"><a id=\"l00575\" name=\"l00575\"></a><span class=\"lineno\">  575</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00576\" name=\"l00576\"></a><span class=\"lineno\">  576</span> </div>\n-<div class=\"line\"><a id=\"l00577\" name=\"l00577\"></a><span class=\"lineno\">  577</span> </div>\n-<div class=\"line\"><a id=\"l00578\" name=\"l00578\"></a><span class=\"lineno\">  578</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n-<div class=\"line\"><a id=\"l00579\" name=\"l00579\"></a><span class=\"lineno\">  579</span><span class=\"keywordtype\">bool</span></div>\n-<div class=\"foldopen\" id=\"foldopen00580\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00580\" name=\"l00580\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#a4c574c458d080393a258f48e0ab20938\">  580</a></span><a class=\"code hl_function\" href=\"a01117.html#a4c574c458d080393a258f48e0ab20938\">TopologyRefinerFactory&lt;MESH&gt;::resizeComponentTopology</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a>&amp; <span class=\"comment\">/* refiner */</span>, MESH <span class=\"keyword\">const</span>&amp; <span class=\"comment\">/* mesh */</span>) {</div>\n-<div class=\"line\"><a id=\"l00581\" name=\"l00581\"></a><span class=\"lineno\">  581</span> </div>\n-<div class=\"line\"><a id=\"l00582\" name=\"l00582\"></a><span class=\"lineno\">  582</span>    <a class=\"code hl_function\" href=\"a00908.html#a25d51c3a61fb3dacded6e48d01fd2fdb\">Error</a>(<a class=\"code hl_enumvalue\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45aac565fa39d681e2766584dd87246c3bdd\">FAR_RUNTIME_ERROR</a>,</div>\n-<div class=\"line\"><a id=\"l00583\" name=\"l00583\"></a><span class=\"lineno\">  583</span>        <span class=\"stringliteral\">&quot;Failure in TopologyRefinerFactory&lt;&gt;::resizeComponentTopology() -- no specialization provided.&quot;</span>);</div>\n-<div class=\"line\"><a id=\"l00584\" name=\"l00584\"></a><span class=\"lineno\">  584</span> </div>\n-<div class=\"line\"><a id=\"l00585\" name=\"l00585\"></a><span class=\"lineno\">  585</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00586\" name=\"l00586\"></a><span class=\"lineno\">  586</span>    <span class=\"comment\">//  Sizing the topology tables:</span></div>\n-<div class=\"line\"><a id=\"l00587\" name=\"l00587\"></a><span class=\"lineno\">  587</span>    <span class=\"comment\">//      This method is for determining the sizes of the various topology tables (and other</span></div>\n-<div class=\"line\"><a id=\"l00588\" name=\"l00588\"></a><span class=\"lineno\">  588</span>    <span class=\"comment\">//  data) associated with the mesh.  Once completed, appropriate memory will be allocated</span></div>\n-<div class=\"line\"><a id=\"l00589\" name=\"l00589\"></a><span class=\"lineno\">  589</span>    <span class=\"comment\">//  and an additional method invoked to populate it accordingly.</span></div>\n-<div class=\"line\"><a id=\"l00590\" name=\"l00590\"></a><span class=\"lineno\">  590</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00591\" name=\"l00591\"></a><span class=\"lineno\">  591</span>    <span class=\"comment\">//  The following methods should be called -- first those to specify the number of faces,</span></div>\n-<div class=\"line\"><a id=\"l00592\" name=\"l00592\"></a><span class=\"lineno\">  592</span>    <span class=\"comment\">//  edges and vertices in the mesh:</span></div>\n-<div class=\"line\"><a id=\"l00593\" name=\"l00593\"></a><span class=\"lineno\">  593</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00594\" name=\"l00594\"></a><span class=\"lineno\">  594</span>    <span class=\"comment\">//      void setBaseFaceCount(  TopologyRefiner&amp; newRefiner, int count)</span></div>\n-<div class=\"line\"><a id=\"l00595\" name=\"l00595\"></a><span class=\"lineno\">  595</span>    <span class=\"comment\">//      void setBaseEdgeCount(  TopologyRefiner&amp; newRefiner, int count)</span></div>\n-<div class=\"line\"><a id=\"l00596\" name=\"l00596\"></a><span class=\"lineno\">  596</span>    <span class=\"comment\">//      void setBaseVertexCount(TopologyRefiner&amp; newRefiner, int count)</span></div>\n-<div class=\"line\"><a id=\"l00597\" name=\"l00597\"></a><span class=\"lineno\">  597</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00598\" name=\"l00598\"></a><span class=\"lineno\">  598</span>    <span class=\"comment\">//  and then for each face, edge and vertex, the number of its incident components:</span></div>\n-<div class=\"line\"><a id=\"l00599\" name=\"l00599\"></a><span class=\"lineno\">  599</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00600\" name=\"l00600\"></a><span class=\"lineno\">  600</span>    <span class=\"comment\">//      void setBaseFaceVertexCount(TopologyRefiner&amp; newRefiner, Index face, int count)</span></div>\n-<div class=\"line\"><a id=\"l00601\" name=\"l00601\"></a><span class=\"lineno\">  601</span>    <span class=\"comment\">//      void setBaseEdgeFaceCount(  TopologyRefiner&amp; newRefiner, Index edge, int count)</span></div>\n-<div class=\"line\"><a id=\"l00602\" name=\"l00602\"></a><span class=\"lineno\">  602</span>    <span class=\"comment\">//      void setBaseVertexFaceCount(TopologyRefiner&amp; newRefiner, Index vertex, int count)</span></div>\n-<div class=\"line\"><a id=\"l00603\" name=\"l00603\"></a><span class=\"lineno\">  603</span>    <span class=\"comment\">//      void setBaseVertexEdgeCount(TopologyRefiner&amp; newRefiner, Index vertex, int count)</span></div>\n-<div class=\"line\"><a id=\"l00604\" name=\"l00604\"></a><span class=\"lineno\">  604</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00605\" name=\"l00605\"></a><span class=\"lineno\">  605</span>    <span class=\"comment\">//  The count/size for a component type must be set before indices associated with that</span></div>\n-<div class=\"line\"><a id=\"l00606\" name=\"l00606\"></a><span class=\"lineno\">  606</span>    <span class=\"comment\">//  component type can be used.</span></div>\n-<div class=\"line\"><a id=\"l00607\" name=\"l00607\"></a><span class=\"lineno\">  607</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00608\" name=\"l00608\"></a><span class=\"lineno\">  608</span>    <span class=\"comment\">//  Note that it is only necessary to size 4 of the 6 supported topological relations --</span></div>\n-<div class=\"line\"><a id=\"l00609\" name=\"l00609\"></a><span class=\"lineno\">  609</span>    <span class=\"comment\">//  the number of edge-vertices is fixed at two per edge, and the number of face-edges is</span></div>\n-<div class=\"line\"><a id=\"l00610\" name=\"l00610\"></a><span class=\"lineno\">  610</span>    <span class=\"comment\">//  the same as the number of face-vertices.</span></div>\n-<div class=\"line\"><a id=\"l00611\" name=\"l00611\"></a><span class=\"lineno\">  611</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00612\" name=\"l00612\"></a><span class=\"lineno\">  612</span>    <span class=\"comment\">//  So a single pass through your mesh to gather up all of this sizing information will</span></div>\n-<div class=\"line\"><a id=\"l00613\" name=\"l00613\"></a><span class=\"lineno\">  613</span>    <span class=\"comment\">//  allow the Tables to be allocated appropriately once and avoid any dynamic resizing as</span></div>\n-<div class=\"line\"><a id=\"l00614\" name=\"l00614\"></a><span class=\"lineno\">  614</span>    <span class=\"comment\">//  it grows.</span></div>\n-<div class=\"line\"><a id=\"l00615\" name=\"l00615\"></a><span class=\"lineno\">  615</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00616\" name=\"l00616\"></a><span class=\"lineno\">  616</span>    <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00617\" name=\"l00617\"></a><span class=\"lineno\">  617</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00618\" name=\"l00618\"></a><span class=\"lineno\">  618</span> </div>\n-<div class=\"line\"><a id=\"l00619\" name=\"l00619\"></a><span class=\"lineno\">  619</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n-<div class=\"line\"><a id=\"l00620\" name=\"l00620\"></a><span class=\"lineno\">  620</span><span class=\"keywordtype\">bool</span></div>\n-<div class=\"foldopen\" id=\"foldopen00621\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00621\" name=\"l00621\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#a098784adfa428c620663baf9c2d8e41a\">  621</a></span><a class=\"code hl_function\" href=\"a01117.html#a098784adfa428c620663baf9c2d8e41a\">TopologyRefinerFactory&lt;MESH&gt;::assignComponentTopology</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a>&amp; <span class=\"comment\">/* refiner */</span>, MESH <span class=\"keyword\">const</span>&amp; <span class=\"comment\">/* mesh */</span>) {</div>\n-<div class=\"line\"><a id=\"l00622\" name=\"l00622\"></a><span class=\"lineno\">  622</span> </div>\n-<div class=\"line\"><a id=\"l00623\" name=\"l00623\"></a><span class=\"lineno\">  623</span>    <a class=\"code hl_function\" href=\"a00908.html#a25d51c3a61fb3dacded6e48d01fd2fdb\">Error</a>(<a class=\"code hl_enumvalue\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45aac565fa39d681e2766584dd87246c3bdd\">FAR_RUNTIME_ERROR</a>,</div>\n-<div class=\"line\"><a id=\"l00624\" name=\"l00624\"></a><span class=\"lineno\">  624</span>        <span class=\"stringliteral\">&quot;Failure in TopologyRefinerFactory&lt;&gt;::assignComponentTopology() -- no specialization provided.&quot;</span>);</div>\n-<div class=\"line\"><a id=\"l00625\" name=\"l00625\"></a><span class=\"lineno\">  625</span> </div>\n-<div class=\"line\"><a id=\"l00626\" name=\"l00626\"></a><span class=\"lineno\">  626</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00627\" name=\"l00627\"></a><span class=\"lineno\">  627</span>    <span class=\"comment\">//  Assigning the topology tables:</span></div>\n-<div class=\"line\"><a id=\"l00628\" name=\"l00628\"></a><span class=\"lineno\">  628</span>    <span class=\"comment\">//      Once the topology tables have been allocated, the six required topological</span></div>\n-<div class=\"line\"><a id=\"l00629\" name=\"l00629\"></a><span class=\"lineno\">  629</span>    <span class=\"comment\">//  relations can be directly populated using the following methods:</span></div>\n-<div class=\"line\"><a id=\"l00630\" name=\"l00630\"></a><span class=\"lineno\">  630</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00631\" name=\"l00631\"></a><span class=\"lineno\">  631</span>    <span class=\"comment\">//      IndexArray setBaseFaceVertices(TopologyRefiner&amp; newRefiner, Index face)</span></div>\n-<div class=\"line\"><a id=\"l00632\" name=\"l00632\"></a><span class=\"lineno\">  632</span>    <span class=\"comment\">//      IndexArray setBaseFaceEdges(TopologyRefiner&amp; newRefiner, Index face)</span></div>\n-<div class=\"line\"><a id=\"l00633\" name=\"l00633\"></a><span class=\"lineno\">  633</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00634\" name=\"l00634\"></a><span class=\"lineno\">  634</span>    <span class=\"comment\">//      IndexArray setBaseEdgeVertices(TopologyRefiner&amp; newRefiner, Index edge)</span></div>\n-<div class=\"line\"><a id=\"l00635\" name=\"l00635\"></a><span class=\"lineno\">  635</span>    <span class=\"comment\">//      IndexArray setBaseEdgeFaces(TopologyRefiner&amp; newRefiner, Index edge)</span></div>\n-<div class=\"line\"><a id=\"l00636\" name=\"l00636\"></a><span class=\"lineno\">  636</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00637\" name=\"l00637\"></a><span class=\"lineno\">  637</span>    <span class=\"comment\">//      IndexArray setBaseVertexEdges(TopologyRefiner&amp; newRefiner, Index vertex)</span></div>\n-<div class=\"line\"><a id=\"l00638\" name=\"l00638\"></a><span class=\"lineno\">  638</span>    <span class=\"comment\">//      IndexArray setBaseVertexFaces(TopologyRefiner&amp; newRefiner, Index vertex)</span></div>\n-<div class=\"line\"><a id=\"l00639\" name=\"l00639\"></a><span class=\"lineno\">  639</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00640\" name=\"l00640\"></a><span class=\"lineno\">  640</span>    <span class=\"comment\">//  For the last two relations -- the faces and edges incident a vertex -- there are</span></div>\n-<div class=\"line\"><a id=\"l00641\" name=\"l00641\"></a><span class=\"lineno\">  641</span>    <span class=\"comment\">//  also &quot;local indices&quot; that must be specified (considering doing this internally),</span></div>\n-<div class=\"line\"><a id=\"l00642\" name=\"l00642\"></a><span class=\"lineno\">  642</span>    <span class=\"comment\">//  where the &quot;local index&quot; of each incident face or edge is the index of the vertex</span></div>\n-<div class=\"line\"><a id=\"l00643\" name=\"l00643\"></a><span class=\"lineno\">  643</span>    <span class=\"comment\">//  within that face or edge, and so ranging from 0-3 for incident quads and 0-1 for</span></div>\n-<div class=\"line\"><a id=\"l00644\" name=\"l00644\"></a><span class=\"lineno\">  644</span>    <span class=\"comment\">//  incident edges.  These are assigned through similarly retrieved arrays:</span></div>\n-<div class=\"line\"><a id=\"l00645\" name=\"l00645\"></a><span class=\"lineno\">  645</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00646\" name=\"l00646\"></a><span class=\"lineno\">  646</span>    <span class=\"comment\">//      LocalIndexArray setBaseVertexFaceLocalIndices(TopologyRefiner&amp; newRefiner, Index vertex)</span></div>\n-<div class=\"line\"><a id=\"l00647\" name=\"l00647\"></a><span class=\"lineno\">  647</span>    <span class=\"comment\">//      LocalIndexArray setBaseVertexEdgeLocalIndices(TopologyRefiner&amp; newRefiner, Index vertex)</span></div>\n-<div class=\"line\"><a id=\"l00648\" name=\"l00648\"></a><span class=\"lineno\">  648</span>    <span class=\"comment\">//      LocalIndexArray setBaseEdgeFaceLocalIndices(  TopologyRefiner&amp; newRefiner, Index edge)</span></div>\n-<div class=\"line\"><a id=\"l00649\" name=\"l00649\"></a><span class=\"lineno\">  649</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00650\" name=\"l00650\"></a><span class=\"lineno\">  650</span>    <span class=\"comment\">//  or, if the mesh is manifold, explicit assignment of these can be deferred and</span></div>\n-<div class=\"line\"><a id=\"l00651\" name=\"l00651\"></a><span class=\"lineno\">  651</span>    <span class=\"comment\">//  all can be determined by calling:</span></div>\n-<div class=\"line\"><a id=\"l00652\" name=\"l00652\"></a><span class=\"lineno\">  652</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00653\" name=\"l00653\"></a><span class=\"lineno\">  653</span>    <span class=\"comment\">//      void populateBaseLocalIndices(TopologyRefiner&amp; newRefiner)</span></div>\n-<div class=\"line\"><a id=\"l00654\" name=\"l00654\"></a><span class=\"lineno\">  654</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00655\" name=\"l00655\"></a><span class=\"lineno\">  655</span>    <span class=\"comment\">//  All components are assumed to be locally manifold and ordering of components in</span></div>\n-<div class=\"line\"><a id=\"l00656\" name=\"l00656\"></a><span class=\"lineno\">  656</span>    <span class=\"comment\">//  the above relations is expected to be counter-clockwise.</span></div>\n-<div class=\"line\"><a id=\"l00657\" name=\"l00657\"></a><span class=\"lineno\">  657</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00658\" name=\"l00658\"></a><span class=\"lineno\">  658</span>    <span class=\"comment\">//  For non-manifold components, no ordering/orientation of incident components is</span></div>\n-<div class=\"line\"><a id=\"l00659\" name=\"l00659\"></a><span class=\"lineno\">  659</span>    <span class=\"comment\">//  assumed or required, but be sure to explicitly tag such components (vertices and</span></div>\n-<div class=\"line\"><a id=\"l00660\" name=\"l00660\"></a><span class=\"lineno\">  660</span>    <span class=\"comment\">//  edges) as non-manifold:</span></div>\n-<div class=\"line\"><a id=\"l00661\" name=\"l00661\"></a><span class=\"lineno\">  661</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00662\" name=\"l00662\"></a><span class=\"lineno\">  662</span>    <span class=\"comment\">//      void setBaseEdgeNonManifold(TopologyRefiner&amp; newRefiner, Index edge, bool b);</span></div>\n-<div class=\"line\"><a id=\"l00663\" name=\"l00663\"></a><span class=\"lineno\">  663</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00664\" name=\"l00664\"></a><span class=\"lineno\">  664</span>    <span class=\"comment\">//      void setBaseVertexNonManifold(TopologyRefiner&amp; newRefiner, Index vertex, bool b);</span></div>\n-<div class=\"line\"><a id=\"l00665\" name=\"l00665\"></a><span class=\"lineno\">  665</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00666\" name=\"l00666\"></a><span class=\"lineno\">  666</span>    <span class=\"comment\">//  Also consider using TopologyLevel::ValidateTopology() when debugging to ensure</span></div>\n-<div class=\"line\"><a id=\"l00667\" name=\"l00667\"></a><span class=\"lineno\">  667</span>    <span class=\"comment\">//  that topology has been completely and correctly specified.</span></div>\n-<div class=\"line\"><a id=\"l00668\" name=\"l00668\"></a><span class=\"lineno\">  668</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00669\" name=\"l00669\"></a><span class=\"lineno\">  669</span>    <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00670\" name=\"l00670\"></a><span class=\"lineno\">  670</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00671\" name=\"l00671\"></a><span class=\"lineno\">  671</span> </div>\n-<div class=\"line\"><a id=\"l00672\" name=\"l00672\"></a><span class=\"lineno\">  672</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n-<div class=\"line\"><a id=\"l00673\" name=\"l00673\"></a><span class=\"lineno\">  673</span><span class=\"keywordtype\">bool</span></div>\n-<div class=\"foldopen\" id=\"foldopen00674\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00674\" name=\"l00674\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#a6999e259e020bc687d09ef616ab3825b\">  674</a></span><a class=\"code hl_function\" href=\"a01117.html#a6999e259e020bc687d09ef616ab3825b\">TopologyRefinerFactory&lt;MESH&gt;::assignFaceVaryingTopology</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a>&amp; <span class=\"comment\">/* refiner */</span>, MESH <span class=\"keyword\">const</span>&amp; <span class=\"comment\">/* mesh */</span>) {</div>\n-<div class=\"line\"><a id=\"l00675\" name=\"l00675\"></a><span class=\"lineno\">  675</span> </div>\n-<div class=\"line\"><a id=\"l00676\" name=\"l00676\"></a><span class=\"lineno\">  676</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00677\" name=\"l00677\"></a><span class=\"lineno\">  677</span>    <span class=\"comment\">//  Optional assigning face-varying topology tables:</span></div>\n-<div class=\"line\"><a id=\"l00678\" name=\"l00678\"></a><span class=\"lineno\">  678</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00679\" name=\"l00679\"></a><span class=\"lineno\">  679</span>    <span class=\"comment\">//  Create independent face-varying primitive variable channels:</span></div>\n-<div class=\"line\"><a id=\"l00680\" name=\"l00680\"></a><span class=\"lineno\">  680</span>    <span class=\"comment\">//      int createBaseFVarChannel(TopologyRefiner&amp; newRefiner, int numValues)</span></div>\n-<div class=\"line\"><a id=\"l00681\" name=\"l00681\"></a><span class=\"lineno\">  681</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00682\" name=\"l00682\"></a><span class=\"lineno\">  682</span>    <span class=\"comment\">//  For each channel, populate the face-vertex values:</span></div>\n-<div class=\"line\"><a id=\"l00683\" name=\"l00683\"></a><span class=\"lineno\">  683</span>    <span class=\"comment\">//      IndexArray setBaseFaceFVarValues(TopologyRefiner&amp; newRefiner, Index face, int channel = 0)</span></div>\n-<div class=\"line\"><a id=\"l00684\" name=\"l00684\"></a><span class=\"lineno\">  684</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00685\" name=\"l00685\"></a><span class=\"lineno\">  685</span>    <span class=\"keywordflow\">return</span> <span class=\"keyword\">true</span>;</div>\n-<div class=\"line\"><a id=\"l00686\" name=\"l00686\"></a><span class=\"lineno\">  686</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00687\" name=\"l00687\"></a><span class=\"lineno\">  687</span> </div>\n-<div class=\"line\"><a id=\"l00688\" name=\"l00688\"></a><span class=\"lineno\">  688</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n-<div class=\"line\"><a id=\"l00689\" name=\"l00689\"></a><span class=\"lineno\">  689</span><span class=\"keywordtype\">bool</span></div>\n-<div class=\"foldopen\" id=\"foldopen00690\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00690\" name=\"l00690\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#a3df7295af055588a7b4f20d4da021ad1\">  690</a></span><a class=\"code hl_function\" href=\"a01117.html#a3df7295af055588a7b4f20d4da021ad1\">TopologyRefinerFactory&lt;MESH&gt;::assignComponentTags</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a>&amp; <span class=\"comment\">/* refiner */</span>, MESH <span class=\"keyword\">const</span>&amp; <span class=\"comment\">/* mesh */</span>) {</div>\n-<div class=\"line\"><a id=\"l00691\" name=\"l00691\"></a><span class=\"lineno\">  691</span> </div>\n-<div class=\"line\"><a id=\"l00692\" name=\"l00692\"></a><span class=\"lineno\">  692</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00693\" name=\"l00693\"></a><span class=\"lineno\">  693</span>    <span class=\"comment\">//  Optional tagging:</span></div>\n-<div class=\"line\"><a id=\"l00694\" name=\"l00694\"></a><span class=\"lineno\">  694</span>    <span class=\"comment\">//      This is where any additional feature tags -- sharpness, holes, etc. -- can be</span></div>\n-<div class=\"line\"><a id=\"l00695\" name=\"l00695\"></a><span class=\"lineno\">  695</span>    <span class=\"comment\">//  specified using:</span></div>\n-<div class=\"line\"><a id=\"l00696\" name=\"l00696\"></a><span class=\"lineno\">  696</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00697\" name=\"l00697\"></a><span class=\"lineno\">  697</span>    <span class=\"comment\">//      void setBaseEdgeSharpness(TopologyRefiner&amp; newRefiner, Index edge, float sharpness)</span></div>\n-<div class=\"line\"><a id=\"l00698\" name=\"l00698\"></a><span class=\"lineno\">  698</span>    <span class=\"comment\">//      void setBaseVertexSharpness(TopologyRefiner&amp; newRefiner, Index vertex, float sharpness)</span></div>\n-<div class=\"line\"><a id=\"l00699\" name=\"l00699\"></a><span class=\"lineno\">  699</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00700\" name=\"l00700\"></a><span class=\"lineno\">  700</span>    <span class=\"comment\">//      void setBaseFaceHole(TopologyRefiner&amp; newRefiner, Index face, bool hole)</span></div>\n-<div class=\"line\"><a id=\"l00701\" name=\"l00701\"></a><span class=\"lineno\">  701</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00702\" name=\"l00702\"></a><span class=\"lineno\">  702</span>    <span class=\"keywordflow\">return</span> <span class=\"keyword\">true</span>;</div>\n-<div class=\"line\"><a id=\"l00703\" name=\"l00703\"></a><span class=\"lineno\">  703</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00704\" name=\"l00704\"></a><span class=\"lineno\">  704</span> </div>\n-<div class=\"line\"><a id=\"l00705\" name=\"l00705\"></a><span class=\"lineno\">  705</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n-<div class=\"line\"><a id=\"l00706\" name=\"l00706\"></a><span class=\"lineno\">  706</span><span class=\"keywordtype\">void</span></div>\n-<div class=\"foldopen\" id=\"foldopen00707\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00707\" name=\"l00707\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#a0c4c1d44df4c480bd0adfa9e86891b39\">  707</a></span><a class=\"code hl_function\" href=\"a01117.html#a0c4c1d44df4c480bd0adfa9e86891b39\">TopologyRefinerFactory&lt;MESH&gt;::reportInvalidTopology</a>(</div>\n-<div class=\"line\"><a id=\"l00708\" name=\"l00708\"></a><span class=\"lineno\">  708</span>    TopologyError <span class=\"comment\">/* errCode */</span>, <span class=\"keywordtype\">char</span> <span class=\"keyword\">const</span> * <span class=\"comment\">/* msg */</span>, MESH <span class=\"keyword\">const</span>&amp; <span class=\"comment\">/* mesh */</span>) {</div>\n-<div class=\"line\"><a id=\"l00709\" name=\"l00709\"></a><span class=\"lineno\">  709</span> </div>\n-<div class=\"line\"><a id=\"l00710\" name=\"l00710\"></a><span class=\"lineno\">  710</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00711\" name=\"l00711\"></a><span class=\"lineno\">  711</span>    <span class=\"comment\">//  Optional topology validation error reporting:</span></div>\n-<div class=\"line\"><a id=\"l00712\" name=\"l00712\"></a><span class=\"lineno\">  712</span>    <span class=\"comment\">//      This method is called whenever the factory encounters topology validation</span></div>\n-<div class=\"line\"><a id=\"l00713\" name=\"l00713\"></a><span class=\"lineno\">  713</span>    <span class=\"comment\">//  errors. By default, nothing is reported</span></div>\n-<div class=\"line\"><a id=\"l00714\" name=\"l00714\"></a><span class=\"lineno\">  714</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00715\" name=\"l00715\"></a><span class=\"lineno\">  715</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00716\" name=\"l00716\"></a><span class=\"lineno\">  716</span> </div>\n-<div class=\"line\"><a id=\"l00717\" name=\"l00717\"></a><span class=\"lineno\">  717</span>} <span class=\"comment\">// end namespace Far</span></div>\n-<div class=\"line\"><a id=\"l00718\" name=\"l00718\"></a><span class=\"lineno\">  718</span> </div>\n-<div class=\"line\"><a id=\"l00719\" name=\"l00719\"></a><span class=\"lineno\">  719</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00720\" name=\"l00720\"></a><span class=\"lineno\">  720</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00721\" name=\"l00721\"></a><span class=\"lineno\">  721</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l00722\" name=\"l00722\"></a><span class=\"lineno\">  722</span> </div>\n-<div class=\"line\"><a id=\"l00723\" name=\"l00723\"></a><span class=\"lineno\">  723</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_FAR_TOPOLOGY_REFINER_FACTORY_H */</span><span class=\"preprocessor\"></span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa00908_html_a25d51c3a61fb3dacded6e48d01fd2fdb\"><div class=\"ttname\"><a href=\"a00908.html#a25d51c3a61fb3dacded6e48d01fd2fdb\">OpenSubdiv::OPENSUBDIV_VERSION::Far::Error</a></div><div class=\"ttdeci\">void Error(ErrorType err, const char *format,...)</div><div class=\"ttdoc\">Sends an OSD error with a message (internal use only)</div></div>\n-<div class=\"ttc\" id=\"aa00908_html_ab0df38968e4f03a3f1f6d6df0f31f45aac565fa39d681e2766584dd87246c3bdd\"><div class=\"ttname\"><a href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45aac565fa39d681e2766584dd87246c3bdd\">OpenSubdiv::OPENSUBDIV_VERSION::Far::FAR_RUNTIME_ERROR</a></div><div class=\"ttdeci\">@ FAR_RUNTIME_ERROR</div><div class=\"ttdoc\">Issue a generic runtime error, but continue execution.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00749_source.html#l00041\">error.h:40</a></div></div>\n-<div class=\"ttc\" id=\"aa00908_html_ab34c85a48f33dfe7b8bf4d966fdebbf2\"><div class=\"ttname\"><a href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">OpenSubdiv::OPENSUBDIV_VERSION::Far::Index</a></div><div class=\"ttdeci\">Vtr::Index Index</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01486_source.html#l00041\">types.h:41</a></div></div>\n-<div class=\"ttc\" id=\"aa00913_html_aa3daa2f428c6be2b1cb394f3a525833d\"><div class=\"ttname\"><a href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833d\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::SchemeType</a></div><div class=\"ttdeci\">SchemeType</div><div class=\"ttdoc\">Enumerated type for all subdivision schemes supported by OpenSubdiv.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01492_source.html#l00037\">types.h:37</a></div></div>\n-<div class=\"ttc\" id=\"aa00913_html_aa3daa2f428c6be2b1cb394f3a525833da29c9704ef8a61670dfc242b6e6b82a9f\"><div class=\"ttname\"><a href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833da29c9704ef8a61670dfc242b6e6b82a9f\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::SCHEME_CATMARK</a></div><div class=\"ttdeci\">@ SCHEME_CATMARK</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01492_source.html#l00039\">types.h:39</a></div></div>\n-<div class=\"ttc\" id=\"aa01117_html\"><div class=\"ttname\"><a href=\"a01117.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory</a></div><div class=\"ttdoc\">Factory for constructing TopologyRefiners from specific mesh classes.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00767_source.html#l00078\">topologyRefinerFactory.h:78</a></div></div>\n-<div class=\"ttc\" id=\"aa01117_html_a020886e09179d60d2ca1dfaf99ef8c41\"><div class=\"ttname\"><a href=\"a01117.html#a020886e09179d60d2ca1dfaf99ef8c41\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::getNumBaseFaces</a></div><div class=\"ttdeci\">static int getNumBaseFaces(TopologyRefiner const &amp;newRefiner)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00767_source.html#l00436\">topologyRefinerFactory.h:436</a></div></div>\n-<div class=\"ttc\" id=\"aa01117_html_a098784adfa428c620663baf9c2d8e41a\"><div class=\"ttname\"><a href=\"a01117.html#a098784adfa428c620663baf9c2d8e41a\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::assignComponentTopology</a></div><div class=\"ttdeci\">static bool assignComponentTopology(TopologyRefiner &amp;newRefiner, MESH const &amp;mesh)</div><div class=\"ttdoc\">Specify the relationships between vertices, faces, etc. ie the face-vertices, vertex-faces,...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00767_source.html#l00621\">topologyRefinerFactory.h:621</a></div></div>\n-<div class=\"ttc\" id=\"aa01117_html_a0c4c1d44df4c480bd0adfa9e86891b39\"><div class=\"ttname\"><a href=\"a01117.html#a0c4c1d44df4c480bd0adfa9e86891b39\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::reportInvalidTopology</a></div><div class=\"ttdeci\">static void reportInvalidTopology(TopologyError errCode, char const *msg, MESH const &amp;mesh)</div><div class=\"ttdoc\">(Optional) Control run-time topology validation and error reporting</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00767_source.html#l00707\">topologyRefinerFactory.h:707</a></div></div>\n-<div class=\"ttc\" id=\"aa01117_html_a0f20907169dab737f3b4ca7fd45674fe\"><div class=\"ttname\"><a href=\"a01117.html#a0f20907169dab737f3b4ca7fd45674fe\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::getBaseVertexFaceLocalIndices</a></div><div class=\"ttdeci\">static LocalIndexArray getBaseVertexFaceLocalIndices(TopologyRefiner &amp;newRefiner, Index v)</div><div class=\"ttdoc\">Assign the local indices of a vertex within each of its incident faces.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00767_source.html#l00510\">topologyRefinerFactory.h:510</a></div></div>\n-<div class=\"ttc\" id=\"aa01117_html_a117dbe541844bdb9987238648c4097f2\"><div class=\"ttname\"><a href=\"a01117.html#a117dbe541844bdb9987238648c4097f2\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::getNumBaseVertices</a></div><div class=\"ttdeci\">static int getNumBaseVertices(TopologyRefiner const &amp;newRefiner)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00767_source.html#l00446\">topologyRefinerFactory.h:446</a></div></div>\n-<div class=\"ttc\" id=\"aa01117_html_a11f84f47a826b23f96914e6c032ad0c3\"><div class=\"ttname\"><a href=\"a01117.html#a11f84f47a826b23f96914e6c032ad0c3\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::setNumBaseEdgeFaces</a></div><div class=\"ttdeci\">static void setNumBaseEdgeFaces(TopologyRefiner &amp;newRefiner, Index e, int count)</div><div class=\"ttdoc\">Specify the number of faces incident each edge.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00767_source.html#l00458\">topologyRefinerFactory.h:458</a></div></div>\n-<div class=\"ttc\" id=\"aa01117_html_a1c58093296637493b5d5f4f8dea7e02a\"><div class=\"ttname\"><a href=\"a01117.html#a1c58093296637493b5d5f4f8dea7e02a\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::getBaseFaceVertices</a></div><div class=\"ttdeci\">static IndexArray getBaseFaceVertices(TopologyRefiner &amp;newRefiner, Index f)</div><div class=\"ttdoc\">Assign the vertices incident each face.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00767_source.html#l00474\">topologyRefinerFactory.h:474</a></div></div>\n-<div class=\"ttc\" id=\"aa01117_html_a20ee9f5a59d04c6448e0e8903947cf03\"><div class=\"ttname\"><a href=\"a01117.html#a20ee9f5a59d04c6448e0e8903947cf03\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::getBaseEdgeFaceLocalIndices</a></div><div class=\"ttdeci\">static LocalIndexArray getBaseEdgeFaceLocalIndices(TopologyRefiner &amp;newRefiner, Index e)</div><div class=\"ttdoc\">Assign the local indices of an edge within each of its incident faces.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00767_source.html#l00505\">topologyRefinerFactory.h:505</a></div></div>\n-<div class=\"ttc\" id=\"aa01117_html_a2c34b14ad2b2ea6959f262de4974fdae\"><div class=\"ttname\"><a href=\"a01117.html#a2c34b14ad2b2ea6959f262de4974fdae\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::populateBaseLevel</a></div><div class=\"ttdeci\">static bool populateBaseLevel(TopologyRefiner &amp;refiner, MESH const &amp;mesh, Options options)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00767_source.html#l00371\">topologyRefinerFactory.h:371</a></div></div>\n-<div class=\"ttc\" id=\"aa01117_html_a363ef6e3c1fa9e4a58ff0a3852deec66\"><div class=\"ttname\"><a href=\"a01117.html#a363ef6e3c1fa9e4a58ff0a3852deec66\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::populateBaseLocalIndices</a></div><div class=\"ttdeci\">static void populateBaseLocalIndices(TopologyRefiner &amp;newRefiner)</div><div class=\"ttdoc\">Determine all local indices by inspection (only for pure manifold meshes)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00767_source.html#l00527\">topologyRefinerFactory.h:527</a></div></div>\n-<div class=\"ttc\" id=\"aa01117_html_a3df7295af055588a7b4f20d4da021ad1\"><div class=\"ttname\"><a href=\"a01117.html#a3df7295af055588a7b4f20d4da021ad1\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::assignComponentTags</a></div><div class=\"ttdeci\">static bool assignComponentTags(TopologyRefiner &amp;newRefiner, MESH const &amp;mesh)</div><div class=\"ttdoc\">(Optional) Specify edge or vertex sharpness or face holes</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00767_source.html#l00690\">topologyRefinerFactory.h:690</a></div></div>\n-<div class=\"ttc\" id=\"aa01117_html_a4c574c458d080393a258f48e0ab20938\"><div class=\"ttname\"><a href=\"a01117.html#a4c574c458d080393a258f48e0ab20938\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::resizeComponentTopology</a></div><div class=\"ttdeci\">static bool resizeComponentTopology(TopologyRefiner &amp;newRefiner, MESH const &amp;mesh)</div><div class=\"ttdoc\">Specify the number of vertices, faces, face-vertices, etc.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00767_source.html#l00580\">topologyRefinerFactory.h:580</a></div></div>\n-<div class=\"ttc\" id=\"aa01117_html_a53afbc1d886920a1f7bd9fb66bc7c764\"><div class=\"ttname\"><a href=\"a01117.html#a53afbc1d886920a1f7bd9fb66bc7c764\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::setNumBaseVertexEdges</a></div><div class=\"ttdeci\">static void setNumBaseVertexEdges(TopologyRefiner &amp;newRefiner, Index v, int count)</div><div class=\"ttdoc\">Specify the number of edges incident each vertex.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00767_source.html#l00468\">topologyRefinerFactory.h:468</a></div></div>\n-<div class=\"ttc\" id=\"aa01117_html_a5458be6ce3f2e63c8d8555f4ab3b2b62\"><div class=\"ttname\"><a href=\"a01117.html#a5458be6ce3f2e63c8d8555f4ab3b2b62\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::TopologyError</a></div><div class=\"ttdeci\">Vtr::internal::Level::TopologyError TopologyError</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00767_source.html#l00131\">topologyRefinerFactory.h:131</a></div></div>\n-<div class=\"ttc\" id=\"aa01117_html_a5709feae1ab1f49570e4adf485e21433\"><div class=\"ttname\"><a href=\"a01117.html#a5709feae1ab1f49570e4adf485e21433\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::getBaseFaceFVarValues</a></div><div class=\"ttdeci\">static IndexArray getBaseFaceFVarValues(TopologyRefiner &amp;newRefiner, Index face, int channel=0)</div><div class=\"ttdoc\">Assign the face-varying values for the corners of each face.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00767_source.html#l00573\">topologyRefinerFactory.h:573</a></div></div>\n-<div class=\"ttc\" id=\"aa01117_html_a598f3a70a526b3d47f1edd383d904792\"><div class=\"ttname\"><a href=\"a01117.html#a598f3a70a526b3d47f1edd383d904792\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::getBaseEdgeFaces</a></div><div class=\"ttdeci\">static IndexArray getBaseEdgeFaces(TopologyRefiner &amp;newRefiner, Index e)</div><div class=\"ttdoc\">Assign the faces incident each edge.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00767_source.html#l00489\">topologyRefinerFactory.h:489</a></div></div>\n-<div class=\"ttc\" id=\"aa01117_html_a5dabb3b53480f7070826d20114b826b3\"><div class=\"ttname\"><a href=\"a01117.html#a5dabb3b53480f7070826d20114b826b3\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::setNumBaseVertexFaces</a></div><div class=\"ttdeci\">static void setNumBaseVertexFaces(TopologyRefiner &amp;newRefiner, Index v, int count)</div><div class=\"ttdoc\">Specify the number of faces incident each vertex.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00767_source.html#l00463\">topologyRefinerFactory.h:463</a></div></div>\n-<div class=\"ttc\" id=\"aa01117_html_a6999e259e020bc687d09ef616ab3825b\"><div class=\"ttname\"><a href=\"a01117.html#a6999e259e020bc687d09ef616ab3825b\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::assignFaceVaryingTopology</a></div><div class=\"ttdeci\">static bool assignFaceVaryingTopology(TopologyRefiner &amp;newRefiner, MESH const &amp;mesh)</div><div class=\"ttdoc\">(Optional) Specify face-varying data per face</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00767_source.html#l00674\">topologyRefinerFactory.h:674</a></div></div>\n-<div class=\"ttc\" id=\"aa01117_html_a6bcd3738db74e1efce001beee0693c8a\"><div class=\"ttname\"><a href=\"a01117.html#a6bcd3738db74e1efce001beee0693c8a\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::setBaseVertexSharpness</a></div><div class=\"ttdeci\">static void setBaseVertexSharpness(TopologyRefiner &amp;newRefiner, Index v, float sharpness)</div><div class=\"ttdoc\">Assign a sharpness value to a given vertex.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00767_source.html#l00549\">topologyRefinerFactory.h:549</a></div></div>\n-<div class=\"ttc\" id=\"aa01117_html_a6ff4d209a7fa096c6fd8d314519006fb\"><div class=\"ttname\"><a href=\"a01117.html#a6ff4d209a7fa096c6fd8d314519006fb\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::getBaseVertexEdgeLocalIndices</a></div><div class=\"ttdeci\">static LocalIndexArray getBaseVertexEdgeLocalIndices(TopologyRefiner &amp;newRefiner, Index v)</div><div class=\"ttdoc\">Assign the local indices of a vertex within each of its incident edges.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00767_source.html#l00515\">topologyRefinerFactory.h:515</a></div></div>\n-<div class=\"ttc\" id=\"aa01117_html_a78f9b78d9fd7895d88449157202d2320\"><div class=\"ttname\"><a href=\"a01117.html#a78f9b78d9fd7895d88449157202d2320\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::getBaseEdgeVertices</a></div><div class=\"ttdeci\">static IndexArray getBaseEdgeVertices(TopologyRefiner &amp;newRefiner, Index e)</div><div class=\"ttdoc\">Assign the vertices incident each edge.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00767_source.html#l00484\">topologyRefinerFactory.h:484</a></div></div>\n-<div class=\"ttc\" id=\"aa01117_html_a7af5443e6de72365777b88c44ca73c05\"><div class=\"ttname\"><a href=\"a01117.html#a7af5443e6de72365777b88c44ca73c05\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::getBaseVertexFaces</a></div><div class=\"ttdeci\">static IndexArray getBaseVertexFaces(TopologyRefiner &amp;newRefiner, Index v)</div><div class=\"ttdoc\">Assign the faces incident each vertex.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00767_source.html#l00494\">topologyRefinerFactory.h:494</a></div></div>\n-<div class=\"ttc\" id=\"aa01117_html_a7b7a064f825e85f70c995e1614d3f569\"><div class=\"ttname\"><a href=\"a01117.html#a7b7a064f825e85f70c995e1614d3f569\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::setBaseVertexNonManifold</a></div><div class=\"ttdeci\">static void setBaseVertexNonManifold(TopologyRefiner &amp;newRefiner, Index v, bool b)</div><div class=\"ttdoc\">Tag a vertex as non-manifold.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00767_source.html#l00538\">topologyRefinerFactory.h:538</a></div></div>\n-<div class=\"ttc\" id=\"aa01117_html_a7ea1b1dae066a5255ac2c2d0d56c1460\"><div class=\"ttname\"><a href=\"a01117.html#a7ea1b1dae066a5255ac2c2d0d56c1460\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::setNumBaseFaces</a></div><div class=\"ttdeci\">static void setNumBaseFaces(TopologyRefiner &amp;newRefiner, int count)</div><div class=\"ttdoc\">Specify the number of faces to be accommodated.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00767_source.html#l00420\">topologyRefinerFactory.h:420</a></div></div>\n-<div class=\"ttc\" id=\"aa01117_html_a8233d0fd9a411e3cebb6de37f0b4dd52\"><div class=\"ttname\"><a href=\"a01117.html#a8233d0fd9a411e3cebb6de37f0b4dd52\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::getBaseFaceEdges</a></div><div class=\"ttdeci\">static IndexArray getBaseFaceEdges(TopologyRefiner &amp;newRefiner, Index f)</div><div class=\"ttdoc\">Assign the edges incident each face.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00767_source.html#l00479\">topologyRefinerFactory.h:479</a></div></div>\n-<div class=\"ttc\" id=\"aa01117_html_a8eea2866a8b3ba7bf6898984fe2a543a\"><div class=\"ttname\"><a href=\"a01117.html#a8eea2866a8b3ba7bf6898984fe2a543a\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::setNumBaseFaceVertices</a></div><div class=\"ttdeci\">static void setNumBaseFaceVertices(TopologyRefiner &amp;newRefiner, Index f, int count)</div><div class=\"ttdoc\">Specify the number of vertices incident each face.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00767_source.html#l00452\">topologyRefinerFactory.h:452</a></div></div>\n-<div class=\"ttc\" id=\"aa01117_html_aa1b903734e1a9136e087c3cd4e3ff657\"><div class=\"ttname\"><a href=\"a01117.html#aa1b903734e1a9136e087c3cd4e3ff657\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::setBaseEdgeSharpness</a></div><div class=\"ttdeci\">static void setBaseEdgeSharpness(TopologyRefiner &amp;newRefiner, Index e, float sharpness)</div><div class=\"ttdoc\">Assign a sharpness value to a given edge.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00767_source.html#l00544\">topologyRefinerFactory.h:544</a></div></div>\n-<div class=\"ttc\" id=\"aa01117_html_aaa60d4a0d80d8e76e3569ddeb3d16ca4\"><div class=\"ttname\"><a href=\"a01117.html#aaa60d4a0d80d8e76e3569ddeb3d16ca4\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::setBaseEdgeNonManifold</a></div><div class=\"ttdeci\">static void setBaseEdgeNonManifold(TopologyRefiner &amp;newRefiner, Index e, bool b)</div><div class=\"ttdoc\">Tag an edge as non-manifold.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00767_source.html#l00533\">topologyRefinerFactory.h:533</a></div></div>\n-<div class=\"ttc\" id=\"aa01117_html_aac57d69b5bb270ccabe0d84364d065ce\"><div class=\"ttname\"><a href=\"a01117.html#aac57d69b5bb270ccabe0d84364d065ce\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::setNumBaseEdges</a></div><div class=\"ttdeci\">static void setNumBaseEdges(TopologyRefiner &amp;newRefiner, int count)</div><div class=\"ttdoc\">Specify the number of edges to be accommodated.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00767_source.html#l00425\">topologyRefinerFactory.h:425</a></div></div>\n-<div class=\"ttc\" id=\"aa01117_html_ab10eb061eba33095095d754241081ff9\"><div class=\"ttname\"><a href=\"a01117.html#ab10eb061eba33095095d754241081ff9\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::Create</a></div><div class=\"ttdeci\">static TopologyRefiner * Create(MESH const &amp;mesh, Options options=Options())</div><div class=\"ttdoc\">Instantiates a TopologyRefiner from client-provided topological representation.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00767_source.html#l00346\">topologyRefinerFactory.h:346</a></div></div>\n-<div class=\"ttc\" id=\"aa01117_html_abadf245d872a6a226772a14a471324d0\"><div class=\"ttname\"><a href=\"a01117.html#abadf245d872a6a226772a14a471324d0\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::findBaseEdge</a></div><div class=\"ttdeci\">static Index findBaseEdge(TopologyRefiner const &amp;newRefiner, Index v0, Index v1)</div><div class=\"ttdoc\">Identify an edge to be assigned a sharpness value given a vertex pair.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00767_source.html#l00521\">topologyRefinerFactory.h:521</a></div></div>\n-<div class=\"ttc\" id=\"aa01117_html_ad2e926d52d7682c6e6453831e91eeb98\"><div class=\"ttname\"><a href=\"a01117.html#ad2e926d52d7682c6e6453831e91eeb98\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::getBaseVertexEdges</a></div><div class=\"ttdeci\">static IndexArray getBaseVertexEdges(TopologyRefiner &amp;newRefiner, Index v)</div><div class=\"ttdoc\">Assign the edges incident each vertex.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00767_source.html#l00499\">topologyRefinerFactory.h:499</a></div></div>\n-<div class=\"ttc\" id=\"aa01117_html_ad73911f95b0a7025a510631c13526d4d\"><div class=\"ttname\"><a href=\"a01117.html#ad73911f95b0a7025a510631c13526d4d\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::createBaseFVarChannel</a></div><div class=\"ttdeci\">static int createBaseFVarChannel(TopologyRefiner &amp;newRefiner, int numValues)</div><div class=\"ttdoc\">Create a new face-varying channel with the given number of values.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00767_source.html#l00561\">topologyRefinerFactory.h:561</a></div></div>\n-<div class=\"ttc\" id=\"aa01117_html_ad86027437b67e115c875a494ba140ccb\"><div class=\"ttname\"><a href=\"a01117.html#ad86027437b67e115c875a494ba140ccb\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::getNumBaseEdges</a></div><div class=\"ttdeci\">static int getNumBaseEdges(TopologyRefiner const &amp;newRefiner)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00767_source.html#l00441\">topologyRefinerFactory.h:441</a></div></div>\n-<div class=\"ttc\" id=\"aa01117_html_ade6bd4c9d2e9eaf232d928f45b58e070\"><div class=\"ttname\"><a href=\"a01117.html#ade6bd4c9d2e9eaf232d928f45b58e070\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::setNumBaseVertices</a></div><div class=\"ttdeci\">static void setNumBaseVertices(TopologyRefiner &amp;newRefiner, int count)</div><div class=\"ttdoc\">Specify the number of vertices to be accommodated.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00767_source.html#l00430\">topologyRefinerFactory.h:430</a></div></div>\n-<div class=\"ttc\" id=\"aa01117_html_afe44424c4c292e12634a9eb1d4efbc7e\"><div class=\"ttname\"><a href=\"a01117.html#afe44424c4c292e12634a9eb1d4efbc7e\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::setBaseFaceHole</a></div><div class=\"ttdeci\">static void setBaseFaceHole(TopologyRefiner &amp;newRefiner, Index f, bool isHole)</div><div class=\"ttdoc\">Tag a face as a hole.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00767_source.html#l00554\">topologyRefinerFactory.h:554</a></div></div>\n-<div class=\"ttc\" id=\"aa01121_html\"><div class=\"ttname\"><a href=\"a01121.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner</a></div><div class=\"ttdoc\">Stores topology data for a specified set of refinement options.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00051\">topologyRefiner.h:51</a></div></div>\n-<div class=\"ttc\" id=\"aa01133_html\"><div class=\"ttname\"><a href=\"a01133.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactoryBase</a></div><div class=\"ttdoc\">Private base class of Factories for constructing TopologyRefiners.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00767_source.html#l00047\">topologyRefinerFactory.h:47</a></div></div>\n-<div class=\"ttc\" id=\"aa01133_html_a30ee63853ace8ecb0c3c2a6e3303aefc\"><div class=\"ttname\"><a href=\"a01133.html#a30ee63853ace8ecb0c3c2a6e3303aefc\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactoryBase::prepareComponentTopologyAssignment</a></div><div class=\"ttdeci\">static bool prepareComponentTopologyAssignment(TopologyRefiner &amp;refiner, bool fullValidation, TopologyCallback callback, void const *callbackData)</div></div>\n-<div class=\"ttc\" id=\"aa01133_html_a896a964625491e084b3d776acd10f053\"><div class=\"ttname\"><a href=\"a01133.html#a896a964625491e084b3d776acd10f053\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactoryBase::TopologyCallback</a></div><div class=\"ttdeci\">Vtr::internal::Level::ValidationCallback TopologyCallback</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00767_source.html#l00054\">topologyRefinerFactory.h:54</a></div></div>\n-<div class=\"ttc\" id=\"aa01133_html_a8d7f178267895f2a90585e60849b9119\"><div class=\"ttname\"><a href=\"a01133.html#a8d7f178267895f2a90585e60849b9119\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactoryBase::prepareComponentTagsAndSharpness</a></div><div class=\"ttdeci\">static bool prepareComponentTagsAndSharpness(TopologyRefiner &amp;refiner)</div></div>\n-<div class=\"ttc\" id=\"aa01133_html_aba57674bcc5cb7367ce1fe527ec219ad\"><div class=\"ttname\"><a href=\"a01133.html#aba57674bcc5cb7367ce1fe527ec219ad\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactoryBase::prepareComponentTopologySizing</a></div><div class=\"ttdeci\">static bool prepareComponentTopologySizing(TopologyRefiner &amp;refiner)</div></div>\n-<div class=\"ttc\" id=\"aa01133_html_ac800e6db9b484b31f8fa11799ee4ac1b\"><div class=\"ttname\"><a href=\"a01133.html#ac800e6db9b484b31f8fa11799ee4ac1b\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactoryBase::prepareFaceVaryingChannels</a></div><div class=\"ttdeci\">static bool prepareFaceVaryingChannels(TopologyRefiner &amp;refiner)</div></div>\n-<div class=\"ttc\" id=\"aa01137_html\"><div class=\"ttname\"><a href=\"a01137.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::Options</a></div><div class=\"ttdoc\">Options related to the construction of each TopologyRefiner.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00767_source.html#l00084\">topologyRefinerFactory.h:84</a></div></div>\n-<div class=\"ttc\" id=\"aa01137_html_a33cde130beeee5dd5125d2c188b1a088\"><div class=\"ttname\"><a href=\"a01137.html#a33cde130beeee5dd5125d2c188b1a088\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::Options::Options</a></div><div class=\"ttdeci\">Options(Sdc::SchemeType sdcType=Sdc::SCHEME_CATMARK, Sdc::Options sdcOptions=Sdc::Options())</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00767_source.html#l00086\">topologyRefinerFactory.h:86</a></div></div>\n-<div class=\"ttc\" id=\"aa01137_html_a9ec2ab2b4bd49c6cf367dac80c8cbb94\"><div class=\"ttname\"><a href=\"a01137.html#a9ec2ab2b4bd49c6cf367dac80c8cbb94\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::Options::schemeOptions</a></div><div class=\"ttdeci\">Sdc::Options schemeOptions</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00767_source.html#l00092\">topologyRefinerFactory.h:92</a></div></div>\n-<div class=\"ttc\" id=\"aa01137_html_ab4a105466e7c764e3aabaa6c44c1eeb6\"><div class=\"ttname\"><a href=\"a01137.html#ab4a105466e7c764e3aabaa6c44c1eeb6\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::Options::schemeType</a></div><div class=\"ttdeci\">Sdc::SchemeType schemeType</div><div class=\"ttdoc\">The subdivision scheme type identifier.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00767_source.html#l00091\">topologyRefinerFactory.h:91</a></div></div>\n-<div class=\"ttc\" id=\"aa01137_html_adaa22b025e8615d6e4281a86b794e5df\"><div class=\"ttname\"><a href=\"a01137.html#adaa22b025e8615d6e4281a86b794e5df\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::Options::validateFullTopology</a></div><div class=\"ttdeci\">unsigned int validateFullTopology</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00767_source.html#l00094\">topologyRefinerFactory.h:94</a></div></div>\n-<div class=\"ttc\" id=\"aa01337_html\"><div class=\"ttname\"><a href=\"a01337.html\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options</a></div><div class=\"ttdoc\">All supported options applying to subdivision scheme.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00734_source.html#l00051\">options.h:51</a></div></div>\n-<div class=\"ttc\" id=\"aa01337_html_a2b335eb227194b4fc6fcec7f3c4b25ce\"><div class=\"ttname\"><a href=\"a01337.html#a2b335eb227194b4fc6fcec7f3c4b25ce\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::SetFVarLinearInterpolation</a></div><div class=\"ttdeci\">void SetFVarLinearInterpolation(FVarLinearInterpolation b)</div><div class=\"ttdoc\">Set face-varying interpolation rule.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00734_source.html#l00098\">options.h:98</a></div></div>\n-<div class=\"ttc\" id=\"aa01337_html_acab24306782f101827103b87bbe4b8dd\"><div class=\"ttname\"><a href=\"a01337.html#acab24306782f101827103b87bbe4b8dd\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::GetFVarLinearInterpolation</a></div><div class=\"ttdeci\">FVarLinearInterpolation GetFVarLinearInterpolation() const</div><div class=\"ttdoc\">Get face-varying interpolation rule.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00734_source.html#l00095\">options.h:95</a></div></div>\n-<div class=\"ttc\" id=\"aa01357_html\"><div class=\"ttname\"><a href=\"a01357.html\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::Array</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00683_source.html#l00105\">array.h:105</a></div></div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_GL_LEGACY_GREGORY_PATCH_TABLE_H</span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa00973_html_a1d1cfd8ffb84e947f82999c682b666a7\"><div class=\"ttname\"><a href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::Type</a></div><div class=\"ttdeci\">Type</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00857_source.html#l00048\">patchDescriptor.h:48</a></div></div>\n+<div class=\"ttc\" id=\"aa00973_html_a1d1cfd8ffb84e947f82999c682b666a7ac4ae10df9c13e44880ca7be341e44f2a\"><div class=\"ttname\"><a href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7ac4ae10df9c13e44880ca7be341e44f2a\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::GREGORY_BOUNDARY</a></div><div class=\"ttdeci\">@ GREGORY_BOUNDARY</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00857_source.html#l00061\">patchDescriptor.h:61</a></div></div>\n+<div class=\"ttc\" id=\"aa00993_html\"><div class=\"ttname\"><a href=\"a00993.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable</a></div><div class=\"ttdoc\">Container for arrays of parametric patches.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00842_source.html#l00055\">patchTable.h:55</a></div></div>\n+<div class=\"ttc\" id=\"aa01233_html\"><div class=\"ttname\"><a href=\"a01233.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLLegacyGregoryPatchTable</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00767_source.html#l00039\">glLegacyGregoryPatchTable.h:40</a></div></div>\n+<div class=\"ttc\" id=\"aa01233_html_a36f9d327f21d3dee80bb225000403cce\"><div class=\"ttname\"><a href=\"a01233.html#a36f9d327f21d3dee80bb225000403cce\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLLegacyGregoryPatchTable::GetVertexValenceTextureBuffer</a></div><div class=\"ttdeci\">GLuint GetVertexValenceTextureBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00767_source.html#l00052\">glLegacyGregoryPatchTable.h:52</a></div></div>\n+<div class=\"ttc\" id=\"aa01233_html_a4968ced94d61cc4d5e8f0e9883fd2116\"><div class=\"ttname\"><a href=\"a01233.html#a4968ced94d61cc4d5e8f0e9883fd2116\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLLegacyGregoryPatchTable::GetQuadOffsetsTextureBuffer</a></div><div class=\"ttdeci\">GLuint GetQuadOffsetsTextureBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00767_source.html#l00056\">glLegacyGregoryPatchTable.h:56</a></div></div>\n+<div class=\"ttc\" id=\"aa01233_html_a51fd18f3671b7b6c473a039d75808067\"><div class=\"ttname\"><a href=\"a01233.html#a51fd18f3671b7b6c473a039d75808067\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLLegacyGregoryPatchTable::~GLLegacyGregoryPatchTable</a></div><div class=\"ttdeci\">~GLLegacyGregoryPatchTable()</div></div>\n+<div class=\"ttc\" id=\"aa01233_html_a5b78188b846b316c5c0cdb42f4ee9563\"><div class=\"ttname\"><a href=\"a01233.html#a5b78188b846b316c5c0cdb42f4ee9563\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLLegacyGregoryPatchTable::GLLegacyGregoryPatchTable</a></div><div class=\"ttdeci\">GLLegacyGregoryPatchTable()</div></div>\n+<div class=\"ttc\" id=\"aa01233_html_a733eda5d63a4d77324d7d50d704eaf3a\"><div class=\"ttname\"><a href=\"a01233.html#a733eda5d63a4d77324d7d50d704eaf3a\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLLegacyGregoryPatchTable::UpdateVertexBuffer</a></div><div class=\"ttdeci\">void UpdateVertexBuffer(GLuint vbo)</div></div>\n+<div class=\"ttc\" id=\"aa01233_html_a7d706a485061caef58778fdc8a7348d1\"><div class=\"ttname\"><a href=\"a01233.html#a7d706a485061caef58778fdc8a7348d1\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLLegacyGregoryPatchTable::GetQuadOffsetsBase</a></div><div class=\"ttdeci\">GLuint GetQuadOffsetsBase(Far::PatchDescriptor::Type type)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00767_source.html#l00060\">glLegacyGregoryPatchTable.h:60</a></div></div>\n+<div class=\"ttc\" id=\"aa01233_html_af81d48caf41d4a7e0c5ceb166d4de990\"><div class=\"ttname\"><a href=\"a01233.html#af81d48caf41d4a7e0c5ceb166d4de990\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLLegacyGregoryPatchTable::GetVertexTextureBuffer</a></div><div class=\"ttdeci\">GLuint GetVertexTextureBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00767_source.html#l00048\">glLegacyGregoryPatchTable.h:48</a></div></div>\n+<div class=\"ttc\" id=\"aa01233_html_afa527b26d9eade00d0fa657646b1a151\"><div class=\"ttname\"><a href=\"a01233.html#afa527b26d9eade00d0fa657646b1a151\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLLegacyGregoryPatchTable::Create</a></div><div class=\"ttdeci\">static GLLegacyGregoryPatchTable * Create(Far::PatchTable const *patchTable)</div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7f420b72a822828cfa8b0561c695a5cc.html\">far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00767.html\">topologyRefinerFactory.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00767.html\">glLegacyGregoryPatchTable.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-topologyRefinerFactory.h\n+glLegacyGregoryPatchTable.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2014 DreamWorks Animation LLC.\n+2// Copyright 2015 Pixar\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -23,931 +23,114 @@\n 17//\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n-24#ifndef OPENSUBDIV3_FAR_TOPOLOGY_REFINER_FACTORY_H\n-25#define OPENSUBDIV3_FAR_TOPOLOGY_REFINER_FACTORY_H\n-26\n-27#include \"../version.h\"\n-28\n-29#include \"../far/topologyRefiner.h\"\n-30#include \"../far/error.h\"\n-31\n-32#include <cassert>\n+24\n+25#ifndef OPENSUBDIV3_OSD_GL_LEGACY_GREGORY_PATCH_TABLE_H\n+26#define OPENSUBDIV3_OSD_GL_LEGACY_GREGORY_PATCH_TABLE_H\n+27\n+28#include \"../version.h\"\n+29\n+30#include \"../far/patchTable.h\"\n+31#include \"../osd/nonCopyable.h\"\n+32#include \"../osd/opengl.h\"\n 33\n 34namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n 35namespace OPENSUBDIV_VERSION {\n 36\n-37namespace Far {\n+37namespace Osd {\n 38\n-46//\n-_\b4_\b7class _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\bB_\ba_\bs_\be {\n-48protected:\n-49\n-50 //\n-51 // Protected methods invoked by the subclass template to verify and process\n-each\n-52 // stage of construction implemented by the subclass:\n-53 //\n-_\b5_\b4 typedef Vtr::internal::Level::ValidationCallback _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bC_\ba_\bl_\bl_\bb_\ba_\bc_\bk;\n+_\b3_\b9class _\bG_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+40 : private NonCopyable<GLLegacyGregoryPatchTable> {\n+41public:\n+_\b4_\b2 _\b~_\bG_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be();\n+43\n+_\b4_\b4 static _\bG_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be *_\bC_\br_\be_\ba_\bt_\be(_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be const *patchTable);\n+45\n+_\b4_\b6 void _\bU_\bp_\bd_\ba_\bt_\be_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br(GLuint vbo);\n+47\n+_\b4_\b8 GLuint _\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bT_\be_\bx_\bt_\bu_\br_\be_\bB_\bu_\bf_\bf_\be_\br() const {\n+49 return _vertexTextureBuffer;\n+50 }\n+51\n+_\b5_\b2 GLuint _\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be_\bT_\be_\bx_\bt_\bu_\br_\be_\bB_\bu_\bf_\bf_\be_\br() const {\n+53 return _vertexValenceTextureBuffer;\n+54 }\n 55\n-_\b5_\b6 static bool _\bp_\br_\be_\bp_\ba_\br_\be_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bS_\bi_\bz_\bi_\bn_\bg(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br& refiner);\n-_\b5_\b7 static bool _\bp_\br_\be_\bp_\ba_\br_\be_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bA_\bs_\bs_\bi_\bg_\bn_\bm_\be_\bn_\bt(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br& refiner,\n-bool fullValidation,\n-58 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bC_\ba_\bl_\bl_\bb_\ba_\bc_\bk callback, void const * callbackData);\n-_\b5_\b9 static bool _\bp_\br_\be_\bp_\ba_\br_\be_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\bT_\ba_\bg_\bs_\bA_\bn_\bd_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br& refiner);\n-_\b6_\b0 static bool _\bp_\br_\be_\bp_\ba_\br_\be_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br& refiner);\n-61};\n-62\n-63\n-77template <class MESH>\n-_\b7_\b8class _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by : public _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\bB_\ba_\bs_\be {\n-79\n-80public:\n-81\n-_\b8_\b4 struct _\bO_\bp_\bt_\bi_\bo_\bn_\bs {\n+_\b5_\b6 GLuint _\bG_\be_\bt_\bQ_\bu_\ba_\bd_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bT_\be_\bx_\bt_\bu_\br_\be_\bB_\bu_\bf_\bf_\be_\br() const {\n+57 return _quadOffsetsTextureBuffer;\n+58 }\n+59\n+_\b6_\b0 GLuint _\bG_\be_\bt_\bQ_\bu_\ba_\bd_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bB_\ba_\bs_\be(_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bT_\by_\bp_\be type) {\n+61 if (type == _\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bG_\bR_\bE_\bG_\bO_\bR_\bY_\b__\bB_\bO_\bU_\bN_\bD_\bA_\bR_\bY) {\n+62 return _quadOffsetsBase[1];\n+63 }\n+64 return _quadOffsetsBase[0];\n+65 }\n+66\n+67protected:\n+_\b6_\b8 _\bG_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be();\n+69\n+70private:\n+71 GLuint _vertexTextureBuffer;\n+72 GLuint _vertexValenceTextureBuffer;\n+73 GLuint _quadOffsetsTextureBuffer;\n+74 GLuint _quadOffsetsBase[2]; // gregory, boundaryGregory\n+75};\n+76\n+77\n+78\n+79} // end namespace Osd\n+80\n+81} // end namespace OPENSUBDIV_VERSION\n+82using namespace OPENSUBDIV_VERSION;\n+83\n+84} // end namespace OpenSubdiv\n 85\n-_\b8_\b6 _\bO_\bp_\bt_\bi_\bo_\bn_\bs(_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\bT_\by_\bp_\be sdcType = _\bS_\bd_\bc_\b:_\b:_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bC_\bA_\bT_\bM_\bA_\bR_\bK, _\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n-sdcOptions = _\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs()) :\n-87 _\bs_\bc_\bh_\be_\bm_\be_\bT_\by_\bp_\be(sdcType),\n-88 _\bs_\bc_\bh_\be_\bm_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs(sdcOptions),\n-89 _\bv_\ba_\bl_\bi_\bd_\ba_\bt_\be_\bF_\bu_\bl_\bl_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by(false) { }\n-90\n-_\b9_\b1 _\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\bT_\by_\bp_\be _\bs_\bc_\bh_\be_\bm_\be_\bT_\by_\bp_\be;\n-_\b9_\b2 _\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs _\bs_\bc_\bh_\be_\bm_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs;\n-_\b9_\b4 unsigned int _\bv_\ba_\bl_\bi_\bd_\ba_\bt_\be_\bF_\bu_\bl_\bl_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by : 1;\n-97 };\n-98\n-108 //\n-113 static _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br* _\bC_\br_\be_\ba_\bt_\be(MESH const& mesh, _\bO_\bp_\bt_\bi_\bo_\bn_\bs options = _\bO_\bp_\bt_\bi_\bo_\bn_\bs\n-());\n-114\n-128 static _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br* _\bC_\br_\be_\ba_\bt_\be(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const & baseLevel);\n-129\n-130protected:\n-_\b1_\b3_\b1 typedef Vtr::internal::Level::TopologyError _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bE_\br_\br_\bo_\br;\n-132\n-134\n-149\n-151 static bool _\br_\be_\bs_\bi_\bz_\be_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br& newRefiner, MESH\n-const& mesh);\n-152\n-155 static bool _\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br& newRefiner, MESH\n-const& mesh);\n-156\n-158 static bool _\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\bT_\ba_\bg_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br& newRefiner, MESH const&\n-mesh);\n-159\n-161 static bool _\ba_\bs_\bs_\bi_\bg_\bn_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br& newRefiner, MESH\n-const& mesh);\n-162\n-164 static void _\br_\be_\bp_\bo_\br_\bt_\bI_\bn_\bv_\ba_\bl_\bi_\bd_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by(TopologyError errCode, char const * msg,\n-MESH const& mesh);\n-165\n-167\n-168protected:\n-170\n-187\n-189 static void _\bs_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\bi_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & newRefiner, int count);\n-190\n-192 static void _\bs_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bF_\ba_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & newRefiner, int count);\n-193\n-195 static void _\bs_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bE_\bd_\bg_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & newRefiner, int count);\n-196\n-198 static void _\bs_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\bi_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & newRefiner, _\bI_\bn_\bd_\be_\bx f,\n-int count);\n-199\n-201 static void _\bs_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bE_\bd_\bg_\be_\bF_\ba_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & newRefiner, _\bI_\bn_\bd_\be_\bx e, int\n-count);\n-202\n-204 static void _\bs_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\be_\bx_\bF_\ba_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & newRefiner, _\bI_\bn_\bd_\be_\bx v,\n-int count);\n-205\n-207 static void _\bs_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\be_\bx_\bE_\bd_\bg_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & newRefiner, _\bI_\bn_\bd_\be_\bx v,\n-int count);\n-208\n-209 static int _\bg_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\bi_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const & newRefiner);\n-210 static int _\bg_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bF_\ba_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const & newRefiner);\n-211 static int _\bg_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bE_\bd_\bg_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const & newRefiner);\n-213\n-215\n-237\n-239 static _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bg_\be_\bt_\bB_\ba_\bs_\be_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\bi_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & newRefiner, _\bI_\bn_\bd_\be_\bx\n-f);\n-240\n-242 static _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bg_\be_\bt_\bB_\ba_\bs_\be_\bF_\ba_\bc_\be_\bE_\bd_\bg_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & newRefiner, _\bI_\bn_\bd_\be_\bx f);\n-243\n-245 static _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bg_\be_\bt_\bB_\ba_\bs_\be_\bE_\bd_\bg_\be_\bV_\be_\br_\bt_\bi_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & newRefiner, _\bI_\bn_\bd_\be_\bx\n-e);\n-246\n-248 static _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bg_\be_\bt_\bB_\ba_\bs_\be_\bE_\bd_\bg_\be_\bF_\ba_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & newRefiner, _\bI_\bn_\bd_\be_\bx e);\n-249\n-251 static _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bg_\be_\bt_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\be_\bx_\bF_\ba_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & newRefiner, _\bI_\bn_\bd_\be_\bx\n-v);\n-252\n-254 static _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bg_\be_\bt_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\be_\bx_\bE_\bd_\bg_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & newRefiner, _\bI_\bn_\bd_\be_\bx\n-v);\n-255\n-257 static _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bg_\be_\bt_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\be_\bx_\bF_\ba_\bc_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\bi_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br &\n-newRefiner, _\bI_\bn_\bd_\be_\bx v);\n-259 static _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bg_\be_\bt_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\be_\bx_\bE_\bd_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\bi_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br &\n-newRefiner, _\bI_\bn_\bd_\be_\bx v);\n-261 static _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bg_\be_\bt_\bB_\ba_\bs_\be_\bE_\bd_\bg_\be_\bF_\ba_\bc_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\bi_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br &\n-newRefiner, _\bI_\bn_\bd_\be_\bx e);\n-262\n-264 static void _\bp_\bo_\bp_\bu_\bl_\ba_\bt_\be_\bB_\ba_\bs_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\bi_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & newRefiner);\n-265\n-267 static void _\bs_\be_\bt_\bB_\ba_\bs_\be_\bE_\bd_\bg_\be_\bN_\bo_\bn_\bM_\ba_\bn_\bi_\bf_\bo_\bl_\bd(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & newRefiner, _\bI_\bn_\bd_\be_\bx e,\n-bool b);\n-268\n-270 static void _\bs_\be_\bt_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\be_\bx_\bN_\bo_\bn_\bM_\ba_\bn_\bi_\bf_\bo_\bl_\bd(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & newRefiner, _\bI_\bn_\bd_\be_\bx v,\n-bool b);\n-272\n-274\n-283\n-285 static _\bI_\bn_\bd_\be_\bx _\bf_\bi_\bn_\bd_\bB_\ba_\bs_\be_\bE_\bd_\bg_\be(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const & newRefiner, _\bI_\bn_\bd_\be_\bx v0,\n-_\bI_\bn_\bd_\be_\bx v1);\n-286\n-288 static void _\bs_\be_\bt_\bB_\ba_\bs_\be_\bE_\bd_\bg_\be_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & newRefiner, _\bI_\bn_\bd_\be_\bx e,\n-float sharpness);\n-289\n-291 static void _\bs_\be_\bt_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\be_\bx_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & newRefiner, _\bI_\bn_\bd_\be_\bx v,\n-float sharpness);\n-292\n-294 static void _\bs_\be_\bt_\bB_\ba_\bs_\be_\bF_\ba_\bc_\be_\bH_\bo_\bl_\be(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & newRefiner, _\bI_\bn_\bd_\be_\bx f, bool\n-isHole);\n-296\n-298\n-308\n-310 static int _\bc_\br_\be_\ba_\bt_\be_\bB_\ba_\bs_\be_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & newRefiner, int\n-numValues);\n-311\n-313 static int _\bc_\br_\be_\ba_\bt_\be_\bB_\ba_\bs_\be_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & newRefiner, int\n-numValues, _\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs const& fvarOptions);\n-314\n-316 static _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bg_\be_\bt_\bB_\ba_\bs_\be_\bF_\ba_\bc_\be_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & newRefiner, _\bI_\bn_\bd_\be_\bx\n-face, int channel = 0);\n-317\n-319\n-320protected:\n-321 //\n-322 // Not to be specialized:\n-323 //\n-324 static bool _\bp_\bo_\bp_\bu_\bl_\ba_\bt_\be_\bB_\ba_\bs_\be_\bL_\be_\bv_\be_\bl(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br& refiner, MESH const& mesh,\n-_\bO_\bp_\bt_\bi_\bo_\bn_\bs options);\n-325\n-326private:\n-327 //\n-328 // An oversight in the interfaces of the error reporting function between\n-the factory\n-329 // class and the Vtr::Level requires this adapter function to avoid\n-warnings.\n-330 //\n-331 // The static class method requires a reference as the MESH argument, but\n-the interface\n-332 // for Vtr::Level requires a pointer (void*). So this adapter with a MESH*\n-argument is\n-333 // used to effectively cast the function pointer required by Vtr::Level\n-error reporting:\n-334 //\n-335 static void reportInvalidTopologyAdapter(TopologyError errCode, char const\n-* msg, MESH const * mesh) {\n-336 _\br_\be_\bp_\bo_\br_\bt_\bI_\bn_\bv_\ba_\bl_\bi_\bd_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by(errCode, msg, *mesh);\n-337 }\n-338};\n-339\n-340\n-341//\n-342// Generic implementations:\n-343//\n-344template <class MESH>\n-345TopologyRefiner*\n-_\b3_\b4_\b6_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bC_\br_\be_\ba_\bt_\be(MESH const& mesh, _\bO_\bp_\bt_\bi_\bo_\bn_\bs options) {\n-347\n-348 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br * refiner = new _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br(options._\bs_\bc_\bh_\be_\bm_\be_\bT_\by_\bp_\be,\n-options._\bs_\bc_\bh_\be_\bm_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs);\n-349\n-350 if (! populateBaseLevel(*refiner, mesh, options)) {\n-351 delete refiner;\n-352 return 0;\n-353 }\n-354\n-355 // Eventually want to move the Refiner's inventory initialization here.\n-Currently it\n-356 // is handled after topology assignment, but if the inventory is to include\n-additional\n-357 // features (e.g. holes, etc.) it is better off deferred to here.\n-358\n-359 return refiner;\n-360}\n-361\n-362template <class MESH>\n-363_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br*\n-_\b3_\b6_\b4_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bC_\br_\be_\ba_\bt_\be(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const & source) {\n-365\n-366 return new _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br(source);\n-367}\n-368\n-369template <class MESH>\n-370bool\n-_\b3_\b7_\b1_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bp_\bo_\bp_\bu_\bl_\ba_\bt_\be_\bB_\ba_\bs_\be_\bL_\be_\bv_\be_\bl(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br& refiner,\n-MESH const& mesh, _\bO_\bp_\bt_\bi_\bo_\bn_\bs options) {\n-372\n-373 //\n-374 // Construction of a specialized topology refiner involves four steps, each\n-of which\n-375 // involves a method specialized for MESH followed by one that takes an\n-action in\n-376 // response to it or in preparation for the next step.\n-377 //\n-378 // Both the specialized methods and those that follow them may find fault\n-in the\n-379 // construction and trigger failure at any time:\n-380 //\n-381\n-382 //\n-383 // Sizing of the topology -- this is a required specialization for MESH.\n-This defines\n-384 // an inventory of all components and their relations that is used to\n-allocate buffers\n-385 // to be efficiently populated in the subsequent topology assignment step.\n-386 //\n-387 if (! resizeComponentTopology(refiner, mesh)) return false;\n-388 if (! prepareComponentTopologySizing(refiner)) return false;\n-389\n-390 //\n-391 // Assignment of the topology -- this is a required specialization for\n-MESH. If edges\n-392 // are specified, all other topological relations are expected to be\n-defined for them.\n-393 // Otherwise edges and remaining topology will be completed from the face-\n-vertices:\n-394 //\n-395 bool validate = options._\bv_\ba_\bl_\bi_\bd_\ba_\bt_\be_\bF_\bu_\bl_\bl_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by;\n-396 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bC_\ba_\bl_\bl_\bb_\ba_\bc_\bk callback = reinterpret_cast<_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bC_\ba_\bl_\bl_\bb_\ba_\bc_\bk>\n-(reportInvalidTopologyAdapter);\n-397 void const * userData = &mesh;\n-398\n-399 if (! assignComponentTopology(refiner, mesh)) return false;\n-400 if (! prepareComponentTopologyAssignment(refiner, validate, callback,\n-userData)) return false;\n-401\n-402 //\n-403 // User assigned and internal tagging of components -- an optional\n-specialization for\n-404 // MESH. Allows the specification of sharpness values, holes, etc.\n-405 //\n-406 if (! assignComponentTags(refiner, mesh)) return false;\n-407 if (! prepareComponentTagsAndSharpness(refiner)) return false;\n-408\n-409 //\n-410 // Defining channels of face-varying primvar data -- an optional\n-specialization for MESH.\n-411 //\n-412 if (! assignFaceVaryingTopology(refiner, mesh)) return false;\n-413 if (! prepareFaceVaryingChannels(refiner)) return false;\n-414\n-415 return true;\n-416}\n-417\n-418template <class MESH>\n-419inline void\n-_\b4_\b2_\b0_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bs_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bF_\ba_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & newRefiner,\n-int count) {\n-421 newRefiner._levels[0]->resizeFaces(count);\n-422}\n-423template <class MESH>\n-424inline void\n-_\b4_\b2_\b5_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bs_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bE_\bd_\bg_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & newRefiner,\n-int count) {\n-426 newRefiner._levels[0]->resizeEdges(count);\n-427}\n-428template <class MESH>\n-429inline void\n-_\b4_\b3_\b0_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bs_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\bi_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br &\n-newRefiner, int count) {\n-431 newRefiner._levels[0]->resizeVertices(count);\n-432}\n-433\n-434template <class MESH>\n-435inline int\n-_\b4_\b3_\b6_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bg_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bF_\ba_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const &\n-newRefiner) {\n-437 return newRefiner._levels[0]->getNumFaces();\n-438}\n-439template <class MESH>\n-440inline int\n-_\b4_\b4_\b1_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bg_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bE_\bd_\bg_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const &\n-newRefiner) {\n-442 return newRefiner._levels[0]->getNumEdges();\n-443}\n-444template <class MESH>\n-445inline int\n-_\b4_\b4_\b6_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bg_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\bi_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const &\n-newRefiner) {\n-447 return newRefiner._levels[0]->getNumVertices();\n-448}\n-449\n-450template <class MESH>\n-451inline void\n-_\b4_\b5_\b2_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bs_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\bi_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br &\n-newRefiner, _\bI_\bn_\bd_\be_\bx f, int count) {\n-453 newRefiner._levels[0]->resizeFaceVertices(f, count);\n-454 newRefiner._hasIrregFaces = newRefiner._hasIrregFaces || (count !=\n-newRefiner._regFaceSize);\n-455}\n-456template <class MESH>\n-457inline void\n-_\b4_\b5_\b8_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bs_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bE_\bd_\bg_\be_\bF_\ba_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br &\n-newRefiner, _\bI_\bn_\bd_\be_\bx e, int count) {\n-459 newRefiner._levels[0]->resizeEdgeFaces(e, count);\n-460}\n-461template <class MESH>\n-462inline void\n-_\b4_\b6_\b3_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bs_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\be_\bx_\bF_\ba_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br &\n-newRefiner, _\bI_\bn_\bd_\be_\bx v, int count) {\n-464 newRefiner._levels[0]->resizeVertexFaces(v, count);\n-465}\n-466template <class MESH>\n-467inline void\n-_\b4_\b6_\b8_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bs_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\be_\bx_\bE_\bd_\bg_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br &\n-newRefiner, _\bI_\bn_\bd_\be_\bx v, int count) {\n-469 newRefiner._levels[0]->resizeVertexEdges(v, count);\n-470}\n-471\n-472template <class MESH>\n-473inline _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n-_\b4_\b7_\b4_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bg_\be_\bt_\bB_\ba_\bs_\be_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\bi_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br &\n-newRefiner, _\bI_\bn_\bd_\be_\bx f) {\n-475 return newRefiner._levels[0]->getFaceVertices(f);\n-476}\n-477template <class MESH>\n-478inline _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n-_\b4_\b7_\b9_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bg_\be_\bt_\bB_\ba_\bs_\be_\bF_\ba_\bc_\be_\bE_\bd_\bg_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & newRefiner,\n-_\bI_\bn_\bd_\be_\bx f) {\n-480 return newRefiner._levels[0]->getFaceEdges(f);\n-481}\n-482template <class MESH>\n-483inline _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n-_\b4_\b8_\b4_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bg_\be_\bt_\bB_\ba_\bs_\be_\bE_\bd_\bg_\be_\bV_\be_\br_\bt_\bi_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br &\n-newRefiner, _\bI_\bn_\bd_\be_\bx e) {\n-485 return newRefiner._levels[0]->getEdgeVertices(e);\n-486}\n-487template <class MESH>\n-488inline _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n-_\b4_\b8_\b9_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bg_\be_\bt_\bB_\ba_\bs_\be_\bE_\bd_\bg_\be_\bF_\ba_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & newRefiner,\n-_\bI_\bn_\bd_\be_\bx e) {\n-490 return newRefiner._levels[0]->getEdgeFaces(e);\n-491}\n-492template <class MESH>\n-493inline _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n-_\b4_\b9_\b4_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bg_\be_\bt_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\be_\bx_\bF_\ba_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br &\n-newRefiner, _\bI_\bn_\bd_\be_\bx v) {\n-495 return newRefiner._levels[0]->getVertexFaces(v);\n-496}\n-497template <class MESH>\n-498inline _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n-_\b4_\b9_\b9_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bg_\be_\bt_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\be_\bx_\bE_\bd_\bg_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br &\n-newRefiner, _\bI_\bn_\bd_\be_\bx v) {\n-500 return newRefiner._levels[0]->getVertexEdges(v);\n-501}\n-502\n-503template <class MESH>\n-504inline _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n-_\b5_\b0_\b5_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bg_\be_\bt_\bB_\ba_\bs_\be_\bE_\bd_\bg_\be_\bF_\ba_\bc_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\bi_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br &\n-newRefiner, _\bI_\bn_\bd_\be_\bx e) {\n-506 return newRefiner._levels[0]->getEdgeFaceLocalIndices(e);\n-507}\n-508template <class MESH>\n-509inline _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n-_\b5_\b1_\b0_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bg_\be_\bt_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\be_\bx_\bF_\ba_\bc_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\bi_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br\n-& newRefiner, _\bI_\bn_\bd_\be_\bx v) {\n-511 return newRefiner._levels[0]->getVertexFaceLocalIndices(v);\n-512}\n-513template <class MESH>\n-514inline _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n-_\b5_\b1_\b5_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bg_\be_\bt_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\be_\bx_\bE_\bd_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\bi_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br\n-& newRefiner, _\bI_\bn_\bd_\be_\bx v) {\n-516 return newRefiner._levels[0]->getVertexEdgeLocalIndices(v);\n-517}\n-518\n-519template <class MESH>\n-520inline _\bI_\bn_\bd_\be_\bx\n-_\b5_\b2_\b1_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bf_\bi_\bn_\bd_\bB_\ba_\bs_\be_\bE_\bd_\bg_\be(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const &\n-newRefiner, _\bI_\bn_\bd_\be_\bx v0, _\bI_\bn_\bd_\be_\bx v1) {\n-522 return newRefiner._levels[0]->findEdge(v0, v1);\n-523}\n-524\n-525template <class MESH>\n-526inline void\n-_\b5_\b2_\b7_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bp_\bo_\bp_\bu_\bl_\ba_\bt_\be_\bB_\ba_\bs_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\bi_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br &\n-newRefiner) {\n-528 newRefiner._levels[0]->populateLocalIndices();\n-529}\n-530\n-531template <class MESH>\n-532inline void\n-_\b5_\b3_\b3_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bs_\be_\bt_\bB_\ba_\bs_\be_\bE_\bd_\bg_\be_\bN_\bo_\bn_\bM_\ba_\bn_\bi_\bf_\bo_\bl_\bd(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br &\n-newRefiner, _\bI_\bn_\bd_\be_\bx e, bool b) {\n-534 newRefiner._levels[0]->setEdgeNonManifold(e, b);\n-535}\n-536template <class MESH>\n-537inline void\n-_\b5_\b3_\b8_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bs_\be_\bt_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\be_\bx_\bN_\bo_\bn_\bM_\ba_\bn_\bi_\bf_\bo_\bl_\bd(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br &\n-newRefiner, _\bI_\bn_\bd_\be_\bx v, bool b) {\n-539 newRefiner._levels[0]->setVertexNonManifold(v, b);\n-540}\n-541\n-542template <class MESH>\n-543inline void\n-_\b5_\b4_\b4_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bs_\be_\bt_\bB_\ba_\bs_\be_\bE_\bd_\bg_\be_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br &\n-newRefiner, _\bI_\bn_\bd_\be_\bx e, float s) {\n-545 newRefiner._levels[0]->getEdgeSharpness(e) = s;\n-546}\n-547template <class MESH>\n-548inline void\n-_\b5_\b4_\b9_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bs_\be_\bt_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\be_\bx_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br &\n-newRefiner, _\bI_\bn_\bd_\be_\bx v, float s) {\n-550 newRefiner._levels[0]->getVertexSharpness(v) = s;\n-551}\n-552template <class MESH>\n-553inline void\n-_\b5_\b5_\b4_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bs_\be_\bt_\bB_\ba_\bs_\be_\bF_\ba_\bc_\be_\bH_\bo_\bl_\be(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & newRefiner,\n-_\bI_\bn_\bd_\be_\bx f, bool b) {\n-555 newRefiner._levels[0]->setFaceHole(f, b);\n-556 newRefiner._hasHoles = newRefiner._hasHoles || b;\n-557}\n-558\n-559template <class MESH>\n-560inline int\n-_\b5_\b6_\b1_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bc_\br_\be_\ba_\bt_\be_\bB_\ba_\bs_\be_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br &\n-newRefiner, int numValues) {\n-562 return newRefiner._levels[0]->createFVarChannel(numValues,\n-newRefiner._subdivOptions);\n-563}\n-564template <class MESH>\n-565inline int\n-_\b5_\b6_\b6_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bc_\br_\be_\ba_\bt_\be_\bB_\ba_\bs_\be_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br &\n-newRefiner, int numValues, _\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs const& fvarOptions) {\n-567 _\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs newOptions = newRefiner._subdivOptions;\n-568 newOptions._\bS_\be_\bt_\bF_\bV_\ba_\br_\bL_\bi_\bn_\be_\ba_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-(fvarOptions._\bG_\be_\bt_\bF_\bV_\ba_\br_\bL_\bi_\bn_\be_\ba_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn());\n-569 return newRefiner._levels[0]->createFVarChannel(numValues, newOptions);\n-570}\n-571template <class MESH>\n-572inline _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n-_\b5_\b7_\b3_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bg_\be_\bt_\bB_\ba_\bs_\be_\bF_\ba_\bc_\be_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br &\n-newRefiner, _\bI_\bn_\bd_\be_\bx face, int channel) {\n-574 return newRefiner._levels[0]->getFaceFVarValues(face, channel);\n-575}\n-576\n-577\n-578template <class MESH>\n-579bool\n-_\b5_\b8_\b0_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\br_\be_\bs_\bi_\bz_\be_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br& /\n-* refiner */, MESH const& /* mesh */) {\n-581\n-582 _\bE_\br_\br_\bo_\br(_\bF_\bA_\bR_\b__\bR_\bU_\bN_\bT_\bI_\bM_\bE_\b__\bE_\bR_\bR_\bO_\bR,\n-583 \"Failure in TopologyRefinerFactory<>::resizeComponentTopology() -- no\n-specialization provided.\");\n-584\n-585 //\n-586 // Sizing the topology tables:\n-587 // This method is for determining the sizes of the various topology tables\n-(and other\n-588 // data) associated with the mesh. Once completed, appropriate memory will\n-be allocated\n-589 // and an additional method invoked to populate it accordingly.\n-590 //\n-591 // The following methods should be called -- first those to specify the\n-number of faces,\n-592 // edges and vertices in the mesh:\n-593 //\n-594 // void setBaseFaceCount( TopologyRefiner& newRefiner, int count)\n-595 // void setBaseEdgeCount( TopologyRefiner& newRefiner, int count)\n-596 // void setBaseVertexCount(TopologyRefiner& newRefiner, int count)\n-597 //\n-598 // and then for each face, edge and vertex, the number of its incident\n-components:\n-599 //\n-600 // void setBaseFaceVertexCount(TopologyRefiner& newRefiner, Index face, int\n-count)\n-601 // void setBaseEdgeFaceCount( TopologyRefiner& newRefiner, Index edge, int\n-count)\n-602 // void setBaseVertexFaceCount(TopologyRefiner& newRefiner, Index vertex,\n-int count)\n-603 // void setBaseVertexEdgeCount(TopologyRefiner& newRefiner, Index vertex,\n-int count)\n-604 //\n-605 // The count/size for a component type must be set before indices\n-associated with that\n-606 // component type can be used.\n-607 //\n-608 // Note that it is only necessary to size 4 of the 6 supported topological\n-relations --\n-609 // the number of edge-vertices is fixed at two per edge, and the number of\n-face-edges is\n-610 // the same as the number of face-vertices.\n-611 //\n-612 // So a single pass through your mesh to gather up all of this sizing\n-information will\n-613 // allow the Tables to be allocated appropriately once and avoid any\n-dynamic resizing as\n-614 // it grows.\n-615 //\n-616 return false;\n-617}\n-618\n-619template <class MESH>\n-620bool\n-_\b6_\b2_\b1_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br& /\n-* refiner */, MESH const& /* mesh */) {\n-622\n-623 _\bE_\br_\br_\bo_\br(_\bF_\bA_\bR_\b__\bR_\bU_\bN_\bT_\bI_\bM_\bE_\b__\bE_\bR_\bR_\bO_\bR,\n-624 \"Failure in TopologyRefinerFactory<>::assignComponentTopology() -- no\n-specialization provided.\");\n-625\n-626 //\n-627 // Assigning the topology tables:\n-628 // Once the topology tables have been allocated, the six required\n-topological\n-629 // relations can be directly populated using the following methods:\n-630 //\n-631 // IndexArray setBaseFaceVertices(TopologyRefiner& newRefiner, Index face)\n-632 // IndexArray setBaseFaceEdges(TopologyRefiner& newRefiner, Index face)\n-633 //\n-634 // IndexArray setBaseEdgeVertices(TopologyRefiner& newRefiner, Index edge)\n-635 // IndexArray setBaseEdgeFaces(TopologyRefiner& newRefiner, Index edge)\n-636 //\n-637 // IndexArray setBaseVertexEdges(TopologyRefiner& newRefiner, Index vertex)\n-638 // IndexArray setBaseVertexFaces(TopologyRefiner& newRefiner, Index vertex)\n-639 //\n-640 // For the last two relations -- the faces and edges incident a vertex -\n-- there are\n-641 // also \"local indices\" that must be specified (considering doing this\n-internally),\n-642 // where the \"local index\" of each incident face or edge is the index of\n-the vertex\n-643 // within that face or edge, and so ranging from 0-3 for incident quads and\n-0-1 for\n-644 // incident edges. These are assigned through similarly retrieved arrays:\n-645 //\n-646 // LocalIndexArray setBaseVertexFaceLocalIndices(TopologyRefiner&\n-newRefiner, Index vertex)\n-647 // LocalIndexArray setBaseVertexEdgeLocalIndices(TopologyRefiner&\n-newRefiner, Index vertex)\n-648 // LocalIndexArray setBaseEdgeFaceLocalIndices( TopologyRefiner&\n-newRefiner, Index edge)\n-649 //\n-650 // or, if the mesh is manifold, explicit assignment of these can be\n-deferred and\n-651 // all can be determined by calling:\n-652 //\n-653 // void populateBaseLocalIndices(TopologyRefiner& newRefiner)\n-654 //\n-655 // All components are assumed to be locally manifold and ordering of\n-components in\n-656 // the above relations is expected to be counter-clockwise.\n-657 //\n-658 // For non-manifold components, no ordering/orientation of incident\n-components is\n-659 // assumed or required, but be sure to explicitly tag such components\n-(vertices and\n-660 // edges) as non-manifold:\n-661 //\n-662 // void setBaseEdgeNonManifold(TopologyRefiner& newRefiner, Index edge,\n-bool b);\n-663 //\n-664 // void setBaseVertexNonManifold(TopologyRefiner& newRefiner, Index vertex,\n-bool b);\n-665 //\n-666 // Also consider using TopologyLevel::ValidateTopology() when debugging to\n-ensure\n-667 // that topology has been completely and correctly specified.\n-668 //\n-669 return false;\n-670}\n-671\n-672template <class MESH>\n-673bool\n-_\b6_\b7_\b4_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br& /\n-* refiner */, MESH const& /* mesh */) {\n-675\n-676 //\n-677 // Optional assigning face-varying topology tables:\n-678 //\n-679 // Create independent face-varying primitive variable channels:\n-680 // int createBaseFVarChannel(TopologyRefiner& newRefiner, int numValues)\n-681 //\n-682 // For each channel, populate the face-vertex values:\n-683 // IndexArray setBaseFaceFVarValues(TopologyRefiner& newRefiner, Index\n-face, int channel = 0)\n-684 //\n-685 return true;\n-686}\n-687\n-688template <class MESH>\n-689bool\n-_\b6_\b9_\b0_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\bT_\ba_\bg_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br& /\n-* refiner */, MESH const& /* mesh */) {\n-691\n-692 //\n-693 // Optional tagging:\n-694 // This is where any additional feature tags -- sharpness, holes, etc. -\n-- can be\n-695 // specified using:\n-696 //\n-697 // void setBaseEdgeSharpness(TopologyRefiner& newRefiner, Index edge, float\n-sharpness)\n-698 // void setBaseVertexSharpness(TopologyRefiner& newRefiner, Index vertex,\n-float sharpness)\n-699 //\n-700 // void setBaseFaceHole(TopologyRefiner& newRefiner, Index face, bool hole)\n-701 //\n-702 return true;\n-703}\n-704\n-705template <class MESH>\n-706void\n-_\b7_\b0_\b7_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\br_\be_\bp_\bo_\br_\bt_\bI_\bn_\bv_\ba_\bl_\bi_\bd_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by(\n-708 TopologyError /* errCode */, char const * /* msg */, MESH const& /* mesh */\n-) {\n-709\n-710 //\n-711 // Optional topology validation error reporting:\n-712 // This method is called whenever the factory encounters topology\n-validation\n-713 // errors. By default, nothing is reported\n-714 //\n-715}\n-716\n-717} // end namespace Far\n-718\n-719} // end namespace OPENSUBDIV_VERSION\n-720using namespace OPENSUBDIV_VERSION;\n-721} // end namespace OpenSubdiv\n-722\n-723#endif /* OPENSUBDIV3_FAR_TOPOLOGY_REFINER_FACTORY_H */\n+86#endif // OPENSUBDIV3_OSD_GL_LEGACY_GREGORY_PATCH_TABLE_H\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bE_\br_\br_\bo_\br\n-void Error(ErrorType err, const char *format,...)\n-Sends an OSD error with a message (internal use only)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bF_\bA_\bR_\b__\bR_\bU_\bN_\bT_\bI_\bM_\bE_\b__\bE_\bR_\bR_\bO_\bR\n-@ FAR_RUNTIME_ERROR\n-Issue a generic runtime error, but continue execution.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\be_\br_\br_\bo_\br_\b._\bh_\b:_\b4_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx\n-Vtr::Index Index\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b4_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\bT_\by_\bp_\be\n-SchemeType\n-Enumerated type for all subdivision schemes supported by OpenSubdiv.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b3_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bC_\bA_\bT_\bM_\bA_\bR_\bK\n-@ SCHEME_CATMARK\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b3_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by\n-Factory for constructing TopologyRefiners from specific mesh classes.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b7_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bg_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bF_\ba_\bc_\be_\bs\n-static int getNumBaseFaces(TopologyRefiner const &newRefiner)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b4_\b3_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n-_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by\n-static bool assignComponentTopology(TopologyRefiner &newRefiner, MESH const\n-&mesh)\n-Specify the relationships between vertices, faces, etc. ie the face-vertices,\n-vertex-faces,...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b6_\b2_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n-_\br_\be_\bp_\bo_\br_\bt_\bI_\bn_\bv_\ba_\bl_\bi_\bd_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by\n-static void reportInvalidTopology(TopologyError errCode, char const *msg, MESH\n-const &mesh)\n-(Optional) Control run-time topology validation and error reporting\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b7_\b0_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n-_\bg_\be_\bt_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\be_\bx_\bF_\ba_\bc_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\bi_\bc_\be_\bs\n-static LocalIndexArray getBaseVertexFaceLocalIndices(TopologyRefiner\n-&newRefiner, Index v)\n-Assign the local indices of a vertex within each of its incident faces.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b1_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bg_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n-static int getNumBaseVertices(TopologyRefiner const &newRefiner)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b4_\b4_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n-_\bs_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bE_\bd_\bg_\be_\bF_\ba_\bc_\be_\bs\n-static void setNumBaseEdgeFaces(TopologyRefiner &newRefiner, Index e, int\n-count)\n-Specify the number of faces incident each edge.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b4_\b5_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n-_\bg_\be_\bt_\bB_\ba_\bs_\be_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n-static IndexArray getBaseFaceVertices(TopologyRefiner &newRefiner, Index f)\n-Assign the vertices incident each face.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b4_\b7_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n-_\bg_\be_\bt_\bB_\ba_\bs_\be_\bE_\bd_\bg_\be_\bF_\ba_\bc_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\bi_\bc_\be_\bs\n-static LocalIndexArray getBaseEdgeFaceLocalIndices(TopologyRefiner &newRefiner,\n-Index e)\n-Assign the local indices of an edge within each of its incident faces.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b0_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bp_\bo_\bp_\bu_\bl_\ba_\bt_\be_\bB_\ba_\bs_\be_\bL_\be_\bv_\be_\bl\n-static bool populateBaseLevel(TopologyRefiner &refiner, MESH const &mesh,\n-Options options)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b3_\b7_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n-_\bp_\bo_\bp_\bu_\bl_\ba_\bt_\be_\bB_\ba_\bs_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\bi_\bc_\be_\bs\n-static void populateBaseLocalIndices(TopologyRefiner &newRefiner)\n-Determine all local indices by inspection (only for pure manifold meshes)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b2_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n-_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\bT_\ba_\bg_\bs\n-static bool assignComponentTags(TopologyRefiner &newRefiner, MESH const &mesh)\n-(Optional) Specify edge or vertex sharpness or face holes\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b6_\b9_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n-_\br_\be_\bs_\bi_\bz_\be_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by\n-static bool resizeComponentTopology(TopologyRefiner &newRefiner, MESH const\n-&mesh)\n-Specify the number of vertices, faces, face-vertices, etc.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b8_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n-_\bs_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\be_\bx_\bE_\bd_\bg_\be_\bs\n-static void setNumBaseVertexEdges(TopologyRefiner &newRefiner, Index v, int\n-count)\n-Specify the number of edges incident each vertex.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b4_\b6_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bE_\br_\br_\bo_\br\n-Vtr::internal::Level::TopologyError TopologyError\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b3_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n-_\bg_\be_\bt_\bB_\ba_\bs_\be_\bF_\ba_\bc_\be_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bs\n-static IndexArray getBaseFaceFVarValues(TopologyRefiner &newRefiner, Index\n-face, int channel=0)\n-Assign the face-varying values for the corners of each face.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b7_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bg_\be_\bt_\bB_\ba_\bs_\be_\bE_\bd_\bg_\be_\bF_\ba_\bc_\be_\bs\n-static IndexArray getBaseEdgeFaces(TopologyRefiner &newRefiner, Index e)\n-Assign the faces incident each edge.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b4_\b8_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n-_\bs_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\be_\bx_\bF_\ba_\bc_\be_\bs\n-static void setNumBaseVertexFaces(TopologyRefiner &newRefiner, Index v, int\n-count)\n-Specify the number of faces incident each vertex.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b4_\b6_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n-_\ba_\bs_\bs_\bi_\bg_\bn_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by\n-static bool assignFaceVaryingTopology(TopologyRefiner &newRefiner, MESH const\n-&mesh)\n-(Optional) Specify face-varying data per face\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b6_\b7_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n-_\bs_\be_\bt_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\be_\bx_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs\n-static void setBaseVertexSharpness(TopologyRefiner &newRefiner, Index v, float\n-sharpness)\n-Assign a sharpness value to a given vertex.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b4_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n-_\bg_\be_\bt_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\be_\bx_\bE_\bd_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\bi_\bc_\be_\bs\n-static LocalIndexArray getBaseVertexEdgeLocalIndices(TopologyRefiner\n-&newRefiner, Index v)\n-Assign the local indices of a vertex within each of its incident edges.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b1_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n-_\bg_\be_\bt_\bB_\ba_\bs_\be_\bE_\bd_\bg_\be_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n-static IndexArray getBaseEdgeVertices(TopologyRefiner &newRefiner, Index e)\n-Assign the vertices incident each edge.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b4_\b8_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bg_\be_\bt_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\be_\bx_\bF_\ba_\bc_\be_\bs\n-static IndexArray getBaseVertexFaces(TopologyRefiner &newRefiner, Index v)\n-Assign the faces incident each vertex.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b4_\b9_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n-_\bs_\be_\bt_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\be_\bx_\bN_\bo_\bn_\bM_\ba_\bn_\bi_\bf_\bo_\bl_\bd\n-static void setBaseVertexNonManifold(TopologyRefiner &newRefiner, Index v, bool\n-b)\n-Tag a vertex as non-manifold.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b3_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bs_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bF_\ba_\bc_\be_\bs\n-static void setNumBaseFaces(TopologyRefiner &newRefiner, int count)\n-Specify the number of faces to be accommodated.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b4_\b2_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bg_\be_\bt_\bB_\ba_\bs_\be_\bF_\ba_\bc_\be_\bE_\bd_\bg_\be_\bs\n-static IndexArray getBaseFaceEdges(TopologyRefiner &newRefiner, Index f)\n-Assign the edges incident each face.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b4_\b7_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n-_\bs_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n-static void setNumBaseFaceVertices(TopologyRefiner &newRefiner, Index f, int\n-count)\n-Specify the number of vertices incident each face.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b4_\b5_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n-_\bs_\be_\bt_\bB_\ba_\bs_\be_\bE_\bd_\bg_\be_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs\n-static void setBaseEdgeSharpness(TopologyRefiner &newRefiner, Index e, float\n-sharpness)\n-Assign a sharpness value to a given edge.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b4_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n-_\bs_\be_\bt_\bB_\ba_\bs_\be_\bE_\bd_\bg_\be_\bN_\bo_\bn_\bM_\ba_\bn_\bi_\bf_\bo_\bl_\bd\n-static void setBaseEdgeNonManifold(TopologyRefiner &newRefiner, Index e, bool\n-b)\n-Tag an edge as non-manifold.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b3_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bs_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bE_\bd_\bg_\be_\bs\n-static void setNumBaseEdges(TopologyRefiner &newRefiner, int count)\n-Specify the number of edges to be accommodated.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b4_\b2_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static TopologyRefiner * Create(MESH const &mesh, Options options=Options())\n-Instantiates a TopologyRefiner from client-provided topological representation.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b3_\b4_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bf_\bi_\bn_\bd_\bB_\ba_\bs_\be_\bE_\bd_\bg_\be\n-static Index findBaseEdge(TopologyRefiner const &newRefiner, Index v0, Index\n-v1)\n-Identify an edge to be assigned a sharpness value given a vertex pair.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b2_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bg_\be_\bt_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\be_\bx_\bE_\bd_\bg_\be_\bs\n-static IndexArray getBaseVertexEdges(TopologyRefiner &newRefiner, Index v)\n-Assign the edges incident each vertex.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b4_\b9_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n-_\bc_\br_\be_\ba_\bt_\be_\bB_\ba_\bs_\be_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl\n-static int createBaseFVarChannel(TopologyRefiner &newRefiner, int numValues)\n-Create a new face-varying channel with the given number of values.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b6_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bg_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bE_\bd_\bg_\be_\bs\n-static int getNumBaseEdges(TopologyRefiner const &newRefiner)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b4_\b4_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bs_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n-static void setNumBaseVertices(TopologyRefiner &newRefiner, int count)\n-Specify the number of vertices to be accommodated.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b4_\b3_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bs_\be_\bt_\bB_\ba_\bs_\be_\bF_\ba_\bc_\be_\bH_\bo_\bl_\be\n-static void setBaseFaceHole(TopologyRefiner &newRefiner, Index f, bool isHole)\n-Tag a face as a hole.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b5_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br\n-Stores topology data for a specified set of refinement options.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b5_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\bB_\ba_\bs_\be\n-Private base class of Factories for constructing TopologyRefiners.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b4_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\bB_\ba_\bs_\be_\b:_\b:\n-_\bp_\br_\be_\bp_\ba_\br_\be_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bA_\bs_\bs_\bi_\bg_\bn_\bm_\be_\bn_\bt\n-static bool prepareComponentTopologyAssignment(TopologyRefiner &refiner, bool\n-fullValidation, TopologyCallback callback, void const *callbackData)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\bB_\ba_\bs_\be_\b:_\b:\n-_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bC_\ba_\bl_\bl_\bb_\ba_\bc_\bk\n-Vtr::internal::Level::ValidationCallback TopologyCallback\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\bB_\ba_\bs_\be_\b:_\b:\n-_\bp_\br_\be_\bp_\ba_\br_\be_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\bT_\ba_\bg_\bs_\bA_\bn_\bd_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs\n-static bool prepareComponentTagsAndSharpness(TopologyRefiner &refiner)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\bB_\ba_\bs_\be_\b:_\b:\n-_\bp_\br_\be_\bp_\ba_\br_\be_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bS_\bi_\bz_\bi_\bn_\bg\n-static bool prepareComponentTopologySizing(TopologyRefiner &refiner)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\bB_\ba_\bs_\be_\b:_\b:\n-_\bp_\br_\be_\bp_\ba_\br_\be_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs\n-static bool prepareFaceVaryingChannels(TopologyRefiner &refiner)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n-Options related to the construction of each TopologyRefiner.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b8_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n-Options(Sdc::SchemeType sdcType=Sdc::SCHEME_CATMARK, Sdc::Options\n-sdcOptions=Sdc::Options())\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b8_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bs_\bc_\bh_\be_\bm_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n-Sdc::Options schemeOptions\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b9_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bs_\bc_\bh_\be_\bm_\be_\bT_\by_\bp_\be\n-Sdc::SchemeType schemeType\n-The subdivision scheme type identifier.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b9_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bv_\ba_\bl_\bi_\bd_\ba_\bt_\be_\bF_\bu_\bl_\bl_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by\n-unsigned int validateFullTopology\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b9_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n-All supported options applying to subdivision scheme.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b5_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bS_\be_\bt_\bF_\bV_\ba_\br_\bL_\bi_\bn_\be_\ba_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-void SetFVarLinearInterpolation(FVarLinearInterpolation b)\n-Set face-varying interpolation rule.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b9_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bG_\be_\bt_\bF_\bV_\ba_\br_\bL_\bi_\bn_\be_\ba_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n-FVarLinearInterpolation GetFVarLinearInterpolation() const\n-Get face-varying interpolation rule.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b9_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bA_\br_\br_\ba_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b1_\b0_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bT_\by_\bp_\be\n+Type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b4_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bG_\bR_\bE_\bG_\bO_\bR_\bY_\b__\bB_\bO_\bU_\bN_\bD_\bA_\bR_\bY\n+@ GREGORY_BOUNDARY\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b6_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+Container for arrays of parametric patches.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b4_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n+_\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be_\bT_\be_\bx_\bt_\bu_\br_\be_\bB_\bu_\bf_\bf_\be_\br\n+GLuint GetVertexValenceTextureBuffer() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n+_\bG_\be_\bt_\bQ_\bu_\ba_\bd_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bT_\be_\bx_\bt_\bu_\br_\be_\bB_\bu_\bf_\bf_\be_\br\n+GLuint GetQuadOffsetsTextureBuffer() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n+_\b~_\bG_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+~GLLegacyGregoryPatchTable()\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n+_\bG_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+GLLegacyGregoryPatchTable()\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n+_\bU_\bp_\bd_\ba_\bt_\be_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+void UpdateVertexBuffer(GLuint vbo)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n+_\bG_\be_\bt_\bQ_\bu_\ba_\bd_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bB_\ba_\bs_\be\n+GLuint GetQuadOffsetsBase(Far::PatchDescriptor::Type type)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n+_\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bT_\be_\bx_\bt_\bu_\br_\be_\bB_\bu_\bf_\bf_\be_\br\n+GLuint GetVertexTextureBuffer() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b4_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n+static GLLegacyGregoryPatchTable * Create(Far::PatchTable const *patchTable)\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bf_\ba_\br\n-    * _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bg_\bl_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00773.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00773.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/far/patchDescriptor.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/osd/cpuD3D11VertexBuffer.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -89,50 +89,42 @@\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> &#124;\n-<a href=\"#namespaces\">Namespaces</a> &#124;\n-<a href=\"#typedef-members\">Typedefs</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">patchDescriptor.h File Reference</div></div>\n+<a href=\"#namespaces\">Namespaces</a>  </div>\n+  <div class=\"headertitle\"><div class=\"title\">cpuD3D11VertexBuffer.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a01486_source.html\">../far/types.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a01492_source.html\">../sdc/types.h</a>&quot;</code><br />\n-<code>#include &lt;vector&gt;</code><br />\n+<code>#include &lt;cstddef&gt;</code><br />\n </div>\n <p><a href=\"a00773_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00973.html\">PatchDescriptor</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Describes the type of a patch.  <a href=\"a00973.html#details\">More...</a><br /></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01161.html\">CpuD3D11VertexBuffer</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Concrete vertex buffer class for Cpu subdivision and DirectX drawing.  <a href=\"a01161.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far</a></td></tr>\n+<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-</table><table class=\"memberdecls\">\n-<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"typedef-members\" name=\"typedef-members\"></a>\n-Typedefs</h2></td></tr>\n-<tr class=\"memitem:ad258c2d8f7871bc0d40cf3a9ded6e08a\" id=\"r_ad258c2d8f7871bc0d40cf3a9ded6e08a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef <a class=\"el\" href=\"a01353.html\">Vtr::ConstArray</a>&lt; <a class=\"el\" href=\"a00973.html\">PatchDescriptor</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html#ad258c2d8f7871bc0d40cf3a9ded6e08a\">ConstPatchDescriptorArray</a></td></tr>\n-<tr class=\"separator:ad258c2d8f7871bc0d40cf3a9ded6e08a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7f420b72a822828cfa8b0561c695a5cc.html\">far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00773.html\">patchDescriptor.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00773.html\">cpuD3D11VertexBuffer.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,29 +1,25 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bT_\by_\bp_\be_\bd_\be_\bf_\bs\n-patchDescriptor.h File Reference\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+cpuD3D11VertexBuffer.h File Reference\n #include \"../version.h\"\n-#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n-#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n-#include <vector>\n+#include <cstddef>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n-\u00a0       Describes the type of a patch. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bC_\bp_\bu_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+\u00a0       Concrete vertex buffer class for Cpu subdivision and DirectX drawing.\n+        _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br\n-\u00a0\n-T\bTy\byp\bpe\bed\bde\bef\bfs\bs\n-typedef _\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by< _\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br >\u00a0 _\bC_\bo_\bn_\bs_\bt_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\bA_\br_\br_\ba_\by\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bf_\ba_\br\n-    * _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bc_\bp_\bu_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00773.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00773.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,4 +1,3 @@\n var a00773 = [\n-    [\"PatchDescriptor\", \"a00973.html\", \"a00973\"],\n-    [\"ConstPatchDescriptorArray\", \"a00773.html#ad258c2d8f7871bc0d40cf3a9ded6e08a\", null]\n+    [\"CpuD3D11VertexBuffer\", \"a01161.html\", \"a01161\"]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00773_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00773_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/far/patchDescriptor.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/osd/cpuD3D11VertexBuffer.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,15 +92,15 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">patchDescriptor.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">cpuD3D11VertexBuffer.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00773.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2013 Pixar</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n@@ -119,226 +119,91 @@\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_FAR_PATCH_DESCRIPTOR_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_FAR_PATCH_DESCRIPTOR_H</span></div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_CPU_D3D11_VERTEX_BUFFER_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_CPU_D3D11_VERTEX_BUFFER_H</span></div>\n <div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n <div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../far/types.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../sdc/types.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span> </div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#include &lt;cstddef&gt;</span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span> </div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"keyword\">struct </span>ID3D11Buffer;</div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"keyword\">struct </span>ID3D11Device;</div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"keyword\">struct </span>ID3D11DeviceContext;</div>\n <div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span> </div>\n <div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n <div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n <div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span> </div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"keyword\">namespace </span>Far {</div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"keyword\">namespace </span>Osd {</div>\n <div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00044\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html\">   44</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a00973.html\">PatchDescriptor</a> {</div>\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span> </div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span> </div>\n <div class=\"foldopen\" id=\"foldopen00048\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">   48</a></span>    <span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">Type</a> {</div>\n-<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a3a0c2fc8a9cab2764314c3324a8a68b2\">   49</a></span>        <a class=\"code hl_enumvalue\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a3a0c2fc8a9cab2764314c3324a8a68b2\">NON_PATCH</a> = 0,     </div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span> </div>\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7adc0f401e772f1affa81071e70631abbf\">   51</a></span>        <a class=\"code hl_enumvalue\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7adc0f401e772f1affa81071e70631abbf\">POINTS</a>,            </div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a0b25cd15c2c168baf13ac0feb3980f40\">   52</a></span>        <a class=\"code hl_enumvalue\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a0b25cd15c2c168baf13ac0feb3980f40\">LINES</a>,             </div>\n+<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01161.html\">   48</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01161.html\">CpuD3D11VertexBuffer</a> {</div>\n+<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01161.html#a00d85863962f5871f802164e2fba7acc\">   51</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01161.html\">CpuD3D11VertexBuffer</a> * <a class=\"code hl_function\" href=\"a01161.html#a00d85863962f5871f802164e2fba7acc\">Create</a>(<span class=\"keywordtype\">int</span> numElements, <span class=\"keywordtype\">int</span> numVertices,</div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span>                                         ID3D11DeviceContext *deviceContext);</div>\n <div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span> </div>\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a27f9590991016e795e40b58f0bfeaf4c\">   54</a></span>        <a class=\"code hl_enumvalue\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a27f9590991016e795e40b58f0bfeaf4c\">QUADS</a>,             </div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a9113dda3d2c5d6ffce05d54a17ed5678\">   55</a></span>        <a class=\"code hl_enumvalue\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a9113dda3d2c5d6ffce05d54a17ed5678\">TRIANGLES</a>,         </div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01161.html#ae6f29f48db71c5ed845eb6abe085af91\">   55</a></span>    <span class=\"keyword\">virtual</span> <a class=\"code hl_function\" href=\"a01161.html#ae6f29f48db71c5ed845eb6abe085af91\">~CpuD3D11VertexBuffer</a>();</div>\n <div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span> </div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a61f7f1587bd5fe978d9ff3ece8d0624c\">   57</a></span>        <a class=\"code hl_enumvalue\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a61f7f1587bd5fe978d9ff3ece8d0624c\">LOOP</a>,              </div>\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span> </div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7afc488491175a6dac9e5881e363ad4c41\">   59</a></span>        <a class=\"code hl_enumvalue\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7afc488491175a6dac9e5881e363ad4c41\">REGULAR</a>,           </div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7ae765e809376e5557d348d3e991a7273e\">   60</a></span>        <a class=\"code hl_enumvalue\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7ae765e809376e5557d348d3e991a7273e\">GREGORY</a>,</div>\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7ac4ae10df9c13e44880ca7be341e44f2a\">   61</a></span>        <a class=\"code hl_enumvalue\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7ac4ae10df9c13e44880ca7be341e44f2a\">GREGORY_BOUNDARY</a>,</div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7ad7d1a88a40ae8938e07af7a7745054b0\">   62</a></span>        <a class=\"code hl_enumvalue\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7ad7d1a88a40ae8938e07af7a7745054b0\">GREGORY_BASIS</a>,</div>\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>        <a class=\"code hl_enumvalue\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a8bf2cfb939c78155cae7549621ea73f6\">GREGORY_TRIANGLE</a></div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a8bf2cfb939c78155cae7549621ea73f6\">   64</a></span>    };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span> </div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01161.html#a96601a091f8831823c4dd72b6c962f1b\">   59</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01161.html#a96601a091f8831823c4dd72b6c962f1b\">UpdateData</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <span class=\"keywordtype\">int</span> startVertex, <span class=\"keywordtype\">int</span> numVertices,</div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span>                    <span class=\"keywordtype\">void</span> *deviceContext = NULL);</div>\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span> </div>\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01161.html#a77cee40767fd4936f20a8f9d9d9ea625\">   63</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01161.html#a77cee40767fd4936f20a8f9d9d9ea625\">GetNumElements</a>() <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span> </div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01161.html#aaf4a32b8a414eff77000c584c2015cb7\">   66</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01161.html#aaf4a32b8a414eff77000c584c2015cb7\">GetNumVertices</a>() <span class=\"keyword\">const</span>;</div>\n <div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00069\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#af3f91a4a134cb2e5786990ec81f30d17\">   69</a></span>    <a class=\"code hl_function\" href=\"a00973.html#af3f91a4a134cb2e5786990ec81f30d17\">PatchDescriptor</a>() :</div>\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span>        _type(<a class=\"code hl_enumvalue\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a3a0c2fc8a9cab2764314c3324a8a68b2\">NON_PATCH</a>) { }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00073\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#a8e33c50700963e8dc99a5f598a32aaa3\">   73</a></span>    <a class=\"code hl_function\" href=\"a00973.html#a8e33c50700963e8dc99a5f598a32aaa3\">PatchDescriptor</a>(<span class=\"keywordtype\">int</span> type) :</div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span>        _type(type) { }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00077\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#a6c6de8b1c8212039f4702f70bb75cf02\">   77</a></span>    <a class=\"code hl_function\" href=\"a00973.html#a6c6de8b1c8212039f4702f70bb75cf02\">PatchDescriptor</a>( <a class=\"code hl_class\" href=\"a00973.html\">PatchDescriptor</a> <span class=\"keyword\">const</span> &amp; d ) :</div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span>        _type(d.<a class=\"code hl_function\" href=\"a00973.html#a485decc00facb0972f8775a8a20851fa\">GetType</a>()) { }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00081\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#a957e78d72208a5a9b394a2ea1d4d95d9\">   81</a></span>    <a class=\"code hl_class\" href=\"a00973.html\">PatchDescriptor</a> &amp; <a class=\"code hl_function\" href=\"a00973.html#a957e78d72208a5a9b394a2ea1d4d95d9\">operator=</a>( <a class=\"code hl_class\" href=\"a00973.html\">PatchDescriptor</a> <span class=\"keyword\">const</span> &amp; d ) {</div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>        _type = d.<a class=\"code hl_function\" href=\"a00973.html#a485decc00facb0972f8775a8a20851fa\">GetType</a>();</div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>        <span class=\"keywordflow\">return</span> *<span class=\"keyword\">this</span>;</div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00087\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#a485decc00facb0972f8775a8a20851fa\">   87</a></span>    <a class=\"code hl_enumeration\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">Type</a> <a class=\"code hl_function\" href=\"a00973.html#a485decc00facb0972f8775a8a20851fa\">GetType</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>        <span class=\"keywordflow\">return</span> (<a class=\"code hl_enumeration\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">Type</a>)_type;</div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00092\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#aa1c2bc6e9b4732d59a1c215f1ddfa224\">   92</a></span>    <span class=\"keyword\">static</span> <span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00973.html#aa1c2bc6e9b4732d59a1c215f1ddfa224\">IsAdaptive</a>(<a class=\"code hl_enumeration\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">Type</a> type) {</div>\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span>        <span class=\"keywordflow\">return</span> type &gt; <a class=\"code hl_enumvalue\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a9113dda3d2c5d6ffce05d54a17ed5678\">TRIANGLES</a>;</div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00097\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#a1d77cd9717f08d87e372cd7047d774d9\">   97</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00973.html#a1d77cd9717f08d87e372cd7047d774d9\">IsAdaptive</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a00973.html#a1d77cd9717f08d87e372cd7047d774d9\">IsAdaptive</a>( this-&gt;<a class=\"code hl_function\" href=\"a00973.html#a485decc00facb0972f8775a8a20851fa\">GetType</a>() );</div>\n-<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span> </div>\n-<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span>    <span class=\"keyword\">static</span> <span class=\"keyword\">inline</span> <span class=\"keywordtype\">short</span> <a class=\"code hl_function\" href=\"a00973.html#a65d29e074c001aa7817045e54403bfbb\">GetNumControlVertices</a>( <a class=\"code hl_enumeration\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">Type</a> t );</div>\n-<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span> </div>\n-<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span>    <span class=\"keyword\">static</span> <span class=\"keyword\">inline</span> <span class=\"keywordtype\">short</span> <a class=\"code hl_function\" href=\"a00973.html#a881bd183b2e330c490fcce5caf3ef433\">GetNumFVarControlVertices</a>( <a class=\"code hl_enumeration\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">Type</a> t );</div>\n-<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00110\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#a65d29e074c001aa7817045e54403bfbb\">  110</a></span>    <span class=\"keywordtype\">short</span> <a class=\"code hl_function\" href=\"a00973.html#a65d29e074c001aa7817045e54403bfbb\">GetNumControlVertices</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a00973.html#a65d29e074c001aa7817045e54403bfbb\">GetNumControlVertices</a>( this-&gt;<a class=\"code hl_function\" href=\"a00973.html#a485decc00facb0972f8775a8a20851fa\">GetType</a>() );</div>\n-<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00115\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#a881bd183b2e330c490fcce5caf3ef433\">  115</a></span>    <span class=\"keywordtype\">short</span> <a class=\"code hl_function\" href=\"a00973.html#a881bd183b2e330c490fcce5caf3ef433\">GetNumFVarControlVertices</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\">  116</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a00973.html#a881bd183b2e330c490fcce5caf3ef433\">GetNumFVarControlVertices</a>( this-&gt;<a class=\"code hl_function\" href=\"a00973.html#a485decc00facb0972f8775a8a20851fa\">GetType</a>() );</div>\n-<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\">  118</span> </div>\n-<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#a7f367dc8b49973c9c3571907a5c85749\">  120</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">short</span> <a class=\"code hl_function\" href=\"a00973.html#a7f367dc8b49973c9c3571907a5c85749\">GetRegularPatchSize</a>() { <span class=\"keywordflow\">return</span> 16; }</div>\n-<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\">  121</span> </div>\n-<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#ac81253df324c9b3e106783112457be15\">  123</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">short</span> <a class=\"code hl_function\" href=\"a00973.html#ac81253df324c9b3e106783112457be15\">GetGregoryPatchSize</a>() { <span class=\"keywordflow\">return</span> 4; }</div>\n-<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span> </div>\n-<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#a55ee40117ada82b868b00332c5d787cd\">  126</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">short</span> <a class=\"code hl_function\" href=\"a00973.html#a55ee40117ada82b868b00332c5d787cd\">GetGregoryBasisPatchSize</a>() { <span class=\"keywordflow\">return</span> 20; }</div>\n-<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span> </div>\n-<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span> </div>\n-<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#ae2b7537df7fd7add00efb4285fa356c2\">  131</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01353.html\">Vtr::ConstArray&lt;PatchDescriptor&gt;</a> <a class=\"code hl_function\" href=\"a00973.html#ae2b7537df7fd7add00efb4285fa356c2\">GetAdaptivePatchDescriptors</a>(<a class=\"code hl_enumeration\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833d\">Sdc::SchemeType</a> type);</div>\n-<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\">  132</span> </div>\n-<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\">  134</span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00973.html#abd9f5b68153db907eb7ccd0ed177dfdd\">operator &lt; </a>( <a class=\"code hl_class\" href=\"a00973.html\">PatchDescriptor</a> <span class=\"keyword\">const</span> other ) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\">  135</span> </div>\n-<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\">  137</span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00973.html#a70f2b01ccc2adc41113279d318210005\">operator == </a>( <a class=\"code hl_class\" href=\"a00973.html\">PatchDescriptor</a> <span class=\"keyword\">const</span> other ) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\">  138</span> </div>\n-<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\">  139</span>    <span class=\"comment\">// debug helper</span></div>\n-<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#acd0f82d3c49b8a5dd436d4003c44b713\">  140</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00973.html#acd0f82d3c49b8a5dd436d4003c44b713\">print</a>() <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\">  141</span> </div>\n-<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\">  143</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> _type;</div>\n-<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\">  144</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\">  145</span> </div>\n-<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00908.html#ad258c2d8f7871bc0d40cf3a9ded6e08a\">  146</a></span><span class=\"keyword\">typedef</span> <a class=\"code hl_class\" href=\"a01353.html\">Vtr::ConstArray&lt;PatchDescriptor&gt;</a> <a class=\"code hl_typedef\" href=\"a00908.html#ad258c2d8f7871bc0d40cf3a9ded6e08a\">ConstPatchDescriptorArray</a>;</div>\n-<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\">  147</span> </div>\n-<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\">  148</span><span class=\"comment\">// Returns the number of control vertices expected for a patch of this type</span></div>\n-<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\">  149</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">short</span></div>\n-<div class=\"foldopen\" id=\"foldopen00150\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#ae9baf121beab0244c3efe2a546c9664a\">  150</a></span><a class=\"code hl_function\" href=\"a00973.html#a65d29e074c001aa7817045e54403bfbb\">PatchDescriptor::GetNumControlVertices</a>( <a class=\"code hl_enumeration\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">Type</a> type ) {</div>\n-<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\">  151</span>    <span class=\"keywordflow\">switch</span> (type) {</div>\n-<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\">  152</span>        <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7afc488491175a6dac9e5881e363ad4c41\">REGULAR</a>           : <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a00973.html#a7f367dc8b49973c9c3571907a5c85749\">GetRegularPatchSize</a>();</div>\n-<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\">  153</span>        <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a61f7f1587bd5fe978d9ff3ece8d0624c\">LOOP</a>              : <span class=\"keywordflow\">return</span> 12;</div>\n-<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\">  154</span>        <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a27f9590991016e795e40b58f0bfeaf4c\">QUADS</a>             : <span class=\"keywordflow\">return</span> 4;</div>\n-<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\">  155</span>        <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7ae765e809376e5557d348d3e991a7273e\">GREGORY</a>           :</div>\n-<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\">  156</span>        <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7ac4ae10df9c13e44880ca7be341e44f2a\">GREGORY_BOUNDARY</a>  : <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a00973.html#ac81253df324c9b3e106783112457be15\">GetGregoryPatchSize</a>();</div>\n-<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\">  157</span>        <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7ad7d1a88a40ae8938e07af7a7745054b0\">GREGORY_BASIS</a>     : <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a00973.html#a55ee40117ada82b868b00332c5d787cd\">GetGregoryBasisPatchSize</a>();</div>\n-<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\">  158</span>        <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a8bf2cfb939c78155cae7549621ea73f6\">GREGORY_TRIANGLE</a>  : <span class=\"keywordflow\">return</span> 18;</div>\n-<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\">  159</span>        <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a9113dda3d2c5d6ffce05d54a17ed5678\">TRIANGLES</a>         : <span class=\"keywordflow\">return</span> 3;</div>\n-<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\">  160</span>        <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a0b25cd15c2c168baf13ac0feb3980f40\">LINES</a>             : <span class=\"keywordflow\">return</span> 2;</div>\n-<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\">  161</span>        <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7adc0f401e772f1affa81071e70631abbf\">POINTS</a>            : <span class=\"keywordflow\">return</span> 1;</div>\n-<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\">  162</span>        default : <span class=\"keywordflow\">return</span> -1;</div>\n-<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\">  163</span>    }</div>\n-<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\">  164</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\">  165</span> </div>\n-<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\">  166</span><span class=\"comment\">// Returns the number of face-varying control vertices expected for a patch of this type</span></div>\n-<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\">  167</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">short</span></div>\n-<div class=\"foldopen\" id=\"foldopen00168\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#adb4f93fd5ebd3f74793dd8c7bfa4d5f5\">  168</a></span><a class=\"code hl_function\" href=\"a00973.html#a881bd183b2e330c490fcce5caf3ef433\">PatchDescriptor::GetNumFVarControlVertices</a>( <a class=\"code hl_enumeration\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">Type</a> type ) {</div>\n-<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\">  169</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a00973.html#a65d29e074c001aa7817045e54403bfbb\">PatchDescriptor::GetNumControlVertices</a>(type);</div>\n-<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\">  170</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span> </div>\n-<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\">  172</span><span class=\"comment\">// Allows ordering of patches by type</span></div>\n-<div class=\"foldopen\" id=\"foldopen00173\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#abd9f5b68153db907eb7ccd0ed177dfdd\">  173</a></span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span></div>\n-<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\">  174</span><a class=\"code hl_function\" href=\"a00973.html#abd9f5b68153db907eb7ccd0ed177dfdd\">PatchDescriptor::operator &lt; </a>( <a class=\"code hl_class\" href=\"a00973.html\">PatchDescriptor</a> <span class=\"keyword\">const</span> other )<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\">  175</span>    <span class=\"keywordflow\">return</span> (_type &lt; other._type);</div>\n-<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\">  176</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span> </div>\n-<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\">  178</span><span class=\"comment\">// True if the descriptors are identical</span></div>\n-<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\">  179</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span></div>\n-<div class=\"foldopen\" id=\"foldopen00180\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#a70f2b01ccc2adc41113279d318210005\">  180</a></span><a class=\"code hl_function\" href=\"a00973.html#a70f2b01ccc2adc41113279d318210005\">PatchDescriptor::operator == </a>( <a class=\"code hl_class\" href=\"a00973.html\">PatchDescriptor</a> <span class=\"keyword\">const</span> other )<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\">  181</span>    <span class=\"keywordflow\">return</span> _type == other._type;</div>\n-<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\">  182</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\">  183</span> </div>\n-<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\">  184</span> </div>\n-<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\">  185</span> </div>\n-<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\">  186</span>} <span class=\"comment\">// end namespace Far</span></div>\n-<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\">  187</span> </div>\n-<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\">  188</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\">  189</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\">  190</span> </div>\n-<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\">  191</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\">  192</span> </div>\n-<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\">  193</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_FAR_PATCH_DESCRIPTOR_H */</span><span class=\"preprocessor\"></span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa00908_html_ad258c2d8f7871bc0d40cf3a9ded6e08a\"><div class=\"ttname\"><a href=\"a00908.html#ad258c2d8f7871bc0d40cf3a9ded6e08a\">OpenSubdiv::OPENSUBDIV_VERSION::Far::ConstPatchDescriptorArray</a></div><div class=\"ttdeci\">Vtr::ConstArray&lt; PatchDescriptor &gt; ConstPatchDescriptorArray</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00773_source.html#l00146\">patchDescriptor.h:146</a></div></div>\n-<div class=\"ttc\" id=\"aa00913_html_aa3daa2f428c6be2b1cb394f3a525833d\"><div class=\"ttname\"><a href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833d\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::SchemeType</a></div><div class=\"ttdeci\">SchemeType</div><div class=\"ttdoc\">Enumerated type for all subdivision schemes supported by OpenSubdiv.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01492_source.html#l00037\">types.h:37</a></div></div>\n-<div class=\"ttc\" id=\"aa00973_html\"><div class=\"ttname\"><a href=\"a00973.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor</a></div><div class=\"ttdoc\">Describes the type of a patch.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00773_source.html#l00044\">patchDescriptor.h:44</a></div></div>\n-<div class=\"ttc\" id=\"aa00973_html_a1d1cfd8ffb84e947f82999c682b666a7\"><div class=\"ttname\"><a href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::Type</a></div><div class=\"ttdeci\">Type</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00773_source.html#l00048\">patchDescriptor.h:48</a></div></div>\n-<div class=\"ttc\" id=\"aa00973_html_a1d1cfd8ffb84e947f82999c682b666a7a0b25cd15c2c168baf13ac0feb3980f40\"><div class=\"ttname\"><a href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a0b25cd15c2c168baf13ac0feb3980f40\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::LINES</a></div><div class=\"ttdeci\">@ LINES</div><div class=\"ttdoc\">lines (useful for cage drawing)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00773_source.html#l00052\">patchDescriptor.h:52</a></div></div>\n-<div class=\"ttc\" id=\"aa00973_html_a1d1cfd8ffb84e947f82999c682b666a7a27f9590991016e795e40b58f0bfeaf4c\"><div class=\"ttname\"><a href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a27f9590991016e795e40b58f0bfeaf4c\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::QUADS</a></div><div class=\"ttdeci\">@ QUADS</div><div class=\"ttdoc\">4-sided quadrilateral (bilinear)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00773_source.html#l00054\">patchDescriptor.h:54</a></div></div>\n-<div class=\"ttc\" id=\"aa00973_html_a1d1cfd8ffb84e947f82999c682b666a7a3a0c2fc8a9cab2764314c3324a8a68b2\"><div class=\"ttname\"><a href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a3a0c2fc8a9cab2764314c3324a8a68b2\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::NON_PATCH</a></div><div class=\"ttdeci\">@ NON_PATCH</div><div class=\"ttdoc\">undefined</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00773_source.html#l00049\">patchDescriptor.h:49</a></div></div>\n-<div class=\"ttc\" id=\"aa00973_html_a1d1cfd8ffb84e947f82999c682b666a7a61f7f1587bd5fe978d9ff3ece8d0624c\"><div class=\"ttname\"><a href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a61f7f1587bd5fe978d9ff3ece8d0624c\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::LOOP</a></div><div class=\"ttdeci\">@ LOOP</div><div class=\"ttdoc\">regular triangular patch for the Loop scheme</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00773_source.html#l00057\">patchDescriptor.h:57</a></div></div>\n-<div class=\"ttc\" id=\"aa00973_html_a1d1cfd8ffb84e947f82999c682b666a7a8bf2cfb939c78155cae7549621ea73f6\"><div class=\"ttname\"><a href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a8bf2cfb939c78155cae7549621ea73f6\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::GREGORY_TRIANGLE</a></div><div class=\"ttdeci\">@ GREGORY_TRIANGLE</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00773_source.html#l00064\">patchDescriptor.h:63</a></div></div>\n-<div class=\"ttc\" id=\"aa00973_html_a1d1cfd8ffb84e947f82999c682b666a7a9113dda3d2c5d6ffce05d54a17ed5678\"><div class=\"ttname\"><a href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a9113dda3d2c5d6ffce05d54a17ed5678\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::TRIANGLES</a></div><div class=\"ttdeci\">@ TRIANGLES</div><div class=\"ttdoc\">3-sided triangle</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00773_source.html#l00055\">patchDescriptor.h:55</a></div></div>\n-<div class=\"ttc\" id=\"aa00973_html_a1d1cfd8ffb84e947f82999c682b666a7ac4ae10df9c13e44880ca7be341e44f2a\"><div class=\"ttname\"><a href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7ac4ae10df9c13e44880ca7be341e44f2a\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::GREGORY_BOUNDARY</a></div><div class=\"ttdeci\">@ GREGORY_BOUNDARY</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00773_source.html#l00061\">patchDescriptor.h:61</a></div></div>\n-<div class=\"ttc\" id=\"aa00973_html_a1d1cfd8ffb84e947f82999c682b666a7ad7d1a88a40ae8938e07af7a7745054b0\"><div class=\"ttname\"><a href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7ad7d1a88a40ae8938e07af7a7745054b0\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::GREGORY_BASIS</a></div><div class=\"ttdeci\">@ GREGORY_BASIS</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00773_source.html#l00062\">patchDescriptor.h:62</a></div></div>\n-<div class=\"ttc\" id=\"aa00973_html_a1d1cfd8ffb84e947f82999c682b666a7adc0f401e772f1affa81071e70631abbf\"><div class=\"ttname\"><a href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7adc0f401e772f1affa81071e70631abbf\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::POINTS</a></div><div class=\"ttdeci\">@ POINTS</div><div class=\"ttdoc\">points (useful for cage drawing)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00773_source.html#l00051\">patchDescriptor.h:51</a></div></div>\n-<div class=\"ttc\" id=\"aa00973_html_a1d1cfd8ffb84e947f82999c682b666a7ae765e809376e5557d348d3e991a7273e\"><div class=\"ttname\"><a href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7ae765e809376e5557d348d3e991a7273e\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::GREGORY</a></div><div class=\"ttdeci\">@ GREGORY</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00773_source.html#l00060\">patchDescriptor.h:60</a></div></div>\n-<div class=\"ttc\" id=\"aa00973_html_a1d1cfd8ffb84e947f82999c682b666a7afc488491175a6dac9e5881e363ad4c41\"><div class=\"ttname\"><a href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7afc488491175a6dac9e5881e363ad4c41\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::REGULAR</a></div><div class=\"ttdeci\">@ REGULAR</div><div class=\"ttdoc\">regular B-Spline patch for the Catmark scheme</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00773_source.html#l00059\">patchDescriptor.h:59</a></div></div>\n-<div class=\"ttc\" id=\"aa00973_html_a1d77cd9717f08d87e372cd7047d774d9\"><div class=\"ttname\"><a href=\"a00973.html#a1d77cd9717f08d87e372cd7047d774d9\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::IsAdaptive</a></div><div class=\"ttdeci\">bool IsAdaptive() const</div><div class=\"ttdoc\">Returns true if the type is an adaptive patch.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00773_source.html#l00097\">patchDescriptor.h:97</a></div></div>\n-<div class=\"ttc\" id=\"aa00973_html_a485decc00facb0972f8775a8a20851fa\"><div class=\"ttname\"><a href=\"a00973.html#a485decc00facb0972f8775a8a20851fa\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::GetType</a></div><div class=\"ttdeci\">Type GetType() const</div><div class=\"ttdoc\">Returns the type of the patch.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00773_source.html#l00087\">patchDescriptor.h:87</a></div></div>\n-<div class=\"ttc\" id=\"aa00973_html_a55ee40117ada82b868b00332c5d787cd\"><div class=\"ttname\"><a href=\"a00973.html#a55ee40117ada82b868b00332c5d787cd\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::GetGregoryBasisPatchSize</a></div><div class=\"ttdeci\">static short GetGregoryBasisPatchSize()</div><div class=\"ttdoc\">Number of control vertices of Gregory patch basis (20)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00773_source.html#l00126\">patchDescriptor.h:126</a></div></div>\n-<div class=\"ttc\" id=\"aa00973_html_a65d29e074c001aa7817045e54403bfbb\"><div class=\"ttname\"><a href=\"a00973.html#a65d29e074c001aa7817045e54403bfbb\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::GetNumControlVertices</a></div><div class=\"ttdeci\">short GetNumControlVertices() const</div><div class=\"ttdoc\">Returns the number of control vertices expected for a patch of the type described.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00773_source.html#l00110\">patchDescriptor.h:110</a></div></div>\n-<div class=\"ttc\" id=\"aa00973_html_a6c6de8b1c8212039f4702f70bb75cf02\"><div class=\"ttname\"><a href=\"a00973.html#a6c6de8b1c8212039f4702f70bb75cf02\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::PatchDescriptor</a></div><div class=\"ttdeci\">PatchDescriptor(PatchDescriptor const &amp;d)</div><div class=\"ttdoc\">Copy Constructor.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00773_source.html#l00077\">patchDescriptor.h:77</a></div></div>\n-<div class=\"ttc\" id=\"aa00973_html_a70f2b01ccc2adc41113279d318210005\"><div class=\"ttname\"><a href=\"a00973.html#a70f2b01ccc2adc41113279d318210005\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::operator==</a></div><div class=\"ttdeci\">bool operator==(PatchDescriptor const other) const</div><div class=\"ttdoc\">True if the descriptors are identical.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00773_source.html#l00180\">patchDescriptor.h:180</a></div></div>\n-<div class=\"ttc\" id=\"aa00973_html_a7f367dc8b49973c9c3571907a5c85749\"><div class=\"ttname\"><a href=\"a00973.html#a7f367dc8b49973c9c3571907a5c85749\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::GetRegularPatchSize</a></div><div class=\"ttdeci\">static short GetRegularPatchSize()</div><div class=\"ttdoc\">Number of control vertices of Regular Patches in table.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00773_source.html#l00120\">patchDescriptor.h:120</a></div></div>\n-<div class=\"ttc\" id=\"aa00973_html_a881bd183b2e330c490fcce5caf3ef433\"><div class=\"ttname\"><a href=\"a00973.html#a881bd183b2e330c490fcce5caf3ef433\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::GetNumFVarControlVertices</a></div><div class=\"ttdeci\">short GetNumFVarControlVertices() const</div><div class=\"ttdoc\">Deprecated.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00773_source.html#l00115\">patchDescriptor.h:115</a></div></div>\n-<div class=\"ttc\" id=\"aa00973_html_a8e33c50700963e8dc99a5f598a32aaa3\"><div class=\"ttname\"><a href=\"a00973.html#a8e33c50700963e8dc99a5f598a32aaa3\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::PatchDescriptor</a></div><div class=\"ttdeci\">PatchDescriptor(int type)</div><div class=\"ttdoc\">Constructor.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00773_source.html#l00073\">patchDescriptor.h:73</a></div></div>\n-<div class=\"ttc\" id=\"aa00973_html_a957e78d72208a5a9b394a2ea1d4d95d9\"><div class=\"ttname\"><a href=\"a00973.html#a957e78d72208a5a9b394a2ea1d4d95d9\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::operator=</a></div><div class=\"ttdeci\">PatchDescriptor &amp; operator=(PatchDescriptor const &amp;d)</div><div class=\"ttdoc\">Assignment operator.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00773_source.html#l00081\">patchDescriptor.h:81</a></div></div>\n-<div class=\"ttc\" id=\"aa00973_html_aa1c2bc6e9b4732d59a1c215f1ddfa224\"><div class=\"ttname\"><a href=\"a00973.html#aa1c2bc6e9b4732d59a1c215f1ddfa224\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::IsAdaptive</a></div><div class=\"ttdeci\">static bool IsAdaptive(Type type)</div><div class=\"ttdoc\">Returns true if the type is an adaptive (non-linear) patch.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00773_source.html#l00092\">patchDescriptor.h:92</a></div></div>\n-<div class=\"ttc\" id=\"aa00973_html_abd9f5b68153db907eb7ccd0ed177dfdd\"><div class=\"ttname\"><a href=\"a00973.html#abd9f5b68153db907eb7ccd0ed177dfdd\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::operator&lt;</a></div><div class=\"ttdeci\">bool operator&lt;(PatchDescriptor const other) const</div><div class=\"ttdoc\">Allows ordering of patches by type.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00773_source.html#l00173\">patchDescriptor.h:174</a></div></div>\n-<div class=\"ttc\" id=\"aa00973_html_ac81253df324c9b3e106783112457be15\"><div class=\"ttname\"><a href=\"a00973.html#ac81253df324c9b3e106783112457be15\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::GetGregoryPatchSize</a></div><div class=\"ttdeci\">static short GetGregoryPatchSize()</div><div class=\"ttdoc\">Number of control vertices of Gregory (and Gregory Boundary) Patches in table.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00773_source.html#l00123\">patchDescriptor.h:123</a></div></div>\n-<div class=\"ttc\" id=\"aa00973_html_acd0f82d3c49b8a5dd436d4003c44b713\"><div class=\"ttname\"><a href=\"a00973.html#acd0f82d3c49b8a5dd436d4003c44b713\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::print</a></div><div class=\"ttdeci\">void print() const</div></div>\n-<div class=\"ttc\" id=\"aa00973_html_ae2b7537df7fd7add00efb4285fa356c2\"><div class=\"ttname\"><a href=\"a00973.html#ae2b7537df7fd7add00efb4285fa356c2\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::GetAdaptivePatchDescriptors</a></div><div class=\"ttdeci\">static Vtr::ConstArray&lt; PatchDescriptor &gt; GetAdaptivePatchDescriptors(Sdc::SchemeType type)</div><div class=\"ttdoc\">Returns a vector of all the legal patch descriptors for the given adaptive subdivision scheme.</div></div>\n-<div class=\"ttc\" id=\"aa00973_html_af3f91a4a134cb2e5786990ec81f30d17\"><div class=\"ttname\"><a href=\"a00973.html#af3f91a4a134cb2e5786990ec81f30d17\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::PatchDescriptor</a></div><div class=\"ttdeci\">PatchDescriptor()</div><div class=\"ttdoc\">Default constructor.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00773_source.html#l00069\">patchDescriptor.h:69</a></div></div>\n-<div class=\"ttc\" id=\"aa01353_html\"><div class=\"ttname\"><a href=\"a01353.html\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00683_source.html#l00053\">array.h:53</a></div></div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01161.html#adf7a9df5d3fc4d803bf5f1f374d90274\">   69</a></span>    <span class=\"keywordtype\">float</span> * <a class=\"code hl_function\" href=\"a01161.html#adf7a9df5d3fc4d803bf5f1f374d90274\">BindCpuBuffer</a>();</div>\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span> </div>\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01161.html#ac86f03cfaa5678c28ffce2b69e3fb5bc\">   72</a></span>    ID3D11Buffer *<a class=\"code hl_function\" href=\"a01161.html#ac86f03cfaa5678c28ffce2b69e3fb5bc\">BindD3D11Buffer</a>(ID3D11DeviceContext *deviceContext);</div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00075\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01161.html#aedcdb663cc4d3635fb5ba9149fb0d214\">   75</a></span>    ID3D11Buffer *<a class=\"code hl_function\" href=\"a01161.html#aedcdb663cc4d3635fb5ba9149fb0d214\">BindVBO</a>(ID3D11DeviceContext *deviceContext) {</div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01161.html#ac86f03cfaa5678c28ffce2b69e3fb5bc\">BindD3D11Buffer</a>(deviceContext);</div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span> </div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span><span class=\"keyword\">protected</span>:</div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01161.html#a632143bc1ec4fbbca2148b0e9e87bc08\">   81</a></span>    <a class=\"code hl_function\" href=\"a01161.html#a632143bc1ec4fbbca2148b0e9e87bc08\">CpuD3D11VertexBuffer</a>(<span class=\"keywordtype\">int</span> numElements, <span class=\"keywordtype\">int</span> numVertices);</div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span> </div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01161.html#ae61b4ed6cc7cb69826cd0804c2d972b7\">   83</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01161.html#ae61b4ed6cc7cb69826cd0804c2d972b7\">allocate</a>(ID3D11Device *device);</div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span> </div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>    <span class=\"keywordtype\">int</span> _numElements;</div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>    <span class=\"keywordtype\">int</span> _numVertices;</div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>    ID3D11Buffer *_d3d11Buffer;</div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>    <span class=\"keywordtype\">float</span> *_cpuBuffer;</div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span> </div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>}  <span class=\"comment\">// end namespace Osd</span></div>\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span> </div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>}  <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span> </div>\n+<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>}  <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span> </div>\n+<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_CPU_D3D11_VERTEX_BUFFER_H</span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa01161_html\"><div class=\"ttname\"><a href=\"a01161.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuD3D11VertexBuffer</a></div><div class=\"ttdoc\">Concrete vertex buffer class for Cpu subdivision and DirectX drawing.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00773_source.html#l00048\">cpuD3D11VertexBuffer.h:48</a></div></div>\n+<div class=\"ttc\" id=\"aa01161_html_a00d85863962f5871f802164e2fba7acc\"><div class=\"ttname\"><a href=\"a01161.html#a00d85863962f5871f802164e2fba7acc\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuD3D11VertexBuffer::Create</a></div><div class=\"ttdeci\">static CpuD3D11VertexBuffer * Create(int numElements, int numVertices, ID3D11DeviceContext *deviceContext)</div><div class=\"ttdoc\">Creator. Returns NULL if error.</div></div>\n+<div class=\"ttc\" id=\"aa01161_html_a632143bc1ec4fbbca2148b0e9e87bc08\"><div class=\"ttname\"><a href=\"a01161.html#a632143bc1ec4fbbca2148b0e9e87bc08\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuD3D11VertexBuffer::CpuD3D11VertexBuffer</a></div><div class=\"ttdeci\">CpuD3D11VertexBuffer(int numElements, int numVertices)</div><div class=\"ttdoc\">Constructor.</div></div>\n+<div class=\"ttc\" id=\"aa01161_html_a77cee40767fd4936f20a8f9d9d9ea625\"><div class=\"ttname\"><a href=\"a01161.html#a77cee40767fd4936f20a8f9d9d9ea625\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuD3D11VertexBuffer::GetNumElements</a></div><div class=\"ttdeci\">int GetNumElements() const</div><div class=\"ttdoc\">Returns how many elements defined in this vertex buffer.</div></div>\n+<div class=\"ttc\" id=\"aa01161_html_a96601a091f8831823c4dd72b6c962f1b\"><div class=\"ttname\"><a href=\"a01161.html#a96601a091f8831823c4dd72b6c962f1b\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuD3D11VertexBuffer::UpdateData</a></div><div class=\"ttdeci\">void UpdateData(const float *src, int startVertex, int numVertices, void *deviceContext=NULL)</div></div>\n+<div class=\"ttc\" id=\"aa01161_html_aaf4a32b8a414eff77000c584c2015cb7\"><div class=\"ttname\"><a href=\"a01161.html#aaf4a32b8a414eff77000c584c2015cb7\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuD3D11VertexBuffer::GetNumVertices</a></div><div class=\"ttdeci\">int GetNumVertices() const</div><div class=\"ttdoc\">Returns how many vertices allocated in this vertex buffer.</div></div>\n+<div class=\"ttc\" id=\"aa01161_html_ac86f03cfaa5678c28ffce2b69e3fb5bc\"><div class=\"ttname\"><a href=\"a01161.html#ac86f03cfaa5678c28ffce2b69e3fb5bc\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuD3D11VertexBuffer::BindD3D11Buffer</a></div><div class=\"ttdeci\">ID3D11Buffer * BindD3D11Buffer(ID3D11DeviceContext *deviceContext)</div><div class=\"ttdoc\">Returns the D3D11 buffer object.</div></div>\n+<div class=\"ttc\" id=\"aa01161_html_adf7a9df5d3fc4d803bf5f1f374d90274\"><div class=\"ttname\"><a href=\"a01161.html#adf7a9df5d3fc4d803bf5f1f374d90274\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuD3D11VertexBuffer::BindCpuBuffer</a></div><div class=\"ttdeci\">float * BindCpuBuffer()</div><div class=\"ttdoc\">Returns the address of CPU buffer.</div></div>\n+<div class=\"ttc\" id=\"aa01161_html_ae61b4ed6cc7cb69826cd0804c2d972b7\"><div class=\"ttname\"><a href=\"a01161.html#ae61b4ed6cc7cb69826cd0804c2d972b7\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuD3D11VertexBuffer::allocate</a></div><div class=\"ttdeci\">bool allocate(ID3D11Device *device)</div></div>\n+<div class=\"ttc\" id=\"aa01161_html_ae6f29f48db71c5ed845eb6abe085af91\"><div class=\"ttname\"><a href=\"a01161.html#ae6f29f48db71c5ed845eb6abe085af91\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuD3D11VertexBuffer::~CpuD3D11VertexBuffer</a></div><div class=\"ttdeci\">virtual ~CpuD3D11VertexBuffer()</div><div class=\"ttdoc\">Destructor.</div></div>\n+<div class=\"ttc\" id=\"aa01161_html_aedcdb663cc4d3635fb5ba9149fb0d214\"><div class=\"ttname\"><a href=\"a01161.html#aedcdb663cc4d3635fb5ba9149fb0d214\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuD3D11VertexBuffer::BindVBO</a></div><div class=\"ttdeci\">ID3D11Buffer * BindVBO(ID3D11DeviceContext *deviceContext)</div><div class=\"ttdoc\">Returns the D3D11 buffer object (for Osd::Mesh interface)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00773_source.html#l00075\">cpuD3D11VertexBuffer.h:75</a></div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7f420b72a822828cfa8b0561c695a5cc.html\">far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00773.html\">patchDescriptor.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00773.html\">cpuD3D11VertexBuffer.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,12 +1,12 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-patchDescriptor.h\n+cpuD3D11VertexBuffer.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n 2// Copyright 2013 Pixar\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n@@ -24,280 +24,105 @@\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n 24\n-25#ifndef OPENSUBDIV3_FAR_PATCH_DESCRIPTOR_H\n-26#define OPENSUBDIV3_FAR_PATCH_DESCRIPTOR_H\n+25#ifndef OPENSUBDIV3_OSD_CPU_D3D11_VERTEX_BUFFER_H\n+26#define OPENSUBDIV3_OSD_CPU_D3D11_VERTEX_BUFFER_H\n 27\n 28#include \"../version.h\"\n-29\n-30#include \"../far/types.h\"\n-31#include \"../sdc/types.h\"\n-32\n-33#include <vector>\n+29#include <cstddef>\n+30\n+31struct ID3D11Buffer;\n+32struct ID3D11Device;\n+33struct ID3D11DeviceContext;\n 34\n 35namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n 36namespace OPENSUBDIV_VERSION {\n 37\n-38namespace Far {\n+38namespace Osd {\n 39\n-_\b4_\b4class _\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br {\n-45\n-46public:\n-47\n-_\b4_\b8 enum _\bT_\by_\bp_\be {\n-_\b4_\b9 _\bN_\bO_\bN_\b__\bP_\bA_\bT_\bC_\bH = 0,\n-50\n-_\b5_\b1 _\bP_\bO_\bI_\bN_\bT_\bS,\n-_\b5_\b2 _\bL_\bI_\bN_\bE_\bS,\n+_\b4_\b8class _\bC_\bp_\bu_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br {\n+49public:\n+_\b5_\b1 static _\bC_\bp_\bu_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br * _\bC_\br_\be_\ba_\bt_\be(int numElements, int numVertices,\n+52 ID3D11DeviceContext *deviceContext);\n 53\n-_\b5_\b4 _\bQ_\bU_\bA_\bD_\bS,\n-_\b5_\b5 _\bT_\bR_\bI_\bA_\bN_\bG_\bL_\bE_\bS,\n+_\b5_\b5 virtual _\b~_\bC_\bp_\bu_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br();\n 56\n-_\b5_\b7 _\bL_\bO_\bO_\bP,\n-58\n-_\b5_\b9 _\bR_\bE_\bG_\bU_\bL_\bA_\bR,\n-_\b6_\b0 _\bG_\bR_\bE_\bG_\bO_\bR_\bY,\n-_\b6_\b1 _\bG_\bR_\bE_\bG_\bO_\bR_\bY_\b__\bB_\bO_\bU_\bN_\bD_\bA_\bR_\bY,\n-_\b6_\b2 _\bG_\bR_\bE_\bG_\bO_\bR_\bY_\b__\bB_\bA_\bS_\bI_\bS,\n-63 _\bG_\bR_\bE_\bG_\bO_\bR_\bY_\b__\bT_\bR_\bI_\bA_\bN_\bG_\bL_\bE\n-_\b6_\b4 };\n-65\n-66public:\n+_\b5_\b9 void _\bU_\bp_\bd_\ba_\bt_\be_\bD_\ba_\bt_\ba(const float *src, int startVertex, int numVertices,\n+60 void *deviceContext = NULL);\n+61\n+_\b6_\b3 int _\bG_\be_\bt_\bN_\bu_\bm_\bE_\bl_\be_\bm_\be_\bn_\bt_\bs() const;\n+64\n+_\b6_\b6 int _\bG_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs() const;\n 67\n-_\b6_\b9 _\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br() :\n-70 _type(_\bN_\bO_\bN_\b__\bP_\bA_\bT_\bC_\bH) { }\n-71\n-_\b7_\b3 _\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(int type) :\n-74 _type(type) { }\n-75\n-_\b7_\b7 _\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br( _\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const & d ) :\n-78 _type(d._\bG_\be_\bt_\bT_\by_\bp_\be()) { }\n-79\n-_\b8_\b1 _\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br & _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=( _\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const & d ) {\n-82 _type = d._\bG_\be_\bt_\bT_\by_\bp_\be();\n-83 return *this;\n-84 }\n-85\n-_\b8_\b7 _\bT_\by_\bp_\be _\bG_\be_\bt_\bT_\by_\bp_\be() const {\n-88 return (_\bT_\by_\bp_\be)_type;\n-89 }\n-90\n-_\b9_\b2 static inline bool _\bI_\bs_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be(_\bT_\by_\bp_\be type) {\n-93 return type > _\bT_\bR_\bI_\bA_\bN_\bG_\bL_\bE_\bS;\n-94 }\n-95\n-_\b9_\b7 bool _\bI_\bs_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be() const {\n-98 return _\bI_\bs_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be( this->_\bG_\be_\bt_\bT_\by_\bp_\be() );\n-99 }\n-100\n-103 static inline short _\bG_\be_\bt_\bN_\bu_\bm_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bV_\be_\br_\bt_\bi_\bc_\be_\bs( _\bT_\by_\bp_\be t );\n-104\n-106 static inline short _\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bV_\be_\br_\bt_\bi_\bc_\be_\bs( _\bT_\by_\bp_\be t );\n-107\n-_\b1_\b1_\b0 short _\bG_\be_\bt_\bN_\bu_\bm_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bV_\be_\br_\bt_\bi_\bc_\be_\bs() const {\n-111 return _\bG_\be_\bt_\bN_\bu_\bm_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bV_\be_\br_\bt_\bi_\bc_\be_\bs( this->_\bG_\be_\bt_\bT_\by_\bp_\be() );\n-112 }\n-113\n-_\b1_\b1_\b5 short _\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bV_\be_\br_\bt_\bi_\bc_\be_\bs() const {\n-116 return _\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bV_\be_\br_\bt_\bi_\bc_\be_\bs( this->_\bG_\be_\bt_\bT_\by_\bp_\be() );\n-117 }\n-118\n-_\b1_\b2_\b0 static short _\bG_\be_\bt_\bR_\be_\bg_\bu_\bl_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bS_\bi_\bz_\be() { return 16; }\n-121\n-_\b1_\b2_\b3 static short _\bG_\be_\bt_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bS_\bi_\bz_\be() { return 4; }\n-124\n-_\b1_\b2_\b6 static short _\bG_\be_\bt_\bG_\br_\be_\bg_\bo_\br_\by_\bB_\ba_\bs_\bi_\bs_\bP_\ba_\bt_\bc_\bh_\bS_\bi_\bz_\be() { return 20; }\n-127\n-128\n-_\b1_\b3_\b1 static _\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by_\b<_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b> _\bG_\be_\bt_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\bs(_\bS_\bd_\bc_\b:_\b:\n-_\bS_\bc_\bh_\be_\bm_\be_\bT_\by_\bp_\be type);\n-132\n-134 inline bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b _\b<_\b ( _\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const other ) const;\n-135\n-137 inline bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b _\b=_\b=_\b ( _\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const other ) const;\n-138\n-139 // debug helper\n-_\b1_\b4_\b0 void _\bp_\br_\bi_\bn_\bt() const;\n-141\n-142private:\n-143 unsigned int _type;\n-144};\n-145\n-_\b1_\b4_\b6typedef _\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by_\b<_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b> _\bC_\bo_\bn_\bs_\bt_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\bA_\br_\br_\ba_\by;\n-147\n-148// Returns the number of control vertices expected for a patch of this type\n-149inline short\n-_\b1_\b5_\b0_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bV_\be_\br_\bt_\bi_\bc_\be_\bs( _\bT_\by_\bp_\be type ) {\n-151 switch (type) {\n-152 case _\bR_\bE_\bG_\bU_\bL_\bA_\bR : return _\bG_\be_\bt_\bR_\be_\bg_\bu_\bl_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bS_\bi_\bz_\be();\n-153 case _\bL_\bO_\bO_\bP : return 12;\n-154 case _\bQ_\bU_\bA_\bD_\bS : return 4;\n-155 case _\bG_\bR_\bE_\bG_\bO_\bR_\bY :\n-156 case _\bG_\bR_\bE_\bG_\bO_\bR_\bY_\b__\bB_\bO_\bU_\bN_\bD_\bA_\bR_\bY : return _\bG_\be_\bt_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bS_\bi_\bz_\be();\n-157 case _\bG_\bR_\bE_\bG_\bO_\bR_\bY_\b__\bB_\bA_\bS_\bI_\bS : return _\bG_\be_\bt_\bG_\br_\be_\bg_\bo_\br_\by_\bB_\ba_\bs_\bi_\bs_\bP_\ba_\bt_\bc_\bh_\bS_\bi_\bz_\be();\n-158 case _\bG_\bR_\bE_\bG_\bO_\bR_\bY_\b__\bT_\bR_\bI_\bA_\bN_\bG_\bL_\bE : return 18;\n-159 case _\bT_\bR_\bI_\bA_\bN_\bG_\bL_\bE_\bS : return 3;\n-160 case _\bL_\bI_\bN_\bE_\bS : return 2;\n-161 case _\bP_\bO_\bI_\bN_\bT_\bS : return 1;\n-162 default : return -1;\n-163 }\n-164}\n-165\n-166// Returns the number of face-varying control vertices expected for a patch\n-of this type\n-167inline short\n-_\b1_\b6_\b8_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bV_\be_\br_\bt_\bi_\bc_\be_\bs( _\bT_\by_\bp_\be type ) {\n-169 return _\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bV_\be_\br_\bt_\bi_\bc_\be_\bs(type);\n-170}\n-171\n-172// Allows ordering of patches by type\n-_\b1_\b7_\b3inline bool\n-174_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b _\b<_\b ( _\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const other ) const {\n-175 return (_type < other._type);\n-176}\n-177\n-178// True if the descriptors are identical\n-179inline bool\n-_\b1_\b8_\b0_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b _\b=_\b=_\b ( _\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const other ) const {\n-181 return _type == other._type;\n-182}\n-183\n-184\n-185\n-186} // end namespace Far\n-187\n-188} // end namespace OPENSUBDIV_VERSION\n-189using namespace OPENSUBDIV_VERSION;\n-190\n-191} // end namespace OpenSubdiv\n-192\n-193#endif /* OPENSUBDIV3_FAR_PATCH_DESCRIPTOR_H */\n+_\b6_\b9 float * _\bB_\bi_\bn_\bd_\bC_\bp_\bu_\bB_\bu_\bf_\bf_\be_\br();\n+70\n+_\b7_\b2 ID3D11Buffer *_\bB_\bi_\bn_\bd_\bD_\b3_\bD_\b1_\b1_\bB_\bu_\bf_\bf_\be_\br(ID3D11DeviceContext *deviceContext);\n+73\n+_\b7_\b5 ID3D11Buffer *_\bB_\bi_\bn_\bd_\bV_\bB_\bO(ID3D11DeviceContext *deviceContext) {\n+76 return _\bB_\bi_\bn_\bd_\bD_\b3_\bD_\b1_\b1_\bB_\bu_\bf_\bf_\be_\br(deviceContext);\n+77 }\n+78\n+79protected:\n+_\b8_\b1 _\bC_\bp_\bu_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br(int numElements, int numVertices);\n+82\n+_\b8_\b3 bool _\ba_\bl_\bl_\bo_\bc_\ba_\bt_\be(ID3D11Device *device);\n+84\n+85private:\n+86 int _numElements;\n+87 int _numVertices;\n+88 ID3D11Buffer *_d3d11Buffer;\n+89 float *_cpuBuffer;\n+90};\n+91\n+92} // end namespace Osd\n+93\n+94} // end namespace OPENSUBDIV_VERSION\n+95using namespace OPENSUBDIV_VERSION;\n+96\n+97} // end namespace OpenSubdiv\n+98\n+99#endif // OPENSUBDIV3_OSD_CPU_D3D11_VERTEX_BUFFER_H\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\bA_\br_\br_\ba_\by\n-Vtr::ConstArray< PatchDescriptor > ConstPatchDescriptorArray\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b1_\b4_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\bT_\by_\bp_\be\n-SchemeType\n-Enumerated type for all subdivision schemes supported by OpenSubdiv.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b3_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n-Describes the type of a patch.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b4_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bT_\by_\bp_\be\n-Type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b4_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bL_\bI_\bN_\bE_\bS\n-@ LINES\n-lines (useful for cage drawing)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b5_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bQ_\bU_\bA_\bD_\bS\n-@ QUADS\n-4-sided quadrilateral (bilinear)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b5_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bN_\bO_\bN_\b__\bP_\bA_\bT_\bC_\bH\n-@ NON_PATCH\n-undefined\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b4_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bL_\bO_\bO_\bP\n-@ LOOP\n-regular triangular patch for the Loop scheme\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b5_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bG_\bR_\bE_\bG_\bO_\bR_\bY_\b__\bT_\bR_\bI_\bA_\bN_\bG_\bL_\bE\n-@ GREGORY_TRIANGLE\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b6_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bT_\bR_\bI_\bA_\bN_\bG_\bL_\bE_\bS\n-@ TRIANGLES\n-3-sided triangle\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b5_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bG_\bR_\bE_\bG_\bO_\bR_\bY_\b__\bB_\bO_\bU_\bN_\bD_\bA_\bR_\bY\n-@ GREGORY_BOUNDARY\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b6_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bG_\bR_\bE_\bG_\bO_\bR_\bY_\b__\bB_\bA_\bS_\bI_\bS\n-@ GREGORY_BASIS\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b6_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bP_\bO_\bI_\bN_\bT_\bS\n-@ POINTS\n-points (useful for cage drawing)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b5_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bG_\bR_\bE_\bG_\bO_\bR_\bY\n-@ GREGORY\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b6_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bR_\bE_\bG_\bU_\bL_\bA_\bR\n-@ REGULAR\n-regular B-Spline patch for the Catmark scheme\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b5_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bI_\bs_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be\n-bool IsAdaptive() const\n-Returns true if the type is an adaptive patch.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b9_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bG_\be_\bt_\bT_\by_\bp_\be\n-Type GetType() const\n-Returns the type of the patch.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b8_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bG_\be_\bt_\bG_\br_\be_\bg_\bo_\br_\by_\bB_\ba_\bs_\bi_\bs_\bP_\ba_\bt_\bc_\bh_\bS_\bi_\bz_\be\n-static short GetGregoryBasisPatchSize()\n-Number of control vertices of Gregory patch basis (20)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b1_\b2_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n-short GetNumControlVertices() const\n-Returns the number of control vertices expected for a patch of the type\n-described.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b1_\b1_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n-PatchDescriptor(PatchDescriptor const &d)\n-Copy Constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b7_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b=\n-bool operator==(PatchDescriptor const other) const\n-True if the descriptors are identical.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b1_\b8_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bG_\be_\bt_\bR_\be_\bg_\bu_\bl_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bS_\bi_\bz_\be\n-static short GetRegularPatchSize()\n-Number of control vertices of Regular Patches in table.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b1_\b2_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n-short GetNumFVarControlVertices() const\n-Deprecated.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b1_\b1_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n-PatchDescriptor(int type)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+Concrete vertex buffer class for Cpu subdivision and DirectX drawing.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh_\b:_\b4_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n+static CpuD3D11VertexBuffer * Create(int numElements, int numVertices,\n+ID3D11DeviceContext *deviceContext)\n+Creator. Returns NULL if error.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bC_\bp_\bu_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+CpuD3D11VertexBuffer(int numElements, int numVertices)\n Constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b7_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n-PatchDescriptor & operator=(PatchDescriptor const &d)\n-Assignment operator.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b8_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bI_\bs_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be\n-static bool IsAdaptive(Type type)\n-Returns true if the type is an adaptive (non-linear) patch.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b9_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<\n-bool operator<(PatchDescriptor const other) const\n-Allows ordering of patches by type.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b1_\b7_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bG_\be_\bt_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bS_\bi_\bz_\be\n-static short GetGregoryPatchSize()\n-Number of control vertices of Gregory (and Gregory Boundary) Patches in table.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b1_\b2_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bp_\br_\bi_\bn_\bt\n-void print() const\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:\n-_\bG_\be_\bt_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\bs\n-static Vtr::ConstArray< PatchDescriptor > GetAdaptivePatchDescriptors(Sdc::\n-SchemeType type)\n-Returns a vector of all the legal patch descriptors for the given adaptive\n-subdivision scheme.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n-PatchDescriptor()\n-Default constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b6_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b5_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bE_\bl_\be_\bm_\be_\bn_\bt_\bs\n+int GetNumElements() const\n+Returns how many elements defined in this vertex buffer.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bU_\bp_\bd_\ba_\bt_\be_\bD_\ba_\bt_\ba\n+void UpdateData(const float *src, int startVertex, int numVertices, void\n+*deviceContext=NULL)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n+int GetNumVertices() const\n+Returns how many vertices allocated in this vertex buffer.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bB_\bi_\bn_\bd_\bD_\b3_\bD_\b1_\b1_\bB_\bu_\bf_\bf_\be_\br\n+ID3D11Buffer * BindD3D11Buffer(ID3D11DeviceContext *deviceContext)\n+Returns the D3D11 buffer object.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bB_\bi_\bn_\bd_\bC_\bp_\bu_\bB_\bu_\bf_\bf_\be_\br\n+float * BindCpuBuffer()\n+Returns the address of CPU buffer.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\ba_\bl_\bl_\bo_\bc_\ba_\bt_\be\n+bool allocate(ID3D11Device *device)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:\n+_\b~_\bC_\bp_\bu_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+virtual ~CpuD3D11VertexBuffer()\n+Destructor.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bB_\bi_\bn_\bd_\bV_\bB_\bO\n+ID3D11Buffer * BindVBO(ID3D11DeviceContext *deviceContext)\n+Returns the D3D11 buffer object (for Osd::Mesh interface)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh_\b:_\b7_\b5\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bf_\ba_\br\n-    * _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bc_\bp_\bu_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00776.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00776.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/far/patchTableFactory.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/osd/mtlPatchTable.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -90,48 +90,45 @@\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> &#124;\n <a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">patchTableFactory.h File Reference</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">mtlPatchTable.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00764_source.html\">../far/topologyRefiner.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00761_source.html\">../far/patchTable.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00857_source.html\">../far/patchDescriptor.h</a>&quot;</code><br />\n+<code>#include &quot;../osd/nonCopyable.h&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a01489_source.html\">../osd/types.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00698_source.html\">../osd/mtlCommon.h</a>&quot;</code><br />\n </div>\n <p><a href=\"a00776_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01017.html\">PatchTableFactory</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Factory for constructing a <a class=\"el\" href=\"a00993.html\" title=\"Container for arrays of parametric patches.\">PatchTable</a> from a <a class=\"el\" href=\"a01121.html\" title=\"Stores topology data for a specified set of refinement options.\">TopologyRefiner</a>.  <a href=\"a01017.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01021.html\">PatchTableFactory::Options</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Public options for the <a class=\"el\" href=\"a00993.html\" title=\"Container for arrays of parametric patches.\">PatchTable</a> factory.  <a href=\"a01021.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01025.html\">PatchTableFactory::PatchFaceTag</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Obsolete internal struct not intended for public use &ndash; due to be deprecated.  <a href=\"a01025.html#details\">More...</a><br /></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01305.html\">MTLPatchTable</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7f420b72a822828cfa8b0561c695a5cc.html\">far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00776.html\">patchTableFactory.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00776.html\">mtlPatchTable.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,32 +1,28 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-patchTableFactory.h File Reference\n+mtlPatchTable.h File Reference\n #include \"../version.h\"\n-#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh\"\n-#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh\"\n+#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh\"\n+#include \"../osd/nonCopyable.h\"\n+#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n+#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bm_\bt_\bl_\bC_\bo_\bm_\bm_\bo_\bn_\b._\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n- class \u00a0 _\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by\n-\u00a0        Factory for constructing a _\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be from a _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n-\u00a0        Public options for the _\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be factory. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bF_\ba_\bc_\be_\bT_\ba_\bg\n-\u00a0        Obsolete internal struct not intended for public use \u2013 due to be\n-         deprecated. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br\n \u00a0\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n+\u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bf_\ba_\br\n-    * _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bm_\bt_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00776.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00776.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,5 +1,3 @@\n var a00776 = [\n-    [\"PatchTableFactory\", \"a01017.html\", \"a01017\"],\n-    [\"Options\", \"a01021.html\", \"a01021\"],\n-    [\"PatchFaceTag\", \"a01025.html\", \"a01025\"]\n+    [\"MTLPatchTable\", \"a01305.html\", \"a01305\"]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00776_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00776_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/far/patchTableFactory.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/osd/mtlPatchTable.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,15 +92,15 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">patchTableFactory.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">mtlPatchTable.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00776.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2013 Pixar</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n@@ -119,249 +119,123 @@\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_FAR_PATCH_TABLE_FACTORY_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_FAR_PATCH_TABLE_FACTORY_H</span></div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_MTL_PATCH_TABLE_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_MTL_PATCH_TABLE_H</span></div>\n <div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n <div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../far/topologyRefiner.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../far/patchTable.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span> </div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span> </div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"keyword\">namespace </span>Far {</div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00040\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01017.html\">   40</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01017.html\">PatchTableFactory</a> {</div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00045\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html\">   45</a></span>    <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01021.html\">Options</a> {</div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00055\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535\">   55</a></span>        <span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535\">EndCapType</a> {</div>\n-<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535a39a0bc0d1c407b2b849c2bfaba366b22\">   56</a></span>            <a class=\"code hl_enumvalue\" href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535a39a0bc0d1c407b2b849c2bfaba366b22\">ENDCAP_NONE</a> = 0,        </div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535a90f0e9a2c992889cefdf1db954f9d98f\">   57</a></span>            <a class=\"code hl_enumvalue\" href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535a90f0e9a2c992889cefdf1db954f9d98f\">ENDCAP_BILINEAR_BASIS</a>,  </div>\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535ac3fc1d183b0bdfbc7bf1cce613c4ff04\">   58</a></span>            <a class=\"code hl_enumvalue\" href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535ac3fc1d183b0bdfbc7bf1cce613c4ff04\">ENDCAP_BSPLINE_BASIS</a>,   </div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535a2e89c8e5ac21dbd024ec902de51566b0\">   59</a></span>            <a class=\"code hl_enumvalue\" href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535a2e89c8e5ac21dbd024ec902de51566b0\">ENDCAP_GREGORY_BASIS</a>,   </div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span>            <a class=\"code hl_enumvalue\" href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535a0c0d3d9e480d64f20f1b32d599c88aa5\">ENDCAP_LEGACY_GREGORY</a>   </div>\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535a0c0d3d9e480d64f20f1b32d599c88aa5\">   61</a></span>        };</div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#include &quot;../far/patchDescriptor.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../osd/nonCopyable.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../osd/types.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &quot;../osd/mtlCommon.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">@protocol </span>MTLDevice;</div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">@protocol </span>MTLBuffer;</div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span> </div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"keyword\">namespace </span>Far {</div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span>    <span class=\"keyword\">class </span>PatchTable;</div>\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span>};</div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span> </div>\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span><span class=\"keyword\">namespace </span>Osd {</div>\n+<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00046\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01305.html\">   46</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01305.html\">MTLPatchTable</a> : <span class=\"keyword\">private</span> NonCopyable&lt;MTLPatchTable&gt; {</div>\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01305.html#aa00654dc321a5c8dc370a900b0f404da\">   48</a></span>    <span class=\"keyword\">typedef</span> id&lt;MTLBuffer&gt; <a class=\"code hl_typedef\" href=\"a01305.html#aa00654dc321a5c8dc370a900b0f404da\">VertexBufferBinding</a>;</div>\n+<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span> </div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01305.html#a3f197c2ae3862390d72e7443a2525187\">   50</a></span>    <a class=\"code hl_function\" href=\"a01305.html#a3f197c2ae3862390d72e7443a2525187\">MTLPatchTable</a>();</div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01305.html#ad608acc5d9ea38f82548f2e0e234cf4e\">   51</a></span>    <a class=\"code hl_function\" href=\"a01305.html#ad608acc5d9ea38f82548f2e0e234cf4e\">~MTLPatchTable</a>();</div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span> </div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span>    <span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00054\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01305.html#ad54c4e07ca48004585448396b980f0d9\">   54</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01305.html\">MTLPatchTable</a> *<a class=\"code hl_function\" href=\"a01305.html#ad54c4e07ca48004585448396b980f0d9\">Create</a>(<a class=\"code hl_class\" href=\"a00993.html\">Far::PatchTable</a> <span class=\"keyword\">const</span> *farPatchTable, DEVICE_CONTEXT context)</div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span>    {</div>\n+<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01305.html#ad54c4e07ca48004585448396b980f0d9\">Create</a>(farPatchTable, context);</div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span> </div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01305.html#a24c34d2b403d22f2d3bcfdf6f5005ee4\">   59</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01305.html\">MTLPatchTable</a> *<a class=\"code hl_function\" href=\"a01305.html#a24c34d2b403d22f2d3bcfdf6f5005ee4\">Create</a>(<a class=\"code hl_class\" href=\"a00993.html\">Far::PatchTable</a> <span class=\"keyword\">const</span> *farPatchTable, <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context);</div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span> </div>\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01305.html#a18e3d09b0c7b7552f8e419e36788166a\">   61</a></span>    <a class=\"code hl_typedef\" href=\"a00912.html#a98098cd229f60d2397d84a76fe654a31\">PatchArrayVector</a> <span class=\"keyword\">const</span> &amp;<a class=\"code hl_function\" href=\"a01305.html#a18e3d09b0c7b7552f8e419e36788166a\">GetPatchArrays</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01305.html#a5dfb6b58580f2dec58e9b5bfdb4ed9f1\">_patchArrays</a>; }</div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01305.html#a4c33a50d79c6e811fb78461ce00c6310\">   62</a></span>    id&lt;MTLBuffer&gt; <a class=\"code hl_function\" href=\"a01305.html#a4c33a50d79c6e811fb78461ce00c6310\">GetPatchIndexBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01305.html#af3b671a26ce6aaead2c7a2633b7cd268\">_indexBuffer</a>; }</div>\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01305.html#a445098a6db6b14888b3a8bac35967e52\">   63</a></span>    id&lt;MTLBuffer&gt; <a class=\"code hl_function\" href=\"a01305.html#a445098a6db6b14888b3a8bac35967e52\">GetPatchParamBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01305.html#ac8b76e9d03149033d838a528d667e193\">_patchParamBuffer</a>; }</div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span> </div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01305.html#aec45672f51f456fea341d644bcf16434\">   65</a></span>    <a class=\"code hl_typedef\" href=\"a00912.html#a98098cd229f60d2397d84a76fe654a31\">PatchArrayVector</a> <span class=\"keyword\">const</span> &amp;<a class=\"code hl_function\" href=\"a01305.html#aec45672f51f456fea341d644bcf16434\">GetVaryingPatchArrays</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01305.html#acd99a0391b3b04586b11051fd0f7ed10\">_varyingPatchArrays</a>; }</div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01305.html#a2ad5c87b20355961bc623d1c1ece01f8\">   66</a></span>    id&lt;MTLBuffer&gt; <a class=\"code hl_function\" href=\"a01305.html#a2ad5c87b20355961bc623d1c1ece01f8\">GetVaryingPatchIndexBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01305.html#ab65dac5d88eb7b4e1ccc2003f352e802\">_varyingPatchIndexBuffer</a>; }</div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span> </div>\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01305.html#aa9be824a572029f3ec1e0c0d6cfecd77\">   68</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01305.html#aa9be824a572029f3ec1e0c0d6cfecd77\">GetNumFVarChannels</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (<span class=\"keywordtype\">int</span>)<a class=\"code hl_variable\" href=\"a01305.html#abce41960eb6bedc82cbf0cb711ea66da\">_fvarPatchArrays</a>.size(); }</div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01305.html#ab4ae92f2c242d25fa0480d0307e0d9e5\">   69</a></span>    <a class=\"code hl_typedef\" href=\"a00912.html#a98098cd229f60d2397d84a76fe654a31\">PatchArrayVector</a> <span class=\"keyword\">const</span> &amp;<a class=\"code hl_function\" href=\"a01305.html#ab4ae92f2c242d25fa0480d0307e0d9e5\">GetFVarPatchArrays</a>(<span class=\"keywordtype\">int</span> fvarChannel = 0)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01305.html#abce41960eb6bedc82cbf0cb711ea66da\">_fvarPatchArrays</a>[fvarChannel]; }</div>\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01305.html#ae4e03248b9615425f7719fde5890796c\">   70</a></span>    id&lt;MTLBuffer&gt; <a class=\"code hl_function\" href=\"a01305.html#ae4e03248b9615425f7719fde5890796c\">GetFVarPatchIndexBuffer</a>(<span class=\"keywordtype\">int</span> fvarChannel = 0)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01305.html#a39ae7f640465cdd116c1f87b81308fb5\">_fvarIndexBuffers</a>[fvarChannel]; }</div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01305.html#a3d306565eb0af09fa64cabc6d72c6755\">   71</a></span>    id&lt;MTLBuffer&gt; <a class=\"code hl_function\" href=\"a01305.html#a3d306565eb0af09fa64cabc6d72c6755\">GetFVarPatchParamBuffer</a>(<span class=\"keywordtype\">int</span> fvarChannel = 0)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01305.html#abb2abbc1ce950284fa16f51583d0ab92\">_fvarParamBuffers</a>[fvarChannel]; }</div>\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span> </div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span><span class=\"keyword\">protected</span>:</div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01305.html#a2246e8e016510f81c7ac9ead81d7c6eb\">   74</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01305.html#a2246e8e016510f81c7ac9ead81d7c6eb\">allocate</a>(<a class=\"code hl_class\" href=\"a00993.html\">Far::PatchTable</a> <span class=\"keyword\">const</span> *farPatchTable, <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context);</div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span> </div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01305.html#a5dfb6b58580f2dec58e9b5bfdb4ed9f1\">   76</a></span>    <a class=\"code hl_typedef\" href=\"a00912.html#a98098cd229f60d2397d84a76fe654a31\">PatchArrayVector</a> <a class=\"code hl_variable\" href=\"a01305.html#a5dfb6b58580f2dec58e9b5bfdb4ed9f1\">_patchArrays</a>;</div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span> </div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01305.html#af3b671a26ce6aaead2c7a2633b7cd268\">   78</a></span>    id&lt;MTLBuffer&gt; <a class=\"code hl_variable\" href=\"a01305.html#af3b671a26ce6aaead2c7a2633b7cd268\">_indexBuffer</a>;</div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01305.html#ac8b76e9d03149033d838a528d667e193\">   79</a></span>    id&lt;MTLBuffer&gt; <a class=\"code hl_variable\" href=\"a01305.html#ac8b76e9d03149033d838a528d667e193\">_patchParamBuffer</a>;</div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span> </div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01305.html#acd99a0391b3b04586b11051fd0f7ed10\">   81</a></span>    <a class=\"code hl_typedef\" href=\"a00912.html#a98098cd229f60d2397d84a76fe654a31\">PatchArrayVector</a> <a class=\"code hl_variable\" href=\"a01305.html#acd99a0391b3b04586b11051fd0f7ed10\">_varyingPatchArrays</a>;</div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span> </div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01305.html#ab65dac5d88eb7b4e1ccc2003f352e802\">   83</a></span>    id&lt;MTLBuffer&gt; <a class=\"code hl_variable\" href=\"a01305.html#ab65dac5d88eb7b4e1ccc2003f352e802\">_varyingPatchIndexBuffer</a>;</div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span> </div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01305.html#abce41960eb6bedc82cbf0cb711ea66da\">   85</a></span>    std::vector&lt;PatchArrayVector&gt; <a class=\"code hl_variable\" href=\"a01305.html#abce41960eb6bedc82cbf0cb711ea66da\">_fvarPatchArrays</a>;</div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01305.html#a39ae7f640465cdd116c1f87b81308fb5\">   86</a></span>    std::vector&lt;id&lt;MTLBuffer&gt;&gt; <a class=\"code hl_variable\" href=\"a01305.html#a39ae7f640465cdd116c1f87b81308fb5\">_fvarIndexBuffers</a>;</div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01305.html#abb2abbc1ce950284fa16f51583d0ab92\">   87</a></span>    std::vector&lt;id&lt;MTLBuffer&gt;&gt; <a class=\"code hl_variable\" href=\"a01305.html#abb2abbc1ce950284fa16f51583d0ab92\">_fvarParamBuffers</a>;</div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>};</div>\n </div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00063\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#afe7ba5a3a3e0f7b63f27fc527f472528\">   63</a></span>        <a class=\"code hl_function\" href=\"a01021.html#afe7ba5a3a3e0f7b63f27fc527f472528\">Options</a>(<span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> maxIsolation=10) :</div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span>             <a class=\"code hl_variable\" href=\"a01021.html#a8d3c24dcc455474a3a9498c6b6378cc4\">generateAllLevels</a>(false),</div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span>             <a class=\"code hl_variable\" href=\"a01021.html#a9e322b8f2ad57dd369956f27113b7a8a\">includeBaseLevelIndices</a>(true),</div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span>             <a class=\"code hl_variable\" href=\"a01021.html#a7551f187d9f4a70b27faed7597d96e4f\">includeFVarBaseLevelIndices</a>(false),</div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span>             <a class=\"code hl_variable\" href=\"a01021.html#ae0427ab3b81525a0dfa5d2b510a06461\">triangulateQuads</a>(false),</div>\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span>             <a class=\"code hl_variable\" href=\"a01021.html#a5834971432c649e28d5a0186f79a60d5\">useSingleCreasePatch</a>(false),</div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span>             <a class=\"code hl_variable\" href=\"a01021.html#a5eba866952b7be15b065060b1f5a81da\">useInfSharpPatch</a>(false),</div>\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span>             <a class=\"code hl_variable\" href=\"a01021.html#a18b47b281350d10784fd4917be9019f1\">maxIsolationLevel</a>(maxIsolation &amp; 0xf),</div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>             <a class=\"code hl_variable\" href=\"a01021.html#a497f7c6fe6944842dd54758e9ec5a8e2\">endCapType</a>(<a class=\"code hl_enumvalue\" href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535a2e89c8e5ac21dbd024ec902de51566b0\">ENDCAP_GREGORY_BASIS</a>),</div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>             <a class=\"code hl_variable\" href=\"a01021.html#a113fa8ce12150940afe0215c702cc89d\">shareEndCapPatchPoints</a>(true),</div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span>             <a class=\"code hl_variable\" href=\"a01021.html#a039b27c797bb2b4be4af66798787081e\">generateVaryingTables</a>(true),</div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span>             <a class=\"code hl_variable\" href=\"a01021.html#a728df1785179cd0768a4971b8c34708a\">generateVaryingLocalPoints</a>(true),</div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span>             <a class=\"code hl_variable\" href=\"a01021.html#a97f60d840c3d2830f0c4680783a334e8\">generateFVarTables</a>(false),</div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span>             <a class=\"code hl_variable\" href=\"a01021.html#a91ce5fe0ce9b9ec6c5afcfb6e1ccaa40\">patchPrecisionDouble</a>(false),</div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span>             <a class=\"code hl_variable\" href=\"a01021.html#a3f663e5c2b7e65976b6521c21ea59130\">fvarPatchPrecisionDouble</a>(false),</div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span>             <a class=\"code hl_variable\" href=\"a01021.html#a2a03b250662eec5d267daf6692e4b341\">generateFVarLegacyLinearPatches</a>(true),</div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>             <a class=\"code hl_variable\" href=\"a01021.html#a0fe3eeef4b5b332c7747a940db43cd8d\">generateLegacySharpCornerPatches</a>(true),</div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span>             <a class=\"code hl_variable\" href=\"a01021.html#ad17511fd9b0cea1b15b6bc31c0fc3e80\">numFVarChannels</a>(-1),</div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>             <a class=\"code hl_variable\" href=\"a01021.html#a4c1ba8119a16ea0682a870ee7a8282a5\">fvarChannelIndices</a>(0)</div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>        { }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span> </div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#a1f59869b65e626aebb332538b92759ec\">   85</a></span>        <a class=\"code hl_enumeration\" href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535\">EndCapType</a> <a class=\"code hl_function\" href=\"a01021.html#a1f59869b65e626aebb332538b92759ec\">GetEndCapType</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (<a class=\"code hl_enumeration\" href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535\">EndCapType</a>)<a class=\"code hl_variable\" href=\"a01021.html#a497f7c6fe6944842dd54758e9ec5a8e2\">endCapType</a>; }</div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span> </div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#a6a9e4615ca58b7206de550f249c5e37c\">   88</a></span>        <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01021.html#a6a9e4615ca58b7206de550f249c5e37c\">SetEndCapType</a>(<a class=\"code hl_enumeration\" href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535\">EndCapType</a> e) { <a class=\"code hl_variable\" href=\"a01021.html#a497f7c6fe6944842dd54758e9ec5a8e2\">endCapType</a> = e &amp; 0x7; }</div>\n <div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span> </div>\n-<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#a425e9cd3218a02afffaf0289f1a9c6fd\">   91</a></span>        <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01021.html#a425e9cd3218a02afffaf0289f1a9c6fd\">SetMaxIsolationLevel</a>(<span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> level) { <a class=\"code hl_variable\" href=\"a01021.html#a18b47b281350d10784fd4917be9019f1\">maxIsolationLevel</a> = level &amp; 0xf; }</div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span> </div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#a2d5bc9d7d16144b5cdc70381843defa9\">   94</a></span>        <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt; <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01021.html#a2d5bc9d7d16144b5cdc70381843defa9\">SetPatchPrecision</a>();</div>\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span> </div>\n-<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#aa6530a2eb5204da33e7c02f8fcdcbac2\">   97</a></span>        <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt; <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01021.html#aa6530a2eb5204da33e7c02f8fcdcbac2\">SetFVarPatchPrecision</a>();</div>\n-<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00100\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#a14138864bf072e99898a8d1a0c074468\">  100</a></span>        <a class=\"code hl_struct\" href=\"a01129.html\">TopologyRefiner::AdaptiveOptions</a> <a class=\"code hl_function\" href=\"a01021.html#a14138864bf072e99898a8d1a0c074468\">GetRefineAdaptiveOptions</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span>            <a class=\"code hl_struct\" href=\"a01129.html\">TopologyRefiner::AdaptiveOptions</a> adaptiveOptions(<a class=\"code hl_variable\" href=\"a01021.html#a18b47b281350d10784fd4917be9019f1\">maxIsolationLevel</a>);</div>\n-<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span> </div>\n-<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span>            adaptiveOptions.<a class=\"code hl_variable\" href=\"a01129.html#a5eba866952b7be15b065060b1f5a81da\">useInfSharpPatch</a>     = <a class=\"code hl_variable\" href=\"a01021.html#a5eba866952b7be15b065060b1f5a81da\">useInfSharpPatch</a>;</div>\n-<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span>            adaptiveOptions.<a class=\"code hl_variable\" href=\"a01129.html#a5834971432c649e28d5a0186f79a60d5\">useSingleCreasePatch</a> = <a class=\"code hl_variable\" href=\"a01021.html#a5834971432c649e28d5a0186f79a60d5\">useSingleCreasePatch</a>;</div>\n-<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span>            adaptiveOptions.<a class=\"code hl_variable\" href=\"a01129.html#a74c90a5955fcad9c95d4c18346f7c312\">considerFVarChannels</a> = <a class=\"code hl_variable\" href=\"a01021.html#a97f60d840c3d2830f0c4680783a334e8\">generateFVarTables</a> &amp;&amp;</div>\n-<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span>                                                  !<a class=\"code hl_variable\" href=\"a01021.html#a2a03b250662eec5d267daf6692e4b341\">generateFVarLegacyLinearPatches</a>;</div>\n-<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span>            <span class=\"keywordflow\">return</span> adaptiveOptions;</div>\n-<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span>        }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span> </div>\n-<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#a8d3c24dcc455474a3a9498c6b6378cc4\">  110</a></span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"a01021.html#a8d3c24dcc455474a3a9498c6b6378cc4\">generateAllLevels</a>           : 1, </div>\n-<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#a9e322b8f2ad57dd369956f27113b7a8a\">  111</a></span>                     <a class=\"code hl_variable\" href=\"a01021.html#a9e322b8f2ad57dd369956f27113b7a8a\">includeBaseLevelIndices</a>     : 1, </div>\n-<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#a7551f187d9f4a70b27faed7597d96e4f\">  112</a></span>                     <a class=\"code hl_variable\" href=\"a01021.html#a7551f187d9f4a70b27faed7597d96e4f\">includeFVarBaseLevelIndices</a> : 1, </div>\n-<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#ae0427ab3b81525a0dfa5d2b510a06461\">  113</a></span>                     <a class=\"code hl_variable\" href=\"a01021.html#ae0427ab3b81525a0dfa5d2b510a06461\">triangulateQuads</a>            : 1, </div>\n-<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span> </div>\n-<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#a5834971432c649e28d5a0186f79a60d5\">  115</a></span>                     <a class=\"code hl_variable\" href=\"a01021.html#a5834971432c649e28d5a0186f79a60d5\">useSingleCreasePatch</a> : 1, </div>\n-<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#a5eba866952b7be15b065060b1f5a81da\">  116</a></span>                     <a class=\"code hl_variable\" href=\"a01021.html#a5eba866952b7be15b065060b1f5a81da\">useInfSharpPatch</a>     : 1, </div>\n-<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#a18b47b281350d10784fd4917be9019f1\">  117</a></span>                     <a class=\"code hl_variable\" href=\"a01021.html#a18b47b281350d10784fd4917be9019f1\">maxIsolationLevel</a>    : 4, </div>\n-<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\">  118</span> </div>\n-<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span>                     <span class=\"comment\">// end-capping</span></div>\n-<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#a497f7c6fe6944842dd54758e9ec5a8e2\">  120</a></span>                     <a class=\"code hl_variable\" href=\"a01021.html#a497f7c6fe6944842dd54758e9ec5a8e2\">endCapType</a>              : 3, </div>\n-<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#a113fa8ce12150940afe0215c702cc89d\">  121</a></span>                     <a class=\"code hl_variable\" href=\"a01021.html#a113fa8ce12150940afe0215c702cc89d\">shareEndCapPatchPoints</a>  : 1, </div>\n-<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span> </div>\n-<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span>                     <span class=\"comment\">// varying</span></div>\n-<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#a039b27c797bb2b4be4af66798787081e\">  125</a></span>                     <a class=\"code hl_variable\" href=\"a01021.html#a039b27c797bb2b4be4af66798787081e\">generateVaryingTables</a>      : 1, </div>\n-<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#a728df1785179cd0768a4971b8c34708a\">  126</a></span>                     <a class=\"code hl_variable\" href=\"a01021.html#a728df1785179cd0768a4971b8c34708a\">generateVaryingLocalPoints</a> : 1, </div>\n-<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span> </div>\n-<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span>                     <span class=\"comment\">// face-varying</span></div>\n-<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#a97f60d840c3d2830f0c4680783a334e8\">  129</a></span>                     <a class=\"code hl_variable\" href=\"a01021.html#a97f60d840c3d2830f0c4680783a334e8\">generateFVarTables</a>  : 1, </div>\n-<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span> </div>\n-<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\">  131</span>                     <span class=\"comment\">// precision</span></div>\n-<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#a91ce5fe0ce9b9ec6c5afcfb6e1ccaa40\">  132</a></span>                     <a class=\"code hl_variable\" href=\"a01021.html#a91ce5fe0ce9b9ec6c5afcfb6e1ccaa40\">patchPrecisionDouble</a>     : 1, </div>\n-<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#a3f663e5c2b7e65976b6521c21ea59130\">  133</a></span>                     <a class=\"code hl_variable\" href=\"a01021.html#a3f663e5c2b7e65976b6521c21ea59130\">fvarPatchPrecisionDouble</a> : 1, </div>\n-<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\">  134</span> </div>\n-<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\">  135</span>                     <span class=\"comment\">// legacy behaviors (default to true)</span></div>\n-<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#a2a03b250662eec5d267daf6692e4b341\">  136</a></span>                     <a class=\"code hl_variable\" href=\"a01021.html#a2a03b250662eec5d267daf6692e4b341\">generateFVarLegacyLinearPatches</a>  : 1, </div>\n-<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#a0fe3eeef4b5b332c7747a940db43cd8d\">  137</a></span>                     <a class=\"code hl_variable\" href=\"a01021.html#a0fe3eeef4b5b332c7747a940db43cd8d\">generateLegacySharpCornerPatches</a> : 1; </div>\n-<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\">  138</span> </div>\n-<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#ad17511fd9b0cea1b15b6bc31c0fc3e80\">  139</a></span>        <span class=\"keywordtype\">int</span>          <a class=\"code hl_variable\" href=\"a01021.html#ad17511fd9b0cea1b15b6bc31c0fc3e80\">numFVarChannels</a>;          </div>\n-<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#a4c1ba8119a16ea0682a870ee7a8282a5\">  140</a></span>        <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> *  <a class=\"code hl_variable\" href=\"a01021.html#a4c1ba8119a16ea0682a870ee7a8282a5\">fvarChannelIndices</a>;       </div>\n-<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\">  141</span>    };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span> </div>\n-<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01017.html#a6ad8881e91652a8fe4d68d18ac16a435\">  175</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a00993.html\">PatchTable</a> * <a class=\"code hl_function\" href=\"a01017.html#a6ad8881e91652a8fe4d68d18ac16a435\">Create</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> &amp; refiner,</div>\n-<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\">  176</span>                               <a class=\"code hl_struct\" href=\"a01021.html\">Options</a> options = <a class=\"code hl_struct\" href=\"a01021.html\">Options</a>(),</div>\n-<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span>                               <a class=\"code hl_class\" href=\"a01353.html\">ConstIndexArray</a> selectedFaces = <a class=\"code hl_typedef\" href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">ConstIndexArray</a>());</div>\n-<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\">  178</span> </div>\n-<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\">  179</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\">  180</span>    <span class=\"comment\">//  PatchFaceTag</span></div>\n-<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\">  181</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\">  182</span>    <span class=\"comment\">//  This simple struct was previously used within the factory to take inventory of</span></div>\n-<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\">  183</span>    <span class=\"comment\">//  various kinds of patches to fully allocate buffers prior to populating them.  It</span></div>\n-<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\">  184</span>    <span class=\"comment\">//  was not intended to be exposed as part of the public interface.</span></div>\n-<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\">  185</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\">  186</span>    <span class=\"comment\">//  It is no longer used internally and is being kept here to respect preservation</span></div>\n-<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\">  187</span>    <span class=\"comment\">//  of the public interface, but it will be deprecated at the earliest opportunity.</span></div>\n-<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\">  188</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\">  191</span>    <span class=\"comment\">//</span></div>\n-<div class=\"foldopen\" id=\"foldopen00192\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01025.html\">  192</a></span>    <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01025.html\">PatchFaceTag</a> {</div>\n-<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\">  193</span>    <span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01025.html#a85527f734ee41ab3855c42c0e1257f95\">  194</a></span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span>   <a class=\"code hl_variable\" href=\"a01025.html#a85527f734ee41ab3855c42c0e1257f95\">_hasPatch</a>        : 1;</div>\n-<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01025.html#a0a3cc48a737c60aa048df1c3f41da070\">  195</a></span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span>   <a class=\"code hl_variable\" href=\"a01025.html#a0a3cc48a737c60aa048df1c3f41da070\">_isRegular</a>       : 1;</div>\n-<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01025.html#a29cbdb64d4e0e49551db4b7674a4c38a\">  196</a></span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span>   <a class=\"code hl_variable\" href=\"a01025.html#a29cbdb64d4e0e49551db4b7674a4c38a\">_transitionMask</a>  : 4;</div>\n-<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01025.html#a4130a836c1d7653793698df818db0624\">  197</a></span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span>   <a class=\"code hl_variable\" href=\"a01025.html#a4130a836c1d7653793698df818db0624\">_boundaryMask</a>    : 4;</div>\n-<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01025.html#a0e2fbbb4a1a96f3fbaee3c1273684e0e\">  198</a></span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span>   <a class=\"code hl_variable\" href=\"a01025.html#a0e2fbbb4a1a96f3fbaee3c1273684e0e\">_boundaryIndex</a>   : 2;</div>\n-<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01025.html#ae1df61bc00c50b927351c1e6b044f5a1\">  199</a></span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span>   <a class=\"code hl_variable\" href=\"a01025.html#ae1df61bc00c50b927351c1e6b044f5a1\">_boundaryCount</a>   : 3;</div>\n-<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01025.html#a395c4eda069d129a467d5266a4746673\">  200</a></span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span>   <a class=\"code hl_variable\" href=\"a01025.html#a395c4eda069d129a467d5266a4746673\">_hasBoundaryEdge</a> : 3;</div>\n-<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01025.html#a03fbcf9e0aec39ba35fc19aefbb07e64\">  201</a></span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span>   <a class=\"code hl_variable\" href=\"a01025.html#a03fbcf9e0aec39ba35fc19aefbb07e64\">_isSingleCrease</a>  : 1;</div>\n-<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\">  202</span> </div>\n-<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01025.html#ac8bb3912a3ce86b15842e79d0b421204\">  203</a></span>        <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01025.html#ac8bb3912a3ce86b15842e79d0b421204\">clear</a>();</div>\n-<div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01025.html#ace61bb1240f406368b44e72e58728428\">  204</a></span>        <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01025.html#ace61bb1240f406368b44e72e58728428\">assignBoundaryPropertiesFromEdgeMask</a>(<span class=\"keywordtype\">int</span> boundaryEdgeMask);</div>\n-<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01025.html#a19202138f911782b5652536867d24565\">  205</a></span>        <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01025.html#a19202138f911782b5652536867d24565\">assignBoundaryPropertiesFromVertexMask</a>(<span class=\"keywordtype\">int</span> boundaryVertexMask);</div>\n-<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01025.html#aba817ee7f5b93139589ed6cf97b557cf\">  206</a></span>        <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01025.html#aba817ee7f5b93139589ed6cf97b557cf\">assignTransitionPropertiesFromEdgeMask</a>(<span class=\"keywordtype\">int</span> boundaryVertexMask);</div>\n-<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\">  207</span>    };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01017.html#a37218ea13f75caee4c93cc4e94d26060\">  208</a></span>    <span class=\"keyword\">typedef</span> std::vector&lt;PatchFaceTag&gt; <a class=\"code hl_typedef\" href=\"a01017.html#a37218ea13f75caee4c93cc4e94d26060\">PatchTagVector</a>;</div>\n-<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\">  209</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\">  210</span> </div>\n-<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\">  211</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00212\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00212\" name=\"l00212\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#a99f237b06c2ba7a1de567dbd95ac9948\">  212</a></span><span class=\"keyword\">template</span> &lt;&gt; <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> PatchTableFactory::Options::SetPatchPrecision&lt;float&gt;() {</div>\n-<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\">  213</span>    <a class=\"code hl_variable\" href=\"a01021.html#a91ce5fe0ce9b9ec6c5afcfb6e1ccaa40\">patchPrecisionDouble</a> = <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\">  214</span>}</div>\n-</div>\n-<div class=\"foldopen\" id=\"foldopen00215\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#aa43aafc4dbfd969eca82920f28cda140\">  215</a></span><span class=\"keyword\">template</span> &lt;&gt; <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> PatchTableFactory::Options::SetFVarPatchPrecision&lt;float&gt;() {</div>\n-<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\">  216</span>    fvarPatchPrecisionDouble = <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\">  217</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\">  218</span> </div>\n-<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\">  219</span><span class=\"keyword\">template</span> &lt;&gt; <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> PatchTableFactory::Options::SetPatchPrecision&lt;double&gt;() {</div>\n-<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\">  220</span>    patchPrecisionDouble = <span class=\"keyword\">true</span>;</div>\n-<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\">  221</span>}</div>\n-<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\">  222</span><span class=\"keyword\">template</span> &lt;&gt; <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> PatchTableFactory::Options::SetFVarPatchPrecision&lt;double&gt;() {</div>\n-<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\">  223</span>    fvarPatchPrecisionDouble = <span class=\"keyword\">true</span>;</div>\n-<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\">  224</span>}</div>\n-<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\">  225</span> </div>\n-<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\">  226</span> </div>\n-<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\">  227</span>} <span class=\"comment\">// end namespace Far</span></div>\n-<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\">  228</span> </div>\n-<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\">  229</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\">  230</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\">  231</span> </div>\n-<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\">  232</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\">  233</span> </div>\n-<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\">  234</span> </div>\n-<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\">  235</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_FAR_PATCH_TABLE_FACTORY_H */</span><span class=\"preprocessor\"></span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa00908_html_a35788aa710e3f7e277e5f0b008d76d61\"><div class=\"ttname\"><a href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">OpenSubdiv::OPENSUBDIV_VERSION::Far::ConstIndexArray</a></div><div class=\"ttdeci\">Vtr::ConstIndexArray ConstIndexArray</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01486_source.html#l00047\">types.h:47</a></div></div>\n-<div class=\"ttc\" id=\"aa00993_html\"><div class=\"ttname\"><a href=\"a00993.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable</a></div><div class=\"ttdoc\">Container for arrays of parametric patches.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00761_source.html#l00055\">patchTable.h:55</a></div></div>\n-<div class=\"ttc\" id=\"aa01017_html\"><div class=\"ttname\"><a href=\"a01017.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory</a></div><div class=\"ttdoc\">Factory for constructing a PatchTable from a TopologyRefiner.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00040\">patchTableFactory.h:40</a></div></div>\n-<div class=\"ttc\" id=\"aa01017_html_a37218ea13f75caee4c93cc4e94d26060\"><div class=\"ttname\"><a href=\"a01017.html#a37218ea13f75caee4c93cc4e94d26060\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::PatchTagVector</a></div><div class=\"ttdeci\">std::vector&lt; PatchFaceTag &gt; PatchTagVector</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00208\">patchTableFactory.h:208</a></div></div>\n-<div class=\"ttc\" id=\"aa01017_html_a6ad8881e91652a8fe4d68d18ac16a435\"><div class=\"ttname\"><a href=\"a01017.html#a6ad8881e91652a8fe4d68d18ac16a435\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Create</a></div><div class=\"ttdeci\">static PatchTable * Create(TopologyRefiner const &amp;refiner, Options options=Options(), ConstIndexArray selectedFaces=ConstIndexArray())</div><div class=\"ttdoc\">Instantiates a PatchTable from a client-provided TopologyRefiner.</div></div>\n-<div class=\"ttc\" id=\"aa01021_html\"><div class=\"ttname\"><a href=\"a01021.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options</a></div><div class=\"ttdoc\">Public options for the PatchTable factory.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00045\">patchTableFactory.h:45</a></div></div>\n-<div class=\"ttc\" id=\"aa01021_html_a039b27c797bb2b4be4af66798787081e\"><div class=\"ttname\"><a href=\"a01021.html#a039b27c797bb2b4be4af66798787081e\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::generateVaryingTables</a></div><div class=\"ttdeci\">unsigned int generateVaryingTables</div><div class=\"ttdoc\">Generate varying patch tables.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00125\">patchTableFactory.h:125</a></div></div>\n-<div class=\"ttc\" id=\"aa01021_html_a0fe3eeef4b5b332c7747a940db43cd8d\"><div class=\"ttname\"><a href=\"a01021.html#a0fe3eeef4b5b332c7747a940db43cd8d\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::generateLegacySharpCornerPatches</a></div><div class=\"ttdeci\">unsigned int generateLegacySharpCornerPatches</div><div class=\"ttdoc\">Generate sharp regular patches at smooth corners (legacy)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00137\">patchTableFactory.h:137</a></div></div>\n-<div class=\"ttc\" id=\"aa01021_html_a113fa8ce12150940afe0215c702cc89d\"><div class=\"ttname\"><a href=\"a01021.html#a113fa8ce12150940afe0215c702cc89d\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::shareEndCapPatchPoints</a></div><div class=\"ttdeci\">unsigned int shareEndCapPatchPoints</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00121\">patchTableFactory.h:122</a></div></div>\n-<div class=\"ttc\" id=\"aa01021_html_a14138864bf072e99898a8d1a0c074468\"><div class=\"ttname\"><a href=\"a01021.html#a14138864bf072e99898a8d1a0c074468\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::GetRefineAdaptiveOptions</a></div><div class=\"ttdeci\">TopologyRefiner::AdaptiveOptions GetRefineAdaptiveOptions() const</div><div class=\"ttdoc\">Determine adaptive refinement options to match assigned patch options.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00100\">patchTableFactory.h:100</a></div></div>\n-<div class=\"ttc\" id=\"aa01021_html_a18b47b281350d10784fd4917be9019f1\"><div class=\"ttname\"><a href=\"a01021.html#a18b47b281350d10784fd4917be9019f1\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::maxIsolationLevel</a></div><div class=\"ttdeci\">unsigned int maxIsolationLevel</div><div class=\"ttdoc\">Cap adaptive feature isolation to the given level (max. 10)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00117\">patchTableFactory.h:117</a></div></div>\n-<div class=\"ttc\" id=\"aa01021_html_a1f59869b65e626aebb332538b92759ec\"><div class=\"ttname\"><a href=\"a01021.html#a1f59869b65e626aebb332538b92759ec\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::GetEndCapType</a></div><div class=\"ttdeci\">EndCapType GetEndCapType() const</div><div class=\"ttdoc\">Get endcap basis type.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00085\">patchTableFactory.h:85</a></div></div>\n-<div class=\"ttc\" id=\"aa01021_html_a2a03b250662eec5d267daf6692e4b341\"><div class=\"ttname\"><a href=\"a01021.html#a2a03b250662eec5d267daf6692e4b341\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::generateFVarLegacyLinearPatches</a></div><div class=\"ttdeci\">unsigned int generateFVarLegacyLinearPatches</div><div class=\"ttdoc\">Generate all linear face-varying patches (legacy)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00136\">patchTableFactory.h:136</a></div></div>\n-<div class=\"ttc\" id=\"aa01021_html_a2d5bc9d7d16144b5cdc70381843defa9\"><div class=\"ttname\"><a href=\"a01021.html#a2d5bc9d7d16144b5cdc70381843defa9\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::SetPatchPrecision</a></div><div class=\"ttdeci\">void SetPatchPrecision()</div><div class=\"ttdoc\">Set precision of vertex patches.</div></div>\n-<div class=\"ttc\" id=\"aa01021_html_a3f663e5c2b7e65976b6521c21ea59130\"><div class=\"ttname\"><a href=\"a01021.html#a3f663e5c2b7e65976b6521c21ea59130\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::fvarPatchPrecisionDouble</a></div><div class=\"ttdeci\">unsigned int fvarPatchPrecisionDouble</div><div class=\"ttdoc\">Generate double-precision stencils for face-varying patches.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00133\">patchTableFactory.h:133</a></div></div>\n-<div class=\"ttc\" id=\"aa01021_html_a425e9cd3218a02afffaf0289f1a9c6fd\"><div class=\"ttname\"><a href=\"a01021.html#a425e9cd3218a02afffaf0289f1a9c6fd\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::SetMaxIsolationLevel</a></div><div class=\"ttdeci\">void SetMaxIsolationLevel(unsigned int level)</div><div class=\"ttdoc\">Set maximum isolation level.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00091\">patchTableFactory.h:91</a></div></div>\n-<div class=\"ttc\" id=\"aa01021_html_a497f7c6fe6944842dd54758e9ec5a8e2\"><div class=\"ttname\"><a href=\"a01021.html#a497f7c6fe6944842dd54758e9ec5a8e2\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::endCapType</a></div><div class=\"ttdeci\">unsigned int endCapType</div><div class=\"ttdoc\">EndCapType.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00120\">patchTableFactory.h:120</a></div></div>\n-<div class=\"ttc\" id=\"aa01021_html_a4c1ba8119a16ea0682a870ee7a8282a5\"><div class=\"ttname\"><a href=\"a01021.html#a4c1ba8119a16ea0682a870ee7a8282a5\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::fvarChannelIndices</a></div><div class=\"ttdeci\">int const  * fvarChannelIndices</div><div class=\"ttdoc\">List containing the indices of the channels selected for the factory.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00140\">patchTableFactory.h:140</a></div></div>\n-<div class=\"ttc\" id=\"aa01021_html_a5834971432c649e28d5a0186f79a60d5\"><div class=\"ttname\"><a href=\"a01021.html#a5834971432c649e28d5a0186f79a60d5\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::useSingleCreasePatch</a></div><div class=\"ttdeci\">unsigned int useSingleCreasePatch</div><div class=\"ttdoc\">Use single crease patch.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00115\">patchTableFactory.h:115</a></div></div>\n-<div class=\"ttc\" id=\"aa01021_html_a5eba866952b7be15b065060b1f5a81da\"><div class=\"ttname\"><a href=\"a01021.html#a5eba866952b7be15b065060b1f5a81da\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::useInfSharpPatch</a></div><div class=\"ttdeci\">unsigned int useInfSharpPatch</div><div class=\"ttdoc\">Use infinitely-sharp patch.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00116\">patchTableFactory.h:116</a></div></div>\n-<div class=\"ttc\" id=\"aa01021_html_a6a9e4615ca58b7206de550f249c5e37c\"><div class=\"ttname\"><a href=\"a01021.html#a6a9e4615ca58b7206de550f249c5e37c\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::SetEndCapType</a></div><div class=\"ttdeci\">void SetEndCapType(EndCapType e)</div><div class=\"ttdoc\">Set endcap basis type.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00088\">patchTableFactory.h:88</a></div></div>\n-<div class=\"ttc\" id=\"aa01021_html_a728df1785179cd0768a4971b8c34708a\"><div class=\"ttname\"><a href=\"a01021.html#a728df1785179cd0768a4971b8c34708a\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::generateVaryingLocalPoints</a></div><div class=\"ttdeci\">unsigned int generateVaryingLocalPoints</div><div class=\"ttdoc\">Generate local points with varying patches.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00126\">patchTableFactory.h:126</a></div></div>\n-<div class=\"ttc\" id=\"aa01021_html_a7551f187d9f4a70b27faed7597d96e4f\"><div class=\"ttname\"><a href=\"a01021.html#a7551f187d9f4a70b27faed7597d96e4f\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::includeFVarBaseLevelIndices</a></div><div class=\"ttdeci\">unsigned int includeFVarBaseLevelIndices</div><div class=\"ttdoc\">Include base level in face-varying patch point indices (Uniform mode only)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00112\">patchTableFactory.h:112</a></div></div>\n-<div class=\"ttc\" id=\"aa01021_html_a8d3c24dcc455474a3a9498c6b6378cc4\"><div class=\"ttname\"><a href=\"a01021.html#a8d3c24dcc455474a3a9498c6b6378cc4\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::generateAllLevels</a></div><div class=\"ttdeci\">unsigned int generateAllLevels</div><div class=\"ttdoc\">Generate levels from 'firstLevel' to 'maxLevel' (Uniform mode only)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00110\">patchTableFactory.h:110</a></div></div>\n-<div class=\"ttc\" id=\"aa01021_html_a91ce5fe0ce9b9ec6c5afcfb6e1ccaa40\"><div class=\"ttname\"><a href=\"a01021.html#a91ce5fe0ce9b9ec6c5afcfb6e1ccaa40\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::patchPrecisionDouble</a></div><div class=\"ttdeci\">unsigned int patchPrecisionDouble</div><div class=\"ttdoc\">Generate double-precision stencils for vertex patches.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00132\">patchTableFactory.h:132</a></div></div>\n-<div class=\"ttc\" id=\"aa01021_html_a97f60d840c3d2830f0c4680783a334e8\"><div class=\"ttname\"><a href=\"a01021.html#a97f60d840c3d2830f0c4680783a334e8\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::generateFVarTables</a></div><div class=\"ttdeci\">unsigned int generateFVarTables</div><div class=\"ttdoc\">Generate face-varying patch tables.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00129\">patchTableFactory.h:129</a></div></div>\n-<div class=\"ttc\" id=\"aa01021_html_a9e322b8f2ad57dd369956f27113b7a8a\"><div class=\"ttname\"><a href=\"a01021.html#a9e322b8f2ad57dd369956f27113b7a8a\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::includeBaseLevelIndices</a></div><div class=\"ttdeci\">unsigned int includeBaseLevelIndices</div><div class=\"ttdoc\">Include base level in patch point indices (Uniform mode only)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00111\">patchTableFactory.h:111</a></div></div>\n-<div class=\"ttc\" id=\"aa01021_html_aa6530a2eb5204da33e7c02f8fcdcbac2\"><div class=\"ttname\"><a href=\"a01021.html#aa6530a2eb5204da33e7c02f8fcdcbac2\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::SetFVarPatchPrecision</a></div><div class=\"ttdeci\">void SetFVarPatchPrecision()</div><div class=\"ttdoc\">Set precision of face-varying patches.</div></div>\n-<div class=\"ttc\" id=\"aa01021_html_ad17511fd9b0cea1b15b6bc31c0fc3e80\"><div class=\"ttname\"><a href=\"a01021.html#ad17511fd9b0cea1b15b6bc31c0fc3e80\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::numFVarChannels</a></div><div class=\"ttdeci\">int numFVarChannels</div><div class=\"ttdoc\">Number of channel indices and interpolation modes passed.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00139\">patchTableFactory.h:139</a></div></div>\n-<div class=\"ttc\" id=\"aa01021_html_ae0427ab3b81525a0dfa5d2b510a06461\"><div class=\"ttname\"><a href=\"a01021.html#ae0427ab3b81525a0dfa5d2b510a06461\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::triangulateQuads</a></div><div class=\"ttdeci\">unsigned int triangulateQuads</div><div class=\"ttdoc\">Triangulate 'QUADS' primitives (Uniform mode only)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00113\">patchTableFactory.h:113</a></div></div>\n-<div class=\"ttc\" id=\"aa01021_html_aebc767d646011ab7d5bc7d6d49adf535\"><div class=\"ttname\"><a href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::EndCapType</a></div><div class=\"ttdeci\">EndCapType</div><div class=\"ttdoc\">Choice for approximating irregular patches (end-caps)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00055\">patchTableFactory.h:55</a></div></div>\n-<div class=\"ttc\" id=\"aa01021_html_aebc767d646011ab7d5bc7d6d49adf535a0c0d3d9e480d64f20f1b32d599c88aa5\"><div class=\"ttname\"><a href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535a0c0d3d9e480d64f20f1b32d599c88aa5\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::ENDCAP_LEGACY_GREGORY</a></div><div class=\"ttdeci\">@ ENDCAP_LEGACY_GREGORY</div><div class=\"ttdoc\">legacy option for 2.x style Gregory patches (Catmark only)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00061\">patchTableFactory.h:60</a></div></div>\n-<div class=\"ttc\" id=\"aa01021_html_aebc767d646011ab7d5bc7d6d49adf535a2e89c8e5ac21dbd024ec902de51566b0\"><div class=\"ttname\"><a href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535a2e89c8e5ac21dbd024ec902de51566b0\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::ENDCAP_GREGORY_BASIS</a></div><div class=\"ttdeci\">@ ENDCAP_GREGORY_BASIS</div><div class=\"ttdoc\">use Gregory patches (highest quality, recommended default)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00059\">patchTableFactory.h:59</a></div></div>\n-<div class=\"ttc\" id=\"aa01021_html_aebc767d646011ab7d5bc7d6d49adf535a39a0bc0d1c407b2b849c2bfaba366b22\"><div class=\"ttname\"><a href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535a39a0bc0d1c407b2b849c2bfaba366b22\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::ENDCAP_NONE</a></div><div class=\"ttdeci\">@ ENDCAP_NONE</div><div class=\"ttdoc\">unspecified</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00056\">patchTableFactory.h:56</a></div></div>\n-<div class=\"ttc\" id=\"aa01021_html_aebc767d646011ab7d5bc7d6d49adf535a90f0e9a2c992889cefdf1db954f9d98f\"><div class=\"ttname\"><a href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535a90f0e9a2c992889cefdf1db954f9d98f\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::ENDCAP_BILINEAR_BASIS</a></div><div class=\"ttdeci\">@ ENDCAP_BILINEAR_BASIS</div><div class=\"ttdoc\">use linear patches (simple quads or tris)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00057\">patchTableFactory.h:57</a></div></div>\n-<div class=\"ttc\" id=\"aa01021_html_aebc767d646011ab7d5bc7d6d49adf535ac3fc1d183b0bdfbc7bf1cce613c4ff04\"><div class=\"ttname\"><a href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535ac3fc1d183b0bdfbc7bf1cce613c4ff04\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::ENDCAP_BSPLINE_BASIS</a></div><div class=\"ttdeci\">@ ENDCAP_BSPLINE_BASIS</div><div class=\"ttdoc\">use BSpline-like patches (same patch type as regular)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00058\">patchTableFactory.h:58</a></div></div>\n-<div class=\"ttc\" id=\"aa01021_html_afe7ba5a3a3e0f7b63f27fc527f472528\"><div class=\"ttname\"><a href=\"a01021.html#afe7ba5a3a3e0f7b63f27fc527f472528\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::Options</a></div><div class=\"ttdeci\">Options(unsigned int maxIsolation=10)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00063\">patchTableFactory.h:63</a></div></div>\n-<div class=\"ttc\" id=\"aa01025_html\"><div class=\"ttname\"><a href=\"a01025.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::PatchFaceTag</a></div><div class=\"ttdoc\">Obsolete internal struct not intended for public use \u2013 due to be deprecated.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00192\">patchTableFactory.h:192</a></div></div>\n-<div class=\"ttc\" id=\"aa01025_html_a03fbcf9e0aec39ba35fc19aefbb07e64\"><div class=\"ttname\"><a href=\"a01025.html#a03fbcf9e0aec39ba35fc19aefbb07e64\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::PatchFaceTag::_isSingleCrease</a></div><div class=\"ttdeci\">unsigned int _isSingleCrease</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00201\">patchTableFactory.h:201</a></div></div>\n-<div class=\"ttc\" id=\"aa01025_html_a0a3cc48a737c60aa048df1c3f41da070\"><div class=\"ttname\"><a href=\"a01025.html#a0a3cc48a737c60aa048df1c3f41da070\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::PatchFaceTag::_isRegular</a></div><div class=\"ttdeci\">unsigned int _isRegular</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00195\">patchTableFactory.h:195</a></div></div>\n-<div class=\"ttc\" id=\"aa01025_html_a0e2fbbb4a1a96f3fbaee3c1273684e0e\"><div class=\"ttname\"><a href=\"a01025.html#a0e2fbbb4a1a96f3fbaee3c1273684e0e\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::PatchFaceTag::_boundaryIndex</a></div><div class=\"ttdeci\">unsigned int _boundaryIndex</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00198\">patchTableFactory.h:198</a></div></div>\n-<div class=\"ttc\" id=\"aa01025_html_a19202138f911782b5652536867d24565\"><div class=\"ttname\"><a href=\"a01025.html#a19202138f911782b5652536867d24565\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::PatchFaceTag::assignBoundaryPropertiesFromVertexMask</a></div><div class=\"ttdeci\">void assignBoundaryPropertiesFromVertexMask(int boundaryVertexMask)</div></div>\n-<div class=\"ttc\" id=\"aa01025_html_a29cbdb64d4e0e49551db4b7674a4c38a\"><div class=\"ttname\"><a href=\"a01025.html#a29cbdb64d4e0e49551db4b7674a4c38a\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::PatchFaceTag::_transitionMask</a></div><div class=\"ttdeci\">unsigned int _transitionMask</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00196\">patchTableFactory.h:196</a></div></div>\n-<div class=\"ttc\" id=\"aa01025_html_a395c4eda069d129a467d5266a4746673\"><div class=\"ttname\"><a href=\"a01025.html#a395c4eda069d129a467d5266a4746673\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::PatchFaceTag::_hasBoundaryEdge</a></div><div class=\"ttdeci\">unsigned int _hasBoundaryEdge</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00200\">patchTableFactory.h:200</a></div></div>\n-<div class=\"ttc\" id=\"aa01025_html_a4130a836c1d7653793698df818db0624\"><div class=\"ttname\"><a href=\"a01025.html#a4130a836c1d7653793698df818db0624\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::PatchFaceTag::_boundaryMask</a></div><div class=\"ttdeci\">unsigned int _boundaryMask</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00197\">patchTableFactory.h:197</a></div></div>\n-<div class=\"ttc\" id=\"aa01025_html_a85527f734ee41ab3855c42c0e1257f95\"><div class=\"ttname\"><a href=\"a01025.html#a85527f734ee41ab3855c42c0e1257f95\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::PatchFaceTag::_hasPatch</a></div><div class=\"ttdeci\">unsigned int _hasPatch</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00194\">patchTableFactory.h:194</a></div></div>\n-<div class=\"ttc\" id=\"aa01025_html_aba817ee7f5b93139589ed6cf97b557cf\"><div class=\"ttname\"><a href=\"a01025.html#aba817ee7f5b93139589ed6cf97b557cf\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::PatchFaceTag::assignTransitionPropertiesFromEdgeMask</a></div><div class=\"ttdeci\">void assignTransitionPropertiesFromEdgeMask(int boundaryVertexMask)</div></div>\n-<div class=\"ttc\" id=\"aa01025_html_ac8bb3912a3ce86b15842e79d0b421204\"><div class=\"ttname\"><a href=\"a01025.html#ac8bb3912a3ce86b15842e79d0b421204\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::PatchFaceTag::clear</a></div><div class=\"ttdeci\">void clear()</div></div>\n-<div class=\"ttc\" id=\"aa01025_html_ace61bb1240f406368b44e72e58728428\"><div class=\"ttname\"><a href=\"a01025.html#ace61bb1240f406368b44e72e58728428\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::PatchFaceTag::assignBoundaryPropertiesFromEdgeMask</a></div><div class=\"ttdeci\">void assignBoundaryPropertiesFromEdgeMask(int boundaryEdgeMask)</div></div>\n-<div class=\"ttc\" id=\"aa01025_html_ae1df61bc00c50b927351c1e6b044f5a1\"><div class=\"ttname\"><a href=\"a01025.html#ae1df61bc00c50b927351c1e6b044f5a1\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::PatchFaceTag::_boundaryCount</a></div><div class=\"ttdeci\">unsigned int _boundaryCount</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00199\">patchTableFactory.h:199</a></div></div>\n-<div class=\"ttc\" id=\"aa01121_html\"><div class=\"ttname\"><a href=\"a01121.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner</a></div><div class=\"ttdoc\">Stores topology data for a specified set of refinement options.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00051\">topologyRefiner.h:51</a></div></div>\n-<div class=\"ttc\" id=\"aa01129_html\"><div class=\"ttname\"><a href=\"a01129.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::AdaptiveOptions</a></div><div class=\"ttdoc\">Adaptive refinement options.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00156\">topologyRefiner.h:156</a></div></div>\n-<div class=\"ttc\" id=\"aa01129_html_a5834971432c649e28d5a0186f79a60d5\"><div class=\"ttname\"><a href=\"a01129.html#a5834971432c649e28d5a0186f79a60d5\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::AdaptiveOptions::useSingleCreasePatch</a></div><div class=\"ttdeci\">unsigned int useSingleCreasePatch</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00176\">topologyRefiner.h:176</a></div></div>\n-<div class=\"ttc\" id=\"aa01129_html_a5eba866952b7be15b065060b1f5a81da\"><div class=\"ttname\"><a href=\"a01129.html#a5eba866952b7be15b065060b1f5a81da\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::AdaptiveOptions::useInfSharpPatch</a></div><div class=\"ttdeci\">unsigned int useInfSharpPatch</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00178\">topologyRefiner.h:178</a></div></div>\n-<div class=\"ttc\" id=\"aa01129_html_a74c90a5955fcad9c95d4c18346f7c312\"><div class=\"ttname\"><a href=\"a01129.html#a74c90a5955fcad9c95d4c18346f7c312\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::AdaptiveOptions::considerFVarChannels</a></div><div class=\"ttdeci\">unsigned int considerFVarChannels</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00180\">topologyRefiner.h:180</a></div></div>\n-<div class=\"ttc\" id=\"aa01353_html\"><div class=\"ttname\"><a href=\"a01353.html\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00683_source.html#l00053\">array.h:53</a></div></div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>} <span class=\"comment\">// end namespace Osd</span></div>\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span> </div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>} <span class=\"comment\">//end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span> </div>\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span>} <span class=\"comment\">//end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span> </div>\n+<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">//end OPENSUBDIV3_OSD_MTL_PATCH_TABLE_H</span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa00912_html_a98098cd229f60d2397d84a76fe654a31\"><div class=\"ttname\"><a href=\"a00912.html#a98098cd229f60d2397d84a76fe654a31\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchArrayVector</a></div><div class=\"ttdeci\">std::vector&lt; PatchArray &gt; PatchArrayVector</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00132\">types.h:132</a></div></div>\n+<div class=\"ttc\" id=\"aa00993_html\"><div class=\"ttname\"><a href=\"a00993.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable</a></div><div class=\"ttdoc\">Container for arrays of parametric patches.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00842_source.html#l00055\">patchTable.h:55</a></div></div>\n+<div class=\"ttc\" id=\"aa01285_html\"><div class=\"ttname\"><a href=\"a01285.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLContext</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00698_source.html#l00040\">mtlCommon.h:40</a></div></div>\n+<div class=\"ttc\" id=\"aa01305_html\"><div class=\"ttname\"><a href=\"a01305.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00046\">mtlPatchTable.h:46</a></div></div>\n+<div class=\"ttc\" id=\"aa01305_html_a18e3d09b0c7b7552f8e419e36788166a\"><div class=\"ttname\"><a href=\"a01305.html#a18e3d09b0c7b7552f8e419e36788166a\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::GetPatchArrays</a></div><div class=\"ttdeci\">PatchArrayVector const &amp; GetPatchArrays() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00061\">mtlPatchTable.h:61</a></div></div>\n+<div class=\"ttc\" id=\"aa01305_html_a2246e8e016510f81c7ac9ead81d7c6eb\"><div class=\"ttname\"><a href=\"a01305.html#a2246e8e016510f81c7ac9ead81d7c6eb\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::allocate</a></div><div class=\"ttdeci\">bool allocate(Far::PatchTable const *farPatchTable, MTLContext *context)</div></div>\n+<div class=\"ttc\" id=\"aa01305_html_a24c34d2b403d22f2d3bcfdf6f5005ee4\"><div class=\"ttname\"><a href=\"a01305.html#a24c34d2b403d22f2d3bcfdf6f5005ee4\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::Create</a></div><div class=\"ttdeci\">static MTLPatchTable * Create(Far::PatchTable const *farPatchTable, MTLContext *context)</div></div>\n+<div class=\"ttc\" id=\"aa01305_html_a2ad5c87b20355961bc623d1c1ece01f8\"><div class=\"ttname\"><a href=\"a01305.html#a2ad5c87b20355961bc623d1c1ece01f8\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::GetVaryingPatchIndexBuffer</a></div><div class=\"ttdeci\">id&lt; MTLBuffer &gt; GetVaryingPatchIndexBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00066\">mtlPatchTable.h:66</a></div></div>\n+<div class=\"ttc\" id=\"aa01305_html_a39ae7f640465cdd116c1f87b81308fb5\"><div class=\"ttname\"><a href=\"a01305.html#a39ae7f640465cdd116c1f87b81308fb5\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::_fvarIndexBuffers</a></div><div class=\"ttdeci\">std::vector&lt; id&lt; MTLBuffer &gt; &gt; _fvarIndexBuffers</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00086\">mtlPatchTable.h:86</a></div></div>\n+<div class=\"ttc\" id=\"aa01305_html_a3d306565eb0af09fa64cabc6d72c6755\"><div class=\"ttname\"><a href=\"a01305.html#a3d306565eb0af09fa64cabc6d72c6755\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::GetFVarPatchParamBuffer</a></div><div class=\"ttdeci\">id&lt; MTLBuffer &gt; GetFVarPatchParamBuffer(int fvarChannel=0) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00071\">mtlPatchTable.h:71</a></div></div>\n+<div class=\"ttc\" id=\"aa01305_html_a3f197c2ae3862390d72e7443a2525187\"><div class=\"ttname\"><a href=\"a01305.html#a3f197c2ae3862390d72e7443a2525187\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::MTLPatchTable</a></div><div class=\"ttdeci\">MTLPatchTable()</div></div>\n+<div class=\"ttc\" id=\"aa01305_html_a445098a6db6b14888b3a8bac35967e52\"><div class=\"ttname\"><a href=\"a01305.html#a445098a6db6b14888b3a8bac35967e52\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::GetPatchParamBuffer</a></div><div class=\"ttdeci\">id&lt; MTLBuffer &gt; GetPatchParamBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00063\">mtlPatchTable.h:63</a></div></div>\n+<div class=\"ttc\" id=\"aa01305_html_a4c33a50d79c6e811fb78461ce00c6310\"><div class=\"ttname\"><a href=\"a01305.html#a4c33a50d79c6e811fb78461ce00c6310\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::GetPatchIndexBuffer</a></div><div class=\"ttdeci\">id&lt; MTLBuffer &gt; GetPatchIndexBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00062\">mtlPatchTable.h:62</a></div></div>\n+<div class=\"ttc\" id=\"aa01305_html_a5dfb6b58580f2dec58e9b5bfdb4ed9f1\"><div class=\"ttname\"><a href=\"a01305.html#a5dfb6b58580f2dec58e9b5bfdb4ed9f1\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::_patchArrays</a></div><div class=\"ttdeci\">PatchArrayVector _patchArrays</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00076\">mtlPatchTable.h:76</a></div></div>\n+<div class=\"ttc\" id=\"aa01305_html_aa00654dc321a5c8dc370a900b0f404da\"><div class=\"ttname\"><a href=\"a01305.html#aa00654dc321a5c8dc370a900b0f404da\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::VertexBufferBinding</a></div><div class=\"ttdeci\">id&lt; MTLBuffer &gt; VertexBufferBinding</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00048\">mtlPatchTable.h:48</a></div></div>\n+<div class=\"ttc\" id=\"aa01305_html_aa9be824a572029f3ec1e0c0d6cfecd77\"><div class=\"ttname\"><a href=\"a01305.html#aa9be824a572029f3ec1e0c0d6cfecd77\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::GetNumFVarChannels</a></div><div class=\"ttdeci\">int GetNumFVarChannels() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00068\">mtlPatchTable.h:68</a></div></div>\n+<div class=\"ttc\" id=\"aa01305_html_ab4ae92f2c242d25fa0480d0307e0d9e5\"><div class=\"ttname\"><a href=\"a01305.html#ab4ae92f2c242d25fa0480d0307e0d9e5\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::GetFVarPatchArrays</a></div><div class=\"ttdeci\">PatchArrayVector const &amp; GetFVarPatchArrays(int fvarChannel=0) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00069\">mtlPatchTable.h:69</a></div></div>\n+<div class=\"ttc\" id=\"aa01305_html_ab65dac5d88eb7b4e1ccc2003f352e802\"><div class=\"ttname\"><a href=\"a01305.html#ab65dac5d88eb7b4e1ccc2003f352e802\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::_varyingPatchIndexBuffer</a></div><div class=\"ttdeci\">id&lt; MTLBuffer &gt; _varyingPatchIndexBuffer</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00083\">mtlPatchTable.h:83</a></div></div>\n+<div class=\"ttc\" id=\"aa01305_html_abb2abbc1ce950284fa16f51583d0ab92\"><div class=\"ttname\"><a href=\"a01305.html#abb2abbc1ce950284fa16f51583d0ab92\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::_fvarParamBuffers</a></div><div class=\"ttdeci\">std::vector&lt; id&lt; MTLBuffer &gt; &gt; _fvarParamBuffers</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00087\">mtlPatchTable.h:87</a></div></div>\n+<div class=\"ttc\" id=\"aa01305_html_abce41960eb6bedc82cbf0cb711ea66da\"><div class=\"ttname\"><a href=\"a01305.html#abce41960eb6bedc82cbf0cb711ea66da\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::_fvarPatchArrays</a></div><div class=\"ttdeci\">std::vector&lt; PatchArrayVector &gt; _fvarPatchArrays</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00085\">mtlPatchTable.h:85</a></div></div>\n+<div class=\"ttc\" id=\"aa01305_html_ac8b76e9d03149033d838a528d667e193\"><div class=\"ttname\"><a href=\"a01305.html#ac8b76e9d03149033d838a528d667e193\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::_patchParamBuffer</a></div><div class=\"ttdeci\">id&lt; MTLBuffer &gt; _patchParamBuffer</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00079\">mtlPatchTable.h:79</a></div></div>\n+<div class=\"ttc\" id=\"aa01305_html_acd99a0391b3b04586b11051fd0f7ed10\"><div class=\"ttname\"><a href=\"a01305.html#acd99a0391b3b04586b11051fd0f7ed10\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::_varyingPatchArrays</a></div><div class=\"ttdeci\">PatchArrayVector _varyingPatchArrays</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00081\">mtlPatchTable.h:81</a></div></div>\n+<div class=\"ttc\" id=\"aa01305_html_ad54c4e07ca48004585448396b980f0d9\"><div class=\"ttname\"><a href=\"a01305.html#ad54c4e07ca48004585448396b980f0d9\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::Create</a></div><div class=\"ttdeci\">static MTLPatchTable * Create(Far::PatchTable const *farPatchTable, DEVICE_CONTEXT context)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00054\">mtlPatchTable.h:54</a></div></div>\n+<div class=\"ttc\" id=\"aa01305_html_ad608acc5d9ea38f82548f2e0e234cf4e\"><div class=\"ttname\"><a href=\"a01305.html#ad608acc5d9ea38f82548f2e0e234cf4e\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::~MTLPatchTable</a></div><div class=\"ttdeci\">~MTLPatchTable()</div></div>\n+<div class=\"ttc\" id=\"aa01305_html_ae4e03248b9615425f7719fde5890796c\"><div class=\"ttname\"><a href=\"a01305.html#ae4e03248b9615425f7719fde5890796c\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::GetFVarPatchIndexBuffer</a></div><div class=\"ttdeci\">id&lt; MTLBuffer &gt; GetFVarPatchIndexBuffer(int fvarChannel=0) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00070\">mtlPatchTable.h:70</a></div></div>\n+<div class=\"ttc\" id=\"aa01305_html_aec45672f51f456fea341d644bcf16434\"><div class=\"ttname\"><a href=\"a01305.html#aec45672f51f456fea341d644bcf16434\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::GetVaryingPatchArrays</a></div><div class=\"ttdeci\">PatchArrayVector const &amp; GetVaryingPatchArrays() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00065\">mtlPatchTable.h:65</a></div></div>\n+<div class=\"ttc\" id=\"aa01305_html_af3b671a26ce6aaead2c7a2633b7cd268\"><div class=\"ttname\"><a href=\"a01305.html#af3b671a26ce6aaead2c7a2633b7cd268\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::_indexBuffer</a></div><div class=\"ttdeci\">id&lt; MTLBuffer &gt; _indexBuffer</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00078\">mtlPatchTable.h:78</a></div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7f420b72a822828cfa8b0561c695a5cc.html\">far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00776.html\">patchTableFactory.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00776.html\">mtlPatchTable.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "encoding", "source2": "encoding", "unified_diff": "@@ -1 +1 @@\n-utf-8\n+us-ascii\n"}, {"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,12 +1,12 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-patchTableFactory.h\n+mtlPatchTable.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n 2// Copyright 2013 Pixar\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n@@ -24,409 +24,170 @@\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n 24\n-25#ifndef OPENSUBDIV3_FAR_PATCH_TABLE_FACTORY_H\n-26#define OPENSUBDIV3_FAR_PATCH_TABLE_FACTORY_H\n+25#ifndef OPENSUBDIV3_OSD_MTL_PATCH_TABLE_H\n+26#define OPENSUBDIV3_OSD_MTL_PATCH_TABLE_H\n 27\n 28#include \"../version.h\"\n-29\n-30#include \"../far/topologyRefiner.h\"\n-31#include \"../far/patchTable.h\"\n-32\n-33namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-34namespace OPENSUBDIV_VERSION {\n-35\n-36namespace Far {\n-37\n-_\b4_\b0class _\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by {\n-41public:\n-42\n-_\b4_\b5 struct _\bO_\bp_\bt_\bi_\bo_\bn_\bs {\n-46\n-_\b5_\b5 enum _\bE_\bn_\bd_\bC_\ba_\bp_\bT_\by_\bp_\be {\n-_\b5_\b6 _\bE_\bN_\bD_\bC_\bA_\bP_\b__\bN_\bO_\bN_\bE = 0,\n-_\b5_\b7 _\bE_\bN_\bD_\bC_\bA_\bP_\b__\bB_\bI_\bL_\bI_\bN_\bE_\bA_\bR_\b__\bB_\bA_\bS_\bI_\bS,\n-_\b5_\b8 _\bE_\bN_\bD_\bC_\bA_\bP_\b__\bB_\bS_\bP_\bL_\bI_\bN_\bE_\b__\bB_\bA_\bS_\bI_\bS,\n-_\b5_\b9 _\bE_\bN_\bD_\bC_\bA_\bP_\b__\bG_\bR_\bE_\bG_\bO_\bR_\bY_\b__\bB_\bA_\bS_\bI_\bS,\n-60 _\bE_\bN_\bD_\bC_\bA_\bP_\b__\bL_\bE_\bG_\bA_\bC_\bY_\b__\bG_\bR_\bE_\bG_\bO_\bR_\bY\n-_\b6_\b1 };\n-62\n-_\b6_\b3 _\bO_\bp_\bt_\bi_\bo_\bn_\bs(unsigned int maxIsolation=10) :\n-64 _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bA_\bl_\bl_\bL_\be_\bv_\be_\bl_\bs(false),\n-65 _\bi_\bn_\bc_\bl_\bu_\bd_\be_\bB_\ba_\bs_\be_\bL_\be_\bv_\be_\bl_\bI_\bn_\bd_\bi_\bc_\be_\bs(true),\n-66 _\bi_\bn_\bc_\bl_\bu_\bd_\be_\bF_\bV_\ba_\br_\bB_\ba_\bs_\be_\bL_\be_\bv_\be_\bl_\bI_\bn_\bd_\bi_\bc_\be_\bs(false),\n-67 _\bt_\br_\bi_\ba_\bn_\bg_\bu_\bl_\ba_\bt_\be_\bQ_\bu_\ba_\bd_\bs(false),\n-68 _\bu_\bs_\be_\bS_\bi_\bn_\bg_\bl_\be_\bC_\br_\be_\ba_\bs_\be_\bP_\ba_\bt_\bc_\bh(false),\n-69 _\bu_\bs_\be_\bI_\bn_\bf_\bS_\bh_\ba_\br_\bp_\bP_\ba_\bt_\bc_\bh(false),\n-70 _\bm_\ba_\bx_\bI_\bs_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bL_\be_\bv_\be_\bl(maxIsolation & 0xf),\n-71 _\be_\bn_\bd_\bC_\ba_\bp_\bT_\by_\bp_\be(_\bE_\bN_\bD_\bC_\bA_\bP_\b__\bG_\bR_\bE_\bG_\bO_\bR_\bY_\b__\bB_\bA_\bS_\bI_\bS),\n-72 _\bs_\bh_\ba_\br_\be_\bE_\bn_\bd_\bC_\ba_\bp_\bP_\ba_\bt_\bc_\bh_\bP_\bo_\bi_\bn_\bt_\bs(true),\n-73 _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bT_\ba_\bb_\bl_\be_\bs(true),\n-74 _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bs(true),\n-75 _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bF_\bV_\ba_\br_\bT_\ba_\bb_\bl_\be_\bs(false),\n-76 _\bp_\ba_\bt_\bc_\bh_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\bD_\bo_\bu_\bb_\bl_\be(false),\n-77 _\bf_\bv_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\bD_\bo_\bu_\bb_\bl_\be(false),\n-78 _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bF_\bV_\ba_\br_\bL_\be_\bg_\ba_\bc_\by_\bL_\bi_\bn_\be_\ba_\br_\bP_\ba_\bt_\bc_\bh_\be_\bs(true),\n-79 _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bL_\be_\bg_\ba_\bc_\by_\bS_\bh_\ba_\br_\bp_\bC_\bo_\br_\bn_\be_\br_\bP_\ba_\bt_\bc_\bh_\be_\bs(true),\n-80 _\bn_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs(-1),\n-81 _\bf_\bv_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bI_\bn_\bd_\bi_\bc_\be_\bs(0)\n-82 { }\n-83\n-_\b8_\b5 _\bE_\bn_\bd_\bC_\ba_\bp_\bT_\by_\bp_\be _\bG_\be_\bt_\bE_\bn_\bd_\bC_\ba_\bp_\bT_\by_\bp_\be() const { return (_\bE_\bn_\bd_\bC_\ba_\bp_\bT_\by_\bp_\be)_\be_\bn_\bd_\bC_\ba_\bp_\bT_\by_\bp_\be; }\n-86\n-_\b8_\b8 void _\bS_\be_\bt_\bE_\bn_\bd_\bC_\ba_\bp_\bT_\by_\bp_\be(_\bE_\bn_\bd_\bC_\ba_\bp_\bT_\by_\bp_\be e) { _\be_\bn_\bd_\bC_\ba_\bp_\bT_\by_\bp_\be = e & 0x7; }\n+29#include \"../far/patchDescriptor.h\"\n+30#include \"../osd/nonCopyable.h\"\n+31#include \"../osd/types.h\"\n+32#include \"../osd/mtlCommon.h\"\n+33\n+34@protocol MTLDevice;\n+35@protocol MTLBuffer;\n+36\n+37namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+38namespace OPENSUBDIV_VERSION {\n+39\n+40namespace Far {\n+41 class PatchTable;\n+42};\n+43\n+44namespace Osd {\n+45\n+_\b4_\b6class _\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be : private NonCopyable<MTLPatchTable> {\n+47public:\n+_\b4_\b8 typedef id<MTLBuffer> _\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bB_\bi_\bn_\bd_\bi_\bn_\bg;\n+49\n+_\b5_\b0 _\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be();\n+_\b5_\b1 _\b~_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be();\n+52\n+53 template<typename DEVICE_CONTEXT>\n+_\b5_\b4 static _\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be *_\bC_\br_\be_\ba_\bt_\be(_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be const *farPatchTable,\n+DEVICE_CONTEXT context)\n+55 {\n+56 return _\bC_\br_\be_\ba_\bt_\be(farPatchTable, context);\n+57 }\n+58\n+_\b5_\b9 static _\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be *_\bC_\br_\be_\ba_\bt_\be(_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be const *farPatchTable,\n+_\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context);\n+60\n+_\b6_\b1 _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\bc_\bt_\bo_\br const &_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs() const { return _\b__\bp_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs; }\n+_\b6_\b2 id<MTLBuffer> _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br() const { return _\b__\bi_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br; }\n+_\b6_\b3 id<MTLBuffer> _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br() const { return _\b__\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br; }\n+64\n+_\b6_\b5 _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\bc_\bt_\bo_\br const &_\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs() const { return\n+_\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs; }\n+_\b6_\b6 id<MTLBuffer> _\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br() const { return\n+_\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br; }\n+67\n+_\b6_\b8 int _\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs() const { return (int)_\b__\bf_\bv_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs.size(); }\n+_\b6_\b9 _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\bc_\bt_\bo_\br const &_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs(int fvarChannel = 0) const\n+{ return _\b__\bf_\bv_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs[fvarChannel]; }\n+_\b7_\b0 id<MTLBuffer> _\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br(int fvarChannel = 0) const { return\n+_\b__\bf_\bv_\ba_\br_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bs[fvarChannel]; }\n+_\b7_\b1 id<MTLBuffer> _\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br(int fvarChannel = 0) const { return\n+_\b__\bf_\bv_\ba_\br_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br_\bs[fvarChannel]; }\n+72\n+73protected:\n+_\b7_\b4 bool _\ba_\bl_\bl_\bo_\bc_\ba_\bt_\be(_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be const *farPatchTable, _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context);\n+75\n+_\b7_\b6 _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\bc_\bt_\bo_\br _\b__\bp_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs;\n+77\n+_\b7_\b8 id<MTLBuffer> _\b__\bi_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br;\n+_\b7_\b9 id<MTLBuffer> _\b__\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br;\n+80\n+_\b8_\b1 _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\bc_\bt_\bo_\br _\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs;\n+82\n+_\b8_\b3 id<MTLBuffer> _\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br;\n+84\n+_\b8_\b5 std::vector<PatchArrayVector> _\b__\bf_\bv_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs;\n+_\b8_\b6 std::vector<id<MTLBuffer>> _\b__\bf_\bv_\ba_\br_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bs;\n+_\b8_\b7 std::vector<id<MTLBuffer>> _\b__\bf_\bv_\ba_\br_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br_\bs;\n+88};\n 89\n-_\b9_\b1 void _\bS_\be_\bt_\bM_\ba_\bx_\bI_\bs_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bL_\be_\bv_\be_\bl(unsigned int level) { _\bm_\ba_\bx_\bI_\bs_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bL_\be_\bv_\be_\bl = level &\n-0xf; }\n-92\n-_\b9_\b4 template <typename REAL> void _\bS_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn();\n-95\n-_\b9_\b7 template <typename REAL> void _\bS_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn();\n-98\n-_\b1_\b0_\b0 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs _\bG_\be_\bt_\bR_\be_\bf_\bi_\bn_\be_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs() const {\n-101 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs adaptiveOptions(_\bm_\ba_\bx_\bI_\bs_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bL_\be_\bv_\be_\bl);\n-102\n-103 adaptiveOptions._\bu_\bs_\be_\bI_\bn_\bf_\bS_\bh_\ba_\br_\bp_\bP_\ba_\bt_\bc_\bh = _\bu_\bs_\be_\bI_\bn_\bf_\bS_\bh_\ba_\br_\bp_\bP_\ba_\bt_\bc_\bh;\n-104 adaptiveOptions._\bu_\bs_\be_\bS_\bi_\bn_\bg_\bl_\be_\bC_\br_\be_\ba_\bs_\be_\bP_\ba_\bt_\bc_\bh = _\bu_\bs_\be_\bS_\bi_\bn_\bg_\bl_\be_\bC_\br_\be_\ba_\bs_\be_\bP_\ba_\bt_\bc_\bh;\n-105 adaptiveOptions._\bc_\bo_\bn_\bs_\bi_\bd_\be_\br_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs = _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bF_\bV_\ba_\br_\bT_\ba_\bb_\bl_\be_\bs &&\n-106 !_\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bF_\bV_\ba_\br_\bL_\be_\bg_\ba_\bc_\by_\bL_\bi_\bn_\be_\ba_\br_\bP_\ba_\bt_\bc_\bh_\be_\bs;\n-107 return adaptiveOptions;\n-108 }\n-109\n-_\b1_\b1_\b0 unsigned int _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bA_\bl_\bl_\bL_\be_\bv_\be_\bl_\bs : 1,\n-_\b1_\b1_\b1 _\bi_\bn_\bc_\bl_\bu_\bd_\be_\bB_\ba_\bs_\be_\bL_\be_\bv_\be_\bl_\bI_\bn_\bd_\bi_\bc_\be_\bs : 1,\n-_\b1_\b1_\b2 _\bi_\bn_\bc_\bl_\bu_\bd_\be_\bF_\bV_\ba_\br_\bB_\ba_\bs_\be_\bL_\be_\bv_\be_\bl_\bI_\bn_\bd_\bi_\bc_\be_\bs : 1,\n-_\b1_\b1_\b3 _\bt_\br_\bi_\ba_\bn_\bg_\bu_\bl_\ba_\bt_\be_\bQ_\bu_\ba_\bd_\bs : 1,\n-114\n-_\b1_\b1_\b5 _\bu_\bs_\be_\bS_\bi_\bn_\bg_\bl_\be_\bC_\br_\be_\ba_\bs_\be_\bP_\ba_\bt_\bc_\bh : 1,\n-_\b1_\b1_\b6 _\bu_\bs_\be_\bI_\bn_\bf_\bS_\bh_\ba_\br_\bp_\bP_\ba_\bt_\bc_\bh : 1,\n-_\b1_\b1_\b7 _\bm_\ba_\bx_\bI_\bs_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bL_\be_\bv_\be_\bl : 4,\n-118\n-119 // end-capping\n-_\b1_\b2_\b0 _\be_\bn_\bd_\bC_\ba_\bp_\bT_\by_\bp_\be : 3,\n-_\b1_\b2_\b1 _\bs_\bh_\ba_\br_\be_\bE_\bn_\bd_\bC_\ba_\bp_\bP_\ba_\bt_\bc_\bh_\bP_\bo_\bi_\bn_\bt_\bs : 1,\n-123\n-124 // varying\n-_\b1_\b2_\b5 _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bT_\ba_\bb_\bl_\be_\bs : 1,\n-_\b1_\b2_\b6 _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bs : 1,\n-127\n-128 // face-varying\n-_\b1_\b2_\b9 _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bF_\bV_\ba_\br_\bT_\ba_\bb_\bl_\be_\bs : 1,\n-130\n-131 // precision\n-_\b1_\b3_\b2 _\bp_\ba_\bt_\bc_\bh_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\bD_\bo_\bu_\bb_\bl_\be : 1,\n-_\b1_\b3_\b3 _\bf_\bv_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\bD_\bo_\bu_\bb_\bl_\be : 1,\n-134\n-135 // legacy behaviors (default to true)\n-_\b1_\b3_\b6 _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bF_\bV_\ba_\br_\bL_\be_\bg_\ba_\bc_\by_\bL_\bi_\bn_\be_\ba_\br_\bP_\ba_\bt_\bc_\bh_\be_\bs : 1,\n-_\b1_\b3_\b7 _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bL_\be_\bg_\ba_\bc_\by_\bS_\bh_\ba_\br_\bp_\bC_\bo_\br_\bn_\be_\br_\bP_\ba_\bt_\bc_\bh_\be_\bs : 1;\n-138\n-_\b1_\b3_\b9 int _\bn_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs;\n-_\b1_\b4_\b0 int const * _\bf_\bv_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bI_\bn_\bd_\bi_\bc_\be_\bs;\n-141 };\n-142\n-_\b1_\b7_\b5 static _\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be * _\bC_\br_\be_\ba_\bt_\be(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const & refiner,\n-176 _\bO_\bp_\bt_\bi_\bo_\bn_\bs options = _\bO_\bp_\bt_\bi_\bo_\bn_\bs(),\n-177 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by selectedFaces = _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by());\n-178\n-179public:\n-180 // PatchFaceTag\n-181 //\n-182 // This simple struct was previously used within the factory to take\n-inventory of\n-183 // various kinds of patches to fully allocate buffers prior to populating\n-them. It\n-184 // was not intended to be exposed as part of the public interface.\n-185 //\n-186 // It is no longer used internally and is being kept here to respect\n-preservation\n-187 // of the public interface, but it will be deprecated at the earliest\n-opportunity.\n-188 //\n-191 //\n-_\b1_\b9_\b2 struct _\bP_\ba_\bt_\bc_\bh_\bF_\ba_\bc_\be_\bT_\ba_\bg {\n-193 public:\n-_\b1_\b9_\b4 unsigned int _\b__\bh_\ba_\bs_\bP_\ba_\bt_\bc_\bh : 1;\n-_\b1_\b9_\b5 unsigned int _\b__\bi_\bs_\bR_\be_\bg_\bu_\bl_\ba_\br : 1;\n-_\b1_\b9_\b6 unsigned int _\b__\bt_\br_\ba_\bn_\bs_\bi_\bt_\bi_\bo_\bn_\bM_\ba_\bs_\bk : 4;\n-_\b1_\b9_\b7 unsigned int _\b__\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bM_\ba_\bs_\bk : 4;\n-_\b1_\b9_\b8 unsigned int _\b__\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bn_\bd_\be_\bx : 2;\n-_\b1_\b9_\b9 unsigned int _\b__\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bC_\bo_\bu_\bn_\bt : 3;\n-_\b2_\b0_\b0 unsigned int _\b__\bh_\ba_\bs_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bE_\bd_\bg_\be : 3;\n-_\b2_\b0_\b1 unsigned int _\b__\bi_\bs_\bS_\bi_\bn_\bg_\bl_\be_\bC_\br_\be_\ba_\bs_\be : 1;\n-202\n-_\b2_\b0_\b3 void _\bc_\bl_\be_\ba_\br();\n-_\b2_\b0_\b4 void _\ba_\bs_\bs_\bi_\bg_\bn_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bp_\be_\br_\bt_\bi_\be_\bs_\bF_\br_\bo_\bm_\bE_\bd_\bg_\be_\bM_\ba_\bs_\bk(int boundaryEdgeMask);\n-_\b2_\b0_\b5 void _\ba_\bs_\bs_\bi_\bg_\bn_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bp_\be_\br_\bt_\bi_\be_\bs_\bF_\br_\bo_\bm_\bV_\be_\br_\bt_\be_\bx_\bM_\ba_\bs_\bk(int boundaryVertexMask);\n-_\b2_\b0_\b6 void _\ba_\bs_\bs_\bi_\bg_\bn_\bT_\br_\ba_\bn_\bs_\bi_\bt_\bi_\bo_\bn_\bP_\br_\bo_\bp_\be_\br_\bt_\bi_\be_\bs_\bF_\br_\bo_\bm_\bE_\bd_\bg_\be_\bM_\ba_\bs_\bk(int boundaryVertexMask);\n-207 };\n-_\b2_\b0_\b8 typedef std::vector<PatchFaceTag> _\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bg_\bV_\be_\bc_\bt_\bo_\br;\n-209};\n-210\n-211\n-_\b2_\b1_\b2template <> inline void PatchTableFactory::Options::SetPatchPrecision<float>\n-() {\n-213 _\bp_\ba_\bt_\bc_\bh_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\bD_\bo_\bu_\bb_\bl_\be = false;\n-214}\n-_\b2_\b1_\b5template <> inline void PatchTableFactory::Options::\n-SetFVarPatchPrecision<float>() {\n-216 fvarPatchPrecisionDouble = false;\n-217}\n-218\n-219template <> inline void PatchTableFactory::Options::\n-SetPatchPrecision<double>() {\n-220 patchPrecisionDouble = true;\n-221}\n-222template <> inline void PatchTableFactory::Options::\n-SetFVarPatchPrecision<double>() {\n-223 fvarPatchPrecisionDouble = true;\n-224}\n-225\n-226\n-227} // end namespace Far\n-228\n-229} // end namespace OPENSUBDIV_VERSION\n-230using namespace OPENSUBDIV_VERSION;\n-231\n-232} // end namespace OpenSubdiv\n-233\n-234\n-235#endif /* OPENSUBDIV3_FAR_PATCH_TABLE_FACTORY_H */\n+90} // end namespace Osd\n+91\n+92} //end namespace OPENSUBDIV_VERSION\n+93using namespace OPENSUBDIV_VERSION;\n+94\n+95} //end namespace OpenSubdiv\n+96\n+97#endif //end OPENSUBDIV3_OSD_MTL_PATCH_TABLE_H\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n-Vtr::ConstIndexArray ConstIndexArray\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b4_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\bc_\bt_\bo_\br\n+std::vector< PatchArray > PatchArrayVector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b1_\b3_\b2\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n Container for arrays of parametric patches.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by\n-Factory for constructing a PatchTable from a TopologyRefiner.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b4_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bg_\bV_\be_\bc_\bt_\bo_\br\n-std::vector< PatchFaceTag > PatchTagVector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b2_\b0_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static PatchTable * Create(TopologyRefiner const &refiner, Options\n-options=Options(), ConstIndexArray selectedFaces=ConstIndexArray())\n-Instantiates a PatchTable from a client-provided TopologyRefiner.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n-Public options for the PatchTable factory.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b4_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bT_\ba_\bb_\bl_\be_\bs\n-unsigned int generateVaryingTables\n-Generate varying patch tables.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b2_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bL_\be_\bg_\ba_\bc_\by_\bS_\bh_\ba_\br_\bp_\bC_\bo_\br_\bn_\be_\br_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-unsigned int generateLegacySharpCornerPatches\n-Generate sharp regular patches at smooth corners (legacy)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b3_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bs_\bh_\ba_\br_\be_\bE_\bn_\bd_\bC_\ba_\bp_\bP_\ba_\bt_\bc_\bh_\bP_\bo_\bi_\bn_\bt_\bs\n-unsigned int shareEndCapPatchPoints\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b2_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bG_\be_\bt_\bR_\be_\bf_\bi_\bn_\be_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n-TopologyRefiner::AdaptiveOptions GetRefineAdaptiveOptions() const\n-Determine adaptive refinement options to match assigned patch options.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b0_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bm_\ba_\bx_\bI_\bs_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bL_\be_\bv_\be_\bl\n-unsigned int maxIsolationLevel\n-Cap adaptive feature isolation to the given level (max. 10)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b1_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bG_\be_\bt_\bE_\bn_\bd_\bC_\ba_\bp_\bT_\by_\bp_\be\n-EndCapType GetEndCapType() const\n-Get endcap basis type.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b8_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bF_\bV_\ba_\br_\bL_\be_\bg_\ba_\bc_\by_\bL_\bi_\bn_\be_\ba_\br_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-unsigned int generateFVarLegacyLinearPatches\n-Generate all linear face-varying patches (legacy)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b3_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bS_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn\n-void SetPatchPrecision()\n-Set precision of vertex patches.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bf_\bv_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\bD_\bo_\bu_\bb_\bl_\be\n-unsigned int fvarPatchPrecisionDouble\n-Generate double-precision stencils for face-varying patches.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b3_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bS_\be_\bt_\bM_\ba_\bx_\bI_\bs_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bL_\be_\bv_\be_\bl\n-void SetMaxIsolationLevel(unsigned int level)\n-Set maximum isolation level.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b9_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\be_\bn_\bd_\bC_\ba_\bp_\bT_\by_\bp_\be\n-unsigned int endCapType\n-EndCapType.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b2_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bf_\bv_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bI_\bn_\bd_\bi_\bc_\be_\bs\n-int const * fvarChannelIndices\n-List containing the indices of the channels selected for the factory.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b4_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bu_\bs_\be_\bS_\bi_\bn_\bg_\bl_\be_\bC_\br_\be_\ba_\bs_\be_\bP_\ba_\bt_\bc_\bh\n-unsigned int useSingleCreasePatch\n-Use single crease patch.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b1_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bu_\bs_\be_\bI_\bn_\bf_\bS_\bh_\ba_\br_\bp_\bP_\ba_\bt_\bc_\bh\n-unsigned int useInfSharpPatch\n-Use infinitely-sharp patch.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b1_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bS_\be_\bt_\bE_\bn_\bd_\bC_\ba_\bp_\bT_\by_\bp_\be\n-void SetEndCapType(EndCapType e)\n-Set endcap basis type.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b8_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bs\n-unsigned int generateVaryingLocalPoints\n-Generate local points with varying patches.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b2_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bi_\bn_\bc_\bl_\bu_\bd_\be_\bF_\bV_\ba_\br_\bB_\ba_\bs_\be_\bL_\be_\bv_\be_\bl_\bI_\bn_\bd_\bi_\bc_\be_\bs\n-unsigned int includeFVarBaseLevelIndices\n-Include base level in face-varying patch point indices (Uniform mode only)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b1_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bA_\bl_\bl_\bL_\be_\bv_\be_\bl_\bs\n-unsigned int generateAllLevels\n-Generate levels from 'firstLevel' to 'maxLevel' (Uniform mode only)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b1_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bp_\ba_\bt_\bc_\bh_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\bD_\bo_\bu_\bb_\bl_\be\n-unsigned int patchPrecisionDouble\n-Generate double-precision stencils for vertex patches.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bF_\bV_\ba_\br_\bT_\ba_\bb_\bl_\be_\bs\n-unsigned int generateFVarTables\n-Generate face-varying patch tables.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b2_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bi_\bn_\bc_\bl_\bu_\bd_\be_\bB_\ba_\bs_\be_\bL_\be_\bv_\be_\bl_\bI_\bn_\bd_\bi_\bc_\be_\bs\n-unsigned int includeBaseLevelIndices\n-Include base level in patch point indices (Uniform mode only)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b1_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bS_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn\n-void SetFVarPatchPrecision()\n-Set precision of face-varying patches.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bn_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs\n-int numFVarChannels\n-Number of channel indices and interpolation modes passed.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b3_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bt_\br_\bi_\ba_\bn_\bg_\bu_\bl_\ba_\bt_\be_\bQ_\bu_\ba_\bd_\bs\n-unsigned int triangulateQuads\n-Triangulate 'QUADS' primitives (Uniform mode only)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b1_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bE_\bn_\bd_\bC_\ba_\bp_\bT_\by_\bp_\be\n-EndCapType\n-Choice for approximating irregular patches (end-caps)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bE_\bN_\bD_\bC_\bA_\bP_\b__\bL_\bE_\bG_\bA_\bC_\bY_\b__\bG_\bR_\bE_\bG_\bO_\bR_\bY\n-@ ENDCAP_LEGACY_GREGORY\n-legacy option for 2.x style Gregory patches (Catmark only)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b6_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bE_\bN_\bD_\bC_\bA_\bP_\b__\bG_\bR_\bE_\bG_\bO_\bR_\bY_\b__\bB_\bA_\bS_\bI_\bS\n-@ ENDCAP_GREGORY_BASIS\n-use Gregory patches (highest quality, recommended default)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bE_\bN_\bD_\bC_\bA_\bP_\b__\bN_\bO_\bN_\bE\n-@ ENDCAP_NONE\n-unspecified\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bE_\bN_\bD_\bC_\bA_\bP_\b__\bB_\bI_\bL_\bI_\bN_\bE_\bA_\bR_\b__\bB_\bA_\bS_\bI_\bS\n-@ ENDCAP_BILINEAR_BASIS\n-use linear patches (simple quads or tris)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bE_\bN_\bD_\bC_\bA_\bP_\b__\bB_\bS_\bP_\bL_\bI_\bN_\bE_\b__\bB_\bA_\bS_\bI_\bS\n-@ ENDCAP_BSPLINE_BASIS\n-use BSpline-like patches (same patch type as regular)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n-Options(unsigned int maxIsolation=10)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b6_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bF_\ba_\bc_\be_\bT_\ba_\bg\n-Obsolete internal struct not intended for public use \u00e2\u0080\u0093 due to be deprecated.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b9_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bF_\ba_\bc_\be_\bT_\ba_\bg_\b:_\b:\n-_\b__\bi_\bs_\bS_\bi_\bn_\bg_\bl_\be_\bC_\br_\be_\ba_\bs_\be\n-unsigned int _isSingleCrease\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b2_\b0_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bF_\ba_\bc_\be_\bT_\ba_\bg_\b:_\b:\n-_\b__\bi_\bs_\bR_\be_\bg_\bu_\bl_\ba_\br\n-unsigned int _isRegular\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b9_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bF_\ba_\bc_\be_\bT_\ba_\bg_\b:_\b:\n-_\b__\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bn_\bd_\be_\bx\n-unsigned int _boundaryIndex\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b9_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bF_\ba_\bc_\be_\bT_\ba_\bg_\b:_\b:\n-_\ba_\bs_\bs_\bi_\bg_\bn_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bp_\be_\br_\bt_\bi_\be_\bs_\bF_\br_\bo_\bm_\bV_\be_\br_\bt_\be_\bx_\bM_\ba_\bs_\bk\n-void assignBoundaryPropertiesFromVertexMask(int boundaryVertexMask)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bF_\ba_\bc_\be_\bT_\ba_\bg_\b:_\b:\n-_\b__\bt_\br_\ba_\bn_\bs_\bi_\bt_\bi_\bo_\bn_\bM_\ba_\bs_\bk\n-unsigned int _transitionMask\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b9_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bF_\ba_\bc_\be_\bT_\ba_\bg_\b:_\b:\n-_\b__\bh_\ba_\bs_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bE_\bd_\bg_\be\n-unsigned int _hasBoundaryEdge\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b2_\b0_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bF_\ba_\bc_\be_\bT_\ba_\bg_\b:_\b:\n-_\b__\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bM_\ba_\bs_\bk\n-unsigned int _boundaryMask\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b9_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bF_\ba_\bc_\be_\bT_\ba_\bg_\b:_\b:_\b__\bh_\ba_\bs_\bP_\ba_\bt_\bc_\bh\n-unsigned int _hasPatch\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b9_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bF_\ba_\bc_\be_\bT_\ba_\bg_\b:_\b:\n-_\ba_\bs_\bs_\bi_\bg_\bn_\bT_\br_\ba_\bn_\bs_\bi_\bt_\bi_\bo_\bn_\bP_\br_\bo_\bp_\be_\br_\bt_\bi_\be_\bs_\bF_\br_\bo_\bm_\bE_\bd_\bg_\be_\bM_\ba_\bs_\bk\n-void assignTransitionPropertiesFromEdgeMask(int boundaryVertexMask)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bF_\ba_\bc_\be_\bT_\ba_\bg_\b:_\b:_\bc_\bl_\be_\ba_\br\n-void clear()\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bF_\ba_\bc_\be_\bT_\ba_\bg_\b:_\b:\n-_\ba_\bs_\bs_\bi_\bg_\bn_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bp_\be_\br_\bt_\bi_\be_\bs_\bF_\br_\bo_\bm_\bE_\bd_\bg_\be_\bM_\ba_\bs_\bk\n-void assignBoundaryPropertiesFromEdgeMask(int boundaryEdgeMask)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bF_\ba_\bc_\be_\bT_\ba_\bg_\b:_\b:\n-_\b__\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bC_\bo_\bu_\bn_\bt\n-unsigned int _boundaryCount\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b9_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br\n-Stores topology data for a specified set of refinement options.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b5_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n-Adaptive refinement options.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b5_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bu_\bs_\be_\bS_\bi_\bn_\bg_\bl_\be_\bC_\br_\be_\ba_\bs_\be_\bP_\ba_\bt_\bc_\bh\n-unsigned int useSingleCreasePatch\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b7_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bu_\bs_\be_\bI_\bn_\bf_\bS_\bh_\ba_\br_\bp_\bP_\ba_\bt_\bc_\bh\n-unsigned int useInfSharpPatch\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b7_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bc_\bo_\bn_\bs_\bi_\bd_\be_\br_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs\n-unsigned int considerFVarChannels\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b8_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b5_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bm_\bo_\bn_\b._\bh_\b:_\b4_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b4_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs\n+PatchArrayVector const & GetPatchArrays() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\ba_\bl_\bl_\bo_\bc_\ba_\bt_\be\n+bool allocate(Far::PatchTable const *farPatchTable, MTLContext *context)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n+static MTLPatchTable * Create(Far::PatchTable const *farPatchTable, MTLContext\n+*context)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+id< MTLBuffer > GetVaryingPatchIndexBuffer() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bf_\bv_\ba_\br_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bs\n+std::vector< id< MTLBuffer > > _fvarIndexBuffers\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b8_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br\n+id< MTLBuffer > GetFVarPatchParamBuffer(int fvarChannel=0) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+MTLPatchTable()\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br\n+id< MTLBuffer > GetPatchParamBuffer() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+id< MTLBuffer > GetPatchIndexBuffer() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bp_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs\n+PatchArrayVector _patchArrays\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bB_\bi_\bn_\bd_\bi_\bn_\bg\n+id< MTLBuffer > VertexBufferBinding\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b4_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs\n+int GetNumFVarChannels() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs\n+PatchArrayVector const & GetFVarPatchArrays(int fvarChannel=0) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+id< MTLBuffer > _varyingPatchIndexBuffer\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b8_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bf_\bv_\ba_\br_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br_\bs\n+std::vector< id< MTLBuffer > > _fvarParamBuffers\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b8_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bf_\bv_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs\n+std::vector< PatchArrayVector > _fvarPatchArrays\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b8_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br\n+id< MTLBuffer > _patchParamBuffer\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs\n+PatchArrayVector _varyingPatchArrays\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b8_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n+static MTLPatchTable * Create(Far::PatchTable const *farPatchTable,\n+DEVICE_CONTEXT context)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b~_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+~MTLPatchTable()\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+id< MTLBuffer > GetFVarPatchIndexBuffer(int fvarChannel=0) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs\n+PatchArrayVector const & GetVaryingPatchArrays() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bi_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+id< MTLBuffer > _indexBuffer\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b8\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bf_\ba_\br\n-    * _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bm_\bt_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00779.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00779.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/far/patchMap.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/osd/glPatchTable.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -90,44 +90,45 @@\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> &#124;\n <a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">patchMap.h File Reference</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">glPatchTable.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00761_source.html\">../far/patchTable.h</a>&quot;</code><br />\n-<code>#include &lt;cassert&gt;</code><br />\n+<code>#include &quot;../osd/nonCopyable.h&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00722_source.html\">../osd/opengl.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a01489_source.html\">../osd/types.h</a>&quot;</code><br />\n+<code>#include &lt;vector&gt;</code><br />\n </div>\n <p><a href=\"a00779_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00977.html\">PatchMap</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">An quadtree-based map connecting coarse faces to their sub-patches.  <a href=\"a00977.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00985.html\">PatchMap::QuadNode::Child</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01237.html\">GLPatchTable</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7f420b72a822828cfa8b0561c695a5cc.html\">far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00779.html\">patchMap.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00779.html\">glPatchTable.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,28 +1,28 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-patchMap.h File Reference\n+glPatchTable.h File Reference\n #include \"../version.h\"\n-#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh\"\n-#include <cassert>\n+#include \"../osd/nonCopyable.h\"\n+#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bo_\bp_\be_\bn_\bg_\bl_\b._\bh\"\n+#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n+#include <vector>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n- class \u00a0 _\bP_\ba_\bt_\bc_\bh_\bM_\ba_\bp\n-\u00a0        An quadtree-based map connecting coarse faces to their sub-patches.\n-         _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bP_\ba_\bt_\bc_\bh_\bM_\ba_\bp_\b:_\b:_\bQ_\bu_\ba_\bd_\bN_\bo_\bd_\be_\b:_\b:_\bC_\bh_\bi_\bl_\bd\n+class \u00a0 _\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br\n \u00a0\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n+\u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bf_\ba_\br\n-    * _\bp_\ba_\bt_\bc_\bh_\bM_\ba_\bp_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00779.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00779.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,4 +1,3 @@\n var a00779 = [\n-    [\"PatchMap\", \"a00977.html\", \"a00977\"],\n-    [\"Child\", \"a00985.html\", \"a00985\"]\n+    [\"GLPatchTable\", \"a01237.html\", \"a01237\"]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00779_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00779_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/far/patchMap.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/osd/glPatchTable.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">patchMap.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">glPatchTable.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00779.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2013 Pixar</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2015 Pixar</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -119,222 +119,200 @@\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_FAR_PATCH_MAP_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_FAR_PATCH_MAP_H</span></div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_GL_PATCH_TABLE_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_GL_PATCH_TABLE_H</span></div>\n <div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n <div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n <div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../far/patchTable.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &lt;cassert&gt;</span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../osd/nonCopyable.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../osd/opengl.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &quot;../osd/types.h&quot;</span></div>\n <div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">namespace </span>Far {</div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span> </div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n <div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00049\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00977.html\">   49</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a00977.html\">PatchMap</a> {</div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span> </div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00977.html#ae83a6047fa1e373c7943d54b6dc46402\">   52</a></span>    <span class=\"keyword\">typedef</span> <a class=\"code hl_class\" href=\"a00997.html\">PatchTable::PatchHandle</a> <a class=\"code hl_typedef\" href=\"a00977.html#ae83a6047fa1e373c7943d54b6dc46402\">Handle</a>;</div>\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span><span class=\"keyword\">namespace </span>Far{</div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span>    <span class=\"keyword\">class </span>PatchTable;</div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span>};</div>\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span> </div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"keyword\">namespace </span>Osd {</div>\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00045\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html\">   45</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01237.html\">GLPatchTable</a> : <span class=\"keyword\">private</span> NonCopyable&lt;GLPatchTable&gt; {</div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#a02af2ea2e9328a776b5b0bb3edf88864\">   47</a></span>    <span class=\"keyword\">typedef</span> GLuint <a class=\"code hl_typedef\" href=\"a01237.html#a02af2ea2e9328a776b5b0bb3edf88864\">VertexBufferBinding</a>;</div>\n+<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span> </div>\n+<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#a27e3bbc29608fb5ded788e1a6d068da7\">   49</a></span>    <a class=\"code hl_function\" href=\"a01237.html#a27e3bbc29608fb5ded788e1a6d068da7\">~GLPatchTable</a>();</div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span> </div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#a406bb6da6d3805b2b3d8e462ba4d1a47\">   51</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01237.html\">GLPatchTable</a> *<a class=\"code hl_function\" href=\"a01237.html#a406bb6da6d3805b2b3d8e462ba4d1a47\">Create</a>(<a class=\"code hl_class\" href=\"a00993.html\">Far::PatchTable</a> <span class=\"keyword\">const</span> *farPatchTable,</div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span>                                <span class=\"keywordtype\">void</span> *deviceContext = NULL);</div>\n <div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span> </div>\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00977.html#a016619de52fd79dbcdb879cc12b79200\">   58</a></span>    <a class=\"code hl_function\" href=\"a00977.html#a016619de52fd79dbcdb879cc12b79200\">PatchMap</a>( <a class=\"code hl_class\" href=\"a00993.html\">PatchTable</a> <span class=\"keyword\">const</span> &amp; patchTable );</div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span> </div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span>    <a class=\"code hl_class\" href=\"a00997.html\">Handle</a> <span class=\"keyword\">const</span> * <a class=\"code hl_function\" href=\"a00977.html#abc70f9419d5f26ef85cbef5c5b6451f0\">FindPatch</a>( <span class=\"keywordtype\">int</span> patchFaceId, <span class=\"keywordtype\">double</span> u, <span class=\"keywordtype\">double</span> v ) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span> </div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span>    <span class=\"keywordtype\">void</span> initializeHandles(<a class=\"code hl_class\" href=\"a00993.html\">PatchTable</a> <span class=\"keyword\">const</span> &amp; patchTable);</div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span>    <span class=\"keywordtype\">void</span> initializeQuadtree(<a class=\"code hl_class\" href=\"a00993.html\">PatchTable</a> <span class=\"keyword\">const</span> &amp; patchTable);</div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span> </div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>    <span class=\"comment\">// Quadtree node with 4 children, tree is just a vector of nodes</span></div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>    <span class=\"keyword\">struct </span>QuadNode {</div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>        QuadNode() { std::memset(<span class=\"keyword\">this</span>, 0, <span class=\"keyword\">sizeof</span>(QuadNode)); }</div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00085\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00985.html\">   85</a></span>        <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a00985.html\">Child</a> {</div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00985.html#ad3e71fff03a23f93fef41adc5d367435\">   86</a></span>            <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"a00985.html#ad3e71fff03a23f93fef41adc5d367435\">isSet</a>  :  1;  <span class=\"comment\">// true if the child has been set</span></div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00985.html#a07e7a9f4469398070886a336d833daa9\">   87</a></span>            <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"a00985.html#a07e7a9f4469398070886a336d833daa9\">isLeaf</a> :  1;  <span class=\"comment\">// true if the child is a QuadNode</span></div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00985.html#a589d64202487f78e3cc30dd2e04c5201\">   88</a></span>            <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"a00985.html#a589d64202487f78e3cc30dd2e04c5201\">index</a>  : 30;  <span class=\"comment\">// child index (either QuadNode or Handle)</span></div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>        };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span> </div>\n-<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>        <span class=\"comment\">// sets all the children to point to the patch of given index</span></div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>        <span class=\"keywordtype\">void</span> SetChildren(<span class=\"keywordtype\">int</span> index);</div>\n+<div class=\"foldopen\" id=\"foldopen00055\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#a18e3d09b0c7b7552f8e419e36788166a\">   55</a></span>    <a class=\"code hl_typedef\" href=\"a00912.html#a98098cd229f60d2397d84a76fe654a31\">PatchArrayVector</a> <span class=\"keyword\">const</span> &amp;<a class=\"code hl_function\" href=\"a01237.html#a18e3d09b0c7b7552f8e419e36788166a\">GetPatchArrays</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01237.html#a5dfb6b58580f2dec58e9b5bfdb4ed9f1\">_patchArrays</a>;</div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00060\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#aa22b6cb3f4bbb8edaaa553389e080e40\">   60</a></span>    GLuint <a class=\"code hl_function\" href=\"a01237.html#aa22b6cb3f4bbb8edaaa553389e080e40\">GetPatchIndexBuffer</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01237.html#a60ed91ae6ab2018bcc0d4f3db4f0d2e9\">_patchIndexBuffer</a>;</div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00065\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#a645a6698ee27f028eb10e8a43044bf7f\">   65</a></span>    GLuint <a class=\"code hl_function\" href=\"a01237.html#a645a6698ee27f028eb10e8a43044bf7f\">GetPatchParamBuffer</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01237.html#afcbe2b12b775d32f606ee7e347dba51a\">_patchParamBuffer</a>;</div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00070\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#ac1366e74b619cfb89c4c2df52b7aa697\">   70</a></span>    GLuint <a class=\"code hl_function\" href=\"a01237.html#ac1366e74b619cfb89c4c2df52b7aa697\">GetPatchIndexTextureBuffer</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01237.html#abbedd905fe4d0e32460f82d1aa9bf360\">_patchIndexTexture</a>;</div>\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00075\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#a2b6605b35fc9437ab5750d6929fc66d8\">   75</a></span>    GLuint <a class=\"code hl_function\" href=\"a01237.html#a2b6605b35fc9437ab5750d6929fc66d8\">GetPatchParamTextureBuffer</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01237.html#a698f8b3d96e62c8512eb3881c8112978\">_patchParamTexture</a>;</div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00080\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#aec45672f51f456fea341d644bcf16434\">   80</a></span>    <a class=\"code hl_typedef\" href=\"a00912.html#a98098cd229f60d2397d84a76fe654a31\">PatchArrayVector</a> <span class=\"keyword\">const</span> &amp;<a class=\"code hl_function\" href=\"a01237.html#aec45672f51f456fea341d644bcf16434\">GetVaryingPatchArrays</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01237.html#acd99a0391b3b04586b11051fd0f7ed10\">_varyingPatchArrays</a>;</div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00085\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#ae0df6dbe9e1a7425c18c063dd55335f0\">   85</a></span>    GLuint <a class=\"code hl_function\" href=\"a01237.html#ae0df6dbe9e1a7425c18c063dd55335f0\">GetVaryingPatchIndexBuffer</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01237.html#a30ba44ce4fe4d55733bb32e59a0f564f\">_varyingIndexBuffer</a>;</div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00090\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#ac444539beb3cfb4b80ea5119a705b662\">   90</a></span>    GLuint <a class=\"code hl_function\" href=\"a01237.html#ac444539beb3cfb4b80ea5119a705b662\">GetVaryingPatchIndexTextureBuffer</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01237.html#a45c78bbbee12b05b67a5709c0c9e3edf\">_varyingIndexTexture</a>;</div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>    }</div>\n+</div>\n <div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span> </div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>        <span class=\"comment\">// sets the child in &quot;quadrant&quot; to point to the node or patch of the given index</span></div>\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span>        <span class=\"keywordtype\">void</span> SetChild(<span class=\"keywordtype\">int</span> quadrant, <span class=\"keywordtype\">int</span> index, <span class=\"keywordtype\">bool</span> isLeaf);</div>\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#aa9be824a572029f3ec1e0c0d6cfecd77\">   95</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01237.html#aa9be824a572029f3ec1e0c0d6cfecd77\">GetNumFVarChannels</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (<span class=\"keywordtype\">int</span>)<a class=\"code hl_variable\" href=\"a01237.html#abce41960eb6bedc82cbf0cb711ea66da\">_fvarPatchArrays</a>.size(); }</div>\n <div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span> </div>\n-<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>        <a class=\"code hl_struct\" href=\"a00985.html\">Child</a> children[4];</div>\n-<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span>    };</div>\n-<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span>    <span class=\"keyword\">typedef</span> std::vector&lt;QuadNode&gt; QuadTree;</div>\n-<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span> </div>\n-<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span>    <span class=\"comment\">// Internal methods supporting quadtree construction and queries</span></div>\n-<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span>    <span class=\"keywordtype\">void</span>       assignRootNode(QuadNode * node, <span class=\"keywordtype\">int</span> index);</div>\n-<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span>    QuadNode * assignLeafOrChildNode(QuadNode * node, <span class=\"keywordtype\">bool</span> isLeaf, <span class=\"keywordtype\">int</span> quad, <span class=\"keywordtype\">int</span> index);</div>\n-<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span> </div>\n-<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T&gt;</div>\n-<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">int</span> transformUVToQuadQuadrant(T <span class=\"keyword\">const</span> &amp; median, T &amp; u, T &amp; v);</div>\n-<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T&gt;</div>\n-<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">int</span> transformUVToTriQuadrant(T <span class=\"keyword\">const</span> &amp; median, T &amp; u, T &amp; v, <span class=\"keywordtype\">bool</span> &amp; rotated);</div>\n-<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span> </div>\n-<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span>    <span class=\"keywordtype\">bool</span> _patchesAreTriangular;  <span class=\"comment\">// tri and quad assembly and search requirements differ</span></div>\n-<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span> </div>\n-<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span>    <span class=\"keywordtype\">int</span>  _minPatchFace;  <span class=\"comment\">// minimum patch face index supported by the map</span></div>\n-<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span>    <span class=\"keywordtype\">int</span>  _maxPatchFace;  <span class=\"comment\">// maximum patch face index supported by the map</span></div>\n-<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span>    <span class=\"keywordtype\">int</span>  _maxDepth;      <span class=\"comment\">// maximum depth of a patch in the tree</span></div>\n+<div class=\"foldopen\" id=\"foldopen00098\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#ab4ae92f2c242d25fa0480d0307e0d9e5\">   98</a></span>    <a class=\"code hl_typedef\" href=\"a00912.html#a98098cd229f60d2397d84a76fe654a31\">PatchArrayVector</a> <span class=\"keyword\">const</span> &amp;<a class=\"code hl_function\" href=\"a01237.html#ab4ae92f2c242d25fa0480d0307e0d9e5\">GetFVarPatchArrays</a>(<span class=\"keywordtype\">int</span> fvarChannel = 0)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01237.html#abce41960eb6bedc82cbf0cb711ea66da\">_fvarPatchArrays</a>[fvarChannel];</div>\n+<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00103\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#a2657089828a2062a96ae15b4ea2d9bbf\">  103</a></span>    GLuint <a class=\"code hl_function\" href=\"a01237.html#a2657089828a2062a96ae15b4ea2d9bbf\">GetFVarPatchIndexBuffer</a>(<span class=\"keywordtype\">int</span> fvarChannel = 0)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01237.html#a0e48596d8f2ffc1ce58bcf64cea7ec06\">_fvarIndexBuffers</a>[fvarChannel];</div>\n+<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00108\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#a95e40964621a631c5accc1a6e9bc85c7\">  108</a></span>    GLuint <a class=\"code hl_function\" href=\"a01237.html#a95e40964621a631c5accc1a6e9bc85c7\">GetFVarPatchIndexTextureBuffer</a>(<span class=\"keywordtype\">int</span> fvarChannel = 0)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01237.html#ab7e41e6a4b6c3fb8faeb136fc6e64998\">_fvarIndexTextures</a>[fvarChannel];</div>\n+<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00113\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#a6693fe16c1c27f92acdcd0716a6656e1\">  113</a></span>    GLuint <a class=\"code hl_function\" href=\"a01237.html#a6693fe16c1c27f92acdcd0716a6656e1\">GetFVarPatchParamBuffer</a>(<span class=\"keywordtype\">int</span> fvarChannel = 0)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01237.html#a2a8e1501f85608c6309e00955b6197dc\">_fvarParamBuffers</a>[fvarChannel];</div>\n+<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span>    }</div>\n+</div>\n <div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\">  116</span> </div>\n-<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span>    std::vector&lt;Handle&gt;   _handles;  <span class=\"comment\">// all the patches in the PatchTable</span></div>\n-<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\">  118</span>    std::vector&lt;QuadNode&gt; _quadtree; <span class=\"comment\">// quadtree nodes</span></div>\n-<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span> </div>\n-<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\">  121</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span><span class=\"comment\">//  Given a median value for both U and V, these methods transform a (u,v) pair</span></div>\n-<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span><span class=\"comment\">//  into the quadrant that contains them and returns the quadrant index.</span></div>\n-<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span><span class=\"comment\">//  Quadrant indexing for tri and quad patches -- consistent with PatchParam&#39;s</span></div>\n-<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span><span class=\"comment\">//  usage of UV bits:</span></div>\n-<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span><span class=\"comment\">//      (0,1) o-----o-----o (1,1)     (0,1) o     (1,0) o-----o-----o (0,0)  </span></div>\n-<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span><span class=\"comment\">//            |     |     |                 |\\           \\  1 |\\  0 |        </span></div>\n-<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span><span class=\"comment\">//            |  2  |  3  |                 |  \\           \\  |  \\  |        </span></div>\n-<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\">  131</span><span class=\"comment\">//            |     |     |                 | 2  \\           \\| 3  \\|        </span></div>\n-<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\">  132</span><span class=\"comment\">//            o-----o-----o                 o-----o           o-----o        </span></div>\n-<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\">  133</span><span class=\"comment\">//            |     |     |                 |\\  3 |\\           \\  2 |        </span></div>\n-<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\">  134</span><span class=\"comment\">//            |  0  |  1  |                 |  \\  |  \\           \\  |        </span></div>\n-<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\">  135</span><span class=\"comment\">//            |     |     |                 | 0  \\| 1  \\           \\|        </span></div>\n-<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\">  136</span><span class=\"comment\">//      (0,0) o-----o-----o (1,0)     (0,0) o-----o-----o (1,0)     o (0,1)  </span></div>\n-<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\">  137</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\">  138</span><span class=\"comment\">//  The triangular case also takes and returns/affects the rotation of the</span></div>\n-<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\">  139</span><span class=\"comment\">//  quadrant being searched and identified (quadrant 3 imparts a rotation).</span></div>\n-<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\">  140</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\">  141</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T&gt;</div>\n-<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span></div>\n-<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\">  143</span>PatchMap::transformUVToQuadQuadrant(T <span class=\"keyword\">const</span> &amp; median, T &amp; u, T &amp; v) {</div>\n-<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\">  144</span> </div>\n-<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\">  145</span>    <span class=\"keywordtype\">int</span> uHalf = (u &gt;= median);</div>\n-<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\">  146</span>    <span class=\"keywordflow\">if</span> (uHalf) u -= median;</div>\n+<div class=\"foldopen\" id=\"foldopen00118\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#aa0d257bdc8fd9e5180f9b210fdc50209\">  118</a></span>    GLuint <a class=\"code hl_function\" href=\"a01237.html#aa0d257bdc8fd9e5180f9b210fdc50209\">GetFVarPatchParamTextureBuffer</a>(<span class=\"keywordtype\">int</span> fvarChannel = 0)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01237.html#a554c6f7c7544b621ca3f8f824cdc7e8e\">_fvarParamTextures</a>[fvarChannel];</div>\n+<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\">  121</span> </div>\n+<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span><span class=\"keyword\">protected</span>:</div>\n+<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#a88c12681f62189c398c1d2dc32111264\">  123</a></span>    <a class=\"code hl_function\" href=\"a01237.html#a88c12681f62189c398c1d2dc32111264\">GLPatchTable</a>();</div>\n+<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span> </div>\n+<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span>    <span class=\"comment\">// allocate buffers from patchTable</span></div>\n+<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#a32a4da2f65047256f15d6607236752be\">  126</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01237.html#a32a4da2f65047256f15d6607236752be\">allocate</a>(<a class=\"code hl_class\" href=\"a00993.html\">Far::PatchTable</a> <span class=\"keyword\">const</span> *farPatchTable);</div>\n+<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span> </div>\n+<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#a5dfb6b58580f2dec58e9b5bfdb4ed9f1\">  128</a></span>    <a class=\"code hl_typedef\" href=\"a00912.html#a98098cd229f60d2397d84a76fe654a31\">PatchArrayVector</a> <a class=\"code hl_variable\" href=\"a01237.html#a5dfb6b58580f2dec58e9b5bfdb4ed9f1\">_patchArrays</a>;</div>\n+<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span> </div>\n+<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#a60ed91ae6ab2018bcc0d4f3db4f0d2e9\">  130</a></span>    GLuint <a class=\"code hl_variable\" href=\"a01237.html#a60ed91ae6ab2018bcc0d4f3db4f0d2e9\">_patchIndexBuffer</a>;</div>\n+<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#afcbe2b12b775d32f606ee7e347dba51a\">  131</a></span>    GLuint <a class=\"code hl_variable\" href=\"a01237.html#afcbe2b12b775d32f606ee7e347dba51a\">_patchParamBuffer</a>;</div>\n+<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\">  132</span> </div>\n+<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#abbedd905fe4d0e32460f82d1aa9bf360\">  133</a></span>    GLuint <a class=\"code hl_variable\" href=\"a01237.html#abbedd905fe4d0e32460f82d1aa9bf360\">_patchIndexTexture</a>;</div>\n+<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#a698f8b3d96e62c8512eb3881c8112978\">  134</a></span>    GLuint <a class=\"code hl_variable\" href=\"a01237.html#a698f8b3d96e62c8512eb3881c8112978\">_patchParamTexture</a>;</div>\n+<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\">  135</span> </div>\n+<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#acd99a0391b3b04586b11051fd0f7ed10\">  136</a></span>    <a class=\"code hl_typedef\" href=\"a00912.html#a98098cd229f60d2397d84a76fe654a31\">PatchArrayVector</a> <a class=\"code hl_variable\" href=\"a01237.html#acd99a0391b3b04586b11051fd0f7ed10\">_varyingPatchArrays</a>;</div>\n+<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#a30ba44ce4fe4d55733bb32e59a0f564f\">  137</a></span>    GLuint <a class=\"code hl_variable\" href=\"a01237.html#a30ba44ce4fe4d55733bb32e59a0f564f\">_varyingIndexBuffer</a>;</div>\n+<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#a45c78bbbee12b05b67a5709c0c9e3edf\">  138</a></span>    GLuint <a class=\"code hl_variable\" href=\"a01237.html#a45c78bbbee12b05b67a5709c0c9e3edf\">_varyingIndexTexture</a>;</div>\n+<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\">  139</span> </div>\n+<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#abce41960eb6bedc82cbf0cb711ea66da\">  140</a></span>    std::vector&lt;PatchArrayVector&gt; <a class=\"code hl_variable\" href=\"a01237.html#abce41960eb6bedc82cbf0cb711ea66da\">_fvarPatchArrays</a>;</div>\n+<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#a0e48596d8f2ffc1ce58bcf64cea7ec06\">  141</a></span>    std::vector&lt;GLuint&gt; <a class=\"code hl_variable\" href=\"a01237.html#a0e48596d8f2ffc1ce58bcf64cea7ec06\">_fvarIndexBuffers</a>;</div>\n+<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#ab7e41e6a4b6c3fb8faeb136fc6e64998\">  142</a></span>    std::vector&lt;GLuint&gt; <a class=\"code hl_variable\" href=\"a01237.html#ab7e41e6a4b6c3fb8faeb136fc6e64998\">_fvarIndexTextures</a>;</div>\n+<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\">  143</span> </div>\n+<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#a2a8e1501f85608c6309e00955b6197dc\">  144</a></span>    std::vector&lt;GLuint&gt; <a class=\"code hl_variable\" href=\"a01237.html#a2a8e1501f85608c6309e00955b6197dc\">_fvarParamBuffers</a>;</div>\n+<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#a554c6f7c7544b621ca3f8f824cdc7e8e\">  145</a></span>    std::vector&lt;GLuint&gt; <a class=\"code hl_variable\" href=\"a01237.html#a554c6f7c7544b621ca3f8f824cdc7e8e\">_fvarParamTextures</a>;</div>\n+<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\">  146</span>};</div>\n+</div>\n <div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\">  147</span> </div>\n-<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\">  148</span>    <span class=\"keywordtype\">int</span> vHalf = (v &gt;= median);</div>\n-<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\">  149</span>    <span class=\"keywordflow\">if</span> (vHalf) v -= median;</div>\n+<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\">  148</span> </div>\n+<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\">  149</span>}  <span class=\"comment\">// end namespace Osd</span></div>\n <div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\">  150</span> </div>\n-<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\">  151</span>    <span class=\"keywordflow\">return</span> (vHalf &lt;&lt; 1) | uHalf;</div>\n-<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\">  152</span>}</div>\n-<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\">  153</span>    </div>\n-<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\">  154</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T&gt;</div>\n-<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\">  155</span><span class=\"keywordtype\">int</span> <span class=\"keyword\">inline</span></div>\n-<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\">  156</span>PatchMap::transformUVToTriQuadrant(T <span class=\"keyword\">const</span> &amp; median, T &amp; u, T &amp; v, <span class=\"keywordtype\">bool</span> &amp; rotated) {</div>\n-<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\">  157</span>    </div>\n-<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\">  158</span>    <span class=\"keywordflow\">if</span> (!rotated) {</div>\n-<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\">  159</span>        <span class=\"keywordflow\">if</span> (u &gt;= median) {</div>\n-<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\">  160</span>            u -= median;</div>\n-<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\">  161</span>            <span class=\"keywordflow\">return</span> 1;</div>\n-<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\">  162</span>        }</div>\n-<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\">  163</span>        <span class=\"keywordflow\">if</span> (v &gt;= median) {</div>\n-<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\">  164</span>            v -= median;</div>\n-<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\">  165</span>            <span class=\"keywordflow\">return</span> 2;</div>\n-<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\">  166</span>        }</div>\n-<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\">  167</span>        <span class=\"keywordflow\">if</span> ((u + v) &gt;= median) {</div>\n-<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\">  168</span>            rotated = <span class=\"keyword\">true</span>;</div>\n-<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\">  169</span>            <span class=\"keywordflow\">return</span> 3;</div>\n-<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\">  170</span>        }</div>\n-<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span>        <span class=\"keywordflow\">return</span> 0;</div>\n-<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\">  172</span>    } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\">  173</span>        <span class=\"keywordflow\">if</span> (u &lt; median) {</div>\n-<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\">  174</span>            v -= median;</div>\n-<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\">  175</span>            <span class=\"keywordflow\">return</span> 1;</div>\n-<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\">  176</span>        }</div>\n-<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span>        <span class=\"keywordflow\">if</span> (v &lt; median) {</div>\n-<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\">  178</span>            u -= median;</div>\n-<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\">  179</span>            <span class=\"keywordflow\">return</span> 2;</div>\n-<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\">  180</span>        }</div>\n-<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\">  181</span>        u -= median;</div>\n-<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\">  182</span>        v -= median;</div>\n-<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\">  183</span>        <span class=\"keywordflow\">if</span> ((u + v) &lt; median) {</div>\n-<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\">  184</span>            rotated = <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\">  185</span>            <span class=\"keywordflow\">return</span> 3;</div>\n-<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\">  186</span>        }</div>\n-<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\">  187</span>        <span class=\"keywordflow\">return</span> 0;</div>\n-<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\">  188</span>    }</div>\n-<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\">  189</span>}</div>\n-<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\">  190</span> </div>\n-<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\">  192</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00977.html#ae83a6047fa1e373c7943d54b6dc46402\">PatchMap::Handle</a> <span class=\"keyword\">const</span> *</div>\n-<div class=\"foldopen\" id=\"foldopen00193\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00977.html#abc70f9419d5f26ef85cbef5c5b6451f0\">  193</a></span><a class=\"code hl_function\" href=\"a00977.html#abc70f9419d5f26ef85cbef5c5b6451f0\">PatchMap::FindPatch</a>( <span class=\"keywordtype\">int</span> faceid, <span class=\"keywordtype\">double</span> u, <span class=\"keywordtype\">double</span> v )<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\">  194</span> </div>\n-<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\">  195</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\">  196</span>    <span class=\"comment\">//  Reject patch faces not supported by this map, or those corresponding</span></div>\n-<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\">  197</span>    <span class=\"comment\">//  to holes or otherwise unassigned (the root node for a patch will</span></div>\n-<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\">  198</span>    <span class=\"comment\">//  have all or no quadrants set):</span></div>\n-<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\">  199</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\">  200</span>    <span class=\"keywordflow\">if</span> ((faceid &lt; _minPatchFace) || (faceid &gt; _maxPatchFace)) <span class=\"keywordflow\">return</span> 0;</div>\n-<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\">  201</span> </div>\n-<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\">  202</span>    QuadNode <span class=\"keyword\">const</span> * node = &amp;_quadtree[faceid - _minPatchFace];</div>\n-<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\">  203</span> </div>\n-<div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\">  204</span>    <span class=\"keywordflow\">if</span> (!node-&gt;children[0].isSet) <span class=\"keywordflow\">return</span> 0;</div>\n-<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\">  205</span> </div>\n-<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\">  206</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\">  207</span>    <span class=\"comment\">//  Search the tree for the sub-patch containing the given (u,v)</span></div>\n-<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\">  208</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\">  209</span>    assert( (u&gt;=0.0) &amp;&amp; (u&lt;=1.0) &amp;&amp; (v&gt;=0.0) &amp;&amp; (v&lt;=1.0) );</div>\n-<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\">  210</span> </div>\n-<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\">  211</span>    <span class=\"keywordtype\">double</span> median = 0.5;</div>\n-<div class=\"line\"><a id=\"l00212\" name=\"l00212\"></a><span class=\"lineno\">  212</span>    <span class=\"keywordtype\">bool</span> triRotated = <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\">  213</span> </div>\n-<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\">  214</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> depth = 0; depth &lt;= _maxDepth; ++depth, median *= 0.5) {</div>\n-<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\">  215</span> </div>\n-<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\">  216</span>        <span class=\"keywordtype\">int</span> quadrant = _patchesAreTriangular</div>\n-<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\">  217</span>                     ? transformUVToTriQuadrant(median, u, v, triRotated)</div>\n-<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\">  218</span>                     : transformUVToQuadQuadrant(median, u, v);</div>\n-<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\">  219</span> </div>\n-<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\">  220</span>        <span class=\"comment\">//  holes should have been rejected at the root node of the face</span></div>\n-<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\">  221</span>        assert(node-&gt;children[quadrant].isSet);</div>\n-<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\">  222</span> </div>\n-<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\">  223</span>        <span class=\"keywordflow\">if</span> (node-&gt;children[quadrant].isLeaf) {</div>\n-<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\">  224</span>            <span class=\"keywordflow\">return</span> &amp;_handles[node-&gt;children[quadrant].index];</div>\n-<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\">  225</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\">  226</span>            node = &amp;_quadtree[node-&gt;children[quadrant].index];</div>\n-<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\">  227</span>        }</div>\n-<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\">  228</span>    }</div>\n-<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\">  229</span>    assert(0);</div>\n-<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\">  230</span>    <span class=\"keywordflow\">return</span> 0;</div>\n-<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\">  231</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\">  232</span> </div>\n-<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\">  233</span>} <span class=\"comment\">// end namespace Far</span></div>\n-<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\">  234</span> </div>\n-<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\">  235</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\">  236</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\">  237</span> </div>\n-<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\">  238</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\">  239</span> </div>\n-<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\">  240</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_FAR_PATCH_PARAM */</span><span class=\"preprocessor\"></span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa00977_html\"><div class=\"ttname\"><a href=\"a00977.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchMap</a></div><div class=\"ttdoc\">An quadtree-based map connecting coarse faces to their sub-patches.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00779_source.html#l00049\">patchMap.h:49</a></div></div>\n-<div class=\"ttc\" id=\"aa00977_html_a016619de52fd79dbcdb879cc12b79200\"><div class=\"ttname\"><a href=\"a00977.html#a016619de52fd79dbcdb879cc12b79200\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchMap::PatchMap</a></div><div class=\"ttdeci\">PatchMap(PatchTable const &amp;patchTable)</div><div class=\"ttdoc\">Constructor.</div></div>\n-<div class=\"ttc\" id=\"aa00977_html_abc70f9419d5f26ef85cbef5c5b6451f0\"><div class=\"ttname\"><a href=\"a00977.html#abc70f9419d5f26ef85cbef5c5b6451f0\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchMap::FindPatch</a></div><div class=\"ttdeci\">Handle const * FindPatch(int patchFaceId, double u, double v) const</div><div class=\"ttdoc\">Returns a handle to the sub-patch of the face at the given (u,v). Note that the patch face ID corresp...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00779_source.html#l00193\">patchMap.h:193</a></div></div>\n-<div class=\"ttc\" id=\"aa00977_html_ae83a6047fa1e373c7943d54b6dc46402\"><div class=\"ttname\"><a href=\"a00977.html#ae83a6047fa1e373c7943d54b6dc46402\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchMap::Handle</a></div><div class=\"ttdeci\">PatchTable::PatchHandle Handle</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00779_source.html#l00052\">patchMap.h:52</a></div></div>\n-<div class=\"ttc\" id=\"aa00985_html\"><div class=\"ttname\"><a href=\"a00985.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchMap::QuadNode::Child</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00779_source.html#l00085\">patchMap.h:85</a></div></div>\n-<div class=\"ttc\" id=\"aa00985_html_a07e7a9f4469398070886a336d833daa9\"><div class=\"ttname\"><a href=\"a00985.html#a07e7a9f4469398070886a336d833daa9\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchMap::QuadNode::Child::isLeaf</a></div><div class=\"ttdeci\">unsigned int isLeaf</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00779_source.html#l00087\">patchMap.h:87</a></div></div>\n-<div class=\"ttc\" id=\"aa00985_html_a589d64202487f78e3cc30dd2e04c5201\"><div class=\"ttname\"><a href=\"a00985.html#a589d64202487f78e3cc30dd2e04c5201\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchMap::QuadNode::Child::index</a></div><div class=\"ttdeci\">unsigned int index</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00779_source.html#l00088\">patchMap.h:88</a></div></div>\n-<div class=\"ttc\" id=\"aa00985_html_ad3e71fff03a23f93fef41adc5d367435\"><div class=\"ttname\"><a href=\"a00985.html#ad3e71fff03a23f93fef41adc5d367435\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchMap::QuadNode::Child::isSet</a></div><div class=\"ttdeci\">unsigned int isSet</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00779_source.html#l00086\">patchMap.h:86</a></div></div>\n-<div class=\"ttc\" id=\"aa00993_html\"><div class=\"ttname\"><a href=\"a00993.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable</a></div><div class=\"ttdoc\">Container for arrays of parametric patches.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00761_source.html#l00055\">patchTable.h:55</a></div></div>\n-<div class=\"ttc\" id=\"aa00997_html\"><div class=\"ttname\"><a href=\"a00997.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::PatchHandle</a></div><div class=\"ttdoc\">Handle that can be used as unique patch identifier within PatchTable.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00761_source.html#l00060\">patchTable.h:60</a></div></div>\n+<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\">  151</span>}  <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\">  152</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\">  153</span> </div>\n+<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\">  154</span>}  <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\">  155</span> </div>\n+<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\">  156</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_GL_PATCH_TABLE_H</span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa00912_html_a98098cd229f60d2397d84a76fe654a31\"><div class=\"ttname\"><a href=\"a00912.html#a98098cd229f60d2397d84a76fe654a31\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchArrayVector</a></div><div class=\"ttdeci\">std::vector&lt; PatchArray &gt; PatchArrayVector</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00132\">types.h:132</a></div></div>\n+<div class=\"ttc\" id=\"aa00993_html\"><div class=\"ttname\"><a href=\"a00993.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable</a></div><div class=\"ttdoc\">Container for arrays of parametric patches.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00842_source.html#l00055\">patchTable.h:55</a></div></div>\n+<div class=\"ttc\" id=\"aa01237_html\"><div class=\"ttname\"><a href=\"a01237.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00779_source.html#l00045\">glPatchTable.h:45</a></div></div>\n+<div class=\"ttc\" id=\"aa01237_html_a02af2ea2e9328a776b5b0bb3edf88864\"><div class=\"ttname\"><a href=\"a01237.html#a02af2ea2e9328a776b5b0bb3edf88864\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::VertexBufferBinding</a></div><div class=\"ttdeci\">GLuint VertexBufferBinding</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00779_source.html#l00047\">glPatchTable.h:47</a></div></div>\n+<div class=\"ttc\" id=\"aa01237_html_a0e48596d8f2ffc1ce58bcf64cea7ec06\"><div class=\"ttname\"><a href=\"a01237.html#a0e48596d8f2ffc1ce58bcf64cea7ec06\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::_fvarIndexBuffers</a></div><div class=\"ttdeci\">std::vector&lt; GLuint &gt; _fvarIndexBuffers</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00779_source.html#l00141\">glPatchTable.h:141</a></div></div>\n+<div class=\"ttc\" id=\"aa01237_html_a18e3d09b0c7b7552f8e419e36788166a\"><div class=\"ttname\"><a href=\"a01237.html#a18e3d09b0c7b7552f8e419e36788166a\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::GetPatchArrays</a></div><div class=\"ttdeci\">PatchArrayVector const &amp; GetPatchArrays() const</div><div class=\"ttdoc\">Returns the patch arrays for vertex index buffer data.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00779_source.html#l00055\">glPatchTable.h:55</a></div></div>\n+<div class=\"ttc\" id=\"aa01237_html_a2657089828a2062a96ae15b4ea2d9bbf\"><div class=\"ttname\"><a href=\"a01237.html#a2657089828a2062a96ae15b4ea2d9bbf\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::GetFVarPatchIndexBuffer</a></div><div class=\"ttdeci\">GLuint GetFVarPatchIndexBuffer(int fvarChannel=0) const</div><div class=\"ttdoc\">Returns the GL index buffer containing face-varying control vertices.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00779_source.html#l00103\">glPatchTable.h:103</a></div></div>\n+<div class=\"ttc\" id=\"aa01237_html_a27e3bbc29608fb5ded788e1a6d068da7\"><div class=\"ttname\"><a href=\"a01237.html#a27e3bbc29608fb5ded788e1a6d068da7\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::~GLPatchTable</a></div><div class=\"ttdeci\">~GLPatchTable()</div></div>\n+<div class=\"ttc\" id=\"aa01237_html_a2a8e1501f85608c6309e00955b6197dc\"><div class=\"ttname\"><a href=\"a01237.html#a2a8e1501f85608c6309e00955b6197dc\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::_fvarParamBuffers</a></div><div class=\"ttdeci\">std::vector&lt; GLuint &gt; _fvarParamBuffers</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00779_source.html#l00144\">glPatchTable.h:144</a></div></div>\n+<div class=\"ttc\" id=\"aa01237_html_a2b6605b35fc9437ab5750d6929fc66d8\"><div class=\"ttname\"><a href=\"a01237.html#a2b6605b35fc9437ab5750d6929fc66d8\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::GetPatchParamTextureBuffer</a></div><div class=\"ttdeci\">GLuint GetPatchParamTextureBuffer() const</div><div class=\"ttdoc\">Returns the GL texture buffer containing the patch parameter.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00779_source.html#l00075\">glPatchTable.h:75</a></div></div>\n+<div class=\"ttc\" id=\"aa01237_html_a30ba44ce4fe4d55733bb32e59a0f564f\"><div class=\"ttname\"><a href=\"a01237.html#a30ba44ce4fe4d55733bb32e59a0f564f\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::_varyingIndexBuffer</a></div><div class=\"ttdeci\">GLuint _varyingIndexBuffer</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00779_source.html#l00137\">glPatchTable.h:137</a></div></div>\n+<div class=\"ttc\" id=\"aa01237_html_a32a4da2f65047256f15d6607236752be\"><div class=\"ttname\"><a href=\"a01237.html#a32a4da2f65047256f15d6607236752be\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::allocate</a></div><div class=\"ttdeci\">bool allocate(Far::PatchTable const *farPatchTable)</div></div>\n+<div class=\"ttc\" id=\"aa01237_html_a406bb6da6d3805b2b3d8e462ba4d1a47\"><div class=\"ttname\"><a href=\"a01237.html#a406bb6da6d3805b2b3d8e462ba4d1a47\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::Create</a></div><div class=\"ttdeci\">static GLPatchTable * Create(Far::PatchTable const *farPatchTable, void *deviceContext=NULL)</div></div>\n+<div class=\"ttc\" id=\"aa01237_html_a45c78bbbee12b05b67a5709c0c9e3edf\"><div class=\"ttname\"><a href=\"a01237.html#a45c78bbbee12b05b67a5709c0c9e3edf\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::_varyingIndexTexture</a></div><div class=\"ttdeci\">GLuint _varyingIndexTexture</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00779_source.html#l00138\">glPatchTable.h:138</a></div></div>\n+<div class=\"ttc\" id=\"aa01237_html_a554c6f7c7544b621ca3f8f824cdc7e8e\"><div class=\"ttname\"><a href=\"a01237.html#a554c6f7c7544b621ca3f8f824cdc7e8e\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::_fvarParamTextures</a></div><div class=\"ttdeci\">std::vector&lt; GLuint &gt; _fvarParamTextures</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00779_source.html#l00145\">glPatchTable.h:145</a></div></div>\n+<div class=\"ttc\" id=\"aa01237_html_a5dfb6b58580f2dec58e9b5bfdb4ed9f1\"><div class=\"ttname\"><a href=\"a01237.html#a5dfb6b58580f2dec58e9b5bfdb4ed9f1\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::_patchArrays</a></div><div class=\"ttdeci\">PatchArrayVector _patchArrays</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00779_source.html#l00128\">glPatchTable.h:128</a></div></div>\n+<div class=\"ttc\" id=\"aa01237_html_a60ed91ae6ab2018bcc0d4f3db4f0d2e9\"><div class=\"ttname\"><a href=\"a01237.html#a60ed91ae6ab2018bcc0d4f3db4f0d2e9\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::_patchIndexBuffer</a></div><div class=\"ttdeci\">GLuint _patchIndexBuffer</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00779_source.html#l00130\">glPatchTable.h:130</a></div></div>\n+<div class=\"ttc\" id=\"aa01237_html_a645a6698ee27f028eb10e8a43044bf7f\"><div class=\"ttname\"><a href=\"a01237.html#a645a6698ee27f028eb10e8a43044bf7f\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::GetPatchParamBuffer</a></div><div class=\"ttdeci\">GLuint GetPatchParamBuffer() const</div><div class=\"ttdoc\">Returns the GL index buffer containing the patch parameter.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00779_source.html#l00065\">glPatchTable.h:65</a></div></div>\n+<div class=\"ttc\" id=\"aa01237_html_a6693fe16c1c27f92acdcd0716a6656e1\"><div class=\"ttname\"><a href=\"a01237.html#a6693fe16c1c27f92acdcd0716a6656e1\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::GetFVarPatchParamBuffer</a></div><div class=\"ttdeci\">GLuint GetFVarPatchParamBuffer(int fvarChannel=0) const</div><div class=\"ttdoc\">Returns the GL index buffer containing face-varying patch params.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00779_source.html#l00113\">glPatchTable.h:113</a></div></div>\n+<div class=\"ttc\" id=\"aa01237_html_a698f8b3d96e62c8512eb3881c8112978\"><div class=\"ttname\"><a href=\"a01237.html#a698f8b3d96e62c8512eb3881c8112978\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::_patchParamTexture</a></div><div class=\"ttdeci\">GLuint _patchParamTexture</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00779_source.html#l00134\">glPatchTable.h:134</a></div></div>\n+<div class=\"ttc\" id=\"aa01237_html_a88c12681f62189c398c1d2dc32111264\"><div class=\"ttname\"><a href=\"a01237.html#a88c12681f62189c398c1d2dc32111264\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::GLPatchTable</a></div><div class=\"ttdeci\">GLPatchTable()</div></div>\n+<div class=\"ttc\" id=\"aa01237_html_a95e40964621a631c5accc1a6e9bc85c7\"><div class=\"ttname\"><a href=\"a01237.html#a95e40964621a631c5accc1a6e9bc85c7\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::GetFVarPatchIndexTextureBuffer</a></div><div class=\"ttdeci\">GLuint GetFVarPatchIndexTextureBuffer(int fvarChannel=0) const</div><div class=\"ttdoc\">Returns the GL texture buffer containing face-varying control vertices.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00779_source.html#l00108\">glPatchTable.h:108</a></div></div>\n+<div class=\"ttc\" id=\"aa01237_html_aa0d257bdc8fd9e5180f9b210fdc50209\"><div class=\"ttname\"><a href=\"a01237.html#aa0d257bdc8fd9e5180f9b210fdc50209\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::GetFVarPatchParamTextureBuffer</a></div><div class=\"ttdeci\">GLuint GetFVarPatchParamTextureBuffer(int fvarChannel=0) const</div><div class=\"ttdoc\">Returns the GL texture buffer containing face-varying patch params.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00779_source.html#l00118\">glPatchTable.h:118</a></div></div>\n+<div class=\"ttc\" id=\"aa01237_html_aa22b6cb3f4bbb8edaaa553389e080e40\"><div class=\"ttname\"><a href=\"a01237.html#aa22b6cb3f4bbb8edaaa553389e080e40\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::GetPatchIndexBuffer</a></div><div class=\"ttdeci\">GLuint GetPatchIndexBuffer() const</div><div class=\"ttdoc\">Returns the GL index buffer containing the patch control vertices.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00779_source.html#l00060\">glPatchTable.h:60</a></div></div>\n+<div class=\"ttc\" id=\"aa01237_html_aa9be824a572029f3ec1e0c0d6cfecd77\"><div class=\"ttname\"><a href=\"a01237.html#aa9be824a572029f3ec1e0c0d6cfecd77\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::GetNumFVarChannels</a></div><div class=\"ttdeci\">int GetNumFVarChannels() const</div><div class=\"ttdoc\">Returns the number of face-varying channel buffers.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00779_source.html#l00095\">glPatchTable.h:95</a></div></div>\n+<div class=\"ttc\" id=\"aa01237_html_ab4ae92f2c242d25fa0480d0307e0d9e5\"><div class=\"ttname\"><a href=\"a01237.html#ab4ae92f2c242d25fa0480d0307e0d9e5\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::GetFVarPatchArrays</a></div><div class=\"ttdeci\">PatchArrayVector const &amp; GetFVarPatchArrays(int fvarChannel=0) const</div><div class=\"ttdoc\">Returns the patch arrays for face-varying index buffer data.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00779_source.html#l00098\">glPatchTable.h:98</a></div></div>\n+<div class=\"ttc\" id=\"aa01237_html_ab7e41e6a4b6c3fb8faeb136fc6e64998\"><div class=\"ttname\"><a href=\"a01237.html#ab7e41e6a4b6c3fb8faeb136fc6e64998\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::_fvarIndexTextures</a></div><div class=\"ttdeci\">std::vector&lt; GLuint &gt; _fvarIndexTextures</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00779_source.html#l00142\">glPatchTable.h:142</a></div></div>\n+<div class=\"ttc\" id=\"aa01237_html_abbedd905fe4d0e32460f82d1aa9bf360\"><div class=\"ttname\"><a href=\"a01237.html#abbedd905fe4d0e32460f82d1aa9bf360\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::_patchIndexTexture</a></div><div class=\"ttdeci\">GLuint _patchIndexTexture</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00779_source.html#l00133\">glPatchTable.h:133</a></div></div>\n+<div class=\"ttc\" id=\"aa01237_html_abce41960eb6bedc82cbf0cb711ea66da\"><div class=\"ttname\"><a href=\"a01237.html#abce41960eb6bedc82cbf0cb711ea66da\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::_fvarPatchArrays</a></div><div class=\"ttdeci\">std::vector&lt; PatchArrayVector &gt; _fvarPatchArrays</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00779_source.html#l00140\">glPatchTable.h:140</a></div></div>\n+<div class=\"ttc\" id=\"aa01237_html_ac1366e74b619cfb89c4c2df52b7aa697\"><div class=\"ttname\"><a href=\"a01237.html#ac1366e74b619cfb89c4c2df52b7aa697\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::GetPatchIndexTextureBuffer</a></div><div class=\"ttdeci\">GLuint GetPatchIndexTextureBuffer() const</div><div class=\"ttdoc\">Returns the GL texture buffer containing the patch control vertices.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00779_source.html#l00070\">glPatchTable.h:70</a></div></div>\n+<div class=\"ttc\" id=\"aa01237_html_ac444539beb3cfb4b80ea5119a705b662\"><div class=\"ttname\"><a href=\"a01237.html#ac444539beb3cfb4b80ea5119a705b662\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::GetVaryingPatchIndexTextureBuffer</a></div><div class=\"ttdeci\">GLuint GetVaryingPatchIndexTextureBuffer() const</div><div class=\"ttdoc\">Returns the GL texture buffer containing the varying control vertices.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00779_source.html#l00090\">glPatchTable.h:90</a></div></div>\n+<div class=\"ttc\" id=\"aa01237_html_acd99a0391b3b04586b11051fd0f7ed10\"><div class=\"ttname\"><a href=\"a01237.html#acd99a0391b3b04586b11051fd0f7ed10\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::_varyingPatchArrays</a></div><div class=\"ttdeci\">PatchArrayVector _varyingPatchArrays</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00779_source.html#l00136\">glPatchTable.h:136</a></div></div>\n+<div class=\"ttc\" id=\"aa01237_html_ae0df6dbe9e1a7425c18c063dd55335f0\"><div class=\"ttname\"><a href=\"a01237.html#ae0df6dbe9e1a7425c18c063dd55335f0\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::GetVaryingPatchIndexBuffer</a></div><div class=\"ttdeci\">GLuint GetVaryingPatchIndexBuffer() const</div><div class=\"ttdoc\">Returns the GL index buffer containing the varying control vertices.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00779_source.html#l00085\">glPatchTable.h:85</a></div></div>\n+<div class=\"ttc\" id=\"aa01237_html_aec45672f51f456fea341d644bcf16434\"><div class=\"ttname\"><a href=\"a01237.html#aec45672f51f456fea341d644bcf16434\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::GetVaryingPatchArrays</a></div><div class=\"ttdeci\">PatchArrayVector const &amp; GetVaryingPatchArrays() const</div><div class=\"ttdoc\">Returns the patch arrays for varying index buffer data.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00779_source.html#l00080\">glPatchTable.h:80</a></div></div>\n+<div class=\"ttc\" id=\"aa01237_html_afcbe2b12b775d32f606ee7e347dba51a\"><div class=\"ttname\"><a href=\"a01237.html#afcbe2b12b775d32f606ee7e347dba51a\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::_patchParamBuffer</a></div><div class=\"ttdeci\">GLuint _patchParamBuffer</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00779_source.html#l00131\">glPatchTable.h:131</a></div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7f420b72a822828cfa8b0561c695a5cc.html\">far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00779.html\">patchMap.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00779.html\">glPatchTable.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-patchMap.h\n+glPatchTable.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2013 Pixar\n+2// Copyright 2015 Pixar\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -24,238 +24,249 @@\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n 24\n-25#ifndef OPENSUBDIV3_FAR_PATCH_MAP_H\n-26#define OPENSUBDIV3_FAR_PATCH_MAP_H\n+25#ifndef OPENSUBDIV3_OSD_GL_PATCH_TABLE_H\n+26#define OPENSUBDIV3_OSD_GL_PATCH_TABLE_H\n 27\n 28#include \"../version.h\"\n 29\n-30#include \"../far/patchTable.h\"\n-31\n-32#include <cassert>\n+30#include \"../osd/nonCopyable.h\"\n+31#include \"../osd/opengl.h\"\n+32#include \"../osd/types.h\"\n 33\n-34namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-35namespace OPENSUBDIV_VERSION {\n-36\n-37namespace Far {\n+34#include <vector>\n+35\n+36namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+37namespace OPENSUBDIV_VERSION {\n 38\n-_\b4_\b9class _\bP_\ba_\bt_\bc_\bh_\bM_\ba_\bp {\n-50public:\n-51\n-_\b5_\b2 typedef _\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be _\bH_\ba_\bn_\bd_\bl_\be;\n+39namespace Far{\n+40 class PatchTable;\n+41};\n+42\n+43namespace Osd {\n+44\n+_\b4_\b5class _\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be : private NonCopyable<GLPatchTable> {\n+46public:\n+_\b4_\b7 typedef GLuint _\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bB_\bi_\bn_\bd_\bi_\bn_\bg;\n+48\n+_\b4_\b9 _\b~_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be();\n+50\n+_\b5_\b1 static _\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be *_\bC_\br_\be_\ba_\bt_\be(_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be const *farPatchTable,\n+52 void *deviceContext = NULL);\n 53\n-_\b5_\b8 _\bP_\ba_\bt_\bc_\bh_\bM_\ba_\bp( _\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be const & patchTable );\n-59\n-74 _\bH_\ba_\bn_\bd_\bl_\be const * _\bF_\bi_\bn_\bd_\bP_\ba_\bt_\bc_\bh( int patchFaceId, double u, double v ) const;\n-75\n-76private:\n-77 void initializeHandles(_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be const & patchTable);\n-78 void initializeQuadtree(_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be const & patchTable);\n-79\n-80private:\n-81 // Quadtree node with 4 children, tree is just a vector of nodes\n-82 struct QuadNode {\n-83 QuadNode() { std::memset(this, 0, sizeof(QuadNode)); }\n-84\n-_\b8_\b5 struct _\bC_\bh_\bi_\bl_\bd {\n-_\b8_\b6 unsigned int _\bi_\bs_\bS_\be_\bt : 1; // true if the child has been set\n-_\b8_\b7 unsigned int _\bi_\bs_\bL_\be_\ba_\bf : 1; // true if the child is a QuadNode\n-_\b8_\b8 unsigned int _\bi_\bn_\bd_\be_\bx : 30; // child index (either QuadNode or Handle)\n-89 };\n-90\n-91 // sets all the children to point to the patch of given index\n-92 void SetChildren(int index);\n+_\b5_\b5 _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\bc_\bt_\bo_\br const &_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs() const {\n+56 return _\b__\bp_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs;\n+57 }\n+58\n+_\b6_\b0 GLuint _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br() const {\n+61 return _\b__\bp_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br;\n+62 }\n+63\n+_\b6_\b5 GLuint _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br() const {\n+66 return _\b__\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br;\n+67 }\n+68\n+_\b7_\b0 GLuint _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bT_\be_\bx_\bt_\bu_\br_\be_\bB_\bu_\bf_\bf_\be_\br() const {\n+71 return _\b__\bp_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bT_\be_\bx_\bt_\bu_\br_\be;\n+72 }\n+73\n+_\b7_\b5 GLuint _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bT_\be_\bx_\bt_\bu_\br_\be_\bB_\bu_\bf_\bf_\be_\br() const {\n+76 return _\b__\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bT_\be_\bx_\bt_\bu_\br_\be;\n+77 }\n+78\n+_\b8_\b0 _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\bc_\bt_\bo_\br const &_\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs() const {\n+81 return _\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs;\n+82 }\n+83\n+_\b8_\b5 GLuint _\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br() const {\n+86 return _\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br;\n+87 }\n+88\n+_\b9_\b0 GLuint _\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bT_\be_\bx_\bt_\bu_\br_\be_\bB_\bu_\bf_\bf_\be_\br() const {\n+91 return _\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bI_\bn_\bd_\be_\bx_\bT_\be_\bx_\bt_\bu_\br_\be;\n+92 }\n 93\n-94 // sets the child in \"quadrant\" to point to the node or patch of the given\n-index\n-95 void SetChild(int quadrant, int index, bool isLeaf);\n+_\b9_\b5 int _\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs() const { return (int)_\b__\bf_\bv_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs.size(); }\n 96\n-97 _\bC_\bh_\bi_\bl_\bd children[4];\n-98 };\n-99 typedef std::vector<QuadNode> QuadTree;\n-100\n-101 // Internal methods supporting quadtree construction and queries\n-102 void assignRootNode(QuadNode * node, int index);\n-103 QuadNode * assignLeafOrChildNode(QuadNode * node, bool isLeaf, int quad,\n-int index);\n-104\n-105 template <class T>\n-106 static int transformUVToQuadQuadrant(T const & median, T & u, T & v);\n-107 template <class T>\n-108 static int transformUVToTriQuadrant(T const & median, T & u, T & v, bool &\n-rotated);\n-109\n-110private:\n-111 bool _patchesAreTriangular; // tri and quad assembly and search\n-requirements differ\n-112\n-113 int _minPatchFace; // minimum patch face index supported by the map\n-114 int _maxPatchFace; // maximum patch face index supported by the map\n-115 int _maxDepth; // maximum depth of a patch in the tree\n+_\b9_\b8 _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\bc_\bt_\bo_\br const &_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs(int fvarChannel = 0) const {\n+99 return _\b__\bf_\bv_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs[fvarChannel];\n+100 }\n+101\n+_\b1_\b0_\b3 GLuint _\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br(int fvarChannel = 0) const {\n+104 return _\b__\bf_\bv_\ba_\br_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bs[fvarChannel];\n+105 }\n+106\n+_\b1_\b0_\b8 GLuint _\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bT_\be_\bx_\bt_\bu_\br_\be_\bB_\bu_\bf_\bf_\be_\br(int fvarChannel = 0) const {\n+109 return _\b__\bf_\bv_\ba_\br_\bI_\bn_\bd_\be_\bx_\bT_\be_\bx_\bt_\bu_\br_\be_\bs[fvarChannel];\n+110 }\n+111\n+_\b1_\b1_\b3 GLuint _\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br(int fvarChannel = 0) const {\n+114 return _\b__\bf_\bv_\ba_\br_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br_\bs[fvarChannel];\n+115 }\n 116\n-117 std::vector<Handle> _handles; // all the patches in the PatchTable\n-118 std::vector<QuadNode> _quadtree; // quadtree nodes\n-119};\n-120\n-121//\n-122// Given a median value for both U and V, these methods transform a (u,v)\n-pair\n-123// into the quadrant that contains them and returns the quadrant index.\n-124//\n-125// Quadrant indexing for tri and quad patches -- consistent with\n-PatchParam's\n-126// usage of UV bits:\n-127//\n-128// (0,1) o-----o-----o (1,1) (0,1) o (1,0) o-----o-----o (0,0)\n-129// | | | |\\ \\ 1 |\\ 0 |\n-130// | 2 | 3 | | \\ \\ | \\ |\n-131// | | | | 2 \\ \\| 3 \\|\n-132// o-----o-----o o-----o o-----o\n-133// | | | |\\ 3 |\\ \\ 2 |\n-134// | 0 | 1 | | \\ | \\ \\ |\n-135// | | | | 0 \\| 1 \\ \\|\n-136// (0,0) o-----o-----o (1,0) (0,0) o-----o-----o (1,0) o (0,1)\n-137//\n-138// The triangular case also takes and returns/affects the rotation of the\n-139// quadrant being searched and identified (quadrant 3 imparts a rotation).\n-140//\n-141template <class T>\n-142inline int\n-143PatchMap::transformUVToQuadQuadrant(T const & median, T & u, T & v) {\n-144\n-145 int uHalf = (u >= median);\n-146 if (uHalf) u -= median;\n+_\b1_\b1_\b8 GLuint _\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bT_\be_\bx_\bt_\bu_\br_\be_\bB_\bu_\bf_\bf_\be_\br(int fvarChannel = 0) const {\n+119 return _\b__\bf_\bv_\ba_\br_\bP_\ba_\br_\ba_\bm_\bT_\be_\bx_\bt_\bu_\br_\be_\bs[fvarChannel];\n+120 }\n+121\n+122protected:\n+_\b1_\b2_\b3 _\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be();\n+124\n+125 // allocate buffers from patchTable\n+_\b1_\b2_\b6 bool _\ba_\bl_\bl_\bo_\bc_\ba_\bt_\be(_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be const *farPatchTable);\n+127\n+_\b1_\b2_\b8 _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\bc_\bt_\bo_\br _\b__\bp_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs;\n+129\n+_\b1_\b3_\b0 GLuint _\b__\bp_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br;\n+_\b1_\b3_\b1 GLuint _\b__\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br;\n+132\n+_\b1_\b3_\b3 GLuint _\b__\bp_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bT_\be_\bx_\bt_\bu_\br_\be;\n+_\b1_\b3_\b4 GLuint _\b__\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bT_\be_\bx_\bt_\bu_\br_\be;\n+135\n+_\b1_\b3_\b6 _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\bc_\bt_\bo_\br _\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs;\n+_\b1_\b3_\b7 GLuint _\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br;\n+_\b1_\b3_\b8 GLuint _\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bI_\bn_\bd_\be_\bx_\bT_\be_\bx_\bt_\bu_\br_\be;\n+139\n+_\b1_\b4_\b0 std::vector<PatchArrayVector> _\b__\bf_\bv_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs;\n+_\b1_\b4_\b1 std::vector<GLuint> _\b__\bf_\bv_\ba_\br_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bs;\n+_\b1_\b4_\b2 std::vector<GLuint> _\b__\bf_\bv_\ba_\br_\bI_\bn_\bd_\be_\bx_\bT_\be_\bx_\bt_\bu_\br_\be_\bs;\n+143\n+_\b1_\b4_\b4 std::vector<GLuint> _\b__\bf_\bv_\ba_\br_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br_\bs;\n+_\b1_\b4_\b5 std::vector<GLuint> _\b__\bf_\bv_\ba_\br_\bP_\ba_\br_\ba_\bm_\bT_\be_\bx_\bt_\bu_\br_\be_\bs;\n+146};\n 147\n-148 int vHalf = (v >= median);\n-149 if (vHalf) v -= median;\n+148\n+149} // end namespace Osd\n 150\n-151 return (vHalf << 1) | uHalf;\n-152}\n+151} // end namespace OPENSUBDIV_VERSION\n+152using namespace OPENSUBDIV_VERSION;\n 153\n-154template <class T>\n-155int inline\n-156PatchMap::transformUVToTriQuadrant(T const & median, T & u, T & v, bool &\n-rotated) {\n-157\n-158 if (!rotated) {\n-159 if (u >= median) {\n-160 u -= median;\n-161 return 1;\n-162 }\n-163 if (v >= median) {\n-164 v -= median;\n-165 return 2;\n-166 }\n-167 if ((u + v) >= median) {\n-168 rotated = true;\n-169 return 3;\n-170 }\n-171 return 0;\n-172 } else {\n-173 if (u < median) {\n-174 v -= median;\n-175 return 1;\n-176 }\n-177 if (v < median) {\n-178 u -= median;\n-179 return 2;\n-180 }\n-181 u -= median;\n-182 v -= median;\n-183 if ((u + v) < median) {\n-184 rotated = false;\n-185 return 3;\n-186 }\n-187 return 0;\n-188 }\n-189}\n-190\n-192inline _\bP_\ba_\bt_\bc_\bh_\bM_\ba_\bp_\b:_\b:_\bH_\ba_\bn_\bd_\bl_\be const *\n-_\b1_\b9_\b3_\bP_\ba_\bt_\bc_\bh_\bM_\ba_\bp_\b:_\b:_\bF_\bi_\bn_\bd_\bP_\ba_\bt_\bc_\bh( int faceid, double u, double v ) const {\n-194\n-195 //\n-196 // Reject patch faces not supported by this map, or those corresponding\n-197 // to holes or otherwise unassigned (the root node for a patch will\n-198 // have all or no quadrants set):\n-199 //\n-200 if ((faceid < _minPatchFace) || (faceid > _maxPatchFace)) return 0;\n-201\n-202 QuadNode const * node = &_quadtree[faceid - _minPatchFace];\n-203\n-204 if (!node->children[0].isSet) return 0;\n-205\n-206 //\n-207 // Search the tree for the sub-patch containing the given (u,v)\n-208 //\n-209 assert( (u>=0.0) && (u<=1.0) && (v>=0.0) && (v<=1.0) );\n-210\n-211 double median = 0.5;\n-212 bool triRotated = false;\n-213\n-214 for (int depth = 0; depth <= _maxDepth; ++depth, median *= 0.5) {\n-215\n-216 int quadrant = _patchesAreTriangular\n-217 ? transformUVToTriQuadrant(median, u, v, triRotated)\n-218 : transformUVToQuadQuadrant(median, u, v);\n-219\n-220 // holes should have been rejected at the root node of the face\n-221 assert(node->children[quadrant].isSet);\n-222\n-223 if (node->children[quadrant].isLeaf) {\n-224 return &_handles[node->children[quadrant].index];\n-225 } else {\n-226 node = &_quadtree[node->children[quadrant].index];\n-227 }\n-228 }\n-229 assert(0);\n-230 return 0;\n-231}\n-232\n-233} // end namespace Far\n-234\n-235} // end namespace OPENSUBDIV_VERSION\n-236using namespace OPENSUBDIV_VERSION;\n-237\n-238} // end namespace OpenSubdiv\n-239\n-240#endif /* OPENSUBDIV3_FAR_PATCH_PARAM */\n+154} // end namespace OpenSubdiv\n+155\n+156#endif // OPENSUBDIV3_OSD_GL_PATCH_TABLE_H\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bM_\ba_\bp\n-An quadtree-based map connecting coarse faces to their sub-patches.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bM_\ba_\bp_\b._\bh_\b:_\b4_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bM_\ba_\bp_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bM_\ba_\bp\n-PatchMap(PatchTable const &patchTable)\n-Constructor.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bM_\ba_\bp_\b:_\b:_\bF_\bi_\bn_\bd_\bP_\ba_\bt_\bc_\bh\n-Handle const * FindPatch(int patchFaceId, double u, double v) const\n-Returns a handle to the sub-patch of the face at the given (u,v). Note that the\n-patch face ID corresp...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bM_\ba_\bp_\b._\bh_\b:_\b1_\b9_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bM_\ba_\bp_\b:_\b:_\bH_\ba_\bn_\bd_\bl_\be\n-PatchTable::PatchHandle Handle\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bM_\ba_\bp_\b._\bh_\b:_\b5_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bM_\ba_\bp_\b:_\b:_\bQ_\bu_\ba_\bd_\bN_\bo_\bd_\be_\b:_\b:_\bC_\bh_\bi_\bl_\bd\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bM_\ba_\bp_\b._\bh_\b:_\b8_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bM_\ba_\bp_\b:_\b:_\bQ_\bu_\ba_\bd_\bN_\bo_\bd_\be_\b:_\b:_\bC_\bh_\bi_\bl_\bd_\b:_\b:_\bi_\bs_\bL_\be_\ba_\bf\n-unsigned int isLeaf\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bM_\ba_\bp_\b._\bh_\b:_\b8_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bM_\ba_\bp_\b:_\b:_\bQ_\bu_\ba_\bd_\bN_\bo_\bd_\be_\b:_\b:_\bC_\bh_\bi_\bl_\bd_\b:_\b:_\bi_\bn_\bd_\be_\bx\n-unsigned int index\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bM_\ba_\bp_\b._\bh_\b:_\b8_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bM_\ba_\bp_\b:_\b:_\bQ_\bu_\ba_\bd_\bN_\bo_\bd_\be_\b:_\b:_\bC_\bh_\bi_\bl_\bd_\b:_\b:_\bi_\bs_\bS_\be_\bt\n-unsigned int isSet\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bM_\ba_\bp_\b._\bh_\b:_\b8_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\bc_\bt_\bo_\br\n+std::vector< PatchArray > PatchArrayVector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b1_\b3_\b2\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n Container for arrays of parametric patches.\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be\n-Handle that can be used as unique patch identifier within PatchTable.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b4_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bB_\bi_\bn_\bd_\bi_\bn_\bg\n+GLuint VertexBufferBinding\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b4_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bf_\bv_\ba_\br_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bs\n+std::vector< GLuint > _fvarIndexBuffers\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b4_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs\n+PatchArrayVector const & GetPatchArrays() const\n+Returns the patch arrays for vertex index buffer data.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+GLuint GetFVarPatchIndexBuffer(int fvarChannel=0) const\n+Returns the GL index buffer containing face-varying control vertices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b0_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b~_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+~GLPatchTable()\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bf_\bv_\ba_\br_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br_\bs\n+std::vector< GLuint > _fvarParamBuffers\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b4_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bT_\be_\bx_\bt_\bu_\br_\be_\bB_\bu_\bf_\bf_\be_\br\n+GLuint GetPatchParamTextureBuffer() const\n+Returns the GL texture buffer containing the patch parameter.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+GLuint _varyingIndexBuffer\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b3_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\ba_\bl_\bl_\bo_\bc_\ba_\bt_\be\n+bool allocate(Far::PatchTable const *farPatchTable)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n+static GLPatchTable * Create(Far::PatchTable const *farPatchTable, void\n+*deviceContext=NULL)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bI_\bn_\bd_\be_\bx_\bT_\be_\bx_\bt_\bu_\br_\be\n+GLuint _varyingIndexTexture\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b3_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bf_\bv_\ba_\br_\bP_\ba_\br_\ba_\bm_\bT_\be_\bx_\bt_\bu_\br_\be_\bs\n+std::vector< GLuint > _fvarParamTextures\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b4_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bp_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs\n+PatchArrayVector _patchArrays\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b2_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bp_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+GLuint _patchIndexBuffer\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b3_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br\n+GLuint GetPatchParamBuffer() const\n+Returns the GL index buffer containing the patch parameter.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br\n+GLuint GetFVarPatchParamBuffer(int fvarChannel=0) const\n+Returns the GL index buffer containing face-varying patch params.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b1_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bT_\be_\bx_\bt_\bu_\br_\be\n+GLuint _patchParamTexture\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b3_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+GLPatchTable()\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n+_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bT_\be_\bx_\bt_\bu_\br_\be_\bB_\bu_\bf_\bf_\be_\br\n+GLuint GetFVarPatchIndexTextureBuffer(int fvarChannel=0) const\n+Returns the GL texture buffer containing face-varying control vertices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b0_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n+_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bT_\be_\bx_\bt_\bu_\br_\be_\bB_\bu_\bf_\bf_\be_\br\n+GLuint GetFVarPatchParamTextureBuffer(int fvarChannel=0) const\n+Returns the GL texture buffer containing face-varying patch params.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b1_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+GLuint GetPatchIndexBuffer() const\n+Returns the GL index buffer containing the patch control vertices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs\n+int GetNumFVarChannels() const\n+Returns the number of face-varying channel buffers.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b9_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs\n+PatchArrayVector const & GetFVarPatchArrays(int fvarChannel=0) const\n+Returns the patch arrays for face-varying index buffer data.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b9_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bf_\bv_\ba_\br_\bI_\bn_\bd_\be_\bx_\bT_\be_\bx_\bt_\bu_\br_\be_\bs\n+std::vector< GLuint > _fvarIndexTextures\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b4_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bp_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bT_\be_\bx_\bt_\bu_\br_\be\n+GLuint _patchIndexTexture\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b3_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bf_\bv_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs\n+std::vector< PatchArrayVector > _fvarPatchArrays\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b4_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bT_\be_\bx_\bt_\bu_\br_\be_\bB_\bu_\bf_\bf_\be_\br\n+GLuint GetPatchIndexTextureBuffer() const\n+Returns the GL texture buffer containing the patch control vertices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n+_\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bT_\be_\bx_\bt_\bu_\br_\be_\bB_\bu_\bf_\bf_\be_\br\n+GLuint GetVaryingPatchIndexTextureBuffer() const\n+Returns the GL texture buffer containing the varying control vertices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b9_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs\n+PatchArrayVector _varyingPatchArrays\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b3_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+GLuint GetVaryingPatchIndexBuffer() const\n+Returns the GL index buffer containing the varying control vertices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b8_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs\n+PatchArrayVector const & GetVaryingPatchArrays() const\n+Returns the patch arrays for varying index buffer data.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b8_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br\n+GLuint _patchParamBuffer\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b3_\b1\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bf_\ba_\br\n-    * _\bp_\ba_\bt_\bc_\bh_\bM_\ba_\bp_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00782.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00782.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/far/topologyLevel.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/osd/cpuEvaluator.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -90,44 +90,42 @@\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> &#124;\n <a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">topologyLevel.h File Reference</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">cpuEvaluator.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00695_source.html\">../vtr/level.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00674_source.html\">../vtr/refinement.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a01486_source.html\">../far/types.h</a>&quot;</code><br />\n-<code>#include &lt;vector&gt;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00764_source.html\">../osd/bufferDescriptor.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a01489_source.html\">../osd/types.h</a>&quot;</code><br />\n+<code>#include &lt;cstddef&gt;</code><br />\n </div>\n <p><a href=\"a00782_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01113.html\">TopologyLevel</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">An interface for accessing data in a specific level of a refined topology hierarchy.  <a href=\"a01113.html#details\">More...</a><br /></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01165.html\">CpuEvaluator</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far</a></td></tr>\n+<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7f420b72a822828cfa8b0561c695a5cc.html\">far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00782.html\">topologyLevel.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00782.html\">cpuEvaluator.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,28 +1,25 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-topologyLevel.h File Reference\n+cpuEvaluator.h File Reference\n #include \"../version.h\"\n-#include \"_\b._\b._\b/_\bv_\bt_\br_\b/_\bl_\be_\bv_\be_\bl_\b._\bh\"\n-#include \"_\b._\b._\b/_\bv_\bt_\br_\b/_\br_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt_\b._\bh\"\n-#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n-#include <vector>\n+#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh\"\n+#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n+#include <cstddef>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl\n-\u00a0       An interface for accessing data in a specific level of a refined\n-        topology hierarchy. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bf_\ba_\br\n-    * _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bc_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00782.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00782.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,3 +1,3 @@\n var a00782 = [\n-    [\"TopologyLevel\", \"a01113.html\", \"a01113\"]\n+    [\"CpuEvaluator\", \"a01165.html\", null]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00782_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00782_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/far/topologyLevel.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/osd/cpuEvaluator.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">topologyLevel.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">cpuEvaluator.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00782.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2015 DreamWorks Animation LLC.</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2015 Pixar</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -118,228 +118,530 @@\n <div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_FAR_TOPOLOGY_LEVEL_H</span></div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#define OPENSUBDIV3_FAR_TOPOLOGY_LEVEL_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span> </div>\n-<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span> </div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#include &quot;../vtr/level.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../vtr/refinement.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../far/types.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span> </div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span> </div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span> </div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"keyword\">namespace </span>Far {</div>\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00049\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html\">   49</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01113.html\">TopologyLevel</a> {</div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span> </div>\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span> </div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span> </div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#aaf4a32b8a414eff77000c584c2015cb7\">   62</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01113.html#aaf4a32b8a414eff77000c584c2015cb7\">GetNumVertices</a>()<span class=\"keyword\"> const     </span>{ <span class=\"keywordflow\">return</span> _level-&gt;getNumVertices(); }</div>\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span> </div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#a9920fb01c4b75c94a953a98008a4baba\">   65</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01113.html#a9920fb01c4b75c94a953a98008a4baba\">GetNumFaces</a>()<span class=\"keyword\"> const        </span>{ <span class=\"keywordflow\">return</span> _level-&gt;getNumFaces(); }</div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span> </div>\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#a6338eb5f743bf170f76ec5a9764735d6\">   68</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01113.html#a6338eb5f743bf170f76ec5a9764735d6\">GetNumEdges</a>()<span class=\"keyword\"> const        </span>{ <span class=\"keywordflow\">return</span> _level-&gt;getNumEdges(); }</div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span> </div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#ae4228cb7954118c55af0a77a99333788\">   71</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01113.html#ae4228cb7954118c55af0a77a99333788\">GetNumFaceVertices</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _level-&gt;getNumFaceVerticesTotal(); }</div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span> </div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span> </div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>    <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span> </div>\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#a4b4f2e42c99ed87cb2ff3eb949a1d074\">   93</a></span>    <a class=\"code hl_class\" href=\"a01353.html\">ConstIndexArray</a> <a class=\"code hl_function\" href=\"a01113.html#a4b4f2e42c99ed87cb2ff3eb949a1d074\">GetFaceVertices</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> f)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _level-&gt;getFaceVertices(f); }</div>\n+<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_CPU_EVALUATOR_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_CPU_EVALUATOR_H</span></div>\n+<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n+<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#include &quot;../osd/bufferDescriptor.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../osd/types.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &lt;cstddef&gt;</span></div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">namespace </span>Osd {</div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00039\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01165.html\">   39</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01165.html\">CpuEvaluator</a> {</div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span> </div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00072\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01165.html#ae8e914fc701af498ea6c6244da408b94\">   72</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01165.html#ae8e914fc701af498ea6c6244da408b94\">EvalStencils</a>(</div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span>        <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01165.html\">CpuEvaluator</a> *instance = NULL,</div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span> </div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span> </div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>        <span class=\"keywordflow\">if</span> (stencilTable-&gt;GetNumStencils() == 0)</div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span> </div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01165.html#ae8e914fc701af498ea6c6244da408b94\">EvalStencils</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>                            dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>                            &amp;stencilTable-&gt;GetSizes()[0],</div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>                            &amp;stencilTable-&gt;GetOffsets()[0],</div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>                            &amp;stencilTable-&gt;GetControlIndices()[0],</div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>                            &amp;stencilTable-&gt;GetWeights()[0],</div>\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>                            <span class=\"comment\">/*start = */</span> 0,</div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>                            <span class=\"comment\">/*end   = */</span> stencilTable-&gt;GetNumStencils());</div>\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span>    }</div>\n+</div>\n <div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span> </div>\n-<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#a96e525f06a05bfcd50166c6cdccbff2f\">   96</a></span>    <a class=\"code hl_class\" href=\"a01353.html\">ConstIndexArray</a> <a class=\"code hl_function\" href=\"a01113.html#a96e525f06a05bfcd50166c6cdccbff2f\">GetFaceEdges</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> f)<span class=\"keyword\"> const    </span>{ <span class=\"keywordflow\">return</span> _level-&gt;getFaceEdges(f); }</div>\n-<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span> </div>\n-<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#ac31cc6267342297f46af11ea4d90734d\">   99</a></span>    <a class=\"code hl_class\" href=\"a01353.html\">ConstIndexArray</a> <a class=\"code hl_function\" href=\"a01113.html#ac31cc6267342297f46af11ea4d90734d\">GetEdgeVertices</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> e)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _level-&gt;getEdgeVertices(e); }</div>\n-<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span> </div>\n-<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#abb05067bd51857d06a3f8e48c173d2f0\">  102</a></span>    <a class=\"code hl_class\" href=\"a01353.html\">ConstIndexArray</a> <a class=\"code hl_function\" href=\"a01113.html#abb05067bd51857d06a3f8e48c173d2f0\">GetEdgeFaces</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> e)<span class=\"keyword\"> const    </span>{ <span class=\"keywordflow\">return</span> _level-&gt;getEdgeFaces(e); }</div>\n-<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span> </div>\n-<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#a8d60953ddb124d161c845aff79b2766d\">  105</a></span>    <a class=\"code hl_class\" href=\"a01353.html\">ConstIndexArray</a> <a class=\"code hl_function\" href=\"a01113.html#a8d60953ddb124d161c845aff79b2766d\">GetVertexFaces</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v)<span class=\"keyword\"> const  </span>{ <span class=\"keywordflow\">return</span> _level-&gt;getVertexFaces(v); }</div>\n-<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span> </div>\n-<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#a71766ec0fe6997019e1ea2d9d5be6b30\">  108</a></span>    <a class=\"code hl_class\" href=\"a01353.html\">ConstIndexArray</a> <a class=\"code hl_function\" href=\"a01113.html#a71766ec0fe6997019e1ea2d9d5be6b30\">GetVertexEdges</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v)<span class=\"keyword\"> const  </span>{ <span class=\"keywordflow\">return</span> _level-&gt;getVertexEdges(v); }</div>\n-<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span> </div>\n-<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#afac250ff4bc31d95fd2300202fa0e083\">  111</a></span>    <a class=\"code hl_class\" href=\"a01353.html\">ConstLocalIndexArray</a> <a class=\"code hl_function\" href=\"a01113.html#afac250ff4bc31d95fd2300202fa0e083\">GetVertexFaceLocalIndices</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _level-&gt;getVertexFaceLocalIndices(v); }</div>\n-<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span> </div>\n-<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#a91fb9d0d5f9451bc57ad9bd79a3d5ecc\">  114</a></span>    <a class=\"code hl_class\" href=\"a01353.html\">ConstLocalIndexArray</a> <a class=\"code hl_function\" href=\"a01113.html#a91fb9d0d5f9451bc57ad9bd79a3d5ecc\">GetVertexEdgeLocalIndices</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _level-&gt;getVertexEdgeLocalIndices(v); }</div>\n-<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span> </div>\n-<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#a2f1963e1ac953b6ad0e59e26b0715ffd\">  117</a></span>    <a class=\"code hl_class\" href=\"a01353.html\">ConstLocalIndexArray</a> <a class=\"code hl_function\" href=\"a01113.html#a2f1963e1ac953b6ad0e59e26b0715ffd\">GetEdgeFaceLocalIndices</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> e)<span class=\"keyword\"> const   </span>{ <span class=\"keywordflow\">return</span> _level-&gt;getEdgeFaceLocalIndices(e); }</div>\n-<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\">  118</span> </div>\n-<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#a9197cce11b83fae9f8ed3ef5ac79c2ed\">  120</a></span>    <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> <a class=\"code hl_function\" href=\"a01113.html#a9197cce11b83fae9f8ed3ef5ac79c2ed\">FindEdge</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v0, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v1)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _level-&gt;findEdge(v0, v1); }</div>\n-<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span> </div>\n-<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span> </div>\n-<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span> </div>\n-<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#a6c6c47e9293f086576f6b54f92abbed3\">  128</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01113.html#a6c6c47e9293f086576f6b54f92abbed3\">IsEdgeNonManifold</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> e)<span class=\"keyword\"> const   </span>{ <span class=\"keywordflow\">return</span> _level-&gt;isEdgeNonManifold(e); }</div>\n+<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01165.html#a4345e3659b7fb82f23dd51c688179ce3\">  121</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01165.html#a4345e3659b7fb82f23dd51c688179ce3\">EvalStencils</a>(</div>\n+<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span>        <span class=\"keywordtype\">float</span> *dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * sizes,</div>\n+<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * offsets,</div>\n+<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * indices,</div>\n+<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * weights,</div>\n+<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span>        <span class=\"keywordtype\">int</span> start, <span class=\"keywordtype\">int</span> end);</div>\n <div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span> </div>\n-<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#ae8289e621fd91c4eff0d44903edb34c2\">  131</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01113.html#ae8289e621fd91c4eff0d44903edb34c2\">IsVertexNonManifold</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _level-&gt;isVertexNonManifold(v); }</div>\n-<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\">  132</span> </div>\n-<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#af13c6081737fbf3fa34e690e1d5b81b8\">  134</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01113.html#af13c6081737fbf3fa34e690e1d5b81b8\">IsEdgeBoundary</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> e)<span class=\"keyword\"> const   </span>{ <span class=\"keywordflow\">return</span> _level-&gt;getEdgeTag(e)._boundary; }</div>\n-<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\">  135</span> </div>\n-<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#aa3218dc6988e9a2cfcb099a793314811\">  137</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01113.html#aa3218dc6988e9a2cfcb099a793314811\">IsVertexBoundary</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _level-&gt;getVertexTag(v)._boundary; }</div>\n-<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\">  138</span> </div>\n-<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#a23deed96e33a15e5307536d34d67d284\">  140</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01113.html#a23deed96e33a15e5307536d34d67d284\">IsVertexCorner</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (_level-&gt;getNumVertexFaces(v) == 1); }</div>\n-<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\">  141</span> </div>\n-<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#a10516dcd41f2f223e38d04f31311f100\">  162</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01113.html#a10516dcd41f2f223e38d04f31311f100\">IsVertexValenceRegular</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> !_level-&gt;getVertexTag(v)._xordinary || <a class=\"code hl_function\" href=\"a01113.html#a23deed96e33a15e5307536d34d67d284\">IsVertexCorner</a>(v); }</div>\n-<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\">  164</span> </div>\n-<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\">  166</span> </div>\n-<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span> </div>\n-<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#a186601737e9346c814c965c5409b2c7d\">  173</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"a01113.html#a186601737e9346c814c965c5409b2c7d\">GetEdgeSharpness</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> e)<span class=\"keyword\"> const   </span>{ <span class=\"keywordflow\">return</span> _level-&gt;getEdgeSharpness(e); }</div>\n-<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\">  174</span> </div>\n-<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#ad44fcb4ce1945cc40f6772ccdc57c216\">  176</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"a01113.html#ad44fcb4ce1945cc40f6772ccdc57c216\">GetVertexSharpness</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _level-&gt;getVertexSharpness(v); }</div>\n-<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span> </div>\n-<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#a7740126da36c149d0c38beab662b262d\">  179</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01113.html#a7740126da36c149d0c38beab662b262d\">IsEdgeInfSharp</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> e)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _level-&gt;getEdgeTag(e)._infSharp; }</div>\n-<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\">  180</span> </div>\n-<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#af2e9df856672471d6d52245646b99ec1\">  182</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01113.html#af2e9df856672471d6d52245646b99ec1\">IsVertexInfSharp</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _level-&gt;getVertexTag(v)._infSharp; }</div>\n-<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\">  183</span> </div>\n-<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#ac5840056570743d410a552b8d1d90f4d\">  185</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01113.html#ac5840056570743d410a552b8d1d90f4d\">IsEdgeSemiSharp</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> e)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _level-&gt;getEdgeTag(e)._semiSharp; }</div>\n-<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\">  186</span> </div>\n-<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#adba75894e1f7679a01b8341b9ac00893\">  188</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01113.html#adba75894e1f7679a01b8341b9ac00893\">IsVertexSemiSharp</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _level-&gt;getVertexTag(v)._semiSharp; }</div>\n-<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\">  189</span> </div>\n-<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#a6ce73966755c0b5d8a47c5de34e0b91c\">  191</a></span>    <span class=\"keywordtype\">bool</span>  <a class=\"code hl_function\" href=\"a01113.html#a6ce73966755c0b5d8a47c5de34e0b91c\">IsFaceHole</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> f)<span class=\"keyword\"> const         </span>{ <span class=\"keywordflow\">return</span> _level-&gt;isFaceHole(f); }</div>\n-<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\">  192</span> </div>\n-<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#a20841b396faca029ff2507b1456268d1\">  194</a></span>    <a class=\"code hl_enumeration\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78\">Sdc::Crease::Rule</a> <a class=\"code hl_function\" href=\"a01113.html#a20841b396faca029ff2507b1456268d1\">GetVertexRule</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _level-&gt;getVertexRule(v); }</div>\n-<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\">  196</span> </div>\n-<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\">  198</span> </div>\n-<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\">  228</span> </div>\n-<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#aa9be824a572029f3ec1e0c0d6cfecd77\">  230</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01113.html#aa9be824a572029f3ec1e0c0d6cfecd77\">GetNumFVarChannels</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _level-&gt;getNumFVarChannels(); }</div>\n-<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\">  231</span> </div>\n-<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#afa663a1bb972ec104c8b842d9dc967a5\">  234</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01113.html#afa663a1bb972ec104c8b842d9dc967a5\">GetNumFVarValues</a>(<span class=\"keywordtype\">int</span> channel = 0)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _level-&gt;getNumFVarValues(channel); }</div>\n-<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\">  235</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00237\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#abdcd74fa1bc533f080edf439beddc791\">  237</a></span>    <a class=\"code hl_class\" href=\"a01353.html\">ConstIndexArray</a> <a class=\"code hl_function\" href=\"a01113.html#abdcd74fa1bc533f080edf439beddc791\">GetFaceFVarValues</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> f, <span class=\"keywordtype\">int</span> channel = 0)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\">  238</span>        <span class=\"keywordflow\">return</span> _level-&gt;getFaceFVarValues(f, channel);</div>\n-<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\">  239</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\">  240</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00242\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#a76fadd35f9ed2954cd78926d77af53b5\">  242</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01113.html#a76fadd35f9ed2954cd78926d77af53b5\">DoesVertexFVarTopologyMatch</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v, <span class=\"keywordtype\">int</span> channel = 0)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\">  243</span>        <span class=\"keywordflow\">return</span> _level-&gt;doesVertexFVarTopologyMatch(v, channel);</div>\n-<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\">  244</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00245\" name=\"l00245\"></a><span class=\"lineno\">  245</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00247\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00247\" name=\"l00247\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#a3a95c7209a6a7997eb8c28784376be92\">  247</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01113.html#a3a95c7209a6a7997eb8c28784376be92\">DoesEdgeFVarTopologyMatch</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> e, <span class=\"keywordtype\">int</span> channel = 0)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00248\" name=\"l00248\"></a><span class=\"lineno\">  248</span>        <span class=\"keywordflow\">return</span> _level-&gt;doesEdgeFVarTopologyMatch(e, channel);</div>\n-<div class=\"line\"><a id=\"l00249\" name=\"l00249\"></a><span class=\"lineno\">  249</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00250\" name=\"l00250\"></a><span class=\"lineno\">  250</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00252\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00252\" name=\"l00252\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#a1f37d5ebb1aca5f512d914d5810031a3\">  252</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01113.html#a1f37d5ebb1aca5f512d914d5810031a3\">DoesFaceFVarTopologyMatch</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> f, <span class=\"keywordtype\">int</span> channel = 0)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00253\" name=\"l00253\"></a><span class=\"lineno\">  253</span>        <span class=\"keywordflow\">return</span> _level-&gt;doesFaceFVarTopologyMatch(f, channel);</div>\n-<div class=\"line\"><a id=\"l00254\" name=\"l00254\"></a><span class=\"lineno\">  254</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00255\" name=\"l00255\"></a><span class=\"lineno\">  255</span> </div>\n-<div class=\"line\"><a id=\"l00257\" name=\"l00257\"></a><span class=\"lineno\">  257</span> </div>\n-<div class=\"line\"><a id=\"l00259\" name=\"l00259\"></a><span class=\"lineno\">  259</span> </div>\n-<div class=\"line\"><a id=\"l00260\" name=\"l00260\"></a><span class=\"lineno\">  260</span> </div>\n-<div class=\"line\"><a id=\"l00262\" name=\"l00262\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#a538ff3341a16c352107117885dbfdf51\">  262</a></span>    <a class=\"code hl_class\" href=\"a01353.html\">ConstIndexArray</a> <a class=\"code hl_function\" href=\"a01113.html#a538ff3341a16c352107117885dbfdf51\">GetFaceChildFaces</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> f)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _refToChild-&gt;getFaceChildFaces(f); }</div>\n-<div class=\"line\"><a id=\"l00263\" name=\"l00263\"></a><span class=\"lineno\">  263</span> </div>\n-<div class=\"line\"><a id=\"l00265\" name=\"l00265\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#a34ad525bfe0752e223af5d175b73df4b\">  265</a></span>    <a class=\"code hl_class\" href=\"a01353.html\">ConstIndexArray</a> <a class=\"code hl_function\" href=\"a01113.html#a34ad525bfe0752e223af5d175b73df4b\">GetFaceChildEdges</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> f)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _refToChild-&gt;getFaceChildEdges(f); }</div>\n-<div class=\"line\"><a id=\"l00266\" name=\"l00266\"></a><span class=\"lineno\">  266</span> </div>\n-<div class=\"line\"><a id=\"l00268\" name=\"l00268\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#a7718004bcd0c2ca1c75690bce636b288\">  268</a></span>    <a class=\"code hl_class\" href=\"a01353.html\">ConstIndexArray</a> <a class=\"code hl_function\" href=\"a01113.html#a7718004bcd0c2ca1c75690bce636b288\">GetEdgeChildEdges</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> e)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _refToChild-&gt;getEdgeChildEdges(e); }</div>\n-<div class=\"line\"><a id=\"l00269\" name=\"l00269\"></a><span class=\"lineno\">  269</span> </div>\n-<div class=\"line\"><a id=\"l00271\" name=\"l00271\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#a767b6203c923ebbbd37688e3c9e6cac9\">  271</a></span>    <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> <a class=\"code hl_function\" href=\"a01113.html#a767b6203c923ebbbd37688e3c9e6cac9\">GetFaceChildVertex</a>(  <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> f)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _refToChild-&gt;getFaceChildVertex(f); }</div>\n-<div class=\"line\"><a id=\"l00272\" name=\"l00272\"></a><span class=\"lineno\">  272</span> </div>\n-<div class=\"line\"><a id=\"l00274\" name=\"l00274\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#ad93895054c5fe26a9d6693b3148dfe37\">  274</a></span>    <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> <a class=\"code hl_function\" href=\"a01113.html#ad93895054c5fe26a9d6693b3148dfe37\">GetEdgeChildVertex</a>(  <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> e)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _refToChild-&gt;getEdgeChildVertex(e); }</div>\n-<div class=\"line\"><a id=\"l00275\" name=\"l00275\"></a><span class=\"lineno\">  275</span> </div>\n-<div class=\"line\"><a id=\"l00277\" name=\"l00277\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#a2d57cefb50c830531eb61a6a2e8b79c4\">  277</a></span>    <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> <a class=\"code hl_function\" href=\"a01113.html#a2d57cefb50c830531eb61a6a2e8b79c4\">GetVertexChildVertex</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _refToChild-&gt;getVertexChildVertex(v); }</div>\n-<div class=\"line\"><a id=\"l00278\" name=\"l00278\"></a><span class=\"lineno\">  278</span> </div>\n-<div class=\"line\"><a id=\"l00280\" name=\"l00280\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#a022517960b10f4541899a2f87cc8de1f\">  280</a></span>    <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> <a class=\"code hl_function\" href=\"a01113.html#a022517960b10f4541899a2f87cc8de1f\">GetFaceParentFace</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> f)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _refToParent-&gt;getChildFaceParentFace(f); }</div>\n-<div class=\"line\"><a id=\"l00282\" name=\"l00282\"></a><span class=\"lineno\">  282</span> </div>\n-<div class=\"line\"><a id=\"l00284\" name=\"l00284\"></a><span class=\"lineno\">  284</span> </div>\n-<div class=\"line\"><a id=\"l00285\" name=\"l00285\"></a><span class=\"lineno\">  285</span> </div>\n-<div class=\"line\"><a id=\"l00286\" name=\"l00286\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#a640a101c65375bded32722376e651f97\">  286</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01113.html#a640a101c65375bded32722376e651f97\">ValidateTopology</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _level-&gt;validateTopology(); }</div>\n-<div class=\"line\"><a id=\"l00287\" name=\"l00287\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#a3f963f5352658762e7a2e8d82fb888a0\">  287</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01113.html#a3f963f5352658762e7a2e8d82fb888a0\">PrintTopology</a>(<span class=\"keywordtype\">bool</span> children = <span class=\"keyword\">true</span>)<span class=\"keyword\"> const </span>{ _level-&gt;print((children &amp;&amp; _refToChild) ? _refToChild : 0); }</div>\n-<div class=\"line\"><a id=\"l00289\" name=\"l00289\"></a><span class=\"lineno\">  289</span> </div>\n-<div class=\"line\"><a id=\"l00290\" name=\"l00290\"></a><span class=\"lineno\">  290</span> </div>\n-<div class=\"line\"><a id=\"l00291\" name=\"l00291\"></a><span class=\"lineno\">  291</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00292\" name=\"l00292\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#a094d2e51437ecd5ecc6a0cf2c4ce1e78\">  292</a></span>    <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a>;</div>\n-<div class=\"line\"><a id=\"l00293\" name=\"l00293\"></a><span class=\"lineno\">  293</span> </div>\n-<div class=\"line\"><a id=\"l00294\" name=\"l00294\"></a><span class=\"lineno\">  294</span>    Vtr::internal::Level <span class=\"keyword\">const</span> *      _level;</div>\n-<div class=\"line\"><a id=\"l00295\" name=\"l00295\"></a><span class=\"lineno\">  295</span>    Vtr::internal::Refinement <span class=\"keyword\">const</span> * _refToParent;</div>\n-<div class=\"line\"><a id=\"l00296\" name=\"l00296\"></a><span class=\"lineno\">  296</span>    Vtr::internal::Refinement <span class=\"keyword\">const</span> * _refToChild;</div>\n-<div class=\"line\"><a id=\"l00297\" name=\"l00297\"></a><span class=\"lineno\">  297</span> </div>\n-<div class=\"line\"><a id=\"l00298\" name=\"l00298\"></a><span class=\"lineno\">  298</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00299\" name=\"l00299\"></a><span class=\"lineno\">  299</span>    <span class=\"comment\">//  Not intended for public use, but required by std::vector, etc...</span></div>\n-<div class=\"line\"><a id=\"l00300\" name=\"l00300\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#a03a8183081b34983ade155e3636ba835\">  300</a></span>    <a class=\"code hl_function\" href=\"a01113.html#a03a8183081b34983ade155e3636ba835\">TopologyLevel</a>() { }</div>\n-<div class=\"line\"><a id=\"l00301\" name=\"l00301\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#ac5cb1977407971568a00663f6badb998\">  301</a></span>    <a class=\"code hl_function\" href=\"a01113.html#ac5cb1977407971568a00663f6badb998\">~TopologyLevel</a>() { }</div>\n-<div class=\"line\"><a id=\"l00302\" name=\"l00302\"></a><span class=\"lineno\">  302</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00303\" name=\"l00303\"></a><span class=\"lineno\">  303</span> </div>\n-<div class=\"line\"><a id=\"l00304\" name=\"l00304\"></a><span class=\"lineno\">  304</span>} <span class=\"comment\">// end namespace Far</span></div>\n-<div class=\"line\"><a id=\"l00305\" name=\"l00305\"></a><span class=\"lineno\">  305</span> </div>\n-<div class=\"line\"><a id=\"l00306\" name=\"l00306\"></a><span class=\"lineno\">  306</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\">  307</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00308\" name=\"l00308\"></a><span class=\"lineno\">  308</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l00309\" name=\"l00309\"></a><span class=\"lineno\">  309</span> </div>\n-<div class=\"line\"><a id=\"l00310\" name=\"l00310\"></a><span class=\"lineno\">  310</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_FAR_TOPOLOGY_LEVEL_H */</span><span class=\"preprocessor\"></span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa00908_html_ab34c85a48f33dfe7b8bf4d966fdebbf2\"><div class=\"ttname\"><a href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">OpenSubdiv::OPENSUBDIV_VERSION::Far::Index</a></div><div class=\"ttdeci\">Vtr::Index Index</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01486_source.html#l00041\">types.h:41</a></div></div>\n-<div class=\"ttc\" id=\"aa01113_html\"><div class=\"ttname\"><a href=\"a01113.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel</a></div><div class=\"ttdoc\">An interface for accessing data in a specific level of a refined topology hierarchy.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l00049\">topologyLevel.h:49</a></div></div>\n-<div class=\"ttc\" id=\"aa01113_html_a022517960b10f4541899a2f87cc8de1f\"><div class=\"ttname\"><a href=\"a01113.html#a022517960b10f4541899a2f87cc8de1f\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::GetFaceParentFace</a></div><div class=\"ttdeci\">Index GetFaceParentFace(Index f) const</div><div class=\"ttdoc\">Return the parent face (in the previous level) of a given face.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l00280\">topologyLevel.h:280</a></div></div>\n-<div class=\"ttc\" id=\"aa01113_html_a03a8183081b34983ade155e3636ba835\"><div class=\"ttname\"><a href=\"a01113.html#a03a8183081b34983ade155e3636ba835\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::TopologyLevel</a></div><div class=\"ttdeci\">TopologyLevel()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l00300\">topologyLevel.h:300</a></div></div>\n-<div class=\"ttc\" id=\"aa01113_html_a10516dcd41f2f223e38d04f31311f100\"><div class=\"ttname\"><a href=\"a01113.html#a10516dcd41f2f223e38d04f31311f100\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::IsVertexValenceRegular</a></div><div class=\"ttdeci\">bool IsVertexValenceRegular(Index v) const</div><div class=\"ttdoc\">Return if the valence of the vertex is regular (must be manifold)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l00162\">topologyLevel.h:162</a></div></div>\n-<div class=\"ttc\" id=\"aa01113_html_a186601737e9346c814c965c5409b2c7d\"><div class=\"ttname\"><a href=\"a01113.html#a186601737e9346c814c965c5409b2c7d\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::GetEdgeSharpness</a></div><div class=\"ttdeci\">float GetEdgeSharpness(Index e) const</div><div class=\"ttdoc\">Return the sharpness assigned a given edge.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l00173\">topologyLevel.h:173</a></div></div>\n-<div class=\"ttc\" id=\"aa01113_html_a1f37d5ebb1aca5f512d914d5810031a3\"><div class=\"ttname\"><a href=\"a01113.html#a1f37d5ebb1aca5f512d914d5810031a3\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::DoesFaceFVarTopologyMatch</a></div><div class=\"ttdeci\">bool DoesFaceFVarTopologyMatch(Index f, int channel=0) const</div><div class=\"ttdoc\">Return if face-varying topology around a face matches.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l00252\">topologyLevel.h:252</a></div></div>\n-<div class=\"ttc\" id=\"aa01113_html_a20841b396faca029ff2507b1456268d1\"><div class=\"ttname\"><a href=\"a01113.html#a20841b396faca029ff2507b1456268d1\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::GetVertexRule</a></div><div class=\"ttdeci\">Sdc::Crease::Rule GetVertexRule(Index v) const</div><div class=\"ttdoc\">Return the subdivision rule assigned a given vertex specific to this level.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l00194\">topologyLevel.h:194</a></div></div>\n-<div class=\"ttc\" id=\"aa01113_html_a23deed96e33a15e5307536d34d67d284\"><div class=\"ttname\"><a href=\"a01113.html#a23deed96e33a15e5307536d34d67d284\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::IsVertexCorner</a></div><div class=\"ttdeci\">bool IsVertexCorner(Index v) const</div><div class=\"ttdoc\">Return if the vertex is a corner (only one incident face)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l00140\">topologyLevel.h:140</a></div></div>\n-<div class=\"ttc\" id=\"aa01113_html_a2d57cefb50c830531eb61a6a2e8b79c4\"><div class=\"ttname\"><a href=\"a01113.html#a2d57cefb50c830531eb61a6a2e8b79c4\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::GetVertexChildVertex</a></div><div class=\"ttdeci\">Index GetVertexChildVertex(Index v) const</div><div class=\"ttdoc\">Return the child vertex (in the next level) of a given vertex.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l00277\">topologyLevel.h:277</a></div></div>\n-<div class=\"ttc\" id=\"aa01113_html_a2f1963e1ac953b6ad0e59e26b0715ffd\"><div class=\"ttname\"><a href=\"a01113.html#a2f1963e1ac953b6ad0e59e26b0715ffd\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::GetEdgeFaceLocalIndices</a></div><div class=\"ttdeci\">ConstLocalIndexArray GetEdgeFaceLocalIndices(Index e) const</div><div class=\"ttdoc\">Access the local indices of an edge with respect to its incident faces.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l00117\">topologyLevel.h:117</a></div></div>\n-<div class=\"ttc\" id=\"aa01113_html_a34ad525bfe0752e223af5d175b73df4b\"><div class=\"ttname\"><a href=\"a01113.html#a34ad525bfe0752e223af5d175b73df4b\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::GetFaceChildEdges</a></div><div class=\"ttdeci\">ConstIndexArray GetFaceChildEdges(Index f) const</div><div class=\"ttdoc\">Access the child edges (in the next level) of a given face.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l00265\">topologyLevel.h:265</a></div></div>\n-<div class=\"ttc\" id=\"aa01113_html_a3a95c7209a6a7997eb8c28784376be92\"><div class=\"ttname\"><a href=\"a01113.html#a3a95c7209a6a7997eb8c28784376be92\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::DoesEdgeFVarTopologyMatch</a></div><div class=\"ttdeci\">bool DoesEdgeFVarTopologyMatch(Index e, int channel=0) const</div><div class=\"ttdoc\">Return if face-varying topology across the edge only matches.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l00247\">topologyLevel.h:247</a></div></div>\n-<div class=\"ttc\" id=\"aa01113_html_a3f963f5352658762e7a2e8d82fb888a0\"><div class=\"ttname\"><a href=\"a01113.html#a3f963f5352658762e7a2e8d82fb888a0\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::PrintTopology</a></div><div class=\"ttdeci\">void PrintTopology(bool children=true) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l00287\">topologyLevel.h:287</a></div></div>\n-<div class=\"ttc\" id=\"aa01113_html_a4b4f2e42c99ed87cb2ff3eb949a1d074\"><div class=\"ttname\"><a href=\"a01113.html#a4b4f2e42c99ed87cb2ff3eb949a1d074\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::GetFaceVertices</a></div><div class=\"ttdeci\">ConstIndexArray GetFaceVertices(Index f) const</div><div class=\"ttdoc\">Access the vertices incident a given face.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l00093\">topologyLevel.h:93</a></div></div>\n-<div class=\"ttc\" id=\"aa01113_html_a538ff3341a16c352107117885dbfdf51\"><div class=\"ttname\"><a href=\"a01113.html#a538ff3341a16c352107117885dbfdf51\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::GetFaceChildFaces</a></div><div class=\"ttdeci\">ConstIndexArray GetFaceChildFaces(Index f) const</div><div class=\"ttdoc\">Access the child faces (in the next level) of a given face.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l00262\">topologyLevel.h:262</a></div></div>\n-<div class=\"ttc\" id=\"aa01113_html_a6338eb5f743bf170f76ec5a9764735d6\"><div class=\"ttname\"><a href=\"a01113.html#a6338eb5f743bf170f76ec5a9764735d6\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::GetNumEdges</a></div><div class=\"ttdeci\">int GetNumEdges() const</div><div class=\"ttdoc\">Return the number of edges in this level.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l00068\">topologyLevel.h:68</a></div></div>\n-<div class=\"ttc\" id=\"aa01113_html_a640a101c65375bded32722376e651f97\"><div class=\"ttname\"><a href=\"a01113.html#a640a101c65375bded32722376e651f97\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::ValidateTopology</a></div><div class=\"ttdeci\">bool ValidateTopology() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l00286\">topologyLevel.h:286</a></div></div>\n-<div class=\"ttc\" id=\"aa01113_html_a6c6c47e9293f086576f6b54f92abbed3\"><div class=\"ttname\"><a href=\"a01113.html#a6c6c47e9293f086576f6b54f92abbed3\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::IsEdgeNonManifold</a></div><div class=\"ttdeci\">bool IsEdgeNonManifold(Index e) const</div><div class=\"ttdoc\">Return if the edge is non-manifold.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l00128\">topologyLevel.h:128</a></div></div>\n-<div class=\"ttc\" id=\"aa01113_html_a6ce73966755c0b5d8a47c5de34e0b91c\"><div class=\"ttname\"><a href=\"a01113.html#a6ce73966755c0b5d8a47c5de34e0b91c\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::IsFaceHole</a></div><div class=\"ttdeci\">bool IsFaceHole(Index f) const</div><div class=\"ttdoc\">Return if a given face has been tagged as a hole.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l00191\">topologyLevel.h:191</a></div></div>\n-<div class=\"ttc\" id=\"aa01113_html_a71766ec0fe6997019e1ea2d9d5be6b30\"><div class=\"ttname\"><a href=\"a01113.html#a71766ec0fe6997019e1ea2d9d5be6b30\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::GetVertexEdges</a></div><div class=\"ttdeci\">ConstIndexArray GetVertexEdges(Index v) const</div><div class=\"ttdoc\">Access the edges incident a given vertex.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l00108\">topologyLevel.h:108</a></div></div>\n-<div class=\"ttc\" id=\"aa01113_html_a767b6203c923ebbbd37688e3c9e6cac9\"><div class=\"ttname\"><a href=\"a01113.html#a767b6203c923ebbbd37688e3c9e6cac9\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::GetFaceChildVertex</a></div><div class=\"ttdeci\">Index GetFaceChildVertex(Index f) const</div><div class=\"ttdoc\">Return the child vertex (in the next level) of a given face.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l00271\">topologyLevel.h:271</a></div></div>\n-<div class=\"ttc\" id=\"aa01113_html_a76fadd35f9ed2954cd78926d77af53b5\"><div class=\"ttname\"><a href=\"a01113.html#a76fadd35f9ed2954cd78926d77af53b5\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::DoesVertexFVarTopologyMatch</a></div><div class=\"ttdeci\">bool DoesVertexFVarTopologyMatch(Index v, int channel=0) const</div><div class=\"ttdoc\">Return if face-varying topology around a vertex matches.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l00242\">topologyLevel.h:242</a></div></div>\n-<div class=\"ttc\" id=\"aa01113_html_a7718004bcd0c2ca1c75690bce636b288\"><div class=\"ttname\"><a href=\"a01113.html#a7718004bcd0c2ca1c75690bce636b288\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::GetEdgeChildEdges</a></div><div class=\"ttdeci\">ConstIndexArray GetEdgeChildEdges(Index e) const</div><div class=\"ttdoc\">Access the child edges (in the next level) of a given edge.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l00268\">topologyLevel.h:268</a></div></div>\n-<div class=\"ttc\" id=\"aa01113_html_a7740126da36c149d0c38beab662b262d\"><div class=\"ttname\"><a href=\"a01113.html#a7740126da36c149d0c38beab662b262d\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::IsEdgeInfSharp</a></div><div class=\"ttdeci\">bool IsEdgeInfSharp(Index e) const</div><div class=\"ttdoc\">Return if the edge is infinitely-sharp.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l00179\">topologyLevel.h:179</a></div></div>\n-<div class=\"ttc\" id=\"aa01113_html_a8d60953ddb124d161c845aff79b2766d\"><div class=\"ttname\"><a href=\"a01113.html#a8d60953ddb124d161c845aff79b2766d\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::GetVertexFaces</a></div><div class=\"ttdeci\">ConstIndexArray GetVertexFaces(Index v) const</div><div class=\"ttdoc\">Access the faces incident a given vertex.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l00105\">topologyLevel.h:105</a></div></div>\n-<div class=\"ttc\" id=\"aa01113_html_a9197cce11b83fae9f8ed3ef5ac79c2ed\"><div class=\"ttname\"><a href=\"a01113.html#a9197cce11b83fae9f8ed3ef5ac79c2ed\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::FindEdge</a></div><div class=\"ttdeci\">Index FindEdge(Index v0, Index v1) const</div><div class=\"ttdoc\">Identify the edge matching the given vertex pair.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l00120\">topologyLevel.h:120</a></div></div>\n-<div class=\"ttc\" id=\"aa01113_html_a91fb9d0d5f9451bc57ad9bd79a3d5ecc\"><div class=\"ttname\"><a href=\"a01113.html#a91fb9d0d5f9451bc57ad9bd79a3d5ecc\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::GetVertexEdgeLocalIndices</a></div><div class=\"ttdeci\">ConstLocalIndexArray GetVertexEdgeLocalIndices(Index v) const</div><div class=\"ttdoc\">Access the local indices of a vertex with respect to its incident edges.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l00114\">topologyLevel.h:114</a></div></div>\n-<div class=\"ttc\" id=\"aa01113_html_a96e525f06a05bfcd50166c6cdccbff2f\"><div class=\"ttname\"><a href=\"a01113.html#a96e525f06a05bfcd50166c6cdccbff2f\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::GetFaceEdges</a></div><div class=\"ttdeci\">ConstIndexArray GetFaceEdges(Index f) const</div><div class=\"ttdoc\">Access the edges incident a given face.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l00096\">topologyLevel.h:96</a></div></div>\n-<div class=\"ttc\" id=\"aa01113_html_a9920fb01c4b75c94a953a98008a4baba\"><div class=\"ttname\"><a href=\"a01113.html#a9920fb01c4b75c94a953a98008a4baba\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::GetNumFaces</a></div><div class=\"ttdeci\">int GetNumFaces() const</div><div class=\"ttdoc\">Return the number of faces in this level.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l00065\">topologyLevel.h:65</a></div></div>\n-<div class=\"ttc\" id=\"aa01113_html_aa3218dc6988e9a2cfcb099a793314811\"><div class=\"ttname\"><a href=\"a01113.html#aa3218dc6988e9a2cfcb099a793314811\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::IsVertexBoundary</a></div><div class=\"ttdeci\">bool IsVertexBoundary(Index v) const</div><div class=\"ttdoc\">Return if the vertex is on a boundary (at least one incident boundary edge)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l00137\">topologyLevel.h:137</a></div></div>\n-<div class=\"ttc\" id=\"aa01113_html_aa9be824a572029f3ec1e0c0d6cfecd77\"><div class=\"ttname\"><a href=\"a01113.html#aa9be824a572029f3ec1e0c0d6cfecd77\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::GetNumFVarChannels</a></div><div class=\"ttdeci\">int GetNumFVarChannels() const</div><div class=\"ttdoc\">Return the number of face-varying channels (should be same for all levels)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l00230\">topologyLevel.h:230</a></div></div>\n-<div class=\"ttc\" id=\"aa01113_html_aaf4a32b8a414eff77000c584c2015cb7\"><div class=\"ttname\"><a href=\"a01113.html#aaf4a32b8a414eff77000c584c2015cb7\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::GetNumVertices</a></div><div class=\"ttdeci\">int GetNumVertices() const</div><div class=\"ttdoc\">Return the number of vertices in this level.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l00062\">topologyLevel.h:62</a></div></div>\n-<div class=\"ttc\" id=\"aa01113_html_abb05067bd51857d06a3f8e48c173d2f0\"><div class=\"ttname\"><a href=\"a01113.html#abb05067bd51857d06a3f8e48c173d2f0\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::GetEdgeFaces</a></div><div class=\"ttdeci\">ConstIndexArray GetEdgeFaces(Index e) const</div><div class=\"ttdoc\">Access the faces incident a given edge.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l00102\">topologyLevel.h:102</a></div></div>\n-<div class=\"ttc\" id=\"aa01113_html_abdcd74fa1bc533f080edf439beddc791\"><div class=\"ttname\"><a href=\"a01113.html#abdcd74fa1bc533f080edf439beddc791\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::GetFaceFVarValues</a></div><div class=\"ttdeci\">ConstIndexArray GetFaceFVarValues(Index f, int channel=0) const</div><div class=\"ttdoc\">Access the face-varying values associated with a particular face.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l00237\">topologyLevel.h:237</a></div></div>\n-<div class=\"ttc\" id=\"aa01113_html_ac31cc6267342297f46af11ea4d90734d\"><div class=\"ttname\"><a href=\"a01113.html#ac31cc6267342297f46af11ea4d90734d\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::GetEdgeVertices</a></div><div class=\"ttdeci\">ConstIndexArray GetEdgeVertices(Index e) const</div><div class=\"ttdoc\">Access the vertices incident a given edge.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l00099\">topologyLevel.h:99</a></div></div>\n-<div class=\"ttc\" id=\"aa01113_html_ac5840056570743d410a552b8d1d90f4d\"><div class=\"ttname\"><a href=\"a01113.html#ac5840056570743d410a552b8d1d90f4d\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::IsEdgeSemiSharp</a></div><div class=\"ttdeci\">bool IsEdgeSemiSharp(Index e) const</div><div class=\"ttdoc\">Return if the edge is semi-sharp.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l00185\">topologyLevel.h:185</a></div></div>\n-<div class=\"ttc\" id=\"aa01113_html_ac5cb1977407971568a00663f6badb998\"><div class=\"ttname\"><a href=\"a01113.html#ac5cb1977407971568a00663f6badb998\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::~TopologyLevel</a></div><div class=\"ttdeci\">~TopologyLevel()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l00301\">topologyLevel.h:301</a></div></div>\n-<div class=\"ttc\" id=\"aa01113_html_ad44fcb4ce1945cc40f6772ccdc57c216\"><div class=\"ttname\"><a href=\"a01113.html#ad44fcb4ce1945cc40f6772ccdc57c216\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::GetVertexSharpness</a></div><div class=\"ttdeci\">float GetVertexSharpness(Index v) const</div><div class=\"ttdoc\">Return the sharpness assigned a given vertex.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l00176\">topologyLevel.h:176</a></div></div>\n-<div class=\"ttc\" id=\"aa01113_html_ad93895054c5fe26a9d6693b3148dfe37\"><div class=\"ttname\"><a href=\"a01113.html#ad93895054c5fe26a9d6693b3148dfe37\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::GetEdgeChildVertex</a></div><div class=\"ttdeci\">Index GetEdgeChildVertex(Index e) const</div><div class=\"ttdoc\">Return the child vertex (in the next level) of a given edge.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l00274\">topologyLevel.h:274</a></div></div>\n-<div class=\"ttc\" id=\"aa01113_html_adba75894e1f7679a01b8341b9ac00893\"><div class=\"ttname\"><a href=\"a01113.html#adba75894e1f7679a01b8341b9ac00893\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::IsVertexSemiSharp</a></div><div class=\"ttdeci\">bool IsVertexSemiSharp(Index v) const</div><div class=\"ttdoc\">Return if the vertex is semi-sharp.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l00188\">topologyLevel.h:188</a></div></div>\n-<div class=\"ttc\" id=\"aa01113_html_ae4228cb7954118c55af0a77a99333788\"><div class=\"ttname\"><a href=\"a01113.html#ae4228cb7954118c55af0a77a99333788\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::GetNumFaceVertices</a></div><div class=\"ttdeci\">int GetNumFaceVertices() const</div><div class=\"ttdoc\">Return the total number of face-vertices, i.e. the sum of all vertices for all faces.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l00071\">topologyLevel.h:71</a></div></div>\n-<div class=\"ttc\" id=\"aa01113_html_ae8289e621fd91c4eff0d44903edb34c2\"><div class=\"ttname\"><a href=\"a01113.html#ae8289e621fd91c4eff0d44903edb34c2\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::IsVertexNonManifold</a></div><div class=\"ttdeci\">bool IsVertexNonManifold(Index v) const</div><div class=\"ttdoc\">Return if the vertex is non-manifold.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l00131\">topologyLevel.h:131</a></div></div>\n-<div class=\"ttc\" id=\"aa01113_html_af13c6081737fbf3fa34e690e1d5b81b8\"><div class=\"ttname\"><a href=\"a01113.html#af13c6081737fbf3fa34e690e1d5b81b8\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::IsEdgeBoundary</a></div><div class=\"ttdeci\">bool IsEdgeBoundary(Index e) const</div><div class=\"ttdoc\">Return if the edge is a boundary (only one incident face)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l00134\">topologyLevel.h:134</a></div></div>\n-<div class=\"ttc\" id=\"aa01113_html_af2e9df856672471d6d52245646b99ec1\"><div class=\"ttname\"><a href=\"a01113.html#af2e9df856672471d6d52245646b99ec1\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::IsVertexInfSharp</a></div><div class=\"ttdeci\">bool IsVertexInfSharp(Index v) const</div><div class=\"ttdoc\">Return if the vertex is infinitely-sharp.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l00182\">topologyLevel.h:182</a></div></div>\n-<div class=\"ttc\" id=\"aa01113_html_afa663a1bb972ec104c8b842d9dc967a5\"><div class=\"ttname\"><a href=\"a01113.html#afa663a1bb972ec104c8b842d9dc967a5\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::GetNumFVarValues</a></div><div class=\"ttdeci\">int GetNumFVarValues(int channel=0) const</div><div class=\"ttdoc\">Return the total number of face-varying values in a particular channel (the upper bound of a face-var...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l00234\">topologyLevel.h:234</a></div></div>\n-<div class=\"ttc\" id=\"aa01113_html_afac250ff4bc31d95fd2300202fa0e083\"><div class=\"ttname\"><a href=\"a01113.html#afac250ff4bc31d95fd2300202fa0e083\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::GetVertexFaceLocalIndices</a></div><div class=\"ttdeci\">ConstLocalIndexArray GetVertexFaceLocalIndices(Index v) const</div><div class=\"ttdoc\">Access the local indices of a vertex with respect to its incident faces.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l00111\">topologyLevel.h:111</a></div></div>\n-<div class=\"ttc\" id=\"aa01121_html\"><div class=\"ttname\"><a href=\"a01121.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner</a></div><div class=\"ttdoc\">Stores topology data for a specified set of refinement options.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00051\">topologyRefiner.h:51</a></div></div>\n-<div class=\"ttc\" id=\"aa01333_html_a11fcd51ef86118f65e603c1474377a78\"><div class=\"ttname\"><a href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::Rule</a></div><div class=\"ttdeci\">Rule</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00731_source.html#l00082\">crease.h:82</a></div></div>\n-<div class=\"ttc\" id=\"aa01353_html\"><div class=\"ttname\"><a href=\"a01353.html\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00683_source.html#l00053\">array.h:53</a></div></div>\n+<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\">  167</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00168\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01165.html#af918f56587a2c4b397c8ae4f385a85fd\">  168</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01165.html#af918f56587a2c4b397c8ae4f385a85fd\">EvalStencils</a>(</div>\n+<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\">  169</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\">  170</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\">  172</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\">  173</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n+<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\">  174</span>        <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01165.html\">CpuEvaluator</a> *instance = NULL,</div>\n+<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\">  175</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\">  176</span> </div>\n+<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\">  178</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\">  179</span> </div>\n+<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\">  180</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01165.html#ae8e914fc701af498ea6c6244da408b94\">EvalStencils</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\">  181</span>                            dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\">  182</span>                            duBuffer-&gt;BindCpuBuffer(),  duDesc,</div>\n+<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\">  183</span>                            dvBuffer-&gt;BindCpuBuffer(),  dvDesc,</div>\n+<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\">  184</span>                            &amp;stencilTable-&gt;GetSizes()[0],</div>\n+<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\">  185</span>                            &amp;stencilTable-&gt;GetOffsets()[0],</div>\n+<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\">  186</span>                            &amp;stencilTable-&gt;GetControlIndices()[0],</div>\n+<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\">  187</span>                            &amp;stencilTable-&gt;GetWeights()[0],</div>\n+<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\">  188</span>                            &amp;stencilTable-&gt;GetDuWeights()[0],</div>\n+<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\">  189</span>                            &amp;stencilTable-&gt;GetDvWeights()[0],</div>\n+<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\">  190</span>                            <span class=\"comment\">/*start = */</span> 0,</div>\n+<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\">  191</span>                            <span class=\"comment\">/*end   = */</span> stencilTable-&gt;GetNumStencils());</div>\n+<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\">  192</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\">  193</span> </div>\n+<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01165.html#a6daed6135a40cda2daf6c6ea2047b330\">  234</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01165.html#a6daed6135a40cda2daf6c6ea2047b330\">EvalStencils</a>(</div>\n+<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\">  235</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\">  236</span>        <span class=\"keywordtype\">float</span> *dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\">  237</span>        <span class=\"keywordtype\">float</span> *du,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\">  238</span>        <span class=\"keywordtype\">float</span> *dv,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\">  239</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * sizes,</div>\n+<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\">  240</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * offsets,</div>\n+<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\">  241</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * indices,</div>\n+<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\">  242</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * weights,</div>\n+<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\">  243</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * duWeights,</div>\n+<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\">  244</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * dvWeights,</div>\n+<div class=\"line\"><a id=\"l00245\" name=\"l00245\"></a><span class=\"lineno\">  245</span>        <span class=\"keywordtype\">int</span> start, <span class=\"keywordtype\">int</span> end);</div>\n+<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\">  246</span> </div>\n+<div class=\"line\"><a id=\"l00302\" name=\"l00302\"></a><span class=\"lineno\">  302</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00303\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00303\" name=\"l00303\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01165.html#ac6771a32b0a35687f75374cf86e703d1\">  303</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01165.html#ac6771a32b0a35687f75374cf86e703d1\">EvalStencils</a>(</div>\n+<div class=\"line\"><a id=\"l00304\" name=\"l00304\"></a><span class=\"lineno\">  304</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00305\" name=\"l00305\"></a><span class=\"lineno\">  305</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00306\" name=\"l00306\"></a><span class=\"lineno\">  306</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\">  307</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00308\" name=\"l00308\"></a><span class=\"lineno\">  308</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l00309\" name=\"l00309\"></a><span class=\"lineno\">  309</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l00310\" name=\"l00310\"></a><span class=\"lineno\">  310</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00311\" name=\"l00311\"></a><span class=\"lineno\">  311</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n+<div class=\"line\"><a id=\"l00312\" name=\"l00312\"></a><span class=\"lineno\">  312</span>        <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01165.html\">CpuEvaluator</a> *instance = NULL,</div>\n+<div class=\"line\"><a id=\"l00313\" name=\"l00313\"></a><span class=\"lineno\">  313</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l00314\" name=\"l00314\"></a><span class=\"lineno\">  314</span> </div>\n+<div class=\"line\"><a id=\"l00315\" name=\"l00315\"></a><span class=\"lineno\">  315</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00316\" name=\"l00316\"></a><span class=\"lineno\">  316</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00317\" name=\"l00317\"></a><span class=\"lineno\">  317</span> </div>\n+<div class=\"line\"><a id=\"l00318\" name=\"l00318\"></a><span class=\"lineno\">  318</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01165.html#ae8e914fc701af498ea6c6244da408b94\">EvalStencils</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00319\" name=\"l00319\"></a><span class=\"lineno\">  319</span>                            dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00320\" name=\"l00320\"></a><span class=\"lineno\">  320</span>                            duBuffer-&gt;BindCpuBuffer(),  duDesc,</div>\n+<div class=\"line\"><a id=\"l00321\" name=\"l00321\"></a><span class=\"lineno\">  321</span>                            dvBuffer-&gt;BindCpuBuffer(),  dvDesc,</div>\n+<div class=\"line\"><a id=\"l00322\" name=\"l00322\"></a><span class=\"lineno\">  322</span>                            duuBuffer-&gt;BindCpuBuffer(), duuDesc,</div>\n+<div class=\"line\"><a id=\"l00323\" name=\"l00323\"></a><span class=\"lineno\">  323</span>                            duvBuffer-&gt;BindCpuBuffer(), duvDesc,</div>\n+<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\">  324</span>                            dvvBuffer-&gt;BindCpuBuffer(), dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\">  325</span>                            &amp;stencilTable-&gt;GetSizes()[0],</div>\n+<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\">  326</span>                            &amp;stencilTable-&gt;GetOffsets()[0],</div>\n+<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\">  327</span>                            &amp;stencilTable-&gt;GetControlIndices()[0],</div>\n+<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\">  328</span>                            &amp;stencilTable-&gt;GetWeights()[0],</div>\n+<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\">  329</span>                            &amp;stencilTable-&gt;GetDuWeights()[0],</div>\n+<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\">  330</span>                            &amp;stencilTable-&gt;GetDvWeights()[0],</div>\n+<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\">  331</span>                            &amp;stencilTable-&gt;GetDuuWeights()[0],</div>\n+<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\">  332</span>                            &amp;stencilTable-&gt;GetDuvWeights()[0],</div>\n+<div class=\"line\"><a id=\"l00333\" name=\"l00333\"></a><span class=\"lineno\">  333</span>                            &amp;stencilTable-&gt;GetDvvWeights()[0],</div>\n+<div class=\"line\"><a id=\"l00334\" name=\"l00334\"></a><span class=\"lineno\">  334</span>                            <span class=\"comment\">/*start = */</span> 0,</div>\n+<div class=\"line\"><a id=\"l00335\" name=\"l00335\"></a><span class=\"lineno\">  335</span>                            <span class=\"comment\">/*end   = */</span> stencilTable-&gt;GetNumStencils());</div>\n+<div class=\"line\"><a id=\"l00336\" name=\"l00336\"></a><span class=\"lineno\">  336</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00337\" name=\"l00337\"></a><span class=\"lineno\">  337</span> </div>\n+<div class=\"line\"><a id=\"l00399\" name=\"l00399\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01165.html#a76707de0a89ab94f15ad4b2c398a2c23\">  399</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01165.html#a76707de0a89ab94f15ad4b2c398a2c23\">EvalStencils</a>(</div>\n+<div class=\"line\"><a id=\"l00400\" name=\"l00400\"></a><span class=\"lineno\">  400</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00401\" name=\"l00401\"></a><span class=\"lineno\">  401</span>        <span class=\"keywordtype\">float</span> *dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00402\" name=\"l00402\"></a><span class=\"lineno\">  402</span>        <span class=\"keywordtype\">float</span> *du,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00403\" name=\"l00403\"></a><span class=\"lineno\">  403</span>        <span class=\"keywordtype\">float</span> *dv,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00404\" name=\"l00404\"></a><span class=\"lineno\">  404</span>        <span class=\"keywordtype\">float</span> *duu,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l00405\" name=\"l00405\"></a><span class=\"lineno\">  405</span>        <span class=\"keywordtype\">float</span> *duv,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l00406\" name=\"l00406\"></a><span class=\"lineno\">  406</span>        <span class=\"keywordtype\">float</span> *dvv,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00407\" name=\"l00407\"></a><span class=\"lineno\">  407</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * sizes,</div>\n+<div class=\"line\"><a id=\"l00408\" name=\"l00408\"></a><span class=\"lineno\">  408</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * offsets,</div>\n+<div class=\"line\"><a id=\"l00409\" name=\"l00409\"></a><span class=\"lineno\">  409</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * indices,</div>\n+<div class=\"line\"><a id=\"l00410\" name=\"l00410\"></a><span class=\"lineno\">  410</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * weights,</div>\n+<div class=\"line\"><a id=\"l00411\" name=\"l00411\"></a><span class=\"lineno\">  411</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * duWeights,</div>\n+<div class=\"line\"><a id=\"l00412\" name=\"l00412\"></a><span class=\"lineno\">  412</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * dvWeights,</div>\n+<div class=\"line\"><a id=\"l00413\" name=\"l00413\"></a><span class=\"lineno\">  413</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * duuWeights,</div>\n+<div class=\"line\"><a id=\"l00414\" name=\"l00414\"></a><span class=\"lineno\">  414</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * duvWeights,</div>\n+<div class=\"line\"><a id=\"l00415\" name=\"l00415\"></a><span class=\"lineno\">  415</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * dvvWeights,</div>\n+<div class=\"line\"><a id=\"l00416\" name=\"l00416\"></a><span class=\"lineno\">  416</span>        <span class=\"keywordtype\">int</span> start, <span class=\"keywordtype\">int</span> end);</div>\n+<div class=\"line\"><a id=\"l00417\" name=\"l00417\"></a><span class=\"lineno\">  417</span> </div>\n+<div class=\"line\"><a id=\"l00423\" name=\"l00423\"></a><span class=\"lineno\">  423</span> </div>\n+<div class=\"line\"><a id=\"l00452\" name=\"l00452\"></a><span class=\"lineno\">  452</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l00453\" name=\"l00453\"></a><span class=\"lineno\">  453</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00454\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00454\" name=\"l00454\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01165.html#a833e2ee19e5dd9018607512aa8d32dbe\">  454</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01165.html#a833e2ee19e5dd9018607512aa8d32dbe\">EvalPatches</a>(</div>\n+<div class=\"line\"><a id=\"l00455\" name=\"l00455\"></a><span class=\"lineno\">  455</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00456\" name=\"l00456\"></a><span class=\"lineno\">  456</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00457\" name=\"l00457\"></a><span class=\"lineno\">  457</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00458\" name=\"l00458\"></a><span class=\"lineno\">  458</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l00459\" name=\"l00459\"></a><span class=\"lineno\">  459</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l00460\" name=\"l00460\"></a><span class=\"lineno\">  460</span>        <a class=\"code hl_class\" href=\"a01165.html\">CpuEvaluator</a> <span class=\"keyword\">const</span> *instance = NULL,</div>\n+<div class=\"line\"><a id=\"l00461\" name=\"l00461\"></a><span class=\"lineno\">  461</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l00462\" name=\"l00462\"></a><span class=\"lineno\">  462</span> </div>\n+<div class=\"line\"><a id=\"l00463\" name=\"l00463\"></a><span class=\"lineno\">  463</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00464\" name=\"l00464\"></a><span class=\"lineno\">  464</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00465\" name=\"l00465\"></a><span class=\"lineno\">  465</span> </div>\n+<div class=\"line\"><a id=\"l00466\" name=\"l00466\"></a><span class=\"lineno\">  466</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01165.html#a833e2ee19e5dd9018607512aa8d32dbe\">EvalPatches</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00467\" name=\"l00467\"></a><span class=\"lineno\">  467</span>                           dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00468\" name=\"l00468\"></a><span class=\"lineno\">  468</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00469\" name=\"l00469\"></a><span class=\"lineno\">  469</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a>*)patchCoords-&gt;BindCpuBuffer(),</div>\n+<div class=\"line\"><a id=\"l00470\" name=\"l00470\"></a><span class=\"lineno\">  470</span>                           patchTable-&gt;GetPatchArrayBuffer(),</div>\n+<div class=\"line\"><a id=\"l00471\" name=\"l00471\"></a><span class=\"lineno\">  471</span>                           patchTable-&gt;GetPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l00472\" name=\"l00472\"></a><span class=\"lineno\">  472</span>                           patchTable-&gt;GetPatchParamBuffer());</div>\n+<div class=\"line\"><a id=\"l00473\" name=\"l00473\"></a><span class=\"lineno\">  473</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00474\" name=\"l00474\"></a><span class=\"lineno\">  474</span> </div>\n+<div class=\"line\"><a id=\"l00515\" name=\"l00515\"></a><span class=\"lineno\">  515</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l00516\" name=\"l00516\"></a><span class=\"lineno\">  516</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00517\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00517\" name=\"l00517\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01165.html#aadc6952ecef0e1cddda06e3c9d0a252a\">  517</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01165.html#aadc6952ecef0e1cddda06e3c9d0a252a\">EvalPatches</a>(</div>\n+<div class=\"line\"><a id=\"l00518\" name=\"l00518\"></a><span class=\"lineno\">  518</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00519\" name=\"l00519\"></a><span class=\"lineno\">  519</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00520\" name=\"l00520\"></a><span class=\"lineno\">  520</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00521\" name=\"l00521\"></a><span class=\"lineno\">  521</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00522\" name=\"l00522\"></a><span class=\"lineno\">  522</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00523\" name=\"l00523\"></a><span class=\"lineno\">  523</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l00524\" name=\"l00524\"></a><span class=\"lineno\">  524</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l00525\" name=\"l00525\"></a><span class=\"lineno\">  525</span>        <a class=\"code hl_class\" href=\"a01165.html\">CpuEvaluator</a> <span class=\"keyword\">const</span> *instance = NULL,</div>\n+<div class=\"line\"><a id=\"l00526\" name=\"l00526\"></a><span class=\"lineno\">  526</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l00527\" name=\"l00527\"></a><span class=\"lineno\">  527</span> </div>\n+<div class=\"line\"><a id=\"l00528\" name=\"l00528\"></a><span class=\"lineno\">  528</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00529\" name=\"l00529\"></a><span class=\"lineno\">  529</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00530\" name=\"l00530\"></a><span class=\"lineno\">  530</span> </div>\n+<div class=\"line\"><a id=\"l00531\" name=\"l00531\"></a><span class=\"lineno\">  531</span>        <span class=\"comment\">// XXX: PatchCoords is somewhat abusing vertex primvar buffer interop.</span></div>\n+<div class=\"line\"><a id=\"l00532\" name=\"l00532\"></a><span class=\"lineno\">  532</span>        <span class=\"comment\">//      ideally all buffer classes should have templated by datatype</span></div>\n+<div class=\"line\"><a id=\"l00533\" name=\"l00533\"></a><span class=\"lineno\">  533</span>        <span class=\"comment\">//      so that downcast isn&#39;t needed there.</span></div>\n+<div class=\"line\"><a id=\"l00534\" name=\"l00534\"></a><span class=\"lineno\">  534</span>        <span class=\"comment\">//      (e.g. Osd::CpuBuffer&lt;PatchCoord&gt; )</span></div>\n+<div class=\"line\"><a id=\"l00535\" name=\"l00535\"></a><span class=\"lineno\">  535</span>        <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00536\" name=\"l00536\"></a><span class=\"lineno\">  536</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01165.html#a833e2ee19e5dd9018607512aa8d32dbe\">EvalPatches</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00537\" name=\"l00537\"></a><span class=\"lineno\">  537</span>                           dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00538\" name=\"l00538\"></a><span class=\"lineno\">  538</span>                           duBuffer-&gt;BindCpuBuffer(),  duDesc,</div>\n+<div class=\"line\"><a id=\"l00539\" name=\"l00539\"></a><span class=\"lineno\">  539</span>                           dvBuffer-&gt;BindCpuBuffer(),  dvDesc,</div>\n+<div class=\"line\"><a id=\"l00540\" name=\"l00540\"></a><span class=\"lineno\">  540</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00541\" name=\"l00541\"></a><span class=\"lineno\">  541</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a>*)patchCoords-&gt;BindCpuBuffer(),</div>\n+<div class=\"line\"><a id=\"l00542\" name=\"l00542\"></a><span class=\"lineno\">  542</span>                           patchTable-&gt;GetPatchArrayBuffer(),</div>\n+<div class=\"line\"><a id=\"l00543\" name=\"l00543\"></a><span class=\"lineno\">  543</span>                           patchTable-&gt;GetPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l00544\" name=\"l00544\"></a><span class=\"lineno\">  544</span>                           patchTable-&gt;GetPatchParamBuffer());</div>\n+<div class=\"line\"><a id=\"l00545\" name=\"l00545\"></a><span class=\"lineno\">  545</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00546\" name=\"l00546\"></a><span class=\"lineno\">  546</span> </div>\n+<div class=\"line\"><a id=\"l00605\" name=\"l00605\"></a><span class=\"lineno\">  605</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l00606\" name=\"l00606\"></a><span class=\"lineno\">  606</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00607\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00607\" name=\"l00607\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01165.html#af01fdeb5b9c59c641e71bf453a6bd5d0\">  607</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01165.html#af01fdeb5b9c59c641e71bf453a6bd5d0\">EvalPatches</a>(</div>\n+<div class=\"line\"><a id=\"l00608\" name=\"l00608\"></a><span class=\"lineno\">  608</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00609\" name=\"l00609\"></a><span class=\"lineno\">  609</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00610\" name=\"l00610\"></a><span class=\"lineno\">  610</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00611\" name=\"l00611\"></a><span class=\"lineno\">  611</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00612\" name=\"l00612\"></a><span class=\"lineno\">  612</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l00613\" name=\"l00613\"></a><span class=\"lineno\">  613</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l00614\" name=\"l00614\"></a><span class=\"lineno\">  614</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00615\" name=\"l00615\"></a><span class=\"lineno\">  615</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00616\" name=\"l00616\"></a><span class=\"lineno\">  616</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l00617\" name=\"l00617\"></a><span class=\"lineno\">  617</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l00618\" name=\"l00618\"></a><span class=\"lineno\">  618</span>        <a class=\"code hl_class\" href=\"a01165.html\">CpuEvaluator</a> <span class=\"keyword\">const</span> *instance = NULL,</div>\n+<div class=\"line\"><a id=\"l00619\" name=\"l00619\"></a><span class=\"lineno\">  619</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l00620\" name=\"l00620\"></a><span class=\"lineno\">  620</span> </div>\n+<div class=\"line\"><a id=\"l00621\" name=\"l00621\"></a><span class=\"lineno\">  621</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00622\" name=\"l00622\"></a><span class=\"lineno\">  622</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00623\" name=\"l00623\"></a><span class=\"lineno\">  623</span> </div>\n+<div class=\"line\"><a id=\"l00624\" name=\"l00624\"></a><span class=\"lineno\">  624</span>        <span class=\"comment\">// XXX: PatchCoords is somewhat abusing vertex primvar buffer interop.</span></div>\n+<div class=\"line\"><a id=\"l00625\" name=\"l00625\"></a><span class=\"lineno\">  625</span>        <span class=\"comment\">//      ideally all buffer classes should have templated by datatype</span></div>\n+<div class=\"line\"><a id=\"l00626\" name=\"l00626\"></a><span class=\"lineno\">  626</span>        <span class=\"comment\">//      so that downcast isn&#39;t needed there.</span></div>\n+<div class=\"line\"><a id=\"l00627\" name=\"l00627\"></a><span class=\"lineno\">  627</span>        <span class=\"comment\">//      (e.g. Osd::CpuBuffer&lt;PatchCoord&gt; )</span></div>\n+<div class=\"line\"><a id=\"l00628\" name=\"l00628\"></a><span class=\"lineno\">  628</span>        <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00629\" name=\"l00629\"></a><span class=\"lineno\">  629</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01165.html#a833e2ee19e5dd9018607512aa8d32dbe\">EvalPatches</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00630\" name=\"l00630\"></a><span class=\"lineno\">  630</span>                           dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00631\" name=\"l00631\"></a><span class=\"lineno\">  631</span>                           duBuffer-&gt;BindCpuBuffer(),  duDesc,</div>\n+<div class=\"line\"><a id=\"l00632\" name=\"l00632\"></a><span class=\"lineno\">  632</span>                           dvBuffer-&gt;BindCpuBuffer(),  dvDesc,</div>\n+<div class=\"line\"><a id=\"l00633\" name=\"l00633\"></a><span class=\"lineno\">  633</span>                           duuBuffer-&gt;BindCpuBuffer(), duuDesc,</div>\n+<div class=\"line\"><a id=\"l00634\" name=\"l00634\"></a><span class=\"lineno\">  634</span>                           duvBuffer-&gt;BindCpuBuffer(), duvDesc,</div>\n+<div class=\"line\"><a id=\"l00635\" name=\"l00635\"></a><span class=\"lineno\">  635</span>                           dvvBuffer-&gt;BindCpuBuffer(), dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00636\" name=\"l00636\"></a><span class=\"lineno\">  636</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00637\" name=\"l00637\"></a><span class=\"lineno\">  637</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a>*)patchCoords-&gt;BindCpuBuffer(),</div>\n+<div class=\"line\"><a id=\"l00638\" name=\"l00638\"></a><span class=\"lineno\">  638</span>                           patchTable-&gt;GetPatchArrayBuffer(),</div>\n+<div class=\"line\"><a id=\"l00639\" name=\"l00639\"></a><span class=\"lineno\">  639</span>                           patchTable-&gt;GetPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l00640\" name=\"l00640\"></a><span class=\"lineno\">  640</span>                           patchTable-&gt;GetPatchParamBuffer());</div>\n+<div class=\"line\"><a id=\"l00641\" name=\"l00641\"></a><span class=\"lineno\">  641</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00642\" name=\"l00642\"></a><span class=\"lineno\">  642</span> </div>\n+<div class=\"line\"><a id=\"l00670\" name=\"l00670\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01165.html#ad5b907c22dfcb943e5f25f3c16543535\">  670</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01165.html#ad5b907c22dfcb943e5f25f3c16543535\">EvalPatches</a>(</div>\n+<div class=\"line\"><a id=\"l00671\" name=\"l00671\"></a><span class=\"lineno\">  671</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00672\" name=\"l00672\"></a><span class=\"lineno\">  672</span>        <span class=\"keywordtype\">float</span> *dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00673\" name=\"l00673\"></a><span class=\"lineno\">  673</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00674\" name=\"l00674\"></a><span class=\"lineno\">  674</span>        <span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a> *patchCoords,</div>\n+<div class=\"line\"><a id=\"l00675\" name=\"l00675\"></a><span class=\"lineno\">  675</span>        <span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01325.html\">PatchArray</a> *patchArrays,</div>\n+<div class=\"line\"><a id=\"l00676\" name=\"l00676\"></a><span class=\"lineno\">  676</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> *patchIndexBuffer,</div>\n+<div class=\"line\"><a id=\"l00677\" name=\"l00677\"></a><span class=\"lineno\">  677</span>        <span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01329.html\">PatchParam</a> *patchParamBuffer);</div>\n+<div class=\"line\"><a id=\"l00678\" name=\"l00678\"></a><span class=\"lineno\">  678</span> </div>\n+<div class=\"line\"><a id=\"l00716\" name=\"l00716\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01165.html#ac1dba254bc287312f8f812113c8e8ad3\">  716</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01165.html#ac1dba254bc287312f8f812113c8e8ad3\">EvalPatches</a>(</div>\n+<div class=\"line\"><a id=\"l00717\" name=\"l00717\"></a><span class=\"lineno\">  717</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00718\" name=\"l00718\"></a><span class=\"lineno\">  718</span>        <span class=\"keywordtype\">float</span> *dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00719\" name=\"l00719\"></a><span class=\"lineno\">  719</span>        <span class=\"keywordtype\">float</span> *du,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00720\" name=\"l00720\"></a><span class=\"lineno\">  720</span>        <span class=\"keywordtype\">float</span> *dv,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00721\" name=\"l00721\"></a><span class=\"lineno\">  721</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00722\" name=\"l00722\"></a><span class=\"lineno\">  722</span>        <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a> <span class=\"keyword\">const</span> *patchCoords,</div>\n+<div class=\"line\"><a id=\"l00723\" name=\"l00723\"></a><span class=\"lineno\">  723</span>        <a class=\"code hl_struct\" href=\"a01325.html\">PatchArray</a> <span class=\"keyword\">const</span> *patchArrays,</div>\n+<div class=\"line\"><a id=\"l00724\" name=\"l00724\"></a><span class=\"lineno\">  724</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> *patchIndexBuffer,</div>\n+<div class=\"line\"><a id=\"l00725\" name=\"l00725\"></a><span class=\"lineno\">  725</span>        <a class=\"code hl_struct\" href=\"a01329.html\">PatchParam</a> <span class=\"keyword\">const</span> *patchParamBuffer);</div>\n+<div class=\"line\"><a id=\"l00726\" name=\"l00726\"></a><span class=\"lineno\">  726</span> </div>\n+<div class=\"line\"><a id=\"l00779\" name=\"l00779\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01165.html#a7b556148d6ef2e04fbe99677e3a87e91\">  779</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01165.html#a7b556148d6ef2e04fbe99677e3a87e91\">EvalPatches</a>(</div>\n+<div class=\"line\"><a id=\"l00780\" name=\"l00780\"></a><span class=\"lineno\">  780</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00781\" name=\"l00781\"></a><span class=\"lineno\">  781</span>        <span class=\"keywordtype\">float</span> *dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00782\" name=\"l00782\"></a><span class=\"lineno\">  782</span>        <span class=\"keywordtype\">float</span> *du,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00783\" name=\"l00783\"></a><span class=\"lineno\">  783</span>        <span class=\"keywordtype\">float</span> *dv,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00784\" name=\"l00784\"></a><span class=\"lineno\">  784</span>        <span class=\"keywordtype\">float</span> *duu,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l00785\" name=\"l00785\"></a><span class=\"lineno\">  785</span>        <span class=\"keywordtype\">float</span> *duv,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l00786\" name=\"l00786\"></a><span class=\"lineno\">  786</span>        <span class=\"keywordtype\">float</span> *dvv,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00787\" name=\"l00787\"></a><span class=\"lineno\">  787</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00788\" name=\"l00788\"></a><span class=\"lineno\">  788</span>        <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a> <span class=\"keyword\">const</span> *patchCoords,</div>\n+<div class=\"line\"><a id=\"l00789\" name=\"l00789\"></a><span class=\"lineno\">  789</span>        <a class=\"code hl_struct\" href=\"a01325.html\">PatchArray</a> <span class=\"keyword\">const</span> *patchArrays,</div>\n+<div class=\"line\"><a id=\"l00790\" name=\"l00790\"></a><span class=\"lineno\">  790</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> *patchIndexBuffer,</div>\n+<div class=\"line\"><a id=\"l00791\" name=\"l00791\"></a><span class=\"lineno\">  791</span>        <a class=\"code hl_struct\" href=\"a01329.html\">PatchParam</a> <span class=\"keyword\">const</span> *patchParamBuffer);</div>\n+<div class=\"line\"><a id=\"l00792\" name=\"l00792\"></a><span class=\"lineno\">  792</span> </div>\n+<div class=\"line\"><a id=\"l00821\" name=\"l00821\"></a><span class=\"lineno\">  821</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l00822\" name=\"l00822\"></a><span class=\"lineno\">  822</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00823\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00823\" name=\"l00823\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01165.html#adb3a32fbae8a1437b6368dc1e298f58f\">  823</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01165.html#adb3a32fbae8a1437b6368dc1e298f58f\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l00824\" name=\"l00824\"></a><span class=\"lineno\">  824</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00825\" name=\"l00825\"></a><span class=\"lineno\">  825</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00826\" name=\"l00826\"></a><span class=\"lineno\">  826</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00827\" name=\"l00827\"></a><span class=\"lineno\">  827</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l00828\" name=\"l00828\"></a><span class=\"lineno\">  828</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l00829\" name=\"l00829\"></a><span class=\"lineno\">  829</span>        <a class=\"code hl_class\" href=\"a01165.html\">CpuEvaluator</a> <span class=\"keyword\">const</span> *instance = NULL,</div>\n+<div class=\"line\"><a id=\"l00830\" name=\"l00830\"></a><span class=\"lineno\">  830</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l00831\" name=\"l00831\"></a><span class=\"lineno\">  831</span> </div>\n+<div class=\"line\"><a id=\"l00832\" name=\"l00832\"></a><span class=\"lineno\">  832</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00833\" name=\"l00833\"></a><span class=\"lineno\">  833</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00834\" name=\"l00834\"></a><span class=\"lineno\">  834</span> </div>\n+<div class=\"line\"><a id=\"l00835\" name=\"l00835\"></a><span class=\"lineno\">  835</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01165.html#a833e2ee19e5dd9018607512aa8d32dbe\">EvalPatches</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00836\" name=\"l00836\"></a><span class=\"lineno\">  836</span>                           dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00837\" name=\"l00837\"></a><span class=\"lineno\">  837</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00838\" name=\"l00838\"></a><span class=\"lineno\">  838</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a>*)patchCoords-&gt;BindCpuBuffer(),</div>\n+<div class=\"line\"><a id=\"l00839\" name=\"l00839\"></a><span class=\"lineno\">  839</span>                           patchTable-&gt;GetVaryingPatchArrayBuffer(),</div>\n+<div class=\"line\"><a id=\"l00840\" name=\"l00840\"></a><span class=\"lineno\">  840</span>                           patchTable-&gt;GetVaryingPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l00841\" name=\"l00841\"></a><span class=\"lineno\">  841</span>                           patchTable-&gt;GetPatchParamBuffer());</div>\n+<div class=\"line\"><a id=\"l00842\" name=\"l00842\"></a><span class=\"lineno\">  842</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00843\" name=\"l00843\"></a><span class=\"lineno\">  843</span> </div>\n+<div class=\"line\"><a id=\"l00884\" name=\"l00884\"></a><span class=\"lineno\">  884</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l00885\" name=\"l00885\"></a><span class=\"lineno\">  885</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00886\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00886\" name=\"l00886\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01165.html#ada4f37a111fe2b1bfb12d9c2d458e5b5\">  886</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01165.html#ada4f37a111fe2b1bfb12d9c2d458e5b5\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l00887\" name=\"l00887\"></a><span class=\"lineno\">  887</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00888\" name=\"l00888\"></a><span class=\"lineno\">  888</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00889\" name=\"l00889\"></a><span class=\"lineno\">  889</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00890\" name=\"l00890\"></a><span class=\"lineno\">  890</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00891\" name=\"l00891\"></a><span class=\"lineno\">  891</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00892\" name=\"l00892\"></a><span class=\"lineno\">  892</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l00893\" name=\"l00893\"></a><span class=\"lineno\">  893</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l00894\" name=\"l00894\"></a><span class=\"lineno\">  894</span>        <a class=\"code hl_class\" href=\"a01165.html\">CpuEvaluator</a> <span class=\"keyword\">const</span> *instance = NULL,</div>\n+<div class=\"line\"><a id=\"l00895\" name=\"l00895\"></a><span class=\"lineno\">  895</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l00896\" name=\"l00896\"></a><span class=\"lineno\">  896</span> </div>\n+<div class=\"line\"><a id=\"l00897\" name=\"l00897\"></a><span class=\"lineno\">  897</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00898\" name=\"l00898\"></a><span class=\"lineno\">  898</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00899\" name=\"l00899\"></a><span class=\"lineno\">  899</span> </div>\n+<div class=\"line\"><a id=\"l00900\" name=\"l00900\"></a><span class=\"lineno\">  900</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01165.html#a833e2ee19e5dd9018607512aa8d32dbe\">EvalPatches</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00901\" name=\"l00901\"></a><span class=\"lineno\">  901</span>                           dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00902\" name=\"l00902\"></a><span class=\"lineno\">  902</span>                           duBuffer-&gt;BindCpuBuffer(),  duDesc,</div>\n+<div class=\"line\"><a id=\"l00903\" name=\"l00903\"></a><span class=\"lineno\">  903</span>                           dvBuffer-&gt;BindCpuBuffer(),  dvDesc,</div>\n+<div class=\"line\"><a id=\"l00904\" name=\"l00904\"></a><span class=\"lineno\">  904</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00905\" name=\"l00905\"></a><span class=\"lineno\">  905</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a>*)patchCoords-&gt;BindCpuBuffer(),</div>\n+<div class=\"line\"><a id=\"l00906\" name=\"l00906\"></a><span class=\"lineno\">  906</span>                           patchTable-&gt;GetVaryingPatchArrayBuffer(),</div>\n+<div class=\"line\"><a id=\"l00907\" name=\"l00907\"></a><span class=\"lineno\">  907</span>                           patchTable-&gt;GetVaryingPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l00908\" name=\"l00908\"></a><span class=\"lineno\">  908</span>                           patchTable-&gt;GetPatchParamBuffer());</div>\n+<div class=\"line\"><a id=\"l00909\" name=\"l00909\"></a><span class=\"lineno\">  909</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00910\" name=\"l00910\"></a><span class=\"lineno\">  910</span> </div>\n+<div class=\"line\"><a id=\"l00969\" name=\"l00969\"></a><span class=\"lineno\">  969</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l00970\" name=\"l00970\"></a><span class=\"lineno\">  970</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00971\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00971\" name=\"l00971\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01165.html#a63c07f0657267c51a42e68bbf2674d2c\">  971</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01165.html#a63c07f0657267c51a42e68bbf2674d2c\">EvalPatchesVarying</a>(</div>\n+<div class=\"line\"><a id=\"l00972\" name=\"l00972\"></a><span class=\"lineno\">  972</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l00973\" name=\"l00973\"></a><span class=\"lineno\">  973</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l00974\" name=\"l00974\"></a><span class=\"lineno\">  974</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l00975\" name=\"l00975\"></a><span class=\"lineno\">  975</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l00976\" name=\"l00976\"></a><span class=\"lineno\">  976</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l00977\" name=\"l00977\"></a><span class=\"lineno\">  977</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l00978\" name=\"l00978\"></a><span class=\"lineno\">  978</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00979\" name=\"l00979\"></a><span class=\"lineno\">  979</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00980\" name=\"l00980\"></a><span class=\"lineno\">  980</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l00981\" name=\"l00981\"></a><span class=\"lineno\">  981</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l00982\" name=\"l00982\"></a><span class=\"lineno\">  982</span>        <a class=\"code hl_class\" href=\"a01165.html\">CpuEvaluator</a> <span class=\"keyword\">const</span> *instance = NULL,</div>\n+<div class=\"line\"><a id=\"l00983\" name=\"l00983\"></a><span class=\"lineno\">  983</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l00984\" name=\"l00984\"></a><span class=\"lineno\">  984</span> </div>\n+<div class=\"line\"><a id=\"l00985\" name=\"l00985\"></a><span class=\"lineno\">  985</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00986\" name=\"l00986\"></a><span class=\"lineno\">  986</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l00987\" name=\"l00987\"></a><span class=\"lineno\">  987</span> </div>\n+<div class=\"line\"><a id=\"l00988\" name=\"l00988\"></a><span class=\"lineno\">  988</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01165.html#a833e2ee19e5dd9018607512aa8d32dbe\">EvalPatches</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l00989\" name=\"l00989\"></a><span class=\"lineno\">  989</span>                           dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l00990\" name=\"l00990\"></a><span class=\"lineno\">  990</span>                           duBuffer-&gt;BindCpuBuffer(),  duDesc,</div>\n+<div class=\"line\"><a id=\"l00991\" name=\"l00991\"></a><span class=\"lineno\">  991</span>                           dvBuffer-&gt;BindCpuBuffer(),  dvDesc,</div>\n+<div class=\"line\"><a id=\"l00992\" name=\"l00992\"></a><span class=\"lineno\">  992</span>                           duuBuffer-&gt;BindCpuBuffer(), duuDesc,</div>\n+<div class=\"line\"><a id=\"l00993\" name=\"l00993\"></a><span class=\"lineno\">  993</span>                           duvBuffer-&gt;BindCpuBuffer(), duvDesc,</div>\n+<div class=\"line\"><a id=\"l00994\" name=\"l00994\"></a><span class=\"lineno\">  994</span>                           dvvBuffer-&gt;BindCpuBuffer(), dvvDesc,</div>\n+<div class=\"line\"><a id=\"l00995\" name=\"l00995\"></a><span class=\"lineno\">  995</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l00996\" name=\"l00996\"></a><span class=\"lineno\">  996</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a>*)patchCoords-&gt;BindCpuBuffer(),</div>\n+<div class=\"line\"><a id=\"l00997\" name=\"l00997\"></a><span class=\"lineno\">  997</span>                           patchTable-&gt;GetVaryingPatchArrayBuffer(),</div>\n+<div class=\"line\"><a id=\"l00998\" name=\"l00998\"></a><span class=\"lineno\">  998</span>                           patchTable-&gt;GetVaryingPatchIndexBuffer(),</div>\n+<div class=\"line\"><a id=\"l00999\" name=\"l00999\"></a><span class=\"lineno\">  999</span>                           patchTable-&gt;GetPatchParamBuffer());</div>\n+<div class=\"line\"><a id=\"l01000\" name=\"l01000\"></a><span class=\"lineno\"> 1000</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01001\" name=\"l01001\"></a><span class=\"lineno\"> 1001</span> </div>\n+<div class=\"line\"><a id=\"l01032\" name=\"l01032\"></a><span class=\"lineno\"> 1032</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01033\" name=\"l01033\"></a><span class=\"lineno\"> 1033</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01034\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01034\" name=\"l01034\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01165.html#a0cf0cb080682d71200633ef242b83615\"> 1034</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01165.html#a0cf0cb080682d71200633ef242b83615\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01035\" name=\"l01035\"></a><span class=\"lineno\"> 1035</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01036\" name=\"l01036\"></a><span class=\"lineno\"> 1036</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01037\" name=\"l01037\"></a><span class=\"lineno\"> 1037</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01038\" name=\"l01038\"></a><span class=\"lineno\"> 1038</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01039\" name=\"l01039\"></a><span class=\"lineno\"> 1039</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l01040\" name=\"l01040\"></a><span class=\"lineno\"> 1040</span>        <span class=\"keywordtype\">int</span> fvarChannel,</div>\n+<div class=\"line\"><a id=\"l01041\" name=\"l01041\"></a><span class=\"lineno\"> 1041</span>        <a class=\"code hl_class\" href=\"a01165.html\">CpuEvaluator</a> <span class=\"keyword\">const</span> *instance = NULL,</div>\n+<div class=\"line\"><a id=\"l01042\" name=\"l01042\"></a><span class=\"lineno\"> 1042</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l01043\" name=\"l01043\"></a><span class=\"lineno\"> 1043</span> </div>\n+<div class=\"line\"><a id=\"l01044\" name=\"l01044\"></a><span class=\"lineno\"> 1044</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l01045\" name=\"l01045\"></a><span class=\"lineno\"> 1045</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l01046\" name=\"l01046\"></a><span class=\"lineno\"> 1046</span> </div>\n+<div class=\"line\"><a id=\"l01047\" name=\"l01047\"></a><span class=\"lineno\"> 1047</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01165.html#a833e2ee19e5dd9018607512aa8d32dbe\">EvalPatches</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01048\" name=\"l01048\"></a><span class=\"lineno\"> 1048</span>                           dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01049\" name=\"l01049\"></a><span class=\"lineno\"> 1049</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01050\" name=\"l01050\"></a><span class=\"lineno\"> 1050</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a>*)patchCoords-&gt;BindCpuBuffer(),</div>\n+<div class=\"line\"><a id=\"l01051\" name=\"l01051\"></a><span class=\"lineno\"> 1051</span>                           patchTable-&gt;GetFVarPatchArrayBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01052\" name=\"l01052\"></a><span class=\"lineno\"> 1052</span>                           patchTable-&gt;GetFVarPatchIndexBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01053\" name=\"l01053\"></a><span class=\"lineno\"> 1053</span>                           patchTable-&gt;GetFVarPatchParamBuffer(fvarChannel));</div>\n+<div class=\"line\"><a id=\"l01054\" name=\"l01054\"></a><span class=\"lineno\"> 1054</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01055\" name=\"l01055\"></a><span class=\"lineno\"> 1055</span> </div>\n+<div class=\"line\"><a id=\"l01098\" name=\"l01098\"></a><span class=\"lineno\"> 1098</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01099\" name=\"l01099\"></a><span class=\"lineno\"> 1099</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01100\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01100\" name=\"l01100\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01165.html#a2fbe9aec649e88f531714099d49c6db1\"> 1100</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01165.html#a2fbe9aec649e88f531714099d49c6db1\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01101\" name=\"l01101\"></a><span class=\"lineno\"> 1101</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01102\" name=\"l01102\"></a><span class=\"lineno\"> 1102</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01103\" name=\"l01103\"></a><span class=\"lineno\"> 1103</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l01104\" name=\"l01104\"></a><span class=\"lineno\"> 1104</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l01105\" name=\"l01105\"></a><span class=\"lineno\"> 1105</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01106\" name=\"l01106\"></a><span class=\"lineno\"> 1106</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01107\" name=\"l01107\"></a><span class=\"lineno\"> 1107</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l01108\" name=\"l01108\"></a><span class=\"lineno\"> 1108</span>        <span class=\"keywordtype\">int</span> fvarChannel,</div>\n+<div class=\"line\"><a id=\"l01109\" name=\"l01109\"></a><span class=\"lineno\"> 1109</span>        <a class=\"code hl_class\" href=\"a01165.html\">CpuEvaluator</a> <span class=\"keyword\">const</span> *instance = NULL,</div>\n+<div class=\"line\"><a id=\"l01110\" name=\"l01110\"></a><span class=\"lineno\"> 1110</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l01111\" name=\"l01111\"></a><span class=\"lineno\"> 1111</span> </div>\n+<div class=\"line\"><a id=\"l01112\" name=\"l01112\"></a><span class=\"lineno\"> 1112</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l01113\" name=\"l01113\"></a><span class=\"lineno\"> 1113</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l01114\" name=\"l01114\"></a><span class=\"lineno\"> 1114</span> </div>\n+<div class=\"line\"><a id=\"l01115\" name=\"l01115\"></a><span class=\"lineno\"> 1115</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01165.html#a833e2ee19e5dd9018607512aa8d32dbe\">EvalPatches</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01116\" name=\"l01116\"></a><span class=\"lineno\"> 1116</span>                           dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01117\" name=\"l01117\"></a><span class=\"lineno\"> 1117</span>                           duBuffer-&gt;BindCpuBuffer(),  duDesc,</div>\n+<div class=\"line\"><a id=\"l01118\" name=\"l01118\"></a><span class=\"lineno\"> 1118</span>                           dvBuffer-&gt;BindCpuBuffer(),  dvDesc,</div>\n+<div class=\"line\"><a id=\"l01119\" name=\"l01119\"></a><span class=\"lineno\"> 1119</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01120\" name=\"l01120\"></a><span class=\"lineno\"> 1120</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a>*)patchCoords-&gt;BindCpuBuffer(),</div>\n+<div class=\"line\"><a id=\"l01121\" name=\"l01121\"></a><span class=\"lineno\"> 1121</span>                           patchTable-&gt;GetFVarPatchArrayBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01122\" name=\"l01122\"></a><span class=\"lineno\"> 1122</span>                           patchTable-&gt;GetFVarPatchIndexBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01123\" name=\"l01123\"></a><span class=\"lineno\"> 1123</span>                           patchTable-&gt;GetFVarPatchParamBuffer(fvarChannel));</div>\n+<div class=\"line\"><a id=\"l01124\" name=\"l01124\"></a><span class=\"lineno\"> 1124</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01125\" name=\"l01125\"></a><span class=\"lineno\"> 1125</span> </div>\n+<div class=\"line\"><a id=\"l01186\" name=\"l01186\"></a><span class=\"lineno\"> 1186</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n+<div class=\"line\"><a id=\"l01187\" name=\"l01187\"></a><span class=\"lineno\"> 1187</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen01188\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01188\" name=\"l01188\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01165.html#a46c223689a9dfec7040c8ee9783a6c52\"> 1188</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01165.html#a46c223689a9dfec7040c8ee9783a6c52\">EvalPatchesFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l01189\" name=\"l01189\"></a><span class=\"lineno\"> 1189</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n+<div class=\"line\"><a id=\"l01190\" name=\"l01190\"></a><span class=\"lineno\"> 1190</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n+<div class=\"line\"><a id=\"l01191\" name=\"l01191\"></a><span class=\"lineno\"> 1191</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n+<div class=\"line\"><a id=\"l01192\" name=\"l01192\"></a><span class=\"lineno\"> 1192</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n+<div class=\"line\"><a id=\"l01193\" name=\"l01193\"></a><span class=\"lineno\"> 1193</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n+<div class=\"line\"><a id=\"l01194\" name=\"l01194\"></a><span class=\"lineno\"> 1194</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n+<div class=\"line\"><a id=\"l01195\" name=\"l01195\"></a><span class=\"lineno\"> 1195</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n+<div class=\"line\"><a id=\"l01196\" name=\"l01196\"></a><span class=\"lineno\"> 1196</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01197\" name=\"l01197\"></a><span class=\"lineno\"> 1197</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n+<div class=\"line\"><a id=\"l01198\" name=\"l01198\"></a><span class=\"lineno\"> 1198</span>        PATCH_TABLE *patchTable,</div>\n+<div class=\"line\"><a id=\"l01199\" name=\"l01199\"></a><span class=\"lineno\"> 1199</span>        <span class=\"keywordtype\">int</span> fvarChannel,</div>\n+<div class=\"line\"><a id=\"l01200\" name=\"l01200\"></a><span class=\"lineno\"> 1200</span>        <a class=\"code hl_class\" href=\"a01165.html\">CpuEvaluator</a> <span class=\"keyword\">const</span> *instance = NULL,</div>\n+<div class=\"line\"><a id=\"l01201\" name=\"l01201\"></a><span class=\"lineno\"> 1201</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l01202\" name=\"l01202\"></a><span class=\"lineno\"> 1202</span> </div>\n+<div class=\"line\"><a id=\"l01203\" name=\"l01203\"></a><span class=\"lineno\"> 1203</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l01204\" name=\"l01204\"></a><span class=\"lineno\"> 1204</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n+<div class=\"line\"><a id=\"l01205\" name=\"l01205\"></a><span class=\"lineno\"> 1205</span> </div>\n+<div class=\"line\"><a id=\"l01206\" name=\"l01206\"></a><span class=\"lineno\"> 1206</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01165.html#a833e2ee19e5dd9018607512aa8d32dbe\">EvalPatches</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n+<div class=\"line\"><a id=\"l01207\" name=\"l01207\"></a><span class=\"lineno\"> 1207</span>                           dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n+<div class=\"line\"><a id=\"l01208\" name=\"l01208\"></a><span class=\"lineno\"> 1208</span>                           duBuffer-&gt;BindCpuBuffer(),  duDesc,</div>\n+<div class=\"line\"><a id=\"l01209\" name=\"l01209\"></a><span class=\"lineno\"> 1209</span>                           dvBuffer-&gt;BindCpuBuffer(),  dvDesc,</div>\n+<div class=\"line\"><a id=\"l01210\" name=\"l01210\"></a><span class=\"lineno\"> 1210</span>                           duuBuffer-&gt;BindCpuBuffer(), duuDesc,</div>\n+<div class=\"line\"><a id=\"l01211\" name=\"l01211\"></a><span class=\"lineno\"> 1211</span>                           duvBuffer-&gt;BindCpuBuffer(), duvDesc,</div>\n+<div class=\"line\"><a id=\"l01212\" name=\"l01212\"></a><span class=\"lineno\"> 1212</span>                           dvvBuffer-&gt;BindCpuBuffer(), dvvDesc,</div>\n+<div class=\"line\"><a id=\"l01213\" name=\"l01213\"></a><span class=\"lineno\"> 1213</span>                           numPatchCoords,</div>\n+<div class=\"line\"><a id=\"l01214\" name=\"l01214\"></a><span class=\"lineno\"> 1214</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a>*)patchCoords-&gt;BindCpuBuffer(),</div>\n+<div class=\"line\"><a id=\"l01215\" name=\"l01215\"></a><span class=\"lineno\"> 1215</span>                           patchTable-&gt;GetFVarPatchArrayBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01216\" name=\"l01216\"></a><span class=\"lineno\"> 1216</span>                           patchTable-&gt;GetFVarPatchIndexBuffer(fvarChannel),</div>\n+<div class=\"line\"><a id=\"l01217\" name=\"l01217\"></a><span class=\"lineno\"> 1217</span>                           patchTable-&gt;GetFVarPatchParamBuffer(fvarChannel));</div>\n+<div class=\"line\"><a id=\"l01218\" name=\"l01218\"></a><span class=\"lineno\"> 1218</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01219\" name=\"l01219\"></a><span class=\"lineno\"> 1219</span> </div>\n+<div class=\"line\"><a id=\"l01225\" name=\"l01225\"></a><span class=\"lineno\"> 1225</span> </div>\n+<div class=\"foldopen\" id=\"foldopen01227\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01227\" name=\"l01227\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01165.html#ae339a533e5f7a5021c5a4b40ec09c208\"> 1227</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01165.html#ae339a533e5f7a5021c5a4b40ec09c208\">Synchronize</a>(<span class=\"keywordtype\">void</span> * <span class=\"comment\">/*deviceContext = NULL*/</span>) {</div>\n+<div class=\"line\"><a id=\"l01228\" name=\"l01228\"></a><span class=\"lineno\"> 1228</span>        <span class=\"comment\">// nothing.</span></div>\n+<div class=\"line\"><a id=\"l01229\" name=\"l01229\"></a><span class=\"lineno\"> 1229</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01230\" name=\"l01230\"></a><span class=\"lineno\"> 1230</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l01231\" name=\"l01231\"></a><span class=\"lineno\"> 1231</span> </div>\n+<div class=\"line\"><a id=\"l01232\" name=\"l01232\"></a><span class=\"lineno\"> 1232</span> </div>\n+<div class=\"line\"><a id=\"l01233\" name=\"l01233\"></a><span class=\"lineno\"> 1233</span>}  <span class=\"comment\">// end namespace Osd</span></div>\n+<div class=\"line\"><a id=\"l01234\" name=\"l01234\"></a><span class=\"lineno\"> 1234</span> </div>\n+<div class=\"line\"><a id=\"l01235\" name=\"l01235\"></a><span class=\"lineno\"> 1235</span>}  <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l01236\" name=\"l01236\"></a><span class=\"lineno\"> 1236</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l01237\" name=\"l01237\"></a><span class=\"lineno\"> 1237</span> </div>\n+<div class=\"line\"><a id=\"l01238\" name=\"l01238\"></a><span class=\"lineno\"> 1238</span>}  <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l01239\" name=\"l01239\"></a><span class=\"lineno\"> 1239</span> </div>\n+<div class=\"line\"><a id=\"l01240\" name=\"l01240\"></a><span class=\"lineno\"> 1240</span> </div>\n+<div class=\"line\"><a id=\"l01241\" name=\"l01241\"></a><span class=\"lineno\"> 1241</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_CPU_EVALUATOR_H</span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa01141_html\"><div class=\"ttname\"><a href=\"a01141.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::BufferDescriptor</a></div><div class=\"ttdoc\">BufferDescriptor is a struct which describes buffer elements in interleaved data buffers....</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00061\">bufferDescriptor.h:61</a></div></div>\n+<div class=\"ttc\" id=\"aa01165_html\"><div class=\"ttname\"><a href=\"a01165.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuEvaluator</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l00039\">cpuEvaluator.h:39</a></div></div>\n+<div class=\"ttc\" id=\"aa01165_html_a0cf0cb080682d71200633ef242b83615\"><div class=\"ttname\"><a href=\"a01165.html#a0cf0cb080682d71200633ef242b83615\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel, CpuEvaluator const *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l01034\">cpuEvaluator.h:1034</a></div></div>\n+<div class=\"ttc\" id=\"aa01165_html_a2fbe9aec649e88f531714099d49c6db1\"><div class=\"ttname\"><a href=\"a01165.html#a2fbe9aec649e88f531714099d49c6db1\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel, CpuEvaluator const *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l01100\">cpuEvaluator.h:1100</a></div></div>\n+<div class=\"ttc\" id=\"aa01165_html_a4345e3659b7fb82f23dd51c688179ce3\"><div class=\"ttname\"><a href=\"a01165.html#a4345e3659b7fb82f23dd51c688179ce3\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(const float *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, const int *sizes, const int *offsets, const int *indices, const float *weights, int start, int end)</div><div class=\"ttdoc\">Static eval stencils function which takes raw CPU pointers for input and output.</div></div>\n+<div class=\"ttc\" id=\"aa01165_html_a46c223689a9dfec7040c8ee9783a6c52\"><div class=\"ttname\"><a href=\"a01165.html#a46c223689a9dfec7040c8ee9783a6c52\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel, CpuEvaluator const *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l01188\">cpuEvaluator.h:1188</a></div></div>\n+<div class=\"ttc\" id=\"aa01165_html_a63c07f0657267c51a42e68bbf2674d2c\"><div class=\"ttname\"><a href=\"a01165.html#a63c07f0657267c51a42e68bbf2674d2c\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, CpuEvaluator const *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l00971\">cpuEvaluator.h:971</a></div></div>\n+<div class=\"ttc\" id=\"aa01165_html_a6daed6135a40cda2daf6c6ea2047b330\"><div class=\"ttname\"><a href=\"a01165.html#a6daed6135a40cda2daf6c6ea2047b330\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(const float *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, float *du, BufferDescriptor const &amp;duDesc, float *dv, BufferDescriptor const &amp;dvDesc, const int *sizes, const int *offsets, const int *indices, const float *weights, const float *duWeights, const float *dvWeights, int start, int end)</div><div class=\"ttdoc\">Static eval stencils function with derivatives, which takes raw CPU pointers for input and output.</div></div>\n+<div class=\"ttc\" id=\"aa01165_html_a76707de0a89ab94f15ad4b2c398a2c23\"><div class=\"ttname\"><a href=\"a01165.html#a76707de0a89ab94f15ad4b2c398a2c23\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(const float *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, float *du, BufferDescriptor const &amp;duDesc, float *dv, BufferDescriptor const &amp;dvDesc, float *duu, BufferDescriptor const &amp;duuDesc, float *duv, BufferDescriptor const &amp;duvDesc, float *dvv, BufferDescriptor const &amp;dvvDesc, const int *sizes, const int *offsets, const int *indices, const float *weights, const float *duWeights, const float *dvWeights, const float *duuWeights, const float *duvWeights, const float *dvvWeights, int start, int end)</div><div class=\"ttdoc\">Static eval stencils function with derivatives, which takes raw CPU pointers for input and output.</div></div>\n+<div class=\"ttc\" id=\"aa01165_html_a7b556148d6ef2e04fbe99677e3a87e91\"><div class=\"ttname\"><a href=\"a01165.html#a7b556148d6ef2e04fbe99677e3a87e91\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(const float *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, float *du, BufferDescriptor const &amp;duDesc, float *dv, BufferDescriptor const &amp;dvDesc, float *duu, BufferDescriptor const &amp;duuDesc, float *duv, BufferDescriptor const &amp;duvDesc, float *dvv, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PatchCoord const *patchCoords, PatchArray const *patchArrays, const int *patchIndexBuffer, PatchParam const *patchParamBuffer)</div><div class=\"ttdoc\">Static limit eval function. It takes an array of PatchCoord and evaluate limit values on given PatchT...</div></div>\n+<div class=\"ttc\" id=\"aa01165_html_a833e2ee19e5dd9018607512aa8d32dbe\"><div class=\"ttname\"><a href=\"a01165.html#a833e2ee19e5dd9018607512aa8d32dbe\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, CpuEvaluator const *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l00454\">cpuEvaluator.h:454</a></div></div>\n+<div class=\"ttc\" id=\"aa01165_html_aadc6952ecef0e1cddda06e3c9d0a252a\"><div class=\"ttname\"><a href=\"a01165.html#aadc6952ecef0e1cddda06e3c9d0a252a\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, CpuEvaluator const *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function with derivatives. This function has a same signature as other device kern...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l00517\">cpuEvaluator.h:517</a></div></div>\n+<div class=\"ttc\" id=\"aa01165_html_ac1dba254bc287312f8f812113c8e8ad3\"><div class=\"ttname\"><a href=\"a01165.html#ac1dba254bc287312f8f812113c8e8ad3\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(const float *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, float *du, BufferDescriptor const &amp;duDesc, float *dv, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PatchCoord const *patchCoords, PatchArray const *patchArrays, const int *patchIndexBuffer, PatchParam const *patchParamBuffer)</div><div class=\"ttdoc\">Static limit eval function. It takes an array of PatchCoord and evaluate limit values on given PatchT...</div></div>\n+<div class=\"ttc\" id=\"aa01165_html_ac6771a32b0a35687f75374cf86e703d1\"><div class=\"ttname\"><a href=\"a01165.html#ac6771a32b0a35687f75374cf86e703d1\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, STENCIL_TABLE const *stencilTable, const CpuEvaluator *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic static eval stencils function with derivatives. This function has a same signature as other d...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l00303\">cpuEvaluator.h:303</a></div></div>\n+<div class=\"ttc\" id=\"aa01165_html_ad5b907c22dfcb943e5f25f3c16543535\"><div class=\"ttname\"><a href=\"a01165.html#ad5b907c22dfcb943e5f25f3c16543535\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(const float *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, int numPatchCoords, const PatchCoord *patchCoords, const PatchArray *patchArrays, const int *patchIndexBuffer, const PatchParam *patchParamBuffer)</div><div class=\"ttdoc\">Static limit eval function. It takes an array of PatchCoord and evaluate limit values on given PatchT...</div></div>\n+<div class=\"ttc\" id=\"aa01165_html_ada4f37a111fe2b1bfb12d9c2d458e5b5\"><div class=\"ttname\"><a href=\"a01165.html#ada4f37a111fe2b1bfb12d9c2d458e5b5\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, CpuEvaluator const *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l00886\">cpuEvaluator.h:886</a></div></div>\n+<div class=\"ttc\" id=\"aa01165_html_adb3a32fbae8a1437b6368dc1e298f58f\"><div class=\"ttname\"><a href=\"a01165.html#adb3a32fbae8a1437b6368dc1e298f58f\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, CpuEvaluator const *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l00823\">cpuEvaluator.h:823</a></div></div>\n+<div class=\"ttc\" id=\"aa01165_html_ae339a533e5f7a5021c5a4b40ec09c208\"><div class=\"ttname\"><a href=\"a01165.html#ae339a533e5f7a5021c5a4b40ec09c208\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuEvaluator::Synchronize</a></div><div class=\"ttdeci\">static void Synchronize(void *)</div><div class=\"ttdoc\">synchronize all asynchronous computation invoked on this device.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l01227\">cpuEvaluator.h:1227</a></div></div>\n+<div class=\"ttc\" id=\"aa01165_html_ae8e914fc701af498ea6c6244da408b94\"><div class=\"ttname\"><a href=\"a01165.html#ae8e914fc701af498ea6c6244da408b94\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, STENCIL_TABLE const *stencilTable, const CpuEvaluator *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic static eval stencils function. This function has a same signature as other device kernels hav...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l00072\">cpuEvaluator.h:72</a></div></div>\n+<div class=\"ttc\" id=\"aa01165_html_af01fdeb5b9c59c641e71bf453a6bd5d0\"><div class=\"ttname\"><a href=\"a01165.html#af01fdeb5b9c59c641e71bf453a6bd5d0\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, CpuEvaluator const *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function with derivatives. This function has a same signature as other device kern...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l00607\">cpuEvaluator.h:607</a></div></div>\n+<div class=\"ttc\" id=\"aa01165_html_af918f56587a2c4b397c8ae4f385a85fd\"><div class=\"ttname\"><a href=\"a01165.html#af918f56587a2c4b397c8ae4f385a85fd\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, STENCIL_TABLE const *stencilTable, const CpuEvaluator *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic static eval stencils function with derivatives. This function has a same signature as other d...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l00168\">cpuEvaluator.h:168</a></div></div>\n+<div class=\"ttc\" id=\"aa01321_html\"><div class=\"ttname\"><a href=\"a01321.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchCoord</a></div><div class=\"ttdoc\">Coordinates set on a patch table.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00042\">types.h:42</a></div></div>\n+<div class=\"ttc\" id=\"aa01325_html\"><div class=\"ttname\"><a href=\"a01325.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchArray</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00066\">types.h:66</a></div></div>\n+<div class=\"ttc\" id=\"aa01329_html\"><div class=\"ttname\"><a href=\"a01329.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchParam</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00127\">types.h:127</a></div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7f420b72a822828cfa8b0561c695a5cc.html\">far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00782.html\">topologyLevel.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00782.html\">cpuEvaluator.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-topologyLevel.h\n+cpuEvaluator.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2015 DreamWorks Animation LLC.\n+2// Copyright 2015 Pixar\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -23,387 +23,656 @@\n 17//\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n-24#ifndef OPENSUBDIV3_FAR_TOPOLOGY_LEVEL_H\n-25#define OPENSUBDIV3_FAR_TOPOLOGY_LEVEL_H\n-26\n-27#include \"../version.h\"\n-28\n-29#include \"../vtr/level.h\"\n-30#include \"../vtr/refinement.h\"\n-31#include \"../far/types.h\"\n-32\n-33#include <vector>\n-34\n-35namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-36namespace OPENSUBDIV_VERSION {\n-37\n-38namespace Far {\n-39\n-_\b4_\b9class _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl {\n-50\n-51public:\n-53\n-60\n-_\b6_\b2 int _\bG_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs() const { return _level->getNumVertices(); }\n-63\n-_\b6_\b5 int _\bG_\be_\bt_\bN_\bu_\bm_\bF_\ba_\bc_\be_\bs() const { return _level->getNumFaces(); }\n-66\n-_\b6_\b8 int _\bG_\be_\bt_\bN_\bu_\bm_\bE_\bd_\bg_\be_\bs() const { return _level->getNumEdges(); }\n-69\n-_\b7_\b1 int _\bG_\be_\bt_\bN_\bu_\bm_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\bi_\bc_\be_\bs() const { return _level->getNumFaceVerticesTotal(); }\n-73\n-75\n-90 //\n-91\n-_\b9_\b3 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bG_\be_\bt_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\bi_\bc_\be_\bs(_\bI_\bn_\bd_\be_\bx f) const { return _level-\n->getFaceVertices(f); }\n+24\n+25#ifndef OPENSUBDIV3_OSD_CPU_EVALUATOR_H\n+26#define OPENSUBDIV3_OSD_CPU_EVALUATOR_H\n+27\n+28#include \"../version.h\"\n+29#include \"../osd/bufferDescriptor.h\"\n+30#include \"../osd/types.h\"\n+31\n+32#include <cstddef>\n+33\n+34namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+35namespace OPENSUBDIV_VERSION {\n+36\n+37namespace Osd {\n+38\n+_\b3_\b9class _\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br {\n+40public:\n+46\n+71 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n+_\b7_\b2 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n+73 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+74 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+75 STENCIL_TABLE const *stencilTable,\n+76 const _\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br *instance = NULL,\n+77 void * deviceContext = NULL) {\n+78\n+79 (void)instance; // unused\n+80 (void)deviceContext; // unused\n+81\n+82 if (stencilTable->GetNumStencils() == 0)\n+83 return false;\n+84\n+85 return _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n+86 dstBuffer->BindCpuBuffer(), dstDesc,\n+87 &stencilTable->GetSizes()[0],\n+88 &stencilTable->GetOffsets()[0],\n+89 &stencilTable->GetControlIndices()[0],\n+90 &stencilTable->GetWeights()[0],\n+91 /*start = */ 0,\n+92 /*end = */ stencilTable->GetNumStencils());\n+93 }\n 94\n-_\b9_\b6 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bG_\be_\bt_\bF_\ba_\bc_\be_\bE_\bd_\bg_\be_\bs(_\bI_\bn_\bd_\be_\bx f) const { return _level->getFaceEdges\n-(f); }\n-97\n-_\b9_\b9 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bG_\be_\bt_\bE_\bd_\bg_\be_\bV_\be_\br_\bt_\bi_\bc_\be_\bs(_\bI_\bn_\bd_\be_\bx e) const { return _level-\n->getEdgeVertices(e); }\n-100\n-_\b1_\b0_\b2 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bG_\be_\bt_\bE_\bd_\bg_\be_\bF_\ba_\bc_\be_\bs(_\bI_\bn_\bd_\be_\bx e) const { return _level->getEdgeFaces\n-(e); }\n-103\n-_\b1_\b0_\b5 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bF_\ba_\bc_\be_\bs(_\bI_\bn_\bd_\be_\bx v) const { return _level-\n->getVertexFaces(v); }\n-106\n-_\b1_\b0_\b8 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bE_\bd_\bg_\be_\bs(_\bI_\bn_\bd_\be_\bx v) const { return _level-\n->getVertexEdges(v); }\n-109\n-_\b1_\b1_\b1 _\bC_\bo_\bn_\bs_\bt_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bF_\ba_\bc_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\bi_\bc_\be_\bs(_\bI_\bn_\bd_\be_\bx v) const { return\n-_level->getVertexFaceLocalIndices(v); }\n-112\n-_\b1_\b1_\b4 _\bC_\bo_\bn_\bs_\bt_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bE_\bd_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\bi_\bc_\be_\bs(_\bI_\bn_\bd_\be_\bx v) const { return\n-_level->getVertexEdgeLocalIndices(v); }\n-115\n-_\b1_\b1_\b7 _\bC_\bo_\bn_\bs_\bt_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bG_\be_\bt_\bE_\bd_\bg_\be_\bF_\ba_\bc_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\bi_\bc_\be_\bs(_\bI_\bn_\bd_\be_\bx e) const { return\n-_level->getEdgeFaceLocalIndices(e); }\n-118\n-_\b1_\b2_\b0 _\bI_\bn_\bd_\be_\bx _\bF_\bi_\bn_\bd_\bE_\bd_\bg_\be(_\bI_\bn_\bd_\be_\bx v0, _\bI_\bn_\bd_\be_\bx v1) const { return _level->findEdge(v0, v1);\n-}\n-122\n-124\n-126\n-_\b1_\b2_\b8 bool _\bI_\bs_\bE_\bd_\bg_\be_\bN_\bo_\bn_\bM_\ba_\bn_\bi_\bf_\bo_\bl_\bd(_\bI_\bn_\bd_\be_\bx e) const { return _level->isEdgeNonManifold\n-(e); }\n+_\b1_\b2_\b1 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n+122 const float *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+123 float *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+124 const int * sizes,\n+125 const int * offsets,\n+126 const int * indices,\n+127 const float * weights,\n+128 int start, int end);\n 129\n-_\b1_\b3_\b1 bool _\bI_\bs_\bV_\be_\br_\bt_\be_\bx_\bN_\bo_\bn_\bM_\ba_\bn_\bi_\bf_\bo_\bl_\bd(_\bI_\bn_\bd_\be_\bx v) const { return _level-\n->isVertexNonManifold(v); }\n-132\n-_\b1_\b3_\b4 bool _\bI_\bs_\bE_\bd_\bg_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by(_\bI_\bn_\bd_\be_\bx e) const { return _level->getEdgeTag\n-(e)._boundary; }\n-135\n-_\b1_\b3_\b7 bool _\bI_\bs_\bV_\be_\br_\bt_\be_\bx_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by(_\bI_\bn_\bd_\be_\bx v) const { return _level->getVertexTag\n-(v)._boundary; }\n-138\n-_\b1_\b4_\b0 bool _\bI_\bs_\bV_\be_\br_\bt_\be_\bx_\bC_\bo_\br_\bn_\be_\br(_\bI_\bn_\bd_\be_\bx v) const { return (_level->getNumVertexFaces(v)\n-== 1); }\n-141\n-_\b1_\b6_\b2 bool _\bI_\bs_\bV_\be_\br_\bt_\be_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be_\bR_\be_\bg_\bu_\bl_\ba_\br(_\bI_\bn_\bd_\be_\bx v) const { return !_level->getVertexTag\n-(v)._xordinary || _\bI_\bs_\bV_\be_\br_\bt_\be_\bx_\bC_\bo_\br_\bn_\be_\br(v); }\n-164\n-166\n-171\n-_\b1_\b7_\b3 float _\bG_\be_\bt_\bE_\bd_\bg_\be_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs(_\bI_\bn_\bd_\be_\bx e) const { return _level->getEdgeSharpness(e);\n-}\n-174\n-_\b1_\b7_\b6 float _\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs(_\bI_\bn_\bd_\be_\bx v) const { return _level->getVertexSharpness\n-(v); }\n-177\n-_\b1_\b7_\b9 bool _\bI_\bs_\bE_\bd_\bg_\be_\bI_\bn_\bf_\bS_\bh_\ba_\br_\bp(_\bI_\bn_\bd_\be_\bx e) const { return _level->getEdgeTag\n-(e)._infSharp; }\n-180\n-_\b1_\b8_\b2 bool _\bI_\bs_\bV_\be_\br_\bt_\be_\bx_\bI_\bn_\bf_\bS_\bh_\ba_\br_\bp(_\bI_\bn_\bd_\be_\bx v) const { return _level->getVertexTag\n-(v)._infSharp; }\n-183\n-_\b1_\b8_\b5 bool _\bI_\bs_\bE_\bd_\bg_\be_\bS_\be_\bm_\bi_\bS_\bh_\ba_\br_\bp(_\bI_\bn_\bd_\be_\bx e) const { return _level->getEdgeTag\n-(e)._semiSharp; }\n-186\n-_\b1_\b8_\b8 bool _\bI_\bs_\bV_\be_\br_\bt_\be_\bx_\bS_\be_\bm_\bi_\bS_\bh_\ba_\br_\bp(_\bI_\bn_\bd_\be_\bx v) const { return _level->getVertexTag\n-(v)._semiSharp; }\n-189\n-_\b1_\b9_\b1 bool _\bI_\bs_\bF_\ba_\bc_\be_\bH_\bo_\bl_\be(_\bI_\bn_\bd_\be_\bx f) const { return _level->isFaceHole(f); }\n-192\n-_\b1_\b9_\b4 _\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be _\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bR_\bu_\bl_\be(_\bI_\bn_\bd_\be_\bx v) const { return _level-\n->getVertexRule(v); }\n-196\n-198\n-228\n-_\b2_\b3_\b0 int _\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs() const { return _level->getNumFVarChannels(); }\n-231\n-_\b2_\b3_\b4 int _\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bs(int channel = 0) const { return _level-\n->getNumFVarValues(channel); }\n-235\n-_\b2_\b3_\b7 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bG_\be_\bt_\bF_\ba_\bc_\be_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bs(_\bI_\bn_\bd_\be_\bx f, int channel = 0) const {\n-238 return _level->getFaceFVarValues(f, channel);\n-239 }\n-240\n-_\b2_\b4_\b2 bool _\bD_\bo_\be_\bs_\bV_\be_\br_\bt_\be_\bx_\bF_\bV_\ba_\br_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bM_\ba_\bt_\bc_\bh(_\bI_\bn_\bd_\be_\bx v, int channel = 0) const {\n-243 return _level->doesVertexFVarTopologyMatch(v, channel);\n-244 }\n-245\n-_\b2_\b4_\b7 bool _\bD_\bo_\be_\bs_\bE_\bd_\bg_\be_\bF_\bV_\ba_\br_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bM_\ba_\bt_\bc_\bh(_\bI_\bn_\bd_\be_\bx e, int channel = 0) const {\n-248 return _level->doesEdgeFVarTopologyMatch(e, channel);\n-249 }\n-250\n-_\b2_\b5_\b2 bool _\bD_\bo_\be_\bs_\bF_\ba_\bc_\be_\bF_\bV_\ba_\br_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bM_\ba_\bt_\bc_\bh(_\bI_\bn_\bd_\be_\bx f, int channel = 0) const {\n-253 return _level->doesFaceFVarTopologyMatch(f, channel);\n-254 }\n-255\n-257\n-259\n-260\n-_\b2_\b6_\b2 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bG_\be_\bt_\bF_\ba_\bc_\be_\bC_\bh_\bi_\bl_\bd_\bF_\ba_\bc_\be_\bs(_\bI_\bn_\bd_\be_\bx f) const { return _refToChild-\n->getFaceChildFaces(f); }\n-263\n-_\b2_\b6_\b5 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bG_\be_\bt_\bF_\ba_\bc_\be_\bC_\bh_\bi_\bl_\bd_\bE_\bd_\bg_\be_\bs(_\bI_\bn_\bd_\be_\bx f) const { return _refToChild-\n->getFaceChildEdges(f); }\n-266\n-_\b2_\b6_\b8 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bG_\be_\bt_\bE_\bd_\bg_\be_\bC_\bh_\bi_\bl_\bd_\bE_\bd_\bg_\be_\bs(_\bI_\bn_\bd_\be_\bx e) const { return _refToChild-\n->getEdgeChildEdges(e); }\n-269\n-_\b2_\b7_\b1 _\bI_\bn_\bd_\be_\bx _\bG_\be_\bt_\bF_\ba_\bc_\be_\bC_\bh_\bi_\bl_\bd_\bV_\be_\br_\bt_\be_\bx( _\bI_\bn_\bd_\be_\bx f) const { return _refToChild-\n->getFaceChildVertex(f); }\n-272\n-_\b2_\b7_\b4 _\bI_\bn_\bd_\be_\bx _\bG_\be_\bt_\bE_\bd_\bg_\be_\bC_\bh_\bi_\bl_\bd_\bV_\be_\br_\bt_\be_\bx( _\bI_\bn_\bd_\be_\bx e) const { return _refToChild-\n->getEdgeChildVertex(e); }\n-275\n-_\b2_\b7_\b7 _\bI_\bn_\bd_\be_\bx _\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bC_\bh_\bi_\bl_\bd_\bV_\be_\br_\bt_\be_\bx(_\bI_\bn_\bd_\be_\bx v) const { return _refToChild-\n->getVertexChildVertex(v); }\n-278\n-_\b2_\b8_\b0 _\bI_\bn_\bd_\be_\bx _\bG_\be_\bt_\bF_\ba_\bc_\be_\bP_\ba_\br_\be_\bn_\bt_\bF_\ba_\bc_\be(_\bI_\bn_\bd_\be_\bx f) const { return _refToParent-\n->getChildFaceParentFace(f); }\n-282\n-284\n-285\n-_\b2_\b8_\b6 bool _\bV_\ba_\bl_\bi_\bd_\ba_\bt_\be_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by() const { return _level->validateTopology(); }\n-_\b2_\b8_\b7 void _\bP_\br_\bi_\bn_\bt_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by(bool children = true) const { _level->print((children &&\n-_refToChild) ? _refToChild : 0); }\n-289\n-290\n-291private:\n-_\b2_\b9_\b2 friend class _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br;\n-293\n-294 Vtr::internal::Level const * _level;\n-295 Vtr::internal::Refinement const * _refToParent;\n-296 Vtr::internal::Refinement const * _refToChild;\n-297\n-298public:\n-299 // Not intended for public use, but required by std::vector, etc...\n-_\b3_\b0_\b0 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl() { }\n-_\b3_\b0_\b1 _\b~_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl() { }\n-302};\n-303\n-304} // end namespace Far\n-305\n-306} // end namespace OPENSUBDIV_VERSION\n-307using namespace OPENSUBDIV_VERSION;\n-308} // end namespace OpenSubdiv\n-309\n-310#endif /* OPENSUBDIV3_FAR_TOPOLOGY_LEVEL_H */\n+167 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n+_\b1_\b6_\b8 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n+169 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+170 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+171 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+172 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+173 STENCIL_TABLE const *stencilTable,\n+174 const _\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br *instance = NULL,\n+175 void * deviceContext = NULL) {\n+176\n+177 (void)instance; // unused\n+178 (void)deviceContext; // unused\n+179\n+180 return _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n+181 dstBuffer->BindCpuBuffer(), dstDesc,\n+182 duBuffer->BindCpuBuffer(), duDesc,\n+183 dvBuffer->BindCpuBuffer(), dvDesc,\n+184 &stencilTable->GetSizes()[0],\n+185 &stencilTable->GetOffsets()[0],\n+186 &stencilTable->GetControlIndices()[0],\n+187 &stencilTable->GetWeights()[0],\n+188 &stencilTable->GetDuWeights()[0],\n+189 &stencilTable->GetDvWeights()[0],\n+190 /*start = */ 0,\n+191 /*end = */ stencilTable->GetNumStencils());\n+192 }\n+193\n+_\b2_\b3_\b4 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n+235 const float *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+236 float *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+237 float *du, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+238 float *dv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+239 const int * sizes,\n+240 const int * offsets,\n+241 const int * indices,\n+242 const float * weights,\n+243 const float * duWeights,\n+244 const float * dvWeights,\n+245 int start, int end);\n+246\n+302 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n+_\b3_\b0_\b3 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n+304 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+305 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+306 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+307 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+308 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+309 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+310 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+311 STENCIL_TABLE const *stencilTable,\n+312 const _\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br *instance = NULL,\n+313 void * deviceContext = NULL) {\n+314\n+315 (void)instance; // unused\n+316 (void)deviceContext; // unused\n+317\n+318 return _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n+319 dstBuffer->BindCpuBuffer(), dstDesc,\n+320 duBuffer->BindCpuBuffer(), duDesc,\n+321 dvBuffer->BindCpuBuffer(), dvDesc,\n+322 duuBuffer->BindCpuBuffer(), duuDesc,\n+323 duvBuffer->BindCpuBuffer(), duvDesc,\n+324 dvvBuffer->BindCpuBuffer(), dvvDesc,\n+325 &stencilTable->GetSizes()[0],\n+326 &stencilTable->GetOffsets()[0],\n+327 &stencilTable->GetControlIndices()[0],\n+328 &stencilTable->GetWeights()[0],\n+329 &stencilTable->GetDuWeights()[0],\n+330 &stencilTable->GetDvWeights()[0],\n+331 &stencilTable->GetDuuWeights()[0],\n+332 &stencilTable->GetDuvWeights()[0],\n+333 &stencilTable->GetDvvWeights()[0],\n+334 /*start = */ 0,\n+335 /*end = */ stencilTable->GetNumStencils());\n+336 }\n+337\n+_\b3_\b9_\b9 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n+400 const float *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+401 float *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+402 float *du, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+403 float *dv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+404 float *duu, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+405 float *duv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+406 float *dvv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+407 const int * sizes,\n+408 const int * offsets,\n+409 const int * indices,\n+410 const float * weights,\n+411 const float * duWeights,\n+412 const float * dvWeights,\n+413 const float * duuWeights,\n+414 const float * duvWeights,\n+415 const float * dvvWeights,\n+416 int start, int end);\n+417\n+423\n+452 template <typename SRC_BUFFER, typename DST_BUFFER,\n+453 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b4_\b5_\b4 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n+455 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+456 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+457 int numPatchCoords,\n+458 PATCHCOORD_BUFFER *patchCoords,\n+459 PATCH_TABLE *patchTable,\n+460 _\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance = NULL,\n+461 void * deviceContext = NULL) {\n+462\n+463 (void)instance; // unused\n+464 (void)deviceContext; // unused\n+465\n+466 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n+467 dstBuffer->BindCpuBuffer(), dstDesc,\n+468 numPatchCoords,\n+469 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd*)patchCoords->BindCpuBuffer(),\n+470 patchTable->GetPatchArrayBuffer(),\n+471 patchTable->GetPatchIndexBuffer(),\n+472 patchTable->GetPatchParamBuffer());\n+473 }\n+474\n+515 template <typename SRC_BUFFER, typename DST_BUFFER,\n+516 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b5_\b1_\b7 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n+518 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+519 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+520 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+521 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+522 int numPatchCoords,\n+523 PATCHCOORD_BUFFER *patchCoords,\n+524 PATCH_TABLE *patchTable,\n+525 _\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance = NULL,\n+526 void * deviceContext = NULL) {\n+527\n+528 (void)instance; // unused\n+529 (void)deviceContext; // unused\n+530\n+531 // XXX: PatchCoords is somewhat abusing vertex primvar buffer interop.\n+532 // ideally all buffer classes should have templated by datatype\n+533 // so that downcast isn't needed there.\n+534 // (e.g. Osd::CpuBuffer<PatchCoord> )\n+535 //\n+536 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n+537 dstBuffer->BindCpuBuffer(), dstDesc,\n+538 duBuffer->BindCpuBuffer(), duDesc,\n+539 dvBuffer->BindCpuBuffer(), dvDesc,\n+540 numPatchCoords,\n+541 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd*)patchCoords->BindCpuBuffer(),\n+542 patchTable->GetPatchArrayBuffer(),\n+543 patchTable->GetPatchIndexBuffer(),\n+544 patchTable->GetPatchParamBuffer());\n+545 }\n+546\n+605 template <typename SRC_BUFFER, typename DST_BUFFER,\n+606 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b6_\b0_\b7 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n+608 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+609 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+610 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+611 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+612 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+613 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+614 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+615 int numPatchCoords,\n+616 PATCHCOORD_BUFFER *patchCoords,\n+617 PATCH_TABLE *patchTable,\n+618 _\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance = NULL,\n+619 void * deviceContext = NULL) {\n+620\n+621 (void)instance; // unused\n+622 (void)deviceContext; // unused\n+623\n+624 // XXX: PatchCoords is somewhat abusing vertex primvar buffer interop.\n+625 // ideally all buffer classes should have templated by datatype\n+626 // so that downcast isn't needed there.\n+627 // (e.g. Osd::CpuBuffer<PatchCoord> )\n+628 //\n+629 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n+630 dstBuffer->BindCpuBuffer(), dstDesc,\n+631 duBuffer->BindCpuBuffer(), duDesc,\n+632 dvBuffer->BindCpuBuffer(), dvDesc,\n+633 duuBuffer->BindCpuBuffer(), duuDesc,\n+634 duvBuffer->BindCpuBuffer(), duvDesc,\n+635 dvvBuffer->BindCpuBuffer(), dvvDesc,\n+636 numPatchCoords,\n+637 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd*)patchCoords->BindCpuBuffer(),\n+638 patchTable->GetPatchArrayBuffer(),\n+639 patchTable->GetPatchIndexBuffer(),\n+640 patchTable->GetPatchParamBuffer());\n+641 }\n+642\n+_\b6_\b7_\b0 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n+671 const float *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+672 float *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+673 int numPatchCoords,\n+674 const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd *patchCoords,\n+675 const _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by *patchArrays,\n+676 const int *patchIndexBuffer,\n+677 const _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm *patchParamBuffer);\n+678\n+_\b7_\b1_\b6 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n+717 const float *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+718 float *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+719 float *du, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+720 float *dv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+721 int numPatchCoords,\n+722 _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd const *patchCoords,\n+723 _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by const *patchArrays,\n+724 const int *patchIndexBuffer,\n+725 _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm const *patchParamBuffer);\n+726\n+_\b7_\b7_\b9 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n+780 const float *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+781 float *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+782 float *du, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+783 float *dv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+784 float *duu, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+785 float *duv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+786 float *dvv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+787 int numPatchCoords,\n+788 _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd const *patchCoords,\n+789 _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by const *patchArrays,\n+790 const int *patchIndexBuffer,\n+791 _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm const *patchParamBuffer);\n+792\n+821 template <typename SRC_BUFFER, typename DST_BUFFER,\n+822 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b8_\b2_\b3 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+824 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+825 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+826 int numPatchCoords,\n+827 PATCHCOORD_BUFFER *patchCoords,\n+828 PATCH_TABLE *patchTable,\n+829 _\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance = NULL,\n+830 void * deviceContext = NULL) {\n+831\n+832 (void)instance; // unused\n+833 (void)deviceContext; // unused\n+834\n+835 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n+836 dstBuffer->BindCpuBuffer(), dstDesc,\n+837 numPatchCoords,\n+838 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd*)patchCoords->BindCpuBuffer(),\n+839 patchTable->GetVaryingPatchArrayBuffer(),\n+840 patchTable->GetVaryingPatchIndexBuffer(),\n+841 patchTable->GetPatchParamBuffer());\n+842 }\n+843\n+884 template <typename SRC_BUFFER, typename DST_BUFFER,\n+885 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b8_\b8_\b6 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+887 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+888 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+889 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+890 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+891 int numPatchCoords,\n+892 PATCHCOORD_BUFFER *patchCoords,\n+893 PATCH_TABLE *patchTable,\n+894 _\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance = NULL,\n+895 void * deviceContext = NULL) {\n+896\n+897 (void)instance; // unused\n+898 (void)deviceContext; // unused\n+899\n+900 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n+901 dstBuffer->BindCpuBuffer(), dstDesc,\n+902 duBuffer->BindCpuBuffer(), duDesc,\n+903 dvBuffer->BindCpuBuffer(), dvDesc,\n+904 numPatchCoords,\n+905 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd*)patchCoords->BindCpuBuffer(),\n+906 patchTable->GetVaryingPatchArrayBuffer(),\n+907 patchTable->GetVaryingPatchIndexBuffer(),\n+908 patchTable->GetPatchParamBuffer());\n+909 }\n+910\n+969 template <typename SRC_BUFFER, typename DST_BUFFER,\n+970 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b9_\b7_\b1 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+972 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+973 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+974 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+975 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+976 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+977 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+978 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+979 int numPatchCoords,\n+980 PATCHCOORD_BUFFER *patchCoords,\n+981 PATCH_TABLE *patchTable,\n+982 _\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance = NULL,\n+983 void * deviceContext = NULL) {\n+984\n+985 (void)instance; // unused\n+986 (void)deviceContext; // unused\n+987\n+988 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n+989 dstBuffer->BindCpuBuffer(), dstDesc,\n+990 duBuffer->BindCpuBuffer(), duDesc,\n+991 dvBuffer->BindCpuBuffer(), dvDesc,\n+992 duuBuffer->BindCpuBuffer(), duuDesc,\n+993 duvBuffer->BindCpuBuffer(), duvDesc,\n+994 dvvBuffer->BindCpuBuffer(), dvvDesc,\n+995 numPatchCoords,\n+996 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd*)patchCoords->BindCpuBuffer(),\n+997 patchTable->GetVaryingPatchArrayBuffer(),\n+998 patchTable->GetVaryingPatchIndexBuffer(),\n+999 patchTable->GetPatchParamBuffer());\n+1000 }\n+1001\n+1032 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1033 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b1_\b0_\b3_\b4 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1035 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1036 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1037 int numPatchCoords,\n+1038 PATCHCOORD_BUFFER *patchCoords,\n+1039 PATCH_TABLE *patchTable,\n+1040 int fvarChannel,\n+1041 _\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance = NULL,\n+1042 void * deviceContext = NULL) {\n+1043\n+1044 (void)instance; // unused\n+1045 (void)deviceContext; // unused\n+1046\n+1047 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n+1048 dstBuffer->BindCpuBuffer(), dstDesc,\n+1049 numPatchCoords,\n+1050 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd*)patchCoords->BindCpuBuffer(),\n+1051 patchTable->GetFVarPatchArrayBuffer(fvarChannel),\n+1052 patchTable->GetFVarPatchIndexBuffer(fvarChannel),\n+1053 patchTable->GetFVarPatchParamBuffer(fvarChannel));\n+1054 }\n+1055\n+1098 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1099 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b1_\b1_\b0_\b0 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1101 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1102 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1103 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+1104 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+1105 int numPatchCoords,\n+1106 PATCHCOORD_BUFFER *patchCoords,\n+1107 PATCH_TABLE *patchTable,\n+1108 int fvarChannel,\n+1109 _\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance = NULL,\n+1110 void * deviceContext = NULL) {\n+1111\n+1112 (void)instance; // unused\n+1113 (void)deviceContext; // unused\n+1114\n+1115 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n+1116 dstBuffer->BindCpuBuffer(), dstDesc,\n+1117 duBuffer->BindCpuBuffer(), duDesc,\n+1118 dvBuffer->BindCpuBuffer(), dvDesc,\n+1119 numPatchCoords,\n+1120 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd*)patchCoords->BindCpuBuffer(),\n+1121 patchTable->GetFVarPatchArrayBuffer(fvarChannel),\n+1122 patchTable->GetFVarPatchIndexBuffer(fvarChannel),\n+1123 patchTable->GetFVarPatchParamBuffer(fvarChannel));\n+1124 }\n+1125\n+1186 template <typename SRC_BUFFER, typename DST_BUFFER,\n+1187 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n+_\b1_\b1_\b8_\b8 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+1189 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n+1190 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n+1191 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n+1192 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n+1193 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n+1194 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n+1195 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n+1196 int numPatchCoords,\n+1197 PATCHCOORD_BUFFER *patchCoords,\n+1198 PATCH_TABLE *patchTable,\n+1199 int fvarChannel,\n+1200 _\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance = NULL,\n+1201 void * deviceContext = NULL) {\n+1202\n+1203 (void)instance; // unused\n+1204 (void)deviceContext; // unused\n+1205\n+1206 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n+1207 dstBuffer->BindCpuBuffer(), dstDesc,\n+1208 duBuffer->BindCpuBuffer(), duDesc,\n+1209 dvBuffer->BindCpuBuffer(), dvDesc,\n+1210 duuBuffer->BindCpuBuffer(), duuDesc,\n+1211 duvBuffer->BindCpuBuffer(), duvDesc,\n+1212 dvvBuffer->BindCpuBuffer(), dvvDesc,\n+1213 numPatchCoords,\n+1214 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd*)patchCoords->BindCpuBuffer(),\n+1215 patchTable->GetFVarPatchArrayBuffer(fvarChannel),\n+1216 patchTable->GetFVarPatchIndexBuffer(fvarChannel),\n+1217 patchTable->GetFVarPatchParamBuffer(fvarChannel));\n+1218 }\n+1219\n+1225\n+_\b1_\b2_\b2_\b7 static void _\bS_\by_\bn_\bc_\bh_\br_\bo_\bn_\bi_\bz_\be(void * /*deviceContext = NULL*/) {\n+1228 // nothing.\n+1229 }\n+1230};\n+1231\n+1232\n+1233} // end namespace Osd\n+1234\n+1235} // end namespace OPENSUBDIV_VERSION\n+1236using namespace OPENSUBDIV_VERSION;\n+1237\n+1238} // end namespace OpenSubdiv\n+1239\n+1240\n+1241#endif // OPENSUBDIV3_OSD_CPU_EVALUATOR_H\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx\n-Vtr::Index Index\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b4_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl\n-An interface for accessing data in a specific level of a refined topology\n-hierarchy.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b4_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bG_\be_\bt_\bF_\ba_\bc_\be_\bP_\ba_\br_\be_\bn_\bt_\bF_\ba_\bc_\be\n-Index GetFaceParentFace(Index f) const\n-Return the parent face (in the previous level) of a given face.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b2_\b8_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl\n-TopologyLevel()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b3_\b0_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bI_\bs_\bV_\be_\br_\bt_\be_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be_\bR_\be_\bg_\bu_\bl_\ba_\br\n-bool IsVertexValenceRegular(Index v) const\n-Return if the valence of the vertex is regular (must be manifold)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b1_\b6_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bG_\be_\bt_\bE_\bd_\bg_\be_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs\n-float GetEdgeSharpness(Index e) const\n-Return the sharpness assigned a given edge.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b1_\b7_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bD_\bo_\be_\bs_\bF_\ba_\bc_\be_\bF_\bV_\ba_\br_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bM_\ba_\bt_\bc_\bh\n-bool DoesFaceFVarTopologyMatch(Index f, int channel=0) const\n-Return if face-varying topology around a face matches.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b2_\b5_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bR_\bu_\bl_\be\n-Sdc::Crease::Rule GetVertexRule(Index v) const\n-Return the subdivision rule assigned a given vertex specific to this level.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b1_\b9_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bI_\bs_\bV_\be_\br_\bt_\be_\bx_\bC_\bo_\br_\bn_\be_\br\n-bool IsVertexCorner(Index v) const\n-Return if the vertex is a corner (only one incident face)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b1_\b4_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bC_\bh_\bi_\bl_\bd_\bV_\be_\br_\bt_\be_\bx\n-Index GetVertexChildVertex(Index v) const\n-Return the child vertex (in the next level) of a given vertex.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b2_\b7_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bG_\be_\bt_\bE_\bd_\bg_\be_\bF_\ba_\bc_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\bi_\bc_\be_\bs\n-ConstLocalIndexArray GetEdgeFaceLocalIndices(Index e) const\n-Access the local indices of an edge with respect to its incident faces.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b1_\b1_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bG_\be_\bt_\bF_\ba_\bc_\be_\bC_\bh_\bi_\bl_\bd_\bE_\bd_\bg_\be_\bs\n-ConstIndexArray GetFaceChildEdges(Index f) const\n-Access the child edges (in the next level) of a given face.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b2_\b6_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bD_\bo_\be_\bs_\bE_\bd_\bg_\be_\bF_\bV_\ba_\br_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bM_\ba_\bt_\bc_\bh\n-bool DoesEdgeFVarTopologyMatch(Index e, int channel=0) const\n-Return if face-varying topology across the edge only matches.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b2_\b4_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bP_\br_\bi_\bn_\bt_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by\n-void PrintTopology(bool children=true) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b2_\b8_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bG_\be_\bt_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n-ConstIndexArray GetFaceVertices(Index f) const\n-Access the vertices incident a given face.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b9_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bG_\be_\bt_\bF_\ba_\bc_\be_\bC_\bh_\bi_\bl_\bd_\bF_\ba_\bc_\be_\bs\n-ConstIndexArray GetFaceChildFaces(Index f) const\n-Access the child faces (in the next level) of a given face.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b2_\b6_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bE_\bd_\bg_\be_\bs\n-int GetNumEdges() const\n-Return the number of edges in this level.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b6_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bV_\ba_\bl_\bi_\bd_\ba_\bt_\be_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by\n-bool ValidateTopology() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b2_\b8_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bI_\bs_\bE_\bd_\bg_\be_\bN_\bo_\bn_\bM_\ba_\bn_\bi_\bf_\bo_\bl_\bd\n-bool IsEdgeNonManifold(Index e) const\n-Return if the edge is non-manifold.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b1_\b2_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bI_\bs_\bF_\ba_\bc_\be_\bH_\bo_\bl_\be\n-bool IsFaceHole(Index f) const\n-Return if a given face has been tagged as a hole.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b1_\b9_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bE_\bd_\bg_\be_\bs\n-ConstIndexArray GetVertexEdges(Index v) const\n-Access the edges incident a given vertex.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b1_\b0_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bG_\be_\bt_\bF_\ba_\bc_\be_\bC_\bh_\bi_\bl_\bd_\bV_\be_\br_\bt_\be_\bx\n-Index GetFaceChildVertex(Index f) const\n-Return the child vertex (in the next level) of a given face.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b2_\b7_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bD_\bo_\be_\bs_\bV_\be_\br_\bt_\be_\bx_\bF_\bV_\ba_\br_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bM_\ba_\bt_\bc_\bh\n-bool DoesVertexFVarTopologyMatch(Index v, int channel=0) const\n-Return if face-varying topology around a vertex matches.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b2_\b4_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bG_\be_\bt_\bE_\bd_\bg_\be_\bC_\bh_\bi_\bl_\bd_\bE_\bd_\bg_\be_\bs\n-ConstIndexArray GetEdgeChildEdges(Index e) const\n-Access the child edges (in the next level) of a given edge.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b2_\b6_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bI_\bs_\bE_\bd_\bg_\be_\bI_\bn_\bf_\bS_\bh_\ba_\br_\bp\n-bool IsEdgeInfSharp(Index e) const\n-Return if the edge is infinitely-sharp.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b1_\b7_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bF_\ba_\bc_\be_\bs\n-ConstIndexArray GetVertexFaces(Index v) const\n-Access the faces incident a given vertex.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b1_\b0_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bF_\bi_\bn_\bd_\bE_\bd_\bg_\be\n-Index FindEdge(Index v0, Index v1) const\n-Identify the edge matching the given vertex pair.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b1_\b2_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bE_\bd_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\bi_\bc_\be_\bs\n-ConstLocalIndexArray GetVertexEdgeLocalIndices(Index v) const\n-Access the local indices of a vertex with respect to its incident edges.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b1_\b1_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bG_\be_\bt_\bF_\ba_\bc_\be_\bE_\bd_\bg_\be_\bs\n-ConstIndexArray GetFaceEdges(Index f) const\n-Access the edges incident a given face.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b9_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bF_\ba_\bc_\be_\bs\n-int GetNumFaces() const\n-Return the number of faces in this level.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b6_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bI_\bs_\bV_\be_\br_\bt_\be_\bx_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by\n-bool IsVertexBoundary(Index v) const\n-Return if the vertex is on a boundary (at least one incident boundary edge)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b1_\b3_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs\n-int GetNumFVarChannels() const\n-Return the number of face-varying channels (should be same for all levels)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b2_\b3_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n-int GetNumVertices() const\n-Return the number of vertices in this level.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b6_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bG_\be_\bt_\bE_\bd_\bg_\be_\bF_\ba_\bc_\be_\bs\n-ConstIndexArray GetEdgeFaces(Index e) const\n-Access the faces incident a given edge.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b1_\b0_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bG_\be_\bt_\bF_\ba_\bc_\be_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bs\n-ConstIndexArray GetFaceFVarValues(Index f, int channel=0) const\n-Access the face-varying values associated with a particular face.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b2_\b3_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bG_\be_\bt_\bE_\bd_\bg_\be_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n-ConstIndexArray GetEdgeVertices(Index e) const\n-Access the vertices incident a given edge.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b9_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bI_\bs_\bE_\bd_\bg_\be_\bS_\be_\bm_\bi_\bS_\bh_\ba_\br_\bp\n-bool IsEdgeSemiSharp(Index e) const\n-Return if the edge is semi-sharp.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b1_\b8_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\b~_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl\n-~TopologyLevel()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b3_\b0_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs\n-float GetVertexSharpness(Index v) const\n-Return the sharpness assigned a given vertex.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b1_\b7_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bG_\be_\bt_\bE_\bd_\bg_\be_\bC_\bh_\bi_\bl_\bd_\bV_\be_\br_\bt_\be_\bx\n-Index GetEdgeChildVertex(Index e) const\n-Return the child vertex (in the next level) of a given edge.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b2_\b7_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bI_\bs_\bV_\be_\br_\bt_\be_\bx_\bS_\be_\bm_\bi_\bS_\bh_\ba_\br_\bp\n-bool IsVertexSemiSharp(Index v) const\n-Return if the vertex is semi-sharp.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b1_\b8_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n-int GetNumFaceVertices() const\n-Return the total number of face-vertices, i.e. the sum of all vertices for all\n-faces.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b7_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bI_\bs_\bV_\be_\br_\bt_\be_\bx_\bN_\bo_\bn_\bM_\ba_\bn_\bi_\bf_\bo_\bl_\bd\n-bool IsVertexNonManifold(Index v) const\n-Return if the vertex is non-manifold.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b1_\b3_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bI_\bs_\bE_\bd_\bg_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by\n-bool IsEdgeBoundary(Index e) const\n-Return if the edge is a boundary (only one incident face)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b1_\b3_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bI_\bs_\bV_\be_\br_\bt_\be_\bx_\bI_\bn_\bf_\bS_\bh_\ba_\br_\bp\n-bool IsVertexInfSharp(Index v) const\n-Return if the vertex is infinitely-sharp.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b1_\b8_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bs\n-int GetNumFVarValues(int channel=0) const\n-Return the total number of face-varying values in a particular channel (the\n-upper bound of a face-var...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b2_\b3_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bF_\ba_\bc_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\bi_\bc_\be_\bs\n-ConstLocalIndexArray GetVertexFaceLocalIndices(Index v) const\n-Access the local indices of a vertex with respect to its incident faces.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b1_\b1_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br\n-Stores topology data for a specified set of refinement options.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b5_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be\n-Rule\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b8_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b5_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n+BufferDescriptor is a struct which describes buffer elements in interleaved\n+data buffers....\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b6_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b3_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n+static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor\n+const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int\n+numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int\n+fvarChannel, CpuEvaluator const *instance=NULL, void *deviceContext=NULL)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b0_\b3_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n+static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor\n+const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,\n+DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n+BufferDescriptor const &dvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n+*patchCoords, PATCH_TABLE *patchTable, int fvarChannel, CpuEvaluator const\n+*instance=NULL, void *deviceContext=NULL)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b1_\b0_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+static bool EvalStencils(const float *src, BufferDescriptor const &srcDesc,\n+float *dst, BufferDescriptor const &dstDesc, const int *sizes, const int\n+*offsets, const int *indices, const float *weights, int start, int end)\n+Static eval stencils function which takes raw CPU pointers for input and\n+output.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n+static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor\n+const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,\n+DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n+BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const\n+&duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER\n+*dvvBuffer, BufferDescriptor const &dvvDesc, int numPatchCoords,\n+PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel,\n+CpuEvaluator const *instance=NULL, void *deviceContext=NULL)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b1_\b8_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n+static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n+*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n+BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const\n+&duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER\n+*dvvBuffer, BufferDescriptor const &dvvDesc, int numPatchCoords,\n+PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, CpuEvaluator const\n+*instance=NULL, void *deviceContext=NULL)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b9_\b7_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+static bool EvalStencils(const float *src, BufferDescriptor const &srcDesc,\n+float *dst, BufferDescriptor const &dstDesc, float *du, BufferDescriptor const\n+&duDesc, float *dv, BufferDescriptor const &dvDesc, const int *sizes, const int\n+*offsets, const int *indices, const float *weights, const float *duWeights,\n+const float *dvWeights, int start, int end)\n+Static eval stencils function with derivatives, which takes raw CPU pointers\n+for input and output.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+static bool EvalStencils(const float *src, BufferDescriptor const &srcDesc,\n+float *dst, BufferDescriptor const &dstDesc, float *du, BufferDescriptor const\n+&duDesc, float *dv, BufferDescriptor const &dvDesc, float *duu,\n+BufferDescriptor const &duuDesc, float *duv, BufferDescriptor const &duvDesc,\n+float *dvv, BufferDescriptor const &dvvDesc, const int *sizes, const int\n+*offsets, const int *indices, const float *weights, const float *duWeights,\n+const float *dvWeights, const float *duuWeights, const float *duvWeights, const\n+float *dvvWeights, int start, int end)\n+Static eval stencils function with derivatives, which takes raw CPU pointers\n+for input and output.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+static bool EvalPatches(const float *src, BufferDescriptor const &srcDesc,\n+float *dst, BufferDescriptor const &dstDesc, float *du, BufferDescriptor const\n+&duDesc, float *dv, BufferDescriptor const &dvDesc, float *duu,\n+BufferDescriptor const &duuDesc, float *duv, BufferDescriptor const &duvDesc,\n+float *dvv, BufferDescriptor const &dvvDesc, int numPatchCoords, PatchCoord\n+const *patchCoords, PatchArray const *patchArrays, const int *patchIndexBuffer,\n+PatchParam const *patchParamBuffer)\n+Static limit eval function. It takes an array of PatchCoord and evaluate limit\n+values on given PatchT...\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords,\n+PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, CpuEvaluator const\n+*instance=NULL, void *deviceContext=NULL)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b4_\b5_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n+BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n+&dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE\n+*patchTable, CpuEvaluator const *instance=NULL, void *deviceContext=NULL)\n+Generic limit eval function with derivatives. This function has a same\n+signature as other device kern...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b5_\b1_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+static bool EvalPatches(const float *src, BufferDescriptor const &srcDesc,\n+float *dst, BufferDescriptor const &dstDesc, float *du, BufferDescriptor const\n+&duDesc, float *dv, BufferDescriptor const &dvDesc, int numPatchCoords,\n+PatchCoord const *patchCoords, PatchArray const *patchArrays, const int\n+*patchIndexBuffer, PatchParam const *patchParamBuffer)\n+Static limit eval function. It takes an array of PatchCoord and evaluate limit\n+values on given PatchT...\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n+*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n+BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const\n+&duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER\n+*dvvBuffer, BufferDescriptor const &dvvDesc, STENCIL_TABLE const *stencilTable,\n+const CpuEvaluator *instance=NULL, void *deviceContext=NULL)\n+Generic static eval stencils function with derivatives. This function has a\n+same signature as other d...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b3_\b0_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+static bool EvalPatches(const float *src, BufferDescriptor const &srcDesc,\n+float *dst, BufferDescriptor const &dstDesc, int numPatchCoords, const\n+PatchCoord *patchCoords, const PatchArray *patchArrays, const int\n+*patchIndexBuffer, const PatchParam *patchParamBuffer)\n+Static limit eval function. It takes an array of PatchCoord and evaluate limit\n+values on given PatchT...\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n+static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n+*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n+BufferDescriptor const &dvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n+*patchCoords, PATCH_TABLE *patchTable, CpuEvaluator const *instance=NULL, void\n+*deviceContext=NULL)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b8_\b8_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n+static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int\n+numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable,\n+CpuEvaluator const *instance=NULL, void *deviceContext=NULL)\n+Generic limit eval function. This function has a same signature as other device\n+kernels have so that ...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b8_\b2_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bS_\by_\bn_\bc_\bh_\br_\bo_\bn_\bi_\bz_\be\n+static void Synchronize(void *)\n+synchronize all asynchronous computation invoked on this device.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b2_\b2_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, STENCIL_TABLE\n+const *stencilTable, const CpuEvaluator *instance=NULL, void\n+*deviceContext=NULL)\n+Generic static eval stencils function. This function has a same signature as\n+other device kernels hav...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n+DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n+BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n+&dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER\n+*duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer,\n+BufferDescriptor const &dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n+*patchCoords, PATCH_TABLE *patchTable, CpuEvaluator const *instance=NULL, void\n+*deviceContext=NULL)\n+Generic limit eval function with derivatives. This function has a same\n+signature as other device kern...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b6_\b0_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const\n+&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n+*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n+BufferDescriptor const &dvDesc, STENCIL_TABLE const *stencilTable, const\n+CpuEvaluator *instance=NULL, void *deviceContext=NULL)\n+Generic static eval stencils function with derivatives. This function has a\n+same signature as other d...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b6_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd\n+Coordinates set on a patch table.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b4_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b6_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b1_\b2_\b7\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bf_\ba_\br\n-    * _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bc_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00785.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00785.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/far/topologyDescriptor.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/osd/clPatchTable.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -90,46 +90,46 @@\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> &#124;\n <a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">topologyDescriptor.h File Reference</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">clPatchTable.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00764_source.html\">../far/topologyRefiner.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00767_source.html\">../far/topologyRefinerFactory.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00749_source.html\">../far/error.h</a>&quot;</code><br />\n-<code>#include &lt;cassert&gt;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00755_source.html\">../osd/opencl.h</a>&quot;</code><br />\n+<code>#include &quot;../osd/nonCopyable.h&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a01489_source.html\">../osd/types.h</a>&quot;</code><br />\n+<code>#include &lt;vector&gt;</code><br />\n </div>\n <p><a href=\"a00785_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01105.html\">TopologyDescriptor</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">A simple reference to raw topology data for use with <a class=\"el\" href=\"a01117.html\" title=\"Factory for constructing TopologyRefiners from specific mesh classes.\">TopologyRefinerFactory</a>.  <a href=\"a01105.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01109.html\">TopologyDescriptor::FVarChannel</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01153.html\">CLPatchTable</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">CL patch table.  <a href=\"a01153.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7f420b72a822828cfa8b0561c695a5cc.html\">far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00785.html\">topologyDescriptor.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00785.html\">clPatchTable.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,30 +1,29 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-topologyDescriptor.h File Reference\n+clPatchTable.h File Reference\n #include \"../version.h\"\n-#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh\"\n-#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh\"\n-#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\be_\br_\br_\bo_\br_\b._\bh\"\n-#include <cassert>\n+#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bo_\bp_\be_\bn_\bc_\bl_\b._\bh\"\n+#include \"../osd/nonCopyable.h\"\n+#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n+#include <vector>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-struct \u00a0 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n-\u00a0        A simple reference to raw topology data for use with\n-         _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-struct \u00a0 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl\n+class \u00a0 _\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+\u00a0       CL patch table. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br\n \u00a0\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n+\u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bf_\ba_\br\n-    * _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bc_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00785.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00785.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,4 +1,3 @@\n var a00785 = [\n-    [\"TopologyDescriptor\", \"a01105.html\", \"a01105\"],\n-    [\"FVarChannel\", \"a01109.html\", \"a01109\"]\n+    [\"CLPatchTable\", \"a01153.html\", \"a01153\"]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00785_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00785_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/far/topologyDescriptor.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/osd/clPatchTable.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">topologyDescriptor.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">clPatchTable.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00785.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2014 DreamWorks Animation LLC.</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2015 Pixar</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -118,146 +118,125 @@\n <div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_FAR_TOPOLOGY_DESCRIPTOR_H</span></div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#define OPENSUBDIV3_FAR_TOPOLOGY_DESCRIPTOR_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span> </div>\n-<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span> </div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#include &quot;../far/topologyRefiner.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../far/topologyRefinerFactory.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../far/error.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span> </div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"preprocessor\">#include &lt;cassert&gt;</span></div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span> </div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span> </div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"keyword\">namespace </span>Far {</div>\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00049\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01105.html\">   49</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01105.html\">TopologyDescriptor</a> {</div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span> </div>\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01105.html#a29cac0aff7e6d15e55e9a8285799fe87\">   51</a></span>    <span class=\"keywordtype\">int</span>           <a class=\"code hl_variable\" href=\"a01105.html#a29cac0aff7e6d15e55e9a8285799fe87\">numVertices</a>,</div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01105.html#a523d3dc0299fc8921db1c26cc908f084\">   52</a></span>                  <a class=\"code hl_variable\" href=\"a01105.html#a523d3dc0299fc8921db1c26cc908f084\">numFaces</a>;</div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span> </div>\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01105.html#a79e9d33aa1203818c4b765007d10be63\">   54</a></span>    <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span>   * <a class=\"code hl_variable\" href=\"a01105.html#a79e9d33aa1203818c4b765007d10be63\">numVertsPerFace</a>;</div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01105.html#a3f2274c4d3dd54c4e24144e504972b34\">   55</a></span>    <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> <span class=\"keyword\">const</span> * <a class=\"code hl_variable\" href=\"a01105.html#a3f2274c4d3dd54c4e24144e504972b34\">vertIndicesPerFace</a>;</div>\n-<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span> </div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01105.html#ab8975c25a0f7d3a9f1fca83e267bc21e\">   57</a></span>    <span class=\"keywordtype\">int</span>           <a class=\"code hl_variable\" href=\"a01105.html#ab8975c25a0f7d3a9f1fca83e267bc21e\">numCreases</a>;</div>\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01105.html#a411a2a927b0270c9e4753dc219763ba5\">   58</a></span>    <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> <span class=\"keyword\">const</span> * <a class=\"code hl_variable\" href=\"a01105.html#a411a2a927b0270c9e4753dc219763ba5\">creaseVertexIndexPairs</a>;</div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01105.html#a8cd977015d3ffffc1146c5a4e17d65e0\">   59</a></span>    <span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * <a class=\"code hl_variable\" href=\"a01105.html#a8cd977015d3ffffc1146c5a4e17d65e0\">creaseWeights</a>;</div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span> </div>\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01105.html#a5ea0fa49c8b73deae98be1cdf67a48dd\">   61</a></span>    <span class=\"keywordtype\">int</span>           <a class=\"code hl_variable\" href=\"a01105.html#a5ea0fa49c8b73deae98be1cdf67a48dd\">numCorners</a>;</div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01105.html#a3bf794743edda29fbee0653b65b75ba4\">   62</a></span>    <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> <span class=\"keyword\">const</span> * <a class=\"code hl_variable\" href=\"a01105.html#a3bf794743edda29fbee0653b65b75ba4\">cornerVertexIndices</a>;</div>\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01105.html#a6d938f6b0a9ff0fa377ef675aa2c7fda\">   63</a></span>    <span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * <a class=\"code hl_variable\" href=\"a01105.html#a6d938f6b0a9ff0fa377ef675aa2c7fda\">cornerWeights</a>;</div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span>        </div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01105.html#aba3adf422acc0fc845afeba3a5df2b8f\">   65</a></span>    <span class=\"keywordtype\">int</span>           <a class=\"code hl_variable\" href=\"a01105.html#aba3adf422acc0fc845afeba3a5df2b8f\">numHoles</a>;</div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01105.html#a4fcd8e9a636d89045d364607f2b035a1\">   66</a></span>    <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> <span class=\"keyword\">const</span> * <a class=\"code hl_variable\" href=\"a01105.html#a4fcd8e9a636d89045d364607f2b035a1\">holeIndices</a>;</div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span> </div>\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01105.html#a75fa7c3542be9d51069674ed3f9d078c\">   68</a></span>    <span class=\"keywordtype\">bool</span>          <a class=\"code hl_variable\" href=\"a01105.html#a75fa7c3542be9d51069674ed3f9d078c\">isLeftHanded</a>;</div>\n+<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_CL_PATCH_TABLE_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_CL_PATCH_TABLE_H</span></div>\n+<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n+<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../osd/opencl.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../osd/nonCopyable.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &quot;../osd/types.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span> </div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span> </div>\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span><span class=\"keyword\">namespace </span>Far{</div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span>    <span class=\"keyword\">class </span>PatchTable;</div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span>};</div>\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span> </div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"keyword\">namespace </span>Osd {</div>\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00052\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01153.html\">   52</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01153.html\">CLPatchTable</a> : <span class=\"keyword\">private</span> NonCopyable&lt;CLPatchTable&gt; {</div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01153.html#a699b5e01d46024fce198a17e4527df05\">   55</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01153.html\">CLPatchTable</a> *<a class=\"code hl_function\" href=\"a01153.html#a699b5e01d46024fce198a17e4527df05\">Create</a>(<a class=\"code hl_class\" href=\"a00993.html\">Far::PatchTable</a> <span class=\"keyword\">const</span> *patchTable,</div>\n+<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span>                                cl_context clContext);</div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span> </div>\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00059\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01153.html#ad52ee9f29f56576ed9ab6c7e258e14ae\">   59</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01153.html\">CLPatchTable</a> * <a class=\"code hl_function\" href=\"a01153.html#ad52ee9f29f56576ed9ab6c7e258e14ae\">Create</a>(<a class=\"code hl_class\" href=\"a00993.html\">Far::PatchTable</a> <span class=\"keyword\">const</span> *patchTable,</div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span>                                 DEVICE_CONTEXT context) {</div>\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01153.html#a699b5e01d46024fce198a17e4527df05\">Create</a>(patchTable, context-&gt;GetContext());</div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span> </div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01153.html#a214a812acfe800e62954b45e2f2ee15d\">   65</a></span>    <a class=\"code hl_function\" href=\"a01153.html#a214a812acfe800e62954b45e2f2ee15d\">~CLPatchTable</a>();</div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span> </div>\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01153.html#a693751f5a6c94b134873f5c524fd999a\">   68</a></span>    cl_mem <a class=\"code hl_function\" href=\"a01153.html#a693751f5a6c94b134873f5c524fd999a\">GetPatchArrayBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01153.html#a7210a18569c2e0f0d728092835951c70\">_patchArrays</a>; }</div>\n <div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span> </div>\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span>    <span class=\"comment\">//  Face-varying data channel -- value indices correspond to vertex indices,</span></div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>    <span class=\"comment\">//  i.e. one for every vertex of every face:</span></div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>    <span class=\"comment\">//</span></div>\n-<div class=\"foldopen\" id=\"foldopen00073\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01109.html\">   73</a></span>    <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01109.html\">FVarChannel</a> {</div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span> </div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01109.html#aa0d5f7bfb1ba01e0cb648ff6fc249437\">   75</a></span>        <span class=\"keywordtype\">int</span>           <a class=\"code hl_variable\" href=\"a01109.html#aa0d5f7bfb1ba01e0cb648ff6fc249437\">numValues</a>;</div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01109.html#a123fe78d0e97dc72f5dfd9f27f93f699\">   76</a></span>        <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> <span class=\"keyword\">const</span> * <a class=\"code hl_variable\" href=\"a01109.html#a123fe78d0e97dc72f5dfd9f27f93f699\">valueIndices</a>;</div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span> </div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01109.html#a029d281df9f5dc8c00b52a35f8e0dfde\">   78</a></span>        <a class=\"code hl_function\" href=\"a01109.html#a029d281df9f5dc8c00b52a35f8e0dfde\">FVarChannel</a>() : <a class=\"code hl_variable\" href=\"a01109.html#aa0d5f7bfb1ba01e0cb648ff6fc249437\">numValues</a>(0), <a class=\"code hl_variable\" href=\"a01109.html#a123fe78d0e97dc72f5dfd9f27f93f699\">valueIndices</a>(0) { }</div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>    };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span>        </div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01105.html#ad17511fd9b0cea1b15b6bc31c0fc3e80\">   81</a></span>    <span class=\"keywordtype\">int</span>                 <a class=\"code hl_variable\" href=\"a01105.html#ad17511fd9b0cea1b15b6bc31c0fc3e80\">numFVarChannels</a>;</div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01105.html#a222697ec045f92879ae194eb2d92b526\">   82</a></span>    <a class=\"code hl_struct\" href=\"a01109.html\">FVarChannel</a> <span class=\"keyword\">const</span> * <a class=\"code hl_variable\" href=\"a01105.html#a222697ec045f92879ae194eb2d92b526\">fvarChannels</a>;</div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span> </div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01105.html#a8209f1b69b0162ee2e7065d91088113d\">   84</a></span>    <a class=\"code hl_function\" href=\"a01105.html#a8209f1b69b0162ee2e7065d91088113d\">TopologyDescriptor</a>();</div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span> </div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01153.html#abf29cd5f256ac52b7afdc6d87f915c4b\">   71</a></span>    cl_mem <a class=\"code hl_function\" href=\"a01153.html#abf29cd5f256ac52b7afdc6d87f915c4b\">GetPatchIndexBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01153.html#a56bd6edaa10c8b3c718265203430dcb9\">_indexBuffer</a>; }</div>\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span> </div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01153.html#a48b951719ff4fe3b94b20f997dc1d480\">   74</a></span>    cl_mem <a class=\"code hl_function\" href=\"a01153.html#a48b951719ff4fe3b94b20f997dc1d480\">GetPatchParamBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01153.html#a2d547b12237422c1035f5817e671155c\">_patchParamBuffer</a>; }</div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span> </div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01153.html#afc269c290092f9ae42a8e15cdb8cebd1\">   77</a></span>    cl_mem <a class=\"code hl_function\" href=\"a01153.html#afc269c290092f9ae42a8e15cdb8cebd1\">GetVaryingPatchArrayBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01153.html#afa7c9b6ac860cd6db8c1d8fc2aa7d63d\">_varyingPatchArrays</a>; }</div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span> </div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01153.html#a954d3789118ddd8dc6a5d17e20665b3c\">   80</a></span>    cl_mem <a class=\"code hl_function\" href=\"a01153.html#a954d3789118ddd8dc6a5d17e20665b3c\">GetVaryingPatchIndexBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01153.html#a82703277c754b05b7844b074b6a049c7\">_varyingIndexBuffer</a>; }</div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span> </div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01153.html#aa9be824a572029f3ec1e0c0d6cfecd77\">   83</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01153.html#aa9be824a572029f3ec1e0c0d6cfecd77\">GetNumFVarChannels</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (<span class=\"keywordtype\">int</span>)<a class=\"code hl_variable\" href=\"a01153.html#a0eece245e692b6640c527214e8df756d\">_fvarPatchArrays</a>.size(); }</div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span> </div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01153.html#a5956886f3c08959eade5d92c33136ad5\">   86</a></span>    cl_mem <a class=\"code hl_function\" href=\"a01153.html#a5956886f3c08959eade5d92c33136ad5\">GetFVarPatchArrayBuffer</a>(<span class=\"keywordtype\">int</span> fvarChannel = 0)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01153.html#a0eece245e692b6640c527214e8df756d\">_fvarPatchArrays</a>[fvarChannel]; }</div>\n <div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span> </div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span><span class=\"comment\">//  Forward declarations of required TopologyRefinerFactory&lt;TopologyDescriptor&gt;</span></div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span><span class=\"comment\">//  specializations (defined internally):</span></div>\n-<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span><span class=\"comment\">// @cond EXCLUDE_DOXYGEN</span></div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01153.html#a72aca2fb5c3e3f40ef9109a827c3b28f\">   89</a></span>    cl_mem <a class=\"code hl_function\" href=\"a01153.html#a72aca2fb5c3e3f40ef9109a827c3b28f\">GetFVarPatchIndexBuffer</a>(<span class=\"keywordtype\">int</span> fvarChannel = 0)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01153.html#af4ff1daf1bfd79ffa1cc26a79870b141\">_fvarIndexBuffers</a>[fvarChannel]; }</div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span> </div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01153.html#ad7ab95a3f811625b4d9ee2c1b6cac6af\">   92</a></span>    cl_mem <a class=\"code hl_function\" href=\"a01153.html#ad7ab95a3f811625b4d9ee2c1b6cac6af\">GetFVarPatchParamBuffer</a>(<span class=\"keywordtype\">int</span> fvarChannel = 0)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01153.html#af22c38b9eb5a91397769c40d36a303d3\">_fvarParamBuffers</a>[fvarChannel]; }</div>\n <div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span> </div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span><span class=\"keywordtype\">bool</span></div>\n-<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span><a class=\"code hl_function\" href=\"a01117.html#a4c574c458d080393a258f48e0ab20938\">TopologyRefinerFactory&lt;TopologyDescriptor&gt;::resizeComponentTopology</a>(</div>\n-<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>    <a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; refiner, <a class=\"code hl_struct\" href=\"a01105.html\">TopologyDescriptor</a> <span class=\"keyword\">const</span> &amp; desc);</div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span><span class=\"keyword\">protected</span>:</div>\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01153.html#ae69549a9493f9a51edfa7d11cec1d72f\">   95</a></span>    <a class=\"code hl_function\" href=\"a01153.html#ae69549a9493f9a51edfa7d11cec1d72f\">CLPatchTable</a>();</div>\n+<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span> </div>\n+<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01153.html#af15d0a0d1c0b5c1be71598ba95991ff7\">   97</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01153.html#af15d0a0d1c0b5c1be71598ba95991ff7\">allocate</a>(<a class=\"code hl_class\" href=\"a00993.html\">Far::PatchTable</a> <span class=\"keyword\">const</span> *patchTable, cl_context clContext);</div>\n <div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span> </div>\n-<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n-<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span><span class=\"keywordtype\">bool</span></div>\n-<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span><a class=\"code hl_function\" href=\"a01117.html#a098784adfa428c620663baf9c2d8e41a\">TopologyRefinerFactory&lt;TopologyDescriptor&gt;::assignComponentTopology</a>(</div>\n-<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span>    <a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; refiner, <a class=\"code hl_struct\" href=\"a01105.html\">TopologyDescriptor</a> <span class=\"keyword\">const</span> &amp; desc);</div>\n-<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span> </div>\n-<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n-<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span><span class=\"keywordtype\">bool</span></div>\n-<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span><a class=\"code hl_function\" href=\"a01117.html#a3df7295af055588a7b4f20d4da021ad1\">TopologyRefinerFactory&lt;TopologyDescriptor&gt;::assignComponentTags</a>(</div>\n-<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span>    <a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; refiner, <a class=\"code hl_struct\" href=\"a01105.html\">TopologyDescriptor</a> <span class=\"keyword\">const</span> &amp; desc);</div>\n-<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span> </div>\n-<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n-<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span><span class=\"keywordtype\">bool</span></div>\n-<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span><a class=\"code hl_function\" href=\"a01117.html#a6999e259e020bc687d09ef616ab3825b\">TopologyRefinerFactory&lt;TopologyDescriptor&gt;::assignFaceVaryingTopology</a>(</div>\n-<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span>    <a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; refiner, <a class=\"code hl_struct\" href=\"a01105.html\">TopologyDescriptor</a> <span class=\"keyword\">const</span> &amp; desc);</div>\n+<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01153.html#a7210a18569c2e0f0d728092835951c70\">   99</a></span>    cl_mem <a class=\"code hl_variable\" href=\"a01153.html#a7210a18569c2e0f0d728092835951c70\">_patchArrays</a>;</div>\n+<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01153.html#a56bd6edaa10c8b3c718265203430dcb9\">  100</a></span>    cl_mem <a class=\"code hl_variable\" href=\"a01153.html#a56bd6edaa10c8b3c718265203430dcb9\">_indexBuffer</a>;</div>\n+<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01153.html#a2d547b12237422c1035f5817e671155c\">  101</a></span>    cl_mem <a class=\"code hl_variable\" href=\"a01153.html#a2d547b12237422c1035f5817e671155c\">_patchParamBuffer</a>;</div>\n+<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span> </div>\n+<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01153.html#afa7c9b6ac860cd6db8c1d8fc2aa7d63d\">  103</a></span>    cl_mem <a class=\"code hl_variable\" href=\"a01153.html#afa7c9b6ac860cd6db8c1d8fc2aa7d63d\">_varyingPatchArrays</a>;</div>\n+<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01153.html#a82703277c754b05b7844b074b6a049c7\">  104</a></span>    cl_mem <a class=\"code hl_variable\" href=\"a01153.html#a82703277c754b05b7844b074b6a049c7\">_varyingIndexBuffer</a>;</div>\n+<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span> </div>\n+<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01153.html#a0eece245e692b6640c527214e8df756d\">  106</a></span>    std::vector&lt;cl_mem&gt; <a class=\"code hl_variable\" href=\"a01153.html#a0eece245e692b6640c527214e8df756d\">_fvarPatchArrays</a>;</div>\n+<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01153.html#af4ff1daf1bfd79ffa1cc26a79870b141\">  107</a></span>    std::vector&lt;cl_mem&gt; <a class=\"code hl_variable\" href=\"a01153.html#af4ff1daf1bfd79ffa1cc26a79870b141\">_fvarIndexBuffers</a>;</div>\n+<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01153.html#af22c38b9eb5a91397769c40d36a303d3\">  108</a></span>    std::vector&lt;cl_mem&gt; <a class=\"code hl_variable\" href=\"a01153.html#af22c38b9eb5a91397769c40d36a303d3\">_fvarParamBuffers</a>;</div>\n+<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span> </div>\n+<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span> </div>\n+<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span>}  <span class=\"comment\">// end namespace Osd</span></div>\n <div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span> </div>\n-<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n-<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span><span class=\"keywordtype\">void</span></div>\n-<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\">  116</span><a class=\"code hl_function\" href=\"a01117.html#a0c4c1d44df4c480bd0adfa9e86891b39\">TopologyRefinerFactory&lt;TopologyDescriptor&gt;::reportInvalidTopology</a>(</div>\n-<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span>    TopologyError errCode, <span class=\"keywordtype\">char</span> <span class=\"keyword\">const</span> * msg, <a class=\"code hl_struct\" href=\"a01105.html\">TopologyDescriptor</a> <span class=\"keyword\">const</span> &amp; desc);</div>\n+<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span>}  <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\">  116</span> </div>\n+<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span>}  <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n <div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\">  118</span> </div>\n-<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span><span class=\"comment\">// @endcond</span></div>\n-<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span> </div>\n-<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\">  121</span>} <span class=\"comment\">// end namespace Far</span></div>\n-<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span> </div>\n-<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span> </div>\n-<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_FAR_TOPOLOGY_DESCRIPTOR_H */</span><span class=\"preprocessor\"></span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa00908_html_ab34c85a48f33dfe7b8bf4d966fdebbf2\"><div class=\"ttname\"><a href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">OpenSubdiv::OPENSUBDIV_VERSION::Far::Index</a></div><div class=\"ttdeci\">Vtr::Index Index</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01486_source.html#l00041\">types.h:41</a></div></div>\n-<div class=\"ttc\" id=\"aa01105_html\"><div class=\"ttname\"><a href=\"a01105.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyDescriptor</a></div><div class=\"ttdoc\">A simple reference to raw topology data for use with TopologyRefinerFactory.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00785_source.html#l00049\">topologyDescriptor.h:49</a></div></div>\n-<div class=\"ttc\" id=\"aa01105_html_a222697ec045f92879ae194eb2d92b526\"><div class=\"ttname\"><a href=\"a01105.html#a222697ec045f92879ae194eb2d92b526\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyDescriptor::fvarChannels</a></div><div class=\"ttdeci\">FVarChannel const  * fvarChannels</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00785_source.html#l00082\">topologyDescriptor.h:82</a></div></div>\n-<div class=\"ttc\" id=\"aa01105_html_a29cac0aff7e6d15e55e9a8285799fe87\"><div class=\"ttname\"><a href=\"a01105.html#a29cac0aff7e6d15e55e9a8285799fe87\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyDescriptor::numVertices</a></div><div class=\"ttdeci\">int numVertices</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00785_source.html#l00051\">topologyDescriptor.h:51</a></div></div>\n-<div class=\"ttc\" id=\"aa01105_html_a3bf794743edda29fbee0653b65b75ba4\"><div class=\"ttname\"><a href=\"a01105.html#a3bf794743edda29fbee0653b65b75ba4\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyDescriptor::cornerVertexIndices</a></div><div class=\"ttdeci\">Index const  * cornerVertexIndices</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00785_source.html#l00062\">topologyDescriptor.h:62</a></div></div>\n-<div class=\"ttc\" id=\"aa01105_html_a3f2274c4d3dd54c4e24144e504972b34\"><div class=\"ttname\"><a href=\"a01105.html#a3f2274c4d3dd54c4e24144e504972b34\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyDescriptor::vertIndicesPerFace</a></div><div class=\"ttdeci\">Index const  * vertIndicesPerFace</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00785_source.html#l00055\">topologyDescriptor.h:55</a></div></div>\n-<div class=\"ttc\" id=\"aa01105_html_a411a2a927b0270c9e4753dc219763ba5\"><div class=\"ttname\"><a href=\"a01105.html#a411a2a927b0270c9e4753dc219763ba5\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyDescriptor::creaseVertexIndexPairs</a></div><div class=\"ttdeci\">Index const  * creaseVertexIndexPairs</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00785_source.html#l00058\">topologyDescriptor.h:58</a></div></div>\n-<div class=\"ttc\" id=\"aa01105_html_a4fcd8e9a636d89045d364607f2b035a1\"><div class=\"ttname\"><a href=\"a01105.html#a4fcd8e9a636d89045d364607f2b035a1\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyDescriptor::holeIndices</a></div><div class=\"ttdeci\">Index const  * holeIndices</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00785_source.html#l00066\">topologyDescriptor.h:66</a></div></div>\n-<div class=\"ttc\" id=\"aa01105_html_a523d3dc0299fc8921db1c26cc908f084\"><div class=\"ttname\"><a href=\"a01105.html#a523d3dc0299fc8921db1c26cc908f084\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyDescriptor::numFaces</a></div><div class=\"ttdeci\">int numFaces</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00785_source.html#l00052\">topologyDescriptor.h:52</a></div></div>\n-<div class=\"ttc\" id=\"aa01105_html_a5ea0fa49c8b73deae98be1cdf67a48dd\"><div class=\"ttname\"><a href=\"a01105.html#a5ea0fa49c8b73deae98be1cdf67a48dd\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyDescriptor::numCorners</a></div><div class=\"ttdeci\">int numCorners</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00785_source.html#l00061\">topologyDescriptor.h:61</a></div></div>\n-<div class=\"ttc\" id=\"aa01105_html_a6d938f6b0a9ff0fa377ef675aa2c7fda\"><div class=\"ttname\"><a href=\"a01105.html#a6d938f6b0a9ff0fa377ef675aa2c7fda\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyDescriptor::cornerWeights</a></div><div class=\"ttdeci\">float const  * cornerWeights</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00785_source.html#l00063\">topologyDescriptor.h:63</a></div></div>\n-<div class=\"ttc\" id=\"aa01105_html_a75fa7c3542be9d51069674ed3f9d078c\"><div class=\"ttname\"><a href=\"a01105.html#a75fa7c3542be9d51069674ed3f9d078c\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyDescriptor::isLeftHanded</a></div><div class=\"ttdeci\">bool isLeftHanded</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00785_source.html#l00068\">topologyDescriptor.h:68</a></div></div>\n-<div class=\"ttc\" id=\"aa01105_html_a79e9d33aa1203818c4b765007d10be63\"><div class=\"ttname\"><a href=\"a01105.html#a79e9d33aa1203818c4b765007d10be63\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyDescriptor::numVertsPerFace</a></div><div class=\"ttdeci\">int const  * numVertsPerFace</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00785_source.html#l00054\">topologyDescriptor.h:54</a></div></div>\n-<div class=\"ttc\" id=\"aa01105_html_a8209f1b69b0162ee2e7065d91088113d\"><div class=\"ttname\"><a href=\"a01105.html#a8209f1b69b0162ee2e7065d91088113d\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyDescriptor::TopologyDescriptor</a></div><div class=\"ttdeci\">TopologyDescriptor()</div></div>\n-<div class=\"ttc\" id=\"aa01105_html_a8cd977015d3ffffc1146c5a4e17d65e0\"><div class=\"ttname\"><a href=\"a01105.html#a8cd977015d3ffffc1146c5a4e17d65e0\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyDescriptor::creaseWeights</a></div><div class=\"ttdeci\">float const  * creaseWeights</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00785_source.html#l00059\">topologyDescriptor.h:59</a></div></div>\n-<div class=\"ttc\" id=\"aa01105_html_ab8975c25a0f7d3a9f1fca83e267bc21e\"><div class=\"ttname\"><a href=\"a01105.html#ab8975c25a0f7d3a9f1fca83e267bc21e\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyDescriptor::numCreases</a></div><div class=\"ttdeci\">int numCreases</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00785_source.html#l00057\">topologyDescriptor.h:57</a></div></div>\n-<div class=\"ttc\" id=\"aa01105_html_aba3adf422acc0fc845afeba3a5df2b8f\"><div class=\"ttname\"><a href=\"a01105.html#aba3adf422acc0fc845afeba3a5df2b8f\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyDescriptor::numHoles</a></div><div class=\"ttdeci\">int numHoles</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00785_source.html#l00065\">topologyDescriptor.h:65</a></div></div>\n-<div class=\"ttc\" id=\"aa01105_html_ad17511fd9b0cea1b15b6bc31c0fc3e80\"><div class=\"ttname\"><a href=\"a01105.html#ad17511fd9b0cea1b15b6bc31c0fc3e80\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyDescriptor::numFVarChannels</a></div><div class=\"ttdeci\">int numFVarChannels</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00785_source.html#l00081\">topologyDescriptor.h:81</a></div></div>\n-<div class=\"ttc\" id=\"aa01109_html\"><div class=\"ttname\"><a href=\"a01109.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyDescriptor::FVarChannel</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00785_source.html#l00073\">topologyDescriptor.h:73</a></div></div>\n-<div class=\"ttc\" id=\"aa01109_html_a029d281df9f5dc8c00b52a35f8e0dfde\"><div class=\"ttname\"><a href=\"a01109.html#a029d281df9f5dc8c00b52a35f8e0dfde\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyDescriptor::FVarChannel::FVarChannel</a></div><div class=\"ttdeci\">FVarChannel()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00785_source.html#l00078\">topologyDescriptor.h:78</a></div></div>\n-<div class=\"ttc\" id=\"aa01109_html_a123fe78d0e97dc72f5dfd9f27f93f699\"><div class=\"ttname\"><a href=\"a01109.html#a123fe78d0e97dc72f5dfd9f27f93f699\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyDescriptor::FVarChannel::valueIndices</a></div><div class=\"ttdeci\">Index const  * valueIndices</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00785_source.html#l00076\">topologyDescriptor.h:76</a></div></div>\n-<div class=\"ttc\" id=\"aa01109_html_aa0d5f7bfb1ba01e0cb648ff6fc249437\"><div class=\"ttname\"><a href=\"a01109.html#aa0d5f7bfb1ba01e0cb648ff6fc249437\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyDescriptor::FVarChannel::numValues</a></div><div class=\"ttdeci\">int numValues</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00785_source.html#l00075\">topologyDescriptor.h:75</a></div></div>\n-<div class=\"ttc\" id=\"aa01117_html_a098784adfa428c620663baf9c2d8e41a\"><div class=\"ttname\"><a href=\"a01117.html#a098784adfa428c620663baf9c2d8e41a\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::assignComponentTopology</a></div><div class=\"ttdeci\">static bool assignComponentTopology(TopologyRefiner &amp;newRefiner, MESH const &amp;mesh)</div><div class=\"ttdoc\">Specify the relationships between vertices, faces, etc. ie the face-vertices, vertex-faces,...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00767_source.html#l00621\">topologyRefinerFactory.h:621</a></div></div>\n-<div class=\"ttc\" id=\"aa01117_html_a0c4c1d44df4c480bd0adfa9e86891b39\"><div class=\"ttname\"><a href=\"a01117.html#a0c4c1d44df4c480bd0adfa9e86891b39\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::reportInvalidTopology</a></div><div class=\"ttdeci\">static void reportInvalidTopology(TopologyError errCode, char const *msg, MESH const &amp;mesh)</div><div class=\"ttdoc\">(Optional) Control run-time topology validation and error reporting</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00767_source.html#l00707\">topologyRefinerFactory.h:707</a></div></div>\n-<div class=\"ttc\" id=\"aa01117_html_a3df7295af055588a7b4f20d4da021ad1\"><div class=\"ttname\"><a href=\"a01117.html#a3df7295af055588a7b4f20d4da021ad1\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::assignComponentTags</a></div><div class=\"ttdeci\">static bool assignComponentTags(TopologyRefiner &amp;newRefiner, MESH const &amp;mesh)</div><div class=\"ttdoc\">(Optional) Specify edge or vertex sharpness or face holes</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00767_source.html#l00690\">topologyRefinerFactory.h:690</a></div></div>\n-<div class=\"ttc\" id=\"aa01117_html_a4c574c458d080393a258f48e0ab20938\"><div class=\"ttname\"><a href=\"a01117.html#a4c574c458d080393a258f48e0ab20938\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::resizeComponentTopology</a></div><div class=\"ttdeci\">static bool resizeComponentTopology(TopologyRefiner &amp;newRefiner, MESH const &amp;mesh)</div><div class=\"ttdoc\">Specify the number of vertices, faces, face-vertices, etc.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00767_source.html#l00580\">topologyRefinerFactory.h:580</a></div></div>\n-<div class=\"ttc\" id=\"aa01117_html_a6999e259e020bc687d09ef616ab3825b\"><div class=\"ttname\"><a href=\"a01117.html#a6999e259e020bc687d09ef616ab3825b\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::assignFaceVaryingTopology</a></div><div class=\"ttdeci\">static bool assignFaceVaryingTopology(TopologyRefiner &amp;newRefiner, MESH const &amp;mesh)</div><div class=\"ttdoc\">(Optional) Specify face-varying data per face</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00767_source.html#l00674\">topologyRefinerFactory.h:674</a></div></div>\n-<div class=\"ttc\" id=\"aa01121_html\"><div class=\"ttname\"><a href=\"a01121.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner</a></div><div class=\"ttdoc\">Stores topology data for a specified set of refinement options.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00051\">topologyRefiner.h:51</a></div></div>\n+<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_CL_PATCH_TABLE_H</span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa00993_html\"><div class=\"ttname\"><a href=\"a00993.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable</a></div><div class=\"ttdoc\">Container for arrays of parametric patches.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00842_source.html#l00055\">patchTable.h:55</a></div></div>\n+<div class=\"ttc\" id=\"aa01153_html\"><div class=\"ttname\"><a href=\"a01153.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLPatchTable</a></div><div class=\"ttdoc\">CL patch table.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00785_source.html#l00052\">clPatchTable.h:52</a></div></div>\n+<div class=\"ttc\" id=\"aa01153_html_a0eece245e692b6640c527214e8df756d\"><div class=\"ttname\"><a href=\"a01153.html#a0eece245e692b6640c527214e8df756d\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLPatchTable::_fvarPatchArrays</a></div><div class=\"ttdeci\">std::vector&lt; cl_mem &gt; _fvarPatchArrays</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00785_source.html#l00106\">clPatchTable.h:106</a></div></div>\n+<div class=\"ttc\" id=\"aa01153_html_a214a812acfe800e62954b45e2f2ee15d\"><div class=\"ttname\"><a href=\"a01153.html#a214a812acfe800e62954b45e2f2ee15d\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLPatchTable::~CLPatchTable</a></div><div class=\"ttdeci\">~CLPatchTable()</div><div class=\"ttdoc\">Destructor.</div></div>\n+<div class=\"ttc\" id=\"aa01153_html_a2d547b12237422c1035f5817e671155c\"><div class=\"ttname\"><a href=\"a01153.html#a2d547b12237422c1035f5817e671155c\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLPatchTable::_patchParamBuffer</a></div><div class=\"ttdeci\">cl_mem _patchParamBuffer</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00785_source.html#l00101\">clPatchTable.h:101</a></div></div>\n+<div class=\"ttc\" id=\"aa01153_html_a48b951719ff4fe3b94b20f997dc1d480\"><div class=\"ttname\"><a href=\"a01153.html#a48b951719ff4fe3b94b20f997dc1d480\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLPatchTable::GetPatchParamBuffer</a></div><div class=\"ttdeci\">cl_mem GetPatchParamBuffer() const</div><div class=\"ttdoc\">Returns the CL memory of the array of Osd::PatchParam buffer.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00785_source.html#l00074\">clPatchTable.h:74</a></div></div>\n+<div class=\"ttc\" id=\"aa01153_html_a56bd6edaa10c8b3c718265203430dcb9\"><div class=\"ttname\"><a href=\"a01153.html#a56bd6edaa10c8b3c718265203430dcb9\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLPatchTable::_indexBuffer</a></div><div class=\"ttdeci\">cl_mem _indexBuffer</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00785_source.html#l00100\">clPatchTable.h:100</a></div></div>\n+<div class=\"ttc\" id=\"aa01153_html_a5956886f3c08959eade5d92c33136ad5\"><div class=\"ttname\"><a href=\"a01153.html#a5956886f3c08959eade5d92c33136ad5\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLPatchTable::GetFVarPatchArrayBuffer</a></div><div class=\"ttdeci\">cl_mem GetFVarPatchArrayBuffer(int fvarChannel=0) const</div><div class=\"ttdoc\">Returns the CL memory of the array of Osd::PatchArray buffer.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00785_source.html#l00086\">clPatchTable.h:86</a></div></div>\n+<div class=\"ttc\" id=\"aa01153_html_a693751f5a6c94b134873f5c524fd999a\"><div class=\"ttname\"><a href=\"a01153.html#a693751f5a6c94b134873f5c524fd999a\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLPatchTable::GetPatchArrayBuffer</a></div><div class=\"ttdeci\">cl_mem GetPatchArrayBuffer() const</div><div class=\"ttdoc\">Returns the CL memory of the array of Osd::PatchArray buffer.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00785_source.html#l00068\">clPatchTable.h:68</a></div></div>\n+<div class=\"ttc\" id=\"aa01153_html_a699b5e01d46024fce198a17e4527df05\"><div class=\"ttname\"><a href=\"a01153.html#a699b5e01d46024fce198a17e4527df05\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLPatchTable::Create</a></div><div class=\"ttdeci\">static CLPatchTable * Create(Far::PatchTable const *patchTable, cl_context clContext)</div><div class=\"ttdoc\">Creator. Returns NULL if error.</div></div>\n+<div class=\"ttc\" id=\"aa01153_html_a7210a18569c2e0f0d728092835951c70\"><div class=\"ttname\"><a href=\"a01153.html#a7210a18569c2e0f0d728092835951c70\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLPatchTable::_patchArrays</a></div><div class=\"ttdeci\">cl_mem _patchArrays</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00785_source.html#l00099\">clPatchTable.h:99</a></div></div>\n+<div class=\"ttc\" id=\"aa01153_html_a72aca2fb5c3e3f40ef9109a827c3b28f\"><div class=\"ttname\"><a href=\"a01153.html#a72aca2fb5c3e3f40ef9109a827c3b28f\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLPatchTable::GetFVarPatchIndexBuffer</a></div><div class=\"ttdeci\">cl_mem GetFVarPatchIndexBuffer(int fvarChannel=0) const</div><div class=\"ttdoc\">Returns the CL memory of the face-varying control vertices.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00785_source.html#l00089\">clPatchTable.h:89</a></div></div>\n+<div class=\"ttc\" id=\"aa01153_html_a82703277c754b05b7844b074b6a049c7\"><div class=\"ttname\"><a href=\"a01153.html#a82703277c754b05b7844b074b6a049c7\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLPatchTable::_varyingIndexBuffer</a></div><div class=\"ttdeci\">cl_mem _varyingIndexBuffer</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00785_source.html#l00104\">clPatchTable.h:104</a></div></div>\n+<div class=\"ttc\" id=\"aa01153_html_a954d3789118ddd8dc6a5d17e20665b3c\"><div class=\"ttname\"><a href=\"a01153.html#a954d3789118ddd8dc6a5d17e20665b3c\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLPatchTable::GetVaryingPatchIndexBuffer</a></div><div class=\"ttdeci\">cl_mem GetVaryingPatchIndexBuffer() const</div><div class=\"ttdoc\">Returns the CL memory of the varying control vertices.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00785_source.html#l00080\">clPatchTable.h:80</a></div></div>\n+<div class=\"ttc\" id=\"aa01153_html_aa9be824a572029f3ec1e0c0d6cfecd77\"><div class=\"ttname\"><a href=\"a01153.html#aa9be824a572029f3ec1e0c0d6cfecd77\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLPatchTable::GetNumFVarChannels</a></div><div class=\"ttdeci\">int GetNumFVarChannels() const</div><div class=\"ttdoc\">Returns the number of face-varying channel buffers.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00785_source.html#l00083\">clPatchTable.h:83</a></div></div>\n+<div class=\"ttc\" id=\"aa01153_html_abf29cd5f256ac52b7afdc6d87f915c4b\"><div class=\"ttname\"><a href=\"a01153.html#abf29cd5f256ac52b7afdc6d87f915c4b\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLPatchTable::GetPatchIndexBuffer</a></div><div class=\"ttdeci\">cl_mem GetPatchIndexBuffer() const</div><div class=\"ttdoc\">Returns the CL memory of the patch control vertices.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00785_source.html#l00071\">clPatchTable.h:71</a></div></div>\n+<div class=\"ttc\" id=\"aa01153_html_ad52ee9f29f56576ed9ab6c7e258e14ae\"><div class=\"ttname\"><a href=\"a01153.html#ad52ee9f29f56576ed9ab6c7e258e14ae\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLPatchTable::Create</a></div><div class=\"ttdeci\">static CLPatchTable * Create(Far::PatchTable const *patchTable, DEVICE_CONTEXT context)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00785_source.html#l00059\">clPatchTable.h:59</a></div></div>\n+<div class=\"ttc\" id=\"aa01153_html_ad7ab95a3f811625b4d9ee2c1b6cac6af\"><div class=\"ttname\"><a href=\"a01153.html#ad7ab95a3f811625b4d9ee2c1b6cac6af\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLPatchTable::GetFVarPatchParamBuffer</a></div><div class=\"ttdeci\">cl_mem GetFVarPatchParamBuffer(int fvarChannel=0) const</div><div class=\"ttdoc\">Returns the CL memory of the array of Osd::PatchParam buffer.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00785_source.html#l00092\">clPatchTable.h:92</a></div></div>\n+<div class=\"ttc\" id=\"aa01153_html_ae69549a9493f9a51edfa7d11cec1d72f\"><div class=\"ttname\"><a href=\"a01153.html#ae69549a9493f9a51edfa7d11cec1d72f\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLPatchTable::CLPatchTable</a></div><div class=\"ttdeci\">CLPatchTable()</div></div>\n+<div class=\"ttc\" id=\"aa01153_html_af15d0a0d1c0b5c1be71598ba95991ff7\"><div class=\"ttname\"><a href=\"a01153.html#af15d0a0d1c0b5c1be71598ba95991ff7\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLPatchTable::allocate</a></div><div class=\"ttdeci\">bool allocate(Far::PatchTable const *patchTable, cl_context clContext)</div></div>\n+<div class=\"ttc\" id=\"aa01153_html_af22c38b9eb5a91397769c40d36a303d3\"><div class=\"ttname\"><a href=\"a01153.html#af22c38b9eb5a91397769c40d36a303d3\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLPatchTable::_fvarParamBuffers</a></div><div class=\"ttdeci\">std::vector&lt; cl_mem &gt; _fvarParamBuffers</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00785_source.html#l00108\">clPatchTable.h:108</a></div></div>\n+<div class=\"ttc\" id=\"aa01153_html_af4ff1daf1bfd79ffa1cc26a79870b141\"><div class=\"ttname\"><a href=\"a01153.html#af4ff1daf1bfd79ffa1cc26a79870b141\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLPatchTable::_fvarIndexBuffers</a></div><div class=\"ttdeci\">std::vector&lt; cl_mem &gt; _fvarIndexBuffers</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00785_source.html#l00107\">clPatchTable.h:107</a></div></div>\n+<div class=\"ttc\" id=\"aa01153_html_afa7c9b6ac860cd6db8c1d8fc2aa7d63d\"><div class=\"ttname\"><a href=\"a01153.html#afa7c9b6ac860cd6db8c1d8fc2aa7d63d\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLPatchTable::_varyingPatchArrays</a></div><div class=\"ttdeci\">cl_mem _varyingPatchArrays</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00785_source.html#l00103\">clPatchTable.h:103</a></div></div>\n+<div class=\"ttc\" id=\"aa01153_html_afc269c290092f9ae42a8e15cdb8cebd1\"><div class=\"ttname\"><a href=\"a01153.html#afc269c290092f9ae42a8e15cdb8cebd1\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLPatchTable::GetVaryingPatchArrayBuffer</a></div><div class=\"ttdeci\">cl_mem GetVaryingPatchArrayBuffer() const</div><div class=\"ttdoc\">Returns the CL memory of the array of Osd::PatchArray buffer.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00785_source.html#l00077\">clPatchTable.h:77</a></div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7f420b72a822828cfa8b0561c695a5cc.html\">far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00785.html\">topologyDescriptor.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00785.html\">clPatchTable.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-topologyDescriptor.h\n+clPatchTable.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2014 DreamWorks Animation LLC.\n+2// Copyright 2015 Pixar\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -23,208 +23,175 @@\n 17//\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n-24#ifndef OPENSUBDIV3_FAR_TOPOLOGY_DESCRIPTOR_H\n-25#define OPENSUBDIV3_FAR_TOPOLOGY_DESCRIPTOR_H\n-26\n-27#include \"../version.h\"\n-28\n-29#include \"../far/topologyRefiner.h\"\n-30#include \"../far/topologyRefinerFactory.h\"\n-31#include \"../far/error.h\"\n-32\n-33#include <cassert>\n-34\n-35namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-36namespace OPENSUBDIV_VERSION {\n-37\n-38namespace Far {\n-39\n-_\b4_\b9struct _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br {\n-50\n-_\b5_\b1 int _\bn_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs,\n-_\b5_\b2 _\bn_\bu_\bm_\bF_\ba_\bc_\be_\bs;\n-53\n-_\b5_\b4 int const * _\bn_\bu_\bm_\bV_\be_\br_\bt_\bs_\bP_\be_\br_\bF_\ba_\bc_\be;\n-_\b5_\b5 _\bI_\bn_\bd_\be_\bx const * _\bv_\be_\br_\bt_\bI_\bn_\bd_\bi_\bc_\be_\bs_\bP_\be_\br_\bF_\ba_\bc_\be;\n-56\n-_\b5_\b7 int _\bn_\bu_\bm_\bC_\br_\be_\ba_\bs_\be_\bs;\n-_\b5_\b8 _\bI_\bn_\bd_\be_\bx const * _\bc_\br_\be_\ba_\bs_\be_\bV_\be_\br_\bt_\be_\bx_\bI_\bn_\bd_\be_\bx_\bP_\ba_\bi_\br_\bs;\n-_\b5_\b9 float const * _\bc_\br_\be_\ba_\bs_\be_\bW_\be_\bi_\bg_\bh_\bt_\bs;\n-60\n-_\b6_\b1 int _\bn_\bu_\bm_\bC_\bo_\br_\bn_\be_\br_\bs;\n-_\b6_\b2 _\bI_\bn_\bd_\be_\bx const * _\bc_\bo_\br_\bn_\be_\br_\bV_\be_\br_\bt_\be_\bx_\bI_\bn_\bd_\bi_\bc_\be_\bs;\n-_\b6_\b3 float const * _\bc_\bo_\br_\bn_\be_\br_\bW_\be_\bi_\bg_\bh_\bt_\bs;\n-64\n-_\b6_\b5 int _\bn_\bu_\bm_\bH_\bo_\bl_\be_\bs;\n-_\b6_\b6 _\bI_\bn_\bd_\be_\bx const * _\bh_\bo_\bl_\be_\bI_\bn_\bd_\bi_\bc_\be_\bs;\n-67\n-_\b6_\b8 bool _\bi_\bs_\bL_\be_\bf_\bt_\bH_\ba_\bn_\bd_\be_\bd;\n+24\n+25#ifndef OPENSUBDIV3_OSD_CL_PATCH_TABLE_H\n+26#define OPENSUBDIV3_OSD_CL_PATCH_TABLE_H\n+27\n+28#include \"../version.h\"\n+29\n+30#include \"../osd/opencl.h\"\n+31#include \"../osd/nonCopyable.h\"\n+32#include \"../osd/types.h\"\n+33\n+34#include <vector>\n+35\n+36namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+37namespace OPENSUBDIV_VERSION {\n+38\n+39namespace Far{\n+40 class PatchTable;\n+41};\n+42\n+43namespace Osd {\n+44\n+_\b5_\b2class _\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be : private NonCopyable<CLPatchTable> {\n+53public:\n+_\b5_\b5 static _\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be *_\bC_\br_\be_\ba_\bt_\be(_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be const *patchTable,\n+56 cl_context clContext);\n+57\n+58 template <typename DEVICE_CONTEXT>\n+_\b5_\b9 static _\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be * _\bC_\br_\be_\ba_\bt_\be(_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be const *patchTable,\n+60 DEVICE_CONTEXT context) {\n+61 return _\bC_\br_\be_\ba_\bt_\be(patchTable, context->GetContext());\n+62 }\n+63\n+_\b6_\b5 _\b~_\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be();\n+66\n+_\b6_\b8 cl_mem _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bB_\bu_\bf_\bf_\be_\br() const { return _\b__\bp_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs; }\n 69\n-70 // Face-varying data channel -- value indices correspond to vertex indices,\n-71 // i.e. one for every vertex of every face:\n-72 //\n-_\b7_\b3 struct _\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl {\n-74\n-_\b7_\b5 int _\bn_\bu_\bm_\bV_\ba_\bl_\bu_\be_\bs;\n-_\b7_\b6 _\bI_\bn_\bd_\be_\bx const * _\bv_\ba_\bl_\bu_\be_\bI_\bn_\bd_\bi_\bc_\be_\bs;\n-77\n-_\b7_\b8 _\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl() : _\bn_\bu_\bm_\bV_\ba_\bl_\bu_\be_\bs(0), _\bv_\ba_\bl_\bu_\be_\bI_\bn_\bd_\bi_\bc_\be_\bs(0) { }\n-79 };\n-80\n-_\b8_\b1 int _\bn_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs;\n-_\b8_\b2 _\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl const * _\bf_\bv_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs;\n-83\n-_\b8_\b4 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br();\n-85};\n-86\n+_\b7_\b1 cl_mem _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br() const { return _\b__\bi_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br; }\n+72\n+_\b7_\b4 cl_mem _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br() const { return _\b__\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br; }\n+75\n+_\b7_\b7 cl_mem _\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bB_\bu_\bf_\bf_\be_\br() const { return _\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs; }\n+78\n+_\b8_\b0 cl_mem _\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br() const { return _\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br; }\n+81\n+_\b8_\b3 int _\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs() const { return (int)_\b__\bf_\bv_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs.size(); }\n+84\n+_\b8_\b6 cl_mem _\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bB_\bu_\bf_\bf_\be_\br(int fvarChannel = 0) const { return\n+_\b__\bf_\bv_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs[fvarChannel]; }\n 87\n-88//\n-89// Forward declarations of required\n-TopologyRefinerFactory<TopologyDescriptor>\n-90// specializations (defined internally):\n-91//\n-92// @cond EXCLUDE_DOXYGEN\n+_\b8_\b9 cl_mem _\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br(int fvarChannel = 0) const { return\n+_\b__\bf_\bv_\ba_\br_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bs[fvarChannel]; }\n+90\n+_\b9_\b2 cl_mem _\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br(int fvarChannel = 0) const { return\n+_\b__\bf_\bv_\ba_\br_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br_\bs[fvarChannel]; }\n 93\n-94template <>\n-95bool\n-96_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b>_\b:_\b:_\br_\be_\bs_\bi_\bz_\be_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by(\n-97 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & refiner, _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const & desc);\n+94protected:\n+_\b9_\b5 _\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be();\n+96\n+_\b9_\b7 bool _\ba_\bl_\bl_\bo_\bc_\ba_\bt_\be(_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be const *patchTable, cl_context clContext);\n 98\n-99template <>\n-100bool\n-101_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by(\n-102 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & refiner, _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const & desc);\n-103\n-104template <>\n-105bool\n-106_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\bT_\ba_\bg_\bs(\n-107 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & refiner, _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const & desc);\n-108\n-109template <>\n-110bool\n-111_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by(\n-112 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & refiner, _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const & desc);\n+_\b9_\b9 cl_mem _\b__\bp_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs;\n+_\b1_\b0_\b0 cl_mem _\b__\bi_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br;\n+_\b1_\b0_\b1 cl_mem _\b__\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br;\n+102\n+_\b1_\b0_\b3 cl_mem _\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs;\n+_\b1_\b0_\b4 cl_mem _\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br;\n+105\n+_\b1_\b0_\b6 std::vector<cl_mem> _\b__\bf_\bv_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs;\n+_\b1_\b0_\b7 std::vector<cl_mem> _\b__\bf_\bv_\ba_\br_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bs;\n+_\b1_\b0_\b8 std::vector<cl_mem> _\b__\bf_\bv_\ba_\br_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br_\bs;\n+109\n+110};\n+111\n+112} // end namespace Osd\n 113\n-114template <>\n-115void\n-116_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b>_\b:_\b:_\br_\be_\bp_\bo_\br_\bt_\bI_\bn_\bv_\ba_\bl_\bi_\bd_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by(\n-117 TopologyError errCode, char const * msg, _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const & desc);\n+114} // end namespace OPENSUBDIV_VERSION\n+115using namespace OPENSUBDIV_VERSION;\n+116\n+117} // end namespace OpenSubdiv\n 118\n-119// @endcond\n-120\n-121} // end namespace Far\n-122\n-123} // end namespace OPENSUBDIV_VERSION\n-124using namespace OPENSUBDIV_VERSION;\n-125} // end namespace OpenSubdiv\n-126\n-127#endif /* OPENSUBDIV3_FAR_TOPOLOGY_DESCRIPTOR_H */\n+119#endif // OPENSUBDIV3_OSD_CL_PATCH_TABLE_H\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx\n-Vtr::Index Index\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b4_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n-A simple reference to raw topology data for use with TopologyRefinerFactory.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b4_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bf_\bv_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs\n-FVarChannel const * fvarChannels\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b8_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bn_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n-int numVertices\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b5_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bc_\bo_\br_\bn_\be_\br_\bV_\be_\br_\bt_\be_\bx_\bI_\bn_\bd_\bi_\bc_\be_\bs\n-Index const * cornerVertexIndices\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b6_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bv_\be_\br_\bt_\bI_\bn_\bd_\bi_\bc_\be_\bs_\bP_\be_\br_\bF_\ba_\bc_\be\n-Index const * vertIndicesPerFace\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b5_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bc_\br_\be_\ba_\bs_\be_\bV_\be_\br_\bt_\be_\bx_\bI_\bn_\bd_\be_\bx_\bP_\ba_\bi_\br_\bs\n-Index const * creaseVertexIndexPairs\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b5_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bh_\bo_\bl_\be_\bI_\bn_\bd_\bi_\bc_\be_\bs\n-Index const * holeIndices\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b6_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bn_\bu_\bm_\bF_\ba_\bc_\be_\bs\n-int numFaces\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b5_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bn_\bu_\bm_\bC_\bo_\br_\bn_\be_\br_\bs\n-int numCorners\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b6_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bc_\bo_\br_\bn_\be_\br_\bW_\be_\bi_\bg_\bh_\bt_\bs\n-float const * cornerWeights\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b6_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bi_\bs_\bL_\be_\bf_\bt_\bH_\ba_\bn_\bd_\be_\bd\n-bool isLeftHanded\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b6_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bn_\bu_\bm_\bV_\be_\br_\bt_\bs_\bP_\be_\br_\bF_\ba_\bc_\be\n-int const * numVertsPerFace\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b5_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n-TopologyDescriptor()\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bc_\br_\be_\ba_\bs_\be_\bW_\be_\bi_\bg_\bh_\bt_\bs\n-float const * creaseWeights\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b5_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bn_\bu_\bm_\bC_\br_\be_\ba_\bs_\be_\bs\n-int numCreases\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b5_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bn_\bu_\bm_\bH_\bo_\bl_\be_\bs\n-int numHoles\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b6_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bn_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs\n-int numFVarChannels\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b8_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b7_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\b:_\b:\n-_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl\n-FVarChannel()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b7_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\b:_\b:\n-_\bv_\ba_\bl_\bu_\be_\bI_\bn_\bd_\bi_\bc_\be_\bs\n-Index const * valueIndices\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b7_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\b:_\b:_\bn_\bu_\bm_\bV_\ba_\bl_\bu_\be_\bs\n-int numValues\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b7_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n-_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by\n-static bool assignComponentTopology(TopologyRefiner &newRefiner, MESH const\n-&mesh)\n-Specify the relationships between vertices, faces, etc. ie the face-vertices,\n-vertex-faces,...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b6_\b2_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n-_\br_\be_\bp_\bo_\br_\bt_\bI_\bn_\bv_\ba_\bl_\bi_\bd_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by\n-static void reportInvalidTopology(TopologyError errCode, char const *msg, MESH\n-const &mesh)\n-(Optional) Control run-time topology validation and error reporting\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b7_\b0_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n-_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\bT_\ba_\bg_\bs\n-static bool assignComponentTags(TopologyRefiner &newRefiner, MESH const &mesh)\n-(Optional) Specify edge or vertex sharpness or face holes\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b6_\b9_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n-_\br_\be_\bs_\bi_\bz_\be_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by\n-static bool resizeComponentTopology(TopologyRefiner &newRefiner, MESH const\n-&mesh)\n-Specify the number of vertices, faces, face-vertices, etc.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b8_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n-_\ba_\bs_\bs_\bi_\bg_\bn_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by\n-static bool assignFaceVaryingTopology(TopologyRefiner &newRefiner, MESH const\n-&mesh)\n-(Optional) Specify face-varying data per face\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b6_\b7_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br\n-Stores topology data for a specified set of refinement options.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b5_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+Container for arrays of parametric patches.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+CL patch table.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bf_\bv_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs\n+std::vector< cl_mem > _fvarPatchArrays\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b0_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b~_\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+~CLPatchTable()\n+Destructor.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br\n+cl_mem _patchParamBuffer\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b0_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br\n+cl_mem GetPatchParamBuffer() const\n+Returns the CL memory of the array of Osd::PatchParam buffer.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bi_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+cl_mem _indexBuffer\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b0_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bB_\bu_\bf_\bf_\be_\br\n+cl_mem GetFVarPatchArrayBuffer(int fvarChannel=0) const\n+Returns the CL memory of the array of Osd::PatchArray buffer.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b8_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bB_\bu_\bf_\bf_\be_\br\n+cl_mem GetPatchArrayBuffer() const\n+Returns the CL memory of the array of Osd::PatchArray buffer.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n+static CLPatchTable * Create(Far::PatchTable const *patchTable, cl_context\n+clContext)\n+Creator. Returns NULL if error.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bp_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs\n+cl_mem _patchArrays\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b9_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+cl_mem GetFVarPatchIndexBuffer(int fvarChannel=0) const\n+Returns the CL memory of the face-varying control vertices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b8_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+cl_mem _varyingIndexBuffer\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b0_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+cl_mem GetVaryingPatchIndexBuffer() const\n+Returns the CL memory of the varying control vertices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b8_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs\n+int GetNumFVarChannels() const\n+Returns the number of face-varying channel buffers.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b8_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+cl_mem GetPatchIndexBuffer() const\n+Returns the CL memory of the patch control vertices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n+static CLPatchTable * Create(Far::PatchTable const *patchTable, DEVICE_CONTEXT\n+context)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br\n+cl_mem GetFVarPatchParamBuffer(int fvarChannel=0) const\n+Returns the CL memory of the array of Osd::PatchParam buffer.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b9_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+CLPatchTable()\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\ba_\bl_\bl_\bo_\bc_\ba_\bt_\be\n+bool allocate(Far::PatchTable const *patchTable, cl_context clContext)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bf_\bv_\ba_\br_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br_\bs\n+std::vector< cl_mem > _fvarParamBuffers\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b0_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bf_\bv_\ba_\br_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bs\n+std::vector< cl_mem > _fvarIndexBuffers\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b0_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs\n+cl_mem _varyingPatchArrays\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b0_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bB_\bu_\bf_\bf_\be_\br\n+cl_mem GetVaryingPatchArrayBuffer() const\n+Returns the CL memory of the array of Osd::PatchArray buffer.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b7\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bf_\ba_\br\n-    * _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bc_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00788.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00788.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/glPatchTable.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/osd/d3d11VertexBuffer.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -90,45 +90,40 @@\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> &#124;\n <a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">glPatchTable.h File Reference</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">d3d11VertexBuffer.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &quot;../osd/nonCopyable.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00842_source.html\">../osd/opengl.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a01489_source.html\">../osd/types.h</a>&quot;</code><br />\n-<code>#include &lt;vector&gt;</code><br />\n </div>\n <p><a href=\"a00788_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01237.html\">GLPatchTable</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01213.html\">D3D11VertexBuffer</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Concrete vertex buffer class for DirectX subdivision and DirectX drawing.  <a href=\"a01213.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far</a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00788.html\">glPatchTable.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00788.html\">d3d11VertexBuffer.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,28 +1,24 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-glPatchTable.h File Reference\n+d3d11VertexBuffer.h File Reference\n #include \"../version.h\"\n-#include \"../osd/nonCopyable.h\"\n-#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bo_\bp_\be_\bn_\bg_\bl_\b._\bh\"\n-#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n-#include <vector>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+class \u00a0 _\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+\u00a0       Concrete vertex buffer class for DirectX subdivision and DirectX\n+        drawing. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br\n-\u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n     * _\bo_\bs_\bd\n-    * _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh\n+    * _\bd_\b3_\bd_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00788.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00788.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,3 +1,3 @@\n var a00788 = [\n-    [\"GLPatchTable\", \"a01237.html\", \"a01237\"]\n+    [\"D3D11VertexBuffer\", \"a01213.html\", \"a01213\"]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00788_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00788_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/glPatchTable.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/osd/d3d11VertexBuffer.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">glPatchTable.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">d3d11VertexBuffer.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00788.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2015 Pixar</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2013 Pixar</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -119,200 +119,93 @@\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_GL_PATCH_TABLE_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_GL_PATCH_TABLE_H</span></div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_D3D11_VERTEX_BUFFER_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_D3D11_VERTEX_BUFFER_H</span></div>\n <div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n <div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n <div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../osd/nonCopyable.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../osd/opengl.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &quot;../osd/types.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span> </div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span> </div>\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span><span class=\"keyword\">namespace </span>Far{</div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span>    <span class=\"keyword\">class </span>PatchTable;</div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span>};</div>\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span> </div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"keyword\">namespace </span>Osd {</div>\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00045\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html\">   45</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01237.html\">GLPatchTable</a> : <span class=\"keyword\">private</span> NonCopyable&lt;GLPatchTable&gt; {</div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#a02af2ea2e9328a776b5b0bb3edf88864\">   47</a></span>    <span class=\"keyword\">typedef</span> GLuint <a class=\"code hl_typedef\" href=\"a01237.html#a02af2ea2e9328a776b5b0bb3edf88864\">VertexBufferBinding</a>;</div>\n-<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span> </div>\n-<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#a27e3bbc29608fb5ded788e1a6d068da7\">   49</a></span>    <a class=\"code hl_function\" href=\"a01237.html#a27e3bbc29608fb5ded788e1a6d068da7\">~GLPatchTable</a>();</div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span> </div>\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#a406bb6da6d3805b2b3d8e462ba4d1a47\">   51</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01237.html\">GLPatchTable</a> *<a class=\"code hl_function\" href=\"a01237.html#a406bb6da6d3805b2b3d8e462ba4d1a47\">Create</a>(<a class=\"code hl_class\" href=\"a00993.html\">Far::PatchTable</a> <span class=\"keyword\">const</span> *farPatchTable,</div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span>                                <span class=\"keywordtype\">void</span> *deviceContext = NULL);</div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00055\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#a18e3d09b0c7b7552f8e419e36788166a\">   55</a></span>    <a class=\"code hl_typedef\" href=\"a00912.html#a98098cd229f60d2397d84a76fe654a31\">PatchArrayVector</a> <span class=\"keyword\">const</span> &amp;<a class=\"code hl_function\" href=\"a01237.html#a18e3d09b0c7b7552f8e419e36788166a\">GetPatchArrays</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01237.html#a5dfb6b58580f2dec58e9b5bfdb4ed9f1\">_patchArrays</a>;</div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00060\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#aa22b6cb3f4bbb8edaaa553389e080e40\">   60</a></span>    GLuint <a class=\"code hl_function\" href=\"a01237.html#aa22b6cb3f4bbb8edaaa553389e080e40\">GetPatchIndexBuffer</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01237.html#a60ed91ae6ab2018bcc0d4f3db4f0d2e9\">_patchIndexBuffer</a>;</div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00065\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#a645a6698ee27f028eb10e8a43044bf7f\">   65</a></span>    GLuint <a class=\"code hl_function\" href=\"a01237.html#a645a6698ee27f028eb10e8a43044bf7f\">GetPatchParamBuffer</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01237.html#afcbe2b12b775d32f606ee7e347dba51a\">_patchParamBuffer</a>;</div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span>    }</div>\n-</div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"keyword\">struct </span>ID3D11Buffer;</div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"keyword\">struct </span>ID3D11Device;</div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"keyword\">struct </span>ID3D11DeviceContext;</div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"keyword\">struct </span>ID3D11UnorderedAccessView;</div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span> </div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span> </div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"keyword\">namespace </span>Osd {</div>\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00046\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01213.html\">   46</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01213.html\">D3D11VertexBuffer</a> {</div>\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01213.html#a915a9d78d36f58b1750237ae40555029\">   49</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01213.html\">D3D11VertexBuffer</a> * <a class=\"code hl_function\" href=\"a01213.html#a915a9d78d36f58b1750237ae40555029\">Create</a>(<span class=\"keywordtype\">int</span> numElements, <span class=\"keywordtype\">int</span> numVertices,</div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span>                                      ID3D11DeviceContext *deviceContext);</div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span> </div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01213.html#ad9941ba7019b0fd8aad6e9321d91c26a\">   53</a></span>    <span class=\"keyword\">virtual</span> <a class=\"code hl_function\" href=\"a01213.html#ad9941ba7019b0fd8aad6e9321d91c26a\">~D3D11VertexBuffer</a>();</div>\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span> </div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01213.html#a8f44858290b870c214ee24afead3e9c3\">   57</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01213.html#a8f44858290b870c214ee24afead3e9c3\">UpdateData</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <span class=\"keywordtype\">int</span> startVertex, <span class=\"keywordtype\">int</span> numVertices,</div>\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span>                    ID3D11DeviceContext *deviceContext);</div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span> </div>\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01213.html#a77cee40767fd4936f20a8f9d9d9ea625\">   61</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01213.html#a77cee40767fd4936f20a8f9d9d9ea625\">GetNumElements</a>() <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span> </div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01213.html#aaf4a32b8a414eff77000c584c2015cb7\">   64</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01213.html#aaf4a32b8a414eff77000c584c2015cb7\">GetNumVertices</a>() <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span> </div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01213.html#ac86f03cfaa5678c28ffce2b69e3fb5bc\">   67</a></span>    ID3D11Buffer *<a class=\"code hl_function\" href=\"a01213.html#ac86f03cfaa5678c28ffce2b69e3fb5bc\">BindD3D11Buffer</a>(ID3D11DeviceContext *deviceContext);</div>\n <div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span> </div>\n <div class=\"foldopen\" id=\"foldopen00070\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#ac1366e74b619cfb89c4c2df52b7aa697\">   70</a></span>    GLuint <a class=\"code hl_function\" href=\"a01237.html#ac1366e74b619cfb89c4c2df52b7aa697\">GetPatchIndexTextureBuffer</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01237.html#abbedd905fe4d0e32460f82d1aa9bf360\">_patchIndexTexture</a>;</div>\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01213.html#aedcdb663cc4d3635fb5ba9149fb0d214\">   70</a></span>    ID3D11Buffer *<a class=\"code hl_function\" href=\"a01213.html#aedcdb663cc4d3635fb5ba9149fb0d214\">BindVBO</a>(ID3D11DeviceContext *deviceContext) {</div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01213.html#ac86f03cfaa5678c28ffce2b69e3fb5bc\">BindD3D11Buffer</a>(deviceContext);</div>\n <div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>    }</div>\n </div>\n <div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00075\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#a2b6605b35fc9437ab5750d6929fc66d8\">   75</a></span>    GLuint <a class=\"code hl_function\" href=\"a01237.html#a2b6605b35fc9437ab5750d6929fc66d8\">GetPatchParamTextureBuffer</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01237.html#a698f8b3d96e62c8512eb3881c8112978\">_patchParamTexture</a>;</div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00080\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#aec45672f51f456fea341d644bcf16434\">   80</a></span>    <a class=\"code hl_typedef\" href=\"a00912.html#a98098cd229f60d2397d84a76fe654a31\">PatchArrayVector</a> <span class=\"keyword\">const</span> &amp;<a class=\"code hl_function\" href=\"a01237.html#aec45672f51f456fea341d644bcf16434\">GetVaryingPatchArrays</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01237.html#acd99a0391b3b04586b11051fd0f7ed10\">_varyingPatchArrays</a>;</div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>    }</div>\n-</div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01213.html#adc0a258da9e9ac3bc19ff36418c54510\">   75</a></span>    ID3D11UnorderedAccessView *<a class=\"code hl_function\" href=\"a01213.html#adc0a258da9e9ac3bc19ff36418c54510\">BindD3D11UAV</a>(ID3D11DeviceContext *deviceContext);</div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span> </div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span><span class=\"keyword\">protected</span>:</div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01213.html#aacfe93ef7f7ede21dcf7088b62467742\">   79</a></span>    <a class=\"code hl_function\" href=\"a01213.html#aacfe93ef7f7ede21dcf7088b62467742\">D3D11VertexBuffer</a>(<span class=\"keywordtype\">int</span> numElements, <span class=\"keywordtype\">int</span> numVertices);</div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span> </div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>    <span class=\"comment\">// Allocates D3D11 buffer</span></div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01213.html#ae61b4ed6cc7cb69826cd0804c2d972b7\">   82</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01213.html#ae61b4ed6cc7cb69826cd0804c2d972b7\">allocate</a>(ID3D11Device *device);</div>\n <div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00085\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#ae0df6dbe9e1a7425c18c063dd55335f0\">   85</a></span>    GLuint <a class=\"code hl_function\" href=\"a01237.html#ae0df6dbe9e1a7425c18c063dd55335f0\">GetVaryingPatchIndexBuffer</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01237.html#a30ba44ce4fe4d55733bb32e59a0f564f\">_varyingIndexBuffer</a>;</div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00090\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#ac444539beb3cfb4b80ea5119a705b662\">   90</a></span>    GLuint <a class=\"code hl_function\" href=\"a01237.html#ac444539beb3cfb4b80ea5119a705b662\">GetVaryingPatchIndexTextureBuffer</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01237.html#a45c78bbbee12b05b67a5709c0c9e3edf\">_varyingIndexTexture</a>;</div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>    }</div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>    <span class=\"keywordtype\">int</span> _numElements;</div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>    <span class=\"keywordtype\">int</span> _numVertices;</div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>    ID3D11Buffer *_buffer;</div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>    ID3D11Buffer *_uploadBuffer;</div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>    ID3D11UnorderedAccessView *_uav;</div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>};</div>\n </div>\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span> </div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>}  <span class=\"comment\">// end namespace Osd</span></div>\n <div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span> </div>\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#aa9be824a572029f3ec1e0c0d6cfecd77\">   95</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01237.html#aa9be824a572029f3ec1e0c0d6cfecd77\">GetNumFVarChannels</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (<span class=\"keywordtype\">int</span>)<a class=\"code hl_variable\" href=\"a01237.html#abce41960eb6bedc82cbf0cb711ea66da\">_fvarPatchArrays</a>.size(); }</div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>}  <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n <div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00098\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#ab4ae92f2c242d25fa0480d0307e0d9e5\">   98</a></span>    <a class=\"code hl_typedef\" href=\"a00912.html#a98098cd229f60d2397d84a76fe654a31\">PatchArrayVector</a> <span class=\"keyword\">const</span> &amp;<a class=\"code hl_function\" href=\"a01237.html#ab4ae92f2c242d25fa0480d0307e0d9e5\">GetFVarPatchArrays</a>(<span class=\"keywordtype\">int</span> fvarChannel = 0)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01237.html#abce41960eb6bedc82cbf0cb711ea66da\">_fvarPatchArrays</a>[fvarChannel];</div>\n-<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00103\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#a2657089828a2062a96ae15b4ea2d9bbf\">  103</a></span>    GLuint <a class=\"code hl_function\" href=\"a01237.html#a2657089828a2062a96ae15b4ea2d9bbf\">GetFVarPatchIndexBuffer</a>(<span class=\"keywordtype\">int</span> fvarChannel = 0)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01237.html#a0e48596d8f2ffc1ce58bcf64cea7ec06\">_fvarIndexBuffers</a>[fvarChannel];</div>\n-<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00108\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#a95e40964621a631c5accc1a6e9bc85c7\">  108</a></span>    GLuint <a class=\"code hl_function\" href=\"a01237.html#a95e40964621a631c5accc1a6e9bc85c7\">GetFVarPatchIndexTextureBuffer</a>(<span class=\"keywordtype\">int</span> fvarChannel = 0)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01237.html#ab7e41e6a4b6c3fb8faeb136fc6e64998\">_fvarIndexTextures</a>[fvarChannel];</div>\n-<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00113\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#a6693fe16c1c27f92acdcd0716a6656e1\">  113</a></span>    GLuint <a class=\"code hl_function\" href=\"a01237.html#a6693fe16c1c27f92acdcd0716a6656e1\">GetFVarPatchParamBuffer</a>(<span class=\"keywordtype\">int</span> fvarChannel = 0)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01237.html#a2a8e1501f85608c6309e00955b6197dc\">_fvarParamBuffers</a>[fvarChannel];</div>\n-<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\">  116</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00118\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#aa0d257bdc8fd9e5180f9b210fdc50209\">  118</a></span>    GLuint <a class=\"code hl_function\" href=\"a01237.html#aa0d257bdc8fd9e5180f9b210fdc50209\">GetFVarPatchParamTextureBuffer</a>(<span class=\"keywordtype\">int</span> fvarChannel = 0)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01237.html#a554c6f7c7544b621ca3f8f824cdc7e8e\">_fvarParamTextures</a>[fvarChannel];</div>\n-<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\">  121</span> </div>\n-<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span><span class=\"keyword\">protected</span>:</div>\n-<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#a88c12681f62189c398c1d2dc32111264\">  123</a></span>    <a class=\"code hl_function\" href=\"a01237.html#a88c12681f62189c398c1d2dc32111264\">GLPatchTable</a>();</div>\n-<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span> </div>\n-<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span>    <span class=\"comment\">// allocate buffers from patchTable</span></div>\n-<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#a32a4da2f65047256f15d6607236752be\">  126</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01237.html#a32a4da2f65047256f15d6607236752be\">allocate</a>(<a class=\"code hl_class\" href=\"a00993.html\">Far::PatchTable</a> <span class=\"keyword\">const</span> *farPatchTable);</div>\n-<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span> </div>\n-<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#a5dfb6b58580f2dec58e9b5bfdb4ed9f1\">  128</a></span>    <a class=\"code hl_typedef\" href=\"a00912.html#a98098cd229f60d2397d84a76fe654a31\">PatchArrayVector</a> <a class=\"code hl_variable\" href=\"a01237.html#a5dfb6b58580f2dec58e9b5bfdb4ed9f1\">_patchArrays</a>;</div>\n-<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span> </div>\n-<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#a60ed91ae6ab2018bcc0d4f3db4f0d2e9\">  130</a></span>    GLuint <a class=\"code hl_variable\" href=\"a01237.html#a60ed91ae6ab2018bcc0d4f3db4f0d2e9\">_patchIndexBuffer</a>;</div>\n-<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#afcbe2b12b775d32f606ee7e347dba51a\">  131</a></span>    GLuint <a class=\"code hl_variable\" href=\"a01237.html#afcbe2b12b775d32f606ee7e347dba51a\">_patchParamBuffer</a>;</div>\n-<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\">  132</span> </div>\n-<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#abbedd905fe4d0e32460f82d1aa9bf360\">  133</a></span>    GLuint <a class=\"code hl_variable\" href=\"a01237.html#abbedd905fe4d0e32460f82d1aa9bf360\">_patchIndexTexture</a>;</div>\n-<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#a698f8b3d96e62c8512eb3881c8112978\">  134</a></span>    GLuint <a class=\"code hl_variable\" href=\"a01237.html#a698f8b3d96e62c8512eb3881c8112978\">_patchParamTexture</a>;</div>\n-<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\">  135</span> </div>\n-<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#acd99a0391b3b04586b11051fd0f7ed10\">  136</a></span>    <a class=\"code hl_typedef\" href=\"a00912.html#a98098cd229f60d2397d84a76fe654a31\">PatchArrayVector</a> <a class=\"code hl_variable\" href=\"a01237.html#acd99a0391b3b04586b11051fd0f7ed10\">_varyingPatchArrays</a>;</div>\n-<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#a30ba44ce4fe4d55733bb32e59a0f564f\">  137</a></span>    GLuint <a class=\"code hl_variable\" href=\"a01237.html#a30ba44ce4fe4d55733bb32e59a0f564f\">_varyingIndexBuffer</a>;</div>\n-<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#a45c78bbbee12b05b67a5709c0c9e3edf\">  138</a></span>    GLuint <a class=\"code hl_variable\" href=\"a01237.html#a45c78bbbee12b05b67a5709c0c9e3edf\">_varyingIndexTexture</a>;</div>\n-<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\">  139</span> </div>\n-<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#abce41960eb6bedc82cbf0cb711ea66da\">  140</a></span>    std::vector&lt;PatchArrayVector&gt; <a class=\"code hl_variable\" href=\"a01237.html#abce41960eb6bedc82cbf0cb711ea66da\">_fvarPatchArrays</a>;</div>\n-<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#a0e48596d8f2ffc1ce58bcf64cea7ec06\">  141</a></span>    std::vector&lt;GLuint&gt; <a class=\"code hl_variable\" href=\"a01237.html#a0e48596d8f2ffc1ce58bcf64cea7ec06\">_fvarIndexBuffers</a>;</div>\n-<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#ab7e41e6a4b6c3fb8faeb136fc6e64998\">  142</a></span>    std::vector&lt;GLuint&gt; <a class=\"code hl_variable\" href=\"a01237.html#ab7e41e6a4b6c3fb8faeb136fc6e64998\">_fvarIndexTextures</a>;</div>\n-<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\">  143</span> </div>\n-<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#a2a8e1501f85608c6309e00955b6197dc\">  144</a></span>    std::vector&lt;GLuint&gt; <a class=\"code hl_variable\" href=\"a01237.html#a2a8e1501f85608c6309e00955b6197dc\">_fvarParamBuffers</a>;</div>\n-<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01237.html#a554c6f7c7544b621ca3f8f824cdc7e8e\">  145</a></span>    std::vector&lt;GLuint&gt; <a class=\"code hl_variable\" href=\"a01237.html#a554c6f7c7544b621ca3f8f824cdc7e8e\">_fvarParamTextures</a>;</div>\n-<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\">  146</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\">  147</span> </div>\n-<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\">  148</span> </div>\n-<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\">  149</span>}  <span class=\"comment\">// end namespace Osd</span></div>\n-<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\">  150</span> </div>\n-<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\">  151</span>}  <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\">  152</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\">  153</span> </div>\n-<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\">  154</span>}  <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\">  155</span> </div>\n-<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\">  156</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_GL_PATCH_TABLE_H</span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa00912_html_a98098cd229f60d2397d84a76fe654a31\"><div class=\"ttname\"><a href=\"a00912.html#a98098cd229f60d2397d84a76fe654a31\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchArrayVector</a></div><div class=\"ttdeci\">std::vector&lt; PatchArray &gt; PatchArrayVector</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00132\">types.h:132</a></div></div>\n-<div class=\"ttc\" id=\"aa00993_html\"><div class=\"ttname\"><a href=\"a00993.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable</a></div><div class=\"ttdoc\">Container for arrays of parametric patches.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00761_source.html#l00055\">patchTable.h:55</a></div></div>\n-<div class=\"ttc\" id=\"aa01237_html\"><div class=\"ttname\"><a href=\"a01237.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00788_source.html#l00045\">glPatchTable.h:45</a></div></div>\n-<div class=\"ttc\" id=\"aa01237_html_a02af2ea2e9328a776b5b0bb3edf88864\"><div class=\"ttname\"><a href=\"a01237.html#a02af2ea2e9328a776b5b0bb3edf88864\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::VertexBufferBinding</a></div><div class=\"ttdeci\">GLuint VertexBufferBinding</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00788_source.html#l00047\">glPatchTable.h:47</a></div></div>\n-<div class=\"ttc\" id=\"aa01237_html_a0e48596d8f2ffc1ce58bcf64cea7ec06\"><div class=\"ttname\"><a href=\"a01237.html#a0e48596d8f2ffc1ce58bcf64cea7ec06\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::_fvarIndexBuffers</a></div><div class=\"ttdeci\">std::vector&lt; GLuint &gt; _fvarIndexBuffers</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00788_source.html#l00141\">glPatchTable.h:141</a></div></div>\n-<div class=\"ttc\" id=\"aa01237_html_a18e3d09b0c7b7552f8e419e36788166a\"><div class=\"ttname\"><a href=\"a01237.html#a18e3d09b0c7b7552f8e419e36788166a\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::GetPatchArrays</a></div><div class=\"ttdeci\">PatchArrayVector const &amp; GetPatchArrays() const</div><div class=\"ttdoc\">Returns the patch arrays for vertex index buffer data.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00788_source.html#l00055\">glPatchTable.h:55</a></div></div>\n-<div class=\"ttc\" id=\"aa01237_html_a2657089828a2062a96ae15b4ea2d9bbf\"><div class=\"ttname\"><a href=\"a01237.html#a2657089828a2062a96ae15b4ea2d9bbf\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::GetFVarPatchIndexBuffer</a></div><div class=\"ttdeci\">GLuint GetFVarPatchIndexBuffer(int fvarChannel=0) const</div><div class=\"ttdoc\">Returns the GL index buffer containing face-varying control vertices.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00788_source.html#l00103\">glPatchTable.h:103</a></div></div>\n-<div class=\"ttc\" id=\"aa01237_html_a27e3bbc29608fb5ded788e1a6d068da7\"><div class=\"ttname\"><a href=\"a01237.html#a27e3bbc29608fb5ded788e1a6d068da7\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::~GLPatchTable</a></div><div class=\"ttdeci\">~GLPatchTable()</div></div>\n-<div class=\"ttc\" id=\"aa01237_html_a2a8e1501f85608c6309e00955b6197dc\"><div class=\"ttname\"><a href=\"a01237.html#a2a8e1501f85608c6309e00955b6197dc\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::_fvarParamBuffers</a></div><div class=\"ttdeci\">std::vector&lt; GLuint &gt; _fvarParamBuffers</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00788_source.html#l00144\">glPatchTable.h:144</a></div></div>\n-<div class=\"ttc\" id=\"aa01237_html_a2b6605b35fc9437ab5750d6929fc66d8\"><div class=\"ttname\"><a href=\"a01237.html#a2b6605b35fc9437ab5750d6929fc66d8\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::GetPatchParamTextureBuffer</a></div><div class=\"ttdeci\">GLuint GetPatchParamTextureBuffer() const</div><div class=\"ttdoc\">Returns the GL texture buffer containing the patch parameter.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00788_source.html#l00075\">glPatchTable.h:75</a></div></div>\n-<div class=\"ttc\" id=\"aa01237_html_a30ba44ce4fe4d55733bb32e59a0f564f\"><div class=\"ttname\"><a href=\"a01237.html#a30ba44ce4fe4d55733bb32e59a0f564f\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::_varyingIndexBuffer</a></div><div class=\"ttdeci\">GLuint _varyingIndexBuffer</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00788_source.html#l00137\">glPatchTable.h:137</a></div></div>\n-<div class=\"ttc\" id=\"aa01237_html_a32a4da2f65047256f15d6607236752be\"><div class=\"ttname\"><a href=\"a01237.html#a32a4da2f65047256f15d6607236752be\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::allocate</a></div><div class=\"ttdeci\">bool allocate(Far::PatchTable const *farPatchTable)</div></div>\n-<div class=\"ttc\" id=\"aa01237_html_a406bb6da6d3805b2b3d8e462ba4d1a47\"><div class=\"ttname\"><a href=\"a01237.html#a406bb6da6d3805b2b3d8e462ba4d1a47\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::Create</a></div><div class=\"ttdeci\">static GLPatchTable * Create(Far::PatchTable const *farPatchTable, void *deviceContext=NULL)</div></div>\n-<div class=\"ttc\" id=\"aa01237_html_a45c78bbbee12b05b67a5709c0c9e3edf\"><div class=\"ttname\"><a href=\"a01237.html#a45c78bbbee12b05b67a5709c0c9e3edf\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::_varyingIndexTexture</a></div><div class=\"ttdeci\">GLuint _varyingIndexTexture</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00788_source.html#l00138\">glPatchTable.h:138</a></div></div>\n-<div class=\"ttc\" id=\"aa01237_html_a554c6f7c7544b621ca3f8f824cdc7e8e\"><div class=\"ttname\"><a href=\"a01237.html#a554c6f7c7544b621ca3f8f824cdc7e8e\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::_fvarParamTextures</a></div><div class=\"ttdeci\">std::vector&lt; GLuint &gt; _fvarParamTextures</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00788_source.html#l00145\">glPatchTable.h:145</a></div></div>\n-<div class=\"ttc\" id=\"aa01237_html_a5dfb6b58580f2dec58e9b5bfdb4ed9f1\"><div class=\"ttname\"><a href=\"a01237.html#a5dfb6b58580f2dec58e9b5bfdb4ed9f1\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::_patchArrays</a></div><div class=\"ttdeci\">PatchArrayVector _patchArrays</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00788_source.html#l00128\">glPatchTable.h:128</a></div></div>\n-<div class=\"ttc\" id=\"aa01237_html_a60ed91ae6ab2018bcc0d4f3db4f0d2e9\"><div class=\"ttname\"><a href=\"a01237.html#a60ed91ae6ab2018bcc0d4f3db4f0d2e9\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::_patchIndexBuffer</a></div><div class=\"ttdeci\">GLuint _patchIndexBuffer</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00788_source.html#l00130\">glPatchTable.h:130</a></div></div>\n-<div class=\"ttc\" id=\"aa01237_html_a645a6698ee27f028eb10e8a43044bf7f\"><div class=\"ttname\"><a href=\"a01237.html#a645a6698ee27f028eb10e8a43044bf7f\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::GetPatchParamBuffer</a></div><div class=\"ttdeci\">GLuint GetPatchParamBuffer() const</div><div class=\"ttdoc\">Returns the GL index buffer containing the patch parameter.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00788_source.html#l00065\">glPatchTable.h:65</a></div></div>\n-<div class=\"ttc\" id=\"aa01237_html_a6693fe16c1c27f92acdcd0716a6656e1\"><div class=\"ttname\"><a href=\"a01237.html#a6693fe16c1c27f92acdcd0716a6656e1\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::GetFVarPatchParamBuffer</a></div><div class=\"ttdeci\">GLuint GetFVarPatchParamBuffer(int fvarChannel=0) const</div><div class=\"ttdoc\">Returns the GL index buffer containing face-varying patch params.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00788_source.html#l00113\">glPatchTable.h:113</a></div></div>\n-<div class=\"ttc\" id=\"aa01237_html_a698f8b3d96e62c8512eb3881c8112978\"><div class=\"ttname\"><a href=\"a01237.html#a698f8b3d96e62c8512eb3881c8112978\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::_patchParamTexture</a></div><div class=\"ttdeci\">GLuint _patchParamTexture</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00788_source.html#l00134\">glPatchTable.h:134</a></div></div>\n-<div class=\"ttc\" id=\"aa01237_html_a88c12681f62189c398c1d2dc32111264\"><div class=\"ttname\"><a href=\"a01237.html#a88c12681f62189c398c1d2dc32111264\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::GLPatchTable</a></div><div class=\"ttdeci\">GLPatchTable()</div></div>\n-<div class=\"ttc\" id=\"aa01237_html_a95e40964621a631c5accc1a6e9bc85c7\"><div class=\"ttname\"><a href=\"a01237.html#a95e40964621a631c5accc1a6e9bc85c7\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::GetFVarPatchIndexTextureBuffer</a></div><div class=\"ttdeci\">GLuint GetFVarPatchIndexTextureBuffer(int fvarChannel=0) const</div><div class=\"ttdoc\">Returns the GL texture buffer containing face-varying control vertices.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00788_source.html#l00108\">glPatchTable.h:108</a></div></div>\n-<div class=\"ttc\" id=\"aa01237_html_aa0d257bdc8fd9e5180f9b210fdc50209\"><div class=\"ttname\"><a href=\"a01237.html#aa0d257bdc8fd9e5180f9b210fdc50209\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::GetFVarPatchParamTextureBuffer</a></div><div class=\"ttdeci\">GLuint GetFVarPatchParamTextureBuffer(int fvarChannel=0) const</div><div class=\"ttdoc\">Returns the GL texture buffer containing face-varying patch params.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00788_source.html#l00118\">glPatchTable.h:118</a></div></div>\n-<div class=\"ttc\" id=\"aa01237_html_aa22b6cb3f4bbb8edaaa553389e080e40\"><div class=\"ttname\"><a href=\"a01237.html#aa22b6cb3f4bbb8edaaa553389e080e40\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::GetPatchIndexBuffer</a></div><div class=\"ttdeci\">GLuint GetPatchIndexBuffer() const</div><div class=\"ttdoc\">Returns the GL index buffer containing the patch control vertices.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00788_source.html#l00060\">glPatchTable.h:60</a></div></div>\n-<div class=\"ttc\" id=\"aa01237_html_aa9be824a572029f3ec1e0c0d6cfecd77\"><div class=\"ttname\"><a href=\"a01237.html#aa9be824a572029f3ec1e0c0d6cfecd77\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::GetNumFVarChannels</a></div><div class=\"ttdeci\">int GetNumFVarChannels() const</div><div class=\"ttdoc\">Returns the number of face-varying channel buffers.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00788_source.html#l00095\">glPatchTable.h:95</a></div></div>\n-<div class=\"ttc\" id=\"aa01237_html_ab4ae92f2c242d25fa0480d0307e0d9e5\"><div class=\"ttname\"><a href=\"a01237.html#ab4ae92f2c242d25fa0480d0307e0d9e5\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::GetFVarPatchArrays</a></div><div class=\"ttdeci\">PatchArrayVector const &amp; GetFVarPatchArrays(int fvarChannel=0) const</div><div class=\"ttdoc\">Returns the patch arrays for face-varying index buffer data.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00788_source.html#l00098\">glPatchTable.h:98</a></div></div>\n-<div class=\"ttc\" id=\"aa01237_html_ab7e41e6a4b6c3fb8faeb136fc6e64998\"><div class=\"ttname\"><a href=\"a01237.html#ab7e41e6a4b6c3fb8faeb136fc6e64998\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::_fvarIndexTextures</a></div><div class=\"ttdeci\">std::vector&lt; GLuint &gt; _fvarIndexTextures</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00788_source.html#l00142\">glPatchTable.h:142</a></div></div>\n-<div class=\"ttc\" id=\"aa01237_html_abbedd905fe4d0e32460f82d1aa9bf360\"><div class=\"ttname\"><a href=\"a01237.html#abbedd905fe4d0e32460f82d1aa9bf360\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::_patchIndexTexture</a></div><div class=\"ttdeci\">GLuint _patchIndexTexture</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00788_source.html#l00133\">glPatchTable.h:133</a></div></div>\n-<div class=\"ttc\" id=\"aa01237_html_abce41960eb6bedc82cbf0cb711ea66da\"><div class=\"ttname\"><a href=\"a01237.html#abce41960eb6bedc82cbf0cb711ea66da\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::_fvarPatchArrays</a></div><div class=\"ttdeci\">std::vector&lt; PatchArrayVector &gt; _fvarPatchArrays</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00788_source.html#l00140\">glPatchTable.h:140</a></div></div>\n-<div class=\"ttc\" id=\"aa01237_html_ac1366e74b619cfb89c4c2df52b7aa697\"><div class=\"ttname\"><a href=\"a01237.html#ac1366e74b619cfb89c4c2df52b7aa697\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::GetPatchIndexTextureBuffer</a></div><div class=\"ttdeci\">GLuint GetPatchIndexTextureBuffer() const</div><div class=\"ttdoc\">Returns the GL texture buffer containing the patch control vertices.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00788_source.html#l00070\">glPatchTable.h:70</a></div></div>\n-<div class=\"ttc\" id=\"aa01237_html_ac444539beb3cfb4b80ea5119a705b662\"><div class=\"ttname\"><a href=\"a01237.html#ac444539beb3cfb4b80ea5119a705b662\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::GetVaryingPatchIndexTextureBuffer</a></div><div class=\"ttdeci\">GLuint GetVaryingPatchIndexTextureBuffer() const</div><div class=\"ttdoc\">Returns the GL texture buffer containing the varying control vertices.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00788_source.html#l00090\">glPatchTable.h:90</a></div></div>\n-<div class=\"ttc\" id=\"aa01237_html_acd99a0391b3b04586b11051fd0f7ed10\"><div class=\"ttname\"><a href=\"a01237.html#acd99a0391b3b04586b11051fd0f7ed10\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::_varyingPatchArrays</a></div><div class=\"ttdeci\">PatchArrayVector _varyingPatchArrays</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00788_source.html#l00136\">glPatchTable.h:136</a></div></div>\n-<div class=\"ttc\" id=\"aa01237_html_ae0df6dbe9e1a7425c18c063dd55335f0\"><div class=\"ttname\"><a href=\"a01237.html#ae0df6dbe9e1a7425c18c063dd55335f0\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::GetVaryingPatchIndexBuffer</a></div><div class=\"ttdeci\">GLuint GetVaryingPatchIndexBuffer() const</div><div class=\"ttdoc\">Returns the GL index buffer containing the varying control vertices.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00788_source.html#l00085\">glPatchTable.h:85</a></div></div>\n-<div class=\"ttc\" id=\"aa01237_html_aec45672f51f456fea341d644bcf16434\"><div class=\"ttname\"><a href=\"a01237.html#aec45672f51f456fea341d644bcf16434\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::GetVaryingPatchArrays</a></div><div class=\"ttdeci\">PatchArrayVector const &amp; GetVaryingPatchArrays() const</div><div class=\"ttdoc\">Returns the patch arrays for varying index buffer data.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00788_source.html#l00080\">glPatchTable.h:80</a></div></div>\n-<div class=\"ttc\" id=\"aa01237_html_afcbe2b12b775d32f606ee7e347dba51a\"><div class=\"ttname\"><a href=\"a01237.html#afcbe2b12b775d32f606ee7e347dba51a\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::_patchParamBuffer</a></div><div class=\"ttdeci\">GLuint _patchParamBuffer</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00788_source.html#l00131\">glPatchTable.h:131</a></div></div>\n+<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>}  <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span> </div>\n+<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_D3D11_VERTEX_BUFFER_H</span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa01213_html\"><div class=\"ttname\"><a href=\"a01213.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11VertexBuffer</a></div><div class=\"ttdoc\">Concrete vertex buffer class for DirectX subdivision and DirectX drawing.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00788_source.html#l00046\">d3d11VertexBuffer.h:46</a></div></div>\n+<div class=\"ttc\" id=\"aa01213_html_a77cee40767fd4936f20a8f9d9d9ea625\"><div class=\"ttname\"><a href=\"a01213.html#a77cee40767fd4936f20a8f9d9d9ea625\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11VertexBuffer::GetNumElements</a></div><div class=\"ttdeci\">int GetNumElements() const</div><div class=\"ttdoc\">Returns how many elements defined in this vertex buffer.</div></div>\n+<div class=\"ttc\" id=\"aa01213_html_a8f44858290b870c214ee24afead3e9c3\"><div class=\"ttname\"><a href=\"a01213.html#a8f44858290b870c214ee24afead3e9c3\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11VertexBuffer::UpdateData</a></div><div class=\"ttdeci\">void UpdateData(const float *src, int startVertex, int numVertices, ID3D11DeviceContext *deviceContext)</div></div>\n+<div class=\"ttc\" id=\"aa01213_html_a915a9d78d36f58b1750237ae40555029\"><div class=\"ttname\"><a href=\"a01213.html#a915a9d78d36f58b1750237ae40555029\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11VertexBuffer::Create</a></div><div class=\"ttdeci\">static D3D11VertexBuffer * Create(int numElements, int numVertices, ID3D11DeviceContext *deviceContext)</div><div class=\"ttdoc\">Creator. Returns NULL if error.</div></div>\n+<div class=\"ttc\" id=\"aa01213_html_aacfe93ef7f7ede21dcf7088b62467742\"><div class=\"ttname\"><a href=\"a01213.html#aacfe93ef7f7ede21dcf7088b62467742\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11VertexBuffer::D3D11VertexBuffer</a></div><div class=\"ttdeci\">D3D11VertexBuffer(int numElements, int numVertices)</div><div class=\"ttdoc\">Constructor.</div></div>\n+<div class=\"ttc\" id=\"aa01213_html_aaf4a32b8a414eff77000c584c2015cb7\"><div class=\"ttname\"><a href=\"a01213.html#aaf4a32b8a414eff77000c584c2015cb7\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11VertexBuffer::GetNumVertices</a></div><div class=\"ttdeci\">int GetNumVertices() const</div><div class=\"ttdoc\">Returns how many vertices allocated in this vertex buffer.</div></div>\n+<div class=\"ttc\" id=\"aa01213_html_ac86f03cfaa5678c28ffce2b69e3fb5bc\"><div class=\"ttname\"><a href=\"a01213.html#ac86f03cfaa5678c28ffce2b69e3fb5bc\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11VertexBuffer::BindD3D11Buffer</a></div><div class=\"ttdeci\">ID3D11Buffer * BindD3D11Buffer(ID3D11DeviceContext *deviceContext)</div><div class=\"ttdoc\">Returns the D3D11 buffer object.</div></div>\n+<div class=\"ttc\" id=\"aa01213_html_ad9941ba7019b0fd8aad6e9321d91c26a\"><div class=\"ttname\"><a href=\"a01213.html#ad9941ba7019b0fd8aad6e9321d91c26a\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11VertexBuffer::~D3D11VertexBuffer</a></div><div class=\"ttdeci\">virtual ~D3D11VertexBuffer()</div><div class=\"ttdoc\">Destructor.</div></div>\n+<div class=\"ttc\" id=\"aa01213_html_adc0a258da9e9ac3bc19ff36418c54510\"><div class=\"ttname\"><a href=\"a01213.html#adc0a258da9e9ac3bc19ff36418c54510\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11VertexBuffer::BindD3D11UAV</a></div><div class=\"ttdeci\">ID3D11UnorderedAccessView * BindD3D11UAV(ID3D11DeviceContext *deviceContext)</div><div class=\"ttdoc\">Returns the D3D11 UAV.</div></div>\n+<div class=\"ttc\" id=\"aa01213_html_ae61b4ed6cc7cb69826cd0804c2d972b7\"><div class=\"ttname\"><a href=\"a01213.html#ae61b4ed6cc7cb69826cd0804c2d972b7\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11VertexBuffer::allocate</a></div><div class=\"ttdeci\">bool allocate(ID3D11Device *device)</div></div>\n+<div class=\"ttc\" id=\"aa01213_html_aedcdb663cc4d3635fb5ba9149fb0d214\"><div class=\"ttname\"><a href=\"a01213.html#aedcdb663cc4d3635fb5ba9149fb0d214\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11VertexBuffer::BindVBO</a></div><div class=\"ttdeci\">ID3D11Buffer * BindVBO(ID3D11DeviceContext *deviceContext)</div><div class=\"ttdoc\">Returns the D3D11 buffer object (for Osd::Mesh interface)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00788_source.html#l00070\">d3d11VertexBuffer.h:70</a></div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00788.html\">glPatchTable.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00788.html\">d3d11VertexBuffer.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-glPatchTable.h\n+d3d11VertexBuffer.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2015 Pixar\n+2// Copyright 2013 Pixar\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -24,249 +24,106 @@\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n 24\n-25#ifndef OPENSUBDIV3_OSD_GL_PATCH_TABLE_H\n-26#define OPENSUBDIV3_OSD_GL_PATCH_TABLE_H\n+25#ifndef OPENSUBDIV3_OSD_D3D11_VERTEX_BUFFER_H\n+26#define OPENSUBDIV3_OSD_D3D11_VERTEX_BUFFER_H\n 27\n 28#include \"../version.h\"\n 29\n-30#include \"../osd/nonCopyable.h\"\n-31#include \"../osd/opengl.h\"\n-32#include \"../osd/types.h\"\n-33\n-34#include <vector>\n-35\n-36namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-37namespace OPENSUBDIV_VERSION {\n-38\n-39namespace Far{\n-40 class PatchTable;\n-41};\n-42\n-43namespace Osd {\n-44\n-_\b4_\b5class _\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be : private NonCopyable<GLPatchTable> {\n-46public:\n-_\b4_\b7 typedef GLuint _\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bB_\bi_\bn_\bd_\bi_\bn_\bg;\n-48\n-_\b4_\b9 _\b~_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be();\n-50\n-_\b5_\b1 static _\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be *_\bC_\br_\be_\ba_\bt_\be(_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be const *farPatchTable,\n-52 void *deviceContext = NULL);\n-53\n-_\b5_\b5 _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\bc_\bt_\bo_\br const &_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs() const {\n-56 return _\b__\bp_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs;\n-57 }\n-58\n-_\b6_\b0 GLuint _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br() const {\n-61 return _\b__\bp_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br;\n-62 }\n-63\n-_\b6_\b5 GLuint _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br() const {\n-66 return _\b__\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br;\n-67 }\n+30struct ID3D11Buffer;\n+31struct ID3D11Device;\n+32struct ID3D11DeviceContext;\n+33struct ID3D11UnorderedAccessView;\n+34\n+35namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+36namespace OPENSUBDIV_VERSION {\n+37\n+38namespace Osd {\n+39\n+_\b4_\b6class _\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br {\n+47public:\n+_\b4_\b9 static _\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br * _\bC_\br_\be_\ba_\bt_\be(int numElements, int numVertices,\n+50 ID3D11DeviceContext *deviceContext);\n+51\n+_\b5_\b3 virtual _\b~_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br();\n+54\n+_\b5_\b7 void _\bU_\bp_\bd_\ba_\bt_\be_\bD_\ba_\bt_\ba(const float *src, int startVertex, int numVertices,\n+58 ID3D11DeviceContext *deviceContext);\n+59\n+_\b6_\b1 int _\bG_\be_\bt_\bN_\bu_\bm_\bE_\bl_\be_\bm_\be_\bn_\bt_\bs() const;\n+62\n+_\b6_\b4 int _\bG_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs() const;\n+65\n+_\b6_\b7 ID3D11Buffer *_\bB_\bi_\bn_\bd_\bD_\b3_\bD_\b1_\b1_\bB_\bu_\bf_\bf_\be_\br(ID3D11DeviceContext *deviceContext);\n 68\n-_\b7_\b0 GLuint _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bT_\be_\bx_\bt_\bu_\br_\be_\bB_\bu_\bf_\bf_\be_\br() const {\n-71 return _\b__\bp_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bT_\be_\bx_\bt_\bu_\br_\be;\n+_\b7_\b0 ID3D11Buffer *_\bB_\bi_\bn_\bd_\bV_\bB_\bO(ID3D11DeviceContext *deviceContext) {\n+71 return _\bB_\bi_\bn_\bd_\bD_\b3_\bD_\b1_\b1_\bB_\bu_\bf_\bf_\be_\br(deviceContext);\n 72 }\n 73\n-_\b7_\b5 GLuint _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bT_\be_\bx_\bt_\bu_\br_\be_\bB_\bu_\bf_\bf_\be_\br() const {\n-76 return _\b__\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bT_\be_\bx_\bt_\bu_\br_\be;\n-77 }\n-78\n-_\b8_\b0 _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\bc_\bt_\bo_\br const &_\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs() const {\n-81 return _\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs;\n-82 }\n+_\b7_\b5 ID3D11UnorderedAccessView *_\bB_\bi_\bn_\bd_\bD_\b3_\bD_\b1_\b1_\bU_\bA_\bV(ID3D11DeviceContext *deviceContext);\n+76\n+77protected:\n+_\b7_\b9 _\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br(int numElements, int numVertices);\n+80\n+81 // Allocates D3D11 buffer\n+_\b8_\b2 bool _\ba_\bl_\bl_\bo_\bc_\ba_\bt_\be(ID3D11Device *device);\n 83\n-_\b8_\b5 GLuint _\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br() const {\n-86 return _\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br;\n-87 }\n-88\n-_\b9_\b0 GLuint _\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bT_\be_\bx_\bt_\bu_\br_\be_\bB_\bu_\bf_\bf_\be_\br() const {\n-91 return _\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bI_\bn_\bd_\be_\bx_\bT_\be_\bx_\bt_\bu_\br_\be;\n-92 }\n+84private:\n+85 int _numElements;\n+86 int _numVertices;\n+87 ID3D11Buffer *_buffer;\n+88 ID3D11Buffer *_uploadBuffer;\n+89 ID3D11UnorderedAccessView *_uav;\n+90};\n+91\n+92} // end namespace Osd\n 93\n-_\b9_\b5 int _\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs() const { return (int)_\b__\bf_\bv_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs.size(); }\n+94} // end namespace OPENSUBDIV_VERSION\n+95using namespace OPENSUBDIV_VERSION;\n 96\n-_\b9_\b8 _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\bc_\bt_\bo_\br const &_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs(int fvarChannel = 0) const {\n-99 return _\b__\bf_\bv_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs[fvarChannel];\n-100 }\n-101\n-_\b1_\b0_\b3 GLuint _\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br(int fvarChannel = 0) const {\n-104 return _\b__\bf_\bv_\ba_\br_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bs[fvarChannel];\n-105 }\n-106\n-_\b1_\b0_\b8 GLuint _\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bT_\be_\bx_\bt_\bu_\br_\be_\bB_\bu_\bf_\bf_\be_\br(int fvarChannel = 0) const {\n-109 return _\b__\bf_\bv_\ba_\br_\bI_\bn_\bd_\be_\bx_\bT_\be_\bx_\bt_\bu_\br_\be_\bs[fvarChannel];\n-110 }\n-111\n-_\b1_\b1_\b3 GLuint _\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br(int fvarChannel = 0) const {\n-114 return _\b__\bf_\bv_\ba_\br_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br_\bs[fvarChannel];\n-115 }\n-116\n-_\b1_\b1_\b8 GLuint _\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bT_\be_\bx_\bt_\bu_\br_\be_\bB_\bu_\bf_\bf_\be_\br(int fvarChannel = 0) const {\n-119 return _\b__\bf_\bv_\ba_\br_\bP_\ba_\br_\ba_\bm_\bT_\be_\bx_\bt_\bu_\br_\be_\bs[fvarChannel];\n-120 }\n-121\n-122protected:\n-_\b1_\b2_\b3 _\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be();\n-124\n-125 // allocate buffers from patchTable\n-_\b1_\b2_\b6 bool _\ba_\bl_\bl_\bo_\bc_\ba_\bt_\be(_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be const *farPatchTable);\n-127\n-_\b1_\b2_\b8 _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\bc_\bt_\bo_\br _\b__\bp_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs;\n-129\n-_\b1_\b3_\b0 GLuint _\b__\bp_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br;\n-_\b1_\b3_\b1 GLuint _\b__\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br;\n-132\n-_\b1_\b3_\b3 GLuint _\b__\bp_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bT_\be_\bx_\bt_\bu_\br_\be;\n-_\b1_\b3_\b4 GLuint _\b__\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bT_\be_\bx_\bt_\bu_\br_\be;\n-135\n-_\b1_\b3_\b6 _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\bc_\bt_\bo_\br _\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs;\n-_\b1_\b3_\b7 GLuint _\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br;\n-_\b1_\b3_\b8 GLuint _\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bI_\bn_\bd_\be_\bx_\bT_\be_\bx_\bt_\bu_\br_\be;\n-139\n-_\b1_\b4_\b0 std::vector<PatchArrayVector> _\b__\bf_\bv_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs;\n-_\b1_\b4_\b1 std::vector<GLuint> _\b__\bf_\bv_\ba_\br_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bs;\n-_\b1_\b4_\b2 std::vector<GLuint> _\b__\bf_\bv_\ba_\br_\bI_\bn_\bd_\be_\bx_\bT_\be_\bx_\bt_\bu_\br_\be_\bs;\n-143\n-_\b1_\b4_\b4 std::vector<GLuint> _\b__\bf_\bv_\ba_\br_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br_\bs;\n-_\b1_\b4_\b5 std::vector<GLuint> _\b__\bf_\bv_\ba_\br_\bP_\ba_\br_\ba_\bm_\bT_\be_\bx_\bt_\bu_\br_\be_\bs;\n-146};\n-147\n-148\n-149} // end namespace Osd\n-150\n-151} // end namespace OPENSUBDIV_VERSION\n-152using namespace OPENSUBDIV_VERSION;\n-153\n-154} // end namespace OpenSubdiv\n-155\n-156#endif // OPENSUBDIV3_OSD_GL_PATCH_TABLE_H\n+97} // end namespace OpenSubdiv\n+98\n+99#endif // OPENSUBDIV3_OSD_D3D11_VERTEX_BUFFER_H\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\bc_\bt_\bo_\br\n-std::vector< PatchArray > PatchArrayVector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b1_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n-Container for arrays of parametric patches.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b4_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bB_\bi_\bn_\bd_\bi_\bn_\bg\n-GLuint VertexBufferBinding\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b4_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bf_\bv_\ba_\br_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bs\n-std::vector< GLuint > _fvarIndexBuffers\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b4_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs\n-PatchArrayVector const & GetPatchArrays() const\n-Returns the patch arrays for vertex index buffer data.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-GLuint GetFVarPatchIndexBuffer(int fvarChannel=0) const\n-Returns the GL index buffer containing face-varying control vertices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b0_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b~_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n-~GLPatchTable()\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bf_\bv_\ba_\br_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br_\bs\n-std::vector< GLuint > _fvarParamBuffers\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b4_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bT_\be_\bx_\bt_\bu_\br_\be_\bB_\bu_\bf_\bf_\be_\br\n-GLuint GetPatchParamTextureBuffer() const\n-Returns the GL texture buffer containing the patch parameter.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-GLuint _varyingIndexBuffer\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b3_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\ba_\bl_\bl_\bo_\bc_\ba_\bt_\be\n-bool allocate(Far::PatchTable const *farPatchTable)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static GLPatchTable * Create(Far::PatchTable const *farPatchTable, void\n-*deviceContext=NULL)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bI_\bn_\bd_\be_\bx_\bT_\be_\bx_\bt_\bu_\br_\be\n-GLuint _varyingIndexTexture\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b3_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bf_\bv_\ba_\br_\bP_\ba_\br_\ba_\bm_\bT_\be_\bx_\bt_\bu_\br_\be_\bs\n-std::vector< GLuint > _fvarParamTextures\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b4_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bp_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs\n-PatchArrayVector _patchArrays\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b2_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bp_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-GLuint _patchIndexBuffer\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b3_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br\n-GLuint GetPatchParamBuffer() const\n-Returns the GL index buffer containing the patch parameter.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br\n-GLuint GetFVarPatchParamBuffer(int fvarChannel=0) const\n-Returns the GL index buffer containing face-varying patch params.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b1_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bT_\be_\bx_\bt_\bu_\br_\be\n-GLuint _patchParamTexture\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b3_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n-GLPatchTable()\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n-_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bT_\be_\bx_\bt_\bu_\br_\be_\bB_\bu_\bf_\bf_\be_\br\n-GLuint GetFVarPatchIndexTextureBuffer(int fvarChannel=0) const\n-Returns the GL texture buffer containing face-varying control vertices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b0_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n-_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bT_\be_\bx_\bt_\bu_\br_\be_\bB_\bu_\bf_\bf_\be_\br\n-GLuint GetFVarPatchParamTextureBuffer(int fvarChannel=0) const\n-Returns the GL texture buffer containing face-varying patch params.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b1_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-GLuint GetPatchIndexBuffer() const\n-Returns the GL index buffer containing the patch control vertices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs\n-int GetNumFVarChannels() const\n-Returns the number of face-varying channel buffers.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b9_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs\n-PatchArrayVector const & GetFVarPatchArrays(int fvarChannel=0) const\n-Returns the patch arrays for face-varying index buffer data.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b9_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bf_\bv_\ba_\br_\bI_\bn_\bd_\be_\bx_\bT_\be_\bx_\bt_\bu_\br_\be_\bs\n-std::vector< GLuint > _fvarIndexTextures\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b4_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bp_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bT_\be_\bx_\bt_\bu_\br_\be\n-GLuint _patchIndexTexture\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b3_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bf_\bv_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs\n-std::vector< PatchArrayVector > _fvarPatchArrays\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b4_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bT_\be_\bx_\bt_\bu_\br_\be_\bB_\bu_\bf_\bf_\be_\br\n-GLuint GetPatchIndexTextureBuffer() const\n-Returns the GL texture buffer containing the patch control vertices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n-_\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bT_\be_\bx_\bt_\bu_\br_\be_\bB_\bu_\bf_\bf_\be_\br\n-GLuint GetVaryingPatchIndexTextureBuffer() const\n-Returns the GL texture buffer containing the varying control vertices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b9_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs\n-PatchArrayVector _varyingPatchArrays\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b3_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-GLuint GetVaryingPatchIndexBuffer() const\n-Returns the GL index buffer containing the varying control vertices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b8_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs\n-PatchArrayVector const & GetVaryingPatchArrays() const\n-Returns the patch arrays for varying index buffer data.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b8_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br\n-GLuint _patchParamBuffer\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b3_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+Concrete vertex buffer class for DirectX subdivision and DirectX drawing.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bd_\b3_\bd_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh_\b:_\b4_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bE_\bl_\be_\bm_\be_\bn_\bt_\bs\n+int GetNumElements() const\n+Returns how many elements defined in this vertex buffer.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bU_\bp_\bd_\ba_\bt_\be_\bD_\ba_\bt_\ba\n+void UpdateData(const float *src, int startVertex, int numVertices,\n+ID3D11DeviceContext *deviceContext)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n+static D3D11VertexBuffer * Create(int numElements, int numVertices,\n+ID3D11DeviceContext *deviceContext)\n+Creator. Returns NULL if error.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+D3D11VertexBuffer(int numElements, int numVertices)\n+Constructor.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n+int GetNumVertices() const\n+Returns how many vertices allocated in this vertex buffer.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bB_\bi_\bn_\bd_\bD_\b3_\bD_\b1_\b1_\bB_\bu_\bf_\bf_\be_\br\n+ID3D11Buffer * BindD3D11Buffer(ID3D11DeviceContext *deviceContext)\n+Returns the D3D11 buffer object.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\b~_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+virtual ~D3D11VertexBuffer()\n+Destructor.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bB_\bi_\bn_\bd_\bD_\b3_\bD_\b1_\b1_\bU_\bA_\bV\n+ID3D11UnorderedAccessView * BindD3D11UAV(ID3D11DeviceContext *deviceContext)\n+Returns the D3D11 UAV.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\ba_\bl_\bl_\bo_\bc_\ba_\bt_\be\n+bool allocate(ID3D11Device *device)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bB_\bi_\bn_\bd_\bV_\bB_\bO\n+ID3D11Buffer * BindVBO(ID3D11DeviceContext *deviceContext)\n+Returns the D3D11 buffer object (for Osd::Mesh interface)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bd_\b3_\bd_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh_\b:_\b7_\b0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n     * _\bo_\bs_\bd\n-    * _\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh\n+    * _\bd_\b3_\bd_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00791.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00791.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/glXFBEvaluator.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/osd/cpuPatchTable.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -90,30 +90,29 @@\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> &#124;\n <a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">glXFBEvaluator.h File Reference</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">cpuPatchTable.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00842_source.html\">../osd/opengl.h</a>&quot;</code><br />\n+<code>#include &lt;vector&gt;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00857_source.html\">../far/patchDescriptor.h</a>&quot;</code><br />\n+<code>#include &quot;../osd/nonCopyable.h&quot;</code><br />\n <code>#include &quot;<a class=\"el\" href=\"a01489_source.html\">../osd/types.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00866_source.html\">../osd/bufferDescriptor.h</a>&quot;</code><br />\n </div>\n <p><a href=\"a00791_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01249.html\">GLStencilTableTBO</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">GL TextureBuffer stencil table.  <a href=\"a01249.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01253.html\">GLXFBEvaluator</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01173.html\">CpuPatchTable</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Cpu patch table.  <a href=\"a01173.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n@@ -124,13 +123,13 @@\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00791.html\">glXFBEvaluator.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00791.html\">cpuPatchTable.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,30 +1,29 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-glXFBEvaluator.h File Reference\n+cpuPatchTable.h File Reference\n #include \"../version.h\"\n-#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bo_\bp_\be_\bn_\bg_\bl_\b._\bh\"\n+#include <vector>\n+#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh\"\n+#include \"../osd/nonCopyable.h\"\n #include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n-#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bT_\bB_\bO\n-\u00a0       GL TextureBuffer stencil table. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n+class \u00a0 _\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+\u00a0       Cpu patch table. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n     * _\bo_\bs_\bd\n-    * _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh\n+    * _\bc_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00791.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00791.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,4 +1,3 @@\n var a00791 = [\n-    [\"GLStencilTableTBO\", \"a01249.html\", \"a01249\"],\n-    [\"GLXFBEvaluator\", \"a01253.html\", \"a01253\"]\n+    [\"CpuPatchTable\", \"a01173.html\", \"a01173\"]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00791_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00791_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/glXFBEvaluator.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/osd/cpuPatchTable.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,15 +92,15 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">glXFBEvaluator.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">cpuPatchTable.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00791.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2015 Pixar</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n@@ -119,1205 +119,193 @@\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_GL_XFB_EVALUATOR_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_GL_XFB_EVALUATOR_H</span></div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_CPU_PATCH_TABLE_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_CPU_PATCH_TABLE_H</span></div>\n <div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n <div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n <div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../osd/opengl.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../osd/types.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &quot;../osd/bufferDescriptor.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../far/patchDescriptor.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &quot;../osd/nonCopyable.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"preprocessor\">#include &quot;../osd/types.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span> </div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n <div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">namespace </span>Far {</div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span>    <span class=\"keyword\">class </span>PatchTable;</div>\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span>    <span class=\"keyword\">class </span>StencilTable;</div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span>    <span class=\"keyword\">class </span>LimitStencilTable;</div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span>}</div>\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span> </div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"keyword\">namespace </span>Osd {</div>\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00052\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01249.html\">   52</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01249.html\">GLStencilTableTBO</a> {</div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"foldopen\" id=\"foldopen00054\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01249.html#a24a8210b637a5b0fca2b258de3b8b8a6\">   54</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01249.html\">GLStencilTableTBO</a> *<a class=\"code hl_function\" href=\"a01249.html#a24a8210b637a5b0fca2b258de3b8b8a6\">Create</a>(</div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span>        <a class=\"code hl_class\" href=\"a01065.html\">Far::StencilTable</a> <span class=\"keyword\">const</span> *stencilTable, <span class=\"keywordtype\">void</span> *deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span>        <span class=\"keywordflow\">return</span> <span class=\"keyword\">new</span> <a class=\"code hl_class\" href=\"a01249.html\">GLStencilTableTBO</a>(stencilTable);</div>\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00060\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01249.html#ae38a4728f9debae7733ab48cfadd8312\">   60</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01249.html\">GLStencilTableTBO</a> *<a class=\"code hl_function\" href=\"a01249.html#ae38a4728f9debae7733ab48cfadd8312\">Create</a>(</div>\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span>        <a class=\"code hl_class\" href=\"a01081.html\">Far::LimitStencilTable</a> <span class=\"keyword\">const</span> *limitStencilTable,</div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span>        <span class=\"keywordtype\">void</span> *deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span> </div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"keyword\">namespace </span>Far{</div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span>    <span class=\"keyword\">class </span>PatchTable;</div>\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span>};</div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span> </div>\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span><span class=\"keyword\">namespace </span>Osd {</div>\n+<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00059\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01173.html\">   59</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01173.html\">CpuPatchTable</a> {</div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"foldopen\" id=\"foldopen00061\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01173.html#a27ccdd38f0f38adf16a4f5ceac6fed20\">   61</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01173.html\">CpuPatchTable</a> *<a class=\"code hl_function\" href=\"a01173.html#a27ccdd38f0f38adf16a4f5ceac6fed20\">Create</a>(<span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a00993.html\">Far::PatchTable</a> *patchTable,</div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span>                                 <span class=\"keywordtype\">void</span> *deviceContext = NULL) {</div>\n <div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span>        <span class=\"keywordflow\">return</span> <span class=\"keyword\">new</span> <a class=\"code hl_class\" href=\"a01249.html\">GLStencilTableTBO</a>(limitStencilTable);</div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span>        <span class=\"keywordflow\">return</span> <span class=\"keyword\">new</span> <a class=\"code hl_class\" href=\"a01173.html\">CpuPatchTable</a>(patchTable);</div>\n <div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span>    }</div>\n </div>\n <div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span> </div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01249.html#abbba46ba67be00a0eac751e3e731db6e\">   67</a></span>    <span class=\"keyword\">explicit</span> <a class=\"code hl_function\" href=\"a01249.html#abbba46ba67be00a0eac751e3e731db6e\">GLStencilTableTBO</a>(<a class=\"code hl_class\" href=\"a01065.html\">Far::StencilTable</a> <span class=\"keyword\">const</span> *stencilTable);</div>\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01249.html#ac74a769daf1fe45575a16b738bb761cd\">   68</a></span>    <span class=\"keyword\">explicit</span> <a class=\"code hl_function\" href=\"a01249.html#ac74a769daf1fe45575a16b738bb761cd\">GLStencilTableTBO</a>(<a class=\"code hl_class\" href=\"a01081.html\">Far::LimitStencilTable</a> <span class=\"keyword\">const</span> *limitStencilTable);</div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01249.html#a80dc5a5837edb75950ad0306595cbdcc\">   69</a></span>    <a class=\"code hl_function\" href=\"a01249.html#a80dc5a5837edb75950ad0306595cbdcc\">~GLStencilTableTBO</a>();</div>\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span> </div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>    <span class=\"comment\">// interfaces needed for GLSLTransformFeedbackKernel</span></div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01249.html#a233d7a80471d1d90eb2caf732e25115b\">   72</a></span>    GLuint <a class=\"code hl_function\" href=\"a01249.html#a233d7a80471d1d90eb2caf732e25115b\">GetSizesTexture</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _sizes; }</div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01249.html#afef26723ecaa12060e3e4744c0e206a9\">   73</a></span>    GLuint <a class=\"code hl_function\" href=\"a01249.html#afef26723ecaa12060e3e4744c0e206a9\">GetOffsetsTexture</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _offsets; }</div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01249.html#a809a960b308df1bca3d8f406dbf9f422\">   74</a></span>    GLuint <a class=\"code hl_function\" href=\"a01249.html#a809a960b308df1bca3d8f406dbf9f422\">GetIndicesTexture</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _indices; }</div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01249.html#ad5f4a852f17762c50c5d3011b11155cb\">   75</a></span>    GLuint <a class=\"code hl_function\" href=\"a01249.html#ad5f4a852f17762c50c5d3011b11155cb\">GetWeightsTexture</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _weights; }</div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01249.html#afd4ff3060d31d9650d6c2820d870fda8\">   76</a></span>    GLuint <a class=\"code hl_function\" href=\"a01249.html#afd4ff3060d31d9650d6c2820d870fda8\">GetDuWeightsTexture</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _duWeights; }</div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01249.html#afb1cd9d41b168ceeadd4892bfb3d3f77\">   77</a></span>    GLuint <a class=\"code hl_function\" href=\"a01249.html#afb1cd9d41b168ceeadd4892bfb3d3f77\">GetDvWeightsTexture</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _dvWeights; }</div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01249.html#a70fdd6f46c3a89dd4627b67c9a37d02e\">   78</a></span>    GLuint <a class=\"code hl_function\" href=\"a01249.html#a70fdd6f46c3a89dd4627b67c9a37d02e\">GetDuuWeightsTexture</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _duuWeights; }</div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01249.html#a6987f68e0e090437e6a28dadce50f566\">   79</a></span>    GLuint <a class=\"code hl_function\" href=\"a01249.html#a6987f68e0e090437e6a28dadce50f566\">GetDuvWeightsTexture</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _duvWeights; }</div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01249.html#a5d98fa1e61dcd32b8deb16bc9cf04d52\">   80</a></span>    GLuint <a class=\"code hl_function\" href=\"a01249.html#a5d98fa1e61dcd32b8deb16bc9cf04d52\">GetDvvWeightsTexture</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _dvvWeights; }</div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01249.html#a65836d2070b943c8fecbad926d074de2\">   81</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01249.html#a65836d2070b943c8fecbad926d074de2\">GetNumStencils</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _numStencils; }</div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span> </div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span>    GLuint _sizes;</div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>    GLuint _offsets;</div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>    GLuint _indices;</div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>    GLuint _weights;</div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>    GLuint _duWeights;</div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>    GLuint _dvWeights;</div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>    GLuint _duuWeights;</div>\n-<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>    GLuint _duvWeights;</div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>    GLuint _dvvWeights;</div>\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span>    <span class=\"keywordtype\">int</span> _numStencils;</div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span> </div>\n-<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span><span class=\"comment\">// ---------------------------------------------------------------------------</span></div>\n-<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00098\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html\">   98</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01253.html\">GLXFBEvaluator</a> {</div>\n-<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#a2c24b70c9312d8dff3fecb9ddea52c44\">  100</a></span>    <span class=\"keyword\">typedef</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_typedef\" href=\"a01253.html#a2c24b70c9312d8dff3fecb9ddea52c44\">Instantiatable</a>;</div>\n-<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span> </div>\n-<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00104\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#a5be617906ad76ddcc4795dd6557a79f7\">  104</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01253.html\">GLXFBEvaluator</a> *<a class=\"code hl_function\" href=\"a01253.html#a5be617906ad76ddcc4795dd6557a79f7\">Create</a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span>                                  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span>                                  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span>                                  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span>                                  DEVICE_CONTEXT deviceContext) {</div>\n-<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span>        <span class=\"keywordtype\">bool</span> interleavedDerivativeBuffers = deviceContext</div>\n-<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span>            ? deviceContext-&gt;AreInterleavedDerivativeBuffers()</div>\n-<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span>            : <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01253.html#a5be617906ad76ddcc4795dd6557a79f7\">Create</a>(srcDesc, dstDesc, duDesc, dvDesc,</div>\n-<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span>                      interleavedDerivativeBuffers);</div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01173.html#a3c19d1748852f36ba69a6557e5069e08\">   67</a></span>    <span class=\"keyword\">explicit</span> <a class=\"code hl_function\" href=\"a01173.html#a3c19d1748852f36ba69a6557e5069e08\">CpuPatchTable</a>(<span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a00993.html\">Far::PatchTable</a> *patchTable);</div>\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01173.html#a16142cac8dd0880ad2451586633a7999\">   68</a></span>    <a class=\"code hl_function\" href=\"a01173.html#a16142cac8dd0880ad2451586633a7999\">~CpuPatchTable</a>() {}</div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00070\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01173.html#ab6582a6586adaea0803247fb415f8c17\">   70</a></span>    <span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01325.html\">PatchArray</a> *<a class=\"code hl_function\" href=\"a01173.html#ab6582a6586adaea0803247fb415f8c17\">GetPatchArrayBuffer</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>        <span class=\"keywordflow\">return</span> &amp;<a class=\"code hl_variable\" href=\"a01173.html#a5dfb6b58580f2dec58e9b5bfdb4ed9f1\">_patchArrays</a>[0];</div>\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>    }</div>\n+</div>\n+<div class=\"foldopen\" id=\"foldopen00073\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01173.html#a1934f183cb763099b7452f3569b70fdc\">   73</a></span>    <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> *<a class=\"code hl_function\" href=\"a01173.html#a1934f183cb763099b7452f3569b70fdc\">GetPatchIndexBuffer</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span>        <span class=\"keywordflow\">return</span> &amp;<a class=\"code hl_variable\" href=\"a01173.html#a6e32349421c301eddf366c04c3a28015\">_indexBuffer</a>[0];</div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span>    }</div>\n+</div>\n+<div class=\"foldopen\" id=\"foldopen00076\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01173.html#a6a81c037eca6f27ea4ef41f39d0a1d50\">   76</a></span>    <span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01329.html\">PatchParam</a> *<a class=\"code hl_function\" href=\"a01173.html#a6a81c037eca6f27ea4ef41f39d0a1d50\">GetPatchParamBuffer</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span>        <span class=\"keywordflow\">return</span> &amp;<a class=\"code hl_variable\" href=\"a01173.html#a18d45929d48a1738134292a7f0b27377\">_patchParamBuffer</a>[0];</div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00080\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01173.html#aae90ef525393fa41f95eff50d1255e97\">   80</a></span>    <span class=\"keywordtype\">size_t</span> <a class=\"code hl_function\" href=\"a01173.html#aae90ef525393fa41f95eff50d1255e97\">GetNumPatchArrays</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01173.html#a5dfb6b58580f2dec58e9b5bfdb4ed9f1\">_patchArrays</a>.size();</div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>    }</div>\n+</div>\n+<div class=\"foldopen\" id=\"foldopen00083\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01173.html#a5b16f51336dbdc1af5b34028cc5de8cc\">   83</a></span>    <span class=\"keywordtype\">size_t</span> <a class=\"code hl_function\" href=\"a01173.html#a5b16f51336dbdc1af5b34028cc5de8cc\">GetPatchIndexSize</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01173.html#a6e32349421c301eddf366c04c3a28015\">_indexBuffer</a>.size();</div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>    }</div>\n+</div>\n+<div class=\"foldopen\" id=\"foldopen00086\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01173.html#a9ca8e987a5e8ac5bbd66f46bf2fc419c\">   86</a></span>    <span class=\"keywordtype\">size_t</span> <a class=\"code hl_function\" href=\"a01173.html#a9ca8e987a5e8ac5bbd66f46bf2fc419c\">GetPatchParamSize</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01173.html#a18d45929d48a1738134292a7f0b27377\">_patchParamBuffer</a>.size();</div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00090\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01173.html#aa67ab7e38db41de0990e7d034719dbd1\">   90</a></span>    <span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01325.html\">PatchArray</a> *<a class=\"code hl_function\" href=\"a01173.html#aa67ab7e38db41de0990e7d034719dbd1\">GetVaryingPatchArrayBuffer</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>        <span class=\"keywordflow\">if</span> (<a class=\"code hl_variable\" href=\"a01173.html#acd99a0391b3b04586b11051fd0f7ed10\">_varyingPatchArrays</a>.empty()) {</div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>            <span class=\"keywordflow\">return</span> NULL;</div>\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span>        }</div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>        <span class=\"keywordflow\">return</span> &amp;<a class=\"code hl_variable\" href=\"a01173.html#acd99a0391b3b04586b11051fd0f7ed10\">_varyingPatchArrays</a>[0];</div>\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span>    }</div>\n+</div>\n+<div class=\"foldopen\" id=\"foldopen00096\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01173.html#a0cfc50b227edbe9872586c2b4ab89dec\">   96</a></span>    <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> *<a class=\"code hl_function\" href=\"a01173.html#a0cfc50b227edbe9872586c2b4ab89dec\">GetVaryingPatchIndexBuffer</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>        <span class=\"keywordflow\">if</span> (<a class=\"code hl_variable\" href=\"a01173.html#a0ff57b15e0b6f9c4ecd676fd76ae1ba1\">_varyingIndexBuffer</a>.empty()) {</div>\n+<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span>            <span class=\"keywordflow\">return</span> NULL;</div>\n+<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span>        }</div>\n+<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span>        <span class=\"keywordflow\">return</span> &amp;<a class=\"code hl_variable\" href=\"a01173.html#a0ff57b15e0b6f9c4ecd676fd76ae1ba1\">_varyingIndexBuffer</a>[0];</div>\n+<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span>    }</div>\n+</div>\n+<div class=\"foldopen\" id=\"foldopen00102\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01173.html#aa255bcea11d324b35e8095fa7f134f8c\">  102</a></span>    <span class=\"keywordtype\">size_t</span> <a class=\"code hl_function\" href=\"a01173.html#aa255bcea11d324b35e8095fa7f134f8c\">GetVaryingPatchIndexSize</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01173.html#a0ff57b15e0b6f9c4ecd676fd76ae1ba1\">_varyingIndexBuffer</a>.size();</div>\n+<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00106\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01173.html#aa9be824a572029f3ec1e0c0d6cfecd77\">  106</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01173.html#aa9be824a572029f3ec1e0c0d6cfecd77\">GetNumFVarChannels</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span>        <span class=\"keywordflow\">return</span> (<span class=\"keywordtype\">int</span>)<a class=\"code hl_variable\" href=\"a01173.html#acdf8228439ce43565d90edce85b43368\">_fvarPatchArrays</a>.size();</div>\n+<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span>    }</div>\n+</div>\n+<div class=\"foldopen\" id=\"foldopen00109\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01173.html#a025630c8fdb360ed195aef08547f1235\">  109</a></span>    <span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01325.html\">PatchArray</a> *<a class=\"code hl_function\" href=\"a01173.html#a025630c8fdb360ed195aef08547f1235\">GetFVarPatchArrayBuffer</a>(<span class=\"keywordtype\">int</span> fvarChannel = 0)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span>        <span class=\"keywordflow\">return</span> &amp;<a class=\"code hl_variable\" href=\"a01173.html#acdf8228439ce43565d90edce85b43368\">_fvarPatchArrays</a>[fvarChannel][0];</div>\n+<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span>    }</div>\n+</div>\n+<div class=\"foldopen\" id=\"foldopen00112\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01173.html#a8a0e294dd3f62accf3bcd37506b8f0c0\">  112</a></span>    <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> *<a class=\"code hl_function\" href=\"a01173.html#a8a0e294dd3f62accf3bcd37506b8f0c0\">GetFVarPatchIndexBuffer</a>(<span class=\"keywordtype\">int</span> fvarChannel = 0)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span>        <span class=\"keywordflow\">return</span> &amp;<a class=\"code hl_variable\" href=\"a01173.html#a413f77230a89ed1a04ee4f1407a4d7b3\">_fvarIndexBuffers</a>[fvarChannel][0];</div>\n <div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span>    }</div>\n </div>\n-<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00117\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#a429f25fc87b709736f619fb76bd6c47f\">  117</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01253.html\">GLXFBEvaluator</a> *<a class=\"code hl_function\" href=\"a01253.html#a429f25fc87b709736f619fb76bd6c47f\">Create</a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\">  118</span>                                  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span>                                  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span>                                  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\">  121</span>                                  <span class=\"keywordtype\">void</span> * deviceContext) {</div>\n-<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span>        (void)deviceContext;  <span class=\"comment\">// not used</span></div>\n-<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01253.html#a5be617906ad76ddcc4795dd6557a79f7\">Create</a>(srcDesc, dstDesc, duDesc, dvDesc);</div>\n-<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00126\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#a1355f12e6d931e3ab6c8429b798d0269\">  126</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01253.html\">GLXFBEvaluator</a> * <a class=\"code hl_function\" href=\"a01253.html#a1355f12e6d931e3ab6c8429b798d0269\">Create</a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span>                                   <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span>                                   <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span>                                   <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span>                                   <span class=\"keywordtype\">bool</span> interleavedDerivativeBuffers = <span class=\"keyword\">false</span>) {</div>\n-<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\">  131</span>        <a class=\"code hl_class\" href=\"a01253.html\">GLXFBEvaluator</a> *instance = <span class=\"keyword\">new</span> <a class=\"code hl_class\" href=\"a01253.html\">GLXFBEvaluator</a>(interleavedDerivativeBuffers);</div>\n-<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\">  132</span>        <span class=\"keywordflow\">if</span> (instance-&gt;<a class=\"code hl_function\" href=\"a01253.html#ade1086349c1a452f60bcf281383ceec2\">Compile</a>(srcDesc, dstDesc, duDesc, dvDesc))</div>\n-<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\">  133</span>            <span class=\"keywordflow\">return</span> instance;</div>\n-<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\">  134</span>        <span class=\"keyword\">delete</span> instance;</div>\n-<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\">  135</span>        <span class=\"keywordflow\">return</span> NULL;</div>\n-<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\">  136</span>    }</div>\n+<div class=\"foldopen\" id=\"foldopen00115\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01173.html#a89d1a006bc57adefbd8cc2b3221507d8\">  115</a></span>    <span class=\"keywordtype\">size_t</span> <a class=\"code hl_function\" href=\"a01173.html#a89d1a006bc57adefbd8cc2b3221507d8\">GetFVarPatchIndexSize</a>(<span class=\"keywordtype\">int</span> fvarChannel = 0)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\">  116</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01173.html#a413f77230a89ed1a04ee4f1407a4d7b3\">_fvarIndexBuffers</a>[fvarChannel].size();</div>\n+<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span>    }</div>\n+</div>\n+<div class=\"foldopen\" id=\"foldopen00118\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01173.html#a9aff63c1a01a0ab08941350288def5fa\">  118</a></span>    <span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01329.html\">PatchParam</a> *<a class=\"code hl_function\" href=\"a01173.html#a9aff63c1a01a0ab08941350288def5fa\">GetFVarPatchParamBuffer</a>(<span class=\"keywordtype\">int</span> fvarChannel= 0)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span>        <span class=\"keywordflow\">return</span> &amp;<a class=\"code hl_variable\" href=\"a01173.html#a374201f74533e6af17184def3a4d18f3\">_fvarParamBuffers</a>[fvarChannel][0];</div>\n+<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span>    }</div>\n+</div>\n+<div class=\"foldopen\" id=\"foldopen00121\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01173.html#a154f068140b02b8324cfa70cdbe1191c\">  121</a></span>    <span class=\"keywordtype\">size_t</span> <a class=\"code hl_function\" href=\"a01173.html#a154f068140b02b8324cfa70cdbe1191c\">GetFVarPatchParamSize</a>(<span class=\"keywordtype\">int</span> fvarChannel = 0)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01173.html#a374201f74533e6af17184def3a4d18f3\">_fvarParamBuffers</a>[fvarChannel].size();</div>\n+<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span> </div>\n+<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span><span class=\"keyword\">protected</span>:</div>\n+<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01173.html#a5dfb6b58580f2dec58e9b5bfdb4ed9f1\">  126</a></span>    <a class=\"code hl_typedef\" href=\"a00912.html#a98098cd229f60d2397d84a76fe654a31\">PatchArrayVector</a> <a class=\"code hl_variable\" href=\"a01173.html#a5dfb6b58580f2dec58e9b5bfdb4ed9f1\">_patchArrays</a>;</div>\n+<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01173.html#a6e32349421c301eddf366c04c3a28015\">  127</a></span>    std::vector&lt;int&gt; <a class=\"code hl_variable\" href=\"a01173.html#a6e32349421c301eddf366c04c3a28015\">_indexBuffer</a>;</div>\n+<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01173.html#a18d45929d48a1738134292a7f0b27377\">  128</a></span>    <a class=\"code hl_typedef\" href=\"a00912.html#a1e22001c627b0364d6c6d62a3ed05fee\">PatchParamVector</a> <a class=\"code hl_variable\" href=\"a01173.html#a18d45929d48a1738134292a7f0b27377\">_patchParamBuffer</a>;</div>\n+<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span> </div>\n+<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01173.html#acd99a0391b3b04586b11051fd0f7ed10\">  130</a></span>    <a class=\"code hl_typedef\" href=\"a00912.html#a98098cd229f60d2397d84a76fe654a31\">PatchArrayVector</a> <a class=\"code hl_variable\" href=\"a01173.html#acd99a0391b3b04586b11051fd0f7ed10\">_varyingPatchArrays</a>;</div>\n+<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01173.html#a0ff57b15e0b6f9c4ecd676fd76ae1ba1\">  131</a></span>    std::vector&lt;int&gt; <a class=\"code hl_variable\" href=\"a01173.html#a0ff57b15e0b6f9c4ecd676fd76ae1ba1\">_varyingIndexBuffer</a>;</div>\n+<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\">  132</span> </div>\n+<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01173.html#acdf8228439ce43565d90edce85b43368\">  133</a></span>    std::vector&lt; PatchArrayVector &gt; <a class=\"code hl_variable\" href=\"a01173.html#acdf8228439ce43565d90edce85b43368\">_fvarPatchArrays</a>;</div>\n+<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01173.html#a413f77230a89ed1a04ee4f1407a4d7b3\">  134</a></span>    std::vector&lt; std::vector&lt;int&gt; &gt; <a class=\"code hl_variable\" href=\"a01173.html#a413f77230a89ed1a04ee4f1407a4d7b3\">_fvarIndexBuffers</a>;</div>\n+<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01173.html#a374201f74533e6af17184def3a4d18f3\">  135</a></span>    std::vector&lt; PatchParamVector &gt; <a class=\"code hl_variable\" href=\"a01173.html#a374201f74533e6af17184def3a4d18f3\">_fvarParamBuffers</a>;</div>\n+<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\">  136</span>};</div>\n </div>\n <div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\">  137</span> </div>\n-<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\">  139</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00140\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#a591dd44e4e7d35454ab63664150137a3\">  140</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01253.html\">GLXFBEvaluator</a> *<a class=\"code hl_function\" href=\"a01253.html#a591dd44e4e7d35454ab63664150137a3\">Create</a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\">  141</span>                                  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span>                                  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\">  143</span>                                  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\">  144</span>                                  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\">  145</span>                                  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\">  146</span>                                  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\">  147</span>                                  DEVICE_CONTEXT deviceContext) {</div>\n-<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\">  148</span>        <span class=\"keywordtype\">bool</span> interleavedDerivativeBuffers = deviceContext</div>\n-<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\">  149</span>            ? deviceContext-&gt;AreInterleavedDerivativeBuffers()</div>\n-<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\">  150</span>            : <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\">  151</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01253.html#a5be617906ad76ddcc4795dd6557a79f7\">Create</a>(srcDesc, dstDesc, duDesc, dvDesc,</div>\n-<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\">  152</span>                      duuDesc, duvDesc, dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\">  153</span>                      interleavedDerivativeBuffers);</div>\n-<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\">  154</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\">  155</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00157\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#aaf7aeae38dd52386c15108d7e94eb30f\">  157</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01253.html\">GLXFBEvaluator</a> *<a class=\"code hl_function\" href=\"a01253.html#aaf7aeae38dd52386c15108d7e94eb30f\">Create</a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\">  158</span>                                  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\">  159</span>                                  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\">  160</span>                                  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\">  161</span>                                  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\">  162</span>                                  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\">  163</span>                                  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\">  164</span>                                  <span class=\"keywordtype\">void</span> * deviceContext) {</div>\n-<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\">  165</span>        (void)deviceContext;  <span class=\"comment\">// not used</span></div>\n-<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\">  166</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01253.html#a5be617906ad76ddcc4795dd6557a79f7\">Create</a>(srcDesc, dstDesc, duDesc, dvDesc,</div>\n-<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\">  167</span>                      duuDesc, duvDesc, dvvDesc);</div>\n-<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\">  168</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\">  169</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00170\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#a3a08d0f058b0d8dde7c853734ee446c7\">  170</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01253.html\">GLXFBEvaluator</a> * <a class=\"code hl_function\" href=\"a01253.html#a3a08d0f058b0d8dde7c853734ee446c7\">Create</a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span>                                   <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\">  172</span>                                   <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\">  173</span>                                   <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\">  174</span>                                   <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\">  175</span>                                   <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\">  176</span>                                   <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span>                                   <span class=\"keywordtype\">bool</span> interleavedDerivativeBuffers = <span class=\"keyword\">false</span>) {</div>\n-<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\">  178</span>        <a class=\"code hl_class\" href=\"a01253.html\">GLXFBEvaluator</a> *instance = <span class=\"keyword\">new</span> <a class=\"code hl_class\" href=\"a01253.html\">GLXFBEvaluator</a>(interleavedDerivativeBuffers);</div>\n-<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\">  179</span>        <span class=\"keywordflow\">if</span> (instance-&gt;<a class=\"code hl_function\" href=\"a01253.html#ade1086349c1a452f60bcf281383ceec2\">Compile</a>(srcDesc, dstDesc, duDesc, dvDesc,</div>\n-<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\">  180</span>                              duuDesc, duvDesc, dvvDesc))</div>\n-<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\">  181</span>            <span class=\"keywordflow\">return</span> instance;</div>\n-<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\">  182</span>        <span class=\"keyword\">delete</span> instance;</div>\n-<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\">  183</span>        <span class=\"keywordflow\">return</span> NULL;</div>\n-<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\">  184</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\">  185</span> </div>\n-<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#a1932f725b28e271ab11ca768ba3bb01e\">  199</a></span>    <a class=\"code hl_function\" href=\"a01253.html#a1932f725b28e271ab11ca768ba3bb01e\">GLXFBEvaluator</a>(<span class=\"keywordtype\">bool</span> interleavedDerivativeBuffers = <span class=\"keyword\">false</span>);</div>\n-<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\">  200</span> </div>\n-<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#adcf442a3c8cf38e102ed5cd50851e006\">  202</a></span>    <a class=\"code hl_function\" href=\"a01253.html#adcf442a3c8cf38e102ed5cd50851e006\">~GLXFBEvaluator</a>();</div>\n-<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\">  203</span> </div>\n-<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\">  209</span> </div>\n-<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\">  237</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00238\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#ace53e6fcf744de81b768e33166d7201c\">  238</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01253.html#ace53e6fcf744de81b768e33166d7201c\">EvalStencils</a>(</div>\n-<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\">  239</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\">  240</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\">  241</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n-<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\">  242</span>        <a class=\"code hl_class\" href=\"a01253.html\">GLXFBEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n-<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\">  243</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\">  244</span> </div>\n-<div class=\"line\"><a id=\"l00245\" name=\"l00245\"></a><span class=\"lineno\">  245</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\">  246</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01253.html#ace53e6fcf744de81b768e33166d7201c\">EvalStencils</a>(srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l00247\" name=\"l00247\"></a><span class=\"lineno\">  247</span>                                          dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00248\" name=\"l00248\"></a><span class=\"lineno\">  248</span>                                          stencilTable);</div>\n-<div class=\"line\"><a id=\"l00249\" name=\"l00249\"></a><span class=\"lineno\">  249</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00250\" name=\"l00250\"></a><span class=\"lineno\">  250</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n-<div class=\"line\"><a id=\"l00251\" name=\"l00251\"></a><span class=\"lineno\">  251</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00252\" name=\"l00252\"></a><span class=\"lineno\">  252</span>            instance = <a class=\"code hl_function\" href=\"a01253.html#a5be617906ad76ddcc4795dd6557a79f7\">Create</a>(srcDesc, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00253\" name=\"l00253\"></a><span class=\"lineno\">  253</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l00254\" name=\"l00254\"></a><span class=\"lineno\">  254</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>());</div>\n-<div class=\"line\"><a id=\"l00255\" name=\"l00255\"></a><span class=\"lineno\">  255</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l00256\" name=\"l00256\"></a><span class=\"lineno\">  256</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01253.html#ace53e6fcf744de81b768e33166d7201c\">EvalStencils</a>(srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l00257\" name=\"l00257\"></a><span class=\"lineno\">  257</span>                                                dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00258\" name=\"l00258\"></a><span class=\"lineno\">  258</span>                                                stencilTable);</div>\n-<div class=\"line\"><a id=\"l00259\" name=\"l00259\"></a><span class=\"lineno\">  259</span>                <span class=\"keyword\">delete</span> instance;</div>\n-<div class=\"line\"><a id=\"l00260\" name=\"l00260\"></a><span class=\"lineno\">  260</span>                <span class=\"keywordflow\">return</span> r;</div>\n-<div class=\"line\"><a id=\"l00261\" name=\"l00261\"></a><span class=\"lineno\">  261</span>            }</div>\n-<div class=\"line\"><a id=\"l00262\" name=\"l00262\"></a><span class=\"lineno\">  262</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00263\" name=\"l00263\"></a><span class=\"lineno\">  263</span>        }</div>\n-<div class=\"line\"><a id=\"l00264\" name=\"l00264\"></a><span class=\"lineno\">  264</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00265\" name=\"l00265\"></a><span class=\"lineno\">  265</span> </div>\n-<div class=\"line\"><a id=\"l00305\" name=\"l00305\"></a><span class=\"lineno\">  305</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00306\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00306\" name=\"l00306\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#a432c889974c11c85b8a7748412b9bfd8\">  306</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01253.html#a432c889974c11c85b8a7748412b9bfd8\">EvalStencils</a>(</div>\n-<div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\">  307</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00308\" name=\"l00308\"></a><span class=\"lineno\">  308</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00309\" name=\"l00309\"></a><span class=\"lineno\">  309</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00310\" name=\"l00310\"></a><span class=\"lineno\">  310</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00311\" name=\"l00311\"></a><span class=\"lineno\">  311</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n-<div class=\"line\"><a id=\"l00312\" name=\"l00312\"></a><span class=\"lineno\">  312</span>        <a class=\"code hl_class\" href=\"a01253.html\">GLXFBEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n-<div class=\"line\"><a id=\"l00313\" name=\"l00313\"></a><span class=\"lineno\">  313</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l00314\" name=\"l00314\"></a><span class=\"lineno\">  314</span> </div>\n-<div class=\"line\"><a id=\"l00315\" name=\"l00315\"></a><span class=\"lineno\">  315</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l00316\" name=\"l00316\"></a><span class=\"lineno\">  316</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01253.html#ace53e6fcf744de81b768e33166d7201c\">EvalStencils</a>(srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l00317\" name=\"l00317\"></a><span class=\"lineno\">  317</span>                                          dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00318\" name=\"l00318\"></a><span class=\"lineno\">  318</span>                                          duBuffer,  duDesc,</div>\n-<div class=\"line\"><a id=\"l00319\" name=\"l00319\"></a><span class=\"lineno\">  319</span>                                          dvBuffer,  dvDesc,</div>\n-<div class=\"line\"><a id=\"l00320\" name=\"l00320\"></a><span class=\"lineno\">  320</span>                                          stencilTable);</div>\n-<div class=\"line\"><a id=\"l00321\" name=\"l00321\"></a><span class=\"lineno\">  321</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00322\" name=\"l00322\"></a><span class=\"lineno\">  322</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n-<div class=\"line\"><a id=\"l00323\" name=\"l00323\"></a><span class=\"lineno\">  323</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\">  324</span>            instance = <a class=\"code hl_function\" href=\"a01253.html#a5be617906ad76ddcc4795dd6557a79f7\">Create</a>(srcDesc, dstDesc, duDesc, dvDesc);</div>\n-<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\">  325</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\">  326</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01253.html#ace53e6fcf744de81b768e33166d7201c\">EvalStencils</a>(srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\">  327</span>                                                dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\">  328</span>                                                duBuffer,  duDesc,</div>\n-<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\">  329</span>                                                dvBuffer,  dvDesc,</div>\n-<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\">  330</span>                                                stencilTable);</div>\n-<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\">  331</span>                <span class=\"keyword\">delete</span> instance;</div>\n-<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\">  332</span>                <span class=\"keywordflow\">return</span> r;</div>\n-<div class=\"line\"><a id=\"l00333\" name=\"l00333\"></a><span class=\"lineno\">  333</span>            }</div>\n-<div class=\"line\"><a id=\"l00334\" name=\"l00334\"></a><span class=\"lineno\">  334</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00335\" name=\"l00335\"></a><span class=\"lineno\">  335</span>        }</div>\n-<div class=\"line\"><a id=\"l00336\" name=\"l00336\"></a><span class=\"lineno\">  336</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00337\" name=\"l00337\"></a><span class=\"lineno\">  337</span> </div>\n-<div class=\"line\"><a id=\"l00395\" name=\"l00395\"></a><span class=\"lineno\">  395</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00396\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00396\" name=\"l00396\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#a327901007bb31de57205e906c2f7ccbf\">  396</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01253.html#a327901007bb31de57205e906c2f7ccbf\">EvalStencils</a>(</div>\n-<div class=\"line\"><a id=\"l00397\" name=\"l00397\"></a><span class=\"lineno\">  397</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00398\" name=\"l00398\"></a><span class=\"lineno\">  398</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00399\" name=\"l00399\"></a><span class=\"lineno\">  399</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00400\" name=\"l00400\"></a><span class=\"lineno\">  400</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00401\" name=\"l00401\"></a><span class=\"lineno\">  401</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l00402\" name=\"l00402\"></a><span class=\"lineno\">  402</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l00403\" name=\"l00403\"></a><span class=\"lineno\">  403</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00404\" name=\"l00404\"></a><span class=\"lineno\">  404</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n-<div class=\"line\"><a id=\"l00405\" name=\"l00405\"></a><span class=\"lineno\">  405</span>        <a class=\"code hl_class\" href=\"a01253.html\">GLXFBEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n-<div class=\"line\"><a id=\"l00406\" name=\"l00406\"></a><span class=\"lineno\">  406</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l00407\" name=\"l00407\"></a><span class=\"lineno\">  407</span> </div>\n-<div class=\"line\"><a id=\"l00408\" name=\"l00408\"></a><span class=\"lineno\">  408</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l00409\" name=\"l00409\"></a><span class=\"lineno\">  409</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01253.html#ace53e6fcf744de81b768e33166d7201c\">EvalStencils</a>(srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l00410\" name=\"l00410\"></a><span class=\"lineno\">  410</span>                                          dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00411\" name=\"l00411\"></a><span class=\"lineno\">  411</span>                                          duBuffer,  duDesc,</div>\n-<div class=\"line\"><a id=\"l00412\" name=\"l00412\"></a><span class=\"lineno\">  412</span>                                          dvBuffer,  dvDesc,</div>\n-<div class=\"line\"><a id=\"l00413\" name=\"l00413\"></a><span class=\"lineno\">  413</span>                                          duuBuffer, duuDesc,</div>\n-<div class=\"line\"><a id=\"l00414\" name=\"l00414\"></a><span class=\"lineno\">  414</span>                                          duvBuffer, duvDesc,</div>\n-<div class=\"line\"><a id=\"l00415\" name=\"l00415\"></a><span class=\"lineno\">  415</span>                                          dvvBuffer, dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00416\" name=\"l00416\"></a><span class=\"lineno\">  416</span>                                          stencilTable);</div>\n-<div class=\"line\"><a id=\"l00417\" name=\"l00417\"></a><span class=\"lineno\">  417</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00418\" name=\"l00418\"></a><span class=\"lineno\">  418</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n-<div class=\"line\"><a id=\"l00419\" name=\"l00419\"></a><span class=\"lineno\">  419</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00420\" name=\"l00420\"></a><span class=\"lineno\">  420</span>            instance = <a class=\"code hl_function\" href=\"a01253.html#a5be617906ad76ddcc4795dd6557a79f7\">Create</a>(srcDesc, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00421\" name=\"l00421\"></a><span class=\"lineno\">  421</span>                              duDesc, dvDesc,</div>\n-<div class=\"line\"><a id=\"l00422\" name=\"l00422\"></a><span class=\"lineno\">  422</span>                              duuDesc, duvDesc, dvvDesc);</div>\n-<div class=\"line\"><a id=\"l00423\" name=\"l00423\"></a><span class=\"lineno\">  423</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l00424\" name=\"l00424\"></a><span class=\"lineno\">  424</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01253.html#ace53e6fcf744de81b768e33166d7201c\">EvalStencils</a>(srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l00425\" name=\"l00425\"></a><span class=\"lineno\">  425</span>                                                dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00426\" name=\"l00426\"></a><span class=\"lineno\">  426</span>                                                duBuffer,  duDesc,</div>\n-<div class=\"line\"><a id=\"l00427\" name=\"l00427\"></a><span class=\"lineno\">  427</span>                                                dvBuffer,  dvDesc,</div>\n-<div class=\"line\"><a id=\"l00428\" name=\"l00428\"></a><span class=\"lineno\">  428</span>                                                duuBuffer, duuDesc,</div>\n-<div class=\"line\"><a id=\"l00429\" name=\"l00429\"></a><span class=\"lineno\">  429</span>                                                duvBuffer, duvDesc,</div>\n-<div class=\"line\"><a id=\"l00430\" name=\"l00430\"></a><span class=\"lineno\">  430</span>                                                dvvBuffer, dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00431\" name=\"l00431\"></a><span class=\"lineno\">  431</span>                                                stencilTable);</div>\n-<div class=\"line\"><a id=\"l00432\" name=\"l00432\"></a><span class=\"lineno\">  432</span>                <span class=\"keyword\">delete</span> instance;</div>\n-<div class=\"line\"><a id=\"l00433\" name=\"l00433\"></a><span class=\"lineno\">  433</span>                <span class=\"keywordflow\">return</span> r;</div>\n-<div class=\"line\"><a id=\"l00434\" name=\"l00434\"></a><span class=\"lineno\">  434</span>            }</div>\n-<div class=\"line\"><a id=\"l00435\" name=\"l00435\"></a><span class=\"lineno\">  435</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00436\" name=\"l00436\"></a><span class=\"lineno\">  436</span>        }</div>\n-<div class=\"line\"><a id=\"l00437\" name=\"l00437\"></a><span class=\"lineno\">  437</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00438\" name=\"l00438\"></a><span class=\"lineno\">  438</span> </div>\n-<div class=\"line\"><a id=\"l00456\" name=\"l00456\"></a><span class=\"lineno\">  456</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00457\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00457\" name=\"l00457\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#aab4ecc7e79b822b8994b326cc05ad573\">  457</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01253.html#aab4ecc7e79b822b8994b326cc05ad573\">EvalStencils</a>(</div>\n-<div class=\"line\"><a id=\"l00458\" name=\"l00458\"></a><span class=\"lineno\">  458</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00459\" name=\"l00459\"></a><span class=\"lineno\">  459</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00460\" name=\"l00460\"></a><span class=\"lineno\">  460</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00461\" name=\"l00461\"></a><span class=\"lineno\">  461</span> </div>\n-<div class=\"line\"><a id=\"l00462\" name=\"l00462\"></a><span class=\"lineno\">  462</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01253.html#ace53e6fcf744de81b768e33166d7201c\">EvalStencils</a>(srcBuffer-&gt;BindVBO(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00463\" name=\"l00463\"></a><span class=\"lineno\">  463</span>                            dstBuffer-&gt;BindVBO(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00464\" name=\"l00464\"></a><span class=\"lineno\">  464</span>                            0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l00465\" name=\"l00465\"></a><span class=\"lineno\">  465</span>                            0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l00466\" name=\"l00466\"></a><span class=\"lineno\">  466</span>                            stencilTable-&gt;GetSizesTexture(),</div>\n-<div class=\"line\"><a id=\"l00467\" name=\"l00467\"></a><span class=\"lineno\">  467</span>                            stencilTable-&gt;GetOffsetsTexture(),</div>\n-<div class=\"line\"><a id=\"l00468\" name=\"l00468\"></a><span class=\"lineno\">  468</span>                            stencilTable-&gt;GetIndicesTexture(),</div>\n-<div class=\"line\"><a id=\"l00469\" name=\"l00469\"></a><span class=\"lineno\">  469</span>                            stencilTable-&gt;GetWeightsTexture(),</div>\n-<div class=\"line\"><a id=\"l00470\" name=\"l00470\"></a><span class=\"lineno\">  470</span>                            0,</div>\n-<div class=\"line\"><a id=\"l00471\" name=\"l00471\"></a><span class=\"lineno\">  471</span>                            0,</div>\n-<div class=\"line\"><a id=\"l00472\" name=\"l00472\"></a><span class=\"lineno\">  472</span>                            <span class=\"comment\">/* start = */</span> 0,</div>\n-<div class=\"line\"><a id=\"l00473\" name=\"l00473\"></a><span class=\"lineno\">  473</span>                            <span class=\"comment\">/* end   = */</span> stencilTable-&gt;GetNumStencils());</div>\n-<div class=\"line\"><a id=\"l00474\" name=\"l00474\"></a><span class=\"lineno\">  474</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00475\" name=\"l00475\"></a><span class=\"lineno\">  475</span> </div>\n-<div class=\"line\"><a id=\"l00505\" name=\"l00505\"></a><span class=\"lineno\">  505</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00506\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00506\" name=\"l00506\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#a16dedd32573dd7f70c61f1fb6072e791\">  506</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01253.html#a16dedd32573dd7f70c61f1fb6072e791\">EvalStencils</a>(</div>\n-<div class=\"line\"><a id=\"l00507\" name=\"l00507\"></a><span class=\"lineno\">  507</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00508\" name=\"l00508\"></a><span class=\"lineno\">  508</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00509\" name=\"l00509\"></a><span class=\"lineno\">  509</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00510\" name=\"l00510\"></a><span class=\"lineno\">  510</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00511\" name=\"l00511\"></a><span class=\"lineno\">  511</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00512\" name=\"l00512\"></a><span class=\"lineno\">  512</span> </div>\n-<div class=\"line\"><a id=\"l00513\" name=\"l00513\"></a><span class=\"lineno\">  513</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01253.html#ace53e6fcf744de81b768e33166d7201c\">EvalStencils</a>(srcBuffer-&gt;BindVBO(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00514\" name=\"l00514\"></a><span class=\"lineno\">  514</span>                            dstBuffer-&gt;BindVBO(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00515\" name=\"l00515\"></a><span class=\"lineno\">  515</span>                            duBuffer-&gt;BindVBO(),  duDesc,</div>\n-<div class=\"line\"><a id=\"l00516\" name=\"l00516\"></a><span class=\"lineno\">  516</span>                            dvBuffer-&gt;BindVBO(),  dvDesc,</div>\n-<div class=\"line\"><a id=\"l00517\" name=\"l00517\"></a><span class=\"lineno\">  517</span>                            stencilTable-&gt;GetSizesTexture(),</div>\n-<div class=\"line\"><a id=\"l00518\" name=\"l00518\"></a><span class=\"lineno\">  518</span>                            stencilTable-&gt;GetOffsetsTexture(),</div>\n-<div class=\"line\"><a id=\"l00519\" name=\"l00519\"></a><span class=\"lineno\">  519</span>                            stencilTable-&gt;GetIndicesTexture(),</div>\n-<div class=\"line\"><a id=\"l00520\" name=\"l00520\"></a><span class=\"lineno\">  520</span>                            stencilTable-&gt;GetWeightsTexture(),</div>\n-<div class=\"line\"><a id=\"l00521\" name=\"l00521\"></a><span class=\"lineno\">  521</span>                            stencilTable-&gt;GetDuWeightsTexture(),</div>\n-<div class=\"line\"><a id=\"l00522\" name=\"l00522\"></a><span class=\"lineno\">  522</span>                            stencilTable-&gt;GetDvWeightsTexture(),</div>\n-<div class=\"line\"><a id=\"l00523\" name=\"l00523\"></a><span class=\"lineno\">  523</span>                            <span class=\"comment\">/* start = */</span> 0,</div>\n-<div class=\"line\"><a id=\"l00524\" name=\"l00524\"></a><span class=\"lineno\">  524</span>                            <span class=\"comment\">/* end   = */</span> stencilTable-&gt;GetNumStencils());</div>\n-<div class=\"line\"><a id=\"l00525\" name=\"l00525\"></a><span class=\"lineno\">  525</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00526\" name=\"l00526\"></a><span class=\"lineno\">  526</span> </div>\n-<div class=\"line\"><a id=\"l00574\" name=\"l00574\"></a><span class=\"lineno\">  574</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00575\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00575\" name=\"l00575\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#a20fa5a4f3311832729ea7b10f935285d\">  575</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01253.html#a20fa5a4f3311832729ea7b10f935285d\">EvalStencils</a>(</div>\n-<div class=\"line\"><a id=\"l00576\" name=\"l00576\"></a><span class=\"lineno\">  576</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00577\" name=\"l00577\"></a><span class=\"lineno\">  577</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00578\" name=\"l00578\"></a><span class=\"lineno\">  578</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00579\" name=\"l00579\"></a><span class=\"lineno\">  579</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00580\" name=\"l00580\"></a><span class=\"lineno\">  580</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l00581\" name=\"l00581\"></a><span class=\"lineno\">  581</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l00582\" name=\"l00582\"></a><span class=\"lineno\">  582</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00583\" name=\"l00583\"></a><span class=\"lineno\">  583</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00584\" name=\"l00584\"></a><span class=\"lineno\">  584</span> </div>\n-<div class=\"line\"><a id=\"l00585\" name=\"l00585\"></a><span class=\"lineno\">  585</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01253.html#ace53e6fcf744de81b768e33166d7201c\">EvalStencils</a>(srcBuffer-&gt;BindVBO(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00586\" name=\"l00586\"></a><span class=\"lineno\">  586</span>                            dstBuffer-&gt;BindVBO(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00587\" name=\"l00587\"></a><span class=\"lineno\">  587</span>                            duBuffer-&gt;BindVBO(),  duDesc,</div>\n-<div class=\"line\"><a id=\"l00588\" name=\"l00588\"></a><span class=\"lineno\">  588</span>                            dvBuffer-&gt;BindVBO(),  dvDesc,</div>\n-<div class=\"line\"><a id=\"l00589\" name=\"l00589\"></a><span class=\"lineno\">  589</span>                            duuBuffer-&gt;BindVBO(), duuDesc,</div>\n-<div class=\"line\"><a id=\"l00590\" name=\"l00590\"></a><span class=\"lineno\">  590</span>                            duvBuffer-&gt;BindVBO(), duvDesc,</div>\n-<div class=\"line\"><a id=\"l00591\" name=\"l00591\"></a><span class=\"lineno\">  591</span>                            dvvBuffer-&gt;BindVBO(), dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00592\" name=\"l00592\"></a><span class=\"lineno\">  592</span>                            stencilTable-&gt;GetSizesTexture(),</div>\n-<div class=\"line\"><a id=\"l00593\" name=\"l00593\"></a><span class=\"lineno\">  593</span>                            stencilTable-&gt;GetOffsetsTexture(),</div>\n-<div class=\"line\"><a id=\"l00594\" name=\"l00594\"></a><span class=\"lineno\">  594</span>                            stencilTable-&gt;GetIndicesTexture(),</div>\n-<div class=\"line\"><a id=\"l00595\" name=\"l00595\"></a><span class=\"lineno\">  595</span>                            stencilTable-&gt;GetWeightsTexture(),</div>\n-<div class=\"line\"><a id=\"l00596\" name=\"l00596\"></a><span class=\"lineno\">  596</span>                            stencilTable-&gt;GetDuWeightsTexture(),</div>\n-<div class=\"line\"><a id=\"l00597\" name=\"l00597\"></a><span class=\"lineno\">  597</span>                            stencilTable-&gt;GetDvWeightsTexture(),</div>\n-<div class=\"line\"><a id=\"l00598\" name=\"l00598\"></a><span class=\"lineno\">  598</span>                            stencilTable-&gt;GetDuuWeightsTexture(),</div>\n-<div class=\"line\"><a id=\"l00599\" name=\"l00599\"></a><span class=\"lineno\">  599</span>                            stencilTable-&gt;GetDuvWeightsTexture(),</div>\n-<div class=\"line\"><a id=\"l00600\" name=\"l00600\"></a><span class=\"lineno\">  600</span>                            stencilTable-&gt;GetDvvWeightsTexture(),</div>\n-<div class=\"line\"><a id=\"l00601\" name=\"l00601\"></a><span class=\"lineno\">  601</span>                            <span class=\"comment\">/* start = */</span> 0,</div>\n-<div class=\"line\"><a id=\"l00602\" name=\"l00602\"></a><span class=\"lineno\">  602</span>                            <span class=\"comment\">/* end   = */</span> stencilTable-&gt;GetNumStencils());</div>\n-<div class=\"line\"><a id=\"l00603\" name=\"l00603\"></a><span class=\"lineno\">  603</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00604\" name=\"l00604\"></a><span class=\"lineno\">  604</span> </div>\n-<div class=\"line\"><a id=\"l00640\" name=\"l00640\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#ab8d69b17b91e3066aaa7dad2d38691de\">  640</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01253.html#ab8d69b17b91e3066aaa7dad2d38691de\">EvalStencils</a>(GLuint srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00641\" name=\"l00641\"></a><span class=\"lineno\">  641</span>                      GLuint dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00642\" name=\"l00642\"></a><span class=\"lineno\">  642</span>                      GLuint duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00643\" name=\"l00643\"></a><span class=\"lineno\">  643</span>                      GLuint dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00644\" name=\"l00644\"></a><span class=\"lineno\">  644</span>                      GLuint sizesBuffer,</div>\n-<div class=\"line\"><a id=\"l00645\" name=\"l00645\"></a><span class=\"lineno\">  645</span>                      GLuint offsetsBuffer,</div>\n-<div class=\"line\"><a id=\"l00646\" name=\"l00646\"></a><span class=\"lineno\">  646</span>                      GLuint indicesBuffer,</div>\n-<div class=\"line\"><a id=\"l00647\" name=\"l00647\"></a><span class=\"lineno\">  647</span>                      GLuint weightsBuffer,</div>\n-<div class=\"line\"><a id=\"l00648\" name=\"l00648\"></a><span class=\"lineno\">  648</span>                      GLuint duWeightsBuffer,</div>\n-<div class=\"line\"><a id=\"l00649\" name=\"l00649\"></a><span class=\"lineno\">  649</span>                      GLuint dvWeightsBuffer,</div>\n-<div class=\"line\"><a id=\"l00650\" name=\"l00650\"></a><span class=\"lineno\">  650</span>                      <span class=\"keywordtype\">int</span> start,</div>\n-<div class=\"line\"><a id=\"l00651\" name=\"l00651\"></a><span class=\"lineno\">  651</span>                      <span class=\"keywordtype\">int</span> end) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00652\" name=\"l00652\"></a><span class=\"lineno\">  652</span> </div>\n-<div class=\"line\"><a id=\"l00706\" name=\"l00706\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#a54b949bb4819f61594334e599194f224\">  706</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01253.html#a54b949bb4819f61594334e599194f224\">EvalStencils</a>(GLuint srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00707\" name=\"l00707\"></a><span class=\"lineno\">  707</span>                      GLuint dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00708\" name=\"l00708\"></a><span class=\"lineno\">  708</span>                      GLuint duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00709\" name=\"l00709\"></a><span class=\"lineno\">  709</span>                      GLuint dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00710\" name=\"l00710\"></a><span class=\"lineno\">  710</span>                      GLuint duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l00711\" name=\"l00711\"></a><span class=\"lineno\">  711</span>                      GLuint duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l00712\" name=\"l00712\"></a><span class=\"lineno\">  712</span>                      GLuint dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00713\" name=\"l00713\"></a><span class=\"lineno\">  713</span>                      GLuint sizesBuffer,</div>\n-<div class=\"line\"><a id=\"l00714\" name=\"l00714\"></a><span class=\"lineno\">  714</span>                      GLuint offsetsBuffer,</div>\n-<div class=\"line\"><a id=\"l00715\" name=\"l00715\"></a><span class=\"lineno\">  715</span>                      GLuint indicesBuffer,</div>\n-<div class=\"line\"><a id=\"l00716\" name=\"l00716\"></a><span class=\"lineno\">  716</span>                      GLuint weightsBuffer,</div>\n-<div class=\"line\"><a id=\"l00717\" name=\"l00717\"></a><span class=\"lineno\">  717</span>                      GLuint duWeightsBuffer,</div>\n-<div class=\"line\"><a id=\"l00718\" name=\"l00718\"></a><span class=\"lineno\">  718</span>                      GLuint dvWeightsBuffer,</div>\n-<div class=\"line\"><a id=\"l00719\" name=\"l00719\"></a><span class=\"lineno\">  719</span>                      GLuint duuWeightsBuffer,</div>\n-<div class=\"line\"><a id=\"l00720\" name=\"l00720\"></a><span class=\"lineno\">  720</span>                      GLuint duvWeightsBuffer,</div>\n-<div class=\"line\"><a id=\"l00721\" name=\"l00721\"></a><span class=\"lineno\">  721</span>                      GLuint dvvWeightsBuffer,</div>\n-<div class=\"line\"><a id=\"l00722\" name=\"l00722\"></a><span class=\"lineno\">  722</span>                      <span class=\"keywordtype\">int</span> start,</div>\n-<div class=\"line\"><a id=\"l00723\" name=\"l00723\"></a><span class=\"lineno\">  723</span>                      <span class=\"keywordtype\">int</span> end) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00724\" name=\"l00724\"></a><span class=\"lineno\">  724</span> </div>\n-<div class=\"line\"><a id=\"l00730\" name=\"l00730\"></a><span class=\"lineno\">  730</span> </div>\n-<div class=\"line\"><a id=\"l00763\" name=\"l00763\"></a><span class=\"lineno\">  763</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l00764\" name=\"l00764\"></a><span class=\"lineno\">  764</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00765\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00765\" name=\"l00765\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#a8ba6c1bfddfa877a523c098af03af037\">  765</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01253.html#a8ba6c1bfddfa877a523c098af03af037\">EvalPatches</a>(</div>\n-<div class=\"line\"><a id=\"l00766\" name=\"l00766\"></a><span class=\"lineno\">  766</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00767\" name=\"l00767\"></a><span class=\"lineno\">  767</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00768\" name=\"l00768\"></a><span class=\"lineno\">  768</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00769\" name=\"l00769\"></a><span class=\"lineno\">  769</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l00770\" name=\"l00770\"></a><span class=\"lineno\">  770</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l00771\" name=\"l00771\"></a><span class=\"lineno\">  771</span>        <a class=\"code hl_class\" href=\"a01253.html\">GLXFBEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n-<div class=\"line\"><a id=\"l00772\" name=\"l00772\"></a><span class=\"lineno\">  772</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l00773\" name=\"l00773\"></a><span class=\"lineno\">  773</span> </div>\n-<div class=\"line\"><a id=\"l00774\" name=\"l00774\"></a><span class=\"lineno\">  774</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l00775\" name=\"l00775\"></a><span class=\"lineno\">  775</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01253.html#a8ba6c1bfddfa877a523c098af03af037\">EvalPatches</a>(srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l00776\" name=\"l00776\"></a><span class=\"lineno\">  776</span>                                         dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00777\" name=\"l00777\"></a><span class=\"lineno\">  777</span>                                         numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l00778\" name=\"l00778\"></a><span class=\"lineno\">  778</span>                                         patchTable);</div>\n-<div class=\"line\"><a id=\"l00779\" name=\"l00779\"></a><span class=\"lineno\">  779</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00780\" name=\"l00780\"></a><span class=\"lineno\">  780</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n-<div class=\"line\"><a id=\"l00781\" name=\"l00781\"></a><span class=\"lineno\">  781</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00782\" name=\"l00782\"></a><span class=\"lineno\">  782</span>            instance = <a class=\"code hl_function\" href=\"a01253.html#a5be617906ad76ddcc4795dd6557a79f7\">Create</a>(srcDesc, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00783\" name=\"l00783\"></a><span class=\"lineno\">  783</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l00784\" name=\"l00784\"></a><span class=\"lineno\">  784</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>());</div>\n-<div class=\"line\"><a id=\"l00785\" name=\"l00785\"></a><span class=\"lineno\">  785</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l00786\" name=\"l00786\"></a><span class=\"lineno\">  786</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01253.html#a8ba6c1bfddfa877a523c098af03af037\">EvalPatches</a>(srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l00787\" name=\"l00787\"></a><span class=\"lineno\">  787</span>                                               dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00788\" name=\"l00788\"></a><span class=\"lineno\">  788</span>                                               numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l00789\" name=\"l00789\"></a><span class=\"lineno\">  789</span>                                               patchTable);</div>\n-<div class=\"line\"><a id=\"l00790\" name=\"l00790\"></a><span class=\"lineno\">  790</span>                <span class=\"keyword\">delete</span> instance;</div>\n-<div class=\"line\"><a id=\"l00791\" name=\"l00791\"></a><span class=\"lineno\">  791</span>                <span class=\"keywordflow\">return</span> r;</div>\n-<div class=\"line\"><a id=\"l00792\" name=\"l00792\"></a><span class=\"lineno\">  792</span>            }</div>\n-<div class=\"line\"><a id=\"l00793\" name=\"l00793\"></a><span class=\"lineno\">  793</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00794\" name=\"l00794\"></a><span class=\"lineno\">  794</span>        }</div>\n-<div class=\"line\"><a id=\"l00795\" name=\"l00795\"></a><span class=\"lineno\">  795</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00796\" name=\"l00796\"></a><span class=\"lineno\">  796</span> </div>\n-<div class=\"line\"><a id=\"l00841\" name=\"l00841\"></a><span class=\"lineno\">  841</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l00842\" name=\"l00842\"></a><span class=\"lineno\">  842</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00843\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00843\" name=\"l00843\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#a57b0367816baf9831808847cbfe833b0\">  843</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01253.html#a57b0367816baf9831808847cbfe833b0\">EvalPatches</a>(</div>\n-<div class=\"line\"><a id=\"l00844\" name=\"l00844\"></a><span class=\"lineno\">  844</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00845\" name=\"l00845\"></a><span class=\"lineno\">  845</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00846\" name=\"l00846\"></a><span class=\"lineno\">  846</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00847\" name=\"l00847\"></a><span class=\"lineno\">  847</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00848\" name=\"l00848\"></a><span class=\"lineno\">  848</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00849\" name=\"l00849\"></a><span class=\"lineno\">  849</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l00850\" name=\"l00850\"></a><span class=\"lineno\">  850</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l00851\" name=\"l00851\"></a><span class=\"lineno\">  851</span>        <a class=\"code hl_class\" href=\"a01253.html\">GLXFBEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n-<div class=\"line\"><a id=\"l00852\" name=\"l00852\"></a><span class=\"lineno\">  852</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l00853\" name=\"l00853\"></a><span class=\"lineno\">  853</span> </div>\n-<div class=\"line\"><a id=\"l00854\" name=\"l00854\"></a><span class=\"lineno\">  854</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l00855\" name=\"l00855\"></a><span class=\"lineno\">  855</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01253.html#a8ba6c1bfddfa877a523c098af03af037\">EvalPatches</a>(srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l00856\" name=\"l00856\"></a><span class=\"lineno\">  856</span>                                         dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00857\" name=\"l00857\"></a><span class=\"lineno\">  857</span>                                         duBuffer, duDesc,</div>\n-<div class=\"line\"><a id=\"l00858\" name=\"l00858\"></a><span class=\"lineno\">  858</span>                                         dvBuffer, dvDesc,</div>\n-<div class=\"line\"><a id=\"l00859\" name=\"l00859\"></a><span class=\"lineno\">  859</span>                                         numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l00860\" name=\"l00860\"></a><span class=\"lineno\">  860</span>                                         patchTable);</div>\n-<div class=\"line\"><a id=\"l00861\" name=\"l00861\"></a><span class=\"lineno\">  861</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00862\" name=\"l00862\"></a><span class=\"lineno\">  862</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n-<div class=\"line\"><a id=\"l00863\" name=\"l00863\"></a><span class=\"lineno\">  863</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00864\" name=\"l00864\"></a><span class=\"lineno\">  864</span>            instance = <a class=\"code hl_function\" href=\"a01253.html#a5be617906ad76ddcc4795dd6557a79f7\">Create</a>(srcDesc, dstDesc, duDesc, dvDesc);</div>\n-<div class=\"line\"><a id=\"l00865\" name=\"l00865\"></a><span class=\"lineno\">  865</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l00866\" name=\"l00866\"></a><span class=\"lineno\">  866</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01253.html#a8ba6c1bfddfa877a523c098af03af037\">EvalPatches</a>(srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l00867\" name=\"l00867\"></a><span class=\"lineno\">  867</span>                                               dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00868\" name=\"l00868\"></a><span class=\"lineno\">  868</span>                                               duBuffer, duDesc,</div>\n-<div class=\"line\"><a id=\"l00869\" name=\"l00869\"></a><span class=\"lineno\">  869</span>                                               dvBuffer, dvDesc,</div>\n-<div class=\"line\"><a id=\"l00870\" name=\"l00870\"></a><span class=\"lineno\">  870</span>                                               numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l00871\" name=\"l00871\"></a><span class=\"lineno\">  871</span>                                               patchTable);</div>\n-<div class=\"line\"><a id=\"l00872\" name=\"l00872\"></a><span class=\"lineno\">  872</span>                <span class=\"keyword\">delete</span> instance;</div>\n-<div class=\"line\"><a id=\"l00873\" name=\"l00873\"></a><span class=\"lineno\">  873</span>                <span class=\"keywordflow\">return</span> r;</div>\n-<div class=\"line\"><a id=\"l00874\" name=\"l00874\"></a><span class=\"lineno\">  874</span>            }</div>\n-<div class=\"line\"><a id=\"l00875\" name=\"l00875\"></a><span class=\"lineno\">  875</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00876\" name=\"l00876\"></a><span class=\"lineno\">  876</span>        }</div>\n-<div class=\"line\"><a id=\"l00877\" name=\"l00877\"></a><span class=\"lineno\">  877</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00878\" name=\"l00878\"></a><span class=\"lineno\">  878</span> </div>\n-<div class=\"line\"><a id=\"l00941\" name=\"l00941\"></a><span class=\"lineno\">  941</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l00942\" name=\"l00942\"></a><span class=\"lineno\">  942</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00943\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00943\" name=\"l00943\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#a9a52edc932f03ffa9bbf67c093a1dd65\">  943</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01253.html#a9a52edc932f03ffa9bbf67c093a1dd65\">EvalPatches</a>(</div>\n-<div class=\"line\"><a id=\"l00944\" name=\"l00944\"></a><span class=\"lineno\">  944</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00945\" name=\"l00945\"></a><span class=\"lineno\">  945</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00946\" name=\"l00946\"></a><span class=\"lineno\">  946</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00947\" name=\"l00947\"></a><span class=\"lineno\">  947</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00948\" name=\"l00948\"></a><span class=\"lineno\">  948</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l00949\" name=\"l00949\"></a><span class=\"lineno\">  949</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l00950\" name=\"l00950\"></a><span class=\"lineno\">  950</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00951\" name=\"l00951\"></a><span class=\"lineno\">  951</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00952\" name=\"l00952\"></a><span class=\"lineno\">  952</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l00953\" name=\"l00953\"></a><span class=\"lineno\">  953</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l00954\" name=\"l00954\"></a><span class=\"lineno\">  954</span>        <a class=\"code hl_class\" href=\"a01253.html\">GLXFBEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n-<div class=\"line\"><a id=\"l00955\" name=\"l00955\"></a><span class=\"lineno\">  955</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l00956\" name=\"l00956\"></a><span class=\"lineno\">  956</span> </div>\n-<div class=\"line\"><a id=\"l00957\" name=\"l00957\"></a><span class=\"lineno\">  957</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l00958\" name=\"l00958\"></a><span class=\"lineno\">  958</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01253.html#a8ba6c1bfddfa877a523c098af03af037\">EvalPatches</a>(srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l00959\" name=\"l00959\"></a><span class=\"lineno\">  959</span>                                         dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00960\" name=\"l00960\"></a><span class=\"lineno\">  960</span>                                         duBuffer, duDesc,</div>\n-<div class=\"line\"><a id=\"l00961\" name=\"l00961\"></a><span class=\"lineno\">  961</span>                                         dvBuffer, dvDesc,</div>\n-<div class=\"line\"><a id=\"l00962\" name=\"l00962\"></a><span class=\"lineno\">  962</span>                                         duuBuffer, duuDesc,</div>\n-<div class=\"line\"><a id=\"l00963\" name=\"l00963\"></a><span class=\"lineno\">  963</span>                                         duvBuffer, duvDesc,</div>\n-<div class=\"line\"><a id=\"l00964\" name=\"l00964\"></a><span class=\"lineno\">  964</span>                                         dvvBuffer, dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00965\" name=\"l00965\"></a><span class=\"lineno\">  965</span>                                         numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l00966\" name=\"l00966\"></a><span class=\"lineno\">  966</span>                                         patchTable);</div>\n-<div class=\"line\"><a id=\"l00967\" name=\"l00967\"></a><span class=\"lineno\">  967</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00968\" name=\"l00968\"></a><span class=\"lineno\">  968</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n-<div class=\"line\"><a id=\"l00969\" name=\"l00969\"></a><span class=\"lineno\">  969</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00970\" name=\"l00970\"></a><span class=\"lineno\">  970</span>            instance = <a class=\"code hl_function\" href=\"a01253.html#a5be617906ad76ddcc4795dd6557a79f7\">Create</a>(srcDesc, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00971\" name=\"l00971\"></a><span class=\"lineno\">  971</span>                              duDesc, dvDesc,</div>\n-<div class=\"line\"><a id=\"l00972\" name=\"l00972\"></a><span class=\"lineno\">  972</span>                              duuDesc, duvDesc, dvvDesc);</div>\n-<div class=\"line\"><a id=\"l00973\" name=\"l00973\"></a><span class=\"lineno\">  973</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l00974\" name=\"l00974\"></a><span class=\"lineno\">  974</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01253.html#a8ba6c1bfddfa877a523c098af03af037\">EvalPatches</a>(srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l00975\" name=\"l00975\"></a><span class=\"lineno\">  975</span>                                               dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00976\" name=\"l00976\"></a><span class=\"lineno\">  976</span>                                               duBuffer, duDesc,</div>\n-<div class=\"line\"><a id=\"l00977\" name=\"l00977\"></a><span class=\"lineno\">  977</span>                                               dvBuffer, dvDesc,</div>\n-<div class=\"line\"><a id=\"l00978\" name=\"l00978\"></a><span class=\"lineno\">  978</span>                                               duuBuffer, duuDesc,</div>\n-<div class=\"line\"><a id=\"l00979\" name=\"l00979\"></a><span class=\"lineno\">  979</span>                                               duvBuffer, duvDesc,</div>\n-<div class=\"line\"><a id=\"l00980\" name=\"l00980\"></a><span class=\"lineno\">  980</span>                                               dvvBuffer, dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00981\" name=\"l00981\"></a><span class=\"lineno\">  981</span>                                               numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l00982\" name=\"l00982\"></a><span class=\"lineno\">  982</span>                                               patchTable);</div>\n-<div class=\"line\"><a id=\"l00983\" name=\"l00983\"></a><span class=\"lineno\">  983</span>                <span class=\"keyword\">delete</span> instance;</div>\n-<div class=\"line\"><a id=\"l00984\" name=\"l00984\"></a><span class=\"lineno\">  984</span>                <span class=\"keywordflow\">return</span> r;</div>\n-<div class=\"line\"><a id=\"l00985\" name=\"l00985\"></a><span class=\"lineno\">  985</span>            }</div>\n-<div class=\"line\"><a id=\"l00986\" name=\"l00986\"></a><span class=\"lineno\">  986</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00987\" name=\"l00987\"></a><span class=\"lineno\">  987</span>        }</div>\n-<div class=\"line\"><a id=\"l00988\" name=\"l00988\"></a><span class=\"lineno\">  988</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00989\" name=\"l00989\"></a><span class=\"lineno\">  989</span> </div>\n-<div class=\"line\"><a id=\"l01014\" name=\"l01014\"></a><span class=\"lineno\"> 1014</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01015\" name=\"l01015\"></a><span class=\"lineno\"> 1015</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01016\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01016\" name=\"l01016\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#a96616cfe920c027568e2ae931b3ba506\"> 1016</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01253.html#a96616cfe920c027568e2ae931b3ba506\">EvalPatches</a>(</div>\n-<div class=\"line\"><a id=\"l01017\" name=\"l01017\"></a><span class=\"lineno\"> 1017</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01018\" name=\"l01018\"></a><span class=\"lineno\"> 1018</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01019\" name=\"l01019\"></a><span class=\"lineno\"> 1019</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01020\" name=\"l01020\"></a><span class=\"lineno\"> 1020</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01021\" name=\"l01021\"></a><span class=\"lineno\"> 1021</span>        PATCH_TABLE *patchTable)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l01022\" name=\"l01022\"></a><span class=\"lineno\"> 1022</span> </div>\n-<div class=\"line\"><a id=\"l01023\" name=\"l01023\"></a><span class=\"lineno\"> 1023</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01253.html#a8ba6c1bfddfa877a523c098af03af037\">EvalPatches</a>(srcBuffer-&gt;BindVBO(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01024\" name=\"l01024\"></a><span class=\"lineno\"> 1024</span>                           dstBuffer-&gt;BindVBO(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l01025\" name=\"l01025\"></a><span class=\"lineno\"> 1025</span>                           0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l01026\" name=\"l01026\"></a><span class=\"lineno\"> 1026</span>                           0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l01027\" name=\"l01027\"></a><span class=\"lineno\"> 1027</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01028\" name=\"l01028\"></a><span class=\"lineno\"> 1028</span>                           patchCoords-&gt;BindVBO(),</div>\n-<div class=\"line\"><a id=\"l01029\" name=\"l01029\"></a><span class=\"lineno\"> 1029</span>                           patchTable-&gt;GetPatchArrays(),</div>\n-<div class=\"line\"><a id=\"l01030\" name=\"l01030\"></a><span class=\"lineno\"> 1030</span>                           patchTable-&gt;GetPatchIndexTextureBuffer(),</div>\n-<div class=\"line\"><a id=\"l01031\" name=\"l01031\"></a><span class=\"lineno\"> 1031</span>                           patchTable-&gt;GetPatchParamTextureBuffer());</div>\n-<div class=\"line\"><a id=\"l01032\" name=\"l01032\"></a><span class=\"lineno\"> 1032</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01033\" name=\"l01033\"></a><span class=\"lineno\"> 1033</span> </div>\n-<div class=\"line\"><a id=\"l01068\" name=\"l01068\"></a><span class=\"lineno\"> 1068</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01069\" name=\"l01069\"></a><span class=\"lineno\"> 1069</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01070\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01070\" name=\"l01070\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#aa28dc7f2bd31f1cdac0013ad9de8f434\"> 1070</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01253.html#aa28dc7f2bd31f1cdac0013ad9de8f434\">EvalPatches</a>(</div>\n-<div class=\"line\"><a id=\"l01071\" name=\"l01071\"></a><span class=\"lineno\"> 1071</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01072\" name=\"l01072\"></a><span class=\"lineno\"> 1072</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01073\" name=\"l01073\"></a><span class=\"lineno\"> 1073</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l01074\" name=\"l01074\"></a><span class=\"lineno\"> 1074</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l01075\" name=\"l01075\"></a><span class=\"lineno\"> 1075</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01076\" name=\"l01076\"></a><span class=\"lineno\"> 1076</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01077\" name=\"l01077\"></a><span class=\"lineno\"> 1077</span>        PATCH_TABLE *patchTable)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l01078\" name=\"l01078\"></a><span class=\"lineno\"> 1078</span> </div>\n-<div class=\"line\"><a id=\"l01079\" name=\"l01079\"></a><span class=\"lineno\"> 1079</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01253.html#a8ba6c1bfddfa877a523c098af03af037\">EvalPatches</a>(srcBuffer-&gt;BindVBO(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01080\" name=\"l01080\"></a><span class=\"lineno\"> 1080</span>                           dstBuffer-&gt;BindVBO(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l01081\" name=\"l01081\"></a><span class=\"lineno\"> 1081</span>                           duBuffer-&gt;BindVBO(),  duDesc,</div>\n-<div class=\"line\"><a id=\"l01082\" name=\"l01082\"></a><span class=\"lineno\"> 1082</span>                           dvBuffer-&gt;BindVBO(),  dvDesc,</div>\n-<div class=\"line\"><a id=\"l01083\" name=\"l01083\"></a><span class=\"lineno\"> 1083</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01084\" name=\"l01084\"></a><span class=\"lineno\"> 1084</span>                           patchCoords-&gt;BindVBO(),</div>\n-<div class=\"line\"><a id=\"l01085\" name=\"l01085\"></a><span class=\"lineno\"> 1085</span>                           patchTable-&gt;GetPatchArrays(),</div>\n-<div class=\"line\"><a id=\"l01086\" name=\"l01086\"></a><span class=\"lineno\"> 1086</span>                           patchTable-&gt;GetPatchIndexTextureBuffer(),</div>\n-<div class=\"line\"><a id=\"l01087\" name=\"l01087\"></a><span class=\"lineno\"> 1087</span>                           patchTable-&gt;GetPatchParamTextureBuffer());</div>\n-<div class=\"line\"><a id=\"l01088\" name=\"l01088\"></a><span class=\"lineno\"> 1088</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01089\" name=\"l01089\"></a><span class=\"lineno\"> 1089</span> </div>\n-<div class=\"line\"><a id=\"l01142\" name=\"l01142\"></a><span class=\"lineno\"> 1142</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01143\" name=\"l01143\"></a><span class=\"lineno\"> 1143</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01144\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01144\" name=\"l01144\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#a35609a9d5a1b087bd675035d710dc688\"> 1144</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01253.html#a35609a9d5a1b087bd675035d710dc688\">EvalPatches</a>(</div>\n-<div class=\"line\"><a id=\"l01145\" name=\"l01145\"></a><span class=\"lineno\"> 1145</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01146\" name=\"l01146\"></a><span class=\"lineno\"> 1146</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01147\" name=\"l01147\"></a><span class=\"lineno\"> 1147</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l01148\" name=\"l01148\"></a><span class=\"lineno\"> 1148</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l01149\" name=\"l01149\"></a><span class=\"lineno\"> 1149</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l01150\" name=\"l01150\"></a><span class=\"lineno\"> 1150</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l01151\" name=\"l01151\"></a><span class=\"lineno\"> 1151</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l01152\" name=\"l01152\"></a><span class=\"lineno\"> 1152</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01153\" name=\"l01153\"></a><span class=\"lineno\"> 1153</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01154\" name=\"l01154\"></a><span class=\"lineno\"> 1154</span>        PATCH_TABLE *patchTable)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l01155\" name=\"l01155\"></a><span class=\"lineno\"> 1155</span> </div>\n-<div class=\"line\"><a id=\"l01156\" name=\"l01156\"></a><span class=\"lineno\"> 1156</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01253.html#a8ba6c1bfddfa877a523c098af03af037\">EvalPatches</a>(srcBuffer-&gt;BindVBO(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01157\" name=\"l01157\"></a><span class=\"lineno\"> 1157</span>                           dstBuffer-&gt;BindVBO(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l01158\" name=\"l01158\"></a><span class=\"lineno\"> 1158</span>                           duBuffer-&gt;BindVBO(),  duDesc,</div>\n-<div class=\"line\"><a id=\"l01159\" name=\"l01159\"></a><span class=\"lineno\"> 1159</span>                           dvBuffer-&gt;BindVBO(),  dvDesc,</div>\n-<div class=\"line\"><a id=\"l01160\" name=\"l01160\"></a><span class=\"lineno\"> 1160</span>                           duuBuffer-&gt;BindVBO(), duuDesc,</div>\n-<div class=\"line\"><a id=\"l01161\" name=\"l01161\"></a><span class=\"lineno\"> 1161</span>                           duvBuffer-&gt;BindVBO(), duvDesc,</div>\n-<div class=\"line\"><a id=\"l01162\" name=\"l01162\"></a><span class=\"lineno\"> 1162</span>                           dvvBuffer-&gt;BindVBO(), dvvDesc,</div>\n-<div class=\"line\"><a id=\"l01163\" name=\"l01163\"></a><span class=\"lineno\"> 1163</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01164\" name=\"l01164\"></a><span class=\"lineno\"> 1164</span>                           patchCoords-&gt;BindVBO(),</div>\n-<div class=\"line\"><a id=\"l01165\" name=\"l01165\"></a><span class=\"lineno\"> 1165</span>                           patchTable-&gt;GetPatchArrays(),</div>\n-<div class=\"line\"><a id=\"l01166\" name=\"l01166\"></a><span class=\"lineno\"> 1166</span>                           patchTable-&gt;GetPatchIndexTextureBuffer(),</div>\n-<div class=\"line\"><a id=\"l01167\" name=\"l01167\"></a><span class=\"lineno\"> 1167</span>                           patchTable-&gt;GetPatchParamTextureBuffer());</div>\n-<div class=\"line\"><a id=\"l01168\" name=\"l01168\"></a><span class=\"lineno\"> 1168</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01169\" name=\"l01169\"></a><span class=\"lineno\"> 1169</span> </div>\n-<div class=\"line\"><a id=\"l01170\" name=\"l01170\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#aac8b4b814219420a124f8a92c96fd026\"> 1170</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01253.html#aac8b4b814219420a124f8a92c96fd026\">EvalPatches</a>(GLuint srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01171\" name=\"l01171\"></a><span class=\"lineno\"> 1171</span>                     GLuint dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01172\" name=\"l01172\"></a><span class=\"lineno\"> 1172</span>                     GLuint duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l01173\" name=\"l01173\"></a><span class=\"lineno\"> 1173</span>                     GLuint dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l01174\" name=\"l01174\"></a><span class=\"lineno\"> 1174</span>                     <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01175\" name=\"l01175\"></a><span class=\"lineno\"> 1175</span>                     GLuint patchCoordsBuffer,</div>\n-<div class=\"line\"><a id=\"l01176\" name=\"l01176\"></a><span class=\"lineno\"> 1176</span>                     <span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"a00912.html#a98098cd229f60d2397d84a76fe654a31\">PatchArrayVector</a> &amp;patchArrays,</div>\n-<div class=\"line\"><a id=\"l01177\" name=\"l01177\"></a><span class=\"lineno\"> 1177</span>                     GLuint patchIndexBuffer,</div>\n-<div class=\"line\"><a id=\"l01178\" name=\"l01178\"></a><span class=\"lineno\"> 1178</span>                     GLuint patchParamsBuffer) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l01179\" name=\"l01179\"></a><span class=\"lineno\"> 1179</span> </div>\n-<div class=\"line\"><a id=\"l01180\" name=\"l01180\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#a2d1074f49212a9ae65161e9c957dbab7\"> 1180</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01253.html#a2d1074f49212a9ae65161e9c957dbab7\">EvalPatches</a>(GLuint srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01181\" name=\"l01181\"></a><span class=\"lineno\"> 1181</span>                     GLuint dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01182\" name=\"l01182\"></a><span class=\"lineno\"> 1182</span>                     GLuint duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l01183\" name=\"l01183\"></a><span class=\"lineno\"> 1183</span>                     GLuint dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l01184\" name=\"l01184\"></a><span class=\"lineno\"> 1184</span>                     GLuint duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l01185\" name=\"l01185\"></a><span class=\"lineno\"> 1185</span>                     GLuint duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l01186\" name=\"l01186\"></a><span class=\"lineno\"> 1186</span>                     GLuint dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l01187\" name=\"l01187\"></a><span class=\"lineno\"> 1187</span>                     <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01188\" name=\"l01188\"></a><span class=\"lineno\"> 1188</span>                     GLuint patchCoordsBuffer,</div>\n-<div class=\"line\"><a id=\"l01189\" name=\"l01189\"></a><span class=\"lineno\"> 1189</span>                     <span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"a00912.html#a98098cd229f60d2397d84a76fe654a31\">PatchArrayVector</a> &amp;patchArrays,</div>\n-<div class=\"line\"><a id=\"l01190\" name=\"l01190\"></a><span class=\"lineno\"> 1190</span>                     GLuint patchIndexBuffer,</div>\n-<div class=\"line\"><a id=\"l01191\" name=\"l01191\"></a><span class=\"lineno\"> 1191</span>                     GLuint patchParamsBuffer) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l01192\" name=\"l01192\"></a><span class=\"lineno\"> 1192</span> </div>\n-<div class=\"line\"><a id=\"l01225\" name=\"l01225\"></a><span class=\"lineno\"> 1225</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01226\" name=\"l01226\"></a><span class=\"lineno\"> 1226</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01227\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01227\" name=\"l01227\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#a6ee6055100beee2bc55426a0e909dc59\"> 1227</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01253.html#a6ee6055100beee2bc55426a0e909dc59\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01228\" name=\"l01228\"></a><span class=\"lineno\"> 1228</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01229\" name=\"l01229\"></a><span class=\"lineno\"> 1229</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01230\" name=\"l01230\"></a><span class=\"lineno\"> 1230</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01231\" name=\"l01231\"></a><span class=\"lineno\"> 1231</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01232\" name=\"l01232\"></a><span class=\"lineno\"> 1232</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l01233\" name=\"l01233\"></a><span class=\"lineno\"> 1233</span>        <a class=\"code hl_class\" href=\"a01253.html\">GLXFBEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n-<div class=\"line\"><a id=\"l01234\" name=\"l01234\"></a><span class=\"lineno\"> 1234</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l01235\" name=\"l01235\"></a><span class=\"lineno\"> 1235</span> </div>\n-<div class=\"line\"><a id=\"l01236\" name=\"l01236\"></a><span class=\"lineno\"> 1236</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l01237\" name=\"l01237\"></a><span class=\"lineno\"> 1237</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01253.html#a6ee6055100beee2bc55426a0e909dc59\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01238\" name=\"l01238\"></a><span class=\"lineno\"> 1238</span>                                         srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l01239\" name=\"l01239\"></a><span class=\"lineno\"> 1239</span>                                         dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01240\" name=\"l01240\"></a><span class=\"lineno\"> 1240</span>                                         numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l01241\" name=\"l01241\"></a><span class=\"lineno\"> 1241</span>                                         patchTable);</div>\n-<div class=\"line\"><a id=\"l01242\" name=\"l01242\"></a><span class=\"lineno\"> 1242</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l01243\" name=\"l01243\"></a><span class=\"lineno\"> 1243</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n-<div class=\"line\"><a id=\"l01244\" name=\"l01244\"></a><span class=\"lineno\"> 1244</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l01245\" name=\"l01245\"></a><span class=\"lineno\"> 1245</span>            instance = <a class=\"code hl_function\" href=\"a01253.html#a5be617906ad76ddcc4795dd6557a79f7\">Create</a>(srcDesc, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01246\" name=\"l01246\"></a><span class=\"lineno\"> 1246</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l01247\" name=\"l01247\"></a><span class=\"lineno\"> 1247</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>());</div>\n-<div class=\"line\"><a id=\"l01248\" name=\"l01248\"></a><span class=\"lineno\"> 1248</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l01249\" name=\"l01249\"></a><span class=\"lineno\"> 1249</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01253.html#a6ee6055100beee2bc55426a0e909dc59\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01250\" name=\"l01250\"></a><span class=\"lineno\"> 1250</span>                                               srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l01251\" name=\"l01251\"></a><span class=\"lineno\"> 1251</span>                                               dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01252\" name=\"l01252\"></a><span class=\"lineno\"> 1252</span>                                               numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l01253\" name=\"l01253\"></a><span class=\"lineno\"> 1253</span>                                               patchTable);</div>\n-<div class=\"line\"><a id=\"l01254\" name=\"l01254\"></a><span class=\"lineno\"> 1254</span>                <span class=\"keyword\">delete</span> instance;</div>\n-<div class=\"line\"><a id=\"l01255\" name=\"l01255\"></a><span class=\"lineno\"> 1255</span>                <span class=\"keywordflow\">return</span> r;</div>\n-<div class=\"line\"><a id=\"l01256\" name=\"l01256\"></a><span class=\"lineno\"> 1256</span>            }</div>\n-<div class=\"line\"><a id=\"l01257\" name=\"l01257\"></a><span class=\"lineno\"> 1257</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l01258\" name=\"l01258\"></a><span class=\"lineno\"> 1258</span>        }</div>\n-<div class=\"line\"><a id=\"l01259\" name=\"l01259\"></a><span class=\"lineno\"> 1259</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01260\" name=\"l01260\"></a><span class=\"lineno\"> 1260</span> </div>\n-<div class=\"line\"><a id=\"l01285\" name=\"l01285\"></a><span class=\"lineno\"> 1285</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01286\" name=\"l01286\"></a><span class=\"lineno\"> 1286</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01287\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01287\" name=\"l01287\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#a03c47cdd97f18b8bbdd1e3ce66cbd5d8\"> 1287</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01253.html#a03c47cdd97f18b8bbdd1e3ce66cbd5d8\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01288\" name=\"l01288\"></a><span class=\"lineno\"> 1288</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01289\" name=\"l01289\"></a><span class=\"lineno\"> 1289</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01290\" name=\"l01290\"></a><span class=\"lineno\"> 1290</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01291\" name=\"l01291\"></a><span class=\"lineno\"> 1291</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01292\" name=\"l01292\"></a><span class=\"lineno\"> 1292</span>        PATCH_TABLE *patchTable)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l01293\" name=\"l01293\"></a><span class=\"lineno\"> 1293</span> </div>\n-<div class=\"line\"><a id=\"l01294\" name=\"l01294\"></a><span class=\"lineno\"> 1294</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01253.html#a8ba6c1bfddfa877a523c098af03af037\">EvalPatches</a>(srcBuffer-&gt;BindVBO(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01295\" name=\"l01295\"></a><span class=\"lineno\"> 1295</span>                           dstBuffer-&gt;BindVBO(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l01296\" name=\"l01296\"></a><span class=\"lineno\"> 1296</span>                           0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l01297\" name=\"l01297\"></a><span class=\"lineno\"> 1297</span>                           0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l01298\" name=\"l01298\"></a><span class=\"lineno\"> 1298</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01299\" name=\"l01299\"></a><span class=\"lineno\"> 1299</span>                           patchCoords-&gt;BindVBO(),</div>\n-<div class=\"line\"><a id=\"l01300\" name=\"l01300\"></a><span class=\"lineno\"> 1300</span>                           patchTable-&gt;GetVaryingPatchArrays(),</div>\n-<div class=\"line\"><a id=\"l01301\" name=\"l01301\"></a><span class=\"lineno\"> 1301</span>                           patchTable-&gt;GetVaryingPatchIndexTextureBuffer(),</div>\n-<div class=\"line\"><a id=\"l01302\" name=\"l01302\"></a><span class=\"lineno\"> 1302</span>                           patchTable-&gt;GetPatchParamTextureBuffer());</div>\n-<div class=\"line\"><a id=\"l01303\" name=\"l01303\"></a><span class=\"lineno\"> 1303</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01304\" name=\"l01304\"></a><span class=\"lineno\"> 1304</span> </div>\n-<div class=\"line\"><a id=\"l01349\" name=\"l01349\"></a><span class=\"lineno\"> 1349</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01350\" name=\"l01350\"></a><span class=\"lineno\"> 1350</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01351\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01351\" name=\"l01351\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#a4e52803429d069b9631cce1535a20c4c\"> 1351</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01253.html#a4e52803429d069b9631cce1535a20c4c\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01352\" name=\"l01352\"></a><span class=\"lineno\"> 1352</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01353\" name=\"l01353\"></a><span class=\"lineno\"> 1353</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01354\" name=\"l01354\"></a><span class=\"lineno\"> 1354</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l01355\" name=\"l01355\"></a><span class=\"lineno\"> 1355</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l01356\" name=\"l01356\"></a><span class=\"lineno\"> 1356</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01357\" name=\"l01357\"></a><span class=\"lineno\"> 1357</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01358\" name=\"l01358\"></a><span class=\"lineno\"> 1358</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l01359\" name=\"l01359\"></a><span class=\"lineno\"> 1359</span>        <a class=\"code hl_class\" href=\"a01253.html\">GLXFBEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n-<div class=\"line\"><a id=\"l01360\" name=\"l01360\"></a><span class=\"lineno\"> 1360</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l01361\" name=\"l01361\"></a><span class=\"lineno\"> 1361</span> </div>\n-<div class=\"line\"><a id=\"l01362\" name=\"l01362\"></a><span class=\"lineno\"> 1362</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l01363\" name=\"l01363\"></a><span class=\"lineno\"> 1363</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01253.html#a6ee6055100beee2bc55426a0e909dc59\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01364\" name=\"l01364\"></a><span class=\"lineno\"> 1364</span>                                         srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l01365\" name=\"l01365\"></a><span class=\"lineno\"> 1365</span>                                         dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01366\" name=\"l01366\"></a><span class=\"lineno\"> 1366</span>                                         duBuffer, duDesc,</div>\n-<div class=\"line\"><a id=\"l01367\" name=\"l01367\"></a><span class=\"lineno\"> 1367</span>                                         dvBuffer, dvDesc,</div>\n-<div class=\"line\"><a id=\"l01368\" name=\"l01368\"></a><span class=\"lineno\"> 1368</span>                                         numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l01369\" name=\"l01369\"></a><span class=\"lineno\"> 1369</span>                                         patchTable);</div>\n-<div class=\"line\"><a id=\"l01370\" name=\"l01370\"></a><span class=\"lineno\"> 1370</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l01371\" name=\"l01371\"></a><span class=\"lineno\"> 1371</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n-<div class=\"line\"><a id=\"l01372\" name=\"l01372\"></a><span class=\"lineno\"> 1372</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l01373\" name=\"l01373\"></a><span class=\"lineno\"> 1373</span>            instance = <a class=\"code hl_function\" href=\"a01253.html#a5be617906ad76ddcc4795dd6557a79f7\">Create</a>(srcDesc, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01374\" name=\"l01374\"></a><span class=\"lineno\"> 1374</span>                              duDesc, dvDesc);</div>\n-<div class=\"line\"><a id=\"l01375\" name=\"l01375\"></a><span class=\"lineno\"> 1375</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l01376\" name=\"l01376\"></a><span class=\"lineno\"> 1376</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01253.html#a6ee6055100beee2bc55426a0e909dc59\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01377\" name=\"l01377\"></a><span class=\"lineno\"> 1377</span>                                               srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l01378\" name=\"l01378\"></a><span class=\"lineno\"> 1378</span>                                               dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01379\" name=\"l01379\"></a><span class=\"lineno\"> 1379</span>                                               duBuffer, duDesc,</div>\n-<div class=\"line\"><a id=\"l01380\" name=\"l01380\"></a><span class=\"lineno\"> 1380</span>                                               dvBuffer, dvDesc,</div>\n-<div class=\"line\"><a id=\"l01381\" name=\"l01381\"></a><span class=\"lineno\"> 1381</span>                                               numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l01382\" name=\"l01382\"></a><span class=\"lineno\"> 1382</span>                                               patchTable);</div>\n-<div class=\"line\"><a id=\"l01383\" name=\"l01383\"></a><span class=\"lineno\"> 1383</span>                <span class=\"keyword\">delete</span> instance;</div>\n-<div class=\"line\"><a id=\"l01384\" name=\"l01384\"></a><span class=\"lineno\"> 1384</span>                <span class=\"keywordflow\">return</span> r;</div>\n-<div class=\"line\"><a id=\"l01385\" name=\"l01385\"></a><span class=\"lineno\"> 1385</span>            }</div>\n-<div class=\"line\"><a id=\"l01386\" name=\"l01386\"></a><span class=\"lineno\"> 1386</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l01387\" name=\"l01387\"></a><span class=\"lineno\"> 1387</span>        }</div>\n-<div class=\"line\"><a id=\"l01388\" name=\"l01388\"></a><span class=\"lineno\"> 1388</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01389\" name=\"l01389\"></a><span class=\"lineno\"> 1389</span> </div>\n-<div class=\"line\"><a id=\"l01426\" name=\"l01426\"></a><span class=\"lineno\"> 1426</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01427\" name=\"l01427\"></a><span class=\"lineno\"> 1427</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01428\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01428\" name=\"l01428\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#ae642c88c8896d4d55b1876757197b1cc\"> 1428</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01253.html#ae642c88c8896d4d55b1876757197b1cc\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01429\" name=\"l01429\"></a><span class=\"lineno\"> 1429</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01430\" name=\"l01430\"></a><span class=\"lineno\"> 1430</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01431\" name=\"l01431\"></a><span class=\"lineno\"> 1431</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l01432\" name=\"l01432\"></a><span class=\"lineno\"> 1432</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l01433\" name=\"l01433\"></a><span class=\"lineno\"> 1433</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01434\" name=\"l01434\"></a><span class=\"lineno\"> 1434</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01435\" name=\"l01435\"></a><span class=\"lineno\"> 1435</span>        PATCH_TABLE *patchTable)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l01436\" name=\"l01436\"></a><span class=\"lineno\"> 1436</span> </div>\n-<div class=\"line\"><a id=\"l01437\" name=\"l01437\"></a><span class=\"lineno\"> 1437</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01253.html#a8ba6c1bfddfa877a523c098af03af037\">EvalPatches</a>(srcBuffer-&gt;BindVBO(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01438\" name=\"l01438\"></a><span class=\"lineno\"> 1438</span>                           dstBuffer-&gt;BindVBO(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l01439\" name=\"l01439\"></a><span class=\"lineno\"> 1439</span>                           duBuffer-&gt;BindVBO(), duDesc,</div>\n-<div class=\"line\"><a id=\"l01440\" name=\"l01440\"></a><span class=\"lineno\"> 1440</span>                           dvBuffer-&gt;BindVBO(), dvDesc,</div>\n-<div class=\"line\"><a id=\"l01441\" name=\"l01441\"></a><span class=\"lineno\"> 1441</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01442\" name=\"l01442\"></a><span class=\"lineno\"> 1442</span>                           patchCoords-&gt;BindVBO(),</div>\n-<div class=\"line\"><a id=\"l01443\" name=\"l01443\"></a><span class=\"lineno\"> 1443</span>                           patchTable-&gt;GetVaryingPatchArrays(),</div>\n-<div class=\"line\"><a id=\"l01444\" name=\"l01444\"></a><span class=\"lineno\"> 1444</span>                           patchTable-&gt;GetVaryingPatchIndexTextureBuffer(),</div>\n-<div class=\"line\"><a id=\"l01445\" name=\"l01445\"></a><span class=\"lineno\"> 1445</span>                           patchTable-&gt;GetPatchParamTextureBuffer());</div>\n-<div class=\"line\"><a id=\"l01446\" name=\"l01446\"></a><span class=\"lineno\"> 1446</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01447\" name=\"l01447\"></a><span class=\"lineno\"> 1447</span> </div>\n-<div class=\"line\"><a id=\"l01510\" name=\"l01510\"></a><span class=\"lineno\"> 1510</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01511\" name=\"l01511\"></a><span class=\"lineno\"> 1511</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01512\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01512\" name=\"l01512\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#ab5bace5b1f7bb4faa1fedfcf7d4fe77d\"> 1512</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01253.html#ab5bace5b1f7bb4faa1fedfcf7d4fe77d\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01513\" name=\"l01513\"></a><span class=\"lineno\"> 1513</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01514\" name=\"l01514\"></a><span class=\"lineno\"> 1514</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01515\" name=\"l01515\"></a><span class=\"lineno\"> 1515</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l01516\" name=\"l01516\"></a><span class=\"lineno\"> 1516</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l01517\" name=\"l01517\"></a><span class=\"lineno\"> 1517</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l01518\" name=\"l01518\"></a><span class=\"lineno\"> 1518</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l01519\" name=\"l01519\"></a><span class=\"lineno\"> 1519</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l01520\" name=\"l01520\"></a><span class=\"lineno\"> 1520</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01521\" name=\"l01521\"></a><span class=\"lineno\"> 1521</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01522\" name=\"l01522\"></a><span class=\"lineno\"> 1522</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l01523\" name=\"l01523\"></a><span class=\"lineno\"> 1523</span>        <a class=\"code hl_class\" href=\"a01253.html\">GLXFBEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n-<div class=\"line\"><a id=\"l01524\" name=\"l01524\"></a><span class=\"lineno\"> 1524</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l01525\" name=\"l01525\"></a><span class=\"lineno\"> 1525</span> </div>\n-<div class=\"line\"><a id=\"l01526\" name=\"l01526\"></a><span class=\"lineno\"> 1526</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l01527\" name=\"l01527\"></a><span class=\"lineno\"> 1527</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01253.html#a6ee6055100beee2bc55426a0e909dc59\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01528\" name=\"l01528\"></a><span class=\"lineno\"> 1528</span>                                         srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l01529\" name=\"l01529\"></a><span class=\"lineno\"> 1529</span>                                         dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01530\" name=\"l01530\"></a><span class=\"lineno\"> 1530</span>                                         duBuffer, duDesc,</div>\n-<div class=\"line\"><a id=\"l01531\" name=\"l01531\"></a><span class=\"lineno\"> 1531</span>                                         dvBuffer, dvDesc,</div>\n-<div class=\"line\"><a id=\"l01532\" name=\"l01532\"></a><span class=\"lineno\"> 1532</span>                                         duuBuffer, duuDesc,</div>\n-<div class=\"line\"><a id=\"l01533\" name=\"l01533\"></a><span class=\"lineno\"> 1533</span>                                         duvBuffer, duvDesc,</div>\n-<div class=\"line\"><a id=\"l01534\" name=\"l01534\"></a><span class=\"lineno\"> 1534</span>                                         dvvBuffer, dvvDesc,</div>\n-<div class=\"line\"><a id=\"l01535\" name=\"l01535\"></a><span class=\"lineno\"> 1535</span>                                         numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l01536\" name=\"l01536\"></a><span class=\"lineno\"> 1536</span>                                         patchTable);</div>\n-<div class=\"line\"><a id=\"l01537\" name=\"l01537\"></a><span class=\"lineno\"> 1537</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l01538\" name=\"l01538\"></a><span class=\"lineno\"> 1538</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n-<div class=\"line\"><a id=\"l01539\" name=\"l01539\"></a><span class=\"lineno\"> 1539</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l01540\" name=\"l01540\"></a><span class=\"lineno\"> 1540</span>            instance = <a class=\"code hl_function\" href=\"a01253.html#a5be617906ad76ddcc4795dd6557a79f7\">Create</a>(srcDesc, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01541\" name=\"l01541\"></a><span class=\"lineno\"> 1541</span>                              duDesc, dvDesc,</div>\n-<div class=\"line\"><a id=\"l01542\" name=\"l01542\"></a><span class=\"lineno\"> 1542</span>                              duuDesc, duvDesc, dvvDesc);</div>\n-<div class=\"line\"><a id=\"l01543\" name=\"l01543\"></a><span class=\"lineno\"> 1543</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l01544\" name=\"l01544\"></a><span class=\"lineno\"> 1544</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01253.html#a6ee6055100beee2bc55426a0e909dc59\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01545\" name=\"l01545\"></a><span class=\"lineno\"> 1545</span>                                               srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l01546\" name=\"l01546\"></a><span class=\"lineno\"> 1546</span>                                               dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01547\" name=\"l01547\"></a><span class=\"lineno\"> 1547</span>                                               duBuffer, duDesc,</div>\n-<div class=\"line\"><a id=\"l01548\" name=\"l01548\"></a><span class=\"lineno\"> 1548</span>                                               dvBuffer, dvDesc,</div>\n-<div class=\"line\"><a id=\"l01549\" name=\"l01549\"></a><span class=\"lineno\"> 1549</span>                                               duuBuffer, duuDesc,</div>\n-<div class=\"line\"><a id=\"l01550\" name=\"l01550\"></a><span class=\"lineno\"> 1550</span>                                               duvBuffer, duvDesc,</div>\n-<div class=\"line\"><a id=\"l01551\" name=\"l01551\"></a><span class=\"lineno\"> 1551</span>                                               dvvBuffer, dvvDesc,</div>\n-<div class=\"line\"><a id=\"l01552\" name=\"l01552\"></a><span class=\"lineno\"> 1552</span>                                               numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l01553\" name=\"l01553\"></a><span class=\"lineno\"> 1553</span>                                               patchTable);</div>\n-<div class=\"line\"><a id=\"l01554\" name=\"l01554\"></a><span class=\"lineno\"> 1554</span>                <span class=\"keyword\">delete</span> instance;</div>\n-<div class=\"line\"><a id=\"l01555\" name=\"l01555\"></a><span class=\"lineno\"> 1555</span>                <span class=\"keywordflow\">return</span> r;</div>\n-<div class=\"line\"><a id=\"l01556\" name=\"l01556\"></a><span class=\"lineno\"> 1556</span>            }</div>\n-<div class=\"line\"><a id=\"l01557\" name=\"l01557\"></a><span class=\"lineno\"> 1557</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l01558\" name=\"l01558\"></a><span class=\"lineno\"> 1558</span>        }</div>\n-<div class=\"line\"><a id=\"l01559\" name=\"l01559\"></a><span class=\"lineno\"> 1559</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01560\" name=\"l01560\"></a><span class=\"lineno\"> 1560</span> </div>\n-<div class=\"line\"><a id=\"l01615\" name=\"l01615\"></a><span class=\"lineno\"> 1615</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01616\" name=\"l01616\"></a><span class=\"lineno\"> 1616</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01617\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01617\" name=\"l01617\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#a7a65272357856989d99d800900d53e85\"> 1617</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01253.html#a7a65272357856989d99d800900d53e85\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01618\" name=\"l01618\"></a><span class=\"lineno\"> 1618</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01619\" name=\"l01619\"></a><span class=\"lineno\"> 1619</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01620\" name=\"l01620\"></a><span class=\"lineno\"> 1620</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l01621\" name=\"l01621\"></a><span class=\"lineno\"> 1621</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l01622\" name=\"l01622\"></a><span class=\"lineno\"> 1622</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l01623\" name=\"l01623\"></a><span class=\"lineno\"> 1623</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l01624\" name=\"l01624\"></a><span class=\"lineno\"> 1624</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l01625\" name=\"l01625\"></a><span class=\"lineno\"> 1625</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01626\" name=\"l01626\"></a><span class=\"lineno\"> 1626</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01627\" name=\"l01627\"></a><span class=\"lineno\"> 1627</span>        PATCH_TABLE *patchTable)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l01628\" name=\"l01628\"></a><span class=\"lineno\"> 1628</span> </div>\n-<div class=\"line\"><a id=\"l01629\" name=\"l01629\"></a><span class=\"lineno\"> 1629</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01253.html#a8ba6c1bfddfa877a523c098af03af037\">EvalPatches</a>(srcBuffer-&gt;BindVBO(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01630\" name=\"l01630\"></a><span class=\"lineno\"> 1630</span>                           dstBuffer-&gt;BindVBO(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l01631\" name=\"l01631\"></a><span class=\"lineno\"> 1631</span>                           duBuffer-&gt;BindVBO(), duDesc,</div>\n-<div class=\"line\"><a id=\"l01632\" name=\"l01632\"></a><span class=\"lineno\"> 1632</span>                           dvBuffer-&gt;BindVBO(), dvDesc,</div>\n-<div class=\"line\"><a id=\"l01633\" name=\"l01633\"></a><span class=\"lineno\"> 1633</span>                           duuBuffer-&gt;BindVBO(), duuDesc,</div>\n-<div class=\"line\"><a id=\"l01634\" name=\"l01634\"></a><span class=\"lineno\"> 1634</span>                           duvBuffer-&gt;BindVBO(), duvDesc,</div>\n-<div class=\"line\"><a id=\"l01635\" name=\"l01635\"></a><span class=\"lineno\"> 1635</span>                           dvvBuffer-&gt;BindVBO(), dvvDesc,</div>\n-<div class=\"line\"><a id=\"l01636\" name=\"l01636\"></a><span class=\"lineno\"> 1636</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01637\" name=\"l01637\"></a><span class=\"lineno\"> 1637</span>                           patchCoords-&gt;BindVBO(),</div>\n-<div class=\"line\"><a id=\"l01638\" name=\"l01638\"></a><span class=\"lineno\"> 1638</span>                           patchTable-&gt;GetVaryingPatchArrays(),</div>\n-<div class=\"line\"><a id=\"l01639\" name=\"l01639\"></a><span class=\"lineno\"> 1639</span>                           patchTable-&gt;GetVaryingPatchIndexTextureBuffer(),</div>\n-<div class=\"line\"><a id=\"l01640\" name=\"l01640\"></a><span class=\"lineno\"> 1640</span>                           patchTable-&gt;GetPatchParamTextureBuffer());</div>\n-<div class=\"line\"><a id=\"l01641\" name=\"l01641\"></a><span class=\"lineno\"> 1641</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01642\" name=\"l01642\"></a><span class=\"lineno\"> 1642</span> </div>\n-<div class=\"line\"><a id=\"l01677\" name=\"l01677\"></a><span class=\"lineno\"> 1677</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01678\" name=\"l01678\"></a><span class=\"lineno\"> 1678</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01679\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01679\" name=\"l01679\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#ac843917323be2a95667e5460702b3682\"> 1679</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01253.html#ac843917323be2a95667e5460702b3682\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01680\" name=\"l01680\"></a><span class=\"lineno\"> 1680</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01681\" name=\"l01681\"></a><span class=\"lineno\"> 1681</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01682\" name=\"l01682\"></a><span class=\"lineno\"> 1682</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01683\" name=\"l01683\"></a><span class=\"lineno\"> 1683</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01684\" name=\"l01684\"></a><span class=\"lineno\"> 1684</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l01685\" name=\"l01685\"></a><span class=\"lineno\"> 1685</span>        <span class=\"keywordtype\">int</span> fvarChannel,</div>\n-<div class=\"line\"><a id=\"l01686\" name=\"l01686\"></a><span class=\"lineno\"> 1686</span>        <a class=\"code hl_class\" href=\"a01253.html\">GLXFBEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n-<div class=\"line\"><a id=\"l01687\" name=\"l01687\"></a><span class=\"lineno\"> 1687</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l01688\" name=\"l01688\"></a><span class=\"lineno\"> 1688</span> </div>\n-<div class=\"line\"><a id=\"l01689\" name=\"l01689\"></a><span class=\"lineno\"> 1689</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l01690\" name=\"l01690\"></a><span class=\"lineno\"> 1690</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01253.html#ac843917323be2a95667e5460702b3682\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01691\" name=\"l01691\"></a><span class=\"lineno\"> 1691</span>                                         srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l01692\" name=\"l01692\"></a><span class=\"lineno\"> 1692</span>                                         dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01693\" name=\"l01693\"></a><span class=\"lineno\"> 1693</span>                                         numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l01694\" name=\"l01694\"></a><span class=\"lineno\"> 1694</span>                                         patchTable, fvarChannel);</div>\n-<div class=\"line\"><a id=\"l01695\" name=\"l01695\"></a><span class=\"lineno\"> 1695</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l01696\" name=\"l01696\"></a><span class=\"lineno\"> 1696</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n-<div class=\"line\"><a id=\"l01697\" name=\"l01697\"></a><span class=\"lineno\"> 1697</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l01698\" name=\"l01698\"></a><span class=\"lineno\"> 1698</span>            instance = <a class=\"code hl_function\" href=\"a01253.html#a5be617906ad76ddcc4795dd6557a79f7\">Create</a>(srcDesc, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01699\" name=\"l01699\"></a><span class=\"lineno\"> 1699</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l01700\" name=\"l01700\"></a><span class=\"lineno\"> 1700</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>());</div>\n-<div class=\"line\"><a id=\"l01701\" name=\"l01701\"></a><span class=\"lineno\"> 1701</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l01702\" name=\"l01702\"></a><span class=\"lineno\"> 1702</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01253.html#ac843917323be2a95667e5460702b3682\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01703\" name=\"l01703\"></a><span class=\"lineno\"> 1703</span>                                               srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l01704\" name=\"l01704\"></a><span class=\"lineno\"> 1704</span>                                               dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01705\" name=\"l01705\"></a><span class=\"lineno\"> 1705</span>                                               numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l01706\" name=\"l01706\"></a><span class=\"lineno\"> 1706</span>                                               patchTable, fvarChannel);</div>\n-<div class=\"line\"><a id=\"l01707\" name=\"l01707\"></a><span class=\"lineno\"> 1707</span>                <span class=\"keyword\">delete</span> instance;</div>\n-<div class=\"line\"><a id=\"l01708\" name=\"l01708\"></a><span class=\"lineno\"> 1708</span>                <span class=\"keywordflow\">return</span> r;</div>\n-<div class=\"line\"><a id=\"l01709\" name=\"l01709\"></a><span class=\"lineno\"> 1709</span>            }</div>\n-<div class=\"line\"><a id=\"l01710\" name=\"l01710\"></a><span class=\"lineno\"> 1710</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l01711\" name=\"l01711\"></a><span class=\"lineno\"> 1711</span>        }</div>\n-<div class=\"line\"><a id=\"l01712\" name=\"l01712\"></a><span class=\"lineno\"> 1712</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01713\" name=\"l01713\"></a><span class=\"lineno\"> 1713</span> </div>\n-<div class=\"line\"><a id=\"l01740\" name=\"l01740\"></a><span class=\"lineno\"> 1740</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01741\" name=\"l01741\"></a><span class=\"lineno\"> 1741</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01742\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01742\" name=\"l01742\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#af7d3e4db03873d8c0d5da1d2c53f979e\"> 1742</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01253.html#af7d3e4db03873d8c0d5da1d2c53f979e\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01743\" name=\"l01743\"></a><span class=\"lineno\"> 1743</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01744\" name=\"l01744\"></a><span class=\"lineno\"> 1744</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01745\" name=\"l01745\"></a><span class=\"lineno\"> 1745</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01746\" name=\"l01746\"></a><span class=\"lineno\"> 1746</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01747\" name=\"l01747\"></a><span class=\"lineno\"> 1747</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l01748\" name=\"l01748\"></a><span class=\"lineno\"> 1748</span>        <span class=\"keywordtype\">int</span> fvarChannel = 0)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l01749\" name=\"l01749\"></a><span class=\"lineno\"> 1749</span> </div>\n-<div class=\"line\"><a id=\"l01750\" name=\"l01750\"></a><span class=\"lineno\"> 1750</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01253.html#a8ba6c1bfddfa877a523c098af03af037\">EvalPatches</a>(srcBuffer-&gt;BindVBO(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01751\" name=\"l01751\"></a><span class=\"lineno\"> 1751</span>                           dstBuffer-&gt;BindVBO(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l01752\" name=\"l01752\"></a><span class=\"lineno\"> 1752</span>                           0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l01753\" name=\"l01753\"></a><span class=\"lineno\"> 1753</span>                           0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l01754\" name=\"l01754\"></a><span class=\"lineno\"> 1754</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01755\" name=\"l01755\"></a><span class=\"lineno\"> 1755</span>                           patchCoords-&gt;BindVBO(),</div>\n-<div class=\"line\"><a id=\"l01756\" name=\"l01756\"></a><span class=\"lineno\"> 1756</span>                           patchTable-&gt;GetFVarPatchArrays(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l01757\" name=\"l01757\"></a><span class=\"lineno\"> 1757</span>                           patchTable-&gt;GetFVarPatchIndexTextureBuffer(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l01758\" name=\"l01758\"></a><span class=\"lineno\"> 1758</span>                           patchTable-&gt;GetFVarPatchParamTextureBuffer(fvarChannel));</div>\n-<div class=\"line\"><a id=\"l01759\" name=\"l01759\"></a><span class=\"lineno\"> 1759</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01760\" name=\"l01760\"></a><span class=\"lineno\"> 1760</span> </div>\n-<div class=\"line\"><a id=\"l01807\" name=\"l01807\"></a><span class=\"lineno\"> 1807</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01808\" name=\"l01808\"></a><span class=\"lineno\"> 1808</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01809\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01809\" name=\"l01809\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#a9433f78f8817d1ae4f6030144cb16de5\"> 1809</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01253.html#a9433f78f8817d1ae4f6030144cb16de5\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01810\" name=\"l01810\"></a><span class=\"lineno\"> 1810</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01811\" name=\"l01811\"></a><span class=\"lineno\"> 1811</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01812\" name=\"l01812\"></a><span class=\"lineno\"> 1812</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l01813\" name=\"l01813\"></a><span class=\"lineno\"> 1813</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l01814\" name=\"l01814\"></a><span class=\"lineno\"> 1814</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01815\" name=\"l01815\"></a><span class=\"lineno\"> 1815</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01816\" name=\"l01816\"></a><span class=\"lineno\"> 1816</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l01817\" name=\"l01817\"></a><span class=\"lineno\"> 1817</span>        <span class=\"keywordtype\">int</span> fvarChannel,</div>\n-<div class=\"line\"><a id=\"l01818\" name=\"l01818\"></a><span class=\"lineno\"> 1818</span>        <a class=\"code hl_class\" href=\"a01253.html\">GLXFBEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n-<div class=\"line\"><a id=\"l01819\" name=\"l01819\"></a><span class=\"lineno\"> 1819</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l01820\" name=\"l01820\"></a><span class=\"lineno\"> 1820</span> </div>\n-<div class=\"line\"><a id=\"l01821\" name=\"l01821\"></a><span class=\"lineno\"> 1821</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l01822\" name=\"l01822\"></a><span class=\"lineno\"> 1822</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01253.html#ac843917323be2a95667e5460702b3682\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01823\" name=\"l01823\"></a><span class=\"lineno\"> 1823</span>                                         srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l01824\" name=\"l01824\"></a><span class=\"lineno\"> 1824</span>                                         dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01825\" name=\"l01825\"></a><span class=\"lineno\"> 1825</span>                                         duBuffer, duDesc,</div>\n-<div class=\"line\"><a id=\"l01826\" name=\"l01826\"></a><span class=\"lineno\"> 1826</span>                                         dvBuffer, dvDesc,</div>\n-<div class=\"line\"><a id=\"l01827\" name=\"l01827\"></a><span class=\"lineno\"> 1827</span>                                         numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l01828\" name=\"l01828\"></a><span class=\"lineno\"> 1828</span>                                         patchTable, fvarChannel);</div>\n-<div class=\"line\"><a id=\"l01829\" name=\"l01829\"></a><span class=\"lineno\"> 1829</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l01830\" name=\"l01830\"></a><span class=\"lineno\"> 1830</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n-<div class=\"line\"><a id=\"l01831\" name=\"l01831\"></a><span class=\"lineno\"> 1831</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l01832\" name=\"l01832\"></a><span class=\"lineno\"> 1832</span>            instance = <a class=\"code hl_function\" href=\"a01253.html#a5be617906ad76ddcc4795dd6557a79f7\">Create</a>(srcDesc, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01833\" name=\"l01833\"></a><span class=\"lineno\"> 1833</span>                              duDesc, dvDesc);</div>\n-<div class=\"line\"><a id=\"l01834\" name=\"l01834\"></a><span class=\"lineno\"> 1834</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l01835\" name=\"l01835\"></a><span class=\"lineno\"> 1835</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01253.html#ac843917323be2a95667e5460702b3682\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01836\" name=\"l01836\"></a><span class=\"lineno\"> 1836</span>                                               srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l01837\" name=\"l01837\"></a><span class=\"lineno\"> 1837</span>                                               dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01838\" name=\"l01838\"></a><span class=\"lineno\"> 1838</span>                                               duBuffer, duDesc,</div>\n-<div class=\"line\"><a id=\"l01839\" name=\"l01839\"></a><span class=\"lineno\"> 1839</span>                                               dvBuffer, dvDesc,</div>\n-<div class=\"line\"><a id=\"l01840\" name=\"l01840\"></a><span class=\"lineno\"> 1840</span>                                               numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l01841\" name=\"l01841\"></a><span class=\"lineno\"> 1841</span>                                               patchTable, fvarChannel);</div>\n-<div class=\"line\"><a id=\"l01842\" name=\"l01842\"></a><span class=\"lineno\"> 1842</span>                <span class=\"keyword\">delete</span> instance;</div>\n-<div class=\"line\"><a id=\"l01843\" name=\"l01843\"></a><span class=\"lineno\"> 1843</span>                <span class=\"keywordflow\">return</span> r;</div>\n-<div class=\"line\"><a id=\"l01844\" name=\"l01844\"></a><span class=\"lineno\"> 1844</span>            }</div>\n-<div class=\"line\"><a id=\"l01845\" name=\"l01845\"></a><span class=\"lineno\"> 1845</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l01846\" name=\"l01846\"></a><span class=\"lineno\"> 1846</span>        }</div>\n-<div class=\"line\"><a id=\"l01847\" name=\"l01847\"></a><span class=\"lineno\"> 1847</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01848\" name=\"l01848\"></a><span class=\"lineno\"> 1848</span> </div>\n-<div class=\"line\"><a id=\"l01887\" name=\"l01887\"></a><span class=\"lineno\"> 1887</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01888\" name=\"l01888\"></a><span class=\"lineno\"> 1888</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01889\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01889\" name=\"l01889\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#a8736b15a3afb5b221ed009b19503e063\"> 1889</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01253.html#a8736b15a3afb5b221ed009b19503e063\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01890\" name=\"l01890\"></a><span class=\"lineno\"> 1890</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01891\" name=\"l01891\"></a><span class=\"lineno\"> 1891</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01892\" name=\"l01892\"></a><span class=\"lineno\"> 1892</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l01893\" name=\"l01893\"></a><span class=\"lineno\"> 1893</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l01894\" name=\"l01894\"></a><span class=\"lineno\"> 1894</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01895\" name=\"l01895\"></a><span class=\"lineno\"> 1895</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01896\" name=\"l01896\"></a><span class=\"lineno\"> 1896</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l01897\" name=\"l01897\"></a><span class=\"lineno\"> 1897</span>        <span class=\"keywordtype\">int</span> fvarChannel = 0)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l01898\" name=\"l01898\"></a><span class=\"lineno\"> 1898</span> </div>\n-<div class=\"line\"><a id=\"l01899\" name=\"l01899\"></a><span class=\"lineno\"> 1899</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01253.html#a8ba6c1bfddfa877a523c098af03af037\">EvalPatches</a>(srcBuffer-&gt;BindVBO(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01900\" name=\"l01900\"></a><span class=\"lineno\"> 1900</span>                           dstBuffer-&gt;BindVBO(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l01901\" name=\"l01901\"></a><span class=\"lineno\"> 1901</span>                           duBuffer-&gt;BindVBO(), duDesc,</div>\n-<div class=\"line\"><a id=\"l01902\" name=\"l01902\"></a><span class=\"lineno\"> 1902</span>                           dvBuffer-&gt;BindVBO(), dvDesc,</div>\n-<div class=\"line\"><a id=\"l01903\" name=\"l01903\"></a><span class=\"lineno\"> 1903</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01904\" name=\"l01904\"></a><span class=\"lineno\"> 1904</span>                           patchCoords-&gt;BindVBO(),</div>\n-<div class=\"line\"><a id=\"l01905\" name=\"l01905\"></a><span class=\"lineno\"> 1905</span>                           patchTable-&gt;GetFVarPatchArrays(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l01906\" name=\"l01906\"></a><span class=\"lineno\"> 1906</span>                           patchTable-&gt;GetFVarPatchIndexTextureBuffer(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l01907\" name=\"l01907\"></a><span class=\"lineno\"> 1907</span>                           patchTable-&gt;GetFVarPatchParamTextureBuffer(fvarChannel));</div>\n-<div class=\"line\"><a id=\"l01908\" name=\"l01908\"></a><span class=\"lineno\"> 1908</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01909\" name=\"l01909\"></a><span class=\"lineno\"> 1909</span> </div>\n-<div class=\"line\"><a id=\"l01974\" name=\"l01974\"></a><span class=\"lineno\"> 1974</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01975\" name=\"l01975\"></a><span class=\"lineno\"> 1975</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01976\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01976\" name=\"l01976\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#afb7e2a0c3a861f3dcd410ba0d5b2046e\"> 1976</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01253.html#afb7e2a0c3a861f3dcd410ba0d5b2046e\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01977\" name=\"l01977\"></a><span class=\"lineno\"> 1977</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01978\" name=\"l01978\"></a><span class=\"lineno\"> 1978</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01979\" name=\"l01979\"></a><span class=\"lineno\"> 1979</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l01980\" name=\"l01980\"></a><span class=\"lineno\"> 1980</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l01981\" name=\"l01981\"></a><span class=\"lineno\"> 1981</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l01982\" name=\"l01982\"></a><span class=\"lineno\"> 1982</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l01983\" name=\"l01983\"></a><span class=\"lineno\"> 1983</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l01984\" name=\"l01984\"></a><span class=\"lineno\"> 1984</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01985\" name=\"l01985\"></a><span class=\"lineno\"> 1985</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01986\" name=\"l01986\"></a><span class=\"lineno\"> 1986</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l01987\" name=\"l01987\"></a><span class=\"lineno\"> 1987</span>        <span class=\"keywordtype\">int</span> fvarChannel,</div>\n-<div class=\"line\"><a id=\"l01988\" name=\"l01988\"></a><span class=\"lineno\"> 1988</span>        <a class=\"code hl_class\" href=\"a01253.html\">GLXFBEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n-<div class=\"line\"><a id=\"l01989\" name=\"l01989\"></a><span class=\"lineno\"> 1989</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l01990\" name=\"l01990\"></a><span class=\"lineno\"> 1990</span> </div>\n-<div class=\"line\"><a id=\"l01991\" name=\"l01991\"></a><span class=\"lineno\"> 1991</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l01992\" name=\"l01992\"></a><span class=\"lineno\"> 1992</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01253.html#ac843917323be2a95667e5460702b3682\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01993\" name=\"l01993\"></a><span class=\"lineno\"> 1993</span>                                         srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l01994\" name=\"l01994\"></a><span class=\"lineno\"> 1994</span>                                         dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01995\" name=\"l01995\"></a><span class=\"lineno\"> 1995</span>                                         duBuffer, duDesc,</div>\n-<div class=\"line\"><a id=\"l01996\" name=\"l01996\"></a><span class=\"lineno\"> 1996</span>                                         dvBuffer, dvDesc,</div>\n-<div class=\"line\"><a id=\"l01997\" name=\"l01997\"></a><span class=\"lineno\"> 1997</span>                                         duuBuffer, duuDesc,</div>\n-<div class=\"line\"><a id=\"l01998\" name=\"l01998\"></a><span class=\"lineno\"> 1998</span>                                         duvBuffer, duvDesc,</div>\n-<div class=\"line\"><a id=\"l01999\" name=\"l01999\"></a><span class=\"lineno\"> 1999</span>                                         dvvBuffer, dvvDesc,</div>\n-<div class=\"line\"><a id=\"l02000\" name=\"l02000\"></a><span class=\"lineno\"> 2000</span>                                         numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l02001\" name=\"l02001\"></a><span class=\"lineno\"> 2001</span>                                         patchTable, fvarChannel);</div>\n-<div class=\"line\"><a id=\"l02002\" name=\"l02002\"></a><span class=\"lineno\"> 2002</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l02003\" name=\"l02003\"></a><span class=\"lineno\"> 2003</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n-<div class=\"line\"><a id=\"l02004\" name=\"l02004\"></a><span class=\"lineno\"> 2004</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l02005\" name=\"l02005\"></a><span class=\"lineno\"> 2005</span>            instance = <a class=\"code hl_function\" href=\"a01253.html#a5be617906ad76ddcc4795dd6557a79f7\">Create</a>(srcDesc, dstDesc,</div>\n-<div class=\"line\"><a id=\"l02006\" name=\"l02006\"></a><span class=\"lineno\"> 2006</span>                              duDesc, dvDesc,</div>\n-<div class=\"line\"><a id=\"l02007\" name=\"l02007\"></a><span class=\"lineno\"> 2007</span>                              duuDesc, duvDesc, dvvDesc);</div>\n-<div class=\"line\"><a id=\"l02008\" name=\"l02008\"></a><span class=\"lineno\"> 2008</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l02009\" name=\"l02009\"></a><span class=\"lineno\"> 2009</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01253.html#ac843917323be2a95667e5460702b3682\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l02010\" name=\"l02010\"></a><span class=\"lineno\"> 2010</span>                                               srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l02011\" name=\"l02011\"></a><span class=\"lineno\"> 2011</span>                                               dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l02012\" name=\"l02012\"></a><span class=\"lineno\"> 2012</span>                                               duBuffer, duDesc,</div>\n-<div class=\"line\"><a id=\"l02013\" name=\"l02013\"></a><span class=\"lineno\"> 2013</span>                                               dvBuffer, dvDesc,</div>\n-<div class=\"line\"><a id=\"l02014\" name=\"l02014\"></a><span class=\"lineno\"> 2014</span>                                               duuBuffer, duuDesc,</div>\n-<div class=\"line\"><a id=\"l02015\" name=\"l02015\"></a><span class=\"lineno\"> 2015</span>                                               duvBuffer, duvDesc,</div>\n-<div class=\"line\"><a id=\"l02016\" name=\"l02016\"></a><span class=\"lineno\"> 2016</span>                                               dvvBuffer, dvvDesc,</div>\n-<div class=\"line\"><a id=\"l02017\" name=\"l02017\"></a><span class=\"lineno\"> 2017</span>                                               numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l02018\" name=\"l02018\"></a><span class=\"lineno\"> 2018</span>                                               patchTable, fvarChannel);</div>\n-<div class=\"line\"><a id=\"l02019\" name=\"l02019\"></a><span class=\"lineno\"> 2019</span>                <span class=\"keyword\">delete</span> instance;</div>\n-<div class=\"line\"><a id=\"l02020\" name=\"l02020\"></a><span class=\"lineno\"> 2020</span>                <span class=\"keywordflow\">return</span> r;</div>\n-<div class=\"line\"><a id=\"l02021\" name=\"l02021\"></a><span class=\"lineno\"> 2021</span>            }</div>\n-<div class=\"line\"><a id=\"l02022\" name=\"l02022\"></a><span class=\"lineno\"> 2022</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l02023\" name=\"l02023\"></a><span class=\"lineno\"> 2023</span>        }</div>\n-<div class=\"line\"><a id=\"l02024\" name=\"l02024\"></a><span class=\"lineno\"> 2024</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l02025\" name=\"l02025\"></a><span class=\"lineno\"> 2025</span> </div>\n-<div class=\"line\"><a id=\"l02082\" name=\"l02082\"></a><span class=\"lineno\"> 2082</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l02083\" name=\"l02083\"></a><span class=\"lineno\"> 2083</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen02084\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l02084\" name=\"l02084\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#ab0a4a9c408bc2a690d879cc7c2ffd21c\"> 2084</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01253.html#ab0a4a9c408bc2a690d879cc7c2ffd21c\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l02085\" name=\"l02085\"></a><span class=\"lineno\"> 2085</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l02086\" name=\"l02086\"></a><span class=\"lineno\"> 2086</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l02087\" name=\"l02087\"></a><span class=\"lineno\"> 2087</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l02088\" name=\"l02088\"></a><span class=\"lineno\"> 2088</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l02089\" name=\"l02089\"></a><span class=\"lineno\"> 2089</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l02090\" name=\"l02090\"></a><span class=\"lineno\"> 2090</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l02091\" name=\"l02091\"></a><span class=\"lineno\"> 2091</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l02092\" name=\"l02092\"></a><span class=\"lineno\"> 2092</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l02093\" name=\"l02093\"></a><span class=\"lineno\"> 2093</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l02094\" name=\"l02094\"></a><span class=\"lineno\"> 2094</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l02095\" name=\"l02095\"></a><span class=\"lineno\"> 2095</span>        <span class=\"keywordtype\">int</span> fvarChannel = 0)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l02096\" name=\"l02096\"></a><span class=\"lineno\"> 2096</span> </div>\n-<div class=\"line\"><a id=\"l02097\" name=\"l02097\"></a><span class=\"lineno\"> 2097</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01253.html#a8ba6c1bfddfa877a523c098af03af037\">EvalPatches</a>(srcBuffer-&gt;BindVBO(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l02098\" name=\"l02098\"></a><span class=\"lineno\"> 2098</span>                           dstBuffer-&gt;BindVBO(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l02099\" name=\"l02099\"></a><span class=\"lineno\"> 2099</span>                           duBuffer-&gt;BindVBO(), duDesc,</div>\n-<div class=\"line\"><a id=\"l02100\" name=\"l02100\"></a><span class=\"lineno\"> 2100</span>                           dvBuffer-&gt;BindVBO(), dvDesc,</div>\n-<div class=\"line\"><a id=\"l02101\" name=\"l02101\"></a><span class=\"lineno\"> 2101</span>                           duuBuffer-&gt;BindVBO(), duuDesc,</div>\n-<div class=\"line\"><a id=\"l02102\" name=\"l02102\"></a><span class=\"lineno\"> 2102</span>                           duvBuffer-&gt;BindVBO(), duvDesc,</div>\n-<div class=\"line\"><a id=\"l02103\" name=\"l02103\"></a><span class=\"lineno\"> 2103</span>                           dvvBuffer-&gt;BindVBO(), dvvDesc,</div>\n-<div class=\"line\"><a id=\"l02104\" name=\"l02104\"></a><span class=\"lineno\"> 2104</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l02105\" name=\"l02105\"></a><span class=\"lineno\"> 2105</span>                           patchCoords-&gt;BindVBO(),</div>\n-<div class=\"line\"><a id=\"l02106\" name=\"l02106\"></a><span class=\"lineno\"> 2106</span>                           patchTable-&gt;GetFVarPatchArrays(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l02107\" name=\"l02107\"></a><span class=\"lineno\"> 2107</span>                           patchTable-&gt;GetFVarPatchIndexTextureBuffer(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l02108\" name=\"l02108\"></a><span class=\"lineno\"> 2108</span>                           patchTable-&gt;GetFVarPatchParamTextureBuffer(fvarChannel));</div>\n-<div class=\"line\"><a id=\"l02109\" name=\"l02109\"></a><span class=\"lineno\"> 2109</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l02110\" name=\"l02110\"></a><span class=\"lineno\"> 2110</span> </div>\n-<div class=\"line\"><a id=\"l02116\" name=\"l02116\"></a><span class=\"lineno\"> 2116</span> </div>\n-<div class=\"line\"><a id=\"l02119\" name=\"l02119\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#ade1086349c1a452f60bcf281383ceec2\"> 2119</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01253.html#ade1086349c1a452f60bcf281383ceec2\">Compile</a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l02120\" name=\"l02120\"></a><span class=\"lineno\"> 2120</span>                 <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l02121\" name=\"l02121\"></a><span class=\"lineno\"> 2121</span>                 <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc = <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l02122\" name=\"l02122\"></a><span class=\"lineno\"> 2122</span>                 <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc = <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l02123\" name=\"l02123\"></a><span class=\"lineno\"> 2123</span>                 <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc = <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l02124\" name=\"l02124\"></a><span class=\"lineno\"> 2124</span>                 <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc = <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l02125\" name=\"l02125\"></a><span class=\"lineno\"> 2125</span>                 <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc = <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>());</div>\n-<div class=\"line\"><a id=\"l02126\" name=\"l02126\"></a><span class=\"lineno\"> 2126</span> </div>\n-<div class=\"line\"><a id=\"l02128\" name=\"l02128\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01253.html#a631211712e30cb07dc6d6cc51bb1db15\"> 2128</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01253.html#a631211712e30cb07dc6d6cc51bb1db15\">Synchronize</a>(<span class=\"keywordtype\">void</span> *kernel);</div>\n-<div class=\"line\"><a id=\"l02129\" name=\"l02129\"></a><span class=\"lineno\"> 2129</span> </div>\n-<div class=\"line\"><a id=\"l02130\" name=\"l02130\"></a><span class=\"lineno\"> 2130</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l02131\" name=\"l02131\"></a><span class=\"lineno\"> 2131</span>    GLuint _srcBufferTexture;</div>\n-<div class=\"line\"><a id=\"l02132\" name=\"l02132\"></a><span class=\"lineno\"> 2132</span>    GLuint _patchArraysUBO;</div>\n-<div class=\"line\"><a id=\"l02133\" name=\"l02133\"></a><span class=\"lineno\"> 2133</span>    <span class=\"keywordtype\">bool</span> _interleavedDerivativeBuffers;</div>\n-<div class=\"line\"><a id=\"l02134\" name=\"l02134\"></a><span class=\"lineno\"> 2134</span> </div>\n-<div class=\"line\"><a id=\"l02135\" name=\"l02135\"></a><span class=\"lineno\"> 2135</span>    <span class=\"keyword\">struct </span>_StencilKernel {</div>\n-<div class=\"line\"><a id=\"l02136\" name=\"l02136\"></a><span class=\"lineno\"> 2136</span>        _StencilKernel();</div>\n-<div class=\"line\"><a id=\"l02137\" name=\"l02137\"></a><span class=\"lineno\"> 2137</span>        ~_StencilKernel();</div>\n-<div class=\"line\"><a id=\"l02138\" name=\"l02138\"></a><span class=\"lineno\"> 2138</span>        <span class=\"keywordtype\">bool</span> Compile(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l02139\" name=\"l02139\"></a><span class=\"lineno\"> 2139</span>                     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l02140\" name=\"l02140\"></a><span class=\"lineno\"> 2140</span>                     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l02141\" name=\"l02141\"></a><span class=\"lineno\"> 2141</span>                     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l02142\" name=\"l02142\"></a><span class=\"lineno\"> 2142</span>                     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l02143\" name=\"l02143\"></a><span class=\"lineno\"> 2143</span>                     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l02144\" name=\"l02144\"></a><span class=\"lineno\"> 2144</span>                     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l02145\" name=\"l02145\"></a><span class=\"lineno\"> 2145</span>                     <span class=\"keywordtype\">bool</span> interleavedDerivativeBuffers);</div>\n-<div class=\"line\"><a id=\"l02146\" name=\"l02146\"></a><span class=\"lineno\"> 2146</span>        GLuint program;</div>\n-<div class=\"line\"><a id=\"l02147\" name=\"l02147\"></a><span class=\"lineno\"> 2147</span>        GLint uniformSrcBufferTexture;</div>\n-<div class=\"line\"><a id=\"l02148\" name=\"l02148\"></a><span class=\"lineno\"> 2148</span>        GLint uniformSrcOffset;    <span class=\"comment\">// src buffer offset (in elements)</span></div>\n-<div class=\"line\"><a id=\"l02149\" name=\"l02149\"></a><span class=\"lineno\"> 2149</span> </div>\n-<div class=\"line\"><a id=\"l02150\" name=\"l02150\"></a><span class=\"lineno\"> 2150</span>        GLint uniformSizesTexture;</div>\n-<div class=\"line\"><a id=\"l02151\" name=\"l02151\"></a><span class=\"lineno\"> 2151</span>        GLint uniformOffsetsTexture;</div>\n-<div class=\"line\"><a id=\"l02152\" name=\"l02152\"></a><span class=\"lineno\"> 2152</span>        GLint uniformIndicesTexture;</div>\n-<div class=\"line\"><a id=\"l02153\" name=\"l02153\"></a><span class=\"lineno\"> 2153</span>        GLint uniformWeightsTexture;</div>\n-<div class=\"line\"><a id=\"l02154\" name=\"l02154\"></a><span class=\"lineno\"> 2154</span>        GLint uniformDuWeightsTexture;</div>\n-<div class=\"line\"><a id=\"l02155\" name=\"l02155\"></a><span class=\"lineno\"> 2155</span>        GLint uniformDvWeightsTexture;</div>\n-<div class=\"line\"><a id=\"l02156\" name=\"l02156\"></a><span class=\"lineno\"> 2156</span>        GLint uniformDuuWeightsTexture;</div>\n-<div class=\"line\"><a id=\"l02157\" name=\"l02157\"></a><span class=\"lineno\"> 2157</span>        GLint uniformDuvWeightsTexture;</div>\n-<div class=\"line\"><a id=\"l02158\" name=\"l02158\"></a><span class=\"lineno\"> 2158</span>        GLint uniformDvvWeightsTexture;</div>\n-<div class=\"line\"><a id=\"l02159\" name=\"l02159\"></a><span class=\"lineno\"> 2159</span>        GLint uniformStart;     <span class=\"comment\">// range</span></div>\n-<div class=\"line\"><a id=\"l02160\" name=\"l02160\"></a><span class=\"lineno\"> 2160</span>        GLint uniformEnd;</div>\n-<div class=\"line\"><a id=\"l02161\" name=\"l02161\"></a><span class=\"lineno\"> 2161</span>    } _stencilKernel;</div>\n-<div class=\"line\"><a id=\"l02162\" name=\"l02162\"></a><span class=\"lineno\"> 2162</span> </div>\n-<div class=\"line\"><a id=\"l02163\" name=\"l02163\"></a><span class=\"lineno\"> 2163</span>    <span class=\"keyword\">struct </span>_PatchKernel {</div>\n-<div class=\"line\"><a id=\"l02164\" name=\"l02164\"></a><span class=\"lineno\"> 2164</span>        _PatchKernel();</div>\n-<div class=\"line\"><a id=\"l02165\" name=\"l02165\"></a><span class=\"lineno\"> 2165</span>        ~_PatchKernel();</div>\n-<div class=\"line\"><a id=\"l02166\" name=\"l02166\"></a><span class=\"lineno\"> 2166</span>        <span class=\"keywordtype\">bool</span> Compile(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l02167\" name=\"l02167\"></a><span class=\"lineno\"> 2167</span>                     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l02168\" name=\"l02168\"></a><span class=\"lineno\"> 2168</span>                     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l02169\" name=\"l02169\"></a><span class=\"lineno\"> 2169</span>                     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l02170\" name=\"l02170\"></a><span class=\"lineno\"> 2170</span>                     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l02171\" name=\"l02171\"></a><span class=\"lineno\"> 2171</span>                     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l02172\" name=\"l02172\"></a><span class=\"lineno\"> 2172</span>                     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l02173\" name=\"l02173\"></a><span class=\"lineno\"> 2173</span>                     <span class=\"keywordtype\">bool</span> interleavedDerivativeBuffers);</div>\n-<div class=\"line\"><a id=\"l02174\" name=\"l02174\"></a><span class=\"lineno\"> 2174</span>        GLuint program;</div>\n-<div class=\"line\"><a id=\"l02175\" name=\"l02175\"></a><span class=\"lineno\"> 2175</span>        GLint uniformSrcBufferTexture;</div>\n-<div class=\"line\"><a id=\"l02176\" name=\"l02176\"></a><span class=\"lineno\"> 2176</span>        GLint uniformSrcOffset;    <span class=\"comment\">// src buffer offset (in elements)</span></div>\n-<div class=\"line\"><a id=\"l02177\" name=\"l02177\"></a><span class=\"lineno\"> 2177</span> </div>\n-<div class=\"line\"><a id=\"l02178\" name=\"l02178\"></a><span class=\"lineno\"> 2178</span>        GLint uniformPatchArraysUBOBinding;</div>\n-<div class=\"line\"><a id=\"l02179\" name=\"l02179\"></a><span class=\"lineno\"> 2179</span>        GLint uniformPatchParamTexture;</div>\n-<div class=\"line\"><a id=\"l02180\" name=\"l02180\"></a><span class=\"lineno\"> 2180</span>        GLint uniformPatchIndexTexture;</div>\n-<div class=\"line\"><a id=\"l02181\" name=\"l02181\"></a><span class=\"lineno\"> 2181</span>    } _patchKernel;</div>\n-<div class=\"line\"><a id=\"l02182\" name=\"l02182\"></a><span class=\"lineno\"> 2182</span> </div>\n-<div class=\"line\"><a id=\"l02183\" name=\"l02183\"></a><span class=\"lineno\"> 2183</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l02184\" name=\"l02184\"></a><span class=\"lineno\"> 2184</span> </div>\n-<div class=\"line\"><a id=\"l02185\" name=\"l02185\"></a><span class=\"lineno\"> 2185</span>}  <span class=\"comment\">// end namespace Osd</span></div>\n-<div class=\"line\"><a id=\"l02186\" name=\"l02186\"></a><span class=\"lineno\"> 2186</span> </div>\n-<div class=\"line\"><a id=\"l02187\" name=\"l02187\"></a><span class=\"lineno\"> 2187</span>}  <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l02188\" name=\"l02188\"></a><span class=\"lineno\"> 2188</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l02189\" name=\"l02189\"></a><span class=\"lineno\"> 2189</span> </div>\n-<div class=\"line\"><a id=\"l02190\" name=\"l02190\"></a><span class=\"lineno\"> 2190</span>}  <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l02191\" name=\"l02191\"></a><span class=\"lineno\"> 2191</span> </div>\n-<div class=\"line\"><a id=\"l02192\" name=\"l02192\"></a><span class=\"lineno\"> 2192</span> </div>\n-<div class=\"line\"><a id=\"l02193\" name=\"l02193\"></a><span class=\"lineno\"> 2193</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_GL_XFB_EVALUATOR_H</span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\">  138</span>}  <span class=\"comment\">// end namespace Osd</span></div>\n+<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\">  139</span> </div>\n+<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\">  140</span>}  <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\">  141</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span> </div>\n+<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\">  143</span>}  <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\">  144</span> </div>\n+<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\">  145</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_CPU_PATCH_TABLE_H</span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa00912_html_a1e22001c627b0364d6c6d62a3ed05fee\"><div class=\"ttname\"><a href=\"a00912.html#a1e22001c627b0364d6c6d62a3ed05fee\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchParamVector</a></div><div class=\"ttdeci\">std::vector&lt; PatchParam &gt; PatchParamVector</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00133\">types.h:133</a></div></div>\n <div class=\"ttc\" id=\"aa00912_html_a98098cd229f60d2397d84a76fe654a31\"><div class=\"ttname\"><a href=\"a00912.html#a98098cd229f60d2397d84a76fe654a31\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchArrayVector</a></div><div class=\"ttdeci\">std::vector&lt; PatchArray &gt; PatchArrayVector</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00132\">types.h:132</a></div></div>\n-<div class=\"ttc\" id=\"aa01065_html\"><div class=\"ttname\"><a href=\"a01065.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTable</a></div><div class=\"ttdoc\">Stencil table class wrapping the template for compatibility.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00273\">stencilTable.h:273</a></div></div>\n-<div class=\"ttc\" id=\"aa01081_html\"><div class=\"ttname\"><a href=\"a01081.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTable</a></div><div class=\"ttdoc\">Limit stencil table class wrapping the template for compatibility.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00583\">stencilTable.h:583</a></div></div>\n-<div class=\"ttc\" id=\"aa01141_html\"><div class=\"ttname\"><a href=\"a01141.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::BufferDescriptor</a></div><div class=\"ttdoc\">BufferDescriptor is a struct which describes buffer elements in interleaved data buffers....</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00866_source.html#l00061\">bufferDescriptor.h:61</a></div></div>\n-<div class=\"ttc\" id=\"aa01249_html\"><div class=\"ttname\"><a href=\"a01249.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableTBO</a></div><div class=\"ttdoc\">GL TextureBuffer stencil table.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l00052\">glXFBEvaluator.h:52</a></div></div>\n-<div class=\"ttc\" id=\"aa01249_html_a233d7a80471d1d90eb2caf732e25115b\"><div class=\"ttname\"><a href=\"a01249.html#a233d7a80471d1d90eb2caf732e25115b\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableTBO::GetSizesTexture</a></div><div class=\"ttdeci\">GLuint GetSizesTexture() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l00072\">glXFBEvaluator.h:72</a></div></div>\n-<div class=\"ttc\" id=\"aa01249_html_a24a8210b637a5b0fca2b258de3b8b8a6\"><div class=\"ttname\"><a href=\"a01249.html#a24a8210b637a5b0fca2b258de3b8b8a6\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableTBO::Create</a></div><div class=\"ttdeci\">static GLStencilTableTBO * Create(Far::StencilTable const *stencilTable, void *deviceContext=NULL)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l00054\">glXFBEvaluator.h:54</a></div></div>\n-<div class=\"ttc\" id=\"aa01249_html_a5d98fa1e61dcd32b8deb16bc9cf04d52\"><div class=\"ttname\"><a href=\"a01249.html#a5d98fa1e61dcd32b8deb16bc9cf04d52\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableTBO::GetDvvWeightsTexture</a></div><div class=\"ttdeci\">GLuint GetDvvWeightsTexture() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l00080\">glXFBEvaluator.h:80</a></div></div>\n-<div class=\"ttc\" id=\"aa01249_html_a65836d2070b943c8fecbad926d074de2\"><div class=\"ttname\"><a href=\"a01249.html#a65836d2070b943c8fecbad926d074de2\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableTBO::GetNumStencils</a></div><div class=\"ttdeci\">int GetNumStencils() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l00081\">glXFBEvaluator.h:81</a></div></div>\n-<div class=\"ttc\" id=\"aa01249_html_a6987f68e0e090437e6a28dadce50f566\"><div class=\"ttname\"><a href=\"a01249.html#a6987f68e0e090437e6a28dadce50f566\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableTBO::GetDuvWeightsTexture</a></div><div class=\"ttdeci\">GLuint GetDuvWeightsTexture() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l00079\">glXFBEvaluator.h:79</a></div></div>\n-<div class=\"ttc\" id=\"aa01249_html_a70fdd6f46c3a89dd4627b67c9a37d02e\"><div class=\"ttname\"><a href=\"a01249.html#a70fdd6f46c3a89dd4627b67c9a37d02e\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableTBO::GetDuuWeightsTexture</a></div><div class=\"ttdeci\">GLuint GetDuuWeightsTexture() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l00078\">glXFBEvaluator.h:78</a></div></div>\n-<div class=\"ttc\" id=\"aa01249_html_a809a960b308df1bca3d8f406dbf9f422\"><div class=\"ttname\"><a href=\"a01249.html#a809a960b308df1bca3d8f406dbf9f422\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableTBO::GetIndicesTexture</a></div><div class=\"ttdeci\">GLuint GetIndicesTexture() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l00074\">glXFBEvaluator.h:74</a></div></div>\n-<div class=\"ttc\" id=\"aa01249_html_a80dc5a5837edb75950ad0306595cbdcc\"><div class=\"ttname\"><a href=\"a01249.html#a80dc5a5837edb75950ad0306595cbdcc\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableTBO::~GLStencilTableTBO</a></div><div class=\"ttdeci\">~GLStencilTableTBO()</div></div>\n-<div class=\"ttc\" id=\"aa01249_html_abbba46ba67be00a0eac751e3e731db6e\"><div class=\"ttname\"><a href=\"a01249.html#abbba46ba67be00a0eac751e3e731db6e\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableTBO::GLStencilTableTBO</a></div><div class=\"ttdeci\">GLStencilTableTBO(Far::StencilTable const *stencilTable)</div></div>\n-<div class=\"ttc\" id=\"aa01249_html_ac74a769daf1fe45575a16b738bb761cd\"><div class=\"ttname\"><a href=\"a01249.html#ac74a769daf1fe45575a16b738bb761cd\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableTBO::GLStencilTableTBO</a></div><div class=\"ttdeci\">GLStencilTableTBO(Far::LimitStencilTable const *limitStencilTable)</div></div>\n-<div class=\"ttc\" id=\"aa01249_html_ad5f4a852f17762c50c5d3011b11155cb\"><div class=\"ttname\"><a href=\"a01249.html#ad5f4a852f17762c50c5d3011b11155cb\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableTBO::GetWeightsTexture</a></div><div class=\"ttdeci\">GLuint GetWeightsTexture() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l00075\">glXFBEvaluator.h:75</a></div></div>\n-<div class=\"ttc\" id=\"aa01249_html_ae38a4728f9debae7733ab48cfadd8312\"><div class=\"ttname\"><a href=\"a01249.html#ae38a4728f9debae7733ab48cfadd8312\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableTBO::Create</a></div><div class=\"ttdeci\">static GLStencilTableTBO * Create(Far::LimitStencilTable const *limitStencilTable, void *deviceContext=NULL)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l00060\">glXFBEvaluator.h:60</a></div></div>\n-<div class=\"ttc\" id=\"aa01249_html_afb1cd9d41b168ceeadd4892bfb3d3f77\"><div class=\"ttname\"><a href=\"a01249.html#afb1cd9d41b168ceeadd4892bfb3d3f77\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableTBO::GetDvWeightsTexture</a></div><div class=\"ttdeci\">GLuint GetDvWeightsTexture() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l00077\">glXFBEvaluator.h:77</a></div></div>\n-<div class=\"ttc\" id=\"aa01249_html_afd4ff3060d31d9650d6c2820d870fda8\"><div class=\"ttname\"><a href=\"a01249.html#afd4ff3060d31d9650d6c2820d870fda8\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableTBO::GetDuWeightsTexture</a></div><div class=\"ttdeci\">GLuint GetDuWeightsTexture() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l00076\">glXFBEvaluator.h:76</a></div></div>\n-<div class=\"ttc\" id=\"aa01249_html_afef26723ecaa12060e3e4744c0e206a9\"><div class=\"ttname\"><a href=\"a01249.html#afef26723ecaa12060e3e4744c0e206a9\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableTBO::GetOffsetsTexture</a></div><div class=\"ttdeci\">GLuint GetOffsetsTexture() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l00073\">glXFBEvaluator.h:73</a></div></div>\n-<div class=\"ttc\" id=\"aa01253_html\"><div class=\"ttname\"><a href=\"a01253.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l00098\">glXFBEvaluator.h:98</a></div></div>\n-<div class=\"ttc\" id=\"aa01253_html_a03c47cdd97f18b8bbdd1e3ce66cbd5d8\"><div class=\"ttname\"><a href=\"a01253.html#a03c47cdd97f18b8bbdd1e3ce66cbd5d8\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable) const</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l01287\">glXFBEvaluator.h:1287</a></div></div>\n-<div class=\"ttc\" id=\"aa01253_html_a1355f12e6d931e3ab6c8429b798d0269\"><div class=\"ttname\"><a href=\"a01253.html#a1355f12e6d931e3ab6c8429b798d0269\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::Create</a></div><div class=\"ttdeci\">static GLXFBEvaluator * Create(BufferDescriptor const &amp;srcDesc, BufferDescriptor const &amp;dstDesc, BufferDescriptor const &amp;duDesc, BufferDescriptor const &amp;dvDesc, bool interleavedDerivativeBuffers=false)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l00126\">glXFBEvaluator.h:126</a></div></div>\n-<div class=\"ttc\" id=\"aa01253_html_a16dedd32573dd7f70c61f1fb6072e791\"><div class=\"ttname\"><a href=\"a01253.html#a16dedd32573dd7f70c61f1fb6072e791\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalStencils</a></div><div class=\"ttdeci\">bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, STENCIL_TABLE const *stencilTable) const</div><div class=\"ttdoc\">Generic stencil function.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l00506\">glXFBEvaluator.h:506</a></div></div>\n-<div class=\"ttc\" id=\"aa01253_html_a1932f725b28e271ab11ca768ba3bb01e\"><div class=\"ttname\"><a href=\"a01253.html#a1932f725b28e271ab11ca768ba3bb01e\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::GLXFBEvaluator</a></div><div class=\"ttdeci\">GLXFBEvaluator(bool interleavedDerivativeBuffers=false)</div><div class=\"ttdoc\">Constructor.</div></div>\n-<div class=\"ttc\" id=\"aa01253_html_a20fa5a4f3311832729ea7b10f935285d\"><div class=\"ttname\"><a href=\"a01253.html#a20fa5a4f3311832729ea7b10f935285d\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalStencils</a></div><div class=\"ttdeci\">bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, STENCIL_TABLE const *stencilTable) const</div><div class=\"ttdoc\">Generic stencil function.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l00575\">glXFBEvaluator.h:575</a></div></div>\n-<div class=\"ttc\" id=\"aa01253_html_a2c24b70c9312d8dff3fecb9ddea52c44\"><div class=\"ttname\"><a href=\"a01253.html#a2c24b70c9312d8dff3fecb9ddea52c44\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::Instantiatable</a></div><div class=\"ttdeci\">bool Instantiatable</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l00100\">glXFBEvaluator.h:100</a></div></div>\n-<div class=\"ttc\" id=\"aa01253_html_a2d1074f49212a9ae65161e9c957dbab7\"><div class=\"ttname\"><a href=\"a01253.html#a2d1074f49212a9ae65161e9c957dbab7\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalPatches</a></div><div class=\"ttdeci\">bool EvalPatches(GLuint srcBuffer, BufferDescriptor const &amp;srcDesc, GLuint dstBuffer, BufferDescriptor const &amp;dstDesc, GLuint duBuffer, BufferDescriptor const &amp;duDesc, GLuint dvBuffer, BufferDescriptor const &amp;dvDesc, GLuint duuBuffer, BufferDescriptor const &amp;duuDesc, GLuint duvBuffer, BufferDescriptor const &amp;duvDesc, GLuint dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, GLuint patchCoordsBuffer, const PatchArrayVector &amp;patchArrays, GLuint patchIndexBuffer, GLuint patchParamsBuffer) const</div></div>\n-<div class=\"ttc\" id=\"aa01253_html_a327901007bb31de57205e906c2f7ccbf\"><div class=\"ttname\"><a href=\"a01253.html#a327901007bb31de57205e906c2f7ccbf\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, STENCIL_TABLE const *stencilTable, GLXFBEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic static stencil function. This function has a same signature as other device kernels have so t...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l00396\">glXFBEvaluator.h:396</a></div></div>\n-<div class=\"ttc\" id=\"aa01253_html_a35609a9d5a1b087bd675035d710dc688\"><div class=\"ttname\"><a href=\"a01253.html#a35609a9d5a1b087bd675035d710dc688\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalPatches</a></div><div class=\"ttdeci\">bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable) const</div><div class=\"ttdoc\">Generic limit eval function with derivatives. This function has a same signature as other device kern...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l01144\">glXFBEvaluator.h:1144</a></div></div>\n-<div class=\"ttc\" id=\"aa01253_html_a3a08d0f058b0d8dde7c853734ee446c7\"><div class=\"ttname\"><a href=\"a01253.html#a3a08d0f058b0d8dde7c853734ee446c7\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::Create</a></div><div class=\"ttdeci\">static GLXFBEvaluator * Create(BufferDescriptor const &amp;srcDesc, BufferDescriptor const &amp;dstDesc, BufferDescriptor const &amp;duDesc, BufferDescriptor const &amp;dvDesc, BufferDescriptor const &amp;duuDesc, BufferDescriptor const &amp;duvDesc, BufferDescriptor const &amp;dvvDesc, bool interleavedDerivativeBuffers=false)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l00170\">glXFBEvaluator.h:170</a></div></div>\n-<div class=\"ttc\" id=\"aa01253_html_a429f25fc87b709736f619fb76bd6c47f\"><div class=\"ttname\"><a href=\"a01253.html#a429f25fc87b709736f619fb76bd6c47f\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::Create</a></div><div class=\"ttdeci\">static GLXFBEvaluator * Create(BufferDescriptor const &amp;srcDesc, BufferDescriptor const &amp;dstDesc, BufferDescriptor const &amp;duDesc, BufferDescriptor const &amp;dvDesc, void *deviceContext)</div><div class=\"ttdoc\">Specialization to allow creation without a device context.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l00117\">glXFBEvaluator.h:117</a></div></div>\n-<div class=\"ttc\" id=\"aa01253_html_a432c889974c11c85b8a7748412b9bfd8\"><div class=\"ttname\"><a href=\"a01253.html#a432c889974c11c85b8a7748412b9bfd8\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, STENCIL_TABLE const *stencilTable, GLXFBEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic static stencil function. This function has a same signature as other device kernels have so t...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l00306\">glXFBEvaluator.h:306</a></div></div>\n-<div class=\"ttc\" id=\"aa01253_html_a4e52803429d069b9631cce1535a20c4c\"><div class=\"ttname\"><a href=\"a01253.html#a4e52803429d069b9631cce1535a20c4c\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, GLXFBEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l01351\">glXFBEvaluator.h:1351</a></div></div>\n-<div class=\"ttc\" id=\"aa01253_html_a54b949bb4819f61594334e599194f224\"><div class=\"ttname\"><a href=\"a01253.html#a54b949bb4819f61594334e599194f224\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalStencils</a></div><div class=\"ttdeci\">bool EvalStencils(GLuint srcBuffer, BufferDescriptor const &amp;srcDesc, GLuint dstBuffer, BufferDescriptor const &amp;dstDesc, GLuint duBuffer, BufferDescriptor const &amp;duDesc, GLuint dvBuffer, BufferDescriptor const &amp;dvDesc, GLuint duuBuffer, BufferDescriptor const &amp;duuDesc, GLuint duvBuffer, BufferDescriptor const &amp;duvDesc, GLuint dvvBuffer, BufferDescriptor const &amp;dvvDesc, GLuint sizesBuffer, GLuint offsetsBuffer, GLuint indicesBuffer, GLuint weightsBuffer, GLuint duWeightsBuffer, GLuint dvWeightsBuffer, GLuint duuWeightsBuffer, GLuint duvWeightsBuffer, GLuint dvvWeightsBuffer, int start, int end) const</div><div class=\"ttdoc\">Dispatch the GLSL XFB kernel on on GPU asynchronously returns false if the kernel hasn't been compile...</div></div>\n-<div class=\"ttc\" id=\"aa01253_html_a57b0367816baf9831808847cbfe833b0\"><div class=\"ttname\"><a href=\"a01253.html#a57b0367816baf9831808847cbfe833b0\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, GLXFBEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l00843\">glXFBEvaluator.h:843</a></div></div>\n-<div class=\"ttc\" id=\"aa01253_html_a591dd44e4e7d35454ab63664150137a3\"><div class=\"ttname\"><a href=\"a01253.html#a591dd44e4e7d35454ab63664150137a3\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::Create</a></div><div class=\"ttdeci\">static GLXFBEvaluator * Create(BufferDescriptor const &amp;srcDesc, BufferDescriptor const &amp;dstDesc, BufferDescriptor const &amp;duDesc, BufferDescriptor const &amp;dvDesc, BufferDescriptor const &amp;duuDesc, BufferDescriptor const &amp;duvDesc, BufferDescriptor const &amp;dvvDesc, DEVICE_CONTEXT deviceContext)</div><div class=\"ttdoc\">Generic creator template.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l00140\">glXFBEvaluator.h:140</a></div></div>\n-<div class=\"ttc\" id=\"aa01253_html_a5be617906ad76ddcc4795dd6557a79f7\"><div class=\"ttname\"><a href=\"a01253.html#a5be617906ad76ddcc4795dd6557a79f7\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::Create</a></div><div class=\"ttdeci\">static GLXFBEvaluator * Create(BufferDescriptor const &amp;srcDesc, BufferDescriptor const &amp;dstDesc, BufferDescriptor const &amp;duDesc, BufferDescriptor const &amp;dvDesc, DEVICE_CONTEXT deviceContext)</div><div class=\"ttdoc\">Generic creator template.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l00104\">glXFBEvaluator.h:104</a></div></div>\n-<div class=\"ttc\" id=\"aa01253_html_a631211712e30cb07dc6d6cc51bb1db15\"><div class=\"ttname\"><a href=\"a01253.html#a631211712e30cb07dc6d6cc51bb1db15\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::Synchronize</a></div><div class=\"ttdeci\">static void Synchronize(void *kernel)</div><div class=\"ttdoc\">Wait the dispatched kernel finishes.</div></div>\n-<div class=\"ttc\" id=\"aa01253_html_a6ee6055100beee2bc55426a0e909dc59\"><div class=\"ttname\"><a href=\"a01253.html#a6ee6055100beee2bc55426a0e909dc59\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, GLXFBEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l01227\">glXFBEvaluator.h:1227</a></div></div>\n-<div class=\"ttc\" id=\"aa01253_html_a7a65272357856989d99d800900d53e85\"><div class=\"ttname\"><a href=\"a01253.html#a7a65272357856989d99d800900d53e85\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable) const</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l01617\">glXFBEvaluator.h:1617</a></div></div>\n-<div class=\"ttc\" id=\"aa01253_html_a8736b15a3afb5b221ed009b19503e063\"><div class=\"ttname\"><a href=\"a01253.html#a8736b15a3afb5b221ed009b19503e063\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel=0) const</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l01889\">glXFBEvaluator.h:1889</a></div></div>\n-<div class=\"ttc\" id=\"aa01253_html_a8ba6c1bfddfa877a523c098af03af037\"><div class=\"ttname\"><a href=\"a01253.html#a8ba6c1bfddfa877a523c098af03af037\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, GLXFBEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l00765\">glXFBEvaluator.h:765</a></div></div>\n-<div class=\"ttc\" id=\"aa01253_html_a9433f78f8817d1ae4f6030144cb16de5\"><div class=\"ttname\"><a href=\"a01253.html#a9433f78f8817d1ae4f6030144cb16de5\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel, GLXFBEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l01809\">glXFBEvaluator.h:1809</a></div></div>\n-<div class=\"ttc\" id=\"aa01253_html_a96616cfe920c027568e2ae931b3ba506\"><div class=\"ttname\"><a href=\"a01253.html#a96616cfe920c027568e2ae931b3ba506\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalPatches</a></div><div class=\"ttdeci\">bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable) const</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l01016\">glXFBEvaluator.h:1016</a></div></div>\n-<div class=\"ttc\" id=\"aa01253_html_a9a52edc932f03ffa9bbf67c093a1dd65\"><div class=\"ttname\"><a href=\"a01253.html#a9a52edc932f03ffa9bbf67c093a1dd65\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, GLXFBEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l00943\">glXFBEvaluator.h:943</a></div></div>\n-<div class=\"ttc\" id=\"aa01253_html_aa28dc7f2bd31f1cdac0013ad9de8f434\"><div class=\"ttname\"><a href=\"a01253.html#aa28dc7f2bd31f1cdac0013ad9de8f434\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalPatches</a></div><div class=\"ttdeci\">bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable) const</div><div class=\"ttdoc\">Generic limit eval function with derivatives. This function has a same signature as other device kern...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l01070\">glXFBEvaluator.h:1070</a></div></div>\n-<div class=\"ttc\" id=\"aa01253_html_aab4ecc7e79b822b8994b326cc05ad573\"><div class=\"ttname\"><a href=\"a01253.html#aab4ecc7e79b822b8994b326cc05ad573\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalStencils</a></div><div class=\"ttdeci\">bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, STENCIL_TABLE const *stencilTable) const</div><div class=\"ttdoc\">Generic stencil function.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l00457\">glXFBEvaluator.h:457</a></div></div>\n-<div class=\"ttc\" id=\"aa01253_html_aac8b4b814219420a124f8a92c96fd026\"><div class=\"ttname\"><a href=\"a01253.html#aac8b4b814219420a124f8a92c96fd026\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalPatches</a></div><div class=\"ttdeci\">bool EvalPatches(GLuint srcBuffer, BufferDescriptor const &amp;srcDesc, GLuint dstBuffer, BufferDescriptor const &amp;dstDesc, GLuint duBuffer, BufferDescriptor const &amp;duDesc, GLuint dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, GLuint patchCoordsBuffer, const PatchArrayVector &amp;patchArrays, GLuint patchIndexBuffer, GLuint patchParamsBuffer) const</div></div>\n-<div class=\"ttc\" id=\"aa01253_html_aaf7aeae38dd52386c15108d7e94eb30f\"><div class=\"ttname\"><a href=\"a01253.html#aaf7aeae38dd52386c15108d7e94eb30f\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::Create</a></div><div class=\"ttdeci\">static GLXFBEvaluator * Create(BufferDescriptor const &amp;srcDesc, BufferDescriptor const &amp;dstDesc, BufferDescriptor const &amp;duDesc, BufferDescriptor const &amp;dvDesc, BufferDescriptor const &amp;duuDesc, BufferDescriptor const &amp;duvDesc, BufferDescriptor const &amp;dvvDesc, void *deviceContext)</div><div class=\"ttdoc\">Specialization to allow creation without a device context.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l00157\">glXFBEvaluator.h:157</a></div></div>\n-<div class=\"ttc\" id=\"aa01253_html_ab0a4a9c408bc2a690d879cc7c2ffd21c\"><div class=\"ttname\"><a href=\"a01253.html#ab0a4a9c408bc2a690d879cc7c2ffd21c\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel=0) const</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l02084\">glXFBEvaluator.h:2084</a></div></div>\n-<div class=\"ttc\" id=\"aa01253_html_ab5bace5b1f7bb4faa1fedfcf7d4fe77d\"><div class=\"ttname\"><a href=\"a01253.html#ab5bace5b1f7bb4faa1fedfcf7d4fe77d\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, GLXFBEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l01512\">glXFBEvaluator.h:1512</a></div></div>\n-<div class=\"ttc\" id=\"aa01253_html_ab8d69b17b91e3066aaa7dad2d38691de\"><div class=\"ttname\"><a href=\"a01253.html#ab8d69b17b91e3066aaa7dad2d38691de\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalStencils</a></div><div class=\"ttdeci\">bool EvalStencils(GLuint srcBuffer, BufferDescriptor const &amp;srcDesc, GLuint dstBuffer, BufferDescriptor const &amp;dstDesc, GLuint duBuffer, BufferDescriptor const &amp;duDesc, GLuint dvBuffer, BufferDescriptor const &amp;dvDesc, GLuint sizesBuffer, GLuint offsetsBuffer, GLuint indicesBuffer, GLuint weightsBuffer, GLuint duWeightsBuffer, GLuint dvWeightsBuffer, int start, int end) const</div><div class=\"ttdoc\">Dispatch the GLSL XFB kernel on on GPU asynchronously returns false if the kernel hasn't been compile...</div></div>\n-<div class=\"ttc\" id=\"aa01253_html_ac843917323be2a95667e5460702b3682\"><div class=\"ttname\"><a href=\"a01253.html#ac843917323be2a95667e5460702b3682\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel, GLXFBEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l01679\">glXFBEvaluator.h:1679</a></div></div>\n-<div class=\"ttc\" id=\"aa01253_html_ace53e6fcf744de81b768e33166d7201c\"><div class=\"ttname\"><a href=\"a01253.html#ace53e6fcf744de81b768e33166d7201c\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, STENCIL_TABLE const *stencilTable, GLXFBEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic static stencil function. This function has a same signature as other device kernels have so t...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l00238\">glXFBEvaluator.h:238</a></div></div>\n-<div class=\"ttc\" id=\"aa01253_html_adcf442a3c8cf38e102ed5cd50851e006\"><div class=\"ttname\"><a href=\"a01253.html#adcf442a3c8cf38e102ed5cd50851e006\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::~GLXFBEvaluator</a></div><div class=\"ttdeci\">~GLXFBEvaluator()</div><div class=\"ttdoc\">Destructor. note that the GL context must be made current.</div></div>\n-<div class=\"ttc\" id=\"aa01253_html_ade1086349c1a452f60bcf281383ceec2\"><div class=\"ttname\"><a href=\"a01253.html#ade1086349c1a452f60bcf281383ceec2\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::Compile</a></div><div class=\"ttdeci\">bool Compile(BufferDescriptor const &amp;srcDesc, BufferDescriptor const &amp;dstDesc, BufferDescriptor const &amp;duDesc=BufferDescriptor(), BufferDescriptor const &amp;dvDesc=BufferDescriptor(), BufferDescriptor const &amp;duuDesc=BufferDescriptor(), BufferDescriptor const &amp;duvDesc=BufferDescriptor(), BufferDescriptor const &amp;dvvDesc=BufferDescriptor())</div></div>\n-<div class=\"ttc\" id=\"aa01253_html_ae642c88c8896d4d55b1876757197b1cc\"><div class=\"ttname\"><a href=\"a01253.html#ae642c88c8896d4d55b1876757197b1cc\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable) const</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l01428\">glXFBEvaluator.h:1428</a></div></div>\n-<div class=\"ttc\" id=\"aa01253_html_af7d3e4db03873d8c0d5da1d2c53f979e\"><div class=\"ttname\"><a href=\"a01253.html#af7d3e4db03873d8c0d5da1d2c53f979e\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel=0) const</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l01742\">glXFBEvaluator.h:1742</a></div></div>\n-<div class=\"ttc\" id=\"aa01253_html_afb7e2a0c3a861f3dcd410ba0d5b2046e\"><div class=\"ttname\"><a href=\"a01253.html#afb7e2a0c3a861f3dcd410ba0d5b2046e\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel, GLXFBEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l01976\">glXFBEvaluator.h:1976</a></div></div>\n+<div class=\"ttc\" id=\"aa00993_html\"><div class=\"ttname\"><a href=\"a00993.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable</a></div><div class=\"ttdoc\">Container for arrays of parametric patches.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00842_source.html#l00055\">patchTable.h:55</a></div></div>\n+<div class=\"ttc\" id=\"aa01173_html\"><div class=\"ttname\"><a href=\"a01173.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuPatchTable</a></div><div class=\"ttdoc\">Cpu patch table.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l00059\">cpuPatchTable.h:59</a></div></div>\n+<div class=\"ttc\" id=\"aa01173_html_a025630c8fdb360ed195aef08547f1235\"><div class=\"ttname\"><a href=\"a01173.html#a025630c8fdb360ed195aef08547f1235\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuPatchTable::GetFVarPatchArrayBuffer</a></div><div class=\"ttdeci\">const PatchArray * GetFVarPatchArrayBuffer(int fvarChannel=0) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l00109\">cpuPatchTable.h:109</a></div></div>\n+<div class=\"ttc\" id=\"aa01173_html_a0cfc50b227edbe9872586c2b4ab89dec\"><div class=\"ttname\"><a href=\"a01173.html#a0cfc50b227edbe9872586c2b4ab89dec\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuPatchTable::GetVaryingPatchIndexBuffer</a></div><div class=\"ttdeci\">const int * GetVaryingPatchIndexBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l00096\">cpuPatchTable.h:96</a></div></div>\n+<div class=\"ttc\" id=\"aa01173_html_a0ff57b15e0b6f9c4ecd676fd76ae1ba1\"><div class=\"ttname\"><a href=\"a01173.html#a0ff57b15e0b6f9c4ecd676fd76ae1ba1\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuPatchTable::_varyingIndexBuffer</a></div><div class=\"ttdeci\">std::vector&lt; int &gt; _varyingIndexBuffer</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l00131\">cpuPatchTable.h:131</a></div></div>\n+<div class=\"ttc\" id=\"aa01173_html_a154f068140b02b8324cfa70cdbe1191c\"><div class=\"ttname\"><a href=\"a01173.html#a154f068140b02b8324cfa70cdbe1191c\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuPatchTable::GetFVarPatchParamSize</a></div><div class=\"ttdeci\">size_t GetFVarPatchParamSize(int fvarChannel=0) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l00121\">cpuPatchTable.h:121</a></div></div>\n+<div class=\"ttc\" id=\"aa01173_html_a16142cac8dd0880ad2451586633a7999\"><div class=\"ttname\"><a href=\"a01173.html#a16142cac8dd0880ad2451586633a7999\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuPatchTable::~CpuPatchTable</a></div><div class=\"ttdeci\">~CpuPatchTable()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l00068\">cpuPatchTable.h:68</a></div></div>\n+<div class=\"ttc\" id=\"aa01173_html_a18d45929d48a1738134292a7f0b27377\"><div class=\"ttname\"><a href=\"a01173.html#a18d45929d48a1738134292a7f0b27377\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuPatchTable::_patchParamBuffer</a></div><div class=\"ttdeci\">PatchParamVector _patchParamBuffer</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l00128\">cpuPatchTable.h:128</a></div></div>\n+<div class=\"ttc\" id=\"aa01173_html_a1934f183cb763099b7452f3569b70fdc\"><div class=\"ttname\"><a href=\"a01173.html#a1934f183cb763099b7452f3569b70fdc\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuPatchTable::GetPatchIndexBuffer</a></div><div class=\"ttdeci\">const int * GetPatchIndexBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l00073\">cpuPatchTable.h:73</a></div></div>\n+<div class=\"ttc\" id=\"aa01173_html_a27ccdd38f0f38adf16a4f5ceac6fed20\"><div class=\"ttname\"><a href=\"a01173.html#a27ccdd38f0f38adf16a4f5ceac6fed20\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuPatchTable::Create</a></div><div class=\"ttdeci\">static CpuPatchTable * Create(const Far::PatchTable *patchTable, void *deviceContext=NULL)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l00061\">cpuPatchTable.h:61</a></div></div>\n+<div class=\"ttc\" id=\"aa01173_html_a374201f74533e6af17184def3a4d18f3\"><div class=\"ttname\"><a href=\"a01173.html#a374201f74533e6af17184def3a4d18f3\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuPatchTable::_fvarParamBuffers</a></div><div class=\"ttdeci\">std::vector&lt; PatchParamVector &gt; _fvarParamBuffers</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l00135\">cpuPatchTable.h:135</a></div></div>\n+<div class=\"ttc\" id=\"aa01173_html_a3c19d1748852f36ba69a6557e5069e08\"><div class=\"ttname\"><a href=\"a01173.html#a3c19d1748852f36ba69a6557e5069e08\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuPatchTable::CpuPatchTable</a></div><div class=\"ttdeci\">CpuPatchTable(const Far::PatchTable *patchTable)</div></div>\n+<div class=\"ttc\" id=\"aa01173_html_a413f77230a89ed1a04ee4f1407a4d7b3\"><div class=\"ttname\"><a href=\"a01173.html#a413f77230a89ed1a04ee4f1407a4d7b3\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuPatchTable::_fvarIndexBuffers</a></div><div class=\"ttdeci\">std::vector&lt; std::vector&lt; int &gt; &gt; _fvarIndexBuffers</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l00134\">cpuPatchTable.h:134</a></div></div>\n+<div class=\"ttc\" id=\"aa01173_html_a5b16f51336dbdc1af5b34028cc5de8cc\"><div class=\"ttname\"><a href=\"a01173.html#a5b16f51336dbdc1af5b34028cc5de8cc\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuPatchTable::GetPatchIndexSize</a></div><div class=\"ttdeci\">size_t GetPatchIndexSize() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l00083\">cpuPatchTable.h:83</a></div></div>\n+<div class=\"ttc\" id=\"aa01173_html_a5dfb6b58580f2dec58e9b5bfdb4ed9f1\"><div class=\"ttname\"><a href=\"a01173.html#a5dfb6b58580f2dec58e9b5bfdb4ed9f1\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuPatchTable::_patchArrays</a></div><div class=\"ttdeci\">PatchArrayVector _patchArrays</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l00126\">cpuPatchTable.h:126</a></div></div>\n+<div class=\"ttc\" id=\"aa01173_html_a6a81c037eca6f27ea4ef41f39d0a1d50\"><div class=\"ttname\"><a href=\"a01173.html#a6a81c037eca6f27ea4ef41f39d0a1d50\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuPatchTable::GetPatchParamBuffer</a></div><div class=\"ttdeci\">const PatchParam * GetPatchParamBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l00076\">cpuPatchTable.h:76</a></div></div>\n+<div class=\"ttc\" id=\"aa01173_html_a6e32349421c301eddf366c04c3a28015\"><div class=\"ttname\"><a href=\"a01173.html#a6e32349421c301eddf366c04c3a28015\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuPatchTable::_indexBuffer</a></div><div class=\"ttdeci\">std::vector&lt; int &gt; _indexBuffer</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l00127\">cpuPatchTable.h:127</a></div></div>\n+<div class=\"ttc\" id=\"aa01173_html_a89d1a006bc57adefbd8cc2b3221507d8\"><div class=\"ttname\"><a href=\"a01173.html#a89d1a006bc57adefbd8cc2b3221507d8\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuPatchTable::GetFVarPatchIndexSize</a></div><div class=\"ttdeci\">size_t GetFVarPatchIndexSize(int fvarChannel=0) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l00115\">cpuPatchTable.h:115</a></div></div>\n+<div class=\"ttc\" id=\"aa01173_html_a8a0e294dd3f62accf3bcd37506b8f0c0\"><div class=\"ttname\"><a href=\"a01173.html#a8a0e294dd3f62accf3bcd37506b8f0c0\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuPatchTable::GetFVarPatchIndexBuffer</a></div><div class=\"ttdeci\">const int * GetFVarPatchIndexBuffer(int fvarChannel=0) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l00112\">cpuPatchTable.h:112</a></div></div>\n+<div class=\"ttc\" id=\"aa01173_html_a9aff63c1a01a0ab08941350288def5fa\"><div class=\"ttname\"><a href=\"a01173.html#a9aff63c1a01a0ab08941350288def5fa\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuPatchTable::GetFVarPatchParamBuffer</a></div><div class=\"ttdeci\">const PatchParam * GetFVarPatchParamBuffer(int fvarChannel=0) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l00118\">cpuPatchTable.h:118</a></div></div>\n+<div class=\"ttc\" id=\"aa01173_html_a9ca8e987a5e8ac5bbd66f46bf2fc419c\"><div class=\"ttname\"><a href=\"a01173.html#a9ca8e987a5e8ac5bbd66f46bf2fc419c\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuPatchTable::GetPatchParamSize</a></div><div class=\"ttdeci\">size_t GetPatchParamSize() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l00086\">cpuPatchTable.h:86</a></div></div>\n+<div class=\"ttc\" id=\"aa01173_html_aa255bcea11d324b35e8095fa7f134f8c\"><div class=\"ttname\"><a href=\"a01173.html#aa255bcea11d324b35e8095fa7f134f8c\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuPatchTable::GetVaryingPatchIndexSize</a></div><div class=\"ttdeci\">size_t GetVaryingPatchIndexSize() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l00102\">cpuPatchTable.h:102</a></div></div>\n+<div class=\"ttc\" id=\"aa01173_html_aa67ab7e38db41de0990e7d034719dbd1\"><div class=\"ttname\"><a href=\"a01173.html#aa67ab7e38db41de0990e7d034719dbd1\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuPatchTable::GetVaryingPatchArrayBuffer</a></div><div class=\"ttdeci\">const PatchArray * GetVaryingPatchArrayBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l00090\">cpuPatchTable.h:90</a></div></div>\n+<div class=\"ttc\" id=\"aa01173_html_aa9be824a572029f3ec1e0c0d6cfecd77\"><div class=\"ttname\"><a href=\"a01173.html#aa9be824a572029f3ec1e0c0d6cfecd77\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuPatchTable::GetNumFVarChannels</a></div><div class=\"ttdeci\">int GetNumFVarChannels() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l00106\">cpuPatchTable.h:106</a></div></div>\n+<div class=\"ttc\" id=\"aa01173_html_aae90ef525393fa41f95eff50d1255e97\"><div class=\"ttname\"><a href=\"a01173.html#aae90ef525393fa41f95eff50d1255e97\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuPatchTable::GetNumPatchArrays</a></div><div class=\"ttdeci\">size_t GetNumPatchArrays() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l00080\">cpuPatchTable.h:80</a></div></div>\n+<div class=\"ttc\" id=\"aa01173_html_ab6582a6586adaea0803247fb415f8c17\"><div class=\"ttname\"><a href=\"a01173.html#ab6582a6586adaea0803247fb415f8c17\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuPatchTable::GetPatchArrayBuffer</a></div><div class=\"ttdeci\">const PatchArray * GetPatchArrayBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l00070\">cpuPatchTable.h:70</a></div></div>\n+<div class=\"ttc\" id=\"aa01173_html_acd99a0391b3b04586b11051fd0f7ed10\"><div class=\"ttname\"><a href=\"a01173.html#acd99a0391b3b04586b11051fd0f7ed10\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuPatchTable::_varyingPatchArrays</a></div><div class=\"ttdeci\">PatchArrayVector _varyingPatchArrays</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l00130\">cpuPatchTable.h:130</a></div></div>\n+<div class=\"ttc\" id=\"aa01173_html_acdf8228439ce43565d90edce85b43368\"><div class=\"ttname\"><a href=\"a01173.html#acdf8228439ce43565d90edce85b43368\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuPatchTable::_fvarPatchArrays</a></div><div class=\"ttdeci\">std::vector&lt; PatchArrayVector &gt; _fvarPatchArrays</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00791_source.html#l00133\">cpuPatchTable.h:133</a></div></div>\n+<div class=\"ttc\" id=\"aa01325_html\"><div class=\"ttname\"><a href=\"a01325.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchArray</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00066\">types.h:66</a></div></div>\n+<div class=\"ttc\" id=\"aa01329_html\"><div class=\"ttname\"><a href=\"a01329.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchParam</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00127\">types.h:127</a></div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00791.html\">glXFBEvaluator.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00791.html\">cpuPatchTable.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,12 +1,12 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-glXFBEvaluator.h\n+cpuPatchTable.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n 2// Copyright 2015 Pixar\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n@@ -24,1448 +24,215 @@\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n 24\n-25#ifndef OPENSUBDIV3_OSD_GL_XFB_EVALUATOR_H\n-26#define OPENSUBDIV3_OSD_GL_XFB_EVALUATOR_H\n+25#ifndef OPENSUBDIV3_OSD_CPU_PATCH_TABLE_H\n+26#define OPENSUBDIV3_OSD_CPU_PATCH_TABLE_H\n 27\n 28#include \"../version.h\"\n 29\n-30#include \"../osd/opengl.h\"\n-31#include \"../osd/types.h\"\n-32#include \"../osd/bufferDescriptor.h\"\n-33\n-34namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-35namespace OPENSUBDIV_VERSION {\n+30#include <vector>\n+31#include \"../far/patchDescriptor.h\"\n+32#include \"../osd/nonCopyable.h\"\n+33#include \"../osd/types.h\"\n+34\n+35#include <vector>\n 36\n-37namespace Far {\n-38 class PatchTable;\n-39 class StencilTable;\n-40 class LimitStencilTable;\n-41}\n-42\n-43namespace Osd {\n-44\n-_\b5_\b2class _\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bT_\bB_\bO {\n-53public:\n-_\b5_\b4 static _\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bT_\bB_\bO *_\bC_\br_\be_\ba_\bt_\be(\n-55 _\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *stencilTable, void *deviceContext = NULL) {\n-56 (void)deviceContext; // unused\n-57 return new _\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bT_\bB_\bO(stencilTable);\n-58 }\n-59\n-_\b6_\b0 static _\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bT_\bB_\bO *_\bC_\br_\be_\ba_\bt_\be(\n-61 _\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *limitStencilTable,\n+37namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+38namespace OPENSUBDIV_VERSION {\n+39\n+40namespace Far{\n+41 class PatchTable;\n+42};\n+43\n+44namespace Osd {\n+45\n+_\b5_\b9class _\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be {\n+60public:\n+_\b6_\b1 static _\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be *_\bC_\br_\be_\ba_\bt_\be(const _\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be *patchTable,\n 62 void *deviceContext = NULL) {\n 63 (void)deviceContext; // unused\n-64 return new _\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bT_\bB_\bO(limitStencilTable);\n+64 return new _\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be(patchTable);\n 65 }\n 66\n-_\b6_\b7 explicit _\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bT_\bB_\bO(_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *stencilTable);\n-_\b6_\b8 explicit _\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bT_\bB_\bO(_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *limitStencilTable);\n-_\b6_\b9 _\b~_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bT_\bB_\bO();\n-70\n-71 // interfaces needed for GLSLTransformFeedbackKernel\n-_\b7_\b2 GLuint _\bG_\be_\bt_\bS_\bi_\bz_\be_\bs_\bT_\be_\bx_\bt_\bu_\br_\be() const { return _sizes; }\n-_\b7_\b3 GLuint _\bG_\be_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bT_\be_\bx_\bt_\bu_\br_\be() const { return _offsets; }\n-_\b7_\b4 GLuint _\bG_\be_\bt_\bI_\bn_\bd_\bi_\bc_\be_\bs_\bT_\be_\bx_\bt_\bu_\br_\be() const { return _indices; }\n-_\b7_\b5 GLuint _\bG_\be_\bt_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bT_\be_\bx_\bt_\bu_\br_\be() const { return _weights; }\n-_\b7_\b6 GLuint _\bG_\be_\bt_\bD_\bu_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bT_\be_\bx_\bt_\bu_\br_\be() const { return _duWeights; }\n-_\b7_\b7 GLuint _\bG_\be_\bt_\bD_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bT_\be_\bx_\bt_\bu_\br_\be() const { return _dvWeights; }\n-_\b7_\b8 GLuint _\bG_\be_\bt_\bD_\bu_\bu_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bT_\be_\bx_\bt_\bu_\br_\be() const { return _duuWeights; }\n-_\b7_\b9 GLuint _\bG_\be_\bt_\bD_\bu_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bT_\be_\bx_\bt_\bu_\br_\be() const { return _duvWeights; }\n-_\b8_\b0 GLuint _\bG_\be_\bt_\bD_\bv_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bT_\be_\bx_\bt_\bu_\br_\be() const { return _dvvWeights; }\n-_\b8_\b1 int _\bG_\be_\bt_\bN_\bu_\bm_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs() const { return _numStencils; }\n-82\n-83private:\n-84 GLuint _sizes;\n-85 GLuint _offsets;\n-86 GLuint _indices;\n-87 GLuint _weights;\n-88 GLuint _duWeights;\n-89 GLuint _dvWeights;\n-90 GLuint _duuWeights;\n-91 GLuint _duvWeights;\n-92 GLuint _dvvWeights;\n-93 int _numStencils;\n-94};\n-95\n-96// --------------------------------------------------------------------------\n--\n-97\n-_\b9_\b8class _\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br {\n-99public:\n-_\b1_\b0_\b0 typedef bool _\bI_\bn_\bs_\bt_\ba_\bn_\bt_\bi_\ba_\bt_\ba_\bb_\bl_\be;\n-101\n-103 template <typename DEVICE_CONTEXT>\n-_\b1_\b0_\b4 static _\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br *_\bC_\br_\be_\ba_\bt_\be(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-105 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-106 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-107 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-108 DEVICE_CONTEXT deviceContext) {\n-109 bool interleavedDerivativeBuffers = deviceContext\n-110 ? deviceContext->AreInterleavedDerivativeBuffers()\n-111 : false;\n-112 return _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc, duDesc, dvDesc,\n-113 interleavedDerivativeBuffers);\n+_\b6_\b7 explicit _\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be(const _\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be *patchTable);\n+_\b6_\b8 _\b~_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be() {}\n+69\n+_\b7_\b0 const _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by *_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bB_\bu_\bf_\bf_\be_\br() const {\n+71 return &_\b__\bp_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs[0];\n+72 }\n+_\b7_\b3 const int *_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br() const {\n+74 return &_\b__\bi_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br[0];\n+75 }\n+_\b7_\b6 const _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm *_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br() const {\n+77 return &_\b__\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br[0];\n+78 }\n+79\n+_\b8_\b0 size_t _\bG_\be_\bt_\bN_\bu_\bm_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs() const {\n+81 return _\b__\bp_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs.size();\n+82 }\n+_\b8_\b3 size_t _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bS_\bi_\bz_\be() const {\n+84 return _\b__\bi_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br.size();\n+85 }\n+_\b8_\b6 size_t _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bS_\bi_\bz_\be() const {\n+87 return _\b__\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br.size();\n+88 }\n+89\n+_\b9_\b0 const _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by *_\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bB_\bu_\bf_\bf_\be_\br() const {\n+91 if (_\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs.empty()) {\n+92 return NULL;\n+93 }\n+94 return &_\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs[0];\n+95 }\n+_\b9_\b6 const int *_\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br() const {\n+97 if (_\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br.empty()) {\n+98 return NULL;\n+99 }\n+100 return &_\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br[0];\n+101 }\n+_\b1_\b0_\b2 size_t _\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bS_\bi_\bz_\be() const {\n+103 return _\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br.size();\n+104 }\n+105\n+_\b1_\b0_\b6 int _\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs() const {\n+107 return (int)_\b__\bf_\bv_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs.size();\n+108 }\n+_\b1_\b0_\b9 const _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by *_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bB_\bu_\bf_\bf_\be_\br(int fvarChannel = 0) const {\n+110 return &_\b__\bf_\bv_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs[fvarChannel][0];\n+111 }\n+_\b1_\b1_\b2 const int *_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br(int fvarChannel = 0) const {\n+113 return &_\b__\bf_\bv_\ba_\br_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bs[fvarChannel][0];\n 114 }\n-115\n-_\b1_\b1_\b7 static _\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br *_\bC_\br_\be_\ba_\bt_\be(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-118 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-119 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-120 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-121 void * deviceContext) {\n-122 (void)deviceContext; // not used\n-123 return _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc, duDesc, dvDesc);\n-124 }\n-125\n-_\b1_\b2_\b6 static _\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br * _\bC_\br_\be_\ba_\bt_\be(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-127 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-128 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-129 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-130 bool interleavedDerivativeBuffers = false) {\n-131 _\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br *instance = new _\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n-(interleavedDerivativeBuffers);\n-132 if (instance->_\bC_\bo_\bm_\bp_\bi_\bl_\be(srcDesc, dstDesc, duDesc, dvDesc))\n-133 return instance;\n-134 delete instance;\n-135 return NULL;\n-136 }\n+_\b1_\b1_\b5 size_t _\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bS_\bi_\bz_\be(int fvarChannel = 0) const {\n+116 return _\b__\bf_\bv_\ba_\br_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bs[fvarChannel].size();\n+117 }\n+_\b1_\b1_\b8 const _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm *_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br(int fvarChannel= 0) const {\n+119 return &_\b__\bf_\bv_\ba_\br_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br_\bs[fvarChannel][0];\n+120 }\n+_\b1_\b2_\b1 size_t _\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bS_\bi_\bz_\be(int fvarChannel = 0) const {\n+122 return _\b__\bf_\bv_\ba_\br_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br_\bs[fvarChannel].size();\n+123 }\n+124\n+125protected:\n+_\b1_\b2_\b6 _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\bc_\bt_\bo_\br _\b__\bp_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs;\n+_\b1_\b2_\b7 std::vector<int> _\b__\bi_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br;\n+_\b1_\b2_\b8 _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bV_\be_\bc_\bt_\bo_\br _\b__\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br;\n+129\n+_\b1_\b3_\b0 _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\bc_\bt_\bo_\br _\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs;\n+_\b1_\b3_\b1 std::vector<int> _\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br;\n+132\n+_\b1_\b3_\b3 std::vector< PatchArrayVector > _\b__\bf_\bv_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs;\n+_\b1_\b3_\b4 std::vector< std::vector<int> > _\b__\bf_\bv_\ba_\br_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bs;\n+_\b1_\b3_\b5 std::vector< PatchParamVector > _\b__\bf_\bv_\ba_\br_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br_\bs;\n+136};\n 137\n-139 template <typename DEVICE_CONTEXT>\n-_\b1_\b4_\b0 static _\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br *_\bC_\br_\be_\ba_\bt_\be(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-141 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-142 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-143 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-144 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-145 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-146 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-147 DEVICE_CONTEXT deviceContext) {\n-148 bool interleavedDerivativeBuffers = deviceContext\n-149 ? deviceContext->AreInterleavedDerivativeBuffers()\n-150 : false;\n-151 return _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc, duDesc, dvDesc,\n-152 duuDesc, duvDesc, dvvDesc,\n-153 interleavedDerivativeBuffers);\n-154 }\n-155\n-_\b1_\b5_\b7 static _\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br *_\bC_\br_\be_\ba_\bt_\be(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-158 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-159 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-160 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-161 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-162 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-163 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-164 void * deviceContext) {\n-165 (void)deviceContext; // not used\n-166 return _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc, duDesc, dvDesc,\n-167 duuDesc, duvDesc, dvvDesc);\n-168 }\n-169\n-_\b1_\b7_\b0 static _\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br * _\bC_\br_\be_\ba_\bt_\be(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-171 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-172 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-173 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-174 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-175 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-176 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-177 bool interleavedDerivativeBuffers = false) {\n-178 _\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br *instance = new _\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n-(interleavedDerivativeBuffers);\n-179 if (instance->_\bC_\bo_\bm_\bp_\bi_\bl_\be(srcDesc, dstDesc, duDesc, dvDesc,\n-180 duuDesc, duvDesc, dvvDesc))\n-181 return instance;\n-182 delete instance;\n-183 return NULL;\n-184 }\n-185\n-_\b1_\b9_\b9 _\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br(bool interleavedDerivativeBuffers = false);\n-200\n-_\b2_\b0_\b2 _\b~_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br();\n-203\n-209\n-237 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n-_\b2_\b3_\b8 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n-239 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-240 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-241 STENCIL_TABLE const *stencilTable,\n-242 _\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n-243 void * deviceContext = NULL) {\n-244\n-245 if (instance) {\n-246 return instance->_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer, srcDesc,\n-247 dstBuffer, dstDesc,\n-248 stencilTable);\n-249 } else {\n-250 // Create an instance on demand (slow)\n-251 (void)deviceContext; // unused\n-252 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n-253 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-254 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br());\n-255 if (instance) {\n-256 bool r = instance->_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer, srcDesc,\n-257 dstBuffer, dstDesc,\n-258 stencilTable);\n-259 delete instance;\n-260 return r;\n-261 }\n-262 return false;\n-263 }\n-264 }\n-265\n-305 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n-_\b3_\b0_\b6 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n-307 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-308 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-309 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-310 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-311 STENCIL_TABLE const *stencilTable,\n-312 _\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n-313 void * deviceContext = NULL) {\n-314\n-315 if (instance) {\n-316 return instance->_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer, srcDesc,\n-317 dstBuffer, dstDesc,\n-318 duBuffer, duDesc,\n-319 dvBuffer, dvDesc,\n-320 stencilTable);\n-321 } else {\n-322 // Create an instance on demand (slow)\n-323 (void)deviceContext; // unused\n-324 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc, duDesc, dvDesc);\n-325 if (instance) {\n-326 bool r = instance->_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer, srcDesc,\n-327 dstBuffer, dstDesc,\n-328 duBuffer, duDesc,\n-329 dvBuffer, dvDesc,\n-330 stencilTable);\n-331 delete instance;\n-332 return r;\n-333 }\n-334 return false;\n-335 }\n-336 }\n-337\n-395 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n-_\b3_\b9_\b6 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n-397 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-398 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-399 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-400 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-401 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-402 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-403 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-404 STENCIL_TABLE const *stencilTable,\n-405 _\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n-406 void * deviceContext = NULL) {\n-407\n-408 if (instance) {\n-409 return instance->_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer, srcDesc,\n-410 dstBuffer, dstDesc,\n-411 duBuffer, duDesc,\n-412 dvBuffer, dvDesc,\n-413 duuBuffer, duuDesc,\n-414 duvBuffer, duvDesc,\n-415 dvvBuffer, dvvDesc,\n-416 stencilTable);\n-417 } else {\n-418 // Create an instance on demand (slow)\n-419 (void)deviceContext; // unused\n-420 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n-421 duDesc, dvDesc,\n-422 duuDesc, duvDesc, dvvDesc);\n-423 if (instance) {\n-424 bool r = instance->_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer, srcDesc,\n-425 dstBuffer, dstDesc,\n-426 duBuffer, duDesc,\n-427 dvBuffer, dvDesc,\n-428 duuBuffer, duuDesc,\n-429 duvBuffer, duvDesc,\n-430 dvvBuffer, dvvDesc,\n-431 stencilTable);\n-432 delete instance;\n-433 return r;\n-434 }\n-435 return false;\n-436 }\n-437 }\n-438\n-456 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n-_\b4_\b5_\b7 bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n-458 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-459 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-460 STENCIL_TABLE const *stencilTable) const {\n-461\n-462 return _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer->BindVBO(), srcDesc,\n-463 dstBuffer->BindVBO(), dstDesc,\n-464 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-465 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-466 stencilTable->GetSizesTexture(),\n-467 stencilTable->GetOffsetsTexture(),\n-468 stencilTable->GetIndicesTexture(),\n-469 stencilTable->GetWeightsTexture(),\n-470 0,\n-471 0,\n-472 /* start = */ 0,\n-473 /* end = */ stencilTable->GetNumStencils());\n-474 }\n-475\n-505 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n-_\b5_\b0_\b6 bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n-507 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-508 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-509 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-510 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-511 STENCIL_TABLE const *stencilTable) const {\n-512\n-513 return _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer->BindVBO(), srcDesc,\n-514 dstBuffer->BindVBO(), dstDesc,\n-515 duBuffer->BindVBO(), duDesc,\n-516 dvBuffer->BindVBO(), dvDesc,\n-517 stencilTable->GetSizesTexture(),\n-518 stencilTable->GetOffsetsTexture(),\n-519 stencilTable->GetIndicesTexture(),\n-520 stencilTable->GetWeightsTexture(),\n-521 stencilTable->GetDuWeightsTexture(),\n-522 stencilTable->GetDvWeightsTexture(),\n-523 /* start = */ 0,\n-524 /* end = */ stencilTable->GetNumStencils());\n-525 }\n-526\n-574 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n-_\b5_\b7_\b5 bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n-576 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-577 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-578 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-579 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-580 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-581 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-582 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-583 STENCIL_TABLE const *stencilTable) const {\n-584\n-585 return _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer->BindVBO(), srcDesc,\n-586 dstBuffer->BindVBO(), dstDesc,\n-587 duBuffer->BindVBO(), duDesc,\n-588 dvBuffer->BindVBO(), dvDesc,\n-589 duuBuffer->BindVBO(), duuDesc,\n-590 duvBuffer->BindVBO(), duvDesc,\n-591 dvvBuffer->BindVBO(), dvvDesc,\n-592 stencilTable->GetSizesTexture(),\n-593 stencilTable->GetOffsetsTexture(),\n-594 stencilTable->GetIndicesTexture(),\n-595 stencilTable->GetWeightsTexture(),\n-596 stencilTable->GetDuWeightsTexture(),\n-597 stencilTable->GetDvWeightsTexture(),\n-598 stencilTable->GetDuuWeightsTexture(),\n-599 stencilTable->GetDuvWeightsTexture(),\n-600 stencilTable->GetDvvWeightsTexture(),\n-601 /* start = */ 0,\n-602 /* end = */ stencilTable->GetNumStencils());\n-603 }\n-604\n-_\b6_\b4_\b0 bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(GLuint srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-641 GLuint dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-642 GLuint duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-643 GLuint dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-644 GLuint sizesBuffer,\n-645 GLuint offsetsBuffer,\n-646 GLuint indicesBuffer,\n-647 GLuint weightsBuffer,\n-648 GLuint duWeightsBuffer,\n-649 GLuint dvWeightsBuffer,\n-650 int start,\n-651 int end) const;\n-652\n-_\b7_\b0_\b6 bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(GLuint srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-707 GLuint dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-708 GLuint duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-709 GLuint dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-710 GLuint duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-711 GLuint duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-712 GLuint dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-713 GLuint sizesBuffer,\n-714 GLuint offsetsBuffer,\n-715 GLuint indicesBuffer,\n-716 GLuint weightsBuffer,\n-717 GLuint duWeightsBuffer,\n-718 GLuint dvWeightsBuffer,\n-719 GLuint duuWeightsBuffer,\n-720 GLuint duvWeightsBuffer,\n-721 GLuint dvvWeightsBuffer,\n-722 int start,\n-723 int end) const;\n-724\n-730\n-763 template <typename SRC_BUFFER, typename DST_BUFFER,\n-764 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b7_\b6_\b5 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n-766 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-767 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-768 int numPatchCoords,\n-769 PATCHCOORD_BUFFER *patchCoords,\n-770 PATCH_TABLE *patchTable,\n-771 _\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n-772 void * deviceContext = NULL) {\n-773\n-774 if (instance) {\n-775 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer, srcDesc,\n-776 dstBuffer, dstDesc,\n-777 numPatchCoords, patchCoords,\n-778 patchTable);\n-779 } else {\n-780 // Create an instance on demand (slow)\n-781 (void)deviceContext; // unused\n-782 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n-783 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-784 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br());\n-785 if (instance) {\n-786 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer, srcDesc,\n-787 dstBuffer, dstDesc,\n-788 numPatchCoords, patchCoords,\n-789 patchTable);\n-790 delete instance;\n-791 return r;\n-792 }\n-793 return false;\n-794 }\n-795 }\n-796\n-841 template <typename SRC_BUFFER, typename DST_BUFFER,\n-842 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b8_\b4_\b3 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n-844 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-845 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-846 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-847 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-848 int numPatchCoords,\n-849 PATCHCOORD_BUFFER *patchCoords,\n-850 PATCH_TABLE *patchTable,\n-851 _\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n-852 void * deviceContext = NULL) {\n-853\n-854 if (instance) {\n-855 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer, srcDesc,\n-856 dstBuffer, dstDesc,\n-857 duBuffer, duDesc,\n-858 dvBuffer, dvDesc,\n-859 numPatchCoords, patchCoords,\n-860 patchTable);\n-861 } else {\n-862 // Create an instance on demand (slow)\n-863 (void)deviceContext; // unused\n-864 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc, duDesc, dvDesc);\n-865 if (instance) {\n-866 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer, srcDesc,\n-867 dstBuffer, dstDesc,\n-868 duBuffer, duDesc,\n-869 dvBuffer, dvDesc,\n-870 numPatchCoords, patchCoords,\n-871 patchTable);\n-872 delete instance;\n-873 return r;\n-874 }\n-875 return false;\n-876 }\n-877 }\n-878\n-941 template <typename SRC_BUFFER, typename DST_BUFFER,\n-942 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b9_\b4_\b3 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n-944 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-945 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-946 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-947 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-948 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-949 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-950 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-951 int numPatchCoords,\n-952 PATCHCOORD_BUFFER *patchCoords,\n-953 PATCH_TABLE *patchTable,\n-954 _\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n-955 void * deviceContext = NULL) {\n-956\n-957 if (instance) {\n-958 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer, srcDesc,\n-959 dstBuffer, dstDesc,\n-960 duBuffer, duDesc,\n-961 dvBuffer, dvDesc,\n-962 duuBuffer, duuDesc,\n-963 duvBuffer, duvDesc,\n-964 dvvBuffer, dvvDesc,\n-965 numPatchCoords, patchCoords,\n-966 patchTable);\n-967 } else {\n-968 // Create an instance on demand (slow)\n-969 (void)deviceContext; // unused\n-970 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n-971 duDesc, dvDesc,\n-972 duuDesc, duvDesc, dvvDesc);\n-973 if (instance) {\n-974 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer, srcDesc,\n-975 dstBuffer, dstDesc,\n-976 duBuffer, duDesc,\n-977 dvBuffer, dvDesc,\n-978 duuBuffer, duuDesc,\n-979 duvBuffer, duvDesc,\n-980 dvvBuffer, dvvDesc,\n-981 numPatchCoords, patchCoords,\n-982 patchTable);\n-983 delete instance;\n-984 return r;\n-985 }\n-986 return false;\n-987 }\n-988 }\n-989\n-1014 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1015 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b1_\b0_\b1_\b6 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n-1017 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1018 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1019 int numPatchCoords,\n-1020 PATCHCOORD_BUFFER *patchCoords,\n-1021 PATCH_TABLE *patchTable) const {\n-1022\n-1023 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindVBO(), srcDesc,\n-1024 dstBuffer->BindVBO(), dstDesc,\n-1025 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-1026 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-1027 numPatchCoords,\n-1028 patchCoords->BindVBO(),\n-1029 patchTable->GetPatchArrays(),\n-1030 patchTable->GetPatchIndexTextureBuffer(),\n-1031 patchTable->GetPatchParamTextureBuffer());\n-1032 }\n-1033\n-1068 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1069 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b1_\b0_\b7_\b0 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n-1071 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1072 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1073 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-1074 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-1075 int numPatchCoords,\n-1076 PATCHCOORD_BUFFER *patchCoords,\n-1077 PATCH_TABLE *patchTable) const {\n-1078\n-1079 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindVBO(), srcDesc,\n-1080 dstBuffer->BindVBO(), dstDesc,\n-1081 duBuffer->BindVBO(), duDesc,\n-1082 dvBuffer->BindVBO(), dvDesc,\n-1083 numPatchCoords,\n-1084 patchCoords->BindVBO(),\n-1085 patchTable->GetPatchArrays(),\n-1086 patchTable->GetPatchIndexTextureBuffer(),\n-1087 patchTable->GetPatchParamTextureBuffer());\n-1088 }\n-1089\n-1142 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1143 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b1_\b1_\b4_\b4 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n-1145 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1146 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1147 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-1148 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-1149 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-1150 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-1151 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-1152 int numPatchCoords,\n-1153 PATCHCOORD_BUFFER *patchCoords,\n-1154 PATCH_TABLE *patchTable) const {\n-1155\n-1156 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindVBO(), srcDesc,\n-1157 dstBuffer->BindVBO(), dstDesc,\n-1158 duBuffer->BindVBO(), duDesc,\n-1159 dvBuffer->BindVBO(), dvDesc,\n-1160 duuBuffer->BindVBO(), duuDesc,\n-1161 duvBuffer->BindVBO(), duvDesc,\n-1162 dvvBuffer->BindVBO(), dvvDesc,\n-1163 numPatchCoords,\n-1164 patchCoords->BindVBO(),\n-1165 patchTable->GetPatchArrays(),\n-1166 patchTable->GetPatchIndexTextureBuffer(),\n-1167 patchTable->GetPatchParamTextureBuffer());\n-1168 }\n-1169\n-_\b1_\b1_\b7_\b0 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(GLuint srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1171 GLuint dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1172 GLuint duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-1173 GLuint dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-1174 int numPatchCoords,\n-1175 GLuint patchCoordsBuffer,\n-1176 const _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\bc_\bt_\bo_\br &patchArrays,\n-1177 GLuint patchIndexBuffer,\n-1178 GLuint patchParamsBuffer) const;\n-1179\n-_\b1_\b1_\b8_\b0 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(GLuint srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1181 GLuint dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1182 GLuint duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-1183 GLuint dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-1184 GLuint duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-1185 GLuint duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-1186 GLuint dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-1187 int numPatchCoords,\n-1188 GLuint patchCoordsBuffer,\n-1189 const _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\bc_\bt_\bo_\br &patchArrays,\n-1190 GLuint patchIndexBuffer,\n-1191 GLuint patchParamsBuffer) const;\n-1192\n-1225 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1226 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b1_\b2_\b2_\b7 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1228 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1229 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1230 int numPatchCoords,\n-1231 PATCHCOORD_BUFFER *patchCoords,\n-1232 PATCH_TABLE *patchTable,\n-1233 _\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n-1234 void * deviceContext = NULL) {\n-1235\n-1236 if (instance) {\n-1237 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1238 srcBuffer, srcDesc,\n-1239 dstBuffer, dstDesc,\n-1240 numPatchCoords, patchCoords,\n-1241 patchTable);\n-1242 } else {\n-1243 // Create an instance on demand (slow)\n-1244 (void)deviceContext; // unused\n-1245 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n-1246 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-1247 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br());\n-1248 if (instance) {\n-1249 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1250 srcBuffer, srcDesc,\n-1251 dstBuffer, dstDesc,\n-1252 numPatchCoords, patchCoords,\n-1253 patchTable);\n-1254 delete instance;\n-1255 return r;\n-1256 }\n-1257 return false;\n-1258 }\n-1259 }\n-1260\n-1285 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1286 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b1_\b2_\b8_\b7 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1288 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1289 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1290 int numPatchCoords,\n-1291 PATCHCOORD_BUFFER *patchCoords,\n-1292 PATCH_TABLE *patchTable) const {\n-1293\n-1294 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindVBO(), srcDesc,\n-1295 dstBuffer->BindVBO(), dstDesc,\n-1296 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-1297 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-1298 numPatchCoords,\n-1299 patchCoords->BindVBO(),\n-1300 patchTable->GetVaryingPatchArrays(),\n-1301 patchTable->GetVaryingPatchIndexTextureBuffer(),\n-1302 patchTable->GetPatchParamTextureBuffer());\n-1303 }\n-1304\n-1349 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1350 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b1_\b3_\b5_\b1 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1352 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1353 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1354 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-1355 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-1356 int numPatchCoords,\n-1357 PATCHCOORD_BUFFER *patchCoords,\n-1358 PATCH_TABLE *patchTable,\n-1359 _\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n-1360 void * deviceContext = NULL) {\n-1361\n-1362 if (instance) {\n-1363 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1364 srcBuffer, srcDesc,\n-1365 dstBuffer, dstDesc,\n-1366 duBuffer, duDesc,\n-1367 dvBuffer, dvDesc,\n-1368 numPatchCoords, patchCoords,\n-1369 patchTable);\n-1370 } else {\n-1371 // Create an instance on demand (slow)\n-1372 (void)deviceContext; // unused\n-1373 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n-1374 duDesc, dvDesc);\n-1375 if (instance) {\n-1376 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1377 srcBuffer, srcDesc,\n-1378 dstBuffer, dstDesc,\n-1379 duBuffer, duDesc,\n-1380 dvBuffer, dvDesc,\n-1381 numPatchCoords, patchCoords,\n-1382 patchTable);\n-1383 delete instance;\n-1384 return r;\n-1385 }\n-1386 return false;\n-1387 }\n-1388 }\n-1389\n-1426 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1427 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b1_\b4_\b2_\b8 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1429 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1430 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1431 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-1432 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-1433 int numPatchCoords,\n-1434 PATCHCOORD_BUFFER *patchCoords,\n-1435 PATCH_TABLE *patchTable) const {\n-1436\n-1437 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindVBO(), srcDesc,\n-1438 dstBuffer->BindVBO(), dstDesc,\n-1439 duBuffer->BindVBO(), duDesc,\n-1440 dvBuffer->BindVBO(), dvDesc,\n-1441 numPatchCoords,\n-1442 patchCoords->BindVBO(),\n-1443 patchTable->GetVaryingPatchArrays(),\n-1444 patchTable->GetVaryingPatchIndexTextureBuffer(),\n-1445 patchTable->GetPatchParamTextureBuffer());\n-1446 }\n-1447\n-1510 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1511 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b1_\b5_\b1_\b2 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1513 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1514 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1515 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-1516 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-1517 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-1518 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-1519 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-1520 int numPatchCoords,\n-1521 PATCHCOORD_BUFFER *patchCoords,\n-1522 PATCH_TABLE *patchTable,\n-1523 _\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n-1524 void * deviceContext = NULL) {\n-1525\n-1526 if (instance) {\n-1527 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1528 srcBuffer, srcDesc,\n-1529 dstBuffer, dstDesc,\n-1530 duBuffer, duDesc,\n-1531 dvBuffer, dvDesc,\n-1532 duuBuffer, duuDesc,\n-1533 duvBuffer, duvDesc,\n-1534 dvvBuffer, dvvDesc,\n-1535 numPatchCoords, patchCoords,\n-1536 patchTable);\n-1537 } else {\n-1538 // Create an instance on demand (slow)\n-1539 (void)deviceContext; // unused\n-1540 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n-1541 duDesc, dvDesc,\n-1542 duuDesc, duvDesc, dvvDesc);\n-1543 if (instance) {\n-1544 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1545 srcBuffer, srcDesc,\n-1546 dstBuffer, dstDesc,\n-1547 duBuffer, duDesc,\n-1548 dvBuffer, dvDesc,\n-1549 duuBuffer, duuDesc,\n-1550 duvBuffer, duvDesc,\n-1551 dvvBuffer, dvvDesc,\n-1552 numPatchCoords, patchCoords,\n-1553 patchTable);\n-1554 delete instance;\n-1555 return r;\n-1556 }\n-1557 return false;\n-1558 }\n-1559 }\n-1560\n-1615 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1616 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b1_\b6_\b1_\b7 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1618 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1619 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1620 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-1621 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-1622 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-1623 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-1624 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-1625 int numPatchCoords,\n-1626 PATCHCOORD_BUFFER *patchCoords,\n-1627 PATCH_TABLE *patchTable) const {\n-1628\n-1629 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindVBO(), srcDesc,\n-1630 dstBuffer->BindVBO(), dstDesc,\n-1631 duBuffer->BindVBO(), duDesc,\n-1632 dvBuffer->BindVBO(), dvDesc,\n-1633 duuBuffer->BindVBO(), duuDesc,\n-1634 duvBuffer->BindVBO(), duvDesc,\n-1635 dvvBuffer->BindVBO(), dvvDesc,\n-1636 numPatchCoords,\n-1637 patchCoords->BindVBO(),\n-1638 patchTable->GetVaryingPatchArrays(),\n-1639 patchTable->GetVaryingPatchIndexTextureBuffer(),\n-1640 patchTable->GetPatchParamTextureBuffer());\n-1641 }\n-1642\n-1677 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1678 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b1_\b6_\b7_\b9 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1680 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1681 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1682 int numPatchCoords,\n-1683 PATCHCOORD_BUFFER *patchCoords,\n-1684 PATCH_TABLE *patchTable,\n-1685 int fvarChannel,\n-1686 _\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n-1687 void * deviceContext = NULL) {\n-1688\n-1689 if (instance) {\n-1690 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1691 srcBuffer, srcDesc,\n-1692 dstBuffer, dstDesc,\n-1693 numPatchCoords, patchCoords,\n-1694 patchTable, fvarChannel);\n-1695 } else {\n-1696 // Create an instance on demand (slow)\n-1697 (void)deviceContext; // unused\n-1698 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n-1699 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-1700 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br());\n-1701 if (instance) {\n-1702 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1703 srcBuffer, srcDesc,\n-1704 dstBuffer, dstDesc,\n-1705 numPatchCoords, patchCoords,\n-1706 patchTable, fvarChannel);\n-1707 delete instance;\n-1708 return r;\n-1709 }\n-1710 return false;\n-1711 }\n-1712 }\n-1713\n-1740 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1741 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b1_\b7_\b4_\b2 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1743 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1744 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1745 int numPatchCoords,\n-1746 PATCHCOORD_BUFFER *patchCoords,\n-1747 PATCH_TABLE *patchTable,\n-1748 int fvarChannel = 0) const {\n-1749\n-1750 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindVBO(), srcDesc,\n-1751 dstBuffer->BindVBO(), dstDesc,\n-1752 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-1753 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-1754 numPatchCoords,\n-1755 patchCoords->BindVBO(),\n-1756 patchTable->GetFVarPatchArrays(fvarChannel),\n-1757 patchTable->GetFVarPatchIndexTextureBuffer(fvarChannel),\n-1758 patchTable->GetFVarPatchParamTextureBuffer(fvarChannel));\n-1759 }\n-1760\n-1807 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1808 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b1_\b8_\b0_\b9 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1810 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1811 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1812 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-1813 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-1814 int numPatchCoords,\n-1815 PATCHCOORD_BUFFER *patchCoords,\n-1816 PATCH_TABLE *patchTable,\n-1817 int fvarChannel,\n-1818 _\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n-1819 void * deviceContext = NULL) {\n-1820\n-1821 if (instance) {\n-1822 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1823 srcBuffer, srcDesc,\n-1824 dstBuffer, dstDesc,\n-1825 duBuffer, duDesc,\n-1826 dvBuffer, dvDesc,\n-1827 numPatchCoords, patchCoords,\n-1828 patchTable, fvarChannel);\n-1829 } else {\n-1830 // Create an instance on demand (slow)\n-1831 (void)deviceContext; // unused\n-1832 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n-1833 duDesc, dvDesc);\n-1834 if (instance) {\n-1835 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1836 srcBuffer, srcDesc,\n-1837 dstBuffer, dstDesc,\n-1838 duBuffer, duDesc,\n-1839 dvBuffer, dvDesc,\n-1840 numPatchCoords, patchCoords,\n-1841 patchTable, fvarChannel);\n-1842 delete instance;\n-1843 return r;\n-1844 }\n-1845 return false;\n-1846 }\n-1847 }\n-1848\n-1887 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1888 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b1_\b8_\b8_\b9 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1890 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1891 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1892 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-1893 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-1894 int numPatchCoords,\n-1895 PATCHCOORD_BUFFER *patchCoords,\n-1896 PATCH_TABLE *patchTable,\n-1897 int fvarChannel = 0) const {\n-1898\n-1899 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindVBO(), srcDesc,\n-1900 dstBuffer->BindVBO(), dstDesc,\n-1901 duBuffer->BindVBO(), duDesc,\n-1902 dvBuffer->BindVBO(), dvDesc,\n-1903 numPatchCoords,\n-1904 patchCoords->BindVBO(),\n-1905 patchTable->GetFVarPatchArrays(fvarChannel),\n-1906 patchTable->GetFVarPatchIndexTextureBuffer(fvarChannel),\n-1907 patchTable->GetFVarPatchParamTextureBuffer(fvarChannel));\n-1908 }\n-1909\n-1974 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1975 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b1_\b9_\b7_\b6 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1977 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1978 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1979 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-1980 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-1981 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-1982 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-1983 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-1984 int numPatchCoords,\n-1985 PATCHCOORD_BUFFER *patchCoords,\n-1986 PATCH_TABLE *patchTable,\n-1987 int fvarChannel,\n-1988 _\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n-1989 void * deviceContext = NULL) {\n-1990\n-1991 if (instance) {\n-1992 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1993 srcBuffer, srcDesc,\n-1994 dstBuffer, dstDesc,\n-1995 duBuffer, duDesc,\n-1996 dvBuffer, dvDesc,\n-1997 duuBuffer, duuDesc,\n-1998 duvBuffer, duvDesc,\n-1999 dvvBuffer, dvvDesc,\n-2000 numPatchCoords, patchCoords,\n-2001 patchTable, fvarChannel);\n-2002 } else {\n-2003 // Create an instance on demand (slow)\n-2004 (void)deviceContext; // unused\n-2005 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n-2006 duDesc, dvDesc,\n-2007 duuDesc, duvDesc, dvvDesc);\n-2008 if (instance) {\n-2009 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-2010 srcBuffer, srcDesc,\n-2011 dstBuffer, dstDesc,\n-2012 duBuffer, duDesc,\n-2013 dvBuffer, dvDesc,\n-2014 duuBuffer, duuDesc,\n-2015 duvBuffer, duvDesc,\n-2016 dvvBuffer, dvvDesc,\n-2017 numPatchCoords, patchCoords,\n-2018 patchTable, fvarChannel);\n-2019 delete instance;\n-2020 return r;\n-2021 }\n-2022 return false;\n-2023 }\n-2024 }\n-2025\n-2082 template <typename SRC_BUFFER, typename DST_BUFFER,\n-2083 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b2_\b0_\b8_\b4 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-2085 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-2086 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-2087 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-2088 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-2089 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-2090 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-2091 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-2092 int numPatchCoords,\n-2093 PATCHCOORD_BUFFER *patchCoords,\n-2094 PATCH_TABLE *patchTable,\n-2095 int fvarChannel = 0) const {\n-2096\n-2097 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindVBO(), srcDesc,\n-2098 dstBuffer->BindVBO(), dstDesc,\n-2099 duBuffer->BindVBO(), duDesc,\n-2100 dvBuffer->BindVBO(), dvDesc,\n-2101 duuBuffer->BindVBO(), duuDesc,\n-2102 duvBuffer->BindVBO(), duvDesc,\n-2103 dvvBuffer->BindVBO(), dvvDesc,\n-2104 numPatchCoords,\n-2105 patchCoords->BindVBO(),\n-2106 patchTable->GetFVarPatchArrays(fvarChannel),\n-2107 patchTable->GetFVarPatchIndexTextureBuffer(fvarChannel),\n-2108 patchTable->GetFVarPatchParamTextureBuffer(fvarChannel));\n-2109 }\n-2110\n-2116\n-_\b2_\b1_\b1_\b9 bool _\bC_\bo_\bm_\bp_\bi_\bl_\be(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-2120 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-2121 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc = _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-2122 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc = _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-2123 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc = _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-2124 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc = _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-2125 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc = _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br());\n-2126\n-_\b2_\b1_\b2_\b8 static void _\bS_\by_\bn_\bc_\bh_\br_\bo_\bn_\bi_\bz_\be(void *kernel);\n-2129\n-2130private:\n-2131 GLuint _srcBufferTexture;\n-2132 GLuint _patchArraysUBO;\n-2133 bool _interleavedDerivativeBuffers;\n-2134\n-2135 struct _StencilKernel {\n-2136 _StencilKernel();\n-2137 ~_StencilKernel();\n-2138 bool Compile(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-2139 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-2140 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-2141 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-2142 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-2143 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-2144 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-2145 bool interleavedDerivativeBuffers);\n-2146 GLuint program;\n-2147 GLint uniformSrcBufferTexture;\n-2148 GLint uniformSrcOffset; // src buffer offset (in elements)\n-2149\n-2150 GLint uniformSizesTexture;\n-2151 GLint uniformOffsetsTexture;\n-2152 GLint uniformIndicesTexture;\n-2153 GLint uniformWeightsTexture;\n-2154 GLint uniformDuWeightsTexture;\n-2155 GLint uniformDvWeightsTexture;\n-2156 GLint uniformDuuWeightsTexture;\n-2157 GLint uniformDuvWeightsTexture;\n-2158 GLint uniformDvvWeightsTexture;\n-2159 GLint uniformStart; // range\n-2160 GLint uniformEnd;\n-2161 } _stencilKernel;\n-2162\n-2163 struct _PatchKernel {\n-2164 _PatchKernel();\n-2165 ~_PatchKernel();\n-2166 bool Compile(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-2167 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-2168 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-2169 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-2170 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-2171 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-2172 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-2173 bool interleavedDerivativeBuffers);\n-2174 GLuint program;\n-2175 GLint uniformSrcBufferTexture;\n-2176 GLint uniformSrcOffset; // src buffer offset (in elements)\n-2177\n-2178 GLint uniformPatchArraysUBOBinding;\n-2179 GLint uniformPatchParamTexture;\n-2180 GLint uniformPatchIndexTexture;\n-2181 } _patchKernel;\n-2182\n-2183};\n-2184\n-2185} // end namespace Osd\n-2186\n-2187} // end namespace OPENSUBDIV_VERSION\n-2188using namespace OPENSUBDIV_VERSION;\n-2189\n-2190} // end namespace OpenSubdiv\n-2191\n-2192\n-2193#endif // OPENSUBDIV3_OSD_GL_XFB_EVALUATOR_H\n+138} // end namespace Osd\n+139\n+140} // end namespace OPENSUBDIV_VERSION\n+141using namespace OPENSUBDIV_VERSION;\n+142\n+143} // end namespace OpenSubdiv\n+144\n+145#endif // OPENSUBDIV3_OSD_CPU_PATCH_TABLE_H\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bV_\be_\bc_\bt_\bo_\br\n+std::vector< PatchParam > PatchParamVector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b1_\b3_\b3\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\bc_\bt_\bo_\br\n std::vector< PatchArray > PatchArrayVector\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b1_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n-Stencil table class wrapping the template for compatibility.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b2_\b7_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n-Limit stencil table class wrapping the template for compatibility.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b8_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n-BufferDescriptor is a struct which describes buffer elements in interleaved\n-data buffers....\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b6_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bT_\bB_\bO\n-GL TextureBuffer stencil table.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b5_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bT_\bB_\bO_\b:_\b:_\bG_\be_\bt_\bS_\bi_\bz_\be_\bs_\bT_\be_\bx_\bt_\bu_\br_\be\n-GLuint GetSizesTexture() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bT_\bB_\bO_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static GLStencilTableTBO * Create(Far::StencilTable const *stencilTable, void\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+Container for arrays of parametric patches.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+Cpu patch table.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bB_\bu_\bf_\bf_\be_\br\n+const PatchArray * GetFVarPatchArrayBuffer(int fvarChannel=0) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b0_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+const int * GetVaryingPatchIndexBuffer() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b9_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+std::vector< int > _varyingIndexBuffer\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b3_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bS_\bi_\bz_\be\n+size_t GetFVarPatchParamSize(int fvarChannel=0) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b2_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b~_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+~CpuPatchTable()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br\n+PatchParamVector _patchParamBuffer\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b2_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+const int * GetPatchIndexBuffer() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n+static CpuPatchTable * Create(const Far::PatchTable *patchTable, void\n *deviceContext=NULL)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b5_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bT_\bB_\bO_\b:_\b:_\bG_\be_\bt_\bD_\bv_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bT_\be_\bx_\bt_\bu_\br_\be\n-GLuint GetDvvWeightsTexture() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b8_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bT_\bB_\bO_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-int GetNumStencils() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b8_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bT_\bB_\bO_\b:_\b:_\bG_\be_\bt_\bD_\bu_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bT_\be_\bx_\bt_\bu_\br_\be\n-GLuint GetDuvWeightsTexture() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bT_\bB_\bO_\b:_\b:_\bG_\be_\bt_\bD_\bu_\bu_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bT_\be_\bx_\bt_\bu_\br_\be\n-GLuint GetDuuWeightsTexture() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bT_\bB_\bO_\b:_\b:_\bG_\be_\bt_\bI_\bn_\bd_\bi_\bc_\be_\bs_\bT_\be_\bx_\bt_\bu_\br_\be\n-GLuint GetIndicesTexture() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bT_\bB_\bO_\b:_\b:_\b~_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bT_\bB_\bO\n-~GLStencilTableTBO()\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bT_\bB_\bO_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bT_\bB_\bO\n-GLStencilTableTBO(Far::StencilTable const *stencilTable)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bT_\bB_\bO_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bT_\bB_\bO\n-GLStencilTableTBO(Far::LimitStencilTable const *limitStencilTable)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bT_\bB_\bO_\b:_\b:_\bG_\be_\bt_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bT_\be_\bx_\bt_\bu_\br_\be\n-GLuint GetWeightsTexture() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bT_\bB_\bO_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static GLStencilTableTBO * Create(Far::LimitStencilTable const\n-*limitStencilTable, void *deviceContext=NULL)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b6_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bT_\bB_\bO_\b:_\b:_\bG_\be_\bt_\bD_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bT_\be_\bx_\bt_\bu_\br_\be\n-GLuint GetDvWeightsTexture() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bT_\bB_\bO_\b:_\b:_\bG_\be_\bt_\bD_\bu_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bT_\be_\bx_\bt_\bu_\br_\be\n-GLuint GetDuWeightsTexture() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bT_\bB_\bO_\b:_\b:_\bG_\be_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bT_\be_\bx_\bt_\bu_\br_\be\n-GLuint GetOffsetsTexture() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b9_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n-bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords,\n-PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable) const\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b2_\b8_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static GLXFBEvaluator * Create(BufferDescriptor const &srcDesc,\n-BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc,\n-BufferDescriptor const &dvDesc, bool interleavedDerivativeBuffers=false)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b2_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n-BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n-&dvDesc, STENCIL_TABLE const *stencilTable) const\n-Generic stencil function.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b5_\b0_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n-GLXFBEvaluator(bool interleavedDerivativeBuffers=false)\n-Constructor.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n-BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n-&dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER\n-*duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer,\n-BufferDescriptor const &dvvDesc, STENCIL_TABLE const *stencilTable) const\n-Generic stencil function.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b5_\b7_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bI_\bn_\bs_\bt_\ba_\bn_\bt_\bi_\ba_\bt_\ba_\bb_\bl_\be\n-bool Instantiatable\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b0_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-bool EvalPatches(GLuint srcBuffer, BufferDescriptor const &srcDesc, GLuint\n-dstBuffer, BufferDescriptor const &dstDesc, GLuint duBuffer, BufferDescriptor\n-const &duDesc, GLuint dvBuffer, BufferDescriptor const &dvDesc, GLuint\n-duuBuffer, BufferDescriptor const &duuDesc, GLuint duvBuffer, BufferDescriptor\n-const &duvDesc, GLuint dvvBuffer, BufferDescriptor const &dvvDesc, int\n-numPatchCoords, GLuint patchCoordsBuffer, const PatchArrayVector &patchArrays,\n-GLuint patchIndexBuffer, GLuint patchParamsBuffer) const\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n-*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n-BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const\n-&duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER\n-*dvvBuffer, BufferDescriptor const &dvvDesc, STENCIL_TABLE const *stencilTable,\n-GLXFBEvaluator const *instance, void *deviceContext=NULL)\n-Generic static stencil function. This function has a same signature as other\n-device kernels have so t...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b3_\b9_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n-BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n-&dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER\n-*duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer,\n-BufferDescriptor const &dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n-*patchCoords, PATCH_TABLE *patchTable) const\n-Generic limit eval function with derivatives. This function has a same\n-signature as other device kern...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b1_\b4_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static GLXFBEvaluator * Create(BufferDescriptor const &srcDesc,\n-BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc,\n-BufferDescriptor const &dvDesc, BufferDescriptor const &duuDesc,\n-BufferDescriptor const &duvDesc, BufferDescriptor const &dvvDesc, bool\n-interleavedDerivativeBuffers=false)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b7_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static GLXFBEvaluator * Create(BufferDescriptor const &srcDesc,\n-BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc,\n-BufferDescriptor const &dvDesc, void *deviceContext)\n-Specialization to allow creation without a device context.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b1_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n-*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n-BufferDescriptor const &dvDesc, STENCIL_TABLE const *stencilTable,\n-GLXFBEvaluator const *instance, void *deviceContext=NULL)\n-Generic static stencil function. This function has a same signature as other\n-device kernels have so t...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b3_\b0_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n-static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n-*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n-BufferDescriptor const &dvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n-*patchCoords, PATCH_TABLE *patchTable, GLXFBEvaluator const *instance, void\n-*deviceContext=NULL)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b3_\b5_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-bool EvalStencils(GLuint srcBuffer, BufferDescriptor const &srcDesc, GLuint\n-dstBuffer, BufferDescriptor const &dstDesc, GLuint duBuffer, BufferDescriptor\n-const &duDesc, GLuint dvBuffer, BufferDescriptor const &dvDesc, GLuint\n-duuBuffer, BufferDescriptor const &duuDesc, GLuint duvBuffer, BufferDescriptor\n-const &duvDesc, GLuint dvvBuffer, BufferDescriptor const &dvvDesc, GLuint\n-sizesBuffer, GLuint offsetsBuffer, GLuint indicesBuffer, GLuint weightsBuffer,\n-GLuint duWeightsBuffer, GLuint dvWeightsBuffer, GLuint duuWeightsBuffer, GLuint\n-duvWeightsBuffer, GLuint dvvWeightsBuffer, int start, int end) const\n-Dispatch the GLSL XFB kernel on on GPU asynchronously returns false if the\n-kernel hasn't been compile...\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n-BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n-&dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE\n-*patchTable, GLXFBEvaluator const *instance, void *deviceContext=NULL)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b8_\b4_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static GLXFBEvaluator * Create(BufferDescriptor const &srcDesc,\n-BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc,\n-BufferDescriptor const &dvDesc, BufferDescriptor const &duuDesc,\n-BufferDescriptor const &duvDesc, BufferDescriptor const &dvvDesc,\n-DEVICE_CONTEXT deviceContext)\n-Generic creator template.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b4_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static GLXFBEvaluator * Create(BufferDescriptor const &srcDesc,\n-BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc,\n-BufferDescriptor const &dvDesc, DEVICE_CONTEXT deviceContext)\n-Generic creator template.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b0_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bS_\by_\bn_\bc_\bh_\br_\bo_\bn_\bi_\bz_\be\n-static void Synchronize(void *kernel)\n-Wait the dispatched kernel finishes.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n-static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int\n-numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable,\n-GLXFBEvaluator const *instance, void *deviceContext=NULL)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b2_\b2_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n-bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n-BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n-&dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER\n-*duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer,\n-BufferDescriptor const &dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n-*patchCoords, PATCH_TABLE *patchTable) const\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b6_\b1_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n-bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n-*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n-BufferDescriptor const &dvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n-*patchCoords, PATCH_TABLE *patchTable, int fvarChannel=0) const\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b8_\b8_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords,\n-PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, GLXFBEvaluator const\n-*instance, void *deviceContext=NULL)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b6_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n-static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor\n-const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,\n-DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n-BufferDescriptor const &dvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n-*patchCoords, PATCH_TABLE *patchTable, int fvarChannel, GLXFBEvaluator const\n-*instance, void *deviceContext=NULL)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b8_\b0_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords,\n-PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable) const\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b0_\b1_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n-BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n-&dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER\n-*duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer,\n-BufferDescriptor const &dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n-*patchCoords, PATCH_TABLE *patchTable, GLXFBEvaluator const *instance, void\n-*deviceContext=NULL)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b9_\b4_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n-BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n-&dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE\n-*patchTable) const\n-Generic limit eval function with derivatives. This function has a same\n-signature as other device kern...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b0_\b7_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, STENCIL_TABLE const\n-*stencilTable) const\n-Generic stencil function.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b4_\b5_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-bool EvalPatches(GLuint srcBuffer, BufferDescriptor const &srcDesc, GLuint\n-dstBuffer, BufferDescriptor const &dstDesc, GLuint duBuffer, BufferDescriptor\n-const &duDesc, GLuint dvBuffer, BufferDescriptor const &dvDesc, int\n-numPatchCoords, GLuint patchCoordsBuffer, const PatchArrayVector &patchArrays,\n-GLuint patchIndexBuffer, GLuint patchParamsBuffer) const\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static GLXFBEvaluator * Create(BufferDescriptor const &srcDesc,\n-BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc,\n-BufferDescriptor const &dvDesc, BufferDescriptor const &duuDesc,\n-BufferDescriptor const &duvDesc, BufferDescriptor const &dvvDesc, void\n-*deviceContext)\n-Specialization to allow creation without a device context.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b5_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n-bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n-*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n-BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const\n-&duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER\n-*dvvBuffer, BufferDescriptor const &dvvDesc, int numPatchCoords,\n-PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel=0)\n-const\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b2_\b0_\b8_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n-static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n-*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n-BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const\n-&duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER\n-*dvvBuffer, BufferDescriptor const &dvvDesc, int numPatchCoords,\n-PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, GLXFBEvaluator const\n-*instance, void *deviceContext=NULL)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b5_\b1_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-bool EvalStencils(GLuint srcBuffer, BufferDescriptor const &srcDesc, GLuint\n-dstBuffer, BufferDescriptor const &dstDesc, GLuint duBuffer, BufferDescriptor\n-const &duDesc, GLuint dvBuffer, BufferDescriptor const &dvDesc, GLuint\n-sizesBuffer, GLuint offsetsBuffer, GLuint indicesBuffer, GLuint weightsBuffer,\n-GLuint duWeightsBuffer, GLuint dvWeightsBuffer, int start, int end) const\n-Dispatch the GLSL XFB kernel on on GPU asynchronously returns false if the\n-kernel hasn't been compile...\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n-static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor\n-const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int\n-numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int\n-fvarChannel, GLXFBEvaluator const *instance, void *deviceContext=NULL)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b6_\b7_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, STENCIL_TABLE\n-const *stencilTable, GLXFBEvaluator const *instance, void *deviceContext=NULL)\n-Generic static stencil function. This function has a same signature as other\n-device kernels have so t...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b2_\b3_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\b~_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n-~GLXFBEvaluator()\n-Destructor. note that the GL context must be made current.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bC_\bo_\bm_\bp_\bi_\bl_\be\n-bool Compile(BufferDescriptor const &srcDesc, BufferDescriptor const &dstDesc,\n-BufferDescriptor const &duDesc=BufferDescriptor(), BufferDescriptor const\n-&dvDesc=BufferDescriptor(), BufferDescriptor const &duuDesc=BufferDescriptor(),\n-BufferDescriptor const &duvDesc=BufferDescriptor(), BufferDescriptor const\n-&dvvDesc=BufferDescriptor())\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n-bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n-BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n-&dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE\n-*patchTable) const\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b4_\b2_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n-bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int\n-numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int\n-fvarChannel=0) const\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b7_\b4_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n-static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor\n-const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,\n-DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n-BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const\n-&duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER\n-*dvvBuffer, BufferDescriptor const &dvvDesc, int numPatchCoords,\n-PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel,\n-GLXFBEvaluator const *instance, void *deviceContext=NULL)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b9_\b7_\b6\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bf_\bv_\ba_\br_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br_\bs\n+std::vector< PatchParamVector > _fvarParamBuffers\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b3_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+CpuPatchTable(const Far::PatchTable *patchTable)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bf_\bv_\ba_\br_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bs\n+std::vector< std::vector< int > > _fvarIndexBuffers\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b3_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bS_\bi_\bz_\be\n+size_t GetPatchIndexSize() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b8_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bp_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs\n+PatchArrayVector _patchArrays\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b2_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br\n+const PatchParam * GetPatchParamBuffer() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bi_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+std::vector< int > _indexBuffer\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b2_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bS_\bi_\bz_\be\n+size_t GetFVarPatchIndexSize(int fvarChannel=0) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b1_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+const int * GetFVarPatchIndexBuffer(int fvarChannel=0) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b1_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br\n+const PatchParam * GetFVarPatchParamBuffer(int fvarChannel=0) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b1_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bS_\bi_\bz_\be\n+size_t GetPatchParamSize() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b8_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bS_\bi_\bz_\be\n+size_t GetVaryingPatchIndexSize() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b0_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bB_\bu_\bf_\bf_\be_\br\n+const PatchArray * GetVaryingPatchArrayBuffer() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b9_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs\n+int GetNumFVarChannels() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b0_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs\n+size_t GetNumPatchArrays() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b8_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bB_\bu_\bf_\bf_\be_\br\n+const PatchArray * GetPatchArrayBuffer() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs\n+PatchArrayVector _varyingPatchArrays\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b3_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bf_\bv_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs\n+std::vector< PatchArrayVector > _fvarPatchArrays\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b3_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b6_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b1_\b2_\b7\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n     * _\bo_\bs_\bd\n-    * _\bg_\bl_\bX_\bF_\bB_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh\n+    * _\bc_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00794.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00794.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/hlslPatchShaderSource.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/vtr/fvarLevel.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -88,44 +88,43 @@\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n-<a href=\"#nested-classes\">Classes</a> &#124;\n <a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">hlslPatchShaderSource.h File Reference</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">fvarLevel.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00773_source.html\">../far/patchDescriptor.h</a>&quot;</code><br />\n-<code>#include &lt;string&gt;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a01492_source.html\">../sdc/types.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00869_source.html\">../sdc/crease.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00860_source.html\">../sdc/options.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a01495_source.html\">../vtr/types.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00815_source.html\">../vtr/level.h</a>&quot;</code><br />\n+<code>#include &lt;vector&gt;</code><br />\n+<code>#include &lt;cassert&gt;</code><br />\n+<code>#include &lt;cstring&gt;</code><br />\n </div>\n <p><a href=\"a00794_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n-<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n-Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01265.html\">HLSLPatchShaderSource</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Provides shader source which can be used by client code.  <a href=\"a01265.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-</table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n+<tr class=\"memitem:a00909\" id=\"r_a00909\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00909.html\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00794.html\">hlslPatchShaderSource.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bd5473d7d5841d48919aaa9ad0cb1f9b.html\">vtr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00794.html\">fvarLevel.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,25 +1,27 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-hlslPatchShaderSource.h File Reference\n+_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+fvarLevel.h File Reference\n #include \"../version.h\"\n-#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh\"\n-#include <string>\n+#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n+#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bc_\br_\be_\ba_\bs_\be_\b._\bh\"\n+#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh\"\n+#include \"_\b._\b._\b/_\bv_\bt_\br_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n+#include \"_\b._\b._\b/_\bv_\bt_\br_\b/_\bl_\be_\bv_\be_\bl_\b._\bh\"\n+#include <vector>\n+#include <cassert>\n+#include <cstring>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n-C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bH_\bL_\bS_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be\n-\u00a0       Provides shader source which can be used by client code. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bh_\bl_\bs_\bl_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b._\bh\n+    * _\bv_\bt_\br\n+    * _\bf_\bv_\ba_\br_\bL_\be_\bv_\be_\bl_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00794_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00794_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/hlslPatchShaderSource.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/vtr/fvarLevel.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">hlslPatchShaderSource.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">fvarLevel.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00794.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2015 Pixar</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2014 DreamWorks Animation LLC.</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -118,69 +118,443 @@\n <div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_HLSL_PATCH_SHADER_SOURCE_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_HLSL_PATCH_SHADER_SOURCE_H</span></div>\n-<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n-<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../far/patchDescriptor.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &lt;string&gt;</span></div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">namespace </span>Osd {</div>\n+<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_VTR_FVAR_LEVEL_H</span></div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#define OPENSUBDIV3_VTR_FVAR_LEVEL_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span> </div>\n+<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span> </div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#include &quot;../sdc/types.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../sdc/crease.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../sdc/options.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &quot;../vtr/types.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"preprocessor\">#include &quot;../vtr/level.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span> </div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"preprocessor\">#include &lt;cassert&gt;</span></div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"preprocessor\">#include &lt;cstring&gt;</span></div>\n <div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00040\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01265.html\">   40</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01265.html\">HLSLPatchShaderSource</a> {</div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01265.html#ad41c6e1dc4a5cd6ee4f33fc5a8e15d1d\">   45</a></span>    <span class=\"keyword\">static</span> std::string <a class=\"code hl_function\" href=\"a01265.html#ad41c6e1dc4a5cd6ee4f33fc5a8e15d1d\">GetPatchBasisShaderSource</a>();</div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span> </div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01265.html#a230efce26a4754c94dbeedd435fe471b\">   50</a></span>    <span class=\"keyword\">static</span> std::string <a class=\"code hl_function\" href=\"a01265.html#a230efce26a4754c94dbeedd435fe471b\">GetPatchDrawingShaderSource</a>();</div>\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span> </div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span> </div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01265.html#ad5f427d2655d384980715874209345e7\">   60</a></span>    <span class=\"keyword\">static</span> std::string <a class=\"code hl_function\" href=\"a01265.html#ad5f427d2655d384980715874209345e7\">GetCommonShaderSource</a>();</div>\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span> </div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01265.html#a20cb122b561de15ed3b90d7e4f5176d2\">   62</a></span>    <span class=\"keyword\">static</span> std::string <a class=\"code hl_function\" href=\"a01265.html#a20cb122b561de15ed3b90d7e4f5176d2\">GetVertexShaderSource</a>(<a class=\"code hl_enumeration\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">Far::PatchDescriptor::Type</a> type);</div>\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span> </div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01265.html#a97a09fe0a378798cafdff72e115e373f\">   64</a></span>    <span class=\"keyword\">static</span> std::string <a class=\"code hl_function\" href=\"a01265.html#a97a09fe0a378798cafdff72e115e373f\">GetHullShaderSource</a>(<a class=\"code hl_enumeration\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">Far::PatchDescriptor::Type</a> type);</div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span> </div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01265.html#a733309309efe67ba5d1acd7d0a9ff6ca\">   66</a></span>    <span class=\"keyword\">static</span> std::string <a class=\"code hl_function\" href=\"a01265.html#a733309309efe67ba5d1acd7d0a9ff6ca\">GetDomainShaderSource</a>(<a class=\"code hl_enumeration\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">Far::PatchDescriptor::Type</a> type);</div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span> </div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span> </div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>}  <span class=\"comment\">// end namespace Osd</span></div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span> </div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span>}  <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span> </div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span> </div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_HLSL_PATCH_SHADER_SOURCE_H</span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa00973_html_a1d1cfd8ffb84e947f82999c682b666a7\"><div class=\"ttname\"><a href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::Type</a></div><div class=\"ttdeci\">Type</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00773_source.html#l00048\">patchDescriptor.h:48</a></div></div>\n-<div class=\"ttc\" id=\"aa01265_html\"><div class=\"ttname\"><a href=\"a01265.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::HLSLPatchShaderSource</a></div><div class=\"ttdoc\">Provides shader source which can be used by client code.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00794_source.html#l00040\">hlslPatchShaderSource.h:40</a></div></div>\n-<div class=\"ttc\" id=\"aa01265_html_a20cb122b561de15ed3b90d7e4f5176d2\"><div class=\"ttname\"><a href=\"a01265.html#a20cb122b561de15ed3b90d7e4f5176d2\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::HLSLPatchShaderSource::GetVertexShaderSource</a></div><div class=\"ttdeci\">static std::string GetVertexShaderSource(Far::PatchDescriptor::Type type)</div></div>\n-<div class=\"ttc\" id=\"aa01265_html_a230efce26a4754c94dbeedd435fe471b\"><div class=\"ttname\"><a href=\"a01265.html#a230efce26a4754c94dbeedd435fe471b\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::HLSLPatchShaderSource::GetPatchDrawingShaderSource</a></div><div class=\"ttdeci\">static std::string GetPatchDrawingShaderSource()</div><div class=\"ttdoc\">Returns shader source which can be used while drawing piecewise parametric patches resulting from sub...</div></div>\n-<div class=\"ttc\" id=\"aa01265_html_a733309309efe67ba5d1acd7d0a9ff6ca\"><div class=\"ttname\"><a href=\"a01265.html#a733309309efe67ba5d1acd7d0a9ff6ca\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::HLSLPatchShaderSource::GetDomainShaderSource</a></div><div class=\"ttdeci\">static std::string GetDomainShaderSource(Far::PatchDescriptor::Type type)</div></div>\n-<div class=\"ttc\" id=\"aa01265_html_a97a09fe0a378798cafdff72e115e373f\"><div class=\"ttname\"><a href=\"a01265.html#a97a09fe0a378798cafdff72e115e373f\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::HLSLPatchShaderSource::GetHullShaderSource</a></div><div class=\"ttdeci\">static std::string GetHullShaderSource(Far::PatchDescriptor::Type type)</div></div>\n-<div class=\"ttc\" id=\"aa01265_html_ad41c6e1dc4a5cd6ee4f33fc5a8e15d1d\"><div class=\"ttname\"><a href=\"a01265.html#ad41c6e1dc4a5cd6ee4f33fc5a8e15d1d\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::HLSLPatchShaderSource::GetPatchBasisShaderSource</a></div><div class=\"ttdeci\">static std::string GetPatchBasisShaderSource()</div><div class=\"ttdoc\">Returns shader source which can be used to evaluate position and first and second derivatives on piec...</div></div>\n-<div class=\"ttc\" id=\"aa01265_html_ad5f427d2655d384980715874209345e7\"><div class=\"ttname\"><a href=\"a01265.html#ad5f427d2655d384980715874209345e7\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::HLSLPatchShaderSource::GetCommonShaderSource</a></div><div class=\"ttdeci\">static std::string GetCommonShaderSource()</div></div>\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span> </div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span> </div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"keyword\">namespace </span>Vtr {</div>\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span><span class=\"keyword\">namespace </span>internal {</div>\n+<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span> </div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span><span class=\"comment\">//  FVarLevel:</span></div>\n+<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span><span class=\"comment\">//      A &quot;face-varying channel&quot; includes the topology for a set of face-varying</span></div>\n+<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span><span class=\"comment\">//  data, relative to the topology of the Level with which it is associated.</span></div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span><span class=\"comment\">//  Analogous to a set of vertices and face-vertices that define the topology for</span></div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span><span class=\"comment\">//  the geometry, a channel requires a set of &quot;values&quot; and &quot;face-values&quot;.  The</span></div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span><span class=\"comment\">//  &quot;values&quot; are indices of entries in a set of face-varying data, just as vertices</span></div>\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span><span class=\"comment\">//  are indices into a set of vertex data.  The face-values identify a value for</span></div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span><span class=\"comment\">//  each vertex of the face, and so define topology for the values that may be</span></div>\n+<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span><span class=\"comment\">//  unique to each channel.</span></div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span><span class=\"comment\">//  In addition to the value size and the vector of face-values (which matches the</span></div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span><span class=\"comment\">//  size of the geometry&#39;s face-vertices), tags are associated with each component</span></div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span><span class=\"comment\">//  to identify deviations of the face-varying topology from the vertex topology.</span></div>\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span><span class=\"comment\">//  And since there may be a one-to-many mapping between vertices and face-varying</span></div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span><span class=\"comment\">//  values, that mapping is also allocated.</span></div>\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span><span class=\"comment\">//  It turns out that the mapping used is able to completely encode the set of</span></div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span><span class=\"comment\">//  face-values and is more amenable to refinement.  Currently the face-values</span></div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span><span class=\"comment\">//  take up almost half the memory of this representation, so if memory does</span></div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span><span class=\"comment\">//  become a concern, we do not need to store them.  The only reason we do so now</span></div>\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span><span class=\"comment\">//  is that the face-value interface for specifying base topology and inspecting</span></div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span><span class=\"comment\">//  subsequent levels is very familiar to that of face-vertices for clients.  So</span></div>\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span><span class=\"comment\">//  having them available for such access is convenient.</span></div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span><span class=\"comment\">//  Regarding scope and access...</span></div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span><span class=\"comment\">//      Unclear at this early state, but leaning towards nesting this class within</span></div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span><span class=\"comment\">//  Level, given the intimate dependency between the two.</span></div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span><span class=\"comment\">//      Everything is being declared public for now to facilitate access until it&#39;s</span></div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span><span class=\"comment\">//  clearer how this functionality will be provided.</span></div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span><span class=\"keyword\">class </span>FVarLevel {</div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>    <span class=\"comment\">//  Component tags -- trying to minimize the types needed here:</span></div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>    <span class=\"comment\">//  Tag per Edge:</span></div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span>    <span class=\"comment\">//      - facilitates topological analysis around each vertex</span></div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>    <span class=\"comment\">//      - required during refinement to spawn one or more edge-values</span></div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>    <span class=\"keyword\">struct </span>ETag {</div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>        ETag() { }</div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span> </div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>        <span class=\"keywordtype\">void</span> clear() { std::memset(<span class=\"keyword\">this</span>, 0, <span class=\"keyword\">sizeof</span>(ETag)); }</div>\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span> </div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>        <span class=\"keyword\">typedef</span> <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> ETagSize;</div>\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span> </div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>        ETagSize _mismatch : 1;  <span class=\"comment\">// local FVar topology does not match</span></div>\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span>        ETagSize _disctsV0 : 1;  <span class=\"comment\">// discontinuous at vertex 0</span></div>\n+<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span>        ETagSize _disctsV1 : 1;  <span class=\"comment\">// discontinuous at vertex 1</span></div>\n+<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>        ETagSize _linear   : 1;  <span class=\"comment\">// linear boundary constraints</span></div>\n+<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span> </div>\n+<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span>        Level::ETag combineWithLevelETag(Level::ETag) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span>    };</div>\n+<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span> </div>\n+<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span>    <span class=\"comment\">//  Tag per Value:</span></div>\n+<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span>    <span class=\"comment\">//      - informs both refinement and interpolation</span></div>\n+<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span>    <span class=\"comment\">//          - every value spawns a child value in refinement</span></div>\n+<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span>    <span class=\"comment\">//      - includes a subset of Level::VTag to be later combined with a VTag</span></div>\n+<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span>    <span class=\"keyword\">struct </span>ValueTag {</div>\n+<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span>        ValueTag() { }</div>\n+<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span> </div>\n+<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span>        <span class=\"keywordtype\">void</span> clear() { std::memset(<span class=\"keyword\">this</span>, 0, <span class=\"keyword\">sizeof</span>(ValueTag)); }</div>\n+<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span> </div>\n+<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span>        <span class=\"keywordtype\">bool</span> isMismatch()<span class=\"keyword\"> const    </span>{ <span class=\"keywordflow\">return</span> _mismatch; }</div>\n+<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span>        <span class=\"keywordtype\">bool</span> isCrease()<span class=\"keyword\"> const      </span>{ <span class=\"keywordflow\">return</span> _crease; }</div>\n+<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span>        <span class=\"keywordtype\">bool</span> isCorner()<span class=\"keyword\"> const      </span>{ <span class=\"keywordflow\">return</span> !_crease; }</div>\n+<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\">  116</span>        <span class=\"keywordtype\">bool</span> isSemiSharp()<span class=\"keyword\"> const   </span>{ <span class=\"keywordflow\">return</span> _semiSharp; }</div>\n+<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span>        <span class=\"keywordtype\">bool</span> isInfSharp()<span class=\"keyword\"> const    </span>{ <span class=\"keywordflow\">return</span> !_semiSharp &amp;&amp; !_crease; }</div>\n+<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\">  118</span>        <span class=\"keywordtype\">bool</span> isDepSharp()<span class=\"keyword\"> const    </span>{ <span class=\"keywordflow\">return</span> _depSharp; }</div>\n+<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span>        <span class=\"keywordtype\">bool</span> hasCreaseEnds()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _crease || _semiSharp; }</div>\n+<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span> </div>\n+<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\">  121</span>        <span class=\"keywordtype\">bool</span> hasInfSharpEdges()<span class=\"keyword\"> const   </span>{ <span class=\"keywordflow\">return</span> _infSharpEdges; }</div>\n+<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span>        <span class=\"keywordtype\">bool</span> hasInfIrregularity()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _infIrregular; }</div>\n+<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span> </div>\n+<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span>        <span class=\"keyword\">typedef</span> <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> ValueTagSize;</div>\n+<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span> </div>\n+<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span>        <span class=\"comment\">//  If there is no mismatch, no other members should be inspected</span></div>\n+<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span>        ValueTagSize _mismatch    : 1;  <span class=\"comment\">// local FVar topology does not match</span></div>\n+<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span>        ValueTagSize _xordinary   : 1;  <span class=\"comment\">// local FVar topology is extra-ordinary</span></div>\n+<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span>        ValueTagSize _nonManifold : 1;  <span class=\"comment\">// local FVar topology is non-manifold</span></div>\n+<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span>        ValueTagSize _crease      : 1;  <span class=\"comment\">// value is a crease, otherwise a corner</span></div>\n+<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\">  131</span>        ValueTagSize _semiSharp   : 1;  <span class=\"comment\">// value is a corner decaying to crease</span></div>\n+<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\">  132</span>        ValueTagSize _depSharp    : 1;  <span class=\"comment\">// value is a corner by dependency on another</span></div>\n+<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\">  133</span> </div>\n+<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\">  134</span>        ValueTagSize _infSharpEdges : 1;  <span class=\"comment\">// value is a corner by inf-sharp features</span></div>\n+<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\">  135</span>        ValueTagSize _infIrregular  : 1;  <span class=\"comment\">// value span includes inf-sharp irregularity</span></div>\n+<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\">  136</span> </div>\n+<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\">  137</span>        Level::VTag combineWithLevelVTag(Level::VTag) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\">  138</span> </div>\n+<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\">  139</span>        <span class=\"comment\">//  Alternate constructor and accessor for dealing with integer bits directly:</span></div>\n+<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\">  140</span>        <span class=\"keyword\">explicit</span> ValueTag(ValueTagSize bits) {</div>\n+<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\">  141</span>            std::memcpy(<span class=\"keyword\">this</span>, &amp;bits, <span class=\"keyword\">sizeof</span>(bits));</div>\n+<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span>        }</div>\n+<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\">  143</span>        ValueTagSize getBits()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\">  144</span>            ValueTagSize bits;</div>\n+<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\">  145</span>            std::memcpy(&amp;bits, <span class=\"keyword\">this</span>, <span class=\"keyword\">sizeof</span>(bits));</div>\n+<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\">  146</span>            <span class=\"keywordflow\">return</span> bits;</div>\n+<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\">  147</span>        }</div>\n+<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\">  148</span>    };</div>\n+<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\">  149</span> </div>\n+<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\">  150</span>    <span class=\"keyword\">typedef</span> Vtr::ConstArray&lt;ValueTag&gt; ConstValueTagArray;</div>\n+<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\">  151</span>    <span class=\"keyword\">typedef</span> Vtr::Array&lt;ValueTag&gt; ValueTagArray;</div>\n+<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\">  152</span> </div>\n+<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\">  153</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\">  154</span>    <span class=\"comment\">//  Simple struct containing the &quot;end faces&quot; of a crease, i.e. the faces which</span></div>\n+<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\">  155</span>    <span class=\"comment\">//  contain the FVar values to be used when interpolating the crease.  (Prefer</span></div>\n+<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\">  156</span>    <span class=\"comment\">//  the struct over std::pair for its member names)</span></div>\n+<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\">  157</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\">  158</span>    <span class=\"keyword\">struct </span>CreaseEndPair {</div>\n+<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\">  159</span>        <a class=\"code hl_typedef\" href=\"a00909.html#a97c1e0c5ac33f97e2b73fde56b56c363\">LocalIndex</a> _startFace;</div>\n+<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\">  160</span>        <a class=\"code hl_typedef\" href=\"a00909.html#a97c1e0c5ac33f97e2b73fde56b56c363\">LocalIndex</a> _endFace;</div>\n+<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\">  161</span>    };</div>\n+<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\">  162</span> </div>\n+<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\">  163</span>    <span class=\"keyword\">typedef</span> Vtr::ConstArray&lt;CreaseEndPair&gt; ConstCreaseEndPairArray;</div>\n+<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\">  164</span>    <span class=\"keyword\">typedef</span> Vtr::Array&lt;CreaseEndPair&gt; CreaseEndPairArray;</div>\n+<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\">  165</span> </div>\n+<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\">  166</span>    <span class=\"keyword\">typedef</span> <a class=\"code hl_typedef\" href=\"a00909.html#a97c1e0c5ac33f97e2b73fde56b56c363\">LocalIndex</a>      Sibling;</div>\n+<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\">  167</span> </div>\n+<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\">  168</span>    <span class=\"keyword\">typedef</span> <a class=\"code hl_typedef\" href=\"a00909.html#a175f8a210a75b8180bc7ec74459492c9\">ConstLocalIndexArray</a> ConstSiblingArray;</div>\n+<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\">  169</span>    <span class=\"keyword\">typedef</span> <a class=\"code hl_typedef\" href=\"a00909.html#a1e004d5c1e30ef69719d4083afe0f4ce\">LocalIndexArray</a> SiblingArray;</div>\n+<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\">  170</span> </div>\n+<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\">  172</span>    FVarLevel(Level <span class=\"keyword\">const</span>&amp; level);</div>\n+<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\">  173</span>    ~FVarLevel();</div>\n+<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\">  174</span> </div>\n+<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\">  175</span>    <span class=\"comment\">//  Queries for the entire channel:</span></div>\n+<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\">  176</span>    Level <span class=\"keyword\">const</span>&amp; getLevel()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _level; }</div>\n+<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span> </div>\n+<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\">  178</span>    <span class=\"keywordtype\">int</span> getNumValues()<span class=\"keyword\"> const          </span>{ <span class=\"keywordflow\">return</span> _valueCount; }</div>\n+<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\">  179</span>    <span class=\"keywordtype\">int</span> getNumFaceValuesTotal()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (<span class=\"keywordtype\">int</span>) _faceVertValues.size(); }</div>\n+<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\">  180</span> </div>\n+<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\">  181</span>    <span class=\"keywordtype\">bool</span> isLinear()<span class=\"keyword\"> const            </span>{ <span class=\"keywordflow\">return</span> _isLinear; }</div>\n+<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\">  182</span>    <span class=\"keywordtype\">bool</span> hasLinearBoundaries()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _hasLinearBoundaries; }</div>\n+<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\">  183</span>    <span class=\"keywordtype\">bool</span> hasSmoothBoundaries()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> ! _hasLinearBoundaries; }</div>\n+<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\">  184</span>    <span class=\"keywordtype\">bool</span> hasCreaseEnds()<span class=\"keyword\"> const       </span>{ <span class=\"keywordflow\">return</span> hasSmoothBoundaries(); }</div>\n+<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\">  185</span> </div>\n+<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\">  186</span>    Sdc::Options getOptions()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _options; }</div>\n+<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\">  187</span> </div>\n+<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\">  188</span>    <span class=\"comment\">//  Queries per face:</span></div>\n+<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\">  189</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a>  getFaceValues(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> fIndex) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\">  190</span>    <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a>       getFaceValues(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> fIndex);</div>\n+<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\">  191</span> </div>\n+<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\">  192</span>    <span class=\"comment\">//  Queries per edge:</span></div>\n+<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\">  193</span>    ETag getEdgeTag(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> eIndex)<span class=\"keyword\"> const          </span>{ <span class=\"keywordflow\">return</span> _edgeTags[eIndex]; }</div>\n+<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\">  194</span>    <span class=\"keywordtype\">bool</span> edgeTopologyMatches(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> eIndex)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> !getEdgeTag(eIndex)._mismatch; }</div>\n+<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\">  195</span> </div>\n+<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\">  196</span>    <span class=\"comment\">//  Queries per vertex (and its potential sibling values):</span></div>\n+<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\">  197</span>    <span class=\"keywordtype\">int</span>   getNumVertexValues(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> v)<span class=\"keyword\"> const                  </span>{ <span class=\"keywordflow\">return</span> _vertSiblingCounts[v]; }</div>\n+<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\">  198</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> getVertexValueOffset(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> v, Sibling i = 0)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _vertSiblingOffsets[v] + i; }</div>\n+<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\">  199</span> </div>\n+<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\">  200</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> getVertexValue(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> v, Sibling i = 0)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _vertValueIndices[getVertexValueOffset(v,i)]; }</div>\n+<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\">  201</span> </div>\n+<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\">  202</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> findVertexValueIndex(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertexIndex, <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> valueIndex) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\">  203</span> </div>\n+<div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\">  204</span>    <span class=\"comment\">//  Methods to access/modify array properties per vertex:</span></div>\n+<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\">  205</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a>  getVertexValues(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vIndex) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\">  206</span>    <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a>       getVertexValues(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vIndex);</div>\n+<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\">  207</span> </div>\n+<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\">  208</span>    ConstValueTagArray  getVertexValueTags(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vIndex) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\">  209</span>    ValueTagArray       getVertexValueTags(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vIndex);</div>\n+<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\">  210</span> </div>\n+<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\">  211</span>    ConstCreaseEndPairArray  getVertexValueCreaseEnds(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vIndex) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00212\" name=\"l00212\"></a><span class=\"lineno\">  212</span>    CreaseEndPairArray       getVertexValueCreaseEnds(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vIndex);</div>\n+<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\">  213</span> </div>\n+<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\">  214</span>    ConstSiblingArray  getVertexFaceSiblings(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vIndex) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\">  215</span>    SiblingArray       getVertexFaceSiblings(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vIndex);</div>\n+<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\">  216</span> </div>\n+<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\">  217</span>    <span class=\"comment\">//  Queries per value:</span></div>\n+<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\">  218</span>    ValueTag getValueTag(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> valueIndex)<span class=\"keyword\"> const          </span>{ <span class=\"keywordflow\">return</span> _vertValueTags[valueIndex]; }</div>\n+<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\">  219</span>    <span class=\"keywordtype\">bool</span>     valueTopologyMatches(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> valueIndex)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> !getValueTag(valueIndex)._mismatch; }</div>\n+<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\">  220</span> </div>\n+<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\">  221</span>    CreaseEndPair getValueCreaseEndPair(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> valueIndex)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _vertValueCreaseEnds[valueIndex]; }</div>\n+<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\">  222</span> </div>\n+<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\">  223</span>    <span class=\"comment\">//  Tag queries related to faces (use Level methods for those returning Level::VTag/ETag)</span></div>\n+<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\">  224</span>    <span class=\"keywordtype\">void</span> getFaceValueTags(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex, ValueTag valueTags[]) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\">  225</span> </div>\n+<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\">  226</span>    ValueTag getFaceCompositeValueTag(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\">  227</span> </div>\n+<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\">  228</span>    <span class=\"comment\">//  Higher-level topological queries, i.e. values in a neighborhood:</span></div>\n+<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\">  229</span>    <span class=\"keywordtype\">void</span> getEdgeFaceValues(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> eIndex, <span class=\"keywordtype\">int</span> fIncToEdge, <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> valuesPerVert[2]) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\">  230</span>    <span class=\"keywordtype\">void</span> getVertexEdgeValues(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vIndex, <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> valuesPerEdge[]) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\">  231</span>    <span class=\"keywordtype\">void</span> getVertexCreaseEndValues(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vIndex, Sibling sibling, <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> endValues[2]) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\">  232</span> </div>\n+<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\">  233</span>    <span class=\"comment\">//  Initialization and allocation helpers:</span></div>\n+<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\">  234</span>    <span class=\"keywordtype\">void</span> setOptions(Sdc::Options <span class=\"keyword\">const</span>&amp; options);</div>\n+<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\">  235</span>    <span class=\"keywordtype\">void</span> resizeVertexValues(<span class=\"keywordtype\">int</span> numVertexValues);</div>\n+<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\">  236</span>    <span class=\"keywordtype\">void</span> resizeValues(<span class=\"keywordtype\">int</span> numValues);</div>\n+<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\">  237</span>    <span class=\"keywordtype\">void</span> resizeComponents();</div>\n+<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\">  238</span> </div>\n+<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\">  239</span>    <span class=\"comment\">//  Topological analysis methods -- tagging and face-value population:</span></div>\n+<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\">  240</span>    <span class=\"keywordtype\">void</span> completeTopologyFromFaceValues(<span class=\"keywordtype\">int</span> regBoundaryValence);</div>\n+<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\">  241</span>    <span class=\"keywordtype\">void</span> initializeFaceValuesFromFaceVertices();</div>\n+<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\">  242</span>    <span class=\"keywordtype\">void</span> initializeFaceValuesFromVertexFaceSiblings();</div>\n+<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\">  243</span> </div>\n+<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\">  244</span>    <span class=\"keyword\">struct </span>ValueSpan;</div>\n+<div class=\"line\"><a id=\"l00245\" name=\"l00245\"></a><span class=\"lineno\">  245</span>    <span class=\"keywordtype\">void</span> gatherValueSpans(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vIndex, ValueSpan * vValueSpans) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\">  246</span> </div>\n+<div class=\"line\"><a id=\"l00247\" name=\"l00247\"></a><span class=\"lineno\">  247</span>    <span class=\"comment\">//  Debugging methods:</span></div>\n+<div class=\"line\"><a id=\"l00248\" name=\"l00248\"></a><span class=\"lineno\">  248</span>    <span class=\"keywordtype\">bool</span> validate() <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00249\" name=\"l00249\"></a><span class=\"lineno\">  249</span>    <span class=\"keywordtype\">void</span> print() <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00250\" name=\"l00250\"></a><span class=\"lineno\">  250</span>    <span class=\"keywordtype\">void</span> buildFaceVertexSiblingsFromVertexFaceSiblings(std::vector&lt;Sibling&gt;&amp; fvSiblings) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00251\" name=\"l00251\"></a><span class=\"lineno\">  251</span> </div>\n+<div class=\"line\"><a id=\"l00252\" name=\"l00252\"></a><span class=\"lineno\">  252</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00253\" name=\"l00253\"></a><span class=\"lineno\">  253</span>    <span class=\"comment\">//  Just as Refinements build Levels, FVarRefinements build FVarLevels...</span></div>\n+<div class=\"line\"><a id=\"l00254\" name=\"l00254\"></a><span class=\"lineno\">  254</span>    <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span>FVarRefinement;</div>\n+<div class=\"line\"><a id=\"l00255\" name=\"l00255\"></a><span class=\"lineno\">  255</span> </div>\n+<div class=\"line\"><a id=\"l00256\" name=\"l00256\"></a><span class=\"lineno\">  256</span>    Level <span class=\"keyword\">const</span> &amp; _level;</div>\n+<div class=\"line\"><a id=\"l00257\" name=\"l00257\"></a><span class=\"lineno\">  257</span> </div>\n+<div class=\"line\"><a id=\"l00258\" name=\"l00258\"></a><span class=\"lineno\">  258</span>    <span class=\"comment\">//  Linear interpolation options vary between channels:</span></div>\n+<div class=\"line\"><a id=\"l00259\" name=\"l00259\"></a><span class=\"lineno\">  259</span>    Sdc::Options _options;</div>\n+<div class=\"line\"><a id=\"l00260\" name=\"l00260\"></a><span class=\"lineno\">  260</span> </div>\n+<div class=\"line\"><a id=\"l00261\" name=\"l00261\"></a><span class=\"lineno\">  261</span>    <span class=\"keywordtype\">bool</span> _isLinear;</div>\n+<div class=\"line\"><a id=\"l00262\" name=\"l00262\"></a><span class=\"lineno\">  262</span>    <span class=\"keywordtype\">bool</span> _hasLinearBoundaries;</div>\n+<div class=\"line\"><a id=\"l00263\" name=\"l00263\"></a><span class=\"lineno\">  263</span>    <span class=\"keywordtype\">bool</span> _hasDependentSharpness;</div>\n+<div class=\"line\"><a id=\"l00264\" name=\"l00264\"></a><span class=\"lineno\">  264</span>    <span class=\"keywordtype\">int</span>  _valueCount;</div>\n+<div class=\"line\"><a id=\"l00265\" name=\"l00265\"></a><span class=\"lineno\">  265</span> </div>\n+<div class=\"line\"><a id=\"l00266\" name=\"l00266\"></a><span class=\"lineno\">  266</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00267\" name=\"l00267\"></a><span class=\"lineno\">  267</span>    <span class=\"comment\">//  Vectors recording face-varying topology including tags that help propagate</span></div>\n+<div class=\"line\"><a id=\"l00268\" name=\"l00268\"></a><span class=\"lineno\">  268</span>    <span class=\"comment\">//  data through the refinement hierarchy.  Vectors are not sparse but most use</span></div>\n+<div class=\"line\"><a id=\"l00269\" name=\"l00269\"></a><span class=\"lineno\">  269</span>    <span class=\"comment\">//  8-bit values relative to the local topology.</span></div>\n+<div class=\"line\"><a id=\"l00270\" name=\"l00270\"></a><span class=\"lineno\">  270</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00271\" name=\"l00271\"></a><span class=\"lineno\">  271</span>    <span class=\"comment\">//  The vector of face-values is actually redundant here, but is constructed as</span></div>\n+<div class=\"line\"><a id=\"l00272\" name=\"l00272\"></a><span class=\"lineno\">  272</span>    <span class=\"comment\">//  it is most convenient for clients.  It represents almost half the memory of</span></div>\n+<div class=\"line\"><a id=\"l00273\" name=\"l00273\"></a><span class=\"lineno\">  273</span>    <span class=\"comment\">//  the topology (4 32-bit integers per face) and not surprisingly, populating</span></div>\n+<div class=\"line\"><a id=\"l00274\" name=\"l00274\"></a><span class=\"lineno\">  274</span>    <span class=\"comment\">//  it takes a considerable amount of the refinement time (1/3).  We can reduce</span></div>\n+<div class=\"line\"><a id=\"l00275\" name=\"l00275\"></a><span class=\"lineno\">  275</span>    <span class=\"comment\">//  both if we are willing to compute these on demand for clients.</span></div>\n+<div class=\"line\"><a id=\"l00276\" name=\"l00276\"></a><span class=\"lineno\">  276</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00277\" name=\"l00277\"></a><span class=\"lineno\">  277</span>    <span class=\"comment\">//  Per-face (matches face-verts of corresponding level):</span></div>\n+<div class=\"line\"><a id=\"l00278\" name=\"l00278\"></a><span class=\"lineno\">  278</span>    std::vector&lt;Index&gt; _faceVertValues;</div>\n+<div class=\"line\"><a id=\"l00279\" name=\"l00279\"></a><span class=\"lineno\">  279</span> </div>\n+<div class=\"line\"><a id=\"l00280\" name=\"l00280\"></a><span class=\"lineno\">  280</span>    <span class=\"comment\">//  Per-edge:</span></div>\n+<div class=\"line\"><a id=\"l00281\" name=\"l00281\"></a><span class=\"lineno\">  281</span>    std::vector&lt;ETag&gt; _edgeTags;</div>\n+<div class=\"line\"><a id=\"l00282\" name=\"l00282\"></a><span class=\"lineno\">  282</span> </div>\n+<div class=\"line\"><a id=\"l00283\" name=\"l00283\"></a><span class=\"lineno\">  283</span>    <span class=\"comment\">//  Per-vertex:</span></div>\n+<div class=\"line\"><a id=\"l00284\" name=\"l00284\"></a><span class=\"lineno\">  284</span>    std::vector&lt;Sibling&gt;  _vertSiblingCounts;</div>\n+<div class=\"line\"><a id=\"l00285\" name=\"l00285\"></a><span class=\"lineno\">  285</span>    std::vector&lt;int&gt;      _vertSiblingOffsets;</div>\n+<div class=\"line\"><a id=\"l00286\" name=\"l00286\"></a><span class=\"lineno\">  286</span>    std::vector&lt;Sibling&gt;  _vertFaceSiblings;</div>\n+<div class=\"line\"><a id=\"l00287\" name=\"l00287\"></a><span class=\"lineno\">  287</span> </div>\n+<div class=\"line\"><a id=\"l00288\" name=\"l00288\"></a><span class=\"lineno\">  288</span>    <span class=\"comment\">//  Per-value:</span></div>\n+<div class=\"line\"><a id=\"l00289\" name=\"l00289\"></a><span class=\"lineno\">  289</span>    std::vector&lt;Index&gt;         _vertValueIndices;</div>\n+<div class=\"line\"><a id=\"l00290\" name=\"l00290\"></a><span class=\"lineno\">  290</span>    std::vector&lt;ValueTag&gt;      _vertValueTags;</div>\n+<div class=\"line\"><a id=\"l00291\" name=\"l00291\"></a><span class=\"lineno\">  291</span>    std::vector&lt;CreaseEndPair&gt; _vertValueCreaseEnds;</div>\n+<div class=\"line\"><a id=\"l00292\" name=\"l00292\"></a><span class=\"lineno\">  292</span>};</div>\n+<div class=\"line\"><a id=\"l00293\" name=\"l00293\"></a><span class=\"lineno\">  293</span> </div>\n+<div class=\"line\"><a id=\"l00294\" name=\"l00294\"></a><span class=\"lineno\">  294</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00295\" name=\"l00295\"></a><span class=\"lineno\">  295</span><span class=\"comment\">//  Access/modify the values associated with each face:</span></div>\n+<div class=\"line\"><a id=\"l00296\" name=\"l00296\"></a><span class=\"lineno\">  296</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00297\" name=\"l00297\"></a><span class=\"lineno\">  297</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a></div>\n+<div class=\"line\"><a id=\"l00298\" name=\"l00298\"></a><span class=\"lineno\">  298</span>FVarLevel::getFaceValues(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> fIndex)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00299\" name=\"l00299\"></a><span class=\"lineno\">  299</span> </div>\n+<div class=\"line\"><a id=\"l00300\" name=\"l00300\"></a><span class=\"lineno\">  300</span>    <span class=\"keywordtype\">int</span> vCount  = _level.getNumFaceVertices(fIndex);</div>\n+<div class=\"line\"><a id=\"l00301\" name=\"l00301\"></a><span class=\"lineno\">  301</span>    <span class=\"keywordtype\">int</span> vOffset = _level.getOffsetOfFaceVertices(fIndex);</div>\n+<div class=\"line\"><a id=\"l00302\" name=\"l00302\"></a><span class=\"lineno\">  302</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a>(&amp;_faceVertValues[vOffset], vCount);</div>\n+<div class=\"line\"><a id=\"l00303\" name=\"l00303\"></a><span class=\"lineno\">  303</span>}</div>\n+<div class=\"line\"><a id=\"l00304\" name=\"l00304\"></a><span class=\"lineno\">  304</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a></div>\n+<div class=\"line\"><a id=\"l00305\" name=\"l00305\"></a><span class=\"lineno\">  305</span>FVarLevel::getFaceValues(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> fIndex) {</div>\n+<div class=\"line\"><a id=\"l00306\" name=\"l00306\"></a><span class=\"lineno\">  306</span> </div>\n+<div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\">  307</span>    <span class=\"keywordtype\">int</span> vCount  = _level.getNumFaceVertices(fIndex);</div>\n+<div class=\"line\"><a id=\"l00308\" name=\"l00308\"></a><span class=\"lineno\">  308</span>    <span class=\"keywordtype\">int</span> vOffset = _level.getOffsetOfFaceVertices(fIndex);</div>\n+<div class=\"line\"><a id=\"l00309\" name=\"l00309\"></a><span class=\"lineno\">  309</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a>(&amp;_faceVertValues[vOffset], vCount);</div>\n+<div class=\"line\"><a id=\"l00310\" name=\"l00310\"></a><span class=\"lineno\">  310</span>}</div>\n+<div class=\"line\"><a id=\"l00311\" name=\"l00311\"></a><span class=\"lineno\">  311</span> </div>\n+<div class=\"line\"><a id=\"l00312\" name=\"l00312\"></a><span class=\"lineno\">  312</span><span class=\"keyword\">inline</span> FVarLevel::ConstSiblingArray</div>\n+<div class=\"line\"><a id=\"l00313\" name=\"l00313\"></a><span class=\"lineno\">  313</span>FVarLevel::getVertexFaceSiblings(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vIndex)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00314\" name=\"l00314\"></a><span class=\"lineno\">  314</span> </div>\n+<div class=\"line\"><a id=\"l00315\" name=\"l00315\"></a><span class=\"lineno\">  315</span>    <span class=\"keywordtype\">int</span> vCount  = _level.getNumVertexFaces(vIndex);</div>\n+<div class=\"line\"><a id=\"l00316\" name=\"l00316\"></a><span class=\"lineno\">  316</span>    <span class=\"keywordtype\">int</span> vOffset = _level.getOffsetOfVertexFaces(vIndex);</div>\n+<div class=\"line\"><a id=\"l00317\" name=\"l00317\"></a><span class=\"lineno\">  317</span>    <span class=\"keywordflow\">return</span> ConstSiblingArray(&amp;_vertFaceSiblings[vOffset], vCount);</div>\n+<div class=\"line\"><a id=\"l00318\" name=\"l00318\"></a><span class=\"lineno\">  318</span>}</div>\n+<div class=\"line\"><a id=\"l00319\" name=\"l00319\"></a><span class=\"lineno\">  319</span><span class=\"keyword\">inline</span> FVarLevel::SiblingArray</div>\n+<div class=\"line\"><a id=\"l00320\" name=\"l00320\"></a><span class=\"lineno\">  320</span>FVarLevel::getVertexFaceSiblings(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vIndex) {</div>\n+<div class=\"line\"><a id=\"l00321\" name=\"l00321\"></a><span class=\"lineno\">  321</span> </div>\n+<div class=\"line\"><a id=\"l00322\" name=\"l00322\"></a><span class=\"lineno\">  322</span>    <span class=\"keywordtype\">int</span> vCount  = _level.getNumVertexFaces(vIndex);</div>\n+<div class=\"line\"><a id=\"l00323\" name=\"l00323\"></a><span class=\"lineno\">  323</span>    <span class=\"keywordtype\">int</span> vOffset = _level.getOffsetOfVertexFaces(vIndex);</div>\n+<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\">  324</span>    <span class=\"keywordflow\">return</span> SiblingArray(&amp;_vertFaceSiblings[vOffset], vCount);</div>\n+<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\">  325</span>}</div>\n+<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\">  326</span> </div>\n+<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\">  327</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a></div>\n+<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\">  328</span>FVarLevel::getVertexValues(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vIndex)<span class=\"keyword\"> const</span></div>\n+<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\">  329</span><span class=\"keyword\"></span>{</div>\n+<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\">  330</span>    <span class=\"keywordtype\">int</span> vCount  = getNumVertexValues(vIndex);</div>\n+<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\">  331</span>    <span class=\"keywordtype\">int</span> vOffset = getVertexValueOffset(vIndex);</div>\n+<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\">  332</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a>(&amp;_vertValueIndices[vOffset], vCount);</div>\n+<div class=\"line\"><a id=\"l00333\" name=\"l00333\"></a><span class=\"lineno\">  333</span>}</div>\n+<div class=\"line\"><a id=\"l00334\" name=\"l00334\"></a><span class=\"lineno\">  334</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a></div>\n+<div class=\"line\"><a id=\"l00335\" name=\"l00335\"></a><span class=\"lineno\">  335</span>FVarLevel::getVertexValues(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vIndex)</div>\n+<div class=\"line\"><a id=\"l00336\" name=\"l00336\"></a><span class=\"lineno\">  336</span>{</div>\n+<div class=\"line\"><a id=\"l00337\" name=\"l00337\"></a><span class=\"lineno\">  337</span>    <span class=\"keywordtype\">int</span> vCount  = getNumVertexValues(vIndex);</div>\n+<div class=\"line\"><a id=\"l00338\" name=\"l00338\"></a><span class=\"lineno\">  338</span>    <span class=\"keywordtype\">int</span> vOffset = getVertexValueOffset(vIndex);</div>\n+<div class=\"line\"><a id=\"l00339\" name=\"l00339\"></a><span class=\"lineno\">  339</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a>(&amp;_vertValueIndices[vOffset], vCount);</div>\n+<div class=\"line\"><a id=\"l00340\" name=\"l00340\"></a><span class=\"lineno\">  340</span>}</div>\n+<div class=\"line\"><a id=\"l00341\" name=\"l00341\"></a><span class=\"lineno\">  341</span> </div>\n+<div class=\"line\"><a id=\"l00342\" name=\"l00342\"></a><span class=\"lineno\">  342</span><span class=\"keyword\">inline</span> FVarLevel::ConstValueTagArray</div>\n+<div class=\"line\"><a id=\"l00343\" name=\"l00343\"></a><span class=\"lineno\">  343</span>FVarLevel::getVertexValueTags(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vIndex)<span class=\"keyword\"> const</span></div>\n+<div class=\"line\"><a id=\"l00344\" name=\"l00344\"></a><span class=\"lineno\">  344</span><span class=\"keyword\"></span>{</div>\n+<div class=\"line\"><a id=\"l00345\" name=\"l00345\"></a><span class=\"lineno\">  345</span>    <span class=\"keywordtype\">int</span> vCount  = getNumVertexValues(vIndex);</div>\n+<div class=\"line\"><a id=\"l00346\" name=\"l00346\"></a><span class=\"lineno\">  346</span>    <span class=\"keywordtype\">int</span> vOffset = getVertexValueOffset(vIndex);</div>\n+<div class=\"line\"><a id=\"l00347\" name=\"l00347\"></a><span class=\"lineno\">  347</span>    <span class=\"keywordflow\">return</span> ConstValueTagArray(&amp;_vertValueTags[vOffset], vCount);</div>\n+<div class=\"line\"><a id=\"l00348\" name=\"l00348\"></a><span class=\"lineno\">  348</span>}</div>\n+<div class=\"line\"><a id=\"l00349\" name=\"l00349\"></a><span class=\"lineno\">  349</span><span class=\"keyword\">inline</span> FVarLevel::ValueTagArray</div>\n+<div class=\"line\"><a id=\"l00350\" name=\"l00350\"></a><span class=\"lineno\">  350</span>FVarLevel::getVertexValueTags(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vIndex)</div>\n+<div class=\"line\"><a id=\"l00351\" name=\"l00351\"></a><span class=\"lineno\">  351</span>{</div>\n+<div class=\"line\"><a id=\"l00352\" name=\"l00352\"></a><span class=\"lineno\">  352</span>    <span class=\"keywordtype\">int</span> vCount  = getNumVertexValues(vIndex);</div>\n+<div class=\"line\"><a id=\"l00353\" name=\"l00353\"></a><span class=\"lineno\">  353</span>    <span class=\"keywordtype\">int</span> vOffset = getVertexValueOffset(vIndex);</div>\n+<div class=\"line\"><a id=\"l00354\" name=\"l00354\"></a><span class=\"lineno\">  354</span>    <span class=\"keywordflow\">return</span> ValueTagArray(&amp;_vertValueTags[vOffset], vCount);</div>\n+<div class=\"line\"><a id=\"l00355\" name=\"l00355\"></a><span class=\"lineno\">  355</span>}</div>\n+<div class=\"line\"><a id=\"l00356\" name=\"l00356\"></a><span class=\"lineno\">  356</span> </div>\n+<div class=\"line\"><a id=\"l00357\" name=\"l00357\"></a><span class=\"lineno\">  357</span><span class=\"keyword\">inline</span> FVarLevel::ConstCreaseEndPairArray</div>\n+<div class=\"line\"><a id=\"l00358\" name=\"l00358\"></a><span class=\"lineno\">  358</span>FVarLevel::getVertexValueCreaseEnds(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vIndex)<span class=\"keyword\"> const</span></div>\n+<div class=\"line\"><a id=\"l00359\" name=\"l00359\"></a><span class=\"lineno\">  359</span><span class=\"keyword\"></span>{</div>\n+<div class=\"line\"><a id=\"l00360\" name=\"l00360\"></a><span class=\"lineno\">  360</span>    <span class=\"keywordtype\">int</span> vCount  = getNumVertexValues(vIndex);</div>\n+<div class=\"line\"><a id=\"l00361\" name=\"l00361\"></a><span class=\"lineno\">  361</span>    <span class=\"keywordtype\">int</span> vOffset = getVertexValueOffset(vIndex);</div>\n+<div class=\"line\"><a id=\"l00362\" name=\"l00362\"></a><span class=\"lineno\">  362</span>    <span class=\"keywordflow\">return</span> ConstCreaseEndPairArray(&amp;_vertValueCreaseEnds[vOffset], vCount);</div>\n+<div class=\"line\"><a id=\"l00363\" name=\"l00363\"></a><span class=\"lineno\">  363</span>}</div>\n+<div class=\"line\"><a id=\"l00364\" name=\"l00364\"></a><span class=\"lineno\">  364</span><span class=\"keyword\">inline</span> FVarLevel::CreaseEndPairArray</div>\n+<div class=\"line\"><a id=\"l00365\" name=\"l00365\"></a><span class=\"lineno\">  365</span>FVarLevel::getVertexValueCreaseEnds(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vIndex)</div>\n+<div class=\"line\"><a id=\"l00366\" name=\"l00366\"></a><span class=\"lineno\">  366</span>{</div>\n+<div class=\"line\"><a id=\"l00367\" name=\"l00367\"></a><span class=\"lineno\">  367</span>    <span class=\"keywordtype\">int</span> vCount  = getNumVertexValues(vIndex);</div>\n+<div class=\"line\"><a id=\"l00368\" name=\"l00368\"></a><span class=\"lineno\">  368</span>    <span class=\"keywordtype\">int</span> vOffset = getVertexValueOffset(vIndex);</div>\n+<div class=\"line\"><a id=\"l00369\" name=\"l00369\"></a><span class=\"lineno\">  369</span>    <span class=\"keywordflow\">return</span> CreaseEndPairArray(&amp;_vertValueCreaseEnds[vOffset], vCount);</div>\n+<div class=\"line\"><a id=\"l00370\" name=\"l00370\"></a><span class=\"lineno\">  370</span>}</div>\n+<div class=\"line\"><a id=\"l00371\" name=\"l00371\"></a><span class=\"lineno\">  371</span> </div>\n+<div class=\"line\"><a id=\"l00372\" name=\"l00372\"></a><span class=\"lineno\">  372</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a></div>\n+<div class=\"line\"><a id=\"l00373\" name=\"l00373\"></a><span class=\"lineno\">  373</span>FVarLevel::findVertexValueIndex(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertexIndex, <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> valueIndex)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00374\" name=\"l00374\"></a><span class=\"lineno\">  374</span> </div>\n+<div class=\"line\"><a id=\"l00375\" name=\"l00375\"></a><span class=\"lineno\">  375</span>    <span class=\"keywordflow\">if</span> (_level.getDepth() &gt; 0) <span class=\"keywordflow\">return</span> valueIndex;</div>\n+<div class=\"line\"><a id=\"l00376\" name=\"l00376\"></a><span class=\"lineno\">  376</span> </div>\n+<div class=\"line\"><a id=\"l00377\" name=\"l00377\"></a><span class=\"lineno\">  377</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vvIndex = getVertexValueOffset(vertexIndex);</div>\n+<div class=\"line\"><a id=\"l00378\" name=\"l00378\"></a><span class=\"lineno\">  378</span>    <span class=\"keywordflow\">while</span> (_vertValueIndices[vvIndex] != valueIndex) {</div>\n+<div class=\"line\"><a id=\"l00379\" name=\"l00379\"></a><span class=\"lineno\">  379</span>        ++ vvIndex;</div>\n+<div class=\"line\"><a id=\"l00380\" name=\"l00380\"></a><span class=\"lineno\">  380</span>    }</div>\n+<div class=\"line\"><a id=\"l00381\" name=\"l00381\"></a><span class=\"lineno\">  381</span>    <span class=\"keywordflow\">return</span> vvIndex;</div>\n+<div class=\"line\"><a id=\"l00382\" name=\"l00382\"></a><span class=\"lineno\">  382</span>}</div>\n+<div class=\"line\"><a id=\"l00383\" name=\"l00383\"></a><span class=\"lineno\">  383</span> </div>\n+<div class=\"line\"><a id=\"l00384\" name=\"l00384\"></a><span class=\"lineno\">  384</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00385\" name=\"l00385\"></a><span class=\"lineno\">  385</span><span class=\"comment\">//  Methods related to tagging:</span></div>\n+<div class=\"line\"><a id=\"l00386\" name=\"l00386\"></a><span class=\"lineno\">  386</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00387\" name=\"l00387\"></a><span class=\"lineno\">  387</span><span class=\"keyword\">inline</span> Level::ETag</div>\n+<div class=\"line\"><a id=\"l00388\" name=\"l00388\"></a><span class=\"lineno\">  388</span>FVarLevel::ETag::combineWithLevelETag(Level::ETag levelTag)<span class=\"keyword\"> const</span></div>\n+<div class=\"line\"><a id=\"l00389\" name=\"l00389\"></a><span class=\"lineno\">  389</span><span class=\"keyword\"></span>{</div>\n+<div class=\"line\"><a id=\"l00390\" name=\"l00390\"></a><span class=\"lineno\">  390</span>    <span class=\"keywordflow\">if</span> (this-&gt;_mismatch) {</div>\n+<div class=\"line\"><a id=\"l00391\" name=\"l00391\"></a><span class=\"lineno\">  391</span>        levelTag._boundary = <span class=\"keyword\">true</span>;</div>\n+<div class=\"line\"><a id=\"l00392\" name=\"l00392\"></a><span class=\"lineno\">  392</span>        levelTag._infSharp = <span class=\"keyword\">true</span>;</div>\n+<div class=\"line\"><a id=\"l00393\" name=\"l00393\"></a><span class=\"lineno\">  393</span>    }</div>\n+<div class=\"line\"><a id=\"l00394\" name=\"l00394\"></a><span class=\"lineno\">  394</span>    <span class=\"keywordflow\">return</span> levelTag;</div>\n+<div class=\"line\"><a id=\"l00395\" name=\"l00395\"></a><span class=\"lineno\">  395</span>}</div>\n+<div class=\"line\"><a id=\"l00396\" name=\"l00396\"></a><span class=\"lineno\">  396</span><span class=\"keyword\">inline</span> Level::VTag</div>\n+<div class=\"line\"><a id=\"l00397\" name=\"l00397\"></a><span class=\"lineno\">  397</span>FVarLevel::ValueTag::combineWithLevelVTag(Level::VTag levelTag)<span class=\"keyword\"> const</span></div>\n+<div class=\"line\"><a id=\"l00398\" name=\"l00398\"></a><span class=\"lineno\">  398</span><span class=\"keyword\"></span>{</div>\n+<div class=\"line\"><a id=\"l00399\" name=\"l00399\"></a><span class=\"lineno\">  399</span>    <span class=\"keywordflow\">if</span> (this-&gt;_mismatch) {</div>\n+<div class=\"line\"><a id=\"l00400\" name=\"l00400\"></a><span class=\"lineno\">  400</span>        <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00401\" name=\"l00401\"></a><span class=\"lineno\">  401</span>        <span class=\"comment\">//  Semi-sharp FVar values are always tagged and treated as corners</span></div>\n+<div class=\"line\"><a id=\"l00402\" name=\"l00402\"></a><span class=\"lineno\">  402</span>        <span class=\"comment\">//  (at least three sharp edges (two boundary edges and one interior</span></div>\n+<div class=\"line\"><a id=\"l00403\" name=\"l00403\"></a><span class=\"lineno\">  403</span>        <span class=\"comment\">//  semi-sharp) and/or vertex is semi-sharp) until the sharpness has</span></div>\n+<div class=\"line\"><a id=\"l00404\" name=\"l00404\"></a><span class=\"lineno\">  404</span>        <span class=\"comment\">//  decayed, but they ultimately lie on the inf-sharp crease of the</span></div>\n+<div class=\"line\"><a id=\"l00405\" name=\"l00405\"></a><span class=\"lineno\">  405</span>        <span class=\"comment\">//  FVar boundary.  Consider this when tagging inf-sharp features.</span></div>\n+<div class=\"line\"><a id=\"l00406\" name=\"l00406\"></a><span class=\"lineno\">  406</span>        <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00407\" name=\"l00407\"></a><span class=\"lineno\">  407</span>        <span class=\"keywordflow\">if</span> (this-&gt;isCorner()) {</div>\n+<div class=\"line\"><a id=\"l00408\" name=\"l00408\"></a><span class=\"lineno\">  408</span>            levelTag._rule = (Level::VTag::VTagSize) <a class=\"code hl_enumvalue\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78a27ed0595212af48db763e461bfdc29ef\">Sdc::Crease::RULE_CORNER</a>;</div>\n+<div class=\"line\"><a id=\"l00409\" name=\"l00409\"></a><span class=\"lineno\">  409</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00410\" name=\"l00410\"></a><span class=\"lineno\">  410</span>            levelTag._rule = (Level::VTag::VTagSize) <a class=\"code hl_enumvalue\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78a966fa1ae8aeb8587c498cf6a92cc3335\">Sdc::Crease::RULE_CREASE</a>;</div>\n+<div class=\"line\"><a id=\"l00411\" name=\"l00411\"></a><span class=\"lineno\">  411</span>        }</div>\n+<div class=\"line\"><a id=\"l00412\" name=\"l00412\"></a><span class=\"lineno\">  412</span>        <span class=\"keywordflow\">if</span> (this-&gt;isCrease() || this-&gt;isSemiSharp()) {</div>\n+<div class=\"line\"><a id=\"l00413\" name=\"l00413\"></a><span class=\"lineno\">  413</span>            levelTag._infSharp = <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00414\" name=\"l00414\"></a><span class=\"lineno\">  414</span>            levelTag._infSharpCrease = <span class=\"keyword\">true</span>;</div>\n+<div class=\"line\"><a id=\"l00415\" name=\"l00415\"></a><span class=\"lineno\">  415</span>            levelTag._corner = <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00416\" name=\"l00416\"></a><span class=\"lineno\">  416</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00417\" name=\"l00417\"></a><span class=\"lineno\">  417</span>            levelTag._infSharp = <span class=\"keyword\">true</span>;</div>\n+<div class=\"line\"><a id=\"l00418\" name=\"l00418\"></a><span class=\"lineno\">  418</span>            levelTag._infSharpCrease = <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00419\" name=\"l00419\"></a><span class=\"lineno\">  419</span>            levelTag._corner = !this-&gt;_infIrregular &amp;&amp; !this-&gt;_infSharpEdges;</div>\n+<div class=\"line\"><a id=\"l00420\" name=\"l00420\"></a><span class=\"lineno\">  420</span>        }</div>\n+<div class=\"line\"><a id=\"l00421\" name=\"l00421\"></a><span class=\"lineno\">  421</span>        levelTag._infSharpEdges = <span class=\"keyword\">true</span>;</div>\n+<div class=\"line\"><a id=\"l00422\" name=\"l00422\"></a><span class=\"lineno\">  422</span>        levelTag._infIrregular = this-&gt;_infIrregular;</div>\n+<div class=\"line\"><a id=\"l00423\" name=\"l00423\"></a><span class=\"lineno\">  423</span> </div>\n+<div class=\"line\"><a id=\"l00424\" name=\"l00424\"></a><span class=\"lineno\">  424</span>        levelTag._boundary = <span class=\"keyword\">true</span>;</div>\n+<div class=\"line\"><a id=\"l00425\" name=\"l00425\"></a><span class=\"lineno\">  425</span>        levelTag._xordinary = this-&gt;_xordinary;</div>\n+<div class=\"line\"><a id=\"l00426\" name=\"l00426\"></a><span class=\"lineno\">  426</span> </div>\n+<div class=\"line\"><a id=\"l00427\" name=\"l00427\"></a><span class=\"lineno\">  427</span>        levelTag._nonManifold |= this-&gt;_nonManifold;</div>\n+<div class=\"line\"><a id=\"l00428\" name=\"l00428\"></a><span class=\"lineno\">  428</span>    }</div>\n+<div class=\"line\"><a id=\"l00429\" name=\"l00429\"></a><span class=\"lineno\">  429</span>    <span class=\"keywordflow\">return</span> levelTag;</div>\n+<div class=\"line\"><a id=\"l00430\" name=\"l00430\"></a><span class=\"lineno\">  430</span>}</div>\n+<div class=\"line\"><a id=\"l00431\" name=\"l00431\"></a><span class=\"lineno\">  431</span> </div>\n+<div class=\"line\"><a id=\"l00432\" name=\"l00432\"></a><span class=\"lineno\">  432</span>} <span class=\"comment\">// end namespace internal</span></div>\n+<div class=\"line\"><a id=\"l00433\" name=\"l00433\"></a><span class=\"lineno\">  433</span>} <span class=\"comment\">// end namespace Vtr</span></div>\n+<div class=\"line\"><a id=\"l00434\" name=\"l00434\"></a><span class=\"lineno\">  434</span> </div>\n+<div class=\"line\"><a id=\"l00435\" name=\"l00435\"></a><span class=\"lineno\">  435</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00436\" name=\"l00436\"></a><span class=\"lineno\">  436</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00437\" name=\"l00437\"></a><span class=\"lineno\">  437</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l00438\" name=\"l00438\"></a><span class=\"lineno\">  438</span> </div>\n+<div class=\"line\"><a id=\"l00439\" name=\"l00439\"></a><span class=\"lineno\">  439</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_VTR_FVAR_LEVEL_H */</span><span class=\"preprocessor\"></span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa00909_html_a175f8a210a75b8180bc7ec74459492c9\"><div class=\"ttname\"><a href=\"a00909.html#a175f8a210a75b8180bc7ec74459492c9\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstLocalIndexArray</a></div><div class=\"ttdeci\">ConstArray&lt; LocalIndex &gt; ConstLocalIndexArray</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01495_source.html#l00083\">types.h:83</a></div></div>\n+<div class=\"ttc\" id=\"aa00909_html_a1e004d5c1e30ef69719d4083afe0f4ce\"><div class=\"ttname\"><a href=\"a00909.html#a1e004d5c1e30ef69719d4083afe0f4ce\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::LocalIndexArray</a></div><div class=\"ttdeci\">Array&lt; LocalIndex &gt; LocalIndexArray</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01495_source.html#l00082\">types.h:82</a></div></div>\n+<div class=\"ttc\" id=\"aa00909_html_a4a0e50e01fef3e431767a928c2631cab\"><div class=\"ttname\"><a href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::Index</a></div><div class=\"ttdeci\">int Index</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01495_source.html#l00054\">types.h:54</a></div></div>\n+<div class=\"ttc\" id=\"aa00909_html_a7c31dd7ef75734862d363b332be917dd\"><div class=\"ttname\"><a href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstIndexArray</a></div><div class=\"ttdeci\">ConstArray&lt; Index &gt; ConstIndexArray</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01495_source.html#l00080\">types.h:80</a></div></div>\n+<div class=\"ttc\" id=\"aa00909_html_a97c1e0c5ac33f97e2b73fde56b56c363\"><div class=\"ttname\"><a href=\"a00909.html#a97c1e0c5ac33f97e2b73fde56b56c363\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::LocalIndex</a></div><div class=\"ttdeci\">unsigned short LocalIndex</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01495_source.html#l00066\">types.h:66</a></div></div>\n+<div class=\"ttc\" id=\"aa00909_html_ab4fd2ea03eba4c01ed28072b21917a0f\"><div class=\"ttname\"><a href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::IndexArray</a></div><div class=\"ttdeci\">Array&lt; Index &gt; IndexArray</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01495_source.html#l00079\">types.h:79</a></div></div>\n+<div class=\"ttc\" id=\"aa01333_html_a11fcd51ef86118f65e603c1474377a78a27ed0595212af48db763e461bfdc29ef\"><div class=\"ttname\"><a href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78a27ed0595212af48db763e461bfdc29ef\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::RULE_CORNER</a></div><div class=\"ttdeci\">@ RULE_CORNER</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00869_source.html#l00088\">crease.h:87</a></div></div>\n+<div class=\"ttc\" id=\"aa01333_html_a11fcd51ef86118f65e603c1474377a78a966fa1ae8aeb8587c498cf6a92cc3335\"><div class=\"ttname\"><a href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78a966fa1ae8aeb8587c498cf6a92cc3335\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::RULE_CREASE</a></div><div class=\"ttdeci\">@ RULE_CREASE</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00869_source.html#l00086\">crease.h:86</a></div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00794.html\">hlslPatchShaderSource.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bd5473d7d5841d48919aaa9ad0cb1f9b.html\">vtr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00794.html\">fvarLevel.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-hlslPatchShaderSource.h\n+fvarLevel.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2015 Pixar\n+2// Copyright 2014 DreamWorks Animation LLC.\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -23,80 +23,484 @@\n 17//\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n-24\n-25#ifndef OPENSUBDIV3_OSD_HLSL_PATCH_SHADER_SOURCE_H\n-26#define OPENSUBDIV3_OSD_HLSL_PATCH_SHADER_SOURCE_H\n-27\n-28#include \"../version.h\"\n-29\n-30#include \"../far/patchDescriptor.h\"\n-31\n-32#include <string>\n-33\n-34namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-35namespace OPENSUBDIV_VERSION {\n-36\n-37namespace Osd {\n+24#ifndef OPENSUBDIV3_VTR_FVAR_LEVEL_H\n+25#define OPENSUBDIV3_VTR_FVAR_LEVEL_H\n+26\n+27#include \"../version.h\"\n+28\n+29#include \"../sdc/types.h\"\n+30#include \"../sdc/crease.h\"\n+31#include \"../sdc/options.h\"\n+32#include \"../vtr/types.h\"\n+33#include \"../vtr/level.h\"\n+34\n+35#include <vector>\n+36#include <cassert>\n+37#include <cstring>\n 38\n-_\b4_\b0class _\bH_\bL_\bS_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be {\n-41public:\n-_\b4_\b5 static std::string _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bB_\ba_\bs_\bi_\bs_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be();\n-46\n-_\b5_\b0 static std::string _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bD_\br_\ba_\bw_\bi_\bn_\bg_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be();\n-51\n-59\n-_\b6_\b0 static std::string _\bG_\be_\bt_\bC_\bo_\bm_\bm_\bo_\bn_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be();\n-61\n-_\b6_\b2 static std::string _\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be(_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bT_\by_\bp_\be type);\n-63\n-_\b6_\b4 static std::string _\bG_\be_\bt_\bH_\bu_\bl_\bl_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be(_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bT_\by_\bp_\be type);\n-65\n-_\b6_\b6 static std::string _\bG_\be_\bt_\bD_\bo_\bm_\ba_\bi_\bn_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be(_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bT_\by_\bp_\be type);\n-67\n-69};\n-70\n-71} // end namespace Osd\n-72\n-73} // end namespace OPENSUBDIV_VERSION\n-74using namespace OPENSUBDIV_VERSION;\n-75\n-76} // end namespace OpenSubdiv\n-77\n-78#endif // OPENSUBDIV3_OSD_HLSL_PATCH_SHADER_SOURCE_H\n+39\n+40namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+41namespace OPENSUBDIV_VERSION {\n+42\n+43namespace Vtr {\n+44namespace internal {\n+45\n+46//\n+47// FVarLevel:\n+48// A \"face-varying channel\" includes the topology for a set of face-varying\n+49// data, relative to the topology of the Level with which it is associated.\n+50//\n+51// Analogous to a set of vertices and face-vertices that define the topology\n+for\n+52// the geometry, a channel requires a set of \"values\" and \"face-values\". The\n+53// \"values\" are indices of entries in a set of face-varying data, just as\n+vertices\n+54// are indices into a set of vertex data. The face-values identify a value\n+for\n+55// each vertex of the face, and so define topology for the values that may be\n+56// unique to each channel.\n+57//\n+58// In addition to the value size and the vector of face-values (which matches\n+the\n+59// size of the geometry's face-vertices), tags are associated with each\n+component\n+60// to identify deviations of the face-varying topology from the vertex\n+topology.\n+61// And since there may be a one-to-many mapping between vertices and face-\n+varying\n+62// values, that mapping is also allocated.\n+63//\n+64// It turns out that the mapping used is able to completely encode the set of\n+65// face-values and is more amenable to refinement. Currently the face-values\n+66// take up almost half the memory of this representation, so if memory does\n+67// become a concern, we do not need to store them. The only reason we do so\n+now\n+68// is that the face-value interface for specifying base topology and\n+inspecting\n+69// subsequent levels is very familiar to that of face-vertices for clients.\n+So\n+70// having them available for such access is convenient.\n+71//\n+72// Regarding scope and access...\n+73// Unclear at this early state, but leaning towards nesting this class within\n+74// Level, given the intimate dependency between the two.\n+75// Everything is being declared public for now to facilitate access until\n+it's\n+76// clearer how this functionality will be provided.\n+77//\n+78class FVarLevel {\n+79public:\n+80 //\n+81 // Component tags -- trying to minimize the types needed here:\n+82 //\n+83 // Tag per Edge:\n+84 // - facilitates topological analysis around each vertex\n+85 // - required during refinement to spawn one or more edge-values\n+86 //\n+87 struct ETag {\n+88 ETag() { }\n+89\n+90 void clear() { std::memset(this, 0, sizeof(ETag)); }\n+91\n+92 typedef unsigned char ETagSize;\n+93\n+94 ETagSize _mismatch : 1; // local FVar topology does not match\n+95 ETagSize _disctsV0 : 1; // discontinuous at vertex 0\n+96 ETagSize _disctsV1 : 1; // discontinuous at vertex 1\n+97 ETagSize _linear : 1; // linear boundary constraints\n+98\n+99 Level::ETag combineWithLevelETag(Level::ETag) const;\n+100 };\n+101\n+102 //\n+103 // Tag per Value:\n+104 // - informs both refinement and interpolation\n+105 // - every value spawns a child value in refinement\n+106 // - includes a subset of Level::VTag to be later combined with a VTag\n+107 //\n+108 struct ValueTag {\n+109 ValueTag() { }\n+110\n+111 void clear() { std::memset(this, 0, sizeof(ValueTag)); }\n+112\n+113 bool isMismatch() const { return _mismatch; }\n+114 bool isCrease() const { return _crease; }\n+115 bool isCorner() const { return !_crease; }\n+116 bool isSemiSharp() const { return _semiSharp; }\n+117 bool isInfSharp() const { return !_semiSharp && !_crease; }\n+118 bool isDepSharp() const { return _depSharp; }\n+119 bool hasCreaseEnds() const { return _crease || _semiSharp; }\n+120\n+121 bool hasInfSharpEdges() const { return _infSharpEdges; }\n+122 bool hasInfIrregularity() const { return _infIrregular; }\n+123\n+124 typedef unsigned char ValueTagSize;\n+125\n+126 // If there is no mismatch, no other members should be inspected\n+127 ValueTagSize _mismatch : 1; // local FVar topology does not match\n+128 ValueTagSize _xordinary : 1; // local FVar topology is extra-ordinary\n+129 ValueTagSize _nonManifold : 1; // local FVar topology is non-manifold\n+130 ValueTagSize _crease : 1; // value is a crease, otherwise a corner\n+131 ValueTagSize _semiSharp : 1; // value is a corner decaying to crease\n+132 ValueTagSize _depSharp : 1; // value is a corner by dependency on another\n+133\n+134 ValueTagSize _infSharpEdges : 1; // value is a corner by inf-sharp features\n+135 ValueTagSize _infIrregular : 1; // value span includes inf-sharp\n+irregularity\n+136\n+137 Level::VTag combineWithLevelVTag(Level::VTag) const;\n+138\n+139 // Alternate constructor and accessor for dealing with integer bits\n+directly:\n+140 explicit ValueTag(ValueTagSize bits) {\n+141 std::memcpy(this, &bits, sizeof(bits));\n+142 }\n+143 ValueTagSize getBits() const {\n+144 ValueTagSize bits;\n+145 std::memcpy(&bits, this, sizeof(bits));\n+146 return bits;\n+147 }\n+148 };\n+149\n+150 typedef Vtr::ConstArray<ValueTag> ConstValueTagArray;\n+151 typedef Vtr::Array<ValueTag> ValueTagArray;\n+152\n+153 //\n+154 // Simple struct containing the \"end faces\" of a crease, i.e. the faces\n+which\n+155 // contain the FVar values to be used when interpolating the crease.\n+(Prefer\n+156 // the struct over std::pair for its member names)\n+157 //\n+158 struct CreaseEndPair {\n+159 _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx _startFace;\n+160 _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx _endFace;\n+161 };\n+162\n+163 typedef Vtr::ConstArray<CreaseEndPair> ConstCreaseEndPairArray;\n+164 typedef Vtr::Array<CreaseEndPair> CreaseEndPairArray;\n+165\n+166 typedef _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx Sibling;\n+167\n+168 typedef _\bC_\bo_\bn_\bs_\bt_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by ConstSiblingArray;\n+169 typedef _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by SiblingArray;\n+170\n+171public:\n+172 FVarLevel(Level const& level);\n+173 ~FVarLevel();\n+174\n+175 // Queries for the entire channel:\n+176 Level const& getLevel() const { return _level; }\n+177\n+178 int getNumValues() const { return _valueCount; }\n+179 int getNumFaceValuesTotal() const { return (int) _faceVertValues.size(); }\n+180\n+181 bool isLinear() const { return _isLinear; }\n+182 bool hasLinearBoundaries() const { return _hasLinearBoundaries; }\n+183 bool hasSmoothBoundaries() const { return ! _hasLinearBoundaries; }\n+184 bool hasCreaseEnds() const { return hasSmoothBoundaries(); }\n+185\n+186 Sdc::Options getOptions() const { return _options; }\n+187\n+188 // Queries per face:\n+189 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getFaceValues(_\bI_\bn_\bd_\be_\bx fIndex) const;\n+190 _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getFaceValues(_\bI_\bn_\bd_\be_\bx fIndex);\n+191\n+192 // Queries per edge:\n+193 ETag getEdgeTag(_\bI_\bn_\bd_\be_\bx eIndex) const { return _edgeTags[eIndex]; }\n+194 bool edgeTopologyMatches(_\bI_\bn_\bd_\be_\bx eIndex) const { return !getEdgeTag\n+(eIndex)._mismatch; }\n+195\n+196 // Queries per vertex (and its potential sibling values):\n+197 int getNumVertexValues(_\bI_\bn_\bd_\be_\bx v) const { return _vertSiblingCounts[v]; }\n+198 _\bI_\bn_\bd_\be_\bx getVertexValueOffset(_\bI_\bn_\bd_\be_\bx v, Sibling i = 0) const { return\n+_vertSiblingOffsets[v] + i; }\n+199\n+200 _\bI_\bn_\bd_\be_\bx getVertexValue(_\bI_\bn_\bd_\be_\bx v, Sibling i = 0) const { return\n+_vertValueIndices[getVertexValueOffset(v,i)]; }\n+201\n+202 _\bI_\bn_\bd_\be_\bx findVertexValueIndex(_\bI_\bn_\bd_\be_\bx vertexIndex, _\bI_\bn_\bd_\be_\bx valueIndex) const;\n+203\n+204 // Methods to access/modify array properties per vertex:\n+205 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getVertexValues(_\bI_\bn_\bd_\be_\bx vIndex) const;\n+206 _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getVertexValues(_\bI_\bn_\bd_\be_\bx vIndex);\n+207\n+208 ConstValueTagArray getVertexValueTags(_\bI_\bn_\bd_\be_\bx vIndex) const;\n+209 ValueTagArray getVertexValueTags(_\bI_\bn_\bd_\be_\bx vIndex);\n+210\n+211 ConstCreaseEndPairArray getVertexValueCreaseEnds(_\bI_\bn_\bd_\be_\bx vIndex) const;\n+212 CreaseEndPairArray getVertexValueCreaseEnds(_\bI_\bn_\bd_\be_\bx vIndex);\n+213\n+214 ConstSiblingArray getVertexFaceSiblings(_\bI_\bn_\bd_\be_\bx vIndex) const;\n+215 SiblingArray getVertexFaceSiblings(_\bI_\bn_\bd_\be_\bx vIndex);\n+216\n+217 // Queries per value:\n+218 ValueTag getValueTag(_\bI_\bn_\bd_\be_\bx valueIndex) const { return _vertValueTags\n+[valueIndex]; }\n+219 bool valueTopologyMatches(_\bI_\bn_\bd_\be_\bx valueIndex) const { return !getValueTag\n+(valueIndex)._mismatch; }\n+220\n+221 CreaseEndPair getValueCreaseEndPair(_\bI_\bn_\bd_\be_\bx valueIndex) const { return\n+_vertValueCreaseEnds[valueIndex]; }\n+222\n+223 // Tag queries related to faces (use Level methods for those returning\n+Level::VTag/ETag)\n+224 void getFaceValueTags(_\bI_\bn_\bd_\be_\bx faceIndex, ValueTag valueTags[]) const;\n+225\n+226 ValueTag getFaceCompositeValueTag(_\bI_\bn_\bd_\be_\bx faceIndex) const;\n+227\n+228 // Higher-level topological queries, i.e. values in a neighborhood:\n+229 void getEdgeFaceValues(_\bI_\bn_\bd_\be_\bx eIndex, int fIncToEdge, _\bI_\bn_\bd_\be_\bx valuesPerVert\n+[2]) const;\n+230 void getVertexEdgeValues(_\bI_\bn_\bd_\be_\bx vIndex, _\bI_\bn_\bd_\be_\bx valuesPerEdge[]) const;\n+231 void getVertexCreaseEndValues(_\bI_\bn_\bd_\be_\bx vIndex, Sibling sibling, _\bI_\bn_\bd_\be_\bx\n+endValues[2]) const;\n+232\n+233 // Initialization and allocation helpers:\n+234 void setOptions(Sdc::Options const& options);\n+235 void resizeVertexValues(int numVertexValues);\n+236 void resizeValues(int numValues);\n+237 void resizeComponents();\n+238\n+239 // Topological analysis methods -- tagging and face-value population:\n+240 void completeTopologyFromFaceValues(int regBoundaryValence);\n+241 void initializeFaceValuesFromFaceVertices();\n+242 void initializeFaceValuesFromVertexFaceSiblings();\n+243\n+244 struct ValueSpan;\n+245 void gatherValueSpans(_\bI_\bn_\bd_\be_\bx vIndex, ValueSpan * vValueSpans) const;\n+246\n+247 // Debugging methods:\n+248 bool validate() const;\n+249 void print() const;\n+250 void buildFaceVertexSiblingsFromVertexFaceSiblings(std::vector<Sibling>&\n+fvSiblings) const;\n+251\n+252private:\n+253 // Just as Refinements build Levels, FVarRefinements build FVarLevels...\n+254 friend class FVarRefinement;\n+255\n+256 Level const & _level;\n+257\n+258 // Linear interpolation options vary between channels:\n+259 Sdc::Options _options;\n+260\n+261 bool _isLinear;\n+262 bool _hasLinearBoundaries;\n+263 bool _hasDependentSharpness;\n+264 int _valueCount;\n+265\n+266 //\n+267 // Vectors recording face-varying topology including tags that help\n+propagate\n+268 // data through the refinement hierarchy. Vectors are not sparse but most\n+use\n+269 // 8-bit values relative to the local topology.\n+270 //\n+271 // The vector of face-values is actually redundant here, but is constructed\n+as\n+272 // it is most convenient for clients. It represents almost half the memory\n+of\n+273 // the topology (4 32-bit integers per face) and not surprisingly,\n+populating\n+274 // it takes a considerable amount of the refinement time (1/3). We can\n+reduce\n+275 // both if we are willing to compute these on demand for clients.\n+276 //\n+277 // Per-face (matches face-verts of corresponding level):\n+278 std::vector<Index> _faceVertValues;\n+279\n+280 // Per-edge:\n+281 std::vector<ETag> _edgeTags;\n+282\n+283 // Per-vertex:\n+284 std::vector<Sibling> _vertSiblingCounts;\n+285 std::vector<int> _vertSiblingOffsets;\n+286 std::vector<Sibling> _vertFaceSiblings;\n+287\n+288 // Per-value:\n+289 std::vector<Index> _vertValueIndices;\n+290 std::vector<ValueTag> _vertValueTags;\n+291 std::vector<CreaseEndPair> _vertValueCreaseEnds;\n+292};\n+293\n+294//\n+295// Access/modify the values associated with each face:\n+296//\n+297inline _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n+298FVarLevel::getFaceValues(_\bI_\bn_\bd_\be_\bx fIndex) const {\n+299\n+300 int vCount = _level.getNumFaceVertices(fIndex);\n+301 int vOffset = _level.getOffsetOfFaceVertices(fIndex);\n+302 return _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by(&_faceVertValues[vOffset], vCount);\n+303}\n+304inline _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n+305FVarLevel::getFaceValues(_\bI_\bn_\bd_\be_\bx fIndex) {\n+306\n+307 int vCount = _level.getNumFaceVertices(fIndex);\n+308 int vOffset = _level.getOffsetOfFaceVertices(fIndex);\n+309 return _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by(&_faceVertValues[vOffset], vCount);\n+310}\n+311\n+312inline FVarLevel::ConstSiblingArray\n+313FVarLevel::getVertexFaceSiblings(_\bI_\bn_\bd_\be_\bx vIndex) const {\n+314\n+315 int vCount = _level.getNumVertexFaces(vIndex);\n+316 int vOffset = _level.getOffsetOfVertexFaces(vIndex);\n+317 return ConstSiblingArray(&_vertFaceSiblings[vOffset], vCount);\n+318}\n+319inline FVarLevel::SiblingArray\n+320FVarLevel::getVertexFaceSiblings(_\bI_\bn_\bd_\be_\bx vIndex) {\n+321\n+322 int vCount = _level.getNumVertexFaces(vIndex);\n+323 int vOffset = _level.getOffsetOfVertexFaces(vIndex);\n+324 return SiblingArray(&_vertFaceSiblings[vOffset], vCount);\n+325}\n+326\n+327inline _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n+328FVarLevel::getVertexValues(_\bI_\bn_\bd_\be_\bx vIndex) const\n+329{\n+330 int vCount = getNumVertexValues(vIndex);\n+331 int vOffset = getVertexValueOffset(vIndex);\n+332 return _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by(&_vertValueIndices[vOffset], vCount);\n+333}\n+334inline _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n+335FVarLevel::getVertexValues(_\bI_\bn_\bd_\be_\bx vIndex)\n+336{\n+337 int vCount = getNumVertexValues(vIndex);\n+338 int vOffset = getVertexValueOffset(vIndex);\n+339 return _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by(&_vertValueIndices[vOffset], vCount);\n+340}\n+341\n+342inline FVarLevel::ConstValueTagArray\n+343FVarLevel::getVertexValueTags(_\bI_\bn_\bd_\be_\bx vIndex) const\n+344{\n+345 int vCount = getNumVertexValues(vIndex);\n+346 int vOffset = getVertexValueOffset(vIndex);\n+347 return ConstValueTagArray(&_vertValueTags[vOffset], vCount);\n+348}\n+349inline FVarLevel::ValueTagArray\n+350FVarLevel::getVertexValueTags(_\bI_\bn_\bd_\be_\bx vIndex)\n+351{\n+352 int vCount = getNumVertexValues(vIndex);\n+353 int vOffset = getVertexValueOffset(vIndex);\n+354 return ValueTagArray(&_vertValueTags[vOffset], vCount);\n+355}\n+356\n+357inline FVarLevel::ConstCreaseEndPairArray\n+358FVarLevel::getVertexValueCreaseEnds(_\bI_\bn_\bd_\be_\bx vIndex) const\n+359{\n+360 int vCount = getNumVertexValues(vIndex);\n+361 int vOffset = getVertexValueOffset(vIndex);\n+362 return ConstCreaseEndPairArray(&_vertValueCreaseEnds[vOffset], vCount);\n+363}\n+364inline FVarLevel::CreaseEndPairArray\n+365FVarLevel::getVertexValueCreaseEnds(_\bI_\bn_\bd_\be_\bx vIndex)\n+366{\n+367 int vCount = getNumVertexValues(vIndex);\n+368 int vOffset = getVertexValueOffset(vIndex);\n+369 return CreaseEndPairArray(&_vertValueCreaseEnds[vOffset], vCount);\n+370}\n+371\n+372inline _\bI_\bn_\bd_\be_\bx\n+373FVarLevel::findVertexValueIndex(_\bI_\bn_\bd_\be_\bx vertexIndex, _\bI_\bn_\bd_\be_\bx valueIndex) const {\n+374\n+375 if (_level.getDepth() > 0) return valueIndex;\n+376\n+377 _\bI_\bn_\bd_\be_\bx vvIndex = getVertexValueOffset(vertexIndex);\n+378 while (_vertValueIndices[vvIndex] != valueIndex) {\n+379 ++ vvIndex;\n+380 }\n+381 return vvIndex;\n+382}\n+383\n+384//\n+385// Methods related to tagging:\n+386//\n+387inline Level::ETag\n+388FVarLevel::ETag::combineWithLevelETag(Level::ETag levelTag) const\n+389{\n+390 if (this->_mismatch) {\n+391 levelTag._boundary = true;\n+392 levelTag._infSharp = true;\n+393 }\n+394 return levelTag;\n+395}\n+396inline Level::VTag\n+397FVarLevel::ValueTag::combineWithLevelVTag(Level::VTag levelTag) const\n+398{\n+399 if (this->_mismatch) {\n+400 //\n+401 // Semi-sharp FVar values are always tagged and treated as corners\n+402 // (at least three sharp edges (two boundary edges and one interior\n+403 // semi-sharp) and/or vertex is semi-sharp) until the sharpness has\n+404 // decayed, but they ultimately lie on the inf-sharp crease of the\n+405 // FVar boundary. Consider this when tagging inf-sharp features.\n+406 //\n+407 if (this->isCorner()) {\n+408 levelTag._rule = (Level::VTag::VTagSize) _\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bC_\bO_\bR_\bN_\bE_\bR;\n+409 } else {\n+410 levelTag._rule = (Level::VTag::VTagSize) _\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bC_\bR_\bE_\bA_\bS_\bE;\n+411 }\n+412 if (this->isCrease() || this->isSemiSharp()) {\n+413 levelTag._infSharp = false;\n+414 levelTag._infSharpCrease = true;\n+415 levelTag._corner = false;\n+416 } else {\n+417 levelTag._infSharp = true;\n+418 levelTag._infSharpCrease = false;\n+419 levelTag._corner = !this->_infIrregular && !this->_infSharpEdges;\n+420 }\n+421 levelTag._infSharpEdges = true;\n+422 levelTag._infIrregular = this->_infIrregular;\n+423\n+424 levelTag._boundary = true;\n+425 levelTag._xordinary = this->_xordinary;\n+426\n+427 levelTag._nonManifold |= this->_nonManifold;\n+428 }\n+429 return levelTag;\n+430}\n+431\n+432} // end namespace internal\n+433} // end namespace Vtr\n+434\n+435} // end namespace OPENSUBDIV_VERSION\n+436using namespace OPENSUBDIV_VERSION;\n+437} // end namespace OpenSubdiv\n+438\n+439#endif /* OPENSUBDIV3_VTR_FVAR_LEVEL_H */\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bT_\by_\bp_\be\n-Type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b4_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bH_\bL_\bS_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be\n-Provides shader source which can be used by client code.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bh_\bl_\bs_\bl_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b._\bh_\b:_\b4_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bH_\bL_\bS_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b:_\b:\n-_\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be\n-static std::string GetVertexShaderSource(Far::PatchDescriptor::Type type)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bH_\bL_\bS_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b:_\b:\n-_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bD_\br_\ba_\bw_\bi_\bn_\bg_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be\n-static std::string GetPatchDrawingShaderSource()\n-Returns shader source which can be used while drawing piecewise parametric\n-patches resulting from sub...\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bH_\bL_\bS_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b:_\b:\n-_\bG_\be_\bt_\bD_\bo_\bm_\ba_\bi_\bn_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be\n-static std::string GetDomainShaderSource(Far::PatchDescriptor::Type type)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bH_\bL_\bS_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b:_\b:_\bG_\be_\bt_\bH_\bu_\bl_\bl_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be\n-static std::string GetHullShaderSource(Far::PatchDescriptor::Type type)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bH_\bL_\bS_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b:_\b:\n-_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bB_\ba_\bs_\bi_\bs_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be\n-static std::string GetPatchBasisShaderSource()\n-Returns shader source which can be used to evaluate position and first and\n-second derivatives on piec...\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bH_\bL_\bS_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b:_\b:\n-_\bG_\be_\bt_\bC_\bo_\bm_\bm_\bo_\bn_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be\n-static std::string GetCommonShaderSource()\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n+ConstArray< LocalIndex > ConstLocalIndexArray\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b8_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n+Array< LocalIndex > LocalIndexArray\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b8_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx\n+int Index\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b5_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n+ConstArray< Index > ConstIndexArray\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b8_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx\n+unsigned short LocalIndex\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b6_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n+Array< Index > IndexArray\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b7_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bC_\bO_\bR_\bN_\bE_\bR\n+@ RULE_CORNER\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b8_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bC_\bR_\bE_\bA_\bS_\bE\n+@ RULE_CREASE\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b8_\b6\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bh_\bl_\bs_\bl_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b._\bh\n+    * _\bv_\bt_\br\n+    * _\bf_\bv_\ba_\br_\bL_\be_\bv_\be_\bl_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00797.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00797.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/ompKernel.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/vtr/array.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -88,45 +88,44 @@\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n-<a href=\"#namespaces\">Namespaces</a> &#124;\n-<a href=\"#func-members\">Functions</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">ompKernel.h File Reference</div></div>\n+<a href=\"#nested-classes\">Classes</a> &#124;\n+<a href=\"#namespaces\">Namespaces</a>  </div>\n+  <div class=\"headertitle\"><div class=\"title\">array.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n+<code>#include &lt;cassert&gt;</code><br />\n </div>\n <p><a href=\"a00797_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n+<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n+Classes</h2></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01353.html\">ConstArray&lt; TYPE &gt;</a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01357.html\">Array&lt; TYPE &gt;</a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+</table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n+<tr class=\"memitem:a00909\" id=\"r_a00909\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00909.html\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-</table><table class=\"memberdecls\">\n-<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\n-Functions</h2></td></tr>\n-<tr class=\"memitem:a870745ff3e883b32547d4db42b3be2bd\" id=\"r_a870745ff3e883b32547d4db42b3be2bd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html#a870745ff3e883b32547d4db42b3be2bd\">OmpEvalStencils</a> (float const *src, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;srcDesc, float *dst, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDesc, int const *sizes, int const *offsets, int const *indices, float const *weights, int start, int end)</td></tr>\n-<tr class=\"separator:a870745ff3e883b32547d4db42b3be2bd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a907dc53421460557871ddc35f77751f5\" id=\"r_a907dc53421460557871ddc35f77751f5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html#a907dc53421460557871ddc35f77751f5\">OmpEvalStencils</a> (float const *src, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;srcDesc, float *dst, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDesc, float *dstDu, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDuDesc, float *dstDv, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDvDesc, int const *sizes, int const *offsets, int const *indices, float const *weights, float const *duWeights, float const *dvWeights, int start, int end)</td></tr>\n-<tr class=\"separator:a907dc53421460557871ddc35f77751f5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a44a05502feb5015035bc81b93cffb99c\" id=\"r_a44a05502feb5015035bc81b93cffb99c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html#a44a05502feb5015035bc81b93cffb99c\">OmpEvalStencils</a> (float const *src, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;srcDesc, float *dst, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDesc, float *dstDu, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDuDesc, float *dstDv, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDvDesc, float *dstDuu, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDuuDesc, float *dstDuv, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDuvDesc, float *dstDvv, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDvvDesc, int const *sizes, int const *offsets, int const *indices, float const *weights, float const *duWeights, float const *dvWeights, float const *duuWeights, float const *duvWeights, float const *dvvWeights, int start, int end)</td></tr>\n-<tr class=\"separator:a44a05502feb5015035bc81b93cffb99c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00797.html\">ompKernel.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bd5473d7d5841d48919aaa9ad0cb1f9b.html\">vtr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00797.html\">array.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,41 +1,25 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n-ompKernel.h File Reference\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+array.h File Reference\n #include \"../version.h\"\n+#include <cassert>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n+C\bCl\bla\bas\bss\bse\bes\bs\n+class \u00a0 _\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by_\b<_\b _\bT_\bY_\bP_\bE_\b _\b>\n+\u00a0\n+class \u00a0 _\bA_\br_\br_\ba_\by_\b<_\b _\bT_\bY_\bP_\bE_\b _\b>\n+\u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n-\u00a0\n-F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n-void\u00a0 _\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs (float const *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc, float\n-      *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc, int const *sizes, int const\n-      *offsets, int const *indices, float const *weights, int start, int end)\n-\u00a0\n-void\u00a0 _\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs (float const *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc, float\n-      *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc, float *dstDu, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n-      const &dstDuDesc, float *dstDv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDvDesc, int\n-      const *sizes, int const *offsets, int const *indices, float const\n-      *weights, float const *duWeights, float const *dvWeights, int start, int\n-      end)\n-\u00a0\n-void\u00a0 _\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs (float const *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc, float\n-      *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc, float *dstDu, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n-      const &dstDuDesc, float *dstDv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDvDesc, float\n-      *dstDuu, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDuuDesc, float *dstDuv,\n-      _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDuvDesc, float *dstDvv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const\n-      &dstDvvDesc, int const *sizes, int const *offsets, int const *indices,\n-      float const *weights, float const *duWeights, float const *dvWeights,\n-      float const *duuWeights, float const *duvWeights, float const\n-      *dvvWeights, int start, int end)\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bo_\bm_\bp_\bK_\be_\br_\bn_\be_\bl_\b._\bh\n+    * _\bv_\bt_\br\n+    * _\ba_\br_\br_\ba_\by_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00797.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00797.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,5 +1,4 @@\n var a00797 = [\n-    [\"OmpEvalStencils\", \"a00797.html#a44a05502feb5015035bc81b93cffb99c\", null],\n-    [\"OmpEvalStencils\", \"a00797.html#a907dc53421460557871ddc35f77751f5\", null],\n-    [\"OmpEvalStencils\", \"a00797.html#a870745ff3e883b32547d4db42b3be2bd\", null]\n+    [\"ConstArray< TYPE >\", \"a01353.html\", \"a01353\"],\n+    [\"Array< TYPE >\", \"a01357.html\", \"a01357\"]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00797_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00797_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/ompKernel.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/vtr/array.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">ompKernel.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">array.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00797.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2013 Pixar</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2014 DreamWorks Animation LLC.</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -118,83 +118,192 @@\n <div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_OMP_KERNEL_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_OMP_KERNEL_H</span></div>\n-<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n-<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span> </div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"keyword\">namespace </span>Osd {</div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span> </div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">struct </span>BufferDescriptor;</div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keywordtype\">void</span></div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html#a870745ff3e883b32547d4db42b3be2bd\">   38</a></span><a class=\"code hl_function\" href=\"a00912.html#a870745ff3e883b32547d4db42b3be2bd\">OmpEvalStencils</a>(<span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span>                <span class=\"keywordtype\">float</span> * dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span>                <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> * sizes,</div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span>                <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> * offsets,</div>\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span>                <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> * indices,</div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span>                <span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * weights,</div>\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span>                <span class=\"keywordtype\">int</span> start, <span class=\"keywordtype\">int</span> end);</div>\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span> </div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span><span class=\"keywordtype\">void</span></div>\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html#a907dc53421460557871ddc35f77751f5\">   47</a></span><a class=\"code hl_function\" href=\"a00912.html#a870745ff3e883b32547d4db42b3be2bd\">OmpEvalStencils</a>(<span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span>                <span class=\"keywordtype\">float</span> * dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span>                <span class=\"keywordtype\">float</span> * dstDu,     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDuDesc,</div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span>                <span class=\"keywordtype\">float</span> * dstDv,     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDvDesc,</div>\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span>                <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> * sizes,</div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span>                <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> * offsets,</div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span>                <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> * indices,</div>\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span>                <span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * weights,</div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span>                <span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * duWeights,</div>\n-<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span>                <span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * dvWeights,</div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span>                <span class=\"keywordtype\">int</span> start, <span class=\"keywordtype\">int</span> end);</div>\n+<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_VTR_ARRAY_INTERFACE_H</span></div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#define OPENSUBDIV3_VTR_ARRAY_INTERFACE_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span> </div>\n+<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span> </div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#include &lt;cassert&gt;</span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span> </div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">namespace </span>Vtr {</div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span> </div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"comment\">//  This class provides a simple array-like interface -- a subset std::vector&#39;s interface -- for</span></div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"comment\">//  a sequence of elements stored in contiguous memory.  It provides a unified representation for</span></div>\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span><span class=\"comment\">//  referencing data on the stack, all or a subset of std::vector&lt;&gt;, or anywhere else in memory.</span></div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"comment\">//  Note that its members are head/size rather than begin/end as in std::vector -- we frequently</span></div>\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span><span class=\"comment\">//  need only the size for many queries, and that is most often what is stored elsewhere in other</span></div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"comment\">//  classes, so we hope to reduce unnecessary address arithmetic constructing the interface and</span></div>\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span><span class=\"comment\">//  accessing the size.  The size type is also specifically 32-bit (rather than size_t) to match</span></div>\n+<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span><span class=\"comment\">//  internal usage and avoid unnecessary conversion to/from 64-bit.</span></div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span><span class=\"comment\">//  Question:</span></div>\n+<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span><span class=\"comment\">//      Naming is at issue here...  formerly called ArrayInterface until that was shot down it has</span></div>\n+<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span><span class=\"comment\">//  been simplified to Array but needs to be distanced from std::array as it DOES NOT store its</span></div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span><span class=\"comment\">//  own memory and is simply an interface to memory stored elsewhere.</span></div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> TYPE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00053\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01353.html\">   53</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01353.html\">ConstArray</a> {</div>\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span> </div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01353.html#a0caff2a05d659a02367f0f31ae29e45c\">   56</a></span>    <span class=\"keyword\">typedef</span> TYPE <a class=\"code hl_typedef\" href=\"a01353.html#a0caff2a05d659a02367f0f31ae29e45c\">value_type</a>;</div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01353.html#aafd1e3ba4133ad908bdbc99c4b356e5f\">   57</a></span>    <span class=\"keyword\">typedef</span> <span class=\"keywordtype\">int</span>  <a class=\"code hl_typedef\" href=\"a01353.html#aafd1e3ba4133ad908bdbc99c4b356e5f\">size_type</a>;</div>\n <div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span> </div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span><span class=\"keywordtype\">void</span></div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html#a44a05502feb5015035bc81b93cffb99c\">   60</a></span><a class=\"code hl_function\" href=\"a00912.html#a870745ff3e883b32547d4db42b3be2bd\">OmpEvalStencils</a>(<span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span>                <span class=\"keywordtype\">float</span> * dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span>                <span class=\"keywordtype\">float</span> * dstDu,     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDuDesc,</div>\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>                <span class=\"keywordtype\">float</span> * dstDv,     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDvDesc,</div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span>                <span class=\"keywordtype\">float</span> * dstDuu,    <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDuuDesc,</div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span>                <span class=\"keywordtype\">float</span> * dstDuv,    <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDuvDesc,</div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span>                <span class=\"keywordtype\">float</span> * dstDvv,    <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDvvDesc,</div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span>                <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> * sizes,</div>\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span>                <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> * offsets,</div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span>                <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> * indices,</div>\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span>                <span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * weights,</div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>                <span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * duWeights,</div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>                <span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * dvWeights,</div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span>                <span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * duuWeights,</div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span>                <span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * duvWeights,</div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span>                <span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * dvvWeights,</div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span>                <span class=\"keywordtype\">int</span> start, <span class=\"keywordtype\">int</span> end);</div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span> </div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span>} <span class=\"comment\">// end namespace Osd</span></div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01353.html#ac20b1b0146a3077fd2de652b07f94de9\">   59</a></span>    <span class=\"keyword\">typedef</span> TYPE <span class=\"keyword\">const</span>&amp; <a class=\"code hl_typedef\" href=\"a01353.html#ac20b1b0146a3077fd2de652b07f94de9\">const_reference</a>;</div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01353.html#a543c28695d3d02ccf15ea7d9125aba04\">   60</a></span>    <span class=\"keyword\">typedef</span> TYPE <span class=\"keyword\">const</span>* <a class=\"code hl_typedef\" href=\"a01353.html#a543c28695d3d02ccf15ea7d9125aba04\">const_iterator</a>;</div>\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span> </div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01353.html#a9025ff89fc9afe7d9054abb58123bbda\">   62</a></span>    <span class=\"keyword\">typedef</span> TYPE&amp; <a class=\"code hl_typedef\" href=\"a01353.html#a9025ff89fc9afe7d9054abb58123bbda\">reference</a>;</div>\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01353.html#adfa2f8bb0c1215f3b0ef976f122faf0d\">   63</a></span>    <span class=\"keyword\">typedef</span> TYPE* <a class=\"code hl_typedef\" href=\"a01353.html#adfa2f8bb0c1215f3b0ef976f122faf0d\">iterator</a>;</div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span> </div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span> </div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01353.html#aeec9d58ea099acc6be7c5655c229b050\">   67</a></span>    <a class=\"code hl_function\" href=\"a01353.html#aeec9d58ea099acc6be7c5655c229b050\">ConstArray</a>() : <a class=\"code hl_variable\" href=\"a01353.html#a0b346105187c04000fd7f76046ec9909\">_begin</a>(0), <a class=\"code hl_variable\" href=\"a01353.html#a9f1927ae81f20205d93e0b86915f27d7\">_size</a>(0) { }</div>\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00069\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01353.html#a7a2762a78af05d23e5664a40720b3dc6\">   69</a></span>    <a class=\"code hl_function\" href=\"a01353.html#a7a2762a78af05d23e5664a40720b3dc6\">ConstArray</a>(<a class=\"code hl_typedef\" href=\"a01353.html#a0caff2a05d659a02367f0f31ae29e45c\">value_type</a> <span class=\"keyword\">const</span> * ptr, <a class=\"code hl_typedef\" href=\"a01353.html#aafd1e3ba4133ad908bdbc99c4b356e5f\">size_type</a> sizeArg) :</div>\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span>        <a class=\"code hl_variable\" href=\"a01353.html#a0b346105187c04000fd7f76046ec9909\">_begin</a>(ptr), <a class=\"code hl_variable\" href=\"a01353.html#a9f1927ae81f20205d93e0b86915f27d7\">_size</a>(sizeArg) { }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span> </div>\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01353.html#a60304b65bf89363bcc3165d3cde67f86\">   72</a></span>    <a class=\"code hl_typedef\" href=\"a01353.html#aafd1e3ba4133ad908bdbc99c4b356e5f\">size_type</a> <a class=\"code hl_function\" href=\"a01353.html#a60304b65bf89363bcc3165d3cde67f86\">size</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01353.html#a9f1927ae81f20205d93e0b86915f27d7\">_size</a>; }</div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span> </div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01353.html#a644718bb2fb240de962dc3c9a1fdf0dc\">   74</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01353.html#a644718bb2fb240de962dc3c9a1fdf0dc\">empty</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01353.html#a9f1927ae81f20205d93e0b86915f27d7\">_size</a>==0; }</div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span> </div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01353.html#a4bc7a742b78a2528f413b38fe426a74c\">   76</a></span>    <a class=\"code hl_typedef\" href=\"a01353.html#ac20b1b0146a3077fd2de652b07f94de9\">const_reference</a> <a class=\"code hl_function\" href=\"a01353.html#a4bc7a742b78a2528f413b38fe426a74c\">operator[]</a>(<span class=\"keywordtype\">int</span> index)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01353.html#a0b346105187c04000fd7f76046ec9909\">_begin</a>[index]; }</div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01353.html#a29305669b60ca1680752e2fc3592ba99\">   77</a></span>    <a class=\"code hl_typedef\" href=\"a01353.html#a543c28695d3d02ccf15ea7d9125aba04\">const_iterator</a>  <a class=\"code hl_function\" href=\"a01353.html#a29305669b60ca1680752e2fc3592ba99\">begin</a>()<span class=\"keyword\"> const               </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01353.html#a0b346105187c04000fd7f76046ec9909\">_begin</a>; }</div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01353.html#accf9a4bd0c34d4a5f6a7dab66ea10cdc\">   78</a></span>    <a class=\"code hl_typedef\" href=\"a01353.html#a543c28695d3d02ccf15ea7d9125aba04\">const_iterator</a>  <a class=\"code hl_function\" href=\"a01353.html#accf9a4bd0c34d4a5f6a7dab66ea10cdc\">end</a>()<span class=\"keyword\"> const                 </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01353.html#a0b346105187c04000fd7f76046ec9909\">_begin</a> + <a class=\"code hl_variable\" href=\"a01353.html#a9f1927ae81f20205d93e0b86915f27d7\">_size</a>; }</div>\n <div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span> </div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span>}  <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span> </div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>}  <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span> </div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_OMP_KERNEL_H</span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa00912_html_a870745ff3e883b32547d4db42b3be2bd\"><div class=\"ttname\"><a href=\"a00912.html#a870745ff3e883b32547d4db42b3be2bd\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::OmpEvalStencils</a></div><div class=\"ttdeci\">void OmpEvalStencils(float const *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, int const *sizes, int const *offsets, int const *indices, float const *weights, int start, int end)</div></div>\n-<div class=\"ttc\" id=\"aa01141_html\"><div class=\"ttname\"><a href=\"a01141.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::BufferDescriptor</a></div><div class=\"ttdoc\">BufferDescriptor is a struct which describes buffer elements in interleaved data buffers....</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00866_source.html#l00061\">bufferDescriptor.h:61</a></div></div>\n+<div class=\"foldopen\" id=\"foldopen00080\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01353.html#a5afd472f9e68f5d28798ef5953a995a1\">   80</a></span>    <a class=\"code hl_typedef\" href=\"a01353.html#aafd1e3ba4133ad908bdbc99c4b356e5f\">size_type</a> <a class=\"code hl_function\" href=\"a01353.html#a5afd472f9e68f5d28798ef5953a995a1\">FindIndexIn4Tuple</a>(<a class=\"code hl_typedef\" href=\"a01353.html#a0caff2a05d659a02367f0f31ae29e45c\">value_type</a> value)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>        assert(<a class=\"code hl_variable\" href=\"a01353.html#a9f1927ae81f20205d93e0b86915f27d7\">_size</a>&gt;=4);</div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>        <span class=\"keywordflow\">if</span> (value == <a class=\"code hl_variable\" href=\"a01353.html#a0b346105187c04000fd7f76046ec9909\">_begin</a>[0]) <span class=\"keywordflow\">return</span> 0;</div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>        <span class=\"keywordflow\">if</span> (value == <a class=\"code hl_variable\" href=\"a01353.html#a0b346105187c04000fd7f76046ec9909\">_begin</a>[1]) <span class=\"keywordflow\">return</span> 1;</div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span>        <span class=\"keywordflow\">if</span> (value == <a class=\"code hl_variable\" href=\"a01353.html#a0b346105187c04000fd7f76046ec9909\">_begin</a>[2]) <span class=\"keywordflow\">return</span> 2;</div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>        <span class=\"keywordflow\">if</span> (value == <a class=\"code hl_variable\" href=\"a01353.html#a0b346105187c04000fd7f76046ec9909\">_begin</a>[3]) <span class=\"keywordflow\">return</span> 3;</div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>        assert(<span class=\"stringliteral\">&quot;FindIndexIn4Tuple() did not find expected value!&quot;</span> == 0);</div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>        <span class=\"keywordflow\">return</span> -1;</div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00090\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01353.html#aab75dd5fb27049f92ee6af282b29be8c\">   90</a></span>    <a class=\"code hl_typedef\" href=\"a01353.html#aafd1e3ba4133ad908bdbc99c4b356e5f\">size_type</a> <a class=\"code hl_function\" href=\"a01353.html#aab75dd5fb27049f92ee6af282b29be8c\">FindIndex</a>(<a class=\"code hl_typedef\" href=\"a01353.html#a0caff2a05d659a02367f0f31ae29e45c\">value_type</a> value)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>        <span class=\"keywordflow\">for</span> (<a class=\"code hl_typedef\" href=\"a01353.html#aafd1e3ba4133ad908bdbc99c4b356e5f\">size_type</a> i=0; i&lt;<a class=\"code hl_function\" href=\"a01353.html#a60304b65bf89363bcc3165d3cde67f86\">size</a>(); ++i) {</div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>            <span class=\"keywordflow\">if</span> (value==<a class=\"code hl_variable\" href=\"a01353.html#a0b346105187c04000fd7f76046ec9909\">_begin</a>[i]) {</div>\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span>                <span class=\"keywordflow\">return</span> i;</div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>            }</div>\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span>        }</div>\n+<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span>        <span class=\"keywordflow\">return</span> -1;</div>\n+<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span> </div>\n+<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span><span class=\"keyword\">protected</span>:</div>\n+<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01353.html#a0b346105187c04000fd7f76046ec9909\">  100</a></span>    <a class=\"code hl_typedef\" href=\"a01353.html#a0caff2a05d659a02367f0f31ae29e45c\">value_type</a> <span class=\"keyword\">const</span> * <a class=\"code hl_variable\" href=\"a01353.html#a0b346105187c04000fd7f76046ec9909\">_begin</a>;</div>\n+<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01353.html#a9f1927ae81f20205d93e0b86915f27d7\">  101</a></span>    <a class=\"code hl_typedef\" href=\"a01353.html#aafd1e3ba4133ad908bdbc99c4b356e5f\">size_type</a> <a class=\"code hl_variable\" href=\"a01353.html#a9f1927ae81f20205d93e0b86915f27d7\">_size</a>;</div>\n+<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span> </div>\n+<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> TYPE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00105\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01357.html\">  105</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01357.html\">Array</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"a01353.html\">ConstArray</a>&lt;TYPE&gt; {</div>\n+<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span> </div>\n+<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01357.html#a0caff2a05d659a02367f0f31ae29e45c\">  108</a></span>    <span class=\"keyword\">typedef</span> TYPE <a class=\"code hl_typedef\" href=\"a01357.html#a0caff2a05d659a02367f0f31ae29e45c\">value_type</a>;</div>\n+<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01357.html#aafd1e3ba4133ad908bdbc99c4b356e5f\">  109</a></span>    <span class=\"keyword\">typedef</span> <span class=\"keywordtype\">int</span>  <a class=\"code hl_typedef\" href=\"a01357.html#aafd1e3ba4133ad908bdbc99c4b356e5f\">size_type</a>;</div>\n+<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span> </div>\n+<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01357.html#ac20b1b0146a3077fd2de652b07f94de9\">  111</a></span>    <span class=\"keyword\">typedef</span> TYPE <span class=\"keyword\">const</span>&amp; <a class=\"code hl_typedef\" href=\"a01357.html#ac20b1b0146a3077fd2de652b07f94de9\">const_reference</a>;</div>\n+<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span> </div>\n+<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01357.html#a9025ff89fc9afe7d9054abb58123bbda\">  113</a></span>    <span class=\"keyword\">typedef</span> TYPE&amp; <a class=\"code hl_typedef\" href=\"a01357.html#a9025ff89fc9afe7d9054abb58123bbda\">reference</a>;</div>\n+<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01357.html#adfa2f8bb0c1215f3b0ef976f122faf0d\">  114</a></span>    <span class=\"keyword\">typedef</span> TYPE* <a class=\"code hl_typedef\" href=\"a01357.html#adfa2f8bb0c1215f3b0ef976f122faf0d\">iterator</a>;</div>\n+<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span> </div>\n+<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\">  116</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span> </div>\n+<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01357.html#af9474cac29f3177edf5e8d72ea4a440c\">  118</a></span>    <a class=\"code hl_function\" href=\"a01357.html#af9474cac29f3177edf5e8d72ea4a440c\">Array</a>() : <a class=\"code hl_class\" href=\"a01353.html\">ConstArray</a>&lt;TYPE&gt;() { }</div>\n+<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span>    </div>\n+<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01357.html#adbe98cd78a59ce56cb45c2239136cc10\">  120</a></span>    <a class=\"code hl_function\" href=\"a01357.html#adbe98cd78a59ce56cb45c2239136cc10\">Array</a>(<a class=\"code hl_typedef\" href=\"a01357.html#a0caff2a05d659a02367f0f31ae29e45c\">value_type</a> * ptr, <a class=\"code hl_typedef\" href=\"a01357.html#aafd1e3ba4133ad908bdbc99c4b356e5f\">size_type</a> sizeArg) : <a class=\"code hl_class\" href=\"a01353.html\">ConstArray</a>&lt;TYPE&gt;(ptr, sizeArg) { }</div>\n+<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\">  121</span> </div>\n+<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00124\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01357.html#a4bc7a742b78a2528f413b38fe426a74c\">  124</a></span>    <a class=\"code hl_typedef\" href=\"a01357.html#ac20b1b0146a3077fd2de652b07f94de9\">const_reference</a> <a class=\"code hl_function\" href=\"a01357.html#a4bc7a742b78a2528f413b38fe426a74c\">operator[]</a>(<span class=\"keywordtype\">int</span> index)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_class\" href=\"a01353.html\">ConstArray&lt;TYPE&gt;::_begin</a>[index];</div>\n+<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00128\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01357.html#ae96c1b25ff445d67d3c3e8d5858839a6\">  128</a></span>    <a class=\"code hl_typedef\" href=\"a01357.html#a9025ff89fc9afe7d9054abb58123bbda\">reference</a> <a class=\"code hl_function\" href=\"a01357.html#ae96c1b25ff445d67d3c3e8d5858839a6\">operator[]</a>(<span class=\"keywordtype\">int</span> index) {</div>\n+<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span>        <span class=\"keywordflow\">return</span> <span class=\"keyword\">const_cast&lt;</span><a class=\"code hl_typedef\" href=\"a01357.html#a9025ff89fc9afe7d9054abb58123bbda\">reference</a><span class=\"keyword\">&gt;</span>(<a class=\"code hl_class\" href=\"a01353.html\">ConstArray&lt;TYPE&gt;::_begin</a>[index]);</div>\n+<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\">  131</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00132\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01357.html#ad69bd11391be1a1dba5c8202259664f8\">  132</a></span>    <a class=\"code hl_typedef\" href=\"a01357.html#adfa2f8bb0c1215f3b0ef976f122faf0d\">iterator</a> <a class=\"code hl_function\" href=\"a01357.html#ad69bd11391be1a1dba5c8202259664f8\">begin</a>() {</div>\n+<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\">  133</span>        <span class=\"keywordflow\">return</span> <span class=\"keyword\">const_cast&lt;</span><a class=\"code hl_typedef\" href=\"a01357.html#adfa2f8bb0c1215f3b0ef976f122faf0d\">iterator</a><span class=\"keyword\">&gt;</span>(<a class=\"code hl_class\" href=\"a01353.html\">ConstArray&lt;TYPE&gt;::_begin</a>);</div>\n+<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\">  134</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\">  135</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00136\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01357.html#acad38d52497a975bfb6f2f6acd76631f\">  136</a></span>    <a class=\"code hl_typedef\" href=\"a01357.html#adfa2f8bb0c1215f3b0ef976f122faf0d\">iterator</a> <a class=\"code hl_function\" href=\"a01357.html#acad38d52497a975bfb6f2f6acd76631f\">end</a>() {</div>\n+<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\">  137</span>        <span class=\"keywordflow\">return</span> <span class=\"keyword\">const_cast&lt;</span><a class=\"code hl_typedef\" href=\"a01357.html#adfa2f8bb0c1215f3b0ef976f122faf0d\">iterator</a><span class=\"keyword\">&gt;</span>(<a class=\"code hl_class\" href=\"a01353.html\">ConstArray&lt;TYPE&gt;::_begin</a> +</div>\n+<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\">  138</span>            <a class=\"code hl_class\" href=\"a01353.html\">ConstArray&lt;TYPE&gt;::_size</a>);</div>\n+<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\">  139</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\">  140</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\">  141</span> </div>\n+<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span>} <span class=\"comment\">// end namespace Vtr</span></div>\n+<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\">  143</span> </div>\n+<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\">  144</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\">  145</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\">  146</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\">  147</span> </div>\n+<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\">  148</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_VTR_ARRAY_INTERFACE_H */</span><span class=\"preprocessor\"></span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa01353_html\"><div class=\"ttname\"><a href=\"a01353.html\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00797_source.html#l00053\">array.h:53</a></div></div>\n+<div class=\"ttc\" id=\"aa01353_html_a0b346105187c04000fd7f76046ec9909\"><div class=\"ttname\"><a href=\"a01353.html#a0b346105187c04000fd7f76046ec9909\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray::_begin</a></div><div class=\"ttdeci\">value_type const  * _begin</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00797_source.html#l00100\">array.h:100</a></div></div>\n+<div class=\"ttc\" id=\"aa01353_html_a0caff2a05d659a02367f0f31ae29e45c\"><div class=\"ttname\"><a href=\"a01353.html#a0caff2a05d659a02367f0f31ae29e45c\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray::value_type</a></div><div class=\"ttdeci\">TYPE value_type</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00797_source.html#l00056\">array.h:56</a></div></div>\n+<div class=\"ttc\" id=\"aa01353_html_a29305669b60ca1680752e2fc3592ba99\"><div class=\"ttname\"><a href=\"a01353.html#a29305669b60ca1680752e2fc3592ba99\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray::begin</a></div><div class=\"ttdeci\">const_iterator begin() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00797_source.html#l00077\">array.h:77</a></div></div>\n+<div class=\"ttc\" id=\"aa01353_html_a4bc7a742b78a2528f413b38fe426a74c\"><div class=\"ttname\"><a href=\"a01353.html#a4bc7a742b78a2528f413b38fe426a74c\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray::operator[]</a></div><div class=\"ttdeci\">const_reference operator[](int index) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00797_source.html#l00076\">array.h:76</a></div></div>\n+<div class=\"ttc\" id=\"aa01353_html_a543c28695d3d02ccf15ea7d9125aba04\"><div class=\"ttname\"><a href=\"a01353.html#a543c28695d3d02ccf15ea7d9125aba04\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray::const_iterator</a></div><div class=\"ttdeci\">TYPE const  * const_iterator</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00797_source.html#l00060\">array.h:60</a></div></div>\n+<div class=\"ttc\" id=\"aa01353_html_a5afd472f9e68f5d28798ef5953a995a1\"><div class=\"ttname\"><a href=\"a01353.html#a5afd472f9e68f5d28798ef5953a995a1\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray::FindIndexIn4Tuple</a></div><div class=\"ttdeci\">size_type FindIndexIn4Tuple(value_type value) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00797_source.html#l00080\">array.h:80</a></div></div>\n+<div class=\"ttc\" id=\"aa01353_html_a60304b65bf89363bcc3165d3cde67f86\"><div class=\"ttname\"><a href=\"a01353.html#a60304b65bf89363bcc3165d3cde67f86\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray::size</a></div><div class=\"ttdeci\">size_type size() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00797_source.html#l00072\">array.h:72</a></div></div>\n+<div class=\"ttc\" id=\"aa01353_html_a644718bb2fb240de962dc3c9a1fdf0dc\"><div class=\"ttname\"><a href=\"a01353.html#a644718bb2fb240de962dc3c9a1fdf0dc\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray::empty</a></div><div class=\"ttdeci\">bool empty() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00797_source.html#l00074\">array.h:74</a></div></div>\n+<div class=\"ttc\" id=\"aa01353_html_a7a2762a78af05d23e5664a40720b3dc6\"><div class=\"ttname\"><a href=\"a01353.html#a7a2762a78af05d23e5664a40720b3dc6\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray::ConstArray</a></div><div class=\"ttdeci\">ConstArray(value_type const *ptr, size_type sizeArg)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00797_source.html#l00069\">array.h:69</a></div></div>\n+<div class=\"ttc\" id=\"aa01353_html_a9025ff89fc9afe7d9054abb58123bbda\"><div class=\"ttname\"><a href=\"a01353.html#a9025ff89fc9afe7d9054abb58123bbda\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray::reference</a></div><div class=\"ttdeci\">TYPE &amp; reference</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00797_source.html#l00062\">array.h:62</a></div></div>\n+<div class=\"ttc\" id=\"aa01353_html_a9f1927ae81f20205d93e0b86915f27d7\"><div class=\"ttname\"><a href=\"a01353.html#a9f1927ae81f20205d93e0b86915f27d7\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray::_size</a></div><div class=\"ttdeci\">size_type _size</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00797_source.html#l00101\">array.h:101</a></div></div>\n+<div class=\"ttc\" id=\"aa01353_html_aab75dd5fb27049f92ee6af282b29be8c\"><div class=\"ttname\"><a href=\"a01353.html#aab75dd5fb27049f92ee6af282b29be8c\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray::FindIndex</a></div><div class=\"ttdeci\">size_type FindIndex(value_type value) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00797_source.html#l00090\">array.h:90</a></div></div>\n+<div class=\"ttc\" id=\"aa01353_html_aafd1e3ba4133ad908bdbc99c4b356e5f\"><div class=\"ttname\"><a href=\"a01353.html#aafd1e3ba4133ad908bdbc99c4b356e5f\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray::size_type</a></div><div class=\"ttdeci\">int size_type</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00797_source.html#l00057\">array.h:57</a></div></div>\n+<div class=\"ttc\" id=\"aa01353_html_ac20b1b0146a3077fd2de652b07f94de9\"><div class=\"ttname\"><a href=\"a01353.html#ac20b1b0146a3077fd2de652b07f94de9\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray::const_reference</a></div><div class=\"ttdeci\">TYPE const  &amp; const_reference</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00797_source.html#l00059\">array.h:59</a></div></div>\n+<div class=\"ttc\" id=\"aa01353_html_accf9a4bd0c34d4a5f6a7dab66ea10cdc\"><div class=\"ttname\"><a href=\"a01353.html#accf9a4bd0c34d4a5f6a7dab66ea10cdc\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray::end</a></div><div class=\"ttdeci\">const_iterator end() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00797_source.html#l00078\">array.h:78</a></div></div>\n+<div class=\"ttc\" id=\"aa01353_html_adfa2f8bb0c1215f3b0ef976f122faf0d\"><div class=\"ttname\"><a href=\"a01353.html#adfa2f8bb0c1215f3b0ef976f122faf0d\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray::iterator</a></div><div class=\"ttdeci\">TYPE * iterator</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00797_source.html#l00063\">array.h:63</a></div></div>\n+<div class=\"ttc\" id=\"aa01353_html_aeec9d58ea099acc6be7c5655c229b050\"><div class=\"ttname\"><a href=\"a01353.html#aeec9d58ea099acc6be7c5655c229b050\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray::ConstArray</a></div><div class=\"ttdeci\">ConstArray()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00797_source.html#l00067\">array.h:67</a></div></div>\n+<div class=\"ttc\" id=\"aa01357_html\"><div class=\"ttname\"><a href=\"a01357.html\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::Array</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00797_source.html#l00105\">array.h:105</a></div></div>\n+<div class=\"ttc\" id=\"aa01357_html_a0caff2a05d659a02367f0f31ae29e45c\"><div class=\"ttname\"><a href=\"a01357.html#a0caff2a05d659a02367f0f31ae29e45c\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::Array::value_type</a></div><div class=\"ttdeci\">TYPE value_type</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00797_source.html#l00108\">array.h:108</a></div></div>\n+<div class=\"ttc\" id=\"aa01357_html_a4bc7a742b78a2528f413b38fe426a74c\"><div class=\"ttname\"><a href=\"a01357.html#a4bc7a742b78a2528f413b38fe426a74c\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::Array::operator[]</a></div><div class=\"ttdeci\">const_reference operator[](int index) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00797_source.html#l00124\">array.h:124</a></div></div>\n+<div class=\"ttc\" id=\"aa01357_html_a9025ff89fc9afe7d9054abb58123bbda\"><div class=\"ttname\"><a href=\"a01357.html#a9025ff89fc9afe7d9054abb58123bbda\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::Array::reference</a></div><div class=\"ttdeci\">TYPE &amp; reference</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00797_source.html#l00113\">array.h:113</a></div></div>\n+<div class=\"ttc\" id=\"aa01357_html_aafd1e3ba4133ad908bdbc99c4b356e5f\"><div class=\"ttname\"><a href=\"a01357.html#aafd1e3ba4133ad908bdbc99c4b356e5f\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::Array::size_type</a></div><div class=\"ttdeci\">int size_type</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00797_source.html#l00109\">array.h:109</a></div></div>\n+<div class=\"ttc\" id=\"aa01357_html_ac20b1b0146a3077fd2de652b07f94de9\"><div class=\"ttname\"><a href=\"a01357.html#ac20b1b0146a3077fd2de652b07f94de9\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::Array::const_reference</a></div><div class=\"ttdeci\">TYPE const  &amp; const_reference</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00797_source.html#l00111\">array.h:111</a></div></div>\n+<div class=\"ttc\" id=\"aa01357_html_acad38d52497a975bfb6f2f6acd76631f\"><div class=\"ttname\"><a href=\"a01357.html#acad38d52497a975bfb6f2f6acd76631f\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::Array::end</a></div><div class=\"ttdeci\">iterator end()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00797_source.html#l00136\">array.h:136</a></div></div>\n+<div class=\"ttc\" id=\"aa01357_html_ad69bd11391be1a1dba5c8202259664f8\"><div class=\"ttname\"><a href=\"a01357.html#ad69bd11391be1a1dba5c8202259664f8\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::Array::begin</a></div><div class=\"ttdeci\">iterator begin()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00797_source.html#l00132\">array.h:132</a></div></div>\n+<div class=\"ttc\" id=\"aa01357_html_adbe98cd78a59ce56cb45c2239136cc10\"><div class=\"ttname\"><a href=\"a01357.html#adbe98cd78a59ce56cb45c2239136cc10\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::Array::Array</a></div><div class=\"ttdeci\">Array(value_type *ptr, size_type sizeArg)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00797_source.html#l00120\">array.h:120</a></div></div>\n+<div class=\"ttc\" id=\"aa01357_html_adfa2f8bb0c1215f3b0ef976f122faf0d\"><div class=\"ttname\"><a href=\"a01357.html#adfa2f8bb0c1215f3b0ef976f122faf0d\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::Array::iterator</a></div><div class=\"ttdeci\">TYPE * iterator</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00797_source.html#l00114\">array.h:114</a></div></div>\n+<div class=\"ttc\" id=\"aa01357_html_ae96c1b25ff445d67d3c3e8d5858839a6\"><div class=\"ttname\"><a href=\"a01357.html#ae96c1b25ff445d67d3c3e8d5858839a6\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::Array::operator[]</a></div><div class=\"ttdeci\">reference operator[](int index)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00797_source.html#l00128\">array.h:128</a></div></div>\n+<div class=\"ttc\" id=\"aa01357_html_af9474cac29f3177edf5e8d72ea4a440c\"><div class=\"ttname\"><a href=\"a01357.html#af9474cac29f3177edf5e8d72ea4a440c\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::Array::Array</a></div><div class=\"ttdeci\">Array()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00797_source.html#l00118\">array.h:118</a></div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00797.html\">ompKernel.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bd5473d7d5841d48919aaa9ad0cb1f9b.html\">vtr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00797.html\">array.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-ompKernel.h\n+array.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2013 Pixar\n+2// Copyright 2014 DreamWorks Animation LLC.\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -23,83 +23,236 @@\n 17//\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n-24\n-25#ifndef OPENSUBDIV3_OSD_OMP_KERNEL_H\n-26#define OPENSUBDIV3_OSD_OMP_KERNEL_H\n-27\n-28#include \"../version.h\"\n-29\n-30namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-31namespace OPENSUBDIV_VERSION {\n-32\n-33namespace Osd {\n-34\n-35struct BufferDescriptor;\n-36\n-37void\n-_\b3_\b8_\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(float const * src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-39 float * dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-40 int const * sizes,\n-41 int const * offsets,\n-42 int const * indices,\n-43 float const * weights,\n-44 int start, int end);\n-45\n-46void\n-_\b4_\b7_\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(float const * src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-48 float * dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-49 float * dstDu, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDuDesc,\n-50 float * dstDv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDvDesc,\n-51 int const * sizes,\n-52 int const * offsets,\n-53 int const * indices,\n-54 float const * weights,\n-55 float const * duWeights,\n-56 float const * dvWeights,\n-57 int start, int end);\n+24#ifndef OPENSUBDIV3_VTR_ARRAY_INTERFACE_H\n+25#define OPENSUBDIV3_VTR_ARRAY_INTERFACE_H\n+26\n+27#include \"../version.h\"\n+28\n+29#include <cassert>\n+30\n+31namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+32namespace OPENSUBDIV_VERSION {\n+33\n+34namespace Vtr {\n+35\n+36//\n+37// This class provides a simple array-like interface -- a subset std::\n+vector's interface -- for\n+38// a sequence of elements stored in contiguous memory. It provides a unified\n+representation for\n+39// referencing data on the stack, all or a subset of std::vector<>, or\n+anywhere else in memory.\n+40//\n+41// Note that its members are head/size rather than begin/end as in std::\n+vector -- we frequently\n+42// need only the size for many queries, and that is most often what is stored\n+elsewhere in other\n+43// classes, so we hope to reduce unnecessary address arithmetic constructing\n+the interface and\n+44// accessing the size. The size type is also specifically 32-bit (rather than\n+size_t) to match\n+45// internal usage and avoid unnecessary conversion to/from 64-bit.\n+46//\n+47// Question:\n+48// Naming is at issue here... formerly called ArrayInterface until that was\n+shot down it has\n+49// been simplified to Array but needs to be distanced from std::array as it\n+DOES NOT store its\n+50// own memory and is simply an interface to memory stored elsewhere.\n+51//\n+52template <typename TYPE>\n+_\b5_\b3class _\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by {\n+54\n+55public:\n+_\b5_\b6 typedef TYPE _\bv_\ba_\bl_\bu_\be_\b__\bt_\by_\bp_\be;\n+_\b5_\b7 typedef int _\bs_\bi_\bz_\be_\b__\bt_\by_\bp_\be;\n 58\n-59void\n-_\b6_\b0_\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(float const * src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-61 float * dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-62 float * dstDu, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDuDesc,\n-63 float * dstDv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDvDesc,\n-64 float * dstDuu, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDuuDesc,\n-65 float * dstDuv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDuvDesc,\n-66 float * dstDvv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDvvDesc,\n-67 int const * sizes,\n-68 int const * offsets,\n-69 int const * indices,\n-70 float const * weights,\n-71 float const * duWeights,\n-72 float const * dvWeights,\n-73 float const * duuWeights,\n-74 float const * duvWeights,\n-75 float const * dvvWeights,\n-76 int start, int end);\n-77\n-78} // end namespace Osd\n+_\b5_\b9 typedef TYPE const& _\bc_\bo_\bn_\bs_\bt_\b__\br_\be_\bf_\be_\br_\be_\bn_\bc_\be;\n+_\b6_\b0 typedef TYPE const* _\bc_\bo_\bn_\bs_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br;\n+61\n+_\b6_\b2 typedef TYPE& _\br_\be_\bf_\be_\br_\be_\bn_\bc_\be;\n+_\b6_\b3 typedef TYPE* _\bi_\bt_\be_\br_\ba_\bt_\bo_\br;\n+64\n+65public:\n+66\n+_\b6_\b7 _\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by() : _\b__\bb_\be_\bg_\bi_\bn(0), _\b__\bs_\bi_\bz_\be(0) { }\n+68\n+_\b6_\b9 _\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by(_\bv_\ba_\bl_\bu_\be_\b__\bt_\by_\bp_\be const * ptr, _\bs_\bi_\bz_\be_\b__\bt_\by_\bp_\be sizeArg) :\n+70 _\b__\bb_\be_\bg_\bi_\bn(ptr), _\b__\bs_\bi_\bz_\be(sizeArg) { }\n+71\n+_\b7_\b2 _\bs_\bi_\bz_\be_\b__\bt_\by_\bp_\be _\bs_\bi_\bz_\be() const { return _\b__\bs_\bi_\bz_\be; }\n+73\n+_\b7_\b4 bool _\be_\bm_\bp_\bt_\by() const { return _\b__\bs_\bi_\bz_\be==0; }\n+75\n+_\b7_\b6 _\bc_\bo_\bn_\bs_\bt_\b__\br_\be_\bf_\be_\br_\be_\bn_\bc_\be _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b](int index) const { return _\b__\bb_\be_\bg_\bi_\bn[index]; }\n+_\b7_\b7 _\bc_\bo_\bn_\bs_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br _\bb_\be_\bg_\bi_\bn() const { return _\b__\bb_\be_\bg_\bi_\bn; }\n+_\b7_\b8 _\bc_\bo_\bn_\bs_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br _\be_\bn_\bd() const { return _\b__\bb_\be_\bg_\bi_\bn + _\b__\bs_\bi_\bz_\be; }\n 79\n-80} // end namespace OPENSUBDIV_VERSION\n-81using namespace OPENSUBDIV_VERSION;\n-82\n-83} // end namespace OpenSubdiv\n-84\n-85#endif // OPENSUBDIV3_OSD_OMP_KERNEL_H\n+_\b8_\b0 _\bs_\bi_\bz_\be_\b__\bt_\by_\bp_\be _\bF_\bi_\bn_\bd_\bI_\bn_\bd_\be_\bx_\bI_\bn_\b4_\bT_\bu_\bp_\bl_\be(_\bv_\ba_\bl_\bu_\be_\b__\bt_\by_\bp_\be value) const {\n+81 assert(_\b__\bs_\bi_\bz_\be>=4);\n+82 if (value == _\b__\bb_\be_\bg_\bi_\bn[0]) return 0;\n+83 if (value == _\b__\bb_\be_\bg_\bi_\bn[1]) return 1;\n+84 if (value == _\b__\bb_\be_\bg_\bi_\bn[2]) return 2;\n+85 if (value == _\b__\bb_\be_\bg_\bi_\bn[3]) return 3;\n+86 assert(\"FindIndexIn4Tuple() did not find expected value!\" == 0);\n+87 return -1;\n+88 }\n+89\n+_\b9_\b0 _\bs_\bi_\bz_\be_\b__\bt_\by_\bp_\be _\bF_\bi_\bn_\bd_\bI_\bn_\bd_\be_\bx(_\bv_\ba_\bl_\bu_\be_\b__\bt_\by_\bp_\be value) const {\n+91 for (_\bs_\bi_\bz_\be_\b__\bt_\by_\bp_\be i=0; i<_\bs_\bi_\bz_\be(); ++i) {\n+92 if (value==_\b__\bb_\be_\bg_\bi_\bn[i]) {\n+93 return i;\n+94 }\n+95 }\n+96 return -1;\n+97 }\n+98\n+99protected:\n+_\b1_\b0_\b0 _\bv_\ba_\bl_\bu_\be_\b__\bt_\by_\bp_\be const * _\b__\bb_\be_\bg_\bi_\bn;\n+_\b1_\b0_\b1 _\bs_\bi_\bz_\be_\b__\bt_\by_\bp_\be _\b__\bs_\bi_\bz_\be;\n+102};\n+103\n+104template <typename TYPE>\n+_\b1_\b0_\b5class _\bA_\br_\br_\ba_\by : public _\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by<TYPE> {\n+106\n+107public:\n+_\b1_\b0_\b8 typedef TYPE _\bv_\ba_\bl_\bu_\be_\b__\bt_\by_\bp_\be;\n+_\b1_\b0_\b9 typedef int _\bs_\bi_\bz_\be_\b__\bt_\by_\bp_\be;\n+110\n+_\b1_\b1_\b1 typedef TYPE const& _\bc_\bo_\bn_\bs_\bt_\b__\br_\be_\bf_\be_\br_\be_\bn_\bc_\be;\n+112\n+_\b1_\b1_\b3 typedef TYPE& _\br_\be_\bf_\be_\br_\be_\bn_\bc_\be;\n+_\b1_\b1_\b4 typedef TYPE* _\bi_\bt_\be_\br_\ba_\bt_\bo_\br;\n+115\n+116public:\n+117\n+_\b1_\b1_\b8 _\bA_\br_\br_\ba_\by() : _\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by<TYPE>() { }\n+119\n+_\b1_\b2_\b0 _\bA_\br_\br_\ba_\by(_\bv_\ba_\bl_\bu_\be_\b__\bt_\by_\bp_\be * ptr, _\bs_\bi_\bz_\be_\b__\bt_\by_\bp_\be sizeArg) : _\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by<TYPE>(ptr, sizeArg)\n+{ }\n+121\n+122public:\n+123\n+_\b1_\b2_\b4 _\bc_\bo_\bn_\bs_\bt_\b__\br_\be_\bf_\be_\br_\be_\bn_\bc_\be _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b](int index) const {\n+125 return _\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by_\b<_\bT_\bY_\bP_\bE_\b>_\b:_\b:_\b__\bb_\be_\bg_\bi_\bn[index];\n+126 }\n+127\n+_\b1_\b2_\b8 _\br_\be_\bf_\be_\br_\be_\bn_\bc_\be _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b](int index) {\n+129 return const_cast<_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be>(_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by_\b<_\bT_\bY_\bP_\bE_\b>_\b:_\b:_\b__\bb_\be_\bg_\bi_\bn[index]);\n+130 }\n+131\n+_\b1_\b3_\b2 _\bi_\bt_\be_\br_\ba_\bt_\bo_\br _\bb_\be_\bg_\bi_\bn() {\n+133 return const_cast<_\bi_\bt_\be_\br_\ba_\bt_\bo_\br>(_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by_\b<_\bT_\bY_\bP_\bE_\b>_\b:_\b:_\b__\bb_\be_\bg_\bi_\bn);\n+134 }\n+135\n+_\b1_\b3_\b6 _\bi_\bt_\be_\br_\ba_\bt_\bo_\br _\be_\bn_\bd() {\n+137 return const_cast<_\bi_\bt_\be_\br_\ba_\bt_\bo_\br>(_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by_\b<_\bT_\bY_\bP_\bE_\b>_\b:_\b:_\b__\bb_\be_\bg_\bi_\bn +\n+138 _\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by_\b<_\bT_\bY_\bP_\bE_\b>_\b:_\b:_\b__\bs_\bi_\bz_\be);\n+139 }\n+140};\n+141\n+142} // end namespace Vtr\n+143\n+144} // end namespace OPENSUBDIV_VERSION\n+145using namespace OPENSUBDIV_VERSION;\n+146} // end namespace OpenSubdiv\n+147\n+148#endif /* OPENSUBDIV3_VTR_ARRAY_INTERFACE_H */\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-void OmpEvalStencils(float const *src, BufferDescriptor const &srcDesc, float\n-*dst, BufferDescriptor const &dstDesc, int const *sizes, int const *offsets,\n-int const *indices, float const *weights, int start, int end)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n-BufferDescriptor is a struct which describes buffer elements in interleaved\n-data buffers....\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b6_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b5_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by_\b:_\b:_\b__\bb_\be_\bg_\bi_\bn\n+value_type const * _begin\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b1_\b0_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b__\bt_\by_\bp_\be\n+TYPE value_type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b5_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by_\b:_\b:_\bb_\be_\bg_\bi_\bn\n+const_iterator begin() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b7_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]\n+const_reference operator[](int index) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b7_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by_\b:_\b:_\bc_\bo_\bn_\bs_\bt_\b__\bi_\bt_\be_\br_\ba_\bt_\bo_\br\n+TYPE const * const_iterator\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b6_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by_\b:_\b:_\bF_\bi_\bn_\bd_\bI_\bn_\bd_\be_\bx_\bI_\bn_\b4_\bT_\bu_\bp_\bl_\be\n+size_type FindIndexIn4Tuple(value_type value) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b8_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by_\b:_\b:_\bs_\bi_\bz_\be\n+size_type size() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b7_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by_\b:_\b:_\be_\bm_\bp_\bt_\by\n+bool empty() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b7_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by\n+ConstArray(value_type const *ptr, size_type sizeArg)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b6_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by_\b:_\b:_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be\n+TYPE & reference\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b6_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by_\b:_\b:_\b__\bs_\bi_\bz_\be\n+size_type _size\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b1_\b0_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by_\b:_\b:_\bF_\bi_\bn_\bd_\bI_\bn_\bd_\be_\bx\n+size_type FindIndex(value_type value) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b9_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by_\b:_\b:_\bs_\bi_\bz_\be_\b__\bt_\by_\bp_\be\n+int size_type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b5_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by_\b:_\b:_\bc_\bo_\bn_\bs_\bt_\b__\br_\be_\bf_\be_\br_\be_\bn_\bc_\be\n+TYPE const & const_reference\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b5_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by_\b:_\b:_\be_\bn_\bd\n+const_iterator end() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b7_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by_\b:_\b:_\bi_\bt_\be_\br_\ba_\bt_\bo_\br\n+TYPE * iterator\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b6_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by\n+ConstArray()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b6_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bA_\br_\br_\ba_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b1_\b0_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bA_\br_\br_\ba_\by_\b:_\b:_\bv_\ba_\bl_\bu_\be_\b__\bt_\by_\bp_\be\n+TYPE value_type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b1_\b0_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bA_\br_\br_\ba_\by_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]\n+const_reference operator[](int index) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b1_\b2_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bA_\br_\br_\ba_\by_\b:_\b:_\br_\be_\bf_\be_\br_\be_\bn_\bc_\be\n+TYPE & reference\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b1_\b1_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bA_\br_\br_\ba_\by_\b:_\b:_\bs_\bi_\bz_\be_\b__\bt_\by_\bp_\be\n+int size_type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b1_\b0_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bA_\br_\br_\ba_\by_\b:_\b:_\bc_\bo_\bn_\bs_\bt_\b__\br_\be_\bf_\be_\br_\be_\bn_\bc_\be\n+TYPE const & const_reference\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b1_\b1_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bA_\br_\br_\ba_\by_\b:_\b:_\be_\bn_\bd\n+iterator end()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b1_\b3_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bA_\br_\br_\ba_\by_\b:_\b:_\bb_\be_\bg_\bi_\bn\n+iterator begin()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b1_\b3_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bA_\br_\br_\ba_\by_\b:_\b:_\bA_\br_\br_\ba_\by\n+Array(value_type *ptr, size_type sizeArg)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b1_\b2_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bA_\br_\br_\ba_\by_\b:_\b:_\bi_\bt_\be_\br_\ba_\bt_\bo_\br\n+TYPE * iterator\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b1_\b1_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bA_\br_\br_\ba_\by_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]\n+reference operator[](int index)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b1_\b2_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bA_\br_\br_\ba_\by_\b:_\b:_\bA_\br_\br_\ba_\by\n+Array()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b1_\b1_\b8\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bo_\bm_\bp_\bK_\be_\br_\bn_\be_\bl_\b._\bh\n+    * _\bv_\bt_\br\n+    * _\ba_\br_\br_\ba_\by_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00800.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00800.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/d3d11ComputeEvaluator.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/vtr/stackBuffer.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -88,47 +88,35 @@\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n-<a href=\"#nested-classes\">Classes</a> &#124;\n <a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">d3d11ComputeEvaluator.h File Reference</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">stackBuffer.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00866_source.html\">../osd/bufferDescriptor.h</a>&quot;</code><br />\n </div>\n <p><a href=\"a00800_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n-<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n-Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01197.html\">D3D11StencilTable</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">D3D11 stencil table.  <a href=\"a01197.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01201.html\">D3D11ComputeEvaluator</a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-</table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far</a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n+<tr class=\"memitem:a00909\" id=\"r_a00909\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00909.html\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00800.html\">d3d11ComputeEvaluator.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bd5473d7d5841d48919aaa9ad0cb1f9b.html\">vtr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00800.html\">stackBuffer.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,28 +1,19 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-d3d11ComputeEvaluator.h File Reference\n+_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+stackBuffer.h File Reference\n #include \"../version.h\"\n-#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n-C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\b3_\bD_\b1_\b1_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n-\u00a0       D3D11 stencil table. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bD_\b3_\bD_\b1_\b1_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n-\u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br\n-\u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bd_\b3_\bd_\b1_\b1_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh\n+    * _\bv_\bt_\br\n+    * _\bs_\bt_\ba_\bc_\bk_\bB_\bu_\bf_\bf_\be_\br_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00800_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00800_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/d3d11ComputeEvaluator.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/vtr/stackBuffer.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">d3d11ComputeEvaluator.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">stackBuffer.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00800.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2015 Pixar</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2015 DreamWorks Animation LLC.</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -118,226 +118,223 @@\n <div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_D3D11_COMPUTE_EVALUATOR_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_D3D11_COMPUTE_EVALUATOR_H</span></div>\n-<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n-<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"keyword\">struct </span>ID3D11DeviceContext;</div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"keyword\">struct </span>ID3D11Buffer;</div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"keyword\">struct </span>ID3D11ComputeShader;</div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"keyword\">struct </span>ID3D11ClassLinkage;</div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">struct </span>ID3D11ClassInstance;</div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">struct </span>ID3D11ShaderResourceView;</div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"keyword\">struct </span>ID3D11UnorderedAccessView;</div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span> </div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"preprocessor\">#include &quot;../osd/bufferDescriptor.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span> </div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span> </div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"keyword\">namespace </span>Far {</div>\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span>    <span class=\"keyword\">class </span>StencilTable;</div>\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span>}</div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span> </div>\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span><span class=\"keyword\">namespace </span>Osd {</div>\n+<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_VTR_STACK_BUFFER_H</span></div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#define OPENSUBDIV3_VTR_STACK_BUFFER_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span> </div>\n+<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span> </div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"keyword\">namespace </span>Vtr {</div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"keyword\">namespace </span>internal {</div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span> </div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"comment\">//  The StackBuffer class is intended solely to take the place of VLAs (Variable</span></div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"comment\">//  Length Arrays) which most compilers support, but are not strictly standard C++.</span></div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"comment\">//  Portability concerns forces us to make use of either alloca() or some other</span></div>\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span><span class=\"comment\">//  mechanism to create small arrays on the stack that are typically based on the</span></div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"comment\">//  valence of a vertex -- small in general, but occasionally large.</span></div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span><span class=\"comment\">//  Note also that since the intent of this is to replace VLAs -- not general</span></div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"comment\">//  std::vectors -- support for std::vector functionality is intentionally limited</span></div>\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span><span class=\"comment\">//  and STL-like naming is avoided.  Like a VLA there is no incremental growth.</span></div>\n+<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span><span class=\"comment\">//  Support for resizing is available to reuse an instance at the beginning of a</span></div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span><span class=\"comment\">//  loop with a new size, but resizing in this case reinitializes all elements.</span></div>\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00056\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01197.html\">   56</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01197.html\">D3D11StencilTable</a> {</div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00059\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01197.html#a2ec7ad097a488f2b17603173d6362b61\">   59</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01197.html\">D3D11StencilTable</a> *<a class=\"code hl_function\" href=\"a01197.html#a2ec7ad097a488f2b17603173d6362b61\">Create</a>(<a class=\"code hl_class\" href=\"a01065.html\">Far::StencilTable</a> <span class=\"keyword\">const</span> *stencilTable,</div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span>                                      DEVICE_CONTEXT context) {</div>\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span>        <span class=\"keywordflow\">return</span> <span class=\"keyword\">new</span> <a class=\"code hl_class\" href=\"a01197.html\">D3D11StencilTable</a>(stencilTable, context-&gt;GetDeviceContext());</div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00064\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01197.html#a8981041688d408d08dce9c8890504650\">   64</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01197.html\">D3D11StencilTable</a> *<a class=\"code hl_function\" href=\"a01197.html#a8981041688d408d08dce9c8890504650\">Create</a>(<a class=\"code hl_class\" href=\"a01065.html\">Far::StencilTable</a> <span class=\"keyword\">const</span> *stencilTable,</div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span>                                      ID3D11DeviceContext *deviceContext) {</div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span>        <span class=\"keywordflow\">return</span> <span class=\"keyword\">new</span> <a class=\"code hl_class\" href=\"a01197.html\">D3D11StencilTable</a>(stencilTable, deviceContext);</div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span> </div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01197.html#a7e3a2f5c281c55308400138222797dbc\">   69</a></span>    <a class=\"code hl_function\" href=\"a01197.html#a7e3a2f5c281c55308400138222797dbc\">D3D11StencilTable</a>(<a class=\"code hl_class\" href=\"a01065.html\">Far::StencilTable</a> <span class=\"keyword\">const</span> *stencilTable,</div>\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span>                       ID3D11DeviceContext *deviceContext);</div>\n+<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> TYPE, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> SIZE, <span class=\"keywordtype\">bool</span> POD_TYPE = false&gt;</div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span><span class=\"keyword\">class </span>StackBuffer</div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span>{</div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span>    <span class=\"keyword\">typedef</span> <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> size_type;</div>\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span> </div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span>    <span class=\"comment\">//  Constructors and destructor -- declared inline below:</span></div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span>    StackBuffer();</div>\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span>    StackBuffer(size_type size);</div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span>    ~StackBuffer();</div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span> </div>\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span>    <span class=\"comment\">//  Note the reliance on implicit casting so that it can be used similar to</span></div>\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>    <span class=\"comment\">//  a VLA.  This removes the need for operator[] as the resulting TYPE* will</span></div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span>    <span class=\"comment\">//  natively support [].  (The presence of both TYPE* and operator[] also</span></div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span>    <span class=\"comment\">//  causes an ambiguous overloading error with 32-bit MSVC builds.)</span></div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span> </div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span>    <span class=\"keyword\">operator</span> TYPE <span class=\"keyword\">const</span> * () <span class=\"keyword\">const</span> { <span class=\"keywordflow\">return</span> _data; }</div>\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span>    <span class=\"keyword\">operator</span> TYPE *       ()       { <span class=\"keywordflow\">return</span> _data; }</div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span> </div>\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span>    size_type GetSize()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _size; }</div>\n <div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span> </div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01197.html#a729ea8793ae67b1767d670a4541006e2\">   72</a></span>    <a class=\"code hl_function\" href=\"a01197.html#a729ea8793ae67b1767d670a4541006e2\">~D3D11StencilTable</a>();</div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span> </div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span>    <span class=\"comment\">// interfaces needed for D3D11ComputeEvaluator</span></div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01197.html#aa6b4c8f4cd5a1e0111e77d7365018c74\">   75</a></span>    ID3D11ShaderResourceView *<a class=\"code hl_function\" href=\"a01197.html#aa6b4c8f4cd5a1e0111e77d7365018c74\">GetSizesSRV</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _sizes; }</div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01197.html#a4e486bdd9cf98a5582781a905d154e67\">   76</a></span>    ID3D11ShaderResourceView *<a class=\"code hl_function\" href=\"a01197.html#a4e486bdd9cf98a5582781a905d154e67\">GetOffsetsSRV</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _offsets; }</div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01197.html#a6aa76c564ae400e727b2377ce785cd90\">   77</a></span>    ID3D11ShaderResourceView *<a class=\"code hl_function\" href=\"a01197.html#a6aa76c564ae400e727b2377ce785cd90\">GetIndicesSRV</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _indices; }</div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01197.html#ac3de1233503ee41bac41618702b4302c\">   78</a></span>    ID3D11ShaderResourceView *<a class=\"code hl_function\" href=\"a01197.html#ac3de1233503ee41bac41618702b4302c\">GetWeightsSRV</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _weights; }</div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01197.html#a65836d2070b943c8fecbad926d074de2\">   79</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01197.html#a65836d2070b943c8fecbad926d074de2\">GetNumStencils</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _numStencils; }</div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span> </div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>    ID3D11ShaderResourceView *_sizes;</div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>    ID3D11ShaderResourceView *_offsets;</div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span>    ID3D11ShaderResourceView *_indices;</div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>    ID3D11ShaderResourceView *_weights;</div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>    ID3D11Buffer *_sizesBuffer;</div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>    ID3D11Buffer *_offsetsBuffer;</div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>    ID3D11Buffer *_indicesBuffer;</div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>    ID3D11Buffer *_weightsBuffer;</div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span> </div>\n-<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>    <span class=\"keywordtype\">int</span> _numStencils;</div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span> </div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span><span class=\"comment\">// ---------------------------------------------------------------------------</span></div>\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>    <span class=\"keywordtype\">void</span> SetSize(size_type size);</div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span>    <span class=\"keywordtype\">void</span> Reserve(size_type capacity);</div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span> </div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span>    <span class=\"comment\">//  Non-copyable:</span></div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span>    StackBuffer(<span class=\"keyword\">const</span> StackBuffer&lt;TYPE,SIZE,POD_TYPE&gt; &amp;) { }</div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span>    StackBuffer&amp; operator=(<span class=\"keyword\">const</span> StackBuffer&lt;TYPE,SIZE,POD_TYPE&gt; &amp;) { <span class=\"keywordflow\">return</span> *<span class=\"keyword\">this</span>; }</div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span> </div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span>    <span class=\"keywordtype\">void</span> allocate(size_type capacity);</div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>    <span class=\"keywordtype\">void</span> deallocate();</div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>    <span class=\"keywordtype\">void</span> construct();</div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>    <span class=\"keywordtype\">void</span> destruct();</div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span> </div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>    TYPE *     _data;</div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>    size_type  _size;</div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>    size_type  _capacity;</div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span> </div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>    <span class=\"comment\">//  Is alignment an issue here?  The staticData arena will at least be double-word</span></div>\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>    <span class=\"comment\">//  aligned within this struct, which meets current and most anticipated needs.</span></div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>    <span class=\"keywordtype\">char</span>   _staticData[SIZE * <span class=\"keyword\">sizeof</span>(TYPE)];</div>\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span>    <span class=\"keywordtype\">char</span> * _dynamicData;</div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>};</div>\n <div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00096\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01201.html\">   96</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01201.html\">D3D11ComputeEvaluator</a> {</div>\n-<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01201.html#a2c24b70c9312d8dff3fecb9ddea52c44\">   98</a></span>    <span class=\"keyword\">typedef</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_typedef\" href=\"a01201.html#a2c24b70c9312d8dff3fecb9ddea52c44\">Instantiatable</a>;</div>\n-<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01201.html#a078445a784ae15bbe1d26b1038cd6457\">   99</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01201.html\">D3D11ComputeEvaluator</a> * <a class=\"code hl_function\" href=\"a01201.html#a078445a784ae15bbe1d26b1038cd6457\">Create</a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span>                                          <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span>                                          <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span>                                          <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span>                                          ID3D11DeviceContext *deviceContext);</div>\n-<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span> </div>\n-<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01201.html#a1ec4a917b165527dea62146542f533ff\">  105</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01201.html\">D3D11ComputeEvaluator</a> * <a class=\"code hl_function\" href=\"a01201.html#a1ec4a917b165527dea62146542f533ff\">Create</a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span>                                          <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span>                                          <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span>                                          <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span>                                          <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span>                                          <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span>                                          <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span>                                          ID3D11DeviceContext *deviceContext);</div>\n-<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span> </div>\n-<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01201.html#aa81511d3938d70d67a62217951cb8eb7\">  115</a></span>    <a class=\"code hl_function\" href=\"a01201.html#aa81511d3938d70d67a62217951cb8eb7\">D3D11ComputeEvaluator</a>();</div>\n+<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span> </div>\n+<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span><span class=\"comment\">//  Core allocation/deallocation methods:</span></div>\n+<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> TYPE, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> SIZE, <span class=\"keywordtype\">bool</span> POD_TYPE&gt;</div>\n+<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span>StackBuffer&lt;TYPE,SIZE,POD_TYPE&gt;::allocate(size_type capacity) {</div>\n+<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span> </div>\n+<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span>    <span class=\"comment\">//  Again, is alignment an issue here?  C++ spec says new will return pointer</span></div>\n+<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span>    <span class=\"comment\">//  &quot;suitably aligned&quot; for conversion to pointers of other types, which implies</span></div>\n+<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span>    <span class=\"comment\">//  at least an alignment of 16.</span></div>\n+<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span>    _dynamicData = <span class=\"keyword\">static_cast&lt;</span><span class=\"keywordtype\">char</span>*<span class=\"keyword\">&gt;</span>(::operator <span class=\"keyword\">new</span>(capacity * <span class=\"keyword\">sizeof</span>(TYPE)));</div>\n+<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span> </div>\n+<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span>    _data = <span class=\"keyword\">reinterpret_cast&lt;</span>TYPE*<span class=\"keyword\">&gt;</span>(_dynamicData);</div>\n+<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span>    _capacity = capacity;</div>\n+<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span>}</div>\n+<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span> </div>\n+<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> TYPE, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> SIZE, <span class=\"keywordtype\">bool</span> POD_TYPE&gt;</div>\n+<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span>StackBuffer&lt;TYPE,SIZE,POD_TYPE&gt;::deallocate() {</div>\n <div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\">  116</span> </div>\n-<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01201.html#aab396c5633eecdc92d15f6b30baaa934\">  118</a></span>    <a class=\"code hl_function\" href=\"a01201.html#aab396c5633eecdc92d15f6b30baaa934\">~D3D11ComputeEvaluator</a>();</div>\n-<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span> </div>\n-<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\">  147</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00148\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01201.html#a0fe7977009448c93da833015758daab8\">  148</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01201.html#a0fe7977009448c93da833015758daab8\">EvalStencils</a>(</div>\n-<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\">  149</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\">  150</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\">  151</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n-<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\">  152</span>        <a class=\"code hl_class\" href=\"a01201.html\">D3D11ComputeEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n-<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\">  153</span>        ID3D11DeviceContext * deviceContext) {</div>\n-<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\">  154</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\">  155</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01201.html#a0fe7977009448c93da833015758daab8\">EvalStencils</a>(srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\">  156</span>                                          dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\">  157</span>                                          stencilTable,</div>\n-<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\">  158</span>                                          deviceContext);</div>\n-<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\">  159</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\">  160</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n-<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\">  161</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\">  162</span>            instance = <a class=\"code hl_function\" href=\"a01201.html#a078445a784ae15bbe1d26b1038cd6457\">Create</a>(srcDesc, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\">  163</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\">  164</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\">  165</span>                              deviceContext);</div>\n-<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\">  166</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\">  167</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01201.html#a0fe7977009448c93da833015758daab8\">EvalStencils</a>(srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\">  168</span>                                                dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\">  169</span>                                                stencilTable,</div>\n-<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\">  170</span>                                                deviceContext);</div>\n-<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span>                <span class=\"keyword\">delete</span> instance;</div>\n-<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\">  172</span>                <span class=\"keywordflow\">return</span> r;</div>\n-<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\">  173</span>            }</div>\n-<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\">  174</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\">  175</span>        }</div>\n-<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\">  176</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span> </div>\n-<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\">  180</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00181\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01201.html#a6be7cb8c9a51cd6ba1c01c5c59f94a60\">  181</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01201.html#a6be7cb8c9a51cd6ba1c01c5c59f94a60\">EvalStencils</a>(</div>\n-<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\">  182</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\">  183</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\">  184</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n-<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\">  185</span>        ID3D11DeviceContext *deviceContext)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\">  186</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01201.html#a0fe7977009448c93da833015758daab8\">EvalStencils</a>(srcBuffer-&gt;BindD3D11UAV(deviceContext), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\">  187</span>                            dstBuffer-&gt;BindD3D11UAV(deviceContext), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\">  188</span>                            stencilTable-&gt;GetSizesSRV(),</div>\n-<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\">  189</span>                            stencilTable-&gt;GetOffsetsSRV(),</div>\n-<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\">  190</span>                            stencilTable-&gt;GetIndicesSRV(),</div>\n-<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\">  191</span>                            stencilTable-&gt;GetWeightsSRV(),</div>\n-<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\">  192</span>                            <span class=\"comment\">/* start = */</span> 0,</div>\n-<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\">  193</span>                            <span class=\"comment\">/* end   = */</span> stencilTable-&gt;GetNumStencils(),</div>\n-<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\">  194</span>                            deviceContext);</div>\n-<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\">  195</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\">  196</span> </div>\n-<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01201.html#aba198f1ea9fbe7445ede38f86c3c5bac\">  199</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01201.html#aba198f1ea9fbe7445ede38f86c3c5bac\">EvalStencils</a>(ID3D11UnorderedAccessView *srcSRV,</div>\n-<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\">  200</span>                      <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\">  201</span>                      ID3D11UnorderedAccessView *dstUAV,</div>\n-<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\">  202</span>                      <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\">  203</span>                      ID3D11ShaderResourceView *sizesSRV,</div>\n-<div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\">  204</span>                      ID3D11ShaderResourceView *offsetsSRV,</div>\n-<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\">  205</span>                      ID3D11ShaderResourceView *indicesSRV,</div>\n-<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\">  206</span>                      ID3D11ShaderResourceView *weightsSRV,</div>\n-<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\">  207</span>                      <span class=\"keywordtype\">int</span> start,</div>\n-<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\">  208</span>                      <span class=\"keywordtype\">int</span> end,</div>\n-<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\">  209</span>                      ID3D11DeviceContext *deviceContext) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\">  210</span> </div>\n-<div class=\"line\"><a id=\"l00212\" name=\"l00212\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01201.html#a872e69a9fbf6f7b9f55112ecaf0c1b20\">  212</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01201.html#a872e69a9fbf6f7b9f55112ecaf0c1b20\">Compile</a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\">  213</span>                 <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\">  214</span>                 ID3D11DeviceContext *deviceContext);</div>\n-<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\">  215</span> </div>\n-<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01201.html#a32ee99f6118ec6f2a93fee1d34a90dc1\">  217</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01201.html#a32ee99f6118ec6f2a93fee1d34a90dc1\">Synchronize</a>(ID3D11DeviceContext *deviceContext);</div>\n-<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\">  218</span> </div>\n-<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\">  219</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\">  220</span>    ID3D11ComputeShader * _computeShader;</div>\n-<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\">  221</span>    ID3D11ClassLinkage  * _classLinkage;</div>\n-<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\">  222</span>    ID3D11ClassInstance * _singleBufferKernel;</div>\n-<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\">  223</span>    ID3D11ClassInstance * _separateBufferKernel;</div>\n-<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\">  224</span>    ID3D11Buffer        * _uniformArgs; <span class=\"comment\">// uniform parameters for kernels</span></div>\n-<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\">  225</span> </div>\n-<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\">  226</span>    <span class=\"keywordtype\">int</span> _workGroupSize;</div>\n-<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\">  227</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\">  228</span> </div>\n-<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\">  229</span>}  <span class=\"comment\">// end namespace Osd</span></div>\n-<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\">  230</span> </div>\n-<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\">  231</span>}  <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\">  232</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\">  233</span> </div>\n-<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\">  234</span>}  <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\">  235</span> </div>\n-<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\">  236</span> </div>\n-<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\">  237</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_D3D11_COMPUTE_EVALUATOR_H</span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa01065_html\"><div class=\"ttname\"><a href=\"a01065.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTable</a></div><div class=\"ttdoc\">Stencil table class wrapping the template for compatibility.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00273\">stencilTable.h:273</a></div></div>\n-<div class=\"ttc\" id=\"aa01141_html\"><div class=\"ttname\"><a href=\"a01141.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::BufferDescriptor</a></div><div class=\"ttdoc\">BufferDescriptor is a struct which describes buffer elements in interleaved data buffers....</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00866_source.html#l00061\">bufferDescriptor.h:61</a></div></div>\n-<div class=\"ttc\" id=\"aa01197_html\"><div class=\"ttname\"><a href=\"a01197.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11StencilTable</a></div><div class=\"ttdoc\">D3D11 stencil table.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00800_source.html#l00056\">d3d11ComputeEvaluator.h:56</a></div></div>\n-<div class=\"ttc\" id=\"aa01197_html_a2ec7ad097a488f2b17603173d6362b61\"><div class=\"ttname\"><a href=\"a01197.html#a2ec7ad097a488f2b17603173d6362b61\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11StencilTable::Create</a></div><div class=\"ttdeci\">static D3D11StencilTable * Create(Far::StencilTable const *stencilTable, DEVICE_CONTEXT context)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00800_source.html#l00059\">d3d11ComputeEvaluator.h:59</a></div></div>\n-<div class=\"ttc\" id=\"aa01197_html_a4e486bdd9cf98a5582781a905d154e67\"><div class=\"ttname\"><a href=\"a01197.html#a4e486bdd9cf98a5582781a905d154e67\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11StencilTable::GetOffsetsSRV</a></div><div class=\"ttdeci\">ID3D11ShaderResourceView * GetOffsetsSRV() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00800_source.html#l00076\">d3d11ComputeEvaluator.h:76</a></div></div>\n-<div class=\"ttc\" id=\"aa01197_html_a65836d2070b943c8fecbad926d074de2\"><div class=\"ttname\"><a href=\"a01197.html#a65836d2070b943c8fecbad926d074de2\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11StencilTable::GetNumStencils</a></div><div class=\"ttdeci\">int GetNumStencils() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00800_source.html#l00079\">d3d11ComputeEvaluator.h:79</a></div></div>\n-<div class=\"ttc\" id=\"aa01197_html_a6aa76c564ae400e727b2377ce785cd90\"><div class=\"ttname\"><a href=\"a01197.html#a6aa76c564ae400e727b2377ce785cd90\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11StencilTable::GetIndicesSRV</a></div><div class=\"ttdeci\">ID3D11ShaderResourceView * GetIndicesSRV() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00800_source.html#l00077\">d3d11ComputeEvaluator.h:77</a></div></div>\n-<div class=\"ttc\" id=\"aa01197_html_a729ea8793ae67b1767d670a4541006e2\"><div class=\"ttname\"><a href=\"a01197.html#a729ea8793ae67b1767d670a4541006e2\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11StencilTable::~D3D11StencilTable</a></div><div class=\"ttdeci\">~D3D11StencilTable()</div></div>\n-<div class=\"ttc\" id=\"aa01197_html_a7e3a2f5c281c55308400138222797dbc\"><div class=\"ttname\"><a href=\"a01197.html#a7e3a2f5c281c55308400138222797dbc\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11StencilTable::D3D11StencilTable</a></div><div class=\"ttdeci\">D3D11StencilTable(Far::StencilTable const *stencilTable, ID3D11DeviceContext *deviceContext)</div></div>\n-<div class=\"ttc\" id=\"aa01197_html_a8981041688d408d08dce9c8890504650\"><div class=\"ttname\"><a href=\"a01197.html#a8981041688d408d08dce9c8890504650\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11StencilTable::Create</a></div><div class=\"ttdeci\">static D3D11StencilTable * Create(Far::StencilTable const *stencilTable, ID3D11DeviceContext *deviceContext)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00800_source.html#l00064\">d3d11ComputeEvaluator.h:64</a></div></div>\n-<div class=\"ttc\" id=\"aa01197_html_aa6b4c8f4cd5a1e0111e77d7365018c74\"><div class=\"ttname\"><a href=\"a01197.html#aa6b4c8f4cd5a1e0111e77d7365018c74\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11StencilTable::GetSizesSRV</a></div><div class=\"ttdeci\">ID3D11ShaderResourceView * GetSizesSRV() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00800_source.html#l00075\">d3d11ComputeEvaluator.h:75</a></div></div>\n-<div class=\"ttc\" id=\"aa01197_html_ac3de1233503ee41bac41618702b4302c\"><div class=\"ttname\"><a href=\"a01197.html#ac3de1233503ee41bac41618702b4302c\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11StencilTable::GetWeightsSRV</a></div><div class=\"ttdeci\">ID3D11ShaderResourceView * GetWeightsSRV() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00800_source.html#l00078\">d3d11ComputeEvaluator.h:78</a></div></div>\n-<div class=\"ttc\" id=\"aa01201_html\"><div class=\"ttname\"><a href=\"a01201.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11ComputeEvaluator</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00800_source.html#l00096\">d3d11ComputeEvaluator.h:96</a></div></div>\n-<div class=\"ttc\" id=\"aa01201_html_a078445a784ae15bbe1d26b1038cd6457\"><div class=\"ttname\"><a href=\"a01201.html#a078445a784ae15bbe1d26b1038cd6457\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11ComputeEvaluator::Create</a></div><div class=\"ttdeci\">static D3D11ComputeEvaluator * Create(BufferDescriptor const &amp;srcDesc, BufferDescriptor const &amp;dstDesc, BufferDescriptor const &amp;duDesc, BufferDescriptor const &amp;dvDesc, ID3D11DeviceContext *deviceContext)</div></div>\n-<div class=\"ttc\" id=\"aa01201_html_a0fe7977009448c93da833015758daab8\"><div class=\"ttname\"><a href=\"a01201.html#a0fe7977009448c93da833015758daab8\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11ComputeEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, STENCIL_TABLE const *stencilTable, D3D11ComputeEvaluator const *instance, ID3D11DeviceContext *deviceContext)</div><div class=\"ttdoc\">Generic static compute function. This function has a same signature as other device kernels have so t...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00800_source.html#l00148\">d3d11ComputeEvaluator.h:148</a></div></div>\n-<div class=\"ttc\" id=\"aa01201_html_a1ec4a917b165527dea62146542f533ff\"><div class=\"ttname\"><a href=\"a01201.html#a1ec4a917b165527dea62146542f533ff\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11ComputeEvaluator::Create</a></div><div class=\"ttdeci\">static D3D11ComputeEvaluator * Create(BufferDescriptor const &amp;srcDesc, BufferDescriptor const &amp;dstDesc, BufferDescriptor const &amp;duDesc, BufferDescriptor const &amp;dvDesc, BufferDescriptor const &amp;duuDesc, BufferDescriptor const &amp;duvDesc, BufferDescriptor const &amp;dvvDesc, ID3D11DeviceContext *deviceContext)</div></div>\n-<div class=\"ttc\" id=\"aa01201_html_a2c24b70c9312d8dff3fecb9ddea52c44\"><div class=\"ttname\"><a href=\"a01201.html#a2c24b70c9312d8dff3fecb9ddea52c44\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11ComputeEvaluator::Instantiatable</a></div><div class=\"ttdeci\">bool Instantiatable</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00800_source.html#l00098\">d3d11ComputeEvaluator.h:98</a></div></div>\n-<div class=\"ttc\" id=\"aa01201_html_a32ee99f6118ec6f2a93fee1d34a90dc1\"><div class=\"ttname\"><a href=\"a01201.html#a32ee99f6118ec6f2a93fee1d34a90dc1\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11ComputeEvaluator::Synchronize</a></div><div class=\"ttdeci\">static void Synchronize(ID3D11DeviceContext *deviceContext)</div><div class=\"ttdoc\">Wait the dispatched kernel finishes.</div></div>\n-<div class=\"ttc\" id=\"aa01201_html_a6be7cb8c9a51cd6ba1c01c5c59f94a60\"><div class=\"ttname\"><a href=\"a01201.html#a6be7cb8c9a51cd6ba1c01c5c59f94a60\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11ComputeEvaluator::EvalStencils</a></div><div class=\"ttdeci\">bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, STENCIL_TABLE const *stencilTable, ID3D11DeviceContext *deviceContext) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00800_source.html#l00181\">d3d11ComputeEvaluator.h:181</a></div></div>\n-<div class=\"ttc\" id=\"aa01201_html_a872e69a9fbf6f7b9f55112ecaf0c1b20\"><div class=\"ttname\"><a href=\"a01201.html#a872e69a9fbf6f7b9f55112ecaf0c1b20\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11ComputeEvaluator::Compile</a></div><div class=\"ttdeci\">bool Compile(BufferDescriptor const &amp;srcDesc, BufferDescriptor const &amp;dstDesc, ID3D11DeviceContext *deviceContext)</div><div class=\"ttdoc\">Configure DX kernel. Returns false if it fails to compile the kernel.</div></div>\n-<div class=\"ttc\" id=\"aa01201_html_aa81511d3938d70d67a62217951cb8eb7\"><div class=\"ttname\"><a href=\"a01201.html#aa81511d3938d70d67a62217951cb8eb7\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11ComputeEvaluator::D3D11ComputeEvaluator</a></div><div class=\"ttdeci\">D3D11ComputeEvaluator()</div><div class=\"ttdoc\">Constructor.</div></div>\n-<div class=\"ttc\" id=\"aa01201_html_aab396c5633eecdc92d15f6b30baaa934\"><div class=\"ttname\"><a href=\"a01201.html#aab396c5633eecdc92d15f6b30baaa934\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11ComputeEvaluator::~D3D11ComputeEvaluator</a></div><div class=\"ttdeci\">~D3D11ComputeEvaluator()</div><div class=\"ttdoc\">Destructor.</div></div>\n-<div class=\"ttc\" id=\"aa01201_html_aba198f1ea9fbe7445ede38f86c3c5bac\"><div class=\"ttname\"><a href=\"a01201.html#aba198f1ea9fbe7445ede38f86c3c5bac\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11ComputeEvaluator::EvalStencils</a></div><div class=\"ttdeci\">bool EvalStencils(ID3D11UnorderedAccessView *srcSRV, BufferDescriptor const &amp;srcDesc, ID3D11UnorderedAccessView *dstUAV, BufferDescriptor const &amp;dstDesc, ID3D11ShaderResourceView *sizesSRV, ID3D11ShaderResourceView *offsetsSRV, ID3D11ShaderResourceView *indicesSRV, ID3D11ShaderResourceView *weightsSRV, int start, int end, ID3D11DeviceContext *deviceContext) const</div></div>\n+<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span>    ::operator <span class=\"keyword\">delete</span>(_dynamicData);</div>\n+<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\">  118</span> </div>\n+<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span>    _data = <span class=\"keyword\">reinterpret_cast&lt;</span>TYPE*<span class=\"keyword\">&gt;</span>(_staticData);</div>\n+<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span>    _capacity = SIZE;</div>\n+<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\">  121</span>}</div>\n+<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span> </div>\n+<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span><span class=\"comment\">//  Explicit element-wise construction and destruction within allocated memory.</span></div>\n+<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span><span class=\"comment\">//  Compilers do not always optimize out the iteration here even when there is</span></div>\n+<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span><span class=\"comment\">//  no construction or destruction, so the POD_TYPE arguement can be used to</span></div>\n+<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span><span class=\"comment\">//  force this when/if it becomes an issue (and it has been in some cases).</span></div>\n+<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> TYPE, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> SIZE, <span class=\"keywordtype\">bool</span> POD_TYPE&gt;</div>\n+<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\">  131</span>StackBuffer&lt;TYPE,SIZE,POD_TYPE&gt;::construct() {</div>\n+<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\">  132</span> </div>\n+<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\">  133</span>    <span class=\"keywordflow\">for</span> (size_type i = 0; i &lt; _size; ++i) {</div>\n+<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\">  134</span>        (void) <span class=\"keyword\">new</span> (&amp;_data[i]) TYPE;</div>\n+<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\">  135</span>    }</div>\n+<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\">  136</span>}</div>\n+<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\">  137</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> TYPE, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> SIZE, <span class=\"keywordtype\">bool</span> POD_TYPE&gt;</div>\n+<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\">  138</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\">  139</span>StackBuffer&lt;TYPE,SIZE,POD_TYPE&gt;::destruct() {</div>\n+<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\">  140</span> </div>\n+<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\">  141</span>    <span class=\"keywordflow\">for</span> (size_type i = 0; i &lt; _size; ++i) {</div>\n+<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span>        _data[i].~TYPE();</div>\n+<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\">  143</span>    }</div>\n+<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\">  144</span>}</div>\n+<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\">  145</span> </div>\n+<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\">  146</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\">  147</span><span class=\"comment\">//  Inline constructors and destructor:</span></div>\n+<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\">  148</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\">  149</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> TYPE, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> SIZE, <span class=\"keywordtype\">bool</span> POD_TYPE&gt;</div>\n+<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\">  150</span><span class=\"keyword\">inline</span></div>\n+<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\">  151</span>StackBuffer&lt;TYPE,SIZE,POD_TYPE&gt;::StackBuffer() :</div>\n+<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\">  152</span>    _data(reinterpret_cast&lt;TYPE*&gt;(_staticData)),</div>\n+<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\">  153</span>    _size(0),</div>\n+<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\">  154</span>    _capacity(SIZE),</div>\n+<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\">  155</span>    _dynamicData(0) {</div>\n+<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\">  156</span> </div>\n+<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\">  157</span>}</div>\n+<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\">  158</span> </div>\n+<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\">  159</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> TYPE, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> SIZE, <span class=\"keywordtype\">bool</span> POD_TYPE&gt;</div>\n+<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\">  160</span><span class=\"keyword\">inline</span></div>\n+<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\">  161</span>StackBuffer&lt;TYPE,SIZE,POD_TYPE&gt;::StackBuffer(size_type size) :</div>\n+<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\">  162</span>    _data(reinterpret_cast&lt;TYPE*&gt;(_staticData)),</div>\n+<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\">  163</span>    _size(size),</div>\n+<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\">  164</span>    _capacity(SIZE),</div>\n+<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\">  165</span>    _dynamicData(0) {</div>\n+<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\">  166</span> </div>\n+<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\">  167</span>    <span class=\"keywordflow\">if</span> (size &gt; SIZE) {</div>\n+<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\">  168</span>        allocate(size);</div>\n+<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\">  169</span>    }</div>\n+<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\">  170</span>    <span class=\"keywordflow\">if</span> (!POD_TYPE) {</div>\n+<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span>        construct();</div>\n+<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\">  172</span>    }</div>\n+<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\">  173</span>}</div>\n+<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\">  174</span> </div>\n+<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\">  175</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> TYPE, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> SIZE, <span class=\"keywordtype\">bool</span> POD_TYPE&gt;</div>\n+<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\">  176</span><span class=\"keyword\">inline</span></div>\n+<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span>StackBuffer&lt;TYPE,SIZE,POD_TYPE&gt;::~StackBuffer() {</div>\n+<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\">  178</span> </div>\n+<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\">  179</span>    <span class=\"keywordflow\">if</span> (!POD_TYPE) {</div>\n+<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\">  180</span>        destruct();</div>\n+<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\">  181</span>    }</div>\n+<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\">  182</span>    deallocate();</div>\n+<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\">  183</span>}</div>\n+<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\">  184</span> </div>\n+<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\">  185</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\">  186</span><span class=\"comment\">//  Inline sizing methods:</span></div>\n+<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\">  187</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\">  188</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> TYPE, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> SIZE, <span class=\"keywordtype\">bool</span> POD_TYPE&gt;</div>\n+<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\">  189</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\">  190</span>StackBuffer&lt;TYPE,SIZE,POD_TYPE&gt;::Reserve(size_type capacity) {</div>\n+<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\">  191</span> </div>\n+<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\">  192</span>    <span class=\"keywordflow\">if</span> (capacity &gt; _capacity) {</div>\n+<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\">  193</span>        <span class=\"keywordflow\">if</span> (!POD_TYPE) {</div>\n+<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\">  194</span>            destruct();</div>\n+<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\">  195</span>        }</div>\n+<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\">  196</span>        deallocate();</div>\n+<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\">  197</span>        allocate(capacity);</div>\n+<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\">  198</span>    }</div>\n+<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\">  199</span>}</div>\n+<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\">  200</span> </div>\n+<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\">  201</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> TYPE, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> SIZE, <span class=\"keywordtype\">bool</span> POD_TYPE&gt;</div>\n+<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\">  202</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\">  203</span>StackBuffer&lt;TYPE,SIZE,POD_TYPE&gt;::SetSize(size_type size)</div>\n+<div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\">  204</span>{</div>\n+<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\">  205</span>    <span class=\"keywordflow\">if</span> (!POD_TYPE) {</div>\n+<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\">  206</span>        destruct();</div>\n+<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\">  207</span>    }</div>\n+<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\">  208</span>    <span class=\"keywordflow\">if</span> (size == 0) {</div>\n+<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\">  209</span>        deallocate();</div>\n+<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\">  210</span>    } <span class=\"keywordflow\">else</span> <span class=\"keywordflow\">if</span> (size &gt; _capacity) {</div>\n+<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\">  211</span>        deallocate();</div>\n+<div class=\"line\"><a id=\"l00212\" name=\"l00212\"></a><span class=\"lineno\">  212</span>        allocate(size);</div>\n+<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\">  213</span>    }</div>\n+<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\">  214</span>    _size = size;</div>\n+<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\">  215</span>    <span class=\"keywordflow\">if</span> (!POD_TYPE) {</div>\n+<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\">  216</span>        construct();</div>\n+<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\">  217</span>    }</div>\n+<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\">  218</span>}</div>\n+<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\">  219</span> </div>\n+<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\">  220</span>} <span class=\"comment\">// end namespace internal</span></div>\n+<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\">  221</span>} <span class=\"comment\">// end namespace Vtr</span></div>\n+<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\">  222</span> </div>\n+<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\">  223</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\">  224</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\">  225</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\">  226</span> </div>\n+<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\">  227</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_VTR_STACK_BUFFER_H */</span><span class=\"preprocessor\"></span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00800.html\">d3d11ComputeEvaluator.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bd5473d7d5841d48919aaa9ad0cb1f9b.html\">vtr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00800.html\">stackBuffer.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-d3d11ComputeEvaluator.h\n+stackBuffer.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2015 Pixar\n+2// Copyright 2015 DreamWorks Animation LLC.\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -23,273 +23,230 @@\n 17//\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n-24\n-25#ifndef OPENSUBDIV3_OSD_D3D11_COMPUTE_EVALUATOR_H\n-26#define OPENSUBDIV3_OSD_D3D11_COMPUTE_EVALUATOR_H\n-27\n-28#include \"../version.h\"\n-29\n-30struct ID3D11DeviceContext;\n-31struct ID3D11Buffer;\n-32struct ID3D11ComputeShader;\n-33struct ID3D11ClassLinkage;\n-34struct ID3D11ClassInstance;\n-35struct ID3D11ShaderResourceView;\n-36struct ID3D11UnorderedAccessView;\n-37\n-38#include \"../osd/bufferDescriptor.h\"\n-39\n-40namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-41namespace OPENSUBDIV_VERSION {\n-42\n-43namespace Far {\n-44 class StencilTable;\n-45}\n-46\n-47namespace Osd {\n+24#ifndef OPENSUBDIV3_VTR_STACK_BUFFER_H\n+25#define OPENSUBDIV3_VTR_STACK_BUFFER_H\n+26\n+27#include \"../version.h\"\n+28\n+29namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+30namespace OPENSUBDIV_VERSION {\n+31\n+32namespace Vtr {\n+33namespace internal {\n+34\n+35//\n+36// The StackBuffer class is intended solely to take the place of VLAs\n+(Variable\n+37// Length Arrays) which most compilers support, but are not strictly standard\n+C++.\n+38// Portability concerns forces us to make use of either alloca() or some\n+other\n+39// mechanism to create small arrays on the stack that are typically based on\n+the\n+40// valence of a vertex -- small in general, but occasionally large.\n+41//\n+42// Note also that since the intent of this is to replace VLAs -- not general\n+43// std::vectors -- support for std::vector functionality is intentionally\n+limited\n+44// and STL-like naming is avoided. Like a VLA there is no incremental growth.\n+45// Support for resizing is available to reuse an instance at the beginning of\n+a\n+46// loop with a new size, but resizing in this case reinitializes all\n+elements.\n+47//\n 48\n-_\b5_\b6class _\bD_\b3_\bD_\b1_\b1_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be {\n-57public:\n-58 template <typename DEVICE_CONTEXT>\n-_\b5_\b9 static _\bD_\b3_\bD_\b1_\b1_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be *_\bC_\br_\be_\ba_\bt_\be(_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *stencilTable,\n-60 DEVICE_CONTEXT context) {\n-61 return new _\bD_\b3_\bD_\b1_\b1_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(stencilTable, context->GetDeviceContext());\n-62 }\n-63\n-_\b6_\b4 static _\bD_\b3_\bD_\b1_\b1_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be *_\bC_\br_\be_\ba_\bt_\be(_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *stencilTable,\n-65 ID3D11DeviceContext *deviceContext) {\n-66 return new _\bD_\b3_\bD_\b1_\b1_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(stencilTable, deviceContext);\n-67 }\n-68\n-_\b6_\b9 _\bD_\b3_\bD_\b1_\b1_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *stencilTable,\n-70 ID3D11DeviceContext *deviceContext);\n+49template <typename TYPE, unsigned int SIZE, bool POD_TYPE = false>\n+50class StackBuffer\n+51{\n+52public:\n+53 typedef unsigned int size_type;\n+54\n+55public:\n+56 // Constructors and destructor -- declared inline below:\n+57 StackBuffer();\n+58 StackBuffer(size_type size);\n+59 ~StackBuffer();\n+60\n+61public:\n+62 // Note the reliance on implicit casting so that it can be used similar to\n+63 // a VLA. This removes the need for operator[] as the resulting TYPE* will\n+64 // natively support []. (The presence of both TYPE* and operator[] also\n+65 // causes an ambiguous overloading error with 32-bit MSVC builds.)\n+66\n+67 operator TYPE const * () const { return _data; }\n+68 operator TYPE * () { return _data; }\n+69\n+70 size_type GetSize() const { return _size; }\n 71\n-_\b7_\b2 _\b~_\bD_\b3_\bD_\b1_\b1_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be();\n-73\n-74 // interfaces needed for D3D11ComputeEvaluator\n-_\b7_\b5 ID3D11ShaderResourceView *_\bG_\be_\bt_\bS_\bi_\bz_\be_\bs_\bS_\bR_\bV() const { return _sizes; }\n-_\b7_\b6 ID3D11ShaderResourceView *_\bG_\be_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bS_\bR_\bV() const { return _offsets; }\n-_\b7_\b7 ID3D11ShaderResourceView *_\bG_\be_\bt_\bI_\bn_\bd_\bi_\bc_\be_\bs_\bS_\bR_\bV() const { return _indices; }\n-_\b7_\b8 ID3D11ShaderResourceView *_\bG_\be_\bt_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bS_\bR_\bV() const { return _weights; }\n-_\b7_\b9 int _\bG_\be_\bt_\bN_\bu_\bm_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs() const { return _numStencils; }\n-80\n-81private:\n-82 ID3D11ShaderResourceView *_sizes;\n-83 ID3D11ShaderResourceView *_offsets;\n-84 ID3D11ShaderResourceView *_indices;\n-85 ID3D11ShaderResourceView *_weights;\n-86 ID3D11Buffer *_sizesBuffer;\n-87 ID3D11Buffer *_offsetsBuffer;\n-88 ID3D11Buffer *_indicesBuffer;\n-89 ID3D11Buffer *_weightsBuffer;\n-90\n-91 int _numStencils;\n-92};\n-93\n-94// --------------------------------------------------------------------------\n--\n+72 void SetSize(size_type size);\n+73 void Reserve(size_type capacity);\n+74\n+75private:\n+76 // Non-copyable:\n+77 StackBuffer(const StackBuffer<TYPE,SIZE,POD_TYPE> &) { }\n+78 StackBuffer& operator=(const StackBuffer<TYPE,SIZE,POD_TYPE> &) { return\n+*this; }\n+79\n+80 void allocate(size_type capacity);\n+81 void deallocate();\n+82 void construct();\n+83 void destruct();\n+84\n+85private:\n+86 TYPE * _data;\n+87 size_type _size;\n+88 size_type _capacity;\n+89\n+90 // Is alignment an issue here? The staticData arena will at least be double-\n+word\n+91 // aligned within this struct, which meets current and most anticipated\n+needs.\n+92 char _staticData[SIZE * sizeof(TYPE)];\n+93 char * _dynamicData;\n+94};\n 95\n-_\b9_\b6class _\bD_\b3_\bD_\b1_\b1_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br {\n-97public:\n-_\b9_\b8 typedef bool _\bI_\bn_\bs_\bt_\ba_\bn_\bt_\bi_\ba_\bt_\ba_\bb_\bl_\be;\n-_\b9_\b9 static _\bD_\b3_\bD_\b1_\b1_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br * _\bC_\br_\be_\ba_\bt_\be(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-100 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-101 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-102 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-103 ID3D11DeviceContext *deviceContext);\n-104\n-_\b1_\b0_\b5 static _\bD_\b3_\bD_\b1_\b1_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br * _\bC_\br_\be_\ba_\bt_\be(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-106 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-107 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-108 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-109 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-110 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-111 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-112 ID3D11DeviceContext *deviceContext);\n-113\n-_\b1_\b1_\b5 _\bD_\b3_\bD_\b1_\b1_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br();\n+96\n+97//\n+98// Core allocation/deallocation methods:\n+99//\n+100template <typename TYPE, unsigned int SIZE, bool POD_TYPE>\n+101inline void\n+102StackBuffer<TYPE,SIZE,POD_TYPE>::allocate(size_type capacity) {\n+103\n+104 // Again, is alignment an issue here? C++ spec says new will return pointer\n+105 // \"suitably aligned\" for conversion to pointers of other types, which\n+implies\n+106 // at least an alignment of 16.\n+107 _dynamicData = static_cast<char*>(::operator new(capacity * sizeof(TYPE)));\n+108\n+109 _data = reinterpret_cast<TYPE*>(_dynamicData);\n+110 _capacity = capacity;\n+111}\n+112\n+113template <typename TYPE, unsigned int SIZE, bool POD_TYPE>\n+114inline void\n+115StackBuffer<TYPE,SIZE,POD_TYPE>::deallocate() {\n 116\n-_\b1_\b1_\b8 _\b~_\bD_\b3_\bD_\b1_\b1_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br();\n-119\n-147 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n-_\b1_\b4_\b8 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n-149 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-150 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-151 STENCIL_TABLE const *stencilTable,\n-152 _\bD_\b3_\bD_\b1_\b1_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n-153 ID3D11DeviceContext * deviceContext) {\n-154 if (instance) {\n-155 return instance->_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer, srcDesc,\n-156 dstBuffer, dstDesc,\n-157 stencilTable,\n-158 deviceContext);\n-159 } else {\n-160 // Create an instance on demand (slow)\n-161 (void)deviceContext; // unused\n-162 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n-163 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-164 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-165 deviceContext);\n-166 if (instance) {\n-167 bool r = instance->_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer, srcDesc,\n-168 dstBuffer, dstDesc,\n-169 stencilTable,\n-170 deviceContext);\n-171 delete instance;\n-172 return r;\n-173 }\n-174 return false;\n-175 }\n-176 }\n-177\n-180 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n-_\b1_\b8_\b1 bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n-182 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-183 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-184 STENCIL_TABLE const *stencilTable,\n-185 ID3D11DeviceContext *deviceContext) const {\n-186 return _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer->BindD3D11UAV(deviceContext), srcDesc,\n-187 dstBuffer->BindD3D11UAV(deviceContext), dstDesc,\n-188 stencilTable->GetSizesSRV(),\n-189 stencilTable->GetOffsetsSRV(),\n-190 stencilTable->GetIndicesSRV(),\n-191 stencilTable->GetWeightsSRV(),\n-192 /* start = */ 0,\n-193 /* end = */ stencilTable->GetNumStencils(),\n-194 deviceContext);\n+117 ::operator delete(_dynamicData);\n+118\n+119 _data = reinterpret_cast<TYPE*>(_staticData);\n+120 _capacity = SIZE;\n+121}\n+122\n+123//\n+124// Explicit element-wise construction and destruction within allocated\n+memory.\n+125// Compilers do not always optimize out the iteration here even when there\n+is\n+126// no construction or destruction, so the POD_TYPE arguement can be used to\n+127// force this when/if it becomes an issue (and it has been in some cases).\n+128//\n+129template <typename TYPE, unsigned int SIZE, bool POD_TYPE>\n+130inline void\n+131StackBuffer<TYPE,SIZE,POD_TYPE>::construct() {\n+132\n+133 for (size_type i = 0; i < _size; ++i) {\n+134 (void) new (&_data[i]) TYPE;\n+135 }\n+136}\n+137template <typename TYPE, unsigned int SIZE, bool POD_TYPE>\n+138inline void\n+139StackBuffer<TYPE,SIZE,POD_TYPE>::destruct() {\n+140\n+141 for (size_type i = 0; i < _size; ++i) {\n+142 _data[i].~TYPE();\n+143 }\n+144}\n+145\n+146//\n+147// Inline constructors and destructor:\n+148//\n+149template <typename TYPE, unsigned int SIZE, bool POD_TYPE>\n+150inline\n+151StackBuffer<TYPE,SIZE,POD_TYPE>::StackBuffer() :\n+152 _data(reinterpret_cast<TYPE*>(_staticData)),\n+153 _size(0),\n+154 _capacity(SIZE),\n+155 _dynamicData(0) {\n+156\n+157}\n+158\n+159template <typename TYPE, unsigned int SIZE, bool POD_TYPE>\n+160inline\n+161StackBuffer<TYPE,SIZE,POD_TYPE>::StackBuffer(size_type size) :\n+162 _data(reinterpret_cast<TYPE*>(_staticData)),\n+163 _size(size),\n+164 _capacity(SIZE),\n+165 _dynamicData(0) {\n+166\n+167 if (size > SIZE) {\n+168 allocate(size);\n+169 }\n+170 if (!POD_TYPE) {\n+171 construct();\n+172 }\n+173}\n+174\n+175template <typename TYPE, unsigned int SIZE, bool POD_TYPE>\n+176inline\n+177StackBuffer<TYPE,SIZE,POD_TYPE>::~StackBuffer() {\n+178\n+179 if (!POD_TYPE) {\n+180 destruct();\n+181 }\n+182 deallocate();\n+183}\n+184\n+185//\n+186// Inline sizing methods:\n+187//\n+188template <typename TYPE, unsigned int SIZE, bool POD_TYPE>\n+189inline void\n+190StackBuffer<TYPE,SIZE,POD_TYPE>::Reserve(size_type capacity) {\n+191\n+192 if (capacity > _capacity) {\n+193 if (!POD_TYPE) {\n+194 destruct();\n 195 }\n-196\n-_\b1_\b9_\b9 bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(ID3D11UnorderedAccessView *srcSRV,\n-200 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-201 ID3D11UnorderedAccessView *dstUAV,\n-202 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-203 ID3D11ShaderResourceView *sizesSRV,\n-204 ID3D11ShaderResourceView *offsetsSRV,\n-205 ID3D11ShaderResourceView *indicesSRV,\n-206 ID3D11ShaderResourceView *weightsSRV,\n-207 int start,\n-208 int end,\n-209 ID3D11DeviceContext *deviceContext) const;\n-210\n-_\b2_\b1_\b2 bool _\bC_\bo_\bm_\bp_\bi_\bl_\be(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-213 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-214 ID3D11DeviceContext *deviceContext);\n-215\n-_\b2_\b1_\b7 static void _\bS_\by_\bn_\bc_\bh_\br_\bo_\bn_\bi_\bz_\be(ID3D11DeviceContext *deviceContext);\n-218\n-219private:\n-220 ID3D11ComputeShader * _computeShader;\n-221 ID3D11ClassLinkage * _classLinkage;\n-222 ID3D11ClassInstance * _singleBufferKernel;\n-223 ID3D11ClassInstance * _separateBufferKernel;\n-224 ID3D11Buffer * _uniformArgs; // uniform parameters for kernels\n-225\n-226 int _workGroupSize;\n-227};\n-228\n-229} // end namespace Osd\n-230\n-231} // end namespace OPENSUBDIV_VERSION\n-232using namespace OPENSUBDIV_VERSION;\n-233\n-234} // end namespace OpenSubdiv\n-235\n-236\n-237#endif // OPENSUBDIV3_OSD_D3D11_COMPUTE_EVALUATOR_H\n+196 deallocate();\n+197 allocate(capacity);\n+198 }\n+199}\n+200\n+201template <typename TYPE, unsigned int SIZE, bool POD_TYPE>\n+202inline void\n+203StackBuffer<TYPE,SIZE,POD_TYPE>::SetSize(size_type size)\n+204{\n+205 if (!POD_TYPE) {\n+206 destruct();\n+207 }\n+208 if (size == 0) {\n+209 deallocate();\n+210 } else if (size > _capacity) {\n+211 deallocate();\n+212 allocate(size);\n+213 }\n+214 _size = size;\n+215 if (!POD_TYPE) {\n+216 construct();\n+217 }\n+218}\n+219\n+220} // end namespace internal\n+221} // end namespace Vtr\n+222\n+223} // end namespace OPENSUBDIV_VERSION\n+224using namespace OPENSUBDIV_VERSION;\n+225} // end namespace OpenSubdiv\n+226\n+227#endif /* OPENSUBDIV3_VTR_STACK_BUFFER_H */\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n-Stencil table class wrapping the template for compatibility.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b2_\b7_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n-BufferDescriptor is a struct which describes buffer elements in interleaved\n-data buffers....\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b6_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n-D3D11 stencil table.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bd_\b3_\bd_\b1_\b1_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b5_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static D3D11StencilTable * Create(Far::StencilTable const *stencilTable,\n-DEVICE_CONTEXT context)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bd_\b3_\bd_\b1_\b1_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b5_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bS_\bR_\bV\n-ID3D11ShaderResourceView * GetOffsetsSRV() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bd_\b3_\bd_\b1_\b1_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-int GetNumStencils() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bd_\b3_\bd_\b1_\b1_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bI_\bn_\bd_\bi_\bc_\be_\bs_\bS_\bR_\bV\n-ID3D11ShaderResourceView * GetIndicesSRV() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bd_\b3_\bd_\b1_\b1_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b~_\bD_\b3_\bD_\b1_\b1_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n-~D3D11StencilTable()\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n-D3D11StencilTable(Far::StencilTable const *stencilTable, ID3D11DeviceContext\n-*deviceContext)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static D3D11StencilTable * Create(Far::StencilTable const *stencilTable,\n-ID3D11DeviceContext *deviceContext)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bd_\b3_\bd_\b1_\b1_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b6_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bS_\bi_\bz_\be_\bs_\bS_\bR_\bV\n-ID3D11ShaderResourceView * GetSizesSRV() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bd_\b3_\bd_\b1_\b1_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bS_\bR_\bV\n-ID3D11ShaderResourceView * GetWeightsSRV() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bd_\b3_\bd_\b1_\b1_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bd_\b3_\bd_\b1_\b1_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b9_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static D3D11ComputeEvaluator * Create(BufferDescriptor const &srcDesc,\n-BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc,\n-BufferDescriptor const &dvDesc, ID3D11DeviceContext *deviceContext)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, STENCIL_TABLE\n-const *stencilTable, D3D11ComputeEvaluator const *instance, ID3D11DeviceContext\n-*deviceContext)\n-Generic static compute function. This function has a same signature as other\n-device kernels have so t...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bd_\b3_\bd_\b1_\b1_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b4_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static D3D11ComputeEvaluator * Create(BufferDescriptor const &srcDesc,\n-BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc,\n-BufferDescriptor const &dvDesc, BufferDescriptor const &duuDesc,\n-BufferDescriptor const &duvDesc, BufferDescriptor const &dvvDesc,\n-ID3D11DeviceContext *deviceContext)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bI_\bn_\bs_\bt_\ba_\bn_\bt_\bi_\ba_\bt_\ba_\bb_\bl_\be\n-bool Instantiatable\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bd_\b3_\bd_\b1_\b1_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b9_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bS_\by_\bn_\bc_\bh_\br_\bo_\bn_\bi_\bz_\be\n-static void Synchronize(ID3D11DeviceContext *deviceContext)\n-Wait the dispatched kernel finishes.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, STENCIL_TABLE const\n-*stencilTable, ID3D11DeviceContext *deviceContext) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bd_\b3_\bd_\b1_\b1_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b8_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bC_\bo_\bm_\bp_\bi_\bl_\be\n-bool Compile(BufferDescriptor const &srcDesc, BufferDescriptor const &dstDesc,\n-ID3D11DeviceContext *deviceContext)\n-Configure DX kernel. Returns false if it fails to compile the kernel.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:\n-_\bD_\b3_\bD_\b1_\b1_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n-D3D11ComputeEvaluator()\n-Constructor.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:\n-_\b~_\bD_\b3_\bD_\b1_\b1_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n-~D3D11ComputeEvaluator()\n-Destructor.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-bool EvalStencils(ID3D11UnorderedAccessView *srcSRV, BufferDescriptor const\n-&srcDesc, ID3D11UnorderedAccessView *dstUAV, BufferDescriptor const &dstDesc,\n-ID3D11ShaderResourceView *sizesSRV, ID3D11ShaderResourceView *offsetsSRV,\n-ID3D11ShaderResourceView *indicesSRV, ID3D11ShaderResourceView *weightsSRV, int\n-start, int end, ID3D11DeviceContext *deviceContext) const\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bd_\b3_\bd_\b1_\b1_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh\n+    * _\bv_\bt_\br\n+    * _\bs_\bt_\ba_\bc_\bk_\bB_\bu_\bf_\bf_\be_\br_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00803.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00803.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/cpuEvaluator.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/vtr/refinement.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -88,44 +88,40 @@\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n-<a href=\"#nested-classes\">Classes</a> &#124;\n <a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">cpuEvaluator.h File Reference</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">refinement.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00866_source.html\">../osd/bufferDescriptor.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a01489_source.html\">../osd/types.h</a>&quot;</code><br />\n-<code>#include &lt;cstddef&gt;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a01492_source.html\">../sdc/types.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00860_source.html\">../sdc/options.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a01495_source.html\">../vtr/types.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00815_source.html\">../vtr/level.h</a>&quot;</code><br />\n+<code>#include &lt;vector&gt;</code><br />\n </div>\n <p><a href=\"a00803_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n-<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n-Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01165.html\">CpuEvaluator</a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-</table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n+<tr class=\"memitem:a00909\" id=\"r_a00909\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00909.html\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00803.html\">cpuEvaluator.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bd5473d7d5841d48919aaa9ad0cb1f9b.html\">vtr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00803.html\">refinement.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,25 +1,24 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-cpuEvaluator.h File Reference\n+_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+refinement.h File Reference\n #include \"../version.h\"\n-#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh\"\n-#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n-#include <cstddef>\n+#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n+#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh\"\n+#include \"_\b._\b._\b/_\bv_\bt_\br_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n+#include \"_\b._\b._\b/_\bv_\bt_\br_\b/_\bl_\be_\bv_\be_\bl_\b._\bh\"\n+#include <vector>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n-C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n-\u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bc_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh\n+    * _\bv_\bt_\br\n+    * _\br_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00803_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00803_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/cpuEvaluator.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/vtr/refinement.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">cpuEvaluator.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">refinement.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00803.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2015 Pixar</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2014 DreamWorks Animation LLC.</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -118,530 +118,457 @@\n <div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_CPU_EVALUATOR_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_CPU_EVALUATOR_H</span></div>\n-<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n-<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#include &quot;../osd/bufferDescriptor.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../osd/types.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &lt;cstddef&gt;</span></div>\n+<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_VTR_REFINEMENT_H</span></div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#define OPENSUBDIV3_VTR_REFINEMENT_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span> </div>\n+<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span> </div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#include &quot;../sdc/types.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../sdc/options.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../vtr/types.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &quot;../vtr/level.h&quot;</span></div>\n <div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">namespace </span>Osd {</div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00039\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01165.html\">   39</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01165.html\">CpuEvaluator</a> {</div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span> </div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"comment\">//  Declaration for the main refinement class (Refinement) and its pre-requisites:</span></div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span> </div>\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span><span class=\"keyword\">namespace </span>Vtr {</div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"keyword\">namespace </span>internal {</div>\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span> </div>\n+<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span><span class=\"keyword\">class </span>FVarRefinement;</div>\n <div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span> </div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00072\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01165.html#ae8e914fc701af498ea6c6244da408b94\">   72</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01165.html#ae8e914fc701af498ea6c6244da408b94\">EvalStencils</a>(</div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span>        <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01165.html\">CpuEvaluator</a> *instance = NULL,</div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span><span class=\"comment\">//  Refinement:</span></div>\n+<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span><span class=\"comment\">//      A refinement is a mapping between two levels -- relating the components in the original</span></div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span><span class=\"comment\">//  (parent) level to the one refined (child).  The refinement may be complete (uniform) or sparse</span></div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span><span class=\"comment\">//  (adaptive or otherwise selective), so not all components in the parent level will spawn</span></div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span><span class=\"comment\">//  components in the child level.</span></div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span><span class=\"comment\">//  Refinement is an abstract class and expects subclasses corresponding to the different types</span></div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span><span class=\"comment\">//  of topological splits that the supported subdivision schemes collectively require, i.e. those</span></div>\n+<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span><span class=\"comment\">//  listed in Sdc::SplitType.  Note the virtual requirements expected of the subclasses in the list</span></div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span><span class=\"comment\">//  of protected methods -- they differ mainly in the topology that is created in the child Level</span></div>\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span><span class=\"comment\">//  and not the propagation of tags through refinement, subdivision of sharpness values or the</span></div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span><span class=\"comment\">//  treatment of face-varying data.  The primary subclasses are QuadRefinement and TriRefinement.</span></div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span><span class=\"comment\">//  At a high level, all that is necessary in terms of interface is to construct, initialize</span></div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span><span class=\"comment\">//  (linking the two levels), optionally select components for sparse refinement (via use of the</span></div>\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span><span class=\"comment\">//  SparseSelector) and call the refine() method.  This usage is expected of Far::TopologyRefiner.</span></div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span><span class=\"comment\">//  Since we really want this class to be restricted from public access eventually, all methods</span></div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span><span class=\"comment\">//  begin with lower case (as is the convention for protected methods) and the list of friends</span></div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span><span class=\"comment\">//  will be maintained more strictly.</span></div>\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span><span class=\"keyword\">class </span>Refinement {</div>\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span> </div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>    Refinement(Level <span class=\"keyword\">const</span> &amp; parent, Level &amp; child, Sdc::Options <span class=\"keyword\">const</span>&amp; schemeOptions);</div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span>    <span class=\"keyword\">virtual</span> ~Refinement();</div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span> </div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span>    Level <span class=\"keyword\">const</span>&amp; parent()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> *_parent; }</div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span>    Level <span class=\"keyword\">const</span>&amp; child()<span class=\"keyword\"> const  </span>{ <span class=\"keywordflow\">return</span> *_child; }</div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span>    Level&amp;       child()        { <span class=\"keywordflow\">return</span> *_child; }</div>\n <div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span> </div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span> </div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>        <span class=\"keywordflow\">if</span> (stencilTable-&gt;GetNumStencils() == 0)</div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span> </div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01165.html#ae8e914fc701af498ea6c6244da408b94\">EvalStencils</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>                            dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>                            &amp;stencilTable-&gt;GetSizes()[0],</div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>                            &amp;stencilTable-&gt;GetOffsets()[0],</div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>                            &amp;stencilTable-&gt;GetControlIndices()[0],</div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>                            &amp;stencilTable-&gt;GetWeights()[0],</div>\n-<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>                            <span class=\"comment\">/*start = */</span> 0,</div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>                            <span class=\"comment\">/*end   = */</span> stencilTable-&gt;GetNumStencils());</div>\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span> </div>\n-<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01165.html#a4345e3659b7fb82f23dd51c688179ce3\">  121</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01165.html#a4345e3659b7fb82f23dd51c688179ce3\">EvalStencils</a>(</div>\n-<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span>        <span class=\"keywordtype\">float</span> *dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * sizes,</div>\n-<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * offsets,</div>\n-<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * indices,</div>\n-<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * weights,</div>\n-<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span>        <span class=\"keywordtype\">int</span> start, <span class=\"keywordtype\">int</span> end);</div>\n-<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span> </div>\n-<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\">  167</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00168\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01165.html#af918f56587a2c4b397c8ae4f385a85fd\">  168</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01165.html#af918f56587a2c4b397c8ae4f385a85fd\">EvalStencils</a>(</div>\n-<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\">  169</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\">  170</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\">  172</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\">  173</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n-<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\">  174</span>        <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01165.html\">CpuEvaluator</a> *instance = NULL,</div>\n-<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\">  175</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\">  176</span> </div>\n-<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\">  178</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\">  179</span> </div>\n-<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\">  180</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01165.html#ae8e914fc701af498ea6c6244da408b94\">EvalStencils</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\">  181</span>                            dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\">  182</span>                            duBuffer-&gt;BindCpuBuffer(),  duDesc,</div>\n-<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\">  183</span>                            dvBuffer-&gt;BindCpuBuffer(),  dvDesc,</div>\n-<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\">  184</span>                            &amp;stencilTable-&gt;GetSizes()[0],</div>\n-<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\">  185</span>                            &amp;stencilTable-&gt;GetOffsets()[0],</div>\n-<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\">  186</span>                            &amp;stencilTable-&gt;GetControlIndices()[0],</div>\n-<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\">  187</span>                            &amp;stencilTable-&gt;GetWeights()[0],</div>\n-<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\">  188</span>                            &amp;stencilTable-&gt;GetDuWeights()[0],</div>\n-<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\">  189</span>                            &amp;stencilTable-&gt;GetDvWeights()[0],</div>\n-<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\">  190</span>                            <span class=\"comment\">/*start = */</span> 0,</div>\n-<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\">  191</span>                            <span class=\"comment\">/*end   = */</span> stencilTable-&gt;GetNumStencils());</div>\n-<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\">  192</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\">  193</span> </div>\n-<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01165.html#a6daed6135a40cda2daf6c6ea2047b330\">  234</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01165.html#a6daed6135a40cda2daf6c6ea2047b330\">EvalStencils</a>(</div>\n-<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\">  235</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\">  236</span>        <span class=\"keywordtype\">float</span> *dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\">  237</span>        <span class=\"keywordtype\">float</span> *du,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\">  238</span>        <span class=\"keywordtype\">float</span> *dv,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\">  239</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * sizes,</div>\n-<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\">  240</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * offsets,</div>\n-<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\">  241</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * indices,</div>\n-<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\">  242</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * weights,</div>\n-<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\">  243</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * duWeights,</div>\n-<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\">  244</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * dvWeights,</div>\n-<div class=\"line\"><a id=\"l00245\" name=\"l00245\"></a><span class=\"lineno\">  245</span>        <span class=\"keywordtype\">int</span> start, <span class=\"keywordtype\">int</span> end);</div>\n-<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\">  246</span> </div>\n-<div class=\"line\"><a id=\"l00302\" name=\"l00302\"></a><span class=\"lineno\">  302</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00303\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00303\" name=\"l00303\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01165.html#ac6771a32b0a35687f75374cf86e703d1\">  303</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01165.html#ac6771a32b0a35687f75374cf86e703d1\">EvalStencils</a>(</div>\n-<div class=\"line\"><a id=\"l00304\" name=\"l00304\"></a><span class=\"lineno\">  304</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00305\" name=\"l00305\"></a><span class=\"lineno\">  305</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00306\" name=\"l00306\"></a><span class=\"lineno\">  306</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\">  307</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00308\" name=\"l00308\"></a><span class=\"lineno\">  308</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l00309\" name=\"l00309\"></a><span class=\"lineno\">  309</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l00310\" name=\"l00310\"></a><span class=\"lineno\">  310</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00311\" name=\"l00311\"></a><span class=\"lineno\">  311</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n-<div class=\"line\"><a id=\"l00312\" name=\"l00312\"></a><span class=\"lineno\">  312</span>        <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01165.html\">CpuEvaluator</a> *instance = NULL,</div>\n-<div class=\"line\"><a id=\"l00313\" name=\"l00313\"></a><span class=\"lineno\">  313</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l00314\" name=\"l00314\"></a><span class=\"lineno\">  314</span> </div>\n-<div class=\"line\"><a id=\"l00315\" name=\"l00315\"></a><span class=\"lineno\">  315</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00316\" name=\"l00316\"></a><span class=\"lineno\">  316</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00317\" name=\"l00317\"></a><span class=\"lineno\">  317</span> </div>\n-<div class=\"line\"><a id=\"l00318\" name=\"l00318\"></a><span class=\"lineno\">  318</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01165.html#ae8e914fc701af498ea6c6244da408b94\">EvalStencils</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00319\" name=\"l00319\"></a><span class=\"lineno\">  319</span>                            dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00320\" name=\"l00320\"></a><span class=\"lineno\">  320</span>                            duBuffer-&gt;BindCpuBuffer(),  duDesc,</div>\n-<div class=\"line\"><a id=\"l00321\" name=\"l00321\"></a><span class=\"lineno\">  321</span>                            dvBuffer-&gt;BindCpuBuffer(),  dvDesc,</div>\n-<div class=\"line\"><a id=\"l00322\" name=\"l00322\"></a><span class=\"lineno\">  322</span>                            duuBuffer-&gt;BindCpuBuffer(), duuDesc,</div>\n-<div class=\"line\"><a id=\"l00323\" name=\"l00323\"></a><span class=\"lineno\">  323</span>                            duvBuffer-&gt;BindCpuBuffer(), duvDesc,</div>\n-<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\">  324</span>                            dvvBuffer-&gt;BindCpuBuffer(), dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\">  325</span>                            &amp;stencilTable-&gt;GetSizes()[0],</div>\n-<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\">  326</span>                            &amp;stencilTable-&gt;GetOffsets()[0],</div>\n-<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\">  327</span>                            &amp;stencilTable-&gt;GetControlIndices()[0],</div>\n-<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\">  328</span>                            &amp;stencilTable-&gt;GetWeights()[0],</div>\n-<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\">  329</span>                            &amp;stencilTable-&gt;GetDuWeights()[0],</div>\n-<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\">  330</span>                            &amp;stencilTable-&gt;GetDvWeights()[0],</div>\n-<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\">  331</span>                            &amp;stencilTable-&gt;GetDuuWeights()[0],</div>\n-<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\">  332</span>                            &amp;stencilTable-&gt;GetDuvWeights()[0],</div>\n-<div class=\"line\"><a id=\"l00333\" name=\"l00333\"></a><span class=\"lineno\">  333</span>                            &amp;stencilTable-&gt;GetDvvWeights()[0],</div>\n-<div class=\"line\"><a id=\"l00334\" name=\"l00334\"></a><span class=\"lineno\">  334</span>                            <span class=\"comment\">/*start = */</span> 0,</div>\n-<div class=\"line\"><a id=\"l00335\" name=\"l00335\"></a><span class=\"lineno\">  335</span>                            <span class=\"comment\">/*end   = */</span> stencilTable-&gt;GetNumStencils());</div>\n-<div class=\"line\"><a id=\"l00336\" name=\"l00336\"></a><span class=\"lineno\">  336</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00337\" name=\"l00337\"></a><span class=\"lineno\">  337</span> </div>\n-<div class=\"line\"><a id=\"l00399\" name=\"l00399\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01165.html#a76707de0a89ab94f15ad4b2c398a2c23\">  399</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01165.html#a76707de0a89ab94f15ad4b2c398a2c23\">EvalStencils</a>(</div>\n-<div class=\"line\"><a id=\"l00400\" name=\"l00400\"></a><span class=\"lineno\">  400</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00401\" name=\"l00401\"></a><span class=\"lineno\">  401</span>        <span class=\"keywordtype\">float</span> *dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00402\" name=\"l00402\"></a><span class=\"lineno\">  402</span>        <span class=\"keywordtype\">float</span> *du,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00403\" name=\"l00403\"></a><span class=\"lineno\">  403</span>        <span class=\"keywordtype\">float</span> *dv,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00404\" name=\"l00404\"></a><span class=\"lineno\">  404</span>        <span class=\"keywordtype\">float</span> *duu,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l00405\" name=\"l00405\"></a><span class=\"lineno\">  405</span>        <span class=\"keywordtype\">float</span> *duv,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l00406\" name=\"l00406\"></a><span class=\"lineno\">  406</span>        <span class=\"keywordtype\">float</span> *dvv,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00407\" name=\"l00407\"></a><span class=\"lineno\">  407</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * sizes,</div>\n-<div class=\"line\"><a id=\"l00408\" name=\"l00408\"></a><span class=\"lineno\">  408</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * offsets,</div>\n-<div class=\"line\"><a id=\"l00409\" name=\"l00409\"></a><span class=\"lineno\">  409</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * indices,</div>\n-<div class=\"line\"><a id=\"l00410\" name=\"l00410\"></a><span class=\"lineno\">  410</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * weights,</div>\n-<div class=\"line\"><a id=\"l00411\" name=\"l00411\"></a><span class=\"lineno\">  411</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * duWeights,</div>\n-<div class=\"line\"><a id=\"l00412\" name=\"l00412\"></a><span class=\"lineno\">  412</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * dvWeights,</div>\n-<div class=\"line\"><a id=\"l00413\" name=\"l00413\"></a><span class=\"lineno\">  413</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * duuWeights,</div>\n-<div class=\"line\"><a id=\"l00414\" name=\"l00414\"></a><span class=\"lineno\">  414</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * duvWeights,</div>\n-<div class=\"line\"><a id=\"l00415\" name=\"l00415\"></a><span class=\"lineno\">  415</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * dvvWeights,</div>\n-<div class=\"line\"><a id=\"l00416\" name=\"l00416\"></a><span class=\"lineno\">  416</span>        <span class=\"keywordtype\">int</span> start, <span class=\"keywordtype\">int</span> end);</div>\n-<div class=\"line\"><a id=\"l00417\" name=\"l00417\"></a><span class=\"lineno\">  417</span> </div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>    <a class=\"code hl_enumeration\" href=\"a00913.html#a61ef2f8f765ba17f8036bcc0f0fa887b\">Sdc::Split</a> getSplitType()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _splitType; }</div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span>    <span class=\"keywordtype\">int</span> getRegularFaceSize()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _regFaceSize; }</div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>    Sdc::Options getOptions()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _options; }</div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span> </div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>    <span class=\"comment\">//  Face-varying:</span></div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span>    <span class=\"keywordtype\">int</span> getNumFVarChannels()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (<span class=\"keywordtype\">int</span>) _fvarChannels.size(); }</div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span> </div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>    FVarRefinement <span class=\"keyword\">const</span> &amp; getFVarRefinement(<span class=\"keywordtype\">int</span> c)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> *_fvarChannels[c]; }</div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span> </div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>    <span class=\"comment\">//  Options associated with the actual refinement operation, which may end up</span></div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>    <span class=\"comment\">//  quite involved if we want to allow for the refinement of data that is not</span></div>\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>    <span class=\"comment\">//  of interest to be suppressed.  For now we have:</span></div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span>    <span class=\"comment\">//      &quot;sparse&quot;: the alternative to uniform refinement, which requires that</span></div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>    <span class=\"comment\">//          components be previously selected/marked to be included.</span></div>\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span>    <span class=\"comment\">//      &quot;minimal topology&quot;: this is one that may get broken down into a finer</span></div>\n+<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>    <span class=\"comment\">//          set of options.  It suppresses &quot;full topology&quot; in the child level</span></div>\n+<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span>    <span class=\"comment\">//          and only generates what is minimally necessary for interpolation --</span></div>\n+<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span>    <span class=\"comment\">//          which requires at least the face-vertices for faces, but also the</span></div>\n+<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span>    <span class=\"comment\">//          vertex-faces for any face-varying channels present.  So it will</span></div>\n+<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span>    <span class=\"comment\">//          generate one or two of the six possible topological relations.</span></div>\n+<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span>    <span class=\"comment\">//  These are strictly controlled right now, e.g. for sparse refinement, we</span></div>\n+<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span>    <span class=\"comment\">//  currently enforce full topology at the finest level to allow for subsequent</span></div>\n+<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span>    <span class=\"comment\">//  patch construction.</span></div>\n+<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span>    <span class=\"keyword\">struct </span>Options {</div>\n+<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span>        Options() : _sparse(false),</div>\n+<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span>                    _faceVertsFirst(false),</div>\n+<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span>                    _minimalTopology(false)</div>\n+<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span>                    { }</div>\n+<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span> </div>\n+<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> _sparse          : 1;</div>\n+<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> _faceVertsFirst  : 1;</div>\n+<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> _minimalTopology : 1;</div>\n+<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\">  116</span> </div>\n+<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span>        <span class=\"comment\">//  Still under consideration:</span></div>\n+<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\">  118</span>        <span class=\"comment\">//unsigned int _childToParentMap : 1;</span></div>\n+<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span>    };</div>\n+<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span> </div>\n+<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\">  121</span>    <span class=\"keywordtype\">void</span> refine(Options options = Options());</div>\n+<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span> </div>\n+<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span>    <span class=\"keywordtype\">bool</span> hasFaceVerticesFirst()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _faceVertsFirst; }</div>\n+<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span> </div>\n+<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span>    <span class=\"comment\">//  Access to members -- some testing classes (involving vertex interpolation)</span></div>\n+<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span>    <span class=\"comment\">//  currently make use of these:</span></div>\n+<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span>    <span class=\"keywordtype\">int</span> getNumChildFacesFromFaces()<span class=\"keyword\"> const       </span>{ <span class=\"keywordflow\">return</span> _childFaceFromFaceCount; }</div>\n+<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\">  131</span>    <span class=\"keywordtype\">int</span> getNumChildEdgesFromFaces()<span class=\"keyword\"> const       </span>{ <span class=\"keywordflow\">return</span> _childEdgeFromFaceCount; }</div>\n+<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\">  132</span>    <span class=\"keywordtype\">int</span> getNumChildEdgesFromEdges()<span class=\"keyword\"> const       </span>{ <span class=\"keywordflow\">return</span> _childEdgeFromEdgeCount; }</div>\n+<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\">  133</span>    <span class=\"keywordtype\">int</span> getNumChildVerticesFromFaces()<span class=\"keyword\"> const    </span>{ <span class=\"keywordflow\">return</span> _childVertFromFaceCount; }</div>\n+<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\">  134</span>    <span class=\"keywordtype\">int</span> getNumChildVerticesFromEdges()<span class=\"keyword\"> const    </span>{ <span class=\"keywordflow\">return</span> _childVertFromEdgeCount; }</div>\n+<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\">  135</span>    <span class=\"keywordtype\">int</span> getNumChildVerticesFromVertices()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _childVertFromVertCount; }</div>\n+<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\">  136</span> </div>\n+<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\">  137</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> getFirstChildFaceFromFaces()<span class=\"keyword\"> const      </span>{ <span class=\"keywordflow\">return</span> _firstChildFaceFromFace; }</div>\n+<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\">  138</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> getFirstChildEdgeFromFaces()<span class=\"keyword\"> const      </span>{ <span class=\"keywordflow\">return</span> _firstChildEdgeFromFace; }</div>\n+<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\">  139</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> getFirstChildEdgeFromEdges()<span class=\"keyword\"> const      </span>{ <span class=\"keywordflow\">return</span> _firstChildEdgeFromEdge; }</div>\n+<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\">  140</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> getFirstChildVertexFromFaces()<span class=\"keyword\"> const    </span>{ <span class=\"keywordflow\">return</span> _firstChildVertFromFace; }</div>\n+<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\">  141</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> getFirstChildVertexFromEdges()<span class=\"keyword\"> const    </span>{ <span class=\"keywordflow\">return</span> _firstChildVertFromEdge; }</div>\n+<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> getFirstChildVertexFromVertices()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _firstChildVertFromVert; }</div>\n+<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\">  143</span> </div>\n+<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\">  144</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> getFaceChildVertex(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> f)<span class=\"keyword\"> const   </span>{ <span class=\"keywordflow\">return</span> _faceChildVertIndex[f]; }</div>\n+<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\">  145</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> getEdgeChildVertex(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> e)<span class=\"keyword\"> const   </span>{ <span class=\"keywordflow\">return</span> _edgeChildVertIndex[e]; }</div>\n+<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\">  146</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> getVertexChildVertex(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> v)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _vertChildVertIndex[v]; }</div>\n+<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\">  147</span> </div>\n+<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\">  148</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a>  getFaceChildFaces(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> parentFace) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\">  149</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a>  getFaceChildEdges(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> parentFace) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\">  150</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a>  getEdgeChildEdges(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> parentEdge) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\">  151</span> </div>\n+<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\">  152</span>    <span class=\"comment\">//  Child-to-parent relationships</span></div>\n+<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\">  153</span>    <span class=\"keywordtype\">bool</span> isChildVertexComplete(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> v)<span class=\"keyword\"> const       </span>{ <span class=\"keywordflow\">return</span> ! _childVertexTag[v]._incomplete; }</div>\n+<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\">  154</span> </div>\n+<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\">  155</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> getChildFaceParentFace(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> f)<span class=\"keyword\"> const     </span>{ <span class=\"keywordflow\">return</span> _childFaceParentIndex[f]; }</div>\n+<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\">  156</span>    <span class=\"keywordtype\">int</span>   getChildFaceInParentFace(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> f)<span class=\"keyword\"> const   </span>{ <span class=\"keywordflow\">return</span> _childFaceTag[f]._indexInParent; }</div>\n+<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\">  157</span> </div>\n+<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\">  158</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> getChildEdgeParentIndex(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> e)<span class=\"keyword\"> const    </span>{ <span class=\"keywordflow\">return</span> _childEdgeParentIndex[e]; }</div>\n+<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\">  159</span> </div>\n+<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\">  160</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> getChildVertexParentIndex(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> v)<span class=\"keyword\"> const  </span>{ <span class=\"keywordflow\">return</span> _childVertexParentIndex[v]; }</div>\n+<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\">  161</span> </div>\n+<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\">  162</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\">  163</span><span class=\"comment\">//  Modifiers intended for internal/protected use:</span></div>\n+<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\">  164</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\">  165</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\">  166</span> </div>\n+<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\">  167</span>    <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a> getFaceChildFaces(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> parentFace);</div>\n+<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\">  168</span>    <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a> getFaceChildEdges(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> parentFace);</div>\n+<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\">  169</span>    <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a> getEdgeChildEdges(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> parentEdge);</div>\n+<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\">  170</span> </div>\n+<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\">  172</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\">  173</span>    <span class=\"comment\">//  Tags have now been added per-component in Level, but there is additional need to tag</span></div>\n+<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\">  174</span>    <span class=\"comment\">//  components within Refinement -- we can&#39;t tag the parent level components for any</span></div>\n+<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\">  175</span>    <span class=\"comment\">//  refinement (in order to keep it const) and tags associated with children that are</span></div>\n+<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\">  176</span>    <span class=\"comment\">//  specific to the child-to-parent mapping may not be warranted in the child level.</span></div>\n+<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\">  178</span>    <span class=\"comment\">//  Parent tags are only required for sparse refinement.  The main property to tag is</span></div>\n+<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\">  179</span>    <span class=\"comment\">//  whether a component was selected, and so a single SparseTag is used for all three</span></div>\n+<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\">  180</span>    <span class=\"comment\">//  component types.  Tagging if a component is &quot;transitional&quot; is also useful.  This may</span></div>\n+<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\">  181</span>    <span class=\"comment\">//  only be necessary for edges but is currently packed into a mask per-edge for faces,</span></div>\n+<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\">  182</span>    <span class=\"comment\">//  which could be deferred, in which case &quot;transitional&quot; could be a single bit.</span></div>\n+<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\">  183</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\">  184</span>    <span class=\"comment\">//  Child tags are part of the child-to-parent mapping, which consists of the parent</span></div>\n+<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\">  185</span>    <span class=\"comment\">//  component index for each child component, plus a tag for the child indicating more</span></div>\n+<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\">  186</span>    <span class=\"comment\">//  about its relationship to its parent, e.g. is it completely defined, what the parent</span></div>\n+<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\">  187</span>    <span class=\"comment\">//  component type is, what is the index of the child within its parent, etc.</span></div>\n+<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\">  188</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\">  189</span>    <span class=\"keyword\">struct </span>SparseTag {</div>\n+<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\">  190</span>        SparseTag() : _selected(0), _transitional(0) { }</div>\n+<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\">  191</span> </div>\n+<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\">  192</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> _selected     : 1;  <span class=\"comment\">// component specifically selected for refinement</span></div>\n+<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\">  193</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> _transitional : 4;  <span class=\"comment\">// adjacent to a refined component (4-bits for face)</span></div>\n+<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\">  194</span>    };</div>\n+<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\">  195</span> </div>\n+<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\">  196</span>    <span class=\"keyword\">struct </span>ChildTag {</div>\n+<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\">  197</span>        ChildTag() { }</div>\n+<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\">  198</span> </div>\n+<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\">  199</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> _incomplete    : 1;  <span class=\"comment\">// incomplete neighborhood to represent limit of parent</span></div>\n+<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\">  200</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> _parentType    : 2;  <span class=\"comment\">// type of parent component:  vertex, edge or face</span></div>\n+<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\">  201</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> _indexInParent : 2;  <span class=\"comment\">// index of child wrt parent:  0-3, or iterative if N &gt; 4</span></div>\n+<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\">  202</span>    };</div>\n+<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\">  203</span> </div>\n+<div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\">  204</span>    <span class=\"comment\">//  Methods to access and modify tags:</span></div>\n+<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\">  205</span>    SparseTag <span class=\"keyword\">const</span> &amp; getParentFaceSparseTag(  <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> f)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _parentFaceTag[f]; }</div>\n+<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\">  206</span>    SparseTag <span class=\"keyword\">const</span> &amp; getParentEdgeSparseTag(  <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> e)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _parentEdgeTag[e]; }</div>\n+<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\">  207</span>    SparseTag <span class=\"keyword\">const</span> &amp; getParentVertexSparseTag(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> v)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _parentVertexTag[v]; }</div>\n+<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\">  208</span> </div>\n+<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\">  209</span>    SparseTag &amp; getParentFaceSparseTag(  <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> f) { <span class=\"keywordflow\">return</span> _parentFaceTag[f]; }</div>\n+<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\">  210</span>    SparseTag &amp; getParentEdgeSparseTag(  <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> e) { <span class=\"keywordflow\">return</span> _parentEdgeTag[e]; }</div>\n+<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\">  211</span>    SparseTag &amp; getParentVertexSparseTag(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> v) { <span class=\"keywordflow\">return</span> _parentVertexTag[v]; }</div>\n+<div class=\"line\"><a id=\"l00212\" name=\"l00212\"></a><span class=\"lineno\">  212</span> </div>\n+<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\">  213</span>    ChildTag <span class=\"keyword\">const</span> &amp; getChildFaceTag(  <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> f)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _childFaceTag[f]; }</div>\n+<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\">  214</span>    ChildTag <span class=\"keyword\">const</span> &amp; getChildEdgeTag(  <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> e)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _childEdgeTag[e]; }</div>\n+<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\">  215</span>    ChildTag <span class=\"keyword\">const</span> &amp; getChildVertexTag(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> v)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _childVertexTag[v]; }</div>\n+<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\">  216</span> </div>\n+<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\">  217</span>    ChildTag &amp; getChildFaceTag(  <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> f) { <span class=\"keywordflow\">return</span> _childFaceTag[f]; }</div>\n+<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\">  218</span>    ChildTag &amp; getChildEdgeTag(  <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> e) { <span class=\"keywordflow\">return</span> _childEdgeTag[e]; }</div>\n+<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\">  219</span>    ChildTag &amp; getChildVertexTag(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> v) { <span class=\"keywordflow\">return</span> _childVertexTag[v]; }</div>\n+<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\">  220</span> </div>\n+<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\">  221</span><span class=\"comment\">//  Remaining methods should really be protected -- for use by subclasses...</span></div>\n+<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\">  222</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\">  223</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\">  224</span>    <span class=\"comment\">//  Methods involved in constructing the parent-to-child mapping -- when the</span></div>\n+<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\">  225</span>    <span class=\"comment\">//  refinement is sparse, additional methods are needed to identify the selection:</span></div>\n+<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\">  226</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\">  227</span>    <span class=\"keywordtype\">void</span> populateParentToChildMapping();</div>\n+<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\">  228</span>    <span class=\"keywordtype\">void</span> populateParentChildIndices();</div>\n+<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\">  229</span>    <span class=\"keywordtype\">void</span> printParentToChildMapping() <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\">  230</span> </div>\n+<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\">  231</span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> allocateParentChildIndices() = 0;</div>\n+<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\">  232</span> </div>\n+<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\">  233</span>    <span class=\"comment\">//  Supporting method for sparse refinement:</span></div>\n+<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\">  234</span>    <span class=\"keywordtype\">void</span> initializeSparseSelectionTags();</div>\n+<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\">  235</span>    <span class=\"keywordtype\">void</span> markSparseChildComponentIndices();</div>\n+<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\">  236</span>    <span class=\"keywordtype\">void</span> markSparseVertexChildren();</div>\n+<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\">  237</span>    <span class=\"keywordtype\">void</span> markSparseEdgeChildren();</div>\n+<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\">  238</span> </div>\n+<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\">  239</span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> markSparseFaceChildren() = 0;</div>\n+<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\">  240</span> </div>\n+<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\">  241</span>    <span class=\"keywordtype\">void</span> initializeChildComponentCounts();</div>\n+<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\">  242</span> </div>\n+<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\">  243</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\">  244</span>    <span class=\"comment\">//  Methods involved in constructing the child-to-parent mapping:</span></div>\n+<div class=\"line\"><a id=\"l00245\" name=\"l00245\"></a><span class=\"lineno\">  245</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\">  246</span>    <span class=\"keywordtype\">void</span> populateChildToParentMapping();</div>\n+<div class=\"line\"><a id=\"l00247\" name=\"l00247\"></a><span class=\"lineno\">  247</span> </div>\n+<div class=\"line\"><a id=\"l00248\" name=\"l00248\"></a><span class=\"lineno\">  248</span>    <span class=\"keywordtype\">void</span> populateFaceParentVectors(ChildTag <span class=\"keyword\">const</span> initialChildTags[2][4]);</div>\n+<div class=\"line\"><a id=\"l00249\" name=\"l00249\"></a><span class=\"lineno\">  249</span>    <span class=\"keywordtype\">void</span> populateFaceParentFromParentFaces(ChildTag <span class=\"keyword\">const</span> initialChildTags[2][4]);</div>\n+<div class=\"line\"><a id=\"l00250\" name=\"l00250\"></a><span class=\"lineno\">  250</span> </div>\n+<div class=\"line\"><a id=\"l00251\" name=\"l00251\"></a><span class=\"lineno\">  251</span>    <span class=\"keywordtype\">void</span> populateEdgeParentVectors(ChildTag <span class=\"keyword\">const</span> initialChildTags[2][4]);</div>\n+<div class=\"line\"><a id=\"l00252\" name=\"l00252\"></a><span class=\"lineno\">  252</span>    <span class=\"keywordtype\">void</span> populateEdgeParentFromParentFaces(ChildTag <span class=\"keyword\">const</span> initialChildTags[2][4]);</div>\n+<div class=\"line\"><a id=\"l00253\" name=\"l00253\"></a><span class=\"lineno\">  253</span>    <span class=\"keywordtype\">void</span> populateEdgeParentFromParentEdges(ChildTag <span class=\"keyword\">const</span> initialChildTags[2][4]);</div>\n+<div class=\"line\"><a id=\"l00254\" name=\"l00254\"></a><span class=\"lineno\">  254</span> </div>\n+<div class=\"line\"><a id=\"l00255\" name=\"l00255\"></a><span class=\"lineno\">  255</span>    <span class=\"keywordtype\">void</span> populateVertexParentVectors(ChildTag <span class=\"keyword\">const</span> initialChildTags[2][4]);</div>\n+<div class=\"line\"><a id=\"l00256\" name=\"l00256\"></a><span class=\"lineno\">  256</span>    <span class=\"keywordtype\">void</span> populateVertexParentFromParentFaces(ChildTag <span class=\"keyword\">const</span> initialChildTags[2][4]);</div>\n+<div class=\"line\"><a id=\"l00257\" name=\"l00257\"></a><span class=\"lineno\">  257</span>    <span class=\"keywordtype\">void</span> populateVertexParentFromParentEdges(ChildTag <span class=\"keyword\">const</span> initialChildTags[2][4]);</div>\n+<div class=\"line\"><a id=\"l00258\" name=\"l00258\"></a><span class=\"lineno\">  258</span>    <span class=\"keywordtype\">void</span> populateVertexParentFromParentVertices(ChildTag <span class=\"keyword\">const</span> initialChildTags[2][4]);</div>\n+<div class=\"line\"><a id=\"l00259\" name=\"l00259\"></a><span class=\"lineno\">  259</span> </div>\n+<div class=\"line\"><a id=\"l00260\" name=\"l00260\"></a><span class=\"lineno\">  260</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00261\" name=\"l00261\"></a><span class=\"lineno\">  261</span>    <span class=\"comment\">//  Methods involved in propagating component tags from parent to child:</span></div>\n+<div class=\"line\"><a id=\"l00262\" name=\"l00262\"></a><span class=\"lineno\">  262</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00263\" name=\"l00263\"></a><span class=\"lineno\">  263</span>    <span class=\"keywordtype\">void</span> propagateComponentTags();</div>\n+<div class=\"line\"><a id=\"l00264\" name=\"l00264\"></a><span class=\"lineno\">  264</span> </div>\n+<div class=\"line\"><a id=\"l00265\" name=\"l00265\"></a><span class=\"lineno\">  265</span>    <span class=\"keywordtype\">void</span> populateFaceTagVectors();</div>\n+<div class=\"line\"><a id=\"l00266\" name=\"l00266\"></a><span class=\"lineno\">  266</span>    <span class=\"keywordtype\">void</span> populateFaceTagsFromParentFaces();</div>\n+<div class=\"line\"><a id=\"l00267\" name=\"l00267\"></a><span class=\"lineno\">  267</span> </div>\n+<div class=\"line\"><a id=\"l00268\" name=\"l00268\"></a><span class=\"lineno\">  268</span>    <span class=\"keywordtype\">void</span> populateEdgeTagVectors();</div>\n+<div class=\"line\"><a id=\"l00269\" name=\"l00269\"></a><span class=\"lineno\">  269</span>    <span class=\"keywordtype\">void</span> populateEdgeTagsFromParentFaces();</div>\n+<div class=\"line\"><a id=\"l00270\" name=\"l00270\"></a><span class=\"lineno\">  270</span>    <span class=\"keywordtype\">void</span> populateEdgeTagsFromParentEdges();</div>\n+<div class=\"line\"><a id=\"l00271\" name=\"l00271\"></a><span class=\"lineno\">  271</span> </div>\n+<div class=\"line\"><a id=\"l00272\" name=\"l00272\"></a><span class=\"lineno\">  272</span>    <span class=\"keywordtype\">void</span> populateVertexTagVectors();</div>\n+<div class=\"line\"><a id=\"l00273\" name=\"l00273\"></a><span class=\"lineno\">  273</span>    <span class=\"keywordtype\">void</span> populateVertexTagsFromParentFaces();</div>\n+<div class=\"line\"><a id=\"l00274\" name=\"l00274\"></a><span class=\"lineno\">  274</span>    <span class=\"keywordtype\">void</span> populateVertexTagsFromParentEdges();</div>\n+<div class=\"line\"><a id=\"l00275\" name=\"l00275\"></a><span class=\"lineno\">  275</span>    <span class=\"keywordtype\">void</span> populateVertexTagsFromParentVertices();</div>\n+<div class=\"line\"><a id=\"l00276\" name=\"l00276\"></a><span class=\"lineno\">  276</span> </div>\n+<div class=\"line\"><a id=\"l00277\" name=\"l00277\"></a><span class=\"lineno\">  277</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00278\" name=\"l00278\"></a><span class=\"lineno\">  278</span>    <span class=\"comment\">//  Methods (and types) involved in subdividing the topology -- though not</span></div>\n+<div class=\"line\"><a id=\"l00279\" name=\"l00279\"></a><span class=\"lineno\">  279</span>    <span class=\"comment\">//  fully exploited, any subset of the 6 relations can be generated:</span></div>\n+<div class=\"line\"><a id=\"l00280\" name=\"l00280\"></a><span class=\"lineno\">  280</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00281\" name=\"l00281\"></a><span class=\"lineno\">  281</span>    <span class=\"keyword\">struct </span>Relations {</div>\n+<div class=\"line\"><a id=\"l00282\" name=\"l00282\"></a><span class=\"lineno\">  282</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span>   _faceVertices : 1;</div>\n+<div class=\"line\"><a id=\"l00283\" name=\"l00283\"></a><span class=\"lineno\">  283</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span>   _faceEdges    : 1;</div>\n+<div class=\"line\"><a id=\"l00284\" name=\"l00284\"></a><span class=\"lineno\">  284</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span>   _edgeVertices : 1;</div>\n+<div class=\"line\"><a id=\"l00285\" name=\"l00285\"></a><span class=\"lineno\">  285</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span>   _edgeFaces    : 1;</div>\n+<div class=\"line\"><a id=\"l00286\" name=\"l00286\"></a><span class=\"lineno\">  286</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span>   _vertexFaces  : 1;</div>\n+<div class=\"line\"><a id=\"l00287\" name=\"l00287\"></a><span class=\"lineno\">  287</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span>   _vertexEdges  : 1;</div>\n+<div class=\"line\"><a id=\"l00288\" name=\"l00288\"></a><span class=\"lineno\">  288</span> </div>\n+<div class=\"line\"><a id=\"l00289\" name=\"l00289\"></a><span class=\"lineno\">  289</span>        <span class=\"keywordtype\">void</span> setAll(<span class=\"keywordtype\">bool</span> enable) {</div>\n+<div class=\"line\"><a id=\"l00290\" name=\"l00290\"></a><span class=\"lineno\">  290</span>            _faceVertices = enable;</div>\n+<div class=\"line\"><a id=\"l00291\" name=\"l00291\"></a><span class=\"lineno\">  291</span>            _faceEdges    = enable;</div>\n+<div class=\"line\"><a id=\"l00292\" name=\"l00292\"></a><span class=\"lineno\">  292</span>            _edgeVertices = enable;</div>\n+<div class=\"line\"><a id=\"l00293\" name=\"l00293\"></a><span class=\"lineno\">  293</span>            _edgeFaces    = enable;</div>\n+<div class=\"line\"><a id=\"l00294\" name=\"l00294\"></a><span class=\"lineno\">  294</span>            _vertexFaces  = enable;</div>\n+<div class=\"line\"><a id=\"l00295\" name=\"l00295\"></a><span class=\"lineno\">  295</span>            _vertexEdges  = enable;</div>\n+<div class=\"line\"><a id=\"l00296\" name=\"l00296\"></a><span class=\"lineno\">  296</span>        }</div>\n+<div class=\"line\"><a id=\"l00297\" name=\"l00297\"></a><span class=\"lineno\">  297</span>    };</div>\n+<div class=\"line\"><a id=\"l00298\" name=\"l00298\"></a><span class=\"lineno\">  298</span> </div>\n+<div class=\"line\"><a id=\"l00299\" name=\"l00299\"></a><span class=\"lineno\">  299</span>    <span class=\"keywordtype\">void</span> subdivideTopology(Relations <span class=\"keyword\">const</span>&amp; relationsToSubdivide);</div>\n+<div class=\"line\"><a id=\"l00300\" name=\"l00300\"></a><span class=\"lineno\">  300</span> </div>\n+<div class=\"line\"><a id=\"l00301\" name=\"l00301\"></a><span class=\"lineno\">  301</span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> populateFaceVertexRelation() = 0;</div>\n+<div class=\"line\"><a id=\"l00302\" name=\"l00302\"></a><span class=\"lineno\">  302</span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> populateFaceEdgeRelation() = 0;</div>\n+<div class=\"line\"><a id=\"l00303\" name=\"l00303\"></a><span class=\"lineno\">  303</span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> populateEdgeVertexRelation() = 0;</div>\n+<div class=\"line\"><a id=\"l00304\" name=\"l00304\"></a><span class=\"lineno\">  304</span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> populateEdgeFaceRelation() = 0;</div>\n+<div class=\"line\"><a id=\"l00305\" name=\"l00305\"></a><span class=\"lineno\">  305</span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> populateVertexFaceRelation() = 0;</div>\n+<div class=\"line\"><a id=\"l00306\" name=\"l00306\"></a><span class=\"lineno\">  306</span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> populateVertexEdgeRelation() = 0;</div>\n+<div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\">  307</span> </div>\n+<div class=\"line\"><a id=\"l00308\" name=\"l00308\"></a><span class=\"lineno\">  308</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00309\" name=\"l00309\"></a><span class=\"lineno\">  309</span>    <span class=\"comment\">//  Methods involved in subdividing and inspecting sharpness values:</span></div>\n+<div class=\"line\"><a id=\"l00310\" name=\"l00310\"></a><span class=\"lineno\">  310</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00311\" name=\"l00311\"></a><span class=\"lineno\">  311</span>    <span class=\"keywordtype\">void</span> subdivideSharpnessValues();</div>\n+<div class=\"line\"><a id=\"l00312\" name=\"l00312\"></a><span class=\"lineno\">  312</span> </div>\n+<div class=\"line\"><a id=\"l00313\" name=\"l00313\"></a><span class=\"lineno\">  313</span>    <span class=\"keywordtype\">void</span> subdivideVertexSharpness();</div>\n+<div class=\"line\"><a id=\"l00314\" name=\"l00314\"></a><span class=\"lineno\">  314</span>    <span class=\"keywordtype\">void</span> subdivideEdgeSharpness();</div>\n+<div class=\"line\"><a id=\"l00315\" name=\"l00315\"></a><span class=\"lineno\">  315</span>    <span class=\"keywordtype\">void</span> reclassifySemisharpVertices();</div>\n+<div class=\"line\"><a id=\"l00316\" name=\"l00316\"></a><span class=\"lineno\">  316</span> </div>\n+<div class=\"line\"><a id=\"l00317\" name=\"l00317\"></a><span class=\"lineno\">  317</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00318\" name=\"l00318\"></a><span class=\"lineno\">  318</span>    <span class=\"comment\">//  Methods involved in subdividing face-varying topology:</span></div>\n+<div class=\"line\"><a id=\"l00319\" name=\"l00319\"></a><span class=\"lineno\">  319</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00320\" name=\"l00320\"></a><span class=\"lineno\">  320</span>    <span class=\"keywordtype\">void</span> subdivideFVarChannels();</div>\n+<div class=\"line\"><a id=\"l00321\" name=\"l00321\"></a><span class=\"lineno\">  321</span> </div>\n+<div class=\"line\"><a id=\"l00322\" name=\"l00322\"></a><span class=\"lineno\">  322</span><span class=\"keyword\">protected</span>:</div>\n+<div class=\"line\"><a id=\"l00323\" name=\"l00323\"></a><span class=\"lineno\">  323</span>    <span class=\"comment\">// A debug method of Level prints a Refinement (should really change this)</span></div>\n+<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\">  324</span>    <span class=\"keyword\">friend</span> <span class=\"keywordtype\">void</span> Level::print(<span class=\"keyword\">const</span> Refinement *) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\">  325</span> </div>\n+<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\">  326</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\">  327</span>    <span class=\"comment\">//  Data members -- the logical grouping of some of these (and methods that make use</span></div>\n+<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\">  328</span>    <span class=\"comment\">//  of them) may lead to grouping them into a few utility classes or structs...</span></div>\n+<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\">  329</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\">  330</span> </div>\n+<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\">  331</span>    <span class=\"comment\">//  Defined on construction:</span></div>\n+<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\">  332</span>    Level <span class=\"keyword\">const</span> * _parent;</div>\n+<div class=\"line\"><a id=\"l00333\" name=\"l00333\"></a><span class=\"lineno\">  333</span>    Level *       _child;</div>\n+<div class=\"line\"><a id=\"l00334\" name=\"l00334\"></a><span class=\"lineno\">  334</span>    Sdc::Options  _options;</div>\n+<div class=\"line\"><a id=\"l00335\" name=\"l00335\"></a><span class=\"lineno\">  335</span> </div>\n+<div class=\"line\"><a id=\"l00336\" name=\"l00336\"></a><span class=\"lineno\">  336</span>    <span class=\"comment\">//  Defined by the subclass:</span></div>\n+<div class=\"line\"><a id=\"l00337\" name=\"l00337\"></a><span class=\"lineno\">  337</span>    <a class=\"code hl_enumeration\" href=\"a00913.html#a61ef2f8f765ba17f8036bcc0f0fa887b\">Sdc::Split</a> _splitType;</div>\n+<div class=\"line\"><a id=\"l00338\" name=\"l00338\"></a><span class=\"lineno\">  338</span>    <span class=\"keywordtype\">int</span>        _regFaceSize;</div>\n+<div class=\"line\"><a id=\"l00339\" name=\"l00339\"></a><span class=\"lineno\">  339</span> </div>\n+<div class=\"line\"><a id=\"l00340\" name=\"l00340\"></a><span class=\"lineno\">  340</span>    <span class=\"comment\">//  Determined by the refinement options:</span></div>\n+<div class=\"line\"><a id=\"l00341\" name=\"l00341\"></a><span class=\"lineno\">  341</span>    <span class=\"keywordtype\">bool</span> _uniform;</div>\n+<div class=\"line\"><a id=\"l00342\" name=\"l00342\"></a><span class=\"lineno\">  342</span>    <span class=\"keywordtype\">bool</span> _faceVertsFirst;</div>\n+<div class=\"line\"><a id=\"l00343\" name=\"l00343\"></a><span class=\"lineno\">  343</span> </div>\n+<div class=\"line\"><a id=\"l00344\" name=\"l00344\"></a><span class=\"lineno\">  344</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00345\" name=\"l00345\"></a><span class=\"lineno\">  345</span>    <span class=\"comment\">//  Inventory and ordering of the types of child components:</span></div>\n+<div class=\"line\"><a id=\"l00346\" name=\"l00346\"></a><span class=\"lineno\">  346</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00347\" name=\"l00347\"></a><span class=\"lineno\">  347</span>    <span class=\"keywordtype\">int</span> _childFaceFromFaceCount;  <span class=\"comment\">// arguably redundant (all faces originate from faces)</span></div>\n+<div class=\"line\"><a id=\"l00348\" name=\"l00348\"></a><span class=\"lineno\">  348</span>    <span class=\"keywordtype\">int</span> _childEdgeFromFaceCount;</div>\n+<div class=\"line\"><a id=\"l00349\" name=\"l00349\"></a><span class=\"lineno\">  349</span>    <span class=\"keywordtype\">int</span> _childEdgeFromEdgeCount;</div>\n+<div class=\"line\"><a id=\"l00350\" name=\"l00350\"></a><span class=\"lineno\">  350</span>    <span class=\"keywordtype\">int</span> _childVertFromFaceCount;</div>\n+<div class=\"line\"><a id=\"l00351\" name=\"l00351\"></a><span class=\"lineno\">  351</span>    <span class=\"keywordtype\">int</span> _childVertFromEdgeCount;</div>\n+<div class=\"line\"><a id=\"l00352\" name=\"l00352\"></a><span class=\"lineno\">  352</span>    <span class=\"keywordtype\">int</span> _childVertFromVertCount;</div>\n+<div class=\"line\"><a id=\"l00353\" name=\"l00353\"></a><span class=\"lineno\">  353</span> </div>\n+<div class=\"line\"><a id=\"l00354\" name=\"l00354\"></a><span class=\"lineno\">  354</span>    <span class=\"keywordtype\">int</span> _firstChildFaceFromFace;  <span class=\"comment\">// arguably redundant (all faces originate from faces)</span></div>\n+<div class=\"line\"><a id=\"l00355\" name=\"l00355\"></a><span class=\"lineno\">  355</span>    <span class=\"keywordtype\">int</span> _firstChildEdgeFromFace;</div>\n+<div class=\"line\"><a id=\"l00356\" name=\"l00356\"></a><span class=\"lineno\">  356</span>    <span class=\"keywordtype\">int</span> _firstChildEdgeFromEdge;</div>\n+<div class=\"line\"><a id=\"l00357\" name=\"l00357\"></a><span class=\"lineno\">  357</span>    <span class=\"keywordtype\">int</span> _firstChildVertFromFace;</div>\n+<div class=\"line\"><a id=\"l00358\" name=\"l00358\"></a><span class=\"lineno\">  358</span>    <span class=\"keywordtype\">int</span> _firstChildVertFromEdge;</div>\n+<div class=\"line\"><a id=\"l00359\" name=\"l00359\"></a><span class=\"lineno\">  359</span>    <span class=\"keywordtype\">int</span> _firstChildVertFromVert;</div>\n+<div class=\"line\"><a id=\"l00360\" name=\"l00360\"></a><span class=\"lineno\">  360</span> </div>\n+<div class=\"line\"><a id=\"l00361\" name=\"l00361\"></a><span class=\"lineno\">  361</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00362\" name=\"l00362\"></a><span class=\"lineno\">  362</span>    <span class=\"comment\">//  The parent-to-child mapping:</span></div>\n+<div class=\"line\"><a id=\"l00363\" name=\"l00363\"></a><span class=\"lineno\">  363</span>    <span class=\"comment\">//      These are vectors sized according to the number of parent components (and</span></div>\n+<div class=\"line\"><a id=\"l00364\" name=\"l00364\"></a><span class=\"lineno\">  364</span>    <span class=\"comment\">//  their topology) that contain references/indices to the child components that</span></div>\n+<div class=\"line\"><a id=\"l00365\" name=\"l00365\"></a><span class=\"lineno\">  365</span>    <span class=\"comment\">//  result from them by refinement.  When refinement is sparse, parent components</span></div>\n+<div class=\"line\"><a id=\"l00366\" name=\"l00366\"></a><span class=\"lineno\">  366</span>    <span class=\"comment\">//  that have not spawned all child components will have their missing children</span></div>\n+<div class=\"line\"><a id=\"l00367\" name=\"l00367\"></a><span class=\"lineno\">  367</span>    <span class=\"comment\">//  marked as invalid.</span></div>\n+<div class=\"line\"><a id=\"l00368\" name=\"l00368\"></a><span class=\"lineno\">  368</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00369\" name=\"l00369\"></a><span class=\"lineno\">  369</span>    <span class=\"comment\">//  NOTE the &quot;Array&quot; members here.  Often vectors within the Level can be shared</span></div>\n+<div class=\"line\"><a id=\"l00370\" name=\"l00370\"></a><span class=\"lineno\">  370</span>    <span class=\"comment\">//  with the Refinement, and an Array instance is used to do so.  If not shared</span></div>\n+<div class=\"line\"><a id=\"l00371\" name=\"l00371\"></a><span class=\"lineno\">  371</span>    <span class=\"comment\">//  the subclass just initializes the Array members after allocating its own local</span></div>\n+<div class=\"line\"><a id=\"l00372\" name=\"l00372\"></a><span class=\"lineno\">  372</span>    <span class=\"comment\">//  vector members.</span></div>\n+<div class=\"line\"><a id=\"l00373\" name=\"l00373\"></a><span class=\"lineno\">  373</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00374\" name=\"l00374\"></a><span class=\"lineno\">  374</span>    <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a> _faceChildFaceCountsAndOffsets;</div>\n+<div class=\"line\"><a id=\"l00375\" name=\"l00375\"></a><span class=\"lineno\">  375</span>    <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a> _faceChildEdgeCountsAndOffsets;</div>\n+<div class=\"line\"><a id=\"l00376\" name=\"l00376\"></a><span class=\"lineno\">  376</span> </div>\n+<div class=\"line\"><a id=\"l00377\" name=\"l00377\"></a><span class=\"lineno\">  377</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a5ce395d26317168dcf613c15181476ed\">IndexVector</a> _faceChildFaceIndices;  <span class=\"comment\">// *cannot* always use face-vert counts/offsets</span></div>\n+<div class=\"line\"><a id=\"l00378\" name=\"l00378\"></a><span class=\"lineno\">  378</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a5ce395d26317168dcf613c15181476ed\">IndexVector</a> _faceChildEdgeIndices;  <span class=\"comment\">// can use face-vert counts/offsets</span></div>\n+<div class=\"line\"><a id=\"l00379\" name=\"l00379\"></a><span class=\"lineno\">  379</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a5ce395d26317168dcf613c15181476ed\">IndexVector</a> _faceChildVertIndex;</div>\n+<div class=\"line\"><a id=\"l00380\" name=\"l00380\"></a><span class=\"lineno\">  380</span> </div>\n+<div class=\"line\"><a id=\"l00381\" name=\"l00381\"></a><span class=\"lineno\">  381</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a5ce395d26317168dcf613c15181476ed\">IndexVector</a> _edgeChildEdgeIndices;  <span class=\"comment\">// trivial/corresponding pair for each</span></div>\n+<div class=\"line\"><a id=\"l00382\" name=\"l00382\"></a><span class=\"lineno\">  382</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a5ce395d26317168dcf613c15181476ed\">IndexVector</a> _edgeChildVertIndex;</div>\n+<div class=\"line\"><a id=\"l00383\" name=\"l00383\"></a><span class=\"lineno\">  383</span> </div>\n+<div class=\"line\"><a id=\"l00384\" name=\"l00384\"></a><span class=\"lineno\">  384</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a5ce395d26317168dcf613c15181476ed\">IndexVector</a> _vertChildVertIndex;</div>\n+<div class=\"line\"><a id=\"l00385\" name=\"l00385\"></a><span class=\"lineno\">  385</span> </div>\n+<div class=\"line\"><a id=\"l00386\" name=\"l00386\"></a><span class=\"lineno\">  386</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00387\" name=\"l00387\"></a><span class=\"lineno\">  387</span>    <span class=\"comment\">//  The child-to-parent mapping:</span></div>\n+<div class=\"line\"><a id=\"l00388\" name=\"l00388\"></a><span class=\"lineno\">  388</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00389\" name=\"l00389\"></a><span class=\"lineno\">  389</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a5ce395d26317168dcf613c15181476ed\">IndexVector</a> _childFaceParentIndex;</div>\n+<div class=\"line\"><a id=\"l00390\" name=\"l00390\"></a><span class=\"lineno\">  390</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a5ce395d26317168dcf613c15181476ed\">IndexVector</a> _childEdgeParentIndex;</div>\n+<div class=\"line\"><a id=\"l00391\" name=\"l00391\"></a><span class=\"lineno\">  391</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a5ce395d26317168dcf613c15181476ed\">IndexVector</a> _childVertexParentIndex;</div>\n+<div class=\"line\"><a id=\"l00392\" name=\"l00392\"></a><span class=\"lineno\">  392</span> </div>\n+<div class=\"line\"><a id=\"l00393\" name=\"l00393\"></a><span class=\"lineno\">  393</span>    std::vector&lt;ChildTag&gt; _childFaceTag;</div>\n+<div class=\"line\"><a id=\"l00394\" name=\"l00394\"></a><span class=\"lineno\">  394</span>    std::vector&lt;ChildTag&gt; _childEdgeTag;</div>\n+<div class=\"line\"><a id=\"l00395\" name=\"l00395\"></a><span class=\"lineno\">  395</span>    std::vector&lt;ChildTag&gt; _childVertexTag;</div>\n+<div class=\"line\"><a id=\"l00396\" name=\"l00396\"></a><span class=\"lineno\">  396</span> </div>\n+<div class=\"line\"><a id=\"l00397\" name=\"l00397\"></a><span class=\"lineno\">  397</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00398\" name=\"l00398\"></a><span class=\"lineno\">  398</span>    <span class=\"comment\">//  Tags for sparse selection of components:</span></div>\n+<div class=\"line\"><a id=\"l00399\" name=\"l00399\"></a><span class=\"lineno\">  399</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00400\" name=\"l00400\"></a><span class=\"lineno\">  400</span>    std::vector&lt;SparseTag&gt; _parentFaceTag;</div>\n+<div class=\"line\"><a id=\"l00401\" name=\"l00401\"></a><span class=\"lineno\">  401</span>    std::vector&lt;SparseTag&gt; _parentEdgeTag;</div>\n+<div class=\"line\"><a id=\"l00402\" name=\"l00402\"></a><span class=\"lineno\">  402</span>    std::vector&lt;SparseTag&gt; _parentVertexTag;</div>\n+<div class=\"line\"><a id=\"l00403\" name=\"l00403\"></a><span class=\"lineno\">  403</span> </div>\n+<div class=\"line\"><a id=\"l00404\" name=\"l00404\"></a><span class=\"lineno\">  404</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00405\" name=\"l00405\"></a><span class=\"lineno\">  405</span>    <span class=\"comment\">//  Refinement data for face-varying channels present in the Levels being refined:</span></div>\n+<div class=\"line\"><a id=\"l00406\" name=\"l00406\"></a><span class=\"lineno\">  406</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00407\" name=\"l00407\"></a><span class=\"lineno\">  407</span>    std::vector&lt;FVarRefinement*&gt; _fvarChannels;</div>\n+<div class=\"line\"><a id=\"l00408\" name=\"l00408\"></a><span class=\"lineno\">  408</span>};</div>\n+<div class=\"line\"><a id=\"l00409\" name=\"l00409\"></a><span class=\"lineno\">  409</span> </div>\n+<div class=\"line\"><a id=\"l00410\" name=\"l00410\"></a><span class=\"lineno\">  410</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a></div>\n+<div class=\"line\"><a id=\"l00411\" name=\"l00411\"></a><span class=\"lineno\">  411</span>Refinement::getFaceChildFaces(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> parentFace)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00412\" name=\"l00412\"></a><span class=\"lineno\">  412</span> </div>\n+<div class=\"line\"><a id=\"l00413\" name=\"l00413\"></a><span class=\"lineno\">  413</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a>(&amp;_faceChildFaceIndices[_faceChildFaceCountsAndOffsets[2*parentFace+1]],</div>\n+<div class=\"line\"><a id=\"l00414\" name=\"l00414\"></a><span class=\"lineno\">  414</span>                                             _faceChildFaceCountsAndOffsets[2*parentFace]);</div>\n+<div class=\"line\"><a id=\"l00415\" name=\"l00415\"></a><span class=\"lineno\">  415</span>}</div>\n+<div class=\"line\"><a id=\"l00416\" name=\"l00416\"></a><span class=\"lineno\">  416</span> </div>\n+<div class=\"line\"><a id=\"l00417\" name=\"l00417\"></a><span class=\"lineno\">  417</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a></div>\n+<div class=\"line\"><a id=\"l00418\" name=\"l00418\"></a><span class=\"lineno\">  418</span>Refinement::getFaceChildFaces(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> parentFace) {</div>\n+<div class=\"line\"><a id=\"l00419\" name=\"l00419\"></a><span class=\"lineno\">  419</span> </div>\n+<div class=\"line\"><a id=\"l00420\" name=\"l00420\"></a><span class=\"lineno\">  420</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a>(&amp;_faceChildFaceIndices[_faceChildFaceCountsAndOffsets[2*parentFace+1]],</div>\n+<div class=\"line\"><a id=\"l00421\" name=\"l00421\"></a><span class=\"lineno\">  421</span>                                             _faceChildFaceCountsAndOffsets[2*parentFace]);</div>\n+<div class=\"line\"><a id=\"l00422\" name=\"l00422\"></a><span class=\"lineno\">  422</span>}</div>\n <div class=\"line\"><a id=\"l00423\" name=\"l00423\"></a><span class=\"lineno\">  423</span> </div>\n-<div class=\"line\"><a id=\"l00452\" name=\"l00452\"></a><span class=\"lineno\">  452</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l00453\" name=\"l00453\"></a><span class=\"lineno\">  453</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00454\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00454\" name=\"l00454\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01165.html#a833e2ee19e5dd9018607512aa8d32dbe\">  454</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01165.html#a833e2ee19e5dd9018607512aa8d32dbe\">EvalPatches</a>(</div>\n-<div class=\"line\"><a id=\"l00455\" name=\"l00455\"></a><span class=\"lineno\">  455</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00456\" name=\"l00456\"></a><span class=\"lineno\">  456</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00457\" name=\"l00457\"></a><span class=\"lineno\">  457</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00458\" name=\"l00458\"></a><span class=\"lineno\">  458</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l00459\" name=\"l00459\"></a><span class=\"lineno\">  459</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l00460\" name=\"l00460\"></a><span class=\"lineno\">  460</span>        <a class=\"code hl_class\" href=\"a01165.html\">CpuEvaluator</a> <span class=\"keyword\">const</span> *instance = NULL,</div>\n-<div class=\"line\"><a id=\"l00461\" name=\"l00461\"></a><span class=\"lineno\">  461</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l00462\" name=\"l00462\"></a><span class=\"lineno\">  462</span> </div>\n-<div class=\"line\"><a id=\"l00463\" name=\"l00463\"></a><span class=\"lineno\">  463</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00464\" name=\"l00464\"></a><span class=\"lineno\">  464</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00465\" name=\"l00465\"></a><span class=\"lineno\">  465</span> </div>\n-<div class=\"line\"><a id=\"l00466\" name=\"l00466\"></a><span class=\"lineno\">  466</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01165.html#a833e2ee19e5dd9018607512aa8d32dbe\">EvalPatches</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00467\" name=\"l00467\"></a><span class=\"lineno\">  467</span>                           dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00468\" name=\"l00468\"></a><span class=\"lineno\">  468</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00469\" name=\"l00469\"></a><span class=\"lineno\">  469</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a>*)patchCoords-&gt;BindCpuBuffer(),</div>\n-<div class=\"line\"><a id=\"l00470\" name=\"l00470\"></a><span class=\"lineno\">  470</span>                           patchTable-&gt;GetPatchArrayBuffer(),</div>\n-<div class=\"line\"><a id=\"l00471\" name=\"l00471\"></a><span class=\"lineno\">  471</span>                           patchTable-&gt;GetPatchIndexBuffer(),</div>\n-<div class=\"line\"><a id=\"l00472\" name=\"l00472\"></a><span class=\"lineno\">  472</span>                           patchTable-&gt;GetPatchParamBuffer());</div>\n-<div class=\"line\"><a id=\"l00473\" name=\"l00473\"></a><span class=\"lineno\">  473</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00474\" name=\"l00474\"></a><span class=\"lineno\">  474</span> </div>\n-<div class=\"line\"><a id=\"l00515\" name=\"l00515\"></a><span class=\"lineno\">  515</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l00516\" name=\"l00516\"></a><span class=\"lineno\">  516</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00517\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00517\" name=\"l00517\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01165.html#aadc6952ecef0e1cddda06e3c9d0a252a\">  517</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01165.html#aadc6952ecef0e1cddda06e3c9d0a252a\">EvalPatches</a>(</div>\n-<div class=\"line\"><a id=\"l00518\" name=\"l00518\"></a><span class=\"lineno\">  518</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00519\" name=\"l00519\"></a><span class=\"lineno\">  519</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00520\" name=\"l00520\"></a><span class=\"lineno\">  520</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00521\" name=\"l00521\"></a><span class=\"lineno\">  521</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00522\" name=\"l00522\"></a><span class=\"lineno\">  522</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00523\" name=\"l00523\"></a><span class=\"lineno\">  523</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l00524\" name=\"l00524\"></a><span class=\"lineno\">  524</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l00525\" name=\"l00525\"></a><span class=\"lineno\">  525</span>        <a class=\"code hl_class\" href=\"a01165.html\">CpuEvaluator</a> <span class=\"keyword\">const</span> *instance = NULL,</div>\n-<div class=\"line\"><a id=\"l00526\" name=\"l00526\"></a><span class=\"lineno\">  526</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l00527\" name=\"l00527\"></a><span class=\"lineno\">  527</span> </div>\n-<div class=\"line\"><a id=\"l00528\" name=\"l00528\"></a><span class=\"lineno\">  528</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00529\" name=\"l00529\"></a><span class=\"lineno\">  529</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00530\" name=\"l00530\"></a><span class=\"lineno\">  530</span> </div>\n-<div class=\"line\"><a id=\"l00531\" name=\"l00531\"></a><span class=\"lineno\">  531</span>        <span class=\"comment\">// XXX: PatchCoords is somewhat abusing vertex primvar buffer interop.</span></div>\n-<div class=\"line\"><a id=\"l00532\" name=\"l00532\"></a><span class=\"lineno\">  532</span>        <span class=\"comment\">//      ideally all buffer classes should have templated by datatype</span></div>\n-<div class=\"line\"><a id=\"l00533\" name=\"l00533\"></a><span class=\"lineno\">  533</span>        <span class=\"comment\">//      so that downcast isn&#39;t needed there.</span></div>\n-<div class=\"line\"><a id=\"l00534\" name=\"l00534\"></a><span class=\"lineno\">  534</span>        <span class=\"comment\">//      (e.g. Osd::CpuBuffer&lt;PatchCoord&gt; )</span></div>\n-<div class=\"line\"><a id=\"l00535\" name=\"l00535\"></a><span class=\"lineno\">  535</span>        <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00536\" name=\"l00536\"></a><span class=\"lineno\">  536</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01165.html#a833e2ee19e5dd9018607512aa8d32dbe\">EvalPatches</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00537\" name=\"l00537\"></a><span class=\"lineno\">  537</span>                           dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00538\" name=\"l00538\"></a><span class=\"lineno\">  538</span>                           duBuffer-&gt;BindCpuBuffer(),  duDesc,</div>\n-<div class=\"line\"><a id=\"l00539\" name=\"l00539\"></a><span class=\"lineno\">  539</span>                           dvBuffer-&gt;BindCpuBuffer(),  dvDesc,</div>\n-<div class=\"line\"><a id=\"l00540\" name=\"l00540\"></a><span class=\"lineno\">  540</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00541\" name=\"l00541\"></a><span class=\"lineno\">  541</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a>*)patchCoords-&gt;BindCpuBuffer(),</div>\n-<div class=\"line\"><a id=\"l00542\" name=\"l00542\"></a><span class=\"lineno\">  542</span>                           patchTable-&gt;GetPatchArrayBuffer(),</div>\n-<div class=\"line\"><a id=\"l00543\" name=\"l00543\"></a><span class=\"lineno\">  543</span>                           patchTable-&gt;GetPatchIndexBuffer(),</div>\n-<div class=\"line\"><a id=\"l00544\" name=\"l00544\"></a><span class=\"lineno\">  544</span>                           patchTable-&gt;GetPatchParamBuffer());</div>\n-<div class=\"line\"><a id=\"l00545\" name=\"l00545\"></a><span class=\"lineno\">  545</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00546\" name=\"l00546\"></a><span class=\"lineno\">  546</span> </div>\n-<div class=\"line\"><a id=\"l00605\" name=\"l00605\"></a><span class=\"lineno\">  605</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l00606\" name=\"l00606\"></a><span class=\"lineno\">  606</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00607\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00607\" name=\"l00607\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01165.html#af01fdeb5b9c59c641e71bf453a6bd5d0\">  607</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01165.html#af01fdeb5b9c59c641e71bf453a6bd5d0\">EvalPatches</a>(</div>\n-<div class=\"line\"><a id=\"l00608\" name=\"l00608\"></a><span class=\"lineno\">  608</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00609\" name=\"l00609\"></a><span class=\"lineno\">  609</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00610\" name=\"l00610\"></a><span class=\"lineno\">  610</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00611\" name=\"l00611\"></a><span class=\"lineno\">  611</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00612\" name=\"l00612\"></a><span class=\"lineno\">  612</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l00613\" name=\"l00613\"></a><span class=\"lineno\">  613</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l00614\" name=\"l00614\"></a><span class=\"lineno\">  614</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00615\" name=\"l00615\"></a><span class=\"lineno\">  615</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00616\" name=\"l00616\"></a><span class=\"lineno\">  616</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l00617\" name=\"l00617\"></a><span class=\"lineno\">  617</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l00618\" name=\"l00618\"></a><span class=\"lineno\">  618</span>        <a class=\"code hl_class\" href=\"a01165.html\">CpuEvaluator</a> <span class=\"keyword\">const</span> *instance = NULL,</div>\n-<div class=\"line\"><a id=\"l00619\" name=\"l00619\"></a><span class=\"lineno\">  619</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l00620\" name=\"l00620\"></a><span class=\"lineno\">  620</span> </div>\n-<div class=\"line\"><a id=\"l00621\" name=\"l00621\"></a><span class=\"lineno\">  621</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00622\" name=\"l00622\"></a><span class=\"lineno\">  622</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00623\" name=\"l00623\"></a><span class=\"lineno\">  623</span> </div>\n-<div class=\"line\"><a id=\"l00624\" name=\"l00624\"></a><span class=\"lineno\">  624</span>        <span class=\"comment\">// XXX: PatchCoords is somewhat abusing vertex primvar buffer interop.</span></div>\n-<div class=\"line\"><a id=\"l00625\" name=\"l00625\"></a><span class=\"lineno\">  625</span>        <span class=\"comment\">//      ideally all buffer classes should have templated by datatype</span></div>\n-<div class=\"line\"><a id=\"l00626\" name=\"l00626\"></a><span class=\"lineno\">  626</span>        <span class=\"comment\">//      so that downcast isn&#39;t needed there.</span></div>\n-<div class=\"line\"><a id=\"l00627\" name=\"l00627\"></a><span class=\"lineno\">  627</span>        <span class=\"comment\">//      (e.g. Osd::CpuBuffer&lt;PatchCoord&gt; )</span></div>\n-<div class=\"line\"><a id=\"l00628\" name=\"l00628\"></a><span class=\"lineno\">  628</span>        <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00629\" name=\"l00629\"></a><span class=\"lineno\">  629</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01165.html#a833e2ee19e5dd9018607512aa8d32dbe\">EvalPatches</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00630\" name=\"l00630\"></a><span class=\"lineno\">  630</span>                           dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00631\" name=\"l00631\"></a><span class=\"lineno\">  631</span>                           duBuffer-&gt;BindCpuBuffer(),  duDesc,</div>\n-<div class=\"line\"><a id=\"l00632\" name=\"l00632\"></a><span class=\"lineno\">  632</span>                           dvBuffer-&gt;BindCpuBuffer(),  dvDesc,</div>\n-<div class=\"line\"><a id=\"l00633\" name=\"l00633\"></a><span class=\"lineno\">  633</span>                           duuBuffer-&gt;BindCpuBuffer(), duuDesc,</div>\n-<div class=\"line\"><a id=\"l00634\" name=\"l00634\"></a><span class=\"lineno\">  634</span>                           duvBuffer-&gt;BindCpuBuffer(), duvDesc,</div>\n-<div class=\"line\"><a id=\"l00635\" name=\"l00635\"></a><span class=\"lineno\">  635</span>                           dvvBuffer-&gt;BindCpuBuffer(), dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00636\" name=\"l00636\"></a><span class=\"lineno\">  636</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00637\" name=\"l00637\"></a><span class=\"lineno\">  637</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a>*)patchCoords-&gt;BindCpuBuffer(),</div>\n-<div class=\"line\"><a id=\"l00638\" name=\"l00638\"></a><span class=\"lineno\">  638</span>                           patchTable-&gt;GetPatchArrayBuffer(),</div>\n-<div class=\"line\"><a id=\"l00639\" name=\"l00639\"></a><span class=\"lineno\">  639</span>                           patchTable-&gt;GetPatchIndexBuffer(),</div>\n-<div class=\"line\"><a id=\"l00640\" name=\"l00640\"></a><span class=\"lineno\">  640</span>                           patchTable-&gt;GetPatchParamBuffer());</div>\n-<div class=\"line\"><a id=\"l00641\" name=\"l00641\"></a><span class=\"lineno\">  641</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00642\" name=\"l00642\"></a><span class=\"lineno\">  642</span> </div>\n-<div class=\"line\"><a id=\"l00670\" name=\"l00670\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01165.html#ad5b907c22dfcb943e5f25f3c16543535\">  670</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01165.html#ad5b907c22dfcb943e5f25f3c16543535\">EvalPatches</a>(</div>\n-<div class=\"line\"><a id=\"l00671\" name=\"l00671\"></a><span class=\"lineno\">  671</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00672\" name=\"l00672\"></a><span class=\"lineno\">  672</span>        <span class=\"keywordtype\">float</span> *dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00673\" name=\"l00673\"></a><span class=\"lineno\">  673</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00674\" name=\"l00674\"></a><span class=\"lineno\">  674</span>        <span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a> *patchCoords,</div>\n-<div class=\"line\"><a id=\"l00675\" name=\"l00675\"></a><span class=\"lineno\">  675</span>        <span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01325.html\">PatchArray</a> *patchArrays,</div>\n-<div class=\"line\"><a id=\"l00676\" name=\"l00676\"></a><span class=\"lineno\">  676</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> *patchIndexBuffer,</div>\n-<div class=\"line\"><a id=\"l00677\" name=\"l00677\"></a><span class=\"lineno\">  677</span>        <span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01329.html\">PatchParam</a> *patchParamBuffer);</div>\n-<div class=\"line\"><a id=\"l00678\" name=\"l00678\"></a><span class=\"lineno\">  678</span> </div>\n-<div class=\"line\"><a id=\"l00716\" name=\"l00716\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01165.html#ac1dba254bc287312f8f812113c8e8ad3\">  716</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01165.html#ac1dba254bc287312f8f812113c8e8ad3\">EvalPatches</a>(</div>\n-<div class=\"line\"><a id=\"l00717\" name=\"l00717\"></a><span class=\"lineno\">  717</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00718\" name=\"l00718\"></a><span class=\"lineno\">  718</span>        <span class=\"keywordtype\">float</span> *dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00719\" name=\"l00719\"></a><span class=\"lineno\">  719</span>        <span class=\"keywordtype\">float</span> *du,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00720\" name=\"l00720\"></a><span class=\"lineno\">  720</span>        <span class=\"keywordtype\">float</span> *dv,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00721\" name=\"l00721\"></a><span class=\"lineno\">  721</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00722\" name=\"l00722\"></a><span class=\"lineno\">  722</span>        <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a> <span class=\"keyword\">const</span> *patchCoords,</div>\n-<div class=\"line\"><a id=\"l00723\" name=\"l00723\"></a><span class=\"lineno\">  723</span>        <a class=\"code hl_struct\" href=\"a01325.html\">PatchArray</a> <span class=\"keyword\">const</span> *patchArrays,</div>\n-<div class=\"line\"><a id=\"l00724\" name=\"l00724\"></a><span class=\"lineno\">  724</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> *patchIndexBuffer,</div>\n-<div class=\"line\"><a id=\"l00725\" name=\"l00725\"></a><span class=\"lineno\">  725</span>        <a class=\"code hl_struct\" href=\"a01329.html\">PatchParam</a> <span class=\"keyword\">const</span> *patchParamBuffer);</div>\n-<div class=\"line\"><a id=\"l00726\" name=\"l00726\"></a><span class=\"lineno\">  726</span> </div>\n-<div class=\"line\"><a id=\"l00779\" name=\"l00779\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01165.html#a7b556148d6ef2e04fbe99677e3a87e91\">  779</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01165.html#a7b556148d6ef2e04fbe99677e3a87e91\">EvalPatches</a>(</div>\n-<div class=\"line\"><a id=\"l00780\" name=\"l00780\"></a><span class=\"lineno\">  780</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00781\" name=\"l00781\"></a><span class=\"lineno\">  781</span>        <span class=\"keywordtype\">float</span> *dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00782\" name=\"l00782\"></a><span class=\"lineno\">  782</span>        <span class=\"keywordtype\">float</span> *du,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00783\" name=\"l00783\"></a><span class=\"lineno\">  783</span>        <span class=\"keywordtype\">float</span> *dv,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00784\" name=\"l00784\"></a><span class=\"lineno\">  784</span>        <span class=\"keywordtype\">float</span> *duu,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l00785\" name=\"l00785\"></a><span class=\"lineno\">  785</span>        <span class=\"keywordtype\">float</span> *duv,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l00786\" name=\"l00786\"></a><span class=\"lineno\">  786</span>        <span class=\"keywordtype\">float</span> *dvv,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00787\" name=\"l00787\"></a><span class=\"lineno\">  787</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00788\" name=\"l00788\"></a><span class=\"lineno\">  788</span>        <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a> <span class=\"keyword\">const</span> *patchCoords,</div>\n-<div class=\"line\"><a id=\"l00789\" name=\"l00789\"></a><span class=\"lineno\">  789</span>        <a class=\"code hl_struct\" href=\"a01325.html\">PatchArray</a> <span class=\"keyword\">const</span> *patchArrays,</div>\n-<div class=\"line\"><a id=\"l00790\" name=\"l00790\"></a><span class=\"lineno\">  790</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> *patchIndexBuffer,</div>\n-<div class=\"line\"><a id=\"l00791\" name=\"l00791\"></a><span class=\"lineno\">  791</span>        <a class=\"code hl_struct\" href=\"a01329.html\">PatchParam</a> <span class=\"keyword\">const</span> *patchParamBuffer);</div>\n-<div class=\"line\"><a id=\"l00792\" name=\"l00792\"></a><span class=\"lineno\">  792</span> </div>\n-<div class=\"line\"><a id=\"l00821\" name=\"l00821\"></a><span class=\"lineno\">  821</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l00822\" name=\"l00822\"></a><span class=\"lineno\">  822</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00823\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00823\" name=\"l00823\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01165.html#adb3a32fbae8a1437b6368dc1e298f58f\">  823</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01165.html#adb3a32fbae8a1437b6368dc1e298f58f\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l00824\" name=\"l00824\"></a><span class=\"lineno\">  824</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00825\" name=\"l00825\"></a><span class=\"lineno\">  825</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00826\" name=\"l00826\"></a><span class=\"lineno\">  826</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00827\" name=\"l00827\"></a><span class=\"lineno\">  827</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l00828\" name=\"l00828\"></a><span class=\"lineno\">  828</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l00829\" name=\"l00829\"></a><span class=\"lineno\">  829</span>        <a class=\"code hl_class\" href=\"a01165.html\">CpuEvaluator</a> <span class=\"keyword\">const</span> *instance = NULL,</div>\n-<div class=\"line\"><a id=\"l00830\" name=\"l00830\"></a><span class=\"lineno\">  830</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l00831\" name=\"l00831\"></a><span class=\"lineno\">  831</span> </div>\n-<div class=\"line\"><a id=\"l00832\" name=\"l00832\"></a><span class=\"lineno\">  832</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00833\" name=\"l00833\"></a><span class=\"lineno\">  833</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00834\" name=\"l00834\"></a><span class=\"lineno\">  834</span> </div>\n-<div class=\"line\"><a id=\"l00835\" name=\"l00835\"></a><span class=\"lineno\">  835</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01165.html#a833e2ee19e5dd9018607512aa8d32dbe\">EvalPatches</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00836\" name=\"l00836\"></a><span class=\"lineno\">  836</span>                           dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00837\" name=\"l00837\"></a><span class=\"lineno\">  837</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00838\" name=\"l00838\"></a><span class=\"lineno\">  838</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a>*)patchCoords-&gt;BindCpuBuffer(),</div>\n-<div class=\"line\"><a id=\"l00839\" name=\"l00839\"></a><span class=\"lineno\">  839</span>                           patchTable-&gt;GetVaryingPatchArrayBuffer(),</div>\n-<div class=\"line\"><a id=\"l00840\" name=\"l00840\"></a><span class=\"lineno\">  840</span>                           patchTable-&gt;GetVaryingPatchIndexBuffer(),</div>\n-<div class=\"line\"><a id=\"l00841\" name=\"l00841\"></a><span class=\"lineno\">  841</span>                           patchTable-&gt;GetPatchParamBuffer());</div>\n-<div class=\"line\"><a id=\"l00842\" name=\"l00842\"></a><span class=\"lineno\">  842</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00843\" name=\"l00843\"></a><span class=\"lineno\">  843</span> </div>\n-<div class=\"line\"><a id=\"l00884\" name=\"l00884\"></a><span class=\"lineno\">  884</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l00885\" name=\"l00885\"></a><span class=\"lineno\">  885</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00886\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00886\" name=\"l00886\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01165.html#ada4f37a111fe2b1bfb12d9c2d458e5b5\">  886</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01165.html#ada4f37a111fe2b1bfb12d9c2d458e5b5\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l00887\" name=\"l00887\"></a><span class=\"lineno\">  887</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00888\" name=\"l00888\"></a><span class=\"lineno\">  888</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00889\" name=\"l00889\"></a><span class=\"lineno\">  889</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00890\" name=\"l00890\"></a><span class=\"lineno\">  890</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00891\" name=\"l00891\"></a><span class=\"lineno\">  891</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00892\" name=\"l00892\"></a><span class=\"lineno\">  892</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l00893\" name=\"l00893\"></a><span class=\"lineno\">  893</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l00894\" name=\"l00894\"></a><span class=\"lineno\">  894</span>        <a class=\"code hl_class\" href=\"a01165.html\">CpuEvaluator</a> <span class=\"keyword\">const</span> *instance = NULL,</div>\n-<div class=\"line\"><a id=\"l00895\" name=\"l00895\"></a><span class=\"lineno\">  895</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l00896\" name=\"l00896\"></a><span class=\"lineno\">  896</span> </div>\n-<div class=\"line\"><a id=\"l00897\" name=\"l00897\"></a><span class=\"lineno\">  897</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00898\" name=\"l00898\"></a><span class=\"lineno\">  898</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00899\" name=\"l00899\"></a><span class=\"lineno\">  899</span> </div>\n-<div class=\"line\"><a id=\"l00900\" name=\"l00900\"></a><span class=\"lineno\">  900</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01165.html#a833e2ee19e5dd9018607512aa8d32dbe\">EvalPatches</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00901\" name=\"l00901\"></a><span class=\"lineno\">  901</span>                           dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00902\" name=\"l00902\"></a><span class=\"lineno\">  902</span>                           duBuffer-&gt;BindCpuBuffer(),  duDesc,</div>\n-<div class=\"line\"><a id=\"l00903\" name=\"l00903\"></a><span class=\"lineno\">  903</span>                           dvBuffer-&gt;BindCpuBuffer(),  dvDesc,</div>\n-<div class=\"line\"><a id=\"l00904\" name=\"l00904\"></a><span class=\"lineno\">  904</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00905\" name=\"l00905\"></a><span class=\"lineno\">  905</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a>*)patchCoords-&gt;BindCpuBuffer(),</div>\n-<div class=\"line\"><a id=\"l00906\" name=\"l00906\"></a><span class=\"lineno\">  906</span>                           patchTable-&gt;GetVaryingPatchArrayBuffer(),</div>\n-<div class=\"line\"><a id=\"l00907\" name=\"l00907\"></a><span class=\"lineno\">  907</span>                           patchTable-&gt;GetVaryingPatchIndexBuffer(),</div>\n-<div class=\"line\"><a id=\"l00908\" name=\"l00908\"></a><span class=\"lineno\">  908</span>                           patchTable-&gt;GetPatchParamBuffer());</div>\n-<div class=\"line\"><a id=\"l00909\" name=\"l00909\"></a><span class=\"lineno\">  909</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00910\" name=\"l00910\"></a><span class=\"lineno\">  910</span> </div>\n-<div class=\"line\"><a id=\"l00969\" name=\"l00969\"></a><span class=\"lineno\">  969</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l00970\" name=\"l00970\"></a><span class=\"lineno\">  970</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00971\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00971\" name=\"l00971\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01165.html#a63c07f0657267c51a42e68bbf2674d2c\">  971</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01165.html#a63c07f0657267c51a42e68bbf2674d2c\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l00972\" name=\"l00972\"></a><span class=\"lineno\">  972</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00973\" name=\"l00973\"></a><span class=\"lineno\">  973</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00974\" name=\"l00974\"></a><span class=\"lineno\">  974</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00975\" name=\"l00975\"></a><span class=\"lineno\">  975</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00976\" name=\"l00976\"></a><span class=\"lineno\">  976</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l00977\" name=\"l00977\"></a><span class=\"lineno\">  977</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l00978\" name=\"l00978\"></a><span class=\"lineno\">  978</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00979\" name=\"l00979\"></a><span class=\"lineno\">  979</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00980\" name=\"l00980\"></a><span class=\"lineno\">  980</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l00981\" name=\"l00981\"></a><span class=\"lineno\">  981</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l00982\" name=\"l00982\"></a><span class=\"lineno\">  982</span>        <a class=\"code hl_class\" href=\"a01165.html\">CpuEvaluator</a> <span class=\"keyword\">const</span> *instance = NULL,</div>\n-<div class=\"line\"><a id=\"l00983\" name=\"l00983\"></a><span class=\"lineno\">  983</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l00984\" name=\"l00984\"></a><span class=\"lineno\">  984</span> </div>\n-<div class=\"line\"><a id=\"l00985\" name=\"l00985\"></a><span class=\"lineno\">  985</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00986\" name=\"l00986\"></a><span class=\"lineno\">  986</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00987\" name=\"l00987\"></a><span class=\"lineno\">  987</span> </div>\n-<div class=\"line\"><a id=\"l00988\" name=\"l00988\"></a><span class=\"lineno\">  988</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01165.html#a833e2ee19e5dd9018607512aa8d32dbe\">EvalPatches</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00989\" name=\"l00989\"></a><span class=\"lineno\">  989</span>                           dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00990\" name=\"l00990\"></a><span class=\"lineno\">  990</span>                           duBuffer-&gt;BindCpuBuffer(),  duDesc,</div>\n-<div class=\"line\"><a id=\"l00991\" name=\"l00991\"></a><span class=\"lineno\">  991</span>                           dvBuffer-&gt;BindCpuBuffer(),  dvDesc,</div>\n-<div class=\"line\"><a id=\"l00992\" name=\"l00992\"></a><span class=\"lineno\">  992</span>                           duuBuffer-&gt;BindCpuBuffer(), duuDesc,</div>\n-<div class=\"line\"><a id=\"l00993\" name=\"l00993\"></a><span class=\"lineno\">  993</span>                           duvBuffer-&gt;BindCpuBuffer(), duvDesc,</div>\n-<div class=\"line\"><a id=\"l00994\" name=\"l00994\"></a><span class=\"lineno\">  994</span>                           dvvBuffer-&gt;BindCpuBuffer(), dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00995\" name=\"l00995\"></a><span class=\"lineno\">  995</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00996\" name=\"l00996\"></a><span class=\"lineno\">  996</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a>*)patchCoords-&gt;BindCpuBuffer(),</div>\n-<div class=\"line\"><a id=\"l00997\" name=\"l00997\"></a><span class=\"lineno\">  997</span>                           patchTable-&gt;GetVaryingPatchArrayBuffer(),</div>\n-<div class=\"line\"><a id=\"l00998\" name=\"l00998\"></a><span class=\"lineno\">  998</span>                           patchTable-&gt;GetVaryingPatchIndexBuffer(),</div>\n-<div class=\"line\"><a id=\"l00999\" name=\"l00999\"></a><span class=\"lineno\">  999</span>                           patchTable-&gt;GetPatchParamBuffer());</div>\n-<div class=\"line\"><a id=\"l01000\" name=\"l01000\"></a><span class=\"lineno\"> 1000</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01001\" name=\"l01001\"></a><span class=\"lineno\"> 1001</span> </div>\n-<div class=\"line\"><a id=\"l01032\" name=\"l01032\"></a><span class=\"lineno\"> 1032</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01033\" name=\"l01033\"></a><span class=\"lineno\"> 1033</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01034\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01034\" name=\"l01034\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01165.html#a0cf0cb080682d71200633ef242b83615\"> 1034</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01165.html#a0cf0cb080682d71200633ef242b83615\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01035\" name=\"l01035\"></a><span class=\"lineno\"> 1035</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01036\" name=\"l01036\"></a><span class=\"lineno\"> 1036</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01037\" name=\"l01037\"></a><span class=\"lineno\"> 1037</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01038\" name=\"l01038\"></a><span class=\"lineno\"> 1038</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01039\" name=\"l01039\"></a><span class=\"lineno\"> 1039</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l01040\" name=\"l01040\"></a><span class=\"lineno\"> 1040</span>        <span class=\"keywordtype\">int</span> fvarChannel,</div>\n-<div class=\"line\"><a id=\"l01041\" name=\"l01041\"></a><span class=\"lineno\"> 1041</span>        <a class=\"code hl_class\" href=\"a01165.html\">CpuEvaluator</a> <span class=\"keyword\">const</span> *instance = NULL,</div>\n-<div class=\"line\"><a id=\"l01042\" name=\"l01042\"></a><span class=\"lineno\"> 1042</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l01043\" name=\"l01043\"></a><span class=\"lineno\"> 1043</span> </div>\n-<div class=\"line\"><a id=\"l01044\" name=\"l01044\"></a><span class=\"lineno\"> 1044</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l01045\" name=\"l01045\"></a><span class=\"lineno\"> 1045</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l01046\" name=\"l01046\"></a><span class=\"lineno\"> 1046</span> </div>\n-<div class=\"line\"><a id=\"l01047\" name=\"l01047\"></a><span class=\"lineno\"> 1047</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01165.html#a833e2ee19e5dd9018607512aa8d32dbe\">EvalPatches</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01048\" name=\"l01048\"></a><span class=\"lineno\"> 1048</span>                           dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l01049\" name=\"l01049\"></a><span class=\"lineno\"> 1049</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01050\" name=\"l01050\"></a><span class=\"lineno\"> 1050</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a>*)patchCoords-&gt;BindCpuBuffer(),</div>\n-<div class=\"line\"><a id=\"l01051\" name=\"l01051\"></a><span class=\"lineno\"> 1051</span>                           patchTable-&gt;GetFVarPatchArrayBuffer(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l01052\" name=\"l01052\"></a><span class=\"lineno\"> 1052</span>                           patchTable-&gt;GetFVarPatchIndexBuffer(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l01053\" name=\"l01053\"></a><span class=\"lineno\"> 1053</span>                           patchTable-&gt;GetFVarPatchParamBuffer(fvarChannel));</div>\n-<div class=\"line\"><a id=\"l01054\" name=\"l01054\"></a><span class=\"lineno\"> 1054</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01055\" name=\"l01055\"></a><span class=\"lineno\"> 1055</span> </div>\n-<div class=\"line\"><a id=\"l01098\" name=\"l01098\"></a><span class=\"lineno\"> 1098</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01099\" name=\"l01099\"></a><span class=\"lineno\"> 1099</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01100\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01100\" name=\"l01100\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01165.html#a2fbe9aec649e88f531714099d49c6db1\"> 1100</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01165.html#a2fbe9aec649e88f531714099d49c6db1\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01101\" name=\"l01101\"></a><span class=\"lineno\"> 1101</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01102\" name=\"l01102\"></a><span class=\"lineno\"> 1102</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01103\" name=\"l01103\"></a><span class=\"lineno\"> 1103</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l01104\" name=\"l01104\"></a><span class=\"lineno\"> 1104</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l01105\" name=\"l01105\"></a><span class=\"lineno\"> 1105</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01106\" name=\"l01106\"></a><span class=\"lineno\"> 1106</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01107\" name=\"l01107\"></a><span class=\"lineno\"> 1107</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l01108\" name=\"l01108\"></a><span class=\"lineno\"> 1108</span>        <span class=\"keywordtype\">int</span> fvarChannel,</div>\n-<div class=\"line\"><a id=\"l01109\" name=\"l01109\"></a><span class=\"lineno\"> 1109</span>        <a class=\"code hl_class\" href=\"a01165.html\">CpuEvaluator</a> <span class=\"keyword\">const</span> *instance = NULL,</div>\n-<div class=\"line\"><a id=\"l01110\" name=\"l01110\"></a><span class=\"lineno\"> 1110</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l01111\" name=\"l01111\"></a><span class=\"lineno\"> 1111</span> </div>\n-<div class=\"line\"><a id=\"l01112\" name=\"l01112\"></a><span class=\"lineno\"> 1112</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l01113\" name=\"l01113\"></a><span class=\"lineno\"> 1113</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l01114\" name=\"l01114\"></a><span class=\"lineno\"> 1114</span> </div>\n-<div class=\"line\"><a id=\"l01115\" name=\"l01115\"></a><span class=\"lineno\"> 1115</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01165.html#a833e2ee19e5dd9018607512aa8d32dbe\">EvalPatches</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01116\" name=\"l01116\"></a><span class=\"lineno\"> 1116</span>                           dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l01117\" name=\"l01117\"></a><span class=\"lineno\"> 1117</span>                           duBuffer-&gt;BindCpuBuffer(),  duDesc,</div>\n-<div class=\"line\"><a id=\"l01118\" name=\"l01118\"></a><span class=\"lineno\"> 1118</span>                           dvBuffer-&gt;BindCpuBuffer(),  dvDesc,</div>\n-<div class=\"line\"><a id=\"l01119\" name=\"l01119\"></a><span class=\"lineno\"> 1119</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01120\" name=\"l01120\"></a><span class=\"lineno\"> 1120</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a>*)patchCoords-&gt;BindCpuBuffer(),</div>\n-<div class=\"line\"><a id=\"l01121\" name=\"l01121\"></a><span class=\"lineno\"> 1121</span>                           patchTable-&gt;GetFVarPatchArrayBuffer(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l01122\" name=\"l01122\"></a><span class=\"lineno\"> 1122</span>                           patchTable-&gt;GetFVarPatchIndexBuffer(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l01123\" name=\"l01123\"></a><span class=\"lineno\"> 1123</span>                           patchTable-&gt;GetFVarPatchParamBuffer(fvarChannel));</div>\n-<div class=\"line\"><a id=\"l01124\" name=\"l01124\"></a><span class=\"lineno\"> 1124</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01125\" name=\"l01125\"></a><span class=\"lineno\"> 1125</span> </div>\n-<div class=\"line\"><a id=\"l01186\" name=\"l01186\"></a><span class=\"lineno\"> 1186</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01187\" name=\"l01187\"></a><span class=\"lineno\"> 1187</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01188\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01188\" name=\"l01188\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01165.html#a46c223689a9dfec7040c8ee9783a6c52\"> 1188</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01165.html#a46c223689a9dfec7040c8ee9783a6c52\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01189\" name=\"l01189\"></a><span class=\"lineno\"> 1189</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01190\" name=\"l01190\"></a><span class=\"lineno\"> 1190</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01191\" name=\"l01191\"></a><span class=\"lineno\"> 1191</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l01192\" name=\"l01192\"></a><span class=\"lineno\"> 1192</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l01193\" name=\"l01193\"></a><span class=\"lineno\"> 1193</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l01194\" name=\"l01194\"></a><span class=\"lineno\"> 1194</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l01195\" name=\"l01195\"></a><span class=\"lineno\"> 1195</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l01196\" name=\"l01196\"></a><span class=\"lineno\"> 1196</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01197\" name=\"l01197\"></a><span class=\"lineno\"> 1197</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01198\" name=\"l01198\"></a><span class=\"lineno\"> 1198</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l01199\" name=\"l01199\"></a><span class=\"lineno\"> 1199</span>        <span class=\"keywordtype\">int</span> fvarChannel,</div>\n-<div class=\"line\"><a id=\"l01200\" name=\"l01200\"></a><span class=\"lineno\"> 1200</span>        <a class=\"code hl_class\" href=\"a01165.html\">CpuEvaluator</a> <span class=\"keyword\">const</span> *instance = NULL,</div>\n-<div class=\"line\"><a id=\"l01201\" name=\"l01201\"></a><span class=\"lineno\"> 1201</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l01202\" name=\"l01202\"></a><span class=\"lineno\"> 1202</span> </div>\n-<div class=\"line\"><a id=\"l01203\" name=\"l01203\"></a><span class=\"lineno\"> 1203</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l01204\" name=\"l01204\"></a><span class=\"lineno\"> 1204</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l01205\" name=\"l01205\"></a><span class=\"lineno\"> 1205</span> </div>\n-<div class=\"line\"><a id=\"l01206\" name=\"l01206\"></a><span class=\"lineno\"> 1206</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01165.html#a833e2ee19e5dd9018607512aa8d32dbe\">EvalPatches</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01207\" name=\"l01207\"></a><span class=\"lineno\"> 1207</span>                           dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l01208\" name=\"l01208\"></a><span class=\"lineno\"> 1208</span>                           duBuffer-&gt;BindCpuBuffer(),  duDesc,</div>\n-<div class=\"line\"><a id=\"l01209\" name=\"l01209\"></a><span class=\"lineno\"> 1209</span>                           dvBuffer-&gt;BindCpuBuffer(),  dvDesc,</div>\n-<div class=\"line\"><a id=\"l01210\" name=\"l01210\"></a><span class=\"lineno\"> 1210</span>                           duuBuffer-&gt;BindCpuBuffer(), duuDesc,</div>\n-<div class=\"line\"><a id=\"l01211\" name=\"l01211\"></a><span class=\"lineno\"> 1211</span>                           duvBuffer-&gt;BindCpuBuffer(), duvDesc,</div>\n-<div class=\"line\"><a id=\"l01212\" name=\"l01212\"></a><span class=\"lineno\"> 1212</span>                           dvvBuffer-&gt;BindCpuBuffer(), dvvDesc,</div>\n-<div class=\"line\"><a id=\"l01213\" name=\"l01213\"></a><span class=\"lineno\"> 1213</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01214\" name=\"l01214\"></a><span class=\"lineno\"> 1214</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a>*)patchCoords-&gt;BindCpuBuffer(),</div>\n-<div class=\"line\"><a id=\"l01215\" name=\"l01215\"></a><span class=\"lineno\"> 1215</span>                           patchTable-&gt;GetFVarPatchArrayBuffer(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l01216\" name=\"l01216\"></a><span class=\"lineno\"> 1216</span>                           patchTable-&gt;GetFVarPatchIndexBuffer(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l01217\" name=\"l01217\"></a><span class=\"lineno\"> 1217</span>                           patchTable-&gt;GetFVarPatchParamBuffer(fvarChannel));</div>\n-<div class=\"line\"><a id=\"l01218\" name=\"l01218\"></a><span class=\"lineno\"> 1218</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01219\" name=\"l01219\"></a><span class=\"lineno\"> 1219</span> </div>\n-<div class=\"line\"><a id=\"l01225\" name=\"l01225\"></a><span class=\"lineno\"> 1225</span> </div>\n-<div class=\"foldopen\" id=\"foldopen01227\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01227\" name=\"l01227\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01165.html#ae339a533e5f7a5021c5a4b40ec09c208\"> 1227</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01165.html#ae339a533e5f7a5021c5a4b40ec09c208\">Synchronize</a>(<span class=\"keywordtype\">void</span> * <span class=\"comment\">/*deviceContext = NULL*/</span>) {</div>\n-<div class=\"line\"><a id=\"l01228\" name=\"l01228\"></a><span class=\"lineno\"> 1228</span>        <span class=\"comment\">// nothing.</span></div>\n-<div class=\"line\"><a id=\"l01229\" name=\"l01229\"></a><span class=\"lineno\"> 1229</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01230\" name=\"l01230\"></a><span class=\"lineno\"> 1230</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l01231\" name=\"l01231\"></a><span class=\"lineno\"> 1231</span> </div>\n-<div class=\"line\"><a id=\"l01232\" name=\"l01232\"></a><span class=\"lineno\"> 1232</span> </div>\n-<div class=\"line\"><a id=\"l01233\" name=\"l01233\"></a><span class=\"lineno\"> 1233</span>}  <span class=\"comment\">// end namespace Osd</span></div>\n-<div class=\"line\"><a id=\"l01234\" name=\"l01234\"></a><span class=\"lineno\"> 1234</span> </div>\n-<div class=\"line\"><a id=\"l01235\" name=\"l01235\"></a><span class=\"lineno\"> 1235</span>}  <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l01236\" name=\"l01236\"></a><span class=\"lineno\"> 1236</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l01237\" name=\"l01237\"></a><span class=\"lineno\"> 1237</span> </div>\n-<div class=\"line\"><a id=\"l01238\" name=\"l01238\"></a><span class=\"lineno\"> 1238</span>}  <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l01239\" name=\"l01239\"></a><span class=\"lineno\"> 1239</span> </div>\n-<div class=\"line\"><a id=\"l01240\" name=\"l01240\"></a><span class=\"lineno\"> 1240</span> </div>\n-<div class=\"line\"><a id=\"l01241\" name=\"l01241\"></a><span class=\"lineno\"> 1241</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_CPU_EVALUATOR_H</span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa01141_html\"><div class=\"ttname\"><a href=\"a01141.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::BufferDescriptor</a></div><div class=\"ttdoc\">BufferDescriptor is a struct which describes buffer elements in interleaved data buffers....</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00866_source.html#l00061\">bufferDescriptor.h:61</a></div></div>\n-<div class=\"ttc\" id=\"aa01165_html\"><div class=\"ttname\"><a href=\"a01165.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuEvaluator</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00803_source.html#l00039\">cpuEvaluator.h:39</a></div></div>\n-<div class=\"ttc\" id=\"aa01165_html_a0cf0cb080682d71200633ef242b83615\"><div class=\"ttname\"><a href=\"a01165.html#a0cf0cb080682d71200633ef242b83615\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel, CpuEvaluator const *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00803_source.html#l01034\">cpuEvaluator.h:1034</a></div></div>\n-<div class=\"ttc\" id=\"aa01165_html_a2fbe9aec649e88f531714099d49c6db1\"><div class=\"ttname\"><a href=\"a01165.html#a2fbe9aec649e88f531714099d49c6db1\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel, CpuEvaluator const *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00803_source.html#l01100\">cpuEvaluator.h:1100</a></div></div>\n-<div class=\"ttc\" id=\"aa01165_html_a4345e3659b7fb82f23dd51c688179ce3\"><div class=\"ttname\"><a href=\"a01165.html#a4345e3659b7fb82f23dd51c688179ce3\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(const float *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, const int *sizes, const int *offsets, const int *indices, const float *weights, int start, int end)</div><div class=\"ttdoc\">Static eval stencils function which takes raw CPU pointers for input and output.</div></div>\n-<div class=\"ttc\" id=\"aa01165_html_a46c223689a9dfec7040c8ee9783a6c52\"><div class=\"ttname\"><a href=\"a01165.html#a46c223689a9dfec7040c8ee9783a6c52\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel, CpuEvaluator const *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00803_source.html#l01188\">cpuEvaluator.h:1188</a></div></div>\n-<div class=\"ttc\" id=\"aa01165_html_a63c07f0657267c51a42e68bbf2674d2c\"><div class=\"ttname\"><a href=\"a01165.html#a63c07f0657267c51a42e68bbf2674d2c\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, CpuEvaluator const *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00803_source.html#l00971\">cpuEvaluator.h:971</a></div></div>\n-<div class=\"ttc\" id=\"aa01165_html_a6daed6135a40cda2daf6c6ea2047b330\"><div class=\"ttname\"><a href=\"a01165.html#a6daed6135a40cda2daf6c6ea2047b330\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(const float *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, float *du, BufferDescriptor const &amp;duDesc, float *dv, BufferDescriptor const &amp;dvDesc, const int *sizes, const int *offsets, const int *indices, const float *weights, const float *duWeights, const float *dvWeights, int start, int end)</div><div class=\"ttdoc\">Static eval stencils function with derivatives, which takes raw CPU pointers for input and output.</div></div>\n-<div class=\"ttc\" id=\"aa01165_html_a76707de0a89ab94f15ad4b2c398a2c23\"><div class=\"ttname\"><a href=\"a01165.html#a76707de0a89ab94f15ad4b2c398a2c23\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(const float *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, float *du, BufferDescriptor const &amp;duDesc, float *dv, BufferDescriptor const &amp;dvDesc, float *duu, BufferDescriptor const &amp;duuDesc, float *duv, BufferDescriptor const &amp;duvDesc, float *dvv, BufferDescriptor const &amp;dvvDesc, const int *sizes, const int *offsets, const int *indices, const float *weights, const float *duWeights, const float *dvWeights, const float *duuWeights, const float *duvWeights, const float *dvvWeights, int start, int end)</div><div class=\"ttdoc\">Static eval stencils function with derivatives, which takes raw CPU pointers for input and output.</div></div>\n-<div class=\"ttc\" id=\"aa01165_html_a7b556148d6ef2e04fbe99677e3a87e91\"><div class=\"ttname\"><a href=\"a01165.html#a7b556148d6ef2e04fbe99677e3a87e91\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(const float *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, float *du, BufferDescriptor const &amp;duDesc, float *dv, BufferDescriptor const &amp;dvDesc, float *duu, BufferDescriptor const &amp;duuDesc, float *duv, BufferDescriptor const &amp;duvDesc, float *dvv, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PatchCoord const *patchCoords, PatchArray const *patchArrays, const int *patchIndexBuffer, PatchParam const *patchParamBuffer)</div><div class=\"ttdoc\">Static limit eval function. It takes an array of PatchCoord and evaluate limit values on given PatchT...</div></div>\n-<div class=\"ttc\" id=\"aa01165_html_a833e2ee19e5dd9018607512aa8d32dbe\"><div class=\"ttname\"><a href=\"a01165.html#a833e2ee19e5dd9018607512aa8d32dbe\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, CpuEvaluator const *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00803_source.html#l00454\">cpuEvaluator.h:454</a></div></div>\n-<div class=\"ttc\" id=\"aa01165_html_aadc6952ecef0e1cddda06e3c9d0a252a\"><div class=\"ttname\"><a href=\"a01165.html#aadc6952ecef0e1cddda06e3c9d0a252a\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, CpuEvaluator const *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function with derivatives. This function has a same signature as other device kern...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00803_source.html#l00517\">cpuEvaluator.h:517</a></div></div>\n-<div class=\"ttc\" id=\"aa01165_html_ac1dba254bc287312f8f812113c8e8ad3\"><div class=\"ttname\"><a href=\"a01165.html#ac1dba254bc287312f8f812113c8e8ad3\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(const float *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, float *du, BufferDescriptor const &amp;duDesc, float *dv, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PatchCoord const *patchCoords, PatchArray const *patchArrays, const int *patchIndexBuffer, PatchParam const *patchParamBuffer)</div><div class=\"ttdoc\">Static limit eval function. It takes an array of PatchCoord and evaluate limit values on given PatchT...</div></div>\n-<div class=\"ttc\" id=\"aa01165_html_ac6771a32b0a35687f75374cf86e703d1\"><div class=\"ttname\"><a href=\"a01165.html#ac6771a32b0a35687f75374cf86e703d1\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, STENCIL_TABLE const *stencilTable, const CpuEvaluator *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic static eval stencils function with derivatives. This function has a same signature as other d...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00803_source.html#l00303\">cpuEvaluator.h:303</a></div></div>\n-<div class=\"ttc\" id=\"aa01165_html_ad5b907c22dfcb943e5f25f3c16543535\"><div class=\"ttname\"><a href=\"a01165.html#ad5b907c22dfcb943e5f25f3c16543535\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(const float *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, int numPatchCoords, const PatchCoord *patchCoords, const PatchArray *patchArrays, const int *patchIndexBuffer, const PatchParam *patchParamBuffer)</div><div class=\"ttdoc\">Static limit eval function. It takes an array of PatchCoord and evaluate limit values on given PatchT...</div></div>\n-<div class=\"ttc\" id=\"aa01165_html_ada4f37a111fe2b1bfb12d9c2d458e5b5\"><div class=\"ttname\"><a href=\"a01165.html#ada4f37a111fe2b1bfb12d9c2d458e5b5\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, CpuEvaluator const *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00803_source.html#l00886\">cpuEvaluator.h:886</a></div></div>\n-<div class=\"ttc\" id=\"aa01165_html_adb3a32fbae8a1437b6368dc1e298f58f\"><div class=\"ttname\"><a href=\"a01165.html#adb3a32fbae8a1437b6368dc1e298f58f\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, CpuEvaluator const *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00803_source.html#l00823\">cpuEvaluator.h:823</a></div></div>\n-<div class=\"ttc\" id=\"aa01165_html_ae339a533e5f7a5021c5a4b40ec09c208\"><div class=\"ttname\"><a href=\"a01165.html#ae339a533e5f7a5021c5a4b40ec09c208\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuEvaluator::Synchronize</a></div><div class=\"ttdeci\">static void Synchronize(void *)</div><div class=\"ttdoc\">synchronize all asynchronous computation invoked on this device.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00803_source.html#l01227\">cpuEvaluator.h:1227</a></div></div>\n-<div class=\"ttc\" id=\"aa01165_html_ae8e914fc701af498ea6c6244da408b94\"><div class=\"ttname\"><a href=\"a01165.html#ae8e914fc701af498ea6c6244da408b94\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, STENCIL_TABLE const *stencilTable, const CpuEvaluator *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic static eval stencils function. This function has a same signature as other device kernels hav...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00803_source.html#l00072\">cpuEvaluator.h:72</a></div></div>\n-<div class=\"ttc\" id=\"aa01165_html_af01fdeb5b9c59c641e71bf453a6bd5d0\"><div class=\"ttname\"><a href=\"a01165.html#af01fdeb5b9c59c641e71bf453a6bd5d0\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, CpuEvaluator const *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function with derivatives. This function has a same signature as other device kern...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00803_source.html#l00607\">cpuEvaluator.h:607</a></div></div>\n-<div class=\"ttc\" id=\"aa01165_html_af918f56587a2c4b397c8ae4f385a85fd\"><div class=\"ttname\"><a href=\"a01165.html#af918f56587a2c4b397c8ae4f385a85fd\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, STENCIL_TABLE const *stencilTable, const CpuEvaluator *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic static eval stencils function with derivatives. This function has a same signature as other d...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00803_source.html#l00168\">cpuEvaluator.h:168</a></div></div>\n-<div class=\"ttc\" id=\"aa01321_html\"><div class=\"ttname\"><a href=\"a01321.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchCoord</a></div><div class=\"ttdoc\">Coordinates set on a patch table.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00042\">types.h:42</a></div></div>\n-<div class=\"ttc\" id=\"aa01325_html\"><div class=\"ttname\"><a href=\"a01325.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchArray</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00066\">types.h:66</a></div></div>\n-<div class=\"ttc\" id=\"aa01329_html\"><div class=\"ttname\"><a href=\"a01329.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchParam</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00127\">types.h:127</a></div></div>\n+<div class=\"line\"><a id=\"l00424\" name=\"l00424\"></a><span class=\"lineno\">  424</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a></div>\n+<div class=\"line\"><a id=\"l00425\" name=\"l00425\"></a><span class=\"lineno\">  425</span>Refinement::getFaceChildEdges(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> parentFace)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00426\" name=\"l00426\"></a><span class=\"lineno\">  426</span> </div>\n+<div class=\"line\"><a id=\"l00427\" name=\"l00427\"></a><span class=\"lineno\">  427</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a>(&amp;_faceChildEdgeIndices[_faceChildEdgeCountsAndOffsets[2*parentFace+1]],</div>\n+<div class=\"line\"><a id=\"l00428\" name=\"l00428\"></a><span class=\"lineno\">  428</span>                                             _faceChildEdgeCountsAndOffsets[2*parentFace]);</div>\n+<div class=\"line\"><a id=\"l00429\" name=\"l00429\"></a><span class=\"lineno\">  429</span>}</div>\n+<div class=\"line\"><a id=\"l00430\" name=\"l00430\"></a><span class=\"lineno\">  430</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a></div>\n+<div class=\"line\"><a id=\"l00431\" name=\"l00431\"></a><span class=\"lineno\">  431</span>Refinement::getFaceChildEdges(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> parentFace) {</div>\n+<div class=\"line\"><a id=\"l00432\" name=\"l00432\"></a><span class=\"lineno\">  432</span> </div>\n+<div class=\"line\"><a id=\"l00433\" name=\"l00433\"></a><span class=\"lineno\">  433</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a>(&amp;_faceChildEdgeIndices[_faceChildEdgeCountsAndOffsets[2*parentFace+1]],</div>\n+<div class=\"line\"><a id=\"l00434\" name=\"l00434\"></a><span class=\"lineno\">  434</span>                                             _faceChildEdgeCountsAndOffsets[2*parentFace]);</div>\n+<div class=\"line\"><a id=\"l00435\" name=\"l00435\"></a><span class=\"lineno\">  435</span>}</div>\n+<div class=\"line\"><a id=\"l00436\" name=\"l00436\"></a><span class=\"lineno\">  436</span> </div>\n+<div class=\"line\"><a id=\"l00437\" name=\"l00437\"></a><span class=\"lineno\">  437</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a></div>\n+<div class=\"line\"><a id=\"l00438\" name=\"l00438\"></a><span class=\"lineno\">  438</span>Refinement::getEdgeChildEdges(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> parentEdge)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00439\" name=\"l00439\"></a><span class=\"lineno\">  439</span> </div>\n+<div class=\"line\"><a id=\"l00440\" name=\"l00440\"></a><span class=\"lineno\">  440</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a>(&amp;_edgeChildEdgeIndices[parentEdge*2], 2);</div>\n+<div class=\"line\"><a id=\"l00441\" name=\"l00441\"></a><span class=\"lineno\">  441</span>}</div>\n+<div class=\"line\"><a id=\"l00442\" name=\"l00442\"></a><span class=\"lineno\">  442</span> </div>\n+<div class=\"line\"><a id=\"l00443\" name=\"l00443\"></a><span class=\"lineno\">  443</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a></div>\n+<div class=\"line\"><a id=\"l00444\" name=\"l00444\"></a><span class=\"lineno\">  444</span>Refinement::getEdgeChildEdges(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> parentEdge) {</div>\n+<div class=\"line\"><a id=\"l00445\" name=\"l00445\"></a><span class=\"lineno\">  445</span> </div>\n+<div class=\"line\"><a id=\"l00446\" name=\"l00446\"></a><span class=\"lineno\">  446</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a>(&amp;_edgeChildEdgeIndices[parentEdge*2], 2);</div>\n+<div class=\"line\"><a id=\"l00447\" name=\"l00447\"></a><span class=\"lineno\">  447</span>}</div>\n+<div class=\"line\"><a id=\"l00448\" name=\"l00448\"></a><span class=\"lineno\">  448</span> </div>\n+<div class=\"line\"><a id=\"l00449\" name=\"l00449\"></a><span class=\"lineno\">  449</span>} <span class=\"comment\">// end namespace internal</span></div>\n+<div class=\"line\"><a id=\"l00450\" name=\"l00450\"></a><span class=\"lineno\">  450</span>} <span class=\"comment\">// end namespace Vtr</span></div>\n+<div class=\"line\"><a id=\"l00451\" name=\"l00451\"></a><span class=\"lineno\">  451</span> </div>\n+<div class=\"line\"><a id=\"l00452\" name=\"l00452\"></a><span class=\"lineno\">  452</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00453\" name=\"l00453\"></a><span class=\"lineno\">  453</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00454\" name=\"l00454\"></a><span class=\"lineno\">  454</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l00455\" name=\"l00455\"></a><span class=\"lineno\">  455</span> </div>\n+<div class=\"line\"><a id=\"l00456\" name=\"l00456\"></a><span class=\"lineno\">  456</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_VTR_REFINEMENT_H */</span><span class=\"preprocessor\"></span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa00909_html_a4a0e50e01fef3e431767a928c2631cab\"><div class=\"ttname\"><a href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::Index</a></div><div class=\"ttdeci\">int Index</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01495_source.html#l00054\">types.h:54</a></div></div>\n+<div class=\"ttc\" id=\"aa00909_html_a5ce395d26317168dcf613c15181476ed\"><div class=\"ttname\"><a href=\"a00909.html#a5ce395d26317168dcf613c15181476ed\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::IndexVector</a></div><div class=\"ttdeci\">std::vector&lt; Index &gt; IndexVector</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01495_source.html#l00077\">types.h:77</a></div></div>\n+<div class=\"ttc\" id=\"aa00909_html_a7c31dd7ef75734862d363b332be917dd\"><div class=\"ttname\"><a href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstIndexArray</a></div><div class=\"ttdeci\">ConstArray&lt; Index &gt; ConstIndexArray</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01495_source.html#l00080\">types.h:80</a></div></div>\n+<div class=\"ttc\" id=\"aa00909_html_ab4fd2ea03eba4c01ed28072b21917a0f\"><div class=\"ttname\"><a href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::IndexArray</a></div><div class=\"ttdeci\">Array&lt; Index &gt; IndexArray</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01495_source.html#l00079\">types.h:79</a></div></div>\n+<div class=\"ttc\" id=\"aa00913_html_a61ef2f8f765ba17f8036bcc0f0fa887b\"><div class=\"ttname\"><a href=\"a00913.html#a61ef2f8f765ba17f8036bcc0f0fa887b\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Split</a></div><div class=\"ttdeci\">Split</div><div class=\"ttdoc\">Enumerated type for all face splitting schemes.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01492_source.html#l00047\">types.h:47</a></div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00803.html\">cpuEvaluator.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bd5473d7d5841d48919aaa9ad0cb1f9b.html\">vtr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00803.html\">refinement.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-cpuEvaluator.h\n+refinement.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2015 Pixar\n+2// Copyright 2014 DreamWorks Animation LLC.\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -23,656 +23,545 @@\n 17//\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n-24\n-25#ifndef OPENSUBDIV3_OSD_CPU_EVALUATOR_H\n-26#define OPENSUBDIV3_OSD_CPU_EVALUATOR_H\n-27\n-28#include \"../version.h\"\n-29#include \"../osd/bufferDescriptor.h\"\n-30#include \"../osd/types.h\"\n-31\n-32#include <cstddef>\n+24#ifndef OPENSUBDIV3_VTR_REFINEMENT_H\n+25#define OPENSUBDIV3_VTR_REFINEMENT_H\n+26\n+27#include \"../version.h\"\n+28\n+29#include \"../sdc/types.h\"\n+30#include \"../sdc/options.h\"\n+31#include \"../vtr/types.h\"\n+32#include \"../vtr/level.h\"\n 33\n-34namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-35namespace OPENSUBDIV_VERSION {\n-36\n-37namespace Osd {\n-38\n-_\b3_\b9class _\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br {\n-40public:\n+34#include <vector>\n+35\n+36//\n+37// Declaration for the main refinement class (Refinement) and its pre-\n+requisites:\n+38//\n+39namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+40namespace OPENSUBDIV_VERSION {\n+41\n+42namespace Vtr {\n+43namespace internal {\n+44\n+45class FVarRefinement;\n 46\n-71 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n-_\b7_\b2 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n-73 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-74 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-75 STENCIL_TABLE const *stencilTable,\n-76 const _\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br *instance = NULL,\n-77 void * deviceContext = NULL) {\n+47//\n+48// Refinement:\n+49// A refinement is a mapping between two levels -- relating the components in\n+the original\n+50// (parent) level to the one refined (child). The refinement may be complete\n+(uniform) or sparse\n+51// (adaptive or otherwise selective), so not all components in the parent\n+level will spawn\n+52// components in the child level.\n+53//\n+54// Refinement is an abstract class and expects subclasses corresponding to\n+the different types\n+55// of topological splits that the supported subdivision schemes collectively\n+require, i.e. those\n+56// listed in Sdc::SplitType. Note the virtual requirements expected of the\n+subclasses in the list\n+57// of protected methods -- they differ mainly in the topology that is created\n+in the child Level\n+58// and not the propagation of tags through refinement, subdivision of\n+sharpness values or the\n+59// treatment of face-varying data. The primary subclasses are QuadRefinement\n+and TriRefinement.\n+60//\n+61// At a high level, all that is necessary in terms of interface is to\n+construct, initialize\n+62// (linking the two levels), optionally select components for sparse\n+refinement (via use of the\n+63// SparseSelector) and call the refine() method. This usage is expected of\n+Far::TopologyRefiner.\n+64//\n+65// Since we really want this class to be restricted from public access\n+eventually, all methods\n+66// begin with lower case (as is the convention for protected methods) and the\n+list of friends\n+67// will be maintained more strictly.\n+68//\n+69class Refinement {\n+70\n+71public:\n+72 Refinement(Level const & parent, Level & child, Sdc::Options const&\n+schemeOptions);\n+73 virtual ~Refinement();\n+74\n+75 Level const& parent() const { return *_parent; }\n+76 Level const& child() const { return *_child; }\n+77 Level& child() { return *_child; }\n 78\n-79 (void)instance; // unused\n-80 (void)deviceContext; // unused\n-81\n-82 if (stencilTable->GetNumStencils() == 0)\n-83 return false;\n-84\n-85 return _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n-86 dstBuffer->BindCpuBuffer(), dstDesc,\n-87 &stencilTable->GetSizes()[0],\n-88 &stencilTable->GetOffsets()[0],\n-89 &stencilTable->GetControlIndices()[0],\n-90 &stencilTable->GetWeights()[0],\n-91 /*start = */ 0,\n-92 /*end = */ stencilTable->GetNumStencils());\n-93 }\n-94\n-_\b1_\b2_\b1 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n-122 const float *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-123 float *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-124 const int * sizes,\n-125 const int * offsets,\n-126 const int * indices,\n-127 const float * weights,\n-128 int start, int end);\n-129\n-167 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n-_\b1_\b6_\b8 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n-169 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-170 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-171 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-172 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-173 STENCIL_TABLE const *stencilTable,\n-174 const _\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br *instance = NULL,\n-175 void * deviceContext = NULL) {\n-176\n-177 (void)instance; // unused\n-178 (void)deviceContext; // unused\n-179\n-180 return _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n-181 dstBuffer->BindCpuBuffer(), dstDesc,\n-182 duBuffer->BindCpuBuffer(), duDesc,\n-183 dvBuffer->BindCpuBuffer(), dvDesc,\n-184 &stencilTable->GetSizes()[0],\n-185 &stencilTable->GetOffsets()[0],\n-186 &stencilTable->GetControlIndices()[0],\n-187 &stencilTable->GetWeights()[0],\n-188 &stencilTable->GetDuWeights()[0],\n-189 &stencilTable->GetDvWeights()[0],\n-190 /*start = */ 0,\n-191 /*end = */ stencilTable->GetNumStencils());\n-192 }\n-193\n-_\b2_\b3_\b4 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n-235 const float *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-236 float *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-237 float *du, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-238 float *dv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-239 const int * sizes,\n-240 const int * offsets,\n-241 const int * indices,\n-242 const float * weights,\n-243 const float * duWeights,\n-244 const float * dvWeights,\n-245 int start, int end);\n-246\n-302 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n-_\b3_\b0_\b3 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n-304 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-305 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-306 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-307 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-308 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-309 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-310 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-311 STENCIL_TABLE const *stencilTable,\n-312 const _\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br *instance = NULL,\n-313 void * deviceContext = NULL) {\n-314\n-315 (void)instance; // unused\n-316 (void)deviceContext; // unused\n-317\n-318 return _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n-319 dstBuffer->BindCpuBuffer(), dstDesc,\n-320 duBuffer->BindCpuBuffer(), duDesc,\n-321 dvBuffer->BindCpuBuffer(), dvDesc,\n-322 duuBuffer->BindCpuBuffer(), duuDesc,\n-323 duvBuffer->BindCpuBuffer(), duvDesc,\n-324 dvvBuffer->BindCpuBuffer(), dvvDesc,\n-325 &stencilTable->GetSizes()[0],\n-326 &stencilTable->GetOffsets()[0],\n-327 &stencilTable->GetControlIndices()[0],\n-328 &stencilTable->GetWeights()[0],\n-329 &stencilTable->GetDuWeights()[0],\n-330 &stencilTable->GetDvWeights()[0],\n-331 &stencilTable->GetDuuWeights()[0],\n-332 &stencilTable->GetDuvWeights()[0],\n-333 &stencilTable->GetDvvWeights()[0],\n-334 /*start = */ 0,\n-335 /*end = */ stencilTable->GetNumStencils());\n-336 }\n-337\n-_\b3_\b9_\b9 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n-400 const float *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-401 float *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-402 float *du, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-403 float *dv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-404 float *duu, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-405 float *duv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-406 float *dvv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-407 const int * sizes,\n-408 const int * offsets,\n-409 const int * indices,\n-410 const float * weights,\n-411 const float * duWeights,\n-412 const float * dvWeights,\n-413 const float * duuWeights,\n-414 const float * duvWeights,\n-415 const float * dvvWeights,\n-416 int start, int end);\n-417\n+79 _\bS_\bd_\bc_\b:_\b:_\bS_\bp_\bl_\bi_\bt getSplitType() const { return _splitType; }\n+80 int getRegularFaceSize() const { return _regFaceSize; }\n+81 Sdc::Options getOptions() const { return _options; }\n+82\n+83 // Face-varying:\n+84 int getNumFVarChannels() const { return (int) _fvarChannels.size(); }\n+85\n+86 FVarRefinement const & getFVarRefinement(int c) const { return\n+*_fvarChannels[c]; }\n+87\n+88 //\n+89 // Options associated with the actual refinement operation, which may end up\n+90 // quite involved if we want to allow for the refinement of data that is not\n+91 // of interest to be suppressed. For now we have:\n+92 //\n+93 // \"sparse\": the alternative to uniform refinement, which requires that\n+94 // components be previously selected/marked to be included.\n+95 //\n+96 // \"minimal topology\": this is one that may get broken down into a finer\n+97 // set of options. It suppresses \"full topology\" in the child level\n+98 // and only generates what is minimally necessary for interpolation --\n+99 // which requires at least the face-vertices for faces, but also the\n+100 // vertex-faces for any face-varying channels present. So it will\n+101 // generate one or two of the six possible topological relations.\n+102 //\n+103 // These are strictly controlled right now, e.g. for sparse refinement, we\n+104 // currently enforce full topology at the finest level to allow for\n+subsequent\n+105 // patch construction.\n+106 //\n+107 struct Options {\n+108 Options() : _sparse(false),\n+109 _faceVertsFirst(false),\n+110 _minimalTopology(false)\n+111 { }\n+112\n+113 unsigned int _sparse : 1;\n+114 unsigned int _faceVertsFirst : 1;\n+115 unsigned int _minimalTopology : 1;\n+116\n+117 // Still under consideration:\n+118 //unsigned int _childToParentMap : 1;\n+119 };\n+120\n+121 void refine(Options options = Options());\n+122\n+123 bool hasFaceVerticesFirst() const { return _faceVertsFirst; }\n+124\n+125public:\n+126 //\n+127 // Access to members -- some testing classes (involving vertex\n+interpolation)\n+128 // currently make use of these:\n+129 //\n+130 int getNumChildFacesFromFaces() const { return _childFaceFromFaceCount; }\n+131 int getNumChildEdgesFromFaces() const { return _childEdgeFromFaceCount; }\n+132 int getNumChildEdgesFromEdges() const { return _childEdgeFromEdgeCount; }\n+133 int getNumChildVerticesFromFaces() const { return _childVertFromFaceCount;\n+}\n+134 int getNumChildVerticesFromEdges() const { return _childVertFromEdgeCount;\n+}\n+135 int getNumChildVerticesFromVertices() const { return\n+_childVertFromVertCount; }\n+136\n+137 _\bI_\bn_\bd_\be_\bx getFirstChildFaceFromFaces() const { return _firstChildFaceFromFace;\n+}\n+138 _\bI_\bn_\bd_\be_\bx getFirstChildEdgeFromFaces() const { return _firstChildEdgeFromFace;\n+}\n+139 _\bI_\bn_\bd_\be_\bx getFirstChildEdgeFromEdges() const { return _firstChildEdgeFromEdge;\n+}\n+140 _\bI_\bn_\bd_\be_\bx getFirstChildVertexFromFaces() const { return\n+_firstChildVertFromFace; }\n+141 _\bI_\bn_\bd_\be_\bx getFirstChildVertexFromEdges() const { return\n+_firstChildVertFromEdge; }\n+142 _\bI_\bn_\bd_\be_\bx getFirstChildVertexFromVertices() const { return\n+_firstChildVertFromVert; }\n+143\n+144 _\bI_\bn_\bd_\be_\bx getFaceChildVertex(_\bI_\bn_\bd_\be_\bx f) const { return _faceChildVertIndex[f]; }\n+145 _\bI_\bn_\bd_\be_\bx getEdgeChildVertex(_\bI_\bn_\bd_\be_\bx e) const { return _edgeChildVertIndex[e]; }\n+146 _\bI_\bn_\bd_\be_\bx getVertexChildVertex(_\bI_\bn_\bd_\be_\bx v) const { return _vertChildVertIndex[v];\n+}\n+147\n+148 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getFaceChildFaces(_\bI_\bn_\bd_\be_\bx parentFace) const;\n+149 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getFaceChildEdges(_\bI_\bn_\bd_\be_\bx parentFace) const;\n+150 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getEdgeChildEdges(_\bI_\bn_\bd_\be_\bx parentEdge) const;\n+151\n+152 // Child-to-parent relationships\n+153 bool isChildVertexComplete(_\bI_\bn_\bd_\be_\bx v) const { return ! _childVertexTag\n+[v]._incomplete; }\n+154\n+155 _\bI_\bn_\bd_\be_\bx getChildFaceParentFace(_\bI_\bn_\bd_\be_\bx f) const { return _childFaceParentIndex\n+[f]; }\n+156 int getChildFaceInParentFace(_\bI_\bn_\bd_\be_\bx f) const { return _childFaceTag\n+[f]._indexInParent; }\n+157\n+158 _\bI_\bn_\bd_\be_\bx getChildEdgeParentIndex(_\bI_\bn_\bd_\be_\bx e) const { return _childEdgeParentIndex\n+[e]; }\n+159\n+160 _\bI_\bn_\bd_\be_\bx getChildVertexParentIndex(_\bI_\bn_\bd_\be_\bx v) const { return\n+_childVertexParentIndex[v]; }\n+161\n+162//\n+163// Modifiers intended for internal/protected use:\n+164//\n+165public:\n+166\n+167 _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getFaceChildFaces(_\bI_\bn_\bd_\be_\bx parentFace);\n+168 _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getFaceChildEdges(_\bI_\bn_\bd_\be_\bx parentFace);\n+169 _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getEdgeChildEdges(_\bI_\bn_\bd_\be_\bx parentEdge);\n+170\n+171public:\n+172 //\n+173 // Tags have now been added per-component in Level, but there is additional\n+need to tag\n+174 // components within Refinement -- we can't tag the parent level components\n+for any\n+175 // refinement (in order to keep it const) and tags associated with children\n+that are\n+176 // specific to the child-to-parent mapping may not be warranted in the\n+child level.\n+177 //\n+178 // Parent tags are only required for sparse refinement. The main property\n+to tag is\n+179 // whether a component was selected, and so a single SparseTag is used for\n+all three\n+180 // component types. Tagging if a component is \"transitional\" is also\n+useful. This may\n+181 // only be necessary for edges but is currently packed into a mask per-edge\n+for faces,\n+182 // which could be deferred, in which case \"transitional\" could be a single\n+bit.\n+183 //\n+184 // Child tags are part of the child-to-parent mapping, which consists of\n+the parent\n+185 // component index for each child component, plus a tag for the child\n+indicating more\n+186 // about its relationship to its parent, e.g. is it completely defined,\n+what the parent\n+187 // component type is, what is the index of the child within its parent,\n+etc.\n+188 //\n+189 struct SparseTag {\n+190 SparseTag() : _selected(0), _transitional(0) { }\n+191\n+192 unsigned char _selected : 1; // component specifically selected for\n+refinement\n+193 unsigned char _transitional : 4; // adjacent to a refined component (4-bits\n+for face)\n+194 };\n+195\n+196 struct ChildTag {\n+197 ChildTag() { }\n+198\n+199 unsigned char _incomplete : 1; // incomplete neighborhood to represent\n+limit of parent\n+200 unsigned char _parentType : 2; // type of parent component: vertex, edge or\n+face\n+201 unsigned char _indexInParent : 2; // index of child wrt parent: 0-3, or\n+iterative if N > 4\n+202 };\n+203\n+204 // Methods to access and modify tags:\n+205 SparseTag const & getParentFaceSparseTag( _\bI_\bn_\bd_\be_\bx f) const { return\n+_parentFaceTag[f]; }\n+206 SparseTag const & getParentEdgeSparseTag( _\bI_\bn_\bd_\be_\bx e) const { return\n+_parentEdgeTag[e]; }\n+207 SparseTag const & getParentVertexSparseTag(_\bI_\bn_\bd_\be_\bx v) const { return\n+_parentVertexTag[v]; }\n+208\n+209 SparseTag & getParentFaceSparseTag( _\bI_\bn_\bd_\be_\bx f) { return _parentFaceTag[f]; }\n+210 SparseTag & getParentEdgeSparseTag( _\bI_\bn_\bd_\be_\bx e) { return _parentEdgeTag[e]; }\n+211 SparseTag & getParentVertexSparseTag(_\bI_\bn_\bd_\be_\bx v) { return _parentVertexTag[v];\n+}\n+212\n+213 ChildTag const & getChildFaceTag( _\bI_\bn_\bd_\be_\bx f) const { return _childFaceTag[f];\n+}\n+214 ChildTag const & getChildEdgeTag( _\bI_\bn_\bd_\be_\bx e) const { return _childEdgeTag[e];\n+}\n+215 ChildTag const & getChildVertexTag(_\bI_\bn_\bd_\be_\bx v) const { return _childVertexTag\n+[v]; }\n+216\n+217 ChildTag & getChildFaceTag( _\bI_\bn_\bd_\be_\bx f) { return _childFaceTag[f]; }\n+218 ChildTag & getChildEdgeTag( _\bI_\bn_\bd_\be_\bx e) { return _childEdgeTag[e]; }\n+219 ChildTag & getChildVertexTag(_\bI_\bn_\bd_\be_\bx v) { return _childVertexTag[v]; }\n+220\n+221// Remaining methods should really be protected -- for use by subclasses...\n+222public:\n+223 //\n+224 // Methods involved in constructing the parent-to-child mapping -- when the\n+225 // refinement is sparse, additional methods are needed to identify the\n+selection:\n+226 //\n+227 void populateParentToChildMapping();\n+228 void populateParentChildIndices();\n+229 void printParentToChildMapping() const;\n+230\n+231 virtual void allocateParentChildIndices() = 0;\n+232\n+233 // Supporting method for sparse refinement:\n+234 void initializeSparseSelectionTags();\n+235 void markSparseChildComponentIndices();\n+236 void markSparseVertexChildren();\n+237 void markSparseEdgeChildren();\n+238\n+239 virtual void markSparseFaceChildren() = 0;\n+240\n+241 void initializeChildComponentCounts();\n+242\n+243 //\n+244 // Methods involved in constructing the child-to-parent mapping:\n+245 //\n+246 void populateChildToParentMapping();\n+247\n+248 void populateFaceParentVectors(ChildTag const initialChildTags[2][4]);\n+249 void populateFaceParentFromParentFaces(ChildTag const initialChildTags[2]\n+[4]);\n+250\n+251 void populateEdgeParentVectors(ChildTag const initialChildTags[2][4]);\n+252 void populateEdgeParentFromParentFaces(ChildTag const initialChildTags[2]\n+[4]);\n+253 void populateEdgeParentFromParentEdges(ChildTag const initialChildTags[2]\n+[4]);\n+254\n+255 void populateVertexParentVectors(ChildTag const initialChildTags[2][4]);\n+256 void populateVertexParentFromParentFaces(ChildTag const initialChildTags[2]\n+[4]);\n+257 void populateVertexParentFromParentEdges(ChildTag const initialChildTags[2]\n+[4]);\n+258 void populateVertexParentFromParentVertices(ChildTag const initialChildTags\n+[2][4]);\n+259\n+260 //\n+261 // Methods involved in propagating component tags from parent to child:\n+262 //\n+263 void propagateComponentTags();\n+264\n+265 void populateFaceTagVectors();\n+266 void populateFaceTagsFromParentFaces();\n+267\n+268 void populateEdgeTagVectors();\n+269 void populateEdgeTagsFromParentFaces();\n+270 void populateEdgeTagsFromParentEdges();\n+271\n+272 void populateVertexTagVectors();\n+273 void populateVertexTagsFromParentFaces();\n+274 void populateVertexTagsFromParentEdges();\n+275 void populateVertexTagsFromParentVertices();\n+276\n+277 //\n+278 // Methods (and types) involved in subdividing the topology -- though not\n+279 // fully exploited, any subset of the 6 relations can be generated:\n+280 //\n+281 struct Relations {\n+282 unsigned int _faceVertices : 1;\n+283 unsigned int _faceEdges : 1;\n+284 unsigned int _edgeVertices : 1;\n+285 unsigned int _edgeFaces : 1;\n+286 unsigned int _vertexFaces : 1;\n+287 unsigned int _vertexEdges : 1;\n+288\n+289 void setAll(bool enable) {\n+290 _faceVertices = enable;\n+291 _faceEdges = enable;\n+292 _edgeVertices = enable;\n+293 _edgeFaces = enable;\n+294 _vertexFaces = enable;\n+295 _vertexEdges = enable;\n+296 }\n+297 };\n+298\n+299 void subdivideTopology(Relations const& relationsToSubdivide);\n+300\n+301 virtual void populateFaceVertexRelation() = 0;\n+302 virtual void populateFaceEdgeRelation() = 0;\n+303 virtual void populateEdgeVertexRelation() = 0;\n+304 virtual void populateEdgeFaceRelation() = 0;\n+305 virtual void populateVertexFaceRelation() = 0;\n+306 virtual void populateVertexEdgeRelation() = 0;\n+307\n+308 //\n+309 // Methods involved in subdividing and inspecting sharpness values:\n+310 //\n+311 void subdivideSharpnessValues();\n+312\n+313 void subdivideVertexSharpness();\n+314 void subdivideEdgeSharpness();\n+315 void reclassifySemisharpVertices();\n+316\n+317 //\n+318 // Methods involved in subdividing face-varying topology:\n+319 //\n+320 void subdivideFVarChannels();\n+321\n+322protected:\n+323 // A debug method of Level prints a Refinement (should really change this)\n+324 friend void Level::print(const Refinement *) const;\n+325\n+326 //\n+327 // Data members -- the logical grouping of some of these (and methods that\n+make use\n+328 // of them) may lead to grouping them into a few utility classes or\n+structs...\n+329 //\n+330\n+331 // Defined on construction:\n+332 Level const * _parent;\n+333 Level * _child;\n+334 Sdc::Options _options;\n+335\n+336 // Defined by the subclass:\n+337 _\bS_\bd_\bc_\b:_\b:_\bS_\bp_\bl_\bi_\bt _splitType;\n+338 int _regFaceSize;\n+339\n+340 // Determined by the refinement options:\n+341 bool _uniform;\n+342 bool _faceVertsFirst;\n+343\n+344 //\n+345 // Inventory and ordering of the types of child components:\n+346 //\n+347 int _childFaceFromFaceCount; // arguably redundant (all faces originate\n+from faces)\n+348 int _childEdgeFromFaceCount;\n+349 int _childEdgeFromEdgeCount;\n+350 int _childVertFromFaceCount;\n+351 int _childVertFromEdgeCount;\n+352 int _childVertFromVertCount;\n+353\n+354 int _firstChildFaceFromFace; // arguably redundant (all faces originate\n+from faces)\n+355 int _firstChildEdgeFromFace;\n+356 int _firstChildEdgeFromEdge;\n+357 int _firstChildVertFromFace;\n+358 int _firstChildVertFromEdge;\n+359 int _firstChildVertFromVert;\n+360\n+361 //\n+362 // The parent-to-child mapping:\n+363 // These are vectors sized according to the number of parent components\n+(and\n+364 // their topology) that contain references/indices to the child components\n+that\n+365 // result from them by refinement. When refinement is sparse, parent\n+components\n+366 // that have not spawned all child components will have their missing\n+children\n+367 // marked as invalid.\n+368 //\n+369 // NOTE the \"Array\" members here. Often vectors within the Level can be\n+shared\n+370 // with the Refinement, and an Array instance is used to do so. If not\n+shared\n+371 // the subclass just initializes the Array members after allocating its own\n+local\n+372 // vector members.\n+373 //\n+374 _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _faceChildFaceCountsAndOffsets;\n+375 _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _faceChildEdgeCountsAndOffsets;\n+376\n+377 _\bI_\bn_\bd_\be_\bx_\bV_\be_\bc_\bt_\bo_\br _faceChildFaceIndices; // *cannot* always use face-vert counts/\n+offsets\n+378 _\bI_\bn_\bd_\be_\bx_\bV_\be_\bc_\bt_\bo_\br _faceChildEdgeIndices; // can use face-vert counts/offsets\n+379 _\bI_\bn_\bd_\be_\bx_\bV_\be_\bc_\bt_\bo_\br _faceChildVertIndex;\n+380\n+381 _\bI_\bn_\bd_\be_\bx_\bV_\be_\bc_\bt_\bo_\br _edgeChildEdgeIndices; // trivial/corresponding pair for each\n+382 _\bI_\bn_\bd_\be_\bx_\bV_\be_\bc_\bt_\bo_\br _edgeChildVertIndex;\n+383\n+384 _\bI_\bn_\bd_\be_\bx_\bV_\be_\bc_\bt_\bo_\br _vertChildVertIndex;\n+385\n+386 //\n+387 // The child-to-parent mapping:\n+388 //\n+389 _\bI_\bn_\bd_\be_\bx_\bV_\be_\bc_\bt_\bo_\br _childFaceParentIndex;\n+390 _\bI_\bn_\bd_\be_\bx_\bV_\be_\bc_\bt_\bo_\br _childEdgeParentIndex;\n+391 _\bI_\bn_\bd_\be_\bx_\bV_\be_\bc_\bt_\bo_\br _childVertexParentIndex;\n+392\n+393 std::vector<ChildTag> _childFaceTag;\n+394 std::vector<ChildTag> _childEdgeTag;\n+395 std::vector<ChildTag> _childVertexTag;\n+396\n+397 //\n+398 // Tags for sparse selection of components:\n+399 //\n+400 std::vector<SparseTag> _parentFaceTag;\n+401 std::vector<SparseTag> _parentEdgeTag;\n+402 std::vector<SparseTag> _parentVertexTag;\n+403\n+404 //\n+405 // Refinement data for face-varying channels present in the Levels being\n+refined:\n+406 //\n+407 std::vector<FVarRefinement*> _fvarChannels;\n+408};\n+409\n+410inline _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n+411Refinement::getFaceChildFaces(_\bI_\bn_\bd_\be_\bx parentFace) const {\n+412\n+413 return _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by(&_faceChildFaceIndices\n+[_faceChildFaceCountsAndOffsets[2*parentFace+1]],\n+414 _faceChildFaceCountsAndOffsets[2*parentFace]);\n+415}\n+416\n+417inline _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n+418Refinement::getFaceChildFaces(_\bI_\bn_\bd_\be_\bx parentFace) {\n+419\n+420 return _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by(&_faceChildFaceIndices[_faceChildFaceCountsAndOffsets\n+[2*parentFace+1]],\n+421 _faceChildFaceCountsAndOffsets[2*parentFace]);\n+422}\n 423\n-452 template <typename SRC_BUFFER, typename DST_BUFFER,\n-453 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b4_\b5_\b4 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n-455 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-456 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-457 int numPatchCoords,\n-458 PATCHCOORD_BUFFER *patchCoords,\n-459 PATCH_TABLE *patchTable,\n-460 _\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance = NULL,\n-461 void * deviceContext = NULL) {\n-462\n-463 (void)instance; // unused\n-464 (void)deviceContext; // unused\n-465\n-466 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n-467 dstBuffer->BindCpuBuffer(), dstDesc,\n-468 numPatchCoords,\n-469 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd*)patchCoords->BindCpuBuffer(),\n-470 patchTable->GetPatchArrayBuffer(),\n-471 patchTable->GetPatchIndexBuffer(),\n-472 patchTable->GetPatchParamBuffer());\n-473 }\n-474\n-515 template <typename SRC_BUFFER, typename DST_BUFFER,\n-516 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b5_\b1_\b7 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n-518 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-519 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-520 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-521 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-522 int numPatchCoords,\n-523 PATCHCOORD_BUFFER *patchCoords,\n-524 PATCH_TABLE *patchTable,\n-525 _\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance = NULL,\n-526 void * deviceContext = NULL) {\n-527\n-528 (void)instance; // unused\n-529 (void)deviceContext; // unused\n-530\n-531 // XXX: PatchCoords is somewhat abusing vertex primvar buffer interop.\n-532 // ideally all buffer classes should have templated by datatype\n-533 // so that downcast isn't needed there.\n-534 // (e.g. Osd::CpuBuffer<PatchCoord> )\n-535 //\n-536 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n-537 dstBuffer->BindCpuBuffer(), dstDesc,\n-538 duBuffer->BindCpuBuffer(), duDesc,\n-539 dvBuffer->BindCpuBuffer(), dvDesc,\n-540 numPatchCoords,\n-541 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd*)patchCoords->BindCpuBuffer(),\n-542 patchTable->GetPatchArrayBuffer(),\n-543 patchTable->GetPatchIndexBuffer(),\n-544 patchTable->GetPatchParamBuffer());\n-545 }\n-546\n-605 template <typename SRC_BUFFER, typename DST_BUFFER,\n-606 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b6_\b0_\b7 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n-608 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-609 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-610 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-611 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-612 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-613 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-614 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-615 int numPatchCoords,\n-616 PATCHCOORD_BUFFER *patchCoords,\n-617 PATCH_TABLE *patchTable,\n-618 _\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance = NULL,\n-619 void * deviceContext = NULL) {\n-620\n-621 (void)instance; // unused\n-622 (void)deviceContext; // unused\n-623\n-624 // XXX: PatchCoords is somewhat abusing vertex primvar buffer interop.\n-625 // ideally all buffer classes should have templated by datatype\n-626 // so that downcast isn't needed there.\n-627 // (e.g. Osd::CpuBuffer<PatchCoord> )\n-628 //\n-629 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n-630 dstBuffer->BindCpuBuffer(), dstDesc,\n-631 duBuffer->BindCpuBuffer(), duDesc,\n-632 dvBuffer->BindCpuBuffer(), dvDesc,\n-633 duuBuffer->BindCpuBuffer(), duuDesc,\n-634 duvBuffer->BindCpuBuffer(), duvDesc,\n-635 dvvBuffer->BindCpuBuffer(), dvvDesc,\n-636 numPatchCoords,\n-637 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd*)patchCoords->BindCpuBuffer(),\n-638 patchTable->GetPatchArrayBuffer(),\n-639 patchTable->GetPatchIndexBuffer(),\n-640 patchTable->GetPatchParamBuffer());\n-641 }\n-642\n-_\b6_\b7_\b0 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n-671 const float *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-672 float *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-673 int numPatchCoords,\n-674 const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd *patchCoords,\n-675 const _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by *patchArrays,\n-676 const int *patchIndexBuffer,\n-677 const _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm *patchParamBuffer);\n-678\n-_\b7_\b1_\b6 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n-717 const float *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-718 float *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-719 float *du, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-720 float *dv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-721 int numPatchCoords,\n-722 _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd const *patchCoords,\n-723 _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by const *patchArrays,\n-724 const int *patchIndexBuffer,\n-725 _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm const *patchParamBuffer);\n-726\n-_\b7_\b7_\b9 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n-780 const float *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-781 float *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-782 float *du, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-783 float *dv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-784 float *duu, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-785 float *duv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-786 float *dvv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-787 int numPatchCoords,\n-788 _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd const *patchCoords,\n-789 _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by const *patchArrays,\n-790 const int *patchIndexBuffer,\n-791 _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm const *patchParamBuffer);\n-792\n-821 template <typename SRC_BUFFER, typename DST_BUFFER,\n-822 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b8_\b2_\b3 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-824 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-825 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-826 int numPatchCoords,\n-827 PATCHCOORD_BUFFER *patchCoords,\n-828 PATCH_TABLE *patchTable,\n-829 _\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance = NULL,\n-830 void * deviceContext = NULL) {\n-831\n-832 (void)instance; // unused\n-833 (void)deviceContext; // unused\n-834\n-835 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n-836 dstBuffer->BindCpuBuffer(), dstDesc,\n-837 numPatchCoords,\n-838 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd*)patchCoords->BindCpuBuffer(),\n-839 patchTable->GetVaryingPatchArrayBuffer(),\n-840 patchTable->GetVaryingPatchIndexBuffer(),\n-841 patchTable->GetPatchParamBuffer());\n-842 }\n-843\n-884 template <typename SRC_BUFFER, typename DST_BUFFER,\n-885 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b8_\b8_\b6 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-887 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-888 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-889 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-890 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-891 int numPatchCoords,\n-892 PATCHCOORD_BUFFER *patchCoords,\n-893 PATCH_TABLE *patchTable,\n-894 _\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance = NULL,\n-895 void * deviceContext = NULL) {\n-896\n-897 (void)instance; // unused\n-898 (void)deviceContext; // unused\n-899\n-900 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n-901 dstBuffer->BindCpuBuffer(), dstDesc,\n-902 duBuffer->BindCpuBuffer(), duDesc,\n-903 dvBuffer->BindCpuBuffer(), dvDesc,\n-904 numPatchCoords,\n-905 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd*)patchCoords->BindCpuBuffer(),\n-906 patchTable->GetVaryingPatchArrayBuffer(),\n-907 patchTable->GetVaryingPatchIndexBuffer(),\n-908 patchTable->GetPatchParamBuffer());\n-909 }\n-910\n-969 template <typename SRC_BUFFER, typename DST_BUFFER,\n-970 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b9_\b7_\b1 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-972 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-973 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-974 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-975 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-976 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-977 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-978 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-979 int numPatchCoords,\n-980 PATCHCOORD_BUFFER *patchCoords,\n-981 PATCH_TABLE *patchTable,\n-982 _\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance = NULL,\n-983 void * deviceContext = NULL) {\n-984\n-985 (void)instance; // unused\n-986 (void)deviceContext; // unused\n-987\n-988 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n-989 dstBuffer->BindCpuBuffer(), dstDesc,\n-990 duBuffer->BindCpuBuffer(), duDesc,\n-991 dvBuffer->BindCpuBuffer(), dvDesc,\n-992 duuBuffer->BindCpuBuffer(), duuDesc,\n-993 duvBuffer->BindCpuBuffer(), duvDesc,\n-994 dvvBuffer->BindCpuBuffer(), dvvDesc,\n-995 numPatchCoords,\n-996 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd*)patchCoords->BindCpuBuffer(),\n-997 patchTable->GetVaryingPatchArrayBuffer(),\n-998 patchTable->GetVaryingPatchIndexBuffer(),\n-999 patchTable->GetPatchParamBuffer());\n-1000 }\n-1001\n-1032 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1033 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b1_\b0_\b3_\b4 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1035 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1036 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1037 int numPatchCoords,\n-1038 PATCHCOORD_BUFFER *patchCoords,\n-1039 PATCH_TABLE *patchTable,\n-1040 int fvarChannel,\n-1041 _\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance = NULL,\n-1042 void * deviceContext = NULL) {\n-1043\n-1044 (void)instance; // unused\n-1045 (void)deviceContext; // unused\n-1046\n-1047 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n-1048 dstBuffer->BindCpuBuffer(), dstDesc,\n-1049 numPatchCoords,\n-1050 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd*)patchCoords->BindCpuBuffer(),\n-1051 patchTable->GetFVarPatchArrayBuffer(fvarChannel),\n-1052 patchTable->GetFVarPatchIndexBuffer(fvarChannel),\n-1053 patchTable->GetFVarPatchParamBuffer(fvarChannel));\n-1054 }\n-1055\n-1098 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1099 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b1_\b1_\b0_\b0 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1101 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1102 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1103 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-1104 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-1105 int numPatchCoords,\n-1106 PATCHCOORD_BUFFER *patchCoords,\n-1107 PATCH_TABLE *patchTable,\n-1108 int fvarChannel,\n-1109 _\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance = NULL,\n-1110 void * deviceContext = NULL) {\n-1111\n-1112 (void)instance; // unused\n-1113 (void)deviceContext; // unused\n-1114\n-1115 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n-1116 dstBuffer->BindCpuBuffer(), dstDesc,\n-1117 duBuffer->BindCpuBuffer(), duDesc,\n-1118 dvBuffer->BindCpuBuffer(), dvDesc,\n-1119 numPatchCoords,\n-1120 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd*)patchCoords->BindCpuBuffer(),\n-1121 patchTable->GetFVarPatchArrayBuffer(fvarChannel),\n-1122 patchTable->GetFVarPatchIndexBuffer(fvarChannel),\n-1123 patchTable->GetFVarPatchParamBuffer(fvarChannel));\n-1124 }\n-1125\n-1186 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1187 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b1_\b1_\b8_\b8 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1189 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1190 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1191 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-1192 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-1193 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-1194 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-1195 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-1196 int numPatchCoords,\n-1197 PATCHCOORD_BUFFER *patchCoords,\n-1198 PATCH_TABLE *patchTable,\n-1199 int fvarChannel,\n-1200 _\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance = NULL,\n-1201 void * deviceContext = NULL) {\n-1202\n-1203 (void)instance; // unused\n-1204 (void)deviceContext; // unused\n-1205\n-1206 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n-1207 dstBuffer->BindCpuBuffer(), dstDesc,\n-1208 duBuffer->BindCpuBuffer(), duDesc,\n-1209 dvBuffer->BindCpuBuffer(), dvDesc,\n-1210 duuBuffer->BindCpuBuffer(), duuDesc,\n-1211 duvBuffer->BindCpuBuffer(), duvDesc,\n-1212 dvvBuffer->BindCpuBuffer(), dvvDesc,\n-1213 numPatchCoords,\n-1214 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd*)patchCoords->BindCpuBuffer(),\n-1215 patchTable->GetFVarPatchArrayBuffer(fvarChannel),\n-1216 patchTable->GetFVarPatchIndexBuffer(fvarChannel),\n-1217 patchTable->GetFVarPatchParamBuffer(fvarChannel));\n-1218 }\n-1219\n-1225\n-_\b1_\b2_\b2_\b7 static void _\bS_\by_\bn_\bc_\bh_\br_\bo_\bn_\bi_\bz_\be(void * /*deviceContext = NULL*/) {\n-1228 // nothing.\n-1229 }\n-1230};\n-1231\n-1232\n-1233} // end namespace Osd\n-1234\n-1235} // end namespace OPENSUBDIV_VERSION\n-1236using namespace OPENSUBDIV_VERSION;\n-1237\n-1238} // end namespace OpenSubdiv\n-1239\n-1240\n-1241#endif // OPENSUBDIV3_OSD_CPU_EVALUATOR_H\n+424inline _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n+425Refinement::getFaceChildEdges(_\bI_\bn_\bd_\be_\bx parentFace) const {\n+426\n+427 return _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by(&_faceChildEdgeIndices\n+[_faceChildEdgeCountsAndOffsets[2*parentFace+1]],\n+428 _faceChildEdgeCountsAndOffsets[2*parentFace]);\n+429}\n+430inline _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n+431Refinement::getFaceChildEdges(_\bI_\bn_\bd_\be_\bx parentFace) {\n+432\n+433 return _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by(&_faceChildEdgeIndices[_faceChildEdgeCountsAndOffsets\n+[2*parentFace+1]],\n+434 _faceChildEdgeCountsAndOffsets[2*parentFace]);\n+435}\n+436\n+437inline _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n+438Refinement::getEdgeChildEdges(_\bI_\bn_\bd_\be_\bx parentEdge) const {\n+439\n+440 return _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by(&_edgeChildEdgeIndices[parentEdge*2], 2);\n+441}\n+442\n+443inline _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n+444Refinement::getEdgeChildEdges(_\bI_\bn_\bd_\be_\bx parentEdge) {\n+445\n+446 return _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by(&_edgeChildEdgeIndices[parentEdge*2], 2);\n+447}\n+448\n+449} // end namespace internal\n+450} // end namespace Vtr\n+451\n+452} // end namespace OPENSUBDIV_VERSION\n+453using namespace OPENSUBDIV_VERSION;\n+454} // end namespace OpenSubdiv\n+455\n+456#endif /* OPENSUBDIV3_VTR_REFINEMENT_H */\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n-BufferDescriptor is a struct which describes buffer elements in interleaved\n-data buffers....\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b6_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b3_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n-static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor\n-const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int\n-numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int\n-fvarChannel, CpuEvaluator const *instance=NULL, void *deviceContext=NULL)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b0_\b3_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n-static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor\n-const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,\n-DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n-BufferDescriptor const &dvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n-*patchCoords, PATCH_TABLE *patchTable, int fvarChannel, CpuEvaluator const\n-*instance=NULL, void *deviceContext=NULL)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b1_\b0_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-static bool EvalStencils(const float *src, BufferDescriptor const &srcDesc,\n-float *dst, BufferDescriptor const &dstDesc, const int *sizes, const int\n-*offsets, const int *indices, const float *weights, int start, int end)\n-Static eval stencils function which takes raw CPU pointers for input and\n-output.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n-static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor\n-const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,\n-DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n-BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const\n-&duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER\n-*dvvBuffer, BufferDescriptor const &dvvDesc, int numPatchCoords,\n-PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel,\n-CpuEvaluator const *instance=NULL, void *deviceContext=NULL)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b1_\b8_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n-static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n-*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n-BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const\n-&duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER\n-*dvvBuffer, BufferDescriptor const &dvvDesc, int numPatchCoords,\n-PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, CpuEvaluator const\n-*instance=NULL, void *deviceContext=NULL)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b9_\b7_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-static bool EvalStencils(const float *src, BufferDescriptor const &srcDesc,\n-float *dst, BufferDescriptor const &dstDesc, float *du, BufferDescriptor const\n-&duDesc, float *dv, BufferDescriptor const &dvDesc, const int *sizes, const int\n-*offsets, const int *indices, const float *weights, const float *duWeights,\n-const float *dvWeights, int start, int end)\n-Static eval stencils function with derivatives, which takes raw CPU pointers\n-for input and output.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-static bool EvalStencils(const float *src, BufferDescriptor const &srcDesc,\n-float *dst, BufferDescriptor const &dstDesc, float *du, BufferDescriptor const\n-&duDesc, float *dv, BufferDescriptor const &dvDesc, float *duu,\n-BufferDescriptor const &duuDesc, float *duv, BufferDescriptor const &duvDesc,\n-float *dvv, BufferDescriptor const &dvvDesc, const int *sizes, const int\n-*offsets, const int *indices, const float *weights, const float *duWeights,\n-const float *dvWeights, const float *duuWeights, const float *duvWeights, const\n-float *dvvWeights, int start, int end)\n-Static eval stencils function with derivatives, which takes raw CPU pointers\n-for input and output.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-static bool EvalPatches(const float *src, BufferDescriptor const &srcDesc,\n-float *dst, BufferDescriptor const &dstDesc, float *du, BufferDescriptor const\n-&duDesc, float *dv, BufferDescriptor const &dvDesc, float *duu,\n-BufferDescriptor const &duuDesc, float *duv, BufferDescriptor const &duvDesc,\n-float *dvv, BufferDescriptor const &dvvDesc, int numPatchCoords, PatchCoord\n-const *patchCoords, PatchArray const *patchArrays, const int *patchIndexBuffer,\n-PatchParam const *patchParamBuffer)\n-Static limit eval function. It takes an array of PatchCoord and evaluate limit\n-values on given PatchT...\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords,\n-PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, CpuEvaluator const\n-*instance=NULL, void *deviceContext=NULL)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b4_\b5_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n-BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n-&dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE\n-*patchTable, CpuEvaluator const *instance=NULL, void *deviceContext=NULL)\n-Generic limit eval function with derivatives. This function has a same\n-signature as other device kern...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b5_\b1_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-static bool EvalPatches(const float *src, BufferDescriptor const &srcDesc,\n-float *dst, BufferDescriptor const &dstDesc, float *du, BufferDescriptor const\n-&duDesc, float *dv, BufferDescriptor const &dvDesc, int numPatchCoords,\n-PatchCoord const *patchCoords, PatchArray const *patchArrays, const int\n-*patchIndexBuffer, PatchParam const *patchParamBuffer)\n-Static limit eval function. It takes an array of PatchCoord and evaluate limit\n-values on given PatchT...\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n-*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n-BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const\n-&duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER\n-*dvvBuffer, BufferDescriptor const &dvvDesc, STENCIL_TABLE const *stencilTable,\n-const CpuEvaluator *instance=NULL, void *deviceContext=NULL)\n-Generic static eval stencils function with derivatives. This function has a\n-same signature as other d...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b3_\b0_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-static bool EvalPatches(const float *src, BufferDescriptor const &srcDesc,\n-float *dst, BufferDescriptor const &dstDesc, int numPatchCoords, const\n-PatchCoord *patchCoords, const PatchArray *patchArrays, const int\n-*patchIndexBuffer, const PatchParam *patchParamBuffer)\n-Static limit eval function. It takes an array of PatchCoord and evaluate limit\n-values on given PatchT...\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n-static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n-*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n-BufferDescriptor const &dvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n-*patchCoords, PATCH_TABLE *patchTable, CpuEvaluator const *instance=NULL, void\n-*deviceContext=NULL)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b8_\b8_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n-static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int\n-numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable,\n-CpuEvaluator const *instance=NULL, void *deviceContext=NULL)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b8_\b2_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bS_\by_\bn_\bc_\bh_\br_\bo_\bn_\bi_\bz_\be\n-static void Synchronize(void *)\n-synchronize all asynchronous computation invoked on this device.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b2_\b2_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, STENCIL_TABLE\n-const *stencilTable, const CpuEvaluator *instance=NULL, void\n-*deviceContext=NULL)\n-Generic static eval stencils function. This function has a same signature as\n-other device kernels hav...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n-BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n-&dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER\n-*duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer,\n-BufferDescriptor const &dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n-*patchCoords, PATCH_TABLE *patchTable, CpuEvaluator const *instance=NULL, void\n-*deviceContext=NULL)\n-Generic limit eval function with derivatives. This function has a same\n-signature as other device kern...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b6_\b0_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n-*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n-BufferDescriptor const &dvDesc, STENCIL_TABLE const *stencilTable, const\n-CpuEvaluator *instance=NULL, void *deviceContext=NULL)\n-Generic static eval stencils function with derivatives. This function has a\n-same signature as other d...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b6_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd\n-Coordinates set on a patch table.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b4_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b6_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b1_\b2_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx\n+int Index\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b5_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bV_\be_\bc_\bt_\bo_\br\n+std::vector< Index > IndexVector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b7_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n+ConstArray< Index > ConstIndexArray\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b8_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n+Array< Index > IndexArray\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b7_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bp_\bl_\bi_\bt\n+Split\n+Enumerated type for all face splitting schemes.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b4_\b7\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bc_\bp_\bu_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh\n+    * _\bv_\bt_\br\n+    * _\br_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00806.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00806.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/mtlComputeEvaluator.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/vtr/fvarRefinement.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -88,48 +88,43 @@\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n-<a href=\"#nested-classes\">Classes</a> &#124;\n <a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">mtlComputeEvaluator.h File Reference</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">fvarRefinement.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a01489_source.html\">../osd/types.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00866_source.html\">../osd/bufferDescriptor.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00824_source.html\">../osd/mtlCommon.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a01492_source.html\">../sdc/types.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00869_source.html\">../sdc/crease.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a01495_source.html\">../vtr/types.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00803_source.html\">../vtr/refinement.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00794_source.html\">../vtr/fvarLevel.h</a>&quot;</code><br />\n+<code>#include &lt;vector&gt;</code><br />\n+<code>#include &lt;cassert&gt;</code><br />\n+<code>#include &lt;cstring&gt;</code><br />\n </div>\n <p><a href=\"a00806_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n-<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n-Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01289.html\">MTLStencilTable</a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01293.html\">MTLComputeEvaluator</a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-</table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far</a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n+<tr class=\"memitem:a00909\" id=\"r_a00909\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00909.html\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00806.html\">mtlComputeEvaluator.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bd5473d7d5841d48919aaa9ad0cb1f9b.html\">vtr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00806.html\">fvarRefinement.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,29 +1,27 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-mtlComputeEvaluator.h File Reference\n+_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+fvarRefinement.h File Reference\n #include \"../version.h\"\n-#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n-#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh\"\n-#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bm_\bt_\bl_\bC_\bo_\bm_\bm_\bo_\bn_\b._\bh\"\n+#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n+#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bc_\br_\be_\ba_\bs_\be_\b._\bh\"\n+#include \"_\b._\b._\b/_\bv_\bt_\br_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n+#include \"_\b._\b._\b/_\bv_\bt_\br_\b/_\br_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt_\b._\bh\"\n+#include \"_\b._\b._\b/_\bv_\bt_\br_\b/_\bf_\bv_\ba_\br_\bL_\be_\bv_\be_\bl_\b._\bh\"\n+#include <vector>\n+#include <cassert>\n+#include <cstring>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n-C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bM_\bT_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n-\u00a0\n-class \u00a0 _\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n-\u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br\n-\u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh\n+    * _\bv_\bt_\br\n+    * _\bf_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00806_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00806_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/mtlComputeEvaluator.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/vtr/fvarRefinement.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">mtlComputeEvaluator.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">fvarRefinement.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00806.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2013 Pixar</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2014 DreamWorks Animation LLC.</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -118,1139 +118,115 @@\n <div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_MTL_COMPUTE_EVALUATOR_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_MTL_COMPUTE_EVALUATOR_H</span></div>\n-<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n-<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../osd/types.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../osd/bufferDescriptor.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &quot;../osd/mtlCommon.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">@protocol </span>MTLDevice;</div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">@protocol </span>MTLBuffer;</div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"keyword\">@protocol </span>MTLLibrary;</div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">@protocol </span>MTLComputePipelineState;</div>\n+<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_VTR_FVAR_REFINEMENT_H</span></div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#define OPENSUBDIV3_VTR_FVAR_REFINEMENT_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span> </div>\n+<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span> </div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#include &quot;../sdc/types.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../sdc/crease.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../vtr/types.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &quot;../vtr/refinement.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"preprocessor\">#include &quot;../vtr/fvarLevel.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span> </div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"preprocessor\">#include &lt;cassert&gt;</span></div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"preprocessor\">#include &lt;cstring&gt;</span></div>\n <div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span> </div>\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span> </div>\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span><span class=\"keyword\">namespace </span>Far {</div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span>    <span class=\"keyword\">class </span>PatchTable;</div>\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span>    <span class=\"keyword\">class </span>StencilTable;</div>\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span>    <span class=\"keyword\">class </span>LimitStencilTable;</div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span>}</div>\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span> </div>\n-<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span><span class=\"keyword\">namespace </span>Osd {</div>\n-<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00050\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01289.html\">   50</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01289.html\">MTLStencilTable</a></div>\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span>{</div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span>    <span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> STENCIL_TABLE, <span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00054\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01289.html#ad96fc1ad226b46fec987d3b131a87a90\">   54</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01289.html\">MTLStencilTable</a>* <a class=\"code hl_function\" href=\"a01289.html#ad96fc1ad226b46fec987d3b131a87a90\">Create</a>(STENCIL_TABLE* stencilTable,</div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span>                                   DEVICE_CONTEXT context)</div>\n-<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span>    {</div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span>        <span class=\"keywordflow\">return</span> <span class=\"keyword\">new</span> <a class=\"code hl_class\" href=\"a01289.html\">MTLStencilTable</a>(stencilTable, context);</div>\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span> </div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span> </div>\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01289.html#a45e329ffe9fe4e32a1b21bfc89a6763f\">   61</a></span>    <a class=\"code hl_function\" href=\"a01289.html#a45e329ffe9fe4e32a1b21bfc89a6763f\">MTLStencilTable</a>(<a class=\"code hl_class\" href=\"a01065.html\">Far::StencilTable</a> <span class=\"keyword\">const</span>* stencilTable, <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context);</div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01289.html#a015dc72c3360b4841ee2b3feb06c106f\">   62</a></span>    <a class=\"code hl_function\" href=\"a01289.html#a015dc72c3360b4841ee2b3feb06c106f\">MTLStencilTable</a>(<a class=\"code hl_class\" href=\"a01081.html\">Far::LimitStencilTable</a> <span class=\"keyword\">const</span>* stencilTable, <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context);</div>\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01289.html#a1ace4fd3d4d8b840a5b48415175ea8bc\">   63</a></span>    <a class=\"code hl_function\" href=\"a01289.html#a1ace4fd3d4d8b840a5b48415175ea8bc\">~MTLStencilTable</a>();</div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span> </div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01289.html#a9b2f404d67fa83cd4715d2bbbeef6b4c\">   65</a></span>    id&lt;MTLBuffer&gt; <a class=\"code hl_function\" href=\"a01289.html#a9b2f404d67fa83cd4715d2bbbeef6b4c\">GetSizesBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _sizesBuffer; }</div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01289.html#aa1aa052f6513bda4c60b0ac423fb34cc\">   66</a></span>    id&lt;MTLBuffer&gt; <a class=\"code hl_function\" href=\"a01289.html#aa1aa052f6513bda4c60b0ac423fb34cc\">GetOffsetsBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _offsetsBuffer; }</div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01289.html#a860a80d6ea4ec9aec06280c39376683c\">   67</a></span>    id&lt;MTLBuffer&gt; <a class=\"code hl_function\" href=\"a01289.html#a860a80d6ea4ec9aec06280c39376683c\">GetIndicesBuffer</a>()<span class=\"keyword\"> const  </span>{ <span class=\"keywordflow\">return</span> _indicesBuffer; }</div>\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01289.html#ab22907c9cfe58b82ddfcad8241304500\">   68</a></span>    id&lt;MTLBuffer&gt; <a class=\"code hl_function\" href=\"a01289.html#ab22907c9cfe58b82ddfcad8241304500\">GetWeightsBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _weightsBuffer; }</div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01289.html#a13aa05ad0482bad5182feb3cd75b4168\">   69</a></span>    id&lt;MTLBuffer&gt; <a class=\"code hl_function\" href=\"a01289.html#a13aa05ad0482bad5182feb3cd75b4168\">GetDuWeightsBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _duWeightsBuffer; }</div>\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01289.html#ae7df9ee000b676b2afb8b2979c006494\">   70</a></span>    id&lt;MTLBuffer&gt; <a class=\"code hl_function\" href=\"a01289.html#ae7df9ee000b676b2afb8b2979c006494\">GetDvWeightsBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _dvWeightsBuffer; }</div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01289.html#a4dec46cc7a06c6c1687109e48f04e085\">   71</a></span>    id&lt;MTLBuffer&gt; <a class=\"code hl_function\" href=\"a01289.html#a4dec46cc7a06c6c1687109e48f04e085\">GetDuuWeightsBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _duuWeightsBuffer; }</div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01289.html#a6175e9daf70e8c27fb5122546df3fb1f\">   72</a></span>    id&lt;MTLBuffer&gt; <a class=\"code hl_function\" href=\"a01289.html#a6175e9daf70e8c27fb5122546df3fb1f\">GetDuvWeightsBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _duvWeightsBuffer; }</div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01289.html#a2f1e271aba868c291f9e0a9e9d1ace47\">   73</a></span>    id&lt;MTLBuffer&gt; <a class=\"code hl_function\" href=\"a01289.html#a2f1e271aba868c291f9e0a9e9d1ace47\">GetDvvWeightsBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _dvvWeightsBuffer; }</div>\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span> </div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span> </div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"keyword\">namespace </span>Vtr {</div>\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span><span class=\"keyword\">namespace </span>internal {</div>\n+<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span> </div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span><span class=\"comment\">//  FVarRefinement:</span></div>\n+<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span><span class=\"comment\">//      A face-varying refinement contains data to support the refinement of a</span></div>\n+<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span><span class=\"comment\">//  particular face-varying &quot;channel&quot;.  Just as Refinement maintains a mapping</span></div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span><span class=\"comment\">//  between the components of a parent Level and its child, the face-varying</span></div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span><span class=\"comment\">//  analog maintains a mapping between the face-varying values of a parent</span></div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span><span class=\"comment\">//  FVarLevel and its child.</span></div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span><span class=\"comment\">//  It turns out there is little data necessary here, so the class consists</span></div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span><span class=\"comment\">//  mainly of methods that populate the child FVarLevel.  The mapping data in</span></div>\n+<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span><span class=\"comment\">//  the refinement between Levels serves most purposes and all that is required</span></div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span><span class=\"comment\">//  in addition is a mapping from values in the child FVarLevel to the parent.</span></div>\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span><span class=\"keyword\">class </span>FVarRefinement {</div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span>    FVarRefinement(Refinement <span class=\"keyword\">const</span>&amp; refinement, FVarLevel&amp; parent, FVarLevel&amp; child);</div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span>    ~FVarRefinement();</div>\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span> </div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span>    <span class=\"keywordtype\">int</span> getChildValueParentSource(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vIndex, <span class=\"keywordtype\">int</span> sibling)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span>        <span class=\"keywordflow\">return</span> _childValueParentSource[_childFVar.getVertexValueOffset(vIndex, (<a class=\"code hl_typedef\" href=\"a00909.html#a97c1e0c5ac33f97e2b73fde56b56c363\">LocalIndex</a>)sibling)];</div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span>    }</div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span> </div>\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span>    <span class=\"keywordtype\">float</span> getFractionalWeight(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> pVert, <a class=\"code hl_typedef\" href=\"a00909.html#a97c1e0c5ac33f97e2b73fde56b56c363\">LocalIndex</a> pSibling,</div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span>                              <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> cVert, <a class=\"code hl_typedef\" href=\"a00909.html#a97c1e0c5ac33f97e2b73fde56b56c363\">LocalIndex</a> cSibling) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span> </div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span> </div>\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>    <span class=\"comment\">//  Modifiers supporting application of the refinement:</span></div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span>    <span class=\"keywordtype\">void</span> applyRefinement();</div>\n <div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span> </div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01289.html#a65836d2070b943c8fecbad926d074de2\">   75</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01289.html#a65836d2070b943c8fecbad926d074de2\">GetNumStencils</a>()<span class=\"keyword\"> const  </span>{ <span class=\"keywordflow\">return</span> _numStencils; }</div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span> </div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span>    id&lt;MTLBuffer&gt; _sizesBuffer;</div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>    id&lt;MTLBuffer&gt; _offsetsBuffer;</div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span>    id&lt;MTLBuffer&gt; _indicesBuffer;</div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>    id&lt;MTLBuffer&gt; _weightsBuffer;</div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>    id&lt;MTLBuffer&gt; _duWeightsBuffer;</div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>    id&lt;MTLBuffer&gt; _dvWeightsBuffer;</div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span>    id&lt;MTLBuffer&gt; _duuWeightsBuffer;</div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>    id&lt;MTLBuffer&gt; _duvWeightsBuffer;</div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>    id&lt;MTLBuffer&gt; _dvvWeightsBuffer;</div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span> </div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>    <span class=\"keywordtype\">int</span> _numStencils;</div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00091\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html\">   91</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01293.html\">MTLComputeEvaluator</a></div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>{</div>\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#a2c24b70c9312d8dff3fecb9ddea52c44\">   94</a></span>    <span class=\"keyword\">typedef</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_typedef\" href=\"a01293.html#a2c24b70c9312d8dff3fecb9ddea52c44\">Instantiatable</a>;</div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span>    <span class=\"keywordtype\">void</span> estimateAndAllocateChildValues();</div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span>    <span class=\"keywordtype\">void</span> populateChildValues();</div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span>    <span class=\"keywordtype\">void</span> populateChildValuesFromFaceVertices();</div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span>    <span class=\"keywordtype\">void</span> populateChildValuesFromEdgeVertices();</div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>    <span class=\"keywordtype\">int</span>  populateChildValuesForEdgeVertex(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> cVert, <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> pEdge);</div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span>    <span class=\"keywordtype\">void</span> populateChildValuesFromVertexVertices();</div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>    <span class=\"keywordtype\">int</span>  populateChildValuesForVertexVertex(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> cVert, <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> pVert);</div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>    <span class=\"keywordtype\">void</span> trimAndFinalizeChildValues();</div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span> </div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span>    <span class=\"keywordtype\">void</span> propagateEdgeTags();</div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>    <span class=\"keywordtype\">void</span> propagateValueTags();</div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>    <span class=\"keywordtype\">void</span> propagateValueCreases();</div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>    <span class=\"keywordtype\">void</span> reclassifySemisharpValues();</div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span> </div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>    <span class=\"comment\">//  Identify the Refinement, its Levels and assigned FVarLevels for more</span></div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>    <span class=\"comment\">//  immediate access -- child FVarLevel is non-const as it is to be assigned:</span></div>\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>    Refinement <span class=\"keyword\">const</span> &amp; _refinement;</div>\n <div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span> </div>\n-<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#af4625ed1f27d57760257c382ee06a71d\">   96</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01293.html\">MTLComputeEvaluator</a> * <a class=\"code hl_function\" href=\"a01293.html#af4625ed1f27d57760257c382ee06a71d\">Create</a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>                                        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span>                                        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span>                                        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span>                                        <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context);</div>\n+<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span>    Level <span class=\"keyword\">const</span> &amp;     _parentLevel;</div>\n+<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>    FVarLevel <span class=\"keyword\">const</span> &amp; _parentFVar;</div>\n+<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span> </div>\n+<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span>    Level <span class=\"keyword\">const</span> &amp; _childLevel;</div>\n+<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span>    FVarLevel &amp;   _childFVar;</div>\n <div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span> </div>\n-<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#af56350dbfd2ba2396625e8f2cf8d9ed1\">  102</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01293.html\">MTLComputeEvaluator</a> * <a class=\"code hl_function\" href=\"a01293.html#af56350dbfd2ba2396625e8f2cf8d9ed1\">Create</a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span>                                        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span>                                        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span>                                        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span>                                        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span>                                        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span>                                        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span>                                        <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context);</div>\n-<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span> </div>\n-<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#a10015b2c4f90f3a11e60cc88dcbb9d6b\">  111</a></span>    <a class=\"code hl_function\" href=\"a01293.html#a10015b2c4f90f3a11e60cc88dcbb9d6b\">MTLComputeEvaluator</a>();</div>\n-<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#a167639c4a4c57eaae9a880ad50dcab5a\">  112</a></span>    <a class=\"code hl_function\" href=\"a01293.html#a167639c4a4c57eaae9a880ad50dcab5a\">~MTLComputeEvaluator</a>();</div>\n-<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span> </div>\n-<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span> </div>\n-<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\">  148</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00149\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#ab4a74384293a0625c6fc8d4ee6af1314\">  149</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01293.html#ab4a74384293a0625c6fc8d4ee6af1314\">EvalStencils</a>(</div>\n-<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\">  150</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\">  151</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\">  152</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n-<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\">  153</span>        <a class=\"code hl_class\" href=\"a01293.html\">MTLComputeEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n-<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\">  154</span>        <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context)</div>\n-<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\">  155</span>    {</div>\n-<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\">  156</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\">  157</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01293.html#ab4a74384293a0625c6fc8d4ee6af1314\">EvalStencils</a>(srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\">  158</span>                                          dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\">  159</span>                                          stencilTable,</div>\n-<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\">  160</span>                                          context);</div>\n-<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\">  161</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\">  162</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n-<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\">  163</span>            instance = Create(srcDesc, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\">  164</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\">  165</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\">  166</span>                              context);</div>\n-<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\">  167</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\">  168</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01293.html#ab4a74384293a0625c6fc8d4ee6af1314\">EvalStencils</a>(srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\">  169</span>                                                dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\">  170</span>                                                stencilTable,</div>\n-<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span>                                                context);</div>\n-<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\">  172</span>                <span class=\"keyword\">delete</span> instance;</div>\n-<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\">  173</span>                <span class=\"keywordflow\">return</span> r;</div>\n-<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\">  174</span>            }</div>\n-<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\">  175</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\">  176</span>        }</div>\n-<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\">  178</span> </div>\n-<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\">  219</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00220\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#a47b111c4b8b6a94c2705f04b2d7a095d\">  220</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01293.html#a47b111c4b8b6a94c2705f04b2d7a095d\">EvalStencils</a>(</div>\n-<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\">  221</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\">  222</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\">  223</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\">  224</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\">  225</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n-<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\">  226</span>        <a class=\"code hl_class\" href=\"a01293.html\">MTLComputeEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n-<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\">  227</span>        <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context) {</div>\n-<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\">  228</span> </div>\n-<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\">  229</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\">  230</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01293.html#ab4a74384293a0625c6fc8d4ee6af1314\">EvalStencils</a>(srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\">  231</span>                                          dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\">  232</span>                                          duBuffer,  duDesc,</div>\n-<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\">  233</span>                                          dvBuffer,  dvDesc,</div>\n-<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\">  234</span>                                          stencilTable,</div>\n-<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\">  235</span>                                          context);</div>\n-<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\">  236</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\">  237</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n-<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\">  238</span>            instance = Create(srcDesc, dstDesc, duDesc, dvDesc, context);</div>\n-<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\">  239</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\">  240</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01293.html#ab4a74384293a0625c6fc8d4ee6af1314\">EvalStencils</a>(srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\">  241</span>                                                dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\">  242</span>                                                duBuffer,  duDesc,</div>\n-<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\">  243</span>                                                dvBuffer,  dvDesc,</div>\n-<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\">  244</span>                                                stencilTable,</div>\n-<div class=\"line\"><a id=\"l00245\" name=\"l00245\"></a><span class=\"lineno\">  245</span>                                                context);</div>\n-<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\">  246</span>                <span class=\"keyword\">delete</span> instance;</div>\n-<div class=\"line\"><a id=\"l00247\" name=\"l00247\"></a><span class=\"lineno\">  247</span>                <span class=\"keywordflow\">return</span> r;</div>\n-<div class=\"line\"><a id=\"l00248\" name=\"l00248\"></a><span class=\"lineno\">  248</span>            }</div>\n-<div class=\"line\"><a id=\"l00249\" name=\"l00249\"></a><span class=\"lineno\">  249</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00250\" name=\"l00250\"></a><span class=\"lineno\">  250</span>        }</div>\n-<div class=\"line\"><a id=\"l00251\" name=\"l00251\"></a><span class=\"lineno\">  251</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00252\" name=\"l00252\"></a><span class=\"lineno\">  252</span> </div>\n-<div class=\"line\"><a id=\"l00311\" name=\"l00311\"></a><span class=\"lineno\">  311</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00312\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00312\" name=\"l00312\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#a05b843619ebcc7e30f6dc99a6585ef99\">  312</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01293.html#a05b843619ebcc7e30f6dc99a6585ef99\">EvalStencils</a>(</div>\n-<div class=\"line\"><a id=\"l00313\" name=\"l00313\"></a><span class=\"lineno\">  313</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00314\" name=\"l00314\"></a><span class=\"lineno\">  314</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00315\" name=\"l00315\"></a><span class=\"lineno\">  315</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00316\" name=\"l00316\"></a><span class=\"lineno\">  316</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00317\" name=\"l00317\"></a><span class=\"lineno\">  317</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l00318\" name=\"l00318\"></a><span class=\"lineno\">  318</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l00319\" name=\"l00319\"></a><span class=\"lineno\">  319</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00320\" name=\"l00320\"></a><span class=\"lineno\">  320</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n-<div class=\"line\"><a id=\"l00321\" name=\"l00321\"></a><span class=\"lineno\">  321</span>        <a class=\"code hl_class\" href=\"a01293.html\">MTLComputeEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n-<div class=\"line\"><a id=\"l00322\" name=\"l00322\"></a><span class=\"lineno\">  322</span>        <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context) {</div>\n-<div class=\"line\"><a id=\"l00323\" name=\"l00323\"></a><span class=\"lineno\">  323</span> </div>\n-<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\">  324</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\">  325</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01293.html#ab4a74384293a0625c6fc8d4ee6af1314\">EvalStencils</a>(srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\">  326</span>                                          dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\">  327</span>                                          duBuffer,  duDesc,</div>\n-<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\">  328</span>                                          dvBuffer,  dvDesc,</div>\n-<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\">  329</span>                                          duuBuffer, duuDesc,</div>\n-<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\">  330</span>                                          duvBuffer, duvDesc,</div>\n-<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\">  331</span>                                          dvvBuffer, dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\">  332</span>                                          stencilTable,</div>\n-<div class=\"line\"><a id=\"l00333\" name=\"l00333\"></a><span class=\"lineno\">  333</span>                                          context);</div>\n-<div class=\"line\"><a id=\"l00334\" name=\"l00334\"></a><span class=\"lineno\">  334</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00335\" name=\"l00335\"></a><span class=\"lineno\">  335</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n-<div class=\"line\"><a id=\"l00336\" name=\"l00336\"></a><span class=\"lineno\">  336</span>            instance = Create(srcDesc, dstDesc, duDesc, dvDesc,</div>\n-<div class=\"line\"><a id=\"l00337\" name=\"l00337\"></a><span class=\"lineno\">  337</span>                              duuDesc, duvDesc, dvvDesc, context);</div>\n-<div class=\"line\"><a id=\"l00338\" name=\"l00338\"></a><span class=\"lineno\">  338</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l00339\" name=\"l00339\"></a><span class=\"lineno\">  339</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01293.html#ab4a74384293a0625c6fc8d4ee6af1314\">EvalStencils</a>(srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l00340\" name=\"l00340\"></a><span class=\"lineno\">  340</span>                                                dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00341\" name=\"l00341\"></a><span class=\"lineno\">  341</span>                                                duBuffer,  duDesc,</div>\n-<div class=\"line\"><a id=\"l00342\" name=\"l00342\"></a><span class=\"lineno\">  342</span>                                                dvBuffer,  dvDesc,</div>\n-<div class=\"line\"><a id=\"l00343\" name=\"l00343\"></a><span class=\"lineno\">  343</span>                                                duuBuffer, duuDesc,</div>\n-<div class=\"line\"><a id=\"l00344\" name=\"l00344\"></a><span class=\"lineno\">  344</span>                                                duvBuffer, duvDesc,</div>\n-<div class=\"line\"><a id=\"l00345\" name=\"l00345\"></a><span class=\"lineno\">  345</span>                                                dvvBuffer, dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00346\" name=\"l00346\"></a><span class=\"lineno\">  346</span>                                                stencilTable,</div>\n-<div class=\"line\"><a id=\"l00347\" name=\"l00347\"></a><span class=\"lineno\">  347</span>                                                context);</div>\n-<div class=\"line\"><a id=\"l00348\" name=\"l00348\"></a><span class=\"lineno\">  348</span>                <span class=\"keyword\">delete</span> instance;</div>\n-<div class=\"line\"><a id=\"l00349\" name=\"l00349\"></a><span class=\"lineno\">  349</span>                <span class=\"keywordflow\">return</span> r;</div>\n-<div class=\"line\"><a id=\"l00350\" name=\"l00350\"></a><span class=\"lineno\">  350</span>            }</div>\n-<div class=\"line\"><a id=\"l00351\" name=\"l00351\"></a><span class=\"lineno\">  351</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00352\" name=\"l00352\"></a><span class=\"lineno\">  352</span>        }</div>\n-<div class=\"line\"><a id=\"l00353\" name=\"l00353\"></a><span class=\"lineno\">  353</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00354\" name=\"l00354\"></a><span class=\"lineno\">  354</span> </div>\n-<div class=\"line\"><a id=\"l00375\" name=\"l00375\"></a><span class=\"lineno\">  375</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00376\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00376\" name=\"l00376\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#a6bd37be5877b28116c7378aa3d81bab4\">  376</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01293.html#a6bd37be5877b28116c7378aa3d81bab4\">EvalStencils</a>(</div>\n-<div class=\"line\"><a id=\"l00377\" name=\"l00377\"></a><span class=\"lineno\">  377</span>                      SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00378\" name=\"l00378\"></a><span class=\"lineno\">  378</span>                      DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00379\" name=\"l00379\"></a><span class=\"lineno\">  379</span>                      STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n-<div class=\"line\"><a id=\"l00380\" name=\"l00380\"></a><span class=\"lineno\">  380</span>                      <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context)<span class=\"keyword\"> const</span></div>\n-<div class=\"line\"><a id=\"l00381\" name=\"l00381\"></a><span class=\"lineno\">  381</span><span class=\"keyword\">    </span>{</div>\n-<div class=\"line\"><a id=\"l00382\" name=\"l00382\"></a><span class=\"lineno\">  382</span>        <span class=\"keywordflow\">return</span> EvalStencils(srcBuffer-&gt;BindMTLBuffer(context), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00383\" name=\"l00383\"></a><span class=\"lineno\">  383</span>                            dstBuffer-&gt;BindMTLBuffer(context), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00384\" name=\"l00384\"></a><span class=\"lineno\">  384</span>                            0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l00385\" name=\"l00385\"></a><span class=\"lineno\">  385</span>                            0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l00386\" name=\"l00386\"></a><span class=\"lineno\">  386</span>                            stencilTable-&gt;GetSizesBuffer(),</div>\n-<div class=\"line\"><a id=\"l00387\" name=\"l00387\"></a><span class=\"lineno\">  387</span>                            stencilTable-&gt;GetOffsetsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00388\" name=\"l00388\"></a><span class=\"lineno\">  388</span>                            stencilTable-&gt;GetIndicesBuffer(),</div>\n-<div class=\"line\"><a id=\"l00389\" name=\"l00389\"></a><span class=\"lineno\">  389</span>                            stencilTable-&gt;GetWeightsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00390\" name=\"l00390\"></a><span class=\"lineno\">  390</span>                            0,</div>\n-<div class=\"line\"><a id=\"l00391\" name=\"l00391\"></a><span class=\"lineno\">  391</span>                            0,</div>\n-<div class=\"line\"><a id=\"l00392\" name=\"l00392\"></a><span class=\"lineno\">  392</span>                            <span class=\"comment\">/* start = */</span> 0,</div>\n-<div class=\"line\"><a id=\"l00393\" name=\"l00393\"></a><span class=\"lineno\">  393</span>                            <span class=\"comment\">/* end   = */</span> stencilTable-&gt;GetNumStencils(),</div>\n-<div class=\"line\"><a id=\"l00394\" name=\"l00394\"></a><span class=\"lineno\">  394</span>                            context);</div>\n-<div class=\"line\"><a id=\"l00395\" name=\"l00395\"></a><span class=\"lineno\">  395</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00396\" name=\"l00396\"></a><span class=\"lineno\">  396</span> </div>\n-<div class=\"line\"><a id=\"l00429\" name=\"l00429\"></a><span class=\"lineno\">  429</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00430\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00430\" name=\"l00430\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#a8b223dcc2eb6ca7b1389f206b86d3c60\">  430</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01293.html#a8b223dcc2eb6ca7b1389f206b86d3c60\">EvalStencils</a>(</div>\n-<div class=\"line\"><a id=\"l00431\" name=\"l00431\"></a><span class=\"lineno\">  431</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00432\" name=\"l00432\"></a><span class=\"lineno\">  432</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00433\" name=\"l00433\"></a><span class=\"lineno\">  433</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00434\" name=\"l00434\"></a><span class=\"lineno\">  434</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00435\" name=\"l00435\"></a><span class=\"lineno\">  435</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n-<div class=\"line\"><a id=\"l00436\" name=\"l00436\"></a><span class=\"lineno\">  436</span>        <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context)<span class=\"keyword\"> const</span></div>\n-<div class=\"line\"><a id=\"l00437\" name=\"l00437\"></a><span class=\"lineno\">  437</span><span class=\"keyword\">    </span>{</div>\n-<div class=\"line\"><a id=\"l00438\" name=\"l00438\"></a><span class=\"lineno\">  438</span>        <span class=\"keywordflow\">return</span> EvalStencils(srcBuffer-&gt;BindMTLBuffer(context), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00439\" name=\"l00439\"></a><span class=\"lineno\">  439</span>                            dstBuffer-&gt;BindMTLBuffer(context), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00440\" name=\"l00440\"></a><span class=\"lineno\">  440</span>                            duBuffer-&gt;BindMTLBuffer(context),  duDesc,</div>\n-<div class=\"line\"><a id=\"l00441\" name=\"l00441\"></a><span class=\"lineno\">  441</span>                            dvBuffer-&gt;BindMTLBuffer(context),  dvDesc,</div>\n-<div class=\"line\"><a id=\"l00442\" name=\"l00442\"></a><span class=\"lineno\">  442</span>                            stencilTable-&gt;GetSizesBuffer(),</div>\n-<div class=\"line\"><a id=\"l00443\" name=\"l00443\"></a><span class=\"lineno\">  443</span>                            stencilTable-&gt;GetOffsetsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00444\" name=\"l00444\"></a><span class=\"lineno\">  444</span>                            stencilTable-&gt;GetIndicesBuffer(),</div>\n-<div class=\"line\"><a id=\"l00445\" name=\"l00445\"></a><span class=\"lineno\">  445</span>                            stencilTable-&gt;GetWeightsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00446\" name=\"l00446\"></a><span class=\"lineno\">  446</span>                            stencilTable-&gt;GetDuWeightsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00447\" name=\"l00447\"></a><span class=\"lineno\">  447</span>                            stencilTable-&gt;GetDvWeightsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00448\" name=\"l00448\"></a><span class=\"lineno\">  448</span>                            <span class=\"comment\">/* start = */</span> 0,</div>\n-<div class=\"line\"><a id=\"l00449\" name=\"l00449\"></a><span class=\"lineno\">  449</span>                            <span class=\"comment\">/* end   = */</span> stencilTable-&gt;GetNumStencils(),</div>\n-<div class=\"line\"><a id=\"l00450\" name=\"l00450\"></a><span class=\"lineno\">  450</span>                            context);</div>\n-<div class=\"line\"><a id=\"l00451\" name=\"l00451\"></a><span class=\"lineno\">  451</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00452\" name=\"l00452\"></a><span class=\"lineno\">  452</span> </div>\n-<div class=\"line\"><a id=\"l00503\" name=\"l00503\"></a><span class=\"lineno\">  503</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00504\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00504\" name=\"l00504\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#a9e01da75168e927a75070da8dd09b06e\">  504</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01293.html#a9e01da75168e927a75070da8dd09b06e\">EvalStencils</a>(</div>\n-<div class=\"line\"><a id=\"l00505\" name=\"l00505\"></a><span class=\"lineno\">  505</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00506\" name=\"l00506\"></a><span class=\"lineno\">  506</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00507\" name=\"l00507\"></a><span class=\"lineno\">  507</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00508\" name=\"l00508\"></a><span class=\"lineno\">  508</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00509\" name=\"l00509\"></a><span class=\"lineno\">  509</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l00510\" name=\"l00510\"></a><span class=\"lineno\">  510</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l00511\" name=\"l00511\"></a><span class=\"lineno\">  511</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00512\" name=\"l00512\"></a><span class=\"lineno\">  512</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n-<div class=\"line\"><a id=\"l00513\" name=\"l00513\"></a><span class=\"lineno\">  513</span>        <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context)<span class=\"keyword\"> const</span></div>\n-<div class=\"line\"><a id=\"l00514\" name=\"l00514\"></a><span class=\"lineno\">  514</span><span class=\"keyword\">    </span>{</div>\n-<div class=\"line\"><a id=\"l00515\" name=\"l00515\"></a><span class=\"lineno\">  515</span>        <span class=\"keywordflow\">return</span> EvalStencils(srcBuffer-&gt;BindMTLBuffer(context), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00516\" name=\"l00516\"></a><span class=\"lineno\">  516</span>                            dstBuffer-&gt;BindMTLBuffer(context), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00517\" name=\"l00517\"></a><span class=\"lineno\">  517</span>                            duBuffer-&gt;BindMTLBuffer(context),  duDesc,</div>\n-<div class=\"line\"><a id=\"l00518\" name=\"l00518\"></a><span class=\"lineno\">  518</span>                            dvBuffer-&gt;BindMTLBuffer(context),  dvDesc,</div>\n-<div class=\"line\"><a id=\"l00519\" name=\"l00519\"></a><span class=\"lineno\">  519</span>                            duuBuffer-&gt;BindMTLBuffer(context), duuDesc,</div>\n-<div class=\"line\"><a id=\"l00520\" name=\"l00520\"></a><span class=\"lineno\">  520</span>                            duvBuffer-&gt;BindMTLBuffer(context), duvDesc,</div>\n-<div class=\"line\"><a id=\"l00521\" name=\"l00521\"></a><span class=\"lineno\">  521</span>                            dvvBuffer-&gt;BindMTLBuffer(context), dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00522\" name=\"l00522\"></a><span class=\"lineno\">  522</span>                            stencilTable-&gt;GetSizesBuffer(),</div>\n-<div class=\"line\"><a id=\"l00523\" name=\"l00523\"></a><span class=\"lineno\">  523</span>                            stencilTable-&gt;GetOffsetsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00524\" name=\"l00524\"></a><span class=\"lineno\">  524</span>                            stencilTable-&gt;GetIndicesBuffer(),</div>\n-<div class=\"line\"><a id=\"l00525\" name=\"l00525\"></a><span class=\"lineno\">  525</span>                            stencilTable-&gt;GetWeightsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00526\" name=\"l00526\"></a><span class=\"lineno\">  526</span>                            stencilTable-&gt;GetDuWeightsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00527\" name=\"l00527\"></a><span class=\"lineno\">  527</span>                            stencilTable-&gt;GetDvWeightsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00528\" name=\"l00528\"></a><span class=\"lineno\">  528</span>                            stencilTable-&gt;GetDuuWeightsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00529\" name=\"l00529\"></a><span class=\"lineno\">  529</span>                            stencilTable-&gt;GetDuvWeightsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00530\" name=\"l00530\"></a><span class=\"lineno\">  530</span>                            stencilTable-&gt;GetDvvWeightsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00531\" name=\"l00531\"></a><span class=\"lineno\">  531</span>                            <span class=\"comment\">/* start = */</span> 0,</div>\n-<div class=\"line\"><a id=\"l00532\" name=\"l00532\"></a><span class=\"lineno\">  532</span>                            <span class=\"comment\">/* end   = */</span> stencilTable-&gt;GetNumStencils(),</div>\n-<div class=\"line\"><a id=\"l00533\" name=\"l00533\"></a><span class=\"lineno\">  533</span>                            context);</div>\n-<div class=\"line\"><a id=\"l00534\" name=\"l00534\"></a><span class=\"lineno\">  534</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00535\" name=\"l00535\"></a><span class=\"lineno\">  535</span> </div>\n-<div class=\"line\"><a id=\"l00574\" name=\"l00574\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#aa877bdc66715e90bb513a7d0c08f8a73\">  574</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01293.html#aa877bdc66715e90bb513a7d0c08f8a73\">EvalStencils</a>(id&lt;MTLBuffer&gt; srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00575\" name=\"l00575\"></a><span class=\"lineno\">  575</span>                      id&lt;MTLBuffer&gt; dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00576\" name=\"l00576\"></a><span class=\"lineno\">  576</span>                      id&lt;MTLBuffer&gt; duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00577\" name=\"l00577\"></a><span class=\"lineno\">  577</span>                      id&lt;MTLBuffer&gt; dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00578\" name=\"l00578\"></a><span class=\"lineno\">  578</span>                      id&lt;MTLBuffer&gt; sizesBuffer,</div>\n-<div class=\"line\"><a id=\"l00579\" name=\"l00579\"></a><span class=\"lineno\">  579</span>                      id&lt;MTLBuffer&gt; offsetsBuffer,</div>\n-<div class=\"line\"><a id=\"l00580\" name=\"l00580\"></a><span class=\"lineno\">  580</span>                      id&lt;MTLBuffer&gt; indicesBuffer,</div>\n-<div class=\"line\"><a id=\"l00581\" name=\"l00581\"></a><span class=\"lineno\">  581</span>                      id&lt;MTLBuffer&gt; weightsBuffer,</div>\n-<div class=\"line\"><a id=\"l00582\" name=\"l00582\"></a><span class=\"lineno\">  582</span>                      id&lt;MTLBuffer&gt; duWeightsBuffer,</div>\n-<div class=\"line\"><a id=\"l00583\" name=\"l00583\"></a><span class=\"lineno\">  583</span>                      id&lt;MTLBuffer&gt; dvWeightsBuffer,</div>\n-<div class=\"line\"><a id=\"l00584\" name=\"l00584\"></a><span class=\"lineno\">  584</span>                      <span class=\"keywordtype\">int</span> start,</div>\n-<div class=\"line\"><a id=\"l00585\" name=\"l00585\"></a><span class=\"lineno\">  585</span>                      <span class=\"keywordtype\">int</span> end,</div>\n-<div class=\"line\"><a id=\"l00586\" name=\"l00586\"></a><span class=\"lineno\">  586</span>                      <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00587\" name=\"l00587\"></a><span class=\"lineno\">  587</span> </div>\n-<div class=\"line\"><a id=\"l00644\" name=\"l00644\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#a01f08038160f2a7981d56c21a69c0eb9\">  644</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01293.html#a01f08038160f2a7981d56c21a69c0eb9\">EvalStencils</a>(id&lt;MTLBuffer&gt; srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00645\" name=\"l00645\"></a><span class=\"lineno\">  645</span>                      id&lt;MTLBuffer&gt; dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00646\" name=\"l00646\"></a><span class=\"lineno\">  646</span>                      id&lt;MTLBuffer&gt; duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00647\" name=\"l00647\"></a><span class=\"lineno\">  647</span>                      id&lt;MTLBuffer&gt; dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00648\" name=\"l00648\"></a><span class=\"lineno\">  648</span>                      id&lt;MTLBuffer&gt; duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l00649\" name=\"l00649\"></a><span class=\"lineno\">  649</span>                      id&lt;MTLBuffer&gt; duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l00650\" name=\"l00650\"></a><span class=\"lineno\">  650</span>                      id&lt;MTLBuffer&gt; dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00651\" name=\"l00651\"></a><span class=\"lineno\">  651</span>                      id&lt;MTLBuffer&gt; sizesBuffer,</div>\n-<div class=\"line\"><a id=\"l00652\" name=\"l00652\"></a><span class=\"lineno\">  652</span>                      id&lt;MTLBuffer&gt; offsetsBuffer,</div>\n-<div class=\"line\"><a id=\"l00653\" name=\"l00653\"></a><span class=\"lineno\">  653</span>                      id&lt;MTLBuffer&gt; indicesBuffer,</div>\n-<div class=\"line\"><a id=\"l00654\" name=\"l00654\"></a><span class=\"lineno\">  654</span>                      id&lt;MTLBuffer&gt; weightsBuffer,</div>\n-<div class=\"line\"><a id=\"l00655\" name=\"l00655\"></a><span class=\"lineno\">  655</span>                      id&lt;MTLBuffer&gt; duWeightsBuffer,</div>\n-<div class=\"line\"><a id=\"l00656\" name=\"l00656\"></a><span class=\"lineno\">  656</span>                      id&lt;MTLBuffer&gt; dvWeightsBuffer,</div>\n-<div class=\"line\"><a id=\"l00657\" name=\"l00657\"></a><span class=\"lineno\">  657</span>                      id&lt;MTLBuffer&gt; duuWeightsBuffer,</div>\n-<div class=\"line\"><a id=\"l00658\" name=\"l00658\"></a><span class=\"lineno\">  658</span>                      id&lt;MTLBuffer&gt; duvWeightsBuffer,</div>\n-<div class=\"line\"><a id=\"l00659\" name=\"l00659\"></a><span class=\"lineno\">  659</span>                      id&lt;MTLBuffer&gt; dvvWeightsBuffer,</div>\n-<div class=\"line\"><a id=\"l00660\" name=\"l00660\"></a><span class=\"lineno\">  660</span>                      <span class=\"keywordtype\">int</span> start,</div>\n-<div class=\"line\"><a id=\"l00661\" name=\"l00661\"></a><span class=\"lineno\">  661</span>                      <span class=\"keywordtype\">int</span> end,</div>\n-<div class=\"line\"><a id=\"l00662\" name=\"l00662\"></a><span class=\"lineno\">  662</span>                      <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00663\" name=\"l00663\"></a><span class=\"lineno\">  663</span> </div>\n-<div class=\"line\"><a id=\"l00669\" name=\"l00669\"></a><span class=\"lineno\">  669</span> </div>\n-<div class=\"line\"><a id=\"l00703\" name=\"l00703\"></a><span class=\"lineno\">  703</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l00704\" name=\"l00704\"></a><span class=\"lineno\">  704</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00705\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00705\" name=\"l00705\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#a1e8b40a131056bb2e3868d4dd4a94ba6\">  705</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01293.html#a1e8b40a131056bb2e3868d4dd4a94ba6\">EvalPatches</a>(</div>\n-<div class=\"line\"><a id=\"l00706\" name=\"l00706\"></a><span class=\"lineno\">  706</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00707\" name=\"l00707\"></a><span class=\"lineno\">  707</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00708\" name=\"l00708\"></a><span class=\"lineno\">  708</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00709\" name=\"l00709\"></a><span class=\"lineno\">  709</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l00710\" name=\"l00710\"></a><span class=\"lineno\">  710</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l00711\" name=\"l00711\"></a><span class=\"lineno\">  711</span>        <a class=\"code hl_class\" href=\"a01293.html\">MTLComputeEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n-<div class=\"line\"><a id=\"l00712\" name=\"l00712\"></a><span class=\"lineno\">  712</span>        <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context) {</div>\n-<div class=\"line\"><a id=\"l00713\" name=\"l00713\"></a><span class=\"lineno\">  713</span> </div>\n-<div class=\"line\"><a id=\"l00714\" name=\"l00714\"></a><span class=\"lineno\">  714</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l00715\" name=\"l00715\"></a><span class=\"lineno\">  715</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01293.html#a1e8b40a131056bb2e3868d4dd4a94ba6\">EvalPatches</a>(srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l00716\" name=\"l00716\"></a><span class=\"lineno\">  716</span>                                         dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00717\" name=\"l00717\"></a><span class=\"lineno\">  717</span>                                         numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l00718\" name=\"l00718\"></a><span class=\"lineno\">  718</span>                                         patchTable,</div>\n-<div class=\"line\"><a id=\"l00719\" name=\"l00719\"></a><span class=\"lineno\">  719</span>                                         context);</div>\n-<div class=\"line\"><a id=\"l00720\" name=\"l00720\"></a><span class=\"lineno\">  720</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00721\" name=\"l00721\"></a><span class=\"lineno\">  721</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n-<div class=\"line\"><a id=\"l00722\" name=\"l00722\"></a><span class=\"lineno\">  722</span>            instance = Create(srcDesc, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00723\" name=\"l00723\"></a><span class=\"lineno\">  723</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l00724\" name=\"l00724\"></a><span class=\"lineno\">  724</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l00725\" name=\"l00725\"></a><span class=\"lineno\">  725</span>                              context);</div>\n-<div class=\"line\"><a id=\"l00726\" name=\"l00726\"></a><span class=\"lineno\">  726</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l00727\" name=\"l00727\"></a><span class=\"lineno\">  727</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01293.html#a1e8b40a131056bb2e3868d4dd4a94ba6\">EvalPatches</a>(srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l00728\" name=\"l00728\"></a><span class=\"lineno\">  728</span>                                               dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00729\" name=\"l00729\"></a><span class=\"lineno\">  729</span>                                               numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l00730\" name=\"l00730\"></a><span class=\"lineno\">  730</span>                                               patchTable,</div>\n-<div class=\"line\"><a id=\"l00731\" name=\"l00731\"></a><span class=\"lineno\">  731</span>                                               context);</div>\n-<div class=\"line\"><a id=\"l00732\" name=\"l00732\"></a><span class=\"lineno\">  732</span>                <span class=\"keyword\">delete</span> instance;</div>\n-<div class=\"line\"><a id=\"l00733\" name=\"l00733\"></a><span class=\"lineno\">  733</span>                <span class=\"keywordflow\">return</span> r;</div>\n-<div class=\"line\"><a id=\"l00734\" name=\"l00734\"></a><span class=\"lineno\">  734</span>            }</div>\n-<div class=\"line\"><a id=\"l00735\" name=\"l00735\"></a><span class=\"lineno\">  735</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00736\" name=\"l00736\"></a><span class=\"lineno\">  736</span>        }</div>\n-<div class=\"line\"><a id=\"l00737\" name=\"l00737\"></a><span class=\"lineno\">  737</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00738\" name=\"l00738\"></a><span class=\"lineno\">  738</span> </div>\n-<div class=\"line\"><a id=\"l00784\" name=\"l00784\"></a><span class=\"lineno\">  784</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l00785\" name=\"l00785\"></a><span class=\"lineno\">  785</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00786\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00786\" name=\"l00786\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#a04f16e003e67523aaa60a18a7104a83b\">  786</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01293.html#a04f16e003e67523aaa60a18a7104a83b\">EvalPatches</a>(</div>\n-<div class=\"line\"><a id=\"l00787\" name=\"l00787\"></a><span class=\"lineno\">  787</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00788\" name=\"l00788\"></a><span class=\"lineno\">  788</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00789\" name=\"l00789\"></a><span class=\"lineno\">  789</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00790\" name=\"l00790\"></a><span class=\"lineno\">  790</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00791\" name=\"l00791\"></a><span class=\"lineno\">  791</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00792\" name=\"l00792\"></a><span class=\"lineno\">  792</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l00793\" name=\"l00793\"></a><span class=\"lineno\">  793</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l00794\" name=\"l00794\"></a><span class=\"lineno\">  794</span>        <a class=\"code hl_class\" href=\"a01293.html\">MTLComputeEvaluator</a>* instance,</div>\n-<div class=\"line\"><a id=\"l00795\" name=\"l00795\"></a><span class=\"lineno\">  795</span>        <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context) {</div>\n-<div class=\"line\"><a id=\"l00796\" name=\"l00796\"></a><span class=\"lineno\">  796</span> </div>\n-<div class=\"line\"><a id=\"l00797\" name=\"l00797\"></a><span class=\"lineno\">  797</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l00798\" name=\"l00798\"></a><span class=\"lineno\">  798</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01293.html#a1e8b40a131056bb2e3868d4dd4a94ba6\">EvalPatches</a>(srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l00799\" name=\"l00799\"></a><span class=\"lineno\">  799</span>                                         dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00800\" name=\"l00800\"></a><span class=\"lineno\">  800</span>                                         duBuffer, duDesc,</div>\n-<div class=\"line\"><a id=\"l00801\" name=\"l00801\"></a><span class=\"lineno\">  801</span>                                         dvBuffer, dvDesc,</div>\n-<div class=\"line\"><a id=\"l00802\" name=\"l00802\"></a><span class=\"lineno\">  802</span>                                         numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l00803\" name=\"l00803\"></a><span class=\"lineno\">  803</span>                                         patchTable,</div>\n-<div class=\"line\"><a id=\"l00804\" name=\"l00804\"></a><span class=\"lineno\">  804</span>                                         context);</div>\n-<div class=\"line\"><a id=\"l00805\" name=\"l00805\"></a><span class=\"lineno\">  805</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00806\" name=\"l00806\"></a><span class=\"lineno\">  806</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n-<div class=\"line\"><a id=\"l00807\" name=\"l00807\"></a><span class=\"lineno\">  807</span>            instance = Create(srcDesc, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00808\" name=\"l00808\"></a><span class=\"lineno\">  808</span>                              duDesc, dvDesc, context);</div>\n-<div class=\"line\"><a id=\"l00809\" name=\"l00809\"></a><span class=\"lineno\">  809</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l00810\" name=\"l00810\"></a><span class=\"lineno\">  810</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01293.html#a1e8b40a131056bb2e3868d4dd4a94ba6\">EvalPatches</a>(srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l00811\" name=\"l00811\"></a><span class=\"lineno\">  811</span>                                               dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00812\" name=\"l00812\"></a><span class=\"lineno\">  812</span>                                               duBuffer, duDesc,</div>\n-<div class=\"line\"><a id=\"l00813\" name=\"l00813\"></a><span class=\"lineno\">  813</span>                                               dvBuffer, dvDesc,</div>\n-<div class=\"line\"><a id=\"l00814\" name=\"l00814\"></a><span class=\"lineno\">  814</span>                                               numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l00815\" name=\"l00815\"></a><span class=\"lineno\">  815</span>                                               patchTable,</div>\n-<div class=\"line\"><a id=\"l00816\" name=\"l00816\"></a><span class=\"lineno\">  816</span>                                               context);</div>\n-<div class=\"line\"><a id=\"l00817\" name=\"l00817\"></a><span class=\"lineno\">  817</span>                <span class=\"keyword\">delete</span> instance;</div>\n-<div class=\"line\"><a id=\"l00818\" name=\"l00818\"></a><span class=\"lineno\">  818</span>                <span class=\"keywordflow\">return</span> r;</div>\n-<div class=\"line\"><a id=\"l00819\" name=\"l00819\"></a><span class=\"lineno\">  819</span>            }</div>\n-<div class=\"line\"><a id=\"l00820\" name=\"l00820\"></a><span class=\"lineno\">  820</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00821\" name=\"l00821\"></a><span class=\"lineno\">  821</span>        }</div>\n-<div class=\"line\"><a id=\"l00822\" name=\"l00822\"></a><span class=\"lineno\">  822</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00823\" name=\"l00823\"></a><span class=\"lineno\">  823</span> </div>\n-<div class=\"line\"><a id=\"l00887\" name=\"l00887\"></a><span class=\"lineno\">  887</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l00888\" name=\"l00888\"></a><span class=\"lineno\">  888</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00889\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00889\" name=\"l00889\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#a8eb63e824548d0125a66fc5a4435d5f7\">  889</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01293.html#a8eb63e824548d0125a66fc5a4435d5f7\">EvalPatches</a>(</div>\n-<div class=\"line\"><a id=\"l00890\" name=\"l00890\"></a><span class=\"lineno\">  890</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00891\" name=\"l00891\"></a><span class=\"lineno\">  891</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00892\" name=\"l00892\"></a><span class=\"lineno\">  892</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00893\" name=\"l00893\"></a><span class=\"lineno\">  893</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00894\" name=\"l00894\"></a><span class=\"lineno\">  894</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l00895\" name=\"l00895\"></a><span class=\"lineno\">  895</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l00896\" name=\"l00896\"></a><span class=\"lineno\">  896</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00897\" name=\"l00897\"></a><span class=\"lineno\">  897</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00898\" name=\"l00898\"></a><span class=\"lineno\">  898</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l00899\" name=\"l00899\"></a><span class=\"lineno\">  899</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l00900\" name=\"l00900\"></a><span class=\"lineno\">  900</span>        <a class=\"code hl_class\" href=\"a01293.html\">MTLComputeEvaluator</a>* instance,</div>\n-<div class=\"line\"><a id=\"l00901\" name=\"l00901\"></a><span class=\"lineno\">  901</span>        <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context) {</div>\n-<div class=\"line\"><a id=\"l00902\" name=\"l00902\"></a><span class=\"lineno\">  902</span> </div>\n-<div class=\"line\"><a id=\"l00903\" name=\"l00903\"></a><span class=\"lineno\">  903</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l00904\" name=\"l00904\"></a><span class=\"lineno\">  904</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01293.html#a1e8b40a131056bb2e3868d4dd4a94ba6\">EvalPatches</a>(srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l00905\" name=\"l00905\"></a><span class=\"lineno\">  905</span>                                         dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00906\" name=\"l00906\"></a><span class=\"lineno\">  906</span>                                         duBuffer, duDesc,</div>\n-<div class=\"line\"><a id=\"l00907\" name=\"l00907\"></a><span class=\"lineno\">  907</span>                                         dvBuffer, dvDesc,</div>\n-<div class=\"line\"><a id=\"l00908\" name=\"l00908\"></a><span class=\"lineno\">  908</span>                                         duuBuffer, duuDesc,</div>\n-<div class=\"line\"><a id=\"l00909\" name=\"l00909\"></a><span class=\"lineno\">  909</span>                                         duvBuffer, duvDesc,</div>\n-<div class=\"line\"><a id=\"l00910\" name=\"l00910\"></a><span class=\"lineno\">  910</span>                                         dvvBuffer, dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00911\" name=\"l00911\"></a><span class=\"lineno\">  911</span>                                         numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l00912\" name=\"l00912\"></a><span class=\"lineno\">  912</span>                                         patchTable,</div>\n-<div class=\"line\"><a id=\"l00913\" name=\"l00913\"></a><span class=\"lineno\">  913</span>                                         context);</div>\n-<div class=\"line\"><a id=\"l00914\" name=\"l00914\"></a><span class=\"lineno\">  914</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00915\" name=\"l00915\"></a><span class=\"lineno\">  915</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n-<div class=\"line\"><a id=\"l00916\" name=\"l00916\"></a><span class=\"lineno\">  916</span>            instance = Create(srcDesc, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00917\" name=\"l00917\"></a><span class=\"lineno\">  917</span>                              duDesc, dvDesc,</div>\n-<div class=\"line\"><a id=\"l00918\" name=\"l00918\"></a><span class=\"lineno\">  918</span>                              duuDesc, duvDesc, dvvDesc, context);</div>\n-<div class=\"line\"><a id=\"l00919\" name=\"l00919\"></a><span class=\"lineno\">  919</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l00920\" name=\"l00920\"></a><span class=\"lineno\">  920</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01293.html#a1e8b40a131056bb2e3868d4dd4a94ba6\">EvalPatches</a>(srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l00921\" name=\"l00921\"></a><span class=\"lineno\">  921</span>                                               dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00922\" name=\"l00922\"></a><span class=\"lineno\">  922</span>                                               duBuffer, duDesc,</div>\n-<div class=\"line\"><a id=\"l00923\" name=\"l00923\"></a><span class=\"lineno\">  923</span>                                               dvBuffer, dvDesc,</div>\n-<div class=\"line\"><a id=\"l00924\" name=\"l00924\"></a><span class=\"lineno\">  924</span>                                               duuBuffer, duuDesc,</div>\n-<div class=\"line\"><a id=\"l00925\" name=\"l00925\"></a><span class=\"lineno\">  925</span>                                               duvBuffer, duvDesc,</div>\n-<div class=\"line\"><a id=\"l00926\" name=\"l00926\"></a><span class=\"lineno\">  926</span>                                               dvvBuffer, dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00927\" name=\"l00927\"></a><span class=\"lineno\">  927</span>                                               numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l00928\" name=\"l00928\"></a><span class=\"lineno\">  928</span>                                               patchTable,</div>\n-<div class=\"line\"><a id=\"l00929\" name=\"l00929\"></a><span class=\"lineno\">  929</span>                                               context);</div>\n-<div class=\"line\"><a id=\"l00930\" name=\"l00930\"></a><span class=\"lineno\">  930</span>                <span class=\"keyword\">delete</span> instance;</div>\n-<div class=\"line\"><a id=\"l00931\" name=\"l00931\"></a><span class=\"lineno\">  931</span>                <span class=\"keywordflow\">return</span> r;</div>\n-<div class=\"line\"><a id=\"l00932\" name=\"l00932\"></a><span class=\"lineno\">  932</span>            }</div>\n-<div class=\"line\"><a id=\"l00933\" name=\"l00933\"></a><span class=\"lineno\">  933</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00934\" name=\"l00934\"></a><span class=\"lineno\">  934</span>        }</div>\n-<div class=\"line\"><a id=\"l00935\" name=\"l00935\"></a><span class=\"lineno\">  935</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00936\" name=\"l00936\"></a><span class=\"lineno\">  936</span> </div>\n-<div class=\"line\"><a id=\"l00964\" name=\"l00964\"></a><span class=\"lineno\">  964</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l00965\" name=\"l00965\"></a><span class=\"lineno\">  965</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00966\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00966\" name=\"l00966\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#aab3cbda7289b76b077b371b92e9afaf3\">  966</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01293.html#aab3cbda7289b76b077b371b92e9afaf3\">EvalPatches</a>(</div>\n-<div class=\"line\"><a id=\"l00967\" name=\"l00967\"></a><span class=\"lineno\">  967</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00968\" name=\"l00968\"></a><span class=\"lineno\">  968</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00969\" name=\"l00969\"></a><span class=\"lineno\">  969</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00970\" name=\"l00970\"></a><span class=\"lineno\">  970</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l00971\" name=\"l00971\"></a><span class=\"lineno\">  971</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l00972\" name=\"l00972\"></a><span class=\"lineno\">  972</span>        <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00973\" name=\"l00973\"></a><span class=\"lineno\">  973</span> </div>\n-<div class=\"line\"><a id=\"l00974\" name=\"l00974\"></a><span class=\"lineno\">  974</span>        <span class=\"keywordflow\">return</span> EvalPatches(srcBuffer-&gt;BindMTLBuffer(context), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00975\" name=\"l00975\"></a><span class=\"lineno\">  975</span>                           dstBuffer-&gt;BindMTLBuffer(context), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00976\" name=\"l00976\"></a><span class=\"lineno\">  976</span>                           0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l00977\" name=\"l00977\"></a><span class=\"lineno\">  977</span>                           0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l00978\" name=\"l00978\"></a><span class=\"lineno\">  978</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00979\" name=\"l00979\"></a><span class=\"lineno\">  979</span>                           patchCoords-&gt;BindMTLBuffer(context),</div>\n-<div class=\"line\"><a id=\"l00980\" name=\"l00980\"></a><span class=\"lineno\">  980</span>                           patchTable-&gt;GetPatchArrays(),</div>\n-<div class=\"line\"><a id=\"l00981\" name=\"l00981\"></a><span class=\"lineno\">  981</span>                           patchTable-&gt;GetPatchIndexBuffer(),</div>\n-<div class=\"line\"><a id=\"l00982\" name=\"l00982\"></a><span class=\"lineno\">  982</span>                           patchTable-&gt;GetPatchParamBuffer(),</div>\n-<div class=\"line\"><a id=\"l00983\" name=\"l00983\"></a><span class=\"lineno\">  983</span>                           context);</div>\n-<div class=\"line\"><a id=\"l00984\" name=\"l00984\"></a><span class=\"lineno\">  984</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00985\" name=\"l00985\"></a><span class=\"lineno\">  985</span> </div>\n-<div class=\"line\"><a id=\"l01023\" name=\"l01023\"></a><span class=\"lineno\"> 1023</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01024\" name=\"l01024\"></a><span class=\"lineno\"> 1024</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01025\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01025\" name=\"l01025\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#ade51863a5d2d4b642f8c78b9e85faf38\"> 1025</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01293.html#ade51863a5d2d4b642f8c78b9e85faf38\">EvalPatches</a>(</div>\n-<div class=\"line\"><a id=\"l01026\" name=\"l01026\"></a><span class=\"lineno\"> 1026</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01027\" name=\"l01027\"></a><span class=\"lineno\"> 1027</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01028\" name=\"l01028\"></a><span class=\"lineno\"> 1028</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l01029\" name=\"l01029\"></a><span class=\"lineno\"> 1029</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l01030\" name=\"l01030\"></a><span class=\"lineno\"> 1030</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01031\" name=\"l01031\"></a><span class=\"lineno\"> 1031</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01032\" name=\"l01032\"></a><span class=\"lineno\"> 1032</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l01033\" name=\"l01033\"></a><span class=\"lineno\"> 1033</span>        <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l01034\" name=\"l01034\"></a><span class=\"lineno\"> 1034</span> </div>\n-<div class=\"line\"><a id=\"l01035\" name=\"l01035\"></a><span class=\"lineno\"> 1035</span>        <span class=\"keywordflow\">return</span> EvalPatches(srcBuffer-&gt;BindMTLBuffer(context), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01036\" name=\"l01036\"></a><span class=\"lineno\"> 1036</span>                           dstBuffer-&gt;BindMTLBuffer(context), dstDesc,</div>\n-<div class=\"line\"><a id=\"l01037\" name=\"l01037\"></a><span class=\"lineno\"> 1037</span>                           duBuffer-&gt;BindMTLBuffer(context),  duDesc,</div>\n-<div class=\"line\"><a id=\"l01038\" name=\"l01038\"></a><span class=\"lineno\"> 1038</span>                           dvBuffer-&gt;BindMTLBuffer(context),  dvDesc,</div>\n-<div class=\"line\"><a id=\"l01039\" name=\"l01039\"></a><span class=\"lineno\"> 1039</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01040\" name=\"l01040\"></a><span class=\"lineno\"> 1040</span>                           patchCoords-&gt;BindMTLBuffer(context),</div>\n-<div class=\"line\"><a id=\"l01041\" name=\"l01041\"></a><span class=\"lineno\"> 1041</span>                           patchTable-&gt;GetPatchArrays(),</div>\n-<div class=\"line\"><a id=\"l01042\" name=\"l01042\"></a><span class=\"lineno\"> 1042</span>                           patchTable-&gt;GetPatchIndexBuffer(),</div>\n-<div class=\"line\"><a id=\"l01043\" name=\"l01043\"></a><span class=\"lineno\"> 1043</span>                           patchTable-&gt;GetPatchParamBuffer(),</div>\n-<div class=\"line\"><a id=\"l01044\" name=\"l01044\"></a><span class=\"lineno\"> 1044</span>                           context);</div>\n-<div class=\"line\"><a id=\"l01045\" name=\"l01045\"></a><span class=\"lineno\"> 1045</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01046\" name=\"l01046\"></a><span class=\"lineno\"> 1046</span> </div>\n-<div class=\"line\"><a id=\"l01102\" name=\"l01102\"></a><span class=\"lineno\"> 1102</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01103\" name=\"l01103\"></a><span class=\"lineno\"> 1103</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01104\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01104\" name=\"l01104\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#add1df0176df3d03028f001f041f26d5c\"> 1104</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01293.html#add1df0176df3d03028f001f041f26d5c\">EvalPatches</a>(</div>\n-<div class=\"line\"><a id=\"l01105\" name=\"l01105\"></a><span class=\"lineno\"> 1105</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01106\" name=\"l01106\"></a><span class=\"lineno\"> 1106</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01107\" name=\"l01107\"></a><span class=\"lineno\"> 1107</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l01108\" name=\"l01108\"></a><span class=\"lineno\"> 1108</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l01109\" name=\"l01109\"></a><span class=\"lineno\"> 1109</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l01110\" name=\"l01110\"></a><span class=\"lineno\"> 1110</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l01111\" name=\"l01111\"></a><span class=\"lineno\"> 1111</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l01112\" name=\"l01112\"></a><span class=\"lineno\"> 1112</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01113\" name=\"l01113\"></a><span class=\"lineno\"> 1113</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01114\" name=\"l01114\"></a><span class=\"lineno\"> 1114</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l01115\" name=\"l01115\"></a><span class=\"lineno\"> 1115</span>        <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l01116\" name=\"l01116\"></a><span class=\"lineno\"> 1116</span> </div>\n-<div class=\"line\"><a id=\"l01117\" name=\"l01117\"></a><span class=\"lineno\"> 1117</span>        <span class=\"keywordflow\">return</span> EvalPatches(srcBuffer-&gt;BindMTLBuffer(context), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01118\" name=\"l01118\"></a><span class=\"lineno\"> 1118</span>                           dstBuffer-&gt;BindMTLBuffer(context), dstDesc,</div>\n-<div class=\"line\"><a id=\"l01119\" name=\"l01119\"></a><span class=\"lineno\"> 1119</span>                           duBuffer-&gt;BindMTLBuffer(context),  duDesc,</div>\n-<div class=\"line\"><a id=\"l01120\" name=\"l01120\"></a><span class=\"lineno\"> 1120</span>                           dvBuffer-&gt;BindMTLBuffer(context),  dvDesc,</div>\n-<div class=\"line\"><a id=\"l01121\" name=\"l01121\"></a><span class=\"lineno\"> 1121</span>                           duuBuffer-&gt;BindMTLBuffer(context), duuDesc,</div>\n-<div class=\"line\"><a id=\"l01122\" name=\"l01122\"></a><span class=\"lineno\"> 1122</span>                           duvBuffer-&gt;BindMTLBuffer(context), duvDesc,</div>\n-<div class=\"line\"><a id=\"l01123\" name=\"l01123\"></a><span class=\"lineno\"> 1123</span>                           dvvBuffer-&gt;BindMTLBuffer(context), dvvDesc,</div>\n-<div class=\"line\"><a id=\"l01124\" name=\"l01124\"></a><span class=\"lineno\"> 1124</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01125\" name=\"l01125\"></a><span class=\"lineno\"> 1125</span>                           patchCoords-&gt;BindMTLBuffer(context),</div>\n-<div class=\"line\"><a id=\"l01126\" name=\"l01126\"></a><span class=\"lineno\"> 1126</span>                           patchTable-&gt;GetPatchArrays(),</div>\n-<div class=\"line\"><a id=\"l01127\" name=\"l01127\"></a><span class=\"lineno\"> 1127</span>                           patchTable-&gt;GetPatchIndexBuffer(),</div>\n-<div class=\"line\"><a id=\"l01128\" name=\"l01128\"></a><span class=\"lineno\"> 1128</span>                           patchTable-&gt;GetPatchParamBuffer(),</div>\n-<div class=\"line\"><a id=\"l01129\" name=\"l01129\"></a><span class=\"lineno\"> 1129</span>                           context);</div>\n-<div class=\"line\"><a id=\"l01130\" name=\"l01130\"></a><span class=\"lineno\"> 1130</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01131\" name=\"l01131\"></a><span class=\"lineno\"> 1131</span> </div>\n-<div class=\"line\"><a id=\"l01132\" name=\"l01132\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#af6b86e7d88e00a0f6e0e824818117f53\"> 1132</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01293.html#af6b86e7d88e00a0f6e0e824818117f53\">EvalPatches</a>(id&lt;MTLBuffer&gt; srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01133\" name=\"l01133\"></a><span class=\"lineno\"> 1133</span>                     id&lt;MTLBuffer&gt; dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01134\" name=\"l01134\"></a><span class=\"lineno\"> 1134</span>                     id&lt;MTLBuffer&gt; duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l01135\" name=\"l01135\"></a><span class=\"lineno\"> 1135</span>                     id&lt;MTLBuffer&gt; dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l01136\" name=\"l01136\"></a><span class=\"lineno\"> 1136</span>                     <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01137\" name=\"l01137\"></a><span class=\"lineno\"> 1137</span>                     id&lt;MTLBuffer&gt; patchCoordsBuffer,</div>\n-<div class=\"line\"><a id=\"l01138\" name=\"l01138\"></a><span class=\"lineno\"> 1138</span>                     <span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"a00912.html#a98098cd229f60d2397d84a76fe654a31\">PatchArrayVector</a> &amp;patchArrays,</div>\n-<div class=\"line\"><a id=\"l01139\" name=\"l01139\"></a><span class=\"lineno\"> 1139</span>                     id&lt;MTLBuffer&gt; patchIndexBuffer,</div>\n-<div class=\"line\"><a id=\"l01140\" name=\"l01140\"></a><span class=\"lineno\"> 1140</span>                     id&lt;MTLBuffer&gt; patchParamsBuffer,</div>\n-<div class=\"line\"><a id=\"l01141\" name=\"l01141\"></a><span class=\"lineno\"> 1141</span>                     <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l01142\" name=\"l01142\"></a><span class=\"lineno\"> 1142</span> </div>\n-<div class=\"line\"><a id=\"l01143\" name=\"l01143\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#a70f82ef5ff338e6170e98480997ecc86\"> 1143</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01293.html#a70f82ef5ff338e6170e98480997ecc86\">EvalPatches</a>(id&lt;MTLBuffer&gt; srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01144\" name=\"l01144\"></a><span class=\"lineno\"> 1144</span>                     id&lt;MTLBuffer&gt; dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01145\" name=\"l01145\"></a><span class=\"lineno\"> 1145</span>                     id&lt;MTLBuffer&gt; duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l01146\" name=\"l01146\"></a><span class=\"lineno\"> 1146</span>                     id&lt;MTLBuffer&gt; dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l01147\" name=\"l01147\"></a><span class=\"lineno\"> 1147</span>                     id&lt;MTLBuffer&gt; duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l01148\" name=\"l01148\"></a><span class=\"lineno\"> 1148</span>                     id&lt;MTLBuffer&gt; duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l01149\" name=\"l01149\"></a><span class=\"lineno\"> 1149</span>                     id&lt;MTLBuffer&gt; dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l01150\" name=\"l01150\"></a><span class=\"lineno\"> 1150</span>                     <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01151\" name=\"l01151\"></a><span class=\"lineno\"> 1151</span>                     id&lt;MTLBuffer&gt; patchCoordsBuffer,</div>\n-<div class=\"line\"><a id=\"l01152\" name=\"l01152\"></a><span class=\"lineno\"> 1152</span>                     <span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"a00912.html#a98098cd229f60d2397d84a76fe654a31\">PatchArrayVector</a> &amp;patchArrays,</div>\n-<div class=\"line\"><a id=\"l01153\" name=\"l01153\"></a><span class=\"lineno\"> 1153</span>                     id&lt;MTLBuffer&gt; patchIndexBuffer,</div>\n-<div class=\"line\"><a id=\"l01154\" name=\"l01154\"></a><span class=\"lineno\"> 1154</span>                     id&lt;MTLBuffer&gt; patchParamsBuffer,</div>\n-<div class=\"line\"><a id=\"l01155\" name=\"l01155\"></a><span class=\"lineno\"> 1155</span>                     <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l01156\" name=\"l01156\"></a><span class=\"lineno\"> 1156</span> </div>\n-<div class=\"line\"><a id=\"l01190\" name=\"l01190\"></a><span class=\"lineno\"> 1190</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01191\" name=\"l01191\"></a><span class=\"lineno\"> 1191</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01192\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01192\" name=\"l01192\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#a974cf5639aed61ef20e1ca50e9f866a6\"> 1192</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01293.html#a974cf5639aed61ef20e1ca50e9f866a6\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01193\" name=\"l01193\"></a><span class=\"lineno\"> 1193</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01194\" name=\"l01194\"></a><span class=\"lineno\"> 1194</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01195\" name=\"l01195\"></a><span class=\"lineno\"> 1195</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01196\" name=\"l01196\"></a><span class=\"lineno\"> 1196</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01197\" name=\"l01197\"></a><span class=\"lineno\"> 1197</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l01198\" name=\"l01198\"></a><span class=\"lineno\"> 1198</span>        <a class=\"code hl_class\" href=\"a01293.html\">MTLComputeEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n-<div class=\"line\"><a id=\"l01199\" name=\"l01199\"></a><span class=\"lineno\"> 1199</span>        <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* deviceContext) {</div>\n-<div class=\"line\"><a id=\"l01200\" name=\"l01200\"></a><span class=\"lineno\"> 1200</span> </div>\n-<div class=\"line\"><a id=\"l01201\" name=\"l01201\"></a><span class=\"lineno\"> 1201</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l01202\" name=\"l01202\"></a><span class=\"lineno\"> 1202</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01293.html#a974cf5639aed61ef20e1ca50e9f866a6\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01203\" name=\"l01203\"></a><span class=\"lineno\"> 1203</span>                                         srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l01204\" name=\"l01204\"></a><span class=\"lineno\"> 1204</span>                                         dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01205\" name=\"l01205\"></a><span class=\"lineno\"> 1205</span>                                         numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l01206\" name=\"l01206\"></a><span class=\"lineno\"> 1206</span>                                         patchTable,</div>\n-<div class=\"line\"><a id=\"l01207\" name=\"l01207\"></a><span class=\"lineno\"> 1207</span>                                         deviceContext);</div>\n-<div class=\"line\"><a id=\"l01208\" name=\"l01208\"></a><span class=\"lineno\"> 1208</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l01209\" name=\"l01209\"></a><span class=\"lineno\"> 1209</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n-<div class=\"line\"><a id=\"l01210\" name=\"l01210\"></a><span class=\"lineno\"> 1210</span>            instance = Create(srcDesc, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01211\" name=\"l01211\"></a><span class=\"lineno\"> 1211</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l01212\" name=\"l01212\"></a><span class=\"lineno\"> 1212</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l01213\" name=\"l01213\"></a><span class=\"lineno\"> 1213</span>                              deviceContext);</div>\n-<div class=\"line\"><a id=\"l01214\" name=\"l01214\"></a><span class=\"lineno\"> 1214</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l01215\" name=\"l01215\"></a><span class=\"lineno\"> 1215</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01293.html#a974cf5639aed61ef20e1ca50e9f866a6\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01216\" name=\"l01216\"></a><span class=\"lineno\"> 1216</span>                                               srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l01217\" name=\"l01217\"></a><span class=\"lineno\"> 1217</span>                                               dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01218\" name=\"l01218\"></a><span class=\"lineno\"> 1218</span>                                               numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l01219\" name=\"l01219\"></a><span class=\"lineno\"> 1219</span>                                               patchTable,</div>\n-<div class=\"line\"><a id=\"l01220\" name=\"l01220\"></a><span class=\"lineno\"> 1220</span>                                               deviceContext);</div>\n-<div class=\"line\"><a id=\"l01221\" name=\"l01221\"></a><span class=\"lineno\"> 1221</span>                <span class=\"keyword\">delete</span> instance;</div>\n-<div class=\"line\"><a id=\"l01222\" name=\"l01222\"></a><span class=\"lineno\"> 1222</span>                <span class=\"keywordflow\">return</span> r;</div>\n-<div class=\"line\"><a id=\"l01223\" name=\"l01223\"></a><span class=\"lineno\"> 1223</span>            }</div>\n-<div class=\"line\"><a id=\"l01224\" name=\"l01224\"></a><span class=\"lineno\"> 1224</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l01225\" name=\"l01225\"></a><span class=\"lineno\"> 1225</span>        }</div>\n-<div class=\"line\"><a id=\"l01226\" name=\"l01226\"></a><span class=\"lineno\"> 1226</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01227\" name=\"l01227\"></a><span class=\"lineno\"> 1227</span> </div>\n-<div class=\"line\"><a id=\"l01255\" name=\"l01255\"></a><span class=\"lineno\"> 1255</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01256\" name=\"l01256\"></a><span class=\"lineno\"> 1256</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01257\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01257\" name=\"l01257\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#ae5186e8abdeee89cbeef798c27c6ba6b\"> 1257</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01293.html#ae5186e8abdeee89cbeef798c27c6ba6b\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01258\" name=\"l01258\"></a><span class=\"lineno\"> 1258</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01259\" name=\"l01259\"></a><span class=\"lineno\"> 1259</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01260\" name=\"l01260\"></a><span class=\"lineno\"> 1260</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01261\" name=\"l01261\"></a><span class=\"lineno\"> 1261</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01262\" name=\"l01262\"></a><span class=\"lineno\"> 1262</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l01263\" name=\"l01263\"></a><span class=\"lineno\"> 1263</span>        <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* deviceContext)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l01264\" name=\"l01264\"></a><span class=\"lineno\"> 1264</span> </div>\n-<div class=\"line\"><a id=\"l01265\" name=\"l01265\"></a><span class=\"lineno\"> 1265</span>        <span class=\"keywordflow\">return</span> EvalPatches(srcBuffer-&gt;BindMTLBuffer(deviceContext), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01266\" name=\"l01266\"></a><span class=\"lineno\"> 1266</span>                           dstBuffer-&gt;BindMTLBuffer(deviceContext), dstDesc,</div>\n-<div class=\"line\"><a id=\"l01267\" name=\"l01267\"></a><span class=\"lineno\"> 1267</span>                           0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l01268\" name=\"l01268\"></a><span class=\"lineno\"> 1268</span>                           0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l01269\" name=\"l01269\"></a><span class=\"lineno\"> 1269</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01270\" name=\"l01270\"></a><span class=\"lineno\"> 1270</span>                           patchCoords-&gt;BindMTLBuffer(deviceContext),</div>\n-<div class=\"line\"><a id=\"l01271\" name=\"l01271\"></a><span class=\"lineno\"> 1271</span>                           patchTable-&gt;GetVaryingPatchArrays(),</div>\n-<div class=\"line\"><a id=\"l01272\" name=\"l01272\"></a><span class=\"lineno\"> 1272</span>                           patchTable-&gt;GetVaryingPatchIndexBuffer(),</div>\n-<div class=\"line\"><a id=\"l01273\" name=\"l01273\"></a><span class=\"lineno\"> 1273</span>                           patchTable-&gt;GetPatchParamBuffer(),</div>\n-<div class=\"line\"><a id=\"l01274\" name=\"l01274\"></a><span class=\"lineno\"> 1274</span>                           deviceContext</div>\n-<div class=\"line\"><a id=\"l01275\" name=\"l01275\"></a><span class=\"lineno\"> 1275</span>                           );</div>\n-<div class=\"line\"><a id=\"l01276\" name=\"l01276\"></a><span class=\"lineno\"> 1276</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01277\" name=\"l01277\"></a><span class=\"lineno\"> 1277</span> </div>\n-<div class=\"line\"><a id=\"l01323\" name=\"l01323\"></a><span class=\"lineno\"> 1323</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01324\" name=\"l01324\"></a><span class=\"lineno\"> 1324</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01325\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01325\" name=\"l01325\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#abc5af1154bccd394f7d1aba5d353206e\"> 1325</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01293.html#abc5af1154bccd394f7d1aba5d353206e\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01326\" name=\"l01326\"></a><span class=\"lineno\"> 1326</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01327\" name=\"l01327\"></a><span class=\"lineno\"> 1327</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01328\" name=\"l01328\"></a><span class=\"lineno\"> 1328</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l01329\" name=\"l01329\"></a><span class=\"lineno\"> 1329</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l01330\" name=\"l01330\"></a><span class=\"lineno\"> 1330</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01331\" name=\"l01331\"></a><span class=\"lineno\"> 1331</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01332\" name=\"l01332\"></a><span class=\"lineno\"> 1332</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l01333\" name=\"l01333\"></a><span class=\"lineno\"> 1333</span>        <a class=\"code hl_class\" href=\"a01293.html\">MTLComputeEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n-<div class=\"line\"><a id=\"l01334\" name=\"l01334\"></a><span class=\"lineno\"> 1334</span>        <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* deviceContext) {</div>\n-<div class=\"line\"><a id=\"l01335\" name=\"l01335\"></a><span class=\"lineno\"> 1335</span> </div>\n-<div class=\"line\"><a id=\"l01336\" name=\"l01336\"></a><span class=\"lineno\"> 1336</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l01337\" name=\"l01337\"></a><span class=\"lineno\"> 1337</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01293.html#a974cf5639aed61ef20e1ca50e9f866a6\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01338\" name=\"l01338\"></a><span class=\"lineno\"> 1338</span>                                         srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l01339\" name=\"l01339\"></a><span class=\"lineno\"> 1339</span>                                         dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01340\" name=\"l01340\"></a><span class=\"lineno\"> 1340</span>                                         duBuffer, duDesc,</div>\n-<div class=\"line\"><a id=\"l01341\" name=\"l01341\"></a><span class=\"lineno\"> 1341</span>                                         dvBuffer, dvDesc,</div>\n-<div class=\"line\"><a id=\"l01342\" name=\"l01342\"></a><span class=\"lineno\"> 1342</span>                                         numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l01343\" name=\"l01343\"></a><span class=\"lineno\"> 1343</span>                                         patchTable,</div>\n-<div class=\"line\"><a id=\"l01344\" name=\"l01344\"></a><span class=\"lineno\"> 1344</span>                                         deviceContext);</div>\n-<div class=\"line\"><a id=\"l01345\" name=\"l01345\"></a><span class=\"lineno\"> 1345</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l01346\" name=\"l01346\"></a><span class=\"lineno\"> 1346</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n-<div class=\"line\"><a id=\"l01347\" name=\"l01347\"></a><span class=\"lineno\"> 1347</span>            instance = Create(srcDesc, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01348\" name=\"l01348\"></a><span class=\"lineno\"> 1348</span>                              duDesc, dvDesc,</div>\n-<div class=\"line\"><a id=\"l01349\" name=\"l01349\"></a><span class=\"lineno\"> 1349</span>                              deviceContext);</div>\n-<div class=\"line\"><a id=\"l01350\" name=\"l01350\"></a><span class=\"lineno\"> 1350</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l01351\" name=\"l01351\"></a><span class=\"lineno\"> 1351</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01293.html#a974cf5639aed61ef20e1ca50e9f866a6\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01352\" name=\"l01352\"></a><span class=\"lineno\"> 1352</span>                                               srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l01353\" name=\"l01353\"></a><span class=\"lineno\"> 1353</span>                                               dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01354\" name=\"l01354\"></a><span class=\"lineno\"> 1354</span>                                               duBuffer, duDesc,</div>\n-<div class=\"line\"><a id=\"l01355\" name=\"l01355\"></a><span class=\"lineno\"> 1355</span>                                               dvBuffer, dvDesc,</div>\n-<div class=\"line\"><a id=\"l01356\" name=\"l01356\"></a><span class=\"lineno\"> 1356</span>                                               numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l01357\" name=\"l01357\"></a><span class=\"lineno\"> 1357</span>                                               patchTable,</div>\n-<div class=\"line\"><a id=\"l01358\" name=\"l01358\"></a><span class=\"lineno\"> 1358</span>                                               deviceContext);</div>\n-<div class=\"line\"><a id=\"l01359\" name=\"l01359\"></a><span class=\"lineno\"> 1359</span>                <span class=\"keyword\">delete</span> instance;</div>\n-<div class=\"line\"><a id=\"l01360\" name=\"l01360\"></a><span class=\"lineno\"> 1360</span>                <span class=\"keywordflow\">return</span> r;</div>\n-<div class=\"line\"><a id=\"l01361\" name=\"l01361\"></a><span class=\"lineno\"> 1361</span>            }</div>\n-<div class=\"line\"><a id=\"l01362\" name=\"l01362\"></a><span class=\"lineno\"> 1362</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l01363\" name=\"l01363\"></a><span class=\"lineno\"> 1363</span>        }</div>\n-<div class=\"line\"><a id=\"l01364\" name=\"l01364\"></a><span class=\"lineno\"> 1364</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01365\" name=\"l01365\"></a><span class=\"lineno\"> 1365</span> </div>\n-<div class=\"line\"><a id=\"l01405\" name=\"l01405\"></a><span class=\"lineno\"> 1405</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01406\" name=\"l01406\"></a><span class=\"lineno\"> 1406</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01407\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01407\" name=\"l01407\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#ae4dc813f334cc8b2e59659c0736bf2eb\"> 1407</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01293.html#ae4dc813f334cc8b2e59659c0736bf2eb\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01408\" name=\"l01408\"></a><span class=\"lineno\"> 1408</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01409\" name=\"l01409\"></a><span class=\"lineno\"> 1409</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01410\" name=\"l01410\"></a><span class=\"lineno\"> 1410</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l01411\" name=\"l01411\"></a><span class=\"lineno\"> 1411</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l01412\" name=\"l01412\"></a><span class=\"lineno\"> 1412</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01413\" name=\"l01413\"></a><span class=\"lineno\"> 1413</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01414\" name=\"l01414\"></a><span class=\"lineno\"> 1414</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l01415\" name=\"l01415\"></a><span class=\"lineno\"> 1415</span>        <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* deviceContext)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l01416\" name=\"l01416\"></a><span class=\"lineno\"> 1416</span> </div>\n-<div class=\"line\"><a id=\"l01417\" name=\"l01417\"></a><span class=\"lineno\"> 1417</span>        <span class=\"keywordflow\">return</span> EvalPatches(srcBuffer-&gt;BindMTLBuffer(deviceContext), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01418\" name=\"l01418\"></a><span class=\"lineno\"> 1418</span>                           dstBuffer-&gt;BindMTLBuffer(deviceContext), dstDesc,</div>\n-<div class=\"line\"><a id=\"l01419\" name=\"l01419\"></a><span class=\"lineno\"> 1419</span>                           duBuffer-&gt;BindMTLBuffer(deviceContext),  duDesc,</div>\n-<div class=\"line\"><a id=\"l01420\" name=\"l01420\"></a><span class=\"lineno\"> 1420</span>                           dvBuffer-&gt;BindMTLBuffer(deviceContext),  dvDesc,</div>\n-<div class=\"line\"><a id=\"l01421\" name=\"l01421\"></a><span class=\"lineno\"> 1421</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01422\" name=\"l01422\"></a><span class=\"lineno\"> 1422</span>                           patchCoords-&gt;BindMTLBuffer(deviceContext),</div>\n-<div class=\"line\"><a id=\"l01423\" name=\"l01423\"></a><span class=\"lineno\"> 1423</span>                           patchTable-&gt;GetVaryingPatchArrays(),</div>\n-<div class=\"line\"><a id=\"l01424\" name=\"l01424\"></a><span class=\"lineno\"> 1424</span>                           patchTable-&gt;GetVaryingPatchIndexBuffer(),</div>\n-<div class=\"line\"><a id=\"l01425\" name=\"l01425\"></a><span class=\"lineno\"> 1425</span>                           patchTable-&gt;GetPatchParamBuffer(),</div>\n-<div class=\"line\"><a id=\"l01426\" name=\"l01426\"></a><span class=\"lineno\"> 1426</span>                           deviceContext</div>\n-<div class=\"line\"><a id=\"l01427\" name=\"l01427\"></a><span class=\"lineno\"> 1427</span>                           );</div>\n-<div class=\"line\"><a id=\"l01428\" name=\"l01428\"></a><span class=\"lineno\"> 1428</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01429\" name=\"l01429\"></a><span class=\"lineno\"> 1429</span> </div>\n-<div class=\"line\"><a id=\"l01430\" name=\"l01430\"></a><span class=\"lineno\"> 1430</span> </div>\n-<div class=\"line\"><a id=\"l01494\" name=\"l01494\"></a><span class=\"lineno\"> 1494</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01495\" name=\"l01495\"></a><span class=\"lineno\"> 1495</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01496\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01496\" name=\"l01496\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#a6934af1b25d411774984ecec8c626470\"> 1496</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01293.html#a6934af1b25d411774984ecec8c626470\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01497\" name=\"l01497\"></a><span class=\"lineno\"> 1497</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01498\" name=\"l01498\"></a><span class=\"lineno\"> 1498</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01499\" name=\"l01499\"></a><span class=\"lineno\"> 1499</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l01500\" name=\"l01500\"></a><span class=\"lineno\"> 1500</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l01501\" name=\"l01501\"></a><span class=\"lineno\"> 1501</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l01502\" name=\"l01502\"></a><span class=\"lineno\"> 1502</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l01503\" name=\"l01503\"></a><span class=\"lineno\"> 1503</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l01504\" name=\"l01504\"></a><span class=\"lineno\"> 1504</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01505\" name=\"l01505\"></a><span class=\"lineno\"> 1505</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01506\" name=\"l01506\"></a><span class=\"lineno\"> 1506</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l01507\" name=\"l01507\"></a><span class=\"lineno\"> 1507</span>        <a class=\"code hl_class\" href=\"a01293.html\">MTLComputeEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n-<div class=\"line\"><a id=\"l01508\" name=\"l01508\"></a><span class=\"lineno\"> 1508</span>        <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* deviceContext) {</div>\n-<div class=\"line\"><a id=\"l01509\" name=\"l01509\"></a><span class=\"lineno\"> 1509</span> </div>\n-<div class=\"line\"><a id=\"l01510\" name=\"l01510\"></a><span class=\"lineno\"> 1510</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l01511\" name=\"l01511\"></a><span class=\"lineno\"> 1511</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01293.html#a974cf5639aed61ef20e1ca50e9f866a6\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01512\" name=\"l01512\"></a><span class=\"lineno\"> 1512</span>                                         srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l01513\" name=\"l01513\"></a><span class=\"lineno\"> 1513</span>                                         dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01514\" name=\"l01514\"></a><span class=\"lineno\"> 1514</span>                                         duBuffer, duDesc,</div>\n-<div class=\"line\"><a id=\"l01515\" name=\"l01515\"></a><span class=\"lineno\"> 1515</span>                                         dvBuffer, dvDesc,</div>\n-<div class=\"line\"><a id=\"l01516\" name=\"l01516\"></a><span class=\"lineno\"> 1516</span>                                         duuBuffer, duuDesc,</div>\n-<div class=\"line\"><a id=\"l01517\" name=\"l01517\"></a><span class=\"lineno\"> 1517</span>                                         duvBuffer, duvDesc,</div>\n-<div class=\"line\"><a id=\"l01518\" name=\"l01518\"></a><span class=\"lineno\"> 1518</span>                                         dvvBuffer, dvvDesc,</div>\n-<div class=\"line\"><a id=\"l01519\" name=\"l01519\"></a><span class=\"lineno\"> 1519</span>                                         numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l01520\" name=\"l01520\"></a><span class=\"lineno\"> 1520</span>                                         patchTable,</div>\n-<div class=\"line\"><a id=\"l01521\" name=\"l01521\"></a><span class=\"lineno\"> 1521</span>                                         deviceContext);</div>\n-<div class=\"line\"><a id=\"l01522\" name=\"l01522\"></a><span class=\"lineno\"> 1522</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l01523\" name=\"l01523\"></a><span class=\"lineno\"> 1523</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n-<div class=\"line\"><a id=\"l01524\" name=\"l01524\"></a><span class=\"lineno\"> 1524</span>            instance = Create(srcDesc, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01525\" name=\"l01525\"></a><span class=\"lineno\"> 1525</span>                              duDesc, dvDesc,</div>\n-<div class=\"line\"><a id=\"l01526\" name=\"l01526\"></a><span class=\"lineno\"> 1526</span>                              duuDesc, duvDesc, dvvDesc,</div>\n-<div class=\"line\"><a id=\"l01527\" name=\"l01527\"></a><span class=\"lineno\"> 1527</span>                              deviceContext);</div>\n-<div class=\"line\"><a id=\"l01528\" name=\"l01528\"></a><span class=\"lineno\"> 1528</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l01529\" name=\"l01529\"></a><span class=\"lineno\"> 1529</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01293.html#a974cf5639aed61ef20e1ca50e9f866a6\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01530\" name=\"l01530\"></a><span class=\"lineno\"> 1530</span>                                               srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l01531\" name=\"l01531\"></a><span class=\"lineno\"> 1531</span>                                               dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01532\" name=\"l01532\"></a><span class=\"lineno\"> 1532</span>                                               duBuffer, duDesc,</div>\n-<div class=\"line\"><a id=\"l01533\" name=\"l01533\"></a><span class=\"lineno\"> 1533</span>                                               dvBuffer, dvDesc,</div>\n-<div class=\"line\"><a id=\"l01534\" name=\"l01534\"></a><span class=\"lineno\"> 1534</span>                                               duuBuffer, duuDesc,</div>\n-<div class=\"line\"><a id=\"l01535\" name=\"l01535\"></a><span class=\"lineno\"> 1535</span>                                               duvBuffer, duvDesc,</div>\n-<div class=\"line\"><a id=\"l01536\" name=\"l01536\"></a><span class=\"lineno\"> 1536</span>                                               dvvBuffer, dvvDesc,</div>\n-<div class=\"line\"><a id=\"l01537\" name=\"l01537\"></a><span class=\"lineno\"> 1537</span>                                               numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l01538\" name=\"l01538\"></a><span class=\"lineno\"> 1538</span>                                               patchTable,</div>\n-<div class=\"line\"><a id=\"l01539\" name=\"l01539\"></a><span class=\"lineno\"> 1539</span>                                               deviceContext);</div>\n-<div class=\"line\"><a id=\"l01540\" name=\"l01540\"></a><span class=\"lineno\"> 1540</span>                <span class=\"keyword\">delete</span> instance;</div>\n-<div class=\"line\"><a id=\"l01541\" name=\"l01541\"></a><span class=\"lineno\"> 1541</span>                <span class=\"keywordflow\">return</span> r;</div>\n-<div class=\"line\"><a id=\"l01542\" name=\"l01542\"></a><span class=\"lineno\"> 1542</span>            }</div>\n-<div class=\"line\"><a id=\"l01543\" name=\"l01543\"></a><span class=\"lineno\"> 1543</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l01544\" name=\"l01544\"></a><span class=\"lineno\"> 1544</span>        }</div>\n-<div class=\"line\"><a id=\"l01545\" name=\"l01545\"></a><span class=\"lineno\"> 1545</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01546\" name=\"l01546\"></a><span class=\"lineno\"> 1546</span> </div>\n-<div class=\"line\"><a id=\"l01604\" name=\"l01604\"></a><span class=\"lineno\"> 1604</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01605\" name=\"l01605\"></a><span class=\"lineno\"> 1605</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01606\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01606\" name=\"l01606\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#a3642ea4f1fe75e6f580d195981f67767\"> 1606</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01293.html#a3642ea4f1fe75e6f580d195981f67767\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01607\" name=\"l01607\"></a><span class=\"lineno\"> 1607</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01608\" name=\"l01608\"></a><span class=\"lineno\"> 1608</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01609\" name=\"l01609\"></a><span class=\"lineno\"> 1609</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l01610\" name=\"l01610\"></a><span class=\"lineno\"> 1610</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l01611\" name=\"l01611\"></a><span class=\"lineno\"> 1611</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l01612\" name=\"l01612\"></a><span class=\"lineno\"> 1612</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l01613\" name=\"l01613\"></a><span class=\"lineno\"> 1613</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l01614\" name=\"l01614\"></a><span class=\"lineno\"> 1614</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01615\" name=\"l01615\"></a><span class=\"lineno\"> 1615</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01616\" name=\"l01616\"></a><span class=\"lineno\"> 1616</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l01617\" name=\"l01617\"></a><span class=\"lineno\"> 1617</span>        <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* deviceContext)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l01618\" name=\"l01618\"></a><span class=\"lineno\"> 1618</span> </div>\n-<div class=\"line\"><a id=\"l01619\" name=\"l01619\"></a><span class=\"lineno\"> 1619</span>        <span class=\"keywordflow\">return</span> EvalPatches(srcBuffer-&gt;BindMTLBuffer(deviceContext), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01620\" name=\"l01620\"></a><span class=\"lineno\"> 1620</span>                           dstBuffer-&gt;BindMTLBuffer(deviceContext), dstDesc,</div>\n-<div class=\"line\"><a id=\"l01621\" name=\"l01621\"></a><span class=\"lineno\"> 1621</span>                           duBuffer-&gt;BindMTLBuffer(deviceContext),  duDesc,</div>\n-<div class=\"line\"><a id=\"l01622\" name=\"l01622\"></a><span class=\"lineno\"> 1622</span>                           dvBuffer-&gt;BindMTLBuffer(deviceContext),  dvDesc,</div>\n-<div class=\"line\"><a id=\"l01623\" name=\"l01623\"></a><span class=\"lineno\"> 1623</span>                           duuBuffer-&gt;BindMTLBuffer(deviceContext), duuDesc,</div>\n-<div class=\"line\"><a id=\"l01624\" name=\"l01624\"></a><span class=\"lineno\"> 1624</span>                           duvBuffer-&gt;BindMTLBuffer(deviceContext), duvDesc,</div>\n-<div class=\"line\"><a id=\"l01625\" name=\"l01625\"></a><span class=\"lineno\"> 1625</span>                           dvvBuffer-&gt;BindMTLBuffer(deviceContext), dvvDesc,</div>\n-<div class=\"line\"><a id=\"l01626\" name=\"l01626\"></a><span class=\"lineno\"> 1626</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01627\" name=\"l01627\"></a><span class=\"lineno\"> 1627</span>                           patchCoords-&gt;BindMTLBuffer(deviceContext),</div>\n-<div class=\"line\"><a id=\"l01628\" name=\"l01628\"></a><span class=\"lineno\"> 1628</span>                           patchTable-&gt;GetVaryingPatchArrays(),</div>\n-<div class=\"line\"><a id=\"l01629\" name=\"l01629\"></a><span class=\"lineno\"> 1629</span>                           patchTable-&gt;GetVaryingPatchIndexBuffer(),</div>\n-<div class=\"line\"><a id=\"l01630\" name=\"l01630\"></a><span class=\"lineno\"> 1630</span>                           patchTable-&gt;GetPatchParamBuffer(),</div>\n-<div class=\"line\"><a id=\"l01631\" name=\"l01631\"></a><span class=\"lineno\"> 1631</span>                           deviceContext</div>\n-<div class=\"line\"><a id=\"l01632\" name=\"l01632\"></a><span class=\"lineno\"> 1632</span>                           );</div>\n-<div class=\"line\"><a id=\"l01633\" name=\"l01633\"></a><span class=\"lineno\"> 1633</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01634\" name=\"l01634\"></a><span class=\"lineno\"> 1634</span> </div>\n-<div class=\"line\"><a id=\"l01670\" name=\"l01670\"></a><span class=\"lineno\"> 1670</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01671\" name=\"l01671\"></a><span class=\"lineno\"> 1671</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01672\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01672\" name=\"l01672\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#a575672bd557a88df3702b3be802825d8\"> 1672</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01293.html#a575672bd557a88df3702b3be802825d8\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01673\" name=\"l01673\"></a><span class=\"lineno\"> 1673</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01674\" name=\"l01674\"></a><span class=\"lineno\"> 1674</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01675\" name=\"l01675\"></a><span class=\"lineno\"> 1675</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01676\" name=\"l01676\"></a><span class=\"lineno\"> 1676</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01677\" name=\"l01677\"></a><span class=\"lineno\"> 1677</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l01678\" name=\"l01678\"></a><span class=\"lineno\"> 1678</span>        <span class=\"keywordtype\">int</span> fvarChannel,</div>\n-<div class=\"line\"><a id=\"l01679\" name=\"l01679\"></a><span class=\"lineno\"> 1679</span>        <a class=\"code hl_class\" href=\"a01293.html\">MTLComputeEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n-<div class=\"line\"><a id=\"l01680\" name=\"l01680\"></a><span class=\"lineno\"> 1680</span>        <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* deviceContext) {</div>\n-<div class=\"line\"><a id=\"l01681\" name=\"l01681\"></a><span class=\"lineno\"> 1681</span> </div>\n-<div class=\"line\"><a id=\"l01682\" name=\"l01682\"></a><span class=\"lineno\"> 1682</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l01683\" name=\"l01683\"></a><span class=\"lineno\"> 1683</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01293.html#a575672bd557a88df3702b3be802825d8\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01684\" name=\"l01684\"></a><span class=\"lineno\"> 1684</span>                                         srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l01685\" name=\"l01685\"></a><span class=\"lineno\"> 1685</span>                                         dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01686\" name=\"l01686\"></a><span class=\"lineno\"> 1686</span>                                         numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l01687\" name=\"l01687\"></a><span class=\"lineno\"> 1687</span>                                         patchTable,</div>\n-<div class=\"line\"><a id=\"l01688\" name=\"l01688\"></a><span class=\"lineno\"> 1688</span>                                         fvarChannel,</div>\n-<div class=\"line\"><a id=\"l01689\" name=\"l01689\"></a><span class=\"lineno\"> 1689</span>                                         deviceContext);</div>\n-<div class=\"line\"><a id=\"l01690\" name=\"l01690\"></a><span class=\"lineno\"> 1690</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l01691\" name=\"l01691\"></a><span class=\"lineno\"> 1691</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n-<div class=\"line\"><a id=\"l01692\" name=\"l01692\"></a><span class=\"lineno\"> 1692</span>            instance = Create(srcDesc, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01693\" name=\"l01693\"></a><span class=\"lineno\"> 1693</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l01694\" name=\"l01694\"></a><span class=\"lineno\"> 1694</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l01695\" name=\"l01695\"></a><span class=\"lineno\"> 1695</span>                              deviceContext);</div>\n-<div class=\"line\"><a id=\"l01696\" name=\"l01696\"></a><span class=\"lineno\"> 1696</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l01697\" name=\"l01697\"></a><span class=\"lineno\"> 1697</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01293.html#a575672bd557a88df3702b3be802825d8\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01698\" name=\"l01698\"></a><span class=\"lineno\"> 1698</span>                                               srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l01699\" name=\"l01699\"></a><span class=\"lineno\"> 1699</span>                                               dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01700\" name=\"l01700\"></a><span class=\"lineno\"> 1700</span>                                               numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l01701\" name=\"l01701\"></a><span class=\"lineno\"> 1701</span>                                               patchTable,</div>\n-<div class=\"line\"><a id=\"l01702\" name=\"l01702\"></a><span class=\"lineno\"> 1702</span>                                               fvarChannel,</div>\n-<div class=\"line\"><a id=\"l01703\" name=\"l01703\"></a><span class=\"lineno\"> 1703</span>                                               deviceContext);</div>\n-<div class=\"line\"><a id=\"l01704\" name=\"l01704\"></a><span class=\"lineno\"> 1704</span>                <span class=\"keyword\">delete</span> instance;</div>\n-<div class=\"line\"><a id=\"l01705\" name=\"l01705\"></a><span class=\"lineno\"> 1705</span>                <span class=\"keywordflow\">return</span> r;</div>\n-<div class=\"line\"><a id=\"l01706\" name=\"l01706\"></a><span class=\"lineno\"> 1706</span>            }</div>\n-<div class=\"line\"><a id=\"l01707\" name=\"l01707\"></a><span class=\"lineno\"> 1707</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l01708\" name=\"l01708\"></a><span class=\"lineno\"> 1708</span>        }</div>\n-<div class=\"line\"><a id=\"l01709\" name=\"l01709\"></a><span class=\"lineno\"> 1709</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01710\" name=\"l01710\"></a><span class=\"lineno\"> 1710</span> </div>\n-<div class=\"line\"><a id=\"l01740\" name=\"l01740\"></a><span class=\"lineno\"> 1740</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01741\" name=\"l01741\"></a><span class=\"lineno\"> 1741</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01742\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01742\" name=\"l01742\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#a9349f2fdf4e170771e2216874f2bb23c\"> 1742</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01293.html#a9349f2fdf4e170771e2216874f2bb23c\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01743\" name=\"l01743\"></a><span class=\"lineno\"> 1743</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01744\" name=\"l01744\"></a><span class=\"lineno\"> 1744</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01745\" name=\"l01745\"></a><span class=\"lineno\"> 1745</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01746\" name=\"l01746\"></a><span class=\"lineno\"> 1746</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01747\" name=\"l01747\"></a><span class=\"lineno\"> 1747</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l01748\" name=\"l01748\"></a><span class=\"lineno\"> 1748</span>        <span class=\"keywordtype\">int</span> fvarChannel,</div>\n-<div class=\"line\"><a id=\"l01749\" name=\"l01749\"></a><span class=\"lineno\"> 1749</span>        <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* deviceContext)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l01750\" name=\"l01750\"></a><span class=\"lineno\"> 1750</span> </div>\n-<div class=\"line\"><a id=\"l01751\" name=\"l01751\"></a><span class=\"lineno\"> 1751</span>        <span class=\"keywordflow\">return</span> EvalPatches(srcBuffer-&gt;BindMTLBuffer(deviceContext), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01752\" name=\"l01752\"></a><span class=\"lineno\"> 1752</span>                           dstBuffer-&gt;BindMTLBuffer(deviceContext), dstDesc,</div>\n-<div class=\"line\"><a id=\"l01753\" name=\"l01753\"></a><span class=\"lineno\"> 1753</span>                           0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l01754\" name=\"l01754\"></a><span class=\"lineno\"> 1754</span>                           0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l01755\" name=\"l01755\"></a><span class=\"lineno\"> 1755</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01756\" name=\"l01756\"></a><span class=\"lineno\"> 1756</span>                           patchCoords-&gt;BindMTLBuffer(deviceContext),</div>\n-<div class=\"line\"><a id=\"l01757\" name=\"l01757\"></a><span class=\"lineno\"> 1757</span>                           patchTable-&gt;GetFVarPatchArrays(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l01758\" name=\"l01758\"></a><span class=\"lineno\"> 1758</span>                           patchTable-&gt;GetFVarPatchIndexBuffer(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l01759\" name=\"l01759\"></a><span class=\"lineno\"> 1759</span>                           patchTable-&gt;GetFVarPatchParamBuffer(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l01760\" name=\"l01760\"></a><span class=\"lineno\"> 1760</span>                           deviceContext</div>\n-<div class=\"line\"><a id=\"l01761\" name=\"l01761\"></a><span class=\"lineno\"> 1761</span>                           );</div>\n-<div class=\"line\"><a id=\"l01762\" name=\"l01762\"></a><span class=\"lineno\"> 1762</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01763\" name=\"l01763\"></a><span class=\"lineno\"> 1763</span> </div>\n-<div class=\"line\"><a id=\"l01811\" name=\"l01811\"></a><span class=\"lineno\"> 1811</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01812\" name=\"l01812\"></a><span class=\"lineno\"> 1812</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01813\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01813\" name=\"l01813\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#aa8e715d1d6cb338e9617ca3795a94021\"> 1813</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01293.html#aa8e715d1d6cb338e9617ca3795a94021\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01814\" name=\"l01814\"></a><span class=\"lineno\"> 1814</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01815\" name=\"l01815\"></a><span class=\"lineno\"> 1815</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01816\" name=\"l01816\"></a><span class=\"lineno\"> 1816</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l01817\" name=\"l01817\"></a><span class=\"lineno\"> 1817</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l01818\" name=\"l01818\"></a><span class=\"lineno\"> 1818</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01819\" name=\"l01819\"></a><span class=\"lineno\"> 1819</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01820\" name=\"l01820\"></a><span class=\"lineno\"> 1820</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l01821\" name=\"l01821\"></a><span class=\"lineno\"> 1821</span>        <span class=\"keywordtype\">int</span> fvarChannel,</div>\n-<div class=\"line\"><a id=\"l01822\" name=\"l01822\"></a><span class=\"lineno\"> 1822</span>        <a class=\"code hl_class\" href=\"a01293.html\">MTLComputeEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n-<div class=\"line\"><a id=\"l01823\" name=\"l01823\"></a><span class=\"lineno\"> 1823</span>        <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* deviceContext) {</div>\n-<div class=\"line\"><a id=\"l01824\" name=\"l01824\"></a><span class=\"lineno\"> 1824</span> </div>\n-<div class=\"line\"><a id=\"l01825\" name=\"l01825\"></a><span class=\"lineno\"> 1825</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l01826\" name=\"l01826\"></a><span class=\"lineno\"> 1826</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01293.html#a575672bd557a88df3702b3be802825d8\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01827\" name=\"l01827\"></a><span class=\"lineno\"> 1827</span>                                         srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l01828\" name=\"l01828\"></a><span class=\"lineno\"> 1828</span>                                         dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01829\" name=\"l01829\"></a><span class=\"lineno\"> 1829</span>                                         duBuffer, duDesc,</div>\n-<div class=\"line\"><a id=\"l01830\" name=\"l01830\"></a><span class=\"lineno\"> 1830</span>                                         dvBuffer, dvDesc,</div>\n-<div class=\"line\"><a id=\"l01831\" name=\"l01831\"></a><span class=\"lineno\"> 1831</span>                                         numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l01832\" name=\"l01832\"></a><span class=\"lineno\"> 1832</span>                                         patchTable,</div>\n-<div class=\"line\"><a id=\"l01833\" name=\"l01833\"></a><span class=\"lineno\"> 1833</span>                                         fvarChannel,</div>\n-<div class=\"line\"><a id=\"l01834\" name=\"l01834\"></a><span class=\"lineno\"> 1834</span>                                         deviceContext);</div>\n-<div class=\"line\"><a id=\"l01835\" name=\"l01835\"></a><span class=\"lineno\"> 1835</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l01836\" name=\"l01836\"></a><span class=\"lineno\"> 1836</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n-<div class=\"line\"><a id=\"l01837\" name=\"l01837\"></a><span class=\"lineno\"> 1837</span>            instance = Create(srcDesc, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01838\" name=\"l01838\"></a><span class=\"lineno\"> 1838</span>                              duDesc, dvDesc,</div>\n-<div class=\"line\"><a id=\"l01839\" name=\"l01839\"></a><span class=\"lineno\"> 1839</span>                              deviceContext);</div>\n-<div class=\"line\"><a id=\"l01840\" name=\"l01840\"></a><span class=\"lineno\"> 1840</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l01841\" name=\"l01841\"></a><span class=\"lineno\"> 1841</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01293.html#a575672bd557a88df3702b3be802825d8\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01842\" name=\"l01842\"></a><span class=\"lineno\"> 1842</span>                                               srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l01843\" name=\"l01843\"></a><span class=\"lineno\"> 1843</span>                                               dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01844\" name=\"l01844\"></a><span class=\"lineno\"> 1844</span>                                               duBuffer, duDesc,</div>\n-<div class=\"line\"><a id=\"l01845\" name=\"l01845\"></a><span class=\"lineno\"> 1845</span>                                               dvBuffer, dvDesc,</div>\n-<div class=\"line\"><a id=\"l01846\" name=\"l01846\"></a><span class=\"lineno\"> 1846</span>                                               numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l01847\" name=\"l01847\"></a><span class=\"lineno\"> 1847</span>                                               patchTable,</div>\n-<div class=\"line\"><a id=\"l01848\" name=\"l01848\"></a><span class=\"lineno\"> 1848</span>                                               fvarChannel,</div>\n-<div class=\"line\"><a id=\"l01849\" name=\"l01849\"></a><span class=\"lineno\"> 1849</span>                                               deviceContext);</div>\n-<div class=\"line\"><a id=\"l01850\" name=\"l01850\"></a><span class=\"lineno\"> 1850</span>                <span class=\"keyword\">delete</span> instance;</div>\n-<div class=\"line\"><a id=\"l01851\" name=\"l01851\"></a><span class=\"lineno\"> 1851</span>                <span class=\"keywordflow\">return</span> r;</div>\n-<div class=\"line\"><a id=\"l01852\" name=\"l01852\"></a><span class=\"lineno\"> 1852</span>            }</div>\n-<div class=\"line\"><a id=\"l01853\" name=\"l01853\"></a><span class=\"lineno\"> 1853</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l01854\" name=\"l01854\"></a><span class=\"lineno\"> 1854</span>        }</div>\n-<div class=\"line\"><a id=\"l01855\" name=\"l01855\"></a><span class=\"lineno\"> 1855</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01856\" name=\"l01856\"></a><span class=\"lineno\"> 1856</span> </div>\n-<div class=\"line\"><a id=\"l01898\" name=\"l01898\"></a><span class=\"lineno\"> 1898</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01899\" name=\"l01899\"></a><span class=\"lineno\"> 1899</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01900\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01900\" name=\"l01900\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#a4b6168e3efdb657463a20aa39ccdb38f\"> 1900</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01293.html#a4b6168e3efdb657463a20aa39ccdb38f\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01901\" name=\"l01901\"></a><span class=\"lineno\"> 1901</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01902\" name=\"l01902\"></a><span class=\"lineno\"> 1902</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01903\" name=\"l01903\"></a><span class=\"lineno\"> 1903</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l01904\" name=\"l01904\"></a><span class=\"lineno\"> 1904</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l01905\" name=\"l01905\"></a><span class=\"lineno\"> 1905</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01906\" name=\"l01906\"></a><span class=\"lineno\"> 1906</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01907\" name=\"l01907\"></a><span class=\"lineno\"> 1907</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l01908\" name=\"l01908\"></a><span class=\"lineno\"> 1908</span>        <span class=\"keywordtype\">int</span> fvarChannel,</div>\n-<div class=\"line\"><a id=\"l01909\" name=\"l01909\"></a><span class=\"lineno\"> 1909</span>        <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* deviceContext)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l01910\" name=\"l01910\"></a><span class=\"lineno\"> 1910</span> </div>\n-<div class=\"line\"><a id=\"l01911\" name=\"l01911\"></a><span class=\"lineno\"> 1911</span>        <span class=\"keywordflow\">return</span> EvalPatches(srcBuffer-&gt;BindMTLBuffer(deviceContext), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01912\" name=\"l01912\"></a><span class=\"lineno\"> 1912</span>                           dstBuffer-&gt;BindMTLBuffer(deviceContext), dstDesc,</div>\n-<div class=\"line\"><a id=\"l01913\" name=\"l01913\"></a><span class=\"lineno\"> 1913</span>                           duBuffer-&gt;BindMTLBuffer(deviceContext),  duDesc,</div>\n-<div class=\"line\"><a id=\"l01914\" name=\"l01914\"></a><span class=\"lineno\"> 1914</span>                           dvBuffer-&gt;BindMTLBuffer(deviceContext),  dvDesc,</div>\n-<div class=\"line\"><a id=\"l01915\" name=\"l01915\"></a><span class=\"lineno\"> 1915</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01916\" name=\"l01916\"></a><span class=\"lineno\"> 1916</span>                           patchCoords-&gt;BindMTLBuffer(deviceContext),</div>\n-<div class=\"line\"><a id=\"l01917\" name=\"l01917\"></a><span class=\"lineno\"> 1917</span>                           patchTable-&gt;GetFVarPatchArrays(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l01918\" name=\"l01918\"></a><span class=\"lineno\"> 1918</span>                           patchTable-&gt;GetFVarPatchIndexBuffer(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l01919\" name=\"l01919\"></a><span class=\"lineno\"> 1919</span>                           patchTable-&gt;GetFVarPatchParamBuffer(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l01920\" name=\"l01920\"></a><span class=\"lineno\"> 1920</span>                           deviceContext</div>\n-<div class=\"line\"><a id=\"l01921\" name=\"l01921\"></a><span class=\"lineno\"> 1921</span>                           );</div>\n-<div class=\"line\"><a id=\"l01922\" name=\"l01922\"></a><span class=\"lineno\"> 1922</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01923\" name=\"l01923\"></a><span class=\"lineno\"> 1923</span> </div>\n-<div class=\"line\"><a id=\"l01989\" name=\"l01989\"></a><span class=\"lineno\"> 1989</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01990\" name=\"l01990\"></a><span class=\"lineno\"> 1990</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01991\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01991\" name=\"l01991\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#a0b18216ba91299d39434a936ff58309b\"> 1991</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01293.html#a0b18216ba91299d39434a936ff58309b\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01992\" name=\"l01992\"></a><span class=\"lineno\"> 1992</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01993\" name=\"l01993\"></a><span class=\"lineno\"> 1993</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01994\" name=\"l01994\"></a><span class=\"lineno\"> 1994</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l01995\" name=\"l01995\"></a><span class=\"lineno\"> 1995</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l01996\" name=\"l01996\"></a><span class=\"lineno\"> 1996</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l01997\" name=\"l01997\"></a><span class=\"lineno\"> 1997</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l01998\" name=\"l01998\"></a><span class=\"lineno\"> 1998</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l01999\" name=\"l01999\"></a><span class=\"lineno\"> 1999</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l02000\" name=\"l02000\"></a><span class=\"lineno\"> 2000</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l02001\" name=\"l02001\"></a><span class=\"lineno\"> 2001</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l02002\" name=\"l02002\"></a><span class=\"lineno\"> 2002</span>        <span class=\"keywordtype\">int</span> fvarChannel,</div>\n-<div class=\"line\"><a id=\"l02003\" name=\"l02003\"></a><span class=\"lineno\"> 2003</span>        <a class=\"code hl_class\" href=\"a01293.html\">MTLComputeEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n-<div class=\"line\"><a id=\"l02004\" name=\"l02004\"></a><span class=\"lineno\"> 2004</span>        <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* deviceContext) {</div>\n-<div class=\"line\"><a id=\"l02005\" name=\"l02005\"></a><span class=\"lineno\"> 2005</span> </div>\n-<div class=\"line\"><a id=\"l02006\" name=\"l02006\"></a><span class=\"lineno\"> 2006</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l02007\" name=\"l02007\"></a><span class=\"lineno\"> 2007</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01293.html#a575672bd557a88df3702b3be802825d8\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l02008\" name=\"l02008\"></a><span class=\"lineno\"> 2008</span>                                         srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l02009\" name=\"l02009\"></a><span class=\"lineno\"> 2009</span>                                         dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l02010\" name=\"l02010\"></a><span class=\"lineno\"> 2010</span>                                         duBuffer, duDesc,</div>\n-<div class=\"line\"><a id=\"l02011\" name=\"l02011\"></a><span class=\"lineno\"> 2011</span>                                         dvBuffer, dvDesc,</div>\n-<div class=\"line\"><a id=\"l02012\" name=\"l02012\"></a><span class=\"lineno\"> 2012</span>                                         duuBuffer, duuDesc,</div>\n-<div class=\"line\"><a id=\"l02013\" name=\"l02013\"></a><span class=\"lineno\"> 2013</span>                                         duvBuffer, duvDesc,</div>\n-<div class=\"line\"><a id=\"l02014\" name=\"l02014\"></a><span class=\"lineno\"> 2014</span>                                         dvvBuffer, dvvDesc,</div>\n-<div class=\"line\"><a id=\"l02015\" name=\"l02015\"></a><span class=\"lineno\"> 2015</span>                                         numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l02016\" name=\"l02016\"></a><span class=\"lineno\"> 2016</span>                                         patchTable,</div>\n-<div class=\"line\"><a id=\"l02017\" name=\"l02017\"></a><span class=\"lineno\"> 2017</span>                                         fvarChannel,</div>\n-<div class=\"line\"><a id=\"l02018\" name=\"l02018\"></a><span class=\"lineno\"> 2018</span>                                         deviceContext);</div>\n-<div class=\"line\"><a id=\"l02019\" name=\"l02019\"></a><span class=\"lineno\"> 2019</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l02020\" name=\"l02020\"></a><span class=\"lineno\"> 2020</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n-<div class=\"line\"><a id=\"l02021\" name=\"l02021\"></a><span class=\"lineno\"> 2021</span>            instance = Create(srcDesc, dstDesc,</div>\n-<div class=\"line\"><a id=\"l02022\" name=\"l02022\"></a><span class=\"lineno\"> 2022</span>                              duDesc, dvDesc,</div>\n-<div class=\"line\"><a id=\"l02023\" name=\"l02023\"></a><span class=\"lineno\"> 2023</span>                              duuDesc, duvDesc, dvvDesc,</div>\n-<div class=\"line\"><a id=\"l02024\" name=\"l02024\"></a><span class=\"lineno\"> 2024</span>                              deviceContext);</div>\n-<div class=\"line\"><a id=\"l02025\" name=\"l02025\"></a><span class=\"lineno\"> 2025</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l02026\" name=\"l02026\"></a><span class=\"lineno\"> 2026</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01293.html#a575672bd557a88df3702b3be802825d8\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l02027\" name=\"l02027\"></a><span class=\"lineno\"> 2027</span>                                               srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l02028\" name=\"l02028\"></a><span class=\"lineno\"> 2028</span>                                               dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l02029\" name=\"l02029\"></a><span class=\"lineno\"> 2029</span>                                               duBuffer, duDesc,</div>\n-<div class=\"line\"><a id=\"l02030\" name=\"l02030\"></a><span class=\"lineno\"> 2030</span>                                               dvBuffer, dvDesc,</div>\n-<div class=\"line\"><a id=\"l02031\" name=\"l02031\"></a><span class=\"lineno\"> 2031</span>                                               duuBuffer, duuDesc,</div>\n-<div class=\"line\"><a id=\"l02032\" name=\"l02032\"></a><span class=\"lineno\"> 2032</span>                                               duvBuffer, duvDesc,</div>\n-<div class=\"line\"><a id=\"l02033\" name=\"l02033\"></a><span class=\"lineno\"> 2033</span>                                               dvvBuffer, dvvDesc,</div>\n-<div class=\"line\"><a id=\"l02034\" name=\"l02034\"></a><span class=\"lineno\"> 2034</span>                                               numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l02035\" name=\"l02035\"></a><span class=\"lineno\"> 2035</span>                                               patchTable,</div>\n-<div class=\"line\"><a id=\"l02036\" name=\"l02036\"></a><span class=\"lineno\"> 2036</span>                                               fvarChannel,</div>\n-<div class=\"line\"><a id=\"l02037\" name=\"l02037\"></a><span class=\"lineno\"> 2037</span>                                               deviceContext);</div>\n-<div class=\"line\"><a id=\"l02038\" name=\"l02038\"></a><span class=\"lineno\"> 2038</span>                <span class=\"keyword\">delete</span> instance;</div>\n-<div class=\"line\"><a id=\"l02039\" name=\"l02039\"></a><span class=\"lineno\"> 2039</span>                <span class=\"keywordflow\">return</span> r;</div>\n-<div class=\"line\"><a id=\"l02040\" name=\"l02040\"></a><span class=\"lineno\"> 2040</span>            }</div>\n-<div class=\"line\"><a id=\"l02041\" name=\"l02041\"></a><span class=\"lineno\"> 2041</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l02042\" name=\"l02042\"></a><span class=\"lineno\"> 2042</span>        }</div>\n-<div class=\"line\"><a id=\"l02043\" name=\"l02043\"></a><span class=\"lineno\"> 2043</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l02044\" name=\"l02044\"></a><span class=\"lineno\"> 2044</span> </div>\n-<div class=\"line\"><a id=\"l02104\" name=\"l02104\"></a><span class=\"lineno\"> 2104</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l02105\" name=\"l02105\"></a><span class=\"lineno\"> 2105</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen02106\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l02106\" name=\"l02106\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#a7ae29a65e3cfdc045541528dd58ee2d5\"> 2106</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01293.html#a7ae29a65e3cfdc045541528dd58ee2d5\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l02107\" name=\"l02107\"></a><span class=\"lineno\"> 2107</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l02108\" name=\"l02108\"></a><span class=\"lineno\"> 2108</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l02109\" name=\"l02109\"></a><span class=\"lineno\"> 2109</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l02110\" name=\"l02110\"></a><span class=\"lineno\"> 2110</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l02111\" name=\"l02111\"></a><span class=\"lineno\"> 2111</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l02112\" name=\"l02112\"></a><span class=\"lineno\"> 2112</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l02113\" name=\"l02113\"></a><span class=\"lineno\"> 2113</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l02114\" name=\"l02114\"></a><span class=\"lineno\"> 2114</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l02115\" name=\"l02115\"></a><span class=\"lineno\"> 2115</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l02116\" name=\"l02116\"></a><span class=\"lineno\"> 2116</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l02117\" name=\"l02117\"></a><span class=\"lineno\"> 2117</span>        <span class=\"keywordtype\">int</span> fvarChannel,</div>\n-<div class=\"line\"><a id=\"l02118\" name=\"l02118\"></a><span class=\"lineno\"> 2118</span>        <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* deviceContext)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l02119\" name=\"l02119\"></a><span class=\"lineno\"> 2119</span> </div>\n-<div class=\"line\"><a id=\"l02120\" name=\"l02120\"></a><span class=\"lineno\"> 2120</span>        <span class=\"keywordflow\">return</span> EvalPatches(srcBuffer-&gt;BindMTLBuffer(deviceContext), srcDesc,</div>\n-<div class=\"line\"><a id=\"l02121\" name=\"l02121\"></a><span class=\"lineno\"> 2121</span>                           dstBuffer-&gt;BindMTLBuffer(deviceContext), dstDesc,</div>\n-<div class=\"line\"><a id=\"l02122\" name=\"l02122\"></a><span class=\"lineno\"> 2122</span>                           duBuffer-&gt;BindMTLBuffer(deviceContext),  duDesc,</div>\n-<div class=\"line\"><a id=\"l02123\" name=\"l02123\"></a><span class=\"lineno\"> 2123</span>                           dvBuffer-&gt;BindMTLBuffer(deviceContext),  dvDesc,</div>\n-<div class=\"line\"><a id=\"l02124\" name=\"l02124\"></a><span class=\"lineno\"> 2124</span>                           duuBuffer-&gt;BindMTLBuffer(deviceContext), duuDesc,</div>\n-<div class=\"line\"><a id=\"l02125\" name=\"l02125\"></a><span class=\"lineno\"> 2125</span>                           duvBuffer-&gt;BindMTLBuffer(deviceContext), duvDesc,</div>\n-<div class=\"line\"><a id=\"l02126\" name=\"l02126\"></a><span class=\"lineno\"> 2126</span>                           dvvBuffer-&gt;BindMTLBuffer(deviceContext), dvvDesc,</div>\n-<div class=\"line\"><a id=\"l02127\" name=\"l02127\"></a><span class=\"lineno\"> 2127</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l02128\" name=\"l02128\"></a><span class=\"lineno\"> 2128</span>                           patchCoords-&gt;BindMTLBuffer(deviceContext),</div>\n-<div class=\"line\"><a id=\"l02129\" name=\"l02129\"></a><span class=\"lineno\"> 2129</span>                           patchTable-&gt;GetFVarPatchArrays(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l02130\" name=\"l02130\"></a><span class=\"lineno\"> 2130</span>                           patchTable-&gt;GetFVarPatchIndexBuffer(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l02131\" name=\"l02131\"></a><span class=\"lineno\"> 2131</span>                           patchTable-&gt;GetFVarPatchParamBuffer(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l02132\" name=\"l02132\"></a><span class=\"lineno\"> 2132</span>                           fvarChannel,</div>\n-<div class=\"line\"><a id=\"l02133\" name=\"l02133\"></a><span class=\"lineno\"> 2133</span>                           deviceContext</div>\n-<div class=\"line\"><a id=\"l02134\" name=\"l02134\"></a><span class=\"lineno\"> 2134</span>                           );</div>\n-<div class=\"line\"><a id=\"l02135\" name=\"l02135\"></a><span class=\"lineno\"> 2135</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l02136\" name=\"l02136\"></a><span class=\"lineno\"> 2136</span> </div>\n-<div class=\"line\"><a id=\"l02138\" name=\"l02138\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#af6645aabc094e7549c6899915ce34f67\"> 2138</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01293.html#af6645aabc094e7549c6899915ce34f67\">Compile</a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l02139\" name=\"l02139\"></a><span class=\"lineno\"> 2139</span>                 <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l02140\" name=\"l02140\"></a><span class=\"lineno\"> 2140</span>                 <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l02141\" name=\"l02141\"></a><span class=\"lineno\"> 2141</span>                 <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l02142\" name=\"l02142\"></a><span class=\"lineno\"> 2142</span>                 <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l02143\" name=\"l02143\"></a><span class=\"lineno\"> 2143</span>                 <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l02144\" name=\"l02144\"></a><span class=\"lineno\"> 2144</span>                 <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l02145\" name=\"l02145\"></a><span class=\"lineno\"> 2145</span>                 <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context);</div>\n-<div class=\"line\"><a id=\"l02146\" name=\"l02146\"></a><span class=\"lineno\"> 2146</span> </div>\n-<div class=\"line\"><a id=\"l02148\" name=\"l02148\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01293.html#a7e02041f843415c1056ea2ca3f7d0b62\"> 2148</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01293.html#a7e02041f843415c1056ea2ca3f7d0b62\">Synchronize</a>(<a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context);</div>\n-<div class=\"line\"><a id=\"l02149\" name=\"l02149\"></a><span class=\"lineno\"> 2149</span> </div>\n-<div class=\"line\"><a id=\"l02150\" name=\"l02150\"></a><span class=\"lineno\"> 2150</span>    <span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l02151\" name=\"l02151\"></a><span class=\"lineno\"> 2151</span> </div>\n-<div class=\"line\"><a id=\"l02152\" name=\"l02152\"></a><span class=\"lineno\"> 2152</span>    id&lt;MTLLibrary&gt; _computeLibrary;</div>\n-<div class=\"line\"><a id=\"l02153\" name=\"l02153\"></a><span class=\"lineno\"> 2153</span>    id&lt;MTLComputePipelineState&gt; _evalStencils;</div>\n-<div class=\"line\"><a id=\"l02154\" name=\"l02154\"></a><span class=\"lineno\"> 2154</span>    id&lt;MTLComputePipelineState&gt; _evalPatches;</div>\n-<div class=\"line\"><a id=\"l02155\" name=\"l02155\"></a><span class=\"lineno\"> 2155</span>    id&lt;MTLBuffer&gt; _parameterBuffer;</div>\n-<div class=\"line\"><a id=\"l02156\" name=\"l02156\"></a><span class=\"lineno\"> 2156</span> </div>\n-<div class=\"line\"><a id=\"l02157\" name=\"l02157\"></a><span class=\"lineno\"> 2157</span>    <span class=\"keywordtype\">int</span> _workGroupSize;</div>\n-<div class=\"line\"><a id=\"l02158\" name=\"l02158\"></a><span class=\"lineno\"> 2158</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l02159\" name=\"l02159\"></a><span class=\"lineno\"> 2159</span> </div>\n-<div class=\"line\"><a id=\"l02160\" name=\"l02160\"></a><span class=\"lineno\"> 2160</span>} <span class=\"comment\">//end namespace Osd</span></div>\n-<div class=\"line\"><a id=\"l02161\" name=\"l02161\"></a><span class=\"lineno\"> 2161</span> </div>\n-<div class=\"line\"><a id=\"l02162\" name=\"l02162\"></a><span class=\"lineno\"> 2162</span>} <span class=\"comment\">//end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l02163\" name=\"l02163\"></a><span class=\"lineno\"> 2163</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l02164\" name=\"l02164\"></a><span class=\"lineno\"> 2164</span> </div>\n-<div class=\"line\"><a id=\"l02165\" name=\"l02165\"></a><span class=\"lineno\"> 2165</span>} <span class=\"comment\">//end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l02166\" name=\"l02166\"></a><span class=\"lineno\"> 2166</span> </div>\n-<div class=\"line\"><a id=\"l02167\" name=\"l02167\"></a><span class=\"lineno\"> 2167</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// OPENSUBDIV3_OSD_MTL_COMPUTE_EVALUATOR_H</span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa00912_html_a98098cd229f60d2397d84a76fe654a31\"><div class=\"ttname\"><a href=\"a00912.html#a98098cd229f60d2397d84a76fe654a31\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchArrayVector</a></div><div class=\"ttdeci\">std::vector&lt; PatchArray &gt; PatchArrayVector</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00132\">types.h:132</a></div></div>\n-<div class=\"ttc\" id=\"aa01065_html\"><div class=\"ttname\"><a href=\"a01065.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTable</a></div><div class=\"ttdoc\">Stencil table class wrapping the template for compatibility.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00273\">stencilTable.h:273</a></div></div>\n-<div class=\"ttc\" id=\"aa01081_html\"><div class=\"ttname\"><a href=\"a01081.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTable</a></div><div class=\"ttdoc\">Limit stencil table class wrapping the template for compatibility.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00583\">stencilTable.h:583</a></div></div>\n-<div class=\"ttc\" id=\"aa01141_html\"><div class=\"ttname\"><a href=\"a01141.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::BufferDescriptor</a></div><div class=\"ttdoc\">BufferDescriptor is a struct which describes buffer elements in interleaved data buffers....</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00866_source.html#l00061\">bufferDescriptor.h:61</a></div></div>\n-<div class=\"ttc\" id=\"aa01285_html\"><div class=\"ttname\"><a href=\"a01285.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLContext</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00824_source.html#l00040\">mtlCommon.h:40</a></div></div>\n-<div class=\"ttc\" id=\"aa01289_html\"><div class=\"ttname\"><a href=\"a01289.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLStencilTable</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00806_source.html#l00050\">mtlComputeEvaluator.h:51</a></div></div>\n-<div class=\"ttc\" id=\"aa01289_html_a015dc72c3360b4841ee2b3feb06c106f\"><div class=\"ttname\"><a href=\"a01289.html#a015dc72c3360b4841ee2b3feb06c106f\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLStencilTable::MTLStencilTable</a></div><div class=\"ttdeci\">MTLStencilTable(Far::LimitStencilTable const *stencilTable, MTLContext *context)</div></div>\n-<div class=\"ttc\" id=\"aa01289_html_a13aa05ad0482bad5182feb3cd75b4168\"><div class=\"ttname\"><a href=\"a01289.html#a13aa05ad0482bad5182feb3cd75b4168\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLStencilTable::GetDuWeightsBuffer</a></div><div class=\"ttdeci\">id&lt; MTLBuffer &gt; GetDuWeightsBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00806_source.html#l00069\">mtlComputeEvaluator.h:69</a></div></div>\n-<div class=\"ttc\" id=\"aa01289_html_a1ace4fd3d4d8b840a5b48415175ea8bc\"><div class=\"ttname\"><a href=\"a01289.html#a1ace4fd3d4d8b840a5b48415175ea8bc\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLStencilTable::~MTLStencilTable</a></div><div class=\"ttdeci\">~MTLStencilTable()</div></div>\n-<div class=\"ttc\" id=\"aa01289_html_a2f1e271aba868c291f9e0a9e9d1ace47\"><div class=\"ttname\"><a href=\"a01289.html#a2f1e271aba868c291f9e0a9e9d1ace47\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLStencilTable::GetDvvWeightsBuffer</a></div><div class=\"ttdeci\">id&lt; MTLBuffer &gt; GetDvvWeightsBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00806_source.html#l00073\">mtlComputeEvaluator.h:73</a></div></div>\n-<div class=\"ttc\" id=\"aa01289_html_a45e329ffe9fe4e32a1b21bfc89a6763f\"><div class=\"ttname\"><a href=\"a01289.html#a45e329ffe9fe4e32a1b21bfc89a6763f\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLStencilTable::MTLStencilTable</a></div><div class=\"ttdeci\">MTLStencilTable(Far::StencilTable const *stencilTable, MTLContext *context)</div></div>\n-<div class=\"ttc\" id=\"aa01289_html_a4dec46cc7a06c6c1687109e48f04e085\"><div class=\"ttname\"><a href=\"a01289.html#a4dec46cc7a06c6c1687109e48f04e085\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLStencilTable::GetDuuWeightsBuffer</a></div><div class=\"ttdeci\">id&lt; MTLBuffer &gt; GetDuuWeightsBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00806_source.html#l00071\">mtlComputeEvaluator.h:71</a></div></div>\n-<div class=\"ttc\" id=\"aa01289_html_a6175e9daf70e8c27fb5122546df3fb1f\"><div class=\"ttname\"><a href=\"a01289.html#a6175e9daf70e8c27fb5122546df3fb1f\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLStencilTable::GetDuvWeightsBuffer</a></div><div class=\"ttdeci\">id&lt; MTLBuffer &gt; GetDuvWeightsBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00806_source.html#l00072\">mtlComputeEvaluator.h:72</a></div></div>\n-<div class=\"ttc\" id=\"aa01289_html_a65836d2070b943c8fecbad926d074de2\"><div class=\"ttname\"><a href=\"a01289.html#a65836d2070b943c8fecbad926d074de2\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLStencilTable::GetNumStencils</a></div><div class=\"ttdeci\">int GetNumStencils() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00806_source.html#l00075\">mtlComputeEvaluator.h:75</a></div></div>\n-<div class=\"ttc\" id=\"aa01289_html_a860a80d6ea4ec9aec06280c39376683c\"><div class=\"ttname\"><a href=\"a01289.html#a860a80d6ea4ec9aec06280c39376683c\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLStencilTable::GetIndicesBuffer</a></div><div class=\"ttdeci\">id&lt; MTLBuffer &gt; GetIndicesBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00806_source.html#l00067\">mtlComputeEvaluator.h:67</a></div></div>\n-<div class=\"ttc\" id=\"aa01289_html_a9b2f404d67fa83cd4715d2bbbeef6b4c\"><div class=\"ttname\"><a href=\"a01289.html#a9b2f404d67fa83cd4715d2bbbeef6b4c\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLStencilTable::GetSizesBuffer</a></div><div class=\"ttdeci\">id&lt; MTLBuffer &gt; GetSizesBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00806_source.html#l00065\">mtlComputeEvaluator.h:65</a></div></div>\n-<div class=\"ttc\" id=\"aa01289_html_aa1aa052f6513bda4c60b0ac423fb34cc\"><div class=\"ttname\"><a href=\"a01289.html#aa1aa052f6513bda4c60b0ac423fb34cc\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLStencilTable::GetOffsetsBuffer</a></div><div class=\"ttdeci\">id&lt; MTLBuffer &gt; GetOffsetsBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00806_source.html#l00066\">mtlComputeEvaluator.h:66</a></div></div>\n-<div class=\"ttc\" id=\"aa01289_html_ab22907c9cfe58b82ddfcad8241304500\"><div class=\"ttname\"><a href=\"a01289.html#ab22907c9cfe58b82ddfcad8241304500\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLStencilTable::GetWeightsBuffer</a></div><div class=\"ttdeci\">id&lt; MTLBuffer &gt; GetWeightsBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00806_source.html#l00068\">mtlComputeEvaluator.h:68</a></div></div>\n-<div class=\"ttc\" id=\"aa01289_html_ad96fc1ad226b46fec987d3b131a87a90\"><div class=\"ttname\"><a href=\"a01289.html#ad96fc1ad226b46fec987d3b131a87a90\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLStencilTable::Create</a></div><div class=\"ttdeci\">static MTLStencilTable * Create(STENCIL_TABLE *stencilTable, DEVICE_CONTEXT context)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00806_source.html#l00054\">mtlComputeEvaluator.h:54</a></div></div>\n-<div class=\"ttc\" id=\"aa01289_html_ae7df9ee000b676b2afb8b2979c006494\"><div class=\"ttname\"><a href=\"a01289.html#ae7df9ee000b676b2afb8b2979c006494\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLStencilTable::GetDvWeightsBuffer</a></div><div class=\"ttdeci\">id&lt; MTLBuffer &gt; GetDvWeightsBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00806_source.html#l00070\">mtlComputeEvaluator.h:70</a></div></div>\n-<div class=\"ttc\" id=\"aa01293_html\"><div class=\"ttname\"><a href=\"a01293.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00806_source.html#l00091\">mtlComputeEvaluator.h:92</a></div></div>\n-<div class=\"ttc\" id=\"aa01293_html_a01f08038160f2a7981d56c21a69c0eb9\"><div class=\"ttname\"><a href=\"a01293.html#a01f08038160f2a7981d56c21a69c0eb9\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::EvalStencils</a></div><div class=\"ttdeci\">bool EvalStencils(id&lt; MTLBuffer &gt; srcBuffer, BufferDescriptor const &amp;srcDesc, id&lt; MTLBuffer &gt; dstBuffer, BufferDescriptor const &amp;dstDesc, id&lt; MTLBuffer &gt; duBuffer, BufferDescriptor const &amp;duDesc, id&lt; MTLBuffer &gt; dvBuffer, BufferDescriptor const &amp;dvDesc, id&lt; MTLBuffer &gt; duuBuffer, BufferDescriptor const &amp;duuDesc, id&lt; MTLBuffer &gt; duvBuffer, BufferDescriptor const &amp;duvDesc, id&lt; MTLBuffer &gt; dvvBuffer, BufferDescriptor const &amp;dvvDesc, id&lt; MTLBuffer &gt; sizesBuffer, id&lt; MTLBuffer &gt; offsetsBuffer, id&lt; MTLBuffer &gt; indicesBuffer, id&lt; MTLBuffer &gt; weightsBuffer, id&lt; MTLBuffer &gt; duWeightsBuffer, id&lt; MTLBuffer &gt; dvWeightsBuffer, id&lt; MTLBuffer &gt; duuWeightsBuffer, id&lt; MTLBuffer &gt; duvWeightsBuffer, id&lt; MTLBuffer &gt; dvvWeightsBuffer, int start, int end, MTLContext *context) const</div><div class=\"ttdoc\">Dispatch the MTL compute kernel on GPU asynchronously returns false if the kernel hasn't been compile...</div></div>\n-<div class=\"ttc\" id=\"aa01293_html_a04f16e003e67523aaa60a18a7104a83b\"><div class=\"ttname\"><a href=\"a01293.html#a04f16e003e67523aaa60a18a7104a83b\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, MTLComputeEvaluator *instance, MTLContext *context)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00806_source.html#l00786\">mtlComputeEvaluator.h:786</a></div></div>\n-<div class=\"ttc\" id=\"aa01293_html_a05b843619ebcc7e30f6dc99a6585ef99\"><div class=\"ttname\"><a href=\"a01293.html#a05b843619ebcc7e30f6dc99a6585ef99\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, STENCIL_TABLE const *stencilTable, MTLComputeEvaluator const *instance, MTLContext *context)</div><div class=\"ttdoc\">Generic static stencil function. This function has a same signature as other device kernels have so t...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00806_source.html#l00312\">mtlComputeEvaluator.h:312</a></div></div>\n-<div class=\"ttc\" id=\"aa01293_html_a0b18216ba91299d39434a936ff58309b\"><div class=\"ttname\"><a href=\"a01293.html#a0b18216ba91299d39434a936ff58309b\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel, MTLComputeEvaluator const *instance, MTLContext *deviceContext)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00806_source.html#l01991\">mtlComputeEvaluator.h:1991</a></div></div>\n-<div class=\"ttc\" id=\"aa01293_html_a10015b2c4f90f3a11e60cc88dcbb9d6b\"><div class=\"ttname\"><a href=\"a01293.html#a10015b2c4f90f3a11e60cc88dcbb9d6b\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::MTLComputeEvaluator</a></div><div class=\"ttdeci\">MTLComputeEvaluator()</div></div>\n-<div class=\"ttc\" id=\"aa01293_html_a167639c4a4c57eaae9a880ad50dcab5a\"><div class=\"ttname\"><a href=\"a01293.html#a167639c4a4c57eaae9a880ad50dcab5a\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::~MTLComputeEvaluator</a></div><div class=\"ttdeci\">~MTLComputeEvaluator()</div></div>\n-<div class=\"ttc\" id=\"aa01293_html_a1e8b40a131056bb2e3868d4dd4a94ba6\"><div class=\"ttname\"><a href=\"a01293.html#a1e8b40a131056bb2e3868d4dd4a94ba6\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, MTLComputeEvaluator const *instance, MTLContext *context)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00806_source.html#l00705\">mtlComputeEvaluator.h:705</a></div></div>\n-<div class=\"ttc\" id=\"aa01293_html_a2c24b70c9312d8dff3fecb9ddea52c44\"><div class=\"ttname\"><a href=\"a01293.html#a2c24b70c9312d8dff3fecb9ddea52c44\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::Instantiatable</a></div><div class=\"ttdeci\">bool Instantiatable</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00806_source.html#l00094\">mtlComputeEvaluator.h:94</a></div></div>\n-<div class=\"ttc\" id=\"aa01293_html_a3642ea4f1fe75e6f580d195981f67767\"><div class=\"ttname\"><a href=\"a01293.html#a3642ea4f1fe75e6f580d195981f67767\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, MTLContext *deviceContext) const</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00806_source.html#l01606\">mtlComputeEvaluator.h:1606</a></div></div>\n-<div class=\"ttc\" id=\"aa01293_html_a47b111c4b8b6a94c2705f04b2d7a095d\"><div class=\"ttname\"><a href=\"a01293.html#a47b111c4b8b6a94c2705f04b2d7a095d\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, STENCIL_TABLE const *stencilTable, MTLComputeEvaluator const *instance, MTLContext *context)</div><div class=\"ttdoc\">Generic static stencil function. This function has a same signature as other device kernels have so t...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00806_source.html#l00220\">mtlComputeEvaluator.h:220</a></div></div>\n-<div class=\"ttc\" id=\"aa01293_html_a4b6168e3efdb657463a20aa39ccdb38f\"><div class=\"ttname\"><a href=\"a01293.html#a4b6168e3efdb657463a20aa39ccdb38f\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel, MTLContext *deviceContext) const</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00806_source.html#l01900\">mtlComputeEvaluator.h:1900</a></div></div>\n-<div class=\"ttc\" id=\"aa01293_html_a575672bd557a88df3702b3be802825d8\"><div class=\"ttname\"><a href=\"a01293.html#a575672bd557a88df3702b3be802825d8\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel, MTLComputeEvaluator const *instance, MTLContext *deviceContext)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00806_source.html#l01672\">mtlComputeEvaluator.h:1672</a></div></div>\n-<div class=\"ttc\" id=\"aa01293_html_a6934af1b25d411774984ecec8c626470\"><div class=\"ttname\"><a href=\"a01293.html#a6934af1b25d411774984ecec8c626470\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, MTLComputeEvaluator const *instance, MTLContext *deviceContext)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00806_source.html#l01496\">mtlComputeEvaluator.h:1496</a></div></div>\n-<div class=\"ttc\" id=\"aa01293_html_a6bd37be5877b28116c7378aa3d81bab4\"><div class=\"ttname\"><a href=\"a01293.html#a6bd37be5877b28116c7378aa3d81bab4\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::EvalStencils</a></div><div class=\"ttdeci\">bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, STENCIL_TABLE const *stencilTable, MTLContext *context) const</div><div class=\"ttdoc\">Generic stencil function.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00806_source.html#l00376\">mtlComputeEvaluator.h:376</a></div></div>\n-<div class=\"ttc\" id=\"aa01293_html_a70f82ef5ff338e6170e98480997ecc86\"><div class=\"ttname\"><a href=\"a01293.html#a70f82ef5ff338e6170e98480997ecc86\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::EvalPatches</a></div><div class=\"ttdeci\">bool EvalPatches(id&lt; MTLBuffer &gt; srcBuffer, BufferDescriptor const &amp;srcDesc, id&lt; MTLBuffer &gt; dstBuffer, BufferDescriptor const &amp;dstDesc, id&lt; MTLBuffer &gt; duBuffer, BufferDescriptor const &amp;duDesc, id&lt; MTLBuffer &gt; dvBuffer, BufferDescriptor const &amp;dvDesc, id&lt; MTLBuffer &gt; duuBuffer, BufferDescriptor const &amp;duuDesc, id&lt; MTLBuffer &gt; duvBuffer, BufferDescriptor const &amp;duvDesc, id&lt; MTLBuffer &gt; dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, id&lt; MTLBuffer &gt; patchCoordsBuffer, const PatchArrayVector &amp;patchArrays, id&lt; MTLBuffer &gt; patchIndexBuffer, id&lt; MTLBuffer &gt; patchParamsBuffer, MTLContext *context) const</div></div>\n-<div class=\"ttc\" id=\"aa01293_html_a7ae29a65e3cfdc045541528dd58ee2d5\"><div class=\"ttname\"><a href=\"a01293.html#a7ae29a65e3cfdc045541528dd58ee2d5\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel, MTLContext *deviceContext) const</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00806_source.html#l02106\">mtlComputeEvaluator.h:2106</a></div></div>\n-<div class=\"ttc\" id=\"aa01293_html_a7e02041f843415c1056ea2ca3f7d0b62\"><div class=\"ttname\"><a href=\"a01293.html#a7e02041f843415c1056ea2ca3f7d0b62\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::Synchronize</a></div><div class=\"ttdeci\">static void Synchronize(MTLContext *context)</div><div class=\"ttdoc\">Wait for the dispatched kernel to finish.</div></div>\n-<div class=\"ttc\" id=\"aa01293_html_a8b223dcc2eb6ca7b1389f206b86d3c60\"><div class=\"ttname\"><a href=\"a01293.html#a8b223dcc2eb6ca7b1389f206b86d3c60\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::EvalStencils</a></div><div class=\"ttdeci\">bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, STENCIL_TABLE const *stencilTable, MTLContext *context) const</div><div class=\"ttdoc\">Generic stencil function.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00806_source.html#l00430\">mtlComputeEvaluator.h:430</a></div></div>\n-<div class=\"ttc\" id=\"aa01293_html_a8eb63e824548d0125a66fc5a4435d5f7\"><div class=\"ttname\"><a href=\"a01293.html#a8eb63e824548d0125a66fc5a4435d5f7\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, MTLComputeEvaluator *instance, MTLContext *context)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00806_source.html#l00889\">mtlComputeEvaluator.h:889</a></div></div>\n-<div class=\"ttc\" id=\"aa01293_html_a9349f2fdf4e170771e2216874f2bb23c\"><div class=\"ttname\"><a href=\"a01293.html#a9349f2fdf4e170771e2216874f2bb23c\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel, MTLContext *deviceContext) const</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00806_source.html#l01742\">mtlComputeEvaluator.h:1742</a></div></div>\n-<div class=\"ttc\" id=\"aa01293_html_a974cf5639aed61ef20e1ca50e9f866a6\"><div class=\"ttname\"><a href=\"a01293.html#a974cf5639aed61ef20e1ca50e9f866a6\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, MTLComputeEvaluator const *instance, MTLContext *deviceContext)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00806_source.html#l01192\">mtlComputeEvaluator.h:1192</a></div></div>\n-<div class=\"ttc\" id=\"aa01293_html_a9e01da75168e927a75070da8dd09b06e\"><div class=\"ttname\"><a href=\"a01293.html#a9e01da75168e927a75070da8dd09b06e\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::EvalStencils</a></div><div class=\"ttdeci\">bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, STENCIL_TABLE const *stencilTable, MTLContext *context) const</div><div class=\"ttdoc\">Generic stencil function.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00806_source.html#l00504\">mtlComputeEvaluator.h:504</a></div></div>\n-<div class=\"ttc\" id=\"aa01293_html_aa877bdc66715e90bb513a7d0c08f8a73\"><div class=\"ttname\"><a href=\"a01293.html#aa877bdc66715e90bb513a7d0c08f8a73\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::EvalStencils</a></div><div class=\"ttdeci\">bool EvalStencils(id&lt; MTLBuffer &gt; srcBuffer, BufferDescriptor const &amp;srcDesc, id&lt; MTLBuffer &gt; dstBuffer, BufferDescriptor const &amp;dstDesc, id&lt; MTLBuffer &gt; duBuffer, BufferDescriptor const &amp;duDesc, id&lt; MTLBuffer &gt; dvBuffer, BufferDescriptor const &amp;dvDesc, id&lt; MTLBuffer &gt; sizesBuffer, id&lt; MTLBuffer &gt; offsetsBuffer, id&lt; MTLBuffer &gt; indicesBuffer, id&lt; MTLBuffer &gt; weightsBuffer, id&lt; MTLBuffer &gt; duWeightsBuffer, id&lt; MTLBuffer &gt; dvWeightsBuffer, int start, int end, MTLContext *context) const</div><div class=\"ttdoc\">Dispatch the MTL compute kernel on GPU asynchronously returns false if the kernel hasn't been compile...</div></div>\n-<div class=\"ttc\" id=\"aa01293_html_aa8e715d1d6cb338e9617ca3795a94021\"><div class=\"ttname\"><a href=\"a01293.html#aa8e715d1d6cb338e9617ca3795a94021\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel, MTLComputeEvaluator const *instance, MTLContext *deviceContext)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00806_source.html#l01813\">mtlComputeEvaluator.h:1813</a></div></div>\n-<div class=\"ttc\" id=\"aa01293_html_aab3cbda7289b76b077b371b92e9afaf3\"><div class=\"ttname\"><a href=\"a01293.html#aab3cbda7289b76b077b371b92e9afaf3\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::EvalPatches</a></div><div class=\"ttdeci\">bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, MTLContext *context) const</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00806_source.html#l00966\">mtlComputeEvaluator.h:966</a></div></div>\n-<div class=\"ttc\" id=\"aa01293_html_ab4a74384293a0625c6fc8d4ee6af1314\"><div class=\"ttname\"><a href=\"a01293.html#ab4a74384293a0625c6fc8d4ee6af1314\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, STENCIL_TABLE const *stencilTable, MTLComputeEvaluator const *instance, MTLContext *context)</div><div class=\"ttdoc\">Generic static stencil function. This function has a same signature as other device kernels have so t...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00806_source.html#l00149\">mtlComputeEvaluator.h:149</a></div></div>\n-<div class=\"ttc\" id=\"aa01293_html_abc5af1154bccd394f7d1aba5d353206e\"><div class=\"ttname\"><a href=\"a01293.html#abc5af1154bccd394f7d1aba5d353206e\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, MTLComputeEvaluator const *instance, MTLContext *deviceContext)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00806_source.html#l01325\">mtlComputeEvaluator.h:1325</a></div></div>\n-<div class=\"ttc\" id=\"aa01293_html_add1df0176df3d03028f001f041f26d5c\"><div class=\"ttname\"><a href=\"a01293.html#add1df0176df3d03028f001f041f26d5c\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::EvalPatches</a></div><div class=\"ttdeci\">bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, MTLContext *context) const</div><div class=\"ttdoc\">Generic limit eval function with derivatives. This function has a same signature as other device kern...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00806_source.html#l01104\">mtlComputeEvaluator.h:1104</a></div></div>\n-<div class=\"ttc\" id=\"aa01293_html_ade51863a5d2d4b642f8c78b9e85faf38\"><div class=\"ttname\"><a href=\"a01293.html#ade51863a5d2d4b642f8c78b9e85faf38\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::EvalPatches</a></div><div class=\"ttdeci\">bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, MTLContext *context) const</div><div class=\"ttdoc\">Generic limit eval function with derivatives. This function has a same signature as other device kern...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00806_source.html#l01025\">mtlComputeEvaluator.h:1025</a></div></div>\n-<div class=\"ttc\" id=\"aa01293_html_ae4dc813f334cc8b2e59659c0736bf2eb\"><div class=\"ttname\"><a href=\"a01293.html#ae4dc813f334cc8b2e59659c0736bf2eb\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, MTLContext *deviceContext) const</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00806_source.html#l01407\">mtlComputeEvaluator.h:1407</a></div></div>\n-<div class=\"ttc\" id=\"aa01293_html_ae5186e8abdeee89cbeef798c27c6ba6b\"><div class=\"ttname\"><a href=\"a01293.html#ae5186e8abdeee89cbeef798c27c6ba6b\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, MTLContext *deviceContext) const</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00806_source.html#l01257\">mtlComputeEvaluator.h:1257</a></div></div>\n-<div class=\"ttc\" id=\"aa01293_html_af4625ed1f27d57760257c382ee06a71d\"><div class=\"ttname\"><a href=\"a01293.html#af4625ed1f27d57760257c382ee06a71d\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::Create</a></div><div class=\"ttdeci\">static MTLComputeEvaluator * Create(BufferDescriptor const &amp;srcDesc, BufferDescriptor const &amp;dstDesc, BufferDescriptor const &amp;duDesc, BufferDescriptor const &amp;dvDesc, MTLContext *context)</div></div>\n-<div class=\"ttc\" id=\"aa01293_html_af56350dbfd2ba2396625e8f2cf8d9ed1\"><div class=\"ttname\"><a href=\"a01293.html#af56350dbfd2ba2396625e8f2cf8d9ed1\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::Create</a></div><div class=\"ttdeci\">static MTLComputeEvaluator * Create(BufferDescriptor const &amp;srcDesc, BufferDescriptor const &amp;dstDesc, BufferDescriptor const &amp;duDesc, BufferDescriptor const &amp;dvDesc, BufferDescriptor const &amp;duuDesc, BufferDescriptor const &amp;duvDesc, BufferDescriptor const &amp;dvvDesc, MTLContext *context)</div></div>\n-<div class=\"ttc\" id=\"aa01293_html_af6645aabc094e7549c6899915ce34f67\"><div class=\"ttname\"><a href=\"a01293.html#af6645aabc094e7549c6899915ce34f67\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::Compile</a></div><div class=\"ttdeci\">bool Compile(BufferDescriptor const &amp;srcDesc, BufferDescriptor const &amp;dstDesc, BufferDescriptor const &amp;duDesc, BufferDescriptor const &amp;dvDesc, BufferDescriptor const &amp;duuDesc, BufferDescriptor const &amp;duvDesc, BufferDescriptor const &amp;dvvDesc, MTLContext *context)</div><div class=\"ttdoc\">Configure compute pipline state. Returns false if it fails to create the pipeline state.</div></div>\n-<div class=\"ttc\" id=\"aa01293_html_af6b86e7d88e00a0f6e0e824818117f53\"><div class=\"ttname\"><a href=\"a01293.html#af6b86e7d88e00a0f6e0e824818117f53\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::EvalPatches</a></div><div class=\"ttdeci\">bool EvalPatches(id&lt; MTLBuffer &gt; srcBuffer, BufferDescriptor const &amp;srcDesc, id&lt; MTLBuffer &gt; dstBuffer, BufferDescriptor const &amp;dstDesc, id&lt; MTLBuffer &gt; duBuffer, BufferDescriptor const &amp;duDesc, id&lt; MTLBuffer &gt; dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, id&lt; MTLBuffer &gt; patchCoordsBuffer, const PatchArrayVector &amp;patchArrays, id&lt; MTLBuffer &gt; patchIndexBuffer, id&lt; MTLBuffer &gt; patchParamsBuffer, MTLContext *context) const</div></div>\n+<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span>    <span class=\"comment\">//  When refinement is sparse, we need a mapping between siblings of a vertex</span></div>\n+<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span>    <span class=\"comment\">//  value in the parent and child -- and for some child values, there will not</span></div>\n+<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span>    <span class=\"comment\">//  be a parent value, in which case the source of the parent component will</span></div>\n+<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span>    <span class=\"comment\">//  be stored.  So we refer to the parent &quot;source&quot; rather than &quot;sibling&quot;:</span></div>\n+<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span>    std::vector&lt;LocalIndex&gt; _childValueParentSource;</div>\n+<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span>};</div>\n+<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span> </div>\n+<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span>} <span class=\"comment\">// end namespace internal</span></div>\n+<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span>} <span class=\"comment\">// end namespace Vtr</span></div>\n+<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span> </div>\n+<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\">  116</span> </div>\n+<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_VTR_FVAR_REFINEMENT_H */</span><span class=\"preprocessor\"></span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa00909_html_a4a0e50e01fef3e431767a928c2631cab\"><div class=\"ttname\"><a href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::Index</a></div><div class=\"ttdeci\">int Index</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01495_source.html#l00054\">types.h:54</a></div></div>\n+<div class=\"ttc\" id=\"aa00909_html_a97c1e0c5ac33f97e2b73fde56b56c363\"><div class=\"ttname\"><a href=\"a00909.html#a97c1e0c5ac33f97e2b73fde56b56c363\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::LocalIndex</a></div><div class=\"ttdeci\">unsigned short LocalIndex</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01495_source.html#l00066\">types.h:66</a></div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00806.html\">mtlComputeEvaluator.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bd5473d7d5841d48919aaa9ad0cb1f9b.html\">vtr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00806.html\">fvarRefinement.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-mtlComputeEvaluator.h\n+fvarRefinement.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2013 Pixar\n+2// Copyright 2014 DreamWorks Animation LLC.\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -23,1383 +23,118 @@\n 17//\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n-24\n-25#ifndef OPENSUBDIV3_OSD_MTL_COMPUTE_EVALUATOR_H\n-26#define OPENSUBDIV3_OSD_MTL_COMPUTE_EVALUATOR_H\n-27\n-28#include \"../version.h\"\n-29\n-30#include \"../osd/types.h\"\n-31#include \"../osd/bufferDescriptor.h\"\n-32#include \"../osd/mtlCommon.h\"\n-33\n-34@protocol MTLDevice;\n-35@protocol MTLBuffer;\n-36@protocol MTLLibrary;\n-37@protocol MTLComputePipelineState;\n+24#ifndef OPENSUBDIV3_VTR_FVAR_REFINEMENT_H\n+25#define OPENSUBDIV3_VTR_FVAR_REFINEMENT_H\n+26\n+27#include \"../version.h\"\n+28\n+29#include \"../sdc/types.h\"\n+30#include \"../sdc/crease.h\"\n+31#include \"../vtr/types.h\"\n+32#include \"../vtr/refinement.h\"\n+33#include \"../vtr/fvarLevel.h\"\n+34\n+35#include <vector>\n+36#include <cassert>\n+37#include <cstring>\n 38\n-39namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-40namespace OPENSUBDIV_VERSION {\n-41\n-42namespace Far {\n-43 class PatchTable;\n-44 class StencilTable;\n-45 class LimitStencilTable;\n-46}\n-47\n-48namespace Osd {\n-49\n-_\b5_\b0class _\bM_\bT_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n-51{\n-52public:\n-53 template<typename STENCIL_TABLE, typename DEVICE_CONTEXT>\n-_\b5_\b4 static _\bM_\bT_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be* _\bC_\br_\be_\ba_\bt_\be(STENCIL_TABLE* stencilTable,\n-55 DEVICE_CONTEXT context)\n-56 {\n-57 return new _\bM_\bT_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(stencilTable, context);\n-58 }\n-59\n-60\n-_\b6_\b1 _\bM_\bT_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const* stencilTable, _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context);\n-_\b6_\b2 _\bM_\bT_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const* stencilTable, _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt*\n-context);\n-_\b6_\b3 _\b~_\bM_\bT_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be();\n-64\n-_\b6_\b5 id<MTLBuffer> _\bG_\be_\bt_\bS_\bi_\bz_\be_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _sizesBuffer; }\n-_\b6_\b6 id<MTLBuffer> _\bG_\be_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _offsetsBuffer; }\n-_\b6_\b7 id<MTLBuffer> _\bG_\be_\bt_\bI_\bn_\bd_\bi_\bc_\be_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _indicesBuffer; }\n-_\b6_\b8 id<MTLBuffer> _\bG_\be_\bt_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _weightsBuffer; }\n-_\b6_\b9 id<MTLBuffer> _\bG_\be_\bt_\bD_\bu_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _duWeightsBuffer; }\n-_\b7_\b0 id<MTLBuffer> _\bG_\be_\bt_\bD_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _dvWeightsBuffer; }\n-_\b7_\b1 id<MTLBuffer> _\bG_\be_\bt_\bD_\bu_\bu_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _duuWeightsBuffer; }\n-_\b7_\b2 id<MTLBuffer> _\bG_\be_\bt_\bD_\bu_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _duvWeightsBuffer; }\n-_\b7_\b3 id<MTLBuffer> _\bG_\be_\bt_\bD_\bv_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _dvvWeightsBuffer; }\n+39\n+40namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+41namespace OPENSUBDIV_VERSION {\n+42\n+43namespace Vtr {\n+44namespace internal {\n+45\n+46//\n+47// FVarRefinement:\n+48// A face-varying refinement contains data to support the refinement of a\n+49// particular face-varying \"channel\". Just as Refinement maintains a mapping\n+50// between the components of a parent Level and its child, the face-varying\n+51// analog maintains a mapping between the face-varying values of a parent\n+52// FVarLevel and its child.\n+53//\n+54// It turns out there is little data necessary here, so the class consists\n+55// mainly of methods that populate the child FVarLevel. The mapping data in\n+56// the refinement between Levels serves most purposes and all that is\n+required\n+57// in addition is a mapping from values in the child FVarLevel to the parent.\n+58//\n+59class FVarRefinement {\n+60public:\n+61 FVarRefinement(Refinement const& refinement, FVarLevel& parent, FVarLevel&\n+child);\n+62 ~FVarRefinement();\n+63\n+64 int getChildValueParentSource(_\bI_\bn_\bd_\be_\bx vIndex, int sibling) const {\n+65 return _childValueParentSource[_childFVar.getVertexValueOffset(vIndex,\n+(_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx)sibling)];\n+66 }\n+67\n+68 float getFractionalWeight(_\bI_\bn_\bd_\be_\bx pVert, _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx pSibling,\n+69 _\bI_\bn_\bd_\be_\bx cVert, _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx cSibling) const;\n+70\n+71\n+72 // Modifiers supporting application of the refinement:\n+73 void applyRefinement();\n 74\n-_\b7_\b5 int _\bG_\be_\bt_\bN_\bu_\bm_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs() const { return _numStencils; }\n-76\n-77private:\n-78 id<MTLBuffer> _sizesBuffer;\n-79 id<MTLBuffer> _offsetsBuffer;\n-80 id<MTLBuffer> _indicesBuffer;\n-81 id<MTLBuffer> _weightsBuffer;\n-82 id<MTLBuffer> _duWeightsBuffer;\n-83 id<MTLBuffer> _dvWeightsBuffer;\n-84 id<MTLBuffer> _duuWeightsBuffer;\n-85 id<MTLBuffer> _duvWeightsBuffer;\n-86 id<MTLBuffer> _dvvWeightsBuffer;\n-87\n-88 int _numStencils;\n-89};\n-90\n-_\b9_\b1class _\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n-92{\n-93public:\n-_\b9_\b4 typedef bool _\bI_\bn_\bs_\bt_\ba_\bn_\bt_\bi_\ba_\bt_\ba_\bb_\bl_\be;\n+75 void estimateAndAllocateChildValues();\n+76 void populateChildValues();\n+77 void populateChildValuesFromFaceVertices();\n+78 void populateChildValuesFromEdgeVertices();\n+79 int populateChildValuesForEdgeVertex(_\bI_\bn_\bd_\be_\bx cVert, _\bI_\bn_\bd_\be_\bx pEdge);\n+80 void populateChildValuesFromVertexVertices();\n+81 int populateChildValuesForVertexVertex(_\bI_\bn_\bd_\be_\bx cVert, _\bI_\bn_\bd_\be_\bx pVert);\n+82 void trimAndFinalizeChildValues();\n+83\n+84 void propagateEdgeTags();\n+85 void propagateValueTags();\n+86 void propagateValueCreases();\n+87 void reclassifySemisharpValues();\n+88\n+89private:\n+90 //\n+91 // Identify the Refinement, its Levels and assigned FVarLevels for more\n+92 // immediate access -- child FVarLevel is non-const as it is to be assigned:\n+93 //\n+94 Refinement const & _refinement;\n 95\n-_\b9_\b6 static _\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br * _\bC_\br_\be_\ba_\bt_\be(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-97 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-98 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-99 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-100 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context);\n+96 Level const & _parentLevel;\n+97 FVarLevel const & _parentFVar;\n+98\n+99 Level const & _childLevel;\n+100 FVarLevel & _childFVar;\n 101\n-_\b1_\b0_\b2 static _\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br * _\bC_\br_\be_\ba_\bt_\be(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-103 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-104 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-105 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-106 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-107 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-108 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-109 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context);\n-110\n-_\b1_\b1_\b1 _\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br();\n-_\b1_\b1_\b2 _\b~_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br();\n-113\n-119\n-148 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n-_\b1_\b4_\b9 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n-150 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-151 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-152 STENCIL_TABLE const *stencilTable,\n-153 _\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n-154 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context)\n-155 {\n-156 if (instance) {\n-157 return instance->_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer, srcDesc,\n-158 dstBuffer, dstDesc,\n-159 stencilTable,\n-160 context);\n-161 } else {\n-162 // Create an instance on demand (slow)\n-163 instance = Create(srcDesc, dstDesc,\n-164 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-165 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-166 context);\n-167 if (instance) {\n-168 bool r = instance->_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer, srcDesc,\n-169 dstBuffer, dstDesc,\n-170 stencilTable,\n-171 context);\n-172 delete instance;\n-173 return r;\n-174 }\n-175 return false;\n-176 }\n-177 }\n-178\n-219 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n-_\b2_\b2_\b0 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n-221 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-222 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-223 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-224 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-225 STENCIL_TABLE const *stencilTable,\n-226 _\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n-227 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context) {\n-228\n-229 if (instance) {\n-230 return instance->_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer, srcDesc,\n-231 dstBuffer, dstDesc,\n-232 duBuffer, duDesc,\n-233 dvBuffer, dvDesc,\n-234 stencilTable,\n-235 context);\n-236 } else {\n-237 // Create an instance on demand (slow)\n-238 instance = Create(srcDesc, dstDesc, duDesc, dvDesc, context);\n-239 if (instance) {\n-240 bool r = instance->_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer, srcDesc,\n-241 dstBuffer, dstDesc,\n-242 duBuffer, duDesc,\n-243 dvBuffer, dvDesc,\n-244 stencilTable,\n-245 context);\n-246 delete instance;\n-247 return r;\n-248 }\n-249 return false;\n-250 }\n-251 }\n-252\n-311 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n-_\b3_\b1_\b2 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n-313 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-314 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-315 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-316 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-317 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-318 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-319 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-320 STENCIL_TABLE const *stencilTable,\n-321 _\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n-322 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context) {\n-323\n-324 if (instance) {\n-325 return instance->_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer, srcDesc,\n-326 dstBuffer, dstDesc,\n-327 duBuffer, duDesc,\n-328 dvBuffer, dvDesc,\n-329 duuBuffer, duuDesc,\n-330 duvBuffer, duvDesc,\n-331 dvvBuffer, dvvDesc,\n-332 stencilTable,\n-333 context);\n-334 } else {\n-335 // Create an instance on demand (slow)\n-336 instance = Create(srcDesc, dstDesc, duDesc, dvDesc,\n-337 duuDesc, duvDesc, dvvDesc, context);\n-338 if (instance) {\n-339 bool r = instance->_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer, srcDesc,\n-340 dstBuffer, dstDesc,\n-341 duBuffer, duDesc,\n-342 dvBuffer, dvDesc,\n-343 duuBuffer, duuDesc,\n-344 duvBuffer, duvDesc,\n-345 dvvBuffer, dvvDesc,\n-346 stencilTable,\n-347 context);\n-348 delete instance;\n-349 return r;\n-350 }\n-351 return false;\n-352 }\n-353 }\n-354\n-375 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n-_\b3_\b7_\b6 bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n-377 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-378 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-379 STENCIL_TABLE const *stencilTable,\n-380 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context) const\n-381 {\n-382 return EvalStencils(srcBuffer->BindMTLBuffer(context), srcDesc,\n-383 dstBuffer->BindMTLBuffer(context), dstDesc,\n-384 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-385 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-386 stencilTable->GetSizesBuffer(),\n-387 stencilTable->GetOffsetsBuffer(),\n-388 stencilTable->GetIndicesBuffer(),\n-389 stencilTable->GetWeightsBuffer(),\n-390 0,\n-391 0,\n-392 /* start = */ 0,\n-393 /* end = */ stencilTable->GetNumStencils(),\n-394 context);\n-395 }\n-396\n-429 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n-_\b4_\b3_\b0 bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n-431 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-432 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-433 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-434 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-435 STENCIL_TABLE const *stencilTable,\n-436 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context) const\n-437 {\n-438 return EvalStencils(srcBuffer->BindMTLBuffer(context), srcDesc,\n-439 dstBuffer->BindMTLBuffer(context), dstDesc,\n-440 duBuffer->BindMTLBuffer(context), duDesc,\n-441 dvBuffer->BindMTLBuffer(context), dvDesc,\n-442 stencilTable->GetSizesBuffer(),\n-443 stencilTable->GetOffsetsBuffer(),\n-444 stencilTable->GetIndicesBuffer(),\n-445 stencilTable->GetWeightsBuffer(),\n-446 stencilTable->GetDuWeightsBuffer(),\n-447 stencilTable->GetDvWeightsBuffer(),\n-448 /* start = */ 0,\n-449 /* end = */ stencilTable->GetNumStencils(),\n-450 context);\n-451 }\n-452\n-503 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n-_\b5_\b0_\b4 bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n-505 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-506 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-507 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-508 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-509 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-510 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-511 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-512 STENCIL_TABLE const *stencilTable,\n-513 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context) const\n-514 {\n-515 return EvalStencils(srcBuffer->BindMTLBuffer(context), srcDesc,\n-516 dstBuffer->BindMTLBuffer(context), dstDesc,\n-517 duBuffer->BindMTLBuffer(context), duDesc,\n-518 dvBuffer->BindMTLBuffer(context), dvDesc,\n-519 duuBuffer->BindMTLBuffer(context), duuDesc,\n-520 duvBuffer->BindMTLBuffer(context), duvDesc,\n-521 dvvBuffer->BindMTLBuffer(context), dvvDesc,\n-522 stencilTable->GetSizesBuffer(),\n-523 stencilTable->GetOffsetsBuffer(),\n-524 stencilTable->GetIndicesBuffer(),\n-525 stencilTable->GetWeightsBuffer(),\n-526 stencilTable->GetDuWeightsBuffer(),\n-527 stencilTable->GetDvWeightsBuffer(),\n-528 stencilTable->GetDuuWeightsBuffer(),\n-529 stencilTable->GetDuvWeightsBuffer(),\n-530 stencilTable->GetDvvWeightsBuffer(),\n-531 /* start = */ 0,\n-532 /* end = */ stencilTable->GetNumStencils(),\n-533 context);\n-534 }\n-535\n-_\b5_\b7_\b4 bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(id<MTLBuffer> srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-575 id<MTLBuffer> dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-576 id<MTLBuffer> duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-577 id<MTLBuffer> dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-578 id<MTLBuffer> sizesBuffer,\n-579 id<MTLBuffer> offsetsBuffer,\n-580 id<MTLBuffer> indicesBuffer,\n-581 id<MTLBuffer> weightsBuffer,\n-582 id<MTLBuffer> duWeightsBuffer,\n-583 id<MTLBuffer> dvWeightsBuffer,\n-584 int start,\n-585 int end,\n-586 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context) const;\n-587\n-_\b6_\b4_\b4 bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(id<MTLBuffer> srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-645 id<MTLBuffer> dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-646 id<MTLBuffer> duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-647 id<MTLBuffer> dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-648 id<MTLBuffer> duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-649 id<MTLBuffer> duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-650 id<MTLBuffer> dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-651 id<MTLBuffer> sizesBuffer,\n-652 id<MTLBuffer> offsetsBuffer,\n-653 id<MTLBuffer> indicesBuffer,\n-654 id<MTLBuffer> weightsBuffer,\n-655 id<MTLBuffer> duWeightsBuffer,\n-656 id<MTLBuffer> dvWeightsBuffer,\n-657 id<MTLBuffer> duuWeightsBuffer,\n-658 id<MTLBuffer> duvWeightsBuffer,\n-659 id<MTLBuffer> dvvWeightsBuffer,\n-660 int start,\n-661 int end,\n-662 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context) const;\n-663\n-669\n-703 template <typename SRC_BUFFER, typename DST_BUFFER,\n-704 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b7_\b0_\b5 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n-706 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-707 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-708 int numPatchCoords,\n-709 PATCHCOORD_BUFFER *patchCoords,\n-710 PATCH_TABLE *patchTable,\n-711 _\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n-712 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context) {\n-713\n-714 if (instance) {\n-715 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer, srcDesc,\n-716 dstBuffer, dstDesc,\n-717 numPatchCoords, patchCoords,\n-718 patchTable,\n-719 context);\n-720 } else {\n-721 // Create an instance on demand (slow)\n-722 instance = Create(srcDesc, dstDesc,\n-723 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-724 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-725 context);\n-726 if (instance) {\n-727 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer, srcDesc,\n-728 dstBuffer, dstDesc,\n-729 numPatchCoords, patchCoords,\n-730 patchTable,\n-731 context);\n-732 delete instance;\n-733 return r;\n-734 }\n-735 return false;\n-736 }\n-737 }\n-738\n-784 template <typename SRC_BUFFER, typename DST_BUFFER,\n-785 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b7_\b8_\b6 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n-787 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-788 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-789 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-790 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-791 int numPatchCoords,\n-792 PATCHCOORD_BUFFER *patchCoords,\n-793 PATCH_TABLE *patchTable,\n-794 _\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br* instance,\n-795 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context) {\n-796\n-797 if (instance) {\n-798 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer, srcDesc,\n-799 dstBuffer, dstDesc,\n-800 duBuffer, duDesc,\n-801 dvBuffer, dvDesc,\n-802 numPatchCoords, patchCoords,\n-803 patchTable,\n-804 context);\n-805 } else {\n-806 // Create an instance on demand (slow)\n-807 instance = Create(srcDesc, dstDesc,\n-808 duDesc, dvDesc, context);\n-809 if (instance) {\n-810 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer, srcDesc,\n-811 dstBuffer, dstDesc,\n-812 duBuffer, duDesc,\n-813 dvBuffer, dvDesc,\n-814 numPatchCoords, patchCoords,\n-815 patchTable,\n-816 context);\n-817 delete instance;\n-818 return r;\n-819 }\n-820 return false;\n-821 }\n-822 }\n-823\n-887 template <typename SRC_BUFFER, typename DST_BUFFER,\n-888 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b8_\b8_\b9 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n-890 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-891 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-892 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-893 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-894 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-895 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-896 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-897 int numPatchCoords,\n-898 PATCHCOORD_BUFFER *patchCoords,\n-899 PATCH_TABLE *patchTable,\n-900 _\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br* instance,\n-901 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context) {\n-902\n-903 if (instance) {\n-904 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer, srcDesc,\n-905 dstBuffer, dstDesc,\n-906 duBuffer, duDesc,\n-907 dvBuffer, dvDesc,\n-908 duuBuffer, duuDesc,\n-909 duvBuffer, duvDesc,\n-910 dvvBuffer, dvvDesc,\n-911 numPatchCoords, patchCoords,\n-912 patchTable,\n-913 context);\n-914 } else {\n-915 // Create an instance on demand (slow)\n-916 instance = Create(srcDesc, dstDesc,\n-917 duDesc, dvDesc,\n-918 duuDesc, duvDesc, dvvDesc, context);\n-919 if (instance) {\n-920 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer, srcDesc,\n-921 dstBuffer, dstDesc,\n-922 duBuffer, duDesc,\n-923 dvBuffer, dvDesc,\n-924 duuBuffer, duuDesc,\n-925 duvBuffer, duvDesc,\n-926 dvvBuffer, dvvDesc,\n-927 numPatchCoords, patchCoords,\n-928 patchTable,\n-929 context);\n-930 delete instance;\n-931 return r;\n-932 }\n-933 return false;\n-934 }\n-935 }\n-936\n-964 template <typename SRC_BUFFER, typename DST_BUFFER,\n-965 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b9_\b6_\b6 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n-967 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-968 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-969 int numPatchCoords,\n-970 PATCHCOORD_BUFFER *patchCoords,\n-971 PATCH_TABLE *patchTable,\n-972 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context) const {\n-973\n-974 return EvalPatches(srcBuffer->BindMTLBuffer(context), srcDesc,\n-975 dstBuffer->BindMTLBuffer(context), dstDesc,\n-976 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-977 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-978 numPatchCoords,\n-979 patchCoords->BindMTLBuffer(context),\n-980 patchTable->GetPatchArrays(),\n-981 patchTable->GetPatchIndexBuffer(),\n-982 patchTable->GetPatchParamBuffer(),\n-983 context);\n-984 }\n-985\n-1023 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1024 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b1_\b0_\b2_\b5 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n-1026 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1027 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1028 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-1029 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-1030 int numPatchCoords,\n-1031 PATCHCOORD_BUFFER *patchCoords,\n-1032 PATCH_TABLE *patchTable,\n-1033 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context) const {\n-1034\n-1035 return EvalPatches(srcBuffer->BindMTLBuffer(context), srcDesc,\n-1036 dstBuffer->BindMTLBuffer(context), dstDesc,\n-1037 duBuffer->BindMTLBuffer(context), duDesc,\n-1038 dvBuffer->BindMTLBuffer(context), dvDesc,\n-1039 numPatchCoords,\n-1040 patchCoords->BindMTLBuffer(context),\n-1041 patchTable->GetPatchArrays(),\n-1042 patchTable->GetPatchIndexBuffer(),\n-1043 patchTable->GetPatchParamBuffer(),\n-1044 context);\n-1045 }\n-1046\n-1102 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1103 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b1_\b1_\b0_\b4 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n-1105 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1106 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1107 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-1108 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-1109 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-1110 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-1111 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-1112 int numPatchCoords,\n-1113 PATCHCOORD_BUFFER *patchCoords,\n-1114 PATCH_TABLE *patchTable,\n-1115 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context) const {\n-1116\n-1117 return EvalPatches(srcBuffer->BindMTLBuffer(context), srcDesc,\n-1118 dstBuffer->BindMTLBuffer(context), dstDesc,\n-1119 duBuffer->BindMTLBuffer(context), duDesc,\n-1120 dvBuffer->BindMTLBuffer(context), dvDesc,\n-1121 duuBuffer->BindMTLBuffer(context), duuDesc,\n-1122 duvBuffer->BindMTLBuffer(context), duvDesc,\n-1123 dvvBuffer->BindMTLBuffer(context), dvvDesc,\n-1124 numPatchCoords,\n-1125 patchCoords->BindMTLBuffer(context),\n-1126 patchTable->GetPatchArrays(),\n-1127 patchTable->GetPatchIndexBuffer(),\n-1128 patchTable->GetPatchParamBuffer(),\n-1129 context);\n-1130 }\n-1131\n-_\b1_\b1_\b3_\b2 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(id<MTLBuffer> srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1133 id<MTLBuffer> dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1134 id<MTLBuffer> duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-1135 id<MTLBuffer> dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-1136 int numPatchCoords,\n-1137 id<MTLBuffer> patchCoordsBuffer,\n-1138 const _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\bc_\bt_\bo_\br &patchArrays,\n-1139 id<MTLBuffer> patchIndexBuffer,\n-1140 id<MTLBuffer> patchParamsBuffer,\n-1141 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context) const;\n-1142\n-_\b1_\b1_\b4_\b3 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(id<MTLBuffer> srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1144 id<MTLBuffer> dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1145 id<MTLBuffer> duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-1146 id<MTLBuffer> dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-1147 id<MTLBuffer> duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-1148 id<MTLBuffer> duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-1149 id<MTLBuffer> dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-1150 int numPatchCoords,\n-1151 id<MTLBuffer> patchCoordsBuffer,\n-1152 const _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\bc_\bt_\bo_\br &patchArrays,\n-1153 id<MTLBuffer> patchIndexBuffer,\n-1154 id<MTLBuffer> patchParamsBuffer,\n-1155 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context) const;\n-1156\n-1190 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1191 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b1_\b1_\b9_\b2 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1193 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1194 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1195 int numPatchCoords,\n-1196 PATCHCOORD_BUFFER *patchCoords,\n-1197 PATCH_TABLE *patchTable,\n-1198 _\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n-1199 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* deviceContext) {\n-1200\n-1201 if (instance) {\n-1202 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1203 srcBuffer, srcDesc,\n-1204 dstBuffer, dstDesc,\n-1205 numPatchCoords, patchCoords,\n-1206 patchTable,\n-1207 deviceContext);\n-1208 } else {\n-1209 // Create an instance on demand (slow)\n-1210 instance = Create(srcDesc, dstDesc,\n-1211 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-1212 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-1213 deviceContext);\n-1214 if (instance) {\n-1215 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1216 srcBuffer, srcDesc,\n-1217 dstBuffer, dstDesc,\n-1218 numPatchCoords, patchCoords,\n-1219 patchTable,\n-1220 deviceContext);\n-1221 delete instance;\n-1222 return r;\n-1223 }\n-1224 return false;\n-1225 }\n-1226 }\n-1227\n-1255 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1256 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b1_\b2_\b5_\b7 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1258 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1259 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1260 int numPatchCoords,\n-1261 PATCHCOORD_BUFFER *patchCoords,\n-1262 PATCH_TABLE *patchTable,\n-1263 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* deviceContext) const {\n-1264\n-1265 return EvalPatches(srcBuffer->BindMTLBuffer(deviceContext), srcDesc,\n-1266 dstBuffer->BindMTLBuffer(deviceContext), dstDesc,\n-1267 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-1268 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-1269 numPatchCoords,\n-1270 patchCoords->BindMTLBuffer(deviceContext),\n-1271 patchTable->GetVaryingPatchArrays(),\n-1272 patchTable->GetVaryingPatchIndexBuffer(),\n-1273 patchTable->GetPatchParamBuffer(),\n-1274 deviceContext\n-1275 );\n-1276 }\n-1277\n-1323 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1324 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b1_\b3_\b2_\b5 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1326 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1327 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1328 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-1329 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-1330 int numPatchCoords,\n-1331 PATCHCOORD_BUFFER *patchCoords,\n-1332 PATCH_TABLE *patchTable,\n-1333 _\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n-1334 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* deviceContext) {\n-1335\n-1336 if (instance) {\n-1337 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1338 srcBuffer, srcDesc,\n-1339 dstBuffer, dstDesc,\n-1340 duBuffer, duDesc,\n-1341 dvBuffer, dvDesc,\n-1342 numPatchCoords, patchCoords,\n-1343 patchTable,\n-1344 deviceContext);\n-1345 } else {\n-1346 // Create an instance on demand (slow)\n-1347 instance = Create(srcDesc, dstDesc,\n-1348 duDesc, dvDesc,\n-1349 deviceContext);\n-1350 if (instance) {\n-1351 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1352 srcBuffer, srcDesc,\n-1353 dstBuffer, dstDesc,\n-1354 duBuffer, duDesc,\n-1355 dvBuffer, dvDesc,\n-1356 numPatchCoords, patchCoords,\n-1357 patchTable,\n-1358 deviceContext);\n-1359 delete instance;\n-1360 return r;\n-1361 }\n-1362 return false;\n-1363 }\n-1364 }\n-1365\n-1405 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1406 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b1_\b4_\b0_\b7 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1408 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1409 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1410 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-1411 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-1412 int numPatchCoords,\n-1413 PATCHCOORD_BUFFER *patchCoords,\n-1414 PATCH_TABLE *patchTable,\n-1415 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* deviceContext) const {\n-1416\n-1417 return EvalPatches(srcBuffer->BindMTLBuffer(deviceContext), srcDesc,\n-1418 dstBuffer->BindMTLBuffer(deviceContext), dstDesc,\n-1419 duBuffer->BindMTLBuffer(deviceContext), duDesc,\n-1420 dvBuffer->BindMTLBuffer(deviceContext), dvDesc,\n-1421 numPatchCoords,\n-1422 patchCoords->BindMTLBuffer(deviceContext),\n-1423 patchTable->GetVaryingPatchArrays(),\n-1424 patchTable->GetVaryingPatchIndexBuffer(),\n-1425 patchTable->GetPatchParamBuffer(),\n-1426 deviceContext\n-1427 );\n-1428 }\n-1429\n-1430\n-1494 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1495 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b1_\b4_\b9_\b6 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1497 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1498 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1499 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-1500 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-1501 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-1502 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-1503 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-1504 int numPatchCoords,\n-1505 PATCHCOORD_BUFFER *patchCoords,\n-1506 PATCH_TABLE *patchTable,\n-1507 _\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n-1508 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* deviceContext) {\n-1509\n-1510 if (instance) {\n-1511 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1512 srcBuffer, srcDesc,\n-1513 dstBuffer, dstDesc,\n-1514 duBuffer, duDesc,\n-1515 dvBuffer, dvDesc,\n-1516 duuBuffer, duuDesc,\n-1517 duvBuffer, duvDesc,\n-1518 dvvBuffer, dvvDesc,\n-1519 numPatchCoords, patchCoords,\n-1520 patchTable,\n-1521 deviceContext);\n-1522 } else {\n-1523 // Create an instance on demand (slow)\n-1524 instance = Create(srcDesc, dstDesc,\n-1525 duDesc, dvDesc,\n-1526 duuDesc, duvDesc, dvvDesc,\n-1527 deviceContext);\n-1528 if (instance) {\n-1529 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1530 srcBuffer, srcDesc,\n-1531 dstBuffer, dstDesc,\n-1532 duBuffer, duDesc,\n-1533 dvBuffer, dvDesc,\n-1534 duuBuffer, duuDesc,\n-1535 duvBuffer, duvDesc,\n-1536 dvvBuffer, dvvDesc,\n-1537 numPatchCoords, patchCoords,\n-1538 patchTable,\n-1539 deviceContext);\n-1540 delete instance;\n-1541 return r;\n-1542 }\n-1543 return false;\n-1544 }\n-1545 }\n-1546\n-1604 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1605 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b1_\b6_\b0_\b6 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1607 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1608 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1609 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-1610 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-1611 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-1612 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-1613 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-1614 int numPatchCoords,\n-1615 PATCHCOORD_BUFFER *patchCoords,\n-1616 PATCH_TABLE *patchTable,\n-1617 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* deviceContext) const {\n-1618\n-1619 return EvalPatches(srcBuffer->BindMTLBuffer(deviceContext), srcDesc,\n-1620 dstBuffer->BindMTLBuffer(deviceContext), dstDesc,\n-1621 duBuffer->BindMTLBuffer(deviceContext), duDesc,\n-1622 dvBuffer->BindMTLBuffer(deviceContext), dvDesc,\n-1623 duuBuffer->BindMTLBuffer(deviceContext), duuDesc,\n-1624 duvBuffer->BindMTLBuffer(deviceContext), duvDesc,\n-1625 dvvBuffer->BindMTLBuffer(deviceContext), dvvDesc,\n-1626 numPatchCoords,\n-1627 patchCoords->BindMTLBuffer(deviceContext),\n-1628 patchTable->GetVaryingPatchArrays(),\n-1629 patchTable->GetVaryingPatchIndexBuffer(),\n-1630 patchTable->GetPatchParamBuffer(),\n-1631 deviceContext\n-1632 );\n-1633 }\n-1634\n-1670 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1671 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b1_\b6_\b7_\b2 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1673 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1674 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1675 int numPatchCoords,\n-1676 PATCHCOORD_BUFFER *patchCoords,\n-1677 PATCH_TABLE *patchTable,\n-1678 int fvarChannel,\n-1679 _\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n-1680 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* deviceContext) {\n-1681\n-1682 if (instance) {\n-1683 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1684 srcBuffer, srcDesc,\n-1685 dstBuffer, dstDesc,\n-1686 numPatchCoords, patchCoords,\n-1687 patchTable,\n-1688 fvarChannel,\n-1689 deviceContext);\n-1690 } else {\n-1691 // Create an instance on demand (slow)\n-1692 instance = Create(srcDesc, dstDesc,\n-1693 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-1694 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-1695 deviceContext);\n-1696 if (instance) {\n-1697 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1698 srcBuffer, srcDesc,\n-1699 dstBuffer, dstDesc,\n-1700 numPatchCoords, patchCoords,\n-1701 patchTable,\n-1702 fvarChannel,\n-1703 deviceContext);\n-1704 delete instance;\n-1705 return r;\n-1706 }\n-1707 return false;\n-1708 }\n-1709 }\n-1710\n-1740 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1741 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b1_\b7_\b4_\b2 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1743 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1744 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1745 int numPatchCoords,\n-1746 PATCHCOORD_BUFFER *patchCoords,\n-1747 PATCH_TABLE *patchTable,\n-1748 int fvarChannel,\n-1749 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* deviceContext) const {\n-1750\n-1751 return EvalPatches(srcBuffer->BindMTLBuffer(deviceContext), srcDesc,\n-1752 dstBuffer->BindMTLBuffer(deviceContext), dstDesc,\n-1753 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-1754 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-1755 numPatchCoords,\n-1756 patchCoords->BindMTLBuffer(deviceContext),\n-1757 patchTable->GetFVarPatchArrays(fvarChannel),\n-1758 patchTable->GetFVarPatchIndexBuffer(fvarChannel),\n-1759 patchTable->GetFVarPatchParamBuffer(fvarChannel),\n-1760 deviceContext\n-1761 );\n-1762 }\n-1763\n-1811 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1812 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b1_\b8_\b1_\b3 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1814 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1815 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1816 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-1817 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-1818 int numPatchCoords,\n-1819 PATCHCOORD_BUFFER *patchCoords,\n-1820 PATCH_TABLE *patchTable,\n-1821 int fvarChannel,\n-1822 _\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n-1823 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* deviceContext) {\n-1824\n-1825 if (instance) {\n-1826 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1827 srcBuffer, srcDesc,\n-1828 dstBuffer, dstDesc,\n-1829 duBuffer, duDesc,\n-1830 dvBuffer, dvDesc,\n-1831 numPatchCoords, patchCoords,\n-1832 patchTable,\n-1833 fvarChannel,\n-1834 deviceContext);\n-1835 } else {\n-1836 // Create an instance on demand (slow)\n-1837 instance = Create(srcDesc, dstDesc,\n-1838 duDesc, dvDesc,\n-1839 deviceContext);\n-1840 if (instance) {\n-1841 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1842 srcBuffer, srcDesc,\n-1843 dstBuffer, dstDesc,\n-1844 duBuffer, duDesc,\n-1845 dvBuffer, dvDesc,\n-1846 numPatchCoords, patchCoords,\n-1847 patchTable,\n-1848 fvarChannel,\n-1849 deviceContext);\n-1850 delete instance;\n-1851 return r;\n-1852 }\n-1853 return false;\n-1854 }\n-1855 }\n-1856\n-1898 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1899 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b1_\b9_\b0_\b0 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1901 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1902 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1903 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-1904 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-1905 int numPatchCoords,\n-1906 PATCHCOORD_BUFFER *patchCoords,\n-1907 PATCH_TABLE *patchTable,\n-1908 int fvarChannel,\n-1909 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* deviceContext) const {\n-1910\n-1911 return EvalPatches(srcBuffer->BindMTLBuffer(deviceContext), srcDesc,\n-1912 dstBuffer->BindMTLBuffer(deviceContext), dstDesc,\n-1913 duBuffer->BindMTLBuffer(deviceContext), duDesc,\n-1914 dvBuffer->BindMTLBuffer(deviceContext), dvDesc,\n-1915 numPatchCoords,\n-1916 patchCoords->BindMTLBuffer(deviceContext),\n-1917 patchTable->GetFVarPatchArrays(fvarChannel),\n-1918 patchTable->GetFVarPatchIndexBuffer(fvarChannel),\n-1919 patchTable->GetFVarPatchParamBuffer(fvarChannel),\n-1920 deviceContext\n-1921 );\n-1922 }\n-1923\n-1989 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1990 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b1_\b9_\b9_\b1 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1992 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1993 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1994 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-1995 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-1996 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-1997 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-1998 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-1999 int numPatchCoords,\n-2000 PATCHCOORD_BUFFER *patchCoords,\n-2001 PATCH_TABLE *patchTable,\n-2002 int fvarChannel,\n-2003 _\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n-2004 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* deviceContext) {\n-2005\n-2006 if (instance) {\n-2007 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-2008 srcBuffer, srcDesc,\n-2009 dstBuffer, dstDesc,\n-2010 duBuffer, duDesc,\n-2011 dvBuffer, dvDesc,\n-2012 duuBuffer, duuDesc,\n-2013 duvBuffer, duvDesc,\n-2014 dvvBuffer, dvvDesc,\n-2015 numPatchCoords, patchCoords,\n-2016 patchTable,\n-2017 fvarChannel,\n-2018 deviceContext);\n-2019 } else {\n-2020 // Create an instance on demand (slow)\n-2021 instance = Create(srcDesc, dstDesc,\n-2022 duDesc, dvDesc,\n-2023 duuDesc, duvDesc, dvvDesc,\n-2024 deviceContext);\n-2025 if (instance) {\n-2026 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-2027 srcBuffer, srcDesc,\n-2028 dstBuffer, dstDesc,\n-2029 duBuffer, duDesc,\n-2030 dvBuffer, dvDesc,\n-2031 duuBuffer, duuDesc,\n-2032 duvBuffer, duvDesc,\n-2033 dvvBuffer, dvvDesc,\n-2034 numPatchCoords, patchCoords,\n-2035 patchTable,\n-2036 fvarChannel,\n-2037 deviceContext);\n-2038 delete instance;\n-2039 return r;\n-2040 }\n-2041 return false;\n-2042 }\n-2043 }\n-2044\n-2104 template <typename SRC_BUFFER, typename DST_BUFFER,\n-2105 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b2_\b1_\b0_\b6 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-2107 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-2108 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-2109 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-2110 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-2111 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-2112 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-2113 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-2114 int numPatchCoords,\n-2115 PATCHCOORD_BUFFER *patchCoords,\n-2116 PATCH_TABLE *patchTable,\n-2117 int fvarChannel,\n-2118 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* deviceContext) const {\n-2119\n-2120 return EvalPatches(srcBuffer->BindMTLBuffer(deviceContext), srcDesc,\n-2121 dstBuffer->BindMTLBuffer(deviceContext), dstDesc,\n-2122 duBuffer->BindMTLBuffer(deviceContext), duDesc,\n-2123 dvBuffer->BindMTLBuffer(deviceContext), dvDesc,\n-2124 duuBuffer->BindMTLBuffer(deviceContext), duuDesc,\n-2125 duvBuffer->BindMTLBuffer(deviceContext), duvDesc,\n-2126 dvvBuffer->BindMTLBuffer(deviceContext), dvvDesc,\n-2127 numPatchCoords,\n-2128 patchCoords->BindMTLBuffer(deviceContext),\n-2129 patchTable->GetFVarPatchArrays(fvarChannel),\n-2130 patchTable->GetFVarPatchIndexBuffer(fvarChannel),\n-2131 patchTable->GetFVarPatchParamBuffer(fvarChannel),\n-2132 fvarChannel,\n-2133 deviceContext\n-2134 );\n-2135 }\n-2136\n-_\b2_\b1_\b3_\b8 bool _\bC_\bo_\bm_\bp_\bi_\bl_\be(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-2139 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-2140 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-2141 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-2142 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-2143 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-2144 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-2145 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context);\n-2146\n-_\b2_\b1_\b4_\b8 static void _\bS_\by_\bn_\bc_\bh_\br_\bo_\bn_\bi_\bz_\be(_\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context);\n-2149\n-2150 private:\n-2151\n-2152 id<MTLLibrary> _computeLibrary;\n-2153 id<MTLComputePipelineState> _evalStencils;\n-2154 id<MTLComputePipelineState> _evalPatches;\n-2155 id<MTLBuffer> _parameterBuffer;\n-2156\n-2157 int _workGroupSize;\n-2158};\n-2159\n-2160} //end namespace Osd\n-2161\n-2162} //end namespace OPENSUBDIV_VERSION\n-2163using namespace OPENSUBDIV_VERSION;\n-2164\n-2165} //end namespace OpenSubdiv\n-2166\n-2167#endif // OPENSUBDIV3_OSD_MTL_COMPUTE_EVALUATOR_H\n+102 // When refinement is sparse, we need a mapping between siblings of a\n+vertex\n+103 // value in the parent and child -- and for some child values, there will\n+not\n+104 // be a parent value, in which case the source of the parent component will\n+105 // be stored. So we refer to the parent \"source\" rather than \"sibling\":\n+106 //\n+107 std::vector<LocalIndex> _childValueParentSource;\n+108};\n+109\n+110} // end namespace internal\n+111} // end namespace Vtr\n+112\n+113} // end namespace OPENSUBDIV_VERSION\n+114using namespace OPENSUBDIV_VERSION;\n+115} // end namespace OpenSubdiv\n+116\n+117#endif /* OPENSUBDIV3_VTR_FVAR_REFINEMENT_H */\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\bc_\bt_\bo_\br\n-std::vector< PatchArray > PatchArrayVector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b1_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n-Stencil table class wrapping the template for compatibility.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b2_\b7_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n-Limit stencil table class wrapping the template for compatibility.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b8_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n-BufferDescriptor is a struct which describes buffer elements in interleaved\n-data buffers....\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b6_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bm_\bo_\bn_\b._\bh_\b:_\b4_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b5_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bM_\bT_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n-MTLStencilTable(Far::LimitStencilTable const *stencilTable, MTLContext\n-*context)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bD_\bu_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br\n-id< MTLBuffer > GetDuWeightsBuffer() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b6_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b~_\bM_\bT_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n-~MTLStencilTable()\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bD_\bv_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br\n-id< MTLBuffer > GetDvvWeightsBuffer() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bM_\bT_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n-MTLStencilTable(Far::StencilTable const *stencilTable, MTLContext *context)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bD_\bu_\bu_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br\n-id< MTLBuffer > GetDuuWeightsBuffer() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bD_\bu_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br\n-id< MTLBuffer > GetDuvWeightsBuffer() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-int GetNumStencils() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bI_\bn_\bd_\bi_\bc_\be_\bs_\bB_\bu_\bf_\bf_\be_\br\n-id< MTLBuffer > GetIndicesBuffer() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b6_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bS_\bi_\bz_\be_\bs_\bB_\bu_\bf_\bf_\be_\br\n-id< MTLBuffer > GetSizesBuffer() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b6_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br\n-id< MTLBuffer > GetOffsetsBuffer() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b6_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br\n-id< MTLBuffer > GetWeightsBuffer() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b6_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static MTLStencilTable * Create(STENCIL_TABLE *stencilTable, DEVICE_CONTEXT\n-context)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b5_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bD_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br\n-id< MTLBuffer > GetDvWeightsBuffer() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b9_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-bool EvalStencils(id< MTLBuffer > srcBuffer, BufferDescriptor const &srcDesc,\n-id< MTLBuffer > dstBuffer, BufferDescriptor const &dstDesc, id< MTLBuffer >\n-duBuffer, BufferDescriptor const &duDesc, id< MTLBuffer > dvBuffer,\n-BufferDescriptor const &dvDesc, id< MTLBuffer > duuBuffer, BufferDescriptor\n-const &duuDesc, id< MTLBuffer > duvBuffer, BufferDescriptor const &duvDesc, id<\n-MTLBuffer > dvvBuffer, BufferDescriptor const &dvvDesc, id< MTLBuffer >\n-sizesBuffer, id< MTLBuffer > offsetsBuffer, id< MTLBuffer > indicesBuffer, id<\n-MTLBuffer > weightsBuffer, id< MTLBuffer > duWeightsBuffer, id< MTLBuffer >\n-dvWeightsBuffer, id< MTLBuffer > duuWeightsBuffer, id< MTLBuffer >\n-duvWeightsBuffer, id< MTLBuffer > dvvWeightsBuffer, int start, int end,\n-MTLContext *context) const\n-Dispatch the MTL compute kernel on GPU asynchronously returns false if the\n-kernel hasn't been compile...\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n-BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n-&dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE\n-*patchTable, MTLComputeEvaluator *instance, MTLContext *context)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b8_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n-*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n-BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const\n-&duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER\n-*dvvBuffer, BufferDescriptor const &dvvDesc, STENCIL_TABLE const *stencilTable,\n-MTLComputeEvaluator const *instance, MTLContext *context)\n-Generic static stencil function. This function has a same signature as other\n-device kernels have so t...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b3_\b1_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:\n-_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n-static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor\n-const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,\n-DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n-BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const\n-&duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER\n-*dvvBuffer, BufferDescriptor const &dvvDesc, int numPatchCoords,\n-PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel,\n-MTLComputeEvaluator const *instance, MTLContext *deviceContext)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b9_\b9_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n-MTLComputeEvaluator()\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\b~_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n-~MTLComputeEvaluator()\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords,\n-PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, MTLComputeEvaluator\n-const *instance, MTLContext *context)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b0_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bI_\bn_\bs_\bt_\ba_\bn_\bt_\bi_\ba_\bt_\ba_\bb_\bl_\be\n-bool Instantiatable\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b9_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n-bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n-BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n-&dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER\n-*duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer,\n-BufferDescriptor const &dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n-*patchCoords, PATCH_TABLE *patchTable, MTLContext *deviceContext) const\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b6_\b0_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n-*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n-BufferDescriptor const &dvDesc, STENCIL_TABLE const *stencilTable,\n-MTLComputeEvaluator const *instance, MTLContext *context)\n-Generic static stencil function. This function has a same signature as other\n-device kernels have so t...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b2_\b2_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:\n-_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n-bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n-*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n-BufferDescriptor const &dvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n-*patchCoords, PATCH_TABLE *patchTable, int fvarChannel, MTLContext\n-*deviceContext) const\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b9_\b0_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:\n-_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n-static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor\n-const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int\n-numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int\n-fvarChannel, MTLComputeEvaluator const *instance, MTLContext *deviceContext)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b6_\b7_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n-static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n-*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n-BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const\n-&duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER\n-*dvvBuffer, BufferDescriptor const &dvvDesc, int numPatchCoords,\n-PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, MTLComputeEvaluator\n-const *instance, MTLContext *deviceContext)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b4_\b9_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, STENCIL_TABLE const\n-*stencilTable, MTLContext *context) const\n-Generic stencil function.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b3_\b7_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-bool EvalPatches(id< MTLBuffer > srcBuffer, BufferDescriptor const &srcDesc,\n-id< MTLBuffer > dstBuffer, BufferDescriptor const &dstDesc, id< MTLBuffer >\n-duBuffer, BufferDescriptor const &duDesc, id< MTLBuffer > dvBuffer,\n-BufferDescriptor const &dvDesc, id< MTLBuffer > duuBuffer, BufferDescriptor\n-const &duuDesc, id< MTLBuffer > duvBuffer, BufferDescriptor const &duvDesc, id<\n-MTLBuffer > dvvBuffer, BufferDescriptor const &dvvDesc, int numPatchCoords, id<\n-MTLBuffer > patchCoordsBuffer, const PatchArrayVector &patchArrays, id<\n-MTLBuffer > patchIndexBuffer, id< MTLBuffer > patchParamsBuffer, MTLContext\n-*context) const\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:\n-_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n-bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n-*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n-BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const\n-&duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER\n-*dvvBuffer, BufferDescriptor const &dvvDesc, int numPatchCoords,\n-PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel,\n-MTLContext *deviceContext) const\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b2_\b1_\b0_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bS_\by_\bn_\bc_\bh_\br_\bo_\bn_\bi_\bz_\be\n-static void Synchronize(MTLContext *context)\n-Wait for the dispatched kernel to finish.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n-BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n-&dvDesc, STENCIL_TABLE const *stencilTable, MTLContext *context) const\n-Generic stencil function.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b4_\b3_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n-BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n-&dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER\n-*duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer,\n-BufferDescriptor const &dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n-*patchCoords, PATCH_TABLE *patchTable, MTLComputeEvaluator *instance,\n-MTLContext *context)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b8_\b8_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:\n-_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n-bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int\n-numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int\n-fvarChannel, MTLContext *deviceContext) const\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b7_\b4_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n-static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int\n-numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable,\n-MTLComputeEvaluator const *instance, MTLContext *deviceContext)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b1_\b9_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n-BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n-&dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER\n-*duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer,\n-BufferDescriptor const &dvvDesc, STENCIL_TABLE const *stencilTable, MTLContext\n-*context) const\n-Generic stencil function.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b5_\b0_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-bool EvalStencils(id< MTLBuffer > srcBuffer, BufferDescriptor const &srcDesc,\n-id< MTLBuffer > dstBuffer, BufferDescriptor const &dstDesc, id< MTLBuffer >\n-duBuffer, BufferDescriptor const &duDesc, id< MTLBuffer > dvBuffer,\n-BufferDescriptor const &dvDesc, id< MTLBuffer > sizesBuffer, id< MTLBuffer >\n-offsetsBuffer, id< MTLBuffer > indicesBuffer, id< MTLBuffer > weightsBuffer,\n-id< MTLBuffer > duWeightsBuffer, id< MTLBuffer > dvWeightsBuffer, int start,\n-int end, MTLContext *context) const\n-Dispatch the MTL compute kernel on GPU asynchronously returns false if the\n-kernel hasn't been compile...\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:\n-_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n-static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor\n-const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,\n-DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n-BufferDescriptor const &dvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n-*patchCoords, PATCH_TABLE *patchTable, int fvarChannel, MTLComputeEvaluator\n-const *instance, MTLContext *deviceContext)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b8_\b1_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords,\n-PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, MTLContext *context)\n-const\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b9_\b6_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, STENCIL_TABLE\n-const *stencilTable, MTLComputeEvaluator const *instance, MTLContext *context)\n-Generic static stencil function. This function has a same signature as other\n-device kernels have so t...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b4_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n-static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n-*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n-BufferDescriptor const &dvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n-*patchCoords, PATCH_TABLE *patchTable, MTLComputeEvaluator const *instance,\n-MTLContext *deviceContext)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b3_\b2_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n-BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n-&dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER\n-*duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer,\n-BufferDescriptor const &dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n-*patchCoords, PATCH_TABLE *patchTable, MTLContext *context) const\n-Generic limit eval function with derivatives. This function has a same\n-signature as other device kern...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b1_\b0_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n-BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n-&dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE\n-*patchTable, MTLContext *context) const\n-Generic limit eval function with derivatives. This function has a same\n-signature as other device kern...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b0_\b2_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n-bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n-BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n-&dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE\n-*patchTable, MTLContext *deviceContext) const\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b4_\b0_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n-bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords,\n-PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, MTLContext\n-*deviceContext) const\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b2_\b5_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static MTLComputeEvaluator * Create(BufferDescriptor const &srcDesc,\n-BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc,\n-BufferDescriptor const &dvDesc, MTLContext *context)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static MTLComputeEvaluator * Create(BufferDescriptor const &srcDesc,\n-BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc,\n-BufferDescriptor const &dvDesc, BufferDescriptor const &duuDesc,\n-BufferDescriptor const &duvDesc, BufferDescriptor const &dvvDesc, MTLContext\n-*context)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bC_\bo_\bm_\bp_\bi_\bl_\be\n-bool Compile(BufferDescriptor const &srcDesc, BufferDescriptor const &dstDesc,\n-BufferDescriptor const &duDesc, BufferDescriptor const &dvDesc,\n-BufferDescriptor const &duuDesc, BufferDescriptor const &duvDesc,\n-BufferDescriptor const &dvvDesc, MTLContext *context)\n-Configure compute pipline state. Returns false if it fails to create the\n-pipeline state.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-bool EvalPatches(id< MTLBuffer > srcBuffer, BufferDescriptor const &srcDesc,\n-id< MTLBuffer > dstBuffer, BufferDescriptor const &dstDesc, id< MTLBuffer >\n-duBuffer, BufferDescriptor const &duDesc, id< MTLBuffer > dvBuffer,\n-BufferDescriptor const &dvDesc, int numPatchCoords, id< MTLBuffer >\n-patchCoordsBuffer, const PatchArrayVector &patchArrays, id< MTLBuffer >\n-patchIndexBuffer, id< MTLBuffer > patchParamsBuffer, MTLContext *context) const\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx\n+int Index\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b5_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx\n+unsigned short LocalIndex\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b6_\b6\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bm_\bt_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh\n+    * _\bv_\bt_\br\n+    * _\bf_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00809.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00809.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/mtlPatchTable.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/vtr/sparseSelector.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -88,47 +88,38 @@\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n-<a href=\"#nested-classes\">Classes</a> &#124;\n <a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">mtlPatchTable.h File Reference</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">sparseSelector.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00773_source.html\">../far/patchDescriptor.h</a>&quot;</code><br />\n-<code>#include &quot;../osd/nonCopyable.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a01489_source.html\">../osd/types.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00824_source.html\">../osd/mtlCommon.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a01495_source.html\">../vtr/types.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00803_source.html\">../vtr/refinement.h</a>&quot;</code><br />\n+<code>#include &lt;vector&gt;</code><br />\n </div>\n <p><a href=\"a00809_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n-<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n-Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01305.html\">MTLPatchTable</a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-</table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far</a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n+<tr class=\"memitem:a00909\" id=\"r_a00909\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00909.html\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00809.html\">mtlPatchTable.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bd5473d7d5841d48919aaa9ad0cb1f9b.html\">vtr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00809.html\">sparseSelector.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,28 +1,22 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-mtlPatchTable.h File Reference\n+_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+sparseSelector.h File Reference\n #include \"../version.h\"\n-#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh\"\n-#include \"../osd/nonCopyable.h\"\n-#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n-#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bm_\bt_\bl_\bC_\bo_\bm_\bm_\bo_\bn_\b._\bh\"\n+#include \"_\b._\b._\b/_\bv_\bt_\br_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n+#include \"_\b._\b._\b/_\bv_\bt_\br_\b/_\br_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt_\b._\bh\"\n+#include <vector>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n-C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n-\u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br\n-\u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bm_\bt_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh\n+    * _\bv_\bt_\br\n+    * _\bs_\bp_\ba_\br_\bs_\be_\bS_\be_\bl_\be_\bc_\bt_\bo_\br_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00809_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00809_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/mtlPatchTable.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/vtr/sparseSelector.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">mtlPatchTable.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">sparseSelector.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00809.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2013 Pixar</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2014 DreamWorks Animation LLC.</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -118,124 +118,98 @@\n <div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_MTL_PATCH_TABLE_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_MTL_PATCH_TABLE_H</span></div>\n-<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n-<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#include &quot;../far/patchDescriptor.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../osd/nonCopyable.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../osd/types.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &quot;../osd/mtlCommon.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_VTR_SPARSE_SELECTOR_H</span></div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#define OPENSUBDIV3_VTR_SPARSE_SELECTOR_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span> </div>\n+<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span> </div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#include &quot;../vtr/types.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../vtr/refinement.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n <div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">@protocol </span>MTLDevice;</div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">@protocol </span>MTLBuffer;</div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n <div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">namespace </span>Vtr {</div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"keyword\">namespace </span>internal {</div>\n <div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span> </div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"keyword\">namespace </span>Far {</div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span>    <span class=\"keyword\">class </span>PatchTable;</div>\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span>};</div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span> </div>\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span><span class=\"keyword\">namespace </span>Osd {</div>\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00046\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01305.html\">   46</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01305.html\">MTLPatchTable</a> : <span class=\"keyword\">private</span> NonCopyable&lt;MTLPatchTable&gt; {</div>\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01305.html#aa00654dc321a5c8dc370a900b0f404da\">   48</a></span>    <span class=\"keyword\">typedef</span> id&lt;MTLBuffer&gt; <a class=\"code hl_typedef\" href=\"a01305.html#aa00654dc321a5c8dc370a900b0f404da\">VertexBufferBinding</a>;</div>\n-<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span> </div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01305.html#a3f197c2ae3862390d72e7443a2525187\">   50</a></span>    <a class=\"code hl_function\" href=\"a01305.html#a3f197c2ae3862390d72e7443a2525187\">MTLPatchTable</a>();</div>\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01305.html#ad608acc5d9ea38f82548f2e0e234cf4e\">   51</a></span>    <a class=\"code hl_function\" href=\"a01305.html#ad608acc5d9ea38f82548f2e0e234cf4e\">~MTLPatchTable</a>();</div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span> </div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span>    <span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00054\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01305.html#ad54c4e07ca48004585448396b980f0d9\">   54</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01305.html\">MTLPatchTable</a> *<a class=\"code hl_function\" href=\"a01305.html#ad54c4e07ca48004585448396b980f0d9\">Create</a>(<a class=\"code hl_class\" href=\"a00993.html\">Far::PatchTable</a> <span class=\"keyword\">const</span> *farPatchTable, DEVICE_CONTEXT context)</div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span>    {</div>\n-<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01305.html#ad54c4e07ca48004585448396b980f0d9\">Create</a>(farPatchTable, context);</div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span>    }</div>\n-</div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"comment\">//  SparseSelector:</span></div>\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span><span class=\"comment\">//      Class supporting &quot;selection&quot; of components in a Level for sparse Refinement.</span></div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"comment\">//  The term &quot;selection&quot; here implies interest in the limit for that component, i.e.</span></div>\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span><span class=\"comment\">//  the limit point for a selected vertex, the limit patch for a face, etc.  So this</span></div>\n+<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span><span class=\"comment\">//  class is responsible for ensuring that all neighboring components required to</span></div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span><span class=\"comment\">//  support the limit of those selected are included in the refinement.</span></div>\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span><span class=\"comment\">//  This class is associated with (and constructed given) a Refinement and its role</span></div>\n+<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span><span class=\"comment\">//  is to initialize that Refinement instance for eventual sparse refinement.  So it</span></div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span><span class=\"comment\">//  is a friend of and expected to modify the Refinement as part of the selection.</span></div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span><span class=\"comment\">//  Given its simplicity and scope it may be worth nesting it in Vtr::Refinement.</span></div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span><span class=\"comment\">//  While all three component types -- vertices, edges and faces -- can be selected,</span></div>\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span><span class=\"comment\">//  only selection of faces is currently used and actively supported as part of the</span></div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span><span class=\"comment\">//  feature-adaptive refinement.</span></div>\n+<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span><span class=\"keyword\">class </span>SparseSelector {</div>\n <div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span> </div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01305.html#a24c34d2b403d22f2d3bcfdf6f5005ee4\">   59</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01305.html\">MTLPatchTable</a> *<a class=\"code hl_function\" href=\"a01305.html#a24c34d2b403d22f2d3bcfdf6f5005ee4\">Create</a>(<a class=\"code hl_class\" href=\"a00993.html\">Far::PatchTable</a> <span class=\"keyword\">const</span> *farPatchTable, <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context);</div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span> </div>\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01305.html#a18e3d09b0c7b7552f8e419e36788166a\">   61</a></span>    <a class=\"code hl_typedef\" href=\"a00912.html#a98098cd229f60d2397d84a76fe654a31\">PatchArrayVector</a> <span class=\"keyword\">const</span> &amp;<a class=\"code hl_function\" href=\"a01305.html#a18e3d09b0c7b7552f8e419e36788166a\">GetPatchArrays</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01305.html#a5dfb6b58580f2dec58e9b5bfdb4ed9f1\">_patchArrays</a>; }</div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01305.html#a4c33a50d79c6e811fb78461ce00c6310\">   62</a></span>    id&lt;MTLBuffer&gt; <a class=\"code hl_function\" href=\"a01305.html#a4c33a50d79c6e811fb78461ce00c6310\">GetPatchIndexBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01305.html#af3b671a26ce6aaead2c7a2633b7cd268\">_indexBuffer</a>; }</div>\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01305.html#a445098a6db6b14888b3a8bac35967e52\">   63</a></span>    id&lt;MTLBuffer&gt; <a class=\"code hl_function\" href=\"a01305.html#a445098a6db6b14888b3a8bac35967e52\">GetPatchParamBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01305.html#ac8b76e9d03149033d838a528d667e193\">_patchParamBuffer</a>; }</div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span> </div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01305.html#aec45672f51f456fea341d644bcf16434\">   65</a></span>    <a class=\"code hl_typedef\" href=\"a00912.html#a98098cd229f60d2397d84a76fe654a31\">PatchArrayVector</a> <span class=\"keyword\">const</span> &amp;<a class=\"code hl_function\" href=\"a01305.html#aec45672f51f456fea341d644bcf16434\">GetVaryingPatchArrays</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01305.html#acd99a0391b3b04586b11051fd0f7ed10\">_varyingPatchArrays</a>; }</div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01305.html#a2ad5c87b20355961bc623d1c1ece01f8\">   66</a></span>    id&lt;MTLBuffer&gt; <a class=\"code hl_function\" href=\"a01305.html#a2ad5c87b20355961bc623d1c1ece01f8\">GetVaryingPatchIndexBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01305.html#ab65dac5d88eb7b4e1ccc2003f352e802\">_varyingPatchIndexBuffer</a>; }</div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span>    SparseSelector(Refinement&amp; refine) : _refine(&amp;refine), _selected(false) { }</div>\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span>    ~SparseSelector() { }</div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span> </div>\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>    <span class=\"keywordtype\">void</span>        setRefinement(Refinement&amp; refine) { _refine = &amp;refine; }</div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span>    Refinement&amp; getRefinement()<span class=\"keyword\"> const             </span>{ <span class=\"keywordflow\">return</span> *_refine; }</div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span> </div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span>    <span class=\"keywordtype\">bool</span> isSelectionEmpty()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> !_selected; }</div>\n <div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span> </div>\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01305.html#aa9be824a572029f3ec1e0c0d6cfecd77\">   68</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01305.html#aa9be824a572029f3ec1e0c0d6cfecd77\">GetNumFVarChannels</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (<span class=\"keywordtype\">int</span>)<a class=\"code hl_variable\" href=\"a01305.html#abce41960eb6bedc82cbf0cb711ea66da\">_fvarPatchArrays</a>.size(); }</div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01305.html#ab4ae92f2c242d25fa0480d0307e0d9e5\">   69</a></span>    <a class=\"code hl_typedef\" href=\"a00912.html#a98098cd229f60d2397d84a76fe654a31\">PatchArrayVector</a> <span class=\"keyword\">const</span> &amp;<a class=\"code hl_function\" href=\"a01305.html#ab4ae92f2c242d25fa0480d0307e0d9e5\">GetFVarPatchArrays</a>(<span class=\"keywordtype\">int</span> fvarChannel = 0)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01305.html#abce41960eb6bedc82cbf0cb711ea66da\">_fvarPatchArrays</a>[fvarChannel]; }</div>\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01305.html#ae4e03248b9615425f7719fde5890796c\">   70</a></span>    id&lt;MTLBuffer&gt; <a class=\"code hl_function\" href=\"a01305.html#ae4e03248b9615425f7719fde5890796c\">GetFVarPatchIndexBuffer</a>(<span class=\"keywordtype\">int</span> fvarChannel = 0)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01305.html#a39ae7f640465cdd116c1f87b81308fb5\">_fvarIndexBuffers</a>[fvarChannel]; }</div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01305.html#a3d306565eb0af09fa64cabc6d72c6755\">   71</a></span>    id&lt;MTLBuffer&gt; <a class=\"code hl_function\" href=\"a01305.html#a3d306565eb0af09fa64cabc6d72c6755\">GetFVarPatchParamBuffer</a>(<span class=\"keywordtype\">int</span> fvarChannel = 0)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01305.html#abb2abbc1ce950284fa16f51583d0ab92\">_fvarParamBuffers</a>[fvarChannel]; }</div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span> </div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span><span class=\"keyword\">protected</span>:</div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01305.html#a2246e8e016510f81c7ac9ead81d7c6eb\">   74</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01305.html#a2246e8e016510f81c7ac9ead81d7c6eb\">allocate</a>(<a class=\"code hl_class\" href=\"a00993.html\">Far::PatchTable</a> <span class=\"keyword\">const</span> *farPatchTable, <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context);</div>\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span>    <span class=\"comment\">//  Methods for selecting (and marking) components for refinement.  All component indices</span></div>\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span>    <span class=\"comment\">//  refer to components in the parent:</span></div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>    <span class=\"keywordtype\">void</span> selectVertex(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> pVertex);</div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span>    <span class=\"keywordtype\">void</span> selectEdge(  <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> pEdge);</div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span>    <span class=\"keywordtype\">void</span> selectFace(  <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> pFace);</div>\n <div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span> </div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01305.html#a5dfb6b58580f2dec58e9b5bfdb4ed9f1\">   76</a></span>    <a class=\"code hl_typedef\" href=\"a00912.html#a98098cd229f60d2397d84a76fe654a31\">PatchArrayVector</a> <a class=\"code hl_variable\" href=\"a01305.html#a5dfb6b58580f2dec58e9b5bfdb4ed9f1\">_patchArrays</a>;</div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span> </div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01305.html#af3b671a26ce6aaead2c7a2633b7cd268\">   78</a></span>    id&lt;MTLBuffer&gt; <a class=\"code hl_variable\" href=\"a01305.html#af3b671a26ce6aaead2c7a2633b7cd268\">_indexBuffer</a>;</div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01305.html#ac8b76e9d03149033d838a528d667e193\">   79</a></span>    id&lt;MTLBuffer&gt; <a class=\"code hl_variable\" href=\"a01305.html#ac8b76e9d03149033d838a528d667e193\">_patchParamBuffer</a>;</div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span> </div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01305.html#acd99a0391b3b04586b11051fd0f7ed10\">   81</a></span>    <a class=\"code hl_typedef\" href=\"a00912.html#a98098cd229f60d2397d84a76fe654a31\">PatchArrayVector</a> <a class=\"code hl_variable\" href=\"a01305.html#acd99a0391b3b04586b11051fd0f7ed10\">_varyingPatchArrays</a>;</div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span>    SparseSelector() : _refine(0), _selected(false) { }</div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span> </div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>    <span class=\"keywordtype\">bool</span> wasVertexSelected(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> pVertex)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _refine-&gt;getParentVertexSparseTag(pVertex)._selected; }</div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span>    <span class=\"keywordtype\">bool</span> wasEdgeSelected(  <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> pEdge)<span class=\"keyword\"> const   </span>{ <span class=\"keywordflow\">return</span> _refine-&gt;getParentEdgeSparseTag(pEdge)._selected; }</div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>    <span class=\"keywordtype\">bool</span> wasFaceSelected(  <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> pFace)<span class=\"keyword\"> const   </span>{ <span class=\"keywordflow\">return</span> _refine-&gt;getParentFaceSparseTag(pFace)._selected; }</div>\n <div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span> </div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01305.html#ab65dac5d88eb7b4e1ccc2003f352e802\">   83</a></span>    id&lt;MTLBuffer&gt; <a class=\"code hl_variable\" href=\"a01305.html#ab65dac5d88eb7b4e1ccc2003f352e802\">_varyingPatchIndexBuffer</a>;</div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span> </div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01305.html#abce41960eb6bedc82cbf0cb711ea66da\">   85</a></span>    std::vector&lt;PatchArrayVector&gt; <a class=\"code hl_variable\" href=\"a01305.html#abce41960eb6bedc82cbf0cb711ea66da\">_fvarPatchArrays</a>;</div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01305.html#a39ae7f640465cdd116c1f87b81308fb5\">   86</a></span>    std::vector&lt;id&lt;MTLBuffer&gt;&gt; <a class=\"code hl_variable\" href=\"a01305.html#a39ae7f640465cdd116c1f87b81308fb5\">_fvarIndexBuffers</a>;</div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01305.html#abb2abbc1ce950284fa16f51583d0ab92\">   87</a></span>    std::vector&lt;id&lt;MTLBuffer&gt;&gt; <a class=\"code hl_variable\" href=\"a01305.html#abb2abbc1ce950284fa16f51583d0ab92\">_fvarParamBuffers</a>;</div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span> </div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>} <span class=\"comment\">// end namespace Osd</span></div>\n-<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span> </div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>} <span class=\"comment\">//end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span> </div>\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span>} <span class=\"comment\">//end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>    <span class=\"keywordtype\">void</span> markVertexSelected(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> pVertex)<span class=\"keyword\"> const </span>{ _refine-&gt;getParentVertexSparseTag(pVertex)._selected = <span class=\"keyword\">true</span>; }</div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span>    <span class=\"keywordtype\">void</span> markEdgeSelected(  <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> pEdge)<span class=\"keyword\"> const   </span>{ _refine-&gt;getParentEdgeSparseTag(pEdge)._selected = <span class=\"keyword\">true</span>; }</div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>    <span class=\"keywordtype\">void</span> markFaceSelected(  <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> pFace)<span class=\"keyword\"> const   </span>{ _refine-&gt;getParentFaceSparseTag(pFace)._selected = <span class=\"keyword\">true</span>; }</div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span> </div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>    <span class=\"keywordtype\">void</span> initializeSelection();</div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span> </div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>    Refinement* _refine;</div>\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>    <span class=\"keywordtype\">bool</span>        _selected;</div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>};</div>\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span> </div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>} <span class=\"comment\">// end namespace internal</span></div>\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span>} <span class=\"comment\">// end namespace Vtr</span></div>\n <div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span> </div>\n-<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">//end OPENSUBDIV3_OSD_MTL_PATCH_TABLE_H</span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa00912_html_a98098cd229f60d2397d84a76fe654a31\"><div class=\"ttname\"><a href=\"a00912.html#a98098cd229f60d2397d84a76fe654a31\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchArrayVector</a></div><div class=\"ttdeci\">std::vector&lt; PatchArray &gt; PatchArrayVector</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00132\">types.h:132</a></div></div>\n-<div class=\"ttc\" id=\"aa00993_html\"><div class=\"ttname\"><a href=\"a00993.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable</a></div><div class=\"ttdoc\">Container for arrays of parametric patches.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00761_source.html#l00055\">patchTable.h:55</a></div></div>\n-<div class=\"ttc\" id=\"aa01285_html\"><div class=\"ttname\"><a href=\"a01285.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLContext</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00824_source.html#l00040\">mtlCommon.h:40</a></div></div>\n-<div class=\"ttc\" id=\"aa01305_html\"><div class=\"ttname\"><a href=\"a01305.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00809_source.html#l00046\">mtlPatchTable.h:46</a></div></div>\n-<div class=\"ttc\" id=\"aa01305_html_a18e3d09b0c7b7552f8e419e36788166a\"><div class=\"ttname\"><a href=\"a01305.html#a18e3d09b0c7b7552f8e419e36788166a\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::GetPatchArrays</a></div><div class=\"ttdeci\">PatchArrayVector const &amp; GetPatchArrays() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00809_source.html#l00061\">mtlPatchTable.h:61</a></div></div>\n-<div class=\"ttc\" id=\"aa01305_html_a2246e8e016510f81c7ac9ead81d7c6eb\"><div class=\"ttname\"><a href=\"a01305.html#a2246e8e016510f81c7ac9ead81d7c6eb\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::allocate</a></div><div class=\"ttdeci\">bool allocate(Far::PatchTable const *farPatchTable, MTLContext *context)</div></div>\n-<div class=\"ttc\" id=\"aa01305_html_a24c34d2b403d22f2d3bcfdf6f5005ee4\"><div class=\"ttname\"><a href=\"a01305.html#a24c34d2b403d22f2d3bcfdf6f5005ee4\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::Create</a></div><div class=\"ttdeci\">static MTLPatchTable * Create(Far::PatchTable const *farPatchTable, MTLContext *context)</div></div>\n-<div class=\"ttc\" id=\"aa01305_html_a2ad5c87b20355961bc623d1c1ece01f8\"><div class=\"ttname\"><a href=\"a01305.html#a2ad5c87b20355961bc623d1c1ece01f8\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::GetVaryingPatchIndexBuffer</a></div><div class=\"ttdeci\">id&lt; MTLBuffer &gt; GetVaryingPatchIndexBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00809_source.html#l00066\">mtlPatchTable.h:66</a></div></div>\n-<div class=\"ttc\" id=\"aa01305_html_a39ae7f640465cdd116c1f87b81308fb5\"><div class=\"ttname\"><a href=\"a01305.html#a39ae7f640465cdd116c1f87b81308fb5\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::_fvarIndexBuffers</a></div><div class=\"ttdeci\">std::vector&lt; id&lt; MTLBuffer &gt; &gt; _fvarIndexBuffers</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00809_source.html#l00086\">mtlPatchTable.h:86</a></div></div>\n-<div class=\"ttc\" id=\"aa01305_html_a3d306565eb0af09fa64cabc6d72c6755\"><div class=\"ttname\"><a href=\"a01305.html#a3d306565eb0af09fa64cabc6d72c6755\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::GetFVarPatchParamBuffer</a></div><div class=\"ttdeci\">id&lt; MTLBuffer &gt; GetFVarPatchParamBuffer(int fvarChannel=0) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00809_source.html#l00071\">mtlPatchTable.h:71</a></div></div>\n-<div class=\"ttc\" id=\"aa01305_html_a3f197c2ae3862390d72e7443a2525187\"><div class=\"ttname\"><a href=\"a01305.html#a3f197c2ae3862390d72e7443a2525187\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::MTLPatchTable</a></div><div class=\"ttdeci\">MTLPatchTable()</div></div>\n-<div class=\"ttc\" id=\"aa01305_html_a445098a6db6b14888b3a8bac35967e52\"><div class=\"ttname\"><a href=\"a01305.html#a445098a6db6b14888b3a8bac35967e52\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::GetPatchParamBuffer</a></div><div class=\"ttdeci\">id&lt; MTLBuffer &gt; GetPatchParamBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00809_source.html#l00063\">mtlPatchTable.h:63</a></div></div>\n-<div class=\"ttc\" id=\"aa01305_html_a4c33a50d79c6e811fb78461ce00c6310\"><div class=\"ttname\"><a href=\"a01305.html#a4c33a50d79c6e811fb78461ce00c6310\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::GetPatchIndexBuffer</a></div><div class=\"ttdeci\">id&lt; MTLBuffer &gt; GetPatchIndexBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00809_source.html#l00062\">mtlPatchTable.h:62</a></div></div>\n-<div class=\"ttc\" id=\"aa01305_html_a5dfb6b58580f2dec58e9b5bfdb4ed9f1\"><div class=\"ttname\"><a href=\"a01305.html#a5dfb6b58580f2dec58e9b5bfdb4ed9f1\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::_patchArrays</a></div><div class=\"ttdeci\">PatchArrayVector _patchArrays</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00809_source.html#l00076\">mtlPatchTable.h:76</a></div></div>\n-<div class=\"ttc\" id=\"aa01305_html_aa00654dc321a5c8dc370a900b0f404da\"><div class=\"ttname\"><a href=\"a01305.html#aa00654dc321a5c8dc370a900b0f404da\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::VertexBufferBinding</a></div><div class=\"ttdeci\">id&lt; MTLBuffer &gt; VertexBufferBinding</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00809_source.html#l00048\">mtlPatchTable.h:48</a></div></div>\n-<div class=\"ttc\" id=\"aa01305_html_aa9be824a572029f3ec1e0c0d6cfecd77\"><div class=\"ttname\"><a href=\"a01305.html#aa9be824a572029f3ec1e0c0d6cfecd77\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::GetNumFVarChannels</a></div><div class=\"ttdeci\">int GetNumFVarChannels() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00809_source.html#l00068\">mtlPatchTable.h:68</a></div></div>\n-<div class=\"ttc\" id=\"aa01305_html_ab4ae92f2c242d25fa0480d0307e0d9e5\"><div class=\"ttname\"><a href=\"a01305.html#ab4ae92f2c242d25fa0480d0307e0d9e5\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::GetFVarPatchArrays</a></div><div class=\"ttdeci\">PatchArrayVector const &amp; GetFVarPatchArrays(int fvarChannel=0) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00809_source.html#l00069\">mtlPatchTable.h:69</a></div></div>\n-<div class=\"ttc\" id=\"aa01305_html_ab65dac5d88eb7b4e1ccc2003f352e802\"><div class=\"ttname\"><a href=\"a01305.html#ab65dac5d88eb7b4e1ccc2003f352e802\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::_varyingPatchIndexBuffer</a></div><div class=\"ttdeci\">id&lt; MTLBuffer &gt; _varyingPatchIndexBuffer</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00809_source.html#l00083\">mtlPatchTable.h:83</a></div></div>\n-<div class=\"ttc\" id=\"aa01305_html_abb2abbc1ce950284fa16f51583d0ab92\"><div class=\"ttname\"><a href=\"a01305.html#abb2abbc1ce950284fa16f51583d0ab92\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::_fvarParamBuffers</a></div><div class=\"ttdeci\">std::vector&lt; id&lt; MTLBuffer &gt; &gt; _fvarParamBuffers</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00809_source.html#l00087\">mtlPatchTable.h:87</a></div></div>\n-<div class=\"ttc\" id=\"aa01305_html_abce41960eb6bedc82cbf0cb711ea66da\"><div class=\"ttname\"><a href=\"a01305.html#abce41960eb6bedc82cbf0cb711ea66da\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::_fvarPatchArrays</a></div><div class=\"ttdeci\">std::vector&lt; PatchArrayVector &gt; _fvarPatchArrays</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00809_source.html#l00085\">mtlPatchTable.h:85</a></div></div>\n-<div class=\"ttc\" id=\"aa01305_html_ac8b76e9d03149033d838a528d667e193\"><div class=\"ttname\"><a href=\"a01305.html#ac8b76e9d03149033d838a528d667e193\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::_patchParamBuffer</a></div><div class=\"ttdeci\">id&lt; MTLBuffer &gt; _patchParamBuffer</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00809_source.html#l00079\">mtlPatchTable.h:79</a></div></div>\n-<div class=\"ttc\" id=\"aa01305_html_acd99a0391b3b04586b11051fd0f7ed10\"><div class=\"ttname\"><a href=\"a01305.html#acd99a0391b3b04586b11051fd0f7ed10\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::_varyingPatchArrays</a></div><div class=\"ttdeci\">PatchArrayVector _varyingPatchArrays</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00809_source.html#l00081\">mtlPatchTable.h:81</a></div></div>\n-<div class=\"ttc\" id=\"aa01305_html_ad54c4e07ca48004585448396b980f0d9\"><div class=\"ttname\"><a href=\"a01305.html#ad54c4e07ca48004585448396b980f0d9\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::Create</a></div><div class=\"ttdeci\">static MTLPatchTable * Create(Far::PatchTable const *farPatchTable, DEVICE_CONTEXT context)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00809_source.html#l00054\">mtlPatchTable.h:54</a></div></div>\n-<div class=\"ttc\" id=\"aa01305_html_ad608acc5d9ea38f82548f2e0e234cf4e\"><div class=\"ttname\"><a href=\"a01305.html#ad608acc5d9ea38f82548f2e0e234cf4e\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::~MTLPatchTable</a></div><div class=\"ttdeci\">~MTLPatchTable()</div></div>\n-<div class=\"ttc\" id=\"aa01305_html_ae4e03248b9615425f7719fde5890796c\"><div class=\"ttname\"><a href=\"a01305.html#ae4e03248b9615425f7719fde5890796c\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::GetFVarPatchIndexBuffer</a></div><div class=\"ttdeci\">id&lt; MTLBuffer &gt; GetFVarPatchIndexBuffer(int fvarChannel=0) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00809_source.html#l00070\">mtlPatchTable.h:70</a></div></div>\n-<div class=\"ttc\" id=\"aa01305_html_aec45672f51f456fea341d644bcf16434\"><div class=\"ttname\"><a href=\"a01305.html#aec45672f51f456fea341d644bcf16434\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::GetVaryingPatchArrays</a></div><div class=\"ttdeci\">PatchArrayVector const &amp; GetVaryingPatchArrays() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00809_source.html#l00065\">mtlPatchTable.h:65</a></div></div>\n-<div class=\"ttc\" id=\"aa01305_html_af3b671a26ce6aaead2c7a2633b7cd268\"><div class=\"ttname\"><a href=\"a01305.html#af3b671a26ce6aaead2c7a2633b7cd268\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::_indexBuffer</a></div><div class=\"ttdeci\">id&lt; MTLBuffer &gt; _indexBuffer</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00809_source.html#l00078\">mtlPatchTable.h:78</a></div></div>\n+<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span> </div>\n+<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_VTR_SPARSE_SELECTOR_H */</span><span class=\"preprocessor\"></span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa00909_html_a4a0e50e01fef3e431767a928c2631cab\"><div class=\"ttname\"><a href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::Index</a></div><div class=\"ttdeci\">int Index</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01495_source.html#l00054\">types.h:54</a></div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00809.html\">mtlPatchTable.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bd5473d7d5841d48919aaa9ad0cb1f9b.html\">vtr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00809.html\">sparseSelector.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-mtlPatchTable.h\n+sparseSelector.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2013 Pixar\n+2// Copyright 2014 DreamWorks Animation LLC.\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -23,171 +23,111 @@\n 17//\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n-24\n-25#ifndef OPENSUBDIV3_OSD_MTL_PATCH_TABLE_H\n-26#define OPENSUBDIV3_OSD_MTL_PATCH_TABLE_H\n-27\n-28#include \"../version.h\"\n-29#include \"../far/patchDescriptor.h\"\n-30#include \"../osd/nonCopyable.h\"\n-31#include \"../osd/types.h\"\n-32#include \"../osd/mtlCommon.h\"\n+24#ifndef OPENSUBDIV3_VTR_SPARSE_SELECTOR_H\n+25#define OPENSUBDIV3_VTR_SPARSE_SELECTOR_H\n+26\n+27#include \"../version.h\"\n+28\n+29#include \"../vtr/types.h\"\n+30#include \"../vtr/refinement.h\"\n+31\n+32#include <vector>\n 33\n-34@protocol MTLDevice;\n-35@protocol MTLBuffer;\n+34namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+35namespace OPENSUBDIV_VERSION {\n 36\n-37namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-38namespace OPENSUBDIV_VERSION {\n+37namespace Vtr {\n+38namespace internal {\n 39\n-40namespace Far {\n-41 class PatchTable;\n-42};\n-43\n-44namespace Osd {\n-45\n-_\b4_\b6class _\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be : private NonCopyable<MTLPatchTable> {\n-47public:\n-_\b4_\b8 typedef id<MTLBuffer> _\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bB_\bi_\bn_\bd_\bi_\bn_\bg;\n-49\n-_\b5_\b0 _\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be();\n-_\b5_\b1 _\b~_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be();\n-52\n-53 template<typename DEVICE_CONTEXT>\n-_\b5_\b4 static _\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be *_\bC_\br_\be_\ba_\bt_\be(_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be const *farPatchTable,\n-DEVICE_CONTEXT context)\n-55 {\n-56 return _\bC_\br_\be_\ba_\bt_\be(farPatchTable, context);\n-57 }\n+40//\n+41// SparseSelector:\n+42// Class supporting \"selection\" of components in a Level for sparse\n+Refinement.\n+43// The term \"selection\" here implies interest in the limit for that\n+component, i.e.\n+44// the limit point for a selected vertex, the limit patch for a face, etc. So\n+this\n+45// class is responsible for ensuring that all neighboring components required\n+to\n+46// support the limit of those selected are included in the refinement.\n+47//\n+48// This class is associated with (and constructed given) a Refinement and its\n+role\n+49// is to initialize that Refinement instance for eventual sparse refinement.\n+So it\n+50// is a friend of and expected to modify the Refinement as part of the\n+selection.\n+51// Given its simplicity and scope it may be worth nesting it in Vtr::\n+Refinement.\n+52//\n+53// While all three component types -- vertices, edges and faces -- can be\n+selected,\n+54// only selection of faces is currently used and actively supported as part\n+of the\n+55// feature-adaptive refinement.\n+56//\n+57class SparseSelector {\n 58\n-_\b5_\b9 static _\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be *_\bC_\br_\be_\ba_\bt_\be(_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be const *farPatchTable,\n-_\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context);\n-60\n-_\b6_\b1 _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\bc_\bt_\bo_\br const &_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs() const { return _\b__\bp_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs; }\n-_\b6_\b2 id<MTLBuffer> _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br() const { return _\b__\bi_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br; }\n-_\b6_\b3 id<MTLBuffer> _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br() const { return _\b__\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br; }\n-64\n-_\b6_\b5 _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\bc_\bt_\bo_\br const &_\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs() const { return\n-_\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs; }\n-_\b6_\b6 id<MTLBuffer> _\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br() const { return\n-_\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br; }\n+59public:\n+60 SparseSelector(Refinement& refine) : _refine(&refine), _selected(false) { }\n+61 ~SparseSelector() { }\n+62\n+63 void setRefinement(Refinement& refine) { _refine = &refine; }\n+64 Refinement& getRefinement() const { return *_refine; }\n+65\n+66 bool isSelectionEmpty() const { return !_selected; }\n 67\n-_\b6_\b8 int _\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs() const { return (int)_\b__\bf_\bv_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs.size(); }\n-_\b6_\b9 _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\bc_\bt_\bo_\br const &_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs(int fvarChannel = 0) const\n-{ return _\b__\bf_\bv_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs[fvarChannel]; }\n-_\b7_\b0 id<MTLBuffer> _\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br(int fvarChannel = 0) const { return\n-_\b__\bf_\bv_\ba_\br_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bs[fvarChannel]; }\n-_\b7_\b1 id<MTLBuffer> _\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br(int fvarChannel = 0) const { return\n-_\b__\bf_\bv_\ba_\br_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br_\bs[fvarChannel]; }\n-72\n-73protected:\n-_\b7_\b4 bool _\ba_\bl_\bl_\bo_\bc_\ba_\bt_\be(_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be const *farPatchTable, _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context);\n+68 //\n+69 // Methods for selecting (and marking) components for refinement. All\n+component indices\n+70 // refer to components in the parent:\n+71 //\n+72 void selectVertex(_\bI_\bn_\bd_\be_\bx pVertex);\n+73 void selectEdge( _\bI_\bn_\bd_\be_\bx pEdge);\n+74 void selectFace( _\bI_\bn_\bd_\be_\bx pFace);\n 75\n-_\b7_\b6 _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\bc_\bt_\bo_\br _\b__\bp_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs;\n-77\n-_\b7_\b8 id<MTLBuffer> _\b__\bi_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br;\n-_\b7_\b9 id<MTLBuffer> _\b__\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br;\n-80\n-_\b8_\b1 _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\bc_\bt_\bo_\br _\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs;\n+76private:\n+77 SparseSelector() : _refine(0), _selected(false) { }\n+78\n+79 bool wasVertexSelected(_\bI_\bn_\bd_\be_\bx pVertex) const { return _refine-\n+>getParentVertexSparseTag(pVertex)._selected; }\n+80 bool wasEdgeSelected( _\bI_\bn_\bd_\be_\bx pEdge) const { return _refine-\n+>getParentEdgeSparseTag(pEdge)._selected; }\n+81 bool wasFaceSelected( _\bI_\bn_\bd_\be_\bx pFace) const { return _refine-\n+>getParentFaceSparseTag(pFace)._selected; }\n 82\n-_\b8_\b3 id<MTLBuffer> _\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br;\n-84\n-_\b8_\b5 std::vector<PatchArrayVector> _\b__\bf_\bv_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs;\n-_\b8_\b6 std::vector<id<MTLBuffer>> _\b__\bf_\bv_\ba_\br_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bs;\n-_\b8_\b7 std::vector<id<MTLBuffer>> _\b__\bf_\bv_\ba_\br_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br_\bs;\n-88};\n-89\n-90} // end namespace Osd\n-91\n-92} //end namespace OPENSUBDIV_VERSION\n-93using namespace OPENSUBDIV_VERSION;\n-94\n-95} //end namespace OpenSubdiv\n+83 void markVertexSelected(_\bI_\bn_\bd_\be_\bx pVertex) const { _refine-\n+>getParentVertexSparseTag(pVertex)._selected = true; }\n+84 void markEdgeSelected( _\bI_\bn_\bd_\be_\bx pEdge) const { _refine->getParentEdgeSparseTag\n+(pEdge)._selected = true; }\n+85 void markFaceSelected( _\bI_\bn_\bd_\be_\bx pFace) const { _refine->getParentFaceSparseTag\n+(pFace)._selected = true; }\n+86\n+87 void initializeSelection();\n+88\n+89private:\n+90 Refinement* _refine;\n+91 bool _selected;\n+92};\n+93\n+94} // end namespace internal\n+95} // end namespace Vtr\n 96\n-97#endif //end OPENSUBDIV3_OSD_MTL_PATCH_TABLE_H\n+97} // end namespace OPENSUBDIV_VERSION\n+98using namespace OPENSUBDIV_VERSION;\n+99} // end namespace OpenSubdiv\n+100\n+101#endif /* OPENSUBDIV3_VTR_SPARSE_SELECTOR_H */\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\bc_\bt_\bo_\br\n-std::vector< PatchArray > PatchArrayVector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b1_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n-Container for arrays of parametric patches.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bm_\bo_\bn_\b._\bh_\b:_\b4_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b4_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs\n-PatchArrayVector const & GetPatchArrays() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\ba_\bl_\bl_\bo_\bc_\ba_\bt_\be\n-bool allocate(Far::PatchTable const *farPatchTable, MTLContext *context)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static MTLPatchTable * Create(Far::PatchTable const *farPatchTable, MTLContext\n-*context)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-id< MTLBuffer > GetVaryingPatchIndexBuffer() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bf_\bv_\ba_\br_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bs\n-std::vector< id< MTLBuffer > > _fvarIndexBuffers\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b8_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br\n-id< MTLBuffer > GetFVarPatchParamBuffer(int fvarChannel=0) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n-MTLPatchTable()\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br\n-id< MTLBuffer > GetPatchParamBuffer() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-id< MTLBuffer > GetPatchIndexBuffer() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bp_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs\n-PatchArrayVector _patchArrays\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bB_\bi_\bn_\bd_\bi_\bn_\bg\n-id< MTLBuffer > VertexBufferBinding\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b4_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs\n-int GetNumFVarChannels() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs\n-PatchArrayVector const & GetFVarPatchArrays(int fvarChannel=0) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-id< MTLBuffer > _varyingPatchIndexBuffer\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b8_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bf_\bv_\ba_\br_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br_\bs\n-std::vector< id< MTLBuffer > > _fvarParamBuffers\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b8_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bf_\bv_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs\n-std::vector< PatchArrayVector > _fvarPatchArrays\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b8_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br\n-id< MTLBuffer > _patchParamBuffer\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs\n-PatchArrayVector _varyingPatchArrays\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b8_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static MTLPatchTable * Create(Far::PatchTable const *farPatchTable,\n-DEVICE_CONTEXT context)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b~_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n-~MTLPatchTable()\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-id< MTLBuffer > GetFVarPatchIndexBuffer(int fvarChannel=0) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs\n-PatchArrayVector const & GetVaryingPatchArrays() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bi_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-id< MTLBuffer > _indexBuffer\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx\n+int Index\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b5_\b4\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bm_\bt_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh\n+    * _\bv_\bt_\br\n+    * _\bs_\bp_\ba_\br_\bs_\be_\bS_\be_\bl_\be_\bc_\bt_\bo_\br_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00812.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00812.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/mtlMesh.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/vtr/componentInterfaces.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -88,43 +88,40 @@\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n-<a href=\"#namespaces\">Namespaces</a> &#124;\n-<a href=\"#typedef-members\">Typedefs</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">mtlMesh.h File Reference</div></div>\n+<a href=\"#namespaces\">Namespaces</a>  </div>\n+  <div class=\"headertitle\"><div class=\"title\">componentInterfaces.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00872_source.html\">../osd/mesh.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00809_source.html\">../osd/mtlPatchTable.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a01492_source.html\">../sdc/types.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00869_source.html\">../sdc/crease.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a01495_source.html\">../vtr/types.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00800_source.html\">../vtr/stackBuffer.h</a>&quot;</code><br />\n+<code>#include &lt;vector&gt;</code><br />\n </div>\n <p><a href=\"a00812_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n+<tr class=\"memitem:a00909\" id=\"r_a00909\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00909.html\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-</table><table class=\"memberdecls\">\n-<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"typedef-members\" name=\"typedef-members\"></a>\n-Typedefs</h2></td></tr>\n-<tr class=\"memitem:aa41e5b43fe46eeb0f97ff6ebdb1935aa\" id=\"r_aa41e5b43fe46eeb0f97ff6ebdb1935aa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef <a class=\"el\" href=\"a01269.html\">MeshInterface</a>&lt; <a class=\"el\" href=\"a01305.html\">MTLPatchTable</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html#aa41e5b43fe46eeb0f97ff6ebdb1935aa\">MTLMeshInterface</a></td></tr>\n-<tr class=\"separator:aa41e5b43fe46eeb0f97ff6ebdb1935aa\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00812.html\">mtlMesh.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bd5473d7d5841d48919aaa9ad0cb1f9b.html\">vtr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00812.html\">componentInterfaces.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,24 +1,24 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bT_\by_\bp_\be_\bd_\be_\bf_\bs\n-mtlMesh.h File Reference\n+_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+componentInterfaces.h File Reference\n #include \"../version.h\"\n-#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bm_\be_\bs_\bh_\b._\bh\"\n-#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bm_\bt_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh\"\n+#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n+#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bc_\br_\be_\ba_\bs_\be_\b._\bh\"\n+#include \"_\b._\b._\b/_\bv_\bt_\br_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n+#include \"_\b._\b._\b/_\bv_\bt_\br_\b/_\bs_\bt_\ba_\bc_\bk_\bB_\bu_\bf_\bf_\be_\br_\b._\bh\"\n+#include <vector>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n-\u00a0\n-T\bTy\byp\bpe\bed\bde\bef\bfs\bs\n-typedef _\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be< _\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be >\u00a0 _\bM_\bT_\bL_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bm_\bt_\bl_\bM_\be_\bs_\bh_\b._\bh\n+    * _\bv_\bt_\br\n+    * _\bc_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bs_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00812_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00812_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/mtlMesh.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/vtr/componentInterfaces.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">mtlMesh.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">componentInterfaces.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00812.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2013 Pixar</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2014 DreamWorks Animation LLC.</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -118,45 +118,155 @@\n <div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_MTL_MESH_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_MTL_MESH_H</span></div>\n-<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n-<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#include &quot;../osd/mesh.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../osd/mtlPatchTable.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span> </div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n+<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_VTR_COMPONENT_INTERFACES_H</span></div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#define OPENSUBDIV3_VTR_COMPONENT_INTERFACES_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span> </div>\n+<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span> </div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#include &quot;../sdc/types.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../sdc/crease.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../vtr/types.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &quot;../vtr/stackBuffer.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n <div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span> </div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"keyword\">namespace </span>Osd {</div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span> </div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html#aa41e5b43fe46eeb0f97ff6ebdb1935aa\">   38</a></span><span class=\"keyword\">typedef</span> <a class=\"code hl_class\" href=\"a01269.html\">MeshInterface&lt;MTLPatchTable&gt;</a> <a class=\"code hl_typedef\" href=\"a00912.html#aa41e5b43fe46eeb0f97ff6ebdb1935aa\">MTLMeshInterface</a>;</div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n <div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span> </div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span>} <span class=\"comment\">// end namespace Osd</span></div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span> </div>\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span> </div>\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span> </div>\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// OPENSUBDIV3_OSD_MTL_MESH_H</span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa00912_html_aa41e5b43fe46eeb0f97ff6ebdb1935aa\"><div class=\"ttname\"><a href=\"a00912.html#aa41e5b43fe46eeb0f97ff6ebdb1935aa\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLMeshInterface</a></div><div class=\"ttdeci\">MeshInterface&lt; MTLPatchTable &gt; MTLMeshInterface</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00812_source.html#l00038\">mtlMesh.h:38</a></div></div>\n-<div class=\"ttc\" id=\"aa01269_html\"><div class=\"ttname\"><a href=\"a01269.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshInterface</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00068\">mesh.h:68</a></div></div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"keyword\">namespace </span>Vtr {</div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"keyword\">namespace </span>internal {</div>\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span> </div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span><span class=\"comment\">//  Simple classes supporting the interfaces required of generic topological</span></div>\n+<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span><span class=\"comment\">//  types in the Scheme mask queries, e.g. &lt;typename FACE, VERTEX, etc.&gt;</span></div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span><span class=\"comment\">//  These are not used with Vtr but arguably belong with it as the details to</span></div>\n+<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span><span class=\"comment\">//  write these efficiently depends very much on intimate details of Vtr&#39;s</span></div>\n+<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span><span class=\"comment\">//  implementation, e.g. the use of tag bits, subdivision Rules, etc.</span></div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span> </div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span> </div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span><span class=\"comment\">//  For &lt;typename FACE&gt;, which provides information in the neighborhood of a face:</span></div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span><span class=\"keyword\">class </span>FaceInterface {</div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span>    FaceInterface() { }</div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span>    FaceInterface(<span class=\"keywordtype\">int</span> vertCount) : _vertCount(vertCount) { }</div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span>    ~FaceInterface() { }</div>\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span> </div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span><span class=\"keyword\">public</span>:  <span class=\"comment\">//  Generic interface expected of &lt;typename FACE&gt;:</span></div>\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>    <span class=\"keywordtype\">int</span> GetNumVertices()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _vertCount; }</div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span> </div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span>    <span class=\"keywordtype\">int</span> _vertCount;</div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span>};</div>\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span> </div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span> </div>\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span><span class=\"comment\">//  For &lt;typename EDGE&gt;, which provides information in the neighborhood of an edge:</span></div>\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span><span class=\"keyword\">class </span>EdgeInterface {</div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span>    EdgeInterface() { }</div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span>    EdgeInterface(Level <span class=\"keyword\">const</span>&amp; level) : _level(&amp;level) { }</div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span>    ~EdgeInterface() { }</div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span> </div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>    <span class=\"keywordtype\">void</span> SetIndex(<span class=\"keywordtype\">int</span> edgeIndex) { _eIndex = edgeIndex; }</div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span> </div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span><span class=\"keyword\">public</span>:  <span class=\"comment\">//  Generic interface expected of &lt;typename EDGE&gt;:</span></div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>    <span class=\"keywordtype\">int</span>   GetNumFaces()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _level-&gt;getEdgeFaces(_eIndex).size(); }</div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>    <span class=\"keywordtype\">float</span> GetSharpness()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _level-&gt;getEdgeSharpness(_eIndex); }</div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span> </div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>    <span class=\"keywordtype\">void</span> GetChildSharpnesses(Sdc::Crease <span class=\"keyword\">const</span>&amp;, <span class=\"keywordtype\">float</span> s[2])<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>        <span class=\"comment\">//  Need to use the Refinement here to identify the two child edges:</span></div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>        s[0] = s[1] = GetSharpness() - 1.0f;</div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>    }</div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span> </div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>    <span class=\"keywordtype\">void</span> GetNumVerticesPerFace(<span class=\"keywordtype\">int</span> vertsPerFace[])<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>        <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a> eFaces = _level-&gt;getEdgeFaces(_eIndex);</div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>        <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; eFaces.size(); ++i) {</div>\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span>            vertsPerFace[i] = _level-&gt;getFaceVertices(eFaces[i]).size();</div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>        }</div>\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span>    }</div>\n+<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span> </div>\n+<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span>    <span class=\"keyword\">const</span> Level* _level;</div>\n+<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span> </div>\n+<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span>    <span class=\"keywordtype\">int</span> _eIndex;</div>\n+<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span>};</div>\n+<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span> </div>\n+<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span> </div>\n+<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span><span class=\"comment\">//  For &lt;typename VERTEX&gt;, which provides information in the neighborhood of a vertex:</span></div>\n+<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span><span class=\"keyword\">class </span>VertexInterface {</div>\n+<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span>    VertexInterface() { }</div>\n+<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span>    VertexInterface(Level <span class=\"keyword\">const</span>&amp; parent, Level <span class=\"keyword\">const</span>&amp; child) : _parent(&amp;parent), _child(&amp;child) { }</div>\n+<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span>    ~VertexInterface() { }</div>\n+<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span> </div>\n+<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span>    <span class=\"keywordtype\">void</span> SetIndex(<span class=\"keywordtype\">int</span> parentIndex, <span class=\"keywordtype\">int</span> childIndex) {</div>\n+<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span>        _pIndex = parentIndex;</div>\n+<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span>        _cIndex = childIndex;</div>\n+<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\">  116</span>        _eCount = _parent-&gt;getVertexEdges(_pIndex).size();</div>\n+<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span>        _fCount = _parent-&gt;getVertexFaces(_pIndex).size();</div>\n+<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\">  118</span>    }</div>\n+<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span> </div>\n+<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span><span class=\"keyword\">public</span>:  <span class=\"comment\">//  Generic interface expected of &lt;typename VERT&gt;:</span></div>\n+<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\">  121</span>    <span class=\"keywordtype\">int</span> GetNumEdges()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _eCount; }</div>\n+<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span>    <span class=\"keywordtype\">int</span> GetNumFaces()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _fCount; }</div>\n+<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span> </div>\n+<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span>    <span class=\"keywordtype\">float</span>  GetSharpness()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _parent-&gt;getVertexSharpness(_pIndex); }</div>\n+<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span>    <span class=\"keywordtype\">float</span>* GetSharpnessPerEdge(<span class=\"keywordtype\">float</span> pSharpness[])<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span>        <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a> pEdges = _parent-&gt;getVertexEdges(_pIndex);</div>\n+<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span>        <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; _eCount; ++i) {</div>\n+<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span>            pSharpness[i] = _parent-&gt;getEdgeSharpness(pEdges[i]);</div>\n+<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span>        }</div>\n+<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span>        <span class=\"keywordflow\">return</span> pSharpness;</div>\n+<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\">  131</span>    }</div>\n+<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\">  132</span> </div>\n+<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\">  133</span>    <span class=\"keywordtype\">float</span>  GetChildSharpness(Sdc::Crease <span class=\"keyword\">const</span>&amp;)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _child-&gt;getVertexSharpness(_cIndex); }</div>\n+<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\">  134</span>    <span class=\"keywordtype\">float</span>* GetChildSharpnessPerEdge(Sdc::Crease <span class=\"keyword\">const</span>&amp; crease, <span class=\"keywordtype\">float</span> cSharpness[])<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\">  135</span>        internal::StackBuffer&lt;float,16&gt; pSharpness(_eCount);</div>\n+<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\">  136</span>        GetSharpnessPerEdge(pSharpness);</div>\n+<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\">  137</span>        crease.SubdivideEdgeSharpnessesAroundVertex(_eCount, pSharpness, cSharpness);</div>\n+<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\">  138</span>        <span class=\"keywordflow\">return</span> cSharpness;</div>\n+<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\">  139</span>    }</div>\n+<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\">  140</span> </div>\n+<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\">  141</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span>    <span class=\"keyword\">const</span> Level* _parent;</div>\n+<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\">  143</span>    <span class=\"keyword\">const</span> Level* _child;</div>\n+<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\">  144</span> </div>\n+<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\">  145</span>    <span class=\"keywordtype\">int</span> _pIndex;</div>\n+<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\">  146</span>    <span class=\"keywordtype\">int</span> _cIndex;</div>\n+<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\">  147</span>    <span class=\"keywordtype\">int</span> _eCount;</div>\n+<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\">  148</span>    <span class=\"keywordtype\">int</span> _fCount;</div>\n+<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\">  149</span>};</div>\n+<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\">  150</span> </div>\n+<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\">  151</span>} <span class=\"comment\">// end namespace internal</span></div>\n+<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\">  152</span>} <span class=\"comment\">// end namespace Vtr</span></div>\n+<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\">  153</span> </div>\n+<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\">  154</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\">  155</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\">  156</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\">  157</span> </div>\n+<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\">  158</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_VTR_COMPONENT_INTERFACES_H */</span><span class=\"preprocessor\"></span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa00909_html_a7c31dd7ef75734862d363b332be917dd\"><div class=\"ttname\"><a href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstIndexArray</a></div><div class=\"ttdeci\">ConstArray&lt; Index &gt; ConstIndexArray</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01495_source.html#l00080\">types.h:80</a></div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00812.html\">mtlMesh.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bd5473d7d5841d48919aaa9ad0cb1f9b.html\">vtr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00812.html\">componentInterfaces.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-mtlMesh.h\n+componentInterfaces.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2013 Pixar\n+2// Copyright 2014 DreamWorks Animation LLC.\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -23,42 +23,158 @@\n 17//\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n-24\n-25#ifndef OPENSUBDIV3_OSD_MTL_MESH_H\n-26#define OPENSUBDIV3_OSD_MTL_MESH_H\n-27\n-28#include \"../version.h\"\n-29#include \"../osd/mesh.h\"\n-30#include \"../osd/mtlPatchTable.h\"\n-31\n-32\n-33namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-34namespace OPENSUBDIV_VERSION {\n+24#ifndef OPENSUBDIV3_VTR_COMPONENT_INTERFACES_H\n+25#define OPENSUBDIV3_VTR_COMPONENT_INTERFACES_H\n+26\n+27#include \"../version.h\"\n+28\n+29#include \"../sdc/types.h\"\n+30#include \"../sdc/crease.h\"\n+31#include \"../vtr/types.h\"\n+32#include \"../vtr/stackBuffer.h\"\n+33\n+34#include <vector>\n 35\n-36namespace Osd {\n-37\n-_\b3_\b8typedef _\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b> _\bM_\bT_\bL_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be;\n+36\n+37namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+38namespace OPENSUBDIV_VERSION {\n 39\n-40} // end namespace Osd\n-41\n-42} // end namespace OPENSUBDIV_VERSION\n-43using namespace OPENSUBDIV_VERSION;\n-44\n-45} // end namespace OpenSubdiv\n-46\n-47#endif // OPENSUBDIV3_OSD_MTL_MESH_H\n+40namespace Vtr {\n+41namespace internal {\n+42\n+43//\n+44// Simple classes supporting the interfaces required of generic topological\n+45// types in the Scheme mask queries, e.g. <typename FACE, VERTEX, etc.>\n+46//\n+47// These are not used with Vtr but arguably belong with it as the details to\n+48// write these efficiently depends very much on intimate details of Vtr's\n+49// implementation, e.g. the use of tag bits, subdivision Rules, etc.\n+50//\n+51\n+52\n+53//\n+54// For <typename FACE>, which provides information in the neighborhood of a\n+face:\n+55//\n+56class FaceInterface {\n+57public:\n+58 FaceInterface() { }\n+59 FaceInterface(int vertCount) : _vertCount(vertCount) { }\n+60 ~FaceInterface() { }\n+61\n+62public: // Generic interface expected of <typename FACE>:\n+63 int GetNumVertices() const { return _vertCount; }\n+64\n+65private:\n+66 int _vertCount;\n+67};\n+68\n+69\n+70//\n+71// For <typename EDGE>, which provides information in the neighborhood of an\n+edge:\n+72//\n+73class EdgeInterface {\n+74public:\n+75 EdgeInterface() { }\n+76 EdgeInterface(Level const& level) : _level(&level) { }\n+77 ~EdgeInterface() { }\n+78\n+79 void SetIndex(int edgeIndex) { _eIndex = edgeIndex; }\n+80\n+81public: // Generic interface expected of <typename EDGE>:\n+82 int GetNumFaces() const { return _level->getEdgeFaces(_eIndex).size(); }\n+83 float GetSharpness() const { return _level->getEdgeSharpness(_eIndex); }\n+84\n+85 void GetChildSharpnesses(Sdc::Crease const&, float s[2]) const {\n+86 // Need to use the Refinement here to identify the two child edges:\n+87 s[0] = s[1] = GetSharpness() - 1.0f;\n+88 }\n+89\n+90 void GetNumVerticesPerFace(int vertsPerFace[]) const {\n+91 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by eFaces = _level->getEdgeFaces(_eIndex);\n+92 for (int i = 0; i < eFaces.size(); ++i) {\n+93 vertsPerFace[i] = _level->getFaceVertices(eFaces[i]).size();\n+94 }\n+95 }\n+96\n+97private:\n+98 const Level* _level;\n+99\n+100 int _eIndex;\n+101};\n+102\n+103\n+104//\n+105// For <typename VERTEX>, which provides information in the neighborhood of\n+a vertex:\n+106//\n+107class VertexInterface {\n+108public:\n+109 VertexInterface() { }\n+110 VertexInterface(Level const& parent, Level const& child) : _parent\n+(&parent), _child(&child) { }\n+111 ~VertexInterface() { }\n+112\n+113 void SetIndex(int parentIndex, int childIndex) {\n+114 _pIndex = parentIndex;\n+115 _cIndex = childIndex;\n+116 _eCount = _parent->getVertexEdges(_pIndex).size();\n+117 _fCount = _parent->getVertexFaces(_pIndex).size();\n+118 }\n+119\n+120public: // Generic interface expected of <typename VERT>:\n+121 int GetNumEdges() const { return _eCount; }\n+122 int GetNumFaces() const { return _fCount; }\n+123\n+124 float GetSharpness() const { return _parent->getVertexSharpness(_pIndex); }\n+125 float* GetSharpnessPerEdge(float pSharpness[]) const {\n+126 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by pEdges = _parent->getVertexEdges(_pIndex);\n+127 for (int i = 0; i < _eCount; ++i) {\n+128 pSharpness[i] = _parent->getEdgeSharpness(pEdges[i]);\n+129 }\n+130 return pSharpness;\n+131 }\n+132\n+133 float GetChildSharpness(Sdc::Crease const&) const { return _child-\n+>getVertexSharpness(_cIndex); }\n+134 float* GetChildSharpnessPerEdge(Sdc::Crease const& crease, float cSharpness\n+[]) const {\n+135 internal::StackBuffer<float,16> pSharpness(_eCount);\n+136 GetSharpnessPerEdge(pSharpness);\n+137 crease.SubdivideEdgeSharpnessesAroundVertex(_eCount, pSharpness,\n+cSharpness);\n+138 return cSharpness;\n+139 }\n+140\n+141private:\n+142 const Level* _parent;\n+143 const Level* _child;\n+144\n+145 int _pIndex;\n+146 int _cIndex;\n+147 int _eCount;\n+148 int _fCount;\n+149};\n+150\n+151} // end namespace internal\n+152} // end namespace Vtr\n+153\n+154} // end namespace OPENSUBDIV_VERSION\n+155using namespace OPENSUBDIV_VERSION;\n+156} // end namespace OpenSubdiv\n+157\n+158#endif /* OPENSUBDIV3_VTR_COMPONENT_INTERFACES_H */\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-MeshInterface< MTLPatchTable > MTLMeshInterface\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bM_\be_\bs_\bh_\b._\bh_\b:_\b3_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b6_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n+ConstArray< Index > ConstIndexArray\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b8_\b0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bm_\bt_\bl_\bM_\be_\bs_\bh_\b._\bh\n+    * _\bv_\bt_\br\n+    * _\bc_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bs_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00815.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00815.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/d3d11PatchTable.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/vtr/level.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -88,47 +88,43 @@\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n-<a href=\"#nested-classes\">Classes</a> &#124;\n <a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">d3d11PatchTable.h File Reference</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">level.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a01492_source.html\">../sdc/types.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00869_source.html\">../sdc/crease.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00860_source.html\">../sdc/options.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a01495_source.html\">../vtr/types.h</a>&quot;</code><br />\n+<code>#include &lt;algorithm&gt;</code><br />\n <code>#include &lt;vector&gt;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00773_source.html\">../far/patchDescriptor.h</a>&quot;</code><br />\n-<code>#include &quot;../osd/nonCopyable.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a01489_source.html\">../osd/types.h</a>&quot;</code><br />\n+<code>#include &lt;cassert&gt;</code><br />\n+<code>#include &lt;cstring&gt;</code><br />\n </div>\n <p><a href=\"a00815_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n-<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n-Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01209.html\">D3D11PatchTable</a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-</table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far</a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n+<tr class=\"memitem:a00909\" id=\"r_a00909\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00909.html\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00815.html\">d3d11PatchTable.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bd5473d7d5841d48919aaa9ad0cb1f9b.html\">vtr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00815.html\">level.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,28 +1,27 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-d3d11PatchTable.h File Reference\n+_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+level.h File Reference\n #include \"../version.h\"\n+#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n+#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bc_\br_\be_\ba_\bs_\be_\b._\bh\"\n+#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh\"\n+#include \"_\b._\b._\b/_\bv_\bt_\br_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n+#include <algorithm>\n #include <vector>\n-#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh\"\n-#include \"../osd/nonCopyable.h\"\n-#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n+#include <cassert>\n+#include <cstring>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n-C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\b3_\bD_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n-\u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br\n-\u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bd_\b3_\bd_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh\n+    * _\bv_\bt_\br\n+    * _\bl_\be_\bv_\be_\bl_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00815_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00815_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/d3d11PatchTable.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/vtr/level.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">d3d11PatchTable.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">level.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00815.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2015 Pixar</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2014 DreamWorks Animation LLC.</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -118,119 +118,882 @@\n <div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_GL_PATCH_TABLE_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_GL_PATCH_TABLE_H</span></div>\n-<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n-<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../far/patchDescriptor.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &quot;../osd/nonCopyable.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"preprocessor\">#include &quot;../osd/types.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span> </div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">struct </span>ID3D11Buffer;</div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"keyword\">struct </span>ID3D11ShaderResourceView;</div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">struct </span>ID3D11Device;</div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"keyword\">struct </span>ID3D11DeviceContext;</div>\n+<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_VTR_LEVEL_H</span></div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#define OPENSUBDIV3_VTR_LEVEL_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span> </div>\n+<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span> </div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#include &quot;../sdc/types.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../sdc/crease.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../sdc/options.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &quot;../vtr/types.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"preprocessor\">#include &lt;algorithm&gt;</span></div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"preprocessor\">#include &lt;cassert&gt;</span></div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"preprocessor\">#include &lt;cstring&gt;</span></div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span> </div>\n <div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span> </div>\n <div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n <div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n <div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span> </div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"keyword\">namespace </span>Far{</div>\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span>    <span class=\"keyword\">class </span>PatchTable;</div>\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span>};</div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span> </div>\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span><span class=\"keyword\">namespace </span>Osd {</div>\n-<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00049\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01209.html\">   49</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01209.html\">D3D11PatchTable</a> : <span class=\"keyword\">private</span> NonCopyable&lt;D3D11PatchTable&gt; {</div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01209.html#a2d85a5ed6ddcef5023c9ef2e6fdd38a5\">   51</a></span>    <span class=\"keyword\">typedef</span> ID3D11Buffer * <a class=\"code hl_typedef\" href=\"a01209.html#a2d85a5ed6ddcef5023c9ef2e6fdd38a5\">VertexBufferBinding</a>;</div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span> </div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01209.html#ac81ed5f09e3d3a2aae5a01802b343a6d\">   53</a></span>    <a class=\"code hl_function\" href=\"a01209.html#ac81ed5f09e3d3a2aae5a01802b343a6d\">D3D11PatchTable</a>();</div>\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01209.html#a39d5e5c13d54a0f5774047ffa2bb17e4\">   54</a></span>    <a class=\"code hl_function\" href=\"a01209.html#a39d5e5c13d54a0f5774047ffa2bb17e4\">~D3D11PatchTable</a>();</div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span> </div>\n-<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span>    <span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00057\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01209.html#a0d96d4b3eaf2b3e453cbcb031340ebca\">   57</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01209.html\">D3D11PatchTable</a> *<a class=\"code hl_function\" href=\"a01209.html#a0d96d4b3eaf2b3e453cbcb031340ebca\">Create</a>(<a class=\"code hl_class\" href=\"a00993.html\">Far::PatchTable</a> <span class=\"keyword\">const</span> *farPatchTable,</div>\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span>                                   DEVICE_CONTEXT context) {</div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01209.html#a0d96d4b3eaf2b3e453cbcb031340ebca\">Create</a>(farPatchTable, context-&gt;GetDeviceContext());</div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span> </div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01209.html#a8d071db2033c568b98a8aed737e563e9\">   62</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01209.html\">D3D11PatchTable</a> *<a class=\"code hl_function\" href=\"a01209.html#a8d071db2033c568b98a8aed737e563e9\">Create</a>(<a class=\"code hl_class\" href=\"a00993.html\">Far::PatchTable</a> <span class=\"keyword\">const</span> *farPatchTable,</div>\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>                                   ID3D11DeviceContext *deviceContext);</div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00065\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01209.html#a18e3d09b0c7b7552f8e419e36788166a\">   65</a></span>    <a class=\"code hl_typedef\" href=\"a00912.html#a98098cd229f60d2397d84a76fe654a31\">PatchArrayVector</a> <span class=\"keyword\">const</span> &amp;<a class=\"code hl_function\" href=\"a01209.html#a18e3d09b0c7b7552f8e419e36788166a\">GetPatchArrays</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01209.html#a5dfb6b58580f2dec58e9b5bfdb4ed9f1\">_patchArrays</a>;</div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00070\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01209.html#a45505c8c99abe0baf8b56981fa0a31e1\">   70</a></span>    ID3D11Buffer* <a class=\"code hl_function\" href=\"a01209.html#a45505c8c99abe0baf8b56981fa0a31e1\">GetPatchIndexBuffer</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01209.html#a70f9e642d07efb73b8e7dc7a418d6311\">_indexBuffer</a>;</div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00075\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01209.html#ab57fd008d10c0c2c6ed4182bb3f187ee\">   75</a></span>    ID3D11ShaderResourceView* <a class=\"code hl_function\" href=\"a01209.html#ab57fd008d10c0c2c6ed4182bb3f187ee\">GetPatchParamSRV</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01209.html#a906a11e9011b14e667c4e46e0cb0089c\">_patchParamBufferSRV</a>;</div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span> </div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span><span class=\"keyword\">protected</span>:</div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span>    <span class=\"comment\">// allocate buffers from patchTable</span></div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01209.html#a281807810d02943d0819c40e111b9144\">   81</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01209.html#a281807810d02943d0819c40e111b9144\">allocate</a>(<a class=\"code hl_class\" href=\"a00993.html\">Far::PatchTable</a> <span class=\"keyword\">const</span> *farPatchTable,</div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>                  ID3D11DeviceContext *deviceContext);</div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span> </div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01209.html#a5dfb6b58580f2dec58e9b5bfdb4ed9f1\">   84</a></span>    <a class=\"code hl_typedef\" href=\"a00912.html#a98098cd229f60d2397d84a76fe654a31\">PatchArrayVector</a> <a class=\"code hl_variable\" href=\"a01209.html#a5dfb6b58580f2dec58e9b5bfdb4ed9f1\">_patchArrays</a>;</div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span> </div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01209.html#a70f9e642d07efb73b8e7dc7a418d6311\">   86</a></span>    ID3D11Buffer             *<a class=\"code hl_variable\" href=\"a01209.html#a70f9e642d07efb73b8e7dc7a418d6311\">_indexBuffer</a>;</div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01209.html#a922297765b71fb93103914cb95b76e68\">   87</a></span>    ID3D11Buffer             *<a class=\"code hl_variable\" href=\"a01209.html#a922297765b71fb93103914cb95b76e68\">_patchParamBuffer</a>;</div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01209.html#a906a11e9011b14e667c4e46e0cb0089c\">   88</a></span>    ID3D11ShaderResourceView *<a class=\"code hl_variable\" href=\"a01209.html#a906a11e9011b14e667c4e46e0cb0089c\">_patchParamBufferSRV</a>;</div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span> </div>\n-<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span> </div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>}  <span class=\"comment\">// end namespace Osd</span></div>\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span> </div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>}  <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span> </div>\n-<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>}  <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span> </div>\n-<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_GL_PATCH_TABLE_H</span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa00912_html_a98098cd229f60d2397d84a76fe654a31\"><div class=\"ttname\"><a href=\"a00912.html#a98098cd229f60d2397d84a76fe654a31\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchArrayVector</a></div><div class=\"ttdeci\">std::vector&lt; PatchArray &gt; PatchArrayVector</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00132\">types.h:132</a></div></div>\n-<div class=\"ttc\" id=\"aa00993_html\"><div class=\"ttname\"><a href=\"a00993.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable</a></div><div class=\"ttdoc\">Container for arrays of parametric patches.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00761_source.html#l00055\">patchTable.h:55</a></div></div>\n-<div class=\"ttc\" id=\"aa01209_html\"><div class=\"ttname\"><a href=\"a01209.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11PatchTable</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00815_source.html#l00049\">d3d11PatchTable.h:49</a></div></div>\n-<div class=\"ttc\" id=\"aa01209_html_a0d96d4b3eaf2b3e453cbcb031340ebca\"><div class=\"ttname\"><a href=\"a01209.html#a0d96d4b3eaf2b3e453cbcb031340ebca\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11PatchTable::Create</a></div><div class=\"ttdeci\">static D3D11PatchTable * Create(Far::PatchTable const *farPatchTable, DEVICE_CONTEXT context)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00815_source.html#l00057\">d3d11PatchTable.h:57</a></div></div>\n-<div class=\"ttc\" id=\"aa01209_html_a18e3d09b0c7b7552f8e419e36788166a\"><div class=\"ttname\"><a href=\"a01209.html#a18e3d09b0c7b7552f8e419e36788166a\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11PatchTable::GetPatchArrays</a></div><div class=\"ttdeci\">PatchArrayVector const &amp; GetPatchArrays() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00815_source.html#l00065\">d3d11PatchTable.h:65</a></div></div>\n-<div class=\"ttc\" id=\"aa01209_html_a281807810d02943d0819c40e111b9144\"><div class=\"ttname\"><a href=\"a01209.html#a281807810d02943d0819c40e111b9144\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11PatchTable::allocate</a></div><div class=\"ttdeci\">bool allocate(Far::PatchTable const *farPatchTable, ID3D11DeviceContext *deviceContext)</div></div>\n-<div class=\"ttc\" id=\"aa01209_html_a2d85a5ed6ddcef5023c9ef2e6fdd38a5\"><div class=\"ttname\"><a href=\"a01209.html#a2d85a5ed6ddcef5023c9ef2e6fdd38a5\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11PatchTable::VertexBufferBinding</a></div><div class=\"ttdeci\">ID3D11Buffer * VertexBufferBinding</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00815_source.html#l00051\">d3d11PatchTable.h:51</a></div></div>\n-<div class=\"ttc\" id=\"aa01209_html_a39d5e5c13d54a0f5774047ffa2bb17e4\"><div class=\"ttname\"><a href=\"a01209.html#a39d5e5c13d54a0f5774047ffa2bb17e4\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11PatchTable::~D3D11PatchTable</a></div><div class=\"ttdeci\">~D3D11PatchTable()</div></div>\n-<div class=\"ttc\" id=\"aa01209_html_a45505c8c99abe0baf8b56981fa0a31e1\"><div class=\"ttname\"><a href=\"a01209.html#a45505c8c99abe0baf8b56981fa0a31e1\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11PatchTable::GetPatchIndexBuffer</a></div><div class=\"ttdeci\">ID3D11Buffer * GetPatchIndexBuffer() const</div><div class=\"ttdoc\">Returns the index buffer containing the patch control vertices.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00815_source.html#l00070\">d3d11PatchTable.h:70</a></div></div>\n-<div class=\"ttc\" id=\"aa01209_html_a5dfb6b58580f2dec58e9b5bfdb4ed9f1\"><div class=\"ttname\"><a href=\"a01209.html#a5dfb6b58580f2dec58e9b5bfdb4ed9f1\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11PatchTable::_patchArrays</a></div><div class=\"ttdeci\">PatchArrayVector _patchArrays</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00815_source.html#l00084\">d3d11PatchTable.h:84</a></div></div>\n-<div class=\"ttc\" id=\"aa01209_html_a70f9e642d07efb73b8e7dc7a418d6311\"><div class=\"ttname\"><a href=\"a01209.html#a70f9e642d07efb73b8e7dc7a418d6311\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11PatchTable::_indexBuffer</a></div><div class=\"ttdeci\">ID3D11Buffer * _indexBuffer</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00815_source.html#l00086\">d3d11PatchTable.h:86</a></div></div>\n-<div class=\"ttc\" id=\"aa01209_html_a8d071db2033c568b98a8aed737e563e9\"><div class=\"ttname\"><a href=\"a01209.html#a8d071db2033c568b98a8aed737e563e9\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11PatchTable::Create</a></div><div class=\"ttdeci\">static D3D11PatchTable * Create(Far::PatchTable const *farPatchTable, ID3D11DeviceContext *deviceContext)</div></div>\n-<div class=\"ttc\" id=\"aa01209_html_a906a11e9011b14e667c4e46e0cb0089c\"><div class=\"ttname\"><a href=\"a01209.html#a906a11e9011b14e667c4e46e0cb0089c\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11PatchTable::_patchParamBufferSRV</a></div><div class=\"ttdeci\">ID3D11ShaderResourceView * _patchParamBufferSRV</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00815_source.html#l00088\">d3d11PatchTable.h:88</a></div></div>\n-<div class=\"ttc\" id=\"aa01209_html_a922297765b71fb93103914cb95b76e68\"><div class=\"ttname\"><a href=\"a01209.html#a922297765b71fb93103914cb95b76e68\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11PatchTable::_patchParamBuffer</a></div><div class=\"ttdeci\">ID3D11Buffer * _patchParamBuffer</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00815_source.html#l00087\">d3d11PatchTable.h:87</a></div></div>\n-<div class=\"ttc\" id=\"aa01209_html_ab57fd008d10c0c2c6ed4182bb3f187ee\"><div class=\"ttname\"><a href=\"a01209.html#ab57fd008d10c0c2c6ed4182bb3f187ee\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11PatchTable::GetPatchParamSRV</a></div><div class=\"ttdeci\">ID3D11ShaderResourceView * GetPatchParamSRV() const</div><div class=\"ttdoc\">Returns the SRV containing the patch parameter.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00815_source.html#l00075\">d3d11PatchTable.h:75</a></div></div>\n-<div class=\"ttc\" id=\"aa01209_html_ac81ed5f09e3d3a2aae5a01802b343a6d\"><div class=\"ttname\"><a href=\"a01209.html#ac81ed5f09e3d3a2aae5a01802b343a6d\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11PatchTable::D3D11PatchTable</a></div><div class=\"ttdeci\">D3D11PatchTable()</div></div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"keyword\">namespace </span>Vtr {</div>\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span><span class=\"keyword\">namespace </span>internal {</div>\n+<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span> </div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span><span class=\"keyword\">class </span>Refinement;</div>\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span><span class=\"keyword\">class </span>TriRefinement;</div>\n+<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span><span class=\"keyword\">class </span>QuadRefinement;</div>\n+<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span><span class=\"keyword\">class </span>FVarRefinement;</div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span><span class=\"keyword\">class </span>FVarLevel;</div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span> </div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span><span class=\"comment\">//  Level:</span></div>\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span><span class=\"comment\">//      A refinement level includes a vectorized representation of the topology</span></div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span><span class=\"comment\">//  for a particular subdivision level.  The topology is &quot;complete&quot; in that any</span></div>\n+<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span><span class=\"comment\">//  level can be used as the base level of another subdivision hierarchy and can</span></div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span><span class=\"comment\">//  be considered a complete mesh independent of its ancestors.  It currently</span></div>\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span><span class=\"comment\">//  does contain a &quot;depth&quot; member -- as some inferences can then be made about</span></div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span><span class=\"comment\">//  the topology (i.e. all quads or all tris if not level 0).</span></div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span><span class=\"comment\">//  This class is intended for private use within the library.  There are still</span></div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span><span class=\"comment\">//  opportunities to specialize levels -- e.g. those supporting N-sided faces vs</span></div>\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span><span class=\"comment\">//  those that are purely quads or tris -- so we prefer to insulate it from public</span></div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span><span class=\"comment\">//  access.</span></div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span><span class=\"comment\">//  The representation of topology here is to store six topological relationships</span></div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span><span class=\"comment\">//  in tables of integers.  Each is stored in its own array(s) so the result is</span></div>\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span><span class=\"comment\">//  a SOA representation of the topology.  The six relations are:</span></div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span><span class=\"comment\">//      - face-verts:  vertices incident/comprising a face</span></div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span><span class=\"comment\">//      - face-edges:  edges incident a face</span></div>\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span><span class=\"comment\">//      - edge-verts:  vertices incident/comprising an edge</span></div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span><span class=\"comment\">//      - edge-faces:  faces incident an edge</span></div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span><span class=\"comment\">//      - vert-faces:  faces incident a vertex</span></div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span><span class=\"comment\">//      - vert-edges:  edges incident a vertex</span></div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span><span class=\"comment\">//  There is some redundancy here but the intent is not that this be a minimal</span></div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span><span class=\"comment\">//  representation, the intent is that it be amenable to refinement.  Classes in</span></div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span><span class=\"comment\">//  the Far layer essentially store 5 of these 6 in a permuted form -- we add</span></div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span><span class=\"comment\">//  the face-edges here to simplify refinement.</span></div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span> </div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span><span class=\"keyword\">class </span>Level {</div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span> </div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>    <span class=\"comment\">//  Simple nested types to hold the tags for each component type -- some of</span></div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>    <span class=\"comment\">//  which are user-specified features (e.g. whether a face is a hole or not)</span></div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>    <span class=\"comment\">//  while others indicate the topological nature of the component, how it</span></div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>    <span class=\"comment\">//  is affected by creasing in its neighborhood, etc.</span></div>\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>    <span class=\"comment\">//  Most of these properties are passed down to child components during</span></div>\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span>    <span class=\"comment\">//  refinement, but some -- notably the designation of a component as semi-</span></div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>    <span class=\"comment\">//  sharp -- require re-determination as sharpness values are reduced at each</span></div>\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span>    <span class=\"comment\">//  level.</span></div>\n+<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>    <span class=\"keyword\">struct </span>VTag {</div>\n+<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span>        VTag() { }</div>\n+<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span> </div>\n+<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span>        <span class=\"comment\">//  When cleared, the VTag ALMOST represents a smooth, regular, interior</span></div>\n+<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span>        <span class=\"comment\">//  vertex -- the Type enum requires a bit be explicitly set for Smooth,</span></div>\n+<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span>        <span class=\"comment\">//  so that must be done explicitly if desired on initialization.</span></div>\n+<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span>        <span class=\"keywordtype\">void</span> clear() { std::memset((<span class=\"keywordtype\">void</span>*) <span class=\"keyword\">this</span>, 0, <span class=\"keyword\">sizeof</span>(VTag)); }</div>\n+<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span> </div>\n+<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span>        <span class=\"keyword\">typedef</span> <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> VTagSize;</div>\n+<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span> </div>\n+<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span>        VTagSize _nonManifold     : 1;  <span class=\"comment\">// fixed</span></div>\n+<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span>        VTagSize _xordinary       : 1;  <span class=\"comment\">// fixed</span></div>\n+<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span>        VTagSize _boundary        : 1;  <span class=\"comment\">// fixed</span></div>\n+<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span>        VTagSize _corner          : 1;  <span class=\"comment\">// fixed</span></div>\n+<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span>        VTagSize _infSharp        : 1;  <span class=\"comment\">// fixed</span></div>\n+<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span>        VTagSize _semiSharp       : 1;  <span class=\"comment\">// variable</span></div>\n+<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span>        VTagSize _semiSharpEdges  : 1;  <span class=\"comment\">// variable</span></div>\n+<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span>        VTagSize _rule            : 4;  <span class=\"comment\">// variable when _semiSharp</span></div>\n+<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span> </div>\n+<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\">  116</span>        <span class=\"comment\">//  These next to tags are complementary -- the &quot;incomplete&quot; tag is only</span></div>\n+<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span>        <span class=\"comment\">//  relevant for refined levels while the &quot;incident an irregular face&quot; tag</span></div>\n+<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\">  118</span>        <span class=\"comment\">//  is only relevant for the base level.  They could be combined as both</span></div>\n+<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span>        <span class=\"comment\">//  indicate &quot;no full regular ring&quot; around a vertex</span></div>\n+<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span>        VTagSize _incomplete      : 1;  <span class=\"comment\">// variable only set in refined levels</span></div>\n+<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\">  121</span>        VTagSize _incidIrregFace  : 1;  <span class=\"comment\">// variable only set in base level</span></div>\n+<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span> </div>\n+<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span>        <span class=\"comment\">//  Tags indicating incident infinitely-sharp (permanent) features</span></div>\n+<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span>        VTagSize _infSharpEdges   : 1;  <span class=\"comment\">// fixed</span></div>\n+<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span>        VTagSize _infSharpCrease  : 1;  <span class=\"comment\">// fixed</span></div>\n+<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span>        VTagSize _infIrregular    : 1;  <span class=\"comment\">// fixed</span></div>\n+<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span> </div>\n+<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span>        <span class=\"comment\">//  Alternate constructor and accessor for dealing with integer bits directly:</span></div>\n+<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span>        <span class=\"keyword\">explicit</span> VTag(VTagSize bits) {</div>\n+<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span>            std::memcpy(<span class=\"keyword\">this</span>, &amp;bits, <span class=\"keyword\">sizeof</span>(bits));</div>\n+<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\">  131</span>        }</div>\n+<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\">  132</span>        VTagSize getBits()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\">  133</span>            VTagSize bits;</div>\n+<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\">  134</span>            std::memcpy(&amp;bits, <span class=\"keyword\">this</span>, <span class=\"keyword\">sizeof</span>(bits));</div>\n+<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\">  135</span>            <span class=\"keywordflow\">return</span> bits;</div>\n+<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\">  136</span>        }</div>\n+<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\">  137</span> </div>\n+<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\">  138</span>        <span class=\"keyword\">static</span> VTag BitwiseOr(VTag <span class=\"keyword\">const</span> vTags[], <span class=\"keywordtype\">int</span> size = 4);</div>\n+<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\">  139</span>    };</div>\n+<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\">  140</span>    <span class=\"keyword\">struct </span>ETag {</div>\n+<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\">  141</span>        ETag() { }</div>\n+<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span> </div>\n+<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\">  143</span>        <span class=\"comment\">//  When cleared, the ETag represents a smooth, manifold, interior edge</span></div>\n+<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\">  144</span>        <span class=\"keywordtype\">void</span> clear() { std::memset((<span class=\"keywordtype\">void</span>*) <span class=\"keyword\">this</span>, 0, <span class=\"keyword\">sizeof</span>(ETag)); }</div>\n+<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\">  145</span> </div>\n+<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\">  146</span>        <span class=\"keyword\">typedef</span> <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> ETagSize;</div>\n+<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\">  147</span> </div>\n+<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\">  148</span>        ETagSize _nonManifold  : 1;  <span class=\"comment\">// fixed</span></div>\n+<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\">  149</span>        ETagSize _boundary     : 1;  <span class=\"comment\">// fixed</span></div>\n+<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\">  150</span>        ETagSize _infSharp     : 1;  <span class=\"comment\">// fixed</span></div>\n+<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\">  151</span>        ETagSize _semiSharp    : 1;  <span class=\"comment\">// variable</span></div>\n+<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\">  152</span> </div>\n+<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\">  153</span>        <span class=\"comment\">//  Alternate constructor and accessor for dealing with integer bits directly:</span></div>\n+<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\">  154</span>        <span class=\"keyword\">explicit</span> ETag(ETagSize bits) {</div>\n+<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\">  155</span>            std::memcpy(<span class=\"keyword\">this</span>, &amp;bits, <span class=\"keyword\">sizeof</span>(bits));</div>\n+<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\">  156</span>        }</div>\n+<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\">  157</span>        ETagSize getBits()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\">  158</span>            ETagSize bits;</div>\n+<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\">  159</span>            std::memcpy(&amp;bits, <span class=\"keyword\">this</span>, <span class=\"keyword\">sizeof</span>(bits));</div>\n+<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\">  160</span>            <span class=\"keywordflow\">return</span> bits;</div>\n+<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\">  161</span>        }</div>\n+<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\">  162</span> </div>\n+<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\">  163</span>        <span class=\"keyword\">static</span> ETag BitwiseOr(ETag <span class=\"keyword\">const</span> eTags[], <span class=\"keywordtype\">int</span> size = 4);</div>\n+<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\">  164</span>    };</div>\n+<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\">  165</span>    <span class=\"keyword\">struct </span>FTag {</div>\n+<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\">  166</span>        FTag() { }</div>\n+<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\">  167</span> </div>\n+<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\">  168</span>        <span class=\"keywordtype\">void</span> clear() { std::memset((<span class=\"keywordtype\">void</span>*) <span class=\"keyword\">this</span>, 0, <span class=\"keyword\">sizeof</span>(FTag)); }</div>\n+<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\">  169</span> </div>\n+<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\">  170</span>        <span class=\"keyword\">typedef</span> <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> FTagSize;</div>\n+<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span> </div>\n+<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\">  172</span>        FTagSize _hole  : 1;  <span class=\"comment\">// fixed</span></div>\n+<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\">  173</span> </div>\n+<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\">  174</span>        <span class=\"comment\">//  On deck -- coming soon...</span></div>\n+<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\">  175</span>        <span class=\"comment\">//FTagSize _hasEdits : 1;  // variable</span></div>\n+<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\">  176</span>    };</div>\n+<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span> </div>\n+<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\">  178</span>    <span class=\"comment\">//  Additional simple struct to identify a &quot;span&quot; around a vertex, i.e. a</span></div>\n+<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\">  179</span>    <span class=\"comment\">//  subset of the faces around a vertex delimited by some property (e.g. a</span></div>\n+<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\">  180</span>    <span class=\"comment\">//  face-varying discontinuity, an inf-sharp edge, etc.)</span></div>\n+<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\">  181</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\">  182</span>    <span class=\"comment\">//  The span requires an &quot;origin&quot; and a &quot;size&quot; to fully define its extent.</span></div>\n+<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\">  183</span>    <span class=\"comment\">//  Use of the size is required over a leading/trailing pair as the valence</span></div>\n+<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\">  184</span>    <span class=\"comment\">//  around a non-manifold vertex cannot be trivially determined from two</span></div>\n+<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\">  185</span>    <span class=\"comment\">//  extremeties.  Similarly a start face is chosen over an edge as starting</span></div>\n+<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\">  186</span>    <span class=\"comment\">//  with a manifold edge is ambiguous.  Additional tags also support</span></div>\n+<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\">  187</span>    <span class=\"comment\">//  non-manifold cases, e.g. periodic spans at the apex of a double cone.</span></div>\n+<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\">  188</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\">  189</span>    <span class=\"comment\">//  Currently setting the size to 0 or leaving the span &quot;unassigned&quot; is an</span></div>\n+<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\">  190</span>    <span class=\"comment\">//  indication to use the full neighborhood rather than a subset -- prefer</span></div>\n+<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\">  191</span>    <span class=\"comment\">//  use of the const method here to direct inspection of the member.</span></div>\n+<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\">  192</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\">  193</span>    <span class=\"keyword\">struct </span>VSpan {</div>\n+<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\">  194</span>        VSpan() { std::memset((<span class=\"keywordtype\">void</span>*) <span class=\"keyword\">this</span>, 0, <span class=\"keyword\">sizeof</span>(VSpan)); }</div>\n+<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\">  195</span> </div>\n+<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\">  196</span>        <span class=\"keywordtype\">void</span> clear()            { std::memset((<span class=\"keywordtype\">void</span>*) <span class=\"keyword\">this</span>, 0, <span class=\"keyword\">sizeof</span>(VSpan)); }</div>\n+<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\">  197</span>        <span class=\"keywordtype\">bool</span> isAssigned()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _numFaces &gt; 0; }</div>\n+<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\">  198</span> </div>\n+<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\">  199</span>        <a class=\"code hl_typedef\" href=\"a00909.html#a97c1e0c5ac33f97e2b73fde56b56c363\">LocalIndex</a> _numFaces;</div>\n+<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\">  200</span>        <a class=\"code hl_typedef\" href=\"a00909.html#a97c1e0c5ac33f97e2b73fde56b56c363\">LocalIndex</a> _startFace;</div>\n+<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\">  201</span>        <a class=\"code hl_typedef\" href=\"a00909.html#a97c1e0c5ac33f97e2b73fde56b56c363\">LocalIndex</a> _cornerInSpan;</div>\n+<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\">  202</span> </div>\n+<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\">  203</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> _periodic : 1;</div>\n+<div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\">  204</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> _sharp    : 1;</div>\n+<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\">  205</span>    };</div>\n+<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\">  206</span> </div>\n+<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\">  207</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\">  208</span>    Level();</div>\n+<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\">  209</span>    ~Level();</div>\n+<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\">  210</span> </div>\n+<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\">  211</span>    <span class=\"comment\">//  Simple accessors:</span></div>\n+<div class=\"line\"><a id=\"l00212\" name=\"l00212\"></a><span class=\"lineno\">  212</span>    <span class=\"keywordtype\">int</span> getDepth()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _depth; }</div>\n+<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\">  213</span> </div>\n+<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\">  214</span>    <span class=\"keywordtype\">int</span> getNumVertices()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _vertCount; }</div>\n+<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\">  215</span>    <span class=\"keywordtype\">int</span> getNumFaces()<span class=\"keyword\"> const    </span>{ <span class=\"keywordflow\">return</span> _faceCount; }</div>\n+<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\">  216</span>    <span class=\"keywordtype\">int</span> getNumEdges()<span class=\"keyword\"> const    </span>{ <span class=\"keywordflow\">return</span> _edgeCount; }</div>\n+<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\">  217</span> </div>\n+<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\">  218</span>    <span class=\"comment\">//  More global sizes may prove useful...</span></div>\n+<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\">  219</span>    <span class=\"keywordtype\">int</span> getNumFaceVerticesTotal()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (<span class=\"keywordtype\">int</span>) _faceVertIndices.size(); }</div>\n+<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\">  220</span>    <span class=\"keywordtype\">int</span> getNumFaceEdgesTotal()<span class=\"keyword\"> const    </span>{ <span class=\"keywordflow\">return</span> (<span class=\"keywordtype\">int</span>) _faceEdgeIndices.size(); }</div>\n+<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\">  221</span>    <span class=\"keywordtype\">int</span> getNumEdgeVerticesTotal()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (<span class=\"keywordtype\">int</span>) _edgeVertIndices.size(); }</div>\n+<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\">  222</span>    <span class=\"keywordtype\">int</span> getNumEdgeFacesTotal()<span class=\"keyword\"> const    </span>{ <span class=\"keywordflow\">return</span> (<span class=\"keywordtype\">int</span>) _edgeFaceIndices.size(); }</div>\n+<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\">  223</span>    <span class=\"keywordtype\">int</span> getNumVertexFacesTotal()<span class=\"keyword\"> const  </span>{ <span class=\"keywordflow\">return</span> (<span class=\"keywordtype\">int</span>) _vertFaceIndices.size(); }</div>\n+<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\">  224</span>    <span class=\"keywordtype\">int</span> getNumVertexEdgesTotal()<span class=\"keyword\"> const  </span>{ <span class=\"keywordflow\">return</span> (<span class=\"keywordtype\">int</span>) _vertEdgeIndices.size(); }</div>\n+<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\">  225</span> </div>\n+<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\">  226</span>    <span class=\"keywordtype\">int</span> getMaxValence()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _maxValence; }</div>\n+<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\">  227</span>    <span class=\"keywordtype\">int</span> getMaxEdgeFaces()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _maxEdgeFaces; }</div>\n+<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\">  228</span> </div>\n+<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\">  229</span>    <span class=\"comment\">//  Methods to access the relation tables/indices -- note that for some relations</span></div>\n+<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\">  230</span>    <span class=\"comment\">//  (i.e. those where a component is &quot;contained by&quot; a neighbor, or more generally</span></div>\n+<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\">  231</span>    <span class=\"comment\">//  when the neighbor is a simplex of higher dimension) we store an additional</span></div>\n+<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\">  232</span>    <span class=\"comment\">//  &quot;local index&quot;, e.g. for the case of vert-faces if one of the faces F[i] is</span></div>\n+<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\">  233</span>    <span class=\"comment\">//  incident a vertex V, then L[i] is the &quot;local index&quot; in F[i] of vertex V.</span></div>\n+<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\">  234</span>    <span class=\"comment\">//  Once have only quads (or tris), this local index need only occupy two bits</span></div>\n+<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\">  235</span>    <span class=\"comment\">//  and could conceivably be packed into the same integer as the face index, but</span></div>\n+<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\">  236</span>    <span class=\"comment\">//  for now, given the need to support faces of potentially high valence we&#39;ll</span></div>\n+<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\">  237</span>    <span class=\"comment\">//  use an 8- or 16-bit integer.</span></div>\n+<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\">  238</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\">  239</span>    <span class=\"comment\">//  Methods to access the six topological relations:</span></div>\n+<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\">  240</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a> getFaceVertices(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\">  241</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a> getFaceEdges(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\">  242</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a> getEdgeVertices(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> edgeIndex) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\">  243</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a> getEdgeFaces(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> edgeIndex) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\">  244</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a> getVertexFaces(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00245\" name=\"l00245\"></a><span class=\"lineno\">  245</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a> getVertexEdges(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\">  246</span> </div>\n+<div class=\"line\"><a id=\"l00247\" name=\"l00247\"></a><span class=\"lineno\">  247</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a175f8a210a75b8180bc7ec74459492c9\">ConstLocalIndexArray</a> getEdgeFaceLocalIndices(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> edgeIndex) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00248\" name=\"l00248\"></a><span class=\"lineno\">  248</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a175f8a210a75b8180bc7ec74459492c9\">ConstLocalIndexArray</a> getVertexFaceLocalIndices(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00249\" name=\"l00249\"></a><span class=\"lineno\">  249</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a175f8a210a75b8180bc7ec74459492c9\">ConstLocalIndexArray</a> getVertexEdgeLocalIndices(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00250\" name=\"l00250\"></a><span class=\"lineno\">  250</span> </div>\n+<div class=\"line\"><a id=\"l00251\" name=\"l00251\"></a><span class=\"lineno\">  251</span>    <span class=\"comment\">//  Replace these with access to sharpness buffers/arrays rather than elements:</span></div>\n+<div class=\"line\"><a id=\"l00252\" name=\"l00252\"></a><span class=\"lineno\">  252</span>    <span class=\"keywordtype\">float</span> getEdgeSharpness(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> edgeIndex) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00253\" name=\"l00253\"></a><span class=\"lineno\">  253</span>    <span class=\"keywordtype\">float</span> getVertexSharpness(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00254\" name=\"l00254\"></a><span class=\"lineno\">  254</span>    <a class=\"code hl_enumeration\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78\">Sdc::Crease::Rule</a> getVertexRule(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00255\" name=\"l00255\"></a><span class=\"lineno\">  255</span> </div>\n+<div class=\"line\"><a id=\"l00256\" name=\"l00256\"></a><span class=\"lineno\">  256</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> findEdge(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> v0Index, <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> v1Index) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00257\" name=\"l00257\"></a><span class=\"lineno\">  257</span> </div>\n+<div class=\"line\"><a id=\"l00258\" name=\"l00258\"></a><span class=\"lineno\">  258</span>    <span class=\"comment\">// Holes</span></div>\n+<div class=\"line\"><a id=\"l00259\" name=\"l00259\"></a><span class=\"lineno\">  259</span>    <span class=\"keywordtype\">void</span> setFaceHole(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex, <span class=\"keywordtype\">bool</span> b);</div>\n+<div class=\"line\"><a id=\"l00260\" name=\"l00260\"></a><span class=\"lineno\">  260</span>    <span class=\"keywordtype\">bool</span> isFaceHole(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00261\" name=\"l00261\"></a><span class=\"lineno\">  261</span> </div>\n+<div class=\"line\"><a id=\"l00262\" name=\"l00262\"></a><span class=\"lineno\">  262</span>    <span class=\"comment\">// Face-varying</span></div>\n+<div class=\"line\"><a id=\"l00263\" name=\"l00263\"></a><span class=\"lineno\">  263</span>    Sdc::Options getFVarOptions(<span class=\"keywordtype\">int</span> channel) <span class=\"keyword\">const</span>; </div>\n+<div class=\"line\"><a id=\"l00264\" name=\"l00264\"></a><span class=\"lineno\">  264</span>    <span class=\"keywordtype\">int</span> getNumFVarChannels()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (<span class=\"keywordtype\">int</span>) _fvarChannels.size(); }</div>\n+<div class=\"line\"><a id=\"l00265\" name=\"l00265\"></a><span class=\"lineno\">  265</span>    <span class=\"keywordtype\">int</span> getNumFVarValues(<span class=\"keywordtype\">int</span> channel) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00266\" name=\"l00266\"></a><span class=\"lineno\">  266</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a> getFaceFVarValues(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex, <span class=\"keywordtype\">int</span> channel) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00267\" name=\"l00267\"></a><span class=\"lineno\">  267</span> </div>\n+<div class=\"line\"><a id=\"l00268\" name=\"l00268\"></a><span class=\"lineno\">  268</span>    FVarLevel &amp; getFVarLevel(<span class=\"keywordtype\">int</span> channel) { <span class=\"keywordflow\">return</span> *_fvarChannels[channel]; }</div>\n+<div class=\"line\"><a id=\"l00269\" name=\"l00269\"></a><span class=\"lineno\">  269</span>    FVarLevel <span class=\"keyword\">const</span> &amp; getFVarLevel(<span class=\"keywordtype\">int</span> channel)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> *_fvarChannels[channel]; }</div>\n+<div class=\"line\"><a id=\"l00270\" name=\"l00270\"></a><span class=\"lineno\">  270</span> </div>\n+<div class=\"line\"><a id=\"l00271\" name=\"l00271\"></a><span class=\"lineno\">  271</span>    <span class=\"comment\">//  Manifold/non-manifold tags:</span></div>\n+<div class=\"line\"><a id=\"l00272\" name=\"l00272\"></a><span class=\"lineno\">  272</span>    <span class=\"keywordtype\">void</span> setEdgeNonManifold(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> edgeIndex, <span class=\"keywordtype\">bool</span> b);</div>\n+<div class=\"line\"><a id=\"l00273\" name=\"l00273\"></a><span class=\"lineno\">  273</span>    <span class=\"keywordtype\">bool</span> isEdgeNonManifold(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> edgeIndex) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00274\" name=\"l00274\"></a><span class=\"lineno\">  274</span> </div>\n+<div class=\"line\"><a id=\"l00275\" name=\"l00275\"></a><span class=\"lineno\">  275</span>    <span class=\"keywordtype\">void</span> setVertexNonManifold(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex, <span class=\"keywordtype\">bool</span> b);</div>\n+<div class=\"line\"><a id=\"l00276\" name=\"l00276\"></a><span class=\"lineno\">  276</span>    <span class=\"keywordtype\">bool</span> isVertexNonManifold(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00277\" name=\"l00277\"></a><span class=\"lineno\">  277</span> </div>\n+<div class=\"line\"><a id=\"l00278\" name=\"l00278\"></a><span class=\"lineno\">  278</span>    <span class=\"comment\">//  General access to all component tags:</span></div>\n+<div class=\"line\"><a id=\"l00279\" name=\"l00279\"></a><span class=\"lineno\">  279</span>    VTag <span class=\"keyword\">const</span> &amp; getVertexTag(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _vertTags[vertIndex]; }</div>\n+<div class=\"line\"><a id=\"l00280\" name=\"l00280\"></a><span class=\"lineno\">  280</span>    ETag <span class=\"keyword\">const</span> &amp; getEdgeTag(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> edgeIndex)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _edgeTags[edgeIndex]; }</div>\n+<div class=\"line\"><a id=\"l00281\" name=\"l00281\"></a><span class=\"lineno\">  281</span>    FTag <span class=\"keyword\">const</span> &amp; getFaceTag(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _faceTags[faceIndex]; }</div>\n+<div class=\"line\"><a id=\"l00282\" name=\"l00282\"></a><span class=\"lineno\">  282</span> </div>\n+<div class=\"line\"><a id=\"l00283\" name=\"l00283\"></a><span class=\"lineno\">  283</span>    VTag &amp; getVertexTag(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex) { <span class=\"keywordflow\">return</span> _vertTags[vertIndex]; }</div>\n+<div class=\"line\"><a id=\"l00284\" name=\"l00284\"></a><span class=\"lineno\">  284</span>    ETag &amp; getEdgeTag(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> edgeIndex) { <span class=\"keywordflow\">return</span> _edgeTags[edgeIndex]; }</div>\n+<div class=\"line\"><a id=\"l00285\" name=\"l00285\"></a><span class=\"lineno\">  285</span>    FTag &amp; getFaceTag(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex) { <span class=\"keywordflow\">return</span> _faceTags[faceIndex]; }</div>\n+<div class=\"line\"><a id=\"l00286\" name=\"l00286\"></a><span class=\"lineno\">  286</span> </div>\n+<div class=\"line\"><a id=\"l00287\" name=\"l00287\"></a><span class=\"lineno\">  287</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00288\" name=\"l00288\"></a><span class=\"lineno\">  288</span> </div>\n+<div class=\"line\"><a id=\"l00289\" name=\"l00289\"></a><span class=\"lineno\">  289</span>    <span class=\"comment\">//  Debugging aides:</span></div>\n+<div class=\"line\"><a id=\"l00290\" name=\"l00290\"></a><span class=\"lineno\">  290</span>    <span class=\"keyword\">enum</span> TopologyError {</div>\n+<div class=\"line\"><a id=\"l00291\" name=\"l00291\"></a><span class=\"lineno\">  291</span>        TOPOLOGY_MISSING_EDGE_FACES=0,</div>\n+<div class=\"line\"><a id=\"l00292\" name=\"l00292\"></a><span class=\"lineno\">  292</span>        TOPOLOGY_MISSING_EDGE_VERTS,</div>\n+<div class=\"line\"><a id=\"l00293\" name=\"l00293\"></a><span class=\"lineno\">  293</span>        TOPOLOGY_MISSING_FACE_EDGES,</div>\n+<div class=\"line\"><a id=\"l00294\" name=\"l00294\"></a><span class=\"lineno\">  294</span>        TOPOLOGY_MISSING_FACE_VERTS,</div>\n+<div class=\"line\"><a id=\"l00295\" name=\"l00295\"></a><span class=\"lineno\">  295</span>        TOPOLOGY_MISSING_VERT_FACES,</div>\n+<div class=\"line\"><a id=\"l00296\" name=\"l00296\"></a><span class=\"lineno\">  296</span>        TOPOLOGY_MISSING_VERT_EDGES,</div>\n+<div class=\"line\"><a id=\"l00297\" name=\"l00297\"></a><span class=\"lineno\">  297</span> </div>\n+<div class=\"line\"><a id=\"l00298\" name=\"l00298\"></a><span class=\"lineno\">  298</span>        TOPOLOGY_FAILED_CORRELATION_EDGE_FACE,</div>\n+<div class=\"line\"><a id=\"l00299\" name=\"l00299\"></a><span class=\"lineno\">  299</span>        TOPOLOGY_FAILED_CORRELATION_FACE_VERT,</div>\n+<div class=\"line\"><a id=\"l00300\" name=\"l00300\"></a><span class=\"lineno\">  300</span>        TOPOLOGY_FAILED_CORRELATION_FACE_EDGE,</div>\n+<div class=\"line\"><a id=\"l00301\" name=\"l00301\"></a><span class=\"lineno\">  301</span> </div>\n+<div class=\"line\"><a id=\"l00302\" name=\"l00302\"></a><span class=\"lineno\">  302</span>        TOPOLOGY_FAILED_ORIENTATION_INCIDENT_EDGE,</div>\n+<div class=\"line\"><a id=\"l00303\" name=\"l00303\"></a><span class=\"lineno\">  303</span>        TOPOLOGY_FAILED_ORIENTATION_INCIDENT_FACE,</div>\n+<div class=\"line\"><a id=\"l00304\" name=\"l00304\"></a><span class=\"lineno\">  304</span>        TOPOLOGY_FAILED_ORIENTATION_INCIDENT_FACES_EDGES,</div>\n+<div class=\"line\"><a id=\"l00305\" name=\"l00305\"></a><span class=\"lineno\">  305</span> </div>\n+<div class=\"line\"><a id=\"l00306\" name=\"l00306\"></a><span class=\"lineno\">  306</span>        TOPOLOGY_DEGENERATE_EDGE,</div>\n+<div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\">  307</span>        TOPOLOGY_NON_MANIFOLD_EDGE,</div>\n+<div class=\"line\"><a id=\"l00308\" name=\"l00308\"></a><span class=\"lineno\">  308</span> </div>\n+<div class=\"line\"><a id=\"l00309\" name=\"l00309\"></a><span class=\"lineno\">  309</span>        TOPOLOGY_INVALID_CREASE_EDGE,</div>\n+<div class=\"line\"><a id=\"l00310\" name=\"l00310\"></a><span class=\"lineno\">  310</span>        TOPOLOGY_INVALID_CREASE_VERT</div>\n+<div class=\"line\"><a id=\"l00311\" name=\"l00311\"></a><span class=\"lineno\">  311</span>    };</div>\n+<div class=\"line\"><a id=\"l00312\" name=\"l00312\"></a><span class=\"lineno\">  312</span> </div>\n+<div class=\"line\"><a id=\"l00313\" name=\"l00313\"></a><span class=\"lineno\">  313</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">char</span> <span class=\"keyword\">const</span> * getTopologyErrorString(TopologyError errCode);</div>\n+<div class=\"line\"><a id=\"l00314\" name=\"l00314\"></a><span class=\"lineno\">  314</span> </div>\n+<div class=\"line\"><a id=\"l00315\" name=\"l00315\"></a><span class=\"lineno\">  315</span>    <span class=\"keyword\">typedef</span> void (* ValidationCallback)(TopologyError errCode, <span class=\"keywordtype\">char</span> <span class=\"keyword\">const</span> * msg, <span class=\"keywordtype\">void</span> <span class=\"keyword\">const</span> * clientData);</div>\n+<div class=\"line\"><a id=\"l00316\" name=\"l00316\"></a><span class=\"lineno\">  316</span> </div>\n+<div class=\"line\"><a id=\"l00317\" name=\"l00317\"></a><span class=\"lineno\">  317</span>    <span class=\"keywordtype\">bool</span> validateTopology(ValidationCallback callback=0, <span class=\"keywordtype\">void</span> <span class=\"keyword\">const</span> * clientData=0) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00318\" name=\"l00318\"></a><span class=\"lineno\">  318</span> </div>\n+<div class=\"line\"><a id=\"l00319\" name=\"l00319\"></a><span class=\"lineno\">  319</span>    <span class=\"keywordtype\">void</span> print(<span class=\"keyword\">const</span> Refinement* parentRefinement = 0) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00320\" name=\"l00320\"></a><span class=\"lineno\">  320</span> </div>\n+<div class=\"line\"><a id=\"l00321\" name=\"l00321\"></a><span class=\"lineno\">  321</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00322\" name=\"l00322\"></a><span class=\"lineno\">  322</span>    <span class=\"comment\">//  High-level topology queries -- these may be moved elsewhere:</span></div>\n+<div class=\"line\"><a id=\"l00323\" name=\"l00323\"></a><span class=\"lineno\">  323</span> </div>\n+<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\">  324</span>    <span class=\"keywordtype\">bool</span> isSingleCreasePatch(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> face, <span class=\"keywordtype\">float</span>* sharpnessOut=NULL, <span class=\"keywordtype\">int</span>* rotationOut=NULL) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\">  325</span> </div>\n+<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\">  326</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\">  327</span>    <span class=\"comment\">//  When inspecting topology, the component tags -- particularly VTag and ETag -- are most</span></div>\n+<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\">  328</span>    <span class=\"comment\">//  often inspected in groups for the face to which they belong.  They are designed to be</span></div>\n+<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\">  329</span>    <span class=\"comment\">//  bitwise OR&#39;d (the result then referred to as a &quot;composite&quot; tag) to make quick decisions</span></div>\n+<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\">  330</span>    <span class=\"comment\">//  about the face as a whole to avoid tedious topological inspection.</span></div>\n+<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\">  331</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\">  332</span>    <span class=\"comment\">//  The same logic can be applied to topology in a FVar channel when tags specific to that</span></div>\n+<div class=\"line\"><a id=\"l00333\" name=\"l00333\"></a><span class=\"lineno\">  333</span>    <span class=\"comment\">//  channel are used.  Note that the VTags apply to the FVar values assigned to the corners</span></div>\n+<div class=\"line\"><a id=\"l00334\" name=\"l00334\"></a><span class=\"lineno\">  334</span>    <span class=\"comment\">//  of the face and not the vertex as a whole.  The &quot;composite&quot; face-varying VTag for a</span></div>\n+<div class=\"line\"><a id=\"l00335\" name=\"l00335\"></a><span class=\"lineno\">  335</span>    <span class=\"comment\">//  vertex is the union of VTags of all distinct FVar values for that vertex.</span></div>\n+<div class=\"line\"><a id=\"l00336\" name=\"l00336\"></a><span class=\"lineno\">  336</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00337\" name=\"l00337\"></a><span class=\"lineno\">  337</span>    <span class=\"keywordtype\">bool</span> doesVertexFVarTopologyMatch(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vIndex, <span class=\"keywordtype\">int</span> fvarChannel) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00338\" name=\"l00338\"></a><span class=\"lineno\">  338</span>    <span class=\"keywordtype\">bool</span> doesFaceFVarTopologyMatch(  <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> fIndex, <span class=\"keywordtype\">int</span> fvarChannel) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00339\" name=\"l00339\"></a><span class=\"lineno\">  339</span>    <span class=\"keywordtype\">bool</span> doesEdgeFVarTopologyMatch(  <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> eIndex, <span class=\"keywordtype\">int</span> fvarChannel) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00340\" name=\"l00340\"></a><span class=\"lineno\">  340</span> </div>\n+<div class=\"line\"><a id=\"l00341\" name=\"l00341\"></a><span class=\"lineno\">  341</span>    <span class=\"keywordtype\">void</span> getFaceVTags(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> fIndex, VTag vTags[], <span class=\"keywordtype\">int</span> fvarChannel = -1) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00342\" name=\"l00342\"></a><span class=\"lineno\">  342</span>    <span class=\"keywordtype\">void</span> getFaceETags(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> fIndex, ETag eTags[], <span class=\"keywordtype\">int</span> fvarChannel = -1) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00343\" name=\"l00343\"></a><span class=\"lineno\">  343</span> </div>\n+<div class=\"line\"><a id=\"l00344\" name=\"l00344\"></a><span class=\"lineno\">  344</span>    VTag getFaceCompositeVTag(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> fIndex, <span class=\"keywordtype\">int</span> fvarChannel = -1) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00345\" name=\"l00345\"></a><span class=\"lineno\">  345</span>    VTag getFaceCompositeVTag(<a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a> &amp; fVerts) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00346\" name=\"l00346\"></a><span class=\"lineno\">  346</span> </div>\n+<div class=\"line\"><a id=\"l00347\" name=\"l00347\"></a><span class=\"lineno\">  347</span>    VTag getVertexCompositeFVarVTag(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vIndex, <span class=\"keywordtype\">int</span> fvarChannel) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00348\" name=\"l00348\"></a><span class=\"lineno\">  348</span> </div>\n+<div class=\"line\"><a id=\"l00349\" name=\"l00349\"></a><span class=\"lineno\">  349</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00350\" name=\"l00350\"></a><span class=\"lineno\">  350</span>    <span class=\"comment\">//  When gathering &quot;patch points&quot; we may want the indices of the vertices or the corresponding</span></div>\n+<div class=\"line\"><a id=\"l00351\" name=\"l00351\"></a><span class=\"lineno\">  351</span>    <span class=\"comment\">//  FVar values for a particular channel.  Both are represented and equally accessible within</span></div>\n+<div class=\"line\"><a id=\"l00352\" name=\"l00352\"></a><span class=\"lineno\">  352</span>    <span class=\"comment\">//  the faces, so we allow all to be returned through these methods.  Setting the optional FVar</span></div>\n+<div class=\"line\"><a id=\"l00353\" name=\"l00353\"></a><span class=\"lineno\">  353</span>    <span class=\"comment\">//  channel to -1 will retrieve indices of vertices instead of FVar values:</span></div>\n+<div class=\"line\"><a id=\"l00354\" name=\"l00354\"></a><span class=\"lineno\">  354</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00355\" name=\"l00355\"></a><span class=\"lineno\">  355</span>    <span class=\"keywordtype\">int</span> gatherQuadLinearPatchPoints(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> fIndex, <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> patchPoints[], <span class=\"keywordtype\">int</span> rotation = 0,</div>\n+<div class=\"line\"><a id=\"l00356\" name=\"l00356\"></a><span class=\"lineno\">  356</span>                                                                       <span class=\"keywordtype\">int</span> fvarChannel = -1) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00357\" name=\"l00357\"></a><span class=\"lineno\">  357</span> </div>\n+<div class=\"line\"><a id=\"l00358\" name=\"l00358\"></a><span class=\"lineno\">  358</span>    <span class=\"keywordtype\">int</span> gatherQuadRegularInteriorPatchPoints(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> fIndex, <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> patchPoints[], <span class=\"keywordtype\">int</span> rotation = 0,</div>\n+<div class=\"line\"><a id=\"l00359\" name=\"l00359\"></a><span class=\"lineno\">  359</span>                                                                                <span class=\"keywordtype\">int</span> fvarChannel = -1) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00360\" name=\"l00360\"></a><span class=\"lineno\">  360</span>    <span class=\"keywordtype\">int</span> gatherQuadRegularBoundaryPatchPoints(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> fIndex, <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> patchPoints[], <span class=\"keywordtype\">int</span> boundaryEdgeInFace,</div>\n+<div class=\"line\"><a id=\"l00361\" name=\"l00361\"></a><span class=\"lineno\">  361</span>                                                                                <span class=\"keywordtype\">int</span> fvarChannel = -1) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00362\" name=\"l00362\"></a><span class=\"lineno\">  362</span>    <span class=\"keywordtype\">int</span> gatherQuadRegularCornerPatchPoints(  <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> fIndex, <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> patchPoints[], <span class=\"keywordtype\">int</span> cornerVertInFace,</div>\n+<div class=\"line\"><a id=\"l00363\" name=\"l00363\"></a><span class=\"lineno\">  363</span>                                                                                <span class=\"keywordtype\">int</span> fvarChannel = -1) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00364\" name=\"l00364\"></a><span class=\"lineno\">  364</span> </div>\n+<div class=\"line\"><a id=\"l00365\" name=\"l00365\"></a><span class=\"lineno\">  365</span>    <span class=\"keywordtype\">int</span> gatherQuadRegularRingAroundVertex(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vIndex, <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> ringPoints[],</div>\n+<div class=\"line\"><a id=\"l00366\" name=\"l00366\"></a><span class=\"lineno\">  366</span>                                          <span class=\"keywordtype\">int</span> fvarChannel = -1) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00367\" name=\"l00367\"></a><span class=\"lineno\">  367</span>    <span class=\"keywordtype\">int</span> gatherQuadRegularPartialRingAroundVertex(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vIndex, VSpan <span class=\"keyword\">const</span> &amp; span, <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> ringPoints[],</div>\n+<div class=\"line\"><a id=\"l00368\" name=\"l00368\"></a><span class=\"lineno\">  368</span>                                                 <span class=\"keywordtype\">int</span> fvarChannel = -1) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00369\" name=\"l00369\"></a><span class=\"lineno\">  369</span> </div>\n+<div class=\"line\"><a id=\"l00370\" name=\"l00370\"></a><span class=\"lineno\">  370</span>    <span class=\"comment\">//  WIP -- for future use, need to extend for face-varying...</span></div>\n+<div class=\"line\"><a id=\"l00371\" name=\"l00371\"></a><span class=\"lineno\">  371</span>    <span class=\"keywordtype\">int</span> gatherTriRegularInteriorPatchPoints(      <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> fIndex, <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> patchVerts[], <span class=\"keywordtype\">int</span> rotation = 0) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00372\" name=\"l00372\"></a><span class=\"lineno\">  372</span>    <span class=\"keywordtype\">int</span> gatherTriRegularBoundaryVertexPatchPoints(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> fIndex, <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> patchVerts[], <span class=\"keywordtype\">int</span> boundaryVertInFace) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00373\" name=\"l00373\"></a><span class=\"lineno\">  373</span>    <span class=\"keywordtype\">int</span> gatherTriRegularBoundaryEdgePatchPoints(  <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> fIndex, <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> patchVerts[], <span class=\"keywordtype\">int</span> boundaryEdgeInFace) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00374\" name=\"l00374\"></a><span class=\"lineno\">  374</span>    <span class=\"keywordtype\">int</span> gatherTriRegularCornerVertexPatchPoints(  <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> fIndex, <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> patchVerts[], <span class=\"keywordtype\">int</span> cornerVertInFace) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00375\" name=\"l00375\"></a><span class=\"lineno\">  375</span>    <span class=\"keywordtype\">int</span> gatherTriRegularCornerEdgePatchPoints(    <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> fIndex, <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> patchVerts[], <span class=\"keywordtype\">int</span> cornerEdgeInFace) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00376\" name=\"l00376\"></a><span class=\"lineno\">  376</span> </div>\n+<div class=\"line\"><a id=\"l00377\" name=\"l00377\"></a><span class=\"lineno\">  377</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00378\" name=\"l00378\"></a><span class=\"lineno\">  378</span>    <span class=\"comment\">//  Sizing methods used to construct a level to populate:</span></div>\n+<div class=\"line\"><a id=\"l00379\" name=\"l00379\"></a><span class=\"lineno\">  379</span>    <span class=\"keywordtype\">void</span> resizeFaces(       <span class=\"keywordtype\">int</span> numFaces);</div>\n+<div class=\"line\"><a id=\"l00380\" name=\"l00380\"></a><span class=\"lineno\">  380</span>    <span class=\"keywordtype\">void</span> resizeFaceVertices(<span class=\"keywordtype\">int</span> numFaceVertsTotal);</div>\n+<div class=\"line\"><a id=\"l00381\" name=\"l00381\"></a><span class=\"lineno\">  381</span>    <span class=\"keywordtype\">void</span> resizeFaceEdges(   <span class=\"keywordtype\">int</span> numFaceEdgesTotal);</div>\n+<div class=\"line\"><a id=\"l00382\" name=\"l00382\"></a><span class=\"lineno\">  382</span> </div>\n+<div class=\"line\"><a id=\"l00383\" name=\"l00383\"></a><span class=\"lineno\">  383</span>    <span class=\"keywordtype\">void</span> resizeEdges(    <span class=\"keywordtype\">int</span> numEdges);</div>\n+<div class=\"line\"><a id=\"l00384\" name=\"l00384\"></a><span class=\"lineno\">  384</span>    <span class=\"keywordtype\">void</span> resizeEdgeVertices();  <span class=\"comment\">// always 2*edgeCount</span></div>\n+<div class=\"line\"><a id=\"l00385\" name=\"l00385\"></a><span class=\"lineno\">  385</span>    <span class=\"keywordtype\">void</span> resizeEdgeFaces(<span class=\"keywordtype\">int</span> numEdgeFacesTotal);</div>\n+<div class=\"line\"><a id=\"l00386\" name=\"l00386\"></a><span class=\"lineno\">  386</span> </div>\n+<div class=\"line\"><a id=\"l00387\" name=\"l00387\"></a><span class=\"lineno\">  387</span>    <span class=\"keywordtype\">void</span> resizeVertices(   <span class=\"keywordtype\">int</span> numVertices);</div>\n+<div class=\"line\"><a id=\"l00388\" name=\"l00388\"></a><span class=\"lineno\">  388</span>    <span class=\"keywordtype\">void</span> resizeVertexFaces(<span class=\"keywordtype\">int</span> numVertexFacesTotal);</div>\n+<div class=\"line\"><a id=\"l00389\" name=\"l00389\"></a><span class=\"lineno\">  389</span>    <span class=\"keywordtype\">void</span> resizeVertexEdges(<span class=\"keywordtype\">int</span> numVertexEdgesTotal);</div>\n+<div class=\"line\"><a id=\"l00390\" name=\"l00390\"></a><span class=\"lineno\">  390</span> </div>\n+<div class=\"line\"><a id=\"l00391\" name=\"l00391\"></a><span class=\"lineno\">  391</span>    <span class=\"keywordtype\">void</span> setMaxValence(<span class=\"keywordtype\">int</span> maxValence);</div>\n+<div class=\"line\"><a id=\"l00392\" name=\"l00392\"></a><span class=\"lineno\">  392</span> </div>\n+<div class=\"line\"><a id=\"l00393\" name=\"l00393\"></a><span class=\"lineno\">  393</span>    <span class=\"comment\">//  Modifiers to populate the relations for each component:</span></div>\n+<div class=\"line\"><a id=\"l00394\" name=\"l00394\"></a><span class=\"lineno\">  394</span>    <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a> getFaceVertices(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex);</div>\n+<div class=\"line\"><a id=\"l00395\" name=\"l00395\"></a><span class=\"lineno\">  395</span>    <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a> getFaceEdges(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex);</div>\n+<div class=\"line\"><a id=\"l00396\" name=\"l00396\"></a><span class=\"lineno\">  396</span>    <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a> getEdgeVertices(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> edgeIndex);</div>\n+<div class=\"line\"><a id=\"l00397\" name=\"l00397\"></a><span class=\"lineno\">  397</span>    <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a> getEdgeFaces(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> edgeIndex);</div>\n+<div class=\"line\"><a id=\"l00398\" name=\"l00398\"></a><span class=\"lineno\">  398</span>    <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a> getVertexFaces(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex);</div>\n+<div class=\"line\"><a id=\"l00399\" name=\"l00399\"></a><span class=\"lineno\">  399</span>    <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a> getVertexEdges(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex);</div>\n+<div class=\"line\"><a id=\"l00400\" name=\"l00400\"></a><span class=\"lineno\">  400</span> </div>\n+<div class=\"line\"><a id=\"l00401\" name=\"l00401\"></a><span class=\"lineno\">  401</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a1e004d5c1e30ef69719d4083afe0f4ce\">LocalIndexArray</a> getEdgeFaceLocalIndices(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> edgeIndex);</div>\n+<div class=\"line\"><a id=\"l00402\" name=\"l00402\"></a><span class=\"lineno\">  402</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a1e004d5c1e30ef69719d4083afe0f4ce\">LocalIndexArray</a> getVertexFaceLocalIndices(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex);</div>\n+<div class=\"line\"><a id=\"l00403\" name=\"l00403\"></a><span class=\"lineno\">  403</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a1e004d5c1e30ef69719d4083afe0f4ce\">LocalIndexArray</a> getVertexEdgeLocalIndices(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex);</div>\n+<div class=\"line\"><a id=\"l00404\" name=\"l00404\"></a><span class=\"lineno\">  404</span> </div>\n+<div class=\"line\"><a id=\"l00405\" name=\"l00405\"></a><span class=\"lineno\">  405</span>    <span class=\"comment\">//  Replace these with access to sharpness buffers/arrays rather than elements:</span></div>\n+<div class=\"line\"><a id=\"l00406\" name=\"l00406\"></a><span class=\"lineno\">  406</span>    <span class=\"keywordtype\">float</span>&amp; getEdgeSharpness(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> edgeIndex);</div>\n+<div class=\"line\"><a id=\"l00407\" name=\"l00407\"></a><span class=\"lineno\">  407</span>    <span class=\"keywordtype\">float</span>&amp; getVertexSharpness(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex);</div>\n+<div class=\"line\"><a id=\"l00408\" name=\"l00408\"></a><span class=\"lineno\">  408</span> </div>\n+<div class=\"line\"><a id=\"l00409\" name=\"l00409\"></a><span class=\"lineno\">  409</span>    <span class=\"comment\">//  Create, destroy and populate face-varying channels:</span></div>\n+<div class=\"line\"><a id=\"l00410\" name=\"l00410\"></a><span class=\"lineno\">  410</span>    <span class=\"keywordtype\">int</span>  createFVarChannel(<span class=\"keywordtype\">int</span> fvarValueCount, Sdc::Options <span class=\"keyword\">const</span>&amp; options);</div>\n+<div class=\"line\"><a id=\"l00411\" name=\"l00411\"></a><span class=\"lineno\">  411</span>    <span class=\"keywordtype\">void</span> destroyFVarChannel(<span class=\"keywordtype\">int</span> channel);</div>\n+<div class=\"line\"><a id=\"l00412\" name=\"l00412\"></a><span class=\"lineno\">  412</span> </div>\n+<div class=\"line\"><a id=\"l00413\" name=\"l00413\"></a><span class=\"lineno\">  413</span>    <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a> getFaceFVarValues(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex, <span class=\"keywordtype\">int</span> channel);</div>\n+<div class=\"line\"><a id=\"l00414\" name=\"l00414\"></a><span class=\"lineno\">  414</span> </div>\n+<div class=\"line\"><a id=\"l00415\" name=\"l00415\"></a><span class=\"lineno\">  415</span>    <span class=\"keywordtype\">void</span> completeFVarChannelTopology(<span class=\"keywordtype\">int</span> channel, <span class=\"keywordtype\">int</span> regBoundaryValence);</div>\n+<div class=\"line\"><a id=\"l00416\" name=\"l00416\"></a><span class=\"lineno\">  416</span> </div>\n+<div class=\"line\"><a id=\"l00417\" name=\"l00417\"></a><span class=\"lineno\">  417</span>    <span class=\"comment\">//  Counts and offsets for all relation types:</span></div>\n+<div class=\"line\"><a id=\"l00418\" name=\"l00418\"></a><span class=\"lineno\">  418</span>    <span class=\"comment\">//      - these may be unwarranted if we let Refinement access members directly...</span></div>\n+<div class=\"line\"><a id=\"l00419\" name=\"l00419\"></a><span class=\"lineno\">  419</span>    <span class=\"keywordtype\">int</span> getNumFaceVertices(     <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _faceVertCountsAndOffsets[2*faceIndex]; }</div>\n+<div class=\"line\"><a id=\"l00420\" name=\"l00420\"></a><span class=\"lineno\">  420</span>    <span class=\"keywordtype\">int</span> getOffsetOfFaceVertices(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _faceVertCountsAndOffsets[2*faceIndex + 1]; }</div>\n+<div class=\"line\"><a id=\"l00421\" name=\"l00421\"></a><span class=\"lineno\">  421</span> </div>\n+<div class=\"line\"><a id=\"l00422\" name=\"l00422\"></a><span class=\"lineno\">  422</span>    <span class=\"keywordtype\">int</span> getNumFaceEdges(     <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> getNumFaceVertices(faceIndex); }</div>\n+<div class=\"line\"><a id=\"l00423\" name=\"l00423\"></a><span class=\"lineno\">  423</span>    <span class=\"keywordtype\">int</span> getOffsetOfFaceEdges(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> getOffsetOfFaceVertices(faceIndex); }</div>\n+<div class=\"line\"><a id=\"l00424\" name=\"l00424\"></a><span class=\"lineno\">  424</span> </div>\n+<div class=\"line\"><a id=\"l00425\" name=\"l00425\"></a><span class=\"lineno\">  425</span>    <span class=\"keywordtype\">int</span> getNumEdgeVertices(     <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> )<span class=\"keyword\">          const </span>{ <span class=\"keywordflow\">return</span> 2; }</div>\n+<div class=\"line\"><a id=\"l00426\" name=\"l00426\"></a><span class=\"lineno\">  426</span>    <span class=\"keywordtype\">int</span> getOffsetOfEdgeVertices(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> edgeIndex)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> 2 * edgeIndex; }</div>\n+<div class=\"line\"><a id=\"l00427\" name=\"l00427\"></a><span class=\"lineno\">  427</span> </div>\n+<div class=\"line\"><a id=\"l00428\" name=\"l00428\"></a><span class=\"lineno\">  428</span>    <span class=\"keywordtype\">int</span> getNumEdgeFaces(     <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> edgeIndex)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _edgeFaceCountsAndOffsets[2*edgeIndex]; }</div>\n+<div class=\"line\"><a id=\"l00429\" name=\"l00429\"></a><span class=\"lineno\">  429</span>    <span class=\"keywordtype\">int</span> getOffsetOfEdgeFaces(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> edgeIndex)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _edgeFaceCountsAndOffsets[2*edgeIndex + 1]; }</div>\n+<div class=\"line\"><a id=\"l00430\" name=\"l00430\"></a><span class=\"lineno\">  430</span> </div>\n+<div class=\"line\"><a id=\"l00431\" name=\"l00431\"></a><span class=\"lineno\">  431</span>    <span class=\"keywordtype\">int</span> getNumVertexFaces(     <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _vertFaceCountsAndOffsets[2*vertIndex]; }</div>\n+<div class=\"line\"><a id=\"l00432\" name=\"l00432\"></a><span class=\"lineno\">  432</span>    <span class=\"keywordtype\">int</span> getOffsetOfVertexFaces(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _vertFaceCountsAndOffsets[2*vertIndex + 1]; }</div>\n+<div class=\"line\"><a id=\"l00433\" name=\"l00433\"></a><span class=\"lineno\">  433</span> </div>\n+<div class=\"line\"><a id=\"l00434\" name=\"l00434\"></a><span class=\"lineno\">  434</span>    <span class=\"keywordtype\">int</span> getNumVertexEdges(     <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _vertEdgeCountsAndOffsets[2*vertIndex]; }</div>\n+<div class=\"line\"><a id=\"l00435\" name=\"l00435\"></a><span class=\"lineno\">  435</span>    <span class=\"keywordtype\">int</span> getOffsetOfVertexEdges(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _vertEdgeCountsAndOffsets[2*vertIndex + 1]; }</div>\n+<div class=\"line\"><a id=\"l00436\" name=\"l00436\"></a><span class=\"lineno\">  436</span> </div>\n+<div class=\"line\"><a id=\"l00437\" name=\"l00437\"></a><span class=\"lineno\">  437</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a> getFaceVertices() <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00438\" name=\"l00438\"></a><span class=\"lineno\">  438</span> </div>\n+<div class=\"line\"><a id=\"l00439\" name=\"l00439\"></a><span class=\"lineno\">  439</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00440\" name=\"l00440\"></a><span class=\"lineno\">  440</span>    <span class=\"comment\">//  Note that for some relations, the size of the relations for a child component</span></div>\n+<div class=\"line\"><a id=\"l00441\" name=\"l00441\"></a><span class=\"lineno\">  441</span>    <span class=\"comment\">//  can vary radically from its parent due to the sparsity of the refinement.  So</span></div>\n+<div class=\"line\"><a id=\"l00442\" name=\"l00442\"></a><span class=\"lineno\">  442</span>    <span class=\"comment\">//  in these cases a few additional utilities are provided to help define the set</span></div>\n+<div class=\"line\"><a id=\"l00443\" name=\"l00443\"></a><span class=\"lineno\">  443</span>    <span class=\"comment\">//  of incident components.  Assuming adequate memory has been allocated, the</span></div>\n+<div class=\"line\"><a id=\"l00444\" name=\"l00444\"></a><span class=\"lineno\">  444</span>    <span class=\"comment\">//  &quot;resize&quot; methods here initialize the set of incident components by setting</span></div>\n+<div class=\"line\"><a id=\"l00445\" name=\"l00445\"></a><span class=\"lineno\">  445</span>    <span class=\"comment\">//  both the size and the appropriate offset, while &quot;trim&quot; is use to quickly lower</span></div>\n+<div class=\"line\"><a id=\"l00446\" name=\"l00446\"></a><span class=\"lineno\">  446</span>    <span class=\"comment\">//  the size from an upper bound and nothing else.</span></div>\n+<div class=\"line\"><a id=\"l00447\" name=\"l00447\"></a><span class=\"lineno\">  447</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00448\" name=\"l00448\"></a><span class=\"lineno\">  448</span>    <span class=\"keywordtype\">void</span> resizeFaceVertices(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> FaceIndex, <span class=\"keywordtype\">int</span> count);</div>\n+<div class=\"line\"><a id=\"l00449\" name=\"l00449\"></a><span class=\"lineno\">  449</span> </div>\n+<div class=\"line\"><a id=\"l00450\" name=\"l00450\"></a><span class=\"lineno\">  450</span>    <span class=\"keywordtype\">void</span> resizeEdgeFaces(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> edgeIndex, <span class=\"keywordtype\">int</span> count);</div>\n+<div class=\"line\"><a id=\"l00451\" name=\"l00451\"></a><span class=\"lineno\">  451</span>    <span class=\"keywordtype\">void</span> trimEdgeFaces(  <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> edgeIndex, <span class=\"keywordtype\">int</span> count);</div>\n+<div class=\"line\"><a id=\"l00452\" name=\"l00452\"></a><span class=\"lineno\">  452</span> </div>\n+<div class=\"line\"><a id=\"l00453\" name=\"l00453\"></a><span class=\"lineno\">  453</span>    <span class=\"keywordtype\">void</span> resizeVertexFaces(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex, <span class=\"keywordtype\">int</span> count);</div>\n+<div class=\"line\"><a id=\"l00454\" name=\"l00454\"></a><span class=\"lineno\">  454</span>    <span class=\"keywordtype\">void</span> trimVertexFaces(  <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex, <span class=\"keywordtype\">int</span> count);</div>\n+<div class=\"line\"><a id=\"l00455\" name=\"l00455\"></a><span class=\"lineno\">  455</span> </div>\n+<div class=\"line\"><a id=\"l00456\" name=\"l00456\"></a><span class=\"lineno\">  456</span>    <span class=\"keywordtype\">void</span> resizeVertexEdges(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex, <span class=\"keywordtype\">int</span> count);</div>\n+<div class=\"line\"><a id=\"l00457\" name=\"l00457\"></a><span class=\"lineno\">  457</span>    <span class=\"keywordtype\">void</span> trimVertexEdges(  <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex, <span class=\"keywordtype\">int</span> count);</div>\n+<div class=\"line\"><a id=\"l00458\" name=\"l00458\"></a><span class=\"lineno\">  458</span> </div>\n+<div class=\"line\"><a id=\"l00459\" name=\"l00459\"></a><span class=\"lineno\">  459</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00460\" name=\"l00460\"></a><span class=\"lineno\">  460</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00461\" name=\"l00461\"></a><span class=\"lineno\">  461</span>    <span class=\"comment\">//  Initial plans were to have a few specific classes properly construct the</span></div>\n+<div class=\"line\"><a id=\"l00462\" name=\"l00462\"></a><span class=\"lineno\">  462</span>    <span class=\"comment\">//  topology from scratch, e.g. the Refinement class and a Factory class for</span></div>\n+<div class=\"line\"><a id=\"l00463\" name=\"l00463\"></a><span class=\"lineno\">  463</span>    <span class=\"comment\">//  the base level, by populating all topological relations.  The need to have</span></div>\n+<div class=\"line\"><a id=\"l00464\" name=\"l00464\"></a><span class=\"lineno\">  464</span>    <span class=\"comment\">//  a class construct full topology given only a simple face-vertex list, made</span></div>\n+<div class=\"line\"><a id=\"l00465\" name=\"l00465\"></a><span class=\"lineno\">  465</span>    <span class=\"comment\">//  it necessary to write code to define and orient all relations -- and most</span></div>\n+<div class=\"line\"><a id=\"l00466\" name=\"l00466\"></a><span class=\"lineno\">  466</span>    <span class=\"comment\">//  of that seemed best placed here.</span></div>\n+<div class=\"line\"><a id=\"l00467\" name=\"l00467\"></a><span class=\"lineno\">  467</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00468\" name=\"l00468\"></a><span class=\"lineno\">  468</span>    <span class=\"keywordtype\">bool</span> completeTopologyFromFaceVertices();</div>\n+<div class=\"line\"><a id=\"l00469\" name=\"l00469\"></a><span class=\"lineno\">  469</span>    <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> findEdge(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> v0, <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> v1, <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a> v0Edges) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00470\" name=\"l00470\"></a><span class=\"lineno\">  470</span> </div>\n+<div class=\"line\"><a id=\"l00471\" name=\"l00471\"></a><span class=\"lineno\">  471</span>    <span class=\"comment\">//  Methods supporting the above:</span></div>\n+<div class=\"line\"><a id=\"l00472\" name=\"l00472\"></a><span class=\"lineno\">  472</span>    <span class=\"keywordtype\">void</span> orientIncidentComponents();</div>\n+<div class=\"line\"><a id=\"l00473\" name=\"l00473\"></a><span class=\"lineno\">  473</span>    <span class=\"keywordtype\">bool</span> orderVertexFacesAndEdges(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vIndex, <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a>* vFaces, <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a>* vEdges) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00474\" name=\"l00474\"></a><span class=\"lineno\">  474</span>    <span class=\"keywordtype\">bool</span> orderVertexFacesAndEdges(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vIndex);</div>\n+<div class=\"line\"><a id=\"l00475\" name=\"l00475\"></a><span class=\"lineno\">  475</span>    <span class=\"keywordtype\">void</span> populateLocalIndices();</div>\n+<div class=\"line\"><a id=\"l00476\" name=\"l00476\"></a><span class=\"lineno\">  476</span> </div>\n+<div class=\"line\"><a id=\"l00477\" name=\"l00477\"></a><span class=\"lineno\">  477</span>    <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a> shareFaceVertCountsAndOffsets() <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00478\" name=\"l00478\"></a><span class=\"lineno\">  478</span> </div>\n+<div class=\"line\"><a id=\"l00479\" name=\"l00479\"></a><span class=\"lineno\">  479</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00480\" name=\"l00480\"></a><span class=\"lineno\">  480</span>    <span class=\"comment\">//  Refinement classes (including all subclasses) build a Level:</span></div>\n+<div class=\"line\"><a id=\"l00481\" name=\"l00481\"></a><span class=\"lineno\">  481</span>    <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span>Refinement;</div>\n+<div class=\"line\"><a id=\"l00482\" name=\"l00482\"></a><span class=\"lineno\">  482</span>    <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span>TriRefinement;</div>\n+<div class=\"line\"><a id=\"l00483\" name=\"l00483\"></a><span class=\"lineno\">  483</span>    <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span>QuadRefinement;</div>\n+<div class=\"line\"><a id=\"l00484\" name=\"l00484\"></a><span class=\"lineno\">  484</span> </div>\n+<div class=\"line\"><a id=\"l00485\" name=\"l00485\"></a><span class=\"lineno\">  485</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00486\" name=\"l00486\"></a><span class=\"lineno\">  486</span>    <span class=\"comment\">//  A Level is independent of subdivision scheme or options.  While it may have been</span></div>\n+<div class=\"line\"><a id=\"l00487\" name=\"l00487\"></a><span class=\"lineno\">  487</span>    <span class=\"comment\">//  affected by them in its construction, they are not associated with it -- a Level</span></div>\n+<div class=\"line\"><a id=\"l00488\" name=\"l00488\"></a><span class=\"lineno\">  488</span>    <span class=\"comment\">//  is pure topology and any subdivision parameters are external.</span></div>\n+<div class=\"line\"><a id=\"l00489\" name=\"l00489\"></a><span class=\"lineno\">  489</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00490\" name=\"l00490\"></a><span class=\"lineno\">  490</span> </div>\n+<div class=\"line\"><a id=\"l00491\" name=\"l00491\"></a><span class=\"lineno\">  491</span>    <span class=\"comment\">//  Simple members for inventory, etc.</span></div>\n+<div class=\"line\"><a id=\"l00492\" name=\"l00492\"></a><span class=\"lineno\">  492</span>    <span class=\"keywordtype\">int</span> _faceCount;</div>\n+<div class=\"line\"><a id=\"l00493\" name=\"l00493\"></a><span class=\"lineno\">  493</span>    <span class=\"keywordtype\">int</span> _edgeCount;</div>\n+<div class=\"line\"><a id=\"l00494\" name=\"l00494\"></a><span class=\"lineno\">  494</span>    <span class=\"keywordtype\">int</span> _vertCount;</div>\n+<div class=\"line\"><a id=\"l00495\" name=\"l00495\"></a><span class=\"lineno\">  495</span> </div>\n+<div class=\"line\"><a id=\"l00496\" name=\"l00496\"></a><span class=\"lineno\">  496</span>    <span class=\"comment\">//  The &quot;depth&quot; member is clearly useful in both the topological splitting and the</span></div>\n+<div class=\"line\"><a id=\"l00497\" name=\"l00497\"></a><span class=\"lineno\">  497</span>    <span class=\"comment\">//  stencil queries, but arguably it ties the Level to a hierarchy which counters</span></div>\n+<div class=\"line\"><a id=\"l00498\" name=\"l00498\"></a><span class=\"lineno\">  498</span>    <span class=\"comment\">//  the idea of it being independent.</span></div>\n+<div class=\"line\"><a id=\"l00499\" name=\"l00499\"></a><span class=\"lineno\">  499</span>    <span class=\"keywordtype\">int</span> _depth;</div>\n+<div class=\"line\"><a id=\"l00500\" name=\"l00500\"></a><span class=\"lineno\">  500</span> </div>\n+<div class=\"line\"><a id=\"l00501\" name=\"l00501\"></a><span class=\"lineno\">  501</span>    <span class=\"comment\">//  Maxima to help clients manage sizing of data buffers.  Given &quot;max valence&quot;,</span></div>\n+<div class=\"line\"><a id=\"l00502\" name=\"l00502\"></a><span class=\"lineno\">  502</span>    <span class=\"comment\">//  the &quot;max edge faces&quot; is strictly redundant as it will always be less, but </span></div>\n+<div class=\"line\"><a id=\"l00503\" name=\"l00503\"></a><span class=\"lineno\">  503</span>    <span class=\"comment\">//  since it will typically be so much less (i.e. 2) it is kept for now.</span></div>\n+<div class=\"line\"><a id=\"l00504\" name=\"l00504\"></a><span class=\"lineno\">  504</span>    <span class=\"keywordtype\">int</span> _maxEdgeFaces;</div>\n+<div class=\"line\"><a id=\"l00505\" name=\"l00505\"></a><span class=\"lineno\">  505</span>    <span class=\"keywordtype\">int</span> _maxValence;</div>\n+<div class=\"line\"><a id=\"l00506\" name=\"l00506\"></a><span class=\"lineno\">  506</span> </div>\n+<div class=\"line\"><a id=\"l00507\" name=\"l00507\"></a><span class=\"lineno\">  507</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00508\" name=\"l00508\"></a><span class=\"lineno\">  508</span>    <span class=\"comment\">//  Topology vectors:</span></div>\n+<div class=\"line\"><a id=\"l00509\" name=\"l00509\"></a><span class=\"lineno\">  509</span>    <span class=\"comment\">//      Note that of all of these, only data for the face-edge relation is not</span></div>\n+<div class=\"line\"><a id=\"l00510\" name=\"l00510\"></a><span class=\"lineno\">  510</span>    <span class=\"comment\">//      stored in the osd::FarTables in any form.  The FarTable vectors combine</span></div>\n+<div class=\"line\"><a id=\"l00511\" name=\"l00511\"></a><span class=\"lineno\">  511</span>    <span class=\"comment\">//      the edge-vert and edge-face relations.  The eventual goal is that this</span></div>\n+<div class=\"line\"><a id=\"l00512\" name=\"l00512\"></a><span class=\"lineno\">  512</span>    <span class=\"comment\">//      data be part of the osd::Far classes and be a superset of the FarTable</span></div>\n+<div class=\"line\"><a id=\"l00513\" name=\"l00513\"></a><span class=\"lineno\">  513</span>    <span class=\"comment\">//      vectors, i.e. no data duplication or conversion.  The fact that FarTable</span></div>\n+<div class=\"line\"><a id=\"l00514\" name=\"l00514\"></a><span class=\"lineno\">  514</span>    <span class=\"comment\">//      already stores 5 of the 6 possible relations should make the topology</span></div>\n+<div class=\"line\"><a id=\"l00515\" name=\"l00515\"></a><span class=\"lineno\">  515</span>    <span class=\"comment\">//      storage as a whole a non-issue.</span></div>\n+<div class=\"line\"><a id=\"l00516\" name=\"l00516\"></a><span class=\"lineno\">  516</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00517\" name=\"l00517\"></a><span class=\"lineno\">  517</span>    <span class=\"comment\">//      The vert-face-child and vert-edge-child indices are also arguably not</span></div>\n+<div class=\"line\"><a id=\"l00518\" name=\"l00518\"></a><span class=\"lineno\">  518</span>    <span class=\"comment\">//      a topology relation but more one for parent/child relations.  But it is</span></div>\n+<div class=\"line\"><a id=\"l00519\" name=\"l00519\"></a><span class=\"lineno\">  519</span>    <span class=\"comment\">//      a topological relationship, and if named differently would not likely</span></div>\n+<div class=\"line\"><a id=\"l00520\" name=\"l00520\"></a><span class=\"lineno\">  520</span>    <span class=\"comment\">//      raise this.  It has been named with &quot;child&quot; in the name as it does play</span></div>\n+<div class=\"line\"><a id=\"l00521\" name=\"l00521\"></a><span class=\"lineno\">  521</span>    <span class=\"comment\">//      a more significant role during subdivision in mapping between parent</span></div>\n+<div class=\"line\"><a id=\"l00522\" name=\"l00522\"></a><span class=\"lineno\">  522</span>    <span class=\"comment\">//      and child components, and so has been named to reflect that more clearly.</span></div>\n+<div class=\"line\"><a id=\"l00523\" name=\"l00523\"></a><span class=\"lineno\">  523</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00524\" name=\"l00524\"></a><span class=\"lineno\">  524</span> </div>\n+<div class=\"line\"><a id=\"l00525\" name=\"l00525\"></a><span class=\"lineno\">  525</span>    <span class=\"comment\">//  Per-face:</span></div>\n+<div class=\"line\"><a id=\"l00526\" name=\"l00526\"></a><span class=\"lineno\">  526</span>    std::vector&lt;Index&gt; _faceVertCountsAndOffsets;  <span class=\"comment\">// 2 per face, redundant after level 0</span></div>\n+<div class=\"line\"><a id=\"l00527\" name=\"l00527\"></a><span class=\"lineno\">  527</span>    std::vector&lt;Index&gt; _faceVertIndices;           <span class=\"comment\">// 3 or 4 per face, variable at level 0</span></div>\n+<div class=\"line\"><a id=\"l00528\" name=\"l00528\"></a><span class=\"lineno\">  528</span>    std::vector&lt;Index&gt; _faceEdgeIndices;           <span class=\"comment\">// matches face-vert indices</span></div>\n+<div class=\"line\"><a id=\"l00529\" name=\"l00529\"></a><span class=\"lineno\">  529</span>    std::vector&lt;FTag&gt;  _faceTags;                  <span class=\"comment\">// 1 per face:  includes &quot;hole&quot; tag</span></div>\n+<div class=\"line\"><a id=\"l00530\" name=\"l00530\"></a><span class=\"lineno\">  530</span> </div>\n+<div class=\"line\"><a id=\"l00531\" name=\"l00531\"></a><span class=\"lineno\">  531</span>    <span class=\"comment\">//  Per-edge:</span></div>\n+<div class=\"line\"><a id=\"l00532\" name=\"l00532\"></a><span class=\"lineno\">  532</span>    std::vector&lt;Index&gt;      _edgeVertIndices;           <span class=\"comment\">// 2 per edge</span></div>\n+<div class=\"line\"><a id=\"l00533\" name=\"l00533\"></a><span class=\"lineno\">  533</span>    std::vector&lt;Index&gt;      _edgeFaceCountsAndOffsets;  <span class=\"comment\">// 2 per edge</span></div>\n+<div class=\"line\"><a id=\"l00534\" name=\"l00534\"></a><span class=\"lineno\">  534</span>    std::vector&lt;Index&gt;      _edgeFaceIndices;           <span class=\"comment\">// varies with faces per edge</span></div>\n+<div class=\"line\"><a id=\"l00535\" name=\"l00535\"></a><span class=\"lineno\">  535</span>    std::vector&lt;LocalIndex&gt; _edgeFaceLocalIndices;      <span class=\"comment\">// varies with faces per edge</span></div>\n+<div class=\"line\"><a id=\"l00536\" name=\"l00536\"></a><span class=\"lineno\">  536</span> </div>\n+<div class=\"line\"><a id=\"l00537\" name=\"l00537\"></a><span class=\"lineno\">  537</span>    std::vector&lt;float&gt;      _edgeSharpness;             <span class=\"comment\">// 1 per edge</span></div>\n+<div class=\"line\"><a id=\"l00538\" name=\"l00538\"></a><span class=\"lineno\">  538</span>    std::vector&lt;ETag&gt;       _edgeTags;                  <span class=\"comment\">// 1 per edge:  manifold, boundary, etc.</span></div>\n+<div class=\"line\"><a id=\"l00539\" name=\"l00539\"></a><span class=\"lineno\">  539</span> </div>\n+<div class=\"line\"><a id=\"l00540\" name=\"l00540\"></a><span class=\"lineno\">  540</span>    <span class=\"comment\">//  Per-vertex:</span></div>\n+<div class=\"line\"><a id=\"l00541\" name=\"l00541\"></a><span class=\"lineno\">  541</span>    std::vector&lt;Index&gt;      _vertFaceCountsAndOffsets;  <span class=\"comment\">// 2 per vertex</span></div>\n+<div class=\"line\"><a id=\"l00542\" name=\"l00542\"></a><span class=\"lineno\">  542</span>    std::vector&lt;Index&gt;      _vertFaceIndices;           <span class=\"comment\">// varies with valence</span></div>\n+<div class=\"line\"><a id=\"l00543\" name=\"l00543\"></a><span class=\"lineno\">  543</span>    std::vector&lt;LocalIndex&gt; _vertFaceLocalIndices;      <span class=\"comment\">// varies with valence, 8-bit for now</span></div>\n+<div class=\"line\"><a id=\"l00544\" name=\"l00544\"></a><span class=\"lineno\">  544</span> </div>\n+<div class=\"line\"><a id=\"l00545\" name=\"l00545\"></a><span class=\"lineno\">  545</span>    std::vector&lt;Index&gt;      _vertEdgeCountsAndOffsets;  <span class=\"comment\">// 2 per vertex</span></div>\n+<div class=\"line\"><a id=\"l00546\" name=\"l00546\"></a><span class=\"lineno\">  546</span>    std::vector&lt;Index&gt;      _vertEdgeIndices;           <span class=\"comment\">// varies with valence</span></div>\n+<div class=\"line\"><a id=\"l00547\" name=\"l00547\"></a><span class=\"lineno\">  547</span>    std::vector&lt;LocalIndex&gt; _vertEdgeLocalIndices;      <span class=\"comment\">// varies with valence, 8-bit for now</span></div>\n+<div class=\"line\"><a id=\"l00548\" name=\"l00548\"></a><span class=\"lineno\">  548</span> </div>\n+<div class=\"line\"><a id=\"l00549\" name=\"l00549\"></a><span class=\"lineno\">  549</span>    std::vector&lt;float&gt;      _vertSharpness;             <span class=\"comment\">// 1 per vertex</span></div>\n+<div class=\"line\"><a id=\"l00550\" name=\"l00550\"></a><span class=\"lineno\">  550</span>    std::vector&lt;VTag&gt;       _vertTags;                  <span class=\"comment\">// 1 per vertex:  manifold, Sdc::Rule, etc.</span></div>\n+<div class=\"line\"><a id=\"l00551\" name=\"l00551\"></a><span class=\"lineno\">  551</span> </div>\n+<div class=\"line\"><a id=\"l00552\" name=\"l00552\"></a><span class=\"lineno\">  552</span>    <span class=\"comment\">//  Face-varying channels:</span></div>\n+<div class=\"line\"><a id=\"l00553\" name=\"l00553\"></a><span class=\"lineno\">  553</span>    std::vector&lt;FVarLevel*&gt; _fvarChannels;</div>\n+<div class=\"line\"><a id=\"l00554\" name=\"l00554\"></a><span class=\"lineno\">  554</span>};</div>\n+<div class=\"line\"><a id=\"l00555\" name=\"l00555\"></a><span class=\"lineno\">  555</span> </div>\n+<div class=\"line\"><a id=\"l00556\" name=\"l00556\"></a><span class=\"lineno\">  556</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00557\" name=\"l00557\"></a><span class=\"lineno\">  557</span><span class=\"comment\">//  Access/modify the vertices incident a given face:</span></div>\n+<div class=\"line\"><a id=\"l00558\" name=\"l00558\"></a><span class=\"lineno\">  558</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00559\" name=\"l00559\"></a><span class=\"lineno\">  559</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a></div>\n+<div class=\"line\"><a id=\"l00560\" name=\"l00560\"></a><span class=\"lineno\">  560</span>Level::getFaceVertices(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00561\" name=\"l00561\"></a><span class=\"lineno\">  561</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a>(&amp;_faceVertIndices[_faceVertCountsAndOffsets[faceIndex*2+1]],</div>\n+<div class=\"line\"><a id=\"l00562\" name=\"l00562\"></a><span class=\"lineno\">  562</span>                          _faceVertCountsAndOffsets[faceIndex*2]);</div>\n+<div class=\"line\"><a id=\"l00563\" name=\"l00563\"></a><span class=\"lineno\">  563</span>}</div>\n+<div class=\"line\"><a id=\"l00564\" name=\"l00564\"></a><span class=\"lineno\">  564</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a></div>\n+<div class=\"line\"><a id=\"l00565\" name=\"l00565\"></a><span class=\"lineno\">  565</span>Level::getFaceVertices(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex) {</div>\n+<div class=\"line\"><a id=\"l00566\" name=\"l00566\"></a><span class=\"lineno\">  566</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a>(&amp;_faceVertIndices[_faceVertCountsAndOffsets[faceIndex*2+1]],</div>\n+<div class=\"line\"><a id=\"l00567\" name=\"l00567\"></a><span class=\"lineno\">  567</span>                          _faceVertCountsAndOffsets[faceIndex*2]);</div>\n+<div class=\"line\"><a id=\"l00568\" name=\"l00568\"></a><span class=\"lineno\">  568</span>}</div>\n+<div class=\"line\"><a id=\"l00569\" name=\"l00569\"></a><span class=\"lineno\">  569</span> </div>\n+<div class=\"line\"><a id=\"l00570\" name=\"l00570\"></a><span class=\"lineno\">  570</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"line\"><a id=\"l00571\" name=\"l00571\"></a><span class=\"lineno\">  571</span>Level::resizeFaceVertices(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex, <span class=\"keywordtype\">int</span> count) {</div>\n+<div class=\"line\"><a id=\"l00572\" name=\"l00572\"></a><span class=\"lineno\">  572</span> </div>\n+<div class=\"line\"><a id=\"l00573\" name=\"l00573\"></a><span class=\"lineno\">  573</span>    <span class=\"keywordtype\">int</span>* countOffsetPair = &amp;_faceVertCountsAndOffsets[faceIndex*2];</div>\n+<div class=\"line\"><a id=\"l00574\" name=\"l00574\"></a><span class=\"lineno\">  574</span> </div>\n+<div class=\"line\"><a id=\"l00575\" name=\"l00575\"></a><span class=\"lineno\">  575</span>    countOffsetPair[0] = count;</div>\n+<div class=\"line\"><a id=\"l00576\" name=\"l00576\"></a><span class=\"lineno\">  576</span>    countOffsetPair[1] = (faceIndex == 0) ? 0 : (countOffsetPair[-2] + countOffsetPair[-1]);</div>\n+<div class=\"line\"><a id=\"l00577\" name=\"l00577\"></a><span class=\"lineno\">  577</span> </div>\n+<div class=\"line\"><a id=\"l00578\" name=\"l00578\"></a><span class=\"lineno\">  578</span>    _maxValence = std::max(_maxValence, count);</div>\n+<div class=\"line\"><a id=\"l00579\" name=\"l00579\"></a><span class=\"lineno\">  579</span>}</div>\n+<div class=\"line\"><a id=\"l00580\" name=\"l00580\"></a><span class=\"lineno\">  580</span> </div>\n+<div class=\"line\"><a id=\"l00581\" name=\"l00581\"></a><span class=\"lineno\">  581</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a></div>\n+<div class=\"line\"><a id=\"l00582\" name=\"l00582\"></a><span class=\"lineno\">  582</span>Level::getFaceVertices()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00583\" name=\"l00583\"></a><span class=\"lineno\">  583</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a>(&amp;_faceVertIndices[0], (<span class=\"keywordtype\">int</span>)_faceVertIndices.size());</div>\n+<div class=\"line\"><a id=\"l00584\" name=\"l00584\"></a><span class=\"lineno\">  584</span>}</div>\n+<div class=\"line\"><a id=\"l00585\" name=\"l00585\"></a><span class=\"lineno\">  585</span> </div>\n+<div class=\"line\"><a id=\"l00586\" name=\"l00586\"></a><span class=\"lineno\">  586</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00587\" name=\"l00587\"></a><span class=\"lineno\">  587</span><span class=\"comment\">//  Access/modify the edges incident a given face:</span></div>\n+<div class=\"line\"><a id=\"l00588\" name=\"l00588\"></a><span class=\"lineno\">  588</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00589\" name=\"l00589\"></a><span class=\"lineno\">  589</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a></div>\n+<div class=\"line\"><a id=\"l00590\" name=\"l00590\"></a><span class=\"lineno\">  590</span>Level::getFaceEdges(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00591\" name=\"l00591\"></a><span class=\"lineno\">  591</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a>(&amp;_faceEdgeIndices[_faceVertCountsAndOffsets[faceIndex*2+1]],</div>\n+<div class=\"line\"><a id=\"l00592\" name=\"l00592\"></a><span class=\"lineno\">  592</span>                          _faceVertCountsAndOffsets[faceIndex*2]);</div>\n+<div class=\"line\"><a id=\"l00593\" name=\"l00593\"></a><span class=\"lineno\">  593</span>}</div>\n+<div class=\"line\"><a id=\"l00594\" name=\"l00594\"></a><span class=\"lineno\">  594</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a></div>\n+<div class=\"line\"><a id=\"l00595\" name=\"l00595\"></a><span class=\"lineno\">  595</span>Level::getFaceEdges(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex) {</div>\n+<div class=\"line\"><a id=\"l00596\" name=\"l00596\"></a><span class=\"lineno\">  596</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a>(&amp;_faceEdgeIndices[_faceVertCountsAndOffsets[faceIndex*2+1]],</div>\n+<div class=\"line\"><a id=\"l00597\" name=\"l00597\"></a><span class=\"lineno\">  597</span>                          _faceVertCountsAndOffsets[faceIndex*2]);</div>\n+<div class=\"line\"><a id=\"l00598\" name=\"l00598\"></a><span class=\"lineno\">  598</span>}</div>\n+<div class=\"line\"><a id=\"l00599\" name=\"l00599\"></a><span class=\"lineno\">  599</span> </div>\n+<div class=\"line\"><a id=\"l00600\" name=\"l00600\"></a><span class=\"lineno\">  600</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00601\" name=\"l00601\"></a><span class=\"lineno\">  601</span><span class=\"comment\">//  Access/modify the faces incident a given vertex:</span></div>\n+<div class=\"line\"><a id=\"l00602\" name=\"l00602\"></a><span class=\"lineno\">  602</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00603\" name=\"l00603\"></a><span class=\"lineno\">  603</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a></div>\n+<div class=\"line\"><a id=\"l00604\" name=\"l00604\"></a><span class=\"lineno\">  604</span>Level::getVertexFaces(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00605\" name=\"l00605\"></a><span class=\"lineno\">  605</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a>( (&amp;_vertFaceIndices[0]) + _vertFaceCountsAndOffsets[vertIndex*2+1],</div>\n+<div class=\"line\"><a id=\"l00606\" name=\"l00606\"></a><span class=\"lineno\">  606</span>                          _vertFaceCountsAndOffsets[vertIndex*2]);</div>\n+<div class=\"line\"><a id=\"l00607\" name=\"l00607\"></a><span class=\"lineno\">  607</span>}</div>\n+<div class=\"line\"><a id=\"l00608\" name=\"l00608\"></a><span class=\"lineno\">  608</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a></div>\n+<div class=\"line\"><a id=\"l00609\" name=\"l00609\"></a><span class=\"lineno\">  609</span>Level::getVertexFaces(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex) {</div>\n+<div class=\"line\"><a id=\"l00610\" name=\"l00610\"></a><span class=\"lineno\">  610</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a>( (&amp;_vertFaceIndices[0]) + _vertFaceCountsAndOffsets[vertIndex*2+1],</div>\n+<div class=\"line\"><a id=\"l00611\" name=\"l00611\"></a><span class=\"lineno\">  611</span>                          _vertFaceCountsAndOffsets[vertIndex*2]);</div>\n+<div class=\"line\"><a id=\"l00612\" name=\"l00612\"></a><span class=\"lineno\">  612</span>}</div>\n+<div class=\"line\"><a id=\"l00613\" name=\"l00613\"></a><span class=\"lineno\">  613</span> </div>\n+<div class=\"line\"><a id=\"l00614\" name=\"l00614\"></a><span class=\"lineno\">  614</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#a175f8a210a75b8180bc7ec74459492c9\">ConstLocalIndexArray</a></div>\n+<div class=\"line\"><a id=\"l00615\" name=\"l00615\"></a><span class=\"lineno\">  615</span>Level::getVertexFaceLocalIndices(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00616\" name=\"l00616\"></a><span class=\"lineno\">  616</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#a175f8a210a75b8180bc7ec74459492c9\">ConstLocalIndexArray</a>( (&amp;_vertFaceLocalIndices[0]) + _vertFaceCountsAndOffsets[vertIndex*2+1],</div>\n+<div class=\"line\"><a id=\"l00617\" name=\"l00617\"></a><span class=\"lineno\">  617</span>                               _vertFaceCountsAndOffsets[vertIndex*2]);</div>\n+<div class=\"line\"><a id=\"l00618\" name=\"l00618\"></a><span class=\"lineno\">  618</span>}</div>\n+<div class=\"line\"><a id=\"l00619\" name=\"l00619\"></a><span class=\"lineno\">  619</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#a1e004d5c1e30ef69719d4083afe0f4ce\">LocalIndexArray</a></div>\n+<div class=\"line\"><a id=\"l00620\" name=\"l00620\"></a><span class=\"lineno\">  620</span>Level::getVertexFaceLocalIndices(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex) {</div>\n+<div class=\"line\"><a id=\"l00621\" name=\"l00621\"></a><span class=\"lineno\">  621</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#a1e004d5c1e30ef69719d4083afe0f4ce\">LocalIndexArray</a>( (&amp;_vertFaceLocalIndices[0]) + _vertFaceCountsAndOffsets[vertIndex*2+1],</div>\n+<div class=\"line\"><a id=\"l00622\" name=\"l00622\"></a><span class=\"lineno\">  622</span>                               _vertFaceCountsAndOffsets[vertIndex*2]);</div>\n+<div class=\"line\"><a id=\"l00623\" name=\"l00623\"></a><span class=\"lineno\">  623</span>}</div>\n+<div class=\"line\"><a id=\"l00624\" name=\"l00624\"></a><span class=\"lineno\">  624</span> </div>\n+<div class=\"line\"><a id=\"l00625\" name=\"l00625\"></a><span class=\"lineno\">  625</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"line\"><a id=\"l00626\" name=\"l00626\"></a><span class=\"lineno\">  626</span>Level::resizeVertexFaces(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex, <span class=\"keywordtype\">int</span> count) {</div>\n+<div class=\"line\"><a id=\"l00627\" name=\"l00627\"></a><span class=\"lineno\">  627</span>    <span class=\"keywordtype\">int</span>* countOffsetPair = &amp;_vertFaceCountsAndOffsets[vertIndex*2];</div>\n+<div class=\"line\"><a id=\"l00628\" name=\"l00628\"></a><span class=\"lineno\">  628</span> </div>\n+<div class=\"line\"><a id=\"l00629\" name=\"l00629\"></a><span class=\"lineno\">  629</span>    countOffsetPair[0] = count;</div>\n+<div class=\"line\"><a id=\"l00630\" name=\"l00630\"></a><span class=\"lineno\">  630</span>    countOffsetPair[1] = (vertIndex == 0) ? 0 : (countOffsetPair[-2] + countOffsetPair[-1]);</div>\n+<div class=\"line\"><a id=\"l00631\" name=\"l00631\"></a><span class=\"lineno\">  631</span>}</div>\n+<div class=\"line\"><a id=\"l00632\" name=\"l00632\"></a><span class=\"lineno\">  632</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"line\"><a id=\"l00633\" name=\"l00633\"></a><span class=\"lineno\">  633</span>Level::trimVertexFaces(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex, <span class=\"keywordtype\">int</span> count) {</div>\n+<div class=\"line\"><a id=\"l00634\" name=\"l00634\"></a><span class=\"lineno\">  634</span>    _vertFaceCountsAndOffsets[vertIndex*2] = count;</div>\n+<div class=\"line\"><a id=\"l00635\" name=\"l00635\"></a><span class=\"lineno\">  635</span>}</div>\n+<div class=\"line\"><a id=\"l00636\" name=\"l00636\"></a><span class=\"lineno\">  636</span> </div>\n+<div class=\"line\"><a id=\"l00637\" name=\"l00637\"></a><span class=\"lineno\">  637</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00638\" name=\"l00638\"></a><span class=\"lineno\">  638</span><span class=\"comment\">//  Access/modify the edges incident a given vertex:</span></div>\n+<div class=\"line\"><a id=\"l00639\" name=\"l00639\"></a><span class=\"lineno\">  639</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00640\" name=\"l00640\"></a><span class=\"lineno\">  640</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a></div>\n+<div class=\"line\"><a id=\"l00641\" name=\"l00641\"></a><span class=\"lineno\">  641</span>Level::getVertexEdges(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00642\" name=\"l00642\"></a><span class=\"lineno\">  642</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a>( (&amp;_vertEdgeIndices[0]) +_vertEdgeCountsAndOffsets[vertIndex*2+1],</div>\n+<div class=\"line\"><a id=\"l00643\" name=\"l00643\"></a><span class=\"lineno\">  643</span>                          _vertEdgeCountsAndOffsets[vertIndex*2]);</div>\n+<div class=\"line\"><a id=\"l00644\" name=\"l00644\"></a><span class=\"lineno\">  644</span>}</div>\n+<div class=\"line\"><a id=\"l00645\" name=\"l00645\"></a><span class=\"lineno\">  645</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a></div>\n+<div class=\"line\"><a id=\"l00646\" name=\"l00646\"></a><span class=\"lineno\">  646</span>Level::getVertexEdges(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex) {</div>\n+<div class=\"line\"><a id=\"l00647\" name=\"l00647\"></a><span class=\"lineno\">  647</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a>( (&amp;_vertEdgeIndices[0]) +_vertEdgeCountsAndOffsets[vertIndex*2+1],</div>\n+<div class=\"line\"><a id=\"l00648\" name=\"l00648\"></a><span class=\"lineno\">  648</span>                          _vertEdgeCountsAndOffsets[vertIndex*2]);</div>\n+<div class=\"line\"><a id=\"l00649\" name=\"l00649\"></a><span class=\"lineno\">  649</span>}</div>\n+<div class=\"line\"><a id=\"l00650\" name=\"l00650\"></a><span class=\"lineno\">  650</span> </div>\n+<div class=\"line\"><a id=\"l00651\" name=\"l00651\"></a><span class=\"lineno\">  651</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#a175f8a210a75b8180bc7ec74459492c9\">ConstLocalIndexArray</a></div>\n+<div class=\"line\"><a id=\"l00652\" name=\"l00652\"></a><span class=\"lineno\">  652</span>Level::getVertexEdgeLocalIndices(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00653\" name=\"l00653\"></a><span class=\"lineno\">  653</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#a175f8a210a75b8180bc7ec74459492c9\">ConstLocalIndexArray</a>( (&amp;_vertEdgeLocalIndices[0]) + _vertEdgeCountsAndOffsets[vertIndex*2+1],</div>\n+<div class=\"line\"><a id=\"l00654\" name=\"l00654\"></a><span class=\"lineno\">  654</span>                               _vertEdgeCountsAndOffsets[vertIndex*2]);</div>\n+<div class=\"line\"><a id=\"l00655\" name=\"l00655\"></a><span class=\"lineno\">  655</span>}</div>\n+<div class=\"line\"><a id=\"l00656\" name=\"l00656\"></a><span class=\"lineno\">  656</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#a1e004d5c1e30ef69719d4083afe0f4ce\">LocalIndexArray</a></div>\n+<div class=\"line\"><a id=\"l00657\" name=\"l00657\"></a><span class=\"lineno\">  657</span>Level::getVertexEdgeLocalIndices(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex) {</div>\n+<div class=\"line\"><a id=\"l00658\" name=\"l00658\"></a><span class=\"lineno\">  658</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#a1e004d5c1e30ef69719d4083afe0f4ce\">LocalIndexArray</a>( (&amp;_vertEdgeLocalIndices[0]) + _vertEdgeCountsAndOffsets[vertIndex*2+1],</div>\n+<div class=\"line\"><a id=\"l00659\" name=\"l00659\"></a><span class=\"lineno\">  659</span>                               _vertEdgeCountsAndOffsets[vertIndex*2]);</div>\n+<div class=\"line\"><a id=\"l00660\" name=\"l00660\"></a><span class=\"lineno\">  660</span>}</div>\n+<div class=\"line\"><a id=\"l00661\" name=\"l00661\"></a><span class=\"lineno\">  661</span> </div>\n+<div class=\"line\"><a id=\"l00662\" name=\"l00662\"></a><span class=\"lineno\">  662</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"line\"><a id=\"l00663\" name=\"l00663\"></a><span class=\"lineno\">  663</span>Level::resizeVertexEdges(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex, <span class=\"keywordtype\">int</span> count) {</div>\n+<div class=\"line\"><a id=\"l00664\" name=\"l00664\"></a><span class=\"lineno\">  664</span>    <span class=\"keywordtype\">int</span>* countOffsetPair = &amp;_vertEdgeCountsAndOffsets[vertIndex*2];</div>\n+<div class=\"line\"><a id=\"l00665\" name=\"l00665\"></a><span class=\"lineno\">  665</span> </div>\n+<div class=\"line\"><a id=\"l00666\" name=\"l00666\"></a><span class=\"lineno\">  666</span>    countOffsetPair[0] = count;</div>\n+<div class=\"line\"><a id=\"l00667\" name=\"l00667\"></a><span class=\"lineno\">  667</span>    countOffsetPair[1] = (vertIndex == 0) ? 0 : (countOffsetPair[-2] + countOffsetPair[-1]);</div>\n+<div class=\"line\"><a id=\"l00668\" name=\"l00668\"></a><span class=\"lineno\">  668</span> </div>\n+<div class=\"line\"><a id=\"l00669\" name=\"l00669\"></a><span class=\"lineno\">  669</span>    _maxValence = std::max(_maxValence, count);</div>\n+<div class=\"line\"><a id=\"l00670\" name=\"l00670\"></a><span class=\"lineno\">  670</span>}</div>\n+<div class=\"line\"><a id=\"l00671\" name=\"l00671\"></a><span class=\"lineno\">  671</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"line\"><a id=\"l00672\" name=\"l00672\"></a><span class=\"lineno\">  672</span>Level::trimVertexEdges(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex, <span class=\"keywordtype\">int</span> count) {</div>\n+<div class=\"line\"><a id=\"l00673\" name=\"l00673\"></a><span class=\"lineno\">  673</span>    _vertEdgeCountsAndOffsets[vertIndex*2] = count;</div>\n+<div class=\"line\"><a id=\"l00674\" name=\"l00674\"></a><span class=\"lineno\">  674</span>}</div>\n+<div class=\"line\"><a id=\"l00675\" name=\"l00675\"></a><span class=\"lineno\">  675</span> </div>\n+<div class=\"line\"><a id=\"l00676\" name=\"l00676\"></a><span class=\"lineno\">  676</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"line\"><a id=\"l00677\" name=\"l00677\"></a><span class=\"lineno\">  677</span>Level::setMaxValence(<span class=\"keywordtype\">int</span> valence) {</div>\n+<div class=\"line\"><a id=\"l00678\" name=\"l00678\"></a><span class=\"lineno\">  678</span>    _maxValence = valence;</div>\n+<div class=\"line\"><a id=\"l00679\" name=\"l00679\"></a><span class=\"lineno\">  679</span>}</div>\n+<div class=\"line\"><a id=\"l00680\" name=\"l00680\"></a><span class=\"lineno\">  680</span> </div>\n+<div class=\"line\"><a id=\"l00681\" name=\"l00681\"></a><span class=\"lineno\">  681</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00682\" name=\"l00682\"></a><span class=\"lineno\">  682</span><span class=\"comment\">//  Access/modify the vertices incident a given edge:</span></div>\n+<div class=\"line\"><a id=\"l00683\" name=\"l00683\"></a><span class=\"lineno\">  683</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00684\" name=\"l00684\"></a><span class=\"lineno\">  684</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a></div>\n+<div class=\"line\"><a id=\"l00685\" name=\"l00685\"></a><span class=\"lineno\">  685</span>Level::getEdgeVertices(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> edgeIndex)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00686\" name=\"l00686\"></a><span class=\"lineno\">  686</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a>(&amp;_edgeVertIndices[edgeIndex*2], 2);</div>\n+<div class=\"line\"><a id=\"l00687\" name=\"l00687\"></a><span class=\"lineno\">  687</span>}</div>\n+<div class=\"line\"><a id=\"l00688\" name=\"l00688\"></a><span class=\"lineno\">  688</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a></div>\n+<div class=\"line\"><a id=\"l00689\" name=\"l00689\"></a><span class=\"lineno\">  689</span>Level::getEdgeVertices(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> edgeIndex) {</div>\n+<div class=\"line\"><a id=\"l00690\" name=\"l00690\"></a><span class=\"lineno\">  690</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a>(&amp;_edgeVertIndices[edgeIndex*2], 2);</div>\n+<div class=\"line\"><a id=\"l00691\" name=\"l00691\"></a><span class=\"lineno\">  691</span>}</div>\n+<div class=\"line\"><a id=\"l00692\" name=\"l00692\"></a><span class=\"lineno\">  692</span> </div>\n+<div class=\"line\"><a id=\"l00693\" name=\"l00693\"></a><span class=\"lineno\">  693</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00694\" name=\"l00694\"></a><span class=\"lineno\">  694</span><span class=\"comment\">//  Access/modify the faces incident a given edge:</span></div>\n+<div class=\"line\"><a id=\"l00695\" name=\"l00695\"></a><span class=\"lineno\">  695</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00696\" name=\"l00696\"></a><span class=\"lineno\">  696</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a></div>\n+<div class=\"line\"><a id=\"l00697\" name=\"l00697\"></a><span class=\"lineno\">  697</span>Level::getEdgeFaces(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> edgeIndex)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00698\" name=\"l00698\"></a><span class=\"lineno\">  698</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">ConstIndexArray</a>(&amp;_edgeFaceIndices[0] + </div>\n+<div class=\"line\"><a id=\"l00699\" name=\"l00699\"></a><span class=\"lineno\">  699</span>                           _edgeFaceCountsAndOffsets[edgeIndex*2+1],</div>\n+<div class=\"line\"><a id=\"l00700\" name=\"l00700\"></a><span class=\"lineno\">  700</span>                           _edgeFaceCountsAndOffsets[edgeIndex*2]);</div>\n+<div class=\"line\"><a id=\"l00701\" name=\"l00701\"></a><span class=\"lineno\">  701</span>}</div>\n+<div class=\"line\"><a id=\"l00702\" name=\"l00702\"></a><span class=\"lineno\">  702</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a></div>\n+<div class=\"line\"><a id=\"l00703\" name=\"l00703\"></a><span class=\"lineno\">  703</span>Level::getEdgeFaces(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> edgeIndex) {</div>\n+<div class=\"line\"><a id=\"l00704\" name=\"l00704\"></a><span class=\"lineno\">  704</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a>(&amp;_edgeFaceIndices[0] +</div>\n+<div class=\"line\"><a id=\"l00705\" name=\"l00705\"></a><span class=\"lineno\">  705</span>                      _edgeFaceCountsAndOffsets[edgeIndex*2+1],</div>\n+<div class=\"line\"><a id=\"l00706\" name=\"l00706\"></a><span class=\"lineno\">  706</span>                      _edgeFaceCountsAndOffsets[edgeIndex*2]);</div>\n+<div class=\"line\"><a id=\"l00707\" name=\"l00707\"></a><span class=\"lineno\">  707</span>}</div>\n+<div class=\"line\"><a id=\"l00708\" name=\"l00708\"></a><span class=\"lineno\">  708</span> </div>\n+<div class=\"line\"><a id=\"l00709\" name=\"l00709\"></a><span class=\"lineno\">  709</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#a175f8a210a75b8180bc7ec74459492c9\">ConstLocalIndexArray</a></div>\n+<div class=\"line\"><a id=\"l00710\" name=\"l00710\"></a><span class=\"lineno\">  710</span>Level::getEdgeFaceLocalIndices(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> edgeIndex)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00711\" name=\"l00711\"></a><span class=\"lineno\">  711</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#a175f8a210a75b8180bc7ec74459492c9\">ConstLocalIndexArray</a>(&amp;_edgeFaceLocalIndices[0] +</div>\n+<div class=\"line\"><a id=\"l00712\" name=\"l00712\"></a><span class=\"lineno\">  712</span>                                _edgeFaceCountsAndOffsets[edgeIndex*2+1],</div>\n+<div class=\"line\"><a id=\"l00713\" name=\"l00713\"></a><span class=\"lineno\">  713</span>                                _edgeFaceCountsAndOffsets[edgeIndex*2]);</div>\n+<div class=\"line\"><a id=\"l00714\" name=\"l00714\"></a><span class=\"lineno\">  714</span>}</div>\n+<div class=\"line\"><a id=\"l00715\" name=\"l00715\"></a><span class=\"lineno\">  715</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#a1e004d5c1e30ef69719d4083afe0f4ce\">LocalIndexArray</a></div>\n+<div class=\"line\"><a id=\"l00716\" name=\"l00716\"></a><span class=\"lineno\">  716</span>Level::getEdgeFaceLocalIndices(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> edgeIndex) {</div>\n+<div class=\"line\"><a id=\"l00717\" name=\"l00717\"></a><span class=\"lineno\">  717</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#a1e004d5c1e30ef69719d4083afe0f4ce\">LocalIndexArray</a>(&amp;_edgeFaceLocalIndices[0] +</div>\n+<div class=\"line\"><a id=\"l00718\" name=\"l00718\"></a><span class=\"lineno\">  718</span>                           _edgeFaceCountsAndOffsets[edgeIndex*2+1],</div>\n+<div class=\"line\"><a id=\"l00719\" name=\"l00719\"></a><span class=\"lineno\">  719</span>                           _edgeFaceCountsAndOffsets[edgeIndex*2]);</div>\n+<div class=\"line\"><a id=\"l00720\" name=\"l00720\"></a><span class=\"lineno\">  720</span>}</div>\n+<div class=\"line\"><a id=\"l00721\" name=\"l00721\"></a><span class=\"lineno\">  721</span> </div>\n+<div class=\"line\"><a id=\"l00722\" name=\"l00722\"></a><span class=\"lineno\">  722</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"line\"><a id=\"l00723\" name=\"l00723\"></a><span class=\"lineno\">  723</span>Level::resizeEdgeFaces(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> edgeIndex, <span class=\"keywordtype\">int</span> count) {</div>\n+<div class=\"line\"><a id=\"l00724\" name=\"l00724\"></a><span class=\"lineno\">  724</span>    <span class=\"keywordtype\">int</span>* countOffsetPair = &amp;_edgeFaceCountsAndOffsets[edgeIndex*2];</div>\n+<div class=\"line\"><a id=\"l00725\" name=\"l00725\"></a><span class=\"lineno\">  725</span> </div>\n+<div class=\"line\"><a id=\"l00726\" name=\"l00726\"></a><span class=\"lineno\">  726</span>    countOffsetPair[0] = count;</div>\n+<div class=\"line\"><a id=\"l00727\" name=\"l00727\"></a><span class=\"lineno\">  727</span>    countOffsetPair[1] = (edgeIndex == 0) ? 0 : (countOffsetPair[-2] + countOffsetPair[-1]);</div>\n+<div class=\"line\"><a id=\"l00728\" name=\"l00728\"></a><span class=\"lineno\">  728</span> </div>\n+<div class=\"line\"><a id=\"l00729\" name=\"l00729\"></a><span class=\"lineno\">  729</span>    _maxEdgeFaces = std::max(_maxEdgeFaces, count);</div>\n+<div class=\"line\"><a id=\"l00730\" name=\"l00730\"></a><span class=\"lineno\">  730</span>}</div>\n+<div class=\"line\"><a id=\"l00731\" name=\"l00731\"></a><span class=\"lineno\">  731</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"line\"><a id=\"l00732\" name=\"l00732\"></a><span class=\"lineno\">  732</span>Level::trimEdgeFaces(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> edgeIndex, <span class=\"keywordtype\">int</span> count) {</div>\n+<div class=\"line\"><a id=\"l00733\" name=\"l00733\"></a><span class=\"lineno\">  733</span>    _edgeFaceCountsAndOffsets[edgeIndex*2] = count;</div>\n+<div class=\"line\"><a id=\"l00734\" name=\"l00734\"></a><span class=\"lineno\">  734</span>}</div>\n+<div class=\"line\"><a id=\"l00735\" name=\"l00735\"></a><span class=\"lineno\">  735</span> </div>\n+<div class=\"line\"><a id=\"l00736\" name=\"l00736\"></a><span class=\"lineno\">  736</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00737\" name=\"l00737\"></a><span class=\"lineno\">  737</span><span class=\"comment\">//  Access/modify sharpness values:</span></div>\n+<div class=\"line\"><a id=\"l00738\" name=\"l00738\"></a><span class=\"lineno\">  738</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00739\" name=\"l00739\"></a><span class=\"lineno\">  739</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">float</span></div>\n+<div class=\"line\"><a id=\"l00740\" name=\"l00740\"></a><span class=\"lineno\">  740</span>Level::getEdgeSharpness(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> edgeIndex)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00741\" name=\"l00741\"></a><span class=\"lineno\">  741</span>    <span class=\"keywordflow\">return</span> _edgeSharpness[edgeIndex];</div>\n+<div class=\"line\"><a id=\"l00742\" name=\"l00742\"></a><span class=\"lineno\">  742</span>}</div>\n+<div class=\"line\"><a id=\"l00743\" name=\"l00743\"></a><span class=\"lineno\">  743</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">float</span>&amp;</div>\n+<div class=\"line\"><a id=\"l00744\" name=\"l00744\"></a><span class=\"lineno\">  744</span>Level::getEdgeSharpness(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> edgeIndex) {</div>\n+<div class=\"line\"><a id=\"l00745\" name=\"l00745\"></a><span class=\"lineno\">  745</span>    <span class=\"keywordflow\">return</span> _edgeSharpness[edgeIndex];</div>\n+<div class=\"line\"><a id=\"l00746\" name=\"l00746\"></a><span class=\"lineno\">  746</span>}</div>\n+<div class=\"line\"><a id=\"l00747\" name=\"l00747\"></a><span class=\"lineno\">  747</span> </div>\n+<div class=\"line\"><a id=\"l00748\" name=\"l00748\"></a><span class=\"lineno\">  748</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">float</span></div>\n+<div class=\"line\"><a id=\"l00749\" name=\"l00749\"></a><span class=\"lineno\">  749</span>Level::getVertexSharpness(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00750\" name=\"l00750\"></a><span class=\"lineno\">  750</span>    <span class=\"keywordflow\">return</span> _vertSharpness[vertIndex];</div>\n+<div class=\"line\"><a id=\"l00751\" name=\"l00751\"></a><span class=\"lineno\">  751</span>}</div>\n+<div class=\"line\"><a id=\"l00752\" name=\"l00752\"></a><span class=\"lineno\">  752</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">float</span>&amp;</div>\n+<div class=\"line\"><a id=\"l00753\" name=\"l00753\"></a><span class=\"lineno\">  753</span>Level::getVertexSharpness(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex) {</div>\n+<div class=\"line\"><a id=\"l00754\" name=\"l00754\"></a><span class=\"lineno\">  754</span>    <span class=\"keywordflow\">return</span> _vertSharpness[vertIndex];</div>\n+<div class=\"line\"><a id=\"l00755\" name=\"l00755\"></a><span class=\"lineno\">  755</span>}</div>\n+<div class=\"line\"><a id=\"l00756\" name=\"l00756\"></a><span class=\"lineno\">  756</span> </div>\n+<div class=\"line\"><a id=\"l00757\" name=\"l00757\"></a><span class=\"lineno\">  757</span><span class=\"keyword\">inline</span> <a class=\"code hl_enumeration\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78\">Sdc::Crease::Rule</a></div>\n+<div class=\"line\"><a id=\"l00758\" name=\"l00758\"></a><span class=\"lineno\">  758</span>Level::getVertexRule(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00759\" name=\"l00759\"></a><span class=\"lineno\">  759</span>    <span class=\"keywordflow\">return</span> (<a class=\"code hl_enumeration\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78\">Sdc::Crease::Rule</a>) _vertTags[vertIndex]._rule;</div>\n+<div class=\"line\"><a id=\"l00760\" name=\"l00760\"></a><span class=\"lineno\">  760</span>}</div>\n+<div class=\"line\"><a id=\"l00761\" name=\"l00761\"></a><span class=\"lineno\">  761</span> </div>\n+<div class=\"line\"><a id=\"l00762\" name=\"l00762\"></a><span class=\"lineno\">  762</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00763\" name=\"l00763\"></a><span class=\"lineno\">  763</span><span class=\"comment\">//  Access/modify hole tag:</span></div>\n+<div class=\"line\"><a id=\"l00764\" name=\"l00764\"></a><span class=\"lineno\">  764</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00765\" name=\"l00765\"></a><span class=\"lineno\">  765</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"line\"><a id=\"l00766\" name=\"l00766\"></a><span class=\"lineno\">  766</span>Level::setFaceHole(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex, <span class=\"keywordtype\">bool</span> b) {</div>\n+<div class=\"line\"><a id=\"l00767\" name=\"l00767\"></a><span class=\"lineno\">  767</span>    _faceTags[faceIndex]._hole = b;</div>\n+<div class=\"line\"><a id=\"l00768\" name=\"l00768\"></a><span class=\"lineno\">  768</span>}</div>\n+<div class=\"line\"><a id=\"l00769\" name=\"l00769\"></a><span class=\"lineno\">  769</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span></div>\n+<div class=\"line\"><a id=\"l00770\" name=\"l00770\"></a><span class=\"lineno\">  770</span>Level::isFaceHole(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00771\" name=\"l00771\"></a><span class=\"lineno\">  771</span>    <span class=\"keywordflow\">return</span> _faceTags[faceIndex]._hole;</div>\n+<div class=\"line\"><a id=\"l00772\" name=\"l00772\"></a><span class=\"lineno\">  772</span>}</div>\n+<div class=\"line\"><a id=\"l00773\" name=\"l00773\"></a><span class=\"lineno\">  773</span> </div>\n+<div class=\"line\"><a id=\"l00774\" name=\"l00774\"></a><span class=\"lineno\">  774</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00775\" name=\"l00775\"></a><span class=\"lineno\">  775</span><span class=\"comment\">//  Access/modify non-manifold tags:</span></div>\n+<div class=\"line\"><a id=\"l00776\" name=\"l00776\"></a><span class=\"lineno\">  776</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00777\" name=\"l00777\"></a><span class=\"lineno\">  777</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"line\"><a id=\"l00778\" name=\"l00778\"></a><span class=\"lineno\">  778</span>Level::setEdgeNonManifold(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> edgeIndex, <span class=\"keywordtype\">bool</span> b) {</div>\n+<div class=\"line\"><a id=\"l00779\" name=\"l00779\"></a><span class=\"lineno\">  779</span>    _edgeTags[edgeIndex]._nonManifold = b;</div>\n+<div class=\"line\"><a id=\"l00780\" name=\"l00780\"></a><span class=\"lineno\">  780</span>}</div>\n+<div class=\"line\"><a id=\"l00781\" name=\"l00781\"></a><span class=\"lineno\">  781</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span></div>\n+<div class=\"line\"><a id=\"l00782\" name=\"l00782\"></a><span class=\"lineno\">  782</span>Level::isEdgeNonManifold(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> edgeIndex)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00783\" name=\"l00783\"></a><span class=\"lineno\">  783</span>    <span class=\"keywordflow\">return</span> _edgeTags[edgeIndex]._nonManifold;</div>\n+<div class=\"line\"><a id=\"l00784\" name=\"l00784\"></a><span class=\"lineno\">  784</span>}</div>\n+<div class=\"line\"><a id=\"l00785\" name=\"l00785\"></a><span class=\"lineno\">  785</span> </div>\n+<div class=\"line\"><a id=\"l00786\" name=\"l00786\"></a><span class=\"lineno\">  786</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"line\"><a id=\"l00787\" name=\"l00787\"></a><span class=\"lineno\">  787</span>Level::setVertexNonManifold(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex, <span class=\"keywordtype\">bool</span> b) {</div>\n+<div class=\"line\"><a id=\"l00788\" name=\"l00788\"></a><span class=\"lineno\">  788</span>    _vertTags[vertIndex]._nonManifold = b;</div>\n+<div class=\"line\"><a id=\"l00789\" name=\"l00789\"></a><span class=\"lineno\">  789</span>}</div>\n+<div class=\"line\"><a id=\"l00790\" name=\"l00790\"></a><span class=\"lineno\">  790</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span></div>\n+<div class=\"line\"><a id=\"l00791\" name=\"l00791\"></a><span class=\"lineno\">  791</span>Level::isVertexNonManifold(<a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertIndex)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00792\" name=\"l00792\"></a><span class=\"lineno\">  792</span>    <span class=\"keywordflow\">return</span> _vertTags[vertIndex]._nonManifold;</div>\n+<div class=\"line\"><a id=\"l00793\" name=\"l00793\"></a><span class=\"lineno\">  793</span>}</div>\n+<div class=\"line\"><a id=\"l00794\" name=\"l00794\"></a><span class=\"lineno\">  794</span> </div>\n+<div class=\"line\"><a id=\"l00795\" name=\"l00795\"></a><span class=\"lineno\">  795</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00796\" name=\"l00796\"></a><span class=\"lineno\">  796</span><span class=\"comment\">//  Sizing methods to allocate space:</span></div>\n+<div class=\"line\"><a id=\"l00797\" name=\"l00797\"></a><span class=\"lineno\">  797</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00798\" name=\"l00798\"></a><span class=\"lineno\">  798</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"line\"><a id=\"l00799\" name=\"l00799\"></a><span class=\"lineno\">  799</span>Level::resizeFaces(<span class=\"keywordtype\">int</span> faceCount) {</div>\n+<div class=\"line\"><a id=\"l00800\" name=\"l00800\"></a><span class=\"lineno\">  800</span>    _faceCount = faceCount;</div>\n+<div class=\"line\"><a id=\"l00801\" name=\"l00801\"></a><span class=\"lineno\">  801</span>    _faceVertCountsAndOffsets.resize(2 * faceCount);</div>\n+<div class=\"line\"><a id=\"l00802\" name=\"l00802\"></a><span class=\"lineno\">  802</span> </div>\n+<div class=\"line\"><a id=\"l00803\" name=\"l00803\"></a><span class=\"lineno\">  803</span>    _faceTags.resize(faceCount);</div>\n+<div class=\"line\"><a id=\"l00804\" name=\"l00804\"></a><span class=\"lineno\">  804</span>    std::memset((<span class=\"keywordtype\">void</span>*) &amp;_faceTags[0], 0, _faceCount * <span class=\"keyword\">sizeof</span>(FTag));</div>\n+<div class=\"line\"><a id=\"l00805\" name=\"l00805\"></a><span class=\"lineno\">  805</span>}</div>\n+<div class=\"line\"><a id=\"l00806\" name=\"l00806\"></a><span class=\"lineno\">  806</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"line\"><a id=\"l00807\" name=\"l00807\"></a><span class=\"lineno\">  807</span>Level::resizeFaceVertices(<span class=\"keywordtype\">int</span> totalFaceVertCount) {</div>\n+<div class=\"line\"><a id=\"l00808\" name=\"l00808\"></a><span class=\"lineno\">  808</span>    _faceVertIndices.resize(totalFaceVertCount);</div>\n+<div class=\"line\"><a id=\"l00809\" name=\"l00809\"></a><span class=\"lineno\">  809</span>}</div>\n+<div class=\"line\"><a id=\"l00810\" name=\"l00810\"></a><span class=\"lineno\">  810</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"line\"><a id=\"l00811\" name=\"l00811\"></a><span class=\"lineno\">  811</span>Level::resizeFaceEdges(<span class=\"keywordtype\">int</span> totalFaceEdgeCount) {</div>\n+<div class=\"line\"><a id=\"l00812\" name=\"l00812\"></a><span class=\"lineno\">  812</span>    _faceEdgeIndices.resize(totalFaceEdgeCount);</div>\n+<div class=\"line\"><a id=\"l00813\" name=\"l00813\"></a><span class=\"lineno\">  813</span>}</div>\n+<div class=\"line\"><a id=\"l00814\" name=\"l00814\"></a><span class=\"lineno\">  814</span> </div>\n+<div class=\"line\"><a id=\"l00815\" name=\"l00815\"></a><span class=\"lineno\">  815</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"line\"><a id=\"l00816\" name=\"l00816\"></a><span class=\"lineno\">  816</span>Level::resizeEdges(<span class=\"keywordtype\">int</span> edgeCount) {</div>\n+<div class=\"line\"><a id=\"l00817\" name=\"l00817\"></a><span class=\"lineno\">  817</span> </div>\n+<div class=\"line\"><a id=\"l00818\" name=\"l00818\"></a><span class=\"lineno\">  818</span>    _edgeCount = edgeCount;</div>\n+<div class=\"line\"><a id=\"l00819\" name=\"l00819\"></a><span class=\"lineno\">  819</span>    _edgeFaceCountsAndOffsets.resize(2 * edgeCount);</div>\n+<div class=\"line\"><a id=\"l00820\" name=\"l00820\"></a><span class=\"lineno\">  820</span> </div>\n+<div class=\"line\"><a id=\"l00821\" name=\"l00821\"></a><span class=\"lineno\">  821</span>    _edgeSharpness.resize(edgeCount);</div>\n+<div class=\"line\"><a id=\"l00822\" name=\"l00822\"></a><span class=\"lineno\">  822</span>    _edgeTags.resize(edgeCount);</div>\n+<div class=\"line\"><a id=\"l00823\" name=\"l00823\"></a><span class=\"lineno\">  823</span> </div>\n+<div class=\"line\"><a id=\"l00824\" name=\"l00824\"></a><span class=\"lineno\">  824</span>    <span class=\"keywordflow\">if</span> (edgeCount&gt;0) {</div>\n+<div class=\"line\"><a id=\"l00825\" name=\"l00825\"></a><span class=\"lineno\">  825</span>        std::memset((<span class=\"keywordtype\">void</span>*) &amp;_edgeTags[0], 0, _edgeCount * <span class=\"keyword\">sizeof</span>(ETag));</div>\n+<div class=\"line\"><a id=\"l00826\" name=\"l00826\"></a><span class=\"lineno\">  826</span>    }</div>\n+<div class=\"line\"><a id=\"l00827\" name=\"l00827\"></a><span class=\"lineno\">  827</span>}</div>\n+<div class=\"line\"><a id=\"l00828\" name=\"l00828\"></a><span class=\"lineno\">  828</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"line\"><a id=\"l00829\" name=\"l00829\"></a><span class=\"lineno\">  829</span>Level::resizeEdgeVertices() {</div>\n+<div class=\"line\"><a id=\"l00830\" name=\"l00830\"></a><span class=\"lineno\">  830</span> </div>\n+<div class=\"line\"><a id=\"l00831\" name=\"l00831\"></a><span class=\"lineno\">  831</span>    _edgeVertIndices.resize(2 * _edgeCount);</div>\n+<div class=\"line\"><a id=\"l00832\" name=\"l00832\"></a><span class=\"lineno\">  832</span>}</div>\n+<div class=\"line\"><a id=\"l00833\" name=\"l00833\"></a><span class=\"lineno\">  833</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"line\"><a id=\"l00834\" name=\"l00834\"></a><span class=\"lineno\">  834</span>Level::resizeEdgeFaces(<span class=\"keywordtype\">int</span> totalEdgeFaceCount) {</div>\n+<div class=\"line\"><a id=\"l00835\" name=\"l00835\"></a><span class=\"lineno\">  835</span> </div>\n+<div class=\"line\"><a id=\"l00836\" name=\"l00836\"></a><span class=\"lineno\">  836</span>    _edgeFaceIndices.resize(totalEdgeFaceCount);</div>\n+<div class=\"line\"><a id=\"l00837\" name=\"l00837\"></a><span class=\"lineno\">  837</span>    _edgeFaceLocalIndices.resize(totalEdgeFaceCount);</div>\n+<div class=\"line\"><a id=\"l00838\" name=\"l00838\"></a><span class=\"lineno\">  838</span>}</div>\n+<div class=\"line\"><a id=\"l00839\" name=\"l00839\"></a><span class=\"lineno\">  839</span> </div>\n+<div class=\"line\"><a id=\"l00840\" name=\"l00840\"></a><span class=\"lineno\">  840</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"line\"><a id=\"l00841\" name=\"l00841\"></a><span class=\"lineno\">  841</span>Level::resizeVertices(<span class=\"keywordtype\">int</span> vertCount) {</div>\n+<div class=\"line\"><a id=\"l00842\" name=\"l00842\"></a><span class=\"lineno\">  842</span> </div>\n+<div class=\"line\"><a id=\"l00843\" name=\"l00843\"></a><span class=\"lineno\">  843</span>    _vertCount = vertCount;</div>\n+<div class=\"line\"><a id=\"l00844\" name=\"l00844\"></a><span class=\"lineno\">  844</span>    _vertFaceCountsAndOffsets.resize(2 * vertCount);</div>\n+<div class=\"line\"><a id=\"l00845\" name=\"l00845\"></a><span class=\"lineno\">  845</span>    _vertEdgeCountsAndOffsets.resize(2 * vertCount);</div>\n+<div class=\"line\"><a id=\"l00846\" name=\"l00846\"></a><span class=\"lineno\">  846</span> </div>\n+<div class=\"line\"><a id=\"l00847\" name=\"l00847\"></a><span class=\"lineno\">  847</span>    _vertSharpness.resize(vertCount);</div>\n+<div class=\"line\"><a id=\"l00848\" name=\"l00848\"></a><span class=\"lineno\">  848</span>    _vertTags.resize(vertCount);</div>\n+<div class=\"line\"><a id=\"l00849\" name=\"l00849\"></a><span class=\"lineno\">  849</span>    std::memset((<span class=\"keywordtype\">void</span>*) &amp;_vertTags[0], 0, _vertCount * <span class=\"keyword\">sizeof</span>(VTag));</div>\n+<div class=\"line\"><a id=\"l00850\" name=\"l00850\"></a><span class=\"lineno\">  850</span>}</div>\n+<div class=\"line\"><a id=\"l00851\" name=\"l00851\"></a><span class=\"lineno\">  851</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"line\"><a id=\"l00852\" name=\"l00852\"></a><span class=\"lineno\">  852</span>Level::resizeVertexFaces(<span class=\"keywordtype\">int</span> totalVertFaceCount) {</div>\n+<div class=\"line\"><a id=\"l00853\" name=\"l00853\"></a><span class=\"lineno\">  853</span> </div>\n+<div class=\"line\"><a id=\"l00854\" name=\"l00854\"></a><span class=\"lineno\">  854</span>    _vertFaceIndices.resize(totalVertFaceCount);</div>\n+<div class=\"line\"><a id=\"l00855\" name=\"l00855\"></a><span class=\"lineno\">  855</span>    _vertFaceLocalIndices.resize(totalVertFaceCount);</div>\n+<div class=\"line\"><a id=\"l00856\" name=\"l00856\"></a><span class=\"lineno\">  856</span>}</div>\n+<div class=\"line\"><a id=\"l00857\" name=\"l00857\"></a><span class=\"lineno\">  857</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"line\"><a id=\"l00858\" name=\"l00858\"></a><span class=\"lineno\">  858</span>Level::resizeVertexEdges(<span class=\"keywordtype\">int</span> totalVertEdgeCount) {</div>\n+<div class=\"line\"><a id=\"l00859\" name=\"l00859\"></a><span class=\"lineno\">  859</span> </div>\n+<div class=\"line\"><a id=\"l00860\" name=\"l00860\"></a><span class=\"lineno\">  860</span>    _vertEdgeIndices.resize(totalVertEdgeCount);</div>\n+<div class=\"line\"><a id=\"l00861\" name=\"l00861\"></a><span class=\"lineno\">  861</span>    _vertEdgeLocalIndices.resize(totalVertEdgeCount);</div>\n+<div class=\"line\"><a id=\"l00862\" name=\"l00862\"></a><span class=\"lineno\">  862</span>}</div>\n+<div class=\"line\"><a id=\"l00863\" name=\"l00863\"></a><span class=\"lineno\">  863</span> </div>\n+<div class=\"line\"><a id=\"l00864\" name=\"l00864\"></a><span class=\"lineno\">  864</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a></div>\n+<div class=\"line\"><a id=\"l00865\" name=\"l00865\"></a><span class=\"lineno\">  865</span>Level::shareFaceVertCountsAndOffsets()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00866\" name=\"l00866\"></a><span class=\"lineno\">  866</span>    <span class=\"comment\">// XXXX manuelk we have to force const casting here (classes don&#39;t &#39;share&#39;</span></div>\n+<div class=\"line\"><a id=\"l00867\" name=\"l00867\"></a><span class=\"lineno\">  867</span>    <span class=\"comment\">// members usually...)</span></div>\n+<div class=\"line\"><a id=\"l00868\" name=\"l00868\"></a><span class=\"lineno\">  868</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">IndexArray</a>(<span class=\"keyword\">const_cast&lt;</span><a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> *<span class=\"keyword\">&gt;</span>(&amp;_faceVertCountsAndOffsets[0]),</div>\n+<div class=\"line\"><a id=\"l00869\" name=\"l00869\"></a><span class=\"lineno\">  869</span>        (<span class=\"keywordtype\">int</span>)_faceVertCountsAndOffsets.size());</div>\n+<div class=\"line\"><a id=\"l00870\" name=\"l00870\"></a><span class=\"lineno\">  870</span>}</div>\n+<div class=\"line\"><a id=\"l00871\" name=\"l00871\"></a><span class=\"lineno\">  871</span> </div>\n+<div class=\"line\"><a id=\"l00872\" name=\"l00872\"></a><span class=\"lineno\">  872</span>} <span class=\"comment\">// end namespace internal</span></div>\n+<div class=\"line\"><a id=\"l00873\" name=\"l00873\"></a><span class=\"lineno\">  873</span>} <span class=\"comment\">// end namespace Vtr</span></div>\n+<div class=\"line\"><a id=\"l00874\" name=\"l00874\"></a><span class=\"lineno\">  874</span> </div>\n+<div class=\"line\"><a id=\"l00875\" name=\"l00875\"></a><span class=\"lineno\">  875</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00876\" name=\"l00876\"></a><span class=\"lineno\">  876</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00877\" name=\"l00877\"></a><span class=\"lineno\">  877</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l00878\" name=\"l00878\"></a><span class=\"lineno\">  878</span> </div>\n+<div class=\"line\"><a id=\"l00879\" name=\"l00879\"></a><span class=\"lineno\">  879</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_VTR_LEVEL_H */</span><span class=\"preprocessor\"></span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa00909_html_a175f8a210a75b8180bc7ec74459492c9\"><div class=\"ttname\"><a href=\"a00909.html#a175f8a210a75b8180bc7ec74459492c9\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstLocalIndexArray</a></div><div class=\"ttdeci\">ConstArray&lt; LocalIndex &gt; ConstLocalIndexArray</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01495_source.html#l00083\">types.h:83</a></div></div>\n+<div class=\"ttc\" id=\"aa00909_html_a1e004d5c1e30ef69719d4083afe0f4ce\"><div class=\"ttname\"><a href=\"a00909.html#a1e004d5c1e30ef69719d4083afe0f4ce\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::LocalIndexArray</a></div><div class=\"ttdeci\">Array&lt; LocalIndex &gt; LocalIndexArray</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01495_source.html#l00082\">types.h:82</a></div></div>\n+<div class=\"ttc\" id=\"aa00909_html_a4a0e50e01fef3e431767a928c2631cab\"><div class=\"ttname\"><a href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::Index</a></div><div class=\"ttdeci\">int Index</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01495_source.html#l00054\">types.h:54</a></div></div>\n+<div class=\"ttc\" id=\"aa00909_html_a7c31dd7ef75734862d363b332be917dd\"><div class=\"ttname\"><a href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstIndexArray</a></div><div class=\"ttdeci\">ConstArray&lt; Index &gt; ConstIndexArray</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01495_source.html#l00080\">types.h:80</a></div></div>\n+<div class=\"ttc\" id=\"aa00909_html_a97c1e0c5ac33f97e2b73fde56b56c363\"><div class=\"ttname\"><a href=\"a00909.html#a97c1e0c5ac33f97e2b73fde56b56c363\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::LocalIndex</a></div><div class=\"ttdeci\">unsigned short LocalIndex</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01495_source.html#l00066\">types.h:66</a></div></div>\n+<div class=\"ttc\" id=\"aa00909_html_ab4fd2ea03eba4c01ed28072b21917a0f\"><div class=\"ttname\"><a href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::IndexArray</a></div><div class=\"ttdeci\">Array&lt; Index &gt; IndexArray</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01495_source.html#l00079\">types.h:79</a></div></div>\n+<div class=\"ttc\" id=\"aa01333_html_a11fcd51ef86118f65e603c1474377a78\"><div class=\"ttname\"><a href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::Rule</a></div><div class=\"ttdeci\">Rule</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00869_source.html#l00082\">crease.h:82</a></div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00815.html\">d3d11PatchTable.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bd5473d7d5841d48919aaa9ad0cb1f9b.html\">vtr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00815.html\">level.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-d3d11PatchTable.h\n+level.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2015 Pixar\n+2// Copyright 2014 DreamWorks Animation LLC.\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -23,135 +23,986 @@\n 17//\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n-24\n-25#ifndef OPENSUBDIV3_OSD_GL_PATCH_TABLE_H\n-26#define OPENSUBDIV3_OSD_GL_PATCH_TABLE_H\n-27\n-28#include \"../version.h\"\n-29\n-30#include <vector>\n-31#include \"../far/patchDescriptor.h\"\n-32#include \"../osd/nonCopyable.h\"\n-33#include \"../osd/types.h\"\n-34\n-35struct ID3D11Buffer;\n-36struct ID3D11ShaderResourceView;\n-37struct ID3D11Device;\n-38struct ID3D11DeviceContext;\n+24#ifndef OPENSUBDIV3_VTR_LEVEL_H\n+25#define OPENSUBDIV3_VTR_LEVEL_H\n+26\n+27#include \"../version.h\"\n+28\n+29#include \"../sdc/types.h\"\n+30#include \"../sdc/crease.h\"\n+31#include \"../sdc/options.h\"\n+32#include \"../vtr/types.h\"\n+33\n+34#include <algorithm>\n+35#include <vector>\n+36#include <cassert>\n+37#include <cstring>\n+38\n 39\n 40namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n 41namespace OPENSUBDIV_VERSION {\n 42\n-43namespace Far{\n-44 class PatchTable;\n-45};\n-46\n-47namespace Osd {\n-48\n-_\b4_\b9class _\bD_\b3_\bD_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be : private NonCopyable<D3D11PatchTable> {\n-50public:\n-_\b5_\b1 typedef ID3D11Buffer * _\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bB_\bi_\bn_\bd_\bi_\bn_\bg;\n-52\n-_\b5_\b3 _\bD_\b3_\bD_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be();\n-_\b5_\b4 _\b~_\bD_\b3_\bD_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be();\n-55\n-56 template<typename DEVICE_CONTEXT>\n-_\b5_\b7 static _\bD_\b3_\bD_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be *_\bC_\br_\be_\ba_\bt_\be(_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be const *farPatchTable,\n-58 DEVICE_CONTEXT context) {\n-59 return _\bC_\br_\be_\ba_\bt_\be(farPatchTable, context->GetDeviceContext());\n-60 }\n-61\n-_\b6_\b2 static _\bD_\b3_\bD_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be *_\bC_\br_\be_\ba_\bt_\be(_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be const *farPatchTable,\n-63 ID3D11DeviceContext *deviceContext);\n-64\n-_\b6_\b5 _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\bc_\bt_\bo_\br const &_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs() const {\n-66 return _\b__\bp_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs;\n-67 }\n-68\n-_\b7_\b0 ID3D11Buffer* _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br() const {\n-71 return _\b__\bi_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br;\n-72 }\n-73\n-_\b7_\b5 ID3D11ShaderResourceView* _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bS_\bR_\bV() const {\n-76 return _\b__\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br_\bS_\bR_\bV;\n-77 }\n-78\n-79protected:\n-80 // allocate buffers from patchTable\n-_\b8_\b1 bool _\ba_\bl_\bl_\bo_\bc_\ba_\bt_\be(_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be const *farPatchTable,\n-82 ID3D11DeviceContext *deviceContext);\n-83\n-_\b8_\b4 _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\bc_\bt_\bo_\br _\b__\bp_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs;\n-85\n-_\b8_\b6 ID3D11Buffer *_\b__\bi_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br;\n-_\b8_\b7 ID3D11Buffer *_\b__\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br;\n-_\b8_\b8 ID3D11ShaderResourceView *_\b__\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br_\bS_\bR_\bV;\n-89};\n-90\n-91\n-92} // end namespace Osd\n-93\n-94} // end namespace OPENSUBDIV_VERSION\n-95using namespace OPENSUBDIV_VERSION;\n-96\n-97} // end namespace OpenSubdiv\n-98\n-99#endif // OPENSUBDIV3_OSD_GL_PATCH_TABLE_H\n+43namespace Vtr {\n+44namespace internal {\n+45\n+46class Refinement;\n+47class TriRefinement;\n+48class QuadRefinement;\n+49class FVarRefinement;\n+50class FVarLevel;\n+51\n+52//\n+53// Level:\n+54// A refinement level includes a vectorized representation of the topology\n+55// for a particular subdivision level. The topology is \"complete\" in that any\n+56// level can be used as the base level of another subdivision hierarchy and\n+can\n+57// be considered a complete mesh independent of its ancestors. It currently\n+58// does contain a \"depth\" member -- as some inferences can then be made about\n+59// the topology (i.e. all quads or all tris if not level 0).\n+60//\n+61// This class is intended for private use within the library. There are still\n+62// opportunities to specialize levels -- e.g. those supporting N-sided faces\n+vs\n+63// those that are purely quads or tris -- so we prefer to insulate it from\n+public\n+64// access.\n+65//\n+66// The representation of topology here is to store six topological\n+relationships\n+67// in tables of integers. Each is stored in its own array(s) so the result is\n+68// a SOA representation of the topology. The six relations are:\n+69//\n+70// - face-verts: vertices incident/comprising a face\n+71// - face-edges: edges incident a face\n+72// - edge-verts: vertices incident/comprising an edge\n+73// - edge-faces: faces incident an edge\n+74// - vert-faces: faces incident a vertex\n+75// - vert-edges: edges incident a vertex\n+76//\n+77// There is some redundancy here but the intent is not that this be a minimal\n+78// representation, the intent is that it be amenable to refinement. Classes\n+in\n+79// the Far layer essentially store 5 of these 6 in a permuted form -- we add\n+80// the face-edges here to simplify refinement.\n+81//\n+82\n+83class Level {\n+84\n+85public:\n+86 //\n+87 // Simple nested types to hold the tags for each component type -- some of\n+88 // which are user-specified features (e.g. whether a face is a hole or not)\n+89 // while others indicate the topological nature of the component, how it\n+90 // is affected by creasing in its neighborhood, etc.\n+91 //\n+92 // Most of these properties are passed down to child components during\n+93 // refinement, but some -- notably the designation of a component as semi-\n+94 // sharp -- require re-determination as sharpness values are reduced at each\n+95 // level.\n+96 //\n+97 struct VTag {\n+98 VTag() { }\n+99\n+100 // When cleared, the VTag ALMOST represents a smooth, regular, interior\n+101 // vertex -- the Type enum requires a bit be explicitly set for Smooth,\n+102 // so that must be done explicitly if desired on initialization.\n+103 void clear() { std::memset((void*) this, 0, sizeof(VTag)); }\n+104\n+105 typedef unsigned short VTagSize;\n+106\n+107 VTagSize _nonManifold : 1; // fixed\n+108 VTagSize _xordinary : 1; // fixed\n+109 VTagSize _boundary : 1; // fixed\n+110 VTagSize _corner : 1; // fixed\n+111 VTagSize _infSharp : 1; // fixed\n+112 VTagSize _semiSharp : 1; // variable\n+113 VTagSize _semiSharpEdges : 1; // variable\n+114 VTagSize _rule : 4; // variable when _semiSharp\n+115\n+116 // These next to tags are complementary -- the \"incomplete\" tag is only\n+117 // relevant for refined levels while the \"incident an irregular face\" tag\n+118 // is only relevant for the base level. They could be combined as both\n+119 // indicate \"no full regular ring\" around a vertex\n+120 VTagSize _incomplete : 1; // variable only set in refined levels\n+121 VTagSize _incidIrregFace : 1; // variable only set in base level\n+122\n+123 // Tags indicating incident infinitely-sharp (permanent) features\n+124 VTagSize _infSharpEdges : 1; // fixed\n+125 VTagSize _infSharpCrease : 1; // fixed\n+126 VTagSize _infIrregular : 1; // fixed\n+127\n+128 // Alternate constructor and accessor for dealing with integer bits\n+directly:\n+129 explicit VTag(VTagSize bits) {\n+130 std::memcpy(this, &bits, sizeof(bits));\n+131 }\n+132 VTagSize getBits() const {\n+133 VTagSize bits;\n+134 std::memcpy(&bits, this, sizeof(bits));\n+135 return bits;\n+136 }\n+137\n+138 static VTag BitwiseOr(VTag const vTags[], int size = 4);\n+139 };\n+140 struct ETag {\n+141 ETag() { }\n+142\n+143 // When cleared, the ETag represents a smooth, manifold, interior edge\n+144 void clear() { std::memset((void*) this, 0, sizeof(ETag)); }\n+145\n+146 typedef unsigned char ETagSize;\n+147\n+148 ETagSize _nonManifold : 1; // fixed\n+149 ETagSize _boundary : 1; // fixed\n+150 ETagSize _infSharp : 1; // fixed\n+151 ETagSize _semiSharp : 1; // variable\n+152\n+153 // Alternate constructor and accessor for dealing with integer bits\n+directly:\n+154 explicit ETag(ETagSize bits) {\n+155 std::memcpy(this, &bits, sizeof(bits));\n+156 }\n+157 ETagSize getBits() const {\n+158 ETagSize bits;\n+159 std::memcpy(&bits, this, sizeof(bits));\n+160 return bits;\n+161 }\n+162\n+163 static ETag BitwiseOr(ETag const eTags[], int size = 4);\n+164 };\n+165 struct FTag {\n+166 FTag() { }\n+167\n+168 void clear() { std::memset((void*) this, 0, sizeof(FTag)); }\n+169\n+170 typedef unsigned char FTagSize;\n+171\n+172 FTagSize _hole : 1; // fixed\n+173\n+174 // On deck -- coming soon...\n+175 //FTagSize _hasEdits : 1; // variable\n+176 };\n+177\n+178 // Additional simple struct to identify a \"span\" around a vertex, i.e. a\n+179 // subset of the faces around a vertex delimited by some property (e.g. a\n+180 // face-varying discontinuity, an inf-sharp edge, etc.)\n+181 //\n+182 // The span requires an \"origin\" and a \"size\" to fully define its extent.\n+183 // Use of the size is required over a leading/trailing pair as the valence\n+184 // around a non-manifold vertex cannot be trivially determined from two\n+185 // extremeties. Similarly a start face is chosen over an edge as starting\n+186 // with a manifold edge is ambiguous. Additional tags also support\n+187 // non-manifold cases, e.g. periodic spans at the apex of a double cone.\n+188 //\n+189 // Currently setting the size to 0 or leaving the span \"unassigned\" is an\n+190 // indication to use the full neighborhood rather than a subset -- prefer\n+191 // use of the const method here to direct inspection of the member.\n+192 //\n+193 struct VSpan {\n+194 VSpan() { std::memset((void*) this, 0, sizeof(VSpan)); }\n+195\n+196 void clear() { std::memset((void*) this, 0, sizeof(VSpan)); }\n+197 bool isAssigned() const { return _numFaces > 0; }\n+198\n+199 _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx _numFaces;\n+200 _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx _startFace;\n+201 _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx _cornerInSpan;\n+202\n+203 unsigned short _periodic : 1;\n+204 unsigned short _sharp : 1;\n+205 };\n+206\n+207public:\n+208 Level();\n+209 ~Level();\n+210\n+211 // Simple accessors:\n+212 int getDepth() const { return _depth; }\n+213\n+214 int getNumVertices() const { return _vertCount; }\n+215 int getNumFaces() const { return _faceCount; }\n+216 int getNumEdges() const { return _edgeCount; }\n+217\n+218 // More global sizes may prove useful...\n+219 int getNumFaceVerticesTotal() const { return (int) _faceVertIndices.size();\n+}\n+220 int getNumFaceEdgesTotal() const { return (int) _faceEdgeIndices.size(); }\n+221 int getNumEdgeVerticesTotal() const { return (int) _edgeVertIndices.size();\n+}\n+222 int getNumEdgeFacesTotal() const { return (int) _edgeFaceIndices.size(); }\n+223 int getNumVertexFacesTotal() const { return (int) _vertFaceIndices.size();\n+}\n+224 int getNumVertexEdgesTotal() const { return (int) _vertEdgeIndices.size();\n+}\n+225\n+226 int getMaxValence() const { return _maxValence; }\n+227 int getMaxEdgeFaces() const { return _maxEdgeFaces; }\n+228\n+229 // Methods to access the relation tables/indices -- note that for some\n+relations\n+230 // (i.e. those where a component is \"contained by\" a neighbor, or more\n+generally\n+231 // when the neighbor is a simplex of higher dimension) we store an\n+additional\n+232 // \"local index\", e.g. for the case of vert-faces if one of the faces F[i]\n+is\n+233 // incident a vertex V, then L[i] is the \"local index\" in F[i] of vertex V.\n+234 // Once have only quads (or tris), this local index need only occupy two\n+bits\n+235 // and could conceivably be packed into the same integer as the face index,\n+but\n+236 // for now, given the need to support faces of potentially high valence\n+we'll\n+237 // use an 8- or 16-bit integer.\n+238 //\n+239 // Methods to access the six topological relations:\n+240 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getFaceVertices(_\bI_\bn_\bd_\be_\bx faceIndex) const;\n+241 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getFaceEdges(_\bI_\bn_\bd_\be_\bx faceIndex) const;\n+242 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getEdgeVertices(_\bI_\bn_\bd_\be_\bx edgeIndex) const;\n+243 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getEdgeFaces(_\bI_\bn_\bd_\be_\bx edgeIndex) const;\n+244 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getVertexFaces(_\bI_\bn_\bd_\be_\bx vertIndex) const;\n+245 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getVertexEdges(_\bI_\bn_\bd_\be_\bx vertIndex) const;\n+246\n+247 _\bC_\bo_\bn_\bs_\bt_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getEdgeFaceLocalIndices(_\bI_\bn_\bd_\be_\bx edgeIndex) const;\n+248 _\bC_\bo_\bn_\bs_\bt_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getVertexFaceLocalIndices(_\bI_\bn_\bd_\be_\bx vertIndex) const;\n+249 _\bC_\bo_\bn_\bs_\bt_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getVertexEdgeLocalIndices(_\bI_\bn_\bd_\be_\bx vertIndex) const;\n+250\n+251 // Replace these with access to sharpness buffers/arrays rather than\n+elements:\n+252 float getEdgeSharpness(_\bI_\bn_\bd_\be_\bx edgeIndex) const;\n+253 float getVertexSharpness(_\bI_\bn_\bd_\be_\bx vertIndex) const;\n+254 _\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be getVertexRule(_\bI_\bn_\bd_\be_\bx vertIndex) const;\n+255\n+256 _\bI_\bn_\bd_\be_\bx findEdge(_\bI_\bn_\bd_\be_\bx v0Index, _\bI_\bn_\bd_\be_\bx v1Index) const;\n+257\n+258 // Holes\n+259 void setFaceHole(_\bI_\bn_\bd_\be_\bx faceIndex, bool b);\n+260 bool isFaceHole(_\bI_\bn_\bd_\be_\bx faceIndex) const;\n+261\n+262 // Face-varying\n+263 Sdc::Options getFVarOptions(int channel) const;\n+264 int getNumFVarChannels() const { return (int) _fvarChannels.size(); }\n+265 int getNumFVarValues(int channel) const;\n+266 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getFaceFVarValues(_\bI_\bn_\bd_\be_\bx faceIndex, int channel) const;\n+267\n+268 FVarLevel & getFVarLevel(int channel) { return *_fvarChannels[channel]; }\n+269 FVarLevel const & getFVarLevel(int channel) const { return *_fvarChannels\n+[channel]; }\n+270\n+271 // Manifold/non-manifold tags:\n+272 void setEdgeNonManifold(_\bI_\bn_\bd_\be_\bx edgeIndex, bool b);\n+273 bool isEdgeNonManifold(_\bI_\bn_\bd_\be_\bx edgeIndex) const;\n+274\n+275 void setVertexNonManifold(_\bI_\bn_\bd_\be_\bx vertIndex, bool b);\n+276 bool isVertexNonManifold(_\bI_\bn_\bd_\be_\bx vertIndex) const;\n+277\n+278 // General access to all component tags:\n+279 VTag const & getVertexTag(_\bI_\bn_\bd_\be_\bx vertIndex) const { return _vertTags\n+[vertIndex]; }\n+280 ETag const & getEdgeTag(_\bI_\bn_\bd_\be_\bx edgeIndex) const { return _edgeTags\n+[edgeIndex]; }\n+281 FTag const & getFaceTag(_\bI_\bn_\bd_\be_\bx faceIndex) const { return _faceTags\n+[faceIndex]; }\n+282\n+283 VTag & getVertexTag(_\bI_\bn_\bd_\be_\bx vertIndex) { return _vertTags[vertIndex]; }\n+284 ETag & getEdgeTag(_\bI_\bn_\bd_\be_\bx edgeIndex) { return _edgeTags[edgeIndex]; }\n+285 FTag & getFaceTag(_\bI_\bn_\bd_\be_\bx faceIndex) { return _faceTags[faceIndex]; }\n+286\n+287public:\n+288\n+289 // Debugging aides:\n+290 enum TopologyError {\n+291 TOPOLOGY_MISSING_EDGE_FACES=0,\n+292 TOPOLOGY_MISSING_EDGE_VERTS,\n+293 TOPOLOGY_MISSING_FACE_EDGES,\n+294 TOPOLOGY_MISSING_FACE_VERTS,\n+295 TOPOLOGY_MISSING_VERT_FACES,\n+296 TOPOLOGY_MISSING_VERT_EDGES,\n+297\n+298 TOPOLOGY_FAILED_CORRELATION_EDGE_FACE,\n+299 TOPOLOGY_FAILED_CORRELATION_FACE_VERT,\n+300 TOPOLOGY_FAILED_CORRELATION_FACE_EDGE,\n+301\n+302 TOPOLOGY_FAILED_ORIENTATION_INCIDENT_EDGE,\n+303 TOPOLOGY_FAILED_ORIENTATION_INCIDENT_FACE,\n+304 TOPOLOGY_FAILED_ORIENTATION_INCIDENT_FACES_EDGES,\n+305\n+306 TOPOLOGY_DEGENERATE_EDGE,\n+307 TOPOLOGY_NON_MANIFOLD_EDGE,\n+308\n+309 TOPOLOGY_INVALID_CREASE_EDGE,\n+310 TOPOLOGY_INVALID_CREASE_VERT\n+311 };\n+312\n+313 static char const * getTopologyErrorString(TopologyError errCode);\n+314\n+315 typedef void (* ValidationCallback)(TopologyError errCode, char const *\n+msg, void const * clientData);\n+316\n+317 bool validateTopology(ValidationCallback callback=0, void const *\n+clientData=0) const;\n+318\n+319 void print(const Refinement* parentRefinement = 0) const;\n+320\n+321public:\n+322 // High-level topology queries -- these may be moved elsewhere:\n+323\n+324 bool isSingleCreasePatch(_\bI_\bn_\bd_\be_\bx face, float* sharpnessOut=NULL, int*\n+rotationOut=NULL) const;\n+325\n+326 //\n+327 // When inspecting topology, the component tags -- particularly VTag and\n+ETag -- are most\n+328 // often inspected in groups for the face to which they belong. They are\n+designed to be\n+329 // bitwise OR'd (the result then referred to as a \"composite\" tag) to make\n+quick decisions\n+330 // about the face as a whole to avoid tedious topological inspection.\n+331 //\n+332 // The same logic can be applied to topology in a FVar channel when tags\n+specific to that\n+333 // channel are used. Note that the VTags apply to the FVar values assigned\n+to the corners\n+334 // of the face and not the vertex as a whole. The \"composite\" face-varying\n+VTag for a\n+335 // vertex is the union of VTags of all distinct FVar values for that\n+vertex.\n+336 //\n+337 bool doesVertexFVarTopologyMatch(_\bI_\bn_\bd_\be_\bx vIndex, int fvarChannel) const;\n+338 bool doesFaceFVarTopologyMatch( _\bI_\bn_\bd_\be_\bx fIndex, int fvarChannel) const;\n+339 bool doesEdgeFVarTopologyMatch( _\bI_\bn_\bd_\be_\bx eIndex, int fvarChannel) const;\n+340\n+341 void getFaceVTags(_\bI_\bn_\bd_\be_\bx fIndex, VTag vTags[], int fvarChannel = -1) const;\n+342 void getFaceETags(_\bI_\bn_\bd_\be_\bx fIndex, ETag eTags[], int fvarChannel = -1) const;\n+343\n+344 VTag getFaceCompositeVTag(_\bI_\bn_\bd_\be_\bx fIndex, int fvarChannel = -1) const;\n+345 VTag getFaceCompositeVTag(_\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by & fVerts) const;\n+346\n+347 VTag getVertexCompositeFVarVTag(_\bI_\bn_\bd_\be_\bx vIndex, int fvarChannel) const;\n+348\n+349 //\n+350 // When gathering \"patch points\" we may want the indices of the vertices or\n+the corresponding\n+351 // FVar values for a particular channel. Both are represented and equally\n+accessible within\n+352 // the faces, so we allow all to be returned through these methods. Setting\n+the optional FVar\n+353 // channel to -1 will retrieve indices of vertices instead of FVar values:\n+354 //\n+355 int gatherQuadLinearPatchPoints(_\bI_\bn_\bd_\be_\bx fIndex, _\bI_\bn_\bd_\be_\bx patchPoints[], int\n+rotation = 0,\n+356 int fvarChannel = -1) const;\n+357\n+358 int gatherQuadRegularInteriorPatchPoints(_\bI_\bn_\bd_\be_\bx fIndex, _\bI_\bn_\bd_\be_\bx patchPoints[],\n+int rotation = 0,\n+359 int fvarChannel = -1) const;\n+360 int gatherQuadRegularBoundaryPatchPoints(_\bI_\bn_\bd_\be_\bx fIndex, _\bI_\bn_\bd_\be_\bx patchPoints[],\n+int boundaryEdgeInFace,\n+361 int fvarChannel = -1) const;\n+362 int gatherQuadRegularCornerPatchPoints( _\bI_\bn_\bd_\be_\bx fIndex, _\bI_\bn_\bd_\be_\bx patchPoints[],\n+int cornerVertInFace,\n+363 int fvarChannel = -1) const;\n+364\n+365 int gatherQuadRegularRingAroundVertex(_\bI_\bn_\bd_\be_\bx vIndex, _\bI_\bn_\bd_\be_\bx ringPoints[],\n+366 int fvarChannel = -1) const;\n+367 int gatherQuadRegularPartialRingAroundVertex(_\bI_\bn_\bd_\be_\bx vIndex, VSpan const &\n+span, _\bI_\bn_\bd_\be_\bx ringPoints[],\n+368 int fvarChannel = -1) const;\n+369\n+370 // WIP -- for future use, need to extend for face-varying...\n+371 int gatherTriRegularInteriorPatchPoints( _\bI_\bn_\bd_\be_\bx fIndex, _\bI_\bn_\bd_\be_\bx patchVerts[],\n+int rotation = 0) const;\n+372 int gatherTriRegularBoundaryVertexPatchPoints(_\bI_\bn_\bd_\be_\bx fIndex, _\bI_\bn_\bd_\be_\bx\n+patchVerts[], int boundaryVertInFace) const;\n+373 int gatherTriRegularBoundaryEdgePatchPoints( _\bI_\bn_\bd_\be_\bx fIndex, _\bI_\bn_\bd_\be_\bx patchVerts\n+[], int boundaryEdgeInFace) const;\n+374 int gatherTriRegularCornerVertexPatchPoints( _\bI_\bn_\bd_\be_\bx fIndex, _\bI_\bn_\bd_\be_\bx patchVerts\n+[], int cornerVertInFace) const;\n+375 int gatherTriRegularCornerEdgePatchPoints( _\bI_\bn_\bd_\be_\bx fIndex, _\bI_\bn_\bd_\be_\bx patchVerts\n+[], int cornerEdgeInFace) const;\n+376\n+377public:\n+378 // Sizing methods used to construct a level to populate:\n+379 void resizeFaces( int numFaces);\n+380 void resizeFaceVertices(int numFaceVertsTotal);\n+381 void resizeFaceEdges( int numFaceEdgesTotal);\n+382\n+383 void resizeEdges( int numEdges);\n+384 void resizeEdgeVertices(); // always 2*edgeCount\n+385 void resizeEdgeFaces(int numEdgeFacesTotal);\n+386\n+387 void resizeVertices( int numVertices);\n+388 void resizeVertexFaces(int numVertexFacesTotal);\n+389 void resizeVertexEdges(int numVertexEdgesTotal);\n+390\n+391 void setMaxValence(int maxValence);\n+392\n+393 // Modifiers to populate the relations for each component:\n+394 _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getFaceVertices(_\bI_\bn_\bd_\be_\bx faceIndex);\n+395 _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getFaceEdges(_\bI_\bn_\bd_\be_\bx faceIndex);\n+396 _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getEdgeVertices(_\bI_\bn_\bd_\be_\bx edgeIndex);\n+397 _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getEdgeFaces(_\bI_\bn_\bd_\be_\bx edgeIndex);\n+398 _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getVertexFaces(_\bI_\bn_\bd_\be_\bx vertIndex);\n+399 _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getVertexEdges(_\bI_\bn_\bd_\be_\bx vertIndex);\n+400\n+401 _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getEdgeFaceLocalIndices(_\bI_\bn_\bd_\be_\bx edgeIndex);\n+402 _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getVertexFaceLocalIndices(_\bI_\bn_\bd_\be_\bx vertIndex);\n+403 _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getVertexEdgeLocalIndices(_\bI_\bn_\bd_\be_\bx vertIndex);\n+404\n+405 // Replace these with access to sharpness buffers/arrays rather than\n+elements:\n+406 float& getEdgeSharpness(_\bI_\bn_\bd_\be_\bx edgeIndex);\n+407 float& getVertexSharpness(_\bI_\bn_\bd_\be_\bx vertIndex);\n+408\n+409 // Create, destroy and populate face-varying channels:\n+410 int createFVarChannel(int fvarValueCount, Sdc::Options const& options);\n+411 void destroyFVarChannel(int channel);\n+412\n+413 _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getFaceFVarValues(_\bI_\bn_\bd_\be_\bx faceIndex, int channel);\n+414\n+415 void completeFVarChannelTopology(int channel, int regBoundaryValence);\n+416\n+417 // Counts and offsets for all relation types:\n+418 // - these may be unwarranted if we let Refinement access members\n+directly...\n+419 int getNumFaceVertices( _\bI_\bn_\bd_\be_\bx faceIndex) const { return\n+_faceVertCountsAndOffsets[2*faceIndex]; }\n+420 int getOffsetOfFaceVertices(_\bI_\bn_\bd_\be_\bx faceIndex) const { return\n+_faceVertCountsAndOffsets[2*faceIndex + 1]; }\n+421\n+422 int getNumFaceEdges( _\bI_\bn_\bd_\be_\bx faceIndex) const { return getNumFaceVertices\n+(faceIndex); }\n+423 int getOffsetOfFaceEdges(_\bI_\bn_\bd_\be_\bx faceIndex) const { return\n+getOffsetOfFaceVertices(faceIndex); }\n+424\n+425 int getNumEdgeVertices( _\bI_\bn_\bd_\be_\bx ) const { return 2; }\n+426 int getOffsetOfEdgeVertices(_\bI_\bn_\bd_\be_\bx edgeIndex) const { return 2 * edgeIndex;\n+}\n+427\n+428 int getNumEdgeFaces( _\bI_\bn_\bd_\be_\bx edgeIndex) const { return\n+_edgeFaceCountsAndOffsets[2*edgeIndex]; }\n+429 int getOffsetOfEdgeFaces(_\bI_\bn_\bd_\be_\bx edgeIndex) const { return\n+_edgeFaceCountsAndOffsets[2*edgeIndex + 1]; }\n+430\n+431 int getNumVertexFaces( _\bI_\bn_\bd_\be_\bx vertIndex) const { return\n+_vertFaceCountsAndOffsets[2*vertIndex]; }\n+432 int getOffsetOfVertexFaces(_\bI_\bn_\bd_\be_\bx vertIndex) const { return\n+_vertFaceCountsAndOffsets[2*vertIndex + 1]; }\n+433\n+434 int getNumVertexEdges( _\bI_\bn_\bd_\be_\bx vertIndex) const { return\n+_vertEdgeCountsAndOffsets[2*vertIndex]; }\n+435 int getOffsetOfVertexEdges(_\bI_\bn_\bd_\be_\bx vertIndex) const { return\n+_vertEdgeCountsAndOffsets[2*vertIndex + 1]; }\n+436\n+437 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getFaceVertices() const;\n+438\n+439 //\n+440 // Note that for some relations, the size of the relations for a child\n+component\n+441 // can vary radically from its parent due to the sparsity of the\n+refinement. So\n+442 // in these cases a few additional utilities are provided to help define\n+the set\n+443 // of incident components. Assuming adequate memory has been allocated, the\n+444 // \"resize\" methods here initialize the set of incident components by\n+setting\n+445 // both the size and the appropriate offset, while \"trim\" is use to quickly\n+lower\n+446 // the size from an upper bound and nothing else.\n+447 //\n+448 void resizeFaceVertices(_\bI_\bn_\bd_\be_\bx FaceIndex, int count);\n+449\n+450 void resizeEdgeFaces(_\bI_\bn_\bd_\be_\bx edgeIndex, int count);\n+451 void trimEdgeFaces( _\bI_\bn_\bd_\be_\bx edgeIndex, int count);\n+452\n+453 void resizeVertexFaces(_\bI_\bn_\bd_\be_\bx vertIndex, int count);\n+454 void trimVertexFaces( _\bI_\bn_\bd_\be_\bx vertIndex, int count);\n+455\n+456 void resizeVertexEdges(_\bI_\bn_\bd_\be_\bx vertIndex, int count);\n+457 void trimVertexEdges( _\bI_\bn_\bd_\be_\bx vertIndex, int count);\n+458\n+459public:\n+460 //\n+461 // Initial plans were to have a few specific classes properly construct the\n+462 // topology from scratch, e.g. the Refinement class and a Factory class for\n+463 // the base level, by populating all topological relations. The need to\n+have\n+464 // a class construct full topology given only a simple face-vertex list,\n+made\n+465 // it necessary to write code to define and orient all relations -- and\n+most\n+466 // of that seemed best placed here.\n+467 //\n+468 bool completeTopologyFromFaceVertices();\n+469 _\bI_\bn_\bd_\be_\bx findEdge(_\bI_\bn_\bd_\be_\bx v0, _\bI_\bn_\bd_\be_\bx v1, _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by v0Edges) const;\n+470\n+471 // Methods supporting the above:\n+472 void orientIncidentComponents();\n+473 bool orderVertexFacesAndEdges(_\bI_\bn_\bd_\be_\bx vIndex, _\bI_\bn_\bd_\be_\bx* vFaces, _\bI_\bn_\bd_\be_\bx* vEdges)\n+const;\n+474 bool orderVertexFacesAndEdges(_\bI_\bn_\bd_\be_\bx vIndex);\n+475 void populateLocalIndices();\n+476\n+477 _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by shareFaceVertCountsAndOffsets() const;\n+478\n+479private:\n+480 // Refinement classes (including all subclasses) build a Level:\n+481 friend class Refinement;\n+482 friend class TriRefinement;\n+483 friend class QuadRefinement;\n+484\n+485 //\n+486 // A Level is independent of subdivision scheme or options. While it may\n+have been\n+487 // affected by them in its construction, they are not associated with it -\n+- a Level\n+488 // is pure topology and any subdivision parameters are external.\n+489 //\n+490\n+491 // Simple members for inventory, etc.\n+492 int _faceCount;\n+493 int _edgeCount;\n+494 int _vertCount;\n+495\n+496 // The \"depth\" member is clearly useful in both the topological splitting\n+and the\n+497 // stencil queries, but arguably it ties the Level to a hierarchy which\n+counters\n+498 // the idea of it being independent.\n+499 int _depth;\n+500\n+501 // Maxima to help clients manage sizing of data buffers. Given \"max\n+valence\",\n+502 // the \"max edge faces\" is strictly redundant as it will always be less,\n+but\n+503 // since it will typically be so much less (i.e. 2) it is kept for now.\n+504 int _maxEdgeFaces;\n+505 int _maxValence;\n+506\n+507 //\n+508 // Topology vectors:\n+509 // Note that of all of these, only data for the face-edge relation is not\n+510 // stored in the osd::FarTables in any form. The FarTable vectors combine\n+511 // the edge-vert and edge-face relations. The eventual goal is that this\n+512 // data be part of the osd::Far classes and be a superset of the FarTable\n+513 // vectors, i.e. no data duplication or conversion. The fact that FarTable\n+514 // already stores 5 of the 6 possible relations should make the topology\n+515 // storage as a whole a non-issue.\n+516 //\n+517 // The vert-face-child and vert-edge-child indices are also arguably not\n+518 // a topology relation but more one for parent/child relations. But it is\n+519 // a topological relationship, and if named differently would not likely\n+520 // raise this. It has been named with \"child\" in the name as it does play\n+521 // a more significant role during subdivision in mapping between parent\n+522 // and child components, and so has been named to reflect that more\n+clearly.\n+523 //\n+524\n+525 // Per-face:\n+526 std::vector<Index> _faceVertCountsAndOffsets; // 2 per face, redundant\n+after level 0\n+527 std::vector<Index> _faceVertIndices; // 3 or 4 per face, variable at level\n+0\n+528 std::vector<Index> _faceEdgeIndices; // matches face-vert indices\n+529 std::vector<FTag> _faceTags; // 1 per face: includes \"hole\" tag\n+530\n+531 // Per-edge:\n+532 std::vector<Index> _edgeVertIndices; // 2 per edge\n+533 std::vector<Index> _edgeFaceCountsAndOffsets; // 2 per edge\n+534 std::vector<Index> _edgeFaceIndices; // varies with faces per edge\n+535 std::vector<LocalIndex> _edgeFaceLocalIndices; // varies with faces per\n+edge\n+536\n+537 std::vector<float> _edgeSharpness; // 1 per edge\n+538 std::vector<ETag> _edgeTags; // 1 per edge: manifold, boundary, etc.\n+539\n+540 // Per-vertex:\n+541 std::vector<Index> _vertFaceCountsAndOffsets; // 2 per vertex\n+542 std::vector<Index> _vertFaceIndices; // varies with valence\n+543 std::vector<LocalIndex> _vertFaceLocalIndices; // varies with valence, 8-\n+bit for now\n+544\n+545 std::vector<Index> _vertEdgeCountsAndOffsets; // 2 per vertex\n+546 std::vector<Index> _vertEdgeIndices; // varies with valence\n+547 std::vector<LocalIndex> _vertEdgeLocalIndices; // varies with valence, 8-\n+bit for now\n+548\n+549 std::vector<float> _vertSharpness; // 1 per vertex\n+550 std::vector<VTag> _vertTags; // 1 per vertex: manifold, Sdc::Rule, etc.\n+551\n+552 // Face-varying channels:\n+553 std::vector<FVarLevel*> _fvarChannels;\n+554};\n+555\n+556//\n+557// Access/modify the vertices incident a given face:\n+558//\n+559inline _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n+560Level::getFaceVertices(_\bI_\bn_\bd_\be_\bx faceIndex) const {\n+561 return _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by(&_faceVertIndices[_faceVertCountsAndOffsets\n+[faceIndex*2+1]],\n+562 _faceVertCountsAndOffsets[faceIndex*2]);\n+563}\n+564inline _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n+565Level::getFaceVertices(_\bI_\bn_\bd_\be_\bx faceIndex) {\n+566 return _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by(&_faceVertIndices[_faceVertCountsAndOffsets\n+[faceIndex*2+1]],\n+567 _faceVertCountsAndOffsets[faceIndex*2]);\n+568}\n+569\n+570inline void\n+571Level::resizeFaceVertices(_\bI_\bn_\bd_\be_\bx faceIndex, int count) {\n+572\n+573 int* countOffsetPair = &_faceVertCountsAndOffsets[faceIndex*2];\n+574\n+575 countOffsetPair[0] = count;\n+576 countOffsetPair[1] = (faceIndex == 0) ? 0 : (countOffsetPair[-2] +\n+countOffsetPair[-1]);\n+577\n+578 _maxValence = std::max(_maxValence, count);\n+579}\n+580\n+581inline _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n+582Level::getFaceVertices() const {\n+583 return _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by(&_faceVertIndices[0], (int)_faceVertIndices.size());\n+584}\n+585\n+586//\n+587// Access/modify the edges incident a given face:\n+588//\n+589inline _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n+590Level::getFaceEdges(_\bI_\bn_\bd_\be_\bx faceIndex) const {\n+591 return _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by(&_faceEdgeIndices[_faceVertCountsAndOffsets\n+[faceIndex*2+1]],\n+592 _faceVertCountsAndOffsets[faceIndex*2]);\n+593}\n+594inline _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n+595Level::getFaceEdges(_\bI_\bn_\bd_\be_\bx faceIndex) {\n+596 return _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by(&_faceEdgeIndices[_faceVertCountsAndOffsets\n+[faceIndex*2+1]],\n+597 _faceVertCountsAndOffsets[faceIndex*2]);\n+598}\n+599\n+600//\n+601// Access/modify the faces incident a given vertex:\n+602//\n+603inline _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n+604Level::getVertexFaces(_\bI_\bn_\bd_\be_\bx vertIndex) const {\n+605 return _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by( (&_vertFaceIndices[0]) + _vertFaceCountsAndOffsets\n+[vertIndex*2+1],\n+606 _vertFaceCountsAndOffsets[vertIndex*2]);\n+607}\n+608inline _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n+609Level::getVertexFaces(_\bI_\bn_\bd_\be_\bx vertIndex) {\n+610 return _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by( (&_vertFaceIndices[0]) + _vertFaceCountsAndOffsets\n+[vertIndex*2+1],\n+611 _vertFaceCountsAndOffsets[vertIndex*2]);\n+612}\n+613\n+614inline _\bC_\bo_\bn_\bs_\bt_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n+615Level::getVertexFaceLocalIndices(_\bI_\bn_\bd_\be_\bx vertIndex) const {\n+616 return _\bC_\bo_\bn_\bs_\bt_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by( (&_vertFaceLocalIndices[0]) +\n+_vertFaceCountsAndOffsets[vertIndex*2+1],\n+617 _vertFaceCountsAndOffsets[vertIndex*2]);\n+618}\n+619inline _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n+620Level::getVertexFaceLocalIndices(_\bI_\bn_\bd_\be_\bx vertIndex) {\n+621 return _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by( (&_vertFaceLocalIndices[0]) +\n+_vertFaceCountsAndOffsets[vertIndex*2+1],\n+622 _vertFaceCountsAndOffsets[vertIndex*2]);\n+623}\n+624\n+625inline void\n+626Level::resizeVertexFaces(_\bI_\bn_\bd_\be_\bx vertIndex, int count) {\n+627 int* countOffsetPair = &_vertFaceCountsAndOffsets[vertIndex*2];\n+628\n+629 countOffsetPair[0] = count;\n+630 countOffsetPair[1] = (vertIndex == 0) ? 0 : (countOffsetPair[-2] +\n+countOffsetPair[-1]);\n+631}\n+632inline void\n+633Level::trimVertexFaces(_\bI_\bn_\bd_\be_\bx vertIndex, int count) {\n+634 _vertFaceCountsAndOffsets[vertIndex*2] = count;\n+635}\n+636\n+637//\n+638// Access/modify the edges incident a given vertex:\n+639//\n+640inline _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n+641Level::getVertexEdges(_\bI_\bn_\bd_\be_\bx vertIndex) const {\n+642 return _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by( (&_vertEdgeIndices[0]) +_vertEdgeCountsAndOffsets\n+[vertIndex*2+1],\n+643 _vertEdgeCountsAndOffsets[vertIndex*2]);\n+644}\n+645inline _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n+646Level::getVertexEdges(_\bI_\bn_\bd_\be_\bx vertIndex) {\n+647 return _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by( (&_vertEdgeIndices[0]) +_vertEdgeCountsAndOffsets\n+[vertIndex*2+1],\n+648 _vertEdgeCountsAndOffsets[vertIndex*2]);\n+649}\n+650\n+651inline _\bC_\bo_\bn_\bs_\bt_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n+652Level::getVertexEdgeLocalIndices(_\bI_\bn_\bd_\be_\bx vertIndex) const {\n+653 return _\bC_\bo_\bn_\bs_\bt_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by( (&_vertEdgeLocalIndices[0]) +\n+_vertEdgeCountsAndOffsets[vertIndex*2+1],\n+654 _vertEdgeCountsAndOffsets[vertIndex*2]);\n+655}\n+656inline _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n+657Level::getVertexEdgeLocalIndices(_\bI_\bn_\bd_\be_\bx vertIndex) {\n+658 return _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by( (&_vertEdgeLocalIndices[0]) +\n+_vertEdgeCountsAndOffsets[vertIndex*2+1],\n+659 _vertEdgeCountsAndOffsets[vertIndex*2]);\n+660}\n+661\n+662inline void\n+663Level::resizeVertexEdges(_\bI_\bn_\bd_\be_\bx vertIndex, int count) {\n+664 int* countOffsetPair = &_vertEdgeCountsAndOffsets[vertIndex*2];\n+665\n+666 countOffsetPair[0] = count;\n+667 countOffsetPair[1] = (vertIndex == 0) ? 0 : (countOffsetPair[-2] +\n+countOffsetPair[-1]);\n+668\n+669 _maxValence = std::max(_maxValence, count);\n+670}\n+671inline void\n+672Level::trimVertexEdges(_\bI_\bn_\bd_\be_\bx vertIndex, int count) {\n+673 _vertEdgeCountsAndOffsets[vertIndex*2] = count;\n+674}\n+675\n+676inline void\n+677Level::setMaxValence(int valence) {\n+678 _maxValence = valence;\n+679}\n+680\n+681//\n+682// Access/modify the vertices incident a given edge:\n+683//\n+684inline _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n+685Level::getEdgeVertices(_\bI_\bn_\bd_\be_\bx edgeIndex) const {\n+686 return _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by(&_edgeVertIndices[edgeIndex*2], 2);\n+687}\n+688inline _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n+689Level::getEdgeVertices(_\bI_\bn_\bd_\be_\bx edgeIndex) {\n+690 return _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by(&_edgeVertIndices[edgeIndex*2], 2);\n+691}\n+692\n+693//\n+694// Access/modify the faces incident a given edge:\n+695//\n+696inline _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n+697Level::getEdgeFaces(_\bI_\bn_\bd_\be_\bx edgeIndex) const {\n+698 return _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by(&_edgeFaceIndices[0] +\n+699 _edgeFaceCountsAndOffsets[edgeIndex*2+1],\n+700 _edgeFaceCountsAndOffsets[edgeIndex*2]);\n+701}\n+702inline _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n+703Level::getEdgeFaces(_\bI_\bn_\bd_\be_\bx edgeIndex) {\n+704 return _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by(&_edgeFaceIndices[0] +\n+705 _edgeFaceCountsAndOffsets[edgeIndex*2+1],\n+706 _edgeFaceCountsAndOffsets[edgeIndex*2]);\n+707}\n+708\n+709inline _\bC_\bo_\bn_\bs_\bt_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n+710Level::getEdgeFaceLocalIndices(_\bI_\bn_\bd_\be_\bx edgeIndex) const {\n+711 return _\bC_\bo_\bn_\bs_\bt_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by(&_edgeFaceLocalIndices[0] +\n+712 _edgeFaceCountsAndOffsets[edgeIndex*2+1],\n+713 _edgeFaceCountsAndOffsets[edgeIndex*2]);\n+714}\n+715inline _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n+716Level::getEdgeFaceLocalIndices(_\bI_\bn_\bd_\be_\bx edgeIndex) {\n+717 return _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by(&_edgeFaceLocalIndices[0] +\n+718 _edgeFaceCountsAndOffsets[edgeIndex*2+1],\n+719 _edgeFaceCountsAndOffsets[edgeIndex*2]);\n+720}\n+721\n+722inline void\n+723Level::resizeEdgeFaces(_\bI_\bn_\bd_\be_\bx edgeIndex, int count) {\n+724 int* countOffsetPair = &_edgeFaceCountsAndOffsets[edgeIndex*2];\n+725\n+726 countOffsetPair[0] = count;\n+727 countOffsetPair[1] = (edgeIndex == 0) ? 0 : (countOffsetPair[-2] +\n+countOffsetPair[-1]);\n+728\n+729 _maxEdgeFaces = std::max(_maxEdgeFaces, count);\n+730}\n+731inline void\n+732Level::trimEdgeFaces(_\bI_\bn_\bd_\be_\bx edgeIndex, int count) {\n+733 _edgeFaceCountsAndOffsets[edgeIndex*2] = count;\n+734}\n+735\n+736//\n+737// Access/modify sharpness values:\n+738//\n+739inline float\n+740Level::getEdgeSharpness(_\bI_\bn_\bd_\be_\bx edgeIndex) const {\n+741 return _edgeSharpness[edgeIndex];\n+742}\n+743inline float&\n+744Level::getEdgeSharpness(_\bI_\bn_\bd_\be_\bx edgeIndex) {\n+745 return _edgeSharpness[edgeIndex];\n+746}\n+747\n+748inline float\n+749Level::getVertexSharpness(_\bI_\bn_\bd_\be_\bx vertIndex) const {\n+750 return _vertSharpness[vertIndex];\n+751}\n+752inline float&\n+753Level::getVertexSharpness(_\bI_\bn_\bd_\be_\bx vertIndex) {\n+754 return _vertSharpness[vertIndex];\n+755}\n+756\n+757inline _\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be\n+758Level::getVertexRule(_\bI_\bn_\bd_\be_\bx vertIndex) const {\n+759 return (_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be) _vertTags[vertIndex]._rule;\n+760}\n+761\n+762//\n+763// Access/modify hole tag:\n+764//\n+765inline void\n+766Level::setFaceHole(_\bI_\bn_\bd_\be_\bx faceIndex, bool b) {\n+767 _faceTags[faceIndex]._hole = b;\n+768}\n+769inline bool\n+770Level::isFaceHole(_\bI_\bn_\bd_\be_\bx faceIndex) const {\n+771 return _faceTags[faceIndex]._hole;\n+772}\n+773\n+774//\n+775// Access/modify non-manifold tags:\n+776//\n+777inline void\n+778Level::setEdgeNonManifold(_\bI_\bn_\bd_\be_\bx edgeIndex, bool b) {\n+779 _edgeTags[edgeIndex]._nonManifold = b;\n+780}\n+781inline bool\n+782Level::isEdgeNonManifold(_\bI_\bn_\bd_\be_\bx edgeIndex) const {\n+783 return _edgeTags[edgeIndex]._nonManifold;\n+784}\n+785\n+786inline void\n+787Level::setVertexNonManifold(_\bI_\bn_\bd_\be_\bx vertIndex, bool b) {\n+788 _vertTags[vertIndex]._nonManifold = b;\n+789}\n+790inline bool\n+791Level::isVertexNonManifold(_\bI_\bn_\bd_\be_\bx vertIndex) const {\n+792 return _vertTags[vertIndex]._nonManifold;\n+793}\n+794\n+795//\n+796// Sizing methods to allocate space:\n+797//\n+798inline void\n+799Level::resizeFaces(int faceCount) {\n+800 _faceCount = faceCount;\n+801 _faceVertCountsAndOffsets.resize(2 * faceCount);\n+802\n+803 _faceTags.resize(faceCount);\n+804 std::memset((void*) &_faceTags[0], 0, _faceCount * sizeof(FTag));\n+805}\n+806inline void\n+807Level::resizeFaceVertices(int totalFaceVertCount) {\n+808 _faceVertIndices.resize(totalFaceVertCount);\n+809}\n+810inline void\n+811Level::resizeFaceEdges(int totalFaceEdgeCount) {\n+812 _faceEdgeIndices.resize(totalFaceEdgeCount);\n+813}\n+814\n+815inline void\n+816Level::resizeEdges(int edgeCount) {\n+817\n+818 _edgeCount = edgeCount;\n+819 _edgeFaceCountsAndOffsets.resize(2 * edgeCount);\n+820\n+821 _edgeSharpness.resize(edgeCount);\n+822 _edgeTags.resize(edgeCount);\n+823\n+824 if (edgeCount>0) {\n+825 std::memset((void*) &_edgeTags[0], 0, _edgeCount * sizeof(ETag));\n+826 }\n+827}\n+828inline void\n+829Level::resizeEdgeVertices() {\n+830\n+831 _edgeVertIndices.resize(2 * _edgeCount);\n+832}\n+833inline void\n+834Level::resizeEdgeFaces(int totalEdgeFaceCount) {\n+835\n+836 _edgeFaceIndices.resize(totalEdgeFaceCount);\n+837 _edgeFaceLocalIndices.resize(totalEdgeFaceCount);\n+838}\n+839\n+840inline void\n+841Level::resizeVertices(int vertCount) {\n+842\n+843 _vertCount = vertCount;\n+844 _vertFaceCountsAndOffsets.resize(2 * vertCount);\n+845 _vertEdgeCountsAndOffsets.resize(2 * vertCount);\n+846\n+847 _vertSharpness.resize(vertCount);\n+848 _vertTags.resize(vertCount);\n+849 std::memset((void*) &_vertTags[0], 0, _vertCount * sizeof(VTag));\n+850}\n+851inline void\n+852Level::resizeVertexFaces(int totalVertFaceCount) {\n+853\n+854 _vertFaceIndices.resize(totalVertFaceCount);\n+855 _vertFaceLocalIndices.resize(totalVertFaceCount);\n+856}\n+857inline void\n+858Level::resizeVertexEdges(int totalVertEdgeCount) {\n+859\n+860 _vertEdgeIndices.resize(totalVertEdgeCount);\n+861 _vertEdgeLocalIndices.resize(totalVertEdgeCount);\n+862}\n+863\n+864inline _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n+865Level::shareFaceVertCountsAndOffsets() const {\n+866 // XXXX manuelk we have to force const casting here (classes don't 'share'\n+867 // members usually...)\n+868 return _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by(const_cast<_\bI_\bn_\bd_\be_\bx *>(&_faceVertCountsAndOffsets[0]),\n+869 (int)_faceVertCountsAndOffsets.size());\n+870}\n+871\n+872} // end namespace internal\n+873} // end namespace Vtr\n+874\n+875} // end namespace OPENSUBDIV_VERSION\n+876using namespace OPENSUBDIV_VERSION;\n+877} // end namespace OpenSubdiv\n+878\n+879#endif /* OPENSUBDIV3_VTR_LEVEL_H */\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\bc_\bt_\bo_\br\n-std::vector< PatchArray > PatchArrayVector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b1_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n-Container for arrays of parametric patches.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bd_\b3_\bd_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b4_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static D3D11PatchTable * Create(Far::PatchTable const *farPatchTable,\n-DEVICE_CONTEXT context)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bd_\b3_\bd_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs\n-PatchArrayVector const & GetPatchArrays() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bd_\b3_\bd_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\ba_\bl_\bl_\bo_\bc_\ba_\bt_\be\n-bool allocate(Far::PatchTable const *farPatchTable, ID3D11DeviceContext\n-*deviceContext)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bB_\bi_\bn_\bd_\bi_\bn_\bg\n-ID3D11Buffer * VertexBufferBinding\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bd_\b3_\bd_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b~_\bD_\b3_\bD_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n-~D3D11PatchTable()\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-ID3D11Buffer * GetPatchIndexBuffer() const\n-Returns the index buffer containing the patch control vertices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bd_\b3_\bd_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bp_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs\n-PatchArrayVector _patchArrays\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bd_\b3_\bd_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b8_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bi_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-ID3D11Buffer * _indexBuffer\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bd_\b3_\bd_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b8_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static D3D11PatchTable * Create(Far::PatchTable const *farPatchTable,\n-ID3D11DeviceContext *deviceContext)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br_\bS_\bR_\bV\n-ID3D11ShaderResourceView * _patchParamBufferSRV\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bd_\b3_\bd_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b8_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br\n-ID3D11Buffer * _patchParamBuffer\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bd_\b3_\bd_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b8_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bS_\bR_\bV\n-ID3D11ShaderResourceView * GetPatchParamSRV() const\n-Returns the SRV containing the patch parameter.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bd_\b3_\bd_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n-D3D11PatchTable()\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n+ConstArray< LocalIndex > ConstLocalIndexArray\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b8_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n+Array< LocalIndex > LocalIndexArray\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b8_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx\n+int Index\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b5_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n+ConstArray< Index > ConstIndexArray\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b8_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx\n+unsigned short LocalIndex\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b6_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n+Array< Index > IndexArray\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b7_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be\n+Rule\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b8_\b2\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bd_\b3_\bd_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh\n+    * _\bv_\bt_\br\n+    * _\bl_\be_\bv_\be_\bl_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00818.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00818.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/cpuPatchTable.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/far/stencilTable.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -90,46 +90,66 @@\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> &#124;\n <a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">cpuPatchTable.h File Reference</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">stencilTable.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a01486_source.html\">../far/types.h</a>&quot;</code><br />\n+<code>#include &lt;cassert&gt;</code><br />\n+<code>#include &lt;cstring&gt;</code><br />\n <code>#include &lt;vector&gt;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00773_source.html\">../far/patchDescriptor.h</a>&quot;</code><br />\n-<code>#include &quot;../osd/nonCopyable.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a01489_source.html\">../osd/types.h</a>&quot;</code><br />\n+<code>#include &lt;iostream&gt;</code><br />\n </div>\n <p><a href=\"a00818_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01173.html\">CpuPatchTable</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Cpu patch table.  <a href=\"a01173.html#details\">More...</a><br /></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01053.html\">StencilReal&lt; REAL &gt;</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Vertex stencil descriptor.  <a href=\"a01053.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01057.html\">Stencil</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Vertex stencil class wrapping the template for compatibility.  <a href=\"a01057.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01061.html\">StencilTableReal&lt; REAL &gt;</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Table of subdivision stencils.  <a href=\"a01061.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01065.html\">StencilTable</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"a01057.html\" title=\"Vertex stencil class wrapping the template for compatibility.\">Stencil</a> table class wrapping the template for compatibility.  <a href=\"a01065.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01069.html\">LimitStencilReal&lt; REAL &gt;</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Limit point stencil descriptor.  <a href=\"a01069.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01073.html\">LimitStencil</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Limit point stencil class wrapping the template for compatibility.  <a href=\"a01073.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01077.html\">LimitStencilTableReal&lt; REAL &gt;</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Table of limit subdivision stencils.  <a href=\"a01077.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01081.html\">LimitStencilTable</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Limit stencil table class wrapping the template for compatibility.  <a href=\"a01081.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00818.html\">cpuPatchTable.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7f420b72a822828cfa8b0561c695a5cc.html\">far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00818.html\">stencilTable.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,29 +1,51 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-cpuPatchTable.h File Reference\n+stencilTable.h File Reference\n #include \"../version.h\"\n+#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n+#include <cassert>\n+#include <cstring>\n #include <vector>\n-#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh\"\n-#include \"../osd/nonCopyable.h\"\n-#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n+#include <iostream>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n-\u00a0       Cpu patch table. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b<_\b _\bR_\bE_\bA_\bL_\b _\b>\n+\u00a0       Vertex stencil descriptor. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bS_\bt_\be_\bn_\bc_\bi_\bl\n+\u00a0       Vertex stencil class wrapping the template for compatibility. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\b _\bR_\bE_\bA_\bL_\b _\b>\n+\u00a0       Table of subdivision stencils. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n+\u00a0       _\bS_\bt_\be_\bn_\bc_\bi_\bl table class wrapping the template for compatibility. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b<_\b _\bR_\bE_\bA_\bL_\b _\b>\n+\u00a0       Limit point stencil descriptor. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl\n+\u00a0       Limit point stencil class wrapping the template for compatibility.\n+        _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\b _\bR_\bE_\bA_\bL_\b _\b>\n+\u00a0       Table of limit subdivision stencils. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n+\u00a0       Limit stencil table class wrapping the template for compatibility.\n+        _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n-\u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bc_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh\n+    * _\bf_\ba_\br\n+    * _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00818.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00818.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,3 +1,10 @@\n var a00818 = [\n-    [\"CpuPatchTable\", \"a01173.html\", \"a01173\"]\n+    [\"StencilReal< REAL >\", \"a01053.html\", \"a01053\"],\n+    [\"Stencil\", \"a01057.html\", \"a01057\"],\n+    [\"StencilTableReal< REAL >\", \"a01061.html\", \"a01061\"],\n+    [\"StencilTable\", \"a01065.html\", \"a01065\"],\n+    [\"LimitStencilReal< REAL >\", \"a01069.html\", \"a01069\"],\n+    [\"LimitStencil\", \"a01073.html\", \"a01073\"],\n+    [\"LimitStencilTableReal< REAL >\", \"a01077.html\", \"a01077\"],\n+    [\"LimitStencilTable\", \"a01081.html\", \"a01081\"]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00818_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00818_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/cpuPatchTable.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/far/stencilTable.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">cpuPatchTable.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">stencilTable.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00818.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2015 Pixar</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2013 Pixar</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -119,193 +119,892 @@\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_CPU_PATCH_TABLE_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_CPU_PATCH_TABLE_H</span></div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_FAR_STENCILTABLE_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_FAR_STENCILTABLE_H</span></div>\n <div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n <div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n <div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../far/patchDescriptor.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &quot;../osd/nonCopyable.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"preprocessor\">#include &quot;../osd/types.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span> </div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../far/types.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &lt;cassert&gt;</span></div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"preprocessor\">#include &lt;cstring&gt;</span></div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"preprocessor\">#include &lt;iostream&gt;</span></div>\n <div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n <div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n <div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n <div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span> </div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"keyword\">namespace </span>Far{</div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span>    <span class=\"keyword\">class </span>PatchTable;</div>\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span>};</div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span> </div>\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span><span class=\"keyword\">namespace </span>Osd {</div>\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00059\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01173.html\">   59</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01173.html\">CpuPatchTable</a> {</div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"foldopen\" id=\"foldopen00061\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01173.html#a27ccdd38f0f38adf16a4f5ceac6fed20\">   61</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01173.html\">CpuPatchTable</a> *<a class=\"code hl_function\" href=\"a01173.html#a27ccdd38f0f38adf16a4f5ceac6fed20\">Create</a>(<span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a00993.html\">Far::PatchTable</a> *patchTable,</div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span>                                 <span class=\"keywordtype\">void</span> *deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span>        <span class=\"keywordflow\">return</span> <span class=\"keyword\">new</span> <a class=\"code hl_class\" href=\"a01173.html\">CpuPatchTable</a>(patchTable);</div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span> </div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01173.html#a3c19d1748852f36ba69a6557e5069e08\">   67</a></span>    <span class=\"keyword\">explicit</span> <a class=\"code hl_function\" href=\"a01173.html#a3c19d1748852f36ba69a6557e5069e08\">CpuPatchTable</a>(<span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a00993.html\">Far::PatchTable</a> *patchTable);</div>\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01173.html#a16142cac8dd0880ad2451586633a7999\">   68</a></span>    <a class=\"code hl_function\" href=\"a01173.html#a16142cac8dd0880ad2451586633a7999\">~CpuPatchTable</a>() {}</div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"keyword\">namespace </span>Far {</div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span> </div>\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span><span class=\"comment\">//  Forward declarations for friends:</span></div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"keyword\">class </span>PatchTableBuilder;</div>\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span> </div>\n+<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt; <span class=\"keyword\">class </span>StencilTableFactoryReal;</div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt; <span class=\"keyword\">class </span>LimitStencilTableFactoryReal;</div>\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span> </div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00053\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01053.html\">   53</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01053.html\">StencilReal</a> {</div>\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span> </div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01053.html#a1bacc5a5c4ae6f44d4f06c1dd0adf8f4\">   57</a></span>    <a class=\"code hl_function\" href=\"a01053.html#a1bacc5a5c4ae6f44d4f06c1dd0adf8f4\">StencilReal</a>() {}</div>\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00067\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01053.html#a52ca26745627f4704181d58dc919ae57\">   67</a></span>    <a class=\"code hl_function\" href=\"a01053.html#a52ca26745627f4704181d58dc919ae57\">StencilReal</a>(<span class=\"keywordtype\">int</span> * size, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> * indices, REAL * weights)</div>\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span>        : <a class=\"code hl_variable\" href=\"a01053.html#a52397f1270007c943b8539338a796608\">_size</a>(size), <a class=\"code hl_variable\" href=\"a01053.html#a8b387cbfb5a56ee18bf92d10f3cdad6d\">_indices</a>(indices), <a class=\"code hl_variable\" href=\"a01053.html#aab5755075fff28578bfd3387c504d303\">_weights</a>(weights) { }</div>\n+</div>\n <div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00070\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01173.html#ab6582a6586adaea0803247fb415f8c17\">   70</a></span>    <span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01325.html\">PatchArray</a> *<a class=\"code hl_function\" href=\"a01173.html#ab6582a6586adaea0803247fb415f8c17\">GetPatchArrayBuffer</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>        <span class=\"keywordflow\">return</span> &amp;<a class=\"code hl_variable\" href=\"a01173.html#a5dfb6b58580f2dec58e9b5bfdb4ed9f1\">_patchArrays</a>[0];</div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>    }</div>\n-</div>\n-<div class=\"foldopen\" id=\"foldopen00073\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01173.html#a1934f183cb763099b7452f3569b70fdc\">   73</a></span>    <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> *<a class=\"code hl_function\" href=\"a01173.html#a1934f183cb763099b7452f3569b70fdc\">GetPatchIndexBuffer</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span>        <span class=\"keywordflow\">return</span> &amp;<a class=\"code hl_variable\" href=\"a01173.html#a6e32349421c301eddf366c04c3a28015\">_indexBuffer</a>[0];</div>\n+<div class=\"foldopen\" id=\"foldopen00071\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01053.html#a698f69e8409658c6afaf5ea1ff0f15b8\">   71</a></span>    <a class=\"code hl_function\" href=\"a01053.html#a698f69e8409658c6afaf5ea1ff0f15b8\">StencilReal</a>(<a class=\"code hl_class\" href=\"a01053.html\">StencilReal</a> <span class=\"keyword\">const</span> &amp; other) {</div>\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>        <a class=\"code hl_variable\" href=\"a01053.html#a52397f1270007c943b8539338a796608\">_size</a> = other.<a class=\"code hl_variable\" href=\"a01053.html#a52397f1270007c943b8539338a796608\">_size</a>;</div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span>        <a class=\"code hl_variable\" href=\"a01053.html#a8b387cbfb5a56ee18bf92d10f3cdad6d\">_indices</a> = other.<a class=\"code hl_variable\" href=\"a01053.html#a8b387cbfb5a56ee18bf92d10f3cdad6d\">_indices</a>;</div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span>        <a class=\"code hl_variable\" href=\"a01053.html#aab5755075fff28578bfd3387c504d303\">_weights</a> = other.<a class=\"code hl_variable\" href=\"a01053.html#aab5755075fff28578bfd3387c504d303\">_weights</a>;</div>\n <div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span>    }</div>\n </div>\n-<div class=\"foldopen\" id=\"foldopen00076\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01173.html#a6a81c037eca6f27ea4ef41f39d0a1d50\">   76</a></span>    <span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01329.html\">PatchParam</a> *<a class=\"code hl_function\" href=\"a01173.html#a6a81c037eca6f27ea4ef41f39d0a1d50\">GetPatchParamBuffer</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span>        <span class=\"keywordflow\">return</span> &amp;<a class=\"code hl_variable\" href=\"a01173.html#a18d45929d48a1738134292a7f0b27377\">_patchParamBuffer</a>[0];</div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00080\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01173.html#aae90ef525393fa41f95eff50d1255e97\">   80</a></span>    <span class=\"keywordtype\">size_t</span> <a class=\"code hl_function\" href=\"a01173.html#aae90ef525393fa41f95eff50d1255e97\">GetNumPatchArrays</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01173.html#a5dfb6b58580f2dec58e9b5bfdb4ed9f1\">_patchArrays</a>.size();</div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>    }</div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00078\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01053.html#aa4907b035ab197f57102411e48b2cfc0\">   78</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01053.html#aa4907b035ab197f57102411e48b2cfc0\">GetSize</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>        <span class=\"keywordflow\">return</span> *<a class=\"code hl_variable\" href=\"a01053.html#a52397f1270007c943b8539338a796608\">_size</a>;</div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span>    }</div>\n </div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span> </div>\n <div class=\"foldopen\" id=\"foldopen00083\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01173.html#a5b16f51336dbdc1af5b34028cc5de8cc\">   83</a></span>    <span class=\"keywordtype\">size_t</span> <a class=\"code hl_function\" href=\"a01173.html#a5b16f51336dbdc1af5b34028cc5de8cc\">GetPatchIndexSize</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01173.html#a6e32349421c301eddf366c04c3a28015\">_indexBuffer</a>.size();</div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01053.html#ab823038f11d7c069fc63a2b992055535\">   83</a></span>    <span class=\"keywordtype\">int</span> * <a class=\"code hl_function\" href=\"a01053.html#ab823038f11d7c069fc63a2b992055535\">GetSizePtr</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01053.html#a52397f1270007c943b8539338a796608\">_size</a>;</div>\n <div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>    }</div>\n </div>\n-<div class=\"foldopen\" id=\"foldopen00086\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01173.html#a9ca8e987a5e8ac5bbd66f46bf2fc419c\">   86</a></span>    <span class=\"keywordtype\">size_t</span> <a class=\"code hl_function\" href=\"a01173.html#a9ca8e987a5e8ac5bbd66f46bf2fc419c\">GetPatchParamSize</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01173.html#a18d45929d48a1738134292a7f0b27377\">_patchParamBuffer</a>.size();</div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00090\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01173.html#aa67ab7e38db41de0990e7d034719dbd1\">   90</a></span>    <span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01325.html\">PatchArray</a> *<a class=\"code hl_function\" href=\"a01173.html#aa67ab7e38db41de0990e7d034719dbd1\">GetVaryingPatchArrayBuffer</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>        <span class=\"keywordflow\">if</span> (<a class=\"code hl_variable\" href=\"a01173.html#acd99a0391b3b04586b11051fd0f7ed10\">_varyingPatchArrays</a>.empty()) {</div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>            <span class=\"keywordflow\">return</span> NULL;</div>\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span>        }</div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>        <span class=\"keywordflow\">return</span> &amp;<a class=\"code hl_variable\" href=\"a01173.html#acd99a0391b3b04586b11051fd0f7ed10\">_varyingPatchArrays</a>[0];</div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00088\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01053.html#a8d6f065bafcef50d1f904979c794d1ce\">   88</a></span>    <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> <span class=\"keyword\">const</span> * <a class=\"code hl_function\" href=\"a01053.html#a8d6f065bafcef50d1f904979c794d1ce\">GetVertexIndices</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01053.html#a8b387cbfb5a56ee18bf92d10f3cdad6d\">_indices</a>;</div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00093\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01053.html#aecc2be688aecf08f7a98e49db8fed2f8\">   93</a></span>    REAL <span class=\"keyword\">const</span> * <a class=\"code hl_function\" href=\"a01053.html#aecc2be688aecf08f7a98e49db8fed2f8\">GetWeights</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01053.html#aab5755075fff28578bfd3387c504d303\">_weights</a>;</div>\n <div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span>    }</div>\n </div>\n-<div class=\"foldopen\" id=\"foldopen00096\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01173.html#a0cfc50b227edbe9872586c2b4ab89dec\">   96</a></span>    <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> *<a class=\"code hl_function\" href=\"a01173.html#a0cfc50b227edbe9872586c2b4ab89dec\">GetVaryingPatchIndexBuffer</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>        <span class=\"keywordflow\">if</span> (<a class=\"code hl_variable\" href=\"a01173.html#a0ff57b15e0b6f9c4ecd676fd76ae1ba1\">_varyingIndexBuffer</a>.empty()) {</div>\n-<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span>            <span class=\"keywordflow\">return</span> NULL;</div>\n-<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span>        }</div>\n-<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span>        <span class=\"keywordflow\">return</span> &amp;<a class=\"code hl_variable\" href=\"a01173.html#a0ff57b15e0b6f9c4ecd676fd76ae1ba1\">_varyingIndexBuffer</a>[0];</div>\n-<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span>    }</div>\n-</div>\n-<div class=\"foldopen\" id=\"foldopen00102\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01173.html#aa255bcea11d324b35e8095fa7f134f8c\">  102</a></span>    <span class=\"keywordtype\">size_t</span> <a class=\"code hl_function\" href=\"a01173.html#aa255bcea11d324b35e8095fa7f134f8c\">GetVaryingPatchIndexSize</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01173.html#a0ff57b15e0b6f9c4ecd676fd76ae1ba1\">_varyingIndexBuffer</a>.size();</div>\n-<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00106\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01173.html#aa9be824a572029f3ec1e0c0d6cfecd77\">  106</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01173.html#aa9be824a572029f3ec1e0c0d6cfecd77\">GetNumFVarChannels</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span>        <span class=\"keywordflow\">return</span> (<span class=\"keywordtype\">int</span>)<a class=\"code hl_variable\" href=\"a01173.html#acdf8228439ce43565d90edce85b43368\">_fvarPatchArrays</a>.size();</div>\n-<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span>    }</div>\n-</div>\n-<div class=\"foldopen\" id=\"foldopen00109\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01173.html#a025630c8fdb360ed195aef08547f1235\">  109</a></span>    <span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01325.html\">PatchArray</a> *<a class=\"code hl_function\" href=\"a01173.html#a025630c8fdb360ed195aef08547f1235\">GetFVarPatchArrayBuffer</a>(<span class=\"keywordtype\">int</span> fvarChannel = 0)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span>        <span class=\"keywordflow\">return</span> &amp;<a class=\"code hl_variable\" href=\"a01173.html#acdf8228439ce43565d90edce85b43368\">_fvarPatchArrays</a>[fvarChannel][0];</div>\n-<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span>    }</div>\n-</div>\n-<div class=\"foldopen\" id=\"foldopen00112\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01173.html#a8a0e294dd3f62accf3bcd37506b8f0c0\">  112</a></span>    <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> *<a class=\"code hl_function\" href=\"a01173.html#a8a0e294dd3f62accf3bcd37506b8f0c0\">GetFVarPatchIndexBuffer</a>(<span class=\"keywordtype\">int</span> fvarChannel = 0)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span>        <span class=\"keywordflow\">return</span> &amp;<a class=\"code hl_variable\" href=\"a01173.html#a413f77230a89ed1a04ee4f1407a4d7b3\">_fvarIndexBuffers</a>[fvarChannel][0];</div>\n-<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span>    }</div>\n-</div>\n-<div class=\"foldopen\" id=\"foldopen00115\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01173.html#a89d1a006bc57adefbd8cc2b3221507d8\">  115</a></span>    <span class=\"keywordtype\">size_t</span> <a class=\"code hl_function\" href=\"a01173.html#a89d1a006bc57adefbd8cc2b3221507d8\">GetFVarPatchIndexSize</a>(<span class=\"keywordtype\">int</span> fvarChannel = 0)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\">  116</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01173.html#a413f77230a89ed1a04ee4f1407a4d7b3\">_fvarIndexBuffers</a>[fvarChannel].size();</div>\n-<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span>    }</div>\n-</div>\n-<div class=\"foldopen\" id=\"foldopen00118\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01173.html#a9aff63c1a01a0ab08941350288def5fa\">  118</a></span>    <span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01329.html\">PatchParam</a> *<a class=\"code hl_function\" href=\"a01173.html#a9aff63c1a01a0ab08941350288def5fa\">GetFVarPatchParamBuffer</a>(<span class=\"keywordtype\">int</span> fvarChannel= 0)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span>        <span class=\"keywordflow\">return</span> &amp;<a class=\"code hl_variable\" href=\"a01173.html#a374201f74533e6af17184def3a4d18f3\">_fvarParamBuffers</a>[fvarChannel][0];</div>\n-<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span>    }</div>\n-</div>\n-<div class=\"foldopen\" id=\"foldopen00121\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01173.html#a154f068140b02b8324cfa70cdbe1191c\">  121</a></span>    <span class=\"keywordtype\">size_t</span> <a class=\"code hl_function\" href=\"a01173.html#a154f068140b02b8324cfa70cdbe1191c\">GetFVarPatchParamSize</a>(<span class=\"keywordtype\">int</span> fvarChannel = 0)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01173.html#a374201f74533e6af17184def3a4d18f3\">_fvarParamBuffers</a>[fvarChannel].size();</div>\n-<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span> </div>\n-<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span><span class=\"keyword\">protected</span>:</div>\n-<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01173.html#a5dfb6b58580f2dec58e9b5bfdb4ed9f1\">  126</a></span>    <a class=\"code hl_typedef\" href=\"a00912.html#a98098cd229f60d2397d84a76fe654a31\">PatchArrayVector</a> <a class=\"code hl_variable\" href=\"a01173.html#a5dfb6b58580f2dec58e9b5bfdb4ed9f1\">_patchArrays</a>;</div>\n-<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01173.html#a6e32349421c301eddf366c04c3a28015\">  127</a></span>    std::vector&lt;int&gt; <a class=\"code hl_variable\" href=\"a01173.html#a6e32349421c301eddf366c04c3a28015\">_indexBuffer</a>;</div>\n-<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01173.html#a18d45929d48a1738134292a7f0b27377\">  128</a></span>    <a class=\"code hl_typedef\" href=\"a00912.html#a1e22001c627b0364d6c6d62a3ed05fee\">PatchParamVector</a> <a class=\"code hl_variable\" href=\"a01173.html#a18d45929d48a1738134292a7f0b27377\">_patchParamBuffer</a>;</div>\n-<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span> </div>\n-<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01173.html#acd99a0391b3b04586b11051fd0f7ed10\">  130</a></span>    <a class=\"code hl_typedef\" href=\"a00912.html#a98098cd229f60d2397d84a76fe654a31\">PatchArrayVector</a> <a class=\"code hl_variable\" href=\"a01173.html#acd99a0391b3b04586b11051fd0f7ed10\">_varyingPatchArrays</a>;</div>\n-<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01173.html#a0ff57b15e0b6f9c4ecd676fd76ae1ba1\">  131</a></span>    std::vector&lt;int&gt; <a class=\"code hl_variable\" href=\"a01173.html#a0ff57b15e0b6f9c4ecd676fd76ae1ba1\">_varyingIndexBuffer</a>;</div>\n-<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\">  132</span> </div>\n-<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01173.html#acdf8228439ce43565d90edce85b43368\">  133</a></span>    std::vector&lt; PatchArrayVector &gt; <a class=\"code hl_variable\" href=\"a01173.html#acdf8228439ce43565d90edce85b43368\">_fvarPatchArrays</a>;</div>\n-<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01173.html#a413f77230a89ed1a04ee4f1407a4d7b3\">  134</a></span>    std::vector&lt; std::vector&lt;int&gt; &gt; <a class=\"code hl_variable\" href=\"a01173.html#a413f77230a89ed1a04ee4f1407a4d7b3\">_fvarIndexBuffers</a>;</div>\n-<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01173.html#a374201f74533e6af17184def3a4d18f3\">  135</a></span>    std::vector&lt; PatchParamVector &gt; <a class=\"code hl_variable\" href=\"a01173.html#a374201f74533e6af17184def3a4d18f3\">_fvarParamBuffers</a>;</div>\n-<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\">  136</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\">  137</span> </div>\n-<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\">  138</span>}  <span class=\"comment\">// end namespace Osd</span></div>\n-<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\">  139</span> </div>\n-<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\">  140</span>}  <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\">  141</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span> </div>\n-<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\">  143</span>}  <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\">  144</span> </div>\n-<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\">  145</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_CPU_PATCH_TABLE_H</span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa00912_html_a1e22001c627b0364d6c6d62a3ed05fee\"><div class=\"ttname\"><a href=\"a00912.html#a1e22001c627b0364d6c6d62a3ed05fee\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchParamVector</a></div><div class=\"ttdeci\">std::vector&lt; PatchParam &gt; PatchParamVector</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00133\">types.h:133</a></div></div>\n-<div class=\"ttc\" id=\"aa00912_html_a98098cd229f60d2397d84a76fe654a31\"><div class=\"ttname\"><a href=\"a00912.html#a98098cd229f60d2397d84a76fe654a31\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchArrayVector</a></div><div class=\"ttdeci\">std::vector&lt; PatchArray &gt; PatchArrayVector</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00132\">types.h:132</a></div></div>\n-<div class=\"ttc\" id=\"aa00993_html\"><div class=\"ttname\"><a href=\"a00993.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable</a></div><div class=\"ttdoc\">Container for arrays of parametric patches.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00761_source.html#l00055\">patchTable.h:55</a></div></div>\n-<div class=\"ttc\" id=\"aa01173_html\"><div class=\"ttname\"><a href=\"a01173.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuPatchTable</a></div><div class=\"ttdoc\">Cpu patch table.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00059\">cpuPatchTable.h:59</a></div></div>\n-<div class=\"ttc\" id=\"aa01173_html_a025630c8fdb360ed195aef08547f1235\"><div class=\"ttname\"><a href=\"a01173.html#a025630c8fdb360ed195aef08547f1235\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuPatchTable::GetFVarPatchArrayBuffer</a></div><div class=\"ttdeci\">const PatchArray * GetFVarPatchArrayBuffer(int fvarChannel=0) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00109\">cpuPatchTable.h:109</a></div></div>\n-<div class=\"ttc\" id=\"aa01173_html_a0cfc50b227edbe9872586c2b4ab89dec\"><div class=\"ttname\"><a href=\"a01173.html#a0cfc50b227edbe9872586c2b4ab89dec\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuPatchTable::GetVaryingPatchIndexBuffer</a></div><div class=\"ttdeci\">const int * GetVaryingPatchIndexBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00096\">cpuPatchTable.h:96</a></div></div>\n-<div class=\"ttc\" id=\"aa01173_html_a0ff57b15e0b6f9c4ecd676fd76ae1ba1\"><div class=\"ttname\"><a href=\"a01173.html#a0ff57b15e0b6f9c4ecd676fd76ae1ba1\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuPatchTable::_varyingIndexBuffer</a></div><div class=\"ttdeci\">std::vector&lt; int &gt; _varyingIndexBuffer</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00131\">cpuPatchTable.h:131</a></div></div>\n-<div class=\"ttc\" id=\"aa01173_html_a154f068140b02b8324cfa70cdbe1191c\"><div class=\"ttname\"><a href=\"a01173.html#a154f068140b02b8324cfa70cdbe1191c\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuPatchTable::GetFVarPatchParamSize</a></div><div class=\"ttdeci\">size_t GetFVarPatchParamSize(int fvarChannel=0) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00121\">cpuPatchTable.h:121</a></div></div>\n-<div class=\"ttc\" id=\"aa01173_html_a16142cac8dd0880ad2451586633a7999\"><div class=\"ttname\"><a href=\"a01173.html#a16142cac8dd0880ad2451586633a7999\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuPatchTable::~CpuPatchTable</a></div><div class=\"ttdeci\">~CpuPatchTable()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00068\">cpuPatchTable.h:68</a></div></div>\n-<div class=\"ttc\" id=\"aa01173_html_a18d45929d48a1738134292a7f0b27377\"><div class=\"ttname\"><a href=\"a01173.html#a18d45929d48a1738134292a7f0b27377\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuPatchTable::_patchParamBuffer</a></div><div class=\"ttdeci\">PatchParamVector _patchParamBuffer</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00128\">cpuPatchTable.h:128</a></div></div>\n-<div class=\"ttc\" id=\"aa01173_html_a1934f183cb763099b7452f3569b70fdc\"><div class=\"ttname\"><a href=\"a01173.html#a1934f183cb763099b7452f3569b70fdc\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuPatchTable::GetPatchIndexBuffer</a></div><div class=\"ttdeci\">const int * GetPatchIndexBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00073\">cpuPatchTable.h:73</a></div></div>\n-<div class=\"ttc\" id=\"aa01173_html_a27ccdd38f0f38adf16a4f5ceac6fed20\"><div class=\"ttname\"><a href=\"a01173.html#a27ccdd38f0f38adf16a4f5ceac6fed20\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuPatchTable::Create</a></div><div class=\"ttdeci\">static CpuPatchTable * Create(const Far::PatchTable *patchTable, void *deviceContext=NULL)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00061\">cpuPatchTable.h:61</a></div></div>\n-<div class=\"ttc\" id=\"aa01173_html_a374201f74533e6af17184def3a4d18f3\"><div class=\"ttname\"><a href=\"a01173.html#a374201f74533e6af17184def3a4d18f3\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuPatchTable::_fvarParamBuffers</a></div><div class=\"ttdeci\">std::vector&lt; PatchParamVector &gt; _fvarParamBuffers</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00135\">cpuPatchTable.h:135</a></div></div>\n-<div class=\"ttc\" id=\"aa01173_html_a3c19d1748852f36ba69a6557e5069e08\"><div class=\"ttname\"><a href=\"a01173.html#a3c19d1748852f36ba69a6557e5069e08\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuPatchTable::CpuPatchTable</a></div><div class=\"ttdeci\">CpuPatchTable(const Far::PatchTable *patchTable)</div></div>\n-<div class=\"ttc\" id=\"aa01173_html_a413f77230a89ed1a04ee4f1407a4d7b3\"><div class=\"ttname\"><a href=\"a01173.html#a413f77230a89ed1a04ee4f1407a4d7b3\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuPatchTable::_fvarIndexBuffers</a></div><div class=\"ttdeci\">std::vector&lt; std::vector&lt; int &gt; &gt; _fvarIndexBuffers</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00134\">cpuPatchTable.h:134</a></div></div>\n-<div class=\"ttc\" id=\"aa01173_html_a5b16f51336dbdc1af5b34028cc5de8cc\"><div class=\"ttname\"><a href=\"a01173.html#a5b16f51336dbdc1af5b34028cc5de8cc\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuPatchTable::GetPatchIndexSize</a></div><div class=\"ttdeci\">size_t GetPatchIndexSize() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00083\">cpuPatchTable.h:83</a></div></div>\n-<div class=\"ttc\" id=\"aa01173_html_a5dfb6b58580f2dec58e9b5bfdb4ed9f1\"><div class=\"ttname\"><a href=\"a01173.html#a5dfb6b58580f2dec58e9b5bfdb4ed9f1\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuPatchTable::_patchArrays</a></div><div class=\"ttdeci\">PatchArrayVector _patchArrays</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00126\">cpuPatchTable.h:126</a></div></div>\n-<div class=\"ttc\" id=\"aa01173_html_a6a81c037eca6f27ea4ef41f39d0a1d50\"><div class=\"ttname\"><a href=\"a01173.html#a6a81c037eca6f27ea4ef41f39d0a1d50\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuPatchTable::GetPatchParamBuffer</a></div><div class=\"ttdeci\">const PatchParam * GetPatchParamBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00076\">cpuPatchTable.h:76</a></div></div>\n-<div class=\"ttc\" id=\"aa01173_html_a6e32349421c301eddf366c04c3a28015\"><div class=\"ttname\"><a href=\"a01173.html#a6e32349421c301eddf366c04c3a28015\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuPatchTable::_indexBuffer</a></div><div class=\"ttdeci\">std::vector&lt; int &gt; _indexBuffer</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00127\">cpuPatchTable.h:127</a></div></div>\n-<div class=\"ttc\" id=\"aa01173_html_a89d1a006bc57adefbd8cc2b3221507d8\"><div class=\"ttname\"><a href=\"a01173.html#a89d1a006bc57adefbd8cc2b3221507d8\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuPatchTable::GetFVarPatchIndexSize</a></div><div class=\"ttdeci\">size_t GetFVarPatchIndexSize(int fvarChannel=0) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00115\">cpuPatchTable.h:115</a></div></div>\n-<div class=\"ttc\" id=\"aa01173_html_a8a0e294dd3f62accf3bcd37506b8f0c0\"><div class=\"ttname\"><a href=\"a01173.html#a8a0e294dd3f62accf3bcd37506b8f0c0\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuPatchTable::GetFVarPatchIndexBuffer</a></div><div class=\"ttdeci\">const int * GetFVarPatchIndexBuffer(int fvarChannel=0) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00112\">cpuPatchTable.h:112</a></div></div>\n-<div class=\"ttc\" id=\"aa01173_html_a9aff63c1a01a0ab08941350288def5fa\"><div class=\"ttname\"><a href=\"a01173.html#a9aff63c1a01a0ab08941350288def5fa\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuPatchTable::GetFVarPatchParamBuffer</a></div><div class=\"ttdeci\">const PatchParam * GetFVarPatchParamBuffer(int fvarChannel=0) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00118\">cpuPatchTable.h:118</a></div></div>\n-<div class=\"ttc\" id=\"aa01173_html_a9ca8e987a5e8ac5bbd66f46bf2fc419c\"><div class=\"ttname\"><a href=\"a01173.html#a9ca8e987a5e8ac5bbd66f46bf2fc419c\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuPatchTable::GetPatchParamSize</a></div><div class=\"ttdeci\">size_t GetPatchParamSize() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00086\">cpuPatchTable.h:86</a></div></div>\n-<div class=\"ttc\" id=\"aa01173_html_aa255bcea11d324b35e8095fa7f134f8c\"><div class=\"ttname\"><a href=\"a01173.html#aa255bcea11d324b35e8095fa7f134f8c\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuPatchTable::GetVaryingPatchIndexSize</a></div><div class=\"ttdeci\">size_t GetVaryingPatchIndexSize() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00102\">cpuPatchTable.h:102</a></div></div>\n-<div class=\"ttc\" id=\"aa01173_html_aa67ab7e38db41de0990e7d034719dbd1\"><div class=\"ttname\"><a href=\"a01173.html#aa67ab7e38db41de0990e7d034719dbd1\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuPatchTable::GetVaryingPatchArrayBuffer</a></div><div class=\"ttdeci\">const PatchArray * GetVaryingPatchArrayBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00090\">cpuPatchTable.h:90</a></div></div>\n-<div class=\"ttc\" id=\"aa01173_html_aa9be824a572029f3ec1e0c0d6cfecd77\"><div class=\"ttname\"><a href=\"a01173.html#aa9be824a572029f3ec1e0c0d6cfecd77\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuPatchTable::GetNumFVarChannels</a></div><div class=\"ttdeci\">int GetNumFVarChannels() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00106\">cpuPatchTable.h:106</a></div></div>\n-<div class=\"ttc\" id=\"aa01173_html_aae90ef525393fa41f95eff50d1255e97\"><div class=\"ttname\"><a href=\"a01173.html#aae90ef525393fa41f95eff50d1255e97\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuPatchTable::GetNumPatchArrays</a></div><div class=\"ttdeci\">size_t GetNumPatchArrays() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00080\">cpuPatchTable.h:80</a></div></div>\n-<div class=\"ttc\" id=\"aa01173_html_ab6582a6586adaea0803247fb415f8c17\"><div class=\"ttname\"><a href=\"a01173.html#ab6582a6586adaea0803247fb415f8c17\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuPatchTable::GetPatchArrayBuffer</a></div><div class=\"ttdeci\">const PatchArray * GetPatchArrayBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00070\">cpuPatchTable.h:70</a></div></div>\n-<div class=\"ttc\" id=\"aa01173_html_acd99a0391b3b04586b11051fd0f7ed10\"><div class=\"ttname\"><a href=\"a01173.html#acd99a0391b3b04586b11051fd0f7ed10\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuPatchTable::_varyingPatchArrays</a></div><div class=\"ttdeci\">PatchArrayVector _varyingPatchArrays</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00130\">cpuPatchTable.h:130</a></div></div>\n-<div class=\"ttc\" id=\"aa01173_html_acdf8228439ce43565d90edce85b43368\"><div class=\"ttname\"><a href=\"a01173.html#acdf8228439ce43565d90edce85b43368\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuPatchTable::_fvarPatchArrays</a></div><div class=\"ttdeci\">std::vector&lt; PatchArrayVector &gt; _fvarPatchArrays</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00133\">cpuPatchTable.h:133</a></div></div>\n-<div class=\"ttc\" id=\"aa01325_html\"><div class=\"ttname\"><a href=\"a01325.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchArray</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00066\">types.h:66</a></div></div>\n-<div class=\"ttc\" id=\"aa01329_html\"><div class=\"ttname\"><a href=\"a01329.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchParam</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00127\">types.h:127</a></div></div>\n+<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span> </div>\n+<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01053.html#a19f9c49c05d967ad8e51bc2a696caf4b\">   98</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01053.html#a659a293dd51073a1b9560bb80f687705\">Next</a>() {</div>\n+<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span>        <span class=\"keywordtype\">int</span> stride = *<a class=\"code hl_variable\" href=\"a01053.html#a52397f1270007c943b8539338a796608\">_size</a>;</div>\n+<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span>        ++<a class=\"code hl_variable\" href=\"a01053.html#a52397f1270007c943b8539338a796608\">_size</a>;</div>\n+<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span>        <a class=\"code hl_variable\" href=\"a01053.html#a8b387cbfb5a56ee18bf92d10f3cdad6d\">_indices</a> += stride;</div>\n+<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span>        <a class=\"code hl_variable\" href=\"a01053.html#aab5755075fff28578bfd3387c504d303\">_weights</a> += stride;</div>\n+<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span>    }</div>\n+<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span> </div>\n+<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span><span class=\"keyword\">protected</span>:</div>\n+<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span>    <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01045.html\">StencilTableFactoryReal</a>&lt;REAL&gt;;</div>\n+<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span>    <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01049.html\">LimitStencilTableFactoryReal</a>&lt;REAL&gt;;</div>\n+<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span> </div>\n+<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01053.html#a52397f1270007c943b8539338a796608\">  109</a></span>    <span class=\"keywordtype\">int</span> * <a class=\"code hl_variable\" href=\"a01053.html#a52397f1270007c943b8539338a796608\">_size</a>;</div>\n+<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01053.html#a8b387cbfb5a56ee18bf92d10f3cdad6d\">  110</a></span>    <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> * <a class=\"code hl_variable\" href=\"a01053.html#a8b387cbfb5a56ee18bf92d10f3cdad6d\">_indices</a>;</div>\n+<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01053.html#aab5755075fff28578bfd3387c504d303\">  111</a></span>    REAL  * <a class=\"code hl_variable\" href=\"a01053.html#aab5755075fff28578bfd3387c504d303\">_weights</a>;</div>\n+<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00116\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01057.html\">  116</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01057.html\">Stencil</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"a01053.html\">StencilReal</a>&lt;float&gt; {</div>\n+<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span><span class=\"keyword\">protected</span>:</div>\n+<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01057.html#a71b0ccb1e01e77608b938cb11039a34a\">  118</a></span>    <span class=\"keyword\">typedef</span> <a class=\"code hl_class\" href=\"a01053.html\">StencilReal&lt;float&gt;</a>   <a class=\"code hl_typedef\" href=\"a01057.html#a71b0ccb1e01e77608b938cb11039a34a\">BaseStencil</a>;</div>\n+<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span> </div>\n+<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01057.html#af3b2d4f28b2b1edbb491db39b0658c2a\">  121</a></span>    <a class=\"code hl_function\" href=\"a01057.html#af3b2d4f28b2b1edbb491db39b0658c2a\">Stencil</a>() : <a class=\"code hl_class\" href=\"a01053.html\">BaseStencil</a>() { }</div>\n+<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01057.html#a540bd990ac7c5770b6f1a5eb5b58d874\">  122</a></span>    <a class=\"code hl_function\" href=\"a01057.html#a540bd990ac7c5770b6f1a5eb5b58d874\">Stencil</a>(<a class=\"code hl_class\" href=\"a01053.html\">BaseStencil</a> <span class=\"keyword\">const</span> &amp; other) : <a class=\"code hl_class\" href=\"a01053.html\">BaseStencil</a>(other) { }</div>\n+<div class=\"foldopen\" id=\"foldopen00123\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01057.html#a685b0ef36235914f7c10ff8f1169ade8\">  123</a></span>    <a class=\"code hl_function\" href=\"a01057.html#a685b0ef36235914f7c10ff8f1169ade8\">Stencil</a>(<span class=\"keywordtype\">int</span> * size, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> * indices, <span class=\"keywordtype\">float</span> * weights)</div>\n+<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span>        : <a class=\"code hl_class\" href=\"a01053.html\">BaseStencil</a>(size, indices, weights) { }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span> </div>\n+<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span> </div>\n+<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\">  140</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00141\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html\">  141</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01061.html\">StencilTableReal</a> {</div>\n+<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span><span class=\"keyword\">protected</span>:</div>\n+<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#acfd28c310b1539af45e019690b1cb211\">  143</a></span>    <a class=\"code hl_function\" href=\"a01061.html#acfd28c310b1539af45e019690b1cb211\">StencilTableReal</a>(<span class=\"keywordtype\">int</span> numControlVerts,</div>\n+<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\">  144</span>                    std::vector&lt;int&gt; <span class=\"keyword\">const</span>&amp; offsets,</div>\n+<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\">  145</span>                    std::vector&lt;int&gt; <span class=\"keyword\">const</span>&amp; sizes,</div>\n+<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\">  146</span>                    std::vector&lt;int&gt; <span class=\"keyword\">const</span>&amp; sources,</div>\n+<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\">  147</span>                    std::vector&lt;REAL&gt; <span class=\"keyword\">const</span>&amp; weights,</div>\n+<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\">  148</span>                    <span class=\"keywordtype\">bool</span> includeCoarseVerts,</div>\n+<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\">  149</span>                    <span class=\"keywordtype\">size_t</span> firstOffset);</div>\n+<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\">  150</span> </div>\n+<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\">  151</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\">  152</span> </div>\n+<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#a680f5b6b2b873a149a997c4b5fca2be8\">  153</a></span>    <span class=\"keyword\">virtual</span> <a class=\"code hl_function\" href=\"a01061.html#a680f5b6b2b873a149a997c4b5fca2be8\">~StencilTableReal</a>() {};</div>\n+<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\">  154</span>    </div>\n+<div class=\"foldopen\" id=\"foldopen00156\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#a65836d2070b943c8fecbad926d074de2\">  156</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01061.html#a65836d2070b943c8fecbad926d074de2\">GetNumStencils</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\">  157</span>        <span class=\"keywordflow\">return</span> (<span class=\"keywordtype\">int</span>)<a class=\"code hl_variable\" href=\"a01061.html#a11ad3846bf577760d1c829835f62b8d3\">_sizes</a>.size();</div>\n+<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\">  158</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\">  159</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00161\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#a02e67ceab8cb5af7982ef2a31a07a2ce\">  161</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01061.html#a02e67ceab8cb5af7982ef2a31a07a2ce\">GetNumControlVertices</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\">  162</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01061.html#a385a2eb32312f28d79a02461a59c0630\">_numControlVertices</a>;</div>\n+<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\">  163</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\">  164</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00166\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#a84969a9edeae22167a83fde274f002af\">  166</a></span>    <a class=\"code hl_class\" href=\"a01053.html\">StencilReal&lt;REAL&gt;</a> <a class=\"code hl_function\" href=\"a01061.html#a84969a9edeae22167a83fde274f002af\">GetStencil</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> i) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\">  167</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00169\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#a50345bcc33c588cf49520a79396e105d\">  169</a></span>    std::vector&lt;int&gt; <span class=\"keyword\">const</span> &amp; <a class=\"code hl_function\" href=\"a01061.html#a50345bcc33c588cf49520a79396e105d\">GetSizes</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\">  170</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01061.html#a11ad3846bf577760d1c829835f62b8d3\">_sizes</a>;</div>\n+<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\">  172</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00174\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#a82005658c7c2b4aea6222587d06ce4ef\">  174</a></span>    std::vector&lt;Index&gt; <span class=\"keyword\">const</span> &amp; <a class=\"code hl_function\" href=\"a01061.html#a82005658c7c2b4aea6222587d06ce4ef\">GetOffsets</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\">  175</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01061.html#aac45e3e693e9298942da27bef3cec02c\">_offsets</a>;</div>\n+<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\">  176</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00179\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#a2c225eadcb49bfb4af44bfb883516809\">  179</a></span>    std::vector&lt;Index&gt; <span class=\"keyword\">const</span> &amp; <a class=\"code hl_function\" href=\"a01061.html#a2c225eadcb49bfb4af44bfb883516809\">GetControlIndices</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\">  180</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01061.html#ad6ce8118325de299bd7d9735f68e6de2\">_indices</a>;</div>\n+<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\">  181</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\">  182</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00184\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#ac5effc231d2dad1b9fb193c4cf43ab83\">  184</a></span>    std::vector&lt;REAL&gt; <span class=\"keyword\">const</span> &amp; <a class=\"code hl_function\" href=\"a01061.html#ac5effc231d2dad1b9fb193c4cf43ab83\">GetWeights</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\">  185</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01061.html#aae5a4bd49c41df5f949d773549c09d19\">_weights</a>;</div>\n+<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\">  186</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\">  187</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00189\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#a35786984f5caa4684165da2c96fba9b3\">  189</a></span>    <a class=\"code hl_class\" href=\"a01053.html\">StencilReal&lt;REAL&gt;</a> <a class=\"code hl_function\" href=\"a01061.html#a35786984f5caa4684165da2c96fba9b3\">operator[] </a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> index) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\">  190</span> </div>\n+<div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\">  204</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00205\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#afbd961bebfa92a8fd0826f219baaf8f5\">  205</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01061.html#afbd961bebfa92a8fd0826f219baaf8f5\">UpdateValues</a>(T <span class=\"keyword\">const</span> &amp;srcValues, U &amp;dstValues, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> start=-1, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> end=-1)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\">  206</span>        this-&gt;<a class=\"code hl_function\" href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">update</a>(srcValues, dstValues, <a class=\"code hl_variable\" href=\"a01061.html#aae5a4bd49c41df5f949d773549c09d19\">_weights</a>, start, end);</div>\n+<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\">  207</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\">  208</span> </div>\n+<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\">  209</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T1, <span class=\"keyword\">class</span> T2, <span class=\"keyword\">class</span> U&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00210\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#a232ddf5a15e24e91b2ec55f83a1436b5\">  210</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01061.html#a232ddf5a15e24e91b2ec55f83a1436b5\">UpdateValues</a>(T1 <span class=\"keyword\">const</span> &amp;srcBase, <span class=\"keywordtype\">int</span> numBase, T2 <span class=\"keyword\">const</span> &amp;srcRef,</div>\n+<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\">  211</span>        U &amp;dstValues, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> start=-1, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> end=-1)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00212\" name=\"l00212\"></a><span class=\"lineno\">  212</span>        this-&gt;<a class=\"code hl_function\" href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">update</a>(srcBase, numBase, srcRef, dstValues, <a class=\"code hl_variable\" href=\"a01061.html#aae5a4bd49c41df5f949d773549c09d19\">_weights</a>, start, end);</div>\n+<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\">  213</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\">  214</span> </div>\n+<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\">  215</span>    <span class=\"comment\">//  Pointer interface for backward compatibility</span></div>\n+<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\">  216</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00217\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#ae1ff7caf5509b4d76bc8220608d5b176\">  217</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01061.html#ae1ff7caf5509b4d76bc8220608d5b176\">UpdateValues</a>(T <span class=\"keyword\">const</span> *src, U *dst, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> start=-1, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> end=-1)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\">  218</span>        this-&gt;<a class=\"code hl_function\" href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">update</a>(src, dst, <a class=\"code hl_variable\" href=\"a01061.html#aae5a4bd49c41df5f949d773549c09d19\">_weights</a>, start, end);</div>\n+<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\">  219</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\">  220</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T1, <span class=\"keyword\">class</span> T2, <span class=\"keyword\">class</span> U&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00221\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#ac67bfdfb875671203b222a0a25b1cfe3\">  221</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01061.html#ac67bfdfb875671203b222a0a25b1cfe3\">UpdateValues</a>(T1 <span class=\"keyword\">const</span> *srcBase, <span class=\"keywordtype\">int</span> numBase, T2 <span class=\"keyword\">const</span> *srcRef,</div>\n+<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\">  222</span>        U *dst, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> start=-1, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> end=-1)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\">  223</span>        this-&gt;<a class=\"code hl_function\" href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">update</a>(srcBase, numBase, srcRef, dst, <a class=\"code hl_variable\" href=\"a01061.html#aae5a4bd49c41df5f949d773549c09d19\">_weights</a>, start, end);</div>\n+<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\">  224</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\">  225</span> </div>\n+<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#aa71d36872f416feaa853788a7a7a7ef8\">  227</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01061.html#aa71d36872f416feaa853788a7a7a7ef8\">Clear</a>();</div>\n+<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\">  228</span> </div>\n+<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\">  229</span><span class=\"keyword\">protected</span>:</div>\n+<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\">  230</span> </div>\n+<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\">  231</span>    <span class=\"comment\">// Update values by applying cached stencil weights to new control values</span></div>\n+<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\">  232</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00233\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">  233</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">update</a>( T <span class=\"keyword\">const</span> &amp;srcValues, U &amp;dstValues,</div>\n+<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\">  234</span>        std::vector&lt;REAL&gt; <span class=\"keyword\">const</span> &amp; valueWeights, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> start, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> end) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\">  235</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T1, <span class=\"keyword\">class</span> T2, <span class=\"keyword\">class</span> U&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00236\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#a1bcd132b8e6d40cb6ed1543f28ff998c\">  236</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01061.html#a1bcd132b8e6d40cb6ed1543f28ff998c\">update</a>( T1 <span class=\"keyword\">const</span> &amp;srcBase, <span class=\"keywordtype\">int</span> numBase, T2 <span class=\"keyword\">const</span> &amp;srcRef, U &amp;dstValues,</div>\n+<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\">  237</span>        std::vector&lt;REAL&gt; <span class=\"keyword\">const</span> &amp; valueWeights, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> start, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> end) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\">  238</span> </div>\n+<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\">  239</span>    <span class=\"comment\">// Populate the offsets table from the stencil sizes in _sizes (factory helper)</span></div>\n+<div class=\"foldopen\" id=\"foldopen00240\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#a8ac84e48ecd3aec3db72f62a4c8206f8\">  240</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01061.html#a8ac84e48ecd3aec3db72f62a4c8206f8\">generateOffsets</a>();</div>\n+<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\">  241</span> </div>\n+<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\">  242</span>    <span class=\"comment\">// Resize the table arrays (factory helper)</span></div>\n+<div class=\"foldopen\" id=\"foldopen00243\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#ac21f18df5c8da2db4d23287cdab5fcc1\">  243</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01061.html#ac21f18df5c8da2db4d23287cdab5fcc1\">resize</a>(<span class=\"keywordtype\">int</span> nstencils, <span class=\"keywordtype\">int</span> nelems);</div>\n+<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\">  244</span> </div>\n+<div class=\"line\"><a id=\"l00245\" name=\"l00245\"></a><span class=\"lineno\">  245</span>    <span class=\"comment\">// Reserves the table arrays (factory helper)</span></div>\n+<div class=\"foldopen\" id=\"foldopen00246\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#ae00a9e01294323589df33d2680dab235\">  246</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01061.html#ae00a9e01294323589df33d2680dab235\">reserve</a>(<span class=\"keywordtype\">int</span> nstencils, <span class=\"keywordtype\">int</span> nelems);</div>\n+<div class=\"line\"><a id=\"l00247\" name=\"l00247\"></a><span class=\"lineno\">  247</span> </div>\n+<div class=\"line\"><a id=\"l00248\" name=\"l00248\"></a><span class=\"lineno\">  248</span>    <span class=\"comment\">// Reallocates the table arrays to remove excess capacity (factory helper)</span></div>\n+<div class=\"foldopen\" id=\"foldopen00249\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00249\" name=\"l00249\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#a84fb9ead4f0f7458491b5d310592cea9\">  249</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01061.html#a84fb9ead4f0f7458491b5d310592cea9\">shrinkToFit</a>();</div>\n+<div class=\"line\"><a id=\"l00250\" name=\"l00250\"></a><span class=\"lineno\">  250</span> </div>\n+<div class=\"line\"><a id=\"l00251\" name=\"l00251\"></a><span class=\"lineno\">  251</span>    <span class=\"comment\">// Performs any final operations on internal tables (factory helper)</span></div>\n+<div class=\"foldopen\" id=\"foldopen00252\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00252\" name=\"l00252\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#a32d626626eee0bc4ade146973f6abb1c\">  252</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01061.html#a32d626626eee0bc4ade146973f6abb1c\">finalize</a>();</div>\n+<div class=\"line\"><a id=\"l00253\" name=\"l00253\"></a><span class=\"lineno\">  253</span> </div>\n+<div class=\"line\"><a id=\"l00254\" name=\"l00254\"></a><span class=\"lineno\">  254</span><span class=\"keyword\">protected</span>:</div>\n+<div class=\"line\"><a id=\"l00255\" name=\"l00255\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#adb82c38de4fd0bdc8550e62ebe932c48\">  255</a></span>    <a class=\"code hl_function\" href=\"a01061.html#adb82c38de4fd0bdc8550e62ebe932c48\">StencilTableReal</a>() : <a class=\"code hl_variable\" href=\"a01061.html#a385a2eb32312f28d79a02461a59c0630\">_numControlVertices</a>(0) {}</div>\n+<div class=\"line\"><a id=\"l00256\" name=\"l00256\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#af58f6a3f9b167c3330097c1a69ca36a8\">  256</a></span>    <a class=\"code hl_function\" href=\"a01061.html#adb82c38de4fd0bdc8550e62ebe932c48\">StencilTableReal</a>(<span class=\"keywordtype\">int</span> numControlVerts)</div>\n+<div class=\"line\"><a id=\"l00257\" name=\"l00257\"></a><span class=\"lineno\">  257</span>        : <a class=\"code hl_variable\" href=\"a01061.html#a385a2eb32312f28d79a02461a59c0630\">_numControlVertices</a>(numControlVerts) </div>\n+<div class=\"line\"><a id=\"l00258\" name=\"l00258\"></a><span class=\"lineno\">  258</span>    { }</div>\n+<div class=\"line\"><a id=\"l00259\" name=\"l00259\"></a><span class=\"lineno\">  259</span> </div>\n+<div class=\"line\"><a id=\"l00260\" name=\"l00260\"></a><span class=\"lineno\">  260</span>    <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01045.html\">StencilTableFactoryReal</a>&lt;REAL&gt;;</div>\n+<div class=\"line\"><a id=\"l00261\" name=\"l00261\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#a15cb55501155c442dba5f0e14bf03124\">  261</a></span>    <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span><a class=\"code hl_friend\" href=\"a01061.html#a15cb55501155c442dba5f0e14bf03124\">Far::PatchTableBuilder</a>;</div>\n+<div class=\"line\"><a id=\"l00262\" name=\"l00262\"></a><span class=\"lineno\">  262</span> </div>\n+<div class=\"line\"><a id=\"l00263\" name=\"l00263\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#a385a2eb32312f28d79a02461a59c0630\">  263</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"a01061.html#a385a2eb32312f28d79a02461a59c0630\">_numControlVertices</a>;              <span class=\"comment\">// number of control vertices</span></div>\n+<div class=\"line\"><a id=\"l00264\" name=\"l00264\"></a><span class=\"lineno\">  264</span> </div>\n+<div class=\"line\"><a id=\"l00265\" name=\"l00265\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#a11ad3846bf577760d1c829835f62b8d3\">  265</a></span>    std::vector&lt;int&gt;           <a class=\"code hl_variable\" href=\"a01061.html#a11ad3846bf577760d1c829835f62b8d3\">_sizes</a>;    <span class=\"comment\">// number of coefficients for each stencil</span></div>\n+<div class=\"line\"><a id=\"l00266\" name=\"l00266\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#aac45e3e693e9298942da27bef3cec02c\">  266</a></span>    std::vector&lt;Index&gt;         <a class=\"code hl_variable\" href=\"a01061.html#aac45e3e693e9298942da27bef3cec02c\">_offsets</a>,  <span class=\"comment\">// offset to the start of each stencil</span></div>\n+<div class=\"line\"><a id=\"l00267\" name=\"l00267\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#ad6ce8118325de299bd7d9735f68e6de2\">  267</a></span>                               <a class=\"code hl_variable\" href=\"a01061.html#ad6ce8118325de299bd7d9735f68e6de2\">_indices</a>;  <span class=\"comment\">// indices of contributing coarse vertices</span></div>\n+<div class=\"line\"><a id=\"l00268\" name=\"l00268\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#aae5a4bd49c41df5f949d773549c09d19\">  268</a></span>    std::vector&lt;REAL&gt;         <a class=\"code hl_variable\" href=\"a01061.html#aae5a4bd49c41df5f949d773549c09d19\">_weights</a>;  <span class=\"comment\">// stencil weight coefficients</span></div>\n+<div class=\"line\"><a id=\"l00269\" name=\"l00269\"></a><span class=\"lineno\">  269</span>};</div>\n+<div class=\"line\"><a id=\"l00270\" name=\"l00270\"></a><span class=\"lineno\">  270</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00273\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00273\" name=\"l00273\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01065.html\">  273</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"a01061.html\">StencilTableReal</a>&lt;float&gt; {</div>\n+<div class=\"line\"><a id=\"l00274\" name=\"l00274\"></a><span class=\"lineno\">  274</span><span class=\"keyword\">protected</span>:</div>\n+<div class=\"line\"><a id=\"l00275\" name=\"l00275\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01065.html#a54f0bb223290a17a59f51f4cbcfbc2e2\">  275</a></span>    <span class=\"keyword\">typedef</span> <a class=\"code hl_class\" href=\"a01061.html\">StencilTableReal&lt;float&gt;</a>   <a class=\"code hl_typedef\" href=\"a01065.html#a54f0bb223290a17a59f51f4cbcfbc2e2\">BaseTable</a>;</div>\n+<div class=\"line\"><a id=\"l00276\" name=\"l00276\"></a><span class=\"lineno\">  276</span> </div>\n+<div class=\"line\"><a id=\"l00277\" name=\"l00277\"></a><span class=\"lineno\">  277</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"foldopen\" id=\"foldopen00278\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00278\" name=\"l00278\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01065.html#a67e208e25b2922502d5f0c9d8e36ce88\">  278</a></span>    <a class=\"code hl_class\" href=\"a01057.html\">Stencil</a> <a class=\"code hl_function\" href=\"a01065.html#a67e208e25b2922502d5f0c9d8e36ce88\">GetStencil</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> index)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00279\" name=\"l00279\"></a><span class=\"lineno\">  279</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_class\" href=\"a01057.html\">Stencil</a>(<a class=\"code hl_function\" href=\"a01061.html#a84969a9edeae22167a83fde274f002af\">BaseTable::GetStencil</a>(index));</div>\n+<div class=\"line\"><a id=\"l00280\" name=\"l00280\"></a><span class=\"lineno\">  280</span>    }</div>\n+</div>\n+<div class=\"foldopen\" id=\"foldopen00281\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00281\" name=\"l00281\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01065.html#aa4c7aa3ea058d947fa1a2021704f9ee5\">  281</a></span>    <a class=\"code hl_class\" href=\"a01057.html\">Stencil</a> <a class=\"code hl_function\" href=\"a01065.html#aa4c7aa3ea058d947fa1a2021704f9ee5\">operator[] </a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> index)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00282\" name=\"l00282\"></a><span class=\"lineno\">  282</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_class\" href=\"a01057.html\">Stencil</a>(<a class=\"code hl_function\" href=\"a01061.html#a84969a9edeae22167a83fde274f002af\">BaseTable::GetStencil</a>(index));</div>\n+<div class=\"line\"><a id=\"l00283\" name=\"l00283\"></a><span class=\"lineno\">  283</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00284\" name=\"l00284\"></a><span class=\"lineno\">  284</span> </div>\n+<div class=\"line\"><a id=\"l00285\" name=\"l00285\"></a><span class=\"lineno\">  285</span><span class=\"keyword\">protected</span>:</div>\n+<div class=\"line\"><a id=\"l00286\" name=\"l00286\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01065.html#acc553d2d5624ab2a790ae9613812393e\">  286</a></span>    <a class=\"code hl_function\" href=\"a01065.html#acc553d2d5624ab2a790ae9613812393e\">StencilTable</a>() : <a class=\"code hl_class\" href=\"a01061.html\">BaseTable</a>() { }</div>\n+<div class=\"line\"><a id=\"l00287\" name=\"l00287\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01065.html#a54db76b34112b5cb3c623be8789dd8f4\">  287</a></span>    <a class=\"code hl_function\" href=\"a01065.html#a54db76b34112b5cb3c623be8789dd8f4\">StencilTable</a>(<span class=\"keywordtype\">int</span> numControlVerts) : <a class=\"code hl_class\" href=\"a01061.html\">BaseTable</a>(numControlVerts) { }</div>\n+<div class=\"foldopen\" id=\"foldopen00288\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00288\" name=\"l00288\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01065.html#a3d12830eb0d421206de500d7abc9decf\">  288</a></span>    <a class=\"code hl_function\" href=\"a01065.html#a3d12830eb0d421206de500d7abc9decf\">StencilTable</a>(<span class=\"keywordtype\">int</span> numControlVerts,</div>\n+<div class=\"line\"><a id=\"l00289\" name=\"l00289\"></a><span class=\"lineno\">  289</span>                 std::vector&lt;int&gt; <span class=\"keyword\">const</span>&amp; offsets,</div>\n+<div class=\"line\"><a id=\"l00290\" name=\"l00290\"></a><span class=\"lineno\">  290</span>                 std::vector&lt;int&gt; <span class=\"keyword\">const</span>&amp; sizes,</div>\n+<div class=\"line\"><a id=\"l00291\" name=\"l00291\"></a><span class=\"lineno\">  291</span>                 std::vector&lt;int&gt; <span class=\"keyword\">const</span>&amp; sources,</div>\n+<div class=\"line\"><a id=\"l00292\" name=\"l00292\"></a><span class=\"lineno\">  292</span>                 std::vector&lt;float&gt; <span class=\"keyword\">const</span>&amp; weights,</div>\n+<div class=\"line\"><a id=\"l00293\" name=\"l00293\"></a><span class=\"lineno\">  293</span>                 <span class=\"keywordtype\">bool</span> includeCoarseVerts,</div>\n+<div class=\"line\"><a id=\"l00294\" name=\"l00294\"></a><span class=\"lineno\">  294</span>                 <span class=\"keywordtype\">size_t</span> firstOffset)</div>\n+<div class=\"line\"><a id=\"l00295\" name=\"l00295\"></a><span class=\"lineno\">  295</span>        : <a class=\"code hl_class\" href=\"a01061.html\">BaseTable</a>(numControlVerts, offsets,</div>\n+<div class=\"line\"><a id=\"l00296\" name=\"l00296\"></a><span class=\"lineno\">  296</span>                sizes, sources, weights, includeCoarseVerts, firstOffset) { }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00297\" name=\"l00297\"></a><span class=\"lineno\">  297</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00298\" name=\"l00298\"></a><span class=\"lineno\">  298</span> </div>\n+<div class=\"line\"><a id=\"l00299\" name=\"l00299\"></a><span class=\"lineno\">  299</span> </div>\n+<div class=\"line\"><a id=\"l00302\" name=\"l00302\"></a><span class=\"lineno\">  302</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00303\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00303\" name=\"l00303\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01069.html\">  303</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01069.html\">LimitStencilReal</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"a01053.html\">StencilReal</a>&lt;REAL&gt; {</div>\n+<div class=\"line\"><a id=\"l00304\" name=\"l00304\"></a><span class=\"lineno\">  304</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00305\" name=\"l00305\"></a><span class=\"lineno\">  305</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00324\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01069.html#ad6ade692f92a3bf50c813a82bd63d4c7\">  324</a></span>    <a class=\"code hl_function\" href=\"a01069.html#ad6ade692f92a3bf50c813a82bd63d4c7\">LimitStencilReal</a>( <span class=\"keywordtype\">int</span>* size,</div>\n+<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\">  325</span>                      <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> * indices,</div>\n+<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\">  326</span>                      REAL * weights,</div>\n+<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\">  327</span>                      REAL * duWeights=0,</div>\n+<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\">  328</span>                      REAL * dvWeights=0,</div>\n+<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\">  329</span>                      REAL * duuWeights=0,</div>\n+<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\">  330</span>                      REAL * duvWeights=0,</div>\n+<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\">  331</span>                      REAL * dvvWeights=0)</div>\n+<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\">  332</span>        : <a class=\"code hl_class\" href=\"a01053.html\">StencilReal</a>&lt;REAL&gt;(size, indices, weights),</div>\n+<div class=\"line\"><a id=\"l00333\" name=\"l00333\"></a><span class=\"lineno\">  333</span>          _duWeights(duWeights),</div>\n+<div class=\"line\"><a id=\"l00334\" name=\"l00334\"></a><span class=\"lineno\">  334</span>          _dvWeights(dvWeights),</div>\n+<div class=\"line\"><a id=\"l00335\" name=\"l00335\"></a><span class=\"lineno\">  335</span>          _duuWeights(duuWeights),</div>\n+<div class=\"line\"><a id=\"l00336\" name=\"l00336\"></a><span class=\"lineno\">  336</span>          _duvWeights(duvWeights),</div>\n+<div class=\"line\"><a id=\"l00337\" name=\"l00337\"></a><span class=\"lineno\">  337</span>          _dvvWeights(dvvWeights) {</div>\n+<div class=\"line\"><a id=\"l00338\" name=\"l00338\"></a><span class=\"lineno\">  338</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00339\" name=\"l00339\"></a><span class=\"lineno\">  339</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00341\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00341\" name=\"l00341\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01069.html#ae18b32c2a684569e90392e2548cd9f53\">  341</a></span>    REAL <span class=\"keyword\">const</span> * <a class=\"code hl_function\" href=\"a01069.html#ae18b32c2a684569e90392e2548cd9f53\">GetDuWeights</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00342\" name=\"l00342\"></a><span class=\"lineno\">  342</span>        <span class=\"keywordflow\">return</span> _duWeights;</div>\n+<div class=\"line\"><a id=\"l00343\" name=\"l00343\"></a><span class=\"lineno\">  343</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00344\" name=\"l00344\"></a><span class=\"lineno\">  344</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00346\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00346\" name=\"l00346\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01069.html#a4fe06ffb99a6663f5262d9ac1fe06dd4\">  346</a></span>    REAL <span class=\"keyword\">const</span> * <a class=\"code hl_function\" href=\"a01069.html#a4fe06ffb99a6663f5262d9ac1fe06dd4\">GetDvWeights</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00347\" name=\"l00347\"></a><span class=\"lineno\">  347</span>        <span class=\"keywordflow\">return</span> _dvWeights;</div>\n+<div class=\"line\"><a id=\"l00348\" name=\"l00348\"></a><span class=\"lineno\">  348</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00349\" name=\"l00349\"></a><span class=\"lineno\">  349</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00351\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00351\" name=\"l00351\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01069.html#ae5f480289f879cf877d43c9db90acd50\">  351</a></span>    REAL <span class=\"keyword\">const</span> * <a class=\"code hl_function\" href=\"a01069.html#ae5f480289f879cf877d43c9db90acd50\">GetDuuWeights</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00352\" name=\"l00352\"></a><span class=\"lineno\">  352</span>        <span class=\"keywordflow\">return</span> _duuWeights;</div>\n+<div class=\"line\"><a id=\"l00353\" name=\"l00353\"></a><span class=\"lineno\">  353</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00354\" name=\"l00354\"></a><span class=\"lineno\">  354</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00356\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00356\" name=\"l00356\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01069.html#a448678fc2c70f09429f6a105b7aea8e4\">  356</a></span>    REAL <span class=\"keyword\">const</span> * <a class=\"code hl_function\" href=\"a01069.html#a448678fc2c70f09429f6a105b7aea8e4\">GetDuvWeights</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00357\" name=\"l00357\"></a><span class=\"lineno\">  357</span>        <span class=\"keywordflow\">return</span> _duvWeights;</div>\n+<div class=\"line\"><a id=\"l00358\" name=\"l00358\"></a><span class=\"lineno\">  358</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00359\" name=\"l00359\"></a><span class=\"lineno\">  359</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00361\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00361\" name=\"l00361\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01069.html#a9f286a1d78b9333a3c3efbe793e10b47\">  361</a></span>    REAL <span class=\"keyword\">const</span> * <a class=\"code hl_function\" href=\"a01069.html#a9f286a1d78b9333a3c3efbe793e10b47\">GetDvvWeights</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00362\" name=\"l00362\"></a><span class=\"lineno\">  362</span>        <span class=\"keywordflow\">return</span> _dvvWeights;</div>\n+<div class=\"line\"><a id=\"l00363\" name=\"l00363\"></a><span class=\"lineno\">  363</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00364\" name=\"l00364\"></a><span class=\"lineno\">  364</span> </div>\n+<div class=\"line\"><a id=\"l00366\" name=\"l00366\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01069.html#a19f9c49c05d967ad8e51bc2a696caf4b\">  366</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01069.html#a659a293dd51073a1b9560bb80f687705\">Next</a>() {</div>\n+<div class=\"line\"><a id=\"l00367\" name=\"l00367\"></a><span class=\"lineno\">  367</span>       <span class=\"keywordtype\">int</span> stride = *this-&gt;<a class=\"code hl_variable\" href=\"a01053.html#a52397f1270007c943b8539338a796608\">_size</a>;</div>\n+<div class=\"line\"><a id=\"l00368\" name=\"l00368\"></a><span class=\"lineno\">  368</span>       ++this-&gt;<a class=\"code hl_variable\" href=\"a01053.html#a52397f1270007c943b8539338a796608\">_size</a>;</div>\n+<div class=\"line\"><a id=\"l00369\" name=\"l00369\"></a><span class=\"lineno\">  369</span>       this-&gt;<a class=\"code hl_variable\" href=\"a01053.html#a8b387cbfb5a56ee18bf92d10f3cdad6d\">_indices</a> += stride;</div>\n+<div class=\"line\"><a id=\"l00370\" name=\"l00370\"></a><span class=\"lineno\">  370</span>       this-&gt;<a class=\"code hl_variable\" href=\"a01053.html#aab5755075fff28578bfd3387c504d303\">_weights</a> += stride;</div>\n+<div class=\"line\"><a id=\"l00371\" name=\"l00371\"></a><span class=\"lineno\">  371</span>       <span class=\"keywordflow\">if</span> (_duWeights) _duWeights += stride;</div>\n+<div class=\"line\"><a id=\"l00372\" name=\"l00372\"></a><span class=\"lineno\">  372</span>       <span class=\"keywordflow\">if</span> (_dvWeights) _dvWeights += stride;</div>\n+<div class=\"line\"><a id=\"l00373\" name=\"l00373\"></a><span class=\"lineno\">  373</span>       <span class=\"keywordflow\">if</span> (_duuWeights) _duuWeights += stride;</div>\n+<div class=\"line\"><a id=\"l00374\" name=\"l00374\"></a><span class=\"lineno\">  374</span>       <span class=\"keywordflow\">if</span> (_duvWeights) _duvWeights += stride;</div>\n+<div class=\"line\"><a id=\"l00375\" name=\"l00375\"></a><span class=\"lineno\">  375</span>       <span class=\"keywordflow\">if</span> (_dvvWeights) _dvvWeights += stride;</div>\n+<div class=\"line\"><a id=\"l00376\" name=\"l00376\"></a><span class=\"lineno\">  376</span>    }</div>\n+<div class=\"line\"><a id=\"l00377\" name=\"l00377\"></a><span class=\"lineno\">  377</span> </div>\n+<div class=\"line\"><a id=\"l00378\" name=\"l00378\"></a><span class=\"lineno\">  378</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00379\" name=\"l00379\"></a><span class=\"lineno\">  379</span> </div>\n+<div class=\"line\"><a id=\"l00380\" name=\"l00380\"></a><span class=\"lineno\">  380</span>    <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01045.html\">StencilTableFactoryReal</a>&lt;REAL&gt;;</div>\n+<div class=\"line\"><a id=\"l00381\" name=\"l00381\"></a><span class=\"lineno\">  381</span>    <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01049.html\">LimitStencilTableFactoryReal</a>&lt;REAL&gt;;</div>\n+<div class=\"line\"><a id=\"l00382\" name=\"l00382\"></a><span class=\"lineno\">  382</span> </div>\n+<div class=\"line\"><a id=\"l00383\" name=\"l00383\"></a><span class=\"lineno\">  383</span>    REAL  * _duWeights,  <span class=\"comment\">// pointer to stencil u derivative limit weights</span></div>\n+<div class=\"line\"><a id=\"l00384\" name=\"l00384\"></a><span class=\"lineno\">  384</span>          * _dvWeights,  <span class=\"comment\">// pointer to stencil v derivative limit weights</span></div>\n+<div class=\"line\"><a id=\"l00385\" name=\"l00385\"></a><span class=\"lineno\">  385</span>          * _duuWeights, <span class=\"comment\">// pointer to stencil uu derivative limit weights</span></div>\n+<div class=\"line\"><a id=\"l00386\" name=\"l00386\"></a><span class=\"lineno\">  386</span>          * _duvWeights, <span class=\"comment\">// pointer to stencil uv derivative limit weights</span></div>\n+<div class=\"line\"><a id=\"l00387\" name=\"l00387\"></a><span class=\"lineno\">  387</span>          * _dvvWeights; <span class=\"comment\">// pointer to stencil vv derivative limit weights</span></div>\n+<div class=\"line\"><a id=\"l00388\" name=\"l00388\"></a><span class=\"lineno\">  388</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00389\" name=\"l00389\"></a><span class=\"lineno\">  389</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00392\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00392\" name=\"l00392\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01073.html\">  392</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01073.html\">LimitStencil</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"a01069.html\">LimitStencilReal</a>&lt;float&gt; {</div>\n+<div class=\"line\"><a id=\"l00393\" name=\"l00393\"></a><span class=\"lineno\">  393</span><span class=\"keyword\">protected</span>:</div>\n+<div class=\"line\"><a id=\"l00394\" name=\"l00394\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01073.html#a1449f658bfbe067e5c7d709e700bbc29\">  394</a></span>    <span class=\"keyword\">typedef</span> <a class=\"code hl_class\" href=\"a01069.html\">LimitStencilReal&lt;float&gt;</a>   <a class=\"code hl_typedef\" href=\"a01073.html#a1449f658bfbe067e5c7d709e700bbc29\">BaseStencil</a>;</div>\n+<div class=\"line\"><a id=\"l00395\" name=\"l00395\"></a><span class=\"lineno\">  395</span> </div>\n+<div class=\"line\"><a id=\"l00396\" name=\"l00396\"></a><span class=\"lineno\">  396</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00397\" name=\"l00397\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01073.html#a071ea9b75540c3d54d9bf934fc944e5a\">  397</a></span>    <a class=\"code hl_function\" href=\"a01073.html#a071ea9b75540c3d54d9bf934fc944e5a\">LimitStencil</a>(<a class=\"code hl_class\" href=\"a01069.html\">BaseStencil</a> <span class=\"keyword\">const</span> &amp; other) : <a class=\"code hl_class\" href=\"a01069.html\">BaseStencil</a>(other) { }</div>\n+<div class=\"foldopen\" id=\"foldopen00398\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00398\" name=\"l00398\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01073.html#a51e1d601373aa0cd9ce70b630ce22adf\">  398</a></span>    <a class=\"code hl_function\" href=\"a01073.html#a51e1d601373aa0cd9ce70b630ce22adf\">LimitStencil</a>(<span class=\"keywordtype\">int</span>* size, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> * indices, <span class=\"keywordtype\">float</span> * weights,</div>\n+<div class=\"line\"><a id=\"l00399\" name=\"l00399\"></a><span class=\"lineno\">  399</span>                 <span class=\"keywordtype\">float</span> * duWeights=0, <span class=\"keywordtype\">float</span> * dvWeights=0,</div>\n+<div class=\"line\"><a id=\"l00400\" name=\"l00400\"></a><span class=\"lineno\">  400</span>                 <span class=\"keywordtype\">float</span> * duuWeights=0, <span class=\"keywordtype\">float</span> * duvWeights=0, <span class=\"keywordtype\">float</span> * dvvWeights=0)</div>\n+<div class=\"line\"><a id=\"l00401\" name=\"l00401\"></a><span class=\"lineno\">  401</span>        : <a class=\"code hl_class\" href=\"a01069.html\">BaseStencil</a>(size, indices, weights,</div>\n+<div class=\"line\"><a id=\"l00402\" name=\"l00402\"></a><span class=\"lineno\">  402</span>                 duWeights, dvWeights, duuWeights, duvWeights, dvvWeights) { }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00403\" name=\"l00403\"></a><span class=\"lineno\">  403</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00404\" name=\"l00404\"></a><span class=\"lineno\">  404</span> </div>\n+<div class=\"line\"><a id=\"l00405\" name=\"l00405\"></a><span class=\"lineno\">  405</span> </div>\n+<div class=\"line\"><a id=\"l00408\" name=\"l00408\"></a><span class=\"lineno\">  408</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00409\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00409\" name=\"l00409\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01077.html\">  409</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01077.html\">LimitStencilTableReal</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"a01061.html\">StencilTableReal</a>&lt;REAL&gt; {</div>\n+<div class=\"line\"><a id=\"l00410\" name=\"l00410\"></a><span class=\"lineno\">  410</span><span class=\"keyword\">protected</span>:</div>\n+<div class=\"line\"><a id=\"l00411\" name=\"l00411\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01077.html#a8bd530eac9ff33dc0b117d5f4a0cb939\">  411</a></span>    <a class=\"code hl_function\" href=\"a01077.html#a8bd530eac9ff33dc0b117d5f4a0cb939\">LimitStencilTableReal</a>(</div>\n+<div class=\"line\"><a id=\"l00412\" name=\"l00412\"></a><span class=\"lineno\">  412</span>                    <span class=\"keywordtype\">int</span> numControlVerts,</div>\n+<div class=\"line\"><a id=\"l00413\" name=\"l00413\"></a><span class=\"lineno\">  413</span>                    std::vector&lt;int&gt; <span class=\"keyword\">const</span>&amp; offsets,</div>\n+<div class=\"line\"><a id=\"l00414\" name=\"l00414\"></a><span class=\"lineno\">  414</span>                    std::vector&lt;int&gt; <span class=\"keyword\">const</span>&amp; sizes,</div>\n+<div class=\"line\"><a id=\"l00415\" name=\"l00415\"></a><span class=\"lineno\">  415</span>                    std::vector&lt;int&gt; <span class=\"keyword\">const</span>&amp; sources,</div>\n+<div class=\"line\"><a id=\"l00416\" name=\"l00416\"></a><span class=\"lineno\">  416</span>                    std::vector&lt;REAL&gt; <span class=\"keyword\">const</span>&amp; weights,</div>\n+<div class=\"line\"><a id=\"l00417\" name=\"l00417\"></a><span class=\"lineno\">  417</span>                    std::vector&lt;REAL&gt; <span class=\"keyword\">const</span>&amp; duWeights,</div>\n+<div class=\"line\"><a id=\"l00418\" name=\"l00418\"></a><span class=\"lineno\">  418</span>                    std::vector&lt;REAL&gt; <span class=\"keyword\">const</span>&amp; dvWeights,</div>\n+<div class=\"line\"><a id=\"l00419\" name=\"l00419\"></a><span class=\"lineno\">  419</span>                    std::vector&lt;REAL&gt; <span class=\"keyword\">const</span>&amp; duuWeights,</div>\n+<div class=\"line\"><a id=\"l00420\" name=\"l00420\"></a><span class=\"lineno\">  420</span>                    std::vector&lt;REAL&gt; <span class=\"keyword\">const</span>&amp; duvWeights,</div>\n+<div class=\"line\"><a id=\"l00421\" name=\"l00421\"></a><span class=\"lineno\">  421</span>                    std::vector&lt;REAL&gt; <span class=\"keyword\">const</span>&amp; dvvWeights,</div>\n+<div class=\"line\"><a id=\"l00422\" name=\"l00422\"></a><span class=\"lineno\">  422</span>                    <span class=\"keywordtype\">bool</span> includeCoarseVerts,</div>\n+<div class=\"line\"><a id=\"l00423\" name=\"l00423\"></a><span class=\"lineno\">  423</span>                    <span class=\"keywordtype\">size_t</span> firstOffset);</div>\n+<div class=\"line\"><a id=\"l00424\" name=\"l00424\"></a><span class=\"lineno\">  424</span> </div>\n+<div class=\"line\"><a id=\"l00425\" name=\"l00425\"></a><span class=\"lineno\">  425</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00426\" name=\"l00426\"></a><span class=\"lineno\">  426</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00428\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00428\" name=\"l00428\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01077.html#a785195dfb6a281904181b1cba18b3e62\">  428</a></span>    <a class=\"code hl_class\" href=\"a01069.html\">LimitStencilReal&lt;REAL&gt;</a> <a class=\"code hl_function\" href=\"a01077.html#a785195dfb6a281904181b1cba18b3e62\">GetLimitStencil</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> i) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00429\" name=\"l00429\"></a><span class=\"lineno\">  429</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00431\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00431\" name=\"l00431\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01077.html#a14f00fd1df2ddd7e1d4750e7dbda200c\">  431</a></span>    <a class=\"code hl_class\" href=\"a01069.html\">LimitStencilReal&lt;REAL&gt;</a> <a class=\"code hl_function\" href=\"a01077.html#a14f00fd1df2ddd7e1d4750e7dbda200c\">operator[] </a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> index) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00432\" name=\"l00432\"></a><span class=\"lineno\">  432</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00434\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00434\" name=\"l00434\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01077.html#aa3883f989c1ef593204f33e6ff8d31fe\">  434</a></span>    std::vector&lt;REAL&gt; <span class=\"keyword\">const</span> &amp; <a class=\"code hl_function\" href=\"a01077.html#aa3883f989c1ef593204f33e6ff8d31fe\">GetDuWeights</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00435\" name=\"l00435\"></a><span class=\"lineno\">  435</span>        <span class=\"keywordflow\">return</span> _duWeights;</div>\n+<div class=\"line\"><a id=\"l00436\" name=\"l00436\"></a><span class=\"lineno\">  436</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00437\" name=\"l00437\"></a><span class=\"lineno\">  437</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00439\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00439\" name=\"l00439\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01077.html#a3b267a7fa353373736643e1a003c0d96\">  439</a></span>    std::vector&lt;REAL&gt; <span class=\"keyword\">const</span> &amp; <a class=\"code hl_function\" href=\"a01077.html#a3b267a7fa353373736643e1a003c0d96\">GetDvWeights</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00440\" name=\"l00440\"></a><span class=\"lineno\">  440</span>        <span class=\"keywordflow\">return</span> _dvWeights;</div>\n+<div class=\"line\"><a id=\"l00441\" name=\"l00441\"></a><span class=\"lineno\">  441</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00442\" name=\"l00442\"></a><span class=\"lineno\">  442</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00444\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00444\" name=\"l00444\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01077.html#a143d96a8988e32c1497cfb4e07bd4d1e\">  444</a></span>    std::vector&lt;REAL&gt; <span class=\"keyword\">const</span> &amp; <a class=\"code hl_function\" href=\"a01077.html#a143d96a8988e32c1497cfb4e07bd4d1e\">GetDuuWeights</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00445\" name=\"l00445\"></a><span class=\"lineno\">  445</span>        <span class=\"keywordflow\">return</span> _duuWeights;</div>\n+<div class=\"line\"><a id=\"l00446\" name=\"l00446\"></a><span class=\"lineno\">  446</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00447\" name=\"l00447\"></a><span class=\"lineno\">  447</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00449\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00449\" name=\"l00449\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01077.html#ac6b92b68f0b56967e7ffa2d13aea72d0\">  449</a></span>    std::vector&lt;REAL&gt; <span class=\"keyword\">const</span> &amp; <a class=\"code hl_function\" href=\"a01077.html#ac6b92b68f0b56967e7ffa2d13aea72d0\">GetDuvWeights</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00450\" name=\"l00450\"></a><span class=\"lineno\">  450</span>        <span class=\"keywordflow\">return</span> _duvWeights;</div>\n+<div class=\"line\"><a id=\"l00451\" name=\"l00451\"></a><span class=\"lineno\">  451</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00452\" name=\"l00452\"></a><span class=\"lineno\">  452</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00454\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00454\" name=\"l00454\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01077.html#a176d8d4711bcb252f95b79f40549eaad\">  454</a></span>    std::vector&lt;REAL&gt; <span class=\"keyword\">const</span> &amp; <a class=\"code hl_function\" href=\"a01077.html#a176d8d4711bcb252f95b79f40549eaad\">GetDvvWeights</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00455\" name=\"l00455\"></a><span class=\"lineno\">  455</span>        <span class=\"keywordflow\">return</span> _dvvWeights;</div>\n+<div class=\"line\"><a id=\"l00456\" name=\"l00456\"></a><span class=\"lineno\">  456</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00457\" name=\"l00457\"></a><span class=\"lineno\">  457</span> </div>\n+<div class=\"line\"><a id=\"l00475\" name=\"l00475\"></a><span class=\"lineno\">  475</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00476\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00476\" name=\"l00476\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01077.html#a6388396152cb879c2766329f2b0091f8\">  476</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01077.html#a6388396152cb879c2766329f2b0091f8\">UpdateDerivs</a>(T <span class=\"keyword\">const</span> &amp; srcValues, U &amp; uderivs, U &amp; vderivs,</div>\n+<div class=\"line\"><a id=\"l00477\" name=\"l00477\"></a><span class=\"lineno\">  477</span>        <span class=\"keywordtype\">int</span> start=-1, <span class=\"keywordtype\">int</span> end=-1)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00478\" name=\"l00478\"></a><span class=\"lineno\">  478</span> </div>\n+<div class=\"line\"><a id=\"l00479\" name=\"l00479\"></a><span class=\"lineno\">  479</span>        this-&gt;<a class=\"code hl_function\" href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">update</a>(srcValues, uderivs, _duWeights, start, end);</div>\n+<div class=\"line\"><a id=\"l00480\" name=\"l00480\"></a><span class=\"lineno\">  480</span>        this-&gt;<a class=\"code hl_function\" href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">update</a>(srcValues, vderivs, _dvWeights, start, end);</div>\n+<div class=\"line\"><a id=\"l00481\" name=\"l00481\"></a><span class=\"lineno\">  481</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00482\" name=\"l00482\"></a><span class=\"lineno\">  482</span> </div>\n+<div class=\"line\"><a id=\"l00483\" name=\"l00483\"></a><span class=\"lineno\">  483</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T1, <span class=\"keyword\">class</span> T2, <span class=\"keyword\">class</span> U&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00484\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00484\" name=\"l00484\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01077.html#ad3029ef69f3a4b90c058c27cfa968897\">  484</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01077.html#ad3029ef69f3a4b90c058c27cfa968897\">UpdateDerivs</a>(T1 <span class=\"keyword\">const</span> &amp; srcBase, <span class=\"keywordtype\">int</span> numBase, T2 <span class=\"keyword\">const</span> &amp; srcRef,</div>\n+<div class=\"line\"><a id=\"l00485\" name=\"l00485\"></a><span class=\"lineno\">  485</span>        U &amp; uderivs, U &amp; vderivs, <span class=\"keywordtype\">int</span> start=-1, <span class=\"keywordtype\">int</span> end=-1)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00486\" name=\"l00486\"></a><span class=\"lineno\">  486</span> </div>\n+<div class=\"line\"><a id=\"l00487\" name=\"l00487\"></a><span class=\"lineno\">  487</span>        this-&gt;<a class=\"code hl_function\" href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">update</a>(srcBase, numBase, srcRef, uderivs, _duWeights, start, end);</div>\n+<div class=\"line\"><a id=\"l00488\" name=\"l00488\"></a><span class=\"lineno\">  488</span>        this-&gt;<a class=\"code hl_function\" href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">update</a>(srcBase, numBase, srcRef, vderivs, _dvWeights, start, end);</div>\n+<div class=\"line\"><a id=\"l00489\" name=\"l00489\"></a><span class=\"lineno\">  489</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00490\" name=\"l00490\"></a><span class=\"lineno\">  490</span> </div>\n+<div class=\"line\"><a id=\"l00491\" name=\"l00491\"></a><span class=\"lineno\">  491</span>    <span class=\"comment\">//  Pointer interface for backward compatibility</span></div>\n+<div class=\"line\"><a id=\"l00492\" name=\"l00492\"></a><span class=\"lineno\">  492</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00493\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00493\" name=\"l00493\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01077.html#a1de3a0b02983c7a753ca434492d72a41\">  493</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01077.html#a1de3a0b02983c7a753ca434492d72a41\">UpdateDerivs</a>(T <span class=\"keyword\">const</span> *src, U *uderivs, U *vderivs,</div>\n+<div class=\"line\"><a id=\"l00494\" name=\"l00494\"></a><span class=\"lineno\">  494</span>        <span class=\"keywordtype\">int</span> start=-1, <span class=\"keywordtype\">int</span> end=-1)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00495\" name=\"l00495\"></a><span class=\"lineno\">  495</span> </div>\n+<div class=\"line\"><a id=\"l00496\" name=\"l00496\"></a><span class=\"lineno\">  496</span>        this-&gt;<a class=\"code hl_function\" href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">update</a>(src, uderivs, _duWeights, start, end);</div>\n+<div class=\"line\"><a id=\"l00497\" name=\"l00497\"></a><span class=\"lineno\">  497</span>        this-&gt;<a class=\"code hl_function\" href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">update</a>(src, vderivs, _dvWeights, start, end);</div>\n+<div class=\"line\"><a id=\"l00498\" name=\"l00498\"></a><span class=\"lineno\">  498</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00499\" name=\"l00499\"></a><span class=\"lineno\">  499</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T1, <span class=\"keyword\">class</span> T2, <span class=\"keyword\">class</span> U&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00500\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00500\" name=\"l00500\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01077.html#aeb3fc8705b16ef80f1686b6fc7cd44e7\">  500</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01077.html#aeb3fc8705b16ef80f1686b6fc7cd44e7\">UpdateDerivs</a>(T1 <span class=\"keyword\">const</span> *srcBase, <span class=\"keywordtype\">int</span> numBase, T2 <span class=\"keyword\">const</span> *srcRef,</div>\n+<div class=\"line\"><a id=\"l00501\" name=\"l00501\"></a><span class=\"lineno\">  501</span>        U *uderivs, U *vderivs, <span class=\"keywordtype\">int</span> start=-1, <span class=\"keywordtype\">int</span> end=-1)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00502\" name=\"l00502\"></a><span class=\"lineno\">  502</span> </div>\n+<div class=\"line\"><a id=\"l00503\" name=\"l00503\"></a><span class=\"lineno\">  503</span>        this-&gt;<a class=\"code hl_function\" href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">update</a>(srcBase, numBase, srcRef, uderivs, _duWeights, start, end);</div>\n+<div class=\"line\"><a id=\"l00504\" name=\"l00504\"></a><span class=\"lineno\">  504</span>        this-&gt;<a class=\"code hl_function\" href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">update</a>(srcBase, numBase, srcRef, vderivs, _dvWeights, start, end);</div>\n+<div class=\"line\"><a id=\"l00505\" name=\"l00505\"></a><span class=\"lineno\">  505</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00506\" name=\"l00506\"></a><span class=\"lineno\">  506</span> </div>\n+<div class=\"line\"><a id=\"l00527\" name=\"l00527\"></a><span class=\"lineno\">  527</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00528\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00528\" name=\"l00528\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01077.html#a9afad522b48b3d7a0fe296ec26e1484b\">  528</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01077.html#a9afad522b48b3d7a0fe296ec26e1484b\">Update2ndDerivs</a>(T <span class=\"keyword\">const</span> &amp; srcValues,</div>\n+<div class=\"line\"><a id=\"l00529\" name=\"l00529\"></a><span class=\"lineno\">  529</span>        U &amp; uuderivs, U &amp; uvderivs, U &amp; vvderivs,</div>\n+<div class=\"line\"><a id=\"l00530\" name=\"l00530\"></a><span class=\"lineno\">  530</span>        <span class=\"keywordtype\">int</span> start=-1, <span class=\"keywordtype\">int</span> end=-1)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00531\" name=\"l00531\"></a><span class=\"lineno\">  531</span> </div>\n+<div class=\"line\"><a id=\"l00532\" name=\"l00532\"></a><span class=\"lineno\">  532</span>        this-&gt;<a class=\"code hl_function\" href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">update</a>(srcValues, uuderivs, _duuWeights, start, end);</div>\n+<div class=\"line\"><a id=\"l00533\" name=\"l00533\"></a><span class=\"lineno\">  533</span>        this-&gt;<a class=\"code hl_function\" href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">update</a>(srcValues, uvderivs, _duvWeights, start, end);</div>\n+<div class=\"line\"><a id=\"l00534\" name=\"l00534\"></a><span class=\"lineno\">  534</span>        this-&gt;<a class=\"code hl_function\" href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">update</a>(srcValues, vvderivs, _dvvWeights, start, end);</div>\n+<div class=\"line\"><a id=\"l00535\" name=\"l00535\"></a><span class=\"lineno\">  535</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00536\" name=\"l00536\"></a><span class=\"lineno\">  536</span> </div>\n+<div class=\"line\"><a id=\"l00537\" name=\"l00537\"></a><span class=\"lineno\">  537</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T1, <span class=\"keyword\">class</span> T2, <span class=\"keyword\">class</span> U&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00538\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00538\" name=\"l00538\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01077.html#ac0752d706ee5bbf7ef22f26a9399538f\">  538</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01077.html#ac0752d706ee5bbf7ef22f26a9399538f\">Update2ndDerivs</a>(T1 <span class=\"keyword\">const</span> &amp; srcBase, <span class=\"keywordtype\">int</span> numBase, T2 <span class=\"keyword\">const</span> &amp; srcRef,</div>\n+<div class=\"line\"><a id=\"l00539\" name=\"l00539\"></a><span class=\"lineno\">  539</span>        U &amp; uuderivs, U &amp; uvderivs, U &amp; vvderivs, <span class=\"keywordtype\">int</span> start=-1, <span class=\"keywordtype\">int</span> end=-1)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00540\" name=\"l00540\"></a><span class=\"lineno\">  540</span> </div>\n+<div class=\"line\"><a id=\"l00541\" name=\"l00541\"></a><span class=\"lineno\">  541</span>        this-&gt;<a class=\"code hl_function\" href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">update</a>(srcBase, numBase, srcRef, uuderivs, _duuWeights, start, end);</div>\n+<div class=\"line\"><a id=\"l00542\" name=\"l00542\"></a><span class=\"lineno\">  542</span>        this-&gt;<a class=\"code hl_function\" href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">update</a>(srcBase, numBase, srcRef, uvderivs, _duvWeights, start, end);</div>\n+<div class=\"line\"><a id=\"l00543\" name=\"l00543\"></a><span class=\"lineno\">  543</span>        this-&gt;<a class=\"code hl_function\" href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">update</a>(srcBase, numBase, srcRef, vvderivs, _dvvWeights, start, end);</div>\n+<div class=\"line\"><a id=\"l00544\" name=\"l00544\"></a><span class=\"lineno\">  544</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00545\" name=\"l00545\"></a><span class=\"lineno\">  545</span> </div>\n+<div class=\"line\"><a id=\"l00546\" name=\"l00546\"></a><span class=\"lineno\">  546</span>    <span class=\"comment\">//  Pointer interface for backward compatibility</span></div>\n+<div class=\"line\"><a id=\"l00547\" name=\"l00547\"></a><span class=\"lineno\">  547</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00548\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00548\" name=\"l00548\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01077.html#a1efa2668bb0085a23b0b590f7a765ab2\">  548</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01077.html#a1efa2668bb0085a23b0b590f7a765ab2\">Update2ndDerivs</a>(T <span class=\"keyword\">const</span> *src, T *uuderivs, U *uvderivs, U *vvderivs,</div>\n+<div class=\"line\"><a id=\"l00549\" name=\"l00549\"></a><span class=\"lineno\">  549</span>        <span class=\"keywordtype\">int</span> start=-1, <span class=\"keywordtype\">int</span> end=-1)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00550\" name=\"l00550\"></a><span class=\"lineno\">  550</span> </div>\n+<div class=\"line\"><a id=\"l00551\" name=\"l00551\"></a><span class=\"lineno\">  551</span>        this-&gt;<a class=\"code hl_function\" href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">update</a>(src, uuderivs, _duuWeights, start, end);</div>\n+<div class=\"line\"><a id=\"l00552\" name=\"l00552\"></a><span class=\"lineno\">  552</span>        this-&gt;<a class=\"code hl_function\" href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">update</a>(src, uvderivs, _duvWeights, start, end);</div>\n+<div class=\"line\"><a id=\"l00553\" name=\"l00553\"></a><span class=\"lineno\">  553</span>        this-&gt;<a class=\"code hl_function\" href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">update</a>(src, vvderivs, _dvvWeights, start, end);</div>\n+<div class=\"line\"><a id=\"l00554\" name=\"l00554\"></a><span class=\"lineno\">  554</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00555\" name=\"l00555\"></a><span class=\"lineno\">  555</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T1, <span class=\"keyword\">class</span> T2, <span class=\"keyword\">class</span> U&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00556\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00556\" name=\"l00556\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01077.html#a4ee18e8eea83ee57a5a993154ed4cfbd\">  556</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01077.html#a4ee18e8eea83ee57a5a993154ed4cfbd\">Update2ndDerivs</a>(T1 <span class=\"keyword\">const</span> *srcBase, <span class=\"keywordtype\">int</span> numBase, T2 <span class=\"keyword\">const</span> *srcRef,</div>\n+<div class=\"line\"><a id=\"l00557\" name=\"l00557\"></a><span class=\"lineno\">  557</span>        U *uuderivs, U *uvderivs, U *vvderivs, <span class=\"keywordtype\">int</span> start=-1, <span class=\"keywordtype\">int</span> end=-1)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00558\" name=\"l00558\"></a><span class=\"lineno\">  558</span> </div>\n+<div class=\"line\"><a id=\"l00559\" name=\"l00559\"></a><span class=\"lineno\">  559</span>        this-&gt;<a class=\"code hl_function\" href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">update</a>(srcBase, numBase, srcRef, uuderivs, _duuWeights, start, end);</div>\n+<div class=\"line\"><a id=\"l00560\" name=\"l00560\"></a><span class=\"lineno\">  560</span>        this-&gt;<a class=\"code hl_function\" href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">update</a>(srcBase, numBase, srcRef, uvderivs, _duvWeights, start, end);</div>\n+<div class=\"line\"><a id=\"l00561\" name=\"l00561\"></a><span class=\"lineno\">  561</span>        this-&gt;<a class=\"code hl_function\" href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">update</a>(srcBase, numBase, srcRef, vvderivs, _dvvWeights, start, end);</div>\n+<div class=\"line\"><a id=\"l00562\" name=\"l00562\"></a><span class=\"lineno\">  562</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00563\" name=\"l00563\"></a><span class=\"lineno\">  563</span> </div>\n+<div class=\"line\"><a id=\"l00565\" name=\"l00565\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01077.html#aa71d36872f416feaa853788a7a7a7ef8\">  565</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01077.html#aa71d36872f416feaa853788a7a7a7ef8\">Clear</a>();</div>\n+<div class=\"line\"><a id=\"l00566\" name=\"l00566\"></a><span class=\"lineno\">  566</span> </div>\n+<div class=\"line\"><a id=\"l00567\" name=\"l00567\"></a><span class=\"lineno\">  567</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00568\" name=\"l00568\"></a><span class=\"lineno\">  568</span>    <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01049.html\">LimitStencilTableFactoryReal</a>&lt;REAL&gt;;</div>\n+<div class=\"line\"><a id=\"l00569\" name=\"l00569\"></a><span class=\"lineno\">  569</span> </div>\n+<div class=\"line\"><a id=\"l00570\" name=\"l00570\"></a><span class=\"lineno\">  570</span>    <span class=\"comment\">// Resize the table arrays (factory helper)</span></div>\n+<div class=\"line\"><a id=\"l00571\" name=\"l00571\"></a><span class=\"lineno\">  571</span>    <span class=\"keywordtype\">void</span> resize(<span class=\"keywordtype\">int</span> nstencils, <span class=\"keywordtype\">int</span> nelems);</div>\n+<div class=\"line\"><a id=\"l00572\" name=\"l00572\"></a><span class=\"lineno\">  572</span> </div>\n+<div class=\"line\"><a id=\"l00573\" name=\"l00573\"></a><span class=\"lineno\">  573</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00574\" name=\"l00574\"></a><span class=\"lineno\">  574</span>    std::vector&lt;REAL&gt;   _duWeights,   <span class=\"comment\">// u  derivative limit stencil weights</span></div>\n+<div class=\"line\"><a id=\"l00575\" name=\"l00575\"></a><span class=\"lineno\">  575</span>                        _dvWeights,   <span class=\"comment\">// v  derivative limit stencil weights</span></div>\n+<div class=\"line\"><a id=\"l00576\" name=\"l00576\"></a><span class=\"lineno\">  576</span>                        _duuWeights,  <span class=\"comment\">// uu derivative limit stencil weights</span></div>\n+<div class=\"line\"><a id=\"l00577\" name=\"l00577\"></a><span class=\"lineno\">  577</span>                        _duvWeights,  <span class=\"comment\">// uv derivative limit stencil weights</span></div>\n+<div class=\"line\"><a id=\"l00578\" name=\"l00578\"></a><span class=\"lineno\">  578</span>                        _dvvWeights;  <span class=\"comment\">// vv derivative limit stencil weights</span></div>\n+<div class=\"line\"><a id=\"l00579\" name=\"l00579\"></a><span class=\"lineno\">  579</span>};</div>\n+<div class=\"line\"><a id=\"l00580\" name=\"l00580\"></a><span class=\"lineno\">  580</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00583\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00583\" name=\"l00583\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01081.html\">  583</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01081.html\">LimitStencilTable</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"a01077.html\">LimitStencilTableReal</a>&lt;float&gt; {</div>\n+<div class=\"line\"><a id=\"l00584\" name=\"l00584\"></a><span class=\"lineno\">  584</span><span class=\"keyword\">protected</span>:</div>\n+<div class=\"line\"><a id=\"l00585\" name=\"l00585\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01081.html#a13d2ee8ca9cdc9073905193ea1cefd95\">  585</a></span>    <span class=\"keyword\">typedef</span> <a class=\"code hl_class\" href=\"a01077.html\">LimitStencilTableReal&lt;float&gt;</a>   <a class=\"code hl_typedef\" href=\"a01081.html#a13d2ee8ca9cdc9073905193ea1cefd95\">BaseTable</a>;</div>\n+<div class=\"line\"><a id=\"l00586\" name=\"l00586\"></a><span class=\"lineno\">  586</span> </div>\n+<div class=\"line\"><a id=\"l00587\" name=\"l00587\"></a><span class=\"lineno\">  587</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"foldopen\" id=\"foldopen00588\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00588\" name=\"l00588\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01081.html#a177ff72b08f474982eaa70fa93fe5471\">  588</a></span>    <a class=\"code hl_class\" href=\"a01073.html\">LimitStencil</a> <a class=\"code hl_function\" href=\"a01081.html#a177ff72b08f474982eaa70fa93fe5471\">GetLimitStencil</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> index)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00589\" name=\"l00589\"></a><span class=\"lineno\">  589</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_class\" href=\"a01073.html\">LimitStencil</a>(<a class=\"code hl_function\" href=\"a01077.html#a785195dfb6a281904181b1cba18b3e62\">BaseTable::GetLimitStencil</a>(index));</div>\n+<div class=\"line\"><a id=\"l00590\" name=\"l00590\"></a><span class=\"lineno\">  590</span>    }</div>\n+</div>\n+<div class=\"foldopen\" id=\"foldopen00591\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00591\" name=\"l00591\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01081.html#a486c20121d63d5149d01adbe45d3b9b6\">  591</a></span>    <a class=\"code hl_class\" href=\"a01073.html\">LimitStencil</a> <a class=\"code hl_function\" href=\"a01081.html#a486c20121d63d5149d01adbe45d3b9b6\">operator[] </a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> index)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00592\" name=\"l00592\"></a><span class=\"lineno\">  592</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_class\" href=\"a01073.html\">LimitStencil</a>(<a class=\"code hl_function\" href=\"a01077.html#a785195dfb6a281904181b1cba18b3e62\">BaseTable::GetLimitStencil</a>(index));</div>\n+<div class=\"line\"><a id=\"l00593\" name=\"l00593\"></a><span class=\"lineno\">  593</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00594\" name=\"l00594\"></a><span class=\"lineno\">  594</span> </div>\n+<div class=\"line\"><a id=\"l00595\" name=\"l00595\"></a><span class=\"lineno\">  595</span><span class=\"keyword\">protected</span>:</div>\n+<div class=\"foldopen\" id=\"foldopen00596\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00596\" name=\"l00596\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01081.html#a45723c21481c3887e0740fe69acbac40\">  596</a></span>    <a class=\"code hl_function\" href=\"a01081.html#a45723c21481c3887e0740fe69acbac40\">LimitStencilTable</a>(<span class=\"keywordtype\">int</span> numControlVerts,</div>\n+<div class=\"line\"><a id=\"l00597\" name=\"l00597\"></a><span class=\"lineno\">  597</span>                    std::vector&lt;int&gt; <span class=\"keyword\">const</span>&amp; offsets,</div>\n+<div class=\"line\"><a id=\"l00598\" name=\"l00598\"></a><span class=\"lineno\">  598</span>                    std::vector&lt;int&gt; <span class=\"keyword\">const</span>&amp; sizes,</div>\n+<div class=\"line\"><a id=\"l00599\" name=\"l00599\"></a><span class=\"lineno\">  599</span>                    std::vector&lt;int&gt; <span class=\"keyword\">const</span>&amp; sources,</div>\n+<div class=\"line\"><a id=\"l00600\" name=\"l00600\"></a><span class=\"lineno\">  600</span>                    std::vector&lt;float&gt; <span class=\"keyword\">const</span>&amp; weights,</div>\n+<div class=\"line\"><a id=\"l00601\" name=\"l00601\"></a><span class=\"lineno\">  601</span>                    std::vector&lt;float&gt; <span class=\"keyword\">const</span>&amp; duWeights,</div>\n+<div class=\"line\"><a id=\"l00602\" name=\"l00602\"></a><span class=\"lineno\">  602</span>                    std::vector&lt;float&gt; <span class=\"keyword\">const</span>&amp; dvWeights,</div>\n+<div class=\"line\"><a id=\"l00603\" name=\"l00603\"></a><span class=\"lineno\">  603</span>                    std::vector&lt;float&gt; <span class=\"keyword\">const</span>&amp; duuWeights,</div>\n+<div class=\"line\"><a id=\"l00604\" name=\"l00604\"></a><span class=\"lineno\">  604</span>                    std::vector&lt;float&gt; <span class=\"keyword\">const</span>&amp; duvWeights,</div>\n+<div class=\"line\"><a id=\"l00605\" name=\"l00605\"></a><span class=\"lineno\">  605</span>                    std::vector&lt;float&gt; <span class=\"keyword\">const</span>&amp; dvvWeights,</div>\n+<div class=\"line\"><a id=\"l00606\" name=\"l00606\"></a><span class=\"lineno\">  606</span>                    <span class=\"keywordtype\">bool</span> includeCoarseVerts,</div>\n+<div class=\"line\"><a id=\"l00607\" name=\"l00607\"></a><span class=\"lineno\">  607</span>                    <span class=\"keywordtype\">size_t</span> firstOffset)</div>\n+<div class=\"line\"><a id=\"l00608\" name=\"l00608\"></a><span class=\"lineno\">  608</span>        : <a class=\"code hl_class\" href=\"a01077.html\">BaseTable</a>(numControlVerts,</div>\n+<div class=\"line\"><a id=\"l00609\" name=\"l00609\"></a><span class=\"lineno\">  609</span>                    offsets, sizes, sources, weights,</div>\n+<div class=\"line\"><a id=\"l00610\" name=\"l00610\"></a><span class=\"lineno\">  610</span>                    duWeights, dvWeights, duuWeights, duvWeights, dvvWeights,</div>\n+<div class=\"line\"><a id=\"l00611\" name=\"l00611\"></a><span class=\"lineno\">  611</span>                    includeCoarseVerts, firstOffset) { }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00612\" name=\"l00612\"></a><span class=\"lineno\">  612</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00613\" name=\"l00613\"></a><span class=\"lineno\">  613</span> </div>\n+<div class=\"line\"><a id=\"l00614\" name=\"l00614\"></a><span class=\"lineno\">  614</span> </div>\n+<div class=\"line\"><a id=\"l00615\" name=\"l00615\"></a><span class=\"lineno\">  615</span><span class=\"comment\">// Update values by applying cached stencil weights to new control values</span></div>\n+<div class=\"line\"><a id=\"l00616\" name=\"l00616\"></a><span class=\"lineno\">  616</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00617\" name=\"l00617\"></a><span class=\"lineno\">  617</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T1, <span class=\"keyword\">class</span> T2, <span class=\"keyword\">class</span> U&gt; <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00618\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00618\" name=\"l00618\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#a1bcd132b8e6d40cb6ed1543f28ff998c\">  618</a></span><a class=\"code hl_function\" href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">StencilTableReal&lt;REAL&gt;::update</a>(T1 <span class=\"keyword\">const</span> &amp;srcBase, <span class=\"keywordtype\">int</span> numBase,</div>\n+<div class=\"line\"><a id=\"l00619\" name=\"l00619\"></a><span class=\"lineno\">  619</span>    T2 <span class=\"keyword\">const</span> &amp;srcRef, U &amp;dstValues,</div>\n+<div class=\"line\"><a id=\"l00620\" name=\"l00620\"></a><span class=\"lineno\">  620</span>    std::vector&lt;REAL&gt; <span class=\"keyword\">const</span> &amp;valueWeights, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> start, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> end)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00621\" name=\"l00621\"></a><span class=\"lineno\">  621</span> </div>\n+<div class=\"line\"><a id=\"l00622\" name=\"l00622\"></a><span class=\"lineno\">  622</span>    <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> * sizes = &amp;_sizes.at(0);</div>\n+<div class=\"line\"><a id=\"l00623\" name=\"l00623\"></a><span class=\"lineno\">  623</span>    <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> <span class=\"keyword\">const</span> * indices = &amp;_indices.at(0);</div>\n+<div class=\"line\"><a id=\"l00624\" name=\"l00624\"></a><span class=\"lineno\">  624</span>    REAL <span class=\"keyword\">const</span> * weights = &amp;valueWeights.at(0);</div>\n+<div class=\"line\"><a id=\"l00625\" name=\"l00625\"></a><span class=\"lineno\">  625</span> </div>\n+<div class=\"line\"><a id=\"l00626\" name=\"l00626\"></a><span class=\"lineno\">  626</span>    <span class=\"keywordflow\">if</span> (start &gt; 0) {</div>\n+<div class=\"line\"><a id=\"l00627\" name=\"l00627\"></a><span class=\"lineno\">  627</span>        assert(start &lt; (<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a>)_offsets.size());</div>\n+<div class=\"line\"><a id=\"l00628\" name=\"l00628\"></a><span class=\"lineno\">  628</span>        sizes += start;</div>\n+<div class=\"line\"><a id=\"l00629\" name=\"l00629\"></a><span class=\"lineno\">  629</span>        indices += _offsets[start];</div>\n+<div class=\"line\"><a id=\"l00630\" name=\"l00630\"></a><span class=\"lineno\">  630</span>        weights += _offsets[start];</div>\n+<div class=\"line\"><a id=\"l00631\" name=\"l00631\"></a><span class=\"lineno\">  631</span>    } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00632\" name=\"l00632\"></a><span class=\"lineno\">  632</span>        start = 0;</div>\n+<div class=\"line\"><a id=\"l00633\" name=\"l00633\"></a><span class=\"lineno\">  633</span>    }</div>\n+<div class=\"line\"><a id=\"l00634\" name=\"l00634\"></a><span class=\"lineno\">  634</span> </div>\n+<div class=\"line\"><a id=\"l00635\" name=\"l00635\"></a><span class=\"lineno\">  635</span>    <span class=\"keywordtype\">int</span> nstencils = ((end &lt; start) ? GetNumStencils() : end) - start;</div>\n+<div class=\"line\"><a id=\"l00636\" name=\"l00636\"></a><span class=\"lineno\">  636</span> </div>\n+<div class=\"line\"><a id=\"l00637\" name=\"l00637\"></a><span class=\"lineno\">  637</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; nstencils; ++i, ++sizes) {</div>\n+<div class=\"line\"><a id=\"l00638\" name=\"l00638\"></a><span class=\"lineno\">  638</span>        dstValues[start + i].Clear();</div>\n+<div class=\"line\"><a id=\"l00639\" name=\"l00639\"></a><span class=\"lineno\">  639</span>        <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> j = 0; j &lt; *sizes; ++j, ++indices, ++weights) {</div>\n+<div class=\"line\"><a id=\"l00640\" name=\"l00640\"></a><span class=\"lineno\">  640</span>            <span class=\"keywordflow\">if</span> (*indices &lt; numBase) {</div>\n+<div class=\"line\"><a id=\"l00641\" name=\"l00641\"></a><span class=\"lineno\">  641</span>                dstValues[start + i].AddWithWeight(srcBase[*indices], *weights);</div>\n+<div class=\"line\"><a id=\"l00642\" name=\"l00642\"></a><span class=\"lineno\">  642</span>            } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00643\" name=\"l00643\"></a><span class=\"lineno\">  643</span>                dstValues[start + i].AddWithWeight(srcRef[*indices - numBase], *weights);</div>\n+<div class=\"line\"><a id=\"l00644\" name=\"l00644\"></a><span class=\"lineno\">  644</span>            }</div>\n+<div class=\"line\"><a id=\"l00645\" name=\"l00645\"></a><span class=\"lineno\">  645</span>        }</div>\n+<div class=\"line\"><a id=\"l00646\" name=\"l00646\"></a><span class=\"lineno\">  646</span>    }</div>\n+<div class=\"line\"><a id=\"l00647\" name=\"l00647\"></a><span class=\"lineno\">  647</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00648\" name=\"l00648\"></a><span class=\"lineno\">  648</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00649\" name=\"l00649\"></a><span class=\"lineno\">  649</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt; <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00650\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00650\" name=\"l00650\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">  650</a></span><a class=\"code hl_function\" href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">StencilTableReal&lt;REAL&gt;::update</a>(T <span class=\"keyword\">const</span> &amp;srcValues, U &amp;dstValues,</div>\n+<div class=\"line\"><a id=\"l00651\" name=\"l00651\"></a><span class=\"lineno\">  651</span>    std::vector&lt;REAL&gt; <span class=\"keyword\">const</span> &amp;valueWeights, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> start, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> end)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00652\" name=\"l00652\"></a><span class=\"lineno\">  652</span> </div>\n+<div class=\"line\"><a id=\"l00653\" name=\"l00653\"></a><span class=\"lineno\">  653</span>    <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> * sizes = &amp;_sizes.at(0);</div>\n+<div class=\"line\"><a id=\"l00654\" name=\"l00654\"></a><span class=\"lineno\">  654</span>    <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> <span class=\"keyword\">const</span> * indices = &amp;_indices.at(0);</div>\n+<div class=\"line\"><a id=\"l00655\" name=\"l00655\"></a><span class=\"lineno\">  655</span>    REAL <span class=\"keyword\">const</span> * weights = &amp;valueWeights.at(0);</div>\n+<div class=\"line\"><a id=\"l00656\" name=\"l00656\"></a><span class=\"lineno\">  656</span> </div>\n+<div class=\"line\"><a id=\"l00657\" name=\"l00657\"></a><span class=\"lineno\">  657</span>    <span class=\"keywordflow\">if</span> (start &gt; 0) {</div>\n+<div class=\"line\"><a id=\"l00658\" name=\"l00658\"></a><span class=\"lineno\">  658</span>        assert(start &lt; (<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a>)_offsets.size());</div>\n+<div class=\"line\"><a id=\"l00659\" name=\"l00659\"></a><span class=\"lineno\">  659</span>        sizes += start;</div>\n+<div class=\"line\"><a id=\"l00660\" name=\"l00660\"></a><span class=\"lineno\">  660</span>        indices += _offsets[start];</div>\n+<div class=\"line\"><a id=\"l00661\" name=\"l00661\"></a><span class=\"lineno\">  661</span>        weights += _offsets[start];</div>\n+<div class=\"line\"><a id=\"l00662\" name=\"l00662\"></a><span class=\"lineno\">  662</span>    } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00663\" name=\"l00663\"></a><span class=\"lineno\">  663</span>        start = 0;</div>\n+<div class=\"line\"><a id=\"l00664\" name=\"l00664\"></a><span class=\"lineno\">  664</span>    }</div>\n+<div class=\"line\"><a id=\"l00665\" name=\"l00665\"></a><span class=\"lineno\">  665</span> </div>\n+<div class=\"line\"><a id=\"l00666\" name=\"l00666\"></a><span class=\"lineno\">  666</span>    <span class=\"keywordtype\">int</span> nstencils = ((end &lt; start) ? GetNumStencils() : end) - start;</div>\n+<div class=\"line\"><a id=\"l00667\" name=\"l00667\"></a><span class=\"lineno\">  667</span> </div>\n+<div class=\"line\"><a id=\"l00668\" name=\"l00668\"></a><span class=\"lineno\">  668</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; nstencils; ++i, ++sizes) {</div>\n+<div class=\"line\"><a id=\"l00669\" name=\"l00669\"></a><span class=\"lineno\">  669</span>        dstValues[start + i].Clear();</div>\n+<div class=\"line\"><a id=\"l00670\" name=\"l00670\"></a><span class=\"lineno\">  670</span>        <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> j = 0; j &lt; *sizes; ++j, ++indices, ++weights) {</div>\n+<div class=\"line\"><a id=\"l00671\" name=\"l00671\"></a><span class=\"lineno\">  671</span>            dstValues[start + i].AddWithWeight(srcValues[*indices], *weights);</div>\n+<div class=\"line\"><a id=\"l00672\" name=\"l00672\"></a><span class=\"lineno\">  672</span>        }</div>\n+<div class=\"line\"><a id=\"l00673\" name=\"l00673\"></a><span class=\"lineno\">  673</span>    }</div>\n+<div class=\"line\"><a id=\"l00674\" name=\"l00674\"></a><span class=\"lineno\">  674</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00675\" name=\"l00675\"></a><span class=\"lineno\">  675</span> </div>\n+<div class=\"line\"><a id=\"l00676\" name=\"l00676\"></a><span class=\"lineno\">  676</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00677\" name=\"l00677\"></a><span class=\"lineno\">  677</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00678\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00678\" name=\"l00678\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#a8ac84e48ecd3aec3db72f62a4c8206f8\">  678</a></span><a class=\"code hl_function\" href=\"a01061.html#a8ac84e48ecd3aec3db72f62a4c8206f8\">StencilTableReal&lt;REAL&gt;::generateOffsets</a>() {</div>\n+<div class=\"line\"><a id=\"l00679\" name=\"l00679\"></a><span class=\"lineno\">  679</span>    <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> offset=0;</div>\n+<div class=\"line\"><a id=\"l00680\" name=\"l00680\"></a><span class=\"lineno\">  680</span>    <span class=\"keywordtype\">int</span> noffsets = (int)_sizes.size();</div>\n+<div class=\"line\"><a id=\"l00681\" name=\"l00681\"></a><span class=\"lineno\">  681</span>    _offsets.resize(noffsets);</div>\n+<div class=\"line\"><a id=\"l00682\" name=\"l00682\"></a><span class=\"lineno\">  682</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i=0; i&lt;(int)_sizes.size(); ++i ) {</div>\n+<div class=\"line\"><a id=\"l00683\" name=\"l00683\"></a><span class=\"lineno\">  683</span>        _offsets[i]=offset;</div>\n+<div class=\"line\"><a id=\"l00684\" name=\"l00684\"></a><span class=\"lineno\">  684</span>        offset+=_sizes[i];</div>\n+<div class=\"line\"><a id=\"l00685\" name=\"l00685\"></a><span class=\"lineno\">  685</span>    }</div>\n+<div class=\"line\"><a id=\"l00686\" name=\"l00686\"></a><span class=\"lineno\">  686</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00687\" name=\"l00687\"></a><span class=\"lineno\">  687</span> </div>\n+<div class=\"line\"><a id=\"l00688\" name=\"l00688\"></a><span class=\"lineno\">  688</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00689\" name=\"l00689\"></a><span class=\"lineno\">  689</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00690\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00690\" name=\"l00690\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#ac21f18df5c8da2db4d23287cdab5fcc1\">  690</a></span><a class=\"code hl_function\" href=\"a01061.html#ac21f18df5c8da2db4d23287cdab5fcc1\">StencilTableReal&lt;REAL&gt;::resize</a>(<span class=\"keywordtype\">int</span> nstencils, <span class=\"keywordtype\">int</span> nelems) {</div>\n+<div class=\"line\"><a id=\"l00691\" name=\"l00691\"></a><span class=\"lineno\">  691</span>    _sizes.resize(nstencils);</div>\n+<div class=\"line\"><a id=\"l00692\" name=\"l00692\"></a><span class=\"lineno\">  692</span>    _indices.resize(nelems);</div>\n+<div class=\"line\"><a id=\"l00693\" name=\"l00693\"></a><span class=\"lineno\">  693</span>    _weights.resize(nelems);</div>\n+<div class=\"line\"><a id=\"l00694\" name=\"l00694\"></a><span class=\"lineno\">  694</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00695\" name=\"l00695\"></a><span class=\"lineno\">  695</span> </div>\n+<div class=\"line\"><a id=\"l00696\" name=\"l00696\"></a><span class=\"lineno\">  696</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00697\" name=\"l00697\"></a><span class=\"lineno\">  697</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00698\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00698\" name=\"l00698\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#ae00a9e01294323589df33d2680dab235\">  698</a></span><a class=\"code hl_function\" href=\"a01061.html#ae00a9e01294323589df33d2680dab235\">StencilTableReal&lt;REAL&gt;::reserve</a>(<span class=\"keywordtype\">int</span> nstencils, <span class=\"keywordtype\">int</span> nelems) {</div>\n+<div class=\"line\"><a id=\"l00699\" name=\"l00699\"></a><span class=\"lineno\">  699</span>    _sizes.reserve(nstencils);</div>\n+<div class=\"line\"><a id=\"l00700\" name=\"l00700\"></a><span class=\"lineno\">  700</span>    _indices.reserve(nelems);</div>\n+<div class=\"line\"><a id=\"l00701\" name=\"l00701\"></a><span class=\"lineno\">  701</span>    _weights.reserve(nelems);</div>\n+<div class=\"line\"><a id=\"l00702\" name=\"l00702\"></a><span class=\"lineno\">  702</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00703\" name=\"l00703\"></a><span class=\"lineno\">  703</span> </div>\n+<div class=\"line\"><a id=\"l00704\" name=\"l00704\"></a><span class=\"lineno\">  704</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00705\" name=\"l00705\"></a><span class=\"lineno\">  705</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00706\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00706\" name=\"l00706\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#a84fb9ead4f0f7458491b5d310592cea9\">  706</a></span><a class=\"code hl_function\" href=\"a01061.html#a84fb9ead4f0f7458491b5d310592cea9\">StencilTableReal&lt;REAL&gt;::shrinkToFit</a>() {</div>\n+<div class=\"line\"><a id=\"l00707\" name=\"l00707\"></a><span class=\"lineno\">  707</span>    std::vector&lt;int&gt;(_sizes).swap(_sizes);</div>\n+<div class=\"line\"><a id=\"l00708\" name=\"l00708\"></a><span class=\"lineno\">  708</span>    std::vector&lt;Index&gt;(_indices).swap(_indices);</div>\n+<div class=\"line\"><a id=\"l00709\" name=\"l00709\"></a><span class=\"lineno\">  709</span>    std::vector&lt;REAL&gt;(_weights).swap(_weights);</div>\n+<div class=\"line\"><a id=\"l00710\" name=\"l00710\"></a><span class=\"lineno\">  710</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00711\" name=\"l00711\"></a><span class=\"lineno\">  711</span> </div>\n+<div class=\"line\"><a id=\"l00712\" name=\"l00712\"></a><span class=\"lineno\">  712</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00713\" name=\"l00713\"></a><span class=\"lineno\">  713</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00714\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00714\" name=\"l00714\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#a32d626626eee0bc4ade146973f6abb1c\">  714</a></span><a class=\"code hl_function\" href=\"a01061.html#a32d626626eee0bc4ade146973f6abb1c\">StencilTableReal&lt;REAL&gt;::finalize</a>() {</div>\n+<div class=\"line\"><a id=\"l00715\" name=\"l00715\"></a><span class=\"lineno\">  715</span>    shrinkToFit();</div>\n+<div class=\"line\"><a id=\"l00716\" name=\"l00716\"></a><span class=\"lineno\">  716</span>    generateOffsets();</div>\n+<div class=\"line\"><a id=\"l00717\" name=\"l00717\"></a><span class=\"lineno\">  717</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00718\" name=\"l00718\"></a><span class=\"lineno\">  718</span> </div>\n+<div class=\"line\"><a id=\"l00719\" name=\"l00719\"></a><span class=\"lineno\">  719</span><span class=\"comment\">// Returns a Stencil at index i in the table</span></div>\n+<div class=\"line\"><a id=\"l00720\" name=\"l00720\"></a><span class=\"lineno\">  720</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00721\" name=\"l00721\"></a><span class=\"lineno\">  721</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a01053.html\">StencilReal&lt;REAL&gt;</a></div>\n+<div class=\"foldopen\" id=\"foldopen00722\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00722\" name=\"l00722\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#a84969a9edeae22167a83fde274f002af\">  722</a></span><a class=\"code hl_function\" href=\"a01061.html#a84969a9edeae22167a83fde274f002af\">StencilTableReal&lt;REAL&gt;::GetStencil</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> i)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00723\" name=\"l00723\"></a><span class=\"lineno\">  723</span>    assert((! _offsets.empty()) &amp;&amp; i&lt;(<span class=\"keywordtype\">int</span>)_offsets.size());</div>\n+<div class=\"line\"><a id=\"l00724\" name=\"l00724\"></a><span class=\"lineno\">  724</span> </div>\n+<div class=\"line\"><a id=\"l00725\" name=\"l00725\"></a><span class=\"lineno\">  725</span>    <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> ofs = _offsets[i];</div>\n+<div class=\"line\"><a id=\"l00726\" name=\"l00726\"></a><span class=\"lineno\">  726</span> </div>\n+<div class=\"line\"><a id=\"l00727\" name=\"l00727\"></a><span class=\"lineno\">  727</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_class\" href=\"a01053.html\">StencilReal&lt;REAL&gt;</a>(<span class=\"keyword\">const_cast&lt;</span><span class=\"keywordtype\">int</span>*<span class=\"keyword\">&gt;</span>(&amp;_sizes[i]),</div>\n+<div class=\"line\"><a id=\"l00728\" name=\"l00728\"></a><span class=\"lineno\">  728</span>                             <span class=\"keyword\">const_cast&lt;</span><a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a>*<span class=\"keyword\">&gt;</span>(&amp;_indices[ofs]),</div>\n+<div class=\"line\"><a id=\"l00729\" name=\"l00729\"></a><span class=\"lineno\">  729</span>                             <span class=\"keyword\">const_cast&lt;</span>REAL*<span class=\"keyword\">&gt;</span>(&amp;_weights[ofs]));</div>\n+<div class=\"line\"><a id=\"l00730\" name=\"l00730\"></a><span class=\"lineno\">  730</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00731\" name=\"l00731\"></a><span class=\"lineno\">  731</span> </div>\n+<div class=\"line\"><a id=\"l00732\" name=\"l00732\"></a><span class=\"lineno\">  732</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00733\" name=\"l00733\"></a><span class=\"lineno\">  733</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a01053.html\">StencilReal&lt;REAL&gt;</a></div>\n+<div class=\"foldopen\" id=\"foldopen00734\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00734\" name=\"l00734\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01061.html#a35786984f5caa4684165da2c96fba9b3\">  734</a></span><a class=\"code hl_function\" href=\"a01061.html#a35786984f5caa4684165da2c96fba9b3\">StencilTableReal&lt;REAL&gt;::operator[] </a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> index)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00735\" name=\"l00735\"></a><span class=\"lineno\">  735</span>    <span class=\"keywordflow\">return</span> GetStencil(index);</div>\n+<div class=\"line\"><a id=\"l00736\" name=\"l00736\"></a><span class=\"lineno\">  736</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00737\" name=\"l00737\"></a><span class=\"lineno\">  737</span> </div>\n+<div class=\"line\"><a id=\"l00738\" name=\"l00738\"></a><span class=\"lineno\">  738</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00739\" name=\"l00739\"></a><span class=\"lineno\">  739</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"line\"><a id=\"l00740\" name=\"l00740\"></a><span class=\"lineno\">  740</span><a class=\"code hl_class\" href=\"a01077.html\">LimitStencilTableReal&lt;REAL&gt;::resize</a>(<span class=\"keywordtype\">int</span> nstencils, <span class=\"keywordtype\">int</span> nelems) {</div>\n+<div class=\"line\"><a id=\"l00741\" name=\"l00741\"></a><span class=\"lineno\">  741</span>    <a class=\"code hl_function\" href=\"a01061.html#ac21f18df5c8da2db4d23287cdab5fcc1\">StencilTableReal&lt;REAL&gt;::resize</a>(nstencils, nelems);</div>\n+<div class=\"line\"><a id=\"l00742\" name=\"l00742\"></a><span class=\"lineno\">  742</span>    _duWeights.resize(nelems);</div>\n+<div class=\"line\"><a id=\"l00743\" name=\"l00743\"></a><span class=\"lineno\">  743</span>    _dvWeights.resize(nelems);</div>\n+<div class=\"line\"><a id=\"l00744\" name=\"l00744\"></a><span class=\"lineno\">  744</span>}</div>\n+<div class=\"line\"><a id=\"l00745\" name=\"l00745\"></a><span class=\"lineno\">  745</span> </div>\n+<div class=\"line\"><a id=\"l00746\" name=\"l00746\"></a><span class=\"lineno\">  746</span><span class=\"comment\">// Returns a LimitStencil at index i in the table</span></div>\n+<div class=\"line\"><a id=\"l00747\" name=\"l00747\"></a><span class=\"lineno\">  747</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00748\" name=\"l00748\"></a><span class=\"lineno\">  748</span><span class=\"keyword\">inline</span> LimitStencilReal&lt;REAL&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00749\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00749\" name=\"l00749\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01077.html#a785195dfb6a281904181b1cba18b3e62\">  749</a></span><a class=\"code hl_function\" href=\"a01077.html#a785195dfb6a281904181b1cba18b3e62\">LimitStencilTableReal&lt;REAL&gt;::GetLimitStencil</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> i)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00750\" name=\"l00750\"></a><span class=\"lineno\">  750</span>    assert((! this-&gt;GetOffsets().empty()) &amp;&amp; i&lt;(<span class=\"keywordtype\">int</span>)this-&gt;GetOffsets().size());</div>\n+<div class=\"line\"><a id=\"l00751\" name=\"l00751\"></a><span class=\"lineno\">  751</span> </div>\n+<div class=\"line\"><a id=\"l00752\" name=\"l00752\"></a><span class=\"lineno\">  752</span>    <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> ofs = this-&gt;GetOffsets()[i];</div>\n+<div class=\"line\"><a id=\"l00753\" name=\"l00753\"></a><span class=\"lineno\">  753</span> </div>\n+<div class=\"line\"><a id=\"l00754\" name=\"l00754\"></a><span class=\"lineno\">  754</span>    <span class=\"keywordflow\">if</span> (!_duWeights.empty() &amp;&amp; !_dvWeights.empty() &amp;&amp;</div>\n+<div class=\"line\"><a id=\"l00755\" name=\"l00755\"></a><span class=\"lineno\">  755</span>        !_duuWeights.empty() &amp;&amp; !_duvWeights.empty() &amp;&amp; !_dvvWeights.empty()) {</div>\n+<div class=\"line\"><a id=\"l00756\" name=\"l00756\"></a><span class=\"lineno\">  756</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_class\" href=\"a01069.html\">LimitStencilReal&lt;REAL&gt;</a>(</div>\n+<div class=\"line\"><a id=\"l00757\" name=\"l00757\"></a><span class=\"lineno\">  757</span>                             <span class=\"keyword\">const_cast&lt;</span><span class=\"keywordtype\">int</span> *<span class=\"keyword\">&gt;</span>(&amp;this-&gt;GetSizes()[i]),</div>\n+<div class=\"line\"><a id=\"l00758\" name=\"l00758\"></a><span class=\"lineno\">  758</span>                             <span class=\"keyword\">const_cast&lt;</span><a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> *<span class=\"keyword\">&gt;</span>(&amp;this-&gt;GetControlIndices()[ofs]),</div>\n+<div class=\"line\"><a id=\"l00759\" name=\"l00759\"></a><span class=\"lineno\">  759</span>                             <span class=\"keyword\">const_cast&lt;</span>REAL *<span class=\"keyword\">&gt;</span>(&amp;this-&gt;GetWeights()[ofs]),</div>\n+<div class=\"line\"><a id=\"l00760\" name=\"l00760\"></a><span class=\"lineno\">  760</span>                             <span class=\"keyword\">const_cast&lt;</span>REAL *<span class=\"keyword\">&gt;</span>(&amp;GetDuWeights()[ofs]),</div>\n+<div class=\"line\"><a id=\"l00761\" name=\"l00761\"></a><span class=\"lineno\">  761</span>                             <span class=\"keyword\">const_cast&lt;</span>REAL *<span class=\"keyword\">&gt;</span>(&amp;GetDvWeights()[ofs]),</div>\n+<div class=\"line\"><a id=\"l00762\" name=\"l00762\"></a><span class=\"lineno\">  762</span>                             <span class=\"keyword\">const_cast&lt;</span>REAL *<span class=\"keyword\">&gt;</span>(&amp;GetDuuWeights()[ofs]),</div>\n+<div class=\"line\"><a id=\"l00763\" name=\"l00763\"></a><span class=\"lineno\">  763</span>                             <span class=\"keyword\">const_cast&lt;</span>REAL *<span class=\"keyword\">&gt;</span>(&amp;GetDuvWeights()[ofs]),</div>\n+<div class=\"line\"><a id=\"l00764\" name=\"l00764\"></a><span class=\"lineno\">  764</span>                             <span class=\"keyword\">const_cast&lt;</span>REAL *<span class=\"keyword\">&gt;</span>(&amp;GetDvvWeights()[ofs]) );</div>\n+<div class=\"line\"><a id=\"l00765\" name=\"l00765\"></a><span class=\"lineno\">  765</span>    } <span class=\"keywordflow\">else</span> <span class=\"keywordflow\">if</span> (!_duWeights.empty() &amp;&amp; !_dvWeights.empty()) {</div>\n+<div class=\"line\"><a id=\"l00766\" name=\"l00766\"></a><span class=\"lineno\">  766</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_class\" href=\"a01069.html\">LimitStencilReal&lt;REAL&gt;</a>(</div>\n+<div class=\"line\"><a id=\"l00767\" name=\"l00767\"></a><span class=\"lineno\">  767</span>                             <span class=\"keyword\">const_cast&lt;</span><span class=\"keywordtype\">int</span> *<span class=\"keyword\">&gt;</span>(&amp;this-&gt;GetSizes()[i]),</div>\n+<div class=\"line\"><a id=\"l00768\" name=\"l00768\"></a><span class=\"lineno\">  768</span>                             <span class=\"keyword\">const_cast&lt;</span><a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> *<span class=\"keyword\">&gt;</span>(&amp;this-&gt;GetControlIndices()[ofs]),</div>\n+<div class=\"line\"><a id=\"l00769\" name=\"l00769\"></a><span class=\"lineno\">  769</span>                             <span class=\"keyword\">const_cast&lt;</span>REAL *<span class=\"keyword\">&gt;</span>(&amp;this-&gt;GetWeights()[ofs]),</div>\n+<div class=\"line\"><a id=\"l00770\" name=\"l00770\"></a><span class=\"lineno\">  770</span>                             <span class=\"keyword\">const_cast&lt;</span>REAL *<span class=\"keyword\">&gt;</span>(&amp;GetDuWeights()[ofs]),</div>\n+<div class=\"line\"><a id=\"l00771\" name=\"l00771\"></a><span class=\"lineno\">  771</span>                             <span class=\"keyword\">const_cast&lt;</span>REAL *<span class=\"keyword\">&gt;</span>(&amp;GetDvWeights()[ofs]) );</div>\n+<div class=\"line\"><a id=\"l00772\" name=\"l00772\"></a><span class=\"lineno\">  772</span>    } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00773\" name=\"l00773\"></a><span class=\"lineno\">  773</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_class\" href=\"a01069.html\">LimitStencilReal&lt;REAL&gt;</a>(</div>\n+<div class=\"line\"><a id=\"l00774\" name=\"l00774\"></a><span class=\"lineno\">  774</span>                             <span class=\"keyword\">const_cast&lt;</span><span class=\"keywordtype\">int</span> *<span class=\"keyword\">&gt;</span>(&amp;this-&gt;GetSizes()[i]),</div>\n+<div class=\"line\"><a id=\"l00775\" name=\"l00775\"></a><span class=\"lineno\">  775</span>                             <span class=\"keyword\">const_cast&lt;</span><a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> *<span class=\"keyword\">&gt;</span>(&amp;this-&gt;GetControlIndices()[ofs]),</div>\n+<div class=\"line\"><a id=\"l00776\" name=\"l00776\"></a><span class=\"lineno\">  776</span>                             <span class=\"keyword\">const_cast&lt;</span>REAL *<span class=\"keyword\">&gt;</span>(&amp;this-&gt;GetWeights()[ofs]) );</div>\n+<div class=\"line\"><a id=\"l00777\" name=\"l00777\"></a><span class=\"lineno\">  777</span>    }</div>\n+<div class=\"line\"><a id=\"l00778\" name=\"l00778\"></a><span class=\"lineno\">  778</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00779\" name=\"l00779\"></a><span class=\"lineno\">  779</span> </div>\n+<div class=\"line\"><a id=\"l00780\" name=\"l00780\"></a><span class=\"lineno\">  780</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00781\" name=\"l00781\"></a><span class=\"lineno\">  781</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a01069.html\">LimitStencilReal&lt;REAL&gt;</a></div>\n+<div class=\"foldopen\" id=\"foldopen00782\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00782\" name=\"l00782\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01077.html#a14f00fd1df2ddd7e1d4750e7dbda200c\">  782</a></span><a class=\"code hl_function\" href=\"a01077.html#a14f00fd1df2ddd7e1d4750e7dbda200c\">LimitStencilTableReal&lt;REAL&gt;::operator[] </a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> index)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00783\" name=\"l00783\"></a><span class=\"lineno\">  783</span>    <span class=\"keywordflow\">return</span> GetLimitStencil(index);</div>\n+<div class=\"line\"><a id=\"l00784\" name=\"l00784\"></a><span class=\"lineno\">  784</span>}</div>\n+</div>\n+</div>\n+<div class=\"line\"><a id=\"l00785\" name=\"l00785\"></a><span class=\"lineno\">  785</span> </div>\n+<div class=\"line\"><a id=\"l00786\" name=\"l00786\"></a><span class=\"lineno\">  786</span>} <span class=\"comment\">// end namespace Far</span></div>\n+<div class=\"line\"><a id=\"l00787\" name=\"l00787\"></a><span class=\"lineno\">  787</span> </div>\n+<div class=\"line\"><a id=\"l00788\" name=\"l00788\"></a><span class=\"lineno\">  788</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00789\" name=\"l00789\"></a><span class=\"lineno\">  789</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00790\" name=\"l00790\"></a><span class=\"lineno\">  790</span> </div>\n+<div class=\"line\"><a id=\"l00791\" name=\"l00791\"></a><span class=\"lineno\">  791</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l00792\" name=\"l00792\"></a><span class=\"lineno\">  792</span> </div>\n+<div class=\"line\"><a id=\"l00793\" name=\"l00793\"></a><span class=\"lineno\">  793</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// OPENSUBDIV3_FAR_STENCILTABLE_H</span></div>\n+</div>\n+</div>\n+</div>\n+</div>\n+</div>\n+</div>\n+</div>\n+</div>\n+</div>\n+</div>\n+</div>\n+</div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa00908_html_ab34c85a48f33dfe7b8bf4d966fdebbf2\"><div class=\"ttname\"><a href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">OpenSubdiv::OPENSUBDIV_VERSION::Far::Index</a></div><div class=\"ttdeci\">Vtr::Index Index</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01486_source.html#l00041\">types.h:41</a></div></div>\n+<div class=\"ttc\" id=\"aa01045_html\"><div class=\"ttname\"><a href=\"a01045.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactoryReal</a></div><div class=\"ttdoc\">A specialized factory for StencilTable.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00824_source.html#l00051\">stencilTableFactory.h:51</a></div></div>\n+<div class=\"ttc\" id=\"aa01049_html\"><div class=\"ttname\"><a href=\"a01049.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableFactoryReal</a></div><div class=\"ttdoc\">A specialized factory for LimitStencilTable.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00824_source.html#l00209\">stencilTableFactory.h:209</a></div></div>\n+<div class=\"ttc\" id=\"aa01053_html\"><div class=\"ttname\"><a href=\"a01053.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilReal</a></div><div class=\"ttdoc\">Vertex stencil descriptor.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00053\">stencilTable.h:53</a></div></div>\n+<div class=\"ttc\" id=\"aa01053_html_a1bacc5a5c4ae6f44d4f06c1dd0adf8f4\"><div class=\"ttname\"><a href=\"a01053.html#a1bacc5a5c4ae6f44d4f06c1dd0adf8f4\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilReal::StencilReal</a></div><div class=\"ttdeci\">StencilReal()</div><div class=\"ttdoc\">Default constructor.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00057\">stencilTable.h:57</a></div></div>\n+<div class=\"ttc\" id=\"aa01053_html_a52397f1270007c943b8539338a796608\"><div class=\"ttname\"><a href=\"a01053.html#a52397f1270007c943b8539338a796608\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilReal::_size</a></div><div class=\"ttdeci\">int * _size</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00109\">stencilTable.h:109</a></div></div>\n+<div class=\"ttc\" id=\"aa01053_html_a52ca26745627f4704181d58dc919ae57\"><div class=\"ttname\"><a href=\"a01053.html#a52ca26745627f4704181d58dc919ae57\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilReal::StencilReal</a></div><div class=\"ttdeci\">StencilReal(int *size, Index *indices, REAL *weights)</div><div class=\"ttdoc\">Constructor.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00067\">stencilTable.h:67</a></div></div>\n+<div class=\"ttc\" id=\"aa01053_html_a659a293dd51073a1b9560bb80f687705\"><div class=\"ttname\"><a href=\"a01053.html#a659a293dd51073a1b9560bb80f687705\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilReal::Next</a></div><div class=\"ttdeci\">void Next()</div><div class=\"ttdoc\">Advance to the next stencil in the table.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00098\">stencilTable.h:98</a></div></div>\n+<div class=\"ttc\" id=\"aa01053_html_a698f69e8409658c6afaf5ea1ff0f15b8\"><div class=\"ttname\"><a href=\"a01053.html#a698f69e8409658c6afaf5ea1ff0f15b8\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilReal::StencilReal</a></div><div class=\"ttdeci\">StencilReal(StencilReal const &amp;other)</div><div class=\"ttdoc\">Copy constructor.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00071\">stencilTable.h:71</a></div></div>\n+<div class=\"ttc\" id=\"aa01053_html_a8b387cbfb5a56ee18bf92d10f3cdad6d\"><div class=\"ttname\"><a href=\"a01053.html#a8b387cbfb5a56ee18bf92d10f3cdad6d\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilReal::_indices</a></div><div class=\"ttdeci\">Index * _indices</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00110\">stencilTable.h:110</a></div></div>\n+<div class=\"ttc\" id=\"aa01053_html_a8d6f065bafcef50d1f904979c794d1ce\"><div class=\"ttname\"><a href=\"a01053.html#a8d6f065bafcef50d1f904979c794d1ce\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilReal::GetVertexIndices</a></div><div class=\"ttdeci\">Index const * GetVertexIndices() const</div><div class=\"ttdoc\">Returns the control vertices' indices.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00088\">stencilTable.h:88</a></div></div>\n+<div class=\"ttc\" id=\"aa01053_html_aa4907b035ab197f57102411e48b2cfc0\"><div class=\"ttname\"><a href=\"a01053.html#aa4907b035ab197f57102411e48b2cfc0\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilReal::GetSize</a></div><div class=\"ttdeci\">int GetSize() const</div><div class=\"ttdoc\">Returns the size of the stencil.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00078\">stencilTable.h:78</a></div></div>\n+<div class=\"ttc\" id=\"aa01053_html_aab5755075fff28578bfd3387c504d303\"><div class=\"ttname\"><a href=\"a01053.html#aab5755075fff28578bfd3387c504d303\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilReal::_weights</a></div><div class=\"ttdeci\">REAL * _weights</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00111\">stencilTable.h:111</a></div></div>\n+<div class=\"ttc\" id=\"aa01053_html_ab823038f11d7c069fc63a2b992055535\"><div class=\"ttname\"><a href=\"a01053.html#ab823038f11d7c069fc63a2b992055535\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilReal::GetSizePtr</a></div><div class=\"ttdeci\">int * GetSizePtr() const</div><div class=\"ttdoc\">Returns the size of the stencil as a pointer.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00083\">stencilTable.h:83</a></div></div>\n+<div class=\"ttc\" id=\"aa01053_html_aecc2be688aecf08f7a98e49db8fed2f8\"><div class=\"ttname\"><a href=\"a01053.html#aecc2be688aecf08f7a98e49db8fed2f8\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilReal::GetWeights</a></div><div class=\"ttdeci\">REAL const * GetWeights() const</div><div class=\"ttdoc\">Returns the interpolation weights.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00093\">stencilTable.h:93</a></div></div>\n+<div class=\"ttc\" id=\"aa01057_html\"><div class=\"ttname\"><a href=\"a01057.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::Stencil</a></div><div class=\"ttdoc\">Vertex stencil class wrapping the template for compatibility.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00116\">stencilTable.h:116</a></div></div>\n+<div class=\"ttc\" id=\"aa01057_html_a540bd990ac7c5770b6f1a5eb5b58d874\"><div class=\"ttname\"><a href=\"a01057.html#a540bd990ac7c5770b6f1a5eb5b58d874\">OpenSubdiv::OPENSUBDIV_VERSION::Far::Stencil::Stencil</a></div><div class=\"ttdeci\">Stencil(BaseStencil const &amp;other)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00122\">stencilTable.h:122</a></div></div>\n+<div class=\"ttc\" id=\"aa01057_html_a685b0ef36235914f7c10ff8f1169ade8\"><div class=\"ttname\"><a href=\"a01057.html#a685b0ef36235914f7c10ff8f1169ade8\">OpenSubdiv::OPENSUBDIV_VERSION::Far::Stencil::Stencil</a></div><div class=\"ttdeci\">Stencil(int *size, Index *indices, float *weights)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00123\">stencilTable.h:123</a></div></div>\n+<div class=\"ttc\" id=\"aa01057_html_a71b0ccb1e01e77608b938cb11039a34a\"><div class=\"ttname\"><a href=\"a01057.html#a71b0ccb1e01e77608b938cb11039a34a\">OpenSubdiv::OPENSUBDIV_VERSION::Far::Stencil::BaseStencil</a></div><div class=\"ttdeci\">StencilReal&lt; float &gt; BaseStencil</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00118\">stencilTable.h:118</a></div></div>\n+<div class=\"ttc\" id=\"aa01057_html_af3b2d4f28b2b1edbb491db39b0658c2a\"><div class=\"ttname\"><a href=\"a01057.html#af3b2d4f28b2b1edbb491db39b0658c2a\">OpenSubdiv::OPENSUBDIV_VERSION::Far::Stencil::Stencil</a></div><div class=\"ttdeci\">Stencil()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00121\">stencilTable.h:121</a></div></div>\n+<div class=\"ttc\" id=\"aa01061_html\"><div class=\"ttname\"><a href=\"a01061.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal</a></div><div class=\"ttdoc\">Table of subdivision stencils.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00141\">stencilTable.h:141</a></div></div>\n+<div class=\"ttc\" id=\"aa01061_html_a02e67ceab8cb5af7982ef2a31a07a2ce\"><div class=\"ttname\"><a href=\"a01061.html#a02e67ceab8cb5af7982ef2a31a07a2ce\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::GetNumControlVertices</a></div><div class=\"ttdeci\">int GetNumControlVertices() const</div><div class=\"ttdoc\">Returns the number of control vertices indexed in the table.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00161\">stencilTable.h:161</a></div></div>\n+<div class=\"ttc\" id=\"aa01061_html_a11ad3846bf577760d1c829835f62b8d3\"><div class=\"ttname\"><a href=\"a01061.html#a11ad3846bf577760d1c829835f62b8d3\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::_sizes</a></div><div class=\"ttdeci\">std::vector&lt; int &gt; _sizes</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00265\">stencilTable.h:265</a></div></div>\n+<div class=\"ttc\" id=\"aa01061_html_a15cb55501155c442dba5f0e14bf03124\"><div class=\"ttname\"><a href=\"a01061.html#a15cb55501155c442dba5f0e14bf03124\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::PatchTableBuilder</a></div><div class=\"ttdeci\">friend class Far::PatchTableBuilder</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00261\">stencilTable.h:261</a></div></div>\n+<div class=\"ttc\" id=\"aa01061_html_a1bcd132b8e6d40cb6ed1543f28ff998c\"><div class=\"ttname\"><a href=\"a01061.html#a1bcd132b8e6d40cb6ed1543f28ff998c\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::update</a></div><div class=\"ttdeci\">void update(T1 const &amp;srcBase, int numBase, T2 const &amp;srcRef, U &amp;dstValues, std::vector&lt; REAL &gt; const &amp;valueWeights, Index start, Index end) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00618\">stencilTable.h:618</a></div></div>\n+<div class=\"ttc\" id=\"aa01061_html_a232ddf5a15e24e91b2ec55f83a1436b5\"><div class=\"ttname\"><a href=\"a01061.html#a232ddf5a15e24e91b2ec55f83a1436b5\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::UpdateValues</a></div><div class=\"ttdeci\">void UpdateValues(T1 const &amp;srcBase, int numBase, T2 const &amp;srcRef, U &amp;dstValues, Index start=-1, Index end=-1) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00210\">stencilTable.h:210</a></div></div>\n+<div class=\"ttc\" id=\"aa01061_html_a2c225eadcb49bfb4af44bfb883516809\"><div class=\"ttname\"><a href=\"a01061.html#a2c225eadcb49bfb4af44bfb883516809\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::GetControlIndices</a></div><div class=\"ttdeci\">std::vector&lt; Index &gt; const &amp; GetControlIndices() const</div><div class=\"ttdoc\">Returns the indices of the control vertices.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00179\">stencilTable.h:179</a></div></div>\n+<div class=\"ttc\" id=\"aa01061_html_a32d626626eee0bc4ade146973f6abb1c\"><div class=\"ttname\"><a href=\"a01061.html#a32d626626eee0bc4ade146973f6abb1c\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::finalize</a></div><div class=\"ttdeci\">void finalize()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00714\">stencilTable.h:714</a></div></div>\n+<div class=\"ttc\" id=\"aa01061_html_a35786984f5caa4684165da2c96fba9b3\"><div class=\"ttname\"><a href=\"a01061.html#a35786984f5caa4684165da2c96fba9b3\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::operator[]</a></div><div class=\"ttdeci\">StencilReal&lt; REAL &gt; operator[](Index index) const</div><div class=\"ttdoc\">Returns the stencil at index i in the table.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00734\">stencilTable.h:734</a></div></div>\n+<div class=\"ttc\" id=\"aa01061_html_a385a2eb32312f28d79a02461a59c0630\"><div class=\"ttname\"><a href=\"a01061.html#a385a2eb32312f28d79a02461a59c0630\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::_numControlVertices</a></div><div class=\"ttdeci\">int _numControlVertices</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00263\">stencilTable.h:263</a></div></div>\n+<div class=\"ttc\" id=\"aa01061_html_a3cd3b8de1630c159f3c66dfc950210cf\"><div class=\"ttname\"><a href=\"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::update</a></div><div class=\"ttdeci\">void update(T const &amp;srcValues, U &amp;dstValues, std::vector&lt; REAL &gt; const &amp;valueWeights, Index start, Index end) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00650\">stencilTable.h:650</a></div></div>\n+<div class=\"ttc\" id=\"aa01061_html_a50345bcc33c588cf49520a79396e105d\"><div class=\"ttname\"><a href=\"a01061.html#a50345bcc33c588cf49520a79396e105d\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::GetSizes</a></div><div class=\"ttdeci\">std::vector&lt; int &gt; const &amp; GetSizes() const</div><div class=\"ttdoc\">Returns the number of control vertices of each stencil in the table.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00169\">stencilTable.h:169</a></div></div>\n+<div class=\"ttc\" id=\"aa01061_html_a65836d2070b943c8fecbad926d074de2\"><div class=\"ttname\"><a href=\"a01061.html#a65836d2070b943c8fecbad926d074de2\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::GetNumStencils</a></div><div class=\"ttdeci\">int GetNumStencils() const</div><div class=\"ttdoc\">Returns the number of stencils in the table.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00156\">stencilTable.h:156</a></div></div>\n+<div class=\"ttc\" id=\"aa01061_html_a680f5b6b2b873a149a997c4b5fca2be8\"><div class=\"ttname\"><a href=\"a01061.html#a680f5b6b2b873a149a997c4b5fca2be8\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::~StencilTableReal</a></div><div class=\"ttdeci\">virtual ~StencilTableReal()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00153\">stencilTable.h:153</a></div></div>\n+<div class=\"ttc\" id=\"aa01061_html_a82005658c7c2b4aea6222587d06ce4ef\"><div class=\"ttname\"><a href=\"a01061.html#a82005658c7c2b4aea6222587d06ce4ef\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::GetOffsets</a></div><div class=\"ttdeci\">std::vector&lt; Index &gt; const &amp; GetOffsets() const</div><div class=\"ttdoc\">Returns the offset to a given stencil (factory may leave empty)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00174\">stencilTable.h:174</a></div></div>\n+<div class=\"ttc\" id=\"aa01061_html_a84969a9edeae22167a83fde274f002af\"><div class=\"ttname\"><a href=\"a01061.html#a84969a9edeae22167a83fde274f002af\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::GetStencil</a></div><div class=\"ttdeci\">StencilReal&lt; REAL &gt; GetStencil(Index i) const</div><div class=\"ttdoc\">Returns a Stencil at index i in the table.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00722\">stencilTable.h:722</a></div></div>\n+<div class=\"ttc\" id=\"aa01061_html_a84fb9ead4f0f7458491b5d310592cea9\"><div class=\"ttname\"><a href=\"a01061.html#a84fb9ead4f0f7458491b5d310592cea9\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::shrinkToFit</a></div><div class=\"ttdeci\">void shrinkToFit()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00706\">stencilTable.h:706</a></div></div>\n+<div class=\"ttc\" id=\"aa01061_html_a8ac84e48ecd3aec3db72f62a4c8206f8\"><div class=\"ttname\"><a href=\"a01061.html#a8ac84e48ecd3aec3db72f62a4c8206f8\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::generateOffsets</a></div><div class=\"ttdeci\">void generateOffsets()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00678\">stencilTable.h:678</a></div></div>\n+<div class=\"ttc\" id=\"aa01061_html_aa71d36872f416feaa853788a7a7a7ef8\"><div class=\"ttname\"><a href=\"a01061.html#aa71d36872f416feaa853788a7a7a7ef8\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::Clear</a></div><div class=\"ttdeci\">void Clear()</div><div class=\"ttdoc\">Clears the stencils from the table.</div></div>\n+<div class=\"ttc\" id=\"aa01061_html_aac45e3e693e9298942da27bef3cec02c\"><div class=\"ttname\"><a href=\"a01061.html#aac45e3e693e9298942da27bef3cec02c\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::_offsets</a></div><div class=\"ttdeci\">std::vector&lt; Index &gt; _offsets</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00266\">stencilTable.h:266</a></div></div>\n+<div class=\"ttc\" id=\"aa01061_html_aae5a4bd49c41df5f949d773549c09d19\"><div class=\"ttname\"><a href=\"a01061.html#aae5a4bd49c41df5f949d773549c09d19\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::_weights</a></div><div class=\"ttdeci\">std::vector&lt; REAL &gt; _weights</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00268\">stencilTable.h:268</a></div></div>\n+<div class=\"ttc\" id=\"aa01061_html_ac21f18df5c8da2db4d23287cdab5fcc1\"><div class=\"ttname\"><a href=\"a01061.html#ac21f18df5c8da2db4d23287cdab5fcc1\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::resize</a></div><div class=\"ttdeci\">void resize(int nstencils, int nelems)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00690\">stencilTable.h:690</a></div></div>\n+<div class=\"ttc\" id=\"aa01061_html_ac5effc231d2dad1b9fb193c4cf43ab83\"><div class=\"ttname\"><a href=\"a01061.html#ac5effc231d2dad1b9fb193c4cf43ab83\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::GetWeights</a></div><div class=\"ttdeci\">std::vector&lt; REAL &gt; const &amp; GetWeights() const</div><div class=\"ttdoc\">Returns the stencil interpolation weights.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00184\">stencilTable.h:184</a></div></div>\n+<div class=\"ttc\" id=\"aa01061_html_ac67bfdfb875671203b222a0a25b1cfe3\"><div class=\"ttname\"><a href=\"a01061.html#ac67bfdfb875671203b222a0a25b1cfe3\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::UpdateValues</a></div><div class=\"ttdeci\">void UpdateValues(T1 const *srcBase, int numBase, T2 const *srcRef, U *dst, Index start=-1, Index end=-1) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00221\">stencilTable.h:221</a></div></div>\n+<div class=\"ttc\" id=\"aa01061_html_acfd28c310b1539af45e019690b1cb211\"><div class=\"ttname\"><a href=\"a01061.html#acfd28c310b1539af45e019690b1cb211\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::StencilTableReal</a></div><div class=\"ttdeci\">StencilTableReal(int numControlVerts, std::vector&lt; int &gt; const &amp;offsets, std::vector&lt; int &gt; const &amp;sizes, std::vector&lt; int &gt; const &amp;sources, std::vector&lt; REAL &gt; const &amp;weights, bool includeCoarseVerts, size_t firstOffset)</div></div>\n+<div class=\"ttc\" id=\"aa01061_html_ad6ce8118325de299bd7d9735f68e6de2\"><div class=\"ttname\"><a href=\"a01061.html#ad6ce8118325de299bd7d9735f68e6de2\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::_indices</a></div><div class=\"ttdeci\">std::vector&lt; Index &gt; _indices</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00267\">stencilTable.h:267</a></div></div>\n+<div class=\"ttc\" id=\"aa01061_html_adb82c38de4fd0bdc8550e62ebe932c48\"><div class=\"ttname\"><a href=\"a01061.html#adb82c38de4fd0bdc8550e62ebe932c48\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::StencilTableReal</a></div><div class=\"ttdeci\">StencilTableReal()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00255\">stencilTable.h:255</a></div></div>\n+<div class=\"ttc\" id=\"aa01061_html_ae00a9e01294323589df33d2680dab235\"><div class=\"ttname\"><a href=\"a01061.html#ae00a9e01294323589df33d2680dab235\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::reserve</a></div><div class=\"ttdeci\">void reserve(int nstencils, int nelems)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00698\">stencilTable.h:698</a></div></div>\n+<div class=\"ttc\" id=\"aa01061_html_ae1ff7caf5509b4d76bc8220608d5b176\"><div class=\"ttname\"><a href=\"a01061.html#ae1ff7caf5509b4d76bc8220608d5b176\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::UpdateValues</a></div><div class=\"ttdeci\">void UpdateValues(T const *src, U *dst, Index start=-1, Index end=-1) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00217\">stencilTable.h:217</a></div></div>\n+<div class=\"ttc\" id=\"aa01061_html_afbd961bebfa92a8fd0826f219baaf8f5\"><div class=\"ttname\"><a href=\"a01061.html#afbd961bebfa92a8fd0826f219baaf8f5\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::UpdateValues</a></div><div class=\"ttdeci\">void UpdateValues(T const &amp;srcValues, U &amp;dstValues, Index start=-1, Index end=-1) const</div><div class=\"ttdoc\">Updates point values based on the control values.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00205\">stencilTable.h:205</a></div></div>\n+<div class=\"ttc\" id=\"aa01065_html\"><div class=\"ttname\"><a href=\"a01065.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTable</a></div><div class=\"ttdoc\">Stencil table class wrapping the template for compatibility.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00273\">stencilTable.h:273</a></div></div>\n+<div class=\"ttc\" id=\"aa01065_html_a3d12830eb0d421206de500d7abc9decf\"><div class=\"ttname\"><a href=\"a01065.html#a3d12830eb0d421206de500d7abc9decf\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTable::StencilTable</a></div><div class=\"ttdeci\">StencilTable(int numControlVerts, std::vector&lt; int &gt; const &amp;offsets, std::vector&lt; int &gt; const &amp;sizes, std::vector&lt; int &gt; const &amp;sources, std::vector&lt; float &gt; const &amp;weights, bool includeCoarseVerts, size_t firstOffset)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00288\">stencilTable.h:288</a></div></div>\n+<div class=\"ttc\" id=\"aa01065_html_a54db76b34112b5cb3c623be8789dd8f4\"><div class=\"ttname\"><a href=\"a01065.html#a54db76b34112b5cb3c623be8789dd8f4\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTable::StencilTable</a></div><div class=\"ttdeci\">StencilTable(int numControlVerts)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00287\">stencilTable.h:287</a></div></div>\n+<div class=\"ttc\" id=\"aa01065_html_a54f0bb223290a17a59f51f4cbcfbc2e2\"><div class=\"ttname\"><a href=\"a01065.html#a54f0bb223290a17a59f51f4cbcfbc2e2\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTable::BaseTable</a></div><div class=\"ttdeci\">StencilTableReal&lt; float &gt; BaseTable</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00275\">stencilTable.h:275</a></div></div>\n+<div class=\"ttc\" id=\"aa01065_html_a67e208e25b2922502d5f0c9d8e36ce88\"><div class=\"ttname\"><a href=\"a01065.html#a67e208e25b2922502d5f0c9d8e36ce88\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTable::GetStencil</a></div><div class=\"ttdeci\">Stencil GetStencil(Index index) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00278\">stencilTable.h:278</a></div></div>\n+<div class=\"ttc\" id=\"aa01065_html_aa4c7aa3ea058d947fa1a2021704f9ee5\"><div class=\"ttname\"><a href=\"a01065.html#aa4c7aa3ea058d947fa1a2021704f9ee5\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTable::operator[]</a></div><div class=\"ttdeci\">Stencil operator[](Index index) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00281\">stencilTable.h:281</a></div></div>\n+<div class=\"ttc\" id=\"aa01065_html_acc553d2d5624ab2a790ae9613812393e\"><div class=\"ttname\"><a href=\"a01065.html#acc553d2d5624ab2a790ae9613812393e\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTable::StencilTable</a></div><div class=\"ttdeci\">StencilTable()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00286\">stencilTable.h:286</a></div></div>\n+<div class=\"ttc\" id=\"aa01069_html\"><div class=\"ttname\"><a href=\"a01069.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilReal</a></div><div class=\"ttdoc\">Limit point stencil descriptor.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00303\">stencilTable.h:303</a></div></div>\n+<div class=\"ttc\" id=\"aa01069_html_a448678fc2c70f09429f6a105b7aea8e4\"><div class=\"ttname\"><a href=\"a01069.html#a448678fc2c70f09429f6a105b7aea8e4\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilReal::GetDuvWeights</a></div><div class=\"ttdeci\">REAL const * GetDuvWeights() const</div><div class=\"ttdoc\">Returns the uv derivative weights.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00356\">stencilTable.h:356</a></div></div>\n+<div class=\"ttc\" id=\"aa01069_html_a4fe06ffb99a6663f5262d9ac1fe06dd4\"><div class=\"ttname\"><a href=\"a01069.html#a4fe06ffb99a6663f5262d9ac1fe06dd4\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilReal::GetDvWeights</a></div><div class=\"ttdeci\">REAL const * GetDvWeights() const</div><div class=\"ttdoc\">Returns the v derivative weights.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00346\">stencilTable.h:346</a></div></div>\n+<div class=\"ttc\" id=\"aa01069_html_a659a293dd51073a1b9560bb80f687705\"><div class=\"ttname\"><a href=\"a01069.html#a659a293dd51073a1b9560bb80f687705\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilReal::Next</a></div><div class=\"ttdeci\">void Next()</div><div class=\"ttdoc\">Advance to the next stencil in the table.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00366\">stencilTable.h:366</a></div></div>\n+<div class=\"ttc\" id=\"aa01069_html_a9f286a1d78b9333a3c3efbe793e10b47\"><div class=\"ttname\"><a href=\"a01069.html#a9f286a1d78b9333a3c3efbe793e10b47\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilReal::GetDvvWeights</a></div><div class=\"ttdeci\">REAL const * GetDvvWeights() const</div><div class=\"ttdoc\">Returns the vv derivative weights.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00361\">stencilTable.h:361</a></div></div>\n+<div class=\"ttc\" id=\"aa01069_html_ad6ade692f92a3bf50c813a82bd63d4c7\"><div class=\"ttname\"><a href=\"a01069.html#ad6ade692f92a3bf50c813a82bd63d4c7\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilReal::LimitStencilReal</a></div><div class=\"ttdeci\">LimitStencilReal(int *size, Index *indices, REAL *weights, REAL *duWeights=0, REAL *dvWeights=0, REAL *duuWeights=0, REAL *duvWeights=0, REAL *dvvWeights=0)</div><div class=\"ttdoc\">Constructor.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00324\">stencilTable.h:324</a></div></div>\n+<div class=\"ttc\" id=\"aa01069_html_ae18b32c2a684569e90392e2548cd9f53\"><div class=\"ttname\"><a href=\"a01069.html#ae18b32c2a684569e90392e2548cd9f53\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilReal::GetDuWeights</a></div><div class=\"ttdeci\">REAL const * GetDuWeights() const</div><div class=\"ttdoc\">Returns the u derivative weights.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00341\">stencilTable.h:341</a></div></div>\n+<div class=\"ttc\" id=\"aa01069_html_ae5f480289f879cf877d43c9db90acd50\"><div class=\"ttname\"><a href=\"a01069.html#ae5f480289f879cf877d43c9db90acd50\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilReal::GetDuuWeights</a></div><div class=\"ttdeci\">REAL const * GetDuuWeights() const</div><div class=\"ttdoc\">Returns the uu derivative weights.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00351\">stencilTable.h:351</a></div></div>\n+<div class=\"ttc\" id=\"aa01073_html\"><div class=\"ttname\"><a href=\"a01073.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencil</a></div><div class=\"ttdoc\">Limit point stencil class wrapping the template for compatibility.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00392\">stencilTable.h:392</a></div></div>\n+<div class=\"ttc\" id=\"aa01073_html_a071ea9b75540c3d54d9bf934fc944e5a\"><div class=\"ttname\"><a href=\"a01073.html#a071ea9b75540c3d54d9bf934fc944e5a\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencil::LimitStencil</a></div><div class=\"ttdeci\">LimitStencil(BaseStencil const &amp;other)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00397\">stencilTable.h:397</a></div></div>\n+<div class=\"ttc\" id=\"aa01073_html_a1449f658bfbe067e5c7d709e700bbc29\"><div class=\"ttname\"><a href=\"a01073.html#a1449f658bfbe067e5c7d709e700bbc29\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencil::BaseStencil</a></div><div class=\"ttdeci\">LimitStencilReal&lt; float &gt; BaseStencil</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00394\">stencilTable.h:394</a></div></div>\n+<div class=\"ttc\" id=\"aa01073_html_a51e1d601373aa0cd9ce70b630ce22adf\"><div class=\"ttname\"><a href=\"a01073.html#a51e1d601373aa0cd9ce70b630ce22adf\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencil::LimitStencil</a></div><div class=\"ttdeci\">LimitStencil(int *size, Index *indices, float *weights, float *duWeights=0, float *dvWeights=0, float *duuWeights=0, float *duvWeights=0, float *dvvWeights=0)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00398\">stencilTable.h:398</a></div></div>\n+<div class=\"ttc\" id=\"aa01077_html\"><div class=\"ttname\"><a href=\"a01077.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableReal</a></div><div class=\"ttdoc\">Table of limit subdivision stencils.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00409\">stencilTable.h:409</a></div></div>\n+<div class=\"ttc\" id=\"aa01077_html_a143d96a8988e32c1497cfb4e07bd4d1e\"><div class=\"ttname\"><a href=\"a01077.html#a143d96a8988e32c1497cfb4e07bd4d1e\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableReal::GetDuuWeights</a></div><div class=\"ttdeci\">std::vector&lt; REAL &gt; const &amp; GetDuuWeights() const</div><div class=\"ttdoc\">Returns the 'uu' derivative stencil interpolation weights.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00444\">stencilTable.h:444</a></div></div>\n+<div class=\"ttc\" id=\"aa01077_html_a14f00fd1df2ddd7e1d4750e7dbda200c\"><div class=\"ttname\"><a href=\"a01077.html#a14f00fd1df2ddd7e1d4750e7dbda200c\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableReal::operator[]</a></div><div class=\"ttdeci\">LimitStencilReal&lt; REAL &gt; operator[](Index index) const</div><div class=\"ttdoc\">Returns the limit stencil at index i in the table.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00782\">stencilTable.h:782</a></div></div>\n+<div class=\"ttc\" id=\"aa01077_html_a176d8d4711bcb252f95b79f40549eaad\"><div class=\"ttname\"><a href=\"a01077.html#a176d8d4711bcb252f95b79f40549eaad\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableReal::GetDvvWeights</a></div><div class=\"ttdeci\">std::vector&lt; REAL &gt; const &amp; GetDvvWeights() const</div><div class=\"ttdoc\">Returns the 'vv' derivative stencil interpolation weights.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00454\">stencilTable.h:454</a></div></div>\n+<div class=\"ttc\" id=\"aa01077_html_a1de3a0b02983c7a753ca434492d72a41\"><div class=\"ttname\"><a href=\"a01077.html#a1de3a0b02983c7a753ca434492d72a41\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableReal::UpdateDerivs</a></div><div class=\"ttdeci\">void UpdateDerivs(T const *src, U *uderivs, U *vderivs, int start=-1, int end=-1) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00493\">stencilTable.h:493</a></div></div>\n+<div class=\"ttc\" id=\"aa01077_html_a1efa2668bb0085a23b0b590f7a765ab2\"><div class=\"ttname\"><a href=\"a01077.html#a1efa2668bb0085a23b0b590f7a765ab2\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableReal::Update2ndDerivs</a></div><div class=\"ttdeci\">void Update2ndDerivs(T const *src, T *uuderivs, U *uvderivs, U *vvderivs, int start=-1, int end=-1) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00548\">stencilTable.h:548</a></div></div>\n+<div class=\"ttc\" id=\"aa01077_html_a3b267a7fa353373736643e1a003c0d96\"><div class=\"ttname\"><a href=\"a01077.html#a3b267a7fa353373736643e1a003c0d96\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableReal::GetDvWeights</a></div><div class=\"ttdeci\">std::vector&lt; REAL &gt; const &amp; GetDvWeights() const</div><div class=\"ttdoc\">Returns the 'v' derivative stencil interpolation weights.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00439\">stencilTable.h:439</a></div></div>\n+<div class=\"ttc\" id=\"aa01077_html_a4ee18e8eea83ee57a5a993154ed4cfbd\"><div class=\"ttname\"><a href=\"a01077.html#a4ee18e8eea83ee57a5a993154ed4cfbd\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableReal::Update2ndDerivs</a></div><div class=\"ttdeci\">void Update2ndDerivs(T1 const *srcBase, int numBase, T2 const *srcRef, U *uuderivs, U *uvderivs, U *vvderivs, int start=-1, int end=-1) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00556\">stencilTable.h:556</a></div></div>\n+<div class=\"ttc\" id=\"aa01077_html_a6388396152cb879c2766329f2b0091f8\"><div class=\"ttname\"><a href=\"a01077.html#a6388396152cb879c2766329f2b0091f8\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableReal::UpdateDerivs</a></div><div class=\"ttdeci\">void UpdateDerivs(T const &amp;srcValues, U &amp;uderivs, U &amp;vderivs, int start=-1, int end=-1) const</div><div class=\"ttdoc\">Updates derivative values based on the control values.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00476\">stencilTable.h:476</a></div></div>\n+<div class=\"ttc\" id=\"aa01077_html_a785195dfb6a281904181b1cba18b3e62\"><div class=\"ttname\"><a href=\"a01077.html#a785195dfb6a281904181b1cba18b3e62\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableReal::GetLimitStencil</a></div><div class=\"ttdeci\">LimitStencilReal&lt; REAL &gt; GetLimitStencil(Index i) const</div><div class=\"ttdoc\">Returns a LimitStencil at index i in the table.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00749\">stencilTable.h:749</a></div></div>\n+<div class=\"ttc\" id=\"aa01077_html_a8bd530eac9ff33dc0b117d5f4a0cb939\"><div class=\"ttname\"><a href=\"a01077.html#a8bd530eac9ff33dc0b117d5f4a0cb939\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableReal::LimitStencilTableReal</a></div><div class=\"ttdeci\">LimitStencilTableReal(int numControlVerts, std::vector&lt; int &gt; const &amp;offsets, std::vector&lt; int &gt; const &amp;sizes, std::vector&lt; int &gt; const &amp;sources, std::vector&lt; REAL &gt; const &amp;weights, std::vector&lt; REAL &gt; const &amp;duWeights, std::vector&lt; REAL &gt; const &amp;dvWeights, std::vector&lt; REAL &gt; const &amp;duuWeights, std::vector&lt; REAL &gt; const &amp;duvWeights, std::vector&lt; REAL &gt; const &amp;dvvWeights, bool includeCoarseVerts, size_t firstOffset)</div></div>\n+<div class=\"ttc\" id=\"aa01077_html_a9afad522b48b3d7a0fe296ec26e1484b\"><div class=\"ttname\"><a href=\"a01077.html#a9afad522b48b3d7a0fe296ec26e1484b\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableReal::Update2ndDerivs</a></div><div class=\"ttdeci\">void Update2ndDerivs(T const &amp;srcValues, U &amp;uuderivs, U &amp;uvderivs, U &amp;vvderivs, int start=-1, int end=-1) const</div><div class=\"ttdoc\">Updates 2nd derivative values based on the control values.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00528\">stencilTable.h:528</a></div></div>\n+<div class=\"ttc\" id=\"aa01077_html_aa3883f989c1ef593204f33e6ff8d31fe\"><div class=\"ttname\"><a href=\"a01077.html#aa3883f989c1ef593204f33e6ff8d31fe\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableReal::GetDuWeights</a></div><div class=\"ttdeci\">std::vector&lt; REAL &gt; const &amp; GetDuWeights() const</div><div class=\"ttdoc\">Returns the 'u' derivative stencil interpolation weights.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00434\">stencilTable.h:434</a></div></div>\n+<div class=\"ttc\" id=\"aa01077_html_aa71d36872f416feaa853788a7a7a7ef8\"><div class=\"ttname\"><a href=\"a01077.html#aa71d36872f416feaa853788a7a7a7ef8\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableReal::Clear</a></div><div class=\"ttdeci\">void Clear()</div><div class=\"ttdoc\">Clears the stencils from the table.</div></div>\n+<div class=\"ttc\" id=\"aa01077_html_ac0752d706ee5bbf7ef22f26a9399538f\"><div class=\"ttname\"><a href=\"a01077.html#ac0752d706ee5bbf7ef22f26a9399538f\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableReal::Update2ndDerivs</a></div><div class=\"ttdeci\">void Update2ndDerivs(T1 const &amp;srcBase, int numBase, T2 const &amp;srcRef, U &amp;uuderivs, U &amp;uvderivs, U &amp;vvderivs, int start=-1, int end=-1) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00538\">stencilTable.h:538</a></div></div>\n+<div class=\"ttc\" id=\"aa01077_html_ac6b92b68f0b56967e7ffa2d13aea72d0\"><div class=\"ttname\"><a href=\"a01077.html#ac6b92b68f0b56967e7ffa2d13aea72d0\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableReal::GetDuvWeights</a></div><div class=\"ttdeci\">std::vector&lt; REAL &gt; const &amp; GetDuvWeights() const</div><div class=\"ttdoc\">Returns the 'uv' derivative stencil interpolation weights.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00449\">stencilTable.h:449</a></div></div>\n+<div class=\"ttc\" id=\"aa01077_html_ad3029ef69f3a4b90c058c27cfa968897\"><div class=\"ttname\"><a href=\"a01077.html#ad3029ef69f3a4b90c058c27cfa968897\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableReal::UpdateDerivs</a></div><div class=\"ttdeci\">void UpdateDerivs(T1 const &amp;srcBase, int numBase, T2 const &amp;srcRef, U &amp;uderivs, U &amp;vderivs, int start=-1, int end=-1) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00484\">stencilTable.h:484</a></div></div>\n+<div class=\"ttc\" id=\"aa01077_html_aeb3fc8705b16ef80f1686b6fc7cd44e7\"><div class=\"ttname\"><a href=\"a01077.html#aeb3fc8705b16ef80f1686b6fc7cd44e7\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableReal::UpdateDerivs</a></div><div class=\"ttdeci\">void UpdateDerivs(T1 const *srcBase, int numBase, T2 const *srcRef, U *uderivs, U *vderivs, int start=-1, int end=-1) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00500\">stencilTable.h:500</a></div></div>\n+<div class=\"ttc\" id=\"aa01081_html\"><div class=\"ttname\"><a href=\"a01081.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTable</a></div><div class=\"ttdoc\">Limit stencil table class wrapping the template for compatibility.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00583\">stencilTable.h:583</a></div></div>\n+<div class=\"ttc\" id=\"aa01081_html_a13d2ee8ca9cdc9073905193ea1cefd95\"><div class=\"ttname\"><a href=\"a01081.html#a13d2ee8ca9cdc9073905193ea1cefd95\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTable::BaseTable</a></div><div class=\"ttdeci\">LimitStencilTableReal&lt; float &gt; BaseTable</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00585\">stencilTable.h:585</a></div></div>\n+<div class=\"ttc\" id=\"aa01081_html_a177ff72b08f474982eaa70fa93fe5471\"><div class=\"ttname\"><a href=\"a01081.html#a177ff72b08f474982eaa70fa93fe5471\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTable::GetLimitStencil</a></div><div class=\"ttdeci\">LimitStencil GetLimitStencil(Index index) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00588\">stencilTable.h:588</a></div></div>\n+<div class=\"ttc\" id=\"aa01081_html_a45723c21481c3887e0740fe69acbac40\"><div class=\"ttname\"><a href=\"a01081.html#a45723c21481c3887e0740fe69acbac40\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTable::LimitStencilTable</a></div><div class=\"ttdeci\">LimitStencilTable(int numControlVerts, std::vector&lt; int &gt; const &amp;offsets, std::vector&lt; int &gt; const &amp;sizes, std::vector&lt; int &gt; const &amp;sources, std::vector&lt; float &gt; const &amp;weights, std::vector&lt; float &gt; const &amp;duWeights, std::vector&lt; float &gt; const &amp;dvWeights, std::vector&lt; float &gt; const &amp;duuWeights, std::vector&lt; float &gt; const &amp;duvWeights, std::vector&lt; float &gt; const &amp;dvvWeights, bool includeCoarseVerts, size_t firstOffset)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00596\">stencilTable.h:596</a></div></div>\n+<div class=\"ttc\" id=\"aa01081_html_a486c20121d63d5149d01adbe45d3b9b6\"><div class=\"ttname\"><a href=\"a01081.html#a486c20121d63d5149d01adbe45d3b9b6\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTable::operator[]</a></div><div class=\"ttdeci\">LimitStencil operator[](Index index) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00591\">stencilTable.h:591</a></div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00818.html\">cpuPatchTable.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7f420b72a822828cfa8b0561c695a5cc.html\">far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00818.html\">stencilTable.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-cpuPatchTable.h\n+stencilTable.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2015 Pixar\n+2// Copyright 2013 Pixar\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -24,215 +24,990 @@\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n 24\n-25#ifndef OPENSUBDIV3_OSD_CPU_PATCH_TABLE_H\n-26#define OPENSUBDIV3_OSD_CPU_PATCH_TABLE_H\n+25#ifndef OPENSUBDIV3_FAR_STENCILTABLE_H\n+26#define OPENSUBDIV3_FAR_STENCILTABLE_H\n 27\n 28#include \"../version.h\"\n 29\n-30#include <vector>\n-31#include \"../far/patchDescriptor.h\"\n-32#include \"../osd/nonCopyable.h\"\n-33#include \"../osd/types.h\"\n-34\n-35#include <vector>\n+30#include \"../far/types.h\"\n+31\n+32#include <cassert>\n+33#include <cstring>\n+34#include <vector>\n+35#include <iostream>\n 36\n 37namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n 38namespace OPENSUBDIV_VERSION {\n 39\n-40namespace Far{\n-41 class PatchTable;\n-42};\n-43\n-44namespace Osd {\n-45\n-_\b5_\b9class _\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be {\n-60public:\n-_\b6_\b1 static _\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be *_\bC_\br_\be_\ba_\bt_\be(const _\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be *patchTable,\n-62 void *deviceContext = NULL) {\n-63 (void)deviceContext; // unused\n-64 return new _\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be(patchTable);\n-65 }\n-66\n-_\b6_\b7 explicit _\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be(const _\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be *patchTable);\n-_\b6_\b8 _\b~_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be() {}\n+40namespace Far {\n+41\n+42// Forward declarations for friends:\n+43class PatchTableBuilder;\n+44\n+45template <typename REAL> class StencilTableFactoryReal;\n+46template <typename REAL> class LimitStencilTableFactoryReal;\n+47\n+52template <typename REAL>\n+_\b5_\b3class _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl {\n+54public:\n+55\n+_\b5_\b7 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl() {}\n+58\n+_\b6_\b7 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl(int * size, _\bI_\bn_\bd_\be_\bx * indices, REAL * weights)\n+68 : _\b__\bs_\bi_\bz_\be(size), _\b__\bi_\bn_\bd_\bi_\bc_\be_\bs(indices), _\b__\bw_\be_\bi_\bg_\bh_\bt_\bs(weights) { }\n 69\n-_\b7_\b0 const _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by *_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bB_\bu_\bf_\bf_\be_\br() const {\n-71 return &_\b__\bp_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs[0];\n-72 }\n-_\b7_\b3 const int *_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br() const {\n-74 return &_\b__\bi_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br[0];\n+_\b7_\b1 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl(_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl const & other) {\n+72 _\b__\bs_\bi_\bz_\be = other._\b__\bs_\bi_\bz_\be;\n+73 _\b__\bi_\bn_\bd_\bi_\bc_\be_\bs = other._\b__\bi_\bn_\bd_\bi_\bc_\be_\bs;\n+74 _\b__\bw_\be_\bi_\bg_\bh_\bt_\bs = other._\b__\bw_\be_\bi_\bg_\bh_\bt_\bs;\n 75 }\n-_\b7_\b6 const _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm *_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br() const {\n-77 return &_\b__\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br[0];\n-78 }\n-79\n-_\b8_\b0 size_t _\bG_\be_\bt_\bN_\bu_\bm_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs() const {\n-81 return _\b__\bp_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs.size();\n-82 }\n-_\b8_\b3 size_t _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bS_\bi_\bz_\be() const {\n-84 return _\b__\bi_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br.size();\n+76\n+_\b7_\b8 int _\bG_\be_\bt_\bS_\bi_\bz_\be() const {\n+79 return *_\b__\bs_\bi_\bz_\be;\n+80 }\n+81\n+_\b8_\b3 int * _\bG_\be_\bt_\bS_\bi_\bz_\be_\bP_\bt_\br() const {\n+84 return _\b__\bs_\bi_\bz_\be;\n 85 }\n-_\b8_\b6 size_t _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bS_\bi_\bz_\be() const {\n-87 return _\b__\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br.size();\n-88 }\n-89\n-_\b9_\b0 const _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by *_\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bB_\bu_\bf_\bf_\be_\br() const {\n-91 if (_\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs.empty()) {\n-92 return NULL;\n-93 }\n-94 return &_\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs[0];\n+86\n+_\b8_\b8 _\bI_\bn_\bd_\be_\bx const * _\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bI_\bn_\bd_\bi_\bc_\be_\bs() const {\n+89 return _\b__\bi_\bn_\bd_\bi_\bc_\be_\bs;\n+90 }\n+91\n+_\b9_\b3 REAL const * _\bG_\be_\bt_\bW_\be_\bi_\bg_\bh_\bt_\bs() const {\n+94 return _\b__\bw_\be_\bi_\bg_\bh_\bt_\bs;\n 95 }\n-_\b9_\b6 const int *_\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br() const {\n-97 if (_\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br.empty()) {\n-98 return NULL;\n-99 }\n-100 return &_\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br[0];\n-101 }\n-_\b1_\b0_\b2 size_t _\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bS_\bi_\bz_\be() const {\n-103 return _\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br.size();\n-104 }\n-105\n-_\b1_\b0_\b6 int _\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs() const {\n-107 return (int)_\b__\bf_\bv_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs.size();\n-108 }\n-_\b1_\b0_\b9 const _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by *_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bB_\bu_\bf_\bf_\be_\br(int fvarChannel = 0) const {\n-110 return &_\b__\bf_\bv_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs[fvarChannel][0];\n-111 }\n-_\b1_\b1_\b2 const int *_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br(int fvarChannel = 0) const {\n-113 return &_\b__\bf_\bv_\ba_\br_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bs[fvarChannel][0];\n-114 }\n-_\b1_\b1_\b5 size_t _\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bS_\bi_\bz_\be(int fvarChannel = 0) const {\n-116 return _\b__\bf_\bv_\ba_\br_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bs[fvarChannel].size();\n-117 }\n-_\b1_\b1_\b8 const _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm *_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br(int fvarChannel= 0) const {\n-119 return &_\b__\bf_\bv_\ba_\br_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br_\bs[fvarChannel][0];\n-120 }\n-_\b1_\b2_\b1 size_t _\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bS_\bi_\bz_\be(int fvarChannel = 0) const {\n-122 return _\b__\bf_\bv_\ba_\br_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br_\bs[fvarChannel].size();\n-123 }\n-124\n-125protected:\n-_\b1_\b2_\b6 _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\bc_\bt_\bo_\br _\b__\bp_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs;\n-_\b1_\b2_\b7 std::vector<int> _\b__\bi_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br;\n-_\b1_\b2_\b8 _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bV_\be_\bc_\bt_\bo_\br _\b__\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br;\n-129\n-_\b1_\b3_\b0 _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\bc_\bt_\bo_\br _\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs;\n-_\b1_\b3_\b1 std::vector<int> _\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br;\n-132\n-_\b1_\b3_\b3 std::vector< PatchArrayVector > _\b__\bf_\bv_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs;\n-_\b1_\b3_\b4 std::vector< std::vector<int> > _\b__\bf_\bv_\ba_\br_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bs;\n-_\b1_\b3_\b5 std::vector< PatchParamVector > _\b__\bf_\bv_\ba_\br_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br_\bs;\n-136};\n-137\n-138} // end namespace Osd\n-139\n-140} // end namespace OPENSUBDIV_VERSION\n-141using namespace OPENSUBDIV_VERSION;\n-142\n-143} // end namespace OpenSubdiv\n-144\n-145#endif // OPENSUBDIV3_OSD_CPU_PATCH_TABLE_H\n+96\n+_\b9_\b8 void _\bN_\be_\bx_\bt() {\n+99 int stride = *_\b__\bs_\bi_\bz_\be;\n+100 ++_\b__\bs_\bi_\bz_\be;\n+101 _\b__\bi_\bn_\bd_\bi_\bc_\be_\bs += stride;\n+102 _\b__\bw_\be_\bi_\bg_\bh_\bt_\bs += stride;\n+103 }\n+104\n+105protected:\n+106 friend class _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl<REAL>;\n+107 friend class _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl<REAL>;\n+108\n+_\b1_\b0_\b9 int * _\b__\bs_\bi_\bz_\be;\n+_\b1_\b1_\b0 _\bI_\bn_\bd_\be_\bx * _\b__\bi_\bn_\bd_\bi_\bc_\be_\bs;\n+_\b1_\b1_\b1 REAL * _\b__\bw_\be_\bi_\bg_\bh_\bt_\bs;\n+112};\n+113\n+_\b1_\b1_\b6class _\bS_\bt_\be_\bn_\bc_\bi_\bl : public _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl<float> {\n+117protected:\n+_\b1_\b1_\b8 typedef _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b<_\bf_\bl_\bo_\ba_\bt_\b> _\bB_\ba_\bs_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl;\n+119\n+120public:\n+_\b1_\b2_\b1 _\bS_\bt_\be_\bn_\bc_\bi_\bl() : _\bB_\ba_\bs_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl() { }\n+_\b1_\b2_\b2 _\bS_\bt_\be_\bn_\bc_\bi_\bl(_\bB_\ba_\bs_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl const & other) : _\bB_\ba_\bs_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl(other) { }\n+_\b1_\b2_\b3 _\bS_\bt_\be_\bn_\bc_\bi_\bl(int * size, _\bI_\bn_\bd_\be_\bx * indices, float * weights)\n+124 : _\bB_\ba_\bs_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl(size, indices, weights) { }\n+125};\n+126\n+127\n+140template <typename REAL>\n+_\b1_\b4_\b1class _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl {\n+142protected:\n+_\b1_\b4_\b3 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl(int numControlVerts,\n+144 std::vector<int> const& offsets,\n+145 std::vector<int> const& sizes,\n+146 std::vector<int> const& sources,\n+147 std::vector<REAL> const& weights,\n+148 bool includeCoarseVerts,\n+149 size_t firstOffset);\n+150\n+151public:\n+152\n+_\b1_\b5_\b3 virtual _\b~_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl() {};\n+154\n+_\b1_\b5_\b6 int _\bG_\be_\bt_\bN_\bu_\bm_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs() const {\n+157 return (int)_\b__\bs_\bi_\bz_\be_\bs.size();\n+158 }\n+159\n+_\b1_\b6_\b1 int _\bG_\be_\bt_\bN_\bu_\bm_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bV_\be_\br_\bt_\bi_\bc_\be_\bs() const {\n+162 return _\b__\bn_\bu_\bm_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bV_\be_\br_\bt_\bi_\bc_\be_\bs;\n+163 }\n+164\n+_\b1_\b6_\b6 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b> _\bG_\be_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl(_\bI_\bn_\bd_\be_\bx i) const;\n+167\n+_\b1_\b6_\b9 std::vector<int> const & _\bG_\be_\bt_\bS_\bi_\bz_\be_\bs() const {\n+170 return _\b__\bs_\bi_\bz_\be_\bs;\n+171 }\n+172\n+_\b1_\b7_\b4 std::vector<Index> const & _\bG_\be_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bs() const {\n+175 return _\b__\bo_\bf_\bf_\bs_\be_\bt_\bs;\n+176 }\n+177\n+_\b1_\b7_\b9 std::vector<Index> const & _\bG_\be_\bt_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bI_\bn_\bd_\bi_\bc_\be_\bs() const {\n+180 return _\b__\bi_\bn_\bd_\bi_\bc_\be_\bs;\n+181 }\n+182\n+_\b1_\b8_\b4 std::vector<REAL> const & _\bG_\be_\bt_\bW_\be_\bi_\bg_\bh_\bt_\bs() const {\n+185 return _\b__\bw_\be_\bi_\bg_\bh_\bt_\bs;\n+186 }\n+187\n+_\b1_\b8_\b9 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b> _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b (_\bI_\bn_\bd_\be_\bx index) const;\n+190\n+204 template <class T, class U>\n+_\b2_\b0_\b5 void _\bU_\bp_\bd_\ba_\bt_\be_\bV_\ba_\bl_\bu_\be_\bs(T const &srcValues, U &dstValues, _\bI_\bn_\bd_\be_\bx start=-1, _\bI_\bn_\bd_\be_\bx\n+end=-1) const {\n+206 this->_\bu_\bp_\bd_\ba_\bt_\be(srcValues, dstValues, _\b__\bw_\be_\bi_\bg_\bh_\bt_\bs, start, end);\n+207 }\n+208\n+209 template <class T1, class T2, class U>\n+_\b2_\b1_\b0 void _\bU_\bp_\bd_\ba_\bt_\be_\bV_\ba_\bl_\bu_\be_\bs(T1 const &srcBase, int numBase, T2 const &srcRef,\n+211 U &dstValues, _\bI_\bn_\bd_\be_\bx start=-1, _\bI_\bn_\bd_\be_\bx end=-1) const {\n+212 this->_\bu_\bp_\bd_\ba_\bt_\be(srcBase, numBase, srcRef, dstValues, _\b__\bw_\be_\bi_\bg_\bh_\bt_\bs, start, end);\n+213 }\n+214\n+215 // Pointer interface for backward compatibility\n+216 template <class T, class U>\n+_\b2_\b1_\b7 void _\bU_\bp_\bd_\ba_\bt_\be_\bV_\ba_\bl_\bu_\be_\bs(T const *src, U *dst, _\bI_\bn_\bd_\be_\bx start=-1, _\bI_\bn_\bd_\be_\bx end=-1) const\n+{\n+218 this->_\bu_\bp_\bd_\ba_\bt_\be(src, dst, _\b__\bw_\be_\bi_\bg_\bh_\bt_\bs, start, end);\n+219 }\n+220 template <class T1, class T2, class U>\n+_\b2_\b2_\b1 void _\bU_\bp_\bd_\ba_\bt_\be_\bV_\ba_\bl_\bu_\be_\bs(T1 const *srcBase, int numBase, T2 const *srcRef,\n+222 U *dst, _\bI_\bn_\bd_\be_\bx start=-1, _\bI_\bn_\bd_\be_\bx end=-1) const {\n+223 this->_\bu_\bp_\bd_\ba_\bt_\be(srcBase, numBase, srcRef, dst, _\b__\bw_\be_\bi_\bg_\bh_\bt_\bs, start, end);\n+224 }\n+225\n+_\b2_\b2_\b7 void _\bC_\bl_\be_\ba_\br();\n+228\n+229protected:\n+230\n+231 // Update values by applying cached stencil weights to new control values\n+232 template <class T, class U>\n+_\b2_\b3_\b3 void _\bu_\bp_\bd_\ba_\bt_\be( T const &srcValues, U &dstValues,\n+234 std::vector<REAL> const & valueWeights, _\bI_\bn_\bd_\be_\bx start, _\bI_\bn_\bd_\be_\bx end) const;\n+235 template <class T1, class T2, class U>\n+_\b2_\b3_\b6 void _\bu_\bp_\bd_\ba_\bt_\be( T1 const &srcBase, int numBase, T2 const &srcRef, U\n+&dstValues,\n+237 std::vector<REAL> const & valueWeights, _\bI_\bn_\bd_\be_\bx start, _\bI_\bn_\bd_\be_\bx end) const;\n+238\n+239 // Populate the offsets table from the stencil sizes in _sizes (factory\n+helper)\n+_\b2_\b4_\b0 void _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bO_\bf_\bf_\bs_\be_\bt_\bs();\n+241\n+242 // Resize the table arrays (factory helper)\n+_\b2_\b4_\b3 void _\br_\be_\bs_\bi_\bz_\be(int nstencils, int nelems);\n+244\n+245 // Reserves the table arrays (factory helper)\n+_\b2_\b4_\b6 void _\br_\be_\bs_\be_\br_\bv_\be(int nstencils, int nelems);\n+247\n+248 // Reallocates the table arrays to remove excess capacity (factory helper)\n+_\b2_\b4_\b9 void _\bs_\bh_\br_\bi_\bn_\bk_\bT_\bo_\bF_\bi_\bt();\n+250\n+251 // Performs any final operations on internal tables (factory helper)\n+_\b2_\b5_\b2 void _\bf_\bi_\bn_\ba_\bl_\bi_\bz_\be();\n+253\n+254protected:\n+_\b2_\b5_\b5 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl() : _\b__\bn_\bu_\bm_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bV_\be_\br_\bt_\bi_\bc_\be_\bs(0) {}\n+_\b2_\b5_\b6 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl(int numControlVerts)\n+257 : _\b__\bn_\bu_\bm_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bV_\be_\br_\bt_\bi_\bc_\be_\bs(numControlVerts)\n+258 { }\n+259\n+260 friend class _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl<REAL>;\n+_\b2_\b6_\b1 friend class _\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bB_\bu_\bi_\bl_\bd_\be_\br;\n+262\n+_\b2_\b6_\b3 int _\b__\bn_\bu_\bm_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bV_\be_\br_\bt_\bi_\bc_\be_\bs; // number of control vertices\n+264\n+_\b2_\b6_\b5 std::vector<int> _\b__\bs_\bi_\bz_\be_\bs; // number of coefficients for each stencil\n+_\b2_\b6_\b6 std::vector<Index> _\b__\bo_\bf_\bf_\bs_\be_\bt_\bs, // offset to the start of each stencil\n+_\b2_\b6_\b7 _\b__\bi_\bn_\bd_\bi_\bc_\be_\bs; // indices of contributing coarse vertices\n+_\b2_\b6_\b8 std::vector<REAL> _\b__\bw_\be_\bi_\bg_\bh_\bt_\bs; // stencil weight coefficients\n+269};\n+270\n+_\b2_\b7_\b3class _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be : public _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl<float> {\n+274protected:\n+_\b2_\b7_\b5 typedef _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bf_\bl_\bo_\ba_\bt_\b> _\bB_\ba_\bs_\be_\bT_\ba_\bb_\bl_\be;\n+276\n+277public:\n+_\b2_\b7_\b8 _\bS_\bt_\be_\bn_\bc_\bi_\bl _\bG_\be_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl(_\bI_\bn_\bd_\be_\bx index) const {\n+279 return _\bS_\bt_\be_\bn_\bc_\bi_\bl(_\bB_\ba_\bs_\be_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl(index));\n+280 }\n+_\b2_\b8_\b1 _\bS_\bt_\be_\bn_\bc_\bi_\bl _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b (_\bI_\bn_\bd_\be_\bx index) const {\n+282 return _\bS_\bt_\be_\bn_\bc_\bi_\bl(_\bB_\ba_\bs_\be_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl(index));\n+283 }\n+284\n+285protected:\n+_\b2_\b8_\b6 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be() : _\bB_\ba_\bs_\be_\bT_\ba_\bb_\bl_\be() { }\n+_\b2_\b8_\b7 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(int numControlVerts) : _\bB_\ba_\bs_\be_\bT_\ba_\bb_\bl_\be(numControlVerts) { }\n+_\b2_\b8_\b8 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(int numControlVerts,\n+289 std::vector<int> const& offsets,\n+290 std::vector<int> const& sizes,\n+291 std::vector<int> const& sources,\n+292 std::vector<float> const& weights,\n+293 bool includeCoarseVerts,\n+294 size_t firstOffset)\n+295 : _\bB_\ba_\bs_\be_\bT_\ba_\bb_\bl_\be(numControlVerts, offsets,\n+296 sizes, sources, weights, includeCoarseVerts, firstOffset) { }\n+297};\n+298\n+299\n+302template <typename REAL>\n+_\b3_\b0_\b3class _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl : public _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl<REAL> {\n+304public:\n+305\n+_\b3_\b2_\b4 _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl( int* size,\n+325 _\bI_\bn_\bd_\be_\bx * indices,\n+326 REAL * weights,\n+327 REAL * duWeights=0,\n+328 REAL * dvWeights=0,\n+329 REAL * duuWeights=0,\n+330 REAL * duvWeights=0,\n+331 REAL * dvvWeights=0)\n+332 : _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl<REAL>(size, indices, weights),\n+333 _duWeights(duWeights),\n+334 _dvWeights(dvWeights),\n+335 _duuWeights(duuWeights),\n+336 _duvWeights(duvWeights),\n+337 _dvvWeights(dvvWeights) {\n+338 }\n+339\n+_\b3_\b4_\b1 REAL const * _\bG_\be_\bt_\bD_\bu_\bW_\be_\bi_\bg_\bh_\bt_\bs() const {\n+342 return _duWeights;\n+343 }\n+344\n+_\b3_\b4_\b6 REAL const * _\bG_\be_\bt_\bD_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs() const {\n+347 return _dvWeights;\n+348 }\n+349\n+_\b3_\b5_\b1 REAL const * _\bG_\be_\bt_\bD_\bu_\bu_\bW_\be_\bi_\bg_\bh_\bt_\bs() const {\n+352 return _duuWeights;\n+353 }\n+354\n+_\b3_\b5_\b6 REAL const * _\bG_\be_\bt_\bD_\bu_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs() const {\n+357 return _duvWeights;\n+358 }\n+359\n+_\b3_\b6_\b1 REAL const * _\bG_\be_\bt_\bD_\bv_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs() const {\n+362 return _dvvWeights;\n+363 }\n+364\n+_\b3_\b6_\b6 void _\bN_\be_\bx_\bt() {\n+367 int stride = *this->_\b__\bs_\bi_\bz_\be;\n+368 ++this->_\b__\bs_\bi_\bz_\be;\n+369 this->_\b__\bi_\bn_\bd_\bi_\bc_\be_\bs += stride;\n+370 this->_\b__\bw_\be_\bi_\bg_\bh_\bt_\bs += stride;\n+371 if (_duWeights) _duWeights += stride;\n+372 if (_dvWeights) _dvWeights += stride;\n+373 if (_duuWeights) _duuWeights += stride;\n+374 if (_duvWeights) _duvWeights += stride;\n+375 if (_dvvWeights) _dvvWeights += stride;\n+376 }\n+377\n+378private:\n+379\n+380 friend class _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl<REAL>;\n+381 friend class _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl<REAL>;\n+382\n+383 REAL * _duWeights, // pointer to stencil u derivative limit weights\n+384 * _dvWeights, // pointer to stencil v derivative limit weights\n+385 * _duuWeights, // pointer to stencil uu derivative limit weights\n+386 * _duvWeights, // pointer to stencil uv derivative limit weights\n+387 * _dvvWeights; // pointer to stencil vv derivative limit weights\n+388};\n+389\n+_\b3_\b9_\b2class _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl : public _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl<float> {\n+393protected:\n+_\b3_\b9_\b4 typedef _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b<_\bf_\bl_\bo_\ba_\bt_\b> _\bB_\ba_\bs_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl;\n+395\n+396public:\n+_\b3_\b9_\b7 _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl(_\bB_\ba_\bs_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl const & other) : _\bB_\ba_\bs_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl(other) { }\n+_\b3_\b9_\b8 _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl(int* size, _\bI_\bn_\bd_\be_\bx * indices, float * weights,\n+399 float * duWeights=0, float * dvWeights=0,\n+400 float * duuWeights=0, float * duvWeights=0, float * dvvWeights=0)\n+401 : _\bB_\ba_\bs_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl(size, indices, weights,\n+402 duWeights, dvWeights, duuWeights, duvWeights, dvvWeights) { }\n+403};\n+404\n+405\n+408template <typename REAL>\n+_\b4_\b0_\b9class _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl : public _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl<REAL> {\n+410protected:\n+_\b4_\b1_\b1 _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl(\n+412 int numControlVerts,\n+413 std::vector<int> const& offsets,\n+414 std::vector<int> const& sizes,\n+415 std::vector<int> const& sources,\n+416 std::vector<REAL> const& weights,\n+417 std::vector<REAL> const& duWeights,\n+418 std::vector<REAL> const& dvWeights,\n+419 std::vector<REAL> const& duuWeights,\n+420 std::vector<REAL> const& duvWeights,\n+421 std::vector<REAL> const& dvvWeights,\n+422 bool includeCoarseVerts,\n+423 size_t firstOffset);\n+424\n+425public:\n+426\n+_\b4_\b2_\b8 _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b> _\bG_\be_\bt_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl(_\bI_\bn_\bd_\be_\bx i) const;\n+429\n+_\b4_\b3_\b1 _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b> _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b (_\bI_\bn_\bd_\be_\bx index) const;\n+432\n+_\b4_\b3_\b4 std::vector<REAL> const & _\bG_\be_\bt_\bD_\bu_\bW_\be_\bi_\bg_\bh_\bt_\bs() const {\n+435 return _duWeights;\n+436 }\n+437\n+_\b4_\b3_\b9 std::vector<REAL> const & _\bG_\be_\bt_\bD_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs() const {\n+440 return _dvWeights;\n+441 }\n+442\n+_\b4_\b4_\b4 std::vector<REAL> const & _\bG_\be_\bt_\bD_\bu_\bu_\bW_\be_\bi_\bg_\bh_\bt_\bs() const {\n+445 return _duuWeights;\n+446 }\n+447\n+_\b4_\b4_\b9 std::vector<REAL> const & _\bG_\be_\bt_\bD_\bu_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs() const {\n+450 return _duvWeights;\n+451 }\n+452\n+_\b4_\b5_\b4 std::vector<REAL> const & _\bG_\be_\bt_\bD_\bv_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs() const {\n+455 return _dvvWeights;\n+456 }\n+457\n+475 template <class T, class U>\n+_\b4_\b7_\b6 void _\bU_\bp_\bd_\ba_\bt_\be_\bD_\be_\br_\bi_\bv_\bs(T const & srcValues, U & uderivs, U & vderivs,\n+477 int start=-1, int end=-1) const {\n+478\n+479 this->_\bu_\bp_\bd_\ba_\bt_\be(srcValues, uderivs, _duWeights, start, end);\n+480 this->_\bu_\bp_\bd_\ba_\bt_\be(srcValues, vderivs, _dvWeights, start, end);\n+481 }\n+482\n+483 template <class T1, class T2, class U>\n+_\b4_\b8_\b4 void _\bU_\bp_\bd_\ba_\bt_\be_\bD_\be_\br_\bi_\bv_\bs(T1 const & srcBase, int numBase, T2 const & srcRef,\n+485 U & uderivs, U & vderivs, int start=-1, int end=-1) const {\n+486\n+487 this->_\bu_\bp_\bd_\ba_\bt_\be(srcBase, numBase, srcRef, uderivs, _duWeights, start, end);\n+488 this->_\bu_\bp_\bd_\ba_\bt_\be(srcBase, numBase, srcRef, vderivs, _dvWeights, start, end);\n+489 }\n+490\n+491 // Pointer interface for backward compatibility\n+492 template <class T, class U>\n+_\b4_\b9_\b3 void _\bU_\bp_\bd_\ba_\bt_\be_\bD_\be_\br_\bi_\bv_\bs(T const *src, U *uderivs, U *vderivs,\n+494 int start=-1, int end=-1) const {\n+495\n+496 this->_\bu_\bp_\bd_\ba_\bt_\be(src, uderivs, _duWeights, start, end);\n+497 this->_\bu_\bp_\bd_\ba_\bt_\be(src, vderivs, _dvWeights, start, end);\n+498 }\n+499 template <class T1, class T2, class U>\n+_\b5_\b0_\b0 void _\bU_\bp_\bd_\ba_\bt_\be_\bD_\be_\br_\bi_\bv_\bs(T1 const *srcBase, int numBase, T2 const *srcRef,\n+501 U *uderivs, U *vderivs, int start=-1, int end=-1) const {\n+502\n+503 this->_\bu_\bp_\bd_\ba_\bt_\be(srcBase, numBase, srcRef, uderivs, _duWeights, start, end);\n+504 this->_\bu_\bp_\bd_\ba_\bt_\be(srcBase, numBase, srcRef, vderivs, _dvWeights, start, end);\n+505 }\n+506\n+527 template <class T, class U>\n+_\b5_\b2_\b8 void _\bU_\bp_\bd_\ba_\bt_\be_\b2_\bn_\bd_\bD_\be_\br_\bi_\bv_\bs(T const & srcValues,\n+529 U & uuderivs, U & uvderivs, U & vvderivs,\n+530 int start=-1, int end=-1) const {\n+531\n+532 this->_\bu_\bp_\bd_\ba_\bt_\be(srcValues, uuderivs, _duuWeights, start, end);\n+533 this->_\bu_\bp_\bd_\ba_\bt_\be(srcValues, uvderivs, _duvWeights, start, end);\n+534 this->_\bu_\bp_\bd_\ba_\bt_\be(srcValues, vvderivs, _dvvWeights, start, end);\n+535 }\n+536\n+537 template <class T1, class T2, class U>\n+_\b5_\b3_\b8 void _\bU_\bp_\bd_\ba_\bt_\be_\b2_\bn_\bd_\bD_\be_\br_\bi_\bv_\bs(T1 const & srcBase, int numBase, T2 const & srcRef,\n+539 U & uuderivs, U & uvderivs, U & vvderivs, int start=-1, int end=-1) const {\n+540\n+541 this->_\bu_\bp_\bd_\ba_\bt_\be(srcBase, numBase, srcRef, uuderivs, _duuWeights, start, end);\n+542 this->_\bu_\bp_\bd_\ba_\bt_\be(srcBase, numBase, srcRef, uvderivs, _duvWeights, start, end);\n+543 this->_\bu_\bp_\bd_\ba_\bt_\be(srcBase, numBase, srcRef, vvderivs, _dvvWeights, start, end);\n+544 }\n+545\n+546 // Pointer interface for backward compatibility\n+547 template <class T, class U>\n+_\b5_\b4_\b8 void _\bU_\bp_\bd_\ba_\bt_\be_\b2_\bn_\bd_\bD_\be_\br_\bi_\bv_\bs(T const *src, T *uuderivs, U *uvderivs, U *vvderivs,\n+549 int start=-1, int end=-1) const {\n+550\n+551 this->_\bu_\bp_\bd_\ba_\bt_\be(src, uuderivs, _duuWeights, start, end);\n+552 this->_\bu_\bp_\bd_\ba_\bt_\be(src, uvderivs, _duvWeights, start, end);\n+553 this->_\bu_\bp_\bd_\ba_\bt_\be(src, vvderivs, _dvvWeights, start, end);\n+554 }\n+555 template <class T1, class T2, class U>\n+_\b5_\b5_\b6 void _\bU_\bp_\bd_\ba_\bt_\be_\b2_\bn_\bd_\bD_\be_\br_\bi_\bv_\bs(T1 const *srcBase, int numBase, T2 const *srcRef,\n+557 U *uuderivs, U *uvderivs, U *vvderivs, int start=-1, int end=-1) const {\n+558\n+559 this->_\bu_\bp_\bd_\ba_\bt_\be(srcBase, numBase, srcRef, uuderivs, _duuWeights, start, end);\n+560 this->_\bu_\bp_\bd_\ba_\bt_\be(srcBase, numBase, srcRef, uvderivs, _duvWeights, start, end);\n+561 this->_\bu_\bp_\bd_\ba_\bt_\be(srcBase, numBase, srcRef, vvderivs, _dvvWeights, start, end);\n+562 }\n+563\n+_\b5_\b6_\b5 void _\bC_\bl_\be_\ba_\br();\n+566\n+567private:\n+568 friend class _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl<REAL>;\n+569\n+570 // Resize the table arrays (factory helper)\n+571 void resize(int nstencils, int nelems);\n+572\n+573private:\n+574 std::vector<REAL> _duWeights, // u derivative limit stencil weights\n+575 _dvWeights, // v derivative limit stencil weights\n+576 _duuWeights, // uu derivative limit stencil weights\n+577 _duvWeights, // uv derivative limit stencil weights\n+578 _dvvWeights; // vv derivative limit stencil weights\n+579};\n+580\n+_\b5_\b8_\b3class _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be : public _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl<float> {\n+584protected:\n+_\b5_\b8_\b5 typedef _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bf_\bl_\bo_\ba_\bt_\b> _\bB_\ba_\bs_\be_\bT_\ba_\bb_\bl_\be;\n+586\n+587public:\n+_\b5_\b8_\b8 _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl _\bG_\be_\bt_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl(_\bI_\bn_\bd_\be_\bx index) const {\n+589 return _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl(_\bB_\ba_\bs_\be_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl(index));\n+590 }\n+_\b5_\b9_\b1 _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b (_\bI_\bn_\bd_\be_\bx index) const {\n+592 return _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl(_\bB_\ba_\bs_\be_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl(index));\n+593 }\n+594\n+595protected:\n+_\b5_\b9_\b6 _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(int numControlVerts,\n+597 std::vector<int> const& offsets,\n+598 std::vector<int> const& sizes,\n+599 std::vector<int> const& sources,\n+600 std::vector<float> const& weights,\n+601 std::vector<float> const& duWeights,\n+602 std::vector<float> const& dvWeights,\n+603 std::vector<float> const& duuWeights,\n+604 std::vector<float> const& duvWeights,\n+605 std::vector<float> const& dvvWeights,\n+606 bool includeCoarseVerts,\n+607 size_t firstOffset)\n+608 : _\bB_\ba_\bs_\be_\bT_\ba_\bb_\bl_\be(numControlVerts,\n+609 offsets, sizes, sources, weights,\n+610 duWeights, dvWeights, duuWeights, duvWeights, dvvWeights,\n+611 includeCoarseVerts, firstOffset) { }\n+612};\n+613\n+614\n+615// Update values by applying cached stencil weights to new control values\n+616template <typename REAL>\n+617template <class T1, class T2, class U> void\n+_\b6_\b1_\b8_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\bu_\bp_\bd_\ba_\bt_\be(T1 const &srcBase, int numBase,\n+619 T2 const &srcRef, U &dstValues,\n+620 std::vector<REAL> const &valueWeights, _\bI_\bn_\bd_\be_\bx start, _\bI_\bn_\bd_\be_\bx end) const {\n+621\n+622 int const * sizes = &_sizes.at(0);\n+623 _\bI_\bn_\bd_\be_\bx const * indices = &_indices.at(0);\n+624 REAL const * weights = &valueWeights.at(0);\n+625\n+626 if (start > 0) {\n+627 assert(start < (_\bI_\bn_\bd_\be_\bx)_offsets.size());\n+628 sizes += start;\n+629 indices += _offsets[start];\n+630 weights += _offsets[start];\n+631 } else {\n+632 start = 0;\n+633 }\n+634\n+635 int nstencils = ((end < start) ? GetNumStencils() : end) - start;\n+636\n+637 for (int i = 0; i < nstencils; ++i, ++sizes) {\n+638 dstValues[start + i].Clear();\n+639 for (int j = 0; j < *sizes; ++j, ++indices, ++weights) {\n+640 if (*indices < numBase) {\n+641 dstValues[start + i].AddWithWeight(srcBase[*indices], *weights);\n+642 } else {\n+643 dstValues[start + i].AddWithWeight(srcRef[*indices - numBase], *weights);\n+644 }\n+645 }\n+646 }\n+647}\n+648template <typename REAL>\n+649template <class T, class U> void\n+_\b6_\b5_\b0_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\bu_\bp_\bd_\ba_\bt_\be(T const &srcValues, U &dstValues,\n+651 std::vector<REAL> const &valueWeights, _\bI_\bn_\bd_\be_\bx start, _\bI_\bn_\bd_\be_\bx end) const {\n+652\n+653 int const * sizes = &_sizes.at(0);\n+654 _\bI_\bn_\bd_\be_\bx const * indices = &_indices.at(0);\n+655 REAL const * weights = &valueWeights.at(0);\n+656\n+657 if (start > 0) {\n+658 assert(start < (_\bI_\bn_\bd_\be_\bx)_offsets.size());\n+659 sizes += start;\n+660 indices += _offsets[start];\n+661 weights += _offsets[start];\n+662 } else {\n+663 start = 0;\n+664 }\n+665\n+666 int nstencils = ((end < start) ? GetNumStencils() : end) - start;\n+667\n+668 for (int i = 0; i < nstencils; ++i, ++sizes) {\n+669 dstValues[start + i].Clear();\n+670 for (int j = 0; j < *sizes; ++j, ++indices, ++weights) {\n+671 dstValues[start + i].AddWithWeight(srcValues[*indices], *weights);\n+672 }\n+673 }\n+674}\n+675\n+676template <typename REAL>\n+677inline void\n+_\b6_\b7_\b8_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bO_\bf_\bf_\bs_\be_\bt_\bs() {\n+679 _\bI_\bn_\bd_\be_\bx offset=0;\n+680 int noffsets = (int)_sizes.size();\n+681 _offsets.resize(noffsets);\n+682 for (int i=0; i<(int)_sizes.size(); ++i ) {\n+683 _offsets[i]=offset;\n+684 offset+=_sizes[i];\n+685 }\n+686}\n+687\n+688template <typename REAL>\n+689inline void\n+_\b6_\b9_\b0_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\br_\be_\bs_\bi_\bz_\be(int nstencils, int nelems) {\n+691 _sizes.resize(nstencils);\n+692 _indices.resize(nelems);\n+693 _weights.resize(nelems);\n+694}\n+695\n+696template <typename REAL>\n+697inline void\n+_\b6_\b9_\b8_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\br_\be_\bs_\be_\br_\bv_\be(int nstencils, int nelems) {\n+699 _sizes.reserve(nstencils);\n+700 _indices.reserve(nelems);\n+701 _weights.reserve(nelems);\n+702}\n+703\n+704template <typename REAL>\n+705inline void\n+_\b7_\b0_\b6_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\bs_\bh_\br_\bi_\bn_\bk_\bT_\bo_\bF_\bi_\bt() {\n+707 std::vector<int>(_sizes).swap(_sizes);\n+708 std::vector<Index>(_indices).swap(_indices);\n+709 std::vector<REAL>(_weights).swap(_weights);\n+710}\n+711\n+712template <typename REAL>\n+713inline void\n+_\b7_\b1_\b4_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\bf_\bi_\bn_\ba_\bl_\bi_\bz_\be() {\n+715 shrinkToFit();\n+716 generateOffsets();\n+717}\n+718\n+719// Returns a Stencil at index i in the table\n+720template <typename REAL>\n+721inline _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b>\n+_\b7_\b2_\b2_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\bG_\be_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl(_\bI_\bn_\bd_\be_\bx i) const {\n+723 assert((! _offsets.empty()) && i<(int)_offsets.size());\n+724\n+725 _\bI_\bn_\bd_\be_\bx ofs = _offsets[i];\n+726\n+727 return _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b>(const_cast<int*>(&_sizes[i]),\n+728 const_cast<_\bI_\bn_\bd_\be_\bx*>(&_indices[ofs]),\n+729 const_cast<REAL*>(&_weights[ofs]));\n+730}\n+731\n+732template <typename REAL>\n+733inline _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b>\n+_\b7_\b3_\b4_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b (_\bI_\bn_\bd_\be_\bx index) const {\n+735 return GetStencil(index);\n+736}\n+737\n+738template <typename REAL>\n+739inline void\n+740_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\br_\be_\bs_\bi_\bz_\be(int nstencils, int nelems) {\n+741 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\br_\be_\bs_\bi_\bz_\be(nstencils, nelems);\n+742 _duWeights.resize(nelems);\n+743 _dvWeights.resize(nelems);\n+744}\n+745\n+746// Returns a LimitStencil at index i in the table\n+747template <typename REAL>\n+748inline LimitStencilReal<REAL>\n+_\b7_\b4_\b9_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\bG_\be_\bt_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl(_\bI_\bn_\bd_\be_\bx i) const {\n+750 assert((! this->GetOffsets().empty()) && i<(int)this->GetOffsets().size());\n+751\n+752 _\bI_\bn_\bd_\be_\bx ofs = this->GetOffsets()[i];\n+753\n+754 if (!_duWeights.empty() && !_dvWeights.empty() &&\n+755 !_duuWeights.empty() && !_duvWeights.empty() && !_dvvWeights.empty()) {\n+756 return _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b>(\n+757 const_cast<int *>(&this->GetSizes()[i]),\n+758 const_cast<_\bI_\bn_\bd_\be_\bx *>(&this->GetControlIndices()[ofs]),\n+759 const_cast<REAL *>(&this->GetWeights()[ofs]),\n+760 const_cast<REAL *>(&GetDuWeights()[ofs]),\n+761 const_cast<REAL *>(&GetDvWeights()[ofs]),\n+762 const_cast<REAL *>(&GetDuuWeights()[ofs]),\n+763 const_cast<REAL *>(&GetDuvWeights()[ofs]),\n+764 const_cast<REAL *>(&GetDvvWeights()[ofs]) );\n+765 } else if (!_duWeights.empty() && !_dvWeights.empty()) {\n+766 return _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b>(\n+767 const_cast<int *>(&this->GetSizes()[i]),\n+768 const_cast<_\bI_\bn_\bd_\be_\bx *>(&this->GetControlIndices()[ofs]),\n+769 const_cast<REAL *>(&this->GetWeights()[ofs]),\n+770 const_cast<REAL *>(&GetDuWeights()[ofs]),\n+771 const_cast<REAL *>(&GetDvWeights()[ofs]) );\n+772 } else {\n+773 return _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b>(\n+774 const_cast<int *>(&this->GetSizes()[i]),\n+775 const_cast<_\bI_\bn_\bd_\be_\bx *>(&this->GetControlIndices()[ofs]),\n+776 const_cast<REAL *>(&this->GetWeights()[ofs]) );\n+777 }\n+778}\n+779\n+780template <typename REAL>\n+781inline _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b>\n+_\b7_\b8_\b2_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]_\b (_\bI_\bn_\bd_\be_\bx index) const {\n+783 return GetLimitStencil(index);\n+784}\n+785\n+786} // end namespace Far\n+787\n+788} // end namespace OPENSUBDIV_VERSION\n+789using namespace OPENSUBDIV_VERSION;\n+790\n+791} // end namespace OpenSubdiv\n+792\n+793#endif // OPENSUBDIV3_FAR_STENCILTABLE_H\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bV_\be_\bc_\bt_\bo_\br\n-std::vector< PatchParam > PatchParamVector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b1_\b3_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\bc_\bt_\bo_\br\n-std::vector< PatchArray > PatchArrayVector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b1_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n-Container for arrays of parametric patches.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n-Cpu patch table.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bB_\bu_\bf_\bf_\be_\br\n-const PatchArray * GetFVarPatchArrayBuffer(int fvarChannel=0) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b0_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-const int * GetVaryingPatchIndexBuffer() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b9_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-std::vector< int > _varyingIndexBuffer\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b3_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bS_\bi_\bz_\be\n-size_t GetFVarPatchParamSize(int fvarChannel=0) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b2_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b~_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n-~CpuPatchTable()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br\n-PatchParamVector _patchParamBuffer\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b2_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-const int * GetPatchIndexBuffer() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static CpuPatchTable * Create(const Far::PatchTable *patchTable, void\n-*deviceContext=NULL)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bf_\bv_\ba_\br_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br_\bs\n-std::vector< PatchParamVector > _fvarParamBuffers\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b3_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n-CpuPatchTable(const Far::PatchTable *patchTable)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bf_\bv_\ba_\br_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bs\n-std::vector< std::vector< int > > _fvarIndexBuffers\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b3_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bS_\bi_\bz_\be\n-size_t GetPatchIndexSize() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b8_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bp_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs\n-PatchArrayVector _patchArrays\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b2_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br\n-const PatchParam * GetPatchParamBuffer() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bi_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-std::vector< int > _indexBuffer\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b2_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bS_\bi_\bz_\be\n-size_t GetFVarPatchIndexSize(int fvarChannel=0) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b1_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-const int * GetFVarPatchIndexBuffer(int fvarChannel=0) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b1_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br\n-const PatchParam * GetFVarPatchParamBuffer(int fvarChannel=0) const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b1_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bS_\bi_\bz_\be\n-size_t GetPatchParamSize() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b8_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bS_\bi_\bz_\be\n-size_t GetVaryingPatchIndexSize() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b0_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bB_\bu_\bf_\bf_\be_\br\n-const PatchArray * GetVaryingPatchArrayBuffer() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b9_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs\n-int GetNumFVarChannels() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b0_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs\n-size_t GetNumPatchArrays() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b8_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bB_\bu_\bf_\bf_\be_\br\n-const PatchArray * GetPatchArrayBuffer() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs\n-PatchArrayVector _varyingPatchArrays\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b3_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bf_\bv_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs\n-std::vector< PatchArrayVector > _fvarPatchArrays\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b3_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b6_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b1_\b2_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx\n+Vtr::Index Index\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b4_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl\n+A specialized factory for StencilTable.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl\n+A specialized factory for LimitStencilTable.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b2_\b0_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl\n+Vertex stencil descriptor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl\n+StencilReal()\n+Default constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b:_\b:_\b__\bs_\bi_\bz_\be\n+int * _size\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b0_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl\n+StencilReal(int *size, Index *indices, REAL *weights)\n+Constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b:_\b:_\bN_\be_\bx_\bt\n+void Next()\n+Advance to the next stencil in the table.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b9_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl\n+StencilReal(StencilReal const &other)\n+Copy constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b:_\b:_\b__\bi_\bn_\bd_\bi_\bc_\be_\bs\n+Index * _indices\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b1_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b:_\b:_\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bI_\bn_\bd_\bi_\bc_\be_\bs\n+Index const * GetVertexIndices() const\n+Returns the control vertices' indices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b8_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b:_\b:_\bG_\be_\bt_\bS_\bi_\bz_\be\n+int GetSize() const\n+Returns the size of the stencil.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b:_\b:_\b__\bw_\be_\bi_\bg_\bh_\bt_\bs\n+REAL * _weights\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b1_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b:_\b:_\bG_\be_\bt_\bS_\bi_\bz_\be_\bP_\bt_\br\n+int * GetSizePtr() const\n+Returns the size of the stencil as a pointer.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b8_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b:_\b:_\bG_\be_\bt_\bW_\be_\bi_\bg_\bh_\bt_\bs\n+REAL const * GetWeights() const\n+Returns the interpolation weights.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b9_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl\n+Vertex stencil class wrapping the template for compatibility.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b1_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl\n+Stencil(BaseStencil const &other)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b2_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl\n+Stencil(int *size, Index *indices, float *weights)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b2_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\b:_\b:_\bB_\ba_\bs_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl\n+StencilReal< float > BaseStencil\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b1_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl\n+Stencil()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b2_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl\n+Table of subdivision stencils.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b4_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n+int GetNumControlVertices() const\n+Returns the number of control vertices indexed in the table.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b6_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\b__\bs_\bi_\bz_\be_\bs\n+std::vector< int > _sizes\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b2_\b6_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bB_\bu_\bi_\bl_\bd_\be_\br\n+friend class Far::PatchTableBuilder\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b2_\b6_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bu_\bp_\bd_\ba_\bt_\be\n+void update(T1 const &srcBase, int numBase, T2 const &srcRef, U &dstValues,\n+std::vector< REAL > const &valueWeights, Index start, Index end) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b1_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bU_\bp_\bd_\ba_\bt_\be_\bV_\ba_\bl_\bu_\be_\bs\n+void UpdateValues(T1 const &srcBase, int numBase, T2 const &srcRef, U\n+&dstValues, Index start=-1, Index end=-1) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b2_\b1_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bG_\be_\bt_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bI_\bn_\bd_\bi_\bc_\be_\bs\n+std::vector< Index > const & GetControlIndices() const\n+Returns the indices of the control vertices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b7_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bf_\bi_\bn_\ba_\bl_\bi_\bz_\be\n+void finalize()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b1_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]\n+StencilReal< REAL > operator[](Index index) const\n+Returns the stencil at index i in the table.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b3_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\b__\bn_\bu_\bm_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n+int _numControlVertices\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b2_\b6_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bu_\bp_\bd_\ba_\bt_\be\n+void update(T const &srcValues, U &dstValues, std::vector< REAL > const\n+&valueWeights, Index start, Index end) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b5_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bG_\be_\bt_\bS_\bi_\bz_\be_\bs\n+std::vector< int > const & GetSizes() const\n+Returns the number of control vertices of each stencil in the table.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b6_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n+int GetNumStencils() const\n+Returns the number of stencils in the table.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b5_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\b~_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl\n+virtual ~StencilTableReal()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b5_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bG_\be_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bs\n+std::vector< Index > const & GetOffsets() const\n+Returns the offset to a given stencil (factory may leave empty)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b7_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bG_\be_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl\n+StencilReal< REAL > GetStencil(Index i) const\n+Returns a Stencil at index i in the table.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b2_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bs_\bh_\br_\bi_\bn_\bk_\bT_\bo_\bF_\bi_\bt\n+void shrinkToFit()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b0_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bO_\bf_\bf_\bs_\be_\bt_\bs\n+void generateOffsets()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b7_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bC_\bl_\be_\ba_\br\n+void Clear()\n+Clears the stencils from the table.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\b__\bo_\bf_\bf_\bs_\be_\bt_\bs\n+std::vector< Index > _offsets\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b2_\b6_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\b__\bw_\be_\bi_\bg_\bh_\bt_\bs\n+std::vector< REAL > _weights\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b2_\b6_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\br_\be_\bs_\bi_\bz_\be\n+void resize(int nstencils, int nelems)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b9_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bG_\be_\bt_\bW_\be_\bi_\bg_\bh_\bt_\bs\n+std::vector< REAL > const & GetWeights() const\n+Returns the stencil interpolation weights.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b8_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bU_\bp_\bd_\ba_\bt_\be_\bV_\ba_\bl_\bu_\be_\bs\n+void UpdateValues(T1 const *srcBase, int numBase, T2 const *srcRef, U *dst,\n+Index start=-1, Index end=-1) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b2_\b2_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl\n+StencilTableReal(int numControlVerts, std::vector< int > const &offsets, std::\n+vector< int > const &sizes, std::vector< int > const &sources, std::vector<\n+REAL > const &weights, bool includeCoarseVerts, size_t firstOffset)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\b__\bi_\bn_\bd_\bi_\bc_\be_\bs\n+std::vector< Index > _indices\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b2_\b6_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl\n+StencilTableReal()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b2_\b5_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\br_\be_\bs_\be_\br_\bv_\be\n+void reserve(int nstencils, int nelems)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b9_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bU_\bp_\bd_\ba_\bt_\be_\bV_\ba_\bl_\bu_\be_\bs\n+void UpdateValues(T const *src, U *dst, Index start=-1, Index end=-1) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b2_\b1_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bU_\bp_\bd_\ba_\bt_\be_\bV_\ba_\bl_\bu_\be_\bs\n+void UpdateValues(T const &srcValues, U &dstValues, Index start=-1, Index end=-\n+1) const\n+Updates point values based on the control values.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b2_\b0_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n+Stencil table class wrapping the template for compatibility.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b2_\b7_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n+StencilTable(int numControlVerts, std::vector< int > const &offsets, std::\n+vector< int > const &sizes, std::vector< int > const &sources, std::vector<\n+float > const &weights, bool includeCoarseVerts, size_t firstOffset)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b2_\b8_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n+StencilTable(int numControlVerts)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b2_\b8_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bB_\ba_\bs_\be_\bT_\ba_\bb_\bl_\be\n+StencilTableReal< float > BaseTable\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b2_\b7_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl\n+Stencil GetStencil(Index index) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b2_\b7_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]\n+Stencil operator[](Index index) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b2_\b8_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n+StencilTable()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b2_\b8_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl\n+Limit point stencil descriptor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b3_\b0_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b:_\b:_\bG_\be_\bt_\bD_\bu_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs\n+REAL const * GetDuvWeights() const\n+Returns the uv derivative weights.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b3_\b5_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b:_\b:_\bG_\be_\bt_\bD_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs\n+REAL const * GetDvWeights() const\n+Returns the v derivative weights.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b3_\b4_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b:_\b:_\bN_\be_\bx_\bt\n+void Next()\n+Advance to the next stencil in the table.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b3_\b6_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b:_\b:_\bG_\be_\bt_\bD_\bv_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs\n+REAL const * GetDvvWeights() const\n+Returns the vv derivative weights.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b3_\b6_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl\n+LimitStencilReal(int *size, Index *indices, REAL *weights, REAL *duWeights=0,\n+REAL *dvWeights=0, REAL *duuWeights=0, REAL *duvWeights=0, REAL *dvvWeights=0)\n+Constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b3_\b2_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b:_\b:_\bG_\be_\bt_\bD_\bu_\bW_\be_\bi_\bg_\bh_\bt_\bs\n+REAL const * GetDuWeights() const\n+Returns the u derivative weights.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b3_\b4_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b:_\b:_\bG_\be_\bt_\bD_\bu_\bu_\bW_\be_\bi_\bg_\bh_\bt_\bs\n+REAL const * GetDuuWeights() const\n+Returns the uu derivative weights.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b3_\b5_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl\n+Limit point stencil class wrapping the template for compatibility.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b3_\b9_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl\n+LimitStencil(BaseStencil const &other)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b3_\b9_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\b:_\b:_\bB_\ba_\bs_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl\n+LimitStencilReal< float > BaseStencil\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b3_\b9_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl\n+LimitStencil(int *size, Index *indices, float *weights, float *duWeights=0,\n+float *dvWeights=0, float *duuWeights=0, float *duvWeights=0, float\n+*dvvWeights=0)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b3_\b9_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl\n+Table of limit subdivision stencils.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b4_\b0_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bG_\be_\bt_\bD_\bu_\bu_\bW_\be_\bi_\bg_\bh_\bt_\bs\n+std::vector< REAL > const & GetDuuWeights() const\n+Returns the 'uu' derivative stencil interpolation weights.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b4_\b4_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]\n+LimitStencilReal< REAL > operator[](Index index) const\n+Returns the limit stencil at index i in the table.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b8_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bG_\be_\bt_\bD_\bv_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs\n+std::vector< REAL > const & GetDvvWeights() const\n+Returns the 'vv' derivative stencil interpolation weights.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b4_\b5_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bU_\bp_\bd_\ba_\bt_\be_\bD_\be_\br_\bi_\bv_\bs\n+void UpdateDerivs(T const *src, U *uderivs, U *vderivs, int start=-1, int end=-\n+1) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b4_\b9_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bU_\bp_\bd_\ba_\bt_\be_\b2_\bn_\bd_\bD_\be_\br_\bi_\bv_\bs\n+void Update2ndDerivs(T const *src, T *uuderivs, U *uvderivs, U *vvderivs, int\n+start=-1, int end=-1) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b4_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bG_\be_\bt_\bD_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs\n+std::vector< REAL > const & GetDvWeights() const\n+Returns the 'v' derivative stencil interpolation weights.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b4_\b3_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bU_\bp_\bd_\ba_\bt_\be_\b2_\bn_\bd_\bD_\be_\br_\bi_\bv_\bs\n+void Update2ndDerivs(T1 const *srcBase, int numBase, T2 const *srcRef, U\n+*uuderivs, U *uvderivs, U *vvderivs, int start=-1, int end=-1) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b5_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bU_\bp_\bd_\ba_\bt_\be_\bD_\be_\br_\bi_\bv_\bs\n+void UpdateDerivs(T const &srcValues, U &uderivs, U &vderivs, int start=-1, int\n+end=-1) const\n+Updates derivative values based on the control values.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b4_\b7_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bG_\be_\bt_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl\n+LimitStencilReal< REAL > GetLimitStencil(Index i) const\n+Returns a LimitStencil at index i in the table.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b4_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:\n+_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl\n+LimitStencilTableReal(int numControlVerts, std::vector< int > const &offsets,\n+std::vector< int > const &sizes, std::vector< int > const &sources, std::\n+vector< REAL > const &weights, std::vector< REAL > const &duWeights, std::\n+vector< REAL > const &dvWeights, std::vector< REAL > const &duuWeights, std::\n+vector< REAL > const &duvWeights, std::vector< REAL > const &dvvWeights, bool\n+includeCoarseVerts, size_t firstOffset)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bU_\bp_\bd_\ba_\bt_\be_\b2_\bn_\bd_\bD_\be_\br_\bi_\bv_\bs\n+void Update2ndDerivs(T const &srcValues, U &uuderivs, U &uvderivs, U &vvderivs,\n+int start=-1, int end=-1) const\n+Updates 2nd derivative values based on the control values.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b2_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bG_\be_\bt_\bD_\bu_\bW_\be_\bi_\bg_\bh_\bt_\bs\n+std::vector< REAL > const & GetDuWeights() const\n+Returns the 'u' derivative stencil interpolation weights.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b4_\b3_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bC_\bl_\be_\ba_\br\n+void Clear()\n+Clears the stencils from the table.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bU_\bp_\bd_\ba_\bt_\be_\b2_\bn_\bd_\bD_\be_\br_\bi_\bv_\bs\n+void Update2ndDerivs(T1 const &srcBase, int numBase, T2 const &srcRef, U\n+&uuderivs, U &uvderivs, U &vvderivs, int start=-1, int end=-1) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b3_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bG_\be_\bt_\bD_\bu_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs\n+std::vector< REAL > const & GetDuvWeights() const\n+Returns the 'uv' derivative stencil interpolation weights.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b4_\b4_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bU_\bp_\bd_\ba_\bt_\be_\bD_\be_\br_\bi_\bv_\bs\n+void UpdateDerivs(T1 const &srcBase, int numBase, T2 const &srcRef, U &uderivs,\n+U &vderivs, int start=-1, int end=-1) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b4_\b8_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bU_\bp_\bd_\ba_\bt_\be_\bD_\be_\br_\bi_\bv_\bs\n+void UpdateDerivs(T1 const *srcBase, int numBase, T2 const *srcRef, U *uderivs,\n+U *vderivs, int start=-1, int end=-1) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b0_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n+Limit stencil table class wrapping the template for compatibility.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b8_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bB_\ba_\bs_\be_\bT_\ba_\bb_\bl_\be\n+LimitStencilTableReal< float > BaseTable\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b8_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl\n+LimitStencil GetLimitStencil(Index index) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b8_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n+LimitStencilTable(int numControlVerts, std::vector< int > const &offsets, std::\n+vector< int > const &sizes, std::vector< int > const &sources, std::vector<\n+float > const &weights, std::vector< float > const &duWeights, std::vector<\n+float > const &dvWeights, std::vector< float > const &duuWeights, std::vector<\n+float > const &duvWeights, std::vector< float > const &dvvWeights, bool\n+includeCoarseVerts, size_t firstOffset)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b9_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b[_\b]\n+LimitStencil operator[](Index index) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b9_\b1\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bc_\bp_\bu_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh\n+    * _\bf_\ba_\br\n+    * _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00821.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00821.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/cpuGLVertexBuffer.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/far/topologyLevel.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -90,42 +90,44 @@\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> &#124;\n <a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">cpuGLVertexBuffer.h File Reference</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">topologyLevel.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &lt;cstddef&gt;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00842_source.html\">../osd/opengl.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00815_source.html\">../vtr/level.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00803_source.html\">../vtr/refinement.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a01486_source.html\">../far/types.h</a>&quot;</code><br />\n+<code>#include &lt;vector&gt;</code><br />\n </div>\n <p><a href=\"a00821_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01169.html\">CpuGLVertexBuffer</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Concrete vertex buffer class for cpu subdivision and OpenGL drawing.  <a href=\"a01169.html#details\">More...</a><br /></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01113.html\">TopologyLevel</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">An interface for accessing data in a specific level of a refined topology hierarchy.  <a href=\"a01113.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n+<tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00821.html\">cpuGLVertexBuffer.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7f420b72a822828cfa8b0561c695a5cc.html\">far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00821.html\">topologyLevel.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,26 +1,28 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-cpuGLVertexBuffer.h File Reference\n+topologyLevel.h File Reference\n #include \"../version.h\"\n-#include <cstddef>\n-#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bo_\bp_\be_\bn_\bg_\bl_\b._\bh\"\n+#include \"_\b._\b._\b/_\bv_\bt_\br_\b/_\bl_\be_\bv_\be_\bl_\b._\bh\"\n+#include \"_\b._\b._\b/_\bv_\bt_\br_\b/_\br_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt_\b._\bh\"\n+#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n+#include <vector>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bC_\bp_\bu_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-\u00a0       Concrete vertex buffer class for cpu subdivision and OpenGL drawing.\n-        _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl\n+\u00a0       An interface for accessing data in a specific level of a refined\n+        topology hierarchy. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bc_\bp_\bu_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh\n+    * _\bf_\ba_\br\n+    * _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00821.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00821.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,3 +1,3 @@\n var a00821 = [\n-    [\"CpuGLVertexBuffer\", \"a01169.html\", \"a01169\"]\n+    [\"TopologyLevel\", \"a01113.html\", \"a01113\"]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00821_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00821_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/cpuGLVertexBuffer.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/far/topologyLevel.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">cpuGLVertexBuffer.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">topologyLevel.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00821.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2013 Pixar</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2015 DreamWorks Animation LLC.</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -118,84 +118,228 @@\n <div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_CPU_GL_VERTEX_BUFFER_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_CPU_GL_VERTEX_BUFFER_H</span></div>\n-<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n-<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &lt;cstddef&gt;</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../osd/opengl.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_FAR_TOPOLOGY_LEVEL_H</span></div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#define OPENSUBDIV3_FAR_TOPOLOGY_LEVEL_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span> </div>\n+<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span> </div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#include &quot;../vtr/level.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../vtr/refinement.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../far/types.h&quot;</span></div>\n <div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span> </div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span> </div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"keyword\">namespace </span>Osd {</div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span> </div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n <div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00047\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01169.html\">   47</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01169.html\">CpuGLVertexBuffer</a> {</div>\n-<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01169.html#acb848178657989d2c59730e90e8ac952\">   50</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01169.html\">CpuGLVertexBuffer</a> * <a class=\"code hl_function\" href=\"a01169.html#acb848178657989d2c59730e90e8ac952\">Create</a>(<span class=\"keywordtype\">int</span> numElements, <span class=\"keywordtype\">int</span> numVertices,</div>\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span>                                      <span class=\"keywordtype\">void</span> *deviceContext = NULL);</div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span> </div>\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01169.html#aec560f36966b5da9528b8dbc065f7cc7\">   54</a></span>    <a class=\"code hl_function\" href=\"a01169.html#aec560f36966b5da9528b8dbc065f7cc7\">~CpuGLVertexBuffer</a>();</div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span> </div>\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01169.html#a96601a091f8831823c4dd72b6c962f1b\">   58</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01169.html#a96601a091f8831823c4dd72b6c962f1b\">UpdateData</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <span class=\"keywordtype\">int</span> startVertex, <span class=\"keywordtype\">int</span> numVertices,</div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span>                    <span class=\"keywordtype\">void</span> *deviceContext = NULL);</div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"keyword\">namespace </span>Far {</div>\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00049\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html\">   49</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01113.html\">TopologyLevel</a> {</div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span> </div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span> </div>\n <div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span> </div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01169.html#a77cee40767fd4936f20a8f9d9d9ea625\">   62</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01169.html#a77cee40767fd4936f20a8f9d9d9ea625\">GetNumElements</a>() <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#aaf4a32b8a414eff77000c584c2015cb7\">   62</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01113.html#aaf4a32b8a414eff77000c584c2015cb7\">GetNumVertices</a>()<span class=\"keyword\"> const     </span>{ <span class=\"keywordflow\">return</span> _level-&gt;getNumVertices(); }</div>\n <div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span> </div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01169.html#aaf4a32b8a414eff77000c584c2015cb7\">   65</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01169.html#aaf4a32b8a414eff77000c584c2015cb7\">GetNumVertices</a>() <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#a9920fb01c4b75c94a953a98008a4baba\">   65</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01113.html#a9920fb01c4b75c94a953a98008a4baba\">GetNumFaces</a>()<span class=\"keyword\"> const        </span>{ <span class=\"keywordflow\">return</span> _level-&gt;getNumFaces(); }</div>\n <div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span> </div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01169.html#adf7a9df5d3fc4d803bf5f1f374d90274\">   69</a></span>    <span class=\"keywordtype\">float</span> * <a class=\"code hl_function\" href=\"a01169.html#adf7a9df5d3fc4d803bf5f1f374d90274\">BindCpuBuffer</a>();</div>\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span> </div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01169.html#a6a642b61f5cf7ced73523798467735a5\">   73</a></span>    GLuint <a class=\"code hl_function\" href=\"a01169.html#a6a642b61f5cf7ced73523798467735a5\">BindVBO</a>(<span class=\"keywordtype\">void</span> *deviceContext = NULL);</div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span> </div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span><span class=\"keyword\">protected</span>:</div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01169.html#a32dd2317d622c1b079e3219f97c86955\">   77</a></span>    <a class=\"code hl_function\" href=\"a01169.html#a32dd2317d622c1b079e3219f97c86955\">CpuGLVertexBuffer</a>(<span class=\"keywordtype\">int</span> numElements, <span class=\"keywordtype\">int</span> numVertices);</div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span> </div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01169.html#add23d9f5bbc918076d240287a9b3664f\">   80</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01169.html#add23d9f5bbc918076d240287a9b3664f\">allocate</a>();</div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span> </div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>    <span class=\"keywordtype\">int</span> _numElements;</div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span>    <span class=\"keywordtype\">int</span> _numVertices;</div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>    GLuint _vbo;</div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>    <span class=\"keywordtype\">float</span> *_cpuBuffer;</div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>    <span class=\"keywordtype\">bool</span> _dataDirty;</div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span> </div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>}  <span class=\"comment\">// end namespace Osd</span></div>\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#a6338eb5f743bf170f76ec5a9764735d6\">   68</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01113.html#a6338eb5f743bf170f76ec5a9764735d6\">GetNumEdges</a>()<span class=\"keyword\"> const        </span>{ <span class=\"keywordflow\">return</span> _level-&gt;getNumEdges(); }</div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span> </div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#ae4228cb7954118c55af0a77a99333788\">   71</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01113.html#ae4228cb7954118c55af0a77a99333788\">GetNumFaceVertices</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _level-&gt;getNumFaceVerticesTotal(); }</div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span> </div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span> </div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>    <span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span> </div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>}  <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#a4b4f2e42c99ed87cb2ff3eb949a1d074\">   93</a></span>    <a class=\"code hl_class\" href=\"a01353.html\">ConstIndexArray</a> <a class=\"code hl_function\" href=\"a01113.html#a4b4f2e42c99ed87cb2ff3eb949a1d074\">GetFaceVertices</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> f)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _level-&gt;getFaceVertices(f); }</div>\n <div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span> </div>\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span>}  <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span> </div>\n-<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_CPU_GL_VERTEX_BUFFER_H</span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa01169_html\"><div class=\"ttname\"><a href=\"a01169.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuGLVertexBuffer</a></div><div class=\"ttdoc\">Concrete vertex buffer class for cpu subdivision and OpenGL drawing.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00821_source.html#l00047\">cpuGLVertexBuffer.h:47</a></div></div>\n-<div class=\"ttc\" id=\"aa01169_html_a32dd2317d622c1b079e3219f97c86955\"><div class=\"ttname\"><a href=\"a01169.html#a32dd2317d622c1b079e3219f97c86955\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuGLVertexBuffer::CpuGLVertexBuffer</a></div><div class=\"ttdeci\">CpuGLVertexBuffer(int numElements, int numVertices)</div><div class=\"ttdoc\">Constructor.</div></div>\n-<div class=\"ttc\" id=\"aa01169_html_a6a642b61f5cf7ced73523798467735a5\"><div class=\"ttname\"><a href=\"a01169.html#a6a642b61f5cf7ced73523798467735a5\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuGLVertexBuffer::BindVBO</a></div><div class=\"ttdeci\">GLuint BindVBO(void *deviceContext=NULL)</div></div>\n-<div class=\"ttc\" id=\"aa01169_html_a77cee40767fd4936f20a8f9d9d9ea625\"><div class=\"ttname\"><a href=\"a01169.html#a77cee40767fd4936f20a8f9d9d9ea625\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuGLVertexBuffer::GetNumElements</a></div><div class=\"ttdeci\">int GetNumElements() const</div><div class=\"ttdoc\">Returns how many elements defined in this vertex buffer.</div></div>\n-<div class=\"ttc\" id=\"aa01169_html_a96601a091f8831823c4dd72b6c962f1b\"><div class=\"ttname\"><a href=\"a01169.html#a96601a091f8831823c4dd72b6c962f1b\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuGLVertexBuffer::UpdateData</a></div><div class=\"ttdeci\">void UpdateData(const float *src, int startVertex, int numVertices, void *deviceContext=NULL)</div></div>\n-<div class=\"ttc\" id=\"aa01169_html_aaf4a32b8a414eff77000c584c2015cb7\"><div class=\"ttname\"><a href=\"a01169.html#aaf4a32b8a414eff77000c584c2015cb7\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuGLVertexBuffer::GetNumVertices</a></div><div class=\"ttdeci\">int GetNumVertices() const</div><div class=\"ttdoc\">Returns how many vertices allocated in this vertex buffer.</div></div>\n-<div class=\"ttc\" id=\"aa01169_html_acb848178657989d2c59730e90e8ac952\"><div class=\"ttname\"><a href=\"a01169.html#acb848178657989d2c59730e90e8ac952\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuGLVertexBuffer::Create</a></div><div class=\"ttdeci\">static CpuGLVertexBuffer * Create(int numElements, int numVertices, void *deviceContext=NULL)</div><div class=\"ttdoc\">Creator. Returns NULL if error.</div></div>\n-<div class=\"ttc\" id=\"aa01169_html_add23d9f5bbc918076d240287a9b3664f\"><div class=\"ttname\"><a href=\"a01169.html#add23d9f5bbc918076d240287a9b3664f\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuGLVertexBuffer::allocate</a></div><div class=\"ttdeci\">bool allocate()</div><div class=\"ttdoc\">Allocates VBO for this buffer. Returns true if success.</div></div>\n-<div class=\"ttc\" id=\"aa01169_html_adf7a9df5d3fc4d803bf5f1f374d90274\"><div class=\"ttname\"><a href=\"a01169.html#adf7a9df5d3fc4d803bf5f1f374d90274\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuGLVertexBuffer::BindCpuBuffer</a></div><div class=\"ttdeci\">float * BindCpuBuffer()</div></div>\n-<div class=\"ttc\" id=\"aa01169_html_aec560f36966b5da9528b8dbc065f7cc7\"><div class=\"ttname\"><a href=\"a01169.html#aec560f36966b5da9528b8dbc065f7cc7\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuGLVertexBuffer::~CpuGLVertexBuffer</a></div><div class=\"ttdeci\">~CpuGLVertexBuffer()</div><div class=\"ttdoc\">Destructor.</div></div>\n+<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#a96e525f06a05bfcd50166c6cdccbff2f\">   96</a></span>    <a class=\"code hl_class\" href=\"a01353.html\">ConstIndexArray</a> <a class=\"code hl_function\" href=\"a01113.html#a96e525f06a05bfcd50166c6cdccbff2f\">GetFaceEdges</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> f)<span class=\"keyword\"> const    </span>{ <span class=\"keywordflow\">return</span> _level-&gt;getFaceEdges(f); }</div>\n+<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span> </div>\n+<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#ac31cc6267342297f46af11ea4d90734d\">   99</a></span>    <a class=\"code hl_class\" href=\"a01353.html\">ConstIndexArray</a> <a class=\"code hl_function\" href=\"a01113.html#ac31cc6267342297f46af11ea4d90734d\">GetEdgeVertices</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> e)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _level-&gt;getEdgeVertices(e); }</div>\n+<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span> </div>\n+<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#abb05067bd51857d06a3f8e48c173d2f0\">  102</a></span>    <a class=\"code hl_class\" href=\"a01353.html\">ConstIndexArray</a> <a class=\"code hl_function\" href=\"a01113.html#abb05067bd51857d06a3f8e48c173d2f0\">GetEdgeFaces</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> e)<span class=\"keyword\"> const    </span>{ <span class=\"keywordflow\">return</span> _level-&gt;getEdgeFaces(e); }</div>\n+<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span> </div>\n+<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#a8d60953ddb124d161c845aff79b2766d\">  105</a></span>    <a class=\"code hl_class\" href=\"a01353.html\">ConstIndexArray</a> <a class=\"code hl_function\" href=\"a01113.html#a8d60953ddb124d161c845aff79b2766d\">GetVertexFaces</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v)<span class=\"keyword\"> const  </span>{ <span class=\"keywordflow\">return</span> _level-&gt;getVertexFaces(v); }</div>\n+<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span> </div>\n+<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#a71766ec0fe6997019e1ea2d9d5be6b30\">  108</a></span>    <a class=\"code hl_class\" href=\"a01353.html\">ConstIndexArray</a> <a class=\"code hl_function\" href=\"a01113.html#a71766ec0fe6997019e1ea2d9d5be6b30\">GetVertexEdges</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v)<span class=\"keyword\"> const  </span>{ <span class=\"keywordflow\">return</span> _level-&gt;getVertexEdges(v); }</div>\n+<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span> </div>\n+<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#afac250ff4bc31d95fd2300202fa0e083\">  111</a></span>    <a class=\"code hl_class\" href=\"a01353.html\">ConstLocalIndexArray</a> <a class=\"code hl_function\" href=\"a01113.html#afac250ff4bc31d95fd2300202fa0e083\">GetVertexFaceLocalIndices</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _level-&gt;getVertexFaceLocalIndices(v); }</div>\n+<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span> </div>\n+<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#a91fb9d0d5f9451bc57ad9bd79a3d5ecc\">  114</a></span>    <a class=\"code hl_class\" href=\"a01353.html\">ConstLocalIndexArray</a> <a class=\"code hl_function\" href=\"a01113.html#a91fb9d0d5f9451bc57ad9bd79a3d5ecc\">GetVertexEdgeLocalIndices</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _level-&gt;getVertexEdgeLocalIndices(v); }</div>\n+<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span> </div>\n+<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#a2f1963e1ac953b6ad0e59e26b0715ffd\">  117</a></span>    <a class=\"code hl_class\" href=\"a01353.html\">ConstLocalIndexArray</a> <a class=\"code hl_function\" href=\"a01113.html#a2f1963e1ac953b6ad0e59e26b0715ffd\">GetEdgeFaceLocalIndices</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> e)<span class=\"keyword\"> const   </span>{ <span class=\"keywordflow\">return</span> _level-&gt;getEdgeFaceLocalIndices(e); }</div>\n+<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\">  118</span> </div>\n+<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#a9197cce11b83fae9f8ed3ef5ac79c2ed\">  120</a></span>    <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> <a class=\"code hl_function\" href=\"a01113.html#a9197cce11b83fae9f8ed3ef5ac79c2ed\">FindEdge</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v0, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v1)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _level-&gt;findEdge(v0, v1); }</div>\n+<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span> </div>\n+<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span> </div>\n+<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span> </div>\n+<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#a6c6c47e9293f086576f6b54f92abbed3\">  128</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01113.html#a6c6c47e9293f086576f6b54f92abbed3\">IsEdgeNonManifold</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> e)<span class=\"keyword\"> const   </span>{ <span class=\"keywordflow\">return</span> _level-&gt;isEdgeNonManifold(e); }</div>\n+<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span> </div>\n+<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#ae8289e621fd91c4eff0d44903edb34c2\">  131</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01113.html#ae8289e621fd91c4eff0d44903edb34c2\">IsVertexNonManifold</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _level-&gt;isVertexNonManifold(v); }</div>\n+<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\">  132</span> </div>\n+<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#af13c6081737fbf3fa34e690e1d5b81b8\">  134</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01113.html#af13c6081737fbf3fa34e690e1d5b81b8\">IsEdgeBoundary</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> e)<span class=\"keyword\"> const   </span>{ <span class=\"keywordflow\">return</span> _level-&gt;getEdgeTag(e)._boundary; }</div>\n+<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\">  135</span> </div>\n+<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#aa3218dc6988e9a2cfcb099a793314811\">  137</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01113.html#aa3218dc6988e9a2cfcb099a793314811\">IsVertexBoundary</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _level-&gt;getVertexTag(v)._boundary; }</div>\n+<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\">  138</span> </div>\n+<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#a23deed96e33a15e5307536d34d67d284\">  140</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01113.html#a23deed96e33a15e5307536d34d67d284\">IsVertexCorner</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (_level-&gt;getNumVertexFaces(v) == 1); }</div>\n+<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\">  141</span> </div>\n+<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#a10516dcd41f2f223e38d04f31311f100\">  162</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01113.html#a10516dcd41f2f223e38d04f31311f100\">IsVertexValenceRegular</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> !_level-&gt;getVertexTag(v)._xordinary || <a class=\"code hl_function\" href=\"a01113.html#a23deed96e33a15e5307536d34d67d284\">IsVertexCorner</a>(v); }</div>\n+<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\">  164</span> </div>\n+<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\">  166</span> </div>\n+<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span> </div>\n+<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#a186601737e9346c814c965c5409b2c7d\">  173</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"a01113.html#a186601737e9346c814c965c5409b2c7d\">GetEdgeSharpness</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> e)<span class=\"keyword\"> const   </span>{ <span class=\"keywordflow\">return</span> _level-&gt;getEdgeSharpness(e); }</div>\n+<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\">  174</span> </div>\n+<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#ad44fcb4ce1945cc40f6772ccdc57c216\">  176</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"a01113.html#ad44fcb4ce1945cc40f6772ccdc57c216\">GetVertexSharpness</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _level-&gt;getVertexSharpness(v); }</div>\n+<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span> </div>\n+<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#a7740126da36c149d0c38beab662b262d\">  179</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01113.html#a7740126da36c149d0c38beab662b262d\">IsEdgeInfSharp</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> e)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _level-&gt;getEdgeTag(e)._infSharp; }</div>\n+<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\">  180</span> </div>\n+<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#af2e9df856672471d6d52245646b99ec1\">  182</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01113.html#af2e9df856672471d6d52245646b99ec1\">IsVertexInfSharp</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _level-&gt;getVertexTag(v)._infSharp; }</div>\n+<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\">  183</span> </div>\n+<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#ac5840056570743d410a552b8d1d90f4d\">  185</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01113.html#ac5840056570743d410a552b8d1d90f4d\">IsEdgeSemiSharp</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> e)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _level-&gt;getEdgeTag(e)._semiSharp; }</div>\n+<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\">  186</span> </div>\n+<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#adba75894e1f7679a01b8341b9ac00893\">  188</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01113.html#adba75894e1f7679a01b8341b9ac00893\">IsVertexSemiSharp</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _level-&gt;getVertexTag(v)._semiSharp; }</div>\n+<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\">  189</span> </div>\n+<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#a6ce73966755c0b5d8a47c5de34e0b91c\">  191</a></span>    <span class=\"keywordtype\">bool</span>  <a class=\"code hl_function\" href=\"a01113.html#a6ce73966755c0b5d8a47c5de34e0b91c\">IsFaceHole</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> f)<span class=\"keyword\"> const         </span>{ <span class=\"keywordflow\">return</span> _level-&gt;isFaceHole(f); }</div>\n+<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\">  192</span> </div>\n+<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#a20841b396faca029ff2507b1456268d1\">  194</a></span>    <a class=\"code hl_enumeration\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78\">Sdc::Crease::Rule</a> <a class=\"code hl_function\" href=\"a01113.html#a20841b396faca029ff2507b1456268d1\">GetVertexRule</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _level-&gt;getVertexRule(v); }</div>\n+<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\">  196</span> </div>\n+<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\">  198</span> </div>\n+<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\">  228</span> </div>\n+<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#aa9be824a572029f3ec1e0c0d6cfecd77\">  230</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01113.html#aa9be824a572029f3ec1e0c0d6cfecd77\">GetNumFVarChannels</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _level-&gt;getNumFVarChannels(); }</div>\n+<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\">  231</span> </div>\n+<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#afa663a1bb972ec104c8b842d9dc967a5\">  234</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01113.html#afa663a1bb972ec104c8b842d9dc967a5\">GetNumFVarValues</a>(<span class=\"keywordtype\">int</span> channel = 0)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _level-&gt;getNumFVarValues(channel); }</div>\n+<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\">  235</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00237\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#abdcd74fa1bc533f080edf439beddc791\">  237</a></span>    <a class=\"code hl_class\" href=\"a01353.html\">ConstIndexArray</a> <a class=\"code hl_function\" href=\"a01113.html#abdcd74fa1bc533f080edf439beddc791\">GetFaceFVarValues</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> f, <span class=\"keywordtype\">int</span> channel = 0)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\">  238</span>        <span class=\"keywordflow\">return</span> _level-&gt;getFaceFVarValues(f, channel);</div>\n+<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\">  239</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\">  240</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00242\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#a76fadd35f9ed2954cd78926d77af53b5\">  242</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01113.html#a76fadd35f9ed2954cd78926d77af53b5\">DoesVertexFVarTopologyMatch</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v, <span class=\"keywordtype\">int</span> channel = 0)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\">  243</span>        <span class=\"keywordflow\">return</span> _level-&gt;doesVertexFVarTopologyMatch(v, channel);</div>\n+<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\">  244</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00245\" name=\"l00245\"></a><span class=\"lineno\">  245</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00247\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00247\" name=\"l00247\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#a3a95c7209a6a7997eb8c28784376be92\">  247</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01113.html#a3a95c7209a6a7997eb8c28784376be92\">DoesEdgeFVarTopologyMatch</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> e, <span class=\"keywordtype\">int</span> channel = 0)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00248\" name=\"l00248\"></a><span class=\"lineno\">  248</span>        <span class=\"keywordflow\">return</span> _level-&gt;doesEdgeFVarTopologyMatch(e, channel);</div>\n+<div class=\"line\"><a id=\"l00249\" name=\"l00249\"></a><span class=\"lineno\">  249</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00250\" name=\"l00250\"></a><span class=\"lineno\">  250</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00252\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00252\" name=\"l00252\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#a1f37d5ebb1aca5f512d914d5810031a3\">  252</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01113.html#a1f37d5ebb1aca5f512d914d5810031a3\">DoesFaceFVarTopologyMatch</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> f, <span class=\"keywordtype\">int</span> channel = 0)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00253\" name=\"l00253\"></a><span class=\"lineno\">  253</span>        <span class=\"keywordflow\">return</span> _level-&gt;doesFaceFVarTopologyMatch(f, channel);</div>\n+<div class=\"line\"><a id=\"l00254\" name=\"l00254\"></a><span class=\"lineno\">  254</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00255\" name=\"l00255\"></a><span class=\"lineno\">  255</span> </div>\n+<div class=\"line\"><a id=\"l00257\" name=\"l00257\"></a><span class=\"lineno\">  257</span> </div>\n+<div class=\"line\"><a id=\"l00259\" name=\"l00259\"></a><span class=\"lineno\">  259</span> </div>\n+<div class=\"line\"><a id=\"l00260\" name=\"l00260\"></a><span class=\"lineno\">  260</span> </div>\n+<div class=\"line\"><a id=\"l00262\" name=\"l00262\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#a538ff3341a16c352107117885dbfdf51\">  262</a></span>    <a class=\"code hl_class\" href=\"a01353.html\">ConstIndexArray</a> <a class=\"code hl_function\" href=\"a01113.html#a538ff3341a16c352107117885dbfdf51\">GetFaceChildFaces</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> f)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _refToChild-&gt;getFaceChildFaces(f); }</div>\n+<div class=\"line\"><a id=\"l00263\" name=\"l00263\"></a><span class=\"lineno\">  263</span> </div>\n+<div class=\"line\"><a id=\"l00265\" name=\"l00265\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#a34ad525bfe0752e223af5d175b73df4b\">  265</a></span>    <a class=\"code hl_class\" href=\"a01353.html\">ConstIndexArray</a> <a class=\"code hl_function\" href=\"a01113.html#a34ad525bfe0752e223af5d175b73df4b\">GetFaceChildEdges</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> f)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _refToChild-&gt;getFaceChildEdges(f); }</div>\n+<div class=\"line\"><a id=\"l00266\" name=\"l00266\"></a><span class=\"lineno\">  266</span> </div>\n+<div class=\"line\"><a id=\"l00268\" name=\"l00268\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#a7718004bcd0c2ca1c75690bce636b288\">  268</a></span>    <a class=\"code hl_class\" href=\"a01353.html\">ConstIndexArray</a> <a class=\"code hl_function\" href=\"a01113.html#a7718004bcd0c2ca1c75690bce636b288\">GetEdgeChildEdges</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> e)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _refToChild-&gt;getEdgeChildEdges(e); }</div>\n+<div class=\"line\"><a id=\"l00269\" name=\"l00269\"></a><span class=\"lineno\">  269</span> </div>\n+<div class=\"line\"><a id=\"l00271\" name=\"l00271\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#a767b6203c923ebbbd37688e3c9e6cac9\">  271</a></span>    <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> <a class=\"code hl_function\" href=\"a01113.html#a767b6203c923ebbbd37688e3c9e6cac9\">GetFaceChildVertex</a>(  <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> f)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _refToChild-&gt;getFaceChildVertex(f); }</div>\n+<div class=\"line\"><a id=\"l00272\" name=\"l00272\"></a><span class=\"lineno\">  272</span> </div>\n+<div class=\"line\"><a id=\"l00274\" name=\"l00274\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#ad93895054c5fe26a9d6693b3148dfe37\">  274</a></span>    <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> <a class=\"code hl_function\" href=\"a01113.html#ad93895054c5fe26a9d6693b3148dfe37\">GetEdgeChildVertex</a>(  <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> e)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _refToChild-&gt;getEdgeChildVertex(e); }</div>\n+<div class=\"line\"><a id=\"l00275\" name=\"l00275\"></a><span class=\"lineno\">  275</span> </div>\n+<div class=\"line\"><a id=\"l00277\" name=\"l00277\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#a2d57cefb50c830531eb61a6a2e8b79c4\">  277</a></span>    <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> <a class=\"code hl_function\" href=\"a01113.html#a2d57cefb50c830531eb61a6a2e8b79c4\">GetVertexChildVertex</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _refToChild-&gt;getVertexChildVertex(v); }</div>\n+<div class=\"line\"><a id=\"l00278\" name=\"l00278\"></a><span class=\"lineno\">  278</span> </div>\n+<div class=\"line\"><a id=\"l00280\" name=\"l00280\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#a022517960b10f4541899a2f87cc8de1f\">  280</a></span>    <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> <a class=\"code hl_function\" href=\"a01113.html#a022517960b10f4541899a2f87cc8de1f\">GetFaceParentFace</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> f)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _refToParent-&gt;getChildFaceParentFace(f); }</div>\n+<div class=\"line\"><a id=\"l00282\" name=\"l00282\"></a><span class=\"lineno\">  282</span> </div>\n+<div class=\"line\"><a id=\"l00284\" name=\"l00284\"></a><span class=\"lineno\">  284</span> </div>\n+<div class=\"line\"><a id=\"l00285\" name=\"l00285\"></a><span class=\"lineno\">  285</span> </div>\n+<div class=\"line\"><a id=\"l00286\" name=\"l00286\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#a640a101c65375bded32722376e651f97\">  286</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01113.html#a640a101c65375bded32722376e651f97\">ValidateTopology</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _level-&gt;validateTopology(); }</div>\n+<div class=\"line\"><a id=\"l00287\" name=\"l00287\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#a3f963f5352658762e7a2e8d82fb888a0\">  287</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01113.html#a3f963f5352658762e7a2e8d82fb888a0\">PrintTopology</a>(<span class=\"keywordtype\">bool</span> children = <span class=\"keyword\">true</span>)<span class=\"keyword\"> const </span>{ _level-&gt;print((children &amp;&amp; _refToChild) ? _refToChild : 0); }</div>\n+<div class=\"line\"><a id=\"l00289\" name=\"l00289\"></a><span class=\"lineno\">  289</span> </div>\n+<div class=\"line\"><a id=\"l00290\" name=\"l00290\"></a><span class=\"lineno\">  290</span> </div>\n+<div class=\"line\"><a id=\"l00291\" name=\"l00291\"></a><span class=\"lineno\">  291</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00292\" name=\"l00292\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#a094d2e51437ecd5ecc6a0cf2c4ce1e78\">  292</a></span>    <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a>;</div>\n+<div class=\"line\"><a id=\"l00293\" name=\"l00293\"></a><span class=\"lineno\">  293</span> </div>\n+<div class=\"line\"><a id=\"l00294\" name=\"l00294\"></a><span class=\"lineno\">  294</span>    Vtr::internal::Level <span class=\"keyword\">const</span> *      _level;</div>\n+<div class=\"line\"><a id=\"l00295\" name=\"l00295\"></a><span class=\"lineno\">  295</span>    Vtr::internal::Refinement <span class=\"keyword\">const</span> * _refToParent;</div>\n+<div class=\"line\"><a id=\"l00296\" name=\"l00296\"></a><span class=\"lineno\">  296</span>    Vtr::internal::Refinement <span class=\"keyword\">const</span> * _refToChild;</div>\n+<div class=\"line\"><a id=\"l00297\" name=\"l00297\"></a><span class=\"lineno\">  297</span> </div>\n+<div class=\"line\"><a id=\"l00298\" name=\"l00298\"></a><span class=\"lineno\">  298</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00299\" name=\"l00299\"></a><span class=\"lineno\">  299</span>    <span class=\"comment\">//  Not intended for public use, but required by std::vector, etc...</span></div>\n+<div class=\"line\"><a id=\"l00300\" name=\"l00300\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#a03a8183081b34983ade155e3636ba835\">  300</a></span>    <a class=\"code hl_function\" href=\"a01113.html#a03a8183081b34983ade155e3636ba835\">TopologyLevel</a>() { }</div>\n+<div class=\"line\"><a id=\"l00301\" name=\"l00301\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01113.html#ac5cb1977407971568a00663f6badb998\">  301</a></span>    <a class=\"code hl_function\" href=\"a01113.html#ac5cb1977407971568a00663f6badb998\">~TopologyLevel</a>() { }</div>\n+<div class=\"line\"><a id=\"l00302\" name=\"l00302\"></a><span class=\"lineno\">  302</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00303\" name=\"l00303\"></a><span class=\"lineno\">  303</span> </div>\n+<div class=\"line\"><a id=\"l00304\" name=\"l00304\"></a><span class=\"lineno\">  304</span>} <span class=\"comment\">// end namespace Far</span></div>\n+<div class=\"line\"><a id=\"l00305\" name=\"l00305\"></a><span class=\"lineno\">  305</span> </div>\n+<div class=\"line\"><a id=\"l00306\" name=\"l00306\"></a><span class=\"lineno\">  306</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\">  307</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00308\" name=\"l00308\"></a><span class=\"lineno\">  308</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l00309\" name=\"l00309\"></a><span class=\"lineno\">  309</span> </div>\n+<div class=\"line\"><a id=\"l00310\" name=\"l00310\"></a><span class=\"lineno\">  310</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_FAR_TOPOLOGY_LEVEL_H */</span><span class=\"preprocessor\"></span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa00908_html_ab34c85a48f33dfe7b8bf4d966fdebbf2\"><div class=\"ttname\"><a href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">OpenSubdiv::OPENSUBDIV_VERSION::Far::Index</a></div><div class=\"ttdeci\">Vtr::Index Index</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01486_source.html#l00041\">types.h:41</a></div></div>\n+<div class=\"ttc\" id=\"aa01113_html\"><div class=\"ttname\"><a href=\"a01113.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel</a></div><div class=\"ttdoc\">An interface for accessing data in a specific level of a refined topology hierarchy.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00821_source.html#l00049\">topologyLevel.h:49</a></div></div>\n+<div class=\"ttc\" id=\"aa01113_html_a022517960b10f4541899a2f87cc8de1f\"><div class=\"ttname\"><a href=\"a01113.html#a022517960b10f4541899a2f87cc8de1f\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::GetFaceParentFace</a></div><div class=\"ttdeci\">Index GetFaceParentFace(Index f) const</div><div class=\"ttdoc\">Return the parent face (in the previous level) of a given face.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00821_source.html#l00280\">topologyLevel.h:280</a></div></div>\n+<div class=\"ttc\" id=\"aa01113_html_a03a8183081b34983ade155e3636ba835\"><div class=\"ttname\"><a href=\"a01113.html#a03a8183081b34983ade155e3636ba835\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::TopologyLevel</a></div><div class=\"ttdeci\">TopologyLevel()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00821_source.html#l00300\">topologyLevel.h:300</a></div></div>\n+<div class=\"ttc\" id=\"aa01113_html_a10516dcd41f2f223e38d04f31311f100\"><div class=\"ttname\"><a href=\"a01113.html#a10516dcd41f2f223e38d04f31311f100\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::IsVertexValenceRegular</a></div><div class=\"ttdeci\">bool IsVertexValenceRegular(Index v) const</div><div class=\"ttdoc\">Return if the valence of the vertex is regular (must be manifold)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00821_source.html#l00162\">topologyLevel.h:162</a></div></div>\n+<div class=\"ttc\" id=\"aa01113_html_a186601737e9346c814c965c5409b2c7d\"><div class=\"ttname\"><a href=\"a01113.html#a186601737e9346c814c965c5409b2c7d\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::GetEdgeSharpness</a></div><div class=\"ttdeci\">float GetEdgeSharpness(Index e) const</div><div class=\"ttdoc\">Return the sharpness assigned a given edge.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00821_source.html#l00173\">topologyLevel.h:173</a></div></div>\n+<div class=\"ttc\" id=\"aa01113_html_a1f37d5ebb1aca5f512d914d5810031a3\"><div class=\"ttname\"><a href=\"a01113.html#a1f37d5ebb1aca5f512d914d5810031a3\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::DoesFaceFVarTopologyMatch</a></div><div class=\"ttdeci\">bool DoesFaceFVarTopologyMatch(Index f, int channel=0) const</div><div class=\"ttdoc\">Return if face-varying topology around a face matches.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00821_source.html#l00252\">topologyLevel.h:252</a></div></div>\n+<div class=\"ttc\" id=\"aa01113_html_a20841b396faca029ff2507b1456268d1\"><div class=\"ttname\"><a href=\"a01113.html#a20841b396faca029ff2507b1456268d1\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::GetVertexRule</a></div><div class=\"ttdeci\">Sdc::Crease::Rule GetVertexRule(Index v) const</div><div class=\"ttdoc\">Return the subdivision rule assigned a given vertex specific to this level.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00821_source.html#l00194\">topologyLevel.h:194</a></div></div>\n+<div class=\"ttc\" id=\"aa01113_html_a23deed96e33a15e5307536d34d67d284\"><div class=\"ttname\"><a href=\"a01113.html#a23deed96e33a15e5307536d34d67d284\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::IsVertexCorner</a></div><div class=\"ttdeci\">bool IsVertexCorner(Index v) const</div><div class=\"ttdoc\">Return if the vertex is a corner (only one incident face)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00821_source.html#l00140\">topologyLevel.h:140</a></div></div>\n+<div class=\"ttc\" id=\"aa01113_html_a2d57cefb50c830531eb61a6a2e8b79c4\"><div class=\"ttname\"><a href=\"a01113.html#a2d57cefb50c830531eb61a6a2e8b79c4\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::GetVertexChildVertex</a></div><div class=\"ttdeci\">Index GetVertexChildVertex(Index v) const</div><div class=\"ttdoc\">Return the child vertex (in the next level) of a given vertex.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00821_source.html#l00277\">topologyLevel.h:277</a></div></div>\n+<div class=\"ttc\" id=\"aa01113_html_a2f1963e1ac953b6ad0e59e26b0715ffd\"><div class=\"ttname\"><a href=\"a01113.html#a2f1963e1ac953b6ad0e59e26b0715ffd\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::GetEdgeFaceLocalIndices</a></div><div class=\"ttdeci\">ConstLocalIndexArray GetEdgeFaceLocalIndices(Index e) const</div><div class=\"ttdoc\">Access the local indices of an edge with respect to its incident faces.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00821_source.html#l00117\">topologyLevel.h:117</a></div></div>\n+<div class=\"ttc\" id=\"aa01113_html_a34ad525bfe0752e223af5d175b73df4b\"><div class=\"ttname\"><a href=\"a01113.html#a34ad525bfe0752e223af5d175b73df4b\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::GetFaceChildEdges</a></div><div class=\"ttdeci\">ConstIndexArray GetFaceChildEdges(Index f) const</div><div class=\"ttdoc\">Access the child edges (in the next level) of a given face.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00821_source.html#l00265\">topologyLevel.h:265</a></div></div>\n+<div class=\"ttc\" id=\"aa01113_html_a3a95c7209a6a7997eb8c28784376be92\"><div class=\"ttname\"><a href=\"a01113.html#a3a95c7209a6a7997eb8c28784376be92\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::DoesEdgeFVarTopologyMatch</a></div><div class=\"ttdeci\">bool DoesEdgeFVarTopologyMatch(Index e, int channel=0) const</div><div class=\"ttdoc\">Return if face-varying topology across the edge only matches.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00821_source.html#l00247\">topologyLevel.h:247</a></div></div>\n+<div class=\"ttc\" id=\"aa01113_html_a3f963f5352658762e7a2e8d82fb888a0\"><div class=\"ttname\"><a href=\"a01113.html#a3f963f5352658762e7a2e8d82fb888a0\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::PrintTopology</a></div><div class=\"ttdeci\">void PrintTopology(bool children=true) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00821_source.html#l00287\">topologyLevel.h:287</a></div></div>\n+<div class=\"ttc\" id=\"aa01113_html_a4b4f2e42c99ed87cb2ff3eb949a1d074\"><div class=\"ttname\"><a href=\"a01113.html#a4b4f2e42c99ed87cb2ff3eb949a1d074\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::GetFaceVertices</a></div><div class=\"ttdeci\">ConstIndexArray GetFaceVertices(Index f) const</div><div class=\"ttdoc\">Access the vertices incident a given face.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00821_source.html#l00093\">topologyLevel.h:93</a></div></div>\n+<div class=\"ttc\" id=\"aa01113_html_a538ff3341a16c352107117885dbfdf51\"><div class=\"ttname\"><a href=\"a01113.html#a538ff3341a16c352107117885dbfdf51\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::GetFaceChildFaces</a></div><div class=\"ttdeci\">ConstIndexArray GetFaceChildFaces(Index f) const</div><div class=\"ttdoc\">Access the child faces (in the next level) of a given face.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00821_source.html#l00262\">topologyLevel.h:262</a></div></div>\n+<div class=\"ttc\" id=\"aa01113_html_a6338eb5f743bf170f76ec5a9764735d6\"><div class=\"ttname\"><a href=\"a01113.html#a6338eb5f743bf170f76ec5a9764735d6\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::GetNumEdges</a></div><div class=\"ttdeci\">int GetNumEdges() const</div><div class=\"ttdoc\">Return the number of edges in this level.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00821_source.html#l00068\">topologyLevel.h:68</a></div></div>\n+<div class=\"ttc\" id=\"aa01113_html_a640a101c65375bded32722376e651f97\"><div class=\"ttname\"><a href=\"a01113.html#a640a101c65375bded32722376e651f97\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::ValidateTopology</a></div><div class=\"ttdeci\">bool ValidateTopology() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00821_source.html#l00286\">topologyLevel.h:286</a></div></div>\n+<div class=\"ttc\" id=\"aa01113_html_a6c6c47e9293f086576f6b54f92abbed3\"><div class=\"ttname\"><a href=\"a01113.html#a6c6c47e9293f086576f6b54f92abbed3\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::IsEdgeNonManifold</a></div><div class=\"ttdeci\">bool IsEdgeNonManifold(Index e) const</div><div class=\"ttdoc\">Return if the edge is non-manifold.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00821_source.html#l00128\">topologyLevel.h:128</a></div></div>\n+<div class=\"ttc\" id=\"aa01113_html_a6ce73966755c0b5d8a47c5de34e0b91c\"><div class=\"ttname\"><a href=\"a01113.html#a6ce73966755c0b5d8a47c5de34e0b91c\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::IsFaceHole</a></div><div class=\"ttdeci\">bool IsFaceHole(Index f) const</div><div class=\"ttdoc\">Return if a given face has been tagged as a hole.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00821_source.html#l00191\">topologyLevel.h:191</a></div></div>\n+<div class=\"ttc\" id=\"aa01113_html_a71766ec0fe6997019e1ea2d9d5be6b30\"><div class=\"ttname\"><a href=\"a01113.html#a71766ec0fe6997019e1ea2d9d5be6b30\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::GetVertexEdges</a></div><div class=\"ttdeci\">ConstIndexArray GetVertexEdges(Index v) const</div><div class=\"ttdoc\">Access the edges incident a given vertex.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00821_source.html#l00108\">topologyLevel.h:108</a></div></div>\n+<div class=\"ttc\" id=\"aa01113_html_a767b6203c923ebbbd37688e3c9e6cac9\"><div class=\"ttname\"><a href=\"a01113.html#a767b6203c923ebbbd37688e3c9e6cac9\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::GetFaceChildVertex</a></div><div class=\"ttdeci\">Index GetFaceChildVertex(Index f) const</div><div class=\"ttdoc\">Return the child vertex (in the next level) of a given face.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00821_source.html#l00271\">topologyLevel.h:271</a></div></div>\n+<div class=\"ttc\" id=\"aa01113_html_a76fadd35f9ed2954cd78926d77af53b5\"><div class=\"ttname\"><a href=\"a01113.html#a76fadd35f9ed2954cd78926d77af53b5\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::DoesVertexFVarTopologyMatch</a></div><div class=\"ttdeci\">bool DoesVertexFVarTopologyMatch(Index v, int channel=0) const</div><div class=\"ttdoc\">Return if face-varying topology around a vertex matches.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00821_source.html#l00242\">topologyLevel.h:242</a></div></div>\n+<div class=\"ttc\" id=\"aa01113_html_a7718004bcd0c2ca1c75690bce636b288\"><div class=\"ttname\"><a href=\"a01113.html#a7718004bcd0c2ca1c75690bce636b288\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::GetEdgeChildEdges</a></div><div class=\"ttdeci\">ConstIndexArray GetEdgeChildEdges(Index e) const</div><div class=\"ttdoc\">Access the child edges (in the next level) of a given edge.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00821_source.html#l00268\">topologyLevel.h:268</a></div></div>\n+<div class=\"ttc\" id=\"aa01113_html_a7740126da36c149d0c38beab662b262d\"><div class=\"ttname\"><a href=\"a01113.html#a7740126da36c149d0c38beab662b262d\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::IsEdgeInfSharp</a></div><div class=\"ttdeci\">bool IsEdgeInfSharp(Index e) const</div><div class=\"ttdoc\">Return if the edge is infinitely-sharp.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00821_source.html#l00179\">topologyLevel.h:179</a></div></div>\n+<div class=\"ttc\" id=\"aa01113_html_a8d60953ddb124d161c845aff79b2766d\"><div class=\"ttname\"><a href=\"a01113.html#a8d60953ddb124d161c845aff79b2766d\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::GetVertexFaces</a></div><div class=\"ttdeci\">ConstIndexArray GetVertexFaces(Index v) const</div><div class=\"ttdoc\">Access the faces incident a given vertex.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00821_source.html#l00105\">topologyLevel.h:105</a></div></div>\n+<div class=\"ttc\" id=\"aa01113_html_a9197cce11b83fae9f8ed3ef5ac79c2ed\"><div class=\"ttname\"><a href=\"a01113.html#a9197cce11b83fae9f8ed3ef5ac79c2ed\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::FindEdge</a></div><div class=\"ttdeci\">Index FindEdge(Index v0, Index v1) const</div><div class=\"ttdoc\">Identify the edge matching the given vertex pair.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00821_source.html#l00120\">topologyLevel.h:120</a></div></div>\n+<div class=\"ttc\" id=\"aa01113_html_a91fb9d0d5f9451bc57ad9bd79a3d5ecc\"><div class=\"ttname\"><a href=\"a01113.html#a91fb9d0d5f9451bc57ad9bd79a3d5ecc\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::GetVertexEdgeLocalIndices</a></div><div class=\"ttdeci\">ConstLocalIndexArray GetVertexEdgeLocalIndices(Index v) const</div><div class=\"ttdoc\">Access the local indices of a vertex with respect to its incident edges.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00821_source.html#l00114\">topologyLevel.h:114</a></div></div>\n+<div class=\"ttc\" id=\"aa01113_html_a96e525f06a05bfcd50166c6cdccbff2f\"><div class=\"ttname\"><a href=\"a01113.html#a96e525f06a05bfcd50166c6cdccbff2f\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::GetFaceEdges</a></div><div class=\"ttdeci\">ConstIndexArray GetFaceEdges(Index f) const</div><div class=\"ttdoc\">Access the edges incident a given face.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00821_source.html#l00096\">topologyLevel.h:96</a></div></div>\n+<div class=\"ttc\" id=\"aa01113_html_a9920fb01c4b75c94a953a98008a4baba\"><div class=\"ttname\"><a href=\"a01113.html#a9920fb01c4b75c94a953a98008a4baba\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::GetNumFaces</a></div><div class=\"ttdeci\">int GetNumFaces() const</div><div class=\"ttdoc\">Return the number of faces in this level.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00821_source.html#l00065\">topologyLevel.h:65</a></div></div>\n+<div class=\"ttc\" id=\"aa01113_html_aa3218dc6988e9a2cfcb099a793314811\"><div class=\"ttname\"><a href=\"a01113.html#aa3218dc6988e9a2cfcb099a793314811\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::IsVertexBoundary</a></div><div class=\"ttdeci\">bool IsVertexBoundary(Index v) const</div><div class=\"ttdoc\">Return if the vertex is on a boundary (at least one incident boundary edge)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00821_source.html#l00137\">topologyLevel.h:137</a></div></div>\n+<div class=\"ttc\" id=\"aa01113_html_aa9be824a572029f3ec1e0c0d6cfecd77\"><div class=\"ttname\"><a href=\"a01113.html#aa9be824a572029f3ec1e0c0d6cfecd77\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::GetNumFVarChannels</a></div><div class=\"ttdeci\">int GetNumFVarChannels() const</div><div class=\"ttdoc\">Return the number of face-varying channels (should be same for all levels)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00821_source.html#l00230\">topologyLevel.h:230</a></div></div>\n+<div class=\"ttc\" id=\"aa01113_html_aaf4a32b8a414eff77000c584c2015cb7\"><div class=\"ttname\"><a href=\"a01113.html#aaf4a32b8a414eff77000c584c2015cb7\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::GetNumVertices</a></div><div class=\"ttdeci\">int GetNumVertices() const</div><div class=\"ttdoc\">Return the number of vertices in this level.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00821_source.html#l00062\">topologyLevel.h:62</a></div></div>\n+<div class=\"ttc\" id=\"aa01113_html_abb05067bd51857d06a3f8e48c173d2f0\"><div class=\"ttname\"><a href=\"a01113.html#abb05067bd51857d06a3f8e48c173d2f0\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::GetEdgeFaces</a></div><div class=\"ttdeci\">ConstIndexArray GetEdgeFaces(Index e) const</div><div class=\"ttdoc\">Access the faces incident a given edge.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00821_source.html#l00102\">topologyLevel.h:102</a></div></div>\n+<div class=\"ttc\" id=\"aa01113_html_abdcd74fa1bc533f080edf439beddc791\"><div class=\"ttname\"><a href=\"a01113.html#abdcd74fa1bc533f080edf439beddc791\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::GetFaceFVarValues</a></div><div class=\"ttdeci\">ConstIndexArray GetFaceFVarValues(Index f, int channel=0) const</div><div class=\"ttdoc\">Access the face-varying values associated with a particular face.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00821_source.html#l00237\">topologyLevel.h:237</a></div></div>\n+<div class=\"ttc\" id=\"aa01113_html_ac31cc6267342297f46af11ea4d90734d\"><div class=\"ttname\"><a href=\"a01113.html#ac31cc6267342297f46af11ea4d90734d\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::GetEdgeVertices</a></div><div class=\"ttdeci\">ConstIndexArray GetEdgeVertices(Index e) const</div><div class=\"ttdoc\">Access the vertices incident a given edge.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00821_source.html#l00099\">topologyLevel.h:99</a></div></div>\n+<div class=\"ttc\" id=\"aa01113_html_ac5840056570743d410a552b8d1d90f4d\"><div class=\"ttname\"><a href=\"a01113.html#ac5840056570743d410a552b8d1d90f4d\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::IsEdgeSemiSharp</a></div><div class=\"ttdeci\">bool IsEdgeSemiSharp(Index e) const</div><div class=\"ttdoc\">Return if the edge is semi-sharp.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00821_source.html#l00185\">topologyLevel.h:185</a></div></div>\n+<div class=\"ttc\" id=\"aa01113_html_ac5cb1977407971568a00663f6badb998\"><div class=\"ttname\"><a href=\"a01113.html#ac5cb1977407971568a00663f6badb998\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::~TopologyLevel</a></div><div class=\"ttdeci\">~TopologyLevel()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00821_source.html#l00301\">topologyLevel.h:301</a></div></div>\n+<div class=\"ttc\" id=\"aa01113_html_ad44fcb4ce1945cc40f6772ccdc57c216\"><div class=\"ttname\"><a href=\"a01113.html#ad44fcb4ce1945cc40f6772ccdc57c216\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::GetVertexSharpness</a></div><div class=\"ttdeci\">float GetVertexSharpness(Index v) const</div><div class=\"ttdoc\">Return the sharpness assigned a given vertex.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00821_source.html#l00176\">topologyLevel.h:176</a></div></div>\n+<div class=\"ttc\" id=\"aa01113_html_ad93895054c5fe26a9d6693b3148dfe37\"><div class=\"ttname\"><a href=\"a01113.html#ad93895054c5fe26a9d6693b3148dfe37\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::GetEdgeChildVertex</a></div><div class=\"ttdeci\">Index GetEdgeChildVertex(Index e) const</div><div class=\"ttdoc\">Return the child vertex (in the next level) of a given edge.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00821_source.html#l00274\">topologyLevel.h:274</a></div></div>\n+<div class=\"ttc\" id=\"aa01113_html_adba75894e1f7679a01b8341b9ac00893\"><div class=\"ttname\"><a href=\"a01113.html#adba75894e1f7679a01b8341b9ac00893\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::IsVertexSemiSharp</a></div><div class=\"ttdeci\">bool IsVertexSemiSharp(Index v) const</div><div class=\"ttdoc\">Return if the vertex is semi-sharp.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00821_source.html#l00188\">topologyLevel.h:188</a></div></div>\n+<div class=\"ttc\" id=\"aa01113_html_ae4228cb7954118c55af0a77a99333788\"><div class=\"ttname\"><a href=\"a01113.html#ae4228cb7954118c55af0a77a99333788\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::GetNumFaceVertices</a></div><div class=\"ttdeci\">int GetNumFaceVertices() const</div><div class=\"ttdoc\">Return the total number of face-vertices, i.e. the sum of all vertices for all faces.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00821_source.html#l00071\">topologyLevel.h:71</a></div></div>\n+<div class=\"ttc\" id=\"aa01113_html_ae8289e621fd91c4eff0d44903edb34c2\"><div class=\"ttname\"><a href=\"a01113.html#ae8289e621fd91c4eff0d44903edb34c2\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::IsVertexNonManifold</a></div><div class=\"ttdeci\">bool IsVertexNonManifold(Index v) const</div><div class=\"ttdoc\">Return if the vertex is non-manifold.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00821_source.html#l00131\">topologyLevel.h:131</a></div></div>\n+<div class=\"ttc\" id=\"aa01113_html_af13c6081737fbf3fa34e690e1d5b81b8\"><div class=\"ttname\"><a href=\"a01113.html#af13c6081737fbf3fa34e690e1d5b81b8\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::IsEdgeBoundary</a></div><div class=\"ttdeci\">bool IsEdgeBoundary(Index e) const</div><div class=\"ttdoc\">Return if the edge is a boundary (only one incident face)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00821_source.html#l00134\">topologyLevel.h:134</a></div></div>\n+<div class=\"ttc\" id=\"aa01113_html_af2e9df856672471d6d52245646b99ec1\"><div class=\"ttname\"><a href=\"a01113.html#af2e9df856672471d6d52245646b99ec1\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::IsVertexInfSharp</a></div><div class=\"ttdeci\">bool IsVertexInfSharp(Index v) const</div><div class=\"ttdoc\">Return if the vertex is infinitely-sharp.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00821_source.html#l00182\">topologyLevel.h:182</a></div></div>\n+<div class=\"ttc\" id=\"aa01113_html_afa663a1bb972ec104c8b842d9dc967a5\"><div class=\"ttname\"><a href=\"a01113.html#afa663a1bb972ec104c8b842d9dc967a5\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::GetNumFVarValues</a></div><div class=\"ttdeci\">int GetNumFVarValues(int channel=0) const</div><div class=\"ttdoc\">Return the total number of face-varying values in a particular channel (the upper bound of a face-var...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00821_source.html#l00234\">topologyLevel.h:234</a></div></div>\n+<div class=\"ttc\" id=\"aa01113_html_afac250ff4bc31d95fd2300202fa0e083\"><div class=\"ttname\"><a href=\"a01113.html#afac250ff4bc31d95fd2300202fa0e083\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::GetVertexFaceLocalIndices</a></div><div class=\"ttdeci\">ConstLocalIndexArray GetVertexFaceLocalIndices(Index v) const</div><div class=\"ttdoc\">Access the local indices of a vertex with respect to its incident faces.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00821_source.html#l00111\">topologyLevel.h:111</a></div></div>\n+<div class=\"ttc\" id=\"aa01121_html\"><div class=\"ttname\"><a href=\"a01121.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner</a></div><div class=\"ttdoc\">Stores topology data for a specified set of refinement options.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00051\">topologyRefiner.h:51</a></div></div>\n+<div class=\"ttc\" id=\"aa01333_html_a11fcd51ef86118f65e603c1474377a78\"><div class=\"ttname\"><a href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::Rule</a></div><div class=\"ttdeci\">Rule</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00869_source.html#l00082\">crease.h:82</a></div></div>\n+<div class=\"ttc\" id=\"aa01353_html\"><div class=\"ttname\"><a href=\"a01353.html\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00797_source.html#l00053\">array.h:53</a></div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00821.html\">cpuGLVertexBuffer.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7f420b72a822828cfa8b0561c695a5cc.html\">far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00821.html\">topologyLevel.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-cpuGLVertexBuffer.h\n+topologyLevel.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2013 Pixar\n+2// Copyright 2015 DreamWorks Animation LLC.\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -23,95 +23,387 @@\n 17//\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n-24\n-25#ifndef OPENSUBDIV3_OSD_CPU_GL_VERTEX_BUFFER_H\n-26#define OPENSUBDIV3_OSD_CPU_GL_VERTEX_BUFFER_H\n-27\n-28#include \"../version.h\"\n-29\n-30#include <cstddef>\n-31#include \"../osd/opengl.h\"\n+24#ifndef OPENSUBDIV3_FAR_TOPOLOGY_LEVEL_H\n+25#define OPENSUBDIV3_FAR_TOPOLOGY_LEVEL_H\n+26\n+27#include \"../version.h\"\n+28\n+29#include \"../vtr/level.h\"\n+30#include \"../vtr/refinement.h\"\n+31#include \"../far/types.h\"\n 32\n-33namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-34namespace OPENSUBDIV_VERSION {\n-35\n-36namespace Osd {\n+33#include <vector>\n+34\n+35namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+36namespace OPENSUBDIV_VERSION {\n 37\n-_\b4_\b7class _\bC_\bp_\bu_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br {\n-48public:\n-_\b5_\b0 static _\bC_\bp_\bu_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br * _\bC_\br_\be_\ba_\bt_\be(int numElements, int numVertices,\n-51 void *deviceContext = NULL);\n-52\n-_\b5_\b4 _\b~_\bC_\bp_\bu_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br();\n-55\n-_\b5_\b8 void _\bU_\bp_\bd_\ba_\bt_\be_\bD_\ba_\bt_\ba(const float *src, int startVertex, int numVertices,\n-59 void *deviceContext = NULL);\n+38namespace Far {\n+39\n+_\b4_\b9class _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl {\n+50\n+51public:\n+53\n 60\n-_\b6_\b2 int _\bG_\be_\bt_\bN_\bu_\bm_\bE_\bl_\be_\bm_\be_\bn_\bt_\bs() const;\n+_\b6_\b2 int _\bG_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs() const { return _level->getNumVertices(); }\n 63\n-_\b6_\b5 int _\bG_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs() const;\n+_\b6_\b5 int _\bG_\be_\bt_\bN_\bu_\bm_\bF_\ba_\bc_\be_\bs() const { return _level->getNumFaces(); }\n 66\n-_\b6_\b9 float * _\bB_\bi_\bn_\bd_\bC_\bp_\bu_\bB_\bu_\bf_\bf_\be_\br();\n-70\n-_\b7_\b3 GLuint _\bB_\bi_\bn_\bd_\bV_\bB_\bO(void *deviceContext = NULL);\n-74\n-75protected:\n-_\b7_\b7 _\bC_\bp_\bu_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br(int numElements, int numVertices);\n-78\n-_\b8_\b0 bool _\ba_\bl_\bl_\bo_\bc_\ba_\bt_\be();\n-81\n-82private:\n-83 int _numElements;\n-84 int _numVertices;\n-85 GLuint _vbo;\n-86 float *_cpuBuffer;\n-87 bool _dataDirty;\n-88};\n-89\n-90} // end namespace Osd\n+_\b6_\b8 int _\bG_\be_\bt_\bN_\bu_\bm_\bE_\bd_\bg_\be_\bs() const { return _level->getNumEdges(); }\n+69\n+_\b7_\b1 int _\bG_\be_\bt_\bN_\bu_\bm_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\bi_\bc_\be_\bs() const { return _level->getNumFaceVerticesTotal(); }\n+73\n+75\n+90 //\n 91\n-92} // end namespace OPENSUBDIV_VERSION\n-93using namespace OPENSUBDIV_VERSION;\n+_\b9_\b3 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bG_\be_\bt_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\bi_\bc_\be_\bs(_\bI_\bn_\bd_\be_\bx f) const { return _level-\n+>getFaceVertices(f); }\n 94\n-95} // end namespace OpenSubdiv\n-96\n-97#endif // OPENSUBDIV3_OSD_CPU_GL_VERTEX_BUFFER_H\n+_\b9_\b6 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bG_\be_\bt_\bF_\ba_\bc_\be_\bE_\bd_\bg_\be_\bs(_\bI_\bn_\bd_\be_\bx f) const { return _level->getFaceEdges\n+(f); }\n+97\n+_\b9_\b9 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bG_\be_\bt_\bE_\bd_\bg_\be_\bV_\be_\br_\bt_\bi_\bc_\be_\bs(_\bI_\bn_\bd_\be_\bx e) const { return _level-\n+>getEdgeVertices(e); }\n+100\n+_\b1_\b0_\b2 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bG_\be_\bt_\bE_\bd_\bg_\be_\bF_\ba_\bc_\be_\bs(_\bI_\bn_\bd_\be_\bx e) const { return _level->getEdgeFaces\n+(e); }\n+103\n+_\b1_\b0_\b5 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bF_\ba_\bc_\be_\bs(_\bI_\bn_\bd_\be_\bx v) const { return _level-\n+>getVertexFaces(v); }\n+106\n+_\b1_\b0_\b8 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bE_\bd_\bg_\be_\bs(_\bI_\bn_\bd_\be_\bx v) const { return _level-\n+>getVertexEdges(v); }\n+109\n+_\b1_\b1_\b1 _\bC_\bo_\bn_\bs_\bt_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bF_\ba_\bc_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\bi_\bc_\be_\bs(_\bI_\bn_\bd_\be_\bx v) const { return\n+_level->getVertexFaceLocalIndices(v); }\n+112\n+_\b1_\b1_\b4 _\bC_\bo_\bn_\bs_\bt_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bE_\bd_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\bi_\bc_\be_\bs(_\bI_\bn_\bd_\be_\bx v) const { return\n+_level->getVertexEdgeLocalIndices(v); }\n+115\n+_\b1_\b1_\b7 _\bC_\bo_\bn_\bs_\bt_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bG_\be_\bt_\bE_\bd_\bg_\be_\bF_\ba_\bc_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\bi_\bc_\be_\bs(_\bI_\bn_\bd_\be_\bx e) const { return\n+_level->getEdgeFaceLocalIndices(e); }\n+118\n+_\b1_\b2_\b0 _\bI_\bn_\bd_\be_\bx _\bF_\bi_\bn_\bd_\bE_\bd_\bg_\be(_\bI_\bn_\bd_\be_\bx v0, _\bI_\bn_\bd_\be_\bx v1) const { return _level->findEdge(v0, v1);\n+}\n+122\n+124\n+126\n+_\b1_\b2_\b8 bool _\bI_\bs_\bE_\bd_\bg_\be_\bN_\bo_\bn_\bM_\ba_\bn_\bi_\bf_\bo_\bl_\bd(_\bI_\bn_\bd_\be_\bx e) const { return _level->isEdgeNonManifold\n+(e); }\n+129\n+_\b1_\b3_\b1 bool _\bI_\bs_\bV_\be_\br_\bt_\be_\bx_\bN_\bo_\bn_\bM_\ba_\bn_\bi_\bf_\bo_\bl_\bd(_\bI_\bn_\bd_\be_\bx v) const { return _level-\n+>isVertexNonManifold(v); }\n+132\n+_\b1_\b3_\b4 bool _\bI_\bs_\bE_\bd_\bg_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by(_\bI_\bn_\bd_\be_\bx e) const { return _level->getEdgeTag\n+(e)._boundary; }\n+135\n+_\b1_\b3_\b7 bool _\bI_\bs_\bV_\be_\br_\bt_\be_\bx_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by(_\bI_\bn_\bd_\be_\bx v) const { return _level->getVertexTag\n+(v)._boundary; }\n+138\n+_\b1_\b4_\b0 bool _\bI_\bs_\bV_\be_\br_\bt_\be_\bx_\bC_\bo_\br_\bn_\be_\br(_\bI_\bn_\bd_\be_\bx v) const { return (_level->getNumVertexFaces(v)\n+== 1); }\n+141\n+_\b1_\b6_\b2 bool _\bI_\bs_\bV_\be_\br_\bt_\be_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be_\bR_\be_\bg_\bu_\bl_\ba_\br(_\bI_\bn_\bd_\be_\bx v) const { return !_level->getVertexTag\n+(v)._xordinary || _\bI_\bs_\bV_\be_\br_\bt_\be_\bx_\bC_\bo_\br_\bn_\be_\br(v); }\n+164\n+166\n+171\n+_\b1_\b7_\b3 float _\bG_\be_\bt_\bE_\bd_\bg_\be_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs(_\bI_\bn_\bd_\be_\bx e) const { return _level->getEdgeSharpness(e);\n+}\n+174\n+_\b1_\b7_\b6 float _\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs(_\bI_\bn_\bd_\be_\bx v) const { return _level->getVertexSharpness\n+(v); }\n+177\n+_\b1_\b7_\b9 bool _\bI_\bs_\bE_\bd_\bg_\be_\bI_\bn_\bf_\bS_\bh_\ba_\br_\bp(_\bI_\bn_\bd_\be_\bx e) const { return _level->getEdgeTag\n+(e)._infSharp; }\n+180\n+_\b1_\b8_\b2 bool _\bI_\bs_\bV_\be_\br_\bt_\be_\bx_\bI_\bn_\bf_\bS_\bh_\ba_\br_\bp(_\bI_\bn_\bd_\be_\bx v) const { return _level->getVertexTag\n+(v)._infSharp; }\n+183\n+_\b1_\b8_\b5 bool _\bI_\bs_\bE_\bd_\bg_\be_\bS_\be_\bm_\bi_\bS_\bh_\ba_\br_\bp(_\bI_\bn_\bd_\be_\bx e) const { return _level->getEdgeTag\n+(e)._semiSharp; }\n+186\n+_\b1_\b8_\b8 bool _\bI_\bs_\bV_\be_\br_\bt_\be_\bx_\bS_\be_\bm_\bi_\bS_\bh_\ba_\br_\bp(_\bI_\bn_\bd_\be_\bx v) const { return _level->getVertexTag\n+(v)._semiSharp; }\n+189\n+_\b1_\b9_\b1 bool _\bI_\bs_\bF_\ba_\bc_\be_\bH_\bo_\bl_\be(_\bI_\bn_\bd_\be_\bx f) const { return _level->isFaceHole(f); }\n+192\n+_\b1_\b9_\b4 _\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be _\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bR_\bu_\bl_\be(_\bI_\bn_\bd_\be_\bx v) const { return _level-\n+>getVertexRule(v); }\n+196\n+198\n+228\n+_\b2_\b3_\b0 int _\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs() const { return _level->getNumFVarChannels(); }\n+231\n+_\b2_\b3_\b4 int _\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bs(int channel = 0) const { return _level-\n+>getNumFVarValues(channel); }\n+235\n+_\b2_\b3_\b7 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bG_\be_\bt_\bF_\ba_\bc_\be_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bs(_\bI_\bn_\bd_\be_\bx f, int channel = 0) const {\n+238 return _level->getFaceFVarValues(f, channel);\n+239 }\n+240\n+_\b2_\b4_\b2 bool _\bD_\bo_\be_\bs_\bV_\be_\br_\bt_\be_\bx_\bF_\bV_\ba_\br_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bM_\ba_\bt_\bc_\bh(_\bI_\bn_\bd_\be_\bx v, int channel = 0) const {\n+243 return _level->doesVertexFVarTopologyMatch(v, channel);\n+244 }\n+245\n+_\b2_\b4_\b7 bool _\bD_\bo_\be_\bs_\bE_\bd_\bg_\be_\bF_\bV_\ba_\br_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bM_\ba_\bt_\bc_\bh(_\bI_\bn_\bd_\be_\bx e, int channel = 0) const {\n+248 return _level->doesEdgeFVarTopologyMatch(e, channel);\n+249 }\n+250\n+_\b2_\b5_\b2 bool _\bD_\bo_\be_\bs_\bF_\ba_\bc_\be_\bF_\bV_\ba_\br_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bM_\ba_\bt_\bc_\bh(_\bI_\bn_\bd_\be_\bx f, int channel = 0) const {\n+253 return _level->doesFaceFVarTopologyMatch(f, channel);\n+254 }\n+255\n+257\n+259\n+260\n+_\b2_\b6_\b2 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bG_\be_\bt_\bF_\ba_\bc_\be_\bC_\bh_\bi_\bl_\bd_\bF_\ba_\bc_\be_\bs(_\bI_\bn_\bd_\be_\bx f) const { return _refToChild-\n+>getFaceChildFaces(f); }\n+263\n+_\b2_\b6_\b5 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bG_\be_\bt_\bF_\ba_\bc_\be_\bC_\bh_\bi_\bl_\bd_\bE_\bd_\bg_\be_\bs(_\bI_\bn_\bd_\be_\bx f) const { return _refToChild-\n+>getFaceChildEdges(f); }\n+266\n+_\b2_\b6_\b8 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bG_\be_\bt_\bE_\bd_\bg_\be_\bC_\bh_\bi_\bl_\bd_\bE_\bd_\bg_\be_\bs(_\bI_\bn_\bd_\be_\bx e) const { return _refToChild-\n+>getEdgeChildEdges(e); }\n+269\n+_\b2_\b7_\b1 _\bI_\bn_\bd_\be_\bx _\bG_\be_\bt_\bF_\ba_\bc_\be_\bC_\bh_\bi_\bl_\bd_\bV_\be_\br_\bt_\be_\bx( _\bI_\bn_\bd_\be_\bx f) const { return _refToChild-\n+>getFaceChildVertex(f); }\n+272\n+_\b2_\b7_\b4 _\bI_\bn_\bd_\be_\bx _\bG_\be_\bt_\bE_\bd_\bg_\be_\bC_\bh_\bi_\bl_\bd_\bV_\be_\br_\bt_\be_\bx( _\bI_\bn_\bd_\be_\bx e) const { return _refToChild-\n+>getEdgeChildVertex(e); }\n+275\n+_\b2_\b7_\b7 _\bI_\bn_\bd_\be_\bx _\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bC_\bh_\bi_\bl_\bd_\bV_\be_\br_\bt_\be_\bx(_\bI_\bn_\bd_\be_\bx v) const { return _refToChild-\n+>getVertexChildVertex(v); }\n+278\n+_\b2_\b8_\b0 _\bI_\bn_\bd_\be_\bx _\bG_\be_\bt_\bF_\ba_\bc_\be_\bP_\ba_\br_\be_\bn_\bt_\bF_\ba_\bc_\be(_\bI_\bn_\bd_\be_\bx f) const { return _refToParent-\n+>getChildFaceParentFace(f); }\n+282\n+284\n+285\n+_\b2_\b8_\b6 bool _\bV_\ba_\bl_\bi_\bd_\ba_\bt_\be_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by() const { return _level->validateTopology(); }\n+_\b2_\b8_\b7 void _\bP_\br_\bi_\bn_\bt_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by(bool children = true) const { _level->print((children &&\n+_refToChild) ? _refToChild : 0); }\n+289\n+290\n+291private:\n+_\b2_\b9_\b2 friend class _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br;\n+293\n+294 Vtr::internal::Level const * _level;\n+295 Vtr::internal::Refinement const * _refToParent;\n+296 Vtr::internal::Refinement const * _refToChild;\n+297\n+298public:\n+299 // Not intended for public use, but required by std::vector, etc...\n+_\b3_\b0_\b0 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl() { }\n+_\b3_\b0_\b1 _\b~_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl() { }\n+302};\n+303\n+304} // end namespace Far\n+305\n+306} // end namespace OPENSUBDIV_VERSION\n+307using namespace OPENSUBDIV_VERSION;\n+308} // end namespace OpenSubdiv\n+309\n+310#endif /* OPENSUBDIV3_FAR_TOPOLOGY_LEVEL_H */\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-Concrete vertex buffer class for cpu subdivision and OpenGL drawing.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh_\b:_\b4_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bC_\bp_\bu_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-CpuGLVertexBuffer(int numElements, int numVertices)\n-Constructor.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bB_\bi_\bn_\bd_\bV_\bB_\bO\n-GLuint BindVBO(void *deviceContext=NULL)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bE_\bl_\be_\bm_\be_\bn_\bt_\bs\n-int GetNumElements() const\n-Returns how many elements defined in this vertex buffer.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bU_\bp_\bd_\ba_\bt_\be_\bD_\ba_\bt_\ba\n-void UpdateData(const float *src, int startVertex, int numVertices, void\n-*deviceContext=NULL)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx\n+Vtr::Index Index\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b4_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl\n+An interface for accessing data in a specific level of a refined topology\n+hierarchy.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b4_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bG_\be_\bt_\bF_\ba_\bc_\be_\bP_\ba_\br_\be_\bn_\bt_\bF_\ba_\bc_\be\n+Index GetFaceParentFace(Index f) const\n+Return the parent face (in the previous level) of a given face.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b2_\b8_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl\n+TopologyLevel()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b3_\b0_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bI_\bs_\bV_\be_\br_\bt_\be_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be_\bR_\be_\bg_\bu_\bl_\ba_\br\n+bool IsVertexValenceRegular(Index v) const\n+Return if the valence of the vertex is regular (must be manifold)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b1_\b6_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bG_\be_\bt_\bE_\bd_\bg_\be_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs\n+float GetEdgeSharpness(Index e) const\n+Return the sharpness assigned a given edge.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b1_\b7_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bD_\bo_\be_\bs_\bF_\ba_\bc_\be_\bF_\bV_\ba_\br_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bM_\ba_\bt_\bc_\bh\n+bool DoesFaceFVarTopologyMatch(Index f, int channel=0) const\n+Return if face-varying topology around a face matches.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b2_\b5_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bR_\bu_\bl_\be\n+Sdc::Crease::Rule GetVertexRule(Index v) const\n+Return the subdivision rule assigned a given vertex specific to this level.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b1_\b9_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bI_\bs_\bV_\be_\br_\bt_\be_\bx_\bC_\bo_\br_\bn_\be_\br\n+bool IsVertexCorner(Index v) const\n+Return if the vertex is a corner (only one incident face)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b1_\b4_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bC_\bh_\bi_\bl_\bd_\bV_\be_\br_\bt_\be_\bx\n+Index GetVertexChildVertex(Index v) const\n+Return the child vertex (in the next level) of a given vertex.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b2_\b7_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bG_\be_\bt_\bE_\bd_\bg_\be_\bF_\ba_\bc_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\bi_\bc_\be_\bs\n+ConstLocalIndexArray GetEdgeFaceLocalIndices(Index e) const\n+Access the local indices of an edge with respect to its incident faces.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b1_\b1_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bG_\be_\bt_\bF_\ba_\bc_\be_\bC_\bh_\bi_\bl_\bd_\bE_\bd_\bg_\be_\bs\n+ConstIndexArray GetFaceChildEdges(Index f) const\n+Access the child edges (in the next level) of a given face.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b2_\b6_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bD_\bo_\be_\bs_\bE_\bd_\bg_\be_\bF_\bV_\ba_\br_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bM_\ba_\bt_\bc_\bh\n+bool DoesEdgeFVarTopologyMatch(Index e, int channel=0) const\n+Return if face-varying topology across the edge only matches.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b2_\b4_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bP_\br_\bi_\bn_\bt_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by\n+void PrintTopology(bool children=true) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b2_\b8_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bG_\be_\bt_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n+ConstIndexArray GetFaceVertices(Index f) const\n+Access the vertices incident a given face.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b9_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bG_\be_\bt_\bF_\ba_\bc_\be_\bC_\bh_\bi_\bl_\bd_\bF_\ba_\bc_\be_\bs\n+ConstIndexArray GetFaceChildFaces(Index f) const\n+Access the child faces (in the next level) of a given face.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b2_\b6_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bE_\bd_\bg_\be_\bs\n+int GetNumEdges() const\n+Return the number of edges in this level.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b6_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bV_\ba_\bl_\bi_\bd_\ba_\bt_\be_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by\n+bool ValidateTopology() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b2_\b8_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bI_\bs_\bE_\bd_\bg_\be_\bN_\bo_\bn_\bM_\ba_\bn_\bi_\bf_\bo_\bl_\bd\n+bool IsEdgeNonManifold(Index e) const\n+Return if the edge is non-manifold.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b1_\b2_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bI_\bs_\bF_\ba_\bc_\be_\bH_\bo_\bl_\be\n+bool IsFaceHole(Index f) const\n+Return if a given face has been tagged as a hole.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b1_\b9_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bE_\bd_\bg_\be_\bs\n+ConstIndexArray GetVertexEdges(Index v) const\n+Access the edges incident a given vertex.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b1_\b0_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bG_\be_\bt_\bF_\ba_\bc_\be_\bC_\bh_\bi_\bl_\bd_\bV_\be_\br_\bt_\be_\bx\n+Index GetFaceChildVertex(Index f) const\n+Return the child vertex (in the next level) of a given face.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b2_\b7_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bD_\bo_\be_\bs_\bV_\be_\br_\bt_\be_\bx_\bF_\bV_\ba_\br_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bM_\ba_\bt_\bc_\bh\n+bool DoesVertexFVarTopologyMatch(Index v, int channel=0) const\n+Return if face-varying topology around a vertex matches.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b2_\b4_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bG_\be_\bt_\bE_\bd_\bg_\be_\bC_\bh_\bi_\bl_\bd_\bE_\bd_\bg_\be_\bs\n+ConstIndexArray GetEdgeChildEdges(Index e) const\n+Access the child edges (in the next level) of a given edge.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b2_\b6_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bI_\bs_\bE_\bd_\bg_\be_\bI_\bn_\bf_\bS_\bh_\ba_\br_\bp\n+bool IsEdgeInfSharp(Index e) const\n+Return if the edge is infinitely-sharp.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b1_\b7_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bF_\ba_\bc_\be_\bs\n+ConstIndexArray GetVertexFaces(Index v) const\n+Access the faces incident a given vertex.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b1_\b0_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bF_\bi_\bn_\bd_\bE_\bd_\bg_\be\n+Index FindEdge(Index v0, Index v1) const\n+Identify the edge matching the given vertex pair.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b1_\b2_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bE_\bd_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\bi_\bc_\be_\bs\n+ConstLocalIndexArray GetVertexEdgeLocalIndices(Index v) const\n+Access the local indices of a vertex with respect to its incident edges.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b1_\b1_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bG_\be_\bt_\bF_\ba_\bc_\be_\bE_\bd_\bg_\be_\bs\n+ConstIndexArray GetFaceEdges(Index f) const\n+Access the edges incident a given face.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b9_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bF_\ba_\bc_\be_\bs\n+int GetNumFaces() const\n+Return the number of faces in this level.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b6_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bI_\bs_\bV_\be_\br_\bt_\be_\bx_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by\n+bool IsVertexBoundary(Index v) const\n+Return if the vertex is on a boundary (at least one incident boundary edge)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b1_\b3_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs\n+int GetNumFVarChannels() const\n+Return the number of face-varying channels (should be same for all levels)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b2_\b3_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n int GetNumVertices() const\n-Returns how many vertices allocated in this vertex buffer.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static CpuGLVertexBuffer * Create(int numElements, int numVertices, void\n-*deviceContext=NULL)\n-Creator. Returns NULL if error.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\ba_\bl_\bl_\bo_\bc_\ba_\bt_\be\n-bool allocate()\n-Allocates VBO for this buffer. Returns true if success.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bB_\bi_\bn_\bd_\bC_\bp_\bu_\bB_\bu_\bf_\bf_\be_\br\n-float * BindCpuBuffer()\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\b~_\bC_\bp_\bu_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-~CpuGLVertexBuffer()\n-Destructor.\n+Return the number of vertices in this level.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b6_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bG_\be_\bt_\bE_\bd_\bg_\be_\bF_\ba_\bc_\be_\bs\n+ConstIndexArray GetEdgeFaces(Index e) const\n+Access the faces incident a given edge.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b1_\b0_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bG_\be_\bt_\bF_\ba_\bc_\be_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bs\n+ConstIndexArray GetFaceFVarValues(Index f, int channel=0) const\n+Access the face-varying values associated with a particular face.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b2_\b3_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bG_\be_\bt_\bE_\bd_\bg_\be_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n+ConstIndexArray GetEdgeVertices(Index e) const\n+Access the vertices incident a given edge.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b9_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bI_\bs_\bE_\bd_\bg_\be_\bS_\be_\bm_\bi_\bS_\bh_\ba_\br_\bp\n+bool IsEdgeSemiSharp(Index e) const\n+Return if the edge is semi-sharp.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b1_\b8_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\b~_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl\n+~TopologyLevel()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b3_\b0_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs\n+float GetVertexSharpness(Index v) const\n+Return the sharpness assigned a given vertex.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b1_\b7_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bG_\be_\bt_\bE_\bd_\bg_\be_\bC_\bh_\bi_\bl_\bd_\bV_\be_\br_\bt_\be_\bx\n+Index GetEdgeChildVertex(Index e) const\n+Return the child vertex (in the next level) of a given edge.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b2_\b7_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bI_\bs_\bV_\be_\br_\bt_\be_\bx_\bS_\be_\bm_\bi_\bS_\bh_\ba_\br_\bp\n+bool IsVertexSemiSharp(Index v) const\n+Return if the vertex is semi-sharp.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b1_\b8_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n+int GetNumFaceVertices() const\n+Return the total number of face-vertices, i.e. the sum of all vertices for all\n+faces.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b7_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bI_\bs_\bV_\be_\br_\bt_\be_\bx_\bN_\bo_\bn_\bM_\ba_\bn_\bi_\bf_\bo_\bl_\bd\n+bool IsVertexNonManifold(Index v) const\n+Return if the vertex is non-manifold.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b1_\b3_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bI_\bs_\bE_\bd_\bg_\be_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by\n+bool IsEdgeBoundary(Index e) const\n+Return if the edge is a boundary (only one incident face)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b1_\b3_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bI_\bs_\bV_\be_\br_\bt_\be_\bx_\bI_\bn_\bf_\bS_\bh_\ba_\br_\bp\n+bool IsVertexInfSharp(Index v) const\n+Return if the vertex is infinitely-sharp.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b1_\b8_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bs\n+int GetNumFVarValues(int channel=0) const\n+Return the total number of face-varying values in a particular channel (the\n+upper bound of a face-var...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b2_\b3_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bF_\ba_\bc_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\bi_\bc_\be_\bs\n+ConstLocalIndexArray GetVertexFaceLocalIndices(Index v) const\n+Access the local indices of a vertex with respect to its incident faces.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b1_\b1_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br\n+Stores topology data for a specified set of refinement options.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b5_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be\n+Rule\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b8_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b5_\b3\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bc_\bp_\bu_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh\n+    * _\bf_\ba_\br\n+    * _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00824.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00824.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/mtlCommon.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/far/stencilTableFactory.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -90,40 +90,58 @@\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> &#124;\n <a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">mtlCommon.h File Reference</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">stencilTableFactory.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &lt;cstddef&gt;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00842_source.html\">../far/patchTable.h</a>&quot;</code><br />\n+<code>#include &lt;vector&gt;</code><br />\n </div>\n <p><a href=\"a00824_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01285.html\">MTLContext</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01045.html\">StencilTableFactoryReal&lt; REAL &gt;</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">A specialized factory for <a class=\"el\" href=\"a01065.html\" title=\"Stencil table class wrapping the template for compatibility.\">StencilTable</a>.  <a href=\"a01045.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01085.html\">StencilTableFactoryReal&lt; REAL &gt;::Options</a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01049.html\">LimitStencilTableFactoryReal&lt; REAL &gt;</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">A specialized factory for <a class=\"el\" href=\"a01081.html\" title=\"Limit stencil table class wrapping the template for compatibility.\">LimitStencilTable</a>.  <a href=\"a01049.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01089.html\">LimitStencilTableFactoryReal&lt; REAL &gt;::Options</a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01093.html\">LimitStencilTableFactoryReal&lt; REAL &gt;::LocationArray</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Descriptor for limit surface locations.  <a href=\"a01093.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01097.html\">StencilTableFactory</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"a01057.html\" title=\"Vertex stencil class wrapping the template for compatibility.\">Stencil</a> table factory class wrapping the template for compatibility.  <a href=\"a01097.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01101.html\">LimitStencilTableFactory</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"a01057.html\" title=\"Vertex stencil class wrapping the template for compatibility.\">Stencil</a> table factory class wrapping the template for compatibility.  <a href=\"a01101.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n+<tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00824.html\">mtlCommon.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7f420b72a822828cfa8b0561c695a5cc.html\">far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00824.html\">stencilTableFactory.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,23 +1,43 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-mtlCommon.h File Reference\n+stencilTableFactory.h File Reference\n #include \"../version.h\"\n-#include <cstddef>\n+#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh\"\n+#include <vector>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt\n+ class \u00a0 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b<_\b _\bR_\bE_\bA_\bL_\b _\b>\n+\u00a0        A specialized factory for _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b<_\b _\bR_\bE_\bA_\bL_\b _\b>_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n+\u00a0\n+ class \u00a0 _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b<_\b _\bR_\bE_\bA_\bL_\b _\b>\n+\u00a0        A specialized factory for _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b<_\b _\bR_\bE_\bA_\bL_\b _\b>_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n+\u00a0\n+struct \u00a0 _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b<_\b _\bR_\bE_\bA_\bL_\b _\b>_\b:_\b:_\bL_\bo_\bc_\ba_\bt_\bi_\bo_\bn_\bA_\br_\br_\ba_\by\n+\u00a0        Descriptor for limit surface locations. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+ class \u00a0 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by\n+\u00a0        _\bS_\bt_\be_\bn_\bc_\bi_\bl table factory class wrapping the template for compatibility.\n+         _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+ class \u00a0 _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by\n+\u00a0        _\bS_\bt_\be_\bn_\bc_\bi_\bl table factory class wrapping the template for compatibility.\n+         _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bm_\bt_\bl_\bC_\bo_\bm_\bm_\bo_\bn_\b._\bh\n+    * _\bf_\ba_\br\n+    * _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00824.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00824.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,3 +1,9 @@\n var a00824 = [\n-    [\"MTLContext\", \"a01285.html\", \"a01285\"]\n+    [\"StencilTableFactoryReal< REAL >\", \"a01045.html\", \"a01045\"],\n+    [\"Options\", \"a01085.html\", \"a01085\"],\n+    [\"LimitStencilTableFactoryReal< REAL >\", \"a01049.html\", \"a01049\"],\n+    [\"Options\", \"a01089.html\", \"a01089\"],\n+    [\"LocationArray\", \"a01093.html\", \"a01093\"],\n+    [\"StencilTableFactory\", \"a01097.html\", null],\n+    [\"LimitStencilTableFactory\", \"a01101.html\", null]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00824_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00824_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/mtlCommon.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/far/stencilTableFactory.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,15 +92,15 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">mtlCommon.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">stencilTableFactory.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00824.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2013 Pixar</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n@@ -119,53 +119,357 @@\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_MTL_COMMON_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_MTL_COMMON_H</span></div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_FAR_STENCILTABLE_FACTORY_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_FAR_STENCILTABLE_FACTORY_H</span></div>\n <div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n <div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n <div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &lt;cstddef&gt;</span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../far/patchTable.h&quot;</span></div>\n <div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"keyword\">@protocol </span>MTLDevice;</div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"keyword\">@protocol </span>MTLCommandQueue;</div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span> </div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span> </div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"keyword\">namespace </span>Osd {</div>\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00040\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01285.html\">   40</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a> {</div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01285.html#a7d70f5acf4efd89092645b4c44e480cf\">   42</a></span>        id&lt;MTLDevice&gt; <a class=\"code hl_variable\" href=\"a01285.html#a7d70f5acf4efd89092645b4c44e480cf\">device</a> = <span class=\"keyword\">nullptr</span>;</div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01285.html#a66809eb79c7e79a491fd8c889465166b\">   43</a></span>        id&lt;MTLCommandQueue&gt; <a class=\"code hl_variable\" href=\"a01285.html#a66809eb79c7e79a491fd8c889465166b\">commandQueue</a> = <span class=\"keyword\">nullptr</span>;</div>\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span> </div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span>} <span class=\"comment\">// end namespace Osd</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">namespace </span>Far {</div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span> </div>\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span><span class=\"keyword\">class </span>TopologyRefiner;</div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span> </div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt; <span class=\"keyword\">class </span>StencilReal;</div>\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt; <span class=\"keyword\">class </span>StencilTableReal;</div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span> </div>\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt; <span class=\"keyword\">class </span>LimitStencilReal;</div>\n+<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt; <span class=\"keyword\">class </span>LimitStencilTableReal;</div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span> </div>\n <div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span> </div>\n-<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span> </div>\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00051\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01045.html\">   51</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01045.html\">StencilTableFactoryReal</a> {</div>\n <div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span> </div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">//OPENSUBDIV3_OSD_MTL_COMMON_H</span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa01285_html\"><div class=\"ttname\"><a href=\"a01285.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLContext</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00824_source.html#l00040\">mtlCommon.h:40</a></div></div>\n-<div class=\"ttc\" id=\"aa01285_html_a66809eb79c7e79a491fd8c889465166b\"><div class=\"ttname\"><a href=\"a01285.html#a66809eb79c7e79a491fd8c889465166b\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLContext::commandQueue</a></div><div class=\"ttdeci\">id&lt; MTLCommandQueue &gt; commandQueue</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00824_source.html#l00043\">mtlCommon.h:43</a></div></div>\n-<div class=\"ttc\" id=\"aa01285_html_a7d70f5acf4efd89092645b4c44e480cf\"><div class=\"ttname\"><a href=\"a01285.html#a7d70f5acf4efd89092645b4c44e480cf\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLContext::device</a></div><div class=\"ttdeci\">id&lt; MTLDevice &gt; device</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00824_source.html#l00042\">mtlCommon.h:42</a></div></div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00055\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01045.html#a46c8a310cf4c094f8c80e1cb8dc1f911\">   55</a></span>    <span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"a01045.html#a46c8a310cf4c094f8c80e1cb8dc1f911\">Mode</a> {</div>\n+<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01045.html#a46c8a310cf4c094f8c80e1cb8dc1f911ab491ed84aea170a330914a3f88b16d50\">   56</a></span>        <a class=\"code hl_enumvalue\" href=\"a01045.html#a46c8a310cf4c094f8c80e1cb8dc1f911ab491ed84aea170a330914a3f88b16d50\">INTERPOLATE_VERTEX</a>=0,           </div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01045.html#a46c8a310cf4c094f8c80e1cb8dc1f911ab18c20abfc04611ab0aec5e1c81bb2ab\">   57</a></span>        <a class=\"code hl_enumvalue\" href=\"a01045.html#a46c8a310cf4c094f8c80e1cb8dc1f911ab18c20abfc04611ab0aec5e1c81bb2ab\">INTERPOLATE_VARYING</a>,            </div>\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span>        <a class=\"code hl_enumvalue\" href=\"a01045.html#a46c8a310cf4c094f8c80e1cb8dc1f911a4178369e390d2596ce60676642fec077\">INTERPOLATE_FACE_VARYING</a>        </div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01045.html#a46c8a310cf4c094f8c80e1cb8dc1f911a4178369e390d2596ce60676642fec077\">   59</a></span>    };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00061\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01085.html\">   61</a></span>    <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01085.html\">Options</a> {</div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00063\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01085.html#a28d39a844c3a37ab61d32ab7c6352f09\">   63</a></span>        <a class=\"code hl_function\" href=\"a01085.html#a28d39a844c3a37ab61d32ab7c6352f09\">Options</a>() : <a class=\"code hl_variable\" href=\"a01085.html#ab7c383a49298cf060574242fe679378f\">interpolationMode</a>(<a class=\"code hl_enumvalue\" href=\"a01045.html#a46c8a310cf4c094f8c80e1cb8dc1f911ab491ed84aea170a330914a3f88b16d50\">INTERPOLATE_VERTEX</a>),</div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span>                    <a class=\"code hl_variable\" href=\"a01085.html#a73289d5e55adccde08afd7399a2357f2\">generateOffsets</a>(false),</div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span>                    <a class=\"code hl_variable\" href=\"a01085.html#a7091c369d67630320a623dbc4a2b34b7\">generateControlVerts</a>(false),</div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span>                    <a class=\"code hl_variable\" href=\"a01085.html#a55457e193a57e08a56663abf8cc838b4\">generateIntermediateLevels</a>(true),</div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span>                    <a class=\"code hl_variable\" href=\"a01085.html#a059c9b4a95b37faa88d1dd0fac0adc8d\">factorizeIntermediateLevels</a>(true),</div>\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span>                    <a class=\"code hl_variable\" href=\"a01085.html#a110477b0e61b09d8be1a472df34f6386\">maxLevel</a>(10),</div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span>                    <a class=\"code hl_variable\" href=\"a01085.html#a7cd8273eef086a749ce3d40063fb4a28\">fvarChannel</a>(0) { }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span> </div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01085.html#ab7c383a49298cf060574242fe679378f\">   71</a></span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"a01085.html#ab7c383a49298cf060574242fe679378f\">interpolationMode</a>           : 2, </div>\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01085.html#a73289d5e55adccde08afd7399a2357f2\">   72</a></span>                     <a class=\"code hl_variable\" href=\"a01085.html#a73289d5e55adccde08afd7399a2357f2\">generateOffsets</a>             : 1, </div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01085.html#a7091c369d67630320a623dbc4a2b34b7\">   73</a></span>                     <a class=\"code hl_variable\" href=\"a01085.html#a7091c369d67630320a623dbc4a2b34b7\">generateControlVerts</a>        : 1, </div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01085.html#a55457e193a57e08a56663abf8cc838b4\">   74</a></span>                     <a class=\"code hl_variable\" href=\"a01085.html#a55457e193a57e08a56663abf8cc838b4\">generateIntermediateLevels</a>  : 1, </div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01085.html#a059c9b4a95b37faa88d1dd0fac0adc8d\">   75</a></span>                     <a class=\"code hl_variable\" href=\"a01085.html#a059c9b4a95b37faa88d1dd0fac0adc8d\">factorizeIntermediateLevels</a> : 1, </div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01085.html#a110477b0e61b09d8be1a472df34f6386\">   78</a></span>                     <a class=\"code hl_variable\" href=\"a01085.html#a110477b0e61b09d8be1a472df34f6386\">maxLevel</a>                    : 4; </div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01085.html#a7cd8273eef086a749ce3d40063fb4a28\">   79</a></span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"a01085.html#a7cd8273eef086a749ce3d40063fb4a28\">fvarChannel</a>;                     </div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>    };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span> </div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01045.html#a0f706293d0b11df8ec9d06ce7e4b6bb2\">   94</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01061.html\">StencilTableReal&lt;REAL&gt;</a> <span class=\"keyword\">const</span> * <a class=\"code hl_function\" href=\"a01045.html#a0f706293d0b11df8ec9d06ce7e4b6bb2\">Create</a>(</div>\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span>                <a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> &amp; refiner, <a class=\"code hl_struct\" href=\"a01085.html\">Options</a> options = <a class=\"code hl_struct\" href=\"a01085.html\">Options</a>());</div>\n+<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span> </div>\n+<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span> </div>\n+<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01045.html#aecc6558dfbb8b7bb2c2a89150cb8340a\">  110</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01061.html\">StencilTableReal&lt;REAL&gt;</a> <span class=\"keyword\">const</span> * <a class=\"code hl_function\" href=\"a01045.html#aecc6558dfbb8b7bb2c2a89150cb8340a\">Create</a>(</div>\n+<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span>                <span class=\"keywordtype\">int</span> numTables, <a class=\"code hl_class\" href=\"a01061.html\">StencilTableReal&lt;REAL&gt;</a> <span class=\"keyword\">const</span> ** tables);</div>\n+<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span> </div>\n+<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span> </div>\n+<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01045.html#ac3115cc051309860811962d0b1fa9413\">  128</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01061.html\">StencilTableReal&lt;REAL&gt;</a> <span class=\"keyword\">const</span> * <a class=\"code hl_function\" href=\"a01045.html#ac3115cc051309860811962d0b1fa9413\">AppendLocalPointStencilTable</a>(</div>\n+<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span>                <a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> &amp;refiner,</div>\n+<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span>                <a class=\"code hl_class\" href=\"a01061.html\">StencilTableReal&lt;REAL&gt;</a> <span class=\"keyword\">const</span> *baseStencilTable,</div>\n+<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\">  131</span>                <a class=\"code hl_class\" href=\"a01061.html\">StencilTableReal&lt;REAL&gt;</a> <span class=\"keyword\">const</span> *localPointStencilTable,</div>\n+<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\">  132</span>                <span class=\"keywordtype\">bool</span> factorize = <span class=\"keyword\">true</span>);</div>\n+<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\">  133</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00148\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01045.html#abad17ff90d068c3fb121b6524a69dc04\">  148</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01061.html\">StencilTableReal&lt;REAL&gt;</a> <span class=\"keyword\">const</span> * <a class=\"code hl_function\" href=\"a01045.html#abad17ff90d068c3fb121b6524a69dc04\">AppendLocalPointStencilTableVarying</a>(</div>\n+<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\">  149</span>                <a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> &amp;refiner,</div>\n+<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\">  150</span>                <a class=\"code hl_class\" href=\"a01061.html\">StencilTableReal&lt;REAL&gt;</a> <span class=\"keyword\">const</span> *baseStencilTable,</div>\n+<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\">  151</span>                <a class=\"code hl_class\" href=\"a01061.html\">StencilTableReal&lt;REAL&gt;</a> <span class=\"keyword\">const</span> *localPointStencilTable,</div>\n+<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\">  152</span>                <span class=\"keywordtype\">bool</span> factorize = <span class=\"keyword\">true</span>) {</div>\n+<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\">  153</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01045.html#ac3115cc051309860811962d0b1fa9413\">AppendLocalPointStencilTable</a>(</div>\n+<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\">  154</span>                refiner, baseStencilTable, localPointStencilTable, factorize);</div>\n+<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\">  155</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\">  156</span> </div>\n+<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01045.html#a33b8f611576b3e0907832e571e4844f5\">  174</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01061.html\">StencilTableReal&lt;REAL&gt;</a> <span class=\"keyword\">const</span> * <a class=\"code hl_function\" href=\"a01045.html#a33b8f611576b3e0907832e571e4844f5\">AppendLocalPointStencilTableFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\">  175</span>                <a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> &amp;refiner,</div>\n+<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\">  176</span>                <a class=\"code hl_class\" href=\"a01061.html\">StencilTableReal&lt;REAL&gt;</a> <span class=\"keyword\">const</span> *baseStencilTable,</div>\n+<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span>                <a class=\"code hl_class\" href=\"a01061.html\">StencilTableReal&lt;REAL&gt;</a> <span class=\"keyword\">const</span> *localPointStencilTable,</div>\n+<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\">  178</span>                <span class=\"keywordtype\">int</span> channel = 0,</div>\n+<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\">  179</span>                <span class=\"keywordtype\">bool</span> factorize = <span class=\"keyword\">true</span>);</div>\n+<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\">  180</span> </div>\n+<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\">  181</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\">  182</span> </div>\n+<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\">  183</span>    <span class=\"comment\">// Generate stencils for the coarse control-vertices (single weight = 1.0f)</span></div>\n+<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\">  184</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> generateControlVertStencils(</div>\n+<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\">  185</span>                <span class=\"keywordtype\">int</span> numControlVerts,</div>\n+<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\">  186</span>                <a class=\"code hl_class\" href=\"a01053.html\">StencilReal&lt;REAL&gt;</a> &amp; dst);</div>\n+<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\">  187</span> </div>\n+<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\">  188</span>    <span class=\"comment\">// Internal method to splice local point stencils</span></div>\n+<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\">  189</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01061.html\">StencilTableReal&lt;REAL&gt;</a> <span class=\"keyword\">const</span> * appendLocalPointStencilTable(</div>\n+<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\">  190</span>                <a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> &amp;refiner,</div>\n+<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\">  191</span>                <a class=\"code hl_class\" href=\"a01061.html\">StencilTableReal&lt;REAL&gt;</a> <span class=\"keyword\">const</span> * baseStencilTable,</div>\n+<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\">  192</span>                <a class=\"code hl_class\" href=\"a01061.html\">StencilTableReal&lt;REAL&gt;</a> <span class=\"keyword\">const</span> * localPointStencilTable,</div>\n+<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\">  193</span>                <span class=\"keywordtype\">int</span> channel,</div>\n+<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\">  194</span>                <span class=\"keywordtype\">bool</span> factorize);</div>\n+<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\">  195</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\">  196</span> </div>\n+<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\">  208</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00209\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01049.html\">  209</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01049.html\">LimitStencilTableFactoryReal</a> {</div>\n+<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\">  210</span> </div>\n+<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\">  211</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00212\" name=\"l00212\"></a><span class=\"lineno\">  212</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00213\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01049.html#a46c8a310cf4c094f8c80e1cb8dc1f911\">  213</a></span>    <span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"a01049.html#a46c8a310cf4c094f8c80e1cb8dc1f911\">Mode</a> {</div>\n+<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01049.html#a46c8a310cf4c094f8c80e1cb8dc1f911ab491ed84aea170a330914a3f88b16d50\">  214</a></span>        <a class=\"code hl_enumvalue\" href=\"a01049.html#a46c8a310cf4c094f8c80e1cb8dc1f911ab491ed84aea170a330914a3f88b16d50\">INTERPOLATE_VERTEX</a>=0,           </div>\n+<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01049.html#a46c8a310cf4c094f8c80e1cb8dc1f911ab18c20abfc04611ab0aec5e1c81bb2ab\">  215</a></span>        <a class=\"code hl_enumvalue\" href=\"a01049.html#a46c8a310cf4c094f8c80e1cb8dc1f911ab18c20abfc04611ab0aec5e1c81bb2ab\">INTERPOLATE_VARYING</a>,            </div>\n+<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\">  216</span>        <a class=\"code hl_enumvalue\" href=\"a01049.html#a46c8a310cf4c094f8c80e1cb8dc1f911a4178369e390d2596ce60676642fec077\">INTERPOLATE_FACE_VARYING</a>        </div>\n+<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01049.html#a46c8a310cf4c094f8c80e1cb8dc1f911a4178369e390d2596ce60676642fec077\">  217</a></span>    };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\">  218</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00219\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01089.html\">  219</a></span>    <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01089.html\">Options</a> {</div>\n+<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\">  220</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00221\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01089.html#a28d39a844c3a37ab61d32ab7c6352f09\">  221</a></span>        <a class=\"code hl_function\" href=\"a01089.html#a28d39a844c3a37ab61d32ab7c6352f09\">Options</a>() : <a class=\"code hl_variable\" href=\"a01089.html#ab7c383a49298cf060574242fe679378f\">interpolationMode</a>(<a class=\"code hl_enumvalue\" href=\"a01049.html#a46c8a310cf4c094f8c80e1cb8dc1f911ab491ed84aea170a330914a3f88b16d50\">INTERPOLATE_VERTEX</a>),</div>\n+<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\">  222</span>                    <a class=\"code hl_variable\" href=\"a01089.html#af252d435ac2f27d8f77717cd529a2339\">generate1stDerivatives</a>(true),</div>\n+<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\">  223</span>                    <a class=\"code hl_variable\" href=\"a01089.html#adb29a270ae6d25f74593a6c23488adeb\">generate2ndDerivatives</a>(false),</div>\n+<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\">  224</span>                    <a class=\"code hl_variable\" href=\"a01089.html#a7cd8273eef086a749ce3d40063fb4a28\">fvarChannel</a>(0) { }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\">  225</span> </div>\n+<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01089.html#ab7c383a49298cf060574242fe679378f\">  226</a></span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"a01089.html#ab7c383a49298cf060574242fe679378f\">interpolationMode</a>           : 2, </div>\n+<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01089.html#af252d435ac2f27d8f77717cd529a2339\">  227</a></span>                     <a class=\"code hl_variable\" href=\"a01089.html#af252d435ac2f27d8f77717cd529a2339\">generate1stDerivatives</a>      : 1, </div>\n+<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01089.html#adb29a270ae6d25f74593a6c23488adeb\">  228</a></span>                     <a class=\"code hl_variable\" href=\"a01089.html#adb29a270ae6d25f74593a6c23488adeb\">generate2ndDerivatives</a>      : 1; </div>\n+<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01089.html#a7cd8273eef086a749ce3d40063fb4a28\">  229</a></span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"a01089.html#a7cd8273eef086a749ce3d40063fb4a28\">fvarChannel</a>;                     </div>\n+<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\">  230</span>    };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\">  231</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00233\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01093.html\">  233</a></span>    <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01093.html\">LocationArray</a> {</div>\n+<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\">  234</span> </div>\n+<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01093.html#a23ed026fe98bd57164dbb601791f51fc\">  235</a></span>        <a class=\"code hl_function\" href=\"a01093.html#a23ed026fe98bd57164dbb601791f51fc\">LocationArray</a>() : <a class=\"code hl_variable\" href=\"a01093.html#afb60a8380cb9df186de7183b32bd84e2\">ptexIdx</a>(-1), <a class=\"code hl_variable\" href=\"a01093.html#ab9e5cd822f289b54101de5a704d68ac5\">numLocations</a>(0), <a class=\"code hl_variable\" href=\"a01093.html#a22a5e18d1aeafd28cdd38b543c50c688\">s</a>(0), <a class=\"code hl_variable\" href=\"a01093.html#a1e42f8f49a2deb57d4c2f0005c4ec020\">t</a>(0) { }</div>\n+<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\">  236</span> </div>\n+<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01093.html#afb60a8380cb9df186de7183b32bd84e2\">  237</a></span>        <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"a01093.html#afb60a8380cb9df186de7183b32bd84e2\">ptexIdx</a>,        </div>\n+<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01093.html#ab9e5cd822f289b54101de5a704d68ac5\">  238</a></span>            <a class=\"code hl_variable\" href=\"a01093.html#ab9e5cd822f289b54101de5a704d68ac5\">numLocations</a>;   </div>\n+<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\">  239</span> </div>\n+<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01093.html#a22a5e18d1aeafd28cdd38b543c50c688\">  240</a></span>        REAL  <span class=\"keyword\">const</span> * <a class=\"code hl_variable\" href=\"a01093.html#a22a5e18d1aeafd28cdd38b543c50c688\">s</a>,    </div>\n+<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01093.html#a1e42f8f49a2deb57d4c2f0005c4ec020\">  241</a></span>                    * <a class=\"code hl_variable\" href=\"a01093.html#a1e42f8f49a2deb57d4c2f0005c4ec020\">t</a>;    </div>\n+<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\">  242</span>    };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\">  243</span> </div>\n+<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01049.html#a940880e2d35dea72f52db5bcdc9c94b7\">  244</a></span>    <span class=\"keyword\">typedef</span> std::vector&lt;LocationArray&gt; <a class=\"code hl_typedef\" href=\"a01049.html#a940880e2d35dea72f52db5bcdc9c94b7\">LocationArrayVec</a>;</div>\n+<div class=\"line\"><a id=\"l00245\" name=\"l00245\"></a><span class=\"lineno\">  245</span> </div>\n+<div class=\"line\"><a id=\"l00269\" name=\"l00269\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01049.html#aeed4f0b7aa0a6a1d8f3673e01c062d48\">  269</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01077.html\">LimitStencilTableReal&lt;REAL&gt;</a> <span class=\"keyword\">const</span> * <a class=\"code hl_function\" href=\"a01049.html#aeed4f0b7aa0a6a1d8f3673e01c062d48\">Create</a>(</div>\n+<div class=\"line\"><a id=\"l00270\" name=\"l00270\"></a><span class=\"lineno\">  270</span>                <a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> &amp; refiner,</div>\n+<div class=\"line\"><a id=\"l00271\" name=\"l00271\"></a><span class=\"lineno\">  271</span>                <a class=\"code hl_typedef\" href=\"a01049.html#a940880e2d35dea72f52db5bcdc9c94b7\">LocationArrayVec</a> <span class=\"keyword\">const</span> &amp; locationArrays,</div>\n+<div class=\"line\"><a id=\"l00272\" name=\"l00272\"></a><span class=\"lineno\">  272</span>                <a class=\"code hl_class\" href=\"a01061.html\">StencilTableReal&lt;REAL&gt;</a> <span class=\"keyword\">const</span> * cvStencils = 0,</div>\n+<div class=\"line\"><a id=\"l00273\" name=\"l00273\"></a><span class=\"lineno\">  273</span>                <a class=\"code hl_class\" href=\"a00993.html\">PatchTable</a> <span class=\"keyword\">const</span> * patchTable = 0,</div>\n+<div class=\"line\"><a id=\"l00274\" name=\"l00274\"></a><span class=\"lineno\">  274</span>                <a class=\"code hl_struct\" href=\"a01089.html\">Options</a> options = <a class=\"code hl_struct\" href=\"a01089.html\">Options</a>());</div>\n+<div class=\"line\"><a id=\"l00275\" name=\"l00275\"></a><span class=\"lineno\">  275</span> </div>\n+<div class=\"line\"><a id=\"l00276\" name=\"l00276\"></a><span class=\"lineno\">  276</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00277\" name=\"l00277\"></a><span class=\"lineno\">  277</span> </div>\n+<div class=\"line\"><a id=\"l00278\" name=\"l00278\"></a><span class=\"lineno\">  278</span> </div>\n+<div class=\"line\"><a id=\"l00279\" name=\"l00279\"></a><span class=\"lineno\">  279</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00280\" name=\"l00280\"></a><span class=\"lineno\">  280</span><span class=\"comment\">//  Public wrapper classes for the templates</span></div>\n+<div class=\"line\"><a id=\"l00281\" name=\"l00281\"></a><span class=\"lineno\">  281</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00282\" name=\"l00282\"></a><span class=\"lineno\">  282</span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01057.html\">Stencil</a>;</div>\n+<div class=\"line\"><a id=\"l00283\" name=\"l00283\"></a><span class=\"lineno\">  283</span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a>;</div>\n+<div class=\"line\"><a id=\"l00284\" name=\"l00284\"></a><span class=\"lineno\">  284</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00287\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00287\" name=\"l00287\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01097.html\">  287</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01097.html\">StencilTableFactory</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"a01045.html\">StencilTableFactoryReal</a>&lt;float&gt; {</div>\n+<div class=\"line\"><a id=\"l00288\" name=\"l00288\"></a><span class=\"lineno\">  288</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00289\" name=\"l00289\"></a><span class=\"lineno\">  289</span>    <span class=\"keyword\">typedef</span> <a class=\"code hl_class\" href=\"a01045.html\">StencilTableFactoryReal&lt;float&gt;</a> <a class=\"code hl_class\" href=\"a01045.html\">BaseFactory</a>;</div>\n+<div class=\"line\"><a id=\"l00290\" name=\"l00290\"></a><span class=\"lineno\">  290</span>    <span class=\"keyword\">typedef</span> <a class=\"code hl_class\" href=\"a01061.html\">StencilTableReal&lt;float&gt;</a>        <a class=\"code hl_class\" href=\"a01061.html\">BaseTable</a>;</div>\n+<div class=\"line\"><a id=\"l00291\" name=\"l00291\"></a><span class=\"lineno\">  291</span> </div>\n+<div class=\"line\"><a id=\"l00292\" name=\"l00292\"></a><span class=\"lineno\">  292</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"foldopen\" id=\"foldopen00293\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00293\" name=\"l00293\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01097.html#a667e11d1b8502dd1215608af93ada08c\">  293</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const</span> * <a class=\"code hl_function\" href=\"a01097.html#a667e11d1b8502dd1215608af93ada08c\">Create</a>(</div>\n+<div class=\"line\"><a id=\"l00294\" name=\"l00294\"></a><span class=\"lineno\">  294</span>                <a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> &amp; refiner, Options options = Options()) {</div>\n+<div class=\"line\"><a id=\"l00295\" name=\"l00295\"></a><span class=\"lineno\">  295</span> </div>\n+<div class=\"line\"><a id=\"l00296\" name=\"l00296\"></a><span class=\"lineno\">  296</span>        <span class=\"keywordflow\">return</span> <span class=\"keyword\">static_cast&lt;</span><a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">&gt;</span>(</div>\n+<div class=\"line\"><a id=\"l00297\" name=\"l00297\"></a><span class=\"lineno\">  297</span>                <a class=\"code hl_function\" href=\"a01045.html#a0f706293d0b11df8ec9d06ce7e4b6bb2\">BaseFactory::Create</a>(refiner, options));</div>\n+<div class=\"line\"><a id=\"l00298\" name=\"l00298\"></a><span class=\"lineno\">  298</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00299\" name=\"l00299\"></a><span class=\"lineno\">  299</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00300\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00300\" name=\"l00300\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01097.html#ac5c331f10fb4518358660a5538fac897\">  300</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const</span> * <a class=\"code hl_function\" href=\"a01097.html#ac5c331f10fb4518358660a5538fac897\">Create</a>(</div>\n+<div class=\"line\"><a id=\"l00301\" name=\"l00301\"></a><span class=\"lineno\">  301</span>                <span class=\"keywordtype\">int</span> numTables, <a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const</span> ** tables) {</div>\n+<div class=\"line\"><a id=\"l00302\" name=\"l00302\"></a><span class=\"lineno\">  302</span> </div>\n+<div class=\"line\"><a id=\"l00303\" name=\"l00303\"></a><span class=\"lineno\">  303</span>        <span class=\"keywordflow\">return</span> <span class=\"keyword\">static_cast&lt;</span><a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">&gt;</span>(</div>\n+<div class=\"line\"><a id=\"l00304\" name=\"l00304\"></a><span class=\"lineno\">  304</span>                <a class=\"code hl_function\" href=\"a01045.html#a0f706293d0b11df8ec9d06ce7e4b6bb2\">BaseFactory::Create</a>(numTables,</div>\n+<div class=\"line\"><a id=\"l00305\" name=\"l00305\"></a><span class=\"lineno\">  305</span>                        <span class=\"keyword\">reinterpret_cast&lt;</span><a class=\"code hl_class\" href=\"a01061.html\">BaseTable</a> <span class=\"keyword\">const </span>**<span class=\"keyword\">&gt;</span>(tables)));</div>\n+<div class=\"line\"><a id=\"l00306\" name=\"l00306\"></a><span class=\"lineno\">  306</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\">  307</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00308\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00308\" name=\"l00308\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01097.html#ab7374d716e8637a5ffbd12029713ec0f\">  308</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const</span> * <a class=\"code hl_function\" href=\"a01097.html#ab7374d716e8637a5ffbd12029713ec0f\">AppendLocalPointStencilTable</a>(</div>\n+<div class=\"line\"><a id=\"l00309\" name=\"l00309\"></a><span class=\"lineno\">  309</span>                <a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> &amp;refiner,</div>\n+<div class=\"line\"><a id=\"l00310\" name=\"l00310\"></a><span class=\"lineno\">  310</span>                <a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const</span> *baseStencilTable,</div>\n+<div class=\"line\"><a id=\"l00311\" name=\"l00311\"></a><span class=\"lineno\">  311</span>                <a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const</span> *localPointStencilTable,</div>\n+<div class=\"line\"><a id=\"l00312\" name=\"l00312\"></a><span class=\"lineno\">  312</span>                <span class=\"keywordtype\">bool</span> factorize = <span class=\"keyword\">true</span>) {</div>\n+<div class=\"line\"><a id=\"l00313\" name=\"l00313\"></a><span class=\"lineno\">  313</span> </div>\n+<div class=\"line\"><a id=\"l00314\" name=\"l00314\"></a><span class=\"lineno\">  314</span>        <span class=\"keywordflow\">return</span> <span class=\"keyword\">static_cast&lt;</span><a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">&gt;</span>(</div>\n+<div class=\"line\"><a id=\"l00315\" name=\"l00315\"></a><span class=\"lineno\">  315</span>                <a class=\"code hl_function\" href=\"a01045.html#ac3115cc051309860811962d0b1fa9413\">BaseFactory::AppendLocalPointStencilTable</a>(refiner,</div>\n+<div class=\"line\"><a id=\"l00316\" name=\"l00316\"></a><span class=\"lineno\">  316</span>                        <span class=\"keyword\">static_cast&lt;</span><a class=\"code hl_class\" href=\"a01061.html\">BaseTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">&gt;</span>(baseStencilTable),</div>\n+<div class=\"line\"><a id=\"l00317\" name=\"l00317\"></a><span class=\"lineno\">  317</span>                        <span class=\"keyword\">static_cast&lt;</span><a class=\"code hl_class\" href=\"a01061.html\">BaseTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">&gt;</span>(localPointStencilTable),</div>\n+<div class=\"line\"><a id=\"l00318\" name=\"l00318\"></a><span class=\"lineno\">  318</span>                        factorize));</div>\n+<div class=\"line\"><a id=\"l00319\" name=\"l00319\"></a><span class=\"lineno\">  319</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00320\" name=\"l00320\"></a><span class=\"lineno\">  320</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00321\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00321\" name=\"l00321\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01097.html#a51e4075d73757537a600b85c8f3d2cfa\">  321</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const</span> * <a class=\"code hl_function\" href=\"a01097.html#a51e4075d73757537a600b85c8f3d2cfa\">AppendLocalPointStencilTableVarying</a>(</div>\n+<div class=\"line\"><a id=\"l00322\" name=\"l00322\"></a><span class=\"lineno\">  322</span>                <a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> &amp;refiner,</div>\n+<div class=\"line\"><a id=\"l00323\" name=\"l00323\"></a><span class=\"lineno\">  323</span>                <a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const</span> *baseStencilTable,</div>\n+<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\">  324</span>                <a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const</span> *localPointStencilTable,</div>\n+<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\">  325</span>                <span class=\"keywordtype\">bool</span> factorize = <span class=\"keyword\">true</span>) {</div>\n+<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\">  326</span> </div>\n+<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\">  327</span>        <span class=\"keywordflow\">return</span> <span class=\"keyword\">static_cast&lt;</span><a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">&gt;</span>(</div>\n+<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\">  328</span>                <a class=\"code hl_function\" href=\"a01045.html#abad17ff90d068c3fb121b6524a69dc04\">BaseFactory::AppendLocalPointStencilTableVarying</a>(refiner,</div>\n+<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\">  329</span>                        <span class=\"keyword\">static_cast&lt;</span><a class=\"code hl_class\" href=\"a01061.html\">BaseTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">&gt;</span>(baseStencilTable),</div>\n+<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\">  330</span>                        <span class=\"keyword\">static_cast&lt;</span><a class=\"code hl_class\" href=\"a01061.html\">BaseTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">&gt;</span>(localPointStencilTable),</div>\n+<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\">  331</span>                        factorize));</div>\n+<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\">  332</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00333\" name=\"l00333\"></a><span class=\"lineno\">  333</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00334\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00334\" name=\"l00334\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01097.html#aa8beed46ad3a5f5f34241b9d21907f84\">  334</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const</span> * <a class=\"code hl_function\" href=\"a01097.html#aa8beed46ad3a5f5f34241b9d21907f84\">AppendLocalPointStencilTableFaceVarying</a>(</div>\n+<div class=\"line\"><a id=\"l00335\" name=\"l00335\"></a><span class=\"lineno\">  335</span>                <a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> &amp;refiner,</div>\n+<div class=\"line\"><a id=\"l00336\" name=\"l00336\"></a><span class=\"lineno\">  336</span>                <a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const</span> *baseStencilTable,</div>\n+<div class=\"line\"><a id=\"l00337\" name=\"l00337\"></a><span class=\"lineno\">  337</span>                <a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const</span> *localPointStencilTable,</div>\n+<div class=\"line\"><a id=\"l00338\" name=\"l00338\"></a><span class=\"lineno\">  338</span>                <span class=\"keywordtype\">int</span> channel = 0,</div>\n+<div class=\"line\"><a id=\"l00339\" name=\"l00339\"></a><span class=\"lineno\">  339</span>                <span class=\"keywordtype\">bool</span> factorize = <span class=\"keyword\">true</span>) {</div>\n+<div class=\"line\"><a id=\"l00340\" name=\"l00340\"></a><span class=\"lineno\">  340</span> </div>\n+<div class=\"line\"><a id=\"l00341\" name=\"l00341\"></a><span class=\"lineno\">  341</span>        <span class=\"keywordflow\">return</span> <span class=\"keyword\">static_cast&lt;</span><a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">&gt;</span>(</div>\n+<div class=\"line\"><a id=\"l00342\" name=\"l00342\"></a><span class=\"lineno\">  342</span>                <a class=\"code hl_function\" href=\"a01045.html#a33b8f611576b3e0907832e571e4844f5\">BaseFactory::AppendLocalPointStencilTableFaceVarying</a>(refiner,</div>\n+<div class=\"line\"><a id=\"l00343\" name=\"l00343\"></a><span class=\"lineno\">  343</span>                        <span class=\"keyword\">static_cast&lt;</span><a class=\"code hl_class\" href=\"a01061.html\">BaseTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">&gt;</span>(baseStencilTable),</div>\n+<div class=\"line\"><a id=\"l00344\" name=\"l00344\"></a><span class=\"lineno\">  344</span>                        <span class=\"keyword\">static_cast&lt;</span><a class=\"code hl_class\" href=\"a01061.html\">BaseTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">&gt;</span>(localPointStencilTable),</div>\n+<div class=\"line\"><a id=\"l00345\" name=\"l00345\"></a><span class=\"lineno\">  345</span>                        channel, factorize));</div>\n+<div class=\"line\"><a id=\"l00346\" name=\"l00346\"></a><span class=\"lineno\">  346</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00347\" name=\"l00347\"></a><span class=\"lineno\">  347</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00348\" name=\"l00348\"></a><span class=\"lineno\">  348</span> </div>\n+<div class=\"line\"><a id=\"l00349\" name=\"l00349\"></a><span class=\"lineno\">  349</span><span class=\"keyword\">class </span>LimitStencil;</div>\n+<div class=\"line\"><a id=\"l00350\" name=\"l00350\"></a><span class=\"lineno\">  350</span><span class=\"keyword\">class </span>LimitStencilTable;</div>\n+<div class=\"line\"><a id=\"l00351\" name=\"l00351\"></a><span class=\"lineno\">  351</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00354\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00354\" name=\"l00354\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01101.html\">  354</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01101.html\">LimitStencilTableFactory</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"a01049.html\">LimitStencilTableFactoryReal</a>&lt;float&gt; {</div>\n+<div class=\"line\"><a id=\"l00355\" name=\"l00355\"></a><span class=\"lineno\">  355</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00356\" name=\"l00356\"></a><span class=\"lineno\">  356</span>    <span class=\"keyword\">typedef</span> <a class=\"code hl_class\" href=\"a01049.html\">LimitStencilTableFactoryReal&lt;float&gt;</a> <a class=\"code hl_class\" href=\"a01049.html\">BaseFactory</a>;</div>\n+<div class=\"line\"><a id=\"l00357\" name=\"l00357\"></a><span class=\"lineno\">  357</span>    <span class=\"keyword\">typedef</span> <a class=\"code hl_class\" href=\"a01061.html\">StencilTableReal&lt;float&gt;</a>             <a class=\"code hl_class\" href=\"a01061.html\">BaseTable</a>;</div>\n+<div class=\"line\"><a id=\"l00358\" name=\"l00358\"></a><span class=\"lineno\">  358</span> </div>\n+<div class=\"line\"><a id=\"l00359\" name=\"l00359\"></a><span class=\"lineno\">  359</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"foldopen\" id=\"foldopen00360\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00360\" name=\"l00360\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01101.html#a1a5ba2b86bac859c158ec1c8141e29a7\">  360</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01081.html\">LimitStencilTable</a> <span class=\"keyword\">const</span> * <a class=\"code hl_function\" href=\"a01101.html#a1a5ba2b86bac859c158ec1c8141e29a7\">Create</a>(</div>\n+<div class=\"line\"><a id=\"l00361\" name=\"l00361\"></a><span class=\"lineno\">  361</span>                <a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> &amp; refiner,</div>\n+<div class=\"line\"><a id=\"l00362\" name=\"l00362\"></a><span class=\"lineno\">  362</span>                <a class=\"code hl_typedef\" href=\"a01049.html#a940880e2d35dea72f52db5bcdc9c94b7\">LocationArrayVec</a> <span class=\"keyword\">const</span> &amp; locationArrays,</div>\n+<div class=\"line\"><a id=\"l00363\" name=\"l00363\"></a><span class=\"lineno\">  363</span>                <a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const</span> * cvStencils = 0,</div>\n+<div class=\"line\"><a id=\"l00364\" name=\"l00364\"></a><span class=\"lineno\">  364</span>                <a class=\"code hl_class\" href=\"a00993.html\">PatchTable</a> <span class=\"keyword\">const</span> * patchTable = 0,</div>\n+<div class=\"line\"><a id=\"l00365\" name=\"l00365\"></a><span class=\"lineno\">  365</span>                Options options = Options()) {</div>\n+<div class=\"line\"><a id=\"l00366\" name=\"l00366\"></a><span class=\"lineno\">  366</span> </div>\n+<div class=\"line\"><a id=\"l00367\" name=\"l00367\"></a><span class=\"lineno\">  367</span>        <span class=\"keywordflow\">return</span> <span class=\"keyword\">static_cast&lt;</span><a class=\"code hl_class\" href=\"a01081.html\">LimitStencilTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">&gt;</span>(</div>\n+<div class=\"line\"><a id=\"l00368\" name=\"l00368\"></a><span class=\"lineno\">  368</span>                <a class=\"code hl_function\" href=\"a01049.html#aeed4f0b7aa0a6a1d8f3673e01c062d48\">BaseFactory::Create</a>(</div>\n+<div class=\"line\"><a id=\"l00369\" name=\"l00369\"></a><span class=\"lineno\">  369</span>                        refiner,</div>\n+<div class=\"line\"><a id=\"l00370\" name=\"l00370\"></a><span class=\"lineno\">  370</span>                        locationArrays,</div>\n+<div class=\"line\"><a id=\"l00371\" name=\"l00371\"></a><span class=\"lineno\">  371</span>                        <span class=\"keyword\">static_cast&lt;</span><a class=\"code hl_class\" href=\"a01061.html\">BaseTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">&gt;</span>(cvStencils),</div>\n+<div class=\"line\"><a id=\"l00372\" name=\"l00372\"></a><span class=\"lineno\">  372</span>                        patchTable,</div>\n+<div class=\"line\"><a id=\"l00373\" name=\"l00373\"></a><span class=\"lineno\">  373</span>                        options));</div>\n+<div class=\"line\"><a id=\"l00374\" name=\"l00374\"></a><span class=\"lineno\">  374</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00375\" name=\"l00375\"></a><span class=\"lineno\">  375</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00376\" name=\"l00376\"></a><span class=\"lineno\">  376</span> </div>\n+<div class=\"line\"><a id=\"l00377\" name=\"l00377\"></a><span class=\"lineno\">  377</span>} <span class=\"comment\">// end namespace Far</span></div>\n+<div class=\"line\"><a id=\"l00378\" name=\"l00378\"></a><span class=\"lineno\">  378</span> </div>\n+<div class=\"line\"><a id=\"l00379\" name=\"l00379\"></a><span class=\"lineno\">  379</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00380\" name=\"l00380\"></a><span class=\"lineno\">  380</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00381\" name=\"l00381\"></a><span class=\"lineno\">  381</span> </div>\n+<div class=\"line\"><a id=\"l00382\" name=\"l00382\"></a><span class=\"lineno\">  382</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l00383\" name=\"l00383\"></a><span class=\"lineno\">  383</span> </div>\n+<div class=\"line\"><a id=\"l00384\" name=\"l00384\"></a><span class=\"lineno\">  384</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// OPENSUBDIV3_FAR_STENCILTABLE_FACTORY_H</span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa00993_html\"><div class=\"ttname\"><a href=\"a00993.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable</a></div><div class=\"ttdoc\">Container for arrays of parametric patches.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00842_source.html#l00055\">patchTable.h:55</a></div></div>\n+<div class=\"ttc\" id=\"aa01045_html\"><div class=\"ttname\"><a href=\"a01045.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactoryReal</a></div><div class=\"ttdoc\">A specialized factory for StencilTable.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00824_source.html#l00051\">stencilTableFactory.h:51</a></div></div>\n+<div class=\"ttc\" id=\"aa01045_html_a0f706293d0b11df8ec9d06ce7e4b6bb2\"><div class=\"ttname\"><a href=\"a01045.html#a0f706293d0b11df8ec9d06ce7e4b6bb2\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactoryReal::Create</a></div><div class=\"ttdeci\">static StencilTableReal&lt; REAL &gt; const * Create(TopologyRefiner const &amp;refiner, Options options=Options())</div><div class=\"ttdoc\">Instantiates StencilTable from TopologyRefiner that have been refined uniformly or adaptively.</div></div>\n+<div class=\"ttc\" id=\"aa01045_html_a33b8f611576b3e0907832e571e4844f5\"><div class=\"ttname\"><a href=\"a01045.html#a33b8f611576b3e0907832e571e4844f5\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactoryReal::AppendLocalPointStencilTableFaceVarying</a></div><div class=\"ttdeci\">static StencilTableReal&lt; REAL &gt; const * AppendLocalPointStencilTableFaceVarying(TopologyRefiner const &amp;refiner, StencilTableReal&lt; REAL &gt; const *baseStencilTable, StencilTableReal&lt; REAL &gt; const *localPointStencilTable, int channel=0, bool factorize=true)</div><div class=\"ttdoc\">Utility function for stencil splicing for local point face-varying stencils.</div></div>\n+<div class=\"ttc\" id=\"aa01045_html_a46c8a310cf4c094f8c80e1cb8dc1f911\"><div class=\"ttname\"><a href=\"a01045.html#a46c8a310cf4c094f8c80e1cb8dc1f911\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactoryReal::Mode</a></div><div class=\"ttdeci\">Mode</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00824_source.html#l00055\">stencilTableFactory.h:55</a></div></div>\n+<div class=\"ttc\" id=\"aa01045_html_a46c8a310cf4c094f8c80e1cb8dc1f911a4178369e390d2596ce60676642fec077\"><div class=\"ttname\"><a href=\"a01045.html#a46c8a310cf4c094f8c80e1cb8dc1f911a4178369e390d2596ce60676642fec077\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactoryReal::INTERPOLATE_FACE_VARYING</a></div><div class=\"ttdeci\">@ INTERPOLATE_FACE_VARYING</div><div class=\"ttdoc\">face-varying primvar stencils</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00824_source.html#l00059\">stencilTableFactory.h:58</a></div></div>\n+<div class=\"ttc\" id=\"aa01045_html_a46c8a310cf4c094f8c80e1cb8dc1f911ab18c20abfc04611ab0aec5e1c81bb2ab\"><div class=\"ttname\"><a href=\"a01045.html#a46c8a310cf4c094f8c80e1cb8dc1f911ab18c20abfc04611ab0aec5e1c81bb2ab\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactoryReal::INTERPOLATE_VARYING</a></div><div class=\"ttdeci\">@ INTERPOLATE_VARYING</div><div class=\"ttdoc\">varying primvar stencils</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00824_source.html#l00057\">stencilTableFactory.h:57</a></div></div>\n+<div class=\"ttc\" id=\"aa01045_html_a46c8a310cf4c094f8c80e1cb8dc1f911ab491ed84aea170a330914a3f88b16d50\"><div class=\"ttname\"><a href=\"a01045.html#a46c8a310cf4c094f8c80e1cb8dc1f911ab491ed84aea170a330914a3f88b16d50\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactoryReal::INTERPOLATE_VERTEX</a></div><div class=\"ttdeci\">@ INTERPOLATE_VERTEX</div><div class=\"ttdoc\">vertex primvar stencils</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00824_source.html#l00056\">stencilTableFactory.h:56</a></div></div>\n+<div class=\"ttc\" id=\"aa01045_html_abad17ff90d068c3fb121b6524a69dc04\"><div class=\"ttname\"><a href=\"a01045.html#abad17ff90d068c3fb121b6524a69dc04\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactoryReal::AppendLocalPointStencilTableVarying</a></div><div class=\"ttdeci\">static StencilTableReal&lt; REAL &gt; const * AppendLocalPointStencilTableVarying(TopologyRefiner const &amp;refiner, StencilTableReal&lt; REAL &gt; const *baseStencilTable, StencilTableReal&lt; REAL &gt; const *localPointStencilTable, bool factorize=true)</div><div class=\"ttdoc\">Utility function for stencil splicing for local point varying stencils.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00824_source.html#l00148\">stencilTableFactory.h:148</a></div></div>\n+<div class=\"ttc\" id=\"aa01045_html_ac3115cc051309860811962d0b1fa9413\"><div class=\"ttname\"><a href=\"a01045.html#ac3115cc051309860811962d0b1fa9413\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactoryReal::AppendLocalPointStencilTable</a></div><div class=\"ttdeci\">static StencilTableReal&lt; REAL &gt; const * AppendLocalPointStencilTable(TopologyRefiner const &amp;refiner, StencilTableReal&lt; REAL &gt; const *baseStencilTable, StencilTableReal&lt; REAL &gt; const *localPointStencilTable, bool factorize=true)</div><div class=\"ttdoc\">Utility function for stencil splicing for local point stencils.</div></div>\n+<div class=\"ttc\" id=\"aa01045_html_aecc6558dfbb8b7bb2c2a89150cb8340a\"><div class=\"ttname\"><a href=\"a01045.html#aecc6558dfbb8b7bb2c2a89150cb8340a\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactoryReal::Create</a></div><div class=\"ttdeci\">static StencilTableReal&lt; REAL &gt; const * Create(int numTables, StencilTableReal&lt; REAL &gt; const **tables)</div><div class=\"ttdoc\">Instantiates StencilTable by concatenating an array of existing stencil tables.</div></div>\n+<div class=\"ttc\" id=\"aa01049_html\"><div class=\"ttname\"><a href=\"a01049.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableFactoryReal</a></div><div class=\"ttdoc\">A specialized factory for LimitStencilTable.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00824_source.html#l00209\">stencilTableFactory.h:209</a></div></div>\n+<div class=\"ttc\" id=\"aa01049_html_a46c8a310cf4c094f8c80e1cb8dc1f911\"><div class=\"ttname\"><a href=\"a01049.html#a46c8a310cf4c094f8c80e1cb8dc1f911\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableFactoryReal::Mode</a></div><div class=\"ttdeci\">Mode</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00824_source.html#l00213\">stencilTableFactory.h:213</a></div></div>\n+<div class=\"ttc\" id=\"aa01049_html_a46c8a310cf4c094f8c80e1cb8dc1f911a4178369e390d2596ce60676642fec077\"><div class=\"ttname\"><a href=\"a01049.html#a46c8a310cf4c094f8c80e1cb8dc1f911a4178369e390d2596ce60676642fec077\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableFactoryReal::INTERPOLATE_FACE_VARYING</a></div><div class=\"ttdeci\">@ INTERPOLATE_FACE_VARYING</div><div class=\"ttdoc\">face-varying primvar stencils</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00824_source.html#l00217\">stencilTableFactory.h:216</a></div></div>\n+<div class=\"ttc\" id=\"aa01049_html_a46c8a310cf4c094f8c80e1cb8dc1f911ab18c20abfc04611ab0aec5e1c81bb2ab\"><div class=\"ttname\"><a href=\"a01049.html#a46c8a310cf4c094f8c80e1cb8dc1f911ab18c20abfc04611ab0aec5e1c81bb2ab\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableFactoryReal::INTERPOLATE_VARYING</a></div><div class=\"ttdeci\">@ INTERPOLATE_VARYING</div><div class=\"ttdoc\">varying primvar stencils</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00824_source.html#l00215\">stencilTableFactory.h:215</a></div></div>\n+<div class=\"ttc\" id=\"aa01049_html_a46c8a310cf4c094f8c80e1cb8dc1f911ab491ed84aea170a330914a3f88b16d50\"><div class=\"ttname\"><a href=\"a01049.html#a46c8a310cf4c094f8c80e1cb8dc1f911ab491ed84aea170a330914a3f88b16d50\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableFactoryReal::INTERPOLATE_VERTEX</a></div><div class=\"ttdeci\">@ INTERPOLATE_VERTEX</div><div class=\"ttdoc\">vertex primvar stencils</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00824_source.html#l00214\">stencilTableFactory.h:214</a></div></div>\n+<div class=\"ttc\" id=\"aa01049_html_a940880e2d35dea72f52db5bcdc9c94b7\"><div class=\"ttname\"><a href=\"a01049.html#a940880e2d35dea72f52db5bcdc9c94b7\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableFactoryReal::LocationArrayVec</a></div><div class=\"ttdeci\">std::vector&lt; LocationArray &gt; LocationArrayVec</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00824_source.html#l00244\">stencilTableFactory.h:244</a></div></div>\n+<div class=\"ttc\" id=\"aa01049_html_aeed4f0b7aa0a6a1d8f3673e01c062d48\"><div class=\"ttname\"><a href=\"a01049.html#aeed4f0b7aa0a6a1d8f3673e01c062d48\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableFactoryReal::Create</a></div><div class=\"ttdeci\">static LimitStencilTableReal&lt; REAL &gt; const * Create(TopologyRefiner const &amp;refiner, LocationArrayVec const &amp;locationArrays, StencilTableReal&lt; REAL &gt; const *cvStencils=0, PatchTable const *patchTable=0, Options options=Options())</div><div class=\"ttdoc\">Instantiates LimitStencilTable from a TopologyRefiner that has been refined either uniformly or adapt...</div></div>\n+<div class=\"ttc\" id=\"aa01053_html\"><div class=\"ttname\"><a href=\"a01053.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilReal</a></div><div class=\"ttdoc\">Vertex stencil descriptor.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00053\">stencilTable.h:53</a></div></div>\n+<div class=\"ttc\" id=\"aa01057_html\"><div class=\"ttname\"><a href=\"a01057.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::Stencil</a></div><div class=\"ttdoc\">Vertex stencil class wrapping the template for compatibility.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00116\">stencilTable.h:116</a></div></div>\n+<div class=\"ttc\" id=\"aa01061_html\"><div class=\"ttname\"><a href=\"a01061.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal</a></div><div class=\"ttdoc\">Table of subdivision stencils.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00141\">stencilTable.h:141</a></div></div>\n+<div class=\"ttc\" id=\"aa01065_html\"><div class=\"ttname\"><a href=\"a01065.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTable</a></div><div class=\"ttdoc\">Stencil table class wrapping the template for compatibility.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00273\">stencilTable.h:273</a></div></div>\n+<div class=\"ttc\" id=\"aa01077_html\"><div class=\"ttname\"><a href=\"a01077.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableReal</a></div><div class=\"ttdoc\">Table of limit subdivision stencils.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00409\">stencilTable.h:409</a></div></div>\n+<div class=\"ttc\" id=\"aa01081_html\"><div class=\"ttname\"><a href=\"a01081.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTable</a></div><div class=\"ttdoc\">Limit stencil table class wrapping the template for compatibility.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00583\">stencilTable.h:583</a></div></div>\n+<div class=\"ttc\" id=\"aa01085_html\"><div class=\"ttname\"><a href=\"a01085.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactoryReal::Options</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00824_source.html#l00061\">stencilTableFactory.h:61</a></div></div>\n+<div class=\"ttc\" id=\"aa01085_html_a059c9b4a95b37faa88d1dd0fac0adc8d\"><div class=\"ttname\"><a href=\"a01085.html#a059c9b4a95b37faa88d1dd0fac0adc8d\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactoryReal::Options::factorizeIntermediateLevels</a></div><div class=\"ttdeci\">unsigned int factorizeIntermediateLevels</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00824_source.html#l00075\">stencilTableFactory.h:77</a></div></div>\n+<div class=\"ttc\" id=\"aa01085_html_a110477b0e61b09d8be1a472df34f6386\"><div class=\"ttname\"><a href=\"a01085.html#a110477b0e61b09d8be1a472df34f6386\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactoryReal::Options::maxLevel</a></div><div class=\"ttdeci\">unsigned int maxLevel</div><div class=\"ttdoc\">generate stencils up to 'maxLevel'</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00824_source.html#l00078\">stencilTableFactory.h:78</a></div></div>\n+<div class=\"ttc\" id=\"aa01085_html_a28d39a844c3a37ab61d32ab7c6352f09\"><div class=\"ttname\"><a href=\"a01085.html#a28d39a844c3a37ab61d32ab7c6352f09\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactoryReal::Options::Options</a></div><div class=\"ttdeci\">Options()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00824_source.html#l00063\">stencilTableFactory.h:63</a></div></div>\n+<div class=\"ttc\" id=\"aa01085_html_a55457e193a57e08a56663abf8cc838b4\"><div class=\"ttname\"><a href=\"a01085.html#a55457e193a57e08a56663abf8cc838b4\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactoryReal::Options::generateIntermediateLevels</a></div><div class=\"ttdeci\">unsigned int generateIntermediateLevels</div><div class=\"ttdoc\">vertices at all levels or highest only</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00824_source.html#l00074\">stencilTableFactory.h:74</a></div></div>\n+<div class=\"ttc\" id=\"aa01085_html_a7091c369d67630320a623dbc4a2b34b7\"><div class=\"ttname\"><a href=\"a01085.html#a7091c369d67630320a623dbc4a2b34b7\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactoryReal::Options::generateControlVerts</a></div><div class=\"ttdeci\">unsigned int generateControlVerts</div><div class=\"ttdoc\">generate stencils for control-vertices</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00824_source.html#l00073\">stencilTableFactory.h:73</a></div></div>\n+<div class=\"ttc\" id=\"aa01085_html_a73289d5e55adccde08afd7399a2357f2\"><div class=\"ttname\"><a href=\"a01085.html#a73289d5e55adccde08afd7399a2357f2\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactoryReal::Options::generateOffsets</a></div><div class=\"ttdeci\">unsigned int generateOffsets</div><div class=\"ttdoc\">populate optional &quot;_offsets&quot; field</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00824_source.html#l00072\">stencilTableFactory.h:72</a></div></div>\n+<div class=\"ttc\" id=\"aa01085_html_a7cd8273eef086a749ce3d40063fb4a28\"><div class=\"ttname\"><a href=\"a01085.html#a7cd8273eef086a749ce3d40063fb4a28\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactoryReal::Options::fvarChannel</a></div><div class=\"ttdeci\">unsigned int fvarChannel</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00824_source.html#l00079\">stencilTableFactory.h:79</a></div></div>\n+<div class=\"ttc\" id=\"aa01085_html_ab7c383a49298cf060574242fe679378f\"><div class=\"ttname\"><a href=\"a01085.html#ab7c383a49298cf060574242fe679378f\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactoryReal::Options::interpolationMode</a></div><div class=\"ttdeci\">unsigned int interpolationMode</div><div class=\"ttdoc\">interpolation mode</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00824_source.html#l00071\">stencilTableFactory.h:71</a></div></div>\n+<div class=\"ttc\" id=\"aa01089_html\"><div class=\"ttname\"><a href=\"a01089.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableFactoryReal::Options</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00824_source.html#l00219\">stencilTableFactory.h:219</a></div></div>\n+<div class=\"ttc\" id=\"aa01089_html_a28d39a844c3a37ab61d32ab7c6352f09\"><div class=\"ttname\"><a href=\"a01089.html#a28d39a844c3a37ab61d32ab7c6352f09\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableFactoryReal::Options::Options</a></div><div class=\"ttdeci\">Options()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00824_source.html#l00221\">stencilTableFactory.h:221</a></div></div>\n+<div class=\"ttc\" id=\"aa01089_html_a7cd8273eef086a749ce3d40063fb4a28\"><div class=\"ttname\"><a href=\"a01089.html#a7cd8273eef086a749ce3d40063fb4a28\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableFactoryReal::Options::fvarChannel</a></div><div class=\"ttdeci\">unsigned int fvarChannel</div><div class=\"ttdoc\">face-varying channel to use</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00824_source.html#l00229\">stencilTableFactory.h:229</a></div></div>\n+<div class=\"ttc\" id=\"aa01089_html_ab7c383a49298cf060574242fe679378f\"><div class=\"ttname\"><a href=\"a01089.html#ab7c383a49298cf060574242fe679378f\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableFactoryReal::Options::interpolationMode</a></div><div class=\"ttdeci\">unsigned int interpolationMode</div><div class=\"ttdoc\">interpolation mode</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00824_source.html#l00226\">stencilTableFactory.h:226</a></div></div>\n+<div class=\"ttc\" id=\"aa01089_html_adb29a270ae6d25f74593a6c23488adeb\"><div class=\"ttname\"><a href=\"a01089.html#adb29a270ae6d25f74593a6c23488adeb\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableFactoryReal::Options::generate2ndDerivatives</a></div><div class=\"ttdeci\">unsigned int generate2ndDerivatives</div><div class=\"ttdoc\">Generate weights for 2nd derivatives.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00824_source.html#l00228\">stencilTableFactory.h:228</a></div></div>\n+<div class=\"ttc\" id=\"aa01089_html_af252d435ac2f27d8f77717cd529a2339\"><div class=\"ttname\"><a href=\"a01089.html#af252d435ac2f27d8f77717cd529a2339\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableFactoryReal::Options::generate1stDerivatives</a></div><div class=\"ttdeci\">unsigned int generate1stDerivatives</div><div class=\"ttdoc\">Generate weights for 1st derivatives.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00824_source.html#l00227\">stencilTableFactory.h:227</a></div></div>\n+<div class=\"ttc\" id=\"aa01093_html\"><div class=\"ttname\"><a href=\"a01093.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableFactoryReal::LocationArray</a></div><div class=\"ttdoc\">Descriptor for limit surface locations.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00824_source.html#l00233\">stencilTableFactory.h:233</a></div></div>\n+<div class=\"ttc\" id=\"aa01093_html_a1e42f8f49a2deb57d4c2f0005c4ec020\"><div class=\"ttname\"><a href=\"a01093.html#a1e42f8f49a2deb57d4c2f0005c4ec020\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableFactoryReal::LocationArray::t</a></div><div class=\"ttdeci\">REAL const * t</div><div class=\"ttdoc\">array of v coordinates</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00824_source.html#l00241\">stencilTableFactory.h:241</a></div></div>\n+<div class=\"ttc\" id=\"aa01093_html_a22a5e18d1aeafd28cdd38b543c50c688\"><div class=\"ttname\"><a href=\"a01093.html#a22a5e18d1aeafd28cdd38b543c50c688\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableFactoryReal::LocationArray::s</a></div><div class=\"ttdeci\">REAL const  * s</div><div class=\"ttdoc\">array of u coordinates</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00824_source.html#l00240\">stencilTableFactory.h:240</a></div></div>\n+<div class=\"ttc\" id=\"aa01093_html_a23ed026fe98bd57164dbb601791f51fc\"><div class=\"ttname\"><a href=\"a01093.html#a23ed026fe98bd57164dbb601791f51fc\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableFactoryReal::LocationArray::LocationArray</a></div><div class=\"ttdeci\">LocationArray()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00824_source.html#l00235\">stencilTableFactory.h:235</a></div></div>\n+<div class=\"ttc\" id=\"aa01093_html_ab9e5cd822f289b54101de5a704d68ac5\"><div class=\"ttname\"><a href=\"a01093.html#ab9e5cd822f289b54101de5a704d68ac5\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableFactoryReal::LocationArray::numLocations</a></div><div class=\"ttdeci\">int numLocations</div><div class=\"ttdoc\">number of (u,v) coordinates in the array</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00824_source.html#l00238\">stencilTableFactory.h:238</a></div></div>\n+<div class=\"ttc\" id=\"aa01093_html_afb60a8380cb9df186de7183b32bd84e2\"><div class=\"ttname\"><a href=\"a01093.html#afb60a8380cb9df186de7183b32bd84e2\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableFactoryReal::LocationArray::ptexIdx</a></div><div class=\"ttdeci\">int ptexIdx</div><div class=\"ttdoc\">ptex face index</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00824_source.html#l00237\">stencilTableFactory.h:237</a></div></div>\n+<div class=\"ttc\" id=\"aa01097_html\"><div class=\"ttname\"><a href=\"a01097.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactory</a></div><div class=\"ttdoc\">Stencil table factory class wrapping the template for compatibility.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00824_source.html#l00287\">stencilTableFactory.h:287</a></div></div>\n+<div class=\"ttc\" id=\"aa01097_html_a51e4075d73757537a600b85c8f3d2cfa\"><div class=\"ttname\"><a href=\"a01097.html#a51e4075d73757537a600b85c8f3d2cfa\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactory::AppendLocalPointStencilTableVarying</a></div><div class=\"ttdeci\">static StencilTable const * AppendLocalPointStencilTableVarying(TopologyRefiner const &amp;refiner, StencilTable const *baseStencilTable, StencilTable const *localPointStencilTable, bool factorize=true)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00824_source.html#l00321\">stencilTableFactory.h:321</a></div></div>\n+<div class=\"ttc\" id=\"aa01097_html_a667e11d1b8502dd1215608af93ada08c\"><div class=\"ttname\"><a href=\"a01097.html#a667e11d1b8502dd1215608af93ada08c\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactory::Create</a></div><div class=\"ttdeci\">static StencilTable const * Create(TopologyRefiner const &amp;refiner, Options options=Options())</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00824_source.html#l00293\">stencilTableFactory.h:293</a></div></div>\n+<div class=\"ttc\" id=\"aa01097_html_aa8beed46ad3a5f5f34241b9d21907f84\"><div class=\"ttname\"><a href=\"a01097.html#aa8beed46ad3a5f5f34241b9d21907f84\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactory::AppendLocalPointStencilTableFaceVarying</a></div><div class=\"ttdeci\">static StencilTable const * AppendLocalPointStencilTableFaceVarying(TopologyRefiner const &amp;refiner, StencilTable const *baseStencilTable, StencilTable const *localPointStencilTable, int channel=0, bool factorize=true)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00824_source.html#l00334\">stencilTableFactory.h:334</a></div></div>\n+<div class=\"ttc\" id=\"aa01097_html_ab7374d716e8637a5ffbd12029713ec0f\"><div class=\"ttname\"><a href=\"a01097.html#ab7374d716e8637a5ffbd12029713ec0f\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactory::AppendLocalPointStencilTable</a></div><div class=\"ttdeci\">static StencilTable const * AppendLocalPointStencilTable(TopologyRefiner const &amp;refiner, StencilTable const *baseStencilTable, StencilTable const *localPointStencilTable, bool factorize=true)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00824_source.html#l00308\">stencilTableFactory.h:308</a></div></div>\n+<div class=\"ttc\" id=\"aa01097_html_ac5c331f10fb4518358660a5538fac897\"><div class=\"ttname\"><a href=\"a01097.html#ac5c331f10fb4518358660a5538fac897\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactory::Create</a></div><div class=\"ttdeci\">static StencilTable const * Create(int numTables, StencilTable const **tables)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00824_source.html#l00300\">stencilTableFactory.h:300</a></div></div>\n+<div class=\"ttc\" id=\"aa01101_html\"><div class=\"ttname\"><a href=\"a01101.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableFactory</a></div><div class=\"ttdoc\">Stencil table factory class wrapping the template for compatibility.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00824_source.html#l00354\">stencilTableFactory.h:354</a></div></div>\n+<div class=\"ttc\" id=\"aa01101_html_a1a5ba2b86bac859c158ec1c8141e29a7\"><div class=\"ttname\"><a href=\"a01101.html#a1a5ba2b86bac859c158ec1c8141e29a7\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableFactory::Create</a></div><div class=\"ttdeci\">static LimitStencilTable const * Create(TopologyRefiner const &amp;refiner, LocationArrayVec const &amp;locationArrays, StencilTable const *cvStencils=0, PatchTable const *patchTable=0, Options options=Options())</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00824_source.html#l00360\">stencilTableFactory.h:360</a></div></div>\n+<div class=\"ttc\" id=\"aa01121_html\"><div class=\"ttname\"><a href=\"a01121.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner</a></div><div class=\"ttdoc\">Stores topology data for a specified set of refinement options.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00051\">topologyRefiner.h:51</a></div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00824.html\">mtlCommon.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7f420b72a822828cfa8b0561c695a5cc.html\">far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00824.html\">stencilTableFactory.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,12 +1,12 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-mtlCommon.h\n+stencilTableFactory.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n 2// Copyright 2013 Pixar\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n@@ -24,50 +24,497 @@\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n 24\n-25#ifndef OPENSUBDIV3_OSD_MTL_COMMON_H\n-26#define OPENSUBDIV3_OSD_MTL_COMMON_H\n+25#ifndef OPENSUBDIV3_FAR_STENCILTABLE_FACTORY_H\n+26#define OPENSUBDIV3_FAR_STENCILTABLE_FACTORY_H\n 27\n 28#include \"../version.h\"\n 29\n-30#include <cstddef>\n+30#include \"../far/patchTable.h\"\n 31\n-32@protocol MTLDevice;\n-33@protocol MTLCommandQueue;\n-34\n-35namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-36namespace OPENSUBDIV_VERSION {\n-37\n-38namespace Osd {\n-39\n-_\b4_\b0class _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt {\n-41public:\n-_\b4_\b2 id<MTLDevice> _\bd_\be_\bv_\bi_\bc_\be = nullptr;\n-_\b4_\b3 id<MTLCommandQueue> _\bc_\bo_\bm_\bm_\ba_\bn_\bd_\bQ_\bu_\be_\bu_\be = nullptr;\n-44};\n-45\n-46} // end namespace Osd\n+32#include <vector>\n+33\n+34namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+35namespace OPENSUBDIV_VERSION {\n+36\n+37namespace Far {\n+38\n+39class TopologyRefiner;\n+40\n+41template <typename REAL> class StencilReal;\n+42template <typename REAL> class StencilTableReal;\n+43\n+44template <typename REAL> class LimitStencilReal;\n+45template <typename REAL> class LimitStencilTableReal;\n+46\n 47\n-48} // end namespace OPENSUBDIV_VERSION\n-49using namespace OPENSUBDIV_VERSION;\n-50\n-51} // end namespace OpenSubdiv\n+50template <typename REAL>\n+_\b5_\b1class _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl {\n 52\n-53#endif //OPENSUBDIV3_OSD_MTL_COMMON_H\n+53public:\n+54\n+_\b5_\b5 enum _\bM_\bo_\bd_\be {\n+_\b5_\b6 _\bI_\bN_\bT_\bE_\bR_\bP_\bO_\bL_\bA_\bT_\bE_\b__\bV_\bE_\bR_\bT_\bE_\bX=0,\n+_\b5_\b7 _\bI_\bN_\bT_\bE_\bR_\bP_\bO_\bL_\bA_\bT_\bE_\b__\bV_\bA_\bR_\bY_\bI_\bN_\bG,\n+58 _\bI_\bN_\bT_\bE_\bR_\bP_\bO_\bL_\bA_\bT_\bE_\b__\bF_\bA_\bC_\bE_\b__\bV_\bA_\bR_\bY_\bI_\bN_\bG\n+_\b5_\b9 };\n+60\n+_\b6_\b1 struct _\bO_\bp_\bt_\bi_\bo_\bn_\bs {\n+62\n+_\b6_\b3 _\bO_\bp_\bt_\bi_\bo_\bn_\bs() : _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bM_\bo_\bd_\be(_\bI_\bN_\bT_\bE_\bR_\bP_\bO_\bL_\bA_\bT_\bE_\b__\bV_\bE_\bR_\bT_\bE_\bX),\n+64 _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bO_\bf_\bf_\bs_\be_\bt_\bs(false),\n+65 _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bV_\be_\br_\bt_\bs(false),\n+66 _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bI_\bn_\bt_\be_\br_\bm_\be_\bd_\bi_\ba_\bt_\be_\bL_\be_\bv_\be_\bl_\bs(true),\n+67 _\bf_\ba_\bc_\bt_\bo_\br_\bi_\bz_\be_\bI_\bn_\bt_\be_\br_\bm_\be_\bd_\bi_\ba_\bt_\be_\bL_\be_\bv_\be_\bl_\bs(true),\n+68 _\bm_\ba_\bx_\bL_\be_\bv_\be_\bl(10),\n+69 _\bf_\bv_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl(0) { }\n+70\n+_\b7_\b1 unsigned int _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bM_\bo_\bd_\be : 2,\n+_\b7_\b2 _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bO_\bf_\bf_\bs_\be_\bt_\bs : 1,\n+_\b7_\b3 _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bV_\be_\br_\bt_\bs : 1,\n+_\b7_\b4 _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bI_\bn_\bt_\be_\br_\bm_\be_\bd_\bi_\ba_\bt_\be_\bL_\be_\bv_\be_\bl_\bs : 1,\n+_\b7_\b5 _\bf_\ba_\bc_\bt_\bo_\br_\bi_\bz_\be_\bI_\bn_\bt_\be_\br_\bm_\be_\bd_\bi_\ba_\bt_\be_\bL_\be_\bv_\be_\bl_\bs : 1,\n+_\b7_\b8 _\bm_\ba_\bx_\bL_\be_\bv_\be_\bl : 4;\n+_\b7_\b9 unsigned int _\bf_\bv_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl;\n+81 };\n+82\n+_\b9_\b4 static _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b> const * _\bC_\br_\be_\ba_\bt_\be(\n+95 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const & refiner, _\bO_\bp_\bt_\bi_\bo_\bn_\bs options = _\bO_\bp_\bt_\bi_\bo_\bn_\bs());\n+96\n+97\n+_\b1_\b1_\b0 static _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b> const * _\bC_\br_\be_\ba_\bt_\be(\n+111 int numTables, _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b> const ** tables);\n+112\n+113\n+_\b1_\b2_\b8 static _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b> const * _\bA_\bp_\bp_\be_\bn_\bd_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(\n+129 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const &refiner,\n+130 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b> const *baseStencilTable,\n+131 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b> const *localPointStencilTable,\n+132 bool factorize = true);\n+133\n+_\b1_\b4_\b8 static _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b> const * _\bA_\bp_\bp_\be_\bn_\bd_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+149 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const &refiner,\n+150 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b> const *baseStencilTable,\n+151 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b> const *localPointStencilTable,\n+152 bool factorize = true) {\n+153 return _\bA_\bp_\bp_\be_\bn_\bd_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(\n+154 refiner, baseStencilTable, localPointStencilTable, factorize);\n+155 }\n+156\n+_\b1_\b7_\b4 static _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b> const *\n+_\bA_\bp_\bp_\be_\bn_\bd_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+175 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const &refiner,\n+176 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b> const *baseStencilTable,\n+177 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b> const *localPointStencilTable,\n+178 int channel = 0,\n+179 bool factorize = true);\n+180\n+181private:\n+182\n+183 // Generate stencils for the coarse control-vertices (single weight = 1.0f)\n+184 static void generateControlVertStencils(\n+185 int numControlVerts,\n+186 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b> & dst);\n+187\n+188 // Internal method to splice local point stencils\n+189 static _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b> const * appendLocalPointStencilTable(\n+190 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const &refiner,\n+191 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b> const * baseStencilTable,\n+192 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b> const * localPointStencilTable,\n+193 int channel,\n+194 bool factorize);\n+195};\n+196\n+208template <typename REAL>\n+_\b2_\b0_\b9class _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl {\n+210\n+211public:\n+212\n+_\b2_\b1_\b3 enum _\bM_\bo_\bd_\be {\n+_\b2_\b1_\b4 _\bI_\bN_\bT_\bE_\bR_\bP_\bO_\bL_\bA_\bT_\bE_\b__\bV_\bE_\bR_\bT_\bE_\bX=0,\n+_\b2_\b1_\b5 _\bI_\bN_\bT_\bE_\bR_\bP_\bO_\bL_\bA_\bT_\bE_\b__\bV_\bA_\bR_\bY_\bI_\bN_\bG,\n+216 _\bI_\bN_\bT_\bE_\bR_\bP_\bO_\bL_\bA_\bT_\bE_\b__\bF_\bA_\bC_\bE_\b__\bV_\bA_\bR_\bY_\bI_\bN_\bG\n+_\b2_\b1_\b7 };\n+218\n+_\b2_\b1_\b9 struct _\bO_\bp_\bt_\bi_\bo_\bn_\bs {\n+220\n+_\b2_\b2_\b1 _\bO_\bp_\bt_\bi_\bo_\bn_\bs() : _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bM_\bo_\bd_\be(_\bI_\bN_\bT_\bE_\bR_\bP_\bO_\bL_\bA_\bT_\bE_\b__\bV_\bE_\bR_\bT_\bE_\bX),\n+222 _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\b1_\bs_\bt_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs(true),\n+223 _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\b2_\bn_\bd_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs(false),\n+224 _\bf_\bv_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl(0) { }\n+225\n+_\b2_\b2_\b6 unsigned int _\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bM_\bo_\bd_\be : 2,\n+_\b2_\b2_\b7 _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\b1_\bs_\bt_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs : 1,\n+_\b2_\b2_\b8 _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\b2_\bn_\bd_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs : 1;\n+_\b2_\b2_\b9 unsigned int _\bf_\bv_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl;\n+230 };\n+231\n+_\b2_\b3_\b3 struct _\bL_\bo_\bc_\ba_\bt_\bi_\bo_\bn_\bA_\br_\br_\ba_\by {\n+234\n+_\b2_\b3_\b5 _\bL_\bo_\bc_\ba_\bt_\bi_\bo_\bn_\bA_\br_\br_\ba_\by() : _\bp_\bt_\be_\bx_\bI_\bd_\bx(-1), _\bn_\bu_\bm_\bL_\bo_\bc_\ba_\bt_\bi_\bo_\bn_\bs(0), _\bs(0), _\bt(0) { }\n+236\n+_\b2_\b3_\b7 int _\bp_\bt_\be_\bx_\bI_\bd_\bx,\n+_\b2_\b3_\b8 _\bn_\bu_\bm_\bL_\bo_\bc_\ba_\bt_\bi_\bo_\bn_\bs;\n+239\n+_\b2_\b4_\b0 REAL const * _\bs,\n+_\b2_\b4_\b1 * _\bt;\n+242 };\n+243\n+_\b2_\b4_\b4 typedef std::vector<LocationArray> _\bL_\bo_\bc_\ba_\bt_\bi_\bo_\bn_\bA_\br_\br_\ba_\by_\bV_\be_\bc;\n+245\n+_\b2_\b6_\b9 static _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b> const * _\bC_\br_\be_\ba_\bt_\be(\n+270 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const & refiner,\n+271 _\bL_\bo_\bc_\ba_\bt_\bi_\bo_\bn_\bA_\br_\br_\ba_\by_\bV_\be_\bc const & locationArrays,\n+272 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b> const * cvStencils = 0,\n+273 _\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be const * patchTable = 0,\n+274 _\bO_\bp_\bt_\bi_\bo_\bn_\bs options = _\bO_\bp_\bt_\bi_\bo_\bn_\bs());\n+275\n+276};\n+277\n+278\n+279//\n+280// Public wrapper classes for the templates\n+281//\n+282class _\bS_\bt_\be_\bn_\bc_\bi_\bl;\n+283class _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be;\n+284\n+_\b2_\b8_\b7class _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by : public _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl<float> {\n+288private:\n+289 typedef _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b<_\bf_\bl_\bo_\ba_\bt_\b> _\bB_\ba_\bs_\be_\bF_\ba_\bc_\bt_\bo_\br_\by;\n+290 typedef _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bf_\bl_\bo_\ba_\bt_\b> _\bB_\ba_\bs_\be_\bT_\ba_\bb_\bl_\be;\n+291\n+292public:\n+_\b2_\b9_\b3 static _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const * _\bC_\br_\be_\ba_\bt_\be(\n+294 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const & refiner, Options options = Options()) {\n+295\n+296 return static_cast<_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *>(\n+297 _\bB_\ba_\bs_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\br_\be_\ba_\bt_\be(refiner, options));\n+298 }\n+299\n+_\b3_\b0_\b0 static _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const * _\bC_\br_\be_\ba_\bt_\be(\n+301 int numTables, _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const ** tables) {\n+302\n+303 return static_cast<_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *>(\n+304 _\bB_\ba_\bs_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\br_\be_\ba_\bt_\be(numTables,\n+305 reinterpret_cast<_\bB_\ba_\bs_\be_\bT_\ba_\bb_\bl_\be const **>(tables)));\n+306 }\n+307\n+_\b3_\b0_\b8 static _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const * _\bA_\bp_\bp_\be_\bn_\bd_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(\n+309 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const &refiner,\n+310 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *baseStencilTable,\n+311 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *localPointStencilTable,\n+312 bool factorize = true) {\n+313\n+314 return static_cast<_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *>(\n+315 _\bB_\ba_\bs_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bA_\bp_\bp_\be_\bn_\bd_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(refiner,\n+316 static_cast<_\bB_\ba_\bs_\be_\bT_\ba_\bb_\bl_\be const *>(baseStencilTable),\n+317 static_cast<_\bB_\ba_\bs_\be_\bT_\ba_\bb_\bl_\be const *>(localPointStencilTable),\n+318 factorize));\n+319 }\n+320\n+_\b3_\b2_\b1 static _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const * _\bA_\bp_\bp_\be_\bn_\bd_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+322 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const &refiner,\n+323 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *baseStencilTable,\n+324 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *localPointStencilTable,\n+325 bool factorize = true) {\n+326\n+327 return static_cast<_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *>(\n+328 _\bB_\ba_\bs_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bA_\bp_\bp_\be_\bn_\bd_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(refiner,\n+329 static_cast<_\bB_\ba_\bs_\be_\bT_\ba_\bb_\bl_\be const *>(baseStencilTable),\n+330 static_cast<_\bB_\ba_\bs_\be_\bT_\ba_\bb_\bl_\be const *>(localPointStencilTable),\n+331 factorize));\n+332 }\n+333\n+_\b3_\b3_\b4 static _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const * _\bA_\bp_\bp_\be_\bn_\bd_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n+335 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const &refiner,\n+336 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *baseStencilTable,\n+337 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *localPointStencilTable,\n+338 int channel = 0,\n+339 bool factorize = true) {\n+340\n+341 return static_cast<_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *>(\n+342 _\bB_\ba_\bs_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bA_\bp_\bp_\be_\bn_\bd_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(refiner,\n+343 static_cast<_\bB_\ba_\bs_\be_\bT_\ba_\bb_\bl_\be const *>(baseStencilTable),\n+344 static_cast<_\bB_\ba_\bs_\be_\bT_\ba_\bb_\bl_\be const *>(localPointStencilTable),\n+345 channel, factorize));\n+346 }\n+347};\n+348\n+349class LimitStencil;\n+350class LimitStencilTable;\n+351\n+_\b3_\b5_\b4class _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by : public _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl<float>\n+{\n+355private:\n+356 typedef _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b<_\bf_\bl_\bo_\ba_\bt_\b> _\bB_\ba_\bs_\be_\bF_\ba_\bc_\bt_\bo_\br_\by;\n+357 typedef _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bf_\bl_\bo_\ba_\bt_\b> _\bB_\ba_\bs_\be_\bT_\ba_\bb_\bl_\be;\n+358\n+359public:\n+_\b3_\b6_\b0 static _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const * _\bC_\br_\be_\ba_\bt_\be(\n+361 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const & refiner,\n+362 _\bL_\bo_\bc_\ba_\bt_\bi_\bo_\bn_\bA_\br_\br_\ba_\by_\bV_\be_\bc const & locationArrays,\n+363 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const * cvStencils = 0,\n+364 _\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be const * patchTable = 0,\n+365 Options options = Options()) {\n+366\n+367 return static_cast<_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *>(\n+368 _\bB_\ba_\bs_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\br_\be_\ba_\bt_\be(\n+369 refiner,\n+370 locationArrays,\n+371 static_cast<_\bB_\ba_\bs_\be_\bT_\ba_\bb_\bl_\be const *>(cvStencils),\n+372 patchTable,\n+373 options));\n+374 }\n+375};\n+376\n+377} // end namespace Far\n+378\n+379} // end namespace OPENSUBDIV_VERSION\n+380using namespace OPENSUBDIV_VERSION;\n+381\n+382} // end namespace OpenSubdiv\n+383\n+384#endif // OPENSUBDIV3_FAR_STENCILTABLE_FACTORY_H\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bm_\bo_\bn_\b._\bh_\b:_\b4_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt_\b:_\b:_\bc_\bo_\bm_\bm_\ba_\bn_\bd_\bQ_\bu_\be_\bu_\be\n-id< MTLCommandQueue > commandQueue\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bm_\bo_\bn_\b._\bh_\b:_\b4_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt_\b:_\b:_\bd_\be_\bv_\bi_\bc_\be\n-id< MTLDevice > device\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bm_\bo_\bn_\b._\bh_\b:_\b4_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+Container for arrays of parametric patches.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl\n+A specialized factory for StencilTable.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n+static StencilTableReal< REAL > const * Create(TopologyRefiner const &refiner,\n+Options options=Options())\n+Instantiates StencilTable from TopologyRefiner that have been refined uniformly\n+or adaptively.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:\n+_\bA_\bp_\bp_\be_\bn_\bd_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n+static StencilTableReal< REAL > const * AppendLocalPointStencilTableFaceVarying\n+(TopologyRefiner const &refiner, StencilTableReal< REAL > const\n+*baseStencilTable, StencilTableReal< REAL > const *localPointStencilTable, int\n+channel=0, bool factorize=true)\n+Utility function for stencil splicing for local point face-varying stencils.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:_\bM_\bo_\bd_\be\n+Mode\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:\n+_\bI_\bN_\bT_\bE_\bR_\bP_\bO_\bL_\bA_\bT_\bE_\b__\bF_\bA_\bC_\bE_\b__\bV_\bA_\bR_\bY_\bI_\bN_\bG\n+@ INTERPOLATE_FACE_VARYING\n+face-varying primvar stencils\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:\n+_\bI_\bN_\bT_\bE_\bR_\bP_\bO_\bL_\bA_\bT_\bE_\b__\bV_\bA_\bR_\bY_\bI_\bN_\bG\n+@ INTERPOLATE_VARYING\n+varying primvar stencils\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:\n+_\bI_\bN_\bT_\bE_\bR_\bP_\bO_\bL_\bA_\bT_\bE_\b__\bV_\bE_\bR_\bT_\bE_\bX\n+@ INTERPOLATE_VERTEX\n+vertex primvar stencils\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:\n+_\bA_\bp_\bp_\be_\bn_\bd_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n+static StencilTableReal< REAL > const * AppendLocalPointStencilTableVarying\n+(TopologyRefiner const &refiner, StencilTableReal< REAL > const\n+*baseStencilTable, StencilTableReal< REAL > const *localPointStencilTable, bool\n+factorize=true)\n+Utility function for stencil splicing for local point varying stencils.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b4_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:\n+_\bA_\bp_\bp_\be_\bn_\bd_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n+static StencilTableReal< REAL > const * AppendLocalPointStencilTable\n+(TopologyRefiner const &refiner, StencilTableReal< REAL > const\n+*baseStencilTable, StencilTableReal< REAL > const *localPointStencilTable, bool\n+factorize=true)\n+Utility function for stencil splicing for local point stencils.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n+static StencilTableReal< REAL > const * Create(int numTables, StencilTableReal<\n+REAL > const **tables)\n+Instantiates StencilTable by concatenating an array of existing stencil tables.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl\n+A specialized factory for LimitStencilTable.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b2_\b0_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:_\bM_\bo_\bd_\be\n+Mode\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b2_\b1_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:\n+_\bI_\bN_\bT_\bE_\bR_\bP_\bO_\bL_\bA_\bT_\bE_\b__\bF_\bA_\bC_\bE_\b__\bV_\bA_\bR_\bY_\bI_\bN_\bG\n+@ INTERPOLATE_FACE_VARYING\n+face-varying primvar stencils\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b2_\b1_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:\n+_\bI_\bN_\bT_\bE_\bR_\bP_\bO_\bL_\bA_\bT_\bE_\b__\bV_\bA_\bR_\bY_\bI_\bN_\bG\n+@ INTERPOLATE_VARYING\n+varying primvar stencils\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b2_\b1_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:\n+_\bI_\bN_\bT_\bE_\bR_\bP_\bO_\bL_\bA_\bT_\bE_\b__\bV_\bE_\bR_\bT_\bE_\bX\n+@ INTERPOLATE_VERTEX\n+vertex primvar stencils\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b2_\b1_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:\n+_\bL_\bo_\bc_\ba_\bt_\bi_\bo_\bn_\bA_\br_\br_\ba_\by_\bV_\be_\bc\n+std::vector< LocationArray > LocationArrayVec\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b2_\b4_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n+static LimitStencilTableReal< REAL > const * Create(TopologyRefiner const\n+&refiner, LocationArrayVec const &locationArrays, StencilTableReal< REAL >\n+const *cvStencils=0, PatchTable const *patchTable=0, Options options=Options())\n+Instantiates LimitStencilTable from a TopologyRefiner that has been refined\n+either uniformly or adapt...\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bR_\be_\ba_\bl\n+Vertex stencil descriptor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl\n+Vertex stencil class wrapping the template for compatibility.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b1_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl\n+Table of subdivision stencils.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b4_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n+Stencil table class wrapping the template for compatibility.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b2_\b7_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl\n+Table of limit subdivision stencils.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b4_\b0_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n+Limit stencil table class wrapping the template for compatibility.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b8_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b6_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bf_\ba_\bc_\bt_\bo_\br_\bi_\bz_\be_\bI_\bn_\bt_\be_\br_\bm_\be_\bd_\bi_\ba_\bt_\be_\bL_\be_\bv_\be_\bl_\bs\n+unsigned int factorizeIntermediateLevels\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b7_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bm_\ba_\bx_\bL_\be_\bv_\be_\bl\n+unsigned int maxLevel\n+generate stencils up to 'maxLevel'\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b7_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n+Options()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b6_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bI_\bn_\bt_\be_\br_\bm_\be_\bd_\bi_\ba_\bt_\be_\bL_\be_\bv_\be_\bl_\bs\n+unsigned int generateIntermediateLevels\n+vertices at all levels or highest only\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b7_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bV_\be_\br_\bt_\bs\n+unsigned int generateControlVerts\n+generate stencils for control-vertices\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b7_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bO_\bf_\bf_\bs_\be_\bt_\bs\n+unsigned int generateOffsets\n+populate optional \"_offsets\" field\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b7_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bf_\bv_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl\n+unsigned int fvarChannel\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b7_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bM_\bo_\bd_\be\n+unsigned int interpolationMode\n+interpolation mode\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b7_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b2_\b1_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n+Options()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b2_\b2_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bf_\bv_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl\n+unsigned int fvarChannel\n+face-varying channel to use\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b2_\b2_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bi_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bM_\bo_\bd_\be\n+unsigned int interpolationMode\n+interpolation mode\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b2_\b2_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bg_\be_\bn_\be_\br_\ba_\bt_\be_\b2_\bn_\bd_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs\n+unsigned int generate2ndDerivatives\n+Generate weights for 2nd derivatives.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b2_\b2_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bg_\be_\bn_\be_\br_\ba_\bt_\be_\b1_\bs_\bt_\bD_\be_\br_\bi_\bv_\ba_\bt_\bi_\bv_\be_\bs\n+unsigned int generate1stDerivatives\n+Generate weights for 1st derivatives.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b2_\b2_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:\n+_\bL_\bo_\bc_\ba_\bt_\bi_\bo_\bn_\bA_\br_\br_\ba_\by\n+Descriptor for limit surface locations.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b2_\b3_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:\n+_\bL_\bo_\bc_\ba_\bt_\bi_\bo_\bn_\bA_\br_\br_\ba_\by_\b:_\b:_\bt\n+REAL const * t\n+array of v coordinates\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b2_\b4_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:\n+_\bL_\bo_\bc_\ba_\bt_\bi_\bo_\bn_\bA_\br_\br_\ba_\by_\b:_\b:_\bs\n+REAL const * s\n+array of u coordinates\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b2_\b4_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:\n+_\bL_\bo_\bc_\ba_\bt_\bi_\bo_\bn_\bA_\br_\br_\ba_\by_\b:_\b:_\bL_\bo_\bc_\ba_\bt_\bi_\bo_\bn_\bA_\br_\br_\ba_\by\n+LocationArray()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b2_\b3_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:\n+_\bL_\bo_\bc_\ba_\bt_\bi_\bo_\bn_\bA_\br_\br_\ba_\by_\b:_\b:_\bn_\bu_\bm_\bL_\bo_\bc_\ba_\bt_\bi_\bo_\bn_\bs\n+int numLocations\n+number of (u,v) coordinates in the array\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b2_\b3_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b:_\b:\n+_\bL_\bo_\bc_\ba_\bt_\bi_\bo_\bn_\bA_\br_\br_\ba_\by_\b:_\b:_\bp_\bt_\be_\bx_\bI_\bd_\bx\n+int ptexIdx\n+ptex face index\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b2_\b3_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by\n+Stencil table factory class wrapping the template for compatibility.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b2_\b8_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n+_\bA_\bp_\bp_\be_\bn_\bd_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n+static StencilTable const * AppendLocalPointStencilTableVarying(TopologyRefiner\n+const &refiner, StencilTable const *baseStencilTable, StencilTable const\n+*localPointStencilTable, bool factorize=true)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b3_\b2_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n+static StencilTable const * Create(TopologyRefiner const &refiner, Options\n+options=Options())\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b2_\b9_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n+_\bA_\bp_\bp_\be_\bn_\bd_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n+static StencilTable const * AppendLocalPointStencilTableFaceVarying\n+(TopologyRefiner const &refiner, StencilTable const *baseStencilTable,\n+StencilTable const *localPointStencilTable, int channel=0, bool factorize=true)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b3_\b3_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n+_\bA_\bp_\bp_\be_\bn_\bd_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n+static StencilTable const * AppendLocalPointStencilTable(TopologyRefiner const\n+&refiner, StencilTable const *baseStencilTable, StencilTable const\n+*localPointStencilTable, bool factorize=true)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b3_\b0_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n+static StencilTable const * Create(int numTables, StencilTable const **tables)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b3_\b0_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by\n+Stencil table factory class wrapping the template for compatibility.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b3_\b5_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n+static LimitStencilTable const * Create(TopologyRefiner const &refiner,\n+LocationArrayVec const &locationArrays, StencilTable const *cvStencils=0,\n+PatchTable const *patchTable=0, Options options=Options())\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b3_\b6_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br\n+Stores topology data for a specified set of refinement options.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b5_\b1\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bm_\bt_\bl_\bC_\bo_\bm_\bm_\bo_\bn_\b._\bh\n+    * _\bf_\ba_\br\n+    * _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00827.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00827.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/glslPatchShaderSource.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/far/topologyRefinerFactory.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -90,42 +90,49 @@\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> &#124;\n <a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">glslPatchShaderSource.h File Reference</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">topologyRefinerFactory.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00773_source.html\">../far/patchDescriptor.h</a>&quot;</code><br />\n-<code>#include &lt;string&gt;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00833_source.html\">../far/topologyRefiner.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00839_source.html\">../far/error.h</a>&quot;</code><br />\n+<code>#include &lt;cassert&gt;</code><br />\n </div>\n <p><a href=\"a00827_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01241.html\">GLSLPatchShaderSource</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Provides shader source which can be used by client code.  <a href=\"a01241.html#details\">More...</a><br /></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01133.html\">TopologyRefinerFactoryBase</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Private base class of Factories for constructing TopologyRefiners.  <a href=\"a01133.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01117.html\">TopologyRefinerFactory&lt; MESH &gt;</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Factory for constructing TopologyRefiners from specific mesh classes.  <a href=\"a01117.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01137.html\">TopologyRefinerFactory&lt; MESH &gt;::Options</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"a01137.html\" title=\"Options related to the construction of each TopologyRefiner.\">Options</a> related to the construction of each <a class=\"el\" href=\"a01121.html\" title=\"Stores topology data for a specified set of refinement options.\">TopologyRefiner</a>.  <a href=\"a01137.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n+<tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00827.html\">glslPatchShaderSource.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7f420b72a822828cfa8b0561c695a5cc.html\">far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00827.html\">topologyRefinerFactory.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,25 +1,34 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-glslPatchShaderSource.h File Reference\n+topologyRefinerFactory.h File Reference\n #include \"../version.h\"\n-#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh\"\n-#include <string>\n+#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh\"\n+#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\be_\br_\br_\bo_\br_\b._\bh\"\n+#include <cassert>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bG_\bL_\bS_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be\n-\u00a0       Provides shader source which can be used by client code. _\bM_\bo_\br_\be_\b._\b._\b.\n+ class \u00a0 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\bB_\ba_\bs_\be\n+\u00a0        Private base class of Factories for constructing TopologyRefiners.\n+         _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+ class \u00a0 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bM_\bE_\bS_\bH_\b _\b>\n+\u00a0        Factory for constructing TopologyRefiners from specific mesh classes.\n+         _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bM_\bE_\bS_\bH_\b _\b>_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n+\u00a0        _\bO_\bp_\bt_\bi_\bo_\bn_\bs related to the construction of each _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bg_\bl_\bs_\bl_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b._\bh\n+    * _\bf_\ba_\br\n+    * _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00827.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00827.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,3 +1,5 @@\n var a00827 = [\n-    [\"GLSLPatchShaderSource\", \"a01241.html\", null]\n+    [\"TopologyRefinerFactoryBase\", \"a01133.html\", \"a01133\"],\n+    [\"TopologyRefinerFactory< MESH >\", \"a01117.html\", \"a01117\"],\n+    [\"Options\", \"a01137.html\", \"a01137\"]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00827_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00827_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/glslPatchShaderSource.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/far/topologyRefinerFactory.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">glslPatchShaderSource.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">topologyRefinerFactory.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00827.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2015 Pixar</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2014 DreamWorks Animation LLC.</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -118,72 +118,698 @@\n <div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_GLSL_PATCH_SHADER_SOURCE_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_GLSL_PATCH_SHADER_SOURCE_H</span></div>\n-<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n-<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../far/patchDescriptor.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_FAR_TOPOLOGY_REFINER_FACTORY_H</span></div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#define OPENSUBDIV3_FAR_TOPOLOGY_REFINER_FACTORY_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span> </div>\n+<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span> </div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#include &quot;../far/topologyRefiner.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../far/error.h&quot;</span></div>\n <div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &lt;string&gt;</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &lt;cassert&gt;</span></div>\n <div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n <div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n <div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n <div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">namespace </span>Osd {</div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">namespace </span>Far {</div>\n <div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00040\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01241.html\">   40</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01241.html\">GLSLPatchShaderSource</a> {</div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01241.html#ad41c6e1dc4a5cd6ee4f33fc5a8e15d1d\">   45</a></span>    <span class=\"keyword\">static</span> std::string <a class=\"code hl_function\" href=\"a01241.html#ad41c6e1dc4a5cd6ee4f33fc5a8e15d1d\">GetPatchBasisShaderSource</a>();</div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span> </div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01241.html#a230efce26a4754c94dbeedd435fe471b\">   50</a></span>    <span class=\"keyword\">static</span> std::string <a class=\"code hl_function\" href=\"a01241.html#a230efce26a4754c94dbeedd435fe471b\">GetPatchDrawingShaderSource</a>();</div>\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span> </div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span> </div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01241.html#ad5f427d2655d384980715874209345e7\">   60</a></span>    <span class=\"keyword\">static</span> std::string <a class=\"code hl_function\" href=\"a01241.html#ad5f427d2655d384980715874209345e7\">GetCommonShaderSource</a>();</div>\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span> </div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01241.html#a20cb122b561de15ed3b90d7e4f5176d2\">   62</a></span>    <span class=\"keyword\">static</span> std::string <a class=\"code hl_function\" href=\"a01241.html#a20cb122b561de15ed3b90d7e4f5176d2\">GetVertexShaderSource</a>(</div>\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>        <a class=\"code hl_enumeration\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">Far::PatchDescriptor::Type</a> type);</div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span> </div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01241.html#afc38178f7de93f60d4f6c1072c33cc7e\">   65</a></span>    <span class=\"keyword\">static</span> std::string <a class=\"code hl_function\" href=\"a01241.html#afc38178f7de93f60d4f6c1072c33cc7e\">GetTessControlShaderSource</a>(</div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span>        <a class=\"code hl_enumeration\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">Far::PatchDescriptor::Type</a> type);</div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span> </div>\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01241.html#a57a46d6848317cc76a02bc166ee05c24\">   68</a></span>    <span class=\"keyword\">static</span> std::string <a class=\"code hl_function\" href=\"a01241.html#a57a46d6848317cc76a02bc166ee05c24\">GetTessEvalShaderSource</a>(</div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span>        <a class=\"code hl_enumeration\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">Far::PatchDescriptor::Type</a> type);</div>\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span> </div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span> </div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span>}  <span class=\"comment\">// end namespace Osd</span></div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span> </div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span>}  <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span> </div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span> </div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_GLSL_PATCH_SHADER_SOURCE</span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa00973_html_a1d1cfd8ffb84e947f82999c682b666a7\"><div class=\"ttname\"><a href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::Type</a></div><div class=\"ttdeci\">Type</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00773_source.html#l00048\">patchDescriptor.h:48</a></div></div>\n-<div class=\"ttc\" id=\"aa01241_html\"><div class=\"ttname\"><a href=\"a01241.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLSLPatchShaderSource</a></div><div class=\"ttdoc\">Provides shader source which can be used by client code.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00827_source.html#l00040\">glslPatchShaderSource.h:40</a></div></div>\n-<div class=\"ttc\" id=\"aa01241_html_a20cb122b561de15ed3b90d7e4f5176d2\"><div class=\"ttname\"><a href=\"a01241.html#a20cb122b561de15ed3b90d7e4f5176d2\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLSLPatchShaderSource::GetVertexShaderSource</a></div><div class=\"ttdeci\">static std::string GetVertexShaderSource(Far::PatchDescriptor::Type type)</div></div>\n-<div class=\"ttc\" id=\"aa01241_html_a230efce26a4754c94dbeedd435fe471b\"><div class=\"ttname\"><a href=\"a01241.html#a230efce26a4754c94dbeedd435fe471b\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLSLPatchShaderSource::GetPatchDrawingShaderSource</a></div><div class=\"ttdeci\">static std::string GetPatchDrawingShaderSource()</div><div class=\"ttdoc\">Returns shader source which can be used while drawing piecewise parametric patches resulting from sub...</div></div>\n-<div class=\"ttc\" id=\"aa01241_html_a57a46d6848317cc76a02bc166ee05c24\"><div class=\"ttname\"><a href=\"a01241.html#a57a46d6848317cc76a02bc166ee05c24\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLSLPatchShaderSource::GetTessEvalShaderSource</a></div><div class=\"ttdeci\">static std::string GetTessEvalShaderSource(Far::PatchDescriptor::Type type)</div></div>\n-<div class=\"ttc\" id=\"aa01241_html_ad41c6e1dc4a5cd6ee4f33fc5a8e15d1d\"><div class=\"ttname\"><a href=\"a01241.html#ad41c6e1dc4a5cd6ee4f33fc5a8e15d1d\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLSLPatchShaderSource::GetPatchBasisShaderSource</a></div><div class=\"ttdeci\">static std::string GetPatchBasisShaderSource()</div><div class=\"ttdoc\">Returns shader source which can be used to evaluate position and first and second derivatives on piec...</div></div>\n-<div class=\"ttc\" id=\"aa01241_html_ad5f427d2655d384980715874209345e7\"><div class=\"ttname\"><a href=\"a01241.html#ad5f427d2655d384980715874209345e7\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLSLPatchShaderSource::GetCommonShaderSource</a></div><div class=\"ttdeci\">static std::string GetCommonShaderSource()</div></div>\n-<div class=\"ttc\" id=\"aa01241_html_afc38178f7de93f60d4f6c1072c33cc7e\"><div class=\"ttname\"><a href=\"a01241.html#afc38178f7de93f60d4f6c1072c33cc7e\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLSLPatchShaderSource::GetTessControlShaderSource</a></div><div class=\"ttdeci\">static std::string GetTessControlShaderSource(Far::PatchDescriptor::Type type)</div></div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span><span class=\"comment\">//</span></div>\n+<div class=\"foldopen\" id=\"foldopen00047\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01133.html\">   47</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01133.html\">TopologyRefinerFactoryBase</a> {</div>\n+<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span><span class=\"keyword\">protected</span>:</div>\n+<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span> </div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span>    <span class=\"comment\">//  Protected methods invoked by the subclass template to verify and process each</span></div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span>    <span class=\"comment\">//  stage of construction implemented by the subclass:</span></div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01133.html#a896a964625491e084b3d776acd10f053\">   54</a></span>    <span class=\"keyword\">typedef</span> Vtr::internal::Level::ValidationCallback <a class=\"code hl_typedef\" href=\"a01133.html#a896a964625491e084b3d776acd10f053\">TopologyCallback</a>;</div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span> </div>\n+<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01133.html#aba57674bcc5cb7367ce1fe527ec219ad\">   56</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01133.html#aba57674bcc5cb7367ce1fe527ec219ad\">prepareComponentTopologySizing</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a>&amp; refiner);</div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01133.html#a30ee63853ace8ecb0c3c2a6e3303aefc\">   57</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01133.html#a30ee63853ace8ecb0c3c2a6e3303aefc\">prepareComponentTopologyAssignment</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a>&amp; refiner, <span class=\"keywordtype\">bool</span> fullValidation,</div>\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span>                                                   <a class=\"code hl_typedef\" href=\"a01133.html#a896a964625491e084b3d776acd10f053\">TopologyCallback</a> callback, <span class=\"keywordtype\">void</span> <span class=\"keyword\">const</span> * callbackData);</div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01133.html#a8d7f178267895f2a90585e60849b9119\">   59</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01133.html#a8d7f178267895f2a90585e60849b9119\">prepareComponentTagsAndSharpness</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a>&amp; refiner);</div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01133.html#ac800e6db9b484b31f8fa11799ee4ac1b\">   60</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01133.html#ac800e6db9b484b31f8fa11799ee4ac1b\">prepareFaceVaryingChannels</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a>&amp; refiner);</div>\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span> </div>\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span> </div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00078\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html\">   78</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01117.html\">TopologyRefinerFactory</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"a01133.html\">TopologyRefinerFactoryBase</a> {</div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span> </div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00084\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01137.html\">   84</a></span>    <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01137.html\">Options</a> {</div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00086\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01137.html#a33cde130beeee5dd5125d2c188b1a088\">   86</a></span>        <a class=\"code hl_function\" href=\"a01137.html#a33cde130beeee5dd5125d2c188b1a088\">Options</a>(<a class=\"code hl_enumeration\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833d\">Sdc::SchemeType</a> sdcType = <a class=\"code hl_enumvalue\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833da29c9704ef8a61670dfc242b6e6b82a9f\">Sdc::SCHEME_CATMARK</a>, <a class=\"code hl_class\" href=\"a01337.html\">Sdc::Options</a> sdcOptions = <a class=\"code hl_class\" href=\"a01337.html\">Sdc::Options</a>()) :</div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>            <a class=\"code hl_variable\" href=\"a01137.html#ab4a105466e7c764e3aabaa6c44c1eeb6\">schemeType</a>(sdcType),</div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>            <a class=\"code hl_variable\" href=\"a01137.html#a9ec2ab2b4bd49c6cf367dac80c8cbb94\">schemeOptions</a>(sdcOptions),</div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>            <a class=\"code hl_variable\" href=\"a01137.html#adaa22b025e8615d6e4281a86b794e5df\">validateFullTopology</a>(false) { }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span> </div>\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01137.html#ab4a105466e7c764e3aabaa6c44c1eeb6\">   91</a></span>        <a class=\"code hl_enumeration\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833d\">Sdc::SchemeType</a> <a class=\"code hl_variable\" href=\"a01137.html#ab4a105466e7c764e3aabaa6c44c1eeb6\">schemeType</a>;             </div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01137.html#a9ec2ab2b4bd49c6cf367dac80c8cbb94\">   92</a></span>        <a class=\"code hl_class\" href=\"a01337.html\">Sdc::Options</a>    <a class=\"code hl_variable\" href=\"a01137.html#a9ec2ab2b4bd49c6cf367dac80c8cbb94\">schemeOptions</a>;          </div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01137.html#adaa22b025e8615d6e4281a86b794e5df\">   94</a></span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"a01137.html#adaa22b025e8615d6e4281a86b794e5df\">validateFullTopology</a> : 1;  </div>\n+<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>    };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span> </div>\n+<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a>* <a class=\"code hl_function\" href=\"a01117.html#ab10eb061eba33095095d754241081ff9\">Create</a>(MESH <span class=\"keyword\">const</span>&amp; mesh, <a class=\"code hl_struct\" href=\"a01137.html\">Options</a> options = <a class=\"code hl_struct\" href=\"a01137.html\">Options</a>());</div>\n+<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span> </div>\n+<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a>* <a class=\"code hl_function\" href=\"a01117.html#ab10eb061eba33095095d754241081ff9\">Create</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> &amp; baseLevel);</div>\n+<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span> </div>\n+<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span><span class=\"keyword\">protected</span>:</div>\n+<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#a5458be6ce3f2e63c8d8555f4ab3b2b62\">  131</a></span>    <span class=\"keyword\">typedef</span> Vtr::internal::Level::TopologyError <a class=\"code hl_typedef\" href=\"a01117.html#a5458be6ce3f2e63c8d8555f4ab3b2b62\">TopologyError</a>;</div>\n+<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\">  132</span> </div>\n+<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\">  134</span> </div>\n+<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\">  149</span> </div>\n+<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\">  151</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01117.html#a4c574c458d080393a258f48e0ab20938\">resizeComponentTopology</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a>&amp; newRefiner, MESH <span class=\"keyword\">const</span>&amp; mesh);</div>\n+<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\">  152</span> </div>\n+<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\">  155</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01117.html#a098784adfa428c620663baf9c2d8e41a\">assignComponentTopology</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a>&amp; newRefiner, MESH <span class=\"keyword\">const</span>&amp; mesh);</div>\n+<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\">  156</span> </div>\n+<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\">  158</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01117.html#a3df7295af055588a7b4f20d4da021ad1\">assignComponentTags</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a>&amp; newRefiner, MESH <span class=\"keyword\">const</span>&amp; mesh);</div>\n+<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\">  159</span> </div>\n+<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\">  161</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01117.html#a6999e259e020bc687d09ef616ab3825b\">assignFaceVaryingTopology</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a>&amp; newRefiner, MESH <span class=\"keyword\">const</span>&amp; mesh);</div>\n+<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\">  162</span> </div>\n+<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\">  164</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01117.html#a0c4c1d44df4c480bd0adfa9e86891b39\">reportInvalidTopology</a>(TopologyError errCode, <span class=\"keywordtype\">char</span> <span class=\"keyword\">const</span> * msg, MESH <span class=\"keyword\">const</span>&amp; mesh);</div>\n+<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\">  165</span> </div>\n+<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\">  167</span> </div>\n+<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\">  168</span><span class=\"keyword\">protected</span>:</div>\n+<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\">  170</span> </div>\n+<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\">  187</span> </div>\n+<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\">  189</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01117.html#ade6bd4c9d2e9eaf232d928f45b58e070\">setNumBaseVertices</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <span class=\"keywordtype\">int</span> count);</div>\n+<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\">  190</span> </div>\n+<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\">  192</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01117.html#a7ea1b1dae066a5255ac2c2d0d56c1460\">setNumBaseFaces</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <span class=\"keywordtype\">int</span> count);</div>\n+<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\">  193</span> </div>\n+<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\">  195</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01117.html#aac57d69b5bb270ccabe0d84364d065ce\">setNumBaseEdges</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <span class=\"keywordtype\">int</span> count);</div>\n+<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\">  196</span> </div>\n+<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\">  198</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01117.html#a8eea2866a8b3ba7bf6898984fe2a543a\">setNumBaseFaceVertices</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> f, <span class=\"keywordtype\">int</span> count);</div>\n+<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\">  199</span> </div>\n+<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\">  201</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01117.html#a11f84f47a826b23f96914e6c032ad0c3\">setNumBaseEdgeFaces</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> e, <span class=\"keywordtype\">int</span> count);</div>\n+<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\">  202</span> </div>\n+<div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\">  204</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01117.html#a5dabb3b53480f7070826d20114b826b3\">setNumBaseVertexFaces</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v, <span class=\"keywordtype\">int</span> count);</div>\n+<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\">  205</span> </div>\n+<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\">  207</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01117.html#a53afbc1d886920a1f7bd9fb66bc7c764\">setNumBaseVertexEdges</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v, <span class=\"keywordtype\">int</span> count);</div>\n+<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\">  208</span> </div>\n+<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\">  209</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01117.html#a117dbe541844bdb9987238648c4097f2\">getNumBaseVertices</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> &amp; newRefiner);</div>\n+<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\">  210</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01117.html#a020886e09179d60d2ca1dfaf99ef8c41\">getNumBaseFaces</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> &amp; newRefiner);</div>\n+<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\">  211</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01117.html#ad86027437b67e115c875a494ba140ccb\">getNumBaseEdges</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> &amp; newRefiner);</div>\n+<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\">  213</span> </div>\n+<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\">  215</span> </div>\n+<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\">  237</span> </div>\n+<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\">  239</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01357.html\">IndexArray</a> <a class=\"code hl_function\" href=\"a01117.html#a1c58093296637493b5d5f4f8dea7e02a\">getBaseFaceVertices</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> f);</div>\n+<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\">  240</span> </div>\n+<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\">  242</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01357.html\">IndexArray</a> <a class=\"code hl_function\" href=\"a01117.html#a8233d0fd9a411e3cebb6de37f0b4dd52\">getBaseFaceEdges</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner,    <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> f);</div>\n+<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\">  243</span> </div>\n+<div class=\"line\"><a id=\"l00245\" name=\"l00245\"></a><span class=\"lineno\">  245</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01357.html\">IndexArray</a> <a class=\"code hl_function\" href=\"a01117.html#a78f9b78d9fd7895d88449157202d2320\">getBaseEdgeVertices</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> e);</div>\n+<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\">  246</span> </div>\n+<div class=\"line\"><a id=\"l00248\" name=\"l00248\"></a><span class=\"lineno\">  248</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01357.html\">IndexArray</a> <a class=\"code hl_function\" href=\"a01117.html#a598f3a70a526b3d47f1edd383d904792\">getBaseEdgeFaces</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner,    <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> e);</div>\n+<div class=\"line\"><a id=\"l00249\" name=\"l00249\"></a><span class=\"lineno\">  249</span> </div>\n+<div class=\"line\"><a id=\"l00251\" name=\"l00251\"></a><span class=\"lineno\">  251</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01357.html\">IndexArray</a> <a class=\"code hl_function\" href=\"a01117.html#a7af5443e6de72365777b88c44ca73c05\">getBaseVertexFaces</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner,  <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v);</div>\n+<div class=\"line\"><a id=\"l00252\" name=\"l00252\"></a><span class=\"lineno\">  252</span> </div>\n+<div class=\"line\"><a id=\"l00254\" name=\"l00254\"></a><span class=\"lineno\">  254</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01357.html\">IndexArray</a> <a class=\"code hl_function\" href=\"a01117.html#ad2e926d52d7682c6e6453831e91eeb98\">getBaseVertexEdges</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner,  <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v);</div>\n+<div class=\"line\"><a id=\"l00255\" name=\"l00255\"></a><span class=\"lineno\">  255</span> </div>\n+<div class=\"line\"><a id=\"l00257\" name=\"l00257\"></a><span class=\"lineno\">  257</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01357.html\">LocalIndexArray</a> <a class=\"code hl_function\" href=\"a01117.html#a0f20907169dab737f3b4ca7fd45674fe\">getBaseVertexFaceLocalIndices</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v);</div>\n+<div class=\"line\"><a id=\"l00259\" name=\"l00259\"></a><span class=\"lineno\">  259</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01357.html\">LocalIndexArray</a> <a class=\"code hl_function\" href=\"a01117.html#a6ff4d209a7fa096c6fd8d314519006fb\">getBaseVertexEdgeLocalIndices</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v);</div>\n+<div class=\"line\"><a id=\"l00261\" name=\"l00261\"></a><span class=\"lineno\">  261</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01357.html\">LocalIndexArray</a> <a class=\"code hl_function\" href=\"a01117.html#a20ee9f5a59d04c6448e0e8903947cf03\">getBaseEdgeFaceLocalIndices</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> e);</div>\n+<div class=\"line\"><a id=\"l00262\" name=\"l00262\"></a><span class=\"lineno\">  262</span> </div>\n+<div class=\"line\"><a id=\"l00264\" name=\"l00264\"></a><span class=\"lineno\">  264</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01117.html#a363ef6e3c1fa9e4a58ff0a3852deec66\">populateBaseLocalIndices</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner);</div>\n+<div class=\"line\"><a id=\"l00265\" name=\"l00265\"></a><span class=\"lineno\">  265</span> </div>\n+<div class=\"line\"><a id=\"l00267\" name=\"l00267\"></a><span class=\"lineno\">  267</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01117.html#aaa60d4a0d80d8e76e3569ddeb3d16ca4\">setBaseEdgeNonManifold</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> e, <span class=\"keywordtype\">bool</span> b);</div>\n+<div class=\"line\"><a id=\"l00268\" name=\"l00268\"></a><span class=\"lineno\">  268</span> </div>\n+<div class=\"line\"><a id=\"l00270\" name=\"l00270\"></a><span class=\"lineno\">  270</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01117.html#a7b7a064f825e85f70c995e1614d3f569\">setBaseVertexNonManifold</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v, <span class=\"keywordtype\">bool</span> b);</div>\n+<div class=\"line\"><a id=\"l00272\" name=\"l00272\"></a><span class=\"lineno\">  272</span> </div>\n+<div class=\"line\"><a id=\"l00274\" name=\"l00274\"></a><span class=\"lineno\">  274</span> </div>\n+<div class=\"line\"><a id=\"l00283\" name=\"l00283\"></a><span class=\"lineno\">  283</span> </div>\n+<div class=\"line\"><a id=\"l00285\" name=\"l00285\"></a><span class=\"lineno\">  285</span>    <span class=\"keyword\">static</span> <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> <a class=\"code hl_function\" href=\"a01117.html#abadf245d872a6a226772a14a471324d0\">findBaseEdge</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v0, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v1);</div>\n+<div class=\"line\"><a id=\"l00286\" name=\"l00286\"></a><span class=\"lineno\">  286</span> </div>\n+<div class=\"line\"><a id=\"l00288\" name=\"l00288\"></a><span class=\"lineno\">  288</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01117.html#aa1b903734e1a9136e087c3cd4e3ff657\">setBaseEdgeSharpness</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> e, <span class=\"keywordtype\">float</span> sharpness);</div>\n+<div class=\"line\"><a id=\"l00289\" name=\"l00289\"></a><span class=\"lineno\">  289</span> </div>\n+<div class=\"line\"><a id=\"l00291\" name=\"l00291\"></a><span class=\"lineno\">  291</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01117.html#a6bcd3738db74e1efce001beee0693c8a\">setBaseVertexSharpness</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v, <span class=\"keywordtype\">float</span> sharpness);</div>\n+<div class=\"line\"><a id=\"l00292\" name=\"l00292\"></a><span class=\"lineno\">  292</span> </div>\n+<div class=\"line\"><a id=\"l00294\" name=\"l00294\"></a><span class=\"lineno\">  294</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01117.html#afe44424c4c292e12634a9eb1d4efbc7e\">setBaseFaceHole</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> f, <span class=\"keywordtype\">bool</span> isHole);</div>\n+<div class=\"line\"><a id=\"l00296\" name=\"l00296\"></a><span class=\"lineno\">  296</span> </div>\n+<div class=\"line\"><a id=\"l00298\" name=\"l00298\"></a><span class=\"lineno\">  298</span> </div>\n+<div class=\"line\"><a id=\"l00308\" name=\"l00308\"></a><span class=\"lineno\">  308</span> </div>\n+<div class=\"line\"><a id=\"l00310\" name=\"l00310\"></a><span class=\"lineno\">  310</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01117.html#ad73911f95b0a7025a510631c13526d4d\">createBaseFVarChannel</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <span class=\"keywordtype\">int</span> numValues);</div>\n+<div class=\"line\"><a id=\"l00311\" name=\"l00311\"></a><span class=\"lineno\">  311</span> </div>\n+<div class=\"line\"><a id=\"l00313\" name=\"l00313\"></a><span class=\"lineno\">  313</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01117.html#ad73911f95b0a7025a510631c13526d4d\">createBaseFVarChannel</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <span class=\"keywordtype\">int</span> numValues, <a class=\"code hl_class\" href=\"a01337.html\">Sdc::Options</a> <span class=\"keyword\">const</span>&amp; fvarOptions);</div>\n+<div class=\"line\"><a id=\"l00314\" name=\"l00314\"></a><span class=\"lineno\">  314</span> </div>\n+<div class=\"line\"><a id=\"l00316\" name=\"l00316\"></a><span class=\"lineno\">  316</span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01357.html\">IndexArray</a> <a class=\"code hl_function\" href=\"a01117.html#a5709feae1ab1f49570e4adf485e21433\">getBaseFaceFVarValues</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> face, <span class=\"keywordtype\">int</span> channel = 0);</div>\n+<div class=\"line\"><a id=\"l00317\" name=\"l00317\"></a><span class=\"lineno\">  317</span> </div>\n+<div class=\"line\"><a id=\"l00319\" name=\"l00319\"></a><span class=\"lineno\">  319</span> </div>\n+<div class=\"line\"><a id=\"l00320\" name=\"l00320\"></a><span class=\"lineno\">  320</span><span class=\"keyword\">protected</span>:</div>\n+<div class=\"line\"><a id=\"l00321\" name=\"l00321\"></a><span class=\"lineno\">  321</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00322\" name=\"l00322\"></a><span class=\"lineno\">  322</span>    <span class=\"comment\">//  Not to be specialized:</span></div>\n+<div class=\"line\"><a id=\"l00323\" name=\"l00323\"></a><span class=\"lineno\">  323</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\">  324</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01117.html#a2c34b14ad2b2ea6959f262de4974fdae\">populateBaseLevel</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a>&amp; refiner, MESH <span class=\"keyword\">const</span>&amp; mesh, <a class=\"code hl_struct\" href=\"a01137.html\">Options</a> options);</div>\n+<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\">  325</span> </div>\n+<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\">  326</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\">  327</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\">  328</span>    <span class=\"comment\">//  An oversight in the interfaces of the error reporting function between the factory</span></div>\n+<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\">  329</span>    <span class=\"comment\">//  class and the Vtr::Level requires this adapter function to avoid warnings.</span></div>\n+<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\">  330</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\">  331</span>    <span class=\"comment\">//  The static class method requires a reference as the MESH argument, but the interface</span></div>\n+<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\">  332</span>    <span class=\"comment\">//  for Vtr::Level requires a pointer (void*). So this adapter with a MESH* argument is</span></div>\n+<div class=\"line\"><a id=\"l00333\" name=\"l00333\"></a><span class=\"lineno\">  333</span>    <span class=\"comment\">//  used to effectively cast the function pointer required by Vtr::Level error reporting:</span></div>\n+<div class=\"line\"><a id=\"l00334\" name=\"l00334\"></a><span class=\"lineno\">  334</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00335\" name=\"l00335\"></a><span class=\"lineno\">  335</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> reportInvalidTopologyAdapter(TopologyError errCode, <span class=\"keywordtype\">char</span> <span class=\"keyword\">const</span> * msg, MESH <span class=\"keyword\">const</span> * mesh) {</div>\n+<div class=\"line\"><a id=\"l00336\" name=\"l00336\"></a><span class=\"lineno\">  336</span>        <a class=\"code hl_function\" href=\"a01117.html#a0c4c1d44df4c480bd0adfa9e86891b39\">reportInvalidTopology</a>(errCode, msg, *mesh);</div>\n+<div class=\"line\"><a id=\"l00337\" name=\"l00337\"></a><span class=\"lineno\">  337</span>    }</div>\n+<div class=\"line\"><a id=\"l00338\" name=\"l00338\"></a><span class=\"lineno\">  338</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00339\" name=\"l00339\"></a><span class=\"lineno\">  339</span> </div>\n+<div class=\"line\"><a id=\"l00340\" name=\"l00340\"></a><span class=\"lineno\">  340</span> </div>\n+<div class=\"line\"><a id=\"l00341\" name=\"l00341\"></a><span class=\"lineno\">  341</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00342\" name=\"l00342\"></a><span class=\"lineno\">  342</span><span class=\"comment\">//  Generic implementations:</span></div>\n+<div class=\"line\"><a id=\"l00343\" name=\"l00343\"></a><span class=\"lineno\">  343</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00344\" name=\"l00344\"></a><span class=\"lineno\">  344</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n+<div class=\"line\"><a id=\"l00345\" name=\"l00345\"></a><span class=\"lineno\">  345</span>TopologyRefiner*</div>\n+<div class=\"foldopen\" id=\"foldopen00346\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00346\" name=\"l00346\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#ab10eb061eba33095095d754241081ff9\">  346</a></span><a class=\"code hl_function\" href=\"a01117.html#ab10eb061eba33095095d754241081ff9\">TopologyRefinerFactory&lt;MESH&gt;::Create</a>(MESH <span class=\"keyword\">const</span>&amp; mesh, <a class=\"code hl_struct\" href=\"a01137.html\">Options</a> options) {</div>\n+<div class=\"line\"><a id=\"l00347\" name=\"l00347\"></a><span class=\"lineno\">  347</span> </div>\n+<div class=\"line\"><a id=\"l00348\" name=\"l00348\"></a><span class=\"lineno\">  348</span>    <a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> * refiner = <span class=\"keyword\">new</span> <a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a>(options.<a class=\"code hl_variable\" href=\"a01137.html#ab4a105466e7c764e3aabaa6c44c1eeb6\">schemeType</a>, options.<a class=\"code hl_variable\" href=\"a01137.html#a9ec2ab2b4bd49c6cf367dac80c8cbb94\">schemeOptions</a>);</div>\n+<div class=\"line\"><a id=\"l00349\" name=\"l00349\"></a><span class=\"lineno\">  349</span> </div>\n+<div class=\"line\"><a id=\"l00350\" name=\"l00350\"></a><span class=\"lineno\">  350</span>    <span class=\"keywordflow\">if</span> (! populateBaseLevel(*refiner, mesh, options)) {</div>\n+<div class=\"line\"><a id=\"l00351\" name=\"l00351\"></a><span class=\"lineno\">  351</span>        <span class=\"keyword\">delete</span> refiner;</div>\n+<div class=\"line\"><a id=\"l00352\" name=\"l00352\"></a><span class=\"lineno\">  352</span>        <span class=\"keywordflow\">return</span> 0;</div>\n+<div class=\"line\"><a id=\"l00353\" name=\"l00353\"></a><span class=\"lineno\">  353</span>    }</div>\n+<div class=\"line\"><a id=\"l00354\" name=\"l00354\"></a><span class=\"lineno\">  354</span> </div>\n+<div class=\"line\"><a id=\"l00355\" name=\"l00355\"></a><span class=\"lineno\">  355</span>    <span class=\"comment\">//  Eventually want to move the Refiner&#39;s inventory initialization here.  Currently it</span></div>\n+<div class=\"line\"><a id=\"l00356\" name=\"l00356\"></a><span class=\"lineno\">  356</span>    <span class=\"comment\">//  is handled after topology assignment, but if the inventory is to include additional</span></div>\n+<div class=\"line\"><a id=\"l00357\" name=\"l00357\"></a><span class=\"lineno\">  357</span>    <span class=\"comment\">//  features (e.g. holes, etc.) it is better off deferred to here.</span></div>\n+<div class=\"line\"><a id=\"l00358\" name=\"l00358\"></a><span class=\"lineno\">  358</span> </div>\n+<div class=\"line\"><a id=\"l00359\" name=\"l00359\"></a><span class=\"lineno\">  359</span>    <span class=\"keywordflow\">return</span> refiner;</div>\n+<div class=\"line\"><a id=\"l00360\" name=\"l00360\"></a><span class=\"lineno\">  360</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00361\" name=\"l00361\"></a><span class=\"lineno\">  361</span> </div>\n+<div class=\"line\"><a id=\"l00362\" name=\"l00362\"></a><span class=\"lineno\">  362</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n+<div class=\"line\"><a id=\"l00363\" name=\"l00363\"></a><span class=\"lineno\">  363</span><a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a>*</div>\n+<div class=\"foldopen\" id=\"foldopen00364\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00364\" name=\"l00364\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#adbb03cacfb38376d07a8ce7e99b98f4a\">  364</a></span><a class=\"code hl_function\" href=\"a01117.html#ab10eb061eba33095095d754241081ff9\">TopologyRefinerFactory&lt;MESH&gt;::Create</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> &amp; source) {</div>\n+<div class=\"line\"><a id=\"l00365\" name=\"l00365\"></a><span class=\"lineno\">  365</span> </div>\n+<div class=\"line\"><a id=\"l00366\" name=\"l00366\"></a><span class=\"lineno\">  366</span>    <span class=\"keywordflow\">return</span> <span class=\"keyword\">new</span> <a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a>(source);</div>\n+<div class=\"line\"><a id=\"l00367\" name=\"l00367\"></a><span class=\"lineno\">  367</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00368\" name=\"l00368\"></a><span class=\"lineno\">  368</span> </div>\n+<div class=\"line\"><a id=\"l00369\" name=\"l00369\"></a><span class=\"lineno\">  369</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n+<div class=\"line\"><a id=\"l00370\" name=\"l00370\"></a><span class=\"lineno\">  370</span><span class=\"keywordtype\">bool</span></div>\n+<div class=\"foldopen\" id=\"foldopen00371\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00371\" name=\"l00371\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#a2c34b14ad2b2ea6959f262de4974fdae\">  371</a></span><a class=\"code hl_function\" href=\"a01117.html#a2c34b14ad2b2ea6959f262de4974fdae\">TopologyRefinerFactory&lt;MESH&gt;::populateBaseLevel</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a>&amp; refiner, MESH <span class=\"keyword\">const</span>&amp; mesh, <a class=\"code hl_struct\" href=\"a01137.html\">Options</a> options) {</div>\n+<div class=\"line\"><a id=\"l00372\" name=\"l00372\"></a><span class=\"lineno\">  372</span> </div>\n+<div class=\"line\"><a id=\"l00373\" name=\"l00373\"></a><span class=\"lineno\">  373</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00374\" name=\"l00374\"></a><span class=\"lineno\">  374</span>    <span class=\"comment\">//  Construction of a specialized topology refiner involves four steps, each of which</span></div>\n+<div class=\"line\"><a id=\"l00375\" name=\"l00375\"></a><span class=\"lineno\">  375</span>    <span class=\"comment\">//  involves a method specialized for MESH followed by one that takes an action in</span></div>\n+<div class=\"line\"><a id=\"l00376\" name=\"l00376\"></a><span class=\"lineno\">  376</span>    <span class=\"comment\">//  response to it or in preparation for the next step.</span></div>\n+<div class=\"line\"><a id=\"l00377\" name=\"l00377\"></a><span class=\"lineno\">  377</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00378\" name=\"l00378\"></a><span class=\"lineno\">  378</span>    <span class=\"comment\">//  Both the specialized methods and those that follow them may find fault in the</span></div>\n+<div class=\"line\"><a id=\"l00379\" name=\"l00379\"></a><span class=\"lineno\">  379</span>    <span class=\"comment\">//  construction and trigger failure at any time:</span></div>\n+<div class=\"line\"><a id=\"l00380\" name=\"l00380\"></a><span class=\"lineno\">  380</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00381\" name=\"l00381\"></a><span class=\"lineno\">  381</span> </div>\n+<div class=\"line\"><a id=\"l00382\" name=\"l00382\"></a><span class=\"lineno\">  382</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00383\" name=\"l00383\"></a><span class=\"lineno\">  383</span>    <span class=\"comment\">//  Sizing of the topology -- this is a required specialization for MESH.  This defines</span></div>\n+<div class=\"line\"><a id=\"l00384\" name=\"l00384\"></a><span class=\"lineno\">  384</span>    <span class=\"comment\">//  an inventory of all components and their relations that is used to allocate buffers</span></div>\n+<div class=\"line\"><a id=\"l00385\" name=\"l00385\"></a><span class=\"lineno\">  385</span>    <span class=\"comment\">//  to be efficiently populated in the subsequent topology assignment step.</span></div>\n+<div class=\"line\"><a id=\"l00386\" name=\"l00386\"></a><span class=\"lineno\">  386</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00387\" name=\"l00387\"></a><span class=\"lineno\">  387</span>    <span class=\"keywordflow\">if</span> (! resizeComponentTopology(refiner, mesh)) <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00388\" name=\"l00388\"></a><span class=\"lineno\">  388</span>    <span class=\"keywordflow\">if</span> (! prepareComponentTopologySizing(refiner)) <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00389\" name=\"l00389\"></a><span class=\"lineno\">  389</span> </div>\n+<div class=\"line\"><a id=\"l00390\" name=\"l00390\"></a><span class=\"lineno\">  390</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00391\" name=\"l00391\"></a><span class=\"lineno\">  391</span>    <span class=\"comment\">//  Assignment of the topology -- this is a required specialization for MESH.  If edges</span></div>\n+<div class=\"line\"><a id=\"l00392\" name=\"l00392\"></a><span class=\"lineno\">  392</span>    <span class=\"comment\">//  are specified, all other topological relations are expected to be defined for them.</span></div>\n+<div class=\"line\"><a id=\"l00393\" name=\"l00393\"></a><span class=\"lineno\">  393</span>    <span class=\"comment\">//  Otherwise edges and remaining topology will be completed from the face-vertices:</span></div>\n+<div class=\"line\"><a id=\"l00394\" name=\"l00394\"></a><span class=\"lineno\">  394</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00395\" name=\"l00395\"></a><span class=\"lineno\">  395</span>    <span class=\"keywordtype\">bool</span>             validate = options.<a class=\"code hl_variable\" href=\"a01137.html#adaa22b025e8615d6e4281a86b794e5df\">validateFullTopology</a>;</div>\n+<div class=\"line\"><a id=\"l00396\" name=\"l00396\"></a><span class=\"lineno\">  396</span>    <a class=\"code hl_typedef\" href=\"a01133.html#a896a964625491e084b3d776acd10f053\">TopologyCallback</a> callback = <span class=\"keyword\">reinterpret_cast&lt;</span><a class=\"code hl_typedef\" href=\"a01133.html#a896a964625491e084b3d776acd10f053\">TopologyCallback</a><span class=\"keyword\">&gt;</span>(reportInvalidTopologyAdapter);</div>\n+<div class=\"line\"><a id=\"l00397\" name=\"l00397\"></a><span class=\"lineno\">  397</span>    <span class=\"keywordtype\">void</span> <span class=\"keyword\">const</span> *     userData = &amp;mesh;</div>\n+<div class=\"line\"><a id=\"l00398\" name=\"l00398\"></a><span class=\"lineno\">  398</span>        </div>\n+<div class=\"line\"><a id=\"l00399\" name=\"l00399\"></a><span class=\"lineno\">  399</span>    <span class=\"keywordflow\">if</span> (! assignComponentTopology(refiner, mesh)) <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00400\" name=\"l00400\"></a><span class=\"lineno\">  400</span>    <span class=\"keywordflow\">if</span> (! prepareComponentTopologyAssignment(refiner, validate, callback, userData)) <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00401\" name=\"l00401\"></a><span class=\"lineno\">  401</span> </div>\n+<div class=\"line\"><a id=\"l00402\" name=\"l00402\"></a><span class=\"lineno\">  402</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00403\" name=\"l00403\"></a><span class=\"lineno\">  403</span>    <span class=\"comment\">//  User assigned and internal tagging of components -- an optional specialization for</span></div>\n+<div class=\"line\"><a id=\"l00404\" name=\"l00404\"></a><span class=\"lineno\">  404</span>    <span class=\"comment\">//  MESH.  Allows the specification of sharpness values, holes, etc.</span></div>\n+<div class=\"line\"><a id=\"l00405\" name=\"l00405\"></a><span class=\"lineno\">  405</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00406\" name=\"l00406\"></a><span class=\"lineno\">  406</span>    <span class=\"keywordflow\">if</span> (! assignComponentTags(refiner, mesh)) <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00407\" name=\"l00407\"></a><span class=\"lineno\">  407</span>    <span class=\"keywordflow\">if</span> (! prepareComponentTagsAndSharpness(refiner)) <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00408\" name=\"l00408\"></a><span class=\"lineno\">  408</span> </div>\n+<div class=\"line\"><a id=\"l00409\" name=\"l00409\"></a><span class=\"lineno\">  409</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00410\" name=\"l00410\"></a><span class=\"lineno\">  410</span>    <span class=\"comment\">//  Defining channels of face-varying primvar data -- an optional specialization for MESH.</span></div>\n+<div class=\"line\"><a id=\"l00411\" name=\"l00411\"></a><span class=\"lineno\">  411</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00412\" name=\"l00412\"></a><span class=\"lineno\">  412</span>    <span class=\"keywordflow\">if</span> (! assignFaceVaryingTopology(refiner, mesh)) <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00413\" name=\"l00413\"></a><span class=\"lineno\">  413</span>    <span class=\"keywordflow\">if</span> (! prepareFaceVaryingChannels(refiner)) <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00414\" name=\"l00414\"></a><span class=\"lineno\">  414</span> </div>\n+<div class=\"line\"><a id=\"l00415\" name=\"l00415\"></a><span class=\"lineno\">  415</span>    <span class=\"keywordflow\">return</span> <span class=\"keyword\">true</span>;</div>\n+<div class=\"line\"><a id=\"l00416\" name=\"l00416\"></a><span class=\"lineno\">  416</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00417\" name=\"l00417\"></a><span class=\"lineno\">  417</span> </div>\n+<div class=\"line\"><a id=\"l00418\" name=\"l00418\"></a><span class=\"lineno\">  418</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n+<div class=\"line\"><a id=\"l00419\" name=\"l00419\"></a><span class=\"lineno\">  419</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00420\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00420\" name=\"l00420\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#a7ea1b1dae066a5255ac2c2d0d56c1460\">  420</a></span><a class=\"code hl_function\" href=\"a01117.html#a7ea1b1dae066a5255ac2c2d0d56c1460\">TopologyRefinerFactory&lt;MESH&gt;::setNumBaseFaces</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <span class=\"keywordtype\">int</span> count) {</div>\n+<div class=\"line\"><a id=\"l00421\" name=\"l00421\"></a><span class=\"lineno\">  421</span>    newRefiner._levels[0]-&gt;resizeFaces(count);</div>\n+<div class=\"line\"><a id=\"l00422\" name=\"l00422\"></a><span class=\"lineno\">  422</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00423\" name=\"l00423\"></a><span class=\"lineno\">  423</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n+<div class=\"line\"><a id=\"l00424\" name=\"l00424\"></a><span class=\"lineno\">  424</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00425\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00425\" name=\"l00425\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#aac57d69b5bb270ccabe0d84364d065ce\">  425</a></span><a class=\"code hl_function\" href=\"a01117.html#aac57d69b5bb270ccabe0d84364d065ce\">TopologyRefinerFactory&lt;MESH&gt;::setNumBaseEdges</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <span class=\"keywordtype\">int</span> count) {</div>\n+<div class=\"line\"><a id=\"l00426\" name=\"l00426\"></a><span class=\"lineno\">  426</span>    newRefiner._levels[0]-&gt;resizeEdges(count);</div>\n+<div class=\"line\"><a id=\"l00427\" name=\"l00427\"></a><span class=\"lineno\">  427</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00428\" name=\"l00428\"></a><span class=\"lineno\">  428</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n+<div class=\"line\"><a id=\"l00429\" name=\"l00429\"></a><span class=\"lineno\">  429</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00430\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00430\" name=\"l00430\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#ade6bd4c9d2e9eaf232d928f45b58e070\">  430</a></span><a class=\"code hl_function\" href=\"a01117.html#ade6bd4c9d2e9eaf232d928f45b58e070\">TopologyRefinerFactory&lt;MESH&gt;::setNumBaseVertices</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <span class=\"keywordtype\">int</span> count) {</div>\n+<div class=\"line\"><a id=\"l00431\" name=\"l00431\"></a><span class=\"lineno\">  431</span>    newRefiner._levels[0]-&gt;resizeVertices(count);</div>\n+<div class=\"line\"><a id=\"l00432\" name=\"l00432\"></a><span class=\"lineno\">  432</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00433\" name=\"l00433\"></a><span class=\"lineno\">  433</span> </div>\n+<div class=\"line\"><a id=\"l00434\" name=\"l00434\"></a><span class=\"lineno\">  434</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n+<div class=\"line\"><a id=\"l00435\" name=\"l00435\"></a><span class=\"lineno\">  435</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span></div>\n+<div class=\"foldopen\" id=\"foldopen00436\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00436\" name=\"l00436\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#a020886e09179d60d2ca1dfaf99ef8c41\">  436</a></span><a class=\"code hl_function\" href=\"a01117.html#a020886e09179d60d2ca1dfaf99ef8c41\">TopologyRefinerFactory&lt;MESH&gt;::getNumBaseFaces</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> &amp; newRefiner) {</div>\n+<div class=\"line\"><a id=\"l00437\" name=\"l00437\"></a><span class=\"lineno\">  437</span>    <span class=\"keywordflow\">return</span> newRefiner._levels[0]-&gt;getNumFaces();</div>\n+<div class=\"line\"><a id=\"l00438\" name=\"l00438\"></a><span class=\"lineno\">  438</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00439\" name=\"l00439\"></a><span class=\"lineno\">  439</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n+<div class=\"line\"><a id=\"l00440\" name=\"l00440\"></a><span class=\"lineno\">  440</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span></div>\n+<div class=\"foldopen\" id=\"foldopen00441\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00441\" name=\"l00441\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#ad86027437b67e115c875a494ba140ccb\">  441</a></span><a class=\"code hl_function\" href=\"a01117.html#ad86027437b67e115c875a494ba140ccb\">TopologyRefinerFactory&lt;MESH&gt;::getNumBaseEdges</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> &amp; newRefiner) {</div>\n+<div class=\"line\"><a id=\"l00442\" name=\"l00442\"></a><span class=\"lineno\">  442</span>    <span class=\"keywordflow\">return</span> newRefiner._levels[0]-&gt;getNumEdges();</div>\n+<div class=\"line\"><a id=\"l00443\" name=\"l00443\"></a><span class=\"lineno\">  443</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00444\" name=\"l00444\"></a><span class=\"lineno\">  444</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n+<div class=\"line\"><a id=\"l00445\" name=\"l00445\"></a><span class=\"lineno\">  445</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span></div>\n+<div class=\"foldopen\" id=\"foldopen00446\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00446\" name=\"l00446\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#a117dbe541844bdb9987238648c4097f2\">  446</a></span><a class=\"code hl_function\" href=\"a01117.html#a117dbe541844bdb9987238648c4097f2\">TopologyRefinerFactory&lt;MESH&gt;::getNumBaseVertices</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> &amp; newRefiner) {</div>\n+<div class=\"line\"><a id=\"l00447\" name=\"l00447\"></a><span class=\"lineno\">  447</span>    <span class=\"keywordflow\">return</span> newRefiner._levels[0]-&gt;getNumVertices();</div>\n+<div class=\"line\"><a id=\"l00448\" name=\"l00448\"></a><span class=\"lineno\">  448</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00449\" name=\"l00449\"></a><span class=\"lineno\">  449</span> </div>\n+<div class=\"line\"><a id=\"l00450\" name=\"l00450\"></a><span class=\"lineno\">  450</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n+<div class=\"line\"><a id=\"l00451\" name=\"l00451\"></a><span class=\"lineno\">  451</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00452\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00452\" name=\"l00452\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#a8eea2866a8b3ba7bf6898984fe2a543a\">  452</a></span><a class=\"code hl_function\" href=\"a01117.html#a8eea2866a8b3ba7bf6898984fe2a543a\">TopologyRefinerFactory&lt;MESH&gt;::setNumBaseFaceVertices</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> f, <span class=\"keywordtype\">int</span> count) {</div>\n+<div class=\"line\"><a id=\"l00453\" name=\"l00453\"></a><span class=\"lineno\">  453</span>    newRefiner._levels[0]-&gt;resizeFaceVertices(f, count);</div>\n+<div class=\"line\"><a id=\"l00454\" name=\"l00454\"></a><span class=\"lineno\">  454</span>    newRefiner._hasIrregFaces = newRefiner._hasIrregFaces || (count != newRefiner._regFaceSize);</div>\n+<div class=\"line\"><a id=\"l00455\" name=\"l00455\"></a><span class=\"lineno\">  455</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00456\" name=\"l00456\"></a><span class=\"lineno\">  456</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n+<div class=\"line\"><a id=\"l00457\" name=\"l00457\"></a><span class=\"lineno\">  457</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00458\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00458\" name=\"l00458\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#a11f84f47a826b23f96914e6c032ad0c3\">  458</a></span><a class=\"code hl_function\" href=\"a01117.html#a11f84f47a826b23f96914e6c032ad0c3\">TopologyRefinerFactory&lt;MESH&gt;::setNumBaseEdgeFaces</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> e, <span class=\"keywordtype\">int</span> count) {</div>\n+<div class=\"line\"><a id=\"l00459\" name=\"l00459\"></a><span class=\"lineno\">  459</span>    newRefiner._levels[0]-&gt;resizeEdgeFaces(e, count);</div>\n+<div class=\"line\"><a id=\"l00460\" name=\"l00460\"></a><span class=\"lineno\">  460</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00461\" name=\"l00461\"></a><span class=\"lineno\">  461</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n+<div class=\"line\"><a id=\"l00462\" name=\"l00462\"></a><span class=\"lineno\">  462</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00463\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00463\" name=\"l00463\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#a5dabb3b53480f7070826d20114b826b3\">  463</a></span><a class=\"code hl_function\" href=\"a01117.html#a5dabb3b53480f7070826d20114b826b3\">TopologyRefinerFactory&lt;MESH&gt;::setNumBaseVertexFaces</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v, <span class=\"keywordtype\">int</span> count) {</div>\n+<div class=\"line\"><a id=\"l00464\" name=\"l00464\"></a><span class=\"lineno\">  464</span>    newRefiner._levels[0]-&gt;resizeVertexFaces(v, count);</div>\n+<div class=\"line\"><a id=\"l00465\" name=\"l00465\"></a><span class=\"lineno\">  465</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00466\" name=\"l00466\"></a><span class=\"lineno\">  466</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n+<div class=\"line\"><a id=\"l00467\" name=\"l00467\"></a><span class=\"lineno\">  467</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00468\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00468\" name=\"l00468\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#a53afbc1d886920a1f7bd9fb66bc7c764\">  468</a></span><a class=\"code hl_function\" href=\"a01117.html#a53afbc1d886920a1f7bd9fb66bc7c764\">TopologyRefinerFactory&lt;MESH&gt;::setNumBaseVertexEdges</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v, <span class=\"keywordtype\">int</span> count) {</div>\n+<div class=\"line\"><a id=\"l00469\" name=\"l00469\"></a><span class=\"lineno\">  469</span>    newRefiner._levels[0]-&gt;resizeVertexEdges(v, count);</div>\n+<div class=\"line\"><a id=\"l00470\" name=\"l00470\"></a><span class=\"lineno\">  470</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00471\" name=\"l00471\"></a><span class=\"lineno\">  471</span> </div>\n+<div class=\"line\"><a id=\"l00472\" name=\"l00472\"></a><span class=\"lineno\">  472</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n+<div class=\"line\"><a id=\"l00473\" name=\"l00473\"></a><span class=\"lineno\">  473</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a01357.html\">IndexArray</a></div>\n+<div class=\"foldopen\" id=\"foldopen00474\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00474\" name=\"l00474\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#a1c58093296637493b5d5f4f8dea7e02a\">  474</a></span><a class=\"code hl_function\" href=\"a01117.html#a1c58093296637493b5d5f4f8dea7e02a\">TopologyRefinerFactory&lt;MESH&gt;::getBaseFaceVertices</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> f) {</div>\n+<div class=\"line\"><a id=\"l00475\" name=\"l00475\"></a><span class=\"lineno\">  475</span>    <span class=\"keywordflow\">return</span> newRefiner._levels[0]-&gt;getFaceVertices(f);</div>\n+<div class=\"line\"><a id=\"l00476\" name=\"l00476\"></a><span class=\"lineno\">  476</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00477\" name=\"l00477\"></a><span class=\"lineno\">  477</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n+<div class=\"line\"><a id=\"l00478\" name=\"l00478\"></a><span class=\"lineno\">  478</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a01357.html\">IndexArray</a></div>\n+<div class=\"foldopen\" id=\"foldopen00479\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00479\" name=\"l00479\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#a8233d0fd9a411e3cebb6de37f0b4dd52\">  479</a></span><a class=\"code hl_function\" href=\"a01117.html#a8233d0fd9a411e3cebb6de37f0b4dd52\">TopologyRefinerFactory&lt;MESH&gt;::getBaseFaceEdges</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner,    <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> f) {</div>\n+<div class=\"line\"><a id=\"l00480\" name=\"l00480\"></a><span class=\"lineno\">  480</span>    <span class=\"keywordflow\">return</span> newRefiner._levels[0]-&gt;getFaceEdges(f);</div>\n+<div class=\"line\"><a id=\"l00481\" name=\"l00481\"></a><span class=\"lineno\">  481</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00482\" name=\"l00482\"></a><span class=\"lineno\">  482</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n+<div class=\"line\"><a id=\"l00483\" name=\"l00483\"></a><span class=\"lineno\">  483</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a01357.html\">IndexArray</a></div>\n+<div class=\"foldopen\" id=\"foldopen00484\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00484\" name=\"l00484\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#a78f9b78d9fd7895d88449157202d2320\">  484</a></span><a class=\"code hl_function\" href=\"a01117.html#a78f9b78d9fd7895d88449157202d2320\">TopologyRefinerFactory&lt;MESH&gt;::getBaseEdgeVertices</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> e) {</div>\n+<div class=\"line\"><a id=\"l00485\" name=\"l00485\"></a><span class=\"lineno\">  485</span>    <span class=\"keywordflow\">return</span> newRefiner._levels[0]-&gt;getEdgeVertices(e);</div>\n+<div class=\"line\"><a id=\"l00486\" name=\"l00486\"></a><span class=\"lineno\">  486</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00487\" name=\"l00487\"></a><span class=\"lineno\">  487</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n+<div class=\"line\"><a id=\"l00488\" name=\"l00488\"></a><span class=\"lineno\">  488</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a01357.html\">IndexArray</a></div>\n+<div class=\"foldopen\" id=\"foldopen00489\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00489\" name=\"l00489\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#a598f3a70a526b3d47f1edd383d904792\">  489</a></span><a class=\"code hl_function\" href=\"a01117.html#a598f3a70a526b3d47f1edd383d904792\">TopologyRefinerFactory&lt;MESH&gt;::getBaseEdgeFaces</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner,    <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> e) {</div>\n+<div class=\"line\"><a id=\"l00490\" name=\"l00490\"></a><span class=\"lineno\">  490</span>    <span class=\"keywordflow\">return</span> newRefiner._levels[0]-&gt;getEdgeFaces(e);</div>\n+<div class=\"line\"><a id=\"l00491\" name=\"l00491\"></a><span class=\"lineno\">  491</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00492\" name=\"l00492\"></a><span class=\"lineno\">  492</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n+<div class=\"line\"><a id=\"l00493\" name=\"l00493\"></a><span class=\"lineno\">  493</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a01357.html\">IndexArray</a></div>\n+<div class=\"foldopen\" id=\"foldopen00494\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00494\" name=\"l00494\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#a7af5443e6de72365777b88c44ca73c05\">  494</a></span><a class=\"code hl_function\" href=\"a01117.html#a7af5443e6de72365777b88c44ca73c05\">TopologyRefinerFactory&lt;MESH&gt;::getBaseVertexFaces</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner,  <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v) {</div>\n+<div class=\"line\"><a id=\"l00495\" name=\"l00495\"></a><span class=\"lineno\">  495</span>    <span class=\"keywordflow\">return</span> newRefiner._levels[0]-&gt;getVertexFaces(v);</div>\n+<div class=\"line\"><a id=\"l00496\" name=\"l00496\"></a><span class=\"lineno\">  496</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00497\" name=\"l00497\"></a><span class=\"lineno\">  497</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n+<div class=\"line\"><a id=\"l00498\" name=\"l00498\"></a><span class=\"lineno\">  498</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a01357.html\">IndexArray</a></div>\n+<div class=\"foldopen\" id=\"foldopen00499\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00499\" name=\"l00499\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#ad2e926d52d7682c6e6453831e91eeb98\">  499</a></span><a class=\"code hl_function\" href=\"a01117.html#ad2e926d52d7682c6e6453831e91eeb98\">TopologyRefinerFactory&lt;MESH&gt;::getBaseVertexEdges</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner,  <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v) {</div>\n+<div class=\"line\"><a id=\"l00500\" name=\"l00500\"></a><span class=\"lineno\">  500</span>    <span class=\"keywordflow\">return</span> newRefiner._levels[0]-&gt;getVertexEdges(v);</div>\n+<div class=\"line\"><a id=\"l00501\" name=\"l00501\"></a><span class=\"lineno\">  501</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00502\" name=\"l00502\"></a><span class=\"lineno\">  502</span> </div>\n+<div class=\"line\"><a id=\"l00503\" name=\"l00503\"></a><span class=\"lineno\">  503</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n+<div class=\"line\"><a id=\"l00504\" name=\"l00504\"></a><span class=\"lineno\">  504</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a01357.html\">LocalIndexArray</a></div>\n+<div class=\"foldopen\" id=\"foldopen00505\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00505\" name=\"l00505\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#a20ee9f5a59d04c6448e0e8903947cf03\">  505</a></span><a class=\"code hl_function\" href=\"a01117.html#a20ee9f5a59d04c6448e0e8903947cf03\">TopologyRefinerFactory&lt;MESH&gt;::getBaseEdgeFaceLocalIndices</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> e)   {</div>\n+<div class=\"line\"><a id=\"l00506\" name=\"l00506\"></a><span class=\"lineno\">  506</span>    <span class=\"keywordflow\">return</span> newRefiner._levels[0]-&gt;getEdgeFaceLocalIndices(e);</div>\n+<div class=\"line\"><a id=\"l00507\" name=\"l00507\"></a><span class=\"lineno\">  507</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00508\" name=\"l00508\"></a><span class=\"lineno\">  508</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n+<div class=\"line\"><a id=\"l00509\" name=\"l00509\"></a><span class=\"lineno\">  509</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a01357.html\">LocalIndexArray</a></div>\n+<div class=\"foldopen\" id=\"foldopen00510\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00510\" name=\"l00510\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#a0f20907169dab737f3b4ca7fd45674fe\">  510</a></span><a class=\"code hl_function\" href=\"a01117.html#a0f20907169dab737f3b4ca7fd45674fe\">TopologyRefinerFactory&lt;MESH&gt;::getBaseVertexFaceLocalIndices</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v) {</div>\n+<div class=\"line\"><a id=\"l00511\" name=\"l00511\"></a><span class=\"lineno\">  511</span>    <span class=\"keywordflow\">return</span> newRefiner._levels[0]-&gt;getVertexFaceLocalIndices(v);</div>\n+<div class=\"line\"><a id=\"l00512\" name=\"l00512\"></a><span class=\"lineno\">  512</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00513\" name=\"l00513\"></a><span class=\"lineno\">  513</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n+<div class=\"line\"><a id=\"l00514\" name=\"l00514\"></a><span class=\"lineno\">  514</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a01357.html\">LocalIndexArray</a></div>\n+<div class=\"foldopen\" id=\"foldopen00515\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00515\" name=\"l00515\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#a6ff4d209a7fa096c6fd8d314519006fb\">  515</a></span><a class=\"code hl_function\" href=\"a01117.html#a6ff4d209a7fa096c6fd8d314519006fb\">TopologyRefinerFactory&lt;MESH&gt;::getBaseVertexEdgeLocalIndices</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v) {</div>\n+<div class=\"line\"><a id=\"l00516\" name=\"l00516\"></a><span class=\"lineno\">  516</span>    <span class=\"keywordflow\">return</span> newRefiner._levels[0]-&gt;getVertexEdgeLocalIndices(v);</div>\n+<div class=\"line\"><a id=\"l00517\" name=\"l00517\"></a><span class=\"lineno\">  517</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00518\" name=\"l00518\"></a><span class=\"lineno\">  518</span> </div>\n+<div class=\"line\"><a id=\"l00519\" name=\"l00519\"></a><span class=\"lineno\">  519</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n+<div class=\"line\"><a id=\"l00520\" name=\"l00520\"></a><span class=\"lineno\">  520</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a></div>\n+<div class=\"foldopen\" id=\"foldopen00521\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00521\" name=\"l00521\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#abadf245d872a6a226772a14a471324d0\">  521</a></span><a class=\"code hl_function\" href=\"a01117.html#abadf245d872a6a226772a14a471324d0\">TopologyRefinerFactory&lt;MESH&gt;::findBaseEdge</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v0, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v1) {</div>\n+<div class=\"line\"><a id=\"l00522\" name=\"l00522\"></a><span class=\"lineno\">  522</span>    <span class=\"keywordflow\">return</span> newRefiner._levels[0]-&gt;findEdge(v0, v1);</div>\n+<div class=\"line\"><a id=\"l00523\" name=\"l00523\"></a><span class=\"lineno\">  523</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00524\" name=\"l00524\"></a><span class=\"lineno\">  524</span> </div>\n+<div class=\"line\"><a id=\"l00525\" name=\"l00525\"></a><span class=\"lineno\">  525</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n+<div class=\"line\"><a id=\"l00526\" name=\"l00526\"></a><span class=\"lineno\">  526</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00527\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00527\" name=\"l00527\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#a363ef6e3c1fa9e4a58ff0a3852deec66\">  527</a></span><a class=\"code hl_function\" href=\"a01117.html#a363ef6e3c1fa9e4a58ff0a3852deec66\">TopologyRefinerFactory&lt;MESH&gt;::populateBaseLocalIndices</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner) {</div>\n+<div class=\"line\"><a id=\"l00528\" name=\"l00528\"></a><span class=\"lineno\">  528</span>    newRefiner._levels[0]-&gt;populateLocalIndices();</div>\n+<div class=\"line\"><a id=\"l00529\" name=\"l00529\"></a><span class=\"lineno\">  529</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00530\" name=\"l00530\"></a><span class=\"lineno\">  530</span> </div>\n+<div class=\"line\"><a id=\"l00531\" name=\"l00531\"></a><span class=\"lineno\">  531</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n+<div class=\"line\"><a id=\"l00532\" name=\"l00532\"></a><span class=\"lineno\">  532</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00533\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00533\" name=\"l00533\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#aaa60d4a0d80d8e76e3569ddeb3d16ca4\">  533</a></span><a class=\"code hl_function\" href=\"a01117.html#aaa60d4a0d80d8e76e3569ddeb3d16ca4\">TopologyRefinerFactory&lt;MESH&gt;::setBaseEdgeNonManifold</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> e, <span class=\"keywordtype\">bool</span> b) {</div>\n+<div class=\"line\"><a id=\"l00534\" name=\"l00534\"></a><span class=\"lineno\">  534</span>    newRefiner._levels[0]-&gt;setEdgeNonManifold(e, b);</div>\n+<div class=\"line\"><a id=\"l00535\" name=\"l00535\"></a><span class=\"lineno\">  535</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00536\" name=\"l00536\"></a><span class=\"lineno\">  536</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n+<div class=\"line\"><a id=\"l00537\" name=\"l00537\"></a><span class=\"lineno\">  537</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00538\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00538\" name=\"l00538\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#a7b7a064f825e85f70c995e1614d3f569\">  538</a></span><a class=\"code hl_function\" href=\"a01117.html#a7b7a064f825e85f70c995e1614d3f569\">TopologyRefinerFactory&lt;MESH&gt;::setBaseVertexNonManifold</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v, <span class=\"keywordtype\">bool</span> b) {</div>\n+<div class=\"line\"><a id=\"l00539\" name=\"l00539\"></a><span class=\"lineno\">  539</span>    newRefiner._levels[0]-&gt;setVertexNonManifold(v, b);</div>\n+<div class=\"line\"><a id=\"l00540\" name=\"l00540\"></a><span class=\"lineno\">  540</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00541\" name=\"l00541\"></a><span class=\"lineno\">  541</span> </div>\n+<div class=\"line\"><a id=\"l00542\" name=\"l00542\"></a><span class=\"lineno\">  542</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n+<div class=\"line\"><a id=\"l00543\" name=\"l00543\"></a><span class=\"lineno\">  543</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00544\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00544\" name=\"l00544\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#aa1b903734e1a9136e087c3cd4e3ff657\">  544</a></span><a class=\"code hl_function\" href=\"a01117.html#aa1b903734e1a9136e087c3cd4e3ff657\">TopologyRefinerFactory&lt;MESH&gt;::setBaseEdgeSharpness</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> e, <span class=\"keywordtype\">float</span> s)   {</div>\n+<div class=\"line\"><a id=\"l00545\" name=\"l00545\"></a><span class=\"lineno\">  545</span>    newRefiner._levels[0]-&gt;getEdgeSharpness(e) = s;</div>\n+<div class=\"line\"><a id=\"l00546\" name=\"l00546\"></a><span class=\"lineno\">  546</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00547\" name=\"l00547\"></a><span class=\"lineno\">  547</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n+<div class=\"line\"><a id=\"l00548\" name=\"l00548\"></a><span class=\"lineno\">  548</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00549\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00549\" name=\"l00549\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#a6bcd3738db74e1efce001beee0693c8a\">  549</a></span><a class=\"code hl_function\" href=\"a01117.html#a6bcd3738db74e1efce001beee0693c8a\">TopologyRefinerFactory&lt;MESH&gt;::setBaseVertexSharpness</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v, <span class=\"keywordtype\">float</span> s) {</div>\n+<div class=\"line\"><a id=\"l00550\" name=\"l00550\"></a><span class=\"lineno\">  550</span>    newRefiner._levels[0]-&gt;getVertexSharpness(v) = s;</div>\n+<div class=\"line\"><a id=\"l00551\" name=\"l00551\"></a><span class=\"lineno\">  551</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00552\" name=\"l00552\"></a><span class=\"lineno\">  552</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n+<div class=\"line\"><a id=\"l00553\" name=\"l00553\"></a><span class=\"lineno\">  553</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00554\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00554\" name=\"l00554\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#afe44424c4c292e12634a9eb1d4efbc7e\">  554</a></span><a class=\"code hl_function\" href=\"a01117.html#afe44424c4c292e12634a9eb1d4efbc7e\">TopologyRefinerFactory&lt;MESH&gt;::setBaseFaceHole</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> f, <span class=\"keywordtype\">bool</span> b) {</div>\n+<div class=\"line\"><a id=\"l00555\" name=\"l00555\"></a><span class=\"lineno\">  555</span>    newRefiner._levels[0]-&gt;setFaceHole(f, b);</div>\n+<div class=\"line\"><a id=\"l00556\" name=\"l00556\"></a><span class=\"lineno\">  556</span>    newRefiner._hasHoles = newRefiner._hasHoles || b;</div>\n+<div class=\"line\"><a id=\"l00557\" name=\"l00557\"></a><span class=\"lineno\">  557</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00558\" name=\"l00558\"></a><span class=\"lineno\">  558</span> </div>\n+<div class=\"line\"><a id=\"l00559\" name=\"l00559\"></a><span class=\"lineno\">  559</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n+<div class=\"line\"><a id=\"l00560\" name=\"l00560\"></a><span class=\"lineno\">  560</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span></div>\n+<div class=\"foldopen\" id=\"foldopen00561\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00561\" name=\"l00561\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#ad73911f95b0a7025a510631c13526d4d\">  561</a></span><a class=\"code hl_function\" href=\"a01117.html#ad73911f95b0a7025a510631c13526d4d\">TopologyRefinerFactory&lt;MESH&gt;::createBaseFVarChannel</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <span class=\"keywordtype\">int</span> numValues) {</div>\n+<div class=\"line\"><a id=\"l00562\" name=\"l00562\"></a><span class=\"lineno\">  562</span>    <span class=\"keywordflow\">return</span> newRefiner._levels[0]-&gt;createFVarChannel(numValues, newRefiner._subdivOptions);</div>\n+<div class=\"line\"><a id=\"l00563\" name=\"l00563\"></a><span class=\"lineno\">  563</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00564\" name=\"l00564\"></a><span class=\"lineno\">  564</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n+<div class=\"line\"><a id=\"l00565\" name=\"l00565\"></a><span class=\"lineno\">  565</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span></div>\n+<div class=\"foldopen\" id=\"foldopen00566\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00566\" name=\"l00566\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#ae1a1f2e7baae99c0bd9f179c8e17df01\">  566</a></span><a class=\"code hl_function\" href=\"a01117.html#ad73911f95b0a7025a510631c13526d4d\">TopologyRefinerFactory&lt;MESH&gt;::createBaseFVarChannel</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <span class=\"keywordtype\">int</span> numValues, <a class=\"code hl_class\" href=\"a01337.html\">Sdc::Options</a> <span class=\"keyword\">const</span>&amp; fvarOptions) {</div>\n+<div class=\"line\"><a id=\"l00567\" name=\"l00567\"></a><span class=\"lineno\">  567</span>    <a class=\"code hl_class\" href=\"a01337.html\">Sdc::Options</a> newOptions = newRefiner._subdivOptions;</div>\n+<div class=\"line\"><a id=\"l00568\" name=\"l00568\"></a><span class=\"lineno\">  568</span>    newOptions.<a class=\"code hl_function\" href=\"a01337.html#a2b335eb227194b4fc6fcec7f3c4b25ce\">SetFVarLinearInterpolation</a>(fvarOptions.<a class=\"code hl_function\" href=\"a01337.html#acab24306782f101827103b87bbe4b8dd\">GetFVarLinearInterpolation</a>());</div>\n+<div class=\"line\"><a id=\"l00569\" name=\"l00569\"></a><span class=\"lineno\">  569</span>    <span class=\"keywordflow\">return</span> newRefiner._levels[0]-&gt;createFVarChannel(numValues, newOptions);</div>\n+<div class=\"line\"><a id=\"l00570\" name=\"l00570\"></a><span class=\"lineno\">  570</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00571\" name=\"l00571\"></a><span class=\"lineno\">  571</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n+<div class=\"line\"><a id=\"l00572\" name=\"l00572\"></a><span class=\"lineno\">  572</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a01357.html\">IndexArray</a></div>\n+<div class=\"foldopen\" id=\"foldopen00573\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00573\" name=\"l00573\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#a5709feae1ab1f49570e4adf485e21433\">  573</a></span><a class=\"code hl_function\" href=\"a01117.html#a5709feae1ab1f49570e4adf485e21433\">TopologyRefinerFactory&lt;MESH&gt;::getBaseFaceFVarValues</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; newRefiner, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> face, <span class=\"keywordtype\">int</span> channel) {</div>\n+<div class=\"line\"><a id=\"l00574\" name=\"l00574\"></a><span class=\"lineno\">  574</span>    <span class=\"keywordflow\">return</span> newRefiner._levels[0]-&gt;getFaceFVarValues(face, channel);</div>\n+<div class=\"line\"><a id=\"l00575\" name=\"l00575\"></a><span class=\"lineno\">  575</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00576\" name=\"l00576\"></a><span class=\"lineno\">  576</span> </div>\n+<div class=\"line\"><a id=\"l00577\" name=\"l00577\"></a><span class=\"lineno\">  577</span> </div>\n+<div class=\"line\"><a id=\"l00578\" name=\"l00578\"></a><span class=\"lineno\">  578</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n+<div class=\"line\"><a id=\"l00579\" name=\"l00579\"></a><span class=\"lineno\">  579</span><span class=\"keywordtype\">bool</span></div>\n+<div class=\"foldopen\" id=\"foldopen00580\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00580\" name=\"l00580\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#a4c574c458d080393a258f48e0ab20938\">  580</a></span><a class=\"code hl_function\" href=\"a01117.html#a4c574c458d080393a258f48e0ab20938\">TopologyRefinerFactory&lt;MESH&gt;::resizeComponentTopology</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a>&amp; <span class=\"comment\">/* refiner */</span>, MESH <span class=\"keyword\">const</span>&amp; <span class=\"comment\">/* mesh */</span>) {</div>\n+<div class=\"line\"><a id=\"l00581\" name=\"l00581\"></a><span class=\"lineno\">  581</span> </div>\n+<div class=\"line\"><a id=\"l00582\" name=\"l00582\"></a><span class=\"lineno\">  582</span>    <a class=\"code hl_function\" href=\"a00908.html#a25d51c3a61fb3dacded6e48d01fd2fdb\">Error</a>(<a class=\"code hl_enumvalue\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45aac565fa39d681e2766584dd87246c3bdd\">FAR_RUNTIME_ERROR</a>,</div>\n+<div class=\"line\"><a id=\"l00583\" name=\"l00583\"></a><span class=\"lineno\">  583</span>        <span class=\"stringliteral\">&quot;Failure in TopologyRefinerFactory&lt;&gt;::resizeComponentTopology() -- no specialization provided.&quot;</span>);</div>\n+<div class=\"line\"><a id=\"l00584\" name=\"l00584\"></a><span class=\"lineno\">  584</span> </div>\n+<div class=\"line\"><a id=\"l00585\" name=\"l00585\"></a><span class=\"lineno\">  585</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00586\" name=\"l00586\"></a><span class=\"lineno\">  586</span>    <span class=\"comment\">//  Sizing the topology tables:</span></div>\n+<div class=\"line\"><a id=\"l00587\" name=\"l00587\"></a><span class=\"lineno\">  587</span>    <span class=\"comment\">//      This method is for determining the sizes of the various topology tables (and other</span></div>\n+<div class=\"line\"><a id=\"l00588\" name=\"l00588\"></a><span class=\"lineno\">  588</span>    <span class=\"comment\">//  data) associated with the mesh.  Once completed, appropriate memory will be allocated</span></div>\n+<div class=\"line\"><a id=\"l00589\" name=\"l00589\"></a><span class=\"lineno\">  589</span>    <span class=\"comment\">//  and an additional method invoked to populate it accordingly.</span></div>\n+<div class=\"line\"><a id=\"l00590\" name=\"l00590\"></a><span class=\"lineno\">  590</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00591\" name=\"l00591\"></a><span class=\"lineno\">  591</span>    <span class=\"comment\">//  The following methods should be called -- first those to specify the number of faces,</span></div>\n+<div class=\"line\"><a id=\"l00592\" name=\"l00592\"></a><span class=\"lineno\">  592</span>    <span class=\"comment\">//  edges and vertices in the mesh:</span></div>\n+<div class=\"line\"><a id=\"l00593\" name=\"l00593\"></a><span class=\"lineno\">  593</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00594\" name=\"l00594\"></a><span class=\"lineno\">  594</span>    <span class=\"comment\">//      void setBaseFaceCount(  TopologyRefiner&amp; newRefiner, int count)</span></div>\n+<div class=\"line\"><a id=\"l00595\" name=\"l00595\"></a><span class=\"lineno\">  595</span>    <span class=\"comment\">//      void setBaseEdgeCount(  TopologyRefiner&amp; newRefiner, int count)</span></div>\n+<div class=\"line\"><a id=\"l00596\" name=\"l00596\"></a><span class=\"lineno\">  596</span>    <span class=\"comment\">//      void setBaseVertexCount(TopologyRefiner&amp; newRefiner, int count)</span></div>\n+<div class=\"line\"><a id=\"l00597\" name=\"l00597\"></a><span class=\"lineno\">  597</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00598\" name=\"l00598\"></a><span class=\"lineno\">  598</span>    <span class=\"comment\">//  and then for each face, edge and vertex, the number of its incident components:</span></div>\n+<div class=\"line\"><a id=\"l00599\" name=\"l00599\"></a><span class=\"lineno\">  599</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00600\" name=\"l00600\"></a><span class=\"lineno\">  600</span>    <span class=\"comment\">//      void setBaseFaceVertexCount(TopologyRefiner&amp; newRefiner, Index face, int count)</span></div>\n+<div class=\"line\"><a id=\"l00601\" name=\"l00601\"></a><span class=\"lineno\">  601</span>    <span class=\"comment\">//      void setBaseEdgeFaceCount(  TopologyRefiner&amp; newRefiner, Index edge, int count)</span></div>\n+<div class=\"line\"><a id=\"l00602\" name=\"l00602\"></a><span class=\"lineno\">  602</span>    <span class=\"comment\">//      void setBaseVertexFaceCount(TopologyRefiner&amp; newRefiner, Index vertex, int count)</span></div>\n+<div class=\"line\"><a id=\"l00603\" name=\"l00603\"></a><span class=\"lineno\">  603</span>    <span class=\"comment\">//      void setBaseVertexEdgeCount(TopologyRefiner&amp; newRefiner, Index vertex, int count)</span></div>\n+<div class=\"line\"><a id=\"l00604\" name=\"l00604\"></a><span class=\"lineno\">  604</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00605\" name=\"l00605\"></a><span class=\"lineno\">  605</span>    <span class=\"comment\">//  The count/size for a component type must be set before indices associated with that</span></div>\n+<div class=\"line\"><a id=\"l00606\" name=\"l00606\"></a><span class=\"lineno\">  606</span>    <span class=\"comment\">//  component type can be used.</span></div>\n+<div class=\"line\"><a id=\"l00607\" name=\"l00607\"></a><span class=\"lineno\">  607</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00608\" name=\"l00608\"></a><span class=\"lineno\">  608</span>    <span class=\"comment\">//  Note that it is only necessary to size 4 of the 6 supported topological relations --</span></div>\n+<div class=\"line\"><a id=\"l00609\" name=\"l00609\"></a><span class=\"lineno\">  609</span>    <span class=\"comment\">//  the number of edge-vertices is fixed at two per edge, and the number of face-edges is</span></div>\n+<div class=\"line\"><a id=\"l00610\" name=\"l00610\"></a><span class=\"lineno\">  610</span>    <span class=\"comment\">//  the same as the number of face-vertices.</span></div>\n+<div class=\"line\"><a id=\"l00611\" name=\"l00611\"></a><span class=\"lineno\">  611</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00612\" name=\"l00612\"></a><span class=\"lineno\">  612</span>    <span class=\"comment\">//  So a single pass through your mesh to gather up all of this sizing information will</span></div>\n+<div class=\"line\"><a id=\"l00613\" name=\"l00613\"></a><span class=\"lineno\">  613</span>    <span class=\"comment\">//  allow the Tables to be allocated appropriately once and avoid any dynamic resizing as</span></div>\n+<div class=\"line\"><a id=\"l00614\" name=\"l00614\"></a><span class=\"lineno\">  614</span>    <span class=\"comment\">//  it grows.</span></div>\n+<div class=\"line\"><a id=\"l00615\" name=\"l00615\"></a><span class=\"lineno\">  615</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00616\" name=\"l00616\"></a><span class=\"lineno\">  616</span>    <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00617\" name=\"l00617\"></a><span class=\"lineno\">  617</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00618\" name=\"l00618\"></a><span class=\"lineno\">  618</span> </div>\n+<div class=\"line\"><a id=\"l00619\" name=\"l00619\"></a><span class=\"lineno\">  619</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n+<div class=\"line\"><a id=\"l00620\" name=\"l00620\"></a><span class=\"lineno\">  620</span><span class=\"keywordtype\">bool</span></div>\n+<div class=\"foldopen\" id=\"foldopen00621\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00621\" name=\"l00621\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#a098784adfa428c620663baf9c2d8e41a\">  621</a></span><a class=\"code hl_function\" href=\"a01117.html#a098784adfa428c620663baf9c2d8e41a\">TopologyRefinerFactory&lt;MESH&gt;::assignComponentTopology</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a>&amp; <span class=\"comment\">/* refiner */</span>, MESH <span class=\"keyword\">const</span>&amp; <span class=\"comment\">/* mesh */</span>) {</div>\n+<div class=\"line\"><a id=\"l00622\" name=\"l00622\"></a><span class=\"lineno\">  622</span> </div>\n+<div class=\"line\"><a id=\"l00623\" name=\"l00623\"></a><span class=\"lineno\">  623</span>    <a class=\"code hl_function\" href=\"a00908.html#a25d51c3a61fb3dacded6e48d01fd2fdb\">Error</a>(<a class=\"code hl_enumvalue\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45aac565fa39d681e2766584dd87246c3bdd\">FAR_RUNTIME_ERROR</a>,</div>\n+<div class=\"line\"><a id=\"l00624\" name=\"l00624\"></a><span class=\"lineno\">  624</span>        <span class=\"stringliteral\">&quot;Failure in TopologyRefinerFactory&lt;&gt;::assignComponentTopology() -- no specialization provided.&quot;</span>);</div>\n+<div class=\"line\"><a id=\"l00625\" name=\"l00625\"></a><span class=\"lineno\">  625</span> </div>\n+<div class=\"line\"><a id=\"l00626\" name=\"l00626\"></a><span class=\"lineno\">  626</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00627\" name=\"l00627\"></a><span class=\"lineno\">  627</span>    <span class=\"comment\">//  Assigning the topology tables:</span></div>\n+<div class=\"line\"><a id=\"l00628\" name=\"l00628\"></a><span class=\"lineno\">  628</span>    <span class=\"comment\">//      Once the topology tables have been allocated, the six required topological</span></div>\n+<div class=\"line\"><a id=\"l00629\" name=\"l00629\"></a><span class=\"lineno\">  629</span>    <span class=\"comment\">//  relations can be directly populated using the following methods:</span></div>\n+<div class=\"line\"><a id=\"l00630\" name=\"l00630\"></a><span class=\"lineno\">  630</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00631\" name=\"l00631\"></a><span class=\"lineno\">  631</span>    <span class=\"comment\">//      IndexArray setBaseFaceVertices(TopologyRefiner&amp; newRefiner, Index face)</span></div>\n+<div class=\"line\"><a id=\"l00632\" name=\"l00632\"></a><span class=\"lineno\">  632</span>    <span class=\"comment\">//      IndexArray setBaseFaceEdges(TopologyRefiner&amp; newRefiner, Index face)</span></div>\n+<div class=\"line\"><a id=\"l00633\" name=\"l00633\"></a><span class=\"lineno\">  633</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00634\" name=\"l00634\"></a><span class=\"lineno\">  634</span>    <span class=\"comment\">//      IndexArray setBaseEdgeVertices(TopologyRefiner&amp; newRefiner, Index edge)</span></div>\n+<div class=\"line\"><a id=\"l00635\" name=\"l00635\"></a><span class=\"lineno\">  635</span>    <span class=\"comment\">//      IndexArray setBaseEdgeFaces(TopologyRefiner&amp; newRefiner, Index edge)</span></div>\n+<div class=\"line\"><a id=\"l00636\" name=\"l00636\"></a><span class=\"lineno\">  636</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00637\" name=\"l00637\"></a><span class=\"lineno\">  637</span>    <span class=\"comment\">//      IndexArray setBaseVertexEdges(TopologyRefiner&amp; newRefiner, Index vertex)</span></div>\n+<div class=\"line\"><a id=\"l00638\" name=\"l00638\"></a><span class=\"lineno\">  638</span>    <span class=\"comment\">//      IndexArray setBaseVertexFaces(TopologyRefiner&amp; newRefiner, Index vertex)</span></div>\n+<div class=\"line\"><a id=\"l00639\" name=\"l00639\"></a><span class=\"lineno\">  639</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00640\" name=\"l00640\"></a><span class=\"lineno\">  640</span>    <span class=\"comment\">//  For the last two relations -- the faces and edges incident a vertex -- there are</span></div>\n+<div class=\"line\"><a id=\"l00641\" name=\"l00641\"></a><span class=\"lineno\">  641</span>    <span class=\"comment\">//  also &quot;local indices&quot; that must be specified (considering doing this internally),</span></div>\n+<div class=\"line\"><a id=\"l00642\" name=\"l00642\"></a><span class=\"lineno\">  642</span>    <span class=\"comment\">//  where the &quot;local index&quot; of each incident face or edge is the index of the vertex</span></div>\n+<div class=\"line\"><a id=\"l00643\" name=\"l00643\"></a><span class=\"lineno\">  643</span>    <span class=\"comment\">//  within that face or edge, and so ranging from 0-3 for incident quads and 0-1 for</span></div>\n+<div class=\"line\"><a id=\"l00644\" name=\"l00644\"></a><span class=\"lineno\">  644</span>    <span class=\"comment\">//  incident edges.  These are assigned through similarly retrieved arrays:</span></div>\n+<div class=\"line\"><a id=\"l00645\" name=\"l00645\"></a><span class=\"lineno\">  645</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00646\" name=\"l00646\"></a><span class=\"lineno\">  646</span>    <span class=\"comment\">//      LocalIndexArray setBaseVertexFaceLocalIndices(TopologyRefiner&amp; newRefiner, Index vertex)</span></div>\n+<div class=\"line\"><a id=\"l00647\" name=\"l00647\"></a><span class=\"lineno\">  647</span>    <span class=\"comment\">//      LocalIndexArray setBaseVertexEdgeLocalIndices(TopologyRefiner&amp; newRefiner, Index vertex)</span></div>\n+<div class=\"line\"><a id=\"l00648\" name=\"l00648\"></a><span class=\"lineno\">  648</span>    <span class=\"comment\">//      LocalIndexArray setBaseEdgeFaceLocalIndices(  TopologyRefiner&amp; newRefiner, Index edge)</span></div>\n+<div class=\"line\"><a id=\"l00649\" name=\"l00649\"></a><span class=\"lineno\">  649</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00650\" name=\"l00650\"></a><span class=\"lineno\">  650</span>    <span class=\"comment\">//  or, if the mesh is manifold, explicit assignment of these can be deferred and</span></div>\n+<div class=\"line\"><a id=\"l00651\" name=\"l00651\"></a><span class=\"lineno\">  651</span>    <span class=\"comment\">//  all can be determined by calling:</span></div>\n+<div class=\"line\"><a id=\"l00652\" name=\"l00652\"></a><span class=\"lineno\">  652</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00653\" name=\"l00653\"></a><span class=\"lineno\">  653</span>    <span class=\"comment\">//      void populateBaseLocalIndices(TopologyRefiner&amp; newRefiner)</span></div>\n+<div class=\"line\"><a id=\"l00654\" name=\"l00654\"></a><span class=\"lineno\">  654</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00655\" name=\"l00655\"></a><span class=\"lineno\">  655</span>    <span class=\"comment\">//  All components are assumed to be locally manifold and ordering of components in</span></div>\n+<div class=\"line\"><a id=\"l00656\" name=\"l00656\"></a><span class=\"lineno\">  656</span>    <span class=\"comment\">//  the above relations is expected to be counter-clockwise.</span></div>\n+<div class=\"line\"><a id=\"l00657\" name=\"l00657\"></a><span class=\"lineno\">  657</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00658\" name=\"l00658\"></a><span class=\"lineno\">  658</span>    <span class=\"comment\">//  For non-manifold components, no ordering/orientation of incident components is</span></div>\n+<div class=\"line\"><a id=\"l00659\" name=\"l00659\"></a><span class=\"lineno\">  659</span>    <span class=\"comment\">//  assumed or required, but be sure to explicitly tag such components (vertices and</span></div>\n+<div class=\"line\"><a id=\"l00660\" name=\"l00660\"></a><span class=\"lineno\">  660</span>    <span class=\"comment\">//  edges) as non-manifold:</span></div>\n+<div class=\"line\"><a id=\"l00661\" name=\"l00661\"></a><span class=\"lineno\">  661</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00662\" name=\"l00662\"></a><span class=\"lineno\">  662</span>    <span class=\"comment\">//      void setBaseEdgeNonManifold(TopologyRefiner&amp; newRefiner, Index edge, bool b);</span></div>\n+<div class=\"line\"><a id=\"l00663\" name=\"l00663\"></a><span class=\"lineno\">  663</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00664\" name=\"l00664\"></a><span class=\"lineno\">  664</span>    <span class=\"comment\">//      void setBaseVertexNonManifold(TopologyRefiner&amp; newRefiner, Index vertex, bool b);</span></div>\n+<div class=\"line\"><a id=\"l00665\" name=\"l00665\"></a><span class=\"lineno\">  665</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00666\" name=\"l00666\"></a><span class=\"lineno\">  666</span>    <span class=\"comment\">//  Also consider using TopologyLevel::ValidateTopology() when debugging to ensure</span></div>\n+<div class=\"line\"><a id=\"l00667\" name=\"l00667\"></a><span class=\"lineno\">  667</span>    <span class=\"comment\">//  that topology has been completely and correctly specified.</span></div>\n+<div class=\"line\"><a id=\"l00668\" name=\"l00668\"></a><span class=\"lineno\">  668</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00669\" name=\"l00669\"></a><span class=\"lineno\">  669</span>    <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00670\" name=\"l00670\"></a><span class=\"lineno\">  670</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00671\" name=\"l00671\"></a><span class=\"lineno\">  671</span> </div>\n+<div class=\"line\"><a id=\"l00672\" name=\"l00672\"></a><span class=\"lineno\">  672</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n+<div class=\"line\"><a id=\"l00673\" name=\"l00673\"></a><span class=\"lineno\">  673</span><span class=\"keywordtype\">bool</span></div>\n+<div class=\"foldopen\" id=\"foldopen00674\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00674\" name=\"l00674\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#a6999e259e020bc687d09ef616ab3825b\">  674</a></span><a class=\"code hl_function\" href=\"a01117.html#a6999e259e020bc687d09ef616ab3825b\">TopologyRefinerFactory&lt;MESH&gt;::assignFaceVaryingTopology</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a>&amp; <span class=\"comment\">/* refiner */</span>, MESH <span class=\"keyword\">const</span>&amp; <span class=\"comment\">/* mesh */</span>) {</div>\n+<div class=\"line\"><a id=\"l00675\" name=\"l00675\"></a><span class=\"lineno\">  675</span> </div>\n+<div class=\"line\"><a id=\"l00676\" name=\"l00676\"></a><span class=\"lineno\">  676</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00677\" name=\"l00677\"></a><span class=\"lineno\">  677</span>    <span class=\"comment\">//  Optional assigning face-varying topology tables:</span></div>\n+<div class=\"line\"><a id=\"l00678\" name=\"l00678\"></a><span class=\"lineno\">  678</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00679\" name=\"l00679\"></a><span class=\"lineno\">  679</span>    <span class=\"comment\">//  Create independent face-varying primitive variable channels:</span></div>\n+<div class=\"line\"><a id=\"l00680\" name=\"l00680\"></a><span class=\"lineno\">  680</span>    <span class=\"comment\">//      int createBaseFVarChannel(TopologyRefiner&amp; newRefiner, int numValues)</span></div>\n+<div class=\"line\"><a id=\"l00681\" name=\"l00681\"></a><span class=\"lineno\">  681</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00682\" name=\"l00682\"></a><span class=\"lineno\">  682</span>    <span class=\"comment\">//  For each channel, populate the face-vertex values:</span></div>\n+<div class=\"line\"><a id=\"l00683\" name=\"l00683\"></a><span class=\"lineno\">  683</span>    <span class=\"comment\">//      IndexArray setBaseFaceFVarValues(TopologyRefiner&amp; newRefiner, Index face, int channel = 0)</span></div>\n+<div class=\"line\"><a id=\"l00684\" name=\"l00684\"></a><span class=\"lineno\">  684</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00685\" name=\"l00685\"></a><span class=\"lineno\">  685</span>    <span class=\"keywordflow\">return</span> <span class=\"keyword\">true</span>;</div>\n+<div class=\"line\"><a id=\"l00686\" name=\"l00686\"></a><span class=\"lineno\">  686</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00687\" name=\"l00687\"></a><span class=\"lineno\">  687</span> </div>\n+<div class=\"line\"><a id=\"l00688\" name=\"l00688\"></a><span class=\"lineno\">  688</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n+<div class=\"line\"><a id=\"l00689\" name=\"l00689\"></a><span class=\"lineno\">  689</span><span class=\"keywordtype\">bool</span></div>\n+<div class=\"foldopen\" id=\"foldopen00690\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00690\" name=\"l00690\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#a3df7295af055588a7b4f20d4da021ad1\">  690</a></span><a class=\"code hl_function\" href=\"a01117.html#a3df7295af055588a7b4f20d4da021ad1\">TopologyRefinerFactory&lt;MESH&gt;::assignComponentTags</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a>&amp; <span class=\"comment\">/* refiner */</span>, MESH <span class=\"keyword\">const</span>&amp; <span class=\"comment\">/* mesh */</span>) {</div>\n+<div class=\"line\"><a id=\"l00691\" name=\"l00691\"></a><span class=\"lineno\">  691</span> </div>\n+<div class=\"line\"><a id=\"l00692\" name=\"l00692\"></a><span class=\"lineno\">  692</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00693\" name=\"l00693\"></a><span class=\"lineno\">  693</span>    <span class=\"comment\">//  Optional tagging:</span></div>\n+<div class=\"line\"><a id=\"l00694\" name=\"l00694\"></a><span class=\"lineno\">  694</span>    <span class=\"comment\">//      This is where any additional feature tags -- sharpness, holes, etc. -- can be</span></div>\n+<div class=\"line\"><a id=\"l00695\" name=\"l00695\"></a><span class=\"lineno\">  695</span>    <span class=\"comment\">//  specified using:</span></div>\n+<div class=\"line\"><a id=\"l00696\" name=\"l00696\"></a><span class=\"lineno\">  696</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00697\" name=\"l00697\"></a><span class=\"lineno\">  697</span>    <span class=\"comment\">//      void setBaseEdgeSharpness(TopologyRefiner&amp; newRefiner, Index edge, float sharpness)</span></div>\n+<div class=\"line\"><a id=\"l00698\" name=\"l00698\"></a><span class=\"lineno\">  698</span>    <span class=\"comment\">//      void setBaseVertexSharpness(TopologyRefiner&amp; newRefiner, Index vertex, float sharpness)</span></div>\n+<div class=\"line\"><a id=\"l00699\" name=\"l00699\"></a><span class=\"lineno\">  699</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00700\" name=\"l00700\"></a><span class=\"lineno\">  700</span>    <span class=\"comment\">//      void setBaseFaceHole(TopologyRefiner&amp; newRefiner, Index face, bool hole)</span></div>\n+<div class=\"line\"><a id=\"l00701\" name=\"l00701\"></a><span class=\"lineno\">  701</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00702\" name=\"l00702\"></a><span class=\"lineno\">  702</span>    <span class=\"keywordflow\">return</span> <span class=\"keyword\">true</span>;</div>\n+<div class=\"line\"><a id=\"l00703\" name=\"l00703\"></a><span class=\"lineno\">  703</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00704\" name=\"l00704\"></a><span class=\"lineno\">  704</span> </div>\n+<div class=\"line\"><a id=\"l00705\" name=\"l00705\"></a><span class=\"lineno\">  705</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n+<div class=\"line\"><a id=\"l00706\" name=\"l00706\"></a><span class=\"lineno\">  706</span><span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00707\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00707\" name=\"l00707\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01117.html#a0c4c1d44df4c480bd0adfa9e86891b39\">  707</a></span><a class=\"code hl_function\" href=\"a01117.html#a0c4c1d44df4c480bd0adfa9e86891b39\">TopologyRefinerFactory&lt;MESH&gt;::reportInvalidTopology</a>(</div>\n+<div class=\"line\"><a id=\"l00708\" name=\"l00708\"></a><span class=\"lineno\">  708</span>    TopologyError <span class=\"comment\">/* errCode */</span>, <span class=\"keywordtype\">char</span> <span class=\"keyword\">const</span> * <span class=\"comment\">/* msg */</span>, MESH <span class=\"keyword\">const</span>&amp; <span class=\"comment\">/* mesh */</span>) {</div>\n+<div class=\"line\"><a id=\"l00709\" name=\"l00709\"></a><span class=\"lineno\">  709</span> </div>\n+<div class=\"line\"><a id=\"l00710\" name=\"l00710\"></a><span class=\"lineno\">  710</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00711\" name=\"l00711\"></a><span class=\"lineno\">  711</span>    <span class=\"comment\">//  Optional topology validation error reporting:</span></div>\n+<div class=\"line\"><a id=\"l00712\" name=\"l00712\"></a><span class=\"lineno\">  712</span>    <span class=\"comment\">//      This method is called whenever the factory encounters topology validation</span></div>\n+<div class=\"line\"><a id=\"l00713\" name=\"l00713\"></a><span class=\"lineno\">  713</span>    <span class=\"comment\">//  errors. By default, nothing is reported</span></div>\n+<div class=\"line\"><a id=\"l00714\" name=\"l00714\"></a><span class=\"lineno\">  714</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00715\" name=\"l00715\"></a><span class=\"lineno\">  715</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00716\" name=\"l00716\"></a><span class=\"lineno\">  716</span> </div>\n+<div class=\"line\"><a id=\"l00717\" name=\"l00717\"></a><span class=\"lineno\">  717</span>} <span class=\"comment\">// end namespace Far</span></div>\n+<div class=\"line\"><a id=\"l00718\" name=\"l00718\"></a><span class=\"lineno\">  718</span> </div>\n+<div class=\"line\"><a id=\"l00719\" name=\"l00719\"></a><span class=\"lineno\">  719</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00720\" name=\"l00720\"></a><span class=\"lineno\">  720</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00721\" name=\"l00721\"></a><span class=\"lineno\">  721</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l00722\" name=\"l00722\"></a><span class=\"lineno\">  722</span> </div>\n+<div class=\"line\"><a id=\"l00723\" name=\"l00723\"></a><span class=\"lineno\">  723</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_FAR_TOPOLOGY_REFINER_FACTORY_H */</span><span class=\"preprocessor\"></span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa00908_html_a25d51c3a61fb3dacded6e48d01fd2fdb\"><div class=\"ttname\"><a href=\"a00908.html#a25d51c3a61fb3dacded6e48d01fd2fdb\">OpenSubdiv::OPENSUBDIV_VERSION::Far::Error</a></div><div class=\"ttdeci\">void Error(ErrorType err, const char *format,...)</div><div class=\"ttdoc\">Sends an OSD error with a message (internal use only)</div></div>\n+<div class=\"ttc\" id=\"aa00908_html_ab0df38968e4f03a3f1f6d6df0f31f45aac565fa39d681e2766584dd87246c3bdd\"><div class=\"ttname\"><a href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45aac565fa39d681e2766584dd87246c3bdd\">OpenSubdiv::OPENSUBDIV_VERSION::Far::FAR_RUNTIME_ERROR</a></div><div class=\"ttdeci\">@ FAR_RUNTIME_ERROR</div><div class=\"ttdoc\">Issue a generic runtime error, but continue execution.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00839_source.html#l00041\">error.h:40</a></div></div>\n+<div class=\"ttc\" id=\"aa00908_html_ab34c85a48f33dfe7b8bf4d966fdebbf2\"><div class=\"ttname\"><a href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">OpenSubdiv::OPENSUBDIV_VERSION::Far::Index</a></div><div class=\"ttdeci\">Vtr::Index Index</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01486_source.html#l00041\">types.h:41</a></div></div>\n+<div class=\"ttc\" id=\"aa00913_html_aa3daa2f428c6be2b1cb394f3a525833d\"><div class=\"ttname\"><a href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833d\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::SchemeType</a></div><div class=\"ttdeci\">SchemeType</div><div class=\"ttdoc\">Enumerated type for all subdivision schemes supported by OpenSubdiv.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01492_source.html#l00037\">types.h:37</a></div></div>\n+<div class=\"ttc\" id=\"aa00913_html_aa3daa2f428c6be2b1cb394f3a525833da29c9704ef8a61670dfc242b6e6b82a9f\"><div class=\"ttname\"><a href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833da29c9704ef8a61670dfc242b6e6b82a9f\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::SCHEME_CATMARK</a></div><div class=\"ttdeci\">@ SCHEME_CATMARK</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01492_source.html#l00039\">types.h:39</a></div></div>\n+<div class=\"ttc\" id=\"aa01117_html\"><div class=\"ttname\"><a href=\"a01117.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory</a></div><div class=\"ttdoc\">Factory for constructing TopologyRefiners from specific mesh classes.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00827_source.html#l00078\">topologyRefinerFactory.h:78</a></div></div>\n+<div class=\"ttc\" id=\"aa01117_html_a020886e09179d60d2ca1dfaf99ef8c41\"><div class=\"ttname\"><a href=\"a01117.html#a020886e09179d60d2ca1dfaf99ef8c41\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::getNumBaseFaces</a></div><div class=\"ttdeci\">static int getNumBaseFaces(TopologyRefiner const &amp;newRefiner)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00827_source.html#l00436\">topologyRefinerFactory.h:436</a></div></div>\n+<div class=\"ttc\" id=\"aa01117_html_a098784adfa428c620663baf9c2d8e41a\"><div class=\"ttname\"><a href=\"a01117.html#a098784adfa428c620663baf9c2d8e41a\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::assignComponentTopology</a></div><div class=\"ttdeci\">static bool assignComponentTopology(TopologyRefiner &amp;newRefiner, MESH const &amp;mesh)</div><div class=\"ttdoc\">Specify the relationships between vertices, faces, etc. ie the face-vertices, vertex-faces,...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00827_source.html#l00621\">topologyRefinerFactory.h:621</a></div></div>\n+<div class=\"ttc\" id=\"aa01117_html_a0c4c1d44df4c480bd0adfa9e86891b39\"><div class=\"ttname\"><a href=\"a01117.html#a0c4c1d44df4c480bd0adfa9e86891b39\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::reportInvalidTopology</a></div><div class=\"ttdeci\">static void reportInvalidTopology(TopologyError errCode, char const *msg, MESH const &amp;mesh)</div><div class=\"ttdoc\">(Optional) Control run-time topology validation and error reporting</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00827_source.html#l00707\">topologyRefinerFactory.h:707</a></div></div>\n+<div class=\"ttc\" id=\"aa01117_html_a0f20907169dab737f3b4ca7fd45674fe\"><div class=\"ttname\"><a href=\"a01117.html#a0f20907169dab737f3b4ca7fd45674fe\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::getBaseVertexFaceLocalIndices</a></div><div class=\"ttdeci\">static LocalIndexArray getBaseVertexFaceLocalIndices(TopologyRefiner &amp;newRefiner, Index v)</div><div class=\"ttdoc\">Assign the local indices of a vertex within each of its incident faces.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00827_source.html#l00510\">topologyRefinerFactory.h:510</a></div></div>\n+<div class=\"ttc\" id=\"aa01117_html_a117dbe541844bdb9987238648c4097f2\"><div class=\"ttname\"><a href=\"a01117.html#a117dbe541844bdb9987238648c4097f2\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::getNumBaseVertices</a></div><div class=\"ttdeci\">static int getNumBaseVertices(TopologyRefiner const &amp;newRefiner)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00827_source.html#l00446\">topologyRefinerFactory.h:446</a></div></div>\n+<div class=\"ttc\" id=\"aa01117_html_a11f84f47a826b23f96914e6c032ad0c3\"><div class=\"ttname\"><a href=\"a01117.html#a11f84f47a826b23f96914e6c032ad0c3\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::setNumBaseEdgeFaces</a></div><div class=\"ttdeci\">static void setNumBaseEdgeFaces(TopologyRefiner &amp;newRefiner, Index e, int count)</div><div class=\"ttdoc\">Specify the number of faces incident each edge.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00827_source.html#l00458\">topologyRefinerFactory.h:458</a></div></div>\n+<div class=\"ttc\" id=\"aa01117_html_a1c58093296637493b5d5f4f8dea7e02a\"><div class=\"ttname\"><a href=\"a01117.html#a1c58093296637493b5d5f4f8dea7e02a\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::getBaseFaceVertices</a></div><div class=\"ttdeci\">static IndexArray getBaseFaceVertices(TopologyRefiner &amp;newRefiner, Index f)</div><div class=\"ttdoc\">Assign the vertices incident each face.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00827_source.html#l00474\">topologyRefinerFactory.h:474</a></div></div>\n+<div class=\"ttc\" id=\"aa01117_html_a20ee9f5a59d04c6448e0e8903947cf03\"><div class=\"ttname\"><a href=\"a01117.html#a20ee9f5a59d04c6448e0e8903947cf03\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::getBaseEdgeFaceLocalIndices</a></div><div class=\"ttdeci\">static LocalIndexArray getBaseEdgeFaceLocalIndices(TopologyRefiner &amp;newRefiner, Index e)</div><div class=\"ttdoc\">Assign the local indices of an edge within each of its incident faces.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00827_source.html#l00505\">topologyRefinerFactory.h:505</a></div></div>\n+<div class=\"ttc\" id=\"aa01117_html_a2c34b14ad2b2ea6959f262de4974fdae\"><div class=\"ttname\"><a href=\"a01117.html#a2c34b14ad2b2ea6959f262de4974fdae\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::populateBaseLevel</a></div><div class=\"ttdeci\">static bool populateBaseLevel(TopologyRefiner &amp;refiner, MESH const &amp;mesh, Options options)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00827_source.html#l00371\">topologyRefinerFactory.h:371</a></div></div>\n+<div class=\"ttc\" id=\"aa01117_html_a363ef6e3c1fa9e4a58ff0a3852deec66\"><div class=\"ttname\"><a href=\"a01117.html#a363ef6e3c1fa9e4a58ff0a3852deec66\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::populateBaseLocalIndices</a></div><div class=\"ttdeci\">static void populateBaseLocalIndices(TopologyRefiner &amp;newRefiner)</div><div class=\"ttdoc\">Determine all local indices by inspection (only for pure manifold meshes)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00827_source.html#l00527\">topologyRefinerFactory.h:527</a></div></div>\n+<div class=\"ttc\" id=\"aa01117_html_a3df7295af055588a7b4f20d4da021ad1\"><div class=\"ttname\"><a href=\"a01117.html#a3df7295af055588a7b4f20d4da021ad1\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::assignComponentTags</a></div><div class=\"ttdeci\">static bool assignComponentTags(TopologyRefiner &amp;newRefiner, MESH const &amp;mesh)</div><div class=\"ttdoc\">(Optional) Specify edge or vertex sharpness or face holes</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00827_source.html#l00690\">topologyRefinerFactory.h:690</a></div></div>\n+<div class=\"ttc\" id=\"aa01117_html_a4c574c458d080393a258f48e0ab20938\"><div class=\"ttname\"><a href=\"a01117.html#a4c574c458d080393a258f48e0ab20938\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::resizeComponentTopology</a></div><div class=\"ttdeci\">static bool resizeComponentTopology(TopologyRefiner &amp;newRefiner, MESH const &amp;mesh)</div><div class=\"ttdoc\">Specify the number of vertices, faces, face-vertices, etc.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00827_source.html#l00580\">topologyRefinerFactory.h:580</a></div></div>\n+<div class=\"ttc\" id=\"aa01117_html_a53afbc1d886920a1f7bd9fb66bc7c764\"><div class=\"ttname\"><a href=\"a01117.html#a53afbc1d886920a1f7bd9fb66bc7c764\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::setNumBaseVertexEdges</a></div><div class=\"ttdeci\">static void setNumBaseVertexEdges(TopologyRefiner &amp;newRefiner, Index v, int count)</div><div class=\"ttdoc\">Specify the number of edges incident each vertex.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00827_source.html#l00468\">topologyRefinerFactory.h:468</a></div></div>\n+<div class=\"ttc\" id=\"aa01117_html_a5458be6ce3f2e63c8d8555f4ab3b2b62\"><div class=\"ttname\"><a href=\"a01117.html#a5458be6ce3f2e63c8d8555f4ab3b2b62\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::TopologyError</a></div><div class=\"ttdeci\">Vtr::internal::Level::TopologyError TopologyError</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00827_source.html#l00131\">topologyRefinerFactory.h:131</a></div></div>\n+<div class=\"ttc\" id=\"aa01117_html_a5709feae1ab1f49570e4adf485e21433\"><div class=\"ttname\"><a href=\"a01117.html#a5709feae1ab1f49570e4adf485e21433\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::getBaseFaceFVarValues</a></div><div class=\"ttdeci\">static IndexArray getBaseFaceFVarValues(TopologyRefiner &amp;newRefiner, Index face, int channel=0)</div><div class=\"ttdoc\">Assign the face-varying values for the corners of each face.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00827_source.html#l00573\">topologyRefinerFactory.h:573</a></div></div>\n+<div class=\"ttc\" id=\"aa01117_html_a598f3a70a526b3d47f1edd383d904792\"><div class=\"ttname\"><a href=\"a01117.html#a598f3a70a526b3d47f1edd383d904792\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::getBaseEdgeFaces</a></div><div class=\"ttdeci\">static IndexArray getBaseEdgeFaces(TopologyRefiner &amp;newRefiner, Index e)</div><div class=\"ttdoc\">Assign the faces incident each edge.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00827_source.html#l00489\">topologyRefinerFactory.h:489</a></div></div>\n+<div class=\"ttc\" id=\"aa01117_html_a5dabb3b53480f7070826d20114b826b3\"><div class=\"ttname\"><a href=\"a01117.html#a5dabb3b53480f7070826d20114b826b3\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::setNumBaseVertexFaces</a></div><div class=\"ttdeci\">static void setNumBaseVertexFaces(TopologyRefiner &amp;newRefiner, Index v, int count)</div><div class=\"ttdoc\">Specify the number of faces incident each vertex.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00827_source.html#l00463\">topologyRefinerFactory.h:463</a></div></div>\n+<div class=\"ttc\" id=\"aa01117_html_a6999e259e020bc687d09ef616ab3825b\"><div class=\"ttname\"><a href=\"a01117.html#a6999e259e020bc687d09ef616ab3825b\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::assignFaceVaryingTopology</a></div><div class=\"ttdeci\">static bool assignFaceVaryingTopology(TopologyRefiner &amp;newRefiner, MESH const &amp;mesh)</div><div class=\"ttdoc\">(Optional) Specify face-varying data per face</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00827_source.html#l00674\">topologyRefinerFactory.h:674</a></div></div>\n+<div class=\"ttc\" id=\"aa01117_html_a6bcd3738db74e1efce001beee0693c8a\"><div class=\"ttname\"><a href=\"a01117.html#a6bcd3738db74e1efce001beee0693c8a\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::setBaseVertexSharpness</a></div><div class=\"ttdeci\">static void setBaseVertexSharpness(TopologyRefiner &amp;newRefiner, Index v, float sharpness)</div><div class=\"ttdoc\">Assign a sharpness value to a given vertex.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00827_source.html#l00549\">topologyRefinerFactory.h:549</a></div></div>\n+<div class=\"ttc\" id=\"aa01117_html_a6ff4d209a7fa096c6fd8d314519006fb\"><div class=\"ttname\"><a href=\"a01117.html#a6ff4d209a7fa096c6fd8d314519006fb\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::getBaseVertexEdgeLocalIndices</a></div><div class=\"ttdeci\">static LocalIndexArray getBaseVertexEdgeLocalIndices(TopologyRefiner &amp;newRefiner, Index v)</div><div class=\"ttdoc\">Assign the local indices of a vertex within each of its incident edges.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00827_source.html#l00515\">topologyRefinerFactory.h:515</a></div></div>\n+<div class=\"ttc\" id=\"aa01117_html_a78f9b78d9fd7895d88449157202d2320\"><div class=\"ttname\"><a href=\"a01117.html#a78f9b78d9fd7895d88449157202d2320\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::getBaseEdgeVertices</a></div><div class=\"ttdeci\">static IndexArray getBaseEdgeVertices(TopologyRefiner &amp;newRefiner, Index e)</div><div class=\"ttdoc\">Assign the vertices incident each edge.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00827_source.html#l00484\">topologyRefinerFactory.h:484</a></div></div>\n+<div class=\"ttc\" id=\"aa01117_html_a7af5443e6de72365777b88c44ca73c05\"><div class=\"ttname\"><a href=\"a01117.html#a7af5443e6de72365777b88c44ca73c05\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::getBaseVertexFaces</a></div><div class=\"ttdeci\">static IndexArray getBaseVertexFaces(TopologyRefiner &amp;newRefiner, Index v)</div><div class=\"ttdoc\">Assign the faces incident each vertex.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00827_source.html#l00494\">topologyRefinerFactory.h:494</a></div></div>\n+<div class=\"ttc\" id=\"aa01117_html_a7b7a064f825e85f70c995e1614d3f569\"><div class=\"ttname\"><a href=\"a01117.html#a7b7a064f825e85f70c995e1614d3f569\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::setBaseVertexNonManifold</a></div><div class=\"ttdeci\">static void setBaseVertexNonManifold(TopologyRefiner &amp;newRefiner, Index v, bool b)</div><div class=\"ttdoc\">Tag a vertex as non-manifold.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00827_source.html#l00538\">topologyRefinerFactory.h:538</a></div></div>\n+<div class=\"ttc\" id=\"aa01117_html_a7ea1b1dae066a5255ac2c2d0d56c1460\"><div class=\"ttname\"><a href=\"a01117.html#a7ea1b1dae066a5255ac2c2d0d56c1460\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::setNumBaseFaces</a></div><div class=\"ttdeci\">static void setNumBaseFaces(TopologyRefiner &amp;newRefiner, int count)</div><div class=\"ttdoc\">Specify the number of faces to be accommodated.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00827_source.html#l00420\">topologyRefinerFactory.h:420</a></div></div>\n+<div class=\"ttc\" id=\"aa01117_html_a8233d0fd9a411e3cebb6de37f0b4dd52\"><div class=\"ttname\"><a href=\"a01117.html#a8233d0fd9a411e3cebb6de37f0b4dd52\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::getBaseFaceEdges</a></div><div class=\"ttdeci\">static IndexArray getBaseFaceEdges(TopologyRefiner &amp;newRefiner, Index f)</div><div class=\"ttdoc\">Assign the edges incident each face.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00827_source.html#l00479\">topologyRefinerFactory.h:479</a></div></div>\n+<div class=\"ttc\" id=\"aa01117_html_a8eea2866a8b3ba7bf6898984fe2a543a\"><div class=\"ttname\"><a href=\"a01117.html#a8eea2866a8b3ba7bf6898984fe2a543a\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::setNumBaseFaceVertices</a></div><div class=\"ttdeci\">static void setNumBaseFaceVertices(TopologyRefiner &amp;newRefiner, Index f, int count)</div><div class=\"ttdoc\">Specify the number of vertices incident each face.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00827_source.html#l00452\">topologyRefinerFactory.h:452</a></div></div>\n+<div class=\"ttc\" id=\"aa01117_html_aa1b903734e1a9136e087c3cd4e3ff657\"><div class=\"ttname\"><a href=\"a01117.html#aa1b903734e1a9136e087c3cd4e3ff657\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::setBaseEdgeSharpness</a></div><div class=\"ttdeci\">static void setBaseEdgeSharpness(TopologyRefiner &amp;newRefiner, Index e, float sharpness)</div><div class=\"ttdoc\">Assign a sharpness value to a given edge.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00827_source.html#l00544\">topologyRefinerFactory.h:544</a></div></div>\n+<div class=\"ttc\" id=\"aa01117_html_aaa60d4a0d80d8e76e3569ddeb3d16ca4\"><div class=\"ttname\"><a href=\"a01117.html#aaa60d4a0d80d8e76e3569ddeb3d16ca4\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::setBaseEdgeNonManifold</a></div><div class=\"ttdeci\">static void setBaseEdgeNonManifold(TopologyRefiner &amp;newRefiner, Index e, bool b)</div><div class=\"ttdoc\">Tag an edge as non-manifold.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00827_source.html#l00533\">topologyRefinerFactory.h:533</a></div></div>\n+<div class=\"ttc\" id=\"aa01117_html_aac57d69b5bb270ccabe0d84364d065ce\"><div class=\"ttname\"><a href=\"a01117.html#aac57d69b5bb270ccabe0d84364d065ce\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::setNumBaseEdges</a></div><div class=\"ttdeci\">static void setNumBaseEdges(TopologyRefiner &amp;newRefiner, int count)</div><div class=\"ttdoc\">Specify the number of edges to be accommodated.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00827_source.html#l00425\">topologyRefinerFactory.h:425</a></div></div>\n+<div class=\"ttc\" id=\"aa01117_html_ab10eb061eba33095095d754241081ff9\"><div class=\"ttname\"><a href=\"a01117.html#ab10eb061eba33095095d754241081ff9\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::Create</a></div><div class=\"ttdeci\">static TopologyRefiner * Create(MESH const &amp;mesh, Options options=Options())</div><div class=\"ttdoc\">Instantiates a TopologyRefiner from client-provided topological representation.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00827_source.html#l00346\">topologyRefinerFactory.h:346</a></div></div>\n+<div class=\"ttc\" id=\"aa01117_html_abadf245d872a6a226772a14a471324d0\"><div class=\"ttname\"><a href=\"a01117.html#abadf245d872a6a226772a14a471324d0\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::findBaseEdge</a></div><div class=\"ttdeci\">static Index findBaseEdge(TopologyRefiner const &amp;newRefiner, Index v0, Index v1)</div><div class=\"ttdoc\">Identify an edge to be assigned a sharpness value given a vertex pair.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00827_source.html#l00521\">topologyRefinerFactory.h:521</a></div></div>\n+<div class=\"ttc\" id=\"aa01117_html_ad2e926d52d7682c6e6453831e91eeb98\"><div class=\"ttname\"><a href=\"a01117.html#ad2e926d52d7682c6e6453831e91eeb98\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::getBaseVertexEdges</a></div><div class=\"ttdeci\">static IndexArray getBaseVertexEdges(TopologyRefiner &amp;newRefiner, Index v)</div><div class=\"ttdoc\">Assign the edges incident each vertex.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00827_source.html#l00499\">topologyRefinerFactory.h:499</a></div></div>\n+<div class=\"ttc\" id=\"aa01117_html_ad73911f95b0a7025a510631c13526d4d\"><div class=\"ttname\"><a href=\"a01117.html#ad73911f95b0a7025a510631c13526d4d\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::createBaseFVarChannel</a></div><div class=\"ttdeci\">static int createBaseFVarChannel(TopologyRefiner &amp;newRefiner, int numValues)</div><div class=\"ttdoc\">Create a new face-varying channel with the given number of values.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00827_source.html#l00561\">topologyRefinerFactory.h:561</a></div></div>\n+<div class=\"ttc\" id=\"aa01117_html_ad86027437b67e115c875a494ba140ccb\"><div class=\"ttname\"><a href=\"a01117.html#ad86027437b67e115c875a494ba140ccb\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::getNumBaseEdges</a></div><div class=\"ttdeci\">static int getNumBaseEdges(TopologyRefiner const &amp;newRefiner)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00827_source.html#l00441\">topologyRefinerFactory.h:441</a></div></div>\n+<div class=\"ttc\" id=\"aa01117_html_ade6bd4c9d2e9eaf232d928f45b58e070\"><div class=\"ttname\"><a href=\"a01117.html#ade6bd4c9d2e9eaf232d928f45b58e070\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::setNumBaseVertices</a></div><div class=\"ttdeci\">static void setNumBaseVertices(TopologyRefiner &amp;newRefiner, int count)</div><div class=\"ttdoc\">Specify the number of vertices to be accommodated.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00827_source.html#l00430\">topologyRefinerFactory.h:430</a></div></div>\n+<div class=\"ttc\" id=\"aa01117_html_afe44424c4c292e12634a9eb1d4efbc7e\"><div class=\"ttname\"><a href=\"a01117.html#afe44424c4c292e12634a9eb1d4efbc7e\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::setBaseFaceHole</a></div><div class=\"ttdeci\">static void setBaseFaceHole(TopologyRefiner &amp;newRefiner, Index f, bool isHole)</div><div class=\"ttdoc\">Tag a face as a hole.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00827_source.html#l00554\">topologyRefinerFactory.h:554</a></div></div>\n+<div class=\"ttc\" id=\"aa01121_html\"><div class=\"ttname\"><a href=\"a01121.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner</a></div><div class=\"ttdoc\">Stores topology data for a specified set of refinement options.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00051\">topologyRefiner.h:51</a></div></div>\n+<div class=\"ttc\" id=\"aa01133_html\"><div class=\"ttname\"><a href=\"a01133.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactoryBase</a></div><div class=\"ttdoc\">Private base class of Factories for constructing TopologyRefiners.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00827_source.html#l00047\">topologyRefinerFactory.h:47</a></div></div>\n+<div class=\"ttc\" id=\"aa01133_html_a30ee63853ace8ecb0c3c2a6e3303aefc\"><div class=\"ttname\"><a href=\"a01133.html#a30ee63853ace8ecb0c3c2a6e3303aefc\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactoryBase::prepareComponentTopologyAssignment</a></div><div class=\"ttdeci\">static bool prepareComponentTopologyAssignment(TopologyRefiner &amp;refiner, bool fullValidation, TopologyCallback callback, void const *callbackData)</div></div>\n+<div class=\"ttc\" id=\"aa01133_html_a896a964625491e084b3d776acd10f053\"><div class=\"ttname\"><a href=\"a01133.html#a896a964625491e084b3d776acd10f053\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactoryBase::TopologyCallback</a></div><div class=\"ttdeci\">Vtr::internal::Level::ValidationCallback TopologyCallback</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00827_source.html#l00054\">topologyRefinerFactory.h:54</a></div></div>\n+<div class=\"ttc\" id=\"aa01133_html_a8d7f178267895f2a90585e60849b9119\"><div class=\"ttname\"><a href=\"a01133.html#a8d7f178267895f2a90585e60849b9119\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactoryBase::prepareComponentTagsAndSharpness</a></div><div class=\"ttdeci\">static bool prepareComponentTagsAndSharpness(TopologyRefiner &amp;refiner)</div></div>\n+<div class=\"ttc\" id=\"aa01133_html_aba57674bcc5cb7367ce1fe527ec219ad\"><div class=\"ttname\"><a href=\"a01133.html#aba57674bcc5cb7367ce1fe527ec219ad\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactoryBase::prepareComponentTopologySizing</a></div><div class=\"ttdeci\">static bool prepareComponentTopologySizing(TopologyRefiner &amp;refiner)</div></div>\n+<div class=\"ttc\" id=\"aa01133_html_ac800e6db9b484b31f8fa11799ee4ac1b\"><div class=\"ttname\"><a href=\"a01133.html#ac800e6db9b484b31f8fa11799ee4ac1b\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactoryBase::prepareFaceVaryingChannels</a></div><div class=\"ttdeci\">static bool prepareFaceVaryingChannels(TopologyRefiner &amp;refiner)</div></div>\n+<div class=\"ttc\" id=\"aa01137_html\"><div class=\"ttname\"><a href=\"a01137.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::Options</a></div><div class=\"ttdoc\">Options related to the construction of each TopologyRefiner.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00827_source.html#l00084\">topologyRefinerFactory.h:84</a></div></div>\n+<div class=\"ttc\" id=\"aa01137_html_a33cde130beeee5dd5125d2c188b1a088\"><div class=\"ttname\"><a href=\"a01137.html#a33cde130beeee5dd5125d2c188b1a088\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::Options::Options</a></div><div class=\"ttdeci\">Options(Sdc::SchemeType sdcType=Sdc::SCHEME_CATMARK, Sdc::Options sdcOptions=Sdc::Options())</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00827_source.html#l00086\">topologyRefinerFactory.h:86</a></div></div>\n+<div class=\"ttc\" id=\"aa01137_html_a9ec2ab2b4bd49c6cf367dac80c8cbb94\"><div class=\"ttname\"><a href=\"a01137.html#a9ec2ab2b4bd49c6cf367dac80c8cbb94\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::Options::schemeOptions</a></div><div class=\"ttdeci\">Sdc::Options schemeOptions</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00827_source.html#l00092\">topologyRefinerFactory.h:92</a></div></div>\n+<div class=\"ttc\" id=\"aa01137_html_ab4a105466e7c764e3aabaa6c44c1eeb6\"><div class=\"ttname\"><a href=\"a01137.html#ab4a105466e7c764e3aabaa6c44c1eeb6\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::Options::schemeType</a></div><div class=\"ttdeci\">Sdc::SchemeType schemeType</div><div class=\"ttdoc\">The subdivision scheme type identifier.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00827_source.html#l00091\">topologyRefinerFactory.h:91</a></div></div>\n+<div class=\"ttc\" id=\"aa01137_html_adaa22b025e8615d6e4281a86b794e5df\"><div class=\"ttname\"><a href=\"a01137.html#adaa22b025e8615d6e4281a86b794e5df\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::Options::validateFullTopology</a></div><div class=\"ttdeci\">unsigned int validateFullTopology</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00827_source.html#l00094\">topologyRefinerFactory.h:94</a></div></div>\n+<div class=\"ttc\" id=\"aa01337_html\"><div class=\"ttname\"><a href=\"a01337.html\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options</a></div><div class=\"ttdoc\">All supported options applying to subdivision scheme.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00860_source.html#l00051\">options.h:51</a></div></div>\n+<div class=\"ttc\" id=\"aa01337_html_a2b335eb227194b4fc6fcec7f3c4b25ce\"><div class=\"ttname\"><a href=\"a01337.html#a2b335eb227194b4fc6fcec7f3c4b25ce\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::SetFVarLinearInterpolation</a></div><div class=\"ttdeci\">void SetFVarLinearInterpolation(FVarLinearInterpolation b)</div><div class=\"ttdoc\">Set face-varying interpolation rule.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00860_source.html#l00098\">options.h:98</a></div></div>\n+<div class=\"ttc\" id=\"aa01337_html_acab24306782f101827103b87bbe4b8dd\"><div class=\"ttname\"><a href=\"a01337.html#acab24306782f101827103b87bbe4b8dd\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::GetFVarLinearInterpolation</a></div><div class=\"ttdeci\">FVarLinearInterpolation GetFVarLinearInterpolation() const</div><div class=\"ttdoc\">Get face-varying interpolation rule.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00860_source.html#l00095\">options.h:95</a></div></div>\n+<div class=\"ttc\" id=\"aa01357_html\"><div class=\"ttname\"><a href=\"a01357.html\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::Array</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00797_source.html#l00105\">array.h:105</a></div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00827.html\">glslPatchShaderSource.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7f420b72a822828cfa8b0561c695a5cc.html\">far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00827.html\">topologyRefinerFactory.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-glslPatchShaderSource.h\n+topologyRefinerFactory.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2015 Pixar\n+2// Copyright 2014 DreamWorks Animation LLC.\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -23,84 +23,931 @@\n 17//\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n-24\n-25#ifndef OPENSUBDIV3_OSD_GLSL_PATCH_SHADER_SOURCE_H\n-26#define OPENSUBDIV3_OSD_GLSL_PATCH_SHADER_SOURCE_H\n-27\n-28#include \"../version.h\"\n-29\n-30#include \"../far/patchDescriptor.h\"\n+24#ifndef OPENSUBDIV3_FAR_TOPOLOGY_REFINER_FACTORY_H\n+25#define OPENSUBDIV3_FAR_TOPOLOGY_REFINER_FACTORY_H\n+26\n+27#include \"../version.h\"\n+28\n+29#include \"../far/topologyRefiner.h\"\n+30#include \"../far/error.h\"\n 31\n-32#include <string>\n+32#include <cassert>\n 33\n 34namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n 35namespace OPENSUBDIV_VERSION {\n 36\n-37namespace Osd {\n+37namespace Far {\n 38\n-_\b4_\b0class _\bG_\bL_\bS_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be {\n-41public:\n-_\b4_\b5 static std::string _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bB_\ba_\bs_\bi_\bs_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be();\n-46\n-_\b5_\b0 static std::string _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bD_\br_\ba_\bw_\bi_\bn_\bg_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be();\n-51\n-59\n-_\b6_\b0 static std::string _\bG_\be_\bt_\bC_\bo_\bm_\bm_\bo_\bn_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be();\n-61\n-_\b6_\b2 static std::string _\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be(\n-63 _\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bT_\by_\bp_\be type);\n-64\n-_\b6_\b5 static std::string _\bG_\be_\bt_\bT_\be_\bs_\bs_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be(\n-66 _\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bT_\by_\bp_\be type);\n-67\n-_\b6_\b8 static std::string _\bG_\be_\bt_\bT_\be_\bs_\bs_\bE_\bv_\ba_\bl_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be(\n-69 _\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bT_\by_\bp_\be type);\n-70\n-72};\n-73\n-74} // end namespace Osd\n-75\n-76} // end namespace OPENSUBDIV_VERSION\n-77using namespace OPENSUBDIV_VERSION;\n-78\n-79} // end namespace OpenSubdiv\n-80\n-81#endif // OPENSUBDIV3_OSD_GLSL_PATCH_SHADER_SOURCE\n+46//\n+_\b4_\b7class _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\bB_\ba_\bs_\be {\n+48protected:\n+49\n+50 //\n+51 // Protected methods invoked by the subclass template to verify and process\n+each\n+52 // stage of construction implemented by the subclass:\n+53 //\n+_\b5_\b4 typedef Vtr::internal::Level::ValidationCallback _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bC_\ba_\bl_\bl_\bb_\ba_\bc_\bk;\n+55\n+_\b5_\b6 static bool _\bp_\br_\be_\bp_\ba_\br_\be_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bS_\bi_\bz_\bi_\bn_\bg(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br& refiner);\n+_\b5_\b7 static bool _\bp_\br_\be_\bp_\ba_\br_\be_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bA_\bs_\bs_\bi_\bg_\bn_\bm_\be_\bn_\bt(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br& refiner,\n+bool fullValidation,\n+58 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bC_\ba_\bl_\bl_\bb_\ba_\bc_\bk callback, void const * callbackData);\n+_\b5_\b9 static bool _\bp_\br_\be_\bp_\ba_\br_\be_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\bT_\ba_\bg_\bs_\bA_\bn_\bd_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br& refiner);\n+_\b6_\b0 static bool _\bp_\br_\be_\bp_\ba_\br_\be_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br& refiner);\n+61};\n+62\n+63\n+77template <class MESH>\n+_\b7_\b8class _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by : public _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\bB_\ba_\bs_\be {\n+79\n+80public:\n+81\n+_\b8_\b4 struct _\bO_\bp_\bt_\bi_\bo_\bn_\bs {\n+85\n+_\b8_\b6 _\bO_\bp_\bt_\bi_\bo_\bn_\bs(_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\bT_\by_\bp_\be sdcType = _\bS_\bd_\bc_\b:_\b:_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bC_\bA_\bT_\bM_\bA_\bR_\bK, _\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n+sdcOptions = _\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs()) :\n+87 _\bs_\bc_\bh_\be_\bm_\be_\bT_\by_\bp_\be(sdcType),\n+88 _\bs_\bc_\bh_\be_\bm_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs(sdcOptions),\n+89 _\bv_\ba_\bl_\bi_\bd_\ba_\bt_\be_\bF_\bu_\bl_\bl_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by(false) { }\n+90\n+_\b9_\b1 _\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\bT_\by_\bp_\be _\bs_\bc_\bh_\be_\bm_\be_\bT_\by_\bp_\be;\n+_\b9_\b2 _\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs _\bs_\bc_\bh_\be_\bm_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs;\n+_\b9_\b4 unsigned int _\bv_\ba_\bl_\bi_\bd_\ba_\bt_\be_\bF_\bu_\bl_\bl_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by : 1;\n+97 };\n+98\n+108 //\n+113 static _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br* _\bC_\br_\be_\ba_\bt_\be(MESH const& mesh, _\bO_\bp_\bt_\bi_\bo_\bn_\bs options = _\bO_\bp_\bt_\bi_\bo_\bn_\bs\n+());\n+114\n+128 static _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br* _\bC_\br_\be_\ba_\bt_\be(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const & baseLevel);\n+129\n+130protected:\n+_\b1_\b3_\b1 typedef Vtr::internal::Level::TopologyError _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bE_\br_\br_\bo_\br;\n+132\n+134\n+149\n+151 static bool _\br_\be_\bs_\bi_\bz_\be_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br& newRefiner, MESH\n+const& mesh);\n+152\n+155 static bool _\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br& newRefiner, MESH\n+const& mesh);\n+156\n+158 static bool _\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\bT_\ba_\bg_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br& newRefiner, MESH const&\n+mesh);\n+159\n+161 static bool _\ba_\bs_\bs_\bi_\bg_\bn_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br& newRefiner, MESH\n+const& mesh);\n+162\n+164 static void _\br_\be_\bp_\bo_\br_\bt_\bI_\bn_\bv_\ba_\bl_\bi_\bd_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by(TopologyError errCode, char const * msg,\n+MESH const& mesh);\n+165\n+167\n+168protected:\n+170\n+187\n+189 static void _\bs_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\bi_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & newRefiner, int count);\n+190\n+192 static void _\bs_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bF_\ba_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & newRefiner, int count);\n+193\n+195 static void _\bs_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bE_\bd_\bg_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & newRefiner, int count);\n+196\n+198 static void _\bs_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\bi_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & newRefiner, _\bI_\bn_\bd_\be_\bx f,\n+int count);\n+199\n+201 static void _\bs_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bE_\bd_\bg_\be_\bF_\ba_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & newRefiner, _\bI_\bn_\bd_\be_\bx e, int\n+count);\n+202\n+204 static void _\bs_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\be_\bx_\bF_\ba_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & newRefiner, _\bI_\bn_\bd_\be_\bx v,\n+int count);\n+205\n+207 static void _\bs_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\be_\bx_\bE_\bd_\bg_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & newRefiner, _\bI_\bn_\bd_\be_\bx v,\n+int count);\n+208\n+209 static int _\bg_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\bi_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const & newRefiner);\n+210 static int _\bg_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bF_\ba_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const & newRefiner);\n+211 static int _\bg_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bE_\bd_\bg_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const & newRefiner);\n+213\n+215\n+237\n+239 static _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bg_\be_\bt_\bB_\ba_\bs_\be_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\bi_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & newRefiner, _\bI_\bn_\bd_\be_\bx\n+f);\n+240\n+242 static _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bg_\be_\bt_\bB_\ba_\bs_\be_\bF_\ba_\bc_\be_\bE_\bd_\bg_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & newRefiner, _\bI_\bn_\bd_\be_\bx f);\n+243\n+245 static _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bg_\be_\bt_\bB_\ba_\bs_\be_\bE_\bd_\bg_\be_\bV_\be_\br_\bt_\bi_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & newRefiner, _\bI_\bn_\bd_\be_\bx\n+e);\n+246\n+248 static _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bg_\be_\bt_\bB_\ba_\bs_\be_\bE_\bd_\bg_\be_\bF_\ba_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & newRefiner, _\bI_\bn_\bd_\be_\bx e);\n+249\n+251 static _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bg_\be_\bt_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\be_\bx_\bF_\ba_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & newRefiner, _\bI_\bn_\bd_\be_\bx\n+v);\n+252\n+254 static _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bg_\be_\bt_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\be_\bx_\bE_\bd_\bg_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & newRefiner, _\bI_\bn_\bd_\be_\bx\n+v);\n+255\n+257 static _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bg_\be_\bt_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\be_\bx_\bF_\ba_\bc_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\bi_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br &\n+newRefiner, _\bI_\bn_\bd_\be_\bx v);\n+259 static _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bg_\be_\bt_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\be_\bx_\bE_\bd_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\bi_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br &\n+newRefiner, _\bI_\bn_\bd_\be_\bx v);\n+261 static _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bg_\be_\bt_\bB_\ba_\bs_\be_\bE_\bd_\bg_\be_\bF_\ba_\bc_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\bi_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br &\n+newRefiner, _\bI_\bn_\bd_\be_\bx e);\n+262\n+264 static void _\bp_\bo_\bp_\bu_\bl_\ba_\bt_\be_\bB_\ba_\bs_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\bi_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & newRefiner);\n+265\n+267 static void _\bs_\be_\bt_\bB_\ba_\bs_\be_\bE_\bd_\bg_\be_\bN_\bo_\bn_\bM_\ba_\bn_\bi_\bf_\bo_\bl_\bd(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & newRefiner, _\bI_\bn_\bd_\be_\bx e,\n+bool b);\n+268\n+270 static void _\bs_\be_\bt_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\be_\bx_\bN_\bo_\bn_\bM_\ba_\bn_\bi_\bf_\bo_\bl_\bd(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & newRefiner, _\bI_\bn_\bd_\be_\bx v,\n+bool b);\n+272\n+274\n+283\n+285 static _\bI_\bn_\bd_\be_\bx _\bf_\bi_\bn_\bd_\bB_\ba_\bs_\be_\bE_\bd_\bg_\be(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const & newRefiner, _\bI_\bn_\bd_\be_\bx v0,\n+_\bI_\bn_\bd_\be_\bx v1);\n+286\n+288 static void _\bs_\be_\bt_\bB_\ba_\bs_\be_\bE_\bd_\bg_\be_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & newRefiner, _\bI_\bn_\bd_\be_\bx e,\n+float sharpness);\n+289\n+291 static void _\bs_\be_\bt_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\be_\bx_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & newRefiner, _\bI_\bn_\bd_\be_\bx v,\n+float sharpness);\n+292\n+294 static void _\bs_\be_\bt_\bB_\ba_\bs_\be_\bF_\ba_\bc_\be_\bH_\bo_\bl_\be(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & newRefiner, _\bI_\bn_\bd_\be_\bx f, bool\n+isHole);\n+296\n+298\n+308\n+310 static int _\bc_\br_\be_\ba_\bt_\be_\bB_\ba_\bs_\be_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & newRefiner, int\n+numValues);\n+311\n+313 static int _\bc_\br_\be_\ba_\bt_\be_\bB_\ba_\bs_\be_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & newRefiner, int\n+numValues, _\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs const& fvarOptions);\n+314\n+316 static _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bg_\be_\bt_\bB_\ba_\bs_\be_\bF_\ba_\bc_\be_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & newRefiner, _\bI_\bn_\bd_\be_\bx\n+face, int channel = 0);\n+317\n+319\n+320protected:\n+321 //\n+322 // Not to be specialized:\n+323 //\n+324 static bool _\bp_\bo_\bp_\bu_\bl_\ba_\bt_\be_\bB_\ba_\bs_\be_\bL_\be_\bv_\be_\bl(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br& refiner, MESH const& mesh,\n+_\bO_\bp_\bt_\bi_\bo_\bn_\bs options);\n+325\n+326private:\n+327 //\n+328 // An oversight in the interfaces of the error reporting function between\n+the factory\n+329 // class and the Vtr::Level requires this adapter function to avoid\n+warnings.\n+330 //\n+331 // The static class method requires a reference as the MESH argument, but\n+the interface\n+332 // for Vtr::Level requires a pointer (void*). So this adapter with a MESH*\n+argument is\n+333 // used to effectively cast the function pointer required by Vtr::Level\n+error reporting:\n+334 //\n+335 static void reportInvalidTopologyAdapter(TopologyError errCode, char const\n+* msg, MESH const * mesh) {\n+336 _\br_\be_\bp_\bo_\br_\bt_\bI_\bn_\bv_\ba_\bl_\bi_\bd_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by(errCode, msg, *mesh);\n+337 }\n+338};\n+339\n+340\n+341//\n+342// Generic implementations:\n+343//\n+344template <class MESH>\n+345TopologyRefiner*\n+_\b3_\b4_\b6_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bC_\br_\be_\ba_\bt_\be(MESH const& mesh, _\bO_\bp_\bt_\bi_\bo_\bn_\bs options) {\n+347\n+348 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br * refiner = new _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br(options._\bs_\bc_\bh_\be_\bm_\be_\bT_\by_\bp_\be,\n+options._\bs_\bc_\bh_\be_\bm_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs);\n+349\n+350 if (! populateBaseLevel(*refiner, mesh, options)) {\n+351 delete refiner;\n+352 return 0;\n+353 }\n+354\n+355 // Eventually want to move the Refiner's inventory initialization here.\n+Currently it\n+356 // is handled after topology assignment, but if the inventory is to include\n+additional\n+357 // features (e.g. holes, etc.) it is better off deferred to here.\n+358\n+359 return refiner;\n+360}\n+361\n+362template <class MESH>\n+363_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br*\n+_\b3_\b6_\b4_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bC_\br_\be_\ba_\bt_\be(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const & source) {\n+365\n+366 return new _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br(source);\n+367}\n+368\n+369template <class MESH>\n+370bool\n+_\b3_\b7_\b1_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bp_\bo_\bp_\bu_\bl_\ba_\bt_\be_\bB_\ba_\bs_\be_\bL_\be_\bv_\be_\bl(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br& refiner,\n+MESH const& mesh, _\bO_\bp_\bt_\bi_\bo_\bn_\bs options) {\n+372\n+373 //\n+374 // Construction of a specialized topology refiner involves four steps, each\n+of which\n+375 // involves a method specialized for MESH followed by one that takes an\n+action in\n+376 // response to it or in preparation for the next step.\n+377 //\n+378 // Both the specialized methods and those that follow them may find fault\n+in the\n+379 // construction and trigger failure at any time:\n+380 //\n+381\n+382 //\n+383 // Sizing of the topology -- this is a required specialization for MESH.\n+This defines\n+384 // an inventory of all components and their relations that is used to\n+allocate buffers\n+385 // to be efficiently populated in the subsequent topology assignment step.\n+386 //\n+387 if (! resizeComponentTopology(refiner, mesh)) return false;\n+388 if (! prepareComponentTopologySizing(refiner)) return false;\n+389\n+390 //\n+391 // Assignment of the topology -- this is a required specialization for\n+MESH. If edges\n+392 // are specified, all other topological relations are expected to be\n+defined for them.\n+393 // Otherwise edges and remaining topology will be completed from the face-\n+vertices:\n+394 //\n+395 bool validate = options._\bv_\ba_\bl_\bi_\bd_\ba_\bt_\be_\bF_\bu_\bl_\bl_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by;\n+396 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bC_\ba_\bl_\bl_\bb_\ba_\bc_\bk callback = reinterpret_cast<_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bC_\ba_\bl_\bl_\bb_\ba_\bc_\bk>\n+(reportInvalidTopologyAdapter);\n+397 void const * userData = &mesh;\n+398\n+399 if (! assignComponentTopology(refiner, mesh)) return false;\n+400 if (! prepareComponentTopologyAssignment(refiner, validate, callback,\n+userData)) return false;\n+401\n+402 //\n+403 // User assigned and internal tagging of components -- an optional\n+specialization for\n+404 // MESH. Allows the specification of sharpness values, holes, etc.\n+405 //\n+406 if (! assignComponentTags(refiner, mesh)) return false;\n+407 if (! prepareComponentTagsAndSharpness(refiner)) return false;\n+408\n+409 //\n+410 // Defining channels of face-varying primvar data -- an optional\n+specialization for MESH.\n+411 //\n+412 if (! assignFaceVaryingTopology(refiner, mesh)) return false;\n+413 if (! prepareFaceVaryingChannels(refiner)) return false;\n+414\n+415 return true;\n+416}\n+417\n+418template <class MESH>\n+419inline void\n+_\b4_\b2_\b0_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bs_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bF_\ba_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & newRefiner,\n+int count) {\n+421 newRefiner._levels[0]->resizeFaces(count);\n+422}\n+423template <class MESH>\n+424inline void\n+_\b4_\b2_\b5_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bs_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bE_\bd_\bg_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & newRefiner,\n+int count) {\n+426 newRefiner._levels[0]->resizeEdges(count);\n+427}\n+428template <class MESH>\n+429inline void\n+_\b4_\b3_\b0_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bs_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\bi_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br &\n+newRefiner, int count) {\n+431 newRefiner._levels[0]->resizeVertices(count);\n+432}\n+433\n+434template <class MESH>\n+435inline int\n+_\b4_\b3_\b6_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bg_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bF_\ba_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const &\n+newRefiner) {\n+437 return newRefiner._levels[0]->getNumFaces();\n+438}\n+439template <class MESH>\n+440inline int\n+_\b4_\b4_\b1_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bg_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bE_\bd_\bg_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const &\n+newRefiner) {\n+442 return newRefiner._levels[0]->getNumEdges();\n+443}\n+444template <class MESH>\n+445inline int\n+_\b4_\b4_\b6_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bg_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\bi_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const &\n+newRefiner) {\n+447 return newRefiner._levels[0]->getNumVertices();\n+448}\n+449\n+450template <class MESH>\n+451inline void\n+_\b4_\b5_\b2_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bs_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\bi_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br &\n+newRefiner, _\bI_\bn_\bd_\be_\bx f, int count) {\n+453 newRefiner._levels[0]->resizeFaceVertices(f, count);\n+454 newRefiner._hasIrregFaces = newRefiner._hasIrregFaces || (count !=\n+newRefiner._regFaceSize);\n+455}\n+456template <class MESH>\n+457inline void\n+_\b4_\b5_\b8_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bs_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bE_\bd_\bg_\be_\bF_\ba_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br &\n+newRefiner, _\bI_\bn_\bd_\be_\bx e, int count) {\n+459 newRefiner._levels[0]->resizeEdgeFaces(e, count);\n+460}\n+461template <class MESH>\n+462inline void\n+_\b4_\b6_\b3_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bs_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\be_\bx_\bF_\ba_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br &\n+newRefiner, _\bI_\bn_\bd_\be_\bx v, int count) {\n+464 newRefiner._levels[0]->resizeVertexFaces(v, count);\n+465}\n+466template <class MESH>\n+467inline void\n+_\b4_\b6_\b8_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bs_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\be_\bx_\bE_\bd_\bg_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br &\n+newRefiner, _\bI_\bn_\bd_\be_\bx v, int count) {\n+469 newRefiner._levels[0]->resizeVertexEdges(v, count);\n+470}\n+471\n+472template <class MESH>\n+473inline _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n+_\b4_\b7_\b4_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bg_\be_\bt_\bB_\ba_\bs_\be_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\bi_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br &\n+newRefiner, _\bI_\bn_\bd_\be_\bx f) {\n+475 return newRefiner._levels[0]->getFaceVertices(f);\n+476}\n+477template <class MESH>\n+478inline _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n+_\b4_\b7_\b9_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bg_\be_\bt_\bB_\ba_\bs_\be_\bF_\ba_\bc_\be_\bE_\bd_\bg_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & newRefiner,\n+_\bI_\bn_\bd_\be_\bx f) {\n+480 return newRefiner._levels[0]->getFaceEdges(f);\n+481}\n+482template <class MESH>\n+483inline _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n+_\b4_\b8_\b4_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bg_\be_\bt_\bB_\ba_\bs_\be_\bE_\bd_\bg_\be_\bV_\be_\br_\bt_\bi_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br &\n+newRefiner, _\bI_\bn_\bd_\be_\bx e) {\n+485 return newRefiner._levels[0]->getEdgeVertices(e);\n+486}\n+487template <class MESH>\n+488inline _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n+_\b4_\b8_\b9_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bg_\be_\bt_\bB_\ba_\bs_\be_\bE_\bd_\bg_\be_\bF_\ba_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & newRefiner,\n+_\bI_\bn_\bd_\be_\bx e) {\n+490 return newRefiner._levels[0]->getEdgeFaces(e);\n+491}\n+492template <class MESH>\n+493inline _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n+_\b4_\b9_\b4_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bg_\be_\bt_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\be_\bx_\bF_\ba_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br &\n+newRefiner, _\bI_\bn_\bd_\be_\bx v) {\n+495 return newRefiner._levels[0]->getVertexFaces(v);\n+496}\n+497template <class MESH>\n+498inline _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n+_\b4_\b9_\b9_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bg_\be_\bt_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\be_\bx_\bE_\bd_\bg_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br &\n+newRefiner, _\bI_\bn_\bd_\be_\bx v) {\n+500 return newRefiner._levels[0]->getVertexEdges(v);\n+501}\n+502\n+503template <class MESH>\n+504inline _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n+_\b5_\b0_\b5_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bg_\be_\bt_\bB_\ba_\bs_\be_\bE_\bd_\bg_\be_\bF_\ba_\bc_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\bi_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br &\n+newRefiner, _\bI_\bn_\bd_\be_\bx e) {\n+506 return newRefiner._levels[0]->getEdgeFaceLocalIndices(e);\n+507}\n+508template <class MESH>\n+509inline _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n+_\b5_\b1_\b0_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bg_\be_\bt_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\be_\bx_\bF_\ba_\bc_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\bi_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br\n+& newRefiner, _\bI_\bn_\bd_\be_\bx v) {\n+511 return newRefiner._levels[0]->getVertexFaceLocalIndices(v);\n+512}\n+513template <class MESH>\n+514inline _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n+_\b5_\b1_\b5_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bg_\be_\bt_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\be_\bx_\bE_\bd_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\bi_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br\n+& newRefiner, _\bI_\bn_\bd_\be_\bx v) {\n+516 return newRefiner._levels[0]->getVertexEdgeLocalIndices(v);\n+517}\n+518\n+519template <class MESH>\n+520inline _\bI_\bn_\bd_\be_\bx\n+_\b5_\b2_\b1_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bf_\bi_\bn_\bd_\bB_\ba_\bs_\be_\bE_\bd_\bg_\be(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const &\n+newRefiner, _\bI_\bn_\bd_\be_\bx v0, _\bI_\bn_\bd_\be_\bx v1) {\n+522 return newRefiner._levels[0]->findEdge(v0, v1);\n+523}\n+524\n+525template <class MESH>\n+526inline void\n+_\b5_\b2_\b7_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bp_\bo_\bp_\bu_\bl_\ba_\bt_\be_\bB_\ba_\bs_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\bi_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br &\n+newRefiner) {\n+528 newRefiner._levels[0]->populateLocalIndices();\n+529}\n+530\n+531template <class MESH>\n+532inline void\n+_\b5_\b3_\b3_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bs_\be_\bt_\bB_\ba_\bs_\be_\bE_\bd_\bg_\be_\bN_\bo_\bn_\bM_\ba_\bn_\bi_\bf_\bo_\bl_\bd(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br &\n+newRefiner, _\bI_\bn_\bd_\be_\bx e, bool b) {\n+534 newRefiner._levels[0]->setEdgeNonManifold(e, b);\n+535}\n+536template <class MESH>\n+537inline void\n+_\b5_\b3_\b8_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bs_\be_\bt_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\be_\bx_\bN_\bo_\bn_\bM_\ba_\bn_\bi_\bf_\bo_\bl_\bd(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br &\n+newRefiner, _\bI_\bn_\bd_\be_\bx v, bool b) {\n+539 newRefiner._levels[0]->setVertexNonManifold(v, b);\n+540}\n+541\n+542template <class MESH>\n+543inline void\n+_\b5_\b4_\b4_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bs_\be_\bt_\bB_\ba_\bs_\be_\bE_\bd_\bg_\be_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br &\n+newRefiner, _\bI_\bn_\bd_\be_\bx e, float s) {\n+545 newRefiner._levels[0]->getEdgeSharpness(e) = s;\n+546}\n+547template <class MESH>\n+548inline void\n+_\b5_\b4_\b9_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bs_\be_\bt_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\be_\bx_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br &\n+newRefiner, _\bI_\bn_\bd_\be_\bx v, float s) {\n+550 newRefiner._levels[0]->getVertexSharpness(v) = s;\n+551}\n+552template <class MESH>\n+553inline void\n+_\b5_\b5_\b4_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bs_\be_\bt_\bB_\ba_\bs_\be_\bF_\ba_\bc_\be_\bH_\bo_\bl_\be(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & newRefiner,\n+_\bI_\bn_\bd_\be_\bx f, bool b) {\n+555 newRefiner._levels[0]->setFaceHole(f, b);\n+556 newRefiner._hasHoles = newRefiner._hasHoles || b;\n+557}\n+558\n+559template <class MESH>\n+560inline int\n+_\b5_\b6_\b1_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bc_\br_\be_\ba_\bt_\be_\bB_\ba_\bs_\be_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br &\n+newRefiner, int numValues) {\n+562 return newRefiner._levels[0]->createFVarChannel(numValues,\n+newRefiner._subdivOptions);\n+563}\n+564template <class MESH>\n+565inline int\n+_\b5_\b6_\b6_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bc_\br_\be_\ba_\bt_\be_\bB_\ba_\bs_\be_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br &\n+newRefiner, int numValues, _\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs const& fvarOptions) {\n+567 _\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs newOptions = newRefiner._subdivOptions;\n+568 newOptions._\bS_\be_\bt_\bF_\bV_\ba_\br_\bL_\bi_\bn_\be_\ba_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+(fvarOptions._\bG_\be_\bt_\bF_\bV_\ba_\br_\bL_\bi_\bn_\be_\ba_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn());\n+569 return newRefiner._levels[0]->createFVarChannel(numValues, newOptions);\n+570}\n+571template <class MESH>\n+572inline _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n+_\b5_\b7_\b3_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\bg_\be_\bt_\bB_\ba_\bs_\be_\bF_\ba_\bc_\be_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br &\n+newRefiner, _\bI_\bn_\bd_\be_\bx face, int channel) {\n+574 return newRefiner._levels[0]->getFaceFVarValues(face, channel);\n+575}\n+576\n+577\n+578template <class MESH>\n+579bool\n+_\b5_\b8_\b0_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\br_\be_\bs_\bi_\bz_\be_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br& /\n+* refiner */, MESH const& /* mesh */) {\n+581\n+582 _\bE_\br_\br_\bo_\br(_\bF_\bA_\bR_\b__\bR_\bU_\bN_\bT_\bI_\bM_\bE_\b__\bE_\bR_\bR_\bO_\bR,\n+583 \"Failure in TopologyRefinerFactory<>::resizeComponentTopology() -- no\n+specialization provided.\");\n+584\n+585 //\n+586 // Sizing the topology tables:\n+587 // This method is for determining the sizes of the various topology tables\n+(and other\n+588 // data) associated with the mesh. Once completed, appropriate memory will\n+be allocated\n+589 // and an additional method invoked to populate it accordingly.\n+590 //\n+591 // The following methods should be called -- first those to specify the\n+number of faces,\n+592 // edges and vertices in the mesh:\n+593 //\n+594 // void setBaseFaceCount( TopologyRefiner& newRefiner, int count)\n+595 // void setBaseEdgeCount( TopologyRefiner& newRefiner, int count)\n+596 // void setBaseVertexCount(TopologyRefiner& newRefiner, int count)\n+597 //\n+598 // and then for each face, edge and vertex, the number of its incident\n+components:\n+599 //\n+600 // void setBaseFaceVertexCount(TopologyRefiner& newRefiner, Index face, int\n+count)\n+601 // void setBaseEdgeFaceCount( TopologyRefiner& newRefiner, Index edge, int\n+count)\n+602 // void setBaseVertexFaceCount(TopologyRefiner& newRefiner, Index vertex,\n+int count)\n+603 // void setBaseVertexEdgeCount(TopologyRefiner& newRefiner, Index vertex,\n+int count)\n+604 //\n+605 // The count/size for a component type must be set before indices\n+associated with that\n+606 // component type can be used.\n+607 //\n+608 // Note that it is only necessary to size 4 of the 6 supported topological\n+relations --\n+609 // the number of edge-vertices is fixed at two per edge, and the number of\n+face-edges is\n+610 // the same as the number of face-vertices.\n+611 //\n+612 // So a single pass through your mesh to gather up all of this sizing\n+information will\n+613 // allow the Tables to be allocated appropriately once and avoid any\n+dynamic resizing as\n+614 // it grows.\n+615 //\n+616 return false;\n+617}\n+618\n+619template <class MESH>\n+620bool\n+_\b6_\b2_\b1_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br& /\n+* refiner */, MESH const& /* mesh */) {\n+622\n+623 _\bE_\br_\br_\bo_\br(_\bF_\bA_\bR_\b__\bR_\bU_\bN_\bT_\bI_\bM_\bE_\b__\bE_\bR_\bR_\bO_\bR,\n+624 \"Failure in TopologyRefinerFactory<>::assignComponentTopology() -- no\n+specialization provided.\");\n+625\n+626 //\n+627 // Assigning the topology tables:\n+628 // Once the topology tables have been allocated, the six required\n+topological\n+629 // relations can be directly populated using the following methods:\n+630 //\n+631 // IndexArray setBaseFaceVertices(TopologyRefiner& newRefiner, Index face)\n+632 // IndexArray setBaseFaceEdges(TopologyRefiner& newRefiner, Index face)\n+633 //\n+634 // IndexArray setBaseEdgeVertices(TopologyRefiner& newRefiner, Index edge)\n+635 // IndexArray setBaseEdgeFaces(TopologyRefiner& newRefiner, Index edge)\n+636 //\n+637 // IndexArray setBaseVertexEdges(TopologyRefiner& newRefiner, Index vertex)\n+638 // IndexArray setBaseVertexFaces(TopologyRefiner& newRefiner, Index vertex)\n+639 //\n+640 // For the last two relations -- the faces and edges incident a vertex -\n+- there are\n+641 // also \"local indices\" that must be specified (considering doing this\n+internally),\n+642 // where the \"local index\" of each incident face or edge is the index of\n+the vertex\n+643 // within that face or edge, and so ranging from 0-3 for incident quads and\n+0-1 for\n+644 // incident edges. These are assigned through similarly retrieved arrays:\n+645 //\n+646 // LocalIndexArray setBaseVertexFaceLocalIndices(TopologyRefiner&\n+newRefiner, Index vertex)\n+647 // LocalIndexArray setBaseVertexEdgeLocalIndices(TopologyRefiner&\n+newRefiner, Index vertex)\n+648 // LocalIndexArray setBaseEdgeFaceLocalIndices( TopologyRefiner&\n+newRefiner, Index edge)\n+649 //\n+650 // or, if the mesh is manifold, explicit assignment of these can be\n+deferred and\n+651 // all can be determined by calling:\n+652 //\n+653 // void populateBaseLocalIndices(TopologyRefiner& newRefiner)\n+654 //\n+655 // All components are assumed to be locally manifold and ordering of\n+components in\n+656 // the above relations is expected to be counter-clockwise.\n+657 //\n+658 // For non-manifold components, no ordering/orientation of incident\n+components is\n+659 // assumed or required, but be sure to explicitly tag such components\n+(vertices and\n+660 // edges) as non-manifold:\n+661 //\n+662 // void setBaseEdgeNonManifold(TopologyRefiner& newRefiner, Index edge,\n+bool b);\n+663 //\n+664 // void setBaseVertexNonManifold(TopologyRefiner& newRefiner, Index vertex,\n+bool b);\n+665 //\n+666 // Also consider using TopologyLevel::ValidateTopology() when debugging to\n+ensure\n+667 // that topology has been completely and correctly specified.\n+668 //\n+669 return false;\n+670}\n+671\n+672template <class MESH>\n+673bool\n+_\b6_\b7_\b4_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br& /\n+* refiner */, MESH const& /* mesh */) {\n+675\n+676 //\n+677 // Optional assigning face-varying topology tables:\n+678 //\n+679 // Create independent face-varying primitive variable channels:\n+680 // int createBaseFVarChannel(TopologyRefiner& newRefiner, int numValues)\n+681 //\n+682 // For each channel, populate the face-vertex values:\n+683 // IndexArray setBaseFaceFVarValues(TopologyRefiner& newRefiner, Index\n+face, int channel = 0)\n+684 //\n+685 return true;\n+686}\n+687\n+688template <class MESH>\n+689bool\n+_\b6_\b9_\b0_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\bT_\ba_\bg_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br& /\n+* refiner */, MESH const& /* mesh */) {\n+691\n+692 //\n+693 // Optional tagging:\n+694 // This is where any additional feature tags -- sharpness, holes, etc. -\n+- can be\n+695 // specified using:\n+696 //\n+697 // void setBaseEdgeSharpness(TopologyRefiner& newRefiner, Index edge, float\n+sharpness)\n+698 // void setBaseVertexSharpness(TopologyRefiner& newRefiner, Index vertex,\n+float sharpness)\n+699 //\n+700 // void setBaseFaceHole(TopologyRefiner& newRefiner, Index face, bool hole)\n+701 //\n+702 return true;\n+703}\n+704\n+705template <class MESH>\n+706void\n+_\b7_\b0_\b7_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bM_\bE_\bS_\bH_\b>_\b:_\b:_\br_\be_\bp_\bo_\br_\bt_\bI_\bn_\bv_\ba_\bl_\bi_\bd_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by(\n+708 TopologyError /* errCode */, char const * /* msg */, MESH const& /* mesh */\n+) {\n+709\n+710 //\n+711 // Optional topology validation error reporting:\n+712 // This method is called whenever the factory encounters topology\n+validation\n+713 // errors. By default, nothing is reported\n+714 //\n+715}\n+716\n+717} // end namespace Far\n+718\n+719} // end namespace OPENSUBDIV_VERSION\n+720using namespace OPENSUBDIV_VERSION;\n+721} // end namespace OpenSubdiv\n+722\n+723#endif /* OPENSUBDIV3_FAR_TOPOLOGY_REFINER_FACTORY_H */\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bT_\by_\bp_\be\n-Type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b4_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be\n-Provides shader source which can be used by client code.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bs_\bl_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b._\bh_\b:_\b4_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b:_\b:\n-_\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be\n-static std::string GetVertexShaderSource(Far::PatchDescriptor::Type type)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b:_\b:\n-_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bD_\br_\ba_\bw_\bi_\bn_\bg_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be\n-static std::string GetPatchDrawingShaderSource()\n-Returns shader source which can be used while drawing piecewise parametric\n-patches resulting from sub...\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b:_\b:\n-_\bG_\be_\bt_\bT_\be_\bs_\bs_\bE_\bv_\ba_\bl_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be\n-static std::string GetTessEvalShaderSource(Far::PatchDescriptor::Type type)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b:_\b:\n-_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bB_\ba_\bs_\bi_\bs_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be\n-static std::string GetPatchBasisShaderSource()\n-Returns shader source which can be used to evaluate position and first and\n-second derivatives on piec...\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b:_\b:\n-_\bG_\be_\bt_\bC_\bo_\bm_\bm_\bo_\bn_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be\n-static std::string GetCommonShaderSource()\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b:_\b:\n-_\bG_\be_\bt_\bT_\be_\bs_\bs_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be\n-static std::string GetTessControlShaderSource(Far::PatchDescriptor::Type type)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bE_\br_\br_\bo_\br\n+void Error(ErrorType err, const char *format,...)\n+Sends an OSD error with a message (internal use only)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bF_\bA_\bR_\b__\bR_\bU_\bN_\bT_\bI_\bM_\bE_\b__\bE_\bR_\bR_\bO_\bR\n+@ FAR_RUNTIME_ERROR\n+Issue a generic runtime error, but continue execution.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\be_\br_\br_\bo_\br_\b._\bh_\b:_\b4_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx\n+Vtr::Index Index\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b4_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\bT_\by_\bp_\be\n+SchemeType\n+Enumerated type for all subdivision schemes supported by OpenSubdiv.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b3_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bC_\bA_\bT_\bM_\bA_\bR_\bK\n+@ SCHEME_CATMARK\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b3_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by\n+Factory for constructing TopologyRefiners from specific mesh classes.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b7_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bg_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bF_\ba_\bc_\be_\bs\n+static int getNumBaseFaces(TopologyRefiner const &newRefiner)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b4_\b3_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n+_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by\n+static bool assignComponentTopology(TopologyRefiner &newRefiner, MESH const\n+&mesh)\n+Specify the relationships between vertices, faces, etc. ie the face-vertices,\n+vertex-faces,...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b6_\b2_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n+_\br_\be_\bp_\bo_\br_\bt_\bI_\bn_\bv_\ba_\bl_\bi_\bd_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by\n+static void reportInvalidTopology(TopologyError errCode, char const *msg, MESH\n+const &mesh)\n+(Optional) Control run-time topology validation and error reporting\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b7_\b0_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n+_\bg_\be_\bt_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\be_\bx_\bF_\ba_\bc_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\bi_\bc_\be_\bs\n+static LocalIndexArray getBaseVertexFaceLocalIndices(TopologyRefiner\n+&newRefiner, Index v)\n+Assign the local indices of a vertex within each of its incident faces.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b1_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bg_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n+static int getNumBaseVertices(TopologyRefiner const &newRefiner)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b4_\b4_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n+_\bs_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bE_\bd_\bg_\be_\bF_\ba_\bc_\be_\bs\n+static void setNumBaseEdgeFaces(TopologyRefiner &newRefiner, Index e, int\n+count)\n+Specify the number of faces incident each edge.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b4_\b5_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n+_\bg_\be_\bt_\bB_\ba_\bs_\be_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n+static IndexArray getBaseFaceVertices(TopologyRefiner &newRefiner, Index f)\n+Assign the vertices incident each face.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b4_\b7_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n+_\bg_\be_\bt_\bB_\ba_\bs_\be_\bE_\bd_\bg_\be_\bF_\ba_\bc_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\bi_\bc_\be_\bs\n+static LocalIndexArray getBaseEdgeFaceLocalIndices(TopologyRefiner &newRefiner,\n+Index e)\n+Assign the local indices of an edge within each of its incident faces.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b0_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bp_\bo_\bp_\bu_\bl_\ba_\bt_\be_\bB_\ba_\bs_\be_\bL_\be_\bv_\be_\bl\n+static bool populateBaseLevel(TopologyRefiner &refiner, MESH const &mesh,\n+Options options)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b3_\b7_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n+_\bp_\bo_\bp_\bu_\bl_\ba_\bt_\be_\bB_\ba_\bs_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\bi_\bc_\be_\bs\n+static void populateBaseLocalIndices(TopologyRefiner &newRefiner)\n+Determine all local indices by inspection (only for pure manifold meshes)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b2_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n+_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\bT_\ba_\bg_\bs\n+static bool assignComponentTags(TopologyRefiner &newRefiner, MESH const &mesh)\n+(Optional) Specify edge or vertex sharpness or face holes\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b6_\b9_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n+_\br_\be_\bs_\bi_\bz_\be_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by\n+static bool resizeComponentTopology(TopologyRefiner &newRefiner, MESH const\n+&mesh)\n+Specify the number of vertices, faces, face-vertices, etc.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b8_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n+_\bs_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\be_\bx_\bE_\bd_\bg_\be_\bs\n+static void setNumBaseVertexEdges(TopologyRefiner &newRefiner, Index v, int\n+count)\n+Specify the number of edges incident each vertex.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b4_\b6_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bE_\br_\br_\bo_\br\n+Vtr::internal::Level::TopologyError TopologyError\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b3_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n+_\bg_\be_\bt_\bB_\ba_\bs_\be_\bF_\ba_\bc_\be_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bs\n+static IndexArray getBaseFaceFVarValues(TopologyRefiner &newRefiner, Index\n+face, int channel=0)\n+Assign the face-varying values for the corners of each face.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b7_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bg_\be_\bt_\bB_\ba_\bs_\be_\bE_\bd_\bg_\be_\bF_\ba_\bc_\be_\bs\n+static IndexArray getBaseEdgeFaces(TopologyRefiner &newRefiner, Index e)\n+Assign the faces incident each edge.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b4_\b8_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n+_\bs_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\be_\bx_\bF_\ba_\bc_\be_\bs\n+static void setNumBaseVertexFaces(TopologyRefiner &newRefiner, Index v, int\n+count)\n+Specify the number of faces incident each vertex.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b4_\b6_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n+_\ba_\bs_\bs_\bi_\bg_\bn_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by\n+static bool assignFaceVaryingTopology(TopologyRefiner &newRefiner, MESH const\n+&mesh)\n+(Optional) Specify face-varying data per face\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b6_\b7_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n+_\bs_\be_\bt_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\be_\bx_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs\n+static void setBaseVertexSharpness(TopologyRefiner &newRefiner, Index v, float\n+sharpness)\n+Assign a sharpness value to a given vertex.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b4_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n+_\bg_\be_\bt_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\be_\bx_\bE_\bd_\bg_\be_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\bi_\bc_\be_\bs\n+static LocalIndexArray getBaseVertexEdgeLocalIndices(TopologyRefiner\n+&newRefiner, Index v)\n+Assign the local indices of a vertex within each of its incident edges.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b1_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n+_\bg_\be_\bt_\bB_\ba_\bs_\be_\bE_\bd_\bg_\be_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n+static IndexArray getBaseEdgeVertices(TopologyRefiner &newRefiner, Index e)\n+Assign the vertices incident each edge.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b4_\b8_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bg_\be_\bt_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\be_\bx_\bF_\ba_\bc_\be_\bs\n+static IndexArray getBaseVertexFaces(TopologyRefiner &newRefiner, Index v)\n+Assign the faces incident each vertex.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b4_\b9_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n+_\bs_\be_\bt_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\be_\bx_\bN_\bo_\bn_\bM_\ba_\bn_\bi_\bf_\bo_\bl_\bd\n+static void setBaseVertexNonManifold(TopologyRefiner &newRefiner, Index v, bool\n+b)\n+Tag a vertex as non-manifold.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b3_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bs_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bF_\ba_\bc_\be_\bs\n+static void setNumBaseFaces(TopologyRefiner &newRefiner, int count)\n+Specify the number of faces to be accommodated.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b4_\b2_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bg_\be_\bt_\bB_\ba_\bs_\be_\bF_\ba_\bc_\be_\bE_\bd_\bg_\be_\bs\n+static IndexArray getBaseFaceEdges(TopologyRefiner &newRefiner, Index f)\n+Assign the edges incident each face.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b4_\b7_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n+_\bs_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n+static void setNumBaseFaceVertices(TopologyRefiner &newRefiner, Index f, int\n+count)\n+Specify the number of vertices incident each face.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b4_\b5_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n+_\bs_\be_\bt_\bB_\ba_\bs_\be_\bE_\bd_\bg_\be_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs\n+static void setBaseEdgeSharpness(TopologyRefiner &newRefiner, Index e, float\n+sharpness)\n+Assign a sharpness value to a given edge.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b4_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n+_\bs_\be_\bt_\bB_\ba_\bs_\be_\bE_\bd_\bg_\be_\bN_\bo_\bn_\bM_\ba_\bn_\bi_\bf_\bo_\bl_\bd\n+static void setBaseEdgeNonManifold(TopologyRefiner &newRefiner, Index e, bool\n+b)\n+Tag an edge as non-manifold.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b3_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bs_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bE_\bd_\bg_\be_\bs\n+static void setNumBaseEdges(TopologyRefiner &newRefiner, int count)\n+Specify the number of edges to be accommodated.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b4_\b2_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n+static TopologyRefiner * Create(MESH const &mesh, Options options=Options())\n+Instantiates a TopologyRefiner from client-provided topological representation.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b3_\b4_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bf_\bi_\bn_\bd_\bB_\ba_\bs_\be_\bE_\bd_\bg_\be\n+static Index findBaseEdge(TopologyRefiner const &newRefiner, Index v0, Index\n+v1)\n+Identify an edge to be assigned a sharpness value given a vertex pair.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b2_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bg_\be_\bt_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\be_\bx_\bE_\bd_\bg_\be_\bs\n+static IndexArray getBaseVertexEdges(TopologyRefiner &newRefiner, Index v)\n+Assign the edges incident each vertex.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b4_\b9_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n+_\bc_\br_\be_\ba_\bt_\be_\bB_\ba_\bs_\be_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl\n+static int createBaseFVarChannel(TopologyRefiner &newRefiner, int numValues)\n+Create a new face-varying channel with the given number of values.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b6_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bg_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bE_\bd_\bg_\be_\bs\n+static int getNumBaseEdges(TopologyRefiner const &newRefiner)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b4_\b4_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bs_\be_\bt_\bN_\bu_\bm_\bB_\ba_\bs_\be_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n+static void setNumBaseVertices(TopologyRefiner &newRefiner, int count)\n+Specify the number of vertices to be accommodated.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b4_\b3_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bs_\be_\bt_\bB_\ba_\bs_\be_\bF_\ba_\bc_\be_\bH_\bo_\bl_\be\n+static void setBaseFaceHole(TopologyRefiner &newRefiner, Index f, bool isHole)\n+Tag a face as a hole.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b5_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br\n+Stores topology data for a specified set of refinement options.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b5_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\bB_\ba_\bs_\be\n+Private base class of Factories for constructing TopologyRefiners.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b4_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\bB_\ba_\bs_\be_\b:_\b:\n+_\bp_\br_\be_\bp_\ba_\br_\be_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bA_\bs_\bs_\bi_\bg_\bn_\bm_\be_\bn_\bt\n+static bool prepareComponentTopologyAssignment(TopologyRefiner &refiner, bool\n+fullValidation, TopologyCallback callback, void const *callbackData)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\bB_\ba_\bs_\be_\b:_\b:\n+_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bC_\ba_\bl_\bl_\bb_\ba_\bc_\bk\n+Vtr::internal::Level::ValidationCallback TopologyCallback\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\bB_\ba_\bs_\be_\b:_\b:\n+_\bp_\br_\be_\bp_\ba_\br_\be_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\bT_\ba_\bg_\bs_\bA_\bn_\bd_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs\n+static bool prepareComponentTagsAndSharpness(TopologyRefiner &refiner)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\bB_\ba_\bs_\be_\b:_\b:\n+_\bp_\br_\be_\bp_\ba_\br_\be_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bS_\bi_\bz_\bi_\bn_\bg\n+static bool prepareComponentTopologySizing(TopologyRefiner &refiner)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\bB_\ba_\bs_\be_\b:_\b:\n+_\bp_\br_\be_\bp_\ba_\br_\be_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs\n+static bool prepareFaceVaryingChannels(TopologyRefiner &refiner)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n+Options related to the construction of each TopologyRefiner.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b8_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n+Options(Sdc::SchemeType sdcType=Sdc::SCHEME_CATMARK, Sdc::Options\n+sdcOptions=Sdc::Options())\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b8_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bs_\bc_\bh_\be_\bm_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n+Sdc::Options schemeOptions\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b9_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bs_\bc_\bh_\be_\bm_\be_\bT_\by_\bp_\be\n+Sdc::SchemeType schemeType\n+The subdivision scheme type identifier.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b9_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bv_\ba_\bl_\bi_\bd_\ba_\bt_\be_\bF_\bu_\bl_\bl_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by\n+unsigned int validateFullTopology\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b9_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n+All supported options applying to subdivision scheme.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b5_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bS_\be_\bt_\bF_\bV_\ba_\br_\bL_\bi_\bn_\be_\ba_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+void SetFVarLinearInterpolation(FVarLinearInterpolation b)\n+Set face-varying interpolation rule.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b9_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bG_\be_\bt_\bF_\bV_\ba_\br_\bL_\bi_\bn_\be_\ba_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+FVarLinearInterpolation GetFVarLinearInterpolation() const\n+Get face-varying interpolation rule.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b9_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bA_\br_\br_\ba_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b1_\b0_\b5\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bg_\bl_\bs_\bl_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b._\bh\n+    * _\bf_\ba_\br\n+    * _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00830.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00830.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/clEvaluator.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/far/patchMap.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -90,47 +90,44 @@\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> &#124;\n <a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">clEvaluator.h File Reference</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">patchMap.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00845_source.html\">../osd/opencl.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a01489_source.html\">../osd/types.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00866_source.html\">../osd/bufferDescriptor.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00842_source.html\">../far/patchTable.h</a>&quot;</code><br />\n+<code>#include &lt;cassert&gt;</code><br />\n </div>\n <p><a href=\"a00830_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01145.html\">CLStencilTable</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">OpenCL stencil table.  <a href=\"a01145.html#details\">More...</a><br /></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00977.html\">PatchMap</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">An quadtree-based map connecting coarse faces to their sub-patches.  <a href=\"a00977.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01149.html\">CLEvaluator</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00985.html\">PatchMap::QuadNode::Child</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00830.html\">clEvaluator.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7f420b72a822828cfa8b0561c695a5cc.html\">far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00830.html\">patchMap.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,30 +1,28 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-clEvaluator.h File Reference\n+patchMap.h File Reference\n #include \"../version.h\"\n-#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bo_\bp_\be_\bn_\bc_\bl_\b._\bh\"\n-#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n-#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh\"\n+#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh\"\n+#include <cassert>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bC_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n-\u00a0       OpenCL stencil table. _\bM_\bo_\br_\be_\b._\b._\b.\n+ class \u00a0 _\bP_\ba_\bt_\bc_\bh_\bM_\ba_\bp\n+\u00a0        An quadtree-based map connecting coarse faces to their sub-patches.\n+         _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n-class \u00a0 _\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n+struct \u00a0 _\bP_\ba_\bt_\bc_\bh_\bM_\ba_\bp_\b:_\b:_\bQ_\bu_\ba_\bd_\bN_\bo_\bd_\be_\b:_\b:_\bC_\bh_\bi_\bl_\bd\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n-\u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh\n+    * _\bf_\ba_\br\n+    * _\bp_\ba_\bt_\bc_\bh_\bM_\ba_\bp_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00830.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00830.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,4 +1,4 @@\n var a00830 = [\n-    [\"CLStencilTable\", \"a01145.html\", \"a01145\"],\n-    [\"CLEvaluator\", \"a01149.html\", \"a01149\"]\n+    [\"PatchMap\", \"a00977.html\", \"a00977\"],\n+    [\"Child\", \"a00985.html\", \"a00985\"]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00830_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00830_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/clEvaluator.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/far/patchMap.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">clEvaluator.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">patchMap.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00830.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2015 Pixar</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2013 Pixar</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -119,1283 +119,222 @@\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_CL_EVALUATOR_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_CL_EVALUATOR_H</span></div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_FAR_PATCH_MAP_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_FAR_PATCH_MAP_H</span></div>\n <div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n <div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n <div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../osd/opencl.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../osd/types.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &quot;../osd/bufferDescriptor.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../far/patchTable.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &lt;cassert&gt;</span></div>\n <div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n <div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n <div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n <div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n <div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">namespace </span>Far {</div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span>    <span class=\"keyword\">class </span>PatchTable;</div>\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span>    <span class=\"keyword\">class </span>StencilTable;</div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span>    <span class=\"keyword\">class </span>LimitStencilTable;</div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span>}</div>\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span> </div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"keyword\">namespace </span>Osd {</div>\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00052\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01145.html\">   52</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01145.html\">CLStencilTable</a> {</div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00055\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01145.html#ad4e05c20d99b64b2160c1a0c96cb0c01\">   55</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01145.html\">CLStencilTable</a> *<a class=\"code hl_function\" href=\"a01145.html#ad4e05c20d99b64b2160c1a0c96cb0c01\">Create</a>(<a class=\"code hl_class\" href=\"a01065.html\">Far::StencilTable</a> <span class=\"keyword\">const</span> *stencilTable,</div>\n-<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span>                                  DEVICE_CONTEXT context) {</div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span>        <span class=\"keywordflow\">return</span> <span class=\"keyword\">new</span> <a class=\"code hl_class\" href=\"a01145.html\">CLStencilTable</a>(stencilTable, context-&gt;GetContext());</div>\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span>    }</div>\n-</div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00049\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00977.html\">   49</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a00977.html\">PatchMap</a> {</div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span> </div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00977.html#ae83a6047fa1e373c7943d54b6dc46402\">   52</a></span>    <span class=\"keyword\">typedef</span> <a class=\"code hl_class\" href=\"a00997.html\">PatchTable::PatchHandle</a> <a class=\"code hl_typedef\" href=\"a00977.html#ae83a6047fa1e373c7943d54b6dc46402\">Handle</a>;</div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span> </div>\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00977.html#a016619de52fd79dbcdb879cc12b79200\">   58</a></span>    <a class=\"code hl_function\" href=\"a00977.html#a016619de52fd79dbcdb879cc12b79200\">PatchMap</a>( <a class=\"code hl_class\" href=\"a00993.html\">PatchTable</a> <span class=\"keyword\">const</span> &amp; patchTable );</div>\n <div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span> </div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00061\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01145.html#a474edc933635aca814471b8d48950a0e\">   61</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01145.html\">CLStencilTable</a> *<a class=\"code hl_function\" href=\"a01145.html#a474edc933635aca814471b8d48950a0e\">Create</a>(</div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span>        <a class=\"code hl_class\" href=\"a01081.html\">Far::LimitStencilTable</a> <span class=\"keyword\">const</span> *limitStencilTable,</div>\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>        DEVICE_CONTEXT context) {</div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span>        <span class=\"keywordflow\">return</span> <span class=\"keyword\">new</span> <a class=\"code hl_class\" href=\"a01145.html\">CLStencilTable</a>(limitStencilTable, context-&gt;GetContext());</div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span> </div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01145.html#a33ca6bb1dba9f8e390a58395d164431e\">   67</a></span>    <a class=\"code hl_function\" href=\"a01145.html#a33ca6bb1dba9f8e390a58395d164431e\">CLStencilTable</a>(<a class=\"code hl_class\" href=\"a01065.html\">Far::StencilTable</a> <span class=\"keyword\">const</span> *stencilTable,</div>\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span>                   cl_context clContext);</div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01145.html#af2994e79cf93c872e39659321750351a\">   69</a></span>    <a class=\"code hl_function\" href=\"a01145.html#af2994e79cf93c872e39659321750351a\">CLStencilTable</a>(<a class=\"code hl_class\" href=\"a01081.html\">Far::LimitStencilTable</a> <span class=\"keyword\">const</span> *limitStencilTable,</div>\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span>                   cl_context clContext);</div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01145.html#ab84d9750ece4e75ae7a51e7d912df82b\">   71</a></span>    <a class=\"code hl_function\" href=\"a01145.html#ab84d9750ece4e75ae7a51e7d912df82b\">~CLStencilTable</a>();</div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span> </div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span>    <span class=\"comment\">// interfaces needed for CLComputeKernel</span></div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01145.html#a65e52572efdebb80844185aada8d5951\">   74</a></span>    cl_mem <a class=\"code hl_function\" href=\"a01145.html#a65e52572efdebb80844185aada8d5951\">GetSizesBuffer</a>()<span class=\"keyword\">      const </span>{ <span class=\"keywordflow\">return</span> _sizes; }</div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01145.html#a3bd38b85fd2bea1c4d2018d2f8e177a3\">   75</a></span>    cl_mem <a class=\"code hl_function\" href=\"a01145.html#a3bd38b85fd2bea1c4d2018d2f8e177a3\">GetOffsetsBuffer</a>()<span class=\"keyword\">    const </span>{ <span class=\"keywordflow\">return</span> _offsets; }</div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01145.html#a5cbc4ec76e497871b20b4ef91f5f054f\">   76</a></span>    cl_mem <a class=\"code hl_function\" href=\"a01145.html#a5cbc4ec76e497871b20b4ef91f5f054f\">GetIndicesBuffer</a>()<span class=\"keyword\">    const </span>{ <span class=\"keywordflow\">return</span> _indices; }</div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01145.html#af37e0ab1fae60f201db4eb21ff7e941e\">   77</a></span>    cl_mem <a class=\"code hl_function\" href=\"a01145.html#af37e0ab1fae60f201db4eb21ff7e941e\">GetWeightsBuffer</a>()<span class=\"keyword\">    const </span>{ <span class=\"keywordflow\">return</span> _weights; }</div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01145.html#aab6c794e109053815894e2314f05564b\">   78</a></span>    cl_mem <a class=\"code hl_function\" href=\"a01145.html#aab6c794e109053815894e2314f05564b\">GetDuWeightsBuffer</a>()<span class=\"keyword\">  const </span>{ <span class=\"keywordflow\">return</span> _duWeights; }</div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01145.html#aa1550324554767683ae2bf0317e6bad6\">   79</a></span>    cl_mem <a class=\"code hl_function\" href=\"a01145.html#aa1550324554767683ae2bf0317e6bad6\">GetDvWeightsBuffer</a>()<span class=\"keyword\">  const </span>{ <span class=\"keywordflow\">return</span> _dvWeights; }</div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01145.html#a9a1d122f4bea431331fa542cf6dee1f6\">   80</a></span>    cl_mem <a class=\"code hl_function\" href=\"a01145.html#a9a1d122f4bea431331fa542cf6dee1f6\">GetDuuWeightsBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _duuWeights; }</div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01145.html#aa79d14d151020f9298c742c3072e7fc9\">   81</a></span>    cl_mem <a class=\"code hl_function\" href=\"a01145.html#aa79d14d151020f9298c742c3072e7fc9\">GetDuvWeightsBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _duvWeights; }</div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01145.html#a015241b43d27300535376319ae7b6dc4\">   82</a></span>    cl_mem <a class=\"code hl_function\" href=\"a01145.html#a015241b43d27300535376319ae7b6dc4\">GetDvvWeightsBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _dvvWeights; }</div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01145.html#a65836d2070b943c8fecbad926d074de2\">   83</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01145.html#a65836d2070b943c8fecbad926d074de2\">GetNumStencils</a>()<span class=\"keyword\">         const </span>{ <span class=\"keywordflow\">return</span> _numStencils; }</div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span>    <a class=\"code hl_class\" href=\"a00997.html\">Handle</a> <span class=\"keyword\">const</span> * <a class=\"code hl_function\" href=\"a00977.html#abc70f9419d5f26ef85cbef5c5b6451f0\">FindPatch</a>( <span class=\"keywordtype\">int</span> patchFaceId, <span class=\"keywordtype\">double</span> u, <span class=\"keywordtype\">double</span> v ) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span> </div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span>    <span class=\"keywordtype\">void</span> initializeHandles(<a class=\"code hl_class\" href=\"a00993.html\">PatchTable</a> <span class=\"keyword\">const</span> &amp; patchTable);</div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span>    <span class=\"keywordtype\">void</span> initializeQuadtree(<a class=\"code hl_class\" href=\"a00993.html\">PatchTable</a> <span class=\"keyword\">const</span> &amp; patchTable);</div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span> </div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>    <span class=\"comment\">// Quadtree node with 4 children, tree is just a vector of nodes</span></div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>    <span class=\"keyword\">struct </span>QuadNode {</div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>        QuadNode() { std::memset(<span class=\"keyword\">this</span>, 0, <span class=\"keyword\">sizeof</span>(QuadNode)); }</div>\n <div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span> </div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>    cl_mem _sizes;</div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>    cl_mem _offsets;</div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>    cl_mem _indices;</div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>    cl_mem _weights;</div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>    cl_mem _duWeights;</div>\n-<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>    cl_mem _dvWeights;</div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>    cl_mem _duuWeights;</div>\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span>    cl_mem _duvWeights;</div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>    cl_mem _dvvWeights;</div>\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span>    <span class=\"keywordtype\">int</span> _numStencils;</div>\n-<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span> </div>\n-<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span><span class=\"comment\">// ---------------------------------------------------------------------------</span></div>\n-<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00100\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html\">  100</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01149.html\">CLEvaluator</a> {</div>\n-<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#a2c24b70c9312d8dff3fecb9ddea52c44\">  102</a></span>    <span class=\"keyword\">typedef</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_typedef\" href=\"a01149.html#a2c24b70c9312d8dff3fecb9ddea52c44\">Instantiatable</a>;</div>\n-<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span> </div>\n-<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00106\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#a3a2faa1170cedd851fea7266e0ff7eda\">  106</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01149.html\">CLEvaluator</a> *<a class=\"code hl_function\" href=\"a01149.html#a3a2faa1170cedd851fea7266e0ff7eda\">Create</a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span>                               <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span>                               <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span>                               <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span>                               DEVICE_CONTEXT deviceContext) {</div>\n-<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01149.html#a3a2faa1170cedd851fea7266e0ff7eda\">Create</a>(srcDesc, dstDesc, duDesc, dvDesc,</div>\n-<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span>                      deviceContext-&gt;GetContext(),</div>\n-<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span>                      deviceContext-&gt;GetCommandQueue());</div>\n-<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00116\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#a1243e4560da0f71a3dcd290772548d98\">  116</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01149.html\">CLEvaluator</a> * <a class=\"code hl_function\" href=\"a01149.html#a1243e4560da0f71a3dcd290772548d98\">Create</a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span>                                <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\">  118</span>                                <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span>                                <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span>                                cl_context clContext,</div>\n-<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\">  121</span>                                cl_command_queue clCommandQueue) {</div>\n-<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span>        <a class=\"code hl_class\" href=\"a01149.html\">CLEvaluator</a> *instance = <span class=\"keyword\">new</span> <a class=\"code hl_class\" href=\"a01149.html\">CLEvaluator</a>(clContext, clCommandQueue);</div>\n-<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span>        <span class=\"keywordflow\">if</span> (instance-&gt;<a class=\"code hl_function\" href=\"a01149.html#ade1086349c1a452f60bcf281383ceec2\">Compile</a>(srcDesc, dstDesc, duDesc, dvDesc))</div>\n-<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span>            <span class=\"keywordflow\">return</span> instance;</div>\n-<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span>        <span class=\"keyword\">delete</span> instance;</div>\n-<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span>        <span class=\"keywordflow\">return</span> NULL;</div>\n-<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span> </div>\n-<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00131\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#a49cef5f95d8dec6c11fc1dd62dcd7045\">  131</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01149.html\">CLEvaluator</a> *<a class=\"code hl_function\" href=\"a01149.html#a49cef5f95d8dec6c11fc1dd62dcd7045\">Create</a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\">  132</span>                               <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\">  133</span>                               <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\">  134</span>                               <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\">  135</span>                               <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\">  136</span>                               <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\">  137</span>                               <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\">  138</span>                               DEVICE_CONTEXT deviceContext) {</div>\n-<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\">  139</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01149.html#a3a2faa1170cedd851fea7266e0ff7eda\">Create</a>(srcDesc, dstDesc, duDesc, dvDesc,</div>\n-<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\">  140</span>                      duuDesc, duvDesc, dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\">  141</span>                      deviceContext-&gt;GetContext(),</div>\n-<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span>                      deviceContext-&gt;GetCommandQueue());</div>\n-<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\">  143</span>    }</div>\n-</div>\n+<div class=\"foldopen\" id=\"foldopen00085\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00985.html\">   85</a></span>        <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a00985.html\">Child</a> {</div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00985.html#ad3e71fff03a23f93fef41adc5d367435\">   86</a></span>            <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"a00985.html#ad3e71fff03a23f93fef41adc5d367435\">isSet</a>  :  1;  <span class=\"comment\">// true if the child has been set</span></div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00985.html#a07e7a9f4469398070886a336d833daa9\">   87</a></span>            <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"a00985.html#a07e7a9f4469398070886a336d833daa9\">isLeaf</a> :  1;  <span class=\"comment\">// true if the child is a QuadNode</span></div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00985.html#a589d64202487f78e3cc30dd2e04c5201\">   88</a></span>            <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"a00985.html#a589d64202487f78e3cc30dd2e04c5201\">index</a>  : 30;  <span class=\"comment\">// child index (either QuadNode or Handle)</span></div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>        };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span> </div>\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>        <span class=\"comment\">// sets all the children to point to the patch of given index</span></div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>        <span class=\"keywordtype\">void</span> SetChildren(<span class=\"keywordtype\">int</span> index);</div>\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span> </div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>        <span class=\"comment\">// sets the child in &quot;quadrant&quot; to point to the node or patch of the given index</span></div>\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span>        <span class=\"keywordtype\">void</span> SetChild(<span class=\"keywordtype\">int</span> quadrant, <span class=\"keywordtype\">int</span> index, <span class=\"keywordtype\">bool</span> isLeaf);</div>\n+<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span> </div>\n+<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>        <a class=\"code hl_struct\" href=\"a00985.html\">Child</a> children[4];</div>\n+<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span>    };</div>\n+<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span>    <span class=\"keyword\">typedef</span> std::vector&lt;QuadNode&gt; QuadTree;</div>\n+<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span> </div>\n+<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span>    <span class=\"comment\">// Internal methods supporting quadtree construction and queries</span></div>\n+<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span>    <span class=\"keywordtype\">void</span>       assignRootNode(QuadNode * node, <span class=\"keywordtype\">int</span> index);</div>\n+<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span>    QuadNode * assignLeafOrChildNode(QuadNode * node, <span class=\"keywordtype\">bool</span> isLeaf, <span class=\"keywordtype\">int</span> quad, <span class=\"keywordtype\">int</span> index);</div>\n+<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span> </div>\n+<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T&gt;</div>\n+<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">int</span> transformUVToQuadQuadrant(T <span class=\"keyword\">const</span> &amp; median, T &amp; u, T &amp; v);</div>\n+<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T&gt;</div>\n+<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">int</span> transformUVToTriQuadrant(T <span class=\"keyword\">const</span> &amp; median, T &amp; u, T &amp; v, <span class=\"keywordtype\">bool</span> &amp; rotated);</div>\n+<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span> </div>\n+<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span>    <span class=\"keywordtype\">bool</span> _patchesAreTriangular;  <span class=\"comment\">// tri and quad assembly and search requirements differ</span></div>\n+<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span> </div>\n+<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span>    <span class=\"keywordtype\">int</span>  _minPatchFace;  <span class=\"comment\">// minimum patch face index supported by the map</span></div>\n+<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span>    <span class=\"keywordtype\">int</span>  _maxPatchFace;  <span class=\"comment\">// maximum patch face index supported by the map</span></div>\n+<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span>    <span class=\"keywordtype\">int</span>  _maxDepth;      <span class=\"comment\">// maximum depth of a patch in the tree</span></div>\n+<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\">  116</span> </div>\n+<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span>    std::vector&lt;Handle&gt;   _handles;  <span class=\"comment\">// all the patches in the PatchTable</span></div>\n+<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\">  118</span>    std::vector&lt;QuadNode&gt; _quadtree; <span class=\"comment\">// quadtree nodes</span></div>\n+<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span> </div>\n+<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\">  121</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span><span class=\"comment\">//  Given a median value for both U and V, these methods transform a (u,v) pair</span></div>\n+<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span><span class=\"comment\">//  into the quadrant that contains them and returns the quadrant index.</span></div>\n+<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span><span class=\"comment\">//  Quadrant indexing for tri and quad patches -- consistent with PatchParam&#39;s</span></div>\n+<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span><span class=\"comment\">//  usage of UV bits:</span></div>\n+<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span><span class=\"comment\">//      (0,1) o-----o-----o (1,1)     (0,1) o     (1,0) o-----o-----o (0,0)  </span></div>\n+<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span><span class=\"comment\">//            |     |     |                 |\\           \\  1 |\\  0 |        </span></div>\n+<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span><span class=\"comment\">//            |  2  |  3  |                 |  \\           \\  |  \\  |        </span></div>\n+<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\">  131</span><span class=\"comment\">//            |     |     |                 | 2  \\           \\| 3  \\|        </span></div>\n+<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\">  132</span><span class=\"comment\">//            o-----o-----o                 o-----o           o-----o        </span></div>\n+<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\">  133</span><span class=\"comment\">//            |     |     |                 |\\  3 |\\           \\  2 |        </span></div>\n+<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\">  134</span><span class=\"comment\">//            |  0  |  1  |                 |  \\  |  \\           \\  |        </span></div>\n+<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\">  135</span><span class=\"comment\">//            |     |     |                 | 0  \\| 1  \\           \\|        </span></div>\n+<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\">  136</span><span class=\"comment\">//      (0,0) o-----o-----o (1,0)     (0,0) o-----o-----o (1,0)     o (0,1)  </span></div>\n+<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\">  137</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\">  138</span><span class=\"comment\">//  The triangular case also takes and returns/affects the rotation of the</span></div>\n+<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\">  139</span><span class=\"comment\">//  quadrant being searched and identified (quadrant 3 imparts a rotation).</span></div>\n+<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\">  140</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\">  141</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T&gt;</div>\n+<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span></div>\n+<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\">  143</span>PatchMap::transformUVToQuadQuadrant(T <span class=\"keyword\">const</span> &amp; median, T &amp; u, T &amp; v) {</div>\n <div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\">  144</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00145\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#aae831ff91b8da1852052d65ffc032ff9\">  145</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01149.html\">CLEvaluator</a> * <a class=\"code hl_function\" href=\"a01149.html#aae831ff91b8da1852052d65ffc032ff9\">Create</a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\">  146</span>                                <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\">  147</span>                                <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\">  148</span>                                <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\">  149</span>                                <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\">  150</span>                                <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\">  151</span>                                <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\">  152</span>                                cl_context clContext,</div>\n-<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\">  153</span>                                cl_command_queue clCommandQueue) {</div>\n-<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\">  154</span>        <a class=\"code hl_class\" href=\"a01149.html\">CLEvaluator</a> *instance = <span class=\"keyword\">new</span> <a class=\"code hl_class\" href=\"a01149.html\">CLEvaluator</a>(clContext, clCommandQueue);</div>\n-<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\">  155</span>        <span class=\"keywordflow\">if</span> (instance-&gt;<a class=\"code hl_function\" href=\"a01149.html#ade1086349c1a452f60bcf281383ceec2\">Compile</a>(srcDesc, dstDesc, duDesc, dvDesc,</div>\n-<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\">  156</span>                              duuDesc, duvDesc, dvvDesc))</div>\n-<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\">  157</span>            <span class=\"keywordflow\">return</span> instance;</div>\n-<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\">  158</span>        <span class=\"keyword\">delete</span> instance;</div>\n-<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\">  159</span>        <span class=\"keywordflow\">return</span> NULL;</div>\n-<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\">  160</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\">  161</span> </div>\n-<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#adbb0aafb7db3284f164499e8007c4cac\">  163</a></span>    <a class=\"code hl_function\" href=\"a01149.html#adbb0aafb7db3284f164499e8007c4cac\">CLEvaluator</a>(cl_context context, cl_command_queue queue);</div>\n-<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\">  164</span> </div>\n-<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#a0852475f515ff2419bea208c2783742b\">  166</a></span>    <a class=\"code hl_function\" href=\"a01149.html#a0852475f515ff2419bea208c2783742b\">~CLEvaluator</a>();</div>\n-<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\">  167</span> </div>\n-<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\">  173</span> </div>\n-<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\">  217</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\">  218</span>              <span class=\"keyword\">typename</span> STENCIL_TABLE, <span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00219\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#a0f2d760bbb9a4ea58eaf6e2806d033ca\">  219</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#a0f2d760bbb9a4ea58eaf6e2806d033ca\">EvalStencils</a>(</div>\n-<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\">  220</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\">  221</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\">  222</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n-<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\">  223</span>        <a class=\"code hl_class\" href=\"a01149.html\">CLEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n-<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\">  224</span>        DEVICE_CONTEXT deviceContext,</div>\n-<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\">  225</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents=0,</div>\n-<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\">  226</span>        <span class=\"keyword\">const</span> cl_event* startEvents=NULL,</div>\n-<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\">  227</span>        cl_event* endEvent=NULL) {</div>\n-<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\">  228</span> </div>\n-<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\">  229</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\">  230</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01149.html#a0f2d760bbb9a4ea58eaf6e2806d033ca\">EvalStencils</a>(srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\">  231</span>                                          dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\">  232</span>                                          stencilTable,</div>\n-<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\">  233</span>                                          numStartEvents, startEvents, endEvent);</div>\n-<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\">  234</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\">  235</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n-<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\">  236</span>            instance = <a class=\"code hl_function\" href=\"a01149.html#a3a2faa1170cedd851fea7266e0ff7eda\">Create</a>(srcDesc, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\">  237</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\">  238</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\">  239</span>                              deviceContext);</div>\n-<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\">  240</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\">  241</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01149.html#a0f2d760bbb9a4ea58eaf6e2806d033ca\">EvalStencils</a>(srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\">  242</span>                                                dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\">  243</span>                                                stencilTable,</div>\n-<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\">  244</span>                                                numStartEvents, startEvents, endEvent);</div>\n-<div class=\"line\"><a id=\"l00245\" name=\"l00245\"></a><span class=\"lineno\">  245</span>                <span class=\"keyword\">delete</span> instance;</div>\n-<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\">  246</span>                <span class=\"keywordflow\">return</span> r;</div>\n-<div class=\"line\"><a id=\"l00247\" name=\"l00247\"></a><span class=\"lineno\">  247</span>            }</div>\n-<div class=\"line\"><a id=\"l00248\" name=\"l00248\"></a><span class=\"lineno\">  248</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00249\" name=\"l00249\"></a><span class=\"lineno\">  249</span>        }</div>\n-<div class=\"line\"><a id=\"l00250\" name=\"l00250\"></a><span class=\"lineno\">  250</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00251\" name=\"l00251\"></a><span class=\"lineno\">  251</span> </div>\n-<div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\">  307</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l00308\" name=\"l00308\"></a><span class=\"lineno\">  308</span>              <span class=\"keyword\">typename</span> STENCIL_TABLE, <span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00309\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00309\" name=\"l00309\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#a035ab75e105567802674d86736e0959a\">  309</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#a035ab75e105567802674d86736e0959a\">EvalStencils</a>(</div>\n-<div class=\"line\"><a id=\"l00310\" name=\"l00310\"></a><span class=\"lineno\">  310</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00311\" name=\"l00311\"></a><span class=\"lineno\">  311</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00312\" name=\"l00312\"></a><span class=\"lineno\">  312</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00313\" name=\"l00313\"></a><span class=\"lineno\">  313</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00314\" name=\"l00314\"></a><span class=\"lineno\">  314</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n-<div class=\"line\"><a id=\"l00315\" name=\"l00315\"></a><span class=\"lineno\">  315</span>        <a class=\"code hl_class\" href=\"a01149.html\">CLEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n-<div class=\"line\"><a id=\"l00316\" name=\"l00316\"></a><span class=\"lineno\">  316</span>        DEVICE_CONTEXT deviceContext,</div>\n-<div class=\"line\"><a id=\"l00317\" name=\"l00317\"></a><span class=\"lineno\">  317</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents=0,</div>\n-<div class=\"line\"><a id=\"l00318\" name=\"l00318\"></a><span class=\"lineno\">  318</span>        <span class=\"keyword\">const</span> cl_event* startEvents=NULL,</div>\n-<div class=\"line\"><a id=\"l00319\" name=\"l00319\"></a><span class=\"lineno\">  319</span>        cl_event* endEvent=NULL) {</div>\n-<div class=\"line\"><a id=\"l00320\" name=\"l00320\"></a><span class=\"lineno\">  320</span> </div>\n-<div class=\"line\"><a id=\"l00321\" name=\"l00321\"></a><span class=\"lineno\">  321</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l00322\" name=\"l00322\"></a><span class=\"lineno\">  322</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01149.html#a0f2d760bbb9a4ea58eaf6e2806d033ca\">EvalStencils</a>(srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l00323\" name=\"l00323\"></a><span class=\"lineno\">  323</span>                                          dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\">  324</span>                                          duBuffer,  duDesc,</div>\n-<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\">  325</span>                                          dvBuffer,  dvDesc,</div>\n-<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\">  326</span>                                          stencilTable,</div>\n-<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\">  327</span>                                          numStartEvents, startEvents, endEvent);</div>\n-<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\">  328</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\">  329</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n-<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\">  330</span>            instance = <a class=\"code hl_function\" href=\"a01149.html#a3a2faa1170cedd851fea7266e0ff7eda\">Create</a>(srcDesc, dstDesc, duDesc, dvDesc,</div>\n-<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\">  331</span>                              deviceContext);</div>\n-<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\">  332</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l00333\" name=\"l00333\"></a><span class=\"lineno\">  333</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01149.html#a0f2d760bbb9a4ea58eaf6e2806d033ca\">EvalStencils</a>(srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l00334\" name=\"l00334\"></a><span class=\"lineno\">  334</span>                                                dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00335\" name=\"l00335\"></a><span class=\"lineno\">  335</span>                                                duBuffer,  duDesc,</div>\n-<div class=\"line\"><a id=\"l00336\" name=\"l00336\"></a><span class=\"lineno\">  336</span>                                                dvBuffer,  dvDesc,</div>\n-<div class=\"line\"><a id=\"l00337\" name=\"l00337\"></a><span class=\"lineno\">  337</span>                                                stencilTable,</div>\n-<div class=\"line\"><a id=\"l00338\" name=\"l00338\"></a><span class=\"lineno\">  338</span>                                                numStartEvents, startEvents, endEvent);</div>\n-<div class=\"line\"><a id=\"l00339\" name=\"l00339\"></a><span class=\"lineno\">  339</span>                <span class=\"keyword\">delete</span> instance;</div>\n-<div class=\"line\"><a id=\"l00340\" name=\"l00340\"></a><span class=\"lineno\">  340</span>                <span class=\"keywordflow\">return</span> r;</div>\n-<div class=\"line\"><a id=\"l00341\" name=\"l00341\"></a><span class=\"lineno\">  341</span>            }</div>\n-<div class=\"line\"><a id=\"l00342\" name=\"l00342\"></a><span class=\"lineno\">  342</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00343\" name=\"l00343\"></a><span class=\"lineno\">  343</span>        }</div>\n-<div class=\"line\"><a id=\"l00344\" name=\"l00344\"></a><span class=\"lineno\">  344</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00345\" name=\"l00345\"></a><span class=\"lineno\">  345</span> </div>\n-<div class=\"line\"><a id=\"l00419\" name=\"l00419\"></a><span class=\"lineno\">  419</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l00420\" name=\"l00420\"></a><span class=\"lineno\">  420</span>              <span class=\"keyword\">typename</span> STENCIL_TABLE, <span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00421\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00421\" name=\"l00421\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#a804e77ddd54d0d006f2274d0450cca6b\">  421</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#a804e77ddd54d0d006f2274d0450cca6b\">EvalStencils</a>(</div>\n-<div class=\"line\"><a id=\"l00422\" name=\"l00422\"></a><span class=\"lineno\">  422</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00423\" name=\"l00423\"></a><span class=\"lineno\">  423</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00424\" name=\"l00424\"></a><span class=\"lineno\">  424</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00425\" name=\"l00425\"></a><span class=\"lineno\">  425</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00426\" name=\"l00426\"></a><span class=\"lineno\">  426</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l00427\" name=\"l00427\"></a><span class=\"lineno\">  427</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l00428\" name=\"l00428\"></a><span class=\"lineno\">  428</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00429\" name=\"l00429\"></a><span class=\"lineno\">  429</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n-<div class=\"line\"><a id=\"l00430\" name=\"l00430\"></a><span class=\"lineno\">  430</span>        <a class=\"code hl_class\" href=\"a01149.html\">CLEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n-<div class=\"line\"><a id=\"l00431\" name=\"l00431\"></a><span class=\"lineno\">  431</span>        DEVICE_CONTEXT deviceContext,</div>\n-<div class=\"line\"><a id=\"l00432\" name=\"l00432\"></a><span class=\"lineno\">  432</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents=0,</div>\n-<div class=\"line\"><a id=\"l00433\" name=\"l00433\"></a><span class=\"lineno\">  433</span>        <span class=\"keyword\">const</span> cl_event* startEvents=NULL,</div>\n-<div class=\"line\"><a id=\"l00434\" name=\"l00434\"></a><span class=\"lineno\">  434</span>        cl_event* endEvent=NULL) {</div>\n-<div class=\"line\"><a id=\"l00435\" name=\"l00435\"></a><span class=\"lineno\">  435</span> </div>\n-<div class=\"line\"><a id=\"l00436\" name=\"l00436\"></a><span class=\"lineno\">  436</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l00437\" name=\"l00437\"></a><span class=\"lineno\">  437</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01149.html#a0f2d760bbb9a4ea58eaf6e2806d033ca\">EvalStencils</a>(srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l00438\" name=\"l00438\"></a><span class=\"lineno\">  438</span>                                          dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00439\" name=\"l00439\"></a><span class=\"lineno\">  439</span>                                          duBuffer,  duDesc,</div>\n-<div class=\"line\"><a id=\"l00440\" name=\"l00440\"></a><span class=\"lineno\">  440</span>                                          dvBuffer,  dvDesc,</div>\n-<div class=\"line\"><a id=\"l00441\" name=\"l00441\"></a><span class=\"lineno\">  441</span>                                          duuBuffer, duuDesc,</div>\n-<div class=\"line\"><a id=\"l00442\" name=\"l00442\"></a><span class=\"lineno\">  442</span>                                          duvBuffer, duvDesc,</div>\n-<div class=\"line\"><a id=\"l00443\" name=\"l00443\"></a><span class=\"lineno\">  443</span>                                          dvvBuffer, dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00444\" name=\"l00444\"></a><span class=\"lineno\">  444</span>                                          stencilTable,</div>\n-<div class=\"line\"><a id=\"l00445\" name=\"l00445\"></a><span class=\"lineno\">  445</span>                                          numStartEvents, startEvents, endEvent);</div>\n-<div class=\"line\"><a id=\"l00446\" name=\"l00446\"></a><span class=\"lineno\">  446</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00447\" name=\"l00447\"></a><span class=\"lineno\">  447</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n-<div class=\"line\"><a id=\"l00448\" name=\"l00448\"></a><span class=\"lineno\">  448</span>            instance = <a class=\"code hl_function\" href=\"a01149.html#a3a2faa1170cedd851fea7266e0ff7eda\">Create</a>(srcDesc, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00449\" name=\"l00449\"></a><span class=\"lineno\">  449</span>                              duDesc, dvDesc,</div>\n-<div class=\"line\"><a id=\"l00450\" name=\"l00450\"></a><span class=\"lineno\">  450</span>                              duuDesc, duvDesc, dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00451\" name=\"l00451\"></a><span class=\"lineno\">  451</span>                              deviceContext);</div>\n-<div class=\"line\"><a id=\"l00452\" name=\"l00452\"></a><span class=\"lineno\">  452</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l00453\" name=\"l00453\"></a><span class=\"lineno\">  453</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01149.html#a0f2d760bbb9a4ea58eaf6e2806d033ca\">EvalStencils</a>(srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l00454\" name=\"l00454\"></a><span class=\"lineno\">  454</span>                                                dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00455\" name=\"l00455\"></a><span class=\"lineno\">  455</span>                                                duBuffer,  duDesc,</div>\n-<div class=\"line\"><a id=\"l00456\" name=\"l00456\"></a><span class=\"lineno\">  456</span>                                                dvBuffer,  dvDesc,</div>\n-<div class=\"line\"><a id=\"l00457\" name=\"l00457\"></a><span class=\"lineno\">  457</span>                                                duuBuffer, duuDesc,</div>\n-<div class=\"line\"><a id=\"l00458\" name=\"l00458\"></a><span class=\"lineno\">  458</span>                                                duvBuffer, duvDesc,</div>\n-<div class=\"line\"><a id=\"l00459\" name=\"l00459\"></a><span class=\"lineno\">  459</span>                                                dvvBuffer, dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00460\" name=\"l00460\"></a><span class=\"lineno\">  460</span>                                                stencilTable,</div>\n-<div class=\"line\"><a id=\"l00461\" name=\"l00461\"></a><span class=\"lineno\">  461</span>                                                numStartEvents, startEvents, endEvent);</div>\n-<div class=\"line\"><a id=\"l00462\" name=\"l00462\"></a><span class=\"lineno\">  462</span>                <span class=\"keyword\">delete</span> instance;</div>\n-<div class=\"line\"><a id=\"l00463\" name=\"l00463\"></a><span class=\"lineno\">  463</span>                <span class=\"keywordflow\">return</span> r;</div>\n-<div class=\"line\"><a id=\"l00464\" name=\"l00464\"></a><span class=\"lineno\">  464</span>            }</div>\n-<div class=\"line\"><a id=\"l00465\" name=\"l00465\"></a><span class=\"lineno\">  465</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00466\" name=\"l00466\"></a><span class=\"lineno\">  466</span>        }</div>\n-<div class=\"line\"><a id=\"l00467\" name=\"l00467\"></a><span class=\"lineno\">  467</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00468\" name=\"l00468\"></a><span class=\"lineno\">  468</span> </div>\n-<div class=\"line\"><a id=\"l00499\" name=\"l00499\"></a><span class=\"lineno\">  499</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00500\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00500\" name=\"l00500\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#ac9a39efadbe573a03ffe5971586f72e8\">  500</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#ac9a39efadbe573a03ffe5971586f72e8\">EvalStencils</a>(</div>\n-<div class=\"line\"><a id=\"l00501\" name=\"l00501\"></a><span class=\"lineno\">  501</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00502\" name=\"l00502\"></a><span class=\"lineno\">  502</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00503\" name=\"l00503\"></a><span class=\"lineno\">  503</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n-<div class=\"line\"><a id=\"l00504\" name=\"l00504\"></a><span class=\"lineno\">  504</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents=0,</div>\n-<div class=\"line\"><a id=\"l00505\" name=\"l00505\"></a><span class=\"lineno\">  505</span>        <span class=\"keyword\">const</span> cl_event* startEvents=NULL,</div>\n-<div class=\"line\"><a id=\"l00506\" name=\"l00506\"></a><span class=\"lineno\">  506</span>        cl_event* endEvent=NULL)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00507\" name=\"l00507\"></a><span class=\"lineno\">  507</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01149.html#a0f2d760bbb9a4ea58eaf6e2806d033ca\">EvalStencils</a>(srcBuffer-&gt;BindCLBuffer(_clCommandQueue), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00508\" name=\"l00508\"></a><span class=\"lineno\">  508</span>                            dstBuffer-&gt;BindCLBuffer(_clCommandQueue), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00509\" name=\"l00509\"></a><span class=\"lineno\">  509</span>                            stencilTable-&gt;GetSizesBuffer(),</div>\n-<div class=\"line\"><a id=\"l00510\" name=\"l00510\"></a><span class=\"lineno\">  510</span>                            stencilTable-&gt;GetOffsetsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00511\" name=\"l00511\"></a><span class=\"lineno\">  511</span>                            stencilTable-&gt;GetIndicesBuffer(),</div>\n-<div class=\"line\"><a id=\"l00512\" name=\"l00512\"></a><span class=\"lineno\">  512</span>                            stencilTable-&gt;GetWeightsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00513\" name=\"l00513\"></a><span class=\"lineno\">  513</span>                            0,</div>\n-<div class=\"line\"><a id=\"l00514\" name=\"l00514\"></a><span class=\"lineno\">  514</span>                            stencilTable-&gt;GetNumStencils(),</div>\n-<div class=\"line\"><a id=\"l00515\" name=\"l00515\"></a><span class=\"lineno\">  515</span>                            numStartEvents, startEvents, endEvent);</div>\n-<div class=\"line\"><a id=\"l00516\" name=\"l00516\"></a><span class=\"lineno\">  516</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00517\" name=\"l00517\"></a><span class=\"lineno\">  517</span> </div>\n-<div class=\"line\"><a id=\"l00560\" name=\"l00560\"></a><span class=\"lineno\">  560</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00561\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00561\" name=\"l00561\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#a26fd58275b838dbf0da96410269a41ef\">  561</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#a26fd58275b838dbf0da96410269a41ef\">EvalStencils</a>(</div>\n-<div class=\"line\"><a id=\"l00562\" name=\"l00562\"></a><span class=\"lineno\">  562</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00563\" name=\"l00563\"></a><span class=\"lineno\">  563</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00564\" name=\"l00564\"></a><span class=\"lineno\">  564</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00565\" name=\"l00565\"></a><span class=\"lineno\">  565</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00566\" name=\"l00566\"></a><span class=\"lineno\">  566</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n-<div class=\"line\"><a id=\"l00567\" name=\"l00567\"></a><span class=\"lineno\">  567</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents=0,</div>\n-<div class=\"line\"><a id=\"l00568\" name=\"l00568\"></a><span class=\"lineno\">  568</span>        <span class=\"keyword\">const</span> cl_event* startEvents=NULL,</div>\n-<div class=\"line\"><a id=\"l00569\" name=\"l00569\"></a><span class=\"lineno\">  569</span>        cl_event* endEvent=NULL)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00570\" name=\"l00570\"></a><span class=\"lineno\">  570</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01149.html#a0f2d760bbb9a4ea58eaf6e2806d033ca\">EvalStencils</a>(srcBuffer-&gt;BindCLBuffer(_clCommandQueue), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00571\" name=\"l00571\"></a><span class=\"lineno\">  571</span>                            dstBuffer-&gt;BindCLBuffer(_clCommandQueue), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00572\" name=\"l00572\"></a><span class=\"lineno\">  572</span>                            duBuffer-&gt;BindCLBuffer(_clCommandQueue), duDesc,</div>\n-<div class=\"line\"><a id=\"l00573\" name=\"l00573\"></a><span class=\"lineno\">  573</span>                            dvBuffer-&gt;BindCLBuffer(_clCommandQueue), dvDesc,</div>\n-<div class=\"line\"><a id=\"l00574\" name=\"l00574\"></a><span class=\"lineno\">  574</span>                            stencilTable-&gt;GetSizesBuffer(),</div>\n-<div class=\"line\"><a id=\"l00575\" name=\"l00575\"></a><span class=\"lineno\">  575</span>                            stencilTable-&gt;GetOffsetsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00576\" name=\"l00576\"></a><span class=\"lineno\">  576</span>                            stencilTable-&gt;GetIndicesBuffer(),</div>\n-<div class=\"line\"><a id=\"l00577\" name=\"l00577\"></a><span class=\"lineno\">  577</span>                            stencilTable-&gt;GetWeightsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00578\" name=\"l00578\"></a><span class=\"lineno\">  578</span>                            stencilTable-&gt;GetDuWeightsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00579\" name=\"l00579\"></a><span class=\"lineno\">  579</span>                            stencilTable-&gt;GetDvWeightsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00580\" name=\"l00580\"></a><span class=\"lineno\">  580</span>                            0,</div>\n-<div class=\"line\"><a id=\"l00581\" name=\"l00581\"></a><span class=\"lineno\">  581</span>                            stencilTable-&gt;GetNumStencils(),</div>\n-<div class=\"line\"><a id=\"l00582\" name=\"l00582\"></a><span class=\"lineno\">  582</span>                            numStartEvents, startEvents, endEvent);</div>\n-<div class=\"line\"><a id=\"l00583\" name=\"l00583\"></a><span class=\"lineno\">  583</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00584\" name=\"l00584\"></a><span class=\"lineno\">  584</span> </div>\n-<div class=\"line\"><a id=\"l00645\" name=\"l00645\"></a><span class=\"lineno\">  645</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00646\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00646\" name=\"l00646\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#a74b2f41060f4bc17f3522444d30126b6\">  646</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#a74b2f41060f4bc17f3522444d30126b6\">EvalStencils</a>(</div>\n-<div class=\"line\"><a id=\"l00647\" name=\"l00647\"></a><span class=\"lineno\">  647</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00648\" name=\"l00648\"></a><span class=\"lineno\">  648</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00649\" name=\"l00649\"></a><span class=\"lineno\">  649</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00650\" name=\"l00650\"></a><span class=\"lineno\">  650</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00651\" name=\"l00651\"></a><span class=\"lineno\">  651</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l00652\" name=\"l00652\"></a><span class=\"lineno\">  652</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l00653\" name=\"l00653\"></a><span class=\"lineno\">  653</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00654\" name=\"l00654\"></a><span class=\"lineno\">  654</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n-<div class=\"line\"><a id=\"l00655\" name=\"l00655\"></a><span class=\"lineno\">  655</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents=0,</div>\n-<div class=\"line\"><a id=\"l00656\" name=\"l00656\"></a><span class=\"lineno\">  656</span>        <span class=\"keyword\">const</span> cl_event* startEvents=NULL,</div>\n-<div class=\"line\"><a id=\"l00657\" name=\"l00657\"></a><span class=\"lineno\">  657</span>        cl_event* endEvent=NULL)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00658\" name=\"l00658\"></a><span class=\"lineno\">  658</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01149.html#a0f2d760bbb9a4ea58eaf6e2806d033ca\">EvalStencils</a>(srcBuffer-&gt;BindCLBuffer(_clCommandQueue), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00659\" name=\"l00659\"></a><span class=\"lineno\">  659</span>                            dstBuffer-&gt;BindCLBuffer(_clCommandQueue), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00660\" name=\"l00660\"></a><span class=\"lineno\">  660</span>                            duBuffer-&gt;BindCLBuffer(_clCommandQueue), duDesc,</div>\n-<div class=\"line\"><a id=\"l00661\" name=\"l00661\"></a><span class=\"lineno\">  661</span>                            dvBuffer-&gt;BindCLBuffer(_clCommandQueue), dvDesc,</div>\n-<div class=\"line\"><a id=\"l00662\" name=\"l00662\"></a><span class=\"lineno\">  662</span>                            duuBuffer-&gt;BindCLBuffer(_clCommandQueue), duuDesc,</div>\n-<div class=\"line\"><a id=\"l00663\" name=\"l00663\"></a><span class=\"lineno\">  663</span>                            duvBuffer-&gt;BindCLBuffer(_clCommandQueue), duvDesc,</div>\n-<div class=\"line\"><a id=\"l00664\" name=\"l00664\"></a><span class=\"lineno\">  664</span>                            dvvBuffer-&gt;BindCLBuffer(_clCommandQueue), dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00665\" name=\"l00665\"></a><span class=\"lineno\">  665</span>                            stencilTable-&gt;GetSizesBuffer(),</div>\n-<div class=\"line\"><a id=\"l00666\" name=\"l00666\"></a><span class=\"lineno\">  666</span>                            stencilTable-&gt;GetOffsetsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00667\" name=\"l00667\"></a><span class=\"lineno\">  667</span>                            stencilTable-&gt;GetIndicesBuffer(),</div>\n-<div class=\"line\"><a id=\"l00668\" name=\"l00668\"></a><span class=\"lineno\">  668</span>                            stencilTable-&gt;GetWeightsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00669\" name=\"l00669\"></a><span class=\"lineno\">  669</span>                            stencilTable-&gt;GetDuWeightsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00670\" name=\"l00670\"></a><span class=\"lineno\">  670</span>                            stencilTable-&gt;GetDvWeightsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00671\" name=\"l00671\"></a><span class=\"lineno\">  671</span>                            stencilTable-&gt;GetDuuWeightsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00672\" name=\"l00672\"></a><span class=\"lineno\">  672</span>                            stencilTable-&gt;GetDuvWeightsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00673\" name=\"l00673\"></a><span class=\"lineno\">  673</span>                            stencilTable-&gt;GetDvvWeightsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00674\" name=\"l00674\"></a><span class=\"lineno\">  674</span>                            0,</div>\n-<div class=\"line\"><a id=\"l00675\" name=\"l00675\"></a><span class=\"lineno\">  675</span>                            stencilTable-&gt;GetNumStencils(),</div>\n-<div class=\"line\"><a id=\"l00676\" name=\"l00676\"></a><span class=\"lineno\">  676</span>                            numStartEvents, startEvents, endEvent);</div>\n-<div class=\"line\"><a id=\"l00677\" name=\"l00677\"></a><span class=\"lineno\">  677</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00678\" name=\"l00678\"></a><span class=\"lineno\">  678</span> </div>\n-<div class=\"line\"><a id=\"l00681\" name=\"l00681\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#a81c2668b311eec00fd35e1451e7132b7\">  681</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#a81c2668b311eec00fd35e1451e7132b7\">EvalStencils</a>(cl_mem src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00682\" name=\"l00682\"></a><span class=\"lineno\">  682</span>                      cl_mem dst, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00683\" name=\"l00683\"></a><span class=\"lineno\">  683</span>                      cl_mem sizes,</div>\n-<div class=\"line\"><a id=\"l00684\" name=\"l00684\"></a><span class=\"lineno\">  684</span>                      cl_mem offsets,</div>\n-<div class=\"line\"><a id=\"l00685\" name=\"l00685\"></a><span class=\"lineno\">  685</span>                      cl_mem indices,</div>\n-<div class=\"line\"><a id=\"l00686\" name=\"l00686\"></a><span class=\"lineno\">  686</span>                      cl_mem weights,</div>\n-<div class=\"line\"><a id=\"l00687\" name=\"l00687\"></a><span class=\"lineno\">  687</span>                      <span class=\"keywordtype\">int</span> start,</div>\n-<div class=\"line\"><a id=\"l00688\" name=\"l00688\"></a><span class=\"lineno\">  688</span>                      <span class=\"keywordtype\">int</span> end,</div>\n-<div class=\"line\"><a id=\"l00689\" name=\"l00689\"></a><span class=\"lineno\">  689</span>                      <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents=0,</div>\n-<div class=\"line\"><a id=\"l00690\" name=\"l00690\"></a><span class=\"lineno\">  690</span>                      <span class=\"keyword\">const</span> cl_event* startEvents=NULL,</div>\n-<div class=\"line\"><a id=\"l00691\" name=\"l00691\"></a><span class=\"lineno\">  691</span>                      cl_event* endEvent=NULL) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00692\" name=\"l00692\"></a><span class=\"lineno\">  692</span> </div>\n-<div class=\"line\"><a id=\"l00741\" name=\"l00741\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#a09c5fcdc9e1230c625d3205008d41c08\">  741</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#a09c5fcdc9e1230c625d3205008d41c08\">EvalStencils</a>(cl_mem src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00742\" name=\"l00742\"></a><span class=\"lineno\">  742</span>                      cl_mem dst, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00743\" name=\"l00743\"></a><span class=\"lineno\">  743</span>                      cl_mem du,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00744\" name=\"l00744\"></a><span class=\"lineno\">  744</span>                      cl_mem dv,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00745\" name=\"l00745\"></a><span class=\"lineno\">  745</span>                      cl_mem sizes,</div>\n-<div class=\"line\"><a id=\"l00746\" name=\"l00746\"></a><span class=\"lineno\">  746</span>                      cl_mem offsets,</div>\n-<div class=\"line\"><a id=\"l00747\" name=\"l00747\"></a><span class=\"lineno\">  747</span>                      cl_mem indices,</div>\n-<div class=\"line\"><a id=\"l00748\" name=\"l00748\"></a><span class=\"lineno\">  748</span>                      cl_mem weights,</div>\n-<div class=\"line\"><a id=\"l00749\" name=\"l00749\"></a><span class=\"lineno\">  749</span>                      cl_mem duWeights,</div>\n-<div class=\"line\"><a id=\"l00750\" name=\"l00750\"></a><span class=\"lineno\">  750</span>                      cl_mem dvWeights,</div>\n-<div class=\"line\"><a id=\"l00751\" name=\"l00751\"></a><span class=\"lineno\">  751</span>                      <span class=\"keywordtype\">int</span> start,</div>\n-<div class=\"line\"><a id=\"l00752\" name=\"l00752\"></a><span class=\"lineno\">  752</span>                      <span class=\"keywordtype\">int</span> end,</div>\n-<div class=\"line\"><a id=\"l00753\" name=\"l00753\"></a><span class=\"lineno\">  753</span>                      <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents=0,</div>\n-<div class=\"line\"><a id=\"l00754\" name=\"l00754\"></a><span class=\"lineno\">  754</span>                      <span class=\"keyword\">const</span> cl_event* startEvents=NULL,</div>\n-<div class=\"line\"><a id=\"l00755\" name=\"l00755\"></a><span class=\"lineno\">  755</span>                      cl_event* endEvent=NULL) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00756\" name=\"l00756\"></a><span class=\"lineno\">  756</span> </div>\n-<div class=\"line\"><a id=\"l00823\" name=\"l00823\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#a5d554da3e958f90c0c39296029b69c4e\">  823</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#a5d554da3e958f90c0c39296029b69c4e\">EvalStencils</a>(cl_mem src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00824\" name=\"l00824\"></a><span class=\"lineno\">  824</span>                      cl_mem dst, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00825\" name=\"l00825\"></a><span class=\"lineno\">  825</span>                      cl_mem du,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00826\" name=\"l00826\"></a><span class=\"lineno\">  826</span>                      cl_mem dv,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00827\" name=\"l00827\"></a><span class=\"lineno\">  827</span>                      cl_mem duu, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l00828\" name=\"l00828\"></a><span class=\"lineno\">  828</span>                      cl_mem duv, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l00829\" name=\"l00829\"></a><span class=\"lineno\">  829</span>                      cl_mem dvv, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00830\" name=\"l00830\"></a><span class=\"lineno\">  830</span>                      cl_mem sizes,</div>\n-<div class=\"line\"><a id=\"l00831\" name=\"l00831\"></a><span class=\"lineno\">  831</span>                      cl_mem offsets,</div>\n-<div class=\"line\"><a id=\"l00832\" name=\"l00832\"></a><span class=\"lineno\">  832</span>                      cl_mem indices,</div>\n-<div class=\"line\"><a id=\"l00833\" name=\"l00833\"></a><span class=\"lineno\">  833</span>                      cl_mem weights,</div>\n-<div class=\"line\"><a id=\"l00834\" name=\"l00834\"></a><span class=\"lineno\">  834</span>                      cl_mem duWeights,</div>\n-<div class=\"line\"><a id=\"l00835\" name=\"l00835\"></a><span class=\"lineno\">  835</span>                      cl_mem dvWeights,</div>\n-<div class=\"line\"><a id=\"l00836\" name=\"l00836\"></a><span class=\"lineno\">  836</span>                      cl_mem duuWeights,</div>\n-<div class=\"line\"><a id=\"l00837\" name=\"l00837\"></a><span class=\"lineno\">  837</span>                      cl_mem duvWeights,</div>\n-<div class=\"line\"><a id=\"l00838\" name=\"l00838\"></a><span class=\"lineno\">  838</span>                      cl_mem dvvWeights,</div>\n-<div class=\"line\"><a id=\"l00839\" name=\"l00839\"></a><span class=\"lineno\">  839</span>                      <span class=\"keywordtype\">int</span> start,</div>\n-<div class=\"line\"><a id=\"l00840\" name=\"l00840\"></a><span class=\"lineno\">  840</span>                      <span class=\"keywordtype\">int</span> end,</div>\n-<div class=\"line\"><a id=\"l00841\" name=\"l00841\"></a><span class=\"lineno\">  841</span>                      <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents=0,</div>\n-<div class=\"line\"><a id=\"l00842\" name=\"l00842\"></a><span class=\"lineno\">  842</span>                      <span class=\"keyword\">const</span> cl_event* startEvents=NULL,</div>\n-<div class=\"line\"><a id=\"l00843\" name=\"l00843\"></a><span class=\"lineno\">  843</span>                      cl_event* endEvent=NULL) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00844\" name=\"l00844\"></a><span class=\"lineno\">  844</span> </div>\n-<div class=\"line\"><a id=\"l00850\" name=\"l00850\"></a><span class=\"lineno\">  850</span> </div>\n-<div class=\"line\"><a id=\"l00899\" name=\"l00899\"></a><span class=\"lineno\">  899</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l00900\" name=\"l00900\"></a><span class=\"lineno\">  900</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE,</div>\n-<div class=\"line\"><a id=\"l00901\" name=\"l00901\"></a><span class=\"lineno\">  901</span>              <span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00902\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00902\" name=\"l00902\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#ab5cae7e895f2efe955b27ae3dafccfd2\">  902</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#ab5cae7e895f2efe955b27ae3dafccfd2\">EvalPatches</a>(</div>\n-<div class=\"line\"><a id=\"l00903\" name=\"l00903\"></a><span class=\"lineno\">  903</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00904\" name=\"l00904\"></a><span class=\"lineno\">  904</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00905\" name=\"l00905\"></a><span class=\"lineno\">  905</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00906\" name=\"l00906\"></a><span class=\"lineno\">  906</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l00907\" name=\"l00907\"></a><span class=\"lineno\">  907</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l00908\" name=\"l00908\"></a><span class=\"lineno\">  908</span>        <a class=\"code hl_class\" href=\"a01149.html\">CLEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n-<div class=\"line\"><a id=\"l00909\" name=\"l00909\"></a><span class=\"lineno\">  909</span>        DEVICE_CONTEXT deviceContext,</div>\n-<div class=\"line\"><a id=\"l00910\" name=\"l00910\"></a><span class=\"lineno\">  910</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents=0,</div>\n-<div class=\"line\"><a id=\"l00911\" name=\"l00911\"></a><span class=\"lineno\">  911</span>        <span class=\"keyword\">const</span> cl_event* startEvents=NULL,</div>\n-<div class=\"line\"><a id=\"l00912\" name=\"l00912\"></a><span class=\"lineno\">  912</span>        cl_event* endEvent=NULL) {</div>\n-<div class=\"line\"><a id=\"l00913\" name=\"l00913\"></a><span class=\"lineno\">  913</span> </div>\n-<div class=\"line\"><a id=\"l00914\" name=\"l00914\"></a><span class=\"lineno\">  914</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l00915\" name=\"l00915\"></a><span class=\"lineno\">  915</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01149.html#ab5cae7e895f2efe955b27ae3dafccfd2\">EvalPatches</a>(srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l00916\" name=\"l00916\"></a><span class=\"lineno\">  916</span>                                         dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00917\" name=\"l00917\"></a><span class=\"lineno\">  917</span>                                         numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l00918\" name=\"l00918\"></a><span class=\"lineno\">  918</span>                                         patchTable,</div>\n-<div class=\"line\"><a id=\"l00919\" name=\"l00919\"></a><span class=\"lineno\">  919</span>                                         numStartEvents, startEvents, endEvent);</div>\n-<div class=\"line\"><a id=\"l00920\" name=\"l00920\"></a><span class=\"lineno\">  920</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00921\" name=\"l00921\"></a><span class=\"lineno\">  921</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n-<div class=\"line\"><a id=\"l00922\" name=\"l00922\"></a><span class=\"lineno\">  922</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00923\" name=\"l00923\"></a><span class=\"lineno\">  923</span>            instance = <a class=\"code hl_function\" href=\"a01149.html#a3a2faa1170cedd851fea7266e0ff7eda\">Create</a>(srcDesc, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00924\" name=\"l00924\"></a><span class=\"lineno\">  924</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l00925\" name=\"l00925\"></a><span class=\"lineno\">  925</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l00926\" name=\"l00926\"></a><span class=\"lineno\">  926</span>                              deviceContext);</div>\n-<div class=\"line\"><a id=\"l00927\" name=\"l00927\"></a><span class=\"lineno\">  927</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l00928\" name=\"l00928\"></a><span class=\"lineno\">  928</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01149.html#ab5cae7e895f2efe955b27ae3dafccfd2\">EvalPatches</a>(srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l00929\" name=\"l00929\"></a><span class=\"lineno\">  929</span>                                               dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00930\" name=\"l00930\"></a><span class=\"lineno\">  930</span>                                               numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l00931\" name=\"l00931\"></a><span class=\"lineno\">  931</span>                                               patchTable,</div>\n-<div class=\"line\"><a id=\"l00932\" name=\"l00932\"></a><span class=\"lineno\">  932</span>                                               numStartEvents, startEvents, endEvent);</div>\n-<div class=\"line\"><a id=\"l00933\" name=\"l00933\"></a><span class=\"lineno\">  933</span>                <span class=\"keyword\">delete</span> instance;</div>\n-<div class=\"line\"><a id=\"l00934\" name=\"l00934\"></a><span class=\"lineno\">  934</span>                <span class=\"keywordflow\">return</span> r;</div>\n-<div class=\"line\"><a id=\"l00935\" name=\"l00935\"></a><span class=\"lineno\">  935</span>            }</div>\n-<div class=\"line\"><a id=\"l00936\" name=\"l00936\"></a><span class=\"lineno\">  936</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00937\" name=\"l00937\"></a><span class=\"lineno\">  937</span>        }</div>\n-<div class=\"line\"><a id=\"l00938\" name=\"l00938\"></a><span class=\"lineno\">  938</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00939\" name=\"l00939\"></a><span class=\"lineno\">  939</span> </div>\n-<div class=\"line\"><a id=\"l01000\" name=\"l01000\"></a><span class=\"lineno\"> 1000</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01001\" name=\"l01001\"></a><span class=\"lineno\"> 1001</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE,</div>\n-<div class=\"line\"><a id=\"l01002\" name=\"l01002\"></a><span class=\"lineno\"> 1002</span>              <span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01003\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01003\" name=\"l01003\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#ab011f671d8598811f0ed39a28616f908\"> 1003</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#ab011f671d8598811f0ed39a28616f908\">EvalPatches</a>(</div>\n-<div class=\"line\"><a id=\"l01004\" name=\"l01004\"></a><span class=\"lineno\"> 1004</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01005\" name=\"l01005\"></a><span class=\"lineno\"> 1005</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01006\" name=\"l01006\"></a><span class=\"lineno\"> 1006</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l01007\" name=\"l01007\"></a><span class=\"lineno\"> 1007</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l01008\" name=\"l01008\"></a><span class=\"lineno\"> 1008</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01009\" name=\"l01009\"></a><span class=\"lineno\"> 1009</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01010\" name=\"l01010\"></a><span class=\"lineno\"> 1010</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l01011\" name=\"l01011\"></a><span class=\"lineno\"> 1011</span>        <a class=\"code hl_class\" href=\"a01149.html\">CLEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n-<div class=\"line\"><a id=\"l01012\" name=\"l01012\"></a><span class=\"lineno\"> 1012</span>        DEVICE_CONTEXT deviceContext,</div>\n-<div class=\"line\"><a id=\"l01013\" name=\"l01013\"></a><span class=\"lineno\"> 1013</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents=0,</div>\n-<div class=\"line\"><a id=\"l01014\" name=\"l01014\"></a><span class=\"lineno\"> 1014</span>        <span class=\"keyword\">const</span> cl_event* startEvents=NULL,</div>\n-<div class=\"line\"><a id=\"l01015\" name=\"l01015\"></a><span class=\"lineno\"> 1015</span>        cl_event* endEvent=NULL) {</div>\n-<div class=\"line\"><a id=\"l01016\" name=\"l01016\"></a><span class=\"lineno\"> 1016</span> </div>\n-<div class=\"line\"><a id=\"l01017\" name=\"l01017\"></a><span class=\"lineno\"> 1017</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l01018\" name=\"l01018\"></a><span class=\"lineno\"> 1018</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01149.html#ab5cae7e895f2efe955b27ae3dafccfd2\">EvalPatches</a>(srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l01019\" name=\"l01019\"></a><span class=\"lineno\"> 1019</span>                                         dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01020\" name=\"l01020\"></a><span class=\"lineno\"> 1020</span>                                         duBuffer, duDesc,</div>\n-<div class=\"line\"><a id=\"l01021\" name=\"l01021\"></a><span class=\"lineno\"> 1021</span>                                         dvBuffer, dvDesc,</div>\n-<div class=\"line\"><a id=\"l01022\" name=\"l01022\"></a><span class=\"lineno\"> 1022</span>                                         numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l01023\" name=\"l01023\"></a><span class=\"lineno\"> 1023</span>                                         patchTable,</div>\n-<div class=\"line\"><a id=\"l01024\" name=\"l01024\"></a><span class=\"lineno\"> 1024</span>                                         numStartEvents, startEvents, endEvent);</div>\n-<div class=\"line\"><a id=\"l01025\" name=\"l01025\"></a><span class=\"lineno\"> 1025</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l01026\" name=\"l01026\"></a><span class=\"lineno\"> 1026</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n-<div class=\"line\"><a id=\"l01027\" name=\"l01027\"></a><span class=\"lineno\"> 1027</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l01028\" name=\"l01028\"></a><span class=\"lineno\"> 1028</span>            instance = <a class=\"code hl_function\" href=\"a01149.html#a3a2faa1170cedd851fea7266e0ff7eda\">Create</a>(srcDesc, dstDesc, duDesc, dvDesc, deviceContext);</div>\n-<div class=\"line\"><a id=\"l01029\" name=\"l01029\"></a><span class=\"lineno\"> 1029</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l01030\" name=\"l01030\"></a><span class=\"lineno\"> 1030</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01149.html#ab5cae7e895f2efe955b27ae3dafccfd2\">EvalPatches</a>(srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l01031\" name=\"l01031\"></a><span class=\"lineno\"> 1031</span>                                               dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01032\" name=\"l01032\"></a><span class=\"lineno\"> 1032</span>                                               duBuffer, duDesc,</div>\n-<div class=\"line\"><a id=\"l01033\" name=\"l01033\"></a><span class=\"lineno\"> 1033</span>                                               dvBuffer, dvDesc,</div>\n-<div class=\"line\"><a id=\"l01034\" name=\"l01034\"></a><span class=\"lineno\"> 1034</span>                                               numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l01035\" name=\"l01035\"></a><span class=\"lineno\"> 1035</span>                                               patchTable,</div>\n-<div class=\"line\"><a id=\"l01036\" name=\"l01036\"></a><span class=\"lineno\"> 1036</span>                                               numStartEvents, startEvents, endEvent);</div>\n-<div class=\"line\"><a id=\"l01037\" name=\"l01037\"></a><span class=\"lineno\"> 1037</span>                <span class=\"keyword\">delete</span> instance;</div>\n-<div class=\"line\"><a id=\"l01038\" name=\"l01038\"></a><span class=\"lineno\"> 1038</span>                <span class=\"keywordflow\">return</span> r;</div>\n-<div class=\"line\"><a id=\"l01039\" name=\"l01039\"></a><span class=\"lineno\"> 1039</span>            }</div>\n-<div class=\"line\"><a id=\"l01040\" name=\"l01040\"></a><span class=\"lineno\"> 1040</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l01041\" name=\"l01041\"></a><span class=\"lineno\"> 1041</span>        }</div>\n-<div class=\"line\"><a id=\"l01042\" name=\"l01042\"></a><span class=\"lineno\"> 1042</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01043\" name=\"l01043\"></a><span class=\"lineno\"> 1043</span> </div>\n-<div class=\"line\"><a id=\"l01122\" name=\"l01122\"></a><span class=\"lineno\"> 1122</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01123\" name=\"l01123\"></a><span class=\"lineno\"> 1123</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE,</div>\n-<div class=\"line\"><a id=\"l01124\" name=\"l01124\"></a><span class=\"lineno\"> 1124</span>              <span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01125\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01125\" name=\"l01125\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#a7fc185c4d801f80736021470b10e0ebd\"> 1125</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#a7fc185c4d801f80736021470b10e0ebd\">EvalPatches</a>(</div>\n-<div class=\"line\"><a id=\"l01126\" name=\"l01126\"></a><span class=\"lineno\"> 1126</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01127\" name=\"l01127\"></a><span class=\"lineno\"> 1127</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01128\" name=\"l01128\"></a><span class=\"lineno\"> 1128</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l01129\" name=\"l01129\"></a><span class=\"lineno\"> 1129</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l01130\" name=\"l01130\"></a><span class=\"lineno\"> 1130</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l01131\" name=\"l01131\"></a><span class=\"lineno\"> 1131</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l01132\" name=\"l01132\"></a><span class=\"lineno\"> 1132</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l01133\" name=\"l01133\"></a><span class=\"lineno\"> 1133</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01134\" name=\"l01134\"></a><span class=\"lineno\"> 1134</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01135\" name=\"l01135\"></a><span class=\"lineno\"> 1135</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l01136\" name=\"l01136\"></a><span class=\"lineno\"> 1136</span>        <a class=\"code hl_class\" href=\"a01149.html\">CLEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n-<div class=\"line\"><a id=\"l01137\" name=\"l01137\"></a><span class=\"lineno\"> 1137</span>        DEVICE_CONTEXT deviceContext,</div>\n-<div class=\"line\"><a id=\"l01138\" name=\"l01138\"></a><span class=\"lineno\"> 1138</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents=0,</div>\n-<div class=\"line\"><a id=\"l01139\" name=\"l01139\"></a><span class=\"lineno\"> 1139</span>        <span class=\"keyword\">const</span> cl_event* startEvents=NULL,</div>\n-<div class=\"line\"><a id=\"l01140\" name=\"l01140\"></a><span class=\"lineno\"> 1140</span>        cl_event* endEvent=NULL) {</div>\n-<div class=\"line\"><a id=\"l01141\" name=\"l01141\"></a><span class=\"lineno\"> 1141</span> </div>\n-<div class=\"line\"><a id=\"l01142\" name=\"l01142\"></a><span class=\"lineno\"> 1142</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l01143\" name=\"l01143\"></a><span class=\"lineno\"> 1143</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01149.html#ab5cae7e895f2efe955b27ae3dafccfd2\">EvalPatches</a>(srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l01144\" name=\"l01144\"></a><span class=\"lineno\"> 1144</span>                                         dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01145\" name=\"l01145\"></a><span class=\"lineno\"> 1145</span>                                         duBuffer, duDesc,</div>\n-<div class=\"line\"><a id=\"l01146\" name=\"l01146\"></a><span class=\"lineno\"> 1146</span>                                         dvBuffer, dvDesc,</div>\n-<div class=\"line\"><a id=\"l01147\" name=\"l01147\"></a><span class=\"lineno\"> 1147</span>                                         duuBuffer, duuDesc,</div>\n-<div class=\"line\"><a id=\"l01148\" name=\"l01148\"></a><span class=\"lineno\"> 1148</span>                                         duvBuffer, duvDesc,</div>\n-<div class=\"line\"><a id=\"l01149\" name=\"l01149\"></a><span class=\"lineno\"> 1149</span>                                         dvvBuffer, dvvDesc,</div>\n-<div class=\"line\"><a id=\"l01150\" name=\"l01150\"></a><span class=\"lineno\"> 1150</span>                                         numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l01151\" name=\"l01151\"></a><span class=\"lineno\"> 1151</span>                                         patchTable,</div>\n-<div class=\"line\"><a id=\"l01152\" name=\"l01152\"></a><span class=\"lineno\"> 1152</span>                                         numStartEvents, startEvents, endEvent);</div>\n-<div class=\"line\"><a id=\"l01153\" name=\"l01153\"></a><span class=\"lineno\"> 1153</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l01154\" name=\"l01154\"></a><span class=\"lineno\"> 1154</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n-<div class=\"line\"><a id=\"l01155\" name=\"l01155\"></a><span class=\"lineno\"> 1155</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l01156\" name=\"l01156\"></a><span class=\"lineno\"> 1156</span>            instance = <a class=\"code hl_function\" href=\"a01149.html#a3a2faa1170cedd851fea7266e0ff7eda\">Create</a>(srcDesc, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01157\" name=\"l01157\"></a><span class=\"lineno\"> 1157</span>                              duDesc, dvDesc,</div>\n-<div class=\"line\"><a id=\"l01158\" name=\"l01158\"></a><span class=\"lineno\"> 1158</span>                              duuDesc, duvDesc, dvvDesc,</div>\n-<div class=\"line\"><a id=\"l01159\" name=\"l01159\"></a><span class=\"lineno\"> 1159</span>                              deviceContext);</div>\n-<div class=\"line\"><a id=\"l01160\" name=\"l01160\"></a><span class=\"lineno\"> 1160</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l01161\" name=\"l01161\"></a><span class=\"lineno\"> 1161</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01149.html#ab5cae7e895f2efe955b27ae3dafccfd2\">EvalPatches</a>(srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l01162\" name=\"l01162\"></a><span class=\"lineno\"> 1162</span>                                               dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01163\" name=\"l01163\"></a><span class=\"lineno\"> 1163</span>                                               duBuffer, duDesc,</div>\n-<div class=\"line\"><a id=\"l01164\" name=\"l01164\"></a><span class=\"lineno\"> 1164</span>                                               dvBuffer, dvDesc,</div>\n-<div class=\"line\"><a id=\"l01165\" name=\"l01165\"></a><span class=\"lineno\"> 1165</span>                                               duuBuffer, duuDesc,</div>\n-<div class=\"line\"><a id=\"l01166\" name=\"l01166\"></a><span class=\"lineno\"> 1166</span>                                               duvBuffer, duvDesc,</div>\n-<div class=\"line\"><a id=\"l01167\" name=\"l01167\"></a><span class=\"lineno\"> 1167</span>                                               dvvBuffer, dvvDesc,</div>\n-<div class=\"line\"><a id=\"l01168\" name=\"l01168\"></a><span class=\"lineno\"> 1168</span>                                               numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l01169\" name=\"l01169\"></a><span class=\"lineno\"> 1169</span>                                               patchTable,</div>\n-<div class=\"line\"><a id=\"l01170\" name=\"l01170\"></a><span class=\"lineno\"> 1170</span>                                               numStartEvents, startEvents, endEvent);</div>\n-<div class=\"line\"><a id=\"l01171\" name=\"l01171\"></a><span class=\"lineno\"> 1171</span>                <span class=\"keyword\">delete</span> instance;</div>\n-<div class=\"line\"><a id=\"l01172\" name=\"l01172\"></a><span class=\"lineno\"> 1172</span>                <span class=\"keywordflow\">return</span> r;</div>\n-<div class=\"line\"><a id=\"l01173\" name=\"l01173\"></a><span class=\"lineno\"> 1173</span>            }</div>\n-<div class=\"line\"><a id=\"l01174\" name=\"l01174\"></a><span class=\"lineno\"> 1174</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l01175\" name=\"l01175\"></a><span class=\"lineno\"> 1175</span>        }</div>\n-<div class=\"line\"><a id=\"l01176\" name=\"l01176\"></a><span class=\"lineno\"> 1176</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01177\" name=\"l01177\"></a><span class=\"lineno\"> 1177</span> </div>\n-<div class=\"line\"><a id=\"l01215\" name=\"l01215\"></a><span class=\"lineno\"> 1215</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01216\" name=\"l01216\"></a><span class=\"lineno\"> 1216</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01217\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01217\" name=\"l01217\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#a7053fc9101b3f27878eb21c1d96a6421\"> 1217</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#a7053fc9101b3f27878eb21c1d96a6421\">EvalPatches</a>(</div>\n-<div class=\"line\"><a id=\"l01218\" name=\"l01218\"></a><span class=\"lineno\"> 1218</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01219\" name=\"l01219\"></a><span class=\"lineno\"> 1219</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01220\" name=\"l01220\"></a><span class=\"lineno\"> 1220</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01221\" name=\"l01221\"></a><span class=\"lineno\"> 1221</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01222\" name=\"l01222\"></a><span class=\"lineno\"> 1222</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l01223\" name=\"l01223\"></a><span class=\"lineno\"> 1223</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents=0,</div>\n-<div class=\"line\"><a id=\"l01224\" name=\"l01224\"></a><span class=\"lineno\"> 1224</span>        <span class=\"keyword\">const</span> cl_event* startEvents=NULL,</div>\n-<div class=\"line\"><a id=\"l01225\" name=\"l01225\"></a><span class=\"lineno\"> 1225</span>        cl_event* endEvent=NULL)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l01226\" name=\"l01226\"></a><span class=\"lineno\"> 1226</span> </div>\n-<div class=\"line\"><a id=\"l01227\" name=\"l01227\"></a><span class=\"lineno\"> 1227</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01149.html#ab5cae7e895f2efe955b27ae3dafccfd2\">EvalPatches</a>(srcBuffer-&gt;BindCLBuffer(_clCommandQueue), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01228\" name=\"l01228\"></a><span class=\"lineno\"> 1228</span>                           dstBuffer-&gt;BindCLBuffer(_clCommandQueue), dstDesc,</div>\n-<div class=\"line\"><a id=\"l01229\" name=\"l01229\"></a><span class=\"lineno\"> 1229</span>                           0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l01230\" name=\"l01230\"></a><span class=\"lineno\"> 1230</span>                           0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l01231\" name=\"l01231\"></a><span class=\"lineno\"> 1231</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01232\" name=\"l01232\"></a><span class=\"lineno\"> 1232</span>                           patchCoords-&gt;BindCLBuffer(_clCommandQueue),</div>\n-<div class=\"line\"><a id=\"l01233\" name=\"l01233\"></a><span class=\"lineno\"> 1233</span>                           patchTable-&gt;GetPatchArrayBuffer(),</div>\n-<div class=\"line\"><a id=\"l01234\" name=\"l01234\"></a><span class=\"lineno\"> 1234</span>                           patchTable-&gt;GetPatchIndexBuffer(),</div>\n-<div class=\"line\"><a id=\"l01235\" name=\"l01235\"></a><span class=\"lineno\"> 1235</span>                           patchTable-&gt;GetPatchParamBuffer(),</div>\n-<div class=\"line\"><a id=\"l01236\" name=\"l01236\"></a><span class=\"lineno\"> 1236</span>                           numStartEvents, startEvents, endEvent);</div>\n-<div class=\"line\"><a id=\"l01237\" name=\"l01237\"></a><span class=\"lineno\"> 1237</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01238\" name=\"l01238\"></a><span class=\"lineno\"> 1238</span> </div>\n-<div class=\"line\"><a id=\"l01286\" name=\"l01286\"></a><span class=\"lineno\"> 1286</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01287\" name=\"l01287\"></a><span class=\"lineno\"> 1287</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01288\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01288\" name=\"l01288\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#ad62bdcb72a8d878f80a6e6a53abebccd\"> 1288</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#ad62bdcb72a8d878f80a6e6a53abebccd\">EvalPatches</a>(</div>\n-<div class=\"line\"><a id=\"l01289\" name=\"l01289\"></a><span class=\"lineno\"> 1289</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01290\" name=\"l01290\"></a><span class=\"lineno\"> 1290</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01291\" name=\"l01291\"></a><span class=\"lineno\"> 1291</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l01292\" name=\"l01292\"></a><span class=\"lineno\"> 1292</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l01293\" name=\"l01293\"></a><span class=\"lineno\"> 1293</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01294\" name=\"l01294\"></a><span class=\"lineno\"> 1294</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01295\" name=\"l01295\"></a><span class=\"lineno\"> 1295</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l01296\" name=\"l01296\"></a><span class=\"lineno\"> 1296</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents=0,</div>\n-<div class=\"line\"><a id=\"l01297\" name=\"l01297\"></a><span class=\"lineno\"> 1297</span>        <span class=\"keyword\">const</span> cl_event* startEvents=NULL,</div>\n-<div class=\"line\"><a id=\"l01298\" name=\"l01298\"></a><span class=\"lineno\"> 1298</span>        cl_event* endEvent=NULL)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l01299\" name=\"l01299\"></a><span class=\"lineno\"> 1299</span> </div>\n-<div class=\"line\"><a id=\"l01300\" name=\"l01300\"></a><span class=\"lineno\"> 1300</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01149.html#ab5cae7e895f2efe955b27ae3dafccfd2\">EvalPatches</a>(srcBuffer-&gt;BindCLBuffer(_clCommandQueue), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01301\" name=\"l01301\"></a><span class=\"lineno\"> 1301</span>                           dstBuffer-&gt;BindCLBuffer(_clCommandQueue), dstDesc,</div>\n-<div class=\"line\"><a id=\"l01302\" name=\"l01302\"></a><span class=\"lineno\"> 1302</span>                           duBuffer-&gt;BindCLBuffer(_clCommandQueue),  duDesc,</div>\n-<div class=\"line\"><a id=\"l01303\" name=\"l01303\"></a><span class=\"lineno\"> 1303</span>                           dvBuffer-&gt;BindCLBuffer(_clCommandQueue),  dvDesc,</div>\n-<div class=\"line\"><a id=\"l01304\" name=\"l01304\"></a><span class=\"lineno\"> 1304</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01305\" name=\"l01305\"></a><span class=\"lineno\"> 1305</span>                           patchCoords-&gt;BindCLBuffer(_clCommandQueue),</div>\n-<div class=\"line\"><a id=\"l01306\" name=\"l01306\"></a><span class=\"lineno\"> 1306</span>                           patchTable-&gt;GetPatchArrayBuffer(),</div>\n-<div class=\"line\"><a id=\"l01307\" name=\"l01307\"></a><span class=\"lineno\"> 1307</span>                           patchTable-&gt;GetPatchIndexBuffer(),</div>\n-<div class=\"line\"><a id=\"l01308\" name=\"l01308\"></a><span class=\"lineno\"> 1308</span>                           patchTable-&gt;GetPatchParamBuffer(),</div>\n-<div class=\"line\"><a id=\"l01309\" name=\"l01309\"></a><span class=\"lineno\"> 1309</span>                           numStartEvents, startEvents, endEvent);</div>\n-<div class=\"line\"><a id=\"l01310\" name=\"l01310\"></a><span class=\"lineno\"> 1310</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01311\" name=\"l01311\"></a><span class=\"lineno\"> 1311</span> </div>\n-<div class=\"line\"><a id=\"l01377\" name=\"l01377\"></a><span class=\"lineno\"> 1377</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01378\" name=\"l01378\"></a><span class=\"lineno\"> 1378</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01379\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01379\" name=\"l01379\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#a28ceea444575e321b0e98cb33fd0ed61\"> 1379</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#a28ceea444575e321b0e98cb33fd0ed61\">EvalPatches</a>(</div>\n-<div class=\"line\"><a id=\"l01380\" name=\"l01380\"></a><span class=\"lineno\"> 1380</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01381\" name=\"l01381\"></a><span class=\"lineno\"> 1381</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01382\" name=\"l01382\"></a><span class=\"lineno\"> 1382</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l01383\" name=\"l01383\"></a><span class=\"lineno\"> 1383</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l01384\" name=\"l01384\"></a><span class=\"lineno\"> 1384</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l01385\" name=\"l01385\"></a><span class=\"lineno\"> 1385</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l01386\" name=\"l01386\"></a><span class=\"lineno\"> 1386</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l01387\" name=\"l01387\"></a><span class=\"lineno\"> 1387</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01388\" name=\"l01388\"></a><span class=\"lineno\"> 1388</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01389\" name=\"l01389\"></a><span class=\"lineno\"> 1389</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l01390\" name=\"l01390\"></a><span class=\"lineno\"> 1390</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents=0,</div>\n-<div class=\"line\"><a id=\"l01391\" name=\"l01391\"></a><span class=\"lineno\"> 1391</span>        <span class=\"keyword\">const</span> cl_event* startEvents=NULL,</div>\n-<div class=\"line\"><a id=\"l01392\" name=\"l01392\"></a><span class=\"lineno\"> 1392</span>        cl_event* endEvent=NULL)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l01393\" name=\"l01393\"></a><span class=\"lineno\"> 1393</span> </div>\n-<div class=\"line\"><a id=\"l01394\" name=\"l01394\"></a><span class=\"lineno\"> 1394</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01149.html#ab5cae7e895f2efe955b27ae3dafccfd2\">EvalPatches</a>(srcBuffer-&gt;BindCLBuffer(_clCommandQueue), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01395\" name=\"l01395\"></a><span class=\"lineno\"> 1395</span>                           dstBuffer-&gt;BindCLBuffer(_clCommandQueue), dstDesc,</div>\n-<div class=\"line\"><a id=\"l01396\" name=\"l01396\"></a><span class=\"lineno\"> 1396</span>                           duBuffer-&gt;BindCLBuffer(_clCommandQueue),  duDesc,</div>\n-<div class=\"line\"><a id=\"l01397\" name=\"l01397\"></a><span class=\"lineno\"> 1397</span>                           dvBuffer-&gt;BindCLBuffer(_clCommandQueue),  dvDesc,</div>\n-<div class=\"line\"><a id=\"l01398\" name=\"l01398\"></a><span class=\"lineno\"> 1398</span>                           duuBuffer-&gt;BindCLBuffer(_clCommandQueue), duuDesc,</div>\n-<div class=\"line\"><a id=\"l01399\" name=\"l01399\"></a><span class=\"lineno\"> 1399</span>                           duvBuffer-&gt;BindCLBuffer(_clCommandQueue), duvDesc,</div>\n-<div class=\"line\"><a id=\"l01400\" name=\"l01400\"></a><span class=\"lineno\"> 1400</span>                           dvvBuffer-&gt;BindCLBuffer(_clCommandQueue), dvvDesc,</div>\n-<div class=\"line\"><a id=\"l01401\" name=\"l01401\"></a><span class=\"lineno\"> 1401</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01402\" name=\"l01402\"></a><span class=\"lineno\"> 1402</span>                           patchCoords-&gt;BindCLBuffer(_clCommandQueue),</div>\n-<div class=\"line\"><a id=\"l01403\" name=\"l01403\"></a><span class=\"lineno\"> 1403</span>                           patchTable-&gt;GetPatchArrayBuffer(),</div>\n-<div class=\"line\"><a id=\"l01404\" name=\"l01404\"></a><span class=\"lineno\"> 1404</span>                           patchTable-&gt;GetPatchIndexBuffer(),</div>\n-<div class=\"line\"><a id=\"l01405\" name=\"l01405\"></a><span class=\"lineno\"> 1405</span>                           patchTable-&gt;GetPatchParamBuffer(),</div>\n-<div class=\"line\"><a id=\"l01406\" name=\"l01406\"></a><span class=\"lineno\"> 1406</span>                           numStartEvents, startEvents, endEvent);</div>\n-<div class=\"line\"><a id=\"l01407\" name=\"l01407\"></a><span class=\"lineno\"> 1407</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01408\" name=\"l01408\"></a><span class=\"lineno\"> 1408</span> </div>\n-<div class=\"line\"><a id=\"l01409\" name=\"l01409\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#a22187001e33f98dc3195caab9968f1f0\"> 1409</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#a22187001e33f98dc3195caab9968f1f0\">EvalPatches</a>(cl_mem src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01410\" name=\"l01410\"></a><span class=\"lineno\"> 1410</span>                     cl_mem dst, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01411\" name=\"l01411\"></a><span class=\"lineno\"> 1411</span>                     cl_mem du,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l01412\" name=\"l01412\"></a><span class=\"lineno\"> 1412</span>                     cl_mem dv,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l01413\" name=\"l01413\"></a><span class=\"lineno\"> 1413</span>                     <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01414\" name=\"l01414\"></a><span class=\"lineno\"> 1414</span>                     cl_mem patchCoordsBuffer,</div>\n-<div class=\"line\"><a id=\"l01415\" name=\"l01415\"></a><span class=\"lineno\"> 1415</span>                     cl_mem patchArrayBuffer,</div>\n-<div class=\"line\"><a id=\"l01416\" name=\"l01416\"></a><span class=\"lineno\"> 1416</span>                     cl_mem patchIndexBuffer,</div>\n-<div class=\"line\"><a id=\"l01417\" name=\"l01417\"></a><span class=\"lineno\"> 1417</span>                     cl_mem patchParamsBuffer,</div>\n-<div class=\"line\"><a id=\"l01418\" name=\"l01418\"></a><span class=\"lineno\"> 1418</span>                     <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents=0,</div>\n-<div class=\"line\"><a id=\"l01419\" name=\"l01419\"></a><span class=\"lineno\"> 1419</span>                     <span class=\"keyword\">const</span> cl_event* startEvents=NULL,</div>\n-<div class=\"line\"><a id=\"l01420\" name=\"l01420\"></a><span class=\"lineno\"> 1420</span>                     cl_event* endEvent=NULL) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l01421\" name=\"l01421\"></a><span class=\"lineno\"> 1421</span> </div>\n-<div class=\"line\"><a id=\"l01422\" name=\"l01422\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#a4d6d90d5c4b0237cbeab58062dbdf5c8\"> 1422</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#a4d6d90d5c4b0237cbeab58062dbdf5c8\">EvalPatches</a>(cl_mem src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01423\" name=\"l01423\"></a><span class=\"lineno\"> 1423</span>                     cl_mem dst, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01424\" name=\"l01424\"></a><span class=\"lineno\"> 1424</span>                     cl_mem du,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l01425\" name=\"l01425\"></a><span class=\"lineno\"> 1425</span>                     cl_mem dv,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l01426\" name=\"l01426\"></a><span class=\"lineno\"> 1426</span>                     cl_mem duu, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l01427\" name=\"l01427\"></a><span class=\"lineno\"> 1427</span>                     cl_mem duv, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l01428\" name=\"l01428\"></a><span class=\"lineno\"> 1428</span>                     cl_mem dvv, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l01429\" name=\"l01429\"></a><span class=\"lineno\"> 1429</span>                     <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01430\" name=\"l01430\"></a><span class=\"lineno\"> 1430</span>                     cl_mem patchCoordsBuffer,</div>\n-<div class=\"line\"><a id=\"l01431\" name=\"l01431\"></a><span class=\"lineno\"> 1431</span>                     cl_mem patchArrayBuffer,</div>\n-<div class=\"line\"><a id=\"l01432\" name=\"l01432\"></a><span class=\"lineno\"> 1432</span>                     cl_mem patchIndexBuffer,</div>\n-<div class=\"line\"><a id=\"l01433\" name=\"l01433\"></a><span class=\"lineno\"> 1433</span>                     cl_mem patchParamsBuffer,</div>\n-<div class=\"line\"><a id=\"l01434\" name=\"l01434\"></a><span class=\"lineno\"> 1434</span>                     <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents=0,</div>\n-<div class=\"line\"><a id=\"l01435\" name=\"l01435\"></a><span class=\"lineno\"> 1435</span>                     <span class=\"keyword\">const</span> cl_event* startEvents=NULL,</div>\n-<div class=\"line\"><a id=\"l01436\" name=\"l01436\"></a><span class=\"lineno\"> 1436</span>                     cl_event* endEvent=NULL) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l01437\" name=\"l01437\"></a><span class=\"lineno\"> 1437</span> </div>\n-<div class=\"line\"><a id=\"l01486\" name=\"l01486\"></a><span class=\"lineno\"> 1486</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01487\" name=\"l01487\"></a><span class=\"lineno\"> 1487</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE,</div>\n-<div class=\"line\"><a id=\"l01488\" name=\"l01488\"></a><span class=\"lineno\"> 1488</span>              <span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01489\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01489\" name=\"l01489\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#a927d8aae868323d5208b1e95c2591ad1\"> 1489</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#a927d8aae868323d5208b1e95c2591ad1\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01490\" name=\"l01490\"></a><span class=\"lineno\"> 1490</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01491\" name=\"l01491\"></a><span class=\"lineno\"> 1491</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01492\" name=\"l01492\"></a><span class=\"lineno\"> 1492</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01493\" name=\"l01493\"></a><span class=\"lineno\"> 1493</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01494\" name=\"l01494\"></a><span class=\"lineno\"> 1494</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l01495\" name=\"l01495\"></a><span class=\"lineno\"> 1495</span>        <a class=\"code hl_class\" href=\"a01149.html\">CLEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n-<div class=\"line\"><a id=\"l01496\" name=\"l01496\"></a><span class=\"lineno\"> 1496</span>        DEVICE_CONTEXT deviceContext,</div>\n-<div class=\"line\"><a id=\"l01497\" name=\"l01497\"></a><span class=\"lineno\"> 1497</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents=0,</div>\n-<div class=\"line\"><a id=\"l01498\" name=\"l01498\"></a><span class=\"lineno\"> 1498</span>        <span class=\"keyword\">const</span> cl_event* startEvents=NULL,</div>\n-<div class=\"line\"><a id=\"l01499\" name=\"l01499\"></a><span class=\"lineno\"> 1499</span>        cl_event* endEvent=NULL) {</div>\n-<div class=\"line\"><a id=\"l01500\" name=\"l01500\"></a><span class=\"lineno\"> 1500</span> </div>\n-<div class=\"line\"><a id=\"l01501\" name=\"l01501\"></a><span class=\"lineno\"> 1501</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l01502\" name=\"l01502\"></a><span class=\"lineno\"> 1502</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01149.html#a927d8aae868323d5208b1e95c2591ad1\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01503\" name=\"l01503\"></a><span class=\"lineno\"> 1503</span>                                         srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l01504\" name=\"l01504\"></a><span class=\"lineno\"> 1504</span>                                         dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01505\" name=\"l01505\"></a><span class=\"lineno\"> 1505</span>                                         numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l01506\" name=\"l01506\"></a><span class=\"lineno\"> 1506</span>                                         patchTable,</div>\n-<div class=\"line\"><a id=\"l01507\" name=\"l01507\"></a><span class=\"lineno\"> 1507</span>                                         numStartEvents, startEvents, endEvent);</div>\n-<div class=\"line\"><a id=\"l01508\" name=\"l01508\"></a><span class=\"lineno\"> 1508</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l01509\" name=\"l01509\"></a><span class=\"lineno\"> 1509</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n-<div class=\"line\"><a id=\"l01510\" name=\"l01510\"></a><span class=\"lineno\"> 1510</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l01511\" name=\"l01511\"></a><span class=\"lineno\"> 1511</span>            instance = <a class=\"code hl_function\" href=\"a01149.html#a3a2faa1170cedd851fea7266e0ff7eda\">Create</a>(srcDesc, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01512\" name=\"l01512\"></a><span class=\"lineno\"> 1512</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l01513\" name=\"l01513\"></a><span class=\"lineno\"> 1513</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l01514\" name=\"l01514\"></a><span class=\"lineno\"> 1514</span>                              deviceContext);</div>\n-<div class=\"line\"><a id=\"l01515\" name=\"l01515\"></a><span class=\"lineno\"> 1515</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l01516\" name=\"l01516\"></a><span class=\"lineno\"> 1516</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01149.html#a927d8aae868323d5208b1e95c2591ad1\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01517\" name=\"l01517\"></a><span class=\"lineno\"> 1517</span>                                               srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l01518\" name=\"l01518\"></a><span class=\"lineno\"> 1518</span>                                               dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01519\" name=\"l01519\"></a><span class=\"lineno\"> 1519</span>                                               numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l01520\" name=\"l01520\"></a><span class=\"lineno\"> 1520</span>                                               patchTable,</div>\n-<div class=\"line\"><a id=\"l01521\" name=\"l01521\"></a><span class=\"lineno\"> 1521</span>                                               numStartEvents, startEvents, endEvent);</div>\n-<div class=\"line\"><a id=\"l01522\" name=\"l01522\"></a><span class=\"lineno\"> 1522</span>                <span class=\"keyword\">delete</span> instance;</div>\n-<div class=\"line\"><a id=\"l01523\" name=\"l01523\"></a><span class=\"lineno\"> 1523</span>                <span class=\"keywordflow\">return</span> r;</div>\n-<div class=\"line\"><a id=\"l01524\" name=\"l01524\"></a><span class=\"lineno\"> 1524</span>            }</div>\n-<div class=\"line\"><a id=\"l01525\" name=\"l01525\"></a><span class=\"lineno\"> 1525</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l01526\" name=\"l01526\"></a><span class=\"lineno\"> 1526</span>        }</div>\n-<div class=\"line\"><a id=\"l01527\" name=\"l01527\"></a><span class=\"lineno\"> 1527</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01528\" name=\"l01528\"></a><span class=\"lineno\"> 1528</span> </div>\n-<div class=\"line\"><a id=\"l01566\" name=\"l01566\"></a><span class=\"lineno\"> 1566</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01567\" name=\"l01567\"></a><span class=\"lineno\"> 1567</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01568\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01568\" name=\"l01568\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#ac15f843a06ecca29a922132ab59e3890\"> 1568</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#ac15f843a06ecca29a922132ab59e3890\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01569\" name=\"l01569\"></a><span class=\"lineno\"> 1569</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01570\" name=\"l01570\"></a><span class=\"lineno\"> 1570</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01571\" name=\"l01571\"></a><span class=\"lineno\"> 1571</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01572\" name=\"l01572\"></a><span class=\"lineno\"> 1572</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01573\" name=\"l01573\"></a><span class=\"lineno\"> 1573</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l01574\" name=\"l01574\"></a><span class=\"lineno\"> 1574</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents=0,</div>\n-<div class=\"line\"><a id=\"l01575\" name=\"l01575\"></a><span class=\"lineno\"> 1575</span>        <span class=\"keyword\">const</span> cl_event* startEvents=NULL,</div>\n-<div class=\"line\"><a id=\"l01576\" name=\"l01576\"></a><span class=\"lineno\"> 1576</span>        cl_event* endEvent=NULL)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l01577\" name=\"l01577\"></a><span class=\"lineno\"> 1577</span> </div>\n-<div class=\"line\"><a id=\"l01578\" name=\"l01578\"></a><span class=\"lineno\"> 1578</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01149.html#ab5cae7e895f2efe955b27ae3dafccfd2\">EvalPatches</a>(srcBuffer-&gt;BindCLBuffer(_clCommandQueue), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01579\" name=\"l01579\"></a><span class=\"lineno\"> 1579</span>                           dstBuffer-&gt;BindCLBuffer(_clCommandQueue), dstDesc,</div>\n-<div class=\"line\"><a id=\"l01580\" name=\"l01580\"></a><span class=\"lineno\"> 1580</span>                           0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l01581\" name=\"l01581\"></a><span class=\"lineno\"> 1581</span>                           0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l01582\" name=\"l01582\"></a><span class=\"lineno\"> 1582</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01583\" name=\"l01583\"></a><span class=\"lineno\"> 1583</span>                           patchCoords-&gt;BindCLBuffer(_clCommandQueue),</div>\n-<div class=\"line\"><a id=\"l01584\" name=\"l01584\"></a><span class=\"lineno\"> 1584</span>                           patchTable-&gt;GetVaryingPatchArrayBuffer(),</div>\n-<div class=\"line\"><a id=\"l01585\" name=\"l01585\"></a><span class=\"lineno\"> 1585</span>                           patchTable-&gt;GetVaryingPatchIndexBuffer(),</div>\n-<div class=\"line\"><a id=\"l01586\" name=\"l01586\"></a><span class=\"lineno\"> 1586</span>                           patchTable-&gt;GetPatchParamBuffer(),</div>\n-<div class=\"line\"><a id=\"l01587\" name=\"l01587\"></a><span class=\"lineno\"> 1587</span>                           numStartEvents, startEvents, endEvent);</div>\n-<div class=\"line\"><a id=\"l01588\" name=\"l01588\"></a><span class=\"lineno\"> 1588</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01589\" name=\"l01589\"></a><span class=\"lineno\"> 1589</span> </div>\n-<div class=\"line\"><a id=\"l01650\" name=\"l01650\"></a><span class=\"lineno\"> 1650</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01651\" name=\"l01651\"></a><span class=\"lineno\"> 1651</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE,</div>\n-<div class=\"line\"><a id=\"l01652\" name=\"l01652\"></a><span class=\"lineno\"> 1652</span>              <span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01653\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01653\" name=\"l01653\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#a7676de92e41c1e04e85f097f3d6d931e\"> 1653</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#a7676de92e41c1e04e85f097f3d6d931e\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01654\" name=\"l01654\"></a><span class=\"lineno\"> 1654</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01655\" name=\"l01655\"></a><span class=\"lineno\"> 1655</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01656\" name=\"l01656\"></a><span class=\"lineno\"> 1656</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l01657\" name=\"l01657\"></a><span class=\"lineno\"> 1657</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l01658\" name=\"l01658\"></a><span class=\"lineno\"> 1658</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01659\" name=\"l01659\"></a><span class=\"lineno\"> 1659</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01660\" name=\"l01660\"></a><span class=\"lineno\"> 1660</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l01661\" name=\"l01661\"></a><span class=\"lineno\"> 1661</span>        <a class=\"code hl_class\" href=\"a01149.html\">CLEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n-<div class=\"line\"><a id=\"l01662\" name=\"l01662\"></a><span class=\"lineno\"> 1662</span>        DEVICE_CONTEXT deviceContext,</div>\n-<div class=\"line\"><a id=\"l01663\" name=\"l01663\"></a><span class=\"lineno\"> 1663</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents=0,</div>\n-<div class=\"line\"><a id=\"l01664\" name=\"l01664\"></a><span class=\"lineno\"> 1664</span>        <span class=\"keyword\">const</span> cl_event* startEvents=NULL,</div>\n-<div class=\"line\"><a id=\"l01665\" name=\"l01665\"></a><span class=\"lineno\"> 1665</span>        cl_event* endEvent=NULL) {</div>\n-<div class=\"line\"><a id=\"l01666\" name=\"l01666\"></a><span class=\"lineno\"> 1666</span> </div>\n-<div class=\"line\"><a id=\"l01667\" name=\"l01667\"></a><span class=\"lineno\"> 1667</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l01668\" name=\"l01668\"></a><span class=\"lineno\"> 1668</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01149.html#a927d8aae868323d5208b1e95c2591ad1\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01669\" name=\"l01669\"></a><span class=\"lineno\"> 1669</span>                                         srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l01670\" name=\"l01670\"></a><span class=\"lineno\"> 1670</span>                                         dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01671\" name=\"l01671\"></a><span class=\"lineno\"> 1671</span>                                         duBuffer, duDesc,</div>\n-<div class=\"line\"><a id=\"l01672\" name=\"l01672\"></a><span class=\"lineno\"> 1672</span>                                         dvBuffer, dvDesc,</div>\n-<div class=\"line\"><a id=\"l01673\" name=\"l01673\"></a><span class=\"lineno\"> 1673</span>                                         numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l01674\" name=\"l01674\"></a><span class=\"lineno\"> 1674</span>                                         patchTable,</div>\n-<div class=\"line\"><a id=\"l01675\" name=\"l01675\"></a><span class=\"lineno\"> 1675</span>                                         numStartEvents, startEvents, endEvent);</div>\n-<div class=\"line\"><a id=\"l01676\" name=\"l01676\"></a><span class=\"lineno\"> 1676</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l01677\" name=\"l01677\"></a><span class=\"lineno\"> 1677</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n-<div class=\"line\"><a id=\"l01678\" name=\"l01678\"></a><span class=\"lineno\"> 1678</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l01679\" name=\"l01679\"></a><span class=\"lineno\"> 1679</span>            instance = <a class=\"code hl_function\" href=\"a01149.html#a3a2faa1170cedd851fea7266e0ff7eda\">Create</a>(srcDesc, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01680\" name=\"l01680\"></a><span class=\"lineno\"> 1680</span>                              duDesc, dvDesc,</div>\n-<div class=\"line\"><a id=\"l01681\" name=\"l01681\"></a><span class=\"lineno\"> 1681</span>                              deviceContext);</div>\n-<div class=\"line\"><a id=\"l01682\" name=\"l01682\"></a><span class=\"lineno\"> 1682</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l01683\" name=\"l01683\"></a><span class=\"lineno\"> 1683</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01149.html#a927d8aae868323d5208b1e95c2591ad1\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01684\" name=\"l01684\"></a><span class=\"lineno\"> 1684</span>                                               srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l01685\" name=\"l01685\"></a><span class=\"lineno\"> 1685</span>                                               dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01686\" name=\"l01686\"></a><span class=\"lineno\"> 1686</span>                                               duBuffer, duDesc,</div>\n-<div class=\"line\"><a id=\"l01687\" name=\"l01687\"></a><span class=\"lineno\"> 1687</span>                                               dvBuffer, dvDesc,</div>\n-<div class=\"line\"><a id=\"l01688\" name=\"l01688\"></a><span class=\"lineno\"> 1688</span>                                               numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l01689\" name=\"l01689\"></a><span class=\"lineno\"> 1689</span>                                               patchTable,</div>\n-<div class=\"line\"><a id=\"l01690\" name=\"l01690\"></a><span class=\"lineno\"> 1690</span>                                               numStartEvents, startEvents, endEvent);</div>\n-<div class=\"line\"><a id=\"l01691\" name=\"l01691\"></a><span class=\"lineno\"> 1691</span>                <span class=\"keyword\">delete</span> instance;</div>\n-<div class=\"line\"><a id=\"l01692\" name=\"l01692\"></a><span class=\"lineno\"> 1692</span>                <span class=\"keywordflow\">return</span> r;</div>\n-<div class=\"line\"><a id=\"l01693\" name=\"l01693\"></a><span class=\"lineno\"> 1693</span>            }</div>\n-<div class=\"line\"><a id=\"l01694\" name=\"l01694\"></a><span class=\"lineno\"> 1694</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l01695\" name=\"l01695\"></a><span class=\"lineno\"> 1695</span>        }</div>\n-<div class=\"line\"><a id=\"l01696\" name=\"l01696\"></a><span class=\"lineno\"> 1696</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01697\" name=\"l01697\"></a><span class=\"lineno\"> 1697</span> </div>\n-<div class=\"line\"><a id=\"l01747\" name=\"l01747\"></a><span class=\"lineno\"> 1747</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01748\" name=\"l01748\"></a><span class=\"lineno\"> 1748</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01749\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01749\" name=\"l01749\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#ab2a20bb6b2533aba43bd534e43e7dcac\"> 1749</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#ab2a20bb6b2533aba43bd534e43e7dcac\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01750\" name=\"l01750\"></a><span class=\"lineno\"> 1750</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01751\" name=\"l01751\"></a><span class=\"lineno\"> 1751</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01752\" name=\"l01752\"></a><span class=\"lineno\"> 1752</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l01753\" name=\"l01753\"></a><span class=\"lineno\"> 1753</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l01754\" name=\"l01754\"></a><span class=\"lineno\"> 1754</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01755\" name=\"l01755\"></a><span class=\"lineno\"> 1755</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01756\" name=\"l01756\"></a><span class=\"lineno\"> 1756</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l01757\" name=\"l01757\"></a><span class=\"lineno\"> 1757</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents=0,</div>\n-<div class=\"line\"><a id=\"l01758\" name=\"l01758\"></a><span class=\"lineno\"> 1758</span>        <span class=\"keyword\">const</span> cl_event* startEvents=NULL,</div>\n-<div class=\"line\"><a id=\"l01759\" name=\"l01759\"></a><span class=\"lineno\"> 1759</span>        cl_event* endEvent=NULL)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l01760\" name=\"l01760\"></a><span class=\"lineno\"> 1760</span> </div>\n-<div class=\"line\"><a id=\"l01761\" name=\"l01761\"></a><span class=\"lineno\"> 1761</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01149.html#ab5cae7e895f2efe955b27ae3dafccfd2\">EvalPatches</a>(srcBuffer-&gt;BindCLBuffer(_clCommandQueue), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01762\" name=\"l01762\"></a><span class=\"lineno\"> 1762</span>                           dstBuffer-&gt;BindCLBuffer(_clCommandQueue), dstDesc,</div>\n-<div class=\"line\"><a id=\"l01763\" name=\"l01763\"></a><span class=\"lineno\"> 1763</span>                           duBuffer-&gt;BindCLBuffer(_clCommandQueue), duDesc,</div>\n-<div class=\"line\"><a id=\"l01764\" name=\"l01764\"></a><span class=\"lineno\"> 1764</span>                           dvBuffer-&gt;BindCLBuffer(_clCommandQueue), dvDesc,</div>\n-<div class=\"line\"><a id=\"l01765\" name=\"l01765\"></a><span class=\"lineno\"> 1765</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01766\" name=\"l01766\"></a><span class=\"lineno\"> 1766</span>                           patchCoords-&gt;BindCLBuffer(_clCommandQueue),</div>\n-<div class=\"line\"><a id=\"l01767\" name=\"l01767\"></a><span class=\"lineno\"> 1767</span>                           patchTable-&gt;GetVaryingPatchArrayBuffer(),</div>\n-<div class=\"line\"><a id=\"l01768\" name=\"l01768\"></a><span class=\"lineno\"> 1768</span>                           patchTable-&gt;GetVaryingPatchIndexBuffer(),</div>\n-<div class=\"line\"><a id=\"l01769\" name=\"l01769\"></a><span class=\"lineno\"> 1769</span>                           patchTable-&gt;GetPatchParamBuffer(),</div>\n-<div class=\"line\"><a id=\"l01770\" name=\"l01770\"></a><span class=\"lineno\"> 1770</span>                           numStartEvents, startEvents, endEvent);</div>\n-<div class=\"line\"><a id=\"l01771\" name=\"l01771\"></a><span class=\"lineno\"> 1771</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01772\" name=\"l01772\"></a><span class=\"lineno\"> 1772</span> </div>\n-<div class=\"line\"><a id=\"l01851\" name=\"l01851\"></a><span class=\"lineno\"> 1851</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01852\" name=\"l01852\"></a><span class=\"lineno\"> 1852</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE,</div>\n-<div class=\"line\"><a id=\"l01853\" name=\"l01853\"></a><span class=\"lineno\"> 1853</span>              <span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01854\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01854\" name=\"l01854\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#ac81e120ca5b078e6563f78e7726e3c40\"> 1854</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#ac81e120ca5b078e6563f78e7726e3c40\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01855\" name=\"l01855\"></a><span class=\"lineno\"> 1855</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01856\" name=\"l01856\"></a><span class=\"lineno\"> 1856</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01857\" name=\"l01857\"></a><span class=\"lineno\"> 1857</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l01858\" name=\"l01858\"></a><span class=\"lineno\"> 1858</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l01859\" name=\"l01859\"></a><span class=\"lineno\"> 1859</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l01860\" name=\"l01860\"></a><span class=\"lineno\"> 1860</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l01861\" name=\"l01861\"></a><span class=\"lineno\"> 1861</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l01862\" name=\"l01862\"></a><span class=\"lineno\"> 1862</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01863\" name=\"l01863\"></a><span class=\"lineno\"> 1863</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01864\" name=\"l01864\"></a><span class=\"lineno\"> 1864</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l01865\" name=\"l01865\"></a><span class=\"lineno\"> 1865</span>        <a class=\"code hl_class\" href=\"a01149.html\">CLEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n-<div class=\"line\"><a id=\"l01866\" name=\"l01866\"></a><span class=\"lineno\"> 1866</span>        DEVICE_CONTEXT deviceContext,</div>\n-<div class=\"line\"><a id=\"l01867\" name=\"l01867\"></a><span class=\"lineno\"> 1867</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents=0,</div>\n-<div class=\"line\"><a id=\"l01868\" name=\"l01868\"></a><span class=\"lineno\"> 1868</span>        <span class=\"keyword\">const</span> cl_event* startEvents=NULL,</div>\n-<div class=\"line\"><a id=\"l01869\" name=\"l01869\"></a><span class=\"lineno\"> 1869</span>        cl_event* endEvent=NULL) {</div>\n-<div class=\"line\"><a id=\"l01870\" name=\"l01870\"></a><span class=\"lineno\"> 1870</span> </div>\n-<div class=\"line\"><a id=\"l01871\" name=\"l01871\"></a><span class=\"lineno\"> 1871</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l01872\" name=\"l01872\"></a><span class=\"lineno\"> 1872</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01149.html#a927d8aae868323d5208b1e95c2591ad1\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01873\" name=\"l01873\"></a><span class=\"lineno\"> 1873</span>                                         srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l01874\" name=\"l01874\"></a><span class=\"lineno\"> 1874</span>                                         dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01875\" name=\"l01875\"></a><span class=\"lineno\"> 1875</span>                                         duBuffer, duDesc,</div>\n-<div class=\"line\"><a id=\"l01876\" name=\"l01876\"></a><span class=\"lineno\"> 1876</span>                                         dvBuffer, dvDesc,</div>\n-<div class=\"line\"><a id=\"l01877\" name=\"l01877\"></a><span class=\"lineno\"> 1877</span>                                         duuBuffer, duuDesc,</div>\n-<div class=\"line\"><a id=\"l01878\" name=\"l01878\"></a><span class=\"lineno\"> 1878</span>                                         duvBuffer, duvDesc,</div>\n-<div class=\"line\"><a id=\"l01879\" name=\"l01879\"></a><span class=\"lineno\"> 1879</span>                                         dvvBuffer, dvvDesc,</div>\n-<div class=\"line\"><a id=\"l01880\" name=\"l01880\"></a><span class=\"lineno\"> 1880</span>                                         numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l01881\" name=\"l01881\"></a><span class=\"lineno\"> 1881</span>                                         patchTable,</div>\n-<div class=\"line\"><a id=\"l01882\" name=\"l01882\"></a><span class=\"lineno\"> 1882</span>                                         numStartEvents, startEvents, endEvent);</div>\n-<div class=\"line\"><a id=\"l01883\" name=\"l01883\"></a><span class=\"lineno\"> 1883</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l01884\" name=\"l01884\"></a><span class=\"lineno\"> 1884</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n-<div class=\"line\"><a id=\"l01885\" name=\"l01885\"></a><span class=\"lineno\"> 1885</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l01886\" name=\"l01886\"></a><span class=\"lineno\"> 1886</span>            instance = <a class=\"code hl_function\" href=\"a01149.html#a3a2faa1170cedd851fea7266e0ff7eda\">Create</a>(srcDesc, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01887\" name=\"l01887\"></a><span class=\"lineno\"> 1887</span>                              duDesc, dvDesc,</div>\n-<div class=\"line\"><a id=\"l01888\" name=\"l01888\"></a><span class=\"lineno\"> 1888</span>                              duuDesc, duvDesc, dvvDesc,</div>\n-<div class=\"line\"><a id=\"l01889\" name=\"l01889\"></a><span class=\"lineno\"> 1889</span>                              deviceContext);</div>\n-<div class=\"line\"><a id=\"l01890\" name=\"l01890\"></a><span class=\"lineno\"> 1890</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l01891\" name=\"l01891\"></a><span class=\"lineno\"> 1891</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01149.html#a927d8aae868323d5208b1e95c2591ad1\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01892\" name=\"l01892\"></a><span class=\"lineno\"> 1892</span>                                               srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l01893\" name=\"l01893\"></a><span class=\"lineno\"> 1893</span>                                               dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01894\" name=\"l01894\"></a><span class=\"lineno\"> 1894</span>                                               duBuffer, duDesc,</div>\n-<div class=\"line\"><a id=\"l01895\" name=\"l01895\"></a><span class=\"lineno\"> 1895</span>                                               dvBuffer, dvDesc,</div>\n-<div class=\"line\"><a id=\"l01896\" name=\"l01896\"></a><span class=\"lineno\"> 1896</span>                                               duuBuffer, duuDesc,</div>\n-<div class=\"line\"><a id=\"l01897\" name=\"l01897\"></a><span class=\"lineno\"> 1897</span>                                               duvBuffer, duvDesc,</div>\n-<div class=\"line\"><a id=\"l01898\" name=\"l01898\"></a><span class=\"lineno\"> 1898</span>                                               dvvBuffer, dvvDesc,</div>\n-<div class=\"line\"><a id=\"l01899\" name=\"l01899\"></a><span class=\"lineno\"> 1899</span>                                               numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l01900\" name=\"l01900\"></a><span class=\"lineno\"> 1900</span>                                               patchTable,</div>\n-<div class=\"line\"><a id=\"l01901\" name=\"l01901\"></a><span class=\"lineno\"> 1901</span>                                               numStartEvents, startEvents, endEvent);</div>\n-<div class=\"line\"><a id=\"l01902\" name=\"l01902\"></a><span class=\"lineno\"> 1902</span>                <span class=\"keyword\">delete</span> instance;</div>\n-<div class=\"line\"><a id=\"l01903\" name=\"l01903\"></a><span class=\"lineno\"> 1903</span>                <span class=\"keywordflow\">return</span> r;</div>\n-<div class=\"line\"><a id=\"l01904\" name=\"l01904\"></a><span class=\"lineno\"> 1904</span>            }</div>\n-<div class=\"line\"><a id=\"l01905\" name=\"l01905\"></a><span class=\"lineno\"> 1905</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l01906\" name=\"l01906\"></a><span class=\"lineno\"> 1906</span>        }</div>\n-<div class=\"line\"><a id=\"l01907\" name=\"l01907\"></a><span class=\"lineno\"> 1907</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01908\" name=\"l01908\"></a><span class=\"lineno\"> 1908</span> </div>\n-<div class=\"line\"><a id=\"l01976\" name=\"l01976\"></a><span class=\"lineno\"> 1976</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01977\" name=\"l01977\"></a><span class=\"lineno\"> 1977</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01978\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01978\" name=\"l01978\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#a222342a2581dc8a6366a16589b316959\"> 1978</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#a222342a2581dc8a6366a16589b316959\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01979\" name=\"l01979\"></a><span class=\"lineno\"> 1979</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01980\" name=\"l01980\"></a><span class=\"lineno\"> 1980</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01981\" name=\"l01981\"></a><span class=\"lineno\"> 1981</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l01982\" name=\"l01982\"></a><span class=\"lineno\"> 1982</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l01983\" name=\"l01983\"></a><span class=\"lineno\"> 1983</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l01984\" name=\"l01984\"></a><span class=\"lineno\"> 1984</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l01985\" name=\"l01985\"></a><span class=\"lineno\"> 1985</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l01986\" name=\"l01986\"></a><span class=\"lineno\"> 1986</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01987\" name=\"l01987\"></a><span class=\"lineno\"> 1987</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01988\" name=\"l01988\"></a><span class=\"lineno\"> 1988</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l01989\" name=\"l01989\"></a><span class=\"lineno\"> 1989</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents=0,</div>\n-<div class=\"line\"><a id=\"l01990\" name=\"l01990\"></a><span class=\"lineno\"> 1990</span>        <span class=\"keyword\">const</span> cl_event* startEvents=NULL,</div>\n-<div class=\"line\"><a id=\"l01991\" name=\"l01991\"></a><span class=\"lineno\"> 1991</span>        cl_event* endEvent=NULL)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l01992\" name=\"l01992\"></a><span class=\"lineno\"> 1992</span> </div>\n-<div class=\"line\"><a id=\"l01993\" name=\"l01993\"></a><span class=\"lineno\"> 1993</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01149.html#ab5cae7e895f2efe955b27ae3dafccfd2\">EvalPatches</a>(srcBuffer-&gt;BindCLBuffer(_clCommandQueue), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01994\" name=\"l01994\"></a><span class=\"lineno\"> 1994</span>                           dstBuffer-&gt;BindCLBuffer(_clCommandQueue), dstDesc,</div>\n-<div class=\"line\"><a id=\"l01995\" name=\"l01995\"></a><span class=\"lineno\"> 1995</span>                           duBuffer-&gt;BindCLBuffer(_clCommandQueue), duDesc,</div>\n-<div class=\"line\"><a id=\"l01996\" name=\"l01996\"></a><span class=\"lineno\"> 1996</span>                           dvBuffer-&gt;BindCLBuffer(_clCommandQueue), dvDesc,</div>\n-<div class=\"line\"><a id=\"l01997\" name=\"l01997\"></a><span class=\"lineno\"> 1997</span>                           duuBuffer-&gt;BindCLBuffer(_clCommandQueue), duuDesc,</div>\n-<div class=\"line\"><a id=\"l01998\" name=\"l01998\"></a><span class=\"lineno\"> 1998</span>                           duvBuffer-&gt;BindCLBuffer(_clCommandQueue), duvDesc,</div>\n-<div class=\"line\"><a id=\"l01999\" name=\"l01999\"></a><span class=\"lineno\"> 1999</span>                           dvvBuffer-&gt;BindCLBuffer(_clCommandQueue), dvvDesc,</div>\n-<div class=\"line\"><a id=\"l02000\" name=\"l02000\"></a><span class=\"lineno\"> 2000</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l02001\" name=\"l02001\"></a><span class=\"lineno\"> 2001</span>                           patchCoords-&gt;BindCLBuffer(_clCommandQueue),</div>\n-<div class=\"line\"><a id=\"l02002\" name=\"l02002\"></a><span class=\"lineno\"> 2002</span>                           patchTable-&gt;GetVaryingPatchArrayBuffer(),</div>\n-<div class=\"line\"><a id=\"l02003\" name=\"l02003\"></a><span class=\"lineno\"> 2003</span>                           patchTable-&gt;GetVaryingPatchIndexBuffer(),</div>\n-<div class=\"line\"><a id=\"l02004\" name=\"l02004\"></a><span class=\"lineno\"> 2004</span>                           patchTable-&gt;GetPatchParamBuffer(),</div>\n-<div class=\"line\"><a id=\"l02005\" name=\"l02005\"></a><span class=\"lineno\"> 2005</span>                           numStartEvents, startEvents, endEvent);</div>\n-<div class=\"line\"><a id=\"l02006\" name=\"l02006\"></a><span class=\"lineno\"> 2006</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l02007\" name=\"l02007\"></a><span class=\"lineno\"> 2007</span> </div>\n-<div class=\"line\"><a id=\"l02058\" name=\"l02058\"></a><span class=\"lineno\"> 2058</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l02059\" name=\"l02059\"></a><span class=\"lineno\"> 2059</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE,</div>\n-<div class=\"line\"><a id=\"l02060\" name=\"l02060\"></a><span class=\"lineno\"> 2060</span>              <span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen02061\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l02061\" name=\"l02061\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#a4306bdafdbba79ec4c659b9743701955\"> 2061</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#a4306bdafdbba79ec4c659b9743701955\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l02062\" name=\"l02062\"></a><span class=\"lineno\"> 2062</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l02063\" name=\"l02063\"></a><span class=\"lineno\"> 2063</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l02064\" name=\"l02064\"></a><span class=\"lineno\"> 2064</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l02065\" name=\"l02065\"></a><span class=\"lineno\"> 2065</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l02066\" name=\"l02066\"></a><span class=\"lineno\"> 2066</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l02067\" name=\"l02067\"></a><span class=\"lineno\"> 2067</span>        <span class=\"keywordtype\">int</span> fvarChannel,</div>\n-<div class=\"line\"><a id=\"l02068\" name=\"l02068\"></a><span class=\"lineno\"> 2068</span>        <a class=\"code hl_class\" href=\"a01149.html\">CLEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n-<div class=\"line\"><a id=\"l02069\" name=\"l02069\"></a><span class=\"lineno\"> 2069</span>        DEVICE_CONTEXT deviceContext,</div>\n-<div class=\"line\"><a id=\"l02070\" name=\"l02070\"></a><span class=\"lineno\"> 2070</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents=0,</div>\n-<div class=\"line\"><a id=\"l02071\" name=\"l02071\"></a><span class=\"lineno\"> 2071</span>        <span class=\"keyword\">const</span> cl_event* startEvents=NULL,</div>\n-<div class=\"line\"><a id=\"l02072\" name=\"l02072\"></a><span class=\"lineno\"> 2072</span>        cl_event* endEvent=NULL) {</div>\n-<div class=\"line\"><a id=\"l02073\" name=\"l02073\"></a><span class=\"lineno\"> 2073</span> </div>\n-<div class=\"line\"><a id=\"l02074\" name=\"l02074\"></a><span class=\"lineno\"> 2074</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l02075\" name=\"l02075\"></a><span class=\"lineno\"> 2075</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01149.html#a4306bdafdbba79ec4c659b9743701955\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l02076\" name=\"l02076\"></a><span class=\"lineno\"> 2076</span>                                         srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l02077\" name=\"l02077\"></a><span class=\"lineno\"> 2077</span>                                         dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l02078\" name=\"l02078\"></a><span class=\"lineno\"> 2078</span>                                         numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l02079\" name=\"l02079\"></a><span class=\"lineno\"> 2079</span>                                         patchTable, fvarChannel,</div>\n-<div class=\"line\"><a id=\"l02080\" name=\"l02080\"></a><span class=\"lineno\"> 2080</span>                                         numStartEvents, startEvents, endEvent);</div>\n-<div class=\"line\"><a id=\"l02081\" name=\"l02081\"></a><span class=\"lineno\"> 2081</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l02082\" name=\"l02082\"></a><span class=\"lineno\"> 2082</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n-<div class=\"line\"><a id=\"l02083\" name=\"l02083\"></a><span class=\"lineno\"> 2083</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l02084\" name=\"l02084\"></a><span class=\"lineno\"> 2084</span>            instance = <a class=\"code hl_function\" href=\"a01149.html#a3a2faa1170cedd851fea7266e0ff7eda\">Create</a>(srcDesc, dstDesc,</div>\n-<div class=\"line\"><a id=\"l02085\" name=\"l02085\"></a><span class=\"lineno\"> 2085</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l02086\" name=\"l02086\"></a><span class=\"lineno\"> 2086</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l02087\" name=\"l02087\"></a><span class=\"lineno\"> 2087</span>                              deviceContext);</div>\n-<div class=\"line\"><a id=\"l02088\" name=\"l02088\"></a><span class=\"lineno\"> 2088</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l02089\" name=\"l02089\"></a><span class=\"lineno\"> 2089</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01149.html#a4306bdafdbba79ec4c659b9743701955\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l02090\" name=\"l02090\"></a><span class=\"lineno\"> 2090</span>                                               srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l02091\" name=\"l02091\"></a><span class=\"lineno\"> 2091</span>                                               dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l02092\" name=\"l02092\"></a><span class=\"lineno\"> 2092</span>                                               numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l02093\" name=\"l02093\"></a><span class=\"lineno\"> 2093</span>                                               patchTable, fvarChannel,</div>\n-<div class=\"line\"><a id=\"l02094\" name=\"l02094\"></a><span class=\"lineno\"> 2094</span>                                               numStartEvents, startEvents, endEvent);</div>\n-<div class=\"line\"><a id=\"l02095\" name=\"l02095\"></a><span class=\"lineno\"> 2095</span>                <span class=\"keyword\">delete</span> instance;</div>\n-<div class=\"line\"><a id=\"l02096\" name=\"l02096\"></a><span class=\"lineno\"> 2096</span>                <span class=\"keywordflow\">return</span> r;</div>\n-<div class=\"line\"><a id=\"l02097\" name=\"l02097\"></a><span class=\"lineno\"> 2097</span>            }</div>\n-<div class=\"line\"><a id=\"l02098\" name=\"l02098\"></a><span class=\"lineno\"> 2098</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l02099\" name=\"l02099\"></a><span class=\"lineno\"> 2099</span>        }</div>\n-<div class=\"line\"><a id=\"l02100\" name=\"l02100\"></a><span class=\"lineno\"> 2100</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l02101\" name=\"l02101\"></a><span class=\"lineno\"> 2101</span> </div>\n-<div class=\"line\"><a id=\"l02141\" name=\"l02141\"></a><span class=\"lineno\"> 2141</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l02142\" name=\"l02142\"></a><span class=\"lineno\"> 2142</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen02143\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l02143\" name=\"l02143\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#afadb249fa0e871eead60821dff48d73c\"> 2143</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#afadb249fa0e871eead60821dff48d73c\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l02144\" name=\"l02144\"></a><span class=\"lineno\"> 2144</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l02145\" name=\"l02145\"></a><span class=\"lineno\"> 2145</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l02146\" name=\"l02146\"></a><span class=\"lineno\"> 2146</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l02147\" name=\"l02147\"></a><span class=\"lineno\"> 2147</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l02148\" name=\"l02148\"></a><span class=\"lineno\"> 2148</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l02149\" name=\"l02149\"></a><span class=\"lineno\"> 2149</span>        <span class=\"keywordtype\">int</span> fvarChannel = 0,</div>\n-<div class=\"line\"><a id=\"l02150\" name=\"l02150\"></a><span class=\"lineno\"> 2150</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents=0,</div>\n-<div class=\"line\"><a id=\"l02151\" name=\"l02151\"></a><span class=\"lineno\"> 2151</span>        <span class=\"keyword\">const</span> cl_event* startEvents=NULL,</div>\n-<div class=\"line\"><a id=\"l02152\" name=\"l02152\"></a><span class=\"lineno\"> 2152</span>        cl_event* endEvent=NULL)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l02153\" name=\"l02153\"></a><span class=\"lineno\"> 2153</span> </div>\n-<div class=\"line\"><a id=\"l02154\" name=\"l02154\"></a><span class=\"lineno\"> 2154</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01149.html#ab5cae7e895f2efe955b27ae3dafccfd2\">EvalPatches</a>(srcBuffer-&gt;BindCLBuffer(_clCommandQueue), srcDesc,</div>\n-<div class=\"line\"><a id=\"l02155\" name=\"l02155\"></a><span class=\"lineno\"> 2155</span>                           dstBuffer-&gt;BindCLBuffer(_clCommandQueue), dstDesc,</div>\n-<div class=\"line\"><a id=\"l02156\" name=\"l02156\"></a><span class=\"lineno\"> 2156</span>                           0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l02157\" name=\"l02157\"></a><span class=\"lineno\"> 2157</span>                           0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l02158\" name=\"l02158\"></a><span class=\"lineno\"> 2158</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l02159\" name=\"l02159\"></a><span class=\"lineno\"> 2159</span>                           patchCoords-&gt;BindCLBuffer(_clCommandQueue),</div>\n-<div class=\"line\"><a id=\"l02160\" name=\"l02160\"></a><span class=\"lineno\"> 2160</span>                           patchTable-&gt;GetFVarPatchArrayBuffer(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l02161\" name=\"l02161\"></a><span class=\"lineno\"> 2161</span>                           patchTable-&gt;GetFVarPatchIndexBuffer(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l02162\" name=\"l02162\"></a><span class=\"lineno\"> 2162</span>                           patchTable-&gt;GetFVarPatchParamBuffer(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l02163\" name=\"l02163\"></a><span class=\"lineno\"> 2163</span>                           numStartEvents, startEvents, endEvent);</div>\n-<div class=\"line\"><a id=\"l02164\" name=\"l02164\"></a><span class=\"lineno\"> 2164</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l02165\" name=\"l02165\"></a><span class=\"lineno\"> 2165</span> </div>\n-<div class=\"line\"><a id=\"l02228\" name=\"l02228\"></a><span class=\"lineno\"> 2228</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l02229\" name=\"l02229\"></a><span class=\"lineno\"> 2229</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE,</div>\n-<div class=\"line\"><a id=\"l02230\" name=\"l02230\"></a><span class=\"lineno\"> 2230</span>              <span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen02231\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l02231\" name=\"l02231\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#a1f66ce14f335d4a575fc95365bf811d9\"> 2231</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#a1f66ce14f335d4a575fc95365bf811d9\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l02232\" name=\"l02232\"></a><span class=\"lineno\"> 2232</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l02233\" name=\"l02233\"></a><span class=\"lineno\"> 2233</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l02234\" name=\"l02234\"></a><span class=\"lineno\"> 2234</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l02235\" name=\"l02235\"></a><span class=\"lineno\"> 2235</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l02236\" name=\"l02236\"></a><span class=\"lineno\"> 2236</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l02237\" name=\"l02237\"></a><span class=\"lineno\"> 2237</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l02238\" name=\"l02238\"></a><span class=\"lineno\"> 2238</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l02239\" name=\"l02239\"></a><span class=\"lineno\"> 2239</span>        <span class=\"keywordtype\">int</span> fvarChannel,</div>\n-<div class=\"line\"><a id=\"l02240\" name=\"l02240\"></a><span class=\"lineno\"> 2240</span>        <a class=\"code hl_class\" href=\"a01149.html\">CLEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n-<div class=\"line\"><a id=\"l02241\" name=\"l02241\"></a><span class=\"lineno\"> 2241</span>        DEVICE_CONTEXT deviceContext,</div>\n-<div class=\"line\"><a id=\"l02242\" name=\"l02242\"></a><span class=\"lineno\"> 2242</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents=0,</div>\n-<div class=\"line\"><a id=\"l02243\" name=\"l02243\"></a><span class=\"lineno\"> 2243</span>        <span class=\"keyword\">const</span> cl_event* startEvents=NULL,</div>\n-<div class=\"line\"><a id=\"l02244\" name=\"l02244\"></a><span class=\"lineno\"> 2244</span>        cl_event* endEvent=NULL) {</div>\n-<div class=\"line\"><a id=\"l02245\" name=\"l02245\"></a><span class=\"lineno\"> 2245</span> </div>\n-<div class=\"line\"><a id=\"l02246\" name=\"l02246\"></a><span class=\"lineno\"> 2246</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l02247\" name=\"l02247\"></a><span class=\"lineno\"> 2247</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01149.html#a4306bdafdbba79ec4c659b9743701955\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l02248\" name=\"l02248\"></a><span class=\"lineno\"> 2248</span>                                         srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l02249\" name=\"l02249\"></a><span class=\"lineno\"> 2249</span>                                         dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l02250\" name=\"l02250\"></a><span class=\"lineno\"> 2250</span>                                         duBuffer, duDesc,</div>\n-<div class=\"line\"><a id=\"l02251\" name=\"l02251\"></a><span class=\"lineno\"> 2251</span>                                         dvBuffer, dvDesc,</div>\n-<div class=\"line\"><a id=\"l02252\" name=\"l02252\"></a><span class=\"lineno\"> 2252</span>                                         numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l02253\" name=\"l02253\"></a><span class=\"lineno\"> 2253</span>                                         patchTable, fvarChannel,</div>\n-<div class=\"line\"><a id=\"l02254\" name=\"l02254\"></a><span class=\"lineno\"> 2254</span>                                         numStartEvents, startEvents, endEvent);</div>\n-<div class=\"line\"><a id=\"l02255\" name=\"l02255\"></a><span class=\"lineno\"> 2255</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l02256\" name=\"l02256\"></a><span class=\"lineno\"> 2256</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n-<div class=\"line\"><a id=\"l02257\" name=\"l02257\"></a><span class=\"lineno\"> 2257</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l02258\" name=\"l02258\"></a><span class=\"lineno\"> 2258</span>            instance = <a class=\"code hl_function\" href=\"a01149.html#a3a2faa1170cedd851fea7266e0ff7eda\">Create</a>(srcDesc, dstDesc,</div>\n-<div class=\"line\"><a id=\"l02259\" name=\"l02259\"></a><span class=\"lineno\"> 2259</span>                              duDesc, dvDesc, deviceContext);</div>\n-<div class=\"line\"><a id=\"l02260\" name=\"l02260\"></a><span class=\"lineno\"> 2260</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l02261\" name=\"l02261\"></a><span class=\"lineno\"> 2261</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01149.html#a4306bdafdbba79ec4c659b9743701955\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l02262\" name=\"l02262\"></a><span class=\"lineno\"> 2262</span>                                               srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l02263\" name=\"l02263\"></a><span class=\"lineno\"> 2263</span>                                               dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l02264\" name=\"l02264\"></a><span class=\"lineno\"> 2264</span>                                               duBuffer, duDesc,</div>\n-<div class=\"line\"><a id=\"l02265\" name=\"l02265\"></a><span class=\"lineno\"> 2265</span>                                               dvBuffer, dvDesc,</div>\n-<div class=\"line\"><a id=\"l02266\" name=\"l02266\"></a><span class=\"lineno\"> 2266</span>                                               numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l02267\" name=\"l02267\"></a><span class=\"lineno\"> 2267</span>                                               patchTable, fvarChannel,</div>\n-<div class=\"line\"><a id=\"l02268\" name=\"l02268\"></a><span class=\"lineno\"> 2268</span>                                               numStartEvents, startEvents, endEvent);</div>\n-<div class=\"line\"><a id=\"l02269\" name=\"l02269\"></a><span class=\"lineno\"> 2269</span>                <span class=\"keyword\">delete</span> instance;</div>\n-<div class=\"line\"><a id=\"l02270\" name=\"l02270\"></a><span class=\"lineno\"> 2270</span>                <span class=\"keywordflow\">return</span> r;</div>\n-<div class=\"line\"><a id=\"l02271\" name=\"l02271\"></a><span class=\"lineno\"> 2271</span>            }</div>\n-<div class=\"line\"><a id=\"l02272\" name=\"l02272\"></a><span class=\"lineno\"> 2272</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l02273\" name=\"l02273\"></a><span class=\"lineno\"> 2273</span>        }</div>\n-<div class=\"line\"><a id=\"l02274\" name=\"l02274\"></a><span class=\"lineno\"> 2274</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l02275\" name=\"l02275\"></a><span class=\"lineno\"> 2275</span> </div>\n-<div class=\"line\"><a id=\"l02327\" name=\"l02327\"></a><span class=\"lineno\"> 2327</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l02328\" name=\"l02328\"></a><span class=\"lineno\"> 2328</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen02329\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l02329\" name=\"l02329\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#aa479c7900943eed61feede277083eb08\"> 2329</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#aa479c7900943eed61feede277083eb08\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l02330\" name=\"l02330\"></a><span class=\"lineno\"> 2330</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l02331\" name=\"l02331\"></a><span class=\"lineno\"> 2331</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l02332\" name=\"l02332\"></a><span class=\"lineno\"> 2332</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l02333\" name=\"l02333\"></a><span class=\"lineno\"> 2333</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l02334\" name=\"l02334\"></a><span class=\"lineno\"> 2334</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l02335\" name=\"l02335\"></a><span class=\"lineno\"> 2335</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l02336\" name=\"l02336\"></a><span class=\"lineno\"> 2336</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l02337\" name=\"l02337\"></a><span class=\"lineno\"> 2337</span>        <span class=\"keywordtype\">int</span> fvarChannel = 0,</div>\n-<div class=\"line\"><a id=\"l02338\" name=\"l02338\"></a><span class=\"lineno\"> 2338</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents=0,</div>\n-<div class=\"line\"><a id=\"l02339\" name=\"l02339\"></a><span class=\"lineno\"> 2339</span>        <span class=\"keyword\">const</span> cl_event* startEvents=NULL,</div>\n-<div class=\"line\"><a id=\"l02340\" name=\"l02340\"></a><span class=\"lineno\"> 2340</span>        cl_event* endEvent=NULL)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l02341\" name=\"l02341\"></a><span class=\"lineno\"> 2341</span> </div>\n-<div class=\"line\"><a id=\"l02342\" name=\"l02342\"></a><span class=\"lineno\"> 2342</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01149.html#ab5cae7e895f2efe955b27ae3dafccfd2\">EvalPatches</a>(srcBuffer-&gt;BindCLBuffer(_clCommandQueue), srcDesc,</div>\n-<div class=\"line\"><a id=\"l02343\" name=\"l02343\"></a><span class=\"lineno\"> 2343</span>                           dstBuffer-&gt;BindCLBuffer(_clCommandQueue), dstDesc,</div>\n-<div class=\"line\"><a id=\"l02344\" name=\"l02344\"></a><span class=\"lineno\"> 2344</span>                           duBuffer-&gt;BindCLBuffer(_clCommandQueue), duDesc,</div>\n-<div class=\"line\"><a id=\"l02345\" name=\"l02345\"></a><span class=\"lineno\"> 2345</span>                           dvBuffer-&gt;BindCLBuffer(_clCommandQueue), dvDesc,</div>\n-<div class=\"line\"><a id=\"l02346\" name=\"l02346\"></a><span class=\"lineno\"> 2346</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l02347\" name=\"l02347\"></a><span class=\"lineno\"> 2347</span>                           patchCoords-&gt;BindCLBuffer(_clCommandQueue),</div>\n-<div class=\"line\"><a id=\"l02348\" name=\"l02348\"></a><span class=\"lineno\"> 2348</span>                           patchTable-&gt;GetFVarPatchArrayBuffer(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l02349\" name=\"l02349\"></a><span class=\"lineno\"> 2349</span>                           patchTable-&gt;GetFVarPatchIndexBuffer(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l02350\" name=\"l02350\"></a><span class=\"lineno\"> 2350</span>                           patchTable-&gt;GetFVarPatchParamBuffer(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l02351\" name=\"l02351\"></a><span class=\"lineno\"> 2351</span>                           numStartEvents, startEvents, endEvent);</div>\n-<div class=\"line\"><a id=\"l02352\" name=\"l02352\"></a><span class=\"lineno\"> 2352</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l02353\" name=\"l02353\"></a><span class=\"lineno\"> 2353</span> </div>\n-<div class=\"line\"><a id=\"l02434\" name=\"l02434\"></a><span class=\"lineno\"> 2434</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l02435\" name=\"l02435\"></a><span class=\"lineno\"> 2435</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE,</div>\n-<div class=\"line\"><a id=\"l02436\" name=\"l02436\"></a><span class=\"lineno\"> 2436</span>              <span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen02437\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l02437\" name=\"l02437\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#aa55b9dc6ee02d2a3beb2f85df1794afb\"> 2437</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#aa55b9dc6ee02d2a3beb2f85df1794afb\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l02438\" name=\"l02438\"></a><span class=\"lineno\"> 2438</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l02439\" name=\"l02439\"></a><span class=\"lineno\"> 2439</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l02440\" name=\"l02440\"></a><span class=\"lineno\"> 2440</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l02441\" name=\"l02441\"></a><span class=\"lineno\"> 2441</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l02442\" name=\"l02442\"></a><span class=\"lineno\"> 2442</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l02443\" name=\"l02443\"></a><span class=\"lineno\"> 2443</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l02444\" name=\"l02444\"></a><span class=\"lineno\"> 2444</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l02445\" name=\"l02445\"></a><span class=\"lineno\"> 2445</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l02446\" name=\"l02446\"></a><span class=\"lineno\"> 2446</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l02447\" name=\"l02447\"></a><span class=\"lineno\"> 2447</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l02448\" name=\"l02448\"></a><span class=\"lineno\"> 2448</span>        <span class=\"keywordtype\">int</span> fvarChannel,</div>\n-<div class=\"line\"><a id=\"l02449\" name=\"l02449\"></a><span class=\"lineno\"> 2449</span>        <a class=\"code hl_class\" href=\"a01149.html\">CLEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n-<div class=\"line\"><a id=\"l02450\" name=\"l02450\"></a><span class=\"lineno\"> 2450</span>        DEVICE_CONTEXT deviceContext,</div>\n-<div class=\"line\"><a id=\"l02451\" name=\"l02451\"></a><span class=\"lineno\"> 2451</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents=0,</div>\n-<div class=\"line\"><a id=\"l02452\" name=\"l02452\"></a><span class=\"lineno\"> 2452</span>        <span class=\"keyword\">const</span> cl_event* startEvents=NULL,</div>\n-<div class=\"line\"><a id=\"l02453\" name=\"l02453\"></a><span class=\"lineno\"> 2453</span>        cl_event* endEvent=NULL) {</div>\n-<div class=\"line\"><a id=\"l02454\" name=\"l02454\"></a><span class=\"lineno\"> 2454</span> </div>\n-<div class=\"line\"><a id=\"l02455\" name=\"l02455\"></a><span class=\"lineno\"> 2455</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l02456\" name=\"l02456\"></a><span class=\"lineno\"> 2456</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01149.html#a4306bdafdbba79ec4c659b9743701955\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l02457\" name=\"l02457\"></a><span class=\"lineno\"> 2457</span>                                         srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l02458\" name=\"l02458\"></a><span class=\"lineno\"> 2458</span>                                         dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l02459\" name=\"l02459\"></a><span class=\"lineno\"> 2459</span>                                         duBuffer, duDesc,</div>\n-<div class=\"line\"><a id=\"l02460\" name=\"l02460\"></a><span class=\"lineno\"> 2460</span>                                         dvBuffer, dvDesc,</div>\n-<div class=\"line\"><a id=\"l02461\" name=\"l02461\"></a><span class=\"lineno\"> 2461</span>                                         duuBuffer, duuDesc,</div>\n-<div class=\"line\"><a id=\"l02462\" name=\"l02462\"></a><span class=\"lineno\"> 2462</span>                                         duvBuffer, duvDesc,</div>\n-<div class=\"line\"><a id=\"l02463\" name=\"l02463\"></a><span class=\"lineno\"> 2463</span>                                         dvvBuffer, dvvDesc,</div>\n-<div class=\"line\"><a id=\"l02464\" name=\"l02464\"></a><span class=\"lineno\"> 2464</span>                                         numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l02465\" name=\"l02465\"></a><span class=\"lineno\"> 2465</span>                                         patchTable, fvarChannel,</div>\n-<div class=\"line\"><a id=\"l02466\" name=\"l02466\"></a><span class=\"lineno\"> 2466</span>                                         numStartEvents, startEvents, endEvent);</div>\n-<div class=\"line\"><a id=\"l02467\" name=\"l02467\"></a><span class=\"lineno\"> 2467</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l02468\" name=\"l02468\"></a><span class=\"lineno\"> 2468</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n-<div class=\"line\"><a id=\"l02469\" name=\"l02469\"></a><span class=\"lineno\"> 2469</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l02470\" name=\"l02470\"></a><span class=\"lineno\"> 2470</span>            instance = <a class=\"code hl_function\" href=\"a01149.html#a3a2faa1170cedd851fea7266e0ff7eda\">Create</a>(srcDesc, dstDesc,</div>\n-<div class=\"line\"><a id=\"l02471\" name=\"l02471\"></a><span class=\"lineno\"> 2471</span>                              duDesc, dvDesc,</div>\n-<div class=\"line\"><a id=\"l02472\" name=\"l02472\"></a><span class=\"lineno\"> 2472</span>                              duuDesc, duvDesc, dvvDesc,</div>\n-<div class=\"line\"><a id=\"l02473\" name=\"l02473\"></a><span class=\"lineno\"> 2473</span>                              deviceContext);</div>\n-<div class=\"line\"><a id=\"l02474\" name=\"l02474\"></a><span class=\"lineno\"> 2474</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l02475\" name=\"l02475\"></a><span class=\"lineno\"> 2475</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01149.html#a4306bdafdbba79ec4c659b9743701955\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l02476\" name=\"l02476\"></a><span class=\"lineno\"> 2476</span>                                               srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l02477\" name=\"l02477\"></a><span class=\"lineno\"> 2477</span>                                               dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l02478\" name=\"l02478\"></a><span class=\"lineno\"> 2478</span>                                               duBuffer, duDesc,</div>\n-<div class=\"line\"><a id=\"l02479\" name=\"l02479\"></a><span class=\"lineno\"> 2479</span>                                               dvBuffer, dvDesc,</div>\n-<div class=\"line\"><a id=\"l02480\" name=\"l02480\"></a><span class=\"lineno\"> 2480</span>                                               duuBuffer, duuDesc,</div>\n-<div class=\"line\"><a id=\"l02481\" name=\"l02481\"></a><span class=\"lineno\"> 2481</span>                                               duvBuffer, duvDesc,</div>\n-<div class=\"line\"><a id=\"l02482\" name=\"l02482\"></a><span class=\"lineno\"> 2482</span>                                               dvvBuffer, dvvDesc,</div>\n-<div class=\"line\"><a id=\"l02483\" name=\"l02483\"></a><span class=\"lineno\"> 2483</span>                                               numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l02484\" name=\"l02484\"></a><span class=\"lineno\"> 2484</span>                                               patchTable, fvarChannel,</div>\n-<div class=\"line\"><a id=\"l02485\" name=\"l02485\"></a><span class=\"lineno\"> 2485</span>                                               numStartEvents, startEvents, endEvent);</div>\n-<div class=\"line\"><a id=\"l02486\" name=\"l02486\"></a><span class=\"lineno\"> 2486</span>                <span class=\"keyword\">delete</span> instance;</div>\n-<div class=\"line\"><a id=\"l02487\" name=\"l02487\"></a><span class=\"lineno\"> 2487</span>                <span class=\"keywordflow\">return</span> r;</div>\n-<div class=\"line\"><a id=\"l02488\" name=\"l02488\"></a><span class=\"lineno\"> 2488</span>            }</div>\n-<div class=\"line\"><a id=\"l02489\" name=\"l02489\"></a><span class=\"lineno\"> 2489</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l02490\" name=\"l02490\"></a><span class=\"lineno\"> 2490</span>        }</div>\n-<div class=\"line\"><a id=\"l02491\" name=\"l02491\"></a><span class=\"lineno\"> 2491</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l02492\" name=\"l02492\"></a><span class=\"lineno\"> 2492</span> </div>\n-<div class=\"line\"><a id=\"l02562\" name=\"l02562\"></a><span class=\"lineno\"> 2562</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l02563\" name=\"l02563\"></a><span class=\"lineno\"> 2563</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen02564\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l02564\" name=\"l02564\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#a67b59f584f05e87e91b371cb3744f137\"> 2564</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#a67b59f584f05e87e91b371cb3744f137\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l02565\" name=\"l02565\"></a><span class=\"lineno\"> 2565</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l02566\" name=\"l02566\"></a><span class=\"lineno\"> 2566</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l02567\" name=\"l02567\"></a><span class=\"lineno\"> 2567</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l02568\" name=\"l02568\"></a><span class=\"lineno\"> 2568</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l02569\" name=\"l02569\"></a><span class=\"lineno\"> 2569</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l02570\" name=\"l02570\"></a><span class=\"lineno\"> 2570</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l02571\" name=\"l02571\"></a><span class=\"lineno\"> 2571</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l02572\" name=\"l02572\"></a><span class=\"lineno\"> 2572</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l02573\" name=\"l02573\"></a><span class=\"lineno\"> 2573</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l02574\" name=\"l02574\"></a><span class=\"lineno\"> 2574</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l02575\" name=\"l02575\"></a><span class=\"lineno\"> 2575</span>        <span class=\"keywordtype\">int</span> fvarChannel = 0,</div>\n-<div class=\"line\"><a id=\"l02576\" name=\"l02576\"></a><span class=\"lineno\"> 2576</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents=0,</div>\n-<div class=\"line\"><a id=\"l02577\" name=\"l02577\"></a><span class=\"lineno\"> 2577</span>        <span class=\"keyword\">const</span> cl_event* startEvents=NULL,</div>\n-<div class=\"line\"><a id=\"l02578\" name=\"l02578\"></a><span class=\"lineno\"> 2578</span>        cl_event* endEvent=NULL)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l02579\" name=\"l02579\"></a><span class=\"lineno\"> 2579</span> </div>\n-<div class=\"line\"><a id=\"l02580\" name=\"l02580\"></a><span class=\"lineno\"> 2580</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01149.html#ab5cae7e895f2efe955b27ae3dafccfd2\">EvalPatches</a>(srcBuffer-&gt;BindCLBuffer(_clCommandQueue), srcDesc,</div>\n-<div class=\"line\"><a id=\"l02581\" name=\"l02581\"></a><span class=\"lineno\"> 2581</span>                           dstBuffer-&gt;BindCLBuffer(_clCommandQueue), dstDesc,</div>\n-<div class=\"line\"><a id=\"l02582\" name=\"l02582\"></a><span class=\"lineno\"> 2582</span>                           duBuffer-&gt;BindCLBuffer(_clCommandQueue), duDesc,</div>\n-<div class=\"line\"><a id=\"l02583\" name=\"l02583\"></a><span class=\"lineno\"> 2583</span>                           dvBuffer-&gt;BindCLBuffer(_clCommandQueue), dvDesc,</div>\n-<div class=\"line\"><a id=\"l02584\" name=\"l02584\"></a><span class=\"lineno\"> 2584</span>                           duuBuffer-&gt;BindCLBuffer(_clCommandQueue), duuDesc,</div>\n-<div class=\"line\"><a id=\"l02585\" name=\"l02585\"></a><span class=\"lineno\"> 2585</span>                           duvBuffer-&gt;BindCLBuffer(_clCommandQueue), duvDesc,</div>\n-<div class=\"line\"><a id=\"l02586\" name=\"l02586\"></a><span class=\"lineno\"> 2586</span>                           dvvBuffer-&gt;BindCLBuffer(_clCommandQueue), dvvDesc,</div>\n-<div class=\"line\"><a id=\"l02587\" name=\"l02587\"></a><span class=\"lineno\"> 2587</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l02588\" name=\"l02588\"></a><span class=\"lineno\"> 2588</span>                           patchCoords-&gt;BindCLBuffer(_clCommandQueue),</div>\n-<div class=\"line\"><a id=\"l02589\" name=\"l02589\"></a><span class=\"lineno\"> 2589</span>                           patchTable-&gt;GetFVarPatchArrayBuffer(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l02590\" name=\"l02590\"></a><span class=\"lineno\"> 2590</span>                           patchTable-&gt;GetFVarPatchIndexBuffer(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l02591\" name=\"l02591\"></a><span class=\"lineno\"> 2591</span>                           patchTable-&gt;GetFVarPatchParamBuffer(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l02592\" name=\"l02592\"></a><span class=\"lineno\"> 2592</span>                           numStartEvents, startEvents, endEvent);</div>\n-<div class=\"line\"><a id=\"l02593\" name=\"l02593\"></a><span class=\"lineno\"> 2593</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l02594\" name=\"l02594\"></a><span class=\"lineno\"> 2594</span> </div>\n-<div class=\"line\"><a id=\"l02600\" name=\"l02600\"></a><span class=\"lineno\"> 2600</span> </div>\n-<div class=\"line\"><a id=\"l02603\" name=\"l02603\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#ade1086349c1a452f60bcf281383ceec2\"> 2603</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01149.html#ade1086349c1a452f60bcf281383ceec2\">Compile</a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l02604\" name=\"l02604\"></a><span class=\"lineno\"> 2604</span>                 <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l02605\" name=\"l02605\"></a><span class=\"lineno\"> 2605</span>                 <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc = <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l02606\" name=\"l02606\"></a><span class=\"lineno\"> 2606</span>                 <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc = <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l02607\" name=\"l02607\"></a><span class=\"lineno\"> 2607</span>                 <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc = <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l02608\" name=\"l02608\"></a><span class=\"lineno\"> 2608</span>                 <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc = <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l02609\" name=\"l02609\"></a><span class=\"lineno\"> 2609</span>                 <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc = <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>());</div>\n-<div class=\"line\"><a id=\"l02610\" name=\"l02610\"></a><span class=\"lineno\"> 2610</span> </div>\n-<div class=\"line\"><a id=\"l02612\" name=\"l02612\"></a><span class=\"lineno\"> 2612</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen02613\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l02613\" name=\"l02613\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#a7e77f811e9d48160701e705bb4300388\"> 2613</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01149.html#a7e77f811e9d48160701e705bb4300388\">Synchronize</a>(DEVICE_CONTEXT deviceContext) {</div>\n-<div class=\"line\"><a id=\"l02614\" name=\"l02614\"></a><span class=\"lineno\"> 2614</span>        <a class=\"code hl_function\" href=\"a01149.html#a7e77f811e9d48160701e705bb4300388\">Synchronize</a>(deviceContext-&gt;GetCommandQueue());</div>\n-<div class=\"line\"><a id=\"l02615\" name=\"l02615\"></a><span class=\"lineno\"> 2615</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l02616\" name=\"l02616\"></a><span class=\"lineno\"> 2616</span> </div>\n-<div class=\"line\"><a id=\"l02617\" name=\"l02617\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01149.html#a0529a707250f9931f945ec49d4e428d2\"> 2617</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01149.html#a0529a707250f9931f945ec49d4e428d2\">Synchronize</a>(cl_command_queue queue);</div>\n-<div class=\"line\"><a id=\"l02618\" name=\"l02618\"></a><span class=\"lineno\"> 2618</span> </div>\n-<div class=\"line\"><a id=\"l02619\" name=\"l02619\"></a><span class=\"lineno\"> 2619</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l02620\" name=\"l02620\"></a><span class=\"lineno\"> 2620</span>    cl_context _clContext;</div>\n-<div class=\"line\"><a id=\"l02621\" name=\"l02621\"></a><span class=\"lineno\"> 2621</span>    cl_command_queue _clCommandQueue;</div>\n-<div class=\"line\"><a id=\"l02622\" name=\"l02622\"></a><span class=\"lineno\"> 2622</span>    cl_program _program;</div>\n-<div class=\"line\"><a id=\"l02623\" name=\"l02623\"></a><span class=\"lineno\"> 2623</span>    cl_kernel _stencilKernel;</div>\n-<div class=\"line\"><a id=\"l02624\" name=\"l02624\"></a><span class=\"lineno\"> 2624</span>    cl_kernel _stencilDerivKernel;</div>\n-<div class=\"line\"><a id=\"l02625\" name=\"l02625\"></a><span class=\"lineno\"> 2625</span>    cl_kernel _patchKernel;</div>\n-<div class=\"line\"><a id=\"l02626\" name=\"l02626\"></a><span class=\"lineno\"> 2626</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l02627\" name=\"l02627\"></a><span class=\"lineno\"> 2627</span> </div>\n-<div class=\"line\"><a id=\"l02628\" name=\"l02628\"></a><span class=\"lineno\"> 2628</span>}  <span class=\"comment\">// end namespace Osd</span></div>\n-<div class=\"line\"><a id=\"l02629\" name=\"l02629\"></a><span class=\"lineno\"> 2629</span> </div>\n-<div class=\"line\"><a id=\"l02630\" name=\"l02630\"></a><span class=\"lineno\"> 2630</span>}  <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l02631\" name=\"l02631\"></a><span class=\"lineno\"> 2631</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l02632\" name=\"l02632\"></a><span class=\"lineno\"> 2632</span> </div>\n-<div class=\"line\"><a id=\"l02633\" name=\"l02633\"></a><span class=\"lineno\"> 2633</span>}  <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l02634\" name=\"l02634\"></a><span class=\"lineno\"> 2634</span> </div>\n-<div class=\"line\"><a id=\"l02635\" name=\"l02635\"></a><span class=\"lineno\"> 2635</span> </div>\n-<div class=\"line\"><a id=\"l02636\" name=\"l02636\"></a><span class=\"lineno\"> 2636</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_CL_EVALUATOR_H</span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa01065_html\"><div class=\"ttname\"><a href=\"a01065.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTable</a></div><div class=\"ttdoc\">Stencil table class wrapping the template for compatibility.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00273\">stencilTable.h:273</a></div></div>\n-<div class=\"ttc\" id=\"aa01081_html\"><div class=\"ttname\"><a href=\"a01081.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTable</a></div><div class=\"ttdoc\">Limit stencil table class wrapping the template for compatibility.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00583\">stencilTable.h:583</a></div></div>\n-<div class=\"ttc\" id=\"aa01141_html\"><div class=\"ttname\"><a href=\"a01141.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::BufferDescriptor</a></div><div class=\"ttdoc\">BufferDescriptor is a struct which describes buffer elements in interleaved data buffers....</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00866_source.html#l00061\">bufferDescriptor.h:61</a></div></div>\n-<div class=\"ttc\" id=\"aa01145_html\"><div class=\"ttname\"><a href=\"a01145.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLStencilTable</a></div><div class=\"ttdoc\">OpenCL stencil table.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00830_source.html#l00052\">clEvaluator.h:52</a></div></div>\n-<div class=\"ttc\" id=\"aa01145_html_a015241b43d27300535376319ae7b6dc4\"><div class=\"ttname\"><a href=\"a01145.html#a015241b43d27300535376319ae7b6dc4\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLStencilTable::GetDvvWeightsBuffer</a></div><div class=\"ttdeci\">cl_mem GetDvvWeightsBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00830_source.html#l00082\">clEvaluator.h:82</a></div></div>\n-<div class=\"ttc\" id=\"aa01145_html_a33ca6bb1dba9f8e390a58395d164431e\"><div class=\"ttname\"><a href=\"a01145.html#a33ca6bb1dba9f8e390a58395d164431e\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLStencilTable::CLStencilTable</a></div><div class=\"ttdeci\">CLStencilTable(Far::StencilTable const *stencilTable, cl_context clContext)</div></div>\n-<div class=\"ttc\" id=\"aa01145_html_a3bd38b85fd2bea1c4d2018d2f8e177a3\"><div class=\"ttname\"><a href=\"a01145.html#a3bd38b85fd2bea1c4d2018d2f8e177a3\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLStencilTable::GetOffsetsBuffer</a></div><div class=\"ttdeci\">cl_mem GetOffsetsBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00830_source.html#l00075\">clEvaluator.h:75</a></div></div>\n-<div class=\"ttc\" id=\"aa01145_html_a474edc933635aca814471b8d48950a0e\"><div class=\"ttname\"><a href=\"a01145.html#a474edc933635aca814471b8d48950a0e\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLStencilTable::Create</a></div><div class=\"ttdeci\">static CLStencilTable * Create(Far::LimitStencilTable const *limitStencilTable, DEVICE_CONTEXT context)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00830_source.html#l00061\">clEvaluator.h:61</a></div></div>\n-<div class=\"ttc\" id=\"aa01145_html_a5cbc4ec76e497871b20b4ef91f5f054f\"><div class=\"ttname\"><a href=\"a01145.html#a5cbc4ec76e497871b20b4ef91f5f054f\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLStencilTable::GetIndicesBuffer</a></div><div class=\"ttdeci\">cl_mem GetIndicesBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00830_source.html#l00076\">clEvaluator.h:76</a></div></div>\n-<div class=\"ttc\" id=\"aa01145_html_a65836d2070b943c8fecbad926d074de2\"><div class=\"ttname\"><a href=\"a01145.html#a65836d2070b943c8fecbad926d074de2\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLStencilTable::GetNumStencils</a></div><div class=\"ttdeci\">int GetNumStencils() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00830_source.html#l00083\">clEvaluator.h:83</a></div></div>\n-<div class=\"ttc\" id=\"aa01145_html_a65e52572efdebb80844185aada8d5951\"><div class=\"ttname\"><a href=\"a01145.html#a65e52572efdebb80844185aada8d5951\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLStencilTable::GetSizesBuffer</a></div><div class=\"ttdeci\">cl_mem GetSizesBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00830_source.html#l00074\">clEvaluator.h:74</a></div></div>\n-<div class=\"ttc\" id=\"aa01145_html_a9a1d122f4bea431331fa542cf6dee1f6\"><div class=\"ttname\"><a href=\"a01145.html#a9a1d122f4bea431331fa542cf6dee1f6\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLStencilTable::GetDuuWeightsBuffer</a></div><div class=\"ttdeci\">cl_mem GetDuuWeightsBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00830_source.html#l00080\">clEvaluator.h:80</a></div></div>\n-<div class=\"ttc\" id=\"aa01145_html_aa1550324554767683ae2bf0317e6bad6\"><div class=\"ttname\"><a href=\"a01145.html#aa1550324554767683ae2bf0317e6bad6\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLStencilTable::GetDvWeightsBuffer</a></div><div class=\"ttdeci\">cl_mem GetDvWeightsBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00830_source.html#l00079\">clEvaluator.h:79</a></div></div>\n-<div class=\"ttc\" id=\"aa01145_html_aa79d14d151020f9298c742c3072e7fc9\"><div class=\"ttname\"><a href=\"a01145.html#aa79d14d151020f9298c742c3072e7fc9\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLStencilTable::GetDuvWeightsBuffer</a></div><div class=\"ttdeci\">cl_mem GetDuvWeightsBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00830_source.html#l00081\">clEvaluator.h:81</a></div></div>\n-<div class=\"ttc\" id=\"aa01145_html_aab6c794e109053815894e2314f05564b\"><div class=\"ttname\"><a href=\"a01145.html#aab6c794e109053815894e2314f05564b\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLStencilTable::GetDuWeightsBuffer</a></div><div class=\"ttdeci\">cl_mem GetDuWeightsBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00830_source.html#l00078\">clEvaluator.h:78</a></div></div>\n-<div class=\"ttc\" id=\"aa01145_html_ab84d9750ece4e75ae7a51e7d912df82b\"><div class=\"ttname\"><a href=\"a01145.html#ab84d9750ece4e75ae7a51e7d912df82b\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLStencilTable::~CLStencilTable</a></div><div class=\"ttdeci\">~CLStencilTable()</div></div>\n-<div class=\"ttc\" id=\"aa01145_html_ad4e05c20d99b64b2160c1a0c96cb0c01\"><div class=\"ttname\"><a href=\"a01145.html#ad4e05c20d99b64b2160c1a0c96cb0c01\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLStencilTable::Create</a></div><div class=\"ttdeci\">static CLStencilTable * Create(Far::StencilTable const *stencilTable, DEVICE_CONTEXT context)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00830_source.html#l00055\">clEvaluator.h:55</a></div></div>\n-<div class=\"ttc\" id=\"aa01145_html_af2994e79cf93c872e39659321750351a\"><div class=\"ttname\"><a href=\"a01145.html#af2994e79cf93c872e39659321750351a\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLStencilTable::CLStencilTable</a></div><div class=\"ttdeci\">CLStencilTable(Far::LimitStencilTable const *limitStencilTable, cl_context clContext)</div></div>\n-<div class=\"ttc\" id=\"aa01145_html_af37e0ab1fae60f201db4eb21ff7e941e\"><div class=\"ttname\"><a href=\"a01145.html#af37e0ab1fae60f201db4eb21ff7e941e\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLStencilTable::GetWeightsBuffer</a></div><div class=\"ttdeci\">cl_mem GetWeightsBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00830_source.html#l00077\">clEvaluator.h:77</a></div></div>\n-<div class=\"ttc\" id=\"aa01149_html\"><div class=\"ttname\"><a href=\"a01149.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00830_source.html#l00100\">clEvaluator.h:100</a></div></div>\n-<div class=\"ttc\" id=\"aa01149_html_a035ab75e105567802674d86736e0959a\"><div class=\"ttname\"><a href=\"a01149.html#a035ab75e105567802674d86736e0959a\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, STENCIL_TABLE const *stencilTable, CLEvaluator const *instance, DEVICE_CONTEXT deviceContext, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL)</div><div class=\"ttdoc\">Generic static stencil function. This function has a same signature as other device kernels have so t...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00830_source.html#l00309\">clEvaluator.h:309</a></div></div>\n-<div class=\"ttc\" id=\"aa01149_html_a0529a707250f9931f945ec49d4e428d2\"><div class=\"ttname\"><a href=\"a01149.html#a0529a707250f9931f945ec49d4e428d2\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::Synchronize</a></div><div class=\"ttdeci\">static void Synchronize(cl_command_queue queue)</div></div>\n-<div class=\"ttc\" id=\"aa01149_html_a0852475f515ff2419bea208c2783742b\"><div class=\"ttname\"><a href=\"a01149.html#a0852475f515ff2419bea208c2783742b\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::~CLEvaluator</a></div><div class=\"ttdeci\">~CLEvaluator()</div><div class=\"ttdoc\">Destructor.</div></div>\n-<div class=\"ttc\" id=\"aa01149_html_a09c5fcdc9e1230c625d3205008d41c08\"><div class=\"ttname\"><a href=\"a01149.html#a09c5fcdc9e1230c625d3205008d41c08\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::EvalStencils</a></div><div class=\"ttdeci\">bool EvalStencils(cl_mem src, BufferDescriptor const &amp;srcDesc, cl_mem dst, BufferDescriptor const &amp;dstDesc, cl_mem du, BufferDescriptor const &amp;duDesc, cl_mem dv, BufferDescriptor const &amp;dvDesc, cl_mem sizes, cl_mem offsets, cl_mem indices, cl_mem weights, cl_mem duWeights, cl_mem dvWeights, int start, int end, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL) const</div><div class=\"ttdoc\">Dispatch the CL compute kernel asynchronously. returns false if the kernel hasn't been compiled yet.</div></div>\n-<div class=\"ttc\" id=\"aa01149_html_a0f2d760bbb9a4ea58eaf6e2806d033ca\"><div class=\"ttname\"><a href=\"a01149.html#a0f2d760bbb9a4ea58eaf6e2806d033ca\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, STENCIL_TABLE const *stencilTable, CLEvaluator const *instance, DEVICE_CONTEXT deviceContext, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL)</div><div class=\"ttdoc\">Generic static stencil function. This function has a same signature as other device kernels have so t...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00830_source.html#l00219\">clEvaluator.h:219</a></div></div>\n-<div class=\"ttc\" id=\"aa01149_html_a1243e4560da0f71a3dcd290772548d98\"><div class=\"ttname\"><a href=\"a01149.html#a1243e4560da0f71a3dcd290772548d98\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::Create</a></div><div class=\"ttdeci\">static CLEvaluator * Create(BufferDescriptor const &amp;srcDesc, BufferDescriptor const &amp;dstDesc, BufferDescriptor const &amp;duDesc, BufferDescriptor const &amp;dvDesc, cl_context clContext, cl_command_queue clCommandQueue)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00830_source.html#l00116\">clEvaluator.h:116</a></div></div>\n-<div class=\"ttc\" id=\"aa01149_html_a1f66ce14f335d4a575fc95365bf811d9\"><div class=\"ttname\"><a href=\"a01149.html#a1f66ce14f335d4a575fc95365bf811d9\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel, CLEvaluator const *instance, DEVICE_CONTEXT deviceContext, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00830_source.html#l02231\">clEvaluator.h:2231</a></div></div>\n-<div class=\"ttc\" id=\"aa01149_html_a22187001e33f98dc3195caab9968f1f0\"><div class=\"ttname\"><a href=\"a01149.html#a22187001e33f98dc3195caab9968f1f0\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::EvalPatches</a></div><div class=\"ttdeci\">bool EvalPatches(cl_mem src, BufferDescriptor const &amp;srcDesc, cl_mem dst, BufferDescriptor const &amp;dstDesc, cl_mem du, BufferDescriptor const &amp;duDesc, cl_mem dv, BufferDescriptor const &amp;dvDesc, int numPatchCoords, cl_mem patchCoordsBuffer, cl_mem patchArrayBuffer, cl_mem patchIndexBuffer, cl_mem patchParamsBuffer, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL) const</div></div>\n-<div class=\"ttc\" id=\"aa01149_html_a222342a2581dc8a6366a16589b316959\"><div class=\"ttname\"><a href=\"a01149.html#a222342a2581dc8a6366a16589b316959\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL) const</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00830_source.html#l01978\">clEvaluator.h:1978</a></div></div>\n-<div class=\"ttc\" id=\"aa01149_html_a26fd58275b838dbf0da96410269a41ef\"><div class=\"ttname\"><a href=\"a01149.html#a26fd58275b838dbf0da96410269a41ef\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::EvalStencils</a></div><div class=\"ttdeci\">bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, STENCIL_TABLE const *stencilTable, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL) const</div><div class=\"ttdoc\">Generic stencil function.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00830_source.html#l00561\">clEvaluator.h:561</a></div></div>\n-<div class=\"ttc\" id=\"aa01149_html_a28ceea444575e321b0e98cb33fd0ed61\"><div class=\"ttname\"><a href=\"a01149.html#a28ceea444575e321b0e98cb33fd0ed61\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::EvalPatches</a></div><div class=\"ttdeci\">bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL) const</div><div class=\"ttdoc\">Generic limit eval function with derivatives. This function has a same signature as other device kern...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00830_source.html#l01379\">clEvaluator.h:1379</a></div></div>\n-<div class=\"ttc\" id=\"aa01149_html_a2c24b70c9312d8dff3fecb9ddea52c44\"><div class=\"ttname\"><a href=\"a01149.html#a2c24b70c9312d8dff3fecb9ddea52c44\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::Instantiatable</a></div><div class=\"ttdeci\">bool Instantiatable</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00830_source.html#l00102\">clEvaluator.h:102</a></div></div>\n-<div class=\"ttc\" id=\"aa01149_html_a3a2faa1170cedd851fea7266e0ff7eda\"><div class=\"ttname\"><a href=\"a01149.html#a3a2faa1170cedd851fea7266e0ff7eda\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::Create</a></div><div class=\"ttdeci\">static CLEvaluator * Create(BufferDescriptor const &amp;srcDesc, BufferDescriptor const &amp;dstDesc, BufferDescriptor const &amp;duDesc, BufferDescriptor const &amp;dvDesc, DEVICE_CONTEXT deviceContext)</div><div class=\"ttdoc\">Generic creator template.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00830_source.html#l00106\">clEvaluator.h:106</a></div></div>\n-<div class=\"ttc\" id=\"aa01149_html_a4306bdafdbba79ec4c659b9743701955\"><div class=\"ttname\"><a href=\"a01149.html#a4306bdafdbba79ec4c659b9743701955\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel, CLEvaluator const *instance, DEVICE_CONTEXT deviceContext, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00830_source.html#l02061\">clEvaluator.h:2061</a></div></div>\n-<div class=\"ttc\" id=\"aa01149_html_a49cef5f95d8dec6c11fc1dd62dcd7045\"><div class=\"ttname\"><a href=\"a01149.html#a49cef5f95d8dec6c11fc1dd62dcd7045\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::Create</a></div><div class=\"ttdeci\">static CLEvaluator * Create(BufferDescriptor const &amp;srcDesc, BufferDescriptor const &amp;dstDesc, BufferDescriptor const &amp;duDesc, BufferDescriptor const &amp;dvDesc, BufferDescriptor const &amp;duuDesc, BufferDescriptor const &amp;duvDesc, BufferDescriptor const &amp;dvvDesc, DEVICE_CONTEXT deviceContext)</div><div class=\"ttdoc\">Generic creator template.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00830_source.html#l00131\">clEvaluator.h:131</a></div></div>\n-<div class=\"ttc\" id=\"aa01149_html_a4d6d90d5c4b0237cbeab58062dbdf5c8\"><div class=\"ttname\"><a href=\"a01149.html#a4d6d90d5c4b0237cbeab58062dbdf5c8\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::EvalPatches</a></div><div class=\"ttdeci\">bool EvalPatches(cl_mem src, BufferDescriptor const &amp;srcDesc, cl_mem dst, BufferDescriptor const &amp;dstDesc, cl_mem du, BufferDescriptor const &amp;duDesc, cl_mem dv, BufferDescriptor const &amp;dvDesc, cl_mem duu, BufferDescriptor const &amp;duuDesc, cl_mem duv, BufferDescriptor const &amp;duvDesc, cl_mem dvv, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, cl_mem patchCoordsBuffer, cl_mem patchArrayBuffer, cl_mem patchIndexBuffer, cl_mem patchParamsBuffer, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL) const</div></div>\n-<div class=\"ttc\" id=\"aa01149_html_a5d554da3e958f90c0c39296029b69c4e\"><div class=\"ttname\"><a href=\"a01149.html#a5d554da3e958f90c0c39296029b69c4e\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::EvalStencils</a></div><div class=\"ttdeci\">bool EvalStencils(cl_mem src, BufferDescriptor const &amp;srcDesc, cl_mem dst, BufferDescriptor const &amp;dstDesc, cl_mem du, BufferDescriptor const &amp;duDesc, cl_mem dv, BufferDescriptor const &amp;dvDesc, cl_mem duu, BufferDescriptor const &amp;duuDesc, cl_mem duv, BufferDescriptor const &amp;duvDesc, cl_mem dvv, BufferDescriptor const &amp;dvvDesc, cl_mem sizes, cl_mem offsets, cl_mem indices, cl_mem weights, cl_mem duWeights, cl_mem dvWeights, cl_mem duuWeights, cl_mem duvWeights, cl_mem dvvWeights, int start, int end, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL) const</div><div class=\"ttdoc\">Dispatch the CL compute kernel asynchronously. returns false if the kernel hasn't been compiled yet.</div></div>\n-<div class=\"ttc\" id=\"aa01149_html_a67b59f584f05e87e91b371cb3744f137\"><div class=\"ttname\"><a href=\"a01149.html#a67b59f584f05e87e91b371cb3744f137\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel=0, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL) const</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00830_source.html#l02564\">clEvaluator.h:2564</a></div></div>\n-<div class=\"ttc\" id=\"aa01149_html_a7053fc9101b3f27878eb21c1d96a6421\"><div class=\"ttname\"><a href=\"a01149.html#a7053fc9101b3f27878eb21c1d96a6421\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::EvalPatches</a></div><div class=\"ttdeci\">bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL) const</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00830_source.html#l01217\">clEvaluator.h:1217</a></div></div>\n-<div class=\"ttc\" id=\"aa01149_html_a74b2f41060f4bc17f3522444d30126b6\"><div class=\"ttname\"><a href=\"a01149.html#a74b2f41060f4bc17f3522444d30126b6\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::EvalStencils</a></div><div class=\"ttdeci\">bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, STENCIL_TABLE const *stencilTable, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL) const</div><div class=\"ttdoc\">Generic stencil function.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00830_source.html#l00646\">clEvaluator.h:646</a></div></div>\n-<div class=\"ttc\" id=\"aa01149_html_a7676de92e41c1e04e85f097f3d6d931e\"><div class=\"ttname\"><a href=\"a01149.html#a7676de92e41c1e04e85f097f3d6d931e\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, CLEvaluator const *instance, DEVICE_CONTEXT deviceContext, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00830_source.html#l01653\">clEvaluator.h:1653</a></div></div>\n-<div class=\"ttc\" id=\"aa01149_html_a7e77f811e9d48160701e705bb4300388\"><div class=\"ttname\"><a href=\"a01149.html#a7e77f811e9d48160701e705bb4300388\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::Synchronize</a></div><div class=\"ttdeci\">static void Synchronize(DEVICE_CONTEXT deviceContext)</div><div class=\"ttdoc\">Wait the OpenCL kernels finish.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00830_source.html#l02613\">clEvaluator.h:2613</a></div></div>\n-<div class=\"ttc\" id=\"aa01149_html_a7fc185c4d801f80736021470b10e0ebd\"><div class=\"ttname\"><a href=\"a01149.html#a7fc185c4d801f80736021470b10e0ebd\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, CLEvaluator const *instance, DEVICE_CONTEXT deviceContext, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00830_source.html#l01125\">clEvaluator.h:1125</a></div></div>\n-<div class=\"ttc\" id=\"aa01149_html_a804e77ddd54d0d006f2274d0450cca6b\"><div class=\"ttname\"><a href=\"a01149.html#a804e77ddd54d0d006f2274d0450cca6b\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, STENCIL_TABLE const *stencilTable, CLEvaluator const *instance, DEVICE_CONTEXT deviceContext, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL)</div><div class=\"ttdoc\">Generic static stencil function. This function has a same signature as other device kernels have so t...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00830_source.html#l00421\">clEvaluator.h:421</a></div></div>\n-<div class=\"ttc\" id=\"aa01149_html_a81c2668b311eec00fd35e1451e7132b7\"><div class=\"ttname\"><a href=\"a01149.html#a81c2668b311eec00fd35e1451e7132b7\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::EvalStencils</a></div><div class=\"ttdeci\">bool EvalStencils(cl_mem src, BufferDescriptor const &amp;srcDesc, cl_mem dst, BufferDescriptor const &amp;dstDesc, cl_mem sizes, cl_mem offsets, cl_mem indices, cl_mem weights, int start, int end, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL) const</div></div>\n-<div class=\"ttc\" id=\"aa01149_html_a927d8aae868323d5208b1e95c2591ad1\"><div class=\"ttname\"><a href=\"a01149.html#a927d8aae868323d5208b1e95c2591ad1\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, CLEvaluator const *instance, DEVICE_CONTEXT deviceContext, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00830_source.html#l01489\">clEvaluator.h:1489</a></div></div>\n-<div class=\"ttc\" id=\"aa01149_html_aa479c7900943eed61feede277083eb08\"><div class=\"ttname\"><a href=\"a01149.html#aa479c7900943eed61feede277083eb08\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel=0, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL) const</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00830_source.html#l02329\">clEvaluator.h:2329</a></div></div>\n-<div class=\"ttc\" id=\"aa01149_html_aa55b9dc6ee02d2a3beb2f85df1794afb\"><div class=\"ttname\"><a href=\"a01149.html#aa55b9dc6ee02d2a3beb2f85df1794afb\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel, CLEvaluator const *instance, DEVICE_CONTEXT deviceContext, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00830_source.html#l02437\">clEvaluator.h:2437</a></div></div>\n-<div class=\"ttc\" id=\"aa01149_html_aae831ff91b8da1852052d65ffc032ff9\"><div class=\"ttname\"><a href=\"a01149.html#aae831ff91b8da1852052d65ffc032ff9\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::Create</a></div><div class=\"ttdeci\">static CLEvaluator * Create(BufferDescriptor const &amp;srcDesc, BufferDescriptor const &amp;dstDesc, BufferDescriptor const &amp;duDesc, BufferDescriptor const &amp;dvDesc, BufferDescriptor const &amp;duuDesc, BufferDescriptor const &amp;duvDesc, BufferDescriptor const &amp;dvvDesc, cl_context clContext, cl_command_queue clCommandQueue)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00830_source.html#l00145\">clEvaluator.h:145</a></div></div>\n-<div class=\"ttc\" id=\"aa01149_html_ab011f671d8598811f0ed39a28616f908\"><div class=\"ttname\"><a href=\"a01149.html#ab011f671d8598811f0ed39a28616f908\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, CLEvaluator const *instance, DEVICE_CONTEXT deviceContext, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00830_source.html#l01003\">clEvaluator.h:1003</a></div></div>\n-<div class=\"ttc\" id=\"aa01149_html_ab2a20bb6b2533aba43bd534e43e7dcac\"><div class=\"ttname\"><a href=\"a01149.html#ab2a20bb6b2533aba43bd534e43e7dcac\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL) const</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00830_source.html#l01749\">clEvaluator.h:1749</a></div></div>\n-<div class=\"ttc\" id=\"aa01149_html_ab5cae7e895f2efe955b27ae3dafccfd2\"><div class=\"ttname\"><a href=\"a01149.html#ab5cae7e895f2efe955b27ae3dafccfd2\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, CLEvaluator const *instance, DEVICE_CONTEXT deviceContext, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00830_source.html#l00902\">clEvaluator.h:902</a></div></div>\n-<div class=\"ttc\" id=\"aa01149_html_ac15f843a06ecca29a922132ab59e3890\"><div class=\"ttname\"><a href=\"a01149.html#ac15f843a06ecca29a922132ab59e3890\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL) const</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00830_source.html#l01568\">clEvaluator.h:1568</a></div></div>\n-<div class=\"ttc\" id=\"aa01149_html_ac81e120ca5b078e6563f78e7726e3c40\"><div class=\"ttname\"><a href=\"a01149.html#ac81e120ca5b078e6563f78e7726e3c40\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, CLEvaluator const *instance, DEVICE_CONTEXT deviceContext, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00830_source.html#l01854\">clEvaluator.h:1854</a></div></div>\n-<div class=\"ttc\" id=\"aa01149_html_ac9a39efadbe573a03ffe5971586f72e8\"><div class=\"ttname\"><a href=\"a01149.html#ac9a39efadbe573a03ffe5971586f72e8\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::EvalStencils</a></div><div class=\"ttdeci\">bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, STENCIL_TABLE const *stencilTable, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL) const</div><div class=\"ttdoc\">Generic stencil function.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00830_source.html#l00500\">clEvaluator.h:500</a></div></div>\n-<div class=\"ttc\" id=\"aa01149_html_ad62bdcb72a8d878f80a6e6a53abebccd\"><div class=\"ttname\"><a href=\"a01149.html#ad62bdcb72a8d878f80a6e6a53abebccd\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::EvalPatches</a></div><div class=\"ttdeci\">bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL) const</div><div class=\"ttdoc\">Generic limit eval function with derivatives. This function has a same signature as other device kern...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00830_source.html#l01288\">clEvaluator.h:1288</a></div></div>\n-<div class=\"ttc\" id=\"aa01149_html_adbb0aafb7db3284f164499e8007c4cac\"><div class=\"ttname\"><a href=\"a01149.html#adbb0aafb7db3284f164499e8007c4cac\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::CLEvaluator</a></div><div class=\"ttdeci\">CLEvaluator(cl_context context, cl_command_queue queue)</div><div class=\"ttdoc\">Constructor.</div></div>\n-<div class=\"ttc\" id=\"aa01149_html_ade1086349c1a452f60bcf281383ceec2\"><div class=\"ttname\"><a href=\"a01149.html#ade1086349c1a452f60bcf281383ceec2\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::Compile</a></div><div class=\"ttdeci\">bool Compile(BufferDescriptor const &amp;srcDesc, BufferDescriptor const &amp;dstDesc, BufferDescriptor const &amp;duDesc=BufferDescriptor(), BufferDescriptor const &amp;dvDesc=BufferDescriptor(), BufferDescriptor const &amp;duuDesc=BufferDescriptor(), BufferDescriptor const &amp;duvDesc=BufferDescriptor(), BufferDescriptor const &amp;dvvDesc=BufferDescriptor())</div></div>\n-<div class=\"ttc\" id=\"aa01149_html_afadb249fa0e871eead60821dff48d73c\"><div class=\"ttname\"><a href=\"a01149.html#afadb249fa0e871eead60821dff48d73c\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel=0, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL) const</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00830_source.html#l02143\">clEvaluator.h:2143</a></div></div>\n+<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\">  145</span>    <span class=\"keywordtype\">int</span> uHalf = (u &gt;= median);</div>\n+<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\">  146</span>    <span class=\"keywordflow\">if</span> (uHalf) u -= median;</div>\n+<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\">  147</span> </div>\n+<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\">  148</span>    <span class=\"keywordtype\">int</span> vHalf = (v &gt;= median);</div>\n+<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\">  149</span>    <span class=\"keywordflow\">if</span> (vHalf) v -= median;</div>\n+<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\">  150</span> </div>\n+<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\">  151</span>    <span class=\"keywordflow\">return</span> (vHalf &lt;&lt; 1) | uHalf;</div>\n+<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\">  152</span>}</div>\n+<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\">  153</span>    </div>\n+<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\">  154</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T&gt;</div>\n+<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\">  155</span><span class=\"keywordtype\">int</span> <span class=\"keyword\">inline</span></div>\n+<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\">  156</span>PatchMap::transformUVToTriQuadrant(T <span class=\"keyword\">const</span> &amp; median, T &amp; u, T &amp; v, <span class=\"keywordtype\">bool</span> &amp; rotated) {</div>\n+<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\">  157</span>    </div>\n+<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\">  158</span>    <span class=\"keywordflow\">if</span> (!rotated) {</div>\n+<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\">  159</span>        <span class=\"keywordflow\">if</span> (u &gt;= median) {</div>\n+<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\">  160</span>            u -= median;</div>\n+<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\">  161</span>            <span class=\"keywordflow\">return</span> 1;</div>\n+<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\">  162</span>        }</div>\n+<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\">  163</span>        <span class=\"keywordflow\">if</span> (v &gt;= median) {</div>\n+<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\">  164</span>            v -= median;</div>\n+<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\">  165</span>            <span class=\"keywordflow\">return</span> 2;</div>\n+<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\">  166</span>        }</div>\n+<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\">  167</span>        <span class=\"keywordflow\">if</span> ((u + v) &gt;= median) {</div>\n+<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\">  168</span>            rotated = <span class=\"keyword\">true</span>;</div>\n+<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\">  169</span>            <span class=\"keywordflow\">return</span> 3;</div>\n+<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\">  170</span>        }</div>\n+<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span>        <span class=\"keywordflow\">return</span> 0;</div>\n+<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\">  172</span>    } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\">  173</span>        <span class=\"keywordflow\">if</span> (u &lt; median) {</div>\n+<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\">  174</span>            v -= median;</div>\n+<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\">  175</span>            <span class=\"keywordflow\">return</span> 1;</div>\n+<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\">  176</span>        }</div>\n+<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span>        <span class=\"keywordflow\">if</span> (v &lt; median) {</div>\n+<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\">  178</span>            u -= median;</div>\n+<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\">  179</span>            <span class=\"keywordflow\">return</span> 2;</div>\n+<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\">  180</span>        }</div>\n+<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\">  181</span>        u -= median;</div>\n+<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\">  182</span>        v -= median;</div>\n+<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\">  183</span>        <span class=\"keywordflow\">if</span> ((u + v) &lt; median) {</div>\n+<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\">  184</span>            rotated = <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\">  185</span>            <span class=\"keywordflow\">return</span> 3;</div>\n+<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\">  186</span>        }</div>\n+<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\">  187</span>        <span class=\"keywordflow\">return</span> 0;</div>\n+<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\">  188</span>    }</div>\n+<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\">  189</span>}</div>\n+<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\">  190</span> </div>\n+<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\">  192</span><span class=\"keyword\">inline</span> <a class=\"code hl_typedef\" href=\"a00977.html#ae83a6047fa1e373c7943d54b6dc46402\">PatchMap::Handle</a> <span class=\"keyword\">const</span> *</div>\n+<div class=\"foldopen\" id=\"foldopen00193\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00977.html#abc70f9419d5f26ef85cbef5c5b6451f0\">  193</a></span><a class=\"code hl_function\" href=\"a00977.html#abc70f9419d5f26ef85cbef5c5b6451f0\">PatchMap::FindPatch</a>( <span class=\"keywordtype\">int</span> faceid, <span class=\"keywordtype\">double</span> u, <span class=\"keywordtype\">double</span> v )<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\">  194</span> </div>\n+<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\">  195</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\">  196</span>    <span class=\"comment\">//  Reject patch faces not supported by this map, or those corresponding</span></div>\n+<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\">  197</span>    <span class=\"comment\">//  to holes or otherwise unassigned (the root node for a patch will</span></div>\n+<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\">  198</span>    <span class=\"comment\">//  have all or no quadrants set):</span></div>\n+<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\">  199</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\">  200</span>    <span class=\"keywordflow\">if</span> ((faceid &lt; _minPatchFace) || (faceid &gt; _maxPatchFace)) <span class=\"keywordflow\">return</span> 0;</div>\n+<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\">  201</span> </div>\n+<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\">  202</span>    QuadNode <span class=\"keyword\">const</span> * node = &amp;_quadtree[faceid - _minPatchFace];</div>\n+<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\">  203</span> </div>\n+<div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\">  204</span>    <span class=\"keywordflow\">if</span> (!node-&gt;children[0].isSet) <span class=\"keywordflow\">return</span> 0;</div>\n+<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\">  205</span> </div>\n+<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\">  206</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\">  207</span>    <span class=\"comment\">//  Search the tree for the sub-patch containing the given (u,v)</span></div>\n+<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\">  208</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\">  209</span>    assert( (u&gt;=0.0) &amp;&amp; (u&lt;=1.0) &amp;&amp; (v&gt;=0.0) &amp;&amp; (v&lt;=1.0) );</div>\n+<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\">  210</span> </div>\n+<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\">  211</span>    <span class=\"keywordtype\">double</span> median = 0.5;</div>\n+<div class=\"line\"><a id=\"l00212\" name=\"l00212\"></a><span class=\"lineno\">  212</span>    <span class=\"keywordtype\">bool</span> triRotated = <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\">  213</span> </div>\n+<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\">  214</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> depth = 0; depth &lt;= _maxDepth; ++depth, median *= 0.5) {</div>\n+<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\">  215</span> </div>\n+<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\">  216</span>        <span class=\"keywordtype\">int</span> quadrant = _patchesAreTriangular</div>\n+<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\">  217</span>                     ? transformUVToTriQuadrant(median, u, v, triRotated)</div>\n+<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\">  218</span>                     : transformUVToQuadQuadrant(median, u, v);</div>\n+<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\">  219</span> </div>\n+<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\">  220</span>        <span class=\"comment\">//  holes should have been rejected at the root node of the face</span></div>\n+<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\">  221</span>        assert(node-&gt;children[quadrant].isSet);</div>\n+<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\">  222</span> </div>\n+<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\">  223</span>        <span class=\"keywordflow\">if</span> (node-&gt;children[quadrant].isLeaf) {</div>\n+<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\">  224</span>            <span class=\"keywordflow\">return</span> &amp;_handles[node-&gt;children[quadrant].index];</div>\n+<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\">  225</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\">  226</span>            node = &amp;_quadtree[node-&gt;children[quadrant].index];</div>\n+<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\">  227</span>        }</div>\n+<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\">  228</span>    }</div>\n+<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\">  229</span>    assert(0);</div>\n+<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\">  230</span>    <span class=\"keywordflow\">return</span> 0;</div>\n+<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\">  231</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\">  232</span> </div>\n+<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\">  233</span>} <span class=\"comment\">// end namespace Far</span></div>\n+<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\">  234</span> </div>\n+<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\">  235</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\">  236</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\">  237</span> </div>\n+<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\">  238</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\">  239</span> </div>\n+<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\">  240</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_FAR_PATCH_PARAM */</span><span class=\"preprocessor\"></span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa00977_html\"><div class=\"ttname\"><a href=\"a00977.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchMap</a></div><div class=\"ttdoc\">An quadtree-based map connecting coarse faces to their sub-patches.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00830_source.html#l00049\">patchMap.h:49</a></div></div>\n+<div class=\"ttc\" id=\"aa00977_html_a016619de52fd79dbcdb879cc12b79200\"><div class=\"ttname\"><a href=\"a00977.html#a016619de52fd79dbcdb879cc12b79200\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchMap::PatchMap</a></div><div class=\"ttdeci\">PatchMap(PatchTable const &amp;patchTable)</div><div class=\"ttdoc\">Constructor.</div></div>\n+<div class=\"ttc\" id=\"aa00977_html_abc70f9419d5f26ef85cbef5c5b6451f0\"><div class=\"ttname\"><a href=\"a00977.html#abc70f9419d5f26ef85cbef5c5b6451f0\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchMap::FindPatch</a></div><div class=\"ttdeci\">Handle const * FindPatch(int patchFaceId, double u, double v) const</div><div class=\"ttdoc\">Returns a handle to the sub-patch of the face at the given (u,v). Note that the patch face ID corresp...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00830_source.html#l00193\">patchMap.h:193</a></div></div>\n+<div class=\"ttc\" id=\"aa00977_html_ae83a6047fa1e373c7943d54b6dc46402\"><div class=\"ttname\"><a href=\"a00977.html#ae83a6047fa1e373c7943d54b6dc46402\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchMap::Handle</a></div><div class=\"ttdeci\">PatchTable::PatchHandle Handle</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00830_source.html#l00052\">patchMap.h:52</a></div></div>\n+<div class=\"ttc\" id=\"aa00985_html\"><div class=\"ttname\"><a href=\"a00985.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchMap::QuadNode::Child</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00830_source.html#l00085\">patchMap.h:85</a></div></div>\n+<div class=\"ttc\" id=\"aa00985_html_a07e7a9f4469398070886a336d833daa9\"><div class=\"ttname\"><a href=\"a00985.html#a07e7a9f4469398070886a336d833daa9\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchMap::QuadNode::Child::isLeaf</a></div><div class=\"ttdeci\">unsigned int isLeaf</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00830_source.html#l00087\">patchMap.h:87</a></div></div>\n+<div class=\"ttc\" id=\"aa00985_html_a589d64202487f78e3cc30dd2e04c5201\"><div class=\"ttname\"><a href=\"a00985.html#a589d64202487f78e3cc30dd2e04c5201\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchMap::QuadNode::Child::index</a></div><div class=\"ttdeci\">unsigned int index</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00830_source.html#l00088\">patchMap.h:88</a></div></div>\n+<div class=\"ttc\" id=\"aa00985_html_ad3e71fff03a23f93fef41adc5d367435\"><div class=\"ttname\"><a href=\"a00985.html#ad3e71fff03a23f93fef41adc5d367435\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchMap::QuadNode::Child::isSet</a></div><div class=\"ttdeci\">unsigned int isSet</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00830_source.html#l00086\">patchMap.h:86</a></div></div>\n+<div class=\"ttc\" id=\"aa00993_html\"><div class=\"ttname\"><a href=\"a00993.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable</a></div><div class=\"ttdoc\">Container for arrays of parametric patches.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00842_source.html#l00055\">patchTable.h:55</a></div></div>\n+<div class=\"ttc\" id=\"aa00997_html\"><div class=\"ttname\"><a href=\"a00997.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::PatchHandle</a></div><div class=\"ttdoc\">Handle that can be used as unique patch identifier within PatchTable.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00842_source.html#l00060\">patchTable.h:60</a></div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00830.html\">clEvaluator.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7f420b72a822828cfa8b0561c695a5cc.html\">far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00830.html\">patchMap.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-clEvaluator.h\n+patchMap.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2015 Pixar\n+2// Copyright 2013 Pixar\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -24,1553 +24,238 @@\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n 24\n-25#ifndef OPENSUBDIV3_OSD_CL_EVALUATOR_H\n-26#define OPENSUBDIV3_OSD_CL_EVALUATOR_H\n+25#ifndef OPENSUBDIV3_FAR_PATCH_MAP_H\n+26#define OPENSUBDIV3_FAR_PATCH_MAP_H\n 27\n 28#include \"../version.h\"\n 29\n-30#include \"../osd/opencl.h\"\n-31#include \"../osd/types.h\"\n-32#include \"../osd/bufferDescriptor.h\"\n+30#include \"../far/patchTable.h\"\n+31\n+32#include <cassert>\n 33\n 34namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n 35namespace OPENSUBDIV_VERSION {\n 36\n 37namespace Far {\n-38 class PatchTable;\n-39 class StencilTable;\n-40 class LimitStencilTable;\n-41}\n-42\n-43namespace Osd {\n-44\n-_\b5_\b2class _\bC_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be {\n-53public:\n-54 template <typename DEVICE_CONTEXT>\n-_\b5_\b5 static _\bC_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be *_\bC_\br_\be_\ba_\bt_\be(_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *stencilTable,\n-56 DEVICE_CONTEXT context) {\n-57 return new _\bC_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(stencilTable, context->GetContext());\n-58 }\n+38\n+_\b4_\b9class _\bP_\ba_\bt_\bc_\bh_\bM_\ba_\bp {\n+50public:\n+51\n+_\b5_\b2 typedef _\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be _\bH_\ba_\bn_\bd_\bl_\be;\n+53\n+_\b5_\b8 _\bP_\ba_\bt_\bc_\bh_\bM_\ba_\bp( _\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be const & patchTable );\n 59\n-60 template <typename DEVICE_CONTEXT>\n-_\b6_\b1 static _\bC_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be *_\bC_\br_\be_\ba_\bt_\be(\n-62 _\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *limitStencilTable,\n-63 DEVICE_CONTEXT context) {\n-64 return new _\bC_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(limitStencilTable, context->GetContext());\n-65 }\n-66\n-_\b6_\b7 _\bC_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *stencilTable,\n-68 cl_context clContext);\n-_\b6_\b9 _\bC_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *limitStencilTable,\n-70 cl_context clContext);\n-_\b7_\b1 _\b~_\bC_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be();\n-72\n-73 // interfaces needed for CLComputeKernel\n-_\b7_\b4 cl_mem _\bG_\be_\bt_\bS_\bi_\bz_\be_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _sizes; }\n-_\b7_\b5 cl_mem _\bG_\be_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _offsets; }\n-_\b7_\b6 cl_mem _\bG_\be_\bt_\bI_\bn_\bd_\bi_\bc_\be_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _indices; }\n-_\b7_\b7 cl_mem _\bG_\be_\bt_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _weights; }\n-_\b7_\b8 cl_mem _\bG_\be_\bt_\bD_\bu_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _duWeights; }\n-_\b7_\b9 cl_mem _\bG_\be_\bt_\bD_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _dvWeights; }\n-_\b8_\b0 cl_mem _\bG_\be_\bt_\bD_\bu_\bu_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _duuWeights; }\n-_\b8_\b1 cl_mem _\bG_\be_\bt_\bD_\bu_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _duvWeights; }\n-_\b8_\b2 cl_mem _\bG_\be_\bt_\bD_\bv_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _dvvWeights; }\n-_\b8_\b3 int _\bG_\be_\bt_\bN_\bu_\bm_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs() const { return _numStencils; }\n+74 _\bH_\ba_\bn_\bd_\bl_\be const * _\bF_\bi_\bn_\bd_\bP_\ba_\bt_\bc_\bh( int patchFaceId, double u, double v ) const;\n+75\n+76private:\n+77 void initializeHandles(_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be const & patchTable);\n+78 void initializeQuadtree(_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be const & patchTable);\n+79\n+80private:\n+81 // Quadtree node with 4 children, tree is just a vector of nodes\n+82 struct QuadNode {\n+83 QuadNode() { std::memset(this, 0, sizeof(QuadNode)); }\n 84\n-85private:\n-86 cl_mem _sizes;\n-87 cl_mem _offsets;\n-88 cl_mem _indices;\n-89 cl_mem _weights;\n-90 cl_mem _duWeights;\n-91 cl_mem _dvWeights;\n-92 cl_mem _duuWeights;\n-93 cl_mem _duvWeights;\n-94 cl_mem _dvvWeights;\n-95 int _numStencils;\n-96};\n-97\n-98// --------------------------------------------------------------------------\n--\n-99\n-_\b1_\b0_\b0class _\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br {\n-101public:\n-_\b1_\b0_\b2 typedef bool _\bI_\bn_\bs_\bt_\ba_\bn_\bt_\bi_\ba_\bt_\ba_\bb_\bl_\be;\n-103\n-105 template <typename DEVICE_CONTEXT>\n-_\b1_\b0_\b6 static _\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br *_\bC_\br_\be_\ba_\bt_\be(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-107 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-108 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-109 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-110 DEVICE_CONTEXT deviceContext) {\n-111 return _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc, duDesc, dvDesc,\n-112 deviceContext->GetContext(),\n-113 deviceContext->GetCommandQueue());\n-114 }\n-115\n-_\b1_\b1_\b6 static _\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br * _\bC_\br_\be_\ba_\bt_\be(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-117 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-118 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-119 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-120 cl_context clContext,\n-121 cl_command_queue clCommandQueue) {\n-122 _\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br *instance = new _\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br(clContext, clCommandQueue);\n-123 if (instance->_\bC_\bo_\bm_\bp_\bi_\bl_\be(srcDesc, dstDesc, duDesc, dvDesc))\n-124 return instance;\n-125 delete instance;\n-126 return NULL;\n-127 }\n-128\n-130 template <typename DEVICE_CONTEXT>\n-_\b1_\b3_\b1 static _\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br *_\bC_\br_\be_\ba_\bt_\be(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-132 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-133 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-134 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-135 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-136 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-137 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-138 DEVICE_CONTEXT deviceContext) {\n-139 return _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc, duDesc, dvDesc,\n-140 duuDesc, duvDesc, dvvDesc,\n-141 deviceContext->GetContext(),\n-142 deviceContext->GetCommandQueue());\n-143 }\n+_\b8_\b5 struct _\bC_\bh_\bi_\bl_\bd {\n+_\b8_\b6 unsigned int _\bi_\bs_\bS_\be_\bt : 1; // true if the child has been set\n+_\b8_\b7 unsigned int _\bi_\bs_\bL_\be_\ba_\bf : 1; // true if the child is a QuadNode\n+_\b8_\b8 unsigned int _\bi_\bn_\bd_\be_\bx : 30; // child index (either QuadNode or Handle)\n+89 };\n+90\n+91 // sets all the children to point to the patch of given index\n+92 void SetChildren(int index);\n+93\n+94 // sets the child in \"quadrant\" to point to the node or patch of the given\n+index\n+95 void SetChild(int quadrant, int index, bool isLeaf);\n+96\n+97 _\bC_\bh_\bi_\bl_\bd children[4];\n+98 };\n+99 typedef std::vector<QuadNode> QuadTree;\n+100\n+101 // Internal methods supporting quadtree construction and queries\n+102 void assignRootNode(QuadNode * node, int index);\n+103 QuadNode * assignLeafOrChildNode(QuadNode * node, bool isLeaf, int quad,\n+int index);\n+104\n+105 template <class T>\n+106 static int transformUVToQuadQuadrant(T const & median, T & u, T & v);\n+107 template <class T>\n+108 static int transformUVToTriQuadrant(T const & median, T & u, T & v, bool &\n+rotated);\n+109\n+110private:\n+111 bool _patchesAreTriangular; // tri and quad assembly and search\n+requirements differ\n+112\n+113 int _minPatchFace; // minimum patch face index supported by the map\n+114 int _maxPatchFace; // maximum patch face index supported by the map\n+115 int _maxDepth; // maximum depth of a patch in the tree\n+116\n+117 std::vector<Handle> _handles; // all the patches in the PatchTable\n+118 std::vector<QuadNode> _quadtree; // quadtree nodes\n+119};\n+120\n+121//\n+122// Given a median value for both U and V, these methods transform a (u,v)\n+pair\n+123// into the quadrant that contains them and returns the quadrant index.\n+124//\n+125// Quadrant indexing for tri and quad patches -- consistent with\n+PatchParam's\n+126// usage of UV bits:\n+127//\n+128// (0,1) o-----o-----o (1,1) (0,1) o (1,0) o-----o-----o (0,0)\n+129// | | | |\\ \\ 1 |\\ 0 |\n+130// | 2 | 3 | | \\ \\ | \\ |\n+131// | | | | 2 \\ \\| 3 \\|\n+132// o-----o-----o o-----o o-----o\n+133// | | | |\\ 3 |\\ \\ 2 |\n+134// | 0 | 1 | | \\ | \\ \\ |\n+135// | | | | 0 \\| 1 \\ \\|\n+136// (0,0) o-----o-----o (1,0) (0,0) o-----o-----o (1,0) o (0,1)\n+137//\n+138// The triangular case also takes and returns/affects the rotation of the\n+139// quadrant being searched and identified (quadrant 3 imparts a rotation).\n+140//\n+141template <class T>\n+142inline int\n+143PatchMap::transformUVToQuadQuadrant(T const & median, T & u, T & v) {\n 144\n-_\b1_\b4_\b5 static _\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br * _\bC_\br_\be_\ba_\bt_\be(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-146 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-147 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-148 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-149 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-150 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-151 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-152 cl_context clContext,\n-153 cl_command_queue clCommandQueue) {\n-154 _\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br *instance = new _\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br(clContext, clCommandQueue);\n-155 if (instance->_\bC_\bo_\bm_\bp_\bi_\bl_\be(srcDesc, dstDesc, duDesc, dvDesc,\n-156 duuDesc, duvDesc, dvvDesc))\n-157 return instance;\n-158 delete instance;\n-159 return NULL;\n-160 }\n-161\n-_\b1_\b6_\b3 _\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br(cl_context context, cl_command_queue queue);\n-164\n-_\b1_\b6_\b6 _\b~_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br();\n-167\n-173\n-217 template <typename SRC_BUFFER, typename DST_BUFFER,\n-218 typename STENCIL_TABLE, typename DEVICE_CONTEXT>\n-_\b2_\b1_\b9 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n-220 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-221 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-222 STENCIL_TABLE const *stencilTable,\n-223 _\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n-224 DEVICE_CONTEXT deviceContext,\n-225 unsigned int numStartEvents=0,\n-226 const cl_event* startEvents=NULL,\n-227 cl_event* endEvent=NULL) {\n-228\n-229 if (instance) {\n-230 return instance->_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer, srcDesc,\n-231 dstBuffer, dstDesc,\n-232 stencilTable,\n-233 numStartEvents, startEvents, endEvent);\n-234 } else {\n-235 // Create an instance on demand (slow)\n-236 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n-237 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-238 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-239 deviceContext);\n-240 if (instance) {\n-241 bool r = instance->_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer, srcDesc,\n-242 dstBuffer, dstDesc,\n-243 stencilTable,\n-244 numStartEvents, startEvents, endEvent);\n-245 delete instance;\n-246 return r;\n-247 }\n-248 return false;\n-249 }\n-250 }\n-251\n-307 template <typename SRC_BUFFER, typename DST_BUFFER,\n-308 typename STENCIL_TABLE, typename DEVICE_CONTEXT>\n-_\b3_\b0_\b9 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n-310 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-311 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-312 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-313 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-314 STENCIL_TABLE const *stencilTable,\n-315 _\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n-316 DEVICE_CONTEXT deviceContext,\n-317 unsigned int numStartEvents=0,\n-318 const cl_event* startEvents=NULL,\n-319 cl_event* endEvent=NULL) {\n-320\n-321 if (instance) {\n-322 return instance->_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer, srcDesc,\n-323 dstBuffer, dstDesc,\n-324 duBuffer, duDesc,\n-325 dvBuffer, dvDesc,\n-326 stencilTable,\n-327 numStartEvents, startEvents, endEvent);\n-328 } else {\n-329 // Create an instance on demand (slow)\n-330 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc, duDesc, dvDesc,\n-331 deviceContext);\n-332 if (instance) {\n-333 bool r = instance->_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer, srcDesc,\n-334 dstBuffer, dstDesc,\n-335 duBuffer, duDesc,\n-336 dvBuffer, dvDesc,\n-337 stencilTable,\n-338 numStartEvents, startEvents, endEvent);\n-339 delete instance;\n-340 return r;\n-341 }\n-342 return false;\n-343 }\n-344 }\n-345\n-419 template <typename SRC_BUFFER, typename DST_BUFFER,\n-420 typename STENCIL_TABLE, typename DEVICE_CONTEXT>\n-_\b4_\b2_\b1 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n-422 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-423 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-424 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-425 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-426 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-427 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-428 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-429 STENCIL_TABLE const *stencilTable,\n-430 _\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n-431 DEVICE_CONTEXT deviceContext,\n-432 unsigned int numStartEvents=0,\n-433 const cl_event* startEvents=NULL,\n-434 cl_event* endEvent=NULL) {\n-435\n-436 if (instance) {\n-437 return instance->_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer, srcDesc,\n-438 dstBuffer, dstDesc,\n-439 duBuffer, duDesc,\n-440 dvBuffer, dvDesc,\n-441 duuBuffer, duuDesc,\n-442 duvBuffer, duvDesc,\n-443 dvvBuffer, dvvDesc,\n-444 stencilTable,\n-445 numStartEvents, startEvents, endEvent);\n-446 } else {\n-447 // Create an instance on demand (slow)\n-448 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n-449 duDesc, dvDesc,\n-450 duuDesc, duvDesc, dvvDesc,\n-451 deviceContext);\n-452 if (instance) {\n-453 bool r = instance->_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer, srcDesc,\n-454 dstBuffer, dstDesc,\n-455 duBuffer, duDesc,\n-456 dvBuffer, dvDesc,\n-457 duuBuffer, duuDesc,\n-458 duvBuffer, duvDesc,\n-459 dvvBuffer, dvvDesc,\n-460 stencilTable,\n-461 numStartEvents, startEvents, endEvent);\n-462 delete instance;\n-463 return r;\n-464 }\n-465 return false;\n-466 }\n-467 }\n-468\n-499 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n-_\b5_\b0_\b0 bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n-501 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-502 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-503 STENCIL_TABLE const *stencilTable,\n-504 unsigned int numStartEvents=0,\n-505 const cl_event* startEvents=NULL,\n-506 cl_event* endEvent=NULL) const {\n-507 return _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc,\n-508 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc,\n-509 stencilTable->GetSizesBuffer(),\n-510 stencilTable->GetOffsetsBuffer(),\n-511 stencilTable->GetIndicesBuffer(),\n-512 stencilTable->GetWeightsBuffer(),\n-513 0,\n-514 stencilTable->GetNumStencils(),\n-515 numStartEvents, startEvents, endEvent);\n-516 }\n-517\n-560 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n-_\b5_\b6_\b1 bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n-562 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-563 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-564 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-565 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-566 STENCIL_TABLE const *stencilTable,\n-567 unsigned int numStartEvents=0,\n-568 const cl_event* startEvents=NULL,\n-569 cl_event* endEvent=NULL) const {\n-570 return _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc,\n-571 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc,\n-572 duBuffer->BindCLBuffer(_clCommandQueue), duDesc,\n-573 dvBuffer->BindCLBuffer(_clCommandQueue), dvDesc,\n-574 stencilTable->GetSizesBuffer(),\n-575 stencilTable->GetOffsetsBuffer(),\n-576 stencilTable->GetIndicesBuffer(),\n-577 stencilTable->GetWeightsBuffer(),\n-578 stencilTable->GetDuWeightsBuffer(),\n-579 stencilTable->GetDvWeightsBuffer(),\n-580 0,\n-581 stencilTable->GetNumStencils(),\n-582 numStartEvents, startEvents, endEvent);\n-583 }\n-584\n-645 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n-_\b6_\b4_\b6 bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n-647 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-648 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-649 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-650 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-651 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-652 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-653 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-654 STENCIL_TABLE const *stencilTable,\n-655 unsigned int numStartEvents=0,\n-656 const cl_event* startEvents=NULL,\n-657 cl_event* endEvent=NULL) const {\n-658 return _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc,\n-659 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc,\n-660 duBuffer->BindCLBuffer(_clCommandQueue), duDesc,\n-661 dvBuffer->BindCLBuffer(_clCommandQueue), dvDesc,\n-662 duuBuffer->BindCLBuffer(_clCommandQueue), duuDesc,\n-663 duvBuffer->BindCLBuffer(_clCommandQueue), duvDesc,\n-664 dvvBuffer->BindCLBuffer(_clCommandQueue), dvvDesc,\n-665 stencilTable->GetSizesBuffer(),\n-666 stencilTable->GetOffsetsBuffer(),\n-667 stencilTable->GetIndicesBuffer(),\n-668 stencilTable->GetWeightsBuffer(),\n-669 stencilTable->GetDuWeightsBuffer(),\n-670 stencilTable->GetDvWeightsBuffer(),\n-671 stencilTable->GetDuuWeightsBuffer(),\n-672 stencilTable->GetDuvWeightsBuffer(),\n-673 stencilTable->GetDvvWeightsBuffer(),\n-674 0,\n-675 stencilTable->GetNumStencils(),\n-676 numStartEvents, startEvents, endEvent);\n-677 }\n-678\n-_\b6_\b8_\b1 bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(cl_mem src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-682 cl_mem dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-683 cl_mem sizes,\n-684 cl_mem offsets,\n-685 cl_mem indices,\n-686 cl_mem weights,\n-687 int start,\n-688 int end,\n-689 unsigned int numStartEvents=0,\n-690 const cl_event* startEvents=NULL,\n-691 cl_event* endEvent=NULL) const;\n-692\n-_\b7_\b4_\b1 bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(cl_mem src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-742 cl_mem dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-743 cl_mem du, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-744 cl_mem dv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-745 cl_mem sizes,\n-746 cl_mem offsets,\n-747 cl_mem indices,\n-748 cl_mem weights,\n-749 cl_mem duWeights,\n-750 cl_mem dvWeights,\n-751 int start,\n-752 int end,\n-753 unsigned int numStartEvents=0,\n-754 const cl_event* startEvents=NULL,\n-755 cl_event* endEvent=NULL) const;\n-756\n-_\b8_\b2_\b3 bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(cl_mem src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-824 cl_mem dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-825 cl_mem du, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-826 cl_mem dv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-827 cl_mem duu, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-828 cl_mem duv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-829 cl_mem dvv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-830 cl_mem sizes,\n-831 cl_mem offsets,\n-832 cl_mem indices,\n-833 cl_mem weights,\n-834 cl_mem duWeights,\n-835 cl_mem dvWeights,\n-836 cl_mem duuWeights,\n-837 cl_mem duvWeights,\n-838 cl_mem dvvWeights,\n-839 int start,\n-840 int end,\n-841 unsigned int numStartEvents=0,\n-842 const cl_event* startEvents=NULL,\n-843 cl_event* endEvent=NULL) const;\n-844\n-850\n-899 template <typename SRC_BUFFER, typename DST_BUFFER,\n-900 typename PATCHCOORD_BUFFER, typename PATCH_TABLE,\n-901 typename DEVICE_CONTEXT>\n-_\b9_\b0_\b2 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n-903 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-904 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-905 int numPatchCoords,\n-906 PATCHCOORD_BUFFER *patchCoords,\n-907 PATCH_TABLE *patchTable,\n-908 _\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n-909 DEVICE_CONTEXT deviceContext,\n-910 unsigned int numStartEvents=0,\n-911 const cl_event* startEvents=NULL,\n-912 cl_event* endEvent=NULL) {\n-913\n-914 if (instance) {\n-915 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer, srcDesc,\n-916 dstBuffer, dstDesc,\n-917 numPatchCoords, patchCoords,\n-918 patchTable,\n-919 numStartEvents, startEvents, endEvent);\n-920 } else {\n-921 // Create an instance on demand (slow)\n-922 (void)deviceContext; // unused\n-923 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n-924 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-925 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-926 deviceContext);\n-927 if (instance) {\n-928 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer, srcDesc,\n-929 dstBuffer, dstDesc,\n-930 numPatchCoords, patchCoords,\n-931 patchTable,\n-932 numStartEvents, startEvents, endEvent);\n-933 delete instance;\n-934 return r;\n-935 }\n-936 return false;\n-937 }\n-938 }\n-939\n-1000 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1001 typename PATCHCOORD_BUFFER, typename PATCH_TABLE,\n-1002 typename DEVICE_CONTEXT>\n-_\b1_\b0_\b0_\b3 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n-1004 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1005 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1006 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-1007 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-1008 int numPatchCoords,\n-1009 PATCHCOORD_BUFFER *patchCoords,\n-1010 PATCH_TABLE *patchTable,\n-1011 _\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n-1012 DEVICE_CONTEXT deviceContext,\n-1013 unsigned int numStartEvents=0,\n-1014 const cl_event* startEvents=NULL,\n-1015 cl_event* endEvent=NULL) {\n-1016\n-1017 if (instance) {\n-1018 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer, srcDesc,\n-1019 dstBuffer, dstDesc,\n-1020 duBuffer, duDesc,\n-1021 dvBuffer, dvDesc,\n-1022 numPatchCoords, patchCoords,\n-1023 patchTable,\n-1024 numStartEvents, startEvents, endEvent);\n-1025 } else {\n-1026 // Create an instance on demand (slow)\n-1027 (void)deviceContext; // unused\n-1028 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc, duDesc, dvDesc, deviceContext);\n-1029 if (instance) {\n-1030 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer, srcDesc,\n-1031 dstBuffer, dstDesc,\n-1032 duBuffer, duDesc,\n-1033 dvBuffer, dvDesc,\n-1034 numPatchCoords, patchCoords,\n-1035 patchTable,\n-1036 numStartEvents, startEvents, endEvent);\n-1037 delete instance;\n-1038 return r;\n-1039 }\n-1040 return false;\n-1041 }\n-1042 }\n-1043\n-1122 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1123 typename PATCHCOORD_BUFFER, typename PATCH_TABLE,\n-1124 typename DEVICE_CONTEXT>\n-_\b1_\b1_\b2_\b5 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n-1126 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1127 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1128 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-1129 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-1130 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-1131 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-1132 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-1133 int numPatchCoords,\n-1134 PATCHCOORD_BUFFER *patchCoords,\n-1135 PATCH_TABLE *patchTable,\n-1136 _\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n-1137 DEVICE_CONTEXT deviceContext,\n-1138 unsigned int numStartEvents=0,\n-1139 const cl_event* startEvents=NULL,\n-1140 cl_event* endEvent=NULL) {\n-1141\n-1142 if (instance) {\n-1143 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer, srcDesc,\n-1144 dstBuffer, dstDesc,\n-1145 duBuffer, duDesc,\n-1146 dvBuffer, dvDesc,\n-1147 duuBuffer, duuDesc,\n-1148 duvBuffer, duvDesc,\n-1149 dvvBuffer, dvvDesc,\n-1150 numPatchCoords, patchCoords,\n-1151 patchTable,\n-1152 numStartEvents, startEvents, endEvent);\n-1153 } else {\n-1154 // Create an instance on demand (slow)\n-1155 (void)deviceContext; // unused\n-1156 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n-1157 duDesc, dvDesc,\n-1158 duuDesc, duvDesc, dvvDesc,\n-1159 deviceContext);\n-1160 if (instance) {\n-1161 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer, srcDesc,\n-1162 dstBuffer, dstDesc,\n-1163 duBuffer, duDesc,\n-1164 dvBuffer, dvDesc,\n-1165 duuBuffer, duuDesc,\n-1166 duvBuffer, duvDesc,\n-1167 dvvBuffer, dvvDesc,\n-1168 numPatchCoords, patchCoords,\n-1169 patchTable,\n-1170 numStartEvents, startEvents, endEvent);\n-1171 delete instance;\n-1172 return r;\n-1173 }\n-1174 return false;\n-1175 }\n-1176 }\n-1177\n-1215 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1216 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b1_\b2_\b1_\b7 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n-1218 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1219 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1220 int numPatchCoords,\n-1221 PATCHCOORD_BUFFER *patchCoords,\n-1222 PATCH_TABLE *patchTable,\n-1223 unsigned int numStartEvents=0,\n-1224 const cl_event* startEvents=NULL,\n-1225 cl_event* endEvent=NULL) const {\n-1226\n-1227 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc,\n-1228 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc,\n-1229 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-1230 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-1231 numPatchCoords,\n-1232 patchCoords->BindCLBuffer(_clCommandQueue),\n-1233 patchTable->GetPatchArrayBuffer(),\n-1234 patchTable->GetPatchIndexBuffer(),\n-1235 patchTable->GetPatchParamBuffer(),\n-1236 numStartEvents, startEvents, endEvent);\n-1237 }\n-1238\n-1286 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1287 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b1_\b2_\b8_\b8 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n-1289 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1290 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1291 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-1292 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-1293 int numPatchCoords,\n-1294 PATCHCOORD_BUFFER *patchCoords,\n-1295 PATCH_TABLE *patchTable,\n-1296 unsigned int numStartEvents=0,\n-1297 const cl_event* startEvents=NULL,\n-1298 cl_event* endEvent=NULL) const {\n-1299\n-1300 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc,\n-1301 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc,\n-1302 duBuffer->BindCLBuffer(_clCommandQueue), duDesc,\n-1303 dvBuffer->BindCLBuffer(_clCommandQueue), dvDesc,\n-1304 numPatchCoords,\n-1305 patchCoords->BindCLBuffer(_clCommandQueue),\n-1306 patchTable->GetPatchArrayBuffer(),\n-1307 patchTable->GetPatchIndexBuffer(),\n-1308 patchTable->GetPatchParamBuffer(),\n-1309 numStartEvents, startEvents, endEvent);\n-1310 }\n-1311\n-1377 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1378 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b1_\b3_\b7_\b9 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n-1380 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1381 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1382 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-1383 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-1384 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-1385 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-1386 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-1387 int numPatchCoords,\n-1388 PATCHCOORD_BUFFER *patchCoords,\n-1389 PATCH_TABLE *patchTable,\n-1390 unsigned int numStartEvents=0,\n-1391 const cl_event* startEvents=NULL,\n-1392 cl_event* endEvent=NULL) const {\n-1393\n-1394 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc,\n-1395 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc,\n-1396 duBuffer->BindCLBuffer(_clCommandQueue), duDesc,\n-1397 dvBuffer->BindCLBuffer(_clCommandQueue), dvDesc,\n-1398 duuBuffer->BindCLBuffer(_clCommandQueue), duuDesc,\n-1399 duvBuffer->BindCLBuffer(_clCommandQueue), duvDesc,\n-1400 dvvBuffer->BindCLBuffer(_clCommandQueue), dvvDesc,\n-1401 numPatchCoords,\n-1402 patchCoords->BindCLBuffer(_clCommandQueue),\n-1403 patchTable->GetPatchArrayBuffer(),\n-1404 patchTable->GetPatchIndexBuffer(),\n-1405 patchTable->GetPatchParamBuffer(),\n-1406 numStartEvents, startEvents, endEvent);\n-1407 }\n-1408\n-_\b1_\b4_\b0_\b9 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(cl_mem src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1410 cl_mem dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1411 cl_mem du, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-1412 cl_mem dv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-1413 int numPatchCoords,\n-1414 cl_mem patchCoordsBuffer,\n-1415 cl_mem patchArrayBuffer,\n-1416 cl_mem patchIndexBuffer,\n-1417 cl_mem patchParamsBuffer,\n-1418 unsigned int numStartEvents=0,\n-1419 const cl_event* startEvents=NULL,\n-1420 cl_event* endEvent=NULL) const;\n-1421\n-_\b1_\b4_\b2_\b2 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(cl_mem src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1423 cl_mem dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1424 cl_mem du, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-1425 cl_mem dv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-1426 cl_mem duu, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-1427 cl_mem duv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-1428 cl_mem dvv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-1429 int numPatchCoords,\n-1430 cl_mem patchCoordsBuffer,\n-1431 cl_mem patchArrayBuffer,\n-1432 cl_mem patchIndexBuffer,\n-1433 cl_mem patchParamsBuffer,\n-1434 unsigned int numStartEvents=0,\n-1435 const cl_event* startEvents=NULL,\n-1436 cl_event* endEvent=NULL) const;\n-1437\n-1486 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1487 typename PATCHCOORD_BUFFER, typename PATCH_TABLE,\n-1488 typename DEVICE_CONTEXT>\n-_\b1_\b4_\b8_\b9 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1490 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1491 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1492 int numPatchCoords,\n-1493 PATCHCOORD_BUFFER *patchCoords,\n-1494 PATCH_TABLE *patchTable,\n-1495 _\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n-1496 DEVICE_CONTEXT deviceContext,\n-1497 unsigned int numStartEvents=0,\n-1498 const cl_event* startEvents=NULL,\n-1499 cl_event* endEvent=NULL) {\n-1500\n-1501 if (instance) {\n-1502 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1503 srcBuffer, srcDesc,\n-1504 dstBuffer, dstDesc,\n-1505 numPatchCoords, patchCoords,\n-1506 patchTable,\n-1507 numStartEvents, startEvents, endEvent);\n-1508 } else {\n-1509 // Create an instance on demand (slow)\n-1510 (void)deviceContext; // unused\n-1511 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n-1512 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-1513 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-1514 deviceContext);\n-1515 if (instance) {\n-1516 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1517 srcBuffer, srcDesc,\n-1518 dstBuffer, dstDesc,\n-1519 numPatchCoords, patchCoords,\n-1520 patchTable,\n-1521 numStartEvents, startEvents, endEvent);\n-1522 delete instance;\n-1523 return r;\n-1524 }\n-1525 return false;\n-1526 }\n-1527 }\n-1528\n-1566 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1567 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b1_\b5_\b6_\b8 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1569 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1570 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1571 int numPatchCoords,\n-1572 PATCHCOORD_BUFFER *patchCoords,\n-1573 PATCH_TABLE *patchTable,\n-1574 unsigned int numStartEvents=0,\n-1575 const cl_event* startEvents=NULL,\n-1576 cl_event* endEvent=NULL) const {\n-1577\n-1578 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc,\n-1579 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc,\n-1580 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-1581 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-1582 numPatchCoords,\n-1583 patchCoords->BindCLBuffer(_clCommandQueue),\n-1584 patchTable->GetVaryingPatchArrayBuffer(),\n-1585 patchTable->GetVaryingPatchIndexBuffer(),\n-1586 patchTable->GetPatchParamBuffer(),\n-1587 numStartEvents, startEvents, endEvent);\n-1588 }\n-1589\n-1650 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1651 typename PATCHCOORD_BUFFER, typename PATCH_TABLE,\n-1652 typename DEVICE_CONTEXT>\n-_\b1_\b6_\b5_\b3 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1654 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1655 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1656 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-1657 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-1658 int numPatchCoords,\n-1659 PATCHCOORD_BUFFER *patchCoords,\n-1660 PATCH_TABLE *patchTable,\n-1661 _\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n-1662 DEVICE_CONTEXT deviceContext,\n-1663 unsigned int numStartEvents=0,\n-1664 const cl_event* startEvents=NULL,\n-1665 cl_event* endEvent=NULL) {\n-1666\n-1667 if (instance) {\n-1668 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1669 srcBuffer, srcDesc,\n-1670 dstBuffer, dstDesc,\n-1671 duBuffer, duDesc,\n-1672 dvBuffer, dvDesc,\n-1673 numPatchCoords, patchCoords,\n-1674 patchTable,\n-1675 numStartEvents, startEvents, endEvent);\n-1676 } else {\n-1677 // Create an instance on demand (slow)\n-1678 (void)deviceContext; // unused\n-1679 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n-1680 duDesc, dvDesc,\n-1681 deviceContext);\n-1682 if (instance) {\n-1683 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1684 srcBuffer, srcDesc,\n-1685 dstBuffer, dstDesc,\n-1686 duBuffer, duDesc,\n-1687 dvBuffer, dvDesc,\n-1688 numPatchCoords, patchCoords,\n-1689 patchTable,\n-1690 numStartEvents, startEvents, endEvent);\n-1691 delete instance;\n-1692 return r;\n-1693 }\n-1694 return false;\n-1695 }\n-1696 }\n-1697\n-1747 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1748 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b1_\b7_\b4_\b9 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1750 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1751 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1752 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-1753 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-1754 int numPatchCoords,\n-1755 PATCHCOORD_BUFFER *patchCoords,\n-1756 PATCH_TABLE *patchTable,\n-1757 unsigned int numStartEvents=0,\n-1758 const cl_event* startEvents=NULL,\n-1759 cl_event* endEvent=NULL) const {\n-1760\n-1761 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc,\n-1762 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc,\n-1763 duBuffer->BindCLBuffer(_clCommandQueue), duDesc,\n-1764 dvBuffer->BindCLBuffer(_clCommandQueue), dvDesc,\n-1765 numPatchCoords,\n-1766 patchCoords->BindCLBuffer(_clCommandQueue),\n-1767 patchTable->GetVaryingPatchArrayBuffer(),\n-1768 patchTable->GetVaryingPatchIndexBuffer(),\n-1769 patchTable->GetPatchParamBuffer(),\n-1770 numStartEvents, startEvents, endEvent);\n-1771 }\n-1772\n-1851 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1852 typename PATCHCOORD_BUFFER, typename PATCH_TABLE,\n-1853 typename DEVICE_CONTEXT>\n-_\b1_\b8_\b5_\b4 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1855 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1856 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1857 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-1858 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-1859 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-1860 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-1861 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-1862 int numPatchCoords,\n-1863 PATCHCOORD_BUFFER *patchCoords,\n-1864 PATCH_TABLE *patchTable,\n-1865 _\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n-1866 DEVICE_CONTEXT deviceContext,\n-1867 unsigned int numStartEvents=0,\n-1868 const cl_event* startEvents=NULL,\n-1869 cl_event* endEvent=NULL) {\n-1870\n-1871 if (instance) {\n-1872 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1873 srcBuffer, srcDesc,\n-1874 dstBuffer, dstDesc,\n-1875 duBuffer, duDesc,\n-1876 dvBuffer, dvDesc,\n-1877 duuBuffer, duuDesc,\n-1878 duvBuffer, duvDesc,\n-1879 dvvBuffer, dvvDesc,\n-1880 numPatchCoords, patchCoords,\n-1881 patchTable,\n-1882 numStartEvents, startEvents, endEvent);\n-1883 } else {\n-1884 // Create an instance on demand (slow)\n-1885 (void)deviceContext; // unused\n-1886 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n-1887 duDesc, dvDesc,\n-1888 duuDesc, duvDesc, dvvDesc,\n-1889 deviceContext);\n-1890 if (instance) {\n-1891 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1892 srcBuffer, srcDesc,\n-1893 dstBuffer, dstDesc,\n-1894 duBuffer, duDesc,\n-1895 dvBuffer, dvDesc,\n-1896 duuBuffer, duuDesc,\n-1897 duvBuffer, duvDesc,\n-1898 dvvBuffer, dvvDesc,\n-1899 numPatchCoords, patchCoords,\n-1900 patchTable,\n-1901 numStartEvents, startEvents, endEvent);\n-1902 delete instance;\n-1903 return r;\n-1904 }\n-1905 return false;\n-1906 }\n-1907 }\n-1908\n-1976 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1977 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b1_\b9_\b7_\b8 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1979 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1980 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1981 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-1982 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-1983 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-1984 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-1985 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-1986 int numPatchCoords,\n-1987 PATCHCOORD_BUFFER *patchCoords,\n-1988 PATCH_TABLE *patchTable,\n-1989 unsigned int numStartEvents=0,\n-1990 const cl_event* startEvents=NULL,\n-1991 cl_event* endEvent=NULL) const {\n-1992\n-1993 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc,\n-1994 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc,\n-1995 duBuffer->BindCLBuffer(_clCommandQueue), duDesc,\n-1996 dvBuffer->BindCLBuffer(_clCommandQueue), dvDesc,\n-1997 duuBuffer->BindCLBuffer(_clCommandQueue), duuDesc,\n-1998 duvBuffer->BindCLBuffer(_clCommandQueue), duvDesc,\n-1999 dvvBuffer->BindCLBuffer(_clCommandQueue), dvvDesc,\n-2000 numPatchCoords,\n-2001 patchCoords->BindCLBuffer(_clCommandQueue),\n-2002 patchTable->GetVaryingPatchArrayBuffer(),\n-2003 patchTable->GetVaryingPatchIndexBuffer(),\n-2004 patchTable->GetPatchParamBuffer(),\n-2005 numStartEvents, startEvents, endEvent);\n-2006 }\n-2007\n-2058 template <typename SRC_BUFFER, typename DST_BUFFER,\n-2059 typename PATCHCOORD_BUFFER, typename PATCH_TABLE,\n-2060 typename DEVICE_CONTEXT>\n-_\b2_\b0_\b6_\b1 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-2062 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-2063 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-2064 int numPatchCoords,\n-2065 PATCHCOORD_BUFFER *patchCoords,\n-2066 PATCH_TABLE *patchTable,\n-2067 int fvarChannel,\n-2068 _\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n-2069 DEVICE_CONTEXT deviceContext,\n-2070 unsigned int numStartEvents=0,\n-2071 const cl_event* startEvents=NULL,\n-2072 cl_event* endEvent=NULL) {\n-2073\n-2074 if (instance) {\n-2075 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-2076 srcBuffer, srcDesc,\n-2077 dstBuffer, dstDesc,\n-2078 numPatchCoords, patchCoords,\n-2079 patchTable, fvarChannel,\n-2080 numStartEvents, startEvents, endEvent);\n-2081 } else {\n-2082 // Create an instance on demand (slow)\n-2083 (void)deviceContext; // unused\n-2084 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n-2085 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-2086 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-2087 deviceContext);\n-2088 if (instance) {\n-2089 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-2090 srcBuffer, srcDesc,\n-2091 dstBuffer, dstDesc,\n-2092 numPatchCoords, patchCoords,\n-2093 patchTable, fvarChannel,\n-2094 numStartEvents, startEvents, endEvent);\n-2095 delete instance;\n-2096 return r;\n-2097 }\n-2098 return false;\n-2099 }\n-2100 }\n-2101\n-2141 template <typename SRC_BUFFER, typename DST_BUFFER,\n-2142 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b2_\b1_\b4_\b3 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-2144 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-2145 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-2146 int numPatchCoords,\n-2147 PATCHCOORD_BUFFER *patchCoords,\n-2148 PATCH_TABLE *patchTable,\n-2149 int fvarChannel = 0,\n-2150 unsigned int numStartEvents=0,\n-2151 const cl_event* startEvents=NULL,\n-2152 cl_event* endEvent=NULL) const {\n-2153\n-2154 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc,\n-2155 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc,\n-2156 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-2157 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-2158 numPatchCoords,\n-2159 patchCoords->BindCLBuffer(_clCommandQueue),\n-2160 patchTable->GetFVarPatchArrayBuffer(fvarChannel),\n-2161 patchTable->GetFVarPatchIndexBuffer(fvarChannel),\n-2162 patchTable->GetFVarPatchParamBuffer(fvarChannel),\n-2163 numStartEvents, startEvents, endEvent);\n-2164 }\n-2165\n-2228 template <typename SRC_BUFFER, typename DST_BUFFER,\n-2229 typename PATCHCOORD_BUFFER, typename PATCH_TABLE,\n-2230 typename DEVICE_CONTEXT>\n-_\b2_\b2_\b3_\b1 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-2232 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-2233 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-2234 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-2235 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-2236 int numPatchCoords,\n-2237 PATCHCOORD_BUFFER *patchCoords,\n-2238 PATCH_TABLE *patchTable,\n-2239 int fvarChannel,\n-2240 _\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n-2241 DEVICE_CONTEXT deviceContext,\n-2242 unsigned int numStartEvents=0,\n-2243 const cl_event* startEvents=NULL,\n-2244 cl_event* endEvent=NULL) {\n-2245\n-2246 if (instance) {\n-2247 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-2248 srcBuffer, srcDesc,\n-2249 dstBuffer, dstDesc,\n-2250 duBuffer, duDesc,\n-2251 dvBuffer, dvDesc,\n-2252 numPatchCoords, patchCoords,\n-2253 patchTable, fvarChannel,\n-2254 numStartEvents, startEvents, endEvent);\n-2255 } else {\n-2256 // Create an instance on demand (slow)\n-2257 (void)deviceContext; // unused\n-2258 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n-2259 duDesc, dvDesc, deviceContext);\n-2260 if (instance) {\n-2261 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-2262 srcBuffer, srcDesc,\n-2263 dstBuffer, dstDesc,\n-2264 duBuffer, duDesc,\n-2265 dvBuffer, dvDesc,\n-2266 numPatchCoords, patchCoords,\n-2267 patchTable, fvarChannel,\n-2268 numStartEvents, startEvents, endEvent);\n-2269 delete instance;\n-2270 return r;\n-2271 }\n-2272 return false;\n-2273 }\n-2274 }\n-2275\n-2327 template <typename SRC_BUFFER, typename DST_BUFFER,\n-2328 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b2_\b3_\b2_\b9 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-2330 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-2331 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-2332 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-2333 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-2334 int numPatchCoords,\n-2335 PATCHCOORD_BUFFER *patchCoords,\n-2336 PATCH_TABLE *patchTable,\n-2337 int fvarChannel = 0,\n-2338 unsigned int numStartEvents=0,\n-2339 const cl_event* startEvents=NULL,\n-2340 cl_event* endEvent=NULL) const {\n-2341\n-2342 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc,\n-2343 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc,\n-2344 duBuffer->BindCLBuffer(_clCommandQueue), duDesc,\n-2345 dvBuffer->BindCLBuffer(_clCommandQueue), dvDesc,\n-2346 numPatchCoords,\n-2347 patchCoords->BindCLBuffer(_clCommandQueue),\n-2348 patchTable->GetFVarPatchArrayBuffer(fvarChannel),\n-2349 patchTable->GetFVarPatchIndexBuffer(fvarChannel),\n-2350 patchTable->GetFVarPatchParamBuffer(fvarChannel),\n-2351 numStartEvents, startEvents, endEvent);\n-2352 }\n-2353\n-2434 template <typename SRC_BUFFER, typename DST_BUFFER,\n-2435 typename PATCHCOORD_BUFFER, typename PATCH_TABLE,\n-2436 typename DEVICE_CONTEXT>\n-_\b2_\b4_\b3_\b7 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-2438 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-2439 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-2440 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-2441 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-2442 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-2443 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-2444 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-2445 int numPatchCoords,\n-2446 PATCHCOORD_BUFFER *patchCoords,\n-2447 PATCH_TABLE *patchTable,\n-2448 int fvarChannel,\n-2449 _\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n-2450 DEVICE_CONTEXT deviceContext,\n-2451 unsigned int numStartEvents=0,\n-2452 const cl_event* startEvents=NULL,\n-2453 cl_event* endEvent=NULL) {\n-2454\n-2455 if (instance) {\n-2456 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-2457 srcBuffer, srcDesc,\n-2458 dstBuffer, dstDesc,\n-2459 duBuffer, duDesc,\n-2460 dvBuffer, dvDesc,\n-2461 duuBuffer, duuDesc,\n-2462 duvBuffer, duvDesc,\n-2463 dvvBuffer, dvvDesc,\n-2464 numPatchCoords, patchCoords,\n-2465 patchTable, fvarChannel,\n-2466 numStartEvents, startEvents, endEvent);\n-2467 } else {\n-2468 // Create an instance on demand (slow)\n-2469 (void)deviceContext; // unused\n-2470 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n-2471 duDesc, dvDesc,\n-2472 duuDesc, duvDesc, dvvDesc,\n-2473 deviceContext);\n-2474 if (instance) {\n-2475 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-2476 srcBuffer, srcDesc,\n-2477 dstBuffer, dstDesc,\n-2478 duBuffer, duDesc,\n-2479 dvBuffer, dvDesc,\n-2480 duuBuffer, duuDesc,\n-2481 duvBuffer, duvDesc,\n-2482 dvvBuffer, dvvDesc,\n-2483 numPatchCoords, patchCoords,\n-2484 patchTable, fvarChannel,\n-2485 numStartEvents, startEvents, endEvent);\n-2486 delete instance;\n-2487 return r;\n-2488 }\n-2489 return false;\n-2490 }\n-2491 }\n-2492\n-2562 template <typename SRC_BUFFER, typename DST_BUFFER,\n-2563 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b2_\b5_\b6_\b4 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-2565 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-2566 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-2567 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-2568 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-2569 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-2570 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-2571 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-2572 int numPatchCoords,\n-2573 PATCHCOORD_BUFFER *patchCoords,\n-2574 PATCH_TABLE *patchTable,\n-2575 int fvarChannel = 0,\n-2576 unsigned int numStartEvents=0,\n-2577 const cl_event* startEvents=NULL,\n-2578 cl_event* endEvent=NULL) const {\n-2579\n-2580 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCLBuffer(_clCommandQueue), srcDesc,\n-2581 dstBuffer->BindCLBuffer(_clCommandQueue), dstDesc,\n-2582 duBuffer->BindCLBuffer(_clCommandQueue), duDesc,\n-2583 dvBuffer->BindCLBuffer(_clCommandQueue), dvDesc,\n-2584 duuBuffer->BindCLBuffer(_clCommandQueue), duuDesc,\n-2585 duvBuffer->BindCLBuffer(_clCommandQueue), duvDesc,\n-2586 dvvBuffer->BindCLBuffer(_clCommandQueue), dvvDesc,\n-2587 numPatchCoords,\n-2588 patchCoords->BindCLBuffer(_clCommandQueue),\n-2589 patchTable->GetFVarPatchArrayBuffer(fvarChannel),\n-2590 patchTable->GetFVarPatchIndexBuffer(fvarChannel),\n-2591 patchTable->GetFVarPatchParamBuffer(fvarChannel),\n-2592 numStartEvents, startEvents, endEvent);\n-2593 }\n-2594\n-2600\n-_\b2_\b6_\b0_\b3 bool _\bC_\bo_\bm_\bp_\bi_\bl_\be(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-2604 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-2605 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc = _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-2606 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc = _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-2607 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc = _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-2608 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc = _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-2609 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc = _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br());\n-2610\n-2612 template <typename DEVICE_CONTEXT>\n-_\b2_\b6_\b1_\b3 static void _\bS_\by_\bn_\bc_\bh_\br_\bo_\bn_\bi_\bz_\be(DEVICE_CONTEXT deviceContext) {\n-2614 _\bS_\by_\bn_\bc_\bh_\br_\bo_\bn_\bi_\bz_\be(deviceContext->GetCommandQueue());\n-2615 }\n-2616\n-_\b2_\b6_\b1_\b7 static void _\bS_\by_\bn_\bc_\bh_\br_\bo_\bn_\bi_\bz_\be(cl_command_queue queue);\n-2618\n-2619private:\n-2620 cl_context _clContext;\n-2621 cl_command_queue _clCommandQueue;\n-2622 cl_program _program;\n-2623 cl_kernel _stencilKernel;\n-2624 cl_kernel _stencilDerivKernel;\n-2625 cl_kernel _patchKernel;\n-2626};\n-2627\n-2628} // end namespace Osd\n-2629\n-2630} // end namespace OPENSUBDIV_VERSION\n-2631using namespace OPENSUBDIV_VERSION;\n-2632\n-2633} // end namespace OpenSubdiv\n-2634\n-2635\n-2636#endif // OPENSUBDIV3_OSD_CL_EVALUATOR_H\n+145 int uHalf = (u >= median);\n+146 if (uHalf) u -= median;\n+147\n+148 int vHalf = (v >= median);\n+149 if (vHalf) v -= median;\n+150\n+151 return (vHalf << 1) | uHalf;\n+152}\n+153\n+154template <class T>\n+155int inline\n+156PatchMap::transformUVToTriQuadrant(T const & median, T & u, T & v, bool &\n+rotated) {\n+157\n+158 if (!rotated) {\n+159 if (u >= median) {\n+160 u -= median;\n+161 return 1;\n+162 }\n+163 if (v >= median) {\n+164 v -= median;\n+165 return 2;\n+166 }\n+167 if ((u + v) >= median) {\n+168 rotated = true;\n+169 return 3;\n+170 }\n+171 return 0;\n+172 } else {\n+173 if (u < median) {\n+174 v -= median;\n+175 return 1;\n+176 }\n+177 if (v < median) {\n+178 u -= median;\n+179 return 2;\n+180 }\n+181 u -= median;\n+182 v -= median;\n+183 if ((u + v) < median) {\n+184 rotated = false;\n+185 return 3;\n+186 }\n+187 return 0;\n+188 }\n+189}\n+190\n+192inline _\bP_\ba_\bt_\bc_\bh_\bM_\ba_\bp_\b:_\b:_\bH_\ba_\bn_\bd_\bl_\be const *\n+_\b1_\b9_\b3_\bP_\ba_\bt_\bc_\bh_\bM_\ba_\bp_\b:_\b:_\bF_\bi_\bn_\bd_\bP_\ba_\bt_\bc_\bh( int faceid, double u, double v ) const {\n+194\n+195 //\n+196 // Reject patch faces not supported by this map, or those corresponding\n+197 // to holes or otherwise unassigned (the root node for a patch will\n+198 // have all or no quadrants set):\n+199 //\n+200 if ((faceid < _minPatchFace) || (faceid > _maxPatchFace)) return 0;\n+201\n+202 QuadNode const * node = &_quadtree[faceid - _minPatchFace];\n+203\n+204 if (!node->children[0].isSet) return 0;\n+205\n+206 //\n+207 // Search the tree for the sub-patch containing the given (u,v)\n+208 //\n+209 assert( (u>=0.0) && (u<=1.0) && (v>=0.0) && (v<=1.0) );\n+210\n+211 double median = 0.5;\n+212 bool triRotated = false;\n+213\n+214 for (int depth = 0; depth <= _maxDepth; ++depth, median *= 0.5) {\n+215\n+216 int quadrant = _patchesAreTriangular\n+217 ? transformUVToTriQuadrant(median, u, v, triRotated)\n+218 : transformUVToQuadQuadrant(median, u, v);\n+219\n+220 // holes should have been rejected at the root node of the face\n+221 assert(node->children[quadrant].isSet);\n+222\n+223 if (node->children[quadrant].isLeaf) {\n+224 return &_handles[node->children[quadrant].index];\n+225 } else {\n+226 node = &_quadtree[node->children[quadrant].index];\n+227 }\n+228 }\n+229 assert(0);\n+230 return 0;\n+231}\n+232\n+233} // end namespace Far\n+234\n+235} // end namespace OPENSUBDIV_VERSION\n+236using namespace OPENSUBDIV_VERSION;\n+237\n+238} // end namespace OpenSubdiv\n+239\n+240#endif /* OPENSUBDIV3_FAR_PATCH_PARAM */\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n-Stencil table class wrapping the template for compatibility.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b2_\b7_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n-Limit stencil table class wrapping the template for compatibility.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b8_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n-BufferDescriptor is a struct which describes buffer elements in interleaved\n-data buffers....\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b6_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n-OpenCL stencil table.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b5_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bD_\bv_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br\n-cl_mem GetDvvWeightsBuffer() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b8_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n-CLStencilTable(Far::StencilTable const *stencilTable, cl_context clContext)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br\n-cl_mem GetOffsetsBuffer() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static CLStencilTable * Create(Far::LimitStencilTable const *limitStencilTable,\n-DEVICE_CONTEXT context)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b6_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bI_\bn_\bd_\bi_\bc_\be_\bs_\bB_\bu_\bf_\bf_\be_\br\n-cl_mem GetIndicesBuffer() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-int GetNumStencils() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b8_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bS_\bi_\bz_\be_\bs_\bB_\bu_\bf_\bf_\be_\br\n-cl_mem GetSizesBuffer() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bD_\bu_\bu_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br\n-cl_mem GetDuuWeightsBuffer() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b8_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bD_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br\n-cl_mem GetDvWeightsBuffer() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bD_\bu_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br\n-cl_mem GetDuvWeightsBuffer() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b8_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bD_\bu_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br\n-cl_mem GetDuWeightsBuffer() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b~_\bC_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n-~CLStencilTable()\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static CLStencilTable * Create(Far::StencilTable const *stencilTable,\n-DEVICE_CONTEXT context)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b5_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n-CLStencilTable(Far::LimitStencilTable const *limitStencilTable, cl_context\n-clContext)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br\n-cl_mem GetWeightsBuffer() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b0_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n-*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n-BufferDescriptor const &dvDesc, STENCIL_TABLE const *stencilTable, CLEvaluator\n-const *instance, DEVICE_CONTEXT deviceContext, unsigned int numStartEvents=0,\n-const cl_event *startEvents=NULL, cl_event *endEvent=NULL)\n-Generic static stencil function. This function has a same signature as other\n-device kernels have so t...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b3_\b0_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bS_\by_\bn_\bc_\bh_\br_\bo_\bn_\bi_\bz_\be\n-static void Synchronize(cl_command_queue queue)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\b~_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n-~CLEvaluator()\n-Destructor.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-bool EvalStencils(cl_mem src, BufferDescriptor const &srcDesc, cl_mem dst,\n-BufferDescriptor const &dstDesc, cl_mem du, BufferDescriptor const &duDesc,\n-cl_mem dv, BufferDescriptor const &dvDesc, cl_mem sizes, cl_mem offsets, cl_mem\n-indices, cl_mem weights, cl_mem duWeights, cl_mem dvWeights, int start, int\n-end, unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event\n-*endEvent=NULL) const\n-Dispatch the CL compute kernel asynchronously. returns false if the kernel\n-hasn't been compiled yet.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, STENCIL_TABLE\n-const *stencilTable, CLEvaluator const *instance, DEVICE_CONTEXT deviceContext,\n-unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event\n-*endEvent=NULL)\n-Generic static stencil function. This function has a same signature as other\n-device kernels have so t...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b2_\b1_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static CLEvaluator * Create(BufferDescriptor const &srcDesc, BufferDescriptor\n-const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &dvDesc,\n-cl_context clContext, cl_command_queue clCommandQueue)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b1_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n-static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor\n-const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,\n-DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n-BufferDescriptor const &dvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n-*patchCoords, PATCH_TABLE *patchTable, int fvarChannel, CLEvaluator const\n-*instance, DEVICE_CONTEXT deviceContext, unsigned int numStartEvents=0, const\n-cl_event *startEvents=NULL, cl_event *endEvent=NULL)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b2_\b2_\b3_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-bool EvalPatches(cl_mem src, BufferDescriptor const &srcDesc, cl_mem dst,\n-BufferDescriptor const &dstDesc, cl_mem du, BufferDescriptor const &duDesc,\n-cl_mem dv, BufferDescriptor const &dvDesc, int numPatchCoords, cl_mem\n-patchCoordsBuffer, cl_mem patchArrayBuffer, cl_mem patchIndexBuffer, cl_mem\n-patchParamsBuffer, unsigned int numStartEvents=0, const cl_event\n-*startEvents=NULL, cl_event *endEvent=NULL) const\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n-bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n-BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n-&dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER\n-*duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer,\n-BufferDescriptor const &dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n-*patchCoords, PATCH_TABLE *patchTable, unsigned int numStartEvents=0, const\n-cl_event *startEvents=NULL, cl_event *endEvent=NULL) const\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b9_\b7_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n-BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n-&dvDesc, STENCIL_TABLE const *stencilTable, unsigned int numStartEvents=0,\n-const cl_event *startEvents=NULL, cl_event *endEvent=NULL) const\n-Generic stencil function.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b5_\b6_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n-BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n-&dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER\n-*duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer,\n-BufferDescriptor const &dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n-*patchCoords, PATCH_TABLE *patchTable, unsigned int numStartEvents=0, const\n-cl_event *startEvents=NULL, cl_event *endEvent=NULL) const\n-Generic limit eval function with derivatives. This function has a same\n-signature as other device kern...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b3_\b7_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bI_\bn_\bs_\bt_\ba_\bn_\bt_\bi_\ba_\bt_\ba_\bb_\bl_\be\n-bool Instantiatable\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b0_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static CLEvaluator * Create(BufferDescriptor const &srcDesc, BufferDescriptor\n-const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &dvDesc,\n-DEVICE_CONTEXT deviceContext)\n-Generic creator template.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b0_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n-static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor\n-const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int\n-numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int\n-fvarChannel, CLEvaluator const *instance, DEVICE_CONTEXT deviceContext,\n-unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event\n-*endEvent=NULL)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b2_\b0_\b6_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static CLEvaluator * Create(BufferDescriptor const &srcDesc, BufferDescriptor\n-const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &dvDesc,\n-BufferDescriptor const &duuDesc, BufferDescriptor const &duvDesc,\n-BufferDescriptor const &dvvDesc, DEVICE_CONTEXT deviceContext)\n-Generic creator template.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b3_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-bool EvalPatches(cl_mem src, BufferDescriptor const &srcDesc, cl_mem dst,\n-BufferDescriptor const &dstDesc, cl_mem du, BufferDescriptor const &duDesc,\n-cl_mem dv, BufferDescriptor const &dvDesc, cl_mem duu, BufferDescriptor const\n-&duuDesc, cl_mem duv, BufferDescriptor const &duvDesc, cl_mem dvv,\n-BufferDescriptor const &dvvDesc, int numPatchCoords, cl_mem patchCoordsBuffer,\n-cl_mem patchArrayBuffer, cl_mem patchIndexBuffer, cl_mem patchParamsBuffer,\n-unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event\n-*endEvent=NULL) const\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-bool EvalStencils(cl_mem src, BufferDescriptor const &srcDesc, cl_mem dst,\n-BufferDescriptor const &dstDesc, cl_mem du, BufferDescriptor const &duDesc,\n-cl_mem dv, BufferDescriptor const &dvDesc, cl_mem duu, BufferDescriptor const\n-&duuDesc, cl_mem duv, BufferDescriptor const &duvDesc, cl_mem dvv,\n-BufferDescriptor const &dvvDesc, cl_mem sizes, cl_mem offsets, cl_mem indices,\n-cl_mem weights, cl_mem duWeights, cl_mem dvWeights, cl_mem duuWeights, cl_mem\n-duvWeights, cl_mem dvvWeights, int start, int end, unsigned int\n-numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL)\n-const\n-Dispatch the CL compute kernel asynchronously. returns false if the kernel\n-hasn't been compiled yet.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n-bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n-*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n-BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const\n-&duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER\n-*dvvBuffer, BufferDescriptor const &dvvDesc, int numPatchCoords,\n-PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel=0,\n-unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event\n-*endEvent=NULL) const\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b2_\b5_\b6_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords,\n-PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, unsigned int\n-numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL)\n-const\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b2_\b1_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n-BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n-&dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER\n-*duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer,\n-BufferDescriptor const &dvvDesc, STENCIL_TABLE const *stencilTable, unsigned\n-int numStartEvents=0, const cl_event *startEvents=NULL, cl_event\n-*endEvent=NULL) const\n-Generic stencil function.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b6_\b4_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n-static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n-*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n-BufferDescriptor const &dvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n-*patchCoords, PATCH_TABLE *patchTable, CLEvaluator const *instance,\n-DEVICE_CONTEXT deviceContext, unsigned int numStartEvents=0, const cl_event\n-*startEvents=NULL, cl_event *endEvent=NULL)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b6_\b5_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bS_\by_\bn_\bc_\bh_\br_\bo_\bn_\bi_\bz_\be\n-static void Synchronize(DEVICE_CONTEXT deviceContext)\n-Wait the OpenCL kernels finish.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b2_\b6_\b1_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n-BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n-&dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER\n-*duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer,\n-BufferDescriptor const &dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n-*patchCoords, PATCH_TABLE *patchTable, CLEvaluator const *instance,\n-DEVICE_CONTEXT deviceContext, unsigned int numStartEvents=0, const cl_event\n-*startEvents=NULL, cl_event *endEvent=NULL)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b1_\b2_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n-*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n-BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const\n-&duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER\n-*dvvBuffer, BufferDescriptor const &dvvDesc, STENCIL_TABLE const *stencilTable,\n-CLEvaluator const *instance, DEVICE_CONTEXT deviceContext, unsigned int\n-numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL)\n-Generic static stencil function. This function has a same signature as other\n-device kernels have so t...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b4_\b2_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-bool EvalStencils(cl_mem src, BufferDescriptor const &srcDesc, cl_mem dst,\n-BufferDescriptor const &dstDesc, cl_mem sizes, cl_mem offsets, cl_mem indices,\n-cl_mem weights, int start, int end, unsigned int numStartEvents=0, const\n-cl_event *startEvents=NULL, cl_event *endEvent=NULL) const\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n-static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int\n-numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable,\n-CLEvaluator const *instance, DEVICE_CONTEXT deviceContext, unsigned int\n-numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b4_\b8_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n-bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n-*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n-BufferDescriptor const &dvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n-*patchCoords, PATCH_TABLE *patchTable, int fvarChannel=0, unsigned int\n-numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL)\n-const\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b2_\b3_\b2_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n-static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor\n-const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,\n-DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n-BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const\n-&duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER\n-*dvvBuffer, BufferDescriptor const &dvvDesc, int numPatchCoords,\n-PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel,\n-CLEvaluator const *instance, DEVICE_CONTEXT deviceContext, unsigned int\n-numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b2_\b4_\b3_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static CLEvaluator * Create(BufferDescriptor const &srcDesc, BufferDescriptor\n-const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &dvDesc,\n-BufferDescriptor const &duuDesc, BufferDescriptor const &duvDesc,\n-BufferDescriptor const &dvvDesc, cl_context clContext, cl_command_queue\n-clCommandQueue)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b4_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n-BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n-&dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE\n-*patchTable, CLEvaluator const *instance, DEVICE_CONTEXT deviceContext,\n-unsigned int numStartEvents=0, const cl_event *startEvents=NULL, cl_event\n-*endEvent=NULL)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b0_\b0_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n-bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n-BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n-&dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE\n-*patchTable, unsigned int numStartEvents=0, const cl_event *startEvents=NULL,\n-cl_event *endEvent=NULL) const\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b7_\b4_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords,\n-PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, CLEvaluator const\n-*instance, DEVICE_CONTEXT deviceContext, unsigned int numStartEvents=0, const\n-cl_event *startEvents=NULL, cl_event *endEvent=NULL)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b9_\b0_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n-bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords,\n-PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, unsigned int\n-numStartEvents=0, const cl_event *startEvents=NULL, cl_event *endEvent=NULL)\n-const\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b5_\b6_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n-static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n-*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n-BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const\n-&duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER\n-*dvvBuffer, BufferDescriptor const &dvvDesc, int numPatchCoords,\n-PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, CLEvaluator const\n-*instance, DEVICE_CONTEXT deviceContext, unsigned int numStartEvents=0, const\n-cl_event *startEvents=NULL, cl_event *endEvent=NULL)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b8_\b5_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, STENCIL_TABLE const\n-*stencilTable, unsigned int numStartEvents=0, const cl_event *startEvents=NULL,\n-cl_event *endEvent=NULL) const\n-Generic stencil function.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b5_\b0_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n-BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n-&dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE\n-*patchTable, unsigned int numStartEvents=0, const cl_event *startEvents=NULL,\n-cl_event *endEvent=NULL) const\n-Generic limit eval function with derivatives. This function has a same\n-signature as other device kern...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b2_\b8_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n-CLEvaluator(cl_context context, cl_command_queue queue)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bM_\ba_\bp\n+An quadtree-based map connecting coarse faces to their sub-patches.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bM_\ba_\bp_\b._\bh_\b:_\b4_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bM_\ba_\bp_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bM_\ba_\bp\n+PatchMap(PatchTable const &patchTable)\n Constructor.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bC_\bo_\bm_\bp_\bi_\bl_\be\n-bool Compile(BufferDescriptor const &srcDesc, BufferDescriptor const &dstDesc,\n-BufferDescriptor const &duDesc=BufferDescriptor(), BufferDescriptor const\n-&dvDesc=BufferDescriptor(), BufferDescriptor const &duuDesc=BufferDescriptor(),\n-BufferDescriptor const &duvDesc=BufferDescriptor(), BufferDescriptor const\n-&dvvDesc=BufferDescriptor())\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n-bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int\n-numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int\n-fvarChannel=0, unsigned int numStartEvents=0, const cl_event *startEvents=NULL,\n-cl_event *endEvent=NULL) const\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b2_\b1_\b4_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bM_\ba_\bp_\b:_\b:_\bF_\bi_\bn_\bd_\bP_\ba_\bt_\bc_\bh\n+Handle const * FindPatch(int patchFaceId, double u, double v) const\n+Returns a handle to the sub-patch of the face at the given (u,v). Note that the\n+patch face ID corresp...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bM_\ba_\bp_\b._\bh_\b:_\b1_\b9_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bM_\ba_\bp_\b:_\b:_\bH_\ba_\bn_\bd_\bl_\be\n+PatchTable::PatchHandle Handle\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bM_\ba_\bp_\b._\bh_\b:_\b5_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bM_\ba_\bp_\b:_\b:_\bQ_\bu_\ba_\bd_\bN_\bo_\bd_\be_\b:_\b:_\bC_\bh_\bi_\bl_\bd\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bM_\ba_\bp_\b._\bh_\b:_\b8_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bM_\ba_\bp_\b:_\b:_\bQ_\bu_\ba_\bd_\bN_\bo_\bd_\be_\b:_\b:_\bC_\bh_\bi_\bl_\bd_\b:_\b:_\bi_\bs_\bL_\be_\ba_\bf\n+unsigned int isLeaf\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bM_\ba_\bp_\b._\bh_\b:_\b8_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bM_\ba_\bp_\b:_\b:_\bQ_\bu_\ba_\bd_\bN_\bo_\bd_\be_\b:_\b:_\bC_\bh_\bi_\bl_\bd_\b:_\b:_\bi_\bn_\bd_\be_\bx\n+unsigned int index\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bM_\ba_\bp_\b._\bh_\b:_\b8_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bM_\ba_\bp_\b:_\b:_\bQ_\bu_\ba_\bd_\bN_\bo_\bd_\be_\b:_\b:_\bC_\bh_\bi_\bl_\bd_\b:_\b:_\bi_\bs_\bS_\be_\bt\n+unsigned int isSet\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bM_\ba_\bp_\b._\bh_\b:_\b8_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+Container for arrays of parametric patches.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be\n+Handle that can be used as unique patch identifier within PatchTable.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bc_\bl_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh\n+    * _\bf_\ba_\br\n+    * _\bp_\ba_\bt_\bc_\bh_\bM_\ba_\bp_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00833.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00833.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/clPatchTable.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/far/topologyRefiner.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -90,46 +90,53 @@\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> &#124;\n <a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">clPatchTable.h File Reference</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">topologyRefiner.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00845_source.html\">../osd/opencl.h</a>&quot;</code><br />\n-<code>#include &quot;../osd/nonCopyable.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a01489_source.html\">../osd/types.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a01492_source.html\">../sdc/types.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00860_source.html\">../sdc/options.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a01486_source.html\">../far/types.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00821_source.html\">../far/topologyLevel.h</a>&quot;</code><br />\n <code>#include &lt;vector&gt;</code><br />\n </div>\n <p><a href=\"a00833_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01153.html\">CLPatchTable</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">CL patch table.  <a href=\"a01153.html#details\">More...</a><br /></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01121.html\">TopologyRefiner</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Stores topology data for a specified set of refinement options.  <a href=\"a01121.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01125.html\">TopologyRefiner::UniformOptions</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Uniform refinement options.  <a href=\"a01125.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01129.html\">TopologyRefiner::AdaptiveOptions</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Adaptive refinement options.  <a href=\"a01129.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far</a></td></tr>\n+<tr class=\"memitem:a00909\" id=\"r_a00909\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00909.html\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n+<tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00833.html\">clPatchTable.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7f420b72a822828cfa8b0561c695a5cc.html\">far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00833.html\">topologyRefiner.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,29 +1,37 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-clPatchTable.h File Reference\n+topologyRefiner.h File Reference\n #include \"../version.h\"\n-#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bo_\bp_\be_\bn_\bc_\bl_\b._\bh\"\n-#include \"../osd/nonCopyable.h\"\n-#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n+#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n+#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh\"\n+#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n+#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh\"\n #include <vector>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n-\u00a0       CL patch table. _\bM_\bo_\br_\be_\b._\b._\b.\n+ class \u00a0 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br\n+\u00a0        Stores topology data for a specified set of refinement options.\n+         _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bU_\bn_\bi_\bf_\bo_\br_\bm_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n+\u00a0        Uniform refinement options. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n+\u00a0        Adaptive refinement options. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bc_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh\n+    * _\bf_\ba_\br\n+    * _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00833.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00833.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,3 +1,5 @@\n var a00833 = [\n-    [\"CLPatchTable\", \"a01153.html\", \"a01153\"]\n+    [\"TopologyRefiner\", \"a01121.html\", \"a01121\"],\n+    [\"UniformOptions\", \"a01125.html\", \"a01125\"],\n+    [\"AdaptiveOptions\", \"a01129.html\", \"a01129\"]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00833_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00833_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/clPatchTable.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/far/topologyRefiner.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">clPatchTable.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">topologyRefiner.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00833.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2015 Pixar</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2014 DreamWorks Animation LLC.</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -118,125 +118,305 @@\n <div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_CL_PATCH_TABLE_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_CL_PATCH_TABLE_H</span></div>\n-<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n-<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../osd/opencl.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../osd/nonCopyable.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &quot;../osd/types.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_FAR_TOPOLOGY_REFINER_H</span></div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#define OPENSUBDIV3_FAR_TOPOLOGY_REFINER_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span> </div>\n+<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span> </div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#include &quot;../sdc/types.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../sdc/options.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../far/types.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &quot;../far/topologyLevel.h&quot;</span></div>\n <div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n <div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n <div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span> </div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span> </div>\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span><span class=\"keyword\">namespace </span>Far{</div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span>    <span class=\"keyword\">class </span>PatchTable;</div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span>};</div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span> </div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00909.html\">   40</a></span><span class=\"keyword\">namespace </span>Vtr { <span class=\"keyword\">namespace </span>internal { <span class=\"keyword\">class </span>SparseSelector; } }</div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"keyword\">namespace </span>Far { <span class=\"keyword\">namespace </span>internal { <span class=\"keyword\">class </span>FeatureMask; } }</div>\n <div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span> </div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"keyword\">namespace </span>Osd {</div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"keyword\">namespace </span>Far {</div>\n <div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00052\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01153.html\">   52</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01153.html\">CLPatchTable</a> : <span class=\"keyword\">private</span> NonCopyable&lt;CLPatchTable&gt; {</div>\n+<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt; <span class=\"keyword\">class </span>PrimvarRefinerReal;</div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt; <span class=\"keyword\">class </span>TopologyRefinerFactory;</div>\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00051\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html\">   51</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> {</div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span> </div>\n <div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01153.html#a699b5e01d46024fce198a17e4527df05\">   55</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01153.html\">CLPatchTable</a> *<a class=\"code hl_function\" href=\"a01153.html#a699b5e01d46024fce198a17e4527df05\">Create</a>(<a class=\"code hl_class\" href=\"a00993.html\">Far::PatchTable</a> <span class=\"keyword\">const</span> *patchTable,</div>\n-<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span>                                cl_context clContext);</div>\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span> </div>\n+<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#a91353962838bff64448014136e0e11ff\">   56</a></span>    <a class=\"code hl_function\" href=\"a01121.html#a91353962838bff64448014136e0e11ff\">TopologyRefiner</a>(<a class=\"code hl_enumeration\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833d\">Sdc::SchemeType</a> type, <a class=\"code hl_class\" href=\"a01337.html\">Sdc::Options</a> options = <a class=\"code hl_class\" href=\"a01337.html\">Sdc::Options</a>());</div>\n <div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span> </div>\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00059\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01153.html#ad52ee9f29f56576ed9ab6c7e258e14ae\">   59</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01153.html\">CLPatchTable</a> * <a class=\"code hl_function\" href=\"a01153.html#ad52ee9f29f56576ed9ab6c7e258e14ae\">Create</a>(<a class=\"code hl_class\" href=\"a00993.html\">Far::PatchTable</a> <span class=\"keyword\">const</span> *patchTable,</div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span>                                 DEVICE_CONTEXT context) {</div>\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01153.html#a699b5e01d46024fce198a17e4527df05\">Create</a>(patchTable, context-&gt;GetContext());</div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span>    }</div>\n-</div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#ad34359a8dc42748122362e459f1409aa\">   59</a></span>    <a class=\"code hl_function\" href=\"a01121.html#ad34359a8dc42748122362e459f1409aa\">~TopologyRefiner</a>();</div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span> </div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#a758e06255013d2d7393c3ac2d18f6922\">   62</a></span>    <a class=\"code hl_enumeration\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833d\">Sdc::SchemeType</a> <a class=\"code hl_function\" href=\"a01121.html#a758e06255013d2d7393c3ac2d18f6922\">GetSchemeType</a>()<span class=\"keyword\"> const    </span>{ <span class=\"keywordflow\">return</span> _subdivType; }</div>\n <div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span> </div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01153.html#a214a812acfe800e62954b45e2f2ee15d\">   65</a></span>    <a class=\"code hl_function\" href=\"a01153.html#a214a812acfe800e62954b45e2f2ee15d\">~CLPatchTable</a>();</div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#a4528f38657b0c96bce6c3d7deffd7c02\">   65</a></span>    <a class=\"code hl_class\" href=\"a01337.html\">Sdc::Options</a> <a class=\"code hl_function\" href=\"a01121.html#a4528f38657b0c96bce6c3d7deffd7c02\">GetSchemeOptions</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _subdivOptions; }</div>\n <div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span> </div>\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01153.html#a693751f5a6c94b134873f5c524fd999a\">   68</a></span>    cl_mem <a class=\"code hl_function\" href=\"a01153.html#a693751f5a6c94b134873f5c524fd999a\">GetPatchArrayBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01153.html#a7210a18569c2e0f0d728092835951c70\">_patchArrays</a>; }</div>\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#a5dfa6810f510fac1ec621fc9e6b530c4\">   68</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01121.html#a5dfa6810f510fac1ec621fc9e6b530c4\">IsUniform</a>()<span class=\"keyword\"> const   </span>{ <span class=\"keywordflow\">return</span> _isUniform; }</div>\n <div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span> </div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01153.html#abf29cd5f256ac52b7afdc6d87f915c4b\">   71</a></span>    cl_mem <a class=\"code hl_function\" href=\"a01153.html#abf29cd5f256ac52b7afdc6d87f915c4b\">GetPatchIndexBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01153.html#a56bd6edaa10c8b3c718265203430dcb9\">_indexBuffer</a>; }</div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#a239ca467443788cab395336ec33c7dbe\">   71</a></span>    <span class=\"keywordtype\">int</span>  <a class=\"code hl_function\" href=\"a01121.html#a239ca467443788cab395336ec33c7dbe\">GetNumLevels</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (<span class=\"keywordtype\">int</span>)_farLevels.size(); }</div>\n <div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span> </div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01153.html#a48b951719ff4fe3b94b20f997dc1d480\">   74</a></span>    cl_mem <a class=\"code hl_function\" href=\"a01153.html#a48b951719ff4fe3b94b20f997dc1d480\">GetPatchParamBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01153.html#a2d547b12237422c1035f5817e671155c\">_patchParamBuffer</a>; }</div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#a7d0b5dc6f7f567507a906e00d1887151\">   74</a></span>    <span class=\"keywordtype\">int</span>  <a class=\"code hl_function\" href=\"a01121.html#a7d0b5dc6f7f567507a906e00d1887151\">GetMaxLevel</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _maxLevel; }</div>\n <div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span> </div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01153.html#afc269c290092f9ae42a8e15cdb8cebd1\">   77</a></span>    cl_mem <a class=\"code hl_function\" href=\"a01153.html#afc269c290092f9ae42a8e15cdb8cebd1\">GetVaryingPatchArrayBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01153.html#afa7c9b6ac860cd6db8c1d8fc2aa7d63d\">_varyingPatchArrays</a>; }</div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#a14bf987459715b918b370247bb24a61c\">   77</a></span>    <span class=\"keywordtype\">int</span>  <a class=\"code hl_function\" href=\"a01121.html#a14bf987459715b918b370247bb24a61c\">GetMaxValence</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _maxValence; }</div>\n <div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span> </div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01153.html#a954d3789118ddd8dc6a5d17e20665b3c\">   80</a></span>    cl_mem <a class=\"code hl_function\" href=\"a01153.html#a954d3789118ddd8dc6a5d17e20665b3c\">GetVaryingPatchIndexBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01153.html#a82703277c754b05b7844b074b6a049c7\">_varyingIndexBuffer</a>; }</div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#a1b68f0501aabb94ba410e006181d2cc5\">   80</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01121.html#a1b68f0501aabb94ba410e006181d2cc5\">HasHoles</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _hasHoles; }</div>\n <div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span> </div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01153.html#aa9be824a572029f3ec1e0c0d6cfecd77\">   83</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01153.html#aa9be824a572029f3ec1e0c0d6cfecd77\">GetNumFVarChannels</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (<span class=\"keywordtype\">int</span>)<a class=\"code hl_variable\" href=\"a01153.html#a0eece245e692b6640c527214e8df756d\">_fvarPatchArrays</a>.size(); }</div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#ae8ef99a47f8185a3a621e4d5b10a20a0\">   83</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01121.html#ae8ef99a47f8185a3a621e4d5b10a20a0\">GetNumVerticesTotal</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _totalVertices; }</div>\n <div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span> </div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01153.html#a5956886f3c08959eade5d92c33136ad5\">   86</a></span>    cl_mem <a class=\"code hl_function\" href=\"a01153.html#a5956886f3c08959eade5d92c33136ad5\">GetFVarPatchArrayBuffer</a>(<span class=\"keywordtype\">int</span> fvarChannel = 0)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01153.html#a0eece245e692b6640c527214e8df756d\">_fvarPatchArrays</a>[fvarChannel]; }</div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#a96f712a5e40873f00b0b61f72ffb9e3c\">   86</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01121.html#a96f712a5e40873f00b0b61f72ffb9e3c\">GetNumEdgesTotal</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _totalEdges; }</div>\n <div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span> </div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01153.html#a72aca2fb5c3e3f40ef9109a827c3b28f\">   89</a></span>    cl_mem <a class=\"code hl_function\" href=\"a01153.html#a72aca2fb5c3e3f40ef9109a827c3b28f\">GetFVarPatchIndexBuffer</a>(<span class=\"keywordtype\">int</span> fvarChannel = 0)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01153.html#af4ff1daf1bfd79ffa1cc26a79870b141\">_fvarIndexBuffers</a>[fvarChannel]; }</div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#ac5eadebfdd9b11ac383653e5a2383231\">   89</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01121.html#ac5eadebfdd9b11ac383653e5a2383231\">GetNumFacesTotal</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _totalFaces; }</div>\n <div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span> </div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01153.html#ad7ab95a3f811625b4d9ee2c1b6cac6af\">   92</a></span>    cl_mem <a class=\"code hl_function\" href=\"a01153.html#ad7ab95a3f811625b4d9ee2c1b6cac6af\">GetFVarPatchParamBuffer</a>(<span class=\"keywordtype\">int</span> fvarChannel = 0)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01153.html#af22c38b9eb5a91397769c40d36a303d3\">_fvarParamBuffers</a>[fvarChannel]; }</div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#accbb5f2a2fa9138df8c399b9f1d37982\">   92</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01121.html#accbb5f2a2fa9138df8c399b9f1d37982\">GetNumFaceVerticesTotal</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _totalFaceVertices; }</div>\n <div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span> </div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span><span class=\"keyword\">protected</span>:</div>\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01153.html#ae69549a9493f9a51edfa7d11cec1d72f\">   95</a></span>    <a class=\"code hl_function\" href=\"a01153.html#ae69549a9493f9a51edfa7d11cec1d72f\">CLPatchTable</a>();</div>\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#adc03a3531bd92ada5669788241e3515f\">   95</a></span>    <a class=\"code hl_class\" href=\"a01113.html\">TopologyLevel</a> <span class=\"keyword\">const</span> &amp; <a class=\"code hl_function\" href=\"a01121.html#adc03a3531bd92ada5669788241e3515f\">GetLevel</a>(<span class=\"keywordtype\">int</span> level)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _farLevels[level]; }</div>\n <div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span> </div>\n-<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01153.html#af15d0a0d1c0b5c1be71598ba95991ff7\">   97</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01153.html#af15d0a0d1c0b5c1be71598ba95991ff7\">allocate</a>(<a class=\"code hl_class\" href=\"a00993.html\">Far::PatchTable</a> <span class=\"keyword\">const</span> *patchTable, cl_context clContext);</div>\n <div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span> </div>\n-<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01153.html#a7210a18569c2e0f0d728092835951c70\">   99</a></span>    cl_mem <a class=\"code hl_variable\" href=\"a01153.html#a7210a18569c2e0f0d728092835951c70\">_patchArrays</a>;</div>\n-<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01153.html#a56bd6edaa10c8b3c718265203430dcb9\">  100</a></span>    cl_mem <a class=\"code hl_variable\" href=\"a01153.html#a56bd6edaa10c8b3c718265203430dcb9\">_indexBuffer</a>;</div>\n-<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01153.html#a2d547b12237422c1035f5817e671155c\">  101</a></span>    cl_mem <a class=\"code hl_variable\" href=\"a01153.html#a2d547b12237422c1035f5817e671155c\">_patchParamBuffer</a>;</div>\n-<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span> </div>\n-<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01153.html#afa7c9b6ac860cd6db8c1d8fc2aa7d63d\">  103</a></span>    cl_mem <a class=\"code hl_variable\" href=\"a01153.html#afa7c9b6ac860cd6db8c1d8fc2aa7d63d\">_varyingPatchArrays</a>;</div>\n-<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01153.html#a82703277c754b05b7844b074b6a049c7\">  104</a></span>    cl_mem <a class=\"code hl_variable\" href=\"a01153.html#a82703277c754b05b7844b074b6a049c7\">_varyingIndexBuffer</a>;</div>\n-<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span> </div>\n-<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01153.html#a0eece245e692b6640c527214e8df756d\">  106</a></span>    std::vector&lt;cl_mem&gt; <a class=\"code hl_variable\" href=\"a01153.html#a0eece245e692b6640c527214e8df756d\">_fvarPatchArrays</a>;</div>\n-<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01153.html#af4ff1daf1bfd79ffa1cc26a79870b141\">  107</a></span>    std::vector&lt;cl_mem&gt; <a class=\"code hl_variable\" href=\"a01153.html#af4ff1daf1bfd79ffa1cc26a79870b141\">_fvarIndexBuffers</a>;</div>\n-<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01153.html#af22c38b9eb5a91397769c40d36a303d3\">  108</a></span>    std::vector&lt;cl_mem&gt; <a class=\"code hl_variable\" href=\"a01153.html#af22c38b9eb5a91397769c40d36a303d3\">_fvarParamBuffers</a>;</div>\n-<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span> </div>\n-<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span> </div>\n-<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span>}  <span class=\"comment\">// end namespace Osd</span></div>\n-<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span> </div>\n-<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span>}  <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\">  116</span> </div>\n-<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span>}  <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\">  118</span> </div>\n-<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_CL_PATCH_TABLE_H</span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa00993_html\"><div class=\"ttname\"><a href=\"a00993.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable</a></div><div class=\"ttdoc\">Container for arrays of parametric patches.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00761_source.html#l00055\">patchTable.h:55</a></div></div>\n-<div class=\"ttc\" id=\"aa01153_html\"><div class=\"ttname\"><a href=\"a01153.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLPatchTable</a></div><div class=\"ttdoc\">CL patch table.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00052\">clPatchTable.h:52</a></div></div>\n-<div class=\"ttc\" id=\"aa01153_html_a0eece245e692b6640c527214e8df756d\"><div class=\"ttname\"><a href=\"a01153.html#a0eece245e692b6640c527214e8df756d\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLPatchTable::_fvarPatchArrays</a></div><div class=\"ttdeci\">std::vector&lt; cl_mem &gt; _fvarPatchArrays</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00106\">clPatchTable.h:106</a></div></div>\n-<div class=\"ttc\" id=\"aa01153_html_a214a812acfe800e62954b45e2f2ee15d\"><div class=\"ttname\"><a href=\"a01153.html#a214a812acfe800e62954b45e2f2ee15d\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLPatchTable::~CLPatchTable</a></div><div class=\"ttdeci\">~CLPatchTable()</div><div class=\"ttdoc\">Destructor.</div></div>\n-<div class=\"ttc\" id=\"aa01153_html_a2d547b12237422c1035f5817e671155c\"><div class=\"ttname\"><a href=\"a01153.html#a2d547b12237422c1035f5817e671155c\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLPatchTable::_patchParamBuffer</a></div><div class=\"ttdeci\">cl_mem _patchParamBuffer</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00101\">clPatchTable.h:101</a></div></div>\n-<div class=\"ttc\" id=\"aa01153_html_a48b951719ff4fe3b94b20f997dc1d480\"><div class=\"ttname\"><a href=\"a01153.html#a48b951719ff4fe3b94b20f997dc1d480\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLPatchTable::GetPatchParamBuffer</a></div><div class=\"ttdeci\">cl_mem GetPatchParamBuffer() const</div><div class=\"ttdoc\">Returns the CL memory of the array of Osd::PatchParam buffer.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00074\">clPatchTable.h:74</a></div></div>\n-<div class=\"ttc\" id=\"aa01153_html_a56bd6edaa10c8b3c718265203430dcb9\"><div class=\"ttname\"><a href=\"a01153.html#a56bd6edaa10c8b3c718265203430dcb9\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLPatchTable::_indexBuffer</a></div><div class=\"ttdeci\">cl_mem _indexBuffer</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00100\">clPatchTable.h:100</a></div></div>\n-<div class=\"ttc\" id=\"aa01153_html_a5956886f3c08959eade5d92c33136ad5\"><div class=\"ttname\"><a href=\"a01153.html#a5956886f3c08959eade5d92c33136ad5\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLPatchTable::GetFVarPatchArrayBuffer</a></div><div class=\"ttdeci\">cl_mem GetFVarPatchArrayBuffer(int fvarChannel=0) const</div><div class=\"ttdoc\">Returns the CL memory of the array of Osd::PatchArray buffer.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00086\">clPatchTable.h:86</a></div></div>\n-<div class=\"ttc\" id=\"aa01153_html_a693751f5a6c94b134873f5c524fd999a\"><div class=\"ttname\"><a href=\"a01153.html#a693751f5a6c94b134873f5c524fd999a\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLPatchTable::GetPatchArrayBuffer</a></div><div class=\"ttdeci\">cl_mem GetPatchArrayBuffer() const</div><div class=\"ttdoc\">Returns the CL memory of the array of Osd::PatchArray buffer.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00068\">clPatchTable.h:68</a></div></div>\n-<div class=\"ttc\" id=\"aa01153_html_a699b5e01d46024fce198a17e4527df05\"><div class=\"ttname\"><a href=\"a01153.html#a699b5e01d46024fce198a17e4527df05\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLPatchTable::Create</a></div><div class=\"ttdeci\">static CLPatchTable * Create(Far::PatchTable const *patchTable, cl_context clContext)</div><div class=\"ttdoc\">Creator. Returns NULL if error.</div></div>\n-<div class=\"ttc\" id=\"aa01153_html_a7210a18569c2e0f0d728092835951c70\"><div class=\"ttname\"><a href=\"a01153.html#a7210a18569c2e0f0d728092835951c70\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLPatchTable::_patchArrays</a></div><div class=\"ttdeci\">cl_mem _patchArrays</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00099\">clPatchTable.h:99</a></div></div>\n-<div class=\"ttc\" id=\"aa01153_html_a72aca2fb5c3e3f40ef9109a827c3b28f\"><div class=\"ttname\"><a href=\"a01153.html#a72aca2fb5c3e3f40ef9109a827c3b28f\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLPatchTable::GetFVarPatchIndexBuffer</a></div><div class=\"ttdeci\">cl_mem GetFVarPatchIndexBuffer(int fvarChannel=0) const</div><div class=\"ttdoc\">Returns the CL memory of the face-varying control vertices.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00089\">clPatchTable.h:89</a></div></div>\n-<div class=\"ttc\" id=\"aa01153_html_a82703277c754b05b7844b074b6a049c7\"><div class=\"ttname\"><a href=\"a01153.html#a82703277c754b05b7844b074b6a049c7\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLPatchTable::_varyingIndexBuffer</a></div><div class=\"ttdeci\">cl_mem _varyingIndexBuffer</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00104\">clPatchTable.h:104</a></div></div>\n-<div class=\"ttc\" id=\"aa01153_html_a954d3789118ddd8dc6a5d17e20665b3c\"><div class=\"ttname\"><a href=\"a01153.html#a954d3789118ddd8dc6a5d17e20665b3c\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLPatchTable::GetVaryingPatchIndexBuffer</a></div><div class=\"ttdeci\">cl_mem GetVaryingPatchIndexBuffer() const</div><div class=\"ttdoc\">Returns the CL memory of the varying control vertices.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00080\">clPatchTable.h:80</a></div></div>\n-<div class=\"ttc\" id=\"aa01153_html_aa9be824a572029f3ec1e0c0d6cfecd77\"><div class=\"ttname\"><a href=\"a01153.html#aa9be824a572029f3ec1e0c0d6cfecd77\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLPatchTable::GetNumFVarChannels</a></div><div class=\"ttdeci\">int GetNumFVarChannels() const</div><div class=\"ttdoc\">Returns the number of face-varying channel buffers.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00083\">clPatchTable.h:83</a></div></div>\n-<div class=\"ttc\" id=\"aa01153_html_abf29cd5f256ac52b7afdc6d87f915c4b\"><div class=\"ttname\"><a href=\"a01153.html#abf29cd5f256ac52b7afdc6d87f915c4b\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLPatchTable::GetPatchIndexBuffer</a></div><div class=\"ttdeci\">cl_mem GetPatchIndexBuffer() const</div><div class=\"ttdoc\">Returns the CL memory of the patch control vertices.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00071\">clPatchTable.h:71</a></div></div>\n-<div class=\"ttc\" id=\"aa01153_html_ad52ee9f29f56576ed9ab6c7e258e14ae\"><div class=\"ttname\"><a href=\"a01153.html#ad52ee9f29f56576ed9ab6c7e258e14ae\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLPatchTable::Create</a></div><div class=\"ttdeci\">static CLPatchTable * Create(Far::PatchTable const *patchTable, DEVICE_CONTEXT context)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00059\">clPatchTable.h:59</a></div></div>\n-<div class=\"ttc\" id=\"aa01153_html_ad7ab95a3f811625b4d9ee2c1b6cac6af\"><div class=\"ttname\"><a href=\"a01153.html#ad7ab95a3f811625b4d9ee2c1b6cac6af\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLPatchTable::GetFVarPatchParamBuffer</a></div><div class=\"ttdeci\">cl_mem GetFVarPatchParamBuffer(int fvarChannel=0) const</div><div class=\"ttdoc\">Returns the CL memory of the array of Osd::PatchParam buffer.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00092\">clPatchTable.h:92</a></div></div>\n-<div class=\"ttc\" id=\"aa01153_html_ae69549a9493f9a51edfa7d11cec1d72f\"><div class=\"ttname\"><a href=\"a01153.html#ae69549a9493f9a51edfa7d11cec1d72f\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLPatchTable::CLPatchTable</a></div><div class=\"ttdeci\">CLPatchTable()</div></div>\n-<div class=\"ttc\" id=\"aa01153_html_af15d0a0d1c0b5c1be71598ba95991ff7\"><div class=\"ttname\"><a href=\"a01153.html#af15d0a0d1c0b5c1be71598ba95991ff7\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLPatchTable::allocate</a></div><div class=\"ttdeci\">bool allocate(Far::PatchTable const *patchTable, cl_context clContext)</div></div>\n-<div class=\"ttc\" id=\"aa01153_html_af22c38b9eb5a91397769c40d36a303d3\"><div class=\"ttname\"><a href=\"a01153.html#af22c38b9eb5a91397769c40d36a303d3\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLPatchTable::_fvarParamBuffers</a></div><div class=\"ttdeci\">std::vector&lt; cl_mem &gt; _fvarParamBuffers</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00108\">clPatchTable.h:108</a></div></div>\n-<div class=\"ttc\" id=\"aa01153_html_af4ff1daf1bfd79ffa1cc26a79870b141\"><div class=\"ttname\"><a href=\"a01153.html#af4ff1daf1bfd79ffa1cc26a79870b141\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLPatchTable::_fvarIndexBuffers</a></div><div class=\"ttdeci\">std::vector&lt; cl_mem &gt; _fvarIndexBuffers</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00107\">clPatchTable.h:107</a></div></div>\n-<div class=\"ttc\" id=\"aa01153_html_afa7c9b6ac860cd6db8c1d8fc2aa7d63d\"><div class=\"ttname\"><a href=\"a01153.html#afa7c9b6ac860cd6db8c1d8fc2aa7d63d\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLPatchTable::_varyingPatchArrays</a></div><div class=\"ttdeci\">cl_mem _varyingPatchArrays</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00103\">clPatchTable.h:103</a></div></div>\n-<div class=\"ttc\" id=\"aa01153_html_afc269c290092f9ae42a8e15cdb8cebd1\"><div class=\"ttname\"><a href=\"a01153.html#afc269c290092f9ae42a8e15cdb8cebd1\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLPatchTable::GetVaryingPatchArrayBuffer</a></div><div class=\"ttdeci\">cl_mem GetVaryingPatchArrayBuffer() const</div><div class=\"ttdoc\">Returns the CL memory of the array of Osd::PatchArray buffer.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00077\">clPatchTable.h:77</a></div></div>\n+<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span> </div>\n+<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span>    <span class=\"comment\">// Uniform refinement</span></div>\n+<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00118\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01125.html\">  118</a></span>    <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01125.html\">UniformOptions</a> {</div>\n+<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00120\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01125.html#af20c4ed6bf53695afb4a978fdf472ed3\">  120</a></span>        <a class=\"code hl_function\" href=\"a01125.html#af20c4ed6bf53695afb4a978fdf472ed3\">UniformOptions</a>(<span class=\"keywordtype\">int</span> level) :</div>\n+<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\">  121</span>            <a class=\"code hl_variable\" href=\"a01125.html#a240d1e5f5b743486e8122db6223d4562\">refinementLevel</a>(level &amp; 0xf),</div>\n+<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span>            <a class=\"code hl_variable\" href=\"a01125.html#a3b1e47f9568213cc322ef29a84c932b6\">orderVerticesFromFacesFirst</a>(false),</div>\n+<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span>            <a class=\"code hl_variable\" href=\"a01125.html#ad58e8c2606ce33af17bb83fb90eb7325\">fullTopologyInLastLevel</a>(false) { }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span> </div>\n+<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01125.html#a47a5b6a174f91a113c7f50b1b55bd664\">  126</a></span>        <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01125.html#a47a5b6a174f91a113c7f50b1b55bd664\">SetRefinementLevel</a>(<span class=\"keywordtype\">int</span> level) { <a class=\"code hl_variable\" href=\"a01125.html#a240d1e5f5b743486e8122db6223d4562\">refinementLevel</a> = level &amp; 0xf; }</div>\n+<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span> </div>\n+<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01125.html#a240d1e5f5b743486e8122db6223d4562\">  128</a></span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"a01125.html#a240d1e5f5b743486e8122db6223d4562\">refinementLevel</a>:4,             </div>\n+<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01125.html#a3b1e47f9568213cc322ef29a84c932b6\">  129</a></span>                     <a class=\"code hl_variable\" href=\"a01125.html#a3b1e47f9568213cc322ef29a84c932b6\">orderVerticesFromFacesFirst</a>:1, </div>\n+<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01125.html#ad58e8c2606ce33af17bb83fb90eb7325\">  131</a></span>                     <a class=\"code hl_variable\" href=\"a01125.html#ad58e8c2606ce33af17bb83fb90eb7325\">fullTopologyInLastLevel</a>:1;     </div>\n+<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\">  134</span>    };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\">  135</span> </div>\n+<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#ad22b7ffd9f8f3b488e5f220cf00c8c82\">  146</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01121.html#ad22b7ffd9f8f3b488e5f220cf00c8c82\">RefineUniform</a>(<a class=\"code hl_struct\" href=\"a01125.html\">UniformOptions</a> options);</div>\n+<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\">  147</span> </div>\n+<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#abb1241288f333733e84a5676f55f6bb9\">  149</a></span>    <a class=\"code hl_struct\" href=\"a01125.html\">UniformOptions</a> <a class=\"code hl_function\" href=\"a01121.html#abb1241288f333733e84a5676f55f6bb9\">GetUniformOptions</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _uniformOptions; }</div>\n+<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\">  150</span> </div>\n+<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\">  151</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\">  152</span>    <span class=\"comment\">// Adaptive refinement</span></div>\n+<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\">  153</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\">  154</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00156\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01129.html\">  156</a></span>    <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01129.html\">AdaptiveOptions</a> {</div>\n+<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\">  157</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00158\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01129.html#a3c39e6532871f8952e2f94332b8c80bf\">  158</a></span>        <a class=\"code hl_function\" href=\"a01129.html#a3c39e6532871f8952e2f94332b8c80bf\">AdaptiveOptions</a>(<span class=\"keywordtype\">int</span> level) :</div>\n+<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\">  159</span>            <a class=\"code hl_variable\" href=\"a01129.html#a5561c34bac948dc836506e8e8d3ee134\">isolationLevel</a>(level &amp; 0xf),</div>\n+<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\">  160</span>            <a class=\"code hl_variable\" href=\"a01129.html#a1c8854b9dd7ff2353b618434d08d054a\">secondaryLevel</a>(0xf),</div>\n+<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\">  161</span>            <a class=\"code hl_variable\" href=\"a01129.html#a5834971432c649e28d5a0186f79a60d5\">useSingleCreasePatch</a>(false),</div>\n+<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\">  162</span>            <a class=\"code hl_variable\" href=\"a01129.html#a5eba866952b7be15b065060b1f5a81da\">useInfSharpPatch</a>(false),</div>\n+<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\">  163</span>            <a class=\"code hl_variable\" href=\"a01129.html#a74c90a5955fcad9c95d4c18346f7c312\">considerFVarChannels</a>(false),</div>\n+<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\">  164</span>            <a class=\"code hl_variable\" href=\"a01129.html#a3b1e47f9568213cc322ef29a84c932b6\">orderVerticesFromFacesFirst</a>(false) { }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\">  165</span> </div>\n+<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01129.html#a5ef292b43e4824968e72d664012be93f\">  167</a></span>        <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01129.html#a5ef292b43e4824968e72d664012be93f\">SetIsolationLevel</a>(<span class=\"keywordtype\">int</span> level) { <a class=\"code hl_variable\" href=\"a01129.html#a5561c34bac948dc836506e8e8d3ee134\">isolationLevel</a> = level &amp; 0xf; }</div>\n+<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\">  168</span> </div>\n+<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01129.html#aef7c0b69c6709719e4d985ca7b5d6dd6\">  170</a></span>        <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01129.html#aef7c0b69c6709719e4d985ca7b5d6dd6\">SetSecondaryLevel</a>(<span class=\"keywordtype\">int</span> level) { <a class=\"code hl_variable\" href=\"a01129.html#a1c8854b9dd7ff2353b618434d08d054a\">secondaryLevel</a> = level &amp; 0xf; }</div>\n+<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span> </div>\n+<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01129.html#a5561c34bac948dc836506e8e8d3ee134\">  172</a></span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"a01129.html#a5561c34bac948dc836506e8e8d3ee134\">isolationLevel</a>:4;              </div>\n+<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01129.html#a1c8854b9dd7ff2353b618434d08d054a\">  174</a></span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"a01129.html#a1c8854b9dd7ff2353b618434d08d054a\">secondaryLevel</a>:4;              </div>\n+<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01129.html#a5834971432c649e28d5a0186f79a60d5\">  176</a></span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"a01129.html#a5834971432c649e28d5a0186f79a60d5\">useSingleCreasePatch</a>:1;        </div>\n+<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01129.html#a5eba866952b7be15b065060b1f5a81da\">  178</a></span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"a01129.html#a5eba866952b7be15b065060b1f5a81da\">useInfSharpPatch</a>:1;            </div>\n+<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01129.html#a74c90a5955fcad9c95d4c18346f7c312\">  180</a></span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"a01129.html#a74c90a5955fcad9c95d4c18346f7c312\">considerFVarChannels</a>:1;        </div>\n+<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01129.html#a3b1e47f9568213cc322ef29a84c932b6\">  182</a></span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"a01129.html#a3b1e47f9568213cc322ef29a84c932b6\">orderVerticesFromFacesFirst</a>:1; </div>\n+<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\">  184</span>    };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\">  185</span> </div>\n+<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#aff92309935db19988908471bee4fef4d\">  192</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01121.html#aff92309935db19988908471bee4fef4d\">RefineAdaptive</a>(<a class=\"code hl_struct\" href=\"a01129.html\">AdaptiveOptions</a> options,</div>\n+<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\">  193</span>                        <a class=\"code hl_class\" href=\"a01353.html\">ConstIndexArray</a> selectedFaces = <a class=\"code hl_typedef\" href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">ConstIndexArray</a>());</div>\n+<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\">  194</span> </div>\n+<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#af1cb63210dc03f27cbdb15dc4d3c48b6\">  196</a></span>    <a class=\"code hl_struct\" href=\"a01129.html\">AdaptiveOptions</a> <a class=\"code hl_function\" href=\"a01121.html#af1cb63210dc03f27cbdb15dc4d3c48b6\">GetAdaptiveOptions</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _adaptiveOptions; }</div>\n+<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\">  197</span> </div>\n+<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#ae93be3ade4e67999007460900bbbe039\">  199</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01121.html#ae93be3ade4e67999007460900bbbe039\">Unrefine</a>();</div>\n+<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\">  200</span> </div>\n+<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\">  201</span> </div>\n+<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\">  203</span> </div>\n+<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\">  205</span> </div>\n+<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\">  207</span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01121.html#aa9be824a572029f3ec1e0c0d6cfecd77\">GetNumFVarChannels</a>() <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\">  208</span> </div>\n+<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\">  210</span>    <a class=\"code hl_enumeration\" href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167b\">Sdc::Options::FVarLinearInterpolation</a> <a class=\"code hl_function\" href=\"a01121.html#af29a7e9914ee6860c7167300ea17e514\">GetFVarLinearInterpolation</a>(<span class=\"keywordtype\">int</span> channel = 0) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\">  211</span> </div>\n+<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#a30e986821916537de9d85e6b032ff5da\">  213</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01121.html#a30e986821916537de9d85e6b032ff5da\">GetNumFVarValuesTotal</a>(<span class=\"keywordtype\">int</span> channel = 0) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\">  214</span> </div>\n+<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\">  216</span> </div>\n+<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\">  217</span><span class=\"keyword\">protected</span>:</div>\n+<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\">  218</span> </div>\n+<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\">  219</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\">  220</span>    <span class=\"comment\">//  Lower level protected methods intended strictly for internal use:</span></div>\n+<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\">  221</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\">  222</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> MESH&gt;</div>\n+<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#a7efec9ae15b61001dcf6a0de284914b7\">  223</a></span>    <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01117.html\">TopologyRefinerFactory</a>;</div>\n+<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#a7b09fef2ae2989a546c50a65add2091f\">  224</a></span>    <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01133.html\">TopologyRefinerFactoryBase</a>;</div>\n+<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#ad452cef79832abb71eef0c3d88acc1a0\">  225</a></span>    <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span><a class=\"code hl_friend\" href=\"a01121.html#ad452cef79832abb71eef0c3d88acc1a0\">PatchTableBuilder</a>;</div>\n+<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#a97612a1a955f8b65e6d7e7761ed1cef7\">  226</a></span>    <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span><a class=\"code hl_friend\" href=\"a01121.html#a97612a1a955f8b65e6d7e7761ed1cef7\">PatchBuilder</a>;</div>\n+<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#a3e6c896f40ac50aec4b28f19bc4eae9c\">  227</a></span>    <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01041.html\">PtexIndices</a>;</div>\n+<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\">  228</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#a2cb48b58c1c2ecef25abb39339a95ac1\">  229</a></span>    <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01029.html\">PrimvarRefinerReal</a>;</div>\n+<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\">  230</span> </div>\n+<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\">  231</span>    <span class=\"comment\">//  Copy constructor exposed via the factory class:</span></div>\n+<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#a13c709a24feeed80409924510e3efc5e\">  232</a></span>    <a class=\"code hl_function\" href=\"a01121.html#a13c709a24feeed80409924510e3efc5e\">TopologyRefiner</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> &amp; source);</div>\n+<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\">  233</span> </div>\n+<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\">  234</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\">  235</span>    <span class=\"comment\">//  Levels and Refinements available internally (avoids need for more friends)</span></div>\n+<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#a523d4cb42fe52e7b330bd027712c7f04\">  236</a></span>    Vtr::internal::Level &amp; <a class=\"code hl_function\" href=\"a01121.html#a523d4cb42fe52e7b330bd027712c7f04\">getLevel</a>(<span class=\"keywordtype\">int</span> l) { <span class=\"keywordflow\">return</span> *_levels[l]; }</div>\n+<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#a1712dfb8f057c939b48f6fb62c4c66e8\">  237</a></span>    Vtr::internal::Level <span class=\"keyword\">const</span> &amp; <a class=\"code hl_function\" href=\"a01121.html#a1712dfb8f057c939b48f6fb62c4c66e8\">getLevel</a>(<span class=\"keywordtype\">int</span> l)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> *_levels[l]; }</div>\n+<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\">  238</span> </div>\n+<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#ad111e17222fca3c7877734ef1780e37f\">  239</a></span>    Vtr::internal::Refinement &amp; <a class=\"code hl_function\" href=\"a01121.html#ad111e17222fca3c7877734ef1780e37f\">getRefinement</a>(<span class=\"keywordtype\">int</span> l) { <span class=\"keywordflow\">return</span> *_refinements[l]; }</div>\n+<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#a402a532c087e1e0041ad6bb613b1a79e\">  240</a></span>    Vtr::internal::Refinement <span class=\"keyword\">const</span> &amp; <a class=\"code hl_function\" href=\"a01121.html#a402a532c087e1e0041ad6bb613b1a79e\">getRefinement</a>(<span class=\"keywordtype\">int</span> l)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> *_refinements[l]; }</div>\n+<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\">  241</span> </div>\n+<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\">  242</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\">  243</span>    <span class=\"comment\">//  Not default constructible or copyable:</span></div>\n+<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\">  244</span>    <a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a>() : _uniformOptions(0), _adaptiveOptions(0) { }</div>\n+<div class=\"line\"><a id=\"l00245\" name=\"l00245\"></a><span class=\"lineno\">  245</span>    TopologyRefiner &amp; operator=(TopologyRefiner <span class=\"keyword\">const</span> &amp;) { <span class=\"keywordflow\">return</span> *<span class=\"keyword\">this</span>; }</div>\n+<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\">  246</span> </div>\n+<div class=\"line\"><a id=\"l00247\" name=\"l00247\"></a><span class=\"lineno\">  247</span>    <span class=\"keywordtype\">void</span> selectFeatureAdaptiveComponents(Vtr::internal::SparseSelector&amp; selector,</div>\n+<div class=\"line\"><a id=\"l00248\" name=\"l00248\"></a><span class=\"lineno\">  248</span>                                         internal::FeatureMask <span class=\"keyword\">const</span> &amp; mask,</div>\n+<div class=\"line\"><a id=\"l00249\" name=\"l00249\"></a><span class=\"lineno\">  249</span>                                         <a class=\"code hl_typedef\" href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">ConstIndexArray</a> selectedFaces);</div>\n+<div class=\"line\"><a id=\"l00250\" name=\"l00250\"></a><span class=\"lineno\">  250</span>    <span class=\"keywordtype\">void</span> selectLinearIrregularFaces(Vtr::internal::SparseSelector&amp; selector,</div>\n+<div class=\"line\"><a id=\"l00251\" name=\"l00251\"></a><span class=\"lineno\">  251</span>                                    <a class=\"code hl_typedef\" href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">ConstIndexArray</a> selectedFaces);</div>\n+<div class=\"line\"><a id=\"l00252\" name=\"l00252\"></a><span class=\"lineno\">  252</span> </div>\n+<div class=\"line\"><a id=\"l00253\" name=\"l00253\"></a><span class=\"lineno\">  253</span>    <span class=\"keywordtype\">void</span> initializeInventory();</div>\n+<div class=\"line\"><a id=\"l00254\" name=\"l00254\"></a><span class=\"lineno\">  254</span>    <span class=\"keywordtype\">void</span> updateInventory(Vtr::internal::Level <span class=\"keyword\">const</span> &amp; newLevel);</div>\n+<div class=\"line\"><a id=\"l00255\" name=\"l00255\"></a><span class=\"lineno\">  255</span> </div>\n+<div class=\"line\"><a id=\"l00256\" name=\"l00256\"></a><span class=\"lineno\">  256</span>    <span class=\"keywordtype\">void</span> appendLevel(Vtr::internal::Level &amp; newLevel);</div>\n+<div class=\"line\"><a id=\"l00257\" name=\"l00257\"></a><span class=\"lineno\">  257</span>    <span class=\"keywordtype\">void</span> appendRefinement(Vtr::internal::Refinement &amp; newRefinement);</div>\n+<div class=\"line\"><a id=\"l00258\" name=\"l00258\"></a><span class=\"lineno\">  258</span>    <span class=\"keywordtype\">void</span> assembleFarLevels();</div>\n+<div class=\"line\"><a id=\"l00259\" name=\"l00259\"></a><span class=\"lineno\">  259</span> </div>\n+<div class=\"line\"><a id=\"l00260\" name=\"l00260\"></a><span class=\"lineno\">  260</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00261\" name=\"l00261\"></a><span class=\"lineno\">  261</span> </div>\n+<div class=\"line\"><a id=\"l00262\" name=\"l00262\"></a><span class=\"lineno\">  262</span>    <a class=\"code hl_enumeration\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833d\">Sdc::SchemeType</a> _subdivType;</div>\n+<div class=\"line\"><a id=\"l00263\" name=\"l00263\"></a><span class=\"lineno\">  263</span>    <a class=\"code hl_class\" href=\"a01337.html\">Sdc::Options</a>    _subdivOptions;</div>\n+<div class=\"line\"><a id=\"l00264\" name=\"l00264\"></a><span class=\"lineno\">  264</span> </div>\n+<div class=\"line\"><a id=\"l00265\" name=\"l00265\"></a><span class=\"lineno\">  265</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> _isUniform     : 1;</div>\n+<div class=\"line\"><a id=\"l00266\" name=\"l00266\"></a><span class=\"lineno\">  266</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> _hasHoles      : 1;</div>\n+<div class=\"line\"><a id=\"l00267\" name=\"l00267\"></a><span class=\"lineno\">  267</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> _hasIrregFaces : 1;</div>\n+<div class=\"line\"><a id=\"l00268\" name=\"l00268\"></a><span class=\"lineno\">  268</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> _regFaceSize   : 3;</div>\n+<div class=\"line\"><a id=\"l00269\" name=\"l00269\"></a><span class=\"lineno\">  269</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> _maxLevel      : 4;</div>\n+<div class=\"line\"><a id=\"l00270\" name=\"l00270\"></a><span class=\"lineno\">  270</span> </div>\n+<div class=\"line\"><a id=\"l00271\" name=\"l00271\"></a><span class=\"lineno\">  271</span>    <span class=\"comment\">//  Options assigned on refinement:</span></div>\n+<div class=\"line\"><a id=\"l00272\" name=\"l00272\"></a><span class=\"lineno\">  272</span>    UniformOptions  _uniformOptions;</div>\n+<div class=\"line\"><a id=\"l00273\" name=\"l00273\"></a><span class=\"lineno\">  273</span>    AdaptiveOptions _adaptiveOptions;</div>\n+<div class=\"line\"><a id=\"l00274\" name=\"l00274\"></a><span class=\"lineno\">  274</span> </div>\n+<div class=\"line\"><a id=\"l00275\" name=\"l00275\"></a><span class=\"lineno\">  275</span>    <span class=\"comment\">//  Cumulative properties of all levels:</span></div>\n+<div class=\"line\"><a id=\"l00276\" name=\"l00276\"></a><span class=\"lineno\">  276</span>    <span class=\"keywordtype\">int</span> _totalVertices;</div>\n+<div class=\"line\"><a id=\"l00277\" name=\"l00277\"></a><span class=\"lineno\">  277</span>    <span class=\"keywordtype\">int</span> _totalEdges;</div>\n+<div class=\"line\"><a id=\"l00278\" name=\"l00278\"></a><span class=\"lineno\">  278</span>    <span class=\"keywordtype\">int</span> _totalFaces;</div>\n+<div class=\"line\"><a id=\"l00279\" name=\"l00279\"></a><span class=\"lineno\">  279</span>    <span class=\"keywordtype\">int</span> _totalFaceVertices;</div>\n+<div class=\"line\"><a id=\"l00280\" name=\"l00280\"></a><span class=\"lineno\">  280</span>    <span class=\"keywordtype\">int</span> _maxValence;</div>\n+<div class=\"line\"><a id=\"l00281\" name=\"l00281\"></a><span class=\"lineno\">  281</span> </div>\n+<div class=\"line\"><a id=\"l00282\" name=\"l00282\"></a><span class=\"lineno\">  282</span>    <span class=\"comment\">//  Note the base level may be shared with another instance</span></div>\n+<div class=\"line\"><a id=\"l00283\" name=\"l00283\"></a><span class=\"lineno\">  283</span>    <span class=\"keywordtype\">bool</span> _baseLevelOwned;</div>\n+<div class=\"line\"><a id=\"l00284\" name=\"l00284\"></a><span class=\"lineno\">  284</span> </div>\n+<div class=\"line\"><a id=\"l00285\" name=\"l00285\"></a><span class=\"lineno\">  285</span>    std::vector&lt;Vtr::internal::Level *&gt;      _levels;</div>\n+<div class=\"line\"><a id=\"l00286\" name=\"l00286\"></a><span class=\"lineno\">  286</span>    std::vector&lt;Vtr::internal::Refinement *&gt; _refinements;</div>\n+<div class=\"line\"><a id=\"l00287\" name=\"l00287\"></a><span class=\"lineno\">  287</span> </div>\n+<div class=\"line\"><a id=\"l00288\" name=\"l00288\"></a><span class=\"lineno\">  288</span>    std::vector&lt;TopologyLevel&gt; _farLevels;</div>\n+<div class=\"line\"><a id=\"l00289\" name=\"l00289\"></a><span class=\"lineno\">  289</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00290\" name=\"l00290\"></a><span class=\"lineno\">  290</span> </div>\n+<div class=\"line\"><a id=\"l00291\" name=\"l00291\"></a><span class=\"lineno\">  291</span> </div>\n+<div class=\"line\"><a id=\"l00292\" name=\"l00292\"></a><span class=\"lineno\">  292</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span></div>\n+<div class=\"foldopen\" id=\"foldopen00293\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00293\" name=\"l00293\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#aa9be824a572029f3ec1e0c0d6cfecd77\">  293</a></span><a class=\"code hl_function\" href=\"a01121.html#aa9be824a572029f3ec1e0c0d6cfecd77\">TopologyRefiner::GetNumFVarChannels</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00294\" name=\"l00294\"></a><span class=\"lineno\">  294</span> </div>\n+<div class=\"line\"><a id=\"l00295\" name=\"l00295\"></a><span class=\"lineno\">  295</span>    <span class=\"keywordflow\">return</span> _levels[0]-&gt;getNumFVarChannels();</div>\n+<div class=\"line\"><a id=\"l00296\" name=\"l00296\"></a><span class=\"lineno\">  296</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00297\" name=\"l00297\"></a><span class=\"lineno\">  297</span><span class=\"keyword\">inline</span> <a class=\"code hl_enumeration\" href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167b\">Sdc::Options::FVarLinearInterpolation</a></div>\n+<div class=\"foldopen\" id=\"foldopen00298\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00298\" name=\"l00298\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01121.html#af29a7e9914ee6860c7167300ea17e514\">  298</a></span><a class=\"code hl_function\" href=\"a01121.html#af29a7e9914ee6860c7167300ea17e514\">TopologyRefiner::GetFVarLinearInterpolation</a>(<span class=\"keywordtype\">int</span> channel)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00299\" name=\"l00299\"></a><span class=\"lineno\">  299</span> </div>\n+<div class=\"line\"><a id=\"l00300\" name=\"l00300\"></a><span class=\"lineno\">  300</span>    <span class=\"keywordflow\">return</span> _levels[0]-&gt;getFVarOptions(channel).GetFVarLinearInterpolation();</div>\n+<div class=\"line\"><a id=\"l00301\" name=\"l00301\"></a><span class=\"lineno\">  301</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00302\" name=\"l00302\"></a><span class=\"lineno\">  302</span> </div>\n+<div class=\"line\"><a id=\"l00303\" name=\"l00303\"></a><span class=\"lineno\">  303</span>} <span class=\"comment\">// end namespace Far</span></div>\n+<div class=\"line\"><a id=\"l00304\" name=\"l00304\"></a><span class=\"lineno\">  304</span> </div>\n+<div class=\"line\"><a id=\"l00305\" name=\"l00305\"></a><span class=\"lineno\">  305</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00306\" name=\"l00306\"></a><span class=\"lineno\">  306</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\">  307</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l00308\" name=\"l00308\"></a><span class=\"lineno\">  308</span> </div>\n+<div class=\"line\"><a id=\"l00309\" name=\"l00309\"></a><span class=\"lineno\">  309</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_FAR_TOPOLOGY_REFINER_H */</span><span class=\"preprocessor\"></span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa00908_html_a35788aa710e3f7e277e5f0b008d76d61\"><div class=\"ttname\"><a href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">OpenSubdiv::OPENSUBDIV_VERSION::Far::ConstIndexArray</a></div><div class=\"ttdeci\">Vtr::ConstIndexArray ConstIndexArray</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01486_source.html#l00047\">types.h:47</a></div></div>\n+<div class=\"ttc\" id=\"aa00913_html_aa3daa2f428c6be2b1cb394f3a525833d\"><div class=\"ttname\"><a href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833d\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::SchemeType</a></div><div class=\"ttdeci\">SchemeType</div><div class=\"ttdoc\">Enumerated type for all subdivision schemes supported by OpenSubdiv.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01492_source.html#l00037\">types.h:37</a></div></div>\n+<div class=\"ttc\" id=\"aa01029_html\"><div class=\"ttname\"><a href=\"a01029.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PrimvarRefinerReal</a></div><div class=\"ttdoc\">Applies refinement operations to generic primvar data.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00851_source.html#l00056\">primvarRefiner.h:56</a></div></div>\n+<div class=\"ttc\" id=\"aa01041_html\"><div class=\"ttname\"><a href=\"a01041.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PtexIndices</a></div><div class=\"ttdoc\">Object used to compute and query ptex face indices.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00848_source.html#l00046\">ptexIndices.h:46</a></div></div>\n+<div class=\"ttc\" id=\"aa01113_html\"><div class=\"ttname\"><a href=\"a01113.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel</a></div><div class=\"ttdoc\">An interface for accessing data in a specific level of a refined topology hierarchy.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00821_source.html#l00049\">topologyLevel.h:49</a></div></div>\n+<div class=\"ttc\" id=\"aa01117_html\"><div class=\"ttname\"><a href=\"a01117.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory</a></div><div class=\"ttdoc\">Factory for constructing TopologyRefiners from specific mesh classes.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00827_source.html#l00078\">topologyRefinerFactory.h:78</a></div></div>\n+<div class=\"ttc\" id=\"aa01121_html\"><div class=\"ttname\"><a href=\"a01121.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner</a></div><div class=\"ttdoc\">Stores topology data for a specified set of refinement options.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00051\">topologyRefiner.h:51</a></div></div>\n+<div class=\"ttc\" id=\"aa01121_html_a13c709a24feeed80409924510e3efc5e\"><div class=\"ttname\"><a href=\"a01121.html#a13c709a24feeed80409924510e3efc5e\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::TopologyRefiner</a></div><div class=\"ttdeci\">TopologyRefiner(TopologyRefiner const &amp;source)</div></div>\n+<div class=\"ttc\" id=\"aa01121_html_a14bf987459715b918b370247bb24a61c\"><div class=\"ttname\"><a href=\"a01121.html#a14bf987459715b918b370247bb24a61c\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::GetMaxValence</a></div><div class=\"ttdeci\">int GetMaxValence() const</div><div class=\"ttdoc\">Returns the maximum vertex valence in all levels.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00077\">topologyRefiner.h:77</a></div></div>\n+<div class=\"ttc\" id=\"aa01121_html_a1712dfb8f057c939b48f6fb62c4c66e8\"><div class=\"ttname\"><a href=\"a01121.html#a1712dfb8f057c939b48f6fb62c4c66e8\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::getLevel</a></div><div class=\"ttdeci\">Vtr::internal::Level const &amp; getLevel(int l) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00237\">topologyRefiner.h:237</a></div></div>\n+<div class=\"ttc\" id=\"aa01121_html_a1b68f0501aabb94ba410e006181d2cc5\"><div class=\"ttname\"><a href=\"a01121.html#a1b68f0501aabb94ba410e006181d2cc5\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::HasHoles</a></div><div class=\"ttdeci\">bool HasHoles() const</div><div class=\"ttdoc\">Returns true if faces have been tagged as holes.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00080\">topologyRefiner.h:80</a></div></div>\n+<div class=\"ttc\" id=\"aa01121_html_a239ca467443788cab395336ec33c7dbe\"><div class=\"ttname\"><a href=\"a01121.html#a239ca467443788cab395336ec33c7dbe\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::GetNumLevels</a></div><div class=\"ttdeci\">int GetNumLevels() const</div><div class=\"ttdoc\">Returns the number of refinement levels.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00071\">topologyRefiner.h:71</a></div></div>\n+<div class=\"ttc\" id=\"aa01121_html_a30e986821916537de9d85e6b032ff5da\"><div class=\"ttname\"><a href=\"a01121.html#a30e986821916537de9d85e6b032ff5da\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::GetNumFVarValuesTotal</a></div><div class=\"ttdeci\">int GetNumFVarValuesTotal(int channel=0) const</div><div class=\"ttdoc\">Returns the total number of face-varying values in all levels.</div></div>\n+<div class=\"ttc\" id=\"aa01121_html_a402a532c087e1e0041ad6bb613b1a79e\"><div class=\"ttname\"><a href=\"a01121.html#a402a532c087e1e0041ad6bb613b1a79e\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::getRefinement</a></div><div class=\"ttdeci\">Vtr::internal::Refinement const &amp; getRefinement(int l) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00240\">topologyRefiner.h:240</a></div></div>\n+<div class=\"ttc\" id=\"aa01121_html_a4528f38657b0c96bce6c3d7deffd7c02\"><div class=\"ttname\"><a href=\"a01121.html#a4528f38657b0c96bce6c3d7deffd7c02\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::GetSchemeOptions</a></div><div class=\"ttdeci\">Sdc::Options GetSchemeOptions() const</div><div class=\"ttdoc\">Returns the subdivision options.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00065\">topologyRefiner.h:65</a></div></div>\n+<div class=\"ttc\" id=\"aa01121_html_a523d4cb42fe52e7b330bd027712c7f04\"><div class=\"ttname\"><a href=\"a01121.html#a523d4cb42fe52e7b330bd027712c7f04\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::getLevel</a></div><div class=\"ttdeci\">Vtr::internal::Level &amp; getLevel(int l)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00236\">topologyRefiner.h:236</a></div></div>\n+<div class=\"ttc\" id=\"aa01121_html_a5dfa6810f510fac1ec621fc9e6b530c4\"><div class=\"ttname\"><a href=\"a01121.html#a5dfa6810f510fac1ec621fc9e6b530c4\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::IsUniform</a></div><div class=\"ttdeci\">bool IsUniform() const</div><div class=\"ttdoc\">Returns true if uniform refinement has been applied.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00068\">topologyRefiner.h:68</a></div></div>\n+<div class=\"ttc\" id=\"aa01121_html_a758e06255013d2d7393c3ac2d18f6922\"><div class=\"ttname\"><a href=\"a01121.html#a758e06255013d2d7393c3ac2d18f6922\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::GetSchemeType</a></div><div class=\"ttdeci\">Sdc::SchemeType GetSchemeType() const</div><div class=\"ttdoc\">Returns the subdivision scheme.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00062\">topologyRefiner.h:62</a></div></div>\n+<div class=\"ttc\" id=\"aa01121_html_a7d0b5dc6f7f567507a906e00d1887151\"><div class=\"ttname\"><a href=\"a01121.html#a7d0b5dc6f7f567507a906e00d1887151\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::GetMaxLevel</a></div><div class=\"ttdeci\">int GetMaxLevel() const</div><div class=\"ttdoc\">Returns the highest level of refinement.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00074\">topologyRefiner.h:74</a></div></div>\n+<div class=\"ttc\" id=\"aa01121_html_a91353962838bff64448014136e0e11ff\"><div class=\"ttname\"><a href=\"a01121.html#a91353962838bff64448014136e0e11ff\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::TopologyRefiner</a></div><div class=\"ttdeci\">TopologyRefiner(Sdc::SchemeType type, Sdc::Options options=Sdc::Options())</div><div class=\"ttdoc\">Constructor.</div></div>\n+<div class=\"ttc\" id=\"aa01121_html_a96f712a5e40873f00b0b61f72ffb9e3c\"><div class=\"ttname\"><a href=\"a01121.html#a96f712a5e40873f00b0b61f72ffb9e3c\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::GetNumEdgesTotal</a></div><div class=\"ttdeci\">int GetNumEdgesTotal() const</div><div class=\"ttdoc\">Returns the total number of edges in all levels.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00086\">topologyRefiner.h:86</a></div></div>\n+<div class=\"ttc\" id=\"aa01121_html_a97612a1a955f8b65e6d7e7761ed1cef7\"><div class=\"ttname\"><a href=\"a01121.html#a97612a1a955f8b65e6d7e7761ed1cef7\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::PatchBuilder</a></div><div class=\"ttdeci\">friend class PatchBuilder</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00226\">topologyRefiner.h:226</a></div></div>\n+<div class=\"ttc\" id=\"aa01121_html_aa9be824a572029f3ec1e0c0d6cfecd77\"><div class=\"ttname\"><a href=\"a01121.html#aa9be824a572029f3ec1e0c0d6cfecd77\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::GetNumFVarChannels</a></div><div class=\"ttdeci\">int GetNumFVarChannels() const</div><div class=\"ttdoc\">Returns the number of face-varying channels in the tables.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00293\">topologyRefiner.h:293</a></div></div>\n+<div class=\"ttc\" id=\"aa01121_html_abb1241288f333733e84a5676f55f6bb9\"><div class=\"ttname\"><a href=\"a01121.html#abb1241288f333733e84a5676f55f6bb9\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::GetUniformOptions</a></div><div class=\"ttdeci\">UniformOptions GetUniformOptions() const</div><div class=\"ttdoc\">Returns the options specified on refinement.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00149\">topologyRefiner.h:149</a></div></div>\n+<div class=\"ttc\" id=\"aa01121_html_ac5eadebfdd9b11ac383653e5a2383231\"><div class=\"ttname\"><a href=\"a01121.html#ac5eadebfdd9b11ac383653e5a2383231\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::GetNumFacesTotal</a></div><div class=\"ttdeci\">int GetNumFacesTotal() const</div><div class=\"ttdoc\">Returns the total number of edges in all levels.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00089\">topologyRefiner.h:89</a></div></div>\n+<div class=\"ttc\" id=\"aa01121_html_accbb5f2a2fa9138df8c399b9f1d37982\"><div class=\"ttname\"><a href=\"a01121.html#accbb5f2a2fa9138df8c399b9f1d37982\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::GetNumFaceVerticesTotal</a></div><div class=\"ttdeci\">int GetNumFaceVerticesTotal() const</div><div class=\"ttdoc\">Returns the total number of face vertices in all levels.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00092\">topologyRefiner.h:92</a></div></div>\n+<div class=\"ttc\" id=\"aa01121_html_ad111e17222fca3c7877734ef1780e37f\"><div class=\"ttname\"><a href=\"a01121.html#ad111e17222fca3c7877734ef1780e37f\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::getRefinement</a></div><div class=\"ttdeci\">Vtr::internal::Refinement &amp; getRefinement(int l)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00239\">topologyRefiner.h:239</a></div></div>\n+<div class=\"ttc\" id=\"aa01121_html_ad22b7ffd9f8f3b488e5f220cf00c8c82\"><div class=\"ttname\"><a href=\"a01121.html#ad22b7ffd9f8f3b488e5f220cf00c8c82\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::RefineUniform</a></div><div class=\"ttdeci\">void RefineUniform(UniformOptions options)</div><div class=\"ttdoc\">Refine the topology uniformly.</div></div>\n+<div class=\"ttc\" id=\"aa01121_html_ad34359a8dc42748122362e459f1409aa\"><div class=\"ttname\"><a href=\"a01121.html#ad34359a8dc42748122362e459f1409aa\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::~TopologyRefiner</a></div><div class=\"ttdeci\">~TopologyRefiner()</div><div class=\"ttdoc\">Destructor.</div></div>\n+<div class=\"ttc\" id=\"aa01121_html_ad452cef79832abb71eef0c3d88acc1a0\"><div class=\"ttname\"><a href=\"a01121.html#ad452cef79832abb71eef0c3d88acc1a0\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::PatchTableBuilder</a></div><div class=\"ttdeci\">friend class PatchTableBuilder</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00225\">topologyRefiner.h:225</a></div></div>\n+<div class=\"ttc\" id=\"aa01121_html_adc03a3531bd92ada5669788241e3515f\"><div class=\"ttname\"><a href=\"a01121.html#adc03a3531bd92ada5669788241e3515f\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::GetLevel</a></div><div class=\"ttdeci\">TopologyLevel const &amp; GetLevel(int level) const</div><div class=\"ttdoc\">Returns a handle to access data specific to a particular level.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00095\">topologyRefiner.h:95</a></div></div>\n+<div class=\"ttc\" id=\"aa01121_html_ae8ef99a47f8185a3a621e4d5b10a20a0\"><div class=\"ttname\"><a href=\"a01121.html#ae8ef99a47f8185a3a621e4d5b10a20a0\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::GetNumVerticesTotal</a></div><div class=\"ttdeci\">int GetNumVerticesTotal() const</div><div class=\"ttdoc\">Returns the total number of vertices in all levels.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00083\">topologyRefiner.h:83</a></div></div>\n+<div class=\"ttc\" id=\"aa01121_html_ae93be3ade4e67999007460900bbbe039\"><div class=\"ttname\"><a href=\"a01121.html#ae93be3ade4e67999007460900bbbe039\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::Unrefine</a></div><div class=\"ttdeci\">void Unrefine()</div><div class=\"ttdoc\">Unrefine the topology, keeping only the base level.</div></div>\n+<div class=\"ttc\" id=\"aa01121_html_af1cb63210dc03f27cbdb15dc4d3c48b6\"><div class=\"ttname\"><a href=\"a01121.html#af1cb63210dc03f27cbdb15dc4d3c48b6\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::GetAdaptiveOptions</a></div><div class=\"ttdeci\">AdaptiveOptions GetAdaptiveOptions() const</div><div class=\"ttdoc\">Returns the options specified on refinement.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00196\">topologyRefiner.h:196</a></div></div>\n+<div class=\"ttc\" id=\"aa01121_html_af29a7e9914ee6860c7167300ea17e514\"><div class=\"ttname\"><a href=\"a01121.html#af29a7e9914ee6860c7167300ea17e514\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::GetFVarLinearInterpolation</a></div><div class=\"ttdeci\">Sdc::Options::FVarLinearInterpolation GetFVarLinearInterpolation(int channel=0) const</div><div class=\"ttdoc\">Returns the face-varying interpolation rule set for a given channel.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00298\">topologyRefiner.h:298</a></div></div>\n+<div class=\"ttc\" id=\"aa01121_html_aff92309935db19988908471bee4fef4d\"><div class=\"ttname\"><a href=\"a01121.html#aff92309935db19988908471bee4fef4d\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::RefineAdaptive</a></div><div class=\"ttdeci\">void RefineAdaptive(AdaptiveOptions options, ConstIndexArray selectedFaces=ConstIndexArray())</div><div class=\"ttdoc\">Feature Adaptive topology refinement.</div></div>\n+<div class=\"ttc\" id=\"aa01125_html\"><div class=\"ttname\"><a href=\"a01125.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::UniformOptions</a></div><div class=\"ttdoc\">Uniform refinement options.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00118\">topologyRefiner.h:118</a></div></div>\n+<div class=\"ttc\" id=\"aa01125_html_a240d1e5f5b743486e8122db6223d4562\"><div class=\"ttname\"><a href=\"a01125.html#a240d1e5f5b743486e8122db6223d4562\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::UniformOptions::refinementLevel</a></div><div class=\"ttdeci\">unsigned int refinementLevel</div><div class=\"ttdoc\">Number of refinement iterations.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00128\">topologyRefiner.h:128</a></div></div>\n+<div class=\"ttc\" id=\"aa01125_html_a3b1e47f9568213cc322ef29a84c932b6\"><div class=\"ttname\"><a href=\"a01125.html#a3b1e47f9568213cc322ef29a84c932b6\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::UniformOptions::orderVerticesFromFacesFirst</a></div><div class=\"ttdeci\">unsigned int orderVerticesFromFacesFirst</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00129\">topologyRefiner.h:130</a></div></div>\n+<div class=\"ttc\" id=\"aa01125_html_a47a5b6a174f91a113c7f50b1b55bd664\"><div class=\"ttname\"><a href=\"a01125.html#a47a5b6a174f91a113c7f50b1b55bd664\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::UniformOptions::SetRefinementLevel</a></div><div class=\"ttdeci\">void SetRefinementLevel(int level)</div><div class=\"ttdoc\">Set uniform refinement level.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00126\">topologyRefiner.h:126</a></div></div>\n+<div class=\"ttc\" id=\"aa01125_html_ad58e8c2606ce33af17bb83fb90eb7325\"><div class=\"ttname\"><a href=\"a01125.html#ad58e8c2606ce33af17bb83fb90eb7325\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::UniformOptions::fullTopologyInLastLevel</a></div><div class=\"ttdeci\">unsigned int fullTopologyInLastLevel</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00131\">topologyRefiner.h:131</a></div></div>\n+<div class=\"ttc\" id=\"aa01125_html_af20c4ed6bf53695afb4a978fdf472ed3\"><div class=\"ttname\"><a href=\"a01125.html#af20c4ed6bf53695afb4a978fdf472ed3\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::UniformOptions::UniformOptions</a></div><div class=\"ttdeci\">UniformOptions(int level)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00120\">topologyRefiner.h:120</a></div></div>\n+<div class=\"ttc\" id=\"aa01129_html\"><div class=\"ttname\"><a href=\"a01129.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::AdaptiveOptions</a></div><div class=\"ttdoc\">Adaptive refinement options.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00156\">topologyRefiner.h:156</a></div></div>\n+<div class=\"ttc\" id=\"aa01129_html_a1c8854b9dd7ff2353b618434d08d054a\"><div class=\"ttname\"><a href=\"a01129.html#a1c8854b9dd7ff2353b618434d08d054a\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::AdaptiveOptions::secondaryLevel</a></div><div class=\"ttdeci\">unsigned int secondaryLevel</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00174\">topologyRefiner.h:174</a></div></div>\n+<div class=\"ttc\" id=\"aa01129_html_a3b1e47f9568213cc322ef29a84c932b6\"><div class=\"ttname\"><a href=\"a01129.html#a3b1e47f9568213cc322ef29a84c932b6\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::AdaptiveOptions::orderVerticesFromFacesFirst</a></div><div class=\"ttdeci\">unsigned int orderVerticesFromFacesFirst</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00182\">topologyRefiner.h:182</a></div></div>\n+<div class=\"ttc\" id=\"aa01129_html_a3c39e6532871f8952e2f94332b8c80bf\"><div class=\"ttname\"><a href=\"a01129.html#a3c39e6532871f8952e2f94332b8c80bf\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::AdaptiveOptions::AdaptiveOptions</a></div><div class=\"ttdeci\">AdaptiveOptions(int level)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00158\">topologyRefiner.h:158</a></div></div>\n+<div class=\"ttc\" id=\"aa01129_html_a5561c34bac948dc836506e8e8d3ee134\"><div class=\"ttname\"><a href=\"a01129.html#a5561c34bac948dc836506e8e8d3ee134\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::AdaptiveOptions::isolationLevel</a></div><div class=\"ttdeci\">unsigned int isolationLevel</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00172\">topologyRefiner.h:172</a></div></div>\n+<div class=\"ttc\" id=\"aa01129_html_a5834971432c649e28d5a0186f79a60d5\"><div class=\"ttname\"><a href=\"a01129.html#a5834971432c649e28d5a0186f79a60d5\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::AdaptiveOptions::useSingleCreasePatch</a></div><div class=\"ttdeci\">unsigned int useSingleCreasePatch</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00176\">topologyRefiner.h:176</a></div></div>\n+<div class=\"ttc\" id=\"aa01129_html_a5eba866952b7be15b065060b1f5a81da\"><div class=\"ttname\"><a href=\"a01129.html#a5eba866952b7be15b065060b1f5a81da\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::AdaptiveOptions::useInfSharpPatch</a></div><div class=\"ttdeci\">unsigned int useInfSharpPatch</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00178\">topologyRefiner.h:178</a></div></div>\n+<div class=\"ttc\" id=\"aa01129_html_a5ef292b43e4824968e72d664012be93f\"><div class=\"ttname\"><a href=\"a01129.html#a5ef292b43e4824968e72d664012be93f\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::AdaptiveOptions::SetIsolationLevel</a></div><div class=\"ttdeci\">void SetIsolationLevel(int level)</div><div class=\"ttdoc\">Set isolation level.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00167\">topologyRefiner.h:167</a></div></div>\n+<div class=\"ttc\" id=\"aa01129_html_a74c90a5955fcad9c95d4c18346f7c312\"><div class=\"ttname\"><a href=\"a01129.html#a74c90a5955fcad9c95d4c18346f7c312\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::AdaptiveOptions::considerFVarChannels</a></div><div class=\"ttdeci\">unsigned int considerFVarChannels</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00180\">topologyRefiner.h:180</a></div></div>\n+<div class=\"ttc\" id=\"aa01129_html_aef7c0b69c6709719e4d985ca7b5d6dd6\"><div class=\"ttname\"><a href=\"a01129.html#aef7c0b69c6709719e4d985ca7b5d6dd6\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::AdaptiveOptions::SetSecondaryLevel</a></div><div class=\"ttdeci\">void SetSecondaryLevel(int level)</div><div class=\"ttdoc\">Set secondary isolation level.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00170\">topologyRefiner.h:170</a></div></div>\n+<div class=\"ttc\" id=\"aa01133_html\"><div class=\"ttname\"><a href=\"a01133.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactoryBase</a></div><div class=\"ttdoc\">Private base class of Factories for constructing TopologyRefiners.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00827_source.html#l00047\">topologyRefinerFactory.h:47</a></div></div>\n+<div class=\"ttc\" id=\"aa01337_html\"><div class=\"ttname\"><a href=\"a01337.html\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options</a></div><div class=\"ttdoc\">All supported options applying to subdivision scheme.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00860_source.html#l00051\">options.h:51</a></div></div>\n+<div class=\"ttc\" id=\"aa01337_html_a5b87eaca6ca0833462c9d4ad84df167b\"><div class=\"ttname\"><a href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167b\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::FVarLinearInterpolation</a></div><div class=\"ttdeci\">FVarLinearInterpolation</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00860_source.html#l00060\">options.h:60</a></div></div>\n+<div class=\"ttc\" id=\"aa01353_html\"><div class=\"ttname\"><a href=\"a01353.html\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00797_source.html#l00053\">array.h:53</a></div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00833.html\">clPatchTable.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7f420b72a822828cfa8b0561c695a5cc.html\">far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00833.html\">topologyRefiner.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-clPatchTable.h\n+topologyRefiner.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2015 Pixar\n+2// Copyright 2014 DreamWorks Animation LLC.\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -23,175 +23,441 @@\n 17//\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n-24\n-25#ifndef OPENSUBDIV3_OSD_CL_PATCH_TABLE_H\n-26#define OPENSUBDIV3_OSD_CL_PATCH_TABLE_H\n-27\n-28#include \"../version.h\"\n-29\n-30#include \"../osd/opencl.h\"\n-31#include \"../osd/nonCopyable.h\"\n-32#include \"../osd/types.h\"\n+24#ifndef OPENSUBDIV3_FAR_TOPOLOGY_REFINER_H\n+25#define OPENSUBDIV3_FAR_TOPOLOGY_REFINER_H\n+26\n+27#include \"../version.h\"\n+28\n+29#include \"../sdc/types.h\"\n+30#include \"../sdc/options.h\"\n+31#include \"../far/types.h\"\n+32#include \"../far/topologyLevel.h\"\n 33\n 34#include <vector>\n 35\n-36namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-37namespace OPENSUBDIV_VERSION {\n-38\n-39namespace Far{\n-40 class PatchTable;\n-41};\n+36\n+37namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+38namespace OPENSUBDIV_VERSION {\n+39\n+_\b4_\b0namespace Vtr { namespace internal { class SparseSelector; } }\n+41namespace Far { namespace internal { class FeatureMask; } }\n 42\n-43namespace Osd {\n+43namespace Far {\n 44\n-_\b5_\b2class _\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be : private NonCopyable<CLPatchTable> {\n+45template <typename REAL> class PrimvarRefinerReal;\n+46template <class MESH> class TopologyRefinerFactory;\n+47\n+_\b5_\b1class _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br {\n+52\n 53public:\n-_\b5_\b5 static _\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be *_\bC_\br_\be_\ba_\bt_\be(_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be const *patchTable,\n-56 cl_context clContext);\n+54\n+_\b5_\b6 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br(_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\bT_\by_\bp_\be type, _\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs options = _\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n+());\n 57\n-58 template <typename DEVICE_CONTEXT>\n-_\b5_\b9 static _\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be * _\bC_\br_\be_\ba_\bt_\be(_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be const *patchTable,\n-60 DEVICE_CONTEXT context) {\n-61 return _\bC_\br_\be_\ba_\bt_\be(patchTable, context->GetContext());\n-62 }\n+_\b5_\b9 _\b~_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br();\n+60\n+_\b6_\b2 _\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\bT_\by_\bp_\be _\bG_\be_\bt_\bS_\bc_\bh_\be_\bm_\be_\bT_\by_\bp_\be() const { return _subdivType; }\n 63\n-_\b6_\b5 _\b~_\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be();\n+_\b6_\b5 _\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs _\bG_\be_\bt_\bS_\bc_\bh_\be_\bm_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs() const { return _subdivOptions; }\n 66\n-_\b6_\b8 cl_mem _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bB_\bu_\bf_\bf_\be_\br() const { return _\b__\bp_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs; }\n+_\b6_\b8 bool _\bI_\bs_\bU_\bn_\bi_\bf_\bo_\br_\bm() const { return _isUniform; }\n 69\n-_\b7_\b1 cl_mem _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br() const { return _\b__\bi_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br; }\n+_\b7_\b1 int _\bG_\be_\bt_\bN_\bu_\bm_\bL_\be_\bv_\be_\bl_\bs() const { return (int)_farLevels.size(); }\n 72\n-_\b7_\b4 cl_mem _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br() const { return _\b__\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br; }\n+_\b7_\b4 int _\bG_\be_\bt_\bM_\ba_\bx_\bL_\be_\bv_\be_\bl() const { return _maxLevel; }\n 75\n-_\b7_\b7 cl_mem _\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bB_\bu_\bf_\bf_\be_\br() const { return _\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs; }\n+_\b7_\b7 int _\bG_\be_\bt_\bM_\ba_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be() const { return _maxValence; }\n 78\n-_\b8_\b0 cl_mem _\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br() const { return _\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br; }\n+_\b8_\b0 bool _\bH_\ba_\bs_\bH_\bo_\bl_\be_\bs() const { return _hasHoles; }\n 81\n-_\b8_\b3 int _\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs() const { return (int)_\b__\bf_\bv_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs.size(); }\n+_\b8_\b3 int _\bG_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs_\bT_\bo_\bt_\ba_\bl() const { return _totalVertices; }\n 84\n-_\b8_\b6 cl_mem _\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bB_\bu_\bf_\bf_\be_\br(int fvarChannel = 0) const { return\n-_\b__\bf_\bv_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs[fvarChannel]; }\n+_\b8_\b6 int _\bG_\be_\bt_\bN_\bu_\bm_\bE_\bd_\bg_\be_\bs_\bT_\bo_\bt_\ba_\bl() const { return _totalEdges; }\n 87\n-_\b8_\b9 cl_mem _\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br(int fvarChannel = 0) const { return\n-_\b__\bf_\bv_\ba_\br_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bs[fvarChannel]; }\n+_\b8_\b9 int _\bG_\be_\bt_\bN_\bu_\bm_\bF_\ba_\bc_\be_\bs_\bT_\bo_\bt_\ba_\bl() const { return _totalFaces; }\n 90\n-_\b9_\b2 cl_mem _\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br(int fvarChannel = 0) const { return\n-_\b__\bf_\bv_\ba_\br_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br_\bs[fvarChannel]; }\n+_\b9_\b2 int _\bG_\be_\bt_\bN_\bu_\bm_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\bi_\bc_\be_\bs_\bT_\bo_\bt_\ba_\bl() const { return _totalFaceVertices; }\n 93\n-94protected:\n-_\b9_\b5 _\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be();\n+_\b9_\b5 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl const & _\bG_\be_\bt_\bL_\be_\bv_\be_\bl(int level) const { return _farLevels[level];\n+}\n 96\n-_\b9_\b7 bool _\ba_\bl_\bl_\bo_\bc_\ba_\bt_\be(_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be const *patchTable, cl_context clContext);\n 98\n-_\b9_\b9 cl_mem _\b__\bp_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs;\n-_\b1_\b0_\b0 cl_mem _\b__\bi_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br;\n-_\b1_\b0_\b1 cl_mem _\b__\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br;\n-102\n-_\b1_\b0_\b3 cl_mem _\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs;\n-_\b1_\b0_\b4 cl_mem _\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br;\n-105\n-_\b1_\b0_\b6 std::vector<cl_mem> _\b__\bf_\bv_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs;\n-_\b1_\b0_\b7 std::vector<cl_mem> _\b__\bf_\bv_\ba_\br_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bs;\n-_\b1_\b0_\b8 std::vector<cl_mem> _\b__\bf_\bv_\ba_\br_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br_\bs;\n-109\n-110};\n-111\n-112} // end namespace Osd\n-113\n-114} // end namespace OPENSUBDIV_VERSION\n-115using namespace OPENSUBDIV_VERSION;\n-116\n-117} // end namespace OpenSubdiv\n-118\n-119#endif // OPENSUBDIV3_OSD_CL_PATCH_TABLE_H\n+100\n+101 //\n+102 // Uniform refinement\n+103 //\n+104\n+_\b1_\b1_\b8 struct _\bU_\bn_\bi_\bf_\bo_\br_\bm_\bO_\bp_\bt_\bi_\bo_\bn_\bs {\n+119\n+_\b1_\b2_\b0 _\bU_\bn_\bi_\bf_\bo_\br_\bm_\bO_\bp_\bt_\bi_\bo_\bn_\bs(int level) :\n+121 _\br_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt_\bL_\be_\bv_\be_\bl(level & 0xf),\n+122 _\bo_\br_\bd_\be_\br_\bV_\be_\br_\bt_\bi_\bc_\be_\bs_\bF_\br_\bo_\bm_\bF_\ba_\bc_\be_\bs_\bF_\bi_\br_\bs_\bt(false),\n+123 _\bf_\bu_\bl_\bl_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bI_\bn_\bL_\ba_\bs_\bt_\bL_\be_\bv_\be_\bl(false) { }\n+124\n+_\b1_\b2_\b6 void _\bS_\be_\bt_\bR_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt_\bL_\be_\bv_\be_\bl(int level) { _\br_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt_\bL_\be_\bv_\be_\bl = level & 0xf; }\n+127\n+_\b1_\b2_\b8 unsigned int _\br_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt_\bL_\be_\bv_\be_\bl:4,\n+_\b1_\b2_\b9 _\bo_\br_\bd_\be_\br_\bV_\be_\br_\bt_\bi_\bc_\be_\bs_\bF_\br_\bo_\bm_\bF_\ba_\bc_\be_\bs_\bF_\bi_\br_\bs_\bt:1,\n+_\b1_\b3_\b1 _\bf_\bu_\bl_\bl_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bI_\bn_\bL_\ba_\bs_\bt_\bL_\be_\bv_\be_\bl:1;\n+134 };\n+135\n+_\b1_\b4_\b6 void _\bR_\be_\bf_\bi_\bn_\be_\bU_\bn_\bi_\bf_\bo_\br_\bm(_\bU_\bn_\bi_\bf_\bo_\br_\bm_\bO_\bp_\bt_\bi_\bo_\bn_\bs options);\n+147\n+_\b1_\b4_\b9 _\bU_\bn_\bi_\bf_\bo_\br_\bm_\bO_\bp_\bt_\bi_\bo_\bn_\bs _\bG_\be_\bt_\bU_\bn_\bi_\bf_\bo_\br_\bm_\bO_\bp_\bt_\bi_\bo_\bn_\bs() const { return _uniformOptions; }\n+150\n+151 //\n+152 // Adaptive refinement\n+153 //\n+154\n+_\b1_\b5_\b6 struct _\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs {\n+157\n+_\b1_\b5_\b8 _\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs(int level) :\n+159 _\bi_\bs_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bL_\be_\bv_\be_\bl(level & 0xf),\n+160 _\bs_\be_\bc_\bo_\bn_\bd_\ba_\br_\by_\bL_\be_\bv_\be_\bl(0xf),\n+161 _\bu_\bs_\be_\bS_\bi_\bn_\bg_\bl_\be_\bC_\br_\be_\ba_\bs_\be_\bP_\ba_\bt_\bc_\bh(false),\n+162 _\bu_\bs_\be_\bI_\bn_\bf_\bS_\bh_\ba_\br_\bp_\bP_\ba_\bt_\bc_\bh(false),\n+163 _\bc_\bo_\bn_\bs_\bi_\bd_\be_\br_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs(false),\n+164 _\bo_\br_\bd_\be_\br_\bV_\be_\br_\bt_\bi_\bc_\be_\bs_\bF_\br_\bo_\bm_\bF_\ba_\bc_\be_\bs_\bF_\bi_\br_\bs_\bt(false) { }\n+165\n+_\b1_\b6_\b7 void _\bS_\be_\bt_\bI_\bs_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bL_\be_\bv_\be_\bl(int level) { _\bi_\bs_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bL_\be_\bv_\be_\bl = level & 0xf; }\n+168\n+_\b1_\b7_\b0 void _\bS_\be_\bt_\bS_\be_\bc_\bo_\bn_\bd_\ba_\br_\by_\bL_\be_\bv_\be_\bl(int level) { _\bs_\be_\bc_\bo_\bn_\bd_\ba_\br_\by_\bL_\be_\bv_\be_\bl = level & 0xf; }\n+171\n+_\b1_\b7_\b2 unsigned int _\bi_\bs_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bL_\be_\bv_\be_\bl:4;\n+_\b1_\b7_\b4 unsigned int _\bs_\be_\bc_\bo_\bn_\bd_\ba_\br_\by_\bL_\be_\bv_\be_\bl:4;\n+_\b1_\b7_\b6 unsigned int _\bu_\bs_\be_\bS_\bi_\bn_\bg_\bl_\be_\bC_\br_\be_\ba_\bs_\be_\bP_\ba_\bt_\bc_\bh:1;\n+_\b1_\b7_\b8 unsigned int _\bu_\bs_\be_\bI_\bn_\bf_\bS_\bh_\ba_\br_\bp_\bP_\ba_\bt_\bc_\bh:1;\n+_\b1_\b8_\b0 unsigned int _\bc_\bo_\bn_\bs_\bi_\bd_\be_\br_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs:1;\n+_\b1_\b8_\b2 unsigned int _\bo_\br_\bd_\be_\br_\bV_\be_\br_\bt_\bi_\bc_\be_\bs_\bF_\br_\bo_\bm_\bF_\ba_\bc_\be_\bs_\bF_\bi_\br_\bs_\bt:1;\n+184 };\n+185\n+_\b1_\b9_\b2 void _\bR_\be_\bf_\bi_\bn_\be_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be(_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs options,\n+193 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by selectedFaces = _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by());\n+194\n+_\b1_\b9_\b6 _\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs _\bG_\be_\bt_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs() const { return _adaptiveOptions; }\n+197\n+_\b1_\b9_\b9 void _\bU_\bn_\br_\be_\bf_\bi_\bn_\be();\n+200\n+201\n+203\n+205\n+207 int _\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs() const;\n+208\n+210 _\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bF_\bV_\ba_\br_\bL_\bi_\bn_\be_\ba_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn _\bG_\be_\bt_\bF_\bV_\ba_\br_\bL_\bi_\bn_\be_\ba_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn(int\n+channel = 0) const;\n+211\n+_\b2_\b1_\b3 int _\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bs_\bT_\bo_\bt_\ba_\bl(int channel = 0) const;\n+214\n+216\n+217protected:\n+218\n+219 //\n+220 // Lower level protected methods intended strictly for internal use:\n+221 //\n+222 template <class MESH>\n+_\b2_\b2_\b3 friend class _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by;\n+_\b2_\b2_\b4 friend class _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\bB_\ba_\bs_\be;\n+_\b2_\b2_\b5 friend class _\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bB_\bu_\bi_\bl_\bd_\be_\br;\n+_\b2_\b2_\b6 friend class _\bP_\ba_\bt_\bc_\bh_\bB_\bu_\bi_\bl_\bd_\be_\br;\n+_\b2_\b2_\b7 friend class _\bP_\bt_\be_\bx_\bI_\bn_\bd_\bi_\bc_\be_\bs;\n+228 template <typename REAL>\n+_\b2_\b2_\b9 friend class _\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl;\n+230\n+231 // Copy constructor exposed via the factory class:\n+_\b2_\b3_\b2 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const & source);\n+233\n+234public:\n+235 // Levels and Refinements available internally (avoids need for more\n+friends)\n+_\b2_\b3_\b6 Vtr::internal::Level & _\bg_\be_\bt_\bL_\be_\bv_\be_\bl(int l) { return *_levels[l]; }\n+_\b2_\b3_\b7 Vtr::internal::Level const & _\bg_\be_\bt_\bL_\be_\bv_\be_\bl(int l) const { return *_levels[l]; }\n+238\n+_\b2_\b3_\b9 Vtr::internal::Refinement & _\bg_\be_\bt_\bR_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt(int l) { return *_refinements[l];\n+}\n+_\b2_\b4_\b0 Vtr::internal::Refinement const & _\bg_\be_\bt_\bR_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt(int l) const { return\n+*_refinements[l]; }\n+241\n+242private:\n+243 // Not default constructible or copyable:\n+244 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br() : _uniformOptions(0), _adaptiveOptions(0) { }\n+245 TopologyRefiner & operator=(TopologyRefiner const &) { return *this; }\n+246\n+247 void selectFeatureAdaptiveComponents(Vtr::internal::SparseSelector&\n+selector,\n+248 internal::FeatureMask const & mask,\n+249 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by selectedFaces);\n+250 void selectLinearIrregularFaces(Vtr::internal::SparseSelector& selector,\n+251 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by selectedFaces);\n+252\n+253 void initializeInventory();\n+254 void updateInventory(Vtr::internal::Level const & newLevel);\n+255\n+256 void appendLevel(Vtr::internal::Level & newLevel);\n+257 void appendRefinement(Vtr::internal::Refinement & newRefinement);\n+258 void assembleFarLevels();\n+259\n+260private:\n+261\n+262 _\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\bT_\by_\bp_\be _subdivType;\n+263 _\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs _subdivOptions;\n+264\n+265 unsigned int _isUniform : 1;\n+266 unsigned int _hasHoles : 1;\n+267 unsigned int _hasIrregFaces : 1;\n+268 unsigned int _regFaceSize : 3;\n+269 unsigned int _maxLevel : 4;\n+270\n+271 // Options assigned on refinement:\n+272 UniformOptions _uniformOptions;\n+273 AdaptiveOptions _adaptiveOptions;\n+274\n+275 // Cumulative properties of all levels:\n+276 int _totalVertices;\n+277 int _totalEdges;\n+278 int _totalFaces;\n+279 int _totalFaceVertices;\n+280 int _maxValence;\n+281\n+282 // Note the base level may be shared with another instance\n+283 bool _baseLevelOwned;\n+284\n+285 std::vector<Vtr::internal::Level *> _levels;\n+286 std::vector<Vtr::internal::Refinement *> _refinements;\n+287\n+288 std::vector<TopologyLevel> _farLevels;\n+289};\n+290\n+291\n+292inline int\n+_\b2_\b9_\b3_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs() const {\n+294\n+295 return _levels[0]->getNumFVarChannels();\n+296}\n+297inline _\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bF_\bV_\ba_\br_\bL_\bi_\bn_\be_\ba_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+_\b2_\b9_\b8_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bG_\be_\bt_\bF_\bV_\ba_\br_\bL_\bi_\bn_\be_\ba_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn(int channel) const {\n+299\n+300 return _levels[0]->getFVarOptions(channel).GetFVarLinearInterpolation();\n+301}\n+302\n+303} // end namespace Far\n+304\n+305} // end namespace OPENSUBDIV_VERSION\n+306using namespace OPENSUBDIV_VERSION;\n+307} // end namespace OpenSubdiv\n+308\n+309#endif /* OPENSUBDIV3_FAR_TOPOLOGY_REFINER_H */\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n-Container for arrays of parametric patches.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n-CL patch table.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bf_\bv_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs\n-std::vector< cl_mem > _fvarPatchArrays\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b0_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b~_\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n-~CLPatchTable()\n-Destructor.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br\n-cl_mem _patchParamBuffer\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b0_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br\n-cl_mem GetPatchParamBuffer() const\n-Returns the CL memory of the array of Osd::PatchParam buffer.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bi_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-cl_mem _indexBuffer\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b0_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bB_\bu_\bf_\bf_\be_\br\n-cl_mem GetFVarPatchArrayBuffer(int fvarChannel=0) const\n-Returns the CL memory of the array of Osd::PatchArray buffer.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b8_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bB_\bu_\bf_\bf_\be_\br\n-cl_mem GetPatchArrayBuffer() const\n-Returns the CL memory of the array of Osd::PatchArray buffer.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static CLPatchTable * Create(Far::PatchTable const *patchTable, cl_context\n-clContext)\n-Creator. Returns NULL if error.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bp_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs\n-cl_mem _patchArrays\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b9_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-cl_mem GetFVarPatchIndexBuffer(int fvarChannel=0) const\n-Returns the CL memory of the face-varying control vertices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b8_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-cl_mem _varyingIndexBuffer\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b0_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-cl_mem GetVaryingPatchIndexBuffer() const\n-Returns the CL memory of the varying control vertices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b8_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n+Vtr::ConstIndexArray ConstIndexArray\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b4_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\bT_\by_\bp_\be\n+SchemeType\n+Enumerated type for all subdivision schemes supported by OpenSubdiv.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b3_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl\n+Applies refinement operations to generic primvar data.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b5_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\bt_\be_\bx_\bI_\bn_\bd_\bi_\bc_\be_\bs\n+Object used to compute and query ptex face indices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\bt_\be_\bx_\bI_\bn_\bd_\bi_\bc_\be_\bs_\b._\bh_\b:_\b4_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl\n+An interface for accessing data in a specific level of a refined topology\n+hierarchy.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b4_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by\n+Factory for constructing TopologyRefiners from specific mesh classes.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b7_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br\n+Stores topology data for a specified set of refinement options.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b5_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br\n+TopologyRefiner(TopologyRefiner const &source)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bG_\be_\bt_\bM_\ba_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be\n+int GetMaxValence() const\n+Returns the maximum vertex valence in all levels.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b7_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bg_\be_\bt_\bL_\be_\bv_\be_\bl\n+Vtr::internal::Level const & getLevel(int l) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b2_\b3_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bH_\ba_\bs_\bH_\bo_\bl_\be_\bs\n+bool HasHoles() const\n+Returns true if faces have been tagged as holes.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b8_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bL_\be_\bv_\be_\bl_\bs\n+int GetNumLevels() const\n+Returns the number of refinement levels.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b7_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bs_\bT_\bo_\bt_\ba_\bl\n+int GetNumFVarValuesTotal(int channel=0) const\n+Returns the total number of face-varying values in all levels.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bg_\be_\bt_\bR_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt\n+Vtr::internal::Refinement const & getRefinement(int l) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b2_\b4_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bG_\be_\bt_\bS_\bc_\bh_\be_\bm_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n+Sdc::Options GetSchemeOptions() const\n+Returns the subdivision options.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b6_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bg_\be_\bt_\bL_\be_\bv_\be_\bl\n+Vtr::internal::Level & getLevel(int l)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b2_\b3_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bI_\bs_\bU_\bn_\bi_\bf_\bo_\br_\bm\n+bool IsUniform() const\n+Returns true if uniform refinement has been applied.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b6_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bG_\be_\bt_\bS_\bc_\bh_\be_\bm_\be_\bT_\by_\bp_\be\n+Sdc::SchemeType GetSchemeType() const\n+Returns the subdivision scheme.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b6_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bG_\be_\bt_\bM_\ba_\bx_\bL_\be_\bv_\be_\bl\n+int GetMaxLevel() const\n+Returns the highest level of refinement.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b7_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br\n+TopologyRefiner(Sdc::SchemeType type, Sdc::Options options=Sdc::Options())\n+Constructor.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bE_\bd_\bg_\be_\bs_\bT_\bo_\bt_\ba_\bl\n+int GetNumEdgesTotal() const\n+Returns the total number of edges in all levels.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b8_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bB_\bu_\bi_\bl_\bd_\be_\br\n+friend class PatchBuilder\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b2_\b2_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs\n int GetNumFVarChannels() const\n-Returns the number of face-varying channel buffers.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b8_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-cl_mem GetPatchIndexBuffer() const\n-Returns the CL memory of the patch control vertices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static CLPatchTable * Create(Far::PatchTable const *patchTable, DEVICE_CONTEXT\n-context)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br\n-cl_mem GetFVarPatchParamBuffer(int fvarChannel=0) const\n-Returns the CL memory of the array of Osd::PatchParam buffer.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b9_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n-CLPatchTable()\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\ba_\bl_\bl_\bo_\bc_\ba_\bt_\be\n-bool allocate(Far::PatchTable const *patchTable, cl_context clContext)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bf_\bv_\ba_\br_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br_\bs\n-std::vector< cl_mem > _fvarParamBuffers\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b0_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bf_\bv_\ba_\br_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bs\n-std::vector< cl_mem > _fvarIndexBuffers\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b0_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs\n-cl_mem _varyingPatchArrays\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b0_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bB_\bu_\bf_\bf_\be_\br\n-cl_mem GetVaryingPatchArrayBuffer() const\n-Returns the CL memory of the array of Osd::PatchArray buffer.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b7\n+Returns the number of face-varying channels in the tables.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b2_\b9_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bG_\be_\bt_\bU_\bn_\bi_\bf_\bo_\br_\bm_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n+UniformOptions GetUniformOptions() const\n+Returns the options specified on refinement.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b4_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bF_\ba_\bc_\be_\bs_\bT_\bo_\bt_\ba_\bl\n+int GetNumFacesTotal() const\n+Returns the total number of edges in all levels.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b8_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\bi_\bc_\be_\bs_\bT_\bo_\bt_\ba_\bl\n+int GetNumFaceVerticesTotal() const\n+Returns the total number of face vertices in all levels.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b9_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bg_\be_\bt_\bR_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt\n+Vtr::internal::Refinement & getRefinement(int l)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b2_\b3_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bU_\bn_\bi_\bf_\bo_\br_\bm\n+void RefineUniform(UniformOptions options)\n+Refine the topology uniformly.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\b~_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br\n+~TopologyRefiner()\n+Destructor.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bB_\bu_\bi_\bl_\bd_\be_\br\n+friend class PatchTableBuilder\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b2_\b2_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bG_\be_\bt_\bL_\be_\bv_\be_\bl\n+TopologyLevel const & GetLevel(int level) const\n+Returns a handle to access data specific to a particular level.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b9_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs_\bT_\bo_\bt_\ba_\bl\n+int GetNumVerticesTotal() const\n+Returns the total number of vertices in all levels.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b8_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bU_\bn_\br_\be_\bf_\bi_\bn_\be\n+void Unrefine()\n+Unrefine the topology, keeping only the base level.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bG_\be_\bt_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n+AdaptiveOptions GetAdaptiveOptions() const\n+Returns the options specified on refinement.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b9_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:\n+_\bG_\be_\bt_\bF_\bV_\ba_\br_\bL_\bi_\bn_\be_\ba_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+Sdc::Options::FVarLinearInterpolation GetFVarLinearInterpolation(int channel=0)\n+const\n+Returns the face-varying interpolation rule set for a given channel.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b2_\b9_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be\n+void RefineAdaptive(AdaptiveOptions options, ConstIndexArray\n+selectedFaces=ConstIndexArray())\n+Feature Adaptive topology refinement.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bU_\bn_\bi_\bf_\bo_\br_\bm_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n+Uniform refinement options.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b1_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bU_\bn_\bi_\bf_\bo_\br_\bm_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\br_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt_\bL_\be_\bv_\be_\bl\n+unsigned int refinementLevel\n+Number of refinement iterations.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b2_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bU_\bn_\bi_\bf_\bo_\br_\bm_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bo_\br_\bd_\be_\br_\bV_\be_\br_\bt_\bi_\bc_\be_\bs_\bF_\br_\bo_\bm_\bF_\ba_\bc_\be_\bs_\bF_\bi_\br_\bs_\bt\n+unsigned int orderVerticesFromFacesFirst\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b3_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bU_\bn_\bi_\bf_\bo_\br_\bm_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bS_\be_\bt_\bR_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt_\bL_\be_\bv_\be_\bl\n+void SetRefinementLevel(int level)\n+Set uniform refinement level.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b2_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bU_\bn_\bi_\bf_\bo_\br_\bm_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bf_\bu_\bl_\bl_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bI_\bn_\bL_\ba_\bs_\bt_\bL_\be_\bv_\be_\bl\n+unsigned int fullTopologyInLastLevel\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b3_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bU_\bn_\bi_\bf_\bo_\br_\bm_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bU_\bn_\bi_\bf_\bo_\br_\bm_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n+UniformOptions(int level)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b2_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n+Adaptive refinement options.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b5_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bs_\be_\bc_\bo_\bn_\bd_\ba_\br_\by_\bL_\be_\bv_\be_\bl\n+unsigned int secondaryLevel\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b7_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bo_\br_\bd_\be_\br_\bV_\be_\br_\bt_\bi_\bc_\be_\bs_\bF_\br_\bo_\bm_\bF_\ba_\bc_\be_\bs_\bF_\bi_\br_\bs_\bt\n+unsigned int orderVerticesFromFacesFirst\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b8_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n+AdaptiveOptions(int level)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b5_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bi_\bs_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bL_\be_\bv_\be_\bl\n+unsigned int isolationLevel\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b7_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bu_\bs_\be_\bS_\bi_\bn_\bg_\bl_\be_\bC_\br_\be_\ba_\bs_\be_\bP_\ba_\bt_\bc_\bh\n+unsigned int useSingleCreasePatch\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b7_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bu_\bs_\be_\bI_\bn_\bf_\bS_\bh_\ba_\br_\bp_\bP_\ba_\bt_\bc_\bh\n+unsigned int useInfSharpPatch\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b7_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bS_\be_\bt_\bI_\bs_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bL_\be_\bv_\be_\bl\n+void SetIsolationLevel(int level)\n+Set isolation level.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b6_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bc_\bo_\bn_\bs_\bi_\bd_\be_\br_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs\n+unsigned int considerFVarChannels\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b8_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bS_\be_\bt_\bS_\be_\bc_\bo_\bn_\bd_\ba_\br_\by_\bL_\be_\bv_\be_\bl\n+void SetSecondaryLevel(int level)\n+Set secondary isolation level.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b7_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\bB_\ba_\bs_\be\n+Private base class of Factories for constructing TopologyRefiners.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b4_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n+All supported options applying to subdivision scheme.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b5_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bF_\bV_\ba_\br_\bL_\bi_\bn_\be_\ba_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+FVarLinearInterpolation\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b6_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b5_\b3\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bc_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh\n+    * _\bf_\ba_\br\n+    * _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00836.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00836.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/cudaPatchTable.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/far/patchParam.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -89,46 +89,52 @@\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> &#124;\n-<a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">cudaPatchTable.h File Reference</div></div>\n+<a href=\"#namespaces\">Namespaces</a> &#124;\n+<a href=\"#typedef-members\">Typedefs</a>  </div>\n+  <div class=\"headertitle\"><div class=\"title\">patchParam.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &quot;../osd/nonCopyable.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a01489_source.html\">../osd/types.h</a>&quot;</code><br />\n-<code>#include &lt;vector&gt;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a01486_source.html\">../far/types.h</a>&quot;</code><br />\n </div>\n <p><a href=\"a00836_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01189.html\">CudaPatchTable</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">CUDA patch table.  <a href=\"a01189.html#details\">More...</a><br /></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00989.html\">PatchParam</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Patch parameterization.  <a href=\"a00989.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+</table><table class=\"memberdecls\">\n+<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"typedef-members\" name=\"typedef-members\"></a>\n+Typedefs</h2></td></tr>\n+<tr class=\"memitem:a46ea68db89cc3d55c4191ef7648281ce\" id=\"r_a46ea68db89cc3d55c4191ef7648281ce\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef std::vector&lt; <a class=\"el\" href=\"a00989.html\">PatchParam</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html#a46ea68db89cc3d55c4191ef7648281ce\">PatchParamTable</a></td></tr>\n+<tr class=\"separator:a46ea68db89cc3d55c4191ef7648281ce\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:abe07210a029a01571c54276ae28b4d88\" id=\"r_abe07210a029a01571c54276ae28b4d88\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef <a class=\"el\" href=\"a01357.html\">Vtr::Array</a>&lt; <a class=\"el\" href=\"a00989.html\">PatchParam</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html#abe07210a029a01571c54276ae28b4d88\">PatchParamArray</a></td></tr>\n+<tr class=\"separator:abe07210a029a01571c54276ae28b4d88\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:a3139c7c52ddf26b2403e8e95ff63eeb3\" id=\"r_a3139c7c52ddf26b2403e8e95ff63eeb3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef <a class=\"el\" href=\"a01353.html\">Vtr::ConstArray</a>&lt; <a class=\"el\" href=\"a00989.html\">PatchParam</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html#a3139c7c52ddf26b2403e8e95ff63eeb3\">ConstPatchParamArray</a></td></tr>\n+<tr class=\"separator:a3139c7c52ddf26b2403e8e95ff63eeb3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00836.html\">cudaPatchTable.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7f420b72a822828cfa8b0561c695a5cc.html\">far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00836.html\">patchParam.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,28 +1,31 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-cudaPatchTable.h File Reference\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bT_\by_\bp_\be_\bd_\be_\bf_\bs\n+patchParam.h File Reference\n #include \"../version.h\"\n-#include \"../osd/nonCopyable.h\"\n-#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n-#include <vector>\n+#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bC_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n-\u00a0       CUDA patch table. _\bM_\bo_\br_\be_\b._\b._\b.\n+struct \u00a0 _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm\n+\u00a0        Patch parameterization. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n+T\bTy\byp\bpe\bed\bde\bef\bfs\bs\n+    typedef std::vector< _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm >\u00a0 _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bT_\ba_\bb_\bl_\be\n+\u00a0\n+     typedef _\bV_\bt_\br_\b:_\b:_\bA_\br_\br_\ba_\by< _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm >\u00a0 _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bA_\br_\br_\ba_\by\n+\u00a0\n+typedef _\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by< _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm >\u00a0 _\bC_\bo_\bn_\bs_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bA_\br_\br_\ba_\by\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bc_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh\n+    * _\bf_\ba_\br\n+    * _\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00836.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00836.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,3 +1,6 @@\n var a00836 = [\n-    [\"CudaPatchTable\", \"a01189.html\", \"a01189\"]\n+    [\"PatchParam\", \"a00989.html\", \"a00989\"],\n+    [\"ConstPatchParamArray\", \"a00836.html#a3139c7c52ddf26b2403e8e95ff63eeb3\", null],\n+    [\"PatchParamArray\", \"a00836.html#abe07210a029a01571c54276ae28b4d88\", null],\n+    [\"PatchParamTable\", \"a00836.html#a46ea68db89cc3d55c4191ef7648281ce\", null]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00836_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00836_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/cudaPatchTable.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/far/patchParam.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">cudaPatchTable.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">patchParam.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00836.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2015 Pixar</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2013 Pixar</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -119,131 +119,214 @@\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_CUDA_PATCH_TABLE_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_CUDA_PATCH_TABLE_H</span></div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_FAR_PATCH_PARAM_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_FAR_PATCH_PARAM_H</span></div>\n <div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n <div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n <div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../osd/nonCopyable.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../osd/types.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span> </div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../far/types.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n <div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span> </div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span> </div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"keyword\">namespace </span>Far{</div>\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span>    <span class=\"keyword\">class </span>PatchTable;</div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span>};</div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span> </div>\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span><span class=\"keyword\">namespace </span>Osd {</div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00051\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01189.html\">   51</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01189.html\">CudaPatchTable</a> : <span class=\"keyword\">private</span> NonCopyable&lt;CudaPatchTable&gt; {</div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01189.html#a32a8745ae6ebb1fe7c6b0b9f6c3c0eae\">   54</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01189.html\">CudaPatchTable</a> *<a class=\"code hl_function\" href=\"a01189.html#a32a8745ae6ebb1fe7c6b0b9f6c3c0eae\">Create</a>(<a class=\"code hl_class\" href=\"a00993.html\">Far::PatchTable</a> <span class=\"keyword\">const</span> *patchTable,</div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span>                                  <span class=\"keywordtype\">void</span> *deviceContext = NULL);</div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01189.html#a77236fdbdacca3f2e8e21c4be8ca0bf6\">   57</a></span>    <a class=\"code hl_function\" href=\"a01189.html#a77236fdbdacca3f2e8e21c4be8ca0bf6\">~CudaPatchTable</a>();</div>\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span> </div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01189.html#a7e3a54d16295a2557cf0e63cb223a2db\">   60</a></span>    <span class=\"keywordtype\">void</span> *<a class=\"code hl_function\" href=\"a01189.html#a7e3a54d16295a2557cf0e63cb223a2db\">GetPatchArrayBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01189.html#ab051492a1c9d697cdbb351fd09300659\">_patchArrays</a>; }</div>\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span> </div>\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01189.html#aa14d12be64d8e84f6303a9803e73b71d\">   63</a></span>    <span class=\"keywordtype\">void</span> *<a class=\"code hl_function\" href=\"a01189.html#aa14d12be64d8e84f6303a9803e73b71d\">GetPatchIndexBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01189.html#aff9fed47b172665795e7b46f4713cb39\">_indexBuffer</a>; }</div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span> </div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01189.html#ab9e6dd4a1062dc6560e306db28f31a67\">   66</a></span>    <span class=\"keywordtype\">void</span> *<a class=\"code hl_function\" href=\"a01189.html#ab9e6dd4a1062dc6560e306db28f31a67\">GetPatchParamBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01189.html#afec3f4b40a8f9b6e6ed2715a774d959a\">_patchParamBuffer</a>; }</div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00069\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01189.html#a54e86fe3c2d4863e344fd9be2a8141c9\">   69</a></span>    <span class=\"keywordtype\">void</span> *<a class=\"code hl_function\" href=\"a01189.html#a54e86fe3c2d4863e344fd9be2a8141c9\">GetVaryingPatchArrayBuffer</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01189.html#a372ca54f02d574dc4a20aa2f35277a1d\">_varyingPatchArrays</a>;</div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>    }</div>\n-</div>\n-<div class=\"foldopen\" id=\"foldopen00073\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01189.html#a486517cc7e9296c01072ccd51f77da27\">   73</a></span>    <span class=\"keywordtype\">void</span> *<a class=\"code hl_function\" href=\"a01189.html#a486517cc7e9296c01072ccd51f77da27\">GetVaryingPatchIndexBuffer</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01189.html#a732aefa1f4a2701e2a19c828be76b7d0\">_varyingIndexBuffer</a>;</div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span> </div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01189.html#aa9be824a572029f3ec1e0c0d6cfecd77\">   78</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01189.html#aa9be824a572029f3ec1e0c0d6cfecd77\">GetNumFVarChannels</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (<span class=\"keywordtype\">int</span>)<a class=\"code hl_variable\" href=\"a01189.html#a9ae3024459ccecb8a33ef3af5f27130a\">_fvarPatchArrays</a>.size(); }</div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00081\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01189.html#a04c544025f2690d1a4973b6ff5273646\">   81</a></span>    <span class=\"keywordtype\">void</span> *<a class=\"code hl_function\" href=\"a01189.html#a04c544025f2690d1a4973b6ff5273646\">GetFVarPatchArrayBuffer</a>(<span class=\"keywordtype\">int</span> fvarChannel)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01189.html#a9ae3024459ccecb8a33ef3af5f27130a\">_fvarPatchArrays</a>[fvarChannel];</div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00086\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01189.html#abdb11e2609df00620abd8c081c3b13be\">   86</a></span>    <span class=\"keywordtype\">void</span> *<a class=\"code hl_function\" href=\"a01189.html#abdb11e2609df00620abd8c081c3b13be\">GetFVarPatchIndexBuffer</a>(<span class=\"keywordtype\">int</span> fvarChannel = 0)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01189.html#a4fd7bd0ad86a18e26331e88d278450d9\">_fvarIndexBuffers</a>[fvarChannel];</div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00091\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01189.html#adb0788b75a061fc9b650d75bf691f1d8\">   91</a></span>    <span class=\"keywordtype\">void</span> *<a class=\"code hl_function\" href=\"a01189.html#adb0788b75a061fc9b650d75bf691f1d8\">GetFVarPatchParamBuffer</a>(<span class=\"keywordtype\">int</span> fvarChannel = 0)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01189.html#a24f6a6d8efcff60c81c635786f88e951\">_fvarParamBuffers</a>[fvarChannel];</div>\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span> </div>\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span><span class=\"keyword\">protected</span>:</div>\n-<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01189.html#aefa9c1a9175327a40e7cf46ed32ced2f\">   96</a></span>    <a class=\"code hl_function\" href=\"a01189.html#aefa9c1a9175327a40e7cf46ed32ced2f\">CudaPatchTable</a>();</div>\n-<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span> </div>\n-<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01189.html#aa044493f8d93b17493055e0d389645bf\">   98</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01189.html#aa044493f8d93b17493055e0d389645bf\">allocate</a>(<a class=\"code hl_class\" href=\"a00993.html\">Far::PatchTable</a> <span class=\"keyword\">const</span> *patchTable);</div>\n-<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span> </div>\n-<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01189.html#ab051492a1c9d697cdbb351fd09300659\">  100</a></span>    <span class=\"keywordtype\">void</span> *<a class=\"code hl_variable\" href=\"a01189.html#ab051492a1c9d697cdbb351fd09300659\">_patchArrays</a>;</div>\n-<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01189.html#aff9fed47b172665795e7b46f4713cb39\">  101</a></span>    <span class=\"keywordtype\">void</span> *<a class=\"code hl_variable\" href=\"a01189.html#aff9fed47b172665795e7b46f4713cb39\">_indexBuffer</a>;</div>\n-<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01189.html#afec3f4b40a8f9b6e6ed2715a774d959a\">  102</a></span>    <span class=\"keywordtype\">void</span> *<a class=\"code hl_variable\" href=\"a01189.html#afec3f4b40a8f9b6e6ed2715a774d959a\">_patchParamBuffer</a>;</div>\n-<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span> </div>\n-<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01189.html#a372ca54f02d574dc4a20aa2f35277a1d\">  104</a></span>    <span class=\"keywordtype\">void</span> *<a class=\"code hl_variable\" href=\"a01189.html#a372ca54f02d574dc4a20aa2f35277a1d\">_varyingPatchArrays</a>;</div>\n-<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01189.html#a732aefa1f4a2701e2a19c828be76b7d0\">  105</a></span>    <span class=\"keywordtype\">void</span> *<a class=\"code hl_variable\" href=\"a01189.html#a732aefa1f4a2701e2a19c828be76b7d0\">_varyingIndexBuffer</a>;</div>\n-<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span> </div>\n-<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01189.html#a9ae3024459ccecb8a33ef3af5f27130a\">  107</a></span>    std::vector&lt;void *&gt; <a class=\"code hl_variable\" href=\"a01189.html#a9ae3024459ccecb8a33ef3af5f27130a\">_fvarPatchArrays</a>;</div>\n-<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01189.html#a4fd7bd0ad86a18e26331e88d278450d9\">  108</a></span>    std::vector&lt;void *&gt; <a class=\"code hl_variable\" href=\"a01189.html#a4fd7bd0ad86a18e26331e88d278450d9\">_fvarIndexBuffers</a>;</div>\n-<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01189.html#a24f6a6d8efcff60c81c635786f88e951\">  109</a></span>    std::vector&lt;void *&gt; <a class=\"code hl_variable\" href=\"a01189.html#a24f6a6d8efcff60c81c635786f88e951\">_fvarParamBuffers</a>;</div>\n-<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span> </div>\n-<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span>}  <span class=\"comment\">// end namespace Osd</span></div>\n-<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span> </div>\n-<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span>}  <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\">  116</span> </div>\n-<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span>}  <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\">  118</span> </div>\n-<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_CUDA_PATCH_TABLE_H</span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa00993_html\"><div class=\"ttname\"><a href=\"a00993.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable</a></div><div class=\"ttdoc\">Container for arrays of parametric patches.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00761_source.html#l00055\">patchTable.h:55</a></div></div>\n-<div class=\"ttc\" id=\"aa01189_html\"><div class=\"ttname\"><a href=\"a01189.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaPatchTable</a></div><div class=\"ttdoc\">CUDA patch table.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00836_source.html#l00051\">cudaPatchTable.h:51</a></div></div>\n-<div class=\"ttc\" id=\"aa01189_html_a04c544025f2690d1a4973b6ff5273646\"><div class=\"ttname\"><a href=\"a01189.html#a04c544025f2690d1a4973b6ff5273646\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaPatchTable::GetFVarPatchArrayBuffer</a></div><div class=\"ttdeci\">void * GetFVarPatchArrayBuffer(int fvarChannel) const</div><div class=\"ttdoc\">Returns the cuda memory of the array of Osd::PatchArray buffer.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00836_source.html#l00081\">cudaPatchTable.h:81</a></div></div>\n-<div class=\"ttc\" id=\"aa01189_html_a24f6a6d8efcff60c81c635786f88e951\"><div class=\"ttname\"><a href=\"a01189.html#a24f6a6d8efcff60c81c635786f88e951\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaPatchTable::_fvarParamBuffers</a></div><div class=\"ttdeci\">std::vector&lt; void * &gt; _fvarParamBuffers</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00836_source.html#l00109\">cudaPatchTable.h:109</a></div></div>\n-<div class=\"ttc\" id=\"aa01189_html_a32a8745ae6ebb1fe7c6b0b9f6c3c0eae\"><div class=\"ttname\"><a href=\"a01189.html#a32a8745ae6ebb1fe7c6b0b9f6c3c0eae\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaPatchTable::Create</a></div><div class=\"ttdeci\">static CudaPatchTable * Create(Far::PatchTable const *patchTable, void *deviceContext=NULL)</div><div class=\"ttdoc\">Creator. Returns NULL if error.</div></div>\n-<div class=\"ttc\" id=\"aa01189_html_a372ca54f02d574dc4a20aa2f35277a1d\"><div class=\"ttname\"><a href=\"a01189.html#a372ca54f02d574dc4a20aa2f35277a1d\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaPatchTable::_varyingPatchArrays</a></div><div class=\"ttdeci\">void * _varyingPatchArrays</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00836_source.html#l00104\">cudaPatchTable.h:104</a></div></div>\n-<div class=\"ttc\" id=\"aa01189_html_a486517cc7e9296c01072ccd51f77da27\"><div class=\"ttname\"><a href=\"a01189.html#a486517cc7e9296c01072ccd51f77da27\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaPatchTable::GetVaryingPatchIndexBuffer</a></div><div class=\"ttdeci\">void * GetVaryingPatchIndexBuffer() const</div><div class=\"ttdoc\">Returns the cuda memory of the array of varying control vertices.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00836_source.html#l00073\">cudaPatchTable.h:73</a></div></div>\n-<div class=\"ttc\" id=\"aa01189_html_a4fd7bd0ad86a18e26331e88d278450d9\"><div class=\"ttname\"><a href=\"a01189.html#a4fd7bd0ad86a18e26331e88d278450d9\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaPatchTable::_fvarIndexBuffers</a></div><div class=\"ttdeci\">std::vector&lt; void * &gt; _fvarIndexBuffers</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00836_source.html#l00108\">cudaPatchTable.h:108</a></div></div>\n-<div class=\"ttc\" id=\"aa01189_html_a54e86fe3c2d4863e344fd9be2a8141c9\"><div class=\"ttname\"><a href=\"a01189.html#a54e86fe3c2d4863e344fd9be2a8141c9\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaPatchTable::GetVaryingPatchArrayBuffer</a></div><div class=\"ttdeci\">void * GetVaryingPatchArrayBuffer() const</div><div class=\"ttdoc\">Returns the cuda memory of the array of Osd::PatchArray buffer.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00836_source.html#l00069\">cudaPatchTable.h:69</a></div></div>\n-<div class=\"ttc\" id=\"aa01189_html_a732aefa1f4a2701e2a19c828be76b7d0\"><div class=\"ttname\"><a href=\"a01189.html#a732aefa1f4a2701e2a19c828be76b7d0\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaPatchTable::_varyingIndexBuffer</a></div><div class=\"ttdeci\">void * _varyingIndexBuffer</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00836_source.html#l00105\">cudaPatchTable.h:105</a></div></div>\n-<div class=\"ttc\" id=\"aa01189_html_a77236fdbdacca3f2e8e21c4be8ca0bf6\"><div class=\"ttname\"><a href=\"a01189.html#a77236fdbdacca3f2e8e21c4be8ca0bf6\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaPatchTable::~CudaPatchTable</a></div><div class=\"ttdeci\">~CudaPatchTable()</div><div class=\"ttdoc\">Destructor.</div></div>\n-<div class=\"ttc\" id=\"aa01189_html_a7e3a54d16295a2557cf0e63cb223a2db\"><div class=\"ttname\"><a href=\"a01189.html#a7e3a54d16295a2557cf0e63cb223a2db\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaPatchTable::GetPatchArrayBuffer</a></div><div class=\"ttdeci\">void * GetPatchArrayBuffer() const</div><div class=\"ttdoc\">Returns the cuda memory of the array of Osd::PatchArray buffer.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00836_source.html#l00060\">cudaPatchTable.h:60</a></div></div>\n-<div class=\"ttc\" id=\"aa01189_html_a9ae3024459ccecb8a33ef3af5f27130a\"><div class=\"ttname\"><a href=\"a01189.html#a9ae3024459ccecb8a33ef3af5f27130a\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaPatchTable::_fvarPatchArrays</a></div><div class=\"ttdeci\">std::vector&lt; void * &gt; _fvarPatchArrays</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00836_source.html#l00107\">cudaPatchTable.h:107</a></div></div>\n-<div class=\"ttc\" id=\"aa01189_html_aa044493f8d93b17493055e0d389645bf\"><div class=\"ttname\"><a href=\"a01189.html#aa044493f8d93b17493055e0d389645bf\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaPatchTable::allocate</a></div><div class=\"ttdeci\">bool allocate(Far::PatchTable const *patchTable)</div></div>\n-<div class=\"ttc\" id=\"aa01189_html_aa14d12be64d8e84f6303a9803e73b71d\"><div class=\"ttname\"><a href=\"a01189.html#aa14d12be64d8e84f6303a9803e73b71d\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaPatchTable::GetPatchIndexBuffer</a></div><div class=\"ttdeci\">void * GetPatchIndexBuffer() const</div><div class=\"ttdoc\">Returns the cuda memory of the patch control vertices.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00836_source.html#l00063\">cudaPatchTable.h:63</a></div></div>\n-<div class=\"ttc\" id=\"aa01189_html_aa9be824a572029f3ec1e0c0d6cfecd77\"><div class=\"ttname\"><a href=\"a01189.html#aa9be824a572029f3ec1e0c0d6cfecd77\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaPatchTable::GetNumFVarChannels</a></div><div class=\"ttdeci\">int GetNumFVarChannels() const</div><div class=\"ttdoc\">Returns the number of face-varying channels buffers.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00836_source.html#l00078\">cudaPatchTable.h:78</a></div></div>\n-<div class=\"ttc\" id=\"aa01189_html_ab051492a1c9d697cdbb351fd09300659\"><div class=\"ttname\"><a href=\"a01189.html#ab051492a1c9d697cdbb351fd09300659\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaPatchTable::_patchArrays</a></div><div class=\"ttdeci\">void * _patchArrays</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00836_source.html#l00100\">cudaPatchTable.h:100</a></div></div>\n-<div class=\"ttc\" id=\"aa01189_html_ab9e6dd4a1062dc6560e306db28f31a67\"><div class=\"ttname\"><a href=\"a01189.html#ab9e6dd4a1062dc6560e306db28f31a67\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaPatchTable::GetPatchParamBuffer</a></div><div class=\"ttdeci\">void * GetPatchParamBuffer() const</div><div class=\"ttdoc\">Returns the cuda memory of the array of Osd::PatchParam buffer.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00836_source.html#l00066\">cudaPatchTable.h:66</a></div></div>\n-<div class=\"ttc\" id=\"aa01189_html_abdb11e2609df00620abd8c081c3b13be\"><div class=\"ttname\"><a href=\"a01189.html#abdb11e2609df00620abd8c081c3b13be\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaPatchTable::GetFVarPatchIndexBuffer</a></div><div class=\"ttdeci\">void * GetFVarPatchIndexBuffer(int fvarChannel=0) const</div><div class=\"ttdoc\">Returns the cuda memory of the array of face-varying control vertices.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00836_source.html#l00086\">cudaPatchTable.h:86</a></div></div>\n-<div class=\"ttc\" id=\"aa01189_html_adb0788b75a061fc9b650d75bf691f1d8\"><div class=\"ttname\"><a href=\"a01189.html#adb0788b75a061fc9b650d75bf691f1d8\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaPatchTable::GetFVarPatchParamBuffer</a></div><div class=\"ttdeci\">void * GetFVarPatchParamBuffer(int fvarChannel=0) const</div><div class=\"ttdoc\">Returns the cuda memory of the array of face-varying param.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00836_source.html#l00091\">cudaPatchTable.h:91</a></div></div>\n-<div class=\"ttc\" id=\"aa01189_html_aefa9c1a9175327a40e7cf46ed32ced2f\"><div class=\"ttname\"><a href=\"a01189.html#aefa9c1a9175327a40e7cf46ed32ced2f\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaPatchTable::CudaPatchTable</a></div><div class=\"ttdeci\">CudaPatchTable()</div></div>\n-<div class=\"ttc\" id=\"aa01189_html_afec3f4b40a8f9b6e6ed2715a774d959a\"><div class=\"ttname\"><a href=\"a01189.html#afec3f4b40a8f9b6e6ed2715a774d959a\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaPatchTable::_patchParamBuffer</a></div><div class=\"ttdeci\">void * _patchParamBuffer</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00836_source.html#l00102\">cudaPatchTable.h:102</a></div></div>\n-<div class=\"ttc\" id=\"aa01189_html_aff9fed47b172665795e7b46f4713cb39\"><div class=\"ttname\"><a href=\"a01189.html#aff9fed47b172665795e7b46f4713cb39\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaPatchTable::_indexBuffer</a></div><div class=\"ttdeci\">void * _indexBuffer</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00836_source.html#l00101\">cudaPatchTable.h:101</a></div></div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span>Far {</div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n+<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00152\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00989.html\">  152</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a00989.html\">PatchParam</a> {</div>\n+<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\">  168</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00989.html#a98adcbce89caf00ca5c67c978d1f8576\">Set</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> faceid, <span class=\"keywordtype\">short</span> u, <span class=\"keywordtype\">short</span> v,</div>\n+<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\">  169</span>             <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> depth, <span class=\"keywordtype\">bool</span> nonquad,</div>\n+<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\">  170</span>             <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> boundary, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> transition,</div>\n+<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span>             <span class=\"keywordtype\">bool</span> regular = <span class=\"keyword\">false</span>);</div>\n+<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\">  172</span> </div>\n+<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00989.html#aa71d36872f416feaa853788a7a7a7ef8\">  174</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00989.html#aa71d36872f416feaa853788a7a7a7ef8\">Clear</a>() { <a class=\"code hl_variable\" href=\"a00989.html#ae918c114a445f892134cb94b70d3f07e\">field0</a> = <a class=\"code hl_variable\" href=\"a00989.html#aa992496f945c3e0ffb3a55ca84a7cb60\">field1</a> = 0; }</div>\n+<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\">  175</span> </div>\n+<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00989.html#a71fe5a723e7c3a29b26cb6a0af33a7ee\">  177</a></span>    <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> <a class=\"code hl_function\" href=\"a00989.html#a71fe5a723e7c3a29b26cb6a0af33a7ee\">GetFaceId</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a>(unpack(<a class=\"code hl_variable\" href=\"a00989.html#ae918c114a445f892134cb94b70d3f07e\">field0</a>,28,0)); }</div>\n+<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\">  178</span> </div>\n+<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00989.html#a5e290d380300d960b35a9e4bb36532b3\">  181</a></span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> <a class=\"code hl_function\" href=\"a00989.html#a5e290d380300d960b35a9e4bb36532b3\">GetU</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (<span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span>)unpack(<a class=\"code hl_variable\" href=\"a00989.html#aa992496f945c3e0ffb3a55ca84a7cb60\">field1</a>,10,22); }</div>\n+<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\">  182</span> </div>\n+<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00989.html#adf00c825e17a25a22eddd4a5dc3f3ea2\">  185</a></span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> <a class=\"code hl_function\" href=\"a00989.html#adf00c825e17a25a22eddd4a5dc3f3ea2\">GetV</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (<span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span>)unpack(<a class=\"code hl_variable\" href=\"a00989.html#aa992496f945c3e0ffb3a55ca84a7cb60\">field1</a>,10,12); }</div>\n+<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\">  186</span> </div>\n+<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00989.html#a3e80fdc78d4e976e88f8d035a6bdfe9a\">  188</a></span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> <a class=\"code hl_function\" href=\"a00989.html#a3e80fdc78d4e976e88f8d035a6bdfe9a\">GetTransition</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (<span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span>)unpack(<a class=\"code hl_variable\" href=\"a00989.html#ae918c114a445f892134cb94b70d3f07e\">field0</a>,4,28); }</div>\n+<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\">  189</span> </div>\n+<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00989.html#a3ce6d530fdd758f089cd61589cf13937\">  191</a></span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> <a class=\"code hl_function\" href=\"a00989.html#a3ce6d530fdd758f089cd61589cf13937\">GetBoundary</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (<span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span>)unpack(<a class=\"code hl_variable\" href=\"a00989.html#aa992496f945c3e0ffb3a55ca84a7cb60\">field1</a>,5,7); }</div>\n+<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\">  192</span> </div>\n+<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00989.html#a8a53fc370a76c5d29d610d9ae926f4fe\">  194</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00989.html#a8a53fc370a76c5d29d610d9ae926f4fe\">NonQuadRoot</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (unpack(<a class=\"code hl_variable\" href=\"a00989.html#aa992496f945c3e0ffb3a55ca84a7cb60\">field1</a>,1,4) != 0); }</div>\n+<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\">  195</span> </div>\n+<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00989.html#a75d02f3fb15201f2a2ca9850f77db8bb\">  197</a></span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> <a class=\"code hl_function\" href=\"a00989.html#a75d02f3fb15201f2a2ca9850f77db8bb\">GetDepth</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (<span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span>)unpack(<a class=\"code hl_variable\" href=\"a00989.html#aa992496f945c3e0ffb3a55ca84a7cb60\">field1</a>,4,0); }</div>\n+<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\">  198</span> </div>\n+<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\">  200</span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"a00989.html#a3fb8c711847e677119dcecab48e27200\">GetParamFraction</a>() <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\">  201</span> </div>\n+<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\">  208</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\">  209</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00989.html#af348a1feaddb11b275b5291bfe7e76f7\">Normalize</a>( REAL &amp; u, REAL &amp; v ) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\">  210</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\">  211</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00989.html#a2adc7ff754a40f9a22c04cf2ab04d75c\">NormalizeTriangle</a>( REAL &amp; u, REAL &amp; v ) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00212\" name=\"l00212\"></a><span class=\"lineno\">  212</span> </div>\n+<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\">  219</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\">  220</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00989.html#ac1285d0e8771e821487cb18d0a324097\">Unnormalize</a>( REAL &amp; u, REAL &amp; v ) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\">  221</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\">  222</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00989.html#acf6abf4b1514b90d77bff5c2563ef1c3\">UnnormalizeTriangle</a>( REAL &amp; u, REAL &amp; v ) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\">  223</span> </div>\n+<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\">  225</span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00989.html#a117b0b4f76b0e63ad1f6a3d83591f034\">IsTriangleRotated</a>() <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\">  226</span> </div>\n+<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00989.html#a193470573424fe6b2e91f317509b5897\">  228</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00989.html#a193470573424fe6b2e91f317509b5897\">IsRegular</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (unpack(<a class=\"code hl_variable\" href=\"a00989.html#aa992496f945c3e0ffb3a55ca84a7cb60\">field1</a>,1,5) != 0); }</div>\n+<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\">  229</span> </div>\n+<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00989.html#ae918c114a445f892134cb94b70d3f07e\">  230</a></span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"a00989.html#ae918c114a445f892134cb94b70d3f07e\">field0</a>:32;</div>\n+<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00989.html#aa992496f945c3e0ffb3a55ca84a7cb60\">  231</a></span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"a00989.html#aa992496f945c3e0ffb3a55ca84a7cb60\">field1</a>:32;</div>\n+<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\">  232</span> </div>\n+<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\">  233</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\">  234</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> pack(<span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> value, <span class=\"keywordtype\">int</span> width, <span class=\"keywordtype\">int</span> offset)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\">  235</span>        <span class=\"keywordflow\">return</span> (<span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span>)((value &amp; ((1&lt;&lt;width)-1)) &lt;&lt; offset);</div>\n+<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\">  236</span>    }</div>\n+<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\">  237</span> </div>\n+<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\">  238</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> unpack(<span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> value, <span class=\"keywordtype\">int</span> width, <span class=\"keywordtype\">int</span> offset)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\">  239</span>        <span class=\"keywordflow\">return</span> (<span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span>)((value &gt;&gt; offset) &amp; ((1&lt;&lt;width)-1));</div>\n+<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\">  240</span>    }</div>\n+<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\">  241</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\">  242</span> </div>\n+<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00908.html#a46ea68db89cc3d55c4191ef7648281ce\">  243</a></span><span class=\"keyword\">typedef</span> std::vector&lt;PatchParam&gt; <a class=\"code hl_typedef\" href=\"a00908.html#a46ea68db89cc3d55c4191ef7648281ce\">PatchParamTable</a>;</div>\n+<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\">  244</span> </div>\n+<div class=\"line\"><a id=\"l00245\" name=\"l00245\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00908.html#abe07210a029a01571c54276ae28b4d88\">  245</a></span><span class=\"keyword\">typedef</span> <a class=\"code hl_class\" href=\"a01357.html\">Vtr::Array&lt;PatchParam&gt;</a> <a class=\"code hl_typedef\" href=\"a00908.html#abe07210a029a01571c54276ae28b4d88\">PatchParamArray</a>;</div>\n+<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00908.html#a3139c7c52ddf26b2403e8e95ff63eeb3\">  246</a></span><span class=\"keyword\">typedef</span> <a class=\"code hl_class\" href=\"a01353.html\">Vtr::ConstArray&lt;PatchParam&gt;</a> <a class=\"code hl_typedef\" href=\"a00908.html#a3139c7c52ddf26b2403e8e95ff63eeb3\">ConstPatchParamArray</a>;</div>\n+<div class=\"line\"><a id=\"l00247\" name=\"l00247\"></a><span class=\"lineno\">  247</span> </div>\n+<div class=\"line\"><a id=\"l00248\" name=\"l00248\"></a><span class=\"lineno\">  248</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00249\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00249\" name=\"l00249\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00989.html#a98adcbce89caf00ca5c67c978d1f8576\">  249</a></span><a class=\"code hl_function\" href=\"a00989.html#a98adcbce89caf00ca5c67c978d1f8576\">PatchParam::Set</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> faceid, <span class=\"keywordtype\">short</span> u, <span class=\"keywordtype\">short</span> v,</div>\n+<div class=\"line\"><a id=\"l00250\" name=\"l00250\"></a><span class=\"lineno\">  250</span>                <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> depth, <span class=\"keywordtype\">bool</span> nonquad,</div>\n+<div class=\"line\"><a id=\"l00251\" name=\"l00251\"></a><span class=\"lineno\">  251</span>                <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> boundary, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> transition,</div>\n+<div class=\"line\"><a id=\"l00252\" name=\"l00252\"></a><span class=\"lineno\">  252</span>                <span class=\"keywordtype\">bool</span> regular) {</div>\n+<div class=\"line\"><a id=\"l00253\" name=\"l00253\"></a><span class=\"lineno\">  253</span>    <a class=\"code hl_variable\" href=\"a00989.html#ae918c114a445f892134cb94b70d3f07e\">field0</a> = pack(faceid,    28,  0) |</div>\n+<div class=\"line\"><a id=\"l00254\" name=\"l00254\"></a><span class=\"lineno\">  254</span>             pack(transition, 4, 28);</div>\n+<div class=\"line\"><a id=\"l00255\" name=\"l00255\"></a><span class=\"lineno\">  255</span> </div>\n+<div class=\"line\"><a id=\"l00256\" name=\"l00256\"></a><span class=\"lineno\">  256</span>    <a class=\"code hl_variable\" href=\"a00989.html#aa992496f945c3e0ffb3a55ca84a7cb60\">field1</a> = pack(u,         10, 22) |</div>\n+<div class=\"line\"><a id=\"l00257\" name=\"l00257\"></a><span class=\"lineno\">  257</span>             pack(v,         10, 12) |</div>\n+<div class=\"line\"><a id=\"l00258\" name=\"l00258\"></a><span class=\"lineno\">  258</span>             pack(boundary,   5,  7) |</div>\n+<div class=\"line\"><a id=\"l00259\" name=\"l00259\"></a><span class=\"lineno\">  259</span>             pack(regular,    1,  5) |</div>\n+<div class=\"line\"><a id=\"l00260\" name=\"l00260\"></a><span class=\"lineno\">  260</span>             pack(nonquad,    1,  4) |</div>\n+<div class=\"line\"><a id=\"l00261\" name=\"l00261\"></a><span class=\"lineno\">  261</span>             pack(depth,      4,  0);</div>\n+<div class=\"line\"><a id=\"l00262\" name=\"l00262\"></a><span class=\"lineno\">  262</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00263\" name=\"l00263\"></a><span class=\"lineno\">  263</span> </div>\n+<div class=\"line\"><a id=\"l00264\" name=\"l00264\"></a><span class=\"lineno\">  264</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">float</span></div>\n+<div class=\"foldopen\" id=\"foldopen00265\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00265\" name=\"l00265\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00989.html#a3fb8c711847e677119dcecab48e27200\">  265</a></span><a class=\"code hl_function\" href=\"a00989.html#a3fb8c711847e677119dcecab48e27200\">PatchParam::GetParamFraction</a>( )<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00266\" name=\"l00266\"></a><span class=\"lineno\">  266</span>    <span class=\"keywordflow\">return</span> 1.0f / (float)(1 &lt;&lt; (<a class=\"code hl_function\" href=\"a00989.html#a75d02f3fb15201f2a2ca9850f77db8bb\">GetDepth</a>() - <a class=\"code hl_function\" href=\"a00989.html#a8a53fc370a76c5d29d610d9ae926f4fe\">NonQuadRoot</a>()));</div>\n+<div class=\"line\"><a id=\"l00267\" name=\"l00267\"></a><span class=\"lineno\">  267</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00268\" name=\"l00268\"></a><span class=\"lineno\">  268</span> </div>\n+<div class=\"line\"><a id=\"l00269\" name=\"l00269\"></a><span class=\"lineno\">  269</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00270\" name=\"l00270\"></a><span class=\"lineno\">  270</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00271\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00271\" name=\"l00271\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00989.html#af348a1feaddb11b275b5291bfe7e76f7\">  271</a></span><a class=\"code hl_function\" href=\"a00989.html#af348a1feaddb11b275b5291bfe7e76f7\">PatchParam::Normalize</a>( REAL &amp; u, REAL &amp; v )<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00272\" name=\"l00272\"></a><span class=\"lineno\">  272</span> </div>\n+<div class=\"line\"><a id=\"l00273\" name=\"l00273\"></a><span class=\"lineno\">  273</span>    REAL fracInv = (REAL)(1.0f / <a class=\"code hl_function\" href=\"a00989.html#a3fb8c711847e677119dcecab48e27200\">GetParamFraction</a>());</div>\n+<div class=\"line\"><a id=\"l00274\" name=\"l00274\"></a><span class=\"lineno\">  274</span> </div>\n+<div class=\"line\"><a id=\"l00275\" name=\"l00275\"></a><span class=\"lineno\">  275</span>    u = u * fracInv - (REAL)<a class=\"code hl_function\" href=\"a00989.html#a5e290d380300d960b35a9e4bb36532b3\">GetU</a>();</div>\n+<div class=\"line\"><a id=\"l00276\" name=\"l00276\"></a><span class=\"lineno\">  276</span>    v = v * fracInv - (REAL)<a class=\"code hl_function\" href=\"a00989.html#adf00c825e17a25a22eddd4a5dc3f3ea2\">GetV</a>();</div>\n+<div class=\"line\"><a id=\"l00277\" name=\"l00277\"></a><span class=\"lineno\">  277</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00278\" name=\"l00278\"></a><span class=\"lineno\">  278</span> </div>\n+<div class=\"line\"><a id=\"l00279\" name=\"l00279\"></a><span class=\"lineno\">  279</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00280\" name=\"l00280\"></a><span class=\"lineno\">  280</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00281\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00281\" name=\"l00281\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00989.html#ac1285d0e8771e821487cb18d0a324097\">  281</a></span><a class=\"code hl_function\" href=\"a00989.html#ac1285d0e8771e821487cb18d0a324097\">PatchParam::Unnormalize</a>( REAL &amp; u, REAL &amp; v )<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00282\" name=\"l00282\"></a><span class=\"lineno\">  282</span> </div>\n+<div class=\"line\"><a id=\"l00283\" name=\"l00283\"></a><span class=\"lineno\">  283</span>    REAL frac = (REAL)<a class=\"code hl_function\" href=\"a00989.html#a3fb8c711847e677119dcecab48e27200\">GetParamFraction</a>();</div>\n+<div class=\"line\"><a id=\"l00284\" name=\"l00284\"></a><span class=\"lineno\">  284</span> </div>\n+<div class=\"line\"><a id=\"l00285\" name=\"l00285\"></a><span class=\"lineno\">  285</span>    u = (u + (REAL)<a class=\"code hl_function\" href=\"a00989.html#a5e290d380300d960b35a9e4bb36532b3\">GetU</a>()) * frac;</div>\n+<div class=\"line\"><a id=\"l00286\" name=\"l00286\"></a><span class=\"lineno\">  286</span>    v = (v + (REAL)<a class=\"code hl_function\" href=\"a00989.html#adf00c825e17a25a22eddd4a5dc3f3ea2\">GetV</a>()) * frac;</div>\n+<div class=\"line\"><a id=\"l00287\" name=\"l00287\"></a><span class=\"lineno\">  287</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00288\" name=\"l00288\"></a><span class=\"lineno\">  288</span> </div>\n+<div class=\"line\"><a id=\"l00289\" name=\"l00289\"></a><span class=\"lineno\">  289</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span></div>\n+<div class=\"foldopen\" id=\"foldopen00290\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00290\" name=\"l00290\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00989.html#a117b0b4f76b0e63ad1f6a3d83591f034\">  290</a></span><a class=\"code hl_function\" href=\"a00989.html#a117b0b4f76b0e63ad1f6a3d83591f034\">PatchParam::IsTriangleRotated</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00291\" name=\"l00291\"></a><span class=\"lineno\">  291</span> </div>\n+<div class=\"line\"><a id=\"l00292\" name=\"l00292\"></a><span class=\"lineno\">  292</span>    <span class=\"keywordflow\">return</span> (<a class=\"code hl_function\" href=\"a00989.html#a5e290d380300d960b35a9e4bb36532b3\">GetU</a>() + <a class=\"code hl_function\" href=\"a00989.html#adf00c825e17a25a22eddd4a5dc3f3ea2\">GetV</a>()) &gt;= (1 &lt;&lt; <a class=\"code hl_function\" href=\"a00989.html#a75d02f3fb15201f2a2ca9850f77db8bb\">GetDepth</a>());</div>\n+<div class=\"line\"><a id=\"l00293\" name=\"l00293\"></a><span class=\"lineno\">  293</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00294\" name=\"l00294\"></a><span class=\"lineno\">  294</span> </div>\n+<div class=\"line\"><a id=\"l00295\" name=\"l00295\"></a><span class=\"lineno\">  295</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00296\" name=\"l00296\"></a><span class=\"lineno\">  296</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00297\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00297\" name=\"l00297\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00989.html#a2adc7ff754a40f9a22c04cf2ab04d75c\">  297</a></span><a class=\"code hl_function\" href=\"a00989.html#a2adc7ff754a40f9a22c04cf2ab04d75c\">PatchParam::NormalizeTriangle</a>( REAL &amp; u, REAL &amp; v )<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00298\" name=\"l00298\"></a><span class=\"lineno\">  298</span> </div>\n+<div class=\"line\"><a id=\"l00299\" name=\"l00299\"></a><span class=\"lineno\">  299</span>    <span class=\"keywordflow\">if</span> (<a class=\"code hl_function\" href=\"a00989.html#a117b0b4f76b0e63ad1f6a3d83591f034\">IsTriangleRotated</a>()) {</div>\n+<div class=\"line\"><a id=\"l00300\" name=\"l00300\"></a><span class=\"lineno\">  300</span>        REAL fracInv = (REAL)(1.0f / <a class=\"code hl_function\" href=\"a00989.html#a3fb8c711847e677119dcecab48e27200\">GetParamFraction</a>());</div>\n+<div class=\"line\"><a id=\"l00301\" name=\"l00301\"></a><span class=\"lineno\">  301</span> </div>\n+<div class=\"line\"><a id=\"l00302\" name=\"l00302\"></a><span class=\"lineno\">  302</span>        <span class=\"keywordtype\">int</span> depthFactor = 1 &lt;&lt; <a class=\"code hl_function\" href=\"a00989.html#a75d02f3fb15201f2a2ca9850f77db8bb\">GetDepth</a>();</div>\n+<div class=\"line\"><a id=\"l00303\" name=\"l00303\"></a><span class=\"lineno\">  303</span>        u = (REAL)(depthFactor - <a class=\"code hl_function\" href=\"a00989.html#a5e290d380300d960b35a9e4bb36532b3\">GetU</a>()) - (u * fracInv);</div>\n+<div class=\"line\"><a id=\"l00304\" name=\"l00304\"></a><span class=\"lineno\">  304</span>        v = (REAL)(depthFactor - <a class=\"code hl_function\" href=\"a00989.html#adf00c825e17a25a22eddd4a5dc3f3ea2\">GetV</a>()) - (v * fracInv);</div>\n+<div class=\"line\"><a id=\"l00305\" name=\"l00305\"></a><span class=\"lineno\">  305</span>    } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00306\" name=\"l00306\"></a><span class=\"lineno\">  306</span>        <a class=\"code hl_function\" href=\"a00989.html#af348a1feaddb11b275b5291bfe7e76f7\">Normalize</a>(u, v);</div>\n+<div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\">  307</span>    }</div>\n+<div class=\"line\"><a id=\"l00308\" name=\"l00308\"></a><span class=\"lineno\">  308</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00309\" name=\"l00309\"></a><span class=\"lineno\">  309</span> </div>\n+<div class=\"line\"><a id=\"l00310\" name=\"l00310\"></a><span class=\"lineno\">  310</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00311\" name=\"l00311\"></a><span class=\"lineno\">  311</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00312\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00312\" name=\"l00312\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00989.html#acf6abf4b1514b90d77bff5c2563ef1c3\">  312</a></span><a class=\"code hl_function\" href=\"a00989.html#acf6abf4b1514b90d77bff5c2563ef1c3\">PatchParam::UnnormalizeTriangle</a>( REAL &amp; u, REAL &amp; v )<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00313\" name=\"l00313\"></a><span class=\"lineno\">  313</span> </div>\n+<div class=\"line\"><a id=\"l00314\" name=\"l00314\"></a><span class=\"lineno\">  314</span>    <span class=\"keywordflow\">if</span> (<a class=\"code hl_function\" href=\"a00989.html#a117b0b4f76b0e63ad1f6a3d83591f034\">IsTriangleRotated</a>()) {</div>\n+<div class=\"line\"><a id=\"l00315\" name=\"l00315\"></a><span class=\"lineno\">  315</span>        REAL frac = <a class=\"code hl_function\" href=\"a00989.html#a3fb8c711847e677119dcecab48e27200\">GetParamFraction</a>();</div>\n+<div class=\"line\"><a id=\"l00316\" name=\"l00316\"></a><span class=\"lineno\">  316</span> </div>\n+<div class=\"line\"><a id=\"l00317\" name=\"l00317\"></a><span class=\"lineno\">  317</span>        <span class=\"keywordtype\">int</span> depthFactor = 1 &lt;&lt; <a class=\"code hl_function\" href=\"a00989.html#a75d02f3fb15201f2a2ca9850f77db8bb\">GetDepth</a>();</div>\n+<div class=\"line\"><a id=\"l00318\" name=\"l00318\"></a><span class=\"lineno\">  318</span>        u = ((REAL)(depthFactor - <a class=\"code hl_function\" href=\"a00989.html#a5e290d380300d960b35a9e4bb36532b3\">GetU</a>()) - u) * frac;</div>\n+<div class=\"line\"><a id=\"l00319\" name=\"l00319\"></a><span class=\"lineno\">  319</span>        v = ((REAL)(depthFactor - <a class=\"code hl_function\" href=\"a00989.html#adf00c825e17a25a22eddd4a5dc3f3ea2\">GetV</a>()) - v) * frac;</div>\n+<div class=\"line\"><a id=\"l00320\" name=\"l00320\"></a><span class=\"lineno\">  320</span>    } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00321\" name=\"l00321\"></a><span class=\"lineno\">  321</span>        <a class=\"code hl_function\" href=\"a00989.html#ac1285d0e8771e821487cb18d0a324097\">Unnormalize</a>(u, v);</div>\n+<div class=\"line\"><a id=\"l00322\" name=\"l00322\"></a><span class=\"lineno\">  322</span>    }</div>\n+<div class=\"line\"><a id=\"l00323\" name=\"l00323\"></a><span class=\"lineno\">  323</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\">  324</span> </div>\n+<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\">  325</span>} <span class=\"comment\">// end namespace Far</span></div>\n+<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\">  326</span> </div>\n+<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\">  327</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\">  328</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\">  329</span> </div>\n+<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\">  330</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\">  331</span> </div>\n+<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\">  332</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_FAR_PATCH_PARAM */</span><span class=\"preprocessor\"></span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa00908_html_a3139c7c52ddf26b2403e8e95ff63eeb3\"><div class=\"ttname\"><a href=\"a00908.html#a3139c7c52ddf26b2403e8e95ff63eeb3\">OpenSubdiv::OPENSUBDIV_VERSION::Far::ConstPatchParamArray</a></div><div class=\"ttdeci\">Vtr::ConstArray&lt; PatchParam &gt; ConstPatchParamArray</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00836_source.html#l00246\">patchParam.h:246</a></div></div>\n+<div class=\"ttc\" id=\"aa00908_html_a46ea68db89cc3d55c4191ef7648281ce\"><div class=\"ttname\"><a href=\"a00908.html#a46ea68db89cc3d55c4191ef7648281ce\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchParamTable</a></div><div class=\"ttdeci\">std::vector&lt; PatchParam &gt; PatchParamTable</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00836_source.html#l00243\">patchParam.h:243</a></div></div>\n+<div class=\"ttc\" id=\"aa00908_html_ab34c85a48f33dfe7b8bf4d966fdebbf2\"><div class=\"ttname\"><a href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">OpenSubdiv::OPENSUBDIV_VERSION::Far::Index</a></div><div class=\"ttdeci\">Vtr::Index Index</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01486_source.html#l00041\">types.h:41</a></div></div>\n+<div class=\"ttc\" id=\"aa00908_html_abe07210a029a01571c54276ae28b4d88\"><div class=\"ttname\"><a href=\"a00908.html#abe07210a029a01571c54276ae28b4d88\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchParamArray</a></div><div class=\"ttdeci\">Vtr::Array&lt; PatchParam &gt; PatchParamArray</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00836_source.html#l00245\">patchParam.h:245</a></div></div>\n+<div class=\"ttc\" id=\"aa00989_html\"><div class=\"ttname\"><a href=\"a00989.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchParam</a></div><div class=\"ttdoc\">Patch parameterization.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00836_source.html#l00152\">patchParam.h:152</a></div></div>\n+<div class=\"ttc\" id=\"aa00989_html_a117b0b4f76b0e63ad1f6a3d83591f034\"><div class=\"ttname\"><a href=\"a00989.html#a117b0b4f76b0e63ad1f6a3d83591f034\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchParam::IsTriangleRotated</a></div><div class=\"ttdeci\">bool IsTriangleRotated() const</div><div class=\"ttdoc\">Returns if a triangular patch is parametrically rotated 180 degrees.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00836_source.html#l00290\">patchParam.h:290</a></div></div>\n+<div class=\"ttc\" id=\"aa00989_html_a193470573424fe6b2e91f317509b5897\"><div class=\"ttname\"><a href=\"a00989.html#a193470573424fe6b2e91f317509b5897\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchParam::IsRegular</a></div><div class=\"ttdeci\">bool IsRegular() const</div><div class=\"ttdoc\">Returns whether the patch is regular.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00836_source.html#l00228\">patchParam.h:228</a></div></div>\n+<div class=\"ttc\" id=\"aa00989_html_a2adc7ff754a40f9a22c04cf2ab04d75c\"><div class=\"ttname\"><a href=\"a00989.html#a2adc7ff754a40f9a22c04cf2ab04d75c\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchParam::NormalizeTriangle</a></div><div class=\"ttdeci\">void NormalizeTriangle(REAL &amp;u, REAL &amp;v) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00836_source.html#l00297\">patchParam.h:297</a></div></div>\n+<div class=\"ttc\" id=\"aa00989_html_a3ce6d530fdd758f089cd61589cf13937\"><div class=\"ttname\"><a href=\"a00989.html#a3ce6d530fdd758f089cd61589cf13937\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchParam::GetBoundary</a></div><div class=\"ttdeci\">unsigned short GetBoundary() const</div><div class=\"ttdoc\">Returns the boundary edge encoding for the patch.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00836_source.html#l00191\">patchParam.h:191</a></div></div>\n+<div class=\"ttc\" id=\"aa00989_html_a3e80fdc78d4e976e88f8d035a6bdfe9a\"><div class=\"ttname\"><a href=\"a00989.html#a3e80fdc78d4e976e88f8d035a6bdfe9a\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchParam::GetTransition</a></div><div class=\"ttdeci\">unsigned short GetTransition() const</div><div class=\"ttdoc\">Returns the transition edge encoding for the patch.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00836_source.html#l00188\">patchParam.h:188</a></div></div>\n+<div class=\"ttc\" id=\"aa00989_html_a3fb8c711847e677119dcecab48e27200\"><div class=\"ttname\"><a href=\"a00989.html#a3fb8c711847e677119dcecab48e27200\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchParam::GetParamFraction</a></div><div class=\"ttdeci\">float GetParamFraction() const</div><div class=\"ttdoc\">Returns the fraction of unit parametric space covered by this face.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00836_source.html#l00265\">patchParam.h:265</a></div></div>\n+<div class=\"ttc\" id=\"aa00989_html_a5e290d380300d960b35a9e4bb36532b3\"><div class=\"ttname\"><a href=\"a00989.html#a5e290d380300d960b35a9e4bb36532b3\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchParam::GetU</a></div><div class=\"ttdeci\">unsigned short GetU() const</div><div class=\"ttdoc\">Returns the log2 value of the u parameter at the first corner of the patch.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00836_source.html#l00181\">patchParam.h:181</a></div></div>\n+<div class=\"ttc\" id=\"aa00989_html_a71fe5a723e7c3a29b26cb6a0af33a7ee\"><div class=\"ttname\"><a href=\"a00989.html#a71fe5a723e7c3a29b26cb6a0af33a7ee\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchParam::GetFaceId</a></div><div class=\"ttdeci\">Index GetFaceId() const</div><div class=\"ttdoc\">Returns the faceid.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00836_source.html#l00177\">patchParam.h:177</a></div></div>\n+<div class=\"ttc\" id=\"aa00989_html_a75d02f3fb15201f2a2ca9850f77db8bb\"><div class=\"ttname\"><a href=\"a00989.html#a75d02f3fb15201f2a2ca9850f77db8bb\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchParam::GetDepth</a></div><div class=\"ttdeci\">unsigned short GetDepth() const</div><div class=\"ttdoc\">Returns the level of subdivision of the patch.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00836_source.html#l00197\">patchParam.h:197</a></div></div>\n+<div class=\"ttc\" id=\"aa00989_html_a8a53fc370a76c5d29d610d9ae926f4fe\"><div class=\"ttname\"><a href=\"a00989.html#a8a53fc370a76c5d29d610d9ae926f4fe\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchParam::NonQuadRoot</a></div><div class=\"ttdeci\">bool NonQuadRoot() const</div><div class=\"ttdoc\">True if the parent base face is a non-quad.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00836_source.html#l00194\">patchParam.h:194</a></div></div>\n+<div class=\"ttc\" id=\"aa00989_html_a98adcbce89caf00ca5c67c978d1f8576\"><div class=\"ttname\"><a href=\"a00989.html#a98adcbce89caf00ca5c67c978d1f8576\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchParam::Set</a></div><div class=\"ttdeci\">void Set(Index faceid, short u, short v, unsigned short depth, bool nonquad, unsigned short boundary, unsigned short transition, bool regular=false)</div><div class=\"ttdoc\">Sets the values of the bit fields.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00836_source.html#l00249\">patchParam.h:249</a></div></div>\n+<div class=\"ttc\" id=\"aa00989_html_aa71d36872f416feaa853788a7a7a7ef8\"><div class=\"ttname\"><a href=\"a00989.html#aa71d36872f416feaa853788a7a7a7ef8\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchParam::Clear</a></div><div class=\"ttdeci\">void Clear()</div><div class=\"ttdoc\">Resets everything to 0.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00836_source.html#l00174\">patchParam.h:174</a></div></div>\n+<div class=\"ttc\" id=\"aa00989_html_aa992496f945c3e0ffb3a55ca84a7cb60\"><div class=\"ttname\"><a href=\"a00989.html#aa992496f945c3e0ffb3a55ca84a7cb60\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchParam::field1</a></div><div class=\"ttdeci\">unsigned int field1</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00836_source.html#l00231\">patchParam.h:231</a></div></div>\n+<div class=\"ttc\" id=\"aa00989_html_ac1285d0e8771e821487cb18d0a324097\"><div class=\"ttname\"><a href=\"a00989.html#ac1285d0e8771e821487cb18d0a324097\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchParam::Unnormalize</a></div><div class=\"ttdeci\">void Unnormalize(REAL &amp;u, REAL &amp;v) const</div><div class=\"ttdoc\">A (u,v) pair in a normalized parametric space is mapped back into the fraction of parametric space co...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00836_source.html#l00281\">patchParam.h:281</a></div></div>\n+<div class=\"ttc\" id=\"aa00989_html_acf6abf4b1514b90d77bff5c2563ef1c3\"><div class=\"ttname\"><a href=\"a00989.html#acf6abf4b1514b90d77bff5c2563ef1c3\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchParam::UnnormalizeTriangle</a></div><div class=\"ttdeci\">void UnnormalizeTriangle(REAL &amp;u, REAL &amp;v) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00836_source.html#l00312\">patchParam.h:312</a></div></div>\n+<div class=\"ttc\" id=\"aa00989_html_adf00c825e17a25a22eddd4a5dc3f3ea2\"><div class=\"ttname\"><a href=\"a00989.html#adf00c825e17a25a22eddd4a5dc3f3ea2\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchParam::GetV</a></div><div class=\"ttdeci\">unsigned short GetV() const</div><div class=\"ttdoc\">Returns the log2 value of the v parameter at the first corner of the patch.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00836_source.html#l00185\">patchParam.h:185</a></div></div>\n+<div class=\"ttc\" id=\"aa00989_html_ae918c114a445f892134cb94b70d3f07e\"><div class=\"ttname\"><a href=\"a00989.html#ae918c114a445f892134cb94b70d3f07e\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchParam::field0</a></div><div class=\"ttdeci\">unsigned int field0</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00836_source.html#l00230\">patchParam.h:230</a></div></div>\n+<div class=\"ttc\" id=\"aa00989_html_af348a1feaddb11b275b5291bfe7e76f7\"><div class=\"ttname\"><a href=\"a00989.html#af348a1feaddb11b275b5291bfe7e76f7\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchParam::Normalize</a></div><div class=\"ttdeci\">void Normalize(REAL &amp;u, REAL &amp;v) const</div><div class=\"ttdoc\">A (u,v) pair in the fraction of parametric space covered by this face is mapped into a normalized par...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00836_source.html#l00271\">patchParam.h:271</a></div></div>\n+<div class=\"ttc\" id=\"aa01353_html\"><div class=\"ttname\"><a href=\"a01353.html\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00797_source.html#l00053\">array.h:53</a></div></div>\n+<div class=\"ttc\" id=\"aa01357_html\"><div class=\"ttname\"><a href=\"a01357.html\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::Array</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00797_source.html#l00105\">array.h:105</a></div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00836.html\">cudaPatchTable.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7f420b72a822828cfa8b0561c695a5cc.html\">far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00836.html\">patchParam.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-cudaPatchTable.h\n+patchParam.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2015 Pixar\n+2// Copyright 2013 Pixar\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -24,167 +24,262 @@\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n 24\n-25#ifndef OPENSUBDIV3_OSD_CUDA_PATCH_TABLE_H\n-26#define OPENSUBDIV3_OSD_CUDA_PATCH_TABLE_H\n+25#ifndef OPENSUBDIV3_FAR_PATCH_PARAM_H\n+26#define OPENSUBDIV3_FAR_PATCH_PARAM_H\n 27\n 28#include \"../version.h\"\n 29\n-30#include \"../osd/nonCopyable.h\"\n-31#include \"../osd/types.h\"\n-32\n-33#include <vector>\n+30#include \"../far/types.h\"\n+31\n+32namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+33namespace OPENSUBDIV_VERSION {\n 34\n-35namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-36namespace OPENSUBDIV_VERSION {\n-37\n-38namespace Far{\n-39 class PatchTable;\n-40};\n-41\n-42namespace Osd {\n-43\n-_\b5_\b1class _\bC_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be : private NonCopyable<CudaPatchTable> {\n-52public:\n-_\b5_\b4 static _\bC_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be *_\bC_\br_\be_\ba_\bt_\be(_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be const *patchTable,\n-55 void *deviceContext = NULL);\n-_\b5_\b7 _\b~_\bC_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be();\n-58\n-_\b6_\b0 void *_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bB_\bu_\bf_\bf_\be_\br() const { return _\b__\bp_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs; }\n-61\n-_\b6_\b3 void *_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br() const { return _\b__\bi_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br; }\n-64\n-_\b6_\b6 void *_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br() const { return _\b__\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br; }\n-67\n-_\b6_\b9 void *_\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bB_\bu_\bf_\bf_\be_\br() const {\n-70 return _\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs;\n-71 }\n-_\b7_\b3 void *_\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br() const {\n-74 return _\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br;\n-75 }\n-76\n-_\b7_\b8 int _\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs() const { return (int)_\b__\bf_\bv_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs.size(); }\n-79\n-_\b8_\b1 void *_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bB_\bu_\bf_\bf_\be_\br(int fvarChannel) const {\n-82 return _\b__\bf_\bv_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs[fvarChannel];\n-83 }\n-84\n-_\b8_\b6 void *_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br(int fvarChannel = 0) const {\n-87 return _\b__\bf_\bv_\ba_\br_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bs[fvarChannel];\n-88 }\n-89\n-_\b9_\b1 void *_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br(int fvarChannel = 0) const {\n-92 return _\b__\bf_\bv_\ba_\br_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br_\bs[fvarChannel];\n-93 }\n-94\n-95protected:\n-_\b9_\b6 _\bC_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be();\n-97\n-_\b9_\b8 bool _\ba_\bl_\bl_\bo_\bc_\ba_\bt_\be(_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be const *patchTable);\n-99\n-_\b1_\b0_\b0 void *_\b__\bp_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs;\n-_\b1_\b0_\b1 void *_\b__\bi_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br;\n-_\b1_\b0_\b2 void *_\b__\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br;\n-103\n-_\b1_\b0_\b4 void *_\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs;\n-_\b1_\b0_\b5 void *_\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br;\n-106\n-_\b1_\b0_\b7 std::vector<void *> _\b__\bf_\bv_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs;\n-_\b1_\b0_\b8 std::vector<void *> _\b__\bf_\bv_\ba_\br_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bs;\n-_\b1_\b0_\b9 std::vector<void *> _\b__\bf_\bv_\ba_\br_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br_\bs;\n-110};\n-111\n-112} // end namespace Osd\n-113\n-114} // end namespace OPENSUBDIV_VERSION\n-115using namespace OPENSUBDIV_VERSION;\n-116\n-117} // end namespace OpenSubdiv\n-118\n-119#endif // OPENSUBDIV3_OSD_CUDA_PATCH_TABLE_H\n+35namespace Far {\n+36\n+101\n+_\b1_\b5_\b2struct _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm {\n+168 void _\bS_\be_\bt(_\bI_\bn_\bd_\be_\bx faceid, short u, short v,\n+169 unsigned short depth, bool nonquad,\n+170 unsigned short boundary, unsigned short transition,\n+171 bool regular = false);\n+172\n+_\b1_\b7_\b4 void _\bC_\bl_\be_\ba_\br() { _\bf_\bi_\be_\bl_\bd_\b0 = _\bf_\bi_\be_\bl_\bd_\b1 = 0; }\n+175\n+_\b1_\b7_\b7 _\bI_\bn_\bd_\be_\bx _\bG_\be_\bt_\bF_\ba_\bc_\be_\bI_\bd() const { return _\bI_\bn_\bd_\be_\bx(unpack(_\bf_\bi_\be_\bl_\bd_\b0,28,0)); }\n+178\n+_\b1_\b8_\b1 unsigned short _\bG_\be_\bt_\bU() const { return (unsigned short)unpack(_\bf_\bi_\be_\bl_\bd_\b1,10,22);\n+}\n+182\n+_\b1_\b8_\b5 unsigned short _\bG_\be_\bt_\bV() const { return (unsigned short)unpack(_\bf_\bi_\be_\bl_\bd_\b1,10,12);\n+}\n+186\n+_\b1_\b8_\b8 unsigned short _\bG_\be_\bt_\bT_\br_\ba_\bn_\bs_\bi_\bt_\bi_\bo_\bn() const { return (unsigned short)unpack\n+(_\bf_\bi_\be_\bl_\bd_\b0,4,28); }\n+189\n+_\b1_\b9_\b1 unsigned short _\bG_\be_\bt_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by() const { return (unsigned short)unpack\n+(_\bf_\bi_\be_\bl_\bd_\b1,5,7); }\n+192\n+_\b1_\b9_\b4 bool _\bN_\bo_\bn_\bQ_\bu_\ba_\bd_\bR_\bo_\bo_\bt() const { return (unpack(_\bf_\bi_\be_\bl_\bd_\b1,1,4) != 0); }\n+195\n+_\b1_\b9_\b7 unsigned short _\bG_\be_\bt_\bD_\be_\bp_\bt_\bh() const { return (unsigned short)unpack\n+(_\bf_\bi_\be_\bl_\bd_\b1,4,0); }\n+198\n+200 float _\bG_\be_\bt_\bP_\ba_\br_\ba_\bm_\bF_\br_\ba_\bc_\bt_\bi_\bo_\bn() const;\n+201\n+208 template <typename REAL>\n+209 void _\bN_\bo_\br_\bm_\ba_\bl_\bi_\bz_\be( REAL & u, REAL & v ) const;\n+210 template <typename REAL>\n+211 void _\bN_\bo_\br_\bm_\ba_\bl_\bi_\bz_\be_\bT_\br_\bi_\ba_\bn_\bg_\bl_\be( REAL & u, REAL & v ) const;\n+212\n+219 template <typename REAL>\n+220 void _\bU_\bn_\bn_\bo_\br_\bm_\ba_\bl_\bi_\bz_\be( REAL & u, REAL & v ) const;\n+221 template <typename REAL>\n+222 void _\bU_\bn_\bn_\bo_\br_\bm_\ba_\bl_\bi_\bz_\be_\bT_\br_\bi_\ba_\bn_\bg_\bl_\be( REAL & u, REAL & v ) const;\n+223\n+225 bool _\bI_\bs_\bT_\br_\bi_\ba_\bn_\bg_\bl_\be_\bR_\bo_\bt_\ba_\bt_\be_\bd() const;\n+226\n+_\b2_\b2_\b8 bool _\bI_\bs_\bR_\be_\bg_\bu_\bl_\ba_\br() const { return (unpack(_\bf_\bi_\be_\bl_\bd_\b1,1,5) != 0); }\n+229\n+_\b2_\b3_\b0 unsigned int _\bf_\bi_\be_\bl_\bd_\b0:32;\n+_\b2_\b3_\b1 unsigned int _\bf_\bi_\be_\bl_\bd_\b1:32;\n+232\n+233private:\n+234 unsigned int pack(unsigned int value, int width, int offset) const {\n+235 return (unsigned int)((value & ((1<<width)-1)) << offset);\n+236 }\n+237\n+238 unsigned int unpack(unsigned int value, int width, int offset) const {\n+239 return (unsigned int)((value >> offset) & ((1<<width)-1));\n+240 }\n+241};\n+242\n+_\b2_\b4_\b3typedef std::vector<PatchParam> _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bT_\ba_\bb_\bl_\be;\n+244\n+_\b2_\b4_\b5typedef _\bV_\bt_\br_\b:_\b:_\bA_\br_\br_\ba_\by_\b<_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b> _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bA_\br_\br_\ba_\by;\n+_\b2_\b4_\b6typedef _\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by_\b<_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b> _\bC_\bo_\bn_\bs_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bA_\br_\br_\ba_\by;\n+247\n+248inline void\n+_\b2_\b4_\b9_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b:_\b:_\bS_\be_\bt(_\bI_\bn_\bd_\be_\bx faceid, short u, short v,\n+250 unsigned short depth, bool nonquad,\n+251 unsigned short boundary, unsigned short transition,\n+252 bool regular) {\n+253 _\bf_\bi_\be_\bl_\bd_\b0 = pack(faceid, 28, 0) |\n+254 pack(transition, 4, 28);\n+255\n+256 _\bf_\bi_\be_\bl_\bd_\b1 = pack(u, 10, 22) |\n+257 pack(v, 10, 12) |\n+258 pack(boundary, 5, 7) |\n+259 pack(regular, 1, 5) |\n+260 pack(nonquad, 1, 4) |\n+261 pack(depth, 4, 0);\n+262}\n+263\n+264inline float\n+_\b2_\b6_\b5_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b:_\b:_\bG_\be_\bt_\bP_\ba_\br_\ba_\bm_\bF_\br_\ba_\bc_\bt_\bi_\bo_\bn( ) const {\n+266 return 1.0f / (float)(1 << (_\bG_\be_\bt_\bD_\be_\bp_\bt_\bh() - _\bN_\bo_\bn_\bQ_\bu_\ba_\bd_\bR_\bo_\bo_\bt()));\n+267}\n+268\n+269template <typename REAL>\n+270inline void\n+_\b2_\b7_\b1_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b:_\b:_\bN_\bo_\br_\bm_\ba_\bl_\bi_\bz_\be( REAL & u, REAL & v ) const {\n+272\n+273 REAL fracInv = (REAL)(1.0f / _\bG_\be_\bt_\bP_\ba_\br_\ba_\bm_\bF_\br_\ba_\bc_\bt_\bi_\bo_\bn());\n+274\n+275 u = u * fracInv - (REAL)_\bG_\be_\bt_\bU();\n+276 v = v * fracInv - (REAL)_\bG_\be_\bt_\bV();\n+277}\n+278\n+279template <typename REAL>\n+280inline void\n+_\b2_\b8_\b1_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b:_\b:_\bU_\bn_\bn_\bo_\br_\bm_\ba_\bl_\bi_\bz_\be( REAL & u, REAL & v ) const {\n+282\n+283 REAL frac = (REAL)_\bG_\be_\bt_\bP_\ba_\br_\ba_\bm_\bF_\br_\ba_\bc_\bt_\bi_\bo_\bn();\n+284\n+285 u = (u + (REAL)_\bG_\be_\bt_\bU()) * frac;\n+286 v = (v + (REAL)_\bG_\be_\bt_\bV()) * frac;\n+287}\n+288\n+289inline bool\n+_\b2_\b9_\b0_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b:_\b:_\bI_\bs_\bT_\br_\bi_\ba_\bn_\bg_\bl_\be_\bR_\bo_\bt_\ba_\bt_\be_\bd() const {\n+291\n+292 return (_\bG_\be_\bt_\bU() + _\bG_\be_\bt_\bV()) >= (1 << _\bG_\be_\bt_\bD_\be_\bp_\bt_\bh());\n+293}\n+294\n+295template <typename REAL>\n+296inline void\n+_\b2_\b9_\b7_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b:_\b:_\bN_\bo_\br_\bm_\ba_\bl_\bi_\bz_\be_\bT_\br_\bi_\ba_\bn_\bg_\bl_\be( REAL & u, REAL & v ) const {\n+298\n+299 if (_\bI_\bs_\bT_\br_\bi_\ba_\bn_\bg_\bl_\be_\bR_\bo_\bt_\ba_\bt_\be_\bd()) {\n+300 REAL fracInv = (REAL)(1.0f / _\bG_\be_\bt_\bP_\ba_\br_\ba_\bm_\bF_\br_\ba_\bc_\bt_\bi_\bo_\bn());\n+301\n+302 int depthFactor = 1 << _\bG_\be_\bt_\bD_\be_\bp_\bt_\bh();\n+303 u = (REAL)(depthFactor - _\bG_\be_\bt_\bU()) - (u * fracInv);\n+304 v = (REAL)(depthFactor - _\bG_\be_\bt_\bV()) - (v * fracInv);\n+305 } else {\n+306 _\bN_\bo_\br_\bm_\ba_\bl_\bi_\bz_\be(u, v);\n+307 }\n+308}\n+309\n+310template <typename REAL>\n+311inline void\n+_\b3_\b1_\b2_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b:_\b:_\bU_\bn_\bn_\bo_\br_\bm_\ba_\bl_\bi_\bz_\be_\bT_\br_\bi_\ba_\bn_\bg_\bl_\be( REAL & u, REAL & v ) const {\n+313\n+314 if (_\bI_\bs_\bT_\br_\bi_\ba_\bn_\bg_\bl_\be_\bR_\bo_\bt_\ba_\bt_\be_\bd()) {\n+315 REAL frac = _\bG_\be_\bt_\bP_\ba_\br_\ba_\bm_\bF_\br_\ba_\bc_\bt_\bi_\bo_\bn();\n+316\n+317 int depthFactor = 1 << _\bG_\be_\bt_\bD_\be_\bp_\bt_\bh();\n+318 u = ((REAL)(depthFactor - _\bG_\be_\bt_\bU()) - u) * frac;\n+319 v = ((REAL)(depthFactor - _\bG_\be_\bt_\bV()) - v) * frac;\n+320 } else {\n+321 _\bU_\bn_\bn_\bo_\br_\bm_\ba_\bl_\bi_\bz_\be(u, v);\n+322 }\n+323}\n+324\n+325} // end namespace Far\n+326\n+327} // end namespace OPENSUBDIV_VERSION\n+328using namespace OPENSUBDIV_VERSION;\n+329\n+330} // end namespace OpenSubdiv\n+331\n+332#endif /* OPENSUBDIV3_FAR_PATCH_PARAM */\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n-Container for arrays of parametric patches.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n-CUDA patch table.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bB_\bu_\bf_\bf_\be_\br\n-void * GetFVarPatchArrayBuffer(int fvarChannel) const\n-Returns the cuda memory of the array of Osd::PatchArray buffer.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b8_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bf_\bv_\ba_\br_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br_\bs\n-std::vector< void * > _fvarParamBuffers\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b0_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static CudaPatchTable * Create(Far::PatchTable const *patchTable, void\n-*deviceContext=NULL)\n-Creator. Returns NULL if error.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs\n-void * _varyingPatchArrays\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b0_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-void * GetVaryingPatchIndexBuffer() const\n-Returns the cuda memory of the array of varying control vertices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bf_\bv_\ba_\br_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bs\n-std::vector< void * > _fvarIndexBuffers\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b0_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bB_\bu_\bf_\bf_\be_\br\n-void * GetVaryingPatchArrayBuffer() const\n-Returns the cuda memory of the array of Osd::PatchArray buffer.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bv_\ba_\br_\by_\bi_\bn_\bg_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-void * _varyingIndexBuffer\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b0_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b~_\bC_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n-~CudaPatchTable()\n-Destructor.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bB_\bu_\bf_\bf_\be_\br\n-void * GetPatchArrayBuffer() const\n-Returns the cuda memory of the array of Osd::PatchArray buffer.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bf_\bv_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs\n-std::vector< void * > _fvarPatchArrays\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b0_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\ba_\bl_\bl_\bo_\bc_\ba_\bt_\be\n-bool allocate(Far::PatchTable const *patchTable)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-void * GetPatchIndexBuffer() const\n-Returns the cuda memory of the patch control vertices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs\n-int GetNumFVarChannels() const\n-Returns the number of face-varying channels buffers.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bp_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs\n-void * _patchArrays\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b0_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br\n-void * GetPatchParamBuffer() const\n-Returns the cuda memory of the array of Osd::PatchParam buffer.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-void * GetFVarPatchIndexBuffer(int fvarChannel=0) const\n-Returns the cuda memory of the array of face-varying control vertices.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b8_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br\n-void * GetFVarPatchParamBuffer(int fvarChannel=0) const\n-Returns the cuda memory of the array of face-varying param.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b9_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n-CudaPatchTable()\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bB_\bu_\bf_\bf_\be_\br\n-void * _patchParamBuffer\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b0_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b__\bi_\bn_\bd_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-void * _indexBuffer\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b0_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bA_\br_\br_\ba_\by\n+Vtr::ConstArray< PatchParam > ConstPatchParamArray\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b._\bh_\b:_\b2_\b4_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bT_\ba_\bb_\bl_\be\n+std::vector< PatchParam > PatchParamTable\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b._\bh_\b:_\b2_\b4_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx\n+Vtr::Index Index\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b4_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bA_\br_\br_\ba_\by\n+Vtr::Array< PatchParam > PatchParamArray\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b._\bh_\b:_\b2_\b4_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm\n+Patch parameterization.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b._\bh_\b:_\b1_\b5_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b:_\b:_\bI_\bs_\bT_\br_\bi_\ba_\bn_\bg_\bl_\be_\bR_\bo_\bt_\ba_\bt_\be_\bd\n+bool IsTriangleRotated() const\n+Returns if a triangular patch is parametrically rotated 180 degrees.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b._\bh_\b:_\b2_\b9_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b:_\b:_\bI_\bs_\bR_\be_\bg_\bu_\bl_\ba_\br\n+bool IsRegular() const\n+Returns whether the patch is regular.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b._\bh_\b:_\b2_\b2_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b:_\b:_\bN_\bo_\br_\bm_\ba_\bl_\bi_\bz_\be_\bT_\br_\bi_\ba_\bn_\bg_\bl_\be\n+void NormalizeTriangle(REAL &u, REAL &v) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b._\bh_\b:_\b2_\b9_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b:_\b:_\bG_\be_\bt_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by\n+unsigned short GetBoundary() const\n+Returns the boundary edge encoding for the patch.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b._\bh_\b:_\b1_\b9_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b:_\b:_\bG_\be_\bt_\bT_\br_\ba_\bn_\bs_\bi_\bt_\bi_\bo_\bn\n+unsigned short GetTransition() const\n+Returns the transition edge encoding for the patch.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b._\bh_\b:_\b1_\b8_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b:_\b:_\bG_\be_\bt_\bP_\ba_\br_\ba_\bm_\bF_\br_\ba_\bc_\bt_\bi_\bo_\bn\n+float GetParamFraction() const\n+Returns the fraction of unit parametric space covered by this face.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b._\bh_\b:_\b2_\b6_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b:_\b:_\bG_\be_\bt_\bU\n+unsigned short GetU() const\n+Returns the log2 value of the u parameter at the first corner of the patch.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b._\bh_\b:_\b1_\b8_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b:_\b:_\bG_\be_\bt_\bF_\ba_\bc_\be_\bI_\bd\n+Index GetFaceId() const\n+Returns the faceid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b._\bh_\b:_\b1_\b7_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b:_\b:_\bG_\be_\bt_\bD_\be_\bp_\bt_\bh\n+unsigned short GetDepth() const\n+Returns the level of subdivision of the patch.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b._\bh_\b:_\b1_\b9_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b:_\b:_\bN_\bo_\bn_\bQ_\bu_\ba_\bd_\bR_\bo_\bo_\bt\n+bool NonQuadRoot() const\n+True if the parent base face is a non-quad.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b._\bh_\b:_\b1_\b9_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b:_\b:_\bS_\be_\bt\n+void Set(Index faceid, short u, short v, unsigned short depth, bool nonquad,\n+unsigned short boundary, unsigned short transition, bool regular=false)\n+Sets the values of the bit fields.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b._\bh_\b:_\b2_\b4_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b:_\b:_\bC_\bl_\be_\ba_\br\n+void Clear()\n+Resets everything to 0.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b._\bh_\b:_\b1_\b7_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b1\n+unsigned int field1\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b._\bh_\b:_\b2_\b3_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b:_\b:_\bU_\bn_\bn_\bo_\br_\bm_\ba_\bl_\bi_\bz_\be\n+void Unnormalize(REAL &u, REAL &v) const\n+A (u,v) pair in a normalized parametric space is mapped back into the fraction\n+of parametric space co...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b._\bh_\b:_\b2_\b8_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b:_\b:_\bU_\bn_\bn_\bo_\br_\bm_\ba_\bl_\bi_\bz_\be_\bT_\br_\bi_\ba_\bn_\bg_\bl_\be\n+void UnnormalizeTriangle(REAL &u, REAL &v) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b._\bh_\b:_\b3_\b1_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b:_\b:_\bG_\be_\bt_\bV\n+unsigned short GetV() const\n+Returns the log2 value of the v parameter at the first corner of the patch.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b._\bh_\b:_\b1_\b8_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b:_\b:_\bf_\bi_\be_\bl_\bd_\b0\n+unsigned int field0\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b._\bh_\b:_\b2_\b3_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b:_\b:_\bN_\bo_\br_\bm_\ba_\bl_\bi_\bz_\be\n+void Normalize(REAL &u, REAL &v) const\n+A (u,v) pair in the fraction of parametric space covered by this face is mapped\n+into a normalized par...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b._\bh_\b:_\b2_\b7_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b5_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bA_\br_\br_\ba_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b1_\b0_\b5\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bc_\bu_\bd_\ba_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh\n+    * _\bf_\ba_\br\n+    * _\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00839.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00839.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/cudaEvaluator.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/far/error.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -88,49 +88,78 @@\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n-<a href=\"#nested-classes\">Classes</a> &#124;\n-<a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">cudaEvaluator.h File Reference</div></div>\n+<a href=\"#namespaces\">Namespaces</a> &#124;\n+<a href=\"#typedef-members\">Typedefs</a> &#124;\n+<a href=\"#enum-members\">Enumerations</a> &#124;\n+<a href=\"#func-members\">Functions</a>  </div>\n+  <div class=\"headertitle\"><div class=\"title\">error.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &lt;vector&gt;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00866_source.html\">../osd/bufferDescriptor.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a01489_source.html\">../osd/types.h</a>&quot;</code><br />\n </div>\n <p><a href=\"a00839_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n-<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n-Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01181.html\">CudaStencilTable</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">CUDA stencil table.  <a href=\"a01181.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01185.html\">CudaEvaluator</a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-</table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+</table><table class=\"memberdecls\">\n+<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"typedef-members\" name=\"typedef-members\"></a>\n+Typedefs</h2></td></tr>\n+<tr class=\"memitem:aa1630f297a91dfc683dfcfddeeebb2ac\" id=\"r_aa1630f297a91dfc683dfcfddeeebb2ac\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef void(*&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html#aa1630f297a91dfc683dfcfddeeebb2ac\">ErrorCallbackFunc</a>) (<a class=\"el\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45a\">ErrorType</a> err, const char *message)</td></tr>\n+<tr class=\"memdesc:aa1630f297a91dfc683dfcfddeeebb2ac\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">The error callback function type (default is \"printf\")  <br /></td></tr>\n+<tr class=\"separator:aa1630f297a91dfc683dfcfddeeebb2ac\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:a2bd300390ebc686e71a3690f4a0b1726\" id=\"r_a2bd300390ebc686e71a3690f4a0b1726\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef void(*&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html#a2bd300390ebc686e71a3690f4a0b1726\">WarningCallbackFunc</a>) (const char *message)</td></tr>\n+<tr class=\"memdesc:a2bd300390ebc686e71a3690f4a0b1726\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">The warning callback function type (default is \"printf\")  <br /></td></tr>\n+<tr class=\"separator:a2bd300390ebc686e71a3690f4a0b1726\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+</table><table class=\"memberdecls\">\n+<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\n+Enumerations</h2></td></tr>\n+<tr class=\"memitem:ab0df38968e4f03a3f1f6d6df0f31f45a\" id=\"r_ab0df38968e4f03a3f1f6d6df0f31f45a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45a\">ErrorType</a> { <br />\n+&#160;&#160;<a class=\"el\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45aabeca977bc439b451aea1325f48a52a0b\">FAR_NO_ERROR</a>\n+, <br />\n+&#160;&#160;<a class=\"el\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45aa2a5bda2a3e25aa282462381f55284980\">FAR_FATAL_ERROR</a>\n+, <br />\n+&#160;&#160;<a class=\"el\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45aa3efe6cb2ec7e23769d53919dfb3291b5\">FAR_INTERNAL_CODING_ERROR</a>\n+, <br />\n+&#160;&#160;<a class=\"el\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45aa9b2839feb039937015e9668f601e4d32\">FAR_CODING_ERROR</a>\n+, <br />\n+&#160;&#160;<a class=\"el\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45aac565fa39d681e2766584dd87246c3bdd\">FAR_RUNTIME_ERROR</a>\n+<br />\n+ }</td></tr>\n+<tr class=\"separator:ab0df38968e4f03a3f1f6d6df0f31f45a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+</table><table class=\"memberdecls\">\n+<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\n+Functions</h2></td></tr>\n+<tr class=\"memitem:a3ba4fd4ed534a5c9c32ad01fa88bb8d9\" id=\"r_a3ba4fd4ed534a5c9c32ad01fa88bb8d9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html#a3ba4fd4ed534a5c9c32ad01fa88bb8d9\">SetErrorCallback</a> (<a class=\"el\" href=\"a00908.html#aa1630f297a91dfc683dfcfddeeebb2ac\">ErrorCallbackFunc</a> func)</td></tr>\n+<tr class=\"memdesc:a3ba4fd4ed534a5c9c32ad01fa88bb8d9\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the error callback function (default is \"printf\")  <br /></td></tr>\n+<tr class=\"separator:a3ba4fd4ed534a5c9c32ad01fa88bb8d9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:a73bbe6b41209e4c34234f192f0193a63\" id=\"r_a73bbe6b41209e4c34234f192f0193a63\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html#a73bbe6b41209e4c34234f192f0193a63\">SetWarningCallback</a> (<a class=\"el\" href=\"a00908.html#a2bd300390ebc686e71a3690f4a0b1726\">WarningCallbackFunc</a> func)</td></tr>\n+<tr class=\"memdesc:a73bbe6b41209e4c34234f192f0193a63\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sets the warning callback function (default is \"printf\")  <br /></td></tr>\n+<tr class=\"separator:a73bbe6b41209e4c34234f192f0193a63\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:a25d51c3a61fb3dacded6e48d01fd2fdb\" id=\"r_a25d51c3a61fb3dacded6e48d01fd2fdb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html#a25d51c3a61fb3dacded6e48d01fd2fdb\">Error</a> (<a class=\"el\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45a\">ErrorType</a> err, const char *format,...)</td></tr>\n+<tr class=\"memdesc:a25d51c3a61fb3dacded6e48d01fd2fdb\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sends an OSD error with a message (internal use only)  <br /></td></tr>\n+<tr class=\"separator:a25d51c3a61fb3dacded6e48d01fd2fdb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:a97d41b6faaf421937e6b82bd1c3067db\" id=\"r_a97d41b6faaf421937e6b82bd1c3067db\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html#a97d41b6faaf421937e6b82bd1c3067db\">Warning</a> (const char *format,...)</td></tr>\n+<tr class=\"memdesc:a97d41b6faaf421937e6b82bd1c3067db\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Sends an OSD warning message (internal use only)  <br /></td></tr>\n+<tr class=\"separator:a97d41b6faaf421937e6b82bd1c3067db\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00839.html\">cudaEvaluator.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7f420b72a822828cfa8b0561c695a5cc.html\">far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00839.html\">error.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,30 +1,48 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-cudaEvaluator.h File Reference\n+_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bT_\by_\bp_\be_\bd_\be_\bf_\bs | _\bE_\bn_\bu_\bm_\be_\br_\ba_\bt_\bi_\bo_\bn_\bs | _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n+error.h File Reference\n #include \"../version.h\"\n-#include <vector>\n-#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh\"\n-#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n-C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bC_\bu_\bd_\ba_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n-\u00a0       CUDA stencil table. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n-\u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n+T\bTy\byp\bpe\bed\bde\bef\bfs\bs\n+typedef void(*\u00a0 _\bE_\br_\br_\bo_\br_\bC_\ba_\bl_\bl_\bb_\ba_\bc_\bk_\bF_\bu_\bn_\bc) (_\bE_\br_\br_\bo_\br_\bT_\by_\bp_\be err, const char *message)\n+\u00a0               The error callback function type (default is \"printf\")\n+\u00a0\n+typedef void(*\u00a0 _\bW_\ba_\br_\bn_\bi_\bn_\bg_\bC_\ba_\bl_\bl_\bb_\ba_\bc_\bk_\bF_\bu_\bn_\bc) (const char *message)\n+\u00a0               The warning callback function type (default is \"printf\")\n+\u00a0\n+E\bEn\bnu\bum\bme\ber\bra\bat\bti\bio\bon\bns\bs\n+enum \u00a0 _\bE_\br_\br_\bo_\br_\bT_\by_\bp_\be {\n+       \u00a0\u00a0_\bF_\bA_\bR_\b__\bN_\bO_\b__\bE_\bR_\bR_\bO_\bR ,\n+       \u00a0\u00a0_\bF_\bA_\bR_\b__\bF_\bA_\bT_\bA_\bL_\b__\bE_\bR_\bR_\bO_\bR ,\n+       \u00a0\u00a0_\bF_\bA_\bR_\b__\bI_\bN_\bT_\bE_\bR_\bN_\bA_\bL_\b__\bC_\bO_\bD_\bI_\bN_\bG_\b__\bE_\bR_\bR_\bO_\bR ,\n+       \u00a0\u00a0_\bF_\bA_\bR_\b__\bC_\bO_\bD_\bI_\bN_\bG_\b__\bE_\bR_\bR_\bO_\bR ,\n+       \u00a0\u00a0_\bF_\bA_\bR_\b__\bR_\bU_\bN_\bT_\bI_\bM_\bE_\b__\bE_\bR_\bR_\bO_\bR\n+       }\n+\u00a0\n+F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n+void\u00a0 _\bS_\be_\bt_\bE_\br_\br_\bo_\br_\bC_\ba_\bl_\bl_\bb_\ba_\bc_\bk (_\bE_\br_\br_\bo_\br_\bC_\ba_\bl_\bl_\bb_\ba_\bc_\bk_\bF_\bu_\bn_\bc func)\n+\u00a0     Sets the error callback function (default is \"printf\")\n+\u00a0\n+void\u00a0 _\bS_\be_\bt_\bW_\ba_\br_\bn_\bi_\bn_\bg_\bC_\ba_\bl_\bl_\bb_\ba_\bc_\bk (_\bW_\ba_\br_\bn_\bi_\bn_\bg_\bC_\ba_\bl_\bl_\bb_\ba_\bc_\bk_\bF_\bu_\bn_\bc func)\n+\u00a0     Sets the warning callback function (default is \"printf\")\n+\u00a0\n+void\u00a0 _\bE_\br_\br_\bo_\br (_\bE_\br_\br_\bo_\br_\bT_\by_\bp_\be err, const char *format,...)\n+\u00a0     Sends an OSD error with a message (internal use only)\n+\u00a0\n+void\u00a0 _\bW_\ba_\br_\bn_\bi_\bn_\bg (const char *format,...)\n+\u00a0     Sends an OSD warning message (internal use only)\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bc_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh\n+    * _\bf_\ba_\br\n+    * _\be_\br_\br_\bo_\br_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00839.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00839.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,4 +1,15 @@\n var a00839 = [\n-    [\"CudaStencilTable\", \"a01181.html\", \"a01181\"],\n-    [\"CudaEvaluator\", \"a01185.html\", null]\n+    [\"ErrorCallbackFunc\", \"a00839.html#aa1630f297a91dfc683dfcfddeeebb2ac\", null],\n+    [\"WarningCallbackFunc\", \"a00839.html#a2bd300390ebc686e71a3690f4a0b1726\", null],\n+    [\"ErrorType\", \"a00839.html#ab0df38968e4f03a3f1f6d6df0f31f45a\", [\n+        [\"FAR_NO_ERROR\", \"a00839.html#ab0df38968e4f03a3f1f6d6df0f31f45aabeca977bc439b451aea1325f48a52a0b\", null],\n+        [\"FAR_FATAL_ERROR\", \"a00839.html#ab0df38968e4f03a3f1f6d6df0f31f45aa2a5bda2a3e25aa282462381f55284980\", null],\n+        [\"FAR_INTERNAL_CODING_ERROR\", \"a00839.html#ab0df38968e4f03a3f1f6d6df0f31f45aa3efe6cb2ec7e23769d53919dfb3291b5\", null],\n+        [\"FAR_CODING_ERROR\", \"a00839.html#ab0df38968e4f03a3f1f6d6df0f31f45aa9b2839feb039937015e9668f601e4d32\", null],\n+        [\"FAR_RUNTIME_ERROR\", \"a00839.html#ab0df38968e4f03a3f1f6d6df0f31f45aac565fa39d681e2766584dd87246c3bdd\", null]\n+    ]],\n+    [\"Error\", \"a00839.html#a25d51c3a61fb3dacded6e48d01fd2fdb\", null],\n+    [\"SetErrorCallback\", \"a00839.html#a3ba4fd4ed534a5c9c32ad01fa88bb8d9\", null],\n+    [\"SetWarningCallback\", \"a00839.html#a73bbe6b41209e4c34234f192f0193a63\", null],\n+    [\"Warning\", \"a00839.html#a97d41b6faaf421937e6b82bd1c3067db\", null]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00839_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00839_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/cudaEvaluator.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/far/error.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">cudaEvaluator.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">error.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00839.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2015 Pixar</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2013 Pixar</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -119,582 +119,80 @@\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_CUDA_EVALUATOR_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_CUDA_EVALUATOR_H</span></div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_FAR_ERROR_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_FAR_ERROR_H</span></div>\n <div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n <div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n <div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../osd/bufferDescriptor.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &quot;../osd/types.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">namespace </span>Far {</div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span>    <span class=\"keyword\">class </span>PatchTable;</div>\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span>    <span class=\"keyword\">class </span>StencilTable;</div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span>    <span class=\"keyword\">class </span>LimitStencilTable;</div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span>}</div>\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span> </div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"keyword\">namespace </span>Osd {</div>\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00052\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01181.html\">   52</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01181.html\">CudaStencilTable</a> {</div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"foldopen\" id=\"foldopen00054\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01181.html#afa5ea3da09e459d3786b4249caea825d\">   54</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01181.html\">CudaStencilTable</a> *<a class=\"code hl_function\" href=\"a01181.html#afa5ea3da09e459d3786b4249caea825d\">Create</a>(<a class=\"code hl_class\" href=\"a01065.html\">Far::StencilTable</a> <span class=\"keyword\">const</span> *stencilTable,</div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span>                                    <span class=\"keywordtype\">void</span> *deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span>        <span class=\"keywordflow\">return</span> <span class=\"keyword\">new</span> <a class=\"code hl_class\" href=\"a01181.html\">CudaStencilTable</a>(stencilTable);</div>\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span>    }</div>\n-</div>\n-<div class=\"foldopen\" id=\"foldopen00059\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01181.html#ac1bda7ee1a17bc67c977cde973c0aaad\">   59</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01181.html\">CudaStencilTable</a> *<a class=\"code hl_function\" href=\"a01181.html#ac1bda7ee1a17bc67c977cde973c0aaad\">Create</a>(<a class=\"code hl_class\" href=\"a01081.html\">Far::LimitStencilTable</a> <span class=\"keyword\">const</span> *limitStencilTable,</div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span>                                    <span class=\"keywordtype\">void</span> *deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span>        <span class=\"keywordflow\">return</span> <span class=\"keyword\">new</span> <a class=\"code hl_class\" href=\"a01181.html\">CudaStencilTable</a>(limitStencilTable);</div>\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>    }</div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span> </div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"keyword\">namespace </span>Far {</div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00035\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45a\">   35</a></span><span class=\"keyword\">typedef</span> <span class=\"keyword\">enum</span> {</div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45aabeca977bc439b451aea1325f48a52a0b\">   36</a></span>    <a class=\"code hl_enumvalue\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45aabeca977bc439b451aea1325f48a52a0b\">FAR_NO_ERROR</a>,               </div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45aa2a5bda2a3e25aa282462381f55284980\">   37</a></span>    <a class=\"code hl_enumvalue\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45aa2a5bda2a3e25aa282462381f55284980\">FAR_FATAL_ERROR</a>,            </div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45aa3efe6cb2ec7e23769d53919dfb3291b5\">   38</a></span>    <a class=\"code hl_enumvalue\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45aa3efe6cb2ec7e23769d53919dfb3291b5\">FAR_INTERNAL_CODING_ERROR</a>,  </div>\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45aa9b2839feb039937015e9668f601e4d32\">   39</a></span>    <a class=\"code hl_enumvalue\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45aa9b2839feb039937015e9668f601e4d32\">FAR_CODING_ERROR</a>,           </div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span>    <a class=\"code hl_enumvalue\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45aac565fa39d681e2766584dd87246c3bdd\">FAR_RUNTIME_ERROR</a>           </div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45aac565fa39d681e2766584dd87246c3bdd\">   41</a></span>} <a class=\"code hl_enumeration\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45a\">ErrorType</a>;</div>\n </div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span> </div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01181.html#af872fc469b3696a745d30d22c2b89c4c\">   65</a></span>    <span class=\"keyword\">explicit</span> <a class=\"code hl_function\" href=\"a01181.html#af872fc469b3696a745d30d22c2b89c4c\">CudaStencilTable</a>(<a class=\"code hl_class\" href=\"a01065.html\">Far::StencilTable</a> <span class=\"keyword\">const</span> *stencilTable);</div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01181.html#a45150c630c07bbeabd4b91145cecf087\">   66</a></span>    <span class=\"keyword\">explicit</span> <a class=\"code hl_function\" href=\"a01181.html#a45150c630c07bbeabd4b91145cecf087\">CudaStencilTable</a>(<a class=\"code hl_class\" href=\"a01081.html\">Far::LimitStencilTable</a> <span class=\"keyword\">const</span> *limitStencilTable);</div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01181.html#a178a7d6f638161ad174b992c844004ba\">   67</a></span>    <a class=\"code hl_function\" href=\"a01181.html#a178a7d6f638161ad174b992c844004ba\">~CudaStencilTable</a>();</div>\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span> </div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span>    <span class=\"comment\">// interfaces needed for CudaCompute</span></div>\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01181.html#ac4528f233689c7f4ae7f3fd7b0eea484\">   70</a></span>    <span class=\"keywordtype\">void</span> *<a class=\"code hl_function\" href=\"a01181.html#ac4528f233689c7f4ae7f3fd7b0eea484\">GetSizesBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _sizes; }</div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01181.html#a3822b0045b4aa89b646b145acf6dc230\">   71</a></span>    <span class=\"keywordtype\">void</span> *<a class=\"code hl_function\" href=\"a01181.html#a3822b0045b4aa89b646b145acf6dc230\">GetOffsetsBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _offsets; }</div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01181.html#af2f896634b0a6cc6d4efb82aafbad5a6\">   72</a></span>    <span class=\"keywordtype\">void</span> *<a class=\"code hl_function\" href=\"a01181.html#af2f896634b0a6cc6d4efb82aafbad5a6\">GetIndicesBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _indices; }</div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01181.html#aa3cd13b6b7e97cebf92d03d3208b75fa\">   73</a></span>    <span class=\"keywordtype\">void</span> *<a class=\"code hl_function\" href=\"a01181.html#aa3cd13b6b7e97cebf92d03d3208b75fa\">GetWeightsBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _weights; }</div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01181.html#a2b91670573e565368e68512e02d045d6\">   74</a></span>    <span class=\"keywordtype\">void</span> *<a class=\"code hl_function\" href=\"a01181.html#a2b91670573e565368e68512e02d045d6\">GetDuWeightsBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _duWeights; }</div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01181.html#a5a1c0c8eb5d41b526ec9480f03dbf4d0\">   75</a></span>    <span class=\"keywordtype\">void</span> *<a class=\"code hl_function\" href=\"a01181.html#a5a1c0c8eb5d41b526ec9480f03dbf4d0\">GetDvWeightsBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _dvWeights; }</div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01181.html#a6b4f42dac92785ea5a1d77a4a75fa502\">   76</a></span>    <span class=\"keywordtype\">void</span> *<a class=\"code hl_function\" href=\"a01181.html#a6b4f42dac92785ea5a1d77a4a75fa502\">GetDuuWeightsBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _duuWeights; }</div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01181.html#a0227c2f6e9e0eaa1bf104e5a6efa0830\">   77</a></span>    <span class=\"keywordtype\">void</span> *<a class=\"code hl_function\" href=\"a01181.html#a0227c2f6e9e0eaa1bf104e5a6efa0830\">GetDuvWeightsBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _duvWeights; }</div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01181.html#a2fd4ce98e6978f5895dd4c79ef84e4d5\">   78</a></span>    <span class=\"keywordtype\">void</span> *<a class=\"code hl_function\" href=\"a01181.html#a2fd4ce98e6978f5895dd4c79ef84e4d5\">GetDvvWeightsBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _dvvWeights; }</div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01181.html#a65836d2070b943c8fecbad926d074de2\">   79</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01181.html#a65836d2070b943c8fecbad926d074de2\">GetNumStencils</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _numStencils; }</div>\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span> </div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span> </div>\n+<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00908.html#aa1630f297a91dfc683dfcfddeeebb2ac\">   45</a></span><span class=\"keyword\">typedef</span> void (*<a class=\"code hl_typedef\" href=\"a00908.html#aa1630f297a91dfc683dfcfddeeebb2ac\">ErrorCallbackFunc</a>)(<a class=\"code hl_enumeration\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45a\">ErrorType</a> err, <span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span> *message);</div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span> </div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00908.html#a3ba4fd4ed534a5c9c32ad01fa88bb8d9\">   53</a></span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00908.html#a3ba4fd4ed534a5c9c32ad01fa88bb8d9\">SetErrorCallback</a>(<a class=\"code hl_typedef\" href=\"a00908.html#aa1630f297a91dfc683dfcfddeeebb2ac\">ErrorCallbackFunc</a> func);</div>\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span> </div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span> </div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00908.html#a2bd300390ebc686e71a3690f4a0b1726\">   57</a></span><span class=\"keyword\">typedef</span> void (*<a class=\"code hl_typedef\" href=\"a00908.html#a2bd300390ebc686e71a3690f4a0b1726\">WarningCallbackFunc</a>)(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span> *message);</div>\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span> </div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00908.html#a73bbe6b41209e4c34234f192f0193a63\">   65</a></span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00908.html#a73bbe6b41209e4c34234f192f0193a63\">SetWarningCallback</a>(<a class=\"code hl_typedef\" href=\"a00908.html#a2bd300390ebc686e71a3690f4a0b1726\">WarningCallbackFunc</a> func);</div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span> </div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span> </div>\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span><span class=\"comment\">//  The following are intended for internal use only (and will eventually</span></div>\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span><span class=\"comment\">//  be moved within namespace internal)</span></div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span> </div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00908.html#a25d51c3a61fb3dacded6e48d01fd2fdb\">   79</a></span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00908.html#a25d51c3a61fb3dacded6e48d01fd2fdb\">Error</a>(<a class=\"code hl_enumeration\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45a\">ErrorType</a> err, <span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span> *format, ...);</div>\n <div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span> </div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>    <span class=\"keywordtype\">void</span> * _sizes,</div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>         * _offsets,</div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span>         * _indices,</div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>         * _weights,</div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>         * _duWeights,</div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>         * _dvWeights,</div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>         * _duuWeights,</div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>         * _duvWeights,</div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>         * _dvvWeights;</div>\n-<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>    <span class=\"keywordtype\">int</span> _numStencils;</div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00094\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01185.html\">   94</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01185.html\">CudaEvaluator</a> {</div>\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span> </div>\n-<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00126\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01185.html#a68186cd64196498ff6a31e55a822f468\">  126</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01185.html#a68186cd64196498ff6a31e55a822f468\">EvalStencils</a>(</div>\n-<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n-<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">void</span> *instance = NULL,</div>\n-<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\">  131</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\">  132</span> </div>\n-<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\">  133</span>        (void)instance;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\">  134</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\">  135</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01185.html#a68186cd64196498ff6a31e55a822f468\">EvalStencils</a>(srcBuffer-&gt;BindCudaBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\">  136</span>                            dstBuffer-&gt;BindCudaBuffer(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\">  137</span>                            (<span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> *)stencilTable-&gt;GetSizesBuffer(),</div>\n-<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\">  138</span>                            (<span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> *)stencilTable-&gt;GetOffsetsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\">  139</span>                            (<span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> *)stencilTable-&gt;GetIndicesBuffer(),</div>\n-<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\">  140</span>                            (<span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> *)stencilTable-&gt;GetWeightsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\">  141</span>                            <span class=\"comment\">/*start = */</span> 0,</div>\n-<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span>                            <span class=\"comment\">/*end   = */</span> stencilTable-&gt;GetNumStencils());</div>\n-<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\">  143</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\">  144</span> </div>\n-<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01185.html#a4345e3659b7fb82f23dd51c688179ce3\">  171</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01185.html#a4345e3659b7fb82f23dd51c688179ce3\">EvalStencils</a>(</div>\n-<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\">  172</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\">  173</span>        <span class=\"keywordtype\">float</span> *dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\">  174</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * sizes,</div>\n-<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\">  175</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * offsets,</div>\n-<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\">  176</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * indices,</div>\n-<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * weights,</div>\n-<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\">  178</span>        <span class=\"keywordtype\">int</span> start, <span class=\"keywordtype\">int</span> end);</div>\n-<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\">  179</span> </div>\n-<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\">  217</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00218\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01185.html#a5d88651e38d57abedd93558865ce8f78\">  218</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01185.html#a5d88651e38d57abedd93558865ce8f78\">EvalStencils</a>(</div>\n-<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\">  219</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\">  220</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\">  221</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\">  222</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\">  223</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n-<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\">  224</span>        <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01185.html\">CudaEvaluator</a> *instance = NULL,</div>\n-<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\">  225</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\">  226</span> </div>\n-<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\">  227</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\">  228</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\">  229</span> </div>\n-<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\">  230</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01185.html#a68186cd64196498ff6a31e55a822f468\">EvalStencils</a>(srcBuffer-&gt;BindCudaBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\">  231</span>                            dstBuffer-&gt;BindCudaBuffer(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\">  232</span>                            duBuffer-&gt;BindCudaBuffer(),  duDesc,</div>\n-<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\">  233</span>                            dvBuffer-&gt;BindCudaBuffer(),  dvDesc,</div>\n-<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\">  234</span>                            (<span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> *)stencilTable-&gt;GetSizesBuffer(),</div>\n-<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\">  235</span>                            (<span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> *)stencilTable-&gt;GetOffsetsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\">  236</span>                            (<span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> *)stencilTable-&gt;GetIndicesBuffer(),</div>\n-<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\">  237</span>                            (<span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> *)stencilTable-&gt;GetWeightsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\">  238</span>                            (<span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> *)stencilTable-&gt;GetDuWeightsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\">  239</span>                            (<span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> *)stencilTable-&gt;GetDvWeightsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\">  240</span>                            <span class=\"comment\">/*start = */</span> 0,</div>\n-<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\">  241</span>                            <span class=\"comment\">/*end   = */</span> stencilTable-&gt;GetNumStencils());</div>\n-<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\">  242</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\">  243</span> </div>\n-<div class=\"line\"><a id=\"l00284\" name=\"l00284\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01185.html#a6daed6135a40cda2daf6c6ea2047b330\">  284</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01185.html#a6daed6135a40cda2daf6c6ea2047b330\">EvalStencils</a>(</div>\n-<div class=\"line\"><a id=\"l00285\" name=\"l00285\"></a><span class=\"lineno\">  285</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00286\" name=\"l00286\"></a><span class=\"lineno\">  286</span>        <span class=\"keywordtype\">float</span> *dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00287\" name=\"l00287\"></a><span class=\"lineno\">  287</span>        <span class=\"keywordtype\">float</span> *du,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00288\" name=\"l00288\"></a><span class=\"lineno\">  288</span>        <span class=\"keywordtype\">float</span> *dv,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00289\" name=\"l00289\"></a><span class=\"lineno\">  289</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * sizes,</div>\n-<div class=\"line\"><a id=\"l00290\" name=\"l00290\"></a><span class=\"lineno\">  290</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * offsets,</div>\n-<div class=\"line\"><a id=\"l00291\" name=\"l00291\"></a><span class=\"lineno\">  291</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * indices,</div>\n-<div class=\"line\"><a id=\"l00292\" name=\"l00292\"></a><span class=\"lineno\">  292</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * weights,</div>\n-<div class=\"line\"><a id=\"l00293\" name=\"l00293\"></a><span class=\"lineno\">  293</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * duWeights,</div>\n-<div class=\"line\"><a id=\"l00294\" name=\"l00294\"></a><span class=\"lineno\">  294</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * dvWeights,</div>\n-<div class=\"line\"><a id=\"l00295\" name=\"l00295\"></a><span class=\"lineno\">  295</span>        <span class=\"keywordtype\">int</span> start, <span class=\"keywordtype\">int</span> end);</div>\n-<div class=\"line\"><a id=\"l00296\" name=\"l00296\"></a><span class=\"lineno\">  296</span> </div>\n-<div class=\"line\"><a id=\"l00352\" name=\"l00352\"></a><span class=\"lineno\">  352</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00353\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00353\" name=\"l00353\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01185.html#a3f478d0122b14779fd161aa9f8076f2a\">  353</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01185.html#a3f478d0122b14779fd161aa9f8076f2a\">EvalStencils</a>(</div>\n-<div class=\"line\"><a id=\"l00354\" name=\"l00354\"></a><span class=\"lineno\">  354</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00355\" name=\"l00355\"></a><span class=\"lineno\">  355</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00356\" name=\"l00356\"></a><span class=\"lineno\">  356</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00357\" name=\"l00357\"></a><span class=\"lineno\">  357</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00358\" name=\"l00358\"></a><span class=\"lineno\">  358</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l00359\" name=\"l00359\"></a><span class=\"lineno\">  359</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l00360\" name=\"l00360\"></a><span class=\"lineno\">  360</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00361\" name=\"l00361\"></a><span class=\"lineno\">  361</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n-<div class=\"line\"><a id=\"l00362\" name=\"l00362\"></a><span class=\"lineno\">  362</span>        <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01185.html\">CudaEvaluator</a> *instance = NULL,</div>\n-<div class=\"line\"><a id=\"l00363\" name=\"l00363\"></a><span class=\"lineno\">  363</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l00364\" name=\"l00364\"></a><span class=\"lineno\">  364</span> </div>\n-<div class=\"line\"><a id=\"l00365\" name=\"l00365\"></a><span class=\"lineno\">  365</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00366\" name=\"l00366\"></a><span class=\"lineno\">  366</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00367\" name=\"l00367\"></a><span class=\"lineno\">  367</span> </div>\n-<div class=\"line\"><a id=\"l00368\" name=\"l00368\"></a><span class=\"lineno\">  368</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01185.html#a68186cd64196498ff6a31e55a822f468\">EvalStencils</a>(srcBuffer-&gt;BindCudaBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00369\" name=\"l00369\"></a><span class=\"lineno\">  369</span>                            dstBuffer-&gt;BindCudaBuffer(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00370\" name=\"l00370\"></a><span class=\"lineno\">  370</span>                            duBuffer-&gt;BindCudaBuffer(),  duDesc,</div>\n-<div class=\"line\"><a id=\"l00371\" name=\"l00371\"></a><span class=\"lineno\">  371</span>                            dvBuffer-&gt;BindCudaBuffer(),  dvDesc,</div>\n-<div class=\"line\"><a id=\"l00372\" name=\"l00372\"></a><span class=\"lineno\">  372</span>                            duuBuffer-&gt;BindCudaBuffer(), duuDesc,</div>\n-<div class=\"line\"><a id=\"l00373\" name=\"l00373\"></a><span class=\"lineno\">  373</span>                            duvBuffer-&gt;BindCudaBuffer(), duvDesc,</div>\n-<div class=\"line\"><a id=\"l00374\" name=\"l00374\"></a><span class=\"lineno\">  374</span>                            dvvBuffer-&gt;BindCudaBuffer(), dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00375\" name=\"l00375\"></a><span class=\"lineno\">  375</span>                            (<span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> *)stencilTable-&gt;GetSizesBuffer(),</div>\n-<div class=\"line\"><a id=\"l00376\" name=\"l00376\"></a><span class=\"lineno\">  376</span>                            (<span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> *)stencilTable-&gt;GetOffsetsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00377\" name=\"l00377\"></a><span class=\"lineno\">  377</span>                            (<span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> *)stencilTable-&gt;GetIndicesBuffer(),</div>\n-<div class=\"line\"><a id=\"l00378\" name=\"l00378\"></a><span class=\"lineno\">  378</span>                            (<span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> *)stencilTable-&gt;GetWeightsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00379\" name=\"l00379\"></a><span class=\"lineno\">  379</span>                            (<span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> *)stencilTable-&gt;GetDuWeightsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00380\" name=\"l00380\"></a><span class=\"lineno\">  380</span>                            (<span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> *)stencilTable-&gt;GetDvWeightsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00381\" name=\"l00381\"></a><span class=\"lineno\">  381</span>                            (<span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> *)stencilTable-&gt;GetDuuWeightsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00382\" name=\"l00382\"></a><span class=\"lineno\">  382</span>                            (<span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> *)stencilTable-&gt;GetDuvWeightsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00383\" name=\"l00383\"></a><span class=\"lineno\">  383</span>                            (<span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> *)stencilTable-&gt;GetDvvWeightsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00384\" name=\"l00384\"></a><span class=\"lineno\">  384</span>                            <span class=\"comment\">/*start = */</span> 0,</div>\n-<div class=\"line\"><a id=\"l00385\" name=\"l00385\"></a><span class=\"lineno\">  385</span>                            <span class=\"comment\">/*end   = */</span> stencilTable-&gt;GetNumStencils());</div>\n-<div class=\"line\"><a id=\"l00386\" name=\"l00386\"></a><span class=\"lineno\">  386</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00387\" name=\"l00387\"></a><span class=\"lineno\">  387</span> </div>\n-<div class=\"line\"><a id=\"l00449\" name=\"l00449\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01185.html#a76707de0a89ab94f15ad4b2c398a2c23\">  449</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01185.html#a76707de0a89ab94f15ad4b2c398a2c23\">EvalStencils</a>(</div>\n-<div class=\"line\"><a id=\"l00450\" name=\"l00450\"></a><span class=\"lineno\">  450</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00451\" name=\"l00451\"></a><span class=\"lineno\">  451</span>        <span class=\"keywordtype\">float</span> *dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00452\" name=\"l00452\"></a><span class=\"lineno\">  452</span>        <span class=\"keywordtype\">float</span> *du,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00453\" name=\"l00453\"></a><span class=\"lineno\">  453</span>        <span class=\"keywordtype\">float</span> *dv,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00454\" name=\"l00454\"></a><span class=\"lineno\">  454</span>        <span class=\"keywordtype\">float</span> *duu,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l00455\" name=\"l00455\"></a><span class=\"lineno\">  455</span>        <span class=\"keywordtype\">float</span> *duv,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l00456\" name=\"l00456\"></a><span class=\"lineno\">  456</span>        <span class=\"keywordtype\">float</span> *dvv,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00457\" name=\"l00457\"></a><span class=\"lineno\">  457</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * sizes,</div>\n-<div class=\"line\"><a id=\"l00458\" name=\"l00458\"></a><span class=\"lineno\">  458</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * offsets,</div>\n-<div class=\"line\"><a id=\"l00459\" name=\"l00459\"></a><span class=\"lineno\">  459</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * indices,</div>\n-<div class=\"line\"><a id=\"l00460\" name=\"l00460\"></a><span class=\"lineno\">  460</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * weights,</div>\n-<div class=\"line\"><a id=\"l00461\" name=\"l00461\"></a><span class=\"lineno\">  461</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * duWeights,</div>\n-<div class=\"line\"><a id=\"l00462\" name=\"l00462\"></a><span class=\"lineno\">  462</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * dvWeights,</div>\n-<div class=\"line\"><a id=\"l00463\" name=\"l00463\"></a><span class=\"lineno\">  463</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * duuWeights,</div>\n-<div class=\"line\"><a id=\"l00464\" name=\"l00464\"></a><span class=\"lineno\">  464</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * duvWeights,</div>\n-<div class=\"line\"><a id=\"l00465\" name=\"l00465\"></a><span class=\"lineno\">  465</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * dvvWeights,</div>\n-<div class=\"line\"><a id=\"l00466\" name=\"l00466\"></a><span class=\"lineno\">  466</span>        <span class=\"keywordtype\">int</span> start, <span class=\"keywordtype\">int</span> end);</div>\n-<div class=\"line\"><a id=\"l00467\" name=\"l00467\"></a><span class=\"lineno\">  467</span> </div>\n-<div class=\"line\"><a id=\"l00473\" name=\"l00473\"></a><span class=\"lineno\">  473</span> </div>\n-<div class=\"line\"><a id=\"l00502\" name=\"l00502\"></a><span class=\"lineno\">  502</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l00503\" name=\"l00503\"></a><span class=\"lineno\">  503</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00504\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00504\" name=\"l00504\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01185.html#ad3803e8121bc0491e9f97900ecd50022\">  504</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01185.html#ad3803e8121bc0491e9f97900ecd50022\">EvalPatches</a>(</div>\n-<div class=\"line\"><a id=\"l00505\" name=\"l00505\"></a><span class=\"lineno\">  505</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00506\" name=\"l00506\"></a><span class=\"lineno\">  506</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00507\" name=\"l00507\"></a><span class=\"lineno\">  507</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00508\" name=\"l00508\"></a><span class=\"lineno\">  508</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l00509\" name=\"l00509\"></a><span class=\"lineno\">  509</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l00510\" name=\"l00510\"></a><span class=\"lineno\">  510</span>        <a class=\"code hl_class\" href=\"a01185.html\">CudaEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n-<div class=\"line\"><a id=\"l00511\" name=\"l00511\"></a><span class=\"lineno\">  511</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l00512\" name=\"l00512\"></a><span class=\"lineno\">  512</span> </div>\n-<div class=\"line\"><a id=\"l00513\" name=\"l00513\"></a><span class=\"lineno\">  513</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00514\" name=\"l00514\"></a><span class=\"lineno\">  514</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00515\" name=\"l00515\"></a><span class=\"lineno\">  515</span> </div>\n-<div class=\"line\"><a id=\"l00516\" name=\"l00516\"></a><span class=\"lineno\">  516</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01185.html#ad3803e8121bc0491e9f97900ecd50022\">EvalPatches</a>(srcBuffer-&gt;BindCudaBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00517\" name=\"l00517\"></a><span class=\"lineno\">  517</span>                           dstBuffer-&gt;BindCudaBuffer(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00518\" name=\"l00518\"></a><span class=\"lineno\">  518</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00519\" name=\"l00519\"></a><span class=\"lineno\">  519</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a> *)patchCoords-&gt;BindCudaBuffer(),</div>\n-<div class=\"line\"><a id=\"l00520\" name=\"l00520\"></a><span class=\"lineno\">  520</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01325.html\">PatchArray</a> *)patchTable-&gt;GetPatchArrayBuffer(),</div>\n-<div class=\"line\"><a id=\"l00521\" name=\"l00521\"></a><span class=\"lineno\">  521</span>                           (<span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> *)patchTable-&gt;GetPatchIndexBuffer(),</div>\n-<div class=\"line\"><a id=\"l00522\" name=\"l00522\"></a><span class=\"lineno\">  522</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01329.html\">PatchParam</a> *)patchTable-&gt;GetPatchParamBuffer());</div>\n-<div class=\"line\"><a id=\"l00523\" name=\"l00523\"></a><span class=\"lineno\">  523</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00524\" name=\"l00524\"></a><span class=\"lineno\">  524</span> </div>\n-<div class=\"line\"><a id=\"l00563\" name=\"l00563\"></a><span class=\"lineno\">  563</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l00564\" name=\"l00564\"></a><span class=\"lineno\">  564</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00565\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00565\" name=\"l00565\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01185.html#aed5bc5e9191bc7fccb1bdedf835d8a35\">  565</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01185.html#aed5bc5e9191bc7fccb1bdedf835d8a35\">EvalPatches</a>(</div>\n-<div class=\"line\"><a id=\"l00566\" name=\"l00566\"></a><span class=\"lineno\">  566</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00567\" name=\"l00567\"></a><span class=\"lineno\">  567</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00568\" name=\"l00568\"></a><span class=\"lineno\">  568</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00569\" name=\"l00569\"></a><span class=\"lineno\">  569</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00570\" name=\"l00570\"></a><span class=\"lineno\">  570</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00571\" name=\"l00571\"></a><span class=\"lineno\">  571</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l00572\" name=\"l00572\"></a><span class=\"lineno\">  572</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l00573\" name=\"l00573\"></a><span class=\"lineno\">  573</span>        <a class=\"code hl_class\" href=\"a01185.html\">CudaEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n-<div class=\"line\"><a id=\"l00574\" name=\"l00574\"></a><span class=\"lineno\">  574</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l00575\" name=\"l00575\"></a><span class=\"lineno\">  575</span> </div>\n-<div class=\"line\"><a id=\"l00576\" name=\"l00576\"></a><span class=\"lineno\">  576</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00577\" name=\"l00577\"></a><span class=\"lineno\">  577</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00578\" name=\"l00578\"></a><span class=\"lineno\">  578</span> </div>\n-<div class=\"line\"><a id=\"l00579\" name=\"l00579\"></a><span class=\"lineno\">  579</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01185.html#ad3803e8121bc0491e9f97900ecd50022\">EvalPatches</a>(srcBuffer-&gt;BindCudaBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00580\" name=\"l00580\"></a><span class=\"lineno\">  580</span>                           dstBuffer-&gt;BindCudaBuffer(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00581\" name=\"l00581\"></a><span class=\"lineno\">  581</span>                           duBuffer-&gt;BindCudaBuffer(),  duDesc,</div>\n-<div class=\"line\"><a id=\"l00582\" name=\"l00582\"></a><span class=\"lineno\">  582</span>                           dvBuffer-&gt;BindCudaBuffer(),  dvDesc,</div>\n-<div class=\"line\"><a id=\"l00583\" name=\"l00583\"></a><span class=\"lineno\">  583</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00584\" name=\"l00584\"></a><span class=\"lineno\">  584</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a> *)patchCoords-&gt;BindCudaBuffer(),</div>\n-<div class=\"line\"><a id=\"l00585\" name=\"l00585\"></a><span class=\"lineno\">  585</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01325.html\">PatchArray</a> *)patchTable-&gt;GetPatchArrayBuffer(),</div>\n-<div class=\"line\"><a id=\"l00586\" name=\"l00586\"></a><span class=\"lineno\">  586</span>                           (<span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> *)patchTable-&gt;GetPatchIndexBuffer(),</div>\n-<div class=\"line\"><a id=\"l00587\" name=\"l00587\"></a><span class=\"lineno\">  587</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01329.html\">PatchParam</a> *)patchTable-&gt;GetPatchParamBuffer());</div>\n-<div class=\"line\"><a id=\"l00588\" name=\"l00588\"></a><span class=\"lineno\">  588</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00589\" name=\"l00589\"></a><span class=\"lineno\">  589</span> </div>\n-<div class=\"line\"><a id=\"l00646\" name=\"l00646\"></a><span class=\"lineno\">  646</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l00647\" name=\"l00647\"></a><span class=\"lineno\">  647</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00648\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00648\" name=\"l00648\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01185.html#a3d36fc3f9a294dfecbb09e5ba7904d12\">  648</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01185.html#a3d36fc3f9a294dfecbb09e5ba7904d12\">EvalPatches</a>(</div>\n-<div class=\"line\"><a id=\"l00649\" name=\"l00649\"></a><span class=\"lineno\">  649</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00650\" name=\"l00650\"></a><span class=\"lineno\">  650</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00651\" name=\"l00651\"></a><span class=\"lineno\">  651</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00652\" name=\"l00652\"></a><span class=\"lineno\">  652</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00653\" name=\"l00653\"></a><span class=\"lineno\">  653</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l00654\" name=\"l00654\"></a><span class=\"lineno\">  654</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l00655\" name=\"l00655\"></a><span class=\"lineno\">  655</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00656\" name=\"l00656\"></a><span class=\"lineno\">  656</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00657\" name=\"l00657\"></a><span class=\"lineno\">  657</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l00658\" name=\"l00658\"></a><span class=\"lineno\">  658</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l00659\" name=\"l00659\"></a><span class=\"lineno\">  659</span>        <a class=\"code hl_class\" href=\"a01185.html\">CudaEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n-<div class=\"line\"><a id=\"l00660\" name=\"l00660\"></a><span class=\"lineno\">  660</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l00661\" name=\"l00661\"></a><span class=\"lineno\">  661</span> </div>\n-<div class=\"line\"><a id=\"l00662\" name=\"l00662\"></a><span class=\"lineno\">  662</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00663\" name=\"l00663\"></a><span class=\"lineno\">  663</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00664\" name=\"l00664\"></a><span class=\"lineno\">  664</span> </div>\n-<div class=\"line\"><a id=\"l00665\" name=\"l00665\"></a><span class=\"lineno\">  665</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01185.html#ad3803e8121bc0491e9f97900ecd50022\">EvalPatches</a>(srcBuffer-&gt;BindCudaBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00666\" name=\"l00666\"></a><span class=\"lineno\">  666</span>                           dstBuffer-&gt;BindCudaBuffer(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00667\" name=\"l00667\"></a><span class=\"lineno\">  667</span>                           duBuffer-&gt;BindCudaBuffer(),  duDesc,</div>\n-<div class=\"line\"><a id=\"l00668\" name=\"l00668\"></a><span class=\"lineno\">  668</span>                           dvBuffer-&gt;BindCudaBuffer(),  dvDesc,</div>\n-<div class=\"line\"><a id=\"l00669\" name=\"l00669\"></a><span class=\"lineno\">  669</span>                           duuBuffer-&gt;BindCudaBuffer(), duuDesc,</div>\n-<div class=\"line\"><a id=\"l00670\" name=\"l00670\"></a><span class=\"lineno\">  670</span>                           duvBuffer-&gt;BindCudaBuffer(), duvDesc,</div>\n-<div class=\"line\"><a id=\"l00671\" name=\"l00671\"></a><span class=\"lineno\">  671</span>                           dvvBuffer-&gt;BindCudaBuffer(), dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00672\" name=\"l00672\"></a><span class=\"lineno\">  672</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00673\" name=\"l00673\"></a><span class=\"lineno\">  673</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a> *)patchCoords-&gt;BindCudaBuffer(),</div>\n-<div class=\"line\"><a id=\"l00674\" name=\"l00674\"></a><span class=\"lineno\">  674</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01325.html\">PatchArray</a> *)patchTable-&gt;GetPatchArrayBuffer(),</div>\n-<div class=\"line\"><a id=\"l00675\" name=\"l00675\"></a><span class=\"lineno\">  675</span>                           (<span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> *)patchTable-&gt;GetPatchIndexBuffer(),</div>\n-<div class=\"line\"><a id=\"l00676\" name=\"l00676\"></a><span class=\"lineno\">  676</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01329.html\">PatchParam</a> *)patchTable-&gt;GetPatchParamBuffer());</div>\n-<div class=\"line\"><a id=\"l00677\" name=\"l00677\"></a><span class=\"lineno\">  677</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00678\" name=\"l00678\"></a><span class=\"lineno\">  678</span> </div>\n-<div class=\"line\"><a id=\"l00706\" name=\"l00706\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01185.html#a0c689958ce8fdfb81c07e124d99644cb\">  706</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01185.html#a0c689958ce8fdfb81c07e124d99644cb\">EvalPatches</a>(</div>\n-<div class=\"line\"><a id=\"l00707\" name=\"l00707\"></a><span class=\"lineno\">  707</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00708\" name=\"l00708\"></a><span class=\"lineno\">  708</span>        <span class=\"keywordtype\">float</span> *dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00709\" name=\"l00709\"></a><span class=\"lineno\">  709</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00710\" name=\"l00710\"></a><span class=\"lineno\">  710</span>        <span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a> *patchCoords,</div>\n-<div class=\"line\"><a id=\"l00711\" name=\"l00711\"></a><span class=\"lineno\">  711</span>        <span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01325.html\">PatchArray</a> *patchArrays,</div>\n-<div class=\"line\"><a id=\"l00712\" name=\"l00712\"></a><span class=\"lineno\">  712</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> *patchIndices,</div>\n-<div class=\"line\"><a id=\"l00713\" name=\"l00713\"></a><span class=\"lineno\">  713</span>        <span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01329.html\">PatchParam</a> *patchParams);</div>\n-<div class=\"line\"><a id=\"l00714\" name=\"l00714\"></a><span class=\"lineno\">  714</span> </div>\n-<div class=\"line\"><a id=\"l00752\" name=\"l00752\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01185.html#a986b308c3b7cf3d5121b0e9ceed2c72d\">  752</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01185.html#a986b308c3b7cf3d5121b0e9ceed2c72d\">EvalPatches</a>(</div>\n-<div class=\"line\"><a id=\"l00753\" name=\"l00753\"></a><span class=\"lineno\">  753</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00754\" name=\"l00754\"></a><span class=\"lineno\">  754</span>        <span class=\"keywordtype\">float</span> *dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00755\" name=\"l00755\"></a><span class=\"lineno\">  755</span>        <span class=\"keywordtype\">float</span> *du,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00756\" name=\"l00756\"></a><span class=\"lineno\">  756</span>        <span class=\"keywordtype\">float</span> *dv,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00757\" name=\"l00757\"></a><span class=\"lineno\">  757</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00758\" name=\"l00758\"></a><span class=\"lineno\">  758</span>        <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a> <span class=\"keyword\">const</span> *patchCoords,</div>\n-<div class=\"line\"><a id=\"l00759\" name=\"l00759\"></a><span class=\"lineno\">  759</span>        <a class=\"code hl_struct\" href=\"a01325.html\">PatchArray</a> <span class=\"keyword\">const</span> *patchArrays,</div>\n-<div class=\"line\"><a id=\"l00760\" name=\"l00760\"></a><span class=\"lineno\">  760</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> *patchIndices,</div>\n-<div class=\"line\"><a id=\"l00761\" name=\"l00761\"></a><span class=\"lineno\">  761</span>        <a class=\"code hl_struct\" href=\"a01329.html\">PatchParam</a> <span class=\"keyword\">const</span> *patchParams);</div>\n-<div class=\"line\"><a id=\"l00762\" name=\"l00762\"></a><span class=\"lineno\">  762</span> </div>\n-<div class=\"line\"><a id=\"l00815\" name=\"l00815\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01185.html#a5e8c8e96ba584406e87a2e63aacfb382\">  815</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01185.html#a5e8c8e96ba584406e87a2e63aacfb382\">EvalPatches</a>(</div>\n-<div class=\"line\"><a id=\"l00816\" name=\"l00816\"></a><span class=\"lineno\">  816</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00817\" name=\"l00817\"></a><span class=\"lineno\">  817</span>        <span class=\"keywordtype\">float</span> *dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00818\" name=\"l00818\"></a><span class=\"lineno\">  818</span>        <span class=\"keywordtype\">float</span> *du,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00819\" name=\"l00819\"></a><span class=\"lineno\">  819</span>        <span class=\"keywordtype\">float</span> *dv,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00820\" name=\"l00820\"></a><span class=\"lineno\">  820</span>        <span class=\"keywordtype\">float</span> *duu,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l00821\" name=\"l00821\"></a><span class=\"lineno\">  821</span>        <span class=\"keywordtype\">float</span> *duv,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l00822\" name=\"l00822\"></a><span class=\"lineno\">  822</span>        <span class=\"keywordtype\">float</span> *dvv,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00823\" name=\"l00823\"></a><span class=\"lineno\">  823</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00824\" name=\"l00824\"></a><span class=\"lineno\">  824</span>        <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a> <span class=\"keyword\">const</span> *patchCoords,</div>\n-<div class=\"line\"><a id=\"l00825\" name=\"l00825\"></a><span class=\"lineno\">  825</span>        <a class=\"code hl_struct\" href=\"a01325.html\">PatchArray</a> <span class=\"keyword\">const</span> *patchArrays,</div>\n-<div class=\"line\"><a id=\"l00826\" name=\"l00826\"></a><span class=\"lineno\">  826</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> *patchIndices,</div>\n-<div class=\"line\"><a id=\"l00827\" name=\"l00827\"></a><span class=\"lineno\">  827</span>        <a class=\"code hl_struct\" href=\"a01329.html\">PatchParam</a> <span class=\"keyword\">const</span> *patchParams);</div>\n-<div class=\"line\"><a id=\"l00828\" name=\"l00828\"></a><span class=\"lineno\">  828</span> </div>\n-<div class=\"line\"><a id=\"l00857\" name=\"l00857\"></a><span class=\"lineno\">  857</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l00858\" name=\"l00858\"></a><span class=\"lineno\">  858</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00859\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00859\" name=\"l00859\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01185.html#a5711ade355506a3ff3fe3b4f5df8c2b5\">  859</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01185.html#a5711ade355506a3ff3fe3b4f5df8c2b5\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l00860\" name=\"l00860\"></a><span class=\"lineno\">  860</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00861\" name=\"l00861\"></a><span class=\"lineno\">  861</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00862\" name=\"l00862\"></a><span class=\"lineno\">  862</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00863\" name=\"l00863\"></a><span class=\"lineno\">  863</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l00864\" name=\"l00864\"></a><span class=\"lineno\">  864</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l00865\" name=\"l00865\"></a><span class=\"lineno\">  865</span>        <a class=\"code hl_class\" href=\"a01185.html\">CudaEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n-<div class=\"line\"><a id=\"l00866\" name=\"l00866\"></a><span class=\"lineno\">  866</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l00867\" name=\"l00867\"></a><span class=\"lineno\">  867</span> </div>\n-<div class=\"line\"><a id=\"l00868\" name=\"l00868\"></a><span class=\"lineno\">  868</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00869\" name=\"l00869\"></a><span class=\"lineno\">  869</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00870\" name=\"l00870\"></a><span class=\"lineno\">  870</span> </div>\n-<div class=\"line\"><a id=\"l00871\" name=\"l00871\"></a><span class=\"lineno\">  871</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01185.html#ad3803e8121bc0491e9f97900ecd50022\">EvalPatches</a>(srcBuffer-&gt;BindCudaBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00872\" name=\"l00872\"></a><span class=\"lineno\">  872</span>                           dstBuffer-&gt;BindCudaBuffer(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00873\" name=\"l00873\"></a><span class=\"lineno\">  873</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00874\" name=\"l00874\"></a><span class=\"lineno\">  874</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a> *)patchCoords-&gt;BindCudaBuffer(),</div>\n-<div class=\"line\"><a id=\"l00875\" name=\"l00875\"></a><span class=\"lineno\">  875</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01325.html\">PatchArray</a> *)patchTable-&gt;GetVaryingPatchArrayBuffer(),</div>\n-<div class=\"line\"><a id=\"l00876\" name=\"l00876\"></a><span class=\"lineno\">  876</span>                           (<span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> *)patchTable-&gt;GetVaryingPatchIndexBuffer(),</div>\n-<div class=\"line\"><a id=\"l00877\" name=\"l00877\"></a><span class=\"lineno\">  877</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01329.html\">PatchParam</a> *)patchTable-&gt;GetPatchParamBuffer());</div>\n-<div class=\"line\"><a id=\"l00878\" name=\"l00878\"></a><span class=\"lineno\">  878</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00879\" name=\"l00879\"></a><span class=\"lineno\">  879</span> </div>\n-<div class=\"line\"><a id=\"l00920\" name=\"l00920\"></a><span class=\"lineno\">  920</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l00921\" name=\"l00921\"></a><span class=\"lineno\">  921</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00922\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00922\" name=\"l00922\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01185.html#a1ce4601b04557e046242651341c39ea0\">  922</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01185.html#a1ce4601b04557e046242651341c39ea0\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l00923\" name=\"l00923\"></a><span class=\"lineno\">  923</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00924\" name=\"l00924\"></a><span class=\"lineno\">  924</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00925\" name=\"l00925\"></a><span class=\"lineno\">  925</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00926\" name=\"l00926\"></a><span class=\"lineno\">  926</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00927\" name=\"l00927\"></a><span class=\"lineno\">  927</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00928\" name=\"l00928\"></a><span class=\"lineno\">  928</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l00929\" name=\"l00929\"></a><span class=\"lineno\">  929</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l00930\" name=\"l00930\"></a><span class=\"lineno\">  930</span>        <a class=\"code hl_class\" href=\"a01185.html\">CudaEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n-<div class=\"line\"><a id=\"l00931\" name=\"l00931\"></a><span class=\"lineno\">  931</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l00932\" name=\"l00932\"></a><span class=\"lineno\">  932</span> </div>\n-<div class=\"line\"><a id=\"l00933\" name=\"l00933\"></a><span class=\"lineno\">  933</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00934\" name=\"l00934\"></a><span class=\"lineno\">  934</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00935\" name=\"l00935\"></a><span class=\"lineno\">  935</span> </div>\n-<div class=\"line\"><a id=\"l00936\" name=\"l00936\"></a><span class=\"lineno\">  936</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01185.html#ad3803e8121bc0491e9f97900ecd50022\">EvalPatches</a>(srcBuffer-&gt;BindCudaBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00937\" name=\"l00937\"></a><span class=\"lineno\">  937</span>                           dstBuffer-&gt;BindCudaBuffer(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00938\" name=\"l00938\"></a><span class=\"lineno\">  938</span>                           duBuffer-&gt;BindCudaBuffer(), duDesc,</div>\n-<div class=\"line\"><a id=\"l00939\" name=\"l00939\"></a><span class=\"lineno\">  939</span>                           dvBuffer-&gt;BindCudaBuffer(), dvDesc,</div>\n-<div class=\"line\"><a id=\"l00940\" name=\"l00940\"></a><span class=\"lineno\">  940</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00941\" name=\"l00941\"></a><span class=\"lineno\">  941</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a> *)patchCoords-&gt;BindCudaBuffer(),</div>\n-<div class=\"line\"><a id=\"l00942\" name=\"l00942\"></a><span class=\"lineno\">  942</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01325.html\">PatchArray</a> *)patchTable-&gt;GetVaryingPatchArrayBuffer(),</div>\n-<div class=\"line\"><a id=\"l00943\" name=\"l00943\"></a><span class=\"lineno\">  943</span>                           (<span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> *)patchTable-&gt;GetVaryingPatchIndexBuffer(),</div>\n-<div class=\"line\"><a id=\"l00944\" name=\"l00944\"></a><span class=\"lineno\">  944</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01329.html\">PatchParam</a> *)patchTable-&gt;GetPatchParamBuffer());</div>\n-<div class=\"line\"><a id=\"l00945\" name=\"l00945\"></a><span class=\"lineno\">  945</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00946\" name=\"l00946\"></a><span class=\"lineno\">  946</span> </div>\n-<div class=\"line\"><a id=\"l01005\" name=\"l01005\"></a><span class=\"lineno\"> 1005</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01006\" name=\"l01006\"></a><span class=\"lineno\"> 1006</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01007\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01007\" name=\"l01007\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01185.html#ad13485a6dcf9e310ac0421ef1b2ad17b\"> 1007</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01185.html#ad13485a6dcf9e310ac0421ef1b2ad17b\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01008\" name=\"l01008\"></a><span class=\"lineno\"> 1008</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01009\" name=\"l01009\"></a><span class=\"lineno\"> 1009</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01010\" name=\"l01010\"></a><span class=\"lineno\"> 1010</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l01011\" name=\"l01011\"></a><span class=\"lineno\"> 1011</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l01012\" name=\"l01012\"></a><span class=\"lineno\"> 1012</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l01013\" name=\"l01013\"></a><span class=\"lineno\"> 1013</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l01014\" name=\"l01014\"></a><span class=\"lineno\"> 1014</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l01015\" name=\"l01015\"></a><span class=\"lineno\"> 1015</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01016\" name=\"l01016\"></a><span class=\"lineno\"> 1016</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01017\" name=\"l01017\"></a><span class=\"lineno\"> 1017</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l01018\" name=\"l01018\"></a><span class=\"lineno\"> 1018</span>        <a class=\"code hl_class\" href=\"a01185.html\">CudaEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n-<div class=\"line\"><a id=\"l01019\" name=\"l01019\"></a><span class=\"lineno\"> 1019</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l01020\" name=\"l01020\"></a><span class=\"lineno\"> 1020</span> </div>\n-<div class=\"line\"><a id=\"l01021\" name=\"l01021\"></a><span class=\"lineno\"> 1021</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l01022\" name=\"l01022\"></a><span class=\"lineno\"> 1022</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l01023\" name=\"l01023\"></a><span class=\"lineno\"> 1023</span> </div>\n-<div class=\"line\"><a id=\"l01024\" name=\"l01024\"></a><span class=\"lineno\"> 1024</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01185.html#ad3803e8121bc0491e9f97900ecd50022\">EvalPatches</a>(srcBuffer-&gt;BindCudaBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01025\" name=\"l01025\"></a><span class=\"lineno\"> 1025</span>                           dstBuffer-&gt;BindCudaBuffer(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l01026\" name=\"l01026\"></a><span class=\"lineno\"> 1026</span>                           duBuffer-&gt;BindCudaBuffer(), duDesc,</div>\n-<div class=\"line\"><a id=\"l01027\" name=\"l01027\"></a><span class=\"lineno\"> 1027</span>                           dvBuffer-&gt;BindCudaBuffer(), dvDesc,</div>\n-<div class=\"line\"><a id=\"l01028\" name=\"l01028\"></a><span class=\"lineno\"> 1028</span>                           duuBuffer-&gt;BindCudaBuffer(), duuDesc,</div>\n-<div class=\"line\"><a id=\"l01029\" name=\"l01029\"></a><span class=\"lineno\"> 1029</span>                           duvBuffer-&gt;BindCudaBuffer(), duvDesc,</div>\n-<div class=\"line\"><a id=\"l01030\" name=\"l01030\"></a><span class=\"lineno\"> 1030</span>                           dvvBuffer-&gt;BindCudaBuffer(), dvvDesc,</div>\n-<div class=\"line\"><a id=\"l01031\" name=\"l01031\"></a><span class=\"lineno\"> 1031</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01032\" name=\"l01032\"></a><span class=\"lineno\"> 1032</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a> *)patchCoords-&gt;BindCudaBuffer(),</div>\n-<div class=\"line\"><a id=\"l01033\" name=\"l01033\"></a><span class=\"lineno\"> 1033</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01325.html\">PatchArray</a> *)patchTable-&gt;GetVaryingPatchArrayBuffer(),</div>\n-<div class=\"line\"><a id=\"l01034\" name=\"l01034\"></a><span class=\"lineno\"> 1034</span>                           (<span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> *)patchTable-&gt;GetVaryingPatchIndexBuffer(),</div>\n-<div class=\"line\"><a id=\"l01035\" name=\"l01035\"></a><span class=\"lineno\"> 1035</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01329.html\">PatchParam</a> *)patchTable-&gt;GetPatchParamBuffer());</div>\n-<div class=\"line\"><a id=\"l01036\" name=\"l01036\"></a><span class=\"lineno\"> 1036</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01037\" name=\"l01037\"></a><span class=\"lineno\"> 1037</span> </div>\n-<div class=\"line\"><a id=\"l01068\" name=\"l01068\"></a><span class=\"lineno\"> 1068</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01069\" name=\"l01069\"></a><span class=\"lineno\"> 1069</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01070\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01070\" name=\"l01070\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01185.html#af5d3c947db15fced476cfb40f7f12203\"> 1070</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01185.html#af5d3c947db15fced476cfb40f7f12203\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01071\" name=\"l01071\"></a><span class=\"lineno\"> 1071</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01072\" name=\"l01072\"></a><span class=\"lineno\"> 1072</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01073\" name=\"l01073\"></a><span class=\"lineno\"> 1073</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01074\" name=\"l01074\"></a><span class=\"lineno\"> 1074</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01075\" name=\"l01075\"></a><span class=\"lineno\"> 1075</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l01076\" name=\"l01076\"></a><span class=\"lineno\"> 1076</span>        <span class=\"keywordtype\">int</span> fvarChannel,</div>\n-<div class=\"line\"><a id=\"l01077\" name=\"l01077\"></a><span class=\"lineno\"> 1077</span>        <a class=\"code hl_class\" href=\"a01185.html\">CudaEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n-<div class=\"line\"><a id=\"l01078\" name=\"l01078\"></a><span class=\"lineno\"> 1078</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l01079\" name=\"l01079\"></a><span class=\"lineno\"> 1079</span> </div>\n-<div class=\"line\"><a id=\"l01080\" name=\"l01080\"></a><span class=\"lineno\"> 1080</span>        (void)instance;   <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l01081\" name=\"l01081\"></a><span class=\"lineno\"> 1081</span>        (void)deviceContext;   <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l01082\" name=\"l01082\"></a><span class=\"lineno\"> 1082</span> </div>\n-<div class=\"line\"><a id=\"l01083\" name=\"l01083\"></a><span class=\"lineno\"> 1083</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01185.html#ad3803e8121bc0491e9f97900ecd50022\">EvalPatches</a>(srcBuffer-&gt;BindCudaBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01084\" name=\"l01084\"></a><span class=\"lineno\"> 1084</span>                           dstBuffer-&gt;BindCudaBuffer(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l01085\" name=\"l01085\"></a><span class=\"lineno\"> 1085</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01086\" name=\"l01086\"></a><span class=\"lineno\"> 1086</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a> *)patchCoords-&gt;BindCudaBuffer(),</div>\n-<div class=\"line\"><a id=\"l01087\" name=\"l01087\"></a><span class=\"lineno\"> 1087</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01325.html\">PatchArray</a> *)patchTable-&gt;GetFVarPatchArrayBuffer(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l01088\" name=\"l01088\"></a><span class=\"lineno\"> 1088</span>                           (<span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> *)patchTable-&gt;GetFVarPatchIndexBuffer(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l01089\" name=\"l01089\"></a><span class=\"lineno\"> 1089</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01329.html\">PatchParam</a> *)patchTable-&gt;GetFVarPatchParamBuffer(fvarChannel));</div>\n-<div class=\"line\"><a id=\"l01090\" name=\"l01090\"></a><span class=\"lineno\"> 1090</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01091\" name=\"l01091\"></a><span class=\"lineno\"> 1091</span> </div>\n-<div class=\"line\"><a id=\"l01134\" name=\"l01134\"></a><span class=\"lineno\"> 1134</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01135\" name=\"l01135\"></a><span class=\"lineno\"> 1135</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01136\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01136\" name=\"l01136\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01185.html#a67b4efe234a614018b35d181db7855b4\"> 1136</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01185.html#a67b4efe234a614018b35d181db7855b4\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01137\" name=\"l01137\"></a><span class=\"lineno\"> 1137</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01138\" name=\"l01138\"></a><span class=\"lineno\"> 1138</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01139\" name=\"l01139\"></a><span class=\"lineno\"> 1139</span>        DST_BUFFER *duBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l01140\" name=\"l01140\"></a><span class=\"lineno\"> 1140</span>        DST_BUFFER *dvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l01141\" name=\"l01141\"></a><span class=\"lineno\"> 1141</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01142\" name=\"l01142\"></a><span class=\"lineno\"> 1142</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01143\" name=\"l01143\"></a><span class=\"lineno\"> 1143</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l01144\" name=\"l01144\"></a><span class=\"lineno\"> 1144</span>        <span class=\"keywordtype\">int</span> fvarChannel,</div>\n-<div class=\"line\"><a id=\"l01145\" name=\"l01145\"></a><span class=\"lineno\"> 1145</span>        <a class=\"code hl_class\" href=\"a01185.html\">CudaEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n-<div class=\"line\"><a id=\"l01146\" name=\"l01146\"></a><span class=\"lineno\"> 1146</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l01147\" name=\"l01147\"></a><span class=\"lineno\"> 1147</span> </div>\n-<div class=\"line\"><a id=\"l01148\" name=\"l01148\"></a><span class=\"lineno\"> 1148</span>        (void)instance;   <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l01149\" name=\"l01149\"></a><span class=\"lineno\"> 1149</span>        (void)deviceContext;   <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l01150\" name=\"l01150\"></a><span class=\"lineno\"> 1150</span> </div>\n-<div class=\"line\"><a id=\"l01151\" name=\"l01151\"></a><span class=\"lineno\"> 1151</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01185.html#ad3803e8121bc0491e9f97900ecd50022\">EvalPatches</a>(srcBuffer-&gt;BindCudaBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01152\" name=\"l01152\"></a><span class=\"lineno\"> 1152</span>                           dstBuffer-&gt;BindCudaBuffer(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l01153\" name=\"l01153\"></a><span class=\"lineno\"> 1153</span>                           duBuffer-&gt;BindCudaBuffer(), duDesc,</div>\n-<div class=\"line\"><a id=\"l01154\" name=\"l01154\"></a><span class=\"lineno\"> 1154</span>                           dvBuffer-&gt;BindCudaBuffer(), dvDesc,</div>\n-<div class=\"line\"><a id=\"l01155\" name=\"l01155\"></a><span class=\"lineno\"> 1155</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01156\" name=\"l01156\"></a><span class=\"lineno\"> 1156</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a> *)patchCoords-&gt;BindCudaBuffer(),</div>\n-<div class=\"line\"><a id=\"l01157\" name=\"l01157\"></a><span class=\"lineno\"> 1157</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01325.html\">PatchArray</a> *)patchTable-&gt;GetFVarPatchArrayBuffer(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l01158\" name=\"l01158\"></a><span class=\"lineno\"> 1158</span>                           (<span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> *)patchTable-&gt;GetFVarPatchIndexBuffer(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l01159\" name=\"l01159\"></a><span class=\"lineno\"> 1159</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01329.html\">PatchParam</a> *)patchTable-&gt;GetFVarPatchParamBuffer(fvarChannel));</div>\n-<div class=\"line\"><a id=\"l01160\" name=\"l01160\"></a><span class=\"lineno\"> 1160</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01161\" name=\"l01161\"></a><span class=\"lineno\"> 1161</span> </div>\n-<div class=\"line\"><a id=\"l01222\" name=\"l01222\"></a><span class=\"lineno\"> 1222</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01223\" name=\"l01223\"></a><span class=\"lineno\"> 1223</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01224\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01224\" name=\"l01224\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01185.html#ad845f529b06a8cc42bead41a6641dddd\"> 1224</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01185.html#ad845f529b06a8cc42bead41a6641dddd\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01225\" name=\"l01225\"></a><span class=\"lineno\"> 1225</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01226\" name=\"l01226\"></a><span class=\"lineno\"> 1226</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01227\" name=\"l01227\"></a><span class=\"lineno\"> 1227</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l01228\" name=\"l01228\"></a><span class=\"lineno\"> 1228</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l01229\" name=\"l01229\"></a><span class=\"lineno\"> 1229</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l01230\" name=\"l01230\"></a><span class=\"lineno\"> 1230</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l01231\" name=\"l01231\"></a><span class=\"lineno\"> 1231</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l01232\" name=\"l01232\"></a><span class=\"lineno\"> 1232</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01233\" name=\"l01233\"></a><span class=\"lineno\"> 1233</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01234\" name=\"l01234\"></a><span class=\"lineno\"> 1234</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l01235\" name=\"l01235\"></a><span class=\"lineno\"> 1235</span>        <span class=\"keywordtype\">int</span> fvarChannel,</div>\n-<div class=\"line\"><a id=\"l01236\" name=\"l01236\"></a><span class=\"lineno\"> 1236</span>        <a class=\"code hl_class\" href=\"a01185.html\">CudaEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n-<div class=\"line\"><a id=\"l01237\" name=\"l01237\"></a><span class=\"lineno\"> 1237</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l01238\" name=\"l01238\"></a><span class=\"lineno\"> 1238</span> </div>\n-<div class=\"line\"><a id=\"l01239\" name=\"l01239\"></a><span class=\"lineno\"> 1239</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l01240\" name=\"l01240\"></a><span class=\"lineno\"> 1240</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l01241\" name=\"l01241\"></a><span class=\"lineno\"> 1241</span> </div>\n-<div class=\"line\"><a id=\"l01242\" name=\"l01242\"></a><span class=\"lineno\"> 1242</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01185.html#ad3803e8121bc0491e9f97900ecd50022\">EvalPatches</a>(srcBuffer-&gt;BindCudaBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01243\" name=\"l01243\"></a><span class=\"lineno\"> 1243</span>                           dstBuffer-&gt;BindCudaBuffer(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l01244\" name=\"l01244\"></a><span class=\"lineno\"> 1244</span>                           duBuffer-&gt;BindCudaBuffer(), duDesc,</div>\n-<div class=\"line\"><a id=\"l01245\" name=\"l01245\"></a><span class=\"lineno\"> 1245</span>                           dvBuffer-&gt;BindCudaBuffer(), dvDesc,</div>\n-<div class=\"line\"><a id=\"l01246\" name=\"l01246\"></a><span class=\"lineno\"> 1246</span>                           duuBuffer-&gt;BindCudaBuffer(), duuDesc,</div>\n-<div class=\"line\"><a id=\"l01247\" name=\"l01247\"></a><span class=\"lineno\"> 1247</span>                           duvBuffer-&gt;BindCudaBuffer(), duvDesc,</div>\n-<div class=\"line\"><a id=\"l01248\" name=\"l01248\"></a><span class=\"lineno\"> 1248</span>                           dvvBuffer-&gt;BindCudaBuffer(), dvvDesc,</div>\n-<div class=\"line\"><a id=\"l01249\" name=\"l01249\"></a><span class=\"lineno\"> 1249</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01250\" name=\"l01250\"></a><span class=\"lineno\"> 1250</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a> *)patchCoords-&gt;BindCudaBuffer(),</div>\n-<div class=\"line\"><a id=\"l01251\" name=\"l01251\"></a><span class=\"lineno\"> 1251</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01325.html\">PatchArray</a> *)patchTable-&gt;GetFVarPatchArrayBuffer(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l01252\" name=\"l01252\"></a><span class=\"lineno\"> 1252</span>                           (<span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> *)patchTable-&gt;GetFVarPatchIndexBuffer(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l01253\" name=\"l01253\"></a><span class=\"lineno\"> 1253</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01329.html\">PatchParam</a> *)patchTable-&gt;GetFVarPatchParamBuffer(fvarChannel));</div>\n-<div class=\"line\"><a id=\"l01254\" name=\"l01254\"></a><span class=\"lineno\"> 1254</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01255\" name=\"l01255\"></a><span class=\"lineno\"> 1255</span> </div>\n-<div class=\"line\"><a id=\"l01261\" name=\"l01261\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01185.html#a9689407af718de4263562bb3a760c1dd\"> 1261</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01185.html#a9689407af718de4263562bb3a760c1dd\">Synchronize</a>(<span class=\"keywordtype\">void</span> *deviceContext = NULL);</div>\n-<div class=\"line\"><a id=\"l01262\" name=\"l01262\"></a><span class=\"lineno\"> 1262</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l01263\" name=\"l01263\"></a><span class=\"lineno\"> 1263</span> </div>\n-<div class=\"line\"><a id=\"l01264\" name=\"l01264\"></a><span class=\"lineno\"> 1264</span> </div>\n-<div class=\"line\"><a id=\"l01265\" name=\"l01265\"></a><span class=\"lineno\"> 1265</span>}  <span class=\"comment\">// end namespace Osd</span></div>\n-<div class=\"line\"><a id=\"l01266\" name=\"l01266\"></a><span class=\"lineno\"> 1266</span> </div>\n-<div class=\"line\"><a id=\"l01267\" name=\"l01267\"></a><span class=\"lineno\"> 1267</span>}  <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l01268\" name=\"l01268\"></a><span class=\"lineno\"> 1268</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l01269\" name=\"l01269\"></a><span class=\"lineno\"> 1269</span> </div>\n-<div class=\"line\"><a id=\"l01270\" name=\"l01270\"></a><span class=\"lineno\"> 1270</span>}  <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l01271\" name=\"l01271\"></a><span class=\"lineno\"> 1271</span> </div>\n-<div class=\"line\"><a id=\"l01272\" name=\"l01272\"></a><span class=\"lineno\"> 1272</span> </div>\n-<div class=\"line\"><a id=\"l01273\" name=\"l01273\"></a><span class=\"lineno\"> 1273</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_CUDA_EVALUATOR_H</span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa01065_html\"><div class=\"ttname\"><a href=\"a01065.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTable</a></div><div class=\"ttdoc\">Stencil table class wrapping the template for compatibility.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00273\">stencilTable.h:273</a></div></div>\n-<div class=\"ttc\" id=\"aa01081_html\"><div class=\"ttname\"><a href=\"a01081.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTable</a></div><div class=\"ttdoc\">Limit stencil table class wrapping the template for compatibility.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00583\">stencilTable.h:583</a></div></div>\n-<div class=\"ttc\" id=\"aa01141_html\"><div class=\"ttname\"><a href=\"a01141.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::BufferDescriptor</a></div><div class=\"ttdoc\">BufferDescriptor is a struct which describes buffer elements in interleaved data buffers....</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00866_source.html#l00061\">bufferDescriptor.h:61</a></div></div>\n-<div class=\"ttc\" id=\"aa01181_html\"><div class=\"ttname\"><a href=\"a01181.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaStencilTable</a></div><div class=\"ttdoc\">CUDA stencil table.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00839_source.html#l00052\">cudaEvaluator.h:52</a></div></div>\n-<div class=\"ttc\" id=\"aa01181_html_a0227c2f6e9e0eaa1bf104e5a6efa0830\"><div class=\"ttname\"><a href=\"a01181.html#a0227c2f6e9e0eaa1bf104e5a6efa0830\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaStencilTable::GetDuvWeightsBuffer</a></div><div class=\"ttdeci\">void * GetDuvWeightsBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00839_source.html#l00077\">cudaEvaluator.h:77</a></div></div>\n-<div class=\"ttc\" id=\"aa01181_html_a178a7d6f638161ad174b992c844004ba\"><div class=\"ttname\"><a href=\"a01181.html#a178a7d6f638161ad174b992c844004ba\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaStencilTable::~CudaStencilTable</a></div><div class=\"ttdeci\">~CudaStencilTable()</div></div>\n-<div class=\"ttc\" id=\"aa01181_html_a2b91670573e565368e68512e02d045d6\"><div class=\"ttname\"><a href=\"a01181.html#a2b91670573e565368e68512e02d045d6\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaStencilTable::GetDuWeightsBuffer</a></div><div class=\"ttdeci\">void * GetDuWeightsBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00839_source.html#l00074\">cudaEvaluator.h:74</a></div></div>\n-<div class=\"ttc\" id=\"aa01181_html_a2fd4ce98e6978f5895dd4c79ef84e4d5\"><div class=\"ttname\"><a href=\"a01181.html#a2fd4ce98e6978f5895dd4c79ef84e4d5\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaStencilTable::GetDvvWeightsBuffer</a></div><div class=\"ttdeci\">void * GetDvvWeightsBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00839_source.html#l00078\">cudaEvaluator.h:78</a></div></div>\n-<div class=\"ttc\" id=\"aa01181_html_a3822b0045b4aa89b646b145acf6dc230\"><div class=\"ttname\"><a href=\"a01181.html#a3822b0045b4aa89b646b145acf6dc230\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaStencilTable::GetOffsetsBuffer</a></div><div class=\"ttdeci\">void * GetOffsetsBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00839_source.html#l00071\">cudaEvaluator.h:71</a></div></div>\n-<div class=\"ttc\" id=\"aa01181_html_a45150c630c07bbeabd4b91145cecf087\"><div class=\"ttname\"><a href=\"a01181.html#a45150c630c07bbeabd4b91145cecf087\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaStencilTable::CudaStencilTable</a></div><div class=\"ttdeci\">CudaStencilTable(Far::LimitStencilTable const *limitStencilTable)</div></div>\n-<div class=\"ttc\" id=\"aa01181_html_a5a1c0c8eb5d41b526ec9480f03dbf4d0\"><div class=\"ttname\"><a href=\"a01181.html#a5a1c0c8eb5d41b526ec9480f03dbf4d0\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaStencilTable::GetDvWeightsBuffer</a></div><div class=\"ttdeci\">void * GetDvWeightsBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00839_source.html#l00075\">cudaEvaluator.h:75</a></div></div>\n-<div class=\"ttc\" id=\"aa01181_html_a65836d2070b943c8fecbad926d074de2\"><div class=\"ttname\"><a href=\"a01181.html#a65836d2070b943c8fecbad926d074de2\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaStencilTable::GetNumStencils</a></div><div class=\"ttdeci\">int GetNumStencils() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00839_source.html#l00079\">cudaEvaluator.h:79</a></div></div>\n-<div class=\"ttc\" id=\"aa01181_html_a6b4f42dac92785ea5a1d77a4a75fa502\"><div class=\"ttname\"><a href=\"a01181.html#a6b4f42dac92785ea5a1d77a4a75fa502\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaStencilTable::GetDuuWeightsBuffer</a></div><div class=\"ttdeci\">void * GetDuuWeightsBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00839_source.html#l00076\">cudaEvaluator.h:76</a></div></div>\n-<div class=\"ttc\" id=\"aa01181_html_aa3cd13b6b7e97cebf92d03d3208b75fa\"><div class=\"ttname\"><a href=\"a01181.html#aa3cd13b6b7e97cebf92d03d3208b75fa\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaStencilTable::GetWeightsBuffer</a></div><div class=\"ttdeci\">void * GetWeightsBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00839_source.html#l00073\">cudaEvaluator.h:73</a></div></div>\n-<div class=\"ttc\" id=\"aa01181_html_ac1bda7ee1a17bc67c977cde973c0aaad\"><div class=\"ttname\"><a href=\"a01181.html#ac1bda7ee1a17bc67c977cde973c0aaad\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaStencilTable::Create</a></div><div class=\"ttdeci\">static CudaStencilTable * Create(Far::LimitStencilTable const *limitStencilTable, void *deviceContext=NULL)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00839_source.html#l00059\">cudaEvaluator.h:59</a></div></div>\n-<div class=\"ttc\" id=\"aa01181_html_ac4528f233689c7f4ae7f3fd7b0eea484\"><div class=\"ttname\"><a href=\"a01181.html#ac4528f233689c7f4ae7f3fd7b0eea484\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaStencilTable::GetSizesBuffer</a></div><div class=\"ttdeci\">void * GetSizesBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00839_source.html#l00070\">cudaEvaluator.h:70</a></div></div>\n-<div class=\"ttc\" id=\"aa01181_html_af2f896634b0a6cc6d4efb82aafbad5a6\"><div class=\"ttname\"><a href=\"a01181.html#af2f896634b0a6cc6d4efb82aafbad5a6\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaStencilTable::GetIndicesBuffer</a></div><div class=\"ttdeci\">void * GetIndicesBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00839_source.html#l00072\">cudaEvaluator.h:72</a></div></div>\n-<div class=\"ttc\" id=\"aa01181_html_af872fc469b3696a745d30d22c2b89c4c\"><div class=\"ttname\"><a href=\"a01181.html#af872fc469b3696a745d30d22c2b89c4c\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaStencilTable::CudaStencilTable</a></div><div class=\"ttdeci\">CudaStencilTable(Far::StencilTable const *stencilTable)</div></div>\n-<div class=\"ttc\" id=\"aa01181_html_afa5ea3da09e459d3786b4249caea825d\"><div class=\"ttname\"><a href=\"a01181.html#afa5ea3da09e459d3786b4249caea825d\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaStencilTable::Create</a></div><div class=\"ttdeci\">static CudaStencilTable * Create(Far::StencilTable const *stencilTable, void *deviceContext=NULL)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00839_source.html#l00054\">cudaEvaluator.h:54</a></div></div>\n-<div class=\"ttc\" id=\"aa01185_html\"><div class=\"ttname\"><a href=\"a01185.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaEvaluator</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00839_source.html#l00094\">cudaEvaluator.h:94</a></div></div>\n-<div class=\"ttc\" id=\"aa01185_html_a0c689958ce8fdfb81c07e124d99644cb\"><div class=\"ttname\"><a href=\"a01185.html#a0c689958ce8fdfb81c07e124d99644cb\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(const float *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, int numPatchCoords, const PatchCoord *patchCoords, const PatchArray *patchArrays, const int *patchIndices, const PatchParam *patchParams)</div><div class=\"ttdoc\">Static limit eval function. It takes an array of PatchCoord and evaluate limit values on given PatchT...</div></div>\n-<div class=\"ttc\" id=\"aa01185_html_a1ce4601b04557e046242651341c39ea0\"><div class=\"ttname\"><a href=\"a01185.html#a1ce4601b04557e046242651341c39ea0\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, CudaEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00839_source.html#l00922\">cudaEvaluator.h:922</a></div></div>\n-<div class=\"ttc\" id=\"aa01185_html_a3d36fc3f9a294dfecbb09e5ba7904d12\"><div class=\"ttname\"><a href=\"a01185.html#a3d36fc3f9a294dfecbb09e5ba7904d12\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, CudaEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function with derivatives. This function has a same signature as other device kern...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00839_source.html#l00648\">cudaEvaluator.h:648</a></div></div>\n-<div class=\"ttc\" id=\"aa01185_html_a3f478d0122b14779fd161aa9f8076f2a\"><div class=\"ttname\"><a href=\"a01185.html#a3f478d0122b14779fd161aa9f8076f2a\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, STENCIL_TABLE const *stencilTable, const CudaEvaluator *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic static eval stencils function with derivatives. This function has a same signature as other d...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00839_source.html#l00353\">cudaEvaluator.h:353</a></div></div>\n-<div class=\"ttc\" id=\"aa01185_html_a4345e3659b7fb82f23dd51c688179ce3\"><div class=\"ttname\"><a href=\"a01185.html#a4345e3659b7fb82f23dd51c688179ce3\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(const float *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, const int *sizes, const int *offsets, const int *indices, const float *weights, int start, int end)</div><div class=\"ttdoc\">Static eval stencils function which takes raw cuda buffers for input and output.</div></div>\n-<div class=\"ttc\" id=\"aa01185_html_a5711ade355506a3ff3fe3b4f5df8c2b5\"><div class=\"ttname\"><a href=\"a01185.html#a5711ade355506a3ff3fe3b4f5df8c2b5\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, CudaEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00839_source.html#l00859\">cudaEvaluator.h:859</a></div></div>\n-<div class=\"ttc\" id=\"aa01185_html_a5d88651e38d57abedd93558865ce8f78\"><div class=\"ttname\"><a href=\"a01185.html#a5d88651e38d57abedd93558865ce8f78\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, STENCIL_TABLE const *stencilTable, const CudaEvaluator *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic static eval stencils function with derivatives. This function has a same signature as other d...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00839_source.html#l00218\">cudaEvaluator.h:218</a></div></div>\n-<div class=\"ttc\" id=\"aa01185_html_a5e8c8e96ba584406e87a2e63aacfb382\"><div class=\"ttname\"><a href=\"a01185.html#a5e8c8e96ba584406e87a2e63aacfb382\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(const float *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, float *du, BufferDescriptor const &amp;duDesc, float *dv, BufferDescriptor const &amp;dvDesc, float *duu, BufferDescriptor const &amp;duuDesc, float *duv, BufferDescriptor const &amp;duvDesc, float *dvv, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PatchCoord const *patchCoords, PatchArray const *patchArrays, const int *patchIndices, PatchParam const *patchParams)</div><div class=\"ttdoc\">Static limit eval function. It takes an array of PatchCoord and evaluate limit values on given PatchT...</div></div>\n-<div class=\"ttc\" id=\"aa01185_html_a67b4efe234a614018b35d181db7855b4\"><div class=\"ttname\"><a href=\"a01185.html#a67b4efe234a614018b35d181db7855b4\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel, CudaEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00839_source.html#l01136\">cudaEvaluator.h:1136</a></div></div>\n-<div class=\"ttc\" id=\"aa01185_html_a68186cd64196498ff6a31e55a822f468\"><div class=\"ttname\"><a href=\"a01185.html#a68186cd64196498ff6a31e55a822f468\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, STENCIL_TABLE const *stencilTable, const void *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic static compute function. This function has a same signature as other device kernels have so t...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00839_source.html#l00126\">cudaEvaluator.h:126</a></div></div>\n-<div class=\"ttc\" id=\"aa01185_html_a6daed6135a40cda2daf6c6ea2047b330\"><div class=\"ttname\"><a href=\"a01185.html#a6daed6135a40cda2daf6c6ea2047b330\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(const float *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, float *du, BufferDescriptor const &amp;duDesc, float *dv, BufferDescriptor const &amp;dvDesc, const int *sizes, const int *offsets, const int *indices, const float *weights, const float *duWeights, const float *dvWeights, int start, int end)</div><div class=\"ttdoc\">Static eval stencils function with derivatives, which takes raw cuda pointers for input and output.</div></div>\n-<div class=\"ttc\" id=\"aa01185_html_a76707de0a89ab94f15ad4b2c398a2c23\"><div class=\"ttname\"><a href=\"a01185.html#a76707de0a89ab94f15ad4b2c398a2c23\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(const float *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, float *du, BufferDescriptor const &amp;duDesc, float *dv, BufferDescriptor const &amp;dvDesc, float *duu, BufferDescriptor const &amp;duuDesc, float *duv, BufferDescriptor const &amp;duvDesc, float *dvv, BufferDescriptor const &amp;dvvDesc, const int *sizes, const int *offsets, const int *indices, const float *weights, const float *duWeights, const float *dvWeights, const float *duuWeights, const float *duvWeights, const float *dvvWeights, int start, int end)</div><div class=\"ttdoc\">Static eval stencils function with derivatives, which takes raw cuda pointers for input and output.</div></div>\n-<div class=\"ttc\" id=\"aa01185_html_a9689407af718de4263562bb3a760c1dd\"><div class=\"ttname\"><a href=\"a01185.html#a9689407af718de4263562bb3a760c1dd\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaEvaluator::Synchronize</a></div><div class=\"ttdeci\">static void Synchronize(void *deviceContext=NULL)</div></div>\n-<div class=\"ttc\" id=\"aa01185_html_a986b308c3b7cf3d5121b0e9ceed2c72d\"><div class=\"ttname\"><a href=\"a01185.html#a986b308c3b7cf3d5121b0e9ceed2c72d\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(const float *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, float *du, BufferDescriptor const &amp;duDesc, float *dv, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PatchCoord const *patchCoords, PatchArray const *patchArrays, const int *patchIndices, PatchParam const *patchParams)</div><div class=\"ttdoc\">Static limit eval function. It takes an array of PatchCoord and evaluate limit values on given PatchT...</div></div>\n-<div class=\"ttc\" id=\"aa01185_html_ad13485a6dcf9e310ac0421ef1b2ad17b\"><div class=\"ttname\"><a href=\"a01185.html#ad13485a6dcf9e310ac0421ef1b2ad17b\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, CudaEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00839_source.html#l01007\">cudaEvaluator.h:1007</a></div></div>\n-<div class=\"ttc\" id=\"aa01185_html_ad3803e8121bc0491e9f97900ecd50022\"><div class=\"ttname\"><a href=\"a01185.html#ad3803e8121bc0491e9f97900ecd50022\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, CudaEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00839_source.html#l00504\">cudaEvaluator.h:504</a></div></div>\n-<div class=\"ttc\" id=\"aa01185_html_ad845f529b06a8cc42bead41a6641dddd\"><div class=\"ttname\"><a href=\"a01185.html#ad845f529b06a8cc42bead41a6641dddd\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel, CudaEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00839_source.html#l01224\">cudaEvaluator.h:1224</a></div></div>\n-<div class=\"ttc\" id=\"aa01185_html_aed5bc5e9191bc7fccb1bdedf835d8a35\"><div class=\"ttname\"><a href=\"a01185.html#aed5bc5e9191bc7fccb1bdedf835d8a35\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, CudaEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function with derivatives. This function has a same signature as other device kern...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00839_source.html#l00565\">cudaEvaluator.h:565</a></div></div>\n-<div class=\"ttc\" id=\"aa01185_html_af5d3c947db15fced476cfb40f7f12203\"><div class=\"ttname\"><a href=\"a01185.html#af5d3c947db15fced476cfb40f7f12203\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel, CudaEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00839_source.html#l01070\">cudaEvaluator.h:1070</a></div></div>\n-<div class=\"ttc\" id=\"aa01321_html\"><div class=\"ttname\"><a href=\"a01321.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchCoord</a></div><div class=\"ttdoc\">Coordinates set on a patch table.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00042\">types.h:42</a></div></div>\n-<div class=\"ttc\" id=\"aa01325_html\"><div class=\"ttname\"><a href=\"a01325.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchArray</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00066\">types.h:66</a></div></div>\n-<div class=\"ttc\" id=\"aa01329_html\"><div class=\"ttname\"><a href=\"a01329.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchParam</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00127\">types.h:127</a></div></div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00908.html#a97d41b6faaf421937e6b82bd1c3067db\">   85</a></span><span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00908.html#a97d41b6faaf421937e6b82bd1c3067db\">Warning</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">char</span> *format, ...);</div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span> </div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span> </div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>} <span class=\"comment\">// end namespace</span></div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span> </div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span> </div>\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span> </div>\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// OPENSUBDIV3_FAR_ERROR_H</span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa00908_html_a25d51c3a61fb3dacded6e48d01fd2fdb\"><div class=\"ttname\"><a href=\"a00908.html#a25d51c3a61fb3dacded6e48d01fd2fdb\">OpenSubdiv::OPENSUBDIV_VERSION::Far::Error</a></div><div class=\"ttdeci\">void Error(ErrorType err, const char *format,...)</div><div class=\"ttdoc\">Sends an OSD error with a message (internal use only)</div></div>\n+<div class=\"ttc\" id=\"aa00908_html_a2bd300390ebc686e71a3690f4a0b1726\"><div class=\"ttname\"><a href=\"a00908.html#a2bd300390ebc686e71a3690f4a0b1726\">OpenSubdiv::OPENSUBDIV_VERSION::Far::WarningCallbackFunc</a></div><div class=\"ttdeci\">void(* WarningCallbackFunc)(const char *message)</div><div class=\"ttdoc\">The warning callback function type (default is &quot;printf&quot;)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00839_source.html#l00057\">error.h:57</a></div></div>\n+<div class=\"ttc\" id=\"aa00908_html_a3ba4fd4ed534a5c9c32ad01fa88bb8d9\"><div class=\"ttname\"><a href=\"a00908.html#a3ba4fd4ed534a5c9c32ad01fa88bb8d9\">OpenSubdiv::OPENSUBDIV_VERSION::Far::SetErrorCallback</a></div><div class=\"ttdeci\">void SetErrorCallback(ErrorCallbackFunc func)</div><div class=\"ttdoc\">Sets the error callback function (default is &quot;printf&quot;)</div></div>\n+<div class=\"ttc\" id=\"aa00908_html_a73bbe6b41209e4c34234f192f0193a63\"><div class=\"ttname\"><a href=\"a00908.html#a73bbe6b41209e4c34234f192f0193a63\">OpenSubdiv::OPENSUBDIV_VERSION::Far::SetWarningCallback</a></div><div class=\"ttdeci\">void SetWarningCallback(WarningCallbackFunc func)</div><div class=\"ttdoc\">Sets the warning callback function (default is &quot;printf&quot;)</div></div>\n+<div class=\"ttc\" id=\"aa00908_html_a97d41b6faaf421937e6b82bd1c3067db\"><div class=\"ttname\"><a href=\"a00908.html#a97d41b6faaf421937e6b82bd1c3067db\">OpenSubdiv::OPENSUBDIV_VERSION::Far::Warning</a></div><div class=\"ttdeci\">void Warning(const char *format,...)</div><div class=\"ttdoc\">Sends an OSD warning message (internal use only)</div></div>\n+<div class=\"ttc\" id=\"aa00908_html_aa1630f297a91dfc683dfcfddeeebb2ac\"><div class=\"ttname\"><a href=\"a00908.html#aa1630f297a91dfc683dfcfddeeebb2ac\">OpenSubdiv::OPENSUBDIV_VERSION::Far::ErrorCallbackFunc</a></div><div class=\"ttdeci\">void(* ErrorCallbackFunc)(ErrorType err, const char *message)</div><div class=\"ttdoc\">The error callback function type (default is &quot;printf&quot;)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00839_source.html#l00045\">error.h:45</a></div></div>\n+<div class=\"ttc\" id=\"aa00908_html_ab0df38968e4f03a3f1f6d6df0f31f45a\"><div class=\"ttname\"><a href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45a\">OpenSubdiv::OPENSUBDIV_VERSION::Far::ErrorType</a></div><div class=\"ttdeci\">ErrorType</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00839_source.html#l00035\">error.h:35</a></div></div>\n+<div class=\"ttc\" id=\"aa00908_html_ab0df38968e4f03a3f1f6d6df0f31f45aa2a5bda2a3e25aa282462381f55284980\"><div class=\"ttname\"><a href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45aa2a5bda2a3e25aa282462381f55284980\">OpenSubdiv::OPENSUBDIV_VERSION::Far::FAR_FATAL_ERROR</a></div><div class=\"ttdeci\">@ FAR_FATAL_ERROR</div><div class=\"ttdoc\">Issue a fatal error and end the program.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00839_source.html#l00037\">error.h:37</a></div></div>\n+<div class=\"ttc\" id=\"aa00908_html_ab0df38968e4f03a3f1f6d6df0f31f45aa3efe6cb2ec7e23769d53919dfb3291b5\"><div class=\"ttname\"><a href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45aa3efe6cb2ec7e23769d53919dfb3291b5\">OpenSubdiv::OPENSUBDIV_VERSION::Far::FAR_INTERNAL_CODING_ERROR</a></div><div class=\"ttdeci\">@ FAR_INTERNAL_CODING_ERROR</div><div class=\"ttdoc\">Issue an internal programming error, but continue execution.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00839_source.html#l00038\">error.h:38</a></div></div>\n+<div class=\"ttc\" id=\"aa00908_html_ab0df38968e4f03a3f1f6d6df0f31f45aa9b2839feb039937015e9668f601e4d32\"><div class=\"ttname\"><a href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45aa9b2839feb039937015e9668f601e4d32\">OpenSubdiv::OPENSUBDIV_VERSION::Far::FAR_CODING_ERROR</a></div><div class=\"ttdeci\">@ FAR_CODING_ERROR</div><div class=\"ttdoc\">Issue a generic programming error, but continue execution.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00839_source.html#l00039\">error.h:39</a></div></div>\n+<div class=\"ttc\" id=\"aa00908_html_ab0df38968e4f03a3f1f6d6df0f31f45aabeca977bc439b451aea1325f48a52a0b\"><div class=\"ttname\"><a href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45aabeca977bc439b451aea1325f48a52a0b\">OpenSubdiv::OPENSUBDIV_VERSION::Far::FAR_NO_ERROR</a></div><div class=\"ttdeci\">@ FAR_NO_ERROR</div><div class=\"ttdoc\">No error. Move along.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00839_source.html#l00036\">error.h:36</a></div></div>\n+<div class=\"ttc\" id=\"aa00908_html_ab0df38968e4f03a3f1f6d6df0f31f45aac565fa39d681e2766584dd87246c3bdd\"><div class=\"ttname\"><a href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45aac565fa39d681e2766584dd87246c3bdd\">OpenSubdiv::OPENSUBDIV_VERSION::Far::FAR_RUNTIME_ERROR</a></div><div class=\"ttdeci\">@ FAR_RUNTIME_ERROR</div><div class=\"ttdoc\">Issue a generic runtime error, but continue execution.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00839_source.html#l00041\">error.h:40</a></div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00839.html\">cudaEvaluator.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7f420b72a822828cfa8b0561c695a5cc.html\">far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00839.html\">error.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-cudaEvaluator.h\n+error.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2015 Pixar\n+2// Copyright 2013 Pixar\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -24,737 +24,103 @@\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n 24\n-25#ifndef OPENSUBDIV3_OSD_CUDA_EVALUATOR_H\n-26#define OPENSUBDIV3_OSD_CUDA_EVALUATOR_H\n+25#ifndef OPENSUBDIV3_FAR_ERROR_H\n+26#define OPENSUBDIV3_FAR_ERROR_H\n 27\n 28#include \"../version.h\"\n 29\n-30#include <vector>\n-31#include \"../osd/bufferDescriptor.h\"\n-32#include \"../osd/types.h\"\n-33\n-34namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-35namespace OPENSUBDIV_VERSION {\n-36\n-37namespace Far {\n-38 class PatchTable;\n-39 class StencilTable;\n-40 class LimitStencilTable;\n-41}\n+30namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+31namespace OPENSUBDIV_VERSION {\n+32\n+33namespace Far {\n+34\n+_\b3_\b5typedef enum {\n+_\b3_\b6 _\bF_\bA_\bR_\b__\bN_\bO_\b__\bE_\bR_\bR_\bO_\bR,\n+_\b3_\b7 _\bF_\bA_\bR_\b__\bF_\bA_\bT_\bA_\bL_\b__\bE_\bR_\bR_\bO_\bR,\n+_\b3_\b8 _\bF_\bA_\bR_\b__\bI_\bN_\bT_\bE_\bR_\bN_\bA_\bL_\b__\bC_\bO_\bD_\bI_\bN_\bG_\b__\bE_\bR_\bR_\bO_\bR,\n+_\b3_\b9 _\bF_\bA_\bR_\b__\bC_\bO_\bD_\bI_\bN_\bG_\b__\bE_\bR_\bR_\bO_\bR,\n+40 _\bF_\bA_\bR_\b__\bR_\bU_\bN_\bT_\bI_\bM_\bE_\b__\bE_\bR_\bR_\bO_\bR\n+_\b4_\b1} _\bE_\br_\br_\bo_\br_\bT_\by_\bp_\be;\n 42\n-43namespace Osd {\n-44\n-_\b5_\b2class _\bC_\bu_\bd_\ba_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be {\n-53public:\n-_\b5_\b4 static _\bC_\bu_\bd_\ba_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be *_\bC_\br_\be_\ba_\bt_\be(_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *stencilTable,\n-55 void *deviceContext = NULL) {\n-56 (void)deviceContext; // unused\n-57 return new _\bC_\bu_\bd_\ba_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(stencilTable);\n-58 }\n-_\b5_\b9 static _\bC_\bu_\bd_\ba_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be *_\bC_\br_\be_\ba_\bt_\be(_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const\n-*limitStencilTable,\n-60 void *deviceContext = NULL) {\n-61 (void)deviceContext; // unused\n-62 return new _\bC_\bu_\bd_\ba_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(limitStencilTable);\n-63 }\n-64\n-_\b6_\b5 explicit _\bC_\bu_\bd_\ba_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *stencilTable);\n-_\b6_\b6 explicit _\bC_\bu_\bd_\ba_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *limitStencilTable);\n-_\b6_\b7 _\b~_\bC_\bu_\bd_\ba_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be();\n-68\n-69 // interfaces needed for CudaCompute\n-_\b7_\b0 void *_\bG_\be_\bt_\bS_\bi_\bz_\be_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _sizes; }\n-_\b7_\b1 void *_\bG_\be_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _offsets; }\n-_\b7_\b2 void *_\bG_\be_\bt_\bI_\bn_\bd_\bi_\bc_\be_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _indices; }\n-_\b7_\b3 void *_\bG_\be_\bt_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _weights; }\n-_\b7_\b4 void *_\bG_\be_\bt_\bD_\bu_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _duWeights; }\n-_\b7_\b5 void *_\bG_\be_\bt_\bD_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _dvWeights; }\n-_\b7_\b6 void *_\bG_\be_\bt_\bD_\bu_\bu_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _duuWeights; }\n-_\b7_\b7 void *_\bG_\be_\bt_\bD_\bu_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _duvWeights; }\n-_\b7_\b8 void *_\bG_\be_\bt_\bD_\bv_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _dvvWeights; }\n-_\b7_\b9 int _\bG_\be_\bt_\bN_\bu_\bm_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs() const { return _numStencils; }\n+43\n+_\b4_\b5typedef void (*_\bE_\br_\br_\bo_\br_\bC_\ba_\bl_\bl_\bb_\ba_\bc_\bk_\bF_\bu_\bn_\bc)(_\bE_\br_\br_\bo_\br_\bT_\by_\bp_\be err, const char *message);\n+46\n+_\b5_\b3void _\bS_\be_\bt_\bE_\br_\br_\bo_\br_\bC_\ba_\bl_\bl_\bb_\ba_\bc_\bk(_\bE_\br_\br_\bo_\br_\bC_\ba_\bl_\bl_\bb_\ba_\bc_\bk_\bF_\bu_\bn_\bc func);\n+54\n+55\n+_\b5_\b7typedef void (*_\bW_\ba_\br_\bn_\bi_\bn_\bg_\bC_\ba_\bl_\bl_\bb_\ba_\bc_\bk_\bF_\bu_\bn_\bc)(const char *message);\n+58\n+_\b6_\b5void _\bS_\be_\bt_\bW_\ba_\br_\bn_\bi_\bn_\bg_\bC_\ba_\bl_\bl_\bb_\ba_\bc_\bk(_\bW_\ba_\br_\bn_\bi_\bn_\bg_\bC_\ba_\bl_\bl_\bb_\ba_\bc_\bk_\bF_\bu_\bn_\bc func);\n+66\n+67\n+68//\n+69// The following are intended for internal use only (and will eventually\n+70// be moved within namespace internal)\n+71//\n+72\n+_\b7_\b9void _\bE_\br_\br_\bo_\br(_\bE_\br_\br_\bo_\br_\bT_\by_\bp_\be err, const char *format, ...);\n 80\n-81private:\n-82 void * _sizes,\n-83 * _offsets,\n-84 * _indices,\n-85 * _weights,\n-86 * _duWeights,\n-87 * _dvWeights,\n-88 * _duuWeights,\n-89 * _duvWeights,\n-90 * _dvvWeights;\n-91 int _numStencils;\n-92};\n-93\n-_\b9_\b4class _\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br {\n-95public:\n-101\n-125 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n-_\b1_\b2_\b6 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n-127 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-128 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-129 STENCIL_TABLE const *stencilTable,\n-130 const void *instance = NULL,\n-131 void * deviceContext = NULL) {\n-132\n-133 (void)instance; // unused\n-134 (void)deviceContext; // unused\n-135 return _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer->BindCudaBuffer(), srcDesc,\n-136 dstBuffer->BindCudaBuffer(), dstDesc,\n-137 (int const *)stencilTable->GetSizesBuffer(),\n-138 (int const *)stencilTable->GetOffsetsBuffer(),\n-139 (int const *)stencilTable->GetIndicesBuffer(),\n-140 (float const *)stencilTable->GetWeightsBuffer(),\n-141 /*start = */ 0,\n-142 /*end = */ stencilTable->GetNumStencils());\n-143 }\n-144\n-_\b1_\b7_\b1 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n-172 const float *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-173 float *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-174 const int * sizes,\n-175 const int * offsets,\n-176 const int * indices,\n-177 const float * weights,\n-178 int start, int end);\n-179\n-217 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n-_\b2_\b1_\b8 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n-219 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-220 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-221 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-222 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-223 STENCIL_TABLE const *stencilTable,\n-224 const _\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br *instance = NULL,\n-225 void * deviceContext = NULL) {\n-226\n-227 (void)instance; // unused\n-228 (void)deviceContext; // unused\n-229\n-230 return _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer->BindCudaBuffer(), srcDesc,\n-231 dstBuffer->BindCudaBuffer(), dstDesc,\n-232 duBuffer->BindCudaBuffer(), duDesc,\n-233 dvBuffer->BindCudaBuffer(), dvDesc,\n-234 (int const *)stencilTable->GetSizesBuffer(),\n-235 (int const *)stencilTable->GetOffsetsBuffer(),\n-236 (int const *)stencilTable->GetIndicesBuffer(),\n-237 (float const *)stencilTable->GetWeightsBuffer(),\n-238 (float const *)stencilTable->GetDuWeightsBuffer(),\n-239 (float const *)stencilTable->GetDvWeightsBuffer(),\n-240 /*start = */ 0,\n-241 /*end = */ stencilTable->GetNumStencils());\n-242 }\n-243\n-_\b2_\b8_\b4 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n-285 const float *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-286 float *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-287 float *du, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-288 float *dv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-289 const int * sizes,\n-290 const int * offsets,\n-291 const int * indices,\n-292 const float * weights,\n-293 const float * duWeights,\n-294 const float * dvWeights,\n-295 int start, int end);\n-296\n-352 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n-_\b3_\b5_\b3 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n-354 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-355 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-356 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-357 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-358 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-359 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-360 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-361 STENCIL_TABLE const *stencilTable,\n-362 const _\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br *instance = NULL,\n-363 void * deviceContext = NULL) {\n-364\n-365 (void)instance; // unused\n-366 (void)deviceContext; // unused\n-367\n-368 return _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer->BindCudaBuffer(), srcDesc,\n-369 dstBuffer->BindCudaBuffer(), dstDesc,\n-370 duBuffer->BindCudaBuffer(), duDesc,\n-371 dvBuffer->BindCudaBuffer(), dvDesc,\n-372 duuBuffer->BindCudaBuffer(), duuDesc,\n-373 duvBuffer->BindCudaBuffer(), duvDesc,\n-374 dvvBuffer->BindCudaBuffer(), dvvDesc,\n-375 (int const *)stencilTable->GetSizesBuffer(),\n-376 (int const *)stencilTable->GetOffsetsBuffer(),\n-377 (int const *)stencilTable->GetIndicesBuffer(),\n-378 (float const *)stencilTable->GetWeightsBuffer(),\n-379 (float const *)stencilTable->GetDuWeightsBuffer(),\n-380 (float const *)stencilTable->GetDvWeightsBuffer(),\n-381 (float const *)stencilTable->GetDuuWeightsBuffer(),\n-382 (float const *)stencilTable->GetDuvWeightsBuffer(),\n-383 (float const *)stencilTable->GetDvvWeightsBuffer(),\n-384 /*start = */ 0,\n-385 /*end = */ stencilTable->GetNumStencils());\n-386 }\n-387\n-_\b4_\b4_\b9 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n-450 const float *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-451 float *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-452 float *du, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-453 float *dv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-454 float *duu, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-455 float *duv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-456 float *dvv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-457 const int * sizes,\n-458 const int * offsets,\n-459 const int * indices,\n-460 const float * weights,\n-461 const float * duWeights,\n-462 const float * dvWeights,\n-463 const float * duuWeights,\n-464 const float * duvWeights,\n-465 const float * dvvWeights,\n-466 int start, int end);\n-467\n-473\n-502 template <typename SRC_BUFFER, typename DST_BUFFER,\n-503 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b5_\b0_\b4 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n-505 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-506 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-507 int numPatchCoords,\n-508 PATCHCOORD_BUFFER *patchCoords,\n-509 PATCH_TABLE *patchTable,\n-510 _\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n-511 void * deviceContext = NULL) {\n-512\n-513 (void)instance; // unused\n-514 (void)deviceContext; // unused\n-515\n-516 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCudaBuffer(), srcDesc,\n-517 dstBuffer->BindCudaBuffer(), dstDesc,\n-518 numPatchCoords,\n-519 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd *)patchCoords->BindCudaBuffer(),\n-520 (const _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by *)patchTable->GetPatchArrayBuffer(),\n-521 (const int *)patchTable->GetPatchIndexBuffer(),\n-522 (const _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm *)patchTable->GetPatchParamBuffer());\n-523 }\n-524\n-563 template <typename SRC_BUFFER, typename DST_BUFFER,\n-564 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b5_\b6_\b5 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n-566 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-567 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-568 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-569 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-570 int numPatchCoords,\n-571 PATCHCOORD_BUFFER *patchCoords,\n-572 PATCH_TABLE *patchTable,\n-573 _\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n-574 void * deviceContext = NULL) {\n-575\n-576 (void)instance; // unused\n-577 (void)deviceContext; // unused\n-578\n-579 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCudaBuffer(), srcDesc,\n-580 dstBuffer->BindCudaBuffer(), dstDesc,\n-581 duBuffer->BindCudaBuffer(), duDesc,\n-582 dvBuffer->BindCudaBuffer(), dvDesc,\n-583 numPatchCoords,\n-584 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd *)patchCoords->BindCudaBuffer(),\n-585 (const _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by *)patchTable->GetPatchArrayBuffer(),\n-586 (const int *)patchTable->GetPatchIndexBuffer(),\n-587 (const _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm *)patchTable->GetPatchParamBuffer());\n-588 }\n-589\n-646 template <typename SRC_BUFFER, typename DST_BUFFER,\n-647 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b6_\b4_\b8 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n-649 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-650 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-651 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-652 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-653 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-654 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-655 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-656 int numPatchCoords,\n-657 PATCHCOORD_BUFFER *patchCoords,\n-658 PATCH_TABLE *patchTable,\n-659 _\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n-660 void * deviceContext = NULL) {\n-661\n-662 (void)instance; // unused\n-663 (void)deviceContext; // unused\n-664\n-665 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCudaBuffer(), srcDesc,\n-666 dstBuffer->BindCudaBuffer(), dstDesc,\n-667 duBuffer->BindCudaBuffer(), duDesc,\n-668 dvBuffer->BindCudaBuffer(), dvDesc,\n-669 duuBuffer->BindCudaBuffer(), duuDesc,\n-670 duvBuffer->BindCudaBuffer(), duvDesc,\n-671 dvvBuffer->BindCudaBuffer(), dvvDesc,\n-672 numPatchCoords,\n-673 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd *)patchCoords->BindCudaBuffer(),\n-674 (const _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by *)patchTable->GetPatchArrayBuffer(),\n-675 (const int *)patchTable->GetPatchIndexBuffer(),\n-676 (const _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm *)patchTable->GetPatchParamBuffer());\n-677 }\n-678\n-_\b7_\b0_\b6 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n-707 const float *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-708 float *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-709 int numPatchCoords,\n-710 const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd *patchCoords,\n-711 const _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by *patchArrays,\n-712 const int *patchIndices,\n-713 const _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm *patchParams);\n-714\n-_\b7_\b5_\b2 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n-753 const float *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-754 float *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-755 float *du, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-756 float *dv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-757 int numPatchCoords,\n-758 _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd const *patchCoords,\n-759 _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by const *patchArrays,\n-760 const int *patchIndices,\n-761 _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm const *patchParams);\n-762\n-_\b8_\b1_\b5 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n-816 const float *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-817 float *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-818 float *du, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-819 float *dv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-820 float *duu, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-821 float *duv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-822 float *dvv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-823 int numPatchCoords,\n-824 _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd const *patchCoords,\n-825 _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by const *patchArrays,\n-826 const int *patchIndices,\n-827 _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm const *patchParams);\n-828\n-857 template <typename SRC_BUFFER, typename DST_BUFFER,\n-858 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b8_\b5_\b9 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-860 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-861 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-862 int numPatchCoords,\n-863 PATCHCOORD_BUFFER *patchCoords,\n-864 PATCH_TABLE *patchTable,\n-865 _\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n-866 void * deviceContext = NULL) {\n-867\n-868 (void)instance; // unused\n-869 (void)deviceContext; // unused\n-870\n-871 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCudaBuffer(), srcDesc,\n-872 dstBuffer->BindCudaBuffer(), dstDesc,\n-873 numPatchCoords,\n-874 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd *)patchCoords->BindCudaBuffer(),\n-875 (const _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by *)patchTable->GetVaryingPatchArrayBuffer(),\n-876 (const int *)patchTable->GetVaryingPatchIndexBuffer(),\n-877 (const _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm *)patchTable->GetPatchParamBuffer());\n-878 }\n-879\n-920 template <typename SRC_BUFFER, typename DST_BUFFER,\n-921 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b9_\b2_\b2 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-923 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-924 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-925 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-926 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-927 int numPatchCoords,\n-928 PATCHCOORD_BUFFER *patchCoords,\n-929 PATCH_TABLE *patchTable,\n-930 _\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n-931 void * deviceContext = NULL) {\n-932\n-933 (void)instance; // unused\n-934 (void)deviceContext; // unused\n-935\n-936 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCudaBuffer(), srcDesc,\n-937 dstBuffer->BindCudaBuffer(), dstDesc,\n-938 duBuffer->BindCudaBuffer(), duDesc,\n-939 dvBuffer->BindCudaBuffer(), dvDesc,\n-940 numPatchCoords,\n-941 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd *)patchCoords->BindCudaBuffer(),\n-942 (const _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by *)patchTable->GetVaryingPatchArrayBuffer(),\n-943 (const int *)patchTable->GetVaryingPatchIndexBuffer(),\n-944 (const _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm *)patchTable->GetPatchParamBuffer());\n-945 }\n-946\n-1005 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1006 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b1_\b0_\b0_\b7 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1008 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1009 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1010 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-1011 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-1012 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-1013 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-1014 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-1015 int numPatchCoords,\n-1016 PATCHCOORD_BUFFER *patchCoords,\n-1017 PATCH_TABLE *patchTable,\n-1018 _\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n-1019 void * deviceContext = NULL) {\n-1020\n-1021 (void)instance; // unused\n-1022 (void)deviceContext; // unused\n-1023\n-1024 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCudaBuffer(), srcDesc,\n-1025 dstBuffer->BindCudaBuffer(), dstDesc,\n-1026 duBuffer->BindCudaBuffer(), duDesc,\n-1027 dvBuffer->BindCudaBuffer(), dvDesc,\n-1028 duuBuffer->BindCudaBuffer(), duuDesc,\n-1029 duvBuffer->BindCudaBuffer(), duvDesc,\n-1030 dvvBuffer->BindCudaBuffer(), dvvDesc,\n-1031 numPatchCoords,\n-1032 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd *)patchCoords->BindCudaBuffer(),\n-1033 (const _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by *)patchTable->GetVaryingPatchArrayBuffer(),\n-1034 (const int *)patchTable->GetVaryingPatchIndexBuffer(),\n-1035 (const _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm *)patchTable->GetPatchParamBuffer());\n-1036 }\n-1037\n-1068 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1069 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b1_\b0_\b7_\b0 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1071 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1072 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1073 int numPatchCoords,\n-1074 PATCHCOORD_BUFFER *patchCoords,\n-1075 PATCH_TABLE *patchTable,\n-1076 int fvarChannel,\n-1077 _\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n-1078 void * deviceContext = NULL) {\n-1079\n-1080 (void)instance; // unused\n-1081 (void)deviceContext; // unused\n-1082\n-1083 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCudaBuffer(), srcDesc,\n-1084 dstBuffer->BindCudaBuffer(), dstDesc,\n-1085 numPatchCoords,\n-1086 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd *)patchCoords->BindCudaBuffer(),\n-1087 (const _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by *)patchTable->GetFVarPatchArrayBuffer(fvarChannel),\n-1088 (const int *)patchTable->GetFVarPatchIndexBuffer(fvarChannel),\n-1089 (const _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm *)patchTable->GetFVarPatchParamBuffer(fvarChannel));\n-1090 }\n-1091\n-1134 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1135 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b1_\b1_\b3_\b6 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1137 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1138 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1139 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-1140 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-1141 int numPatchCoords,\n-1142 PATCHCOORD_BUFFER *patchCoords,\n-1143 PATCH_TABLE *patchTable,\n-1144 int fvarChannel,\n-1145 _\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n-1146 void * deviceContext = NULL) {\n-1147\n-1148 (void)instance; // unused\n-1149 (void)deviceContext; // unused\n-1150\n-1151 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCudaBuffer(), srcDesc,\n-1152 dstBuffer->BindCudaBuffer(), dstDesc,\n-1153 duBuffer->BindCudaBuffer(), duDesc,\n-1154 dvBuffer->BindCudaBuffer(), dvDesc,\n-1155 numPatchCoords,\n-1156 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd *)patchCoords->BindCudaBuffer(),\n-1157 (const _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by *)patchTable->GetFVarPatchArrayBuffer(fvarChannel),\n-1158 (const int *)patchTable->GetFVarPatchIndexBuffer(fvarChannel),\n-1159 (const _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm *)patchTable->GetFVarPatchParamBuffer(fvarChannel));\n-1160 }\n-1161\n-1222 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1223 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b1_\b2_\b2_\b4 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1225 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1226 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1227 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-1228 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-1229 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-1230 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-1231 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-1232 int numPatchCoords,\n-1233 PATCHCOORD_BUFFER *patchCoords,\n-1234 PATCH_TABLE *patchTable,\n-1235 int fvarChannel,\n-1236 _\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n-1237 void * deviceContext = NULL) {\n-1238\n-1239 (void)instance; // unused\n-1240 (void)deviceContext; // unused\n-1241\n-1242 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCudaBuffer(), srcDesc,\n-1243 dstBuffer->BindCudaBuffer(), dstDesc,\n-1244 duBuffer->BindCudaBuffer(), duDesc,\n-1245 dvBuffer->BindCudaBuffer(), dvDesc,\n-1246 duuBuffer->BindCudaBuffer(), duuDesc,\n-1247 duvBuffer->BindCudaBuffer(), duvDesc,\n-1248 dvvBuffer->BindCudaBuffer(), dvvDesc,\n-1249 numPatchCoords,\n-1250 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd *)patchCoords->BindCudaBuffer(),\n-1251 (const _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by *)patchTable->GetFVarPatchArrayBuffer(fvarChannel),\n-1252 (const int *)patchTable->GetFVarPatchIndexBuffer(fvarChannel),\n-1253 (const _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm *)patchTable->GetFVarPatchParamBuffer(fvarChannel));\n-1254 }\n-1255\n-_\b1_\b2_\b6_\b1 static void _\bS_\by_\bn_\bc_\bh_\br_\bo_\bn_\bi_\bz_\be(void *deviceContext = NULL);\n-1262};\n-1263\n-1264\n-1265} // end namespace Osd\n-1266\n-1267} // end namespace OPENSUBDIV_VERSION\n-1268using namespace OPENSUBDIV_VERSION;\n-1269\n-1270} // end namespace OpenSubdiv\n-1271\n-1272\n-1273#endif // OPENSUBDIV3_OSD_CUDA_EVALUATOR_H\n+_\b8_\b5void _\bW_\ba_\br_\bn_\bi_\bn_\bg(const char *format, ...);\n+86\n+87\n+88} // end namespace\n+89\n+90} // end namespace OPENSUBDIV_VERSION\n+91using namespace OPENSUBDIV_VERSION;\n+92\n+93} // end namespace OpenSubdiv\n+94\n+95#endif // OPENSUBDIV3_FAR_ERROR_H\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n-Stencil table class wrapping the template for compatibility.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b2_\b7_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n-Limit stencil table class wrapping the template for compatibility.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b8_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n-BufferDescriptor is a struct which describes buffer elements in interleaved\n-data buffers....\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b6_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n-CUDA stencil table.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b5_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bD_\bu_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br\n-void * GetDuvWeightsBuffer() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b~_\bC_\bu_\bd_\ba_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n-~CudaStencilTable()\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bD_\bu_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br\n-void * GetDuWeightsBuffer() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bD_\bv_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br\n-void * GetDvvWeightsBuffer() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br\n-void * GetOffsetsBuffer() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\bu_\bd_\ba_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n-CudaStencilTable(Far::LimitStencilTable const *limitStencilTable)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bD_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br\n-void * GetDvWeightsBuffer() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-int GetNumStencils() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bD_\bu_\bu_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br\n-void * GetDuuWeightsBuffer() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br\n-void * GetWeightsBuffer() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static CudaStencilTable * Create(Far::LimitStencilTable const\n-*limitStencilTable, void *deviceContext=NULL)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b5_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bS_\bi_\bz_\be_\bs_\bB_\bu_\bf_\bf_\be_\br\n-void * GetSizesBuffer() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bI_\bn_\bd_\bi_\bc_\be_\bs_\bB_\bu_\bf_\bf_\be_\br\n-void * GetIndicesBuffer() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\bu_\bd_\ba_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n-CudaStencilTable(Far::StencilTable const *stencilTable)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static CudaStencilTable * Create(Far::StencilTable const *stencilTable, void\n-*deviceContext=NULL)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b5_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b9_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-static bool EvalPatches(const float *src, BufferDescriptor const &srcDesc,\n-float *dst, BufferDescriptor const &dstDesc, int numPatchCoords, const\n-PatchCoord *patchCoords, const PatchArray *patchArrays, const int\n-*patchIndices, const PatchParam *patchParams)\n-Static limit eval function. It takes an array of PatchCoord and evaluate limit\n-values on given PatchT...\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n-static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n-*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n-BufferDescriptor const &dvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n-*patchCoords, PATCH_TABLE *patchTable, CudaEvaluator const *instance, void\n-*deviceContext=NULL)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b9_\b2_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n-BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n-&dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER\n-*duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer,\n-BufferDescriptor const &dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n-*patchCoords, PATCH_TABLE *patchTable, CudaEvaluator const *instance, void\n-*deviceContext=NULL)\n-Generic limit eval function with derivatives. This function has a same\n-signature as other device kern...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b6_\b4_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n-*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n-BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const\n-&duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER\n-*dvvBuffer, BufferDescriptor const &dvvDesc, STENCIL_TABLE const *stencilTable,\n-const CudaEvaluator *instance=NULL, void *deviceContext=NULL)\n-Generic static eval stencils function with derivatives. This function has a\n-same signature as other d...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b3_\b5_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-static bool EvalStencils(const float *src, BufferDescriptor const &srcDesc,\n-float *dst, BufferDescriptor const &dstDesc, const int *sizes, const int\n-*offsets, const int *indices, const float *weights, int start, int end)\n-Static eval stencils function which takes raw cuda buffers for input and\n-output.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n-static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int\n-numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable,\n-CudaEvaluator const *instance, void *deviceContext=NULL)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b8_\b5_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n-*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n-BufferDescriptor const &dvDesc, STENCIL_TABLE const *stencilTable, const\n-CudaEvaluator *instance=NULL, void *deviceContext=NULL)\n-Generic static eval stencils function with derivatives. This function has a\n-same signature as other d...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b2_\b1_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-static bool EvalPatches(const float *src, BufferDescriptor const &srcDesc,\n-float *dst, BufferDescriptor const &dstDesc, float *du, BufferDescriptor const\n-&duDesc, float *dv, BufferDescriptor const &dvDesc, float *duu,\n-BufferDescriptor const &duuDesc, float *duv, BufferDescriptor const &duvDesc,\n-float *dvv, BufferDescriptor const &dvvDesc, int numPatchCoords, PatchCoord\n-const *patchCoords, PatchArray const *patchArrays, const int *patchIndices,\n-PatchParam const *patchParams)\n-Static limit eval function. It takes an array of PatchCoord and evaluate limit\n-values on given PatchT...\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n-static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor\n-const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,\n-DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n-BufferDescriptor const &dvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n-*patchCoords, PATCH_TABLE *patchTable, int fvarChannel, CudaEvaluator const\n-*instance, void *deviceContext=NULL)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b1_\b3_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, STENCIL_TABLE\n-const *stencilTable, const void *instance=NULL, void *deviceContext=NULL)\n-Generic static compute function. This function has a same signature as other\n-device kernels have so t...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b2_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-static bool EvalStencils(const float *src, BufferDescriptor const &srcDesc,\n-float *dst, BufferDescriptor const &dstDesc, float *du, BufferDescriptor const\n-&duDesc, float *dv, BufferDescriptor const &dvDesc, const int *sizes, const int\n-*offsets, const int *indices, const float *weights, const float *duWeights,\n-const float *dvWeights, int start, int end)\n-Static eval stencils function with derivatives, which takes raw cuda pointers\n-for input and output.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-static bool EvalStencils(const float *src, BufferDescriptor const &srcDesc,\n-float *dst, BufferDescriptor const &dstDesc, float *du, BufferDescriptor const\n-&duDesc, float *dv, BufferDescriptor const &dvDesc, float *duu,\n-BufferDescriptor const &duuDesc, float *duv, BufferDescriptor const &duvDesc,\n-float *dvv, BufferDescriptor const &dvvDesc, const int *sizes, const int\n-*offsets, const int *indices, const float *weights, const float *duWeights,\n-const float *dvWeights, const float *duuWeights, const float *duvWeights, const\n-float *dvvWeights, int start, int end)\n-Static eval stencils function with derivatives, which takes raw cuda pointers\n-for input and output.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bS_\by_\bn_\bc_\bh_\br_\bo_\bn_\bi_\bz_\be\n-static void Synchronize(void *deviceContext=NULL)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-static bool EvalPatches(const float *src, BufferDescriptor const &srcDesc,\n-float *dst, BufferDescriptor const &dstDesc, float *du, BufferDescriptor const\n-&duDesc, float *dv, BufferDescriptor const &dvDesc, int numPatchCoords,\n-PatchCoord const *patchCoords, PatchArray const *patchArrays, const int\n-*patchIndices, PatchParam const *patchParams)\n-Static limit eval function. It takes an array of PatchCoord and evaluate limit\n-values on given PatchT...\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n-static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n-*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n-BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const\n-&duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER\n-*dvvBuffer, BufferDescriptor const &dvvDesc, int numPatchCoords,\n-PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, CudaEvaluator const\n-*instance, void *deviceContext=NULL)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b0_\b0_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords,\n-PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, CudaEvaluator const\n-*instance, void *deviceContext=NULL)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b5_\b0_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n-static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor\n-const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,\n-DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n-BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const\n-&duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER\n-*dvvBuffer, BufferDescriptor const &dvvDesc, int numPatchCoords,\n-PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel,\n-CudaEvaluator const *instance, void *deviceContext=NULL)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b2_\b2_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n-BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n-&dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE\n-*patchTable, CudaEvaluator const *instance, void *deviceContext=NULL)\n-Generic limit eval function with derivatives. This function has a same\n-signature as other device kern...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b5_\b6_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n-static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor\n-const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int\n-numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int\n-fvarChannel, CudaEvaluator const *instance, void *deviceContext=NULL)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b0_\b7_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd\n-Coordinates set on a patch table.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b4_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b6_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b1_\b2_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bE_\br_\br_\bo_\br\n+void Error(ErrorType err, const char *format,...)\n+Sends an OSD error with a message (internal use only)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bW_\ba_\br_\bn_\bi_\bn_\bg_\bC_\ba_\bl_\bl_\bb_\ba_\bc_\bk_\bF_\bu_\bn_\bc\n+void(* WarningCallbackFunc)(const char *message)\n+The warning callback function type (default is \"printf\")\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\be_\br_\br_\bo_\br_\b._\bh_\b:_\b5_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\be_\bt_\bE_\br_\br_\bo_\br_\bC_\ba_\bl_\bl_\bb_\ba_\bc_\bk\n+void SetErrorCallback(ErrorCallbackFunc func)\n+Sets the error callback function (default is \"printf\")\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\be_\bt_\bW_\ba_\br_\bn_\bi_\bn_\bg_\bC_\ba_\bl_\bl_\bb_\ba_\bc_\bk\n+void SetWarningCallback(WarningCallbackFunc func)\n+Sets the warning callback function (default is \"printf\")\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bW_\ba_\br_\bn_\bi_\bn_\bg\n+void Warning(const char *format,...)\n+Sends an OSD warning message (internal use only)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bE_\br_\br_\bo_\br_\bC_\ba_\bl_\bl_\bb_\ba_\bc_\bk_\bF_\bu_\bn_\bc\n+void(* ErrorCallbackFunc)(ErrorType err, const char *message)\n+The error callback function type (default is \"printf\")\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\be_\br_\br_\bo_\br_\b._\bh_\b:_\b4_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bE_\br_\br_\bo_\br_\bT_\by_\bp_\be\n+ErrorType\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\be_\br_\br_\bo_\br_\b._\bh_\b:_\b3_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bF_\bA_\bR_\b__\bF_\bA_\bT_\bA_\bL_\b__\bE_\bR_\bR_\bO_\bR\n+@ FAR_FATAL_ERROR\n+Issue a fatal error and end the program.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\be_\br_\br_\bo_\br_\b._\bh_\b:_\b3_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bF_\bA_\bR_\b__\bI_\bN_\bT_\bE_\bR_\bN_\bA_\bL_\b__\bC_\bO_\bD_\bI_\bN_\bG_\b__\bE_\bR_\bR_\bO_\bR\n+@ FAR_INTERNAL_CODING_ERROR\n+Issue an internal programming error, but continue execution.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\be_\br_\br_\bo_\br_\b._\bh_\b:_\b3_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bF_\bA_\bR_\b__\bC_\bO_\bD_\bI_\bN_\bG_\b__\bE_\bR_\bR_\bO_\bR\n+@ FAR_CODING_ERROR\n+Issue a generic programming error, but continue execution.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\be_\br_\br_\bo_\br_\b._\bh_\b:_\b3_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bF_\bA_\bR_\b__\bN_\bO_\b__\bE_\bR_\bR_\bO_\bR\n+@ FAR_NO_ERROR\n+No error. Move along.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\be_\br_\br_\bo_\br_\b._\bh_\b:_\b3_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bF_\bA_\bR_\b__\bR_\bU_\bN_\bT_\bI_\bM_\bE_\b__\bE_\bR_\bR_\bO_\bR\n+@ FAR_RUNTIME_ERROR\n+Issue a generic runtime error, but continue execution.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\be_\br_\br_\bo_\br_\b._\bh_\b:_\b4_\b0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bc_\bu_\bd_\ba_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh\n+    * _\bf_\ba_\br\n+    * _\be_\br_\br_\bo_\br_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00842.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00842.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/opengl.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/far/patchTable.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -87,24 +87,51 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">opengl.h File Reference</div></div>\n+  <div class=\"summary\">\n+<a href=\"#nested-classes\">Classes</a> &#124;\n+<a href=\"#namespaces\">Namespaces</a>  </div>\n+  <div class=\"headertitle\"><div class=\"title\">patchTable.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n-<div class=\"textblock\"><code>#include &lt;GL/gl.h&gt;</code><br />\n+<div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00857_source.html\">../far/patchDescriptor.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00836_source.html\">../far/patchParam.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00818_source.html\">../far/stencilTable.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00860_source.html\">../sdc/options.h</a>&quot;</code><br />\n+<code>#include &lt;vector&gt;</code><br />\n </div>\n <p><a href=\"a00842_source.html\">Go to the source code of this file.</a></p>\n+<table class=\"memberdecls\">\n+<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n+Classes</h2></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00993.html\">PatchTable</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Container for arrays of parametric patches.  <a href=\"a00993.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00997.html\">PatchTable::PatchHandle</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Handle that can be used as unique patch identifier within <a class=\"el\" href=\"a00993.html\" title=\"Container for arrays of parametric patches.\">PatchTable</a>.  <a href=\"a00997.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+</table><table class=\"memberdecls\">\n+<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n+Namespaces</h2></td></tr>\n+<tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far</a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+</table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00842.html\">opengl.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7f420b72a822828cfa8b0561c695a5cc.html\">far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00842.html\">patchTable.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,11 +1,32 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-opengl.h File Reference\n-#include <GL/gl.h>\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+patchTable.h File Reference\n+#include \"../version.h\"\n+#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh\"\n+#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b._\bh\"\n+#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh\"\n+#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh\"\n+#include <vector>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n+C\bCl\bla\bas\bss\bse\bes\bs\n+class \u00a0 _\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+\u00a0       Container for arrays of parametric patches. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be\n+\u00a0       Handle that can be used as unique patch identifier within _\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be.\n+        _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n+\u00a0\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n+\u00a0\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br\n+\u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bo_\bp_\be_\bn_\bg_\bl_\b._\bh\n+    * _\bf_\ba_\br\n+    * _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00842_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00842_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/opengl.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/far/patchTable.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,15 +92,15 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">opengl.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">patchTable.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00842.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2013 Pixar</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n@@ -119,47 +119,798 @@\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_OPENGL_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_OPENGL_H</span></div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_FAR_PATCH_TABLE_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_FAR_PATCH_TABLE_H</span></div>\n <div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n-<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#if defined(__APPLE__)</span></div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">    #include &quot;TargetConditionals.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">    #if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">        #include &lt;OpenGLES/ES2/gl.h&gt;</span></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">    #else</span></div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"preprocessor\">        #if defined(OSD_USES_GLEW)</span></div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"preprocessor\">            #include &lt;GL/glew.h&gt;</span></div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"preprocessor\">        #else</span></div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"preprocessor\">            #include &lt;OpenGL/gl3.h&gt;</span></div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"preprocessor\">        #endif</span></div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"preprocessor\">    #endif</span></div>\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span><span class=\"preprocessor\">#elif defined(ANDROID)</span></div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"preprocessor\">    #include &lt;GLES2/gl2.h&gt;</span></div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"preprocessor\">#else</span></div>\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span><span class=\"preprocessor\">    #if defined(_WIN32)</span></div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"preprocessor\">        #define WIN32_LEAN_AND_MEAN</span></div>\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span><span class=\"preprocessor\">        #include &lt;windows.h&gt;</span></div>\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span><span class=\"preprocessor\">    #endif</span></div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span><span class=\"preprocessor\">    #if defined(OSD_USES_GLEW)</span></div>\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span><span class=\"preprocessor\">        #include &lt;GL/glew.h&gt;</span></div>\n-<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span><span class=\"preprocessor\">    #else</span></div>\n-<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span><span class=\"preprocessor\">        #include &lt;GL/gl.h&gt;</span></div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span><span class=\"preprocessor\">    #endif</span></div>\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span><span class=\"preprocessor\">#endif</span></div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span> </div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_OPENGL_H</span></div>\n+<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../far/patchDescriptor.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../far/patchParam.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &quot;../far/stencilTable.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"preprocessor\">#include &quot;../sdc/options.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span> </div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span> </div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span> </div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"keyword\">namespace </span>Far {</div>\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00055\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html\">   55</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a00993.html\">PatchTable</a> {</div>\n+<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span> </div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00060\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00997.html\">   60</a></span>    <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a00997.html\">PatchHandle</a> {</div>\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span>    <span class=\"comment\">// XXXX manuelk members will eventually be made private</span></div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span>    <span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span> </div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00997.html#ad4867d502f9704b7e45a7974e8918dc3\">   64</a></span>        <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a00993.html\">PatchTable</a>;</div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00997.html#aff380d8d7f072959898c0a4e25150d2a\">   65</a></span>        <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a00977.html\">PatchMap</a>;</div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span> </div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00997.html#a4430ecde7e1d784b2bef6dc4c2ff04c2\">   67</a></span>        <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> <a class=\"code hl_variable\" href=\"a00997.html#a4430ecde7e1d784b2bef6dc4c2ff04c2\">arrayIndex</a>, <span class=\"comment\">// Array index of the patch</span></div>\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00997.html#a31bdf15525ab73560c2b725ff7f8ae3a\">   68</a></span>              <a class=\"code hl_variable\" href=\"a00997.html#a31bdf15525ab73560c2b725ff7f8ae3a\">patchIndex</a>, <span class=\"comment\">// Absolute Index of the patch</span></div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00997.html#a46d1a8129375c3ee40a33a81d44b685a\">   69</a></span>              <a class=\"code hl_variable\" href=\"a00997.html#a46d1a8129375c3ee40a33a81d44b685a\">vertIndex</a>;  <span class=\"comment\">// Relative offset to the first CV of the patch in array</span></div>\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span>    };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span> </div>\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span> </div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a3419c5d57330d6787f8c14a7677b8d9b\">   75</a></span>    <a class=\"code hl_function\" href=\"a00993.html#a3419c5d57330d6787f8c14a7677b8d9b\">PatchTable</a>(<a class=\"code hl_class\" href=\"a00993.html\">PatchTable</a> <span class=\"keyword\">const</span> &amp; src);</div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span> </div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a5cbd789bd429e35377db5f4c97701874\">   78</a></span>    <a class=\"code hl_function\" href=\"a00993.html#a5cbd789bd429e35377db5f4c97701874\">~PatchTable</a>();</div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span> </div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a11c0f8be31c18b856cf9cdea511e54de\">   81</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00993.html#a11c0f8be31c18b856cf9cdea511e54de\">IsFeatureAdaptive</a>() <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00084\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#aa7d301570e6f7b39e1eaa546e2937018\">   84</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00993.html#aa7d301570e6f7b39e1eaa546e2937018\">GetNumControlVerticesTotal</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>        <span class=\"keywordflow\">return</span> (<span class=\"keywordtype\">int</span>)_patchVerts.size();</div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span> </div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#ac39a9665667b0a4fcc7ed028b7faaa47\">   89</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00993.html#ac39a9665667b0a4fcc7ed028b7faaa47\">GetNumPatchesTotal</a>() <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span> </div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a14bf987459715b918b370247bb24a61c\">   92</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00993.html#a14bf987459715b918b370247bb24a61c\">GetMaxValence</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _maxValence; }</div>\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span> </div>\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#ab45dd46b44737845ca57f634f11f1bbc\">   95</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00993.html#ab45dd46b44737845ca57f634f11f1bbc\">GetNumPtexFaces</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _numPtexFaces; }</div>\n+<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span> </div>\n+<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span> </div>\n+<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span> </div>\n+<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span> </div>\n+<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a9373bf15eaee019dd08099d05515e080\">  107</a></span>    <a class=\"code hl_class\" href=\"a00973.html\">PatchDescriptor</a> <a class=\"code hl_function\" href=\"a00993.html#a9373bf15eaee019dd08099d05515e080\">GetPatchDescriptor</a>(<a class=\"code hl_class\" href=\"a00997.html\">PatchHandle</a> <span class=\"keyword\">const</span> &amp; handle) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span> </div>\n+<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a37804f17e707ef64a7f165d15b6cf013\">  110</a></span>    <a class=\"code hl_class\" href=\"a01353.html\">ConstIndexArray</a> <a class=\"code hl_function\" href=\"a00993.html#a37804f17e707ef64a7f165d15b6cf013\">GetPatchVertices</a>(<a class=\"code hl_class\" href=\"a00997.html\">PatchHandle</a> <span class=\"keyword\">const</span> &amp; handle) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span> </div>\n+<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#ac44a6262548ebebae9bbc5b5f3c43e3a\">  113</a></span>    <a class=\"code hl_struct\" href=\"a00989.html\">PatchParam</a> <a class=\"code hl_function\" href=\"a00993.html#ac44a6262548ebebae9bbc5b5f3c43e3a\">GetPatchParam</a>(<a class=\"code hl_class\" href=\"a00997.html\">PatchHandle</a> <span class=\"keyword\">const</span> &amp; handle) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span> </div>\n+<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#ad897fbe60d2921cfbf5e1bed8760d49f\">  116</a></span>    <a class=\"code hl_class\" href=\"a01353.html\">ConstIndexArray</a> <a class=\"code hl_function\" href=\"a00993.html#ad897fbe60d2921cfbf5e1bed8760d49f\">GetPatchVertices</a>(<span class=\"keywordtype\">int</span> array, <span class=\"keywordtype\">int</span> patch) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span> </div>\n+<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a8c1242bf6bffa416c2e172a02f3ee31c\">  119</a></span>    <a class=\"code hl_struct\" href=\"a00989.html\">PatchParam</a> <a class=\"code hl_function\" href=\"a00993.html#a8c1242bf6bffa416c2e172a02f3ee31c\">GetPatchParam</a>(<span class=\"keywordtype\">int</span> array, <span class=\"keywordtype\">int</span> patch) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\">  121</span> </div>\n+<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span> </div>\n+<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span> </div>\n+<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span> </div>\n+<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a3432d7022e415ef661ccd6726ed3743f\">  132</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00993.html#a3432d7022e415ef661ccd6726ed3743f\">GetNumPatchArrays</a>() <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\">  133</span> </div>\n+<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a9d7d8d4411b09211fbf901cb7564df4c\">  135</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00993.html#a9d7d8d4411b09211fbf901cb7564df4c\">GetNumPatches</a>(<span class=\"keywordtype\">int</span> array) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\">  136</span> </div>\n+<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a5b32465be706d80f4fac5ea05e3e0ded\">  138</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00993.html#a5b32465be706d80f4fac5ea05e3e0ded\">GetNumControlVertices</a>(<span class=\"keywordtype\">int</span> array) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\">  139</span> </div>\n+<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#ad2744ba943362370738d6bd8448cd779\">  141</a></span>    <a class=\"code hl_class\" href=\"a00973.html\">PatchDescriptor</a> <a class=\"code hl_function\" href=\"a00993.html#ad2744ba943362370738d6bd8448cd779\">GetPatchArrayDescriptor</a>(<span class=\"keywordtype\">int</span> array) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span> </div>\n+<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#ab3133704d2b372da1204e6650d4800ee\">  144</a></span>    <a class=\"code hl_class\" href=\"a01353.html\">ConstIndexArray</a> <a class=\"code hl_function\" href=\"a00993.html#ab3133704d2b372da1204e6650d4800ee\">GetPatchArrayVertices</a>(<span class=\"keywordtype\">int</span> array) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\">  145</span> </div>\n+<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#aa3dd3f4235b25b5feca23351835207b5\">  147</a></span>    <a class=\"code hl_class\" href=\"a01353.html\">ConstPatchParamArray</a> <span class=\"keyword\">const</span> <a class=\"code hl_function\" href=\"a00993.html#aa3dd3f4235b25b5feca23351835207b5\">GetPatchParams</a>(<span class=\"keywordtype\">int</span> array) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\">  149</span> </div>\n+<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\">  150</span> </div>\n+<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\">  152</span> </div>\n+<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\">  159</span> </div>\n+<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#ab15bba670f52d55d19967104b95b9024\">  161</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00993.html#ab15bba670f52d55d19967104b95b9024\">GetNumLocalPoints</a>() <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\">  162</span> </div>\n+<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\">  164</span>    <a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const</span> *<a class=\"code hl_function\" href=\"a00993.html#a1d27edb01bfb68ba50776b25aa437783\">GetLocalPointStencilTable</a>() <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\">  165</span> </div>\n+<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\">  167</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a1c85ed58e2e3362dd22fbdb815f2c5a3\">  168</a></span>    <a class=\"code hl_class\" href=\"a01061.html\">StencilTableReal&lt;REAL&gt;</a> <span class=\"keyword\">const</span> *<a class=\"code hl_function\" href=\"a00993.html#a1c85ed58e2e3362dd22fbdb815f2c5a3\">GetLocalPointStencilTable</a>() <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\">  169</span> </div>\n+<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#ae7d9c513e950df25aebfeed309666764\">  172</a></span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt; <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00993.html#ae7d9c513e950df25aebfeed309666764\">LocalPointStencilPrecisionMatchesType</a>() <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\">  173</span> </div>\n+<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\">  186</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T&gt; <span class=\"keywordtype\">void</span></div>\n+<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\">  187</span>    <a class=\"code hl_function\" href=\"a00993.html#a7dcb88c32ded6c233f129d7b6fb7a159\">ComputeLocalPointValues</a>(T <span class=\"keyword\">const</span> *src, T *dst) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\">  188</span> </div>\n+<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\">  189</span> </div>\n+<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#adf2a870e7fccf780894d17160b7967f0\">  191</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00993.html#adf2a870e7fccf780894d17160b7967f0\">GetNumLocalPointsVarying</a>() <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\">  192</span> </div>\n+<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\">  194</span>    <a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const</span> *<a class=\"code hl_function\" href=\"a00993.html#ad6bafe91da1dcf5b8fb1f7c8cb4ed619\">GetLocalPointVaryingStencilTable</a>() <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\">  195</span> </div>\n+<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\">  197</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#af903f44e0f0743652b5f465ff60492a2\">  198</a></span>    <a class=\"code hl_class\" href=\"a01061.html\">StencilTableReal&lt;REAL&gt;</a> <span class=\"keyword\">const</span> *<a class=\"code hl_function\" href=\"a00993.html#af903f44e0f0743652b5f465ff60492a2\">GetLocalPointVaryingStencilTable</a>() <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\">  199</span> </div>\n+<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#ab181437e35cfc57ef3efdd368bb51a69\">  202</a></span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt; <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00993.html#ab181437e35cfc57ef3efdd368bb51a69\">LocalPointVaryingStencilPrecisionMatchesType</a>() <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\">  203</span> </div>\n+<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\">  216</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T&gt; <span class=\"keywordtype\">void</span></div>\n+<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\">  217</span>    <a class=\"code hl_function\" href=\"a00993.html#a08ccda63d26e5b06957be5f5eec75d01\">ComputeLocalPointValuesVarying</a>(T <span class=\"keyword\">const</span> *src, T *dst) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\">  218</span> </div>\n+<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\">  219</span> </div>\n+<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#afc91733be6989f2f18c4817fc43ab070\">  221</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00993.html#afc91733be6989f2f18c4817fc43ab070\">GetNumLocalPointsFaceVarying</a>(<span class=\"keywordtype\">int</span> channel = 0) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\">  222</span> </div>\n+<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\">  224</span>    <a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const</span> *<a class=\"code hl_function\" href=\"a00993.html#a523e2a6f899aede5166441b14efa348a\">GetLocalPointFaceVaryingStencilTable</a>(<span class=\"keywordtype\">int</span> channel = 0) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\">  225</span> </div>\n+<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\">  227</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#ac176593fac078b4f7dd4801d586d6c41\">  228</a></span>    <a class=\"code hl_class\" href=\"a01061.html\">StencilTableReal&lt;REAL&gt;</a> <span class=\"keyword\">const</span> * <a class=\"code hl_function\" href=\"a00993.html#ac176593fac078b4f7dd4801d586d6c41\">GetLocalPointFaceVaryingStencilTable</a>(<span class=\"keywordtype\">int</span> channel = 0) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\">  229</span> </div>\n+<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a38d50a271b91fe5b1a9f11904d06ce49\">  232</a></span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt; <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00993.html#a38d50a271b91fe5b1a9f11904d06ce49\">LocalPointFaceVaryingStencilPrecisionMatchesType</a>() <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\">  233</span> </div>\n+<div class=\"line\"><a id=\"l00248\" name=\"l00248\"></a><span class=\"lineno\">  248</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T&gt; <span class=\"keywordtype\">void</span></div>\n+<div class=\"line\"><a id=\"l00249\" name=\"l00249\"></a><span class=\"lineno\">  249</span>    <a class=\"code hl_function\" href=\"a00993.html#a059c9506f9ef8ebf24a68fc298be58be\">ComputeLocalPointValuesFaceVarying</a>(T <span class=\"keyword\">const</span> *src, T *dst, <span class=\"keywordtype\">int</span> channel = 0) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00251\" name=\"l00251\"></a><span class=\"lineno\">  251</span> </div>\n+<div class=\"line\"><a id=\"l00252\" name=\"l00252\"></a><span class=\"lineno\">  252</span> </div>\n+<div class=\"line\"><a id=\"l00254\" name=\"l00254\"></a><span class=\"lineno\">  254</span> </div>\n+<div class=\"line\"><a id=\"l00255\" name=\"l00255\"></a><span class=\"lineno\">  255</span> </div>\n+<div class=\"line\"><a id=\"l00259\" name=\"l00259\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#ab72c4254f74c932eeb7d7b08805932c5\">  259</a></span>    <span class=\"keyword\">typedef</span> <a class=\"code hl_class\" href=\"a01353.html\">Vtr::ConstArray&lt;unsigned int&gt;</a> <a class=\"code hl_typedef\" href=\"a00993.html#ab72c4254f74c932eeb7d7b08805932c5\">ConstQuadOffsetsArray</a>;</div>\n+<div class=\"line\"><a id=\"l00260\" name=\"l00260\"></a><span class=\"lineno\">  260</span> </div>\n+<div class=\"line\"><a id=\"l00262\" name=\"l00262\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a68a029efbad55b2fd991d29aa37a7c28\">  262</a></span>    <a class=\"code hl_class\" href=\"a01353.html\">ConstQuadOffsetsArray</a> <a class=\"code hl_function\" href=\"a00993.html#a68a029efbad55b2fd991d29aa37a7c28\">GetPatchQuadOffsets</a>(<a class=\"code hl_class\" href=\"a00997.html\">PatchHandle</a> <span class=\"keyword\">const</span> &amp; handle) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00263\" name=\"l00263\"></a><span class=\"lineno\">  263</span> </div>\n+<div class=\"line\"><a id=\"l00264\" name=\"l00264\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a2fbf111cac9d122eeaec5c0cb73fa77d\">  264</a></span>    <span class=\"keyword\">typedef</span> std::vector&lt;Index&gt; <a class=\"code hl_typedef\" href=\"a00993.html#a2fbf111cac9d122eeaec5c0cb73fa77d\">VertexValenceTable</a>;</div>\n+<div class=\"line\"><a id=\"l00265\" name=\"l00265\"></a><span class=\"lineno\">  265</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00267\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00267\" name=\"l00267\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a442f93101ba3ac94d07f1d9ceb1cdcd6\">  267</a></span>    <a class=\"code hl_typedef\" href=\"a00993.html#a2fbf111cac9d122eeaec5c0cb73fa77d\">VertexValenceTable</a> <span class=\"keyword\">const</span> &amp; <a class=\"code hl_function\" href=\"a00993.html#a442f93101ba3ac94d07f1d9ceb1cdcd6\">GetVertexValenceTable</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00268\" name=\"l00268\"></a><span class=\"lineno\">  268</span>        <span class=\"keywordflow\">return</span> _vertexValenceTable;</div>\n+<div class=\"line\"><a id=\"l00269\" name=\"l00269\"></a><span class=\"lineno\">  269</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00271\" name=\"l00271\"></a><span class=\"lineno\">  271</span> </div>\n+<div class=\"line\"><a id=\"l00272\" name=\"l00272\"></a><span class=\"lineno\">  272</span> </div>\n+<div class=\"line\"><a id=\"l00274\" name=\"l00274\"></a><span class=\"lineno\">  274</span> </div>\n+<div class=\"line\"><a id=\"l00280\" name=\"l00280\"></a><span class=\"lineno\">  280</span> </div>\n+<div class=\"line\"><a id=\"l00283\" name=\"l00283\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a875abc47934c4076304f3b9c4edde3cc\">  283</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"a00993.html#a875abc47934c4076304f3b9c4edde3cc\">GetSingleCreasePatchSharpnessValue</a>(<a class=\"code hl_class\" href=\"a00997.html\">PatchHandle</a> <span class=\"keyword\">const</span> &amp; handle) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00284\" name=\"l00284\"></a><span class=\"lineno\">  284</span> </div>\n+<div class=\"line\"><a id=\"l00287\" name=\"l00287\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a73752510551b8bda85fbc7f43e97730b\">  287</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"a00993.html#a73752510551b8bda85fbc7f43e97730b\">GetSingleCreasePatchSharpnessValue</a>(<span class=\"keywordtype\">int</span> array, <span class=\"keywordtype\">int</span> patch) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00289\" name=\"l00289\"></a><span class=\"lineno\">  289</span> </div>\n+<div class=\"line\"><a id=\"l00290\" name=\"l00290\"></a><span class=\"lineno\">  290</span> </div>\n+<div class=\"line\"><a id=\"l00292\" name=\"l00292\"></a><span class=\"lineno\">  292</span> </div>\n+<div class=\"line\"><a id=\"l00298\" name=\"l00298\"></a><span class=\"lineno\">  298</span> </div>\n+<div class=\"line\"><a id=\"l00300\" name=\"l00300\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a9f14d69df88fa663dcfdec990ec9e3f3\">  300</a></span>    <a class=\"code hl_class\" href=\"a00973.html\">PatchDescriptor</a> <a class=\"code hl_function\" href=\"a00993.html#a9f14d69df88fa663dcfdec990ec9e3f3\">GetVaryingPatchDescriptor</a>() <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00301\" name=\"l00301\"></a><span class=\"lineno\">  301</span> </div>\n+<div class=\"line\"><a id=\"l00303\" name=\"l00303\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a0cb33d03729931750660ebf58b9e89ec\">  303</a></span>    <a class=\"code hl_class\" href=\"a01353.html\">ConstIndexArray</a> <a class=\"code hl_function\" href=\"a00993.html#a0cb33d03729931750660ebf58b9e89ec\">GetPatchVaryingVertices</a>(<a class=\"code hl_class\" href=\"a00997.html\">PatchHandle</a> <span class=\"keyword\">const</span> &amp; handle) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00304\" name=\"l00304\"></a><span class=\"lineno\">  304</span> </div>\n+<div class=\"line\"><a id=\"l00306\" name=\"l00306\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a31b548d9f8334f3c4f9341eda3479982\">  306</a></span>    <a class=\"code hl_class\" href=\"a01353.html\">ConstIndexArray</a> <a class=\"code hl_function\" href=\"a00993.html#a31b548d9f8334f3c4f9341eda3479982\">GetPatchVaryingVertices</a>(<span class=\"keywordtype\">int</span> array, <span class=\"keywordtype\">int</span> patch) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\">  307</span> </div>\n+<div class=\"line\"><a id=\"l00309\" name=\"l00309\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a012069d0bc0036c1e2bb75bc2a170c58\">  309</a></span>    <a class=\"code hl_class\" href=\"a01353.html\">ConstIndexArray</a> <a class=\"code hl_function\" href=\"a00993.html#a012069d0bc0036c1e2bb75bc2a170c58\">GetPatchArrayVaryingVertices</a>(<span class=\"keywordtype\">int</span> array) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00310\" name=\"l00310\"></a><span class=\"lineno\">  310</span> </div>\n+<div class=\"line\"><a id=\"l00312\" name=\"l00312\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a062d31216b535f604b3bc4d69434270d\">  312</a></span>    <a class=\"code hl_class\" href=\"a01353.html\">ConstIndexArray</a> <a class=\"code hl_function\" href=\"a00993.html#a062d31216b535f604b3bc4d69434270d\">GetVaryingVertices</a>() <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00314\" name=\"l00314\"></a><span class=\"lineno\">  314</span> </div>\n+<div class=\"line\"><a id=\"l00315\" name=\"l00315\"></a><span class=\"lineno\">  315</span> </div>\n+<div class=\"line\"><a id=\"l00317\" name=\"l00317\"></a><span class=\"lineno\">  317</span> </div>\n+<div class=\"line\"><a id=\"l00323\" name=\"l00323\"></a><span class=\"lineno\">  323</span> </div>\n+<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#aa9be824a572029f3ec1e0c0d6cfecd77\">  325</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00993.html#aa9be824a572029f3ec1e0c0d6cfecd77\">GetNumFVarChannels</a>() <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\">  326</span> </div>\n+<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a90705c85d6b680933c93344c9804e4d6\">  328</a></span>    <a class=\"code hl_class\" href=\"a00973.html\">PatchDescriptor</a> <a class=\"code hl_function\" href=\"a00993.html#a90705c85d6b680933c93344c9804e4d6\">GetFVarPatchDescriptorRegular</a>(<span class=\"keywordtype\">int</span> channel = 0) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\">  329</span> </div>\n+<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a733ff80d6d940519b47091c58abbed34\">  331</a></span>    <a class=\"code hl_class\" href=\"a00973.html\">PatchDescriptor</a> <a class=\"code hl_function\" href=\"a00993.html#a733ff80d6d940519b47091c58abbed34\">GetFVarPatchDescriptorIrregular</a>(<span class=\"keywordtype\">int</span> channel = 0) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\">  332</span> </div>\n+<div class=\"line\"><a id=\"l00334\" name=\"l00334\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#adccd68da8d26bb5f5c2b7f29e0a14e89\">  334</a></span>    <a class=\"code hl_class\" href=\"a00973.html\">PatchDescriptor</a> <a class=\"code hl_function\" href=\"a00993.html#adccd68da8d26bb5f5c2b7f29e0a14e89\">GetFVarPatchDescriptor</a>(<span class=\"keywordtype\">int</span> channel = 0) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00335\" name=\"l00335\"></a><span class=\"lineno\">  335</span> </div>\n+<div class=\"line\"><a id=\"l00337\" name=\"l00337\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#aa3020b88381e6966efbe6c4febf8c04f\">  337</a></span>    <a class=\"code hl_class\" href=\"a01353.html\">ConstIndexArray</a> <a class=\"code hl_function\" href=\"a00993.html#aa3020b88381e6966efbe6c4febf8c04f\">GetPatchFVarValues</a>(<a class=\"code hl_class\" href=\"a00997.html\">PatchHandle</a> <span class=\"keyword\">const</span> &amp; handle, <span class=\"keywordtype\">int</span> channel = 0) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00338\" name=\"l00338\"></a><span class=\"lineno\">  338</span> </div>\n+<div class=\"line\"><a id=\"l00340\" name=\"l00340\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a8cc9b6bbaaecd1facf0cfae0853e3a60\">  340</a></span>    <a class=\"code hl_class\" href=\"a01353.html\">ConstIndexArray</a> <a class=\"code hl_function\" href=\"a00993.html#a8cc9b6bbaaecd1facf0cfae0853e3a60\">GetPatchFVarValues</a>(<span class=\"keywordtype\">int</span> array, <span class=\"keywordtype\">int</span> patch, <span class=\"keywordtype\">int</span> channel = 0) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00341\" name=\"l00341\"></a><span class=\"lineno\">  341</span> </div>\n+<div class=\"line\"><a id=\"l00343\" name=\"l00343\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a2a749eef1377f4f13a23c95e4038525d\">  343</a></span>    <a class=\"code hl_class\" href=\"a01353.html\">ConstIndexArray</a> <a class=\"code hl_function\" href=\"a00993.html#a2a749eef1377f4f13a23c95e4038525d\">GetPatchArrayFVarValues</a>(<span class=\"keywordtype\">int</span> array, <span class=\"keywordtype\">int</span> channel = 0) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00344\" name=\"l00344\"></a><span class=\"lineno\">  344</span> </div>\n+<div class=\"line\"><a id=\"l00346\" name=\"l00346\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#ab6810a0252d1c07b7459065c3dde2903\">  346</a></span>    <a class=\"code hl_class\" href=\"a01353.html\">ConstIndexArray</a> <a class=\"code hl_function\" href=\"a00993.html#ab6810a0252d1c07b7459065c3dde2903\">GetFVarValues</a>(<span class=\"keywordtype\">int</span> channel = 0) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00347\" name=\"l00347\"></a><span class=\"lineno\">  347</span> </div>\n+<div class=\"line\"><a id=\"l00349\" name=\"l00349\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#ad98dc91babcdddf20876169a70e10402\">  349</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00993.html#ad98dc91babcdddf20876169a70e10402\">GetFVarValueStride</a>(<span class=\"keywordtype\">int</span> channel = 0) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00350\" name=\"l00350\"></a><span class=\"lineno\">  350</span> </div>\n+<div class=\"line\"><a id=\"l00352\" name=\"l00352\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#ad9481ab788a82c6a48364fff6a8ab193\">  352</a></span>    <a class=\"code hl_struct\" href=\"a00989.html\">PatchParam</a> <a class=\"code hl_function\" href=\"a00993.html#ad9481ab788a82c6a48364fff6a8ab193\">GetPatchFVarPatchParam</a>(<a class=\"code hl_class\" href=\"a00997.html\">PatchHandle</a> <span class=\"keyword\">const</span> &amp; handle, <span class=\"keywordtype\">int</span> channel = 0) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00353\" name=\"l00353\"></a><span class=\"lineno\">  353</span> </div>\n+<div class=\"line\"><a id=\"l00355\" name=\"l00355\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a315fc19f788ba446560b2641186c393e\">  355</a></span>    <a class=\"code hl_struct\" href=\"a00989.html\">PatchParam</a> <a class=\"code hl_function\" href=\"a00993.html#a315fc19f788ba446560b2641186c393e\">GetPatchFVarPatchParam</a>(<span class=\"keywordtype\">int</span> array, <span class=\"keywordtype\">int</span> patch, <span class=\"keywordtype\">int</span> channel = 0) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00356\" name=\"l00356\"></a><span class=\"lineno\">  356</span> </div>\n+<div class=\"line\"><a id=\"l00358\" name=\"l00358\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#aa9e55389ca0f7adf332423216b31134d\">  358</a></span>    <a class=\"code hl_class\" href=\"a01353.html\">ConstPatchParamArray</a> <a class=\"code hl_function\" href=\"a00993.html#aa9e55389ca0f7adf332423216b31134d\">GetPatchArrayFVarPatchParams</a>(<span class=\"keywordtype\">int</span> array, <span class=\"keywordtype\">int</span> channel = 0) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00359\" name=\"l00359\"></a><span class=\"lineno\">  359</span> </div>\n+<div class=\"line\"><a id=\"l00361\" name=\"l00361\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#adb4260cb1d469935a32df5ad35d98bb4\">  361</a></span>    <a class=\"code hl_class\" href=\"a01353.html\">ConstPatchParamArray</a> <a class=\"code hl_function\" href=\"a00993.html#adb4260cb1d469935a32df5ad35d98bb4\">GetFVarPatchParams</a>(<span class=\"keywordtype\">int</span> channel = 0) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00362\" name=\"l00362\"></a><span class=\"lineno\">  362</span> </div>\n+<div class=\"line\"><a id=\"l00364\" name=\"l00364\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#ad0e821181a94f5019cc79b75d3eb74b6\">  364</a></span>    <a class=\"code hl_enumeration\" href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167b\">Sdc::Options::FVarLinearInterpolation</a> <a class=\"code hl_function\" href=\"a00993.html#ad0e821181a94f5019cc79b75d3eb74b6\">GetFVarChannelLinearInterpolation</a>(<span class=\"keywordtype\">int</span> channel = 0) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00366\" name=\"l00366\"></a><span class=\"lineno\">  366</span> </div>\n+<div class=\"line\"><a id=\"l00367\" name=\"l00367\"></a><span class=\"lineno\">  367</span> </div>\n+<div class=\"line\"><a id=\"l00369\" name=\"l00369\"></a><span class=\"lineno\">  369</span> </div>\n+<div class=\"line\"><a id=\"l00374\" name=\"l00374\"></a><span class=\"lineno\">  374</span> </div>\n+<div class=\"line\"><a id=\"l00375\" name=\"l00375\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a9484ab8a323750c2f639ee8709b1349b\">  375</a></span>    <span class=\"keyword\">typedef</span> std::vector&lt;Index&gt; <a class=\"code hl_typedef\" href=\"a00993.html#a9484ab8a323750c2f639ee8709b1349b\">PatchVertsTable</a>;</div>\n+<div class=\"line\"><a id=\"l00376\" name=\"l00376\"></a><span class=\"lineno\">  376</span> </div>\n+<div class=\"line\"><a id=\"l00378\" name=\"l00378\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a02ba6ac8fc716dd7349a8a1143319079\">  378</a></span>    <a class=\"code hl_typedef\" href=\"a00993.html#a9484ab8a323750c2f639ee8709b1349b\">PatchVertsTable</a> <span class=\"keyword\">const</span> &amp; <a class=\"code hl_function\" href=\"a00993.html#a02ba6ac8fc716dd7349a8a1143319079\">GetPatchControlVerticesTable</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _patchVerts; }</div>\n+<div class=\"line\"><a id=\"l00379\" name=\"l00379\"></a><span class=\"lineno\">  379</span> </div>\n+<div class=\"line\"><a id=\"l00381\" name=\"l00381\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a39cd14c1ae309f7fc7872b7b0d03dde3\">  381</a></span>    <a class=\"code hl_typedef\" href=\"a00908.html#a46ea68db89cc3d55c4191ef7648281ce\">PatchParamTable</a> <span class=\"keyword\">const</span> &amp; <a class=\"code hl_function\" href=\"a00993.html#a39cd14c1ae309f7fc7872b7b0d03dde3\">GetPatchParamTable</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _paramTable; }</div>\n+<div class=\"line\"><a id=\"l00382\" name=\"l00382\"></a><span class=\"lineno\">  382</span> </div>\n+<div class=\"line\"><a id=\"l00384\" name=\"l00384\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#ad173086439fbbf0412b86b3d1262847d\">  384</a></span>    std::vector&lt;Index&gt; <span class=\"keyword\">const</span> &amp;<a class=\"code hl_function\" href=\"a00993.html#ad173086439fbbf0412b86b3d1262847d\">GetSharpnessIndexTable</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _sharpnessIndices; }</div>\n+<div class=\"line\"><a id=\"l00385\" name=\"l00385\"></a><span class=\"lineno\">  385</span> </div>\n+<div class=\"line\"><a id=\"l00387\" name=\"l00387\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a2d2c7ac649a9a285741dfdc1ed3089b3\">  387</a></span>    std::vector&lt;float&gt; <span class=\"keyword\">const</span> &amp;<a class=\"code hl_function\" href=\"a00993.html#a2d2c7ac649a9a285741dfdc1ed3089b3\">GetSharpnessValues</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _sharpnessValues; }</div>\n+<div class=\"line\"><a id=\"l00388\" name=\"l00388\"></a><span class=\"lineno\">  388</span> </div>\n+<div class=\"line\"><a id=\"l00389\" name=\"l00389\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#ad71e6ae07059dc39b0550c98cfcee291\">  389</a></span>    <span class=\"keyword\">typedef</span> std::vector&lt;unsigned int&gt; <a class=\"code hl_typedef\" href=\"a00993.html#ad71e6ae07059dc39b0550c98cfcee291\">QuadOffsetsTable</a>;</div>\n+<div class=\"line\"><a id=\"l00390\" name=\"l00390\"></a><span class=\"lineno\">  390</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00392\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00392\" name=\"l00392\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a99b23eec59013306ea2f1df119a7574d\">  392</a></span>    <a class=\"code hl_typedef\" href=\"a00993.html#ad71e6ae07059dc39b0550c98cfcee291\">QuadOffsetsTable</a> <span class=\"keyword\">const</span> &amp; <a class=\"code hl_function\" href=\"a00993.html#a99b23eec59013306ea2f1df119a7574d\">GetQuadOffsetsTable</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00393\" name=\"l00393\"></a><span class=\"lineno\">  393</span>        <span class=\"keywordflow\">return</span> _quadOffsetsTable;</div>\n+<div class=\"line\"><a id=\"l00394\" name=\"l00394\"></a><span class=\"lineno\">  394</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00396\" name=\"l00396\"></a><span class=\"lineno\">  396</span> </div>\n+<div class=\"line\"><a id=\"l00398\" name=\"l00398\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#acd0f82d3c49b8a5dd436d4003c44b713\">  398</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00993.html#acd0f82d3c49b8a5dd436d4003c44b713\">print</a>() <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00399\" name=\"l00399\"></a><span class=\"lineno\">  399</span> </div>\n+<div class=\"line\"><a id=\"l00400\" name=\"l00400\"></a><span class=\"lineno\">  400</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00401\" name=\"l00401\"></a><span class=\"lineno\">  401</span> </div>\n+<div class=\"line\"><a id=\"l00403\" name=\"l00403\"></a><span class=\"lineno\">  403</span> </div>\n+<div class=\"line\"><a id=\"l00405\" name=\"l00405\"></a><span class=\"lineno\">  405</span> </div>\n+<div class=\"line\"><a id=\"l00428\" name=\"l00428\"></a><span class=\"lineno\">  428</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00429\" name=\"l00429\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#ab8a09f15edef57b9b4aed0d0d6183b75\">  429</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00993.html#ab8a09f15edef57b9b4aed0d0d6183b75\">EvaluateBasis</a>(<a class=\"code hl_class\" href=\"a00997.html\">PatchHandle</a> <span class=\"keyword\">const</span> &amp; handle, REAL u, REAL v,</div>\n+<div class=\"line\"><a id=\"l00430\" name=\"l00430\"></a><span class=\"lineno\">  430</span>        REAL wP[], REAL wDu[] = 0, REAL wDv[] = 0,</div>\n+<div class=\"line\"><a id=\"l00431\" name=\"l00431\"></a><span class=\"lineno\">  431</span>        REAL wDuu[] = 0, REAL wDuv[] = 0, REAL wDvv[] = 0) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00432\" name=\"l00432\"></a><span class=\"lineno\">  432</span> </div>\n+<div class=\"line\"><a id=\"l00435\" name=\"l00435\"></a><span class=\"lineno\">  435</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00993.html#ab8a09f15edef57b9b4aed0d0d6183b75\">EvaluateBasis</a>(<a class=\"code hl_class\" href=\"a00997.html\">PatchHandle</a> <span class=\"keyword\">const</span> &amp; handle, <span class=\"keywordtype\">float</span> u, <span class=\"keywordtype\">float</span> v,</div>\n+<div class=\"line\"><a id=\"l00436\" name=\"l00436\"></a><span class=\"lineno\">  436</span>        <span class=\"keywordtype\">float</span> wP[], <span class=\"keywordtype\">float</span> wDu[] = 0, <span class=\"keywordtype\">float</span> wDv[] = 0,</div>\n+<div class=\"line\"><a id=\"l00437\" name=\"l00437\"></a><span class=\"lineno\">  437</span>        <span class=\"keywordtype\">float</span> wDuu[] = 0, <span class=\"keywordtype\">float</span> wDuv[] = 0, <span class=\"keywordtype\">float</span> wDvv[] = 0) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00438\" name=\"l00438\"></a><span class=\"lineno\">  438</span> </div>\n+<div class=\"line\"><a id=\"l00441\" name=\"l00441\"></a><span class=\"lineno\">  441</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00993.html#ab8a09f15edef57b9b4aed0d0d6183b75\">EvaluateBasis</a>(<a class=\"code hl_class\" href=\"a00997.html\">PatchHandle</a> <span class=\"keyword\">const</span> &amp; handle, <span class=\"keywordtype\">double</span> u, <span class=\"keywordtype\">double</span> v,</div>\n+<div class=\"line\"><a id=\"l00442\" name=\"l00442\"></a><span class=\"lineno\">  442</span>        <span class=\"keywordtype\">double</span> wP[], <span class=\"keywordtype\">double</span> wDu[] = 0, <span class=\"keywordtype\">double</span> wDv[] = 0,</div>\n+<div class=\"line\"><a id=\"l00443\" name=\"l00443\"></a><span class=\"lineno\">  443</span>        <span class=\"keywordtype\">double</span> wDuu[] = 0, <span class=\"keywordtype\">double</span> wDuv[] = 0, <span class=\"keywordtype\">double</span> wDvv[] = 0) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00444\" name=\"l00444\"></a><span class=\"lineno\">  444</span> </div>\n+<div class=\"line\"><a id=\"l00467\" name=\"l00467\"></a><span class=\"lineno\">  467</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00468\" name=\"l00468\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#ad690cee703683b70def7a4419120cc9a\">  468</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00993.html#ad690cee703683b70def7a4419120cc9a\">EvaluateBasisVarying</a>(<a class=\"code hl_class\" href=\"a00997.html\">PatchHandle</a> <span class=\"keyword\">const</span> &amp; handle, REAL u, REAL v,</div>\n+<div class=\"line\"><a id=\"l00469\" name=\"l00469\"></a><span class=\"lineno\">  469</span>        REAL wP[], REAL wDu[] = 0, REAL wDv[] = 0,</div>\n+<div class=\"line\"><a id=\"l00470\" name=\"l00470\"></a><span class=\"lineno\">  470</span>        REAL wDuu[] = 0, REAL wDuv[] = 0, REAL wDvv[] = 0) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00471\" name=\"l00471\"></a><span class=\"lineno\">  471</span> </div>\n+<div class=\"line\"><a id=\"l00474\" name=\"l00474\"></a><span class=\"lineno\">  474</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00993.html#ad690cee703683b70def7a4419120cc9a\">EvaluateBasisVarying</a>(<a class=\"code hl_class\" href=\"a00997.html\">PatchHandle</a> <span class=\"keyword\">const</span> &amp; handle, <span class=\"keywordtype\">float</span> u, <span class=\"keywordtype\">float</span> v,</div>\n+<div class=\"line\"><a id=\"l00475\" name=\"l00475\"></a><span class=\"lineno\">  475</span>        <span class=\"keywordtype\">float</span> wP[], <span class=\"keywordtype\">float</span> wDu[] = 0, <span class=\"keywordtype\">float</span> wDv[] = 0,</div>\n+<div class=\"line\"><a id=\"l00476\" name=\"l00476\"></a><span class=\"lineno\">  476</span>        <span class=\"keywordtype\">float</span> wDuu[] = 0, <span class=\"keywordtype\">float</span> wDuv[] = 0, <span class=\"keywordtype\">float</span> wDvv[] = 0) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00477\" name=\"l00477\"></a><span class=\"lineno\">  477</span> </div>\n+<div class=\"line\"><a id=\"l00480\" name=\"l00480\"></a><span class=\"lineno\">  480</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00993.html#ad690cee703683b70def7a4419120cc9a\">EvaluateBasisVarying</a>(<a class=\"code hl_class\" href=\"a00997.html\">PatchHandle</a> <span class=\"keyword\">const</span> &amp; handle, <span class=\"keywordtype\">double</span> u, <span class=\"keywordtype\">double</span> v,</div>\n+<div class=\"line\"><a id=\"l00481\" name=\"l00481\"></a><span class=\"lineno\">  481</span>        <span class=\"keywordtype\">double</span> wP[], <span class=\"keywordtype\">double</span> wDu[] = 0, <span class=\"keywordtype\">double</span> wDv[] = 0,</div>\n+<div class=\"line\"><a id=\"l00482\" name=\"l00482\"></a><span class=\"lineno\">  482</span>        <span class=\"keywordtype\">double</span> wDuu[] = 0, <span class=\"keywordtype\">double</span> wDuv[] = 0, <span class=\"keywordtype\">double</span> wDvv[] = 0) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00483\" name=\"l00483\"></a><span class=\"lineno\">  483</span> </div>\n+<div class=\"line\"><a id=\"l00508\" name=\"l00508\"></a><span class=\"lineno\">  508</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00509\" name=\"l00509\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a64fe119d6034e4b1f39e81d39ad9dfc4\">  509</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00993.html#a64fe119d6034e4b1f39e81d39ad9dfc4\">EvaluateBasisFaceVarying</a>(<a class=\"code hl_class\" href=\"a00997.html\">PatchHandle</a> <span class=\"keyword\">const</span> &amp; handle, REAL u, REAL v,</div>\n+<div class=\"line\"><a id=\"l00510\" name=\"l00510\"></a><span class=\"lineno\">  510</span>        REAL wP[], REAL wDu[] = 0, REAL wDv[] = 0,</div>\n+<div class=\"line\"><a id=\"l00511\" name=\"l00511\"></a><span class=\"lineno\">  511</span>        REAL wDuu[] = 0, REAL wDuv[] = 0, REAL wDvv[] = 0,</div>\n+<div class=\"line\"><a id=\"l00512\" name=\"l00512\"></a><span class=\"lineno\">  512</span>        <span class=\"keywordtype\">int</span> channel = 0) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00513\" name=\"l00513\"></a><span class=\"lineno\">  513</span> </div>\n+<div class=\"line\"><a id=\"l00516\" name=\"l00516\"></a><span class=\"lineno\">  516</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00993.html#a64fe119d6034e4b1f39e81d39ad9dfc4\">EvaluateBasisFaceVarying</a>(<a class=\"code hl_class\" href=\"a00997.html\">PatchHandle</a> <span class=\"keyword\">const</span> &amp; handle, <span class=\"keywordtype\">float</span> u, <span class=\"keywordtype\">float</span> v,</div>\n+<div class=\"line\"><a id=\"l00517\" name=\"l00517\"></a><span class=\"lineno\">  517</span>        <span class=\"keywordtype\">float</span> wP[], <span class=\"keywordtype\">float</span> wDu[] = 0, <span class=\"keywordtype\">float</span> wDv[] = 0,</div>\n+<div class=\"line\"><a id=\"l00518\" name=\"l00518\"></a><span class=\"lineno\">  518</span>        <span class=\"keywordtype\">float</span> wDuu[] = 0, <span class=\"keywordtype\">float</span> wDuv[] = 0, <span class=\"keywordtype\">float</span> wDvv[] = 0,</div>\n+<div class=\"line\"><a id=\"l00519\" name=\"l00519\"></a><span class=\"lineno\">  519</span>        <span class=\"keywordtype\">int</span> channel = 0) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00520\" name=\"l00520\"></a><span class=\"lineno\">  520</span> </div>\n+<div class=\"line\"><a id=\"l00523\" name=\"l00523\"></a><span class=\"lineno\">  523</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00993.html#a64fe119d6034e4b1f39e81d39ad9dfc4\">EvaluateBasisFaceVarying</a>(<a class=\"code hl_class\" href=\"a00997.html\">PatchHandle</a> <span class=\"keyword\">const</span> &amp; handle, <span class=\"keywordtype\">double</span> u, <span class=\"keywordtype\">double</span> v,</div>\n+<div class=\"line\"><a id=\"l00524\" name=\"l00524\"></a><span class=\"lineno\">  524</span>        <span class=\"keywordtype\">double</span> wP[], <span class=\"keywordtype\">double</span> wDu[] = 0, <span class=\"keywordtype\">double</span> wDv[] = 0,</div>\n+<div class=\"line\"><a id=\"l00525\" name=\"l00525\"></a><span class=\"lineno\">  525</span>        <span class=\"keywordtype\">double</span> wDuu[] = 0, <span class=\"keywordtype\">double</span> wDuv[] = 0, <span class=\"keywordtype\">double</span> wDvv[] = 0,</div>\n+<div class=\"line\"><a id=\"l00526\" name=\"l00526\"></a><span class=\"lineno\">  526</span>        <span class=\"keywordtype\">int</span> channel = 0) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00528\" name=\"l00528\"></a><span class=\"lineno\">  528</span> </div>\n+<div class=\"line\"><a id=\"l00529\" name=\"l00529\"></a><span class=\"lineno\">  529</span><span class=\"keyword\">protected</span>:</div>\n+<div class=\"line\"><a id=\"l00530\" name=\"l00530\"></a><span class=\"lineno\">  530</span> </div>\n+<div class=\"line\"><a id=\"l00531\" name=\"l00531\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#ad452cef79832abb71eef0c3d88acc1a0\">  531</a></span>    <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span><a class=\"code hl_friend\" href=\"a00993.html#ad452cef79832abb71eef0c3d88acc1a0\">PatchTableBuilder</a>;</div>\n+<div class=\"line\"><a id=\"l00532\" name=\"l00532\"></a><span class=\"lineno\">  532</span> </div>\n+<div class=\"line\"><a id=\"l00533\" name=\"l00533\"></a><span class=\"lineno\">  533</span>    <span class=\"comment\">// Factory constructor</span></div>\n+<div class=\"line\"><a id=\"l00534\" name=\"l00534\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a37e24b0244219eef61cc1ab2a5a5450e\">  534</a></span>    <a class=\"code hl_function\" href=\"a00993.html#a37e24b0244219eef61cc1ab2a5a5450e\">PatchTable</a>(<span class=\"keywordtype\">int</span> maxvalence);</div>\n+<div class=\"line\"><a id=\"l00535\" name=\"l00535\"></a><span class=\"lineno\">  535</span> </div>\n+<div class=\"line\"><a id=\"l00536\" name=\"l00536\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#ab0adae83e2dd316f9ed297fe745dab55\">  536</a></span>    <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> <a class=\"code hl_function\" href=\"a00993.html#ab0adae83e2dd316f9ed297fe745dab55\">getPatchIndex</a>(<span class=\"keywordtype\">int</span> array, <span class=\"keywordtype\">int</span> patch) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00537\" name=\"l00537\"></a><span class=\"lineno\">  537</span> </div>\n+<div class=\"line\"><a id=\"l00538\" name=\"l00538\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a21130b3d23cd5c27045d03c601e4642d\">  538</a></span>    <a class=\"code hl_class\" href=\"a01357.html\">PatchParamArray</a> <a class=\"code hl_function\" href=\"a00993.html#a21130b3d23cd5c27045d03c601e4642d\">getPatchParams</a>(<span class=\"keywordtype\">int</span> arrayIndex);</div>\n+<div class=\"line\"><a id=\"l00539\" name=\"l00539\"></a><span class=\"lineno\">  539</span> </div>\n+<div class=\"line\"><a id=\"l00540\" name=\"l00540\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a7c1135ced687d1313ed925b8441fdf60\">  540</a></span>    <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> * <a class=\"code hl_function\" href=\"a00993.html#a7c1135ced687d1313ed925b8441fdf60\">getSharpnessIndices</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> arrayIndex);</div>\n+<div class=\"line\"><a id=\"l00541\" name=\"l00541\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a02449704e384b32232b06d0d57968138\">  541</a></span>    <span class=\"keywordtype\">float</span> * <a class=\"code hl_function\" href=\"a00993.html#a02449704e384b32232b06d0d57968138\">getSharpnessValues</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> arrayIndex);</div>\n+<div class=\"line\"><a id=\"l00542\" name=\"l00542\"></a><span class=\"lineno\">  542</span> </div>\n+<div class=\"line\"><a id=\"l00543\" name=\"l00543\"></a><span class=\"lineno\">  543</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00544\" name=\"l00544\"></a><span class=\"lineno\">  544</span> </div>\n+<div class=\"line\"><a id=\"l00545\" name=\"l00545\"></a><span class=\"lineno\">  545</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00546\" name=\"l00546\"></a><span class=\"lineno\">  546</span>    <span class=\"comment\">// Patch arrays</span></div>\n+<div class=\"line\"><a id=\"l00547\" name=\"l00547\"></a><span class=\"lineno\">  547</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00548\" name=\"l00548\"></a><span class=\"lineno\">  548</span>    <span class=\"keyword\">struct </span>PatchArray {</div>\n+<div class=\"line\"><a id=\"l00549\" name=\"l00549\"></a><span class=\"lineno\">  549</span>        PatchArray(<a class=\"code hl_class\" href=\"a00973.html\">PatchDescriptor</a> d, <span class=\"keywordtype\">int</span> np, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> v, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> p, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> qo) :</div>\n+<div class=\"line\"><a id=\"l00550\" name=\"l00550\"></a><span class=\"lineno\">  550</span>            desc(d), numPatches(np), vertIndex(v),</div>\n+<div class=\"line\"><a id=\"l00551\" name=\"l00551\"></a><span class=\"lineno\">  551</span>            patchIndex(p), quadOffsetIndex (qo) { }</div>\n+<div class=\"line\"><a id=\"l00552\" name=\"l00552\"></a><span class=\"lineno\">  552</span> </div>\n+<div class=\"line\"><a id=\"l00553\" name=\"l00553\"></a><span class=\"lineno\">  553</span>        <span class=\"keywordtype\">void</span> print() <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00554\" name=\"l00554\"></a><span class=\"lineno\">  554</span> </div>\n+<div class=\"line\"><a id=\"l00555\" name=\"l00555\"></a><span class=\"lineno\">  555</span>        <a class=\"code hl_class\" href=\"a00973.html\">PatchDescriptor</a> desc;  <span class=\"comment\">// type of patches in the array</span></div>\n+<div class=\"line\"><a id=\"l00556\" name=\"l00556\"></a><span class=\"lineno\">  556</span> </div>\n+<div class=\"line\"><a id=\"l00557\" name=\"l00557\"></a><span class=\"lineno\">  557</span>        <span class=\"keywordtype\">int</span> numPatches;        <span class=\"comment\">// number of patches in the array</span></div>\n+<div class=\"line\"><a id=\"l00558\" name=\"l00558\"></a><span class=\"lineno\">  558</span> </div>\n+<div class=\"line\"><a id=\"l00559\" name=\"l00559\"></a><span class=\"lineno\">  559</span>        <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> vertIndex,       <span class=\"comment\">// index to the first control vertex</span></div>\n+<div class=\"line\"><a id=\"l00560\" name=\"l00560\"></a><span class=\"lineno\">  560</span>              patchIndex,      <span class=\"comment\">// absolute index of the first patch in the array</span></div>\n+<div class=\"line\"><a id=\"l00561\" name=\"l00561\"></a><span class=\"lineno\">  561</span>              quadOffsetIndex; <span class=\"comment\">// index of the first quad offset entry</span></div>\n+<div class=\"line\"><a id=\"l00562\" name=\"l00562\"></a><span class=\"lineno\">  562</span>    };</div>\n+<div class=\"line\"><a id=\"l00563\" name=\"l00563\"></a><span class=\"lineno\">  563</span> </div>\n+<div class=\"line\"><a id=\"l00564\" name=\"l00564\"></a><span class=\"lineno\">  564</span>    <span class=\"keyword\">typedef</span> std::vector&lt;PatchArray&gt; PatchArrayVector;</div>\n+<div class=\"line\"><a id=\"l00565\" name=\"l00565\"></a><span class=\"lineno\">  565</span> </div>\n+<div class=\"line\"><a id=\"l00566\" name=\"l00566\"></a><span class=\"lineno\">  566</span>    PatchArray &amp; getPatchArray(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> arrayIndex);</div>\n+<div class=\"line\"><a id=\"l00567\" name=\"l00567\"></a><span class=\"lineno\">  567</span>    PatchArray <span class=\"keyword\">const</span> &amp; getPatchArray(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> arrayIndex) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00568\" name=\"l00568\"></a><span class=\"lineno\">  568</span> </div>\n+<div class=\"line\"><a id=\"l00569\" name=\"l00569\"></a><span class=\"lineno\">  569</span>    <span class=\"keywordtype\">void</span> reservePatchArrays(<span class=\"keywordtype\">int</span> numPatchArrays);</div>\n+<div class=\"line\"><a id=\"l00570\" name=\"l00570\"></a><span class=\"lineno\">  570</span>    <span class=\"keywordtype\">void</span> pushPatchArray(PatchDescriptor desc, <span class=\"keywordtype\">int</span> npatches,</div>\n+<div class=\"line\"><a id=\"l00571\" name=\"l00571\"></a><span class=\"lineno\">  571</span>        <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> * vidx, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> * pidx, <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> * qoidx=0);</div>\n+<div class=\"line\"><a id=\"l00572\" name=\"l00572\"></a><span class=\"lineno\">  572</span> </div>\n+<div class=\"line\"><a id=\"l00573\" name=\"l00573\"></a><span class=\"lineno\">  573</span>    <a class=\"code hl_typedef\" href=\"a00908.html#a70ecf570850744b0efeeedd7b743e950\">IndexArray</a> getPatchArrayVertices(<span class=\"keywordtype\">int</span> arrayIndex);</div>\n+<div class=\"line\"><a id=\"l00574\" name=\"l00574\"></a><span class=\"lineno\">  574</span> </div>\n+<div class=\"line\"><a id=\"l00575\" name=\"l00575\"></a><span class=\"lineno\">  575</span>    <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> findPatchArray(PatchDescriptor desc);</div>\n+<div class=\"line\"><a id=\"l00576\" name=\"l00576\"></a><span class=\"lineno\">  576</span> </div>\n+<div class=\"line\"><a id=\"l00577\" name=\"l00577\"></a><span class=\"lineno\">  577</span> </div>\n+<div class=\"line\"><a id=\"l00578\" name=\"l00578\"></a><span class=\"lineno\">  578</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00579\" name=\"l00579\"></a><span class=\"lineno\">  579</span>    <span class=\"comment\">// Varying patch arrays</span></div>\n+<div class=\"line\"><a id=\"l00580\" name=\"l00580\"></a><span class=\"lineno\">  580</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00581\" name=\"l00581\"></a><span class=\"lineno\">  581</span>    <a class=\"code hl_typedef\" href=\"a00908.html#a70ecf570850744b0efeeedd7b743e950\">IndexArray</a> getPatchArrayVaryingVertices(<span class=\"keywordtype\">int</span> arrayIndex);</div>\n+<div class=\"line\"><a id=\"l00582\" name=\"l00582\"></a><span class=\"lineno\">  582</span> </div>\n+<div class=\"line\"><a id=\"l00583\" name=\"l00583\"></a><span class=\"lineno\">  583</span>    <span class=\"keywordtype\">void</span> allocateVaryingVertices(</div>\n+<div class=\"line\"><a id=\"l00584\" name=\"l00584\"></a><span class=\"lineno\">  584</span>        PatchDescriptor desc, <span class=\"keywordtype\">int</span> numPatches);</div>\n+<div class=\"line\"><a id=\"l00585\" name=\"l00585\"></a><span class=\"lineno\">  585</span>    <span class=\"keywordtype\">void</span> populateVaryingVertices();</div>\n+<div class=\"line\"><a id=\"l00586\" name=\"l00586\"></a><span class=\"lineno\">  586</span> </div>\n+<div class=\"line\"><a id=\"l00587\" name=\"l00587\"></a><span class=\"lineno\">  587</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00588\" name=\"l00588\"></a><span class=\"lineno\">  588</span>    <span class=\"comment\">// Face-varying patch channels</span></div>\n+<div class=\"line\"><a id=\"l00589\" name=\"l00589\"></a><span class=\"lineno\">  589</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00590\" name=\"l00590\"></a><span class=\"lineno\">  590</span> </div>\n+<div class=\"line\"><a id=\"l00591\" name=\"l00591\"></a><span class=\"lineno\">  591</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00592\" name=\"l00592\"></a><span class=\"lineno\">  592</span>    <span class=\"comment\">// FVarPatchChannel</span></div>\n+<div class=\"line\"><a id=\"l00593\" name=\"l00593\"></a><span class=\"lineno\">  593</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00594\" name=\"l00594\"></a><span class=\"lineno\">  594</span>    <span class=\"comment\">// Stores a record for each patch in the primitive :</span></div>\n+<div class=\"line\"><a id=\"l00595\" name=\"l00595\"></a><span class=\"lineno\">  595</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00596\" name=\"l00596\"></a><span class=\"lineno\">  596</span>    <span class=\"comment\">//  - Each patch in the PatchTable has a corresponding patch in each</span></div>\n+<div class=\"line\"><a id=\"l00597\" name=\"l00597\"></a><span class=\"lineno\">  597</span>    <span class=\"comment\">//    face-varying patch channel. Patch vertex indices are sorted in the same</span></div>\n+<div class=\"line\"><a id=\"l00598\" name=\"l00598\"></a><span class=\"lineno\">  598</span>    <span class=\"comment\">//    patch-type order as PatchTable::PTables. Face-varying data for a patch</span></div>\n+<div class=\"line\"><a id=\"l00599\" name=\"l00599\"></a><span class=\"lineno\">  599</span>    <span class=\"comment\">//    can therefore be quickly accessed by using the patch primitive ID as</span></div>\n+<div class=\"line\"><a id=\"l00600\" name=\"l00600\"></a><span class=\"lineno\">  600</span>    <span class=\"comment\">//    index into patchValueOffsets to locate the face-varying control vertex</span></div>\n+<div class=\"line\"><a id=\"l00601\" name=\"l00601\"></a><span class=\"lineno\">  601</span>    <span class=\"comment\">//    indices.</span></div>\n+<div class=\"line\"><a id=\"l00602\" name=\"l00602\"></a><span class=\"lineno\">  602</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00603\" name=\"l00603\"></a><span class=\"lineno\">  603</span>    <span class=\"comment\">//  - Face-varying channels can have a different interpolation modes</span></div>\n+<div class=\"line\"><a id=\"l00604\" name=\"l00604\"></a><span class=\"lineno\">  604</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00605\" name=\"l00605\"></a><span class=\"lineno\">  605</span>    <span class=\"comment\">//  - Unlike &quot;vertex&quot; patches, there are no transition masks required</span></div>\n+<div class=\"line\"><a id=\"l00606\" name=\"l00606\"></a><span class=\"lineno\">  606</span>    <span class=\"comment\">//    for face-varying patches.</span></div>\n+<div class=\"line\"><a id=\"l00607\" name=\"l00607\"></a><span class=\"lineno\">  607</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00608\" name=\"l00608\"></a><span class=\"lineno\">  608</span>    <span class=\"comment\">//  - Face-varying patches still require boundary edge masks.</span></div>\n+<div class=\"line\"><a id=\"l00609\" name=\"l00609\"></a><span class=\"lineno\">  609</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00610\" name=\"l00610\"></a><span class=\"lineno\">  610</span>    <span class=\"comment\">//  - currently most patches with sharp boundaries but smooth interiors have</span></div>\n+<div class=\"line\"><a id=\"l00611\" name=\"l00611\"></a><span class=\"lineno\">  611</span>    <span class=\"comment\">//    to be isolated to level 10 : we need a special type of bicubic patch</span></div>\n+<div class=\"line\"><a id=\"l00612\" name=\"l00612\"></a><span class=\"lineno\">  612</span>    <span class=\"comment\">//    similar to single-crease to resolve this condition without requiring</span></div>\n+<div class=\"line\"><a id=\"l00613\" name=\"l00613\"></a><span class=\"lineno\">  613</span>    <span class=\"comment\">//    isolation if possible</span></div>\n+<div class=\"line\"><a id=\"l00614\" name=\"l00614\"></a><span class=\"lineno\">  614</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00615\" name=\"l00615\"></a><span class=\"lineno\">  615</span>    <span class=\"keyword\">struct </span>FVarPatchChannel {</div>\n+<div class=\"line\"><a id=\"l00616\" name=\"l00616\"></a><span class=\"lineno\">  616</span>        <a class=\"code hl_enumeration\" href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167b\">Sdc::Options::FVarLinearInterpolation</a> interpolation;</div>\n+<div class=\"line\"><a id=\"l00617\" name=\"l00617\"></a><span class=\"lineno\">  617</span> </div>\n+<div class=\"line\"><a id=\"l00618\" name=\"l00618\"></a><span class=\"lineno\">  618</span>        PatchDescriptor regDesc;</div>\n+<div class=\"line\"><a id=\"l00619\" name=\"l00619\"></a><span class=\"lineno\">  619</span>        PatchDescriptor irregDesc;</div>\n+<div class=\"line\"><a id=\"l00620\" name=\"l00620\"></a><span class=\"lineno\">  620</span> </div>\n+<div class=\"line\"><a id=\"l00621\" name=\"l00621\"></a><span class=\"lineno\">  621</span>        <span class=\"keywordtype\">int</span> stride;</div>\n+<div class=\"line\"><a id=\"l00622\" name=\"l00622\"></a><span class=\"lineno\">  622</span> </div>\n+<div class=\"line\"><a id=\"l00623\" name=\"l00623\"></a><span class=\"lineno\">  623</span>        std::vector&lt;Index&gt; patchValues;</div>\n+<div class=\"line\"><a id=\"l00624\" name=\"l00624\"></a><span class=\"lineno\">  624</span>        std::vector&lt;PatchParam&gt; patchParam;</div>\n+<div class=\"line\"><a id=\"l00625\" name=\"l00625\"></a><span class=\"lineno\">  625</span>    };</div>\n+<div class=\"line\"><a id=\"l00626\" name=\"l00626\"></a><span class=\"lineno\">  626</span>    <span class=\"keyword\">typedef</span> std::vector&lt;FVarPatchChannel&gt; FVarPatchChannelVector;</div>\n+<div class=\"line\"><a id=\"l00627\" name=\"l00627\"></a><span class=\"lineno\">  627</span> </div>\n+<div class=\"line\"><a id=\"l00628\" name=\"l00628\"></a><span class=\"lineno\">  628</span>    FVarPatchChannel &amp; getFVarPatchChannel(<span class=\"keywordtype\">int</span> channel);</div>\n+<div class=\"line\"><a id=\"l00629\" name=\"l00629\"></a><span class=\"lineno\">  629</span>    FVarPatchChannel <span class=\"keyword\">const</span> &amp; getFVarPatchChannel(<span class=\"keywordtype\">int</span> channel) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00630\" name=\"l00630\"></a><span class=\"lineno\">  630</span> </div>\n+<div class=\"line\"><a id=\"l00631\" name=\"l00631\"></a><span class=\"lineno\">  631</span>    <span class=\"keywordtype\">void</span> allocateFVarPatchChannels(<span class=\"keywordtype\">int</span> numChannels);</div>\n+<div class=\"line\"><a id=\"l00632\" name=\"l00632\"></a><span class=\"lineno\">  632</span>    <span class=\"keywordtype\">void</span> allocateFVarPatchChannelValues(</div>\n+<div class=\"line\"><a id=\"l00633\" name=\"l00633\"></a><span class=\"lineno\">  633</span>        PatchDescriptor regDesc, PatchDescriptor irregDesc,</div>\n+<div class=\"line\"><a id=\"l00634\" name=\"l00634\"></a><span class=\"lineno\">  634</span>        <span class=\"keywordtype\">int</span> numPatches, <span class=\"keywordtype\">int</span> channel);</div>\n+<div class=\"line\"><a id=\"l00635\" name=\"l00635\"></a><span class=\"lineno\">  635</span> </div>\n+<div class=\"line\"><a id=\"l00636\" name=\"l00636\"></a><span class=\"lineno\">  636</span>    <span class=\"comment\">// deprecated</span></div>\n+<div class=\"line\"><a id=\"l00637\" name=\"l00637\"></a><span class=\"lineno\">  637</span>    <span class=\"keywordtype\">void</span> setFVarPatchChannelLinearInterpolation(</div>\n+<div class=\"line\"><a id=\"l00638\" name=\"l00638\"></a><span class=\"lineno\">  638</span>        <a class=\"code hl_enumeration\" href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167b\">Sdc::Options::FVarLinearInterpolation</a> interpolation, <span class=\"keywordtype\">int</span> channel);</div>\n+<div class=\"line\"><a id=\"l00639\" name=\"l00639\"></a><span class=\"lineno\">  639</span> </div>\n+<div class=\"line\"><a id=\"l00640\" name=\"l00640\"></a><span class=\"lineno\">  640</span>    <a class=\"code hl_typedef\" href=\"a00908.html#a70ecf570850744b0efeeedd7b743e950\">IndexArray</a> getFVarValues(<span class=\"keywordtype\">int</span> channel);</div>\n+<div class=\"line\"><a id=\"l00641\" name=\"l00641\"></a><span class=\"lineno\">  641</span>    <a class=\"code hl_typedef\" href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">ConstIndexArray</a> getPatchFVarValues(<span class=\"keywordtype\">int</span> patch, <span class=\"keywordtype\">int</span> channel) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00642\" name=\"l00642\"></a><span class=\"lineno\">  642</span> </div>\n+<div class=\"line\"><a id=\"l00643\" name=\"l00643\"></a><span class=\"lineno\">  643</span>    <a class=\"code hl_typedef\" href=\"a00908.html#abe07210a029a01571c54276ae28b4d88\">PatchParamArray</a> getFVarPatchParams(<span class=\"keywordtype\">int</span> channel);</div>\n+<div class=\"line\"><a id=\"l00644\" name=\"l00644\"></a><span class=\"lineno\">  644</span>    PatchParam getPatchFVarPatchParam(<span class=\"keywordtype\">int</span> patch, <span class=\"keywordtype\">int</span> channel) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00645\" name=\"l00645\"></a><span class=\"lineno\">  645</span> </div>\n+<div class=\"line\"><a id=\"l00646\" name=\"l00646\"></a><span class=\"lineno\">  646</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00647\" name=\"l00647\"></a><span class=\"lineno\">  647</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00648\" name=\"l00648\"></a><span class=\"lineno\">  648</span>    <span class=\"comment\">//  Simple private class to hold stencil table pointers of varying precision,</span></div>\n+<div class=\"line\"><a id=\"l00649\" name=\"l00649\"></a><span class=\"lineno\">  649</span>    <span class=\"comment\">//  where the discriminant of the precision is external.</span></div>\n+<div class=\"line\"><a id=\"l00650\" name=\"l00650\"></a><span class=\"lineno\">  650</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00651\" name=\"l00651\"></a><span class=\"lineno\">  651</span>    <span class=\"comment\">//  NOTE that this is a simple pointer container and NOT a smart pointer that</span></div>\n+<div class=\"line\"><a id=\"l00652\" name=\"l00652\"></a><span class=\"lineno\">  652</span>    <span class=\"comment\">//  manages the ownership of the object referred to by it.</span></div>\n+<div class=\"line\"><a id=\"l00653\" name=\"l00653\"></a><span class=\"lineno\">  653</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00654\" name=\"l00654\"></a><span class=\"lineno\">  654</span>    <span class=\"keyword\">class </span>StencilTablePtr {</div>\n+<div class=\"line\"><a id=\"l00655\" name=\"l00655\"></a><span class=\"lineno\">  655</span>    <span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00656\" name=\"l00656\"></a><span class=\"lineno\">  656</span>        <span class=\"keyword\">typedef</span> StencilTableReal&lt;float&gt;  float_type;</div>\n+<div class=\"line\"><a id=\"l00657\" name=\"l00657\"></a><span class=\"lineno\">  657</span>        <span class=\"keyword\">typedef</span> StencilTableReal&lt;double&gt; double_type;</div>\n+<div class=\"line\"><a id=\"l00658\" name=\"l00658\"></a><span class=\"lineno\">  658</span> </div>\n+<div class=\"line\"><a id=\"l00659\" name=\"l00659\"></a><span class=\"lineno\">  659</span>        <span class=\"keyword\">union </span>{</div>\n+<div class=\"line\"><a id=\"l00660\" name=\"l00660\"></a><span class=\"lineno\">  660</span>            float_type  * _fPtr;</div>\n+<div class=\"line\"><a id=\"l00661\" name=\"l00661\"></a><span class=\"lineno\">  661</span>            double_type * _dPtr;</div>\n+<div class=\"line\"><a id=\"l00662\" name=\"l00662\"></a><span class=\"lineno\">  662</span>        };</div>\n+<div class=\"line\"><a id=\"l00663\" name=\"l00663\"></a><span class=\"lineno\">  663</span> </div>\n+<div class=\"line\"><a id=\"l00664\" name=\"l00664\"></a><span class=\"lineno\">  664</span>    <span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00665\" name=\"l00665\"></a><span class=\"lineno\">  665</span>        StencilTablePtr()                  { _fPtr = 0; }</div>\n+<div class=\"line\"><a id=\"l00666\" name=\"l00666\"></a><span class=\"lineno\">  666</span>        StencilTablePtr(float_type  * ptr) { _fPtr = ptr; }</div>\n+<div class=\"line\"><a id=\"l00667\" name=\"l00667\"></a><span class=\"lineno\">  667</span>        StencilTablePtr(double_type * ptr) { _dPtr = ptr; }</div>\n+<div class=\"line\"><a id=\"l00668\" name=\"l00668\"></a><span class=\"lineno\">  668</span> </div>\n+<div class=\"line\"><a id=\"l00669\" name=\"l00669\"></a><span class=\"lineno\">  669</span>        <span class=\"keyword\">operator</span> bool()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _fPtr != 0; }</div>\n+<div class=\"line\"><a id=\"l00670\" name=\"l00670\"></a><span class=\"lineno\">  670</span> </div>\n+<div class=\"line\"><a id=\"l00671\" name=\"l00671\"></a><span class=\"lineno\">  671</span>        <span class=\"keywordtype\">void</span> Set()                  { _fPtr = 0; }</div>\n+<div class=\"line\"><a id=\"l00672\" name=\"l00672\"></a><span class=\"lineno\">  672</span>        <span class=\"keywordtype\">void</span> Set(float_type  * ptr) { _fPtr = ptr; }</div>\n+<div class=\"line\"><a id=\"l00673\" name=\"l00673\"></a><span class=\"lineno\">  673</span>        <span class=\"keywordtype\">void</span> Set(double_type * ptr) { _dPtr = ptr; }</div>\n+<div class=\"line\"><a id=\"l00674\" name=\"l00674\"></a><span class=\"lineno\">  674</span> </div>\n+<div class=\"line\"><a id=\"l00675\" name=\"l00675\"></a><span class=\"lineno\">  675</span>        <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt; StencilTableReal&lt;REAL&gt; * Get() <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00676\" name=\"l00676\"></a><span class=\"lineno\">  676</span>    };</div>\n+<div class=\"line\"><a id=\"l00677\" name=\"l00677\"></a><span class=\"lineno\">  677</span> </div>\n+<div class=\"line\"><a id=\"l00678\" name=\"l00678\"></a><span class=\"lineno\">  678</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00679\" name=\"l00679\"></a><span class=\"lineno\">  679</span> </div>\n+<div class=\"line\"><a id=\"l00680\" name=\"l00680\"></a><span class=\"lineno\">  680</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00681\" name=\"l00681\"></a><span class=\"lineno\">  681</span>    <span class=\"comment\">// Topology</span></div>\n+<div class=\"line\"><a id=\"l00682\" name=\"l00682\"></a><span class=\"lineno\">  682</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00683\" name=\"l00683\"></a><span class=\"lineno\">  683</span> </div>\n+<div class=\"line\"><a id=\"l00684\" name=\"l00684\"></a><span class=\"lineno\">  684</span>    <span class=\"keywordtype\">int</span> _maxValence,   <span class=\"comment\">// highest vertex valence found in the mesh</span></div>\n+<div class=\"line\"><a id=\"l00685\" name=\"l00685\"></a><span class=\"lineno\">  685</span>        _numPtexFaces; <span class=\"comment\">// total number of ptex faces</span></div>\n+<div class=\"line\"><a id=\"l00686\" name=\"l00686\"></a><span class=\"lineno\">  686</span> </div>\n+<div class=\"line\"><a id=\"l00687\" name=\"l00687\"></a><span class=\"lineno\">  687</span>    <a class=\"code hl_typedef\" href=\"a00912.html#a98098cd229f60d2397d84a76fe654a31\">PatchArrayVector</a>     _patchArrays;  <span class=\"comment\">// Vector of descriptors for arrays of patches</span></div>\n+<div class=\"line\"><a id=\"l00688\" name=\"l00688\"></a><span class=\"lineno\">  688</span> </div>\n+<div class=\"line\"><a id=\"l00689\" name=\"l00689\"></a><span class=\"lineno\">  689</span>    std::vector&lt;Index&gt;   _patchVerts;   <span class=\"comment\">// Indices of the control vertices of the patches</span></div>\n+<div class=\"line\"><a id=\"l00690\" name=\"l00690\"></a><span class=\"lineno\">  690</span> </div>\n+<div class=\"line\"><a id=\"l00691\" name=\"l00691\"></a><span class=\"lineno\">  691</span>    <a class=\"code hl_typedef\" href=\"a00908.html#a46ea68db89cc3d55c4191ef7648281ce\">PatchParamTable</a>      _paramTable;   <span class=\"comment\">// PatchParam bitfields (one per patch)</span></div>\n+<div class=\"line\"><a id=\"l00692\" name=\"l00692\"></a><span class=\"lineno\">  692</span> </div>\n+<div class=\"line\"><a id=\"l00693\" name=\"l00693\"></a><span class=\"lineno\">  693</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00694\" name=\"l00694\"></a><span class=\"lineno\">  694</span>    <span class=\"comment\">// Extraordinary vertex closed-form evaluation / endcap basis conversion</span></div>\n+<div class=\"line\"><a id=\"l00695\" name=\"l00695\"></a><span class=\"lineno\">  695</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00696\" name=\"l00696\"></a><span class=\"lineno\">  696</span>    <span class=\"comment\">// XXXtakahito: these data will probably be replaced with mask coefficient or something</span></div>\n+<div class=\"line\"><a id=\"l00697\" name=\"l00697\"></a><span class=\"lineno\">  697</span>    <span class=\"comment\">//              SchemeWorker populates.</span></div>\n+<div class=\"line\"><a id=\"l00698\" name=\"l00698\"></a><span class=\"lineno\">  698</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00699\" name=\"l00699\"></a><span class=\"lineno\">  699</span>    <a class=\"code hl_typedef\" href=\"a00993.html#ad71e6ae07059dc39b0550c98cfcee291\">QuadOffsetsTable</a>     _quadOffsetsTable;   <span class=\"comment\">// Quad offsets (for Gregory patches)</span></div>\n+<div class=\"line\"><a id=\"l00700\" name=\"l00700\"></a><span class=\"lineno\">  700</span>    <a class=\"code hl_typedef\" href=\"a00993.html#a2fbf111cac9d122eeaec5c0cb73fa77d\">VertexValenceTable</a>   _vertexValenceTable; <span class=\"comment\">// Vertex valence table (for Gregory patches)</span></div>\n+<div class=\"line\"><a id=\"l00701\" name=\"l00701\"></a><span class=\"lineno\">  701</span> </div>\n+<div class=\"line\"><a id=\"l00702\" name=\"l00702\"></a><span class=\"lineno\">  702</span>    StencilTablePtr _localPointStencils;        <span class=\"comment\">// local point conversion stencils</span></div>\n+<div class=\"line\"><a id=\"l00703\" name=\"l00703\"></a><span class=\"lineno\">  703</span>    StencilTablePtr _localPointVaryingStencils; <span class=\"comment\">// local point varying stencils</span></div>\n+<div class=\"line\"><a id=\"l00704\" name=\"l00704\"></a><span class=\"lineno\">  704</span> </div>\n+<div class=\"line\"><a id=\"l00705\" name=\"l00705\"></a><span class=\"lineno\">  705</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00706\" name=\"l00706\"></a><span class=\"lineno\">  706</span>    <span class=\"comment\">// Varying data</span></div>\n+<div class=\"line\"><a id=\"l00707\" name=\"l00707\"></a><span class=\"lineno\">  707</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00708\" name=\"l00708\"></a><span class=\"lineno\">  708</span>    PatchDescriptor _varyingDesc;</div>\n+<div class=\"line\"><a id=\"l00709\" name=\"l00709\"></a><span class=\"lineno\">  709</span> </div>\n+<div class=\"line\"><a id=\"l00710\" name=\"l00710\"></a><span class=\"lineno\">  710</span>    std::vector&lt;Index&gt;   _varyingVerts;</div>\n+<div class=\"line\"><a id=\"l00711\" name=\"l00711\"></a><span class=\"lineno\">  711</span> </div>\n+<div class=\"line\"><a id=\"l00712\" name=\"l00712\"></a><span class=\"lineno\">  712</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00713\" name=\"l00713\"></a><span class=\"lineno\">  713</span>    <span class=\"comment\">// Face-varying data</span></div>\n+<div class=\"line\"><a id=\"l00714\" name=\"l00714\"></a><span class=\"lineno\">  714</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00715\" name=\"l00715\"></a><span class=\"lineno\">  715</span>    FVarPatchChannelVector _fvarChannels;</div>\n+<div class=\"line\"><a id=\"l00716\" name=\"l00716\"></a><span class=\"lineno\">  716</span> </div>\n+<div class=\"line\"><a id=\"l00717\" name=\"l00717\"></a><span class=\"lineno\">  717</span>    std::vector&lt;StencilTablePtr&gt; _localPointFaceVaryingStencils;</div>\n+<div class=\"line\"><a id=\"l00718\" name=\"l00718\"></a><span class=\"lineno\">  718</span> </div>\n+<div class=\"line\"><a id=\"l00719\" name=\"l00719\"></a><span class=\"lineno\">  719</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00720\" name=\"l00720\"></a><span class=\"lineno\">  720</span>    <span class=\"comment\">// &#39;single-crease&#39; patch sharpness tables</span></div>\n+<div class=\"line\"><a id=\"l00721\" name=\"l00721\"></a><span class=\"lineno\">  721</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00722\" name=\"l00722\"></a><span class=\"lineno\">  722</span>    std::vector&lt;Index&gt;   _sharpnessIndices; <span class=\"comment\">// Indices of single-crease sharpness (one per patch)</span></div>\n+<div class=\"line\"><a id=\"l00723\" name=\"l00723\"></a><span class=\"lineno\">  723</span>    std::vector&lt;float&gt;   _sharpnessValues;  <span class=\"comment\">// Sharpness values.</span></div>\n+<div class=\"line\"><a id=\"l00724\" name=\"l00724\"></a><span class=\"lineno\">  724</span> </div>\n+<div class=\"line\"><a id=\"l00725\" name=\"l00725\"></a><span class=\"lineno\">  725</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00726\" name=\"l00726\"></a><span class=\"lineno\">  726</span>    <span class=\"comment\">//  Construction history -- relevant to at least one public query:</span></div>\n+<div class=\"line\"><a id=\"l00727\" name=\"l00727\"></a><span class=\"lineno\">  727</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00728\" name=\"l00728\"></a><span class=\"lineno\">  728</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> _isUniformLinear : 1;</div>\n+<div class=\"line\"><a id=\"l00729\" name=\"l00729\"></a><span class=\"lineno\">  729</span> </div>\n+<div class=\"line\"><a id=\"l00730\" name=\"l00730\"></a><span class=\"lineno\">  730</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00731\" name=\"l00731\"></a><span class=\"lineno\">  731</span>    <span class=\"comment\">//  Precision -- only applies to local-point stencil tables</span></div>\n+<div class=\"line\"><a id=\"l00732\" name=\"l00732\"></a><span class=\"lineno\">  732</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00733\" name=\"l00733\"></a><span class=\"lineno\">  733</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> _vertexPrecisionIsDouble      : 1;</div>\n+<div class=\"line\"><a id=\"l00734\" name=\"l00734\"></a><span class=\"lineno\">  734</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> _varyingPrecisionIsDouble     : 1;</div>\n+<div class=\"line\"><a id=\"l00735\" name=\"l00735\"></a><span class=\"lineno\">  735</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> _faceVaryingPrecisionIsDouble : 1;</div>\n+<div class=\"line\"><a id=\"l00736\" name=\"l00736\"></a><span class=\"lineno\">  736</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00737\" name=\"l00737\"></a><span class=\"lineno\">  737</span> </div>\n+<div class=\"line\"><a id=\"l00738\" name=\"l00738\"></a><span class=\"lineno\">  738</span> </div>\n+<div class=\"line\"><a id=\"l00739\" name=\"l00739\"></a><span class=\"lineno\">  739</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00740\" name=\"l00740\"></a><span class=\"lineno\">  740</span><span class=\"comment\">//  Template specializations for float/double -- to be defined before used:</span></div>\n+<div class=\"line\"><a id=\"l00741\" name=\"l00741\"></a><span class=\"lineno\">  741</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00742\" name=\"l00742\"></a><span class=\"lineno\">  742</span><span class=\"keyword\">template</span> &lt;&gt; <span class=\"keyword\">inline</span> StencilTableReal&lt;float&gt; *</div>\n+<div class=\"line\"><a id=\"l00743\" name=\"l00743\"></a><span class=\"lineno\">  743</span>PatchTable::StencilTablePtr::Get&lt;float&gt;()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _fPtr; }</div>\n+<div class=\"line\"><a id=\"l00744\" name=\"l00744\"></a><span class=\"lineno\">  744</span> </div>\n+<div class=\"line\"><a id=\"l00745\" name=\"l00745\"></a><span class=\"lineno\">  745</span><span class=\"keyword\">template</span> &lt;&gt; <span class=\"keyword\">inline</span> StencilTableReal&lt;double&gt; *</div>\n+<div class=\"line\"><a id=\"l00746\" name=\"l00746\"></a><span class=\"lineno\">  746</span>PatchTable::StencilTablePtr::Get&lt;double&gt;()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _dPtr; }</div>\n+<div class=\"line\"><a id=\"l00747\" name=\"l00747\"></a><span class=\"lineno\">  747</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00748\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00748\" name=\"l00748\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a24c2f632253c21d97fdba264ac2635a9\">  748</a></span><span class=\"keyword\">template</span> &lt;&gt; <span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span></div>\n+<div class=\"line\"><a id=\"l00749\" name=\"l00749\"></a><span class=\"lineno\">  749</span>PatchTable::LocalPointStencilPrecisionMatchesType&lt;float&gt;()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00750\" name=\"l00750\"></a><span class=\"lineno\">  750</span>    <span class=\"keywordflow\">return</span> !_vertexPrecisionIsDouble;</div>\n+<div class=\"line\"><a id=\"l00751\" name=\"l00751\"></a><span class=\"lineno\">  751</span>}</div>\n+</div>\n+<div class=\"foldopen\" id=\"foldopen00752\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00752\" name=\"l00752\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#af22fd3afdc99098cc89463f530de5011\">  752</a></span><span class=\"keyword\">template</span> &lt;&gt; <span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span></div>\n+<div class=\"line\"><a id=\"l00753\" name=\"l00753\"></a><span class=\"lineno\">  753</span>PatchTable::LocalPointVaryingStencilPrecisionMatchesType&lt;float&gt;()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00754\" name=\"l00754\"></a><span class=\"lineno\">  754</span>    <span class=\"keywordflow\">return</span> !_varyingPrecisionIsDouble;</div>\n+<div class=\"line\"><a id=\"l00755\" name=\"l00755\"></a><span class=\"lineno\">  755</span>}</div>\n+</div>\n+<div class=\"foldopen\" id=\"foldopen00756\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00756\" name=\"l00756\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a4814cce8e9b999c4dbb64bcf09ab73e1\">  756</a></span><span class=\"keyword\">template</span> &lt;&gt; <span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span></div>\n+<div class=\"line\"><a id=\"l00757\" name=\"l00757\"></a><span class=\"lineno\">  757</span>PatchTable::LocalPointFaceVaryingStencilPrecisionMatchesType&lt;float&gt;()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00758\" name=\"l00758\"></a><span class=\"lineno\">  758</span>    <span class=\"keywordflow\">return</span> !_faceVaryingPrecisionIsDouble;</div>\n+<div class=\"line\"><a id=\"l00759\" name=\"l00759\"></a><span class=\"lineno\">  759</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00760\" name=\"l00760\"></a><span class=\"lineno\">  760</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00761\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00761\" name=\"l00761\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a24c2f632253c21d97fdba264ac2635a9\">  761</a></span><span class=\"keyword\">template</span> &lt;&gt; <span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span></div>\n+<div class=\"line\"><a id=\"l00762\" name=\"l00762\"></a><span class=\"lineno\">  762</span>PatchTable::LocalPointStencilPrecisionMatchesType&lt;double&gt;()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00763\" name=\"l00763\"></a><span class=\"lineno\">  763</span>    <span class=\"keywordflow\">return</span> _vertexPrecisionIsDouble;</div>\n+<div class=\"line\"><a id=\"l00764\" name=\"l00764\"></a><span class=\"lineno\">  764</span>}</div>\n+</div>\n+<div class=\"foldopen\" id=\"foldopen00765\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00765\" name=\"l00765\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#af22fd3afdc99098cc89463f530de5011\">  765</a></span><span class=\"keyword\">template</span> &lt;&gt; <span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span></div>\n+<div class=\"line\"><a id=\"l00766\" name=\"l00766\"></a><span class=\"lineno\">  766</span>PatchTable::LocalPointVaryingStencilPrecisionMatchesType&lt;double&gt;()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00767\" name=\"l00767\"></a><span class=\"lineno\">  767</span>    <span class=\"keywordflow\">return</span> _varyingPrecisionIsDouble;</div>\n+<div class=\"line\"><a id=\"l00768\" name=\"l00768\"></a><span class=\"lineno\">  768</span>}</div>\n+</div>\n+<div class=\"foldopen\" id=\"foldopen00769\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00769\" name=\"l00769\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a4814cce8e9b999c4dbb64bcf09ab73e1\">  769</a></span><span class=\"keyword\">template</span> &lt;&gt; <span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span></div>\n+<div class=\"line\"><a id=\"l00770\" name=\"l00770\"></a><span class=\"lineno\">  770</span>PatchTable::LocalPointFaceVaryingStencilPrecisionMatchesType&lt;double&gt;()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00771\" name=\"l00771\"></a><span class=\"lineno\">  771</span>    <span class=\"keywordflow\">return</span> _faceVaryingPrecisionIsDouble;</div>\n+<div class=\"line\"><a id=\"l00772\" name=\"l00772\"></a><span class=\"lineno\">  772</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00773\" name=\"l00773\"></a><span class=\"lineno\">  773</span> </div>\n+<div class=\"line\"><a id=\"l00774\" name=\"l00774\"></a><span class=\"lineno\">  774</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00775\" name=\"l00775\"></a><span class=\"lineno\">  775</span><span class=\"comment\">//  StencilTable access -- backward compatible and generic:</span></div>\n+<div class=\"line\"><a id=\"l00776\" name=\"l00776\"></a><span class=\"lineno\">  776</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00777\" name=\"l00777\"></a><span class=\"lineno\">  777</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const</span> *</div>\n+<div class=\"foldopen\" id=\"foldopen00778\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00778\" name=\"l00778\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a1d27edb01bfb68ba50776b25aa437783\">  778</a></span><a class=\"code hl_function\" href=\"a00993.html#a1d27edb01bfb68ba50776b25aa437783\">PatchTable::GetLocalPointStencilTable</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00779\" name=\"l00779\"></a><span class=\"lineno\">  779</span>    assert(LocalPointStencilPrecisionMatchesType&lt;float&gt;());</div>\n+<div class=\"line\"><a id=\"l00780\" name=\"l00780\"></a><span class=\"lineno\">  780</span>    <span class=\"keywordflow\">return</span> <span class=\"keyword\">static_cast&lt;</span><a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">&gt;</span>(_localPointStencils.Get&lt;<span class=\"keywordtype\">float</span>&gt;());</div>\n+<div class=\"line\"><a id=\"l00781\" name=\"l00781\"></a><span class=\"lineno\">  781</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00782\" name=\"l00782\"></a><span class=\"lineno\">  782</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const</span> *</div>\n+<div class=\"foldopen\" id=\"foldopen00783\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00783\" name=\"l00783\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#ad6bafe91da1dcf5b8fb1f7c8cb4ed619\">  783</a></span><a class=\"code hl_function\" href=\"a00993.html#ad6bafe91da1dcf5b8fb1f7c8cb4ed619\">PatchTable::GetLocalPointVaryingStencilTable</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00784\" name=\"l00784\"></a><span class=\"lineno\">  784</span>    assert(LocalPointVaryingStencilPrecisionMatchesType&lt;float&gt;());</div>\n+<div class=\"line\"><a id=\"l00785\" name=\"l00785\"></a><span class=\"lineno\">  785</span>    <span class=\"keywordflow\">return</span> <span class=\"keyword\">static_cast&lt;</span><a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">&gt;</span>(</div>\n+<div class=\"line\"><a id=\"l00786\" name=\"l00786\"></a><span class=\"lineno\">  786</span>            _localPointVaryingStencils.Get&lt;<span class=\"keywordtype\">float</span>&gt;());</div>\n+<div class=\"line\"><a id=\"l00787\" name=\"l00787\"></a><span class=\"lineno\">  787</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00788\" name=\"l00788\"></a><span class=\"lineno\">  788</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const</span> *</div>\n+<div class=\"foldopen\" id=\"foldopen00789\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00789\" name=\"l00789\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a523e2a6f899aede5166441b14efa348a\">  789</a></span><a class=\"code hl_function\" href=\"a00993.html#a523e2a6f899aede5166441b14efa348a\">PatchTable::GetLocalPointFaceVaryingStencilTable</a>(<span class=\"keywordtype\">int</span> channel)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00790\" name=\"l00790\"></a><span class=\"lineno\">  790</span>    assert(LocalPointFaceVaryingStencilPrecisionMatchesType&lt;float&gt;());</div>\n+<div class=\"line\"><a id=\"l00791\" name=\"l00791\"></a><span class=\"lineno\">  791</span>    <span class=\"keywordflow\">if</span> (channel &gt;= 0 &amp;&amp; channel &lt; (<span class=\"keywordtype\">int</span>)_localPointFaceVaryingStencils.size()) {</div>\n+<div class=\"line\"><a id=\"l00792\" name=\"l00792\"></a><span class=\"lineno\">  792</span>        <span class=\"keywordflow\">return</span> <span class=\"keyword\">static_cast&lt;</span><a class=\"code hl_class\" href=\"a01065.html\">StencilTable</a> <span class=\"keyword\">const </span>*<span class=\"keyword\">&gt;</span>(</div>\n+<div class=\"line\"><a id=\"l00793\" name=\"l00793\"></a><span class=\"lineno\">  793</span>                _localPointFaceVaryingStencils[channel].Get&lt;<span class=\"keywordtype\">float</span>&gt;());</div>\n+<div class=\"line\"><a id=\"l00794\" name=\"l00794\"></a><span class=\"lineno\">  794</span>    }</div>\n+<div class=\"line\"><a id=\"l00795\" name=\"l00795\"></a><span class=\"lineno\">  795</span>    <span class=\"keywordflow\">return</span> NULL;</div>\n+<div class=\"line\"><a id=\"l00796\" name=\"l00796\"></a><span class=\"lineno\">  796</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00797\" name=\"l00797\"></a><span class=\"lineno\">  797</span> </div>\n+<div class=\"line\"><a id=\"l00798\" name=\"l00798\"></a><span class=\"lineno\">  798</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00799\" name=\"l00799\"></a><span class=\"lineno\">  799</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a01061.html\">StencilTableReal&lt;REAL&gt;</a> <span class=\"keyword\">const</span> *</div>\n+<div class=\"foldopen\" id=\"foldopen00800\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00800\" name=\"l00800\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a1c85ed58e2e3362dd22fbdb815f2c5a3\">  800</a></span><a class=\"code hl_function\" href=\"a00993.html#a1d27edb01bfb68ba50776b25aa437783\">PatchTable::GetLocalPointStencilTable</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00801\" name=\"l00801\"></a><span class=\"lineno\">  801</span>    assert(LocalPointStencilPrecisionMatchesType&lt;REAL&gt;());</div>\n+<div class=\"line\"><a id=\"l00802\" name=\"l00802\"></a><span class=\"lineno\">  802</span>    <span class=\"keywordflow\">return</span> _localPointStencils.Get&lt;REAL&gt;();</div>\n+<div class=\"line\"><a id=\"l00803\" name=\"l00803\"></a><span class=\"lineno\">  803</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00804\" name=\"l00804\"></a><span class=\"lineno\">  804</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00805\" name=\"l00805\"></a><span class=\"lineno\">  805</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a01061.html\">StencilTableReal&lt;REAL&gt;</a> <span class=\"keyword\">const</span> *</div>\n+<div class=\"foldopen\" id=\"foldopen00806\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00806\" name=\"l00806\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#af903f44e0f0743652b5f465ff60492a2\">  806</a></span><a class=\"code hl_function\" href=\"a00993.html#ad6bafe91da1dcf5b8fb1f7c8cb4ed619\">PatchTable::GetLocalPointVaryingStencilTable</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00807\" name=\"l00807\"></a><span class=\"lineno\">  807</span>    assert(LocalPointVaryingStencilPrecisionMatchesType&lt;REAL&gt;());</div>\n+<div class=\"line\"><a id=\"l00808\" name=\"l00808\"></a><span class=\"lineno\">  808</span>    <span class=\"keywordflow\">return</span> _localPointVaryingStencils.Get&lt;REAL&gt;();</div>\n+<div class=\"line\"><a id=\"l00809\" name=\"l00809\"></a><span class=\"lineno\">  809</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00810\" name=\"l00810\"></a><span class=\"lineno\">  810</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00811\" name=\"l00811\"></a><span class=\"lineno\">  811</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a01061.html\">StencilTableReal&lt;REAL&gt;</a> <span class=\"keyword\">const</span> *</div>\n+<div class=\"foldopen\" id=\"foldopen00812\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00812\" name=\"l00812\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a56a6ad825eff8823aee85348b73e70f7\">  812</a></span><a class=\"code hl_function\" href=\"a00993.html#a523e2a6f899aede5166441b14efa348a\">PatchTable::GetLocalPointFaceVaryingStencilTable</a>(<span class=\"keywordtype\">int</span> channel)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00813\" name=\"l00813\"></a><span class=\"lineno\">  813</span>    assert(LocalPointFaceVaryingStencilPrecisionMatchesType&lt;REAL&gt;());</div>\n+<div class=\"line\"><a id=\"l00814\" name=\"l00814\"></a><span class=\"lineno\">  814</span>    <span class=\"keywordflow\">if</span> (channel &gt;= 0 &amp;&amp; channel &lt; (<span class=\"keywordtype\">int</span>)_localPointFaceVaryingStencils.size()) {</div>\n+<div class=\"line\"><a id=\"l00815\" name=\"l00815\"></a><span class=\"lineno\">  815</span>        <span class=\"keywordflow\">return</span> _localPointFaceVaryingStencils[channel].Get&lt;REAL&gt;();</div>\n+<div class=\"line\"><a id=\"l00816\" name=\"l00816\"></a><span class=\"lineno\">  816</span>    }</div>\n+<div class=\"line\"><a id=\"l00817\" name=\"l00817\"></a><span class=\"lineno\">  817</span>    <span class=\"keywordflow\">return</span> NULL;</div>\n+<div class=\"line\"><a id=\"l00818\" name=\"l00818\"></a><span class=\"lineno\">  818</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00819\" name=\"l00819\"></a><span class=\"lineno\">  819</span> </div>\n+<div class=\"line\"><a id=\"l00820\" name=\"l00820\"></a><span class=\"lineno\">  820</span> </div>\n+<div class=\"line\"><a id=\"l00821\" name=\"l00821\"></a><span class=\"lineno\">  821</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00822\" name=\"l00822\"></a><span class=\"lineno\">  822</span><span class=\"comment\">//  Computation of local point values:</span></div>\n+<div class=\"line\"><a id=\"l00823\" name=\"l00823\"></a><span class=\"lineno\">  823</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00824\" name=\"l00824\"></a><span class=\"lineno\">  824</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T&gt;</div>\n+<div class=\"line\"><a id=\"l00825\" name=\"l00825\"></a><span class=\"lineno\">  825</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00826\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00826\" name=\"l00826\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a7dcb88c32ded6c233f129d7b6fb7a159\">  826</a></span><a class=\"code hl_function\" href=\"a00993.html#a7dcb88c32ded6c233f129d7b6fb7a159\">PatchTable::ComputeLocalPointValues</a>(T <span class=\"keyword\">const</span> *src, T *dst)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00827\" name=\"l00827\"></a><span class=\"lineno\">  827</span>    assert(LocalPointStencilPrecisionMatchesType&lt;float&gt;());</div>\n+<div class=\"line\"><a id=\"l00828\" name=\"l00828\"></a><span class=\"lineno\">  828</span>    <span class=\"keywordflow\">if</span> (_localPointStencils) {</div>\n+<div class=\"line\"><a id=\"l00829\" name=\"l00829\"></a><span class=\"lineno\">  829</span>        _localPointStencils.Get&lt;<span class=\"keywordtype\">float</span>&gt;()-&gt;UpdateValues(src, dst);</div>\n+<div class=\"line\"><a id=\"l00830\" name=\"l00830\"></a><span class=\"lineno\">  830</span>    }</div>\n+<div class=\"line\"><a id=\"l00831\" name=\"l00831\"></a><span class=\"lineno\">  831</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00832\" name=\"l00832\"></a><span class=\"lineno\">  832</span> </div>\n+<div class=\"line\"><a id=\"l00833\" name=\"l00833\"></a><span class=\"lineno\">  833</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T&gt;</div>\n+<div class=\"line\"><a id=\"l00834\" name=\"l00834\"></a><span class=\"lineno\">  834</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00835\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00835\" name=\"l00835\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a08ccda63d26e5b06957be5f5eec75d01\">  835</a></span><a class=\"code hl_function\" href=\"a00993.html#a08ccda63d26e5b06957be5f5eec75d01\">PatchTable::ComputeLocalPointValuesVarying</a>(T <span class=\"keyword\">const</span> *src, T *dst)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00836\" name=\"l00836\"></a><span class=\"lineno\">  836</span>    assert(LocalPointVaryingStencilPrecisionMatchesType&lt;float&gt;());</div>\n+<div class=\"line\"><a id=\"l00837\" name=\"l00837\"></a><span class=\"lineno\">  837</span>    <span class=\"keywordflow\">if</span> (_localPointVaryingStencils) {</div>\n+<div class=\"line\"><a id=\"l00838\" name=\"l00838\"></a><span class=\"lineno\">  838</span>        _localPointVaryingStencils.Get&lt;<span class=\"keywordtype\">float</span>&gt;()-&gt;UpdateValues(src, dst);</div>\n+<div class=\"line\"><a id=\"l00839\" name=\"l00839\"></a><span class=\"lineno\">  839</span>    }</div>\n+<div class=\"line\"><a id=\"l00840\" name=\"l00840\"></a><span class=\"lineno\">  840</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00841\" name=\"l00841\"></a><span class=\"lineno\">  841</span> </div>\n+<div class=\"line\"><a id=\"l00842\" name=\"l00842\"></a><span class=\"lineno\">  842</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T&gt;</div>\n+<div class=\"line\"><a id=\"l00843\" name=\"l00843\"></a><span class=\"lineno\">  843</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00844\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00844\" name=\"l00844\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a059c9506f9ef8ebf24a68fc298be58be\">  844</a></span><a class=\"code hl_function\" href=\"a00993.html#a059c9506f9ef8ebf24a68fc298be58be\">PatchTable::ComputeLocalPointValuesFaceVarying</a>(T <span class=\"keyword\">const</span> *src, T *dst, <span class=\"keywordtype\">int</span> channel)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00845\" name=\"l00845\"></a><span class=\"lineno\">  845</span>    assert(LocalPointFaceVaryingStencilPrecisionMatchesType&lt;float&gt;());</div>\n+<div class=\"line\"><a id=\"l00846\" name=\"l00846\"></a><span class=\"lineno\">  846</span>    <span class=\"keywordflow\">if</span> (channel &gt;= 0 &amp;&amp; channel &lt; (<span class=\"keywordtype\">int</span>)_localPointFaceVaryingStencils.size()) {</div>\n+<div class=\"line\"><a id=\"l00847\" name=\"l00847\"></a><span class=\"lineno\">  847</span>        <span class=\"keywordflow\">if</span> (_localPointFaceVaryingStencils[channel]) {</div>\n+<div class=\"line\"><a id=\"l00848\" name=\"l00848\"></a><span class=\"lineno\">  848</span>            _localPointFaceVaryingStencils[channel].Get&lt;<span class=\"keywordtype\">float</span>&gt;()-&gt;UpdateValues(src, dst);</div>\n+<div class=\"line\"><a id=\"l00849\" name=\"l00849\"></a><span class=\"lineno\">  849</span>        }</div>\n+<div class=\"line\"><a id=\"l00850\" name=\"l00850\"></a><span class=\"lineno\">  850</span>    }</div>\n+<div class=\"line\"><a id=\"l00851\" name=\"l00851\"></a><span class=\"lineno\">  851</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00852\" name=\"l00852\"></a><span class=\"lineno\">  852</span> </div>\n+<div class=\"line\"><a id=\"l00853\" name=\"l00853\"></a><span class=\"lineno\">  853</span> </div>\n+<div class=\"line\"><a id=\"l00854\" name=\"l00854\"></a><span class=\"lineno\">  854</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00855\" name=\"l00855\"></a><span class=\"lineno\">  855</span><span class=\"comment\">//  Basis evaluation overloads</span></div>\n+<div class=\"line\"><a id=\"l00856\" name=\"l00856\"></a><span class=\"lineno\">  856</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00857\" name=\"l00857\"></a><span class=\"lineno\">  857</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00858\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00858\" name=\"l00858\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a3c912c55ec0579d5f16fb2946a9e7f72\">  858</a></span><a class=\"code hl_function\" href=\"a00993.html#ab8a09f15edef57b9b4aed0d0d6183b75\">PatchTable::EvaluateBasis</a>(<a class=\"code hl_class\" href=\"a00997.html\">PatchHandle</a> <span class=\"keyword\">const</span> &amp; handle, <span class=\"keywordtype\">float</span> u, <span class=\"keywordtype\">float</span> v,</div>\n+<div class=\"line\"><a id=\"l00859\" name=\"l00859\"></a><span class=\"lineno\">  859</span>    <span class=\"keywordtype\">float</span> wP[], <span class=\"keywordtype\">float</span> wDu[], <span class=\"keywordtype\">float</span> wDv[],</div>\n+<div class=\"line\"><a id=\"l00860\" name=\"l00860\"></a><span class=\"lineno\">  860</span>    <span class=\"keywordtype\">float</span> wDuu[], <span class=\"keywordtype\">float</span> wDuv[], <span class=\"keywordtype\">float</span> wDvv[])<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00861\" name=\"l00861\"></a><span class=\"lineno\">  861</span> </div>\n+<div class=\"line\"><a id=\"l00862\" name=\"l00862\"></a><span class=\"lineno\">  862</span>    EvaluateBasis&lt;float&gt;(handle, u, v, wP, wDu, wDv, wDuu, wDuv, wDvv);</div>\n+<div class=\"line\"><a id=\"l00863\" name=\"l00863\"></a><span class=\"lineno\">  863</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00864\" name=\"l00864\"></a><span class=\"lineno\">  864</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00865\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00865\" name=\"l00865\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a80a3dced9165fc1a8a9bdbfe6b6111a4\">  865</a></span><a class=\"code hl_function\" href=\"a00993.html#ab8a09f15edef57b9b4aed0d0d6183b75\">PatchTable::EvaluateBasis</a>(<a class=\"code hl_class\" href=\"a00997.html\">PatchHandle</a> <span class=\"keyword\">const</span> &amp; handle, <span class=\"keywordtype\">double</span> u, <span class=\"keywordtype\">double</span> v,</div>\n+<div class=\"line\"><a id=\"l00866\" name=\"l00866\"></a><span class=\"lineno\">  866</span>    <span class=\"keywordtype\">double</span> wP[], <span class=\"keywordtype\">double</span> wDu[], <span class=\"keywordtype\">double</span> wDv[],</div>\n+<div class=\"line\"><a id=\"l00867\" name=\"l00867\"></a><span class=\"lineno\">  867</span>    <span class=\"keywordtype\">double</span> wDuu[], <span class=\"keywordtype\">double</span> wDuv[], <span class=\"keywordtype\">double</span> wDvv[])<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00868\" name=\"l00868\"></a><span class=\"lineno\">  868</span> </div>\n+<div class=\"line\"><a id=\"l00869\" name=\"l00869\"></a><span class=\"lineno\">  869</span>    EvaluateBasis&lt;double&gt;(handle, u, v, wP, wDu, wDv, wDuu, wDuv, wDvv);</div>\n+<div class=\"line\"><a id=\"l00870\" name=\"l00870\"></a><span class=\"lineno\">  870</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00871\" name=\"l00871\"></a><span class=\"lineno\">  871</span> </div>\n+<div class=\"line\"><a id=\"l00872\" name=\"l00872\"></a><span class=\"lineno\">  872</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00873\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00873\" name=\"l00873\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#a30c6cda6c630d6823cdcc718e79a99ca\">  873</a></span><a class=\"code hl_function\" href=\"a00993.html#ad690cee703683b70def7a4419120cc9a\">PatchTable::EvaluateBasisVarying</a>(<a class=\"code hl_class\" href=\"a00997.html\">PatchHandle</a> <span class=\"keyword\">const</span> &amp; handle, <span class=\"keywordtype\">float</span> u, <span class=\"keywordtype\">float</span> v,</div>\n+<div class=\"line\"><a id=\"l00874\" name=\"l00874\"></a><span class=\"lineno\">  874</span>    <span class=\"keywordtype\">float</span> wP[], <span class=\"keywordtype\">float</span> wDu[], <span class=\"keywordtype\">float</span> wDv[],</div>\n+<div class=\"line\"><a id=\"l00875\" name=\"l00875\"></a><span class=\"lineno\">  875</span>    <span class=\"keywordtype\">float</span> wDuu[], <span class=\"keywordtype\">float</span> wDuv[], <span class=\"keywordtype\">float</span> wDvv[])<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00876\" name=\"l00876\"></a><span class=\"lineno\">  876</span> </div>\n+<div class=\"line\"><a id=\"l00877\" name=\"l00877\"></a><span class=\"lineno\">  877</span>    EvaluateBasisVarying&lt;float&gt;(handle, u, v, wP, wDu, wDv, wDuu, wDuv, wDvv);</div>\n+<div class=\"line\"><a id=\"l00878\" name=\"l00878\"></a><span class=\"lineno\">  878</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00879\" name=\"l00879\"></a><span class=\"lineno\">  879</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00880\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00880\" name=\"l00880\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#ac326c7af7f135ba41829dd20bd1c2f34\">  880</a></span><a class=\"code hl_function\" href=\"a00993.html#ad690cee703683b70def7a4419120cc9a\">PatchTable::EvaluateBasisVarying</a>(<a class=\"code hl_class\" href=\"a00997.html\">PatchHandle</a> <span class=\"keyword\">const</span> &amp; handle, <span class=\"keywordtype\">double</span> u, <span class=\"keywordtype\">double</span> v,</div>\n+<div class=\"line\"><a id=\"l00881\" name=\"l00881\"></a><span class=\"lineno\">  881</span>    <span class=\"keywordtype\">double</span> wP[], <span class=\"keywordtype\">double</span> wDu[], <span class=\"keywordtype\">double</span> wDv[],</div>\n+<div class=\"line\"><a id=\"l00882\" name=\"l00882\"></a><span class=\"lineno\">  882</span>    <span class=\"keywordtype\">double</span> wDuu[], <span class=\"keywordtype\">double</span> wDuv[], <span class=\"keywordtype\">double</span> wDvv[])<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00883\" name=\"l00883\"></a><span class=\"lineno\">  883</span> </div>\n+<div class=\"line\"><a id=\"l00884\" name=\"l00884\"></a><span class=\"lineno\">  884</span>    EvaluateBasisVarying&lt;double&gt;(handle, u, v, wP, wDu, wDv, wDuu, wDuv, wDvv);</div>\n+<div class=\"line\"><a id=\"l00885\" name=\"l00885\"></a><span class=\"lineno\">  885</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00886\" name=\"l00886\"></a><span class=\"lineno\">  886</span> </div>\n+<div class=\"line\"><a id=\"l00887\" name=\"l00887\"></a><span class=\"lineno\">  887</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00888\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00888\" name=\"l00888\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#aa78873a43e9f5b599cba62356882d0a5\">  888</a></span><a class=\"code hl_function\" href=\"a00993.html#a64fe119d6034e4b1f39e81d39ad9dfc4\">PatchTable::EvaluateBasisFaceVarying</a>(<a class=\"code hl_class\" href=\"a00997.html\">PatchHandle</a> <span class=\"keyword\">const</span> &amp; handle, <span class=\"keywordtype\">float</span> u, <span class=\"keywordtype\">float</span> v,</div>\n+<div class=\"line\"><a id=\"l00889\" name=\"l00889\"></a><span class=\"lineno\">  889</span>    <span class=\"keywordtype\">float</span> wP[], <span class=\"keywordtype\">float</span> wDu[], <span class=\"keywordtype\">float</span> wDv[],</div>\n+<div class=\"line\"><a id=\"l00890\" name=\"l00890\"></a><span class=\"lineno\">  890</span>    <span class=\"keywordtype\">float</span> wDuu[], <span class=\"keywordtype\">float</span> wDuv[], <span class=\"keywordtype\">float</span> wDvv[], <span class=\"keywordtype\">int</span> channel)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00891\" name=\"l00891\"></a><span class=\"lineno\">  891</span> </div>\n+<div class=\"line\"><a id=\"l00892\" name=\"l00892\"></a><span class=\"lineno\">  892</span>    EvaluateBasisFaceVarying&lt;float&gt;(handle, u, v, wP, wDu, wDv, wDuu, wDuv, wDvv, channel);</div>\n+<div class=\"line\"><a id=\"l00893\" name=\"l00893\"></a><span class=\"lineno\">  893</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00894\" name=\"l00894\"></a><span class=\"lineno\">  894</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00895\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00895\" name=\"l00895\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00993.html#aa09810ac68ebdc45a1e4b1a2bb657bdd\">  895</a></span><a class=\"code hl_function\" href=\"a00993.html#a64fe119d6034e4b1f39e81d39ad9dfc4\">PatchTable::EvaluateBasisFaceVarying</a>(<a class=\"code hl_class\" href=\"a00997.html\">PatchHandle</a> <span class=\"keyword\">const</span> &amp; handle, <span class=\"keywordtype\">double</span> u, <span class=\"keywordtype\">double</span> v,</div>\n+<div class=\"line\"><a id=\"l00896\" name=\"l00896\"></a><span class=\"lineno\">  896</span>    <span class=\"keywordtype\">double</span> wP[], <span class=\"keywordtype\">double</span> wDu[], <span class=\"keywordtype\">double</span> wDv[],</div>\n+<div class=\"line\"><a id=\"l00897\" name=\"l00897\"></a><span class=\"lineno\">  897</span>    <span class=\"keywordtype\">double</span> wDuu[], <span class=\"keywordtype\">double</span> wDuv[], <span class=\"keywordtype\">double</span> wDvv[], <span class=\"keywordtype\">int</span> channel)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00898\" name=\"l00898\"></a><span class=\"lineno\">  898</span> </div>\n+<div class=\"line\"><a id=\"l00899\" name=\"l00899\"></a><span class=\"lineno\">  899</span>    EvaluateBasisFaceVarying&lt;double&gt;(handle, u, v, wP, wDu, wDv, wDuu, wDuv, wDvv, channel);</div>\n+<div class=\"line\"><a id=\"l00900\" name=\"l00900\"></a><span class=\"lineno\">  900</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00901\" name=\"l00901\"></a><span class=\"lineno\">  901</span> </div>\n+<div class=\"line\"><a id=\"l00902\" name=\"l00902\"></a><span class=\"lineno\">  902</span>} <span class=\"comment\">// end namespace Far</span></div>\n+<div class=\"line\"><a id=\"l00903\" name=\"l00903\"></a><span class=\"lineno\">  903</span> </div>\n+<div class=\"line\"><a id=\"l00904\" name=\"l00904\"></a><span class=\"lineno\">  904</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00905\" name=\"l00905\"></a><span class=\"lineno\">  905</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00906\" name=\"l00906\"></a><span class=\"lineno\">  906</span> </div>\n+<div class=\"line\"><a id=\"l00907\" name=\"l00907\"></a><span class=\"lineno\">  907</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l00908\" name=\"l00908\"></a><span class=\"lineno\">  908</span> </div>\n+<div class=\"line\"><a id=\"l00909\" name=\"l00909\"></a><span class=\"lineno\">  909</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_FAR_PATCH_TABLE */</span><span class=\"preprocessor\"></span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa00908_html_a35788aa710e3f7e277e5f0b008d76d61\"><div class=\"ttname\"><a href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">OpenSubdiv::OPENSUBDIV_VERSION::Far::ConstIndexArray</a></div><div class=\"ttdeci\">Vtr::ConstIndexArray ConstIndexArray</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01486_source.html#l00047\">types.h:47</a></div></div>\n+<div class=\"ttc\" id=\"aa00908_html_a46ea68db89cc3d55c4191ef7648281ce\"><div class=\"ttname\"><a href=\"a00908.html#a46ea68db89cc3d55c4191ef7648281ce\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchParamTable</a></div><div class=\"ttdeci\">std::vector&lt; PatchParam &gt; PatchParamTable</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00836_source.html#l00243\">patchParam.h:243</a></div></div>\n+<div class=\"ttc\" id=\"aa00908_html_a70ecf570850744b0efeeedd7b743e950\"><div class=\"ttname\"><a href=\"a00908.html#a70ecf570850744b0efeeedd7b743e950\">OpenSubdiv::OPENSUBDIV_VERSION::Far::IndexArray</a></div><div class=\"ttdeci\">Vtr::IndexArray IndexArray</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01486_source.html#l00044\">types.h:44</a></div></div>\n+<div class=\"ttc\" id=\"aa00908_html_ab34c85a48f33dfe7b8bf4d966fdebbf2\"><div class=\"ttname\"><a href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">OpenSubdiv::OPENSUBDIV_VERSION::Far::Index</a></div><div class=\"ttdeci\">Vtr::Index Index</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01486_source.html#l00041\">types.h:41</a></div></div>\n+<div class=\"ttc\" id=\"aa00908_html_abe07210a029a01571c54276ae28b4d88\"><div class=\"ttname\"><a href=\"a00908.html#abe07210a029a01571c54276ae28b4d88\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchParamArray</a></div><div class=\"ttdeci\">Vtr::Array&lt; PatchParam &gt; PatchParamArray</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00836_source.html#l00245\">patchParam.h:245</a></div></div>\n+<div class=\"ttc\" id=\"aa00912_html_a98098cd229f60d2397d84a76fe654a31\"><div class=\"ttname\"><a href=\"a00912.html#a98098cd229f60d2397d84a76fe654a31\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchArrayVector</a></div><div class=\"ttdeci\">std::vector&lt; PatchArray &gt; PatchArrayVector</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00132\">types.h:132</a></div></div>\n+<div class=\"ttc\" id=\"aa00973_html\"><div class=\"ttname\"><a href=\"a00973.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor</a></div><div class=\"ttdoc\">Describes the type of a patch.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00857_source.html#l00044\">patchDescriptor.h:44</a></div></div>\n+<div class=\"ttc\" id=\"aa00977_html\"><div class=\"ttname\"><a href=\"a00977.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchMap</a></div><div class=\"ttdoc\">An quadtree-based map connecting coarse faces to their sub-patches.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00830_source.html#l00049\">patchMap.h:49</a></div></div>\n+<div class=\"ttc\" id=\"aa00989_html\"><div class=\"ttname\"><a href=\"a00989.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchParam</a></div><div class=\"ttdoc\">Patch parameterization.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00836_source.html#l00152\">patchParam.h:152</a></div></div>\n+<div class=\"ttc\" id=\"aa00993_html\"><div class=\"ttname\"><a href=\"a00993.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable</a></div><div class=\"ttdoc\">Container for arrays of parametric patches.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00842_source.html#l00055\">patchTable.h:55</a></div></div>\n+<div class=\"ttc\" id=\"aa00993_html_a012069d0bc0036c1e2bb75bc2a170c58\"><div class=\"ttname\"><a href=\"a00993.html#a012069d0bc0036c1e2bb75bc2a170c58\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetPatchArrayVaryingVertices</a></div><div class=\"ttdeci\">ConstIndexArray GetPatchArrayVaryingVertices(int array) const</div><div class=\"ttdoc\">Returns the varying vertex indices for the patches in array.</div></div>\n+<div class=\"ttc\" id=\"aa00993_html_a02449704e384b32232b06d0d57968138\"><div class=\"ttname\"><a href=\"a00993.html#a02449704e384b32232b06d0d57968138\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::getSharpnessValues</a></div><div class=\"ttdeci\">float * getSharpnessValues(Index arrayIndex)</div></div>\n+<div class=\"ttc\" id=\"aa00993_html_a02ba6ac8fc716dd7349a8a1143319079\"><div class=\"ttname\"><a href=\"a00993.html#a02ba6ac8fc716dd7349a8a1143319079\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetPatchControlVerticesTable</a></div><div class=\"ttdeci\">PatchVertsTable const &amp; GetPatchControlVerticesTable() const</div><div class=\"ttdoc\">Get the table of patch control vertices.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00842_source.html#l00378\">patchTable.h:378</a></div></div>\n+<div class=\"ttc\" id=\"aa00993_html_a059c9506f9ef8ebf24a68fc298be58be\"><div class=\"ttname\"><a href=\"a00993.html#a059c9506f9ef8ebf24a68fc298be58be\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::ComputeLocalPointValuesFaceVarying</a></div><div class=\"ttdeci\">void ComputeLocalPointValuesFaceVarying(T const *src, T *dst, int channel=0) const</div><div class=\"ttdoc\">Updates local point face-varying values.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00842_source.html#l00844\">patchTable.h:844</a></div></div>\n+<div class=\"ttc\" id=\"aa00993_html_a062d31216b535f604b3bc4d69434270d\"><div class=\"ttname\"><a href=\"a00993.html#a062d31216b535f604b3bc4d69434270d\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetVaryingVertices</a></div><div class=\"ttdeci\">ConstIndexArray GetVaryingVertices() const</div><div class=\"ttdoc\">Returns an array of varying vertex indices for the patches.</div></div>\n+<div class=\"ttc\" id=\"aa00993_html_a08ccda63d26e5b06957be5f5eec75d01\"><div class=\"ttname\"><a href=\"a00993.html#a08ccda63d26e5b06957be5f5eec75d01\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::ComputeLocalPointValuesVarying</a></div><div class=\"ttdeci\">void ComputeLocalPointValuesVarying(T const *src, T *dst) const</div><div class=\"ttdoc\">Updates local point varying values.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00842_source.html#l00835\">patchTable.h:835</a></div></div>\n+<div class=\"ttc\" id=\"aa00993_html_a0cb33d03729931750660ebf58b9e89ec\"><div class=\"ttname\"><a href=\"a00993.html#a0cb33d03729931750660ebf58b9e89ec\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetPatchVaryingVertices</a></div><div class=\"ttdeci\">ConstIndexArray GetPatchVaryingVertices(PatchHandle const &amp;handle) const</div><div class=\"ttdoc\">Returns the varying vertex indices for a given patch.</div></div>\n+<div class=\"ttc\" id=\"aa00993_html_a11c0f8be31c18b856cf9cdea511e54de\"><div class=\"ttname\"><a href=\"a00993.html#a11c0f8be31c18b856cf9cdea511e54de\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::IsFeatureAdaptive</a></div><div class=\"ttdeci\">bool IsFeatureAdaptive() const</div><div class=\"ttdoc\">True if the patches are of feature adaptive types.</div></div>\n+<div class=\"ttc\" id=\"aa00993_html_a14bf987459715b918b370247bb24a61c\"><div class=\"ttname\"><a href=\"a00993.html#a14bf987459715b918b370247bb24a61c\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetMaxValence</a></div><div class=\"ttdeci\">int GetMaxValence() const</div><div class=\"ttdoc\">Returns max vertex valence.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00842_source.html#l00092\">patchTable.h:92</a></div></div>\n+<div class=\"ttc\" id=\"aa00993_html_a1c85ed58e2e3362dd22fbdb815f2c5a3\"><div class=\"ttname\"><a href=\"a00993.html#a1c85ed58e2e3362dd22fbdb815f2c5a3\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetLocalPointStencilTable</a></div><div class=\"ttdeci\">StencilTableReal&lt; REAL &gt; const * GetLocalPointStencilTable() const</div><div class=\"ttdoc\">Returns the stencil table to compute local point vertex values.</div></div>\n+<div class=\"ttc\" id=\"aa00993_html_a1d27edb01bfb68ba50776b25aa437783\"><div class=\"ttname\"><a href=\"a00993.html#a1d27edb01bfb68ba50776b25aa437783\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetLocalPointStencilTable</a></div><div class=\"ttdeci\">StencilTable const * GetLocalPointStencilTable() const</div><div class=\"ttdoc\">Returns the stencil table to compute local point vertex values.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00842_source.html#l00778\">patchTable.h:778</a></div></div>\n+<div class=\"ttc\" id=\"aa00993_html_a21130b3d23cd5c27045d03c601e4642d\"><div class=\"ttname\"><a href=\"a00993.html#a21130b3d23cd5c27045d03c601e4642d\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::getPatchParams</a></div><div class=\"ttdeci\">PatchParamArray getPatchParams(int arrayIndex)</div></div>\n+<div class=\"ttc\" id=\"aa00993_html_a2a749eef1377f4f13a23c95e4038525d\"><div class=\"ttname\"><a href=\"a00993.html#a2a749eef1377f4f13a23c95e4038525d\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetPatchArrayFVarValues</a></div><div class=\"ttdeci\">ConstIndexArray GetPatchArrayFVarValues(int array, int channel=0) const</div><div class=\"ttdoc\">Returns the value indices for the patches in array in channel.</div></div>\n+<div class=\"ttc\" id=\"aa00993_html_a2d2c7ac649a9a285741dfdc1ed3089b3\"><div class=\"ttname\"><a href=\"a00993.html#a2d2c7ac649a9a285741dfdc1ed3089b3\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetSharpnessValues</a></div><div class=\"ttdeci\">std::vector&lt; float &gt; const &amp; GetSharpnessValues() const</div><div class=\"ttdoc\">Returns sharpness values table.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00842_source.html#l00387\">patchTable.h:387</a></div></div>\n+<div class=\"ttc\" id=\"aa00993_html_a2fbf111cac9d122eeaec5c0cb73fa77d\"><div class=\"ttname\"><a href=\"a00993.html#a2fbf111cac9d122eeaec5c0cb73fa77d\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::VertexValenceTable</a></div><div class=\"ttdeci\">std::vector&lt; Index &gt; VertexValenceTable</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00842_source.html#l00264\">patchTable.h:264</a></div></div>\n+<div class=\"ttc\" id=\"aa00993_html_a315fc19f788ba446560b2641186c393e\"><div class=\"ttname\"><a href=\"a00993.html#a315fc19f788ba446560b2641186c393e\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetPatchFVarPatchParam</a></div><div class=\"ttdeci\">PatchParam GetPatchFVarPatchParam(int array, int patch, int channel=0) const</div><div class=\"ttdoc\">Returns the face-varying params for a given patch channel.</div></div>\n+<div class=\"ttc\" id=\"aa00993_html_a31b548d9f8334f3c4f9341eda3479982\"><div class=\"ttname\"><a href=\"a00993.html#a31b548d9f8334f3c4f9341eda3479982\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetPatchVaryingVertices</a></div><div class=\"ttdeci\">ConstIndexArray GetPatchVaryingVertices(int array, int patch) const</div><div class=\"ttdoc\">Returns the varying vertex indices for a given patch.</div></div>\n+<div class=\"ttc\" id=\"aa00993_html_a3419c5d57330d6787f8c14a7677b8d9b\"><div class=\"ttname\"><a href=\"a00993.html#a3419c5d57330d6787f8c14a7677b8d9b\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::PatchTable</a></div><div class=\"ttdeci\">PatchTable(PatchTable const &amp;src)</div><div class=\"ttdoc\">Copy constructor.</div></div>\n+<div class=\"ttc\" id=\"aa00993_html_a3432d7022e415ef661ccd6726ed3743f\"><div class=\"ttname\"><a href=\"a00993.html#a3432d7022e415ef661ccd6726ed3743f\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetNumPatchArrays</a></div><div class=\"ttdeci\">int GetNumPatchArrays() const</div><div class=\"ttdoc\">Returns the number of patch arrays in the table.</div></div>\n+<div class=\"ttc\" id=\"aa00993_html_a37804f17e707ef64a7f165d15b6cf013\"><div class=\"ttname\"><a href=\"a00993.html#a37804f17e707ef64a7f165d15b6cf013\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetPatchVertices</a></div><div class=\"ttdeci\">ConstIndexArray GetPatchVertices(PatchHandle const &amp;handle) const</div><div class=\"ttdoc\">Returns the control vertex indices for the patch identified by handle.</div></div>\n+<div class=\"ttc\" id=\"aa00993_html_a37e24b0244219eef61cc1ab2a5a5450e\"><div class=\"ttname\"><a href=\"a00993.html#a37e24b0244219eef61cc1ab2a5a5450e\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::PatchTable</a></div><div class=\"ttdeci\">PatchTable(int maxvalence)</div></div>\n+<div class=\"ttc\" id=\"aa00993_html_a38d50a271b91fe5b1a9f11904d06ce49\"><div class=\"ttname\"><a href=\"a00993.html#a38d50a271b91fe5b1a9f11904d06ce49\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::LocalPointFaceVaryingStencilPrecisionMatchesType</a></div><div class=\"ttdeci\">bool LocalPointFaceVaryingStencilPrecisionMatchesType() const</div><div class=\"ttdoc\">Tests if the precision of the stencil table to compute local point face-varying values matches the gi...</div></div>\n+<div class=\"ttc\" id=\"aa00993_html_a39cd14c1ae309f7fc7872b7b0d03dde3\"><div class=\"ttname\"><a href=\"a00993.html#a39cd14c1ae309f7fc7872b7b0d03dde3\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetPatchParamTable</a></div><div class=\"ttdeci\">PatchParamTable const &amp; GetPatchParamTable() const</div><div class=\"ttdoc\">Returns the PatchParamTable (PatchParams order matches patch array sorting)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00842_source.html#l00381\">patchTable.h:381</a></div></div>\n+<div class=\"ttc\" id=\"aa00993_html_a442f93101ba3ac94d07f1d9ceb1cdcd6\"><div class=\"ttname\"><a href=\"a00993.html#a442f93101ba3ac94d07f1d9ceb1cdcd6\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetVertexValenceTable</a></div><div class=\"ttdeci\">VertexValenceTable const &amp; GetVertexValenceTable() const</div><div class=\"ttdoc\">Returns the 'VertexValences' table (vertex neighborhoods table)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00842_source.html#l00267\">patchTable.h:267</a></div></div>\n+<div class=\"ttc\" id=\"aa00993_html_a523e2a6f899aede5166441b14efa348a\"><div class=\"ttname\"><a href=\"a00993.html#a523e2a6f899aede5166441b14efa348a\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetLocalPointFaceVaryingStencilTable</a></div><div class=\"ttdeci\">StencilTable const * GetLocalPointFaceVaryingStencilTable(int channel=0) const</div><div class=\"ttdoc\">Returns the stencil table to compute local point face-varying values.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00842_source.html#l00789\">patchTable.h:789</a></div></div>\n+<div class=\"ttc\" id=\"aa00993_html_a5b32465be706d80f4fac5ea05e3e0ded\"><div class=\"ttname\"><a href=\"a00993.html#a5b32465be706d80f4fac5ea05e3e0ded\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetNumControlVertices</a></div><div class=\"ttdeci\">int GetNumControlVertices(int array) const</div><div class=\"ttdoc\">Returns the number of control vertices in array.</div></div>\n+<div class=\"ttc\" id=\"aa00993_html_a5cbd789bd429e35377db5f4c97701874\"><div class=\"ttname\"><a href=\"a00993.html#a5cbd789bd429e35377db5f4c97701874\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::~PatchTable</a></div><div class=\"ttdeci\">~PatchTable()</div><div class=\"ttdoc\">Destructor.</div></div>\n+<div class=\"ttc\" id=\"aa00993_html_a64fe119d6034e4b1f39e81d39ad9dfc4\"><div class=\"ttname\"><a href=\"a00993.html#a64fe119d6034e4b1f39e81d39ad9dfc4\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::EvaluateBasisFaceVarying</a></div><div class=\"ttdeci\">void EvaluateBasisFaceVarying(PatchHandle const &amp;handle, REAL u, REAL v, REAL wP[], REAL wDu[]=0, REAL wDv[]=0, REAL wDuu[]=0, REAL wDuv[]=0, REAL wDvv[]=0, int channel=0) const</div><div class=\"ttdoc\">Evaluate basis functions for a face-varying value and derivatives at a given (u,v) parametric locatio...</div></div>\n+<div class=\"ttc\" id=\"aa00993_html_a68a029efbad55b2fd991d29aa37a7c28\"><div class=\"ttname\"><a href=\"a00993.html#a68a029efbad55b2fd991d29aa37a7c28\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetPatchQuadOffsets</a></div><div class=\"ttdeci\">ConstQuadOffsetsArray GetPatchQuadOffsets(PatchHandle const &amp;handle) const</div><div class=\"ttdoc\">Returns the 'QuadOffsets' for the Gregory patch identified by handle.</div></div>\n+<div class=\"ttc\" id=\"aa00993_html_a733ff80d6d940519b47091c58abbed34\"><div class=\"ttname\"><a href=\"a00993.html#a733ff80d6d940519b47091c58abbed34\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetFVarPatchDescriptorIrregular</a></div><div class=\"ttdeci\">PatchDescriptor GetFVarPatchDescriptorIrregular(int channel=0) const</div><div class=\"ttdoc\">Returns the irregular patch descriptor for channel.</div></div>\n+<div class=\"ttc\" id=\"aa00993_html_a73752510551b8bda85fbc7f43e97730b\"><div class=\"ttname\"><a href=\"a00993.html#a73752510551b8bda85fbc7f43e97730b\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetSingleCreasePatchSharpnessValue</a></div><div class=\"ttdeci\">float GetSingleCreasePatchSharpnessValue(int array, int patch) const</div><div class=\"ttdoc\">Returns the crease sharpness for the patch in array if it is a single-crease patch,...</div></div>\n+<div class=\"ttc\" id=\"aa00993_html_a7c1135ced687d1313ed925b8441fdf60\"><div class=\"ttname\"><a href=\"a00993.html#a7c1135ced687d1313ed925b8441fdf60\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::getSharpnessIndices</a></div><div class=\"ttdeci\">Index * getSharpnessIndices(Index arrayIndex)</div></div>\n+<div class=\"ttc\" id=\"aa00993_html_a7dcb88c32ded6c233f129d7b6fb7a159\"><div class=\"ttname\"><a href=\"a00993.html#a7dcb88c32ded6c233f129d7b6fb7a159\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::ComputeLocalPointValues</a></div><div class=\"ttdeci\">void ComputeLocalPointValues(T const *src, T *dst) const</div><div class=\"ttdoc\">Updates local point vertex values.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00842_source.html#l00826\">patchTable.h:826</a></div></div>\n+<div class=\"ttc\" id=\"aa00993_html_a875abc47934c4076304f3b9c4edde3cc\"><div class=\"ttname\"><a href=\"a00993.html#a875abc47934c4076304f3b9c4edde3cc\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetSingleCreasePatchSharpnessValue</a></div><div class=\"ttdeci\">float GetSingleCreasePatchSharpnessValue(PatchHandle const &amp;handle) const</div><div class=\"ttdoc\">Returns the crease sharpness for the patch identified by handle if it is a single-crease patch,...</div></div>\n+<div class=\"ttc\" id=\"aa00993_html_a8c1242bf6bffa416c2e172a02f3ee31c\"><div class=\"ttname\"><a href=\"a00993.html#a8c1242bf6bffa416c2e172a02f3ee31c\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetPatchParam</a></div><div class=\"ttdeci\">PatchParam GetPatchParam(int array, int patch) const</div><div class=\"ttdoc\">Returns the PatchParam for patch in array.</div></div>\n+<div class=\"ttc\" id=\"aa00993_html_a8cc9b6bbaaecd1facf0cfae0853e3a60\"><div class=\"ttname\"><a href=\"a00993.html#a8cc9b6bbaaecd1facf0cfae0853e3a60\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetPatchFVarValues</a></div><div class=\"ttdeci\">ConstIndexArray GetPatchFVarValues(int array, int patch, int channel=0) const</div><div class=\"ttdoc\">Returns the value indices for a given patch in channel.</div></div>\n+<div class=\"ttc\" id=\"aa00993_html_a90705c85d6b680933c93344c9804e4d6\"><div class=\"ttname\"><a href=\"a00993.html#a90705c85d6b680933c93344c9804e4d6\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetFVarPatchDescriptorRegular</a></div><div class=\"ttdeci\">PatchDescriptor GetFVarPatchDescriptorRegular(int channel=0) const</div><div class=\"ttdoc\">Returns the regular patch descriptor for channel.</div></div>\n+<div class=\"ttc\" id=\"aa00993_html_a9373bf15eaee019dd08099d05515e080\"><div class=\"ttname\"><a href=\"a00993.html#a9373bf15eaee019dd08099d05515e080\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetPatchDescriptor</a></div><div class=\"ttdeci\">PatchDescriptor GetPatchDescriptor(PatchHandle const &amp;handle) const</div><div class=\"ttdoc\">Returns the PatchDescriptor for the patch identified by handle.</div></div>\n+<div class=\"ttc\" id=\"aa00993_html_a9484ab8a323750c2f639ee8709b1349b\"><div class=\"ttname\"><a href=\"a00993.html#a9484ab8a323750c2f639ee8709b1349b\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::PatchVertsTable</a></div><div class=\"ttdeci\">std::vector&lt; Index &gt; PatchVertsTable</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00842_source.html#l00375\">patchTable.h:375</a></div></div>\n+<div class=\"ttc\" id=\"aa00993_html_a99b23eec59013306ea2f1df119a7574d\"><div class=\"ttname\"><a href=\"a00993.html#a99b23eec59013306ea2f1df119a7574d\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetQuadOffsetsTable</a></div><div class=\"ttdeci\">QuadOffsetsTable const &amp; GetQuadOffsetsTable() const</div><div class=\"ttdoc\">Returns the quad-offsets table.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00842_source.html#l00392\">patchTable.h:392</a></div></div>\n+<div class=\"ttc\" id=\"aa00993_html_a9d7d8d4411b09211fbf901cb7564df4c\"><div class=\"ttname\"><a href=\"a00993.html#a9d7d8d4411b09211fbf901cb7564df4c\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetNumPatches</a></div><div class=\"ttdeci\">int GetNumPatches(int array) const</div><div class=\"ttdoc\">Returns the number of patches in array.</div></div>\n+<div class=\"ttc\" id=\"aa00993_html_a9f14d69df88fa663dcfdec990ec9e3f3\"><div class=\"ttname\"><a href=\"a00993.html#a9f14d69df88fa663dcfdec990ec9e3f3\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetVaryingPatchDescriptor</a></div><div class=\"ttdeci\">PatchDescriptor GetVaryingPatchDescriptor() const</div><div class=\"ttdoc\">Returns the varying patch descriptor.</div></div>\n+<div class=\"ttc\" id=\"aa00993_html_aa3020b88381e6966efbe6c4febf8c04f\"><div class=\"ttname\"><a href=\"a00993.html#aa3020b88381e6966efbe6c4febf8c04f\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetPatchFVarValues</a></div><div class=\"ttdeci\">ConstIndexArray GetPatchFVarValues(PatchHandle const &amp;handle, int channel=0) const</div><div class=\"ttdoc\">Returns the value indices for a given patch in channel.</div></div>\n+<div class=\"ttc\" id=\"aa00993_html_aa3dd3f4235b25b5feca23351835207b5\"><div class=\"ttname\"><a href=\"a00993.html#aa3dd3f4235b25b5feca23351835207b5\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetPatchParams</a></div><div class=\"ttdeci\">ConstPatchParamArray const GetPatchParams(int array) const</div><div class=\"ttdoc\">Returns the PatchParams for the patches in array.</div></div>\n+<div class=\"ttc\" id=\"aa00993_html_aa7d301570e6f7b39e1eaa546e2937018\"><div class=\"ttname\"><a href=\"a00993.html#aa7d301570e6f7b39e1eaa546e2937018\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetNumControlVerticesTotal</a></div><div class=\"ttdeci\">int GetNumControlVerticesTotal() const</div><div class=\"ttdoc\">Returns the total number of control vertex indices in the table.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00842_source.html#l00084\">patchTable.h:84</a></div></div>\n+<div class=\"ttc\" id=\"aa00993_html_aa9be824a572029f3ec1e0c0d6cfecd77\"><div class=\"ttname\"><a href=\"a00993.html#aa9be824a572029f3ec1e0c0d6cfecd77\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetNumFVarChannels</a></div><div class=\"ttdeci\">int GetNumFVarChannels() const</div><div class=\"ttdoc\">Returns the number of face-varying channels.</div></div>\n+<div class=\"ttc\" id=\"aa00993_html_aa9e55389ca0f7adf332423216b31134d\"><div class=\"ttname\"><a href=\"a00993.html#aa9e55389ca0f7adf332423216b31134d\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetPatchArrayFVarPatchParams</a></div><div class=\"ttdeci\">ConstPatchParamArray GetPatchArrayFVarPatchParams(int array, int channel=0) const</div><div class=\"ttdoc\">Returns the face-varying for a given patch in array in channel.</div></div>\n+<div class=\"ttc\" id=\"aa00993_html_ab0adae83e2dd316f9ed297fe745dab55\"><div class=\"ttname\"><a href=\"a00993.html#ab0adae83e2dd316f9ed297fe745dab55\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::getPatchIndex</a></div><div class=\"ttdeci\">Index getPatchIndex(int array, int patch) const</div></div>\n+<div class=\"ttc\" id=\"aa00993_html_ab15bba670f52d55d19967104b95b9024\"><div class=\"ttname\"><a href=\"a00993.html#ab15bba670f52d55d19967104b95b9024\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetNumLocalPoints</a></div><div class=\"ttdeci\">int GetNumLocalPoints() const</div><div class=\"ttdoc\">Returns the number of local vertex points.</div></div>\n+<div class=\"ttc\" id=\"aa00993_html_ab181437e35cfc57ef3efdd368bb51a69\"><div class=\"ttname\"><a href=\"a00993.html#ab181437e35cfc57ef3efdd368bb51a69\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::LocalPointVaryingStencilPrecisionMatchesType</a></div><div class=\"ttdeci\">bool LocalPointVaryingStencilPrecisionMatchesType() const</div><div class=\"ttdoc\">Tests if the precision of the stencil table to compute local point varying values matches the given f...</div></div>\n+<div class=\"ttc\" id=\"aa00993_html_ab3133704d2b372da1204e6650d4800ee\"><div class=\"ttname\"><a href=\"a00993.html#ab3133704d2b372da1204e6650d4800ee\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetPatchArrayVertices</a></div><div class=\"ttdeci\">ConstIndexArray GetPatchArrayVertices(int array) const</div><div class=\"ttdoc\">Returns the control vertex indices for the patches in array.</div></div>\n+<div class=\"ttc\" id=\"aa00993_html_ab45dd46b44737845ca57f634f11f1bbc\"><div class=\"ttname\"><a href=\"a00993.html#ab45dd46b44737845ca57f634f11f1bbc\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetNumPtexFaces</a></div><div class=\"ttdeci\">int GetNumPtexFaces() const</div><div class=\"ttdoc\">Returns the total number of ptex faces in the mesh.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00842_source.html#l00095\">patchTable.h:95</a></div></div>\n+<div class=\"ttc\" id=\"aa00993_html_ab6810a0252d1c07b7459065c3dde2903\"><div class=\"ttname\"><a href=\"a00993.html#ab6810a0252d1c07b7459065c3dde2903\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetFVarValues</a></div><div class=\"ttdeci\">ConstIndexArray GetFVarValues(int channel=0) const</div><div class=\"ttdoc\">Returns an array of value indices for the patches in channel.</div></div>\n+<div class=\"ttc\" id=\"aa00993_html_ab72c4254f74c932eeb7d7b08805932c5\"><div class=\"ttname\"><a href=\"a00993.html#ab72c4254f74c932eeb7d7b08805932c5\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::ConstQuadOffsetsArray</a></div><div class=\"ttdeci\">Vtr::ConstArray&lt; unsigned int &gt; ConstQuadOffsetsArray</div><div class=\"ttdoc\">Accessors for the gregory patch evaluation buffers. These methods will be deprecated.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00842_source.html#l00259\">patchTable.h:259</a></div></div>\n+<div class=\"ttc\" id=\"aa00993_html_ab8a09f15edef57b9b4aed0d0d6183b75\"><div class=\"ttname\"><a href=\"a00993.html#ab8a09f15edef57b9b4aed0d0d6183b75\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::EvaluateBasis</a></div><div class=\"ttdeci\">void EvaluateBasis(PatchHandle const &amp;handle, REAL u, REAL v, REAL wP[], REAL wDu[]=0, REAL wDv[]=0, REAL wDuu[]=0, REAL wDuv[]=0, REAL wDvv[]=0) const</div><div class=\"ttdoc\">Evaluate basis functions for position and derivatives at a given (u,v) parametric location of a patch...</div></div>\n+<div class=\"ttc\" id=\"aa00993_html_ac176593fac078b4f7dd4801d586d6c41\"><div class=\"ttname\"><a href=\"a00993.html#ac176593fac078b4f7dd4801d586d6c41\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetLocalPointFaceVaryingStencilTable</a></div><div class=\"ttdeci\">StencilTableReal&lt; REAL &gt; const * GetLocalPointFaceVaryingStencilTable(int channel=0) const</div><div class=\"ttdoc\">Returns the stencil table to compute local point face-varying values.</div></div>\n+<div class=\"ttc\" id=\"aa00993_html_ac39a9665667b0a4fcc7ed028b7faaa47\"><div class=\"ttname\"><a href=\"a00993.html#ac39a9665667b0a4fcc7ed028b7faaa47\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetNumPatchesTotal</a></div><div class=\"ttdeci\">int GetNumPatchesTotal() const</div><div class=\"ttdoc\">Returns the total number of patches stored in the table.</div></div>\n+<div class=\"ttc\" id=\"aa00993_html_ac44a6262548ebebae9bbc5b5f3c43e3a\"><div class=\"ttname\"><a href=\"a00993.html#ac44a6262548ebebae9bbc5b5f3c43e3a\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetPatchParam</a></div><div class=\"ttdeci\">PatchParam GetPatchParam(PatchHandle const &amp;handle) const</div><div class=\"ttdoc\">Returns a PatchParam for the patch identified by handle.</div></div>\n+<div class=\"ttc\" id=\"aa00993_html_acd0f82d3c49b8a5dd436d4003c44b713\"><div class=\"ttname\"><a href=\"a00993.html#acd0f82d3c49b8a5dd436d4003c44b713\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::print</a></div><div class=\"ttdeci\">void print() const</div><div class=\"ttdoc\">debug helper</div></div>\n+<div class=\"ttc\" id=\"aa00993_html_ad0e821181a94f5019cc79b75d3eb74b6\"><div class=\"ttname\"><a href=\"a00993.html#ad0e821181a94f5019cc79b75d3eb74b6\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetFVarChannelLinearInterpolation</a></div><div class=\"ttdeci\">Sdc::Options::FVarLinearInterpolation GetFVarChannelLinearInterpolation(int channel=0) const</div><div class=\"ttdoc\">Deprecated.</div></div>\n+<div class=\"ttc\" id=\"aa00993_html_ad173086439fbbf0412b86b3d1262847d\"><div class=\"ttname\"><a href=\"a00993.html#ad173086439fbbf0412b86b3d1262847d\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetSharpnessIndexTable</a></div><div class=\"ttdeci\">std::vector&lt; Index &gt; const &amp; GetSharpnessIndexTable() const</div><div class=\"ttdoc\">Returns a sharpness index table for each patch (if exists)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00842_source.html#l00384\">patchTable.h:384</a></div></div>\n+<div class=\"ttc\" id=\"aa00993_html_ad2744ba943362370738d6bd8448cd779\"><div class=\"ttname\"><a href=\"a00993.html#ad2744ba943362370738d6bd8448cd779\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetPatchArrayDescriptor</a></div><div class=\"ttdeci\">PatchDescriptor GetPatchArrayDescriptor(int array) const</div><div class=\"ttdoc\">Returns the PatchDescriptor for the patches in array.</div></div>\n+<div class=\"ttc\" id=\"aa00993_html_ad452cef79832abb71eef0c3d88acc1a0\"><div class=\"ttname\"><a href=\"a00993.html#ad452cef79832abb71eef0c3d88acc1a0\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::PatchTableBuilder</a></div><div class=\"ttdeci\">friend class PatchTableBuilder</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00842_source.html#l00531\">patchTable.h:531</a></div></div>\n+<div class=\"ttc\" id=\"aa00993_html_ad690cee703683b70def7a4419120cc9a\"><div class=\"ttname\"><a href=\"a00993.html#ad690cee703683b70def7a4419120cc9a\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::EvaluateBasisVarying</a></div><div class=\"ttdeci\">void EvaluateBasisVarying(PatchHandle const &amp;handle, REAL u, REAL v, REAL wP[], REAL wDu[]=0, REAL wDv[]=0, REAL wDuu[]=0, REAL wDuv[]=0, REAL wDvv[]=0) const</div><div class=\"ttdoc\">Evaluate basis functions for a varying value and derivatives at a given (u,v) parametric location of ...</div></div>\n+<div class=\"ttc\" id=\"aa00993_html_ad6bafe91da1dcf5b8fb1f7c8cb4ed619\"><div class=\"ttname\"><a href=\"a00993.html#ad6bafe91da1dcf5b8fb1f7c8cb4ed619\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetLocalPointVaryingStencilTable</a></div><div class=\"ttdeci\">StencilTable const * GetLocalPointVaryingStencilTable() const</div><div class=\"ttdoc\">Returns the stencil table to compute local point varying values.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00842_source.html#l00783\">patchTable.h:783</a></div></div>\n+<div class=\"ttc\" id=\"aa00993_html_ad71e6ae07059dc39b0550c98cfcee291\"><div class=\"ttname\"><a href=\"a00993.html#ad71e6ae07059dc39b0550c98cfcee291\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::QuadOffsetsTable</a></div><div class=\"ttdeci\">std::vector&lt; unsigned int &gt; QuadOffsetsTable</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00842_source.html#l00389\">patchTable.h:389</a></div></div>\n+<div class=\"ttc\" id=\"aa00993_html_ad897fbe60d2921cfbf5e1bed8760d49f\"><div class=\"ttname\"><a href=\"a00993.html#ad897fbe60d2921cfbf5e1bed8760d49f\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetPatchVertices</a></div><div class=\"ttdeci\">ConstIndexArray GetPatchVertices(int array, int patch) const</div><div class=\"ttdoc\">Returns the control vertex indices for patch in array.</div></div>\n+<div class=\"ttc\" id=\"aa00993_html_ad9481ab788a82c6a48364fff6a8ab193\"><div class=\"ttname\"><a href=\"a00993.html#ad9481ab788a82c6a48364fff6a8ab193\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetPatchFVarPatchParam</a></div><div class=\"ttdeci\">PatchParam GetPatchFVarPatchParam(PatchHandle const &amp;handle, int channel=0) const</div><div class=\"ttdoc\">Returns the value indices for a given patch in channel.</div></div>\n+<div class=\"ttc\" id=\"aa00993_html_ad98dc91babcdddf20876169a70e10402\"><div class=\"ttname\"><a href=\"a00993.html#ad98dc91babcdddf20876169a70e10402\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetFVarValueStride</a></div><div class=\"ttdeci\">int GetFVarValueStride(int channel=0) const</div><div class=\"ttdoc\">Returns the stride between patches in the value index array of channel.</div></div>\n+<div class=\"ttc\" id=\"aa00993_html_adb4260cb1d469935a32df5ad35d98bb4\"><div class=\"ttname\"><a href=\"a00993.html#adb4260cb1d469935a32df5ad35d98bb4\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetFVarPatchParams</a></div><div class=\"ttdeci\">ConstPatchParamArray GetFVarPatchParams(int channel=0) const</div><div class=\"ttdoc\">Returns an array of face-varying patch param for channel.</div></div>\n+<div class=\"ttc\" id=\"aa00993_html_adccd68da8d26bb5f5c2b7f29e0a14e89\"><div class=\"ttname\"><a href=\"a00993.html#adccd68da8d26bb5f5c2b7f29e0a14e89\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetFVarPatchDescriptor</a></div><div class=\"ttdeci\">PatchDescriptor GetFVarPatchDescriptor(int channel=0) const</div><div class=\"ttdoc\">Returns the default/irregular patch descriptor for channel.</div></div>\n+<div class=\"ttc\" id=\"aa00993_html_adf2a870e7fccf780894d17160b7967f0\"><div class=\"ttname\"><a href=\"a00993.html#adf2a870e7fccf780894d17160b7967f0\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetNumLocalPointsVarying</a></div><div class=\"ttdeci\">int GetNumLocalPointsVarying() const</div><div class=\"ttdoc\">Returns the number of local varying points.</div></div>\n+<div class=\"ttc\" id=\"aa00993_html_ae7d9c513e950df25aebfeed309666764\"><div class=\"ttname\"><a href=\"a00993.html#ae7d9c513e950df25aebfeed309666764\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::LocalPointStencilPrecisionMatchesType</a></div><div class=\"ttdeci\">bool LocalPointStencilPrecisionMatchesType() const</div><div class=\"ttdoc\">Tests if the precision of the stencil table to compute local point vertex values matches the given fl...</div></div>\n+<div class=\"ttc\" id=\"aa00993_html_af903f44e0f0743652b5f465ff60492a2\"><div class=\"ttname\"><a href=\"a00993.html#af903f44e0f0743652b5f465ff60492a2\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetLocalPointVaryingStencilTable</a></div><div class=\"ttdeci\">StencilTableReal&lt; REAL &gt; const * GetLocalPointVaryingStencilTable() const</div><div class=\"ttdoc\">Returns the stencil table to compute local point varying values.</div></div>\n+<div class=\"ttc\" id=\"aa00993_html_afc91733be6989f2f18c4817fc43ab070\"><div class=\"ttname\"><a href=\"a00993.html#afc91733be6989f2f18c4817fc43ab070\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetNumLocalPointsFaceVarying</a></div><div class=\"ttdeci\">int GetNumLocalPointsFaceVarying(int channel=0) const</div><div class=\"ttdoc\">Returns the number of local face-varying points for channel.</div></div>\n+<div class=\"ttc\" id=\"aa00997_html\"><div class=\"ttname\"><a href=\"a00997.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::PatchHandle</a></div><div class=\"ttdoc\">Handle that can be used as unique patch identifier within PatchTable.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00842_source.html#l00060\">patchTable.h:60</a></div></div>\n+<div class=\"ttc\" id=\"aa00997_html_a31bdf15525ab73560c2b725ff7f8ae3a\"><div class=\"ttname\"><a href=\"a00997.html#a31bdf15525ab73560c2b725ff7f8ae3a\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::PatchHandle::patchIndex</a></div><div class=\"ttdeci\">Index patchIndex</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00842_source.html#l00068\">patchTable.h:68</a></div></div>\n+<div class=\"ttc\" id=\"aa00997_html_a4430ecde7e1d784b2bef6dc4c2ff04c2\"><div class=\"ttname\"><a href=\"a00997.html#a4430ecde7e1d784b2bef6dc4c2ff04c2\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::PatchHandle::arrayIndex</a></div><div class=\"ttdeci\">Index arrayIndex</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00842_source.html#l00067\">patchTable.h:67</a></div></div>\n+<div class=\"ttc\" id=\"aa00997_html_a46d1a8129375c3ee40a33a81d44b685a\"><div class=\"ttname\"><a href=\"a00997.html#a46d1a8129375c3ee40a33a81d44b685a\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::PatchHandle::vertIndex</a></div><div class=\"ttdeci\">Index vertIndex</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00842_source.html#l00069\">patchTable.h:69</a></div></div>\n+<div class=\"ttc\" id=\"aa01061_html\"><div class=\"ttname\"><a href=\"a01061.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal</a></div><div class=\"ttdoc\">Table of subdivision stencils.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00141\">stencilTable.h:141</a></div></div>\n+<div class=\"ttc\" id=\"aa01065_html\"><div class=\"ttname\"><a href=\"a01065.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTable</a></div><div class=\"ttdoc\">Stencil table class wrapping the template for compatibility.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00818_source.html#l00273\">stencilTable.h:273</a></div></div>\n+<div class=\"ttc\" id=\"aa01337_html_a5b87eaca6ca0833462c9d4ad84df167b\"><div class=\"ttname\"><a href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167b\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::FVarLinearInterpolation</a></div><div class=\"ttdeci\">FVarLinearInterpolation</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00860_source.html#l00060\">options.h:60</a></div></div>\n+<div class=\"ttc\" id=\"aa01353_html\"><div class=\"ttname\"><a href=\"a01353.html\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00797_source.html#l00053\">array.h:53</a></div></div>\n+<div class=\"ttc\" id=\"aa01357_html\"><div class=\"ttname\"><a href=\"a01357.html\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::Array</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00797_source.html#l00105\">array.h:105</a></div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00842.html\">opengl.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7f420b72a822828cfa8b0561c695a5cc.html\">far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00842.html\">patchTable.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,12 +1,12 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-opengl.h\n+patchTable.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n 2// Copyright 2013 Pixar\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n@@ -24,40 +24,1002 @@\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n 24\n-25#ifndef OPENSUBDIV3_OSD_OPENGL_H\n-26#define OPENSUBDIV3_OSD_OPENGL_H\n+25#ifndef OPENSUBDIV3_FAR_PATCH_TABLE_H\n+26#define OPENSUBDIV3_FAR_PATCH_TABLE_H\n 27\n-28#if defined(__APPLE__)\n-29 #include \"TargetConditionals.h\"\n-30 #if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR\n-31 #include <OpenGLES/ES2/gl.h>\n-32 #else\n-33 #if defined(OSD_USES_GLEW)\n-34 #include <GL/glew.h>\n-35 #else\n-36 #include <OpenGL/gl3.h>\n-37 #endif\n-38 #endif\n-39#elif defined(ANDROID)\n-40 #include <GLES2/gl2.h>\n-41#else\n-42 #if defined(_WIN32)\n-43 #define WIN32_LEAN_AND_MEAN\n-44 #include <windows.h>\n-45 #endif\n-46 #if defined(OSD_USES_GLEW)\n-47 #include <GL/glew.h>\n-48 #else\n-49 #include <GL/gl.h>\n-50 #endif\n-51#endif\n-52\n-53#endif // OPENSUBDIV3_OSD_OPENGL_H\n+28#include \"../version.h\"\n+29\n+30#include \"../far/patchDescriptor.h\"\n+31#include \"../far/patchParam.h\"\n+32#include \"../far/stencilTable.h\"\n+33\n+34#include \"../sdc/options.h\"\n+35\n+36#include <vector>\n+37\n+38namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+39namespace OPENSUBDIV_VERSION {\n+40\n+41namespace Far {\n+42\n+_\b5_\b5class _\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be {\n+56\n+57public:\n+58\n+_\b6_\b0 class _\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be {\n+61 // XXXX manuelk members will eventually be made private\n+62 public:\n+63\n+_\b6_\b4 friend class _\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be;\n+_\b6_\b5 friend class _\bP_\ba_\bt_\bc_\bh_\bM_\ba_\bp;\n+66\n+_\b6_\b7 _\bI_\bn_\bd_\be_\bx _\ba_\br_\br_\ba_\by_\bI_\bn_\bd_\be_\bx, // Array index of the patch\n+_\b6_\b8 _\bp_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx, // Absolute Index of the patch\n+_\b6_\b9 _\bv_\be_\br_\bt_\bI_\bn_\bd_\be_\bx; // Relative offset to the first CV of the patch in array\n+70 };\n+71\n+72public:\n+73\n+_\b7_\b5 _\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be(_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be const & src);\n+76\n+_\b7_\b8 _\b~_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be();\n+79\n+_\b8_\b1 bool _\bI_\bs_\bF_\be_\ba_\bt_\bu_\br_\be_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be() const;\n+82\n+_\b8_\b4 int _\bG_\be_\bt_\bN_\bu_\bm_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bV_\be_\br_\bt_\bi_\bc_\be_\bs_\bT_\bo_\bt_\ba_\bl() const {\n+85 return (int)_patchVerts.size();\n+86 }\n+87\n+_\b8_\b9 int _\bG_\be_\bt_\bN_\bu_\bm_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bT_\bo_\bt_\ba_\bl() const;\n+90\n+_\b9_\b2 int _\bG_\be_\bt_\bM_\ba_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be() const { return _maxValence; }\n+93\n+_\b9_\b5 int _\bG_\be_\bt_\bN_\bu_\bm_\bP_\bt_\be_\bx_\bF_\ba_\bc_\be_\bs() const { return _numPtexFaces; }\n+96\n+97\n+99\n+105\n+_\b1_\b0_\b7 _\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be const & handle) const;\n+108\n+_\b1_\b1_\b0 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bV_\be_\br_\bt_\bi_\bc_\be_\bs(_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be const & handle) const;\n+111\n+_\b1_\b1_\b3 _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm(_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be const & handle) const;\n+114\n+_\b1_\b1_\b6 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bV_\be_\br_\bt_\bi_\bc_\be_\bs(int array, int patch) const;\n+117\n+_\b1_\b1_\b9 _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm(int array, int patch) const;\n+121\n+122\n+124\n+130\n+_\b1_\b3_\b2 int _\bG_\be_\bt_\bN_\bu_\bm_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs() const;\n+133\n+_\b1_\b3_\b5 int _\bG_\be_\bt_\bN_\bu_\bm_\bP_\ba_\bt_\bc_\bh_\be_\bs(int array) const;\n+136\n+_\b1_\b3_\b8 int _\bG_\be_\bt_\bN_\bu_\bm_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bV_\be_\br_\bt_\bi_\bc_\be_\bs(int array) const;\n+139\n+_\b1_\b4_\b1 _\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(int array) const;\n+142\n+_\b1_\b4_\b4 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\br_\bt_\bi_\bc_\be_\bs(int array) const;\n+145\n+_\b1_\b4_\b7 _\bC_\bo_\bn_\bs_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bA_\br_\br_\ba_\by const _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bs(int array) const;\n+149\n+150\n+152\n+159\n+_\b1_\b6_\b1 int _\bG_\be_\bt_\bN_\bu_\bm_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bs() const;\n+162\n+164 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be() const;\n+165\n+167 template <typename REAL>\n+_\b1_\b6_\b8 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b> const *_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be() const;\n+169\n+_\b1_\b7_\b2 template <typename REAL> bool _\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\bM_\ba_\bt_\bc_\bh_\be_\bs_\bT_\by_\bp_\be()\n+const;\n+173\n+186 template <class T> void\n+187 _\bC_\bo_\bm_\bp_\bu_\bt_\be_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bV_\ba_\bl_\bu_\be_\bs(T const *src, T *dst) const;\n+188\n+189\n+_\b1_\b9_\b1 int _\bG_\be_\bt_\bN_\bu_\bm_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg() const;\n+192\n+194 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be() const;\n+195\n+197 template <typename REAL>\n+_\b1_\b9_\b8 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b> const *_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be() const;\n+199\n+_\b2_\b0_\b2 template <typename REAL> bool _\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\bM_\ba_\bt_\bc_\bh_\be_\bs_\bT_\by_\bp_\be\n+() const;\n+203\n+216 template <class T> void\n+217 _\bC_\bo_\bm_\bp_\bu_\bt_\be_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bV_\ba_\bl_\bu_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(T const *src, T *dst) const;\n+218\n+219\n+_\b2_\b2_\b1 int _\bG_\be_\bt_\bN_\bu_\bm_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(int channel = 0) const;\n+222\n+224 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(int channel = 0)\n+const;\n+225\n+227 template <typename REAL>\n+_\b2_\b2_\b8 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b> const * _\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(int\n+channel = 0) const;\n+229\n+_\b2_\b3_\b2 template <typename REAL> bool\n+_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\bM_\ba_\bt_\bc_\bh_\be_\bs_\bT_\by_\bp_\be() const;\n+233\n+248 template <class T> void\n+249 _\bC_\bo_\bm_\bp_\bu_\bt_\be_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bV_\ba_\bl_\bu_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(T const *src, T *dst, int channel = 0)\n+const;\n+251\n+252\n+254\n+255\n+_\b2_\b5_\b9 typedef _\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by_\b<_\bu_\bn_\bs_\bi_\bg_\bn_\be_\bd_\b _\bi_\bn_\bt_\b> _\bC_\bo_\bn_\bs_\bt_\bQ_\bu_\ba_\bd_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bA_\br_\br_\ba_\by;\n+260\n+_\b2_\b6_\b2 _\bC_\bo_\bn_\bs_\bt_\bQ_\bu_\ba_\bd_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bA_\br_\br_\ba_\by _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bQ_\bu_\ba_\bd_\bO_\bf_\bf_\bs_\be_\bt_\bs(_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be const & handle)\n+const;\n+263\n+_\b2_\b6_\b4 typedef std::vector<Index> _\bV_\be_\br_\bt_\be_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be_\bT_\ba_\bb_\bl_\be;\n+265\n+_\b2_\b6_\b7 _\bV_\be_\br_\bt_\be_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be_\bT_\ba_\bb_\bl_\be const & _\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be_\bT_\ba_\bb_\bl_\be() const {\n+268 return _vertexValenceTable;\n+269 }\n+271\n+272\n+274\n+280\n+_\b2_\b8_\b3 float _\bG_\be_\bt_\bS_\bi_\bn_\bg_\bl_\be_\bC_\br_\be_\ba_\bs_\be_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs_\bV_\ba_\bl_\bu_\be(_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be const & handle) const;\n+284\n+_\b2_\b8_\b7 float _\bG_\be_\bt_\bS_\bi_\bn_\bg_\bl_\be_\bC_\br_\be_\ba_\bs_\be_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs_\bV_\ba_\bl_\bu_\be(int array, int patch) const;\n+289\n+290\n+292\n+298\n+_\b3_\b0_\b0 _\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br _\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br() const;\n+301\n+_\b3_\b0_\b3 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bV_\ba_\br_\by_\bi_\bn_\bg_\bV_\be_\br_\bt_\bi_\bc_\be_\bs(_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be const & handle) const;\n+304\n+_\b3_\b0_\b6 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bV_\ba_\br_\by_\bi_\bn_\bg_\bV_\be_\br_\bt_\bi_\bc_\be_\bs(int array, int patch) const;\n+307\n+_\b3_\b0_\b9 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\ba_\br_\by_\bi_\bn_\bg_\bV_\be_\br_\bt_\bi_\bc_\be_\bs(int array) const;\n+310\n+_\b3_\b1_\b2 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bV_\be_\br_\bt_\bi_\bc_\be_\bs() const;\n+314\n+315\n+317\n+323\n+_\b3_\b2_\b5 int _\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs() const;\n+326\n+_\b3_\b2_\b8 _\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br _\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\bR_\be_\bg_\bu_\bl_\ba_\br(int channel = 0) const;\n+329\n+_\b3_\b3_\b1 _\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br _\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\bI_\br_\br_\be_\bg_\bu_\bl_\ba_\br(int channel = 0) const;\n+332\n+_\b3_\b3_\b4 _\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br _\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(int channel = 0) const;\n+335\n+_\b3_\b3_\b7 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bs(_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be const & handle, int channel\n+= 0) const;\n+338\n+_\b3_\b4_\b0 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bs(int array, int patch, int channel = 0)\n+const;\n+341\n+_\b3_\b4_\b3 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bs(int array, int channel = 0) const;\n+344\n+_\b3_\b4_\b6 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by _\bG_\be_\bt_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bs(int channel = 0) const;\n+347\n+_\b3_\b4_\b9 int _\bG_\be_\bt_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bS_\bt_\br_\bi_\bd_\be(int channel = 0) const;\n+350\n+_\b3_\b5_\b2 _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm(_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be const & handle, int channel =\n+0) const;\n+353\n+_\b3_\b5_\b5 _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm(int array, int patch, int channel = 0)\n+const;\n+356\n+_\b3_\b5_\b8 _\bC_\bo_\bn_\bs_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bA_\br_\br_\ba_\by _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bs(int array, int channel =\n+0) const;\n+359\n+_\b3_\b6_\b1 _\bC_\bo_\bn_\bs_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bA_\br_\br_\ba_\by _\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bs(int channel = 0) const;\n+362\n+_\b3_\b6_\b4 _\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bF_\bV_\ba_\br_\bL_\bi_\bn_\be_\ba_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn _\bG_\be_\bt_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bL_\bi_\bn_\be_\ba_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn(int\n+channel = 0) const;\n+366\n+367\n+369\n+374\n+_\b3_\b7_\b5 typedef std::vector<Index> _\bP_\ba_\bt_\bc_\bh_\bV_\be_\br_\bt_\bs_\bT_\ba_\bb_\bl_\be;\n+376\n+_\b3_\b7_\b8 _\bP_\ba_\bt_\bc_\bh_\bV_\be_\br_\bt_\bs_\bT_\ba_\bb_\bl_\be const & _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bV_\be_\br_\bt_\bi_\bc_\be_\bs_\bT_\ba_\bb_\bl_\be() const { return\n+_patchVerts; }\n+379\n+_\b3_\b8_\b1 _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bT_\ba_\bb_\bl_\be const & _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bT_\ba_\bb_\bl_\be() const { return _paramTable; }\n+382\n+_\b3_\b8_\b4 std::vector<Index> const &_\bG_\be_\bt_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs_\bI_\bn_\bd_\be_\bx_\bT_\ba_\bb_\bl_\be() const { return\n+_sharpnessIndices; }\n+385\n+_\b3_\b8_\b7 std::vector<float> const &_\bG_\be_\bt_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs_\bV_\ba_\bl_\bu_\be_\bs() const { return\n+_sharpnessValues; }\n+388\n+_\b3_\b8_\b9 typedef std::vector<unsigned int> _\bQ_\bu_\ba_\bd_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bT_\ba_\bb_\bl_\be;\n+390\n+_\b3_\b9_\b2 _\bQ_\bu_\ba_\bd_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bT_\ba_\bb_\bl_\be const & _\bG_\be_\bt_\bQ_\bu_\ba_\bd_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bT_\ba_\bb_\bl_\be() const {\n+393 return _quadOffsetsTable;\n+394 }\n+396\n+_\b3_\b9_\b8 void _\bp_\br_\bi_\bn_\bt() const;\n+399\n+400public:\n+401\n+403\n+405\n+428 template <typename REAL>\n+_\b4_\b2_\b9 void _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bB_\ba_\bs_\bi_\bs(_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be const & handle, REAL u, REAL v,\n+430 REAL wP[], REAL wDu[] = 0, REAL wDv[] = 0,\n+431 REAL wDuu[] = 0, REAL wDuv[] = 0, REAL wDvv[] = 0) const;\n+432\n+435 void _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bB_\ba_\bs_\bi_\bs(_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be const & handle, float u, float v,\n+436 float wP[], float wDu[] = 0, float wDv[] = 0,\n+437 float wDuu[] = 0, float wDuv[] = 0, float wDvv[] = 0) const;\n+438\n+441 void _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bB_\ba_\bs_\bi_\bs(_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be const & handle, double u, double v,\n+442 double wP[], double wDu[] = 0, double wDv[] = 0,\n+443 double wDuu[] = 0, double wDuv[] = 0, double wDvv[] = 0) const;\n+444\n+467 template <typename REAL>\n+_\b4_\b6_\b8 void _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bB_\ba_\bs_\bi_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be const & handle, REAL u, REAL v,\n+469 REAL wP[], REAL wDu[] = 0, REAL wDv[] = 0,\n+470 REAL wDuu[] = 0, REAL wDuv[] = 0, REAL wDvv[] = 0) const;\n+471\n+474 void _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bB_\ba_\bs_\bi_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be const & handle, float u, float v,\n+475 float wP[], float wDu[] = 0, float wDv[] = 0,\n+476 float wDuu[] = 0, float wDuv[] = 0, float wDvv[] = 0) const;\n+477\n+480 void _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bB_\ba_\bs_\bi_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be const & handle, double u, double v,\n+481 double wP[], double wDu[] = 0, double wDv[] = 0,\n+482 double wDuu[] = 0, double wDuv[] = 0, double wDvv[] = 0) const;\n+483\n+508 template <typename REAL>\n+_\b5_\b0_\b9 void _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be const & handle, REAL u, REAL v,\n+510 REAL wP[], REAL wDu[] = 0, REAL wDv[] = 0,\n+511 REAL wDuu[] = 0, REAL wDuv[] = 0, REAL wDvv[] = 0,\n+512 int channel = 0) const;\n+513\n+516 void _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be const & handle, float u, float v,\n+517 float wP[], float wDu[] = 0, float wDv[] = 0,\n+518 float wDuu[] = 0, float wDuv[] = 0, float wDvv[] = 0,\n+519 int channel = 0) const;\n+520\n+523 void _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be const & handle, double u, double\n+v,\n+524 double wP[], double wDu[] = 0, double wDv[] = 0,\n+525 double wDuu[] = 0, double wDuv[] = 0, double wDvv[] = 0,\n+526 int channel = 0) const;\n+528\n+529protected:\n+530\n+_\b5_\b3_\b1 friend class _\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bB_\bu_\bi_\bl_\bd_\be_\br;\n+532\n+533 // Factory constructor\n+_\b5_\b3_\b4 _\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be(int maxvalence);\n+535\n+_\b5_\b3_\b6 _\bI_\bn_\bd_\be_\bx _\bg_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx(int array, int patch) const;\n+537\n+_\b5_\b3_\b8 _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bA_\br_\br_\ba_\by _\bg_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bs(int arrayIndex);\n+539\n+_\b5_\b4_\b0 _\bI_\bn_\bd_\be_\bx * _\bg_\be_\bt_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs_\bI_\bn_\bd_\bi_\bc_\be_\bs(_\bI_\bn_\bd_\be_\bx arrayIndex);\n+_\b5_\b4_\b1 float * _\bg_\be_\bt_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs_\bV_\ba_\bl_\bu_\be_\bs(_\bI_\bn_\bd_\be_\bx arrayIndex);\n+542\n+543private:\n+544\n+545 //\n+546 // Patch arrays\n+547 //\n+548 struct PatchArray {\n+549 PatchArray(_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br d, int np, _\bI_\bn_\bd_\be_\bx v, _\bI_\bn_\bd_\be_\bx p, _\bI_\bn_\bd_\be_\bx qo) :\n+550 desc(d), numPatches(np), vertIndex(v),\n+551 patchIndex(p), quadOffsetIndex (qo) { }\n+552\n+553 void print() const;\n+554\n+555 _\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br desc; // type of patches in the array\n+556\n+557 int numPatches; // number of patches in the array\n+558\n+559 _\bI_\bn_\bd_\be_\bx vertIndex, // index to the first control vertex\n+560 patchIndex, // absolute index of the first patch in the array\n+561 quadOffsetIndex; // index of the first quad offset entry\n+562 };\n+563\n+564 typedef std::vector<PatchArray> PatchArrayVector;\n+565\n+566 PatchArray & getPatchArray(_\bI_\bn_\bd_\be_\bx arrayIndex);\n+567 PatchArray const & getPatchArray(_\bI_\bn_\bd_\be_\bx arrayIndex) const;\n+568\n+569 void reservePatchArrays(int numPatchArrays);\n+570 void pushPatchArray(PatchDescriptor desc, int npatches,\n+571 _\bI_\bn_\bd_\be_\bx * vidx, _\bI_\bn_\bd_\be_\bx * pidx, _\bI_\bn_\bd_\be_\bx * qoidx=0);\n+572\n+573 _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getPatchArrayVertices(int arrayIndex);\n+574\n+575 _\bI_\bn_\bd_\be_\bx findPatchArray(PatchDescriptor desc);\n+576\n+577\n+578 //\n+579 // Varying patch arrays\n+580 //\n+581 _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getPatchArrayVaryingVertices(int arrayIndex);\n+582\n+583 void allocateVaryingVertices(\n+584 PatchDescriptor desc, int numPatches);\n+585 void populateVaryingVertices();\n+586\n+587 //\n+588 // Face-varying patch channels\n+589 //\n+590\n+591 //\n+592 // FVarPatchChannel\n+593 //\n+594 // Stores a record for each patch in the primitive :\n+595 //\n+596 // - Each patch in the PatchTable has a corresponding patch in each\n+597 // face-varying patch channel. Patch vertex indices are sorted in the same\n+598 // patch-type order as PatchTable::PTables. Face-varying data for a patch\n+599 // can therefore be quickly accessed by using the patch primitive ID as\n+600 // index into patchValueOffsets to locate the face-varying control vertex\n+601 // indices.\n+602 //\n+603 // - Face-varying channels can have a different interpolation modes\n+604 //\n+605 // - Unlike \"vertex\" patches, there are no transition masks required\n+606 // for face-varying patches.\n+607 //\n+608 // - Face-varying patches still require boundary edge masks.\n+609 //\n+610 // - currently most patches with sharp boundaries but smooth interiors have\n+611 // to be isolated to level 10 : we need a special type of bicubic patch\n+612 // similar to single-crease to resolve this condition without requiring\n+613 // isolation if possible\n+614 //\n+615 struct FVarPatchChannel {\n+616 _\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bF_\bV_\ba_\br_\bL_\bi_\bn_\be_\ba_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn interpolation;\n+617\n+618 PatchDescriptor regDesc;\n+619 PatchDescriptor irregDesc;\n+620\n+621 int stride;\n+622\n+623 std::vector<Index> patchValues;\n+624 std::vector<PatchParam> patchParam;\n+625 };\n+626 typedef std::vector<FVarPatchChannel> FVarPatchChannelVector;\n+627\n+628 FVarPatchChannel & getFVarPatchChannel(int channel);\n+629 FVarPatchChannel const & getFVarPatchChannel(int channel) const;\n+630\n+631 void allocateFVarPatchChannels(int numChannels);\n+632 void allocateFVarPatchChannelValues(\n+633 PatchDescriptor regDesc, PatchDescriptor irregDesc,\n+634 int numPatches, int channel);\n+635\n+636 // deprecated\n+637 void setFVarPatchChannelLinearInterpolation(\n+638 _\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bF_\bV_\ba_\br_\bL_\bi_\bn_\be_\ba_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn interpolation, int channel);\n+639\n+640 _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getFVarValues(int channel);\n+641 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by getPatchFVarValues(int patch, int channel) const;\n+642\n+643 _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bA_\br_\br_\ba_\by getFVarPatchParams(int channel);\n+644 PatchParam getPatchFVarPatchParam(int patch, int channel) const;\n+645\n+646private:\n+647 //\n+648 // Simple private class to hold stencil table pointers of varying\n+precision,\n+649 // where the discriminant of the precision is external.\n+650 //\n+651 // NOTE that this is a simple pointer container and NOT a smart pointer\n+that\n+652 // manages the ownership of the object referred to by it.\n+653 //\n+654 class StencilTablePtr {\n+655 private:\n+656 typedef StencilTableReal<float> float_type;\n+657 typedef StencilTableReal<double> double_type;\n+658\n+659 union {\n+660 float_type * _fPtr;\n+661 double_type * _dPtr;\n+662 };\n+663\n+664 public:\n+665 StencilTablePtr() { _fPtr = 0; }\n+666 StencilTablePtr(float_type * ptr) { _fPtr = ptr; }\n+667 StencilTablePtr(double_type * ptr) { _dPtr = ptr; }\n+668\n+669 operator bool() const { return _fPtr != 0; }\n+670\n+671 void Set() { _fPtr = 0; }\n+672 void Set(float_type * ptr) { _fPtr = ptr; }\n+673 void Set(double_type * ptr) { _dPtr = ptr; }\n+674\n+675 template <typename REAL> StencilTableReal<REAL> * Get() const;\n+676 };\n+677\n+678private:\n+679\n+680 //\n+681 // Topology\n+682 //\n+683\n+684 int _maxValence, // highest vertex valence found in the mesh\n+685 _numPtexFaces; // total number of ptex faces\n+686\n+687 _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\bc_\bt_\bo_\br _patchArrays; // Vector of descriptors for arrays of\n+patches\n+688\n+689 std::vector<Index> _patchVerts; // Indices of the control vertices of the\n+patches\n+690\n+691 _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bT_\ba_\bb_\bl_\be _paramTable; // PatchParam bitfields (one per patch)\n+692\n+693 //\n+694 // Extraordinary vertex closed-form evaluation / endcap basis conversion\n+695 //\n+696 // XXXtakahito: these data will probably be replaced with mask coefficient\n+or something\n+697 // SchemeWorker populates.\n+698 //\n+699 _\bQ_\bu_\ba_\bd_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bT_\ba_\bb_\bl_\be _quadOffsetsTable; // Quad offsets (for Gregory patches)\n+700 _\bV_\be_\br_\bt_\be_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be_\bT_\ba_\bb_\bl_\be _vertexValenceTable; // Vertex valence table (for\n+Gregory patches)\n+701\n+702 StencilTablePtr _localPointStencils; // local point conversion stencils\n+703 StencilTablePtr _localPointVaryingStencils; // local point varying stencils\n+704\n+705 //\n+706 // Varying data\n+707 //\n+708 PatchDescriptor _varyingDesc;\n+709\n+710 std::vector<Index> _varyingVerts;\n+711\n+712 //\n+713 // Face-varying data\n+714 //\n+715 FVarPatchChannelVector _fvarChannels;\n+716\n+717 std::vector<StencilTablePtr> _localPointFaceVaryingStencils;\n+718\n+719 //\n+720 // 'single-crease' patch sharpness tables\n+721 //\n+722 std::vector<Index> _sharpnessIndices; // Indices of single-crease sharpness\n+(one per patch)\n+723 std::vector<float> _sharpnessValues; // Sharpness values.\n+724\n+725 //\n+726 // Construction history -- relevant to at least one public query:\n+727 //\n+728 unsigned int _isUniformLinear : 1;\n+729\n+730 //\n+731 // Precision -- only applies to local-point stencil tables\n+732 //\n+733 unsigned int _vertexPrecisionIsDouble : 1;\n+734 unsigned int _varyingPrecisionIsDouble : 1;\n+735 unsigned int _faceVaryingPrecisionIsDouble : 1;\n+736};\n+737\n+738\n+739//\n+740// Template specializations for float/double -- to be defined before used:\n+741//\n+742template <> inline StencilTableReal<float> *\n+743PatchTable::StencilTablePtr::Get<float>() const { return _fPtr; }\n+744\n+745template <> inline StencilTableReal<double> *\n+746PatchTable::StencilTablePtr::Get<double>() const { return _dPtr; }\n+747\n+_\b7_\b4_\b8template <> inline bool\n+749PatchTable::LocalPointStencilPrecisionMatchesType<float>() const {\n+750 return !_vertexPrecisionIsDouble;\n+751}\n+_\b7_\b5_\b2template <> inline bool\n+753PatchTable::LocalPointVaryingStencilPrecisionMatchesType<float>() const {\n+754 return !_varyingPrecisionIsDouble;\n+755}\n+_\b7_\b5_\b6template <> inline bool\n+757PatchTable::LocalPointFaceVaryingStencilPrecisionMatchesType<float>() const\n+{\n+758 return !_faceVaryingPrecisionIsDouble;\n+759}\n+760\n+_\b7_\b6_\b1template <> inline bool\n+762PatchTable::LocalPointStencilPrecisionMatchesType<double>() const {\n+763 return _vertexPrecisionIsDouble;\n+764}\n+_\b7_\b6_\b5template <> inline bool\n+766PatchTable::LocalPointVaryingStencilPrecisionMatchesType<double>() const {\n+767 return _varyingPrecisionIsDouble;\n+768}\n+_\b7_\b6_\b9template <> inline bool\n+770PatchTable::LocalPointFaceVaryingStencilPrecisionMatchesType<double>() const\n+{\n+771 return _faceVaryingPrecisionIsDouble;\n+772}\n+773\n+774//\n+775// StencilTable access -- backward compatible and generic:\n+776//\n+777inline _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *\n+_\b7_\b7_\b8_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be() const {\n+779 assert(LocalPointStencilPrecisionMatchesType<float>());\n+780 return static_cast<_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *>(_localPointStencils.Get<float>());\n+781}\n+782inline _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *\n+_\b7_\b8_\b3_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be() const {\n+784 assert(LocalPointVaryingStencilPrecisionMatchesType<float>());\n+785 return static_cast<_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *>(\n+786 _localPointVaryingStencils.Get<float>());\n+787}\n+788inline _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *\n+_\b7_\b8_\b9_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(int channel) const {\n+790 assert(LocalPointFaceVaryingStencilPrecisionMatchesType<float>());\n+791 if (channel >= 0 && channel < (int)_localPointFaceVaryingStencils.size()) {\n+792 return static_cast<_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *>(\n+793 _localPointFaceVaryingStencils[channel].Get<float>());\n+794 }\n+795 return NULL;\n+796}\n+797\n+798template <typename REAL>\n+799inline _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b> const *\n+_\b8_\b0_\b0_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be() const {\n+801 assert(LocalPointStencilPrecisionMatchesType<REAL>());\n+802 return _localPointStencils.Get<REAL>();\n+803}\n+804template <typename REAL>\n+805inline _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b> const *\n+_\b8_\b0_\b6_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be() const {\n+807 assert(LocalPointVaryingStencilPrecisionMatchesType<REAL>());\n+808 return _localPointVaryingStencils.Get<REAL>();\n+809}\n+810template <typename REAL>\n+811inline _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b> const *\n+_\b8_\b1_\b2_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(int channel) const {\n+813 assert(LocalPointFaceVaryingStencilPrecisionMatchesType<REAL>());\n+814 if (channel >= 0 && channel < (int)_localPointFaceVaryingStencils.size()) {\n+815 return _localPointFaceVaryingStencils[channel].Get<REAL>();\n+816 }\n+817 return NULL;\n+818}\n+819\n+820\n+821//\n+822// Computation of local point values:\n+823//\n+824template <class T>\n+825inline void\n+_\b8_\b2_\b6_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bV_\ba_\bl_\bu_\be_\bs(T const *src, T *dst) const {\n+827 assert(LocalPointStencilPrecisionMatchesType<float>());\n+828 if (_localPointStencils) {\n+829 _localPointStencils.Get<float>()->UpdateValues(src, dst);\n+830 }\n+831}\n+832\n+833template <class T>\n+834inline void\n+_\b8_\b3_\b5_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bV_\ba_\bl_\bu_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(T const *src, T *dst) const {\n+836 assert(LocalPointVaryingStencilPrecisionMatchesType<float>());\n+837 if (_localPointVaryingStencils) {\n+838 _localPointVaryingStencils.Get<float>()->UpdateValues(src, dst);\n+839 }\n+840}\n+841\n+842template <class T>\n+843inline void\n+_\b8_\b4_\b4_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bV_\ba_\bl_\bu_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(T const *src, T *dst, int\n+channel) const {\n+845 assert(LocalPointFaceVaryingStencilPrecisionMatchesType<float>());\n+846 if (channel >= 0 && channel < (int)_localPointFaceVaryingStencils.size()) {\n+847 if (_localPointFaceVaryingStencils[channel]) {\n+848 _localPointFaceVaryingStencils[channel].Get<float>()->UpdateValues(src,\n+dst);\n+849 }\n+850 }\n+851}\n+852\n+853\n+854//\n+855// Basis evaluation overloads\n+856//\n+857inline void\n+_\b8_\b5_\b8_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bB_\ba_\bs_\bi_\bs(_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be const & handle, float u, float v,\n+859 float wP[], float wDu[], float wDv[],\n+860 float wDuu[], float wDuv[], float wDvv[]) const {\n+861\n+862 EvaluateBasis<float>(handle, u, v, wP, wDu, wDv, wDuu, wDuv, wDvv);\n+863}\n+864inline void\n+_\b8_\b6_\b5_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bB_\ba_\bs_\bi_\bs(_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be const & handle, double u, double v,\n+866 double wP[], double wDu[], double wDv[],\n+867 double wDuu[], double wDuv[], double wDvv[]) const {\n+868\n+869 EvaluateBasis<double>(handle, u, v, wP, wDu, wDv, wDuu, wDuv, wDvv);\n+870}\n+871\n+872inline void\n+_\b8_\b7_\b3_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bB_\ba_\bs_\bi_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be const & handle, float u, float\n+v,\n+874 float wP[], float wDu[], float wDv[],\n+875 float wDuu[], float wDuv[], float wDvv[]) const {\n+876\n+877 EvaluateBasisVarying<float>(handle, u, v, wP, wDu, wDv, wDuu, wDuv, wDvv);\n+878}\n+879inline void\n+_\b8_\b8_\b0_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bB_\ba_\bs_\bi_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be const & handle, double u,\n+double v,\n+881 double wP[], double wDu[], double wDv[],\n+882 double wDuu[], double wDuv[], double wDvv[]) const {\n+883\n+884 EvaluateBasisVarying<double>(handle, u, v, wP, wDu, wDv, wDuu, wDuv, wDvv);\n+885}\n+886\n+887inline void\n+_\b8_\b8_\b8_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be const & handle, float u,\n+float v,\n+889 float wP[], float wDu[], float wDv[],\n+890 float wDuu[], float wDuv[], float wDvv[], int channel) const {\n+891\n+892 EvaluateBasisFaceVarying<float>(handle, u, v, wP, wDu, wDv, wDuu, wDuv,\n+wDvv, channel);\n+893}\n+894inline void\n+_\b8_\b9_\b5_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be const & handle, double u,\n+double v,\n+896 double wP[], double wDu[], double wDv[],\n+897 double wDuu[], double wDuv[], double wDvv[], int channel) const {\n+898\n+899 EvaluateBasisFaceVarying<double>(handle, u, v, wP, wDu, wDv, wDuu, wDuv,\n+wDvv, channel);\n+900}\n+901\n+902} // end namespace Far\n+903\n+904} // end namespace OPENSUBDIV_VERSION\n+905using namespace OPENSUBDIV_VERSION;\n+906\n+907} // end namespace OpenSubdiv\n+908\n+909#endif /* OPENSUBDIV3_FAR_PATCH_TABLE */\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n+Vtr::ConstIndexArray ConstIndexArray\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b4_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bT_\ba_\bb_\bl_\be\n+std::vector< PatchParam > PatchParamTable\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b._\bh_\b:_\b2_\b4_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n+Vtr::IndexArray IndexArray\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b4_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx\n+Vtr::Index Index\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b4_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bA_\br_\br_\ba_\by\n+Vtr::Array< PatchParam > PatchParamArray\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b._\bh_\b:_\b2_\b4_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\bc_\bt_\bo_\br\n+std::vector< PatchArray > PatchArrayVector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b1_\b3_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n+Describes the type of a patch.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b4_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bM_\ba_\bp\n+An quadtree-based map connecting coarse faces to their sub-patches.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bM_\ba_\bp_\b._\bh_\b:_\b4_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm\n+Patch parameterization.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b._\bh_\b:_\b1_\b5_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+Container for arrays of parametric patches.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\ba_\br_\by_\bi_\bn_\bg_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n+ConstIndexArray GetPatchArrayVaryingVertices(int array) const\n+Returns the varying vertex indices for the patches in array.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bg_\be_\bt_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs_\bV_\ba_\bl_\bu_\be_\bs\n+float * getSharpnessValues(Index arrayIndex)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bV_\be_\br_\bt_\bi_\bc_\be_\bs_\bT_\ba_\bb_\bl_\be\n+PatchVertsTable const & GetPatchControlVerticesTable() const\n+Get the table of patch control vertices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b3_\b7_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n+_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bV_\ba_\bl_\bu_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n+void ComputeLocalPointValuesFaceVarying(T const *src, T *dst, int channel=0)\n+const\n+Updates local point face-varying values.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b8_\b4_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n+ConstIndexArray GetVaryingVertices() const\n+Returns an array of varying vertex indices for the patches.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bV_\ba_\bl_\bu_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n+void ComputeLocalPointValuesVarying(T const *src, T *dst) const\n+Updates local point varying values.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b8_\b3_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bV_\ba_\br_\by_\bi_\bn_\bg_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n+ConstIndexArray GetPatchVaryingVertices(PatchHandle const &handle) const\n+Returns the varying vertex indices for a given patch.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bI_\bs_\bF_\be_\ba_\bt_\bu_\br_\be_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be\n+bool IsFeatureAdaptive() const\n+True if the patches are of feature adaptive types.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bM_\ba_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be\n+int GetMaxValence() const\n+Returns max vertex valence.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b9_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n+StencilTableReal< REAL > const * GetLocalPointStencilTable() const\n+Returns the stencil table to compute local point vertex values.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n+StencilTable const * GetLocalPointStencilTable() const\n+Returns the stencil table to compute local point vertex values.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b7_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bg_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bs\n+PatchParamArray getPatchParams(int arrayIndex)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bs\n+ConstIndexArray GetPatchArrayFVarValues(int array, int channel=0) const\n+Returns the value indices for the patches in array in channel.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs_\bV_\ba_\bl_\bu_\be_\bs\n+std::vector< float > const & GetSharpnessValues() const\n+Returns sharpness values table.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b3_\b8_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be_\bT_\ba_\bb_\bl_\be\n+std::vector< Index > VertexValenceTable\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b2_\b6_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm\n+PatchParam GetPatchFVarPatchParam(int array, int patch, int channel=0) const\n+Returns the face-varying params for a given patch channel.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bV_\ba_\br_\by_\bi_\bn_\bg_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n+ConstIndexArray GetPatchVaryingVertices(int array, int patch) const\n+Returns the varying vertex indices for a given patch.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+PatchTable(PatchTable const &src)\n+Copy constructor.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bs\n+int GetNumPatchArrays() const\n+Returns the number of patch arrays in the table.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n+ConstIndexArray GetPatchVertices(PatchHandle const &handle) const\n+Returns the control vertex indices for the patch identified by handle.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+PatchTable(int maxvalence)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n+_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\bM_\ba_\bt_\bc_\bh_\be_\bs_\bT_\by_\bp_\be\n+bool LocalPointFaceVaryingStencilPrecisionMatchesType() const\n+Tests if the precision of the stencil table to compute local point face-varying\n+values matches the gi...\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bT_\ba_\bb_\bl_\be\n+PatchParamTable const & GetPatchParamTable() const\n+Returns the PatchParamTable (PatchParams order matches patch array sorting)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b3_\b8_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be_\bT_\ba_\bb_\bl_\be\n+VertexValenceTable const & GetVertexValenceTable() const\n+Returns the 'VertexValences' table (vertex neighborhoods table)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b2_\b6_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n+_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n+StencilTable const * GetLocalPointFaceVaryingStencilTable(int channel=0) const\n+Returns the stencil table to compute local point face-varying values.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b8_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n+int GetNumControlVertices(int array) const\n+Returns the number of control vertices in array.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\b~_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+~PatchTable()\n+Destructor.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bB_\ba_\bs_\bi_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n+void EvaluateBasisFaceVarying(PatchHandle const &handle, REAL u, REAL v, REAL\n+wP[], REAL wDu[]=0, REAL wDv[]=0, REAL wDuu[]=0, REAL wDuv[]=0, REAL wDvv[]=0,\n+int channel=0) const\n+Evaluate basis functions for a face-varying value and derivatives at a given\n+(u,v) parametric locatio...\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bQ_\bu_\ba_\bd_\bO_\bf_\bf_\bs_\be_\bt_\bs\n+ConstQuadOffsetsArray GetPatchQuadOffsets(PatchHandle const &handle) const\n+Returns the 'QuadOffsets' for the Gregory patch identified by handle.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n+_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\bI_\br_\br_\be_\bg_\bu_\bl_\ba_\br\n+PatchDescriptor GetFVarPatchDescriptorIrregular(int channel=0) const\n+Returns the irregular patch descriptor for channel.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n+_\bG_\be_\bt_\bS_\bi_\bn_\bg_\bl_\be_\bC_\br_\be_\ba_\bs_\be_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs_\bV_\ba_\bl_\bu_\be\n+float GetSingleCreasePatchSharpnessValue(int array, int patch) const\n+Returns the crease sharpness for the patch in array if it is a single-crease\n+patch,...\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bg_\be_\bt_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs_\bI_\bn_\bd_\bi_\bc_\be_\bs\n+Index * getSharpnessIndices(Index arrayIndex)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bV_\ba_\bl_\bu_\be_\bs\n+void ComputeLocalPointValues(T const *src, T *dst) const\n+Updates local point vertex values.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b8_\b2_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n+_\bG_\be_\bt_\bS_\bi_\bn_\bg_\bl_\be_\bC_\br_\be_\ba_\bs_\be_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs_\bV_\ba_\bl_\bu_\be\n+float GetSingleCreasePatchSharpnessValue(PatchHandle const &handle) const\n+Returns the crease sharpness for the patch identified by handle if it is a\n+single-crease patch,...\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm\n+PatchParam GetPatchParam(int array, int patch) const\n+Returns the PatchParam for patch in array.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bs\n+ConstIndexArray GetPatchFVarValues(int array, int patch, int channel=0) const\n+Returns the value indices for a given patch in channel.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\bR_\be_\bg_\bu_\bl_\ba_\br\n+PatchDescriptor GetFVarPatchDescriptorRegular(int channel=0) const\n+Returns the regular patch descriptor for channel.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n+PatchDescriptor GetPatchDescriptor(PatchHandle const &handle) const\n+Returns the PatchDescriptor for the patch identified by handle.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bV_\be_\br_\bt_\bs_\bT_\ba_\bb_\bl_\be\n+std::vector< Index > PatchVertsTable\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b3_\b7_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bQ_\bu_\ba_\bd_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bT_\ba_\bb_\bl_\be\n+QuadOffsetsTable const & GetQuadOffsetsTable() const\n+Returns the quad-offsets table.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b3_\b9_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+int GetNumPatches(int array) const\n+Returns the number of patches in array.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n+PatchDescriptor GetVaryingPatchDescriptor() const\n+Returns the varying patch descriptor.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bs\n+ConstIndexArray GetPatchFVarValues(PatchHandle const &handle, int channel=0)\n+const\n+Returns the value indices for a given patch in channel.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bs\n+ConstPatchParamArray const GetPatchParams(int array) const\n+Returns the PatchParams for the patches in array.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bV_\be_\br_\bt_\bi_\bc_\be_\bs_\bT_\bo_\bt_\ba_\bl\n+int GetNumControlVerticesTotal() const\n+Returns the total number of control vertex indices in the table.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b8_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs\n+int GetNumFVarChannels() const\n+Returns the number of face-varying channels.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bs\n+ConstPatchParamArray GetPatchArrayFVarPatchParams(int array, int channel=0)\n+const\n+Returns the face-varying for a given patch in array in channel.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bg_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx\n+Index getPatchIndex(int array, int patch) const\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bs\n+int GetNumLocalPoints() const\n+Returns the number of local vertex points.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n+_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\bM_\ba_\bt_\bc_\bh_\be_\bs_\bT_\by_\bp_\be\n+bool LocalPointVaryingStencilPrecisionMatchesType() const\n+Tests if the precision of the stencil table to compute local point varying\n+values matches the given f...\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n+ConstIndexArray GetPatchArrayVertices(int array) const\n+Returns the control vertex indices for the patches in array.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bP_\bt_\be_\bx_\bF_\ba_\bc_\be_\bs\n+int GetNumPtexFaces() const\n+Returns the total number of ptex faces in the mesh.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b9_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bs\n+ConstIndexArray GetFVarValues(int channel=0) const\n+Returns an array of value indices for the patches in channel.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bQ_\bu_\ba_\bd_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bA_\br_\br_\ba_\by\n+Vtr::ConstArray< unsigned int > ConstQuadOffsetsArray\n+Accessors for the gregory patch evaluation buffers. These methods will be\n+deprecated.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b2_\b5_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bB_\ba_\bs_\bi_\bs\n+void EvaluateBasis(PatchHandle const &handle, REAL u, REAL v, REAL wP[], REAL\n+wDu[]=0, REAL wDv[]=0, REAL wDuu[]=0, REAL wDuv[]=0, REAL wDvv[]=0) const\n+Evaluate basis functions for position and derivatives at a given (u,v)\n+parametric location of a patch...\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n+_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n+StencilTableReal< REAL > const * GetLocalPointFaceVaryingStencilTable(int\n+channel=0) const\n+Returns the stencil table to compute local point face-varying values.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bT_\bo_\bt_\ba_\bl\n+int GetNumPatchesTotal() const\n+Returns the total number of patches stored in the table.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm\n+PatchParam GetPatchParam(PatchHandle const &handle) const\n+Returns a PatchParam for the patch identified by handle.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bp_\br_\bi_\bn_\bt\n+void print() const\n+debug helper\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n+_\bG_\be_\bt_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bL_\bi_\bn_\be_\ba_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+Sdc::Options::FVarLinearInterpolation GetFVarChannelLinearInterpolation(int\n+channel=0) const\n+Deprecated.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs_\bI_\bn_\bd_\be_\bx_\bT_\ba_\bb_\bl_\be\n+std::vector< Index > const & GetSharpnessIndexTable() const\n+Returns a sharpness index table for each patch (if exists)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b3_\b8_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n+PatchDescriptor GetPatchArrayDescriptor(int array) const\n+Returns the PatchDescriptor for the patches in array.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bB_\bu_\bi_\bl_\bd_\be_\br\n+friend class PatchTableBuilder\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b3_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bB_\ba_\bs_\bi_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n+void EvaluateBasisVarying(PatchHandle const &handle, REAL u, REAL v, REAL wP[],\n+REAL wDu[]=0, REAL wDv[]=0, REAL wDuu[]=0, REAL wDuv[]=0, REAL wDvv[]=0) const\n+Evaluate basis functions for a varying value and derivatives at a given (u,v)\n+parametric location of ...\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n+_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n+StencilTable const * GetLocalPointVaryingStencilTable() const\n+Returns the stencil table to compute local point varying values.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b8_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bQ_\bu_\ba_\bd_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bT_\ba_\bb_\bl_\be\n+std::vector< unsigned int > QuadOffsetsTable\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b3_\b8_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n+ConstIndexArray GetPatchVertices(int array, int patch) const\n+Returns the control vertex indices for patch in array.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm\n+PatchParam GetPatchFVarPatchParam(PatchHandle const &handle, int channel=0)\n+const\n+Returns the value indices for a given patch in channel.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bS_\bt_\br_\bi_\bd_\be\n+int GetFVarValueStride(int channel=0) const\n+Returns the stride between patches in the value index array of channel.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\bs\n+ConstPatchParamArray GetFVarPatchParams(int channel=0) const\n+Returns an array of face-varying patch param for channel.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n+PatchDescriptor GetFVarPatchDescriptor(int channel=0) const\n+Returns the default/irregular patch descriptor for channel.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n+int GetNumLocalPointsVarying() const\n+Returns the number of local varying points.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n+_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\bM_\ba_\bt_\bc_\bh_\be_\bs_\bT_\by_\bp_\be\n+bool LocalPointStencilPrecisionMatchesType() const\n+Tests if the precision of the stencil table to compute local point vertex\n+values matches the given fl...\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n+_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n+StencilTableReal< REAL > const * GetLocalPointVaryingStencilTable() const\n+Returns the stencil table to compute local point varying values.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n+int GetNumLocalPointsFaceVarying(int channel=0) const\n+Returns the number of local face-varying points for channel.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be\n+Handle that can be used as unique patch identifier within PatchTable.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be_\b:_\b:_\bp_\ba_\bt_\bc_\bh_\bI_\bn_\bd_\be_\bx\n+Index patchIndex\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be_\b:_\b:_\ba_\br_\br_\ba_\by_\bI_\bn_\bd_\be_\bx\n+Index arrayIndex\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bH_\ba_\bn_\bd_\bl_\be_\b:_\b:_\bv_\be_\br_\bt_\bI_\bn_\bd_\be_\bx\n+Index vertIndex\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl\n+Table of subdivision stencils.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b4_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n+Stencil table class wrapping the template for compatibility.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b2_\b7_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bF_\bV_\ba_\br_\bL_\bi_\bn_\be_\ba_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+FVarLinearInterpolation\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b6_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b5_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bA_\br_\br_\ba_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b1_\b0_\b5\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bo_\bp_\be_\bn_\bg_\bl_\b._\bh\n+    * _\bf_\ba_\br\n+    * _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00845.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00845.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/opencl.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/far/topologyDescriptor.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -87,24 +87,49 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">opencl.h File Reference</div></div>\n+  <div class=\"summary\">\n+<a href=\"#nested-classes\">Classes</a> &#124;\n+<a href=\"#namespaces\">Namespaces</a>  </div>\n+  <div class=\"headertitle\"><div class=\"title\">topologyDescriptor.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n-<div class=\"textblock\"><code>#include &lt;CL/opencl.h&gt;</code><br />\n+<div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00833_source.html\">../far/topologyRefiner.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00827_source.html\">../far/topologyRefinerFactory.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00839_source.html\">../far/error.h</a>&quot;</code><br />\n+<code>#include &lt;cassert&gt;</code><br />\n </div>\n <p><a href=\"a00845_source.html\">Go to the source code of this file.</a></p>\n+<table class=\"memberdecls\">\n+<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n+Classes</h2></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01105.html\">TopologyDescriptor</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">A simple reference to raw topology data for use with <a class=\"el\" href=\"a01117.html\" title=\"Factory for constructing TopologyRefiners from specific mesh classes.\">TopologyRefinerFactory</a>.  <a href=\"a01105.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01109.html\">TopologyDescriptor::FVarChannel</a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+</table><table class=\"memberdecls\">\n+<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n+Namespaces</h2></td></tr>\n+<tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far</a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+</table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00845.html\">opencl.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7f420b72a822828cfa8b0561c695a5cc.html\">far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00845.html\">topologyDescriptor.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,11 +1,30 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-opencl.h File Reference\n-#include <CL/opencl.h>\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+topologyDescriptor.h File Reference\n+#include \"../version.h\"\n+#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh\"\n+#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh\"\n+#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\be_\br_\br_\bo_\br_\b._\bh\"\n+#include <cassert>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n+C\bCl\bla\bas\bss\bse\bes\bs\n+struct \u00a0 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n+\u00a0        A simple reference to raw topology data for use with\n+         _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl\n+\u00a0\n+N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n+\u00a0\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n+\u00a0\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br\n+\u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bo_\bp_\be_\bn_\bc_\bl_\b._\bh\n+    * _\bf_\ba_\br\n+    * _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00845_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00845_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/opencl.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/far/topologyDescriptor.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">opencl.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">topologyDescriptor.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00845.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2014 Pixar</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2014 DreamWorks Animation LLC.</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -118,33 +118,146 @@\n <div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_OPENCL_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_OPENCL_H</span></div>\n-<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n-<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#if defined(OPENSUBDIV_HAS_CLEW)</span></div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#  include &lt;clew.h&gt;</span></div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#else</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#  if defined(__APPLE__)</span></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#    include &lt;OpenCL/opencl.h&gt;</span></div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"preprocessor\">#  else</span></div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"preprocessor\">#    include &lt;CL/opencl.h&gt;</span></div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"preprocessor\">#  endif</span></div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"preprocessor\">#endif</span></div>\n+<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_FAR_TOPOLOGY_DESCRIPTOR_H</span></div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#define OPENSUBDIV3_FAR_TOPOLOGY_DESCRIPTOR_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span> </div>\n+<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span> </div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#include &quot;../far/topologyRefiner.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../far/topologyRefinerFactory.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../far/error.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span> </div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"preprocessor\">#include &lt;cassert&gt;</span></div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span> </div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n <div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span> </div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_CL_UTIL_H</span></div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"keyword\">namespace </span>Far {</div>\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00049\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01105.html\">   49</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01105.html\">TopologyDescriptor</a> {</div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span> </div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01105.html#a29cac0aff7e6d15e55e9a8285799fe87\">   51</a></span>    <span class=\"keywordtype\">int</span>           <a class=\"code hl_variable\" href=\"a01105.html#a29cac0aff7e6d15e55e9a8285799fe87\">numVertices</a>,</div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01105.html#a523d3dc0299fc8921db1c26cc908f084\">   52</a></span>                  <a class=\"code hl_variable\" href=\"a01105.html#a523d3dc0299fc8921db1c26cc908f084\">numFaces</a>;</div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span> </div>\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01105.html#a79e9d33aa1203818c4b765007d10be63\">   54</a></span>    <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span>   * <a class=\"code hl_variable\" href=\"a01105.html#a79e9d33aa1203818c4b765007d10be63\">numVertsPerFace</a>;</div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01105.html#a3f2274c4d3dd54c4e24144e504972b34\">   55</a></span>    <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> <span class=\"keyword\">const</span> * <a class=\"code hl_variable\" href=\"a01105.html#a3f2274c4d3dd54c4e24144e504972b34\">vertIndicesPerFace</a>;</div>\n+<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span> </div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01105.html#ab8975c25a0f7d3a9f1fca83e267bc21e\">   57</a></span>    <span class=\"keywordtype\">int</span>           <a class=\"code hl_variable\" href=\"a01105.html#ab8975c25a0f7d3a9f1fca83e267bc21e\">numCreases</a>;</div>\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01105.html#a411a2a927b0270c9e4753dc219763ba5\">   58</a></span>    <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> <span class=\"keyword\">const</span> * <a class=\"code hl_variable\" href=\"a01105.html#a411a2a927b0270c9e4753dc219763ba5\">creaseVertexIndexPairs</a>;</div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01105.html#a8cd977015d3ffffc1146c5a4e17d65e0\">   59</a></span>    <span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * <a class=\"code hl_variable\" href=\"a01105.html#a8cd977015d3ffffc1146c5a4e17d65e0\">creaseWeights</a>;</div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span> </div>\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01105.html#a5ea0fa49c8b73deae98be1cdf67a48dd\">   61</a></span>    <span class=\"keywordtype\">int</span>           <a class=\"code hl_variable\" href=\"a01105.html#a5ea0fa49c8b73deae98be1cdf67a48dd\">numCorners</a>;</div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01105.html#a3bf794743edda29fbee0653b65b75ba4\">   62</a></span>    <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> <span class=\"keyword\">const</span> * <a class=\"code hl_variable\" href=\"a01105.html#a3bf794743edda29fbee0653b65b75ba4\">cornerVertexIndices</a>;</div>\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01105.html#a6d938f6b0a9ff0fa377ef675aa2c7fda\">   63</a></span>    <span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * <a class=\"code hl_variable\" href=\"a01105.html#a6d938f6b0a9ff0fa377ef675aa2c7fda\">cornerWeights</a>;</div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span>        </div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01105.html#aba3adf422acc0fc845afeba3a5df2b8f\">   65</a></span>    <span class=\"keywordtype\">int</span>           <a class=\"code hl_variable\" href=\"a01105.html#aba3adf422acc0fc845afeba3a5df2b8f\">numHoles</a>;</div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01105.html#a4fcd8e9a636d89045d364607f2b035a1\">   66</a></span>    <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> <span class=\"keyword\">const</span> * <a class=\"code hl_variable\" href=\"a01105.html#a4fcd8e9a636d89045d364607f2b035a1\">holeIndices</a>;</div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span> </div>\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01105.html#a75fa7c3542be9d51069674ed3f9d078c\">   68</a></span>    <span class=\"keywordtype\">bool</span>          <a class=\"code hl_variable\" href=\"a01105.html#a75fa7c3542be9d51069674ed3f9d078c\">isLeftHanded</a>;</div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span> </div>\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span>    <span class=\"comment\">//  Face-varying data channel -- value indices correspond to vertex indices,</span></div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>    <span class=\"comment\">//  i.e. one for every vertex of every face:</span></div>\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>    <span class=\"comment\">//</span></div>\n+<div class=\"foldopen\" id=\"foldopen00073\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01109.html\">   73</a></span>    <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01109.html\">FVarChannel</a> {</div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span> </div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01109.html#aa0d5f7bfb1ba01e0cb648ff6fc249437\">   75</a></span>        <span class=\"keywordtype\">int</span>           <a class=\"code hl_variable\" href=\"a01109.html#aa0d5f7bfb1ba01e0cb648ff6fc249437\">numValues</a>;</div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01109.html#a123fe78d0e97dc72f5dfd9f27f93f699\">   76</a></span>        <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> <span class=\"keyword\">const</span> * <a class=\"code hl_variable\" href=\"a01109.html#a123fe78d0e97dc72f5dfd9f27f93f699\">valueIndices</a>;</div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span> </div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01109.html#a029d281df9f5dc8c00b52a35f8e0dfde\">   78</a></span>        <a class=\"code hl_function\" href=\"a01109.html#a029d281df9f5dc8c00b52a35f8e0dfde\">FVarChannel</a>() : <a class=\"code hl_variable\" href=\"a01109.html#aa0d5f7bfb1ba01e0cb648ff6fc249437\">numValues</a>(0), <a class=\"code hl_variable\" href=\"a01109.html#a123fe78d0e97dc72f5dfd9f27f93f699\">valueIndices</a>(0) { }</div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>    };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span>        </div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01105.html#ad17511fd9b0cea1b15b6bc31c0fc3e80\">   81</a></span>    <span class=\"keywordtype\">int</span>                 <a class=\"code hl_variable\" href=\"a01105.html#ad17511fd9b0cea1b15b6bc31c0fc3e80\">numFVarChannels</a>;</div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01105.html#a222697ec045f92879ae194eb2d92b526\">   82</a></span>    <a class=\"code hl_struct\" href=\"a01109.html\">FVarChannel</a> <span class=\"keyword\">const</span> * <a class=\"code hl_variable\" href=\"a01105.html#a222697ec045f92879ae194eb2d92b526\">fvarChannels</a>;</div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span> </div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01105.html#a8209f1b69b0162ee2e7065d91088113d\">   84</a></span>    <a class=\"code hl_function\" href=\"a01105.html#a8209f1b69b0162ee2e7065d91088113d\">TopologyDescriptor</a>();</div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span> </div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span> </div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span><span class=\"comment\">//  Forward declarations of required TopologyRefinerFactory&lt;TopologyDescriptor&gt;</span></div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span><span class=\"comment\">//  specializations (defined internally):</span></div>\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span><span class=\"comment\">// @cond EXCLUDE_DOXYGEN</span></div>\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span> </div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span><span class=\"keywordtype\">bool</span></div>\n+<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span><a class=\"code hl_function\" href=\"a01117.html#a4c574c458d080393a258f48e0ab20938\">TopologyRefinerFactory&lt;TopologyDescriptor&gt;::resizeComponentTopology</a>(</div>\n+<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>    <a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; refiner, <a class=\"code hl_struct\" href=\"a01105.html\">TopologyDescriptor</a> <span class=\"keyword\">const</span> &amp; desc);</div>\n+<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span> </div>\n+<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n+<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span><span class=\"keywordtype\">bool</span></div>\n+<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span><a class=\"code hl_function\" href=\"a01117.html#a098784adfa428c620663baf9c2d8e41a\">TopologyRefinerFactory&lt;TopologyDescriptor&gt;::assignComponentTopology</a>(</div>\n+<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span>    <a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; refiner, <a class=\"code hl_struct\" href=\"a01105.html\">TopologyDescriptor</a> <span class=\"keyword\">const</span> &amp; desc);</div>\n+<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span> </div>\n+<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n+<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span><span class=\"keywordtype\">bool</span></div>\n+<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span><a class=\"code hl_function\" href=\"a01117.html#a3df7295af055588a7b4f20d4da021ad1\">TopologyRefinerFactory&lt;TopologyDescriptor&gt;::assignComponentTags</a>(</div>\n+<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span>    <a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; refiner, <a class=\"code hl_struct\" href=\"a01105.html\">TopologyDescriptor</a> <span class=\"keyword\">const</span> &amp; desc);</div>\n+<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span> </div>\n+<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n+<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span><span class=\"keywordtype\">bool</span></div>\n+<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span><a class=\"code hl_function\" href=\"a01117.html#a6999e259e020bc687d09ef616ab3825b\">TopologyRefinerFactory&lt;TopologyDescriptor&gt;::assignFaceVaryingTopology</a>(</div>\n+<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span>    <a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> &amp; refiner, <a class=\"code hl_struct\" href=\"a01105.html\">TopologyDescriptor</a> <span class=\"keyword\">const</span> &amp; desc);</div>\n+<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span> </div>\n+<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n+<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span><span class=\"keywordtype\">void</span></div>\n+<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\">  116</span><a class=\"code hl_function\" href=\"a01117.html#a0c4c1d44df4c480bd0adfa9e86891b39\">TopologyRefinerFactory&lt;TopologyDescriptor&gt;::reportInvalidTopology</a>(</div>\n+<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span>    TopologyError errCode, <span class=\"keywordtype\">char</span> <span class=\"keyword\">const</span> * msg, <a class=\"code hl_struct\" href=\"a01105.html\">TopologyDescriptor</a> <span class=\"keyword\">const</span> &amp; desc);</div>\n+<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\">  118</span> </div>\n+<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span><span class=\"comment\">// @endcond</span></div>\n+<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span> </div>\n+<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\">  121</span>} <span class=\"comment\">// end namespace Far</span></div>\n+<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span> </div>\n+<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span> </div>\n+<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_FAR_TOPOLOGY_DESCRIPTOR_H */</span><span class=\"preprocessor\"></span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa00908_html_ab34c85a48f33dfe7b8bf4d966fdebbf2\"><div class=\"ttname\"><a href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">OpenSubdiv::OPENSUBDIV_VERSION::Far::Index</a></div><div class=\"ttdeci\">Vtr::Index Index</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01486_source.html#l00041\">types.h:41</a></div></div>\n+<div class=\"ttc\" id=\"aa01105_html\"><div class=\"ttname\"><a href=\"a01105.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyDescriptor</a></div><div class=\"ttdoc\">A simple reference to raw topology data for use with TopologyRefinerFactory.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00845_source.html#l00049\">topologyDescriptor.h:49</a></div></div>\n+<div class=\"ttc\" id=\"aa01105_html_a222697ec045f92879ae194eb2d92b526\"><div class=\"ttname\"><a href=\"a01105.html#a222697ec045f92879ae194eb2d92b526\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyDescriptor::fvarChannels</a></div><div class=\"ttdeci\">FVarChannel const  * fvarChannels</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00845_source.html#l00082\">topologyDescriptor.h:82</a></div></div>\n+<div class=\"ttc\" id=\"aa01105_html_a29cac0aff7e6d15e55e9a8285799fe87\"><div class=\"ttname\"><a href=\"a01105.html#a29cac0aff7e6d15e55e9a8285799fe87\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyDescriptor::numVertices</a></div><div class=\"ttdeci\">int numVertices</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00845_source.html#l00051\">topologyDescriptor.h:51</a></div></div>\n+<div class=\"ttc\" id=\"aa01105_html_a3bf794743edda29fbee0653b65b75ba4\"><div class=\"ttname\"><a href=\"a01105.html#a3bf794743edda29fbee0653b65b75ba4\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyDescriptor::cornerVertexIndices</a></div><div class=\"ttdeci\">Index const  * cornerVertexIndices</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00845_source.html#l00062\">topologyDescriptor.h:62</a></div></div>\n+<div class=\"ttc\" id=\"aa01105_html_a3f2274c4d3dd54c4e24144e504972b34\"><div class=\"ttname\"><a href=\"a01105.html#a3f2274c4d3dd54c4e24144e504972b34\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyDescriptor::vertIndicesPerFace</a></div><div class=\"ttdeci\">Index const  * vertIndicesPerFace</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00845_source.html#l00055\">topologyDescriptor.h:55</a></div></div>\n+<div class=\"ttc\" id=\"aa01105_html_a411a2a927b0270c9e4753dc219763ba5\"><div class=\"ttname\"><a href=\"a01105.html#a411a2a927b0270c9e4753dc219763ba5\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyDescriptor::creaseVertexIndexPairs</a></div><div class=\"ttdeci\">Index const  * creaseVertexIndexPairs</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00845_source.html#l00058\">topologyDescriptor.h:58</a></div></div>\n+<div class=\"ttc\" id=\"aa01105_html_a4fcd8e9a636d89045d364607f2b035a1\"><div class=\"ttname\"><a href=\"a01105.html#a4fcd8e9a636d89045d364607f2b035a1\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyDescriptor::holeIndices</a></div><div class=\"ttdeci\">Index const  * holeIndices</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00845_source.html#l00066\">topologyDescriptor.h:66</a></div></div>\n+<div class=\"ttc\" id=\"aa01105_html_a523d3dc0299fc8921db1c26cc908f084\"><div class=\"ttname\"><a href=\"a01105.html#a523d3dc0299fc8921db1c26cc908f084\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyDescriptor::numFaces</a></div><div class=\"ttdeci\">int numFaces</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00845_source.html#l00052\">topologyDescriptor.h:52</a></div></div>\n+<div class=\"ttc\" id=\"aa01105_html_a5ea0fa49c8b73deae98be1cdf67a48dd\"><div class=\"ttname\"><a href=\"a01105.html#a5ea0fa49c8b73deae98be1cdf67a48dd\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyDescriptor::numCorners</a></div><div class=\"ttdeci\">int numCorners</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00845_source.html#l00061\">topologyDescriptor.h:61</a></div></div>\n+<div class=\"ttc\" id=\"aa01105_html_a6d938f6b0a9ff0fa377ef675aa2c7fda\"><div class=\"ttname\"><a href=\"a01105.html#a6d938f6b0a9ff0fa377ef675aa2c7fda\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyDescriptor::cornerWeights</a></div><div class=\"ttdeci\">float const  * cornerWeights</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00845_source.html#l00063\">topologyDescriptor.h:63</a></div></div>\n+<div class=\"ttc\" id=\"aa01105_html_a75fa7c3542be9d51069674ed3f9d078c\"><div class=\"ttname\"><a href=\"a01105.html#a75fa7c3542be9d51069674ed3f9d078c\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyDescriptor::isLeftHanded</a></div><div class=\"ttdeci\">bool isLeftHanded</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00845_source.html#l00068\">topologyDescriptor.h:68</a></div></div>\n+<div class=\"ttc\" id=\"aa01105_html_a79e9d33aa1203818c4b765007d10be63\"><div class=\"ttname\"><a href=\"a01105.html#a79e9d33aa1203818c4b765007d10be63\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyDescriptor::numVertsPerFace</a></div><div class=\"ttdeci\">int const  * numVertsPerFace</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00845_source.html#l00054\">topologyDescriptor.h:54</a></div></div>\n+<div class=\"ttc\" id=\"aa01105_html_a8209f1b69b0162ee2e7065d91088113d\"><div class=\"ttname\"><a href=\"a01105.html#a8209f1b69b0162ee2e7065d91088113d\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyDescriptor::TopologyDescriptor</a></div><div class=\"ttdeci\">TopologyDescriptor()</div></div>\n+<div class=\"ttc\" id=\"aa01105_html_a8cd977015d3ffffc1146c5a4e17d65e0\"><div class=\"ttname\"><a href=\"a01105.html#a8cd977015d3ffffc1146c5a4e17d65e0\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyDescriptor::creaseWeights</a></div><div class=\"ttdeci\">float const  * creaseWeights</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00845_source.html#l00059\">topologyDescriptor.h:59</a></div></div>\n+<div class=\"ttc\" id=\"aa01105_html_ab8975c25a0f7d3a9f1fca83e267bc21e\"><div class=\"ttname\"><a href=\"a01105.html#ab8975c25a0f7d3a9f1fca83e267bc21e\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyDescriptor::numCreases</a></div><div class=\"ttdeci\">int numCreases</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00845_source.html#l00057\">topologyDescriptor.h:57</a></div></div>\n+<div class=\"ttc\" id=\"aa01105_html_aba3adf422acc0fc845afeba3a5df2b8f\"><div class=\"ttname\"><a href=\"a01105.html#aba3adf422acc0fc845afeba3a5df2b8f\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyDescriptor::numHoles</a></div><div class=\"ttdeci\">int numHoles</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00845_source.html#l00065\">topologyDescriptor.h:65</a></div></div>\n+<div class=\"ttc\" id=\"aa01105_html_ad17511fd9b0cea1b15b6bc31c0fc3e80\"><div class=\"ttname\"><a href=\"a01105.html#ad17511fd9b0cea1b15b6bc31c0fc3e80\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyDescriptor::numFVarChannels</a></div><div class=\"ttdeci\">int numFVarChannels</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00845_source.html#l00081\">topologyDescriptor.h:81</a></div></div>\n+<div class=\"ttc\" id=\"aa01109_html\"><div class=\"ttname\"><a href=\"a01109.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyDescriptor::FVarChannel</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00845_source.html#l00073\">topologyDescriptor.h:73</a></div></div>\n+<div class=\"ttc\" id=\"aa01109_html_a029d281df9f5dc8c00b52a35f8e0dfde\"><div class=\"ttname\"><a href=\"a01109.html#a029d281df9f5dc8c00b52a35f8e0dfde\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyDescriptor::FVarChannel::FVarChannel</a></div><div class=\"ttdeci\">FVarChannel()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00845_source.html#l00078\">topologyDescriptor.h:78</a></div></div>\n+<div class=\"ttc\" id=\"aa01109_html_a123fe78d0e97dc72f5dfd9f27f93f699\"><div class=\"ttname\"><a href=\"a01109.html#a123fe78d0e97dc72f5dfd9f27f93f699\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyDescriptor::FVarChannel::valueIndices</a></div><div class=\"ttdeci\">Index const  * valueIndices</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00845_source.html#l00076\">topologyDescriptor.h:76</a></div></div>\n+<div class=\"ttc\" id=\"aa01109_html_aa0d5f7bfb1ba01e0cb648ff6fc249437\"><div class=\"ttname\"><a href=\"a01109.html#aa0d5f7bfb1ba01e0cb648ff6fc249437\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyDescriptor::FVarChannel::numValues</a></div><div class=\"ttdeci\">int numValues</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00845_source.html#l00075\">topologyDescriptor.h:75</a></div></div>\n+<div class=\"ttc\" id=\"aa01117_html_a098784adfa428c620663baf9c2d8e41a\"><div class=\"ttname\"><a href=\"a01117.html#a098784adfa428c620663baf9c2d8e41a\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::assignComponentTopology</a></div><div class=\"ttdeci\">static bool assignComponentTopology(TopologyRefiner &amp;newRefiner, MESH const &amp;mesh)</div><div class=\"ttdoc\">Specify the relationships between vertices, faces, etc. ie the face-vertices, vertex-faces,...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00827_source.html#l00621\">topologyRefinerFactory.h:621</a></div></div>\n+<div class=\"ttc\" id=\"aa01117_html_a0c4c1d44df4c480bd0adfa9e86891b39\"><div class=\"ttname\"><a href=\"a01117.html#a0c4c1d44df4c480bd0adfa9e86891b39\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::reportInvalidTopology</a></div><div class=\"ttdeci\">static void reportInvalidTopology(TopologyError errCode, char const *msg, MESH const &amp;mesh)</div><div class=\"ttdoc\">(Optional) Control run-time topology validation and error reporting</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00827_source.html#l00707\">topologyRefinerFactory.h:707</a></div></div>\n+<div class=\"ttc\" id=\"aa01117_html_a3df7295af055588a7b4f20d4da021ad1\"><div class=\"ttname\"><a href=\"a01117.html#a3df7295af055588a7b4f20d4da021ad1\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::assignComponentTags</a></div><div class=\"ttdeci\">static bool assignComponentTags(TopologyRefiner &amp;newRefiner, MESH const &amp;mesh)</div><div class=\"ttdoc\">(Optional) Specify edge or vertex sharpness or face holes</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00827_source.html#l00690\">topologyRefinerFactory.h:690</a></div></div>\n+<div class=\"ttc\" id=\"aa01117_html_a4c574c458d080393a258f48e0ab20938\"><div class=\"ttname\"><a href=\"a01117.html#a4c574c458d080393a258f48e0ab20938\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::resizeComponentTopology</a></div><div class=\"ttdeci\">static bool resizeComponentTopology(TopologyRefiner &amp;newRefiner, MESH const &amp;mesh)</div><div class=\"ttdoc\">Specify the number of vertices, faces, face-vertices, etc.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00827_source.html#l00580\">topologyRefinerFactory.h:580</a></div></div>\n+<div class=\"ttc\" id=\"aa01117_html_a6999e259e020bc687d09ef616ab3825b\"><div class=\"ttname\"><a href=\"a01117.html#a6999e259e020bc687d09ef616ab3825b\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::assignFaceVaryingTopology</a></div><div class=\"ttdeci\">static bool assignFaceVaryingTopology(TopologyRefiner &amp;newRefiner, MESH const &amp;mesh)</div><div class=\"ttdoc\">(Optional) Specify face-varying data per face</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00827_source.html#l00674\">topologyRefinerFactory.h:674</a></div></div>\n+<div class=\"ttc\" id=\"aa01121_html\"><div class=\"ttname\"><a href=\"a01121.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner</a></div><div class=\"ttdoc\">Stores topology data for a specified set of refinement options.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00051\">topologyRefiner.h:51</a></div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00845.html\">opencl.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7f420b72a822828cfa8b0561c695a5cc.html\">far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00845.html\">topologyDescriptor.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-opencl.h\n+topologyDescriptor.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2014 Pixar\n+2// Copyright 2014 DreamWorks Animation LLC.\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -23,26 +23,208 @@\n 17//\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n-24\n-25#ifndef OPENSUBDIV3_OSD_OPENCL_H\n-26#define OPENSUBDIV3_OSD_OPENCL_H\n-27\n-28#if defined(OPENSUBDIV_HAS_CLEW)\n-29# include <clew.h>\n-30#else\n-31# if defined(__APPLE__)\n-32# include <OpenCL/opencl.h>\n-33# else\n-34# include <CL/opencl.h>\n-35# endif\n-36#endif\n+24#ifndef OPENSUBDIV3_FAR_TOPOLOGY_DESCRIPTOR_H\n+25#define OPENSUBDIV3_FAR_TOPOLOGY_DESCRIPTOR_H\n+26\n+27#include \"../version.h\"\n+28\n+29#include \"../far/topologyRefiner.h\"\n+30#include \"../far/topologyRefinerFactory.h\"\n+31#include \"../far/error.h\"\n+32\n+33#include <cassert>\n+34\n+35namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+36namespace OPENSUBDIV_VERSION {\n 37\n-38#endif // OPENSUBDIV3_OSD_CL_UTIL_H\n+38namespace Far {\n+39\n+_\b4_\b9struct _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br {\n+50\n+_\b5_\b1 int _\bn_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs,\n+_\b5_\b2 _\bn_\bu_\bm_\bF_\ba_\bc_\be_\bs;\n+53\n+_\b5_\b4 int const * _\bn_\bu_\bm_\bV_\be_\br_\bt_\bs_\bP_\be_\br_\bF_\ba_\bc_\be;\n+_\b5_\b5 _\bI_\bn_\bd_\be_\bx const * _\bv_\be_\br_\bt_\bI_\bn_\bd_\bi_\bc_\be_\bs_\bP_\be_\br_\bF_\ba_\bc_\be;\n+56\n+_\b5_\b7 int _\bn_\bu_\bm_\bC_\br_\be_\ba_\bs_\be_\bs;\n+_\b5_\b8 _\bI_\bn_\bd_\be_\bx const * _\bc_\br_\be_\ba_\bs_\be_\bV_\be_\br_\bt_\be_\bx_\bI_\bn_\bd_\be_\bx_\bP_\ba_\bi_\br_\bs;\n+_\b5_\b9 float const * _\bc_\br_\be_\ba_\bs_\be_\bW_\be_\bi_\bg_\bh_\bt_\bs;\n+60\n+_\b6_\b1 int _\bn_\bu_\bm_\bC_\bo_\br_\bn_\be_\br_\bs;\n+_\b6_\b2 _\bI_\bn_\bd_\be_\bx const * _\bc_\bo_\br_\bn_\be_\br_\bV_\be_\br_\bt_\be_\bx_\bI_\bn_\bd_\bi_\bc_\be_\bs;\n+_\b6_\b3 float const * _\bc_\bo_\br_\bn_\be_\br_\bW_\be_\bi_\bg_\bh_\bt_\bs;\n+64\n+_\b6_\b5 int _\bn_\bu_\bm_\bH_\bo_\bl_\be_\bs;\n+_\b6_\b6 _\bI_\bn_\bd_\be_\bx const * _\bh_\bo_\bl_\be_\bI_\bn_\bd_\bi_\bc_\be_\bs;\n+67\n+_\b6_\b8 bool _\bi_\bs_\bL_\be_\bf_\bt_\bH_\ba_\bn_\bd_\be_\bd;\n+69\n+70 // Face-varying data channel -- value indices correspond to vertex indices,\n+71 // i.e. one for every vertex of every face:\n+72 //\n+_\b7_\b3 struct _\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl {\n+74\n+_\b7_\b5 int _\bn_\bu_\bm_\bV_\ba_\bl_\bu_\be_\bs;\n+_\b7_\b6 _\bI_\bn_\bd_\be_\bx const * _\bv_\ba_\bl_\bu_\be_\bI_\bn_\bd_\bi_\bc_\be_\bs;\n+77\n+_\b7_\b8 _\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl() : _\bn_\bu_\bm_\bV_\ba_\bl_\bu_\be_\bs(0), _\bv_\ba_\bl_\bu_\be_\bI_\bn_\bd_\bi_\bc_\be_\bs(0) { }\n+79 };\n+80\n+_\b8_\b1 int _\bn_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs;\n+_\b8_\b2 _\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl const * _\bf_\bv_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs;\n+83\n+_\b8_\b4 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br();\n+85};\n+86\n+87\n+88//\n+89// Forward declarations of required\n+TopologyRefinerFactory<TopologyDescriptor>\n+90// specializations (defined internally):\n+91//\n+92// @cond EXCLUDE_DOXYGEN\n+93\n+94template <>\n+95bool\n+96_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b>_\b:_\b:_\br_\be_\bs_\bi_\bz_\be_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by(\n+97 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & refiner, _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const & desc);\n+98\n+99template <>\n+100bool\n+101_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by(\n+102 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & refiner, _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const & desc);\n+103\n+104template <>\n+105bool\n+106_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\bT_\ba_\bg_\bs(\n+107 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & refiner, _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const & desc);\n+108\n+109template <>\n+110bool\n+111_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by(\n+112 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & refiner, _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const & desc);\n+113\n+114template <>\n+115void\n+116_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b>_\b:_\b:_\br_\be_\bp_\bo_\br_\bt_\bI_\bn_\bv_\ba_\bl_\bi_\bd_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by(\n+117 TopologyError errCode, char const * msg, _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const & desc);\n+118\n+119// @endcond\n+120\n+121} // end namespace Far\n+122\n+123} // end namespace OPENSUBDIV_VERSION\n+124using namespace OPENSUBDIV_VERSION;\n+125} // end namespace OpenSubdiv\n+126\n+127#endif /* OPENSUBDIV3_FAR_TOPOLOGY_DESCRIPTOR_H */\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx\n+Vtr::Index Index\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b4_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n+A simple reference to raw topology data for use with TopologyRefinerFactory.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b4_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bf_\bv_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs\n+FVarChannel const * fvarChannels\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b8_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bn_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n+int numVertices\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b5_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bc_\bo_\br_\bn_\be_\br_\bV_\be_\br_\bt_\be_\bx_\bI_\bn_\bd_\bi_\bc_\be_\bs\n+Index const * cornerVertexIndices\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b6_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bv_\be_\br_\bt_\bI_\bn_\bd_\bi_\bc_\be_\bs_\bP_\be_\br_\bF_\ba_\bc_\be\n+Index const * vertIndicesPerFace\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b5_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bc_\br_\be_\ba_\bs_\be_\bV_\be_\br_\bt_\be_\bx_\bI_\bn_\bd_\be_\bx_\bP_\ba_\bi_\br_\bs\n+Index const * creaseVertexIndexPairs\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b5_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bh_\bo_\bl_\be_\bI_\bn_\bd_\bi_\bc_\be_\bs\n+Index const * holeIndices\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b6_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bn_\bu_\bm_\bF_\ba_\bc_\be_\bs\n+int numFaces\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b5_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bn_\bu_\bm_\bC_\bo_\br_\bn_\be_\br_\bs\n+int numCorners\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b6_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bc_\bo_\br_\bn_\be_\br_\bW_\be_\bi_\bg_\bh_\bt_\bs\n+float const * cornerWeights\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b6_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bi_\bs_\bL_\be_\bf_\bt_\bH_\ba_\bn_\bd_\be_\bd\n+bool isLeftHanded\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b6_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bn_\bu_\bm_\bV_\be_\br_\bt_\bs_\bP_\be_\br_\bF_\ba_\bc_\be\n+int const * numVertsPerFace\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b5_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n+TopologyDescriptor()\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bc_\br_\be_\ba_\bs_\be_\bW_\be_\bi_\bg_\bh_\bt_\bs\n+float const * creaseWeights\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b5_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bn_\bu_\bm_\bC_\br_\be_\ba_\bs_\be_\bs\n+int numCreases\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b5_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bn_\bu_\bm_\bH_\bo_\bl_\be_\bs\n+int numHoles\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b6_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bn_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs\n+int numFVarChannels\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b8_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b7_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\b:_\b:\n+_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl\n+FVarChannel()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b7_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\b:_\b:\n+_\bv_\ba_\bl_\bu_\be_\bI_\bn_\bd_\bi_\bc_\be_\bs\n+Index const * valueIndices\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b7_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\b:_\b:_\bn_\bu_\bm_\bV_\ba_\bl_\bu_\be_\bs\n+int numValues\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b7_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n+_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by\n+static bool assignComponentTopology(TopologyRefiner &newRefiner, MESH const\n+&mesh)\n+Specify the relationships between vertices, faces, etc. ie the face-vertices,\n+vertex-faces,...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b6_\b2_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n+_\br_\be_\bp_\bo_\br_\bt_\bI_\bn_\bv_\ba_\bl_\bi_\bd_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by\n+static void reportInvalidTopology(TopologyError errCode, char const *msg, MESH\n+const &mesh)\n+(Optional) Control run-time topology validation and error reporting\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b7_\b0_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n+_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\bT_\ba_\bg_\bs\n+static bool assignComponentTags(TopologyRefiner &newRefiner, MESH const &mesh)\n+(Optional) Specify edge or vertex sharpness or face holes\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b6_\b9_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n+_\br_\be_\bs_\bi_\bz_\be_\bC_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by\n+static bool resizeComponentTopology(TopologyRefiner &newRefiner, MESH const\n+&mesh)\n+Specify the number of vertices, faces, face-vertices, etc.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b8_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n+_\ba_\bs_\bs_\bi_\bg_\bn_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by\n+static bool assignFaceVaryingTopology(TopologyRefiner &newRefiner, MESH const\n+&mesh)\n+(Optional) Specify face-varying data per face\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b6_\b7_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br\n+Stores topology data for a specified set of refinement options.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b5_\b1\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bo_\bp_\be_\bn_\bc_\bl_\b._\bh\n+    * _\bf_\ba_\br\n+    * _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00848.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00848.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/glComputeEvaluator.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/far/ptexIndices.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -90,47 +90,43 @@\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> &#124;\n <a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">glComputeEvaluator.h File Reference</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">ptexIndices.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00842_source.html\">../osd/opengl.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a01489_source.html\">../osd/types.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00866_source.html\">../osd/bufferDescriptor.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00833_source.html\">../far/topologyRefiner.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a01486_source.html\">../far/types.h</a>&quot;</code><br />\n+<code>#include &lt;vector&gt;</code><br />\n </div>\n <p><a href=\"a00848_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01217.html\">GLStencilTableSSBO</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">GL stencil table (Shader Storage buffer)  <a href=\"a01217.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01221.html\">GLComputeEvaluator</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01041.html\">PtexIndices</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Object used to compute and query ptex face indices.  <a href=\"a01041.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00848.html\">glComputeEvaluator.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7f420b72a822828cfa8b0561c695a5cc.html\">far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00848.html\">ptexIndices.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,30 +1,26 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-glComputeEvaluator.h File Reference\n+ptexIndices.h File Reference\n #include \"../version.h\"\n-#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bo_\bp_\be_\bn_\bg_\bl_\b._\bh\"\n-#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n-#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh\"\n+#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh\"\n+#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n+#include <vector>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bS_\bS_\bB_\bO\n-\u00a0       GL stencil table (Shader Storage buffer) _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n-class \u00a0 _\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n+class \u00a0 _\bP_\bt_\be_\bx_\bI_\bn_\bd_\bi_\bc_\be_\bs\n+\u00a0       Object used to compute and query ptex face indices. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n-\u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh\n+    * _\bf_\ba_\br\n+    * _\bp_\bt_\be_\bx_\bI_\bn_\bd_\bi_\bc_\be_\bs_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00848.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00848.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,4 +1,3 @@\n var a00848 = [\n-    [\"GLStencilTableSSBO\", \"a01217.html\", \"a01217\"],\n-    [\"GLComputeEvaluator\", \"a01221.html\", \"a01221\"]\n+    [\"PtexIndices\", \"a01041.html\", \"a01041\"]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00848_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00848_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/glComputeEvaluator.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/far/ptexIndices.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,15 +92,15 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">glComputeEvaluator.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">ptexIndices.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00848.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2015 Pixar</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n@@ -118,1133 +118,81 @@\n <div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_GL_COMPUTE_EVALUATOR_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_GL_COMPUTE_EVALUATOR_H</span></div>\n-<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n-<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../osd/opengl.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../osd/types.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &quot;../osd/bufferDescriptor.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_FAR_PTEX_INDICES_H</span></div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#define OPENSUBDIV3_FAR_PTEX_INDICES_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span> </div>\n+<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span> </div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#include &quot;../far/topologyRefiner.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../far/types.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n <div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n <div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n <div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n <div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n <div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">namespace </span>Far {</div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span>    <span class=\"keyword\">class </span>PatchTable;</div>\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span>    <span class=\"keyword\">class </span>StencilTable;</div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span>    <span class=\"keyword\">class </span>LimitStencilTable;</div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span>}</div>\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span> </div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"keyword\">namespace </span>Osd {</div>\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00051\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01217.html\">   51</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01217.html\">GLStencilTableSSBO</a> {</div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"foldopen\" id=\"foldopen00053\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01217.html#af687fa998cd70f0e79b87d59c96c6a72\">   53</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01217.html\">GLStencilTableSSBO</a> *<a class=\"code hl_function\" href=\"a01217.html#af687fa998cd70f0e79b87d59c96c6a72\">Create</a>(<a class=\"code hl_class\" href=\"a01065.html\">Far::StencilTable</a> <span class=\"keyword\">const</span> *stencilTable,</div>\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span>                                       <span class=\"keywordtype\">void</span> *deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span>        <span class=\"keywordflow\">return</span> <span class=\"keyword\">new</span> <a class=\"code hl_class\" href=\"a01217.html\">GLStencilTableSSBO</a>(stencilTable);</div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span>    }</div>\n-</div>\n-<div class=\"foldopen\" id=\"foldopen00058\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01217.html#ab739faa3277bb2ea54b5198b3b664f37\">   58</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01217.html\">GLStencilTableSSBO</a> *<a class=\"code hl_function\" href=\"a01217.html#ab739faa3277bb2ea54b5198b3b664f37\">Create</a>(</div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span>        <a class=\"code hl_class\" href=\"a01081.html\">Far::LimitStencilTable</a> <span class=\"keyword\">const</span> *limitStencilTable,</div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span>        <span class=\"keywordtype\">void</span> *deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span>        <span class=\"keywordflow\">return</span> <span class=\"keyword\">new</span> <a class=\"code hl_class\" href=\"a01217.html\">GLStencilTableSSBO</a>(limitStencilTable);</div>\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>    }</div>\n-</div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00046\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01041.html\">   46</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01041.html\">PtexIndices</a> {</div>\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span> </div>\n+<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span> </div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01041.html#a7b5dd5f4c76d684d924adf477eeea0a3\">   51</a></span>    <a class=\"code hl_function\" href=\"a01041.html#a7b5dd5f4c76d684d924adf477eeea0a3\">PtexIndices</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> &amp;refiner);</div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span> </div>\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01041.html#af22a241c3be4bc69a948371d108e7cfa\">   54</a></span>    <a class=\"code hl_function\" href=\"a01041.html#af22a241c3be4bc69a948371d108e7cfa\">~PtexIndices</a>();</div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span> </div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span> </div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span> </div>\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01041.html#a9920fb01c4b75c94a953a98008a4baba\">   63</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01041.html#a9920fb01c4b75c94a953a98008a4baba\">GetNumFaces</a>() <span class=\"keyword\">const</span>;</div>\n <div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span> </div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01217.html#aaacee6173a99bb3d7bbfb0a352ef9828\">   65</a></span>    <span class=\"keyword\">explicit</span> <a class=\"code hl_function\" href=\"a01217.html#aaacee6173a99bb3d7bbfb0a352ef9828\">GLStencilTableSSBO</a>(<a class=\"code hl_class\" href=\"a01065.html\">Far::StencilTable</a> <span class=\"keyword\">const</span> *stencilTable);</div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01217.html#a27a911fea9736fbe935c0edc4de9b998\">   66</a></span>    <span class=\"keyword\">explicit</span> <a class=\"code hl_function\" href=\"a01217.html#a27a911fea9736fbe935c0edc4de9b998\">GLStencilTableSSBO</a>(<a class=\"code hl_class\" href=\"a01081.html\">Far::LimitStencilTable</a> <span class=\"keyword\">const</span> *limitStencilTable);</div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01217.html#a4bef0031fb9295436a4049ef5801fec5\">   67</a></span>    <a class=\"code hl_function\" href=\"a01217.html#a4bef0031fb9295436a4049ef5801fec5\">~GLStencilTableSSBO</a>();</div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01041.html#a5fbaaa1a52a6d7622b1d306bf0a16624\">   67</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01041.html#a5fbaaa1a52a6d7622b1d306bf0a16624\">GetFaceId</a>(<a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> f) <span class=\"keyword\">const</span>;</div>\n <div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span> </div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span>    <span class=\"comment\">// interfaces needed for GLSLComputeKernel</span></div>\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01217.html#ab44562bc3f0ba09049f60ed0553e158a\">   70</a></span>    GLuint <a class=\"code hl_function\" href=\"a01217.html#ab44562bc3f0ba09049f60ed0553e158a\">GetSizesBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _sizes; }</div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01217.html#a8ccadebd4c9c36a15a5cbec461bd07e7\">   71</a></span>    GLuint <a class=\"code hl_function\" href=\"a01217.html#a8ccadebd4c9c36a15a5cbec461bd07e7\">GetOffsetsBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _offsets; }</div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01217.html#a6bacf93d27488cfcbf2e66d23b4073a1\">   72</a></span>    GLuint <a class=\"code hl_function\" href=\"a01217.html#a6bacf93d27488cfcbf2e66d23b4073a1\">GetIndicesBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _indices; }</div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01217.html#a18892fc15bb6ed7166dc6bfd5aaf0065\">   73</a></span>    GLuint <a class=\"code hl_function\" href=\"a01217.html#a18892fc15bb6ed7166dc6bfd5aaf0065\">GetWeightsBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _weights; }</div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01217.html#a2e90e1efa299fe2698ce2d1aa87ade49\">   74</a></span>    GLuint <a class=\"code hl_function\" href=\"a01217.html#a2e90e1efa299fe2698ce2d1aa87ade49\">GetDuWeightsBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _duWeights; }</div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01217.html#ae418f2ccdfaec79f90a3ccb92cd511a2\">   75</a></span>    GLuint <a class=\"code hl_function\" href=\"a01217.html#ae418f2ccdfaec79f90a3ccb92cd511a2\">GetDvWeightsBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _dvWeights; }</div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01217.html#abe929adc8bb596b84057169f5ade4663\">   76</a></span>    GLuint <a class=\"code hl_function\" href=\"a01217.html#abe929adc8bb596b84057169f5ade4663\">GetDuuWeightsBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _duuWeights; }</div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01217.html#a0684aca639f38b5f1b0c8efffe5f8bd8\">   77</a></span>    GLuint <a class=\"code hl_function\" href=\"a01217.html#a0684aca639f38b5f1b0c8efffe5f8bd8\">GetDuvWeightsBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _duvWeights; }</div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01217.html#aadc7c7c9d50c030f7aee9e486b3b1d55\">   78</a></span>    GLuint <a class=\"code hl_function\" href=\"a01217.html#aadc7c7c9d50c030f7aee9e486b3b1d55\">GetDvvWeightsBuffer</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _dvvWeights; }</div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01217.html#a65836d2070b943c8fecbad926d074de2\">   79</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01217.html#a65836d2070b943c8fecbad926d074de2\">GetNumStencils</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _numStencils; }</div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span> </div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>    GLuint _sizes;</div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>    GLuint _offsets;</div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span>    GLuint _indices;</div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>    GLuint _weights;</div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>    GLuint _duWeights;</div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>    GLuint _dvWeights;</div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>    GLuint _duuWeights;</div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>    GLuint _duvWeights;</div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>    GLuint _dvvWeights;</div>\n-<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>    <span class=\"keywordtype\">int</span> _numStencils;</div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>};</div>\n-</div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01041.html#a8a146d5966d7372bdd2557e990e52adc\">   83</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01041.html#a8a146d5966d7372bdd2557e990e52adc\">GetAdjacency</a>(</div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span>        <a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> &amp;refiner,</div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>        <span class=\"keywordtype\">int</span> face, <span class=\"keywordtype\">int</span> quadrant,</div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>        <span class=\"keywordtype\">int</span> adjFaces[4], <span class=\"keywordtype\">int</span> adjEdges[4]) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span> </div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span> </div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span> </div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>    <span class=\"keywordtype\">void</span> initializePtexIndices(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> &amp;refiner);</div>\n <div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span> </div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span><span class=\"comment\">// ---------------------------------------------------------------------------</span></div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span><span class=\"keyword\">private</span>:</div>\n <div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00096\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html\">   96</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01221.html\">GLComputeEvaluator</a> {</div>\n-<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#a2c24b70c9312d8dff3fecb9ddea52c44\">   98</a></span>    <span class=\"keyword\">typedef</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_typedef\" href=\"a01221.html#a2c24b70c9312d8dff3fecb9ddea52c44\">Instantiatable</a>;</div>\n-<div class=\"foldopen\" id=\"foldopen00099\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#ab4c3cfbc05a1b3c7e08aac8258e38139\">   99</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01221.html\">GLComputeEvaluator</a> * <a class=\"code hl_function\" href=\"a01221.html#ab4c3cfbc05a1b3c7e08aac8258e38139\">Create</a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span>                                       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span>                                       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span>                                       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span>                                       <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01221.html#ab4c3cfbc05a1b3c7e08aac8258e38139\">Create</a>(srcDesc, dstDesc, duDesc, dvDesc,</div>\n-<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span>                      <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span>                      <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span>                      <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span>                      deviceContext);</div>\n-<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00111\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#aeeb1dfce13c31a0b2af5f68091c85352\">  111</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01221.html\">GLComputeEvaluator</a> * <a class=\"code hl_function\" href=\"a01221.html#aeeb1dfce13c31a0b2af5f68091c85352\">Create</a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span>                                       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span>                                       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span>                                       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span>                                       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\">  116</span>                                       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span>                                       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\">  118</span>                                       <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span>        (void)deviceContext;  <span class=\"comment\">// not used</span></div>\n-<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span>        <a class=\"code hl_class\" href=\"a01221.html\">GLComputeEvaluator</a> *instance = <span class=\"keyword\">new</span> <a class=\"code hl_function\" href=\"a01221.html#a9fe54ab76e32fb2dc6f7cd631ce2e678\">GLComputeEvaluator</a>();</div>\n-<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\">  121</span>        <span class=\"keywordflow\">if</span> (instance-&gt;<a class=\"code hl_function\" href=\"a01221.html#ade1086349c1a452f60bcf281383ceec2\">Compile</a>(srcDesc, dstDesc, duDesc, dvDesc,</div>\n-<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span>                              duuDesc, duvDesc, dvvDesc))</div>\n-<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span>            <span class=\"keywordflow\">return</span> instance;</div>\n-<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span>        <span class=\"keyword\">delete</span> instance;</div>\n-<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span>        <span class=\"keywordflow\">return</span> NULL;</div>\n-<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span> </div>\n-<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#a9fe54ab76e32fb2dc6f7cd631ce2e678\">  129</a></span>    <a class=\"code hl_function\" href=\"a01221.html#a9fe54ab76e32fb2dc6f7cd631ce2e678\">GLComputeEvaluator</a>();</div>\n-<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span> </div>\n-<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#a2f39a072765ebdc9d4d2b4289685b815\">  132</a></span>    <a class=\"code hl_function\" href=\"a01221.html#a2f39a072765ebdc9d4d2b4289685b815\">~GLComputeEvaluator</a>();</div>\n-<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\">  133</span> </div>\n-<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\">  139</span> </div>\n-<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\">  167</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00168\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#a5a332778562ac0aaa3b59e7d504329f6\">  168</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01221.html#a5a332778562ac0aaa3b59e7d504329f6\">EvalStencils</a>(</div>\n-<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\">  169</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\">  170</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n-<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\">  172</span>        <a class=\"code hl_class\" href=\"a01221.html\">GLComputeEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n-<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\">  173</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\">  174</span> </div>\n-<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\">  175</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\">  176</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01221.html#a5a332778562ac0aaa3b59e7d504329f6\">EvalStencils</a>(srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span>                                          dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\">  178</span>                                          stencilTable);</div>\n-<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\">  179</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\">  180</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n-<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\">  181</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\">  182</span>            instance = <a class=\"code hl_function\" href=\"a01221.html#ab4c3cfbc05a1b3c7e08aac8258e38139\">Create</a>(srcDesc, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\">  183</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\">  184</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>());</div>\n-<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\">  185</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\">  186</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01221.html#a5a332778562ac0aaa3b59e7d504329f6\">EvalStencils</a>(srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\">  187</span>                                                dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\">  188</span>                                                stencilTable);</div>\n-<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\">  189</span>                <span class=\"keyword\">delete</span> instance;</div>\n-<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\">  190</span>                <span class=\"keywordflow\">return</span> r;</div>\n-<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\">  191</span>            }</div>\n-<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\">  192</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\">  193</span>        }</div>\n-<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\">  194</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\">  195</span> </div>\n-<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\">  235</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00236\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#a4290a43277fbcd7d5f55aaa369939e54\">  236</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01221.html#a4290a43277fbcd7d5f55aaa369939e54\">EvalStencils</a>(</div>\n-<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\">  237</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\">  238</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\">  239</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\">  240</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\">  241</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n-<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\">  242</span>        <a class=\"code hl_class\" href=\"a01221.html\">GLComputeEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n-<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\">  243</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\">  244</span> </div>\n-<div class=\"line\"><a id=\"l00245\" name=\"l00245\"></a><span class=\"lineno\">  245</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\">  246</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01221.html#a5a332778562ac0aaa3b59e7d504329f6\">EvalStencils</a>(srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l00247\" name=\"l00247\"></a><span class=\"lineno\">  247</span>                                          dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00248\" name=\"l00248\"></a><span class=\"lineno\">  248</span>                                          duBuffer,  duDesc,</div>\n-<div class=\"line\"><a id=\"l00249\" name=\"l00249\"></a><span class=\"lineno\">  249</span>                                          dvBuffer,  dvDesc,</div>\n-<div class=\"line\"><a id=\"l00250\" name=\"l00250\"></a><span class=\"lineno\">  250</span>                                          stencilTable);</div>\n-<div class=\"line\"><a id=\"l00251\" name=\"l00251\"></a><span class=\"lineno\">  251</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00252\" name=\"l00252\"></a><span class=\"lineno\">  252</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n-<div class=\"line\"><a id=\"l00253\" name=\"l00253\"></a><span class=\"lineno\">  253</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00254\" name=\"l00254\"></a><span class=\"lineno\">  254</span>            instance = <a class=\"code hl_function\" href=\"a01221.html#ab4c3cfbc05a1b3c7e08aac8258e38139\">Create</a>(srcDesc, dstDesc, duDesc, dvDesc);</div>\n-<div class=\"line\"><a id=\"l00255\" name=\"l00255\"></a><span class=\"lineno\">  255</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l00256\" name=\"l00256\"></a><span class=\"lineno\">  256</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01221.html#a5a332778562ac0aaa3b59e7d504329f6\">EvalStencils</a>(srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l00257\" name=\"l00257\"></a><span class=\"lineno\">  257</span>                                                dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00258\" name=\"l00258\"></a><span class=\"lineno\">  258</span>                                                duBuffer,  duDesc,</div>\n-<div class=\"line\"><a id=\"l00259\" name=\"l00259\"></a><span class=\"lineno\">  259</span>                                                dvBuffer,  dvDesc,</div>\n-<div class=\"line\"><a id=\"l00260\" name=\"l00260\"></a><span class=\"lineno\">  260</span>                                                stencilTable);</div>\n-<div class=\"line\"><a id=\"l00261\" name=\"l00261\"></a><span class=\"lineno\">  261</span>                <span class=\"keyword\">delete</span> instance;</div>\n-<div class=\"line\"><a id=\"l00262\" name=\"l00262\"></a><span class=\"lineno\">  262</span>                <span class=\"keywordflow\">return</span> r;</div>\n-<div class=\"line\"><a id=\"l00263\" name=\"l00263\"></a><span class=\"lineno\">  263</span>            }</div>\n-<div class=\"line\"><a id=\"l00264\" name=\"l00264\"></a><span class=\"lineno\">  264</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00265\" name=\"l00265\"></a><span class=\"lineno\">  265</span>        }</div>\n-<div class=\"line\"><a id=\"l00266\" name=\"l00266\"></a><span class=\"lineno\">  266</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00267\" name=\"l00267\"></a><span class=\"lineno\">  267</span> </div>\n-<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\">  325</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00326\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#ab914d6c888b41d82916edf17e35d5fbe\">  326</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01221.html#ab914d6c888b41d82916edf17e35d5fbe\">EvalStencils</a>(</div>\n-<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\">  327</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\">  328</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\">  329</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\">  330</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\">  331</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\">  332</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l00333\" name=\"l00333\"></a><span class=\"lineno\">  333</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00334\" name=\"l00334\"></a><span class=\"lineno\">  334</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n-<div class=\"line\"><a id=\"l00335\" name=\"l00335\"></a><span class=\"lineno\">  335</span>        <a class=\"code hl_class\" href=\"a01221.html\">GLComputeEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n-<div class=\"line\"><a id=\"l00336\" name=\"l00336\"></a><span class=\"lineno\">  336</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l00337\" name=\"l00337\"></a><span class=\"lineno\">  337</span> </div>\n-<div class=\"line\"><a id=\"l00338\" name=\"l00338\"></a><span class=\"lineno\">  338</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l00339\" name=\"l00339\"></a><span class=\"lineno\">  339</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01221.html#a5a332778562ac0aaa3b59e7d504329f6\">EvalStencils</a>(srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l00340\" name=\"l00340\"></a><span class=\"lineno\">  340</span>                                          dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00341\" name=\"l00341\"></a><span class=\"lineno\">  341</span>                                          duBuffer,  duDesc,</div>\n-<div class=\"line\"><a id=\"l00342\" name=\"l00342\"></a><span class=\"lineno\">  342</span>                                          dvBuffer,  dvDesc,</div>\n-<div class=\"line\"><a id=\"l00343\" name=\"l00343\"></a><span class=\"lineno\">  343</span>                                          duuBuffer, duuDesc,</div>\n-<div class=\"line\"><a id=\"l00344\" name=\"l00344\"></a><span class=\"lineno\">  344</span>                                          duvBuffer, duvDesc,</div>\n-<div class=\"line\"><a id=\"l00345\" name=\"l00345\"></a><span class=\"lineno\">  345</span>                                          dvvBuffer, dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00346\" name=\"l00346\"></a><span class=\"lineno\">  346</span>                                          stencilTable);</div>\n-<div class=\"line\"><a id=\"l00347\" name=\"l00347\"></a><span class=\"lineno\">  347</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00348\" name=\"l00348\"></a><span class=\"lineno\">  348</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n-<div class=\"line\"><a id=\"l00349\" name=\"l00349\"></a><span class=\"lineno\">  349</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00350\" name=\"l00350\"></a><span class=\"lineno\">  350</span>            instance = <a class=\"code hl_function\" href=\"a01221.html#ab4c3cfbc05a1b3c7e08aac8258e38139\">Create</a>(srcDesc, dstDesc, duDesc, dvDesc,</div>\n-<div class=\"line\"><a id=\"l00351\" name=\"l00351\"></a><span class=\"lineno\">  351</span>                              duuDesc, duvDesc, dvvDesc);</div>\n-<div class=\"line\"><a id=\"l00352\" name=\"l00352\"></a><span class=\"lineno\">  352</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l00353\" name=\"l00353\"></a><span class=\"lineno\">  353</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01221.html#a5a332778562ac0aaa3b59e7d504329f6\">EvalStencils</a>(srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l00354\" name=\"l00354\"></a><span class=\"lineno\">  354</span>                                                dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00355\" name=\"l00355\"></a><span class=\"lineno\">  355</span>                                                duBuffer,  duDesc,</div>\n-<div class=\"line\"><a id=\"l00356\" name=\"l00356\"></a><span class=\"lineno\">  356</span>                                                dvBuffer,  dvDesc,</div>\n-<div class=\"line\"><a id=\"l00357\" name=\"l00357\"></a><span class=\"lineno\">  357</span>                                                duuBuffer, duuDesc,</div>\n-<div class=\"line\"><a id=\"l00358\" name=\"l00358\"></a><span class=\"lineno\">  358</span>                                                duvBuffer, duvDesc,</div>\n-<div class=\"line\"><a id=\"l00359\" name=\"l00359\"></a><span class=\"lineno\">  359</span>                                                dvvBuffer, dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00360\" name=\"l00360\"></a><span class=\"lineno\">  360</span>                                                stencilTable);</div>\n-<div class=\"line\"><a id=\"l00361\" name=\"l00361\"></a><span class=\"lineno\">  361</span>                <span class=\"keyword\">delete</span> instance;</div>\n-<div class=\"line\"><a id=\"l00362\" name=\"l00362\"></a><span class=\"lineno\">  362</span>                <span class=\"keywordflow\">return</span> r;</div>\n-<div class=\"line\"><a id=\"l00363\" name=\"l00363\"></a><span class=\"lineno\">  363</span>            }</div>\n-<div class=\"line\"><a id=\"l00364\" name=\"l00364\"></a><span class=\"lineno\">  364</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00365\" name=\"l00365\"></a><span class=\"lineno\">  365</span>        }</div>\n-<div class=\"line\"><a id=\"l00366\" name=\"l00366\"></a><span class=\"lineno\">  366</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00367\" name=\"l00367\"></a><span class=\"lineno\">  367</span> </div>\n-<div class=\"line\"><a id=\"l00385\" name=\"l00385\"></a><span class=\"lineno\">  385</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00386\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00386\" name=\"l00386\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#aab4ecc7e79b822b8994b326cc05ad573\">  386</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01221.html#aab4ecc7e79b822b8994b326cc05ad573\">EvalStencils</a>(</div>\n-<div class=\"line\"><a id=\"l00387\" name=\"l00387\"></a><span class=\"lineno\">  387</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00388\" name=\"l00388\"></a><span class=\"lineno\">  388</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00389\" name=\"l00389\"></a><span class=\"lineno\">  389</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00390\" name=\"l00390\"></a><span class=\"lineno\">  390</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01221.html#a5a332778562ac0aaa3b59e7d504329f6\">EvalStencils</a>(srcBuffer-&gt;BindVBO(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00391\" name=\"l00391\"></a><span class=\"lineno\">  391</span>                            dstBuffer-&gt;BindVBO(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00392\" name=\"l00392\"></a><span class=\"lineno\">  392</span>                            0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l00393\" name=\"l00393\"></a><span class=\"lineno\">  393</span>                            0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l00394\" name=\"l00394\"></a><span class=\"lineno\">  394</span>                            stencilTable-&gt;GetSizesBuffer(),</div>\n-<div class=\"line\"><a id=\"l00395\" name=\"l00395\"></a><span class=\"lineno\">  395</span>                            stencilTable-&gt;GetOffsetsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00396\" name=\"l00396\"></a><span class=\"lineno\">  396</span>                            stencilTable-&gt;GetIndicesBuffer(),</div>\n-<div class=\"line\"><a id=\"l00397\" name=\"l00397\"></a><span class=\"lineno\">  397</span>                            stencilTable-&gt;GetWeightsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00398\" name=\"l00398\"></a><span class=\"lineno\">  398</span>                            0,</div>\n-<div class=\"line\"><a id=\"l00399\" name=\"l00399\"></a><span class=\"lineno\">  399</span>                            0,</div>\n-<div class=\"line\"><a id=\"l00400\" name=\"l00400\"></a><span class=\"lineno\">  400</span>                            <span class=\"comment\">/* start = */</span> 0,</div>\n-<div class=\"line\"><a id=\"l00401\" name=\"l00401\"></a><span class=\"lineno\">  401</span>                            <span class=\"comment\">/* end   = */</span> stencilTable-&gt;GetNumStencils());</div>\n-<div class=\"line\"><a id=\"l00402\" name=\"l00402\"></a><span class=\"lineno\">  402</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00403\" name=\"l00403\"></a><span class=\"lineno\">  403</span> </div>\n-<div class=\"line\"><a id=\"l00433\" name=\"l00433\"></a><span class=\"lineno\">  433</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00434\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00434\" name=\"l00434\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#a16dedd32573dd7f70c61f1fb6072e791\">  434</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01221.html#a16dedd32573dd7f70c61f1fb6072e791\">EvalStencils</a>(</div>\n-<div class=\"line\"><a id=\"l00435\" name=\"l00435\"></a><span class=\"lineno\">  435</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00436\" name=\"l00436\"></a><span class=\"lineno\">  436</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00437\" name=\"l00437\"></a><span class=\"lineno\">  437</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00438\" name=\"l00438\"></a><span class=\"lineno\">  438</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00439\" name=\"l00439\"></a><span class=\"lineno\">  439</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00440\" name=\"l00440\"></a><span class=\"lineno\">  440</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01221.html#a5a332778562ac0aaa3b59e7d504329f6\">EvalStencils</a>(srcBuffer-&gt;BindVBO(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00441\" name=\"l00441\"></a><span class=\"lineno\">  441</span>                            dstBuffer-&gt;BindVBO(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00442\" name=\"l00442\"></a><span class=\"lineno\">  442</span>                            duBuffer-&gt;BindVBO(),  duDesc,</div>\n-<div class=\"line\"><a id=\"l00443\" name=\"l00443\"></a><span class=\"lineno\">  443</span>                            dvBuffer-&gt;BindVBO(),  dvDesc,</div>\n-<div class=\"line\"><a id=\"l00444\" name=\"l00444\"></a><span class=\"lineno\">  444</span>                            stencilTable-&gt;GetSizesBuffer(),</div>\n-<div class=\"line\"><a id=\"l00445\" name=\"l00445\"></a><span class=\"lineno\">  445</span>                            stencilTable-&gt;GetOffsetsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00446\" name=\"l00446\"></a><span class=\"lineno\">  446</span>                            stencilTable-&gt;GetIndicesBuffer(),</div>\n-<div class=\"line\"><a id=\"l00447\" name=\"l00447\"></a><span class=\"lineno\">  447</span>                            stencilTable-&gt;GetWeightsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00448\" name=\"l00448\"></a><span class=\"lineno\">  448</span>                            stencilTable-&gt;GetDuWeightsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00449\" name=\"l00449\"></a><span class=\"lineno\">  449</span>                            stencilTable-&gt;GetDvWeightsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00450\" name=\"l00450\"></a><span class=\"lineno\">  450</span>                            <span class=\"comment\">/* start = */</span> 0,</div>\n-<div class=\"line\"><a id=\"l00451\" name=\"l00451\"></a><span class=\"lineno\">  451</span>                            <span class=\"comment\">/* end   = */</span> stencilTable-&gt;GetNumStencils());</div>\n-<div class=\"line\"><a id=\"l00452\" name=\"l00452\"></a><span class=\"lineno\">  452</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00453\" name=\"l00453\"></a><span class=\"lineno\">  453</span> </div>\n-<div class=\"line\"><a id=\"l00501\" name=\"l00501\"></a><span class=\"lineno\">  501</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00502\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00502\" name=\"l00502\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#a20fa5a4f3311832729ea7b10f935285d\">  502</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01221.html#a20fa5a4f3311832729ea7b10f935285d\">EvalStencils</a>(</div>\n-<div class=\"line\"><a id=\"l00503\" name=\"l00503\"></a><span class=\"lineno\">  503</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00504\" name=\"l00504\"></a><span class=\"lineno\">  504</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00505\" name=\"l00505\"></a><span class=\"lineno\">  505</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00506\" name=\"l00506\"></a><span class=\"lineno\">  506</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00507\" name=\"l00507\"></a><span class=\"lineno\">  507</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l00508\" name=\"l00508\"></a><span class=\"lineno\">  508</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l00509\" name=\"l00509\"></a><span class=\"lineno\">  509</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00510\" name=\"l00510\"></a><span class=\"lineno\">  510</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00511\" name=\"l00511\"></a><span class=\"lineno\">  511</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01221.html#a5a332778562ac0aaa3b59e7d504329f6\">EvalStencils</a>(srcBuffer-&gt;BindVBO(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00512\" name=\"l00512\"></a><span class=\"lineno\">  512</span>                            dstBuffer-&gt;BindVBO(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00513\" name=\"l00513\"></a><span class=\"lineno\">  513</span>                            duBuffer-&gt;BindVBO(),  duDesc,</div>\n-<div class=\"line\"><a id=\"l00514\" name=\"l00514\"></a><span class=\"lineno\">  514</span>                            dvBuffer-&gt;BindVBO(),  dvDesc,</div>\n-<div class=\"line\"><a id=\"l00515\" name=\"l00515\"></a><span class=\"lineno\">  515</span>                            duuBuffer-&gt;BindVBO(), duuDesc,</div>\n-<div class=\"line\"><a id=\"l00516\" name=\"l00516\"></a><span class=\"lineno\">  516</span>                            duvBuffer-&gt;BindVBO(), duvDesc,</div>\n-<div class=\"line\"><a id=\"l00517\" name=\"l00517\"></a><span class=\"lineno\">  517</span>                            dvvBuffer-&gt;BindVBO(), dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00518\" name=\"l00518\"></a><span class=\"lineno\">  518</span>                            stencilTable-&gt;GetSizesBuffer(),</div>\n-<div class=\"line\"><a id=\"l00519\" name=\"l00519\"></a><span class=\"lineno\">  519</span>                            stencilTable-&gt;GetOffsetsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00520\" name=\"l00520\"></a><span class=\"lineno\">  520</span>                            stencilTable-&gt;GetIndicesBuffer(),</div>\n-<div class=\"line\"><a id=\"l00521\" name=\"l00521\"></a><span class=\"lineno\">  521</span>                            stencilTable-&gt;GetWeightsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00522\" name=\"l00522\"></a><span class=\"lineno\">  522</span>                            stencilTable-&gt;GetDuWeightsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00523\" name=\"l00523\"></a><span class=\"lineno\">  523</span>                            stencilTable-&gt;GetDvWeightsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00524\" name=\"l00524\"></a><span class=\"lineno\">  524</span>                            stencilTable-&gt;GetDuuWeightsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00525\" name=\"l00525\"></a><span class=\"lineno\">  525</span>                            stencilTable-&gt;GetDuvWeightsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00526\" name=\"l00526\"></a><span class=\"lineno\">  526</span>                            stencilTable-&gt;GetDvvWeightsBuffer(),</div>\n-<div class=\"line\"><a id=\"l00527\" name=\"l00527\"></a><span class=\"lineno\">  527</span>                            <span class=\"comment\">/* start = */</span> 0,</div>\n-<div class=\"line\"><a id=\"l00528\" name=\"l00528\"></a><span class=\"lineno\">  528</span>                            <span class=\"comment\">/* end   = */</span> stencilTable-&gt;GetNumStencils());</div>\n-<div class=\"line\"><a id=\"l00529\" name=\"l00529\"></a><span class=\"lineno\">  529</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00530\" name=\"l00530\"></a><span class=\"lineno\">  530</span> </div>\n-<div class=\"line\"><a id=\"l00566\" name=\"l00566\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#ab8d69b17b91e3066aaa7dad2d38691de\">  566</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01221.html#ab8d69b17b91e3066aaa7dad2d38691de\">EvalStencils</a>(GLuint srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00567\" name=\"l00567\"></a><span class=\"lineno\">  567</span>                      GLuint dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00568\" name=\"l00568\"></a><span class=\"lineno\">  568</span>                      GLuint duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00569\" name=\"l00569\"></a><span class=\"lineno\">  569</span>                      GLuint dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00570\" name=\"l00570\"></a><span class=\"lineno\">  570</span>                      GLuint sizesBuffer,</div>\n-<div class=\"line\"><a id=\"l00571\" name=\"l00571\"></a><span class=\"lineno\">  571</span>                      GLuint offsetsBuffer,</div>\n-<div class=\"line\"><a id=\"l00572\" name=\"l00572\"></a><span class=\"lineno\">  572</span>                      GLuint indicesBuffer,</div>\n-<div class=\"line\"><a id=\"l00573\" name=\"l00573\"></a><span class=\"lineno\">  573</span>                      GLuint weightsBuffer,</div>\n-<div class=\"line\"><a id=\"l00574\" name=\"l00574\"></a><span class=\"lineno\">  574</span>                      GLuint duWeightsBuffer,</div>\n-<div class=\"line\"><a id=\"l00575\" name=\"l00575\"></a><span class=\"lineno\">  575</span>                      GLuint dvWeightsBuffer,</div>\n-<div class=\"line\"><a id=\"l00576\" name=\"l00576\"></a><span class=\"lineno\">  576</span>                      <span class=\"keywordtype\">int</span> start,</div>\n-<div class=\"line\"><a id=\"l00577\" name=\"l00577\"></a><span class=\"lineno\">  577</span>                      <span class=\"keywordtype\">int</span> end) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00578\" name=\"l00578\"></a><span class=\"lineno\">  578</span> </div>\n-<div class=\"line\"><a id=\"l00632\" name=\"l00632\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#a54b949bb4819f61594334e599194f224\">  632</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01221.html#a54b949bb4819f61594334e599194f224\">EvalStencils</a>(GLuint srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00633\" name=\"l00633\"></a><span class=\"lineno\">  633</span>                      GLuint dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00634\" name=\"l00634\"></a><span class=\"lineno\">  634</span>                      GLuint duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00635\" name=\"l00635\"></a><span class=\"lineno\">  635</span>                      GLuint dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00636\" name=\"l00636\"></a><span class=\"lineno\">  636</span>                      GLuint duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l00637\" name=\"l00637\"></a><span class=\"lineno\">  637</span>                      GLuint duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l00638\" name=\"l00638\"></a><span class=\"lineno\">  638</span>                      GLuint dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00639\" name=\"l00639\"></a><span class=\"lineno\">  639</span>                      GLuint sizesBuffer,</div>\n-<div class=\"line\"><a id=\"l00640\" name=\"l00640\"></a><span class=\"lineno\">  640</span>                      GLuint offsetsBuffer,</div>\n-<div class=\"line\"><a id=\"l00641\" name=\"l00641\"></a><span class=\"lineno\">  641</span>                      GLuint indicesBuffer,</div>\n-<div class=\"line\"><a id=\"l00642\" name=\"l00642\"></a><span class=\"lineno\">  642</span>                      GLuint weightsBuffer,</div>\n-<div class=\"line\"><a id=\"l00643\" name=\"l00643\"></a><span class=\"lineno\">  643</span>                      GLuint duWeightsBuffer,</div>\n-<div class=\"line\"><a id=\"l00644\" name=\"l00644\"></a><span class=\"lineno\">  644</span>                      GLuint dvWeightsBuffer,</div>\n-<div class=\"line\"><a id=\"l00645\" name=\"l00645\"></a><span class=\"lineno\">  645</span>                      GLuint duuWeightsBuffer,</div>\n-<div class=\"line\"><a id=\"l00646\" name=\"l00646\"></a><span class=\"lineno\">  646</span>                      GLuint duvWeightsBuffer,</div>\n-<div class=\"line\"><a id=\"l00647\" name=\"l00647\"></a><span class=\"lineno\">  647</span>                      GLuint dvvWeightsBuffer,</div>\n-<div class=\"line\"><a id=\"l00648\" name=\"l00648\"></a><span class=\"lineno\">  648</span>                      <span class=\"keywordtype\">int</span> start,</div>\n-<div class=\"line\"><a id=\"l00649\" name=\"l00649\"></a><span class=\"lineno\">  649</span>                      <span class=\"keywordtype\">int</span> end) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00650\" name=\"l00650\"></a><span class=\"lineno\">  650</span> </div>\n-<div class=\"line\"><a id=\"l00656\" name=\"l00656\"></a><span class=\"lineno\">  656</span> </div>\n-<div class=\"line\"><a id=\"l00689\" name=\"l00689\"></a><span class=\"lineno\">  689</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l00690\" name=\"l00690\"></a><span class=\"lineno\">  690</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00691\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00691\" name=\"l00691\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#aa6e408cc03b3625bb31a2822075bd87c\">  691</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01221.html#aa6e408cc03b3625bb31a2822075bd87c\">EvalPatches</a>(</div>\n-<div class=\"line\"><a id=\"l00692\" name=\"l00692\"></a><span class=\"lineno\">  692</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00693\" name=\"l00693\"></a><span class=\"lineno\">  693</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00694\" name=\"l00694\"></a><span class=\"lineno\">  694</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00695\" name=\"l00695\"></a><span class=\"lineno\">  695</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l00696\" name=\"l00696\"></a><span class=\"lineno\">  696</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l00697\" name=\"l00697\"></a><span class=\"lineno\">  697</span>        <a class=\"code hl_class\" href=\"a01221.html\">GLComputeEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n-<div class=\"line\"><a id=\"l00698\" name=\"l00698\"></a><span class=\"lineno\">  698</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l00699\" name=\"l00699\"></a><span class=\"lineno\">  699</span> </div>\n-<div class=\"line\"><a id=\"l00700\" name=\"l00700\"></a><span class=\"lineno\">  700</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l00701\" name=\"l00701\"></a><span class=\"lineno\">  701</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01221.html#aa6e408cc03b3625bb31a2822075bd87c\">EvalPatches</a>(srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l00702\" name=\"l00702\"></a><span class=\"lineno\">  702</span>                                         dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00703\" name=\"l00703\"></a><span class=\"lineno\">  703</span>                                         numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l00704\" name=\"l00704\"></a><span class=\"lineno\">  704</span>                                         patchTable);</div>\n-<div class=\"line\"><a id=\"l00705\" name=\"l00705\"></a><span class=\"lineno\">  705</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00706\" name=\"l00706\"></a><span class=\"lineno\">  706</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n-<div class=\"line\"><a id=\"l00707\" name=\"l00707\"></a><span class=\"lineno\">  707</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00708\" name=\"l00708\"></a><span class=\"lineno\">  708</span>            instance = <a class=\"code hl_function\" href=\"a01221.html#ab4c3cfbc05a1b3c7e08aac8258e38139\">Create</a>(srcDesc, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00709\" name=\"l00709\"></a><span class=\"lineno\">  709</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l00710\" name=\"l00710\"></a><span class=\"lineno\">  710</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>());</div>\n-<div class=\"line\"><a id=\"l00711\" name=\"l00711\"></a><span class=\"lineno\">  711</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l00712\" name=\"l00712\"></a><span class=\"lineno\">  712</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01221.html#aa6e408cc03b3625bb31a2822075bd87c\">EvalPatches</a>(srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l00713\" name=\"l00713\"></a><span class=\"lineno\">  713</span>                                               dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00714\" name=\"l00714\"></a><span class=\"lineno\">  714</span>                                               numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l00715\" name=\"l00715\"></a><span class=\"lineno\">  715</span>                                               patchTable);</div>\n-<div class=\"line\"><a id=\"l00716\" name=\"l00716\"></a><span class=\"lineno\">  716</span>                <span class=\"keyword\">delete</span> instance;</div>\n-<div class=\"line\"><a id=\"l00717\" name=\"l00717\"></a><span class=\"lineno\">  717</span>                <span class=\"keywordflow\">return</span> r;</div>\n-<div class=\"line\"><a id=\"l00718\" name=\"l00718\"></a><span class=\"lineno\">  718</span>            }</div>\n-<div class=\"line\"><a id=\"l00719\" name=\"l00719\"></a><span class=\"lineno\">  719</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00720\" name=\"l00720\"></a><span class=\"lineno\">  720</span>        }</div>\n-<div class=\"line\"><a id=\"l00721\" name=\"l00721\"></a><span class=\"lineno\">  721</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00722\" name=\"l00722\"></a><span class=\"lineno\">  722</span> </div>\n-<div class=\"line\"><a id=\"l00767\" name=\"l00767\"></a><span class=\"lineno\">  767</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l00768\" name=\"l00768\"></a><span class=\"lineno\">  768</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00769\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00769\" name=\"l00769\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#a6a85616578cd5275f4a1d69f6db5ad3b\">  769</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01221.html#a6a85616578cd5275f4a1d69f6db5ad3b\">EvalPatches</a>(</div>\n-<div class=\"line\"><a id=\"l00770\" name=\"l00770\"></a><span class=\"lineno\">  770</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00771\" name=\"l00771\"></a><span class=\"lineno\">  771</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00772\" name=\"l00772\"></a><span class=\"lineno\">  772</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00773\" name=\"l00773\"></a><span class=\"lineno\">  773</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00774\" name=\"l00774\"></a><span class=\"lineno\">  774</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00775\" name=\"l00775\"></a><span class=\"lineno\">  775</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l00776\" name=\"l00776\"></a><span class=\"lineno\">  776</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l00777\" name=\"l00777\"></a><span class=\"lineno\">  777</span>        <a class=\"code hl_class\" href=\"a01221.html\">GLComputeEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n-<div class=\"line\"><a id=\"l00778\" name=\"l00778\"></a><span class=\"lineno\">  778</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l00779\" name=\"l00779\"></a><span class=\"lineno\">  779</span> </div>\n-<div class=\"line\"><a id=\"l00780\" name=\"l00780\"></a><span class=\"lineno\">  780</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l00781\" name=\"l00781\"></a><span class=\"lineno\">  781</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01221.html#aa6e408cc03b3625bb31a2822075bd87c\">EvalPatches</a>(srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l00782\" name=\"l00782\"></a><span class=\"lineno\">  782</span>                                         dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00783\" name=\"l00783\"></a><span class=\"lineno\">  783</span>                                         duBuffer, duDesc,</div>\n-<div class=\"line\"><a id=\"l00784\" name=\"l00784\"></a><span class=\"lineno\">  784</span>                                         dvBuffer, dvDesc,</div>\n-<div class=\"line\"><a id=\"l00785\" name=\"l00785\"></a><span class=\"lineno\">  785</span>                                         numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l00786\" name=\"l00786\"></a><span class=\"lineno\">  786</span>                                         patchTable);</div>\n-<div class=\"line\"><a id=\"l00787\" name=\"l00787\"></a><span class=\"lineno\">  787</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00788\" name=\"l00788\"></a><span class=\"lineno\">  788</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n-<div class=\"line\"><a id=\"l00789\" name=\"l00789\"></a><span class=\"lineno\">  789</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00790\" name=\"l00790\"></a><span class=\"lineno\">  790</span>            instance = <a class=\"code hl_function\" href=\"a01221.html#ab4c3cfbc05a1b3c7e08aac8258e38139\">Create</a>(srcDesc, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00791\" name=\"l00791\"></a><span class=\"lineno\">  791</span>                              duDesc, dvDesc);</div>\n-<div class=\"line\"><a id=\"l00792\" name=\"l00792\"></a><span class=\"lineno\">  792</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l00793\" name=\"l00793\"></a><span class=\"lineno\">  793</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01221.html#aa6e408cc03b3625bb31a2822075bd87c\">EvalPatches</a>(srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l00794\" name=\"l00794\"></a><span class=\"lineno\">  794</span>                                               dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00795\" name=\"l00795\"></a><span class=\"lineno\">  795</span>                                               duBuffer, duDesc,</div>\n-<div class=\"line\"><a id=\"l00796\" name=\"l00796\"></a><span class=\"lineno\">  796</span>                                               dvBuffer, dvDesc,</div>\n-<div class=\"line\"><a id=\"l00797\" name=\"l00797\"></a><span class=\"lineno\">  797</span>                                               numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l00798\" name=\"l00798\"></a><span class=\"lineno\">  798</span>                                               patchTable);</div>\n-<div class=\"line\"><a id=\"l00799\" name=\"l00799\"></a><span class=\"lineno\">  799</span>                <span class=\"keyword\">delete</span> instance;</div>\n-<div class=\"line\"><a id=\"l00800\" name=\"l00800\"></a><span class=\"lineno\">  800</span>                <span class=\"keywordflow\">return</span> r;</div>\n-<div class=\"line\"><a id=\"l00801\" name=\"l00801\"></a><span class=\"lineno\">  801</span>            }</div>\n-<div class=\"line\"><a id=\"l00802\" name=\"l00802\"></a><span class=\"lineno\">  802</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00803\" name=\"l00803\"></a><span class=\"lineno\">  803</span>        }</div>\n-<div class=\"line\"><a id=\"l00804\" name=\"l00804\"></a><span class=\"lineno\">  804</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00805\" name=\"l00805\"></a><span class=\"lineno\">  805</span> </div>\n-<div class=\"line\"><a id=\"l00868\" name=\"l00868\"></a><span class=\"lineno\">  868</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l00869\" name=\"l00869\"></a><span class=\"lineno\">  869</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00870\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00870\" name=\"l00870\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#af806842b89f37a3cd5e153ed67c926ec\">  870</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01221.html#af806842b89f37a3cd5e153ed67c926ec\">EvalPatches</a>(</div>\n-<div class=\"line\"><a id=\"l00871\" name=\"l00871\"></a><span class=\"lineno\">  871</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00872\" name=\"l00872\"></a><span class=\"lineno\">  872</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00873\" name=\"l00873\"></a><span class=\"lineno\">  873</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00874\" name=\"l00874\"></a><span class=\"lineno\">  874</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00875\" name=\"l00875\"></a><span class=\"lineno\">  875</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l00876\" name=\"l00876\"></a><span class=\"lineno\">  876</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l00877\" name=\"l00877\"></a><span class=\"lineno\">  877</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00878\" name=\"l00878\"></a><span class=\"lineno\">  878</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00879\" name=\"l00879\"></a><span class=\"lineno\">  879</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l00880\" name=\"l00880\"></a><span class=\"lineno\">  880</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l00881\" name=\"l00881\"></a><span class=\"lineno\">  881</span>        <a class=\"code hl_class\" href=\"a01221.html\">GLComputeEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n-<div class=\"line\"><a id=\"l00882\" name=\"l00882\"></a><span class=\"lineno\">  882</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l00883\" name=\"l00883\"></a><span class=\"lineno\">  883</span> </div>\n-<div class=\"line\"><a id=\"l00884\" name=\"l00884\"></a><span class=\"lineno\">  884</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l00885\" name=\"l00885\"></a><span class=\"lineno\">  885</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01221.html#aa6e408cc03b3625bb31a2822075bd87c\">EvalPatches</a>(srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l00886\" name=\"l00886\"></a><span class=\"lineno\">  886</span>                                         dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00887\" name=\"l00887\"></a><span class=\"lineno\">  887</span>                                         duBuffer, duDesc,</div>\n-<div class=\"line\"><a id=\"l00888\" name=\"l00888\"></a><span class=\"lineno\">  888</span>                                         dvBuffer, dvDesc,</div>\n-<div class=\"line\"><a id=\"l00889\" name=\"l00889\"></a><span class=\"lineno\">  889</span>                                         duuBuffer, duuDesc,</div>\n-<div class=\"line\"><a id=\"l00890\" name=\"l00890\"></a><span class=\"lineno\">  890</span>                                         duvBuffer, duvDesc,</div>\n-<div class=\"line\"><a id=\"l00891\" name=\"l00891\"></a><span class=\"lineno\">  891</span>                                         dvvBuffer, dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00892\" name=\"l00892\"></a><span class=\"lineno\">  892</span>                                         numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l00893\" name=\"l00893\"></a><span class=\"lineno\">  893</span>                                         patchTable);</div>\n-<div class=\"line\"><a id=\"l00894\" name=\"l00894\"></a><span class=\"lineno\">  894</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00895\" name=\"l00895\"></a><span class=\"lineno\">  895</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n-<div class=\"line\"><a id=\"l00896\" name=\"l00896\"></a><span class=\"lineno\">  896</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00897\" name=\"l00897\"></a><span class=\"lineno\">  897</span>            instance = <a class=\"code hl_function\" href=\"a01221.html#ab4c3cfbc05a1b3c7e08aac8258e38139\">Create</a>(srcDesc, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00898\" name=\"l00898\"></a><span class=\"lineno\">  898</span>                              duDesc, dvDesc,</div>\n-<div class=\"line\"><a id=\"l00899\" name=\"l00899\"></a><span class=\"lineno\">  899</span>                              duuDesc, duvDesc, dvvDesc);</div>\n-<div class=\"line\"><a id=\"l00900\" name=\"l00900\"></a><span class=\"lineno\">  900</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l00901\" name=\"l00901\"></a><span class=\"lineno\">  901</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01221.html#aa6e408cc03b3625bb31a2822075bd87c\">EvalPatches</a>(srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l00902\" name=\"l00902\"></a><span class=\"lineno\">  902</span>                                               dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00903\" name=\"l00903\"></a><span class=\"lineno\">  903</span>                                               duBuffer, duDesc,</div>\n-<div class=\"line\"><a id=\"l00904\" name=\"l00904\"></a><span class=\"lineno\">  904</span>                                               dvBuffer, dvDesc,</div>\n-<div class=\"line\"><a id=\"l00905\" name=\"l00905\"></a><span class=\"lineno\">  905</span>                                               duuBuffer, duuDesc,</div>\n-<div class=\"line\"><a id=\"l00906\" name=\"l00906\"></a><span class=\"lineno\">  906</span>                                               duvBuffer, duvDesc,</div>\n-<div class=\"line\"><a id=\"l00907\" name=\"l00907\"></a><span class=\"lineno\">  907</span>                                               dvvBuffer, dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00908\" name=\"l00908\"></a><span class=\"lineno\">  908</span>                                               numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l00909\" name=\"l00909\"></a><span class=\"lineno\">  909</span>                                               patchTable);</div>\n-<div class=\"line\"><a id=\"l00910\" name=\"l00910\"></a><span class=\"lineno\">  910</span>                <span class=\"keyword\">delete</span> instance;</div>\n-<div class=\"line\"><a id=\"l00911\" name=\"l00911\"></a><span class=\"lineno\">  911</span>                <span class=\"keywordflow\">return</span> r;</div>\n-<div class=\"line\"><a id=\"l00912\" name=\"l00912\"></a><span class=\"lineno\">  912</span>            }</div>\n-<div class=\"line\"><a id=\"l00913\" name=\"l00913\"></a><span class=\"lineno\">  913</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00914\" name=\"l00914\"></a><span class=\"lineno\">  914</span>        }</div>\n-<div class=\"line\"><a id=\"l00915\" name=\"l00915\"></a><span class=\"lineno\">  915</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00916\" name=\"l00916\"></a><span class=\"lineno\">  916</span> </div>\n-<div class=\"line\"><a id=\"l00941\" name=\"l00941\"></a><span class=\"lineno\">  941</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l00942\" name=\"l00942\"></a><span class=\"lineno\">  942</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00943\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00943\" name=\"l00943\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#a96616cfe920c027568e2ae931b3ba506\">  943</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01221.html#a96616cfe920c027568e2ae931b3ba506\">EvalPatches</a>(</div>\n-<div class=\"line\"><a id=\"l00944\" name=\"l00944\"></a><span class=\"lineno\">  944</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00945\" name=\"l00945\"></a><span class=\"lineno\">  945</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00946\" name=\"l00946\"></a><span class=\"lineno\">  946</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00947\" name=\"l00947\"></a><span class=\"lineno\">  947</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l00948\" name=\"l00948\"></a><span class=\"lineno\">  948</span>        PATCH_TABLE *patchTable)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00949\" name=\"l00949\"></a><span class=\"lineno\">  949</span> </div>\n-<div class=\"line\"><a id=\"l00950\" name=\"l00950\"></a><span class=\"lineno\">  950</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01221.html#aa6e408cc03b3625bb31a2822075bd87c\">EvalPatches</a>(srcBuffer-&gt;BindVBO(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00951\" name=\"l00951\"></a><span class=\"lineno\">  951</span>                           dstBuffer-&gt;BindVBO(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00952\" name=\"l00952\"></a><span class=\"lineno\">  952</span>                           0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l00953\" name=\"l00953\"></a><span class=\"lineno\">  953</span>                           0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l00954\" name=\"l00954\"></a><span class=\"lineno\">  954</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00955\" name=\"l00955\"></a><span class=\"lineno\">  955</span>                           patchCoords-&gt;BindVBO(),</div>\n-<div class=\"line\"><a id=\"l00956\" name=\"l00956\"></a><span class=\"lineno\">  956</span>                           patchTable-&gt;GetPatchArrays(),</div>\n-<div class=\"line\"><a id=\"l00957\" name=\"l00957\"></a><span class=\"lineno\">  957</span>                           patchTable-&gt;GetPatchIndexBuffer(),</div>\n-<div class=\"line\"><a id=\"l00958\" name=\"l00958\"></a><span class=\"lineno\">  958</span>                           patchTable-&gt;GetPatchParamBuffer());</div>\n-<div class=\"line\"><a id=\"l00959\" name=\"l00959\"></a><span class=\"lineno\">  959</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00960\" name=\"l00960\"></a><span class=\"lineno\">  960</span> </div>\n-<div class=\"line\"><a id=\"l00995\" name=\"l00995\"></a><span class=\"lineno\">  995</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l00996\" name=\"l00996\"></a><span class=\"lineno\">  996</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00997\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00997\" name=\"l00997\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#aa28dc7f2bd31f1cdac0013ad9de8f434\">  997</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01221.html#aa28dc7f2bd31f1cdac0013ad9de8f434\">EvalPatches</a>(</div>\n-<div class=\"line\"><a id=\"l00998\" name=\"l00998\"></a><span class=\"lineno\">  998</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00999\" name=\"l00999\"></a><span class=\"lineno\">  999</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01000\" name=\"l01000\"></a><span class=\"lineno\"> 1000</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l01001\" name=\"l01001\"></a><span class=\"lineno\"> 1001</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l01002\" name=\"l01002\"></a><span class=\"lineno\"> 1002</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01003\" name=\"l01003\"></a><span class=\"lineno\"> 1003</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01004\" name=\"l01004\"></a><span class=\"lineno\"> 1004</span>        PATCH_TABLE *patchTable)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l01005\" name=\"l01005\"></a><span class=\"lineno\"> 1005</span> </div>\n-<div class=\"line\"><a id=\"l01006\" name=\"l01006\"></a><span class=\"lineno\"> 1006</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01221.html#aa6e408cc03b3625bb31a2822075bd87c\">EvalPatches</a>(srcBuffer-&gt;BindVBO(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01007\" name=\"l01007\"></a><span class=\"lineno\"> 1007</span>                           dstBuffer-&gt;BindVBO(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l01008\" name=\"l01008\"></a><span class=\"lineno\"> 1008</span>                           duBuffer-&gt;BindVBO(),  duDesc,</div>\n-<div class=\"line\"><a id=\"l01009\" name=\"l01009\"></a><span class=\"lineno\"> 1009</span>                           dvBuffer-&gt;BindVBO(),  dvDesc,</div>\n-<div class=\"line\"><a id=\"l01010\" name=\"l01010\"></a><span class=\"lineno\"> 1010</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01011\" name=\"l01011\"></a><span class=\"lineno\"> 1011</span>                           patchCoords-&gt;BindVBO(),</div>\n-<div class=\"line\"><a id=\"l01012\" name=\"l01012\"></a><span class=\"lineno\"> 1012</span>                           patchTable-&gt;GetPatchArrays(),</div>\n-<div class=\"line\"><a id=\"l01013\" name=\"l01013\"></a><span class=\"lineno\"> 1013</span>                           patchTable-&gt;GetPatchIndexBuffer(),</div>\n-<div class=\"line\"><a id=\"l01014\" name=\"l01014\"></a><span class=\"lineno\"> 1014</span>                           patchTable-&gt;GetPatchParamBuffer());</div>\n-<div class=\"line\"><a id=\"l01015\" name=\"l01015\"></a><span class=\"lineno\"> 1015</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01016\" name=\"l01016\"></a><span class=\"lineno\"> 1016</span> </div>\n-<div class=\"line\"><a id=\"l01069\" name=\"l01069\"></a><span class=\"lineno\"> 1069</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01070\" name=\"l01070\"></a><span class=\"lineno\"> 1070</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01071\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01071\" name=\"l01071\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#a35609a9d5a1b087bd675035d710dc688\"> 1071</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01221.html#a35609a9d5a1b087bd675035d710dc688\">EvalPatches</a>(</div>\n-<div class=\"line\"><a id=\"l01072\" name=\"l01072\"></a><span class=\"lineno\"> 1072</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01073\" name=\"l01073\"></a><span class=\"lineno\"> 1073</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01074\" name=\"l01074\"></a><span class=\"lineno\"> 1074</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l01075\" name=\"l01075\"></a><span class=\"lineno\"> 1075</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l01076\" name=\"l01076\"></a><span class=\"lineno\"> 1076</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l01077\" name=\"l01077\"></a><span class=\"lineno\"> 1077</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l01078\" name=\"l01078\"></a><span class=\"lineno\"> 1078</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l01079\" name=\"l01079\"></a><span class=\"lineno\"> 1079</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01080\" name=\"l01080\"></a><span class=\"lineno\"> 1080</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01081\" name=\"l01081\"></a><span class=\"lineno\"> 1081</span>        PATCH_TABLE *patchTable)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l01082\" name=\"l01082\"></a><span class=\"lineno\"> 1082</span> </div>\n-<div class=\"line\"><a id=\"l01083\" name=\"l01083\"></a><span class=\"lineno\"> 1083</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01221.html#aa6e408cc03b3625bb31a2822075bd87c\">EvalPatches</a>(srcBuffer-&gt;BindVBO(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01084\" name=\"l01084\"></a><span class=\"lineno\"> 1084</span>                           dstBuffer-&gt;BindVBO(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l01085\" name=\"l01085\"></a><span class=\"lineno\"> 1085</span>                           duBuffer-&gt;BindVBO(),  duDesc,</div>\n-<div class=\"line\"><a id=\"l01086\" name=\"l01086\"></a><span class=\"lineno\"> 1086</span>                           dvBuffer-&gt;BindVBO(),  dvDesc,</div>\n-<div class=\"line\"><a id=\"l01087\" name=\"l01087\"></a><span class=\"lineno\"> 1087</span>                           duuBuffer-&gt;BindVBO(), duuDesc,</div>\n-<div class=\"line\"><a id=\"l01088\" name=\"l01088\"></a><span class=\"lineno\"> 1088</span>                           duvBuffer-&gt;BindVBO(), duvDesc,</div>\n-<div class=\"line\"><a id=\"l01089\" name=\"l01089\"></a><span class=\"lineno\"> 1089</span>                           dvvBuffer-&gt;BindVBO(), dvvDesc,</div>\n-<div class=\"line\"><a id=\"l01090\" name=\"l01090\"></a><span class=\"lineno\"> 1090</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01091\" name=\"l01091\"></a><span class=\"lineno\"> 1091</span>                           patchCoords-&gt;BindVBO(),</div>\n-<div class=\"line\"><a id=\"l01092\" name=\"l01092\"></a><span class=\"lineno\"> 1092</span>                           patchTable-&gt;GetPatchArrays(),</div>\n-<div class=\"line\"><a id=\"l01093\" name=\"l01093\"></a><span class=\"lineno\"> 1093</span>                           patchTable-&gt;GetPatchIndexBuffer(),</div>\n-<div class=\"line\"><a id=\"l01094\" name=\"l01094\"></a><span class=\"lineno\"> 1094</span>                           patchTable-&gt;GetPatchParamBuffer());</div>\n-<div class=\"line\"><a id=\"l01095\" name=\"l01095\"></a><span class=\"lineno\"> 1095</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01096\" name=\"l01096\"></a><span class=\"lineno\"> 1096</span> </div>\n-<div class=\"line\"><a id=\"l01097\" name=\"l01097\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#aac8b4b814219420a124f8a92c96fd026\"> 1097</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01221.html#aac8b4b814219420a124f8a92c96fd026\">EvalPatches</a>(GLuint srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01098\" name=\"l01098\"></a><span class=\"lineno\"> 1098</span>                     GLuint dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01099\" name=\"l01099\"></a><span class=\"lineno\"> 1099</span>                     GLuint duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l01100\" name=\"l01100\"></a><span class=\"lineno\"> 1100</span>                     GLuint dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l01101\" name=\"l01101\"></a><span class=\"lineno\"> 1101</span>                     <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01102\" name=\"l01102\"></a><span class=\"lineno\"> 1102</span>                     GLuint patchCoordsBuffer,</div>\n-<div class=\"line\"><a id=\"l01103\" name=\"l01103\"></a><span class=\"lineno\"> 1103</span>                     <span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"a00912.html#a98098cd229f60d2397d84a76fe654a31\">PatchArrayVector</a> &amp;patchArrays,</div>\n-<div class=\"line\"><a id=\"l01104\" name=\"l01104\"></a><span class=\"lineno\"> 1104</span>                     GLuint patchIndexBuffer,</div>\n-<div class=\"line\"><a id=\"l01105\" name=\"l01105\"></a><span class=\"lineno\"> 1105</span>                     GLuint patchParamsBuffer) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l01106\" name=\"l01106\"></a><span class=\"lineno\"> 1106</span> </div>\n-<div class=\"line\"><a id=\"l01107\" name=\"l01107\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#a2d1074f49212a9ae65161e9c957dbab7\"> 1107</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01221.html#a2d1074f49212a9ae65161e9c957dbab7\">EvalPatches</a>(GLuint srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01108\" name=\"l01108\"></a><span class=\"lineno\"> 1108</span>                     GLuint dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01109\" name=\"l01109\"></a><span class=\"lineno\"> 1109</span>                     GLuint duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l01110\" name=\"l01110\"></a><span class=\"lineno\"> 1110</span>                     GLuint dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l01111\" name=\"l01111\"></a><span class=\"lineno\"> 1111</span>                     GLuint duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l01112\" name=\"l01112\"></a><span class=\"lineno\"> 1112</span>                     GLuint duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l01113\" name=\"l01113\"></a><span class=\"lineno\"> 1113</span>                     GLuint dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l01114\" name=\"l01114\"></a><span class=\"lineno\"> 1114</span>                     <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01115\" name=\"l01115\"></a><span class=\"lineno\"> 1115</span>                     GLuint patchCoordsBuffer,</div>\n-<div class=\"line\"><a id=\"l01116\" name=\"l01116\"></a><span class=\"lineno\"> 1116</span>                     <span class=\"keyword\">const</span> <a class=\"code hl_typedef\" href=\"a00912.html#a98098cd229f60d2397d84a76fe654a31\">PatchArrayVector</a> &amp;patchArrays,</div>\n-<div class=\"line\"><a id=\"l01117\" name=\"l01117\"></a><span class=\"lineno\"> 1117</span>                     GLuint patchIndexBuffer,</div>\n-<div class=\"line\"><a id=\"l01118\" name=\"l01118\"></a><span class=\"lineno\"> 1118</span>                     GLuint patchParamsBuffer) <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l01119\" name=\"l01119\"></a><span class=\"lineno\"> 1119</span> </div>\n-<div class=\"line\"><a id=\"l01152\" name=\"l01152\"></a><span class=\"lineno\"> 1152</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01153\" name=\"l01153\"></a><span class=\"lineno\"> 1153</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01154\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01154\" name=\"l01154\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#a1c6ee39e3debcf0f71886acfeac5ce47\"> 1154</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01221.html#a1c6ee39e3debcf0f71886acfeac5ce47\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01155\" name=\"l01155\"></a><span class=\"lineno\"> 1155</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01156\" name=\"l01156\"></a><span class=\"lineno\"> 1156</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01157\" name=\"l01157\"></a><span class=\"lineno\"> 1157</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01158\" name=\"l01158\"></a><span class=\"lineno\"> 1158</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01159\" name=\"l01159\"></a><span class=\"lineno\"> 1159</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l01160\" name=\"l01160\"></a><span class=\"lineno\"> 1160</span>        <a class=\"code hl_class\" href=\"a01221.html\">GLComputeEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n-<div class=\"line\"><a id=\"l01161\" name=\"l01161\"></a><span class=\"lineno\"> 1161</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l01162\" name=\"l01162\"></a><span class=\"lineno\"> 1162</span> </div>\n-<div class=\"line\"><a id=\"l01163\" name=\"l01163\"></a><span class=\"lineno\"> 1163</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l01164\" name=\"l01164\"></a><span class=\"lineno\"> 1164</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01221.html#a1c6ee39e3debcf0f71886acfeac5ce47\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01165\" name=\"l01165\"></a><span class=\"lineno\"> 1165</span>                                         srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l01166\" name=\"l01166\"></a><span class=\"lineno\"> 1166</span>                                         dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01167\" name=\"l01167\"></a><span class=\"lineno\"> 1167</span>                                         numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l01168\" name=\"l01168\"></a><span class=\"lineno\"> 1168</span>                                         patchTable);</div>\n-<div class=\"line\"><a id=\"l01169\" name=\"l01169\"></a><span class=\"lineno\"> 1169</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l01170\" name=\"l01170\"></a><span class=\"lineno\"> 1170</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n-<div class=\"line\"><a id=\"l01171\" name=\"l01171\"></a><span class=\"lineno\"> 1171</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l01172\" name=\"l01172\"></a><span class=\"lineno\"> 1172</span>            instance = <a class=\"code hl_function\" href=\"a01221.html#ab4c3cfbc05a1b3c7e08aac8258e38139\">Create</a>(srcDesc, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01173\" name=\"l01173\"></a><span class=\"lineno\"> 1173</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l01174\" name=\"l01174\"></a><span class=\"lineno\"> 1174</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>());</div>\n-<div class=\"line\"><a id=\"l01175\" name=\"l01175\"></a><span class=\"lineno\"> 1175</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l01176\" name=\"l01176\"></a><span class=\"lineno\"> 1176</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01221.html#a1c6ee39e3debcf0f71886acfeac5ce47\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01177\" name=\"l01177\"></a><span class=\"lineno\"> 1177</span>                                               srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l01178\" name=\"l01178\"></a><span class=\"lineno\"> 1178</span>                                               dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01179\" name=\"l01179\"></a><span class=\"lineno\"> 1179</span>                                               numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l01180\" name=\"l01180\"></a><span class=\"lineno\"> 1180</span>                                               patchTable);</div>\n-<div class=\"line\"><a id=\"l01181\" name=\"l01181\"></a><span class=\"lineno\"> 1181</span>                <span class=\"keyword\">delete</span> instance;</div>\n-<div class=\"line\"><a id=\"l01182\" name=\"l01182\"></a><span class=\"lineno\"> 1182</span>                <span class=\"keywordflow\">return</span> r;</div>\n-<div class=\"line\"><a id=\"l01183\" name=\"l01183\"></a><span class=\"lineno\"> 1183</span>            }</div>\n-<div class=\"line\"><a id=\"l01184\" name=\"l01184\"></a><span class=\"lineno\"> 1184</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l01185\" name=\"l01185\"></a><span class=\"lineno\"> 1185</span>        }</div>\n-<div class=\"line\"><a id=\"l01186\" name=\"l01186\"></a><span class=\"lineno\"> 1186</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01187\" name=\"l01187\"></a><span class=\"lineno\"> 1187</span> </div>\n-<div class=\"line\"><a id=\"l01212\" name=\"l01212\"></a><span class=\"lineno\"> 1212</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01213\" name=\"l01213\"></a><span class=\"lineno\"> 1213</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01214\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01214\" name=\"l01214\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#a03c47cdd97f18b8bbdd1e3ce66cbd5d8\"> 1214</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01221.html#a03c47cdd97f18b8bbdd1e3ce66cbd5d8\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01215\" name=\"l01215\"></a><span class=\"lineno\"> 1215</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01216\" name=\"l01216\"></a><span class=\"lineno\"> 1216</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01217\" name=\"l01217\"></a><span class=\"lineno\"> 1217</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01218\" name=\"l01218\"></a><span class=\"lineno\"> 1218</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01219\" name=\"l01219\"></a><span class=\"lineno\"> 1219</span>        PATCH_TABLE *patchTable)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l01220\" name=\"l01220\"></a><span class=\"lineno\"> 1220</span> </div>\n-<div class=\"line\"><a id=\"l01221\" name=\"l01221\"></a><span class=\"lineno\"> 1221</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01221.html#aa6e408cc03b3625bb31a2822075bd87c\">EvalPatches</a>(srcBuffer-&gt;BindVBO(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01222\" name=\"l01222\"></a><span class=\"lineno\"> 1222</span>                           dstBuffer-&gt;BindVBO(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l01223\" name=\"l01223\"></a><span class=\"lineno\"> 1223</span>                           0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l01224\" name=\"l01224\"></a><span class=\"lineno\"> 1224</span>                           0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l01225\" name=\"l01225\"></a><span class=\"lineno\"> 1225</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01226\" name=\"l01226\"></a><span class=\"lineno\"> 1226</span>                           patchCoords-&gt;BindVBO(),</div>\n-<div class=\"line\"><a id=\"l01227\" name=\"l01227\"></a><span class=\"lineno\"> 1227</span>                           patchTable-&gt;GetVaryingPatchArrays(),</div>\n-<div class=\"line\"><a id=\"l01228\" name=\"l01228\"></a><span class=\"lineno\"> 1228</span>                           patchTable-&gt;GetVaryingPatchIndexBuffer(),</div>\n-<div class=\"line\"><a id=\"l01229\" name=\"l01229\"></a><span class=\"lineno\"> 1229</span>                           patchTable-&gt;GetPatchParamBuffer());</div>\n-<div class=\"line\"><a id=\"l01230\" name=\"l01230\"></a><span class=\"lineno\"> 1230</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01231\" name=\"l01231\"></a><span class=\"lineno\"> 1231</span> </div>\n-<div class=\"line\"><a id=\"l01276\" name=\"l01276\"></a><span class=\"lineno\"> 1276</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01277\" name=\"l01277\"></a><span class=\"lineno\"> 1277</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01278\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01278\" name=\"l01278\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#a2accf86fd727ccc3d78bb4acd9842978\"> 1278</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01221.html#a2accf86fd727ccc3d78bb4acd9842978\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01279\" name=\"l01279\"></a><span class=\"lineno\"> 1279</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01280\" name=\"l01280\"></a><span class=\"lineno\"> 1280</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01281\" name=\"l01281\"></a><span class=\"lineno\"> 1281</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l01282\" name=\"l01282\"></a><span class=\"lineno\"> 1282</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l01283\" name=\"l01283\"></a><span class=\"lineno\"> 1283</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01284\" name=\"l01284\"></a><span class=\"lineno\"> 1284</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01285\" name=\"l01285\"></a><span class=\"lineno\"> 1285</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l01286\" name=\"l01286\"></a><span class=\"lineno\"> 1286</span>        <a class=\"code hl_class\" href=\"a01221.html\">GLComputeEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n-<div class=\"line\"><a id=\"l01287\" name=\"l01287\"></a><span class=\"lineno\"> 1287</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l01288\" name=\"l01288\"></a><span class=\"lineno\"> 1288</span> </div>\n-<div class=\"line\"><a id=\"l01289\" name=\"l01289\"></a><span class=\"lineno\"> 1289</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l01290\" name=\"l01290\"></a><span class=\"lineno\"> 1290</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01221.html#a1c6ee39e3debcf0f71886acfeac5ce47\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01291\" name=\"l01291\"></a><span class=\"lineno\"> 1291</span>                                         srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l01292\" name=\"l01292\"></a><span class=\"lineno\"> 1292</span>                                         dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01293\" name=\"l01293\"></a><span class=\"lineno\"> 1293</span>                                         duBuffer, duDesc,</div>\n-<div class=\"line\"><a id=\"l01294\" name=\"l01294\"></a><span class=\"lineno\"> 1294</span>                                         dvBuffer, dvDesc,</div>\n-<div class=\"line\"><a id=\"l01295\" name=\"l01295\"></a><span class=\"lineno\"> 1295</span>                                         numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l01296\" name=\"l01296\"></a><span class=\"lineno\"> 1296</span>                                         patchTable);</div>\n-<div class=\"line\"><a id=\"l01297\" name=\"l01297\"></a><span class=\"lineno\"> 1297</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l01298\" name=\"l01298\"></a><span class=\"lineno\"> 1298</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n-<div class=\"line\"><a id=\"l01299\" name=\"l01299\"></a><span class=\"lineno\"> 1299</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l01300\" name=\"l01300\"></a><span class=\"lineno\"> 1300</span>            instance = <a class=\"code hl_function\" href=\"a01221.html#ab4c3cfbc05a1b3c7e08aac8258e38139\">Create</a>(srcDesc, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01301\" name=\"l01301\"></a><span class=\"lineno\"> 1301</span>                              duDesc, dvDesc);</div>\n-<div class=\"line\"><a id=\"l01302\" name=\"l01302\"></a><span class=\"lineno\"> 1302</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l01303\" name=\"l01303\"></a><span class=\"lineno\"> 1303</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01221.html#a1c6ee39e3debcf0f71886acfeac5ce47\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01304\" name=\"l01304\"></a><span class=\"lineno\"> 1304</span>                                               srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l01305\" name=\"l01305\"></a><span class=\"lineno\"> 1305</span>                                               dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01306\" name=\"l01306\"></a><span class=\"lineno\"> 1306</span>                                               duBuffer, duDesc,</div>\n-<div class=\"line\"><a id=\"l01307\" name=\"l01307\"></a><span class=\"lineno\"> 1307</span>                                               dvBuffer, dvDesc,</div>\n-<div class=\"line\"><a id=\"l01308\" name=\"l01308\"></a><span class=\"lineno\"> 1308</span>                                               numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l01309\" name=\"l01309\"></a><span class=\"lineno\"> 1309</span>                                               patchTable);</div>\n-<div class=\"line\"><a id=\"l01310\" name=\"l01310\"></a><span class=\"lineno\"> 1310</span>                <span class=\"keyword\">delete</span> instance;</div>\n-<div class=\"line\"><a id=\"l01311\" name=\"l01311\"></a><span class=\"lineno\"> 1311</span>                <span class=\"keywordflow\">return</span> r;</div>\n-<div class=\"line\"><a id=\"l01312\" name=\"l01312\"></a><span class=\"lineno\"> 1312</span>            }</div>\n-<div class=\"line\"><a id=\"l01313\" name=\"l01313\"></a><span class=\"lineno\"> 1313</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l01314\" name=\"l01314\"></a><span class=\"lineno\"> 1314</span>        }</div>\n-<div class=\"line\"><a id=\"l01315\" name=\"l01315\"></a><span class=\"lineno\"> 1315</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01316\" name=\"l01316\"></a><span class=\"lineno\"> 1316</span> </div>\n-<div class=\"line\"><a id=\"l01353\" name=\"l01353\"></a><span class=\"lineno\"> 1353</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01354\" name=\"l01354\"></a><span class=\"lineno\"> 1354</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01355\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01355\" name=\"l01355\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#ae642c88c8896d4d55b1876757197b1cc\"> 1355</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01221.html#ae642c88c8896d4d55b1876757197b1cc\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01356\" name=\"l01356\"></a><span class=\"lineno\"> 1356</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01357\" name=\"l01357\"></a><span class=\"lineno\"> 1357</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01358\" name=\"l01358\"></a><span class=\"lineno\"> 1358</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l01359\" name=\"l01359\"></a><span class=\"lineno\"> 1359</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l01360\" name=\"l01360\"></a><span class=\"lineno\"> 1360</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01361\" name=\"l01361\"></a><span class=\"lineno\"> 1361</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01362\" name=\"l01362\"></a><span class=\"lineno\"> 1362</span>        PATCH_TABLE *patchTable)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l01363\" name=\"l01363\"></a><span class=\"lineno\"> 1363</span> </div>\n-<div class=\"line\"><a id=\"l01364\" name=\"l01364\"></a><span class=\"lineno\"> 1364</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01221.html#aa6e408cc03b3625bb31a2822075bd87c\">EvalPatches</a>(srcBuffer-&gt;BindVBO(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01365\" name=\"l01365\"></a><span class=\"lineno\"> 1365</span>                           dstBuffer-&gt;BindVBO(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l01366\" name=\"l01366\"></a><span class=\"lineno\"> 1366</span>                           duBuffer-&gt;BindVBO(),  duDesc,</div>\n-<div class=\"line\"><a id=\"l01367\" name=\"l01367\"></a><span class=\"lineno\"> 1367</span>                           dvBuffer-&gt;BindVBO(),  dvDesc,</div>\n-<div class=\"line\"><a id=\"l01368\" name=\"l01368\"></a><span class=\"lineno\"> 1368</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01369\" name=\"l01369\"></a><span class=\"lineno\"> 1369</span>                           patchCoords-&gt;BindVBO(),</div>\n-<div class=\"line\"><a id=\"l01370\" name=\"l01370\"></a><span class=\"lineno\"> 1370</span>                           patchTable-&gt;GetVaryingPatchArrays(),</div>\n-<div class=\"line\"><a id=\"l01371\" name=\"l01371\"></a><span class=\"lineno\"> 1371</span>                           patchTable-&gt;GetVaryingPatchIndexBuffer(),</div>\n-<div class=\"line\"><a id=\"l01372\" name=\"l01372\"></a><span class=\"lineno\"> 1372</span>                           patchTable-&gt;GetPatchParamBuffer());</div>\n-<div class=\"line\"><a id=\"l01373\" name=\"l01373\"></a><span class=\"lineno\"> 1373</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01374\" name=\"l01374\"></a><span class=\"lineno\"> 1374</span> </div>\n-<div class=\"line\"><a id=\"l01437\" name=\"l01437\"></a><span class=\"lineno\"> 1437</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01438\" name=\"l01438\"></a><span class=\"lineno\"> 1438</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01439\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01439\" name=\"l01439\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#a5e61f61981d7584a2297f249946bd445\"> 1439</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01221.html#a5e61f61981d7584a2297f249946bd445\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01440\" name=\"l01440\"></a><span class=\"lineno\"> 1440</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01441\" name=\"l01441\"></a><span class=\"lineno\"> 1441</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01442\" name=\"l01442\"></a><span class=\"lineno\"> 1442</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l01443\" name=\"l01443\"></a><span class=\"lineno\"> 1443</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l01444\" name=\"l01444\"></a><span class=\"lineno\"> 1444</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l01445\" name=\"l01445\"></a><span class=\"lineno\"> 1445</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l01446\" name=\"l01446\"></a><span class=\"lineno\"> 1446</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l01447\" name=\"l01447\"></a><span class=\"lineno\"> 1447</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01448\" name=\"l01448\"></a><span class=\"lineno\"> 1448</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01449\" name=\"l01449\"></a><span class=\"lineno\"> 1449</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l01450\" name=\"l01450\"></a><span class=\"lineno\"> 1450</span>        <a class=\"code hl_class\" href=\"a01221.html\">GLComputeEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n-<div class=\"line\"><a id=\"l01451\" name=\"l01451\"></a><span class=\"lineno\"> 1451</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l01452\" name=\"l01452\"></a><span class=\"lineno\"> 1452</span> </div>\n-<div class=\"line\"><a id=\"l01453\" name=\"l01453\"></a><span class=\"lineno\"> 1453</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l01454\" name=\"l01454\"></a><span class=\"lineno\"> 1454</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01221.html#a1c6ee39e3debcf0f71886acfeac5ce47\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01455\" name=\"l01455\"></a><span class=\"lineno\"> 1455</span>                                         srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l01456\" name=\"l01456\"></a><span class=\"lineno\"> 1456</span>                                         dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01457\" name=\"l01457\"></a><span class=\"lineno\"> 1457</span>                                         duBuffer, duDesc,</div>\n-<div class=\"line\"><a id=\"l01458\" name=\"l01458\"></a><span class=\"lineno\"> 1458</span>                                         dvBuffer, dvDesc,</div>\n-<div class=\"line\"><a id=\"l01459\" name=\"l01459\"></a><span class=\"lineno\"> 1459</span>                                         duuBuffer, duuDesc,</div>\n-<div class=\"line\"><a id=\"l01460\" name=\"l01460\"></a><span class=\"lineno\"> 1460</span>                                         duvBuffer, duvDesc,</div>\n-<div class=\"line\"><a id=\"l01461\" name=\"l01461\"></a><span class=\"lineno\"> 1461</span>                                         dvvBuffer, dvvDesc,</div>\n-<div class=\"line\"><a id=\"l01462\" name=\"l01462\"></a><span class=\"lineno\"> 1462</span>                                         numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l01463\" name=\"l01463\"></a><span class=\"lineno\"> 1463</span>                                         patchTable);</div>\n-<div class=\"line\"><a id=\"l01464\" name=\"l01464\"></a><span class=\"lineno\"> 1464</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l01465\" name=\"l01465\"></a><span class=\"lineno\"> 1465</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n-<div class=\"line\"><a id=\"l01466\" name=\"l01466\"></a><span class=\"lineno\"> 1466</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l01467\" name=\"l01467\"></a><span class=\"lineno\"> 1467</span>            instance = <a class=\"code hl_function\" href=\"a01221.html#ab4c3cfbc05a1b3c7e08aac8258e38139\">Create</a>(srcDesc, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01468\" name=\"l01468\"></a><span class=\"lineno\"> 1468</span>                              duDesc, dvDesc,</div>\n-<div class=\"line\"><a id=\"l01469\" name=\"l01469\"></a><span class=\"lineno\"> 1469</span>                              duuDesc, duvDesc, dvvDesc);</div>\n-<div class=\"line\"><a id=\"l01470\" name=\"l01470\"></a><span class=\"lineno\"> 1470</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l01471\" name=\"l01471\"></a><span class=\"lineno\"> 1471</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01221.html#a1c6ee39e3debcf0f71886acfeac5ce47\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01472\" name=\"l01472\"></a><span class=\"lineno\"> 1472</span>                                               srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l01473\" name=\"l01473\"></a><span class=\"lineno\"> 1473</span>                                               dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01474\" name=\"l01474\"></a><span class=\"lineno\"> 1474</span>                                               duBuffer, duDesc,</div>\n-<div class=\"line\"><a id=\"l01475\" name=\"l01475\"></a><span class=\"lineno\"> 1475</span>                                               dvBuffer, dvDesc,</div>\n-<div class=\"line\"><a id=\"l01476\" name=\"l01476\"></a><span class=\"lineno\"> 1476</span>                                               duuBuffer, duuDesc,</div>\n-<div class=\"line\"><a id=\"l01477\" name=\"l01477\"></a><span class=\"lineno\"> 1477</span>                                               duvBuffer, duvDesc,</div>\n-<div class=\"line\"><a id=\"l01478\" name=\"l01478\"></a><span class=\"lineno\"> 1478</span>                                               dvvBuffer, dvvDesc,</div>\n-<div class=\"line\"><a id=\"l01479\" name=\"l01479\"></a><span class=\"lineno\"> 1479</span>                                               numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l01480\" name=\"l01480\"></a><span class=\"lineno\"> 1480</span>                                               patchTable);</div>\n-<div class=\"line\"><a id=\"l01481\" name=\"l01481\"></a><span class=\"lineno\"> 1481</span>                <span class=\"keyword\">delete</span> instance;</div>\n-<div class=\"line\"><a id=\"l01482\" name=\"l01482\"></a><span class=\"lineno\"> 1482</span>                <span class=\"keywordflow\">return</span> r;</div>\n-<div class=\"line\"><a id=\"l01483\" name=\"l01483\"></a><span class=\"lineno\"> 1483</span>            }</div>\n-<div class=\"line\"><a id=\"l01484\" name=\"l01484\"></a><span class=\"lineno\"> 1484</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l01485\" name=\"l01485\"></a><span class=\"lineno\"> 1485</span>        }</div>\n-<div class=\"line\"><a id=\"l01486\" name=\"l01486\"></a><span class=\"lineno\"> 1486</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01487\" name=\"l01487\"></a><span class=\"lineno\"> 1487</span> </div>\n-<div class=\"line\"><a id=\"l01542\" name=\"l01542\"></a><span class=\"lineno\"> 1542</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01543\" name=\"l01543\"></a><span class=\"lineno\"> 1543</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01544\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01544\" name=\"l01544\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#a7a65272357856989d99d800900d53e85\"> 1544</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01221.html#a7a65272357856989d99d800900d53e85\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01545\" name=\"l01545\"></a><span class=\"lineno\"> 1545</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01546\" name=\"l01546\"></a><span class=\"lineno\"> 1546</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01547\" name=\"l01547\"></a><span class=\"lineno\"> 1547</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l01548\" name=\"l01548\"></a><span class=\"lineno\"> 1548</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l01549\" name=\"l01549\"></a><span class=\"lineno\"> 1549</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l01550\" name=\"l01550\"></a><span class=\"lineno\"> 1550</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l01551\" name=\"l01551\"></a><span class=\"lineno\"> 1551</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l01552\" name=\"l01552\"></a><span class=\"lineno\"> 1552</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01553\" name=\"l01553\"></a><span class=\"lineno\"> 1553</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01554\" name=\"l01554\"></a><span class=\"lineno\"> 1554</span>        PATCH_TABLE *patchTable)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l01555\" name=\"l01555\"></a><span class=\"lineno\"> 1555</span> </div>\n-<div class=\"line\"><a id=\"l01556\" name=\"l01556\"></a><span class=\"lineno\"> 1556</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01221.html#aa6e408cc03b3625bb31a2822075bd87c\">EvalPatches</a>(srcBuffer-&gt;BindVBO(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01557\" name=\"l01557\"></a><span class=\"lineno\"> 1557</span>                           dstBuffer-&gt;BindVBO(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l01558\" name=\"l01558\"></a><span class=\"lineno\"> 1558</span>                           duBuffer-&gt;BindVBO(), duDesc,</div>\n-<div class=\"line\"><a id=\"l01559\" name=\"l01559\"></a><span class=\"lineno\"> 1559</span>                           dvBuffer-&gt;BindVBO(), dvDesc,</div>\n-<div class=\"line\"><a id=\"l01560\" name=\"l01560\"></a><span class=\"lineno\"> 1560</span>                           duuBuffer-&gt;BindVBO(), duuDesc,</div>\n-<div class=\"line\"><a id=\"l01561\" name=\"l01561\"></a><span class=\"lineno\"> 1561</span>                           duvBuffer-&gt;BindVBO(), duvDesc,</div>\n-<div class=\"line\"><a id=\"l01562\" name=\"l01562\"></a><span class=\"lineno\"> 1562</span>                           dvvBuffer-&gt;BindVBO(), dvvDesc,</div>\n-<div class=\"line\"><a id=\"l01563\" name=\"l01563\"></a><span class=\"lineno\"> 1563</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01564\" name=\"l01564\"></a><span class=\"lineno\"> 1564</span>                           patchCoords-&gt;BindVBO(),</div>\n-<div class=\"line\"><a id=\"l01565\" name=\"l01565\"></a><span class=\"lineno\"> 1565</span>                           patchTable-&gt;GetVaryingPatchArrays(),</div>\n-<div class=\"line\"><a id=\"l01566\" name=\"l01566\"></a><span class=\"lineno\"> 1566</span>                           patchTable-&gt;GetVaryingPatchIndexBuffer(),</div>\n-<div class=\"line\"><a id=\"l01567\" name=\"l01567\"></a><span class=\"lineno\"> 1567</span>                           patchTable-&gt;GetPatchParamBuffer());</div>\n-<div class=\"line\"><a id=\"l01568\" name=\"l01568\"></a><span class=\"lineno\"> 1568</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01569\" name=\"l01569\"></a><span class=\"lineno\"> 1569</span> </div>\n-<div class=\"line\"><a id=\"l01604\" name=\"l01604\"></a><span class=\"lineno\"> 1604</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01605\" name=\"l01605\"></a><span class=\"lineno\"> 1605</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01606\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01606\" name=\"l01606\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#a1fddf904b732d4adcc2c77287a11da21\"> 1606</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01221.html#a1fddf904b732d4adcc2c77287a11da21\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01607\" name=\"l01607\"></a><span class=\"lineno\"> 1607</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01608\" name=\"l01608\"></a><span class=\"lineno\"> 1608</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01609\" name=\"l01609\"></a><span class=\"lineno\"> 1609</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01610\" name=\"l01610\"></a><span class=\"lineno\"> 1610</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01611\" name=\"l01611\"></a><span class=\"lineno\"> 1611</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l01612\" name=\"l01612\"></a><span class=\"lineno\"> 1612</span>        <span class=\"keywordtype\">int</span> fvarChannel,</div>\n-<div class=\"line\"><a id=\"l01613\" name=\"l01613\"></a><span class=\"lineno\"> 1613</span>        <a class=\"code hl_class\" href=\"a01221.html\">GLComputeEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n-<div class=\"line\"><a id=\"l01614\" name=\"l01614\"></a><span class=\"lineno\"> 1614</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l01615\" name=\"l01615\"></a><span class=\"lineno\"> 1615</span> </div>\n-<div class=\"line\"><a id=\"l01616\" name=\"l01616\"></a><span class=\"lineno\"> 1616</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l01617\" name=\"l01617\"></a><span class=\"lineno\"> 1617</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01221.html#a1fddf904b732d4adcc2c77287a11da21\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01618\" name=\"l01618\"></a><span class=\"lineno\"> 1618</span>                                         srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l01619\" name=\"l01619\"></a><span class=\"lineno\"> 1619</span>                                         dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01620\" name=\"l01620\"></a><span class=\"lineno\"> 1620</span>                                         numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l01621\" name=\"l01621\"></a><span class=\"lineno\"> 1621</span>                                         patchTable, fvarChannel);</div>\n-<div class=\"line\"><a id=\"l01622\" name=\"l01622\"></a><span class=\"lineno\"> 1622</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l01623\" name=\"l01623\"></a><span class=\"lineno\"> 1623</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n-<div class=\"line\"><a id=\"l01624\" name=\"l01624\"></a><span class=\"lineno\"> 1624</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l01625\" name=\"l01625\"></a><span class=\"lineno\"> 1625</span>            instance = <a class=\"code hl_function\" href=\"a01221.html#ab4c3cfbc05a1b3c7e08aac8258e38139\">Create</a>(srcDesc, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01626\" name=\"l01626\"></a><span class=\"lineno\"> 1626</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l01627\" name=\"l01627\"></a><span class=\"lineno\"> 1627</span>                              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>());</div>\n-<div class=\"line\"><a id=\"l01628\" name=\"l01628\"></a><span class=\"lineno\"> 1628</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l01629\" name=\"l01629\"></a><span class=\"lineno\"> 1629</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01221.html#a1fddf904b732d4adcc2c77287a11da21\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01630\" name=\"l01630\"></a><span class=\"lineno\"> 1630</span>                                               srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l01631\" name=\"l01631\"></a><span class=\"lineno\"> 1631</span>                                               dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01632\" name=\"l01632\"></a><span class=\"lineno\"> 1632</span>                                               numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l01633\" name=\"l01633\"></a><span class=\"lineno\"> 1633</span>                                               patchTable, fvarChannel);</div>\n-<div class=\"line\"><a id=\"l01634\" name=\"l01634\"></a><span class=\"lineno\"> 1634</span>                <span class=\"keyword\">delete</span> instance;</div>\n-<div class=\"line\"><a id=\"l01635\" name=\"l01635\"></a><span class=\"lineno\"> 1635</span>                <span class=\"keywordflow\">return</span> r;</div>\n-<div class=\"line\"><a id=\"l01636\" name=\"l01636\"></a><span class=\"lineno\"> 1636</span>            }</div>\n-<div class=\"line\"><a id=\"l01637\" name=\"l01637\"></a><span class=\"lineno\"> 1637</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l01638\" name=\"l01638\"></a><span class=\"lineno\"> 1638</span>        }</div>\n-<div class=\"line\"><a id=\"l01639\" name=\"l01639\"></a><span class=\"lineno\"> 1639</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01640\" name=\"l01640\"></a><span class=\"lineno\"> 1640</span> </div>\n-<div class=\"line\"><a id=\"l01667\" name=\"l01667\"></a><span class=\"lineno\"> 1667</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01668\" name=\"l01668\"></a><span class=\"lineno\"> 1668</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01669\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01669\" name=\"l01669\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#af7d3e4db03873d8c0d5da1d2c53f979e\"> 1669</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01221.html#af7d3e4db03873d8c0d5da1d2c53f979e\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01670\" name=\"l01670\"></a><span class=\"lineno\"> 1670</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01671\" name=\"l01671\"></a><span class=\"lineno\"> 1671</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01672\" name=\"l01672\"></a><span class=\"lineno\"> 1672</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01673\" name=\"l01673\"></a><span class=\"lineno\"> 1673</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01674\" name=\"l01674\"></a><span class=\"lineno\"> 1674</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l01675\" name=\"l01675\"></a><span class=\"lineno\"> 1675</span>        <span class=\"keywordtype\">int</span> fvarChannel = 0)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l01676\" name=\"l01676\"></a><span class=\"lineno\"> 1676</span> </div>\n-<div class=\"line\"><a id=\"l01677\" name=\"l01677\"></a><span class=\"lineno\"> 1677</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01221.html#aa6e408cc03b3625bb31a2822075bd87c\">EvalPatches</a>(srcBuffer-&gt;BindVBO(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01678\" name=\"l01678\"></a><span class=\"lineno\"> 1678</span>                           dstBuffer-&gt;BindVBO(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l01679\" name=\"l01679\"></a><span class=\"lineno\"> 1679</span>                           0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l01680\" name=\"l01680\"></a><span class=\"lineno\"> 1680</span>                           0, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l01681\" name=\"l01681\"></a><span class=\"lineno\"> 1681</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01682\" name=\"l01682\"></a><span class=\"lineno\"> 1682</span>                           patchCoords-&gt;BindVBO(),</div>\n-<div class=\"line\"><a id=\"l01683\" name=\"l01683\"></a><span class=\"lineno\"> 1683</span>                           patchTable-&gt;GetFVarPatchArrays(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l01684\" name=\"l01684\"></a><span class=\"lineno\"> 1684</span>                           patchTable-&gt;GetFVarPatchIndexBuffer(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l01685\" name=\"l01685\"></a><span class=\"lineno\"> 1685</span>                           patchTable-&gt;GetFVarPatchParamBuffer(fvarChannel));</div>\n-<div class=\"line\"><a id=\"l01686\" name=\"l01686\"></a><span class=\"lineno\"> 1686</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01687\" name=\"l01687\"></a><span class=\"lineno\"> 1687</span> </div>\n-<div class=\"line\"><a id=\"l01734\" name=\"l01734\"></a><span class=\"lineno\"> 1734</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01735\" name=\"l01735\"></a><span class=\"lineno\"> 1735</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01736\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01736\" name=\"l01736\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#a151b29da7c29ca329738e6a5f0c64898\"> 1736</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01221.html#a151b29da7c29ca329738e6a5f0c64898\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01737\" name=\"l01737\"></a><span class=\"lineno\"> 1737</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01738\" name=\"l01738\"></a><span class=\"lineno\"> 1738</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01739\" name=\"l01739\"></a><span class=\"lineno\"> 1739</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l01740\" name=\"l01740\"></a><span class=\"lineno\"> 1740</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l01741\" name=\"l01741\"></a><span class=\"lineno\"> 1741</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01742\" name=\"l01742\"></a><span class=\"lineno\"> 1742</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01743\" name=\"l01743\"></a><span class=\"lineno\"> 1743</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l01744\" name=\"l01744\"></a><span class=\"lineno\"> 1744</span>        <span class=\"keywordtype\">int</span> fvarChannel,</div>\n-<div class=\"line\"><a id=\"l01745\" name=\"l01745\"></a><span class=\"lineno\"> 1745</span>        <a class=\"code hl_class\" href=\"a01221.html\">GLComputeEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n-<div class=\"line\"><a id=\"l01746\" name=\"l01746\"></a><span class=\"lineno\"> 1746</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l01747\" name=\"l01747\"></a><span class=\"lineno\"> 1747</span> </div>\n-<div class=\"line\"><a id=\"l01748\" name=\"l01748\"></a><span class=\"lineno\"> 1748</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l01749\" name=\"l01749\"></a><span class=\"lineno\"> 1749</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01221.html#a1fddf904b732d4adcc2c77287a11da21\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01750\" name=\"l01750\"></a><span class=\"lineno\"> 1750</span>                                         srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l01751\" name=\"l01751\"></a><span class=\"lineno\"> 1751</span>                                         dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01752\" name=\"l01752\"></a><span class=\"lineno\"> 1752</span>                                         duBuffer, duDesc,</div>\n-<div class=\"line\"><a id=\"l01753\" name=\"l01753\"></a><span class=\"lineno\"> 1753</span>                                         dvBuffer, dvDesc,</div>\n-<div class=\"line\"><a id=\"l01754\" name=\"l01754\"></a><span class=\"lineno\"> 1754</span>                                         numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l01755\" name=\"l01755\"></a><span class=\"lineno\"> 1755</span>                                         patchTable, fvarChannel);</div>\n-<div class=\"line\"><a id=\"l01756\" name=\"l01756\"></a><span class=\"lineno\"> 1756</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l01757\" name=\"l01757\"></a><span class=\"lineno\"> 1757</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n-<div class=\"line\"><a id=\"l01758\" name=\"l01758\"></a><span class=\"lineno\"> 1758</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l01759\" name=\"l01759\"></a><span class=\"lineno\"> 1759</span>            instance = <a class=\"code hl_function\" href=\"a01221.html#ab4c3cfbc05a1b3c7e08aac8258e38139\">Create</a>(srcDesc, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01760\" name=\"l01760\"></a><span class=\"lineno\"> 1760</span>                              duDesc, dvDesc);</div>\n-<div class=\"line\"><a id=\"l01761\" name=\"l01761\"></a><span class=\"lineno\"> 1761</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l01762\" name=\"l01762\"></a><span class=\"lineno\"> 1762</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01221.html#a1fddf904b732d4adcc2c77287a11da21\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01763\" name=\"l01763\"></a><span class=\"lineno\"> 1763</span>                                               srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l01764\" name=\"l01764\"></a><span class=\"lineno\"> 1764</span>                                               dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01765\" name=\"l01765\"></a><span class=\"lineno\"> 1765</span>                                               duBuffer, duDesc,</div>\n-<div class=\"line\"><a id=\"l01766\" name=\"l01766\"></a><span class=\"lineno\"> 1766</span>                                               dvBuffer, dvDesc,</div>\n-<div class=\"line\"><a id=\"l01767\" name=\"l01767\"></a><span class=\"lineno\"> 1767</span>                                               numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l01768\" name=\"l01768\"></a><span class=\"lineno\"> 1768</span>                                               patchTable, fvarChannel);</div>\n-<div class=\"line\"><a id=\"l01769\" name=\"l01769\"></a><span class=\"lineno\"> 1769</span>                <span class=\"keyword\">delete</span> instance;</div>\n-<div class=\"line\"><a id=\"l01770\" name=\"l01770\"></a><span class=\"lineno\"> 1770</span>                <span class=\"keywordflow\">return</span> r;</div>\n-<div class=\"line\"><a id=\"l01771\" name=\"l01771\"></a><span class=\"lineno\"> 1771</span>            }</div>\n-<div class=\"line\"><a id=\"l01772\" name=\"l01772\"></a><span class=\"lineno\"> 1772</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l01773\" name=\"l01773\"></a><span class=\"lineno\"> 1773</span>        }</div>\n-<div class=\"line\"><a id=\"l01774\" name=\"l01774\"></a><span class=\"lineno\"> 1774</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01775\" name=\"l01775\"></a><span class=\"lineno\"> 1775</span> </div>\n-<div class=\"line\"><a id=\"l01814\" name=\"l01814\"></a><span class=\"lineno\"> 1814</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01815\" name=\"l01815\"></a><span class=\"lineno\"> 1815</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01816\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01816\" name=\"l01816\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#a8736b15a3afb5b221ed009b19503e063\"> 1816</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01221.html#a8736b15a3afb5b221ed009b19503e063\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01817\" name=\"l01817\"></a><span class=\"lineno\"> 1817</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01818\" name=\"l01818\"></a><span class=\"lineno\"> 1818</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01819\" name=\"l01819\"></a><span class=\"lineno\"> 1819</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l01820\" name=\"l01820\"></a><span class=\"lineno\"> 1820</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l01821\" name=\"l01821\"></a><span class=\"lineno\"> 1821</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01822\" name=\"l01822\"></a><span class=\"lineno\"> 1822</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01823\" name=\"l01823\"></a><span class=\"lineno\"> 1823</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l01824\" name=\"l01824\"></a><span class=\"lineno\"> 1824</span>        <span class=\"keywordtype\">int</span> fvarChannel = 0)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l01825\" name=\"l01825\"></a><span class=\"lineno\"> 1825</span> </div>\n-<div class=\"line\"><a id=\"l01826\" name=\"l01826\"></a><span class=\"lineno\"> 1826</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01221.html#aa6e408cc03b3625bb31a2822075bd87c\">EvalPatches</a>(srcBuffer-&gt;BindVBO(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01827\" name=\"l01827\"></a><span class=\"lineno\"> 1827</span>                           dstBuffer-&gt;BindVBO(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l01828\" name=\"l01828\"></a><span class=\"lineno\"> 1828</span>                           duBuffer-&gt;BindVBO(), duDesc,</div>\n-<div class=\"line\"><a id=\"l01829\" name=\"l01829\"></a><span class=\"lineno\"> 1829</span>                           dvBuffer-&gt;BindVBO(), dvDesc,</div>\n-<div class=\"line\"><a id=\"l01830\" name=\"l01830\"></a><span class=\"lineno\"> 1830</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01831\" name=\"l01831\"></a><span class=\"lineno\"> 1831</span>                           patchCoords-&gt;BindVBO(),</div>\n-<div class=\"line\"><a id=\"l01832\" name=\"l01832\"></a><span class=\"lineno\"> 1832</span>                           patchTable-&gt;GetFVarPatchArrays(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l01833\" name=\"l01833\"></a><span class=\"lineno\"> 1833</span>                           patchTable-&gt;GetFVarPatchIndexBuffer(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l01834\" name=\"l01834\"></a><span class=\"lineno\"> 1834</span>                           patchTable-&gt;GetFVarPatchParamBuffer(fvarChannel));</div>\n-<div class=\"line\"><a id=\"l01835\" name=\"l01835\"></a><span class=\"lineno\"> 1835</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01836\" name=\"l01836\"></a><span class=\"lineno\"> 1836</span> </div>\n-<div class=\"line\"><a id=\"l01901\" name=\"l01901\"></a><span class=\"lineno\"> 1901</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01902\" name=\"l01902\"></a><span class=\"lineno\"> 1902</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01903\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01903\" name=\"l01903\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#a719692669b13f988a0f61f4beacd79bb\"> 1903</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01221.html#a719692669b13f988a0f61f4beacd79bb\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01904\" name=\"l01904\"></a><span class=\"lineno\"> 1904</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01905\" name=\"l01905\"></a><span class=\"lineno\"> 1905</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01906\" name=\"l01906\"></a><span class=\"lineno\"> 1906</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l01907\" name=\"l01907\"></a><span class=\"lineno\"> 1907</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l01908\" name=\"l01908\"></a><span class=\"lineno\"> 1908</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l01909\" name=\"l01909\"></a><span class=\"lineno\"> 1909</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l01910\" name=\"l01910\"></a><span class=\"lineno\"> 1910</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l01911\" name=\"l01911\"></a><span class=\"lineno\"> 1911</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01912\" name=\"l01912\"></a><span class=\"lineno\"> 1912</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01913\" name=\"l01913\"></a><span class=\"lineno\"> 1913</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l01914\" name=\"l01914\"></a><span class=\"lineno\"> 1914</span>        <span class=\"keywordtype\">int</span> fvarChannel,</div>\n-<div class=\"line\"><a id=\"l01915\" name=\"l01915\"></a><span class=\"lineno\"> 1915</span>        <a class=\"code hl_class\" href=\"a01221.html\">GLComputeEvaluator</a> <span class=\"keyword\">const</span> *instance,</div>\n-<div class=\"line\"><a id=\"l01916\" name=\"l01916\"></a><span class=\"lineno\"> 1916</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l01917\" name=\"l01917\"></a><span class=\"lineno\"> 1917</span> </div>\n-<div class=\"line\"><a id=\"l01918\" name=\"l01918\"></a><span class=\"lineno\"> 1918</span>        <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l01919\" name=\"l01919\"></a><span class=\"lineno\"> 1919</span>            <span class=\"keywordflow\">return</span> instance-&gt;<a class=\"code hl_function\" href=\"a01221.html#a1fddf904b732d4adcc2c77287a11da21\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01920\" name=\"l01920\"></a><span class=\"lineno\"> 1920</span>                                         srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l01921\" name=\"l01921\"></a><span class=\"lineno\"> 1921</span>                                         dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01922\" name=\"l01922\"></a><span class=\"lineno\"> 1922</span>                                         duBuffer, duDesc,</div>\n-<div class=\"line\"><a id=\"l01923\" name=\"l01923\"></a><span class=\"lineno\"> 1923</span>                                         dvBuffer, dvDesc,</div>\n-<div class=\"line\"><a id=\"l01924\" name=\"l01924\"></a><span class=\"lineno\"> 1924</span>                                         duuBuffer, duuDesc,</div>\n-<div class=\"line\"><a id=\"l01925\" name=\"l01925\"></a><span class=\"lineno\"> 1925</span>                                         duvBuffer, duvDesc,</div>\n-<div class=\"line\"><a id=\"l01926\" name=\"l01926\"></a><span class=\"lineno\"> 1926</span>                                         dvvBuffer, dvvDesc,</div>\n-<div class=\"line\"><a id=\"l01927\" name=\"l01927\"></a><span class=\"lineno\"> 1927</span>                                         numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l01928\" name=\"l01928\"></a><span class=\"lineno\"> 1928</span>                                         patchTable, fvarChannel);</div>\n-<div class=\"line\"><a id=\"l01929\" name=\"l01929\"></a><span class=\"lineno\"> 1929</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l01930\" name=\"l01930\"></a><span class=\"lineno\"> 1930</span>            <span class=\"comment\">// Create an instance on demand (slow)</span></div>\n-<div class=\"line\"><a id=\"l01931\" name=\"l01931\"></a><span class=\"lineno\"> 1931</span>            (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l01932\" name=\"l01932\"></a><span class=\"lineno\"> 1932</span>            instance = <a class=\"code hl_function\" href=\"a01221.html#ab4c3cfbc05a1b3c7e08aac8258e38139\">Create</a>(srcDesc, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01933\" name=\"l01933\"></a><span class=\"lineno\"> 1933</span>                              duDesc, dvDesc,</div>\n-<div class=\"line\"><a id=\"l01934\" name=\"l01934\"></a><span class=\"lineno\"> 1934</span>                              duuDesc, duvDesc, dvvDesc);</div>\n-<div class=\"line\"><a id=\"l01935\" name=\"l01935\"></a><span class=\"lineno\"> 1935</span>            <span class=\"keywordflow\">if</span> (instance) {</div>\n-<div class=\"line\"><a id=\"l01936\" name=\"l01936\"></a><span class=\"lineno\"> 1936</span>                <span class=\"keywordtype\">bool</span> r = instance-&gt;<a class=\"code hl_function\" href=\"a01221.html#a1fddf904b732d4adcc2c77287a11da21\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01937\" name=\"l01937\"></a><span class=\"lineno\"> 1937</span>                                               srcBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l01938\" name=\"l01938\"></a><span class=\"lineno\"> 1938</span>                                               dstBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l01939\" name=\"l01939\"></a><span class=\"lineno\"> 1939</span>                                               duBuffer, duDesc,</div>\n-<div class=\"line\"><a id=\"l01940\" name=\"l01940\"></a><span class=\"lineno\"> 1940</span>                                               dvBuffer, dvDesc,</div>\n-<div class=\"line\"><a id=\"l01941\" name=\"l01941\"></a><span class=\"lineno\"> 1941</span>                                               duuBuffer, duuDesc,</div>\n-<div class=\"line\"><a id=\"l01942\" name=\"l01942\"></a><span class=\"lineno\"> 1942</span>                                               duvBuffer, duvDesc,</div>\n-<div class=\"line\"><a id=\"l01943\" name=\"l01943\"></a><span class=\"lineno\"> 1943</span>                                               dvvBuffer, dvvDesc,</div>\n-<div class=\"line\"><a id=\"l01944\" name=\"l01944\"></a><span class=\"lineno\"> 1944</span>                                               numPatchCoords, patchCoords,</div>\n-<div class=\"line\"><a id=\"l01945\" name=\"l01945\"></a><span class=\"lineno\"> 1945</span>                                               patchTable, fvarChannel);</div>\n-<div class=\"line\"><a id=\"l01946\" name=\"l01946\"></a><span class=\"lineno\"> 1946</span>                <span class=\"keyword\">delete</span> instance;</div>\n-<div class=\"line\"><a id=\"l01947\" name=\"l01947\"></a><span class=\"lineno\"> 1947</span>                <span class=\"keywordflow\">return</span> r;</div>\n-<div class=\"line\"><a id=\"l01948\" name=\"l01948\"></a><span class=\"lineno\"> 1948</span>            }</div>\n-<div class=\"line\"><a id=\"l01949\" name=\"l01949\"></a><span class=\"lineno\"> 1949</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l01950\" name=\"l01950\"></a><span class=\"lineno\"> 1950</span>        }</div>\n-<div class=\"line\"><a id=\"l01951\" name=\"l01951\"></a><span class=\"lineno\"> 1951</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01952\" name=\"l01952\"></a><span class=\"lineno\"> 1952</span> </div>\n-<div class=\"line\"><a id=\"l02009\" name=\"l02009\"></a><span class=\"lineno\"> 2009</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l02010\" name=\"l02010\"></a><span class=\"lineno\"> 2010</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen02011\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l02011\" name=\"l02011\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#ab0a4a9c408bc2a690d879cc7c2ffd21c\"> 2011</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01221.html#ab0a4a9c408bc2a690d879cc7c2ffd21c\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l02012\" name=\"l02012\"></a><span class=\"lineno\"> 2012</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l02013\" name=\"l02013\"></a><span class=\"lineno\"> 2013</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l02014\" name=\"l02014\"></a><span class=\"lineno\"> 2014</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l02015\" name=\"l02015\"></a><span class=\"lineno\"> 2015</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l02016\" name=\"l02016\"></a><span class=\"lineno\"> 2016</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l02017\" name=\"l02017\"></a><span class=\"lineno\"> 2017</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l02018\" name=\"l02018\"></a><span class=\"lineno\"> 2018</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l02019\" name=\"l02019\"></a><span class=\"lineno\"> 2019</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l02020\" name=\"l02020\"></a><span class=\"lineno\"> 2020</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l02021\" name=\"l02021\"></a><span class=\"lineno\"> 2021</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l02022\" name=\"l02022\"></a><span class=\"lineno\"> 2022</span>        <span class=\"keywordtype\">int</span> fvarChannel = 0)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l02023\" name=\"l02023\"></a><span class=\"lineno\"> 2023</span> </div>\n-<div class=\"line\"><a id=\"l02024\" name=\"l02024\"></a><span class=\"lineno\"> 2024</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01221.html#aa6e408cc03b3625bb31a2822075bd87c\">EvalPatches</a>(srcBuffer-&gt;BindVBO(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l02025\" name=\"l02025\"></a><span class=\"lineno\"> 2025</span>                           dstBuffer-&gt;BindVBO(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l02026\" name=\"l02026\"></a><span class=\"lineno\"> 2026</span>                           duBuffer-&gt;BindVBO(), duDesc,</div>\n-<div class=\"line\"><a id=\"l02027\" name=\"l02027\"></a><span class=\"lineno\"> 2027</span>                           dvBuffer-&gt;BindVBO(), dvDesc,</div>\n-<div class=\"line\"><a id=\"l02028\" name=\"l02028\"></a><span class=\"lineno\"> 2028</span>                           duuBuffer-&gt;BindVBO(), duuDesc,</div>\n-<div class=\"line\"><a id=\"l02029\" name=\"l02029\"></a><span class=\"lineno\"> 2029</span>                           duvBuffer-&gt;BindVBO(), duvDesc,</div>\n-<div class=\"line\"><a id=\"l02030\" name=\"l02030\"></a><span class=\"lineno\"> 2030</span>                           dvvBuffer-&gt;BindVBO(), dvvDesc,</div>\n-<div class=\"line\"><a id=\"l02031\" name=\"l02031\"></a><span class=\"lineno\"> 2031</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l02032\" name=\"l02032\"></a><span class=\"lineno\"> 2032</span>                           patchCoords-&gt;BindVBO(),</div>\n-<div class=\"line\"><a id=\"l02033\" name=\"l02033\"></a><span class=\"lineno\"> 2033</span>                           patchTable-&gt;GetFVarPatchArrays(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l02034\" name=\"l02034\"></a><span class=\"lineno\"> 2034</span>                           patchTable-&gt;GetFVarPatchIndexBuffer(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l02035\" name=\"l02035\"></a><span class=\"lineno\"> 2035</span>                           patchTable-&gt;GetFVarPatchParamBuffer(fvarChannel));</div>\n-<div class=\"line\"><a id=\"l02036\" name=\"l02036\"></a><span class=\"lineno\"> 2036</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l02037\" name=\"l02037\"></a><span class=\"lineno\"> 2037</span> </div>\n-<div class=\"line\"><a id=\"l02043\" name=\"l02043\"></a><span class=\"lineno\"> 2043</span> </div>\n-<div class=\"line\"><a id=\"l02046\" name=\"l02046\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#ade1086349c1a452f60bcf281383ceec2\"> 2046</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01221.html#ade1086349c1a452f60bcf281383ceec2\">Compile</a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l02047\" name=\"l02047\"></a><span class=\"lineno\"> 2047</span>                 <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l02048\" name=\"l02048\"></a><span class=\"lineno\"> 2048</span>                 <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc = <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l02049\" name=\"l02049\"></a><span class=\"lineno\"> 2049</span>                 <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc = <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l02050\" name=\"l02050\"></a><span class=\"lineno\"> 2050</span>                 <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc = <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l02051\" name=\"l02051\"></a><span class=\"lineno\"> 2051</span>                 <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc = <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l02052\" name=\"l02052\"></a><span class=\"lineno\"> 2052</span>                 <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc = <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>());</div>\n-<div class=\"line\"><a id=\"l02053\" name=\"l02053\"></a><span class=\"lineno\"> 2053</span> </div>\n-<div class=\"line\"><a id=\"l02055\" name=\"l02055\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01221.html#ac6c93ad38a7902d0e5ec28ff3bf9e52e\"> 2055</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01221.html#ac6c93ad38a7902d0e5ec28ff3bf9e52e\">Synchronize</a>(<span class=\"keywordtype\">void</span> *deviceContext);</div>\n-<div class=\"line\"><a id=\"l02056\" name=\"l02056\"></a><span class=\"lineno\"> 2056</span> </div>\n-<div class=\"line\"><a id=\"l02057\" name=\"l02057\"></a><span class=\"lineno\"> 2057</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l02058\" name=\"l02058\"></a><span class=\"lineno\"> 2058</span>    <span class=\"keyword\">struct </span>_StencilKernel {</div>\n-<div class=\"line\"><a id=\"l02059\" name=\"l02059\"></a><span class=\"lineno\"> 2059</span>        _StencilKernel();</div>\n-<div class=\"line\"><a id=\"l02060\" name=\"l02060\"></a><span class=\"lineno\"> 2060</span>        ~_StencilKernel();</div>\n-<div class=\"line\"><a id=\"l02061\" name=\"l02061\"></a><span class=\"lineno\"> 2061</span>        <span class=\"keywordtype\">bool</span> Compile(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l02062\" name=\"l02062\"></a><span class=\"lineno\"> 2062</span>                     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l02063\" name=\"l02063\"></a><span class=\"lineno\"> 2063</span>                     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l02064\" name=\"l02064\"></a><span class=\"lineno\"> 2064</span>                     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l02065\" name=\"l02065\"></a><span class=\"lineno\"> 2065</span>                     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l02066\" name=\"l02066\"></a><span class=\"lineno\"> 2066</span>                     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l02067\" name=\"l02067\"></a><span class=\"lineno\"> 2067</span>                     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l02068\" name=\"l02068\"></a><span class=\"lineno\"> 2068</span>                     <span class=\"keywordtype\">int</span> workGroupSize);</div>\n-<div class=\"line\"><a id=\"l02069\" name=\"l02069\"></a><span class=\"lineno\"> 2069</span>        GLuint program;</div>\n-<div class=\"line\"><a id=\"l02070\" name=\"l02070\"></a><span class=\"lineno\"> 2070</span>        GLuint uniformStart;</div>\n-<div class=\"line\"><a id=\"l02071\" name=\"l02071\"></a><span class=\"lineno\"> 2071</span>        GLuint uniformEnd;</div>\n-<div class=\"line\"><a id=\"l02072\" name=\"l02072\"></a><span class=\"lineno\"> 2072</span>        GLuint uniformSrcOffset;</div>\n-<div class=\"line\"><a id=\"l02073\" name=\"l02073\"></a><span class=\"lineno\"> 2073</span>        GLuint uniformDstOffset;</div>\n-<div class=\"line\"><a id=\"l02074\" name=\"l02074\"></a><span class=\"lineno\"> 2074</span>        GLuint uniformDuDesc;</div>\n-<div class=\"line\"><a id=\"l02075\" name=\"l02075\"></a><span class=\"lineno\"> 2075</span>        GLuint uniformDvDesc;</div>\n-<div class=\"line\"><a id=\"l02076\" name=\"l02076\"></a><span class=\"lineno\"> 2076</span>        GLuint uniformDuuDesc;</div>\n-<div class=\"line\"><a id=\"l02077\" name=\"l02077\"></a><span class=\"lineno\"> 2077</span>        GLuint uniformDuvDesc;</div>\n-<div class=\"line\"><a id=\"l02078\" name=\"l02078\"></a><span class=\"lineno\"> 2078</span>        GLuint uniformDvvDesc;</div>\n-<div class=\"line\"><a id=\"l02079\" name=\"l02079\"></a><span class=\"lineno\"> 2079</span>    } _stencilKernel;</div>\n-<div class=\"line\"><a id=\"l02080\" name=\"l02080\"></a><span class=\"lineno\"> 2080</span> </div>\n-<div class=\"line\"><a id=\"l02081\" name=\"l02081\"></a><span class=\"lineno\"> 2081</span>    <span class=\"keyword\">struct </span>_PatchKernel {</div>\n-<div class=\"line\"><a id=\"l02082\" name=\"l02082\"></a><span class=\"lineno\"> 2082</span>        _PatchKernel();</div>\n-<div class=\"line\"><a id=\"l02083\" name=\"l02083\"></a><span class=\"lineno\"> 2083</span>        ~_PatchKernel();</div>\n-<div class=\"line\"><a id=\"l02084\" name=\"l02084\"></a><span class=\"lineno\"> 2084</span>        <span class=\"keywordtype\">bool</span> Compile(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l02085\" name=\"l02085\"></a><span class=\"lineno\"> 2085</span>                     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l02086\" name=\"l02086\"></a><span class=\"lineno\"> 2086</span>                     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l02087\" name=\"l02087\"></a><span class=\"lineno\"> 2087</span>                     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l02088\" name=\"l02088\"></a><span class=\"lineno\"> 2088</span>                     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l02089\" name=\"l02089\"></a><span class=\"lineno\"> 2089</span>                     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l02090\" name=\"l02090\"></a><span class=\"lineno\"> 2090</span>                     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l02091\" name=\"l02091\"></a><span class=\"lineno\"> 2091</span>                     <span class=\"keywordtype\">int</span> workGroupSize);</div>\n-<div class=\"line\"><a id=\"l02092\" name=\"l02092\"></a><span class=\"lineno\"> 2092</span>        GLuint program;</div>\n-<div class=\"line\"><a id=\"l02093\" name=\"l02093\"></a><span class=\"lineno\"> 2093</span>        GLuint uniformSrcOffset;</div>\n-<div class=\"line\"><a id=\"l02094\" name=\"l02094\"></a><span class=\"lineno\"> 2094</span>        GLuint uniformDstOffset;</div>\n-<div class=\"line\"><a id=\"l02095\" name=\"l02095\"></a><span class=\"lineno\"> 2095</span>        GLuint uniformPatchArray;</div>\n-<div class=\"line\"><a id=\"l02096\" name=\"l02096\"></a><span class=\"lineno\"> 2096</span>        GLuint uniformDuDesc;</div>\n-<div class=\"line\"><a id=\"l02097\" name=\"l02097\"></a><span class=\"lineno\"> 2097</span>        GLuint uniformDvDesc;</div>\n-<div class=\"line\"><a id=\"l02098\" name=\"l02098\"></a><span class=\"lineno\"> 2098</span>        GLuint uniformDuuDesc;</div>\n-<div class=\"line\"><a id=\"l02099\" name=\"l02099\"></a><span class=\"lineno\"> 2099</span>        GLuint uniformDuvDesc;</div>\n-<div class=\"line\"><a id=\"l02100\" name=\"l02100\"></a><span class=\"lineno\"> 2100</span>        GLuint uniformDvvDesc;</div>\n-<div class=\"line\"><a id=\"l02101\" name=\"l02101\"></a><span class=\"lineno\"> 2101</span>    } _patchKernel;</div>\n-<div class=\"line\"><a id=\"l02102\" name=\"l02102\"></a><span class=\"lineno\"> 2102</span> </div>\n-<div class=\"line\"><a id=\"l02103\" name=\"l02103\"></a><span class=\"lineno\"> 2103</span>    <span class=\"keywordtype\">int</span> _workGroupSize;</div>\n-<div class=\"line\"><a id=\"l02104\" name=\"l02104\"></a><span class=\"lineno\"> 2104</span>    GLuint _patchArraysSSBO;</div>\n-<div class=\"line\"><a id=\"l02105\" name=\"l02105\"></a><span class=\"lineno\"> 2105</span>};</div>\n+<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span>    std::vector&lt;Index&gt; _ptexIndices;</div>\n+<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>};</div>\n </div>\n-<div class=\"line\"><a id=\"l02106\" name=\"l02106\"></a><span class=\"lineno\"> 2106</span> </div>\n-<div class=\"line\"><a id=\"l02107\" name=\"l02107\"></a><span class=\"lineno\"> 2107</span>}  <span class=\"comment\">// end namespace Osd</span></div>\n-<div class=\"line\"><a id=\"l02108\" name=\"l02108\"></a><span class=\"lineno\"> 2108</span> </div>\n-<div class=\"line\"><a id=\"l02109\" name=\"l02109\"></a><span class=\"lineno\"> 2109</span>}  <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l02110\" name=\"l02110\"></a><span class=\"lineno\"> 2110</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l02111\" name=\"l02111\"></a><span class=\"lineno\"> 2111</span> </div>\n-<div class=\"line\"><a id=\"l02112\" name=\"l02112\"></a><span class=\"lineno\"> 2112</span>}  <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l02113\" name=\"l02113\"></a><span class=\"lineno\"> 2113</span> </div>\n-<div class=\"line\"><a id=\"l02114\" name=\"l02114\"></a><span class=\"lineno\"> 2114</span> </div>\n-<div class=\"line\"><a id=\"l02115\" name=\"l02115\"></a><span class=\"lineno\"> 2115</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_GL_COMPUTE_EVALUATOR_H</span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa00912_html_a98098cd229f60d2397d84a76fe654a31\"><div class=\"ttname\"><a href=\"a00912.html#a98098cd229f60d2397d84a76fe654a31\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchArrayVector</a></div><div class=\"ttdeci\">std::vector&lt; PatchArray &gt; PatchArrayVector</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00132\">types.h:132</a></div></div>\n-<div class=\"ttc\" id=\"aa01065_html\"><div class=\"ttname\"><a href=\"a01065.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTable</a></div><div class=\"ttdoc\">Stencil table class wrapping the template for compatibility.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00273\">stencilTable.h:273</a></div></div>\n-<div class=\"ttc\" id=\"aa01081_html\"><div class=\"ttname\"><a href=\"a01081.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTable</a></div><div class=\"ttdoc\">Limit stencil table class wrapping the template for compatibility.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00583\">stencilTable.h:583</a></div></div>\n-<div class=\"ttc\" id=\"aa01141_html\"><div class=\"ttname\"><a href=\"a01141.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::BufferDescriptor</a></div><div class=\"ttdoc\">BufferDescriptor is a struct which describes buffer elements in interleaved data buffers....</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00866_source.html#l00061\">bufferDescriptor.h:61</a></div></div>\n-<div class=\"ttc\" id=\"aa01217_html\"><div class=\"ttname\"><a href=\"a01217.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableSSBO</a></div><div class=\"ttdoc\">GL stencil table (Shader Storage buffer)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00848_source.html#l00051\">glComputeEvaluator.h:51</a></div></div>\n-<div class=\"ttc\" id=\"aa01217_html_a0684aca639f38b5f1b0c8efffe5f8bd8\"><div class=\"ttname\"><a href=\"a01217.html#a0684aca639f38b5f1b0c8efffe5f8bd8\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableSSBO::GetDuvWeightsBuffer</a></div><div class=\"ttdeci\">GLuint GetDuvWeightsBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00848_source.html#l00077\">glComputeEvaluator.h:77</a></div></div>\n-<div class=\"ttc\" id=\"aa01217_html_a18892fc15bb6ed7166dc6bfd5aaf0065\"><div class=\"ttname\"><a href=\"a01217.html#a18892fc15bb6ed7166dc6bfd5aaf0065\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableSSBO::GetWeightsBuffer</a></div><div class=\"ttdeci\">GLuint GetWeightsBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00848_source.html#l00073\">glComputeEvaluator.h:73</a></div></div>\n-<div class=\"ttc\" id=\"aa01217_html_a27a911fea9736fbe935c0edc4de9b998\"><div class=\"ttname\"><a href=\"a01217.html#a27a911fea9736fbe935c0edc4de9b998\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableSSBO::GLStencilTableSSBO</a></div><div class=\"ttdeci\">GLStencilTableSSBO(Far::LimitStencilTable const *limitStencilTable)</div></div>\n-<div class=\"ttc\" id=\"aa01217_html_a2e90e1efa299fe2698ce2d1aa87ade49\"><div class=\"ttname\"><a href=\"a01217.html#a2e90e1efa299fe2698ce2d1aa87ade49\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableSSBO::GetDuWeightsBuffer</a></div><div class=\"ttdeci\">GLuint GetDuWeightsBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00848_source.html#l00074\">glComputeEvaluator.h:74</a></div></div>\n-<div class=\"ttc\" id=\"aa01217_html_a4bef0031fb9295436a4049ef5801fec5\"><div class=\"ttname\"><a href=\"a01217.html#a4bef0031fb9295436a4049ef5801fec5\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableSSBO::~GLStencilTableSSBO</a></div><div class=\"ttdeci\">~GLStencilTableSSBO()</div></div>\n-<div class=\"ttc\" id=\"aa01217_html_a65836d2070b943c8fecbad926d074de2\"><div class=\"ttname\"><a href=\"a01217.html#a65836d2070b943c8fecbad926d074de2\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableSSBO::GetNumStencils</a></div><div class=\"ttdeci\">int GetNumStencils() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00848_source.html#l00079\">glComputeEvaluator.h:79</a></div></div>\n-<div class=\"ttc\" id=\"aa01217_html_a6bacf93d27488cfcbf2e66d23b4073a1\"><div class=\"ttname\"><a href=\"a01217.html#a6bacf93d27488cfcbf2e66d23b4073a1\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableSSBO::GetIndicesBuffer</a></div><div class=\"ttdeci\">GLuint GetIndicesBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00848_source.html#l00072\">glComputeEvaluator.h:72</a></div></div>\n-<div class=\"ttc\" id=\"aa01217_html_a8ccadebd4c9c36a15a5cbec461bd07e7\"><div class=\"ttname\"><a href=\"a01217.html#a8ccadebd4c9c36a15a5cbec461bd07e7\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableSSBO::GetOffsetsBuffer</a></div><div class=\"ttdeci\">GLuint GetOffsetsBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00848_source.html#l00071\">glComputeEvaluator.h:71</a></div></div>\n-<div class=\"ttc\" id=\"aa01217_html_aaacee6173a99bb3d7bbfb0a352ef9828\"><div class=\"ttname\"><a href=\"a01217.html#aaacee6173a99bb3d7bbfb0a352ef9828\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableSSBO::GLStencilTableSSBO</a></div><div class=\"ttdeci\">GLStencilTableSSBO(Far::StencilTable const *stencilTable)</div></div>\n-<div class=\"ttc\" id=\"aa01217_html_aadc7c7c9d50c030f7aee9e486b3b1d55\"><div class=\"ttname\"><a href=\"a01217.html#aadc7c7c9d50c030f7aee9e486b3b1d55\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableSSBO::GetDvvWeightsBuffer</a></div><div class=\"ttdeci\">GLuint GetDvvWeightsBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00848_source.html#l00078\">glComputeEvaluator.h:78</a></div></div>\n-<div class=\"ttc\" id=\"aa01217_html_ab44562bc3f0ba09049f60ed0553e158a\"><div class=\"ttname\"><a href=\"a01217.html#ab44562bc3f0ba09049f60ed0553e158a\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableSSBO::GetSizesBuffer</a></div><div class=\"ttdeci\">GLuint GetSizesBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00848_source.html#l00070\">glComputeEvaluator.h:70</a></div></div>\n-<div class=\"ttc\" id=\"aa01217_html_ab739faa3277bb2ea54b5198b3b664f37\"><div class=\"ttname\"><a href=\"a01217.html#ab739faa3277bb2ea54b5198b3b664f37\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableSSBO::Create</a></div><div class=\"ttdeci\">static GLStencilTableSSBO * Create(Far::LimitStencilTable const *limitStencilTable, void *deviceContext=NULL)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00848_source.html#l00058\">glComputeEvaluator.h:58</a></div></div>\n-<div class=\"ttc\" id=\"aa01217_html_abe929adc8bb596b84057169f5ade4663\"><div class=\"ttname\"><a href=\"a01217.html#abe929adc8bb596b84057169f5ade4663\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableSSBO::GetDuuWeightsBuffer</a></div><div class=\"ttdeci\">GLuint GetDuuWeightsBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00848_source.html#l00076\">glComputeEvaluator.h:76</a></div></div>\n-<div class=\"ttc\" id=\"aa01217_html_ae418f2ccdfaec79f90a3ccb92cd511a2\"><div class=\"ttname\"><a href=\"a01217.html#ae418f2ccdfaec79f90a3ccb92cd511a2\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableSSBO::GetDvWeightsBuffer</a></div><div class=\"ttdeci\">GLuint GetDvWeightsBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00848_source.html#l00075\">glComputeEvaluator.h:75</a></div></div>\n-<div class=\"ttc\" id=\"aa01217_html_af687fa998cd70f0e79b87d59c96c6a72\"><div class=\"ttname\"><a href=\"a01217.html#af687fa998cd70f0e79b87d59c96c6a72\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableSSBO::Create</a></div><div class=\"ttdeci\">static GLStencilTableSSBO * Create(Far::StencilTable const *stencilTable, void *deviceContext=NULL)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00848_source.html#l00053\">glComputeEvaluator.h:53</a></div></div>\n-<div class=\"ttc\" id=\"aa01221_html\"><div class=\"ttname\"><a href=\"a01221.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00848_source.html#l00096\">glComputeEvaluator.h:96</a></div></div>\n-<div class=\"ttc\" id=\"aa01221_html_a03c47cdd97f18b8bbdd1e3ce66cbd5d8\"><div class=\"ttname\"><a href=\"a01221.html#a03c47cdd97f18b8bbdd1e3ce66cbd5d8\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable) const</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00848_source.html#l01214\">glComputeEvaluator.h:1214</a></div></div>\n-<div class=\"ttc\" id=\"aa01221_html_a151b29da7c29ca329738e6a5f0c64898\"><div class=\"ttname\"><a href=\"a01221.html#a151b29da7c29ca329738e6a5f0c64898\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel, GLComputeEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00848_source.html#l01736\">glComputeEvaluator.h:1736</a></div></div>\n-<div class=\"ttc\" id=\"aa01221_html_a16dedd32573dd7f70c61f1fb6072e791\"><div class=\"ttname\"><a href=\"a01221.html#a16dedd32573dd7f70c61f1fb6072e791\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::EvalStencils</a></div><div class=\"ttdeci\">bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, STENCIL_TABLE const *stencilTable) const</div><div class=\"ttdoc\">Generic stencil function.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00848_source.html#l00434\">glComputeEvaluator.h:434</a></div></div>\n-<div class=\"ttc\" id=\"aa01221_html_a1c6ee39e3debcf0f71886acfeac5ce47\"><div class=\"ttname\"><a href=\"a01221.html#a1c6ee39e3debcf0f71886acfeac5ce47\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, GLComputeEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00848_source.html#l01154\">glComputeEvaluator.h:1154</a></div></div>\n-<div class=\"ttc\" id=\"aa01221_html_a1fddf904b732d4adcc2c77287a11da21\"><div class=\"ttname\"><a href=\"a01221.html#a1fddf904b732d4adcc2c77287a11da21\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel, GLComputeEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00848_source.html#l01606\">glComputeEvaluator.h:1606</a></div></div>\n-<div class=\"ttc\" id=\"aa01221_html_a20fa5a4f3311832729ea7b10f935285d\"><div class=\"ttname\"><a href=\"a01221.html#a20fa5a4f3311832729ea7b10f935285d\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::EvalStencils</a></div><div class=\"ttdeci\">bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, STENCIL_TABLE const *stencilTable) const</div><div class=\"ttdoc\">Generic stencil function.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00848_source.html#l00502\">glComputeEvaluator.h:502</a></div></div>\n-<div class=\"ttc\" id=\"aa01221_html_a2accf86fd727ccc3d78bb4acd9842978\"><div class=\"ttname\"><a href=\"a01221.html#a2accf86fd727ccc3d78bb4acd9842978\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, GLComputeEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00848_source.html#l01278\">glComputeEvaluator.h:1278</a></div></div>\n-<div class=\"ttc\" id=\"aa01221_html_a2c24b70c9312d8dff3fecb9ddea52c44\"><div class=\"ttname\"><a href=\"a01221.html#a2c24b70c9312d8dff3fecb9ddea52c44\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::Instantiatable</a></div><div class=\"ttdeci\">bool Instantiatable</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00848_source.html#l00098\">glComputeEvaluator.h:98</a></div></div>\n-<div class=\"ttc\" id=\"aa01221_html_a2d1074f49212a9ae65161e9c957dbab7\"><div class=\"ttname\"><a href=\"a01221.html#a2d1074f49212a9ae65161e9c957dbab7\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::EvalPatches</a></div><div class=\"ttdeci\">bool EvalPatches(GLuint srcBuffer, BufferDescriptor const &amp;srcDesc, GLuint dstBuffer, BufferDescriptor const &amp;dstDesc, GLuint duBuffer, BufferDescriptor const &amp;duDesc, GLuint dvBuffer, BufferDescriptor const &amp;dvDesc, GLuint duuBuffer, BufferDescriptor const &amp;duuDesc, GLuint duvBuffer, BufferDescriptor const &amp;duvDesc, GLuint dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, GLuint patchCoordsBuffer, const PatchArrayVector &amp;patchArrays, GLuint patchIndexBuffer, GLuint patchParamsBuffer) const</div></div>\n-<div class=\"ttc\" id=\"aa01221_html_a2f39a072765ebdc9d4d2b4289685b815\"><div class=\"ttname\"><a href=\"a01221.html#a2f39a072765ebdc9d4d2b4289685b815\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::~GLComputeEvaluator</a></div><div class=\"ttdeci\">~GLComputeEvaluator()</div><div class=\"ttdoc\">Destructor. note that the GL context must be made current.</div></div>\n-<div class=\"ttc\" id=\"aa01221_html_a35609a9d5a1b087bd675035d710dc688\"><div class=\"ttname\"><a href=\"a01221.html#a35609a9d5a1b087bd675035d710dc688\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::EvalPatches</a></div><div class=\"ttdeci\">bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable) const</div><div class=\"ttdoc\">Generic limit eval function with derivatives. This function has a same signature as other device kern...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00848_source.html#l01071\">glComputeEvaluator.h:1071</a></div></div>\n-<div class=\"ttc\" id=\"aa01221_html_a4290a43277fbcd7d5f55aaa369939e54\"><div class=\"ttname\"><a href=\"a01221.html#a4290a43277fbcd7d5f55aaa369939e54\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, STENCIL_TABLE const *stencilTable, GLComputeEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic static stencil function. This function has a same signature as other device kernels have so t...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00848_source.html#l00236\">glComputeEvaluator.h:236</a></div></div>\n-<div class=\"ttc\" id=\"aa01221_html_a54b949bb4819f61594334e599194f224\"><div class=\"ttname\"><a href=\"a01221.html#a54b949bb4819f61594334e599194f224\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::EvalStencils</a></div><div class=\"ttdeci\">bool EvalStencils(GLuint srcBuffer, BufferDescriptor const &amp;srcDesc, GLuint dstBuffer, BufferDescriptor const &amp;dstDesc, GLuint duBuffer, BufferDescriptor const &amp;duDesc, GLuint dvBuffer, BufferDescriptor const &amp;dvDesc, GLuint duuBuffer, BufferDescriptor const &amp;duuDesc, GLuint duvBuffer, BufferDescriptor const &amp;duvDesc, GLuint dvvBuffer, BufferDescriptor const &amp;dvvDesc, GLuint sizesBuffer, GLuint offsetsBuffer, GLuint indicesBuffer, GLuint weightsBuffer, GLuint duWeightsBuffer, GLuint dvWeightsBuffer, GLuint duuWeightsBuffer, GLuint duvWeightsBuffer, GLuint dvvWeightsBuffer, int start, int end) const</div><div class=\"ttdoc\">Dispatch the GLSL compute kernel on GPU asynchronously returns false if the kernel hasn't been compil...</div></div>\n-<div class=\"ttc\" id=\"aa01221_html_a5a332778562ac0aaa3b59e7d504329f6\"><div class=\"ttname\"><a href=\"a01221.html#a5a332778562ac0aaa3b59e7d504329f6\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, STENCIL_TABLE const *stencilTable, GLComputeEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic static stencil function. This function has a same signature as other device kernels have so t...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00848_source.html#l00168\">glComputeEvaluator.h:168</a></div></div>\n-<div class=\"ttc\" id=\"aa01221_html_a5e61f61981d7584a2297f249946bd445\"><div class=\"ttname\"><a href=\"a01221.html#a5e61f61981d7584a2297f249946bd445\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, GLComputeEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00848_source.html#l01439\">glComputeEvaluator.h:1439</a></div></div>\n-<div class=\"ttc\" id=\"aa01221_html_a6a85616578cd5275f4a1d69f6db5ad3b\"><div class=\"ttname\"><a href=\"a01221.html#a6a85616578cd5275f4a1d69f6db5ad3b\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, GLComputeEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00848_source.html#l00769\">glComputeEvaluator.h:769</a></div></div>\n-<div class=\"ttc\" id=\"aa01221_html_a719692669b13f988a0f61f4beacd79bb\"><div class=\"ttname\"><a href=\"a01221.html#a719692669b13f988a0f61f4beacd79bb\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel, GLComputeEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00848_source.html#l01903\">glComputeEvaluator.h:1903</a></div></div>\n-<div class=\"ttc\" id=\"aa01221_html_a7a65272357856989d99d800900d53e85\"><div class=\"ttname\"><a href=\"a01221.html#a7a65272357856989d99d800900d53e85\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable) const</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00848_source.html#l01544\">glComputeEvaluator.h:1544</a></div></div>\n-<div class=\"ttc\" id=\"aa01221_html_a8736b15a3afb5b221ed009b19503e063\"><div class=\"ttname\"><a href=\"a01221.html#a8736b15a3afb5b221ed009b19503e063\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel=0) const</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00848_source.html#l01816\">glComputeEvaluator.h:1816</a></div></div>\n-<div class=\"ttc\" id=\"aa01221_html_a96616cfe920c027568e2ae931b3ba506\"><div class=\"ttname\"><a href=\"a01221.html#a96616cfe920c027568e2ae931b3ba506\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::EvalPatches</a></div><div class=\"ttdeci\">bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable) const</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00848_source.html#l00943\">glComputeEvaluator.h:943</a></div></div>\n-<div class=\"ttc\" id=\"aa01221_html_a9fe54ab76e32fb2dc6f7cd631ce2e678\"><div class=\"ttname\"><a href=\"a01221.html#a9fe54ab76e32fb2dc6f7cd631ce2e678\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::GLComputeEvaluator</a></div><div class=\"ttdeci\">GLComputeEvaluator()</div><div class=\"ttdoc\">Constructor.</div></div>\n-<div class=\"ttc\" id=\"aa01221_html_aa28dc7f2bd31f1cdac0013ad9de8f434\"><div class=\"ttname\"><a href=\"a01221.html#aa28dc7f2bd31f1cdac0013ad9de8f434\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::EvalPatches</a></div><div class=\"ttdeci\">bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable) const</div><div class=\"ttdoc\">Generic limit eval function with derivatives. This function has a same signature as other device kern...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00848_source.html#l00997\">glComputeEvaluator.h:997</a></div></div>\n-<div class=\"ttc\" id=\"aa01221_html_aa6e408cc03b3625bb31a2822075bd87c\"><div class=\"ttname\"><a href=\"a01221.html#aa6e408cc03b3625bb31a2822075bd87c\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, GLComputeEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00848_source.html#l00691\">glComputeEvaluator.h:691</a></div></div>\n-<div class=\"ttc\" id=\"aa01221_html_aab4ecc7e79b822b8994b326cc05ad573\"><div class=\"ttname\"><a href=\"a01221.html#aab4ecc7e79b822b8994b326cc05ad573\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::EvalStencils</a></div><div class=\"ttdeci\">bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, STENCIL_TABLE const *stencilTable) const</div><div class=\"ttdoc\">Generic stencil function.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00848_source.html#l00386\">glComputeEvaluator.h:386</a></div></div>\n-<div class=\"ttc\" id=\"aa01221_html_aac8b4b814219420a124f8a92c96fd026\"><div class=\"ttname\"><a href=\"a01221.html#aac8b4b814219420a124f8a92c96fd026\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::EvalPatches</a></div><div class=\"ttdeci\">bool EvalPatches(GLuint srcBuffer, BufferDescriptor const &amp;srcDesc, GLuint dstBuffer, BufferDescriptor const &amp;dstDesc, GLuint duBuffer, BufferDescriptor const &amp;duDesc, GLuint dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, GLuint patchCoordsBuffer, const PatchArrayVector &amp;patchArrays, GLuint patchIndexBuffer, GLuint patchParamsBuffer) const</div></div>\n-<div class=\"ttc\" id=\"aa01221_html_ab0a4a9c408bc2a690d879cc7c2ffd21c\"><div class=\"ttname\"><a href=\"a01221.html#ab0a4a9c408bc2a690d879cc7c2ffd21c\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel=0) const</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00848_source.html#l02011\">glComputeEvaluator.h:2011</a></div></div>\n-<div class=\"ttc\" id=\"aa01221_html_ab4c3cfbc05a1b3c7e08aac8258e38139\"><div class=\"ttname\"><a href=\"a01221.html#ab4c3cfbc05a1b3c7e08aac8258e38139\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::Create</a></div><div class=\"ttdeci\">static GLComputeEvaluator * Create(BufferDescriptor const &amp;srcDesc, BufferDescriptor const &amp;dstDesc, BufferDescriptor const &amp;duDesc, BufferDescriptor const &amp;dvDesc, void *deviceContext=NULL)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00848_source.html#l00099\">glComputeEvaluator.h:99</a></div></div>\n-<div class=\"ttc\" id=\"aa01221_html_ab8d69b17b91e3066aaa7dad2d38691de\"><div class=\"ttname\"><a href=\"a01221.html#ab8d69b17b91e3066aaa7dad2d38691de\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::EvalStencils</a></div><div class=\"ttdeci\">bool EvalStencils(GLuint srcBuffer, BufferDescriptor const &amp;srcDesc, GLuint dstBuffer, BufferDescriptor const &amp;dstDesc, GLuint duBuffer, BufferDescriptor const &amp;duDesc, GLuint dvBuffer, BufferDescriptor const &amp;dvDesc, GLuint sizesBuffer, GLuint offsetsBuffer, GLuint indicesBuffer, GLuint weightsBuffer, GLuint duWeightsBuffer, GLuint dvWeightsBuffer, int start, int end) const</div><div class=\"ttdoc\">Dispatch the GLSL compute kernel on GPU asynchronously returns false if the kernel hasn't been compil...</div></div>\n-<div class=\"ttc\" id=\"aa01221_html_ab914d6c888b41d82916edf17e35d5fbe\"><div class=\"ttname\"><a href=\"a01221.html#ab914d6c888b41d82916edf17e35d5fbe\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, STENCIL_TABLE const *stencilTable, GLComputeEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic static stencil function. This function has a same signature as other device kernels have so t...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00848_source.html#l00326\">glComputeEvaluator.h:326</a></div></div>\n-<div class=\"ttc\" id=\"aa01221_html_ac6c93ad38a7902d0e5ec28ff3bf9e52e\"><div class=\"ttname\"><a href=\"a01221.html#ac6c93ad38a7902d0e5ec28ff3bf9e52e\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::Synchronize</a></div><div class=\"ttdeci\">static void Synchronize(void *deviceContext)</div><div class=\"ttdoc\">Wait the dispatched kernel finishes.</div></div>\n-<div class=\"ttc\" id=\"aa01221_html_ade1086349c1a452f60bcf281383ceec2\"><div class=\"ttname\"><a href=\"a01221.html#ade1086349c1a452f60bcf281383ceec2\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::Compile</a></div><div class=\"ttdeci\">bool Compile(BufferDescriptor const &amp;srcDesc, BufferDescriptor const &amp;dstDesc, BufferDescriptor const &amp;duDesc=BufferDescriptor(), BufferDescriptor const &amp;dvDesc=BufferDescriptor(), BufferDescriptor const &amp;duuDesc=BufferDescriptor(), BufferDescriptor const &amp;duvDesc=BufferDescriptor(), BufferDescriptor const &amp;dvvDesc=BufferDescriptor())</div></div>\n-<div class=\"ttc\" id=\"aa01221_html_ae642c88c8896d4d55b1876757197b1cc\"><div class=\"ttname\"><a href=\"a01221.html#ae642c88c8896d4d55b1876757197b1cc\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable) const</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00848_source.html#l01355\">glComputeEvaluator.h:1355</a></div></div>\n-<div class=\"ttc\" id=\"aa01221_html_aeeb1dfce13c31a0b2af5f68091c85352\"><div class=\"ttname\"><a href=\"a01221.html#aeeb1dfce13c31a0b2af5f68091c85352\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::Create</a></div><div class=\"ttdeci\">static GLComputeEvaluator * Create(BufferDescriptor const &amp;srcDesc, BufferDescriptor const &amp;dstDesc, BufferDescriptor const &amp;duDesc, BufferDescriptor const &amp;dvDesc, BufferDescriptor const &amp;duuDesc, BufferDescriptor const &amp;duvDesc, BufferDescriptor const &amp;dvvDesc, void *deviceContext=NULL)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00848_source.html#l00111\">glComputeEvaluator.h:111</a></div></div>\n-<div class=\"ttc\" id=\"aa01221_html_af7d3e4db03873d8c0d5da1d2c53f979e\"><div class=\"ttname\"><a href=\"a01221.html#af7d3e4db03873d8c0d5da1d2c53f979e\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel=0) const</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00848_source.html#l01669\">glComputeEvaluator.h:1669</a></div></div>\n-<div class=\"ttc\" id=\"aa01221_html_af806842b89f37a3cd5e153ed67c926ec\"><div class=\"ttname\"><a href=\"a01221.html#af806842b89f37a3cd5e153ed67c926ec\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, GLComputeEvaluator const *instance, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00848_source.html#l00870\">glComputeEvaluator.h:870</a></div></div>\n+<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span> </div>\n+<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span> </div>\n+<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span>} <span class=\"comment\">// end namespace Far</span></div>\n+<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span> </div>\n+<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span> </div>\n+<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_FAR_PTEX_INDICES_H */</span><span class=\"preprocessor\"></span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa00908_html_ab34c85a48f33dfe7b8bf4d966fdebbf2\"><div class=\"ttname\"><a href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">OpenSubdiv::OPENSUBDIV_VERSION::Far::Index</a></div><div class=\"ttdeci\">Vtr::Index Index</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01486_source.html#l00041\">types.h:41</a></div></div>\n+<div class=\"ttc\" id=\"aa01041_html\"><div class=\"ttname\"><a href=\"a01041.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PtexIndices</a></div><div class=\"ttdoc\">Object used to compute and query ptex face indices.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00848_source.html#l00046\">ptexIndices.h:46</a></div></div>\n+<div class=\"ttc\" id=\"aa01041_html_a5fbaaa1a52a6d7622b1d306bf0a16624\"><div class=\"ttname\"><a href=\"a01041.html#a5fbaaa1a52a6d7622b1d306bf0a16624\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PtexIndices::GetFaceId</a></div><div class=\"ttdeci\">int GetFaceId(Index f) const</div><div class=\"ttdoc\">Returns the ptex face index given a coarse face 'f' or -1.</div></div>\n+<div class=\"ttc\" id=\"aa01041_html_a7b5dd5f4c76d684d924adf477eeea0a3\"><div class=\"ttname\"><a href=\"a01041.html#a7b5dd5f4c76d684d924adf477eeea0a3\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PtexIndices::PtexIndices</a></div><div class=\"ttdeci\">PtexIndices(TopologyRefiner const &amp;refiner)</div><div class=\"ttdoc\">Constructor.</div></div>\n+<div class=\"ttc\" id=\"aa01041_html_a8a146d5966d7372bdd2557e990e52adc\"><div class=\"ttname\"><a href=\"a01041.html#a8a146d5966d7372bdd2557e990e52adc\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PtexIndices::GetAdjacency</a></div><div class=\"ttdeci\">void GetAdjacency(TopologyRefiner const &amp;refiner, int face, int quadrant, int adjFaces[4], int adjEdges[4]) const</div><div class=\"ttdoc\">Returns ptex face adjacency information for a given coarse face.</div></div>\n+<div class=\"ttc\" id=\"aa01041_html_a9920fb01c4b75c94a953a98008a4baba\"><div class=\"ttname\"><a href=\"a01041.html#a9920fb01c4b75c94a953a98008a4baba\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PtexIndices::GetNumFaces</a></div><div class=\"ttdeci\">int GetNumFaces() const</div><div class=\"ttdoc\">Returns the number of ptex faces in the mesh.</div></div>\n+<div class=\"ttc\" id=\"aa01041_html_af22a241c3be4bc69a948371d108e7cfa\"><div class=\"ttname\"><a href=\"a01041.html#af22a241c3be4bc69a948371d108e7cfa\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PtexIndices::~PtexIndices</a></div><div class=\"ttdeci\">~PtexIndices()</div><div class=\"ttdoc\">Destructor.</div></div>\n+<div class=\"ttc\" id=\"aa01121_html\"><div class=\"ttname\"><a href=\"a01121.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner</a></div><div class=\"ttdoc\">Stores topology data for a specified set of refinement options.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00051\">topologyRefiner.h:51</a></div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00848.html\">glComputeEvaluator.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7f420b72a822828cfa8b0561c695a5cc.html\">far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00848.html\">ptexIndices.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,12 +1,12 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-glComputeEvaluator.h\n+ptexIndices.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n 2// Copyright 2015 Pixar\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n@@ -23,1360 +23,90 @@\n 17//\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n-24\n-25#ifndef OPENSUBDIV3_OSD_GL_COMPUTE_EVALUATOR_H\n-26#define OPENSUBDIV3_OSD_GL_COMPUTE_EVALUATOR_H\n-27\n-28#include \"../version.h\"\n-29\n-30#include \"../osd/opengl.h\"\n-31#include \"../osd/types.h\"\n-32#include \"../osd/bufferDescriptor.h\"\n+24#ifndef OPENSUBDIV3_FAR_PTEX_INDICES_H\n+25#define OPENSUBDIV3_FAR_PTEX_INDICES_H\n+26\n+27#include \"../version.h\"\n+28\n+29#include \"../far/topologyRefiner.h\"\n+30#include \"../far/types.h\"\n+31\n+32#include <vector>\n 33\n 34namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n 35namespace OPENSUBDIV_VERSION {\n 36\n 37namespace Far {\n-38 class PatchTable;\n-39 class StencilTable;\n-40 class LimitStencilTable;\n-41}\n-42\n-43namespace Osd {\n-44\n-_\b5_\b1class _\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bS_\bS_\bB_\bO {\n-52public:\n-_\b5_\b3 static _\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bS_\bS_\bB_\bO *_\bC_\br_\be_\ba_\bt_\be(_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *stencilTable,\n-54 void *deviceContext = NULL) {\n-55 (void)deviceContext; // unused\n-56 return new _\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bS_\bS_\bB_\bO(stencilTable);\n-57 }\n-_\b5_\b8 static _\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bS_\bS_\bB_\bO *_\bC_\br_\be_\ba_\bt_\be(\n-59 _\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *limitStencilTable,\n-60 void *deviceContext = NULL) {\n-61 (void)deviceContext; // unused\n-62 return new _\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bS_\bS_\bB_\bO(limitStencilTable);\n-63 }\n+38\n+_\b4_\b6class _\bP_\bt_\be_\bx_\bI_\bn_\bd_\bi_\bc_\be_\bs {\n+47\n+48public:\n+49\n+_\b5_\b1 _\bP_\bt_\be_\bx_\bI_\bn_\bd_\bi_\bc_\be_\bs(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const &refiner);\n+52\n+_\b5_\b4 _\b~_\bP_\bt_\be_\bx_\bI_\bn_\bd_\bi_\bc_\be_\bs();\n+55\n+57\n+60\n+_\b6_\b3 int _\bG_\be_\bt_\bN_\bu_\bm_\bF_\ba_\bc_\be_\bs() const;\n 64\n-_\b6_\b5 explicit _\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bS_\bS_\bB_\bO(_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *stencilTable);\n-_\b6_\b6 explicit _\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bS_\bS_\bB_\bO(_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const\n-*limitStencilTable);\n-_\b6_\b7 _\b~_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bS_\bS_\bB_\bO();\n+_\b6_\b7 int _\bG_\be_\bt_\bF_\ba_\bc_\be_\bI_\bd(_\bI_\bn_\bd_\be_\bx f) const;\n 68\n-69 // interfaces needed for GLSLComputeKernel\n-_\b7_\b0 GLuint _\bG_\be_\bt_\bS_\bi_\bz_\be_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _sizes; }\n-_\b7_\b1 GLuint _\bG_\be_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _offsets; }\n-_\b7_\b2 GLuint _\bG_\be_\bt_\bI_\bn_\bd_\bi_\bc_\be_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _indices; }\n-_\b7_\b3 GLuint _\bG_\be_\bt_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _weights; }\n-_\b7_\b4 GLuint _\bG_\be_\bt_\bD_\bu_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _duWeights; }\n-_\b7_\b5 GLuint _\bG_\be_\bt_\bD_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _dvWeights; }\n-_\b7_\b6 GLuint _\bG_\be_\bt_\bD_\bu_\bu_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _duuWeights; }\n-_\b7_\b7 GLuint _\bG_\be_\bt_\bD_\bu_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _duvWeights; }\n-_\b7_\b8 GLuint _\bG_\be_\bt_\bD_\bv_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br() const { return _dvvWeights; }\n-_\b7_\b9 int _\bG_\be_\bt_\bN_\bu_\bm_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs() const { return _numStencils; }\n-80\n-81private:\n-82 GLuint _sizes;\n-83 GLuint _offsets;\n-84 GLuint _indices;\n-85 GLuint _weights;\n-86 GLuint _duWeights;\n-87 GLuint _dvWeights;\n-88 GLuint _duuWeights;\n-89 GLuint _duvWeights;\n-90 GLuint _dvvWeights;\n-91 int _numStencils;\n-92};\n+_\b8_\b3 void _\bG_\be_\bt_\bA_\bd_\bj_\ba_\bc_\be_\bn_\bc_\by(\n+84 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const &refiner,\n+85 int face, int quadrant,\n+86 int adjFaces[4], int adjEdges[4]) const;\n+87\n+89\n+90private:\n+91\n+92 void initializePtexIndices(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const &refiner);\n 93\n-94// --------------------------------------------------------------------------\n--\n+94private:\n 95\n-_\b9_\b6class _\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br {\n-97public:\n-_\b9_\b8 typedef bool _\bI_\bn_\bs_\bt_\ba_\bn_\bt_\bi_\ba_\bt_\ba_\bb_\bl_\be;\n-_\b9_\b9 static _\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br * _\bC_\br_\be_\ba_\bt_\be(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-100 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-101 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-102 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-103 void * deviceContext = NULL) {\n-104 return _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc, duDesc, dvDesc,\n-105 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-106 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-107 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-108 deviceContext);\n-109 }\n-110\n-_\b1_\b1_\b1 static _\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br * _\bC_\br_\be_\ba_\bt_\be(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-112 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-113 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-114 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-115 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-116 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-117 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-118 void * deviceContext = NULL) {\n-119 (void)deviceContext; // not used\n-120 _\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br *instance = new _\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br();\n-121 if (instance->_\bC_\bo_\bm_\bp_\bi_\bl_\be(srcDesc, dstDesc, duDesc, dvDesc,\n-122 duuDesc, duvDesc, dvvDesc))\n-123 return instance;\n-124 delete instance;\n-125 return NULL;\n-126 }\n-127\n-_\b1_\b2_\b9 _\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br();\n-130\n-_\b1_\b3_\b2 _\b~_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br();\n-133\n-139\n-167 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n-_\b1_\b6_\b8 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n-169 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-170 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-171 STENCIL_TABLE const *stencilTable,\n-172 _\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n-173 void * deviceContext = NULL) {\n-174\n-175 if (instance) {\n-176 return instance->_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer, srcDesc,\n-177 dstBuffer, dstDesc,\n-178 stencilTable);\n-179 } else {\n-180 // Create an instance on demand (slow)\n-181 (void)deviceContext; // unused\n-182 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n-183 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-184 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br());\n-185 if (instance) {\n-186 bool r = instance->_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer, srcDesc,\n-187 dstBuffer, dstDesc,\n-188 stencilTable);\n-189 delete instance;\n-190 return r;\n-191 }\n-192 return false;\n-193 }\n-194 }\n-195\n-235 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n-_\b2_\b3_\b6 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n-237 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-238 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-239 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-240 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-241 STENCIL_TABLE const *stencilTable,\n-242 _\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n-243 void * deviceContext = NULL) {\n-244\n-245 if (instance) {\n-246 return instance->_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer, srcDesc,\n-247 dstBuffer, dstDesc,\n-248 duBuffer, duDesc,\n-249 dvBuffer, dvDesc,\n-250 stencilTable);\n-251 } else {\n-252 // Create an instance on demand (slow)\n-253 (void)deviceContext; // unused\n-254 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc, duDesc, dvDesc);\n-255 if (instance) {\n-256 bool r = instance->_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer, srcDesc,\n-257 dstBuffer, dstDesc,\n-258 duBuffer, duDesc,\n-259 dvBuffer, dvDesc,\n-260 stencilTable);\n-261 delete instance;\n-262 return r;\n-263 }\n-264 return false;\n-265 }\n-266 }\n-267\n-325 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n-_\b3_\b2_\b6 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n-327 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-328 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-329 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-330 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-331 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-332 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-333 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-334 STENCIL_TABLE const *stencilTable,\n-335 _\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n-336 void * deviceContext = NULL) {\n-337\n-338 if (instance) {\n-339 return instance->_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer, srcDesc,\n-340 dstBuffer, dstDesc,\n-341 duBuffer, duDesc,\n-342 dvBuffer, dvDesc,\n-343 duuBuffer, duuDesc,\n-344 duvBuffer, duvDesc,\n-345 dvvBuffer, dvvDesc,\n-346 stencilTable);\n-347 } else {\n-348 // Create an instance on demand (slow)\n-349 (void)deviceContext; // unused\n-350 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc, duDesc, dvDesc,\n-351 duuDesc, duvDesc, dvvDesc);\n-352 if (instance) {\n-353 bool r = instance->_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer, srcDesc,\n-354 dstBuffer, dstDesc,\n-355 duBuffer, duDesc,\n-356 dvBuffer, dvDesc,\n-357 duuBuffer, duuDesc,\n-358 duvBuffer, duvDesc,\n-359 dvvBuffer, dvvDesc,\n-360 stencilTable);\n-361 delete instance;\n-362 return r;\n-363 }\n-364 return false;\n-365 }\n-366 }\n-367\n-385 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n-_\b3_\b8_\b6 bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n-387 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-388 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-389 STENCIL_TABLE const *stencilTable) const {\n-390 return _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer->BindVBO(), srcDesc,\n-391 dstBuffer->BindVBO(), dstDesc,\n-392 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-393 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-394 stencilTable->GetSizesBuffer(),\n-395 stencilTable->GetOffsetsBuffer(),\n-396 stencilTable->GetIndicesBuffer(),\n-397 stencilTable->GetWeightsBuffer(),\n-398 0,\n-399 0,\n-400 /* start = */ 0,\n-401 /* end = */ stencilTable->GetNumStencils());\n-402 }\n-403\n-433 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n-_\b4_\b3_\b4 bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n-435 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-436 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-437 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-438 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-439 STENCIL_TABLE const *stencilTable) const {\n-440 return _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer->BindVBO(), srcDesc,\n-441 dstBuffer->BindVBO(), dstDesc,\n-442 duBuffer->BindVBO(), duDesc,\n-443 dvBuffer->BindVBO(), dvDesc,\n-444 stencilTable->GetSizesBuffer(),\n-445 stencilTable->GetOffsetsBuffer(),\n-446 stencilTable->GetIndicesBuffer(),\n-447 stencilTable->GetWeightsBuffer(),\n-448 stencilTable->GetDuWeightsBuffer(),\n-449 stencilTable->GetDvWeightsBuffer(),\n-450 /* start = */ 0,\n-451 /* end = */ stencilTable->GetNumStencils());\n-452 }\n-453\n-501 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n-_\b5_\b0_\b2 bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n-503 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-504 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-505 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-506 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-507 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-508 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-509 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-510 STENCIL_TABLE const *stencilTable) const {\n-511 return _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer->BindVBO(), srcDesc,\n-512 dstBuffer->BindVBO(), dstDesc,\n-513 duBuffer->BindVBO(), duDesc,\n-514 dvBuffer->BindVBO(), dvDesc,\n-515 duuBuffer->BindVBO(), duuDesc,\n-516 duvBuffer->BindVBO(), duvDesc,\n-517 dvvBuffer->BindVBO(), dvvDesc,\n-518 stencilTable->GetSizesBuffer(),\n-519 stencilTable->GetOffsetsBuffer(),\n-520 stencilTable->GetIndicesBuffer(),\n-521 stencilTable->GetWeightsBuffer(),\n-522 stencilTable->GetDuWeightsBuffer(),\n-523 stencilTable->GetDvWeightsBuffer(),\n-524 stencilTable->GetDuuWeightsBuffer(),\n-525 stencilTable->GetDuvWeightsBuffer(),\n-526 stencilTable->GetDvvWeightsBuffer(),\n-527 /* start = */ 0,\n-528 /* end = */ stencilTable->GetNumStencils());\n-529 }\n-530\n-_\b5_\b6_\b6 bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(GLuint srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-567 GLuint dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-568 GLuint duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-569 GLuint dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-570 GLuint sizesBuffer,\n-571 GLuint offsetsBuffer,\n-572 GLuint indicesBuffer,\n-573 GLuint weightsBuffer,\n-574 GLuint duWeightsBuffer,\n-575 GLuint dvWeightsBuffer,\n-576 int start,\n-577 int end) const;\n-578\n-_\b6_\b3_\b2 bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(GLuint srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-633 GLuint dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-634 GLuint duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-635 GLuint dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-636 GLuint duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-637 GLuint duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-638 GLuint dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-639 GLuint sizesBuffer,\n-640 GLuint offsetsBuffer,\n-641 GLuint indicesBuffer,\n-642 GLuint weightsBuffer,\n-643 GLuint duWeightsBuffer,\n-644 GLuint dvWeightsBuffer,\n-645 GLuint duuWeightsBuffer,\n-646 GLuint duvWeightsBuffer,\n-647 GLuint dvvWeightsBuffer,\n-648 int start,\n-649 int end) const;\n-650\n-656\n-689 template <typename SRC_BUFFER, typename DST_BUFFER,\n-690 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b6_\b9_\b1 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n-692 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-693 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-694 int numPatchCoords,\n-695 PATCHCOORD_BUFFER *patchCoords,\n-696 PATCH_TABLE *patchTable,\n-697 _\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n-698 void * deviceContext = NULL) {\n-699\n-700 if (instance) {\n-701 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer, srcDesc,\n-702 dstBuffer, dstDesc,\n-703 numPatchCoords, patchCoords,\n-704 patchTable);\n-705 } else {\n-706 // Create an instance on demand (slow)\n-707 (void)deviceContext; // unused\n-708 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n-709 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-710 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br());\n-711 if (instance) {\n-712 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer, srcDesc,\n-713 dstBuffer, dstDesc,\n-714 numPatchCoords, patchCoords,\n-715 patchTable);\n-716 delete instance;\n-717 return r;\n-718 }\n-719 return false;\n-720 }\n-721 }\n-722\n-767 template <typename SRC_BUFFER, typename DST_BUFFER,\n-768 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b7_\b6_\b9 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n-770 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-771 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-772 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-773 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-774 int numPatchCoords,\n-775 PATCHCOORD_BUFFER *patchCoords,\n-776 PATCH_TABLE *patchTable,\n-777 _\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n-778 void * deviceContext = NULL) {\n-779\n-780 if (instance) {\n-781 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer, srcDesc,\n-782 dstBuffer, dstDesc,\n-783 duBuffer, duDesc,\n-784 dvBuffer, dvDesc,\n-785 numPatchCoords, patchCoords,\n-786 patchTable);\n-787 } else {\n-788 // Create an instance on demand (slow)\n-789 (void)deviceContext; // unused\n-790 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n-791 duDesc, dvDesc);\n-792 if (instance) {\n-793 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer, srcDesc,\n-794 dstBuffer, dstDesc,\n-795 duBuffer, duDesc,\n-796 dvBuffer, dvDesc,\n-797 numPatchCoords, patchCoords,\n-798 patchTable);\n-799 delete instance;\n-800 return r;\n-801 }\n-802 return false;\n-803 }\n-804 }\n-805\n-868 template <typename SRC_BUFFER, typename DST_BUFFER,\n-869 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b8_\b7_\b0 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n-871 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-872 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-873 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-874 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-875 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-876 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-877 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-878 int numPatchCoords,\n-879 PATCHCOORD_BUFFER *patchCoords,\n-880 PATCH_TABLE *patchTable,\n-881 _\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n-882 void * deviceContext = NULL) {\n-883\n-884 if (instance) {\n-885 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer, srcDesc,\n-886 dstBuffer, dstDesc,\n-887 duBuffer, duDesc,\n-888 dvBuffer, dvDesc,\n-889 duuBuffer, duuDesc,\n-890 duvBuffer, duvDesc,\n-891 dvvBuffer, dvvDesc,\n-892 numPatchCoords, patchCoords,\n-893 patchTable);\n-894 } else {\n-895 // Create an instance on demand (slow)\n-896 (void)deviceContext; // unused\n-897 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n-898 duDesc, dvDesc,\n-899 duuDesc, duvDesc, dvvDesc);\n-900 if (instance) {\n-901 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer, srcDesc,\n-902 dstBuffer, dstDesc,\n-903 duBuffer, duDesc,\n-904 dvBuffer, dvDesc,\n-905 duuBuffer, duuDesc,\n-906 duvBuffer, duvDesc,\n-907 dvvBuffer, dvvDesc,\n-908 numPatchCoords, patchCoords,\n-909 patchTable);\n-910 delete instance;\n-911 return r;\n-912 }\n-913 return false;\n-914 }\n-915 }\n-916\n-941 template <typename SRC_BUFFER, typename DST_BUFFER,\n-942 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b9_\b4_\b3 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n-944 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-945 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-946 int numPatchCoords,\n-947 PATCHCOORD_BUFFER *patchCoords,\n-948 PATCH_TABLE *patchTable) const {\n-949\n-950 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindVBO(), srcDesc,\n-951 dstBuffer->BindVBO(), dstDesc,\n-952 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-953 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-954 numPatchCoords,\n-955 patchCoords->BindVBO(),\n-956 patchTable->GetPatchArrays(),\n-957 patchTable->GetPatchIndexBuffer(),\n-958 patchTable->GetPatchParamBuffer());\n-959 }\n-960\n-995 template <typename SRC_BUFFER, typename DST_BUFFER,\n-996 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b9_\b9_\b7 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n-998 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-999 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1000 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-1001 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-1002 int numPatchCoords,\n-1003 PATCHCOORD_BUFFER *patchCoords,\n-1004 PATCH_TABLE *patchTable) const {\n-1005\n-1006 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindVBO(), srcDesc,\n-1007 dstBuffer->BindVBO(), dstDesc,\n-1008 duBuffer->BindVBO(), duDesc,\n-1009 dvBuffer->BindVBO(), dvDesc,\n-1010 numPatchCoords,\n-1011 patchCoords->BindVBO(),\n-1012 patchTable->GetPatchArrays(),\n-1013 patchTable->GetPatchIndexBuffer(),\n-1014 patchTable->GetPatchParamBuffer());\n-1015 }\n-1016\n-1069 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1070 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b1_\b0_\b7_\b1 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n-1072 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1073 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1074 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-1075 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-1076 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-1077 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-1078 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-1079 int numPatchCoords,\n-1080 PATCHCOORD_BUFFER *patchCoords,\n-1081 PATCH_TABLE *patchTable) const {\n-1082\n-1083 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindVBO(), srcDesc,\n-1084 dstBuffer->BindVBO(), dstDesc,\n-1085 duBuffer->BindVBO(), duDesc,\n-1086 dvBuffer->BindVBO(), dvDesc,\n-1087 duuBuffer->BindVBO(), duuDesc,\n-1088 duvBuffer->BindVBO(), duvDesc,\n-1089 dvvBuffer->BindVBO(), dvvDesc,\n-1090 numPatchCoords,\n-1091 patchCoords->BindVBO(),\n-1092 patchTable->GetPatchArrays(),\n-1093 patchTable->GetPatchIndexBuffer(),\n-1094 patchTable->GetPatchParamBuffer());\n-1095 }\n-1096\n-_\b1_\b0_\b9_\b7 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(GLuint srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1098 GLuint dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1099 GLuint duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-1100 GLuint dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-1101 int numPatchCoords,\n-1102 GLuint patchCoordsBuffer,\n-1103 const _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\bc_\bt_\bo_\br &patchArrays,\n-1104 GLuint patchIndexBuffer,\n-1105 GLuint patchParamsBuffer) const;\n-1106\n-_\b1_\b1_\b0_\b7 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(GLuint srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1108 GLuint dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1109 GLuint duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-1110 GLuint dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-1111 GLuint duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-1112 GLuint duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-1113 GLuint dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-1114 int numPatchCoords,\n-1115 GLuint patchCoordsBuffer,\n-1116 const _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\bc_\bt_\bo_\br &patchArrays,\n-1117 GLuint patchIndexBuffer,\n-1118 GLuint patchParamsBuffer) const;\n-1119\n-1152 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1153 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b1_\b1_\b5_\b4 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1155 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1156 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1157 int numPatchCoords,\n-1158 PATCHCOORD_BUFFER *patchCoords,\n-1159 PATCH_TABLE *patchTable,\n-1160 _\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n-1161 void * deviceContext = NULL) {\n-1162\n-1163 if (instance) {\n-1164 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1165 srcBuffer, srcDesc,\n-1166 dstBuffer, dstDesc,\n-1167 numPatchCoords, patchCoords,\n-1168 patchTable);\n-1169 } else {\n-1170 // Create an instance on demand (slow)\n-1171 (void)deviceContext; // unused\n-1172 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n-1173 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-1174 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br());\n-1175 if (instance) {\n-1176 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1177 srcBuffer, srcDesc,\n-1178 dstBuffer, dstDesc,\n-1179 numPatchCoords, patchCoords,\n-1180 patchTable);\n-1181 delete instance;\n-1182 return r;\n-1183 }\n-1184 return false;\n-1185 }\n-1186 }\n-1187\n-1212 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1213 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b1_\b2_\b1_\b4 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1215 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1216 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1217 int numPatchCoords,\n-1218 PATCHCOORD_BUFFER *patchCoords,\n-1219 PATCH_TABLE *patchTable) const {\n-1220\n-1221 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindVBO(), srcDesc,\n-1222 dstBuffer->BindVBO(), dstDesc,\n-1223 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-1224 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-1225 numPatchCoords,\n-1226 patchCoords->BindVBO(),\n-1227 patchTable->GetVaryingPatchArrays(),\n-1228 patchTable->GetVaryingPatchIndexBuffer(),\n-1229 patchTable->GetPatchParamBuffer());\n-1230 }\n-1231\n-1276 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1277 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b1_\b2_\b7_\b8 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1279 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1280 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1281 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-1282 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-1283 int numPatchCoords,\n-1284 PATCHCOORD_BUFFER *patchCoords,\n-1285 PATCH_TABLE *patchTable,\n-1286 _\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n-1287 void * deviceContext = NULL) {\n-1288\n-1289 if (instance) {\n-1290 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1291 srcBuffer, srcDesc,\n-1292 dstBuffer, dstDesc,\n-1293 duBuffer, duDesc,\n-1294 dvBuffer, dvDesc,\n-1295 numPatchCoords, patchCoords,\n-1296 patchTable);\n-1297 } else {\n-1298 // Create an instance on demand (slow)\n-1299 (void)deviceContext; // unused\n-1300 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n-1301 duDesc, dvDesc);\n-1302 if (instance) {\n-1303 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1304 srcBuffer, srcDesc,\n-1305 dstBuffer, dstDesc,\n-1306 duBuffer, duDesc,\n-1307 dvBuffer, dvDesc,\n-1308 numPatchCoords, patchCoords,\n-1309 patchTable);\n-1310 delete instance;\n-1311 return r;\n-1312 }\n-1313 return false;\n-1314 }\n-1315 }\n-1316\n-1353 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1354 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b1_\b3_\b5_\b5 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1356 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1357 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1358 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-1359 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-1360 int numPatchCoords,\n-1361 PATCHCOORD_BUFFER *patchCoords,\n-1362 PATCH_TABLE *patchTable) const {\n-1363\n-1364 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindVBO(), srcDesc,\n-1365 dstBuffer->BindVBO(), dstDesc,\n-1366 duBuffer->BindVBO(), duDesc,\n-1367 dvBuffer->BindVBO(), dvDesc,\n-1368 numPatchCoords,\n-1369 patchCoords->BindVBO(),\n-1370 patchTable->GetVaryingPatchArrays(),\n-1371 patchTable->GetVaryingPatchIndexBuffer(),\n-1372 patchTable->GetPatchParamBuffer());\n-1373 }\n-1374\n-1437 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1438 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b1_\b4_\b3_\b9 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1440 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1441 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1442 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-1443 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-1444 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-1445 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-1446 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-1447 int numPatchCoords,\n-1448 PATCHCOORD_BUFFER *patchCoords,\n-1449 PATCH_TABLE *patchTable,\n-1450 _\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n-1451 void * deviceContext = NULL) {\n-1452\n-1453 if (instance) {\n-1454 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1455 srcBuffer, srcDesc,\n-1456 dstBuffer, dstDesc,\n-1457 duBuffer, duDesc,\n-1458 dvBuffer, dvDesc,\n-1459 duuBuffer, duuDesc,\n-1460 duvBuffer, duvDesc,\n-1461 dvvBuffer, dvvDesc,\n-1462 numPatchCoords, patchCoords,\n-1463 patchTable);\n-1464 } else {\n-1465 // Create an instance on demand (slow)\n-1466 (void)deviceContext; // unused\n-1467 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n-1468 duDesc, dvDesc,\n-1469 duuDesc, duvDesc, dvvDesc);\n-1470 if (instance) {\n-1471 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1472 srcBuffer, srcDesc,\n-1473 dstBuffer, dstDesc,\n-1474 duBuffer, duDesc,\n-1475 dvBuffer, dvDesc,\n-1476 duuBuffer, duuDesc,\n-1477 duvBuffer, duvDesc,\n-1478 dvvBuffer, dvvDesc,\n-1479 numPatchCoords, patchCoords,\n-1480 patchTable);\n-1481 delete instance;\n-1482 return r;\n-1483 }\n-1484 return false;\n-1485 }\n-1486 }\n-1487\n-1542 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1543 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b1_\b5_\b4_\b4 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1545 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1546 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1547 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-1548 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-1549 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-1550 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-1551 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-1552 int numPatchCoords,\n-1553 PATCHCOORD_BUFFER *patchCoords,\n-1554 PATCH_TABLE *patchTable) const {\n-1555\n-1556 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindVBO(), srcDesc,\n-1557 dstBuffer->BindVBO(), dstDesc,\n-1558 duBuffer->BindVBO(), duDesc,\n-1559 dvBuffer->BindVBO(), dvDesc,\n-1560 duuBuffer->BindVBO(), duuDesc,\n-1561 duvBuffer->BindVBO(), duvDesc,\n-1562 dvvBuffer->BindVBO(), dvvDesc,\n-1563 numPatchCoords,\n-1564 patchCoords->BindVBO(),\n-1565 patchTable->GetVaryingPatchArrays(),\n-1566 patchTable->GetVaryingPatchIndexBuffer(),\n-1567 patchTable->GetPatchParamBuffer());\n-1568 }\n-1569\n-1604 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1605 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b1_\b6_\b0_\b6 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1607 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1608 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1609 int numPatchCoords,\n-1610 PATCHCOORD_BUFFER *patchCoords,\n-1611 PATCH_TABLE *patchTable,\n-1612 int fvarChannel,\n-1613 _\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n-1614 void * deviceContext = NULL) {\n-1615\n-1616 if (instance) {\n-1617 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1618 srcBuffer, srcDesc,\n-1619 dstBuffer, dstDesc,\n-1620 numPatchCoords, patchCoords,\n-1621 patchTable, fvarChannel);\n-1622 } else {\n-1623 // Create an instance on demand (slow)\n-1624 (void)deviceContext; // unused\n-1625 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n-1626 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-1627 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br());\n-1628 if (instance) {\n-1629 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1630 srcBuffer, srcDesc,\n-1631 dstBuffer, dstDesc,\n-1632 numPatchCoords, patchCoords,\n-1633 patchTable, fvarChannel);\n-1634 delete instance;\n-1635 return r;\n-1636 }\n-1637 return false;\n-1638 }\n-1639 }\n-1640\n-1667 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1668 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b1_\b6_\b6_\b9 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1670 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1671 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1672 int numPatchCoords,\n-1673 PATCHCOORD_BUFFER *patchCoords,\n-1674 PATCH_TABLE *patchTable,\n-1675 int fvarChannel = 0) const {\n-1676\n-1677 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindVBO(), srcDesc,\n-1678 dstBuffer->BindVBO(), dstDesc,\n-1679 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-1680 0, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-1681 numPatchCoords,\n-1682 patchCoords->BindVBO(),\n-1683 patchTable->GetFVarPatchArrays(fvarChannel),\n-1684 patchTable->GetFVarPatchIndexBuffer(fvarChannel),\n-1685 patchTable->GetFVarPatchParamBuffer(fvarChannel));\n-1686 }\n-1687\n-1734 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1735 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b1_\b7_\b3_\b6 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1737 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1738 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1739 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-1740 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-1741 int numPatchCoords,\n-1742 PATCHCOORD_BUFFER *patchCoords,\n-1743 PATCH_TABLE *patchTable,\n-1744 int fvarChannel,\n-1745 _\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n-1746 void * deviceContext = NULL) {\n-1747\n-1748 if (instance) {\n-1749 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1750 srcBuffer, srcDesc,\n-1751 dstBuffer, dstDesc,\n-1752 duBuffer, duDesc,\n-1753 dvBuffer, dvDesc,\n-1754 numPatchCoords, patchCoords,\n-1755 patchTable, fvarChannel);\n-1756 } else {\n-1757 // Create an instance on demand (slow)\n-1758 (void)deviceContext; // unused\n-1759 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n-1760 duDesc, dvDesc);\n-1761 if (instance) {\n-1762 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1763 srcBuffer, srcDesc,\n-1764 dstBuffer, dstDesc,\n-1765 duBuffer, duDesc,\n-1766 dvBuffer, dvDesc,\n-1767 numPatchCoords, patchCoords,\n-1768 patchTable, fvarChannel);\n-1769 delete instance;\n-1770 return r;\n-1771 }\n-1772 return false;\n-1773 }\n-1774 }\n-1775\n-1814 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1815 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b1_\b8_\b1_\b6 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1817 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1818 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1819 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-1820 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-1821 int numPatchCoords,\n-1822 PATCHCOORD_BUFFER *patchCoords,\n-1823 PATCH_TABLE *patchTable,\n-1824 int fvarChannel = 0) const {\n-1825\n-1826 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindVBO(), srcDesc,\n-1827 dstBuffer->BindVBO(), dstDesc,\n-1828 duBuffer->BindVBO(), duDesc,\n-1829 dvBuffer->BindVBO(), dvDesc,\n-1830 numPatchCoords,\n-1831 patchCoords->BindVBO(),\n-1832 patchTable->GetFVarPatchArrays(fvarChannel),\n-1833 patchTable->GetFVarPatchIndexBuffer(fvarChannel),\n-1834 patchTable->GetFVarPatchParamBuffer(fvarChannel));\n-1835 }\n-1836\n-1901 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1902 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b1_\b9_\b0_\b3 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1904 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1905 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1906 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-1907 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-1908 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-1909 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-1910 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-1911 int numPatchCoords,\n-1912 PATCHCOORD_BUFFER *patchCoords,\n-1913 PATCH_TABLE *patchTable,\n-1914 int fvarChannel,\n-1915 _\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance,\n-1916 void * deviceContext = NULL) {\n-1917\n-1918 if (instance) {\n-1919 return instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1920 srcBuffer, srcDesc,\n-1921 dstBuffer, dstDesc,\n-1922 duBuffer, duDesc,\n-1923 dvBuffer, dvDesc,\n-1924 duuBuffer, duuDesc,\n-1925 duvBuffer, duvDesc,\n-1926 dvvBuffer, dvvDesc,\n-1927 numPatchCoords, patchCoords,\n-1928 patchTable, fvarChannel);\n-1929 } else {\n-1930 // Create an instance on demand (slow)\n-1931 (void)deviceContext; // unused\n-1932 instance = _\bC_\br_\be_\ba_\bt_\be(srcDesc, dstDesc,\n-1933 duDesc, dvDesc,\n-1934 duuDesc, duvDesc, dvvDesc);\n-1935 if (instance) {\n-1936 bool r = instance->_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1937 srcBuffer, srcDesc,\n-1938 dstBuffer, dstDesc,\n-1939 duBuffer, duDesc,\n-1940 dvBuffer, dvDesc,\n-1941 duuBuffer, duuDesc,\n-1942 duvBuffer, duvDesc,\n-1943 dvvBuffer, dvvDesc,\n-1944 numPatchCoords, patchCoords,\n-1945 patchTable, fvarChannel);\n-1946 delete instance;\n-1947 return r;\n-1948 }\n-1949 return false;\n-1950 }\n-1951 }\n-1952\n-2009 template <typename SRC_BUFFER, typename DST_BUFFER,\n-2010 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b2_\b0_\b1_\b1 bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-2012 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-2013 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-2014 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-2015 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-2016 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-2017 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-2018 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-2019 int numPatchCoords,\n-2020 PATCHCOORD_BUFFER *patchCoords,\n-2021 PATCH_TABLE *patchTable,\n-2022 int fvarChannel = 0) const {\n-2023\n-2024 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindVBO(), srcDesc,\n-2025 dstBuffer->BindVBO(), dstDesc,\n-2026 duBuffer->BindVBO(), duDesc,\n-2027 dvBuffer->BindVBO(), dvDesc,\n-2028 duuBuffer->BindVBO(), duuDesc,\n-2029 duvBuffer->BindVBO(), duvDesc,\n-2030 dvvBuffer->BindVBO(), dvvDesc,\n-2031 numPatchCoords,\n-2032 patchCoords->BindVBO(),\n-2033 patchTable->GetFVarPatchArrays(fvarChannel),\n-2034 patchTable->GetFVarPatchIndexBuffer(fvarChannel),\n-2035 patchTable->GetFVarPatchParamBuffer(fvarChannel));\n-2036 }\n-2037\n-2043\n-_\b2_\b0_\b4_\b6 bool _\bC_\bo_\bm_\bp_\bi_\bl_\be(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-2047 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-2048 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc = _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-2049 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc = _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-2050 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc = _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-2051 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc = _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-2052 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc = _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br());\n-2053\n-_\b2_\b0_\b5_\b5 static void _\bS_\by_\bn_\bc_\bh_\br_\bo_\bn_\bi_\bz_\be(void *deviceContext);\n-2056\n-2057private:\n-2058 struct _StencilKernel {\n-2059 _StencilKernel();\n-2060 ~_StencilKernel();\n-2061 bool Compile(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-2062 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-2063 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-2064 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-2065 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-2066 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-2067 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-2068 int workGroupSize);\n-2069 GLuint program;\n-2070 GLuint uniformStart;\n-2071 GLuint uniformEnd;\n-2072 GLuint uniformSrcOffset;\n-2073 GLuint uniformDstOffset;\n-2074 GLuint uniformDuDesc;\n-2075 GLuint uniformDvDesc;\n-2076 GLuint uniformDuuDesc;\n-2077 GLuint uniformDuvDesc;\n-2078 GLuint uniformDvvDesc;\n-2079 } _stencilKernel;\n-2080\n-2081 struct _PatchKernel {\n-2082 _PatchKernel();\n-2083 ~_PatchKernel();\n-2084 bool Compile(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-2085 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-2086 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-2087 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-2088 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-2089 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-2090 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-2091 int workGroupSize);\n-2092 GLuint program;\n-2093 GLuint uniformSrcOffset;\n-2094 GLuint uniformDstOffset;\n-2095 GLuint uniformPatchArray;\n-2096 GLuint uniformDuDesc;\n-2097 GLuint uniformDvDesc;\n-2098 GLuint uniformDuuDesc;\n-2099 GLuint uniformDuvDesc;\n-2100 GLuint uniformDvvDesc;\n-2101 } _patchKernel;\n-2102\n-2103 int _workGroupSize;\n-2104 GLuint _patchArraysSSBO;\n-2105};\n-2106\n-2107} // end namespace Osd\n-2108\n-2109} // end namespace OPENSUBDIV_VERSION\n-2110using namespace OPENSUBDIV_VERSION;\n-2111\n-2112} // end namespace OpenSubdiv\n-2113\n-2114\n-2115#endif // OPENSUBDIV3_OSD_GL_COMPUTE_EVALUATOR_H\n+96 std::vector<Index> _ptexIndices;\n+97};\n+98\n+99\n+100} // end namespace Far\n+101\n+102} // end namespace OPENSUBDIV_VERSION\n+103using namespace OPENSUBDIV_VERSION;\n+104} // end namespace OpenSubdiv\n+105\n+106#endif /* OPENSUBDIV3_FAR_PTEX_INDICES_H */\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by_\bV_\be_\bc_\bt_\bo_\br\n-std::vector< PatchArray > PatchArrayVector\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b1_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n-Stencil table class wrapping the template for compatibility.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b2_\b7_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n-Limit stencil table class wrapping the template for compatibility.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b8_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n-BufferDescriptor is a struct which describes buffer elements in interleaved\n-data buffers....\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b6_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bS_\bS_\bB_\bO\n-GL stencil table (Shader Storage buffer)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b5_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bS_\bS_\bB_\bO_\b:_\b:_\bG_\be_\bt_\bD_\bu_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br\n-GLuint GetDuvWeightsBuffer() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bS_\bS_\bB_\bO_\b:_\b:_\bG_\be_\bt_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br\n-GLuint GetWeightsBuffer() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bS_\bS_\bB_\bO_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bS_\bS_\bB_\bO\n-GLStencilTableSSBO(Far::LimitStencilTable const *limitStencilTable)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bS_\bS_\bB_\bO_\b:_\b:_\bG_\be_\bt_\bD_\bu_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br\n-GLuint GetDuWeightsBuffer() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bS_\bS_\bB_\bO_\b:_\b:_\b~_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bS_\bS_\bB_\bO\n-~GLStencilTableSSBO()\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bS_\bS_\bB_\bO_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-int GetNumStencils() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bS_\bS_\bB_\bO_\b:_\b:_\bG_\be_\bt_\bI_\bn_\bd_\bi_\bc_\be_\bs_\bB_\bu_\bf_\bf_\be_\br\n-GLuint GetIndicesBuffer() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bS_\bS_\bB_\bO_\b:_\b:_\bG_\be_\bt_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br\n-GLuint GetOffsetsBuffer() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bS_\bS_\bB_\bO_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bS_\bS_\bB_\bO\n-GLStencilTableSSBO(Far::StencilTable const *stencilTable)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bS_\bS_\bB_\bO_\b:_\b:_\bG_\be_\bt_\bD_\bv_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br\n-GLuint GetDvvWeightsBuffer() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bS_\bS_\bB_\bO_\b:_\b:_\bG_\be_\bt_\bS_\bi_\bz_\be_\bs_\bB_\bu_\bf_\bf_\be_\br\n-GLuint GetSizesBuffer() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bS_\bS_\bB_\bO_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static GLStencilTableSSBO * Create(Far::LimitStencilTable const\n-*limitStencilTable, void *deviceContext=NULL)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b5_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bS_\bS_\bB_\bO_\b:_\b:_\bG_\be_\bt_\bD_\bu_\bu_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br\n-GLuint GetDuuWeightsBuffer() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bS_\bS_\bB_\bO_\b:_\b:_\bG_\be_\bt_\bD_\bv_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br\n-GLuint GetDvWeightsBuffer() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bS_\bS_\bB_\bO_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static GLStencilTableSSBO * Create(Far::StencilTable const *stencilTable, void\n-*deviceContext=NULL)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b5_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b9_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n-bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords,\n-PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable) const\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b2_\b1_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n-static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor\n-const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,\n-DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n-BufferDescriptor const &dvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n-*patchCoords, PATCH_TABLE *patchTable, int fvarChannel, GLComputeEvaluator\n-const *instance, void *deviceContext=NULL)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b7_\b3_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n-BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n-&dvDesc, STENCIL_TABLE const *stencilTable) const\n-Generic stencil function.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b4_\b3_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n-static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int\n-numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable,\n-GLComputeEvaluator const *instance, void *deviceContext=NULL)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b1_\b5_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n-static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor\n-const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int\n-numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int\n-fvarChannel, GLComputeEvaluator const *instance, void *deviceContext=NULL)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b6_\b0_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n-BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n-&dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER\n-*duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer,\n-BufferDescriptor const &dvvDesc, STENCIL_TABLE const *stencilTable) const\n-Generic stencil function.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b5_\b0_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n-static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n-*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n-BufferDescriptor const &dvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n-*patchCoords, PATCH_TABLE *patchTable, GLComputeEvaluator const *instance, void\n-*deviceContext=NULL)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b2_\b7_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bI_\bn_\bs_\bt_\ba_\bn_\bt_\bi_\ba_\bt_\ba_\bb_\bl_\be\n-bool Instantiatable\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b9_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-bool EvalPatches(GLuint srcBuffer, BufferDescriptor const &srcDesc, GLuint\n-dstBuffer, BufferDescriptor const &dstDesc, GLuint duBuffer, BufferDescriptor\n-const &duDesc, GLuint dvBuffer, BufferDescriptor const &dvDesc, GLuint\n-duuBuffer, BufferDescriptor const &duuDesc, GLuint duvBuffer, BufferDescriptor\n-const &duvDesc, GLuint dvvBuffer, BufferDescriptor const &dvvDesc, int\n-numPatchCoords, GLuint patchCoordsBuffer, const PatchArrayVector &patchArrays,\n-GLuint patchIndexBuffer, GLuint patchParamsBuffer) const\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\b~_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n-~GLComputeEvaluator()\n-Destructor. note that the GL context must be made current.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n-BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n-&dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER\n-*duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer,\n-BufferDescriptor const &dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n-*patchCoords, PATCH_TABLE *patchTable) const\n-Generic limit eval function with derivatives. This function has a same\n-signature as other device kern...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b0_\b7_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n-*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n-BufferDescriptor const &dvDesc, STENCIL_TABLE const *stencilTable,\n-GLComputeEvaluator const *instance, void *deviceContext=NULL)\n-Generic static stencil function. This function has a same signature as other\n-device kernels have so t...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b2_\b3_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-bool EvalStencils(GLuint srcBuffer, BufferDescriptor const &srcDesc, GLuint\n-dstBuffer, BufferDescriptor const &dstDesc, GLuint duBuffer, BufferDescriptor\n-const &duDesc, GLuint dvBuffer, BufferDescriptor const &dvDesc, GLuint\n-duuBuffer, BufferDescriptor const &duuDesc, GLuint duvBuffer, BufferDescriptor\n-const &duvDesc, GLuint dvvBuffer, BufferDescriptor const &dvvDesc, GLuint\n-sizesBuffer, GLuint offsetsBuffer, GLuint indicesBuffer, GLuint weightsBuffer,\n-GLuint duWeightsBuffer, GLuint dvWeightsBuffer, GLuint duuWeightsBuffer, GLuint\n-duvWeightsBuffer, GLuint dvvWeightsBuffer, int start, int end) const\n-Dispatch the GLSL compute kernel on GPU asynchronously returns false if the\n-kernel hasn't been compil...\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, STENCIL_TABLE\n-const *stencilTable, GLComputeEvaluator const *instance, void\n-*deviceContext=NULL)\n-Generic static stencil function. This function has a same signature as other\n-device kernels have so t...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b6_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n-static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n-*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n-BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const\n-&duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER\n-*dvvBuffer, BufferDescriptor const &dvvDesc, int numPatchCoords,\n-PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, GLComputeEvaluator\n-const *instance, void *deviceContext=NULL)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b4_\b3_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n-BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n-&dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE\n-*patchTable, GLComputeEvaluator const *instance, void *deviceContext=NULL)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b6_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n-static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor\n-const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,\n-DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n-BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const\n-&duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER\n-*dvvBuffer, BufferDescriptor const &dvvDesc, int numPatchCoords,\n-PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel,\n-GLComputeEvaluator const *instance, void *deviceContext=NULL)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b9_\b0_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n-bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n-BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n-&dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER\n-*duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer,\n-BufferDescriptor const &dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n-*patchCoords, PATCH_TABLE *patchTable) const\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b5_\b4_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n-bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n-*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n-BufferDescriptor const &dvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n-*patchCoords, PATCH_TABLE *patchTable, int fvarChannel=0) const\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b8_\b1_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords,\n-PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable) const\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b9_\b4_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n-GLComputeEvaluator()\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx\n+Vtr::Index Index\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b4_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\bt_\be_\bx_\bI_\bn_\bd_\bi_\bc_\be_\bs\n+Object used to compute and query ptex face indices.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\bt_\be_\bx_\bI_\bn_\bd_\bi_\bc_\be_\bs_\b._\bh_\b:_\b4_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\bt_\be_\bx_\bI_\bn_\bd_\bi_\bc_\be_\bs_\b:_\b:_\bG_\be_\bt_\bF_\ba_\bc_\be_\bI_\bd\n+int GetFaceId(Index f) const\n+Returns the ptex face index given a coarse face 'f' or -1.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\bt_\be_\bx_\bI_\bn_\bd_\bi_\bc_\be_\bs_\b:_\b:_\bP_\bt_\be_\bx_\bI_\bn_\bd_\bi_\bc_\be_\bs\n+PtexIndices(TopologyRefiner const &refiner)\n Constructor.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n-BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n-&dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE\n-*patchTable) const\n-Generic limit eval function with derivatives. This function has a same\n-signature as other device kern...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b9_\b9_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords,\n-PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, GLComputeEvaluator\n-const *instance, void *deviceContext=NULL)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b6_\b9_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, STENCIL_TABLE const\n-*stencilTable) const\n-Generic stencil function.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b3_\b8_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-bool EvalPatches(GLuint srcBuffer, BufferDescriptor const &srcDesc, GLuint\n-dstBuffer, BufferDescriptor const &dstDesc, GLuint duBuffer, BufferDescriptor\n-const &duDesc, GLuint dvBuffer, BufferDescriptor const &dvDesc, int\n-numPatchCoords, GLuint patchCoordsBuffer, const PatchArrayVector &patchArrays,\n-GLuint patchIndexBuffer, GLuint patchParamsBuffer) const\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n-bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n-*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n-BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const\n-&duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER\n-*dvvBuffer, BufferDescriptor const &dvvDesc, int numPatchCoords,\n-PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel=0)\n-const\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b2_\b0_\b1_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static GLComputeEvaluator * Create(BufferDescriptor const &srcDesc,\n-BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc,\n-BufferDescriptor const &dvDesc, void *deviceContext=NULL)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b9_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-bool EvalStencils(GLuint srcBuffer, BufferDescriptor const &srcDesc, GLuint\n-dstBuffer, BufferDescriptor const &dstDesc, GLuint duBuffer, BufferDescriptor\n-const &duDesc, GLuint dvBuffer, BufferDescriptor const &dvDesc, GLuint\n-sizesBuffer, GLuint offsetsBuffer, GLuint indicesBuffer, GLuint weightsBuffer,\n-GLuint duWeightsBuffer, GLuint dvWeightsBuffer, int start, int end) const\n-Dispatch the GLSL compute kernel on GPU asynchronously returns false if the\n-kernel hasn't been compil...\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n-*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n-BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const\n-&duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER\n-*dvvBuffer, BufferDescriptor const &dvvDesc, STENCIL_TABLE const *stencilTable,\n-GLComputeEvaluator const *instance, void *deviceContext=NULL)\n-Generic static stencil function. This function has a same signature as other\n-device kernels have so t...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b3_\b2_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bS_\by_\bn_\bc_\bh_\br_\bo_\bn_\bi_\bz_\be\n-static void Synchronize(void *deviceContext)\n-Wait the dispatched kernel finishes.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bC_\bo_\bm_\bp_\bi_\bl_\be\n-bool Compile(BufferDescriptor const &srcDesc, BufferDescriptor const &dstDesc,\n-BufferDescriptor const &duDesc=BufferDescriptor(), BufferDescriptor const\n-&dvDesc=BufferDescriptor(), BufferDescriptor const &duuDesc=BufferDescriptor(),\n-BufferDescriptor const &duvDesc=BufferDescriptor(), BufferDescriptor const\n-&dvvDesc=BufferDescriptor())\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n-bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n-BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n-&dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE\n-*patchTable) const\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b3_\b5_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static GLComputeEvaluator * Create(BufferDescriptor const &srcDesc,\n-BufferDescriptor const &dstDesc, BufferDescriptor const &duDesc,\n-BufferDescriptor const &dvDesc, BufferDescriptor const &duuDesc,\n-BufferDescriptor const &duvDesc, BufferDescriptor const &dvvDesc, void\n-*deviceContext=NULL)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b1_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n-bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int\n-numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int\n-fvarChannel=0) const\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b6_\b6_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n-BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n-&dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER\n-*duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer,\n-BufferDescriptor const &dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n-*patchCoords, PATCH_TABLE *patchTable, GLComputeEvaluator const *instance, void\n-*deviceContext=NULL)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b8_\b7_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\bt_\be_\bx_\bI_\bn_\bd_\bi_\bc_\be_\bs_\b:_\b:_\bG_\be_\bt_\bA_\bd_\bj_\ba_\bc_\be_\bn_\bc_\by\n+void GetAdjacency(TopologyRefiner const &refiner, int face, int quadrant, int\n+adjFaces[4], int adjEdges[4]) const\n+Returns ptex face adjacency information for a given coarse face.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\bt_\be_\bx_\bI_\bn_\bd_\bi_\bc_\be_\bs_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bF_\ba_\bc_\be_\bs\n+int GetNumFaces() const\n+Returns the number of ptex faces in the mesh.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\bt_\be_\bx_\bI_\bn_\bd_\bi_\bc_\be_\bs_\b:_\b:_\b~_\bP_\bt_\be_\bx_\bI_\bn_\bd_\bi_\bc_\be_\bs\n+~PtexIndices()\n+Destructor.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br\n+Stores topology data for a specified set of refinement options.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b5_\b1\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bg_\bl_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh\n+    * _\bf_\ba_\br\n+    * _\bp_\bt_\be_\bx_\bI_\bn_\bd_\bi_\bc_\be_\bs_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00851.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00851.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/mtlPatchShaderSource.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/far/primvarRefiner.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -90,42 +90,58 @@\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> &#124;\n <a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">mtlPatchShaderSource.h File Reference</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">primvarRefiner.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n-<div class=\"textblock\"><code>import &quot;../version.h&quot;</code><br />\n-<code>import &quot;<a class=\"el\" href=\"a00773_source.html\">../far/patchDescriptor.h</a>&quot;</code><br />\n-<code>import &lt;string&gt;</code><br />\n+<div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a01492_source.html\">../sdc/types.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00860_source.html\">../sdc/options.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00875_source.html\">../sdc/bilinearScheme.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00866_source.html\">../sdc/catmarkScheme.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00872_source.html\">../sdc/loopScheme.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00815_source.html\">../vtr/level.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00794_source.html\">../vtr/fvarLevel.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00803_source.html\">../vtr/refinement.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00806_source.html\">../vtr/fvarRefinement.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00800_source.html\">../vtr/stackBuffer.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00812_source.html\">../vtr/componentInterfaces.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a01486_source.html\">../far/types.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00839_source.html\">../far/error.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00821_source.html\">../far/topologyLevel.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00833_source.html\">../far/topologyRefiner.h</a>&quot;</code><br />\n+<code>#include &lt;cassert&gt;</code><br />\n </div>\n <p><a href=\"a00851_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01301.html\">MTLPatchShaderSource</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Provides shader source which can be used by client code.  <a href=\"a01301.html#details\">More...</a><br /></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01029.html\">PrimvarRefinerReal&lt; REAL &gt;</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Applies refinement operations to generic primvar data.  <a href=\"a01029.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01037.html\">PrimvarRefiner</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n+<tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00851.html\">mtlPatchShaderSource.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7f420b72a822828cfa8b0561c695a5cc.html\">far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00851.html\">primvarRefiner.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,25 +1,41 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-mtlPatchShaderSource.h File Reference\n-import \"../version.h\"\n-import \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh\"\n-import <string>\n+primvarRefiner.h File Reference\n+#include \"../version.h\"\n+#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n+#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh\"\n+#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bb_\bi_\bl_\bi_\bn_\be_\ba_\br_\bS_\bc_\bh_\be_\bm_\be_\b._\bh\"\n+#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bc_\ba_\bt_\bm_\ba_\br_\bk_\bS_\bc_\bh_\be_\bm_\be_\b._\bh\"\n+#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bl_\bo_\bo_\bp_\bS_\bc_\bh_\be_\bm_\be_\b._\bh\"\n+#include \"_\b._\b._\b/_\bv_\bt_\br_\b/_\bl_\be_\bv_\be_\bl_\b._\bh\"\n+#include \"_\b._\b._\b/_\bv_\bt_\br_\b/_\bf_\bv_\ba_\br_\bL_\be_\bv_\be_\bl_\b._\bh\"\n+#include \"_\b._\b._\b/_\bv_\bt_\br_\b/_\br_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt_\b._\bh\"\n+#include \"_\b._\b._\b/_\bv_\bt_\br_\b/_\bf_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\bm_\be_\bn_\bt_\b._\bh\"\n+#include \"_\b._\b._\b/_\bv_\bt_\br_\b/_\bs_\bt_\ba_\bc_\bk_\bB_\bu_\bf_\bf_\be_\br_\b._\bh\"\n+#include \"_\b._\b._\b/_\bv_\bt_\br_\b/_\bc_\bo_\bm_\bp_\bo_\bn_\be_\bn_\bt_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\bs_\b._\bh\"\n+#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n+#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\be_\br_\br_\bo_\br_\b._\bh\"\n+#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh\"\n+#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh\"\n+#include <cassert>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be\n-\u00a0       Provides shader source which can be used by client code. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl_\b<_\b _\bR_\bE_\bA_\bL_\b _\b>\n+\u00a0       Applies refinement operations to generic primvar data. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bm_\bt_\bl_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b._\bh\n+    * _\bf_\ba_\br\n+    * _\bp_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00851.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00851.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,3 +1,4 @@\n var a00851 = [\n-    [\"MTLPatchShaderSource\", \"a01301.html\", null]\n+    [\"PrimvarRefinerReal< REAL >\", \"a01029.html\", \"a01029\"],\n+    [\"PrimvarRefiner\", \"a01037.html\", \"a01037\"]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00851_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00851_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/mtlPatchShaderSource.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/far/primvarRefiner.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">mtlPatchShaderSource.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">primvarRefiner.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00851.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2013 Pixar</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2015 DreamWorks Animation LLC.</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -118,83 +118,1233 @@\n <div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_MTL_PATCH_SHADER_SOURCE_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_MTL_PATCH_SHADER_SOURCE_H</span></div>\n-<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n-<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#import &quot;../version.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#import &quot;../far/patchDescriptor.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#import &lt;string&gt;</span></div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">namespace </span>Osd {</div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00040\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01301.html\">   40</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01301.html\">MTLPatchShaderSource</a> {</div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01301.html#ad41c6e1dc4a5cd6ee4f33fc5a8e15d1d\">   45</a></span>    <span class=\"keyword\">static</span> std::string <a class=\"code hl_function\" href=\"a01301.html#ad41c6e1dc4a5cd6ee4f33fc5a8e15d1d\">GetPatchBasisShaderSource</a>();</div>\n+<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_FAR_PRIMVAR_REFINER_H</span></div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#define OPENSUBDIV3_FAR_PRIMVAR_REFINER_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span> </div>\n+<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span> </div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#include &quot;../sdc/types.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../sdc/options.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../sdc/bilinearScheme.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &quot;../sdc/catmarkScheme.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"preprocessor\">#include &quot;../sdc/loopScheme.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"preprocessor\">#include &quot;../vtr/level.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"preprocessor\">#include &quot;../vtr/fvarLevel.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"preprocessor\">#include &quot;../vtr/refinement.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"preprocessor\">#include &quot;../vtr/fvarRefinement.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"preprocessor\">#include &quot;../vtr/stackBuffer.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span><span class=\"preprocessor\">#include &quot;../vtr/componentInterfaces.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"preprocessor\">#include &quot;../far/types.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"preprocessor\">#include &quot;../far/error.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span><span class=\"preprocessor\">#include &quot;../far/topologyLevel.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"preprocessor\">#include &quot;../far/topologyRefiner.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span> </div>\n+<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span><span class=\"preprocessor\">#include &lt;cassert&gt;</span></div>\n <div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span> </div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01301.html#a230efce26a4754c94dbeedd435fe471b\">   50</a></span>    <span class=\"keyword\">static</span> std::string <a class=\"code hl_function\" href=\"a01301.html#a230efce26a4754c94dbeedd435fe471b\">GetPatchDrawingShaderSource</a>();</div>\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n+<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span> </div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span><span class=\"keyword\">namespace </span>Far {</div>\n <div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span> </div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span> </div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01301.html#ad5f427d2655d384980715874209345e7\">   60</a></span>    <span class=\"keyword\">static</span> std::string <a class=\"code hl_function\" href=\"a01301.html#ad5f427d2655d384980715874209345e7\">GetCommonShaderSource</a>();</div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00056\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01029.html\">   56</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01029.html\">PrimvarRefinerReal</a> {</div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span> </div>\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01029.html#a1fe1fbda93c01c326f13929d1c3c6247\">   59</a></span>    <a class=\"code hl_function\" href=\"a01029.html#a1fe1fbda93c01c326f13929d1c3c6247\">PrimvarRefinerReal</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> &amp; refiner) : _refiner(refiner) { }</div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01029.html#ade7a1750cdc922e27c561520815d8b27\">   60</a></span>    <a class=\"code hl_function\" href=\"a01029.html#ade7a1750cdc922e27c561520815d8b27\">~PrimvarRefinerReal</a>() { }</div>\n <div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span> </div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01301.html#a20cb122b561de15ed3b90d7e4f5176d2\">   62</a></span>    <span class=\"keyword\">static</span> std::string <a class=\"code hl_function\" href=\"a01301.html#a20cb122b561de15ed3b90d7e4f5176d2\">GetVertexShaderSource</a>(<a class=\"code hl_enumeration\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">Far::PatchDescriptor::Type</a> type);</div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01029.html#a6f7fc8b9ce66fa57ac58ed977cc9c6f0\">   62</a></span>    <a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> &amp; <a class=\"code hl_function\" href=\"a01029.html#a6f7fc8b9ce66fa57ac58ed977cc9c6f0\">GetTopologyRefiner</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _refiner; }</div>\n <div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span> </div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01301.html#a97a09fe0a378798cafdff72e115e373f\">   64</a></span>    <span class=\"keyword\">static</span> std::string <a class=\"code hl_function\" href=\"a01301.html#a97a09fe0a378798cafdff72e115e373f\">GetHullShaderSource</a>(<a class=\"code hl_enumeration\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">Far::PatchDescriptor::Type</a> type);</div>\n <div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span> </div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01301.html#a733309309efe67ba5d1acd7d0a9ff6ca\">   66</a></span>    <span class=\"keyword\">static</span> std::string <a class=\"code hl_function\" href=\"a01301.html#a733309309efe67ba5d1acd7d0a9ff6ca\">GetDomainShaderSource</a>(<a class=\"code hl_enumeration\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">Far::PatchDescriptor::Type</a> type);</div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span> </div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01301.html#a7b51f245191a47026eaedcde63850f79\">   72</a></span>    <span class=\"keyword\">static</span> std::string <a class=\"code hl_function\" href=\"a01301.html#a7b51f245191a47026eaedcde63850f79\">GetVertexShaderSource</a>(</div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span>        <a class=\"code hl_enumeration\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">Far::PatchDescriptor::Type</a> type,</div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span>        <a class=\"code hl_enumeration\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">Far::PatchDescriptor::Type</a> fvarType);</div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01301.html#a55538e8657b191955044d983cf1b3649\">   75</a></span>    <span class=\"keyword\">static</span> std::string <a class=\"code hl_function\" href=\"a01301.html#a55538e8657b191955044d983cf1b3649\">GetHullShaderSource</a>(</div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span>        <a class=\"code hl_enumeration\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">Far::PatchDescriptor::Type</a> type,</div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span>        <a class=\"code hl_enumeration\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">Far::PatchDescriptor::Type</a> fvarType);</div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01301.html#a85470a02e193180c7d9c51b2d65962bb\">   78</a></span>    <span class=\"keyword\">static</span> std::string <a class=\"code hl_function\" href=\"a01301.html#a85470a02e193180c7d9c51b2d65962bb\">GetDomainShaderSource</a>(</div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>        <a class=\"code hl_enumeration\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">Far::PatchDescriptor::Type</a> type,</div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span>        <a class=\"code hl_enumeration\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">Far::PatchDescriptor::Type</a> fvarType);</div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span> </div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span> </div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span> </div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>}  <span class=\"comment\">// end namespace Osd</span></div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span> </div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>}  <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>    </div>\n-<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span> </div>\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_MTL_PATCH_SHADER_SOURCE</span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa00973_html_a1d1cfd8ffb84e947f82999c682b666a7\"><div class=\"ttname\"><a href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::Type</a></div><div class=\"ttdeci\">Type</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00773_source.html#l00048\">patchDescriptor.h:48</a></div></div>\n-<div class=\"ttc\" id=\"aa01301_html\"><div class=\"ttname\"><a href=\"a01301.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchShaderSource</a></div><div class=\"ttdoc\">Provides shader source which can be used by client code.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00851_source.html#l00040\">mtlPatchShaderSource.h:40</a></div></div>\n-<div class=\"ttc\" id=\"aa01301_html_a20cb122b561de15ed3b90d7e4f5176d2\"><div class=\"ttname\"><a href=\"a01301.html#a20cb122b561de15ed3b90d7e4f5176d2\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchShaderSource::GetVertexShaderSource</a></div><div class=\"ttdeci\">static std::string GetVertexShaderSource(Far::PatchDescriptor::Type type)</div></div>\n-<div class=\"ttc\" id=\"aa01301_html_a230efce26a4754c94dbeedd435fe471b\"><div class=\"ttname\"><a href=\"a01301.html#a230efce26a4754c94dbeedd435fe471b\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchShaderSource::GetPatchDrawingShaderSource</a></div><div class=\"ttdeci\">static std::string GetPatchDrawingShaderSource()</div><div class=\"ttdoc\">Returns shader source which can be used while drawing piecewise parametric patches resulting from sub...</div></div>\n-<div class=\"ttc\" id=\"aa01301_html_a55538e8657b191955044d983cf1b3649\"><div class=\"ttname\"><a href=\"a01301.html#a55538e8657b191955044d983cf1b3649\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchShaderSource::GetHullShaderSource</a></div><div class=\"ttdeci\">static std::string GetHullShaderSource(Far::PatchDescriptor::Type type, Far::PatchDescriptor::Type fvarType)</div></div>\n-<div class=\"ttc\" id=\"aa01301_html_a733309309efe67ba5d1acd7d0a9ff6ca\"><div class=\"ttname\"><a href=\"a01301.html#a733309309efe67ba5d1acd7d0a9ff6ca\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchShaderSource::GetDomainShaderSource</a></div><div class=\"ttdeci\">static std::string GetDomainShaderSource(Far::PatchDescriptor::Type type)</div></div>\n-<div class=\"ttc\" id=\"aa01301_html_a7b51f245191a47026eaedcde63850f79\"><div class=\"ttname\"><a href=\"a01301.html#a7b51f245191a47026eaedcde63850f79\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchShaderSource::GetVertexShaderSource</a></div><div class=\"ttdeci\">static std::string GetVertexShaderSource(Far::PatchDescriptor::Type type, Far::PatchDescriptor::Type fvarType)</div><div class=\"ttdoc\">Deprecated.</div></div>\n-<div class=\"ttc\" id=\"aa01301_html_a85470a02e193180c7d9c51b2d65962bb\"><div class=\"ttname\"><a href=\"a01301.html#a85470a02e193180c7d9c51b2d65962bb\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchShaderSource::GetDomainShaderSource</a></div><div class=\"ttdeci\">static std::string GetDomainShaderSource(Far::PatchDescriptor::Type type, Far::PatchDescriptor::Type fvarType)</div></div>\n-<div class=\"ttc\" id=\"aa01301_html_a97a09fe0a378798cafdff72e115e373f\"><div class=\"ttname\"><a href=\"a01301.html#a97a09fe0a378798cafdff72e115e373f\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchShaderSource::GetHullShaderSource</a></div><div class=\"ttdeci\">static std::string GetHullShaderSource(Far::PatchDescriptor::Type type)</div></div>\n-<div class=\"ttc\" id=\"aa01301_html_ad41c6e1dc4a5cd6ee4f33fc5a8e15d1d\"><div class=\"ttname\"><a href=\"a01301.html#ad41c6e1dc4a5cd6ee4f33fc5a8e15d1d\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchShaderSource::GetPatchBasisShaderSource</a></div><div class=\"ttdeci\">static std::string GetPatchBasisShaderSource()</div><div class=\"ttdoc\">Returns shader source which can be used to evaluate position and first and second derivatives on piec...</div></div>\n-<div class=\"ttc\" id=\"aa01301_html_ad5f427d2655d384980715874209345e7\"><div class=\"ttname\"><a href=\"a01301.html#ad5f427d2655d384980715874209345e7\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchShaderSource::GetCommonShaderSource</a></div><div class=\"ttdeci\">static std::string GetCommonShaderSource()</div></div>\n+<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00113\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01029.html#ab97b75b7c0fffa06a5948bd6ba7b420d\">  113</a></span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt; <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01029.html#ab97b75b7c0fffa06a5948bd6ba7b420d\">Interpolate</a>(<span class=\"keywordtype\">int</span> level, T <span class=\"keyword\">const</span> &amp; src, U &amp; dst) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00130\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01029.html#aa2fd72e336a12bf454dd79ba6ce8ee56\">  130</a></span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt; <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01029.html#aa2fd72e336a12bf454dd79ba6ce8ee56\">InterpolateVarying</a>(<span class=\"keywordtype\">int</span> level, T <span class=\"keyword\">const</span> &amp; src, U &amp; dst) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\">  131</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00148\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01029.html#a3f8bd2ef902e11aad1debbdda26bb596\">  148</a></span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt; <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01029.html#a3f8bd2ef902e11aad1debbdda26bb596\">InterpolateFaceUniform</a>(<span class=\"keywordtype\">int</span> level, T <span class=\"keyword\">const</span> &amp; src, U &amp; dst) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\">  149</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00161\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01029.html#ad8f74e1887299ed02e0094100f18c998\">  161</a></span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt; <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01029.html#ad8f74e1887299ed02e0094100f18c998\">InterpolateFaceVarying</a>(<span class=\"keywordtype\">int</span> level, T <span class=\"keyword\">const</span> &amp; src, U &amp; dst, <span class=\"keywordtype\">int</span> channel = 0) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\">  162</span> </div>\n+<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\">  163</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00175\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01029.html#a0357839a7fabaa02f1d6d6a3c75e1ec2\">  175</a></span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt; <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01029.html#a0357839a7fabaa02f1d6d6a3c75e1ec2\">Limit</a>(T <span class=\"keyword\">const</span> &amp; src, U &amp; dstPos) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\">  176</span> </div>\n+<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U, <span class=\"keyword\">class</span> U1, <span class=\"keyword\">class</span> U2&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00178\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01029.html#a2cf4c50a1117c44ba4d11db92b067401\">  178</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01029.html#a2cf4c50a1117c44ba4d11db92b067401\">Limit</a>(T <span class=\"keyword\">const</span> &amp; src, U &amp; dstPos, U1 &amp; dstTan1, U2 &amp; dstTan2) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\">  179</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00180\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01029.html#afdee0e9e9c6edd34c96892efff808a87\">  180</a></span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt; <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01029.html#afdee0e9e9c6edd34c96892efff808a87\">LimitFaceVarying</a>(T <span class=\"keyword\">const</span> &amp; src, U &amp; dst, <span class=\"keywordtype\">int</span> channel = 0) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\">  181</span> </div>\n+<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\">  183</span> </div>\n+<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\">  184</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\">  185</span>    <span class=\"keyword\">typedef</span> REAL Weight;</div>\n+<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\">  186</span> </div>\n+<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\">  187</span>    <span class=\"comment\">//  Non-copyable:</span></div>\n+<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\">  188</span>    <a class=\"code hl_class\" href=\"a01029.html\">PrimvarRefinerReal</a>(<a class=\"code hl_class\" href=\"a01029.html\">PrimvarRefinerReal</a> <span class=\"keyword\">const</span> &amp; src) : _refiner(src._refiner) { }</div>\n+<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\">  189</span>    <a class=\"code hl_class\" href=\"a01029.html\">PrimvarRefinerReal</a> &amp; operator=(<a class=\"code hl_class\" href=\"a01029.html\">PrimvarRefinerReal</a> <span class=\"keyword\">const</span> &amp;) { <span class=\"keywordflow\">return</span> *<span class=\"keyword\">this</span>; }</div>\n+<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\">  190</span> </div>\n+<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\">  191</span>    <span class=\"keyword\">template</span> &lt;Sdc::SchemeType SCHEME, <span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt; <span class=\"keywordtype\">void</span> interpFromFaces(<span class=\"keywordtype\">int</span>, T <span class=\"keyword\">const</span> &amp;, U &amp;) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\">  192</span>    <span class=\"keyword\">template</span> &lt;Sdc::SchemeType SCHEME, <span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt; <span class=\"keywordtype\">void</span> interpFromEdges(<span class=\"keywordtype\">int</span>, T <span class=\"keyword\">const</span> &amp;, U &amp;) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\">  193</span>    <span class=\"keyword\">template</span> &lt;Sdc::SchemeType SCHEME, <span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt; <span class=\"keywordtype\">void</span> interpFromVerts(<span class=\"keywordtype\">int</span>, T <span class=\"keyword\">const</span> &amp;, U &amp;) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\">  194</span> </div>\n+<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\">  195</span>    <span class=\"keyword\">template</span> &lt;Sdc::SchemeType SCHEME, <span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt; <span class=\"keywordtype\">void</span> interpFVarFromFaces(<span class=\"keywordtype\">int</span>, T <span class=\"keyword\">const</span> &amp;, U &amp;, <span class=\"keywordtype\">int</span>) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\">  196</span>    <span class=\"keyword\">template</span> &lt;Sdc::SchemeType SCHEME, <span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt; <span class=\"keywordtype\">void</span> interpFVarFromEdges(<span class=\"keywordtype\">int</span>, T <span class=\"keyword\">const</span> &amp;, U &amp;, <span class=\"keywordtype\">int</span>) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\">  197</span>    <span class=\"keyword\">template</span> &lt;Sdc::SchemeType SCHEME, <span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt; <span class=\"keywordtype\">void</span> interpFVarFromVerts(<span class=\"keywordtype\">int</span>, T <span class=\"keyword\">const</span> &amp;, U &amp;, <span class=\"keywordtype\">int</span>) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\">  198</span> </div>\n+<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\">  199</span>    <span class=\"keyword\">template</span> &lt;Sdc::SchemeType SCHEME, <span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U, <span class=\"keyword\">class</span> U1, <span class=\"keyword\">class</span> U2&gt;</div>\n+<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\">  200</span>    <span class=\"keywordtype\">void</span> limit(T <span class=\"keyword\">const</span> &amp; src, U &amp; pos, U1 * tan1, U2 * tan2) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\">  201</span> </div>\n+<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\">  202</span>    <span class=\"keyword\">template</span> &lt;Sdc::SchemeType SCHEME, <span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt;</div>\n+<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\">  203</span>    <span class=\"keywordtype\">void</span> limitFVar(T <span class=\"keyword\">const</span> &amp; src, U &amp; dst, <span class=\"keywordtype\">int</span> channel) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\">  204</span> </div>\n+<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\">  205</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\">  206</span>    TopologyRefiner <span class=\"keyword\">const</span> &amp;  _refiner;</div>\n+<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\">  207</span> </div>\n+<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\">  208</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\">  209</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\">  210</span>    <span class=\"comment\">//  Local class to fulfill interface for &lt;typename MASK&gt; in the Scheme mask queries:</span></div>\n+<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\">  211</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00212\" name=\"l00212\"></a><span class=\"lineno\">  212</span>    <span class=\"keyword\">class </span>Mask {</div>\n+<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\">  213</span>    <span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\">  214</span>        <span class=\"keyword\">typedef</span> REAL Weight;  <span class=\"comment\">//  Also part of the expected interface</span></div>\n+<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\">  215</span> </div>\n+<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\">  216</span>    <span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\">  217</span>        Mask(Weight* v, Weight* e, Weight* f) : </div>\n+<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\">  218</span>            _vertWeights(v), _edgeWeights(e), _faceWeights(f),</div>\n+<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\">  219</span>            _vertCount(0), _edgeCount(0), _faceCount(0), </div>\n+<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\">  220</span>            _faceWeightsForFaceCenters(false)</div>\n+<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\">  221</span>        { }</div>\n+<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\">  222</span> </div>\n+<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\">  223</span>        ~Mask() { }</div>\n+<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\">  224</span> </div>\n+<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\">  225</span>    <span class=\"keyword\">public</span>:  <span class=\"comment\">//  Generic interface expected of &lt;typename MASK&gt;:</span></div>\n+<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\">  226</span>        <span class=\"keywordtype\">int</span> GetNumVertexWeights()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _vertCount; }</div>\n+<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\">  227</span>        <span class=\"keywordtype\">int</span> GetNumEdgeWeights()<span class=\"keyword\">   const </span>{ <span class=\"keywordflow\">return</span> _edgeCount; }</div>\n+<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\">  228</span>        <span class=\"keywordtype\">int</span> GetNumFaceWeights()<span class=\"keyword\">   const </span>{ <span class=\"keywordflow\">return</span> _faceCount; }</div>\n+<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\">  229</span> </div>\n+<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\">  230</span>        <span class=\"keywordtype\">void</span> SetNumVertexWeights(<span class=\"keywordtype\">int</span> count) { _vertCount = count; }</div>\n+<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\">  231</span>        <span class=\"keywordtype\">void</span> SetNumEdgeWeights(  <span class=\"keywordtype\">int</span> count) { _edgeCount = count; }</div>\n+<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\">  232</span>        <span class=\"keywordtype\">void</span> SetNumFaceWeights(  <span class=\"keywordtype\">int</span> count) { _faceCount = count; }</div>\n+<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\">  233</span> </div>\n+<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\">  234</span>        Weight <span class=\"keyword\">const</span>&amp; VertexWeight(<span class=\"keywordtype\">int</span> index)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _vertWeights[index]; }</div>\n+<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\">  235</span>        Weight <span class=\"keyword\">const</span>&amp; EdgeWeight(  <span class=\"keywordtype\">int</span> index)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _edgeWeights[index]; }</div>\n+<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\">  236</span>        Weight <span class=\"keyword\">const</span>&amp; FaceWeight(  <span class=\"keywordtype\">int</span> index)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _faceWeights[index]; }</div>\n+<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\">  237</span> </div>\n+<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\">  238</span>        Weight&amp; VertexWeight(<span class=\"keywordtype\">int</span> index) { <span class=\"keywordflow\">return</span> _vertWeights[index]; }</div>\n+<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\">  239</span>        Weight&amp; EdgeWeight(  <span class=\"keywordtype\">int</span> index) { <span class=\"keywordflow\">return</span> _edgeWeights[index]; }</div>\n+<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\">  240</span>        Weight&amp; FaceWeight(  <span class=\"keywordtype\">int</span> index) { <span class=\"keywordflow\">return</span> _faceWeights[index]; }</div>\n+<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\">  241</span> </div>\n+<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\">  242</span>        <span class=\"keywordtype\">bool</span> AreFaceWeightsForFaceCenters()<span class=\"keyword\"> const  </span>{ <span class=\"keywordflow\">return</span> _faceWeightsForFaceCenters; }</div>\n+<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\">  243</span>        <span class=\"keywordtype\">void</span> SetFaceWeightsForFaceCenters(<span class=\"keywordtype\">bool</span> on) { _faceWeightsForFaceCenters = on; }</div>\n+<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\">  244</span> </div>\n+<div class=\"line\"><a id=\"l00245\" name=\"l00245\"></a><span class=\"lineno\">  245</span>    <span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\">  246</span>        Weight* _vertWeights;</div>\n+<div class=\"line\"><a id=\"l00247\" name=\"l00247\"></a><span class=\"lineno\">  247</span>        Weight* _edgeWeights;</div>\n+<div class=\"line\"><a id=\"l00248\" name=\"l00248\"></a><span class=\"lineno\">  248</span>        Weight* _faceWeights;</div>\n+<div class=\"line\"><a id=\"l00249\" name=\"l00249\"></a><span class=\"lineno\">  249</span> </div>\n+<div class=\"line\"><a id=\"l00250\" name=\"l00250\"></a><span class=\"lineno\">  250</span>        <span class=\"keywordtype\">int</span> _vertCount;</div>\n+<div class=\"line\"><a id=\"l00251\" name=\"l00251\"></a><span class=\"lineno\">  251</span>        <span class=\"keywordtype\">int</span> _edgeCount;</div>\n+<div class=\"line\"><a id=\"l00252\" name=\"l00252\"></a><span class=\"lineno\">  252</span>        <span class=\"keywordtype\">int</span> _faceCount;</div>\n+<div class=\"line\"><a id=\"l00253\" name=\"l00253\"></a><span class=\"lineno\">  253</span> </div>\n+<div class=\"line\"><a id=\"l00254\" name=\"l00254\"></a><span class=\"lineno\">  254</span>        <span class=\"keywordtype\">bool</span> _faceWeightsForFaceCenters;</div>\n+<div class=\"line\"><a id=\"l00255\" name=\"l00255\"></a><span class=\"lineno\">  255</span>    };</div>\n+<div class=\"line\"><a id=\"l00256\" name=\"l00256\"></a><span class=\"lineno\">  256</span>};</div>\n+<div class=\"line\"><a id=\"l00257\" name=\"l00257\"></a><span class=\"lineno\">  257</span> </div>\n+<div class=\"line\"><a id=\"l00258\" name=\"l00258\"></a><span class=\"lineno\">  258</span> </div>\n+<div class=\"line\"><a id=\"l00259\" name=\"l00259\"></a><span class=\"lineno\">  259</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00260\" name=\"l00260\"></a><span class=\"lineno\">  260</span><span class=\"comment\">//  Public entry points to the methods.  Queries of the scheme type and its</span></div>\n+<div class=\"line\"><a id=\"l00261\" name=\"l00261\"></a><span class=\"lineno\">  261</span><span class=\"comment\">//  use as a template parameter in subsequent implementation will be factored</span></div>\n+<div class=\"line\"><a id=\"l00262\" name=\"l00262\"></a><span class=\"lineno\">  262</span><span class=\"comment\">//  out of a later release:</span></div>\n+<div class=\"line\"><a id=\"l00263\" name=\"l00263\"></a><span class=\"lineno\">  263</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00264\" name=\"l00264\"></a><span class=\"lineno\">  264</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00265\" name=\"l00265\"></a><span class=\"lineno\">  265</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt;</div>\n+<div class=\"line\"><a id=\"l00266\" name=\"l00266\"></a><span class=\"lineno\">  266</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00267\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00267\" name=\"l00267\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01029.html#ab97b75b7c0fffa06a5948bd6ba7b420d\">  267</a></span><a class=\"code hl_function\" href=\"a01029.html#ab97b75b7c0fffa06a5948bd6ba7b420d\">PrimvarRefinerReal&lt;REAL&gt;::Interpolate</a>(<span class=\"keywordtype\">int</span> level, T <span class=\"keyword\">const</span> &amp; src, U &amp; dst)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00268\" name=\"l00268\"></a><span class=\"lineno\">  268</span> </div>\n+<div class=\"line\"><a id=\"l00269\" name=\"l00269\"></a><span class=\"lineno\">  269</span>    assert(level&gt;0 &amp;&amp; level&lt;=(<span class=\"keywordtype\">int</span>)_refiner._refinements.size());</div>\n+<div class=\"line\"><a id=\"l00270\" name=\"l00270\"></a><span class=\"lineno\">  270</span> </div>\n+<div class=\"line\"><a id=\"l00271\" name=\"l00271\"></a><span class=\"lineno\">  271</span>    <span class=\"keywordflow\">switch</span> (_refiner._subdivType) {</div>\n+<div class=\"line\"><a id=\"l00272\" name=\"l00272\"></a><span class=\"lineno\">  272</span>    <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833da29c9704ef8a61670dfc242b6e6b82a9f\">Sdc::SCHEME_CATMARK</a>:</div>\n+<div class=\"line\"><a id=\"l00273\" name=\"l00273\"></a><span class=\"lineno\">  273</span>        interpFromFaces&lt;Sdc::SCHEME_CATMARK&gt;(level, src, dst);</div>\n+<div class=\"line\"><a id=\"l00274\" name=\"l00274\"></a><span class=\"lineno\">  274</span>        interpFromEdges&lt;Sdc::SCHEME_CATMARK&gt;(level, src, dst);</div>\n+<div class=\"line\"><a id=\"l00275\" name=\"l00275\"></a><span class=\"lineno\">  275</span>        interpFromVerts&lt;Sdc::SCHEME_CATMARK&gt;(level, src, dst);</div>\n+<div class=\"line\"><a id=\"l00276\" name=\"l00276\"></a><span class=\"lineno\">  276</span>        <span class=\"keywordflow\">break</span>;</div>\n+<div class=\"line\"><a id=\"l00277\" name=\"l00277\"></a><span class=\"lineno\">  277</span>    <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833da529a2651a5dcfac532e933ffefc36e99\">Sdc::SCHEME_LOOP</a>:</div>\n+<div class=\"line\"><a id=\"l00278\" name=\"l00278\"></a><span class=\"lineno\">  278</span>        interpFromFaces&lt;Sdc::SCHEME_LOOP&gt;(level, src, dst);</div>\n+<div class=\"line\"><a id=\"l00279\" name=\"l00279\"></a><span class=\"lineno\">  279</span>        interpFromEdges&lt;Sdc::SCHEME_LOOP&gt;(level, src, dst);</div>\n+<div class=\"line\"><a id=\"l00280\" name=\"l00280\"></a><span class=\"lineno\">  280</span>        interpFromVerts&lt;Sdc::SCHEME_LOOP&gt;(level, src, dst);</div>\n+<div class=\"line\"><a id=\"l00281\" name=\"l00281\"></a><span class=\"lineno\">  281</span>        <span class=\"keywordflow\">break</span>;</div>\n+<div class=\"line\"><a id=\"l00282\" name=\"l00282\"></a><span class=\"lineno\">  282</span>    <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833da02558f420bac2d6bd3f8411d4b3957a0\">Sdc::SCHEME_BILINEAR</a>:</div>\n+<div class=\"line\"><a id=\"l00283\" name=\"l00283\"></a><span class=\"lineno\">  283</span>        interpFromFaces&lt;Sdc::SCHEME_BILINEAR&gt;(level, src, dst);</div>\n+<div class=\"line\"><a id=\"l00284\" name=\"l00284\"></a><span class=\"lineno\">  284</span>        interpFromEdges&lt;Sdc::SCHEME_BILINEAR&gt;(level, src, dst);</div>\n+<div class=\"line\"><a id=\"l00285\" name=\"l00285\"></a><span class=\"lineno\">  285</span>        interpFromVerts&lt;Sdc::SCHEME_BILINEAR&gt;(level, src, dst);</div>\n+<div class=\"line\"><a id=\"l00286\" name=\"l00286\"></a><span class=\"lineno\">  286</span>        <span class=\"keywordflow\">break</span>;</div>\n+<div class=\"line\"><a id=\"l00287\" name=\"l00287\"></a><span class=\"lineno\">  287</span>    }</div>\n+<div class=\"line\"><a id=\"l00288\" name=\"l00288\"></a><span class=\"lineno\">  288</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00289\" name=\"l00289\"></a><span class=\"lineno\">  289</span> </div>\n+<div class=\"line\"><a id=\"l00290\" name=\"l00290\"></a><span class=\"lineno\">  290</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00291\" name=\"l00291\"></a><span class=\"lineno\">  291</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt;</div>\n+<div class=\"line\"><a id=\"l00292\" name=\"l00292\"></a><span class=\"lineno\">  292</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00293\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00293\" name=\"l00293\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01029.html#ad8f74e1887299ed02e0094100f18c998\">  293</a></span><a class=\"code hl_function\" href=\"a01029.html#ad8f74e1887299ed02e0094100f18c998\">PrimvarRefinerReal&lt;REAL&gt;::InterpolateFaceVarying</a>(<span class=\"keywordtype\">int</span> level, T <span class=\"keyword\">const</span> &amp; src, U &amp; dst, <span class=\"keywordtype\">int</span> channel)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00294\" name=\"l00294\"></a><span class=\"lineno\">  294</span> </div>\n+<div class=\"line\"><a id=\"l00295\" name=\"l00295\"></a><span class=\"lineno\">  295</span>    assert(level&gt;0 &amp;&amp; level&lt;=(<span class=\"keywordtype\">int</span>)_refiner._refinements.size());</div>\n+<div class=\"line\"><a id=\"l00296\" name=\"l00296\"></a><span class=\"lineno\">  296</span> </div>\n+<div class=\"line\"><a id=\"l00297\" name=\"l00297\"></a><span class=\"lineno\">  297</span>    <span class=\"keywordflow\">switch</span> (_refiner._subdivType) {</div>\n+<div class=\"line\"><a id=\"l00298\" name=\"l00298\"></a><span class=\"lineno\">  298</span>    <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833da29c9704ef8a61670dfc242b6e6b82a9f\">Sdc::SCHEME_CATMARK</a>:</div>\n+<div class=\"line\"><a id=\"l00299\" name=\"l00299\"></a><span class=\"lineno\">  299</span>        interpFVarFromFaces&lt;Sdc::SCHEME_CATMARK&gt;(level, src, dst, channel);</div>\n+<div class=\"line\"><a id=\"l00300\" name=\"l00300\"></a><span class=\"lineno\">  300</span>        interpFVarFromEdges&lt;Sdc::SCHEME_CATMARK&gt;(level, src, dst, channel);</div>\n+<div class=\"line\"><a id=\"l00301\" name=\"l00301\"></a><span class=\"lineno\">  301</span>        interpFVarFromVerts&lt;Sdc::SCHEME_CATMARK&gt;(level, src, dst, channel);</div>\n+<div class=\"line\"><a id=\"l00302\" name=\"l00302\"></a><span class=\"lineno\">  302</span>        <span class=\"keywordflow\">break</span>;</div>\n+<div class=\"line\"><a id=\"l00303\" name=\"l00303\"></a><span class=\"lineno\">  303</span>    <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833da529a2651a5dcfac532e933ffefc36e99\">Sdc::SCHEME_LOOP</a>:</div>\n+<div class=\"line\"><a id=\"l00304\" name=\"l00304\"></a><span class=\"lineno\">  304</span>        interpFVarFromFaces&lt;Sdc::SCHEME_LOOP&gt;(level, src, dst, channel);</div>\n+<div class=\"line\"><a id=\"l00305\" name=\"l00305\"></a><span class=\"lineno\">  305</span>        interpFVarFromEdges&lt;Sdc::SCHEME_LOOP&gt;(level, src, dst, channel);</div>\n+<div class=\"line\"><a id=\"l00306\" name=\"l00306\"></a><span class=\"lineno\">  306</span>        interpFVarFromVerts&lt;Sdc::SCHEME_LOOP&gt;(level, src, dst, channel);</div>\n+<div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\">  307</span>        <span class=\"keywordflow\">break</span>;</div>\n+<div class=\"line\"><a id=\"l00308\" name=\"l00308\"></a><span class=\"lineno\">  308</span>    <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833da02558f420bac2d6bd3f8411d4b3957a0\">Sdc::SCHEME_BILINEAR</a>:</div>\n+<div class=\"line\"><a id=\"l00309\" name=\"l00309\"></a><span class=\"lineno\">  309</span>        interpFVarFromFaces&lt;Sdc::SCHEME_BILINEAR&gt;(level, src, dst, channel);</div>\n+<div class=\"line\"><a id=\"l00310\" name=\"l00310\"></a><span class=\"lineno\">  310</span>        interpFVarFromEdges&lt;Sdc::SCHEME_BILINEAR&gt;(level, src, dst, channel);</div>\n+<div class=\"line\"><a id=\"l00311\" name=\"l00311\"></a><span class=\"lineno\">  311</span>        interpFVarFromVerts&lt;Sdc::SCHEME_BILINEAR&gt;(level, src, dst, channel);</div>\n+<div class=\"line\"><a id=\"l00312\" name=\"l00312\"></a><span class=\"lineno\">  312</span>        <span class=\"keywordflow\">break</span>;</div>\n+<div class=\"line\"><a id=\"l00313\" name=\"l00313\"></a><span class=\"lineno\">  313</span>    }</div>\n+<div class=\"line\"><a id=\"l00314\" name=\"l00314\"></a><span class=\"lineno\">  314</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00315\" name=\"l00315\"></a><span class=\"lineno\">  315</span> </div>\n+<div class=\"line\"><a id=\"l00316\" name=\"l00316\"></a><span class=\"lineno\">  316</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00317\" name=\"l00317\"></a><span class=\"lineno\">  317</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt;</div>\n+<div class=\"line\"><a id=\"l00318\" name=\"l00318\"></a><span class=\"lineno\">  318</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00319\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00319\" name=\"l00319\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01029.html#a0357839a7fabaa02f1d6d6a3c75e1ec2\">  319</a></span><a class=\"code hl_function\" href=\"a01029.html#a0357839a7fabaa02f1d6d6a3c75e1ec2\">PrimvarRefinerReal&lt;REAL&gt;::Limit</a>(T <span class=\"keyword\">const</span> &amp; src, U &amp; dst)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00320\" name=\"l00320\"></a><span class=\"lineno\">  320</span> </div>\n+<div class=\"line\"><a id=\"l00321\" name=\"l00321\"></a><span class=\"lineno\">  321</span>    <span class=\"keywordflow\">if</span> (_refiner.getLevel(_refiner.GetMaxLevel()).getNumVertexEdgesTotal() == 0) {</div>\n+<div class=\"line\"><a id=\"l00322\" name=\"l00322\"></a><span class=\"lineno\">  322</span>        <a class=\"code hl_function\" href=\"a00908.html#a25d51c3a61fb3dacded6e48d01fd2fdb\">Error</a>(<a class=\"code hl_enumvalue\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45aac565fa39d681e2766584dd87246c3bdd\">FAR_RUNTIME_ERROR</a>,</div>\n+<div class=\"line\"><a id=\"l00323\" name=\"l00323\"></a><span class=\"lineno\">  323</span>            <span class=\"stringliteral\">&quot;Failure in PrimvarRefiner::Limit() -- &quot;</span></div>\n+<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\">  324</span>            <span class=\"stringliteral\">&quot;last level of refinement does not include full topology.&quot;</span>);</div>\n+<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\">  325</span>        <span class=\"keywordflow\">return</span>;</div>\n+<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\">  326</span>    }</div>\n+<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\">  327</span> </div>\n+<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\">  328</span>    <span class=\"keywordflow\">switch</span> (_refiner._subdivType) {</div>\n+<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\">  329</span>    <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833da29c9704ef8a61670dfc242b6e6b82a9f\">Sdc::SCHEME_CATMARK</a>:</div>\n+<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\">  330</span>        limit&lt;Sdc::SCHEME_CATMARK&gt;(src, dst, (U*)0, (U*)0);</div>\n+<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\">  331</span>        <span class=\"keywordflow\">break</span>;</div>\n+<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\">  332</span>    <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833da529a2651a5dcfac532e933ffefc36e99\">Sdc::SCHEME_LOOP</a>:</div>\n+<div class=\"line\"><a id=\"l00333\" name=\"l00333\"></a><span class=\"lineno\">  333</span>        limit&lt;Sdc::SCHEME_LOOP&gt;(src, dst, (U*)0, (U*)0);</div>\n+<div class=\"line\"><a id=\"l00334\" name=\"l00334\"></a><span class=\"lineno\">  334</span>        <span class=\"keywordflow\">break</span>;</div>\n+<div class=\"line\"><a id=\"l00335\" name=\"l00335\"></a><span class=\"lineno\">  335</span>    <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833da02558f420bac2d6bd3f8411d4b3957a0\">Sdc::SCHEME_BILINEAR</a>:</div>\n+<div class=\"line\"><a id=\"l00336\" name=\"l00336\"></a><span class=\"lineno\">  336</span>        limit&lt;Sdc::SCHEME_BILINEAR&gt;(src, dst, (U*)0, (U*)0);</div>\n+<div class=\"line\"><a id=\"l00337\" name=\"l00337\"></a><span class=\"lineno\">  337</span>        <span class=\"keywordflow\">break</span>;</div>\n+<div class=\"line\"><a id=\"l00338\" name=\"l00338\"></a><span class=\"lineno\">  338</span>    }</div>\n+<div class=\"line\"><a id=\"l00339\" name=\"l00339\"></a><span class=\"lineno\">  339</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00340\" name=\"l00340\"></a><span class=\"lineno\">  340</span> </div>\n+<div class=\"line\"><a id=\"l00341\" name=\"l00341\"></a><span class=\"lineno\">  341</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00342\" name=\"l00342\"></a><span class=\"lineno\">  342</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U, <span class=\"keyword\">class</span> U1, <span class=\"keyword\">class</span> U2&gt;</div>\n+<div class=\"line\"><a id=\"l00343\" name=\"l00343\"></a><span class=\"lineno\">  343</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00344\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00344\" name=\"l00344\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01029.html#a2cf4c50a1117c44ba4d11db92b067401\">  344</a></span><a class=\"code hl_function\" href=\"a01029.html#a0357839a7fabaa02f1d6d6a3c75e1ec2\">PrimvarRefinerReal&lt;REAL&gt;::Limit</a>(T <span class=\"keyword\">const</span> &amp; src, U &amp; dstPos, U1 &amp; dstTan1, U2 &amp; dstTan2)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00345\" name=\"l00345\"></a><span class=\"lineno\">  345</span> </div>\n+<div class=\"line\"><a id=\"l00346\" name=\"l00346\"></a><span class=\"lineno\">  346</span>    <span class=\"keywordflow\">if</span> (_refiner.getLevel(_refiner.GetMaxLevel()).getNumVertexEdgesTotal() == 0) {</div>\n+<div class=\"line\"><a id=\"l00347\" name=\"l00347\"></a><span class=\"lineno\">  347</span>        <a class=\"code hl_function\" href=\"a00908.html#a25d51c3a61fb3dacded6e48d01fd2fdb\">Error</a>(<a class=\"code hl_enumvalue\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45aac565fa39d681e2766584dd87246c3bdd\">FAR_RUNTIME_ERROR</a>,</div>\n+<div class=\"line\"><a id=\"l00348\" name=\"l00348\"></a><span class=\"lineno\">  348</span>            <span class=\"stringliteral\">&quot;Failure in PrimvarRefiner::Limit() -- &quot;</span></div>\n+<div class=\"line\"><a id=\"l00349\" name=\"l00349\"></a><span class=\"lineno\">  349</span>            <span class=\"stringliteral\">&quot;last level of refinement does not include full topology.&quot;</span>);</div>\n+<div class=\"line\"><a id=\"l00350\" name=\"l00350\"></a><span class=\"lineno\">  350</span>        <span class=\"keywordflow\">return</span>;</div>\n+<div class=\"line\"><a id=\"l00351\" name=\"l00351\"></a><span class=\"lineno\">  351</span>    }</div>\n+<div class=\"line\"><a id=\"l00352\" name=\"l00352\"></a><span class=\"lineno\">  352</span> </div>\n+<div class=\"line\"><a id=\"l00353\" name=\"l00353\"></a><span class=\"lineno\">  353</span>    <span class=\"keywordflow\">switch</span> (_refiner._subdivType) {</div>\n+<div class=\"line\"><a id=\"l00354\" name=\"l00354\"></a><span class=\"lineno\">  354</span>    <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833da29c9704ef8a61670dfc242b6e6b82a9f\">Sdc::SCHEME_CATMARK</a>:</div>\n+<div class=\"line\"><a id=\"l00355\" name=\"l00355\"></a><span class=\"lineno\">  355</span>        limit&lt;Sdc::SCHEME_CATMARK&gt;(src, dstPos, &amp;dstTan1, &amp;dstTan2);</div>\n+<div class=\"line\"><a id=\"l00356\" name=\"l00356\"></a><span class=\"lineno\">  356</span>        <span class=\"keywordflow\">break</span>;</div>\n+<div class=\"line\"><a id=\"l00357\" name=\"l00357\"></a><span class=\"lineno\">  357</span>    <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833da529a2651a5dcfac532e933ffefc36e99\">Sdc::SCHEME_LOOP</a>:</div>\n+<div class=\"line\"><a id=\"l00358\" name=\"l00358\"></a><span class=\"lineno\">  358</span>        limit&lt;Sdc::SCHEME_LOOP&gt;(src, dstPos, &amp;dstTan1, &amp;dstTan2);</div>\n+<div class=\"line\"><a id=\"l00359\" name=\"l00359\"></a><span class=\"lineno\">  359</span>        <span class=\"keywordflow\">break</span>;</div>\n+<div class=\"line\"><a id=\"l00360\" name=\"l00360\"></a><span class=\"lineno\">  360</span>    <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833da02558f420bac2d6bd3f8411d4b3957a0\">Sdc::SCHEME_BILINEAR</a>:</div>\n+<div class=\"line\"><a id=\"l00361\" name=\"l00361\"></a><span class=\"lineno\">  361</span>        limit&lt;Sdc::SCHEME_BILINEAR&gt;(src, dstPos, &amp;dstTan1, &amp;dstTan2);</div>\n+<div class=\"line\"><a id=\"l00362\" name=\"l00362\"></a><span class=\"lineno\">  362</span>        <span class=\"keywordflow\">break</span>;</div>\n+<div class=\"line\"><a id=\"l00363\" name=\"l00363\"></a><span class=\"lineno\">  363</span>    }</div>\n+<div class=\"line\"><a id=\"l00364\" name=\"l00364\"></a><span class=\"lineno\">  364</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00365\" name=\"l00365\"></a><span class=\"lineno\">  365</span> </div>\n+<div class=\"line\"><a id=\"l00366\" name=\"l00366\"></a><span class=\"lineno\">  366</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00367\" name=\"l00367\"></a><span class=\"lineno\">  367</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt;</div>\n+<div class=\"line\"><a id=\"l00368\" name=\"l00368\"></a><span class=\"lineno\">  368</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00369\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00369\" name=\"l00369\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01029.html#afdee0e9e9c6edd34c96892efff808a87\">  369</a></span><a class=\"code hl_function\" href=\"a01029.html#afdee0e9e9c6edd34c96892efff808a87\">PrimvarRefinerReal&lt;REAL&gt;::LimitFaceVarying</a>(T <span class=\"keyword\">const</span> &amp; src, U &amp; dst, <span class=\"keywordtype\">int</span> channel)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00370\" name=\"l00370\"></a><span class=\"lineno\">  370</span> </div>\n+<div class=\"line\"><a id=\"l00371\" name=\"l00371\"></a><span class=\"lineno\">  371</span>    <span class=\"keywordflow\">if</span> (_refiner.getLevel(_refiner.GetMaxLevel()).getNumVertexEdgesTotal() == 0) {</div>\n+<div class=\"line\"><a id=\"l00372\" name=\"l00372\"></a><span class=\"lineno\">  372</span>        <a class=\"code hl_function\" href=\"a00908.html#a25d51c3a61fb3dacded6e48d01fd2fdb\">Error</a>(<a class=\"code hl_enumvalue\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45aac565fa39d681e2766584dd87246c3bdd\">FAR_RUNTIME_ERROR</a>,</div>\n+<div class=\"line\"><a id=\"l00373\" name=\"l00373\"></a><span class=\"lineno\">  373</span>            <span class=\"stringliteral\">&quot;Failure in PrimvarRefiner::LimitFaceVarying() -- &quot;</span></div>\n+<div class=\"line\"><a id=\"l00374\" name=\"l00374\"></a><span class=\"lineno\">  374</span>            <span class=\"stringliteral\">&quot;last level of refinement does not include full topology.&quot;</span>);</div>\n+<div class=\"line\"><a id=\"l00375\" name=\"l00375\"></a><span class=\"lineno\">  375</span>        <span class=\"keywordflow\">return</span>;</div>\n+<div class=\"line\"><a id=\"l00376\" name=\"l00376\"></a><span class=\"lineno\">  376</span>    }</div>\n+<div class=\"line\"><a id=\"l00377\" name=\"l00377\"></a><span class=\"lineno\">  377</span> </div>\n+<div class=\"line\"><a id=\"l00378\" name=\"l00378\"></a><span class=\"lineno\">  378</span>    <span class=\"keywordflow\">switch</span> (_refiner._subdivType) {</div>\n+<div class=\"line\"><a id=\"l00379\" name=\"l00379\"></a><span class=\"lineno\">  379</span>    <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833da29c9704ef8a61670dfc242b6e6b82a9f\">Sdc::SCHEME_CATMARK</a>:</div>\n+<div class=\"line\"><a id=\"l00380\" name=\"l00380\"></a><span class=\"lineno\">  380</span>        limitFVar&lt;Sdc::SCHEME_CATMARK&gt;(src, dst, channel);</div>\n+<div class=\"line\"><a id=\"l00381\" name=\"l00381\"></a><span class=\"lineno\">  381</span>        <span class=\"keywordflow\">break</span>;</div>\n+<div class=\"line\"><a id=\"l00382\" name=\"l00382\"></a><span class=\"lineno\">  382</span>    <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833da529a2651a5dcfac532e933ffefc36e99\">Sdc::SCHEME_LOOP</a>:</div>\n+<div class=\"line\"><a id=\"l00383\" name=\"l00383\"></a><span class=\"lineno\">  383</span>        limitFVar&lt;Sdc::SCHEME_LOOP&gt;(src, dst, channel);</div>\n+<div class=\"line\"><a id=\"l00384\" name=\"l00384\"></a><span class=\"lineno\">  384</span>        <span class=\"keywordflow\">break</span>;</div>\n+<div class=\"line\"><a id=\"l00385\" name=\"l00385\"></a><span class=\"lineno\">  385</span>    <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833da02558f420bac2d6bd3f8411d4b3957a0\">Sdc::SCHEME_BILINEAR</a>:</div>\n+<div class=\"line\"><a id=\"l00386\" name=\"l00386\"></a><span class=\"lineno\">  386</span>        limitFVar&lt;Sdc::SCHEME_BILINEAR&gt;(src, dst, channel);</div>\n+<div class=\"line\"><a id=\"l00387\" name=\"l00387\"></a><span class=\"lineno\">  387</span>        <span class=\"keywordflow\">break</span>;</div>\n+<div class=\"line\"><a id=\"l00388\" name=\"l00388\"></a><span class=\"lineno\">  388</span>    }</div>\n+<div class=\"line\"><a id=\"l00389\" name=\"l00389\"></a><span class=\"lineno\">  389</span>}</div>\n+</div>\n+</div>\n+<div class=\"line\"><a id=\"l00390\" name=\"l00390\"></a><span class=\"lineno\">  390</span> </div>\n+<div class=\"line\"><a id=\"l00391\" name=\"l00391\"></a><span class=\"lineno\">  391</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00392\" name=\"l00392\"></a><span class=\"lineno\">  392</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt;</div>\n+<div class=\"line\"><a id=\"l00393\" name=\"l00393\"></a><span class=\"lineno\">  393</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00394\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00394\" name=\"l00394\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01029.html#a3f8bd2ef902e11aad1debbdda26bb596\">  394</a></span><a class=\"code hl_function\" href=\"a01029.html#a3f8bd2ef902e11aad1debbdda26bb596\">PrimvarRefinerReal&lt;REAL&gt;::InterpolateFaceUniform</a>(<span class=\"keywordtype\">int</span> level, T <span class=\"keyword\">const</span> &amp; src, U &amp; dst)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00395\" name=\"l00395\"></a><span class=\"lineno\">  395</span> </div>\n+<div class=\"line\"><a id=\"l00396\" name=\"l00396\"></a><span class=\"lineno\">  396</span>    assert(level&gt;0 &amp;&amp; level&lt;=(<span class=\"keywordtype\">int</span>)_refiner._refinements.size());</div>\n+<div class=\"line\"><a id=\"l00397\" name=\"l00397\"></a><span class=\"lineno\">  397</span> </div>\n+<div class=\"line\"><a id=\"l00398\" name=\"l00398\"></a><span class=\"lineno\">  398</span>    Vtr::internal::Refinement <span class=\"keyword\">const</span> &amp; refinement = _refiner.getRefinement(level-1);</div>\n+<div class=\"line\"><a id=\"l00399\" name=\"l00399\"></a><span class=\"lineno\">  399</span>    Vtr::internal::Level <span class=\"keyword\">const</span> &amp; child = refinement.child();</div>\n+<div class=\"line\"><a id=\"l00400\" name=\"l00400\"></a><span class=\"lineno\">  400</span> </div>\n+<div class=\"line\"><a id=\"l00401\" name=\"l00401\"></a><span class=\"lineno\">  401</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> cFace = 0; cFace &lt; child.getNumFaces(); ++cFace) {</div>\n+<div class=\"line\"><a id=\"l00402\" name=\"l00402\"></a><span class=\"lineno\">  402</span> </div>\n+<div class=\"line\"><a id=\"l00403\" name=\"l00403\"></a><span class=\"lineno\">  403</span>        <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a> pFace = refinement.getChildFaceParentFace(cFace);</div>\n+<div class=\"line\"><a id=\"l00404\" name=\"l00404\"></a><span class=\"lineno\">  404</span> </div>\n+<div class=\"line\"><a id=\"l00405\" name=\"l00405\"></a><span class=\"lineno\">  405</span>        dst[cFace] = src[pFace];</div>\n+<div class=\"line\"><a id=\"l00406\" name=\"l00406\"></a><span class=\"lineno\">  406</span>    }</div>\n+<div class=\"line\"><a id=\"l00407\" name=\"l00407\"></a><span class=\"lineno\">  407</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00408\" name=\"l00408\"></a><span class=\"lineno\">  408</span> </div>\n+<div class=\"line\"><a id=\"l00409\" name=\"l00409\"></a><span class=\"lineno\">  409</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00410\" name=\"l00410\"></a><span class=\"lineno\">  410</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt;</div>\n+<div class=\"line\"><a id=\"l00411\" name=\"l00411\"></a><span class=\"lineno\">  411</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00412\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00412\" name=\"l00412\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01029.html#aa2fd72e336a12bf454dd79ba6ce8ee56\">  412</a></span><a class=\"code hl_function\" href=\"a01029.html#aa2fd72e336a12bf454dd79ba6ce8ee56\">PrimvarRefinerReal&lt;REAL&gt;::InterpolateVarying</a>(<span class=\"keywordtype\">int</span> level, T <span class=\"keyword\">const</span> &amp; src, U &amp; dst)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00413\" name=\"l00413\"></a><span class=\"lineno\">  413</span> </div>\n+<div class=\"line\"><a id=\"l00414\" name=\"l00414\"></a><span class=\"lineno\">  414</span>    assert(level&gt;0 &amp;&amp; level&lt;=(<span class=\"keywordtype\">int</span>)_refiner._refinements.size());</div>\n+<div class=\"line\"><a id=\"l00415\" name=\"l00415\"></a><span class=\"lineno\">  415</span> </div>\n+<div class=\"line\"><a id=\"l00416\" name=\"l00416\"></a><span class=\"lineno\">  416</span>    Vtr::internal::Refinement <span class=\"keyword\">const</span> &amp; refinement = _refiner.getRefinement(level-1);</div>\n+<div class=\"line\"><a id=\"l00417\" name=\"l00417\"></a><span class=\"lineno\">  417</span>    Vtr::internal::Level <span class=\"keyword\">const</span> &amp;      parent     = refinement.parent();</div>\n+<div class=\"line\"><a id=\"l00418\" name=\"l00418\"></a><span class=\"lineno\">  418</span> </div>\n+<div class=\"line\"><a id=\"l00419\" name=\"l00419\"></a><span class=\"lineno\">  419</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00420\" name=\"l00420\"></a><span class=\"lineno\">  420</span>    <span class=\"comment\">//  Group values to interpolate based on origin -- note that there may</span></div>\n+<div class=\"line\"><a id=\"l00421\" name=\"l00421\"></a><span class=\"lineno\">  421</span>    <span class=\"comment\">//  be none originating from faces:</span></div>\n+<div class=\"line\"><a id=\"l00422\" name=\"l00422\"></a><span class=\"lineno\">  422</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00423\" name=\"l00423\"></a><span class=\"lineno\">  423</span>    <span class=\"keywordflow\">if</span> (refinement.getNumChildVerticesFromFaces() &gt; 0) {</div>\n+<div class=\"line\"><a id=\"l00424\" name=\"l00424\"></a><span class=\"lineno\">  424</span> </div>\n+<div class=\"line\"><a id=\"l00425\" name=\"l00425\"></a><span class=\"lineno\">  425</span>        <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> face = 0; face &lt; parent.getNumFaces(); ++face) {</div>\n+<div class=\"line\"><a id=\"l00426\" name=\"l00426\"></a><span class=\"lineno\">  426</span> </div>\n+<div class=\"line\"><a id=\"l00427\" name=\"l00427\"></a><span class=\"lineno\">  427</span>            <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a> cVert = refinement.getFaceChildVertex(face);</div>\n+<div class=\"line\"><a id=\"l00428\" name=\"l00428\"></a><span class=\"lineno\">  428</span>            <span class=\"keywordflow\">if</span> (<a class=\"code hl_function\" href=\"a00909.html#a98af1cee938a3f984af1e7e9a205080c\">Vtr::IndexIsValid</a>(cVert)) {</div>\n+<div class=\"line\"><a id=\"l00429\" name=\"l00429\"></a><span class=\"lineno\">  429</span> </div>\n+<div class=\"line\"><a id=\"l00430\" name=\"l00430\"></a><span class=\"lineno\">  430</span>                <span class=\"comment\">//  Apply the weights to the parent face&#39;s vertices:</span></div>\n+<div class=\"line\"><a id=\"l00431\" name=\"l00431\"></a><span class=\"lineno\">  431</span>                <a class=\"code hl_class\" href=\"a01353.html\">ConstIndexArray</a> fVerts = parent.getFaceVertices(face);</div>\n+<div class=\"line\"><a id=\"l00432\" name=\"l00432\"></a><span class=\"lineno\">  432</span> </div>\n+<div class=\"line\"><a id=\"l00433\" name=\"l00433\"></a><span class=\"lineno\">  433</span>                Weight fVaryingWeight = 1.0f / (Weight) fVerts.<a class=\"code hl_function\" href=\"a01353.html#a60304b65bf89363bcc3165d3cde67f86\">size</a>();</div>\n+<div class=\"line\"><a id=\"l00434\" name=\"l00434\"></a><span class=\"lineno\">  434</span> </div>\n+<div class=\"line\"><a id=\"l00435\" name=\"l00435\"></a><span class=\"lineno\">  435</span>                dst[cVert].Clear();</div>\n+<div class=\"line\"><a id=\"l00436\" name=\"l00436\"></a><span class=\"lineno\">  436</span>                <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; fVerts.<a class=\"code hl_function\" href=\"a01353.html#a60304b65bf89363bcc3165d3cde67f86\">size</a>(); ++i) {</div>\n+<div class=\"line\"><a id=\"l00437\" name=\"l00437\"></a><span class=\"lineno\">  437</span>                    dst[cVert].AddWithWeight(src[fVerts[i]], fVaryingWeight);</div>\n+<div class=\"line\"><a id=\"l00438\" name=\"l00438\"></a><span class=\"lineno\">  438</span>                }</div>\n+<div class=\"line\"><a id=\"l00439\" name=\"l00439\"></a><span class=\"lineno\">  439</span>            }</div>\n+<div class=\"line\"><a id=\"l00440\" name=\"l00440\"></a><span class=\"lineno\">  440</span>        }</div>\n+<div class=\"line\"><a id=\"l00441\" name=\"l00441\"></a><span class=\"lineno\">  441</span>    }</div>\n+<div class=\"line\"><a id=\"l00442\" name=\"l00442\"></a><span class=\"lineno\">  442</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> edge = 0; edge &lt; parent.getNumEdges(); ++edge) {</div>\n+<div class=\"line\"><a id=\"l00443\" name=\"l00443\"></a><span class=\"lineno\">  443</span> </div>\n+<div class=\"line\"><a id=\"l00444\" name=\"l00444\"></a><span class=\"lineno\">  444</span>        <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a> cVert = refinement.getEdgeChildVertex(edge);</div>\n+<div class=\"line\"><a id=\"l00445\" name=\"l00445\"></a><span class=\"lineno\">  445</span>        <span class=\"keywordflow\">if</span> (<a class=\"code hl_function\" href=\"a00909.html#a98af1cee938a3f984af1e7e9a205080c\">Vtr::IndexIsValid</a>(cVert)) {</div>\n+<div class=\"line\"><a id=\"l00446\" name=\"l00446\"></a><span class=\"lineno\">  446</span> </div>\n+<div class=\"line\"><a id=\"l00447\" name=\"l00447\"></a><span class=\"lineno\">  447</span>            <span class=\"comment\">//  Apply the weights to the parent edges&#39;s vertices</span></div>\n+<div class=\"line\"><a id=\"l00448\" name=\"l00448\"></a><span class=\"lineno\">  448</span>            <a class=\"code hl_class\" href=\"a01353.html\">ConstIndexArray</a> eVerts = parent.getEdgeVertices(edge);</div>\n+<div class=\"line\"><a id=\"l00449\" name=\"l00449\"></a><span class=\"lineno\">  449</span> </div>\n+<div class=\"line\"><a id=\"l00450\" name=\"l00450\"></a><span class=\"lineno\">  450</span>            dst[cVert].Clear();</div>\n+<div class=\"line\"><a id=\"l00451\" name=\"l00451\"></a><span class=\"lineno\">  451</span>            dst[cVert].AddWithWeight(src[eVerts[0]], 0.5f);</div>\n+<div class=\"line\"><a id=\"l00452\" name=\"l00452\"></a><span class=\"lineno\">  452</span>            dst[cVert].AddWithWeight(src[eVerts[1]], 0.5f);</div>\n+<div class=\"line\"><a id=\"l00453\" name=\"l00453\"></a><span class=\"lineno\">  453</span>        }</div>\n+<div class=\"line\"><a id=\"l00454\" name=\"l00454\"></a><span class=\"lineno\">  454</span>    }</div>\n+<div class=\"line\"><a id=\"l00455\" name=\"l00455\"></a><span class=\"lineno\">  455</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> vert = 0; vert &lt; parent.getNumVertices(); ++vert) {</div>\n+<div class=\"line\"><a id=\"l00456\" name=\"l00456\"></a><span class=\"lineno\">  456</span> </div>\n+<div class=\"line\"><a id=\"l00457\" name=\"l00457\"></a><span class=\"lineno\">  457</span>        <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a> cVert = refinement.getVertexChildVertex(vert);</div>\n+<div class=\"line\"><a id=\"l00458\" name=\"l00458\"></a><span class=\"lineno\">  458</span>        <span class=\"keywordflow\">if</span> (<a class=\"code hl_function\" href=\"a00909.html#a98af1cee938a3f984af1e7e9a205080c\">Vtr::IndexIsValid</a>(cVert)) {</div>\n+<div class=\"line\"><a id=\"l00459\" name=\"l00459\"></a><span class=\"lineno\">  459</span> </div>\n+<div class=\"line\"><a id=\"l00460\" name=\"l00460\"></a><span class=\"lineno\">  460</span>            <span class=\"comment\">//  Essentially copy the parent vertex:</span></div>\n+<div class=\"line\"><a id=\"l00461\" name=\"l00461\"></a><span class=\"lineno\">  461</span>            dst[cVert].Clear();</div>\n+<div class=\"line\"><a id=\"l00462\" name=\"l00462\"></a><span class=\"lineno\">  462</span>            dst[cVert].AddWithWeight(src[vert], 1.0f);</div>\n+<div class=\"line\"><a id=\"l00463\" name=\"l00463\"></a><span class=\"lineno\">  463</span>        }</div>\n+<div class=\"line\"><a id=\"l00464\" name=\"l00464\"></a><span class=\"lineno\">  464</span>    }</div>\n+<div class=\"line\"><a id=\"l00465\" name=\"l00465\"></a><span class=\"lineno\">  465</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00466\" name=\"l00466\"></a><span class=\"lineno\">  466</span> </div>\n+<div class=\"line\"><a id=\"l00467\" name=\"l00467\"></a><span class=\"lineno\">  467</span> </div>\n+<div class=\"line\"><a id=\"l00468\" name=\"l00468\"></a><span class=\"lineno\">  468</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00469\" name=\"l00469\"></a><span class=\"lineno\">  469</span><span class=\"comment\">//  Internal implementation methods -- grouping vertices to be interpolated</span></div>\n+<div class=\"line\"><a id=\"l00470\" name=\"l00470\"></a><span class=\"lineno\">  470</span><span class=\"comment\">//  based on the type of parent component from which they originated:</span></div>\n+<div class=\"line\"><a id=\"l00471\" name=\"l00471\"></a><span class=\"lineno\">  471</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00472\" name=\"l00472\"></a><span class=\"lineno\">  472</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00473\" name=\"l00473\"></a><span class=\"lineno\">  473</span><span class=\"keyword\">template</span> &lt;Sdc::SchemeType SCHEME, <span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt;</div>\n+<div class=\"line\"><a id=\"l00474\" name=\"l00474\"></a><span class=\"lineno\">  474</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"line\"><a id=\"l00475\" name=\"l00475\"></a><span class=\"lineno\">  475</span><a class=\"code hl_class\" href=\"a01029.html\">PrimvarRefinerReal&lt;REAL&gt;::interpFromFaces</a>(<span class=\"keywordtype\">int</span> level, T <span class=\"keyword\">const</span> &amp; src, U &amp; dst)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00476\" name=\"l00476\"></a><span class=\"lineno\">  476</span> </div>\n+<div class=\"line\"><a id=\"l00477\" name=\"l00477\"></a><span class=\"lineno\">  477</span>    Vtr::internal::Refinement <span class=\"keyword\">const</span> &amp; refinement = _refiner.getRefinement(level-1);</div>\n+<div class=\"line\"><a id=\"l00478\" name=\"l00478\"></a><span class=\"lineno\">  478</span>    Vtr::internal::Level <span class=\"keyword\">const</span> &amp;      parent     = refinement.parent();</div>\n+<div class=\"line\"><a id=\"l00479\" name=\"l00479\"></a><span class=\"lineno\">  479</span> </div>\n+<div class=\"line\"><a id=\"l00480\" name=\"l00480\"></a><span class=\"lineno\">  480</span>    <span class=\"keywordflow\">if</span> (refinement.getNumChildVerticesFromFaces() == 0) <span class=\"keywordflow\">return</span>;</div>\n+<div class=\"line\"><a id=\"l00481\" name=\"l00481\"></a><span class=\"lineno\">  481</span> </div>\n+<div class=\"line\"><a id=\"l00482\" name=\"l00482\"></a><span class=\"lineno\">  482</span>    <a class=\"code hl_class\" href=\"a01341.html\">Sdc::Scheme&lt;SCHEME&gt;</a> scheme(_refiner._subdivOptions);</div>\n+<div class=\"line\"><a id=\"l00483\" name=\"l00483\"></a><span class=\"lineno\">  483</span> </div>\n+<div class=\"line\"><a id=\"l00484\" name=\"l00484\"></a><span class=\"lineno\">  484</span>    Vtr::internal::StackBuffer&lt;Weight,16&gt; fVertWeights(parent.getMaxValence());</div>\n+<div class=\"line\"><a id=\"l00485\" name=\"l00485\"></a><span class=\"lineno\">  485</span> </div>\n+<div class=\"line\"><a id=\"l00486\" name=\"l00486\"></a><span class=\"lineno\">  486</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> face = 0; face &lt; parent.getNumFaces(); ++face) {</div>\n+<div class=\"line\"><a id=\"l00487\" name=\"l00487\"></a><span class=\"lineno\">  487</span> </div>\n+<div class=\"line\"><a id=\"l00488\" name=\"l00488\"></a><span class=\"lineno\">  488</span>        <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a> cVert = refinement.getFaceChildVertex(face);</div>\n+<div class=\"line\"><a id=\"l00489\" name=\"l00489\"></a><span class=\"lineno\">  489</span>        <span class=\"keywordflow\">if</span> (!<a class=\"code hl_function\" href=\"a00909.html#a98af1cee938a3f984af1e7e9a205080c\">Vtr::IndexIsValid</a>(cVert))</div>\n+<div class=\"line\"><a id=\"l00490\" name=\"l00490\"></a><span class=\"lineno\">  490</span>            <span class=\"keywordflow\">continue</span>;</div>\n+<div class=\"line\"><a id=\"l00491\" name=\"l00491\"></a><span class=\"lineno\">  491</span> </div>\n+<div class=\"line\"><a id=\"l00492\" name=\"l00492\"></a><span class=\"lineno\">  492</span>        <span class=\"comment\">//  Declare and compute mask weights for this vertex relative to its parent face:</span></div>\n+<div class=\"line\"><a id=\"l00493\" name=\"l00493\"></a><span class=\"lineno\">  493</span>        <a class=\"code hl_class\" href=\"a01353.html\">ConstIndexArray</a> fVerts = parent.getFaceVertices(face);</div>\n+<div class=\"line\"><a id=\"l00494\" name=\"l00494\"></a><span class=\"lineno\">  494</span> </div>\n+<div class=\"line\"><a id=\"l00495\" name=\"l00495\"></a><span class=\"lineno\">  495</span>        Mask fMask(fVertWeights, 0, 0);</div>\n+<div class=\"line\"><a id=\"l00496\" name=\"l00496\"></a><span class=\"lineno\">  496</span>        Vtr::internal::FaceInterface fHood(fVerts.<a class=\"code hl_function\" href=\"a01353.html#a60304b65bf89363bcc3165d3cde67f86\">size</a>());</div>\n+<div class=\"line\"><a id=\"l00497\" name=\"l00497\"></a><span class=\"lineno\">  497</span> </div>\n+<div class=\"line\"><a id=\"l00498\" name=\"l00498\"></a><span class=\"lineno\">  498</span>        scheme.ComputeFaceVertexMask(fHood, fMask);</div>\n+<div class=\"line\"><a id=\"l00499\" name=\"l00499\"></a><span class=\"lineno\">  499</span> </div>\n+<div class=\"line\"><a id=\"l00500\" name=\"l00500\"></a><span class=\"lineno\">  500</span>        <span class=\"comment\">//  Apply the weights to the parent face&#39;s vertices:</span></div>\n+<div class=\"line\"><a id=\"l00501\" name=\"l00501\"></a><span class=\"lineno\">  501</span>        dst[cVert].Clear();</div>\n+<div class=\"line\"><a id=\"l00502\" name=\"l00502\"></a><span class=\"lineno\">  502</span> </div>\n+<div class=\"line\"><a id=\"l00503\" name=\"l00503\"></a><span class=\"lineno\">  503</span>        <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; fVerts.<a class=\"code hl_function\" href=\"a01353.html#a60304b65bf89363bcc3165d3cde67f86\">size</a>(); ++i) {</div>\n+<div class=\"line\"><a id=\"l00504\" name=\"l00504\"></a><span class=\"lineno\">  504</span> </div>\n+<div class=\"line\"><a id=\"l00505\" name=\"l00505\"></a><span class=\"lineno\">  505</span>            dst[cVert].AddWithWeight(src[fVerts[i]], fVertWeights[i]);</div>\n+<div class=\"line\"><a id=\"l00506\" name=\"l00506\"></a><span class=\"lineno\">  506</span>        }</div>\n+<div class=\"line\"><a id=\"l00507\" name=\"l00507\"></a><span class=\"lineno\">  507</span>    }</div>\n+<div class=\"line\"><a id=\"l00508\" name=\"l00508\"></a><span class=\"lineno\">  508</span>}</div>\n+<div class=\"line\"><a id=\"l00509\" name=\"l00509\"></a><span class=\"lineno\">  509</span> </div>\n+<div class=\"line\"><a id=\"l00510\" name=\"l00510\"></a><span class=\"lineno\">  510</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00511\" name=\"l00511\"></a><span class=\"lineno\">  511</span><span class=\"keyword\">template</span> &lt;Sdc::SchemeType SCHEME, <span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt;</div>\n+<div class=\"line\"><a id=\"l00512\" name=\"l00512\"></a><span class=\"lineno\">  512</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"line\"><a id=\"l00513\" name=\"l00513\"></a><span class=\"lineno\">  513</span>PrimvarRefinerReal&lt;REAL&gt;::interpFromEdges(<span class=\"keywordtype\">int</span> level, T <span class=\"keyword\">const</span> &amp; src, U &amp; dst)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00514\" name=\"l00514\"></a><span class=\"lineno\">  514</span> </div>\n+<div class=\"line\"><a id=\"l00515\" name=\"l00515\"></a><span class=\"lineno\">  515</span>    Vtr::internal::Refinement <span class=\"keyword\">const</span> &amp; refinement = _refiner.getRefinement(level-1);</div>\n+<div class=\"line\"><a id=\"l00516\" name=\"l00516\"></a><span class=\"lineno\">  516</span>    Vtr::internal::Level <span class=\"keyword\">const</span> &amp;      parent     = refinement.parent();</div>\n+<div class=\"line\"><a id=\"l00517\" name=\"l00517\"></a><span class=\"lineno\">  517</span>    Vtr::internal::Level <span class=\"keyword\">const</span> &amp;      child      = refinement.child();</div>\n+<div class=\"line\"><a id=\"l00518\" name=\"l00518\"></a><span class=\"lineno\">  518</span> </div>\n+<div class=\"line\"><a id=\"l00519\" name=\"l00519\"></a><span class=\"lineno\">  519</span>    Sdc::Scheme&lt;SCHEME&gt; scheme(_refiner._subdivOptions);</div>\n+<div class=\"line\"><a id=\"l00520\" name=\"l00520\"></a><span class=\"lineno\">  520</span> </div>\n+<div class=\"line\"><a id=\"l00521\" name=\"l00521\"></a><span class=\"lineno\">  521</span>    Vtr::internal::EdgeInterface eHood(parent);</div>\n+<div class=\"line\"><a id=\"l00522\" name=\"l00522\"></a><span class=\"lineno\">  522</span> </div>\n+<div class=\"line\"><a id=\"l00523\" name=\"l00523\"></a><span class=\"lineno\">  523</span>    Weight                               eVertWeights[2];</div>\n+<div class=\"line\"><a id=\"l00524\" name=\"l00524\"></a><span class=\"lineno\">  524</span>    Vtr::internal::StackBuffer&lt;Weight,8&gt; eFaceWeights(parent.getMaxEdgeFaces());</div>\n+<div class=\"line\"><a id=\"l00525\" name=\"l00525\"></a><span class=\"lineno\">  525</span> </div>\n+<div class=\"line\"><a id=\"l00526\" name=\"l00526\"></a><span class=\"lineno\">  526</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> edge = 0; edge &lt; parent.getNumEdges(); ++edge) {</div>\n+<div class=\"line\"><a id=\"l00527\" name=\"l00527\"></a><span class=\"lineno\">  527</span> </div>\n+<div class=\"line\"><a id=\"l00528\" name=\"l00528\"></a><span class=\"lineno\">  528</span>        <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a> cVert = refinement.getEdgeChildVertex(edge);</div>\n+<div class=\"line\"><a id=\"l00529\" name=\"l00529\"></a><span class=\"lineno\">  529</span>        <span class=\"keywordflow\">if</span> (!<a class=\"code hl_function\" href=\"a00909.html#a98af1cee938a3f984af1e7e9a205080c\">Vtr::IndexIsValid</a>(cVert))</div>\n+<div class=\"line\"><a id=\"l00530\" name=\"l00530\"></a><span class=\"lineno\">  530</span>            <span class=\"keywordflow\">continue</span>;</div>\n+<div class=\"line\"><a id=\"l00531\" name=\"l00531\"></a><span class=\"lineno\">  531</span> </div>\n+<div class=\"line\"><a id=\"l00532\" name=\"l00532\"></a><span class=\"lineno\">  532</span>        <span class=\"comment\">//  Declare and compute mask weights for this vertex relative to its parent edge:</span></div>\n+<div class=\"line\"><a id=\"l00533\" name=\"l00533\"></a><span class=\"lineno\">  533</span>        <a class=\"code hl_typedef\" href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">ConstIndexArray</a> eVerts = parent.getEdgeVertices(edge),</div>\n+<div class=\"line\"><a id=\"l00534\" name=\"l00534\"></a><span class=\"lineno\">  534</span>                        eFaces = parent.getEdgeFaces(edge);</div>\n+<div class=\"line\"><a id=\"l00535\" name=\"l00535\"></a><span class=\"lineno\">  535</span> </div>\n+<div class=\"line\"><a id=\"l00536\" name=\"l00536\"></a><span class=\"lineno\">  536</span>        Mask eMask(eVertWeights, 0, eFaceWeights);</div>\n+<div class=\"line\"><a id=\"l00537\" name=\"l00537\"></a><span class=\"lineno\">  537</span> </div>\n+<div class=\"line\"><a id=\"l00538\" name=\"l00538\"></a><span class=\"lineno\">  538</span>        eHood.SetIndex(edge);</div>\n+<div class=\"line\"><a id=\"l00539\" name=\"l00539\"></a><span class=\"lineno\">  539</span> </div>\n+<div class=\"line\"><a id=\"l00540\" name=\"l00540\"></a><span class=\"lineno\">  540</span>        <a class=\"code hl_enumeration\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78\">Sdc::Crease::Rule</a> pRule = (parent.getEdgeSharpness(edge) &gt; 0.0f) ? <a class=\"code hl_enumvalue\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78a966fa1ae8aeb8587c498cf6a92cc3335\">Sdc::Crease::RULE_CREASE</a> : Sdc::Crease::RULE_SMOOTH;</div>\n+<div class=\"line\"><a id=\"l00541\" name=\"l00541\"></a><span class=\"lineno\">  541</span>        <a class=\"code hl_enumeration\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78\">Sdc::Crease::Rule</a> cRule = child.getVertexRule(cVert);</div>\n+<div class=\"line\"><a id=\"l00542\" name=\"l00542\"></a><span class=\"lineno\">  542</span> </div>\n+<div class=\"line\"><a id=\"l00543\" name=\"l00543\"></a><span class=\"lineno\">  543</span>        scheme.ComputeEdgeVertexMask(eHood, eMask, pRule, cRule);</div>\n+<div class=\"line\"><a id=\"l00544\" name=\"l00544\"></a><span class=\"lineno\">  544</span> </div>\n+<div class=\"line\"><a id=\"l00545\" name=\"l00545\"></a><span class=\"lineno\">  545</span>        <span class=\"comment\">//  Apply the weights to the parent edges&#39;s vertices and (if applicable) to</span></div>\n+<div class=\"line\"><a id=\"l00546\" name=\"l00546\"></a><span class=\"lineno\">  546</span>        <span class=\"comment\">//  the child vertices of its incident faces:</span></div>\n+<div class=\"line\"><a id=\"l00547\" name=\"l00547\"></a><span class=\"lineno\">  547</span>        dst[cVert].Clear();</div>\n+<div class=\"line\"><a id=\"l00548\" name=\"l00548\"></a><span class=\"lineno\">  548</span>        dst[cVert].AddWithWeight(src[eVerts[0]], eVertWeights[0]);</div>\n+<div class=\"line\"><a id=\"l00549\" name=\"l00549\"></a><span class=\"lineno\">  549</span>        dst[cVert].AddWithWeight(src[eVerts[1]], eVertWeights[1]);</div>\n+<div class=\"line\"><a id=\"l00550\" name=\"l00550\"></a><span class=\"lineno\">  550</span> </div>\n+<div class=\"line\"><a id=\"l00551\" name=\"l00551\"></a><span class=\"lineno\">  551</span>        <span class=\"keywordflow\">if</span> (eMask.GetNumFaceWeights() &gt; 0) {</div>\n+<div class=\"line\"><a id=\"l00552\" name=\"l00552\"></a><span class=\"lineno\">  552</span> </div>\n+<div class=\"line\"><a id=\"l00553\" name=\"l00553\"></a><span class=\"lineno\">  553</span>            <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; eFaces.size(); ++i) {</div>\n+<div class=\"line\"><a id=\"l00554\" name=\"l00554\"></a><span class=\"lineno\">  554</span> </div>\n+<div class=\"line\"><a id=\"l00555\" name=\"l00555\"></a><span class=\"lineno\">  555</span>                <span class=\"keywordflow\">if</span> (eMask.AreFaceWeightsForFaceCenters()) {</div>\n+<div class=\"line\"><a id=\"l00556\" name=\"l00556\"></a><span class=\"lineno\">  556</span>                    assert(refinement.getNumChildVerticesFromFaces() &gt; 0);</div>\n+<div class=\"line\"><a id=\"l00557\" name=\"l00557\"></a><span class=\"lineno\">  557</span>                    <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a> cVertOfFace = refinement.getFaceChildVertex(eFaces[i]);</div>\n+<div class=\"line\"><a id=\"l00558\" name=\"l00558\"></a><span class=\"lineno\">  558</span> </div>\n+<div class=\"line\"><a id=\"l00559\" name=\"l00559\"></a><span class=\"lineno\">  559</span>                    assert(<a class=\"code hl_function\" href=\"a00909.html#a98af1cee938a3f984af1e7e9a205080c\">Vtr::IndexIsValid</a>(cVertOfFace));</div>\n+<div class=\"line\"><a id=\"l00560\" name=\"l00560\"></a><span class=\"lineno\">  560</span>                    dst[cVert].AddWithWeight(dst[cVertOfFace], eFaceWeights[i]);</div>\n+<div class=\"line\"><a id=\"l00561\" name=\"l00561\"></a><span class=\"lineno\">  561</span>                } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00562\" name=\"l00562\"></a><span class=\"lineno\">  562</span>                    <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a>            pFace      = eFaces[i];</div>\n+<div class=\"line\"><a id=\"l00563\" name=\"l00563\"></a><span class=\"lineno\">  563</span>                    <a class=\"code hl_typedef\" href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">ConstIndexArray</a> pFaceEdges = parent.getFaceEdges(pFace),</div>\n+<div class=\"line\"><a id=\"l00564\" name=\"l00564\"></a><span class=\"lineno\">  564</span>                                    pFaceVerts = parent.getFaceVertices(pFace);</div>\n+<div class=\"line\"><a id=\"l00565\" name=\"l00565\"></a><span class=\"lineno\">  565</span> </div>\n+<div class=\"line\"><a id=\"l00566\" name=\"l00566\"></a><span class=\"lineno\">  566</span>                    <span class=\"keywordtype\">int</span> eInFace = 0;</div>\n+<div class=\"line\"><a id=\"l00567\" name=\"l00567\"></a><span class=\"lineno\">  567</span>                    <span class=\"keywordflow\">for</span> ( ; pFaceEdges[eInFace] != edge; ++eInFace ) ;</div>\n+<div class=\"line\"><a id=\"l00568\" name=\"l00568\"></a><span class=\"lineno\">  568</span> </div>\n+<div class=\"line\"><a id=\"l00569\" name=\"l00569\"></a><span class=\"lineno\">  569</span>                    <span class=\"keywordtype\">int</span> vInFace = eInFace + 2;</div>\n+<div class=\"line\"><a id=\"l00570\" name=\"l00570\"></a><span class=\"lineno\">  570</span>                    <span class=\"keywordflow\">if</span> (vInFace &gt;= pFaceVerts.size()) vInFace -= pFaceVerts.<a class=\"code hl_function\" href=\"a01353.html#a60304b65bf89363bcc3165d3cde67f86\">size</a>();</div>\n+<div class=\"line\"><a id=\"l00571\" name=\"l00571\"></a><span class=\"lineno\">  571</span> </div>\n+<div class=\"line\"><a id=\"l00572\" name=\"l00572\"></a><span class=\"lineno\">  572</span>                    <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a> pVertNext = pFaceVerts[vInFace];</div>\n+<div class=\"line\"><a id=\"l00573\" name=\"l00573\"></a><span class=\"lineno\">  573</span>                    dst[cVert].AddWithWeight(src[pVertNext], eFaceWeights[i]);</div>\n+<div class=\"line\"><a id=\"l00574\" name=\"l00574\"></a><span class=\"lineno\">  574</span>                }</div>\n+<div class=\"line\"><a id=\"l00575\" name=\"l00575\"></a><span class=\"lineno\">  575</span>            }</div>\n+<div class=\"line\"><a id=\"l00576\" name=\"l00576\"></a><span class=\"lineno\">  576</span>        }</div>\n+<div class=\"line\"><a id=\"l00577\" name=\"l00577\"></a><span class=\"lineno\">  577</span>    }</div>\n+<div class=\"line\"><a id=\"l00578\" name=\"l00578\"></a><span class=\"lineno\">  578</span>}</div>\n+<div class=\"line\"><a id=\"l00579\" name=\"l00579\"></a><span class=\"lineno\">  579</span> </div>\n+<div class=\"line\"><a id=\"l00580\" name=\"l00580\"></a><span class=\"lineno\">  580</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00581\" name=\"l00581\"></a><span class=\"lineno\">  581</span><span class=\"keyword\">template</span> &lt;Sdc::SchemeType SCHEME, <span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt;</div>\n+<div class=\"line\"><a id=\"l00582\" name=\"l00582\"></a><span class=\"lineno\">  582</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"line\"><a id=\"l00583\" name=\"l00583\"></a><span class=\"lineno\">  583</span>PrimvarRefinerReal&lt;REAL&gt;::interpFromVerts(<span class=\"keywordtype\">int</span> level, T <span class=\"keyword\">const</span> &amp; src, U &amp; dst)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00584\" name=\"l00584\"></a><span class=\"lineno\">  584</span> </div>\n+<div class=\"line\"><a id=\"l00585\" name=\"l00585\"></a><span class=\"lineno\">  585</span>    Vtr::internal::Refinement <span class=\"keyword\">const</span> &amp; refinement = _refiner.getRefinement(level-1);</div>\n+<div class=\"line\"><a id=\"l00586\" name=\"l00586\"></a><span class=\"lineno\">  586</span>    Vtr::internal::Level <span class=\"keyword\">const</span> &amp;      parent     = refinement.parent();</div>\n+<div class=\"line\"><a id=\"l00587\" name=\"l00587\"></a><span class=\"lineno\">  587</span>    Vtr::internal::Level <span class=\"keyword\">const</span> &amp;      child      = refinement.child();</div>\n+<div class=\"line\"><a id=\"l00588\" name=\"l00588\"></a><span class=\"lineno\">  588</span> </div>\n+<div class=\"line\"><a id=\"l00589\" name=\"l00589\"></a><span class=\"lineno\">  589</span>    Sdc::Scheme&lt;SCHEME&gt; scheme(_refiner._subdivOptions);</div>\n+<div class=\"line\"><a id=\"l00590\" name=\"l00590\"></a><span class=\"lineno\">  590</span> </div>\n+<div class=\"line\"><a id=\"l00591\" name=\"l00591\"></a><span class=\"lineno\">  591</span>    Vtr::internal::VertexInterface vHood(parent, child);</div>\n+<div class=\"line\"><a id=\"l00592\" name=\"l00592\"></a><span class=\"lineno\">  592</span> </div>\n+<div class=\"line\"><a id=\"l00593\" name=\"l00593\"></a><span class=\"lineno\">  593</span>    Vtr::internal::StackBuffer&lt;Weight,32&gt; weightBuffer(2*parent.getMaxValence());</div>\n+<div class=\"line\"><a id=\"l00594\" name=\"l00594\"></a><span class=\"lineno\">  594</span> </div>\n+<div class=\"line\"><a id=\"l00595\" name=\"l00595\"></a><span class=\"lineno\">  595</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> vert = 0; vert &lt; parent.getNumVertices(); ++vert) {</div>\n+<div class=\"line\"><a id=\"l00596\" name=\"l00596\"></a><span class=\"lineno\">  596</span> </div>\n+<div class=\"line\"><a id=\"l00597\" name=\"l00597\"></a><span class=\"lineno\">  597</span>        <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a> cVert = refinement.getVertexChildVertex(vert);</div>\n+<div class=\"line\"><a id=\"l00598\" name=\"l00598\"></a><span class=\"lineno\">  598</span>        <span class=\"keywordflow\">if</span> (!<a class=\"code hl_function\" href=\"a00909.html#a98af1cee938a3f984af1e7e9a205080c\">Vtr::IndexIsValid</a>(cVert))</div>\n+<div class=\"line\"><a id=\"l00599\" name=\"l00599\"></a><span class=\"lineno\">  599</span>            <span class=\"keywordflow\">continue</span>;</div>\n+<div class=\"line\"><a id=\"l00600\" name=\"l00600\"></a><span class=\"lineno\">  600</span> </div>\n+<div class=\"line\"><a id=\"l00601\" name=\"l00601\"></a><span class=\"lineno\">  601</span>        <span class=\"comment\">//  Declare and compute mask weights for this vertex relative to its parent edge:</span></div>\n+<div class=\"line\"><a id=\"l00602\" name=\"l00602\"></a><span class=\"lineno\">  602</span>        <a class=\"code hl_typedef\" href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">ConstIndexArray</a> vEdges = parent.getVertexEdges(vert),</div>\n+<div class=\"line\"><a id=\"l00603\" name=\"l00603\"></a><span class=\"lineno\">  603</span>                        vFaces = parent.getVertexFaces(vert);</div>\n+<div class=\"line\"><a id=\"l00604\" name=\"l00604\"></a><span class=\"lineno\">  604</span> </div>\n+<div class=\"line\"><a id=\"l00605\" name=\"l00605\"></a><span class=\"lineno\">  605</span>        Weight   vVertWeight,</div>\n+<div class=\"line\"><a id=\"l00606\" name=\"l00606\"></a><span class=\"lineno\">  606</span>               * vEdgeWeights = weightBuffer,</div>\n+<div class=\"line\"><a id=\"l00607\" name=\"l00607\"></a><span class=\"lineno\">  607</span>               * vFaceWeights = vEdgeWeights + vEdges.<a class=\"code hl_function\" href=\"a01353.html#a60304b65bf89363bcc3165d3cde67f86\">size</a>();</div>\n+<div class=\"line\"><a id=\"l00608\" name=\"l00608\"></a><span class=\"lineno\">  608</span> </div>\n+<div class=\"line\"><a id=\"l00609\" name=\"l00609\"></a><span class=\"lineno\">  609</span>        Mask vMask(&amp;vVertWeight, vEdgeWeights, vFaceWeights);</div>\n+<div class=\"line\"><a id=\"l00610\" name=\"l00610\"></a><span class=\"lineno\">  610</span> </div>\n+<div class=\"line\"><a id=\"l00611\" name=\"l00611\"></a><span class=\"lineno\">  611</span>        vHood.SetIndex(vert, cVert);</div>\n+<div class=\"line\"><a id=\"l00612\" name=\"l00612\"></a><span class=\"lineno\">  612</span> </div>\n+<div class=\"line\"><a id=\"l00613\" name=\"l00613\"></a><span class=\"lineno\">  613</span>        <a class=\"code hl_enumeration\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78\">Sdc::Crease::Rule</a> pRule = parent.getVertexRule(vert);</div>\n+<div class=\"line\"><a id=\"l00614\" name=\"l00614\"></a><span class=\"lineno\">  614</span>        <a class=\"code hl_enumeration\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78\">Sdc::Crease::Rule</a> cRule = child.getVertexRule(cVert);</div>\n+<div class=\"line\"><a id=\"l00615\" name=\"l00615\"></a><span class=\"lineno\">  615</span> </div>\n+<div class=\"line\"><a id=\"l00616\" name=\"l00616\"></a><span class=\"lineno\">  616</span>        scheme.ComputeVertexVertexMask(vHood, vMask, pRule, cRule);</div>\n+<div class=\"line\"><a id=\"l00617\" name=\"l00617\"></a><span class=\"lineno\">  617</span> </div>\n+<div class=\"line\"><a id=\"l00618\" name=\"l00618\"></a><span class=\"lineno\">  618</span>        <span class=\"comment\">//  Apply the weights to the parent vertex, the vertices opposite its incident</span></div>\n+<div class=\"line\"><a id=\"l00619\" name=\"l00619\"></a><span class=\"lineno\">  619</span>        <span class=\"comment\">//  edges, and the child vertices of its incident faces:</span></div>\n+<div class=\"line\"><a id=\"l00620\" name=\"l00620\"></a><span class=\"lineno\">  620</span>        <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00621\" name=\"l00621\"></a><span class=\"lineno\">  621</span>        <span class=\"comment\">//  In order to improve numerical precision, it&#39;s better to apply smaller weights</span></div>\n+<div class=\"line\"><a id=\"l00622\" name=\"l00622\"></a><span class=\"lineno\">  622</span>        <span class=\"comment\">//  first, so begin with the face-weights followed by the edge-weights and the</span></div>\n+<div class=\"line\"><a id=\"l00623\" name=\"l00623\"></a><span class=\"lineno\">  623</span>        <span class=\"comment\">//  vertex weight last.</span></div>\n+<div class=\"line\"><a id=\"l00624\" name=\"l00624\"></a><span class=\"lineno\">  624</span>        dst[cVert].Clear();</div>\n+<div class=\"line\"><a id=\"l00625\" name=\"l00625\"></a><span class=\"lineno\">  625</span> </div>\n+<div class=\"line\"><a id=\"l00626\" name=\"l00626\"></a><span class=\"lineno\">  626</span>        <span class=\"keywordflow\">if</span> (vMask.GetNumFaceWeights() &gt; 0) {</div>\n+<div class=\"line\"><a id=\"l00627\" name=\"l00627\"></a><span class=\"lineno\">  627</span>            assert(vMask.AreFaceWeightsForFaceCenters());</div>\n+<div class=\"line\"><a id=\"l00628\" name=\"l00628\"></a><span class=\"lineno\">  628</span> </div>\n+<div class=\"line\"><a id=\"l00629\" name=\"l00629\"></a><span class=\"lineno\">  629</span>            <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; vFaces.size(); ++i) {</div>\n+<div class=\"line\"><a id=\"l00630\" name=\"l00630\"></a><span class=\"lineno\">  630</span> </div>\n+<div class=\"line\"><a id=\"l00631\" name=\"l00631\"></a><span class=\"lineno\">  631</span>                <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a> cVertOfFace = refinement.getFaceChildVertex(vFaces[i]);</div>\n+<div class=\"line\"><a id=\"l00632\" name=\"l00632\"></a><span class=\"lineno\">  632</span>                assert(<a class=\"code hl_function\" href=\"a00909.html#a98af1cee938a3f984af1e7e9a205080c\">Vtr::IndexIsValid</a>(cVertOfFace));</div>\n+<div class=\"line\"><a id=\"l00633\" name=\"l00633\"></a><span class=\"lineno\">  633</span>                dst[cVert].AddWithWeight(dst[cVertOfFace], vFaceWeights[i]);</div>\n+<div class=\"line\"><a id=\"l00634\" name=\"l00634\"></a><span class=\"lineno\">  634</span>            }</div>\n+<div class=\"line\"><a id=\"l00635\" name=\"l00635\"></a><span class=\"lineno\">  635</span>        }</div>\n+<div class=\"line\"><a id=\"l00636\" name=\"l00636\"></a><span class=\"lineno\">  636</span>        <span class=\"keywordflow\">if</span> (vMask.GetNumEdgeWeights() &gt; 0) {</div>\n+<div class=\"line\"><a id=\"l00637\" name=\"l00637\"></a><span class=\"lineno\">  637</span> </div>\n+<div class=\"line\"><a id=\"l00638\" name=\"l00638\"></a><span class=\"lineno\">  638</span>            <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; vEdges.size(); ++i) {</div>\n+<div class=\"line\"><a id=\"l00639\" name=\"l00639\"></a><span class=\"lineno\">  639</span> </div>\n+<div class=\"line\"><a id=\"l00640\" name=\"l00640\"></a><span class=\"lineno\">  640</span>                <a class=\"code hl_typedef\" href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">ConstIndexArray</a> eVerts = parent.getEdgeVertices(vEdges[i]);</div>\n+<div class=\"line\"><a id=\"l00641\" name=\"l00641\"></a><span class=\"lineno\">  641</span>                <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a> pVertOppositeEdge = (eVerts[0] == vert) ? eVerts[1] : eVerts[0];</div>\n+<div class=\"line\"><a id=\"l00642\" name=\"l00642\"></a><span class=\"lineno\">  642</span> </div>\n+<div class=\"line\"><a id=\"l00643\" name=\"l00643\"></a><span class=\"lineno\">  643</span>                dst[cVert].AddWithWeight(src[pVertOppositeEdge], vEdgeWeights[i]);</div>\n+<div class=\"line\"><a id=\"l00644\" name=\"l00644\"></a><span class=\"lineno\">  644</span>            }</div>\n+<div class=\"line\"><a id=\"l00645\" name=\"l00645\"></a><span class=\"lineno\">  645</span>        }</div>\n+<div class=\"line\"><a id=\"l00646\" name=\"l00646\"></a><span class=\"lineno\">  646</span>        dst[cVert].AddWithWeight(src[vert], vVertWeight);</div>\n+<div class=\"line\"><a id=\"l00647\" name=\"l00647\"></a><span class=\"lineno\">  647</span>    }</div>\n+<div class=\"line\"><a id=\"l00648\" name=\"l00648\"></a><span class=\"lineno\">  648</span>}</div>\n+<div class=\"line\"><a id=\"l00649\" name=\"l00649\"></a><span class=\"lineno\">  649</span> </div>\n+<div class=\"line\"><a id=\"l00650\" name=\"l00650\"></a><span class=\"lineno\">  650</span> </div>\n+<div class=\"line\"><a id=\"l00651\" name=\"l00651\"></a><span class=\"lineno\">  651</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00652\" name=\"l00652\"></a><span class=\"lineno\">  652</span><span class=\"comment\">// Internal face-varying implementation details:</span></div>\n+<div class=\"line\"><a id=\"l00653\" name=\"l00653\"></a><span class=\"lineno\">  653</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00654\" name=\"l00654\"></a><span class=\"lineno\">  654</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00655\" name=\"l00655\"></a><span class=\"lineno\">  655</span><span class=\"keyword\">template</span> &lt;Sdc::SchemeType SCHEME, <span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt;</div>\n+<div class=\"line\"><a id=\"l00656\" name=\"l00656\"></a><span class=\"lineno\">  656</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"line\"><a id=\"l00657\" name=\"l00657\"></a><span class=\"lineno\">  657</span>PrimvarRefinerReal&lt;REAL&gt;::interpFVarFromFaces(<span class=\"keywordtype\">int</span> level, T <span class=\"keyword\">const</span> &amp; src, U &amp; dst, <span class=\"keywordtype\">int</span> channel)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00658\" name=\"l00658\"></a><span class=\"lineno\">  658</span> </div>\n+<div class=\"line\"><a id=\"l00659\" name=\"l00659\"></a><span class=\"lineno\">  659</span>    Vtr::internal::Refinement <span class=\"keyword\">const</span> &amp; refinement = _refiner.getRefinement(level-1);</div>\n+<div class=\"line\"><a id=\"l00660\" name=\"l00660\"></a><span class=\"lineno\">  660</span> </div>\n+<div class=\"line\"><a id=\"l00661\" name=\"l00661\"></a><span class=\"lineno\">  661</span>    <span class=\"keywordflow\">if</span> (refinement.getNumChildVerticesFromFaces() == 0) <span class=\"keywordflow\">return</span>;</div>\n+<div class=\"line\"><a id=\"l00662\" name=\"l00662\"></a><span class=\"lineno\">  662</span> </div>\n+<div class=\"line\"><a id=\"l00663\" name=\"l00663\"></a><span class=\"lineno\">  663</span>    Sdc::Scheme&lt;SCHEME&gt; scheme(_refiner._subdivOptions);</div>\n+<div class=\"line\"><a id=\"l00664\" name=\"l00664\"></a><span class=\"lineno\">  664</span> </div>\n+<div class=\"line\"><a id=\"l00665\" name=\"l00665\"></a><span class=\"lineno\">  665</span>    Vtr::internal::Level <span class=\"keyword\">const</span> &amp; parentLevel = refinement.parent();</div>\n+<div class=\"line\"><a id=\"l00666\" name=\"l00666\"></a><span class=\"lineno\">  666</span>    Vtr::internal::Level <span class=\"keyword\">const</span> &amp; childLevel  = refinement.child();</div>\n+<div class=\"line\"><a id=\"l00667\" name=\"l00667\"></a><span class=\"lineno\">  667</span> </div>\n+<div class=\"line\"><a id=\"l00668\" name=\"l00668\"></a><span class=\"lineno\">  668</span>    Vtr::internal::FVarLevel <span class=\"keyword\">const</span> &amp; parentFVar = parentLevel.getFVarLevel(channel);</div>\n+<div class=\"line\"><a id=\"l00669\" name=\"l00669\"></a><span class=\"lineno\">  669</span>    Vtr::internal::FVarLevel <span class=\"keyword\">const</span> &amp; childFVar  = childLevel.getFVarLevel(channel);</div>\n+<div class=\"line\"><a id=\"l00670\" name=\"l00670\"></a><span class=\"lineno\">  670</span> </div>\n+<div class=\"line\"><a id=\"l00671\" name=\"l00671\"></a><span class=\"lineno\">  671</span>    Vtr::internal::StackBuffer&lt;Weight,16&gt; fValueWeights(parentLevel.getMaxValence());</div>\n+<div class=\"line\"><a id=\"l00672\" name=\"l00672\"></a><span class=\"lineno\">  672</span> </div>\n+<div class=\"line\"><a id=\"l00673\" name=\"l00673\"></a><span class=\"lineno\">  673</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> face = 0; face &lt; parentLevel.getNumFaces(); ++face) {</div>\n+<div class=\"line\"><a id=\"l00674\" name=\"l00674\"></a><span class=\"lineno\">  674</span> </div>\n+<div class=\"line\"><a id=\"l00675\" name=\"l00675\"></a><span class=\"lineno\">  675</span>        <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a> cVert = refinement.getFaceChildVertex(face);</div>\n+<div class=\"line\"><a id=\"l00676\" name=\"l00676\"></a><span class=\"lineno\">  676</span>        <span class=\"keywordflow\">if</span> (!<a class=\"code hl_function\" href=\"a00909.html#a98af1cee938a3f984af1e7e9a205080c\">Vtr::IndexIsValid</a>(cVert))</div>\n+<div class=\"line\"><a id=\"l00677\" name=\"l00677\"></a><span class=\"lineno\">  677</span>            <span class=\"keywordflow\">continue</span>;</div>\n+<div class=\"line\"><a id=\"l00678\" name=\"l00678\"></a><span class=\"lineno\">  678</span> </div>\n+<div class=\"line\"><a id=\"l00679\" name=\"l00679\"></a><span class=\"lineno\">  679</span>        <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a> cVertValue = childFVar.getVertexValueOffset(cVert);</div>\n+<div class=\"line\"><a id=\"l00680\" name=\"l00680\"></a><span class=\"lineno\">  680</span> </div>\n+<div class=\"line\"><a id=\"l00681\" name=\"l00681\"></a><span class=\"lineno\">  681</span>        <span class=\"comment\">//  The only difference for face-varying here is that we get the values associated</span></div>\n+<div class=\"line\"><a id=\"l00682\" name=\"l00682\"></a><span class=\"lineno\">  682</span>        <span class=\"comment\">//  with each face-vertex directly from the FVarLevel, rather than using the parent</span></div>\n+<div class=\"line\"><a id=\"l00683\" name=\"l00683\"></a><span class=\"lineno\">  683</span>        <span class=\"comment\">//  face-vertices directly.  If any face-vertex has any sibling values, then we may</span></div>\n+<div class=\"line\"><a id=\"l00684\" name=\"l00684\"></a><span class=\"lineno\">  684</span>        <span class=\"comment\">//  get the wrong one using the face-vertex index directly.</span></div>\n+<div class=\"line\"><a id=\"l00685\" name=\"l00685\"></a><span class=\"lineno\">  685</span> </div>\n+<div class=\"line\"><a id=\"l00686\" name=\"l00686\"></a><span class=\"lineno\">  686</span>        <span class=\"comment\">//  Declare and compute mask weights for this vertex relative to its parent face:</span></div>\n+<div class=\"line\"><a id=\"l00687\" name=\"l00687\"></a><span class=\"lineno\">  687</span>        <a class=\"code hl_typedef\" href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">ConstIndexArray</a> fValues = parentFVar.getFaceValues(face);</div>\n+<div class=\"line\"><a id=\"l00688\" name=\"l00688\"></a><span class=\"lineno\">  688</span> </div>\n+<div class=\"line\"><a id=\"l00689\" name=\"l00689\"></a><span class=\"lineno\">  689</span>        Mask fMask(fValueWeights, 0, 0);</div>\n+<div class=\"line\"><a id=\"l00690\" name=\"l00690\"></a><span class=\"lineno\">  690</span>        Vtr::internal::FaceInterface fHood(fValues.size());</div>\n+<div class=\"line\"><a id=\"l00691\" name=\"l00691\"></a><span class=\"lineno\">  691</span> </div>\n+<div class=\"line\"><a id=\"l00692\" name=\"l00692\"></a><span class=\"lineno\">  692</span>        scheme.ComputeFaceVertexMask(fHood, fMask);</div>\n+<div class=\"line\"><a id=\"l00693\" name=\"l00693\"></a><span class=\"lineno\">  693</span> </div>\n+<div class=\"line\"><a id=\"l00694\" name=\"l00694\"></a><span class=\"lineno\">  694</span>        <span class=\"comment\">//  Apply the weights to the parent face&#39;s vertices:</span></div>\n+<div class=\"line\"><a id=\"l00695\" name=\"l00695\"></a><span class=\"lineno\">  695</span>        dst[cVertValue].Clear();</div>\n+<div class=\"line\"><a id=\"l00696\" name=\"l00696\"></a><span class=\"lineno\">  696</span> </div>\n+<div class=\"line\"><a id=\"l00697\" name=\"l00697\"></a><span class=\"lineno\">  697</span>        <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; fValues.size(); ++i) {</div>\n+<div class=\"line\"><a id=\"l00698\" name=\"l00698\"></a><span class=\"lineno\">  698</span>            dst[cVertValue].AddWithWeight(src[fValues[i]], fValueWeights[i]);</div>\n+<div class=\"line\"><a id=\"l00699\" name=\"l00699\"></a><span class=\"lineno\">  699</span>        }</div>\n+<div class=\"line\"><a id=\"l00700\" name=\"l00700\"></a><span class=\"lineno\">  700</span>    }</div>\n+<div class=\"line\"><a id=\"l00701\" name=\"l00701\"></a><span class=\"lineno\">  701</span>}</div>\n+<div class=\"line\"><a id=\"l00702\" name=\"l00702\"></a><span class=\"lineno\">  702</span> </div>\n+<div class=\"line\"><a id=\"l00703\" name=\"l00703\"></a><span class=\"lineno\">  703</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00704\" name=\"l00704\"></a><span class=\"lineno\">  704</span><span class=\"keyword\">template</span> &lt;Sdc::SchemeType SCHEME, <span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt;</div>\n+<div class=\"line\"><a id=\"l00705\" name=\"l00705\"></a><span class=\"lineno\">  705</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"line\"><a id=\"l00706\" name=\"l00706\"></a><span class=\"lineno\">  706</span>PrimvarRefinerReal&lt;REAL&gt;::interpFVarFromEdges(<span class=\"keywordtype\">int</span> level, T <span class=\"keyword\">const</span> &amp; src, U &amp; dst, <span class=\"keywordtype\">int</span> channel)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00707\" name=\"l00707\"></a><span class=\"lineno\">  707</span> </div>\n+<div class=\"line\"><a id=\"l00708\" name=\"l00708\"></a><span class=\"lineno\">  708</span>    Vtr::internal::Refinement <span class=\"keyword\">const</span> &amp; refinement = _refiner.getRefinement(level-1);</div>\n+<div class=\"line\"><a id=\"l00709\" name=\"l00709\"></a><span class=\"lineno\">  709</span> </div>\n+<div class=\"line\"><a id=\"l00710\" name=\"l00710\"></a><span class=\"lineno\">  710</span>    Sdc::Scheme&lt;SCHEME&gt; scheme(_refiner._subdivOptions);</div>\n+<div class=\"line\"><a id=\"l00711\" name=\"l00711\"></a><span class=\"lineno\">  711</span> </div>\n+<div class=\"line\"><a id=\"l00712\" name=\"l00712\"></a><span class=\"lineno\">  712</span>    Vtr::internal::Level <span class=\"keyword\">const</span> &amp; parentLevel = refinement.parent();</div>\n+<div class=\"line\"><a id=\"l00713\" name=\"l00713\"></a><span class=\"lineno\">  713</span>    Vtr::internal::Level <span class=\"keyword\">const</span> &amp; childLevel  = refinement.child();</div>\n+<div class=\"line\"><a id=\"l00714\" name=\"l00714\"></a><span class=\"lineno\">  714</span> </div>\n+<div class=\"line\"><a id=\"l00715\" name=\"l00715\"></a><span class=\"lineno\">  715</span>    Vtr::internal::FVarRefinement <span class=\"keyword\">const</span> &amp; refineFVar = refinement.getFVarRefinement(channel);</div>\n+<div class=\"line\"><a id=\"l00716\" name=\"l00716\"></a><span class=\"lineno\">  716</span>    Vtr::internal::FVarLevel <span class=\"keyword\">const</span> &amp;      parentFVar = parentLevel.getFVarLevel(channel);</div>\n+<div class=\"line\"><a id=\"l00717\" name=\"l00717\"></a><span class=\"lineno\">  717</span>    Vtr::internal::FVarLevel <span class=\"keyword\">const</span> &amp;      childFVar  = childLevel.getFVarLevel(channel);</div>\n+<div class=\"line\"><a id=\"l00718\" name=\"l00718\"></a><span class=\"lineno\">  718</span> </div>\n+<div class=\"line\"><a id=\"l00719\" name=\"l00719\"></a><span class=\"lineno\">  719</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00720\" name=\"l00720\"></a><span class=\"lineno\">  720</span>    <span class=\"comment\">//  Allocate and initialize (if linearly interpolated) interpolation weights for</span></div>\n+<div class=\"line\"><a id=\"l00721\" name=\"l00721\"></a><span class=\"lineno\">  721</span>    <span class=\"comment\">//  the edge mask:</span></div>\n+<div class=\"line\"><a id=\"l00722\" name=\"l00722\"></a><span class=\"lineno\">  722</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00723\" name=\"l00723\"></a><span class=\"lineno\">  723</span>    Weight                               eVertWeights[2];</div>\n+<div class=\"line\"><a id=\"l00724\" name=\"l00724\"></a><span class=\"lineno\">  724</span>    Vtr::internal::StackBuffer&lt;Weight,8&gt; eFaceWeights(parentLevel.getMaxEdgeFaces());</div>\n+<div class=\"line\"><a id=\"l00725\" name=\"l00725\"></a><span class=\"lineno\">  725</span> </div>\n+<div class=\"line\"><a id=\"l00726\" name=\"l00726\"></a><span class=\"lineno\">  726</span>    Mask eMask(eVertWeights, 0, eFaceWeights);</div>\n+<div class=\"line\"><a id=\"l00727\" name=\"l00727\"></a><span class=\"lineno\">  727</span> </div>\n+<div class=\"line\"><a id=\"l00728\" name=\"l00728\"></a><span class=\"lineno\">  728</span>    <span class=\"keywordtype\">bool</span> isLinearFVar = parentFVar.isLinear() || (_refiner._subdivType == <a class=\"code hl_enumvalue\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833da02558f420bac2d6bd3f8411d4b3957a0\">Sdc::SCHEME_BILINEAR</a>);</div>\n+<div class=\"line\"><a id=\"l00729\" name=\"l00729\"></a><span class=\"lineno\">  729</span>    <span class=\"keywordflow\">if</span> (isLinearFVar) {</div>\n+<div class=\"line\"><a id=\"l00730\" name=\"l00730\"></a><span class=\"lineno\">  730</span>        eMask.SetNumVertexWeights(2);</div>\n+<div class=\"line\"><a id=\"l00731\" name=\"l00731\"></a><span class=\"lineno\">  731</span>        eMask.SetNumEdgeWeights(0);</div>\n+<div class=\"line\"><a id=\"l00732\" name=\"l00732\"></a><span class=\"lineno\">  732</span>        eMask.SetNumFaceWeights(0);</div>\n+<div class=\"line\"><a id=\"l00733\" name=\"l00733\"></a><span class=\"lineno\">  733</span> </div>\n+<div class=\"line\"><a id=\"l00734\" name=\"l00734\"></a><span class=\"lineno\">  734</span>        eVertWeights[0] = 0.5f;</div>\n+<div class=\"line\"><a id=\"l00735\" name=\"l00735\"></a><span class=\"lineno\">  735</span>        eVertWeights[1] = 0.5f;</div>\n+<div class=\"line\"><a id=\"l00736\" name=\"l00736\"></a><span class=\"lineno\">  736</span>    }</div>\n+<div class=\"line\"><a id=\"l00737\" name=\"l00737\"></a><span class=\"lineno\">  737</span> </div>\n+<div class=\"line\"><a id=\"l00738\" name=\"l00738\"></a><span class=\"lineno\">  738</span>    Vtr::internal::EdgeInterface eHood(parentLevel);</div>\n+<div class=\"line\"><a id=\"l00739\" name=\"l00739\"></a><span class=\"lineno\">  739</span> </div>\n+<div class=\"line\"><a id=\"l00740\" name=\"l00740\"></a><span class=\"lineno\">  740</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> edge = 0; edge &lt; parentLevel.getNumEdges(); ++edge) {</div>\n+<div class=\"line\"><a id=\"l00741\" name=\"l00741\"></a><span class=\"lineno\">  741</span> </div>\n+<div class=\"line\"><a id=\"l00742\" name=\"l00742\"></a><span class=\"lineno\">  742</span>        <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a> cVert = refinement.getEdgeChildVertex(edge);</div>\n+<div class=\"line\"><a id=\"l00743\" name=\"l00743\"></a><span class=\"lineno\">  743</span>        <span class=\"keywordflow\">if</span> (!<a class=\"code hl_function\" href=\"a00909.html#a98af1cee938a3f984af1e7e9a205080c\">Vtr::IndexIsValid</a>(cVert))</div>\n+<div class=\"line\"><a id=\"l00744\" name=\"l00744\"></a><span class=\"lineno\">  744</span>            <span class=\"keywordflow\">continue</span>;</div>\n+<div class=\"line\"><a id=\"l00745\" name=\"l00745\"></a><span class=\"lineno\">  745</span> </div>\n+<div class=\"line\"><a id=\"l00746\" name=\"l00746\"></a><span class=\"lineno\">  746</span>        <a class=\"code hl_typedef\" href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">ConstIndexArray</a> cVertValues = childFVar.getVertexValues(cVert);</div>\n+<div class=\"line\"><a id=\"l00747\" name=\"l00747\"></a><span class=\"lineno\">  747</span> </div>\n+<div class=\"line\"><a id=\"l00748\" name=\"l00748\"></a><span class=\"lineno\">  748</span>        <span class=\"keywordtype\">bool</span> fvarEdgeVertMatchesVertex = childFVar.valueTopologyMatches(cVertValues[0]);</div>\n+<div class=\"line\"><a id=\"l00749\" name=\"l00749\"></a><span class=\"lineno\">  749</span>        <span class=\"keywordflow\">if</span> (fvarEdgeVertMatchesVertex) {</div>\n+<div class=\"line\"><a id=\"l00750\" name=\"l00750\"></a><span class=\"lineno\">  750</span>            <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00751\" name=\"l00751\"></a><span class=\"lineno\">  751</span>            <span class=\"comment\">//  If smoothly interpolated, compute new weights for the edge mask:</span></div>\n+<div class=\"line\"><a id=\"l00752\" name=\"l00752\"></a><span class=\"lineno\">  752</span>            <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00753\" name=\"l00753\"></a><span class=\"lineno\">  753</span>            <span class=\"keywordflow\">if</span> (!isLinearFVar) {</div>\n+<div class=\"line\"><a id=\"l00754\" name=\"l00754\"></a><span class=\"lineno\">  754</span>                eHood.SetIndex(edge);</div>\n+<div class=\"line\"><a id=\"l00755\" name=\"l00755\"></a><span class=\"lineno\">  755</span> </div>\n+<div class=\"line\"><a id=\"l00756\" name=\"l00756\"></a><span class=\"lineno\">  756</span>                <a class=\"code hl_enumeration\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78\">Sdc::Crease::Rule</a> pRule = (parentLevel.getEdgeSharpness(edge) &gt; 0.0f)</div>\n+<div class=\"line\"><a id=\"l00757\" name=\"l00757\"></a><span class=\"lineno\">  757</span>                                        ? <a class=\"code hl_enumvalue\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78a966fa1ae8aeb8587c498cf6a92cc3335\">Sdc::Crease::RULE_CREASE</a> : Sdc::Crease::RULE_SMOOTH;</div>\n+<div class=\"line\"><a id=\"l00758\" name=\"l00758\"></a><span class=\"lineno\">  758</span>                <a class=\"code hl_enumeration\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78\">Sdc::Crease::Rule</a> cRule = childLevel.getVertexRule(cVert);</div>\n+<div class=\"line\"><a id=\"l00759\" name=\"l00759\"></a><span class=\"lineno\">  759</span> </div>\n+<div class=\"line\"><a id=\"l00760\" name=\"l00760\"></a><span class=\"lineno\">  760</span>                scheme.ComputeEdgeVertexMask(eHood, eMask, pRule, cRule);</div>\n+<div class=\"line\"><a id=\"l00761\" name=\"l00761\"></a><span class=\"lineno\">  761</span>            }</div>\n+<div class=\"line\"><a id=\"l00762\" name=\"l00762\"></a><span class=\"lineno\">  762</span> </div>\n+<div class=\"line\"><a id=\"l00763\" name=\"l00763\"></a><span class=\"lineno\">  763</span>            <span class=\"comment\">//  Apply the weights to the parent edge&#39;s vertices and (if applicable) to</span></div>\n+<div class=\"line\"><a id=\"l00764\" name=\"l00764\"></a><span class=\"lineno\">  764</span>            <span class=\"comment\">//  the child vertices of its incident faces:</span></div>\n+<div class=\"line\"><a id=\"l00765\" name=\"l00765\"></a><span class=\"lineno\">  765</span>            <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00766\" name=\"l00766\"></a><span class=\"lineno\">  766</span>            <span class=\"comment\">//  Even though the face-varying topology matches the vertex topology, we need</span></div>\n+<div class=\"line\"><a id=\"l00767\" name=\"l00767\"></a><span class=\"lineno\">  767</span>            <span class=\"comment\">//  to be careful here when getting values corresponding to the two end-vertices.</span></div>\n+<div class=\"line\"><a id=\"l00768\" name=\"l00768\"></a><span class=\"lineno\">  768</span>            <span class=\"comment\">//  While the edge may be continuous, the vertices at their ends may have</span></div>\n+<div class=\"line\"><a id=\"l00769\" name=\"l00769\"></a><span class=\"lineno\">  769</span>            <span class=\"comment\">//  discontinuities elsewhere in their neighborhood (i.e. on the &quot;other side&quot;</span></div>\n+<div class=\"line\"><a id=\"l00770\" name=\"l00770\"></a><span class=\"lineno\">  770</span>            <span class=\"comment\">//  of the end-vertex) and so have sibling values associated with them.  In most</span></div>\n+<div class=\"line\"><a id=\"l00771\" name=\"l00771\"></a><span class=\"lineno\">  771</span>            <span class=\"comment\">//  cases the topology for an end-vertex will match and we can use it directly,</span></div>\n+<div class=\"line\"><a id=\"l00772\" name=\"l00772\"></a><span class=\"lineno\">  772</span>            <span class=\"comment\">//  but we must still check and retrieve as needed.</span></div>\n+<div class=\"line\"><a id=\"l00773\" name=\"l00773\"></a><span class=\"lineno\">  773</span>            <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00774\" name=\"l00774\"></a><span class=\"lineno\">  774</span>            <span class=\"comment\">//  Indices for values corresponding to face-vertices are guaranteed to match,</span></div>\n+<div class=\"line\"><a id=\"l00775\" name=\"l00775\"></a><span class=\"lineno\">  775</span>            <span class=\"comment\">//  so we can use the child-vertex indices directly.</span></div>\n+<div class=\"line\"><a id=\"l00776\" name=\"l00776\"></a><span class=\"lineno\">  776</span>            <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00777\" name=\"l00777\"></a><span class=\"lineno\">  777</span>            <span class=\"comment\">//  And by &quot;directly&quot;, we always use getVertexValue(vertexIndex) to reference</span></div>\n+<div class=\"line\"><a id=\"l00778\" name=\"l00778\"></a><span class=\"lineno\">  778</span>            <span class=\"comment\">//  values in the &quot;src&quot; to account for the possible indirection that may exist at</span></div>\n+<div class=\"line\"><a id=\"l00779\" name=\"l00779\"></a><span class=\"lineno\">  779</span>            <span class=\"comment\">//  level 0 -- where there may be fewer values than vertices and an additional</span></div>\n+<div class=\"line\"><a id=\"l00780\" name=\"l00780\"></a><span class=\"lineno\">  780</span>            <span class=\"comment\">//  indirection is necessary.  We can use a vertex index directly for &quot;dst&quot; when</span></div>\n+<div class=\"line\"><a id=\"l00781\" name=\"l00781\"></a><span class=\"lineno\">  781</span>            <span class=\"comment\">//  it matches.</span></div>\n+<div class=\"line\"><a id=\"l00782\" name=\"l00782\"></a><span class=\"lineno\">  782</span>            <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00783\" name=\"l00783\"></a><span class=\"lineno\">  783</span>            <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a> eVertValues[2];</div>\n+<div class=\"line\"><a id=\"l00784\" name=\"l00784\"></a><span class=\"lineno\">  784</span> </div>\n+<div class=\"line\"><a id=\"l00785\" name=\"l00785\"></a><span class=\"lineno\">  785</span>            parentFVar.getEdgeFaceValues(edge, 0, eVertValues);</div>\n+<div class=\"line\"><a id=\"l00786\" name=\"l00786\"></a><span class=\"lineno\">  786</span> </div>\n+<div class=\"line\"><a id=\"l00787\" name=\"l00787\"></a><span class=\"lineno\">  787</span>            <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> cVertValue = cVertValues[0];</div>\n+<div class=\"line\"><a id=\"l00788\" name=\"l00788\"></a><span class=\"lineno\">  788</span> </div>\n+<div class=\"line\"><a id=\"l00789\" name=\"l00789\"></a><span class=\"lineno\">  789</span>            dst[cVertValue].Clear();</div>\n+<div class=\"line\"><a id=\"l00790\" name=\"l00790\"></a><span class=\"lineno\">  790</span>            dst[cVertValue].AddWithWeight(src[eVertValues[0]], eVertWeights[0]);</div>\n+<div class=\"line\"><a id=\"l00791\" name=\"l00791\"></a><span class=\"lineno\">  791</span>            dst[cVertValue].AddWithWeight(src[eVertValues[1]], eVertWeights[1]);</div>\n+<div class=\"line\"><a id=\"l00792\" name=\"l00792\"></a><span class=\"lineno\">  792</span> </div>\n+<div class=\"line\"><a id=\"l00793\" name=\"l00793\"></a><span class=\"lineno\">  793</span>            <span class=\"keywordflow\">if</span> (eMask.GetNumFaceWeights() &gt; 0) {</div>\n+<div class=\"line\"><a id=\"l00794\" name=\"l00794\"></a><span class=\"lineno\">  794</span> </div>\n+<div class=\"line\"><a id=\"l00795\" name=\"l00795\"></a><span class=\"lineno\">  795</span>                <a class=\"code hl_typedef\" href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">ConstIndexArray</a>  eFaces = parentLevel.getEdgeFaces(edge);</div>\n+<div class=\"line\"><a id=\"l00796\" name=\"l00796\"></a><span class=\"lineno\">  796</span> </div>\n+<div class=\"line\"><a id=\"l00797\" name=\"l00797\"></a><span class=\"lineno\">  797</span>                <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; eFaces.size(); ++i) {</div>\n+<div class=\"line\"><a id=\"l00798\" name=\"l00798\"></a><span class=\"lineno\">  798</span>                    <span class=\"keywordflow\">if</span> (eMask.AreFaceWeightsForFaceCenters()) {</div>\n+<div class=\"line\"><a id=\"l00799\" name=\"l00799\"></a><span class=\"lineno\">  799</span> </div>\n+<div class=\"line\"><a id=\"l00800\" name=\"l00800\"></a><span class=\"lineno\">  800</span>                        <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a> cVertOfFace = refinement.getFaceChildVertex(eFaces[i]);</div>\n+<div class=\"line\"><a id=\"l00801\" name=\"l00801\"></a><span class=\"lineno\">  801</span>                        assert(<a class=\"code hl_function\" href=\"a00909.html#a98af1cee938a3f984af1e7e9a205080c\">Vtr::IndexIsValid</a>(cVertOfFace));</div>\n+<div class=\"line\"><a id=\"l00802\" name=\"l00802\"></a><span class=\"lineno\">  802</span> </div>\n+<div class=\"line\"><a id=\"l00803\" name=\"l00803\"></a><span class=\"lineno\">  803</span>                        <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a> cValueOfFace = childFVar.getVertexValueOffset(cVertOfFace);</div>\n+<div class=\"line\"><a id=\"l00804\" name=\"l00804\"></a><span class=\"lineno\">  804</span>                        dst[cVertValue].AddWithWeight(dst[cValueOfFace], eFaceWeights[i]);</div>\n+<div class=\"line\"><a id=\"l00805\" name=\"l00805\"></a><span class=\"lineno\">  805</span>                    } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00806\" name=\"l00806\"></a><span class=\"lineno\">  806</span>                        <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a>            pFace      = eFaces[i];</div>\n+<div class=\"line\"><a id=\"l00807\" name=\"l00807\"></a><span class=\"lineno\">  807</span>                        <a class=\"code hl_typedef\" href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">ConstIndexArray</a> pFaceEdges = parentLevel.getFaceEdges(pFace),</div>\n+<div class=\"line\"><a id=\"l00808\" name=\"l00808\"></a><span class=\"lineno\">  808</span>                                        pFaceVerts = parentLevel.getFaceVertices(pFace);</div>\n+<div class=\"line\"><a id=\"l00809\" name=\"l00809\"></a><span class=\"lineno\">  809</span> </div>\n+<div class=\"line\"><a id=\"l00810\" name=\"l00810\"></a><span class=\"lineno\">  810</span>                        <span class=\"keywordtype\">int</span> eInFace = 0;</div>\n+<div class=\"line\"><a id=\"l00811\" name=\"l00811\"></a><span class=\"lineno\">  811</span>                        <span class=\"keywordflow\">for</span> ( ; pFaceEdges[eInFace] != edge; ++eInFace ) ;</div>\n+<div class=\"line\"><a id=\"l00812\" name=\"l00812\"></a><span class=\"lineno\">  812</span> </div>\n+<div class=\"line\"><a id=\"l00813\" name=\"l00813\"></a><span class=\"lineno\">  813</span>                        <span class=\"comment\">//  Edge &quot;i&quot; spans vertices [i,i+1] so we want i+2...</span></div>\n+<div class=\"line\"><a id=\"l00814\" name=\"l00814\"></a><span class=\"lineno\">  814</span>                        <span class=\"keywordtype\">int</span> vInFace = eInFace + 2;</div>\n+<div class=\"line\"><a id=\"l00815\" name=\"l00815\"></a><span class=\"lineno\">  815</span>                        <span class=\"keywordflow\">if</span> (vInFace &gt;= pFaceVerts.size()) vInFace -= pFaceVerts.<a class=\"code hl_function\" href=\"a01353.html#a60304b65bf89363bcc3165d3cde67f86\">size</a>();</div>\n+<div class=\"line\"><a id=\"l00816\" name=\"l00816\"></a><span class=\"lineno\">  816</span> </div>\n+<div class=\"line\"><a id=\"l00817\" name=\"l00817\"></a><span class=\"lineno\">  817</span>                        <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a> pValueNext = parentFVar.getFaceValues(pFace)[vInFace];</div>\n+<div class=\"line\"><a id=\"l00818\" name=\"l00818\"></a><span class=\"lineno\">  818</span>                        dst[cVertValue].AddWithWeight(src[pValueNext], eFaceWeights[i]);</div>\n+<div class=\"line\"><a id=\"l00819\" name=\"l00819\"></a><span class=\"lineno\">  819</span>                    }</div>\n+<div class=\"line\"><a id=\"l00820\" name=\"l00820\"></a><span class=\"lineno\">  820</span>                }</div>\n+<div class=\"line\"><a id=\"l00821\" name=\"l00821\"></a><span class=\"lineno\">  821</span>            }</div>\n+<div class=\"line\"><a id=\"l00822\" name=\"l00822\"></a><span class=\"lineno\">  822</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00823\" name=\"l00823\"></a><span class=\"lineno\">  823</span>            <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00824\" name=\"l00824\"></a><span class=\"lineno\">  824</span>            <span class=\"comment\">//  Mismatched edge-verts should just be linearly interpolated between the pairs of</span></div>\n+<div class=\"line\"><a id=\"l00825\" name=\"l00825\"></a><span class=\"lineno\">  825</span>            <span class=\"comment\">//  values for each sibling of the child edge-vertex -- the question is:  which face</span></div>\n+<div class=\"line\"><a id=\"l00826\" name=\"l00826\"></a><span class=\"lineno\">  826</span>            <span class=\"comment\">//  holds that pair of values for a given sibling?</span></div>\n+<div class=\"line\"><a id=\"l00827\" name=\"l00827\"></a><span class=\"lineno\">  827</span>            <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00828\" name=\"l00828\"></a><span class=\"lineno\">  828</span>            <span class=\"comment\">//  In the manifold case, the sibling and edge-face indices will correspond.  We</span></div>\n+<div class=\"line\"><a id=\"l00829\" name=\"l00829\"></a><span class=\"lineno\">  829</span>            <span class=\"comment\">//  will eventually need to update this to account for &gt; 3 incident faces.</span></div>\n+<div class=\"line\"><a id=\"l00830\" name=\"l00830\"></a><span class=\"lineno\">  830</span>            <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00831\" name=\"l00831\"></a><span class=\"lineno\">  831</span>            <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; cVertValues.size(); ++i) {</div>\n+<div class=\"line\"><a id=\"l00832\" name=\"l00832\"></a><span class=\"lineno\">  832</span>                <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a> eVertValues[2];</div>\n+<div class=\"line\"><a id=\"l00833\" name=\"l00833\"></a><span class=\"lineno\">  833</span>                <span class=\"keywordtype\">int</span>      eFaceIndex = refineFVar.getChildValueParentSource(cVert, i);</div>\n+<div class=\"line\"><a id=\"l00834\" name=\"l00834\"></a><span class=\"lineno\">  834</span>                assert(eFaceIndex == i);</div>\n+<div class=\"line\"><a id=\"l00835\" name=\"l00835\"></a><span class=\"lineno\">  835</span> </div>\n+<div class=\"line\"><a id=\"l00836\" name=\"l00836\"></a><span class=\"lineno\">  836</span>                parentFVar.getEdgeFaceValues(edge, eFaceIndex, eVertValues);</div>\n+<div class=\"line\"><a id=\"l00837\" name=\"l00837\"></a><span class=\"lineno\">  837</span> </div>\n+<div class=\"line\"><a id=\"l00838\" name=\"l00838\"></a><span class=\"lineno\">  838</span>                <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> cVertValue = cVertValues[i];</div>\n+<div class=\"line\"><a id=\"l00839\" name=\"l00839\"></a><span class=\"lineno\">  839</span> </div>\n+<div class=\"line\"><a id=\"l00840\" name=\"l00840\"></a><span class=\"lineno\">  840</span>                dst[cVertValue].Clear();</div>\n+<div class=\"line\"><a id=\"l00841\" name=\"l00841\"></a><span class=\"lineno\">  841</span>                dst[cVertValue].AddWithWeight(src[eVertValues[0]], 0.5);</div>\n+<div class=\"line\"><a id=\"l00842\" name=\"l00842\"></a><span class=\"lineno\">  842</span>                dst[cVertValue].AddWithWeight(src[eVertValues[1]], 0.5);</div>\n+<div class=\"line\"><a id=\"l00843\" name=\"l00843\"></a><span class=\"lineno\">  843</span>            }</div>\n+<div class=\"line\"><a id=\"l00844\" name=\"l00844\"></a><span class=\"lineno\">  844</span>        }</div>\n+<div class=\"line\"><a id=\"l00845\" name=\"l00845\"></a><span class=\"lineno\">  845</span>    }</div>\n+<div class=\"line\"><a id=\"l00846\" name=\"l00846\"></a><span class=\"lineno\">  846</span>}</div>\n+<div class=\"line\"><a id=\"l00847\" name=\"l00847\"></a><span class=\"lineno\">  847</span> </div>\n+<div class=\"line\"><a id=\"l00848\" name=\"l00848\"></a><span class=\"lineno\">  848</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00849\" name=\"l00849\"></a><span class=\"lineno\">  849</span><span class=\"keyword\">template</span> &lt;Sdc::SchemeType SCHEME, <span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt;</div>\n+<div class=\"line\"><a id=\"l00850\" name=\"l00850\"></a><span class=\"lineno\">  850</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"line\"><a id=\"l00851\" name=\"l00851\"></a><span class=\"lineno\">  851</span>PrimvarRefinerReal&lt;REAL&gt;::interpFVarFromVerts(<span class=\"keywordtype\">int</span> level, T <span class=\"keyword\">const</span> &amp; src, U &amp; dst, <span class=\"keywordtype\">int</span> channel)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00852\" name=\"l00852\"></a><span class=\"lineno\">  852</span> </div>\n+<div class=\"line\"><a id=\"l00853\" name=\"l00853\"></a><span class=\"lineno\">  853</span>    Vtr::internal::Refinement <span class=\"keyword\">const</span> &amp; refinement = _refiner.getRefinement(level-1);</div>\n+<div class=\"line\"><a id=\"l00854\" name=\"l00854\"></a><span class=\"lineno\">  854</span> </div>\n+<div class=\"line\"><a id=\"l00855\" name=\"l00855\"></a><span class=\"lineno\">  855</span>    Sdc::Scheme&lt;SCHEME&gt; scheme(_refiner._subdivOptions);</div>\n+<div class=\"line\"><a id=\"l00856\" name=\"l00856\"></a><span class=\"lineno\">  856</span> </div>\n+<div class=\"line\"><a id=\"l00857\" name=\"l00857\"></a><span class=\"lineno\">  857</span>    Vtr::internal::Level <span class=\"keyword\">const</span> &amp; parentLevel = refinement.parent();</div>\n+<div class=\"line\"><a id=\"l00858\" name=\"l00858\"></a><span class=\"lineno\">  858</span>    Vtr::internal::Level <span class=\"keyword\">const</span> &amp; childLevel  = refinement.child();</div>\n+<div class=\"line\"><a id=\"l00859\" name=\"l00859\"></a><span class=\"lineno\">  859</span> </div>\n+<div class=\"line\"><a id=\"l00860\" name=\"l00860\"></a><span class=\"lineno\">  860</span>    Vtr::internal::FVarRefinement <span class=\"keyword\">const</span> &amp; refineFVar = refinement.getFVarRefinement(channel);</div>\n+<div class=\"line\"><a id=\"l00861\" name=\"l00861\"></a><span class=\"lineno\">  861</span>    Vtr::internal::FVarLevel <span class=\"keyword\">const</span> &amp;      parentFVar = parentLevel.getFVarLevel(channel);</div>\n+<div class=\"line\"><a id=\"l00862\" name=\"l00862\"></a><span class=\"lineno\">  862</span>    Vtr::internal::FVarLevel <span class=\"keyword\">const</span> &amp;      childFVar  = childLevel.getFVarLevel(channel);</div>\n+<div class=\"line\"><a id=\"l00863\" name=\"l00863\"></a><span class=\"lineno\">  863</span> </div>\n+<div class=\"line\"><a id=\"l00864\" name=\"l00864\"></a><span class=\"lineno\">  864</span>    <span class=\"keywordtype\">bool</span> isLinearFVar = parentFVar.isLinear() || (_refiner._subdivType == <a class=\"code hl_enumvalue\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833da02558f420bac2d6bd3f8411d4b3957a0\">Sdc::SCHEME_BILINEAR</a>);</div>\n+<div class=\"line\"><a id=\"l00865\" name=\"l00865\"></a><span class=\"lineno\">  865</span> </div>\n+<div class=\"line\"><a id=\"l00866\" name=\"l00866\"></a><span class=\"lineno\">  866</span>    Vtr::internal::StackBuffer&lt;Weight,32&gt; weightBuffer(2*parentLevel.getMaxValence());</div>\n+<div class=\"line\"><a id=\"l00867\" name=\"l00867\"></a><span class=\"lineno\">  867</span> </div>\n+<div class=\"line\"><a id=\"l00868\" name=\"l00868\"></a><span class=\"lineno\">  868</span>    Vtr::internal::StackBuffer&lt;Vtr::Index,16&gt; vEdgeValues(parentLevel.getMaxValence());</div>\n+<div class=\"line\"><a id=\"l00869\" name=\"l00869\"></a><span class=\"lineno\">  869</span> </div>\n+<div class=\"line\"><a id=\"l00870\" name=\"l00870\"></a><span class=\"lineno\">  870</span>    Vtr::internal::VertexInterface vHood(parentLevel, childLevel);</div>\n+<div class=\"line\"><a id=\"l00871\" name=\"l00871\"></a><span class=\"lineno\">  871</span> </div>\n+<div class=\"line\"><a id=\"l00872\" name=\"l00872\"></a><span class=\"lineno\">  872</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> vert = 0; vert &lt; parentLevel.getNumVertices(); ++vert) {</div>\n+<div class=\"line\"><a id=\"l00873\" name=\"l00873\"></a><span class=\"lineno\">  873</span> </div>\n+<div class=\"line\"><a id=\"l00874\" name=\"l00874\"></a><span class=\"lineno\">  874</span>        <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a> cVert = refinement.getVertexChildVertex(vert);</div>\n+<div class=\"line\"><a id=\"l00875\" name=\"l00875\"></a><span class=\"lineno\">  875</span>        <span class=\"keywordflow\">if</span> (!<a class=\"code hl_function\" href=\"a00909.html#a98af1cee938a3f984af1e7e9a205080c\">Vtr::IndexIsValid</a>(cVert))</div>\n+<div class=\"line\"><a id=\"l00876\" name=\"l00876\"></a><span class=\"lineno\">  876</span>            <span class=\"keywordflow\">continue</span>;</div>\n+<div class=\"line\"><a id=\"l00877\" name=\"l00877\"></a><span class=\"lineno\">  877</span> </div>\n+<div class=\"line\"><a id=\"l00878\" name=\"l00878\"></a><span class=\"lineno\">  878</span>        <a class=\"code hl_typedef\" href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">ConstIndexArray</a> pVertValues = parentFVar.getVertexValues(vert),</div>\n+<div class=\"line\"><a id=\"l00879\" name=\"l00879\"></a><span class=\"lineno\">  879</span>                        cVertValues = childFVar.getVertexValues(cVert);</div>\n+<div class=\"line\"><a id=\"l00880\" name=\"l00880\"></a><span class=\"lineno\">  880</span> </div>\n+<div class=\"line\"><a id=\"l00881\" name=\"l00881\"></a><span class=\"lineno\">  881</span>        <span class=\"keywordtype\">bool</span> fvarVertVertMatchesVertex = childFVar.valueTopologyMatches(cVertValues[0]);</div>\n+<div class=\"line\"><a id=\"l00882\" name=\"l00882\"></a><span class=\"lineno\">  882</span>        <span class=\"keywordflow\">if</span> (isLinearFVar &amp;&amp; fvarVertVertMatchesVertex) {</div>\n+<div class=\"line\"><a id=\"l00883\" name=\"l00883\"></a><span class=\"lineno\">  883</span>            dst[cVertValues[0]].Clear();</div>\n+<div class=\"line\"><a id=\"l00884\" name=\"l00884\"></a><span class=\"lineno\">  884</span>            dst[cVertValues[0]].AddWithWeight(src[pVertValues[0]], 1.0f);</div>\n+<div class=\"line\"><a id=\"l00885\" name=\"l00885\"></a><span class=\"lineno\">  885</span>            <span class=\"keywordflow\">continue</span>;</div>\n+<div class=\"line\"><a id=\"l00886\" name=\"l00886\"></a><span class=\"lineno\">  886</span>        }</div>\n+<div class=\"line\"><a id=\"l00887\" name=\"l00887\"></a><span class=\"lineno\">  887</span> </div>\n+<div class=\"line\"><a id=\"l00888\" name=\"l00888\"></a><span class=\"lineno\">  888</span>        <span class=\"keywordflow\">if</span> (fvarVertVertMatchesVertex) {</div>\n+<div class=\"line\"><a id=\"l00889\" name=\"l00889\"></a><span class=\"lineno\">  889</span>            <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00890\" name=\"l00890\"></a><span class=\"lineno\">  890</span>            <span class=\"comment\">//  Declare and compute mask weights for this vertex relative to its parent edge:</span></div>\n+<div class=\"line\"><a id=\"l00891\" name=\"l00891\"></a><span class=\"lineno\">  891</span>            <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00892\" name=\"l00892\"></a><span class=\"lineno\">  892</span>            <span class=\"comment\">//  (We really need to encapsulate this somewhere else for use here and in the</span></div>\n+<div class=\"line\"><a id=\"l00893\" name=\"l00893\"></a><span class=\"lineno\">  893</span>            <span class=\"comment\">//  general case)</span></div>\n+<div class=\"line\"><a id=\"l00894\" name=\"l00894\"></a><span class=\"lineno\">  894</span>            <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00895\" name=\"l00895\"></a><span class=\"lineno\">  895</span>            <a class=\"code hl_typedef\" href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">ConstIndexArray</a> vEdges = parentLevel.getVertexEdges(vert);</div>\n+<div class=\"line\"><a id=\"l00896\" name=\"l00896\"></a><span class=\"lineno\">  896</span> </div>\n+<div class=\"line\"><a id=\"l00897\" name=\"l00897\"></a><span class=\"lineno\">  897</span>            Weight   vVertWeight;</div>\n+<div class=\"line\"><a id=\"l00898\" name=\"l00898\"></a><span class=\"lineno\">  898</span>            Weight * vEdgeWeights = weightBuffer;</div>\n+<div class=\"line\"><a id=\"l00899\" name=\"l00899\"></a><span class=\"lineno\">  899</span>            Weight * vFaceWeights = vEdgeWeights + vEdges.<a class=\"code hl_function\" href=\"a01353.html#a60304b65bf89363bcc3165d3cde67f86\">size</a>();</div>\n+<div class=\"line\"><a id=\"l00900\" name=\"l00900\"></a><span class=\"lineno\">  900</span> </div>\n+<div class=\"line\"><a id=\"l00901\" name=\"l00901\"></a><span class=\"lineno\">  901</span>            Mask vMask(&amp;vVertWeight, vEdgeWeights, vFaceWeights);</div>\n+<div class=\"line\"><a id=\"l00902\" name=\"l00902\"></a><span class=\"lineno\">  902</span> </div>\n+<div class=\"line\"><a id=\"l00903\" name=\"l00903\"></a><span class=\"lineno\">  903</span>            vHood.SetIndex(vert, cVert);</div>\n+<div class=\"line\"><a id=\"l00904\" name=\"l00904\"></a><span class=\"lineno\">  904</span> </div>\n+<div class=\"line\"><a id=\"l00905\" name=\"l00905\"></a><span class=\"lineno\">  905</span>            <a class=\"code hl_enumeration\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78\">Sdc::Crease::Rule</a> pRule = parentLevel.getVertexRule(vert);</div>\n+<div class=\"line\"><a id=\"l00906\" name=\"l00906\"></a><span class=\"lineno\">  906</span>            <a class=\"code hl_enumeration\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78\">Sdc::Crease::Rule</a> cRule = childLevel.getVertexRule(cVert);</div>\n+<div class=\"line\"><a id=\"l00907\" name=\"l00907\"></a><span class=\"lineno\">  907</span> </div>\n+<div class=\"line\"><a id=\"l00908\" name=\"l00908\"></a><span class=\"lineno\">  908</span>            scheme.ComputeVertexVertexMask(vHood, vMask, pRule, cRule);</div>\n+<div class=\"line\"><a id=\"l00909\" name=\"l00909\"></a><span class=\"lineno\">  909</span> </div>\n+<div class=\"line\"><a id=\"l00910\" name=\"l00910\"></a><span class=\"lineno\">  910</span>            <span class=\"comment\">//  Apply the weights to the parent vertex, the vertices opposite its incident</span></div>\n+<div class=\"line\"><a id=\"l00911\" name=\"l00911\"></a><span class=\"lineno\">  911</span>            <span class=\"comment\">//  edges, and the child vertices of its incident faces:</span></div>\n+<div class=\"line\"><a id=\"l00912\" name=\"l00912\"></a><span class=\"lineno\">  912</span>            <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00913\" name=\"l00913\"></a><span class=\"lineno\">  913</span>            <span class=\"comment\">//  Even though the face-varying topology matches the vertex topology, we need</span></div>\n+<div class=\"line\"><a id=\"l00914\" name=\"l00914\"></a><span class=\"lineno\">  914</span>            <span class=\"comment\">//  to be careful here when getting values corresponding to vertices at the</span></div>\n+<div class=\"line\"><a id=\"l00915\" name=\"l00915\"></a><span class=\"lineno\">  915</span>            <span class=\"comment\">//  ends of edges.  While the edge may be continuous, the end vertex may have</span></div>\n+<div class=\"line\"><a id=\"l00916\" name=\"l00916\"></a><span class=\"lineno\">  916</span>            <span class=\"comment\">//  discontinuities elsewhere in their neighborhood (i.e. on the &quot;other side&quot;</span></div>\n+<div class=\"line\"><a id=\"l00917\" name=\"l00917\"></a><span class=\"lineno\">  917</span>            <span class=\"comment\">//  of the end-vertex) and so have sibling values associated with them.  In most</span></div>\n+<div class=\"line\"><a id=\"l00918\" name=\"l00918\"></a><span class=\"lineno\">  918</span>            <span class=\"comment\">//  cases the topology for an end-vertex will match and we can use it directly,</span></div>\n+<div class=\"line\"><a id=\"l00919\" name=\"l00919\"></a><span class=\"lineno\">  919</span>            <span class=\"comment\">//  but we must still check and retrieve as needed.</span></div>\n+<div class=\"line\"><a id=\"l00920\" name=\"l00920\"></a><span class=\"lineno\">  920</span>            <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00921\" name=\"l00921\"></a><span class=\"lineno\">  921</span>            <span class=\"comment\">//  Indices for values corresponding to face-vertices are guaranteed to match,</span></div>\n+<div class=\"line\"><a id=\"l00922\" name=\"l00922\"></a><span class=\"lineno\">  922</span>            <span class=\"comment\">//  so we can use the child-vertex indices directly.</span></div>\n+<div class=\"line\"><a id=\"l00923\" name=\"l00923\"></a><span class=\"lineno\">  923</span>            <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00924\" name=\"l00924\"></a><span class=\"lineno\">  924</span>            <span class=\"comment\">//  And by &quot;directly&quot;, we always use getVertexValue(vertexIndex) to reference</span></div>\n+<div class=\"line\"><a id=\"l00925\" name=\"l00925\"></a><span class=\"lineno\">  925</span>            <span class=\"comment\">//  values in the &quot;src&quot; to account for the possible indirection that may exist at</span></div>\n+<div class=\"line\"><a id=\"l00926\" name=\"l00926\"></a><span class=\"lineno\">  926</span>            <span class=\"comment\">//  level 0 -- where there may be fewer values than vertices and an additional</span></div>\n+<div class=\"line\"><a id=\"l00927\" name=\"l00927\"></a><span class=\"lineno\">  927</span>            <span class=\"comment\">//  indirection is necessary.  We can use a vertex index directly for &quot;dst&quot; when</span></div>\n+<div class=\"line\"><a id=\"l00928\" name=\"l00928\"></a><span class=\"lineno\">  928</span>            <span class=\"comment\">//  it matches.</span></div>\n+<div class=\"line\"><a id=\"l00929\" name=\"l00929\"></a><span class=\"lineno\">  929</span>            <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00930\" name=\"l00930\"></a><span class=\"lineno\">  930</span>            <span class=\"comment\">//  As with applying the mask to vertex data, in order to improve numerical</span></div>\n+<div class=\"line\"><a id=\"l00931\" name=\"l00931\"></a><span class=\"lineno\">  931</span>            <span class=\"comment\">//  precision, it&#39;s better to apply smaller weights first, so begin with the</span></div>\n+<div class=\"line\"><a id=\"l00932\" name=\"l00932\"></a><span class=\"lineno\">  932</span>            <span class=\"comment\">//  face-weights followed by the edge-weights and the vertex weight last.</span></div>\n+<div class=\"line\"><a id=\"l00933\" name=\"l00933\"></a><span class=\"lineno\">  933</span>            <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00934\" name=\"l00934\"></a><span class=\"lineno\">  934</span>            <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a> pVertValue = pVertValues[0];</div>\n+<div class=\"line\"><a id=\"l00935\" name=\"l00935\"></a><span class=\"lineno\">  935</span>            <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a> cVertValue = cVertValues[0];</div>\n+<div class=\"line\"><a id=\"l00936\" name=\"l00936\"></a><span class=\"lineno\">  936</span> </div>\n+<div class=\"line\"><a id=\"l00937\" name=\"l00937\"></a><span class=\"lineno\">  937</span>            dst[cVertValue].Clear();</div>\n+<div class=\"line\"><a id=\"l00938\" name=\"l00938\"></a><span class=\"lineno\">  938</span>            <span class=\"keywordflow\">if</span> (vMask.GetNumFaceWeights() &gt; 0) {</div>\n+<div class=\"line\"><a id=\"l00939\" name=\"l00939\"></a><span class=\"lineno\">  939</span>                assert(vMask.AreFaceWeightsForFaceCenters());</div>\n+<div class=\"line\"><a id=\"l00940\" name=\"l00940\"></a><span class=\"lineno\">  940</span> </div>\n+<div class=\"line\"><a id=\"l00941\" name=\"l00941\"></a><span class=\"lineno\">  941</span>                <a class=\"code hl_typedef\" href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">ConstIndexArray</a> vFaces = parentLevel.getVertexFaces(vert);</div>\n+<div class=\"line\"><a id=\"l00942\" name=\"l00942\"></a><span class=\"lineno\">  942</span> </div>\n+<div class=\"line\"><a id=\"l00943\" name=\"l00943\"></a><span class=\"lineno\">  943</span>                <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; vFaces.size(); ++i) {</div>\n+<div class=\"line\"><a id=\"l00944\" name=\"l00944\"></a><span class=\"lineno\">  944</span> </div>\n+<div class=\"line\"><a id=\"l00945\" name=\"l00945\"></a><span class=\"lineno\">  945</span>                    <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a> cVertOfFace  = refinement.getFaceChildVertex(vFaces[i]);</div>\n+<div class=\"line\"><a id=\"l00946\" name=\"l00946\"></a><span class=\"lineno\">  946</span>                    assert(<a class=\"code hl_function\" href=\"a00909.html#a98af1cee938a3f984af1e7e9a205080c\">Vtr::IndexIsValid</a>(cVertOfFace));</div>\n+<div class=\"line\"><a id=\"l00947\" name=\"l00947\"></a><span class=\"lineno\">  947</span> </div>\n+<div class=\"line\"><a id=\"l00948\" name=\"l00948\"></a><span class=\"lineno\">  948</span>                    <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a> cValueOfFace = childFVar.getVertexValueOffset(cVertOfFace);</div>\n+<div class=\"line\"><a id=\"l00949\" name=\"l00949\"></a><span class=\"lineno\">  949</span>                    dst[cVertValue].AddWithWeight(dst[cValueOfFace], vFaceWeights[i]);</div>\n+<div class=\"line\"><a id=\"l00950\" name=\"l00950\"></a><span class=\"lineno\">  950</span>                }</div>\n+<div class=\"line\"><a id=\"l00951\" name=\"l00951\"></a><span class=\"lineno\">  951</span>            }</div>\n+<div class=\"line\"><a id=\"l00952\" name=\"l00952\"></a><span class=\"lineno\">  952</span>            <span class=\"keywordflow\">if</span> (vMask.GetNumEdgeWeights() &gt; 0) {</div>\n+<div class=\"line\"><a id=\"l00953\" name=\"l00953\"></a><span class=\"lineno\">  953</span> </div>\n+<div class=\"line\"><a id=\"l00954\" name=\"l00954\"></a><span class=\"lineno\">  954</span>                parentFVar.getVertexEdgeValues(vert, vEdgeValues);</div>\n+<div class=\"line\"><a id=\"l00955\" name=\"l00955\"></a><span class=\"lineno\">  955</span> </div>\n+<div class=\"line\"><a id=\"l00956\" name=\"l00956\"></a><span class=\"lineno\">  956</span>                <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; vEdges.size(); ++i) {</div>\n+<div class=\"line\"><a id=\"l00957\" name=\"l00957\"></a><span class=\"lineno\">  957</span>                    dst[cVertValue].AddWithWeight(src[vEdgeValues[i]], vEdgeWeights[i]);</div>\n+<div class=\"line\"><a id=\"l00958\" name=\"l00958\"></a><span class=\"lineno\">  958</span>                }</div>\n+<div class=\"line\"><a id=\"l00959\" name=\"l00959\"></a><span class=\"lineno\">  959</span>            }</div>\n+<div class=\"line\"><a id=\"l00960\" name=\"l00960\"></a><span class=\"lineno\">  960</span>            dst[cVertValue].AddWithWeight(src[pVertValue], vVertWeight);</div>\n+<div class=\"line\"><a id=\"l00961\" name=\"l00961\"></a><span class=\"lineno\">  961</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00962\" name=\"l00962\"></a><span class=\"lineno\">  962</span>            <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00963\" name=\"l00963\"></a><span class=\"lineno\">  963</span>            <span class=\"comment\">//  Each FVar value associated with a vertex will be either a corner or a crease,</span></div>\n+<div class=\"line\"><a id=\"l00964\" name=\"l00964\"></a><span class=\"lineno\">  964</span>            <span class=\"comment\">//  or potentially in transition from corner to crease:</span></div>\n+<div class=\"line\"><a id=\"l00965\" name=\"l00965\"></a><span class=\"lineno\">  965</span>            <span class=\"comment\">//      - if the CHILD is a corner, there can be no transition so we have a corner</span></div>\n+<div class=\"line\"><a id=\"l00966\" name=\"l00966\"></a><span class=\"lineno\">  966</span>            <span class=\"comment\">//      - otherwise if the PARENT is a crease, both will be creases (no transition)</span></div>\n+<div class=\"line\"><a id=\"l00967\" name=\"l00967\"></a><span class=\"lineno\">  967</span>            <span class=\"comment\">//      - otherwise the parent must be a corner and the child a crease (transition)</span></div>\n+<div class=\"line\"><a id=\"l00968\" name=\"l00968\"></a><span class=\"lineno\">  968</span>            <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00969\" name=\"l00969\"></a><span class=\"lineno\">  969</span>            Vtr::internal::FVarLevel::ConstValueTagArray pValueTags = parentFVar.getVertexValueTags(vert);</div>\n+<div class=\"line\"><a id=\"l00970\" name=\"l00970\"></a><span class=\"lineno\">  970</span>            Vtr::internal::FVarLevel::ConstValueTagArray cValueTags = childFVar.getVertexValueTags(cVert);</div>\n+<div class=\"line\"><a id=\"l00971\" name=\"l00971\"></a><span class=\"lineno\">  971</span> </div>\n+<div class=\"line\"><a id=\"l00972\" name=\"l00972\"></a><span class=\"lineno\">  972</span>            <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> cSiblingIndex = 0; cSiblingIndex &lt; cVertValues.size(); ++cSiblingIndex) {</div>\n+<div class=\"line\"><a id=\"l00973\" name=\"l00973\"></a><span class=\"lineno\">  973</span>                <span class=\"keywordtype\">int</span> pSiblingIndex = refineFVar.getChildValueParentSource(cVert, cSiblingIndex);</div>\n+<div class=\"line\"><a id=\"l00974\" name=\"l00974\"></a><span class=\"lineno\">  974</span>                assert(pSiblingIndex == cSiblingIndex);</div>\n+<div class=\"line\"><a id=\"l00975\" name=\"l00975\"></a><span class=\"lineno\">  975</span> </div>\n+<div class=\"line\"><a id=\"l00976\" name=\"l00976\"></a><span class=\"lineno\">  976</span>                <span class=\"keyword\">typedef</span> Vtr::internal::FVarLevel::Sibling SiblingIntType;</div>\n+<div class=\"line\"><a id=\"l00977\" name=\"l00977\"></a><span class=\"lineno\">  977</span> </div>\n+<div class=\"line\"><a id=\"l00978\" name=\"l00978\"></a><span class=\"lineno\">  978</span>                SiblingIntType cSibling = (SiblingIntType) cSiblingIndex;</div>\n+<div class=\"line\"><a id=\"l00979\" name=\"l00979\"></a><span class=\"lineno\">  979</span>                SiblingIntType pSibling = (SiblingIntType) pSiblingIndex;</div>\n+<div class=\"line\"><a id=\"l00980\" name=\"l00980\"></a><span class=\"lineno\">  980</span> </div>\n+<div class=\"line\"><a id=\"l00981\" name=\"l00981\"></a><span class=\"lineno\">  981</span>                <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a> pVertValue = pVertValues[pSibling];</div>\n+<div class=\"line\"><a id=\"l00982\" name=\"l00982\"></a><span class=\"lineno\">  982</span>                <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a> cVertValue = cVertValues[cSibling];</div>\n+<div class=\"line\"><a id=\"l00983\" name=\"l00983\"></a><span class=\"lineno\">  983</span> </div>\n+<div class=\"line\"><a id=\"l00984\" name=\"l00984\"></a><span class=\"lineno\">  984</span>                dst[cVertValue].Clear();</div>\n+<div class=\"line\"><a id=\"l00985\" name=\"l00985\"></a><span class=\"lineno\">  985</span>                <span class=\"keywordflow\">if</span> (isLinearFVar || cValueTags[cSibling].isCorner()) {</div>\n+<div class=\"line\"><a id=\"l00986\" name=\"l00986\"></a><span class=\"lineno\">  986</span>                    dst[cVertValue].AddWithWeight(src[pVertValue], 1.0f);</div>\n+<div class=\"line\"><a id=\"l00987\" name=\"l00987\"></a><span class=\"lineno\">  987</span>                } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00988\" name=\"l00988\"></a><span class=\"lineno\">  988</span>                    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00989\" name=\"l00989\"></a><span class=\"lineno\">  989</span>                    <span class=\"comment\">//  We have either a crease or a transition from corner to crease -- in</span></div>\n+<div class=\"line\"><a id=\"l00990\" name=\"l00990\"></a><span class=\"lineno\">  990</span>                    <span class=\"comment\">//  either case, we need the end values for the full/fractional crease:</span></div>\n+<div class=\"line\"><a id=\"l00991\" name=\"l00991\"></a><span class=\"lineno\">  991</span>                    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00992\" name=\"l00992\"></a><span class=\"lineno\">  992</span>                    <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> pEndValues[2];</div>\n+<div class=\"line\"><a id=\"l00993\" name=\"l00993\"></a><span class=\"lineno\">  993</span>                    parentFVar.getVertexCreaseEndValues(vert, pSibling, pEndValues);</div>\n+<div class=\"line\"><a id=\"l00994\" name=\"l00994\"></a><span class=\"lineno\">  994</span> </div>\n+<div class=\"line\"><a id=\"l00995\" name=\"l00995\"></a><span class=\"lineno\">  995</span>                    Weight vWeight = 0.75f;</div>\n+<div class=\"line\"><a id=\"l00996\" name=\"l00996\"></a><span class=\"lineno\">  996</span>                    Weight eWeight = 0.125f;</div>\n+<div class=\"line\"><a id=\"l00997\" name=\"l00997\"></a><span class=\"lineno\">  997</span> </div>\n+<div class=\"line\"><a id=\"l00998\" name=\"l00998\"></a><span class=\"lineno\">  998</span>                    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00999\" name=\"l00999\"></a><span class=\"lineno\">  999</span>                    <span class=\"comment\">//  If semi-sharp we need to apply fractional weighting -- if made sharp because</span></div>\n+<div class=\"line\"><a id=\"l01000\" name=\"l01000\"></a><span class=\"lineno\"> 1000</span>                    <span class=\"comment\">//  of the other sibling (dependent-sharp) use the fractional weight from that</span></div>\n+<div class=\"line\"><a id=\"l01001\" name=\"l01001\"></a><span class=\"lineno\"> 1001</span>                    <span class=\"comment\">//  other sibling (should only occur when there are 2):</span></div>\n+<div class=\"line\"><a id=\"l01002\" name=\"l01002\"></a><span class=\"lineno\"> 1002</span>                    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l01003\" name=\"l01003\"></a><span class=\"lineno\"> 1003</span>                    <span class=\"keywordflow\">if</span> (pValueTags[pSibling].isSemiSharp()) {</div>\n+<div class=\"line\"><a id=\"l01004\" name=\"l01004\"></a><span class=\"lineno\"> 1004</span>                        Weight wCorner = pValueTags[pSibling].isDepSharp()</div>\n+<div class=\"line\"><a id=\"l01005\" name=\"l01005\"></a><span class=\"lineno\"> 1005</span>                                      ? refineFVar.getFractionalWeight(vert, !pSibling, cVert, !cSibling)</div>\n+<div class=\"line\"><a id=\"l01006\" name=\"l01006\"></a><span class=\"lineno\"> 1006</span>                                      : refineFVar.getFractionalWeight(vert, pSibling, cVert, cSibling);</div>\n+<div class=\"line\"><a id=\"l01007\" name=\"l01007\"></a><span class=\"lineno\"> 1007</span>                        Weight wCrease = 1.0f - wCorner;</div>\n+<div class=\"line\"><a id=\"l01008\" name=\"l01008\"></a><span class=\"lineno\"> 1008</span> </div>\n+<div class=\"line\"><a id=\"l01009\" name=\"l01009\"></a><span class=\"lineno\"> 1009</span>                        vWeight = wCrease * 0.75f + wCorner;</div>\n+<div class=\"line\"><a id=\"l01010\" name=\"l01010\"></a><span class=\"lineno\"> 1010</span>                        eWeight = wCrease * 0.125f;</div>\n+<div class=\"line\"><a id=\"l01011\" name=\"l01011\"></a><span class=\"lineno\"> 1011</span>                    }</div>\n+<div class=\"line\"><a id=\"l01012\" name=\"l01012\"></a><span class=\"lineno\"> 1012</span>                    dst[cVertValue].AddWithWeight(src[pEndValues[0]], eWeight);</div>\n+<div class=\"line\"><a id=\"l01013\" name=\"l01013\"></a><span class=\"lineno\"> 1013</span>                    dst[cVertValue].AddWithWeight(src[pEndValues[1]], eWeight);</div>\n+<div class=\"line\"><a id=\"l01014\" name=\"l01014\"></a><span class=\"lineno\"> 1014</span>                    dst[cVertValue].AddWithWeight(src[pVertValue], vWeight);</div>\n+<div class=\"line\"><a id=\"l01015\" name=\"l01015\"></a><span class=\"lineno\"> 1015</span>                }</div>\n+<div class=\"line\"><a id=\"l01016\" name=\"l01016\"></a><span class=\"lineno\"> 1016</span>            }</div>\n+<div class=\"line\"><a id=\"l01017\" name=\"l01017\"></a><span class=\"lineno\"> 1017</span>        }</div>\n+<div class=\"line\"><a id=\"l01018\" name=\"l01018\"></a><span class=\"lineno\"> 1018</span>    }</div>\n+<div class=\"line\"><a id=\"l01019\" name=\"l01019\"></a><span class=\"lineno\"> 1019</span>}</div>\n+<div class=\"line\"><a id=\"l01020\" name=\"l01020\"></a><span class=\"lineno\"> 1020</span> </div>\n+<div class=\"line\"><a id=\"l01021\" name=\"l01021\"></a><span class=\"lineno\"> 1021</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l01022\" name=\"l01022\"></a><span class=\"lineno\"> 1022</span><span class=\"keyword\">template</span> &lt;Sdc::SchemeType SCHEME, <span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U, <span class=\"keyword\">class</span> U1, <span class=\"keyword\">class</span> U2&gt;</div>\n+<div class=\"line\"><a id=\"l01023\" name=\"l01023\"></a><span class=\"lineno\"> 1023</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"line\"><a id=\"l01024\" name=\"l01024\"></a><span class=\"lineno\"> 1024</span>PrimvarRefinerReal&lt;REAL&gt;::limit(T <span class=\"keyword\">const</span> &amp; src, U &amp; dstPos, U1 * dstTan1Ptr, U2 * dstTan2Ptr)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l01025\" name=\"l01025\"></a><span class=\"lineno\"> 1025</span> </div>\n+<div class=\"line\"><a id=\"l01026\" name=\"l01026\"></a><span class=\"lineno\"> 1026</span>    Sdc::Scheme&lt;SCHEME&gt; scheme(_refiner._subdivOptions);</div>\n+<div class=\"line\"><a id=\"l01027\" name=\"l01027\"></a><span class=\"lineno\"> 1027</span> </div>\n+<div class=\"line\"><a id=\"l01028\" name=\"l01028\"></a><span class=\"lineno\"> 1028</span>    Vtr::internal::Level <span class=\"keyword\">const</span> &amp; level = _refiner.getLevel(_refiner.GetMaxLevel());</div>\n+<div class=\"line\"><a id=\"l01029\" name=\"l01029\"></a><span class=\"lineno\"> 1029</span> </div>\n+<div class=\"line\"><a id=\"l01030\" name=\"l01030\"></a><span class=\"lineno\"> 1030</span>    <span class=\"keywordtype\">int</span>  maxWeightsPerMask = 1 + 2 * level.getMaxValence();</div>\n+<div class=\"line\"><a id=\"l01031\" name=\"l01031\"></a><span class=\"lineno\"> 1031</span>    <span class=\"keywordtype\">bool</span> hasTangents = (dstTan1Ptr &amp;&amp; dstTan2Ptr);</div>\n+<div class=\"line\"><a id=\"l01032\" name=\"l01032\"></a><span class=\"lineno\"> 1032</span>    <span class=\"keywordtype\">int</span>  numMasks = 1 + (hasTangents ? 2 : 0);</div>\n+<div class=\"line\"><a id=\"l01033\" name=\"l01033\"></a><span class=\"lineno\"> 1033</span> </div>\n+<div class=\"line\"><a id=\"l01034\" name=\"l01034\"></a><span class=\"lineno\"> 1034</span>    Vtr::internal::StackBuffer&lt;Index,33&gt; indexBuffer(maxWeightsPerMask);</div>\n+<div class=\"line\"><a id=\"l01035\" name=\"l01035\"></a><span class=\"lineno\"> 1035</span>    Vtr::internal::StackBuffer&lt;Weight,99&gt; weightBuffer(numMasks * maxWeightsPerMask);</div>\n+<div class=\"line\"><a id=\"l01036\" name=\"l01036\"></a><span class=\"lineno\"> 1036</span> </div>\n+<div class=\"line\"><a id=\"l01037\" name=\"l01037\"></a><span class=\"lineno\"> 1037</span>    Weight * vPosWeights = weightBuffer,</div>\n+<div class=\"line\"><a id=\"l01038\" name=\"l01038\"></a><span class=\"lineno\"> 1038</span>           * ePosWeights = vPosWeights + 1,</div>\n+<div class=\"line\"><a id=\"l01039\" name=\"l01039\"></a><span class=\"lineno\"> 1039</span>           * fPosWeights = ePosWeights + level.getMaxValence();</div>\n+<div class=\"line\"><a id=\"l01040\" name=\"l01040\"></a><span class=\"lineno\"> 1040</span>    Weight * vTan1Weights = vPosWeights + maxWeightsPerMask,</div>\n+<div class=\"line\"><a id=\"l01041\" name=\"l01041\"></a><span class=\"lineno\"> 1041</span>           * eTan1Weights = ePosWeights + maxWeightsPerMask,</div>\n+<div class=\"line\"><a id=\"l01042\" name=\"l01042\"></a><span class=\"lineno\"> 1042</span>           * fTan1Weights = fPosWeights + maxWeightsPerMask;</div>\n+<div class=\"line\"><a id=\"l01043\" name=\"l01043\"></a><span class=\"lineno\"> 1043</span>    Weight * vTan2Weights = vTan1Weights + maxWeightsPerMask,</div>\n+<div class=\"line\"><a id=\"l01044\" name=\"l01044\"></a><span class=\"lineno\"> 1044</span>           * eTan2Weights = eTan1Weights + maxWeightsPerMask,</div>\n+<div class=\"line\"><a id=\"l01045\" name=\"l01045\"></a><span class=\"lineno\"> 1045</span>           * fTan2Weights = fTan1Weights + maxWeightsPerMask;</div>\n+<div class=\"line\"><a id=\"l01046\" name=\"l01046\"></a><span class=\"lineno\"> 1046</span> </div>\n+<div class=\"line\"><a id=\"l01047\" name=\"l01047\"></a><span class=\"lineno\"> 1047</span>    Mask posMask( vPosWeights,  ePosWeights,  fPosWeights);</div>\n+<div class=\"line\"><a id=\"l01048\" name=\"l01048\"></a><span class=\"lineno\"> 1048</span>    Mask tan1Mask(vTan1Weights, eTan1Weights, fTan1Weights);</div>\n+<div class=\"line\"><a id=\"l01049\" name=\"l01049\"></a><span class=\"lineno\"> 1049</span>    Mask tan2Mask(vTan2Weights, eTan2Weights, fTan2Weights);</div>\n+<div class=\"line\"><a id=\"l01050\" name=\"l01050\"></a><span class=\"lineno\"> 1050</span> </div>\n+<div class=\"line\"><a id=\"l01051\" name=\"l01051\"></a><span class=\"lineno\"> 1051</span>    <span class=\"comment\">//  This is a bit obscure -- assigning both parent and child as last level -- but</span></div>\n+<div class=\"line\"><a id=\"l01052\" name=\"l01052\"></a><span class=\"lineno\"> 1052</span>    <span class=\"comment\">//  this mask type was intended for another purpose.  Consider one for the limit:</span></div>\n+<div class=\"line\"><a id=\"l01053\" name=\"l01053\"></a><span class=\"lineno\"> 1053</span>    Vtr::internal::VertexInterface vHood(level, level);</div>\n+<div class=\"line\"><a id=\"l01054\" name=\"l01054\"></a><span class=\"lineno\"> 1054</span> </div>\n+<div class=\"line\"><a id=\"l01055\" name=\"l01055\"></a><span class=\"lineno\"> 1055</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> vert = 0; vert &lt; level.getNumVertices(); ++vert) {</div>\n+<div class=\"line\"><a id=\"l01056\" name=\"l01056\"></a><span class=\"lineno\"> 1056</span>        <a class=\"code hl_typedef\" href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">ConstIndexArray</a> vEdges = level.getVertexEdges(vert);</div>\n+<div class=\"line\"><a id=\"l01057\" name=\"l01057\"></a><span class=\"lineno\"> 1057</span> </div>\n+<div class=\"line\"><a id=\"l01058\" name=\"l01058\"></a><span class=\"lineno\"> 1058</span>        <span class=\"comment\">//  Incomplete vertices (present in sparse refinement) do not have their full</span></div>\n+<div class=\"line\"><a id=\"l01059\" name=\"l01059\"></a><span class=\"lineno\"> 1059</span>        <span class=\"comment\">//  topological neighborhood to determine a proper limit -- just leave the</span></div>\n+<div class=\"line\"><a id=\"l01060\" name=\"l01060\"></a><span class=\"lineno\"> 1060</span>        <span class=\"comment\">//  vertex at the refined location and continue to the next:</span></div>\n+<div class=\"line\"><a id=\"l01061\" name=\"l01061\"></a><span class=\"lineno\"> 1061</span>        <span class=\"keywordflow\">if</span> (level.getVertexTag(vert)._incomplete || (vEdges.size() == 0)) {</div>\n+<div class=\"line\"><a id=\"l01062\" name=\"l01062\"></a><span class=\"lineno\"> 1062</span>            dstPos[vert].Clear();</div>\n+<div class=\"line\"><a id=\"l01063\" name=\"l01063\"></a><span class=\"lineno\"> 1063</span>            dstPos[vert].AddWithWeight(src[vert], 1.0);</div>\n+<div class=\"line\"><a id=\"l01064\" name=\"l01064\"></a><span class=\"lineno\"> 1064</span>            <span class=\"keywordflow\">if</span> (hasTangents) {</div>\n+<div class=\"line\"><a id=\"l01065\" name=\"l01065\"></a><span class=\"lineno\"> 1065</span>                (*dstTan1Ptr)[vert].Clear();</div>\n+<div class=\"line\"><a id=\"l01066\" name=\"l01066\"></a><span class=\"lineno\"> 1066</span>                (*dstTan2Ptr)[vert].Clear();</div>\n+<div class=\"line\"><a id=\"l01067\" name=\"l01067\"></a><span class=\"lineno\"> 1067</span>            }</div>\n+<div class=\"line\"><a id=\"l01068\" name=\"l01068\"></a><span class=\"lineno\"> 1068</span>            <span class=\"keywordflow\">continue</span>;</div>\n+<div class=\"line\"><a id=\"l01069\" name=\"l01069\"></a><span class=\"lineno\"> 1069</span>        }</div>\n+<div class=\"line\"><a id=\"l01070\" name=\"l01070\"></a><span class=\"lineno\"> 1070</span> </div>\n+<div class=\"line\"><a id=\"l01071\" name=\"l01071\"></a><span class=\"lineno\"> 1071</span>        <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l01072\" name=\"l01072\"></a><span class=\"lineno\"> 1072</span>        <span class=\"comment\">//  Limit masks require the subdivision Rule for the vertex in order to deal</span></div>\n+<div class=\"line\"><a id=\"l01073\" name=\"l01073\"></a><span class=\"lineno\"> 1073</span>        <span class=\"comment\">//  with infinitely sharp features correctly -- including boundaries and corners.</span></div>\n+<div class=\"line\"><a id=\"l01074\" name=\"l01074\"></a><span class=\"lineno\"> 1074</span>        <span class=\"comment\">//  The vertex neighborhood is minimally defined with vertex and edge counts.</span></div>\n+<div class=\"line\"><a id=\"l01075\" name=\"l01075\"></a><span class=\"lineno\"> 1075</span>        <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l01076\" name=\"l01076\"></a><span class=\"lineno\"> 1076</span>        <a class=\"code hl_enumeration\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78\">Sdc::Crease::Rule</a> vRule = level.getVertexRule(vert);</div>\n+<div class=\"line\"><a id=\"l01077\" name=\"l01077\"></a><span class=\"lineno\"> 1077</span> </div>\n+<div class=\"line\"><a id=\"l01078\" name=\"l01078\"></a><span class=\"lineno\"> 1078</span>        <span class=\"comment\">//  This is a bit obscure -- child vertex index will be ignored here</span></div>\n+<div class=\"line\"><a id=\"l01079\" name=\"l01079\"></a><span class=\"lineno\"> 1079</span>        vHood.SetIndex(vert, vert);</div>\n+<div class=\"line\"><a id=\"l01080\" name=\"l01080\"></a><span class=\"lineno\"> 1080</span> </div>\n+<div class=\"line\"><a id=\"l01081\" name=\"l01081\"></a><span class=\"lineno\"> 1081</span>        <span class=\"keywordflow\">if</span> (hasTangents) {</div>\n+<div class=\"line\"><a id=\"l01082\" name=\"l01082\"></a><span class=\"lineno\"> 1082</span>            scheme.ComputeVertexLimitMask(vHood, posMask, tan1Mask, tan2Mask, vRule);</div>\n+<div class=\"line\"><a id=\"l01083\" name=\"l01083\"></a><span class=\"lineno\"> 1083</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l01084\" name=\"l01084\"></a><span class=\"lineno\"> 1084</span>            scheme.ComputeVertexLimitMask(vHood, posMask, vRule);</div>\n+<div class=\"line\"><a id=\"l01085\" name=\"l01085\"></a><span class=\"lineno\"> 1085</span>        }</div>\n+<div class=\"line\"><a id=\"l01086\" name=\"l01086\"></a><span class=\"lineno\"> 1086</span> </div>\n+<div class=\"line\"><a id=\"l01087\" name=\"l01087\"></a><span class=\"lineno\"> 1087</span>        <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l01088\" name=\"l01088\"></a><span class=\"lineno\"> 1088</span>        <span class=\"comment\">//  Gather the neighboring vertices of this vertex -- the vertices opposite its</span></div>\n+<div class=\"line\"><a id=\"l01089\" name=\"l01089\"></a><span class=\"lineno\"> 1089</span>        <span class=\"comment\">//  incident edges, and the opposite vertices of its incident faces:</span></div>\n+<div class=\"line\"><a id=\"l01090\" name=\"l01090\"></a><span class=\"lineno\"> 1090</span>        <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l01091\" name=\"l01091\"></a><span class=\"lineno\"> 1091</span>        <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> * eIndices = indexBuffer;</div>\n+<div class=\"line\"><a id=\"l01092\" name=\"l01092\"></a><span class=\"lineno\"> 1092</span>        <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> * fIndices = indexBuffer + vEdges.<a class=\"code hl_function\" href=\"a01353.html#a60304b65bf89363bcc3165d3cde67f86\">size</a>();</div>\n+<div class=\"line\"><a id=\"l01093\" name=\"l01093\"></a><span class=\"lineno\"> 1093</span> </div>\n+<div class=\"line\"><a id=\"l01094\" name=\"l01094\"></a><span class=\"lineno\"> 1094</span>        <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; vEdges.size(); ++i) {</div>\n+<div class=\"line\"><a id=\"l01095\" name=\"l01095\"></a><span class=\"lineno\"> 1095</span>            <a class=\"code hl_typedef\" href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">ConstIndexArray</a> eVerts = level.getEdgeVertices(vEdges[i]);</div>\n+<div class=\"line\"><a id=\"l01096\" name=\"l01096\"></a><span class=\"lineno\"> 1096</span> </div>\n+<div class=\"line\"><a id=\"l01097\" name=\"l01097\"></a><span class=\"lineno\"> 1097</span>            eIndices[i] = (eVerts[0] == vert) ? eVerts[1] : eVerts[0];</div>\n+<div class=\"line\"><a id=\"l01098\" name=\"l01098\"></a><span class=\"lineno\"> 1098</span>        }</div>\n+<div class=\"line\"><a id=\"l01099\" name=\"l01099\"></a><span class=\"lineno\"> 1099</span>        <span class=\"keywordflow\">if</span> (posMask.GetNumFaceWeights() || (hasTangents &amp;&amp; tan1Mask.GetNumFaceWeights())) {</div>\n+<div class=\"line\"><a id=\"l01100\" name=\"l01100\"></a><span class=\"lineno\"> 1100</span>            <a class=\"code hl_typedef\" href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">ConstIndexArray</a>      vFaces = level.getVertexFaces(vert);</div>\n+<div class=\"line\"><a id=\"l01101\" name=\"l01101\"></a><span class=\"lineno\"> 1101</span>            <a class=\"code hl_typedef\" href=\"a00908.html#a48f809d54fe9eb8cbd9d3f7521ba4fb1\">ConstLocalIndexArray</a> vInFace = level.getVertexFaceLocalIndices(vert);</div>\n+<div class=\"line\"><a id=\"l01102\" name=\"l01102\"></a><span class=\"lineno\"> 1102</span> </div>\n+<div class=\"line\"><a id=\"l01103\" name=\"l01103\"></a><span class=\"lineno\"> 1103</span>            <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; vFaces.size(); ++i) {</div>\n+<div class=\"line\"><a id=\"l01104\" name=\"l01104\"></a><span class=\"lineno\"> 1104</span>                <a class=\"code hl_typedef\" href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">ConstIndexArray</a> fVerts = level.getFaceVertices(vFaces[i]);</div>\n+<div class=\"line\"><a id=\"l01105\" name=\"l01105\"></a><span class=\"lineno\"> 1105</span> </div>\n+<div class=\"line\"><a id=\"l01106\" name=\"l01106\"></a><span class=\"lineno\"> 1106</span>                <a class=\"code hl_typedef\" href=\"a00908.html#a200172f1c19545bc01f292afa2167e2f\">LocalIndex</a> vOppInFace = (vInFace[i] + 2);</div>\n+<div class=\"line\"><a id=\"l01107\" name=\"l01107\"></a><span class=\"lineno\"> 1107</span>                <span class=\"keywordflow\">if</span> (vOppInFace &gt;= fVerts.size()) vOppInFace -= (<a class=\"code hl_typedef\" href=\"a00908.html#a200172f1c19545bc01f292afa2167e2f\">LocalIndex</a>)fVerts.<a class=\"code hl_function\" href=\"a01353.html#a60304b65bf89363bcc3165d3cde67f86\">size</a>();</div>\n+<div class=\"line\"><a id=\"l01108\" name=\"l01108\"></a><span class=\"lineno\"> 1108</span> </div>\n+<div class=\"line\"><a id=\"l01109\" name=\"l01109\"></a><span class=\"lineno\"> 1109</span>                fIndices[i] = level.getFaceVertices(vFaces[i])[vOppInFace];</div>\n+<div class=\"line\"><a id=\"l01110\" name=\"l01110\"></a><span class=\"lineno\"> 1110</span>            }</div>\n+<div class=\"line\"><a id=\"l01111\" name=\"l01111\"></a><span class=\"lineno\"> 1111</span>        }</div>\n+<div class=\"line\"><a id=\"l01112\" name=\"l01112\"></a><span class=\"lineno\"> 1112</span> </div>\n+<div class=\"line\"><a id=\"l01113\" name=\"l01113\"></a><span class=\"lineno\"> 1113</span>        <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l01114\" name=\"l01114\"></a><span class=\"lineno\"> 1114</span>        <span class=\"comment\">//  Combine the weights and indices for position and tangents.  As with applying</span></div>\n+<div class=\"line\"><a id=\"l01115\" name=\"l01115\"></a><span class=\"lineno\"> 1115</span>        <span class=\"comment\">//  refinement masks to vertex data, in order to improve numerical precision, it&#39;s</span></div>\n+<div class=\"line\"><a id=\"l01116\" name=\"l01116\"></a><span class=\"lineno\"> 1116</span>        <span class=\"comment\">//  better to apply smaller weights first, so begin with the face-weights followed</span></div>\n+<div class=\"line\"><a id=\"l01117\" name=\"l01117\"></a><span class=\"lineno\"> 1117</span>        <span class=\"comment\">//  by the edge-weights and the vertex weight last.</span></div>\n+<div class=\"line\"><a id=\"l01118\" name=\"l01118\"></a><span class=\"lineno\"> 1118</span>        <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l01119\" name=\"l01119\"></a><span class=\"lineno\"> 1119</span>        dstPos[vert].Clear();</div>\n+<div class=\"line\"><a id=\"l01120\" name=\"l01120\"></a><span class=\"lineno\"> 1120</span>        <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; posMask.GetNumFaceWeights(); ++i) {</div>\n+<div class=\"line\"><a id=\"l01121\" name=\"l01121\"></a><span class=\"lineno\"> 1121</span>            dstPos[vert].AddWithWeight(src[fIndices[i]], fPosWeights[i]);</div>\n+<div class=\"line\"><a id=\"l01122\" name=\"l01122\"></a><span class=\"lineno\"> 1122</span>        }</div>\n+<div class=\"line\"><a id=\"l01123\" name=\"l01123\"></a><span class=\"lineno\"> 1123</span>        <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; posMask.GetNumEdgeWeights(); ++i) {</div>\n+<div class=\"line\"><a id=\"l01124\" name=\"l01124\"></a><span class=\"lineno\"> 1124</span>            dstPos[vert].AddWithWeight(src[eIndices[i]], ePosWeights[i]);</div>\n+<div class=\"line\"><a id=\"l01125\" name=\"l01125\"></a><span class=\"lineno\"> 1125</span>        }</div>\n+<div class=\"line\"><a id=\"l01126\" name=\"l01126\"></a><span class=\"lineno\"> 1126</span>        dstPos[vert].AddWithWeight(src[vert], vPosWeights[0]);</div>\n+<div class=\"line\"><a id=\"l01127\" name=\"l01127\"></a><span class=\"lineno\"> 1127</span> </div>\n+<div class=\"line\"><a id=\"l01128\" name=\"l01128\"></a><span class=\"lineno\"> 1128</span>        <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l01129\" name=\"l01129\"></a><span class=\"lineno\"> 1129</span>        <span class=\"comment\">//  Apply the tangent masks -- both will have the same number of weights and </span></div>\n+<div class=\"line\"><a id=\"l01130\" name=\"l01130\"></a><span class=\"lineno\"> 1130</span>        <span class=\"comment\">//  indices (one tangent may be &quot;padded&quot; to accommodate the other), but these</span></div>\n+<div class=\"line\"><a id=\"l01131\" name=\"l01131\"></a><span class=\"lineno\"> 1131</span>        <span class=\"comment\">//  may differ from those of the position:</span></div>\n+<div class=\"line\"><a id=\"l01132\" name=\"l01132\"></a><span class=\"lineno\"> 1132</span>        <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l01133\" name=\"l01133\"></a><span class=\"lineno\"> 1133</span>        <span class=\"keywordflow\">if</span> (hasTangents) {</div>\n+<div class=\"line\"><a id=\"l01134\" name=\"l01134\"></a><span class=\"lineno\"> 1134</span>            assert(tan1Mask.GetNumFaceWeights() == tan2Mask.GetNumFaceWeights());</div>\n+<div class=\"line\"><a id=\"l01135\" name=\"l01135\"></a><span class=\"lineno\"> 1135</span>            assert(tan1Mask.GetNumEdgeWeights() == tan2Mask.GetNumEdgeWeights());</div>\n+<div class=\"line\"><a id=\"l01136\" name=\"l01136\"></a><span class=\"lineno\"> 1136</span> </div>\n+<div class=\"line\"><a id=\"l01137\" name=\"l01137\"></a><span class=\"lineno\"> 1137</span>            U1 &amp; dstTan1 = *dstTan1Ptr;</div>\n+<div class=\"line\"><a id=\"l01138\" name=\"l01138\"></a><span class=\"lineno\"> 1138</span>            U2 &amp; dstTan2 = *dstTan2Ptr;</div>\n+<div class=\"line\"><a id=\"l01139\" name=\"l01139\"></a><span class=\"lineno\"> 1139</span> </div>\n+<div class=\"line\"><a id=\"l01140\" name=\"l01140\"></a><span class=\"lineno\"> 1140</span>            dstTan1[vert].Clear();</div>\n+<div class=\"line\"><a id=\"l01141\" name=\"l01141\"></a><span class=\"lineno\"> 1141</span>            dstTan2[vert].Clear();</div>\n+<div class=\"line\"><a id=\"l01142\" name=\"l01142\"></a><span class=\"lineno\"> 1142</span>            <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; tan1Mask.GetNumFaceWeights(); ++i) {</div>\n+<div class=\"line\"><a id=\"l01143\" name=\"l01143\"></a><span class=\"lineno\"> 1143</span>                dstTan1[vert].AddWithWeight(src[fIndices[i]], fTan1Weights[i]);</div>\n+<div class=\"line\"><a id=\"l01144\" name=\"l01144\"></a><span class=\"lineno\"> 1144</span>                dstTan2[vert].AddWithWeight(src[fIndices[i]], fTan2Weights[i]);</div>\n+<div class=\"line\"><a id=\"l01145\" name=\"l01145\"></a><span class=\"lineno\"> 1145</span>            }</div>\n+<div class=\"line\"><a id=\"l01146\" name=\"l01146\"></a><span class=\"lineno\"> 1146</span>            <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; tan1Mask.GetNumEdgeWeights(); ++i) {</div>\n+<div class=\"line\"><a id=\"l01147\" name=\"l01147\"></a><span class=\"lineno\"> 1147</span>                dstTan1[vert].AddWithWeight(src[eIndices[i]], eTan1Weights[i]);</div>\n+<div class=\"line\"><a id=\"l01148\" name=\"l01148\"></a><span class=\"lineno\"> 1148</span>                dstTan2[vert].AddWithWeight(src[eIndices[i]], eTan2Weights[i]);</div>\n+<div class=\"line\"><a id=\"l01149\" name=\"l01149\"></a><span class=\"lineno\"> 1149</span>            }</div>\n+<div class=\"line\"><a id=\"l01150\" name=\"l01150\"></a><span class=\"lineno\"> 1150</span>            dstTan1[vert].AddWithWeight(src[vert], vTan1Weights[0]);</div>\n+<div class=\"line\"><a id=\"l01151\" name=\"l01151\"></a><span class=\"lineno\"> 1151</span>            dstTan2[vert].AddWithWeight(src[vert], vTan2Weights[0]);</div>\n+<div class=\"line\"><a id=\"l01152\" name=\"l01152\"></a><span class=\"lineno\"> 1152</span>        }</div>\n+<div class=\"line\"><a id=\"l01153\" name=\"l01153\"></a><span class=\"lineno\"> 1153</span>    }</div>\n+<div class=\"line\"><a id=\"l01154\" name=\"l01154\"></a><span class=\"lineno\"> 1154</span>}</div>\n+<div class=\"line\"><a id=\"l01155\" name=\"l01155\"></a><span class=\"lineno\"> 1155</span> </div>\n+<div class=\"line\"><a id=\"l01156\" name=\"l01156\"></a><span class=\"lineno\"> 1156</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l01157\" name=\"l01157\"></a><span class=\"lineno\"> 1157</span><span class=\"keyword\">template</span> &lt;Sdc::SchemeType SCHEME, <span class=\"keyword\">class</span> T, <span class=\"keyword\">class</span> U&gt;</div>\n+<div class=\"line\"><a id=\"l01158\" name=\"l01158\"></a><span class=\"lineno\"> 1158</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"line\"><a id=\"l01159\" name=\"l01159\"></a><span class=\"lineno\"> 1159</span>PrimvarRefinerReal&lt;REAL&gt;::limitFVar(T <span class=\"keyword\">const</span> &amp; src, U &amp; dst, <span class=\"keywordtype\">int</span> channel)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l01160\" name=\"l01160\"></a><span class=\"lineno\"> 1160</span> </div>\n+<div class=\"line\"><a id=\"l01161\" name=\"l01161\"></a><span class=\"lineno\"> 1161</span>    Sdc::Scheme&lt;SCHEME&gt; scheme(_refiner._subdivOptions);</div>\n+<div class=\"line\"><a id=\"l01162\" name=\"l01162\"></a><span class=\"lineno\"> 1162</span> </div>\n+<div class=\"line\"><a id=\"l01163\" name=\"l01163\"></a><span class=\"lineno\"> 1163</span>    Vtr::internal::Level <span class=\"keyword\">const</span> &amp;      level       = _refiner.getLevel(_refiner.GetMaxLevel());</div>\n+<div class=\"line\"><a id=\"l01164\" name=\"l01164\"></a><span class=\"lineno\"> 1164</span>    Vtr::internal::FVarLevel <span class=\"keyword\">const</span> &amp;  fvarChannel = level.getFVarLevel(channel);</div>\n+<div class=\"line\"><a id=\"l01165\" name=\"l01165\"></a><span class=\"lineno\"> 1165</span> </div>\n+<div class=\"line\"><a id=\"l01166\" name=\"l01166\"></a><span class=\"lineno\"> 1166</span>    <span class=\"keywordtype\">int</span> maxWeightsPerMask = 1 + 2 * level.getMaxValence();</div>\n+<div class=\"line\"><a id=\"l01167\" name=\"l01167\"></a><span class=\"lineno\"> 1167</span> </div>\n+<div class=\"line\"><a id=\"l01168\" name=\"l01168\"></a><span class=\"lineno\"> 1168</span>    Vtr::internal::StackBuffer&lt;Weight,33&gt; weightBuffer(maxWeightsPerMask);</div>\n+<div class=\"line\"><a id=\"l01169\" name=\"l01169\"></a><span class=\"lineno\"> 1169</span>    Vtr::internal::StackBuffer&lt;Index,16&gt; vEdgeBuffer(level.getMaxValence());</div>\n+<div class=\"line\"><a id=\"l01170\" name=\"l01170\"></a><span class=\"lineno\"> 1170</span> </div>\n+<div class=\"line\"><a id=\"l01171\" name=\"l01171\"></a><span class=\"lineno\"> 1171</span>    <span class=\"comment\">//  This is a bit obscure -- assign both parent and child as last level</span></div>\n+<div class=\"line\"><a id=\"l01172\" name=\"l01172\"></a><span class=\"lineno\"> 1172</span>    Vtr::internal::VertexInterface vHood(level, level);</div>\n+<div class=\"line\"><a id=\"l01173\" name=\"l01173\"></a><span class=\"lineno\"> 1173</span> </div>\n+<div class=\"line\"><a id=\"l01174\" name=\"l01174\"></a><span class=\"lineno\"> 1174</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> vert = 0; vert &lt; level.getNumVertices(); ++vert) {</div>\n+<div class=\"line\"><a id=\"l01175\" name=\"l01175\"></a><span class=\"lineno\"> 1175</span> </div>\n+<div class=\"line\"><a id=\"l01176\" name=\"l01176\"></a><span class=\"lineno\"> 1176</span>        <a class=\"code hl_typedef\" href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">ConstIndexArray</a> vEdges  = level.getVertexEdges(vert);</div>\n+<div class=\"line\"><a id=\"l01177\" name=\"l01177\"></a><span class=\"lineno\"> 1177</span>        <a class=\"code hl_typedef\" href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">ConstIndexArray</a> vValues = fvarChannel.getVertexValues(vert);</div>\n+<div class=\"line\"><a id=\"l01178\" name=\"l01178\"></a><span class=\"lineno\"> 1178</span> </div>\n+<div class=\"line\"><a id=\"l01179\" name=\"l01179\"></a><span class=\"lineno\"> 1179</span>        <span class=\"comment\">//  Incomplete vertices (present in sparse refinement) do not have their full</span></div>\n+<div class=\"line\"><a id=\"l01180\" name=\"l01180\"></a><span class=\"lineno\"> 1180</span>        <span class=\"comment\">//  topological neighborhood to determine a proper limit -- just leave the</span></div>\n+<div class=\"line\"><a id=\"l01181\" name=\"l01181\"></a><span class=\"lineno\"> 1181</span>        <span class=\"comment\">//  values (perhaps more than one per vertex) at the refined location.</span></div>\n+<div class=\"line\"><a id=\"l01182\" name=\"l01182\"></a><span class=\"lineno\"> 1182</span>        <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l01183\" name=\"l01183\"></a><span class=\"lineno\"> 1183</span>        <span class=\"comment\">//  The same can be done if the face-varying channel is purely linear.</span></div>\n+<div class=\"line\"><a id=\"l01184\" name=\"l01184\"></a><span class=\"lineno\"> 1184</span>        <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l01185\" name=\"l01185\"></a><span class=\"lineno\"> 1185</span>        <span class=\"keywordtype\">bool</span> isIncomplete = (level.getVertexTag(vert)._incomplete || (vEdges.size() == 0));</div>\n+<div class=\"line\"><a id=\"l01186\" name=\"l01186\"></a><span class=\"lineno\"> 1186</span>        <span class=\"keywordflow\">if</span> (isIncomplete || fvarChannel.isLinear()) {</div>\n+<div class=\"line\"><a id=\"l01187\" name=\"l01187\"></a><span class=\"lineno\"> 1187</span>            <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; vValues.size(); ++i) {</div>\n+<div class=\"line\"><a id=\"l01188\" name=\"l01188\"></a><span class=\"lineno\"> 1188</span>                <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a> vValue = vValues[i];</div>\n+<div class=\"line\"><a id=\"l01189\" name=\"l01189\"></a><span class=\"lineno\"> 1189</span> </div>\n+<div class=\"line\"><a id=\"l01190\" name=\"l01190\"></a><span class=\"lineno\"> 1190</span>                dst[vValue].Clear();</div>\n+<div class=\"line\"><a id=\"l01191\" name=\"l01191\"></a><span class=\"lineno\"> 1191</span>                dst[vValue].AddWithWeight(src[vValue], 1.0f);</div>\n+<div class=\"line\"><a id=\"l01192\" name=\"l01192\"></a><span class=\"lineno\"> 1192</span>            }</div>\n+<div class=\"line\"><a id=\"l01193\" name=\"l01193\"></a><span class=\"lineno\"> 1193</span>            <span class=\"keywordflow\">continue</span>;</div>\n+<div class=\"line\"><a id=\"l01194\" name=\"l01194\"></a><span class=\"lineno\"> 1194</span>        }</div>\n+<div class=\"line\"><a id=\"l01195\" name=\"l01195\"></a><span class=\"lineno\"> 1195</span> </div>\n+<div class=\"line\"><a id=\"l01196\" name=\"l01196\"></a><span class=\"lineno\"> 1196</span>        <span class=\"keywordtype\">bool</span> fvarVertMatchesVertex = fvarChannel.valueTopologyMatches(vValues[0]);</div>\n+<div class=\"line\"><a id=\"l01197\" name=\"l01197\"></a><span class=\"lineno\"> 1197</span>        <span class=\"keywordflow\">if</span> (fvarVertMatchesVertex) {</div>\n+<div class=\"line\"><a id=\"l01198\" name=\"l01198\"></a><span class=\"lineno\"> 1198</span> </div>\n+<div class=\"line\"><a id=\"l01199\" name=\"l01199\"></a><span class=\"lineno\"> 1199</span>            <span class=\"comment\">//  Assign the mask weights to the common buffer and compute the mask:</span></div>\n+<div class=\"line\"><a id=\"l01200\" name=\"l01200\"></a><span class=\"lineno\"> 1200</span>            <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l01201\" name=\"l01201\"></a><span class=\"lineno\"> 1201</span>            Weight * vWeights = weightBuffer,</div>\n+<div class=\"line\"><a id=\"l01202\" name=\"l01202\"></a><span class=\"lineno\"> 1202</span>                   * eWeights = vWeights + 1,</div>\n+<div class=\"line\"><a id=\"l01203\" name=\"l01203\"></a><span class=\"lineno\"> 1203</span>                   * fWeights = eWeights + vEdges.<a class=\"code hl_function\" href=\"a01353.html#a60304b65bf89363bcc3165d3cde67f86\">size</a>();</div>\n+<div class=\"line\"><a id=\"l01204\" name=\"l01204\"></a><span class=\"lineno\"> 1204</span> </div>\n+<div class=\"line\"><a id=\"l01205\" name=\"l01205\"></a><span class=\"lineno\"> 1205</span>            Mask vMask(vWeights, eWeights, fWeights);</div>\n+<div class=\"line\"><a id=\"l01206\" name=\"l01206\"></a><span class=\"lineno\"> 1206</span> </div>\n+<div class=\"line\"><a id=\"l01207\" name=\"l01207\"></a><span class=\"lineno\"> 1207</span>            vHood.SetIndex(vert, vert);</div>\n+<div class=\"line\"><a id=\"l01208\" name=\"l01208\"></a><span class=\"lineno\"> 1208</span> </div>\n+<div class=\"line\"><a id=\"l01209\" name=\"l01209\"></a><span class=\"lineno\"> 1209</span>            scheme.ComputeVertexLimitMask(vHood, vMask, level.getVertexRule(vert));</div>\n+<div class=\"line\"><a id=\"l01210\" name=\"l01210\"></a><span class=\"lineno\"> 1210</span> </div>\n+<div class=\"line\"><a id=\"l01211\" name=\"l01211\"></a><span class=\"lineno\"> 1211</span>            <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l01212\" name=\"l01212\"></a><span class=\"lineno\"> 1212</span>            <span class=\"comment\">//  Apply mask to corresponding FVar values for neighboring vertices:</span></div>\n+<div class=\"line\"><a id=\"l01213\" name=\"l01213\"></a><span class=\"lineno\"> 1213</span>            <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l01214\" name=\"l01214\"></a><span class=\"lineno\"> 1214</span>            <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a> vValue = vValues[0];</div>\n+<div class=\"line\"><a id=\"l01215\" name=\"l01215\"></a><span class=\"lineno\"> 1215</span> </div>\n+<div class=\"line\"><a id=\"l01216\" name=\"l01216\"></a><span class=\"lineno\"> 1216</span>            dst[vValue].Clear();</div>\n+<div class=\"line\"><a id=\"l01217\" name=\"l01217\"></a><span class=\"lineno\"> 1217</span>            <span class=\"keywordflow\">if</span> (vMask.GetNumFaceWeights() &gt; 0) {</div>\n+<div class=\"line\"><a id=\"l01218\" name=\"l01218\"></a><span class=\"lineno\"> 1218</span>                assert(!vMask.AreFaceWeightsForFaceCenters());</div>\n+<div class=\"line\"><a id=\"l01219\" name=\"l01219\"></a><span class=\"lineno\"> 1219</span> </div>\n+<div class=\"line\"><a id=\"l01220\" name=\"l01220\"></a><span class=\"lineno\"> 1220</span>                <a class=\"code hl_typedef\" href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">ConstIndexArray</a>      vFaces = level.getVertexFaces(vert);</div>\n+<div class=\"line\"><a id=\"l01221\" name=\"l01221\"></a><span class=\"lineno\"> 1221</span>                <a class=\"code hl_typedef\" href=\"a00908.html#a48f809d54fe9eb8cbd9d3f7521ba4fb1\">ConstLocalIndexArray</a> vInFace = level.getVertexFaceLocalIndices(vert);</div>\n+<div class=\"line\"><a id=\"l01222\" name=\"l01222\"></a><span class=\"lineno\"> 1222</span> </div>\n+<div class=\"line\"><a id=\"l01223\" name=\"l01223\"></a><span class=\"lineno\"> 1223</span>                <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; vFaces.size(); ++i) {</div>\n+<div class=\"line\"><a id=\"l01224\" name=\"l01224\"></a><span class=\"lineno\"> 1224</span>                    <a class=\"code hl_typedef\" href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">ConstIndexArray</a> faceValues = fvarChannel.getFaceValues(vFaces[i]);</div>\n+<div class=\"line\"><a id=\"l01225\" name=\"l01225\"></a><span class=\"lineno\"> 1225</span>                    <a class=\"code hl_typedef\" href=\"a00908.html#a200172f1c19545bc01f292afa2167e2f\">LocalIndex</a> vOppInFace = vInFace[i] + 2;</div>\n+<div class=\"line\"><a id=\"l01226\" name=\"l01226\"></a><span class=\"lineno\"> 1226</span>                    <span class=\"keywordflow\">if</span> (vOppInFace &gt;= faceValues.size()) vOppInFace -= faceValues.<a class=\"code hl_function\" href=\"a01353.html#a60304b65bf89363bcc3165d3cde67f86\">size</a>();</div>\n+<div class=\"line\"><a id=\"l01227\" name=\"l01227\"></a><span class=\"lineno\"> 1227</span> </div>\n+<div class=\"line\"><a id=\"l01228\" name=\"l01228\"></a><span class=\"lineno\"> 1228</span>                    <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> vValueOppositeFace = faceValues[vOppInFace];</div>\n+<div class=\"line\"><a id=\"l01229\" name=\"l01229\"></a><span class=\"lineno\"> 1229</span> </div>\n+<div class=\"line\"><a id=\"l01230\" name=\"l01230\"></a><span class=\"lineno\"> 1230</span>                    dst[vValue].AddWithWeight(src[vValueOppositeFace], fWeights[i]);</div>\n+<div class=\"line\"><a id=\"l01231\" name=\"l01231\"></a><span class=\"lineno\"> 1231</span>                }</div>\n+<div class=\"line\"><a id=\"l01232\" name=\"l01232\"></a><span class=\"lineno\"> 1232</span>            }</div>\n+<div class=\"line\"><a id=\"l01233\" name=\"l01233\"></a><span class=\"lineno\"> 1233</span>            <span class=\"keywordflow\">if</span> (vMask.GetNumEdgeWeights() &gt; 0) {</div>\n+<div class=\"line\"><a id=\"l01234\" name=\"l01234\"></a><span class=\"lineno\"> 1234</span>                <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> * vEdgeValues = vEdgeBuffer;</div>\n+<div class=\"line\"><a id=\"l01235\" name=\"l01235\"></a><span class=\"lineno\"> 1235</span>                fvarChannel.getVertexEdgeValues(vert, vEdgeValues);</div>\n+<div class=\"line\"><a id=\"l01236\" name=\"l01236\"></a><span class=\"lineno\"> 1236</span> </div>\n+<div class=\"line\"><a id=\"l01237\" name=\"l01237\"></a><span class=\"lineno\"> 1237</span>                <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; vEdges.size(); ++i) {</div>\n+<div class=\"line\"><a id=\"l01238\" name=\"l01238\"></a><span class=\"lineno\"> 1238</span>                    dst[vValue].AddWithWeight(src[vEdgeValues[i]], eWeights[i]);</div>\n+<div class=\"line\"><a id=\"l01239\" name=\"l01239\"></a><span class=\"lineno\"> 1239</span>                }</div>\n+<div class=\"line\"><a id=\"l01240\" name=\"l01240\"></a><span class=\"lineno\"> 1240</span>            }</div>\n+<div class=\"line\"><a id=\"l01241\" name=\"l01241\"></a><span class=\"lineno\"> 1241</span>            dst[vValue].AddWithWeight(src[vValue], vWeights[0]);</div>\n+<div class=\"line\"><a id=\"l01242\" name=\"l01242\"></a><span class=\"lineno\"> 1242</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l01243\" name=\"l01243\"></a><span class=\"lineno\"> 1243</span>            <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l01244\" name=\"l01244\"></a><span class=\"lineno\"> 1244</span>            <span class=\"comment\">//  Sibling FVar values associated with a vertex will be either a corner or a crease:</span></div>\n+<div class=\"line\"><a id=\"l01245\" name=\"l01245\"></a><span class=\"lineno\"> 1245</span>            <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l01246\" name=\"l01246\"></a><span class=\"lineno\"> 1246</span>            <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; vValues.size(); ++i) {</div>\n+<div class=\"line\"><a id=\"l01247\" name=\"l01247\"></a><span class=\"lineno\"> 1247</span>                <a class=\"code hl_typedef\" href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">Vtr::Index</a> vValue = vValues[i];</div>\n+<div class=\"line\"><a id=\"l01248\" name=\"l01248\"></a><span class=\"lineno\"> 1248</span> </div>\n+<div class=\"line\"><a id=\"l01249\" name=\"l01249\"></a><span class=\"lineno\"> 1249</span>                dst[vValue].Clear();</div>\n+<div class=\"line\"><a id=\"l01250\" name=\"l01250\"></a><span class=\"lineno\"> 1250</span>                <span class=\"keywordflow\">if</span> (fvarChannel.getValueTag(vValue).isCorner()) {</div>\n+<div class=\"line\"><a id=\"l01251\" name=\"l01251\"></a><span class=\"lineno\"> 1251</span>                    dst[vValue].AddWithWeight(src[vValue], 1.0f);</div>\n+<div class=\"line\"><a id=\"l01252\" name=\"l01252\"></a><span class=\"lineno\"> 1252</span>                } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l01253\" name=\"l01253\"></a><span class=\"lineno\"> 1253</span>                    <a class=\"code hl_typedef\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> vEndValues[2];</div>\n+<div class=\"line\"><a id=\"l01254\" name=\"l01254\"></a><span class=\"lineno\"> 1254</span>                    fvarChannel.getVertexCreaseEndValues(vert, i, vEndValues);</div>\n+<div class=\"line\"><a id=\"l01255\" name=\"l01255\"></a><span class=\"lineno\"> 1255</span> </div>\n+<div class=\"line\"><a id=\"l01256\" name=\"l01256\"></a><span class=\"lineno\"> 1256</span>                    dst[vValue].AddWithWeight(src[vEndValues[0]], 1.0f/6.0f);</div>\n+<div class=\"line\"><a id=\"l01257\" name=\"l01257\"></a><span class=\"lineno\"> 1257</span>                    dst[vValue].AddWithWeight(src[vEndValues[1]], 1.0f/6.0f);</div>\n+<div class=\"line\"><a id=\"l01258\" name=\"l01258\"></a><span class=\"lineno\"> 1258</span>                    dst[vValue].AddWithWeight(src[vValue], 2.0f/3.0f);</div>\n+<div class=\"line\"><a id=\"l01259\" name=\"l01259\"></a><span class=\"lineno\"> 1259</span>                }</div>\n+<div class=\"line\"><a id=\"l01260\" name=\"l01260\"></a><span class=\"lineno\"> 1260</span>            }</div>\n+<div class=\"line\"><a id=\"l01261\" name=\"l01261\"></a><span class=\"lineno\"> 1261</span>        }</div>\n+<div class=\"line\"><a id=\"l01262\" name=\"l01262\"></a><span class=\"lineno\"> 1262</span>    }</div>\n+<div class=\"line\"><a id=\"l01263\" name=\"l01263\"></a><span class=\"lineno\"> 1263</span>}</div>\n+<div class=\"line\"><a id=\"l01264\" name=\"l01264\"></a><span class=\"lineno\"> 1264</span> </div>\n+<div class=\"foldopen\" id=\"foldopen01265\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l01265\" name=\"l01265\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01037.html\"> 1265</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01037.html\">PrimvarRefiner</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"a01029.html\">PrimvarRefinerReal</a>&lt;float&gt; {</div>\n+<div class=\"line\"><a id=\"l01266\" name=\"l01266\"></a><span class=\"lineno\"> 1266</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"foldopen\" id=\"foldopen01267\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l01267\" name=\"l01267\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01037.html#a643d81a2ae20ba1897433f5af5a3697a\"> 1267</a></span>    <a class=\"code hl_function\" href=\"a01037.html#a643d81a2ae20ba1897433f5af5a3697a\">PrimvarRefiner</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> &amp; refiner)</div>\n+<div class=\"line\"><a id=\"l01268\" name=\"l01268\"></a><span class=\"lineno\"> 1268</span>        : <a class=\"code hl_class\" href=\"a01029.html\">PrimvarRefinerReal</a>&lt;float&gt;(refiner) { }</div>\n+</div>\n+<div class=\"line\"><a id=\"l01269\" name=\"l01269\"></a><span class=\"lineno\"> 1269</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l01270\" name=\"l01270\"></a><span class=\"lineno\"> 1270</span> </div>\n+<div class=\"line\"><a id=\"l01271\" name=\"l01271\"></a><span class=\"lineno\"> 1271</span>} <span class=\"comment\">// end namespace Far</span></div>\n+<div class=\"line\"><a id=\"l01272\" name=\"l01272\"></a><span class=\"lineno\"> 1272</span> </div>\n+<div class=\"line\"><a id=\"l01273\" name=\"l01273\"></a><span class=\"lineno\"> 1273</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l01274\" name=\"l01274\"></a><span class=\"lineno\"> 1274</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l01275\" name=\"l01275\"></a><span class=\"lineno\"> 1275</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l01276\" name=\"l01276\"></a><span class=\"lineno\"> 1276</span> </div>\n+<div class=\"line\"><a id=\"l01277\" name=\"l01277\"></a><span class=\"lineno\"> 1277</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_FAR_PRIMVAR_REFINER_H */</span><span class=\"preprocessor\"></span></div>\n+</div>\n+</div>\n+</div>\n+</div>\n+</div>\n+</div>\n+</div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa00908_html_a200172f1c19545bc01f292afa2167e2f\"><div class=\"ttname\"><a href=\"a00908.html#a200172f1c19545bc01f292afa2167e2f\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LocalIndex</a></div><div class=\"ttdeci\">Vtr::LocalIndex LocalIndex</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01486_source.html#l00042\">types.h:42</a></div></div>\n+<div class=\"ttc\" id=\"aa00908_html_a25d51c3a61fb3dacded6e48d01fd2fdb\"><div class=\"ttname\"><a href=\"a00908.html#a25d51c3a61fb3dacded6e48d01fd2fdb\">OpenSubdiv::OPENSUBDIV_VERSION::Far::Error</a></div><div class=\"ttdeci\">void Error(ErrorType err, const char *format,...)</div><div class=\"ttdoc\">Sends an OSD error with a message (internal use only)</div></div>\n+<div class=\"ttc\" id=\"aa00908_html_a35788aa710e3f7e277e5f0b008d76d61\"><div class=\"ttname\"><a href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">OpenSubdiv::OPENSUBDIV_VERSION::Far::ConstIndexArray</a></div><div class=\"ttdeci\">Vtr::ConstIndexArray ConstIndexArray</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01486_source.html#l00047\">types.h:47</a></div></div>\n+<div class=\"ttc\" id=\"aa00908_html_a48f809d54fe9eb8cbd9d3f7521ba4fb1\"><div class=\"ttname\"><a href=\"a00908.html#a48f809d54fe9eb8cbd9d3f7521ba4fb1\">OpenSubdiv::OPENSUBDIV_VERSION::Far::ConstLocalIndexArray</a></div><div class=\"ttdeci\">Vtr::ConstLocalIndexArray ConstLocalIndexArray</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01486_source.html#l00048\">types.h:48</a></div></div>\n+<div class=\"ttc\" id=\"aa00908_html_ab0df38968e4f03a3f1f6d6df0f31f45aac565fa39d681e2766584dd87246c3bdd\"><div class=\"ttname\"><a href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45aac565fa39d681e2766584dd87246c3bdd\">OpenSubdiv::OPENSUBDIV_VERSION::Far::FAR_RUNTIME_ERROR</a></div><div class=\"ttdeci\">@ FAR_RUNTIME_ERROR</div><div class=\"ttdoc\">Issue a generic runtime error, but continue execution.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00839_source.html#l00041\">error.h:40</a></div></div>\n+<div class=\"ttc\" id=\"aa00908_html_ab34c85a48f33dfe7b8bf4d966fdebbf2\"><div class=\"ttname\"><a href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">OpenSubdiv::OPENSUBDIV_VERSION::Far::Index</a></div><div class=\"ttdeci\">Vtr::Index Index</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01486_source.html#l00041\">types.h:41</a></div></div>\n+<div class=\"ttc\" id=\"aa00909_html_a4a0e50e01fef3e431767a928c2631cab\"><div class=\"ttname\"><a href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::Index</a></div><div class=\"ttdeci\">int Index</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01495_source.html#l00054\">types.h:54</a></div></div>\n+<div class=\"ttc\" id=\"aa00909_html_a98af1cee938a3f984af1e7e9a205080c\"><div class=\"ttname\"><a href=\"a00909.html#a98af1cee938a3f984af1e7e9a205080c\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::IndexIsValid</a></div><div class=\"ttdeci\">bool IndexIsValid(Index index)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01495_source.html#l00058\">types.h:58</a></div></div>\n+<div class=\"ttc\" id=\"aa00913_html_aa3daa2f428c6be2b1cb394f3a525833da02558f420bac2d6bd3f8411d4b3957a0\"><div class=\"ttname\"><a href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833da02558f420bac2d6bd3f8411d4b3957a0\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::SCHEME_BILINEAR</a></div><div class=\"ttdeci\">@ SCHEME_BILINEAR</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01492_source.html#l00038\">types.h:38</a></div></div>\n+<div class=\"ttc\" id=\"aa00913_html_aa3daa2f428c6be2b1cb394f3a525833da29c9704ef8a61670dfc242b6e6b82a9f\"><div class=\"ttname\"><a href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833da29c9704ef8a61670dfc242b6e6b82a9f\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::SCHEME_CATMARK</a></div><div class=\"ttdeci\">@ SCHEME_CATMARK</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01492_source.html#l00039\">types.h:39</a></div></div>\n+<div class=\"ttc\" id=\"aa00913_html_aa3daa2f428c6be2b1cb394f3a525833da529a2651a5dcfac532e933ffefc36e99\"><div class=\"ttname\"><a href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833da529a2651a5dcfac532e933ffefc36e99\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::SCHEME_LOOP</a></div><div class=\"ttdeci\">@ SCHEME_LOOP</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01492_source.html#l00041\">types.h:40</a></div></div>\n+<div class=\"ttc\" id=\"aa01029_html\"><div class=\"ttname\"><a href=\"a01029.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PrimvarRefinerReal</a></div><div class=\"ttdoc\">Applies refinement operations to generic primvar data.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00851_source.html#l00056\">primvarRefiner.h:56</a></div></div>\n+<div class=\"ttc\" id=\"aa01029_html_a0357839a7fabaa02f1d6d6a3c75e1ec2\"><div class=\"ttname\"><a href=\"a01029.html#a0357839a7fabaa02f1d6d6a3c75e1ec2\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PrimvarRefinerReal::Limit</a></div><div class=\"ttdeci\">void Limit(T const &amp;src, U &amp;dstPos) const</div><div class=\"ttdoc\">Apply limit weights to a primvar buffer.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00851_source.html#l00319\">primvarRefiner.h:319</a></div></div>\n+<div class=\"ttc\" id=\"aa01029_html_a1fe1fbda93c01c326f13929d1c3c6247\"><div class=\"ttname\"><a href=\"a01029.html#a1fe1fbda93c01c326f13929d1c3c6247\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PrimvarRefinerReal::PrimvarRefinerReal</a></div><div class=\"ttdeci\">PrimvarRefinerReal(TopologyRefiner const &amp;refiner)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00851_source.html#l00059\">primvarRefiner.h:59</a></div></div>\n+<div class=\"ttc\" id=\"aa01029_html_a2cf4c50a1117c44ba4d11db92b067401\"><div class=\"ttname\"><a href=\"a01029.html#a2cf4c50a1117c44ba4d11db92b067401\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PrimvarRefinerReal::Limit</a></div><div class=\"ttdeci\">void Limit(T const &amp;src, U &amp;dstPos, U1 &amp;dstTan1, U2 &amp;dstTan2) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00851_source.html#l00344\">primvarRefiner.h:344</a></div></div>\n+<div class=\"ttc\" id=\"aa01029_html_a3f8bd2ef902e11aad1debbdda26bb596\"><div class=\"ttname\"><a href=\"a01029.html#a3f8bd2ef902e11aad1debbdda26bb596\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PrimvarRefinerReal::InterpolateFaceUniform</a></div><div class=\"ttdeci\">void InterpolateFaceUniform(int level, T const &amp;src, U &amp;dst) const</div><div class=\"ttdoc\">Refine uniform (per-face) primvar data between levels.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00851_source.html#l00394\">primvarRefiner.h:394</a></div></div>\n+<div class=\"ttc\" id=\"aa01029_html_a6f7fc8b9ce66fa57ac58ed977cc9c6f0\"><div class=\"ttname\"><a href=\"a01029.html#a6f7fc8b9ce66fa57ac58ed977cc9c6f0\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PrimvarRefinerReal::GetTopologyRefiner</a></div><div class=\"ttdeci\">TopologyRefiner const &amp; GetTopologyRefiner() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00851_source.html#l00062\">primvarRefiner.h:62</a></div></div>\n+<div class=\"ttc\" id=\"aa01029_html_aa2fd72e336a12bf454dd79ba6ce8ee56\"><div class=\"ttname\"><a href=\"a01029.html#aa2fd72e336a12bf454dd79ba6ce8ee56\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PrimvarRefinerReal::InterpolateVarying</a></div><div class=\"ttdeci\">void InterpolateVarying(int level, T const &amp;src, U &amp;dst) const</div><div class=\"ttdoc\">Apply only varying interpolation weights to a primvar buffer for a single level of refinement.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00851_source.html#l00412\">primvarRefiner.h:412</a></div></div>\n+<div class=\"ttc\" id=\"aa01029_html_ab97b75b7c0fffa06a5948bd6ba7b420d\"><div class=\"ttname\"><a href=\"a01029.html#ab97b75b7c0fffa06a5948bd6ba7b420d\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PrimvarRefinerReal::Interpolate</a></div><div class=\"ttdeci\">void Interpolate(int level, T const &amp;src, U &amp;dst) const</div><div class=\"ttdoc\">Apply vertex interpolation weights to a primvar buffer for a single level of refinement.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00851_source.html#l00267\">primvarRefiner.h:267</a></div></div>\n+<div class=\"ttc\" id=\"aa01029_html_ad8f74e1887299ed02e0094100f18c998\"><div class=\"ttname\"><a href=\"a01029.html#ad8f74e1887299ed02e0094100f18c998\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PrimvarRefinerReal::InterpolateFaceVarying</a></div><div class=\"ttdeci\">void InterpolateFaceVarying(int level, T const &amp;src, U &amp;dst, int channel=0) const</div><div class=\"ttdoc\">Apply face-varying interpolation weights to a primvar buffer associated with a particular face-varyin...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00851_source.html#l00293\">primvarRefiner.h:293</a></div></div>\n+<div class=\"ttc\" id=\"aa01029_html_ade7a1750cdc922e27c561520815d8b27\"><div class=\"ttname\"><a href=\"a01029.html#ade7a1750cdc922e27c561520815d8b27\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PrimvarRefinerReal::~PrimvarRefinerReal</a></div><div class=\"ttdeci\">~PrimvarRefinerReal()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00851_source.html#l00060\">primvarRefiner.h:60</a></div></div>\n+<div class=\"ttc\" id=\"aa01029_html_afdee0e9e9c6edd34c96892efff808a87\"><div class=\"ttname\"><a href=\"a01029.html#afdee0e9e9c6edd34c96892efff808a87\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PrimvarRefinerReal::LimitFaceVarying</a></div><div class=\"ttdeci\">void LimitFaceVarying(T const &amp;src, U &amp;dst, int channel=0) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00851_source.html#l00369\">primvarRefiner.h:369</a></div></div>\n+<div class=\"ttc\" id=\"aa01037_html\"><div class=\"ttname\"><a href=\"a01037.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PrimvarRefiner</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00851_source.html#l01265\">primvarRefiner.h:1265</a></div></div>\n+<div class=\"ttc\" id=\"aa01037_html_a643d81a2ae20ba1897433f5af5a3697a\"><div class=\"ttname\"><a href=\"a01037.html#a643d81a2ae20ba1897433f5af5a3697a\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PrimvarRefiner::PrimvarRefiner</a></div><div class=\"ttdeci\">PrimvarRefiner(TopologyRefiner const &amp;refiner)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00851_source.html#l01267\">primvarRefiner.h:1267</a></div></div>\n+<div class=\"ttc\" id=\"aa01121_html\"><div class=\"ttname\"><a href=\"a01121.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner</a></div><div class=\"ttdoc\">Stores topology data for a specified set of refinement options.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00051\">topologyRefiner.h:51</a></div></div>\n+<div class=\"ttc\" id=\"aa01333_html_a11fcd51ef86118f65e603c1474377a78\"><div class=\"ttname\"><a href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::Rule</a></div><div class=\"ttdeci\">Rule</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00869_source.html#l00082\">crease.h:82</a></div></div>\n+<div class=\"ttc\" id=\"aa01333_html_a11fcd51ef86118f65e603c1474377a78a966fa1ae8aeb8587c498cf6a92cc3335\"><div class=\"ttname\"><a href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78a966fa1ae8aeb8587c498cf6a92cc3335\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::RULE_CREASE</a></div><div class=\"ttdeci\">@ RULE_CREASE</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00869_source.html#l00086\">crease.h:86</a></div></div>\n+<div class=\"ttc\" id=\"aa01341_html\"><div class=\"ttname\"><a href=\"a01341.html\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme</a></div><div class=\"ttdoc\">Scheme is a class template which provides all implementation for the subdivision schemes supported by...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00863_source.html#l00066\">scheme.h:66</a></div></div>\n+<div class=\"ttc\" id=\"aa01353_html\"><div class=\"ttname\"><a href=\"a01353.html\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00797_source.html#l00053\">array.h:53</a></div></div>\n+<div class=\"ttc\" id=\"aa01353_html_a60304b65bf89363bcc3165d3cde67f86\"><div class=\"ttname\"><a href=\"a01353.html#a60304b65bf89363bcc3165d3cde67f86\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray::size</a></div><div class=\"ttdeci\">size_type size() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00797_source.html#l00072\">array.h:72</a></div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00851.html\">mtlPatchShaderSource.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7f420b72a822828cfa8b0561c695a5cc.html\">far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00851.html\">primvarRefiner.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-mtlPatchShaderSource.h\n+primvarRefiner.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2013 Pixar\n+2// Copyright 2015 DreamWorks Animation LLC.\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -23,103 +23,1388 @@\n 17//\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n-24\n-25#ifndef OPENSUBDIV3_OSD_MTL_PATCH_SHADER_SOURCE_H\n-26#define OPENSUBDIV3_OSD_MTL_PATCH_SHADER_SOURCE_H\n-27\n-28#import \"../version.h\"\n-29\n-30#import \"../far/patchDescriptor.h\"\n-31\n-32#import <string>\n-33\n-34namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-35namespace OPENSUBDIV_VERSION {\n-36\n-37namespace Osd {\n-38\n-_\b4_\b0class _\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be {\n-41public:\n-_\b4_\b5 static std::string _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bB_\ba_\bs_\bi_\bs_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be();\n+24#ifndef OPENSUBDIV3_FAR_PRIMVAR_REFINER_H\n+25#define OPENSUBDIV3_FAR_PRIMVAR_REFINER_H\n+26\n+27#include \"../version.h\"\n+28\n+29#include \"../sdc/types.h\"\n+30#include \"../sdc/options.h\"\n+31#include \"../sdc/bilinearScheme.h\"\n+32#include \"../sdc/catmarkScheme.h\"\n+33#include \"../sdc/loopScheme.h\"\n+34#include \"../vtr/level.h\"\n+35#include \"../vtr/fvarLevel.h\"\n+36#include \"../vtr/refinement.h\"\n+37#include \"../vtr/fvarRefinement.h\"\n+38#include \"../vtr/stackBuffer.h\"\n+39#include \"../vtr/componentInterfaces.h\"\n+40#include \"../far/types.h\"\n+41#include \"../far/error.h\"\n+42#include \"../far/topologyLevel.h\"\n+43#include \"../far/topologyRefiner.h\"\n+44\n+45#include <cassert>\n 46\n-_\b5_\b0 static std::string _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bD_\br_\ba_\bw_\bi_\bn_\bg_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be();\n+47namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+48namespace OPENSUBDIV_VERSION {\n+49\n+50namespace Far {\n 51\n-59\n-_\b6_\b0 static std::string _\bG_\be_\bt_\bC_\bo_\bm_\bm_\bo_\bn_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be();\n+55template <typename REAL>\n+_\b5_\b6class _\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl {\n+57\n+58public:\n+_\b5_\b9 _\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const & refiner) : _refiner(refiner) { }\n+_\b6_\b0 _\b~_\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl() { }\n 61\n-_\b6_\b2 static std::string _\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be(_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bT_\by_\bp_\be type);\n+_\b6_\b2 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const & _\bG_\be_\bt_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br() const { return _refiner; }\n 63\n-_\b6_\b4 static std::string _\bG_\be_\bt_\bH_\bu_\bl_\bl_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be(_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bT_\by_\bp_\be type);\n 65\n-_\b6_\b6 static std::string _\bG_\be_\bt_\bD_\bo_\bm_\ba_\bi_\bn_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be(_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bT_\by_\bp_\be type);\n-67\n-_\b7_\b2 static std::string _\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be(\n-73 _\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bT_\by_\bp_\be type,\n-74 _\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bT_\by_\bp_\be fvarType);\n-_\b7_\b5 static std::string _\bG_\be_\bt_\bH_\bu_\bl_\bl_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be(\n-76 _\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bT_\by_\bp_\be type,\n-77 _\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bT_\by_\bp_\be fvarType);\n-_\b7_\b8 static std::string _\bG_\be_\bt_\bD_\bo_\bm_\ba_\bi_\bn_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be(\n-79 _\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bT_\by_\bp_\be type,\n-80 _\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bT_\by_\bp_\be fvarType);\n-81\n-83\n-84};\n-85\n-86} // end namespace Osd\n-87\n-88} // end namespace OPENSUBDIV_VERSION\n-89using namespace OPENSUBDIV_VERSION;\n-90\n-91} // end namespace OpenSubdiv\n-92\n-93#endif // OPENSUBDIV3_OSD_MTL_PATCH_SHADER_SOURCE\n+100\n+_\b1_\b1_\b3 template <class T, class U> void _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be(int level, T const & src, U &\n+dst) const;\n+114\n+_\b1_\b3_\b0 template <class T, class U> void _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(int level, T const &\n+src, U & dst) const;\n+131\n+_\b1_\b4_\b8 template <class T, class U> void _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be_\bF_\ba_\bc_\be_\bU_\bn_\bi_\bf_\bo_\br_\bm(int level, T const\n+& src, U & dst) const;\n+149\n+_\b1_\b6_\b1 template <class T, class U> void _\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(int level, T const\n+& src, U & dst, int channel = 0) const;\n+162\n+163\n+_\b1_\b7_\b5 template <class T, class U> void _\bL_\bi_\bm_\bi_\bt(T const & src, U & dstPos) const;\n+176\n+177 template <class T, class U, class U1, class U2>\n+_\b1_\b7_\b8 void _\bL_\bi_\bm_\bi_\bt(T const & src, U & dstPos, U1 & dstTan1, U2 & dstTan2) const;\n+179\n+_\b1_\b8_\b0 template <class T, class U> void _\bL_\bi_\bm_\bi_\bt_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(T const & src, U & dst,\n+int channel = 0) const;\n+181\n+183\n+184private:\n+185 typedef REAL Weight;\n+186\n+187 // Non-copyable:\n+188 _\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl(_\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl const & src) : _refiner(src._refiner)\n+{ }\n+189 _\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl & operator=(_\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl const &) { return *this;\n+}\n+190\n+191 template <Sdc::SchemeType SCHEME, class T, class U> void interpFromFaces\n+(int, T const &, U &) const;\n+192 template <Sdc::SchemeType SCHEME, class T, class U> void interpFromEdges\n+(int, T const &, U &) const;\n+193 template <Sdc::SchemeType SCHEME, class T, class U> void interpFromVerts\n+(int, T const &, U &) const;\n+194\n+195 template <Sdc::SchemeType SCHEME, class T, class U> void\n+interpFVarFromFaces(int, T const &, U &, int) const;\n+196 template <Sdc::SchemeType SCHEME, class T, class U> void\n+interpFVarFromEdges(int, T const &, U &, int) const;\n+197 template <Sdc::SchemeType SCHEME, class T, class U> void\n+interpFVarFromVerts(int, T const &, U &, int) const;\n+198\n+199 template <Sdc::SchemeType SCHEME, class T, class U, class U1, class U2>\n+200 void limit(T const & src, U & pos, U1 * tan1, U2 * tan2) const;\n+201\n+202 template <Sdc::SchemeType SCHEME, class T, class U>\n+203 void limitFVar(T const & src, U & dst, int channel) const;\n+204\n+205private:\n+206 TopologyRefiner const & _refiner;\n+207\n+208private:\n+209 //\n+210 // Local class to fulfill interface for <typename MASK> in the Scheme mask\n+queries:\n+211 //\n+212 class Mask {\n+213 public:\n+214 typedef REAL Weight; // Also part of the expected interface\n+215\n+216 public:\n+217 Mask(Weight* v, Weight* e, Weight* f) :\n+218 _vertWeights(v), _edgeWeights(e), _faceWeights(f),\n+219 _vertCount(0), _edgeCount(0), _faceCount(0),\n+220 _faceWeightsForFaceCenters(false)\n+221 { }\n+222\n+223 ~Mask() { }\n+224\n+225 public: // Generic interface expected of <typename MASK>:\n+226 int GetNumVertexWeights() const { return _vertCount; }\n+227 int GetNumEdgeWeights() const { return _edgeCount; }\n+228 int GetNumFaceWeights() const { return _faceCount; }\n+229\n+230 void SetNumVertexWeights(int count) { _vertCount = count; }\n+231 void SetNumEdgeWeights( int count) { _edgeCount = count; }\n+232 void SetNumFaceWeights( int count) { _faceCount = count; }\n+233\n+234 Weight const& VertexWeight(int index) const { return _vertWeights[index]; }\n+235 Weight const& EdgeWeight( int index) const { return _edgeWeights[index]; }\n+236 Weight const& FaceWeight( int index) const { return _faceWeights[index]; }\n+237\n+238 Weight& VertexWeight(int index) { return _vertWeights[index]; }\n+239 Weight& EdgeWeight( int index) { return _edgeWeights[index]; }\n+240 Weight& FaceWeight( int index) { return _faceWeights[index]; }\n+241\n+242 bool AreFaceWeightsForFaceCenters() const { return\n+_faceWeightsForFaceCenters; }\n+243 void SetFaceWeightsForFaceCenters(bool on) { _faceWeightsForFaceCenters =\n+on; }\n+244\n+245 private:\n+246 Weight* _vertWeights;\n+247 Weight* _edgeWeights;\n+248 Weight* _faceWeights;\n+249\n+250 int _vertCount;\n+251 int _edgeCount;\n+252 int _faceCount;\n+253\n+254 bool _faceWeightsForFaceCenters;\n+255 };\n+256};\n+257\n+258\n+259//\n+260// Public entry points to the methods. Queries of the scheme type and its\n+261// use as a template parameter in subsequent implementation will be factored\n+262// out of a later release:\n+263//\n+264template <typename REAL>\n+265template <class T, class U>\n+266inline void\n+_\b2_\b6_\b7_\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be(int level, T const & src, U & dst)\n+const {\n+268\n+269 assert(level>0 && level<=(int)_refiner._refinements.size());\n+270\n+271 switch (_refiner._subdivType) {\n+272 case _\bS_\bd_\bc_\b:_\b:_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bC_\bA_\bT_\bM_\bA_\bR_\bK:\n+273 interpFromFaces<Sdc::SCHEME_CATMARK>(level, src, dst);\n+274 interpFromEdges<Sdc::SCHEME_CATMARK>(level, src, dst);\n+275 interpFromVerts<Sdc::SCHEME_CATMARK>(level, src, dst);\n+276 break;\n+277 case _\bS_\bd_\bc_\b:_\b:_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bL_\bO_\bO_\bP:\n+278 interpFromFaces<Sdc::SCHEME_LOOP>(level, src, dst);\n+279 interpFromEdges<Sdc::SCHEME_LOOP>(level, src, dst);\n+280 interpFromVerts<Sdc::SCHEME_LOOP>(level, src, dst);\n+281 break;\n+282 case _\bS_\bd_\bc_\b:_\b:_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bB_\bI_\bL_\bI_\bN_\bE_\bA_\bR:\n+283 interpFromFaces<Sdc::SCHEME_BILINEAR>(level, src, dst);\n+284 interpFromEdges<Sdc::SCHEME_BILINEAR>(level, src, dst);\n+285 interpFromVerts<Sdc::SCHEME_BILINEAR>(level, src, dst);\n+286 break;\n+287 }\n+288}\n+289\n+290template <typename REAL>\n+291template <class T, class U>\n+292inline void\n+_\b2_\b9_\b3_\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(int level, T const & src, U\n+& dst, int channel) const {\n+294\n+295 assert(level>0 && level<=(int)_refiner._refinements.size());\n+296\n+297 switch (_refiner._subdivType) {\n+298 case _\bS_\bd_\bc_\b:_\b:_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bC_\bA_\bT_\bM_\bA_\bR_\bK:\n+299 interpFVarFromFaces<Sdc::SCHEME_CATMARK>(level, src, dst, channel);\n+300 interpFVarFromEdges<Sdc::SCHEME_CATMARK>(level, src, dst, channel);\n+301 interpFVarFromVerts<Sdc::SCHEME_CATMARK>(level, src, dst, channel);\n+302 break;\n+303 case _\bS_\bd_\bc_\b:_\b:_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bL_\bO_\bO_\bP:\n+304 interpFVarFromFaces<Sdc::SCHEME_LOOP>(level, src, dst, channel);\n+305 interpFVarFromEdges<Sdc::SCHEME_LOOP>(level, src, dst, channel);\n+306 interpFVarFromVerts<Sdc::SCHEME_LOOP>(level, src, dst, channel);\n+307 break;\n+308 case _\bS_\bd_\bc_\b:_\b:_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bB_\bI_\bL_\bI_\bN_\bE_\bA_\bR:\n+309 interpFVarFromFaces<Sdc::SCHEME_BILINEAR>(level, src, dst, channel);\n+310 interpFVarFromEdges<Sdc::SCHEME_BILINEAR>(level, src, dst, channel);\n+311 interpFVarFromVerts<Sdc::SCHEME_BILINEAR>(level, src, dst, channel);\n+312 break;\n+313 }\n+314}\n+315\n+316template <typename REAL>\n+317template <class T, class U>\n+318inline void\n+_\b3_\b1_\b9_\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\bL_\bi_\bm_\bi_\bt(T const & src, U & dst) const {\n+320\n+321 if (_refiner.getLevel(_refiner.GetMaxLevel()).getNumVertexEdgesTotal() ==\n+0) {\n+322 _\bE_\br_\br_\bo_\br(_\bF_\bA_\bR_\b__\bR_\bU_\bN_\bT_\bI_\bM_\bE_\b__\bE_\bR_\bR_\bO_\bR,\n+323 \"Failure in PrimvarRefiner::Limit() -- \"\n+324 \"last level of refinement does not include full topology.\");\n+325 return;\n+326 }\n+327\n+328 switch (_refiner._subdivType) {\n+329 case _\bS_\bd_\bc_\b:_\b:_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bC_\bA_\bT_\bM_\bA_\bR_\bK:\n+330 limit<Sdc::SCHEME_CATMARK>(src, dst, (U*)0, (U*)0);\n+331 break;\n+332 case _\bS_\bd_\bc_\b:_\b:_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bL_\bO_\bO_\bP:\n+333 limit<Sdc::SCHEME_LOOP>(src, dst, (U*)0, (U*)0);\n+334 break;\n+335 case _\bS_\bd_\bc_\b:_\b:_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bB_\bI_\bL_\bI_\bN_\bE_\bA_\bR:\n+336 limit<Sdc::SCHEME_BILINEAR>(src, dst, (U*)0, (U*)0);\n+337 break;\n+338 }\n+339}\n+340\n+341template <typename REAL>\n+342template <class T, class U, class U1, class U2>\n+343inline void\n+_\b3_\b4_\b4_\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\bL_\bi_\bm_\bi_\bt(T const & src, U & dstPos, U1 & dstTan1, U2\n+& dstTan2) const {\n+345\n+346 if (_refiner.getLevel(_refiner.GetMaxLevel()).getNumVertexEdgesTotal() ==\n+0) {\n+347 _\bE_\br_\br_\bo_\br(_\bF_\bA_\bR_\b__\bR_\bU_\bN_\bT_\bI_\bM_\bE_\b__\bE_\bR_\bR_\bO_\bR,\n+348 \"Failure in PrimvarRefiner::Limit() -- \"\n+349 \"last level of refinement does not include full topology.\");\n+350 return;\n+351 }\n+352\n+353 switch (_refiner._subdivType) {\n+354 case _\bS_\bd_\bc_\b:_\b:_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bC_\bA_\bT_\bM_\bA_\bR_\bK:\n+355 limit<Sdc::SCHEME_CATMARK>(src, dstPos, &dstTan1, &dstTan2);\n+356 break;\n+357 case _\bS_\bd_\bc_\b:_\b:_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bL_\bO_\bO_\bP:\n+358 limit<Sdc::SCHEME_LOOP>(src, dstPos, &dstTan1, &dstTan2);\n+359 break;\n+360 case _\bS_\bd_\bc_\b:_\b:_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bB_\bI_\bL_\bI_\bN_\bE_\bA_\bR:\n+361 limit<Sdc::SCHEME_BILINEAR>(src, dstPos, &dstTan1, &dstTan2);\n+362 break;\n+363 }\n+364}\n+365\n+366template <typename REAL>\n+367template <class T, class U>\n+368inline void\n+_\b3_\b6_\b9_\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(T const & src, U & dst, int\n+channel) const {\n+370\n+371 if (_refiner.getLevel(_refiner.GetMaxLevel()).getNumVertexEdgesTotal() ==\n+0) {\n+372 _\bE_\br_\br_\bo_\br(_\bF_\bA_\bR_\b__\bR_\bU_\bN_\bT_\bI_\bM_\bE_\b__\bE_\bR_\bR_\bO_\bR,\n+373 \"Failure in PrimvarRefiner::LimitFaceVarying() -- \"\n+374 \"last level of refinement does not include full topology.\");\n+375 return;\n+376 }\n+377\n+378 switch (_refiner._subdivType) {\n+379 case _\bS_\bd_\bc_\b:_\b:_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bC_\bA_\bT_\bM_\bA_\bR_\bK:\n+380 limitFVar<Sdc::SCHEME_CATMARK>(src, dst, channel);\n+381 break;\n+382 case _\bS_\bd_\bc_\b:_\b:_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bL_\bO_\bO_\bP:\n+383 limitFVar<Sdc::SCHEME_LOOP>(src, dst, channel);\n+384 break;\n+385 case _\bS_\bd_\bc_\b:_\b:_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bB_\bI_\bL_\bI_\bN_\bE_\bA_\bR:\n+386 limitFVar<Sdc::SCHEME_BILINEAR>(src, dst, channel);\n+387 break;\n+388 }\n+389}\n+390\n+391template <typename REAL>\n+392template <class T, class U>\n+393inline void\n+_\b3_\b9_\b4_\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be_\bF_\ba_\bc_\be_\bU_\bn_\bi_\bf_\bo_\br_\bm(int level, T const & src, U\n+& dst) const {\n+395\n+396 assert(level>0 && level<=(int)_refiner._refinements.size());\n+397\n+398 Vtr::internal::Refinement const & refinement = _refiner.getRefinement\n+(level-1);\n+399 Vtr::internal::Level const & child = refinement.child();\n+400\n+401 for (int cFace = 0; cFace < child.getNumFaces(); ++cFace) {\n+402\n+403 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx pFace = refinement.getChildFaceParentFace(cFace);\n+404\n+405 dst[cFace] = src[pFace];\n+406 }\n+407}\n+408\n+409template <typename REAL>\n+410template <class T, class U>\n+411inline void\n+_\b4_\b1_\b2_\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(int level, T const & src, U &\n+dst) const {\n+413\n+414 assert(level>0 && level<=(int)_refiner._refinements.size());\n+415\n+416 Vtr::internal::Refinement const & refinement = _refiner.getRefinement\n+(level-1);\n+417 Vtr::internal::Level const & parent = refinement.parent();\n+418\n+419 //\n+420 // Group values to interpolate based on origin -- note that there may\n+421 // be none originating from faces:\n+422 //\n+423 if (refinement.getNumChildVerticesFromFaces() > 0) {\n+424\n+425 for (int face = 0; face < parent.getNumFaces(); ++face) {\n+426\n+427 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx cVert = refinement.getFaceChildVertex(face);\n+428 if (_\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bI_\bs_\bV_\ba_\bl_\bi_\bd(cVert)) {\n+429\n+430 // Apply the weights to the parent face's vertices:\n+431 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by fVerts = parent.getFaceVertices(face);\n+432\n+433 Weight fVaryingWeight = 1.0f / (Weight) fVerts._\bs_\bi_\bz_\be();\n+434\n+435 dst[cVert].Clear();\n+436 for (int i = 0; i < fVerts._\bs_\bi_\bz_\be(); ++i) {\n+437 dst[cVert].AddWithWeight(src[fVerts[i]], fVaryingWeight);\n+438 }\n+439 }\n+440 }\n+441 }\n+442 for (int edge = 0; edge < parent.getNumEdges(); ++edge) {\n+443\n+444 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx cVert = refinement.getEdgeChildVertex(edge);\n+445 if (_\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bI_\bs_\bV_\ba_\bl_\bi_\bd(cVert)) {\n+446\n+447 // Apply the weights to the parent edges's vertices\n+448 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by eVerts = parent.getEdgeVertices(edge);\n+449\n+450 dst[cVert].Clear();\n+451 dst[cVert].AddWithWeight(src[eVerts[0]], 0.5f);\n+452 dst[cVert].AddWithWeight(src[eVerts[1]], 0.5f);\n+453 }\n+454 }\n+455 for (int vert = 0; vert < parent.getNumVertices(); ++vert) {\n+456\n+457 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx cVert = refinement.getVertexChildVertex(vert);\n+458 if (_\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bI_\bs_\bV_\ba_\bl_\bi_\bd(cVert)) {\n+459\n+460 // Essentially copy the parent vertex:\n+461 dst[cVert].Clear();\n+462 dst[cVert].AddWithWeight(src[vert], 1.0f);\n+463 }\n+464 }\n+465}\n+466\n+467\n+468//\n+469// Internal implementation methods -- grouping vertices to be interpolated\n+470// based on the type of parent component from which they originated:\n+471//\n+472template <typename REAL>\n+473template <Sdc::SchemeType SCHEME, class T, class U>\n+474inline void\n+475_\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\bi_\bn_\bt_\be_\br_\bp_\bF_\br_\bo_\bm_\bF_\ba_\bc_\be_\bs(int level, T const & src, U & dst)\n+const {\n+476\n+477 Vtr::internal::Refinement const & refinement = _refiner.getRefinement\n+(level-1);\n+478 Vtr::internal::Level const & parent = refinement.parent();\n+479\n+480 if (refinement.getNumChildVerticesFromFaces() == 0) return;\n+481\n+482 _\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b> scheme(_refiner._subdivOptions);\n+483\n+484 Vtr::internal::StackBuffer<Weight,16> fVertWeights(parent.getMaxValence());\n+485\n+486 for (int face = 0; face < parent.getNumFaces(); ++face) {\n+487\n+488 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx cVert = refinement.getFaceChildVertex(face);\n+489 if (!_\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bI_\bs_\bV_\ba_\bl_\bi_\bd(cVert))\n+490 continue;\n+491\n+492 // Declare and compute mask weights for this vertex relative to its parent\n+face:\n+493 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by fVerts = parent.getFaceVertices(face);\n+494\n+495 Mask fMask(fVertWeights, 0, 0);\n+496 Vtr::internal::FaceInterface fHood(fVerts._\bs_\bi_\bz_\be());\n+497\n+498 scheme.ComputeFaceVertexMask(fHood, fMask);\n+499\n+500 // Apply the weights to the parent face's vertices:\n+501 dst[cVert].Clear();\n+502\n+503 for (int i = 0; i < fVerts._\bs_\bi_\bz_\be(); ++i) {\n+504\n+505 dst[cVert].AddWithWeight(src[fVerts[i]], fVertWeights[i]);\n+506 }\n+507 }\n+508}\n+509\n+510template <typename REAL>\n+511template <Sdc::SchemeType SCHEME, class T, class U>\n+512inline void\n+513PrimvarRefinerReal<REAL>::interpFromEdges(int level, T const & src, U & dst)\n+const {\n+514\n+515 Vtr::internal::Refinement const & refinement = _refiner.getRefinement\n+(level-1);\n+516 Vtr::internal::Level const & parent = refinement.parent();\n+517 Vtr::internal::Level const & child = refinement.child();\n+518\n+519 Sdc::Scheme<SCHEME> scheme(_refiner._subdivOptions);\n+520\n+521 Vtr::internal::EdgeInterface eHood(parent);\n+522\n+523 Weight eVertWeights[2];\n+524 Vtr::internal::StackBuffer<Weight,8> eFaceWeights(parent.getMaxEdgeFaces\n+());\n+525\n+526 for (int edge = 0; edge < parent.getNumEdges(); ++edge) {\n+527\n+528 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx cVert = refinement.getEdgeChildVertex(edge);\n+529 if (!_\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bI_\bs_\bV_\ba_\bl_\bi_\bd(cVert))\n+530 continue;\n+531\n+532 // Declare and compute mask weights for this vertex relative to its parent\n+edge:\n+533 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by eVerts = parent.getEdgeVertices(edge),\n+534 eFaces = parent.getEdgeFaces(edge);\n+535\n+536 Mask eMask(eVertWeights, 0, eFaceWeights);\n+537\n+538 eHood.SetIndex(edge);\n+539\n+540 _\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be pRule = (parent.getEdgeSharpness(edge) > 0.0f) ? _\bS_\bd_\bc_\b:_\b:\n+_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bC_\bR_\bE_\bA_\bS_\bE : Sdc::Crease::RULE_SMOOTH;\n+541 _\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be cRule = child.getVertexRule(cVert);\n+542\n+543 scheme.ComputeEdgeVertexMask(eHood, eMask, pRule, cRule);\n+544\n+545 // Apply the weights to the parent edges's vertices and (if applicable) to\n+546 // the child vertices of its incident faces:\n+547 dst[cVert].Clear();\n+548 dst[cVert].AddWithWeight(src[eVerts[0]], eVertWeights[0]);\n+549 dst[cVert].AddWithWeight(src[eVerts[1]], eVertWeights[1]);\n+550\n+551 if (eMask.GetNumFaceWeights() > 0) {\n+552\n+553 for (int i = 0; i < eFaces.size(); ++i) {\n+554\n+555 if (eMask.AreFaceWeightsForFaceCenters()) {\n+556 assert(refinement.getNumChildVerticesFromFaces() > 0);\n+557 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx cVertOfFace = refinement.getFaceChildVertex(eFaces[i]);\n+558\n+559 assert(_\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bI_\bs_\bV_\ba_\bl_\bi_\bd(cVertOfFace));\n+560 dst[cVert].AddWithWeight(dst[cVertOfFace], eFaceWeights[i]);\n+561 } else {\n+562 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx pFace = eFaces[i];\n+563 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by pFaceEdges = parent.getFaceEdges(pFace),\n+564 pFaceVerts = parent.getFaceVertices(pFace);\n+565\n+566 int eInFace = 0;\n+567 for ( ; pFaceEdges[eInFace] != edge; ++eInFace ) ;\n+568\n+569 int vInFace = eInFace + 2;\n+570 if (vInFace >= pFaceVerts.size()) vInFace -= pFaceVerts._\bs_\bi_\bz_\be();\n+571\n+572 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx pVertNext = pFaceVerts[vInFace];\n+573 dst[cVert].AddWithWeight(src[pVertNext], eFaceWeights[i]);\n+574 }\n+575 }\n+576 }\n+577 }\n+578}\n+579\n+580template <typename REAL>\n+581template <Sdc::SchemeType SCHEME, class T, class U>\n+582inline void\n+583PrimvarRefinerReal<REAL>::interpFromVerts(int level, T const & src, U & dst)\n+const {\n+584\n+585 Vtr::internal::Refinement const & refinement = _refiner.getRefinement\n+(level-1);\n+586 Vtr::internal::Level const & parent = refinement.parent();\n+587 Vtr::internal::Level const & child = refinement.child();\n+588\n+589 Sdc::Scheme<SCHEME> scheme(_refiner._subdivOptions);\n+590\n+591 Vtr::internal::VertexInterface vHood(parent, child);\n+592\n+593 Vtr::internal::StackBuffer<Weight,32> weightBuffer(2*parent.getMaxValence\n+());\n+594\n+595 for (int vert = 0; vert < parent.getNumVertices(); ++vert) {\n+596\n+597 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx cVert = refinement.getVertexChildVertex(vert);\n+598 if (!_\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bI_\bs_\bV_\ba_\bl_\bi_\bd(cVert))\n+599 continue;\n+600\n+601 // Declare and compute mask weights for this vertex relative to its parent\n+edge:\n+602 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by vEdges = parent.getVertexEdges(vert),\n+603 vFaces = parent.getVertexFaces(vert);\n+604\n+605 Weight vVertWeight,\n+606 * vEdgeWeights = weightBuffer,\n+607 * vFaceWeights = vEdgeWeights + vEdges._\bs_\bi_\bz_\be();\n+608\n+609 Mask vMask(&vVertWeight, vEdgeWeights, vFaceWeights);\n+610\n+611 vHood.SetIndex(vert, cVert);\n+612\n+613 _\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be pRule = parent.getVertexRule(vert);\n+614 _\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be cRule = child.getVertexRule(cVert);\n+615\n+616 scheme.ComputeVertexVertexMask(vHood, vMask, pRule, cRule);\n+617\n+618 // Apply the weights to the parent vertex, the vertices opposite its\n+incident\n+619 // edges, and the child vertices of its incident faces:\n+620 //\n+621 // In order to improve numerical precision, it's better to apply smaller\n+weights\n+622 // first, so begin with the face-weights followed by the edge-weights and\n+the\n+623 // vertex weight last.\n+624 dst[cVert].Clear();\n+625\n+626 if (vMask.GetNumFaceWeights() > 0) {\n+627 assert(vMask.AreFaceWeightsForFaceCenters());\n+628\n+629 for (int i = 0; i < vFaces.size(); ++i) {\n+630\n+631 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx cVertOfFace = refinement.getFaceChildVertex(vFaces[i]);\n+632 assert(_\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bI_\bs_\bV_\ba_\bl_\bi_\bd(cVertOfFace));\n+633 dst[cVert].AddWithWeight(dst[cVertOfFace], vFaceWeights[i]);\n+634 }\n+635 }\n+636 if (vMask.GetNumEdgeWeights() > 0) {\n+637\n+638 for (int i = 0; i < vEdges.size(); ++i) {\n+639\n+640 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by eVerts = parent.getEdgeVertices(vEdges[i]);\n+641 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx pVertOppositeEdge = (eVerts[0] == vert) ? eVerts[1] : eVerts[0];\n+642\n+643 dst[cVert].AddWithWeight(src[pVertOppositeEdge], vEdgeWeights[i]);\n+644 }\n+645 }\n+646 dst[cVert].AddWithWeight(src[vert], vVertWeight);\n+647 }\n+648}\n+649\n+650\n+651//\n+652// Internal face-varying implementation details:\n+653//\n+654template <typename REAL>\n+655template <Sdc::SchemeType SCHEME, class T, class U>\n+656inline void\n+657PrimvarRefinerReal<REAL>::interpFVarFromFaces(int level, T const & src, U &\n+dst, int channel) const {\n+658\n+659 Vtr::internal::Refinement const & refinement = _refiner.getRefinement\n+(level-1);\n+660\n+661 if (refinement.getNumChildVerticesFromFaces() == 0) return;\n+662\n+663 Sdc::Scheme<SCHEME> scheme(_refiner._subdivOptions);\n+664\n+665 Vtr::internal::Level const & parentLevel = refinement.parent();\n+666 Vtr::internal::Level const & childLevel = refinement.child();\n+667\n+668 Vtr::internal::FVarLevel const & parentFVar = parentLevel.getFVarLevel\n+(channel);\n+669 Vtr::internal::FVarLevel const & childFVar = childLevel.getFVarLevel\n+(channel);\n+670\n+671 Vtr::internal::StackBuffer<Weight,16> fValueWeights\n+(parentLevel.getMaxValence());\n+672\n+673 for (int face = 0; face < parentLevel.getNumFaces(); ++face) {\n+674\n+675 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx cVert = refinement.getFaceChildVertex(face);\n+676 if (!_\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bI_\bs_\bV_\ba_\bl_\bi_\bd(cVert))\n+677 continue;\n+678\n+679 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx cVertValue = childFVar.getVertexValueOffset(cVert);\n+680\n+681 // The only difference for face-varying here is that we get the values\n+associated\n+682 // with each face-vertex directly from the FVarLevel, rather than using the\n+parent\n+683 // face-vertices directly. If any face-vertex has any sibling values, then\n+we may\n+684 // get the wrong one using the face-vertex index directly.\n+685\n+686 // Declare and compute mask weights for this vertex relative to its parent\n+face:\n+687 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by fValues = parentFVar.getFaceValues(face);\n+688\n+689 Mask fMask(fValueWeights, 0, 0);\n+690 Vtr::internal::FaceInterface fHood(fValues.size());\n+691\n+692 scheme.ComputeFaceVertexMask(fHood, fMask);\n+693\n+694 // Apply the weights to the parent face's vertices:\n+695 dst[cVertValue].Clear();\n+696\n+697 for (int i = 0; i < fValues.size(); ++i) {\n+698 dst[cVertValue].AddWithWeight(src[fValues[i]], fValueWeights[i]);\n+699 }\n+700 }\n+701}\n+702\n+703template <typename REAL>\n+704template <Sdc::SchemeType SCHEME, class T, class U>\n+705inline void\n+706PrimvarRefinerReal<REAL>::interpFVarFromEdges(int level, T const & src, U &\n+dst, int channel) const {\n+707\n+708 Vtr::internal::Refinement const & refinement = _refiner.getRefinement\n+(level-1);\n+709\n+710 Sdc::Scheme<SCHEME> scheme(_refiner._subdivOptions);\n+711\n+712 Vtr::internal::Level const & parentLevel = refinement.parent();\n+713 Vtr::internal::Level const & childLevel = refinement.child();\n+714\n+715 Vtr::internal::FVarRefinement const & refineFVar =\n+refinement.getFVarRefinement(channel);\n+716 Vtr::internal::FVarLevel const & parentFVar = parentLevel.getFVarLevel\n+(channel);\n+717 Vtr::internal::FVarLevel const & childFVar = childLevel.getFVarLevel\n+(channel);\n+718\n+719 //\n+720 // Allocate and initialize (if linearly interpolated) interpolation weights\n+for\n+721 // the edge mask:\n+722 //\n+723 Weight eVertWeights[2];\n+724 Vtr::internal::StackBuffer<Weight,8> eFaceWeights\n+(parentLevel.getMaxEdgeFaces());\n+725\n+726 Mask eMask(eVertWeights, 0, eFaceWeights);\n+727\n+728 bool isLinearFVar = parentFVar.isLinear() || (_refiner._subdivType == _\bS_\bd_\bc_\b:_\b:\n+_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bB_\bI_\bL_\bI_\bN_\bE_\bA_\bR);\n+729 if (isLinearFVar) {\n+730 eMask.SetNumVertexWeights(2);\n+731 eMask.SetNumEdgeWeights(0);\n+732 eMask.SetNumFaceWeights(0);\n+733\n+734 eVertWeights[0] = 0.5f;\n+735 eVertWeights[1] = 0.5f;\n+736 }\n+737\n+738 Vtr::internal::EdgeInterface eHood(parentLevel);\n+739\n+740 for (int edge = 0; edge < parentLevel.getNumEdges(); ++edge) {\n+741\n+742 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx cVert = refinement.getEdgeChildVertex(edge);\n+743 if (!_\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bI_\bs_\bV_\ba_\bl_\bi_\bd(cVert))\n+744 continue;\n+745\n+746 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by cVertValues = childFVar.getVertexValues(cVert);\n+747\n+748 bool fvarEdgeVertMatchesVertex = childFVar.valueTopologyMatches(cVertValues\n+[0]);\n+749 if (fvarEdgeVertMatchesVertex) {\n+750 //\n+751 // If smoothly interpolated, compute new weights for the edge mask:\n+752 //\n+753 if (!isLinearFVar) {\n+754 eHood.SetIndex(edge);\n+755\n+756 _\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be pRule = (parentLevel.getEdgeSharpness(edge) > 0.0f)\n+757 ? _\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bC_\bR_\bE_\bA_\bS_\bE : Sdc::Crease::RULE_SMOOTH;\n+758 _\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be cRule = childLevel.getVertexRule(cVert);\n+759\n+760 scheme.ComputeEdgeVertexMask(eHood, eMask, pRule, cRule);\n+761 }\n+762\n+763 // Apply the weights to the parent edge's vertices and (if applicable) to\n+764 // the child vertices of its incident faces:\n+765 //\n+766 // Even though the face-varying topology matches the vertex topology, we\n+need\n+767 // to be careful here when getting values corresponding to the two end-\n+vertices.\n+768 // While the edge may be continuous, the vertices at their ends may have\n+769 // discontinuities elsewhere in their neighborhood (i.e. on the \"other\n+side\"\n+770 // of the end-vertex) and so have sibling values associated with them. In\n+most\n+771 // cases the topology for an end-vertex will match and we can use it\n+directly,\n+772 // but we must still check and retrieve as needed.\n+773 //\n+774 // Indices for values corresponding to face-vertices are guaranteed to\n+match,\n+775 // so we can use the child-vertex indices directly.\n+776 //\n+777 // And by \"directly\", we always use getVertexValue(vertexIndex) to\n+reference\n+778 // values in the \"src\" to account for the possible indirection that may\n+exist at\n+779 // level 0 -- where there may be fewer values than vertices and an\n+additional\n+780 // indirection is necessary. We can use a vertex index directly for \"dst\"\n+when\n+781 // it matches.\n+782 //\n+783 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx eVertValues[2];\n+784\n+785 parentFVar.getEdgeFaceValues(edge, 0, eVertValues);\n+786\n+787 _\bI_\bn_\bd_\be_\bx cVertValue = cVertValues[0];\n+788\n+789 dst[cVertValue].Clear();\n+790 dst[cVertValue].AddWithWeight(src[eVertValues[0]], eVertWeights[0]);\n+791 dst[cVertValue].AddWithWeight(src[eVertValues[1]], eVertWeights[1]);\n+792\n+793 if (eMask.GetNumFaceWeights() > 0) {\n+794\n+795 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by eFaces = parentLevel.getEdgeFaces(edge);\n+796\n+797 for (int i = 0; i < eFaces.size(); ++i) {\n+798 if (eMask.AreFaceWeightsForFaceCenters()) {\n+799\n+800 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx cVertOfFace = refinement.getFaceChildVertex(eFaces[i]);\n+801 assert(_\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bI_\bs_\bV_\ba_\bl_\bi_\bd(cVertOfFace));\n+802\n+803 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx cValueOfFace = childFVar.getVertexValueOffset(cVertOfFace);\n+804 dst[cVertValue].AddWithWeight(dst[cValueOfFace], eFaceWeights[i]);\n+805 } else {\n+806 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx pFace = eFaces[i];\n+807 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by pFaceEdges = parentLevel.getFaceEdges(pFace),\n+808 pFaceVerts = parentLevel.getFaceVertices(pFace);\n+809\n+810 int eInFace = 0;\n+811 for ( ; pFaceEdges[eInFace] != edge; ++eInFace ) ;\n+812\n+813 // Edge \"i\" spans vertices [i,i+1] so we want i+2...\n+814 int vInFace = eInFace + 2;\n+815 if (vInFace >= pFaceVerts.size()) vInFace -= pFaceVerts._\bs_\bi_\bz_\be();\n+816\n+817 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx pValueNext = parentFVar.getFaceValues(pFace)[vInFace];\n+818 dst[cVertValue].AddWithWeight(src[pValueNext], eFaceWeights[i]);\n+819 }\n+820 }\n+821 }\n+822 } else {\n+823 //\n+824 // Mismatched edge-verts should just be linearly interpolated between the\n+pairs of\n+825 // values for each sibling of the child edge-vertex -- the question is:\n+which face\n+826 // holds that pair of values for a given sibling?\n+827 //\n+828 // In the manifold case, the sibling and edge-face indices will correspond.\n+We\n+829 // will eventually need to update this to account for > 3 incident faces.\n+830 //\n+831 for (int i = 0; i < cVertValues.size(); ++i) {\n+832 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx eVertValues[2];\n+833 int eFaceIndex = refineFVar.getChildValueParentSource(cVert, i);\n+834 assert(eFaceIndex == i);\n+835\n+836 parentFVar.getEdgeFaceValues(edge, eFaceIndex, eVertValues);\n+837\n+838 _\bI_\bn_\bd_\be_\bx cVertValue = cVertValues[i];\n+839\n+840 dst[cVertValue].Clear();\n+841 dst[cVertValue].AddWithWeight(src[eVertValues[0]], 0.5);\n+842 dst[cVertValue].AddWithWeight(src[eVertValues[1]], 0.5);\n+843 }\n+844 }\n+845 }\n+846}\n+847\n+848template <typename REAL>\n+849template <Sdc::SchemeType SCHEME, class T, class U>\n+850inline void\n+851PrimvarRefinerReal<REAL>::interpFVarFromVerts(int level, T const & src, U &\n+dst, int channel) const {\n+852\n+853 Vtr::internal::Refinement const & refinement = _refiner.getRefinement\n+(level-1);\n+854\n+855 Sdc::Scheme<SCHEME> scheme(_refiner._subdivOptions);\n+856\n+857 Vtr::internal::Level const & parentLevel = refinement.parent();\n+858 Vtr::internal::Level const & childLevel = refinement.child();\n+859\n+860 Vtr::internal::FVarRefinement const & refineFVar =\n+refinement.getFVarRefinement(channel);\n+861 Vtr::internal::FVarLevel const & parentFVar = parentLevel.getFVarLevel\n+(channel);\n+862 Vtr::internal::FVarLevel const & childFVar = childLevel.getFVarLevel\n+(channel);\n+863\n+864 bool isLinearFVar = parentFVar.isLinear() || (_refiner._subdivType == _\bS_\bd_\bc_\b:_\b:\n+_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bB_\bI_\bL_\bI_\bN_\bE_\bA_\bR);\n+865\n+866 Vtr::internal::StackBuffer<Weight,32> weightBuffer\n+(2*parentLevel.getMaxValence());\n+867\n+868 Vtr::internal::StackBuffer<Vtr::Index,16> vEdgeValues\n+(parentLevel.getMaxValence());\n+869\n+870 Vtr::internal::VertexInterface vHood(parentLevel, childLevel);\n+871\n+872 for (int vert = 0; vert < parentLevel.getNumVertices(); ++vert) {\n+873\n+874 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx cVert = refinement.getVertexChildVertex(vert);\n+875 if (!_\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bI_\bs_\bV_\ba_\bl_\bi_\bd(cVert))\n+876 continue;\n+877\n+878 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by pVertValues = parentFVar.getVertexValues(vert),\n+879 cVertValues = childFVar.getVertexValues(cVert);\n+880\n+881 bool fvarVertVertMatchesVertex = childFVar.valueTopologyMatches(cVertValues\n+[0]);\n+882 if (isLinearFVar && fvarVertVertMatchesVertex) {\n+883 dst[cVertValues[0]].Clear();\n+884 dst[cVertValues[0]].AddWithWeight(src[pVertValues[0]], 1.0f);\n+885 continue;\n+886 }\n+887\n+888 if (fvarVertVertMatchesVertex) {\n+889 //\n+890 // Declare and compute mask weights for this vertex relative to its parent\n+edge:\n+891 //\n+892 // (We really need to encapsulate this somewhere else for use here and in\n+the\n+893 // general case)\n+894 //\n+895 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by vEdges = parentLevel.getVertexEdges(vert);\n+896\n+897 Weight vVertWeight;\n+898 Weight * vEdgeWeights = weightBuffer;\n+899 Weight * vFaceWeights = vEdgeWeights + vEdges._\bs_\bi_\bz_\be();\n+900\n+901 Mask vMask(&vVertWeight, vEdgeWeights, vFaceWeights);\n+902\n+903 vHood.SetIndex(vert, cVert);\n+904\n+905 _\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be pRule = parentLevel.getVertexRule(vert);\n+906 _\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be cRule = childLevel.getVertexRule(cVert);\n+907\n+908 scheme.ComputeVertexVertexMask(vHood, vMask, pRule, cRule);\n+909\n+910 // Apply the weights to the parent vertex, the vertices opposite its\n+incident\n+911 // edges, and the child vertices of its incident faces:\n+912 //\n+913 // Even though the face-varying topology matches the vertex topology, we\n+need\n+914 // to be careful here when getting values corresponding to vertices at the\n+915 // ends of edges. While the edge may be continuous, the end vertex may have\n+916 // discontinuities elsewhere in their neighborhood (i.e. on the \"other\n+side\"\n+917 // of the end-vertex) and so have sibling values associated with them. In\n+most\n+918 // cases the topology for an end-vertex will match and we can use it\n+directly,\n+919 // but we must still check and retrieve as needed.\n+920 //\n+921 // Indices for values corresponding to face-vertices are guaranteed to\n+match,\n+922 // so we can use the child-vertex indices directly.\n+923 //\n+924 // And by \"directly\", we always use getVertexValue(vertexIndex) to\n+reference\n+925 // values in the \"src\" to account for the possible indirection that may\n+exist at\n+926 // level 0 -- where there may be fewer values than vertices and an\n+additional\n+927 // indirection is necessary. We can use a vertex index directly for \"dst\"\n+when\n+928 // it matches.\n+929 //\n+930 // As with applying the mask to vertex data, in order to improve numerical\n+931 // precision, it's better to apply smaller weights first, so begin with the\n+932 // face-weights followed by the edge-weights and the vertex weight last.\n+933 //\n+934 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx pVertValue = pVertValues[0];\n+935 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx cVertValue = cVertValues[0];\n+936\n+937 dst[cVertValue].Clear();\n+938 if (vMask.GetNumFaceWeights() > 0) {\n+939 assert(vMask.AreFaceWeightsForFaceCenters());\n+940\n+941 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by vFaces = parentLevel.getVertexFaces(vert);\n+942\n+943 for (int i = 0; i < vFaces.size(); ++i) {\n+944\n+945 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx cVertOfFace = refinement.getFaceChildVertex(vFaces[i]);\n+946 assert(_\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bI_\bs_\bV_\ba_\bl_\bi_\bd(cVertOfFace));\n+947\n+948 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx cValueOfFace = childFVar.getVertexValueOffset(cVertOfFace);\n+949 dst[cVertValue].AddWithWeight(dst[cValueOfFace], vFaceWeights[i]);\n+950 }\n+951 }\n+952 if (vMask.GetNumEdgeWeights() > 0) {\n+953\n+954 parentFVar.getVertexEdgeValues(vert, vEdgeValues);\n+955\n+956 for (int i = 0; i < vEdges.size(); ++i) {\n+957 dst[cVertValue].AddWithWeight(src[vEdgeValues[i]], vEdgeWeights[i]);\n+958 }\n+959 }\n+960 dst[cVertValue].AddWithWeight(src[pVertValue], vVertWeight);\n+961 } else {\n+962 //\n+963 // Each FVar value associated with a vertex will be either a corner or a\n+crease,\n+964 // or potentially in transition from corner to crease:\n+965 // - if the CHILD is a corner, there can be no transition so we have a\n+corner\n+966 // - otherwise if the PARENT is a crease, both will be creases (no\n+transition)\n+967 // - otherwise the parent must be a corner and the child a crease\n+(transition)\n+968 //\n+969 Vtr::internal::FVarLevel::ConstValueTagArray pValueTags =\n+parentFVar.getVertexValueTags(vert);\n+970 Vtr::internal::FVarLevel::ConstValueTagArray cValueTags =\n+childFVar.getVertexValueTags(cVert);\n+971\n+972 for (int cSiblingIndex = 0; cSiblingIndex < cVertValues.size();\n+++cSiblingIndex) {\n+973 int pSiblingIndex = refineFVar.getChildValueParentSource(cVert,\n+cSiblingIndex);\n+974 assert(pSiblingIndex == cSiblingIndex);\n+975\n+976 typedef Vtr::internal::FVarLevel::Sibling SiblingIntType;\n+977\n+978 SiblingIntType cSibling = (SiblingIntType) cSiblingIndex;\n+979 SiblingIntType pSibling = (SiblingIntType) pSiblingIndex;\n+980\n+981 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx pVertValue = pVertValues[pSibling];\n+982 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx cVertValue = cVertValues[cSibling];\n+983\n+984 dst[cVertValue].Clear();\n+985 if (isLinearFVar || cValueTags[cSibling].isCorner()) {\n+986 dst[cVertValue].AddWithWeight(src[pVertValue], 1.0f);\n+987 } else {\n+988 //\n+989 // We have either a crease or a transition from corner to crease -- in\n+990 // either case, we need the end values for the full/fractional crease:\n+991 //\n+992 _\bI_\bn_\bd_\be_\bx pEndValues[2];\n+993 parentFVar.getVertexCreaseEndValues(vert, pSibling, pEndValues);\n+994\n+995 Weight vWeight = 0.75f;\n+996 Weight eWeight = 0.125f;\n+997\n+998 //\n+999 // If semi-sharp we need to apply fractional weighting -- if made sharp\n+because\n+1000 // of the other sibling (dependent-sharp) use the fractional weight from\n+that\n+1001 // other sibling (should only occur when there are 2):\n+1002 //\n+1003 if (pValueTags[pSibling].isSemiSharp()) {\n+1004 Weight wCorner = pValueTags[pSibling].isDepSharp()\n+1005 ? refineFVar.getFractionalWeight(vert, !pSibling, cVert, !cSibling)\n+1006 : refineFVar.getFractionalWeight(vert, pSibling, cVert, cSibling);\n+1007 Weight wCrease = 1.0f - wCorner;\n+1008\n+1009 vWeight = wCrease * 0.75f + wCorner;\n+1010 eWeight = wCrease * 0.125f;\n+1011 }\n+1012 dst[cVertValue].AddWithWeight(src[pEndValues[0]], eWeight);\n+1013 dst[cVertValue].AddWithWeight(src[pEndValues[1]], eWeight);\n+1014 dst[cVertValue].AddWithWeight(src[pVertValue], vWeight);\n+1015 }\n+1016 }\n+1017 }\n+1018 }\n+1019}\n+1020\n+1021template <typename REAL>\n+1022template <Sdc::SchemeType SCHEME, class T, class U, class U1, class U2>\n+1023inline void\n+1024PrimvarRefinerReal<REAL>::limit(T const & src, U & dstPos, U1 * dstTan1Ptr,\n+U2 * dstTan2Ptr) const {\n+1025\n+1026 Sdc::Scheme<SCHEME> scheme(_refiner._subdivOptions);\n+1027\n+1028 Vtr::internal::Level const & level = _refiner.getLevel\n+(_refiner.GetMaxLevel());\n+1029\n+1030 int maxWeightsPerMask = 1 + 2 * level.getMaxValence();\n+1031 bool hasTangents = (dstTan1Ptr && dstTan2Ptr);\n+1032 int numMasks = 1 + (hasTangents ? 2 : 0);\n+1033\n+1034 Vtr::internal::StackBuffer<Index,33> indexBuffer(maxWeightsPerMask);\n+1035 Vtr::internal::StackBuffer<Weight,99> weightBuffer(numMasks *\n+maxWeightsPerMask);\n+1036\n+1037 Weight * vPosWeights = weightBuffer,\n+1038 * ePosWeights = vPosWeights + 1,\n+1039 * fPosWeights = ePosWeights + level.getMaxValence();\n+1040 Weight * vTan1Weights = vPosWeights + maxWeightsPerMask,\n+1041 * eTan1Weights = ePosWeights + maxWeightsPerMask,\n+1042 * fTan1Weights = fPosWeights + maxWeightsPerMask;\n+1043 Weight * vTan2Weights = vTan1Weights + maxWeightsPerMask,\n+1044 * eTan2Weights = eTan1Weights + maxWeightsPerMask,\n+1045 * fTan2Weights = fTan1Weights + maxWeightsPerMask;\n+1046\n+1047 Mask posMask( vPosWeights, ePosWeights, fPosWeights);\n+1048 Mask tan1Mask(vTan1Weights, eTan1Weights, fTan1Weights);\n+1049 Mask tan2Mask(vTan2Weights, eTan2Weights, fTan2Weights);\n+1050\n+1051 // This is a bit obscure -- assigning both parent and child as last level\n+-- but\n+1052 // this mask type was intended for another purpose. Consider one for the\n+limit:\n+1053 Vtr::internal::VertexInterface vHood(level, level);\n+1054\n+1055 for (int vert = 0; vert < level.getNumVertices(); ++vert) {\n+1056 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by vEdges = level.getVertexEdges(vert);\n+1057\n+1058 // Incomplete vertices (present in sparse refinement) do not have their\n+full\n+1059 // topological neighborhood to determine a proper limit -- just leave the\n+1060 // vertex at the refined location and continue to the next:\n+1061 if (level.getVertexTag(vert)._incomplete || (vEdges.size() == 0)) {\n+1062 dstPos[vert].Clear();\n+1063 dstPos[vert].AddWithWeight(src[vert], 1.0);\n+1064 if (hasTangents) {\n+1065 (*dstTan1Ptr)[vert].Clear();\n+1066 (*dstTan2Ptr)[vert].Clear();\n+1067 }\n+1068 continue;\n+1069 }\n+1070\n+1071 //\n+1072 // Limit masks require the subdivision Rule for the vertex in order to\n+deal\n+1073 // with infinitely sharp features correctly -- including boundaries and\n+corners.\n+1074 // The vertex neighborhood is minimally defined with vertex and edge\n+counts.\n+1075 //\n+1076 _\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be vRule = level.getVertexRule(vert);\n+1077\n+1078 // This is a bit obscure -- child vertex index will be ignored here\n+1079 vHood.SetIndex(vert, vert);\n+1080\n+1081 if (hasTangents) {\n+1082 scheme.ComputeVertexLimitMask(vHood, posMask, tan1Mask, tan2Mask, vRule);\n+1083 } else {\n+1084 scheme.ComputeVertexLimitMask(vHood, posMask, vRule);\n+1085 }\n+1086\n+1087 //\n+1088 // Gather the neighboring vertices of this vertex -- the vertices opposite\n+its\n+1089 // incident edges, and the opposite vertices of its incident faces:\n+1090 //\n+1091 _\bI_\bn_\bd_\be_\bx * eIndices = indexBuffer;\n+1092 _\bI_\bn_\bd_\be_\bx * fIndices = indexBuffer + vEdges._\bs_\bi_\bz_\be();\n+1093\n+1094 for (int i = 0; i < vEdges.size(); ++i) {\n+1095 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by eVerts = level.getEdgeVertices(vEdges[i]);\n+1096\n+1097 eIndices[i] = (eVerts[0] == vert) ? eVerts[1] : eVerts[0];\n+1098 }\n+1099 if (posMask.GetNumFaceWeights() || (hasTangents &&\n+tan1Mask.GetNumFaceWeights())) {\n+1100 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by vFaces = level.getVertexFaces(vert);\n+1101 _\bC_\bo_\bn_\bs_\bt_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by vInFace = level.getVertexFaceLocalIndices(vert);\n+1102\n+1103 for (int i = 0; i < vFaces.size(); ++i) {\n+1104 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by fVerts = level.getFaceVertices(vFaces[i]);\n+1105\n+1106 _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx vOppInFace = (vInFace[i] + 2);\n+1107 if (vOppInFace >= fVerts.size()) vOppInFace -= (_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx)fVerts._\bs_\bi_\bz_\be();\n+1108\n+1109 fIndices[i] = level.getFaceVertices(vFaces[i])[vOppInFace];\n+1110 }\n+1111 }\n+1112\n+1113 //\n+1114 // Combine the weights and indices for position and tangents. As with\n+applying\n+1115 // refinement masks to vertex data, in order to improve numerical\n+precision, it's\n+1116 // better to apply smaller weights first, so begin with the face-weights\n+followed\n+1117 // by the edge-weights and the vertex weight last.\n+1118 //\n+1119 dstPos[vert].Clear();\n+1120 for (int i = 0; i < posMask.GetNumFaceWeights(); ++i) {\n+1121 dstPos[vert].AddWithWeight(src[fIndices[i]], fPosWeights[i]);\n+1122 }\n+1123 for (int i = 0; i < posMask.GetNumEdgeWeights(); ++i) {\n+1124 dstPos[vert].AddWithWeight(src[eIndices[i]], ePosWeights[i]);\n+1125 }\n+1126 dstPos[vert].AddWithWeight(src[vert], vPosWeights[0]);\n+1127\n+1128 //\n+1129 // Apply the tangent masks -- both will have the same number of weights\n+and\n+1130 // indices (one tangent may be \"padded\" to accommodate the other), but\n+these\n+1131 // may differ from those of the position:\n+1132 //\n+1133 if (hasTangents) {\n+1134 assert(tan1Mask.GetNumFaceWeights() == tan2Mask.GetNumFaceWeights());\n+1135 assert(tan1Mask.GetNumEdgeWeights() == tan2Mask.GetNumEdgeWeights());\n+1136\n+1137 U1 & dstTan1 = *dstTan1Ptr;\n+1138 U2 & dstTan2 = *dstTan2Ptr;\n+1139\n+1140 dstTan1[vert].Clear();\n+1141 dstTan2[vert].Clear();\n+1142 for (int i = 0; i < tan1Mask.GetNumFaceWeights(); ++i) {\n+1143 dstTan1[vert].AddWithWeight(src[fIndices[i]], fTan1Weights[i]);\n+1144 dstTan2[vert].AddWithWeight(src[fIndices[i]], fTan2Weights[i]);\n+1145 }\n+1146 for (int i = 0; i < tan1Mask.GetNumEdgeWeights(); ++i) {\n+1147 dstTan1[vert].AddWithWeight(src[eIndices[i]], eTan1Weights[i]);\n+1148 dstTan2[vert].AddWithWeight(src[eIndices[i]], eTan2Weights[i]);\n+1149 }\n+1150 dstTan1[vert].AddWithWeight(src[vert], vTan1Weights[0]);\n+1151 dstTan2[vert].AddWithWeight(src[vert], vTan2Weights[0]);\n+1152 }\n+1153 }\n+1154}\n+1155\n+1156template <typename REAL>\n+1157template <Sdc::SchemeType SCHEME, class T, class U>\n+1158inline void\n+1159PrimvarRefinerReal<REAL>::limitFVar(T const & src, U & dst, int channel)\n+const {\n+1160\n+1161 Sdc::Scheme<SCHEME> scheme(_refiner._subdivOptions);\n+1162\n+1163 Vtr::internal::Level const & level = _refiner.getLevel\n+(_refiner.GetMaxLevel());\n+1164 Vtr::internal::FVarLevel const & fvarChannel = level.getFVarLevel\n+(channel);\n+1165\n+1166 int maxWeightsPerMask = 1 + 2 * level.getMaxValence();\n+1167\n+1168 Vtr::internal::StackBuffer<Weight,33> weightBuffer(maxWeightsPerMask);\n+1169 Vtr::internal::StackBuffer<Index,16> vEdgeBuffer(level.getMaxValence());\n+1170\n+1171 // This is a bit obscure -- assign both parent and child as last level\n+1172 Vtr::internal::VertexInterface vHood(level, level);\n+1173\n+1174 for (int vert = 0; vert < level.getNumVertices(); ++vert) {\n+1175\n+1176 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by vEdges = level.getVertexEdges(vert);\n+1177 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by vValues = fvarChannel.getVertexValues(vert);\n+1178\n+1179 // Incomplete vertices (present in sparse refinement) do not have their\n+full\n+1180 // topological neighborhood to determine a proper limit -- just leave the\n+1181 // values (perhaps more than one per vertex) at the refined location.\n+1182 //\n+1183 // The same can be done if the face-varying channel is purely linear.\n+1184 //\n+1185 bool isIncomplete = (level.getVertexTag(vert)._incomplete || (vEdges.size\n+() == 0));\n+1186 if (isIncomplete || fvarChannel.isLinear()) {\n+1187 for (int i = 0; i < vValues.size(); ++i) {\n+1188 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx vValue = vValues[i];\n+1189\n+1190 dst[vValue].Clear();\n+1191 dst[vValue].AddWithWeight(src[vValue], 1.0f);\n+1192 }\n+1193 continue;\n+1194 }\n+1195\n+1196 bool fvarVertMatchesVertex = fvarChannel.valueTopologyMatches(vValues[0]);\n+1197 if (fvarVertMatchesVertex) {\n+1198\n+1199 // Assign the mask weights to the common buffer and compute the mask:\n+1200 //\n+1201 Weight * vWeights = weightBuffer,\n+1202 * eWeights = vWeights + 1,\n+1203 * fWeights = eWeights + vEdges._\bs_\bi_\bz_\be();\n+1204\n+1205 Mask vMask(vWeights, eWeights, fWeights);\n+1206\n+1207 vHood.SetIndex(vert, vert);\n+1208\n+1209 scheme.ComputeVertexLimitMask(vHood, vMask, level.getVertexRule(vert));\n+1210\n+1211 //\n+1212 // Apply mask to corresponding FVar values for neighboring vertices:\n+1213 //\n+1214 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx vValue = vValues[0];\n+1215\n+1216 dst[vValue].Clear();\n+1217 if (vMask.GetNumFaceWeights() > 0) {\n+1218 assert(!vMask.AreFaceWeightsForFaceCenters());\n+1219\n+1220 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by vFaces = level.getVertexFaces(vert);\n+1221 _\bC_\bo_\bn_\bs_\bt_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by vInFace = level.getVertexFaceLocalIndices(vert);\n+1222\n+1223 for (int i = 0; i < vFaces.size(); ++i) {\n+1224 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by faceValues = fvarChannel.getFaceValues(vFaces[i]);\n+1225 _\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx vOppInFace = vInFace[i] + 2;\n+1226 if (vOppInFace >= faceValues.size()) vOppInFace -= faceValues._\bs_\bi_\bz_\be();\n+1227\n+1228 _\bI_\bn_\bd_\be_\bx vValueOppositeFace = faceValues[vOppInFace];\n+1229\n+1230 dst[vValue].AddWithWeight(src[vValueOppositeFace], fWeights[i]);\n+1231 }\n+1232 }\n+1233 if (vMask.GetNumEdgeWeights() > 0) {\n+1234 _\bI_\bn_\bd_\be_\bx * vEdgeValues = vEdgeBuffer;\n+1235 fvarChannel.getVertexEdgeValues(vert, vEdgeValues);\n+1236\n+1237 for (int i = 0; i < vEdges.size(); ++i) {\n+1238 dst[vValue].AddWithWeight(src[vEdgeValues[i]], eWeights[i]);\n+1239 }\n+1240 }\n+1241 dst[vValue].AddWithWeight(src[vValue], vWeights[0]);\n+1242 } else {\n+1243 //\n+1244 // Sibling FVar values associated with a vertex will be either a corner or\n+a crease:\n+1245 //\n+1246 for (int i = 0; i < vValues.size(); ++i) {\n+1247 _\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx vValue = vValues[i];\n+1248\n+1249 dst[vValue].Clear();\n+1250 if (fvarChannel.getValueTag(vValue).isCorner()) {\n+1251 dst[vValue].AddWithWeight(src[vValue], 1.0f);\n+1252 } else {\n+1253 _\bI_\bn_\bd_\be_\bx vEndValues[2];\n+1254 fvarChannel.getVertexCreaseEndValues(vert, i, vEndValues);\n+1255\n+1256 dst[vValue].AddWithWeight(src[vEndValues[0]], 1.0f/6.0f);\n+1257 dst[vValue].AddWithWeight(src[vEndValues[1]], 1.0f/6.0f);\n+1258 dst[vValue].AddWithWeight(src[vValue], 2.0f/3.0f);\n+1259 }\n+1260 }\n+1261 }\n+1262 }\n+1263}\n+1264\n+_\b1_\b2_\b6_\b5class _\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br : public _\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl<float> {\n+1266public:\n+_\b1_\b2_\b6_\b7 _\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const & refiner)\n+1268 : _\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl<float>(refiner) { }\n+1269};\n+1270\n+1271} // end namespace Far\n+1272\n+1273} // end namespace OPENSUBDIV_VERSION\n+1274using namespace OPENSUBDIV_VERSION;\n+1275} // end namespace OpenSubdiv\n+1276\n+1277#endif /* OPENSUBDIV3_FAR_PRIMVAR_REFINER_H */\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bT_\by_\bp_\be\n-Type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b4_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be\n-Provides shader source which can be used by client code.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b._\bh_\b:_\b4_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b:_\b:\n-_\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be\n-static std::string GetVertexShaderSource(Far::PatchDescriptor::Type type)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b:_\b:\n-_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bD_\br_\ba_\bw_\bi_\bn_\bg_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be\n-static std::string GetPatchDrawingShaderSource()\n-Returns shader source which can be used while drawing piecewise parametric\n-patches resulting from sub...\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b:_\b:_\bG_\be_\bt_\bH_\bu_\bl_\bl_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be\n-static std::string GetHullShaderSource(Far::PatchDescriptor::Type type, Far::\n-PatchDescriptor::Type fvarType)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b:_\b:\n-_\bG_\be_\bt_\bD_\bo_\bm_\ba_\bi_\bn_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be\n-static std::string GetDomainShaderSource(Far::PatchDescriptor::Type type)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b:_\b:\n-_\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be\n-static std::string GetVertexShaderSource(Far::PatchDescriptor::Type type, Far::\n-PatchDescriptor::Type fvarType)\n-Deprecated.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b:_\b:\n-_\bG_\be_\bt_\bD_\bo_\bm_\ba_\bi_\bn_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be\n-static std::string GetDomainShaderSource(Far::PatchDescriptor::Type type, Far::\n-PatchDescriptor::Type fvarType)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b:_\b:_\bG_\be_\bt_\bH_\bu_\bl_\bl_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be\n-static std::string GetHullShaderSource(Far::PatchDescriptor::Type type)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b:_\b:\n-_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bB_\ba_\bs_\bi_\bs_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be\n-static std::string GetPatchBasisShaderSource()\n-Returns shader source which can be used to evaluate position and first and\n-second derivatives on piec...\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b:_\b:\n-_\bG_\be_\bt_\bC_\bo_\bm_\bm_\bo_\bn_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be\n-static std::string GetCommonShaderSource()\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx\n+Vtr::LocalIndex LocalIndex\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b4_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bE_\br_\br_\bo_\br\n+void Error(ErrorType err, const char *format,...)\n+Sends an OSD error with a message (internal use only)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n+Vtr::ConstIndexArray ConstIndexArray\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b4_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bL_\bo_\bc_\ba_\bl_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n+Vtr::ConstLocalIndexArray ConstLocalIndexArray\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b4_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bF_\bA_\bR_\b__\bR_\bU_\bN_\bT_\bI_\bM_\bE_\b__\bE_\bR_\bR_\bO_\bR\n+@ FAR_RUNTIME_ERROR\n+Issue a generic runtime error, but continue execution.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\be_\br_\br_\bo_\br_\b._\bh_\b:_\b4_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx\n+Vtr::Index Index\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b4_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx\n+int Index\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b5_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx_\bI_\bs_\bV_\ba_\bl_\bi_\bd\n+bool IndexIsValid(Index index)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b5_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bB_\bI_\bL_\bI_\bN_\bE_\bA_\bR\n+@ SCHEME_BILINEAR\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b3_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bC_\bA_\bT_\bM_\bA_\bR_\bK\n+@ SCHEME_CATMARK\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b3_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bL_\bO_\bO_\bP\n+@ SCHEME_LOOP\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b4_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl\n+Applies refinement operations to generic primvar data.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b5_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl_\b:_\b:_\bL_\bi_\bm_\bi_\bt\n+void Limit(T const &src, U &dstPos) const\n+Apply limit weights to a primvar buffer.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b3_\b1_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl_\b:_\b:_\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl\n+PrimvarRefinerReal(TopologyRefiner const &refiner)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b5_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl_\b:_\b:_\bL_\bi_\bm_\bi_\bt\n+void Limit(T const &src, U &dstPos, U1 &dstTan1, U2 &dstTan2) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b3_\b4_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be_\bF_\ba_\bc_\be_\bU_\bn_\bi_\bf_\bo_\br_\bm\n+void InterpolateFaceUniform(int level, T const &src, U &dst) const\n+Refine uniform (per-face) primvar data between levels.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b3_\b9_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl_\b:_\b:_\bG_\be_\bt_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br\n+TopologyRefiner const & GetTopologyRefiner() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b6_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n+void InterpolateVarying(int level, T const &src, U &dst) const\n+Apply only varying interpolation weights to a primvar buffer for a single level\n+of refinement.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b4_\b1_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be\n+void Interpolate(int level, T const &src, U &dst) const\n+Apply vertex interpolation weights to a primvar buffer for a single level of\n+refinement.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b2_\b6_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl_\b:_\b:_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\be_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n+void InterpolateFaceVarying(int level, T const &src, U &dst, int channel=0)\n+const\n+Apply face-varying interpolation weights to a primvar buffer associated with a\n+particular face-varyin...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b2_\b9_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl_\b:_\b:_\b~_\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl\n+~PrimvarRefinerReal()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b6_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\bR_\be_\ba_\bl_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n+void LimitFaceVarying(T const &src, U &dst, int channel=0) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b3_\b6_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b2_\b6_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bP_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br\n+PrimvarRefiner(TopologyRefiner const &refiner)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b2_\b6_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br\n+Stores topology data for a specified set of refinement options.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b5_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be\n+Rule\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b8_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bC_\bR_\bE_\bA_\bS_\bE\n+@ RULE_CREASE\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b8_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be\n+Scheme is a class template which provides all implementation for the\n+subdivision schemes supported by...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b6_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b5_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by_\b:_\b:_\bs_\bi_\bz_\be\n+size_type size() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b7_\b2\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bm_\bt_\bl_\bP_\ba_\bt_\bc_\bh_\bS_\bh_\ba_\bd_\be_\br_\bS_\bo_\bu_\br_\bc_\be_\b._\bh\n+    * _\bf_\ba_\br\n+    * _\bp_\br_\bi_\bm_\bv_\ba_\br_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00854.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00854.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/ompEvaluator.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/far/patchTableFactory.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -90,42 +90,48 @@\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> &#124;\n <a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">ompEvaluator.h File Reference</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">patchTableFactory.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00866_source.html\">../osd/bufferDescriptor.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a01489_source.html\">../osd/types.h</a>&quot;</code><br />\n-<code>#include &lt;cstddef&gt;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00833_source.html\">../far/topologyRefiner.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00842_source.html\">../far/patchTable.h</a>&quot;</code><br />\n </div>\n <p><a href=\"a00854_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01313.html\">OmpEvaluator</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01017.html\">PatchTableFactory</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Factory for constructing a <a class=\"el\" href=\"a00993.html\" title=\"Container for arrays of parametric patches.\">PatchTable</a> from a <a class=\"el\" href=\"a01121.html\" title=\"Stores topology data for a specified set of refinement options.\">TopologyRefiner</a>.  <a href=\"a01017.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01021.html\">PatchTableFactory::Options</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Public options for the <a class=\"el\" href=\"a00993.html\" title=\"Container for arrays of parametric patches.\">PatchTable</a> factory.  <a href=\"a01021.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01025.html\">PatchTableFactory::PatchFaceTag</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Obsolete internal struct not intended for public use &ndash; due to be deprecated.  <a href=\"a01025.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n+<tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00854.html\">ompEvaluator.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7f420b72a822828cfa8b0561c695a5cc.html\">far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00854.html\">patchTableFactory.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,25 +1,32 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-ompEvaluator.h File Reference\n+patchTableFactory.h File Reference\n #include \"../version.h\"\n-#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh\"\n-#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n-#include <cstddef>\n+#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh\"\n+#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n+ class \u00a0 _\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by\n+\u00a0        Factory for constructing a _\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be from a _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n+\u00a0        Public options for the _\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be factory. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bF_\ba_\bc_\be_\bT_\ba_\bg\n+\u00a0        Obsolete internal struct not intended for public use \u2013 due to be\n+         deprecated. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bo_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh\n+    * _\bf_\ba_\br\n+    * _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00854.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00854.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,3 +1,5 @@\n var a00854 = [\n-    [\"OmpEvaluator\", \"a01313.html\", null]\n+    [\"PatchTableFactory\", \"a01017.html\", \"a01017\"],\n+    [\"Options\", \"a01021.html\", \"a01021\"],\n+    [\"PatchFaceTag\", \"a01025.html\", \"a01025\"]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00854_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00854_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/ompEvaluator.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/far/patchTableFactory.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">ompEvaluator.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">patchTableFactory.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00854.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2015 Pixar</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2013 Pixar</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -119,528 +119,249 @@\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_OMP_EVALUATOR_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_OMP_EVALUATOR_H</span></div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_FAR_PATCH_TABLE_FACTORY_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_FAR_PATCH_TABLE_FACTORY_H</span></div>\n <div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n <div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#include &quot;../osd/bufferDescriptor.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../osd/types.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &lt;cstddef&gt;</span></div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">namespace </span>Osd {</div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00039\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01313.html\">   39</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01313.html\">OmpEvaluator</a> {</div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../far/topologyRefiner.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../far/patchTable.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span> </div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span> </div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"keyword\">namespace </span>Far {</div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00040\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01017.html\">   40</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01017.html\">PatchTableFactory</a> {</div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00045\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html\">   45</a></span>    <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01021.html\">Options</a> {</div>\n <div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span> </div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00072\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01313.html#a76ac331e29d26f25d0d807b74c1a838b\">   72</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01313.html#a76ac331e29d26f25d0d807b74c1a838b\">EvalStencils</a>(</div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span>        <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01313.html\">OmpEvaluator</a> *instance = NULL,</div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span> </div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span> </div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>        <span class=\"keywordflow\">if</span> (stencilTable-&gt;GetNumStencils() == 0)</div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span> </div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01313.html#a76ac331e29d26f25d0d807b74c1a838b\">EvalStencils</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>                            dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>                            &amp;stencilTable-&gt;GetSizes()[0],</div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>                            &amp;stencilTable-&gt;GetOffsets()[0],</div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>                            &amp;stencilTable-&gt;GetControlIndices()[0],</div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>                            &amp;stencilTable-&gt;GetWeights()[0],</div>\n-<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>                            <span class=\"comment\">/*start = */</span> 0,</div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>                            <span class=\"comment\">/*end   = */</span> stencilTable-&gt;GetNumStencils());</div>\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span> </div>\n-<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01313.html#a4345e3659b7fb82f23dd51c688179ce3\">  121</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01313.html#a4345e3659b7fb82f23dd51c688179ce3\">EvalStencils</a>(</div>\n-<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span>        <span class=\"keywordtype\">float</span> *dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * sizes,</div>\n-<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * offsets,</div>\n-<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * indices,</div>\n-<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * weights,</div>\n-<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span>        <span class=\"keywordtype\">int</span> start, <span class=\"keywordtype\">int</span> end);</div>\n-<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span> </div>\n-<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\">  167</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00168\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01313.html#a6b577cee117522a91402eb4237e5e913\">  168</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01313.html#a6b577cee117522a91402eb4237e5e913\">EvalStencils</a>(</div>\n-<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\">  169</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\">  170</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\">  172</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\">  173</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n-<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\">  174</span>        <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01313.html\">OmpEvaluator</a> *instance = NULL,</div>\n-<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\">  175</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\">  176</span> </div>\n-<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\">  178</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\">  179</span> </div>\n-<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\">  180</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01313.html#a76ac331e29d26f25d0d807b74c1a838b\">EvalStencils</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\">  181</span>                            dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\">  182</span>                            duBuffer-&gt;BindCpuBuffer(),  duDesc,</div>\n-<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\">  183</span>                            dvBuffer-&gt;BindCpuBuffer(),  dvDesc,</div>\n-<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\">  184</span>                            &amp;stencilTable-&gt;GetSizes()[0],</div>\n-<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\">  185</span>                            &amp;stencilTable-&gt;GetOffsets()[0],</div>\n-<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\">  186</span>                            &amp;stencilTable-&gt;GetControlIndices()[0],</div>\n-<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\">  187</span>                            &amp;stencilTable-&gt;GetWeights()[0],</div>\n-<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\">  188</span>                            &amp;stencilTable-&gt;GetDuWeights()[0],</div>\n-<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\">  189</span>                            &amp;stencilTable-&gt;GetDvWeights()[0],</div>\n-<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\">  190</span>                            <span class=\"comment\">/*start = */</span> 0,</div>\n-<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\">  191</span>                            <span class=\"comment\">/*end   = */</span> stencilTable-&gt;GetNumStencils());</div>\n-<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\">  192</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\">  193</span> </div>\n-<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01313.html#a6daed6135a40cda2daf6c6ea2047b330\">  234</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01313.html#a6daed6135a40cda2daf6c6ea2047b330\">EvalStencils</a>(</div>\n-<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\">  235</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\">  236</span>        <span class=\"keywordtype\">float</span> *dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\">  237</span>        <span class=\"keywordtype\">float</span> *du,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\">  238</span>        <span class=\"keywordtype\">float</span> *dv,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\">  239</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * sizes,</div>\n-<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\">  240</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * offsets,</div>\n-<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\">  241</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * indices,</div>\n-<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\">  242</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * weights,</div>\n-<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\">  243</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * duWeights,</div>\n-<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\">  244</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * dvWeights,</div>\n-<div class=\"line\"><a id=\"l00245\" name=\"l00245\"></a><span class=\"lineno\">  245</span>        <span class=\"keywordtype\">int</span> start, <span class=\"keywordtype\">int</span> end);</div>\n-<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\">  246</span> </div>\n-<div class=\"line\"><a id=\"l00302\" name=\"l00302\"></a><span class=\"lineno\">  302</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00303\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00303\" name=\"l00303\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01313.html#a9b393ddc414d176a2b4438ab1e3c1682\">  303</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01313.html#a9b393ddc414d176a2b4438ab1e3c1682\">EvalStencils</a>(</div>\n-<div class=\"line\"><a id=\"l00304\" name=\"l00304\"></a><span class=\"lineno\">  304</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00305\" name=\"l00305\"></a><span class=\"lineno\">  305</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00306\" name=\"l00306\"></a><span class=\"lineno\">  306</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\">  307</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00308\" name=\"l00308\"></a><span class=\"lineno\">  308</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l00309\" name=\"l00309\"></a><span class=\"lineno\">  309</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l00310\" name=\"l00310\"></a><span class=\"lineno\">  310</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00311\" name=\"l00311\"></a><span class=\"lineno\">  311</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n-<div class=\"line\"><a id=\"l00312\" name=\"l00312\"></a><span class=\"lineno\">  312</span>        <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01313.html\">OmpEvaluator</a> *instance = NULL,</div>\n-<div class=\"line\"><a id=\"l00313\" name=\"l00313\"></a><span class=\"lineno\">  313</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l00314\" name=\"l00314\"></a><span class=\"lineno\">  314</span> </div>\n-<div class=\"line\"><a id=\"l00315\" name=\"l00315\"></a><span class=\"lineno\">  315</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00316\" name=\"l00316\"></a><span class=\"lineno\">  316</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00317\" name=\"l00317\"></a><span class=\"lineno\">  317</span> </div>\n-<div class=\"line\"><a id=\"l00318\" name=\"l00318\"></a><span class=\"lineno\">  318</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01313.html#a76ac331e29d26f25d0d807b74c1a838b\">EvalStencils</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00319\" name=\"l00319\"></a><span class=\"lineno\">  319</span>                            dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00320\" name=\"l00320\"></a><span class=\"lineno\">  320</span>                            duBuffer-&gt;BindCpuBuffer(),  duDesc,</div>\n-<div class=\"line\"><a id=\"l00321\" name=\"l00321\"></a><span class=\"lineno\">  321</span>                            dvBuffer-&gt;BindCpuBuffer(),  dvDesc,</div>\n-<div class=\"line\"><a id=\"l00322\" name=\"l00322\"></a><span class=\"lineno\">  322</span>                            duuBuffer-&gt;BindCpuBuffer(), duuDesc,</div>\n-<div class=\"line\"><a id=\"l00323\" name=\"l00323\"></a><span class=\"lineno\">  323</span>                            duvBuffer-&gt;BindCpuBuffer(), duvDesc,</div>\n-<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\">  324</span>                            dvvBuffer-&gt;BindCpuBuffer(), dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\">  325</span>                            &amp;stencilTable-&gt;GetSizes()[0],</div>\n-<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\">  326</span>                            &amp;stencilTable-&gt;GetOffsets()[0],</div>\n-<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\">  327</span>                            &amp;stencilTable-&gt;GetControlIndices()[0],</div>\n-<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\">  328</span>                            &amp;stencilTable-&gt;GetWeights()[0],</div>\n-<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\">  329</span>                            &amp;stencilTable-&gt;GetDuWeights()[0],</div>\n-<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\">  330</span>                            &amp;stencilTable-&gt;GetDvWeights()[0],</div>\n-<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\">  331</span>                            &amp;stencilTable-&gt;GetDuuWeights()[0],</div>\n-<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\">  332</span>                            &amp;stencilTable-&gt;GetDuvWeights()[0],</div>\n-<div class=\"line\"><a id=\"l00333\" name=\"l00333\"></a><span class=\"lineno\">  333</span>                            &amp;stencilTable-&gt;GetDvvWeights()[0],</div>\n-<div class=\"line\"><a id=\"l00334\" name=\"l00334\"></a><span class=\"lineno\">  334</span>                            <span class=\"comment\">/*start = */</span> 0,</div>\n-<div class=\"line\"><a id=\"l00335\" name=\"l00335\"></a><span class=\"lineno\">  335</span>                            <span class=\"comment\">/*end   = */</span> stencilTable-&gt;GetNumStencils());</div>\n-<div class=\"line\"><a id=\"l00336\" name=\"l00336\"></a><span class=\"lineno\">  336</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00337\" name=\"l00337\"></a><span class=\"lineno\">  337</span> </div>\n-<div class=\"line\"><a id=\"l00399\" name=\"l00399\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01313.html#a76707de0a89ab94f15ad4b2c398a2c23\">  399</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01313.html#a76707de0a89ab94f15ad4b2c398a2c23\">EvalStencils</a>(</div>\n-<div class=\"line\"><a id=\"l00400\" name=\"l00400\"></a><span class=\"lineno\">  400</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00401\" name=\"l00401\"></a><span class=\"lineno\">  401</span>        <span class=\"keywordtype\">float</span> *dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00402\" name=\"l00402\"></a><span class=\"lineno\">  402</span>        <span class=\"keywordtype\">float</span> *du,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00403\" name=\"l00403\"></a><span class=\"lineno\">  403</span>        <span class=\"keywordtype\">float</span> *dv,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00404\" name=\"l00404\"></a><span class=\"lineno\">  404</span>        <span class=\"keywordtype\">float</span> *duu,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l00405\" name=\"l00405\"></a><span class=\"lineno\">  405</span>        <span class=\"keywordtype\">float</span> *duv,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l00406\" name=\"l00406\"></a><span class=\"lineno\">  406</span>        <span class=\"keywordtype\">float</span> *dvv,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00407\" name=\"l00407\"></a><span class=\"lineno\">  407</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * sizes,</div>\n-<div class=\"line\"><a id=\"l00408\" name=\"l00408\"></a><span class=\"lineno\">  408</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * offsets,</div>\n-<div class=\"line\"><a id=\"l00409\" name=\"l00409\"></a><span class=\"lineno\">  409</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * indices,</div>\n-<div class=\"line\"><a id=\"l00410\" name=\"l00410\"></a><span class=\"lineno\">  410</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * weights,</div>\n-<div class=\"line\"><a id=\"l00411\" name=\"l00411\"></a><span class=\"lineno\">  411</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * duWeights,</div>\n-<div class=\"line\"><a id=\"l00412\" name=\"l00412\"></a><span class=\"lineno\">  412</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * dvWeights,</div>\n-<div class=\"line\"><a id=\"l00413\" name=\"l00413\"></a><span class=\"lineno\">  413</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * duuWeights,</div>\n-<div class=\"line\"><a id=\"l00414\" name=\"l00414\"></a><span class=\"lineno\">  414</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * duvWeights,</div>\n-<div class=\"line\"><a id=\"l00415\" name=\"l00415\"></a><span class=\"lineno\">  415</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * dvvWeights,</div>\n-<div class=\"line\"><a id=\"l00416\" name=\"l00416\"></a><span class=\"lineno\">  416</span>        <span class=\"keywordtype\">int</span> start, <span class=\"keywordtype\">int</span> end);</div>\n-<div class=\"line\"><a id=\"l00417\" name=\"l00417\"></a><span class=\"lineno\">  417</span> </div>\n-<div class=\"line\"><a id=\"l00423\" name=\"l00423\"></a><span class=\"lineno\">  423</span> </div>\n-<div class=\"line\"><a id=\"l00452\" name=\"l00452\"></a><span class=\"lineno\">  452</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l00453\" name=\"l00453\"></a><span class=\"lineno\">  453</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00454\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00454\" name=\"l00454\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01313.html#abbbc45452da270eafbeb163a0e78df03\">  454</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01313.html#abbbc45452da270eafbeb163a0e78df03\">EvalPatches</a>(</div>\n-<div class=\"line\"><a id=\"l00455\" name=\"l00455\"></a><span class=\"lineno\">  455</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00456\" name=\"l00456\"></a><span class=\"lineno\">  456</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00457\" name=\"l00457\"></a><span class=\"lineno\">  457</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00458\" name=\"l00458\"></a><span class=\"lineno\">  458</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l00459\" name=\"l00459\"></a><span class=\"lineno\">  459</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l00460\" name=\"l00460\"></a><span class=\"lineno\">  460</span>        <a class=\"code hl_class\" href=\"a01313.html\">OmpEvaluator</a> <span class=\"keyword\">const</span> *instance = NULL,</div>\n-<div class=\"line\"><a id=\"l00461\" name=\"l00461\"></a><span class=\"lineno\">  461</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l00462\" name=\"l00462\"></a><span class=\"lineno\">  462</span> </div>\n-<div class=\"line\"><a id=\"l00463\" name=\"l00463\"></a><span class=\"lineno\">  463</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00464\" name=\"l00464\"></a><span class=\"lineno\">  464</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00465\" name=\"l00465\"></a><span class=\"lineno\">  465</span> </div>\n-<div class=\"line\"><a id=\"l00466\" name=\"l00466\"></a><span class=\"lineno\">  466</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01313.html#abbbc45452da270eafbeb163a0e78df03\">EvalPatches</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00467\" name=\"l00467\"></a><span class=\"lineno\">  467</span>                           dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00468\" name=\"l00468\"></a><span class=\"lineno\">  468</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00469\" name=\"l00469\"></a><span class=\"lineno\">  469</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a>*)patchCoords-&gt;BindCpuBuffer(),</div>\n-<div class=\"line\"><a id=\"l00470\" name=\"l00470\"></a><span class=\"lineno\">  470</span>                           patchTable-&gt;GetPatchArrayBuffer(),</div>\n-<div class=\"line\"><a id=\"l00471\" name=\"l00471\"></a><span class=\"lineno\">  471</span>                           patchTable-&gt;GetPatchIndexBuffer(),</div>\n-<div class=\"line\"><a id=\"l00472\" name=\"l00472\"></a><span class=\"lineno\">  472</span>                           patchTable-&gt;GetPatchParamBuffer());</div>\n-<div class=\"line\"><a id=\"l00473\" name=\"l00473\"></a><span class=\"lineno\">  473</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00474\" name=\"l00474\"></a><span class=\"lineno\">  474</span> </div>\n-<div class=\"line\"><a id=\"l00515\" name=\"l00515\"></a><span class=\"lineno\">  515</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l00516\" name=\"l00516\"></a><span class=\"lineno\">  516</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00517\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00517\" name=\"l00517\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01313.html#a8ec09b3a6962ce219f54fb5edec53640\">  517</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01313.html#a8ec09b3a6962ce219f54fb5edec53640\">EvalPatches</a>(</div>\n-<div class=\"line\"><a id=\"l00518\" name=\"l00518\"></a><span class=\"lineno\">  518</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00519\" name=\"l00519\"></a><span class=\"lineno\">  519</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00520\" name=\"l00520\"></a><span class=\"lineno\">  520</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00521\" name=\"l00521\"></a><span class=\"lineno\">  521</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00522\" name=\"l00522\"></a><span class=\"lineno\">  522</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00523\" name=\"l00523\"></a><span class=\"lineno\">  523</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l00524\" name=\"l00524\"></a><span class=\"lineno\">  524</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l00525\" name=\"l00525\"></a><span class=\"lineno\">  525</span>        <a class=\"code hl_class\" href=\"a01313.html\">OmpEvaluator</a> <span class=\"keyword\">const</span> *instance = NULL,</div>\n-<div class=\"line\"><a id=\"l00526\" name=\"l00526\"></a><span class=\"lineno\">  526</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l00527\" name=\"l00527\"></a><span class=\"lineno\">  527</span> </div>\n-<div class=\"line\"><a id=\"l00528\" name=\"l00528\"></a><span class=\"lineno\">  528</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00529\" name=\"l00529\"></a><span class=\"lineno\">  529</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00530\" name=\"l00530\"></a><span class=\"lineno\">  530</span> </div>\n-<div class=\"line\"><a id=\"l00531\" name=\"l00531\"></a><span class=\"lineno\">  531</span>        <span class=\"comment\">// XXX: PatchCoords is somewhat abusing vertex primvar buffer interop.</span></div>\n-<div class=\"line\"><a id=\"l00532\" name=\"l00532\"></a><span class=\"lineno\">  532</span>        <span class=\"comment\">//      ideally all buffer classes should have templated by datatype</span></div>\n-<div class=\"line\"><a id=\"l00533\" name=\"l00533\"></a><span class=\"lineno\">  533</span>        <span class=\"comment\">//      so that downcast isn&#39;t needed there.</span></div>\n-<div class=\"line\"><a id=\"l00534\" name=\"l00534\"></a><span class=\"lineno\">  534</span>        <span class=\"comment\">//      (e.g. Osd::CpuBuffer&lt;PatchCoord&gt; )</span></div>\n-<div class=\"line\"><a id=\"l00535\" name=\"l00535\"></a><span class=\"lineno\">  535</span>        <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00536\" name=\"l00536\"></a><span class=\"lineno\">  536</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01313.html#abbbc45452da270eafbeb163a0e78df03\">EvalPatches</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00537\" name=\"l00537\"></a><span class=\"lineno\">  537</span>                           dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00538\" name=\"l00538\"></a><span class=\"lineno\">  538</span>                           duBuffer-&gt;BindCpuBuffer(),  duDesc,</div>\n-<div class=\"line\"><a id=\"l00539\" name=\"l00539\"></a><span class=\"lineno\">  539</span>                           dvBuffer-&gt;BindCpuBuffer(),  dvDesc,</div>\n-<div class=\"line\"><a id=\"l00540\" name=\"l00540\"></a><span class=\"lineno\">  540</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00541\" name=\"l00541\"></a><span class=\"lineno\">  541</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a>*)patchCoords-&gt;BindCpuBuffer(),</div>\n-<div class=\"line\"><a id=\"l00542\" name=\"l00542\"></a><span class=\"lineno\">  542</span>                           patchTable-&gt;GetPatchArrayBuffer(),</div>\n-<div class=\"line\"><a id=\"l00543\" name=\"l00543\"></a><span class=\"lineno\">  543</span>                           patchTable-&gt;GetPatchIndexBuffer(),</div>\n-<div class=\"line\"><a id=\"l00544\" name=\"l00544\"></a><span class=\"lineno\">  544</span>                           patchTable-&gt;GetPatchParamBuffer());</div>\n-<div class=\"line\"><a id=\"l00545\" name=\"l00545\"></a><span class=\"lineno\">  545</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00546\" name=\"l00546\"></a><span class=\"lineno\">  546</span> </div>\n-<div class=\"line\"><a id=\"l00605\" name=\"l00605\"></a><span class=\"lineno\">  605</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l00606\" name=\"l00606\"></a><span class=\"lineno\">  606</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00607\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00607\" name=\"l00607\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01313.html#a9644130ae2673ec46111cf6b466b3e90\">  607</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01313.html#a9644130ae2673ec46111cf6b466b3e90\">EvalPatches</a>(</div>\n-<div class=\"line\"><a id=\"l00608\" name=\"l00608\"></a><span class=\"lineno\">  608</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00609\" name=\"l00609\"></a><span class=\"lineno\">  609</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00610\" name=\"l00610\"></a><span class=\"lineno\">  610</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00611\" name=\"l00611\"></a><span class=\"lineno\">  611</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00612\" name=\"l00612\"></a><span class=\"lineno\">  612</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l00613\" name=\"l00613\"></a><span class=\"lineno\">  613</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l00614\" name=\"l00614\"></a><span class=\"lineno\">  614</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00615\" name=\"l00615\"></a><span class=\"lineno\">  615</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00616\" name=\"l00616\"></a><span class=\"lineno\">  616</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l00617\" name=\"l00617\"></a><span class=\"lineno\">  617</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l00618\" name=\"l00618\"></a><span class=\"lineno\">  618</span>        <a class=\"code hl_class\" href=\"a01313.html\">OmpEvaluator</a> <span class=\"keyword\">const</span> *instance = NULL,</div>\n-<div class=\"line\"><a id=\"l00619\" name=\"l00619\"></a><span class=\"lineno\">  619</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l00620\" name=\"l00620\"></a><span class=\"lineno\">  620</span> </div>\n-<div class=\"line\"><a id=\"l00621\" name=\"l00621\"></a><span class=\"lineno\">  621</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00622\" name=\"l00622\"></a><span class=\"lineno\">  622</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00623\" name=\"l00623\"></a><span class=\"lineno\">  623</span> </div>\n-<div class=\"line\"><a id=\"l00624\" name=\"l00624\"></a><span class=\"lineno\">  624</span>        <span class=\"comment\">// XXX: PatchCoords is somewhat abusing vertex primvar buffer interop.</span></div>\n-<div class=\"line\"><a id=\"l00625\" name=\"l00625\"></a><span class=\"lineno\">  625</span>        <span class=\"comment\">//      ideally all buffer classes should have templated by datatype</span></div>\n-<div class=\"line\"><a id=\"l00626\" name=\"l00626\"></a><span class=\"lineno\">  626</span>        <span class=\"comment\">//      so that downcast isn&#39;t needed there.</span></div>\n-<div class=\"line\"><a id=\"l00627\" name=\"l00627\"></a><span class=\"lineno\">  627</span>        <span class=\"comment\">//      (e.g. Osd::CpuBuffer&lt;PatchCoord&gt; )</span></div>\n-<div class=\"line\"><a id=\"l00628\" name=\"l00628\"></a><span class=\"lineno\">  628</span>        <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00629\" name=\"l00629\"></a><span class=\"lineno\">  629</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01313.html#abbbc45452da270eafbeb163a0e78df03\">EvalPatches</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00630\" name=\"l00630\"></a><span class=\"lineno\">  630</span>                           dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00631\" name=\"l00631\"></a><span class=\"lineno\">  631</span>                           duBuffer-&gt;BindCpuBuffer(),  duDesc,</div>\n-<div class=\"line\"><a id=\"l00632\" name=\"l00632\"></a><span class=\"lineno\">  632</span>                           dvBuffer-&gt;BindCpuBuffer(),  dvDesc,</div>\n-<div class=\"line\"><a id=\"l00633\" name=\"l00633\"></a><span class=\"lineno\">  633</span>                           duuBuffer-&gt;BindCpuBuffer(), duuDesc,</div>\n-<div class=\"line\"><a id=\"l00634\" name=\"l00634\"></a><span class=\"lineno\">  634</span>                           duvBuffer-&gt;BindCpuBuffer(), duvDesc,</div>\n-<div class=\"line\"><a id=\"l00635\" name=\"l00635\"></a><span class=\"lineno\">  635</span>                           dvvBuffer-&gt;BindCpuBuffer(), dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00636\" name=\"l00636\"></a><span class=\"lineno\">  636</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00637\" name=\"l00637\"></a><span class=\"lineno\">  637</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a>*)patchCoords-&gt;BindCpuBuffer(),</div>\n-<div class=\"line\"><a id=\"l00638\" name=\"l00638\"></a><span class=\"lineno\">  638</span>                           patchTable-&gt;GetPatchArrayBuffer(),</div>\n-<div class=\"line\"><a id=\"l00639\" name=\"l00639\"></a><span class=\"lineno\">  639</span>                           patchTable-&gt;GetPatchIndexBuffer(),</div>\n-<div class=\"line\"><a id=\"l00640\" name=\"l00640\"></a><span class=\"lineno\">  640</span>                           patchTable-&gt;GetPatchParamBuffer());</div>\n-<div class=\"line\"><a id=\"l00641\" name=\"l00641\"></a><span class=\"lineno\">  641</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00642\" name=\"l00642\"></a><span class=\"lineno\">  642</span> </div>\n-<div class=\"line\"><a id=\"l00670\" name=\"l00670\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01313.html#ad5b907c22dfcb943e5f25f3c16543535\">  670</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01313.html#ad5b907c22dfcb943e5f25f3c16543535\">EvalPatches</a>(</div>\n-<div class=\"line\"><a id=\"l00671\" name=\"l00671\"></a><span class=\"lineno\">  671</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00672\" name=\"l00672\"></a><span class=\"lineno\">  672</span>        <span class=\"keywordtype\">float</span> *dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00673\" name=\"l00673\"></a><span class=\"lineno\">  673</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00674\" name=\"l00674\"></a><span class=\"lineno\">  674</span>        <span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a> *patchCoords,</div>\n-<div class=\"line\"><a id=\"l00675\" name=\"l00675\"></a><span class=\"lineno\">  675</span>        <span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01325.html\">PatchArray</a> *patchArrays,</div>\n-<div class=\"line\"><a id=\"l00676\" name=\"l00676\"></a><span class=\"lineno\">  676</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> *patchIndexBuffer,</div>\n-<div class=\"line\"><a id=\"l00677\" name=\"l00677\"></a><span class=\"lineno\">  677</span>        <span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01329.html\">PatchParam</a> *patchParamBuffer);</div>\n-<div class=\"line\"><a id=\"l00678\" name=\"l00678\"></a><span class=\"lineno\">  678</span> </div>\n-<div class=\"line\"><a id=\"l00716\" name=\"l00716\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01313.html#ac1dba254bc287312f8f812113c8e8ad3\">  716</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01313.html#ac1dba254bc287312f8f812113c8e8ad3\">EvalPatches</a>(</div>\n-<div class=\"line\"><a id=\"l00717\" name=\"l00717\"></a><span class=\"lineno\">  717</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00718\" name=\"l00718\"></a><span class=\"lineno\">  718</span>        <span class=\"keywordtype\">float</span> *dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00719\" name=\"l00719\"></a><span class=\"lineno\">  719</span>        <span class=\"keywordtype\">float</span> *du,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00720\" name=\"l00720\"></a><span class=\"lineno\">  720</span>        <span class=\"keywordtype\">float</span> *dv,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00721\" name=\"l00721\"></a><span class=\"lineno\">  721</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00722\" name=\"l00722\"></a><span class=\"lineno\">  722</span>        <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a> <span class=\"keyword\">const</span> *patchCoords,</div>\n-<div class=\"line\"><a id=\"l00723\" name=\"l00723\"></a><span class=\"lineno\">  723</span>        <a class=\"code hl_struct\" href=\"a01325.html\">PatchArray</a> <span class=\"keyword\">const</span> *patchArrays,</div>\n-<div class=\"line\"><a id=\"l00724\" name=\"l00724\"></a><span class=\"lineno\">  724</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> *patchIndexBuffer,</div>\n-<div class=\"line\"><a id=\"l00725\" name=\"l00725\"></a><span class=\"lineno\">  725</span>        <a class=\"code hl_struct\" href=\"a01329.html\">PatchParam</a> <span class=\"keyword\">const</span> *patchParamBuffer);</div>\n-<div class=\"line\"><a id=\"l00726\" name=\"l00726\"></a><span class=\"lineno\">  726</span> </div>\n-<div class=\"line\"><a id=\"l00779\" name=\"l00779\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01313.html#a7b556148d6ef2e04fbe99677e3a87e91\">  779</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01313.html#a7b556148d6ef2e04fbe99677e3a87e91\">EvalPatches</a>(</div>\n-<div class=\"line\"><a id=\"l00780\" name=\"l00780\"></a><span class=\"lineno\">  780</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00781\" name=\"l00781\"></a><span class=\"lineno\">  781</span>        <span class=\"keywordtype\">float</span> *dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00782\" name=\"l00782\"></a><span class=\"lineno\">  782</span>        <span class=\"keywordtype\">float</span> *du,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00783\" name=\"l00783\"></a><span class=\"lineno\">  783</span>        <span class=\"keywordtype\">float</span> *dv,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00784\" name=\"l00784\"></a><span class=\"lineno\">  784</span>        <span class=\"keywordtype\">float</span> *duu,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l00785\" name=\"l00785\"></a><span class=\"lineno\">  785</span>        <span class=\"keywordtype\">float</span> *duv,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l00786\" name=\"l00786\"></a><span class=\"lineno\">  786</span>        <span class=\"keywordtype\">float</span> *dvv,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00787\" name=\"l00787\"></a><span class=\"lineno\">  787</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00788\" name=\"l00788\"></a><span class=\"lineno\">  788</span>        <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a> <span class=\"keyword\">const</span> *patchCoords,</div>\n-<div class=\"line\"><a id=\"l00789\" name=\"l00789\"></a><span class=\"lineno\">  789</span>        <a class=\"code hl_struct\" href=\"a01325.html\">PatchArray</a> <span class=\"keyword\">const</span> *patchArrays,</div>\n-<div class=\"line\"><a id=\"l00790\" name=\"l00790\"></a><span class=\"lineno\">  790</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> *patchIndexBuffer,</div>\n-<div class=\"line\"><a id=\"l00791\" name=\"l00791\"></a><span class=\"lineno\">  791</span>        <a class=\"code hl_struct\" href=\"a01329.html\">PatchParam</a> <span class=\"keyword\">const</span> *patchParamBuffer);</div>\n-<div class=\"line\"><a id=\"l00792\" name=\"l00792\"></a><span class=\"lineno\">  792</span> </div>\n-<div class=\"line\"><a id=\"l00821\" name=\"l00821\"></a><span class=\"lineno\">  821</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l00822\" name=\"l00822\"></a><span class=\"lineno\">  822</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00823\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00823\" name=\"l00823\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01313.html#a6e57edf33d097abc92fbafe7e4ae9224\">  823</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01313.html#a6e57edf33d097abc92fbafe7e4ae9224\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l00824\" name=\"l00824\"></a><span class=\"lineno\">  824</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00825\" name=\"l00825\"></a><span class=\"lineno\">  825</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00826\" name=\"l00826\"></a><span class=\"lineno\">  826</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00827\" name=\"l00827\"></a><span class=\"lineno\">  827</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l00828\" name=\"l00828\"></a><span class=\"lineno\">  828</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l00829\" name=\"l00829\"></a><span class=\"lineno\">  829</span>        <a class=\"code hl_class\" href=\"a01313.html\">OmpEvaluator</a> <span class=\"keyword\">const</span> *instance = NULL,</div>\n-<div class=\"line\"><a id=\"l00830\" name=\"l00830\"></a><span class=\"lineno\">  830</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l00831\" name=\"l00831\"></a><span class=\"lineno\">  831</span> </div>\n-<div class=\"line\"><a id=\"l00832\" name=\"l00832\"></a><span class=\"lineno\">  832</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00833\" name=\"l00833\"></a><span class=\"lineno\">  833</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00834\" name=\"l00834\"></a><span class=\"lineno\">  834</span> </div>\n-<div class=\"line\"><a id=\"l00835\" name=\"l00835\"></a><span class=\"lineno\">  835</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01313.html#abbbc45452da270eafbeb163a0e78df03\">EvalPatches</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00836\" name=\"l00836\"></a><span class=\"lineno\">  836</span>                           dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00837\" name=\"l00837\"></a><span class=\"lineno\">  837</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00838\" name=\"l00838\"></a><span class=\"lineno\">  838</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a>*)patchCoords-&gt;BindCpuBuffer(),</div>\n-<div class=\"line\"><a id=\"l00839\" name=\"l00839\"></a><span class=\"lineno\">  839</span>                           patchTable-&gt;GetVaryingPatchArrayBuffer(),</div>\n-<div class=\"line\"><a id=\"l00840\" name=\"l00840\"></a><span class=\"lineno\">  840</span>                           patchTable-&gt;GetVaryingPatchIndexBuffer(),</div>\n-<div class=\"line\"><a id=\"l00841\" name=\"l00841\"></a><span class=\"lineno\">  841</span>                           patchTable-&gt;GetPatchParamBuffer());</div>\n-<div class=\"line\"><a id=\"l00842\" name=\"l00842\"></a><span class=\"lineno\">  842</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00843\" name=\"l00843\"></a><span class=\"lineno\">  843</span> </div>\n-<div class=\"line\"><a id=\"l00884\" name=\"l00884\"></a><span class=\"lineno\">  884</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l00885\" name=\"l00885\"></a><span class=\"lineno\">  885</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00886\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00886\" name=\"l00886\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01313.html#a95dcfa63c8f686a8a30b46dcc563d5fe\">  886</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01313.html#a95dcfa63c8f686a8a30b46dcc563d5fe\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l00887\" name=\"l00887\"></a><span class=\"lineno\">  887</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00888\" name=\"l00888\"></a><span class=\"lineno\">  888</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00889\" name=\"l00889\"></a><span class=\"lineno\">  889</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00890\" name=\"l00890\"></a><span class=\"lineno\">  890</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00891\" name=\"l00891\"></a><span class=\"lineno\">  891</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00892\" name=\"l00892\"></a><span class=\"lineno\">  892</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l00893\" name=\"l00893\"></a><span class=\"lineno\">  893</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l00894\" name=\"l00894\"></a><span class=\"lineno\">  894</span>        <a class=\"code hl_class\" href=\"a01313.html\">OmpEvaluator</a> <span class=\"keyword\">const</span> *instance = NULL,</div>\n-<div class=\"line\"><a id=\"l00895\" name=\"l00895\"></a><span class=\"lineno\">  895</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l00896\" name=\"l00896\"></a><span class=\"lineno\">  896</span> </div>\n-<div class=\"line\"><a id=\"l00897\" name=\"l00897\"></a><span class=\"lineno\">  897</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00898\" name=\"l00898\"></a><span class=\"lineno\">  898</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00899\" name=\"l00899\"></a><span class=\"lineno\">  899</span> </div>\n-<div class=\"line\"><a id=\"l00900\" name=\"l00900\"></a><span class=\"lineno\">  900</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01313.html#abbbc45452da270eafbeb163a0e78df03\">EvalPatches</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00901\" name=\"l00901\"></a><span class=\"lineno\">  901</span>                           dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00902\" name=\"l00902\"></a><span class=\"lineno\">  902</span>                           duBuffer-&gt;BindCpuBuffer(),  duDesc,</div>\n-<div class=\"line\"><a id=\"l00903\" name=\"l00903\"></a><span class=\"lineno\">  903</span>                           dvBuffer-&gt;BindCpuBuffer(),  dvDesc,</div>\n-<div class=\"line\"><a id=\"l00904\" name=\"l00904\"></a><span class=\"lineno\">  904</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00905\" name=\"l00905\"></a><span class=\"lineno\">  905</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a>*)patchCoords-&gt;BindCpuBuffer(),</div>\n-<div class=\"line\"><a id=\"l00906\" name=\"l00906\"></a><span class=\"lineno\">  906</span>                           patchTable-&gt;GetVaryingPatchArrayBuffer(),</div>\n-<div class=\"line\"><a id=\"l00907\" name=\"l00907\"></a><span class=\"lineno\">  907</span>                           patchTable-&gt;GetVaryingPatchIndexBuffer(),</div>\n-<div class=\"line\"><a id=\"l00908\" name=\"l00908\"></a><span class=\"lineno\">  908</span>                           patchTable-&gt;GetPatchParamBuffer());</div>\n-<div class=\"line\"><a id=\"l00909\" name=\"l00909\"></a><span class=\"lineno\">  909</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00910\" name=\"l00910\"></a><span class=\"lineno\">  910</span> </div>\n-<div class=\"line\"><a id=\"l00969\" name=\"l00969\"></a><span class=\"lineno\">  969</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l00970\" name=\"l00970\"></a><span class=\"lineno\">  970</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00971\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00971\" name=\"l00971\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01313.html#a5e2b53fce1097e9ec639828256aa44f1\">  971</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01313.html#a5e2b53fce1097e9ec639828256aa44f1\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l00972\" name=\"l00972\"></a><span class=\"lineno\">  972</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00973\" name=\"l00973\"></a><span class=\"lineno\">  973</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00974\" name=\"l00974\"></a><span class=\"lineno\">  974</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00975\" name=\"l00975\"></a><span class=\"lineno\">  975</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00976\" name=\"l00976\"></a><span class=\"lineno\">  976</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l00977\" name=\"l00977\"></a><span class=\"lineno\">  977</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l00978\" name=\"l00978\"></a><span class=\"lineno\">  978</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00979\" name=\"l00979\"></a><span class=\"lineno\">  979</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00980\" name=\"l00980\"></a><span class=\"lineno\">  980</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l00981\" name=\"l00981\"></a><span class=\"lineno\">  981</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l00982\" name=\"l00982\"></a><span class=\"lineno\">  982</span>        <a class=\"code hl_class\" href=\"a01313.html\">OmpEvaluator</a> <span class=\"keyword\">const</span> *instance = NULL,</div>\n-<div class=\"line\"><a id=\"l00983\" name=\"l00983\"></a><span class=\"lineno\">  983</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l00984\" name=\"l00984\"></a><span class=\"lineno\">  984</span> </div>\n-<div class=\"line\"><a id=\"l00985\" name=\"l00985\"></a><span class=\"lineno\">  985</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00986\" name=\"l00986\"></a><span class=\"lineno\">  986</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00987\" name=\"l00987\"></a><span class=\"lineno\">  987</span> </div>\n-<div class=\"line\"><a id=\"l00988\" name=\"l00988\"></a><span class=\"lineno\">  988</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01313.html#abbbc45452da270eafbeb163a0e78df03\">EvalPatches</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00989\" name=\"l00989\"></a><span class=\"lineno\">  989</span>                           dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00990\" name=\"l00990\"></a><span class=\"lineno\">  990</span>                           duBuffer-&gt;BindCpuBuffer(),  duDesc,</div>\n-<div class=\"line\"><a id=\"l00991\" name=\"l00991\"></a><span class=\"lineno\">  991</span>                           dvBuffer-&gt;BindCpuBuffer(),  dvDesc,</div>\n-<div class=\"line\"><a id=\"l00992\" name=\"l00992\"></a><span class=\"lineno\">  992</span>                           duuBuffer-&gt;BindCpuBuffer(), duuDesc,</div>\n-<div class=\"line\"><a id=\"l00993\" name=\"l00993\"></a><span class=\"lineno\">  993</span>                           duvBuffer-&gt;BindCpuBuffer(), duvDesc,</div>\n-<div class=\"line\"><a id=\"l00994\" name=\"l00994\"></a><span class=\"lineno\">  994</span>                           dvvBuffer-&gt;BindCpuBuffer(), dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00995\" name=\"l00995\"></a><span class=\"lineno\">  995</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00996\" name=\"l00996\"></a><span class=\"lineno\">  996</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a>*)patchCoords-&gt;BindCpuBuffer(),</div>\n-<div class=\"line\"><a id=\"l00997\" name=\"l00997\"></a><span class=\"lineno\">  997</span>                           patchTable-&gt;GetVaryingPatchArrayBuffer(),</div>\n-<div class=\"line\"><a id=\"l00998\" name=\"l00998\"></a><span class=\"lineno\">  998</span>                           patchTable-&gt;GetVaryingPatchIndexBuffer(),</div>\n-<div class=\"line\"><a id=\"l00999\" name=\"l00999\"></a><span class=\"lineno\">  999</span>                           patchTable-&gt;GetPatchParamBuffer());</div>\n-<div class=\"line\"><a id=\"l01000\" name=\"l01000\"></a><span class=\"lineno\"> 1000</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01001\" name=\"l01001\"></a><span class=\"lineno\"> 1001</span> </div>\n-<div class=\"line\"><a id=\"l01032\" name=\"l01032\"></a><span class=\"lineno\"> 1032</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01033\" name=\"l01033\"></a><span class=\"lineno\"> 1033</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01034\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01034\" name=\"l01034\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01313.html#a0fa8e0e28a0ceff063bd07e098abd645\"> 1034</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01313.html#a0fa8e0e28a0ceff063bd07e098abd645\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01035\" name=\"l01035\"></a><span class=\"lineno\"> 1035</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01036\" name=\"l01036\"></a><span class=\"lineno\"> 1036</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01037\" name=\"l01037\"></a><span class=\"lineno\"> 1037</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01038\" name=\"l01038\"></a><span class=\"lineno\"> 1038</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01039\" name=\"l01039\"></a><span class=\"lineno\"> 1039</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l01040\" name=\"l01040\"></a><span class=\"lineno\"> 1040</span>        <span class=\"keywordtype\">int</span> fvarChannel,</div>\n-<div class=\"line\"><a id=\"l01041\" name=\"l01041\"></a><span class=\"lineno\"> 1041</span>        <a class=\"code hl_class\" href=\"a01313.html\">OmpEvaluator</a> <span class=\"keyword\">const</span> *instance = NULL,</div>\n-<div class=\"line\"><a id=\"l01042\" name=\"l01042\"></a><span class=\"lineno\"> 1042</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l01043\" name=\"l01043\"></a><span class=\"lineno\"> 1043</span> </div>\n-<div class=\"line\"><a id=\"l01044\" name=\"l01044\"></a><span class=\"lineno\"> 1044</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l01045\" name=\"l01045\"></a><span class=\"lineno\"> 1045</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l01046\" name=\"l01046\"></a><span class=\"lineno\"> 1046</span> </div>\n-<div class=\"line\"><a id=\"l01047\" name=\"l01047\"></a><span class=\"lineno\"> 1047</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01313.html#abbbc45452da270eafbeb163a0e78df03\">EvalPatches</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01048\" name=\"l01048\"></a><span class=\"lineno\"> 1048</span>                           dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l01049\" name=\"l01049\"></a><span class=\"lineno\"> 1049</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01050\" name=\"l01050\"></a><span class=\"lineno\"> 1050</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a>*)patchCoords-&gt;BindCpuBuffer(),</div>\n-<div class=\"line\"><a id=\"l01051\" name=\"l01051\"></a><span class=\"lineno\"> 1051</span>                           patchTable-&gt;GetFVarPatchArrayBuffer(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l01052\" name=\"l01052\"></a><span class=\"lineno\"> 1052</span>                           patchTable-&gt;GetFVarPatchIndexBuffer(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l01053\" name=\"l01053\"></a><span class=\"lineno\"> 1053</span>                           patchTable-&gt;GetFVarPatchParamBuffer(fvarChannel));</div>\n-<div class=\"line\"><a id=\"l01054\" name=\"l01054\"></a><span class=\"lineno\"> 1054</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01055\" name=\"l01055\"></a><span class=\"lineno\"> 1055</span> </div>\n-<div class=\"line\"><a id=\"l01098\" name=\"l01098\"></a><span class=\"lineno\"> 1098</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01099\" name=\"l01099\"></a><span class=\"lineno\"> 1099</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01100\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01100\" name=\"l01100\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01313.html#a708ed2ca5a7497a5679cd660546ec4da\"> 1100</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01313.html#a708ed2ca5a7497a5679cd660546ec4da\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01101\" name=\"l01101\"></a><span class=\"lineno\"> 1101</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01102\" name=\"l01102\"></a><span class=\"lineno\"> 1102</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01103\" name=\"l01103\"></a><span class=\"lineno\"> 1103</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l01104\" name=\"l01104\"></a><span class=\"lineno\"> 1104</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l01105\" name=\"l01105\"></a><span class=\"lineno\"> 1105</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01106\" name=\"l01106\"></a><span class=\"lineno\"> 1106</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01107\" name=\"l01107\"></a><span class=\"lineno\"> 1107</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l01108\" name=\"l01108\"></a><span class=\"lineno\"> 1108</span>        <span class=\"keywordtype\">int</span> fvarChannel,</div>\n-<div class=\"line\"><a id=\"l01109\" name=\"l01109\"></a><span class=\"lineno\"> 1109</span>        <a class=\"code hl_class\" href=\"a01313.html\">OmpEvaluator</a> <span class=\"keyword\">const</span> *instance = NULL,</div>\n-<div class=\"line\"><a id=\"l01110\" name=\"l01110\"></a><span class=\"lineno\"> 1110</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l01111\" name=\"l01111\"></a><span class=\"lineno\"> 1111</span> </div>\n-<div class=\"line\"><a id=\"l01112\" name=\"l01112\"></a><span class=\"lineno\"> 1112</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l01113\" name=\"l01113\"></a><span class=\"lineno\"> 1113</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l01114\" name=\"l01114\"></a><span class=\"lineno\"> 1114</span> </div>\n-<div class=\"line\"><a id=\"l01115\" name=\"l01115\"></a><span class=\"lineno\"> 1115</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01313.html#abbbc45452da270eafbeb163a0e78df03\">EvalPatches</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01116\" name=\"l01116\"></a><span class=\"lineno\"> 1116</span>                           dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l01117\" name=\"l01117\"></a><span class=\"lineno\"> 1117</span>                           duBuffer-&gt;BindCpuBuffer(),  duDesc,</div>\n-<div class=\"line\"><a id=\"l01118\" name=\"l01118\"></a><span class=\"lineno\"> 1118</span>                           dvBuffer-&gt;BindCpuBuffer(),  dvDesc,</div>\n-<div class=\"line\"><a id=\"l01119\" name=\"l01119\"></a><span class=\"lineno\"> 1119</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01120\" name=\"l01120\"></a><span class=\"lineno\"> 1120</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a>*)patchCoords-&gt;BindCpuBuffer(),</div>\n-<div class=\"line\"><a id=\"l01121\" name=\"l01121\"></a><span class=\"lineno\"> 1121</span>                           patchTable-&gt;GetFVarPatchArrayBuffer(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l01122\" name=\"l01122\"></a><span class=\"lineno\"> 1122</span>                           patchTable-&gt;GetFVarPatchIndexBuffer(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l01123\" name=\"l01123\"></a><span class=\"lineno\"> 1123</span>                           patchTable-&gt;GetFVarPatchParamBuffer(fvarChannel));</div>\n-<div class=\"line\"><a id=\"l01124\" name=\"l01124\"></a><span class=\"lineno\"> 1124</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01125\" name=\"l01125\"></a><span class=\"lineno\"> 1125</span> </div>\n-<div class=\"line\"><a id=\"l01186\" name=\"l01186\"></a><span class=\"lineno\"> 1186</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01187\" name=\"l01187\"></a><span class=\"lineno\"> 1187</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01188\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01188\" name=\"l01188\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01313.html#ae4eb5ea878fcae370e0e38dbad433a6a\"> 1188</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01313.html#ae4eb5ea878fcae370e0e38dbad433a6a\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01189\" name=\"l01189\"></a><span class=\"lineno\"> 1189</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01190\" name=\"l01190\"></a><span class=\"lineno\"> 1190</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01191\" name=\"l01191\"></a><span class=\"lineno\"> 1191</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l01192\" name=\"l01192\"></a><span class=\"lineno\"> 1192</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l01193\" name=\"l01193\"></a><span class=\"lineno\"> 1193</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l01194\" name=\"l01194\"></a><span class=\"lineno\"> 1194</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l01195\" name=\"l01195\"></a><span class=\"lineno\"> 1195</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l01196\" name=\"l01196\"></a><span class=\"lineno\"> 1196</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01197\" name=\"l01197\"></a><span class=\"lineno\"> 1197</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01198\" name=\"l01198\"></a><span class=\"lineno\"> 1198</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l01199\" name=\"l01199\"></a><span class=\"lineno\"> 1199</span>        <span class=\"keywordtype\">int</span> fvarChannel,</div>\n-<div class=\"line\"><a id=\"l01200\" name=\"l01200\"></a><span class=\"lineno\"> 1200</span>        <a class=\"code hl_class\" href=\"a01313.html\">OmpEvaluator</a> <span class=\"keyword\">const</span> *instance = NULL,</div>\n-<div class=\"line\"><a id=\"l01201\" name=\"l01201\"></a><span class=\"lineno\"> 1201</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l01202\" name=\"l01202\"></a><span class=\"lineno\"> 1202</span> </div>\n-<div class=\"line\"><a id=\"l01203\" name=\"l01203\"></a><span class=\"lineno\"> 1203</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l01204\" name=\"l01204\"></a><span class=\"lineno\"> 1204</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l01205\" name=\"l01205\"></a><span class=\"lineno\"> 1205</span> </div>\n-<div class=\"line\"><a id=\"l01206\" name=\"l01206\"></a><span class=\"lineno\"> 1206</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01313.html#abbbc45452da270eafbeb163a0e78df03\">EvalPatches</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01207\" name=\"l01207\"></a><span class=\"lineno\"> 1207</span>                           dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l01208\" name=\"l01208\"></a><span class=\"lineno\"> 1208</span>                           duBuffer-&gt;BindCpuBuffer(),  duDesc,</div>\n-<div class=\"line\"><a id=\"l01209\" name=\"l01209\"></a><span class=\"lineno\"> 1209</span>                           dvBuffer-&gt;BindCpuBuffer(),  dvDesc,</div>\n-<div class=\"line\"><a id=\"l01210\" name=\"l01210\"></a><span class=\"lineno\"> 1210</span>                           duuBuffer-&gt;BindCpuBuffer(), duuDesc,</div>\n-<div class=\"line\"><a id=\"l01211\" name=\"l01211\"></a><span class=\"lineno\"> 1211</span>                           duvBuffer-&gt;BindCpuBuffer(), duvDesc,</div>\n-<div class=\"line\"><a id=\"l01212\" name=\"l01212\"></a><span class=\"lineno\"> 1212</span>                           dvvBuffer-&gt;BindCpuBuffer(), dvvDesc,</div>\n-<div class=\"line\"><a id=\"l01213\" name=\"l01213\"></a><span class=\"lineno\"> 1213</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01214\" name=\"l01214\"></a><span class=\"lineno\"> 1214</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a>*)patchCoords-&gt;BindCpuBuffer(),</div>\n-<div class=\"line\"><a id=\"l01215\" name=\"l01215\"></a><span class=\"lineno\"> 1215</span>                           patchTable-&gt;GetFVarPatchArrayBuffer(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l01216\" name=\"l01216\"></a><span class=\"lineno\"> 1216</span>                           patchTable-&gt;GetFVarPatchIndexBuffer(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l01217\" name=\"l01217\"></a><span class=\"lineno\"> 1217</span>                           patchTable-&gt;GetFVarPatchParamBuffer(fvarChannel));</div>\n-<div class=\"line\"><a id=\"l01218\" name=\"l01218\"></a><span class=\"lineno\"> 1218</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01219\" name=\"l01219\"></a><span class=\"lineno\"> 1219</span> </div>\n-<div class=\"line\"><a id=\"l01225\" name=\"l01225\"></a><span class=\"lineno\"> 1225</span> </div>\n-<div class=\"line\"><a id=\"l01226\" name=\"l01226\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01313.html#a9689407af718de4263562bb3a760c1dd\"> 1226</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01313.html#a9689407af718de4263562bb3a760c1dd\">Synchronize</a>(<span class=\"keywordtype\">void</span> *deviceContext = NULL);</div>\n-<div class=\"line\"><a id=\"l01227\" name=\"l01227\"></a><span class=\"lineno\"> 1227</span> </div>\n-<div class=\"line\"><a id=\"l01229\" name=\"l01229\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01313.html#ad58f2120e84fdd3f92d7cd861e97822d\"> 1229</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01313.html#ad58f2120e84fdd3f92d7cd861e97822d\">SetNumThreads</a>(<span class=\"keywordtype\">int</span> numThreads);</div>\n-<div class=\"line\"><a id=\"l01230\" name=\"l01230\"></a><span class=\"lineno\"> 1230</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l01231\" name=\"l01231\"></a><span class=\"lineno\"> 1231</span> </div>\n-<div class=\"line\"><a id=\"l01232\" name=\"l01232\"></a><span class=\"lineno\"> 1232</span> </div>\n-<div class=\"line\"><a id=\"l01233\" name=\"l01233\"></a><span class=\"lineno\"> 1233</span>}  <span class=\"comment\">// end namespace Osd</span></div>\n-<div class=\"line\"><a id=\"l01234\" name=\"l01234\"></a><span class=\"lineno\"> 1234</span> </div>\n-<div class=\"line\"><a id=\"l01235\" name=\"l01235\"></a><span class=\"lineno\"> 1235</span>}  <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l01236\" name=\"l01236\"></a><span class=\"lineno\"> 1236</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l01237\" name=\"l01237\"></a><span class=\"lineno\"> 1237</span> </div>\n-<div class=\"line\"><a id=\"l01238\" name=\"l01238\"></a><span class=\"lineno\"> 1238</span>}  <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l01239\" name=\"l01239\"></a><span class=\"lineno\"> 1239</span> </div>\n-<div class=\"line\"><a id=\"l01240\" name=\"l01240\"></a><span class=\"lineno\"> 1240</span> </div>\n-<div class=\"line\"><a id=\"l01241\" name=\"l01241\"></a><span class=\"lineno\"> 1241</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_OMP_EVALUATOR_H</span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa01141_html\"><div class=\"ttname\"><a href=\"a01141.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::BufferDescriptor</a></div><div class=\"ttdoc\">BufferDescriptor is a struct which describes buffer elements in interleaved data buffers....</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00866_source.html#l00061\">bufferDescriptor.h:61</a></div></div>\n-<div class=\"ttc\" id=\"aa01313_html\"><div class=\"ttname\"><a href=\"a01313.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::OmpEvaluator</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l00039\">ompEvaluator.h:39</a></div></div>\n-<div class=\"ttc\" id=\"aa01313_html_a0fa8e0e28a0ceff063bd07e098abd645\"><div class=\"ttname\"><a href=\"a01313.html#a0fa8e0e28a0ceff063bd07e098abd645\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::OmpEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel, OmpEvaluator const *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l01034\">ompEvaluator.h:1034</a></div></div>\n-<div class=\"ttc\" id=\"aa01313_html_a4345e3659b7fb82f23dd51c688179ce3\"><div class=\"ttname\"><a href=\"a01313.html#a4345e3659b7fb82f23dd51c688179ce3\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::OmpEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(const float *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, const int *sizes, const int *offsets, const int *indices, const float *weights, int start, int end)</div><div class=\"ttdoc\">Static eval stencils function which takes raw CPU pointers for input and output.</div></div>\n-<div class=\"ttc\" id=\"aa01313_html_a5e2b53fce1097e9ec639828256aa44f1\"><div class=\"ttname\"><a href=\"a01313.html#a5e2b53fce1097e9ec639828256aa44f1\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::OmpEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, OmpEvaluator const *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l00971\">ompEvaluator.h:971</a></div></div>\n-<div class=\"ttc\" id=\"aa01313_html_a6b577cee117522a91402eb4237e5e913\"><div class=\"ttname\"><a href=\"a01313.html#a6b577cee117522a91402eb4237e5e913\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::OmpEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, STENCIL_TABLE const *stencilTable, const OmpEvaluator *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic static eval stencils function with derivatives. This function has a same signature as other d...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l00168\">ompEvaluator.h:168</a></div></div>\n-<div class=\"ttc\" id=\"aa01313_html_a6daed6135a40cda2daf6c6ea2047b330\"><div class=\"ttname\"><a href=\"a01313.html#a6daed6135a40cda2daf6c6ea2047b330\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::OmpEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(const float *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, float *du, BufferDescriptor const &amp;duDesc, float *dv, BufferDescriptor const &amp;dvDesc, const int *sizes, const int *offsets, const int *indices, const float *weights, const float *duWeights, const float *dvWeights, int start, int end)</div><div class=\"ttdoc\">Static eval stencils function with derivatives, which takes raw CPU pointers for input and output.</div></div>\n-<div class=\"ttc\" id=\"aa01313_html_a6e57edf33d097abc92fbafe7e4ae9224\"><div class=\"ttname\"><a href=\"a01313.html#a6e57edf33d097abc92fbafe7e4ae9224\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::OmpEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, OmpEvaluator const *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l00823\">ompEvaluator.h:823</a></div></div>\n-<div class=\"ttc\" id=\"aa01313_html_a708ed2ca5a7497a5679cd660546ec4da\"><div class=\"ttname\"><a href=\"a01313.html#a708ed2ca5a7497a5679cd660546ec4da\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::OmpEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel, OmpEvaluator const *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l01100\">ompEvaluator.h:1100</a></div></div>\n-<div class=\"ttc\" id=\"aa01313_html_a76707de0a89ab94f15ad4b2c398a2c23\"><div class=\"ttname\"><a href=\"a01313.html#a76707de0a89ab94f15ad4b2c398a2c23\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::OmpEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(const float *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, float *du, BufferDescriptor const &amp;duDesc, float *dv, BufferDescriptor const &amp;dvDesc, float *duu, BufferDescriptor const &amp;duuDesc, float *duv, BufferDescriptor const &amp;duvDesc, float *dvv, BufferDescriptor const &amp;dvvDesc, const int *sizes, const int *offsets, const int *indices, const float *weights, const float *duWeights, const float *dvWeights, const float *duuWeights, const float *duvWeights, const float *dvvWeights, int start, int end)</div><div class=\"ttdoc\">Static eval stencils function with derivatives, which takes raw CPU pointers for input and output.</div></div>\n-<div class=\"ttc\" id=\"aa01313_html_a76ac331e29d26f25d0d807b74c1a838b\"><div class=\"ttname\"><a href=\"a01313.html#a76ac331e29d26f25d0d807b74c1a838b\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::OmpEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, STENCIL_TABLE const *stencilTable, const OmpEvaluator *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic static eval stencils function. This function has a same signature as other device kernels hav...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l00072\">ompEvaluator.h:72</a></div></div>\n-<div class=\"ttc\" id=\"aa01313_html_a7b556148d6ef2e04fbe99677e3a87e91\"><div class=\"ttname\"><a href=\"a01313.html#a7b556148d6ef2e04fbe99677e3a87e91\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::OmpEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(const float *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, float *du, BufferDescriptor const &amp;duDesc, float *dv, BufferDescriptor const &amp;dvDesc, float *duu, BufferDescriptor const &amp;duuDesc, float *duv, BufferDescriptor const &amp;duvDesc, float *dvv, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PatchCoord const *patchCoords, PatchArray const *patchArrays, const int *patchIndexBuffer, PatchParam const *patchParamBuffer)</div><div class=\"ttdoc\">Static limit eval function. It takes an array of PatchCoord and evaluate limit values on given PatchT...</div></div>\n-<div class=\"ttc\" id=\"aa01313_html_a8ec09b3a6962ce219f54fb5edec53640\"><div class=\"ttname\"><a href=\"a01313.html#a8ec09b3a6962ce219f54fb5edec53640\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::OmpEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, OmpEvaluator const *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function with derivatives. This function has a same signature as other device kern...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l00517\">ompEvaluator.h:517</a></div></div>\n-<div class=\"ttc\" id=\"aa01313_html_a95dcfa63c8f686a8a30b46dcc563d5fe\"><div class=\"ttname\"><a href=\"a01313.html#a95dcfa63c8f686a8a30b46dcc563d5fe\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::OmpEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, OmpEvaluator const *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l00886\">ompEvaluator.h:886</a></div></div>\n-<div class=\"ttc\" id=\"aa01313_html_a9644130ae2673ec46111cf6b466b3e90\"><div class=\"ttname\"><a href=\"a01313.html#a9644130ae2673ec46111cf6b466b3e90\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::OmpEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, OmpEvaluator const *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function with derivatives. This function has a same signature as other device kern...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l00607\">ompEvaluator.h:607</a></div></div>\n-<div class=\"ttc\" id=\"aa01313_html_a9689407af718de4263562bb3a760c1dd\"><div class=\"ttname\"><a href=\"a01313.html#a9689407af718de4263562bb3a760c1dd\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::OmpEvaluator::Synchronize</a></div><div class=\"ttdeci\">static void Synchronize(void *deviceContext=NULL)</div></div>\n-<div class=\"ttc\" id=\"aa01313_html_a9b393ddc414d176a2b4438ab1e3c1682\"><div class=\"ttname\"><a href=\"a01313.html#a9b393ddc414d176a2b4438ab1e3c1682\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::OmpEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, STENCIL_TABLE const *stencilTable, const OmpEvaluator *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic static eval stencils function with derivatives. This function has a same signature as other d...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l00303\">ompEvaluator.h:303</a></div></div>\n-<div class=\"ttc\" id=\"aa01313_html_abbbc45452da270eafbeb163a0e78df03\"><div class=\"ttname\"><a href=\"a01313.html#abbbc45452da270eafbeb163a0e78df03\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::OmpEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, OmpEvaluator const *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l00454\">ompEvaluator.h:454</a></div></div>\n-<div class=\"ttc\" id=\"aa01313_html_ac1dba254bc287312f8f812113c8e8ad3\"><div class=\"ttname\"><a href=\"a01313.html#ac1dba254bc287312f8f812113c8e8ad3\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::OmpEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(const float *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, float *du, BufferDescriptor const &amp;duDesc, float *dv, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PatchCoord const *patchCoords, PatchArray const *patchArrays, const int *patchIndexBuffer, PatchParam const *patchParamBuffer)</div><div class=\"ttdoc\">Static limit eval function. It takes an array of PatchCoord and evaluate limit values on given PatchT...</div></div>\n-<div class=\"ttc\" id=\"aa01313_html_ad58f2120e84fdd3f92d7cd861e97822d\"><div class=\"ttname\"><a href=\"a01313.html#ad58f2120e84fdd3f92d7cd861e97822d\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::OmpEvaluator::SetNumThreads</a></div><div class=\"ttdeci\">static void SetNumThreads(int numThreads)</div><div class=\"ttdoc\">Deprecated. Client code should initialize OpenMP.</div></div>\n-<div class=\"ttc\" id=\"aa01313_html_ad5b907c22dfcb943e5f25f3c16543535\"><div class=\"ttname\"><a href=\"a01313.html#ad5b907c22dfcb943e5f25f3c16543535\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::OmpEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(const float *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, int numPatchCoords, const PatchCoord *patchCoords, const PatchArray *patchArrays, const int *patchIndexBuffer, const PatchParam *patchParamBuffer)</div><div class=\"ttdoc\">Static limit eval function. It takes an array of PatchCoord and evaluate limit values on given PatchT...</div></div>\n-<div class=\"ttc\" id=\"aa01313_html_ae4eb5ea878fcae370e0e38dbad433a6a\"><div class=\"ttname\"><a href=\"a01313.html#ae4eb5ea878fcae370e0e38dbad433a6a\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::OmpEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel, OmpEvaluator const *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l01188\">ompEvaluator.h:1188</a></div></div>\n-<div class=\"ttc\" id=\"aa01321_html\"><div class=\"ttname\"><a href=\"a01321.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchCoord</a></div><div class=\"ttdoc\">Coordinates set on a patch table.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00042\">types.h:42</a></div></div>\n-<div class=\"ttc\" id=\"aa01325_html\"><div class=\"ttname\"><a href=\"a01325.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchArray</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00066\">types.h:66</a></div></div>\n-<div class=\"ttc\" id=\"aa01329_html\"><div class=\"ttname\"><a href=\"a01329.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchParam</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00127\">types.h:127</a></div></div>\n+<div class=\"foldopen\" id=\"foldopen00055\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535\">   55</a></span>        <span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535\">EndCapType</a> {</div>\n+<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535a39a0bc0d1c407b2b849c2bfaba366b22\">   56</a></span>            <a class=\"code hl_enumvalue\" href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535a39a0bc0d1c407b2b849c2bfaba366b22\">ENDCAP_NONE</a> = 0,        </div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535a90f0e9a2c992889cefdf1db954f9d98f\">   57</a></span>            <a class=\"code hl_enumvalue\" href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535a90f0e9a2c992889cefdf1db954f9d98f\">ENDCAP_BILINEAR_BASIS</a>,  </div>\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535ac3fc1d183b0bdfbc7bf1cce613c4ff04\">   58</a></span>            <a class=\"code hl_enumvalue\" href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535ac3fc1d183b0bdfbc7bf1cce613c4ff04\">ENDCAP_BSPLINE_BASIS</a>,   </div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535a2e89c8e5ac21dbd024ec902de51566b0\">   59</a></span>            <a class=\"code hl_enumvalue\" href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535a2e89c8e5ac21dbd024ec902de51566b0\">ENDCAP_GREGORY_BASIS</a>,   </div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span>            <a class=\"code hl_enumvalue\" href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535a0c0d3d9e480d64f20f1b32d599c88aa5\">ENDCAP_LEGACY_GREGORY</a>   </div>\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535a0c0d3d9e480d64f20f1b32d599c88aa5\">   61</a></span>        };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00063\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#afe7ba5a3a3e0f7b63f27fc527f472528\">   63</a></span>        <a class=\"code hl_function\" href=\"a01021.html#afe7ba5a3a3e0f7b63f27fc527f472528\">Options</a>(<span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> maxIsolation=10) :</div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span>             <a class=\"code hl_variable\" href=\"a01021.html#a8d3c24dcc455474a3a9498c6b6378cc4\">generateAllLevels</a>(false),</div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span>             <a class=\"code hl_variable\" href=\"a01021.html#a9e322b8f2ad57dd369956f27113b7a8a\">includeBaseLevelIndices</a>(true),</div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span>             <a class=\"code hl_variable\" href=\"a01021.html#a7551f187d9f4a70b27faed7597d96e4f\">includeFVarBaseLevelIndices</a>(false),</div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span>             <a class=\"code hl_variable\" href=\"a01021.html#ae0427ab3b81525a0dfa5d2b510a06461\">triangulateQuads</a>(false),</div>\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span>             <a class=\"code hl_variable\" href=\"a01021.html#a5834971432c649e28d5a0186f79a60d5\">useSingleCreasePatch</a>(false),</div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span>             <a class=\"code hl_variable\" href=\"a01021.html#a5eba866952b7be15b065060b1f5a81da\">useInfSharpPatch</a>(false),</div>\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span>             <a class=\"code hl_variable\" href=\"a01021.html#a18b47b281350d10784fd4917be9019f1\">maxIsolationLevel</a>(maxIsolation &amp; 0xf),</div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>             <a class=\"code hl_variable\" href=\"a01021.html#a497f7c6fe6944842dd54758e9ec5a8e2\">endCapType</a>(<a class=\"code hl_enumvalue\" href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535a2e89c8e5ac21dbd024ec902de51566b0\">ENDCAP_GREGORY_BASIS</a>),</div>\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>             <a class=\"code hl_variable\" href=\"a01021.html#a113fa8ce12150940afe0215c702cc89d\">shareEndCapPatchPoints</a>(true),</div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span>             <a class=\"code hl_variable\" href=\"a01021.html#a039b27c797bb2b4be4af66798787081e\">generateVaryingTables</a>(true),</div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span>             <a class=\"code hl_variable\" href=\"a01021.html#a728df1785179cd0768a4971b8c34708a\">generateVaryingLocalPoints</a>(true),</div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span>             <a class=\"code hl_variable\" href=\"a01021.html#a97f60d840c3d2830f0c4680783a334e8\">generateFVarTables</a>(false),</div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span>             <a class=\"code hl_variable\" href=\"a01021.html#a91ce5fe0ce9b9ec6c5afcfb6e1ccaa40\">patchPrecisionDouble</a>(false),</div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span>             <a class=\"code hl_variable\" href=\"a01021.html#a3f663e5c2b7e65976b6521c21ea59130\">fvarPatchPrecisionDouble</a>(false),</div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span>             <a class=\"code hl_variable\" href=\"a01021.html#a2a03b250662eec5d267daf6692e4b341\">generateFVarLegacyLinearPatches</a>(true),</div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>             <a class=\"code hl_variable\" href=\"a01021.html#a0fe3eeef4b5b332c7747a940db43cd8d\">generateLegacySharpCornerPatches</a>(true),</div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span>             <a class=\"code hl_variable\" href=\"a01021.html#ad17511fd9b0cea1b15b6bc31c0fc3e80\">numFVarChannels</a>(-1),</div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>             <a class=\"code hl_variable\" href=\"a01021.html#a4c1ba8119a16ea0682a870ee7a8282a5\">fvarChannelIndices</a>(0)</div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>        { }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span> </div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#a1f59869b65e626aebb332538b92759ec\">   85</a></span>        <a class=\"code hl_enumeration\" href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535\">EndCapType</a> <a class=\"code hl_function\" href=\"a01021.html#a1f59869b65e626aebb332538b92759ec\">GetEndCapType</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (<a class=\"code hl_enumeration\" href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535\">EndCapType</a>)<a class=\"code hl_variable\" href=\"a01021.html#a497f7c6fe6944842dd54758e9ec5a8e2\">endCapType</a>; }</div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span> </div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#a6a9e4615ca58b7206de550f249c5e37c\">   88</a></span>        <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01021.html#a6a9e4615ca58b7206de550f249c5e37c\">SetEndCapType</a>(<a class=\"code hl_enumeration\" href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535\">EndCapType</a> e) { <a class=\"code hl_variable\" href=\"a01021.html#a497f7c6fe6944842dd54758e9ec5a8e2\">endCapType</a> = e &amp; 0x7; }</div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span> </div>\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#a425e9cd3218a02afffaf0289f1a9c6fd\">   91</a></span>        <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01021.html#a425e9cd3218a02afffaf0289f1a9c6fd\">SetMaxIsolationLevel</a>(<span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> level) { <a class=\"code hl_variable\" href=\"a01021.html#a18b47b281350d10784fd4917be9019f1\">maxIsolationLevel</a> = level &amp; 0xf; }</div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span> </div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#a2d5bc9d7d16144b5cdc70381843defa9\">   94</a></span>        <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt; <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01021.html#a2d5bc9d7d16144b5cdc70381843defa9\">SetPatchPrecision</a>();</div>\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span> </div>\n+<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#aa6530a2eb5204da33e7c02f8fcdcbac2\">   97</a></span>        <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt; <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01021.html#aa6530a2eb5204da33e7c02f8fcdcbac2\">SetFVarPatchPrecision</a>();</div>\n+<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00100\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#a14138864bf072e99898a8d1a0c074468\">  100</a></span>        <a class=\"code hl_struct\" href=\"a01129.html\">TopologyRefiner::AdaptiveOptions</a> <a class=\"code hl_function\" href=\"a01021.html#a14138864bf072e99898a8d1a0c074468\">GetRefineAdaptiveOptions</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span>            <a class=\"code hl_struct\" href=\"a01129.html\">TopologyRefiner::AdaptiveOptions</a> adaptiveOptions(<a class=\"code hl_variable\" href=\"a01021.html#a18b47b281350d10784fd4917be9019f1\">maxIsolationLevel</a>);</div>\n+<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span> </div>\n+<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span>            adaptiveOptions.<a class=\"code hl_variable\" href=\"a01129.html#a5eba866952b7be15b065060b1f5a81da\">useInfSharpPatch</a>     = <a class=\"code hl_variable\" href=\"a01021.html#a5eba866952b7be15b065060b1f5a81da\">useInfSharpPatch</a>;</div>\n+<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span>            adaptiveOptions.<a class=\"code hl_variable\" href=\"a01129.html#a5834971432c649e28d5a0186f79a60d5\">useSingleCreasePatch</a> = <a class=\"code hl_variable\" href=\"a01021.html#a5834971432c649e28d5a0186f79a60d5\">useSingleCreasePatch</a>;</div>\n+<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span>            adaptiveOptions.<a class=\"code hl_variable\" href=\"a01129.html#a74c90a5955fcad9c95d4c18346f7c312\">considerFVarChannels</a> = <a class=\"code hl_variable\" href=\"a01021.html#a97f60d840c3d2830f0c4680783a334e8\">generateFVarTables</a> &amp;&amp;</div>\n+<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span>                                                  !<a class=\"code hl_variable\" href=\"a01021.html#a2a03b250662eec5d267daf6692e4b341\">generateFVarLegacyLinearPatches</a>;</div>\n+<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span>            <span class=\"keywordflow\">return</span> adaptiveOptions;</div>\n+<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span>        }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span> </div>\n+<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#a8d3c24dcc455474a3a9498c6b6378cc4\">  110</a></span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"a01021.html#a8d3c24dcc455474a3a9498c6b6378cc4\">generateAllLevels</a>           : 1, </div>\n+<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#a9e322b8f2ad57dd369956f27113b7a8a\">  111</a></span>                     <a class=\"code hl_variable\" href=\"a01021.html#a9e322b8f2ad57dd369956f27113b7a8a\">includeBaseLevelIndices</a>     : 1, </div>\n+<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#a7551f187d9f4a70b27faed7597d96e4f\">  112</a></span>                     <a class=\"code hl_variable\" href=\"a01021.html#a7551f187d9f4a70b27faed7597d96e4f\">includeFVarBaseLevelIndices</a> : 1, </div>\n+<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#ae0427ab3b81525a0dfa5d2b510a06461\">  113</a></span>                     <a class=\"code hl_variable\" href=\"a01021.html#ae0427ab3b81525a0dfa5d2b510a06461\">triangulateQuads</a>            : 1, </div>\n+<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span> </div>\n+<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#a5834971432c649e28d5a0186f79a60d5\">  115</a></span>                     <a class=\"code hl_variable\" href=\"a01021.html#a5834971432c649e28d5a0186f79a60d5\">useSingleCreasePatch</a> : 1, </div>\n+<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#a5eba866952b7be15b065060b1f5a81da\">  116</a></span>                     <a class=\"code hl_variable\" href=\"a01021.html#a5eba866952b7be15b065060b1f5a81da\">useInfSharpPatch</a>     : 1, </div>\n+<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#a18b47b281350d10784fd4917be9019f1\">  117</a></span>                     <a class=\"code hl_variable\" href=\"a01021.html#a18b47b281350d10784fd4917be9019f1\">maxIsolationLevel</a>    : 4, </div>\n+<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\">  118</span> </div>\n+<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span>                     <span class=\"comment\">// end-capping</span></div>\n+<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#a497f7c6fe6944842dd54758e9ec5a8e2\">  120</a></span>                     <a class=\"code hl_variable\" href=\"a01021.html#a497f7c6fe6944842dd54758e9ec5a8e2\">endCapType</a>              : 3, </div>\n+<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#a113fa8ce12150940afe0215c702cc89d\">  121</a></span>                     <a class=\"code hl_variable\" href=\"a01021.html#a113fa8ce12150940afe0215c702cc89d\">shareEndCapPatchPoints</a>  : 1, </div>\n+<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span> </div>\n+<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span>                     <span class=\"comment\">// varying</span></div>\n+<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#a039b27c797bb2b4be4af66798787081e\">  125</a></span>                     <a class=\"code hl_variable\" href=\"a01021.html#a039b27c797bb2b4be4af66798787081e\">generateVaryingTables</a>      : 1, </div>\n+<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#a728df1785179cd0768a4971b8c34708a\">  126</a></span>                     <a class=\"code hl_variable\" href=\"a01021.html#a728df1785179cd0768a4971b8c34708a\">generateVaryingLocalPoints</a> : 1, </div>\n+<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span> </div>\n+<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span>                     <span class=\"comment\">// face-varying</span></div>\n+<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#a97f60d840c3d2830f0c4680783a334e8\">  129</a></span>                     <a class=\"code hl_variable\" href=\"a01021.html#a97f60d840c3d2830f0c4680783a334e8\">generateFVarTables</a>  : 1, </div>\n+<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span> </div>\n+<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\">  131</span>                     <span class=\"comment\">// precision</span></div>\n+<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#a91ce5fe0ce9b9ec6c5afcfb6e1ccaa40\">  132</a></span>                     <a class=\"code hl_variable\" href=\"a01021.html#a91ce5fe0ce9b9ec6c5afcfb6e1ccaa40\">patchPrecisionDouble</a>     : 1, </div>\n+<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#a3f663e5c2b7e65976b6521c21ea59130\">  133</a></span>                     <a class=\"code hl_variable\" href=\"a01021.html#a3f663e5c2b7e65976b6521c21ea59130\">fvarPatchPrecisionDouble</a> : 1, </div>\n+<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\">  134</span> </div>\n+<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\">  135</span>                     <span class=\"comment\">// legacy behaviors (default to true)</span></div>\n+<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#a2a03b250662eec5d267daf6692e4b341\">  136</a></span>                     <a class=\"code hl_variable\" href=\"a01021.html#a2a03b250662eec5d267daf6692e4b341\">generateFVarLegacyLinearPatches</a>  : 1, </div>\n+<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#a0fe3eeef4b5b332c7747a940db43cd8d\">  137</a></span>                     <a class=\"code hl_variable\" href=\"a01021.html#a0fe3eeef4b5b332c7747a940db43cd8d\">generateLegacySharpCornerPatches</a> : 1; </div>\n+<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\">  138</span> </div>\n+<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#ad17511fd9b0cea1b15b6bc31c0fc3e80\">  139</a></span>        <span class=\"keywordtype\">int</span>          <a class=\"code hl_variable\" href=\"a01021.html#ad17511fd9b0cea1b15b6bc31c0fc3e80\">numFVarChannels</a>;          </div>\n+<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#a4c1ba8119a16ea0682a870ee7a8282a5\">  140</a></span>        <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> *  <a class=\"code hl_variable\" href=\"a01021.html#a4c1ba8119a16ea0682a870ee7a8282a5\">fvarChannelIndices</a>;       </div>\n+<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\">  141</span>    };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span> </div>\n+<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01017.html#a6ad8881e91652a8fe4d68d18ac16a435\">  175</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a00993.html\">PatchTable</a> * <a class=\"code hl_function\" href=\"a01017.html#a6ad8881e91652a8fe4d68d18ac16a435\">Create</a>(<a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a> <span class=\"keyword\">const</span> &amp; refiner,</div>\n+<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\">  176</span>                               <a class=\"code hl_struct\" href=\"a01021.html\">Options</a> options = <a class=\"code hl_struct\" href=\"a01021.html\">Options</a>(),</div>\n+<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span>                               <a class=\"code hl_class\" href=\"a01353.html\">ConstIndexArray</a> selectedFaces = <a class=\"code hl_typedef\" href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">ConstIndexArray</a>());</div>\n+<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\">  178</span> </div>\n+<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\">  179</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\">  180</span>    <span class=\"comment\">//  PatchFaceTag</span></div>\n+<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\">  181</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\">  182</span>    <span class=\"comment\">//  This simple struct was previously used within the factory to take inventory of</span></div>\n+<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\">  183</span>    <span class=\"comment\">//  various kinds of patches to fully allocate buffers prior to populating them.  It</span></div>\n+<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\">  184</span>    <span class=\"comment\">//  was not intended to be exposed as part of the public interface.</span></div>\n+<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\">  185</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\">  186</span>    <span class=\"comment\">//  It is no longer used internally and is being kept here to respect preservation</span></div>\n+<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\">  187</span>    <span class=\"comment\">//  of the public interface, but it will be deprecated at the earliest opportunity.</span></div>\n+<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\">  188</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\">  191</span>    <span class=\"comment\">//</span></div>\n+<div class=\"foldopen\" id=\"foldopen00192\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01025.html\">  192</a></span>    <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01025.html\">PatchFaceTag</a> {</div>\n+<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\">  193</span>    <span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01025.html#a85527f734ee41ab3855c42c0e1257f95\">  194</a></span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span>   <a class=\"code hl_variable\" href=\"a01025.html#a85527f734ee41ab3855c42c0e1257f95\">_hasPatch</a>        : 1;</div>\n+<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01025.html#a0a3cc48a737c60aa048df1c3f41da070\">  195</a></span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span>   <a class=\"code hl_variable\" href=\"a01025.html#a0a3cc48a737c60aa048df1c3f41da070\">_isRegular</a>       : 1;</div>\n+<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01025.html#a29cbdb64d4e0e49551db4b7674a4c38a\">  196</a></span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span>   <a class=\"code hl_variable\" href=\"a01025.html#a29cbdb64d4e0e49551db4b7674a4c38a\">_transitionMask</a>  : 4;</div>\n+<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01025.html#a4130a836c1d7653793698df818db0624\">  197</a></span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span>   <a class=\"code hl_variable\" href=\"a01025.html#a4130a836c1d7653793698df818db0624\">_boundaryMask</a>    : 4;</div>\n+<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01025.html#a0e2fbbb4a1a96f3fbaee3c1273684e0e\">  198</a></span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span>   <a class=\"code hl_variable\" href=\"a01025.html#a0e2fbbb4a1a96f3fbaee3c1273684e0e\">_boundaryIndex</a>   : 2;</div>\n+<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01025.html#ae1df61bc00c50b927351c1e6b044f5a1\">  199</a></span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span>   <a class=\"code hl_variable\" href=\"a01025.html#ae1df61bc00c50b927351c1e6b044f5a1\">_boundaryCount</a>   : 3;</div>\n+<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01025.html#a395c4eda069d129a467d5266a4746673\">  200</a></span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span>   <a class=\"code hl_variable\" href=\"a01025.html#a395c4eda069d129a467d5266a4746673\">_hasBoundaryEdge</a> : 3;</div>\n+<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01025.html#a03fbcf9e0aec39ba35fc19aefbb07e64\">  201</a></span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span>   <a class=\"code hl_variable\" href=\"a01025.html#a03fbcf9e0aec39ba35fc19aefbb07e64\">_isSingleCrease</a>  : 1;</div>\n+<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\">  202</span> </div>\n+<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01025.html#ac8bb3912a3ce86b15842e79d0b421204\">  203</a></span>        <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01025.html#ac8bb3912a3ce86b15842e79d0b421204\">clear</a>();</div>\n+<div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01025.html#ace61bb1240f406368b44e72e58728428\">  204</a></span>        <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01025.html#ace61bb1240f406368b44e72e58728428\">assignBoundaryPropertiesFromEdgeMask</a>(<span class=\"keywordtype\">int</span> boundaryEdgeMask);</div>\n+<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01025.html#a19202138f911782b5652536867d24565\">  205</a></span>        <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01025.html#a19202138f911782b5652536867d24565\">assignBoundaryPropertiesFromVertexMask</a>(<span class=\"keywordtype\">int</span> boundaryVertexMask);</div>\n+<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01025.html#aba817ee7f5b93139589ed6cf97b557cf\">  206</a></span>        <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01025.html#aba817ee7f5b93139589ed6cf97b557cf\">assignTransitionPropertiesFromEdgeMask</a>(<span class=\"keywordtype\">int</span> boundaryVertexMask);</div>\n+<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\">  207</span>    };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01017.html#a37218ea13f75caee4c93cc4e94d26060\">  208</a></span>    <span class=\"keyword\">typedef</span> std::vector&lt;PatchFaceTag&gt; <a class=\"code hl_typedef\" href=\"a01017.html#a37218ea13f75caee4c93cc4e94d26060\">PatchTagVector</a>;</div>\n+<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\">  209</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\">  210</span> </div>\n+<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\">  211</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00212\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00212\" name=\"l00212\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#a99f237b06c2ba7a1de567dbd95ac9948\">  212</a></span><span class=\"keyword\">template</span> &lt;&gt; <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> PatchTableFactory::Options::SetPatchPrecision&lt;float&gt;() {</div>\n+<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\">  213</span>    <a class=\"code hl_variable\" href=\"a01021.html#a91ce5fe0ce9b9ec6c5afcfb6e1ccaa40\">patchPrecisionDouble</a> = <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\">  214</span>}</div>\n+</div>\n+<div class=\"foldopen\" id=\"foldopen00215\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01021.html#aa43aafc4dbfd969eca82920f28cda140\">  215</a></span><span class=\"keyword\">template</span> &lt;&gt; <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> PatchTableFactory::Options::SetFVarPatchPrecision&lt;float&gt;() {</div>\n+<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\">  216</span>    fvarPatchPrecisionDouble = <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\">  217</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\">  218</span> </div>\n+<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\">  219</span><span class=\"keyword\">template</span> &lt;&gt; <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> PatchTableFactory::Options::SetPatchPrecision&lt;double&gt;() {</div>\n+<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\">  220</span>    patchPrecisionDouble = <span class=\"keyword\">true</span>;</div>\n+<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\">  221</span>}</div>\n+<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\">  222</span><span class=\"keyword\">template</span> &lt;&gt; <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> PatchTableFactory::Options::SetFVarPatchPrecision&lt;double&gt;() {</div>\n+<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\">  223</span>    fvarPatchPrecisionDouble = <span class=\"keyword\">true</span>;</div>\n+<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\">  224</span>}</div>\n+<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\">  225</span> </div>\n+<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\">  226</span> </div>\n+<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\">  227</span>} <span class=\"comment\">// end namespace Far</span></div>\n+<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\">  228</span> </div>\n+<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\">  229</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\">  230</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\">  231</span> </div>\n+<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\">  232</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\">  233</span> </div>\n+<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\">  234</span> </div>\n+<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\">  235</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_FAR_PATCH_TABLE_FACTORY_H */</span><span class=\"preprocessor\"></span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa00908_html_a35788aa710e3f7e277e5f0b008d76d61\"><div class=\"ttname\"><a href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">OpenSubdiv::OPENSUBDIV_VERSION::Far::ConstIndexArray</a></div><div class=\"ttdeci\">Vtr::ConstIndexArray ConstIndexArray</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01486_source.html#l00047\">types.h:47</a></div></div>\n+<div class=\"ttc\" id=\"aa00993_html\"><div class=\"ttname\"><a href=\"a00993.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable</a></div><div class=\"ttdoc\">Container for arrays of parametric patches.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00842_source.html#l00055\">patchTable.h:55</a></div></div>\n+<div class=\"ttc\" id=\"aa01017_html\"><div class=\"ttname\"><a href=\"a01017.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory</a></div><div class=\"ttdoc\">Factory for constructing a PatchTable from a TopologyRefiner.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l00040\">patchTableFactory.h:40</a></div></div>\n+<div class=\"ttc\" id=\"aa01017_html_a37218ea13f75caee4c93cc4e94d26060\"><div class=\"ttname\"><a href=\"a01017.html#a37218ea13f75caee4c93cc4e94d26060\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::PatchTagVector</a></div><div class=\"ttdeci\">std::vector&lt; PatchFaceTag &gt; PatchTagVector</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l00208\">patchTableFactory.h:208</a></div></div>\n+<div class=\"ttc\" id=\"aa01017_html_a6ad8881e91652a8fe4d68d18ac16a435\"><div class=\"ttname\"><a href=\"a01017.html#a6ad8881e91652a8fe4d68d18ac16a435\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Create</a></div><div class=\"ttdeci\">static PatchTable * Create(TopologyRefiner const &amp;refiner, Options options=Options(), ConstIndexArray selectedFaces=ConstIndexArray())</div><div class=\"ttdoc\">Instantiates a PatchTable from a client-provided TopologyRefiner.</div></div>\n+<div class=\"ttc\" id=\"aa01021_html\"><div class=\"ttname\"><a href=\"a01021.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options</a></div><div class=\"ttdoc\">Public options for the PatchTable factory.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l00045\">patchTableFactory.h:45</a></div></div>\n+<div class=\"ttc\" id=\"aa01021_html_a039b27c797bb2b4be4af66798787081e\"><div class=\"ttname\"><a href=\"a01021.html#a039b27c797bb2b4be4af66798787081e\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::generateVaryingTables</a></div><div class=\"ttdeci\">unsigned int generateVaryingTables</div><div class=\"ttdoc\">Generate varying patch tables.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l00125\">patchTableFactory.h:125</a></div></div>\n+<div class=\"ttc\" id=\"aa01021_html_a0fe3eeef4b5b332c7747a940db43cd8d\"><div class=\"ttname\"><a href=\"a01021.html#a0fe3eeef4b5b332c7747a940db43cd8d\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::generateLegacySharpCornerPatches</a></div><div class=\"ttdeci\">unsigned int generateLegacySharpCornerPatches</div><div class=\"ttdoc\">Generate sharp regular patches at smooth corners (legacy)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l00137\">patchTableFactory.h:137</a></div></div>\n+<div class=\"ttc\" id=\"aa01021_html_a113fa8ce12150940afe0215c702cc89d\"><div class=\"ttname\"><a href=\"a01021.html#a113fa8ce12150940afe0215c702cc89d\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::shareEndCapPatchPoints</a></div><div class=\"ttdeci\">unsigned int shareEndCapPatchPoints</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l00121\">patchTableFactory.h:122</a></div></div>\n+<div class=\"ttc\" id=\"aa01021_html_a14138864bf072e99898a8d1a0c074468\"><div class=\"ttname\"><a href=\"a01021.html#a14138864bf072e99898a8d1a0c074468\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::GetRefineAdaptiveOptions</a></div><div class=\"ttdeci\">TopologyRefiner::AdaptiveOptions GetRefineAdaptiveOptions() const</div><div class=\"ttdoc\">Determine adaptive refinement options to match assigned patch options.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l00100\">patchTableFactory.h:100</a></div></div>\n+<div class=\"ttc\" id=\"aa01021_html_a18b47b281350d10784fd4917be9019f1\"><div class=\"ttname\"><a href=\"a01021.html#a18b47b281350d10784fd4917be9019f1\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::maxIsolationLevel</a></div><div class=\"ttdeci\">unsigned int maxIsolationLevel</div><div class=\"ttdoc\">Cap adaptive feature isolation to the given level (max. 10)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l00117\">patchTableFactory.h:117</a></div></div>\n+<div class=\"ttc\" id=\"aa01021_html_a1f59869b65e626aebb332538b92759ec\"><div class=\"ttname\"><a href=\"a01021.html#a1f59869b65e626aebb332538b92759ec\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::GetEndCapType</a></div><div class=\"ttdeci\">EndCapType GetEndCapType() const</div><div class=\"ttdoc\">Get endcap basis type.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l00085\">patchTableFactory.h:85</a></div></div>\n+<div class=\"ttc\" id=\"aa01021_html_a2a03b250662eec5d267daf6692e4b341\"><div class=\"ttname\"><a href=\"a01021.html#a2a03b250662eec5d267daf6692e4b341\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::generateFVarLegacyLinearPatches</a></div><div class=\"ttdeci\">unsigned int generateFVarLegacyLinearPatches</div><div class=\"ttdoc\">Generate all linear face-varying patches (legacy)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l00136\">patchTableFactory.h:136</a></div></div>\n+<div class=\"ttc\" id=\"aa01021_html_a2d5bc9d7d16144b5cdc70381843defa9\"><div class=\"ttname\"><a href=\"a01021.html#a2d5bc9d7d16144b5cdc70381843defa9\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::SetPatchPrecision</a></div><div class=\"ttdeci\">void SetPatchPrecision()</div><div class=\"ttdoc\">Set precision of vertex patches.</div></div>\n+<div class=\"ttc\" id=\"aa01021_html_a3f663e5c2b7e65976b6521c21ea59130\"><div class=\"ttname\"><a href=\"a01021.html#a3f663e5c2b7e65976b6521c21ea59130\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::fvarPatchPrecisionDouble</a></div><div class=\"ttdeci\">unsigned int fvarPatchPrecisionDouble</div><div class=\"ttdoc\">Generate double-precision stencils for face-varying patches.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l00133\">patchTableFactory.h:133</a></div></div>\n+<div class=\"ttc\" id=\"aa01021_html_a425e9cd3218a02afffaf0289f1a9c6fd\"><div class=\"ttname\"><a href=\"a01021.html#a425e9cd3218a02afffaf0289f1a9c6fd\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::SetMaxIsolationLevel</a></div><div class=\"ttdeci\">void SetMaxIsolationLevel(unsigned int level)</div><div class=\"ttdoc\">Set maximum isolation level.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l00091\">patchTableFactory.h:91</a></div></div>\n+<div class=\"ttc\" id=\"aa01021_html_a497f7c6fe6944842dd54758e9ec5a8e2\"><div class=\"ttname\"><a href=\"a01021.html#a497f7c6fe6944842dd54758e9ec5a8e2\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::endCapType</a></div><div class=\"ttdeci\">unsigned int endCapType</div><div class=\"ttdoc\">EndCapType.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l00120\">patchTableFactory.h:120</a></div></div>\n+<div class=\"ttc\" id=\"aa01021_html_a4c1ba8119a16ea0682a870ee7a8282a5\"><div class=\"ttname\"><a href=\"a01021.html#a4c1ba8119a16ea0682a870ee7a8282a5\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::fvarChannelIndices</a></div><div class=\"ttdeci\">int const  * fvarChannelIndices</div><div class=\"ttdoc\">List containing the indices of the channels selected for the factory.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l00140\">patchTableFactory.h:140</a></div></div>\n+<div class=\"ttc\" id=\"aa01021_html_a5834971432c649e28d5a0186f79a60d5\"><div class=\"ttname\"><a href=\"a01021.html#a5834971432c649e28d5a0186f79a60d5\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::useSingleCreasePatch</a></div><div class=\"ttdeci\">unsigned int useSingleCreasePatch</div><div class=\"ttdoc\">Use single crease patch.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l00115\">patchTableFactory.h:115</a></div></div>\n+<div class=\"ttc\" id=\"aa01021_html_a5eba866952b7be15b065060b1f5a81da\"><div class=\"ttname\"><a href=\"a01021.html#a5eba866952b7be15b065060b1f5a81da\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::useInfSharpPatch</a></div><div class=\"ttdeci\">unsigned int useInfSharpPatch</div><div class=\"ttdoc\">Use infinitely-sharp patch.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l00116\">patchTableFactory.h:116</a></div></div>\n+<div class=\"ttc\" id=\"aa01021_html_a6a9e4615ca58b7206de550f249c5e37c\"><div class=\"ttname\"><a href=\"a01021.html#a6a9e4615ca58b7206de550f249c5e37c\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::SetEndCapType</a></div><div class=\"ttdeci\">void SetEndCapType(EndCapType e)</div><div class=\"ttdoc\">Set endcap basis type.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l00088\">patchTableFactory.h:88</a></div></div>\n+<div class=\"ttc\" id=\"aa01021_html_a728df1785179cd0768a4971b8c34708a\"><div class=\"ttname\"><a href=\"a01021.html#a728df1785179cd0768a4971b8c34708a\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::generateVaryingLocalPoints</a></div><div class=\"ttdeci\">unsigned int generateVaryingLocalPoints</div><div class=\"ttdoc\">Generate local points with varying patches.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l00126\">patchTableFactory.h:126</a></div></div>\n+<div class=\"ttc\" id=\"aa01021_html_a7551f187d9f4a70b27faed7597d96e4f\"><div class=\"ttname\"><a href=\"a01021.html#a7551f187d9f4a70b27faed7597d96e4f\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::includeFVarBaseLevelIndices</a></div><div class=\"ttdeci\">unsigned int includeFVarBaseLevelIndices</div><div class=\"ttdoc\">Include base level in face-varying patch point indices (Uniform mode only)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l00112\">patchTableFactory.h:112</a></div></div>\n+<div class=\"ttc\" id=\"aa01021_html_a8d3c24dcc455474a3a9498c6b6378cc4\"><div class=\"ttname\"><a href=\"a01021.html#a8d3c24dcc455474a3a9498c6b6378cc4\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::generateAllLevels</a></div><div class=\"ttdeci\">unsigned int generateAllLevels</div><div class=\"ttdoc\">Generate levels from 'firstLevel' to 'maxLevel' (Uniform mode only)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l00110\">patchTableFactory.h:110</a></div></div>\n+<div class=\"ttc\" id=\"aa01021_html_a91ce5fe0ce9b9ec6c5afcfb6e1ccaa40\"><div class=\"ttname\"><a href=\"a01021.html#a91ce5fe0ce9b9ec6c5afcfb6e1ccaa40\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::patchPrecisionDouble</a></div><div class=\"ttdeci\">unsigned int patchPrecisionDouble</div><div class=\"ttdoc\">Generate double-precision stencils for vertex patches.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l00132\">patchTableFactory.h:132</a></div></div>\n+<div class=\"ttc\" id=\"aa01021_html_a97f60d840c3d2830f0c4680783a334e8\"><div class=\"ttname\"><a href=\"a01021.html#a97f60d840c3d2830f0c4680783a334e8\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::generateFVarTables</a></div><div class=\"ttdeci\">unsigned int generateFVarTables</div><div class=\"ttdoc\">Generate face-varying patch tables.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l00129\">patchTableFactory.h:129</a></div></div>\n+<div class=\"ttc\" id=\"aa01021_html_a9e322b8f2ad57dd369956f27113b7a8a\"><div class=\"ttname\"><a href=\"a01021.html#a9e322b8f2ad57dd369956f27113b7a8a\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::includeBaseLevelIndices</a></div><div class=\"ttdeci\">unsigned int includeBaseLevelIndices</div><div class=\"ttdoc\">Include base level in patch point indices (Uniform mode only)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l00111\">patchTableFactory.h:111</a></div></div>\n+<div class=\"ttc\" id=\"aa01021_html_aa6530a2eb5204da33e7c02f8fcdcbac2\"><div class=\"ttname\"><a href=\"a01021.html#aa6530a2eb5204da33e7c02f8fcdcbac2\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::SetFVarPatchPrecision</a></div><div class=\"ttdeci\">void SetFVarPatchPrecision()</div><div class=\"ttdoc\">Set precision of face-varying patches.</div></div>\n+<div class=\"ttc\" id=\"aa01021_html_ad17511fd9b0cea1b15b6bc31c0fc3e80\"><div class=\"ttname\"><a href=\"a01021.html#ad17511fd9b0cea1b15b6bc31c0fc3e80\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::numFVarChannels</a></div><div class=\"ttdeci\">int numFVarChannels</div><div class=\"ttdoc\">Number of channel indices and interpolation modes passed.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l00139\">patchTableFactory.h:139</a></div></div>\n+<div class=\"ttc\" id=\"aa01021_html_ae0427ab3b81525a0dfa5d2b510a06461\"><div class=\"ttname\"><a href=\"a01021.html#ae0427ab3b81525a0dfa5d2b510a06461\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::triangulateQuads</a></div><div class=\"ttdeci\">unsigned int triangulateQuads</div><div class=\"ttdoc\">Triangulate 'QUADS' primitives (Uniform mode only)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l00113\">patchTableFactory.h:113</a></div></div>\n+<div class=\"ttc\" id=\"aa01021_html_aebc767d646011ab7d5bc7d6d49adf535\"><div class=\"ttname\"><a href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::EndCapType</a></div><div class=\"ttdeci\">EndCapType</div><div class=\"ttdoc\">Choice for approximating irregular patches (end-caps)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l00055\">patchTableFactory.h:55</a></div></div>\n+<div class=\"ttc\" id=\"aa01021_html_aebc767d646011ab7d5bc7d6d49adf535a0c0d3d9e480d64f20f1b32d599c88aa5\"><div class=\"ttname\"><a href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535a0c0d3d9e480d64f20f1b32d599c88aa5\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::ENDCAP_LEGACY_GREGORY</a></div><div class=\"ttdeci\">@ ENDCAP_LEGACY_GREGORY</div><div class=\"ttdoc\">legacy option for 2.x style Gregory patches (Catmark only)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l00061\">patchTableFactory.h:60</a></div></div>\n+<div class=\"ttc\" id=\"aa01021_html_aebc767d646011ab7d5bc7d6d49adf535a2e89c8e5ac21dbd024ec902de51566b0\"><div class=\"ttname\"><a href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535a2e89c8e5ac21dbd024ec902de51566b0\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::ENDCAP_GREGORY_BASIS</a></div><div class=\"ttdeci\">@ ENDCAP_GREGORY_BASIS</div><div class=\"ttdoc\">use Gregory patches (highest quality, recommended default)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l00059\">patchTableFactory.h:59</a></div></div>\n+<div class=\"ttc\" id=\"aa01021_html_aebc767d646011ab7d5bc7d6d49adf535a39a0bc0d1c407b2b849c2bfaba366b22\"><div class=\"ttname\"><a href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535a39a0bc0d1c407b2b849c2bfaba366b22\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::ENDCAP_NONE</a></div><div class=\"ttdeci\">@ ENDCAP_NONE</div><div class=\"ttdoc\">unspecified</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l00056\">patchTableFactory.h:56</a></div></div>\n+<div class=\"ttc\" id=\"aa01021_html_aebc767d646011ab7d5bc7d6d49adf535a90f0e9a2c992889cefdf1db954f9d98f\"><div class=\"ttname\"><a href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535a90f0e9a2c992889cefdf1db954f9d98f\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::ENDCAP_BILINEAR_BASIS</a></div><div class=\"ttdeci\">@ ENDCAP_BILINEAR_BASIS</div><div class=\"ttdoc\">use linear patches (simple quads or tris)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l00057\">patchTableFactory.h:57</a></div></div>\n+<div class=\"ttc\" id=\"aa01021_html_aebc767d646011ab7d5bc7d6d49adf535ac3fc1d183b0bdfbc7bf1cce613c4ff04\"><div class=\"ttname\"><a href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535ac3fc1d183b0bdfbc7bf1cce613c4ff04\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::ENDCAP_BSPLINE_BASIS</a></div><div class=\"ttdeci\">@ ENDCAP_BSPLINE_BASIS</div><div class=\"ttdoc\">use BSpline-like patches (same patch type as regular)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l00058\">patchTableFactory.h:58</a></div></div>\n+<div class=\"ttc\" id=\"aa01021_html_afe7ba5a3a3e0f7b63f27fc527f472528\"><div class=\"ttname\"><a href=\"a01021.html#afe7ba5a3a3e0f7b63f27fc527f472528\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::Options</a></div><div class=\"ttdeci\">Options(unsigned int maxIsolation=10)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l00063\">patchTableFactory.h:63</a></div></div>\n+<div class=\"ttc\" id=\"aa01025_html\"><div class=\"ttname\"><a href=\"a01025.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::PatchFaceTag</a></div><div class=\"ttdoc\">Obsolete internal struct not intended for public use \u2013 due to be deprecated.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l00192\">patchTableFactory.h:192</a></div></div>\n+<div class=\"ttc\" id=\"aa01025_html_a03fbcf9e0aec39ba35fc19aefbb07e64\"><div class=\"ttname\"><a href=\"a01025.html#a03fbcf9e0aec39ba35fc19aefbb07e64\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::PatchFaceTag::_isSingleCrease</a></div><div class=\"ttdeci\">unsigned int _isSingleCrease</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l00201\">patchTableFactory.h:201</a></div></div>\n+<div class=\"ttc\" id=\"aa01025_html_a0a3cc48a737c60aa048df1c3f41da070\"><div class=\"ttname\"><a href=\"a01025.html#a0a3cc48a737c60aa048df1c3f41da070\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::PatchFaceTag::_isRegular</a></div><div class=\"ttdeci\">unsigned int _isRegular</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l00195\">patchTableFactory.h:195</a></div></div>\n+<div class=\"ttc\" id=\"aa01025_html_a0e2fbbb4a1a96f3fbaee3c1273684e0e\"><div class=\"ttname\"><a href=\"a01025.html#a0e2fbbb4a1a96f3fbaee3c1273684e0e\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::PatchFaceTag::_boundaryIndex</a></div><div class=\"ttdeci\">unsigned int _boundaryIndex</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l00198\">patchTableFactory.h:198</a></div></div>\n+<div class=\"ttc\" id=\"aa01025_html_a19202138f911782b5652536867d24565\"><div class=\"ttname\"><a href=\"a01025.html#a19202138f911782b5652536867d24565\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::PatchFaceTag::assignBoundaryPropertiesFromVertexMask</a></div><div class=\"ttdeci\">void assignBoundaryPropertiesFromVertexMask(int boundaryVertexMask)</div></div>\n+<div class=\"ttc\" id=\"aa01025_html_a29cbdb64d4e0e49551db4b7674a4c38a\"><div class=\"ttname\"><a href=\"a01025.html#a29cbdb64d4e0e49551db4b7674a4c38a\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::PatchFaceTag::_transitionMask</a></div><div class=\"ttdeci\">unsigned int _transitionMask</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l00196\">patchTableFactory.h:196</a></div></div>\n+<div class=\"ttc\" id=\"aa01025_html_a395c4eda069d129a467d5266a4746673\"><div class=\"ttname\"><a href=\"a01025.html#a395c4eda069d129a467d5266a4746673\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::PatchFaceTag::_hasBoundaryEdge</a></div><div class=\"ttdeci\">unsigned int _hasBoundaryEdge</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l00200\">patchTableFactory.h:200</a></div></div>\n+<div class=\"ttc\" id=\"aa01025_html_a4130a836c1d7653793698df818db0624\"><div class=\"ttname\"><a href=\"a01025.html#a4130a836c1d7653793698df818db0624\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::PatchFaceTag::_boundaryMask</a></div><div class=\"ttdeci\">unsigned int _boundaryMask</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l00197\">patchTableFactory.h:197</a></div></div>\n+<div class=\"ttc\" id=\"aa01025_html_a85527f734ee41ab3855c42c0e1257f95\"><div class=\"ttname\"><a href=\"a01025.html#a85527f734ee41ab3855c42c0e1257f95\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::PatchFaceTag::_hasPatch</a></div><div class=\"ttdeci\">unsigned int _hasPatch</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l00194\">patchTableFactory.h:194</a></div></div>\n+<div class=\"ttc\" id=\"aa01025_html_aba817ee7f5b93139589ed6cf97b557cf\"><div class=\"ttname\"><a href=\"a01025.html#aba817ee7f5b93139589ed6cf97b557cf\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::PatchFaceTag::assignTransitionPropertiesFromEdgeMask</a></div><div class=\"ttdeci\">void assignTransitionPropertiesFromEdgeMask(int boundaryVertexMask)</div></div>\n+<div class=\"ttc\" id=\"aa01025_html_ac8bb3912a3ce86b15842e79d0b421204\"><div class=\"ttname\"><a href=\"a01025.html#ac8bb3912a3ce86b15842e79d0b421204\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::PatchFaceTag::clear</a></div><div class=\"ttdeci\">void clear()</div></div>\n+<div class=\"ttc\" id=\"aa01025_html_ace61bb1240f406368b44e72e58728428\"><div class=\"ttname\"><a href=\"a01025.html#ace61bb1240f406368b44e72e58728428\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::PatchFaceTag::assignBoundaryPropertiesFromEdgeMask</a></div><div class=\"ttdeci\">void assignBoundaryPropertiesFromEdgeMask(int boundaryEdgeMask)</div></div>\n+<div class=\"ttc\" id=\"aa01025_html_ae1df61bc00c50b927351c1e6b044f5a1\"><div class=\"ttname\"><a href=\"a01025.html#ae1df61bc00c50b927351c1e6b044f5a1\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::PatchFaceTag::_boundaryCount</a></div><div class=\"ttdeci\">unsigned int _boundaryCount</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00854_source.html#l00199\">patchTableFactory.h:199</a></div></div>\n+<div class=\"ttc\" id=\"aa01121_html\"><div class=\"ttname\"><a href=\"a01121.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner</a></div><div class=\"ttdoc\">Stores topology data for a specified set of refinement options.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00051\">topologyRefiner.h:51</a></div></div>\n+<div class=\"ttc\" id=\"aa01129_html\"><div class=\"ttname\"><a href=\"a01129.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::AdaptiveOptions</a></div><div class=\"ttdoc\">Adaptive refinement options.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00156\">topologyRefiner.h:156</a></div></div>\n+<div class=\"ttc\" id=\"aa01129_html_a5834971432c649e28d5a0186f79a60d5\"><div class=\"ttname\"><a href=\"a01129.html#a5834971432c649e28d5a0186f79a60d5\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::AdaptiveOptions::useSingleCreasePatch</a></div><div class=\"ttdeci\">unsigned int useSingleCreasePatch</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00176\">topologyRefiner.h:176</a></div></div>\n+<div class=\"ttc\" id=\"aa01129_html_a5eba866952b7be15b065060b1f5a81da\"><div class=\"ttname\"><a href=\"a01129.html#a5eba866952b7be15b065060b1f5a81da\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::AdaptiveOptions::useInfSharpPatch</a></div><div class=\"ttdeci\">unsigned int useInfSharpPatch</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00178\">topologyRefiner.h:178</a></div></div>\n+<div class=\"ttc\" id=\"aa01129_html_a74c90a5955fcad9c95d4c18346f7c312\"><div class=\"ttname\"><a href=\"a01129.html#a74c90a5955fcad9c95d4c18346f7c312\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::AdaptiveOptions::considerFVarChannels</a></div><div class=\"ttdeci\">unsigned int considerFVarChannels</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00180\">topologyRefiner.h:180</a></div></div>\n+<div class=\"ttc\" id=\"aa01353_html\"><div class=\"ttname\"><a href=\"a01353.html\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00797_source.html#l00053\">array.h:53</a></div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00854.html\">ompEvaluator.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7f420b72a822828cfa8b0561c695a5cc.html\">far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00854.html\">patchTableFactory.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "encoding", "source2": "encoding", "unified_diff": "@@ -1 +1 @@\n-us-ascii\n+utf-8\n"}, {"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-ompEvaluator.h\n+patchTableFactory.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2015 Pixar\n+2// Copyright 2013 Pixar\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -24,656 +24,409 @@\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n 24\n-25#ifndef OPENSUBDIV3_OSD_OMP_EVALUATOR_H\n-26#define OPENSUBDIV3_OSD_OMP_EVALUATOR_H\n+25#ifndef OPENSUBDIV3_FAR_PATCH_TABLE_FACTORY_H\n+26#define OPENSUBDIV3_FAR_PATCH_TABLE_FACTORY_H\n 27\n 28#include \"../version.h\"\n-29#include \"../osd/bufferDescriptor.h\"\n-30#include \"../osd/types.h\"\n-31\n-32#include <cstddef>\n-33\n-34namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-35namespace OPENSUBDIV_VERSION {\n-36\n-37namespace Osd {\n-38\n-_\b3_\b9class _\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br {\n-40public:\n+29\n+30#include \"../far/topologyRefiner.h\"\n+31#include \"../far/patchTable.h\"\n+32\n+33namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+34namespace OPENSUBDIV_VERSION {\n+35\n+36namespace Far {\n+37\n+_\b4_\b0class _\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by {\n+41public:\n+42\n+_\b4_\b5 struct _\bO_\bp_\bt_\bi_\bo_\bn_\bs {\n 46\n-71 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n-_\b7_\b2 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n-73 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-74 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-75 STENCIL_TABLE const *stencilTable,\n-76 const _\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br *instance = NULL,\n-77 void * deviceContext = NULL) {\n-78\n-79 (void)instance; // unused\n-80 (void)deviceContext; // unused\n-81\n-82 if (stencilTable->GetNumStencils() == 0)\n-83 return false;\n-84\n-85 return _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n-86 dstBuffer->BindCpuBuffer(), dstDesc,\n-87 &stencilTable->GetSizes()[0],\n-88 &stencilTable->GetOffsets()[0],\n-89 &stencilTable->GetControlIndices()[0],\n-90 &stencilTable->GetWeights()[0],\n-91 /*start = */ 0,\n-92 /*end = */ stencilTable->GetNumStencils());\n-93 }\n-94\n-_\b1_\b2_\b1 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n-122 const float *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-123 float *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-124 const int * sizes,\n-125 const int * offsets,\n-126 const int * indices,\n-127 const float * weights,\n-128 int start, int end);\n-129\n-167 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n-_\b1_\b6_\b8 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n-169 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-170 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-171 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-172 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-173 STENCIL_TABLE const *stencilTable,\n-174 const _\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br *instance = NULL,\n-175 void * deviceContext = NULL) {\n-176\n-177 (void)instance; // unused\n-178 (void)deviceContext; // unused\n-179\n-180 return _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n-181 dstBuffer->BindCpuBuffer(), dstDesc,\n-182 duBuffer->BindCpuBuffer(), duDesc,\n-183 dvBuffer->BindCpuBuffer(), dvDesc,\n-184 &stencilTable->GetSizes()[0],\n-185 &stencilTable->GetOffsets()[0],\n-186 &stencilTable->GetControlIndices()[0],\n-187 &stencilTable->GetWeights()[0],\n-188 &stencilTable->GetDuWeights()[0],\n-189 &stencilTable->GetDvWeights()[0],\n-190 /*start = */ 0,\n-191 /*end = */ stencilTable->GetNumStencils());\n-192 }\n-193\n-_\b2_\b3_\b4 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n-235 const float *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-236 float *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-237 float *du, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-238 float *dv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-239 const int * sizes,\n-240 const int * offsets,\n-241 const int * indices,\n-242 const float * weights,\n-243 const float * duWeights,\n-244 const float * dvWeights,\n-245 int start, int end);\n-246\n-302 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n-_\b3_\b0_\b3 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n-304 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-305 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-306 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-307 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-308 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-309 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-310 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-311 STENCIL_TABLE const *stencilTable,\n-312 const _\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br *instance = NULL,\n-313 void * deviceContext = NULL) {\n-314\n-315 (void)instance; // unused\n-316 (void)deviceContext; // unused\n-317\n-318 return _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n-319 dstBuffer->BindCpuBuffer(), dstDesc,\n-320 duBuffer->BindCpuBuffer(), duDesc,\n-321 dvBuffer->BindCpuBuffer(), dvDesc,\n-322 duuBuffer->BindCpuBuffer(), duuDesc,\n-323 duvBuffer->BindCpuBuffer(), duvDesc,\n-324 dvvBuffer->BindCpuBuffer(), dvvDesc,\n-325 &stencilTable->GetSizes()[0],\n-326 &stencilTable->GetOffsets()[0],\n-327 &stencilTable->GetControlIndices()[0],\n-328 &stencilTable->GetWeights()[0],\n-329 &stencilTable->GetDuWeights()[0],\n-330 &stencilTable->GetDvWeights()[0],\n-331 &stencilTable->GetDuuWeights()[0],\n-332 &stencilTable->GetDuvWeights()[0],\n-333 &stencilTable->GetDvvWeights()[0],\n-334 /*start = */ 0,\n-335 /*end = */ stencilTable->GetNumStencils());\n-336 }\n-337\n-_\b3_\b9_\b9 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n-400 const float *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-401 float *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-402 float *du, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-403 float *dv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-404 float *duu, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-405 float *duv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-406 float *dvv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-407 const int * sizes,\n-408 const int * offsets,\n-409 const int * indices,\n-410 const float * weights,\n-411 const float * duWeights,\n-412 const float * dvWeights,\n-413 const float * duuWeights,\n-414 const float * duvWeights,\n-415 const float * dvvWeights,\n-416 int start, int end);\n-417\n-423\n-452 template <typename SRC_BUFFER, typename DST_BUFFER,\n-453 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b4_\b5_\b4 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n-455 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-456 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-457 int numPatchCoords,\n-458 PATCHCOORD_BUFFER *patchCoords,\n-459 PATCH_TABLE *patchTable,\n-460 _\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance = NULL,\n-461 void * deviceContext = NULL) {\n-462\n-463 (void)instance; // unused\n-464 (void)deviceContext; // unused\n-465\n-466 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n-467 dstBuffer->BindCpuBuffer(), dstDesc,\n-468 numPatchCoords,\n-469 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd*)patchCoords->BindCpuBuffer(),\n-470 patchTable->GetPatchArrayBuffer(),\n-471 patchTable->GetPatchIndexBuffer(),\n-472 patchTable->GetPatchParamBuffer());\n-473 }\n-474\n-515 template <typename SRC_BUFFER, typename DST_BUFFER,\n-516 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b5_\b1_\b7 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n-518 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-519 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-520 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-521 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-522 int numPatchCoords,\n-523 PATCHCOORD_BUFFER *patchCoords,\n-524 PATCH_TABLE *patchTable,\n-525 _\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance = NULL,\n-526 void * deviceContext = NULL) {\n-527\n-528 (void)instance; // unused\n-529 (void)deviceContext; // unused\n-530\n-531 // XXX: PatchCoords is somewhat abusing vertex primvar buffer interop.\n-532 // ideally all buffer classes should have templated by datatype\n-533 // so that downcast isn't needed there.\n-534 // (e.g. Osd::CpuBuffer<PatchCoord> )\n-535 //\n-536 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n-537 dstBuffer->BindCpuBuffer(), dstDesc,\n-538 duBuffer->BindCpuBuffer(), duDesc,\n-539 dvBuffer->BindCpuBuffer(), dvDesc,\n-540 numPatchCoords,\n-541 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd*)patchCoords->BindCpuBuffer(),\n-542 patchTable->GetPatchArrayBuffer(),\n-543 patchTable->GetPatchIndexBuffer(),\n-544 patchTable->GetPatchParamBuffer());\n-545 }\n-546\n-605 template <typename SRC_BUFFER, typename DST_BUFFER,\n-606 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b6_\b0_\b7 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n-608 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-609 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-610 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-611 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-612 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-613 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-614 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-615 int numPatchCoords,\n-616 PATCHCOORD_BUFFER *patchCoords,\n-617 PATCH_TABLE *patchTable,\n-618 _\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance = NULL,\n-619 void * deviceContext = NULL) {\n-620\n-621 (void)instance; // unused\n-622 (void)deviceContext; // unused\n-623\n-624 // XXX: PatchCoords is somewhat abusing vertex primvar buffer interop.\n-625 // ideally all buffer classes should have templated by datatype\n-626 // so that downcast isn't needed there.\n-627 // (e.g. Osd::CpuBuffer<PatchCoord> )\n-628 //\n-629 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n-630 dstBuffer->BindCpuBuffer(), dstDesc,\n-631 duBuffer->BindCpuBuffer(), duDesc,\n-632 dvBuffer->BindCpuBuffer(), dvDesc,\n-633 duuBuffer->BindCpuBuffer(), duuDesc,\n-634 duvBuffer->BindCpuBuffer(), duvDesc,\n-635 dvvBuffer->BindCpuBuffer(), dvvDesc,\n-636 numPatchCoords,\n-637 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd*)patchCoords->BindCpuBuffer(),\n-638 patchTable->GetPatchArrayBuffer(),\n-639 patchTable->GetPatchIndexBuffer(),\n-640 patchTable->GetPatchParamBuffer());\n-641 }\n-642\n-_\b6_\b7_\b0 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n-671 const float *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-672 float *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-673 int numPatchCoords,\n-674 const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd *patchCoords,\n-675 const _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by *patchArrays,\n-676 const int *patchIndexBuffer,\n-677 const _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm *patchParamBuffer);\n-678\n-_\b7_\b1_\b6 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n-717 const float *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-718 float *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-719 float *du, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-720 float *dv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-721 int numPatchCoords,\n-722 _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd const *patchCoords,\n-723 _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by const *patchArrays,\n-724 const int *patchIndexBuffer,\n-725 _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm const *patchParamBuffer);\n-726\n-_\b7_\b7_\b9 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n-780 const float *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-781 float *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-782 float *du, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-783 float *dv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-784 float *duu, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-785 float *duv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-786 float *dvv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-787 int numPatchCoords,\n-788 _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd const *patchCoords,\n-789 _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by const *patchArrays,\n-790 const int *patchIndexBuffer,\n-791 _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm const *patchParamBuffer);\n-792\n-821 template <typename SRC_BUFFER, typename DST_BUFFER,\n-822 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b8_\b2_\b3 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-824 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-825 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-826 int numPatchCoords,\n-827 PATCHCOORD_BUFFER *patchCoords,\n-828 PATCH_TABLE *patchTable,\n-829 _\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance = NULL,\n-830 void * deviceContext = NULL) {\n-831\n-832 (void)instance; // unused\n-833 (void)deviceContext; // unused\n-834\n-835 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n-836 dstBuffer->BindCpuBuffer(), dstDesc,\n-837 numPatchCoords,\n-838 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd*)patchCoords->BindCpuBuffer(),\n-839 patchTable->GetVaryingPatchArrayBuffer(),\n-840 patchTable->GetVaryingPatchIndexBuffer(),\n-841 patchTable->GetPatchParamBuffer());\n-842 }\n-843\n-884 template <typename SRC_BUFFER, typename DST_BUFFER,\n-885 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b8_\b8_\b6 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-887 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-888 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-889 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-890 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-891 int numPatchCoords,\n-892 PATCHCOORD_BUFFER *patchCoords,\n-893 PATCH_TABLE *patchTable,\n-894 _\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance = NULL,\n-895 void * deviceContext = NULL) {\n-896\n-897 (void)instance; // unused\n-898 (void)deviceContext; // unused\n-899\n-900 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n-901 dstBuffer->BindCpuBuffer(), dstDesc,\n-902 duBuffer->BindCpuBuffer(), duDesc,\n-903 dvBuffer->BindCpuBuffer(), dvDesc,\n-904 numPatchCoords,\n-905 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd*)patchCoords->BindCpuBuffer(),\n-906 patchTable->GetVaryingPatchArrayBuffer(),\n-907 patchTable->GetVaryingPatchIndexBuffer(),\n-908 patchTable->GetPatchParamBuffer());\n-909 }\n-910\n-969 template <typename SRC_BUFFER, typename DST_BUFFER,\n-970 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b9_\b7_\b1 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-972 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-973 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-974 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-975 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-976 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-977 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-978 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-979 int numPatchCoords,\n-980 PATCHCOORD_BUFFER *patchCoords,\n-981 PATCH_TABLE *patchTable,\n-982 _\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance = NULL,\n-983 void * deviceContext = NULL) {\n-984\n-985 (void)instance; // unused\n-986 (void)deviceContext; // unused\n-987\n-988 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n-989 dstBuffer->BindCpuBuffer(), dstDesc,\n-990 duBuffer->BindCpuBuffer(), duDesc,\n-991 dvBuffer->BindCpuBuffer(), dvDesc,\n-992 duuBuffer->BindCpuBuffer(), duuDesc,\n-993 duvBuffer->BindCpuBuffer(), duvDesc,\n-994 dvvBuffer->BindCpuBuffer(), dvvDesc,\n-995 numPatchCoords,\n-996 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd*)patchCoords->BindCpuBuffer(),\n-997 patchTable->GetVaryingPatchArrayBuffer(),\n-998 patchTable->GetVaryingPatchIndexBuffer(),\n-999 patchTable->GetPatchParamBuffer());\n-1000 }\n-1001\n-1032 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1033 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b1_\b0_\b3_\b4 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1035 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1036 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1037 int numPatchCoords,\n-1038 PATCHCOORD_BUFFER *patchCoords,\n-1039 PATCH_TABLE *patchTable,\n-1040 int fvarChannel,\n-1041 _\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance = NULL,\n-1042 void * deviceContext = NULL) {\n-1043\n-1044 (void)instance; // unused\n-1045 (void)deviceContext; // unused\n-1046\n-1047 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n-1048 dstBuffer->BindCpuBuffer(), dstDesc,\n-1049 numPatchCoords,\n-1050 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd*)patchCoords->BindCpuBuffer(),\n-1051 patchTable->GetFVarPatchArrayBuffer(fvarChannel),\n-1052 patchTable->GetFVarPatchIndexBuffer(fvarChannel),\n-1053 patchTable->GetFVarPatchParamBuffer(fvarChannel));\n-1054 }\n-1055\n-1098 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1099 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b1_\b1_\b0_\b0 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1101 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1102 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1103 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-1104 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-1105 int numPatchCoords,\n-1106 PATCHCOORD_BUFFER *patchCoords,\n-1107 PATCH_TABLE *patchTable,\n-1108 int fvarChannel,\n-1109 _\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance = NULL,\n-1110 void * deviceContext = NULL) {\n-1111\n-1112 (void)instance; // unused\n-1113 (void)deviceContext; // unused\n-1114\n-1115 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n-1116 dstBuffer->BindCpuBuffer(), dstDesc,\n-1117 duBuffer->BindCpuBuffer(), duDesc,\n-1118 dvBuffer->BindCpuBuffer(), dvDesc,\n-1119 numPatchCoords,\n-1120 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd*)patchCoords->BindCpuBuffer(),\n-1121 patchTable->GetFVarPatchArrayBuffer(fvarChannel),\n-1122 patchTable->GetFVarPatchIndexBuffer(fvarChannel),\n-1123 patchTable->GetFVarPatchParamBuffer(fvarChannel));\n-1124 }\n-1125\n-1186 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1187 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b1_\b1_\b8_\b8 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1189 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1190 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1191 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-1192 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-1193 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-1194 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-1195 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-1196 int numPatchCoords,\n-1197 PATCHCOORD_BUFFER *patchCoords,\n-1198 PATCH_TABLE *patchTable,\n-1199 int fvarChannel,\n-1200 _\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance = NULL,\n-1201 void * deviceContext = NULL) {\n-1202\n-1203 (void)instance; // unused\n-1204 (void)deviceContext; // unused\n-1205\n-1206 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n-1207 dstBuffer->BindCpuBuffer(), dstDesc,\n-1208 duBuffer->BindCpuBuffer(), duDesc,\n-1209 dvBuffer->BindCpuBuffer(), dvDesc,\n-1210 duuBuffer->BindCpuBuffer(), duuDesc,\n-1211 duvBuffer->BindCpuBuffer(), duvDesc,\n-1212 dvvBuffer->BindCpuBuffer(), dvvDesc,\n-1213 numPatchCoords,\n-1214 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd*)patchCoords->BindCpuBuffer(),\n-1215 patchTable->GetFVarPatchArrayBuffer(fvarChannel),\n-1216 patchTable->GetFVarPatchIndexBuffer(fvarChannel),\n-1217 patchTable->GetFVarPatchParamBuffer(fvarChannel));\n-1218 }\n-1219\n-1225\n-_\b1_\b2_\b2_\b6 static void _\bS_\by_\bn_\bc_\bh_\br_\bo_\bn_\bi_\bz_\be(void *deviceContext = NULL);\n-1227\n-_\b1_\b2_\b2_\b9 static void _\bS_\be_\bt_\bN_\bu_\bm_\bT_\bh_\br_\be_\ba_\bd_\bs(int numThreads);\n-1230};\n-1231\n-1232\n-1233} // end namespace Osd\n-1234\n-1235} // end namespace OPENSUBDIV_VERSION\n-1236using namespace OPENSUBDIV_VERSION;\n-1237\n-1238} // end namespace OpenSubdiv\n-1239\n-1240\n-1241#endif // OPENSUBDIV3_OSD_OMP_EVALUATOR_H\n+_\b5_\b5 enum _\bE_\bn_\bd_\bC_\ba_\bp_\bT_\by_\bp_\be {\n+_\b5_\b6 _\bE_\bN_\bD_\bC_\bA_\bP_\b__\bN_\bO_\bN_\bE = 0,\n+_\b5_\b7 _\bE_\bN_\bD_\bC_\bA_\bP_\b__\bB_\bI_\bL_\bI_\bN_\bE_\bA_\bR_\b__\bB_\bA_\bS_\bI_\bS,\n+_\b5_\b8 _\bE_\bN_\bD_\bC_\bA_\bP_\b__\bB_\bS_\bP_\bL_\bI_\bN_\bE_\b__\bB_\bA_\bS_\bI_\bS,\n+_\b5_\b9 _\bE_\bN_\bD_\bC_\bA_\bP_\b__\bG_\bR_\bE_\bG_\bO_\bR_\bY_\b__\bB_\bA_\bS_\bI_\bS,\n+60 _\bE_\bN_\bD_\bC_\bA_\bP_\b__\bL_\bE_\bG_\bA_\bC_\bY_\b__\bG_\bR_\bE_\bG_\bO_\bR_\bY\n+_\b6_\b1 };\n+62\n+_\b6_\b3 _\bO_\bp_\bt_\bi_\bo_\bn_\bs(unsigned int maxIsolation=10) :\n+64 _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bA_\bl_\bl_\bL_\be_\bv_\be_\bl_\bs(false),\n+65 _\bi_\bn_\bc_\bl_\bu_\bd_\be_\bB_\ba_\bs_\be_\bL_\be_\bv_\be_\bl_\bI_\bn_\bd_\bi_\bc_\be_\bs(true),\n+66 _\bi_\bn_\bc_\bl_\bu_\bd_\be_\bF_\bV_\ba_\br_\bB_\ba_\bs_\be_\bL_\be_\bv_\be_\bl_\bI_\bn_\bd_\bi_\bc_\be_\bs(false),\n+67 _\bt_\br_\bi_\ba_\bn_\bg_\bu_\bl_\ba_\bt_\be_\bQ_\bu_\ba_\bd_\bs(false),\n+68 _\bu_\bs_\be_\bS_\bi_\bn_\bg_\bl_\be_\bC_\br_\be_\ba_\bs_\be_\bP_\ba_\bt_\bc_\bh(false),\n+69 _\bu_\bs_\be_\bI_\bn_\bf_\bS_\bh_\ba_\br_\bp_\bP_\ba_\bt_\bc_\bh(false),\n+70 _\bm_\ba_\bx_\bI_\bs_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bL_\be_\bv_\be_\bl(maxIsolation & 0xf),\n+71 _\be_\bn_\bd_\bC_\ba_\bp_\bT_\by_\bp_\be(_\bE_\bN_\bD_\bC_\bA_\bP_\b__\bG_\bR_\bE_\bG_\bO_\bR_\bY_\b__\bB_\bA_\bS_\bI_\bS),\n+72 _\bs_\bh_\ba_\br_\be_\bE_\bn_\bd_\bC_\ba_\bp_\bP_\ba_\bt_\bc_\bh_\bP_\bo_\bi_\bn_\bt_\bs(true),\n+73 _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bT_\ba_\bb_\bl_\be_\bs(true),\n+74 _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bs(true),\n+75 _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bF_\bV_\ba_\br_\bT_\ba_\bb_\bl_\be_\bs(false),\n+76 _\bp_\ba_\bt_\bc_\bh_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\bD_\bo_\bu_\bb_\bl_\be(false),\n+77 _\bf_\bv_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\bD_\bo_\bu_\bb_\bl_\be(false),\n+78 _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bF_\bV_\ba_\br_\bL_\be_\bg_\ba_\bc_\by_\bL_\bi_\bn_\be_\ba_\br_\bP_\ba_\bt_\bc_\bh_\be_\bs(true),\n+79 _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bL_\be_\bg_\ba_\bc_\by_\bS_\bh_\ba_\br_\bp_\bC_\bo_\br_\bn_\be_\br_\bP_\ba_\bt_\bc_\bh_\be_\bs(true),\n+80 _\bn_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs(-1),\n+81 _\bf_\bv_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bI_\bn_\bd_\bi_\bc_\be_\bs(0)\n+82 { }\n+83\n+_\b8_\b5 _\bE_\bn_\bd_\bC_\ba_\bp_\bT_\by_\bp_\be _\bG_\be_\bt_\bE_\bn_\bd_\bC_\ba_\bp_\bT_\by_\bp_\be() const { return (_\bE_\bn_\bd_\bC_\ba_\bp_\bT_\by_\bp_\be)_\be_\bn_\bd_\bC_\ba_\bp_\bT_\by_\bp_\be; }\n+86\n+_\b8_\b8 void _\bS_\be_\bt_\bE_\bn_\bd_\bC_\ba_\bp_\bT_\by_\bp_\be(_\bE_\bn_\bd_\bC_\ba_\bp_\bT_\by_\bp_\be e) { _\be_\bn_\bd_\bC_\ba_\bp_\bT_\by_\bp_\be = e & 0x7; }\n+89\n+_\b9_\b1 void _\bS_\be_\bt_\bM_\ba_\bx_\bI_\bs_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bL_\be_\bv_\be_\bl(unsigned int level) { _\bm_\ba_\bx_\bI_\bs_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bL_\be_\bv_\be_\bl = level &\n+0xf; }\n+92\n+_\b9_\b4 template <typename REAL> void _\bS_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn();\n+95\n+_\b9_\b7 template <typename REAL> void _\bS_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn();\n+98\n+_\b1_\b0_\b0 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs _\bG_\be_\bt_\bR_\be_\bf_\bi_\bn_\be_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs() const {\n+101 _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs adaptiveOptions(_\bm_\ba_\bx_\bI_\bs_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bL_\be_\bv_\be_\bl);\n+102\n+103 adaptiveOptions._\bu_\bs_\be_\bI_\bn_\bf_\bS_\bh_\ba_\br_\bp_\bP_\ba_\bt_\bc_\bh = _\bu_\bs_\be_\bI_\bn_\bf_\bS_\bh_\ba_\br_\bp_\bP_\ba_\bt_\bc_\bh;\n+104 adaptiveOptions._\bu_\bs_\be_\bS_\bi_\bn_\bg_\bl_\be_\bC_\br_\be_\ba_\bs_\be_\bP_\ba_\bt_\bc_\bh = _\bu_\bs_\be_\bS_\bi_\bn_\bg_\bl_\be_\bC_\br_\be_\ba_\bs_\be_\bP_\ba_\bt_\bc_\bh;\n+105 adaptiveOptions._\bc_\bo_\bn_\bs_\bi_\bd_\be_\br_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs = _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bF_\bV_\ba_\br_\bT_\ba_\bb_\bl_\be_\bs &&\n+106 !_\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bF_\bV_\ba_\br_\bL_\be_\bg_\ba_\bc_\by_\bL_\bi_\bn_\be_\ba_\br_\bP_\ba_\bt_\bc_\bh_\be_\bs;\n+107 return adaptiveOptions;\n+108 }\n+109\n+_\b1_\b1_\b0 unsigned int _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bA_\bl_\bl_\bL_\be_\bv_\be_\bl_\bs : 1,\n+_\b1_\b1_\b1 _\bi_\bn_\bc_\bl_\bu_\bd_\be_\bB_\ba_\bs_\be_\bL_\be_\bv_\be_\bl_\bI_\bn_\bd_\bi_\bc_\be_\bs : 1,\n+_\b1_\b1_\b2 _\bi_\bn_\bc_\bl_\bu_\bd_\be_\bF_\bV_\ba_\br_\bB_\ba_\bs_\be_\bL_\be_\bv_\be_\bl_\bI_\bn_\bd_\bi_\bc_\be_\bs : 1,\n+_\b1_\b1_\b3 _\bt_\br_\bi_\ba_\bn_\bg_\bu_\bl_\ba_\bt_\be_\bQ_\bu_\ba_\bd_\bs : 1,\n+114\n+_\b1_\b1_\b5 _\bu_\bs_\be_\bS_\bi_\bn_\bg_\bl_\be_\bC_\br_\be_\ba_\bs_\be_\bP_\ba_\bt_\bc_\bh : 1,\n+_\b1_\b1_\b6 _\bu_\bs_\be_\bI_\bn_\bf_\bS_\bh_\ba_\br_\bp_\bP_\ba_\bt_\bc_\bh : 1,\n+_\b1_\b1_\b7 _\bm_\ba_\bx_\bI_\bs_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bL_\be_\bv_\be_\bl : 4,\n+118\n+119 // end-capping\n+_\b1_\b2_\b0 _\be_\bn_\bd_\bC_\ba_\bp_\bT_\by_\bp_\be : 3,\n+_\b1_\b2_\b1 _\bs_\bh_\ba_\br_\be_\bE_\bn_\bd_\bC_\ba_\bp_\bP_\ba_\bt_\bc_\bh_\bP_\bo_\bi_\bn_\bt_\bs : 1,\n+123\n+124 // varying\n+_\b1_\b2_\b5 _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bT_\ba_\bb_\bl_\be_\bs : 1,\n+_\b1_\b2_\b6 _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bs : 1,\n+127\n+128 // face-varying\n+_\b1_\b2_\b9 _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bF_\bV_\ba_\br_\bT_\ba_\bb_\bl_\be_\bs : 1,\n+130\n+131 // precision\n+_\b1_\b3_\b2 _\bp_\ba_\bt_\bc_\bh_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\bD_\bo_\bu_\bb_\bl_\be : 1,\n+_\b1_\b3_\b3 _\bf_\bv_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\bD_\bo_\bu_\bb_\bl_\be : 1,\n+134\n+135 // legacy behaviors (default to true)\n+_\b1_\b3_\b6 _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bF_\bV_\ba_\br_\bL_\be_\bg_\ba_\bc_\by_\bL_\bi_\bn_\be_\ba_\br_\bP_\ba_\bt_\bc_\bh_\be_\bs : 1,\n+_\b1_\b3_\b7 _\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bL_\be_\bg_\ba_\bc_\by_\bS_\bh_\ba_\br_\bp_\bC_\bo_\br_\bn_\be_\br_\bP_\ba_\bt_\bc_\bh_\be_\bs : 1;\n+138\n+_\b1_\b3_\b9 int _\bn_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs;\n+_\b1_\b4_\b0 int const * _\bf_\bv_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bI_\bn_\bd_\bi_\bc_\be_\bs;\n+141 };\n+142\n+_\b1_\b7_\b5 static _\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be * _\bC_\br_\be_\ba_\bt_\be(_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const & refiner,\n+176 _\bO_\bp_\bt_\bi_\bo_\bn_\bs options = _\bO_\bp_\bt_\bi_\bo_\bn_\bs(),\n+177 _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by selectedFaces = _\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by());\n+178\n+179public:\n+180 // PatchFaceTag\n+181 //\n+182 // This simple struct was previously used within the factory to take\n+inventory of\n+183 // various kinds of patches to fully allocate buffers prior to populating\n+them. It\n+184 // was not intended to be exposed as part of the public interface.\n+185 //\n+186 // It is no longer used internally and is being kept here to respect\n+preservation\n+187 // of the public interface, but it will be deprecated at the earliest\n+opportunity.\n+188 //\n+191 //\n+_\b1_\b9_\b2 struct _\bP_\ba_\bt_\bc_\bh_\bF_\ba_\bc_\be_\bT_\ba_\bg {\n+193 public:\n+_\b1_\b9_\b4 unsigned int _\b__\bh_\ba_\bs_\bP_\ba_\bt_\bc_\bh : 1;\n+_\b1_\b9_\b5 unsigned int _\b__\bi_\bs_\bR_\be_\bg_\bu_\bl_\ba_\br : 1;\n+_\b1_\b9_\b6 unsigned int _\b__\bt_\br_\ba_\bn_\bs_\bi_\bt_\bi_\bo_\bn_\bM_\ba_\bs_\bk : 4;\n+_\b1_\b9_\b7 unsigned int _\b__\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bM_\ba_\bs_\bk : 4;\n+_\b1_\b9_\b8 unsigned int _\b__\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bn_\bd_\be_\bx : 2;\n+_\b1_\b9_\b9 unsigned int _\b__\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bC_\bo_\bu_\bn_\bt : 3;\n+_\b2_\b0_\b0 unsigned int _\b__\bh_\ba_\bs_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bE_\bd_\bg_\be : 3;\n+_\b2_\b0_\b1 unsigned int _\b__\bi_\bs_\bS_\bi_\bn_\bg_\bl_\be_\bC_\br_\be_\ba_\bs_\be : 1;\n+202\n+_\b2_\b0_\b3 void _\bc_\bl_\be_\ba_\br();\n+_\b2_\b0_\b4 void _\ba_\bs_\bs_\bi_\bg_\bn_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bp_\be_\br_\bt_\bi_\be_\bs_\bF_\br_\bo_\bm_\bE_\bd_\bg_\be_\bM_\ba_\bs_\bk(int boundaryEdgeMask);\n+_\b2_\b0_\b5 void _\ba_\bs_\bs_\bi_\bg_\bn_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bp_\be_\br_\bt_\bi_\be_\bs_\bF_\br_\bo_\bm_\bV_\be_\br_\bt_\be_\bx_\bM_\ba_\bs_\bk(int boundaryVertexMask);\n+_\b2_\b0_\b6 void _\ba_\bs_\bs_\bi_\bg_\bn_\bT_\br_\ba_\bn_\bs_\bi_\bt_\bi_\bo_\bn_\bP_\br_\bo_\bp_\be_\br_\bt_\bi_\be_\bs_\bF_\br_\bo_\bm_\bE_\bd_\bg_\be_\bM_\ba_\bs_\bk(int boundaryVertexMask);\n+207 };\n+_\b2_\b0_\b8 typedef std::vector<PatchFaceTag> _\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bg_\bV_\be_\bc_\bt_\bo_\br;\n+209};\n+210\n+211\n+_\b2_\b1_\b2template <> inline void PatchTableFactory::Options::SetPatchPrecision<float>\n+() {\n+213 _\bp_\ba_\bt_\bc_\bh_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\bD_\bo_\bu_\bb_\bl_\be = false;\n+214}\n+_\b2_\b1_\b5template <> inline void PatchTableFactory::Options::\n+SetFVarPatchPrecision<float>() {\n+216 fvarPatchPrecisionDouble = false;\n+217}\n+218\n+219template <> inline void PatchTableFactory::Options::\n+SetPatchPrecision<double>() {\n+220 patchPrecisionDouble = true;\n+221}\n+222template <> inline void PatchTableFactory::Options::\n+SetFVarPatchPrecision<double>() {\n+223 fvarPatchPrecisionDouble = true;\n+224}\n+225\n+226\n+227} // end namespace Far\n+228\n+229} // end namespace OPENSUBDIV_VERSION\n+230using namespace OPENSUBDIV_VERSION;\n+231\n+232} // end namespace OpenSubdiv\n+233\n+234\n+235#endif /* OPENSUBDIV3_FAR_PATCH_TABLE_FACTORY_H */\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n-BufferDescriptor is a struct which describes buffer elements in interleaved\n-data buffers....\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b6_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b3_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n-static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor\n-const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int\n-numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int\n-fvarChannel, OmpEvaluator const *instance=NULL, void *deviceContext=NULL)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b0_\b3_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-static bool EvalStencils(const float *src, BufferDescriptor const &srcDesc,\n-float *dst, BufferDescriptor const &dstDesc, const int *sizes, const int\n-*offsets, const int *indices, const float *weights, int start, int end)\n-Static eval stencils function which takes raw CPU pointers for input and\n-output.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n-static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n-*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n-BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const\n-&duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER\n-*dvvBuffer, BufferDescriptor const &dvvDesc, int numPatchCoords,\n-PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, OmpEvaluator const\n-*instance=NULL, void *deviceContext=NULL)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b9_\b7_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n-*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n-BufferDescriptor const &dvDesc, STENCIL_TABLE const *stencilTable, const\n-OmpEvaluator *instance=NULL, void *deviceContext=NULL)\n-Generic static eval stencils function with derivatives. This function has a\n-same signature as other d...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b6_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-static bool EvalStencils(const float *src, BufferDescriptor const &srcDesc,\n-float *dst, BufferDescriptor const &dstDesc, float *du, BufferDescriptor const\n-&duDesc, float *dv, BufferDescriptor const &dvDesc, const int *sizes, const int\n-*offsets, const int *indices, const float *weights, const float *duWeights,\n-const float *dvWeights, int start, int end)\n-Static eval stencils function with derivatives, which takes raw CPU pointers\n-for input and output.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n-static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int\n-numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable,\n-OmpEvaluator const *instance=NULL, void *deviceContext=NULL)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b8_\b2_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n-static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor\n-const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,\n-DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n-BufferDescriptor const &dvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n-*patchCoords, PATCH_TABLE *patchTable, int fvarChannel, OmpEvaluator const\n-*instance=NULL, void *deviceContext=NULL)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b1_\b0_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-static bool EvalStencils(const float *src, BufferDescriptor const &srcDesc,\n-float *dst, BufferDescriptor const &dstDesc, float *du, BufferDescriptor const\n-&duDesc, float *dv, BufferDescriptor const &dvDesc, float *duu,\n-BufferDescriptor const &duuDesc, float *duv, BufferDescriptor const &duvDesc,\n-float *dvv, BufferDescriptor const &dvvDesc, const int *sizes, const int\n-*offsets, const int *indices, const float *weights, const float *duWeights,\n-const float *dvWeights, const float *duuWeights, const float *duvWeights, const\n-float *dvvWeights, int start, int end)\n-Static eval stencils function with derivatives, which takes raw CPU pointers\n-for input and output.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, STENCIL_TABLE\n-const *stencilTable, const OmpEvaluator *instance=NULL, void\n-*deviceContext=NULL)\n-Generic static eval stencils function. This function has a same signature as\n-other device kernels hav...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-static bool EvalPatches(const float *src, BufferDescriptor const &srcDesc,\n-float *dst, BufferDescriptor const &dstDesc, float *du, BufferDescriptor const\n-&duDesc, float *dv, BufferDescriptor const &dvDesc, float *duu,\n-BufferDescriptor const &duuDesc, float *duv, BufferDescriptor const &duvDesc,\n-float *dvv, BufferDescriptor const &dvvDesc, int numPatchCoords, PatchCoord\n-const *patchCoords, PatchArray const *patchArrays, const int *patchIndexBuffer,\n-PatchParam const *patchParamBuffer)\n-Static limit eval function. It takes an array of PatchCoord and evaluate limit\n-values on given PatchT...\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n-BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n-&dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE\n-*patchTable, OmpEvaluator const *instance=NULL, void *deviceContext=NULL)\n-Generic limit eval function with derivatives. This function has a same\n-signature as other device kern...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b5_\b1_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n-static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n-*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n-BufferDescriptor const &dvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n-*patchCoords, PATCH_TABLE *patchTable, OmpEvaluator const *instance=NULL, void\n-*deviceContext=NULL)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b8_\b8_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n-BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n-&dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER\n-*duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer,\n-BufferDescriptor const &dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n-*patchCoords, PATCH_TABLE *patchTable, OmpEvaluator const *instance=NULL, void\n-*deviceContext=NULL)\n-Generic limit eval function with derivatives. This function has a same\n-signature as other device kern...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b6_\b0_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bS_\by_\bn_\bc_\bh_\br_\bo_\bn_\bi_\bz_\be\n-static void Synchronize(void *deviceContext=NULL)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n-*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n-BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const\n-&duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER\n-*dvvBuffer, BufferDescriptor const &dvvDesc, STENCIL_TABLE const *stencilTable,\n-const OmpEvaluator *instance=NULL, void *deviceContext=NULL)\n-Generic static eval stencils function with derivatives. This function has a\n-same signature as other d...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b3_\b0_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords,\n-PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, OmpEvaluator const\n-*instance=NULL, void *deviceContext=NULL)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b4_\b5_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-static bool EvalPatches(const float *src, BufferDescriptor const &srcDesc,\n-float *dst, BufferDescriptor const &dstDesc, float *du, BufferDescriptor const\n-&duDesc, float *dv, BufferDescriptor const &dvDesc, int numPatchCoords,\n-PatchCoord const *patchCoords, PatchArray const *patchArrays, const int\n-*patchIndexBuffer, PatchParam const *patchParamBuffer)\n-Static limit eval function. It takes an array of PatchCoord and evaluate limit\n-values on given PatchT...\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bS_\be_\bt_\bN_\bu_\bm_\bT_\bh_\br_\be_\ba_\bd_\bs\n-static void SetNumThreads(int numThreads)\n-Deprecated. Client code should initialize OpenMP.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-static bool EvalPatches(const float *src, BufferDescriptor const &srcDesc,\n-float *dst, BufferDescriptor const &dstDesc, int numPatchCoords, const\n-PatchCoord *patchCoords, const PatchArray *patchArrays, const int\n-*patchIndexBuffer, const PatchParam *patchParamBuffer)\n-Static limit eval function. It takes an array of PatchCoord and evaluate limit\n-values on given PatchT...\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bO_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n-static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor\n-const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,\n-DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n-BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const\n-&duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER\n-*dvvBuffer, BufferDescriptor const &dvvDesc, int numPatchCoords,\n-PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel,\n-OmpEvaluator const *instance=NULL, void *deviceContext=NULL)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b1_\b8_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd\n-Coordinates set on a patch table.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b4_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b6_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b1_\b2_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by\n+Vtr::ConstIndexArray ConstIndexArray\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b4_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+Container for arrays of parametric patches.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by\n+Factory for constructing a PatchTable from a TopologyRefiner.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b4_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bg_\bV_\be_\bc_\bt_\bo_\br\n+std::vector< PatchFaceTag > PatchTagVector\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b2_\b0_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n+static PatchTable * Create(TopologyRefiner const &refiner, Options\n+options=Options(), ConstIndexArray selectedFaces=ConstIndexArray())\n+Instantiates a PatchTable from a client-provided TopologyRefiner.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n+Public options for the PatchTable factory.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b4_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bT_\ba_\bb_\bl_\be_\bs\n+unsigned int generateVaryingTables\n+Generate varying patch tables.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b2_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bL_\be_\bg_\ba_\bc_\by_\bS_\bh_\ba_\br_\bp_\bC_\bo_\br_\bn_\be_\br_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+unsigned int generateLegacySharpCornerPatches\n+Generate sharp regular patches at smooth corners (legacy)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b3_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bs_\bh_\ba_\br_\be_\bE_\bn_\bd_\bC_\ba_\bp_\bP_\ba_\bt_\bc_\bh_\bP_\bo_\bi_\bn_\bt_\bs\n+unsigned int shareEndCapPatchPoints\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b2_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bG_\be_\bt_\bR_\be_\bf_\bi_\bn_\be_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n+TopologyRefiner::AdaptiveOptions GetRefineAdaptiveOptions() const\n+Determine adaptive refinement options to match assigned patch options.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b0_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bm_\ba_\bx_\bI_\bs_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bL_\be_\bv_\be_\bl\n+unsigned int maxIsolationLevel\n+Cap adaptive feature isolation to the given level (max. 10)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b1_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bG_\be_\bt_\bE_\bn_\bd_\bC_\ba_\bp_\bT_\by_\bp_\be\n+EndCapType GetEndCapType() const\n+Get endcap basis type.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b8_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bF_\bV_\ba_\br_\bL_\be_\bg_\ba_\bc_\by_\bL_\bi_\bn_\be_\ba_\br_\bP_\ba_\bt_\bc_\bh_\be_\bs\n+unsigned int generateFVarLegacyLinearPatches\n+Generate all linear face-varying patches (legacy)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b3_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bS_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn\n+void SetPatchPrecision()\n+Set precision of vertex patches.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bf_\bv_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\bD_\bo_\bu_\bb_\bl_\be\n+unsigned int fvarPatchPrecisionDouble\n+Generate double-precision stencils for face-varying patches.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b3_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bS_\be_\bt_\bM_\ba_\bx_\bI_\bs_\bo_\bl_\ba_\bt_\bi_\bo_\bn_\bL_\be_\bv_\be_\bl\n+void SetMaxIsolationLevel(unsigned int level)\n+Set maximum isolation level.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b9_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\be_\bn_\bd_\bC_\ba_\bp_\bT_\by_\bp_\be\n+unsigned int endCapType\n+EndCapType.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b2_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bf_\bv_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bI_\bn_\bd_\bi_\bc_\be_\bs\n+int const * fvarChannelIndices\n+List containing the indices of the channels selected for the factory.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b4_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bu_\bs_\be_\bS_\bi_\bn_\bg_\bl_\be_\bC_\br_\be_\ba_\bs_\be_\bP_\ba_\bt_\bc_\bh\n+unsigned int useSingleCreasePatch\n+Use single crease patch.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b1_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bu_\bs_\be_\bI_\bn_\bf_\bS_\bh_\ba_\br_\bp_\bP_\ba_\bt_\bc_\bh\n+unsigned int useInfSharpPatch\n+Use infinitely-sharp patch.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b1_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bS_\be_\bt_\bE_\bn_\bd_\bC_\ba_\bp_\bT_\by_\bp_\be\n+void SetEndCapType(EndCapType e)\n+Set endcap basis type.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b8_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bs\n+unsigned int generateVaryingLocalPoints\n+Generate local points with varying patches.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b2_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bi_\bn_\bc_\bl_\bu_\bd_\be_\bF_\bV_\ba_\br_\bB_\ba_\bs_\be_\bL_\be_\bv_\be_\bl_\bI_\bn_\bd_\bi_\bc_\be_\bs\n+unsigned int includeFVarBaseLevelIndices\n+Include base level in face-varying patch point indices (Uniform mode only)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b1_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bA_\bl_\bl_\bL_\be_\bv_\be_\bl_\bs\n+unsigned int generateAllLevels\n+Generate levels from 'firstLevel' to 'maxLevel' (Uniform mode only)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b1_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bp_\ba_\bt_\bc_\bh_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn_\bD_\bo_\bu_\bb_\bl_\be\n+unsigned int patchPrecisionDouble\n+Generate double-precision stencils for vertex patches.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b3_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bg_\be_\bn_\be_\br_\ba_\bt_\be_\bF_\bV_\ba_\br_\bT_\ba_\bb_\bl_\be_\bs\n+unsigned int generateFVarTables\n+Generate face-varying patch tables.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b2_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bi_\bn_\bc_\bl_\bu_\bd_\be_\bB_\ba_\bs_\be_\bL_\be_\bv_\be_\bl_\bI_\bn_\bd_\bi_\bc_\be_\bs\n+unsigned int includeBaseLevelIndices\n+Include base level in patch point indices (Uniform mode only)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b1_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bS_\be_\bt_\bF_\bV_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bP_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn\n+void SetFVarPatchPrecision()\n+Set precision of face-varying patches.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bn_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs\n+int numFVarChannels\n+Number of channel indices and interpolation modes passed.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b3_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bt_\br_\bi_\ba_\bn_\bg_\bu_\bl_\ba_\bt_\be_\bQ_\bu_\ba_\bd_\bs\n+unsigned int triangulateQuads\n+Triangulate 'QUADS' primitives (Uniform mode only)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b1_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bE_\bn_\bd_\bC_\ba_\bp_\bT_\by_\bp_\be\n+EndCapType\n+Choice for approximating irregular patches (end-caps)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bE_\bN_\bD_\bC_\bA_\bP_\b__\bL_\bE_\bG_\bA_\bC_\bY_\b__\bG_\bR_\bE_\bG_\bO_\bR_\bY\n+@ ENDCAP_LEGACY_GREGORY\n+legacy option for 2.x style Gregory patches (Catmark only)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b6_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bE_\bN_\bD_\bC_\bA_\bP_\b__\bG_\bR_\bE_\bG_\bO_\bR_\bY_\b__\bB_\bA_\bS_\bI_\bS\n+@ ENDCAP_GREGORY_BASIS\n+use Gregory patches (highest quality, recommended default)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bE_\bN_\bD_\bC_\bA_\bP_\b__\bN_\bO_\bN_\bE\n+@ ENDCAP_NONE\n+unspecified\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bE_\bN_\bD_\bC_\bA_\bP_\b__\bB_\bI_\bL_\bI_\bN_\bE_\bA_\bR_\b__\bB_\bA_\bS_\bI_\bS\n+@ ENDCAP_BILINEAR_BASIS\n+use linear patches (simple quads or tris)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bE_\bN_\bD_\bC_\bA_\bP_\b__\bB_\bS_\bP_\bL_\bI_\bN_\bE_\b__\bB_\bA_\bS_\bI_\bS\n+@ ENDCAP_BSPLINE_BASIS\n+use BSpline-like patches (same patch type as regular)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n+Options(unsigned int maxIsolation=10)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b6_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bF_\ba_\bc_\be_\bT_\ba_\bg\n+Obsolete internal struct not intended for public use \u00e2\u0080\u0093 due to be deprecated.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b9_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bF_\ba_\bc_\be_\bT_\ba_\bg_\b:_\b:\n+_\b__\bi_\bs_\bS_\bi_\bn_\bg_\bl_\be_\bC_\br_\be_\ba_\bs_\be\n+unsigned int _isSingleCrease\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b2_\b0_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bF_\ba_\bc_\be_\bT_\ba_\bg_\b:_\b:\n+_\b__\bi_\bs_\bR_\be_\bg_\bu_\bl_\ba_\br\n+unsigned int _isRegular\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b9_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bF_\ba_\bc_\be_\bT_\ba_\bg_\b:_\b:\n+_\b__\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bn_\bd_\be_\bx\n+unsigned int _boundaryIndex\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b9_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bF_\ba_\bc_\be_\bT_\ba_\bg_\b:_\b:\n+_\ba_\bs_\bs_\bi_\bg_\bn_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bp_\be_\br_\bt_\bi_\be_\bs_\bF_\br_\bo_\bm_\bV_\be_\br_\bt_\be_\bx_\bM_\ba_\bs_\bk\n+void assignBoundaryPropertiesFromVertexMask(int boundaryVertexMask)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bF_\ba_\bc_\be_\bT_\ba_\bg_\b:_\b:\n+_\b__\bt_\br_\ba_\bn_\bs_\bi_\bt_\bi_\bo_\bn_\bM_\ba_\bs_\bk\n+unsigned int _transitionMask\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b9_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bF_\ba_\bc_\be_\bT_\ba_\bg_\b:_\b:\n+_\b__\bh_\ba_\bs_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bE_\bd_\bg_\be\n+unsigned int _hasBoundaryEdge\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b2_\b0_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bF_\ba_\bc_\be_\bT_\ba_\bg_\b:_\b:\n+_\b__\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bM_\ba_\bs_\bk\n+unsigned int _boundaryMask\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b9_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bF_\ba_\bc_\be_\bT_\ba_\bg_\b:_\b:_\b__\bh_\ba_\bs_\bP_\ba_\bt_\bc_\bh\n+unsigned int _hasPatch\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b9_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bF_\ba_\bc_\be_\bT_\ba_\bg_\b:_\b:\n+_\ba_\bs_\bs_\bi_\bg_\bn_\bT_\br_\ba_\bn_\bs_\bi_\bt_\bi_\bo_\bn_\bP_\br_\bo_\bp_\be_\br_\bt_\bi_\be_\bs_\bF_\br_\bo_\bm_\bE_\bd_\bg_\be_\bM_\ba_\bs_\bk\n+void assignTransitionPropertiesFromEdgeMask(int boundaryVertexMask)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bF_\ba_\bc_\be_\bT_\ba_\bg_\b:_\b:_\bc_\bl_\be_\ba_\br\n+void clear()\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bF_\ba_\bc_\be_\bT_\ba_\bg_\b:_\b:\n+_\ba_\bs_\bs_\bi_\bg_\bn_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bP_\br_\bo_\bp_\be_\br_\bt_\bi_\be_\bs_\bF_\br_\bo_\bm_\bE_\bd_\bg_\be_\bM_\ba_\bs_\bk\n+void assignBoundaryPropertiesFromEdgeMask(int boundaryEdgeMask)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bF_\ba_\bc_\be_\bT_\ba_\bg_\b:_\b:\n+_\b__\bb_\bo_\bu_\bn_\bd_\ba_\br_\by_\bC_\bo_\bu_\bn_\bt\n+unsigned int _boundaryCount\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b9_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br\n+Stores topology data for a specified set of refinement options.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b5_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n+Adaptive refinement options.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b5_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bu_\bs_\be_\bS_\bi_\bn_\bg_\bl_\be_\bC_\br_\be_\ba_\bs_\be_\bP_\ba_\bt_\bc_\bh\n+unsigned int useSingleCreasePatch\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b7_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bu_\bs_\be_\bI_\bn_\bf_\bS_\bh_\ba_\br_\bp_\bP_\ba_\bt_\bc_\bh\n+unsigned int useInfSharpPatch\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b7_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bc_\bo_\bn_\bs_\bi_\bd_\be_\br_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs\n+unsigned int considerFVarChannels\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b8_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b5_\b3\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bo_\bm_\bp_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh\n+    * _\bf_\ba_\br\n+    * _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00857.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00857.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/tbbEvaluator.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/far/patchDescriptor.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -89,43 +89,50 @@\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> &#124;\n-<a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">tbbEvaluator.h File Reference</div></div>\n+<a href=\"#namespaces\">Namespaces</a> &#124;\n+<a href=\"#typedef-members\">Typedefs</a>  </div>\n+  <div class=\"headertitle\"><div class=\"title\">patchDescriptor.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00866_source.html\">../osd/bufferDescriptor.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a01489_source.html\">../osd/types.h</a>&quot;</code><br />\n-<code>#include &lt;cstddef&gt;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a01486_source.html\">../far/types.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a01492_source.html\">../sdc/types.h</a>&quot;</code><br />\n+<code>#include &lt;vector&gt;</code><br />\n </div>\n <p><a href=\"a00857_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01317.html\">TbbEvaluator</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00973.html\">PatchDescriptor</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Describes the type of a patch.  <a href=\"a00973.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n+<tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+</table><table class=\"memberdecls\">\n+<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"typedef-members\" name=\"typedef-members\"></a>\n+Typedefs</h2></td></tr>\n+<tr class=\"memitem:ad258c2d8f7871bc0d40cf3a9ded6e08a\" id=\"r_ad258c2d8f7871bc0d40cf3a9ded6e08a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef <a class=\"el\" href=\"a01353.html\">Vtr::ConstArray</a>&lt; <a class=\"el\" href=\"a00973.html\">PatchDescriptor</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html#ad258c2d8f7871bc0d40cf3a9ded6e08a\">ConstPatchDescriptorArray</a></td></tr>\n+<tr class=\"separator:ad258c2d8f7871bc0d40cf3a9ded6e08a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00857.html\">tbbEvaluator.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7f420b72a822828cfa8b0561c695a5cc.html\">far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00857.html\">patchDescriptor.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,25 +1,29 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-tbbEvaluator.h File Reference\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bT_\by_\bp_\be_\bd_\be_\bf_\bs\n+patchDescriptor.h File Reference\n #include \"../version.h\"\n-#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh\"\n-#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n-#include <cstddef>\n+#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n+#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n+#include <vector>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n+class \u00a0 _\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n+\u00a0       Describes the type of a patch. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br\n+\u00a0\n+T\bTy\byp\bpe\bed\bde\bef\bfs\bs\n+typedef _\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by< _\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br >\u00a0 _\bC_\bo_\bn_\bs_\bt_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\bA_\br_\br_\ba_\by\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bt_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh\n+    * _\bf_\ba_\br\n+    * _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00857.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00857.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,3 +1,4 @@\n var a00857 = [\n-    [\"TbbEvaluator\", \"a01317.html\", null]\n+    [\"PatchDescriptor\", \"a00973.html\", \"a00973\"],\n+    [\"ConstPatchDescriptorArray\", \"a00857.html#ad258c2d8f7871bc0d40cf3a9ded6e08a\", null]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00857_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00857_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/tbbEvaluator.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/far/patchDescriptor.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">tbbEvaluator.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">patchDescriptor.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00857.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2015 Pixar</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2013 Pixar</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -119,528 +119,226 @@\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_TBB_EVALUATOR_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_TBB_EVALUATOR_H</span></div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_FAR_PATCH_DESCRIPTOR_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_FAR_PATCH_DESCRIPTOR_H</span></div>\n <div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n <div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#include &quot;../osd/bufferDescriptor.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../osd/types.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &lt;cstddef&gt;</span></div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">namespace </span>Osd {</div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00039\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01317.html\">   39</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01317.html\">TbbEvaluator</a> {</div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span> </div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00072\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01317.html#a1083776ed758e8a1ebd8915eb68c5010\">   72</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01317.html#a1083776ed758e8a1ebd8915eb68c5010\">EvalStencils</a>(</div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span>        <a class=\"code hl_class\" href=\"a01317.html\">TbbEvaluator</a> <span class=\"keyword\">const</span> *instance = NULL,</div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span>        <span class=\"keywordtype\">void</span> *deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span> </div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span> </div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>        <span class=\"keywordflow\">if</span> (stencilTable-&gt;GetNumStencils() == 0)</div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>            <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span> </div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01317.html#a1083776ed758e8a1ebd8915eb68c5010\">EvalStencils</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>                            dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>                            &amp;stencilTable-&gt;GetSizes()[0],</div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>                            &amp;stencilTable-&gt;GetOffsets()[0],</div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>                            &amp;stencilTable-&gt;GetControlIndices()[0],</div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>                            &amp;stencilTable-&gt;GetWeights()[0],</div>\n-<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>                            <span class=\"comment\">/*start = */</span> 0,</div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>                            <span class=\"comment\">/*end   = */</span> stencilTable-&gt;GetNumStencils());</div>\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span> </div>\n-<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01317.html#a4345e3659b7fb82f23dd51c688179ce3\">  121</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01317.html#a4345e3659b7fb82f23dd51c688179ce3\">EvalStencils</a>(</div>\n-<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span>        <span class=\"keywordtype\">float</span> *dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * sizes,</div>\n-<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * offsets,</div>\n-<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * indices,</div>\n-<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * weights,</div>\n-<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span>        <span class=\"keywordtype\">int</span> start, <span class=\"keywordtype\">int</span> end);</div>\n-<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span> </div>\n-<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\">  167</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../far/types.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../sdc/types.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span> </div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span> </div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span> </div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"keyword\">namespace </span>Far {</div>\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00044\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html\">   44</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a00973.html\">PatchDescriptor</a> {</div>\n+<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span> </div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00048\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">   48</a></span>    <span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">Type</a> {</div>\n+<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a3a0c2fc8a9cab2764314c3324a8a68b2\">   49</a></span>        <a class=\"code hl_enumvalue\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a3a0c2fc8a9cab2764314c3324a8a68b2\">NON_PATCH</a> = 0,     </div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span> </div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7adc0f401e772f1affa81071e70631abbf\">   51</a></span>        <a class=\"code hl_enumvalue\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7adc0f401e772f1affa81071e70631abbf\">POINTS</a>,            </div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a0b25cd15c2c168baf13ac0feb3980f40\">   52</a></span>        <a class=\"code hl_enumvalue\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a0b25cd15c2c168baf13ac0feb3980f40\">LINES</a>,             </div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span> </div>\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a27f9590991016e795e40b58f0bfeaf4c\">   54</a></span>        <a class=\"code hl_enumvalue\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a27f9590991016e795e40b58f0bfeaf4c\">QUADS</a>,             </div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a9113dda3d2c5d6ffce05d54a17ed5678\">   55</a></span>        <a class=\"code hl_enumvalue\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a9113dda3d2c5d6ffce05d54a17ed5678\">TRIANGLES</a>,         </div>\n+<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span> </div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a61f7f1587bd5fe978d9ff3ece8d0624c\">   57</a></span>        <a class=\"code hl_enumvalue\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a61f7f1587bd5fe978d9ff3ece8d0624c\">LOOP</a>,              </div>\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span> </div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7afc488491175a6dac9e5881e363ad4c41\">   59</a></span>        <a class=\"code hl_enumvalue\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7afc488491175a6dac9e5881e363ad4c41\">REGULAR</a>,           </div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7ae765e809376e5557d348d3e991a7273e\">   60</a></span>        <a class=\"code hl_enumvalue\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7ae765e809376e5557d348d3e991a7273e\">GREGORY</a>,</div>\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7ac4ae10df9c13e44880ca7be341e44f2a\">   61</a></span>        <a class=\"code hl_enumvalue\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7ac4ae10df9c13e44880ca7be341e44f2a\">GREGORY_BOUNDARY</a>,</div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7ad7d1a88a40ae8938e07af7a7745054b0\">   62</a></span>        <a class=\"code hl_enumvalue\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7ad7d1a88a40ae8938e07af7a7745054b0\">GREGORY_BASIS</a>,</div>\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>        <a class=\"code hl_enumvalue\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a8bf2cfb939c78155cae7549621ea73f6\">GREGORY_TRIANGLE</a></div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a8bf2cfb939c78155cae7549621ea73f6\">   64</a></span>    };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span> </div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00069\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#af3f91a4a134cb2e5786990ec81f30d17\">   69</a></span>    <a class=\"code hl_function\" href=\"a00973.html#af3f91a4a134cb2e5786990ec81f30d17\">PatchDescriptor</a>() :</div>\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span>        _type(<a class=\"code hl_enumvalue\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a3a0c2fc8a9cab2764314c3324a8a68b2\">NON_PATCH</a>) { }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00073\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#a8e33c50700963e8dc99a5f598a32aaa3\">   73</a></span>    <a class=\"code hl_function\" href=\"a00973.html#a8e33c50700963e8dc99a5f598a32aaa3\">PatchDescriptor</a>(<span class=\"keywordtype\">int</span> type) :</div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span>        _type(type) { }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00077\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#a6c6de8b1c8212039f4702f70bb75cf02\">   77</a></span>    <a class=\"code hl_function\" href=\"a00973.html#a6c6de8b1c8212039f4702f70bb75cf02\">PatchDescriptor</a>( <a class=\"code hl_class\" href=\"a00973.html\">PatchDescriptor</a> <span class=\"keyword\">const</span> &amp; d ) :</div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span>        _type(d.<a class=\"code hl_function\" href=\"a00973.html#a485decc00facb0972f8775a8a20851fa\">GetType</a>()) { }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00081\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#a957e78d72208a5a9b394a2ea1d4d95d9\">   81</a></span>    <a class=\"code hl_class\" href=\"a00973.html\">PatchDescriptor</a> &amp; <a class=\"code hl_function\" href=\"a00973.html#a957e78d72208a5a9b394a2ea1d4d95d9\">operator=</a>( <a class=\"code hl_class\" href=\"a00973.html\">PatchDescriptor</a> <span class=\"keyword\">const</span> &amp; d ) {</div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>        _type = d.<a class=\"code hl_function\" href=\"a00973.html#a485decc00facb0972f8775a8a20851fa\">GetType</a>();</div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>        <span class=\"keywordflow\">return</span> *<span class=\"keyword\">this</span>;</div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00087\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#a485decc00facb0972f8775a8a20851fa\">   87</a></span>    <a class=\"code hl_enumeration\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">Type</a> <a class=\"code hl_function\" href=\"a00973.html#a485decc00facb0972f8775a8a20851fa\">GetType</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>        <span class=\"keywordflow\">return</span> (<a class=\"code hl_enumeration\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">Type</a>)_type;</div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00092\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#aa1c2bc6e9b4732d59a1c215f1ddfa224\">   92</a></span>    <span class=\"keyword\">static</span> <span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00973.html#aa1c2bc6e9b4732d59a1c215f1ddfa224\">IsAdaptive</a>(<a class=\"code hl_enumeration\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">Type</a> type) {</div>\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span>        <span class=\"keywordflow\">return</span> type &gt; <a class=\"code hl_enumvalue\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a9113dda3d2c5d6ffce05d54a17ed5678\">TRIANGLES</a>;</div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00097\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#a1d77cd9717f08d87e372cd7047d774d9\">   97</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00973.html#a1d77cd9717f08d87e372cd7047d774d9\">IsAdaptive</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a00973.html#a1d77cd9717f08d87e372cd7047d774d9\">IsAdaptive</a>( this-&gt;<a class=\"code hl_function\" href=\"a00973.html#a485decc00facb0972f8775a8a20851fa\">GetType</a>() );</div>\n+<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span> </div>\n+<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span>    <span class=\"keyword\">static</span> <span class=\"keyword\">inline</span> <span class=\"keywordtype\">short</span> <a class=\"code hl_function\" href=\"a00973.html#a65d29e074c001aa7817045e54403bfbb\">GetNumControlVertices</a>( <a class=\"code hl_enumeration\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">Type</a> t );</div>\n+<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span> </div>\n+<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span>    <span class=\"keyword\">static</span> <span class=\"keyword\">inline</span> <span class=\"keywordtype\">short</span> <a class=\"code hl_function\" href=\"a00973.html#a881bd183b2e330c490fcce5caf3ef433\">GetNumFVarControlVertices</a>( <a class=\"code hl_enumeration\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">Type</a> t );</div>\n+<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00110\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#a65d29e074c001aa7817045e54403bfbb\">  110</a></span>    <span class=\"keywordtype\">short</span> <a class=\"code hl_function\" href=\"a00973.html#a65d29e074c001aa7817045e54403bfbb\">GetNumControlVertices</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a00973.html#a65d29e074c001aa7817045e54403bfbb\">GetNumControlVertices</a>( this-&gt;<a class=\"code hl_function\" href=\"a00973.html#a485decc00facb0972f8775a8a20851fa\">GetType</a>() );</div>\n+<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00115\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#a881bd183b2e330c490fcce5caf3ef433\">  115</a></span>    <span class=\"keywordtype\">short</span> <a class=\"code hl_function\" href=\"a00973.html#a881bd183b2e330c490fcce5caf3ef433\">GetNumFVarControlVertices</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\">  116</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a00973.html#a881bd183b2e330c490fcce5caf3ef433\">GetNumFVarControlVertices</a>( this-&gt;<a class=\"code hl_function\" href=\"a00973.html#a485decc00facb0972f8775a8a20851fa\">GetType</a>() );</div>\n+<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\">  118</span> </div>\n+<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#a7f367dc8b49973c9c3571907a5c85749\">  120</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">short</span> <a class=\"code hl_function\" href=\"a00973.html#a7f367dc8b49973c9c3571907a5c85749\">GetRegularPatchSize</a>() { <span class=\"keywordflow\">return</span> 16; }</div>\n+<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\">  121</span> </div>\n+<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#ac81253df324c9b3e106783112457be15\">  123</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">short</span> <a class=\"code hl_function\" href=\"a00973.html#ac81253df324c9b3e106783112457be15\">GetGregoryPatchSize</a>() { <span class=\"keywordflow\">return</span> 4; }</div>\n+<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span> </div>\n+<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#a55ee40117ada82b868b00332c5d787cd\">  126</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">short</span> <a class=\"code hl_function\" href=\"a00973.html#a55ee40117ada82b868b00332c5d787cd\">GetGregoryBasisPatchSize</a>() { <span class=\"keywordflow\">return</span> 20; }</div>\n+<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span> </div>\n+<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span> </div>\n+<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#ae2b7537df7fd7add00efb4285fa356c2\">  131</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01353.html\">Vtr::ConstArray&lt;PatchDescriptor&gt;</a> <a class=\"code hl_function\" href=\"a00973.html#ae2b7537df7fd7add00efb4285fa356c2\">GetAdaptivePatchDescriptors</a>(<a class=\"code hl_enumeration\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833d\">Sdc::SchemeType</a> type);</div>\n+<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\">  132</span> </div>\n+<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\">  134</span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00973.html#abd9f5b68153db907eb7ccd0ed177dfdd\">operator &lt; </a>( <a class=\"code hl_class\" href=\"a00973.html\">PatchDescriptor</a> <span class=\"keyword\">const</span> other ) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\">  135</span> </div>\n+<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\">  137</span>    <span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00973.html#a70f2b01ccc2adc41113279d318210005\">operator == </a>( <a class=\"code hl_class\" href=\"a00973.html\">PatchDescriptor</a> <span class=\"keyword\">const</span> other ) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\">  138</span> </div>\n+<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\">  139</span>    <span class=\"comment\">// debug helper</span></div>\n+<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#acd0f82d3c49b8a5dd436d4003c44b713\">  140</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00973.html#acd0f82d3c49b8a5dd436d4003c44b713\">print</a>() <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\">  141</span> </div>\n+<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\">  143</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> _type;</div>\n+<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\">  144</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\">  145</span> </div>\n+<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00908.html#ad258c2d8f7871bc0d40cf3a9ded6e08a\">  146</a></span><span class=\"keyword\">typedef</span> <a class=\"code hl_class\" href=\"a01353.html\">Vtr::ConstArray&lt;PatchDescriptor&gt;</a> <a class=\"code hl_typedef\" href=\"a00908.html#ad258c2d8f7871bc0d40cf3a9ded6e08a\">ConstPatchDescriptorArray</a>;</div>\n+<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\">  147</span> </div>\n+<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\">  148</span><span class=\"comment\">// Returns the number of control vertices expected for a patch of this type</span></div>\n+<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\">  149</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">short</span></div>\n+<div class=\"foldopen\" id=\"foldopen00150\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#ae9baf121beab0244c3efe2a546c9664a\">  150</a></span><a class=\"code hl_function\" href=\"a00973.html#a65d29e074c001aa7817045e54403bfbb\">PatchDescriptor::GetNumControlVertices</a>( <a class=\"code hl_enumeration\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">Type</a> type ) {</div>\n+<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\">  151</span>    <span class=\"keywordflow\">switch</span> (type) {</div>\n+<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\">  152</span>        <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7afc488491175a6dac9e5881e363ad4c41\">REGULAR</a>           : <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a00973.html#a7f367dc8b49973c9c3571907a5c85749\">GetRegularPatchSize</a>();</div>\n+<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\">  153</span>        <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a61f7f1587bd5fe978d9ff3ece8d0624c\">LOOP</a>              : <span class=\"keywordflow\">return</span> 12;</div>\n+<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\">  154</span>        <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a27f9590991016e795e40b58f0bfeaf4c\">QUADS</a>             : <span class=\"keywordflow\">return</span> 4;</div>\n+<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\">  155</span>        <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7ae765e809376e5557d348d3e991a7273e\">GREGORY</a>           :</div>\n+<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\">  156</span>        <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7ac4ae10df9c13e44880ca7be341e44f2a\">GREGORY_BOUNDARY</a>  : <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a00973.html#ac81253df324c9b3e106783112457be15\">GetGregoryPatchSize</a>();</div>\n+<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\">  157</span>        <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7ad7d1a88a40ae8938e07af7a7745054b0\">GREGORY_BASIS</a>     : <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a00973.html#a55ee40117ada82b868b00332c5d787cd\">GetGregoryBasisPatchSize</a>();</div>\n+<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\">  158</span>        <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a8bf2cfb939c78155cae7549621ea73f6\">GREGORY_TRIANGLE</a>  : <span class=\"keywordflow\">return</span> 18;</div>\n+<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\">  159</span>        <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a9113dda3d2c5d6ffce05d54a17ed5678\">TRIANGLES</a>         : <span class=\"keywordflow\">return</span> 3;</div>\n+<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\">  160</span>        <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a0b25cd15c2c168baf13ac0feb3980f40\">LINES</a>             : <span class=\"keywordflow\">return</span> 2;</div>\n+<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\">  161</span>        <span class=\"keywordflow\">case</span> <a class=\"code hl_enumvalue\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7adc0f401e772f1affa81071e70631abbf\">POINTS</a>            : <span class=\"keywordflow\">return</span> 1;</div>\n+<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\">  162</span>        default : <span class=\"keywordflow\">return</span> -1;</div>\n+<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\">  163</span>    }</div>\n+<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\">  164</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\">  165</span> </div>\n+<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\">  166</span><span class=\"comment\">// Returns the number of face-varying control vertices expected for a patch of this type</span></div>\n+<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\">  167</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">short</span></div>\n <div class=\"foldopen\" id=\"foldopen00168\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01317.html#af04c6d999c9f014e93711ceb9097e2a0\">  168</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01317.html#af04c6d999c9f014e93711ceb9097e2a0\">EvalStencils</a>(</div>\n-<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\">  169</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\">  170</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\">  172</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\">  173</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n-<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\">  174</span>        <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01317.html\">TbbEvaluator</a> *instance = NULL,</div>\n-<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\">  175</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\">  176</span> </div>\n-<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\">  178</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\">  179</span> </div>\n-<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\">  180</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01317.html#a1083776ed758e8a1ebd8915eb68c5010\">EvalStencils</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\">  181</span>                            dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\">  182</span>                            duBuffer-&gt;BindCpuBuffer(),  duDesc,</div>\n-<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\">  183</span>                            dvBuffer-&gt;BindCpuBuffer(),  dvDesc,</div>\n-<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\">  184</span>                            &amp;stencilTable-&gt;GetSizes()[0],</div>\n-<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\">  185</span>                            &amp;stencilTable-&gt;GetOffsets()[0],</div>\n-<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\">  186</span>                            &amp;stencilTable-&gt;GetControlIndices()[0],</div>\n-<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\">  187</span>                            &amp;stencilTable-&gt;GetWeights()[0],</div>\n-<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\">  188</span>                            &amp;stencilTable-&gt;GetDuWeights()[0],</div>\n-<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\">  189</span>                            &amp;stencilTable-&gt;GetDvWeights()[0],</div>\n-<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\">  190</span>                            <span class=\"comment\">/*start = */</span> 0,</div>\n-<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\">  191</span>                            <span class=\"comment\">/*end   = */</span> stencilTable-&gt;GetNumStencils());</div>\n-<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\">  192</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\">  193</span> </div>\n-<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01317.html#a6daed6135a40cda2daf6c6ea2047b330\">  234</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01317.html#a6daed6135a40cda2daf6c6ea2047b330\">EvalStencils</a>(</div>\n-<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\">  235</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\">  236</span>        <span class=\"keywordtype\">float</span> *dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\">  237</span>        <span class=\"keywordtype\">float</span> *du,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\">  238</span>        <span class=\"keywordtype\">float</span> *dv,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\">  239</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * sizes,</div>\n-<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\">  240</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * offsets,</div>\n-<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\">  241</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * indices,</div>\n-<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\">  242</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * weights,</div>\n-<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\">  243</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * duWeights,</div>\n-<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\">  244</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * dvWeights,</div>\n-<div class=\"line\"><a id=\"l00245\" name=\"l00245\"></a><span class=\"lineno\">  245</span>        <span class=\"keywordtype\">int</span> start, <span class=\"keywordtype\">int</span> end);</div>\n-<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\">  246</span> </div>\n-<div class=\"line\"><a id=\"l00302\" name=\"l00302\"></a><span class=\"lineno\">  302</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER, <span class=\"keyword\">typename</span> STENCIL_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00303\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00303\" name=\"l00303\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01317.html#a3c5d150e67161bce880678f16c11f579\">  303</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01317.html#a3c5d150e67161bce880678f16c11f579\">EvalStencils</a>(</div>\n-<div class=\"line\"><a id=\"l00304\" name=\"l00304\"></a><span class=\"lineno\">  304</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00305\" name=\"l00305\"></a><span class=\"lineno\">  305</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00306\" name=\"l00306\"></a><span class=\"lineno\">  306</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\">  307</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00308\" name=\"l00308\"></a><span class=\"lineno\">  308</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l00309\" name=\"l00309\"></a><span class=\"lineno\">  309</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l00310\" name=\"l00310\"></a><span class=\"lineno\">  310</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00311\" name=\"l00311\"></a><span class=\"lineno\">  311</span>        STENCIL_TABLE <span class=\"keyword\">const</span> *stencilTable,</div>\n-<div class=\"line\"><a id=\"l00312\" name=\"l00312\"></a><span class=\"lineno\">  312</span>        <span class=\"keyword\">const</span> <a class=\"code hl_class\" href=\"a01317.html\">TbbEvaluator</a> *instance = NULL,</div>\n-<div class=\"line\"><a id=\"l00313\" name=\"l00313\"></a><span class=\"lineno\">  313</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l00314\" name=\"l00314\"></a><span class=\"lineno\">  314</span> </div>\n-<div class=\"line\"><a id=\"l00315\" name=\"l00315\"></a><span class=\"lineno\">  315</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00316\" name=\"l00316\"></a><span class=\"lineno\">  316</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00317\" name=\"l00317\"></a><span class=\"lineno\">  317</span> </div>\n-<div class=\"line\"><a id=\"l00318\" name=\"l00318\"></a><span class=\"lineno\">  318</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01317.html#a1083776ed758e8a1ebd8915eb68c5010\">EvalStencils</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00319\" name=\"l00319\"></a><span class=\"lineno\">  319</span>                            dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00320\" name=\"l00320\"></a><span class=\"lineno\">  320</span>                            duBuffer-&gt;BindCpuBuffer(),  duDesc,</div>\n-<div class=\"line\"><a id=\"l00321\" name=\"l00321\"></a><span class=\"lineno\">  321</span>                            dvBuffer-&gt;BindCpuBuffer(),  dvDesc,</div>\n-<div class=\"line\"><a id=\"l00322\" name=\"l00322\"></a><span class=\"lineno\">  322</span>                            duuBuffer-&gt;BindCpuBuffer(), duuDesc,</div>\n-<div class=\"line\"><a id=\"l00323\" name=\"l00323\"></a><span class=\"lineno\">  323</span>                            duvBuffer-&gt;BindCpuBuffer(), duvDesc,</div>\n-<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\">  324</span>                            dvvBuffer-&gt;BindCpuBuffer(), dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\">  325</span>                            &amp;stencilTable-&gt;GetSizes()[0],</div>\n-<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\">  326</span>                            &amp;stencilTable-&gt;GetOffsets()[0],</div>\n-<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\">  327</span>                            &amp;stencilTable-&gt;GetControlIndices()[0],</div>\n-<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\">  328</span>                            &amp;stencilTable-&gt;GetWeights()[0],</div>\n-<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\">  329</span>                            &amp;stencilTable-&gt;GetDuWeights()[0],</div>\n-<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\">  330</span>                            &amp;stencilTable-&gt;GetDvWeights()[0],</div>\n-<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\">  331</span>                            &amp;stencilTable-&gt;GetDuuWeights()[0],</div>\n-<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\">  332</span>                            &amp;stencilTable-&gt;GetDuvWeights()[0],</div>\n-<div class=\"line\"><a id=\"l00333\" name=\"l00333\"></a><span class=\"lineno\">  333</span>                            &amp;stencilTable-&gt;GetDvvWeights()[0],</div>\n-<div class=\"line\"><a id=\"l00334\" name=\"l00334\"></a><span class=\"lineno\">  334</span>                            <span class=\"comment\">/*start = */</span> 0,</div>\n-<div class=\"line\"><a id=\"l00335\" name=\"l00335\"></a><span class=\"lineno\">  335</span>                            <span class=\"comment\">/*end   = */</span> stencilTable-&gt;GetNumStencils());</div>\n-<div class=\"line\"><a id=\"l00336\" name=\"l00336\"></a><span class=\"lineno\">  336</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00337\" name=\"l00337\"></a><span class=\"lineno\">  337</span> </div>\n-<div class=\"line\"><a id=\"l00399\" name=\"l00399\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01317.html#a76707de0a89ab94f15ad4b2c398a2c23\">  399</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01317.html#a76707de0a89ab94f15ad4b2c398a2c23\">EvalStencils</a>(</div>\n-<div class=\"line\"><a id=\"l00400\" name=\"l00400\"></a><span class=\"lineno\">  400</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00401\" name=\"l00401\"></a><span class=\"lineno\">  401</span>        <span class=\"keywordtype\">float</span> *dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00402\" name=\"l00402\"></a><span class=\"lineno\">  402</span>        <span class=\"keywordtype\">float</span> *du,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00403\" name=\"l00403\"></a><span class=\"lineno\">  403</span>        <span class=\"keywordtype\">float</span> *dv,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00404\" name=\"l00404\"></a><span class=\"lineno\">  404</span>        <span class=\"keywordtype\">float</span> *duu,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l00405\" name=\"l00405\"></a><span class=\"lineno\">  405</span>        <span class=\"keywordtype\">float</span> *duv,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l00406\" name=\"l00406\"></a><span class=\"lineno\">  406</span>        <span class=\"keywordtype\">float</span> *dvv,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00407\" name=\"l00407\"></a><span class=\"lineno\">  407</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * sizes,</div>\n-<div class=\"line\"><a id=\"l00408\" name=\"l00408\"></a><span class=\"lineno\">  408</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * offsets,</div>\n-<div class=\"line\"><a id=\"l00409\" name=\"l00409\"></a><span class=\"lineno\">  409</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> * indices,</div>\n-<div class=\"line\"><a id=\"l00410\" name=\"l00410\"></a><span class=\"lineno\">  410</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * weights,</div>\n-<div class=\"line\"><a id=\"l00411\" name=\"l00411\"></a><span class=\"lineno\">  411</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * duWeights,</div>\n-<div class=\"line\"><a id=\"l00412\" name=\"l00412\"></a><span class=\"lineno\">  412</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * dvWeights,</div>\n-<div class=\"line\"><a id=\"l00413\" name=\"l00413\"></a><span class=\"lineno\">  413</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * duuWeights,</div>\n-<div class=\"line\"><a id=\"l00414\" name=\"l00414\"></a><span class=\"lineno\">  414</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * duvWeights,</div>\n-<div class=\"line\"><a id=\"l00415\" name=\"l00415\"></a><span class=\"lineno\">  415</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> * dvvWeights,</div>\n-<div class=\"line\"><a id=\"l00416\" name=\"l00416\"></a><span class=\"lineno\">  416</span>        <span class=\"keywordtype\">int</span> start, <span class=\"keywordtype\">int</span> end);</div>\n-<div class=\"line\"><a id=\"l00417\" name=\"l00417\"></a><span class=\"lineno\">  417</span> </div>\n-<div class=\"line\"><a id=\"l00423\" name=\"l00423\"></a><span class=\"lineno\">  423</span> </div>\n-<div class=\"line\"><a id=\"l00452\" name=\"l00452\"></a><span class=\"lineno\">  452</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l00453\" name=\"l00453\"></a><span class=\"lineno\">  453</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00454\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00454\" name=\"l00454\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01317.html#a16b9e4c7e07040ae42e3d49454393f5f\">  454</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01317.html#a16b9e4c7e07040ae42e3d49454393f5f\">EvalPatches</a>(</div>\n-<div class=\"line\"><a id=\"l00455\" name=\"l00455\"></a><span class=\"lineno\">  455</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00456\" name=\"l00456\"></a><span class=\"lineno\">  456</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00457\" name=\"l00457\"></a><span class=\"lineno\">  457</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00458\" name=\"l00458\"></a><span class=\"lineno\">  458</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l00459\" name=\"l00459\"></a><span class=\"lineno\">  459</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l00460\" name=\"l00460\"></a><span class=\"lineno\">  460</span>        <a class=\"code hl_class\" href=\"a01317.html\">TbbEvaluator</a> <span class=\"keyword\">const</span> *instance = NULL,</div>\n-<div class=\"line\"><a id=\"l00461\" name=\"l00461\"></a><span class=\"lineno\">  461</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l00462\" name=\"l00462\"></a><span class=\"lineno\">  462</span> </div>\n-<div class=\"line\"><a id=\"l00463\" name=\"l00463\"></a><span class=\"lineno\">  463</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00464\" name=\"l00464\"></a><span class=\"lineno\">  464</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00465\" name=\"l00465\"></a><span class=\"lineno\">  465</span> </div>\n-<div class=\"line\"><a id=\"l00466\" name=\"l00466\"></a><span class=\"lineno\">  466</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01317.html#a16b9e4c7e07040ae42e3d49454393f5f\">EvalPatches</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00467\" name=\"l00467\"></a><span class=\"lineno\">  467</span>                           dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00468\" name=\"l00468\"></a><span class=\"lineno\">  468</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00469\" name=\"l00469\"></a><span class=\"lineno\">  469</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a>*)patchCoords-&gt;BindCpuBuffer(),</div>\n-<div class=\"line\"><a id=\"l00470\" name=\"l00470\"></a><span class=\"lineno\">  470</span>                           patchTable-&gt;GetPatchArrayBuffer(),</div>\n-<div class=\"line\"><a id=\"l00471\" name=\"l00471\"></a><span class=\"lineno\">  471</span>                           patchTable-&gt;GetPatchIndexBuffer(),</div>\n-<div class=\"line\"><a id=\"l00472\" name=\"l00472\"></a><span class=\"lineno\">  472</span>                           patchTable-&gt;GetPatchParamBuffer());</div>\n-<div class=\"line\"><a id=\"l00473\" name=\"l00473\"></a><span class=\"lineno\">  473</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00474\" name=\"l00474\"></a><span class=\"lineno\">  474</span> </div>\n-<div class=\"line\"><a id=\"l00515\" name=\"l00515\"></a><span class=\"lineno\">  515</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l00516\" name=\"l00516\"></a><span class=\"lineno\">  516</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00517\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00517\" name=\"l00517\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01317.html#ab78e3701e650dfc99c2beb39c7e611a4\">  517</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01317.html#ab78e3701e650dfc99c2beb39c7e611a4\">EvalPatches</a>(</div>\n-<div class=\"line\"><a id=\"l00518\" name=\"l00518\"></a><span class=\"lineno\">  518</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00519\" name=\"l00519\"></a><span class=\"lineno\">  519</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00520\" name=\"l00520\"></a><span class=\"lineno\">  520</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00521\" name=\"l00521\"></a><span class=\"lineno\">  521</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00522\" name=\"l00522\"></a><span class=\"lineno\">  522</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00523\" name=\"l00523\"></a><span class=\"lineno\">  523</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l00524\" name=\"l00524\"></a><span class=\"lineno\">  524</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l00525\" name=\"l00525\"></a><span class=\"lineno\">  525</span>        <a class=\"code hl_class\" href=\"a01317.html\">TbbEvaluator</a> <span class=\"keyword\">const</span> *instance = NULL,</div>\n-<div class=\"line\"><a id=\"l00526\" name=\"l00526\"></a><span class=\"lineno\">  526</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l00527\" name=\"l00527\"></a><span class=\"lineno\">  527</span> </div>\n-<div class=\"line\"><a id=\"l00528\" name=\"l00528\"></a><span class=\"lineno\">  528</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00529\" name=\"l00529\"></a><span class=\"lineno\">  529</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00530\" name=\"l00530\"></a><span class=\"lineno\">  530</span> </div>\n-<div class=\"line\"><a id=\"l00531\" name=\"l00531\"></a><span class=\"lineno\">  531</span>        <span class=\"comment\">// XXX: PatchCoords is somewhat abusing vertex primvar buffer interop.</span></div>\n-<div class=\"line\"><a id=\"l00532\" name=\"l00532\"></a><span class=\"lineno\">  532</span>        <span class=\"comment\">//      ideally all buffer classes should have templated by datatype</span></div>\n-<div class=\"line\"><a id=\"l00533\" name=\"l00533\"></a><span class=\"lineno\">  533</span>        <span class=\"comment\">//      so that downcast isn&#39;t needed there.</span></div>\n-<div class=\"line\"><a id=\"l00534\" name=\"l00534\"></a><span class=\"lineno\">  534</span>        <span class=\"comment\">//      (e.g. Osd::CpuBuffer&lt;PatchCoord&gt; )</span></div>\n-<div class=\"line\"><a id=\"l00535\" name=\"l00535\"></a><span class=\"lineno\">  535</span>        <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00536\" name=\"l00536\"></a><span class=\"lineno\">  536</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01317.html#a16b9e4c7e07040ae42e3d49454393f5f\">EvalPatches</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00537\" name=\"l00537\"></a><span class=\"lineno\">  537</span>                           dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00538\" name=\"l00538\"></a><span class=\"lineno\">  538</span>                           duBuffer-&gt;BindCpuBuffer(),  duDesc,</div>\n-<div class=\"line\"><a id=\"l00539\" name=\"l00539\"></a><span class=\"lineno\">  539</span>                           dvBuffer-&gt;BindCpuBuffer(),  dvDesc,</div>\n-<div class=\"line\"><a id=\"l00540\" name=\"l00540\"></a><span class=\"lineno\">  540</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00541\" name=\"l00541\"></a><span class=\"lineno\">  541</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a>*)patchCoords-&gt;BindCpuBuffer(),</div>\n-<div class=\"line\"><a id=\"l00542\" name=\"l00542\"></a><span class=\"lineno\">  542</span>                           patchTable-&gt;GetPatchArrayBuffer(),</div>\n-<div class=\"line\"><a id=\"l00543\" name=\"l00543\"></a><span class=\"lineno\">  543</span>                           patchTable-&gt;GetPatchIndexBuffer(),</div>\n-<div class=\"line\"><a id=\"l00544\" name=\"l00544\"></a><span class=\"lineno\">  544</span>                           patchTable-&gt;GetPatchParamBuffer());</div>\n-<div class=\"line\"><a id=\"l00545\" name=\"l00545\"></a><span class=\"lineno\">  545</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00546\" name=\"l00546\"></a><span class=\"lineno\">  546</span> </div>\n-<div class=\"line\"><a id=\"l00605\" name=\"l00605\"></a><span class=\"lineno\">  605</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l00606\" name=\"l00606\"></a><span class=\"lineno\">  606</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00607\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00607\" name=\"l00607\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01317.html#a6d42209eb10894a07bcb88585b5ce2f3\">  607</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01317.html#a6d42209eb10894a07bcb88585b5ce2f3\">EvalPatches</a>(</div>\n-<div class=\"line\"><a id=\"l00608\" name=\"l00608\"></a><span class=\"lineno\">  608</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00609\" name=\"l00609\"></a><span class=\"lineno\">  609</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00610\" name=\"l00610\"></a><span class=\"lineno\">  610</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00611\" name=\"l00611\"></a><span class=\"lineno\">  611</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00612\" name=\"l00612\"></a><span class=\"lineno\">  612</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l00613\" name=\"l00613\"></a><span class=\"lineno\">  613</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l00614\" name=\"l00614\"></a><span class=\"lineno\">  614</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00615\" name=\"l00615\"></a><span class=\"lineno\">  615</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00616\" name=\"l00616\"></a><span class=\"lineno\">  616</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l00617\" name=\"l00617\"></a><span class=\"lineno\">  617</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l00618\" name=\"l00618\"></a><span class=\"lineno\">  618</span>        <a class=\"code hl_class\" href=\"a01317.html\">TbbEvaluator</a> <span class=\"keyword\">const</span> *instance = NULL,</div>\n-<div class=\"line\"><a id=\"l00619\" name=\"l00619\"></a><span class=\"lineno\">  619</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l00620\" name=\"l00620\"></a><span class=\"lineno\">  620</span> </div>\n-<div class=\"line\"><a id=\"l00621\" name=\"l00621\"></a><span class=\"lineno\">  621</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00622\" name=\"l00622\"></a><span class=\"lineno\">  622</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00623\" name=\"l00623\"></a><span class=\"lineno\">  623</span> </div>\n-<div class=\"line\"><a id=\"l00624\" name=\"l00624\"></a><span class=\"lineno\">  624</span>        <span class=\"comment\">// XXX: PatchCoords is somewhat abusing vertex primvar buffer interop.</span></div>\n-<div class=\"line\"><a id=\"l00625\" name=\"l00625\"></a><span class=\"lineno\">  625</span>        <span class=\"comment\">//      ideally all buffer classes should have templated by datatype</span></div>\n-<div class=\"line\"><a id=\"l00626\" name=\"l00626\"></a><span class=\"lineno\">  626</span>        <span class=\"comment\">//      so that downcast isn&#39;t needed there.</span></div>\n-<div class=\"line\"><a id=\"l00627\" name=\"l00627\"></a><span class=\"lineno\">  627</span>        <span class=\"comment\">//      (e.g. Osd::CpuBuffer&lt;PatchCoord&gt; )</span></div>\n-<div class=\"line\"><a id=\"l00628\" name=\"l00628\"></a><span class=\"lineno\">  628</span>        <span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00629\" name=\"l00629\"></a><span class=\"lineno\">  629</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01317.html#a16b9e4c7e07040ae42e3d49454393f5f\">EvalPatches</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00630\" name=\"l00630\"></a><span class=\"lineno\">  630</span>                           dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00631\" name=\"l00631\"></a><span class=\"lineno\">  631</span>                           duBuffer-&gt;BindCpuBuffer(),  duDesc,</div>\n-<div class=\"line\"><a id=\"l00632\" name=\"l00632\"></a><span class=\"lineno\">  632</span>                           dvBuffer-&gt;BindCpuBuffer(),  dvDesc,</div>\n-<div class=\"line\"><a id=\"l00633\" name=\"l00633\"></a><span class=\"lineno\">  633</span>                           duuBuffer-&gt;BindCpuBuffer(), duuDesc,</div>\n-<div class=\"line\"><a id=\"l00634\" name=\"l00634\"></a><span class=\"lineno\">  634</span>                           duvBuffer-&gt;BindCpuBuffer(), duvDesc,</div>\n-<div class=\"line\"><a id=\"l00635\" name=\"l00635\"></a><span class=\"lineno\">  635</span>                           dvvBuffer-&gt;BindCpuBuffer(), dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00636\" name=\"l00636\"></a><span class=\"lineno\">  636</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00637\" name=\"l00637\"></a><span class=\"lineno\">  637</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a>*)patchCoords-&gt;BindCpuBuffer(),</div>\n-<div class=\"line\"><a id=\"l00638\" name=\"l00638\"></a><span class=\"lineno\">  638</span>                           patchTable-&gt;GetPatchArrayBuffer(),</div>\n-<div class=\"line\"><a id=\"l00639\" name=\"l00639\"></a><span class=\"lineno\">  639</span>                           patchTable-&gt;GetPatchIndexBuffer(),</div>\n-<div class=\"line\"><a id=\"l00640\" name=\"l00640\"></a><span class=\"lineno\">  640</span>                           patchTable-&gt;GetPatchParamBuffer());</div>\n-<div class=\"line\"><a id=\"l00641\" name=\"l00641\"></a><span class=\"lineno\">  641</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00642\" name=\"l00642\"></a><span class=\"lineno\">  642</span> </div>\n-<div class=\"line\"><a id=\"l00670\" name=\"l00670\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01317.html#ad5b907c22dfcb943e5f25f3c16543535\">  670</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01317.html#ad5b907c22dfcb943e5f25f3c16543535\">EvalPatches</a>(</div>\n-<div class=\"line\"><a id=\"l00671\" name=\"l00671\"></a><span class=\"lineno\">  671</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00672\" name=\"l00672\"></a><span class=\"lineno\">  672</span>        <span class=\"keywordtype\">float</span> *dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00673\" name=\"l00673\"></a><span class=\"lineno\">  673</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00674\" name=\"l00674\"></a><span class=\"lineno\">  674</span>        <span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a> *patchCoords,</div>\n-<div class=\"line\"><a id=\"l00675\" name=\"l00675\"></a><span class=\"lineno\">  675</span>        <span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01325.html\">PatchArray</a> *patchArrays,</div>\n-<div class=\"line\"><a id=\"l00676\" name=\"l00676\"></a><span class=\"lineno\">  676</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> *patchIndexBuffer,</div>\n-<div class=\"line\"><a id=\"l00677\" name=\"l00677\"></a><span class=\"lineno\">  677</span>        <span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01329.html\">PatchParam</a> *patchParamBuffer);</div>\n-<div class=\"line\"><a id=\"l00678\" name=\"l00678\"></a><span class=\"lineno\">  678</span> </div>\n-<div class=\"line\"><a id=\"l00716\" name=\"l00716\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01317.html#ac1dba254bc287312f8f812113c8e8ad3\">  716</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01317.html#ac1dba254bc287312f8f812113c8e8ad3\">EvalPatches</a>(</div>\n-<div class=\"line\"><a id=\"l00717\" name=\"l00717\"></a><span class=\"lineno\">  717</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00718\" name=\"l00718\"></a><span class=\"lineno\">  718</span>        <span class=\"keywordtype\">float</span> *dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00719\" name=\"l00719\"></a><span class=\"lineno\">  719</span>        <span class=\"keywordtype\">float</span> *du,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00720\" name=\"l00720\"></a><span class=\"lineno\">  720</span>        <span class=\"keywordtype\">float</span> *dv,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00721\" name=\"l00721\"></a><span class=\"lineno\">  721</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00722\" name=\"l00722\"></a><span class=\"lineno\">  722</span>        <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a> <span class=\"keyword\">const</span> *patchCoords,</div>\n-<div class=\"line\"><a id=\"l00723\" name=\"l00723\"></a><span class=\"lineno\">  723</span>        <a class=\"code hl_struct\" href=\"a01325.html\">PatchArray</a> <span class=\"keyword\">const</span> *patchArrays,</div>\n-<div class=\"line\"><a id=\"l00724\" name=\"l00724\"></a><span class=\"lineno\">  724</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> *patchIndexBuffer,</div>\n-<div class=\"line\"><a id=\"l00725\" name=\"l00725\"></a><span class=\"lineno\">  725</span>        <a class=\"code hl_struct\" href=\"a01329.html\">PatchParam</a> <span class=\"keyword\">const</span> *patchParamBuffer);</div>\n-<div class=\"line\"><a id=\"l00726\" name=\"l00726\"></a><span class=\"lineno\">  726</span> </div>\n-<div class=\"line\"><a id=\"l00779\" name=\"l00779\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01317.html#a7b556148d6ef2e04fbe99677e3a87e91\">  779</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01317.html#a7b556148d6ef2e04fbe99677e3a87e91\">EvalPatches</a>(</div>\n-<div class=\"line\"><a id=\"l00780\" name=\"l00780\"></a><span class=\"lineno\">  780</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00781\" name=\"l00781\"></a><span class=\"lineno\">  781</span>        <span class=\"keywordtype\">float</span> *dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00782\" name=\"l00782\"></a><span class=\"lineno\">  782</span>        <span class=\"keywordtype\">float</span> *du,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00783\" name=\"l00783\"></a><span class=\"lineno\">  783</span>        <span class=\"keywordtype\">float</span> *dv,        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00784\" name=\"l00784\"></a><span class=\"lineno\">  784</span>        <span class=\"keywordtype\">float</span> *duu,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l00785\" name=\"l00785\"></a><span class=\"lineno\">  785</span>        <span class=\"keywordtype\">float</span> *duv,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l00786\" name=\"l00786\"></a><span class=\"lineno\">  786</span>        <span class=\"keywordtype\">float</span> *dvv,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00787\" name=\"l00787\"></a><span class=\"lineno\">  787</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00788\" name=\"l00788\"></a><span class=\"lineno\">  788</span>        <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a> <span class=\"keyword\">const</span> *patchCoords,</div>\n-<div class=\"line\"><a id=\"l00789\" name=\"l00789\"></a><span class=\"lineno\">  789</span>        <a class=\"code hl_struct\" href=\"a01325.html\">PatchArray</a> <span class=\"keyword\">const</span> *patchArrays,</div>\n-<div class=\"line\"><a id=\"l00790\" name=\"l00790\"></a><span class=\"lineno\">  790</span>        <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> *patchIndexBuffer,</div>\n-<div class=\"line\"><a id=\"l00791\" name=\"l00791\"></a><span class=\"lineno\">  791</span>        <a class=\"code hl_struct\" href=\"a01329.html\">PatchParam</a> <span class=\"keyword\">const</span> *patchParamBuffer);</div>\n-<div class=\"line\"><a id=\"l00792\" name=\"l00792\"></a><span class=\"lineno\">  792</span> </div>\n-<div class=\"line\"><a id=\"l00821\" name=\"l00821\"></a><span class=\"lineno\">  821</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l00822\" name=\"l00822\"></a><span class=\"lineno\">  822</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00823\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00823\" name=\"l00823\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01317.html#afb857c7493452a91389f40021a03c45d\">  823</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01317.html#afb857c7493452a91389f40021a03c45d\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l00824\" name=\"l00824\"></a><span class=\"lineno\">  824</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00825\" name=\"l00825\"></a><span class=\"lineno\">  825</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00826\" name=\"l00826\"></a><span class=\"lineno\">  826</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00827\" name=\"l00827\"></a><span class=\"lineno\">  827</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l00828\" name=\"l00828\"></a><span class=\"lineno\">  828</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l00829\" name=\"l00829\"></a><span class=\"lineno\">  829</span>        <a class=\"code hl_class\" href=\"a01317.html\">TbbEvaluator</a> <span class=\"keyword\">const</span> *instance = NULL,</div>\n-<div class=\"line\"><a id=\"l00830\" name=\"l00830\"></a><span class=\"lineno\">  830</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l00831\" name=\"l00831\"></a><span class=\"lineno\">  831</span> </div>\n-<div class=\"line\"><a id=\"l00832\" name=\"l00832\"></a><span class=\"lineno\">  832</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00833\" name=\"l00833\"></a><span class=\"lineno\">  833</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00834\" name=\"l00834\"></a><span class=\"lineno\">  834</span> </div>\n-<div class=\"line\"><a id=\"l00835\" name=\"l00835\"></a><span class=\"lineno\">  835</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01317.html#a16b9e4c7e07040ae42e3d49454393f5f\">EvalPatches</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00836\" name=\"l00836\"></a><span class=\"lineno\">  836</span>                           dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00837\" name=\"l00837\"></a><span class=\"lineno\">  837</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00838\" name=\"l00838\"></a><span class=\"lineno\">  838</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a>*)patchCoords-&gt;BindCpuBuffer(),</div>\n-<div class=\"line\"><a id=\"l00839\" name=\"l00839\"></a><span class=\"lineno\">  839</span>                           patchTable-&gt;GetVaryingPatchArrayBuffer(),</div>\n-<div class=\"line\"><a id=\"l00840\" name=\"l00840\"></a><span class=\"lineno\">  840</span>                           patchTable-&gt;GetVaryingPatchIndexBuffer(),</div>\n-<div class=\"line\"><a id=\"l00841\" name=\"l00841\"></a><span class=\"lineno\">  841</span>                           patchTable-&gt;GetPatchParamBuffer());</div>\n-<div class=\"line\"><a id=\"l00842\" name=\"l00842\"></a><span class=\"lineno\">  842</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00843\" name=\"l00843\"></a><span class=\"lineno\">  843</span> </div>\n-<div class=\"line\"><a id=\"l00884\" name=\"l00884\"></a><span class=\"lineno\">  884</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l00885\" name=\"l00885\"></a><span class=\"lineno\">  885</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00886\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00886\" name=\"l00886\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01317.html#a52f3dbfeaec0360f92ac83464c7c2e6c\">  886</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01317.html#a52f3dbfeaec0360f92ac83464c7c2e6c\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l00887\" name=\"l00887\"></a><span class=\"lineno\">  887</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00888\" name=\"l00888\"></a><span class=\"lineno\">  888</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00889\" name=\"l00889\"></a><span class=\"lineno\">  889</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00890\" name=\"l00890\"></a><span class=\"lineno\">  890</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00891\" name=\"l00891\"></a><span class=\"lineno\">  891</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00892\" name=\"l00892\"></a><span class=\"lineno\">  892</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l00893\" name=\"l00893\"></a><span class=\"lineno\">  893</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l00894\" name=\"l00894\"></a><span class=\"lineno\">  894</span>        <a class=\"code hl_class\" href=\"a01317.html\">TbbEvaluator</a> <span class=\"keyword\">const</span> *instance = NULL,</div>\n-<div class=\"line\"><a id=\"l00895\" name=\"l00895\"></a><span class=\"lineno\">  895</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l00896\" name=\"l00896\"></a><span class=\"lineno\">  896</span> </div>\n-<div class=\"line\"><a id=\"l00897\" name=\"l00897\"></a><span class=\"lineno\">  897</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00898\" name=\"l00898\"></a><span class=\"lineno\">  898</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00899\" name=\"l00899\"></a><span class=\"lineno\">  899</span> </div>\n-<div class=\"line\"><a id=\"l00900\" name=\"l00900\"></a><span class=\"lineno\">  900</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01317.html#a16b9e4c7e07040ae42e3d49454393f5f\">EvalPatches</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00901\" name=\"l00901\"></a><span class=\"lineno\">  901</span>                           dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00902\" name=\"l00902\"></a><span class=\"lineno\">  902</span>                           duBuffer-&gt;BindCpuBuffer(),  duDesc,</div>\n-<div class=\"line\"><a id=\"l00903\" name=\"l00903\"></a><span class=\"lineno\">  903</span>                           dvBuffer-&gt;BindCpuBuffer(),  dvDesc,</div>\n-<div class=\"line\"><a id=\"l00904\" name=\"l00904\"></a><span class=\"lineno\">  904</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00905\" name=\"l00905\"></a><span class=\"lineno\">  905</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a>*)patchCoords-&gt;BindCpuBuffer(),</div>\n-<div class=\"line\"><a id=\"l00906\" name=\"l00906\"></a><span class=\"lineno\">  906</span>                           patchTable-&gt;GetVaryingPatchArrayBuffer(),</div>\n-<div class=\"line\"><a id=\"l00907\" name=\"l00907\"></a><span class=\"lineno\">  907</span>                           patchTable-&gt;GetVaryingPatchIndexBuffer(),</div>\n-<div class=\"line\"><a id=\"l00908\" name=\"l00908\"></a><span class=\"lineno\">  908</span>                           patchTable-&gt;GetPatchParamBuffer());</div>\n-<div class=\"line\"><a id=\"l00909\" name=\"l00909\"></a><span class=\"lineno\">  909</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00910\" name=\"l00910\"></a><span class=\"lineno\">  910</span> </div>\n-<div class=\"line\"><a id=\"l00969\" name=\"l00969\"></a><span class=\"lineno\">  969</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l00970\" name=\"l00970\"></a><span class=\"lineno\">  970</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00971\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00971\" name=\"l00971\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01317.html#aa3171fe53d673ceca93eb75372c3d7c4\">  971</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01317.html#aa3171fe53d673ceca93eb75372c3d7c4\">EvalPatchesVarying</a>(</div>\n-<div class=\"line\"><a id=\"l00972\" name=\"l00972\"></a><span class=\"lineno\">  972</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00973\" name=\"l00973\"></a><span class=\"lineno\">  973</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00974\" name=\"l00974\"></a><span class=\"lineno\">  974</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00975\" name=\"l00975\"></a><span class=\"lineno\">  975</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00976\" name=\"l00976\"></a><span class=\"lineno\">  976</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l00977\" name=\"l00977\"></a><span class=\"lineno\">  977</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l00978\" name=\"l00978\"></a><span class=\"lineno\">  978</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00979\" name=\"l00979\"></a><span class=\"lineno\">  979</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00980\" name=\"l00980\"></a><span class=\"lineno\">  980</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l00981\" name=\"l00981\"></a><span class=\"lineno\">  981</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l00982\" name=\"l00982\"></a><span class=\"lineno\">  982</span>        <a class=\"code hl_class\" href=\"a01317.html\">TbbEvaluator</a> <span class=\"keyword\">const</span> *instance = NULL,</div>\n-<div class=\"line\"><a id=\"l00983\" name=\"l00983\"></a><span class=\"lineno\">  983</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l00984\" name=\"l00984\"></a><span class=\"lineno\">  984</span> </div>\n-<div class=\"line\"><a id=\"l00985\" name=\"l00985\"></a><span class=\"lineno\">  985</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00986\" name=\"l00986\"></a><span class=\"lineno\">  986</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l00987\" name=\"l00987\"></a><span class=\"lineno\">  987</span> </div>\n-<div class=\"line\"><a id=\"l00988\" name=\"l00988\"></a><span class=\"lineno\">  988</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01317.html#a16b9e4c7e07040ae42e3d49454393f5f\">EvalPatches</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l00989\" name=\"l00989\"></a><span class=\"lineno\">  989</span>                           dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l00990\" name=\"l00990\"></a><span class=\"lineno\">  990</span>                           duBuffer-&gt;BindCpuBuffer(),  duDesc,</div>\n-<div class=\"line\"><a id=\"l00991\" name=\"l00991\"></a><span class=\"lineno\">  991</span>                           dvBuffer-&gt;BindCpuBuffer(),  dvDesc,</div>\n-<div class=\"line\"><a id=\"l00992\" name=\"l00992\"></a><span class=\"lineno\">  992</span>                           duuBuffer-&gt;BindCpuBuffer(), duuDesc,</div>\n-<div class=\"line\"><a id=\"l00993\" name=\"l00993\"></a><span class=\"lineno\">  993</span>                           duvBuffer-&gt;BindCpuBuffer(), duvDesc,</div>\n-<div class=\"line\"><a id=\"l00994\" name=\"l00994\"></a><span class=\"lineno\">  994</span>                           dvvBuffer-&gt;BindCpuBuffer(), dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00995\" name=\"l00995\"></a><span class=\"lineno\">  995</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00996\" name=\"l00996\"></a><span class=\"lineno\">  996</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a>*)patchCoords-&gt;BindCpuBuffer(),</div>\n-<div class=\"line\"><a id=\"l00997\" name=\"l00997\"></a><span class=\"lineno\">  997</span>                           patchTable-&gt;GetVaryingPatchArrayBuffer(),</div>\n-<div class=\"line\"><a id=\"l00998\" name=\"l00998\"></a><span class=\"lineno\">  998</span>                           patchTable-&gt;GetVaryingPatchIndexBuffer(),</div>\n-<div class=\"line\"><a id=\"l00999\" name=\"l00999\"></a><span class=\"lineno\">  999</span>                           patchTable-&gt;GetPatchParamBuffer());</div>\n-<div class=\"line\"><a id=\"l01000\" name=\"l01000\"></a><span class=\"lineno\"> 1000</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01001\" name=\"l01001\"></a><span class=\"lineno\"> 1001</span> </div>\n-<div class=\"line\"><a id=\"l01032\" name=\"l01032\"></a><span class=\"lineno\"> 1032</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01033\" name=\"l01033\"></a><span class=\"lineno\"> 1033</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01034\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01034\" name=\"l01034\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01317.html#abeb5f95d1536bd3a7cadf440c2db96af\"> 1034</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01317.html#abeb5f95d1536bd3a7cadf440c2db96af\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01035\" name=\"l01035\"></a><span class=\"lineno\"> 1035</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01036\" name=\"l01036\"></a><span class=\"lineno\"> 1036</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01037\" name=\"l01037\"></a><span class=\"lineno\"> 1037</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01038\" name=\"l01038\"></a><span class=\"lineno\"> 1038</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01039\" name=\"l01039\"></a><span class=\"lineno\"> 1039</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l01040\" name=\"l01040\"></a><span class=\"lineno\"> 1040</span>        <span class=\"keywordtype\">int</span> fvarChannel,</div>\n-<div class=\"line\"><a id=\"l01041\" name=\"l01041\"></a><span class=\"lineno\"> 1041</span>        <a class=\"code hl_class\" href=\"a01317.html\">TbbEvaluator</a> <span class=\"keyword\">const</span> *instance = NULL,</div>\n-<div class=\"line\"><a id=\"l01042\" name=\"l01042\"></a><span class=\"lineno\"> 1042</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l01043\" name=\"l01043\"></a><span class=\"lineno\"> 1043</span> </div>\n-<div class=\"line\"><a id=\"l01044\" name=\"l01044\"></a><span class=\"lineno\"> 1044</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l01045\" name=\"l01045\"></a><span class=\"lineno\"> 1045</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l01046\" name=\"l01046\"></a><span class=\"lineno\"> 1046</span> </div>\n-<div class=\"line\"><a id=\"l01047\" name=\"l01047\"></a><span class=\"lineno\"> 1047</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01317.html#a16b9e4c7e07040ae42e3d49454393f5f\">EvalPatches</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01048\" name=\"l01048\"></a><span class=\"lineno\"> 1048</span>                           dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l01049\" name=\"l01049\"></a><span class=\"lineno\"> 1049</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01050\" name=\"l01050\"></a><span class=\"lineno\"> 1050</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a>*)patchCoords-&gt;BindCpuBuffer(),</div>\n-<div class=\"line\"><a id=\"l01051\" name=\"l01051\"></a><span class=\"lineno\"> 1051</span>                           patchTable-&gt;GetFVarPatchArrayBuffer(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l01052\" name=\"l01052\"></a><span class=\"lineno\"> 1052</span>                           patchTable-&gt;GetFVarPatchIndexBuffer(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l01053\" name=\"l01053\"></a><span class=\"lineno\"> 1053</span>                           patchTable-&gt;GetFVarPatchParamBuffer(fvarChannel));</div>\n-<div class=\"line\"><a id=\"l01054\" name=\"l01054\"></a><span class=\"lineno\"> 1054</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01055\" name=\"l01055\"></a><span class=\"lineno\"> 1055</span> </div>\n-<div class=\"line\"><a id=\"l01098\" name=\"l01098\"></a><span class=\"lineno\"> 1098</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01099\" name=\"l01099\"></a><span class=\"lineno\"> 1099</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01100\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01100\" name=\"l01100\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01317.html#aaa27f47cddc2a42796014b8da00633fd\"> 1100</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01317.html#aaa27f47cddc2a42796014b8da00633fd\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01101\" name=\"l01101\"></a><span class=\"lineno\"> 1101</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01102\" name=\"l01102\"></a><span class=\"lineno\"> 1102</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01103\" name=\"l01103\"></a><span class=\"lineno\"> 1103</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l01104\" name=\"l01104\"></a><span class=\"lineno\"> 1104</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l01105\" name=\"l01105\"></a><span class=\"lineno\"> 1105</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01106\" name=\"l01106\"></a><span class=\"lineno\"> 1106</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01107\" name=\"l01107\"></a><span class=\"lineno\"> 1107</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l01108\" name=\"l01108\"></a><span class=\"lineno\"> 1108</span>        <span class=\"keywordtype\">int</span> fvarChannel,</div>\n-<div class=\"line\"><a id=\"l01109\" name=\"l01109\"></a><span class=\"lineno\"> 1109</span>        <a class=\"code hl_class\" href=\"a01317.html\">TbbEvaluator</a> <span class=\"keyword\">const</span> *instance = NULL,</div>\n-<div class=\"line\"><a id=\"l01110\" name=\"l01110\"></a><span class=\"lineno\"> 1110</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l01111\" name=\"l01111\"></a><span class=\"lineno\"> 1111</span> </div>\n-<div class=\"line\"><a id=\"l01112\" name=\"l01112\"></a><span class=\"lineno\"> 1112</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l01113\" name=\"l01113\"></a><span class=\"lineno\"> 1113</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l01114\" name=\"l01114\"></a><span class=\"lineno\"> 1114</span> </div>\n-<div class=\"line\"><a id=\"l01115\" name=\"l01115\"></a><span class=\"lineno\"> 1115</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01317.html#a16b9e4c7e07040ae42e3d49454393f5f\">EvalPatches</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01116\" name=\"l01116\"></a><span class=\"lineno\"> 1116</span>                           dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l01117\" name=\"l01117\"></a><span class=\"lineno\"> 1117</span>                           duBuffer-&gt;BindCpuBuffer(),  duDesc,</div>\n-<div class=\"line\"><a id=\"l01118\" name=\"l01118\"></a><span class=\"lineno\"> 1118</span>                           dvBuffer-&gt;BindCpuBuffer(),  dvDesc,</div>\n-<div class=\"line\"><a id=\"l01119\" name=\"l01119\"></a><span class=\"lineno\"> 1119</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01120\" name=\"l01120\"></a><span class=\"lineno\"> 1120</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a>*)patchCoords-&gt;BindCpuBuffer(),</div>\n-<div class=\"line\"><a id=\"l01121\" name=\"l01121\"></a><span class=\"lineno\"> 1121</span>                           patchTable-&gt;GetFVarPatchArrayBuffer(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l01122\" name=\"l01122\"></a><span class=\"lineno\"> 1122</span>                           patchTable-&gt;GetFVarPatchIndexBuffer(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l01123\" name=\"l01123\"></a><span class=\"lineno\"> 1123</span>                           patchTable-&gt;GetFVarPatchParamBuffer(fvarChannel));</div>\n-<div class=\"line\"><a id=\"l01124\" name=\"l01124\"></a><span class=\"lineno\"> 1124</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01125\" name=\"l01125\"></a><span class=\"lineno\"> 1125</span> </div>\n-<div class=\"line\"><a id=\"l01186\" name=\"l01186\"></a><span class=\"lineno\"> 1186</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> SRC_BUFFER, <span class=\"keyword\">typename</span> DST_BUFFER,</div>\n-<div class=\"line\"><a id=\"l01187\" name=\"l01187\"></a><span class=\"lineno\"> 1187</span>              <span class=\"keyword\">typename</span> PATCHCOORD_BUFFER, <span class=\"keyword\">typename</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen01188\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l01188\" name=\"l01188\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01317.html#af8ac6af5dd3993a38da263eec54d83b0\"> 1188</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01317.html#af8ac6af5dd3993a38da263eec54d83b0\">EvalPatchesFaceVarying</a>(</div>\n-<div class=\"line\"><a id=\"l01189\" name=\"l01189\"></a><span class=\"lineno\"> 1189</span>        SRC_BUFFER *srcBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l01190\" name=\"l01190\"></a><span class=\"lineno\"> 1190</span>        DST_BUFFER *dstBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l01191\" name=\"l01191\"></a><span class=\"lineno\"> 1191</span>        DST_BUFFER *duBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l01192\" name=\"l01192\"></a><span class=\"lineno\"> 1192</span>        DST_BUFFER *dvBuffer,  <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l01193\" name=\"l01193\"></a><span class=\"lineno\"> 1193</span>        DST_BUFFER *duuBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l01194\" name=\"l01194\"></a><span class=\"lineno\"> 1194</span>        DST_BUFFER *duvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l01195\" name=\"l01195\"></a><span class=\"lineno\"> 1195</span>        DST_BUFFER *dvvBuffer, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l01196\" name=\"l01196\"></a><span class=\"lineno\"> 1196</span>        <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01197\" name=\"l01197\"></a><span class=\"lineno\"> 1197</span>        PATCHCOORD_BUFFER *patchCoords,</div>\n-<div class=\"line\"><a id=\"l01198\" name=\"l01198\"></a><span class=\"lineno\"> 1198</span>        PATCH_TABLE *patchTable,</div>\n-<div class=\"line\"><a id=\"l01199\" name=\"l01199\"></a><span class=\"lineno\"> 1199</span>        <span class=\"keywordtype\">int</span> fvarChannel,</div>\n-<div class=\"line\"><a id=\"l01200\" name=\"l01200\"></a><span class=\"lineno\"> 1200</span>        <a class=\"code hl_class\" href=\"a01317.html\">TbbEvaluator</a> <span class=\"keyword\">const</span> *instance = NULL,</div>\n-<div class=\"line\"><a id=\"l01201\" name=\"l01201\"></a><span class=\"lineno\"> 1201</span>        <span class=\"keywordtype\">void</span> * deviceContext = NULL) {</div>\n-<div class=\"line\"><a id=\"l01202\" name=\"l01202\"></a><span class=\"lineno\"> 1202</span> </div>\n-<div class=\"line\"><a id=\"l01203\" name=\"l01203\"></a><span class=\"lineno\"> 1203</span>        (void)instance;       <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l01204\" name=\"l01204\"></a><span class=\"lineno\"> 1204</span>        (void)deviceContext;  <span class=\"comment\">// unused</span></div>\n-<div class=\"line\"><a id=\"l01205\" name=\"l01205\"></a><span class=\"lineno\"> 1205</span> </div>\n-<div class=\"line\"><a id=\"l01206\" name=\"l01206\"></a><span class=\"lineno\"> 1206</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01317.html#a16b9e4c7e07040ae42e3d49454393f5f\">EvalPatches</a>(srcBuffer-&gt;BindCpuBuffer(), srcDesc,</div>\n-<div class=\"line\"><a id=\"l01207\" name=\"l01207\"></a><span class=\"lineno\"> 1207</span>                           dstBuffer-&gt;BindCpuBuffer(), dstDesc,</div>\n-<div class=\"line\"><a id=\"l01208\" name=\"l01208\"></a><span class=\"lineno\"> 1208</span>                           duBuffer-&gt;BindCpuBuffer(),  duDesc,</div>\n-<div class=\"line\"><a id=\"l01209\" name=\"l01209\"></a><span class=\"lineno\"> 1209</span>                           dvBuffer-&gt;BindCpuBuffer(),  dvDesc,</div>\n-<div class=\"line\"><a id=\"l01210\" name=\"l01210\"></a><span class=\"lineno\"> 1210</span>                           duuBuffer-&gt;BindCpuBuffer(), duuDesc,</div>\n-<div class=\"line\"><a id=\"l01211\" name=\"l01211\"></a><span class=\"lineno\"> 1211</span>                           duvBuffer-&gt;BindCpuBuffer(), duvDesc,</div>\n-<div class=\"line\"><a id=\"l01212\" name=\"l01212\"></a><span class=\"lineno\"> 1212</span>                           dvvBuffer-&gt;BindCpuBuffer(), dvvDesc,</div>\n-<div class=\"line\"><a id=\"l01213\" name=\"l01213\"></a><span class=\"lineno\"> 1213</span>                           numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l01214\" name=\"l01214\"></a><span class=\"lineno\"> 1214</span>                           (<span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a>*)patchCoords-&gt;BindCpuBuffer(),</div>\n-<div class=\"line\"><a id=\"l01215\" name=\"l01215\"></a><span class=\"lineno\"> 1215</span>                           patchTable-&gt;GetFVarPatchArrayBuffer(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l01216\" name=\"l01216\"></a><span class=\"lineno\"> 1216</span>                           patchTable-&gt;GetFVarPatchIndexBuffer(fvarChannel),</div>\n-<div class=\"line\"><a id=\"l01217\" name=\"l01217\"></a><span class=\"lineno\"> 1217</span>                           patchTable-&gt;GetFVarPatchParamBuffer(fvarChannel));</div>\n-<div class=\"line\"><a id=\"l01218\" name=\"l01218\"></a><span class=\"lineno\"> 1218</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l01219\" name=\"l01219\"></a><span class=\"lineno\"> 1219</span> </div>\n-<div class=\"line\"><a id=\"l01225\" name=\"l01225\"></a><span class=\"lineno\"> 1225</span> </div>\n-<div class=\"line\"><a id=\"l01227\" name=\"l01227\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01317.html#a9689407af718de4263562bb3a760c1dd\"> 1227</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01317.html#a9689407af718de4263562bb3a760c1dd\">Synchronize</a>(<span class=\"keywordtype\">void</span> *deviceContext = NULL);</div>\n-<div class=\"line\"><a id=\"l01228\" name=\"l01228\"></a><span class=\"lineno\"> 1228</span> </div>\n-<div class=\"line\"><a id=\"l01233\" name=\"l01233\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01317.html#ad58f2120e84fdd3f92d7cd861e97822d\"> 1233</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01317.html#ad58f2120e84fdd3f92d7cd861e97822d\">SetNumThreads</a>(<span class=\"keywordtype\">int</span> numThreads);</div>\n-<div class=\"line\"><a id=\"l01234\" name=\"l01234\"></a><span class=\"lineno\"> 1234</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l01235\" name=\"l01235\"></a><span class=\"lineno\"> 1235</span> </div>\n-<div class=\"line\"><a id=\"l01236\" name=\"l01236\"></a><span class=\"lineno\"> 1236</span> </div>\n-<div class=\"line\"><a id=\"l01237\" name=\"l01237\"></a><span class=\"lineno\"> 1237</span>}  <span class=\"comment\">// end namespace Osd</span></div>\n-<div class=\"line\"><a id=\"l01238\" name=\"l01238\"></a><span class=\"lineno\"> 1238</span> </div>\n-<div class=\"line\"><a id=\"l01239\" name=\"l01239\"></a><span class=\"lineno\"> 1239</span>}  <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l01240\" name=\"l01240\"></a><span class=\"lineno\"> 1240</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l01241\" name=\"l01241\"></a><span class=\"lineno\"> 1241</span> </div>\n-<div class=\"line\"><a id=\"l01242\" name=\"l01242\"></a><span class=\"lineno\"> 1242</span>}  <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l01243\" name=\"l01243\"></a><span class=\"lineno\"> 1243</span> </div>\n-<div class=\"line\"><a id=\"l01244\" name=\"l01244\"></a><span class=\"lineno\"> 1244</span> </div>\n-<div class=\"line\"><a id=\"l01245\" name=\"l01245\"></a><span class=\"lineno\"> 1245</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_TBB_EVALUATOR_H</span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa01141_html\"><div class=\"ttname\"><a href=\"a01141.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::BufferDescriptor</a></div><div class=\"ttdoc\">BufferDescriptor is a struct which describes buffer elements in interleaved data buffers....</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00866_source.html#l00061\">bufferDescriptor.h:61</a></div></div>\n-<div class=\"ttc\" id=\"aa01317_html\"><div class=\"ttname\"><a href=\"a01317.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00857_source.html#l00039\">tbbEvaluator.h:39</a></div></div>\n-<div class=\"ttc\" id=\"aa01317_html_a1083776ed758e8a1ebd8915eb68c5010\"><div class=\"ttname\"><a href=\"a01317.html#a1083776ed758e8a1ebd8915eb68c5010\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, STENCIL_TABLE const *stencilTable, TbbEvaluator const *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic static eval stencils function. This function has a same signature as other device kernels hav...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00857_source.html#l00072\">tbbEvaluator.h:72</a></div></div>\n-<div class=\"ttc\" id=\"aa01317_html_a16b9e4c7e07040ae42e3d49454393f5f\"><div class=\"ttname\"><a href=\"a01317.html#a16b9e4c7e07040ae42e3d49454393f5f\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, TbbEvaluator const *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00857_source.html#l00454\">tbbEvaluator.h:454</a></div></div>\n-<div class=\"ttc\" id=\"aa01317_html_a3c5d150e67161bce880678f16c11f579\"><div class=\"ttname\"><a href=\"a01317.html#a3c5d150e67161bce880678f16c11f579\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, STENCIL_TABLE const *stencilTable, const TbbEvaluator *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic static eval stencils function with derivatives. This function has a same signature as other d...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00857_source.html#l00303\">tbbEvaluator.h:303</a></div></div>\n-<div class=\"ttc\" id=\"aa01317_html_a4345e3659b7fb82f23dd51c688179ce3\"><div class=\"ttname\"><a href=\"a01317.html#a4345e3659b7fb82f23dd51c688179ce3\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(const float *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, const int *sizes, const int *offsets, const int *indices, const float *weights, int start, int end)</div><div class=\"ttdoc\">Static eval stencils function which takes raw CPU pointers for input and output.</div></div>\n-<div class=\"ttc\" id=\"aa01317_html_a52f3dbfeaec0360f92ac83464c7c2e6c\"><div class=\"ttname\"><a href=\"a01317.html#a52f3dbfeaec0360f92ac83464c7c2e6c\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, TbbEvaluator const *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00857_source.html#l00886\">tbbEvaluator.h:886</a></div></div>\n-<div class=\"ttc\" id=\"aa01317_html_a6d42209eb10894a07bcb88585b5ce2f3\"><div class=\"ttname\"><a href=\"a01317.html#a6d42209eb10894a07bcb88585b5ce2f3\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, TbbEvaluator const *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function with derivatives. This function has a same signature as other device kern...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00857_source.html#l00607\">tbbEvaluator.h:607</a></div></div>\n-<div class=\"ttc\" id=\"aa01317_html_a6daed6135a40cda2daf6c6ea2047b330\"><div class=\"ttname\"><a href=\"a01317.html#a6daed6135a40cda2daf6c6ea2047b330\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(const float *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, float *du, BufferDescriptor const &amp;duDesc, float *dv, BufferDescriptor const &amp;dvDesc, const int *sizes, const int *offsets, const int *indices, const float *weights, const float *duWeights, const float *dvWeights, int start, int end)</div><div class=\"ttdoc\">Static eval stencils function with derivatives, which takes raw CPU pointers for input and output.</div></div>\n-<div class=\"ttc\" id=\"aa01317_html_a76707de0a89ab94f15ad4b2c398a2c23\"><div class=\"ttname\"><a href=\"a01317.html#a76707de0a89ab94f15ad4b2c398a2c23\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(const float *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, float *du, BufferDescriptor const &amp;duDesc, float *dv, BufferDescriptor const &amp;dvDesc, float *duu, BufferDescriptor const &amp;duuDesc, float *duv, BufferDescriptor const &amp;duvDesc, float *dvv, BufferDescriptor const &amp;dvvDesc, const int *sizes, const int *offsets, const int *indices, const float *weights, const float *duWeights, const float *dvWeights, const float *duuWeights, const float *duvWeights, const float *dvvWeights, int start, int end)</div><div class=\"ttdoc\">Static eval stencils function with derivatives, which takes raw CPU pointers for input and output.</div></div>\n-<div class=\"ttc\" id=\"aa01317_html_a7b556148d6ef2e04fbe99677e3a87e91\"><div class=\"ttname\"><a href=\"a01317.html#a7b556148d6ef2e04fbe99677e3a87e91\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(const float *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, float *du, BufferDescriptor const &amp;duDesc, float *dv, BufferDescriptor const &amp;dvDesc, float *duu, BufferDescriptor const &amp;duuDesc, float *duv, BufferDescriptor const &amp;duvDesc, float *dvv, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PatchCoord const *patchCoords, PatchArray const *patchArrays, const int *patchIndexBuffer, PatchParam const *patchParamBuffer)</div><div class=\"ttdoc\">Static limit eval function. It takes an array of PatchCoord and evaluate limit values on given PatchT...</div></div>\n-<div class=\"ttc\" id=\"aa01317_html_a9689407af718de4263562bb3a760c1dd\"><div class=\"ttname\"><a href=\"a01317.html#a9689407af718de4263562bb3a760c1dd\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::Synchronize</a></div><div class=\"ttdeci\">static void Synchronize(void *deviceContext=NULL)</div><div class=\"ttdoc\">synchronize all asynchronous computation invoked on this device.</div></div>\n-<div class=\"ttc\" id=\"aa01317_html_aa3171fe53d673ceca93eb75372c3d7c4\"><div class=\"ttname\"><a href=\"a01317.html#aa3171fe53d673ceca93eb75372c3d7c4\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, TbbEvaluator const *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00857_source.html#l00971\">tbbEvaluator.h:971</a></div></div>\n-<div class=\"ttc\" id=\"aa01317_html_aaa27f47cddc2a42796014b8da00633fd\"><div class=\"ttname\"><a href=\"a01317.html#aaa27f47cddc2a42796014b8da00633fd\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel, TbbEvaluator const *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00857_source.html#l01100\">tbbEvaluator.h:1100</a></div></div>\n-<div class=\"ttc\" id=\"aa01317_html_ab78e3701e650dfc99c2beb39c7e611a4\"><div class=\"ttname\"><a href=\"a01317.html#ab78e3701e650dfc99c2beb39c7e611a4\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, TbbEvaluator const *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function with derivatives. This function has a same signature as other device kern...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00857_source.html#l00517\">tbbEvaluator.h:517</a></div></div>\n-<div class=\"ttc\" id=\"aa01317_html_abeb5f95d1536bd3a7cadf440c2db96af\"><div class=\"ttname\"><a href=\"a01317.html#abeb5f95d1536bd3a7cadf440c2db96af\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel, TbbEvaluator const *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00857_source.html#l01034\">tbbEvaluator.h:1034</a></div></div>\n-<div class=\"ttc\" id=\"aa01317_html_ac1dba254bc287312f8f812113c8e8ad3\"><div class=\"ttname\"><a href=\"a01317.html#ac1dba254bc287312f8f812113c8e8ad3\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(const float *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, float *du, BufferDescriptor const &amp;duDesc, float *dv, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PatchCoord const *patchCoords, PatchArray const *patchArrays, const int *patchIndexBuffer, PatchParam const *patchParamBuffer)</div><div class=\"ttdoc\">Static limit eval function. It takes an array of PatchCoord and evaluate limit values on given PatchT...</div></div>\n-<div class=\"ttc\" id=\"aa01317_html_ad58f2120e84fdd3f92d7cd861e97822d\"><div class=\"ttname\"><a href=\"a01317.html#ad58f2120e84fdd3f92d7cd861e97822d\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::SetNumThreads</a></div><div class=\"ttdeci\">static void SetNumThreads(int numThreads)</div><div class=\"ttdoc\">Deprecated. Client code should initialize TBB.</div></div>\n-<div class=\"ttc\" id=\"aa01317_html_ad5b907c22dfcb943e5f25f3c16543535\"><div class=\"ttname\"><a href=\"a01317.html#ad5b907c22dfcb943e5f25f3c16543535\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::EvalPatches</a></div><div class=\"ttdeci\">static bool EvalPatches(const float *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, int numPatchCoords, const PatchCoord *patchCoords, const PatchArray *patchArrays, const int *patchIndexBuffer, const PatchParam *patchParamBuffer)</div><div class=\"ttdoc\">Static limit eval function. It takes an array of PatchCoord and evaluate limit values on given PatchT...</div></div>\n-<div class=\"ttc\" id=\"aa01317_html_af04c6d999c9f014e93711ceb9097e2a0\"><div class=\"ttname\"><a href=\"a01317.html#af04c6d999c9f014e93711ceb9097e2a0\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::EvalStencils</a></div><div class=\"ttdeci\">static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, STENCIL_TABLE const *stencilTable, const TbbEvaluator *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic static eval stencils function with derivatives. This function has a same signature as other d...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00857_source.html#l00168\">tbbEvaluator.h:168</a></div></div>\n-<div class=\"ttc\" id=\"aa01317_html_af8ac6af5dd3993a38da263eec54d83b0\"><div class=\"ttname\"><a href=\"a01317.html#af8ac6af5dd3993a38da263eec54d83b0\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::EvalPatchesFaceVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel, TbbEvaluator const *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00857_source.html#l01188\">tbbEvaluator.h:1188</a></div></div>\n-<div class=\"ttc\" id=\"aa01317_html_afb857c7493452a91389f40021a03c45d\"><div class=\"ttname\"><a href=\"a01317.html#afb857c7493452a91389f40021a03c45d\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::EvalPatchesVarying</a></div><div class=\"ttdeci\">static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, TbbEvaluator const *instance=NULL, void *deviceContext=NULL)</div><div class=\"ttdoc\">Generic limit eval function. This function has a same signature as other device kernels have so that ...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00857_source.html#l00823\">tbbEvaluator.h:823</a></div></div>\n-<div class=\"ttc\" id=\"aa01321_html\"><div class=\"ttname\"><a href=\"a01321.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchCoord</a></div><div class=\"ttdoc\">Coordinates set on a patch table.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00042\">types.h:42</a></div></div>\n-<div class=\"ttc\" id=\"aa01325_html\"><div class=\"ttname\"><a href=\"a01325.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchArray</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00066\">types.h:66</a></div></div>\n-<div class=\"ttc\" id=\"aa01329_html\"><div class=\"ttname\"><a href=\"a01329.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchParam</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00127\">types.h:127</a></div></div>\n+<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#adb4f93fd5ebd3f74793dd8c7bfa4d5f5\">  168</a></span><a class=\"code hl_function\" href=\"a00973.html#a881bd183b2e330c490fcce5caf3ef433\">PatchDescriptor::GetNumFVarControlVertices</a>( <a class=\"code hl_enumeration\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">Type</a> type ) {</div>\n+<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\">  169</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a00973.html#a65d29e074c001aa7817045e54403bfbb\">PatchDescriptor::GetNumControlVertices</a>(type);</div>\n+<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\">  170</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span> </div>\n+<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\">  172</span><span class=\"comment\">// Allows ordering of patches by type</span></div>\n+<div class=\"foldopen\" id=\"foldopen00173\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#abd9f5b68153db907eb7ccd0ed177dfdd\">  173</a></span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span></div>\n+<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\">  174</span><a class=\"code hl_function\" href=\"a00973.html#abd9f5b68153db907eb7ccd0ed177dfdd\">PatchDescriptor::operator &lt; </a>( <a class=\"code hl_class\" href=\"a00973.html\">PatchDescriptor</a> <span class=\"keyword\">const</span> other )<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\">  175</span>    <span class=\"keywordflow\">return</span> (_type &lt; other._type);</div>\n+<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\">  176</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span> </div>\n+<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\">  178</span><span class=\"comment\">// True if the descriptors are identical</span></div>\n+<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\">  179</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span></div>\n+<div class=\"foldopen\" id=\"foldopen00180\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00973.html#a70f2b01ccc2adc41113279d318210005\">  180</a></span><a class=\"code hl_function\" href=\"a00973.html#a70f2b01ccc2adc41113279d318210005\">PatchDescriptor::operator == </a>( <a class=\"code hl_class\" href=\"a00973.html\">PatchDescriptor</a> <span class=\"keyword\">const</span> other )<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\">  181</span>    <span class=\"keywordflow\">return</span> _type == other._type;</div>\n+<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\">  182</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\">  183</span> </div>\n+<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\">  184</span> </div>\n+<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\">  185</span> </div>\n+<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\">  186</span>} <span class=\"comment\">// end namespace Far</span></div>\n+<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\">  187</span> </div>\n+<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\">  188</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\">  189</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\">  190</span> </div>\n+<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\">  191</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\">  192</span> </div>\n+<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\">  193</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_FAR_PATCH_DESCRIPTOR_H */</span><span class=\"preprocessor\"></span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa00908_html_ad258c2d8f7871bc0d40cf3a9ded6e08a\"><div class=\"ttname\"><a href=\"a00908.html#ad258c2d8f7871bc0d40cf3a9ded6e08a\">OpenSubdiv::OPENSUBDIV_VERSION::Far::ConstPatchDescriptorArray</a></div><div class=\"ttdeci\">Vtr::ConstArray&lt; PatchDescriptor &gt; ConstPatchDescriptorArray</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00857_source.html#l00146\">patchDescriptor.h:146</a></div></div>\n+<div class=\"ttc\" id=\"aa00913_html_aa3daa2f428c6be2b1cb394f3a525833d\"><div class=\"ttname\"><a href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833d\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::SchemeType</a></div><div class=\"ttdeci\">SchemeType</div><div class=\"ttdoc\">Enumerated type for all subdivision schemes supported by OpenSubdiv.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01492_source.html#l00037\">types.h:37</a></div></div>\n+<div class=\"ttc\" id=\"aa00973_html\"><div class=\"ttname\"><a href=\"a00973.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor</a></div><div class=\"ttdoc\">Describes the type of a patch.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00857_source.html#l00044\">patchDescriptor.h:44</a></div></div>\n+<div class=\"ttc\" id=\"aa00973_html_a1d1cfd8ffb84e947f82999c682b666a7\"><div class=\"ttname\"><a href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::Type</a></div><div class=\"ttdeci\">Type</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00857_source.html#l00048\">patchDescriptor.h:48</a></div></div>\n+<div class=\"ttc\" id=\"aa00973_html_a1d1cfd8ffb84e947f82999c682b666a7a0b25cd15c2c168baf13ac0feb3980f40\"><div class=\"ttname\"><a href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a0b25cd15c2c168baf13ac0feb3980f40\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::LINES</a></div><div class=\"ttdeci\">@ LINES</div><div class=\"ttdoc\">lines (useful for cage drawing)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00857_source.html#l00052\">patchDescriptor.h:52</a></div></div>\n+<div class=\"ttc\" id=\"aa00973_html_a1d1cfd8ffb84e947f82999c682b666a7a27f9590991016e795e40b58f0bfeaf4c\"><div class=\"ttname\"><a href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a27f9590991016e795e40b58f0bfeaf4c\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::QUADS</a></div><div class=\"ttdeci\">@ QUADS</div><div class=\"ttdoc\">4-sided quadrilateral (bilinear)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00857_source.html#l00054\">patchDescriptor.h:54</a></div></div>\n+<div class=\"ttc\" id=\"aa00973_html_a1d1cfd8ffb84e947f82999c682b666a7a3a0c2fc8a9cab2764314c3324a8a68b2\"><div class=\"ttname\"><a href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a3a0c2fc8a9cab2764314c3324a8a68b2\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::NON_PATCH</a></div><div class=\"ttdeci\">@ NON_PATCH</div><div class=\"ttdoc\">undefined</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00857_source.html#l00049\">patchDescriptor.h:49</a></div></div>\n+<div class=\"ttc\" id=\"aa00973_html_a1d1cfd8ffb84e947f82999c682b666a7a61f7f1587bd5fe978d9ff3ece8d0624c\"><div class=\"ttname\"><a href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a61f7f1587bd5fe978d9ff3ece8d0624c\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::LOOP</a></div><div class=\"ttdeci\">@ LOOP</div><div class=\"ttdoc\">regular triangular patch for the Loop scheme</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00857_source.html#l00057\">patchDescriptor.h:57</a></div></div>\n+<div class=\"ttc\" id=\"aa00973_html_a1d1cfd8ffb84e947f82999c682b666a7a8bf2cfb939c78155cae7549621ea73f6\"><div class=\"ttname\"><a href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a8bf2cfb939c78155cae7549621ea73f6\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::GREGORY_TRIANGLE</a></div><div class=\"ttdeci\">@ GREGORY_TRIANGLE</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00857_source.html#l00064\">patchDescriptor.h:63</a></div></div>\n+<div class=\"ttc\" id=\"aa00973_html_a1d1cfd8ffb84e947f82999c682b666a7a9113dda3d2c5d6ffce05d54a17ed5678\"><div class=\"ttname\"><a href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a9113dda3d2c5d6ffce05d54a17ed5678\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::TRIANGLES</a></div><div class=\"ttdeci\">@ TRIANGLES</div><div class=\"ttdoc\">3-sided triangle</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00857_source.html#l00055\">patchDescriptor.h:55</a></div></div>\n+<div class=\"ttc\" id=\"aa00973_html_a1d1cfd8ffb84e947f82999c682b666a7ac4ae10df9c13e44880ca7be341e44f2a\"><div class=\"ttname\"><a href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7ac4ae10df9c13e44880ca7be341e44f2a\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::GREGORY_BOUNDARY</a></div><div class=\"ttdeci\">@ GREGORY_BOUNDARY</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00857_source.html#l00061\">patchDescriptor.h:61</a></div></div>\n+<div class=\"ttc\" id=\"aa00973_html_a1d1cfd8ffb84e947f82999c682b666a7ad7d1a88a40ae8938e07af7a7745054b0\"><div class=\"ttname\"><a href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7ad7d1a88a40ae8938e07af7a7745054b0\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::GREGORY_BASIS</a></div><div class=\"ttdeci\">@ GREGORY_BASIS</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00857_source.html#l00062\">patchDescriptor.h:62</a></div></div>\n+<div class=\"ttc\" id=\"aa00973_html_a1d1cfd8ffb84e947f82999c682b666a7adc0f401e772f1affa81071e70631abbf\"><div class=\"ttname\"><a href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7adc0f401e772f1affa81071e70631abbf\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::POINTS</a></div><div class=\"ttdeci\">@ POINTS</div><div class=\"ttdoc\">points (useful for cage drawing)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00857_source.html#l00051\">patchDescriptor.h:51</a></div></div>\n+<div class=\"ttc\" id=\"aa00973_html_a1d1cfd8ffb84e947f82999c682b666a7ae765e809376e5557d348d3e991a7273e\"><div class=\"ttname\"><a href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7ae765e809376e5557d348d3e991a7273e\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::GREGORY</a></div><div class=\"ttdeci\">@ GREGORY</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00857_source.html#l00060\">patchDescriptor.h:60</a></div></div>\n+<div class=\"ttc\" id=\"aa00973_html_a1d1cfd8ffb84e947f82999c682b666a7afc488491175a6dac9e5881e363ad4c41\"><div class=\"ttname\"><a href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7afc488491175a6dac9e5881e363ad4c41\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::REGULAR</a></div><div class=\"ttdeci\">@ REGULAR</div><div class=\"ttdoc\">regular B-Spline patch for the Catmark scheme</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00857_source.html#l00059\">patchDescriptor.h:59</a></div></div>\n+<div class=\"ttc\" id=\"aa00973_html_a1d77cd9717f08d87e372cd7047d774d9\"><div class=\"ttname\"><a href=\"a00973.html#a1d77cd9717f08d87e372cd7047d774d9\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::IsAdaptive</a></div><div class=\"ttdeci\">bool IsAdaptive() const</div><div class=\"ttdoc\">Returns true if the type is an adaptive patch.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00857_source.html#l00097\">patchDescriptor.h:97</a></div></div>\n+<div class=\"ttc\" id=\"aa00973_html_a485decc00facb0972f8775a8a20851fa\"><div class=\"ttname\"><a href=\"a00973.html#a485decc00facb0972f8775a8a20851fa\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::GetType</a></div><div class=\"ttdeci\">Type GetType() const</div><div class=\"ttdoc\">Returns the type of the patch.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00857_source.html#l00087\">patchDescriptor.h:87</a></div></div>\n+<div class=\"ttc\" id=\"aa00973_html_a55ee40117ada82b868b00332c5d787cd\"><div class=\"ttname\"><a href=\"a00973.html#a55ee40117ada82b868b00332c5d787cd\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::GetGregoryBasisPatchSize</a></div><div class=\"ttdeci\">static short GetGregoryBasisPatchSize()</div><div class=\"ttdoc\">Number of control vertices of Gregory patch basis (20)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00857_source.html#l00126\">patchDescriptor.h:126</a></div></div>\n+<div class=\"ttc\" id=\"aa00973_html_a65d29e074c001aa7817045e54403bfbb\"><div class=\"ttname\"><a href=\"a00973.html#a65d29e074c001aa7817045e54403bfbb\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::GetNumControlVertices</a></div><div class=\"ttdeci\">short GetNumControlVertices() const</div><div class=\"ttdoc\">Returns the number of control vertices expected for a patch of the type described.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00857_source.html#l00110\">patchDescriptor.h:110</a></div></div>\n+<div class=\"ttc\" id=\"aa00973_html_a6c6de8b1c8212039f4702f70bb75cf02\"><div class=\"ttname\"><a href=\"a00973.html#a6c6de8b1c8212039f4702f70bb75cf02\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::PatchDescriptor</a></div><div class=\"ttdeci\">PatchDescriptor(PatchDescriptor const &amp;d)</div><div class=\"ttdoc\">Copy Constructor.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00857_source.html#l00077\">patchDescriptor.h:77</a></div></div>\n+<div class=\"ttc\" id=\"aa00973_html_a70f2b01ccc2adc41113279d318210005\"><div class=\"ttname\"><a href=\"a00973.html#a70f2b01ccc2adc41113279d318210005\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::operator==</a></div><div class=\"ttdeci\">bool operator==(PatchDescriptor const other) const</div><div class=\"ttdoc\">True if the descriptors are identical.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00857_source.html#l00180\">patchDescriptor.h:180</a></div></div>\n+<div class=\"ttc\" id=\"aa00973_html_a7f367dc8b49973c9c3571907a5c85749\"><div class=\"ttname\"><a href=\"a00973.html#a7f367dc8b49973c9c3571907a5c85749\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::GetRegularPatchSize</a></div><div class=\"ttdeci\">static short GetRegularPatchSize()</div><div class=\"ttdoc\">Number of control vertices of Regular Patches in table.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00857_source.html#l00120\">patchDescriptor.h:120</a></div></div>\n+<div class=\"ttc\" id=\"aa00973_html_a881bd183b2e330c490fcce5caf3ef433\"><div class=\"ttname\"><a href=\"a00973.html#a881bd183b2e330c490fcce5caf3ef433\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::GetNumFVarControlVertices</a></div><div class=\"ttdeci\">short GetNumFVarControlVertices() const</div><div class=\"ttdoc\">Deprecated.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00857_source.html#l00115\">patchDescriptor.h:115</a></div></div>\n+<div class=\"ttc\" id=\"aa00973_html_a8e33c50700963e8dc99a5f598a32aaa3\"><div class=\"ttname\"><a href=\"a00973.html#a8e33c50700963e8dc99a5f598a32aaa3\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::PatchDescriptor</a></div><div class=\"ttdeci\">PatchDescriptor(int type)</div><div class=\"ttdoc\">Constructor.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00857_source.html#l00073\">patchDescriptor.h:73</a></div></div>\n+<div class=\"ttc\" id=\"aa00973_html_a957e78d72208a5a9b394a2ea1d4d95d9\"><div class=\"ttname\"><a href=\"a00973.html#a957e78d72208a5a9b394a2ea1d4d95d9\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::operator=</a></div><div class=\"ttdeci\">PatchDescriptor &amp; operator=(PatchDescriptor const &amp;d)</div><div class=\"ttdoc\">Assignment operator.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00857_source.html#l00081\">patchDescriptor.h:81</a></div></div>\n+<div class=\"ttc\" id=\"aa00973_html_aa1c2bc6e9b4732d59a1c215f1ddfa224\"><div class=\"ttname\"><a href=\"a00973.html#aa1c2bc6e9b4732d59a1c215f1ddfa224\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::IsAdaptive</a></div><div class=\"ttdeci\">static bool IsAdaptive(Type type)</div><div class=\"ttdoc\">Returns true if the type is an adaptive (non-linear) patch.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00857_source.html#l00092\">patchDescriptor.h:92</a></div></div>\n+<div class=\"ttc\" id=\"aa00973_html_abd9f5b68153db907eb7ccd0ed177dfdd\"><div class=\"ttname\"><a href=\"a00973.html#abd9f5b68153db907eb7ccd0ed177dfdd\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::operator&lt;</a></div><div class=\"ttdeci\">bool operator&lt;(PatchDescriptor const other) const</div><div class=\"ttdoc\">Allows ordering of patches by type.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00857_source.html#l00173\">patchDescriptor.h:174</a></div></div>\n+<div class=\"ttc\" id=\"aa00973_html_ac81253df324c9b3e106783112457be15\"><div class=\"ttname\"><a href=\"a00973.html#ac81253df324c9b3e106783112457be15\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::GetGregoryPatchSize</a></div><div class=\"ttdeci\">static short GetGregoryPatchSize()</div><div class=\"ttdoc\">Number of control vertices of Gregory (and Gregory Boundary) Patches in table.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00857_source.html#l00123\">patchDescriptor.h:123</a></div></div>\n+<div class=\"ttc\" id=\"aa00973_html_acd0f82d3c49b8a5dd436d4003c44b713\"><div class=\"ttname\"><a href=\"a00973.html#acd0f82d3c49b8a5dd436d4003c44b713\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::print</a></div><div class=\"ttdeci\">void print() const</div></div>\n+<div class=\"ttc\" id=\"aa00973_html_ae2b7537df7fd7add00efb4285fa356c2\"><div class=\"ttname\"><a href=\"a00973.html#ae2b7537df7fd7add00efb4285fa356c2\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::GetAdaptivePatchDescriptors</a></div><div class=\"ttdeci\">static Vtr::ConstArray&lt; PatchDescriptor &gt; GetAdaptivePatchDescriptors(Sdc::SchemeType type)</div><div class=\"ttdoc\">Returns a vector of all the legal patch descriptors for the given adaptive subdivision scheme.</div></div>\n+<div class=\"ttc\" id=\"aa00973_html_af3f91a4a134cb2e5786990ec81f30d17\"><div class=\"ttname\"><a href=\"a00973.html#af3f91a4a134cb2e5786990ec81f30d17\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::PatchDescriptor</a></div><div class=\"ttdeci\">PatchDescriptor()</div><div class=\"ttdoc\">Default constructor.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00857_source.html#l00069\">patchDescriptor.h:69</a></div></div>\n+<div class=\"ttc\" id=\"aa01353_html\"><div class=\"ttname\"><a href=\"a01353.html\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00797_source.html#l00053\">array.h:53</a></div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00857.html\">tbbEvaluator.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7f420b72a822828cfa8b0561c695a5cc.html\">far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00857.html\">patchDescriptor.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-tbbEvaluator.h\n+patchDescriptor.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2015 Pixar\n+2// Copyright 2013 Pixar\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -24,657 +24,280 @@\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n 24\n-25#ifndef OPENSUBDIV3_OSD_TBB_EVALUATOR_H\n-26#define OPENSUBDIV3_OSD_TBB_EVALUATOR_H\n+25#ifndef OPENSUBDIV3_FAR_PATCH_DESCRIPTOR_H\n+26#define OPENSUBDIV3_FAR_PATCH_DESCRIPTOR_H\n 27\n 28#include \"../version.h\"\n-29#include \"../osd/bufferDescriptor.h\"\n-30#include \"../osd/types.h\"\n-31\n-32#include <cstddef>\n-33\n-34namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-35namespace OPENSUBDIV_VERSION {\n-36\n-37namespace Osd {\n-38\n-_\b3_\b9class _\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br {\n-40public:\n-46\n-71 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n-_\b7_\b2 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n-73 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-74 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-75 STENCIL_TABLE const *stencilTable,\n-76 _\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance = NULL,\n-77 void *deviceContext = NULL) {\n-78\n-79 (void)instance; // unused\n-80 (void)deviceContext; // unused\n-81\n-82 if (stencilTable->GetNumStencils() == 0)\n-83 return false;\n-84\n-85 return _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n-86 dstBuffer->BindCpuBuffer(), dstDesc,\n-87 &stencilTable->GetSizes()[0],\n-88 &stencilTable->GetOffsets()[0],\n-89 &stencilTable->GetControlIndices()[0],\n-90 &stencilTable->GetWeights()[0],\n-91 /*start = */ 0,\n-92 /*end = */ stencilTable->GetNumStencils());\n-93 }\n-94\n-_\b1_\b2_\b1 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n-122 const float *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-123 float *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-124 const int * sizes,\n-125 const int * offsets,\n-126 const int * indices,\n-127 const float * weights,\n-128 int start, int end);\n-129\n-167 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n-_\b1_\b6_\b8 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n-169 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-170 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-171 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-172 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-173 STENCIL_TABLE const *stencilTable,\n-174 const _\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br *instance = NULL,\n-175 void * deviceContext = NULL) {\n-176\n-177 (void)instance; // unused\n-178 (void)deviceContext; // unused\n-179\n-180 return _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n-181 dstBuffer->BindCpuBuffer(), dstDesc,\n-182 duBuffer->BindCpuBuffer(), duDesc,\n-183 dvBuffer->BindCpuBuffer(), dvDesc,\n-184 &stencilTable->GetSizes()[0],\n-185 &stencilTable->GetOffsets()[0],\n-186 &stencilTable->GetControlIndices()[0],\n-187 &stencilTable->GetWeights()[0],\n-188 &stencilTable->GetDuWeights()[0],\n-189 &stencilTable->GetDvWeights()[0],\n-190 /*start = */ 0,\n-191 /*end = */ stencilTable->GetNumStencils());\n-192 }\n-193\n-_\b2_\b3_\b4 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n-235 const float *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-236 float *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-237 float *du, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-238 float *dv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-239 const int * sizes,\n-240 const int * offsets,\n-241 const int * indices,\n-242 const float * weights,\n-243 const float * duWeights,\n-244 const float * dvWeights,\n-245 int start, int end);\n-246\n-302 template <typename SRC_BUFFER, typename DST_BUFFER, typename STENCIL_TABLE>\n-_\b3_\b0_\b3 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n-304 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-305 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-306 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-307 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-308 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-309 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-310 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-311 STENCIL_TABLE const *stencilTable,\n-312 const _\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br *instance = NULL,\n-313 void * deviceContext = NULL) {\n-314\n-315 (void)instance; // unused\n-316 (void)deviceContext; // unused\n-317\n-318 return _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n-319 dstBuffer->BindCpuBuffer(), dstDesc,\n-320 duBuffer->BindCpuBuffer(), duDesc,\n-321 dvBuffer->BindCpuBuffer(), dvDesc,\n-322 duuBuffer->BindCpuBuffer(), duuDesc,\n-323 duvBuffer->BindCpuBuffer(), duvDesc,\n-324 dvvBuffer->BindCpuBuffer(), dvvDesc,\n-325 &stencilTable->GetSizes()[0],\n-326 &stencilTable->GetOffsets()[0],\n-327 &stencilTable->GetControlIndices()[0],\n-328 &stencilTable->GetWeights()[0],\n-329 &stencilTable->GetDuWeights()[0],\n-330 &stencilTable->GetDvWeights()[0],\n-331 &stencilTable->GetDuuWeights()[0],\n-332 &stencilTable->GetDuvWeights()[0],\n-333 &stencilTable->GetDvvWeights()[0],\n-334 /*start = */ 0,\n-335 /*end = */ stencilTable->GetNumStencils());\n-336 }\n-337\n-_\b3_\b9_\b9 static bool _\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(\n-400 const float *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-401 float *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-402 float *du, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-403 float *dv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-404 float *duu, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-405 float *duv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-406 float *dvv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-407 const int * sizes,\n-408 const int * offsets,\n-409 const int * indices,\n-410 const float * weights,\n-411 const float * duWeights,\n-412 const float * dvWeights,\n-413 const float * duuWeights,\n-414 const float * duvWeights,\n-415 const float * dvvWeights,\n-416 int start, int end);\n-417\n-423\n-452 template <typename SRC_BUFFER, typename DST_BUFFER,\n-453 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b4_\b5_\b4 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n-455 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-456 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-457 int numPatchCoords,\n-458 PATCHCOORD_BUFFER *patchCoords,\n-459 PATCH_TABLE *patchTable,\n-460 _\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance = NULL,\n-461 void * deviceContext = NULL) {\n-462\n-463 (void)instance; // unused\n-464 (void)deviceContext; // unused\n-465\n-466 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n-467 dstBuffer->BindCpuBuffer(), dstDesc,\n-468 numPatchCoords,\n-469 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd*)patchCoords->BindCpuBuffer(),\n-470 patchTable->GetPatchArrayBuffer(),\n-471 patchTable->GetPatchIndexBuffer(),\n-472 patchTable->GetPatchParamBuffer());\n-473 }\n-474\n-515 template <typename SRC_BUFFER, typename DST_BUFFER,\n-516 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b5_\b1_\b7 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n-518 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-519 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-520 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-521 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-522 int numPatchCoords,\n-523 PATCHCOORD_BUFFER *patchCoords,\n-524 PATCH_TABLE *patchTable,\n-525 _\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance = NULL,\n-526 void * deviceContext = NULL) {\n-527\n-528 (void)instance; // unused\n-529 (void)deviceContext; // unused\n-530\n-531 // XXX: PatchCoords is somewhat abusing vertex primvar buffer interop.\n-532 // ideally all buffer classes should have templated by datatype\n-533 // so that downcast isn't needed there.\n-534 // (e.g. Osd::CpuBuffer<PatchCoord> )\n-535 //\n-536 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n-537 dstBuffer->BindCpuBuffer(), dstDesc,\n-538 duBuffer->BindCpuBuffer(), duDesc,\n-539 dvBuffer->BindCpuBuffer(), dvDesc,\n-540 numPatchCoords,\n-541 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd*)patchCoords->BindCpuBuffer(),\n-542 patchTable->GetPatchArrayBuffer(),\n-543 patchTable->GetPatchIndexBuffer(),\n-544 patchTable->GetPatchParamBuffer());\n-545 }\n-546\n-605 template <typename SRC_BUFFER, typename DST_BUFFER,\n-606 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b6_\b0_\b7 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n-608 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-609 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-610 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-611 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-612 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-613 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-614 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-615 int numPatchCoords,\n-616 PATCHCOORD_BUFFER *patchCoords,\n-617 PATCH_TABLE *patchTable,\n-618 _\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance = NULL,\n-619 void * deviceContext = NULL) {\n-620\n-621 (void)instance; // unused\n-622 (void)deviceContext; // unused\n-623\n-624 // XXX: PatchCoords is somewhat abusing vertex primvar buffer interop.\n-625 // ideally all buffer classes should have templated by datatype\n-626 // so that downcast isn't needed there.\n-627 // (e.g. Osd::CpuBuffer<PatchCoord> )\n-628 //\n-629 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n-630 dstBuffer->BindCpuBuffer(), dstDesc,\n-631 duBuffer->BindCpuBuffer(), duDesc,\n-632 dvBuffer->BindCpuBuffer(), dvDesc,\n-633 duuBuffer->BindCpuBuffer(), duuDesc,\n-634 duvBuffer->BindCpuBuffer(), duvDesc,\n-635 dvvBuffer->BindCpuBuffer(), dvvDesc,\n-636 numPatchCoords,\n-637 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd*)patchCoords->BindCpuBuffer(),\n-638 patchTable->GetPatchArrayBuffer(),\n-639 patchTable->GetPatchIndexBuffer(),\n-640 patchTable->GetPatchParamBuffer());\n-641 }\n-642\n-_\b6_\b7_\b0 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n-671 const float *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-672 float *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-673 int numPatchCoords,\n-674 const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd *patchCoords,\n-675 const _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by *patchArrays,\n-676 const int *patchIndexBuffer,\n-677 const _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm *patchParamBuffer);\n-678\n-_\b7_\b1_\b6 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n-717 const float *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-718 float *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-719 float *du, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-720 float *dv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-721 int numPatchCoords,\n-722 _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd const *patchCoords,\n-723 _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by const *patchArrays,\n-724 const int *patchIndexBuffer,\n-725 _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm const *patchParamBuffer);\n-726\n-_\b7_\b7_\b9 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(\n-780 const float *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-781 float *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-782 float *du, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-783 float *dv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-784 float *duu, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-785 float *duv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-786 float *dvv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-787 int numPatchCoords,\n-788 _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd const *patchCoords,\n-789 _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by const *patchArrays,\n-790 const int *patchIndexBuffer,\n-791 _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm const *patchParamBuffer);\n-792\n-821 template <typename SRC_BUFFER, typename DST_BUFFER,\n-822 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b8_\b2_\b3 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-824 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-825 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-826 int numPatchCoords,\n-827 PATCHCOORD_BUFFER *patchCoords,\n-828 PATCH_TABLE *patchTable,\n-829 _\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance = NULL,\n-830 void * deviceContext = NULL) {\n-831\n-832 (void)instance; // unused\n-833 (void)deviceContext; // unused\n-834\n-835 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n-836 dstBuffer->BindCpuBuffer(), dstDesc,\n-837 numPatchCoords,\n-838 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd*)patchCoords->BindCpuBuffer(),\n-839 patchTable->GetVaryingPatchArrayBuffer(),\n-840 patchTable->GetVaryingPatchIndexBuffer(),\n-841 patchTable->GetPatchParamBuffer());\n-842 }\n-843\n-884 template <typename SRC_BUFFER, typename DST_BUFFER,\n-885 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b8_\b8_\b6 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-887 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-888 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-889 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-890 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-891 int numPatchCoords,\n-892 PATCHCOORD_BUFFER *patchCoords,\n-893 PATCH_TABLE *patchTable,\n-894 _\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance = NULL,\n-895 void * deviceContext = NULL) {\n-896\n-897 (void)instance; // unused\n-898 (void)deviceContext; // unused\n-899\n-900 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n-901 dstBuffer->BindCpuBuffer(), dstDesc,\n-902 duBuffer->BindCpuBuffer(), duDesc,\n-903 dvBuffer->BindCpuBuffer(), dvDesc,\n-904 numPatchCoords,\n-905 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd*)patchCoords->BindCpuBuffer(),\n-906 patchTable->GetVaryingPatchArrayBuffer(),\n-907 patchTable->GetVaryingPatchIndexBuffer(),\n-908 patchTable->GetPatchParamBuffer());\n-909 }\n-910\n-969 template <typename SRC_BUFFER, typename DST_BUFFER,\n-970 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b9_\b7_\b1 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-972 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-973 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-974 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-975 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-976 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-977 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-978 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-979 int numPatchCoords,\n-980 PATCHCOORD_BUFFER *patchCoords,\n-981 PATCH_TABLE *patchTable,\n-982 _\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance = NULL,\n-983 void * deviceContext = NULL) {\n-984\n-985 (void)instance; // unused\n-986 (void)deviceContext; // unused\n-987\n-988 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n-989 dstBuffer->BindCpuBuffer(), dstDesc,\n-990 duBuffer->BindCpuBuffer(), duDesc,\n-991 dvBuffer->BindCpuBuffer(), dvDesc,\n-992 duuBuffer->BindCpuBuffer(), duuDesc,\n-993 duvBuffer->BindCpuBuffer(), duvDesc,\n-994 dvvBuffer->BindCpuBuffer(), dvvDesc,\n-995 numPatchCoords,\n-996 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd*)patchCoords->BindCpuBuffer(),\n-997 patchTable->GetVaryingPatchArrayBuffer(),\n-998 patchTable->GetVaryingPatchIndexBuffer(),\n-999 patchTable->GetPatchParamBuffer());\n-1000 }\n-1001\n-1032 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1033 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b1_\b0_\b3_\b4 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1035 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1036 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1037 int numPatchCoords,\n-1038 PATCHCOORD_BUFFER *patchCoords,\n-1039 PATCH_TABLE *patchTable,\n-1040 int fvarChannel,\n-1041 _\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance = NULL,\n-1042 void * deviceContext = NULL) {\n-1043\n-1044 (void)instance; // unused\n-1045 (void)deviceContext; // unused\n-1046\n-1047 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n-1048 dstBuffer->BindCpuBuffer(), dstDesc,\n-1049 numPatchCoords,\n-1050 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd*)patchCoords->BindCpuBuffer(),\n-1051 patchTable->GetFVarPatchArrayBuffer(fvarChannel),\n-1052 patchTable->GetFVarPatchIndexBuffer(fvarChannel),\n-1053 patchTable->GetFVarPatchParamBuffer(fvarChannel));\n-1054 }\n-1055\n-1098 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1099 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b1_\b1_\b0_\b0 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1101 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1102 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1103 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-1104 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-1105 int numPatchCoords,\n-1106 PATCHCOORD_BUFFER *patchCoords,\n-1107 PATCH_TABLE *patchTable,\n-1108 int fvarChannel,\n-1109 _\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance = NULL,\n-1110 void * deviceContext = NULL) {\n-1111\n-1112 (void)instance; // unused\n-1113 (void)deviceContext; // unused\n-1114\n-1115 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n-1116 dstBuffer->BindCpuBuffer(), dstDesc,\n-1117 duBuffer->BindCpuBuffer(), duDesc,\n-1118 dvBuffer->BindCpuBuffer(), dvDesc,\n-1119 numPatchCoords,\n-1120 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd*)patchCoords->BindCpuBuffer(),\n-1121 patchTable->GetFVarPatchArrayBuffer(fvarChannel),\n-1122 patchTable->GetFVarPatchIndexBuffer(fvarChannel),\n-1123 patchTable->GetFVarPatchParamBuffer(fvarChannel));\n-1124 }\n-1125\n-1186 template <typename SRC_BUFFER, typename DST_BUFFER,\n-1187 typename PATCHCOORD_BUFFER, typename PATCH_TABLE>\n-_\b1_\b1_\b8_\b8 static bool _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg(\n-1189 SRC_BUFFER *srcBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-1190 DST_BUFFER *dstBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-1191 DST_BUFFER *duBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-1192 DST_BUFFER *dvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-1193 DST_BUFFER *duuBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-1194 DST_BUFFER *duvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-1195 DST_BUFFER *dvvBuffer, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-1196 int numPatchCoords,\n-1197 PATCHCOORD_BUFFER *patchCoords,\n-1198 PATCH_TABLE *patchTable,\n-1199 int fvarChannel,\n-1200 _\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance = NULL,\n-1201 void * deviceContext = NULL) {\n-1202\n-1203 (void)instance; // unused\n-1204 (void)deviceContext; // unused\n-1205\n-1206 return _\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(srcBuffer->BindCpuBuffer(), srcDesc,\n-1207 dstBuffer->BindCpuBuffer(), dstDesc,\n-1208 duBuffer->BindCpuBuffer(), duDesc,\n-1209 dvBuffer->BindCpuBuffer(), dvDesc,\n-1210 duuBuffer->BindCpuBuffer(), duuDesc,\n-1211 duvBuffer->BindCpuBuffer(), duvDesc,\n-1212 dvvBuffer->BindCpuBuffer(), dvvDesc,\n-1213 numPatchCoords,\n-1214 (const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd*)patchCoords->BindCpuBuffer(),\n-1215 patchTable->GetFVarPatchArrayBuffer(fvarChannel),\n-1216 patchTable->GetFVarPatchIndexBuffer(fvarChannel),\n-1217 patchTable->GetFVarPatchParamBuffer(fvarChannel));\n-1218 }\n-1219\n-1225\n-_\b1_\b2_\b2_\b7 static void _\bS_\by_\bn_\bc_\bh_\br_\bo_\bn_\bi_\bz_\be(void *deviceContext = NULL);\n-1228\n-_\b1_\b2_\b3_\b3 static void _\bS_\be_\bt_\bN_\bu_\bm_\bT_\bh_\br_\be_\ba_\bd_\bs(int numThreads);\n-1234};\n-1235\n-1236\n-1237} // end namespace Osd\n-1238\n-1239} // end namespace OPENSUBDIV_VERSION\n-1240using namespace OPENSUBDIV_VERSION;\n-1241\n-1242} // end namespace OpenSubdiv\n-1243\n-1244\n-1245#endif // OPENSUBDIV3_OSD_TBB_EVALUATOR_H\n+29\n+30#include \"../far/types.h\"\n+31#include \"../sdc/types.h\"\n+32\n+33#include <vector>\n+34\n+35namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+36namespace OPENSUBDIV_VERSION {\n+37\n+38namespace Far {\n+39\n+_\b4_\b4class _\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br {\n+45\n+46public:\n+47\n+_\b4_\b8 enum _\bT_\by_\bp_\be {\n+_\b4_\b9 _\bN_\bO_\bN_\b__\bP_\bA_\bT_\bC_\bH = 0,\n+50\n+_\b5_\b1 _\bP_\bO_\bI_\bN_\bT_\bS,\n+_\b5_\b2 _\bL_\bI_\bN_\bE_\bS,\n+53\n+_\b5_\b4 _\bQ_\bU_\bA_\bD_\bS,\n+_\b5_\b5 _\bT_\bR_\bI_\bA_\bN_\bG_\bL_\bE_\bS,\n+56\n+_\b5_\b7 _\bL_\bO_\bO_\bP,\n+58\n+_\b5_\b9 _\bR_\bE_\bG_\bU_\bL_\bA_\bR,\n+_\b6_\b0 _\bG_\bR_\bE_\bG_\bO_\bR_\bY,\n+_\b6_\b1 _\bG_\bR_\bE_\bG_\bO_\bR_\bY_\b__\bB_\bO_\bU_\bN_\bD_\bA_\bR_\bY,\n+_\b6_\b2 _\bG_\bR_\bE_\bG_\bO_\bR_\bY_\b__\bB_\bA_\bS_\bI_\bS,\n+63 _\bG_\bR_\bE_\bG_\bO_\bR_\bY_\b__\bT_\bR_\bI_\bA_\bN_\bG_\bL_\bE\n+_\b6_\b4 };\n+65\n+66public:\n+67\n+_\b6_\b9 _\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br() :\n+70 _type(_\bN_\bO_\bN_\b__\bP_\bA_\bT_\bC_\bH) { }\n+71\n+_\b7_\b3 _\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(int type) :\n+74 _type(type) { }\n+75\n+_\b7_\b7 _\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br( _\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const & d ) :\n+78 _type(d._\bG_\be_\bt_\bT_\by_\bp_\be()) { }\n+79\n+_\b8_\b1 _\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br & _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=( _\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const & d ) {\n+82 _type = d._\bG_\be_\bt_\bT_\by_\bp_\be();\n+83 return *this;\n+84 }\n+85\n+_\b8_\b7 _\bT_\by_\bp_\be _\bG_\be_\bt_\bT_\by_\bp_\be() const {\n+88 return (_\bT_\by_\bp_\be)_type;\n+89 }\n+90\n+_\b9_\b2 static inline bool _\bI_\bs_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be(_\bT_\by_\bp_\be type) {\n+93 return type > _\bT_\bR_\bI_\bA_\bN_\bG_\bL_\bE_\bS;\n+94 }\n+95\n+_\b9_\b7 bool _\bI_\bs_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be() const {\n+98 return _\bI_\bs_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be( this->_\bG_\be_\bt_\bT_\by_\bp_\be() );\n+99 }\n+100\n+103 static inline short _\bG_\be_\bt_\bN_\bu_\bm_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bV_\be_\br_\bt_\bi_\bc_\be_\bs( _\bT_\by_\bp_\be t );\n+104\n+106 static inline short _\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bV_\be_\br_\bt_\bi_\bc_\be_\bs( _\bT_\by_\bp_\be t );\n+107\n+_\b1_\b1_\b0 short _\bG_\be_\bt_\bN_\bu_\bm_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bV_\be_\br_\bt_\bi_\bc_\be_\bs() const {\n+111 return _\bG_\be_\bt_\bN_\bu_\bm_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bV_\be_\br_\bt_\bi_\bc_\be_\bs( this->_\bG_\be_\bt_\bT_\by_\bp_\be() );\n+112 }\n+113\n+_\b1_\b1_\b5 short _\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bV_\be_\br_\bt_\bi_\bc_\be_\bs() const {\n+116 return _\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bV_\be_\br_\bt_\bi_\bc_\be_\bs( this->_\bG_\be_\bt_\bT_\by_\bp_\be() );\n+117 }\n+118\n+_\b1_\b2_\b0 static short _\bG_\be_\bt_\bR_\be_\bg_\bu_\bl_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bS_\bi_\bz_\be() { return 16; }\n+121\n+_\b1_\b2_\b3 static short _\bG_\be_\bt_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bS_\bi_\bz_\be() { return 4; }\n+124\n+_\b1_\b2_\b6 static short _\bG_\be_\bt_\bG_\br_\be_\bg_\bo_\br_\by_\bB_\ba_\bs_\bi_\bs_\bP_\ba_\bt_\bc_\bh_\bS_\bi_\bz_\be() { return 20; }\n+127\n+128\n+_\b1_\b3_\b1 static _\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by_\b<_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b> _\bG_\be_\bt_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\bs(_\bS_\bd_\bc_\b:_\b:\n+_\bS_\bc_\bh_\be_\bm_\be_\bT_\by_\bp_\be type);\n+132\n+134 inline bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b _\b<_\b ( _\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const other ) const;\n+135\n+137 inline bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b _\b=_\b=_\b ( _\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const other ) const;\n+138\n+139 // debug helper\n+_\b1_\b4_\b0 void _\bp_\br_\bi_\bn_\bt() const;\n+141\n+142private:\n+143 unsigned int _type;\n+144};\n+145\n+_\b1_\b4_\b6typedef _\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by_\b<_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b> _\bC_\bo_\bn_\bs_\bt_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\bA_\br_\br_\ba_\by;\n+147\n+148// Returns the number of control vertices expected for a patch of this type\n+149inline short\n+_\b1_\b5_\b0_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bV_\be_\br_\bt_\bi_\bc_\be_\bs( _\bT_\by_\bp_\be type ) {\n+151 switch (type) {\n+152 case _\bR_\bE_\bG_\bU_\bL_\bA_\bR : return _\bG_\be_\bt_\bR_\be_\bg_\bu_\bl_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bS_\bi_\bz_\be();\n+153 case _\bL_\bO_\bO_\bP : return 12;\n+154 case _\bQ_\bU_\bA_\bD_\bS : return 4;\n+155 case _\bG_\bR_\bE_\bG_\bO_\bR_\bY :\n+156 case _\bG_\bR_\bE_\bG_\bO_\bR_\bY_\b__\bB_\bO_\bU_\bN_\bD_\bA_\bR_\bY : return _\bG_\be_\bt_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bS_\bi_\bz_\be();\n+157 case _\bG_\bR_\bE_\bG_\bO_\bR_\bY_\b__\bB_\bA_\bS_\bI_\bS : return _\bG_\be_\bt_\bG_\br_\be_\bg_\bo_\br_\by_\bB_\ba_\bs_\bi_\bs_\bP_\ba_\bt_\bc_\bh_\bS_\bi_\bz_\be();\n+158 case _\bG_\bR_\bE_\bG_\bO_\bR_\bY_\b__\bT_\bR_\bI_\bA_\bN_\bG_\bL_\bE : return 18;\n+159 case _\bT_\bR_\bI_\bA_\bN_\bG_\bL_\bE_\bS : return 3;\n+160 case _\bL_\bI_\bN_\bE_\bS : return 2;\n+161 case _\bP_\bO_\bI_\bN_\bT_\bS : return 1;\n+162 default : return -1;\n+163 }\n+164}\n+165\n+166// Returns the number of face-varying control vertices expected for a patch\n+of this type\n+167inline short\n+_\b1_\b6_\b8_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bV_\be_\br_\bt_\bi_\bc_\be_\bs( _\bT_\by_\bp_\be type ) {\n+169 return _\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bV_\be_\br_\bt_\bi_\bc_\be_\bs(type);\n+170}\n+171\n+172// Allows ordering of patches by type\n+_\b1_\b7_\b3inline bool\n+174_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b _\b<_\b ( _\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const other ) const {\n+175 return (_type < other._type);\n+176}\n+177\n+178// True if the descriptors are identical\n+179inline bool\n+_\b1_\b8_\b0_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b _\b=_\b=_\b ( _\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const other ) const {\n+181 return _type == other._type;\n+182}\n+183\n+184\n+185\n+186} // end namespace Far\n+187\n+188} // end namespace OPENSUBDIV_VERSION\n+189using namespace OPENSUBDIV_VERSION;\n+190\n+191} // end namespace OpenSubdiv\n+192\n+193#endif /* OPENSUBDIV3_FAR_PATCH_DESCRIPTOR_H */\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n-BufferDescriptor is a struct which describes buffer elements in interleaved\n-data buffers....\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b6_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b3_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, STENCIL_TABLE\n-const *stencilTable, TbbEvaluator const *instance=NULL, void\n-*deviceContext=NULL)\n-Generic static eval stencils function. This function has a same signature as\n-other device kernels hav...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b7_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int numPatchCoords,\n-PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, TbbEvaluator const\n-*instance=NULL, void *deviceContext=NULL)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b4_\b5_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n-*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n-BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const\n-&duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER\n-*dvvBuffer, BufferDescriptor const &dvvDesc, STENCIL_TABLE const *stencilTable,\n-const TbbEvaluator *instance=NULL, void *deviceContext=NULL)\n-Generic static eval stencils function with derivatives. This function has a\n-same signature as other d...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b3_\b0_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-static bool EvalStencils(const float *src, BufferDescriptor const &srcDesc,\n-float *dst, BufferDescriptor const &dstDesc, const int *sizes, const int\n-*offsets, const int *indices, const float *weights, int start, int end)\n-Static eval stencils function which takes raw CPU pointers for input and\n-output.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n-static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n-*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n-BufferDescriptor const &dvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n-*patchCoords, PATCH_TABLE *patchTable, TbbEvaluator const *instance=NULL, void\n-*deviceContext=NULL)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b8_\b8_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n-BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n-&dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &duuDesc, DST_BUFFER\n-*duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER *dvvBuffer,\n-BufferDescriptor const &dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n-*patchCoords, PATCH_TABLE *patchTable, TbbEvaluator const *instance=NULL, void\n-*deviceContext=NULL)\n-Generic limit eval function with derivatives. This function has a same\n-signature as other device kern...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b6_\b0_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-static bool EvalStencils(const float *src, BufferDescriptor const &srcDesc,\n-float *dst, BufferDescriptor const &dstDesc, float *du, BufferDescriptor const\n-&duDesc, float *dv, BufferDescriptor const &dvDesc, const int *sizes, const int\n-*offsets, const int *indices, const float *weights, const float *duWeights,\n-const float *dvWeights, int start, int end)\n-Static eval stencils function with derivatives, which takes raw CPU pointers\n-for input and output.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-static bool EvalStencils(const float *src, BufferDescriptor const &srcDesc,\n-float *dst, BufferDescriptor const &dstDesc, float *du, BufferDescriptor const\n-&duDesc, float *dv, BufferDescriptor const &dvDesc, float *duu,\n-BufferDescriptor const &duuDesc, float *duv, BufferDescriptor const &duvDesc,\n-float *dvv, BufferDescriptor const &dvvDesc, const int *sizes, const int\n-*offsets, const int *indices, const float *weights, const float *duWeights,\n-const float *dvWeights, const float *duuWeights, const float *duvWeights, const\n-float *dvvWeights, int start, int end)\n-Static eval stencils function with derivatives, which takes raw CPU pointers\n-for input and output.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-static bool EvalPatches(const float *src, BufferDescriptor const &srcDesc,\n-float *dst, BufferDescriptor const &dstDesc, float *du, BufferDescriptor const\n-&duDesc, float *dv, BufferDescriptor const &dvDesc, float *duu,\n-BufferDescriptor const &duuDesc, float *duv, BufferDescriptor const &duvDesc,\n-float *dvv, BufferDescriptor const &dvvDesc, int numPatchCoords, PatchCoord\n-const *patchCoords, PatchArray const *patchArrays, const int *patchIndexBuffer,\n-PatchParam const *patchParamBuffer)\n-Static limit eval function. It takes an array of PatchCoord and evaluate limit\n-values on given PatchT...\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bS_\by_\bn_\bc_\bh_\br_\bo_\bn_\bi_\bz_\be\n-static void Synchronize(void *deviceContext=NULL)\n-synchronize all asynchronous computation invoked on this device.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n-static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n-*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n-BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const\n-&duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER\n-*dvvBuffer, BufferDescriptor const &dvvDesc, int numPatchCoords,\n-PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, TbbEvaluator const\n-*instance=NULL, void *deviceContext=NULL)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b9_\b7_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n-static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor\n-const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,\n-DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n-BufferDescriptor const &dvDesc, int numPatchCoords, PATCHCOORD_BUFFER\n-*patchCoords, PATCH_TABLE *patchTable, int fvarChannel, TbbEvaluator const\n-*instance=NULL, void *deviceContext=NULL)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b1_\b0_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-static bool EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &srcDesc,\n-DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER *duBuffer,\n-BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const\n-&dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE\n-*patchTable, TbbEvaluator const *instance=NULL, void *deviceContext=NULL)\n-Generic limit eval function with derivatives. This function has a same\n-signature as other device kern...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b5_\b1_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n-static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor\n-const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int\n-numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int\n-fvarChannel, TbbEvaluator const *instance=NULL, void *deviceContext=NULL)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b0_\b3_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-static bool EvalPatches(const float *src, BufferDescriptor const &srcDesc,\n-float *dst, BufferDescriptor const &dstDesc, float *du, BufferDescriptor const\n-&duDesc, float *dv, BufferDescriptor const &dvDesc, int numPatchCoords,\n-PatchCoord const *patchCoords, PatchArray const *patchArrays, const int\n-*patchIndexBuffer, PatchParam const *patchParamBuffer)\n-Static limit eval function. It takes an array of PatchCoord and evaluate limit\n-values on given PatchT...\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bS_\be_\bt_\bN_\bu_\bm_\bT_\bh_\br_\be_\ba_\bd_\bs\n-static void SetNumThreads(int numThreads)\n-Deprecated. Client code should initialize TBB.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-static bool EvalPatches(const float *src, BufferDescriptor const &srcDesc,\n-float *dst, BufferDescriptor const &dstDesc, int numPatchCoords, const\n-PatchCoord *patchCoords, const PatchArray *patchArrays, const int\n-*patchIndexBuffer, const PatchParam *patchParamBuffer)\n-Static limit eval function. It takes an array of PatchCoord and evaluate limit\n-values on given PatchT...\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-static bool EvalStencils(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, DST_BUFFER\n-*duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n-BufferDescriptor const &dvDesc, STENCIL_TABLE const *stencilTable, const\n-TbbEvaluator *instance=NULL, void *deviceContext=NULL)\n-Generic static eval stencils function with derivatives. This function has a\n-same signature as other d...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b6_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n-static bool EvalPatchesFaceVarying(SRC_BUFFER *srcBuffer, BufferDescriptor\n-const &srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc,\n-DST_BUFFER *duBuffer, BufferDescriptor const &duDesc, DST_BUFFER *dvBuffer,\n-BufferDescriptor const &dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const\n-&duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &duvDesc, DST_BUFFER\n-*dvvBuffer, BufferDescriptor const &dvvDesc, int numPatchCoords,\n-PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, int fvarChannel,\n-TbbEvaluator const *instance=NULL, void *deviceContext=NULL)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b1_\b1_\b8_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b:_\b:_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs_\bV_\ba_\br_\by_\bi_\bn_\bg\n-static bool EvalPatchesVarying(SRC_BUFFER *srcBuffer, BufferDescriptor const\n-&srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &dstDesc, int\n-numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable,\n-TbbEvaluator const *instance=NULL, void *deviceContext=NULL)\n-Generic limit eval function. This function has a same signature as other device\n-kernels have so that ...\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh_\b:_\b8_\b2_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd\n-Coordinates set on a patch table.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b4_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b6_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b1_\b2_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\bA_\br_\br_\ba_\by\n+Vtr::ConstArray< PatchDescriptor > ConstPatchDescriptorArray\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b1_\b4_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\bT_\by_\bp_\be\n+SchemeType\n+Enumerated type for all subdivision schemes supported by OpenSubdiv.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b3_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n+Describes the type of a patch.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b4_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bT_\by_\bp_\be\n+Type\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b4_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bL_\bI_\bN_\bE_\bS\n+@ LINES\n+lines (useful for cage drawing)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b5_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bQ_\bU_\bA_\bD_\bS\n+@ QUADS\n+4-sided quadrilateral (bilinear)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b5_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bN_\bO_\bN_\b__\bP_\bA_\bT_\bC_\bH\n+@ NON_PATCH\n+undefined\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b4_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bL_\bO_\bO_\bP\n+@ LOOP\n+regular triangular patch for the Loop scheme\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b5_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bG_\bR_\bE_\bG_\bO_\bR_\bY_\b__\bT_\bR_\bI_\bA_\bN_\bG_\bL_\bE\n+@ GREGORY_TRIANGLE\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b6_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bT_\bR_\bI_\bA_\bN_\bG_\bL_\bE_\bS\n+@ TRIANGLES\n+3-sided triangle\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b5_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bG_\bR_\bE_\bG_\bO_\bR_\bY_\b__\bB_\bO_\bU_\bN_\bD_\bA_\bR_\bY\n+@ GREGORY_BOUNDARY\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b6_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bG_\bR_\bE_\bG_\bO_\bR_\bY_\b__\bB_\bA_\bS_\bI_\bS\n+@ GREGORY_BASIS\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b6_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bP_\bO_\bI_\bN_\bT_\bS\n+@ POINTS\n+points (useful for cage drawing)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b5_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bG_\bR_\bE_\bG_\bO_\bR_\bY\n+@ GREGORY\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b6_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bR_\bE_\bG_\bU_\bL_\bA_\bR\n+@ REGULAR\n+regular B-Spline patch for the Catmark scheme\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b5_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bI_\bs_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be\n+bool IsAdaptive() const\n+Returns true if the type is an adaptive patch.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b9_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bG_\be_\bt_\bT_\by_\bp_\be\n+Type GetType() const\n+Returns the type of the patch.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b8_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bG_\be_\bt_\bG_\br_\be_\bg_\bo_\br_\by_\bB_\ba_\bs_\bi_\bs_\bP_\ba_\bt_\bc_\bh_\bS_\bi_\bz_\be\n+static short GetGregoryBasisPatchSize()\n+Number of control vertices of Gregory patch basis (20)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b1_\b2_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n+short GetNumControlVertices() const\n+Returns the number of control vertices expected for a patch of the type\n+described.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b1_\b1_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n+PatchDescriptor(PatchDescriptor const &d)\n+Copy Constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b7_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b=\n+bool operator==(PatchDescriptor const other) const\n+True if the descriptors are identical.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b1_\b8_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bG_\be_\bt_\bR_\be_\bg_\bu_\bl_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bS_\bi_\bz_\be\n+static short GetRegularPatchSize()\n+Number of control vertices of Regular Patches in table.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b1_\b2_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n+short GetNumFVarControlVertices() const\n+Deprecated.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b1_\b1_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n+PatchDescriptor(int type)\n+Constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b7_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n+PatchDescriptor & operator=(PatchDescriptor const &d)\n+Assignment operator.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b8_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bI_\bs_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be\n+static bool IsAdaptive(Type type)\n+Returns true if the type is an adaptive (non-linear) patch.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b9_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b<\n+bool operator<(PatchDescriptor const other) const\n+Allows ordering of patches by type.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b1_\b7_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bG_\be_\bt_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bS_\bi_\bz_\be\n+static short GetGregoryPatchSize()\n+Number of control vertices of Gregory (and Gregory Boundary) Patches in table.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b1_\b2_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bp_\br_\bi_\bn_\bt\n+void print() const\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:\n+_\bG_\be_\bt_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\bs\n+static Vtr::ConstArray< PatchDescriptor > GetAdaptivePatchDescriptors(Sdc::\n+SchemeType type)\n+Returns a vector of all the legal patch descriptors for the given adaptive\n+subdivision scheme.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n+PatchDescriptor()\n+Default constructor.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b6_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b5_\b3\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bt_\bb_\bb_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh\n+    * _\bf_\ba_\br\n+    * _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00860.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00860.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/d3d11Mesh.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/sdc/options.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -88,43 +88,42 @@\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n-<a href=\"#namespaces\">Namespaces</a> &#124;\n-<a href=\"#typedef-members\">Typedefs</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">d3d11Mesh.h File Reference</div></div>\n+<a href=\"#nested-classes\">Classes</a> &#124;\n+<a href=\"#namespaces\">Namespaces</a>  </div>\n+  <div class=\"headertitle\"><div class=\"title\">options.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00872_source.html\">../osd/mesh.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00815_source.html\">../osd/d3d11PatchTable.h</a>&quot;</code><br />\n </div>\n <p><a href=\"a00860_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n+<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n+Classes</h2></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01337.html\">Options</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">All supported options applying to subdivision scheme.  <a href=\"a01337.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+</table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n+<tr class=\"memitem:a00913\" id=\"r_a00913\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00913.html\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-</table><table class=\"memberdecls\">\n-<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"typedef-members\" name=\"typedef-members\"></a>\n-Typedefs</h2></td></tr>\n-<tr class=\"memitem:ae5c8e80d05d6eaee105d8eecfa9ab609\" id=\"r_ae5c8e80d05d6eaee105d8eecfa9ab609\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef <a class=\"el\" href=\"a01269.html\">MeshInterface</a>&lt; <a class=\"el\" href=\"a01209.html\">D3D11PatchTable</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html#ae5c8e80d05d6eaee105d8eecfa9ab609\">D3D11MeshInterface</a></td></tr>\n-<tr class=\"separator:ae5c8e80d05d6eaee105d8eecfa9ab609\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00860.html\">d3d11Mesh.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_f61368944c63c2c1f8c69bc232e59c39.html\">sdc</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00860.html\">options.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,24 +1,23 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bT_\by_\bp_\be_\bd_\be_\bf_\bs\n-d3d11Mesh.h File Reference\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+options.h File Reference\n #include \"../version.h\"\n-#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bm_\be_\bs_\bh_\b._\bh\"\n-#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bd_\b3_\bd_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n+C\bCl\bla\bas\bss\bse\bes\bs\n+class \u00a0 _\bO_\bp_\bt_\bi_\bo_\bn_\bs\n+\u00a0       All supported options applying to subdivision scheme. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n-\u00a0\n-T\bTy\byp\bpe\bed\bde\bef\bfs\bs\n-typedef _\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be< _\bD_\b3_\bD_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be >\u00a0 _\bD_\b3_\bD_\b1_\b1_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bd_\b3_\bd_\b1_\b1_\bM_\be_\bs_\bh_\b._\bh\n+    * _\bs_\bd_\bc\n+    * _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00860.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00860.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,3 +1,3 @@\n var a00860 = [\n-    [\"D3D11MeshInterface\", \"a00860.html#ae5c8e80d05d6eaee105d8eecfa9ab609\", null]\n+    [\"Options\", \"a01337.html\", \"a01337\"]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00860_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00860_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/d3d11Mesh.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/sdc/options.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">d3d11Mesh.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">options.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00860.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2013 Pixar</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2014 DreamWorks Animation LLC.</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -118,46 +118,137 @@\n <div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_D3D11MESH_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_D3D11MESH_H</span></div>\n-<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n-<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../osd/mesh.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../osd/d3d11PatchTable.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span> </div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span> </div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"keyword\">namespace </span>Osd {</div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span> </div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html#ae5c8e80d05d6eaee105d8eecfa9ab609\">   38</a></span><span class=\"keyword\">typedef</span> <a class=\"code hl_class\" href=\"a01269.html\">MeshInterface&lt;D3D11PatchTable&gt;</a> <a class=\"code hl_typedef\" href=\"a00912.html#ae5c8e80d05d6eaee105d8eecfa9ab609\">D3D11MeshInterface</a>;</div>\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span> </div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span> </div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span>} <span class=\"comment\">// end namespace Osd</span></div>\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span> </div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span> </div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span>}  <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span> </div>\n-<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_D3D11MESH_H</span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa00912_html_ae5c8e80d05d6eaee105d8eecfa9ab609\"><div class=\"ttname\"><a href=\"a00912.html#ae5c8e80d05d6eaee105d8eecfa9ab609\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11MeshInterface</a></div><div class=\"ttdeci\">MeshInterface&lt; D3D11PatchTable &gt; D3D11MeshInterface</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00860_source.html#l00038\">d3d11Mesh.h:38</a></div></div>\n-<div class=\"ttc\" id=\"aa01269_html\"><div class=\"ttname\"><a href=\"a01269.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshInterface</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00068\">mesh.h:68</a></div></div>\n+<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_SDC_OPTIONS_H</span></div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#define OPENSUBDIV3_SDC_OPTIONS_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span> </div>\n+<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span> </div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"keyword\">namespace </span>Sdc {</div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00051\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01337.html\">   51</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01337.html\">Options</a> {</div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"foldopen\" id=\"foldopen00053\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01337.html#acbf78f1a6abfc8db080ef7fb3c3f417e\">   53</a></span>    <span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"a01337.html#acbf78f1a6abfc8db080ef7fb3c3f417e\">VtxBoundaryInterpolation</a> {</div>\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span>        <a class=\"code hl_enumvalue\" href=\"a01337.html#acbf78f1a6abfc8db080ef7fb3c3f417ea5d15ed470f1f0ecce0549282de54a3ba\">VTX_BOUNDARY_NONE</a> = 0,        </div>\n+<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01337.html#acbf78f1a6abfc8db080ef7fb3c3f417ea9240987283549b42eeb262f088b68fdf\">   56</a></span>        <a class=\"code hl_enumvalue\" href=\"a01337.html#acbf78f1a6abfc8db080ef7fb3c3f417ea9240987283549b42eeb262f088b68fdf\">VTX_BOUNDARY_EDGE_ONLY</a>,       </div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span>        <a class=\"code hl_enumvalue\" href=\"a01337.html#acbf78f1a6abfc8db080ef7fb3c3f417eac6e5f52f358d3b6d62cc2b708a5a8757\">VTX_BOUNDARY_EDGE_AND_CORNER</a>  </div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01337.html#acbf78f1a6abfc8db080ef7fb3c3f417eac6e5f52f358d3b6d62cc2b708a5a8757\">   59</a></span>    };</div>\n+</div>\n+<div class=\"foldopen\" id=\"foldopen00060\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167b\">   60</a></span>    <span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167b\">FVarLinearInterpolation</a> {</div>\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167bac91a565721cd973b4d3cd3c697dda50f\">   61</a></span>        <a class=\"code hl_enumvalue\" href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167bac91a565721cd973b4d3cd3c697dda50f\">FVAR_LINEAR_NONE</a> = 0,         </div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167ba2d0edb4dd10e355f8089b4a7ab1d1d72\">   62</a></span>        <a class=\"code hl_enumvalue\" href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167ba2d0edb4dd10e355f8089b4a7ab1d1d72\">FVAR_LINEAR_CORNERS_ONLY</a>,     </div>\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167ba79d654b94893314766a372c630f142c6\">   63</a></span>        <a class=\"code hl_enumvalue\" href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167ba79d654b94893314766a372c630f142c6\">FVAR_LINEAR_CORNERS_PLUS1</a>,    </div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167ba6c323349983f89298e3ae7e06b9cdef6\">   64</a></span>        <a class=\"code hl_enumvalue\" href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167ba6c323349983f89298e3ae7e06b9cdef6\">FVAR_LINEAR_CORNERS_PLUS2</a>,    </div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167ba60007144d7e8d50ed9f907badecf8ea1\">   65</a></span>        <a class=\"code hl_enumvalue\" href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167ba60007144d7e8d50ed9f907badecf8ea1\">FVAR_LINEAR_BOUNDARIES</a>,       </div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span>        <a class=\"code hl_enumvalue\" href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167ba8d4df083104973fad1479109988e0387\">FVAR_LINEAR_ALL</a>               </div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167ba8d4df083104973fad1479109988e0387\">   67</a></span>    };</div>\n+</div>\n+<div class=\"foldopen\" id=\"foldopen00068\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01337.html#a16ec522dc0398bf1435a912cd669ffb0\">   68</a></span>    <span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"a01337.html#a16ec522dc0398bf1435a912cd669ffb0\">CreasingMethod</a> {</div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01337.html#a16ec522dc0398bf1435a912cd669ffb0a10f2956db48d2975424be2e52ebd544d\">   69</a></span>        <a class=\"code hl_enumvalue\" href=\"a01337.html#a16ec522dc0398bf1435a912cd669ffb0a10f2956db48d2975424be2e52ebd544d\">CREASE_UNIFORM</a> = 0,           </div>\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span>        <a class=\"code hl_enumvalue\" href=\"a01337.html#a16ec522dc0398bf1435a912cd669ffb0a1e31a583663dd65a7b2feffeb24268b5\">CREASE_CHAIKIN</a>                </div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01337.html#a16ec522dc0398bf1435a912cd669ffb0a1e31a583663dd65a7b2feffeb24268b5\">   71</a></span>    };</div>\n+</div>\n+<div class=\"foldopen\" id=\"foldopen00072\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01337.html#a10fe8c2b78e5c59377614876a362c38b\">   72</a></span>    <span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"a01337.html#a10fe8c2b78e5c59377614876a362c38b\">TriangleSubdivision</a> {</div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01337.html#a10fe8c2b78e5c59377614876a362c38ba2dd7b5ddb5288776e48d86049e56e730\">   73</a></span>        <a class=\"code hl_enumvalue\" href=\"a01337.html#a10fe8c2b78e5c59377614876a362c38ba2dd7b5ddb5288776e48d86049e56e730\">TRI_SUB_CATMARK</a> = 0,          </div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span>        <a class=\"code hl_enumvalue\" href=\"a01337.html#a10fe8c2b78e5c59377614876a362c38baf222ead5fa4875f2ea2794c2d765a87d\">TRI_SUB_SMOOTH</a>                </div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01337.html#a10fe8c2b78e5c59377614876a362c38baf222ead5fa4875f2ea2794c2d765a87d\">   75</a></span>    };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span> </div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00079\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01337.html#a28d39a844c3a37ab61d32ab7c6352f09\">   79</a></span>    <a class=\"code hl_function\" href=\"a01337.html#a28d39a844c3a37ab61d32ab7c6352f09\">Options</a>() : _vtxBoundInterp(<a class=\"code hl_enumvalue\" href=\"a01337.html#acbf78f1a6abfc8db080ef7fb3c3f417ea5d15ed470f1f0ecce0549282de54a3ba\">VTX_BOUNDARY_NONE</a>),</div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span>                _fvarLinInterp(<a class=\"code hl_enumvalue\" href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167ba8d4df083104973fad1479109988e0387\">FVAR_LINEAR_ALL</a>),</div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>                _creasingMethod(<a class=\"code hl_enumvalue\" href=\"a01337.html#a16ec522dc0398bf1435a912cd669ffb0a10f2956db48d2975424be2e52ebd544d\">CREASE_UNIFORM</a>),</div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>                _triangleSub(<a class=\"code hl_enumvalue\" href=\"a01337.html#a10fe8c2b78e5c59377614876a362c38ba2dd7b5ddb5288776e48d86049e56e730\">TRI_SUB_CATMARK</a>) { }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span> </div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>    <span class=\"comment\">//  Trivial get/set methods:</span></div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span> </div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01337.html#a590338ee8b544306b970a0c1445cd01f\">   89</a></span>    <a class=\"code hl_enumeration\" href=\"a01337.html#acbf78f1a6abfc8db080ef7fb3c3f417e\">VtxBoundaryInterpolation</a> <a class=\"code hl_function\" href=\"a01337.html#a590338ee8b544306b970a0c1445cd01f\">GetVtxBoundaryInterpolation</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (<a class=\"code hl_enumeration\" href=\"a01337.html#acbf78f1a6abfc8db080ef7fb3c3f417e\">VtxBoundaryInterpolation</a>) _vtxBoundInterp; }</div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span> </div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01337.html#a70997d63dc747e55154e2ab4b4354141\">   92</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01337.html#a70997d63dc747e55154e2ab4b4354141\">SetVtxBoundaryInterpolation</a>(<a class=\"code hl_enumeration\" href=\"a01337.html#acbf78f1a6abfc8db080ef7fb3c3f417e\">VtxBoundaryInterpolation</a> b) { _vtxBoundInterp = (EnumIntType) b; }</div>\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span> </div>\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01337.html#acab24306782f101827103b87bbe4b8dd\">   95</a></span>    <a class=\"code hl_enumeration\" href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167b\">FVarLinearInterpolation</a> <a class=\"code hl_function\" href=\"a01337.html#acab24306782f101827103b87bbe4b8dd\">GetFVarLinearInterpolation</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (<a class=\"code hl_enumeration\" href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167b\">FVarLinearInterpolation</a>) _fvarLinInterp; }</div>\n+<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span> </div>\n+<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01337.html#a2b335eb227194b4fc6fcec7f3c4b25ce\">   98</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01337.html#a2b335eb227194b4fc6fcec7f3c4b25ce\">SetFVarLinearInterpolation</a>(<a class=\"code hl_enumeration\" href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167b\">FVarLinearInterpolation</a> b) { _fvarLinInterp = (EnumIntType) b; }</div>\n+<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span> </div>\n+<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01337.html#a17dfce050325c0054b6e2fa422cb62b1\">  101</a></span>    <a class=\"code hl_enumeration\" href=\"a01337.html#a16ec522dc0398bf1435a912cd669ffb0\">CreasingMethod</a> <a class=\"code hl_function\" href=\"a01337.html#a17dfce050325c0054b6e2fa422cb62b1\">GetCreasingMethod</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (<a class=\"code hl_enumeration\" href=\"a01337.html#a16ec522dc0398bf1435a912cd669ffb0\">CreasingMethod</a>) _creasingMethod; }</div>\n+<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span> </div>\n+<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01337.html#afc9b634a338ac29f528ec02ea0e90f10\">  104</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01337.html#afc9b634a338ac29f528ec02ea0e90f10\">SetCreasingMethod</a>(<a class=\"code hl_enumeration\" href=\"a01337.html#a16ec522dc0398bf1435a912cd669ffb0\">CreasingMethod</a> c) { _creasingMethod = (EnumIntType) c; }</div>\n+<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span> </div>\n+<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01337.html#a17cbc048b495cdae28ce8ab569da02f4\">  107</a></span>    <a class=\"code hl_enumeration\" href=\"a01337.html#a10fe8c2b78e5c59377614876a362c38b\">TriangleSubdivision</a> <a class=\"code hl_function\" href=\"a01337.html#a17cbc048b495cdae28ce8ab569da02f4\">GetTriangleSubdivision</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (<a class=\"code hl_enumeration\" href=\"a01337.html#a10fe8c2b78e5c59377614876a362c38b\">TriangleSubdivision</a>) _triangleSub; }</div>\n+<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span> </div>\n+<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01337.html#a4a4af2e71173f0acc6f26b139ebaa592\">  110</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01337.html#a4a4af2e71173f0acc6f26b139ebaa592\">SetTriangleSubdivision</a>(<a class=\"code hl_enumeration\" href=\"a01337.html#a10fe8c2b78e5c59377614876a362c38b\">TriangleSubdivision</a> t) { _triangleSub = (EnumIntType) t; }</div>\n+<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span> </div>\n+<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span>    <span class=\"comment\">//  Use a small integer type to pack these rather than bitfields:</span></div>\n+<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span>    <span class=\"keyword\">typedef</span> <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> EnumIntType;</div>\n+<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span> </div>\n+<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\">  116</span>    EnumIntType _vtxBoundInterp;</div>\n+<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span>    EnumIntType _fvarLinInterp;</div>\n+<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\">  118</span>    EnumIntType _creasingMethod;</div>\n+<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span>    EnumIntType _triangleSub;</div>\n+<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\">  121</span> </div>\n+<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span>} <span class=\"comment\">// end namespace sdc</span></div>\n+<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span> </div>\n+<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span> </div>\n+<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_SDC_OPTIONS_H */</span><span class=\"preprocessor\"></span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa01337_html\"><div class=\"ttname\"><a href=\"a01337.html\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options</a></div><div class=\"ttdoc\">All supported options applying to subdivision scheme.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00860_source.html#l00051\">options.h:51</a></div></div>\n+<div class=\"ttc\" id=\"aa01337_html_a10fe8c2b78e5c59377614876a362c38b\"><div class=\"ttname\"><a href=\"a01337.html#a10fe8c2b78e5c59377614876a362c38b\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::TriangleSubdivision</a></div><div class=\"ttdeci\">TriangleSubdivision</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00860_source.html#l00072\">options.h:72</a></div></div>\n+<div class=\"ttc\" id=\"aa01337_html_a10fe8c2b78e5c59377614876a362c38ba2dd7b5ddb5288776e48d86049e56e730\"><div class=\"ttname\"><a href=\"a01337.html#a10fe8c2b78e5c59377614876a362c38ba2dd7b5ddb5288776e48d86049e56e730\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::TRI_SUB_CATMARK</a></div><div class=\"ttdeci\">@ TRI_SUB_CATMARK</div><div class=\"ttdoc\">Catmark weights (Catmark scheme only)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00860_source.html#l00073\">options.h:73</a></div></div>\n+<div class=\"ttc\" id=\"aa01337_html_a10fe8c2b78e5c59377614876a362c38baf222ead5fa4875f2ea2794c2d765a87d\"><div class=\"ttname\"><a href=\"a01337.html#a10fe8c2b78e5c59377614876a362c38baf222ead5fa4875f2ea2794c2d765a87d\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::TRI_SUB_SMOOTH</a></div><div class=\"ttdeci\">@ TRI_SUB_SMOOTH</div><div class=\"ttdoc\">&quot;smooth triangle&quot; weights (Catmark scheme only)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00860_source.html#l00075\">options.h:74</a></div></div>\n+<div class=\"ttc\" id=\"aa01337_html_a16ec522dc0398bf1435a912cd669ffb0\"><div class=\"ttname\"><a href=\"a01337.html#a16ec522dc0398bf1435a912cd669ffb0\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::CreasingMethod</a></div><div class=\"ttdeci\">CreasingMethod</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00860_source.html#l00068\">options.h:68</a></div></div>\n+<div class=\"ttc\" id=\"aa01337_html_a16ec522dc0398bf1435a912cd669ffb0a10f2956db48d2975424be2e52ebd544d\"><div class=\"ttname\"><a href=\"a01337.html#a16ec522dc0398bf1435a912cd669ffb0a10f2956db48d2975424be2e52ebd544d\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::CREASE_UNIFORM</a></div><div class=\"ttdeci\">@ CREASE_UNIFORM</div><div class=\"ttdoc\">Catmark rule.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00860_source.html#l00069\">options.h:69</a></div></div>\n+<div class=\"ttc\" id=\"aa01337_html_a16ec522dc0398bf1435a912cd669ffb0a1e31a583663dd65a7b2feffeb24268b5\"><div class=\"ttname\"><a href=\"a01337.html#a16ec522dc0398bf1435a912cd669ffb0a1e31a583663dd65a7b2feffeb24268b5\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::CREASE_CHAIKIN</a></div><div class=\"ttdeci\">@ CREASE_CHAIKIN</div><div class=\"ttdoc\">Chaikin rule.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00860_source.html#l00071\">options.h:70</a></div></div>\n+<div class=\"ttc\" id=\"aa01337_html_a17cbc048b495cdae28ce8ab569da02f4\"><div class=\"ttname\"><a href=\"a01337.html#a17cbc048b495cdae28ce8ab569da02f4\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::GetTriangleSubdivision</a></div><div class=\"ttdeci\">TriangleSubdivision GetTriangleSubdivision() const</div><div class=\"ttdoc\">Get triangle subdivision weights rule (Catmark scheme only !)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00860_source.html#l00107\">options.h:107</a></div></div>\n+<div class=\"ttc\" id=\"aa01337_html_a17dfce050325c0054b6e2fa422cb62b1\"><div class=\"ttname\"><a href=\"a01337.html#a17dfce050325c0054b6e2fa422cb62b1\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::GetCreasingMethod</a></div><div class=\"ttdeci\">CreasingMethod GetCreasingMethod() const</div><div class=\"ttdoc\">Get edge crease rule.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00860_source.html#l00101\">options.h:101</a></div></div>\n+<div class=\"ttc\" id=\"aa01337_html_a28d39a844c3a37ab61d32ab7c6352f09\"><div class=\"ttname\"><a href=\"a01337.html#a28d39a844c3a37ab61d32ab7c6352f09\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::Options</a></div><div class=\"ttdeci\">Options()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00860_source.html#l00079\">options.h:79</a></div></div>\n+<div class=\"ttc\" id=\"aa01337_html_a2b335eb227194b4fc6fcec7f3c4b25ce\"><div class=\"ttname\"><a href=\"a01337.html#a2b335eb227194b4fc6fcec7f3c4b25ce\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::SetFVarLinearInterpolation</a></div><div class=\"ttdeci\">void SetFVarLinearInterpolation(FVarLinearInterpolation b)</div><div class=\"ttdoc\">Set face-varying interpolation rule.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00860_source.html#l00098\">options.h:98</a></div></div>\n+<div class=\"ttc\" id=\"aa01337_html_a4a4af2e71173f0acc6f26b139ebaa592\"><div class=\"ttname\"><a href=\"a01337.html#a4a4af2e71173f0acc6f26b139ebaa592\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::SetTriangleSubdivision</a></div><div class=\"ttdeci\">void SetTriangleSubdivision(TriangleSubdivision t)</div><div class=\"ttdoc\">Set triangle subdivision weights rule (Catmark scheme only !)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00860_source.html#l00110\">options.h:110</a></div></div>\n+<div class=\"ttc\" id=\"aa01337_html_a590338ee8b544306b970a0c1445cd01f\"><div class=\"ttname\"><a href=\"a01337.html#a590338ee8b544306b970a0c1445cd01f\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::GetVtxBoundaryInterpolation</a></div><div class=\"ttdeci\">VtxBoundaryInterpolation GetVtxBoundaryInterpolation() const</div><div class=\"ttdoc\">Get vertex boundary interpolation rule.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00860_source.html#l00089\">options.h:89</a></div></div>\n+<div class=\"ttc\" id=\"aa01337_html_a5b87eaca6ca0833462c9d4ad84df167b\"><div class=\"ttname\"><a href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167b\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::FVarLinearInterpolation</a></div><div class=\"ttdeci\">FVarLinearInterpolation</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00860_source.html#l00060\">options.h:60</a></div></div>\n+<div class=\"ttc\" id=\"aa01337_html_a5b87eaca6ca0833462c9d4ad84df167ba2d0edb4dd10e355f8089b4a7ab1d1d72\"><div class=\"ttname\"><a href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167ba2d0edb4dd10e355f8089b4a7ab1d1d72\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::FVAR_LINEAR_CORNERS_ONLY</a></div><div class=\"ttdeci\">@ FVAR_LINEAR_CORNERS_ONLY</div><div class=\"ttdoc\">sharpen corners only</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00860_source.html#l00062\">options.h:62</a></div></div>\n+<div class=\"ttc\" id=\"aa01337_html_a5b87eaca6ca0833462c9d4ad84df167ba60007144d7e8d50ed9f907badecf8ea1\"><div class=\"ttname\"><a href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167ba60007144d7e8d50ed9f907badecf8ea1\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::FVAR_LINEAR_BOUNDARIES</a></div><div class=\"ttdeci\">@ FVAR_LINEAR_BOUNDARIES</div><div class=\"ttdoc\">sharpen all boundaries (&quot;always sharp&quot;)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00860_source.html#l00065\">options.h:65</a></div></div>\n+<div class=\"ttc\" id=\"aa01337_html_a5b87eaca6ca0833462c9d4ad84df167ba6c323349983f89298e3ae7e06b9cdef6\"><div class=\"ttname\"><a href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167ba6c323349983f89298e3ae7e06b9cdef6\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::FVAR_LINEAR_CORNERS_PLUS2</a></div><div class=\"ttdeci\">@ FVAR_LINEAR_CORNERS_PLUS2</div><div class=\"ttdoc\">(&quot;edge and corner + propagate corner&quot;)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00860_source.html#l00064\">options.h:64</a></div></div>\n+<div class=\"ttc\" id=\"aa01337_html_a5b87eaca6ca0833462c9d4ad84df167ba79d654b94893314766a372c630f142c6\"><div class=\"ttname\"><a href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167ba79d654b94893314766a372c630f142c6\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::FVAR_LINEAR_CORNERS_PLUS1</a></div><div class=\"ttdeci\">@ FVAR_LINEAR_CORNERS_PLUS1</div><div class=\"ttdoc\">(&quot;edge corner&quot;)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00860_source.html#l00063\">options.h:63</a></div></div>\n+<div class=\"ttc\" id=\"aa01337_html_a5b87eaca6ca0833462c9d4ad84df167ba8d4df083104973fad1479109988e0387\"><div class=\"ttname\"><a href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167ba8d4df083104973fad1479109988e0387\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::FVAR_LINEAR_ALL</a></div><div class=\"ttdeci\">@ FVAR_LINEAR_ALL</div><div class=\"ttdoc\">bilinear interpolation (&quot;bilinear&quot;)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00860_source.html#l00067\">options.h:66</a></div></div>\n+<div class=\"ttc\" id=\"aa01337_html_a5b87eaca6ca0833462c9d4ad84df167bac91a565721cd973b4d3cd3c697dda50f\"><div class=\"ttname\"><a href=\"a01337.html#a5b87eaca6ca0833462c9d4ad84df167bac91a565721cd973b4d3cd3c697dda50f\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::FVAR_LINEAR_NONE</a></div><div class=\"ttdeci\">@ FVAR_LINEAR_NONE</div><div class=\"ttdoc\">smooth everywhere (&quot;edge only&quot;)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00860_source.html#l00061\">options.h:61</a></div></div>\n+<div class=\"ttc\" id=\"aa01337_html_a70997d63dc747e55154e2ab4b4354141\"><div class=\"ttname\"><a href=\"a01337.html#a70997d63dc747e55154e2ab4b4354141\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::SetVtxBoundaryInterpolation</a></div><div class=\"ttdeci\">void SetVtxBoundaryInterpolation(VtxBoundaryInterpolation b)</div><div class=\"ttdoc\">Set vertex boundary interpolation rule.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00860_source.html#l00092\">options.h:92</a></div></div>\n+<div class=\"ttc\" id=\"aa01337_html_acab24306782f101827103b87bbe4b8dd\"><div class=\"ttname\"><a href=\"a01337.html#acab24306782f101827103b87bbe4b8dd\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::GetFVarLinearInterpolation</a></div><div class=\"ttdeci\">FVarLinearInterpolation GetFVarLinearInterpolation() const</div><div class=\"ttdoc\">Get face-varying interpolation rule.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00860_source.html#l00095\">options.h:95</a></div></div>\n+<div class=\"ttc\" id=\"aa01337_html_acbf78f1a6abfc8db080ef7fb3c3f417e\"><div class=\"ttname\"><a href=\"a01337.html#acbf78f1a6abfc8db080ef7fb3c3f417e\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::VtxBoundaryInterpolation</a></div><div class=\"ttdeci\">VtxBoundaryInterpolation</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00860_source.html#l00053\">options.h:53</a></div></div>\n+<div class=\"ttc\" id=\"aa01337_html_acbf78f1a6abfc8db080ef7fb3c3f417ea5d15ed470f1f0ecce0549282de54a3ba\"><div class=\"ttname\"><a href=\"a01337.html#acbf78f1a6abfc8db080ef7fb3c3f417ea5d15ed470f1f0ecce0549282de54a3ba\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::VTX_BOUNDARY_NONE</a></div><div class=\"ttdeci\">@ VTX_BOUNDARY_NONE</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00860_source.html#l00055\">options.h:54</a></div></div>\n+<div class=\"ttc\" id=\"aa01337_html_acbf78f1a6abfc8db080ef7fb3c3f417ea9240987283549b42eeb262f088b68fdf\"><div class=\"ttname\"><a href=\"a01337.html#acbf78f1a6abfc8db080ef7fb3c3f417ea9240987283549b42eeb262f088b68fdf\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::VTX_BOUNDARY_EDGE_ONLY</a></div><div class=\"ttdeci\">@ VTX_BOUNDARY_EDGE_ONLY</div><div class=\"ttdoc\">all boundary edges sharpened and interpolated</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00860_source.html#l00056\">options.h:56</a></div></div>\n+<div class=\"ttc\" id=\"aa01337_html_acbf78f1a6abfc8db080ef7fb3c3f417eac6e5f52f358d3b6d62cc2b708a5a8757\"><div class=\"ttname\"><a href=\"a01337.html#acbf78f1a6abfc8db080ef7fb3c3f417eac6e5f52f358d3b6d62cc2b708a5a8757\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::VTX_BOUNDARY_EDGE_AND_CORNER</a></div><div class=\"ttdeci\">@ VTX_BOUNDARY_EDGE_AND_CORNER</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00860_source.html#l00059\">options.h:57</a></div></div>\n+<div class=\"ttc\" id=\"aa01337_html_afc9b634a338ac29f528ec02ea0e90f10\"><div class=\"ttname\"><a href=\"a01337.html#afc9b634a338ac29f528ec02ea0e90f10\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::SetCreasingMethod</a></div><div class=\"ttdeci\">void SetCreasingMethod(CreasingMethod c)</div><div class=\"ttdoc\">Set edge crease rule.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00860_source.html#l00104\">options.h:104</a></div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00860.html\">d3d11Mesh.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_f61368944c63c2c1f8c69bc232e59c39.html\">sdc</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00860.html\">options.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-d3d11Mesh.h\n+options.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2013 Pixar\n+2// Copyright 2014 DreamWorks Animation LLC.\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -23,43 +23,200 @@\n 17//\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n-24\n-25#ifndef OPENSUBDIV3_OSD_D3D11MESH_H\n-26#define OPENSUBDIV3_OSD_D3D11MESH_H\n-27\n-28#include \"../version.h\"\n-29\n-30#include \"../osd/mesh.h\"\n-31#include \"../osd/d3d11PatchTable.h\"\n-32\n-33namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-34namespace OPENSUBDIV_VERSION {\n-35\n-36namespace Osd {\n-37\n-_\b3_\b8typedef _\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\bD_\b3_\bD_\b1_\b1_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b> _\bD_\b3_\bD_\b1_\b1_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be;\n-39\n-40\n-41} // end namespace Osd\n-42\n-43} // end namespace OPENSUBDIV_VERSION\n-44using namespace OPENSUBDIV_VERSION;\n-45\n-46} // end namespace OpenSubdiv\n-47\n-48#endif // OPENSUBDIV3_OSD_D3D11MESH_H\n+24#ifndef OPENSUBDIV3_SDC_OPTIONS_H\n+25#define OPENSUBDIV3_SDC_OPTIONS_H\n+26\n+27#include \"../version.h\"\n+28\n+29namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+30namespace OPENSUBDIV_VERSION {\n+31\n+32namespace Sdc {\n+33\n+50\n+_\b5_\b1class _\bO_\bp_\bt_\bi_\bo_\bn_\bs {\n+52public:\n+_\b5_\b3 enum _\bV_\bt_\bx_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn {\n+54 _\bV_\bT_\bX_\b__\bB_\bO_\bU_\bN_\bD_\bA_\bR_\bY_\b__\bN_\bO_\bN_\bE = 0,\n+_\b5_\b6 _\bV_\bT_\bX_\b__\bB_\bO_\bU_\bN_\bD_\bA_\bR_\bY_\b__\bE_\bD_\bG_\bE_\b__\bO_\bN_\bL_\bY,\n+57 _\bV_\bT_\bX_\b__\bB_\bO_\bU_\bN_\bD_\bA_\bR_\bY_\b__\bE_\bD_\bG_\bE_\b__\bA_\bN_\bD_\b__\bC_\bO_\bR_\bN_\bE_\bR\n+_\b5_\b9 };\n+_\b6_\b0 enum _\bF_\bV_\ba_\br_\bL_\bi_\bn_\be_\ba_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn {\n+_\b6_\b1 _\bF_\bV_\bA_\bR_\b__\bL_\bI_\bN_\bE_\bA_\bR_\b__\bN_\bO_\bN_\bE = 0,\n+_\b6_\b2 _\bF_\bV_\bA_\bR_\b__\bL_\bI_\bN_\bE_\bA_\bR_\b__\bC_\bO_\bR_\bN_\bE_\bR_\bS_\b__\bO_\bN_\bL_\bY,\n+_\b6_\b3 _\bF_\bV_\bA_\bR_\b__\bL_\bI_\bN_\bE_\bA_\bR_\b__\bC_\bO_\bR_\bN_\bE_\bR_\bS_\b__\bP_\bL_\bU_\bS_\b1,\n+_\b6_\b4 _\bF_\bV_\bA_\bR_\b__\bL_\bI_\bN_\bE_\bA_\bR_\b__\bC_\bO_\bR_\bN_\bE_\bR_\bS_\b__\bP_\bL_\bU_\bS_\b2,\n+_\b6_\b5 _\bF_\bV_\bA_\bR_\b__\bL_\bI_\bN_\bE_\bA_\bR_\b__\bB_\bO_\bU_\bN_\bD_\bA_\bR_\bI_\bE_\bS,\n+66 _\bF_\bV_\bA_\bR_\b__\bL_\bI_\bN_\bE_\bA_\bR_\b__\bA_\bL_\bL\n+_\b6_\b7 };\n+_\b6_\b8 enum _\bC_\br_\be_\ba_\bs_\bi_\bn_\bg_\bM_\be_\bt_\bh_\bo_\bd {\n+_\b6_\b9 _\bC_\bR_\bE_\bA_\bS_\bE_\b__\bU_\bN_\bI_\bF_\bO_\bR_\bM = 0,\n+70 _\bC_\bR_\bE_\bA_\bS_\bE_\b__\bC_\bH_\bA_\bI_\bK_\bI_\bN\n+_\b7_\b1 };\n+_\b7_\b2 enum _\bT_\br_\bi_\ba_\bn_\bg_\bl_\be_\bS_\bu_\bb_\bd_\bi_\bv_\bi_\bs_\bi_\bo_\bn {\n+_\b7_\b3 _\bT_\bR_\bI_\b__\bS_\bU_\bB_\b__\bC_\bA_\bT_\bM_\bA_\bR_\bK = 0,\n+74 _\bT_\bR_\bI_\b__\bS_\bU_\bB_\b__\bS_\bM_\bO_\bO_\bT_\bH\n+_\b7_\b5 };\n+76\n+77public:\n+78\n+_\b7_\b9 _\bO_\bp_\bt_\bi_\bo_\bn_\bs() : _vtxBoundInterp(_\bV_\bT_\bX_\b__\bB_\bO_\bU_\bN_\bD_\bA_\bR_\bY_\b__\bN_\bO_\bN_\bE),\n+80 _fvarLinInterp(_\bF_\bV_\bA_\bR_\b__\bL_\bI_\bN_\bE_\bA_\bR_\b__\bA_\bL_\bL),\n+81 _creasingMethod(_\bC_\bR_\bE_\bA_\bS_\bE_\b__\bU_\bN_\bI_\bF_\bO_\bR_\bM),\n+82 _triangleSub(_\bT_\bR_\bI_\b__\bS_\bU_\bB_\b__\bC_\bA_\bT_\bM_\bA_\bR_\bK) { }\n+83\n+84 //\n+85 // Trivial get/set methods:\n+86 //\n+87\n+_\b8_\b9 _\bV_\bt_\bx_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn _\bG_\be_\bt_\bV_\bt_\bx_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn() const { return\n+(_\bV_\bt_\bx_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn) _vtxBoundInterp; }\n+90\n+_\b9_\b2 void _\bS_\be_\bt_\bV_\bt_\bx_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn(_\bV_\bt_\bx_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn b)\n+{ _vtxBoundInterp = (EnumIntType) b; }\n+93\n+_\b9_\b5 _\bF_\bV_\ba_\br_\bL_\bi_\bn_\be_\ba_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn _\bG_\be_\bt_\bF_\bV_\ba_\br_\bL_\bi_\bn_\be_\ba_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn() const { return\n+(_\bF_\bV_\ba_\br_\bL_\bi_\bn_\be_\ba_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn) _fvarLinInterp; }\n+96\n+_\b9_\b8 void _\bS_\be_\bt_\bF_\bV_\ba_\br_\bL_\bi_\bn_\be_\ba_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn(_\bF_\bV_\ba_\br_\bL_\bi_\bn_\be_\ba_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn b) { _fvarLinInterp\n+= (EnumIntType) b; }\n+99\n+_\b1_\b0_\b1 _\bC_\br_\be_\ba_\bs_\bi_\bn_\bg_\bM_\be_\bt_\bh_\bo_\bd _\bG_\be_\bt_\bC_\br_\be_\ba_\bs_\bi_\bn_\bg_\bM_\be_\bt_\bh_\bo_\bd() const { return (_\bC_\br_\be_\ba_\bs_\bi_\bn_\bg_\bM_\be_\bt_\bh_\bo_\bd)\n+_creasingMethod; }\n+102\n+_\b1_\b0_\b4 void _\bS_\be_\bt_\bC_\br_\be_\ba_\bs_\bi_\bn_\bg_\bM_\be_\bt_\bh_\bo_\bd(_\bC_\br_\be_\ba_\bs_\bi_\bn_\bg_\bM_\be_\bt_\bh_\bo_\bd c) { _creasingMethod = (EnumIntType)\n+c; }\n+105\n+_\b1_\b0_\b7 _\bT_\br_\bi_\ba_\bn_\bg_\bl_\be_\bS_\bu_\bb_\bd_\bi_\bv_\bi_\bs_\bi_\bo_\bn _\bG_\be_\bt_\bT_\br_\bi_\ba_\bn_\bg_\bl_\be_\bS_\bu_\bb_\bd_\bi_\bv_\bi_\bs_\bi_\bo_\bn() const { return\n+(_\bT_\br_\bi_\ba_\bn_\bg_\bl_\be_\bS_\bu_\bb_\bd_\bi_\bv_\bi_\bs_\bi_\bo_\bn) _triangleSub; }\n+108\n+_\b1_\b1_\b0 void _\bS_\be_\bt_\bT_\br_\bi_\ba_\bn_\bg_\bl_\be_\bS_\bu_\bb_\bd_\bi_\bv_\bi_\bs_\bi_\bo_\bn(_\bT_\br_\bi_\ba_\bn_\bg_\bl_\be_\bS_\bu_\bb_\bd_\bi_\bv_\bi_\bs_\bi_\bo_\bn t) { _triangleSub =\n+(EnumIntType) t; }\n+111\n+112private:\n+113 // Use a small integer type to pack these rather than bitfields:\n+114 typedef unsigned char EnumIntType;\n+115\n+116 EnumIntType _vtxBoundInterp;\n+117 EnumIntType _fvarLinInterp;\n+118 EnumIntType _creasingMethod;\n+119 EnumIntType _triangleSub;\n+120};\n+121\n+122} // end namespace sdc\n+123\n+124} // end namespace OPENSUBDIV_VERSION\n+125using namespace OPENSUBDIV_VERSION;\n+126} // end namespace OpenSubdiv\n+127\n+128#endif /* OPENSUBDIV3_SDC_OPTIONS_H */\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-MeshInterface< D3D11PatchTable > D3D11MeshInterface\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bd_\b3_\bd_\b1_\b1_\bM_\be_\bs_\bh_\b._\bh_\b:_\b3_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b6_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n+All supported options applying to subdivision scheme.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b5_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bT_\br_\bi_\ba_\bn_\bg_\bl_\be_\bS_\bu_\bb_\bd_\bi_\bv_\bi_\bs_\bi_\bo_\bn\n+TriangleSubdivision\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b7_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bT_\bR_\bI_\b__\bS_\bU_\bB_\b__\bC_\bA_\bT_\bM_\bA_\bR_\bK\n+@ TRI_SUB_CATMARK\n+Catmark weights (Catmark scheme only)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b7_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bT_\bR_\bI_\b__\bS_\bU_\bB_\b__\bS_\bM_\bO_\bO_\bT_\bH\n+@ TRI_SUB_SMOOTH\n+\"smooth triangle\" weights (Catmark scheme only)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b7_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bC_\br_\be_\ba_\bs_\bi_\bn_\bg_\bM_\be_\bt_\bh_\bo_\bd\n+CreasingMethod\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b6_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bC_\bR_\bE_\bA_\bS_\bE_\b__\bU_\bN_\bI_\bF_\bO_\bR_\bM\n+@ CREASE_UNIFORM\n+Catmark rule.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b6_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bC_\bR_\bE_\bA_\bS_\bE_\b__\bC_\bH_\bA_\bI_\bK_\bI_\bN\n+@ CREASE_CHAIKIN\n+Chaikin rule.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b7_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bG_\be_\bt_\bT_\br_\bi_\ba_\bn_\bg_\bl_\be_\bS_\bu_\bb_\bd_\bi_\bv_\bi_\bs_\bi_\bo_\bn\n+TriangleSubdivision GetTriangleSubdivision() const\n+Get triangle subdivision weights rule (Catmark scheme only !)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b1_\b0_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bG_\be_\bt_\bC_\br_\be_\ba_\bs_\bi_\bn_\bg_\bM_\be_\bt_\bh_\bo_\bd\n+CreasingMethod GetCreasingMethod() const\n+Get edge crease rule.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b1_\b0_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n+Options()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b7_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bS_\be_\bt_\bF_\bV_\ba_\br_\bL_\bi_\bn_\be_\ba_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+void SetFVarLinearInterpolation(FVarLinearInterpolation b)\n+Set face-varying interpolation rule.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b9_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bS_\be_\bt_\bT_\br_\bi_\ba_\bn_\bg_\bl_\be_\bS_\bu_\bb_\bd_\bi_\bv_\bi_\bs_\bi_\bo_\bn\n+void SetTriangleSubdivision(TriangleSubdivision t)\n+Set triangle subdivision weights rule (Catmark scheme only !)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b1_\b1_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bG_\be_\bt_\bV_\bt_\bx_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+VtxBoundaryInterpolation GetVtxBoundaryInterpolation() const\n+Get vertex boundary interpolation rule.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b8_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bF_\bV_\ba_\br_\bL_\bi_\bn_\be_\ba_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+FVarLinearInterpolation\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b6_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bF_\bV_\bA_\bR_\b__\bL_\bI_\bN_\bE_\bA_\bR_\b__\bC_\bO_\bR_\bN_\bE_\bR_\bS_\b__\bO_\bN_\bL_\bY\n+@ FVAR_LINEAR_CORNERS_ONLY\n+sharpen corners only\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b6_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bF_\bV_\bA_\bR_\b__\bL_\bI_\bN_\bE_\bA_\bR_\b__\bB_\bO_\bU_\bN_\bD_\bA_\bR_\bI_\bE_\bS\n+@ FVAR_LINEAR_BOUNDARIES\n+sharpen all boundaries (\"always sharp\")\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b6_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bF_\bV_\bA_\bR_\b__\bL_\bI_\bN_\bE_\bA_\bR_\b__\bC_\bO_\bR_\bN_\bE_\bR_\bS_\b__\bP_\bL_\bU_\bS_\b2\n+@ FVAR_LINEAR_CORNERS_PLUS2\n+(\"edge and corner + propagate corner\")\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b6_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bF_\bV_\bA_\bR_\b__\bL_\bI_\bN_\bE_\bA_\bR_\b__\bC_\bO_\bR_\bN_\bE_\bR_\bS_\b__\bP_\bL_\bU_\bS_\b1\n+@ FVAR_LINEAR_CORNERS_PLUS1\n+(\"edge corner\")\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b6_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bF_\bV_\bA_\bR_\b__\bL_\bI_\bN_\bE_\bA_\bR_\b__\bA_\bL_\bL\n+@ FVAR_LINEAR_ALL\n+bilinear interpolation (\"bilinear\")\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b6_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bF_\bV_\bA_\bR_\b__\bL_\bI_\bN_\bE_\bA_\bR_\b__\bN_\bO_\bN_\bE\n+@ FVAR_LINEAR_NONE\n+smooth everywhere (\"edge only\")\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b6_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bS_\be_\bt_\bV_\bt_\bx_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+void SetVtxBoundaryInterpolation(VtxBoundaryInterpolation b)\n+Set vertex boundary interpolation rule.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b9_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bG_\be_\bt_\bF_\bV_\ba_\br_\bL_\bi_\bn_\be_\ba_\br_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+FVarLinearInterpolation GetFVarLinearInterpolation() const\n+Get face-varying interpolation rule.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b9_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bV_\bt_\bx_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+VtxBoundaryInterpolation\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b5_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bV_\bT_\bX_\b__\bB_\bO_\bU_\bN_\bD_\bA_\bR_\bY_\b__\bN_\bO_\bN_\bE\n+@ VTX_BOUNDARY_NONE\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b5_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bV_\bT_\bX_\b__\bB_\bO_\bU_\bN_\bD_\bA_\bR_\bY_\b__\bE_\bD_\bG_\bE_\b__\bO_\bN_\bL_\bY\n+@ VTX_BOUNDARY_EDGE_ONLY\n+all boundary edges sharpened and interpolated\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b5_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bV_\bT_\bX_\b__\bB_\bO_\bU_\bN_\bD_\bA_\bR_\bY_\b__\bE_\bD_\bG_\bE_\b__\bA_\bN_\bD_\b__\bC_\bO_\bR_\bN_\bE_\bR\n+@ VTX_BOUNDARY_EDGE_AND_CORNER\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b5_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bS_\be_\bt_\bC_\br_\be_\ba_\bs_\bi_\bn_\bg_\bM_\be_\bt_\bh_\bo_\bd\n+void SetCreasingMethod(CreasingMethod c)\n+Set edge crease rule.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b1_\b0_\b4\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bd_\b3_\bd_\b1_\b1_\bM_\be_\bs_\bh_\b._\bh\n+    * _\bs_\bd_\bc\n+    * _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00863.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00863.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/d3d11LegacyGregoryPatchTable.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/sdc/scheme.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -90,41 +90,49 @@\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> &#124;\n <a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">d3d11LegacyGregoryPatchTable.h File Reference</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">scheme.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00761_source.html\">../far/patchTable.h</a>&quot;</code><br />\n-<code>#include &quot;../osd/nonCopyable.h&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a01492_source.html\">../sdc/types.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00860_source.html\">../sdc/options.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00869_source.html\">../sdc/crease.h</a>&quot;</code><br />\n+<code>#include &lt;cassert&gt;</code><br />\n+<code>#include &lt;cstdlib&gt;</code><br />\n+<code>#include &lt;vector&gt;</code><br />\n </div>\n <p><a href=\"a00863_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01205.html\">D3D11LegacyGregoryPatchTable</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01341.html\">Scheme&lt; SCHEME_TYPE &gt;</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"a01341.html\" title=\"Scheme is a class template which provides all implementation for the subdivision schemes supported by...\">Scheme</a> is a class template which provides all implementation for the subdivision schemes supported by <a class=\"el\" href=\"a00905.html\">OpenSubdiv</a> through specializations of the methods of each. An instance of Scheme&lt;SCHEME_TYPE&gt; includes a set of <a class=\"el\" href=\"a01337.html\" title=\"All supported options applying to subdivision scheme.\">Options</a> that will dictate the variable aspects of its behavior. <br  />\n+  <a href=\"a01341.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01345.html\">Scheme&lt; SCHEME_TYPE &gt;::LocalMask&lt; WEIGHT &gt;</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n+<tr class=\"memitem:a00913\" id=\"r_a00913\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00913.html\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00863.html\">d3d11LegacyGregoryPatchTable.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_f61368944c63c2c1f8c69bc232e59c39.html\">sdc</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00863.html\">scheme.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,24 +1,35 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-d3d11LegacyGregoryPatchTable.h File Reference\n+scheme.h File Reference\n #include \"../version.h\"\n-#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh\"\n-#include \"../osd/nonCopyable.h\"\n+#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n+#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh\"\n+#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bc_\br_\be_\ba_\bs_\be_\b._\bh\"\n+#include <cassert>\n+#include <cstdlib>\n+#include <vector>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\b3_\bD_\b1_\b1_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+class \u00a0 _\bS_\bc_\bh_\be_\bm_\be_\b<_\b _\bS_\bC_\bH_\bE_\bM_\bE_\b__\bT_\bY_\bP_\bE_\b _\b>\n+        _\bS_\bc_\bh_\be_\bm_\be is a class template which provides all implementation for the\n+        subdivision schemes supported by _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv through specializations of\n+\u00a0       the methods of each. An instance of Scheme<SCHEME_TYPE> includes a set\n+        of _\bO_\bp_\bt_\bi_\bo_\bn_\bs that will dictate the variable aspects of its behavior.\n+        _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bS_\bc_\bh_\be_\bm_\be_\b<_\b _\bS_\bC_\bH_\bE_\bM_\bE_\b__\bT_\bY_\bP_\bE_\b _\b>_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bM_\ba_\bs_\bk_\b<_\b _\bW_\bE_\bI_\bG_\bH_\bT_\b _\b>\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bd_\b3_\bd_\b1_\b1_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh\n+    * _\bs_\bd_\bc\n+    * _\bs_\bc_\bh_\be_\bm_\be_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00863.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00863.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,3 +1,4 @@\n var a00863 = [\n-    [\"D3D11LegacyGregoryPatchTable\", \"a01205.html\", \"a01205\"]\n+    [\"Scheme< SCHEME_TYPE >\", \"a01341.html\", \"a01341\"],\n+    [\"LocalMask< WEIGHT >\", \"a01345.html\", \"a01345\"]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00863_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00863_source.html", "has_internal_linenos": true, "unified_diff": "@@ -22,1666 +22,8471 @@\n 00000150: 656e 743d 2244 6f78 7967 656e 2031 2e39  ent=\"Doxygen 1.9\n 00000160: 2e38 222f 3e0a 3c6d 6574 6120 6e61 6d65  .8\"/>.<meta name\n 00000170: 3d22 7669 6577 706f 7274 2220 636f 6e74  =\"viewport\" cont\n 00000180: 656e 743d 2277 6964 7468 3d64 6576 6963  ent=\"width=devic\n 00000190: 652d 7769 6474 682c 2069 6e69 7469 616c  e-width, initial\n 000001a0: 2d73 6361 6c65 3d31 222f 3e0a 3c74 6974  -scale=1\"/>.<tit\n 000001b0: 6c65 3e4f 7065 6e53 7562 6469 763a 206f  le>OpenSubdiv: o\n-000001c0: 7065 6e73 7562 6469 762f 6f73 642f 6433  pensubdiv/osd/d3\n-000001d0: 6431 314c 6567 6163 7947 7265 676f 7279  d11LegacyGregory\n-000001e0: 5061 7463 6854 6162 6c65 2e68 2053 6f75  PatchTable.h Sou\n-000001f0: 7263 6520 4669 6c65 3c2f 7469 746c 653e  rce File</title>\n-00000200: 0a3c 6c69 6e6b 2068 7265 663d 2274 6162  .<link href=\"tab\n-00000210: 732e 6373 7322 2072 656c 3d22 7374 796c  s.css\" rel=\"styl\n-00000220: 6573 6865 6574 2220 7479 7065 3d22 7465  esheet\" type=\"te\n-00000230: 7874 2f63 7373 222f 3e0a 3c73 6372 6970  xt/css\"/>.<scrip\n-00000240: 7420 7479 7065 3d22 7465 7874 2f6a 6176  t type=\"text/jav\n-00000250: 6173 6372 6970 7422 2073 7263 3d22 6a71  ascript\" src=\"jq\n-00000260: 7565 7279 2e6a 7322 3e3c 2f73 6372 6970  uery.js\"></scrip\n-00000270: 743e 0a3c 7363 7269 7074 2074 7970 653d  t>.<script type=\n-00000280: 2274 6578 742f 6a61 7661 7363 7269 7074  \"text/javascript\n-00000290: 2220 7372 633d 2264 796e 7365 6374 696f  \" src=\"dynsectio\n-000002a0: 6e73 2e6a 7322 3e3c 2f73 6372 6970 743e  ns.js\"></script>\n-000002b0: 0a3c 6c69 6e6b 2068 7265 663d 226e 6176  .<link href=\"nav\n-000002c0: 7472 6565 2e63 7373 2220 7265 6c3d 2273  tree.css\" rel=\"s\n-000002d0: 7479 6c65 7368 6565 7422 2074 7970 653d  tylesheet\" type=\n-000002e0: 2274 6578 742f 6373 7322 2f3e 0a3c 7363  \"text/css\"/>.<sc\n-000002f0: 7269 7074 2074 7970 653d 2274 6578 742f  ript type=\"text/\n-00000300: 6a61 7661 7363 7269 7074 2220 7372 633d  javascript\" src=\n-00000310: 2272 6573 697a 652e 6a73 223e 3c2f 7363  \"resize.js\"></sc\n-00000320: 7269 7074 3e0a 3c73 6372 6970 7420 7479  ript>.<script ty\n-00000330: 7065 3d22 7465 7874 2f6a 6176 6173 6372  pe=\"text/javascr\n-00000340: 6970 7422 2073 7263 3d22 6e61 7674 7265  ipt\" src=\"navtre\n-00000350: 6564 6174 612e 6a73 223e 3c2f 7363 7269  edata.js\"></scri\n-00000360: 7074 3e0a 3c73 6372 6970 7420 7479 7065  pt>.<script type\n-00000370: 3d22 7465 7874 2f6a 6176 6173 6372 6970  =\"text/javascrip\n-00000380: 7422 2073 7263 3d22 6e61 7674 7265 652e  t\" src=\"navtree.\n-00000390: 6a73 223e 3c2f 7363 7269 7074 3e0a 3c6c  js\"></script>.<l\n-000003a0: 696e 6b20 6872 6566 3d22 7365 6172 6368  ink href=\"search\n-000003b0: 2f73 6561 7263 682e 6373 7322 2072 656c  /search.css\" rel\n-000003c0: 3d22 7374 796c 6573 6865 6574 2220 7479  =\"stylesheet\" ty\n-000003d0: 7065 3d22 7465 7874 2f63 7373 222f 3e0a  pe=\"text/css\"/>.\n-000003e0: 3c73 6372 6970 7420 7479 7065 3d22 7465  <script type=\"te\n-000003f0: 7874 2f6a 6176 6173 6372 6970 7422 2073  xt/javascript\" s\n-00000400: 7263 3d22 7365 6172 6368 2f73 6561 7263  rc=\"search/searc\n-00000410: 6864 6174 612e 6a73 223e 3c2f 7363 7269  hdata.js\"></scri\n-00000420: 7074 3e0a 3c73 6372 6970 7420 7479 7065  pt>.<script type\n-00000430: 3d22 7465 7874 2f6a 6176 6173 6372 6970  =\"text/javascrip\n-00000440: 7422 2073 7263 3d22 7365 6172 6368 2f73  t\" src=\"search/s\n-00000450: 6561 7263 682e 6a73 223e 3c2f 7363 7269  earch.js\"></scri\n-00000460: 7074 3e0a 3c6c 696e 6b20 6872 6566 3d22  pt>.<link href=\"\n-00000470: 646f 7879 6765 6e2e 6373 7322 2072 656c  doxygen.css\" rel\n-00000480: 3d22 7374 796c 6573 6865 6574 2220 7479  =\"stylesheet\" ty\n-00000490: 7065 3d22 7465 7874 2f63 7373 2220 2f3e  pe=\"text/css\" />\n-000004a0: 0a3c 6c69 6e6b 2068 7265 663d 2264 6f78  .<link href=\"dox\n-000004b0: 792e 6373 7322 2072 656c 3d22 7374 796c  y.css\" rel=\"styl\n-000004c0: 6573 6865 6574 2220 7479 7065 3d22 7465  esheet\" type=\"te\n-000004d0: 7874 2f63 7373 222f 3e0a 3c2f 6865 6164  xt/css\"/>.</head\n-000004e0: 3e0a 3c62 6f64 793e 0a3c 6469 7620 6964  >.<body>.<div id\n-000004f0: 3d22 746f 7022 3e3c 212d 2d20 646f 206e  =\"top\"><!-- do n\n-00000500: 6f74 2072 656d 6f76 6520 7468 6973 2064  ot remove this d\n-00000510: 6976 2c20 6974 2069 7320 636c 6f73 6564  iv, it is closed\n-00000520: 2062 7920 646f 7879 6765 6e21 202d 2d3e   by doxygen! -->\n-00000530: 0a3c 6469 7620 6964 3d22 7469 746c 6561  .<div id=\"titlea\n-00000540: 7265 6122 3e0a 3c74 6162 6c65 2063 656c  rea\">.<table cel\n-00000550: 6c73 7061 6369 6e67 3d22 3022 2063 656c  lspacing=\"0\" cel\n-00000560: 6c70 6164 6469 6e67 3d22 3022 3e0a 203c  lpadding=\"0\">. <\n-00000570: 7462 6f64 793e 0a20 3c74 7220 6964 3d22  tbody>. <tr id=\"\n-00000580: 7072 6f6a 6563 7472 6f77 223e 0a20 203c  projectrow\">.  <\n-00000590: 7464 2069 643d 2270 726f 6a65 6374 6c6f  td id=\"projectlo\n-000005a0: 676f 223e 3c69 6d67 2061 6c74 3d22 4c6f  go\"><img alt=\"Lo\n-000005b0: 676f 2220 7372 633d 226f 7065 6e73 7562  go\" src=\"opensub\n-000005c0: 6469 765f 6c6f 676f 5f68 6561 6465 722e  div_logo_header.\n-000005d0: 706e 6722 2f3e 3c2f 7464 3e0a 2020 3c74  png\"/></td>.  <t\n-000005e0: 6420 6964 3d22 7072 6f6a 6563 7461 6c69  d id=\"projectali\n-000005f0: 676e 223e 0a20 2020 3c64 6976 2069 643d  gn\">.   <div id=\n-00000600: 2270 726f 6a65 6374 6e61 6d65 223e 4f70  \"projectname\">Op\n-00000610: 656e 5375 6264 6976 0a20 2020 3c2f 6469  enSubdiv.   </di\n-00000620: 763e 0a20 203c 2f74 643e 0a20 3c2f 7472  v>.  </td>. </tr\n-00000630: 3e0a 203c 2f74 626f 6479 3e0a 3c2f 7461  >. </tbody>.</ta\n-00000640: 626c 653e 0a3c 2f64 6976 3e0a 3c21 2d2d  ble>.</div>.<!--\n-00000650: 2065 6e64 2068 6561 6465 7220 7061 7274   end header part\n-00000660: 202d 2d3e 0a3c 212d 2d20 4765 6e65 7261   -->.<!-- Genera\n-00000670: 7465 6420 6279 2044 6f78 7967 656e 2031  ted by Doxygen 1\n-00000680: 2e39 2e38 202d 2d3e 0a3c 7363 7269 7074  .9.8 -->.<script\n-00000690: 2074 7970 653d 2274 6578 742f 6a61 7661   type=\"text/java\n-000006a0: 7363 7269 7074 223e 0a2f 2a20 406c 6963  script\">./* @lic\n-000006b0: 656e 7365 206d 6167 6e65 743a 3f78 743d  ense magnet:?xt=\n-000006c0: 7572 6e3a 6274 6968 3a64 3364 3961 3961  urn:btih:d3d9a9a\n-000006d0: 3635 3935 3532 3166 3936 3636 6135 6539  6595521f9666a5e9\n-000006e0: 3463 6338 3330 6461 6238 3362 3635 3639  4cc830dab83b6569\n-000006f0: 3926 616d 703b 646e 3d65 7870 6174 2e74  9&amp;dn=expat.t\n-00000700: 7874 204d 4954 202a 2f0a 7661 7220 7365  xt MIT */.var se\n-00000710: 6172 6368 426f 7820 3d20 6e65 7720 5365  archBox = new Se\n-00000720: 6172 6368 426f 7828 2273 6561 7263 6842  archBox(\"searchB\n-00000730: 6f78 222c 2022 7365 6172 6368 2f22 2c27  ox\", \"search/\",'\n-00000740: 2e68 746d 6c27 293b 0a2f 2a20 406c 6963  .html');./* @lic\n-00000750: 656e 7365 2d65 6e64 202a 2f0a 3c2f 7363  ense-end */.</sc\n-00000760: 7269 7074 3e0a 3c73 6372 6970 7420 7479  ript>.<script ty\n-00000770: 7065 3d22 7465 7874 2f6a 6176 6173 6372  pe=\"text/javascr\n-00000780: 6970 7422 2073 7263 3d22 6d65 6e75 6461  ipt\" src=\"menuda\n-00000790: 7461 2e6a 7322 3e3c 2f73 6372 6970 743e  ta.js\"></script>\n-000007a0: 0a3c 7363 7269 7074 2074 7970 653d 2274  .<script type=\"t\n-000007b0: 6578 742f 6a61 7661 7363 7269 7074 2220  ext/javascript\" \n-000007c0: 7372 633d 226d 656e 752e 6a73 223e 3c2f  src=\"menu.js\"></\n-000007d0: 7363 7269 7074 3e0a 3c73 6372 6970 7420  script>.<script \n-000007e0: 7479 7065 3d22 7465 7874 2f6a 6176 6173  type=\"text/javas\n-000007f0: 6372 6970 7422 3e0a 2f2a 2040 6c69 6365  cript\">./* @lice\n-00000800: 6e73 6520 6d61 676e 6574 3a3f 7874 3d75  nse magnet:?xt=u\n-00000810: 726e 3a62 7469 683a 6433 6439 6139 6136  rn:btih:d3d9a9a6\n-00000820: 3539 3535 3231 6639 3636 3661 3565 3934  595521f9666a5e94\n-00000830: 6363 3833 3064 6162 3833 6236 3536 3939  cc830dab83b65699\n-00000840: 2661 6d70 3b64 6e3d 6578 7061 742e 7478  &amp;dn=expat.tx\n-00000850: 7420 4d49 5420 2a2f 0a24 2866 756e 6374  t MIT */.$(funct\n-00000860: 696f 6e28 2920 7b0a 2020 696e 6974 4d65  ion() {.  initMe\n-00000870: 6e75 2827 272c 7472 7565 2c66 616c 7365  nu('',true,false\n-00000880: 2c27 7365 6172 6368 2e70 6870 272c 2753  ,'search.php','S\n-00000890: 6561 7263 6827 293b 0a20 2024 2864 6f63  earch');.  $(doc\n-000008a0: 756d 656e 7429 2e72 6561 6479 2866 756e  ument).ready(fun\n-000008b0: 6374 696f 6e28 2920 7b20 696e 6974 5f73  ction() { init_s\n-000008c0: 6561 7263 6828 293b 207d 293b 0a7d 293b  earch(); });.});\n-000008d0: 0a2f 2a20 406c 6963 656e 7365 2d65 6e64  ./* @license-end\n-000008e0: 202a 2f0a 3c2f 7363 7269 7074 3e0a 3c64   */.</script>.<d\n-000008f0: 6976 2069 643d 226d 6169 6e2d 6e61 7622  iv id=\"main-nav\"\n-00000900: 3e3c 2f64 6976 3e0a 3c73 6372 6970 7420  ></div>.<script \n-00000910: 7479 7065 3d22 7465 7874 2f6a 6176 6173  type=\"text/javas\n-00000920: 6372 6970 7422 3e0a 2f2a 2040 6c69 6365  cript\">./* @lice\n-00000930: 6e73 6520 6d61 676e 6574 3a3f 7874 3d75  nse magnet:?xt=u\n-00000940: 726e 3a62 7469 683a 6433 6439 6139 6136  rn:btih:d3d9a9a6\n-00000950: 3539 3535 3231 6639 3636 3661 3565 3934  595521f9666a5e94\n-00000960: 6363 3833 3064 6162 3833 6236 3536 3939  cc830dab83b65699\n-00000970: 2661 6d70 3b64 6e3d 6578 7061 742e 7478  &amp;dn=expat.tx\n-00000980: 7420 4d49 5420 2a2f 0a24 2864 6f63 756d  t MIT */.$(docum\n-00000990: 656e 7429 2e72 6561 6479 2866 756e 6374  ent).ready(funct\n-000009a0: 696f 6e28 2920 7b20 696e 6974 5f63 6f64  ion() { init_cod\n-000009b0: 6566 6f6c 6428 3029 3b20 7d29 3b0a 2f2a  efold(0); });./*\n-000009c0: 2040 6c69 6365 6e73 652d 656e 6420 2a2f   @license-end */\n-000009d0: 0a3c 2f73 6372 6970 743e 0a3c 2f64 6976  .</script>.</div\n-000009e0: 3e3c 212d 2d20 746f 7020 2d2d 3e0a 3c64  ><!-- top -->.<d\n-000009f0: 6976 2069 643d 2273 6964 652d 6e61 7622  iv id=\"side-nav\"\n-00000a00: 2063 6c61 7373 3d22 7569 2d72 6573 697a   class=\"ui-resiz\n-00000a10: 6162 6c65 2073 6964 652d 6e61 762d 7265  able side-nav-re\n-00000a20: 7369 7a61 626c 6522 3e0a 2020 3c64 6976  sizable\">.  <div\n-00000a30: 2069 643d 226e 6176 2d74 7265 6522 3e0a   id=\"nav-tree\">.\n-00000a40: 2020 2020 3c64 6976 2069 643d 226e 6176      <div id=\"nav\n-00000a50: 2d74 7265 652d 636f 6e74 656e 7473 223e  -tree-contents\">\n-00000a60: 0a20 2020 2020 203c 6469 7620 6964 3d22  .      <div id=\"\n-00000a70: 6e61 762d 7379 6e63 2220 636c 6173 733d  nav-sync\" class=\n-00000a80: 2273 796e 6322 3e3c 2f64 6976 3e0a 2020  \"sync\"></div>.  \n-00000a90: 2020 3c2f 6469 763e 0a20 203c 2f64 6976    </div>.  </div\n-00000aa0: 3e0a 2020 3c64 6976 2069 643d 2273 706c  >.  <div id=\"spl\n-00000ab0: 6974 6261 7222 2073 7479 6c65 3d22 2d6d  itbar\" style=\"-m\n-00000ac0: 6f7a 2d75 7365 722d 7365 6c65 6374 3a6e  oz-user-select:n\n-00000ad0: 6f6e 653b 2220 0a20 2020 2020 2020 636c  one;\" .       cl\n-00000ae0: 6173 733d 2275 692d 7265 7369 7a61 626c  ass=\"ui-resizabl\n-00000af0: 652d 6861 6e64 6c65 223e 0a20 203c 2f64  e-handle\">.  </d\n-00000b00: 6976 3e0a 3c2f 6469 763e 0a3c 7363 7269  iv>.</div>.<scri\n-00000b10: 7074 2074 7970 653d 2274 6578 742f 6a61  pt type=\"text/ja\n-00000b20: 7661 7363 7269 7074 223e 0a2f 2a20 406c  vascript\">./* @l\n-00000b30: 6963 656e 7365 206d 6167 6e65 743a 3f78  icense magnet:?x\n-00000b40: 743d 7572 6e3a 6274 6968 3a64 3364 3961  t=urn:btih:d3d9a\n-00000b50: 3961 3635 3935 3532 3166 3936 3636 6135  9a6595521f9666a5\n-00000b60: 6539 3463 6338 3330 6461 6238 3362 3635  e94cc830dab83b65\n-00000b70: 3639 3926 616d 703b 646e 3d65 7870 6174  699&amp;dn=expat\n-00000b80: 2e74 7874 204d 4954 202a 2f0a 2428 646f  .txt MIT */.$(do\n-00000b90: 6375 6d65 6e74 292e 7265 6164 7928 6675  cument).ready(fu\n-00000ba0: 6e63 7469 6f6e 2829 7b69 6e69 744e 6176  nction(){initNav\n-00000bb0: 5472 6565 2827 6130 3038 3633 5f73 6f75  Tree('a00863_sou\n-00000bc0: 7263 652e 6874 6d6c 272c 2727 293b 2069  rce.html',''); i\n-00000bd0: 6e69 7452 6573 697a 6162 6c65 2829 3b20  nitResizable(); \n-00000be0: 7d29 3b0a 2f2a 2040 6c69 6365 6e73 652d  });./* @license-\n-00000bf0: 656e 6420 2a2f 0a3c 2f73 6372 6970 743e  end */.</script>\n-00000c00: 0a3c 6469 7620 6964 3d22 646f 632d 636f  .<div id=\"doc-co\n-00000c10: 6e74 656e 7422 3e0a 3c21 2d2d 2077 696e  ntent\">.<!-- win\n-00000c20: 646f 7720 7368 6f77 696e 6720 7468 6520  dow showing the \n-00000c30: 6669 6c74 6572 206f 7074 696f 6e73 202d  filter options -\n-00000c40: 2d3e 0a3c 6469 7620 6964 3d22 4d53 6561  ->.<div id=\"MSea\n-00000c50: 7263 6853 656c 6563 7457 696e 646f 7722  rchSelectWindow\"\n-00000c60: 0a20 2020 2020 6f6e 6d6f 7573 656f 7665  .     onmouseove\n-00000c70: 723d 2272 6574 7572 6e20 7365 6172 6368  r=\"return search\n-00000c80: 426f 782e 4f6e 5365 6172 6368 5365 6c65  Box.OnSearchSele\n-00000c90: 6374 5368 6f77 2829 220a 2020 2020 206f  ctShow()\".     o\n-00000ca0: 6e6d 6f75 7365 6f75 743d 2272 6574 7572  nmouseout=\"retur\n-00000cb0: 6e20 7365 6172 6368 426f 782e 4f6e 5365  n searchBox.OnSe\n-00000cc0: 6172 6368 5365 6c65 6374 4869 6465 2829  archSelectHide()\n-00000cd0: 220a 2020 2020 206f 6e6b 6579 646f 776e  \".     onkeydown\n-00000ce0: 3d22 7265 7475 726e 2073 6561 7263 6842  =\"return searchB\n-00000cf0: 6f78 2e4f 6e53 6561 7263 6853 656c 6563  ox.OnSearchSelec\n-00000d00: 744b 6579 2865 7665 6e74 2922 3e0a 3c2f  tKey(event)\">.</\n-00000d10: 6469 763e 0a0a 3c21 2d2d 2069 6672 616d  div>..<!-- ifram\n-00000d20: 6520 7368 6f77 696e 6720 7468 6520 7365  e showing the se\n-00000d30: 6172 6368 2072 6573 756c 7473 2028 636c  arch results (cl\n-00000d40: 6f73 6564 2062 7920 6465 6661 756c 7429  osed by default)\n-00000d50: 202d 2d3e 0a3c 6469 7620 6964 3d22 4d53   -->.<div id=\"MS\n-00000d60: 6561 7263 6852 6573 756c 7473 5769 6e64  earchResultsWind\n-00000d70: 6f77 223e 0a3c 6469 7620 6964 3d22 4d53  ow\">.<div id=\"MS\n-00000d80: 6561 7263 6852 6573 756c 7473 223e 0a3c  earchResults\">.<\n-00000d90: 6469 7620 636c 6173 733d 2253 5250 6167  div class=\"SRPag\n-00000da0: 6522 3e0a 3c64 6976 2069 643d 2253 5249  e\">.<div id=\"SRI\n-00000db0: 6e64 6578 223e 0a3c 6469 7620 6964 3d22  ndex\">.<div id=\"\n-00000dc0: 5352 5265 7375 6c74 7322 3e3c 2f64 6976  SRResults\"></div\n-00000dd0: 3e0a 3c64 6976 2063 6c61 7373 3d22 5352  >.<div class=\"SR\n-00000de0: 5374 6174 7573 2220 6964 3d22 4c6f 6164  Status\" id=\"Load\n-00000df0: 696e 6722 3e4c 6f61 6469 6e67 2e2e 2e3c  ing\">Loading...<\n-00000e00: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n-00000e10: 3d22 5352 5374 6174 7573 2220 6964 3d22  =\"SRStatus\" id=\"\n-00000e20: 5365 6172 6368 696e 6722 3e53 6561 7263  Searching\">Searc\n-00000e30: 6869 6e67 2e2e 2e3c 2f64 6976 3e0a 3c64  hing...</div>.<d\n-00000e40: 6976 2063 6c61 7373 3d22 5352 5374 6174  iv class=\"SRStat\n-00000e50: 7573 2220 6964 3d22 4e6f 4d61 7463 6865  us\" id=\"NoMatche\n-00000e60: 7322 3e4e 6f20 4d61 7463 6865 733c 2f64  s\">No Matches</d\n-00000e70: 6976 3e0a 3c2f 6469 763e 0a3c 2f64 6976  iv>.</div>.</div\n-00000e80: 3e0a 3c2f 6469 763e 0a3c 2f64 6976 3e0a  >.</div>.</div>.\n-00000e90: 0a3c 6469 7620 636c 6173 733d 2268 6561  .<div class=\"hea\n-00000ea0: 6465 7222 3e0a 2020 3c64 6976 2063 6c61  der\">.  <div cla\n-00000eb0: 7373 3d22 6865 6164 6572 7469 746c 6522  ss=\"headertitle\"\n-00000ec0: 3e3c 6469 7620 636c 6173 733d 2274 6974  ><div class=\"tit\n-00000ed0: 6c65 223e 6433 6431 314c 6567 6163 7947  le\">d3d11LegacyG\n-00000ee0: 7265 676f 7279 5061 7463 6854 6162 6c65  regoryPatchTable\n-00000ef0: 2e68 3c2f 6469 763e 3c2f 6469 763e 0a3c  .h</div></div>.<\n-00000f00: 2f64 6976 3e3c 212d 2d68 6561 6465 722d  /div><!--header-\n-00000f10: 2d3e 0a3c 6469 7620 636c 6173 733d 2263  ->.<div class=\"c\n-00000f20: 6f6e 7465 6e74 7322 3e0a 3c61 2068 7265  ontents\">.<a hre\n-00000f30: 663d 2261 3030 3836 332e 6874 6d6c 223e  f=\"a00863.html\">\n-00000f40: 476f 2074 6f20 7468 6520 646f 6375 6d65  Go to the docume\n-00000f50: 6e74 6174 696f 6e20 6f66 2074 6869 7320  ntation of this \n-00000f60: 6669 6c65 2e3c 2f61 3e3c 6469 7620 636c  file.</a><div cl\n-00000f70: 6173 733d 2266 7261 676d 656e 7422 3e3c  ass=\"fragment\"><\n-00000f80: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n-00000f90: 3e3c 6120 6964 3d22 6c30 3030 3031 2220  ><a id=\"l00001\" \n-00000fa0: 6e61 6d65 3d22 6c30 3030 3031 223e 3c2f  name=\"l00001\"></\n-00000fb0: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n-00000fc0: 696e 656e 6f22 3e20 2020 2031 3c2f 7370  ineno\">    1</sp\n-00000fd0: 616e 3e3c 7370 616e 2063 6c61 7373 3d22  an><span class=\"\n-00000fe0: 636f 6d6d 656e 7422 3e2f 2f3c 2f73 7061  comment\">//</spa\n-00000ff0: 6e3e 3c2f 6469 763e 0a3c 6469 7620 636c  n></div>.<div cl\n-00001000: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n-00001010: 3d22 6c30 3030 3032 2220 6e61 6d65 3d22  =\"l00002\" name=\"\n-00001020: 6c30 3030 3032 223e 3c2f 613e 3c73 7061  l00002\"></a><spa\n-00001030: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n-00001040: 3e20 2020 2032 3c2f 7370 616e 3e3c 7370  >    2</span><sp\n-00001050: 616e 2063 6c61 7373 3d22 636f 6d6d 656e  an class=\"commen\n-00001060: 7422 3e2f 2f20 2020 436f 7079 7269 6768  t\">//   Copyrigh\n-00001070: 7420 3230 3135 2050 6978 6172 3c2f 7370  t 2015 Pixar</sp\n-00001080: 616e 3e3c 2f64 6976 3e0a 3c64 6976 2063  an></div>.<div c\n-00001090: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n-000010a0: 643d 226c 3030 3030 3322 206e 616d 653d  d=\"l00003\" name=\n-000010b0: 226c 3030 3030 3322 3e3c 2f61 3e3c 7370  \"l00003\"></a><sp\n-000010c0: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n-000010d0: 223e 2020 2020 333c 2f73 7061 6e3e 3c73  \">    3</span><s\n-000010e0: 7061 6e20 636c 6173 733d 2263 6f6d 6d65  pan class=\"comme\n-000010f0: 6e74 223e 2f2f 3c2f 7370 616e 3e3c 2f64  nt\">//</span></d\n-00001100: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n-00001110: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n-00001120: 3030 3422 206e 616d 653d 226c 3030 3030  004\" name=\"l0000\n-00001130: 3422 3e3c 2f61 3e3c 7370 616e 2063 6c61  4\"></a><span cla\n-00001140: 7373 3d22 6c69 6e65 6e6f 223e 2020 2020  ss=\"lineno\">    \n-00001150: 343c 2f73 7061 6e3e 3c73 7061 6e20 636c  4</span><span cl\n-00001160: 6173 733d 2263 6f6d 6d65 6e74 223e 2f2f  ass=\"comment\">//\n-00001170: 2020 204c 6963 656e 7365 6420 756e 6465     Licensed unde\n-00001180: 7220 7468 6520 4170 6163 6865 204c 6963  r the Apache Lic\n-00001190: 656e 7365 2c20 5665 7273 696f 6e20 322e  ense, Version 2.\n-000011a0: 3020 2874 6865 2026 7175 6f74 3b41 7061  0 (the &quot;Apa\n-000011b0: 6368 6520 4c69 6365 6e73 6526 7175 6f74  che License&quot\n-000011c0: 3b29 3c2f 7370 616e 3e3c 2f64 6976 3e0a  ;)</span></div>.\n-000011d0: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n-000011e0: 223e 3c61 2069 643d 226c 3030 3030 3522  \"><a id=\"l00005\"\n-000011f0: 206e 616d 653d 226c 3030 3030 3522 3e3c   name=\"l00005\"><\n-00001200: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n-00001210: 6c69 6e65 6e6f 223e 2020 2020 353c 2f73  lineno\">    5</s\n-00001220: 7061 6e3e 3c73 7061 6e20 636c 6173 733d  pan><span class=\n-00001230: 2263 6f6d 6d65 6e74 223e 2f2f 2020 2077  \"comment\">//   w\n-00001240: 6974 6820 7468 6520 666f 6c6c 6f77 696e  ith the followin\n-00001250: 6720 6d6f 6469 6669 6361 7469 6f6e 3b20  g modification; \n-00001260: 796f 7520 6d61 7920 6e6f 7420 7573 6520  you may not use \n-00001270: 7468 6973 2066 696c 6520 6578 6365 7074  this file except\n-00001280: 2069 6e3c 2f73 7061 6e3e 3c2f 6469 763e   in</span></div>\n-00001290: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n-000012a0: 6522 3e3c 6120 6964 3d22 6c30 3030 3036  e\"><a id=\"l00006\n-000012b0: 2220 6e61 6d65 3d22 6c30 3030 3036 223e  \" name=\"l00006\">\n-000012c0: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n-000012d0: 226c 696e 656e 6f22 3e20 2020 2036 3c2f  \"lineno\">    6</\n-000012e0: 7370 616e 3e3c 7370 616e 2063 6c61 7373  span><span class\n-000012f0: 3d22 636f 6d6d 656e 7422 3e2f 2f20 2020  =\"comment\">//   \n-00001300: 636f 6d70 6c69 616e 6365 2077 6974 6820  compliance with \n-00001310: 7468 6520 4170 6163 6865 204c 6963 656e  the Apache Licen\n-00001320: 7365 2061 6e64 2074 6865 2066 6f6c 6c6f  se and the follo\n-00001330: 7769 6e67 206d 6f64 6966 6963 6174 696f  wing modificatio\n-00001340: 6e20 746f 2069 743a 3c2f 7370 616e 3e3c  n to it:</span><\n-00001350: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n-00001360: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n-00001370: 3030 3030 3722 206e 616d 653d 226c 3030  00007\" name=\"l00\n-00001380: 3030 3722 3e3c 2f61 3e3c 7370 616e 2063  007\"></a><span c\n-00001390: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n-000013a0: 2020 373c 2f73 7061 6e3e 3c73 7061 6e20    7</span><span \n-000013b0: 636c 6173 733d 2263 6f6d 6d65 6e74 223e  class=\"comment\">\n-000013c0: 2f2f 2020 2053 6563 7469 6f6e 2036 2e20  //   Section 6. \n-000013d0: 5472 6164 656d 6172 6b73 2e20 6973 2064  Trademarks. is d\n-000013e0: 656c 6574 6564 2061 6e64 2072 6570 6c61  eleted and repla\n-000013f0: 6365 6420 7769 7468 3a3c 2f73 7061 6e3e  ced with:</span>\n-00001400: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n-00001410: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n-00001420: 6c30 3030 3038 2220 6e61 6d65 3d22 6c30  l00008\" name=\"l0\n-00001430: 3030 3038 223e 3c2f 613e 3c73 7061 6e20  0008\"></a><span \n-00001440: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n-00001450: 2020 2038 3c2f 7370 616e 3e3c 7370 616e     8</span><span\n-00001460: 2063 6c61 7373 3d22 636f 6d6d 656e 7422   class=\"comment\"\n-00001470: 3e2f 2f3c 2f73 7061 6e3e 3c2f 6469 763e  >//</span></div>\n-00001480: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n-00001490: 6522 3e3c 6120 6964 3d22 6c30 3030 3039  e\"><a id=\"l00009\n-000014a0: 2220 6e61 6d65 3d22 6c30 3030 3039 223e  \" name=\"l00009\">\n-000014b0: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n-000014c0: 226c 696e 656e 6f22 3e20 2020 2039 3c2f  \"lineno\">    9</\n-000014d0: 7370 616e 3e3c 7370 616e 2063 6c61 7373  span><span class\n-000014e0: 3d22 636f 6d6d 656e 7422 3e2f 2f20 2020  =\"comment\">//   \n-000014f0: 362e 2054 7261 6465 6d61 726b 732e 2054  6. Trademarks. T\n-00001500: 6869 7320 4c69 6365 6e73 6520 646f 6573  his License does\n-00001510: 206e 6f74 2067 7261 6e74 2070 6572 6d69   not grant permi\n-00001520: 7373 696f 6e20 746f 2075 7365 2074 6865  ssion to use the\n-00001530: 2074 7261 6465 3c2f 7370 616e 3e3c 2f64   trade</span></d\n-00001540: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n-00001550: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n-00001560: 3031 3022 206e 616d 653d 226c 3030 3031  010\" name=\"l0001\n-00001570: 3022 3e3c 2f61 3e3c 7370 616e 2063 6c61  0\"></a><span cla\n-00001580: 7373 3d22 6c69 6e65 6e6f 223e 2020 2031  ss=\"lineno\">   1\n-00001590: 303c 2f73 7061 6e3e 3c73 7061 6e20 636c  0</span><span cl\n-000015a0: 6173 733d 2263 6f6d 6d65 6e74 223e 2f2f  ass=\"comment\">//\n-000015b0: 2020 2020 2020 6e61 6d65 732c 2074 7261        names, tra\n-000015c0: 6465 6d61 726b 732c 2073 6572 7669 6365  demarks, service\n-000015d0: 206d 6172 6b73 2c20 6f72 2070 726f 6475   marks, or produ\n-000015e0: 6374 206e 616d 6573 206f 6620 7468 6520  ct names of the \n-000015f0: 4c69 6365 6e73 6f72 3c2f 7370 616e 3e3c  Licensor</span><\n-00001600: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n-00001610: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n-00001620: 3030 3031 3122 206e 616d 653d 226c 3030  00011\" name=\"l00\n-00001630: 3031 3122 3e3c 2f61 3e3c 7370 616e 2063  011\"></a><span c\n-00001640: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n-00001650: 2031 313c 2f73 7061 6e3e 3c73 7061 6e20   11</span><span \n-00001660: 636c 6173 733d 2263 6f6d 6d65 6e74 223e  class=\"comment\">\n-00001670: 2f2f 2020 2020 2020 616e 6420 6974 7320  //      and its \n-00001680: 6166 6669 6c69 6174 6573 2c20 6578 6365  affiliates, exce\n-00001690: 7074 2061 7320 7265 7175 6972 6564 2074  pt as required t\n-000016a0: 6f20 636f 6d70 6c79 2077 6974 6820 5365  o comply with Se\n-000016b0: 6374 696f 6e20 3428 6329 206f 663c 2f73  ction 4(c) of</s\n-000016c0: 7061 6e3e 3c2f 6469 763e 0a3c 6469 7620  pan></div>.<div \n-000016d0: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n-000016e0: 6964 3d22 6c30 3030 3132 2220 6e61 6d65  id=\"l00012\" name\n-000016f0: 3d22 6c30 3030 3132 223e 3c2f 613e 3c73  =\"l00012\"></a><s\n-00001700: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n-00001710: 6f22 3e20 2020 3132 3c2f 7370 616e 3e3c  o\">   12</span><\n-00001720: 7370 616e 2063 6c61 7373 3d22 636f 6d6d  span class=\"comm\n-00001730: 656e 7422 3e2f 2f20 2020 2020 2074 6865  ent\">//      the\n-00001740: 204c 6963 656e 7365 2061 6e64 2074 6f20   License and to \n-00001750: 7265 7072 6f64 7563 6520 7468 6520 636f  reproduce the co\n-00001760: 6e74 656e 7420 6f66 2074 6865 204e 4f54  ntent of the NOT\n-00001770: 4943 4520 6669 6c65 2e3c 2f73 7061 6e3e  ICE file.</span>\n-00001780: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n-00001790: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n-000017a0: 6c30 3030 3133 2220 6e61 6d65 3d22 6c30  l00013\" name=\"l0\n-000017b0: 3030 3133 223e 3c2f 613e 3c73 7061 6e20  0013\"></a><span \n-000017c0: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n-000017d0: 2020 3133 3c2f 7370 616e 3e3c 7370 616e    13</span><span\n-000017e0: 2063 6c61 7373 3d22 636f 6d6d 656e 7422   class=\"comment\"\n-000017f0: 3e2f 2f3c 2f73 7061 6e3e 3c2f 6469 763e  >//</span></div>\n-00001800: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n-00001810: 6522 3e3c 6120 6964 3d22 6c30 3030 3134  e\"><a id=\"l00014\n-00001820: 2220 6e61 6d65 3d22 6c30 3030 3134 223e  \" name=\"l00014\">\n-00001830: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n-00001840: 226c 696e 656e 6f22 3e20 2020 3134 3c2f  \"lineno\">   14</\n-00001850: 7370 616e 3e3c 7370 616e 2063 6c61 7373  span><span class\n-00001860: 3d22 636f 6d6d 656e 7422 3e2f 2f20 2020  =\"comment\">//   \n-00001870: 596f 7520 6d61 7920 6f62 7461 696e 2061  You may obtain a\n-00001880: 2063 6f70 7920 6f66 2074 6865 2041 7061   copy of the Apa\n-00001890: 6368 6520 4c69 6365 6e73 6520 6174 3c2f  che License at</\n-000018a0: 7370 616e 3e3c 2f64 6976 3e0a 3c64 6976  span></div>.<div\n-000018b0: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n-000018c0: 2069 643d 226c 3030 3031 3522 206e 616d   id=\"l00015\" nam\n-000018d0: 653d 226c 3030 3031 3522 3e3c 2f61 3e3c  e=\"l00015\"></a><\n-000018e0: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n-000018f0: 6e6f 223e 2020 2031 353c 2f73 7061 6e3e  no\">   15</span>\n-00001900: 3c73 7061 6e20 636c 6173 733d 2263 6f6d  <span class=\"com\n-00001910: 6d65 6e74 223e 2f2f 3c2f 7370 616e 3e3c  ment\">//</span><\n-00001920: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n-00001930: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n-00001940: 3030 3031 3622 206e 616d 653d 226c 3030  00016\" name=\"l00\n-00001950: 3031 3622 3e3c 2f61 3e3c 7370 616e 2063  016\"></a><span c\n-00001960: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n-00001970: 2031 363c 2f73 7061 6e3e 3c73 7061 6e20   16</span><span \n-00001980: 636c 6173 733d 2263 6f6d 6d65 6e74 223e  class=\"comment\">\n-00001990: 2f2f 2020 2020 2020 2068 7474 703a 2f2f  //       http://\n-000019a0: 7777 772e 6170 6163 6865 2e6f 7267 2f6c  www.apache.org/l\n-000019b0: 6963 656e 7365 732f 4c49 4345 4e53 452d  icenses/LICENSE-\n-000019c0: 322e 303c 2f73 7061 6e3e 3c2f 6469 763e  2.0</span></div>\n-000019d0: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n-000019e0: 6522 3e3c 6120 6964 3d22 6c30 3030 3137  e\"><a id=\"l00017\n-000019f0: 2220 6e61 6d65 3d22 6c30 3030 3137 223e  \" name=\"l00017\">\n-00001a00: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n-00001a10: 226c 696e 656e 6f22 3e20 2020 3137 3c2f  \"lineno\">   17</\n-00001a20: 7370 616e 3e3c 7370 616e 2063 6c61 7373  span><span class\n-00001a30: 3d22 636f 6d6d 656e 7422 3e2f 2f3c 2f73  =\"comment\">//</s\n-00001a40: 7061 6e3e 3c2f 6469 763e 0a3c 6469 7620  pan></div>.<div \n-00001a50: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n-00001a60: 6964 3d22 6c30 3030 3138 2220 6e61 6d65  id=\"l00018\" name\n-00001a70: 3d22 6c30 3030 3138 223e 3c2f 613e 3c73  =\"l00018\"></a><s\n-00001a80: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n-00001a90: 6f22 3e20 2020 3138 3c2f 7370 616e 3e3c  o\">   18</span><\n-00001aa0: 7370 616e 2063 6c61 7373 3d22 636f 6d6d  span class=\"comm\n-00001ab0: 656e 7422 3e2f 2f20 2020 556e 6c65 7373  ent\">//   Unless\n-00001ac0: 2072 6571 7569 7265 6420 6279 2061 7070   required by app\n-00001ad0: 6c69 6361 626c 6520 6c61 7720 6f72 2061  licable law or a\n-00001ae0: 6772 6565 6420 746f 2069 6e20 7772 6974  greed to in writ\n-00001af0: 696e 672c 2073 6f66 7477 6172 653c 2f73  ing, software</s\n-00001b00: 7061 6e3e 3c2f 6469 763e 0a3c 6469 7620  pan></div>.<div \n-00001b10: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n-00001b20: 6964 3d22 6c30 3030 3139 2220 6e61 6d65  id=\"l00019\" name\n-00001b30: 3d22 6c30 3030 3139 223e 3c2f 613e 3c73  =\"l00019\"></a><s\n-00001b40: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n-00001b50: 6f22 3e20 2020 3139 3c2f 7370 616e 3e3c  o\">   19</span><\n-00001b60: 7370 616e 2063 6c61 7373 3d22 636f 6d6d  span class=\"comm\n-00001b70: 656e 7422 3e2f 2f20 2020 6469 7374 7269  ent\">//   distri\n-00001b80: 6275 7465 6420 756e 6465 7220 7468 6520  buted under the \n-00001b90: 4170 6163 6865 204c 6963 656e 7365 2077  Apache License w\n-00001ba0: 6974 6820 7468 6520 6162 6f76 6520 6d6f  ith the above mo\n-00001bb0: 6469 6669 6361 7469 6f6e 2069 733c 2f73  dification is</s\n-00001bc0: 7061 6e3e 3c2f 6469 763e 0a3c 6469 7620  pan></div>.<div \n-00001bd0: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n-00001be0: 6964 3d22 6c30 3030 3230 2220 6e61 6d65  id=\"l00020\" name\n-00001bf0: 3d22 6c30 3030 3230 223e 3c2f 613e 3c73  =\"l00020\"></a><s\n-00001c00: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n-00001c10: 6f22 3e20 2020 3230 3c2f 7370 616e 3e3c  o\">   20</span><\n-00001c20: 7370 616e 2063 6c61 7373 3d22 636f 6d6d  span class=\"comm\n-00001c30: 656e 7422 3e2f 2f20 2020 6469 7374 7269  ent\">//   distri\n-00001c40: 6275 7465 6420 6f6e 2061 6e20 2671 756f  buted on an &quo\n-00001c50: 743b 4153 2049 5326 7175 6f74 3b20 4241  t;AS IS&quot; BA\n-00001c60: 5349 532c 2057 4954 484f 5554 2057 4152  SIS, WITHOUT WAR\n-00001c70: 5241 4e54 4945 5320 4f52 2043 4f4e 4449  RANTIES OR CONDI\n-00001c80: 5449 4f4e 5320 4f46 2041 4e59 3c2f 7370  TIONS OF ANY</sp\n-00001c90: 616e 3e3c 2f64 6976 3e0a 3c64 6976 2063  an></div>.<div c\n-00001ca0: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n-00001cb0: 643d 226c 3030 3032 3122 206e 616d 653d  d=\"l00021\" name=\n-00001cc0: 226c 3030 3032 3122 3e3c 2f61 3e3c 7370  \"l00021\"></a><sp\n-00001cd0: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n-00001ce0: 223e 2020 2032 313c 2f73 7061 6e3e 3c73  \">   21</span><s\n-00001cf0: 7061 6e20 636c 6173 733d 2263 6f6d 6d65  pan class=\"comme\n-00001d00: 6e74 223e 2f2f 2020 204b 494e 442c 2065  nt\">//   KIND, e\n-00001d10: 6974 6865 7220 6578 7072 6573 7320 6f72  ither express or\n-00001d20: 2069 6d70 6c69 6564 2e20 5365 6520 7468   implied. See th\n-00001d30: 6520 4170 6163 6865 204c 6963 656e 7365  e Apache License\n-00001d40: 2066 6f72 2074 6865 2073 7065 6369 6669   for the specifi\n-00001d50: 633c 2f73 7061 6e3e 3c2f 6469 763e 0a3c  c</span></div>.<\n-00001d60: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n-00001d70: 3e3c 6120 6964 3d22 6c30 3030 3232 2220  ><a id=\"l00022\" \n-00001d80: 6e61 6d65 3d22 6c30 3030 3232 223e 3c2f  name=\"l00022\"></\n-00001d90: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n-00001da0: 696e 656e 6f22 3e20 2020 3232 3c2f 7370  ineno\">   22</sp\n-00001db0: 616e 3e3c 7370 616e 2063 6c61 7373 3d22  an><span class=\"\n-00001dc0: 636f 6d6d 656e 7422 3e2f 2f20 2020 6c61  comment\">//   la\n-00001dd0: 6e67 7561 6765 2067 6f76 6572 6e69 6e67  nguage governing\n-00001de0: 2070 6572 6d69 7373 696f 6e73 2061 6e64   permissions and\n-00001df0: 206c 696d 6974 6174 696f 6e73 2075 6e64   limitations und\n-00001e00: 6572 2074 6865 2041 7061 6368 6520 4c69  er the Apache Li\n-00001e10: 6365 6e73 652e 3c2f 7370 616e 3e3c 2f64  cense.</span></d\n-00001e20: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n-00001e30: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n-00001e40: 3032 3322 206e 616d 653d 226c 3030 3032  023\" name=\"l0002\n-00001e50: 3322 3e3c 2f61 3e3c 7370 616e 2063 6c61  3\"></a><span cla\n-00001e60: 7373 3d22 6c69 6e65 6e6f 223e 2020 2032  ss=\"lineno\">   2\n-00001e70: 333c 2f73 7061 6e3e 3c73 7061 6e20 636c  3</span><span cl\n-00001e80: 6173 733d 2263 6f6d 6d65 6e74 223e 2f2f  ass=\"comment\">//\n-00001e90: 3c2f 7370 616e 3e3c 2f64 6976 3e0a 3c64  </span></div>.<d\n-00001ea0: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n-00001eb0: 3c61 2069 643d 226c 3030 3032 3422 206e  <a id=\"l00024\" n\n-00001ec0: 616d 653d 226c 3030 3032 3422 3e3c 2f61  ame=\"l00024\"></a\n-00001ed0: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n-00001ee0: 6e65 6e6f 223e 2020 2032 343c 2f73 7061  neno\">   24</spa\n-00001ef0: 6e3e 203c 2f64 6976 3e0a 3c64 6976 2063  n> </div>.<div c\n-00001f00: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n-00001f10: 643d 226c 3030 3032 3522 206e 616d 653d  d=\"l00025\" name=\n-00001f20: 226c 3030 3032 3522 3e3c 2f61 3e3c 7370  \"l00025\"></a><sp\n-00001f30: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n-00001f40: 223e 2020 2032 353c 2f73 7061 6e3e 3c73  \">   25</span><s\n-00001f50: 7061 6e20 636c 6173 733d 2270 7265 7072  pan class=\"prepr\n-00001f60: 6f63 6573 736f 7222 3e23 6966 6e64 6566  ocessor\">#ifndef\n-00001f70: 204f 5045 4e53 5542 4449 5633 5f4f 5344   OPENSUBDIV3_OSD\n-00001f80: 5f44 3344 3131 5f4c 4547 4143 595f 4752  _D3D11_LEGACY_GR\n-00001f90: 4547 4f52 595f 5041 5443 485f 5441 424c  EGORY_PATCH_TABL\n-00001fa0: 455f 483c 2f73 7061 6e3e 3c2f 6469 763e  E_H</span></div>\n-00001fb0: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n-00001fc0: 6522 3e3c 6120 6964 3d22 6c30 3030 3236  e\"><a id=\"l00026\n-00001fd0: 2220 6e61 6d65 3d22 6c30 3030 3236 223e  \" name=\"l00026\">\n-00001fe0: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n-00001ff0: 226c 696e 656e 6f22 3e20 2020 3236 3c2f  \"lineno\">   26</\n-00002000: 7370 616e 3e3c 7370 616e 2063 6c61 7373  span><span class\n-00002010: 3d22 7072 6570 726f 6365 7373 6f72 223e  =\"preprocessor\">\n-00002020: 2364 6566 696e 6520 4f50 454e 5355 4244  #define OPENSUBD\n-00002030: 4956 335f 4f53 445f 4433 4431 315f 4c45  IV3_OSD_D3D11_LE\n-00002040: 4741 4359 5f47 5245 474f 5259 5f50 4154  GACY_GREGORY_PAT\n-00002050: 4348 5f54 4142 4c45 5f48 3c2f 7370 616e  CH_TABLE_H</span\n-00002060: 3e3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ></div>.<div cla\n-00002070: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n-00002080: 226c 3030 3032 3722 206e 616d 653d 226c  \"l00027\" name=\"l\n-00002090: 3030 3032 3722 3e3c 2f61 3e3c 7370 616e  00027\"></a><span\n-000020a0: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n-000020b0: 2020 2032 373c 2f73 7061 6e3e 203c 2f64     27</span> </d\n-000020c0: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n-000020d0: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n-000020e0: 3032 3822 206e 616d 653d 226c 3030 3032  028\" name=\"l0002\n-000020f0: 3822 3e3c 2f61 3e3c 7370 616e 2063 6c61  8\"></a><span cla\n-00002100: 7373 3d22 6c69 6e65 6e6f 223e 2020 2032  ss=\"lineno\">   2\n-00002110: 383c 2f73 7061 6e3e 3c73 7061 6e20 636c  8</span><span cl\n-00002120: 6173 733d 2270 7265 7072 6f63 6573 736f  ass=\"preprocesso\n-00002130: 7222 3e23 696e 636c 7564 6520 2671 756f  r\">#include &quo\n-00002140: 743b 2e2e 2f76 6572 7369 6f6e 2e68 2671  t;../version.h&q\n-00002150: 756f 743b 3c2f 7370 616e 3e3c 2f64 6976  uot;</span></div\n-00002160: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n-00002170: 6e65 223e 3c61 2069 643d 226c 3030 3032  ne\"><a id=\"l0002\n-00002180: 3922 206e 616d 653d 226c 3030 3032 3922  9\" name=\"l00029\"\n-00002190: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n-000021a0: 3d22 6c69 6e65 6e6f 223e 2020 2032 393c  =\"lineno\">   29<\n-000021b0: 2f73 7061 6e3e 203c 2f64 6976 3e0a 3c64  /span> </div>.<d\n-000021c0: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n-000021d0: 3c61 2069 643d 226c 3030 3033 3022 206e  <a id=\"l00030\" n\n-000021e0: 616d 653d 226c 3030 3033 3022 3e3c 2f61  ame=\"l00030\"></a\n-000021f0: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n-00002200: 6e65 6e6f 223e 2020 2033 303c 2f73 7061  neno\">   30</spa\n-00002210: 6e3e 3c73 7061 6e20 636c 6173 733d 2270  n><span class=\"p\n-00002220: 7265 7072 6f63 6573 736f 7222 3e23 696e  reprocessor\">#in\n-00002230: 636c 7564 6520 2671 756f 743b 2e2e 2f66  clude &quot;../f\n-00002240: 6172 2f70 6174 6368 5461 626c 652e 6826  ar/patchTable.h&\n-00002250: 7175 6f74 3b3c 2f73 7061 6e3e 3c2f 6469  quot;</span></di\n-00002260: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n-00002270: 696e 6522 3e3c 6120 6964 3d22 6c30 3030  ine\"><a id=\"l000\n-00002280: 3331 2220 6e61 6d65 3d22 6c30 3030 3331  31\" name=\"l00031\n-00002290: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n-000022a0: 733d 226c 696e 656e 6f22 3e20 2020 3331  s=\"lineno\">   31\n-000022b0: 3c2f 7370 616e 3e3c 7370 616e 2063 6c61  </span><span cla\n-000022c0: 7373 3d22 7072 6570 726f 6365 7373 6f72  ss=\"preprocessor\n-000022d0: 223e 2369 6e63 6c75 6465 2026 7175 6f74  \">#include &quot\n-000022e0: 3b2e 2e2f 6f73 642f 6e6f 6e43 6f70 7961  ;../osd/nonCopya\n-000022f0: 626c 652e 6826 7175 6f74 3b3c 2f73 7061  ble.h&quot;</spa\n-00002300: 6e3e 3c2f 6469 763e 0a3c 6469 7620 636c  n></div>.<div cl\n-00002310: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n-00002320: 3d22 6c30 3030 3332 2220 6e61 6d65 3d22  =\"l00032\" name=\"\n-00002330: 6c30 3030 3332 223e 3c2f 613e 3c73 7061  l00032\"></a><spa\n-00002340: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n-00002350: 3e20 2020 3332 3c2f 7370 616e 3e20 3c2f  >   32</span> </\n-00002360: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n-00002370: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n-00002380: 3030 3333 2220 6e61 6d65 3d22 6c30 3030  0033\" name=\"l000\n-00002390: 3333 223e 3c2f 613e 3c73 7061 6e20 636c  33\"></a><span cl\n-000023a0: 6173 733d 226c 696e 656e 6f22 3e20 2020  ass=\"lineno\">   \n-000023b0: 3333 3c2f 7370 616e 3e3c 7370 616e 2063  33</span><span c\n-000023c0: 6c61 7373 3d22 6b65 7977 6f72 6422 3e73  lass=\"keyword\">s\n-000023d0: 7472 7563 7420 3c2f 7370 616e 3e49 4433  truct </span>ID3\n-000023e0: 4431 3142 7566 6665 723b 3c2f 6469 763e  D11Buffer;</div>\n-000023f0: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n-00002400: 6522 3e3c 6120 6964 3d22 6c30 3030 3334  e\"><a id=\"l00034\n-00002410: 2220 6e61 6d65 3d22 6c30 3030 3334 223e  \" name=\"l00034\">\n-00002420: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n-00002430: 226c 696e 656e 6f22 3e20 2020 3334 3c2f  \"lineno\">   34</\n-00002440: 7370 616e 3e3c 7370 616e 2063 6c61 7373  span><span class\n-00002450: 3d22 6b65 7977 6f72 6422 3e73 7472 7563  =\"keyword\">struc\n-00002460: 7420 3c2f 7370 616e 3e49 4433 4431 3153  t </span>ID3D11S\n-00002470: 6861 6465 7252 6573 6f75 7263 6556 6965  haderResourceVie\n-00002480: 773b 3c2f 6469 763e 0a3c 6469 7620 636c  w;</div>.<div cl\n-00002490: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n-000024a0: 3d22 6c30 3030 3335 2220 6e61 6d65 3d22  =\"l00035\" name=\"\n-000024b0: 6c30 3030 3335 223e 3c2f 613e 3c73 7061  l00035\"></a><spa\n-000024c0: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n-000024d0: 3e20 2020 3335 3c2f 7370 616e 3e3c 7370  >   35</span><sp\n-000024e0: 616e 2063 6c61 7373 3d22 6b65 7977 6f72  an class=\"keywor\n-000024f0: 6422 3e73 7472 7563 7420 3c2f 7370 616e  d\">struct </span\n-00002500: 3e49 4433 4431 3144 6576 6963 653b 3c2f  >ID3D11Device;</\n-00002510: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n-00002520: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n-00002530: 3030 3336 2220 6e61 6d65 3d22 6c30 3030  0036\" name=\"l000\n-00002540: 3336 223e 3c2f 613e 3c73 7061 6e20 636c  36\"></a><span cl\n-00002550: 6173 733d 226c 696e 656e 6f22 3e20 2020  ass=\"lineno\">   \n-00002560: 3336 3c2f 7370 616e 3e3c 7370 616e 2063  36</span><span c\n-00002570: 6c61 7373 3d22 6b65 7977 6f72 6422 3e73  lass=\"keyword\">s\n-00002580: 7472 7563 7420 3c2f 7370 616e 3e49 4433  truct </span>ID3\n-00002590: 4431 3144 6576 6963 6543 6f6e 7465 7874  D11DeviceContext\n-000025a0: 3b3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ;</div>.<div cla\n-000025b0: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n-000025c0: 226c 3030 3033 3722 206e 616d 653d 226c  \"l00037\" name=\"l\n-000025d0: 3030 3033 3722 3e3c 2f61 3e3c 7370 616e  00037\"></a><span\n-000025e0: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n-000025f0: 2020 2033 373c 2f73 7061 6e3e 203c 2f64     37</span> </d\n-00002600: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n-00002610: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n-00002620: 3033 3822 206e 616d 653d 226c 3030 3033  038\" name=\"l0003\n-00002630: 3822 3e3c 2f61 3e3c 7370 616e 2063 6c61  8\"></a><span cla\n-00002640: 7373 3d22 6c69 6e65 6e6f 223e 2020 2033  ss=\"lineno\">   3\n-00002650: 383c 2f73 7061 6e3e 3c73 7061 6e20 636c  8</span><span cl\n-00002660: 6173 733d 226b 6579 776f 7264 223e 6e61  ass=\"keyword\">na\n-00002670: 6d65 7370 6163 6520 3c2f 7370 616e 3e3c  mespace </span><\n-00002680: 6120 636c 6173 733d 2263 6f64 6520 686c  a class=\"code hl\n-00002690: 5f6e 616d 6573 7061 6365 2220 6872 6566  _namespace\" href\n-000026a0: 3d22 6130 3039 3035 2e68 746d 6c22 3e4f  =\"a00905.html\">O\n-000026b0: 7065 6e53 7562 6469 763c 2f61 3e20 7b3c  penSubdiv</a> {<\n-000026c0: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n-000026d0: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n-000026e0: 3030 3033 3922 206e 616d 653d 226c 3030  00039\" name=\"l00\n-000026f0: 3033 3922 3e3c 2f61 3e3c 7370 616e 2063  039\"></a><span c\n-00002700: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n-00002710: 2033 393c 2f73 7061 6e3e 3c73 7061 6e20   39</span><span \n-00002720: 636c 6173 733d 226b 6579 776f 7264 223e  class=\"keyword\">\n-00002730: 6e61 6d65 7370 6163 6520 3c2f 7370 616e  namespace </span\n-00002740: 3e4f 5045 4e53 5542 4449 565f 5645 5253  >OPENSUBDIV_VERS\n-00002750: 494f 4e20 7b3c 2f64 6976 3e0a 3c64 6976  ION {</div>.<div\n-00002760: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n-00002770: 2069 643d 226c 3030 3034 3022 206e 616d   id=\"l00040\" nam\n-00002780: 653d 226c 3030 3034 3022 3e3c 2f61 3e3c  e=\"l00040\"></a><\n-00002790: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n-000027a0: 6e6f 223e 2020 2034 303c 2f73 7061 6e3e  no\">   40</span>\n-000027b0: 203c 2f64 6976 3e0a 3c64 6976 2063 6c61   </div>.<div cla\n-000027c0: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n-000027d0: 226c 3030 3034 3122 206e 616d 653d 226c  \"l00041\" name=\"l\n-000027e0: 3030 3034 3122 3e3c 2f61 3e3c 7370 616e  00041\"></a><span\n-000027f0: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n-00002800: 2020 2034 313c 2f73 7061 6e3e 3c73 7061     41</span><spa\n-00002810: 6e20 636c 6173 733d 226b 6579 776f 7264  n class=\"keyword\n-00002820: 223e 6e61 6d65 7370 6163 6520 3c2f 7370  \">namespace </sp\n-00002830: 616e 3e4f 7364 207b 3c2f 6469 763e 0a3c  an>Osd {</div>.<\n-00002840: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n-00002850: 3e3c 6120 6964 3d22 6c30 3030 3432 2220  ><a id=\"l00042\" \n-00002860: 6e61 6d65 3d22 6c30 3030 3432 223e 3c2f  name=\"l00042\"></\n-00002870: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n-00002880: 696e 656e 6f22 3e20 2020 3432 3c2f 7370  ineno\">   42</sp\n-00002890: 616e 3e20 3c2f 6469 763e 0a3c 6469 7620  an> </div>.<div \n-000028a0: 636c 6173 733d 2266 6f6c 646f 7065 6e22  class=\"foldopen\"\n-000028b0: 2069 643d 2266 6f6c 646f 7065 6e30 3030   id=\"foldopen000\n-000028c0: 3433 2220 6461 7461 2d73 7461 7274 3d22  43\" data-start=\"\n-000028d0: 7b22 2064 6174 612d 656e 643d 227d 3b22  {\" data-end=\"};\"\n-000028e0: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n-000028f0: 6e65 223e 3c61 2069 643d 226c 3030 3034  ne\"><a id=\"l0004\n-00002900: 3322 206e 616d 653d 226c 3030 3034 3322  3\" name=\"l00043\"\n-00002910: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n-00002920: 3d22 6c69 6e65 6e6f 223e 3c61 2063 6c61  =\"lineno\"><a cla\n-00002930: 7373 3d22 6c69 6e65 2220 6872 6566 3d22  ss=\"line\" href=\"\n-00002940: 6130 3132 3035 2e68 746d 6c22 3e20 2020  a01205.html\">   \n-00002950: 3433 3c2f 613e 3c2f 7370 616e 3e3c 7370  43</a></span><sp\n-00002960: 616e 2063 6c61 7373 3d22 6b65 7977 6f72  an class=\"keywor\n-00002970: 6422 3e63 6c61 7373 203c 2f73 7061 6e3e  d\">class </span>\n-00002980: 3c61 2063 6c61 7373 3d22 636f 6465 2068  <a class=\"code h\n-00002990: 6c5f 636c 6173 7322 2068 7265 663d 2261  l_class\" href=\"a\n-000029a0: 3031 3230 352e 6874 6d6c 223e 4433 4431  01205.html\">D3D1\n-000029b0: 314c 6567 6163 7947 7265 676f 7279 5061  1LegacyGregoryPa\n-000029c0: 7463 6854 6162 6c65 3c2f 613e 3c2f 6469  tchTable</a></di\n-000029d0: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n-000029e0: 696e 6522 3e3c 6120 6964 3d22 6c30 3030  ine\"><a id=\"l000\n-000029f0: 3434 2220 6e61 6d65 3d22 6c30 3030 3434  44\" name=\"l00044\n-00002a00: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n-00002a10: 733d 226c 696e 656e 6f22 3e20 2020 3434  s=\"lineno\">   44\n-00002a20: 3c2f 7370 616e 3e20 2020 203a 203c 7370  </span>    : <sp\n-00002a30: 616e 2063 6c61 7373 3d22 6b65 7977 6f72  an class=\"keywor\n-00002a40: 6422 3e70 7269 7661 7465 3c2f 7370 616e  d\">private</span\n-00002a50: 3e20 4e6f 6e43 6f70 7961 626c 6526 6c74  > NonCopyable&lt\n-00002a60: 3b44 3344 3131 4c65 6761 6379 4772 6567  ;D3D11LegacyGreg\n-00002a70: 6f72 7950 6174 6368 5461 626c 6526 6774  oryPatchTable&gt\n-00002a80: 3b20 7b3c 2f64 6976 3e0a 3c64 6976 2063  ; {</div>.<div c\n-00002a90: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n-00002aa0: 643d 226c 3030 3034 3522 206e 616d 653d  d=\"l00045\" name=\n-00002ab0: 226c 3030 3034 3522 3e3c 2f61 3e3c 7370  \"l00045\"></a><sp\n-00002ac0: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n-00002ad0: 223e 2020 2034 353c 2f73 7061 6e3e 3c73  \">   45</span><s\n-00002ae0: 7061 6e20 636c 6173 733d 226b 6579 776f  pan class=\"keywo\n-00002af0: 7264 223e 7075 626c 6963 3c2f 7370 616e  rd\">public</span\n-00002b00: 3e3a 3c2f 6469 763e 0a3c 6469 7620 636c  >:</div>.<div cl\n-00002b10: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n-00002b20: 3d22 6c30 3030 3436 2220 6e61 6d65 3d22  =\"l00046\" name=\"\n-00002b30: 6c30 3030 3436 223e 3c2f 613e 3c73 7061  l00046\"></a><spa\n-00002b40: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n-00002b50: 3e3c 6120 636c 6173 733d 226c 696e 6522  ><a class=\"line\"\n-00002b60: 2068 7265 663d 2261 3031 3230 352e 6874   href=\"a01205.ht\n-00002b70: 6d6c 2361 3162 3733 6265 3165 3933 3433  ml#a1b73be1e9343\n-00002b80: 6133 6466 3364 3064 6436 3032 3764 3036  a3df3d0dd6027d06\n-00002b90: 6665 3162 223e 2020 2034 363c 2f61 3e3c  fe1b\">   46</a><\n-00002ba0: 2f73 7061 6e3e 2020 2020 3c61 2063 6c61  /span>    <a cla\n-00002bb0: 7373 3d22 636f 6465 2068 6c5f 6675 6e63  ss=\"code hl_func\n-00002bc0: 7469 6f6e 2220 6872 6566 3d22 6130 3132  tion\" href=\"a012\n-00002bd0: 3035 2e68 746d 6c23 6131 6237 3362 6531  05.html#a1b73be1\n-00002be0: 6539 3334 3361 3364 6633 6430 6464 3630  e9343a3df3d0dd60\n-00002bf0: 3237 6430 3666 6531 6222 3e7e 4433 4431  27d06fe1b\">~D3D1\n-00002c00: 314c 6567 6163 7947 7265 676f 7279 5061  1LegacyGregoryPa\n-00002c10: 7463 6854 6162 6c65 3c2f 613e 2829 3b3c  tchTable</a>();<\n-00002c20: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n-00002c30: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n-00002c40: 3030 3034 3722 206e 616d 653d 226c 3030  00047\" name=\"l00\n-00002c50: 3034 3722 3e3c 2f61 3e3c 7370 616e 2063  047\"></a><span c\n-00002c60: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n-00002c70: 2034 373c 2f73 7061 6e3e 203c 2f64 6976   47</span> </div\n-00002c80: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n-00002c90: 6e65 223e 3c61 2069 643d 226c 3030 3034  ne\"><a id=\"l0004\n-00002ca0: 3822 206e 616d 653d 226c 3030 3034 3822  8\" name=\"l00048\"\n-00002cb0: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n-00002cc0: 3d22 6c69 6e65 6e6f 223e 2020 2034 383c  =\"lineno\">   48<\n-00002cd0: 2f73 7061 6e3e 2020 2020 3c73 7061 6e20  /span>    <span \n-00002ce0: 636c 6173 733d 226b 6579 776f 7264 223e  class=\"keyword\">\n-00002cf0: 7465 6d70 6c61 7465 3c2f 7370 616e 3e26  template</span>&\n-00002d00: 6c74 3b3c 7370 616e 2063 6c61 7373 3d22  lt;<span class=\"\n-00002d10: 6b65 7977 6f72 6422 3e74 7970 656e 616d  keyword\">typenam\n-00002d20: 653c 2f73 7061 6e3e 2044 4556 4943 455f  e</span> DEVICE_\n-00002d30: 434f 4e54 4558 5426 6774 3b3c 2f64 6976  CONTEXT&gt;</div\n-00002d40: 3e0a 3c64 6976 2063 6c61 7373 3d22 666f  >.<div class=\"fo\n-00002d50: 6c64 6f70 656e 2220 6964 3d22 666f 6c64  ldopen\" id=\"fold\n-00002d60: 6f70 656e 3030 3034 3922 2064 6174 612d  open00049\" data-\n-00002d70: 7374 6172 743d 227b 2220 6461 7461 2d65  start=\"{\" data-e\n-00002d80: 6e64 3d22 7d22 3e0a 3c64 6976 2063 6c61  nd=\"}\">.<div cla\n-00002d90: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n-00002da0: 226c 3030 3034 3922 206e 616d 653d 226c  \"l00049\" name=\"l\n-00002db0: 3030 3034 3922 3e3c 2f61 3e3c 7370 616e  00049\"></a><span\n-00002dc0: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n-00002dd0: 3c61 2063 6c61 7373 3d22 6c69 6e65 2220  <a class=\"line\" \n-00002de0: 6872 6566 3d22 6130 3132 3035 2e68 746d  href=\"a01205.htm\n-00002df0: 6c23 6163 6139 6431 3730 3230 3737 6461  l#aca9d1702077da\n-00002e00: 3336 3262 6335 6261 3164 3034 3666 3738  362bc5ba1d046f78\n-00002e10: 3533 6422 3e20 2020 3439 3c2f 613e 3c2f  53d\">   49</a></\n-00002e20: 7370 616e 3e20 2020 203c 7370 616e 2063  span>    <span c\n-00002e30: 6c61 7373 3d22 6b65 7977 6f72 6422 3e73  lass=\"keyword\">s\n-00002e40: 7461 7469 633c 2f73 7061 6e3e 203c 6120  tatic</span> <a \n-00002e50: 636c 6173 733d 2263 6f64 6520 686c 5f63  class=\"code hl_c\n-00002e60: 6c61 7373 2220 6872 6566 3d22 6130 3132  lass\" href=\"a012\n-00002e70: 3035 2e68 746d 6c22 3e44 3344 3131 4c65  05.html\">D3D11Le\n-00002e80: 6761 6379 4772 6567 6f72 7950 6174 6368  gacyGregoryPatch\n-00002e90: 5461 626c 653c 2f61 3e20 2a3c 6120 636c  Table</a> *<a cl\n-00002ea0: 6173 733d 2263 6f64 6520 686c 5f66 756e  ass=\"code hl_fun\n-00002eb0: 6374 696f 6e22 2068 7265 663d 2261 3031  ction\" href=\"a01\n-00002ec0: 3230 352e 6874 6d6c 2361 6361 3964 3137  205.html#aca9d17\n-00002ed0: 3032 3037 3764 6133 3632 6263 3562 6131  02077da362bc5ba1\n-00002ee0: 6430 3436 6637 3835 3364 223e 4372 6561  d046f7853d\">Crea\n-00002ef0: 7465 3c2f 613e 283c 2f64 6976 3e0a 3c64  te</a>(</div>.<d\n-00002f00: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n-00002f10: 3c61 2069 643d 226c 3030 3035 3022 206e  <a id=\"l00050\" n\n-00002f20: 616d 653d 226c 3030 3035 3022 3e3c 2f61  ame=\"l00050\"></a\n-00002f30: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n-00002f40: 6e65 6e6f 223e 2020 2035 303c 2f73 7061  neno\">   50</spa\n-00002f50: 6e3e 2020 2020 2020 2020 3c61 2063 6c61  n>        <a cla\n-00002f60: 7373 3d22 636f 6465 2068 6c5f 636c 6173  ss=\"code hl_clas\n-00002f70: 7322 2068 7265 663d 2261 3030 3939 332e  s\" href=\"a00993.\n-00002f80: 6874 6d6c 223e 4661 723a 3a50 6174 6368  html\">Far::Patch\n-00002f90: 5461 626c 653c 2f61 3e20 3c73 7061 6e20  Table</a> <span \n-00002fa0: 636c 6173 733d 226b 6579 776f 7264 223e  class=\"keyword\">\n-00002fb0: 636f 6e73 743c 2f73 7061 6e3e 202a 6661  const</span> *fa\n-00002fc0: 7250 6174 6368 5461 626c 652c 2044 4556  rPatchTable, DEV\n-00002fd0: 4943 455f 434f 4e54 4558 5420 636f 6e74  ICE_CONTEXT cont\n-00002fe0: 6578 7429 207b 3c2f 6469 763e 0a3c 6469  ext) {</div>.<di\n-00002ff0: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n-00003000: 6120 6964 3d22 6c30 3030 3531 2220 6e61  a id=\"l00051\" na\n-00003010: 6d65 3d22 6c30 3030 3531 223e 3c2f 613e  me=\"l00051\"></a>\n-00003020: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n-00003030: 656e 6f22 3e20 2020 3531 3c2f 7370 616e  eno\">   51</span\n-00003040: 3e20 2020 2020 2020 203c 7370 616e 2063  >        <span c\n-00003050: 6c61 7373 3d22 6b65 7977 6f72 6466 6c6f  lass=\"keywordflo\n-00003060: 7722 3e72 6574 7572 6e3c 2f73 7061 6e3e  w\">return</span>\n-00003070: 203c 6120 636c 6173 733d 2263 6f64 6520   <a class=\"code \n-00003080: 686c 5f66 756e 6374 696f 6e22 2068 7265  hl_function\" hre\n-00003090: 663d 2261 3031 3230 352e 6874 6d6c 2361  f=\"a01205.html#a\n-000030a0: 6361 3964 3137 3032 3037 3764 6133 3632  ca9d1702077da362\n-000030b0: 6263 3562 6131 6430 3436 6637 3835 3364  bc5ba1d046f7853d\n-000030c0: 223e 4372 6561 7465 3c2f 613e 2866 6172  \">Create</a>(far\n-000030d0: 5061 7463 6854 6162 6c65 2c20 636f 6e74  PatchTable, cont\n-000030e0: 6578 742d 2667 743b 4765 7444 6576 6963  ext-&gt;GetDevic\n-000030f0: 6543 6f6e 7465 7874 2829 293b 3c2f 6469  eContext());</di\n-00003100: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n-00003110: 696e 6522 3e3c 6120 6964 3d22 6c30 3030  ine\"><a id=\"l000\n-00003120: 3532 2220 6e61 6d65 3d22 6c30 3030 3532  52\" name=\"l00052\n-00003130: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n-00003140: 733d 226c 696e 656e 6f22 3e20 2020 3532  s=\"lineno\">   52\n-00003150: 3c2f 7370 616e 3e20 2020 207d 3c2f 6469  </span>    }</di\n-00003160: 763e 0a3c 2f64 6976 3e0a 3c64 6976 2063  v>.</div>.<div c\n-00003170: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n-00003180: 643d 226c 3030 3035 3322 206e 616d 653d  d=\"l00053\" name=\n-00003190: 226c 3030 3035 3322 3e3c 2f61 3e3c 7370  \"l00053\"></a><sp\n-000031a0: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n-000031b0: 223e 2020 2035 333c 2f73 7061 6e3e 203c  \">   53</span> <\n-000031c0: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n-000031d0: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n-000031e0: 3030 3035 3422 206e 616d 653d 226c 3030  00054\" name=\"l00\n-000031f0: 3035 3422 3e3c 2f61 3e3c 7370 616e 2063  054\"></a><span c\n-00003200: 6c61 7373 3d22 6c69 6e65 6e6f 223e 3c61  lass=\"lineno\"><a\n-00003210: 2063 6c61 7373 3d22 6c69 6e65 2220 6872   class=\"line\" hr\n-00003220: 6566 3d22 6130 3132 3035 2e68 746d 6c23  ef=\"a01205.html#\n-00003230: 6139 3736 3337 3435 3438 3237 3837 3131  a976374548278711\n-00003240: 6435 3039 3933 3237 3332 3630 6466 3137  d50993273260df17\n-00003250: 3422 3e20 2020 3534 3c2f 613e 3c2f 7370  4\">   54</a></sp\n-00003260: 616e 3e20 2020 203c 7370 616e 2063 6c61  an>    <span cla\n-00003270: 7373 3d22 6b65 7977 6f72 6422 3e73 7461  ss=\"keyword\">sta\n-00003280: 7469 633c 2f73 7061 6e3e 203c 6120 636c  tic</span> <a cl\n-00003290: 6173 733d 2263 6f64 6520 686c 5f63 6c61  ass=\"code hl_cla\n-000032a0: 7373 2220 6872 6566 3d22 6130 3132 3035  ss\" href=\"a01205\n-000032b0: 2e68 746d 6c22 3e44 3344 3131 4c65 6761  .html\">D3D11Lega\n-000032c0: 6379 4772 6567 6f72 7950 6174 6368 5461  cyGregoryPatchTa\n-000032d0: 626c 653c 2f61 3e20 2a3c 6120 636c 6173  ble</a> *<a clas\n-000032e0: 733d 2263 6f64 6520 686c 5f66 756e 6374  s=\"code hl_funct\n-000032f0: 696f 6e22 2068 7265 663d 2261 3031 3230  ion\" href=\"a0120\n-00003300: 352e 6874 6d6c 2361 3937 3633 3734 3534  5.html#a97637454\n-00003310: 3832 3738 3731 3164 3530 3939 3332 3733  8278711d50993273\n-00003320: 3236 3064 6631 3734 223e 4372 6561 7465  260df174\">Create\n-00003330: 3c2f 613e 283c 2f64 6976 3e0a 3c64 6976  </a>(</div>.<div\n-00003340: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n-00003350: 2069 643d 226c 3030 3035 3522 206e 616d   id=\"l00055\" nam\n-00003360: 653d 226c 3030 3035 3522 3e3c 2f61 3e3c  e=\"l00055\"></a><\n-00003370: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n-00003380: 6e6f 223e 2020 2035 353c 2f73 7061 6e3e  no\">   55</span>\n-00003390: 2020 2020 2020 2020 3c61 2063 6c61 7373          <a class\n-000033a0: 3d22 636f 6465 2068 6c5f 636c 6173 7322  =\"code hl_class\"\n-000033b0: 2068 7265 663d 2261 3030 3939 332e 6874   href=\"a00993.ht\n-000033c0: 6d6c 223e 4661 723a 3a50 6174 6368 5461  ml\">Far::PatchTa\n-000033d0: 626c 653c 2f61 3e20 3c73 7061 6e20 636c  ble</a> <span cl\n-000033e0: 6173 733d 226b 6579 776f 7264 223e 636f  ass=\"keyword\">co\n-000033f0: 6e73 743c 2f73 7061 6e3e 202a 6661 7250  nst</span> *farP\n-00003400: 6174 6368 5461 626c 652c 3c2f 6469 763e  atchTable,</div>\n-00003410: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n-00003420: 6522 3e3c 6120 6964 3d22 6c30 3030 3536  e\"><a id=\"l00056\n-00003430: 2220 6e61 6d65 3d22 6c30 3030 3536 223e  \" name=\"l00056\">\n-00003440: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n-00003450: 226c 696e 656e 6f22 3e20 2020 3536 3c2f  \"lineno\">   56</\n-00003460: 7370 616e 3e20 2020 2020 2020 2049 4433  span>        ID3\n-00003470: 4431 3144 6576 6963 6543 6f6e 7465 7874  D11DeviceContext\n-00003480: 202a 6465 7669 6365 436f 6e74 6578 7429   *deviceContext)\n-00003490: 3b3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ;</div>.<div cla\n-000034a0: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n-000034b0: 226c 3030 3035 3722 206e 616d 653d 226c  \"l00057\" name=\"l\n-000034c0: 3030 3035 3722 3e3c 2f61 3e3c 7370 616e  00057\"></a><span\n-000034d0: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n-000034e0: 2020 2035 373c 2f73 7061 6e3e 203c 2f64     57</span> </d\n-000034f0: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n-00003500: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n-00003510: 3035 3822 206e 616d 653d 226c 3030 3035  058\" name=\"l0005\n-00003520: 3822 3e3c 2f61 3e3c 7370 616e 2063 6c61  8\"></a><span cla\n-00003530: 7373 3d22 6c69 6e65 6e6f 223e 3c61 2063  ss=\"lineno\"><a c\n-00003540: 6c61 7373 3d22 6c69 6e65 2220 6872 6566  lass=\"line\" href\n-00003550: 3d22 6130 3132 3035 2e68 746d 6c23 6131  =\"a01205.html#a1\n-00003560: 3661 6164 3839 3831 6230 6233 3531 3834  6aad8981b0b35184\n-00003570: 6236 6534 3463 6662 3234 3230 3033 6422  b6e44cfb242003d\"\n-00003580: 3e20 2020 3538 3c2f 613e 3c2f 7370 616e  >   58</a></span\n-00003590: 3e20 2020 203c 7370 616e 2063 6c61 7373  >    <span class\n-000035a0: 3d22 6b65 7977 6f72 6474 7970 6522 3e76  =\"keywordtype\">v\n-000035b0: 6f69 643c 2f73 7061 6e3e 203c 6120 636c  oid</span> <a cl\n-000035c0: 6173 733d 2263 6f64 6520 686c 5f66 756e  ass=\"code hl_fun\n-000035d0: 6374 696f 6e22 2068 7265 663d 2261 3031  ction\" href=\"a01\n-000035e0: 3230 352e 6874 6d6c 2361 3136 6161 6438  205.html#a16aad8\n-000035f0: 3938 3162 3062 3335 3138 3462 3665 3434  981b0b35184b6e44\n-00003600: 6366 6232 3432 3030 3364 223e 5570 6461  cfb242003d\">Upda\n-00003610: 7465 5665 7274 6578 4275 6666 6572 3c2f  teVertexBuffer</\n-00003620: 613e 2849 4433 4431 3142 7566 6665 7220  a>(ID3D11Buffer \n-00003630: 2a76 626f 2c3c 2f64 6976 3e0a 3c64 6976  *vbo,</div>.<div\n-00003640: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n-00003650: 2069 643d 226c 3030 3035 3922 206e 616d   id=\"l00059\" nam\n-00003660: 653d 226c 3030 3035 3922 3e3c 2f61 3e3c  e=\"l00059\"></a><\n-00003670: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n-00003680: 6e6f 223e 2020 2035 393c 2f73 7061 6e3e  no\">   59</span>\n-00003690: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000036a0: 2020 2020 2020 2020 2020 2020 3c73 7061              <spa\n-000036b0: 6e20 636c 6173 733d 226b 6579 776f 7264  n class=\"keyword\n-000036c0: 7479 7065 223e 696e 743c 2f73 7061 6e3e  type\">int</span>\n-000036d0: 206e 756d 5665 7274 6963 6573 2c20 3c73   numVertices, <s\n-000036e0: 7061 6e20 636c 6173 733d 226b 6579 776f  pan class=\"keywo\n-000036f0: 7264 7479 7065 223e 696e 743c 2f73 7061  rdtype\">int</spa\n-00003700: 6e3e 206e 756d 5665 7274 6578 456c 656d  n> numVertexElem\n-00003710: 656e 7473 2c3c 2f64 6976 3e0a 3c64 6976  ents,</div>.<div\n-00003720: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n-00003730: 2069 643d 226c 3030 3036 3022 206e 616d   id=\"l00060\" nam\n-00003740: 653d 226c 3030 3036 3022 3e3c 2f61 3e3c  e=\"l00060\"></a><\n-00003750: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n-00003760: 6e6f 223e 2020 2036 303c 2f73 7061 6e3e  no\">   60</span>\n-00003770: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00003780: 2020 2020 2020 2020 2020 2020 4944 3344              ID3D\n-00003790: 3131 4465 7669 6365 436f 6e74 6578 7420  11DeviceContext \n-000037a0: 2a70 6433 6431 3144 6576 6963 6543 6f6e  *pd3d11DeviceCon\n-000037b0: 7465 7874 293b 3c2f 6469 763e 0a3c 6469  text);</div>.<di\n-000037c0: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n-000037d0: 6120 6964 3d22 6c30 3030 3631 2220 6e61  a id=\"l00061\" na\n-000037e0: 6d65 3d22 6c30 3030 3631 223e 3c2f 613e  me=\"l00061\"></a>\n-000037f0: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n-00003800: 656e 6f22 3e20 2020 3631 3c2f 7370 616e  eno\">   61</span\n-00003810: 3e20 3c2f 6469 763e 0a3c 6469 7620 636c  > </div>.<div cl\n-00003820: 6173 733d 2266 6f6c 646f 7065 6e22 2069  ass=\"foldopen\" i\n-00003830: 643d 2266 6f6c 646f 7065 6e30 3030 3632  d=\"foldopen00062\n-00003840: 2220 6461 7461 2d73 7461 7274 3d22 7b22  \" data-start=\"{\"\n-00003850: 2064 6174 612d 656e 643d 227d 223e 0a3c   data-end=\"}\">.<\n-00003860: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n-00003870: 3e3c 6120 6964 3d22 6c30 3030 3632 2220  ><a id=\"l00062\" \n-00003880: 6e61 6d65 3d22 6c30 3030 3632 223e 3c2f  name=\"l00062\"></\n-00003890: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n-000038a0: 696e 656e 6f22 3e3c 6120 636c 6173 733d  ineno\"><a class=\n-000038b0: 226c 696e 6522 2068 7265 663d 2261 3031  \"line\" href=\"a01\n-000038c0: 3230 352e 6874 6d6c 2361 6237 3538 6337  205.html#ab758c7\n-000038d0: 3266 3333 6139 6533 6161 3436 6331 3039  2f33a9e3aa46c109\n-000038e0: 3634 3436 6333 3535 3765 223e 2020 2036  6446c3557e\">   6\n-000038f0: 323c 2f61 3e3c 2f73 7061 6e3e 2020 2020  2</a></span>    \n-00003900: 4944 3344 3131 5368 6164 6572 5265 736f  ID3D11ShaderReso\n-00003910: 7572 6365 5669 6577 2a20 3c61 2063 6c61  urceView* <a cla\n-00003920: 7373 3d22 636f 6465 2068 6c5f 6675 6e63  ss=\"code hl_func\n-00003930: 7469 6f6e 2220 6872 6566 3d22 6130 3132  tion\" href=\"a012\n-00003940: 3035 2e68 746d 6c23 6162 3735 3863 3732  05.html#ab758c72\n-00003950: 6633 3361 3965 3361 6134 3663 3130 3936  f33a9e3aa46c1096\n-00003960: 3434 3663 3335 3537 6522 3e47 6574 5665  446c3557e\">GetVe\n-00003970: 7274 6578 5352 563c 2f61 3e28 293c 7370  rtexSRV</a>()<sp\n-00003980: 616e 2063 6c61 7373 3d22 6b65 7977 6f72  an class=\"keywor\n-00003990: 6422 3e20 636f 6e73 7420 3c2f 7370 616e  d\"> const </span\n-000039a0: 3e7b 3c2f 6469 763e 0a3c 6469 7620 636c  >{</div>.<div cl\n-000039b0: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n-000039c0: 3d22 6c30 3030 3633 2220 6e61 6d65 3d22  =\"l00063\" name=\"\n-000039d0: 6c30 3030 3633 223e 3c2f 613e 3c73 7061  l00063\"></a><spa\n-000039e0: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n-000039f0: 3e20 2020 3633 3c2f 7370 616e 3e20 2020  >   63</span>   \n-00003a00: 2020 2020 203c 7370 616e 2063 6c61 7373       <span class\n-00003a10: 3d22 6b65 7977 6f72 6466 6c6f 7722 3e72  =\"keywordflow\">r\n-00003a20: 6574 7572 6e3c 2f73 7061 6e3e 205f 7665  eturn</span> _ve\n-00003a30: 7274 6578 5352 563b 3c2f 6469 763e 0a3c  rtexSRV;</div>.<\n-00003a40: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n-00003a50: 3e3c 6120 6964 3d22 6c30 3030 3634 2220  ><a id=\"l00064\" \n-00003a60: 6e61 6d65 3d22 6c30 3030 3634 223e 3c2f  name=\"l00064\"></\n-00003a70: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n-00003a80: 696e 656e 6f22 3e20 2020 3634 3c2f 7370  ineno\">   64</sp\n-00003a90: 616e 3e20 2020 207d 3c2f 6469 763e 0a3c  an>    }</div>.<\n-00003aa0: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n-00003ab0: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n-00003ac0: 3030 3036 3522 206e 616d 653d 226c 3030  00065\" name=\"l00\n-00003ad0: 3036 3522 3e3c 2f61 3e3c 7370 616e 2063  065\"></a><span c\n-00003ae0: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n-00003af0: 2036 353c 2f73 7061 6e3e 203c 2f64 6976   65</span> </div\n-00003b00: 3e0a 3c64 6976 2063 6c61 7373 3d22 666f  >.<div class=\"fo\n-00003b10: 6c64 6f70 656e 2220 6964 3d22 666f 6c64  ldopen\" id=\"fold\n-00003b20: 6f70 656e 3030 3036 3622 2064 6174 612d  open00066\" data-\n-00003b30: 7374 6172 743d 227b 2220 6461 7461 2d65  start=\"{\" data-e\n-00003b40: 6e64 3d22 7d22 3e0a 3c64 6976 2063 6c61  nd=\"}\">.<div cla\n-00003b50: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n-00003b60: 226c 3030 3036 3622 206e 616d 653d 226c  \"l00066\" name=\"l\n-00003b70: 3030 3036 3622 3e3c 2f61 3e3c 7370 616e  00066\"></a><span\n-00003b80: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n-00003b90: 3c61 2063 6c61 7373 3d22 6c69 6e65 2220  <a class=\"line\" \n-00003ba0: 6872 6566 3d22 6130 3132 3035 2e68 746d  href=\"a01205.htm\n-00003bb0: 6c23 6164 6263 3135 3563 3930 3266 3463  l#adbc155c902f4c\n-00003bc0: 3263 6238 3864 3966 6666 6265 6236 3439  2cb88d9fffbeb649\n-00003bd0: 3962 3422 3e20 2020 3636 3c2f 613e 3c2f  9b4\">   66</a></\n-00003be0: 7370 616e 3e20 2020 2049 4433 4431 3153  span>    ID3D11S\n-00003bf0: 6861 6465 7252 6573 6f75 7263 6556 6965  haderResourceVie\n-00003c00: 772a 203c 6120 636c 6173 733d 2263 6f64  w* <a class=\"cod\n-00003c10: 6520 686c 5f66 756e 6374 696f 6e22 2068  e hl_function\" h\n-00003c20: 7265 663d 2261 3031 3230 352e 6874 6d6c  ref=\"a01205.html\n-00003c30: 2361 6462 6331 3535 6339 3032 6634 6332  #adbc155c902f4c2\n-00003c40: 6362 3838 6439 6666 6662 6562 3634 3939  cb88d9fffbeb6499\n-00003c50: 6234 223e 4765 7456 6572 7465 7856 616c  b4\">GetVertexVal\n-00003c60: 656e 6365 5352 563c 2f61 3e28 293c 7370  enceSRV</a>()<sp\n-00003c70: 616e 2063 6c61 7373 3d22 6b65 7977 6f72  an class=\"keywor\n-00003c80: 6422 3e20 636f 6e73 7420 3c2f 7370 616e  d\"> const </span\n-00003c90: 3e7b 3c2f 6469 763e 0a3c 6469 7620 636c  >{</div>.<div cl\n-00003ca0: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n-00003cb0: 3d22 6c30 3030 3637 2220 6e61 6d65 3d22  =\"l00067\" name=\"\n-00003cc0: 6c30 3030 3637 223e 3c2f 613e 3c73 7061  l00067\"></a><spa\n-00003cd0: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n-00003ce0: 3e20 2020 3637 3c2f 7370 616e 3e20 2020  >   67</span>   \n-00003cf0: 2020 2020 203c 7370 616e 2063 6c61 7373       <span class\n-00003d00: 3d22 6b65 7977 6f72 6466 6c6f 7722 3e72  =\"keywordflow\">r\n-00003d10: 6574 7572 6e3c 2f73 7061 6e3e 205f 7665  eturn</span> _ve\n-00003d20: 7274 6578 5661 6c65 6e63 6553 5256 3b3c  rtexValenceSRV;<\n-00003d30: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n-00003d40: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n-00003d50: 3030 3036 3822 206e 616d 653d 226c 3030  00068\" name=\"l00\n-00003d60: 3036 3822 3e3c 2f61 3e3c 7370 616e 2063  068\"></a><span c\n-00003d70: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n-00003d80: 2036 383c 2f73 7061 6e3e 2020 2020 7d3c   68</span>    }<\n-00003d90: 2f64 6976 3e0a 3c2f 6469 763e 0a3c 6469  /div>.</div>.<di\n-00003da0: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n-00003db0: 6120 6964 3d22 6c30 3030 3639 2220 6e61  a id=\"l00069\" na\n-00003dc0: 6d65 3d22 6c30 3030 3639 223e 3c2f 613e  me=\"l00069\"></a>\n-00003dd0: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n-00003de0: 656e 6f22 3e20 2020 3639 3c2f 7370 616e  eno\">   69</span\n-00003df0: 3e20 3c2f 6469 763e 0a3c 6469 7620 636c  > </div>.<div cl\n-00003e00: 6173 733d 2266 6f6c 646f 7065 6e22 2069  ass=\"foldopen\" i\n-00003e10: 643d 2266 6f6c 646f 7065 6e30 3030 3730  d=\"foldopen00070\n-00003e20: 2220 6461 7461 2d73 7461 7274 3d22 7b22  \" data-start=\"{\"\n-00003e30: 2064 6174 612d 656e 643d 227d 223e 0a3c   data-end=\"}\">.<\n-00003e40: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n-00003e50: 3e3c 6120 6964 3d22 6c30 3030 3730 2220  ><a id=\"l00070\" \n-00003e60: 6e61 6d65 3d22 6c30 3030 3730 223e 3c2f  name=\"l00070\"></\n-00003e70: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n-00003e80: 696e 656e 6f22 3e3c 6120 636c 6173 733d  ineno\"><a class=\n-00003e90: 226c 696e 6522 2068 7265 663d 2261 3031  \"line\" href=\"a01\n-00003ea0: 3230 352e 6874 6d6c 2361 6630 3364 6234  205.html#af03db4\n-00003eb0: 3162 6663 6262 6638 6262 3236 3666 3762  1bfcbbf8bb266f7b\n-00003ec0: 3036 3764 6636 3433 3361 223e 2020 2037  067df6433a\">   7\n-00003ed0: 303c 2f61 3e3c 2f73 7061 6e3e 2020 2020  0</a></span>    \n-00003ee0: 4944 3344 3131 5368 6164 6572 5265 736f  ID3D11ShaderReso\n-00003ef0: 7572 6365 5669 6577 2a20 3c61 2063 6c61  urceView* <a cla\n-00003f00: 7373 3d22 636f 6465 2068 6c5f 6675 6e63  ss=\"code hl_func\n-00003f10: 7469 6f6e 2220 6872 6566 3d22 6130 3132  tion\" href=\"a012\n-00003f20: 3035 2e68 746d 6c23 6166 3033 6462 3431  05.html#af03db41\n-00003f30: 6266 6362 6266 3862 6232 3636 6637 6230  bfcbbf8bb266f7b0\n-00003f40: 3637 6466 3634 3333 6122 3e47 6574 5175  67df6433a\">GetQu\n-00003f50: 6164 4f66 6673 6574 7353 5256 3c2f 613e  adOffsetsSRV</a>\n-00003f60: 2829 3c73 7061 6e20 636c 6173 733d 226b  ()<span class=\"k\n-00003f70: 6579 776f 7264 223e 2063 6f6e 7374 203c  eyword\"> const <\n-00003f80: 2f73 7061 6e3e 7b3c 2f64 6976 3e0a 3c64  /span>{</div>.<d\n-00003f90: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n-00003fa0: 3c61 2069 643d 226c 3030 3037 3122 206e  <a id=\"l00071\" n\n-00003fb0: 616d 653d 226c 3030 3037 3122 3e3c 2f61  ame=\"l00071\"></a\n-00003fc0: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n-00003fd0: 6e65 6e6f 223e 2020 2037 313c 2f73 7061  neno\">   71</spa\n-00003fe0: 6e3e 2020 2020 2020 2020 3c73 7061 6e20  n>        <span \n-00003ff0: 636c 6173 733d 226b 6579 776f 7264 666c  class=\"keywordfl\n-00004000: 6f77 223e 7265 7475 726e 3c2f 7370 616e  ow\">return</span\n-00004010: 3e20 5f71 7561 644f 6666 7365 7473 5352  > _quadOffsetsSR\n-00004020: 563b 3c2f 6469 763e 0a3c 6469 7620 636c  V;</div>.<div cl\n-00004030: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n-00004040: 3d22 6c30 3030 3732 2220 6e61 6d65 3d22  =\"l00072\" name=\"\n-00004050: 6c30 3030 3732 223e 3c2f 613e 3c73 7061  l00072\"></a><spa\n-00004060: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n-00004070: 3e20 2020 3732 3c2f 7370 616e 3e20 2020  >   72</span>   \n-00004080: 207d 3c2f 6469 763e 0a3c 2f64 6976 3e0a   }</div>.</div>.\n-00004090: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n-000040a0: 223e 3c61 2069 643d 226c 3030 3037 3322  \"><a id=\"l00073\"\n-000040b0: 206e 616d 653d 226c 3030 3037 3322 3e3c   name=\"l00073\"><\n-000040c0: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n-000040d0: 6c69 6e65 6e6f 223e 2020 2037 333c 2f73  lineno\">   73</s\n-000040e0: 7061 6e3e 203c 2f64 6976 3e0a 3c64 6976  pan> </div>.<div\n-000040f0: 2063 6c61 7373 3d22 666f 6c64 6f70 656e   class=\"foldopen\n-00004100: 2220 6964 3d22 666f 6c64 6f70 656e 3030  \" id=\"foldopen00\n-00004110: 3037 3422 2064 6174 612d 7374 6172 743d  074\" data-start=\n-00004120: 227b 2220 6461 7461 2d65 6e64 3d22 7d22  \"{\" data-end=\"}\"\n-00004130: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n-00004140: 6e65 223e 3c61 2069 643d 226c 3030 3037  ne\"><a id=\"l0007\n-00004150: 3422 206e 616d 653d 226c 3030 3037 3422  4\" name=\"l00074\"\n-00004160: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n-00004170: 3d22 6c69 6e65 6e6f 223e 3c61 2063 6c61  =\"lineno\"><a cla\n-00004180: 7373 3d22 6c69 6e65 2220 6872 6566 3d22  ss=\"line\" href=\"\n-00004190: 6130 3132 3035 2e68 746d 6c23 6131 3736  a01205.html#a176\n-000041a0: 6662 3837 6237 6261 3437 6435 6332 6332  fb87b7ba47d5c2c2\n-000041b0: 6136 6433 3332 6532 3638 3763 6522 3e20  a6d332e2687ce\"> \n-000041c0: 2020 3734 3c2f 613e 3c2f 7370 616e 3e20    74</a></span> \n-000041d0: 2020 203c 7370 616e 2063 6c61 7373 3d22     <span class=\"\n-000041e0: 6b65 7977 6f72 6474 7970 6522 3e69 6e74  keywordtype\">int\n-000041f0: 3c2f 7370 616e 3e20 3c61 2063 6c61 7373  </span> <a class\n-00004200: 3d22 636f 6465 2068 6c5f 6675 6e63 7469  =\"code hl_functi\n-00004210: 6f6e 2220 6872 6566 3d22 6130 3132 3035  on\" href=\"a01205\n-00004220: 2e68 746d 6c23 6131 3736 6662 3837 6237  .html#a176fb87b7\n-00004230: 6261 3437 6435 6332 6332 6136 6433 3332  ba47d5c2c2a6d332\n-00004240: 6532 3638 3763 6522 3e47 6574 5175 6164  e2687ce\">GetQuad\n-00004250: 4f66 6673 6574 7342 6173 653c 2f61 3e28  OffsetsBase</a>(\n-00004260: 3c61 2063 6c61 7373 3d22 636f 6465 2068  <a class=\"code h\n-00004270: 6c5f 656e 756d 6572 6174 696f 6e22 2068  l_enumeration\" h\n-00004280: 7265 663d 2261 3030 3937 332e 6874 6d6c  ref=\"a00973.html\n-00004290: 2361 3164 3163 6664 3866 6662 3834 6539  #a1d1cfd8ffb84e9\n-000042a0: 3437 6638 3239 3939 6336 3832 6236 3636  47f82999c682b666\n-000042b0: 6137 223e 4661 723a 3a50 6174 6368 4465  a7\">Far::PatchDe\n-000042c0: 7363 7269 7074 6f72 3a3a 5479 7065 3c2f  scriptor::Type</\n-000042d0: 613e 2074 7970 6529 207b 3c2f 6469 763e  a> type) {</div>\n-000042e0: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n-000042f0: 6522 3e3c 6120 6964 3d22 6c30 3030 3735  e\"><a id=\"l00075\n-00004300: 2220 6e61 6d65 3d22 6c30 3030 3735 223e  \" name=\"l00075\">\n-00004310: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n-00004320: 226c 696e 656e 6f22 3e20 2020 3735 3c2f  \"lineno\">   75</\n-00004330: 7370 616e 3e20 2020 2020 2020 203c 7370  span>        <sp\n-00004340: 616e 2063 6c61 7373 3d22 6b65 7977 6f72  an class=\"keywor\n-00004350: 6466 6c6f 7722 3e69 663c 2f73 7061 6e3e  dflow\">if</span>\n-00004360: 2028 7479 7065 203d 3d20 3c61 2063 6c61   (type == <a cla\n-00004370: 7373 3d22 636f 6465 2068 6c5f 656e 756d  ss=\"code hl_enum\n-00004380: 7661 6c75 6522 2068 7265 663d 2261 3030  value\" href=\"a00\n-00004390: 3937 332e 6874 6d6c 2361 3164 3163 6664  973.html#a1d1cfd\n-000043a0: 3866 6662 3834 6539 3437 6638 3239 3939  8ffb84e947f82999\n-000043b0: 6336 3832 6236 3636 6137 6163 3461 6531  c682b666a7ac4ae1\n-000043c0: 3064 6639 6331 3365 3434 3838 3063 6137  0df9c13e44880ca7\n-000043d0: 6265 3334 3165 3434 6632 6122 3e46 6172  be341e44f2a\">Far\n-000043e0: 3a3a 5061 7463 6844 6573 6372 6970 746f  ::PatchDescripto\n-000043f0: 723a 3a47 5245 474f 5259 5f42 4f55 4e44  r::GREGORY_BOUND\n-00004400: 4152 593c 2f61 3e29 207b 3c2f 6469 763e  ARY</a>) {</div>\n-00004410: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n-00004420: 6522 3e3c 6120 6964 3d22 6c30 3030 3736  e\"><a id=\"l00076\n-00004430: 2220 6e61 6d65 3d22 6c30 3030 3736 223e  \" name=\"l00076\">\n-00004440: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n-00004450: 226c 696e 656e 6f22 3e20 2020 3736 3c2f  \"lineno\">   76</\n-00004460: 7370 616e 3e20 2020 2020 2020 2020 2020  span>           \n-00004470: 203c 7370 616e 2063 6c61 7373 3d22 6b65   <span class=\"ke\n-00004480: 7977 6f72 6466 6c6f 7722 3e72 6574 7572  ywordflow\">retur\n-00004490: 6e3c 2f73 7061 6e3e 205f 7175 6164 4f66  n</span> _quadOf\n-000044a0: 6673 6574 7342 6173 655b 315d 3b3c 2f64  fsetsBase[1];</d\n-000044b0: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n-000044c0: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n-000044d0: 3037 3722 206e 616d 653d 226c 3030 3037  077\" name=\"l0007\n-000044e0: 3722 3e3c 2f61 3e3c 7370 616e 2063 6c61  7\"></a><span cla\n-000044f0: 7373 3d22 6c69 6e65 6e6f 223e 2020 2037  ss=\"lineno\">   7\n-00004500: 373c 2f73 7061 6e3e 2020 2020 2020 2020  7</span>        \n-00004510: 7d3c 2f64 6976 3e0a 3c64 6976 2063 6c61  }</div>.<div cla\n-00004520: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n-00004530: 226c 3030 3037 3822 206e 616d 653d 226c  \"l00078\" name=\"l\n-00004540: 3030 3037 3822 3e3c 2f61 3e3c 7370 616e  00078\"></a><span\n-00004550: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n-00004560: 2020 2037 383c 2f73 7061 6e3e 2020 2020     78</span>    \n-00004570: 2020 2020 3c73 7061 6e20 636c 6173 733d      <span class=\n-00004580: 226b 6579 776f 7264 666c 6f77 223e 7265  \"keywordflow\">re\n-00004590: 7475 726e 3c2f 7370 616e 3e20 5f71 7561  turn</span> _qua\n-000045a0: 644f 6666 7365 7473 4261 7365 5b30 5d3b  dOffsetsBase[0];\n-000045b0: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n-000045c0: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n-000045d0: 6c30 3030 3739 2220 6e61 6d65 3d22 6c30  l00079\" name=\"l0\n-000045e0: 3030 3739 223e 3c2f 613e 3c73 7061 6e20  0079\"></a><span \n-000045f0: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n-00004600: 2020 3739 3c2f 7370 616e 3e20 2020 207d    79</span>    }\n-00004610: 3c2f 6469 763e 0a3c 2f64 6976 3e0a 3c64  </div>.</div>.<d\n-00004620: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n-00004630: 3c61 2069 643d 226c 3030 3038 3022 206e  <a id=\"l00080\" n\n-00004640: 616d 653d 226c 3030 3038 3022 3e3c 2f61  ame=\"l00080\"></a\n-00004650: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n-00004660: 6e65 6e6f 223e 2020 2038 303c 2f73 7061  neno\">   80</spa\n-00004670: 6e3e 203c 2f64 6976 3e0a 3c64 6976 2063  n> </div>.<div c\n-00004680: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n-00004690: 643d 226c 3030 3038 3122 206e 616d 653d  d=\"l00081\" name=\n-000046a0: 226c 3030 3038 3122 3e3c 2f61 3e3c 7370  \"l00081\"></a><sp\n-000046b0: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n-000046c0: 223e 2020 2038 313c 2f73 7061 6e3e 3c73  \">   81</span><s\n-000046d0: 7061 6e20 636c 6173 733d 226b 6579 776f  pan class=\"keywo\n-000046e0: 7264 223e 7072 6f74 6563 7465 643c 2f73  rd\">protected</s\n-000046f0: 7061 6e3e 3a3c 2f64 6976 3e0a 3c64 6976  pan>:</div>.<div\n-00004700: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n-00004710: 2069 643d 226c 3030 3038 3222 206e 616d   id=\"l00082\" nam\n-00004720: 653d 226c 3030 3038 3222 3e3c 2f61 3e3c  e=\"l00082\"></a><\n-00004730: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n-00004740: 6e6f 223e 3c61 2063 6c61 7373 3d22 6c69  no\"><a class=\"li\n-00004750: 6e65 2220 6872 6566 3d22 6130 3132 3035  ne\" href=\"a01205\n-00004760: 2e68 746d 6c23 6166 3133 3862 3435 3335  .html#af138b4535\n-00004770: 6534 6462 3566 3031 3332 3235 6335 3932  e4db5f013225c592\n-00004780: 3465 3062 3234 3322 3e20 2020 3832 3c2f  4e0b243\">   82</\n-00004790: 613e 3c2f 7370 616e 3e20 2020 203c 6120  a></span>    <a \n-000047a0: 636c 6173 733d 2263 6f64 6520 686c 5f66  class=\"code hl_f\n-000047b0: 756e 6374 696f 6e22 2068 7265 663d 2261  unction\" href=\"a\n-000047c0: 3031 3230 352e 6874 6d6c 2361 6631 3338  01205.html#af138\n-000047d0: 6234 3533 3565 3464 6235 6630 3133 3232  b4535e4db5f01322\n-000047e0: 3563 3539 3234 6530 6232 3433 223e 4433  5c5924e0b243\">D3\n-000047f0: 4431 314c 6567 6163 7947 7265 676f 7279  D11LegacyGregory\n-00004800: 5061 7463 6854 6162 6c65 3c2f 613e 2829  PatchTable</a>()\n-00004810: 3b3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ;</div>.<div cla\n-00004820: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n-00004830: 226c 3030 3038 3322 206e 616d 653d 226c  \"l00083\" name=\"l\n-00004840: 3030 3038 3322 3e3c 2f61 3e3c 7370 616e  00083\"></a><span\n-00004850: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n-00004860: 2020 2038 333c 2f73 7061 6e3e 203c 2f64     83</span> </d\n-00004870: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n-00004880: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n-00004890: 3038 3422 206e 616d 653d 226c 3030 3038  084\" name=\"l0008\n-000048a0: 3422 3e3c 2f61 3e3c 7370 616e 2063 6c61  4\"></a><span cla\n-000048b0: 7373 3d22 6c69 6e65 6e6f 223e 2020 2038  ss=\"lineno\">   8\n-000048c0: 343c 2f73 7061 6e3e 3c73 7061 6e20 636c  4</span><span cl\n-000048d0: 6173 733d 226b 6579 776f 7264 223e 7072  ass=\"keyword\">pr\n-000048e0: 6976 6174 653c 2f73 7061 6e3e 3a3c 2f64  ivate</span>:</d\n-000048f0: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n-00004900: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n-00004910: 3038 3522 206e 616d 653d 226c 3030 3038  085\" name=\"l0008\n-00004920: 3522 3e3c 2f61 3e3c 7370 616e 2063 6c61  5\"></a><span cla\n-00004930: 7373 3d22 6c69 6e65 6e6f 223e 2020 2038  ss=\"lineno\">   8\n-00004940: 353c 2f73 7061 6e3e 2020 2020 4944 3344  5</span>    ID3D\n-00004950: 3131 4275 6666 6572 2a20 5f76 6572 7465  11Buffer* _verte\n-00004960: 7856 616c 656e 6365 4275 6666 6572 3b3c  xValenceBuffer;<\n-00004970: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n-00004980: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n-00004990: 3030 3038 3622 206e 616d 653d 226c 3030  00086\" name=\"l00\n-000049a0: 3038 3622 3e3c 2f61 3e3c 7370 616e 2063  086\"></a><span c\n-000049b0: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n-000049c0: 2038 363c 2f73 7061 6e3e 2020 2020 4944   86</span>    ID\n-000049d0: 3344 3131 4275 6666 6572 2a20 5f71 7561  3D11Buffer* _qua\n-000049e0: 644f 6666 7365 7473 4275 6666 6572 3b3c  dOffsetsBuffer;<\n-000049f0: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n-00004a00: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n-00004a10: 3030 3038 3722 206e 616d 653d 226c 3030  00087\" name=\"l00\n-00004a20: 3038 3722 3e3c 2f61 3e3c 7370 616e 2063  087\"></a><span c\n-00004a30: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n-00004a40: 2038 373c 2f73 7061 6e3e 2020 2020 4944   87</span>    ID\n-00004a50: 3344 3131 5368 6164 6572 5265 736f 7572  3D11ShaderResour\n-00004a60: 6365 5669 6577 2a20 5f76 6572 7465 7853  ceView* _vertexS\n-00004a70: 5256 3b3c 2f64 6976 3e0a 3c64 6976 2063  RV;</div>.<div c\n-00004a80: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n-00004a90: 643d 226c 3030 3038 3822 206e 616d 653d  d=\"l00088\" name=\n-00004aa0: 226c 3030 3038 3822 3e3c 2f61 3e3c 7370  \"l00088\"></a><sp\n-00004ab0: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n-00004ac0: 223e 2020 2038 383c 2f73 7061 6e3e 2020  \">   88</span>  \n-00004ad0: 2020 4944 3344 3131 5368 6164 6572 5265    ID3D11ShaderRe\n-00004ae0: 736f 7572 6365 5669 6577 2a20 5f76 6572  sourceView* _ver\n-00004af0: 7465 7856 616c 656e 6365 5352 563b 3c2f  texValenceSRV;</\n-00004b00: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n-00004b10: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n-00004b20: 3030 3839 2220 6e61 6d65 3d22 6c30 3030  0089\" name=\"l000\n-00004b30: 3839 223e 3c2f 613e 3c73 7061 6e20 636c  89\"></a><span cl\n-00004b40: 6173 733d 226c 696e 656e 6f22 3e20 2020  ass=\"lineno\">   \n-00004b50: 3839 3c2f 7370 616e 3e20 2020 2049 4433  89</span>    ID3\n-00004b60: 4431 3153 6861 6465 7252 6573 6f75 7263  D11ShaderResourc\n-00004b70: 6556 6965 772a 205f 7175 6164 4f66 6673  eView* _quadOffs\n-00004b80: 6574 7353 5256 3b3c 2f64 6976 3e0a 3c64  etsSRV;</div>.<d\n-00004b90: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n-00004ba0: 3c61 2069 643d 226c 3030 3039 3022 206e  <a id=\"l00090\" n\n-00004bb0: 616d 653d 226c 3030 3039 3022 3e3c 2f61  ame=\"l00090\"></a\n-00004bc0: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n-00004bd0: 6e65 6e6f 223e 2020 2039 303c 2f73 7061  neno\">   90</spa\n-00004be0: 6e3e 2020 2020 3c73 7061 6e20 636c 6173  n>    <span clas\n-00004bf0: 733d 226b 6579 776f 7264 7479 7065 223e  s=\"keywordtype\">\n-00004c00: 696e 743c 2f73 7061 6e3e 205f 7175 6164  int</span> _quad\n-00004c10: 4f66 6673 6574 7342 6173 655b 325d 3b20  OffsetsBase[2]; \n-00004c20: 2020 2020 2020 3c73 7061 6e20 636c 6173        <span clas\n-00004c30: 733d 2263 6f6d 6d65 6e74 223e 2f2f 2067  s=\"comment\">// g\n-00004c40: 7265 676f 7279 2c20 626f 756e 6461 7279  regory, boundary\n-00004c50: 4772 6567 6f72 793c 2f73 7061 6e3e 3c2f  Gregory</span></\n-00004c60: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n-00004c70: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n-00004c80: 3030 3931 2220 6e61 6d65 3d22 6c30 3030  0091\" name=\"l000\n-00004c90: 3931 223e 3c2f 613e 3c73 7061 6e20 636c  91\"></a><span cl\n-00004ca0: 6173 733d 226c 696e 656e 6f22 3e20 2020  ass=\"lineno\">   \n-00004cb0: 3931 3c2f 7370 616e 3e7d 3b3c 2f64 6976  91</span>};</div\n-00004cc0: 3e0a 3c2f 6469 763e 0a3c 6469 7620 636c  >.</div>.<div cl\n-00004cd0: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n-00004ce0: 3d22 6c30 3030 3932 2220 6e61 6d65 3d22  =\"l00092\" name=\"\n-00004cf0: 6c30 3030 3932 223e 3c2f 613e 3c73 7061  l00092\"></a><spa\n-00004d00: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n-00004d10: 3e20 2020 3932 3c2f 7370 616e 3e20 3c2f  >   92</span> </\n-00004d20: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n-00004d30: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n-00004d40: 3030 3933 2220 6e61 6d65 3d22 6c30 3030  0093\" name=\"l000\n-00004d50: 3933 223e 3c2f 613e 3c73 7061 6e20 636c  93\"></a><span cl\n-00004d60: 6173 733d 226c 696e 656e 6f22 3e20 2020  ass=\"lineno\">   \n-00004d70: 3933 3c2f 7370 616e 3e20 3c2f 6469 763e  93</span> </div>\n-00004d80: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n-00004d90: 6522 3e3c 6120 6964 3d22 6c30 3030 3934  e\"><a id=\"l00094\n-00004da0: 2220 6e61 6d65 3d22 6c30 3030 3934 223e  \" name=\"l00094\">\n-00004db0: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n-00004dc0: 226c 696e 656e 6f22 3e20 2020 3934 3c2f  \"lineno\">   94</\n-00004dd0: 7370 616e 3e20 3c2f 6469 763e 0a3c 6469  span> </div>.<di\n-00004de0: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n-00004df0: 6120 6964 3d22 6c30 3030 3935 2220 6e61  a id=\"l00095\" na\n-00004e00: 6d65 3d22 6c30 3030 3935 223e 3c2f 613e  me=\"l00095\"></a>\n-00004e10: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n-00004e20: 656e 6f22 3e20 2020 3935 3c2f 7370 616e  eno\">   95</span\n-00004e30: 3e7d 2020 3c73 7061 6e20 636c 6173 733d  >}  <span class=\n-00004e40: 2263 6f6d 6d65 6e74 223e 2f2f 2065 6e64  \"comment\">// end\n-00004e50: 206e 616d 6573 7061 6365 204f 7364 3c2f   namespace Osd</\n-00004e60: 7370 616e 3e3c 2f64 6976 3e0a 3c64 6976  span></div>.<div\n-00004e70: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n-00004e80: 2069 643d 226c 3030 3039 3622 206e 616d   id=\"l00096\" nam\n-00004e90: 653d 226c 3030 3039 3622 3e3c 2f61 3e3c  e=\"l00096\"></a><\n-00004ea0: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n-00004eb0: 6e6f 223e 2020 2039 363c 2f73 7061 6e3e  no\">   96</span>\n-00004ec0: 203c 2f64 6976 3e0a 3c64 6976 2063 6c61   </div>.<div cla\n-00004ed0: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n-00004ee0: 226c 3030 3039 3722 206e 616d 653d 226c  \"l00097\" name=\"l\n-00004ef0: 3030 3039 3722 3e3c 2f61 3e3c 7370 616e  00097\"></a><span\n-00004f00: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n-00004f10: 2020 2039 373c 2f73 7061 6e3e 7d20 203c     97</span>}  <\n-00004f20: 7370 616e 2063 6c61 7373 3d22 636f 6d6d  span class=\"comm\n-00004f30: 656e 7422 3e2f 2f20 656e 6420 6e61 6d65  ent\">// end name\n-00004f40: 7370 6163 6520 4f50 454e 5355 4244 4956  space OPENSUBDIV\n-00004f50: 5f56 4552 5349 4f4e 3c2f 7370 616e 3e3c  _VERSION</span><\n-00004f60: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n-00004f70: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n-00004f80: 3030 3039 3822 206e 616d 653d 226c 3030  00098\" name=\"l00\n-00004f90: 3039 3822 3e3c 2f61 3e3c 7370 616e 2063  098\"></a><span c\n-00004fa0: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n-00004fb0: 2039 383c 2f73 7061 6e3e 3c73 7061 6e20   98</span><span \n-00004fc0: 636c 6173 733d 226b 6579 776f 7264 223e  class=\"keyword\">\n-00004fd0: 7573 696e 6720 6e61 6d65 7370 6163 6520  using namespace \n-00004fe0: 3c2f 7370 616e 3e4f 5045 4e53 5542 4449  </span>OPENSUBDI\n-00004ff0: 565f 5645 5253 494f 4e3b 3c2f 6469 763e  V_VERSION;</div>\n-00005000: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n-00005010: 6522 3e3c 6120 6964 3d22 6c30 3030 3939  e\"><a id=\"l00099\n-00005020: 2220 6e61 6d65 3d22 6c30 3030 3939 223e  \" name=\"l00099\">\n-00005030: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n-00005040: 226c 696e 656e 6f22 3e20 2020 3939 3c2f  \"lineno\">   99</\n-00005050: 7370 616e 3e20 3c2f 6469 763e 0a3c 6469  span> </div>.<di\n-00005060: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n-00005070: 6120 6964 3d22 6c30 3031 3030 2220 6e61  a id=\"l00100\" na\n-00005080: 6d65 3d22 6c30 3031 3030 223e 3c2f 613e  me=\"l00100\"></a>\n-00005090: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n-000050a0: 656e 6f22 3e20 2031 3030 3c2f 7370 616e  eno\">  100</span\n-000050b0: 3e7d 2020 3c73 7061 6e20 636c 6173 733d  >}  <span class=\n-000050c0: 2263 6f6d 6d65 6e74 223e 2f2f 2065 6e64  \"comment\">// end\n-000050d0: 206e 616d 6573 7061 6365 204f 7065 6e53   namespace OpenS\n-000050e0: 7562 6469 763c 2f73 7061 6e3e 3c2f 6469  ubdiv</span></di\n-000050f0: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n-00005100: 696e 6522 3e3c 6120 6964 3d22 6c30 3031  ine\"><a id=\"l001\n-00005110: 3031 2220 6e61 6d65 3d22 6c30 3031 3031  01\" name=\"l00101\n-00005120: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n-00005130: 733d 226c 696e 656e 6f22 3e20 2031 3031  s=\"lineno\">  101\n-00005140: 3c2f 7370 616e 3e20 3c2f 6469 763e 0a3c  </span> </div>.<\n-00005150: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n-00005160: 3e3c 6120 6964 3d22 6c30 3031 3032 2220  ><a id=\"l00102\" \n-00005170: 6e61 6d65 3d22 6c30 3031 3032 223e 3c2f  name=\"l00102\"></\n-00005180: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n-00005190: 696e 656e 6f22 3e20 2031 3032 3c2f 7370  ineno\">  102</sp\n-000051a0: 616e 3e3c 7370 616e 2063 6c61 7373 3d22  an><span class=\"\n-000051b0: 7072 6570 726f 6365 7373 6f72 223e 2365  preprocessor\">#e\n-000051c0: 6e64 6966 2020 3c2f 7370 616e 3e3c 7370  ndif  </span><sp\n-000051d0: 616e 2063 6c61 7373 3d22 636f 6d6d 656e  an class=\"commen\n-000051e0: 7422 3e2f 2f20 4f50 454e 5355 4244 4956  t\">// OPENSUBDIV\n-000051f0: 335f 4f53 445f 4433 4431 315f 4c45 4741  3_OSD_D3D11_LEGA\n-00005200: 4359 5f47 5245 474f 5259 5f50 4154 4348  CY_GREGORY_PATCH\n-00005210: 5f54 4142 4c45 5f48 3c2f 7370 616e 3e3c  _TABLE_H</span><\n-00005220: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n-00005230: 3d22 7474 6322 2069 643d 2261 6130 3039  =\"ttc\" id=\"aa009\n-00005240: 3035 5f68 746d 6c22 3e3c 6469 7620 636c  05_html\"><div cl\n-00005250: 6173 733d 2274 746e 616d 6522 3e3c 6120  ass=\"ttname\"><a \n-00005260: 6872 6566 3d22 6130 3039 3035 2e68 746d  href=\"a00905.htm\n-00005270: 6c22 3e4f 7065 6e53 7562 6469 763c 2f61  l\">OpenSubdiv</a\n-00005280: 3e3c 2f64 6976 3e3c 6469 7620 636c 6173  ></div><div clas\n-00005290: 733d 2274 7464 6566 223e 3c62 3e44 6566  s=\"ttdef\"><b>Def\n-000052a0: 696e 6974 696f 6e3c 2f62 3e20 3c61 2068  inition</b> <a h\n-000052b0: 7265 663d 2261 3030 3730 315f 736f 7572  ref=\"a00701_sour\n-000052c0: 6365 2e68 746d 6c23 6c30 3030 3332 223e  ce.html#l00032\">\n-000052d0: 6c69 6d69 7473 2e68 3a33 323c 2f61 3e3c  limits.h:32</a><\n-000052e0: 2f64 6976 3e3c 2f64 6976 3e0a 3c64 6976  /div></div>.<div\n-000052f0: 2063 6c61 7373 3d22 7474 6322 2069 643d   class=\"ttc\" id=\n-00005300: 2261 6130 3039 3733 5f68 746d 6c5f 6131  \"aa00973_html_a1\n-00005310: 6431 6366 6438 6666 6238 3465 3934 3766  d1cfd8ffb84e947f\n-00005320: 3832 3939 3963 3638 3262 3636 3661 3722  82999c682b666a7\"\n-00005330: 3e3c 6469 7620 636c 6173 733d 2274 746e  ><div class=\"ttn\n-00005340: 616d 6522 3e3c 6120 6872 6566 3d22 6130  ame\"><a href=\"a0\n-00005350: 3039 3733 2e68 746d 6c23 6131 6431 6366  0973.html#a1d1cf\n-00005360: 6438 6666 6238 3465 3934 3766 3832 3939  d8ffb84e947f8299\n-00005370: 3963 3638 3262 3636 3661 3722 3e4f 7065  9c682b666a7\">Ope\n-00005380: 6e53 7562 6469 763a 3a4f 5045 4e53 5542  nSubdiv::OPENSUB\n-00005390: 4449 565f 5645 5253 494f 4e3a 3a46 6172  DIV_VERSION::Far\n-000053a0: 3a3a 5061 7463 6844 6573 6372 6970 746f  ::PatchDescripto\n-000053b0: 723a 3a54 7970 653c 2f61 3e3c 2f64 6976  r::Type</a></div\n-000053c0: 3e3c 6469 7620 636c 6173 733d 2274 7464  ><div class=\"ttd\n-000053d0: 6563 6922 3e54 7970 653c 2f64 6976 3e3c  eci\">Type</div><\n-000053e0: 6469 7620 636c 6173 733d 2274 7464 6566  div class=\"ttdef\n-000053f0: 223e 3c62 3e44 6566 696e 6974 696f 6e3c  \"><b>Definition<\n-00005400: 2f62 3e20 3c61 2068 7265 663d 2261 3030  /b> <a href=\"a00\n-00005410: 3737 335f 736f 7572 6365 2e68 746d 6c23  773_source.html#\n-00005420: 6c30 3030 3438 223e 7061 7463 6844 6573  l00048\">patchDes\n-00005430: 6372 6970 746f 722e 683a 3438 3c2f 613e  criptor.h:48</a>\n-00005440: 3c2f 6469 763e 3c2f 6469 763e 0a3c 6469  </div></div>.<di\n-00005450: 7620 636c 6173 733d 2274 7463 2220 6964  v class=\"ttc\" id\n-00005460: 3d22 6161 3030 3937 335f 6874 6d6c 5f61  =\"aa00973_html_a\n-00005470: 3164 3163 6664 3866 6662 3834 6539 3437  1d1cfd8ffb84e947\n-00005480: 6638 3239 3939 6336 3832 6236 3636 6137  f82999c682b666a7\n-00005490: 6163 3461 6531 3064 6639 6331 3365 3434  ac4ae10df9c13e44\n-000054a0: 3838 3063 6137 6265 3334 3165 3434 6632  880ca7be341e44f2\n-000054b0: 6122 3e3c 6469 7620 636c 6173 733d 2274  a\"><div class=\"t\n-000054c0: 746e 616d 6522 3e3c 6120 6872 6566 3d22  tname\"><a href=\"\n-000054d0: 6130 3039 3733 2e68 746d 6c23 6131 6431  a00973.html#a1d1\n-000054e0: 6366 6438 6666 6238 3465 3934 3766 3832  cfd8ffb84e947f82\n-000054f0: 3939 3963 3638 3262 3636 3661 3761 6334  999c682b666a7ac4\n-00005500: 6165 3130 6466 3963 3133 6534 3438 3830  ae10df9c13e44880\n-00005510: 6361 3762 6533 3431 6534 3466 3261 223e  ca7be341e44f2a\">\n-00005520: 4f70 656e 5375 6264 6976 3a3a 4f50 454e  OpenSubdiv::OPEN\n-00005530: 5355 4244 4956 5f56 4552 5349 4f4e 3a3a  SUBDIV_VERSION::\n-00005540: 4661 723a 3a50 6174 6368 4465 7363 7269  Far::PatchDescri\n-00005550: 7074 6f72 3a3a 4752 4547 4f52 595f 424f  ptor::GREGORY_BO\n-00005560: 554e 4441 5259 3c2f 613e 3c2f 6469 763e  UNDARY</a></div>\n-00005570: 3c64 6976 2063 6c61 7373 3d22 7474 6465  <div class=\"ttde\n-00005580: 6369 223e 4020 4752 4547 4f52 595f 424f  ci\">@ GREGORY_BO\n-00005590: 554e 4441 5259 3c2f 6469 763e 3c64 6976  UNDARY</div><div\n-000055a0: 2063 6c61 7373 3d22 7474 6465 6622 3e3c   class=\"ttdef\"><\n-000055b0: 623e 4465 6669 6e69 7469 6f6e 3c2f 623e  b>Definition</b>\n-000055c0: 203c 6120 6872 6566 3d22 6130 3037 3733   <a href=\"a00773\n-000055d0: 5f73 6f75 7263 652e 6874 6d6c 236c 3030  _source.html#l00\n-000055e0: 3036 3122 3e70 6174 6368 4465 7363 7269  061\">patchDescri\n-000055f0: 7074 6f72 2e68 3a36 313c 2f61 3e3c 2f64  ptor.h:61</a></d\n-00005600: 6976 3e3c 2f64 6976 3e0a 3c64 6976 2063  iv></div>.<div c\n-00005610: 6c61 7373 3d22 7474 6322 2069 643d 2261  lass=\"ttc\" id=\"a\n-00005620: 6130 3039 3933 5f68 746d 6c22 3e3c 6469  a00993_html\"><di\n-00005630: 7620 636c 6173 733d 2274 746e 616d 6522  v class=\"ttname\"\n-00005640: 3e3c 6120 6872 6566 3d22 6130 3039 3933  ><a href=\"a00993\n-00005650: 2e68 746d 6c22 3e4f 7065 6e53 7562 6469  .html\">OpenSubdi\n-00005660: 763a 3a4f 5045 4e53 5542 4449 565f 5645  v::OPENSUBDIV_VE\n-00005670: 5253 494f 4e3a 3a46 6172 3a3a 5061 7463  RSION::Far::Patc\n-00005680: 6854 6162 6c65 3c2f 613e 3c2f 6469 763e  hTable</a></div>\n-00005690: 3c64 6976 2063 6c61 7373 3d22 7474 646f  <div class=\"ttdo\n-000056a0: 6322 3e43 6f6e 7461 696e 6572 2066 6f72  c\">Container for\n-000056b0: 2061 7272 6179 7320 6f66 2070 6172 616d   arrays of param\n-000056c0: 6574 7269 6320 7061 7463 6865 732e 3c2f  etric patches.</\n-000056d0: 6469 763e 3c64 6976 2063 6c61 7373 3d22  div><div class=\"\n-000056e0: 7474 6465 6622 3e3c 623e 4465 6669 6e69  ttdef\"><b>Defini\n-000056f0: 7469 6f6e 3c2f 623e 203c 6120 6872 6566  tion</b> <a href\n-00005700: 3d22 6130 3037 3631 5f73 6f75 7263 652e  =\"a00761_source.\n-00005710: 6874 6d6c 236c 3030 3035 3522 3e70 6174  html#l00055\">pat\n-00005720: 6368 5461 626c 652e 683a 3535 3c2f 613e  chTable.h:55</a>\n-00005730: 3c2f 6469 763e 3c2f 6469 763e 0a3c 6469  </div></div>.<di\n-00005740: 7620 636c 6173 733d 2274 7463 2220 6964  v class=\"ttc\" id\n-00005750: 3d22 6161 3031 3230 355f 6874 6d6c 223e  =\"aa01205_html\">\n-00005760: 3c64 6976 2063 6c61 7373 3d22 7474 6e61  <div class=\"ttna\n-00005770: 6d65 223e 3c61 2068 7265 663d 2261 3031  me\"><a href=\"a01\n-00005780: 3230 352e 6874 6d6c 223e 4f70 656e 5375  205.html\">OpenSu\n-00005790: 6264 6976 3a3a 4f50 454e 5355 4244 4956  bdiv::OPENSUBDIV\n-000057a0: 5f56 4552 5349 4f4e 3a3a 4f73 643a 3a44  _VERSION::Osd::D\n-000057b0: 3344 3131 4c65 6761 6379 4772 6567 6f72  3D11LegacyGregor\n-000057c0: 7950 6174 6368 5461 626c 653c 2f61 3e3c  yPatchTable</a><\n-000057d0: 2f64 6976 3e3c 6469 7620 636c 6173 733d  /div><div class=\n-000057e0: 2274 7464 6566 223e 3c62 3e44 6566 696e  \"ttdef\"><b>Defin\n-000057f0: 6974 696f 6e3c 2f62 3e20 3c61 2068 7265  ition</b> <a hre\n-00005800: 663d 2261 3030 3836 335f 736f 7572 6365  f=\"a00863_source\n-00005810: 2e68 746d 6c23 6c30 3030 3433 223e 6433  .html#l00043\">d3\n-00005820: 6431 314c 6567 6163 7947 7265 676f 7279  d11LegacyGregory\n-00005830: 5061 7463 6854 6162 6c65 2e68 3a34 343c  PatchTable.h:44<\n-00005840: 2f61 3e3c 2f64 6976 3e3c 2f64 6976 3e0a  /a></div></div>.\n-00005850: 3c64 6976 2063 6c61 7373 3d22 7474 6322  <div class=\"ttc\"\n-00005860: 2069 643d 2261 6130 3132 3035 5f68 746d   id=\"aa01205_htm\n-00005870: 6c5f 6131 3661 6164 3839 3831 6230 6233  l_a16aad8981b0b3\n-00005880: 3531 3834 6236 6534 3463 6662 3234 3230  5184b6e44cfb2420\n-00005890: 3033 6422 3e3c 6469 7620 636c 6173 733d  03d\"><div class=\n-000058a0: 2274 746e 616d 6522 3e3c 6120 6872 6566  \"ttname\"><a href\n-000058b0: 3d22 6130 3132 3035 2e68 746d 6c23 6131  =\"a01205.html#a1\n-000058c0: 3661 6164 3839 3831 6230 6233 3531 3834  6aad8981b0b35184\n-000058d0: 6236 6534 3463 6662 3234 3230 3033 6422  b6e44cfb242003d\"\n-000058e0: 3e4f 7065 6e53 7562 6469 763a 3a4f 5045  >OpenSubdiv::OPE\n-000058f0: 4e53 5542 4449 565f 5645 5253 494f 4e3a  NSUBDIV_VERSION:\n-00005900: 3a4f 7364 3a3a 4433 4431 314c 6567 6163  :Osd::D3D11Legac\n-00005910: 7947 7265 676f 7279 5061 7463 6854 6162  yGregoryPatchTab\n-00005920: 6c65 3a3a 5570 6461 7465 5665 7274 6578  le::UpdateVertex\n-00005930: 4275 6666 6572 3c2f 613e 3c2f 6469 763e  Buffer</a></div>\n-00005940: 3c64 6976 2063 6c61 7373 3d22 7474 6465  <div class=\"ttde\n-00005950: 6369 223e 766f 6964 2055 7064 6174 6556  ci\">void UpdateV\n-00005960: 6572 7465 7842 7566 6665 7228 4944 3344  ertexBuffer(ID3D\n-00005970: 3131 4275 6666 6572 202a 7662 6f2c 2069  11Buffer *vbo, i\n-00005980: 6e74 206e 756d 5665 7274 6963 6573 2c20  nt numVertices, \n-00005990: 696e 7420 6e75 6d56 6572 7465 7845 6c65  int numVertexEle\n-000059a0: 6d65 6e74 732c 2049 4433 4431 3144 6576  ments, ID3D11Dev\n-000059b0: 6963 6543 6f6e 7465 7874 202a 7064 3364  iceContext *pd3d\n-000059c0: 3131 4465 7669 6365 436f 6e74 6578 7429  11DeviceContext)\n-000059d0: 3c2f 6469 763e 3c2f 6469 763e 0a3c 6469  </div></div>.<di\n-000059e0: 7620 636c 6173 733d 2274 7463 2220 6964  v class=\"ttc\" id\n-000059f0: 3d22 6161 3031 3230 355f 6874 6d6c 5f61  =\"aa01205_html_a\n-00005a00: 3137 3666 6238 3762 3762 6134 3764 3563  176fb87b7ba47d5c\n-00005a10: 3263 3261 3664 3333 3265 3236 3837 6365  2c2a6d332e2687ce\n-00005a20: 223e 3c64 6976 2063 6c61 7373 3d22 7474  \"><div class=\"tt\n-00005a30: 6e61 6d65 223e 3c61 2068 7265 663d 2261  name\"><a href=\"a\n-00005a40: 3031 3230 352e 6874 6d6c 2361 3137 3666  01205.html#a176f\n-00005a50: 6238 3762 3762 6134 3764 3563 3263 3261  b87b7ba47d5c2c2a\n-00005a60: 3664 3333 3265 3236 3837 6365 223e 4f70  6d332e2687ce\">Op\n-00005a70: 656e 5375 6264 6976 3a3a 4f50 454e 5355  enSubdiv::OPENSU\n-00005a80: 4244 4956 5f56 4552 5349 4f4e 3a3a 4f73  BDIV_VERSION::Os\n-00005a90: 643a 3a44 3344 3131 4c65 6761 6379 4772  d::D3D11LegacyGr\n-00005aa0: 6567 6f72 7950 6174 6368 5461 626c 653a  egoryPatchTable:\n-00005ab0: 3a47 6574 5175 6164 4f66 6673 6574 7342  :GetQuadOffsetsB\n-00005ac0: 6173 653c 2f61 3e3c 2f64 6976 3e3c 6469  ase</a></div><di\n-00005ad0: 7620 636c 6173 733d 2274 7464 6563 6922  v class=\"ttdeci\"\n-00005ae0: 3e69 6e74 2047 6574 5175 6164 4f66 6673  >int GetQuadOffs\n-00005af0: 6574 7342 6173 6528 4661 723a 3a50 6174  etsBase(Far::Pat\n-00005b00: 6368 4465 7363 7269 7074 6f72 3a3a 5479  chDescriptor::Ty\n-00005b10: 7065 2074 7970 6529 3c2f 6469 763e 3c64  pe type)</div><d\n-00005b20: 6976 2063 6c61 7373 3d22 7474 6465 6622  iv class=\"ttdef\"\n-00005b30: 3e3c 623e 4465 6669 6e69 7469 6f6e 3c2f  ><b>Definition</\n-00005b40: 623e 203c 6120 6872 6566 3d22 6130 3038  b> <a href=\"a008\n-00005b50: 3633 5f73 6f75 7263 652e 6874 6d6c 236c  63_source.html#l\n-00005b60: 3030 3037 3422 3e64 3364 3131 4c65 6761  00074\">d3d11Lega\n-00005b70: 6379 4772 6567 6f72 7950 6174 6368 5461  cyGregoryPatchTa\n-00005b80: 626c 652e 683a 3734 3c2f 613e 3c2f 6469  ble.h:74</a></di\n-00005b90: 763e 3c2f 6469 763e 0a3c 6469 7620 636c  v></div>.<div cl\n-00005ba0: 6173 733d 2274 7463 2220 6964 3d22 6161  ass=\"ttc\" id=\"aa\n-00005bb0: 3031 3230 355f 6874 6d6c 5f61 3162 3733  01205_html_a1b73\n-00005bc0: 6265 3165 3933 3433 6133 6466 3364 3064  be1e9343a3df3d0d\n-00005bd0: 6436 3032 3764 3036 6665 3162 223e 3c64  d6027d06fe1b\"><d\n-00005be0: 6976 2063 6c61 7373 3d22 7474 6e61 6d65  iv class=\"ttname\n-00005bf0: 223e 3c61 2068 7265 663d 2261 3031 3230  \"><a href=\"a0120\n-00005c00: 352e 6874 6d6c 2361 3162 3733 6265 3165  5.html#a1b73be1e\n-00005c10: 3933 3433 6133 6466 3364 3064 6436 3032  9343a3df3d0dd602\n-00005c20: 3764 3036 6665 3162 223e 4f70 656e 5375  7d06fe1b\">OpenSu\n-00005c30: 6264 6976 3a3a 4f50 454e 5355 4244 4956  bdiv::OPENSUBDIV\n-00005c40: 5f56 4552 5349 4f4e 3a3a 4f73 643a 3a44  _VERSION::Osd::D\n-00005c50: 3344 3131 4c65 6761 6379 4772 6567 6f72  3D11LegacyGregor\n-00005c60: 7950 6174 6368 5461 626c 653a 3a7e 4433  yPatchTable::~D3\n-00005c70: 4431 314c 6567 6163 7947 7265 676f 7279  D11LegacyGregory\n-00005c80: 5061 7463 6854 6162 6c65 3c2f 613e 3c2f  PatchTable</a></\n-00005c90: 6469 763e 3c64 6976 2063 6c61 7373 3d22  div><div class=\"\n-00005ca0: 7474 6465 6369 223e 7e44 3344 3131 4c65  ttdeci\">~D3D11Le\n-00005cb0: 6761 6379 4772 6567 6f72 7950 6174 6368  gacyGregoryPatch\n-00005cc0: 5461 626c 6528 293c 2f64 6976 3e3c 2f64  Table()</div></d\n-00005cd0: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n-00005ce0: 7474 6322 2069 643d 2261 6130 3132 3035  ttc\" id=\"aa01205\n-00005cf0: 5f68 746d 6c5f 6139 3736 3337 3435 3438  _html_a976374548\n-00005d00: 3237 3837 3131 6435 3039 3933 3237 3332  278711d509932732\n-00005d10: 3630 6466 3137 3422 3e3c 6469 7620 636c  60df174\"><div cl\n-00005d20: 6173 733d 2274 746e 616d 6522 3e3c 6120  ass=\"ttname\"><a \n-00005d30: 6872 6566 3d22 6130 3132 3035 2e68 746d  href=\"a01205.htm\n-00005d40: 6c23 6139 3736 3337 3435 3438 3237 3837  l#a9763745482787\n-00005d50: 3131 6435 3039 3933 3237 3332 3630 6466  11d50993273260df\n-00005d60: 3137 3422 3e4f 7065 6e53 7562 6469 763a  174\">OpenSubdiv:\n-00005d70: 3a4f 5045 4e53 5542 4449 565f 5645 5253  :OPENSUBDIV_VERS\n-00005d80: 494f 4e3a 3a4f 7364 3a3a 4433 4431 314c  ION::Osd::D3D11L\n-00005d90: 6567 6163 7947 7265 676f 7279 5061 7463  egacyGregoryPatc\n-00005da0: 6854 6162 6c65 3a3a 4372 6561 7465 3c2f  hTable::Create</\n-00005db0: 613e 3c2f 6469 763e 3c64 6976 2063 6c61  a></div><div cla\n-00005dc0: 7373 3d22 7474 6465 6369 223e 7374 6174  ss=\"ttdeci\">stat\n-00005dd0: 6963 2044 3344 3131 4c65 6761 6379 4772  ic D3D11LegacyGr\n-00005de0: 6567 6f72 7950 6174 6368 5461 626c 6520  egoryPatchTable \n-00005df0: 2a20 4372 6561 7465 2846 6172 3a3a 5061  * Create(Far::Pa\n-00005e00: 7463 6854 6162 6c65 2063 6f6e 7374 202a  tchTable const *\n-00005e10: 6661 7250 6174 6368 5461 626c 652c 2049  farPatchTable, I\n-00005e20: 4433 4431 3144 6576 6963 6543 6f6e 7465  D3D11DeviceConte\n-00005e30: 7874 202a 6465 7669 6365 436f 6e74 6578  xt *deviceContex\n-00005e40: 7429 3c2f 6469 763e 3c2f 6469 763e 0a3c  t)</div></div>.<\n-00005e50: 6469 7620 636c 6173 733d 2274 7463 2220  div class=\"ttc\" \n-00005e60: 6964 3d22 6161 3031 3230 355f 6874 6d6c  id=\"aa01205_html\n-00005e70: 5f61 6237 3538 6337 3266 3333 6139 6533  _ab758c72f33a9e3\n-00005e80: 6161 3436 6331 3039 3634 3436 6333 3535  aa46c1096446c355\n-00005e90: 3765 223e 3c64 6976 2063 6c61 7373 3d22  7e\"><div class=\"\n-00005ea0: 7474 6e61 6d65 223e 3c61 2068 7265 663d  ttname\"><a href=\n-00005eb0: 2261 3031 3230 352e 6874 6d6c 2361 6237  \"a01205.html#ab7\n-00005ec0: 3538 6337 3266 3333 6139 6533 6161 3436  58c72f33a9e3aa46\n-00005ed0: 6331 3039 3634 3436 6333 3535 3765 223e  c1096446c3557e\">\n-00005ee0: 4f70 656e 5375 6264 6976 3a3a 4f50 454e  OpenSubdiv::OPEN\n-00005ef0: 5355 4244 4956 5f56 4552 5349 4f4e 3a3a  SUBDIV_VERSION::\n-00005f00: 4f73 643a 3a44 3344 3131 4c65 6761 6379  Osd::D3D11Legacy\n-00005f10: 4772 6567 6f72 7950 6174 6368 5461 626c  GregoryPatchTabl\n-00005f20: 653a 3a47 6574 5665 7274 6578 5352 563c  e::GetVertexSRV<\n-00005f30: 2f61 3e3c 2f64 6976 3e3c 6469 7620 636c  /a></div><div cl\n-00005f40: 6173 733d 2274 7464 6563 6922 3e49 4433  ass=\"ttdeci\">ID3\n-00005f50: 4431 3153 6861 6465 7252 6573 6f75 7263  D11ShaderResourc\n-00005f60: 6556 6965 7720 2a20 4765 7456 6572 7465  eView * GetVerte\n-00005f70: 7853 5256 2829 2063 6f6e 7374 3c2f 6469  xSRV() const</di\n-00005f80: 763e 3c64 6976 2063 6c61 7373 3d22 7474  v><div class=\"tt\n-00005f90: 6465 6622 3e3c 623e 4465 6669 6e69 7469  def\"><b>Definiti\n-00005fa0: 6f6e 3c2f 623e 203c 6120 6872 6566 3d22  on</b> <a href=\"\n-00005fb0: 6130 3038 3633 5f73 6f75 7263 652e 6874  a00863_source.ht\n-00005fc0: 6d6c 236c 3030 3036 3222 3e64 3364 3131  ml#l00062\">d3d11\n-00005fd0: 4c65 6761 6379 4772 6567 6f72 7950 6174  LegacyGregoryPat\n-00005fe0: 6368 5461 626c 652e 683a 3632 3c2f 613e  chTable.h:62</a>\n-00005ff0: 3c2f 6469 763e 3c2f 6469 763e 0a3c 6469  </div></div>.<di\n-00006000: 7620 636c 6173 733d 2274 7463 2220 6964  v class=\"ttc\" id\n-00006010: 3d22 6161 3031 3230 355f 6874 6d6c 5f61  =\"aa01205_html_a\n-00006020: 6361 3964 3137 3032 3037 3764 6133 3632  ca9d1702077da362\n-00006030: 6263 3562 6131 6430 3436 6637 3835 3364  bc5ba1d046f7853d\n-00006040: 223e 3c64 6976 2063 6c61 7373 3d22 7474  \"><div class=\"tt\n-00006050: 6e61 6d65 223e 3c61 2068 7265 663d 2261  name\"><a href=\"a\n-00006060: 3031 3230 352e 6874 6d6c 2361 6361 3964  01205.html#aca9d\n-00006070: 3137 3032 3037 3764 6133 3632 6263 3562  1702077da362bc5b\n-00006080: 6131 6430 3436 6637 3835 3364 223e 4f70  a1d046f7853d\">Op\n-00006090: 656e 5375 6264 6976 3a3a 4f50 454e 5355  enSubdiv::OPENSU\n-000060a0: 4244 4956 5f56 4552 5349 4f4e 3a3a 4f73  BDIV_VERSION::Os\n-000060b0: 643a 3a44 3344 3131 4c65 6761 6379 4772  d::D3D11LegacyGr\n-000060c0: 6567 6f72 7950 6174 6368 5461 626c 653a  egoryPatchTable:\n-000060d0: 3a43 7265 6174 653c 2f61 3e3c 2f64 6976  :Create</a></div\n-000060e0: 3e3c 6469 7620 636c 6173 733d 2274 7464  ><div class=\"ttd\n-000060f0: 6563 6922 3e73 7461 7469 6320 4433 4431  eci\">static D3D1\n-00006100: 314c 6567 6163 7947 7265 676f 7279 5061  1LegacyGregoryPa\n-00006110: 7463 6854 6162 6c65 202a 2043 7265 6174  tchTable * Creat\n-00006120: 6528 4661 723a 3a50 6174 6368 5461 626c  e(Far::PatchTabl\n-00006130: 6520 636f 6e73 7420 2a66 6172 5061 7463  e const *farPatc\n-00006140: 6854 6162 6c65 2c20 4445 5649 4345 5f43  hTable, DEVICE_C\n-00006150: 4f4e 5445 5854 2063 6f6e 7465 7874 293c  ONTEXT context)<\n-00006160: 2f64 6976 3e3c 6469 7620 636c 6173 733d  /div><div class=\n-00006170: 2274 7464 6566 223e 3c62 3e44 6566 696e  \"ttdef\"><b>Defin\n-00006180: 6974 696f 6e3c 2f62 3e20 3c61 2068 7265  ition</b> <a hre\n-00006190: 663d 2261 3030 3836 335f 736f 7572 6365  f=\"a00863_source\n-000061a0: 2e68 746d 6c23 6c30 3030 3439 223e 6433  .html#l00049\">d3\n-000061b0: 6431 314c 6567 6163 7947 7265 676f 7279  d11LegacyGregory\n-000061c0: 5061 7463 6854 6162 6c65 2e68 3a34 393c  PatchTable.h:49<\n-000061d0: 2f61 3e3c 2f64 6976 3e3c 2f64 6976 3e0a  /a></div></div>.\n-000061e0: 3c64 6976 2063 6c61 7373 3d22 7474 6322  <div class=\"ttc\"\n-000061f0: 2069 643d 2261 6130 3132 3035 5f68 746d   id=\"aa01205_htm\n-00006200: 6c5f 6164 6263 3135 3563 3930 3266 3463  l_adbc155c902f4c\n-00006210: 3263 6238 3864 3966 6666 6265 6236 3439  2cb88d9fffbeb649\n-00006220: 3962 3422 3e3c 6469 7620 636c 6173 733d  9b4\"><div class=\n-00006230: 2274 746e 616d 6522 3e3c 6120 6872 6566  \"ttname\"><a href\n-00006240: 3d22 6130 3132 3035 2e68 746d 6c23 6164  =\"a01205.html#ad\n-00006250: 6263 3135 3563 3930 3266 3463 3263 6238  bc155c902f4c2cb8\n-00006260: 3864 3966 6666 6265 6236 3439 3962 3422  8d9fffbeb6499b4\"\n-00006270: 3e4f 7065 6e53 7562 6469 763a 3a4f 5045  >OpenSubdiv::OPE\n-00006280: 4e53 5542 4449 565f 5645 5253 494f 4e3a  NSUBDIV_VERSION:\n-00006290: 3a4f 7364 3a3a 4433 4431 314c 6567 6163  :Osd::D3D11Legac\n-000062a0: 7947 7265 676f 7279 5061 7463 6854 6162  yGregoryPatchTab\n-000062b0: 6c65 3a3a 4765 7456 6572 7465 7856 616c  le::GetVertexVal\n-000062c0: 656e 6365 5352 563c 2f61 3e3c 2f64 6976  enceSRV</a></div\n-000062d0: 3e3c 6469 7620 636c 6173 733d 2274 7464  ><div class=\"ttd\n-000062e0: 6563 6922 3e49 4433 4431 3153 6861 6465  eci\">ID3D11Shade\n-000062f0: 7252 6573 6f75 7263 6556 6965 7720 2a20  rResourceView * \n-00006300: 4765 7456 6572 7465 7856 616c 656e 6365  GetVertexValence\n-00006310: 5352 5628 2920 636f 6e73 743c 2f64 6976  SRV() const</div\n-00006320: 3e3c 6469 7620 636c 6173 733d 2274 7464  ><div class=\"ttd\n-00006330: 6566 223e 3c62 3e44 6566 696e 6974 696f  ef\"><b>Definitio\n-00006340: 6e3c 2f62 3e20 3c61 2068 7265 663d 2261  n</b> <a href=\"a\n-00006350: 3030 3836 335f 736f 7572 6365 2e68 746d  00863_source.htm\n-00006360: 6c23 6c30 3030 3636 223e 6433 6431 314c  l#l00066\">d3d11L\n-00006370: 6567 6163 7947 7265 676f 7279 5061 7463  egacyGregoryPatc\n-00006380: 6854 6162 6c65 2e68 3a36 363c 2f61 3e3c  hTable.h:66</a><\n-00006390: 2f64 6976 3e3c 2f64 6976 3e0a 3c64 6976  /div></div>.<div\n-000063a0: 2063 6c61 7373 3d22 7474 6322 2069 643d   class=\"ttc\" id=\n-000063b0: 2261 6130 3132 3035 5f68 746d 6c5f 6166  \"aa01205_html_af\n-000063c0: 3033 6462 3431 6266 6362 6266 3862 6232  03db41bfcbbf8bb2\n-000063d0: 3636 6637 6230 3637 6466 3634 3333 6122  66f7b067df6433a\"\n-000063e0: 3e3c 6469 7620 636c 6173 733d 2274 746e  ><div class=\"ttn\n-000063f0: 616d 6522 3e3c 6120 6872 6566 3d22 6130  ame\"><a href=\"a0\n-00006400: 3132 3035 2e68 746d 6c23 6166 3033 6462  1205.html#af03db\n-00006410: 3431 6266 6362 6266 3862 6232 3636 6637  41bfcbbf8bb266f7\n-00006420: 6230 3637 6466 3634 3333 6122 3e4f 7065  b067df6433a\">Ope\n-00006430: 6e53 7562 6469 763a 3a4f 5045 4e53 5542  nSubdiv::OPENSUB\n-00006440: 4449 565f 5645 5253 494f 4e3a 3a4f 7364  DIV_VERSION::Osd\n-00006450: 3a3a 4433 4431 314c 6567 6163 7947 7265  ::D3D11LegacyGre\n-00006460: 676f 7279 5061 7463 6854 6162 6c65 3a3a  goryPatchTable::\n-00006470: 4765 7451 7561 644f 6666 7365 7473 5352  GetQuadOffsetsSR\n-00006480: 563c 2f61 3e3c 2f64 6976 3e3c 6469 7620  V</a></div><div \n-00006490: 636c 6173 733d 2274 7464 6563 6922 3e49  class=\"ttdeci\">I\n-000064a0: 4433 4431 3153 6861 6465 7252 6573 6f75  D3D11ShaderResou\n-000064b0: 7263 6556 6965 7720 2a20 4765 7451 7561  rceView * GetQua\n-000064c0: 644f 6666 7365 7473 5352 5628 2920 636f  dOffsetsSRV() co\n-000064d0: 6e73 743c 2f64 6976 3e3c 6469 7620 636c  nst</div><div cl\n-000064e0: 6173 733d 2274 7464 6566 223e 3c62 3e44  ass=\"ttdef\"><b>D\n-000064f0: 6566 696e 6974 696f 6e3c 2f62 3e20 3c61  efinition</b> <a\n-00006500: 2068 7265 663d 2261 3030 3836 335f 736f   href=\"a00863_so\n-00006510: 7572 6365 2e68 746d 6c23 6c30 3030 3730  urce.html#l00070\n-00006520: 223e 6433 6431 314c 6567 6163 7947 7265  \">d3d11LegacyGre\n-00006530: 676f 7279 5061 7463 6854 6162 6c65 2e68  goryPatchTable.h\n-00006540: 3a37 303c 2f61 3e3c 2f64 6976 3e3c 2f64  :70</a></div></d\n-00006550: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n-00006560: 7474 6322 2069 643d 2261 6130 3132 3035  ttc\" id=\"aa01205\n-00006570: 5f68 746d 6c5f 6166 3133 3862 3435 3335  _html_af138b4535\n-00006580: 6534 6462 3566 3031 3332 3235 6335 3932  e4db5f013225c592\n-00006590: 3465 3062 3234 3322 3e3c 6469 7620 636c  4e0b243\"><div cl\n-000065a0: 6173 733d 2274 746e 616d 6522 3e3c 6120  ass=\"ttname\"><a \n-000065b0: 6872 6566 3d22 6130 3132 3035 2e68 746d  href=\"a01205.htm\n-000065c0: 6c23 6166 3133 3862 3435 3335 6534 6462  l#af138b4535e4db\n-000065d0: 3566 3031 3332 3235 6335 3932 3465 3062  5f013225c5924e0b\n-000065e0: 3234 3322 3e4f 7065 6e53 7562 6469 763a  243\">OpenSubdiv:\n-000065f0: 3a4f 5045 4e53 5542 4449 565f 5645 5253  :OPENSUBDIV_VERS\n-00006600: 494f 4e3a 3a4f 7364 3a3a 4433 4431 314c  ION::Osd::D3D11L\n-00006610: 6567 6163 7947 7265 676f 7279 5061 7463  egacyGregoryPatc\n-00006620: 6854 6162 6c65 3a3a 4433 4431 314c 6567  hTable::D3D11Leg\n-00006630: 6163 7947 7265 676f 7279 5061 7463 6854  acyGregoryPatchT\n-00006640: 6162 6c65 3c2f 613e 3c2f 6469 763e 3c64  able</a></div><d\n-00006650: 6976 2063 6c61 7373 3d22 7474 6465 6369  iv class=\"ttdeci\n-00006660: 223e 4433 4431 314c 6567 6163 7947 7265  \">D3D11LegacyGre\n-00006670: 676f 7279 5061 7463 6854 6162 6c65 2829  goryPatchTable()\n-00006680: 3c2f 6469 763e 3c2f 6469 763e 0a3c 2f64  </div></div>.</d\n-00006690: 6976 3e3c 212d 2d20 6672 6167 6d65 6e74  iv><!-- fragment\n-000066a0: 202d 2d3e 3c2f 6469 763e 3c21 2d2d 2063   --></div><!-- c\n-000066b0: 6f6e 7465 6e74 7320 2d2d 3e0a 3c2f 6469  ontents -->.</di\n-000066c0: 763e 3c21 2d2d 2064 6f63 2d63 6f6e 7465  v><!-- doc-conte\n-000066d0: 6e74 202d 2d3e 0a3c 212d 2d20 7374 6172  nt -->.<!-- star\n-000066e0: 7420 666f 6f74 6572 2070 6172 7420 2d2d  t footer part --\n-000066f0: 3e0a 3c64 6976 2069 643d 226e 6176 2d70  >.<div id=\"nav-p\n-00006700: 6174 6822 2063 6c61 7373 3d22 6e61 7670  ath\" class=\"navp\n-00006710: 6174 6822 3e3c 212d 2d20 6964 2069 7320  ath\"><!-- id is \n-00006720: 6e65 6564 6564 2066 6f72 2074 7265 6576  needed for treev\n-00006730: 6965 7720 6675 6e63 7469 6f6e 2120 2d2d  iew function! --\n-00006740: 3e0a 2020 3c75 6c3e 0a20 2020 203c 6c69  >.  <ul>.    <li\n-00006750: 2063 6c61 7373 3d22 6e61 7665 6c65 6d22   class=\"navelem\"\n-00006760: 3e3c 6120 636c 6173 733d 2265 6c22 2068  ><a class=\"el\" h\n-00006770: 7265 663d 2264 6972 5f39 3264 3332 6564  ref=\"dir_92d32ed\n-00006780: 3265 6535 6135 3138 3963 3234 3737 3237  2ee5a5189c247727\n-00006790: 6338 3365 3462 3066 612e 6874 6d6c 223e  c83e4b0fa.html\">\n-000067a0: 6f70 656e 7375 6264 6976 3c2f 613e 3c2f  opensubdiv</a></\n-000067b0: 6c69 3e3c 6c69 2063 6c61 7373 3d22 6e61  li><li class=\"na\n-000067c0: 7665 6c65 6d22 3e3c 6120 636c 6173 733d  velem\"><a class=\n-000067d0: 2265 6c22 2068 7265 663d 2264 6972 5f32  \"el\" href=\"dir_2\n-000067e0: 3438 3330 3530 6237 3131 6331 3832 3961  483050b711c1829a\n-000067f0: 3634 3334 3030 3664 3062 6562 3130 632e  6434006d0beb10c.\n-00006800: 6874 6d6c 223e 6f73 643c 2f61 3e3c 2f6c  html\">osd</a></l\n-00006810: 693e 3c6c 6920 636c 6173 733d 226e 6176  i><li class=\"nav\n-00006820: 656c 656d 223e 3c61 2063 6c61 7373 3d22  elem\"><a class=\"\n-00006830: 656c 2220 6872 6566 3d22 6130 3038 3633  el\" href=\"a00863\n-00006840: 2e68 746d 6c22 3e64 3364 3131 4c65 6761  .html\">d3d11Lega\n-00006850: 6379 4772 6567 6f72 7950 6174 6368 5461  cyGregoryPatchTa\n-00006860: 626c 652e 683c 2f61 3e3c 2f6c 693e 0a20  ble.h</a></li>. \n-00006870: 2020 203c 6c69 2063 6c61 7373 3d22 666f     <li class=\"fo\n-00006880: 6f74 6572 223e 4765 6e65 7261 7465 6420  oter\">Generated \n-00006890: 6f6e 2054 6875 204a 616e 2032 2032 3032  on Thu Jan 2 202\n-000068a0: 3520 3038 3a34 373a 3436 2066 6f72 204f  5 08:47:46 for O\n-000068b0: 7065 6e53 7562 6469 7620 6279 203c 6120  penSubdiv by <a \n-000068c0: 6872 6566 3d22 6874 7470 733a 2f2f 7777  href=\"https://ww\n-000068d0: 772e 646f 7879 6765 6e2e 6f72 672f 696e  w.doxygen.org/in\n-000068e0: 6465 782e 6874 6d6c 223e 3c69 6d67 2063  dex.html\"><img c\n-000068f0: 6c61 7373 3d22 666f 6f74 6572 2220 7372  lass=\"footer\" sr\n-00006900: 633d 2264 6f78 7967 656e 2e73 7667 2220  c=\"doxygen.svg\" \n-00006910: 7769 6474 683d 2231 3034 2220 6865 6967  width=\"104\" heig\n-00006920: 6874 3d22 3331 2220 616c 743d 2264 6f78  ht=\"31\" alt=\"dox\n-00006930: 7967 656e 222f 3e3c 2f61 3e20 312e 392e  ygen\"/></a> 1.9.\n-00006940: 3820 3c2f 6c69 3e0a 2020 3c2f 756c 3e0a  8 </li>.  </ul>.\n-00006950: 3c2f 6469 763e 0a3c 2f62 6f64 793e 0a3c  </div>.</body>.<\n-00006960: 2f68 746d 6c3e 0a                        /html>.\n+000001c0: 7065 6e73 7562 6469 762f 7364 632f 7363  pensubdiv/sdc/sc\n+000001d0: 6865 6d65 2e68 2053 6f75 7263 6520 4669  heme.h Source Fi\n+000001e0: 6c65 3c2f 7469 746c 653e 0a3c 6c69 6e6b  le</title>.<link\n+000001f0: 2068 7265 663d 2274 6162 732e 6373 7322   href=\"tabs.css\"\n+00000200: 2072 656c 3d22 7374 796c 6573 6865 6574   rel=\"stylesheet\n+00000210: 2220 7479 7065 3d22 7465 7874 2f63 7373  \" type=\"text/css\n+00000220: 222f 3e0a 3c73 6372 6970 7420 7479 7065  \"/>.<script type\n+00000230: 3d22 7465 7874 2f6a 6176 6173 6372 6970  =\"text/javascrip\n+00000240: 7422 2073 7263 3d22 6a71 7565 7279 2e6a  t\" src=\"jquery.j\n+00000250: 7322 3e3c 2f73 6372 6970 743e 0a3c 7363  s\"></script>.<sc\n+00000260: 7269 7074 2074 7970 653d 2274 6578 742f  ript type=\"text/\n+00000270: 6a61 7661 7363 7269 7074 2220 7372 633d  javascript\" src=\n+00000280: 2264 796e 7365 6374 696f 6e73 2e6a 7322  \"dynsections.js\"\n+00000290: 3e3c 2f73 6372 6970 743e 0a3c 6c69 6e6b  ></script>.<link\n+000002a0: 2068 7265 663d 226e 6176 7472 6565 2e63   href=\"navtree.c\n+000002b0: 7373 2220 7265 6c3d 2273 7479 6c65 7368  ss\" rel=\"stylesh\n+000002c0: 6565 7422 2074 7970 653d 2274 6578 742f  eet\" type=\"text/\n+000002d0: 6373 7322 2f3e 0a3c 7363 7269 7074 2074  css\"/>.<script t\n+000002e0: 7970 653d 2274 6578 742f 6a61 7661 7363  ype=\"text/javasc\n+000002f0: 7269 7074 2220 7372 633d 2272 6573 697a  ript\" src=\"resiz\n+00000300: 652e 6a73 223e 3c2f 7363 7269 7074 3e0a  e.js\"></script>.\n+00000310: 3c73 6372 6970 7420 7479 7065 3d22 7465  <script type=\"te\n+00000320: 7874 2f6a 6176 6173 6372 6970 7422 2073  xt/javascript\" s\n+00000330: 7263 3d22 6e61 7674 7265 6564 6174 612e  rc=\"navtreedata.\n+00000340: 6a73 223e 3c2f 7363 7269 7074 3e0a 3c73  js\"></script>.<s\n+00000350: 6372 6970 7420 7479 7065 3d22 7465 7874  cript type=\"text\n+00000360: 2f6a 6176 6173 6372 6970 7422 2073 7263  /javascript\" src\n+00000370: 3d22 6e61 7674 7265 652e 6a73 223e 3c2f  =\"navtree.js\"></\n+00000380: 7363 7269 7074 3e0a 3c6c 696e 6b20 6872  script>.<link hr\n+00000390: 6566 3d22 7365 6172 6368 2f73 6561 7263  ef=\"search/searc\n+000003a0: 682e 6373 7322 2072 656c 3d22 7374 796c  h.css\" rel=\"styl\n+000003b0: 6573 6865 6574 2220 7479 7065 3d22 7465  esheet\" type=\"te\n+000003c0: 7874 2f63 7373 222f 3e0a 3c73 6372 6970  xt/css\"/>.<scrip\n+000003d0: 7420 7479 7065 3d22 7465 7874 2f6a 6176  t type=\"text/jav\n+000003e0: 6173 6372 6970 7422 2073 7263 3d22 7365  ascript\" src=\"se\n+000003f0: 6172 6368 2f73 6561 7263 6864 6174 612e  arch/searchdata.\n+00000400: 6a73 223e 3c2f 7363 7269 7074 3e0a 3c73  js\"></script>.<s\n+00000410: 6372 6970 7420 7479 7065 3d22 7465 7874  cript type=\"text\n+00000420: 2f6a 6176 6173 6372 6970 7422 2073 7263  /javascript\" src\n+00000430: 3d22 7365 6172 6368 2f73 6561 7263 682e  =\"search/search.\n+00000440: 6a73 223e 3c2f 7363 7269 7074 3e0a 3c6c  js\"></script>.<l\n+00000450: 696e 6b20 6872 6566 3d22 646f 7879 6765  ink href=\"doxyge\n+00000460: 6e2e 6373 7322 2072 656c 3d22 7374 796c  n.css\" rel=\"styl\n+00000470: 6573 6865 6574 2220 7479 7065 3d22 7465  esheet\" type=\"te\n+00000480: 7874 2f63 7373 2220 2f3e 0a3c 6c69 6e6b  xt/css\" />.<link\n+00000490: 2068 7265 663d 2264 6f78 792e 6373 7322   href=\"doxy.css\"\n+000004a0: 2072 656c 3d22 7374 796c 6573 6865 6574   rel=\"stylesheet\n+000004b0: 2220 7479 7065 3d22 7465 7874 2f63 7373  \" type=\"text/css\n+000004c0: 222f 3e0a 3c2f 6865 6164 3e0a 3c62 6f64  \"/>.</head>.<bod\n+000004d0: 793e 0a3c 6469 7620 6964 3d22 746f 7022  y>.<div id=\"top\"\n+000004e0: 3e3c 212d 2d20 646f 206e 6f74 2072 656d  ><!-- do not rem\n+000004f0: 6f76 6520 7468 6973 2064 6976 2c20 6974  ove this div, it\n+00000500: 2069 7320 636c 6f73 6564 2062 7920 646f   is closed by do\n+00000510: 7879 6765 6e21 202d 2d3e 0a3c 6469 7620  xygen! -->.<div \n+00000520: 6964 3d22 7469 746c 6561 7265 6122 3e0a  id=\"titlearea\">.\n+00000530: 3c74 6162 6c65 2063 656c 6c73 7061 6369  <table cellspaci\n+00000540: 6e67 3d22 3022 2063 656c 6c70 6164 6469  ng=\"0\" cellpaddi\n+00000550: 6e67 3d22 3022 3e0a 203c 7462 6f64 793e  ng=\"0\">. <tbody>\n+00000560: 0a20 3c74 7220 6964 3d22 7072 6f6a 6563  . <tr id=\"projec\n+00000570: 7472 6f77 223e 0a20 203c 7464 2069 643d  trow\">.  <td id=\n+00000580: 2270 726f 6a65 6374 6c6f 676f 223e 3c69  \"projectlogo\"><i\n+00000590: 6d67 2061 6c74 3d22 4c6f 676f 2220 7372  mg alt=\"Logo\" sr\n+000005a0: 633d 226f 7065 6e73 7562 6469 765f 6c6f  c=\"opensubdiv_lo\n+000005b0: 676f 5f68 6561 6465 722e 706e 6722 2f3e  go_header.png\"/>\n+000005c0: 3c2f 7464 3e0a 2020 3c74 6420 6964 3d22  </td>.  <td id=\"\n+000005d0: 7072 6f6a 6563 7461 6c69 676e 223e 0a20  projectalign\">. \n+000005e0: 2020 3c64 6976 2069 643d 2270 726f 6a65    <div id=\"proje\n+000005f0: 6374 6e61 6d65 223e 4f70 656e 5375 6264  ctname\">OpenSubd\n+00000600: 6976 0a20 2020 3c2f 6469 763e 0a20 203c  iv.   </div>.  <\n+00000610: 2f74 643e 0a20 3c2f 7472 3e0a 203c 2f74  /td>. </tr>. </t\n+00000620: 626f 6479 3e0a 3c2f 7461 626c 653e 0a3c  body>.</table>.<\n+00000630: 2f64 6976 3e0a 3c21 2d2d 2065 6e64 2068  /div>.<!-- end h\n+00000640: 6561 6465 7220 7061 7274 202d 2d3e 0a3c  eader part -->.<\n+00000650: 212d 2d20 4765 6e65 7261 7465 6420 6279  !-- Generated by\n+00000660: 2044 6f78 7967 656e 2031 2e39 2e38 202d   Doxygen 1.9.8 -\n+00000670: 2d3e 0a3c 7363 7269 7074 2074 7970 653d  ->.<script type=\n+00000680: 2274 6578 742f 6a61 7661 7363 7269 7074  \"text/javascript\n+00000690: 223e 0a2f 2a20 406c 6963 656e 7365 206d  \">./* @license m\n+000006a0: 6167 6e65 743a 3f78 743d 7572 6e3a 6274  agnet:?xt=urn:bt\n+000006b0: 6968 3a64 3364 3961 3961 3635 3935 3532  ih:d3d9a9a659552\n+000006c0: 3166 3936 3636 6135 6539 3463 6338 3330  1f9666a5e94cc830\n+000006d0: 6461 6238 3362 3635 3639 3926 616d 703b  dab83b65699&amp;\n+000006e0: 646e 3d65 7870 6174 2e74 7874 204d 4954  dn=expat.txt MIT\n+000006f0: 202a 2f0a 7661 7220 7365 6172 6368 426f   */.var searchBo\n+00000700: 7820 3d20 6e65 7720 5365 6172 6368 426f  x = new SearchBo\n+00000710: 7828 2273 6561 7263 6842 6f78 222c 2022  x(\"searchBox\", \"\n+00000720: 7365 6172 6368 2f22 2c27 2e68 746d 6c27  search/\",'.html'\n+00000730: 293b 0a2f 2a20 406c 6963 656e 7365 2d65  );./* @license-e\n+00000740: 6e64 202a 2f0a 3c2f 7363 7269 7074 3e0a  nd */.</script>.\n+00000750: 3c73 6372 6970 7420 7479 7065 3d22 7465  <script type=\"te\n+00000760: 7874 2f6a 6176 6173 6372 6970 7422 2073  xt/javascript\" s\n+00000770: 7263 3d22 6d65 6e75 6461 7461 2e6a 7322  rc=\"menudata.js\"\n+00000780: 3e3c 2f73 6372 6970 743e 0a3c 7363 7269  ></script>.<scri\n+00000790: 7074 2074 7970 653d 2274 6578 742f 6a61  pt type=\"text/ja\n+000007a0: 7661 7363 7269 7074 2220 7372 633d 226d  vascript\" src=\"m\n+000007b0: 656e 752e 6a73 223e 3c2f 7363 7269 7074  enu.js\"></script\n+000007c0: 3e0a 3c73 6372 6970 7420 7479 7065 3d22  >.<script type=\"\n+000007d0: 7465 7874 2f6a 6176 6173 6372 6970 7422  text/javascript\"\n+000007e0: 3e0a 2f2a 2040 6c69 6365 6e73 6520 6d61  >./* @license ma\n+000007f0: 676e 6574 3a3f 7874 3d75 726e 3a62 7469  gnet:?xt=urn:bti\n+00000800: 683a 6433 6439 6139 6136 3539 3535 3231  h:d3d9a9a6595521\n+00000810: 6639 3636 3661 3565 3934 6363 3833 3064  f9666a5e94cc830d\n+00000820: 6162 3833 6236 3536 3939 2661 6d70 3b64  ab83b65699&amp;d\n+00000830: 6e3d 6578 7061 742e 7478 7420 4d49 5420  n=expat.txt MIT \n+00000840: 2a2f 0a24 2866 756e 6374 696f 6e28 2920  */.$(function() \n+00000850: 7b0a 2020 696e 6974 4d65 6e75 2827 272c  {.  initMenu('',\n+00000860: 7472 7565 2c66 616c 7365 2c27 7365 6172  true,false,'sear\n+00000870: 6368 2e70 6870 272c 2753 6561 7263 6827  ch.php','Search'\n+00000880: 293b 0a20 2024 2864 6f63 756d 656e 7429  );.  $(document)\n+00000890: 2e72 6561 6479 2866 756e 6374 696f 6e28  .ready(function(\n+000008a0: 2920 7b20 696e 6974 5f73 6561 7263 6828  ) { init_search(\n+000008b0: 293b 207d 293b 0a7d 293b 0a2f 2a20 406c  ); });.});./* @l\n+000008c0: 6963 656e 7365 2d65 6e64 202a 2f0a 3c2f  icense-end */.</\n+000008d0: 7363 7269 7074 3e0a 3c64 6976 2069 643d  script>.<div id=\n+000008e0: 226d 6169 6e2d 6e61 7622 3e3c 2f64 6976  \"main-nav\"></div\n+000008f0: 3e0a 3c73 6372 6970 7420 7479 7065 3d22  >.<script type=\"\n+00000900: 7465 7874 2f6a 6176 6173 6372 6970 7422  text/javascript\"\n+00000910: 3e0a 2f2a 2040 6c69 6365 6e73 6520 6d61  >./* @license ma\n+00000920: 676e 6574 3a3f 7874 3d75 726e 3a62 7469  gnet:?xt=urn:bti\n+00000930: 683a 6433 6439 6139 6136 3539 3535 3231  h:d3d9a9a6595521\n+00000940: 6639 3636 3661 3565 3934 6363 3833 3064  f9666a5e94cc830d\n+00000950: 6162 3833 6236 3536 3939 2661 6d70 3b64  ab83b65699&amp;d\n+00000960: 6e3d 6578 7061 742e 7478 7420 4d49 5420  n=expat.txt MIT \n+00000970: 2a2f 0a24 2864 6f63 756d 656e 7429 2e72  */.$(document).r\n+00000980: 6561 6479 2866 756e 6374 696f 6e28 2920  eady(function() \n+00000990: 7b20 696e 6974 5f63 6f64 6566 6f6c 6428  { init_codefold(\n+000009a0: 3029 3b20 7d29 3b0a 2f2a 2040 6c69 6365  0); });./* @lice\n+000009b0: 6e73 652d 656e 6420 2a2f 0a3c 2f73 6372  nse-end */.</scr\n+000009c0: 6970 743e 0a3c 2f64 6976 3e3c 212d 2d20  ipt>.</div><!-- \n+000009d0: 746f 7020 2d2d 3e0a 3c64 6976 2069 643d  top -->.<div id=\n+000009e0: 2273 6964 652d 6e61 7622 2063 6c61 7373  \"side-nav\" class\n+000009f0: 3d22 7569 2d72 6573 697a 6162 6c65 2073  =\"ui-resizable s\n+00000a00: 6964 652d 6e61 762d 7265 7369 7a61 626c  ide-nav-resizabl\n+00000a10: 6522 3e0a 2020 3c64 6976 2069 643d 226e  e\">.  <div id=\"n\n+00000a20: 6176 2d74 7265 6522 3e0a 2020 2020 3c64  av-tree\">.    <d\n+00000a30: 6976 2069 643d 226e 6176 2d74 7265 652d  iv id=\"nav-tree-\n+00000a40: 636f 6e74 656e 7473 223e 0a20 2020 2020  contents\">.     \n+00000a50: 203c 6469 7620 6964 3d22 6e61 762d 7379   <div id=\"nav-sy\n+00000a60: 6e63 2220 636c 6173 733d 2273 796e 6322  nc\" class=\"sync\"\n+00000a70: 3e3c 2f64 6976 3e0a 2020 2020 3c2f 6469  ></div>.    </di\n+00000a80: 763e 0a20 203c 2f64 6976 3e0a 2020 3c64  v>.  </div>.  <d\n+00000a90: 6976 2069 643d 2273 706c 6974 6261 7222  iv id=\"splitbar\"\n+00000aa0: 2073 7479 6c65 3d22 2d6d 6f7a 2d75 7365   style=\"-moz-use\n+00000ab0: 722d 7365 6c65 6374 3a6e 6f6e 653b 2220  r-select:none;\" \n+00000ac0: 0a20 2020 2020 2020 636c 6173 733d 2275  .       class=\"u\n+00000ad0: 692d 7265 7369 7a61 626c 652d 6861 6e64  i-resizable-hand\n+00000ae0: 6c65 223e 0a20 203c 2f64 6976 3e0a 3c2f  le\">.  </div>.</\n+00000af0: 6469 763e 0a3c 7363 7269 7074 2074 7970  div>.<script typ\n+00000b00: 653d 2274 6578 742f 6a61 7661 7363 7269  e=\"text/javascri\n+00000b10: 7074 223e 0a2f 2a20 406c 6963 656e 7365  pt\">./* @license\n+00000b20: 206d 6167 6e65 743a 3f78 743d 7572 6e3a   magnet:?xt=urn:\n+00000b30: 6274 6968 3a64 3364 3961 3961 3635 3935  btih:d3d9a9a6595\n+00000b40: 3532 3166 3936 3636 6135 6539 3463 6338  521f9666a5e94cc8\n+00000b50: 3330 6461 6238 3362 3635 3639 3926 616d  30dab83b65699&am\n+00000b60: 703b 646e 3d65 7870 6174 2e74 7874 204d  p;dn=expat.txt M\n+00000b70: 4954 202a 2f0a 2428 646f 6375 6d65 6e74  IT */.$(document\n+00000b80: 292e 7265 6164 7928 6675 6e63 7469 6f6e  ).ready(function\n+00000b90: 2829 7b69 6e69 744e 6176 5472 6565 2827  (){initNavTree('\n+00000ba0: 6130 3038 3633 5f73 6f75 7263 652e 6874  a00863_source.ht\n+00000bb0: 6d6c 272c 2727 293b 2069 6e69 7452 6573  ml',''); initRes\n+00000bc0: 697a 6162 6c65 2829 3b20 7d29 3b0a 2f2a  izable(); });./*\n+00000bd0: 2040 6c69 6365 6e73 652d 656e 6420 2a2f   @license-end */\n+00000be0: 0a3c 2f73 6372 6970 743e 0a3c 6469 7620  .</script>.<div \n+00000bf0: 6964 3d22 646f 632d 636f 6e74 656e 7422  id=\"doc-content\"\n+00000c00: 3e0a 3c21 2d2d 2077 696e 646f 7720 7368  >.<!-- window sh\n+00000c10: 6f77 696e 6720 7468 6520 6669 6c74 6572  owing the filter\n+00000c20: 206f 7074 696f 6e73 202d 2d3e 0a3c 6469   options -->.<di\n+00000c30: 7620 6964 3d22 4d53 6561 7263 6853 656c  v id=\"MSearchSel\n+00000c40: 6563 7457 696e 646f 7722 0a20 2020 2020  ectWindow\".     \n+00000c50: 6f6e 6d6f 7573 656f 7665 723d 2272 6574  onmouseover=\"ret\n+00000c60: 7572 6e20 7365 6172 6368 426f 782e 4f6e  urn searchBox.On\n+00000c70: 5365 6172 6368 5365 6c65 6374 5368 6f77  SearchSelectShow\n+00000c80: 2829 220a 2020 2020 206f 6e6d 6f75 7365  ()\".     onmouse\n+00000c90: 6f75 743d 2272 6574 7572 6e20 7365 6172  out=\"return sear\n+00000ca0: 6368 426f 782e 4f6e 5365 6172 6368 5365  chBox.OnSearchSe\n+00000cb0: 6c65 6374 4869 6465 2829 220a 2020 2020  lectHide()\".    \n+00000cc0: 206f 6e6b 6579 646f 776e 3d22 7265 7475   onkeydown=\"retu\n+00000cd0: 726e 2073 6561 7263 6842 6f78 2e4f 6e53  rn searchBox.OnS\n+00000ce0: 6561 7263 6853 656c 6563 744b 6579 2865  earchSelectKey(e\n+00000cf0: 7665 6e74 2922 3e0a 3c2f 6469 763e 0a0a  vent)\">.</div>..\n+00000d00: 3c21 2d2d 2069 6672 616d 6520 7368 6f77  <!-- iframe show\n+00000d10: 696e 6720 7468 6520 7365 6172 6368 2072  ing the search r\n+00000d20: 6573 756c 7473 2028 636c 6f73 6564 2062  esults (closed b\n+00000d30: 7920 6465 6661 756c 7429 202d 2d3e 0a3c  y default) -->.<\n+00000d40: 6469 7620 6964 3d22 4d53 6561 7263 6852  div id=\"MSearchR\n+00000d50: 6573 756c 7473 5769 6e64 6f77 223e 0a3c  esultsWindow\">.<\n+00000d60: 6469 7620 6964 3d22 4d53 6561 7263 6852  div id=\"MSearchR\n+00000d70: 6573 756c 7473 223e 0a3c 6469 7620 636c  esults\">.<div cl\n+00000d80: 6173 733d 2253 5250 6167 6522 3e0a 3c64  ass=\"SRPage\">.<d\n+00000d90: 6976 2069 643d 2253 5249 6e64 6578 223e  iv id=\"SRIndex\">\n+00000da0: 0a3c 6469 7620 6964 3d22 5352 5265 7375  .<div id=\"SRResu\n+00000db0: 6c74 7322 3e3c 2f64 6976 3e0a 3c64 6976  lts\"></div>.<div\n+00000dc0: 2063 6c61 7373 3d22 5352 5374 6174 7573   class=\"SRStatus\n+00000dd0: 2220 6964 3d22 4c6f 6164 696e 6722 3e4c  \" id=\"Loading\">L\n+00000de0: 6f61 6469 6e67 2e2e 2e3c 2f64 6976 3e0a  oading...</div>.\n+00000df0: 3c64 6976 2063 6c61 7373 3d22 5352 5374  <div class=\"SRSt\n+00000e00: 6174 7573 2220 6964 3d22 5365 6172 6368  atus\" id=\"Search\n+00000e10: 696e 6722 3e53 6561 7263 6869 6e67 2e2e  ing\">Searching..\n+00000e20: 2e3c 2f64 6976 3e0a 3c64 6976 2063 6c61  .</div>.<div cla\n+00000e30: 7373 3d22 5352 5374 6174 7573 2220 6964  ss=\"SRStatus\" id\n+00000e40: 3d22 4e6f 4d61 7463 6865 7322 3e4e 6f20  =\"NoMatches\">No \n+00000e50: 4d61 7463 6865 733c 2f64 6976 3e0a 3c2f  Matches</div>.</\n+00000e60: 6469 763e 0a3c 2f64 6976 3e0a 3c2f 6469  div>.</div>.</di\n+00000e70: 763e 0a3c 2f64 6976 3e0a 0a3c 6469 7620  v>.</div>..<div \n+00000e80: 636c 6173 733d 2268 6561 6465 7222 3e0a  class=\"header\">.\n+00000e90: 2020 3c64 6976 2063 6c61 7373 3d22 6865    <div class=\"he\n+00000ea0: 6164 6572 7469 746c 6522 3e3c 6469 7620  adertitle\"><div \n+00000eb0: 636c 6173 733d 2274 6974 6c65 223e 7363  class=\"title\">sc\n+00000ec0: 6865 6d65 2e68 3c2f 6469 763e 3c2f 6469  heme.h</div></di\n+00000ed0: 763e 0a3c 2f64 6976 3e3c 212d 2d68 6561  v>.</div><!--hea\n+00000ee0: 6465 722d 2d3e 0a3c 6469 7620 636c 6173  der-->.<div clas\n+00000ef0: 733d 2263 6f6e 7465 6e74 7322 3e0a 3c61  s=\"contents\">.<a\n+00000f00: 2068 7265 663d 2261 3030 3836 332e 6874   href=\"a00863.ht\n+00000f10: 6d6c 223e 476f 2074 6f20 7468 6520 646f  ml\">Go to the do\n+00000f20: 6375 6d65 6e74 6174 696f 6e20 6f66 2074  cumentation of t\n+00000f30: 6869 7320 6669 6c65 2e3c 2f61 3e3c 6469  his file.</a><di\n+00000f40: 7620 636c 6173 733d 2266 7261 676d 656e  v class=\"fragmen\n+00000f50: 7422 3e3c 6469 7620 636c 6173 733d 226c  t\"><div class=\"l\n+00000f60: 696e 6522 3e3c 6120 6964 3d22 6c30 3030  ine\"><a id=\"l000\n+00000f70: 3031 2220 6e61 6d65 3d22 6c30 3030 3031  01\" name=\"l00001\n+00000f80: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n+00000f90: 733d 226c 696e 656e 6f22 3e20 2020 2031  s=\"lineno\">    1\n+00000fa0: 3c2f 7370 616e 3e3c 7370 616e 2063 6c61  </span><span cla\n+00000fb0: 7373 3d22 636f 6d6d 656e 7422 3e2f 2f3c  ss=\"comment\">//<\n+00000fc0: 2f73 7061 6e3e 3c2f 6469 763e 0a3c 6469  /span></div>.<di\n+00000fd0: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n+00000fe0: 6120 6964 3d22 6c30 3030 3032 2220 6e61  a id=\"l00002\" na\n+00000ff0: 6d65 3d22 6c30 3030 3032 223e 3c2f 613e  me=\"l00002\"></a>\n+00001000: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n+00001010: 656e 6f22 3e20 2020 2032 3c2f 7370 616e  eno\">    2</span\n+00001020: 3e3c 7370 616e 2063 6c61 7373 3d22 636f  ><span class=\"co\n+00001030: 6d6d 656e 7422 3e2f 2f20 2020 436f 7079  mment\">//   Copy\n+00001040: 7269 6768 7420 3230 3134 2044 7265 616d  right 2014 Dream\n+00001050: 576f 726b 7320 416e 696d 6174 696f 6e20  Works Animation \n+00001060: 4c4c 432e 3c2f 7370 616e 3e3c 2f64 6976  LLC.</span></div\n+00001070: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n+00001080: 6e65 223e 3c61 2069 643d 226c 3030 3030  ne\"><a id=\"l0000\n+00001090: 3322 206e 616d 653d 226c 3030 3030 3322  3\" name=\"l00003\"\n+000010a0: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n+000010b0: 3d22 6c69 6e65 6e6f 223e 2020 2020 333c  =\"lineno\">    3<\n+000010c0: 2f73 7061 6e3e 3c73 7061 6e20 636c 6173  /span><span clas\n+000010d0: 733d 2263 6f6d 6d65 6e74 223e 2f2f 3c2f  s=\"comment\">//</\n+000010e0: 7370 616e 3e3c 2f64 6976 3e0a 3c64 6976  span></div>.<div\n+000010f0: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n+00001100: 2069 643d 226c 3030 3030 3422 206e 616d   id=\"l00004\" nam\n+00001110: 653d 226c 3030 3030 3422 3e3c 2f61 3e3c  e=\"l00004\"></a><\n+00001120: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n+00001130: 6e6f 223e 2020 2020 343c 2f73 7061 6e3e  no\">    4</span>\n+00001140: 3c73 7061 6e20 636c 6173 733d 2263 6f6d  <span class=\"com\n+00001150: 6d65 6e74 223e 2f2f 2020 204c 6963 656e  ment\">//   Licen\n+00001160: 7365 6420 756e 6465 7220 7468 6520 4170  sed under the Ap\n+00001170: 6163 6865 204c 6963 656e 7365 2c20 5665  ache License, Ve\n+00001180: 7273 696f 6e20 322e 3020 2874 6865 2026  rsion 2.0 (the &\n+00001190: 7175 6f74 3b41 7061 6368 6520 4c69 6365  quot;Apache Lice\n+000011a0: 6e73 6526 7175 6f74 3b29 3c2f 7370 616e  nse&quot;)</span\n+000011b0: 3e3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ></div>.<div cla\n+000011c0: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n+000011d0: 226c 3030 3030 3522 206e 616d 653d 226c  \"l00005\" name=\"l\n+000011e0: 3030 3030 3522 3e3c 2f61 3e3c 7370 616e  00005\"></a><span\n+000011f0: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n+00001200: 2020 2020 353c 2f73 7061 6e3e 3c73 7061      5</span><spa\n+00001210: 6e20 636c 6173 733d 2263 6f6d 6d65 6e74  n class=\"comment\n+00001220: 223e 2f2f 2020 2077 6974 6820 7468 6520  \">//   with the \n+00001230: 666f 6c6c 6f77 696e 6720 6d6f 6469 6669  following modifi\n+00001240: 6361 7469 6f6e 3b20 796f 7520 6d61 7920  cation; you may \n+00001250: 6e6f 7420 7573 6520 7468 6973 2066 696c  not use this fil\n+00001260: 6520 6578 6365 7074 2069 6e3c 2f73 7061  e except in</spa\n+00001270: 6e3e 3c2f 6469 763e 0a3c 6469 7620 636c  n></div>.<div cl\n+00001280: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n+00001290: 3d22 6c30 3030 3036 2220 6e61 6d65 3d22  =\"l00006\" name=\"\n+000012a0: 6c30 3030 3036 223e 3c2f 613e 3c73 7061  l00006\"></a><spa\n+000012b0: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n+000012c0: 3e20 2020 2036 3c2f 7370 616e 3e3c 7370  >    6</span><sp\n+000012d0: 616e 2063 6c61 7373 3d22 636f 6d6d 656e  an class=\"commen\n+000012e0: 7422 3e2f 2f20 2020 636f 6d70 6c69 616e  t\">//   complian\n+000012f0: 6365 2077 6974 6820 7468 6520 4170 6163  ce with the Apac\n+00001300: 6865 204c 6963 656e 7365 2061 6e64 2074  he License and t\n+00001310: 6865 2066 6f6c 6c6f 7769 6e67 206d 6f64  he following mod\n+00001320: 6966 6963 6174 696f 6e20 746f 2069 743a  ification to it:\n+00001330: 3c2f 7370 616e 3e3c 2f64 6976 3e0a 3c64  </span></div>.<d\n+00001340: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n+00001350: 3c61 2069 643d 226c 3030 3030 3722 206e  <a id=\"l00007\" n\n+00001360: 616d 653d 226c 3030 3030 3722 3e3c 2f61  ame=\"l00007\"></a\n+00001370: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n+00001380: 6e65 6e6f 223e 2020 2020 373c 2f73 7061  neno\">    7</spa\n+00001390: 6e3e 3c73 7061 6e20 636c 6173 733d 2263  n><span class=\"c\n+000013a0: 6f6d 6d65 6e74 223e 2f2f 2020 2053 6563  omment\">//   Sec\n+000013b0: 7469 6f6e 2036 2e20 5472 6164 656d 6172  tion 6. Trademar\n+000013c0: 6b73 2e20 6973 2064 656c 6574 6564 2061  ks. is deleted a\n+000013d0: 6e64 2072 6570 6c61 6365 6420 7769 7468  nd replaced with\n+000013e0: 3a3c 2f73 7061 6e3e 3c2f 6469 763e 0a3c  :</span></div>.<\n+000013f0: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n+00001400: 3e3c 6120 6964 3d22 6c30 3030 3038 2220  ><a id=\"l00008\" \n+00001410: 6e61 6d65 3d22 6c30 3030 3038 223e 3c2f  name=\"l00008\"></\n+00001420: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n+00001430: 696e 656e 6f22 3e20 2020 2038 3c2f 7370  ineno\">    8</sp\n+00001440: 616e 3e3c 7370 616e 2063 6c61 7373 3d22  an><span class=\"\n+00001450: 636f 6d6d 656e 7422 3e2f 2f3c 2f73 7061  comment\">//</spa\n+00001460: 6e3e 3c2f 6469 763e 0a3c 6469 7620 636c  n></div>.<div cl\n+00001470: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n+00001480: 3d22 6c30 3030 3039 2220 6e61 6d65 3d22  =\"l00009\" name=\"\n+00001490: 6c30 3030 3039 223e 3c2f 613e 3c73 7061  l00009\"></a><spa\n+000014a0: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n+000014b0: 3e20 2020 2039 3c2f 7370 616e 3e3c 7370  >    9</span><sp\n+000014c0: 616e 2063 6c61 7373 3d22 636f 6d6d 656e  an class=\"commen\n+000014d0: 7422 3e2f 2f20 2020 362e 2054 7261 6465  t\">//   6. Trade\n+000014e0: 6d61 726b 732e 2054 6869 7320 4c69 6365  marks. This Lice\n+000014f0: 6e73 6520 646f 6573 206e 6f74 2067 7261  nse does not gra\n+00001500: 6e74 2070 6572 6d69 7373 696f 6e20 746f  nt permission to\n+00001510: 2075 7365 2074 6865 2074 7261 6465 3c2f   use the trade</\n+00001520: 7370 616e 3e3c 2f64 6976 3e0a 3c64 6976  span></div>.<div\n+00001530: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n+00001540: 2069 643d 226c 3030 3031 3022 206e 616d   id=\"l00010\" nam\n+00001550: 653d 226c 3030 3031 3022 3e3c 2f61 3e3c  e=\"l00010\"></a><\n+00001560: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n+00001570: 6e6f 223e 2020 2031 303c 2f73 7061 6e3e  no\">   10</span>\n+00001580: 3c73 7061 6e20 636c 6173 733d 2263 6f6d  <span class=\"com\n+00001590: 6d65 6e74 223e 2f2f 2020 2020 2020 6e61  ment\">//      na\n+000015a0: 6d65 732c 2074 7261 6465 6d61 726b 732c  mes, trademarks,\n+000015b0: 2073 6572 7669 6365 206d 6172 6b73 2c20   service marks, \n+000015c0: 6f72 2070 726f 6475 6374 206e 616d 6573  or product names\n+000015d0: 206f 6620 7468 6520 4c69 6365 6e73 6f72   of the Licensor\n+000015e0: 3c2f 7370 616e 3e3c 2f64 6976 3e0a 3c64  </span></div>.<d\n+000015f0: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n+00001600: 3c61 2069 643d 226c 3030 3031 3122 206e  <a id=\"l00011\" n\n+00001610: 616d 653d 226c 3030 3031 3122 3e3c 2f61  ame=\"l00011\"></a\n+00001620: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n+00001630: 6e65 6e6f 223e 2020 2031 313c 2f73 7061  neno\">   11</spa\n+00001640: 6e3e 3c73 7061 6e20 636c 6173 733d 2263  n><span class=\"c\n+00001650: 6f6d 6d65 6e74 223e 2f2f 2020 2020 2020  omment\">//      \n+00001660: 616e 6420 6974 7320 6166 6669 6c69 6174  and its affiliat\n+00001670: 6573 2c20 6578 6365 7074 2061 7320 7265  es, except as re\n+00001680: 7175 6972 6564 2074 6f20 636f 6d70 6c79  quired to comply\n+00001690: 2077 6974 6820 5365 6374 696f 6e20 3428   with Section 4(\n+000016a0: 6329 206f 663c 2f73 7061 6e3e 3c2f 6469  c) of</span></di\n+000016b0: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n+000016c0: 696e 6522 3e3c 6120 6964 3d22 6c30 3030  ine\"><a id=\"l000\n+000016d0: 3132 2220 6e61 6d65 3d22 6c30 3030 3132  12\" name=\"l00012\n+000016e0: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n+000016f0: 733d 226c 696e 656e 6f22 3e20 2020 3132  s=\"lineno\">   12\n+00001700: 3c2f 7370 616e 3e3c 7370 616e 2063 6c61  </span><span cla\n+00001710: 7373 3d22 636f 6d6d 656e 7422 3e2f 2f20  ss=\"comment\">// \n+00001720: 2020 2020 2074 6865 204c 6963 656e 7365       the License\n+00001730: 2061 6e64 2074 6f20 7265 7072 6f64 7563   and to reproduc\n+00001740: 6520 7468 6520 636f 6e74 656e 7420 6f66  e the content of\n+00001750: 2074 6865 204e 4f54 4943 4520 6669 6c65   the NOTICE file\n+00001760: 2e3c 2f73 7061 6e3e 3c2f 6469 763e 0a3c  .</span></div>.<\n+00001770: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n+00001780: 3e3c 6120 6964 3d22 6c30 3030 3133 2220  ><a id=\"l00013\" \n+00001790: 6e61 6d65 3d22 6c30 3030 3133 223e 3c2f  name=\"l00013\"></\n+000017a0: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n+000017b0: 696e 656e 6f22 3e20 2020 3133 3c2f 7370  ineno\">   13</sp\n+000017c0: 616e 3e3c 7370 616e 2063 6c61 7373 3d22  an><span class=\"\n+000017d0: 636f 6d6d 656e 7422 3e2f 2f3c 2f73 7061  comment\">//</spa\n+000017e0: 6e3e 3c2f 6469 763e 0a3c 6469 7620 636c  n></div>.<div cl\n+000017f0: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n+00001800: 3d22 6c30 3030 3134 2220 6e61 6d65 3d22  =\"l00014\" name=\"\n+00001810: 6c30 3030 3134 223e 3c2f 613e 3c73 7061  l00014\"></a><spa\n+00001820: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n+00001830: 3e20 2020 3134 3c2f 7370 616e 3e3c 7370  >   14</span><sp\n+00001840: 616e 2063 6c61 7373 3d22 636f 6d6d 656e  an class=\"commen\n+00001850: 7422 3e2f 2f20 2020 596f 7520 6d61 7920  t\">//   You may \n+00001860: 6f62 7461 696e 2061 2063 6f70 7920 6f66  obtain a copy of\n+00001870: 2074 6865 2041 7061 6368 6520 4c69 6365   the Apache Lice\n+00001880: 6e73 6520 6174 3c2f 7370 616e 3e3c 2f64  nse at</span></d\n+00001890: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n+000018a0: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n+000018b0: 3031 3522 206e 616d 653d 226c 3030 3031  015\" name=\"l0001\n+000018c0: 3522 3e3c 2f61 3e3c 7370 616e 2063 6c61  5\"></a><span cla\n+000018d0: 7373 3d22 6c69 6e65 6e6f 223e 2020 2031  ss=\"lineno\">   1\n+000018e0: 353c 2f73 7061 6e3e 3c73 7061 6e20 636c  5</span><span cl\n+000018f0: 6173 733d 2263 6f6d 6d65 6e74 223e 2f2f  ass=\"comment\">//\n+00001900: 3c2f 7370 616e 3e3c 2f64 6976 3e0a 3c64  </span></div>.<d\n+00001910: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n+00001920: 3c61 2069 643d 226c 3030 3031 3622 206e  <a id=\"l00016\" n\n+00001930: 616d 653d 226c 3030 3031 3622 3e3c 2f61  ame=\"l00016\"></a\n+00001940: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n+00001950: 6e65 6e6f 223e 2020 2031 363c 2f73 7061  neno\">   16</spa\n+00001960: 6e3e 3c73 7061 6e20 636c 6173 733d 2263  n><span class=\"c\n+00001970: 6f6d 6d65 6e74 223e 2f2f 2020 2020 2020  omment\">//      \n+00001980: 2068 7474 703a 2f2f 7777 772e 6170 6163   http://www.apac\n+00001990: 6865 2e6f 7267 2f6c 6963 656e 7365 732f  he.org/licenses/\n+000019a0: 4c49 4345 4e53 452d 322e 303c 2f73 7061  LICENSE-2.0</spa\n+000019b0: 6e3e 3c2f 6469 763e 0a3c 6469 7620 636c  n></div>.<div cl\n+000019c0: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n+000019d0: 3d22 6c30 3030 3137 2220 6e61 6d65 3d22  =\"l00017\" name=\"\n+000019e0: 6c30 3030 3137 223e 3c2f 613e 3c73 7061  l00017\"></a><spa\n+000019f0: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n+00001a00: 3e20 2020 3137 3c2f 7370 616e 3e3c 7370  >   17</span><sp\n+00001a10: 616e 2063 6c61 7373 3d22 636f 6d6d 656e  an class=\"commen\n+00001a20: 7422 3e2f 2f3c 2f73 7061 6e3e 3c2f 6469  t\">//</span></di\n+00001a30: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n+00001a40: 696e 6522 3e3c 6120 6964 3d22 6c30 3030  ine\"><a id=\"l000\n+00001a50: 3138 2220 6e61 6d65 3d22 6c30 3030 3138  18\" name=\"l00018\n+00001a60: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n+00001a70: 733d 226c 696e 656e 6f22 3e20 2020 3138  s=\"lineno\">   18\n+00001a80: 3c2f 7370 616e 3e3c 7370 616e 2063 6c61  </span><span cla\n+00001a90: 7373 3d22 636f 6d6d 656e 7422 3e2f 2f20  ss=\"comment\">// \n+00001aa0: 2020 556e 6c65 7373 2072 6571 7569 7265    Unless require\n+00001ab0: 6420 6279 2061 7070 6c69 6361 626c 6520  d by applicable \n+00001ac0: 6c61 7720 6f72 2061 6772 6565 6420 746f  law or agreed to\n+00001ad0: 2069 6e20 7772 6974 696e 672c 2073 6f66   in writing, sof\n+00001ae0: 7477 6172 653c 2f73 7061 6e3e 3c2f 6469  tware</span></di\n+00001af0: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n+00001b00: 696e 6522 3e3c 6120 6964 3d22 6c30 3030  ine\"><a id=\"l000\n+00001b10: 3139 2220 6e61 6d65 3d22 6c30 3030 3139  19\" name=\"l00019\n+00001b20: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n+00001b30: 733d 226c 696e 656e 6f22 3e20 2020 3139  s=\"lineno\">   19\n+00001b40: 3c2f 7370 616e 3e3c 7370 616e 2063 6c61  </span><span cla\n+00001b50: 7373 3d22 636f 6d6d 656e 7422 3e2f 2f20  ss=\"comment\">// \n+00001b60: 2020 6469 7374 7269 6275 7465 6420 756e    distributed un\n+00001b70: 6465 7220 7468 6520 4170 6163 6865 204c  der the Apache L\n+00001b80: 6963 656e 7365 2077 6974 6820 7468 6520  icense with the \n+00001b90: 6162 6f76 6520 6d6f 6469 6669 6361 7469  above modificati\n+00001ba0: 6f6e 2069 733c 2f73 7061 6e3e 3c2f 6469  on is</span></di\n+00001bb0: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n+00001bc0: 696e 6522 3e3c 6120 6964 3d22 6c30 3030  ine\"><a id=\"l000\n+00001bd0: 3230 2220 6e61 6d65 3d22 6c30 3030 3230  20\" name=\"l00020\n+00001be0: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n+00001bf0: 733d 226c 696e 656e 6f22 3e20 2020 3230  s=\"lineno\">   20\n+00001c00: 3c2f 7370 616e 3e3c 7370 616e 2063 6c61  </span><span cla\n+00001c10: 7373 3d22 636f 6d6d 656e 7422 3e2f 2f20  ss=\"comment\">// \n+00001c20: 2020 6469 7374 7269 6275 7465 6420 6f6e    distributed on\n+00001c30: 2061 6e20 2671 756f 743b 4153 2049 5326   an &quot;AS IS&\n+00001c40: 7175 6f74 3b20 4241 5349 532c 2057 4954  quot; BASIS, WIT\n+00001c50: 484f 5554 2057 4152 5241 4e54 4945 5320  HOUT WARRANTIES \n+00001c60: 4f52 2043 4f4e 4449 5449 4f4e 5320 4f46  OR CONDITIONS OF\n+00001c70: 2041 4e59 3c2f 7370 616e 3e3c 2f64 6976   ANY</span></div\n+00001c80: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n+00001c90: 6e65 223e 3c61 2069 643d 226c 3030 3032  ne\"><a id=\"l0002\n+00001ca0: 3122 206e 616d 653d 226c 3030 3032 3122  1\" name=\"l00021\"\n+00001cb0: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n+00001cc0: 3d22 6c69 6e65 6e6f 223e 2020 2032 313c  =\"lineno\">   21<\n+00001cd0: 2f73 7061 6e3e 3c73 7061 6e20 636c 6173  /span><span clas\n+00001ce0: 733d 2263 6f6d 6d65 6e74 223e 2f2f 2020  s=\"comment\">//  \n+00001cf0: 204b 494e 442c 2065 6974 6865 7220 6578   KIND, either ex\n+00001d00: 7072 6573 7320 6f72 2069 6d70 6c69 6564  press or implied\n+00001d10: 2e20 5365 6520 7468 6520 4170 6163 6865  . See the Apache\n+00001d20: 204c 6963 656e 7365 2066 6f72 2074 6865   License for the\n+00001d30: 2073 7065 6369 6669 633c 2f73 7061 6e3e   specific</span>\n+00001d40: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n+00001d50: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n+00001d60: 6c30 3030 3232 2220 6e61 6d65 3d22 6c30  l00022\" name=\"l0\n+00001d70: 3030 3232 223e 3c2f 613e 3c73 7061 6e20  0022\"></a><span \n+00001d80: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n+00001d90: 2020 3232 3c2f 7370 616e 3e3c 7370 616e    22</span><span\n+00001da0: 2063 6c61 7373 3d22 636f 6d6d 656e 7422   class=\"comment\"\n+00001db0: 3e2f 2f20 2020 6c61 6e67 7561 6765 2067  >//   language g\n+00001dc0: 6f76 6572 6e69 6e67 2070 6572 6d69 7373  overning permiss\n+00001dd0: 696f 6e73 2061 6e64 206c 696d 6974 6174  ions and limitat\n+00001de0: 696f 6e73 2075 6e64 6572 2074 6865 2041  ions under the A\n+00001df0: 7061 6368 6520 4c69 6365 6e73 652e 3c2f  pache License.</\n+00001e00: 7370 616e 3e3c 2f64 6976 3e0a 3c64 6976  span></div>.<div\n+00001e10: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n+00001e20: 2069 643d 226c 3030 3032 3322 206e 616d   id=\"l00023\" nam\n+00001e30: 653d 226c 3030 3032 3322 3e3c 2f61 3e3c  e=\"l00023\"></a><\n+00001e40: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n+00001e50: 6e6f 223e 2020 2032 333c 2f73 7061 6e3e  no\">   23</span>\n+00001e60: 3c73 7061 6e20 636c 6173 733d 2263 6f6d  <span class=\"com\n+00001e70: 6d65 6e74 223e 2f2f 3c2f 7370 616e 3e3c  ment\">//</span><\n+00001e80: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n+00001e90: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n+00001ea0: 3030 3032 3422 206e 616d 653d 226c 3030  00024\" name=\"l00\n+00001eb0: 3032 3422 3e3c 2f61 3e3c 7370 616e 2063  024\"></a><span c\n+00001ec0: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n+00001ed0: 2032 343c 2f73 7061 6e3e 3c73 7061 6e20   24</span><span \n+00001ee0: 636c 6173 733d 2270 7265 7072 6f63 6573  class=\"preproces\n+00001ef0: 736f 7222 3e23 6966 6e64 6566 204f 5045  sor\">#ifndef OPE\n+00001f00: 4e53 5542 4449 5633 5f53 4443 5f53 4348  NSUBDIV3_SDC_SCH\n+00001f10: 454d 455f 483c 2f73 7061 6e3e 3c2f 6469  EME_H</span></di\n+00001f20: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n+00001f30: 696e 6522 3e3c 6120 6964 3d22 6c30 3030  ine\"><a id=\"l000\n+00001f40: 3235 2220 6e61 6d65 3d22 6c30 3030 3235  25\" name=\"l00025\n+00001f50: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n+00001f60: 733d 226c 696e 656e 6f22 3e20 2020 3235  s=\"lineno\">   25\n+00001f70: 3c2f 7370 616e 3e3c 7370 616e 2063 6c61  </span><span cla\n+00001f80: 7373 3d22 7072 6570 726f 6365 7373 6f72  ss=\"preprocessor\n+00001f90: 223e 2364 6566 696e 6520 4f50 454e 5355  \">#define OPENSU\n+00001fa0: 4244 4956 335f 5344 435f 5343 4845 4d45  BDIV3_SDC_SCHEME\n+00001fb0: 5f48 3c2f 7370 616e 3e3c 2f64 6976 3e0a  _H</span></div>.\n+00001fc0: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n+00001fd0: 223e 3c61 2069 643d 226c 3030 3032 3622  \"><a id=\"l00026\"\n+00001fe0: 206e 616d 653d 226c 3030 3032 3622 3e3c   name=\"l00026\"><\n+00001ff0: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n+00002000: 6c69 6e65 6e6f 223e 2020 2032 363c 2f73  lineno\">   26</s\n+00002010: 7061 6e3e 203c 2f64 6976 3e0a 3c64 6976  pan> </div>.<div\n+00002020: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n+00002030: 2069 643d 226c 3030 3032 3722 206e 616d   id=\"l00027\" nam\n+00002040: 653d 226c 3030 3032 3722 3e3c 2f61 3e3c  e=\"l00027\"></a><\n+00002050: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n+00002060: 6e6f 223e 2020 2032 373c 2f73 7061 6e3e  no\">   27</span>\n+00002070: 3c73 7061 6e20 636c 6173 733d 2270 7265  <span class=\"pre\n+00002080: 7072 6f63 6573 736f 7222 3e23 696e 636c  processor\">#incl\n+00002090: 7564 6520 2671 756f 743b 2e2e 2f76 6572  ude &quot;../ver\n+000020a0: 7369 6f6e 2e68 2671 756f 743b 3c2f 7370  sion.h&quot;</sp\n+000020b0: 616e 3e3c 2f64 6976 3e0a 3c64 6976 2063  an></div>.<div c\n+000020c0: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n+000020d0: 643d 226c 3030 3032 3822 206e 616d 653d  d=\"l00028\" name=\n+000020e0: 226c 3030 3032 3822 3e3c 2f61 3e3c 7370  \"l00028\"></a><sp\n+000020f0: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n+00002100: 223e 2020 2032 383c 2f73 7061 6e3e 203c  \">   28</span> <\n+00002110: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n+00002120: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n+00002130: 3030 3032 3922 206e 616d 653d 226c 3030  00029\" name=\"l00\n+00002140: 3032 3922 3e3c 2f61 3e3c 7370 616e 2063  029\"></a><span c\n+00002150: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n+00002160: 2032 393c 2f73 7061 6e3e 3c73 7061 6e20   29</span><span \n+00002170: 636c 6173 733d 2270 7265 7072 6f63 6573  class=\"preproces\n+00002180: 736f 7222 3e23 696e 636c 7564 6520 2671  sor\">#include &q\n+00002190: 756f 743b 2e2e 2f73 6463 2f74 7970 6573  uot;../sdc/types\n+000021a0: 2e68 2671 756f 743b 3c2f 7370 616e 3e3c  .h&quot;</span><\n+000021b0: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n+000021c0: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n+000021d0: 3030 3033 3022 206e 616d 653d 226c 3030  00030\" name=\"l00\n+000021e0: 3033 3022 3e3c 2f61 3e3c 7370 616e 2063  030\"></a><span c\n+000021f0: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n+00002200: 2033 303c 2f73 7061 6e3e 3c73 7061 6e20   30</span><span \n+00002210: 636c 6173 733d 2270 7265 7072 6f63 6573  class=\"preproces\n+00002220: 736f 7222 3e23 696e 636c 7564 6520 2671  sor\">#include &q\n+00002230: 756f 743b 2e2e 2f73 6463 2f6f 7074 696f  uot;../sdc/optio\n+00002240: 6e73 2e68 2671 756f 743b 3c2f 7370 616e  ns.h&quot;</span\n+00002250: 3e3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ></div>.<div cla\n+00002260: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n+00002270: 226c 3030 3033 3122 206e 616d 653d 226c  \"l00031\" name=\"l\n+00002280: 3030 3033 3122 3e3c 2f61 3e3c 7370 616e  00031\"></a><span\n+00002290: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n+000022a0: 2020 2033 313c 2f73 7061 6e3e 3c73 7061     31</span><spa\n+000022b0: 6e20 636c 6173 733d 2270 7265 7072 6f63  n class=\"preproc\n+000022c0: 6573 736f 7222 3e23 696e 636c 7564 6520  essor\">#include \n+000022d0: 2671 756f 743b 2e2e 2f73 6463 2f63 7265  &quot;../sdc/cre\n+000022e0: 6173 652e 6826 7175 6f74 3b3c 2f73 7061  ase.h&quot;</spa\n+000022f0: 6e3e 3c2f 6469 763e 0a3c 6469 7620 636c  n></div>.<div cl\n+00002300: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n+00002310: 3d22 6c30 3030 3332 2220 6e61 6d65 3d22  =\"l00032\" name=\"\n+00002320: 6c30 3030 3332 223e 3c2f 613e 3c73 7061  l00032\"></a><spa\n+00002330: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n+00002340: 3e20 2020 3332 3c2f 7370 616e 3e20 3c2f  >   32</span> </\n+00002350: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n+00002360: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n+00002370: 3030 3333 2220 6e61 6d65 3d22 6c30 3030  0033\" name=\"l000\n+00002380: 3333 223e 3c2f 613e 3c73 7061 6e20 636c  33\"></a><span cl\n+00002390: 6173 733d 226c 696e 656e 6f22 3e20 2020  ass=\"lineno\">   \n+000023a0: 3333 3c2f 7370 616e 3e3c 7370 616e 2063  33</span><span c\n+000023b0: 6c61 7373 3d22 7072 6570 726f 6365 7373  lass=\"preprocess\n+000023c0: 6f72 223e 2369 6e63 6c75 6465 2026 6c74  or\">#include &lt\n+000023d0: 3b63 6173 7365 7274 2667 743b 3c2f 7370  ;cassert&gt;</sp\n+000023e0: 616e 3e3c 2f64 6976 3e0a 3c64 6976 2063  an></div>.<div c\n+000023f0: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n+00002400: 643d 226c 3030 3033 3422 206e 616d 653d  d=\"l00034\" name=\n+00002410: 226c 3030 3033 3422 3e3c 2f61 3e3c 7370  \"l00034\"></a><sp\n+00002420: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n+00002430: 223e 2020 2033 343c 2f73 7061 6e3e 3c73  \">   34</span><s\n+00002440: 7061 6e20 636c 6173 733d 2270 7265 7072  pan class=\"prepr\n+00002450: 6f63 6573 736f 7222 3e23 696e 636c 7564  ocessor\">#includ\n+00002460: 6520 266c 743b 6373 7464 6c69 6226 6774  e &lt;cstdlib&gt\n+00002470: 3b3c 2f73 7061 6e3e 3c2f 6469 763e 0a3c  ;</span></div>.<\n+00002480: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n+00002490: 3e3c 6120 6964 3d22 6c30 3030 3335 2220  ><a id=\"l00035\" \n+000024a0: 6e61 6d65 3d22 6c30 3030 3335 223e 3c2f  name=\"l00035\"></\n+000024b0: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n+000024c0: 696e 656e 6f22 3e20 2020 3335 3c2f 7370  ineno\">   35</sp\n+000024d0: 616e 3e3c 7370 616e 2063 6c61 7373 3d22  an><span class=\"\n+000024e0: 7072 6570 726f 6365 7373 6f72 223e 2369  preprocessor\">#i\n+000024f0: 6e63 6c75 6465 2026 6c74 3b76 6563 746f  nclude &lt;vecto\n+00002500: 7226 6774 3b3c 2f73 7061 6e3e 3c2f 6469  r&gt;</span></di\n+00002510: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n+00002520: 696e 6522 3e3c 6120 6964 3d22 6c30 3030  ine\"><a id=\"l000\n+00002530: 3336 2220 6e61 6d65 3d22 6c30 3030 3336  36\" name=\"l00036\n+00002540: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n+00002550: 733d 226c 696e 656e 6f22 3e20 2020 3336  s=\"lineno\">   36\n+00002560: 3c2f 7370 616e 3e20 3c2f 6469 763e 0a3c  </span> </div>.<\n+00002570: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n+00002580: 3e3c 6120 6964 3d22 6c30 3030 3337 2220  ><a id=\"l00037\" \n+00002590: 6e61 6d65 3d22 6c30 3030 3337 223e 3c2f  name=\"l00037\"></\n+000025a0: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n+000025b0: 696e 656e 6f22 3e20 2020 3337 3c2f 7370  ineno\">   37</sp\n+000025c0: 616e 3e3c 7370 616e 2063 6c61 7373 3d22  an><span class=\"\n+000025d0: 6b65 7977 6f72 6422 3e6e 616d 6573 7061  keyword\">namespa\n+000025e0: 6365 203c 2f73 7061 6e3e 3c61 2063 6c61  ce </span><a cla\n+000025f0: 7373 3d22 636f 6465 2068 6c5f 6e61 6d65  ss=\"code hl_name\n+00002600: 7370 6163 6522 2068 7265 663d 2261 3030  space\" href=\"a00\n+00002610: 3930 352e 6874 6d6c 223e 4f70 656e 5375  905.html\">OpenSu\n+00002620: 6264 6976 3c2f 613e 207b 3c2f 6469 763e  bdiv</a> {</div>\n+00002630: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n+00002640: 6522 3e3c 6120 6964 3d22 6c30 3030 3338  e\"><a id=\"l00038\n+00002650: 2220 6e61 6d65 3d22 6c30 3030 3338 223e  \" name=\"l00038\">\n+00002660: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n+00002670: 226c 696e 656e 6f22 3e20 2020 3338 3c2f  \"lineno\">   38</\n+00002680: 7370 616e 3e3c 7370 616e 2063 6c61 7373  span><span class\n+00002690: 3d22 6b65 7977 6f72 6422 3e6e 616d 6573  =\"keyword\">names\n+000026a0: 7061 6365 203c 2f73 7061 6e3e 4f50 454e  pace </span>OPEN\n+000026b0: 5355 4244 4956 5f56 4552 5349 4f4e 207b  SUBDIV_VERSION {\n+000026c0: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n+000026d0: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n+000026e0: 6c30 3030 3339 2220 6e61 6d65 3d22 6c30  l00039\" name=\"l0\n+000026f0: 3030 3339 223e 3c2f 613e 3c73 7061 6e20  0039\"></a><span \n+00002700: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n+00002710: 2020 3339 3c2f 7370 616e 3e20 3c2f 6469    39</span> </di\n+00002720: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n+00002730: 696e 6522 3e3c 6120 6964 3d22 6c30 3030  ine\"><a id=\"l000\n+00002740: 3430 2220 6e61 6d65 3d22 6c30 3030 3430  40\" name=\"l00040\n+00002750: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n+00002760: 733d 226c 696e 656e 6f22 3e20 2020 3430  s=\"lineno\">   40\n+00002770: 3c2f 7370 616e 3e3c 7370 616e 2063 6c61  </span><span cla\n+00002780: 7373 3d22 6b65 7977 6f72 6422 3e6e 616d  ss=\"keyword\">nam\n+00002790: 6573 7061 6365 203c 2f73 7061 6e3e 5364  espace </span>Sd\n+000027a0: 6320 7b3c 2f64 6976 3e0a 3c64 6976 2063  c {</div>.<div c\n+000027b0: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n+000027c0: 643d 226c 3030 3034 3122 206e 616d 653d  d=\"l00041\" name=\n+000027d0: 226c 3030 3034 3122 3e3c 2f61 3e3c 7370  \"l00041\"></a><sp\n+000027e0: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n+000027f0: 223e 2020 2034 313c 2f73 7061 6e3e 203c  \">   41</span> <\n+00002800: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n+00002810: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n+00002820: 3030 3036 3522 206e 616d 653d 226c 3030  00065\" name=\"l00\n+00002830: 3036 3522 3e3c 2f61 3e3c 7370 616e 2063  065\"></a><span c\n+00002840: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n+00002850: 2036 353c 2f73 7061 6e3e 3c73 7061 6e20   65</span><span \n+00002860: 636c 6173 733d 226b 6579 776f 7264 223e  class=\"keyword\">\n+00002870: 7465 6d70 6c61 7465 3c2f 7370 616e 3e20  template</span> \n+00002880: 266c 743b 5363 6865 6d65 5479 7065 2053  &lt;SchemeType S\n+00002890: 4348 454d 455f 5459 5045 2667 743b 3c2f  CHEME_TYPE&gt;</\n+000028a0: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n+000028b0: 2266 6f6c 646f 7065 6e22 2069 643d 2266  \"foldopen\" id=\"f\n+000028c0: 6f6c 646f 7065 6e30 3030 3636 2220 6461  oldopen00066\" da\n+000028d0: 7461 2d73 7461 7274 3d22 7b22 2064 6174  ta-start=\"{\" dat\n+000028e0: 612d 656e 643d 227d 3b22 3e0a 3c64 6976  a-end=\"};\">.<div\n+000028f0: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n+00002900: 2069 643d 226c 3030 3036 3622 206e 616d   id=\"l00066\" nam\n+00002910: 653d 226c 3030 3036 3622 3e3c 2f61 3e3c  e=\"l00066\"></a><\n+00002920: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n+00002930: 6e6f 223e 3c61 2063 6c61 7373 3d22 6c69  no\"><a class=\"li\n+00002940: 6e65 2220 6872 6566 3d22 6130 3133 3431  ne\" href=\"a01341\n+00002950: 2e68 746d 6c22 3e20 2020 3636 3c2f 613e  .html\">   66</a>\n+00002960: 3c2f 7370 616e 3e3c 7370 616e 2063 6c61  </span><span cla\n+00002970: 7373 3d22 6b65 7977 6f72 6422 3e63 6c61  ss=\"keyword\">cla\n+00002980: 7373 203c 2f73 7061 6e3e 3c61 2063 6c61  ss </span><a cla\n+00002990: 7373 3d22 636f 6465 2068 6c5f 636c 6173  ss=\"code hl_clas\n+000029a0: 7322 2068 7265 663d 2261 3031 3334 312e  s\" href=\"a01341.\n+000029b0: 6874 6d6c 223e 5363 6865 6d65 3c2f 613e  html\">Scheme</a>\n+000029c0: 207b 3c2f 6469 763e 0a3c 6469 7620 636c   {</div>.<div cl\n+000029d0: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n+000029e0: 3d22 6c30 3030 3637 2220 6e61 6d65 3d22  =\"l00067\" name=\"\n+000029f0: 6c30 3030 3637 223e 3c2f 613e 3c73 7061  l00067\"></a><spa\n+00002a00: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n+00002a10: 3e20 2020 3637 3c2f 7370 616e 3e20 3c2f  >   67</span> </\n+00002a20: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n+00002a30: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n+00002a40: 3030 3638 2220 6e61 6d65 3d22 6c30 3030  0068\" name=\"l000\n+00002a50: 3638 223e 3c2f 613e 3c73 7061 6e20 636c  68\"></a><span cl\n+00002a60: 6173 733d 226c 696e 656e 6f22 3e20 2020  ass=\"lineno\">   \n+00002a70: 3638 3c2f 7370 616e 3e3c 7370 616e 2063  68</span><span c\n+00002a80: 6c61 7373 3d22 6b65 7977 6f72 6422 3e70  lass=\"keyword\">p\n+00002a90: 7562 6c69 633c 2f73 7061 6e3e 3a3c 2f64  ublic</span>:</d\n+00002aa0: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n+00002ab0: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n+00002ac0: 3036 3922 206e 616d 653d 226c 3030 3036  069\" name=\"l0006\n+00002ad0: 3922 3e3c 2f61 3e3c 7370 616e 2063 6c61  9\"></a><span cla\n+00002ae0: 7373 3d22 6c69 6e65 6e6f 223e 2020 2036  ss=\"lineno\">   6\n+00002af0: 393c 2f73 7061 6e3e 203c 2f64 6976 3e0a  9</span> </div>.\n+00002b00: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n+00002b10: 223e 3c61 2069 643d 226c 3030 3037 3022  \"><a id=\"l00070\"\n+00002b20: 206e 616d 653d 226c 3030 3037 3022 3e3c   name=\"l00070\"><\n+00002b30: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n+00002b40: 6c69 6e65 6e6f 223e 3c61 2063 6c61 7373  lineno\"><a class\n+00002b50: 3d22 6c69 6e65 2220 6872 6566 3d22 6130  =\"line\" href=\"a0\n+00002b60: 3133 3431 2e68 746d 6c23 6135 6331 3432  1341.html#a5c142\n+00002b70: 6334 6439 6336 6633 6265 3636 6264 3031  c4d9c6f3be66bd01\n+00002b80: 3837 3133 3539 3166 6663 6222 3e20 2020  8713591ffcb\">   \n+00002b90: 3730 3c2f 613e 3c2f 7370 616e 3e20 2020  70</a></span>   \n+00002ba0: 203c 6120 636c 6173 733d 2263 6f64 6520   <a class=\"code \n+00002bb0: 686c 5f66 756e 6374 696f 6e22 2068 7265  hl_function\" hre\n+00002bc0: 663d 2261 3031 3334 312e 6874 6d6c 2361  f=\"a01341.html#a\n+00002bd0: 3563 3134 3263 3464 3963 3666 3362 6536  5c142c4d9c6f3be6\n+00002be0: 3662 6430 3138 3731 3335 3931 6666 6362  6bd018713591ffcb\n+00002bf0: 223e 5363 6865 6d65 3c2f 613e 2829 203a  \">Scheme</a>() :\n+00002c00: 205f 6f70 7469 6f6e 7328 2920 7b20 7d3c   _options() { }<\n+00002c10: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n+00002c20: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n+00002c30: 3030 3037 3122 206e 616d 653d 226c 3030  00071\" name=\"l00\n+00002c40: 3037 3122 3e3c 2f61 3e3c 7370 616e 2063  071\"></a><span c\n+00002c50: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n+00002c60: 2037 313c 2f73 7061 6e3e 203c 2f64 6976   71</span> </div\n+00002c70: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n+00002c80: 6e65 223e 3c61 2069 643d 226c 3030 3037  ne\"><a id=\"l0007\n+00002c90: 3222 206e 616d 653d 226c 3030 3037 3222  2\" name=\"l00072\"\n+00002ca0: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n+00002cb0: 3d22 6c69 6e65 6e6f 223e 3c61 2063 6c61  =\"lineno\"><a cla\n+00002cc0: 7373 3d22 6c69 6e65 2220 6872 6566 3d22  ss=\"line\" href=\"\n+00002cd0: 6130 3133 3431 2e68 746d 6c23 6164 6439  a01341.html#add9\n+00002ce0: 3466 3932 3163 3433 6661 3134 6438 3836  4f921c43fa14d886\n+00002cf0: 6164 6662 6364 6363 3030 3231 3122 3e20  adfbcdcc00211\"> \n+00002d00: 2020 3732 3c2f 613e 3c2f 7370 616e 3e20    72</a></span> \n+00002d10: 2020 203c 6120 636c 6173 733d 2263 6f64     <a class=\"cod\n+00002d20: 6520 686c 5f66 756e 6374 696f 6e22 2068  e hl_function\" h\n+00002d30: 7265 663d 2261 3031 3334 312e 6874 6d6c  ref=\"a01341.html\n+00002d40: 2361 6464 3934 6639 3231 6334 3366 6131  #add94f921c43fa1\n+00002d50: 3464 3838 3661 6466 6263 6463 6330 3032  4d886adfbcdcc002\n+00002d60: 3131 223e 5363 6865 6d65 3c2f 613e 283c  11\">Scheme</a>(<\n+00002d70: 6120 636c 6173 733d 2263 6f64 6520 686c  a class=\"code hl\n+00002d80: 5f63 6c61 7373 2220 6872 6566 3d22 6130  _class\" href=\"a0\n+00002d90: 3133 3337 2e68 746d 6c22 3e4f 7074 696f  1337.html\">Optio\n+00002da0: 6e73 3c2f 613e 203c 7370 616e 2063 6c61  ns</a> <span cla\n+00002db0: 7373 3d22 6b65 7977 6f72 6422 3e63 6f6e  ss=\"keyword\">con\n+00002dc0: 7374 3c2f 7370 616e 3e26 616d 703b 206f  st</span>&amp; o\n+00002dd0: 7074 696f 6e73 2920 3a20 5f6f 7074 696f  ptions) : _optio\n+00002de0: 6e73 286f 7074 696f 6e73 2920 7b20 7d3c  ns(options) { }<\n+00002df0: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n+00002e00: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n+00002e10: 3030 3037 3322 206e 616d 653d 226c 3030  00073\" name=\"l00\n+00002e20: 3037 3322 3e3c 2f61 3e3c 7370 616e 2063  073\"></a><span c\n+00002e30: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n+00002e40: 2037 333c 2f73 7061 6e3e 203c 2f64 6976   73</span> </div\n+00002e50: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n+00002e60: 6e65 223e 3c61 2069 643d 226c 3030 3037  ne\"><a id=\"l0007\n+00002e70: 3422 206e 616d 653d 226c 3030 3037 3422  4\" name=\"l00074\"\n+00002e80: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n+00002e90: 3d22 6c69 6e65 6e6f 223e 3c61 2063 6c61  =\"lineno\"><a cla\n+00002ea0: 7373 3d22 6c69 6e65 2220 6872 6566 3d22  ss=\"line\" href=\"\n+00002eb0: 6130 3133 3431 2e68 746d 6c23 6139 6230  a01341.html#a9b0\n+00002ec0: 6464 6237 6336 3264 3866 6364 3630 3239  ddb7c62d8fcd6029\n+00002ed0: 6235 3935 6362 3865 6163 3638 3222 3e20  b595cb8eac682\"> \n+00002ee0: 2020 3734 3c2f 613e 3c2f 7370 616e 3e20    74</a></span> \n+00002ef0: 2020 203c 6120 636c 6173 733d 2263 6f64     <a class=\"cod\n+00002f00: 6520 686c 5f63 6c61 7373 2220 6872 6566  e hl_class\" href\n+00002f10: 3d22 6130 3133 3337 2e68 746d 6c22 3e4f  =\"a01337.html\">O\n+00002f20: 7074 696f 6e73 3c2f 613e 203c 6120 636c  ptions</a> <a cl\n+00002f30: 6173 733d 2263 6f64 6520 686c 5f66 756e  ass=\"code hl_fun\n+00002f40: 6374 696f 6e22 2068 7265 663d 2261 3031  ction\" href=\"a01\n+00002f50: 3334 312e 6874 6d6c 2361 3962 3064 6462  341.html#a9b0ddb\n+00002f60: 3763 3632 6438 6663 6436 3032 3962 3539  7c62d8fcd6029b59\n+00002f70: 3563 6238 6561 6336 3832 223e 4765 744f  5cb8eac682\">GetO\n+00002f80: 7074 696f 6e73 3c2f 613e 2829 3c73 7061  ptions</a>()<spa\n+00002f90: 6e20 636c 6173 733d 226b 6579 776f 7264  n class=\"keyword\n+00002fa0: 223e 2063 6f6e 7374 203c 2f73 7061 6e3e  \"> const </span>\n+00002fb0: 7b20 3c73 7061 6e20 636c 6173 733d 226b  { <span class=\"k\n+00002fc0: 6579 776f 7264 666c 6f77 223e 7265 7475  eywordflow\">retu\n+00002fd0: 726e 3c2f 7370 616e 3e20 5f6f 7074 696f  rn</span> _optio\n+00002fe0: 6e73 3b20 7d3c 2f64 6976 3e0a 3c64 6976  ns; }</div>.<div\n+00002ff0: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n+00003000: 2069 643d 226c 3030 3037 3522 206e 616d   id=\"l00075\" nam\n+00003010: 653d 226c 3030 3037 3522 3e3c 2f61 3e3c  e=\"l00075\"></a><\n+00003020: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n+00003030: 6e6f 223e 3c61 2063 6c61 7373 3d22 6c69  no\"><a class=\"li\n+00003040: 6e65 2220 6872 6566 3d22 6130 3133 3431  ne\" href=\"a01341\n+00003050: 2e68 746d 6c23 6166 3336 3064 3131 3134  .html#af360d1114\n+00003060: 6635 3339 3238 3232 3033 3163 6162 6164  f5392822031cabad\n+00003070: 3937 3636 6466 3522 3e20 2020 3735 3c2f  9766df5\">   75</\n+00003080: 613e 3c2f 7370 616e 3e20 2020 203c 7370  a></span>    <sp\n+00003090: 616e 2063 6c61 7373 3d22 6b65 7977 6f72  an class=\"keywor\n+000030a0: 6474 7970 6522 3e76 6f69 643c 2f73 7061  dtype\">void</spa\n+000030b0: 6e3e 2020 2020 3c61 2063 6c61 7373 3d22  n>    <a class=\"\n+000030c0: 636f 6465 2068 6c5f 6675 6e63 7469 6f6e  code hl_function\n+000030d0: 2220 6872 6566 3d22 6130 3133 3431 2e68  \" href=\"a01341.h\n+000030e0: 746d 6c23 6166 3336 3064 3131 3134 6635  tml#af360d1114f5\n+000030f0: 3339 3238 3232 3033 3163 6162 6164 3937  392822031cabad97\n+00003100: 3636 6466 3522 3e53 6574 4f70 7469 6f6e  66df5\">SetOption\n+00003110: 733c 2f61 3e28 3c73 7061 6e20 636c 6173  s</a>(<span clas\n+00003120: 733d 226b 6579 776f 7264 223e 636f 6e73  s=\"keyword\">cons\n+00003130: 743c 2f73 7061 6e3e 203c 6120 636c 6173  t</span> <a clas\n+00003140: 733d 2263 6f64 6520 686c 5f63 6c61 7373  s=\"code hl_class\n+00003150: 2220 6872 6566 3d22 6130 3133 3337 2e68  \" href=\"a01337.h\n+00003160: 746d 6c22 3e4f 7074 696f 6e73 3c2f 613e  tml\">Options</a>\n+00003170: 2661 6d70 3b20 6e65 774f 7074 696f 6e73  &amp; newOptions\n+00003180: 2920 7b20 5f6f 7074 696f 6e73 203d 206e  ) { _options = n\n+00003190: 6577 4f70 7469 6f6e 733b 207d 3c2f 6469  ewOptions; }</di\n+000031a0: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n+000031b0: 696e 6522 3e3c 6120 6964 3d22 6c30 3030  ine\"><a id=\"l000\n+000031c0: 3736 2220 6e61 6d65 3d22 6c30 3030 3736  76\" name=\"l00076\n+000031d0: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n+000031e0: 733d 226c 696e 656e 6f22 3e20 2020 3736  s=\"lineno\">   76\n+000031f0: 3c2f 7370 616e 3e20 3c2f 6469 763e 0a3c  </span> </div>.<\n+00003200: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n+00003210: 3e3c 6120 6964 3d22 6c30 3030 3830 2220  ><a id=\"l00080\" \n+00003220: 6e61 6d65 3d22 6c30 3030 3830 223e 3c2f  name=\"l00080\"></\n+00003230: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n+00003240: 696e 656e 6f22 3e20 2020 3830 3c2f 7370  ineno\">   80</sp\n+00003250: 616e 3e20 2020 203c 7370 616e 2063 6c61  an>    <span cla\n+00003260: 7373 3d22 6b65 7977 6f72 6422 3e74 656d  ss=\"keyword\">tem\n+00003270: 706c 6174 653c 2f73 7061 6e3e 2026 6c74  plate</span> &lt\n+00003280: 3b3c 7370 616e 2063 6c61 7373 3d22 6b65  ;<span class=\"ke\n+00003290: 7977 6f72 6422 3e74 7970 656e 616d 653c  yword\">typename<\n+000032a0: 2f73 7061 6e3e 2046 4143 452c 203c 7370  /span> FACE, <sp\n+000032b0: 616e 2063 6c61 7373 3d22 6b65 7977 6f72  an class=\"keywor\n+000032c0: 6422 3e74 7970 656e 616d 653c 2f73 7061  d\">typename</spa\n+000032d0: 6e3e 204d 4153 4b26 6774 3b3c 2f64 6976  n> MASK&gt;</div\n+000032e0: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n+000032f0: 6e65 223e 3c61 2069 643d 226c 3030 3038  ne\"><a id=\"l0008\n+00003300: 3122 206e 616d 653d 226c 3030 3038 3122  1\" name=\"l00081\"\n+00003310: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n+00003320: 3d22 6c69 6e65 6e6f 223e 2020 2038 313c  =\"lineno\">   81<\n+00003330: 2f73 7061 6e3e 2020 2020 3c73 7061 6e20  /span>    <span \n+00003340: 636c 6173 733d 226b 6579 776f 7264 7479  class=\"keywordty\n+00003350: 7065 223e 766f 6964 3c2f 7370 616e 3e20  pe\">void</span> \n+00003360: 3c61 2063 6c61 7373 3d22 636f 6465 2068  <a class=\"code h\n+00003370: 6c5f 6675 6e63 7469 6f6e 2220 6872 6566  l_function\" href\n+00003380: 3d22 6130 3133 3431 2e68 746d 6c23 6165  =\"a01341.html#ae\n+00003390: 3865 6432 3462 3136 3931 6536 3534 3336  8ed24b1691e65436\n+000033a0: 6434 3465 3730 3331 3839 6361 6634 3222  d44e703189caf42\"\n+000033b0: 3e43 6f6d 7075 7465 4661 6365 5665 7274  >ComputeFaceVert\n+000033c0: 6578 4d61 736b 3c2f 613e 2846 4143 4520  exMask</a>(FACE \n+000033d0: 3c73 7061 6e20 636c 6173 733d 226b 6579  <span class=\"key\n+000033e0: 776f 7264 223e 636f 6e73 743c 2f73 7061  word\">const</spa\n+000033f0: 6e3e 2661 6d70 3b20 6661 6365 4e65 6967  n>&amp; faceNeig\n+00003400: 6862 6f72 686f 6f64 2c20 4d41 534b 2661  hborhood, MASK&a\n+00003410: 6d70 3b20 6661 6365 5665 7274 6578 4d61  mp; faceVertexMa\n+00003420: 736b 2920 3c73 7061 6e20 636c 6173 733d  sk) <span class=\n+00003430: 226b 6579 776f 7264 223e 636f 6e73 743c  \"keyword\">const<\n+00003440: 2f73 7061 6e3e 3b3c 2f64 6976 3e0a 3c64  /span>;</div>.<d\n+00003450: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n+00003460: 3c61 2069 643d 226c 3030 3038 3222 206e  <a id=\"l00082\" n\n+00003470: 616d 653d 226c 3030 3038 3222 3e3c 2f61  ame=\"l00082\"></a\n+00003480: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n+00003490: 6e65 6e6f 223e 2020 2038 323c 2f73 7061  neno\">   82</spa\n+000034a0: 6e3e 203c 2f64 6976 3e0a 3c64 6976 2063  n> </div>.<div c\n+000034b0: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n+000034c0: 643d 226c 3030 3039 3822 206e 616d 653d  d=\"l00098\" name=\n+000034d0: 226c 3030 3039 3822 3e3c 2f61 3e3c 7370  \"l00098\"></a><sp\n+000034e0: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n+000034f0: 223e 2020 2039 383c 2f73 7061 6e3e 2020  \">   98</span>  \n+00003500: 2020 3c73 7061 6e20 636c 6173 733d 226b    <span class=\"k\n+00003510: 6579 776f 7264 223e 7465 6d70 6c61 7465  eyword\">template\n+00003520: 3c2f 7370 616e 3e20 266c 743b 3c73 7061  </span> &lt;<spa\n+00003530: 6e20 636c 6173 733d 226b 6579 776f 7264  n class=\"keyword\n+00003540: 223e 7479 7065 6e61 6d65 3c2f 7370 616e  \">typename</span\n+00003550: 3e20 4544 4745 2c20 3c73 7061 6e20 636c  > EDGE, <span cl\n+00003560: 6173 733d 226b 6579 776f 7264 223e 7479  ass=\"keyword\">ty\n+00003570: 7065 6e61 6d65 3c2f 7370 616e 3e20 4d41  pename</span> MA\n+00003580: 534b 2667 743b 3c2f 6469 763e 0a3c 6469  SK&gt;</div>.<di\n+00003590: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n+000035a0: 6120 6964 3d22 6c30 3030 3939 2220 6e61  a id=\"l00099\" na\n+000035b0: 6d65 3d22 6c30 3030 3939 223e 3c2f 613e  me=\"l00099\"></a>\n+000035c0: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n+000035d0: 656e 6f22 3e20 2020 3939 3c2f 7370 616e  eno\">   99</span\n+000035e0: 3e20 2020 203c 7370 616e 2063 6c61 7373  >    <span class\n+000035f0: 3d22 6b65 7977 6f72 6474 7970 6522 3e76  =\"keywordtype\">v\n+00003600: 6f69 643c 2f73 7061 6e3e 203c 6120 636c  oid</span> <a cl\n+00003610: 6173 733d 2263 6f64 6520 686c 5f66 756e  ass=\"code hl_fun\n+00003620: 6374 696f 6e22 2068 7265 663d 2261 3031  ction\" href=\"a01\n+00003630: 3334 312e 6874 6d6c 2361 3562 3561 3533  341.html#a5b5a53\n+00003640: 3737 6130 3165 6234 6261 3434 3665 3137  77a01eb4ba446e17\n+00003650: 3465 6666 3965 3435 6163 223e 436f 6d70  4eff9e45ac\">Comp\n+00003660: 7574 6545 6467 6556 6572 7465 784d 6173  uteEdgeVertexMas\n+00003670: 6b3c 2f61 3e28 4544 4745 203c 7370 616e  k</a>(EDGE <span\n+00003680: 2063 6c61 7373 3d22 6b65 7977 6f72 6422   class=\"keyword\"\n+00003690: 3e63 6f6e 7374 3c2f 7370 616e 3e26 616d  >const</span>&am\n+000036a0: 703b 2065 6467 654e 6569 6768 626f 7268  p; edgeNeighborh\n+000036b0: 6f6f 642c 204d 4153 4b26 616d 703b 2065  ood, MASK&amp; e\n+000036c0: 6467 6556 6572 7465 784d 6173 6b2c 3c2f  dgeVertexMask,</\n+000036d0: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n+000036e0: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n+000036f0: 3031 3030 2220 6e61 6d65 3d22 6c30 3031  0100\" name=\"l001\n+00003700: 3030 223e 3c2f 613e 3c73 7061 6e20 636c  00\"></a><span cl\n+00003710: 6173 733d 226c 696e 656e 6f22 3e20 2031  ass=\"lineno\">  1\n+00003720: 3030 3c2f 7370 616e 3e20 2020 2020 2020  00</span>       \n+00003730: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00003740: 2020 2020 2020 2020 3c61 2063 6c61 7373          <a class\n+00003750: 3d22 636f 6465 2068 6c5f 656e 756d 6572  =\"code hl_enumer\n+00003760: 6174 696f 6e22 2068 7265 663d 2261 3031  ation\" href=\"a01\n+00003770: 3333 332e 6874 6d6c 2361 3131 6663 6435  333.html#a11fcd5\n+00003780: 3165 6638 3631 3138 6636 3565 3630 3363  1ef86118f65e603c\n+00003790: 3134 3734 3337 3761 3738 223e 4372 6561  1474377a78\">Crea\n+000037a0: 7365 3a3a 5275 6c65 3c2f 613e 2070 6172  se::Rule</a> par\n+000037b0: 656e 7452 756c 6520 3d20 3c61 2063 6c61  entRule = <a cla\n+000037c0: 7373 3d22 636f 6465 2068 6c5f 656e 756d  ss=\"code hl_enum\n+000037d0: 7661 6c75 6522 2068 7265 663d 2261 3031  value\" href=\"a01\n+000037e0: 3333 332e 6874 6d6c 2361 3131 6663 6435  333.html#a11fcd5\n+000037f0: 3165 6638 3631 3138 6636 3565 3630 3363  1ef86118f65e603c\n+00003800: 3134 3734 3337 3761 3738 6162 3239 3961  1474377a78ab299a\n+00003810: 6566 6232 3630 3133 6137 3964 3532 3139  efb26013a79d5219\n+00003820: 3161 3738 3837 6665 6135 3322 3e43 7265  1a7887fea53\">Cre\n+00003830: 6173 653a 3a52 554c 455f 554e 4b4e 4f57  ase::RULE_UNKNOW\n+00003840: 4e3c 2f61 3e2c 3c2f 6469 763e 0a3c 6469  N</a>,</div>.<di\n+00003850: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n+00003860: 6120 6964 3d22 6c30 3031 3031 2220 6e61  a id=\"l00101\" na\n+00003870: 6d65 3d22 6c30 3031 3031 223e 3c2f 613e  me=\"l00101\"></a>\n+00003880: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n+00003890: 656e 6f22 3e20 2031 3031 3c2f 7370 616e  eno\">  101</span\n+000038a0: 3e20 2020 2020 2020 2020 2020 2020 2020  >               \n+000038b0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000038c0: 3c61 2063 6c61 7373 3d22 636f 6465 2068  <a class=\"code h\n+000038d0: 6c5f 656e 756d 6572 6174 696f 6e22 2068  l_enumeration\" h\n+000038e0: 7265 663d 2261 3031 3333 332e 6874 6d6c  ref=\"a01333.html\n+000038f0: 2361 3131 6663 6435 3165 6638 3631 3138  #a11fcd51ef86118\n+00003900: 6636 3565 3630 3363 3134 3734 3337 3761  f65e603c1474377a\n+00003910: 3738 223e 4372 6561 7365 3a3a 5275 6c65  78\">Crease::Rule\n+00003920: 3c2f 613e 2063 6869 6c64 5275 6c65 203d  </a> childRule =\n+00003930: 203c 6120 636c 6173 733d 2263 6f64 6520   <a class=\"code \n+00003940: 686c 5f65 6e75 6d76 616c 7565 2220 6872  hl_enumvalue\" hr\n+00003950: 6566 3d22 6130 3133 3333 2e68 746d 6c23  ef=\"a01333.html#\n+00003960: 6131 3166 6364 3531 6566 3836 3131 3866  a11fcd51ef86118f\n+00003970: 3635 6536 3033 6331 3437 3433 3737 6137  65e603c1474377a7\n+00003980: 3861 6232 3939 6165 6662 3236 3031 3361  8ab299aefb26013a\n+00003990: 3739 6435 3231 3931 6137 3838 3766 6561  79d52191a7887fea\n+000039a0: 3533 223e 4372 6561 7365 3a3a 5255 4c45  53\">Crease::RULE\n+000039b0: 5f55 4e4b 4e4f 574e 3c2f 613e 2920 3c73  _UNKNOWN</a>) <s\n+000039c0: 7061 6e20 636c 6173 733d 226b 6579 776f  pan class=\"keywo\n+000039d0: 7264 223e 636f 6e73 743c 2f73 7061 6e3e  rd\">const</span>\n+000039e0: 3b3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ;</div>.<div cla\n+000039f0: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n+00003a00: 226c 3030 3130 3222 206e 616d 653d 226c  \"l00102\" name=\"l\n+00003a10: 3030 3130 3222 3e3c 2f61 3e3c 7370 616e  00102\"></a><span\n+00003a20: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n+00003a30: 2020 3130 323c 2f73 7061 6e3e 203c 2f64    102</span> </d\n+00003a40: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n+00003a50: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n+00003a60: 3131 3222 206e 616d 653d 226c 3030 3131  112\" name=\"l0011\n+00003a70: 3222 3e3c 2f61 3e3c 7370 616e 2063 6c61  2\"></a><span cla\n+00003a80: 7373 3d22 6c69 6e65 6e6f 223e 2020 3131  ss=\"lineno\">  11\n+00003a90: 323c 2f73 7061 6e3e 2020 2020 3c73 7061  2</span>    <spa\n+00003aa0: 6e20 636c 6173 733d 226b 6579 776f 7264  n class=\"keyword\n+00003ab0: 223e 7465 6d70 6c61 7465 3c2f 7370 616e  \">template</span\n+00003ac0: 3e20 266c 743b 3c73 7061 6e20 636c 6173  > &lt;<span clas\n+00003ad0: 733d 226b 6579 776f 7264 223e 7479 7065  s=\"keyword\">type\n+00003ae0: 6e61 6d65 3c2f 7370 616e 3e20 5645 5254  name</span> VERT\n+00003af0: 4558 2c20 3c73 7061 6e20 636c 6173 733d  EX, <span class=\n+00003b00: 226b 6579 776f 7264 223e 7479 7065 6e61  \"keyword\">typena\n+00003b10: 6d65 3c2f 7370 616e 3e20 4d41 534b 2667  me</span> MASK&g\n+00003b20: 743b 3c2f 6469 763e 0a3c 6469 7620 636c  t;</div>.<div cl\n+00003b30: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n+00003b40: 3d22 6c30 3031 3133 2220 6e61 6d65 3d22  =\"l00113\" name=\"\n+00003b50: 6c30 3031 3133 223e 3c2f 613e 3c73 7061  l00113\"></a><spa\n+00003b60: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n+00003b70: 3e20 2031 3133 3c2f 7370 616e 3e20 2020  >  113</span>   \n+00003b80: 203c 7370 616e 2063 6c61 7373 3d22 6b65   <span class=\"ke\n+00003b90: 7977 6f72 6474 7970 6522 3e76 6f69 643c  ywordtype\">void<\n+00003ba0: 2f73 7061 6e3e 203c 6120 636c 6173 733d  /span> <a class=\n+00003bb0: 2263 6f64 6520 686c 5f66 756e 6374 696f  \"code hl_functio\n+00003bc0: 6e22 2068 7265 663d 2261 3031 3334 312e  n\" href=\"a01341.\n+00003bd0: 6874 6d6c 2361 3332 3863 6132 3665 3631  html#a328ca26e61\n+00003be0: 3432 3833 3863 3438 3434 6230 3334 3534  42838c4844b03454\n+00003bf0: 3666 6238 6337 223e 436f 6d70 7574 6556  6fb8c7\">ComputeV\n+00003c00: 6572 7465 7856 6572 7465 784d 6173 6b3c  ertexVertexMask<\n+00003c10: 2f61 3e28 5645 5254 4558 203c 7370 616e  /a>(VERTEX <span\n+00003c20: 2063 6c61 7373 3d22 6b65 7977 6f72 6422   class=\"keyword\"\n+00003c30: 3e63 6f6e 7374 3c2f 7370 616e 3e26 616d  >const</span>&am\n+00003c40: 703b 2076 6572 7465 784e 6569 6768 626f  p; vertexNeighbo\n+00003c50: 7268 6f6f 642c 204d 4153 4b26 616d 703b  rhood, MASK&amp;\n+00003c60: 2076 6572 7465 7856 6572 7465 784d 6173   vertexVertexMas\n+00003c70: 6b2c 3c2f 6469 763e 0a3c 6469 7620 636c  k,</div>.<div cl\n+00003c80: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n+00003c90: 3d22 6c30 3031 3134 2220 6e61 6d65 3d22  =\"l00114\" name=\"\n+00003ca0: 6c30 3031 3134 223e 3c2f 613e 3c73 7061  l00114\"></a><spa\n+00003cb0: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n+00003cc0: 3e20 2031 3134 3c2f 7370 616e 3e20 2020  >  114</span>   \n+00003cd0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00003ce0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00003cf0: 203c 6120 636c 6173 733d 2263 6f64 6520   <a class=\"code \n+00003d00: 686c 5f65 6e75 6d65 7261 7469 6f6e 2220  hl_enumeration\" \n+00003d10: 6872 6566 3d22 6130 3133 3333 2e68 746d  href=\"a01333.htm\n+00003d20: 6c23 6131 3166 6364 3531 6566 3836 3131  l#a11fcd51ef8611\n+00003d30: 3866 3635 6536 3033 6331 3437 3433 3737  8f65e603c1474377\n+00003d40: 6137 3822 3e43 7265 6173 653a 3a52 756c  a78\">Crease::Rul\n+00003d50: 653c 2f61 3e20 7061 7265 6e74 5275 6c65  e</a> parentRule\n+00003d60: 203d 203c 6120 636c 6173 733d 2263 6f64   = <a class=\"cod\n+00003d70: 6520 686c 5f65 6e75 6d76 616c 7565 2220  e hl_enumvalue\" \n+00003d80: 6872 6566 3d22 6130 3133 3333 2e68 746d  href=\"a01333.htm\n+00003d90: 6c23 6131 3166 6364 3531 6566 3836 3131  l#a11fcd51ef8611\n+00003da0: 3866 3635 6536 3033 6331 3437 3433 3737  8f65e603c1474377\n+00003db0: 6137 3861 6232 3939 6165 6662 3236 3031  a78ab299aefb2601\n+00003dc0: 3361 3739 6435 3231 3931 6137 3838 3766  3a79d52191a7887f\n+00003dd0: 6561 3533 223e 4372 6561 7365 3a3a 5255  ea53\">Crease::RU\n+00003de0: 4c45 5f55 4e4b 4e4f 574e 3c2f 613e 2c3c  LE_UNKNOWN</a>,<\n+00003df0: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n+00003e00: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n+00003e10: 3030 3131 3522 206e 616d 653d 226c 3030  00115\" name=\"l00\n+00003e20: 3131 3522 3e3c 2f61 3e3c 7370 616e 2063  115\"></a><span c\n+00003e30: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n+00003e40: 3131 353c 2f73 7061 6e3e 2020 2020 2020  115</span>      \n+00003e50: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00003e60: 2020 2020 2020 2020 2020 2020 2020 3c61                <a\n+00003e70: 2063 6c61 7373 3d22 636f 6465 2068 6c5f   class=\"code hl_\n+00003e80: 656e 756d 6572 6174 696f 6e22 2068 7265  enumeration\" hre\n+00003e90: 663d 2261 3031 3333 332e 6874 6d6c 2361  f=\"a01333.html#a\n+00003ea0: 3131 6663 6435 3165 6638 3631 3138 6636  11fcd51ef86118f6\n+00003eb0: 3565 3630 3363 3134 3734 3337 3761 3738  5e603c1474377a78\n+00003ec0: 223e 4372 6561 7365 3a3a 5275 6c65 3c2f  \">Crease::Rule</\n+00003ed0: 613e 2063 6869 6c64 5275 6c65 203d 203c  a> childRule = <\n+00003ee0: 6120 636c 6173 733d 2263 6f64 6520 686c  a class=\"code hl\n+00003ef0: 5f65 6e75 6d76 616c 7565 2220 6872 6566  _enumvalue\" href\n+00003f00: 3d22 6130 3133 3333 2e68 746d 6c23 6131  =\"a01333.html#a1\n+00003f10: 3166 6364 3531 6566 3836 3131 3866 3635  1fcd51ef86118f65\n+00003f20: 6536 3033 6331 3437 3433 3737 6137 3861  e603c1474377a78a\n+00003f30: 6232 3939 6165 6662 3236 3031 3361 3739  b299aefb26013a79\n+00003f40: 6435 3231 3931 6137 3838 3766 6561 3533  d52191a7887fea53\n+00003f50: 223e 4372 6561 7365 3a3a 5255 4c45 5f55  \">Crease::RULE_U\n+00003f60: 4e4b 4e4f 574e 3c2f 613e 2920 3c73 7061  NKNOWN</a>) <spa\n+00003f70: 6e20 636c 6173 733d 226b 6579 776f 7264  n class=\"keyword\n+00003f80: 223e 636f 6e73 743c 2f73 7061 6e3e 3b3c  \">const</span>;<\n+00003f90: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n+00003fa0: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n+00003fb0: 3030 3131 3622 206e 616d 653d 226c 3030  00116\" name=\"l00\n+00003fc0: 3131 3622 3e3c 2f61 3e3c 7370 616e 2063  116\"></a><span c\n+00003fd0: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n+00003fe0: 3131 363c 2f73 7061 6e3e 203c 2f64 6976  116</span> </div\n+00003ff0: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n+00004000: 6e65 223e 3c61 2069 643d 226c 3030 3134  ne\"><a id=\"l0014\n+00004010: 3122 206e 616d 653d 226c 3030 3134 3122  1\" name=\"l00141\"\n+00004020: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n+00004030: 3d22 6c69 6e65 6e6f 223e 2020 3134 313c  =\"lineno\">  141<\n+00004040: 2f73 7061 6e3e 2020 2020 3c73 7061 6e20  /span>    <span \n+00004050: 636c 6173 733d 226b 6579 776f 7264 223e  class=\"keyword\">\n+00004060: 7465 6d70 6c61 7465 3c2f 7370 616e 3e20  template</span> \n+00004070: 266c 743b 3c73 7061 6e20 636c 6173 733d  &lt;<span class=\n+00004080: 226b 6579 776f 7264 223e 7479 7065 6e61  \"keyword\">typena\n+00004090: 6d65 3c2f 7370 616e 3e20 5645 5254 4558  me</span> VERTEX\n+000040a0: 2c20 3c73 7061 6e20 636c 6173 733d 226b  , <span class=\"k\n+000040b0: 6579 776f 7264 223e 7479 7065 6e61 6d65  eyword\">typename\n+000040c0: 3c2f 7370 616e 3e20 4d41 534b 2667 743b  </span> MASK&gt;\n+000040d0: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n+000040e0: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n+000040f0: 6c30 3031 3432 2220 6e61 6d65 3d22 6c30  l00142\" name=\"l0\n+00004100: 3031 3432 223e 3c2f 613e 3c73 7061 6e20  0142\"></a><span \n+00004110: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n+00004120: 2031 3432 3c2f 7370 616e 3e20 2020 203c   142</span>    <\n+00004130: 7370 616e 2063 6c61 7373 3d22 6b65 7977  span class=\"keyw\n+00004140: 6f72 6474 7970 6522 3e76 6f69 643c 2f73  ordtype\">void</s\n+00004150: 7061 6e3e 203c 6120 636c 6173 733d 2263  pan> <a class=\"c\n+00004160: 6f64 6520 686c 5f66 756e 6374 696f 6e22  ode hl_function\"\n+00004170: 2068 7265 663d 2261 3031 3334 312e 6874   href=\"a01341.ht\n+00004180: 6d6c 2361 3363 3864 3736 3363 6131 3863  ml#a3c8d763ca18c\n+00004190: 3435 3763 3933 3664 6230 6534 3739 3937  457c936db0e47997\n+000041a0: 3436 6632 223e 436f 6d70 7574 6556 6572  46f2\">ComputeVer\n+000041b0: 7465 784c 696d 6974 4d61 736b 3c2f 613e  texLimitMask</a>\n+000041c0: 2856 4552 5445 5820 3c73 7061 6e20 636c  (VERTEX <span cl\n+000041d0: 6173 733d 226b 6579 776f 7264 223e 636f  ass=\"keyword\">co\n+000041e0: 6e73 743c 2f73 7061 6e3e 2661 6d70 3b20  nst</span>&amp; \n+000041f0: 7665 7274 6578 4e65 6967 6862 6f72 686f  vertexNeighborho\n+00004200: 6f64 2c20 4d41 534b 2661 6d70 3b20 706f  od, MASK&amp; po\n+00004210: 7369 7469 6f6e 4d61 736b 2c3c 2f64 6976  sitionMask,</div\n+00004220: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n+00004230: 6e65 223e 3c61 2069 643d 226c 3030 3134  ne\"><a id=\"l0014\n+00004240: 3322 206e 616d 653d 226c 3030 3134 3322  3\" name=\"l00143\"\n+00004250: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n+00004260: 3d22 6c69 6e65 6e6f 223e 2020 3134 333c  =\"lineno\">  143<\n+00004270: 2f73 7061 6e3e 2020 2020 2020 2020 2020  /span>          \n+00004280: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00004290: 2020 2020 2020 3c61 2063 6c61 7373 3d22        <a class=\"\n+000042a0: 636f 6465 2068 6c5f 656e 756d 6572 6174  code hl_enumerat\n+000042b0: 696f 6e22 2068 7265 663d 2261 3031 3333  ion\" href=\"a0133\n+000042c0: 332e 6874 6d6c 2361 3131 6663 6435 3165  3.html#a11fcd51e\n+000042d0: 6638 3631 3138 6636 3565 3630 3363 3134  f86118f65e603c14\n+000042e0: 3734 3337 3761 3738 223e 4372 6561 7365  74377a78\">Crease\n+000042f0: 3a3a 5275 6c65 3c2f 613e 2076 6572 7465  ::Rule</a> verte\n+00004300: 7852 756c 6529 203c 7370 616e 2063 6c61  xRule) <span cla\n+00004310: 7373 3d22 6b65 7977 6f72 6422 3e63 6f6e  ss=\"keyword\">con\n+00004320: 7374 3c2f 7370 616e 3e3b 3c2f 6469 763e  st</span>;</div>\n+00004330: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n+00004340: 6522 3e3c 6120 6964 3d22 6c30 3031 3434  e\"><a id=\"l00144\n+00004350: 2220 6e61 6d65 3d22 6c30 3031 3434 223e  \" name=\"l00144\">\n+00004360: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n+00004370: 226c 696e 656e 6f22 3e20 2031 3434 3c2f  \"lineno\">  144</\n+00004380: 7370 616e 3e20 3c2f 6469 763e 0a3c 6469  span> </div>.<di\n+00004390: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n+000043a0: 6120 6964 3d22 6c30 3031 3435 2220 6e61  a id=\"l00145\" na\n+000043b0: 6d65 3d22 6c30 3031 3435 223e 3c2f 613e  me=\"l00145\"></a>\n+000043c0: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n+000043d0: 656e 6f22 3e20 2031 3435 3c2f 7370 616e  eno\">  145</span\n+000043e0: 3e20 2020 203c 7370 616e 2063 6c61 7373  >    <span class\n+000043f0: 3d22 6b65 7977 6f72 6422 3e74 656d 706c  =\"keyword\">templ\n+00004400: 6174 653c 2f73 7061 6e3e 2026 6c74 3b3c  ate</span> &lt;<\n+00004410: 7370 616e 2063 6c61 7373 3d22 6b65 7977  span class=\"keyw\n+00004420: 6f72 6422 3e74 7970 656e 616d 653c 2f73  ord\">typename</s\n+00004430: 7061 6e3e 2056 4552 5445 582c 203c 7370  pan> VERTEX, <sp\n+00004440: 616e 2063 6c61 7373 3d22 6b65 7977 6f72  an class=\"keywor\n+00004450: 6422 3e74 7970 656e 616d 653c 2f73 7061  d\">typename</spa\n+00004460: 6e3e 204d 4153 4b26 6774 3b3c 2f64 6976  n> MASK&gt;</div\n+00004470: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n+00004480: 6e65 223e 3c61 2069 643d 226c 3030 3134  ne\"><a id=\"l0014\n+00004490: 3622 206e 616d 653d 226c 3030 3134 3622  6\" name=\"l00146\"\n+000044a0: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n+000044b0: 3d22 6c69 6e65 6e6f 223e 2020 3134 363c  =\"lineno\">  146<\n+000044c0: 2f73 7061 6e3e 2020 2020 3c73 7061 6e20  /span>    <span \n+000044d0: 636c 6173 733d 226b 6579 776f 7264 7479  class=\"keywordty\n+000044e0: 7065 223e 766f 6964 3c2f 7370 616e 3e20  pe\">void</span> \n+000044f0: 3c61 2063 6c61 7373 3d22 636f 6465 2068  <a class=\"code h\n+00004500: 6c5f 6675 6e63 7469 6f6e 2220 6872 6566  l_function\" href\n+00004510: 3d22 6130 3133 3431 2e68 746d 6c23 6133  =\"a01341.html#a3\n+00004520: 6338 6437 3633 6361 3138 6334 3537 6339  c8d763ca18c457c9\n+00004530: 3336 6462 3065 3437 3939 3734 3666 3222  36db0e4799746f2\"\n+00004540: 3e43 6f6d 7075 7465 5665 7274 6578 4c69  >ComputeVertexLi\n+00004550: 6d69 744d 6173 6b3c 2f61 3e28 5645 5254  mitMask</a>(VERT\n+00004560: 4558 203c 7370 616e 2063 6c61 7373 3d22  EX <span class=\"\n+00004570: 6b65 7977 6f72 6422 3e63 6f6e 7374 3c2f  keyword\">const</\n+00004580: 7370 616e 3e26 616d 703b 2076 6572 7465  span>&amp; verte\n+00004590: 784e 6569 6768 626f 7268 6f6f 642c 204d  xNeighborhood, M\n+000045a0: 4153 4b26 616d 703b 2070 6f73 6974 696f  ASK&amp; positio\n+000045b0: 6e4d 6173 6b2c 3c2f 6469 763e 0a3c 6469  nMask,</div>.<di\n+000045c0: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n+000045d0: 6120 6964 3d22 6c30 3031 3437 2220 6e61  a id=\"l00147\" na\n+000045e0: 6d65 3d22 6c30 3031 3437 223e 3c2f 613e  me=\"l00147\"></a>\n+000045f0: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n+00004600: 656e 6f22 3e20 2031 3437 3c2f 7370 616e  eno\">  147</span\n+00004610: 3e20 2020 2020 2020 2020 2020 2020 2020  >               \n+00004620: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00004630: 204d 4153 4b26 616d 703b 2074 616e 6765   MASK&amp; tange\n+00004640: 6e74 314d 6173 6b2c 204d 4153 4b26 616d  nt1Mask, MASK&am\n+00004650: 703b 2074 616e 6765 6e74 324d 6173 6b2c  p; tangent2Mask,\n+00004660: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n+00004670: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n+00004680: 6c30 3031 3438 2220 6e61 6d65 3d22 6c30  l00148\" name=\"l0\n+00004690: 3031 3438 223e 3c2f 613e 3c73 7061 6e20  0148\"></a><span \n+000046a0: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n+000046b0: 2031 3438 3c2f 7370 616e 3e20 2020 2020   148</span>     \n+000046c0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000046d0: 2020 2020 2020 2020 2020 203c 6120 636c             <a cl\n+000046e0: 6173 733d 2263 6f64 6520 686c 5f65 6e75  ass=\"code hl_enu\n+000046f0: 6d65 7261 7469 6f6e 2220 6872 6566 3d22  meration\" href=\"\n+00004700: 6130 3133 3333 2e68 746d 6c23 6131 3166  a01333.html#a11f\n+00004710: 6364 3531 6566 3836 3131 3866 3635 6536  cd51ef86118f65e6\n+00004720: 3033 6331 3437 3433 3737 6137 3822 3e43  03c1474377a78\">C\n+00004730: 7265 6173 653a 3a52 756c 653c 2f61 3e20  rease::Rule</a> \n+00004740: 7665 7274 6578 5275 6c65 2920 3c73 7061  vertexRule) <spa\n+00004750: 6e20 636c 6173 733d 226b 6579 776f 7264  n class=\"keyword\n+00004760: 223e 636f 6e73 743c 2f73 7061 6e3e 3b3c  \">const</span>;<\n+00004770: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n+00004780: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n+00004790: 3030 3134 3922 206e 616d 653d 226c 3030  00149\" name=\"l00\n+000047a0: 3134 3922 3e3c 2f61 3e3c 7370 616e 2063  149\"></a><span c\n+000047b0: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n+000047c0: 3134 393c 2f73 7061 6e3e 203c 2f64 6976  149</span> </div\n+000047d0: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n+000047e0: 6e65 223e 3c61 2069 643d 226c 3030 3135  ne\"><a id=\"l0015\n+000047f0: 3022 206e 616d 653d 226c 3030 3135 3022  0\" name=\"l00150\"\n+00004800: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n+00004810: 3d22 6c69 6e65 6e6f 223e 2020 3135 303c  =\"lineno\">  150<\n+00004820: 2f73 7061 6e3e 2020 2020 3c73 7061 6e20  /span>    <span \n+00004830: 636c 6173 733d 2263 6f6d 6d65 6e74 223e  class=\"comment\">\n+00004840: 2f2f 3c2f 7370 616e 3e3c 2f64 6976 3e0a  //</span></div>.\n+00004850: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n+00004860: 223e 3c61 2069 643d 226c 3030 3135 3122  \"><a id=\"l00151\"\n+00004870: 206e 616d 653d 226c 3030 3135 3122 3e3c   name=\"l00151\"><\n+00004880: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n+00004890: 6c69 6e65 6e6f 223e 2020 3135 313c 2f73  lineno\">  151</s\n+000048a0: 7061 6e3e 2020 2020 3c73 7061 6e20 636c  pan>    <span cl\n+000048b0: 6173 733d 2263 6f6d 6d65 6e74 223e 2f2f  ass=\"comment\">//\n+000048c0: 2020 5374 6174 6963 206d 6574 686f 6473    Static methods\n+000048d0: 2064 6566 696e 696e 6720 7472 6169 7473   defining traits\n+000048e0: 2f70 726f 7065 7274 6965 7320 6f66 2074  /properties of t\n+000048f0: 6865 2073 6368 656d 653a 3c2f 7370 616e  he scheme:</span\n+00004900: 3e3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ></div>.<div cla\n+00004910: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n+00004920: 226c 3030 3135 3222 206e 616d 653d 226c  \"l00152\" name=\"l\n+00004930: 3030 3135 3222 3e3c 2f61 3e3c 7370 616e  00152\"></a><span\n+00004940: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n+00004950: 2020 3135 323c 2f73 7061 6e3e 2020 2020    152</span>    \n+00004960: 3c73 7061 6e20 636c 6173 733d 2263 6f6d  <span class=\"com\n+00004970: 6d65 6e74 223e 2f2f 3c2f 7370 616e 3e3c  ment\">//</span><\n+00004980: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n+00004990: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n+000049a0: 3030 3135 3322 206e 616d 653d 226c 3030  00153\" name=\"l00\n+000049b0: 3135 3322 3e3c 2f61 3e3c 7370 616e 2063  153\"></a><span c\n+000049c0: 6c61 7373 3d22 6c69 6e65 6e6f 223e 3c61  lass=\"lineno\"><a\n+000049d0: 2063 6c61 7373 3d22 6c69 6e65 2220 6872   class=\"line\" hr\n+000049e0: 6566 3d22 6130 3133 3431 2e68 746d 6c23  ef=\"a01341.html#\n+000049f0: 6131 3462 3937 6464 6465 3566 6261 3331  a14b97ddde5fba31\n+00004a00: 6361 3766 3933 3335 3038 6565 3634 3964  ca7f933508ee649d\n+00004a10: 6122 3e20 2031 3533 3c2f 613e 3c2f 7370  a\">  153</a></sp\n+00004a20: 616e 3e20 2020 203c 7370 616e 2063 6c61  an>    <span cla\n+00004a30: 7373 3d22 6b65 7977 6f72 6422 3e73 7461  ss=\"keyword\">sta\n+00004a40: 7469 633c 2f73 7061 6e3e 203c 6120 636c  tic</span> <a cl\n+00004a50: 6173 733d 2263 6f64 6520 686c 5f65 6e75  ass=\"code hl_enu\n+00004a60: 6d65 7261 7469 6f6e 2220 6872 6566 3d22  meration\" href=\"\n+00004a70: 6130 3039 3133 2e68 746d 6c23 6136 3165  a00913.html#a61e\n+00004a80: 6632 6638 6637 3635 6261 3137 6638 3033  f2f8f765ba17f803\n+00004a90: 3662 6363 3066 3066 6138 3837 6222 3e53  6bcc0f0fa887b\">S\n+00004aa0: 706c 6974 3c2f 613e 203c 6120 636c 6173  plit</a> <a clas\n+00004ab0: 733d 2263 6f64 6520 686c 5f66 756e 6374  s=\"code hl_funct\n+00004ac0: 696f 6e22 2068 7265 663d 2261 3031 3334  ion\" href=\"a0134\n+00004ad0: 312e 6874 6d6c 2361 3134 6239 3764 6464  1.html#a14b97ddd\n+00004ae0: 6535 6662 6133 3163 6137 6639 3333 3530  e5fba31ca7f93350\n+00004af0: 3865 6536 3439 6461 223e 4765 7454 6f70  8ee649da\">GetTop\n+00004b00: 6f6c 6f67 6963 616c 5370 6c69 7454 7970  ologicalSplitTyp\n+00004b10: 653c 2f61 3e28 293b 3c2f 6469 763e 0a3c  e</a>();</div>.<\n+00004b20: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n+00004b30: 3e3c 6120 6964 3d22 6c30 3031 3534 2220  ><a id=\"l00154\" \n+00004b40: 6e61 6d65 3d22 6c30 3031 3534 223e 3c2f  name=\"l00154\"></\n+00004b50: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n+00004b60: 696e 656e 6f22 3e3c 6120 636c 6173 733d  ineno\"><a class=\n+00004b70: 226c 696e 6522 2068 7265 663d 2261 3031  \"line\" href=\"a01\n+00004b80: 3334 312e 6874 6d6c 2361 3533 3130 3034  341.html#a531004\n+00004b90: 3731 3663 3037 6161 6435 3433 3663 6232  716c07aad5436cb2\n+00004ba0: 6462 3237 6531 6563 3234 223e 2020 3135  db27e1ec24\">  15\n+00004bb0: 343c 2f61 3e3c 2f73 7061 6e3e 2020 2020  4</a></span>    \n+00004bc0: 3c73 7061 6e20 636c 6173 733d 226b 6579  <span class=\"key\n+00004bd0: 776f 7264 223e 7374 6174 6963 3c2f 7370  word\">static</sp\n+00004be0: 616e 3e20 3c73 7061 6e20 636c 6173 733d  an> <span class=\n+00004bf0: 226b 6579 776f 7264 7479 7065 223e 696e  \"keywordtype\">in\n+00004c00: 743c 2f73 7061 6e3e 2020 203c 6120 636c  t</span>   <a cl\n+00004c10: 6173 733d 2263 6f64 6520 686c 5f66 756e  ass=\"code hl_fun\n+00004c20: 6374 696f 6e22 2068 7265 663d 2261 3031  ction\" href=\"a01\n+00004c30: 3334 312e 6874 6d6c 2361 3533 3130 3034  341.html#a531004\n+00004c40: 3731 3663 3037 6161 6435 3433 3663 6232  716c07aad5436cb2\n+00004c50: 6462 3237 6531 6563 3234 223e 4765 7452  db27e1ec24\">GetR\n+00004c60: 6567 756c 6172 4661 6365 5369 7a65 3c2f  egularFaceSize</\n+00004c70: 613e 2829 3b3c 2f64 6976 3e0a 3c64 6976  a>();</div>.<div\n+00004c80: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n+00004c90: 2069 643d 226c 3030 3135 3522 206e 616d   id=\"l00155\" nam\n+00004ca0: 653d 226c 3030 3135 3522 3e3c 2f61 3e3c  e=\"l00155\"></a><\n+00004cb0: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n+00004cc0: 6e6f 223e 3c61 2063 6c61 7373 3d22 6c69  no\"><a class=\"li\n+00004cd0: 6e65 2220 6872 6566 3d22 6130 3133 3431  ne\" href=\"a01341\n+00004ce0: 2e68 746d 6c23 6138 6637 6539 3833 6232  .html#a8f7e983b2\n+00004cf0: 3139 3561 6336 6233 3838 6337 6136 6462  195ac6b388c7a6db\n+00004d00: 3137 6638 6362 3022 3e20 2031 3535 3c2f  17f8cb0\">  155</\n+00004d10: 613e 3c2f 7370 616e 3e20 2020 203c 7370  a></span>    <sp\n+00004d20: 616e 2063 6c61 7373 3d22 6b65 7977 6f72  an class=\"keywor\n+00004d30: 6422 3e73 7461 7469 633c 2f73 7061 6e3e  d\">static</span>\n+00004d40: 203c 7370 616e 2063 6c61 7373 3d22 6b65   <span class=\"ke\n+00004d50: 7977 6f72 6474 7970 6522 3e69 6e74 3c2f  ywordtype\">int</\n+00004d60: 7370 616e 3e20 2020 3c61 2063 6c61 7373  span>   <a class\n+00004d70: 3d22 636f 6465 2068 6c5f 6675 6e63 7469  =\"code hl_functi\n+00004d80: 6f6e 2220 6872 6566 3d22 6130 3133 3431  on\" href=\"a01341\n+00004d90: 2e68 746d 6c23 6138 6637 6539 3833 6232  .html#a8f7e983b2\n+00004da0: 3139 3561 6336 6233 3838 6337 6136 6462  195ac6b388c7a6db\n+00004db0: 3137 6638 6362 3022 3e47 6574 5265 6775  17f8cb0\">GetRegu\n+00004dc0: 6c61 7256 6572 7465 7856 616c 656e 6365  larVertexValence\n+00004dd0: 3c2f 613e 2829 3b3c 2f64 6976 3e0a 3c64  </a>();</div>.<d\n+00004de0: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n+00004df0: 3c61 2069 643d 226c 3030 3135 3622 206e  <a id=\"l00156\" n\n+00004e00: 616d 653d 226c 3030 3135 3622 3e3c 2f61  ame=\"l00156\"></a\n+00004e10: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n+00004e20: 6e65 6e6f 223e 3c61 2063 6c61 7373 3d22  neno\"><a class=\"\n+00004e30: 6c69 6e65 2220 6872 6566 3d22 6130 3133  line\" href=\"a013\n+00004e40: 3431 2e68 746d 6c23 6137 3363 6635 3165  41.html#a73cf51e\n+00004e50: 3433 3135 6361 3836 6535 6530 6133 3935  4315ca86e5e0a395\n+00004e60: 3463 3932 6638 6637 3422 3e20 2031 3536  4c92f8f74\">  156\n+00004e70: 3c2f 613e 3c2f 7370 616e 3e20 2020 203c  </a></span>    <\n+00004e80: 7370 616e 2063 6c61 7373 3d22 6b65 7977  span class=\"keyw\n+00004e90: 6f72 6422 3e73 7461 7469 633c 2f73 7061  ord\">static</spa\n+00004ea0: 6e3e 203c 7370 616e 2063 6c61 7373 3d22  n> <span class=\"\n+00004eb0: 6b65 7977 6f72 6474 7970 6522 3e69 6e74  keywordtype\">int\n+00004ec0: 3c2f 7370 616e 3e20 2020 3c61 2063 6c61  </span>   <a cla\n+00004ed0: 7373 3d22 636f 6465 2068 6c5f 6675 6e63  ss=\"code hl_func\n+00004ee0: 7469 6f6e 2220 6872 6566 3d22 6130 3133  tion\" href=\"a013\n+00004ef0: 3431 2e68 746d 6c23 6137 3363 6635 3165  41.html#a73cf51e\n+00004f00: 3433 3135 6361 3836 6535 6530 6133 3935  4315ca86e5e0a395\n+00004f10: 3463 3932 6638 6637 3422 3e47 6574 4c6f  4c92f8f74\">GetLo\n+00004f20: 6361 6c4e 6569 6768 626f 7268 6f6f 6453  calNeighborhoodS\n+00004f30: 697a 653c 2f61 3e28 293b 3c2f 6469 763e  ize</a>();</div>\n+00004f40: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n+00004f50: 6522 3e3c 6120 6964 3d22 6c30 3031 3537  e\"><a id=\"l00157\n+00004f60: 2220 6e61 6d65 3d22 6c30 3031 3537 223e  \" name=\"l00157\">\n+00004f70: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n+00004f80: 226c 696e 656e 6f22 3e20 2031 3537 3c2f  \"lineno\">  157</\n+00004f90: 7370 616e 3e20 3c2f 6469 763e 0a3c 6469  span> </div>.<di\n+00004fa0: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n+00004fb0: 6120 6964 3d22 6c30 3031 3538 2220 6e61  a id=\"l00158\" na\n+00004fc0: 6d65 3d22 6c30 3031 3538 223e 3c2f 613e  me=\"l00158\"></a>\n+00004fd0: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n+00004fe0: 656e 6f22 3e20 2031 3538 3c2f 7370 616e  eno\">  158</span\n+00004ff0: 3e3c 7370 616e 2063 6c61 7373 3d22 6b65  ><span class=\"ke\n+00005000: 7977 6f72 6422 3e70 726f 7465 6374 6564  yword\">protected\n+00005010: 3c2f 7370 616e 3e3a 3c2f 6469 763e 0a3c  </span>:</div>.<\n+00005020: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n+00005030: 3e3c 6120 6964 3d22 6c30 3031 3539 2220  ><a id=\"l00159\" \n+00005040: 6e61 6d65 3d22 6c30 3031 3539 223e 3c2f  name=\"l00159\"></\n+00005050: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n+00005060: 696e 656e 6f22 3e20 2031 3539 3c2f 7370  ineno\">  159</sp\n+00005070: 616e 3e20 3c2f 6469 763e 0a3c 6469 7620  an> </div>.<div \n+00005080: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n+00005090: 6964 3d22 6c30 3031 3630 2220 6e61 6d65  id=\"l00160\" name\n+000050a0: 3d22 6c30 3031 3630 223e 3c2f 613e 3c73  =\"l00160\"></a><s\n+000050b0: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n+000050c0: 6f22 3e20 2031 3630 3c2f 7370 616e 3e20  o\">  160</span> \n+000050d0: 2020 203c 7370 616e 2063 6c61 7373 3d22     <span class=\"\n+000050e0: 636f 6d6d 656e 7422 3e2f 2f3c 2f73 7061  comment\">//</spa\n+000050f0: 6e3e 3c2f 6469 763e 0a3c 6469 7620 636c  n></div>.<div cl\n+00005100: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n+00005110: 3d22 6c30 3031 3631 2220 6e61 6d65 3d22  =\"l00161\" name=\"\n+00005120: 6c30 3031 3631 223e 3c2f 613e 3c73 7061  l00161\"></a><spa\n+00005130: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n+00005140: 3e20 2031 3631 3c2f 7370 616e 3e20 2020  >  161</span>   \n+00005150: 203c 7370 616e 2063 6c61 7373 3d22 636f   <span class=\"co\n+00005160: 6d6d 656e 7422 3e2f 2f20 2053 7570 706f  mment\">//  Suppo\n+00005170: 7274 696e 6720 696e 7465 726e 616c 206d  rting internal m\n+00005180: 6574 686f 6473 202d 2d20 6f70 7469 6f6e  ethods -- option\n+00005190: 616c 6c79 2069 6d70 6c65 6d65 6e74 6564  ally implemented\n+000051a0: 2c20 6465 7065 6e64 696e 6720 6f6e 2073  , depending on s\n+000051b0: 7065 6369 616c 697a 6174 696f 6e3a 3c2f  pecialization:</\n+000051c0: 7370 616e 3e3c 2f64 6976 3e0a 3c64 6976  span></div>.<div\n+000051d0: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n+000051e0: 2069 643d 226c 3030 3136 3222 206e 616d   id=\"l00162\" nam\n+000051f0: 653d 226c 3030 3136 3222 3e3c 2f61 3e3c  e=\"l00162\"></a><\n+00005200: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n+00005210: 6e6f 223e 2020 3136 323c 2f73 7061 6e3e  no\">  162</span>\n+00005220: 2020 2020 3c73 7061 6e20 636c 6173 733d      <span class=\n+00005230: 2263 6f6d 6d65 6e74 223e 2f2f 3c2f 7370  \"comment\">//</sp\n+00005240: 616e 3e3c 2f64 6976 3e0a 3c64 6976 2063  an></div>.<div c\n+00005250: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n+00005260: 643d 226c 3030 3136 3322 206e 616d 653d  d=\"l00163\" name=\n+00005270: 226c 3030 3136 3322 3e3c 2f61 3e3c 7370  \"l00163\"></a><sp\n+00005280: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n+00005290: 223e 2020 3136 333c 2f73 7061 6e3e 203c  \">  163</span> <\n+000052a0: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n+000052b0: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n+000052c0: 3030 3136 3422 206e 616d 653d 226c 3030  00164\" name=\"l00\n+000052d0: 3136 3422 3e3c 2f61 3e3c 7370 616e 2063  164\"></a><span c\n+000052e0: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n+000052f0: 3136 343c 2f73 7061 6e3e 2020 2020 3c73  164</span>    <s\n+00005300: 7061 6e20 636c 6173 733d 2263 6f6d 6d65  pan class=\"comme\n+00005310: 6e74 223e 2f2f 2020 5375 6264 6976 6973  nt\">//  Subdivis\n+00005320: 696f 6e2f 7265 6669 6e65 6d65 6e74 206d  ion/refinement m\n+00005330: 6173 6b73 202d 2d20 7477 6f20 666f 7220  asks -- two for \n+00005340: 6564 6765 2d76 6572 7469 6365 7320 616e  edge-vertices an\n+00005350: 6420 7468 7265 6520 666f 7220 7665 7274  d three for vert\n+00005360: 6578 2d76 6572 7469 6365 733a 3c2f 7370  ex-vertices:</sp\n+00005370: 616e 3e3c 2f64 6976 3e0a 3c64 6976 2063  an></div>.<div c\n+00005380: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n+00005390: 643d 226c 3030 3136 3522 206e 616d 653d  d=\"l00165\" name=\n+000053a0: 226c 3030 3136 3522 3e3c 2f61 3e3c 7370  \"l00165\"></a><sp\n+000053b0: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n+000053c0: 223e 2020 3136 353c 2f73 7061 6e3e 2020  \">  165</span>  \n+000053d0: 2020 3c73 7061 6e20 636c 6173 733d 2263    <span class=\"c\n+000053e0: 6f6d 6d65 6e74 223e 2f2f 3c2f 7370 616e  omment\">//</span\n+000053f0: 3e3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ></div>.<div cla\n+00005400: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n+00005410: 226c 3030 3136 3622 206e 616d 653d 226c  \"l00166\" name=\"l\n+00005420: 3030 3136 3622 3e3c 2f61 3e3c 7370 616e  00166\"></a><span\n+00005430: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n+00005440: 2020 3136 363c 2f73 7061 6e3e 2020 2020    166</span>    \n+00005450: 3c73 7061 6e20 636c 6173 733d 226b 6579  <span class=\"key\n+00005460: 776f 7264 223e 7465 6d70 6c61 7465 3c2f  word\">template</\n+00005470: 7370 616e 3e20 266c 743b 3c73 7061 6e20  span> &lt;<span \n+00005480: 636c 6173 733d 226b 6579 776f 7264 223e  class=\"keyword\">\n+00005490: 7479 7065 6e61 6d65 3c2f 7370 616e 3e20  typename</span> \n+000054a0: 4544 4745 2c20 3c73 7061 6e20 636c 6173  EDGE, <span clas\n+000054b0: 733d 226b 6579 776f 7264 223e 7479 7065  s=\"keyword\">type\n+000054c0: 6e61 6d65 3c2f 7370 616e 3e20 4d41 534b  name</span> MASK\n+000054d0: 2667 743b 3c2f 6469 763e 0a3c 6469 7620  &gt;</div>.<div \n+000054e0: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n+000054f0: 6964 3d22 6c30 3031 3637 2220 6e61 6d65  id=\"l00167\" name\n+00005500: 3d22 6c30 3031 3637 223e 3c2f 613e 3c73  =\"l00167\"></a><s\n+00005510: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n+00005520: 6f22 3e20 2031 3637 3c2f 7370 616e 3e20  o\">  167</span> \n+00005530: 2020 203c 7370 616e 2063 6c61 7373 3d22     <span class=\"\n+00005540: 6b65 7977 6f72 6474 7970 6522 3e76 6f69  keywordtype\">voi\n+00005550: 643c 2f73 7061 6e3e 203c 6120 636c 6173  d</span> <a clas\n+00005560: 733d 2263 6f64 6520 686c 5f66 756e 6374  s=\"code hl_funct\n+00005570: 696f 6e22 2068 7265 663d 2261 3031 3334  ion\" href=\"a0134\n+00005580: 312e 6874 6d6c 2361 3536 3936 3461 3463  1.html#a56964a4c\n+00005590: 3738 3361 6131 3565 6331 6638 3139 3330  783aa15ec1f81930\n+000055a0: 3665 6539 6632 3134 223e 6173 7369 676e  6ee9f214\">assign\n+000055b0: 4372 6561 7365 4d61 736b 466f 7245 6467  CreaseMaskForEdg\n+000055c0: 653c 2f61 3e28 4544 4745 203c 7370 616e  e</a>(EDGE <span\n+000055d0: 2063 6c61 7373 3d22 6b65 7977 6f72 6422   class=\"keyword\"\n+000055e0: 3e63 6f6e 7374 3c2f 7370 616e 3e26 616d  >const</span>&am\n+000055f0: 703b 2065 6467 652c 204d 4153 4b26 616d  p; edge, MASK&am\n+00005600: 703b 206d 6173 6b29 203c 7370 616e 2063  p; mask) <span c\n+00005610: 6c61 7373 3d22 6b65 7977 6f72 6422 3e63  lass=\"keyword\">c\n+00005620: 6f6e 7374 3c2f 7370 616e 3e3b 3c2f 6469  onst</span>;</di\n+00005630: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n+00005640: 696e 6522 3e3c 6120 6964 3d22 6c30 3031  ine\"><a id=\"l001\n+00005650: 3638 2220 6e61 6d65 3d22 6c30 3031 3638  68\" name=\"l00168\n+00005660: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n+00005670: 733d 226c 696e 656e 6f22 3e20 2031 3638  s=\"lineno\">  168\n+00005680: 3c2f 7370 616e 3e20 2020 203c 7370 616e  </span>    <span\n+00005690: 2063 6c61 7373 3d22 6b65 7977 6f72 6422   class=\"keyword\"\n+000056a0: 3e74 656d 706c 6174 653c 2f73 7061 6e3e  >template</span>\n+000056b0: 2026 6c74 3b3c 7370 616e 2063 6c61 7373   &lt;<span class\n+000056c0: 3d22 6b65 7977 6f72 6422 3e74 7970 656e  =\"keyword\">typen\n+000056d0: 616d 653c 2f73 7061 6e3e 2045 4447 452c  ame</span> EDGE,\n+000056e0: 203c 7370 616e 2063 6c61 7373 3d22 6b65   <span class=\"ke\n+000056f0: 7977 6f72 6422 3e74 7970 656e 616d 653c  yword\">typename<\n+00005700: 2f73 7061 6e3e 204d 4153 4b26 6774 3b3c  /span> MASK&gt;<\n+00005710: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n+00005720: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n+00005730: 3030 3136 3922 206e 616d 653d 226c 3030  00169\" name=\"l00\n+00005740: 3136 3922 3e3c 2f61 3e3c 7370 616e 2063  169\"></a><span c\n+00005750: 6c61 7373 3d22 6c69 6e65 6e6f 223e 3c61  lass=\"lineno\"><a\n+00005760: 2063 6c61 7373 3d22 6c69 6e65 2220 6872   class=\"line\" hr\n+00005770: 6566 3d22 6130 3133 3431 2e68 746d 6c23  ef=\"a01341.html#\n+00005780: 6130 3539 6635 6332 6339 3139 3362 6535  a059f5c2c9193be5\n+00005790: 3862 6533 3139 3535 6539 3837 6130 3630  8be31955e987a060\n+000057a0: 3022 3e20 2031 3639 3c2f 613e 3c2f 7370  0\">  169</a></sp\n+000057b0: 616e 3e20 2020 203c 7370 616e 2063 6c61  an>    <span cla\n+000057c0: 7373 3d22 6b65 7977 6f72 6474 7970 6522  ss=\"keywordtype\"\n+000057d0: 3e76 6f69 643c 2f73 7061 6e3e 203c 6120  >void</span> <a \n+000057e0: 636c 6173 733d 2263 6f64 6520 686c 5f66  class=\"code hl_f\n+000057f0: 756e 6374 696f 6e22 2068 7265 663d 2261  unction\" href=\"a\n+00005800: 3031 3334 312e 6874 6d6c 2361 3035 3966  01341.html#a059f\n+00005810: 3563 3263 3931 3933 6265 3538 6265 3331  5c2c9193be58be31\n+00005820: 3935 3565 3938 3761 3036 3030 223e 6173  955e987a0600\">as\n+00005830: 7369 676e 536d 6f6f 7468 4d61 736b 466f  signSmoothMaskFo\n+00005840: 7245 6467 653c 2f61 3e28 4544 4745 203c  rEdge</a>(EDGE <\n+00005850: 7370 616e 2063 6c61 7373 3d22 6b65 7977  span class=\"keyw\n+00005860: 6f72 6422 3e63 6f6e 7374 3c2f 7370 616e  ord\">const</span\n+00005870: 3e26 616d 703b 2065 6467 652c 204d 4153  >&amp; edge, MAS\n+00005880: 4b26 616d 703b 206d 6173 6b29 203c 7370  K&amp; mask) <sp\n+00005890: 616e 2063 6c61 7373 3d22 6b65 7977 6f72  an class=\"keywor\n+000058a0: 6422 3e63 6f6e 7374 3c2f 7370 616e 3e3b  d\">const</span>;\n+000058b0: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n+000058c0: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n+000058d0: 6c30 3031 3730 2220 6e61 6d65 3d22 6c30  l00170\" name=\"l0\n+000058e0: 3031 3730 223e 3c2f 613e 3c73 7061 6e20  0170\"></a><span \n+000058f0: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n+00005900: 2031 3730 3c2f 7370 616e 3e20 3c2f 6469   170</span> </di\n+00005910: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n+00005920: 696e 6522 3e3c 6120 6964 3d22 6c30 3031  ine\"><a id=\"l001\n+00005930: 3731 2220 6e61 6d65 3d22 6c30 3031 3731  71\" name=\"l00171\n+00005940: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n+00005950: 733d 226c 696e 656e 6f22 3e20 2031 3731  s=\"lineno\">  171\n+00005960: 3c2f 7370 616e 3e20 2020 203c 7370 616e  </span>    <span\n+00005970: 2063 6c61 7373 3d22 6b65 7977 6f72 6422   class=\"keyword\"\n+00005980: 3e74 656d 706c 6174 653c 2f73 7061 6e3e  >template</span>\n+00005990: 2026 6c74 3b3c 7370 616e 2063 6c61 7373   &lt;<span class\n+000059a0: 3d22 6b65 7977 6f72 6422 3e74 7970 656e  =\"keyword\">typen\n+000059b0: 616d 653c 2f73 7061 6e3e 2056 4552 5445  ame</span> VERTE\n+000059c0: 582c 203c 7370 616e 2063 6c61 7373 3d22  X, <span class=\"\n+000059d0: 6b65 7977 6f72 6422 3e74 7970 656e 616d  keyword\">typenam\n+000059e0: 653c 2f73 7061 6e3e 204d 4153 4b26 6774  e</span> MASK&gt\n+000059f0: 3b3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ;</div>.<div cla\n+00005a00: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n+00005a10: 226c 3030 3137 3222 206e 616d 653d 226c  \"l00172\" name=\"l\n+00005a20: 3030 3137 3222 3e3c 2f61 3e3c 7370 616e  00172\"></a><span\n+00005a30: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n+00005a40: 2020 3137 323c 2f73 7061 6e3e 2020 2020    172</span>    \n+00005a50: 3c73 7061 6e20 636c 6173 733d 226b 6579  <span class=\"key\n+00005a60: 776f 7264 7479 7065 223e 766f 6964 3c2f  wordtype\">void</\n+00005a70: 7370 616e 3e20 3c61 2063 6c61 7373 3d22  span> <a class=\"\n+00005a80: 636f 6465 2068 6c5f 6675 6e63 7469 6f6e  code hl_function\n+00005a90: 2220 6872 6566 3d22 6130 3133 3431 2e68  \" href=\"a01341.h\n+00005aa0: 746d 6c23 6137 3736 3434 6636 3965 6465  tml#a77644f69ede\n+00005ab0: 3033 6661 3632 3232 3264 3630 6139 3939  03fa62222d60a999\n+00005ac0: 3730 3233 3822 3e61 7373 6967 6e43 6f72  70238\">assignCor\n+00005ad0: 6e65 724d 6173 6b46 6f72 5665 7274 6578  nerMaskForVertex\n+00005ae0: 3c2f 613e 2856 4552 5445 5820 3c73 7061  </a>(VERTEX <spa\n+00005af0: 6e20 636c 6173 733d 226b 6579 776f 7264  n class=\"keyword\n+00005b00: 223e 636f 6e73 743c 2f73 7061 6e3e 2661  \">const</span>&a\n+00005b10: 6d70 3b20 6564 6765 2c20 4d41 534b 2661  mp; edge, MASK&a\n+00005b20: 6d70 3b20 6d61 736b 2920 3c73 7061 6e20  mp; mask) <span \n+00005b30: 636c 6173 733d 226b 6579 776f 7264 223e  class=\"keyword\">\n+00005b40: 636f 6e73 743c 2f73 7061 6e3e 3b3c 2f64  const</span>;</d\n+00005b50: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n+00005b60: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n+00005b70: 3137 3322 206e 616d 653d 226c 3030 3137  173\" name=\"l0017\n+00005b80: 3322 3e3c 2f61 3e3c 7370 616e 2063 6c61  3\"></a><span cla\n+00005b90: 7373 3d22 6c69 6e65 6e6f 223e 2020 3137  ss=\"lineno\">  17\n+00005ba0: 333c 2f73 7061 6e3e 2020 2020 3c73 7061  3</span>    <spa\n+00005bb0: 6e20 636c 6173 733d 226b 6579 776f 7264  n class=\"keyword\n+00005bc0: 223e 7465 6d70 6c61 7465 3c2f 7370 616e  \">template</span\n+00005bd0: 3e20 266c 743b 3c73 7061 6e20 636c 6173  > &lt;<span clas\n+00005be0: 733d 226b 6579 776f 7264 223e 7479 7065  s=\"keyword\">type\n+00005bf0: 6e61 6d65 3c2f 7370 616e 3e20 5645 5254  name</span> VERT\n+00005c00: 4558 2c20 3c73 7061 6e20 636c 6173 733d  EX, <span class=\n+00005c10: 226b 6579 776f 7264 223e 7479 7065 6e61  \"keyword\">typena\n+00005c20: 6d65 3c2f 7370 616e 3e20 4d41 534b 2667  me</span> MASK&g\n+00005c30: 743b 3c2f 6469 763e 0a3c 6469 7620 636c  t;</div>.<div cl\n+00005c40: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n+00005c50: 3d22 6c30 3031 3734 2220 6e61 6d65 3d22  =\"l00174\" name=\"\n+00005c60: 6c30 3031 3734 223e 3c2f 613e 3c73 7061  l00174\"></a><spa\n+00005c70: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n+00005c80: 3e3c 6120 636c 6173 733d 226c 696e 6522  ><a class=\"line\"\n+00005c90: 2068 7265 663d 2261 3031 3334 312e 6874   href=\"a01341.ht\n+00005ca0: 6d6c 2361 3234 3339 6537 3833 3733 6439  ml#a2439e78373d9\n+00005cb0: 6466 6436 6164 3361 6233 3733 6337 6333  dfd6ad3ab373c7c3\n+00005cc0: 3264 6363 223e 2020 3137 343c 2f61 3e3c  2dcc\">  174</a><\n+00005cd0: 2f73 7061 6e3e 2020 2020 3c73 7061 6e20  /span>    <span \n+00005ce0: 636c 6173 733d 226b 6579 776f 7264 7479  class=\"keywordty\n+00005cf0: 7065 223e 766f 6964 3c2f 7370 616e 3e20  pe\">void</span> \n+00005d00: 3c61 2063 6c61 7373 3d22 636f 6465 2068  <a class=\"code h\n+00005d10: 6c5f 6675 6e63 7469 6f6e 2220 6872 6566  l_function\" href\n+00005d20: 3d22 6130 3133 3431 2e68 746d 6c23 6132  =\"a01341.html#a2\n+00005d30: 3433 3965 3738 3337 3364 3964 6664 3661  439e78373d9dfd6a\n+00005d40: 6433 6162 3337 3363 3763 3332 6463 6322  d3ab373c7c32dcc\"\n+00005d50: 3e61 7373 6967 6e43 7265 6173 654d 6173  >assignCreaseMas\n+00005d60: 6b46 6f72 5665 7274 6578 3c2f 613e 2856  kForVertex</a>(V\n+00005d70: 4552 5445 5820 3c73 7061 6e20 636c 6173  ERTEX <span clas\n+00005d80: 733d 226b 6579 776f 7264 223e 636f 6e73  s=\"keyword\">cons\n+00005d90: 743c 2f73 7061 6e3e 2661 6d70 3b20 6564  t</span>&amp; ed\n+00005da0: 6765 2c20 4d41 534b 2661 6d70 3b20 6d61  ge, MASK&amp; ma\n+00005db0: 736b 2c20 3c73 7061 6e20 636c 6173 733d  sk, <span class=\n+00005dc0: 226b 6579 776f 7264 7479 7065 223e 696e  \"keywordtype\">in\n+00005dd0: 743c 2f73 7061 6e3e 203c 7370 616e 2063  t</span> <span c\n+00005de0: 6c61 7373 3d22 6b65 7977 6f72 6422 3e63  lass=\"keyword\">c\n+00005df0: 6f6e 7374 3c2f 7370 616e 3e20 6372 6561  onst</span> crea\n+00005e00: 7365 456e 6473 5b32 5d29 203c 7370 616e  seEnds[2]) <span\n+00005e10: 2063 6c61 7373 3d22 6b65 7977 6f72 6422   class=\"keyword\"\n+00005e20: 3e63 6f6e 7374 3c2f 7370 616e 3e3b 3c2f  >const</span>;</\n+00005e30: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n+00005e40: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n+00005e50: 3031 3735 2220 6e61 6d65 3d22 6c30 3031  0175\" name=\"l001\n+00005e60: 3735 223e 3c2f 613e 3c73 7061 6e20 636c  75\"></a><span cl\n+00005e70: 6173 733d 226c 696e 656e 6f22 3e20 2031  ass=\"lineno\">  1\n+00005e80: 3735 3c2f 7370 616e 3e20 2020 203c 7370  75</span>    <sp\n+00005e90: 616e 2063 6c61 7373 3d22 6b65 7977 6f72  an class=\"keywor\n+00005ea0: 6422 3e74 656d 706c 6174 653c 2f73 7061  d\">template</spa\n+00005eb0: 6e3e 2026 6c74 3b3c 7370 616e 2063 6c61  n> &lt;<span cla\n+00005ec0: 7373 3d22 6b65 7977 6f72 6422 3e74 7970  ss=\"keyword\">typ\n+00005ed0: 656e 616d 653c 2f73 7061 6e3e 2056 4552  ename</span> VER\n+00005ee0: 5445 582c 203c 7370 616e 2063 6c61 7373  TEX, <span class\n+00005ef0: 3d22 6b65 7977 6f72 6422 3e74 7970 656e  =\"keyword\">typen\n+00005f00: 616d 653c 2f73 7061 6e3e 204d 4153 4b26  ame</span> MASK&\n+00005f10: 6774 3b3c 2f64 6976 3e0a 3c64 6976 2063  gt;</div>.<div c\n+00005f20: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n+00005f30: 643d 226c 3030 3137 3622 206e 616d 653d  d=\"l00176\" name=\n+00005f40: 226c 3030 3137 3622 3e3c 2f61 3e3c 7370  \"l00176\"></a><sp\n+00005f50: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n+00005f60: 223e 3c61 2063 6c61 7373 3d22 6c69 6e65  \"><a class=\"line\n+00005f70: 2220 6872 6566 3d22 6130 3133 3431 2e68  \" href=\"a01341.h\n+00005f80: 746d 6c23 6138 3437 3838 6135 6139 3366  tml#a84788a5a93f\n+00005f90: 3137 6536 3438 3130 3331 3233 6339 6634  17e648103123c9f4\n+00005fa0: 6133 3366 3922 3e20 2031 3736 3c2f 613e  a33f9\">  176</a>\n+00005fb0: 3c2f 7370 616e 3e20 2020 203c 7370 616e  </span>    <span\n+00005fc0: 2063 6c61 7373 3d22 6b65 7977 6f72 6474   class=\"keywordt\n+00005fd0: 7970 6522 3e76 6f69 643c 2f73 7061 6e3e  ype\">void</span>\n+00005fe0: 203c 6120 636c 6173 733d 2263 6f64 6520   <a class=\"code \n+00005ff0: 686c 5f66 756e 6374 696f 6e22 2068 7265  hl_function\" hre\n+00006000: 663d 2261 3031 3334 312e 6874 6d6c 2361  f=\"a01341.html#a\n+00006010: 3834 3738 3861 3561 3933 6631 3765 3634  84788a5a93f17e64\n+00006020: 3831 3033 3132 3363 3966 3461 3333 6639  8103123c9f4a33f9\n+00006030: 223e 6173 7369 676e 536d 6f6f 7468 4d61  \">assignSmoothMa\n+00006040: 736b 466f 7256 6572 7465 783c 2f61 3e28  skForVertex</a>(\n+00006050: 5645 5254 4558 203c 7370 616e 2063 6c61  VERTEX <span cla\n+00006060: 7373 3d22 6b65 7977 6f72 6422 3e63 6f6e  ss=\"keyword\">con\n+00006070: 7374 3c2f 7370 616e 3e26 616d 703b 2065  st</span>&amp; e\n+00006080: 6467 652c 204d 4153 4b26 616d 703b 206d  dge, MASK&amp; m\n+00006090: 6173 6b29 203c 7370 616e 2063 6c61 7373  ask) <span class\n+000060a0: 3d22 6b65 7977 6f72 6422 3e63 6f6e 7374  =\"keyword\">const\n+000060b0: 3c2f 7370 616e 3e3b 3c2f 6469 763e 0a3c  </span>;</div>.<\n+000060c0: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n+000060d0: 3e3c 6120 6964 3d22 6c30 3031 3737 2220  ><a id=\"l00177\" \n+000060e0: 6e61 6d65 3d22 6c30 3031 3737 223e 3c2f  name=\"l00177\"></\n+000060f0: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n+00006100: 696e 656e 6f22 3e20 2031 3737 3c2f 7370  ineno\">  177</sp\n+00006110: 616e 3e20 3c2f 6469 763e 0a3c 6469 7620  an> </div>.<div \n+00006120: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n+00006130: 6964 3d22 6c30 3031 3738 2220 6e61 6d65  id=\"l00178\" name\n+00006140: 3d22 6c30 3031 3738 223e 3c2f 613e 3c73  =\"l00178\"></a><s\n+00006150: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n+00006160: 6f22 3e20 2031 3738 3c2f 7370 616e 3e20  o\">  178</span> \n+00006170: 2020 203c 7370 616e 2063 6c61 7373 3d22     <span class=\"\n+00006180: 636f 6d6d 656e 7422 3e2f 2f3c 2f73 7061  comment\">//</spa\n+00006190: 6e3e 3c2f 6469 763e 0a3c 6469 7620 636c  n></div>.<div cl\n+000061a0: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n+000061b0: 3d22 6c30 3031 3739 2220 6e61 6d65 3d22  =\"l00179\" name=\"\n+000061c0: 6c30 3031 3739 223e 3c2f 613e 3c73 7061  l00179\"></a><spa\n+000061d0: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n+000061e0: 3e20 2031 3739 3c2f 7370 616e 3e20 2020  >  179</span>   \n+000061f0: 203c 7370 616e 2063 6c61 7373 3d22 636f   <span class=\"co\n+00006200: 6d6d 656e 7422 3e2f 2f20 204c 696d 6974  mment\">//  Limit\n+00006210: 206d 6173 6b73 2066 6f72 2070 6f73 6974   masks for posit\n+00006220: 696f 6e20 616e 6420 7461 6e67 656e 7473  ion and tangents\n+00006230: 2061 7420 7665 7274 6963 6573 202d 2d20   at vertices -- \n+00006240: 7468 7265 6520 6361 7365 7320 666f 7220  three cases for \n+00006250: 6561 6368 3a3c 2f73 7061 6e3e 3c2f 6469  each:</span></di\n+00006260: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n+00006270: 696e 6522 3e3c 6120 6964 3d22 6c30 3031  ine\"><a id=\"l001\n+00006280: 3830 2220 6e61 6d65 3d22 6c30 3031 3830  80\" name=\"l00180\n+00006290: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n+000062a0: 733d 226c 696e 656e 6f22 3e20 2031 3830  s=\"lineno\">  180\n+000062b0: 3c2f 7370 616e 3e20 2020 203c 7370 616e  </span>    <span\n+000062c0: 2063 6c61 7373 3d22 636f 6d6d 656e 7422   class=\"comment\"\n+000062d0: 3e2f 2f3c 2f73 7061 6e3e 3c2f 6469 763e  >//</span></div>\n+000062e0: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n+000062f0: 6522 3e3c 6120 6964 3d22 6c30 3031 3831  e\"><a id=\"l00181\n+00006300: 2220 6e61 6d65 3d22 6c30 3031 3831 223e  \" name=\"l00181\">\n+00006310: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n+00006320: 226c 696e 656e 6f22 3e20 2031 3831 3c2f  \"lineno\">  181</\n+00006330: 7370 616e 3e20 2020 203c 7370 616e 2063  span>    <span c\n+00006340: 6c61 7373 3d22 6b65 7977 6f72 6422 3e74  lass=\"keyword\">t\n+00006350: 656d 706c 6174 653c 2f73 7061 6e3e 2026  emplate</span> &\n+00006360: 6c74 3b3c 7370 616e 2063 6c61 7373 3d22  lt;<span class=\"\n+00006370: 6b65 7977 6f72 6422 3e74 7970 656e 616d  keyword\">typenam\n+00006380: 653c 2f73 7061 6e3e 2056 4552 5445 582c  e</span> VERTEX,\n+00006390: 203c 7370 616e 2063 6c61 7373 3d22 6b65   <span class=\"ke\n+000063a0: 7977 6f72 6422 3e74 7970 656e 616d 653c  yword\">typename<\n+000063b0: 2f73 7061 6e3e 204d 4153 4b26 6774 3b3c  /span> MASK&gt;<\n+000063c0: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n+000063d0: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n+000063e0: 3030 3138 3222 206e 616d 653d 226c 3030  00182\" name=\"l00\n+000063f0: 3138 3222 3e3c 2f61 3e3c 7370 616e 2063  182\"></a><span c\n+00006400: 6c61 7373 3d22 6c69 6e65 6e6f 223e 3c61  lass=\"lineno\"><a\n+00006410: 2063 6c61 7373 3d22 6c69 6e65 2220 6872   class=\"line\" hr\n+00006420: 6566 3d22 6130 3133 3431 2e68 746d 6c23  ef=\"a01341.html#\n+00006430: 6161 3238 3231 6433 3635 6561 3831 3335  aa2821d365ea8135\n+00006440: 6436 3331 3663 3066 3932 3666 3837 6363  d6316c0f926f87cc\n+00006450: 6222 3e20 2031 3832 3c2f 613e 3c2f 7370  b\">  182</a></sp\n+00006460: 616e 3e20 2020 203c 7370 616e 2063 6c61  an>    <span cla\n+00006470: 7373 3d22 6b65 7977 6f72 6474 7970 6522  ss=\"keywordtype\"\n+00006480: 3e76 6f69 643c 2f73 7061 6e3e 203c 6120  >void</span> <a \n+00006490: 636c 6173 733d 2263 6f64 6520 686c 5f66  class=\"code hl_f\n+000064a0: 756e 6374 696f 6e22 2068 7265 663d 2261  unction\" href=\"a\n+000064b0: 3031 3334 312e 6874 6d6c 2361 6132 3832  01341.html#aa282\n+000064c0: 3164 3336 3565 6138 3133 3564 3633 3136  1d365ea8135d6316\n+000064d0: 6330 6639 3236 6638 3763 6362 223e 6173  c0f926f87ccb\">as\n+000064e0: 7369 676e 436f 726e 6572 4c69 6d69 744d  signCornerLimitM\n+000064f0: 6173 6b3c 2f61 3e28 5645 5254 4558 203c  ask</a>(VERTEX <\n+00006500: 7370 616e 2063 6c61 7373 3d22 6b65 7977  span class=\"keyw\n+00006510: 6f72 6422 3e63 6f6e 7374 3c2f 7370 616e  ord\">const</span\n+00006520: 3e26 616d 703b 2076 6572 7465 782c 204d  >&amp; vertex, M\n+00006530: 4153 4b26 616d 703b 2070 6f73 2920 3c73  ASK&amp; pos) <s\n+00006540: 7061 6e20 636c 6173 733d 226b 6579 776f  pan class=\"keywo\n+00006550: 7264 223e 636f 6e73 743c 2f73 7061 6e3e  rd\">const</span>\n+00006560: 3b3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ;</div>.<div cla\n+00006570: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n+00006580: 226c 3030 3138 3322 206e 616d 653d 226c  \"l00183\" name=\"l\n+00006590: 3030 3138 3322 3e3c 2f61 3e3c 7370 616e  00183\"></a><span\n+000065a0: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n+000065b0: 2020 3138 333c 2f73 7061 6e3e 2020 2020    183</span>    \n+000065c0: 3c73 7061 6e20 636c 6173 733d 226b 6579  <span class=\"key\n+000065d0: 776f 7264 223e 7465 6d70 6c61 7465 3c2f  word\">template</\n+000065e0: 7370 616e 3e20 266c 743b 3c73 7061 6e20  span> &lt;<span \n+000065f0: 636c 6173 733d 226b 6579 776f 7264 223e  class=\"keyword\">\n+00006600: 7479 7065 6e61 6d65 3c2f 7370 616e 3e20  typename</span> \n+00006610: 5645 5254 4558 2c20 3c73 7061 6e20 636c  VERTEX, <span cl\n+00006620: 6173 733d 226b 6579 776f 7264 223e 7479  ass=\"keyword\">ty\n+00006630: 7065 6e61 6d65 3c2f 7370 616e 3e20 4d41  pename</span> MA\n+00006640: 534b 2667 743b 3c2f 6469 763e 0a3c 6469  SK&gt;</div>.<di\n+00006650: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n+00006660: 6120 6964 3d22 6c30 3031 3834 2220 6e61  a id=\"l00184\" na\n+00006670: 6d65 3d22 6c30 3031 3834 223e 3c2f 613e  me=\"l00184\"></a>\n+00006680: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n+00006690: 656e 6f22 3e3c 6120 636c 6173 733d 226c  eno\"><a class=\"l\n+000066a0: 696e 6522 2068 7265 663d 2261 3031 3334  ine\" href=\"a0134\n+000066b0: 312e 6874 6d6c 2361 3763 3933 3136 6637  1.html#a7c9316f7\n+000066c0: 3231 3264 3365 6134 3164 6237 6633 6631  212d3ea41db7f3f1\n+000066d0: 6136 3663 6337 6535 223e 2020 3138 343c  a66cc7e5\">  184<\n+000066e0: 2f61 3e3c 2f73 7061 6e3e 2020 2020 3c73  /a></span>    <s\n+000066f0: 7061 6e20 636c 6173 733d 226b 6579 776f  pan class=\"keywo\n+00006700: 7264 7479 7065 223e 766f 6964 3c2f 7370  rdtype\">void</sp\n+00006710: 616e 3e20 3c61 2063 6c61 7373 3d22 636f  an> <a class=\"co\n+00006720: 6465 2068 6c5f 6675 6e63 7469 6f6e 2220  de hl_function\" \n+00006730: 6872 6566 3d22 6130 3133 3431 2e68 746d  href=\"a01341.htm\n+00006740: 6c23 6137 6339 3331 3666 3732 3132 6433  l#a7c9316f7212d3\n+00006750: 6561 3431 6462 3766 3366 3161 3636 6363  ea41db7f3f1a66cc\n+00006760: 3765 3522 3e61 7373 6967 6e43 7265 6173  7e5\">assignCreas\n+00006770: 654c 696d 6974 4d61 736b 3c2f 613e 2856  eLimitMask</a>(V\n+00006780: 4552 5445 5820 3c73 7061 6e20 636c 6173  ERTEX <span clas\n+00006790: 733d 226b 6579 776f 7264 223e 636f 6e73  s=\"keyword\">cons\n+000067a0: 743c 2f73 7061 6e3e 2661 6d70 3b20 7665  t</span>&amp; ve\n+000067b0: 7274 6578 2c20 4d41 534b 2661 6d70 3b20  rtex, MASK&amp; \n+000067c0: 706f 732c 203c 7370 616e 2063 6c61 7373  pos, <span class\n+000067d0: 3d22 6b65 7977 6f72 6474 7970 6522 3e69  =\"keywordtype\">i\n+000067e0: 6e74 3c2f 7370 616e 3e20 3c73 7061 6e20  nt</span> <span \n+000067f0: 636c 6173 733d 226b 6579 776f 7264 223e  class=\"keyword\">\n+00006800: 636f 6e73 743c 2f73 7061 6e3e 2063 7265  const</span> cre\n+00006810: 6173 6545 6e64 735b 325d 2920 3c73 7061  aseEnds[2]) <spa\n+00006820: 6e20 636c 6173 733d 226b 6579 776f 7264  n class=\"keyword\n+00006830: 223e 636f 6e73 743c 2f73 7061 6e3e 3b3c  \">const</span>;<\n+00006840: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n+00006850: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n+00006860: 3030 3138 3522 206e 616d 653d 226c 3030  00185\" name=\"l00\n+00006870: 3138 3522 3e3c 2f61 3e3c 7370 616e 2063  185\"></a><span c\n+00006880: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n+00006890: 3138 353c 2f73 7061 6e3e 2020 2020 3c73  185</span>    <s\n+000068a0: 7061 6e20 636c 6173 733d 226b 6579 776f  pan class=\"keywo\n+000068b0: 7264 223e 7465 6d70 6c61 7465 3c2f 7370  rd\">template</sp\n+000068c0: 616e 3e20 266c 743b 3c73 7061 6e20 636c  an> &lt;<span cl\n+000068d0: 6173 733d 226b 6579 776f 7264 223e 7479  ass=\"keyword\">ty\n+000068e0: 7065 6e61 6d65 3c2f 7370 616e 3e20 5645  pename</span> VE\n+000068f0: 5254 4558 2c20 3c73 7061 6e20 636c 6173  RTEX, <span clas\n+00006900: 733d 226b 6579 776f 7264 223e 7479 7065  s=\"keyword\">type\n+00006910: 6e61 6d65 3c2f 7370 616e 3e20 4d41 534b  name</span> MASK\n+00006920: 2667 743b 3c2f 6469 763e 0a3c 6469 7620  &gt;</div>.<div \n+00006930: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n+00006940: 6964 3d22 6c30 3031 3836 2220 6e61 6d65  id=\"l00186\" name\n+00006950: 3d22 6c30 3031 3836 223e 3c2f 613e 3c73  =\"l00186\"></a><s\n+00006960: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n+00006970: 6f22 3e3c 6120 636c 6173 733d 226c 696e  o\"><a class=\"lin\n+00006980: 6522 2068 7265 663d 2261 3031 3334 312e  e\" href=\"a01341.\n+00006990: 6874 6d6c 2361 3733 3663 3130 3934 3463  html#a736c10944c\n+000069a0: 6239 3231 6233 3334 6662 6438 6238 3138  b921b334fbd8b818\n+000069b0: 3636 6435 3966 223e 2020 3138 363c 2f61  66d59f\">  186</a\n+000069c0: 3e3c 2f73 7061 6e3e 2020 2020 3c73 7061  ></span>    <spa\n+000069d0: 6e20 636c 6173 733d 226b 6579 776f 7264  n class=\"keyword\n+000069e0: 7479 7065 223e 766f 6964 3c2f 7370 616e  type\">void</span\n+000069f0: 3e20 3c61 2063 6c61 7373 3d22 636f 6465  > <a class=\"code\n+00006a00: 2068 6c5f 6675 6e63 7469 6f6e 2220 6872   hl_function\" hr\n+00006a10: 6566 3d22 6130 3133 3431 2e68 746d 6c23  ef=\"a01341.html#\n+00006a20: 6137 3336 6331 3039 3434 6362 3932 3162  a736c10944cb921b\n+00006a30: 3333 3466 6264 3862 3831 3836 3664 3539  334fbd8b81866d59\n+00006a40: 6622 3e61 7373 6967 6e53 6d6f 6f74 684c  f\">assignSmoothL\n+00006a50: 696d 6974 4d61 736b 3c2f 613e 2856 4552  imitMask</a>(VER\n+00006a60: 5445 5820 3c73 7061 6e20 636c 6173 733d  TEX <span class=\n+00006a70: 226b 6579 776f 7264 223e 636f 6e73 743c  \"keyword\">const<\n+00006a80: 2f73 7061 6e3e 2661 6d70 3b20 7665 7274  /span>&amp; vert\n+00006a90: 6578 2c20 4d41 534b 2661 6d70 3b20 706f  ex, MASK&amp; po\n+00006aa0: 7329 203c 7370 616e 2063 6c61 7373 3d22  s) <span class=\"\n+00006ab0: 6b65 7977 6f72 6422 3e63 6f6e 7374 3c2f  keyword\">const</\n+00006ac0: 7370 616e 3e3b 3c2f 6469 763e 0a3c 6469  span>;</div>.<di\n+00006ad0: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n+00006ae0: 6120 6964 3d22 6c30 3031 3837 2220 6e61  a id=\"l00187\" na\n+00006af0: 6d65 3d22 6c30 3031 3837 223e 3c2f 613e  me=\"l00187\"></a>\n+00006b00: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n+00006b10: 656e 6f22 3e20 2031 3837 3c2f 7370 616e  eno\">  187</span\n+00006b20: 3e20 3c2f 6469 763e 0a3c 6469 7620 636c  > </div>.<div cl\n+00006b30: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n+00006b40: 3d22 6c30 3031 3838 2220 6e61 6d65 3d22  =\"l00188\" name=\"\n+00006b50: 6c30 3031 3838 223e 3c2f 613e 3c73 7061  l00188\"></a><spa\n+00006b60: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n+00006b70: 3e20 2031 3838 3c2f 7370 616e 3e20 2020  >  188</span>   \n+00006b80: 203c 7370 616e 2063 6c61 7373 3d22 6b65   <span class=\"ke\n+00006b90: 7977 6f72 6422 3e74 656d 706c 6174 653c  yword\">template<\n+00006ba0: 2f73 7061 6e3e 2026 6c74 3b3c 7370 616e  /span> &lt;<span\n+00006bb0: 2063 6c61 7373 3d22 6b65 7977 6f72 6422   class=\"keyword\"\n+00006bc0: 3e74 7970 656e 616d 653c 2f73 7061 6e3e  >typename</span>\n+00006bd0: 2056 4552 5445 582c 203c 7370 616e 2063   VERTEX, <span c\n+00006be0: 6c61 7373 3d22 6b65 7977 6f72 6422 3e74  lass=\"keyword\">t\n+00006bf0: 7970 656e 616d 653c 2f73 7061 6e3e 204d  ypename</span> M\n+00006c00: 4153 4b26 6774 3b3c 2f64 6976 3e0a 3c64  ASK&gt;</div>.<d\n+00006c10: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n+00006c20: 3c61 2069 643d 226c 3030 3138 3922 206e  <a id=\"l00189\" n\n+00006c30: 616d 653d 226c 3030 3138 3922 3e3c 2f61  ame=\"l00189\"></a\n+00006c40: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n+00006c50: 6e65 6e6f 223e 3c61 2063 6c61 7373 3d22  neno\"><a class=\"\n+00006c60: 6c69 6e65 2220 6872 6566 3d22 6130 3133  line\" href=\"a013\n+00006c70: 3431 2e68 746d 6c23 6165 3965 6537 6631  41.html#ae9ee7f1\n+00006c80: 3166 3531 6563 3666 6638 6334 3361 6230  1f51ec6ff8c43ab0\n+00006c90: 3732 3934 3534 6235 3422 3e20 2031 3839  729454b54\">  189\n+00006ca0: 3c2f 613e 3c2f 7370 616e 3e20 2020 203c  </a></span>    <\n+00006cb0: 7370 616e 2063 6c61 7373 3d22 6b65 7977  span class=\"keyw\n+00006cc0: 6f72 6474 7970 6522 3e76 6f69 643c 2f73  ordtype\">void</s\n+00006cd0: 7061 6e3e 203c 6120 636c 6173 733d 2263  pan> <a class=\"c\n+00006ce0: 6f64 6520 686c 5f66 756e 6374 696f 6e22  ode hl_function\"\n+00006cf0: 2068 7265 663d 2261 3031 3334 312e 6874   href=\"a01341.ht\n+00006d00: 6d6c 2361 6539 6565 3766 3131 6635 3165  ml#ae9ee7f11f51e\n+00006d10: 6336 6666 3863 3433 6162 3037 3239 3435  c6ff8c43ab072945\n+00006d20: 3462 3534 223e 6173 7369 676e 436f 726e  4b54\">assignCorn\n+00006d30: 6572 4c69 6d69 7454 616e 6765 6e74 4d61  erLimitTangentMa\n+00006d40: 736b 733c 2f61 3e28 5645 5254 4558 203c  sks</a>(VERTEX <\n+00006d50: 7370 616e 2063 6c61 7373 3d22 6b65 7977  span class=\"keyw\n+00006d60: 6f72 6422 3e63 6f6e 7374 3c2f 7370 616e  ord\">const</span\n+00006d70: 3e26 616d 703b 2076 6572 7465 782c 204d  >&amp; vertex, M\n+00006d80: 4153 4b26 616d 703b 2074 616e 312c 204d  ASK&amp; tan1, M\n+00006d90: 4153 4b26 616d 703b 2074 616e 3229 203c  ASK&amp; tan2) <\n+00006da0: 7370 616e 2063 6c61 7373 3d22 6b65 7977  span class=\"keyw\n+00006db0: 6f72 6422 3e63 6f6e 7374 3c2f 7370 616e  ord\">const</span\n+00006dc0: 3e3b 3c2f 6469 763e 0a3c 6469 7620 636c  >;</div>.<div cl\n+00006dd0: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n+00006de0: 3d22 6c30 3031 3930 2220 6e61 6d65 3d22  =\"l00190\" name=\"\n+00006df0: 6c30 3031 3930 223e 3c2f 613e 3c73 7061  l00190\"></a><spa\n+00006e00: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n+00006e10: 3e20 2031 3930 3c2f 7370 616e 3e20 2020  >  190</span>   \n+00006e20: 203c 7370 616e 2063 6c61 7373 3d22 6b65   <span class=\"ke\n+00006e30: 7977 6f72 6422 3e74 656d 706c 6174 653c  yword\">template<\n+00006e40: 2f73 7061 6e3e 2026 6c74 3b3c 7370 616e  /span> &lt;<span\n+00006e50: 2063 6c61 7373 3d22 6b65 7977 6f72 6422   class=\"keyword\"\n+00006e60: 3e74 7970 656e 616d 653c 2f73 7061 6e3e  >typename</span>\n+00006e70: 2056 4552 5445 582c 203c 7370 616e 2063   VERTEX, <span c\n+00006e80: 6c61 7373 3d22 6b65 7977 6f72 6422 3e74  lass=\"keyword\">t\n+00006e90: 7970 656e 616d 653c 2f73 7061 6e3e 204d  ypename</span> M\n+00006ea0: 4153 4b26 6774 3b3c 2f64 6976 3e0a 3c64  ASK&gt;</div>.<d\n+00006eb0: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n+00006ec0: 3c61 2069 643d 226c 3030 3139 3122 206e  <a id=\"l00191\" n\n+00006ed0: 616d 653d 226c 3030 3139 3122 3e3c 2f61  ame=\"l00191\"></a\n+00006ee0: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n+00006ef0: 6e65 6e6f 223e 3c61 2063 6c61 7373 3d22  neno\"><a class=\"\n+00006f00: 6c69 6e65 2220 6872 6566 3d22 6130 3133  line\" href=\"a013\n+00006f10: 3431 2e68 746d 6c23 6134 6638 6535 3539  41.html#a4f8e559\n+00006f20: 6239 3362 6261 6632 3665 6130 6434 3062  b93bbaf26ea0d40b\n+00006f30: 3166 6132 6631 3934 6622 3e20 2031 3931  1fa2f194f\">  191\n+00006f40: 3c2f 613e 3c2f 7370 616e 3e20 2020 203c  </a></span>    <\n+00006f50: 7370 616e 2063 6c61 7373 3d22 6b65 7977  span class=\"keyw\n+00006f60: 6f72 6474 7970 6522 3e76 6f69 643c 2f73  ordtype\">void</s\n+00006f70: 7061 6e3e 203c 6120 636c 6173 733d 2263  pan> <a class=\"c\n+00006f80: 6f64 6520 686c 5f66 756e 6374 696f 6e22  ode hl_function\"\n+00006f90: 2068 7265 663d 2261 3031 3334 312e 6874   href=\"a01341.ht\n+00006fa0: 6d6c 2361 3466 3865 3535 3962 3933 6262  ml#a4f8e559b93bb\n+00006fb0: 6166 3236 6561 3064 3430 6231 6661 3266  af26ea0d40b1fa2f\n+00006fc0: 3139 3466 223e 6173 7369 676e 4372 6561  194f\">assignCrea\n+00006fd0: 7365 4c69 6d69 7454 616e 6765 6e74 4d61  seLimitTangentMa\n+00006fe0: 736b 733c 2f61 3e28 5645 5254 4558 203c  sks</a>(VERTEX <\n+00006ff0: 7370 616e 2063 6c61 7373 3d22 6b65 7977  span class=\"keyw\n+00007000: 6f72 6422 3e63 6f6e 7374 3c2f 7370 616e  ord\">const</span\n+00007010: 3e26 616d 703b 2076 6572 7465 782c 204d  >&amp; vertex, M\n+00007020: 4153 4b26 616d 703b 2074 616e 312c 204d  ASK&amp; tan1, M\n+00007030: 4153 4b26 616d 703b 2074 616e 322c 203c  ASK&amp; tan2, <\n+00007040: 7370 616e 2063 6c61 7373 3d22 6b65 7977  span class=\"keyw\n+00007050: 6f72 6474 7970 6522 3e69 6e74 3c2f 7370  ordtype\">int</sp\n+00007060: 616e 3e20 3c73 7061 6e20 636c 6173 733d  an> <span class=\n+00007070: 226b 6579 776f 7264 223e 636f 6e73 743c  \"keyword\">const<\n+00007080: 2f73 7061 6e3e 2063 7265 6173 6545 6e64  /span> creaseEnd\n+00007090: 735b 325d 2920 3c73 7061 6e20 636c 6173  s[2]) <span clas\n+000070a0: 733d 226b 6579 776f 7264 223e 636f 6e73  s=\"keyword\">cons\n+000070b0: 743c 2f73 7061 6e3e 3b3c 2f64 6976 3e0a  t</span>;</div>.\n+000070c0: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n+000070d0: 223e 3c61 2069 643d 226c 3030 3139 3222  \"><a id=\"l00192\"\n+000070e0: 206e 616d 653d 226c 3030 3139 3222 3e3c   name=\"l00192\"><\n+000070f0: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n+00007100: 6c69 6e65 6e6f 223e 2020 3139 323c 2f73  lineno\">  192</s\n+00007110: 7061 6e3e 2020 2020 3c73 7061 6e20 636c  pan>    <span cl\n+00007120: 6173 733d 226b 6579 776f 7264 223e 7465  ass=\"keyword\">te\n+00007130: 6d70 6c61 7465 3c2f 7370 616e 3e20 266c  mplate</span> &l\n+00007140: 743b 3c73 7061 6e20 636c 6173 733d 226b  t;<span class=\"k\n+00007150: 6579 776f 7264 223e 7479 7065 6e61 6d65  eyword\">typename\n+00007160: 3c2f 7370 616e 3e20 5645 5254 4558 2c20  </span> VERTEX, \n+00007170: 3c73 7061 6e20 636c 6173 733d 226b 6579  <span class=\"key\n+00007180: 776f 7264 223e 7479 7065 6e61 6d65 3c2f  word\">typename</\n+00007190: 7370 616e 3e20 4d41 534b 2667 743b 3c2f  span> MASK&gt;</\n+000071a0: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n+000071b0: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n+000071c0: 3031 3933 2220 6e61 6d65 3d22 6c30 3031  0193\" name=\"l001\n+000071d0: 3933 223e 3c2f 613e 3c73 7061 6e20 636c  93\"></a><span cl\n+000071e0: 6173 733d 226c 696e 656e 6f22 3e3c 6120  ass=\"lineno\"><a \n+000071f0: 636c 6173 733d 226c 696e 6522 2068 7265  class=\"line\" hre\n+00007200: 663d 2261 3031 3334 312e 6874 6d6c 2361  f=\"a01341.html#a\n+00007210: 3965 6535 6531 3934 6130 3038 3332 6135  9ee5e194a00832a5\n+00007220: 6266 6137 3663 6635 3864 6630 6263 3462  bfa76cf58df0bc4b\n+00007230: 223e 2020 3139 333c 2f61 3e3c 2f73 7061  \">  193</a></spa\n+00007240: 6e3e 2020 2020 3c73 7061 6e20 636c 6173  n>    <span clas\n+00007250: 733d 226b 6579 776f 7264 7479 7065 223e  s=\"keywordtype\">\n+00007260: 766f 6964 3c2f 7370 616e 3e20 3c61 2063  void</span> <a c\n+00007270: 6c61 7373 3d22 636f 6465 2068 6c5f 6675  lass=\"code hl_fu\n+00007280: 6e63 7469 6f6e 2220 6872 6566 3d22 6130  nction\" href=\"a0\n+00007290: 3133 3431 2e68 746d 6c23 6139 6565 3565  1341.html#a9ee5e\n+000072a0: 3139 3461 3030 3833 3261 3562 6661 3736  194a00832a5bfa76\n+000072b0: 6366 3538 6466 3062 6334 6222 3e61 7373  cf58df0bc4b\">ass\n+000072c0: 6967 6e53 6d6f 6f74 684c 696d 6974 5461  ignSmoothLimitTa\n+000072d0: 6e67 656e 744d 6173 6b73 3c2f 613e 2856  ngentMasks</a>(V\n+000072e0: 4552 5445 5820 3c73 7061 6e20 636c 6173  ERTEX <span clas\n+000072f0: 733d 226b 6579 776f 7264 223e 636f 6e73  s=\"keyword\">cons\n+00007300: 743c 2f73 7061 6e3e 2661 6d70 3b20 7665  t</span>&amp; ve\n+00007310: 7274 6578 2c20 4d41 534b 2661 6d70 3b20  rtex, MASK&amp; \n+00007320: 7461 6e31 2c20 4d41 534b 2661 6d70 3b20  tan1, MASK&amp; \n+00007330: 7461 6e32 2920 3c73 7061 6e20 636c 6173  tan2) <span clas\n+00007340: 733d 226b 6579 776f 7264 223e 636f 6e73  s=\"keyword\">cons\n+00007350: 743c 2f73 7061 6e3e 3b3c 2f64 6976 3e0a  t</span>;</div>.\n+00007360: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n+00007370: 223e 3c61 2069 643d 226c 3030 3139 3422  \"><a id=\"l00194\"\n+00007380: 206e 616d 653d 226c 3030 3139 3422 3e3c   name=\"l00194\"><\n+00007390: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n+000073a0: 6c69 6e65 6e6f 223e 2020 3139 343c 2f73  lineno\">  194</s\n+000073b0: 7061 6e3e 203c 2f64 6976 3e0a 3c64 6976  pan> </div>.<div\n+000073c0: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n+000073d0: 2069 643d 226c 3030 3139 3522 206e 616d   id=\"l00195\" nam\n+000073e0: 653d 226c 3030 3139 3522 3e3c 2f61 3e3c  e=\"l00195\"></a><\n+000073f0: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n+00007400: 6e6f 223e 2020 3139 353c 2f73 7061 6e3e  no\">  195</span>\n+00007410: 3c73 7061 6e20 636c 6173 733d 226b 6579  <span class=\"key\n+00007420: 776f 7264 223e 7072 6976 6174 653c 2f73  word\">private</s\n+00007430: 7061 6e3e 3a3c 2f64 6976 3e0a 3c64 6976  pan>:</div>.<div\n+00007440: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n+00007450: 2069 643d 226c 3030 3139 3622 206e 616d   id=\"l00196\" nam\n+00007460: 653d 226c 3030 3139 3622 3e3c 2f61 3e3c  e=\"l00196\"></a><\n+00007470: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n+00007480: 6e6f 223e 2020 3139 363c 2f73 7061 6e3e  no\">  196</span>\n+00007490: 2020 2020 3c61 2063 6c61 7373 3d22 636f      <a class=\"co\n+000074a0: 6465 2068 6c5f 636c 6173 7322 2068 7265  de hl_class\" hre\n+000074b0: 663d 2261 3031 3333 372e 6874 6d6c 223e  f=\"a01337.html\">\n+000074c0: 4f70 7469 6f6e 733c 2f61 3e20 5f6f 7074  Options</a> _opt\n+000074d0: 696f 6e73 3b3c 2f64 6976 3e0a 3c64 6976  ions;</div>.<div\n+000074e0: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n+000074f0: 2069 643d 226c 3030 3139 3722 206e 616d   id=\"l00197\" nam\n+00007500: 653d 226c 3030 3139 3722 3e3c 2f61 3e3c  e=\"l00197\"></a><\n+00007510: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n+00007520: 6e6f 223e 2020 3139 373c 2f73 7061 6e3e  no\">  197</span>\n+00007530: 203c 2f64 6976 3e0a 3c64 6976 2063 6c61   </div>.<div cla\n+00007540: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n+00007550: 226c 3030 3139 3822 206e 616d 653d 226c  \"l00198\" name=\"l\n+00007560: 3030 3139 3822 3e3c 2f61 3e3c 7370 616e  00198\"></a><span\n+00007570: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n+00007580: 2020 3139 383c 2f73 7061 6e3e 3c73 7061    198</span><spa\n+00007590: 6e20 636c 6173 733d 226b 6579 776f 7264  n class=\"keyword\n+000075a0: 223e 7072 6f74 6563 7465 643c 2f73 7061  \">protected</spa\n+000075b0: 6e3e 3a3c 2f64 6976 3e0a 3c64 6976 2063  n>:</div>.<div c\n+000075c0: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n+000075d0: 643d 226c 3030 3139 3922 206e 616d 653d  d=\"l00199\" name=\n+000075e0: 226c 3030 3139 3922 3e3c 2f61 3e3c 7370  \"l00199\"></a><sp\n+000075f0: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n+00007600: 223e 2020 3139 393c 2f73 7061 6e3e 203c  \">  199</span> <\n+00007610: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n+00007620: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n+00007630: 3030 3230 3022 206e 616d 653d 226c 3030  00200\" name=\"l00\n+00007640: 3230 3022 3e3c 2f61 3e3c 7370 616e 2063  200\"></a><span c\n+00007650: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n+00007660: 3230 303c 2f73 7061 6e3e 2020 2020 3c73  200</span>    <s\n+00007670: 7061 6e20 636c 6173 733d 2263 6f6d 6d65  pan class=\"comme\n+00007680: 6e74 223e 2f2f 3c2f 7370 616e 3e3c 2f64  nt\">//</span></d\n+00007690: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n+000076a0: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n+000076b0: 3230 3122 206e 616d 653d 226c 3030 3230  201\" name=\"l0020\n+000076c0: 3122 3e3c 2f61 3e3c 7370 616e 2063 6c61  1\"></a><span cla\n+000076d0: 7373 3d22 6c69 6e65 6e6f 223e 2020 3230  ss=\"lineno\">  20\n+000076e0: 313c 2f73 7061 6e3e 2020 2020 3c73 7061  1</span>    <spa\n+000076f0: 6e20 636c 6173 733d 2263 6f6d 6d65 6e74  n class=\"comment\n+00007700: 223e 2f2f 2020 496e 7465 726e 616c 2069  \">//  Internal i\n+00007710: 6d70 6c65 6d65 6e74 6174 696f 6e20 7375  mplementation su\n+00007720: 7070 6f72 743a 3c2f 7370 616e 3e3c 2f64  pport:</span></d\n+00007730: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n+00007740: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n+00007750: 3230 3222 206e 616d 653d 226c 3030 3230  202\" name=\"l0020\n+00007760: 3222 3e3c 2f61 3e3c 7370 616e 2063 6c61  2\"></a><span cla\n+00007770: 7373 3d22 6c69 6e65 6e6f 223e 2020 3230  ss=\"lineno\">  20\n+00007780: 323c 2f73 7061 6e3e 2020 2020 3c73 7061  2</span>    <spa\n+00007790: 6e20 636c 6173 733d 2263 6f6d 6d65 6e74  n class=\"comment\n+000077a0: 223e 2f2f 3c2f 7370 616e 3e3c 2f64 6976  \">//</span></div\n+000077b0: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n+000077c0: 6e65 223e 3c61 2069 643d 226c 3030 3230  ne\"><a id=\"l0020\n+000077d0: 3322 206e 616d 653d 226c 3030 3230 3322  3\" name=\"l00203\"\n+000077e0: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n+000077f0: 3d22 6c69 6e65 6e6f 223e 2020 3230 333c  =\"lineno\">  203<\n+00007800: 2f73 7061 6e3e 2020 2020 3c73 7061 6e20  /span>    <span \n+00007810: 636c 6173 733d 2263 6f6d 6d65 6e74 223e  class=\"comment\">\n+00007820: 2f2f 2020 5765 206e 6565 6420 6120 6c6f  //  We need a lo\n+00007830: 6361 6c20 2671 756f 743b 6d61 736b 2671  cal &quot;mask&q\n+00007840: 756f 743b 2063 6c61 7373 2074 6f20 6265  uot; class to be\n+00007850: 2064 6563 6c61 7265 6420 6c6f 6361 6c6c   declared locall\n+00007860: 7920 7769 7468 696e 2074 6865 2076 6572  y within the ver\n+00007870: 7465 782d 7665 7274 6578 206d 6173 6b20  tex-vertex mask \n+00007880: 7175 6572 793c 2f73 7061 6e3e 3c2f 6469  query</span></di\n+00007890: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n+000078a0: 696e 6522 3e3c 6120 6964 3d22 6c30 3032  ine\"><a id=\"l002\n+000078b0: 3034 2220 6e61 6d65 3d22 6c30 3032 3034  04\" name=\"l00204\n+000078c0: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n+000078d0: 733d 226c 696e 656e 6f22 3e20 2032 3034  s=\"lineno\">  204\n+000078e0: 3c2f 7370 616e 3e20 2020 203c 7370 616e  </span>    <span\n+000078f0: 2063 6c61 7373 3d22 636f 6d6d 656e 7422   class=\"comment\"\n+00007900: 3e2f 2f20 2074 6f20 686f 6c64 206f 6e65  >//  to hold one\n+00007910: 206f 6620 7468 6520 7477 6f20 706f 7373   of the two poss\n+00007920: 6962 6c65 206d 6173 6b73 2072 6571 7569  ible masks requi\n+00007930: 7265 6420 616e 6420 746f 2063 6f6d 6269  red and to combi\n+00007940: 6e65 2074 6865 206c 6f63 616c 206d 6173  ne the local mas\n+00007950: 6b20 7769 7468 2074 6865 206d 6173 6b3c  k with the mask<\n+00007960: 2f73 7061 6e3e 3c2f 6469 763e 0a3c 6469  /span></div>.<di\n+00007970: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n+00007980: 6120 6964 3d22 6c30 3032 3035 2220 6e61  a id=\"l00205\" na\n+00007990: 6d65 3d22 6c30 3032 3035 223e 3c2f 613e  me=\"l00205\"></a>\n+000079a0: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n+000079b0: 656e 6f22 3e20 2032 3035 3c2f 7370 616e  eno\">  205</span\n+000079c0: 3e20 2020 203c 7370 616e 2063 6c61 7373  >    <span class\n+000079d0: 3d22 636f 6d6d 656e 7422 3e2f 2f20 2074  =\"comment\">//  t\n+000079e0: 6865 2063 616c 6c65 7220 7072 6f76 6964  he caller provid\n+000079f0: 6573 2e20 2049 7420 6861 7320 6265 656e  es.  It has been\n+00007a00: 2070 6172 616d 6574 6572 697a 6564 2062   parameterized b\n+00007a10: 7920 266c 743b 5745 4947 4854 2667 743b  y &lt;WEIGHT&gt;\n+00007a20: 2073 6f20 7468 6174 2061 2076 6572 7369   so that a versi\n+00007a30: 6f6e 2063 6f6d 7061 7469 626c 653c 2f73  on compatible</s\n+00007a40: 7061 6e3e 3c2f 6469 763e 0a3c 6469 7620  pan></div>.<div \n+00007a50: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n+00007a60: 6964 3d22 6c30 3032 3036 2220 6e61 6d65  id=\"l00206\" name\n+00007a70: 3d22 6c30 3032 3036 223e 3c2f 613e 3c73  =\"l00206\"></a><s\n+00007a80: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n+00007a90: 6f22 3e20 2032 3036 3c2f 7370 616e 3e20  o\">  206</span> \n+00007aa0: 2020 203c 7370 616e 2063 6c61 7373 3d22     <span class=\"\n+00007ab0: 636f 6d6d 656e 7422 3e2f 2f20 2077 6974  comment\">//  wit\n+00007ac0: 6820 7468 6520 6361 6c6c 6572 2623 3339  h the caller&#39\n+00007ad0: 3b73 206d 6173 6b20 636c 6173 7320 6973  ;s mask class is\n+00007ae0: 2063 7265 6174 6564 2e3c 2f73 7061 6e3e   created.</span>\n+00007af0: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n+00007b00: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n+00007b10: 6c30 3032 3037 2220 6e61 6d65 3d22 6c30  l00207\" name=\"l0\n+00007b20: 3032 3037 223e 3c2f 613e 3c73 7061 6e20  0207\"></a><span \n+00007b30: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n+00007b40: 2032 3037 3c2f 7370 616e 3e20 2020 203c   207</span>    <\n+00007b50: 7370 616e 2063 6c61 7373 3d22 636f 6d6d  span class=\"comm\n+00007b60: 656e 7422 3e2f 2f3c 2f73 7061 6e3e 3c2f  ent\">//</span></\n+00007b70: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n+00007b80: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n+00007b90: 3032 3038 2220 6e61 6d65 3d22 6c30 3032  0208\" name=\"l002\n+00007ba0: 3038 223e 3c2f 613e 3c73 7061 6e20 636c  08\"></a><span cl\n+00007bb0: 6173 733d 226c 696e 656e 6f22 3e20 2032  ass=\"lineno\">  2\n+00007bc0: 3038 3c2f 7370 616e 3e20 2020 203c 7370  08</span>    <sp\n+00007bd0: 616e 2063 6c61 7373 3d22 6b65 7977 6f72  an class=\"keywor\n+00007be0: 6422 3e74 656d 706c 6174 653c 2f73 7061  d\">template</spa\n+00007bf0: 6e3e 2026 6c74 3b3c 7370 616e 2063 6c61  n> &lt;<span cla\n+00007c00: 7373 3d22 6b65 7977 6f72 6422 3e74 7970  ss=\"keyword\">typ\n+00007c10: 656e 616d 653c 2f73 7061 6e3e 2057 4549  ename</span> WEI\n+00007c20: 4748 5426 6774 3b3c 2f64 6976 3e0a 3c64  GHT&gt;</div>.<d\n+00007c30: 6976 2063 6c61 7373 3d22 666f 6c64 6f70  iv class=\"foldop\n+00007c40: 656e 2220 6964 3d22 666f 6c64 6f70 656e  en\" id=\"foldopen\n+00007c50: 3030 3230 3922 2064 6174 612d 7374 6172  00209\" data-star\n+00007c60: 743d 227b 2220 6461 7461 2d65 6e64 3d22  t=\"{\" data-end=\"\n+00007c70: 7d3b 223e 0a3c 6469 7620 636c 6173 733d  };\">.<div class=\n+00007c80: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n+00007c90: 3032 3039 2220 6e61 6d65 3d22 6c30 3032  0209\" name=\"l002\n+00007ca0: 3039 223e 3c2f 613e 3c73 7061 6e20 636c  09\"></a><span cl\n+00007cb0: 6173 733d 226c 696e 656e 6f22 3e3c 6120  ass=\"lineno\"><a \n+00007cc0: 636c 6173 733d 226c 696e 6522 2068 7265  class=\"line\" hre\n+00007cd0: 663d 2261 3031 3334 352e 6874 6d6c 223e  f=\"a01345.html\">\n+00007ce0: 2020 3230 393c 2f61 3e3c 2f73 7061 6e3e    209</a></span>\n+00007cf0: 2020 2020 3c73 7061 6e20 636c 6173 733d      <span class=\n+00007d00: 226b 6579 776f 7264 223e 636c 6173 7320  \"keyword\">class \n+00007d10: 3c2f 7370 616e 3e3c 6120 636c 6173 733d  </span><a class=\n+00007d20: 2263 6f64 6520 686c 5f63 6c61 7373 2220  \"code hl_class\" \n+00007d30: 6872 6566 3d22 6130 3133 3435 2e68 746d  href=\"a01345.htm\n+00007d40: 6c22 3e4c 6f63 616c 4d61 736b 3c2f 613e  l\">LocalMask</a>\n+00007d50: 207b 3c2f 6469 763e 0a3c 6469 7620 636c   {</div>.<div cl\n+00007d60: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n+00007d70: 3d22 6c30 3032 3130 2220 6e61 6d65 3d22  =\"l00210\" name=\"\n+00007d80: 6c30 3032 3130 223e 3c2f 613e 3c73 7061  l00210\"></a><spa\n+00007d90: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n+00007da0: 3e20 2032 3130 3c2f 7370 616e 3e20 3c2f  >  210</span> </\n+00007db0: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n+00007dc0: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n+00007dd0: 3032 3131 2220 6e61 6d65 3d22 6c30 3032  0211\" name=\"l002\n+00007de0: 3131 223e 3c2f 613e 3c73 7061 6e20 636c  11\"></a><span cl\n+00007df0: 6173 733d 226c 696e 656e 6f22 3e20 2032  ass=\"lineno\">  2\n+00007e00: 3131 3c2f 7370 616e 3e20 2020 203c 7370  11</span>    <sp\n+00007e10: 616e 2063 6c61 7373 3d22 6b65 7977 6f72  an class=\"keywor\n+00007e20: 6422 3e70 7562 6c69 633c 2f73 7061 6e3e  d\">public</span>\n+00007e30: 3a3c 2f64 6976 3e0a 3c64 6976 2063 6c61  :</div>.<div cla\n+00007e40: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n+00007e50: 226c 3030 3231 3222 206e 616d 653d 226c  \"l00212\" name=\"l\n+00007e60: 3030 3231 3222 3e3c 2f61 3e3c 7370 616e  00212\"></a><span\n+00007e70: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n+00007e80: 3c61 2063 6c61 7373 3d22 6c69 6e65 2220  <a class=\"line\" \n+00007e90: 6872 6566 3d22 6130 3133 3435 2e68 746d  href=\"a01345.htm\n+00007ea0: 6c23 6131 3733 6539 3865 3064 3162 3364  l#a173e98e0d1b3d\n+00007eb0: 3135 6635 6333 6164 3433 3664 3066 6564  15f5c3ad436d0fed\n+00007ec0: 3430 3122 3e20 2032 3132 3c2f 613e 3c2f  401\">  212</a></\n+00007ed0: 7370 616e 3e20 2020 2020 2020 203c 7370  span>        <sp\n+00007ee0: 616e 2063 6c61 7373 3d22 6b65 7977 6f72  an class=\"keywor\n+00007ef0: 6422 3e74 7970 6564 6566 3c2f 7370 616e  d\">typedef</span\n+00007f00: 3e20 5745 4947 4854 203c 6120 636c 6173  > WEIGHT <a clas\n+00007f10: 733d 2263 6f64 6520 686c 5f74 7970 6564  s=\"code hl_typed\n+00007f20: 6566 2220 6872 6566 3d22 6130 3133 3435  ef\" href=\"a01345\n+00007f30: 2e68 746d 6c23 6131 3733 6539 3865 3064  .html#a173e98e0d\n+00007f40: 3162 3364 3135 6635 6333 6164 3433 3664  1b3d15f5c3ad436d\n+00007f50: 3066 6564 3430 3122 3e57 6569 6768 743c  0fed401\">Weight<\n+00007f60: 2f61 3e3b 3c2f 6469 763e 0a3c 6469 7620  /a>;</div>.<div \n+00007f70: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n+00007f80: 6964 3d22 6c30 3032 3133 2220 6e61 6d65  id=\"l00213\" name\n+00007f90: 3d22 6c30 3032 3133 223e 3c2f 613e 3c73  =\"l00213\"></a><s\n+00007fa0: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n+00007fb0: 6f22 3e20 2032 3133 3c2f 7370 616e 3e20  o\">  213</span> \n+00007fc0: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n+00007fd0: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n+00007fe0: 6c30 3032 3134 2220 6e61 6d65 3d22 6c30  l00214\" name=\"l0\n+00007ff0: 3032 3134 223e 3c2f 613e 3c73 7061 6e20  0214\"></a><span \n+00008000: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n+00008010: 2032 3134 3c2f 7370 616e 3e20 2020 203c   214</span>    <\n+00008020: 7370 616e 2063 6c61 7373 3d22 6b65 7977  span class=\"keyw\n+00008030: 6f72 6422 3e70 7562 6c69 633c 2f73 7061  ord\">public</spa\n+00008040: 6e3e 3a3c 2f64 6976 3e0a 3c64 6976 2063  n>:</div>.<div c\n+00008050: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n+00008060: 643d 226c 3030 3231 3522 206e 616d 653d  d=\"l00215\" name=\n+00008070: 226c 3030 3231 3522 3e3c 2f61 3e3c 7370  \"l00215\"></a><sp\n+00008080: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n+00008090: 223e 3c61 2063 6c61 7373 3d22 6c69 6e65  \"><a class=\"line\n+000080a0: 2220 6872 6566 3d22 6130 3133 3435 2e68  \" href=\"a01345.h\n+000080b0: 746d 6c23 6163 3462 3463 3535 6662 3234  tml#ac4b4c55fb24\n+000080c0: 6461 3935 6631 3534 6634 6139 6635 3137  da95f154f4a9f517\n+000080d0: 6462 3037 3922 3e20 2032 3135 3c2f 613e  db079\">  215</a>\n+000080e0: 3c2f 7370 616e 3e20 2020 2020 2020 203c  </span>        <\n+000080f0: 6120 636c 6173 733d 2263 6f64 6520 686c  a class=\"code hl\n+00008100: 5f66 756e 6374 696f 6e22 2068 7265 663d  _function\" href=\n+00008110: 2261 3031 3334 352e 6874 6d6c 2361 6334  \"a01345.html#ac4\n+00008120: 6234 6335 3566 6232 3464 6139 3566 3135  b4c55fb24da95f15\n+00008130: 3466 3461 3966 3531 3764 6230 3739 223e  4f4a9f517db079\">\n+00008140: 4c6f 6361 6c4d 6173 6b3c 2f61 3e28 3c61  LocalMask</a>(<a\n+00008150: 2063 6c61 7373 3d22 636f 6465 2068 6c5f   class=\"code hl_\n+00008160: 7479 7065 6465 6622 2068 7265 663d 2261  typedef\" href=\"a\n+00008170: 3031 3334 352e 6874 6d6c 2361 3137 3365  01345.html#a173e\n+00008180: 3938 6530 6431 6233 6431 3566 3563 3361  98e0d1b3d15f5c3a\n+00008190: 6434 3336 6430 6665 6434 3031 223e 5765  d436d0fed401\">We\n+000081a0: 6967 6874 3c2f 613e 2a20 762c 203c 6120  ight</a>* v, <a \n+000081b0: 636c 6173 733d 2263 6f64 6520 686c 5f74  class=\"code hl_t\n+000081c0: 7970 6564 6566 2220 6872 6566 3d22 6130  ypedef\" href=\"a0\n+000081d0: 3133 3435 2e68 746d 6c23 6131 3733 6539  1345.html#a173e9\n+000081e0: 3865 3064 3162 3364 3135 6635 6333 6164  8e0d1b3d15f5c3ad\n+000081f0: 3433 3664 3066 6564 3430 3122 3e57 6569  436d0fed401\">Wei\n+00008200: 6768 743c 2f61 3e2a 2065 2c20 3c61 2063  ght</a>* e, <a c\n+00008210: 6c61 7373 3d22 636f 6465 2068 6c5f 7479  lass=\"code hl_ty\n+00008220: 7065 6465 6622 2068 7265 663d 2261 3031  pedef\" href=\"a01\n+00008230: 3334 352e 6874 6d6c 2361 3137 3365 3938  345.html#a173e98\n+00008240: 6530 6431 6233 6431 3566 3563 3361 6434  e0d1b3d15f5c3ad4\n+00008250: 3336 6430 6665 6434 3031 223e 5765 6967  36d0fed401\">Weig\n+00008260: 6874 3c2f 613e 2a20 6629 203a 205f 7657  ht</a>* f) : _vW\n+00008270: 6569 6768 7473 2876 292c 205f 6557 6569  eights(v), _eWei\n+00008280: 6768 7473 2865 292c 205f 6657 6569 6768  ghts(e), _fWeigh\n+00008290: 7473 2866 2920 7b20 7d3c 2f64 6976 3e0a  ts(f) { }</div>.\n+000082a0: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n+000082b0: 223e 3c61 2069 643d 226c 3030 3231 3622  \"><a id=\"l00216\"\n+000082c0: 206e 616d 653d 226c 3030 3231 3622 3e3c   name=\"l00216\"><\n+000082d0: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n+000082e0: 6c69 6e65 6e6f 223e 3c61 2063 6c61 7373  lineno\"><a class\n+000082f0: 3d22 6c69 6e65 2220 6872 6566 3d22 6130  =\"line\" href=\"a0\n+00008300: 3133 3435 2e68 746d 6c23 6166 3534 3239  1345.html#af5429\n+00008310: 3337 6461 3630 3530 3334 3263 6236 6439  37da6050342cb6d9\n+00008320: 6330 3432 6534 6238 3935 3222 3e20 2032  c042e4b8952\">  2\n+00008330: 3136 3c2f 613e 3c2f 7370 616e 3e20 2020  16</a></span>   \n+00008340: 2020 2020 203c 6120 636c 6173 733d 2263       <a class=\"c\n+00008350: 6f64 6520 686c 5f66 756e 6374 696f 6e22  ode hl_function\"\n+00008360: 2068 7265 663d 2261 3031 3334 352e 6874   href=\"a01345.ht\n+00008370: 6d6c 2361 6635 3432 3933 3764 6136 3035  ml#af542937da605\n+00008380: 3033 3432 6362 3664 3963 3034 3265 3462  0342cb6d9c042e4b\n+00008390: 3839 3532 223e 7e4c 6f63 616c 4d61 736b  8952\">~LocalMask\n+000083a0: 3c2f 613e 2829 207b 207d 3c2f 6469 763e  </a>() { }</div>\n+000083b0: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n+000083c0: 6522 3e3c 6120 6964 3d22 6c30 3032 3137  e\"><a id=\"l00217\n+000083d0: 2220 6e61 6d65 3d22 6c30 3032 3137 223e  \" name=\"l00217\">\n+000083e0: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n+000083f0: 226c 696e 656e 6f22 3e20 2032 3137 3c2f  \"lineno\">  217</\n+00008400: 7370 616e 3e20 3c2f 6469 763e 0a3c 6469  span> </div>.<di\n+00008410: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n+00008420: 6120 6964 3d22 6c30 3032 3138 2220 6e61  a id=\"l00218\" na\n+00008430: 6d65 3d22 6c30 3032 3138 223e 3c2f 613e  me=\"l00218\"></a>\n+00008440: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n+00008450: 656e 6f22 3e20 2032 3138 3c2f 7370 616e  eno\">  218</span\n+00008460: 3e20 2020 203c 7370 616e 2063 6c61 7373  >    <span class\n+00008470: 3d22 6b65 7977 6f72 6422 3e70 7562 6c69  =\"keyword\">publi\n+00008480: 633c 2f73 7061 6e3e 3a3c 2f64 6976 3e0a  c</span>:</div>.\n+00008490: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n+000084a0: 223e 3c61 2069 643d 226c 3030 3231 3922  \"><a id=\"l00219\"\n+000084b0: 206e 616d 653d 226c 3030 3231 3922 3e3c   name=\"l00219\"><\n+000084c0: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n+000084d0: 6c69 6e65 6e6f 223e 2020 3231 393c 2f73  lineno\">  219</s\n+000084e0: 7061 6e3e 203c 2f64 6976 3e0a 3c64 6976  pan> </div>.<div\n+000084f0: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n+00008500: 2069 643d 226c 3030 3232 3022 206e 616d   id=\"l00220\" nam\n+00008510: 653d 226c 3030 3232 3022 3e3c 2f61 3e3c  e=\"l00220\"></a><\n+00008520: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n+00008530: 6e6f 223e 2020 3232 303c 2f73 7061 6e3e  no\">  220</span>\n+00008540: 2020 2020 2020 2020 3c73 7061 6e20 636c          <span cl\n+00008550: 6173 733d 2263 6f6d 6d65 6e74 223e 2f2f  ass=\"comment\">//\n+00008560: 3c2f 7370 616e 3e3c 2f64 6976 3e0a 3c64  </span></div>.<d\n+00008570: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n+00008580: 3c61 2069 643d 226c 3030 3232 3122 206e  <a id=\"l00221\" n\n+00008590: 616d 653d 226c 3030 3232 3122 3e3c 2f61  ame=\"l00221\"></a\n+000085a0: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n+000085b0: 6e65 6e6f 223e 2020 3232 313c 2f73 7061  neno\">  221</spa\n+000085c0: 6e3e 2020 2020 2020 2020 3c73 7061 6e20  n>        <span \n+000085d0: 636c 6173 733d 2263 6f6d 6d65 6e74 223e  class=\"comment\">\n+000085e0: 2f2f 2020 4d65 7468 6f64 7320 7265 7175  //  Methods requ\n+000085f0: 6972 6564 2066 6f72 2067 656e 6572 616c  ired for general\n+00008600: 206d 6173 6b20 6173 7369 676e 6d65 6e74   mask assignment\n+00008610: 7320 616e 6420 7175 6572 6965 733a 3c2f  s and queries:</\n+00008620: 7370 616e 3e3c 2f64 6976 3e0a 3c64 6976  span></div>.<div\n+00008630: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n+00008640: 2069 643d 226c 3030 3232 3222 206e 616d   id=\"l00222\" nam\n+00008650: 653d 226c 3030 3232 3222 3e3c 2f61 3e3c  e=\"l00222\"></a><\n+00008660: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n+00008670: 6e6f 223e 2020 3232 323c 2f73 7061 6e3e  no\">  222</span>\n+00008680: 2020 2020 2020 2020 3c73 7061 6e20 636c          <span cl\n+00008690: 6173 733d 2263 6f6d 6d65 6e74 223e 2f2f  ass=\"comment\">//\n+000086a0: 3c2f 7370 616e 3e3c 2f64 6976 3e0a 3c64  </span></div>.<d\n+000086b0: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n+000086c0: 3c61 2069 643d 226c 3030 3232 3322 206e  <a id=\"l00223\" n\n+000086d0: 616d 653d 226c 3030 3232 3322 3e3c 2f61  ame=\"l00223\"></a\n+000086e0: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n+000086f0: 6e65 6e6f 223e 3c61 2063 6c61 7373 3d22  neno\"><a class=\"\n+00008700: 6c69 6e65 2220 6872 6566 3d22 6130 3133  line\" href=\"a013\n+00008710: 3435 2e68 746d 6c23 6136 3036 6439 3334  45.html#a606d934\n+00008720: 6336 6433 3062 3363 3861 6536 3137 3030  c6d30b3c8ae61700\n+00008730: 3065 6238 6335 6139 6222 3e20 2032 3233  0eb8c5a9b\">  223\n+00008740: 3c2f 613e 3c2f 7370 616e 3e20 2020 2020  </a></span>     \n+00008750: 2020 203c 7370 616e 2063 6c61 7373 3d22     <span class=\"\n+00008760: 6b65 7977 6f72 6474 7970 6522 3e69 6e74  keywordtype\">int\n+00008770: 3c2f 7370 616e 3e20 3c61 2063 6c61 7373  </span> <a class\n+00008780: 3d22 636f 6465 2068 6c5f 6675 6e63 7469  =\"code hl_functi\n+00008790: 6f6e 2220 6872 6566 3d22 6130 3133 3435  on\" href=\"a01345\n+000087a0: 2e68 746d 6c23 6136 3036 6439 3334 6336  .html#a606d934c6\n+000087b0: 6433 3062 3363 3861 6536 3137 3030 3065  d30b3c8ae617000e\n+000087c0: 6238 6335 6139 6222 3e47 6574 4e75 6d56  b8c5a9b\">GetNumV\n+000087d0: 6572 7465 7857 6569 6768 7473 3c2f 613e  ertexWeights</a>\n+000087e0: 2829 3c73 7061 6e20 636c 6173 733d 226b  ()<span class=\"k\n+000087f0: 6579 776f 7264 223e 2063 6f6e 7374 203c  eyword\"> const <\n+00008800: 2f73 7061 6e3e 7b20 3c73 7061 6e20 636c  /span>{ <span cl\n+00008810: 6173 733d 226b 6579 776f 7264 666c 6f77  ass=\"keywordflow\n+00008820: 223e 7265 7475 726e 3c2f 7370 616e 3e20  \">return</span> \n+00008830: 5f76 436f 756e 743b 207d 3c2f 6469 763e  _vCount; }</div>\n+00008840: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n+00008850: 6522 3e3c 6120 6964 3d22 6c30 3032 3234  e\"><a id=\"l00224\n+00008860: 2220 6e61 6d65 3d22 6c30 3032 3234 223e  \" name=\"l00224\">\n+00008870: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n+00008880: 226c 696e 656e 6f22 3e3c 6120 636c 6173  \"lineno\"><a clas\n+00008890: 733d 226c 696e 6522 2068 7265 663d 2261  s=\"line\" href=\"a\n+000088a0: 3031 3334 352e 6874 6d6c 2361 3930 6530  01345.html#a90e0\n+000088b0: 6432 3938 3166 3239 6263 3762 6264 6662  d2981f29bc7bbdfb\n+000088c0: 6162 6138 6462 3633 3237 3531 223e 2020  aba8db632751\">  \n+000088d0: 3232 343c 2f61 3e3c 2f73 7061 6e3e 2020  224</a></span>  \n+000088e0: 2020 2020 2020 3c73 7061 6e20 636c 6173        <span clas\n+000088f0: 733d 226b 6579 776f 7264 7479 7065 223e  s=\"keywordtype\">\n+00008900: 696e 743c 2f73 7061 6e3e 203c 6120 636c  int</span> <a cl\n+00008910: 6173 733d 2263 6f64 6520 686c 5f66 756e  ass=\"code hl_fun\n+00008920: 6374 696f 6e22 2068 7265 663d 2261 3031  ction\" href=\"a01\n+00008930: 3334 352e 6874 6d6c 2361 3930 6530 6432  345.html#a90e0d2\n+00008940: 3938 3166 3239 6263 3762 6264 6662 6162  981f29bc7bbdfbab\n+00008950: 6138 6462 3633 3237 3531 223e 4765 744e  a8db632751\">GetN\n+00008960: 756d 4564 6765 5765 6967 6874 733c 2f61  umEdgeWeights</a\n+00008970: 3e28 293c 7370 616e 2063 6c61 7373 3d22  >()<span class=\"\n+00008980: 6b65 7977 6f72 6422 3e20 2020 636f 6e73  keyword\">   cons\n+00008990: 7420 3c2f 7370 616e 3e7b 203c 7370 616e  t </span>{ <span\n+000089a0: 2063 6c61 7373 3d22 6b65 7977 6f72 6466   class=\"keywordf\n+000089b0: 6c6f 7722 3e72 6574 7572 6e3c 2f73 7061  low\">return</spa\n+000089c0: 6e3e 205f 6543 6f75 6e74 3b20 7d3c 2f64  n> _eCount; }</d\n+000089d0: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n+000089e0: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n+000089f0: 3232 3522 206e 616d 653d 226c 3030 3232  225\" name=\"l0022\n+00008a00: 3522 3e3c 2f61 3e3c 7370 616e 2063 6c61  5\"></a><span cla\n+00008a10: 7373 3d22 6c69 6e65 6e6f 223e 3c61 2063  ss=\"lineno\"><a c\n+00008a20: 6c61 7373 3d22 6c69 6e65 2220 6872 6566  lass=\"line\" href\n+00008a30: 3d22 6130 3133 3435 2e68 746d 6c23 6139  =\"a01345.html#a9\n+00008a40: 3366 3537 6535 3333 3733 3931 6332 3064  3f57e5337391c20d\n+00008a50: 3436 6465 6664 6233 6161 3263 3166 6522  46defdb3aa2c1fe\"\n+00008a60: 3e20 2032 3235 3c2f 613e 3c2f 7370 616e  >  225</a></span\n+00008a70: 3e20 2020 2020 2020 203c 7370 616e 2063  >        <span c\n+00008a80: 6c61 7373 3d22 6b65 7977 6f72 6474 7970  lass=\"keywordtyp\n+00008a90: 6522 3e69 6e74 3c2f 7370 616e 3e20 3c61  e\">int</span> <a\n+00008aa0: 2063 6c61 7373 3d22 636f 6465 2068 6c5f   class=\"code hl_\n+00008ab0: 6675 6e63 7469 6f6e 2220 6872 6566 3d22  function\" href=\"\n+00008ac0: 6130 3133 3435 2e68 746d 6c23 6139 3366  a01345.html#a93f\n+00008ad0: 3537 6535 3333 3733 3931 6332 3064 3436  57e5337391c20d46\n+00008ae0: 6465 6664 6233 6161 3263 3166 6522 3e47  defdb3aa2c1fe\">G\n+00008af0: 6574 4e75 6d46 6163 6557 6569 6768 7473  etNumFaceWeights\n+00008b00: 3c2f 613e 2829 3c73 7061 6e20 636c 6173  </a>()<span clas\n+00008b10: 733d 226b 6579 776f 7264 223e 2020 2063  s=\"keyword\">   c\n+00008b20: 6f6e 7374 203c 2f73 7061 6e3e 7b20 3c73  onst </span>{ <s\n+00008b30: 7061 6e20 636c 6173 733d 226b 6579 776f  pan class=\"keywo\n+00008b40: 7264 666c 6f77 223e 7265 7475 726e 3c2f  rdflow\">return</\n+00008b50: 7370 616e 3e20 5f66 436f 756e 743b 207d  span> _fCount; }\n+00008b60: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n+00008b70: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n+00008b80: 6c30 3032 3236 2220 6e61 6d65 3d22 6c30  l00226\" name=\"l0\n+00008b90: 3032 3236 223e 3c2f 613e 3c73 7061 6e20  0226\"></a><span \n+00008ba0: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n+00008bb0: 2032 3236 3c2f 7370 616e 3e20 3c2f 6469   226</span> </di\n+00008bc0: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n+00008bd0: 696e 6522 3e3c 6120 6964 3d22 6c30 3032  ine\"><a id=\"l002\n+00008be0: 3237 2220 6e61 6d65 3d22 6c30 3032 3237  27\" name=\"l00227\n+00008bf0: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n+00008c00: 733d 226c 696e 656e 6f22 3e3c 6120 636c  s=\"lineno\"><a cl\n+00008c10: 6173 733d 226c 696e 6522 2068 7265 663d  ass=\"line\" href=\n+00008c20: 2261 3031 3334 352e 6874 6d6c 2361 3965  \"a01345.html#a9e\n+00008c30: 6364 3632 3764 6533 6130 6361 3565 6232  cd627de3a0ca5eb2\n+00008c40: 6164 6265 6438 3465 3339 6236 3831 223e  adbed84e39b681\">\n+00008c50: 2020 3232 373c 2f61 3e3c 2f73 7061 6e3e    227</a></span>\n+00008c60: 2020 2020 2020 2020 3c73 7061 6e20 636c          <span cl\n+00008c70: 6173 733d 226b 6579 776f 7264 7479 7065  ass=\"keywordtype\n+00008c80: 223e 766f 6964 3c2f 7370 616e 3e20 3c61  \">void</span> <a\n+00008c90: 2063 6c61 7373 3d22 636f 6465 2068 6c5f   class=\"code hl_\n+00008ca0: 6675 6e63 7469 6f6e 2220 6872 6566 3d22  function\" href=\"\n+00008cb0: 6130 3133 3435 2e68 746d 6c23 6139 6563  a01345.html#a9ec\n+00008cc0: 6436 3237 6465 3361 3063 6135 6562 3261  d627de3a0ca5eb2a\n+00008cd0: 6462 6564 3834 6533 3962 3638 3122 3e53  dbed84e39b681\">S\n+00008ce0: 6574 4e75 6d56 6572 7465 7857 6569 6768  etNumVertexWeigh\n+00008cf0: 7473 3c2f 613e 283c 7370 616e 2063 6c61  ts</a>(<span cla\n+00008d00: 7373 3d22 6b65 7977 6f72 6474 7970 6522  ss=\"keywordtype\"\n+00008d10: 3e69 6e74 3c2f 7370 616e 3e20 636f 756e  >int</span> coun\n+00008d20: 7429 207b 205f 7643 6f75 6e74 203d 2063  t) { _vCount = c\n+00008d30: 6f75 6e74 3b20 7d3c 2f64 6976 3e0a 3c64  ount; }</div>.<d\n+00008d40: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n+00008d50: 3c61 2069 643d 226c 3030 3232 3822 206e  <a id=\"l00228\" n\n+00008d60: 616d 653d 226c 3030 3232 3822 3e3c 2f61  ame=\"l00228\"></a\n+00008d70: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n+00008d80: 6e65 6e6f 223e 3c61 2063 6c61 7373 3d22  neno\"><a class=\"\n+00008d90: 6c69 6e65 2220 6872 6566 3d22 6130 3133  line\" href=\"a013\n+00008da0: 3435 2e68 746d 6c23 6134 3532 3266 3161  45.html#a4522f1a\n+00008db0: 6364 3566 3934 6130 3662 6232 6635 3035  cd5f94a06bb2f505\n+00008dc0: 3532 6432 3637 3062 3722 3e20 2032 3238  52d2670b7\">  228\n+00008dd0: 3c2f 613e 3c2f 7370 616e 3e20 2020 2020  </a></span>     \n+00008de0: 2020 203c 7370 616e 2063 6c61 7373 3d22     <span class=\"\n+00008df0: 6b65 7977 6f72 6474 7970 6522 3e76 6f69  keywordtype\">voi\n+00008e00: 643c 2f73 7061 6e3e 203c 6120 636c 6173  d</span> <a clas\n+00008e10: 733d 2263 6f64 6520 686c 5f66 756e 6374  s=\"code hl_funct\n+00008e20: 696f 6e22 2068 7265 663d 2261 3031 3334  ion\" href=\"a0134\n+00008e30: 352e 6874 6d6c 2361 3435 3232 6631 6163  5.html#a4522f1ac\n+00008e40: 6435 6639 3461 3036 6262 3266 3530 3535  d5f94a06bb2f5055\n+00008e50: 3264 3236 3730 6237 223e 5365 744e 756d  2d2670b7\">SetNum\n+00008e60: 4564 6765 5765 6967 6874 733c 2f61 3e28  EdgeWeights</a>(\n+00008e70: 2020 3c73 7061 6e20 636c 6173 733d 226b    <span class=\"k\n+00008e80: 6579 776f 7264 7479 7065 223e 696e 743c  eywordtype\">int<\n+00008e90: 2f73 7061 6e3e 2063 6f75 6e74 2920 7b20  /span> count) { \n+00008ea0: 5f65 436f 756e 7420 3d20 636f 756e 743b  _eCount = count;\n+00008eb0: 207d 3c2f 6469 763e 0a3c 6469 7620 636c   }</div>.<div cl\n+00008ec0: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n+00008ed0: 3d22 6c30 3032 3239 2220 6e61 6d65 3d22  =\"l00229\" name=\"\n+00008ee0: 6c30 3032 3239 223e 3c2f 613e 3c73 7061  l00229\"></a><spa\n+00008ef0: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n+00008f00: 3e3c 6120 636c 6173 733d 226c 696e 6522  ><a class=\"line\"\n+00008f10: 2068 7265 663d 2261 3031 3334 352e 6874   href=\"a01345.ht\n+00008f20: 6d6c 2361 3631 6539 3333 6639 6131 3238  ml#a61e933f9a128\n+00008f30: 6362 3136 6433 3136 3131 6664 3936 6563  cb16d31611fd96ec\n+00008f40: 6431 3533 223e 2020 3232 393c 2f61 3e3c  d153\">  229</a><\n+00008f50: 2f73 7061 6e3e 2020 2020 2020 2020 3c73  /span>        <s\n+00008f60: 7061 6e20 636c 6173 733d 226b 6579 776f  pan class=\"keywo\n+00008f70: 7264 7479 7065 223e 766f 6964 3c2f 7370  rdtype\">void</sp\n+00008f80: 616e 3e20 3c61 2063 6c61 7373 3d22 636f  an> <a class=\"co\n+00008f90: 6465 2068 6c5f 6675 6e63 7469 6f6e 2220  de hl_function\" \n+00008fa0: 6872 6566 3d22 6130 3133 3435 2e68 746d  href=\"a01345.htm\n+00008fb0: 6c23 6136 3165 3933 3366 3961 3132 3863  l#a61e933f9a128c\n+00008fc0: 6231 3664 3331 3631 3166 6439 3665 6364  b16d31611fd96ecd\n+00008fd0: 3135 3322 3e53 6574 4e75 6d46 6163 6557  153\">SetNumFaceW\n+00008fe0: 6569 6768 7473 3c2f 613e 2820 203c 7370  eights</a>(  <sp\n+00008ff0: 616e 2063 6c61 7373 3d22 6b65 7977 6f72  an class=\"keywor\n+00009000: 6474 7970 6522 3e69 6e74 3c2f 7370 616e  dtype\">int</span\n+00009010: 3e20 636f 756e 7429 207b 205f 6643 6f75  > count) { _fCou\n+00009020: 6e74 203d 2063 6f75 6e74 3b20 7d3c 2f64  nt = count; }</d\n+00009030: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n+00009040: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n+00009050: 3233 3022 206e 616d 653d 226c 3030 3233  230\" name=\"l0023\n+00009060: 3022 3e3c 2f61 3e3c 7370 616e 2063 6c61  0\"></a><span cla\n+00009070: 7373 3d22 6c69 6e65 6e6f 223e 2020 3233  ss=\"lineno\">  23\n+00009080: 303c 2f73 7061 6e3e 203c 2f64 6976 3e0a  0</span> </div>.\n+00009090: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n+000090a0: 223e 3c61 2069 643d 226c 3030 3233 3122  \"><a id=\"l00231\"\n+000090b0: 206e 616d 653d 226c 3030 3233 3122 3e3c   name=\"l00231\"><\n+000090c0: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n+000090d0: 6c69 6e65 6e6f 223e 3c61 2063 6c61 7373  lineno\"><a class\n+000090e0: 3d22 6c69 6e65 2220 6872 6566 3d22 6130  =\"line\" href=\"a0\n+000090f0: 3133 3435 2e68 746d 6c23 6165 6335 6332  1345.html#aec5c2\n+00009100: 6162 6664 6662 6465 3464 6439 3334 6330  abfdfbde4dd934c0\n+00009110: 3631 3632 3539 3934 3739 3122 3e20 2032  61625994791\">  2\n+00009120: 3331 3c2f 613e 3c2f 7370 616e 3e20 2020  31</a></span>   \n+00009130: 2020 2020 203c 6120 636c 6173 733d 2263       <a class=\"c\n+00009140: 6f64 6520 686c 5f74 7970 6564 6566 2220  ode hl_typedef\" \n+00009150: 6872 6566 3d22 6130 3133 3435 2e68 746d  href=\"a01345.htm\n+00009160: 6c23 6131 3733 6539 3865 3064 3162 3364  l#a173e98e0d1b3d\n+00009170: 3135 6635 6333 6164 3433 3664 3066 6564  15f5c3ad436d0fed\n+00009180: 3430 3122 3e57 6569 6768 743c 2f61 3e20  401\">Weight</a> \n+00009190: 3c73 7061 6e20 636c 6173 733d 226b 6579  <span class=\"key\n+000091a0: 776f 7264 223e 636f 6e73 743c 2f73 7061  word\">const</spa\n+000091b0: 6e3e 2661 6d70 3b20 3c61 2063 6c61 7373  n>&amp; <a class\n+000091c0: 3d22 636f 6465 2068 6c5f 6675 6e63 7469  =\"code hl_functi\n+000091d0: 6f6e 2220 6872 6566 3d22 6130 3133 3435  on\" href=\"a01345\n+000091e0: 2e68 746d 6c23 6165 6335 6332 6162 6664  .html#aec5c2abfd\n+000091f0: 6662 6465 3464 6439 3334 6330 3631 3632  fbde4dd934c06162\n+00009200: 3539 3934 3739 3122 3e56 6572 7465 7857  5994791\">VertexW\n+00009210: 6569 6768 743c 2f61 3e28 3c73 7061 6e20  eight</a>(<span \n+00009220: 636c 6173 733d 226b 6579 776f 7264 7479  class=\"keywordty\n+00009230: 7065 223e 696e 743c 2f73 7061 6e3e 2069  pe\">int</span> i\n+00009240: 6e64 6578 293c 7370 616e 2063 6c61 7373  ndex)<span class\n+00009250: 3d22 6b65 7977 6f72 6422 3e20 636f 6e73  =\"keyword\"> cons\n+00009260: 7420 3c2f 7370 616e 3e7b 203c 7370 616e  t </span>{ <span\n+00009270: 2063 6c61 7373 3d22 6b65 7977 6f72 6466   class=\"keywordf\n+00009280: 6c6f 7722 3e72 6574 7572 6e3c 2f73 7061  low\">return</spa\n+00009290: 6e3e 205f 7657 6569 6768 7473 5b69 6e64  n> _vWeights[ind\n+000092a0: 6578 5d3b 207d 3c2f 6469 763e 0a3c 6469  ex]; }</div>.<di\n+000092b0: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n+000092c0: 6120 6964 3d22 6c30 3032 3332 2220 6e61  a id=\"l00232\" na\n+000092d0: 6d65 3d22 6c30 3032 3332 223e 3c2f 613e  me=\"l00232\"></a>\n+000092e0: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n+000092f0: 656e 6f22 3e3c 6120 636c 6173 733d 226c  eno\"><a class=\"l\n+00009300: 696e 6522 2068 7265 663d 2261 3031 3334  ine\" href=\"a0134\n+00009310: 352e 6874 6d6c 2361 3464 6239 3332 6138  5.html#a4db932a8\n+00009320: 6133 3366 6430 3632 3263 3764 3031 3136  a33fd0622c7d0116\n+00009330: 3765 6231 3462 3532 223e 2020 3233 323c  7eb14b52\">  232<\n+00009340: 2f61 3e3c 2f73 7061 6e3e 2020 2020 2020  /a></span>      \n+00009350: 2020 3c61 2063 6c61 7373 3d22 636f 6465    <a class=\"code\n+00009360: 2068 6c5f 7479 7065 6465 6622 2068 7265   hl_typedef\" hre\n+00009370: 663d 2261 3031 3334 352e 6874 6d6c 2361  f=\"a01345.html#a\n+00009380: 3137 3365 3938 6530 6431 6233 6431 3566  173e98e0d1b3d15f\n+00009390: 3563 3361 6434 3336 6430 6665 6434 3031  5c3ad436d0fed401\n+000093a0: 223e 5765 6967 6874 3c2f 613e 203c 7370  \">Weight</a> <sp\n+000093b0: 616e 2063 6c61 7373 3d22 6b65 7977 6f72  an class=\"keywor\n+000093c0: 6422 3e63 6f6e 7374 3c2f 7370 616e 3e26  d\">const</span>&\n+000093d0: 616d 703b 203c 6120 636c 6173 733d 2263  amp; <a class=\"c\n+000093e0: 6f64 6520 686c 5f66 756e 6374 696f 6e22  ode hl_function\"\n+000093f0: 2068 7265 663d 2261 3031 3334 352e 6874   href=\"a01345.ht\n+00009400: 6d6c 2361 3464 6239 3332 6138 6133 3366  ml#a4db932a8a33f\n+00009410: 6430 3632 3263 3764 3031 3136 3765 6231  d0622c7d01167eb1\n+00009420: 3462 3532 223e 4564 6765 5765 6967 6874  4b52\">EdgeWeight\n+00009430: 3c2f 613e 2820 203c 7370 616e 2063 6c61  </a>(  <span cla\n+00009440: 7373 3d22 6b65 7977 6f72 6474 7970 6522  ss=\"keywordtype\"\n+00009450: 3e69 6e74 3c2f 7370 616e 3e20 696e 6465  >int</span> inde\n+00009460: 7829 3c73 7061 6e20 636c 6173 733d 226b  x)<span class=\"k\n+00009470: 6579 776f 7264 223e 2063 6f6e 7374 203c  eyword\"> const <\n+00009480: 2f73 7061 6e3e 7b20 3c73 7061 6e20 636c  /span>{ <span cl\n+00009490: 6173 733d 226b 6579 776f 7264 666c 6f77  ass=\"keywordflow\n+000094a0: 223e 7265 7475 726e 3c2f 7370 616e 3e20  \">return</span> \n+000094b0: 5f65 5765 6967 6874 735b 696e 6465 785d  _eWeights[index]\n+000094c0: 3b20 7d3c 2f64 6976 3e0a 3c64 6976 2063  ; }</div>.<div c\n+000094d0: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n+000094e0: 643d 226c 3030 3233 3322 206e 616d 653d  d=\"l00233\" name=\n+000094f0: 226c 3030 3233 3322 3e3c 2f61 3e3c 7370  \"l00233\"></a><sp\n+00009500: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n+00009510: 223e 3c61 2063 6c61 7373 3d22 6c69 6e65  \"><a class=\"line\n+00009520: 2220 6872 6566 3d22 6130 3133 3435 2e68  \" href=\"a01345.h\n+00009530: 746d 6c23 6136 3734 6461 3131 3238 3839  tml#a674da112889\n+00009540: 3561 3863 6261 6661 3663 3065 6334 3965  5a8cbafa6c0ec49e\n+00009550: 3961 6563 3022 3e20 2032 3333 3c2f 613e  9aec0\">  233</a>\n+00009560: 3c2f 7370 616e 3e20 2020 2020 2020 203c  </span>        <\n+00009570: 6120 636c 6173 733d 2263 6f64 6520 686c  a class=\"code hl\n+00009580: 5f74 7970 6564 6566 2220 6872 6566 3d22  _typedef\" href=\"\n+00009590: 6130 3133 3435 2e68 746d 6c23 6131 3733  a01345.html#a173\n+000095a0: 6539 3865 3064 3162 3364 3135 6635 6333  e98e0d1b3d15f5c3\n+000095b0: 6164 3433 3664 3066 6564 3430 3122 3e57  ad436d0fed401\">W\n+000095c0: 6569 6768 743c 2f61 3e20 3c73 7061 6e20  eight</a> <span \n+000095d0: 636c 6173 733d 226b 6579 776f 7264 223e  class=\"keyword\">\n+000095e0: 636f 6e73 743c 2f73 7061 6e3e 2661 6d70  const</span>&amp\n+000095f0: 3b20 3c61 2063 6c61 7373 3d22 636f 6465  ; <a class=\"code\n+00009600: 2068 6c5f 6675 6e63 7469 6f6e 2220 6872   hl_function\" hr\n+00009610: 6566 3d22 6130 3133 3435 2e68 746d 6c23  ef=\"a01345.html#\n+00009620: 6136 3734 6461 3131 3238 3839 3561 3863  a674da1128895a8c\n+00009630: 6261 6661 3663 3065 6334 3965 3961 6563  bafa6c0ec49e9aec\n+00009640: 3022 3e46 6163 6557 6569 6768 743c 2f61  0\">FaceWeight</a\n+00009650: 3e28 2020 3c73 7061 6e20 636c 6173 733d  >(  <span class=\n+00009660: 226b 6579 776f 7264 7479 7065 223e 696e  \"keywordtype\">in\n+00009670: 743c 2f73 7061 6e3e 2069 6e64 6578 293c  t</span> index)<\n+00009680: 7370 616e 2063 6c61 7373 3d22 6b65 7977  span class=\"keyw\n+00009690: 6f72 6422 3e20 636f 6e73 7420 3c2f 7370  ord\"> const </sp\n+000096a0: 616e 3e7b 203c 7370 616e 2063 6c61 7373  an>{ <span class\n+000096b0: 3d22 6b65 7977 6f72 6466 6c6f 7722 3e72  =\"keywordflow\">r\n+000096c0: 6574 7572 6e3c 2f73 7061 6e3e 205f 6657  eturn</span> _fW\n+000096d0: 6569 6768 7473 5b69 6e64 6578 5d3b 207d  eights[index]; }\n+000096e0: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n+000096f0: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n+00009700: 6c30 3032 3334 2220 6e61 6d65 3d22 6c30  l00234\" name=\"l0\n+00009710: 3032 3334 223e 3c2f 613e 3c73 7061 6e20  0234\"></a><span \n+00009720: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n+00009730: 2032 3334 3c2f 7370 616e 3e20 3c2f 6469   234</span> </di\n+00009740: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n+00009750: 696e 6522 3e3c 6120 6964 3d22 6c30 3032  ine\"><a id=\"l002\n+00009760: 3335 2220 6e61 6d65 3d22 6c30 3032 3335  35\" name=\"l00235\n+00009770: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n+00009780: 733d 226c 696e 656e 6f22 3e3c 6120 636c  s=\"lineno\"><a cl\n+00009790: 6173 733d 226c 696e 6522 2068 7265 663d  ass=\"line\" href=\n+000097a0: 2261 3031 3334 352e 6874 6d6c 2361 3932  \"a01345.html#a92\n+000097b0: 6539 3839 3837 6639 6134 3232 3062 3965  e98987f9a4220b9e\n+000097c0: 6464 3034 3134 3031 6339 6564 3736 223e  dd041401c9ed76\">\n+000097d0: 2020 3233 353c 2f61 3e3c 2f73 7061 6e3e    235</a></span>\n+000097e0: 2020 2020 2020 2020 3c61 2063 6c61 7373          <a class\n+000097f0: 3d22 636f 6465 2068 6c5f 7479 7065 6465  =\"code hl_typede\n+00009800: 6622 2068 7265 663d 2261 3031 3334 352e  f\" href=\"a01345.\n+00009810: 6874 6d6c 2361 3137 3365 3938 6530 6431  html#a173e98e0d1\n+00009820: 6233 6431 3566 3563 3361 6434 3336 6430  b3d15f5c3ad436d0\n+00009830: 6665 6434 3031 223e 5765 6967 6874 3c2f  fed401\">Weight</\n+00009840: 613e 2661 6d70 3b20 3c61 2063 6c61 7373  a>&amp; <a class\n+00009850: 3d22 636f 6465 2068 6c5f 6675 6e63 7469  =\"code hl_functi\n+00009860: 6f6e 2220 6872 6566 3d22 6130 3133 3435  on\" href=\"a01345\n+00009870: 2e68 746d 6c23 6139 3265 3938 3938 3766  .html#a92e98987f\n+00009880: 3961 3432 3230 6239 6564 6430 3431 3430  9a4220b9edd04140\n+00009890: 3163 3965 6437 3622 3e56 6572 7465 7857  1c9ed76\">VertexW\n+000098a0: 6569 6768 743c 2f61 3e28 3c73 7061 6e20  eight</a>(<span \n+000098b0: 636c 6173 733d 226b 6579 776f 7264 7479  class=\"keywordty\n+000098c0: 7065 223e 696e 743c 2f73 7061 6e3e 2069  pe\">int</span> i\n+000098d0: 6e64 6578 2920 7b20 3c73 7061 6e20 636c  ndex) { <span cl\n+000098e0: 6173 733d 226b 6579 776f 7264 666c 6f77  ass=\"keywordflow\n+000098f0: 223e 7265 7475 726e 3c2f 7370 616e 3e20  \">return</span> \n+00009900: 5f76 5765 6967 6874 735b 696e 6465 785d  _vWeights[index]\n+00009910: 3b20 7d3c 2f64 6976 3e0a 3c64 6976 2063  ; }</div>.<div c\n+00009920: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n+00009930: 643d 226c 3030 3233 3622 206e 616d 653d  d=\"l00236\" name=\n+00009940: 226c 3030 3233 3622 3e3c 2f61 3e3c 7370  \"l00236\"></a><sp\n+00009950: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n+00009960: 223e 3c61 2063 6c61 7373 3d22 6c69 6e65  \"><a class=\"line\n+00009970: 2220 6872 6566 3d22 6130 3133 3435 2e68  \" href=\"a01345.h\n+00009980: 746d 6c23 6135 3333 6462 6133 3261 3934  tml#a533dba32a94\n+00009990: 3638 3534 6333 6632 3565 3237 6235 3231  6854c3f25e27b521\n+000099a0: 6566 3764 6622 3e20 2032 3336 3c2f 613e  ef7df\">  236</a>\n+000099b0: 3c2f 7370 616e 3e20 2020 2020 2020 203c  </span>        <\n+000099c0: 6120 636c 6173 733d 2263 6f64 6520 686c  a class=\"code hl\n+000099d0: 5f74 7970 6564 6566 2220 6872 6566 3d22  _typedef\" href=\"\n+000099e0: 6130 3133 3435 2e68 746d 6c23 6131 3733  a01345.html#a173\n+000099f0: 6539 3865 3064 3162 3364 3135 6635 6333  e98e0d1b3d15f5c3\n+00009a00: 6164 3433 3664 3066 6564 3430 3122 3e57  ad436d0fed401\">W\n+00009a10: 6569 6768 743c 2f61 3e26 616d 703b 203c  eight</a>&amp; <\n+00009a20: 6120 636c 6173 733d 2263 6f64 6520 686c  a class=\"code hl\n+00009a30: 5f66 756e 6374 696f 6e22 2068 7265 663d  _function\" href=\n+00009a40: 2261 3031 3334 352e 6874 6d6c 2361 3533  \"a01345.html#a53\n+00009a50: 3364 6261 3332 6139 3436 3835 3463 3366  3dba32a946854c3f\n+00009a60: 3235 6532 3762 3532 3165 6637 6466 223e  25e27b521ef7df\">\n+00009a70: 4564 6765 5765 6967 6874 3c2f 613e 2820  EdgeWeight</a>( \n+00009a80: 203c 7370 616e 2063 6c61 7373 3d22 6b65   <span class=\"ke\n+00009a90: 7977 6f72 6474 7970 6522 3e69 6e74 3c2f  ywordtype\">int</\n+00009aa0: 7370 616e 3e20 696e 6465 7829 207b 203c  span> index) { <\n+00009ab0: 7370 616e 2063 6c61 7373 3d22 6b65 7977  span class=\"keyw\n+00009ac0: 6f72 6466 6c6f 7722 3e72 6574 7572 6e3c  ordflow\">return<\n+00009ad0: 2f73 7061 6e3e 205f 6557 6569 6768 7473  /span> _eWeights\n+00009ae0: 5b69 6e64 6578 5d3b 207d 3c2f 6469 763e  [index]; }</div>\n+00009af0: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n+00009b00: 6522 3e3c 6120 6964 3d22 6c30 3032 3337  e\"><a id=\"l00237\n+00009b10: 2220 6e61 6d65 3d22 6c30 3032 3337 223e  \" name=\"l00237\">\n+00009b20: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n+00009b30: 226c 696e 656e 6f22 3e3c 6120 636c 6173  \"lineno\"><a clas\n+00009b40: 733d 226c 696e 6522 2068 7265 663d 2261  s=\"line\" href=\"a\n+00009b50: 3031 3334 352e 6874 6d6c 2361 6564 6632  01345.html#aedf2\n+00009b60: 3966 3330 3738 3662 3632 3337 3230 3034  9f30786b62372004\n+00009b70: 6132 3261 3366 6133 3561 3563 223e 2020  a22a3fa35a5c\">  \n+00009b80: 3233 373c 2f61 3e3c 2f73 7061 6e3e 2020  237</a></span>  \n+00009b90: 2020 2020 2020 3c61 2063 6c61 7373 3d22        <a class=\"\n+00009ba0: 636f 6465 2068 6c5f 7479 7065 6465 6622  code hl_typedef\"\n+00009bb0: 2068 7265 663d 2261 3031 3334 352e 6874   href=\"a01345.ht\n+00009bc0: 6d6c 2361 3137 3365 3938 6530 6431 6233  ml#a173e98e0d1b3\n+00009bd0: 6431 3566 3563 3361 6434 3336 6430 6665  d15f5c3ad436d0fe\n+00009be0: 6434 3031 223e 5765 6967 6874 3c2f 613e  d401\">Weight</a>\n+00009bf0: 2661 6d70 3b20 3c61 2063 6c61 7373 3d22  &amp; <a class=\"\n+00009c00: 636f 6465 2068 6c5f 6675 6e63 7469 6f6e  code hl_function\n+00009c10: 2220 6872 6566 3d22 6130 3133 3435 2e68  \" href=\"a01345.h\n+00009c20: 746d 6c23 6165 6466 3239 6633 3037 3836  tml#aedf29f30786\n+00009c30: 6236 3233 3732 3030 3461 3232 6133 6661  b62372004a22a3fa\n+00009c40: 3335 6135 6322 3e46 6163 6557 6569 6768  35a5c\">FaceWeigh\n+00009c50: 743c 2f61 3e28 2020 3c73 7061 6e20 636c  t</a>(  <span cl\n+00009c60: 6173 733d 226b 6579 776f 7264 7479 7065  ass=\"keywordtype\n+00009c70: 223e 696e 743c 2f73 7061 6e3e 2069 6e64  \">int</span> ind\n+00009c80: 6578 2920 7b20 3c73 7061 6e20 636c 6173  ex) { <span clas\n+00009c90: 733d 226b 6579 776f 7264 666c 6f77 223e  s=\"keywordflow\">\n+00009ca0: 7265 7475 726e 3c2f 7370 616e 3e20 5f66  return</span> _f\n+00009cb0: 5765 6967 6874 735b 696e 6465 785d 3b20  Weights[index]; \n+00009cc0: 7d3c 2f64 6976 3e0a 3c64 6976 2063 6c61  }</div>.<div cla\n+00009cd0: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n+00009ce0: 226c 3030 3233 3822 206e 616d 653d 226c  \"l00238\" name=\"l\n+00009cf0: 3030 3233 3822 3e3c 2f61 3e3c 7370 616e  00238\"></a><span\n+00009d00: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n+00009d10: 2020 3233 383c 2f73 7061 6e3e 203c 2f64    238</span> </d\n+00009d20: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n+00009d30: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n+00009d40: 3233 3922 206e 616d 653d 226c 3030 3233  239\" name=\"l0023\n+00009d50: 3922 3e3c 2f61 3e3c 7370 616e 2063 6c61  9\"></a><span cla\n+00009d60: 7373 3d22 6c69 6e65 6e6f 223e 3c61 2063  ss=\"lineno\"><a c\n+00009d70: 6c61 7373 3d22 6c69 6e65 2220 6872 6566  lass=\"line\" href\n+00009d80: 3d22 6130 3133 3435 2e68 746d 6c23 6133  =\"a01345.html#a3\n+00009d90: 3531 3965 3565 3035 3633 3130 3236 6661  519e5e05631026fa\n+00009da0: 6439 3463 3736 3136 6635 6530 6536 3722  d94c7616f5e0e67\"\n+00009db0: 3e20 2032 3339 3c2f 613e 3c2f 7370 616e  >  239</a></span\n+00009dc0: 3e20 2020 2020 2020 203c 7370 616e 2063  >        <span c\n+00009dd0: 6c61 7373 3d22 6b65 7977 6f72 6474 7970  lass=\"keywordtyp\n+00009de0: 6522 3e62 6f6f 6c3c 2f73 7061 6e3e 203c  e\">bool</span> <\n+00009df0: 6120 636c 6173 733d 2263 6f64 6520 686c  a class=\"code hl\n+00009e00: 5f66 756e 6374 696f 6e22 2068 7265 663d  _function\" href=\n+00009e10: 2261 3031 3334 352e 6874 6d6c 2361 3335  \"a01345.html#a35\n+00009e20: 3139 6535 6530 3536 3331 3032 3666 6164  19e5e05631026fad\n+00009e30: 3934 6337 3631 3666 3565 3065 3637 223e  94c7616f5e0e67\">\n+00009e40: 4172 6546 6163 6557 6569 6768 7473 466f  AreFaceWeightsFo\n+00009e50: 7246 6163 6543 656e 7465 7273 3c2f 613e  rFaceCenters</a>\n+00009e60: 2829 3c73 7061 6e20 636c 6173 733d 226b  ()<span class=\"k\n+00009e70: 6579 776f 7264 223e 2063 6f6e 7374 2020  eyword\"> const  \n+00009e80: 3c2f 7370 616e 3e7b 203c 7370 616e 2063  </span>{ <span c\n+00009e90: 6c61 7373 3d22 6b65 7977 6f72 6466 6c6f  lass=\"keywordflo\n+00009ea0: 7722 3e72 6574 7572 6e3c 2f73 7061 6e3e  w\">return</span>\n+00009eb0: 205f 6657 6569 6768 7473 466f 7243 656e   _fWeightsForCen\n+00009ec0: 7465 7273 3b20 7d3c 2f64 6976 3e0a 3c64  ters; }</div>.<d\n+00009ed0: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n+00009ee0: 3c61 2069 643d 226c 3030 3234 3022 206e  <a id=\"l00240\" n\n+00009ef0: 616d 653d 226c 3030 3234 3022 3e3c 2f61  ame=\"l00240\"></a\n+00009f00: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n+00009f10: 6e65 6e6f 223e 3c61 2063 6c61 7373 3d22  neno\"><a class=\"\n+00009f20: 6c69 6e65 2220 6872 6566 3d22 6130 3133  line\" href=\"a013\n+00009f30: 3435 2e68 746d 6c23 6139 6261 3439 3239  45.html#a9ba4929\n+00009f40: 6138 6138 6136 6433 3461 6466 6335 6632  a8a8a6d34adfc5f2\n+00009f50: 6265 6436 3637 6437 3622 3e20 2032 3430  bed667d76\">  240\n+00009f60: 3c2f 613e 3c2f 7370 616e 3e20 2020 2020  </a></span>     \n+00009f70: 2020 203c 7370 616e 2063 6c61 7373 3d22     <span class=\"\n+00009f80: 6b65 7977 6f72 6474 7970 6522 3e76 6f69  keywordtype\">voi\n+00009f90: 643c 2f73 7061 6e3e 203c 6120 636c 6173  d</span> <a clas\n+00009fa0: 733d 2263 6f64 6520 686c 5f66 756e 6374  s=\"code hl_funct\n+00009fb0: 696f 6e22 2068 7265 663d 2261 3031 3334  ion\" href=\"a0134\n+00009fc0: 352e 6874 6d6c 2361 3962 6134 3932 3961  5.html#a9ba4929a\n+00009fd0: 3861 3861 3664 3334 6164 6663 3566 3262  8a8a6d34adfc5f2b\n+00009fe0: 6564 3636 3764 3736 223e 5365 7446 6163  ed667d76\">SetFac\n+00009ff0: 6557 6569 6768 7473 466f 7246 6163 6543  eWeightsForFaceC\n+0000a000: 656e 7465 7273 3c2f 613e 283c 7370 616e  enters</a>(<span\n+0000a010: 2063 6c61 7373 3d22 6b65 7977 6f72 6474   class=\"keywordt\n+0000a020: 7970 6522 3e62 6f6f 6c3c 2f73 7061 6e3e  ype\">bool</span>\n+0000a030: 206f 6e29 207b 205f 6657 6569 6768 7473   on) { _fWeights\n+0000a040: 466f 7243 656e 7465 7273 203d 206f 6e3b  ForCenters = on;\n+0000a050: 207d 3c2f 6469 763e 0a3c 6469 7620 636c   }</div>.<div cl\n+0000a060: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n+0000a070: 3d22 6c30 3032 3431 2220 6e61 6d65 3d22  =\"l00241\" name=\"\n+0000a080: 6c30 3032 3431 223e 3c2f 613e 3c73 7061  l00241\"></a><spa\n+0000a090: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n+0000a0a0: 3e20 2032 3431 3c2f 7370 616e 3e20 3c2f  >  241</span> </\n+0000a0b0: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n+0000a0c0: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n+0000a0d0: 3032 3432 2220 6e61 6d65 3d22 6c30 3032  0242\" name=\"l002\n+0000a0e0: 3432 223e 3c2f 613e 3c73 7061 6e20 636c  42\"></a><span cl\n+0000a0f0: 6173 733d 226c 696e 656e 6f22 3e20 2032  ass=\"lineno\">  2\n+0000a100: 3432 3c2f 7370 616e 3e20 2020 203c 7370  42</span>    <sp\n+0000a110: 616e 2063 6c61 7373 3d22 6b65 7977 6f72  an class=\"keywor\n+0000a120: 6422 3e70 7562 6c69 633c 2f73 7061 6e3e  d\">public</span>\n+0000a130: 3a3c 2f64 6976 3e0a 3c64 6976 2063 6c61  :</div>.<div cla\n+0000a140: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n+0000a150: 226c 3030 3234 3322 206e 616d 653d 226c  \"l00243\" name=\"l\n+0000a160: 3030 3234 3322 3e3c 2f61 3e3c 7370 616e  00243\"></a><span\n+0000a170: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n+0000a180: 2020 3234 333c 2f73 7061 6e3e 203c 2f64    243</span> </d\n+0000a190: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n+0000a1a0: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n+0000a1b0: 3234 3422 206e 616d 653d 226c 3030 3234  244\" name=\"l0024\n+0000a1c0: 3422 3e3c 2f61 3e3c 7370 616e 2063 6c61  4\"></a><span cla\n+0000a1d0: 7373 3d22 6c69 6e65 6e6f 223e 2020 3234  ss=\"lineno\">  24\n+0000a1e0: 343c 2f73 7061 6e3e 2020 2020 2020 2020  4</span>        \n+0000a1f0: 3c73 7061 6e20 636c 6173 733d 2263 6f6d  <span class=\"com\n+0000a200: 6d65 6e74 223e 2f2f 3c2f 7370 616e 3e3c  ment\">//</span><\n+0000a210: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n+0000a220: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n+0000a230: 3030 3234 3522 206e 616d 653d 226c 3030  00245\" name=\"l00\n+0000a240: 3234 3522 3e3c 2f61 3e3c 7370 616e 2063  245\"></a><span c\n+0000a250: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n+0000a260: 3234 353c 2f73 7061 6e3e 2020 2020 2020  245</span>      \n+0000a270: 2020 3c73 7061 6e20 636c 6173 733d 2263    <span class=\"c\n+0000a280: 6f6d 6d65 6e74 223e 2f2f 2020 4164 6469  omment\">//  Addi\n+0000a290: 7469 6f6e 616c 206d 6574 686f 6473 202d  tional methods -\n+0000a2a0: 2d20 6d61 696e 6c79 2074 6865 2062 6c65  - mainly the ble\n+0000a2b0: 6e64 696e 6720 6d65 7468 6f64 2066 6f72  nding method for\n+0000a2c0: 2076 6572 7465 782d 7665 7274 6578 206d   vertex-vertex m\n+0000a2d0: 6173 6b73 3a3c 2f73 7061 6e3e 3c2f 6469  asks:</span></di\n+0000a2e0: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n+0000a2f0: 696e 6522 3e3c 6120 6964 3d22 6c30 3032  ine\"><a id=\"l002\n+0000a300: 3436 2220 6e61 6d65 3d22 6c30 3032 3436  46\" name=\"l00246\n+0000a310: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n+0000a320: 733d 226c 696e 656e 6f22 3e20 2032 3436  s=\"lineno\">  246\n+0000a330: 3c2f 7370 616e 3e20 2020 2020 2020 203c  </span>        <\n+0000a340: 7370 616e 2063 6c61 7373 3d22 636f 6d6d  span class=\"comm\n+0000a350: 656e 7422 3e2f 2f3c 2f73 7061 6e3e 3c2f  ent\">//</span></\n+0000a360: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n+0000a370: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n+0000a380: 3032 3437 2220 6e61 6d65 3d22 6c30 3032  0247\" name=\"l002\n+0000a390: 3437 223e 3c2f 613e 3c73 7061 6e20 636c  47\"></a><span cl\n+0000a3a0: 6173 733d 226c 696e 656e 6f22 3e20 2032  ass=\"lineno\">  2\n+0000a3b0: 3437 3c2f 7370 616e 3e20 2020 2020 2020  47</span>       \n+0000a3c0: 203c 7370 616e 2063 6c61 7373 3d22 6b65   <span class=\"ke\n+0000a3d0: 7977 6f72 6422 3e74 656d 706c 6174 653c  yword\">template<\n+0000a3e0: 2f73 7061 6e3e 2026 6c74 3b3c 7370 616e  /span> &lt;<span\n+0000a3f0: 2063 6c61 7373 3d22 6b65 7977 6f72 6422   class=\"keyword\"\n+0000a400: 3e74 7970 656e 616d 653c 2f73 7061 6e3e  >typename</span>\n+0000a410: 2055 5345 525f 4d41 534b 2667 743b 3c2f   USER_MASK&gt;</\n+0000a420: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n+0000a430: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n+0000a440: 3032 3438 2220 6e61 6d65 3d22 6c30 3032  0248\" name=\"l002\n+0000a450: 3438 223e 3c2f 613e 3c73 7061 6e20 636c  48\"></a><span cl\n+0000a460: 6173 733d 226c 696e 656e 6f22 3e20 2032  ass=\"lineno\">  2\n+0000a470: 3438 3c2f 7370 616e 3e20 2020 2020 2020  48</span>       \n+0000a480: 203c 7370 616e 2063 6c61 7373 3d22 6b65   <span class=\"ke\n+0000a490: 7977 6f72 6422 3e69 6e6c 696e 653c 2f73  yword\">inline</s\n+0000a4a0: 7061 6e3e 203c 7370 616e 2063 6c61 7373  pan> <span class\n+0000a4b0: 3d22 6b65 7977 6f72 6474 7970 6522 3e76  =\"keywordtype\">v\n+0000a4c0: 6f69 643c 2f73 7061 6e3e 3c2f 6469 763e  oid</span></div>\n+0000a4d0: 0a3c 6469 7620 636c 6173 733d 2266 6f6c  .<div class=\"fol\n+0000a4e0: 646f 7065 6e22 2069 643d 2266 6f6c 646f  dopen\" id=\"foldo\n+0000a4f0: 7065 6e30 3032 3439 2220 6461 7461 2d73  pen00249\" data-s\n+0000a500: 7461 7274 3d22 7b22 2064 6174 612d 656e  tart=\"{\" data-en\n+0000a510: 643d 227d 223e 0a3c 6469 7620 636c 6173  d=\"}\">.<div clas\n+0000a520: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n+0000a530: 6c30 3032 3439 2220 6e61 6d65 3d22 6c30  l00249\" name=\"l0\n+0000a540: 3032 3439 223e 3c2f 613e 3c73 7061 6e20  0249\"></a><span \n+0000a550: 636c 6173 733d 226c 696e 656e 6f22 3e3c  class=\"lineno\"><\n+0000a560: 6120 636c 6173 733d 226c 696e 6522 2068  a class=\"line\" h\n+0000a570: 7265 663d 2261 3031 3334 352e 6874 6d6c  ref=\"a01345.html\n+0000a580: 2361 3565 6438 3030 6539 6437 3032 6635  #a5ed800e9d702f5\n+0000a590: 3761 6539 3738 6665 3630 6261 3261 3337  7ae978fe60ba2a37\n+0000a5a0: 6463 223e 2020 3234 393c 2f61 3e3c 2f73  dc\">  249</a></s\n+0000a5b0: 7061 6e3e 2020 2020 2020 2020 3c61 2063  pan>        <a c\n+0000a5c0: 6c61 7373 3d22 636f 6465 2068 6c5f 6675  lass=\"code hl_fu\n+0000a5d0: 6e63 7469 6f6e 2220 6872 6566 3d22 6130  nction\" href=\"a0\n+0000a5e0: 3133 3435 2e68 746d 6c23 6135 6564 3830  1345.html#a5ed80\n+0000a5f0: 3065 3964 3730 3266 3537 6165 3937 3866  0e9d702f57ae978f\n+0000a600: 6536 3062 6132 6133 3764 6322 3e43 6f6d  e60ba2a37dc\">Com\n+0000a610: 6269 6e65 5665 7274 6578 5665 7274 6578  bineVertexVertex\n+0000a620: 4d61 736b 733c 2f61 3e28 3c61 2063 6c61  Masks</a>(<a cla\n+0000a630: 7373 3d22 636f 6465 2068 6c5f 7479 7065  ss=\"code hl_type\n+0000a640: 6465 6622 2068 7265 663d 2261 3031 3334  def\" href=\"a0134\n+0000a650: 352e 6874 6d6c 2361 3137 3365 3938 6530  5.html#a173e98e0\n+0000a660: 6431 6233 6431 3566 3563 3361 6434 3336  d1b3d15f5c3ad436\n+0000a670: 6430 6665 6434 3031 223e 5765 6967 6874  d0fed401\">Weight\n+0000a680: 3c2f 613e 2074 6869 7343 6f65 6666 2c20  </a> thisCoeff, \n+0000a690: 3c61 2063 6c61 7373 3d22 636f 6465 2068  <a class=\"code h\n+0000a6a0: 6c5f 7479 7065 6465 6622 2068 7265 663d  l_typedef\" href=\n+0000a6b0: 2261 3031 3334 352e 6874 6d6c 2361 3137  \"a01345.html#a17\n+0000a6c0: 3365 3938 6530 6431 6233 6431 3566 3563  3e98e0d1b3d15f5c\n+0000a6d0: 3361 6434 3336 6430 6665 6434 3031 223e  3ad436d0fed401\">\n+0000a6e0: 5765 6967 6874 3c2f 613e 2064 7374 436f  Weight</a> dstCo\n+0000a6f0: 6566 662c 2055 5345 525f 4d41 534b 2661  eff, USER_MASK&a\n+0000a700: 6d70 3b20 6473 7429 3c73 7061 6e20 636c  mp; dst)<span cl\n+0000a710: 6173 733d 226b 6579 776f 7264 223e 2063  ass=\"keyword\"> c\n+0000a720: 6f6e 7374 203c 2f73 7061 6e3e 7b3c 2f64  onst </span>{</d\n+0000a730: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n+0000a740: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n+0000a750: 3235 3022 206e 616d 653d 226c 3030 3235  250\" name=\"l0025\n+0000a760: 3022 3e3c 2f61 3e3c 7370 616e 2063 6c61  0\"></a><span cla\n+0000a770: 7373 3d22 6c69 6e65 6e6f 223e 2020 3235  ss=\"lineno\">  25\n+0000a780: 303c 2f73 7061 6e3e 203c 2f64 6976 3e0a  0</span> </div>.\n+0000a790: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n+0000a7a0: 223e 3c61 2069 643d 226c 3030 3235 3122  \"><a id=\"l00251\"\n+0000a7b0: 206e 616d 653d 226c 3030 3235 3122 3e3c   name=\"l00251\"><\n+0000a7c0: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n+0000a7d0: 6c69 6e65 6e6f 223e 2020 3235 313c 2f73  lineno\">  251</s\n+0000a7e0: 7061 6e3e 2020 2020 2020 2020 2020 2020  pan>            \n+0000a7f0: 3c73 7061 6e20 636c 6173 733d 2263 6f6d  <span class=\"com\n+0000a800: 6d65 6e74 223e 2f2f 3c2f 7370 616e 3e3c  ment\">//</span><\n+0000a810: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n+0000a820: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n+0000a830: 3030 3235 3222 206e 616d 653d 226c 3030  00252\" name=\"l00\n+0000a840: 3235 3222 3e3c 2f61 3e3c 7370 616e 2063  252\"></a><span c\n+0000a850: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n+0000a860: 3235 323c 2f73 7061 6e3e 2020 2020 2020  252</span>      \n+0000a870: 2020 2020 2020 3c73 7061 6e20 636c 6173        <span clas\n+0000a880: 733d 2263 6f6d 6d65 6e74 223e 2f2f 2020  s=\"comment\">//  \n+0000a890: 5468 6973 2069 6d70 6c65 6d65 6e74 6174  This implementat\n+0000a8a0: 696f 6e20 6973 2063 6f6e 766f 6c75 7465  ion is convolute\n+0000a8b0: 6420 6279 2074 6865 2070 6f74 656e 7469  d by the potenti\n+0000a8c0: 616c 2073 7061 7273 6974 7920 6f66 2065  al sparsity of e\n+0000a8d0: 6163 6820 6d61 736b 2e20 2053 696e 6365  ach mask.  Since\n+0000a8e0: 3c2f 7370 616e 3e3c 2f64 6976 3e0a 3c64  </span></div>.<d\n+0000a8f0: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n+0000a900: 3c61 2069 643d 226c 3030 3235 3322 206e  <a id=\"l00253\" n\n+0000a910: 616d 653d 226c 3030 3235 3322 3e3c 2f61  ame=\"l00253\"></a\n+0000a920: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n+0000a930: 6e65 6e6f 223e 2020 3235 333c 2f73 7061  neno\">  253</spa\n+0000a940: 6e3e 2020 2020 2020 2020 2020 2020 3c73  n>            <s\n+0000a950: 7061 6e20 636c 6173 733d 2263 6f6d 6d65  pan class=\"comme\n+0000a960: 6e74 223e 2f2f 2020 6974 2069 7320 7370  nt\">//  it is sp\n+0000a970: 6563 6966 6963 2074 6f20 6120 7665 7274  ecific to a vert\n+0000a980: 6578 2d76 6572 7465 7820 6d61 736b 2c20  ex-vertex mask, \n+0000a990: 7765 2061 7265 2067 7561 7261 6e74 6565  we are guarantee\n+0000a9a0: 6420 746f 2068 6176 6520 6578 6163 746c  d to have exactl\n+0000a9b0: 7920 6f6e 653c 2f73 7061 6e3e 3c2f 6469  y one</span></di\n+0000a9c0: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n+0000a9d0: 696e 6522 3e3c 6120 6964 3d22 6c30 3032  ine\"><a id=\"l002\n+0000a9e0: 3534 2220 6e61 6d65 3d22 6c30 3032 3534  54\" name=\"l00254\n+0000a9f0: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n+0000aa00: 733d 226c 696e 656e 6f22 3e20 2032 3534  s=\"lineno\">  254\n+0000aa10: 3c2f 7370 616e 3e20 2020 2020 2020 2020  </span>         \n+0000aa20: 2020 203c 7370 616e 2063 6c61 7373 3d22     <span class=\"\n+0000aa30: 636f 6d6d 656e 7422 3e2f 2f20 2076 6572  comment\">//  ver\n+0000aa40: 7465 782d 7765 6967 6874 2066 6f72 2062  tex-weight for b\n+0000aa50: 6f74 6820 6d61 736b 732c 2062 7574 2074  oth masks, but t\n+0000aa60: 6865 2065 6467 652d 2061 6e64 2066 6163  he edge- and fac\n+0000aa70: 652d 7765 6967 6874 7320 6172 6520 6f70  e-weights are op\n+0000aa80: 7469 6f6e 616c 2e20 2054 6865 3c2f 7370  tional.  The</sp\n+0000aa90: 616e 3e3c 2f64 6976 3e0a 3c64 6976 2063  an></div>.<div c\n+0000aaa0: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n+0000aab0: 643d 226c 3030 3235 3522 206e 616d 653d  d=\"l00255\" name=\n+0000aac0: 226c 3030 3235 3522 3e3c 2f61 3e3c 7370  \"l00255\"></a><sp\n+0000aad0: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n+0000aae0: 223e 2020 3235 353c 2f73 7061 6e3e 2020  \">  255</span>  \n+0000aaf0: 2020 2020 2020 2020 2020 3c73 7061 6e20            <span \n+0000ab00: 636c 6173 733d 2263 6f6d 6d65 6e74 223e  class=\"comment\">\n+0000ab10: 2f2f 2020 6368 696c 6420 6d61 736b 2028  //  child mask (\n+0000ab20: 7468 6520 2671 756f 743b 736f 7572 6365  the &quot;source\n+0000ab30: 2671 756f 743b 2920 7368 6f75 6c64 2068  &quot;) should h\n+0000ab40: 6176 6520 6120 7375 7065 7273 6574 206f  ave a superset o\n+0000ab50: 6620 7468 6520 7765 6967 6874 7320 6f66  f the weights of\n+0000ab60: 2074 6865 2070 6172 656e 743c 2f73 7061   the parent</spa\n+0000ab70: 6e3e 3c2f 6469 763e 0a3c 6469 7620 636c  n></div>.<div cl\n+0000ab80: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n+0000ab90: 3d22 6c30 3032 3536 2220 6e61 6d65 3d22  =\"l00256\" name=\"\n+0000aba0: 6c30 3032 3536 223e 3c2f 613e 3c73 7061  l00256\"></a><spa\n+0000abb0: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n+0000abc0: 3e20 2032 3536 3c2f 7370 616e 3e20 2020  >  256</span>   \n+0000abd0: 2020 2020 2020 2020 203c 7370 616e 2063           <span c\n+0000abe0: 6c61 7373 3d22 636f 6d6d 656e 7422 3e2f  lass=\"comment\">/\n+0000abf0: 2f20 2028 7468 6520 2671 756f 743b 6465  /  (the &quot;de\n+0000ac00: 7374 696e 6174 696f 6e26 7175 6f74 3b29  stination&quot;)\n+0000ac10: 2067 6976 656e 2069 7473 2072 6564 7563   given its reduc\n+0000ac20: 6564 2073 6861 7270 6e65 7373 2c20 736f  ed sharpness, so\n+0000ac30: 2077 6520 666f 7274 756e 6174 656c 7920   we fortunately \n+0000ac40: 646f 6e26 2333 393b 7420 6e65 6564 2074  don&#39;t need t\n+0000ac50: 6f3c 2f73 7061 6e3e 3c2f 6469 763e 0a3c  o</span></div>.<\n+0000ac60: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n+0000ac70: 3e3c 6120 6964 3d22 6c30 3032 3537 2220  ><a id=\"l00257\" \n+0000ac80: 6e61 6d65 3d22 6c30 3032 3537 223e 3c2f  name=\"l00257\"></\n+0000ac90: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n+0000aca0: 696e 656e 6f22 3e20 2032 3537 3c2f 7370  ineno\">  257</sp\n+0000acb0: 616e 3e20 2020 2020 2020 2020 2020 203c  an>            <\n+0000acc0: 7370 616e 2063 6c61 7373 3d22 636f 6d6d  span class=\"comm\n+0000acd0: 656e 7422 3e2f 2f20 2074 6573 7420 616c  ent\">//  test al\n+0000ace0: 6c20 7065 726d 7574 6174 696f 6e73 2e3c  l permutations.<\n+0000acf0: 2f73 7061 6e3e 3c2f 6469 763e 0a3c 6469  /span></div>.<di\n+0000ad00: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n+0000ad10: 6120 6964 3d22 6c30 3032 3538 2220 6e61  a id=\"l00258\" na\n+0000ad20: 6d65 3d22 6c30 3032 3538 223e 3c2f 613e  me=\"l00258\"></a>\n+0000ad30: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n+0000ad40: 656e 6f22 3e20 2032 3538 3c2f 7370 616e  eno\">  258</span\n+0000ad50: 3e20 2020 2020 2020 2020 2020 203c 7370  >            <sp\n+0000ad60: 616e 2063 6c61 7373 3d22 636f 6d6d 656e  an class=\"commen\n+0000ad70: 7422 3e2f 2f3c 2f73 7061 6e3e 3c2f 6469  t\">//</span></di\n+0000ad80: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n+0000ad90: 696e 6522 3e3c 6120 6964 3d22 6c30 3032  ine\"><a id=\"l002\n+0000ada0: 3539 2220 6e61 6d65 3d22 6c30 3032 3539  59\" name=\"l00259\n+0000adb0: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n+0000adc0: 733d 226c 696e 656e 6f22 3e20 2032 3539  s=\"lineno\">  259\n+0000add0: 3c2f 7370 616e 3e20 2020 2020 2020 2020  </span>         \n+0000ade0: 2020 2064 7374 2e56 6572 7465 7857 6569     dst.VertexWei\n+0000adf0: 6768 7428 3029 203d 2064 7374 436f 6566  ght(0) = dstCoef\n+0000ae00: 6620 2a20 6473 742e 5665 7274 6578 5765  f * dst.VertexWe\n+0000ae10: 6967 6874 2830 2920 2b20 7468 6973 436f  ight(0) + thisCo\n+0000ae20: 6566 6620 2a20 7468 6973 2d26 6774 3b3c  eff * this-&gt;<\n+0000ae30: 6120 636c 6173 733d 2263 6f64 6520 686c  a class=\"code hl\n+0000ae40: 5f66 756e 6374 696f 6e22 2068 7265 663d  _function\" href=\n+0000ae50: 2261 3031 3334 352e 6874 6d6c 2361 6563  \"a01345.html#aec\n+0000ae60: 3563 3261 6266 6466 6264 6534 6464 3933  5c2abfdfbde4dd93\n+0000ae70: 3463 3036 3136 3235 3939 3437 3931 223e  4c061625994791\">\n+0000ae80: 5665 7274 6578 5765 6967 6874 3c2f 613e  VertexWeight</a>\n+0000ae90: 2830 293b 3c2f 6469 763e 0a3c 6469 7620  (0);</div>.<div \n+0000aea0: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n+0000aeb0: 6964 3d22 6c30 3032 3630 2220 6e61 6d65  id=\"l00260\" name\n+0000aec0: 3d22 6c30 3032 3630 223e 3c2f 613e 3c73  =\"l00260\"></a><s\n+0000aed0: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n+0000aee0: 6f22 3e20 2032 3630 3c2f 7370 616e 3e20  o\">  260</span> \n+0000aef0: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n+0000af00: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n+0000af10: 6c30 3032 3631 2220 6e61 6d65 3d22 6c30  l00261\" name=\"l0\n+0000af20: 3032 3631 223e 3c2f 613e 3c73 7061 6e20  0261\"></a><span \n+0000af30: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n+0000af40: 2032 3631 3c2f 7370 616e 3e20 2020 2020   261</span>     \n+0000af50: 2020 2020 2020 203c 7370 616e 2063 6c61         <span cla\n+0000af60: 7373 3d22 6b65 7977 6f72 6474 7970 6522  ss=\"keywordtype\"\n+0000af70: 3e69 6e74 3c2f 7370 616e 3e20 6564 6765  >int</span> edge\n+0000af80: 5765 6967 6874 436f 756e 7420 3d20 7468  WeightCount = th\n+0000af90: 6973 2d26 6774 3b3c 6120 636c 6173 733d  is-&gt;<a class=\n+0000afa0: 2263 6f64 6520 686c 5f66 756e 6374 696f  \"code hl_functio\n+0000afb0: 6e22 2068 7265 663d 2261 3031 3334 352e  n\" href=\"a01345.\n+0000afc0: 6874 6d6c 2361 3930 6530 6432 3938 3166  html#a90e0d2981f\n+0000afd0: 3239 6263 3762 6264 6662 6162 6138 6462  29bc7bbdfbaba8db\n+0000afe0: 3633 3237 3531 223e 4765 744e 756d 4564  632751\">GetNumEd\n+0000aff0: 6765 5765 6967 6874 733c 2f61 3e28 293b  geWeights</a>();\n+0000b000: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n+0000b010: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n+0000b020: 6c30 3032 3632 2220 6e61 6d65 3d22 6c30  l00262\" name=\"l0\n+0000b030: 3032 3632 223e 3c2f 613e 3c73 7061 6e20  0262\"></a><span \n+0000b040: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n+0000b050: 2032 3632 3c2f 7370 616e 3e20 2020 2020   262</span>     \n+0000b060: 2020 2020 2020 203c 7370 616e 2063 6c61         <span cla\n+0000b070: 7373 3d22 6b65 7977 6f72 6466 6c6f 7722  ss=\"keywordflow\"\n+0000b080: 3e69 663c 2f73 7061 6e3e 2028 6564 6765  >if</span> (edge\n+0000b090: 5765 6967 6874 436f 756e 7429 207b 3c2f  WeightCount) {</\n+0000b0a0: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n+0000b0b0: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n+0000b0c0: 3032 3633 2220 6e61 6d65 3d22 6c30 3032  0263\" name=\"l002\n+0000b0d0: 3633 223e 3c2f 613e 3c73 7061 6e20 636c  63\"></a><span cl\n+0000b0e0: 6173 733d 226c 696e 656e 6f22 3e20 2032  ass=\"lineno\">  2\n+0000b0f0: 3633 3c2f 7370 616e 3e20 2020 2020 2020  63</span>       \n+0000b100: 2020 2020 2020 2020 203c 7370 616e 2063           <span c\n+0000b110: 6c61 7373 3d22 6b65 7977 6f72 6466 6c6f  lass=\"keywordflo\n+0000b120: 7722 3e69 663c 2f73 7061 6e3e 2028 6473  w\">if</span> (ds\n+0000b130: 742e 4765 744e 756d 4564 6765 5765 6967  t.GetNumEdgeWeig\n+0000b140: 6874 7328 2920 3d3d 2030 2920 7b3c 2f64  hts() == 0) {</d\n+0000b150: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n+0000b160: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n+0000b170: 3236 3422 206e 616d 653d 226c 3030 3236  264\" name=\"l0026\n+0000b180: 3422 3e3c 2f61 3e3c 7370 616e 2063 6c61  4\"></a><span cla\n+0000b190: 7373 3d22 6c69 6e65 6e6f 223e 2020 3236  ss=\"lineno\">  26\n+0000b1a0: 343c 2f73 7061 6e3e 2020 2020 2020 2020  4</span>        \n+0000b1b0: 2020 2020 2020 2020 2020 2020 6473 742e              dst.\n+0000b1c0: 5365 744e 756d 4564 6765 5765 6967 6874  SetNumEdgeWeight\n+0000b1d0: 7328 6564 6765 5765 6967 6874 436f 756e  s(edgeWeightCoun\n+0000b1e0: 7429 3b3c 2f64 6976 3e0a 3c64 6976 2063  t);</div>.<div c\n+0000b1f0: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n+0000b200: 643d 226c 3030 3236 3522 206e 616d 653d  d=\"l00265\" name=\n+0000b210: 226c 3030 3236 3522 3e3c 2f61 3e3c 7370  \"l00265\"></a><sp\n+0000b220: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n+0000b230: 223e 2020 3236 353c 2f73 7061 6e3e 2020  \">  265</span>  \n+0000b240: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000b250: 2020 3c73 7061 6e20 636c 6173 733d 226b    <span class=\"k\n+0000b260: 6579 776f 7264 666c 6f77 223e 666f 723c  eywordflow\">for<\n+0000b270: 2f73 7061 6e3e 2028 3c73 7061 6e20 636c  /span> (<span cl\n+0000b280: 6173 733d 226b 6579 776f 7264 7479 7065  ass=\"keywordtype\n+0000b290: 223e 696e 743c 2f73 7061 6e3e 2069 203d  \">int</span> i =\n+0000b2a0: 2030 3b20 6920 266c 743b 2065 6467 6557   0; i &lt; edgeW\n+0000b2b0: 6569 6768 7443 6f75 6e74 3b20 2b2b 6929  eightCount; ++i)\n+0000b2c0: 207b 3c2f 6469 763e 0a3c 6469 7620 636c   {</div>.<div cl\n+0000b2d0: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n+0000b2e0: 3d22 6c30 3032 3636 2220 6e61 6d65 3d22  =\"l00266\" name=\"\n+0000b2f0: 6c30 3032 3636 223e 3c2f 613e 3c73 7061  l00266\"></a><spa\n+0000b300: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n+0000b310: 3e20 2032 3636 3c2f 7370 616e 3e20 2020  >  266</span>   \n+0000b320: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000b330: 2020 2020 2064 7374 2e45 6467 6557 6569       dst.EdgeWei\n+0000b340: 6768 7428 6929 203d 2074 6869 7343 6f65  ght(i) = thisCoe\n+0000b350: 6666 202a 2074 6869 732d 2667 743b 3c61  ff * this-&gt;<a\n+0000b360: 2063 6c61 7373 3d22 636f 6465 2068 6c5f   class=\"code hl_\n+0000b370: 6675 6e63 7469 6f6e 2220 6872 6566 3d22  function\" href=\"\n+0000b380: 6130 3133 3435 2e68 746d 6c23 6134 6462  a01345.html#a4db\n+0000b390: 3933 3261 3861 3333 6664 3036 3232 6337  932a8a33fd0622c7\n+0000b3a0: 6430 3131 3637 6562 3134 6235 3222 3e45  d01167eb14b52\">E\n+0000b3b0: 6467 6557 6569 6768 743c 2f61 3e28 6929  dgeWeight</a>(i)\n+0000b3c0: 3b3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ;</div>.<div cla\n+0000b3d0: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n+0000b3e0: 226c 3030 3236 3722 206e 616d 653d 226c  \"l00267\" name=\"l\n+0000b3f0: 3030 3236 3722 3e3c 2f61 3e3c 7370 616e  00267\"></a><span\n+0000b400: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n+0000b410: 2020 3236 373c 2f73 7061 6e3e 2020 2020    267</span>    \n+0000b420: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000b430: 7d3c 2f64 6976 3e0a 3c64 6976 2063 6c61  }</div>.<div cla\n+0000b440: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n+0000b450: 226c 3030 3236 3822 206e 616d 653d 226c  \"l00268\" name=\"l\n+0000b460: 3030 3236 3822 3e3c 2f61 3e3c 7370 616e  00268\"></a><span\n+0000b470: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n+0000b480: 2020 3236 383c 2f73 7061 6e3e 2020 2020    268</span>    \n+0000b490: 2020 2020 2020 2020 2020 2020 7d20 3c73              } <s\n+0000b4a0: 7061 6e20 636c 6173 733d 226b 6579 776f  pan class=\"keywo\n+0000b4b0: 7264 666c 6f77 223e 656c 7365 3c2f 7370  rdflow\">else</sp\n+0000b4c0: 616e 3e20 7b3c 2f64 6976 3e0a 3c64 6976  an> {</div>.<div\n+0000b4d0: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n+0000b4e0: 2069 643d 226c 3030 3236 3922 206e 616d   id=\"l00269\" nam\n+0000b4f0: 653d 226c 3030 3236 3922 3e3c 2f61 3e3c  e=\"l00269\"></a><\n+0000b500: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n+0000b510: 6e6f 223e 2020 3236 393c 2f73 7061 6e3e  no\">  269</span>\n+0000b520: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000b530: 2020 2020 3c73 7061 6e20 636c 6173 733d      <span class=\n+0000b540: 226b 6579 776f 7264 666c 6f77 223e 666f  \"keywordflow\">fo\n+0000b550: 723c 2f73 7061 6e3e 2028 3c73 7061 6e20  r</span> (<span \n+0000b560: 636c 6173 733d 226b 6579 776f 7264 7479  class=\"keywordty\n+0000b570: 7065 223e 696e 743c 2f73 7061 6e3e 2069  pe\">int</span> i\n+0000b580: 203d 2030 3b20 6920 266c 743b 2065 6467   = 0; i &lt; edg\n+0000b590: 6557 6569 6768 7443 6f75 6e74 3b20 2b2b  eWeightCount; ++\n+0000b5a0: 6929 207b 3c2f 6469 763e 0a3c 6469 7620  i) {</div>.<div \n+0000b5b0: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n+0000b5c0: 6964 3d22 6c30 3032 3730 2220 6e61 6d65  id=\"l00270\" name\n+0000b5d0: 3d22 6c30 3032 3730 223e 3c2f 613e 3c73  =\"l00270\"></a><s\n+0000b5e0: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n+0000b5f0: 6f22 3e20 2032 3730 3c2f 7370 616e 3e20  o\">  270</span> \n+0000b600: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000b610: 2020 2020 2020 2064 7374 2e45 6467 6557         dst.EdgeW\n+0000b620: 6569 6768 7428 6929 203d 2064 7374 436f  eight(i) = dstCo\n+0000b630: 6566 6620 2a20 6473 742e 4564 6765 5765  eff * dst.EdgeWe\n+0000b640: 6967 6874 2869 2920 2b20 7468 6973 436f  ight(i) + thisCo\n+0000b650: 6566 6620 2a20 7468 6973 2d26 6774 3b3c  eff * this-&gt;<\n+0000b660: 6120 636c 6173 733d 2263 6f64 6520 686c  a class=\"code hl\n+0000b670: 5f66 756e 6374 696f 6e22 2068 7265 663d  _function\" href=\n+0000b680: 2261 3031 3334 352e 6874 6d6c 2361 3464  \"a01345.html#a4d\n+0000b690: 6239 3332 6138 6133 3366 6430 3632 3263  b932a8a33fd0622c\n+0000b6a0: 3764 3031 3136 3765 6231 3462 3532 223e  7d01167eb14b52\">\n+0000b6b0: 4564 6765 5765 6967 6874 3c2f 613e 2869  EdgeWeight</a>(i\n+0000b6c0: 293b 3c2f 6469 763e 0a3c 6469 7620 636c  );</div>.<div cl\n+0000b6d0: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n+0000b6e0: 3d22 6c30 3032 3731 2220 6e61 6d65 3d22  =\"l00271\" name=\"\n+0000b6f0: 6c30 3032 3731 223e 3c2f 613e 3c73 7061  l00271\"></a><spa\n+0000b700: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n+0000b710: 3e20 2032 3731 3c2f 7370 616e 3e20 2020  >  271</span>   \n+0000b720: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000b730: 207d 3c2f 6469 763e 0a3c 6469 7620 636c   }</div>.<div cl\n+0000b740: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n+0000b750: 3d22 6c30 3032 3732 2220 6e61 6d65 3d22  =\"l00272\" name=\"\n+0000b760: 6c30 3032 3732 223e 3c2f 613e 3c73 7061  l00272\"></a><spa\n+0000b770: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n+0000b780: 3e20 2032 3732 3c2f 7370 616e 3e20 2020  >  272</span>   \n+0000b790: 2020 2020 2020 2020 2020 2020 207d 3c2f               }</\n+0000b7a0: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n+0000b7b0: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n+0000b7c0: 3032 3733 2220 6e61 6d65 3d22 6c30 3032  0273\" name=\"l002\n+0000b7d0: 3733 223e 3c2f 613e 3c73 7061 6e20 636c  73\"></a><span cl\n+0000b7e0: 6173 733d 226c 696e 656e 6f22 3e20 2032  ass=\"lineno\">  2\n+0000b7f0: 3733 3c2f 7370 616e 3e20 2020 2020 2020  73</span>       \n+0000b800: 2020 2020 207d 3c2f 6469 763e 0a3c 6469       }</div>.<di\n+0000b810: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n+0000b820: 6120 6964 3d22 6c30 3032 3734 2220 6e61  a id=\"l00274\" na\n+0000b830: 6d65 3d22 6c30 3032 3734 223e 3c2f 613e  me=\"l00274\"></a>\n+0000b840: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n+0000b850: 656e 6f22 3e20 2032 3734 3c2f 7370 616e  eno\">  274</span\n+0000b860: 3e20 3c2f 6469 763e 0a3c 6469 7620 636c  > </div>.<div cl\n+0000b870: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n+0000b880: 3d22 6c30 3032 3735 2220 6e61 6d65 3d22  =\"l00275\" name=\"\n+0000b890: 6c30 3032 3735 223e 3c2f 613e 3c73 7061  l00275\"></a><spa\n+0000b8a0: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n+0000b8b0: 3e20 2032 3735 3c2f 7370 616e 3e20 2020  >  275</span>   \n+0000b8c0: 2020 2020 2020 2020 203c 7370 616e 2063           <span c\n+0000b8d0: 6c61 7373 3d22 6b65 7977 6f72 6474 7970  lass=\"keywordtyp\n+0000b8e0: 6522 3e69 6e74 3c2f 7370 616e 3e20 6661  e\">int</span> fa\n+0000b8f0: 6365 5765 6967 6874 436f 756e 7420 3d20  ceWeightCount = \n+0000b900: 7468 6973 2d26 6774 3b3c 6120 636c 6173  this-&gt;<a clas\n+0000b910: 733d 2263 6f64 6520 686c 5f66 756e 6374  s=\"code hl_funct\n+0000b920: 696f 6e22 2068 7265 663d 2261 3031 3334  ion\" href=\"a0134\n+0000b930: 352e 6874 6d6c 2361 3933 6635 3765 3533  5.html#a93f57e53\n+0000b940: 3337 3339 3163 3230 6434 3664 6566 6462  37391c20d46defdb\n+0000b950: 3361 6132 6331 6665 223e 4765 744e 756d  3aa2c1fe\">GetNum\n+0000b960: 4661 6365 5765 6967 6874 733c 2f61 3e28  FaceWeights</a>(\n+0000b970: 293b 3c2f 6469 763e 0a3c 6469 7620 636c  );</div>.<div cl\n+0000b980: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n+0000b990: 3d22 6c30 3032 3736 2220 6e61 6d65 3d22  =\"l00276\" name=\"\n+0000b9a0: 6c30 3032 3736 223e 3c2f 613e 3c73 7061  l00276\"></a><spa\n+0000b9b0: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n+0000b9c0: 3e20 2032 3736 3c2f 7370 616e 3e20 2020  >  276</span>   \n+0000b9d0: 2020 2020 2020 2020 203c 7370 616e 2063           <span c\n+0000b9e0: 6c61 7373 3d22 6b65 7977 6f72 6466 6c6f  lass=\"keywordflo\n+0000b9f0: 7722 3e69 663c 2f73 7061 6e3e 2028 6661  w\">if</span> (fa\n+0000ba00: 6365 5765 6967 6874 436f 756e 7429 207b  ceWeightCount) {\n+0000ba10: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n+0000ba20: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n+0000ba30: 6c30 3032 3737 2220 6e61 6d65 3d22 6c30  l00277\" name=\"l0\n+0000ba40: 3032 3737 223e 3c2f 613e 3c73 7061 6e20  0277\"></a><span \n+0000ba50: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n+0000ba60: 2032 3737 3c2f 7370 616e 3e20 2020 2020   277</span>     \n+0000ba70: 2020 2020 2020 2020 2020 203c 7370 616e             <span\n+0000ba80: 2063 6c61 7373 3d22 636f 6d6d 656e 7422   class=\"comment\"\n+0000ba90: 3e2f 2f3c 2f73 7061 6e3e 3c2f 6469 763e  >//</span></div>\n+0000baa0: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n+0000bab0: 6522 3e3c 6120 6964 3d22 6c30 3032 3738  e\"><a id=\"l00278\n+0000bac0: 2220 6e61 6d65 3d22 6c30 3032 3738 223e  \" name=\"l00278\">\n+0000bad0: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n+0000bae0: 226c 696e 656e 6f22 3e20 2032 3738 3c2f  \"lineno\">  278</\n+0000baf0: 7370 616e 3e20 2020 2020 2020 2020 2020  span>           \n+0000bb00: 2020 2020 203c 7370 616e 2063 6c61 7373       <span class\n+0000bb10: 3d22 636f 6d6d 656e 7422 3e2f 2f20 2049  =\"comment\">//  I\n+0000bb20: 6620 636f 6d62 696e 696e 6720 6661 6365  f combining face\n+0000bb30: 2077 6569 6768 7473 2c20 6265 2073 7572   weights, be sur\n+0000bb40: 6520 7468 6569 7220 696e 7465 7270 7265  e their interpre\n+0000bb50: 7461 7469 6f6e 2028 692e 652e 2066 6163  tation (i.e. fac\n+0000bb60: 652d 6365 6e74 6572 733c 2f73 7061 6e3e  e-centers</span>\n+0000bb70: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n+0000bb80: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n+0000bb90: 6c30 3032 3739 2220 6e61 6d65 3d22 6c30  l00279\" name=\"l0\n+0000bba0: 3032 3739 223e 3c2f 613e 3c73 7061 6e20  0279\"></a><span \n+0000bbb0: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n+0000bbc0: 2032 3739 3c2f 7370 616e 3e20 2020 2020   279</span>     \n+0000bbd0: 2020 2020 2020 2020 2020 203c 7370 616e             <span\n+0000bbe0: 2063 6c61 7373 3d22 636f 6d6d 656e 7422   class=\"comment\"\n+0000bbf0: 3e2f 2f20 206f 7220 6f70 706f 7369 7465  >//  or opposite\n+0000bc00: 2076 6572 7469 6365 7329 2069 7320 7072   vertices) is pr\n+0000bc10: 6f70 6572 6c79 2073 6574 2069 6e20 7468  operly set in th\n+0000bc20: 6520 6465 7374 696e 6174 696f 6e20 6d61  e destination ma\n+0000bc30: 736b 3a3c 2f73 7061 6e3e 3c2f 6469 763e  sk:</span></div>\n+0000bc40: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n+0000bc50: 6522 3e3c 6120 6964 3d22 6c30 3032 3830  e\"><a id=\"l00280\n+0000bc60: 2220 6e61 6d65 3d22 6c30 3032 3830 223e  \" name=\"l00280\">\n+0000bc70: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n+0000bc80: 226c 696e 656e 6f22 3e20 2032 3830 3c2f  \"lineno\">  280</\n+0000bc90: 7370 616e 3e20 2020 2020 2020 2020 2020  span>           \n+0000bca0: 2020 2020 203c 7370 616e 2063 6c61 7373       <span class\n+0000bcb0: 3d22 636f 6d6d 656e 7422 3e2f 2f3c 2f73  =\"comment\">//</s\n+0000bcc0: 7061 6e3e 3c2f 6469 763e 0a3c 6469 7620  pan></div>.<div \n+0000bcd0: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n+0000bce0: 6964 3d22 6c30 3032 3831 2220 6e61 6d65  id=\"l00281\" name\n+0000bcf0: 3d22 6c30 3032 3831 223e 3c2f 613e 3c73  =\"l00281\"></a><s\n+0000bd00: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n+0000bd10: 6f22 3e20 2032 3831 3c2f 7370 616e 3e20  o\">  281</span> \n+0000bd20: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+0000bd30: 7370 616e 2063 6c61 7373 3d22 6b65 7977  span class=\"keyw\n+0000bd40: 6f72 6466 6c6f 7722 3e69 663c 2f73 7061  ordflow\">if</spa\n+0000bd50: 6e3e 2028 6473 742e 4765 744e 756d 4661  n> (dst.GetNumFa\n+0000bd60: 6365 5765 6967 6874 7328 2920 3d3d 2030  ceWeights() == 0\n+0000bd70: 2920 7b3c 2f64 6976 3e0a 3c64 6976 2063  ) {</div>.<div c\n+0000bd80: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n+0000bd90: 643d 226c 3030 3238 3222 206e 616d 653d  d=\"l00282\" name=\n+0000bda0: 226c 3030 3238 3222 3e3c 2f61 3e3c 7370  \"l00282\"></a><sp\n+0000bdb0: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n+0000bdc0: 223e 2020 3238 323c 2f73 7061 6e3e 2020  \">  282</span>  \n+0000bdd0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000bde0: 2020 6473 742e 5365 744e 756d 4661 6365    dst.SetNumFace\n+0000bdf0: 5765 6967 6874 7328 6661 6365 5765 6967  Weights(faceWeig\n+0000be00: 6874 436f 756e 7429 3b3c 2f64 6976 3e0a  htCount);</div>.\n+0000be10: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n+0000be20: 223e 3c61 2069 643d 226c 3030 3238 3322  \"><a id=\"l00283\"\n+0000be30: 206e 616d 653d 226c 3030 3238 3322 3e3c   name=\"l00283\"><\n+0000be40: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n+0000be50: 6c69 6e65 6e6f 223e 2020 3238 333c 2f73  lineno\">  283</s\n+0000be60: 7061 6e3e 2020 2020 2020 2020 2020 2020  pan>            \n+0000be70: 2020 2020 2020 2020 6473 742e 5365 7446          dst.SetF\n+0000be80: 6163 6557 6569 6768 7473 466f 7246 6163  aceWeightsForFac\n+0000be90: 6543 656e 7465 7273 2874 6869 732d 2667  eCenters(this-&g\n+0000bea0: 743b 3c61 2063 6c61 7373 3d22 636f 6465  t;<a class=\"code\n+0000beb0: 2068 6c5f 6675 6e63 7469 6f6e 2220 6872   hl_function\" hr\n+0000bec0: 6566 3d22 6130 3133 3435 2e68 746d 6c23  ef=\"a01345.html#\n+0000bed0: 6133 3531 3965 3565 3035 3633 3130 3236  a3519e5e05631026\n+0000bee0: 6661 6439 3463 3736 3136 6635 6530 6536  fad94c7616f5e0e6\n+0000bef0: 3722 3e41 7265 4661 6365 5765 6967 6874  7\">AreFaceWeight\n+0000bf00: 7346 6f72 4661 6365 4365 6e74 6572 733c  sForFaceCenters<\n+0000bf10: 2f61 3e28 2929 3b3c 2f64 6976 3e0a 3c64  /a>());</div>.<d\n+0000bf20: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n+0000bf30: 3c61 2069 643d 226c 3030 3238 3422 206e  <a id=\"l00284\" n\n+0000bf40: 616d 653d 226c 3030 3238 3422 3e3c 2f61  ame=\"l00284\"></a\n+0000bf50: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n+0000bf60: 6e65 6e6f 223e 2020 3238 343c 2f73 7061  neno\">  284</spa\n+0000bf70: 6e3e 203c 2f64 6976 3e0a 3c64 6976 2063  n> </div>.<div c\n+0000bf80: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n+0000bf90: 643d 226c 3030 3238 3522 206e 616d 653d  d=\"l00285\" name=\n+0000bfa0: 226c 3030 3238 3522 3e3c 2f61 3e3c 7370  \"l00285\"></a><sp\n+0000bfb0: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n+0000bfc0: 223e 2020 3238 353c 2f73 7061 6e3e 2020  \">  285</span>  \n+0000bfd0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000bfe0: 2020 3c73 7061 6e20 636c 6173 733d 226b    <span class=\"k\n+0000bff0: 6579 776f 7264 666c 6f77 223e 666f 723c  eywordflow\">for<\n+0000c000: 2f73 7061 6e3e 2028 3c73 7061 6e20 636c  /span> (<span cl\n+0000c010: 6173 733d 226b 6579 776f 7264 7479 7065  ass=\"keywordtype\n+0000c020: 223e 696e 743c 2f73 7061 6e3e 2069 203d  \">int</span> i =\n+0000c030: 2030 3b20 6920 266c 743b 2066 6163 6557   0; i &lt; faceW\n+0000c040: 6569 6768 7443 6f75 6e74 3b20 2b2b 6929  eightCount; ++i)\n+0000c050: 207b 3c2f 6469 763e 0a3c 6469 7620 636c   {</div>.<div cl\n+0000c060: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n+0000c070: 3d22 6c30 3032 3836 2220 6e61 6d65 3d22  =\"l00286\" name=\"\n+0000c080: 6c30 3032 3836 223e 3c2f 613e 3c73 7061  l00286\"></a><spa\n+0000c090: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n+0000c0a0: 3e20 2032 3836 3c2f 7370 616e 3e20 2020  >  286</span>   \n+0000c0b0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000c0c0: 2020 2020 2064 7374 2e46 6163 6557 6569       dst.FaceWei\n+0000c0d0: 6768 7428 6929 203d 2074 6869 7343 6f65  ght(i) = thisCoe\n+0000c0e0: 6666 202a 2074 6869 732d 2667 743b 3c61  ff * this-&gt;<a\n+0000c0f0: 2063 6c61 7373 3d22 636f 6465 2068 6c5f   class=\"code hl_\n+0000c100: 6675 6e63 7469 6f6e 2220 6872 6566 3d22  function\" href=\"\n+0000c110: 6130 3133 3435 2e68 746d 6c23 6136 3734  a01345.html#a674\n+0000c120: 6461 3131 3238 3839 3561 3863 6261 6661  da1128895a8cbafa\n+0000c130: 3663 3065 6334 3965 3961 6563 3022 3e46  6c0ec49e9aec0\">F\n+0000c140: 6163 6557 6569 6768 743c 2f61 3e28 6929  aceWeight</a>(i)\n+0000c150: 3b3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ;</div>.<div cla\n+0000c160: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n+0000c170: 226c 3030 3238 3722 206e 616d 653d 226c  \"l00287\" name=\"l\n+0000c180: 3030 3238 3722 3e3c 2f61 3e3c 7370 616e  00287\"></a><span\n+0000c190: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n+0000c1a0: 2020 3238 373c 2f73 7061 6e3e 2020 2020    287</span>    \n+0000c1b0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000c1c0: 7d3c 2f64 6976 3e0a 3c64 6976 2063 6c61  }</div>.<div cla\n+0000c1d0: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n+0000c1e0: 226c 3030 3238 3822 206e 616d 653d 226c  \"l00288\" name=\"l\n+0000c1f0: 3030 3238 3822 3e3c 2f61 3e3c 7370 616e  00288\"></a><span\n+0000c200: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n+0000c210: 2020 3238 383c 2f73 7061 6e3e 2020 2020    288</span>    \n+0000c220: 2020 2020 2020 2020 2020 2020 7d20 3c73              } <s\n+0000c230: 7061 6e20 636c 6173 733d 226b 6579 776f  pan class=\"keywo\n+0000c240: 7264 666c 6f77 223e 656c 7365 3c2f 7370  rdflow\">else</sp\n+0000c250: 616e 3e20 7b3c 2f64 6976 3e0a 3c64 6976  an> {</div>.<div\n+0000c260: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n+0000c270: 2069 643d 226c 3030 3238 3922 206e 616d   id=\"l00289\" nam\n+0000c280: 653d 226c 3030 3238 3922 3e3c 2f61 3e3c  e=\"l00289\"></a><\n+0000c290: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n+0000c2a0: 6e6f 223e 2020 3238 393c 2f73 7061 6e3e  no\">  289</span>\n+0000c2b0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000c2c0: 2020 2020 6173 7365 7274 2874 6869 732d      assert(this-\n+0000c2d0: 2667 743b 3c61 2063 6c61 7373 3d22 636f  &gt;<a class=\"co\n+0000c2e0: 6465 2068 6c5f 6675 6e63 7469 6f6e 2220  de hl_function\" \n+0000c2f0: 6872 6566 3d22 6130 3133 3435 2e68 746d  href=\"a01345.htm\n+0000c300: 6c23 6133 3531 3965 3565 3035 3633 3130  l#a3519e5e056310\n+0000c310: 3236 6661 6439 3463 3736 3136 6635 6530  26fad94c7616f5e0\n+0000c320: 6536 3722 3e41 7265 4661 6365 5765 6967  e67\">AreFaceWeig\n+0000c330: 6874 7346 6f72 4661 6365 4365 6e74 6572  htsForFaceCenter\n+0000c340: 733c 2f61 3e28 2920 3d3d 2064 7374 2e41  s</a>() == dst.A\n+0000c350: 7265 4661 6365 5765 6967 6874 7346 6f72  reFaceWeightsFor\n+0000c360: 4661 6365 4365 6e74 6572 7328 2929 3b3c  FaceCenters());<\n+0000c370: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n+0000c380: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n+0000c390: 3030 3239 3022 206e 616d 653d 226c 3030  00290\" name=\"l00\n+0000c3a0: 3239 3022 3e3c 2f61 3e3c 7370 616e 2063  290\"></a><span c\n+0000c3b0: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n+0000c3c0: 3239 303c 2f73 7061 6e3e 203c 2f64 6976  290</span> </div\n+0000c3d0: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n+0000c3e0: 6e65 223e 3c61 2069 643d 226c 3030 3239  ne\"><a id=\"l0029\n+0000c3f0: 3122 206e 616d 653d 226c 3030 3239 3122  1\" name=\"l00291\"\n+0000c400: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n+0000c410: 3d22 6c69 6e65 6e6f 223e 2020 3239 313c  =\"lineno\">  291<\n+0000c420: 2f73 7061 6e3e 2020 2020 2020 2020 2020  /span>          \n+0000c430: 2020 2020 2020 2020 2020 3c73 7061 6e20            <span \n+0000c440: 636c 6173 733d 226b 6579 776f 7264 666c  class=\"keywordfl\n+0000c450: 6f77 223e 666f 723c 2f73 7061 6e3e 2028  ow\">for</span> (\n+0000c460: 3c73 7061 6e20 636c 6173 733d 226b 6579  <span class=\"key\n+0000c470: 776f 7264 7479 7065 223e 696e 743c 2f73  wordtype\">int</s\n+0000c480: 7061 6e3e 2069 203d 2030 3b20 6920 266c  pan> i = 0; i &l\n+0000c490: 743b 2066 6163 6557 6569 6768 7443 6f75  t; faceWeightCou\n+0000c4a0: 6e74 3b20 2b2b 6929 207b 3c2f 6469 763e  nt; ++i) {</div>\n+0000c4b0: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n+0000c4c0: 6522 3e3c 6120 6964 3d22 6c30 3032 3932  e\"><a id=\"l00292\n+0000c4d0: 2220 6e61 6d65 3d22 6c30 3032 3932 223e  \" name=\"l00292\">\n+0000c4e0: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n+0000c4f0: 226c 696e 656e 6f22 3e20 2032 3932 3c2f  \"lineno\">  292</\n+0000c500: 7370 616e 3e20 2020 2020 2020 2020 2020  span>           \n+0000c510: 2020 2020 2020 2020 2020 2020 2064 7374               dst\n+0000c520: 2e46 6163 6557 6569 6768 7428 6929 203d  .FaceWeight(i) =\n+0000c530: 2064 7374 436f 6566 6620 2a20 6473 742e   dstCoeff * dst.\n+0000c540: 4661 6365 5765 6967 6874 2869 2920 2b20  FaceWeight(i) + \n+0000c550: 7468 6973 436f 6566 6620 2a20 7468 6973  thisCoeff * this\n+0000c560: 2d26 6774 3b3c 6120 636c 6173 733d 2263  -&gt;<a class=\"c\n+0000c570: 6f64 6520 686c 5f66 756e 6374 696f 6e22  ode hl_function\"\n+0000c580: 2068 7265 663d 2261 3031 3334 352e 6874   href=\"a01345.ht\n+0000c590: 6d6c 2361 3637 3464 6131 3132 3838 3935  ml#a674da1128895\n+0000c5a0: 6138 6362 6166 6136 6330 6563 3439 6539  a8cbafa6c0ec49e9\n+0000c5b0: 6165 6330 223e 4661 6365 5765 6967 6874  aec0\">FaceWeight\n+0000c5c0: 3c2f 613e 2869 293b 3c2f 6469 763e 0a3c  </a>(i);</div>.<\n+0000c5d0: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n+0000c5e0: 3e3c 6120 6964 3d22 6c30 3032 3933 2220  ><a id=\"l00293\" \n+0000c5f0: 6e61 6d65 3d22 6c30 3032 3933 223e 3c2f  name=\"l00293\"></\n+0000c600: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n+0000c610: 696e 656e 6f22 3e20 2032 3933 3c2f 7370  ineno\">  293</sp\n+0000c620: 616e 3e20 2020 2020 2020 2020 2020 2020  an>             \n+0000c630: 2020 2020 2020 207d 3c2f 6469 763e 0a3c         }</div>.<\n+0000c640: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n+0000c650: 3e3c 6120 6964 3d22 6c30 3032 3934 2220  ><a id=\"l00294\" \n+0000c660: 6e61 6d65 3d22 6c30 3032 3934 223e 3c2f  name=\"l00294\"></\n+0000c670: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n+0000c680: 696e 656e 6f22 3e20 2032 3934 3c2f 7370  ineno\">  294</sp\n+0000c690: 616e 3e20 2020 2020 2020 2020 2020 2020  an>             \n+0000c6a0: 2020 207d 3c2f 6469 763e 0a3c 6469 7620     }</div>.<div \n+0000c6b0: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n+0000c6c0: 6964 3d22 6c30 3032 3935 2220 6e61 6d65  id=\"l00295\" name\n+0000c6d0: 3d22 6c30 3032 3935 223e 3c2f 613e 3c73  =\"l00295\"></a><s\n+0000c6e0: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n+0000c6f0: 6f22 3e20 2032 3935 3c2f 7370 616e 3e20  o\">  295</span> \n+0000c700: 2020 2020 2020 2020 2020 207d 3c2f 6469             }</di\n+0000c710: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n+0000c720: 696e 6522 3e3c 6120 6964 3d22 6c30 3032  ine\"><a id=\"l002\n+0000c730: 3936 2220 6e61 6d65 3d22 6c30 3032 3936  96\" name=\"l00296\n+0000c740: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n+0000c750: 733d 226c 696e 656e 6f22 3e20 2032 3936  s=\"lineno\">  296\n+0000c760: 3c2f 7370 616e 3e20 2020 2020 2020 207d  </span>        }\n+0000c770: 3c2f 6469 763e 0a3c 2f64 6976 3e0a 3c64  </div>.</div>.<d\n+0000c780: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n+0000c790: 3c61 2069 643d 226c 3030 3239 3722 206e  <a id=\"l00297\" n\n+0000c7a0: 616d 653d 226c 3030 3239 3722 3e3c 2f61  ame=\"l00297\"></a\n+0000c7b0: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n+0000c7c0: 6e65 6e6f 223e 2020 3239 373c 2f73 7061  neno\">  297</spa\n+0000c7d0: 6e3e 203c 2f64 6976 3e0a 3c64 6976 2063  n> </div>.<div c\n+0000c7e0: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n+0000c7f0: 643d 226c 3030 3239 3822 206e 616d 653d  d=\"l00298\" name=\n+0000c800: 226c 3030 3239 3822 3e3c 2f61 3e3c 7370  \"l00298\"></a><sp\n+0000c810: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n+0000c820: 223e 2020 3239 383c 2f73 7061 6e3e 2020  \">  298</span>  \n+0000c830: 2020 3c73 7061 6e20 636c 6173 733d 226b    <span class=\"k\n+0000c840: 6579 776f 7264 223e 7072 6976 6174 653c  eyword\">private<\n+0000c850: 2f73 7061 6e3e 3a3c 2f64 6976 3e0a 3c64  /span>:</div>.<d\n+0000c860: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n+0000c870: 3c61 2069 643d 226c 3030 3239 3922 206e  <a id=\"l00299\" n\n+0000c880: 616d 653d 226c 3030 3239 3922 3e3c 2f61  ame=\"l00299\"></a\n+0000c890: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n+0000c8a0: 6e65 6e6f 223e 2020 3239 393c 2f73 7061  neno\">  299</spa\n+0000c8b0: 6e3e 2020 2020 2020 2020 3c61 2063 6c61  n>        <a cla\n+0000c8c0: 7373 3d22 636f 6465 2068 6c5f 7479 7065  ss=\"code hl_type\n+0000c8d0: 6465 6622 2068 7265 663d 2261 3031 3334  def\" href=\"a0134\n+0000c8e0: 352e 6874 6d6c 2361 3137 3365 3938 6530  5.html#a173e98e0\n+0000c8f0: 6431 6233 6431 3566 3563 3361 6434 3336  d1b3d15f5c3ad436\n+0000c900: 6430 6665 6434 3031 223e 5765 6967 6874  d0fed401\">Weight\n+0000c910: 3c2f 613e 2a20 5f76 5765 6967 6874 733b  </a>* _vWeights;\n+0000c920: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n+0000c930: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n+0000c940: 6c30 3033 3030 2220 6e61 6d65 3d22 6c30  l00300\" name=\"l0\n+0000c950: 3033 3030 223e 3c2f 613e 3c73 7061 6e20  0300\"></a><span \n+0000c960: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n+0000c970: 2033 3030 3c2f 7370 616e 3e20 2020 2020   300</span>     \n+0000c980: 2020 203c 6120 636c 6173 733d 2263 6f64     <a class=\"cod\n+0000c990: 6520 686c 5f74 7970 6564 6566 2220 6872  e hl_typedef\" hr\n+0000c9a0: 6566 3d22 6130 3133 3435 2e68 746d 6c23  ef=\"a01345.html#\n+0000c9b0: 6131 3733 6539 3865 3064 3162 3364 3135  a173e98e0d1b3d15\n+0000c9c0: 6635 6333 6164 3433 3664 3066 6564 3430  f5c3ad436d0fed40\n+0000c9d0: 3122 3e57 6569 6768 743c 2f61 3e2a 205f  1\">Weight</a>* _\n+0000c9e0: 6557 6569 6768 7473 3b3c 2f64 6976 3e0a  eWeights;</div>.\n+0000c9f0: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n+0000ca00: 223e 3c61 2069 643d 226c 3030 3330 3122  \"><a id=\"l00301\"\n+0000ca10: 206e 616d 653d 226c 3030 3330 3122 3e3c   name=\"l00301\"><\n+0000ca20: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n+0000ca30: 6c69 6e65 6e6f 223e 2020 3330 313c 2f73  lineno\">  301</s\n+0000ca40: 7061 6e3e 2020 2020 2020 2020 3c61 2063  pan>        <a c\n+0000ca50: 6c61 7373 3d22 636f 6465 2068 6c5f 7479  lass=\"code hl_ty\n+0000ca60: 7065 6465 6622 2068 7265 663d 2261 3031  pedef\" href=\"a01\n+0000ca70: 3334 352e 6874 6d6c 2361 3137 3365 3938  345.html#a173e98\n+0000ca80: 6530 6431 6233 6431 3566 3563 3361 6434  e0d1b3d15f5c3ad4\n+0000ca90: 3336 6430 6665 6434 3031 223e 5765 6967  36d0fed401\">Weig\n+0000caa0: 6874 3c2f 613e 2a20 5f66 5765 6967 6874  ht</a>* _fWeight\n+0000cab0: 733b 3c2f 6469 763e 0a3c 6469 7620 636c  s;</div>.<div cl\n+0000cac0: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n+0000cad0: 3d22 6c30 3033 3032 2220 6e61 6d65 3d22  =\"l00302\" name=\"\n+0000cae0: 6c30 3033 3032 223e 3c2f 613e 3c73 7061  l00302\"></a><spa\n+0000caf0: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n+0000cb00: 3e20 2033 3032 3c2f 7370 616e 3e20 2020  >  302</span>   \n+0000cb10: 2020 2020 203c 7370 616e 2063 6c61 7373       <span class\n+0000cb20: 3d22 6b65 7977 6f72 6474 7970 6522 3e69  =\"keywordtype\">i\n+0000cb30: 6e74 3c2f 7370 616e 3e20 5f76 436f 756e  nt</span> _vCoun\n+0000cb40: 743b 3c2f 6469 763e 0a3c 6469 7620 636c  t;</div>.<div cl\n+0000cb50: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n+0000cb60: 3d22 6c30 3033 3033 2220 6e61 6d65 3d22  =\"l00303\" name=\"\n+0000cb70: 6c30 3033 3033 223e 3c2f 613e 3c73 7061  l00303\"></a><spa\n+0000cb80: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n+0000cb90: 3e20 2033 3033 3c2f 7370 616e 3e20 2020  >  303</span>   \n+0000cba0: 2020 2020 203c 7370 616e 2063 6c61 7373       <span class\n+0000cbb0: 3d22 6b65 7977 6f72 6474 7970 6522 3e69  =\"keywordtype\">i\n+0000cbc0: 6e74 3c2f 7370 616e 3e20 5f65 436f 756e  nt</span> _eCoun\n+0000cbd0: 743b 3c2f 6469 763e 0a3c 6469 7620 636c  t;</div>.<div cl\n+0000cbe0: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n+0000cbf0: 3d22 6c30 3033 3034 2220 6e61 6d65 3d22  =\"l00304\" name=\"\n+0000cc00: 6c30 3033 3034 223e 3c2f 613e 3c73 7061  l00304\"></a><spa\n+0000cc10: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n+0000cc20: 3e20 2033 3034 3c2f 7370 616e 3e20 2020  >  304</span>   \n+0000cc30: 2020 2020 203c 7370 616e 2063 6c61 7373       <span class\n+0000cc40: 3d22 6b65 7977 6f72 6474 7970 6522 3e69  =\"keywordtype\">i\n+0000cc50: 6e74 3c2f 7370 616e 3e20 5f66 436f 756e  nt</span> _fCoun\n+0000cc60: 743b 3c2f 6469 763e 0a3c 6469 7620 636c  t;</div>.<div cl\n+0000cc70: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n+0000cc80: 3d22 6c30 3033 3035 2220 6e61 6d65 3d22  =\"l00305\" name=\"\n+0000cc90: 6c30 3033 3035 223e 3c2f 613e 3c73 7061  l00305\"></a><spa\n+0000cca0: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n+0000ccb0: 3e20 2033 3035 3c2f 7370 616e 3e20 2020  >  305</span>   \n+0000ccc0: 2020 2020 203c 7370 616e 2063 6c61 7373       <span class\n+0000ccd0: 3d22 6b65 7977 6f72 6474 7970 6522 3e62  =\"keywordtype\">b\n+0000cce0: 6f6f 6c3c 2f73 7061 6e3e 205f 6657 6569  ool</span> _fWei\n+0000ccf0: 6768 7473 466f 7243 656e 7465 7273 3b3c  ghtsForCenters;<\n+0000cd00: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n+0000cd10: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n+0000cd20: 3030 3330 3622 206e 616d 653d 226c 3030  00306\" name=\"l00\n+0000cd30: 3330 3622 3e3c 2f61 3e3c 7370 616e 2063  306\"></a><span c\n+0000cd40: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n+0000cd50: 3330 363c 2f73 7061 6e3e 2020 2020 7d3b  306</span>    };\n+0000cd60: 3c2f 6469 763e 0a3c 2f64 6976 3e0a 3c64  </div>.</div>.<d\n+0000cd70: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n+0000cd80: 3c61 2069 643d 226c 3030 3330 3722 206e  <a id=\"l00307\" n\n+0000cd90: 616d 653d 226c 3030 3330 3722 3e3c 2f61  ame=\"l00307\"></a\n+0000cda0: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n+0000cdb0: 6e65 6e6f 223e 2020 3330 373c 2f73 7061  neno\">  307</spa\n+0000cdc0: 6e3e 7d3b 3c2f 6469 763e 0a3c 2f64 6976  n>};</div>.</div\n+0000cdd0: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n+0000cde0: 6e65 223e 3c61 2069 643d 226c 3030 3330  ne\"><a id=\"l0030\n+0000cdf0: 3822 206e 616d 653d 226c 3030 3330 3822  8\" name=\"l00308\"\n+0000ce00: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n+0000ce10: 3d22 6c69 6e65 6e6f 223e 2020 3330 383c  =\"lineno\">  308<\n+0000ce20: 2f73 7061 6e3e 203c 2f64 6976 3e0a 3c64  /span> </div>.<d\n+0000ce30: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n+0000ce40: 3c61 2069 643d 226c 3030 3330 3922 206e  <a id=\"l00309\" n\n+0000ce50: 616d 653d 226c 3030 3330 3922 3e3c 2f61  ame=\"l00309\"></a\n+0000ce60: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n+0000ce70: 6e65 6e6f 223e 2020 3330 393c 2f73 7061  neno\">  309</spa\n+0000ce80: 6e3e 203c 2f64 6976 3e0a 3c64 6976 2063  n> </div>.<div c\n+0000ce90: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n+0000cea0: 643d 226c 3030 3331 3022 206e 616d 653d  d=\"l00310\" name=\n+0000ceb0: 226c 3030 3331 3022 3e3c 2f61 3e3c 7370  \"l00310\"></a><sp\n+0000cec0: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n+0000ced0: 223e 2020 3331 303c 2f73 7061 6e3e 3c73  \">  310</span><s\n+0000cee0: 7061 6e20 636c 6173 733d 2263 6f6d 6d65  pan class=\"comme\n+0000cef0: 6e74 223e 2f2f 3c2f 7370 616e 3e3c 2f64  nt\">//</span></d\n+0000cf00: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n+0000cf10: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n+0000cf20: 3331 3122 206e 616d 653d 226c 3030 3331  311\" name=\"l0031\n+0000cf30: 3122 3e3c 2f61 3e3c 7370 616e 2063 6c61  1\"></a><span cla\n+0000cf40: 7373 3d22 6c69 6e65 6e6f 223e 2020 3331  ss=\"lineno\">  31\n+0000cf50: 313c 2f73 7061 6e3e 3c73 7061 6e20 636c  1</span><span cl\n+0000cf60: 6173 733d 2263 6f6d 6d65 6e74 223e 2f2f  ass=\"comment\">//\n+0000cf70: 2020 4372 6561 7365 2061 6e64 2063 6f72    Crease and cor\n+0000cf80: 6e65 7220 6d61 736b 7320 6172 6520 636f  ner masks are co\n+0000cf90: 6d6d 6f6e 2074 6f20 6d6f 7374 2073 6368  mmon to most sch\n+0000cfa0: 656d 6573 202d 2d20 7468 6520 7265 7374  emes -- the rest\n+0000cfb0: 206e 6565 6420 746f 2062 6520 7072 6f76   need to be prov\n+0000cfc0: 6964 6564 3c2f 7370 616e 3e3c 2f64 6976  ided</span></div\n+0000cfd0: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n+0000cfe0: 6e65 223e 3c61 2069 643d 226c 3030 3331  ne\"><a id=\"l0031\n+0000cff0: 3222 206e 616d 653d 226c 3030 3331 3222  2\" name=\"l00312\"\n+0000d000: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n+0000d010: 3d22 6c69 6e65 6e6f 223e 2020 3331 323c  =\"lineno\">  312<\n+0000d020: 2f73 7061 6e3e 3c73 7061 6e20 636c 6173  /span><span clas\n+0000d030: 733d 2263 6f6d 6d65 6e74 223e 2f2f 2020  s=\"comment\">//  \n+0000d040: 666f 7220 6561 6368 2053 6368 656d 6520  for each Scheme \n+0000d050: 7370 6563 6961 6c69 7a61 7469 6f6e 2e3c  specialization.<\n+0000d060: 2f73 7061 6e3e 3c2f 6469 763e 0a3c 6469  /span></div>.<di\n+0000d070: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n+0000d080: 6120 6964 3d22 6c30 3033 3133 2220 6e61  a id=\"l00313\" na\n+0000d090: 6d65 3d22 6c30 3033 3133 223e 3c2f 613e  me=\"l00313\"></a>\n+0000d0a0: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n+0000d0b0: 656e 6f22 3e20 2033 3133 3c2f 7370 616e  eno\">  313</span\n+0000d0c0: 3e3c 7370 616e 2063 6c61 7373 3d22 636f  ><span class=\"co\n+0000d0d0: 6d6d 656e 7422 3e2f 2f3c 2f73 7061 6e3e  mment\">//</span>\n+0000d0e0: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n+0000d0f0: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n+0000d100: 6c30 3033 3134 2220 6e61 6d65 3d22 6c30  l00314\" name=\"l0\n+0000d110: 3033 3134 223e 3c2f 613e 3c73 7061 6e20  0314\"></a><span \n+0000d120: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n+0000d130: 2033 3134 3c2f 7370 616e 3e3c 7370 616e   314</span><span\n+0000d140: 2063 6c61 7373 3d22 6b65 7977 6f72 6422   class=\"keyword\"\n+0000d150: 3e74 656d 706c 6174 653c 2f73 7061 6e3e  >template</span>\n+0000d160: 2026 6c74 3b53 6368 656d 6554 7970 6520   &lt;SchemeType \n+0000d170: 5343 4845 4d45 2667 743b 3c2f 6469 763e  SCHEME&gt;</div>\n+0000d180: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n+0000d190: 6522 3e3c 6120 6964 3d22 6c30 3033 3135  e\"><a id=\"l00315\n+0000d1a0: 2220 6e61 6d65 3d22 6c30 3033 3135 223e  \" name=\"l00315\">\n+0000d1b0: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n+0000d1c0: 226c 696e 656e 6f22 3e20 2033 3135 3c2f  \"lineno\">  315</\n+0000d1d0: 7370 616e 3e3c 7370 616e 2063 6c61 7373  span><span class\n+0000d1e0: 3d22 6b65 7977 6f72 6422 3e74 656d 706c  =\"keyword\">templ\n+0000d1f0: 6174 653c 2f73 7061 6e3e 2026 6c74 3b3c  ate</span> &lt;<\n+0000d200: 7370 616e 2063 6c61 7373 3d22 6b65 7977  span class=\"keyw\n+0000d210: 6f72 6422 3e74 7970 656e 616d 653c 2f73  ord\">typename</s\n+0000d220: 7061 6e3e 2045 4447 452c 203c 7370 616e  pan> EDGE, <span\n+0000d230: 2063 6c61 7373 3d22 6b65 7977 6f72 6422   class=\"keyword\"\n+0000d240: 3e74 7970 656e 616d 653c 2f73 7061 6e3e  >typename</span>\n+0000d250: 204d 4153 4b26 6774 3b3c 2f64 6976 3e0a   MASK&gt;</div>.\n+0000d260: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n+0000d270: 223e 3c61 2069 643d 226c 3030 3331 3622  \"><a id=\"l00316\"\n+0000d280: 206e 616d 653d 226c 3030 3331 3622 3e3c   name=\"l00316\"><\n+0000d290: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n+0000d2a0: 6c69 6e65 6e6f 223e 2020 3331 363c 2f73  lineno\">  316</s\n+0000d2b0: 7061 6e3e 3c73 7061 6e20 636c 6173 733d  pan><span class=\n+0000d2c0: 226b 6579 776f 7264 223e 696e 6c69 6e65  \"keyword\">inline\n+0000d2d0: 3c2f 7370 616e 3e20 3c73 7061 6e20 636c  </span> <span cl\n+0000d2e0: 6173 733d 226b 6579 776f 7264 7479 7065  ass=\"keywordtype\n+0000d2f0: 223e 766f 6964 3c2f 7370 616e 3e3c 2f64  \">void</span></d\n+0000d300: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n+0000d310: 666f 6c64 6f70 656e 2220 6964 3d22 666f  foldopen\" id=\"fo\n+0000d320: 6c64 6f70 656e 3030 3331 3722 2064 6174  ldopen00317\" dat\n+0000d330: 612d 7374 6172 743d 227b 2220 6461 7461  a-start=\"{\" data\n+0000d340: 2d65 6e64 3d22 7d22 3e0a 3c64 6976 2063  -end=\"}\">.<div c\n+0000d350: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n+0000d360: 643d 226c 3030 3331 3722 206e 616d 653d  d=\"l00317\" name=\n+0000d370: 226c 3030 3331 3722 3e3c 2f61 3e3c 7370  \"l00317\"></a><sp\n+0000d380: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n+0000d390: 223e 3c61 2063 6c61 7373 3d22 6c69 6e65  \"><a class=\"line\n+0000d3a0: 2220 6872 6566 3d22 6130 3133 3431 2e68  \" href=\"a01341.h\n+0000d3b0: 746d 6c23 6135 3639 3634 6134 6337 3833  tml#a56964a4c783\n+0000d3c0: 6161 3135 6563 3166 3831 3933 3036 6565  aa15ec1f819306ee\n+0000d3d0: 3966 3231 3422 3e20 2033 3137 3c2f 613e  9f214\">  317</a>\n+0000d3e0: 3c2f 7370 616e 3e3c 6120 636c 6173 733d  </span><a class=\n+0000d3f0: 2263 6f64 6520 686c 5f66 756e 6374 696f  \"code hl_functio\n+0000d400: 6e22 2068 7265 663d 2261 3031 3334 312e  n\" href=\"a01341.\n+0000d410: 6874 6d6c 2361 3536 3936 3461 3463 3738  html#a56964a4c78\n+0000d420: 3361 6131 3565 6331 6638 3139 3330 3665  3aa15ec1f819306e\n+0000d430: 6539 6632 3134 223e 5363 6865 6d65 266c  e9f214\">Scheme&l\n+0000d440: 743b 5343 4845 4d45 2667 743b 3a3a 6173  t;SCHEME&gt;::as\n+0000d450: 7369 676e 4372 6561 7365 4d61 736b 466f  signCreaseMaskFo\n+0000d460: 7245 6467 653c 2f61 3e28 4544 4745 203c  rEdge</a>(EDGE <\n+0000d470: 7370 616e 2063 6c61 7373 3d22 6b65 7977  span class=\"keyw\n+0000d480: 6f72 6422 3e63 6f6e 7374 3c2f 7370 616e  ord\">const</span\n+0000d490: 3e26 616d 703b 2c20 4d41 534b 2661 6d70  >&amp;, MASK&amp\n+0000d4a0: 3b20 6d61 736b 293c 7370 616e 2063 6c61  ; mask)<span cla\n+0000d4b0: 7373 3d22 6b65 7977 6f72 6422 3e20 636f  ss=\"keyword\"> co\n+0000d4c0: 6e73 7420 3c2f 7370 616e 3e7b 3c2f 6469  nst </span>{</di\n+0000d4d0: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n+0000d4e0: 696e 6522 3e3c 6120 6964 3d22 6c30 3033  ine\"><a id=\"l003\n+0000d4f0: 3138 2220 6e61 6d65 3d22 6c30 3033 3138  18\" name=\"l00318\n+0000d500: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n+0000d510: 733d 226c 696e 656e 6f22 3e20 2033 3138  s=\"lineno\">  318\n+0000d520: 3c2f 7370 616e 3e20 3c2f 6469 763e 0a3c  </span> </div>.<\n+0000d530: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n+0000d540: 3e3c 6120 6964 3d22 6c30 3033 3139 2220  ><a id=\"l00319\" \n+0000d550: 6e61 6d65 3d22 6c30 3033 3139 223e 3c2f  name=\"l00319\"></\n+0000d560: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n+0000d570: 696e 656e 6f22 3e20 2033 3139 3c2f 7370  ineno\">  319</sp\n+0000d580: 616e 3e20 2020 206d 6173 6b2e 5365 744e  an>    mask.SetN\n+0000d590: 756d 5665 7274 6578 5765 6967 6874 7328  umVertexWeights(\n+0000d5a0: 3229 3b3c 2f64 6976 3e0a 3c64 6976 2063  2);</div>.<div c\n+0000d5b0: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n+0000d5c0: 643d 226c 3030 3332 3022 206e 616d 653d  d=\"l00320\" name=\n+0000d5d0: 226c 3030 3332 3022 3e3c 2f61 3e3c 7370  \"l00320\"></a><sp\n+0000d5e0: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n+0000d5f0: 223e 2020 3332 303c 2f73 7061 6e3e 2020  \">  320</span>  \n+0000d600: 2020 6d61 736b 2e53 6574 4e75 6d45 6467    mask.SetNumEdg\n+0000d610: 6557 6569 6768 7473 2830 293b 3c2f 6469  eWeights(0);</di\n+0000d620: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n+0000d630: 696e 6522 3e3c 6120 6964 3d22 6c30 3033  ine\"><a id=\"l003\n+0000d640: 3231 2220 6e61 6d65 3d22 6c30 3033 3231  21\" name=\"l00321\n+0000d650: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n+0000d660: 733d 226c 696e 656e 6f22 3e20 2033 3231  s=\"lineno\">  321\n+0000d670: 3c2f 7370 616e 3e20 2020 206d 6173 6b2e  </span>    mask.\n+0000d680: 5365 744e 756d 4661 6365 5765 6967 6874  SetNumFaceWeight\n+0000d690: 7328 3029 3b3c 2f64 6976 3e0a 3c64 6976  s(0);</div>.<div\n+0000d6a0: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n+0000d6b0: 2069 643d 226c 3030 3332 3222 206e 616d   id=\"l00322\" nam\n+0000d6c0: 653d 226c 3030 3332 3222 3e3c 2f61 3e3c  e=\"l00322\"></a><\n+0000d6d0: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n+0000d6e0: 6e6f 223e 2020 3332 323c 2f73 7061 6e3e  no\">  322</span>\n+0000d6f0: 2020 2020 6d61 736b 2e53 6574 4661 6365      mask.SetFace\n+0000d700: 5765 6967 6874 7346 6f72 4661 6365 4365  WeightsForFaceCe\n+0000d710: 6e74 6572 7328 3c73 7061 6e20 636c 6173  nters(<span clas\n+0000d720: 733d 226b 6579 776f 7264 223e 6661 6c73  s=\"keyword\">fals\n+0000d730: 653c 2f73 7061 6e3e 293b 3c2f 6469 763e  e</span>);</div>\n+0000d740: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n+0000d750: 6522 3e3c 6120 6964 3d22 6c30 3033 3233  e\"><a id=\"l00323\n+0000d760: 2220 6e61 6d65 3d22 6c30 3033 3233 223e  \" name=\"l00323\">\n+0000d770: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n+0000d780: 226c 696e 656e 6f22 3e20 2033 3233 3c2f  \"lineno\">  323</\n+0000d790: 7370 616e 3e20 3c2f 6469 763e 0a3c 6469  span> </div>.<di\n+0000d7a0: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n+0000d7b0: 6120 6964 3d22 6c30 3033 3234 2220 6e61  a id=\"l00324\" na\n+0000d7c0: 6d65 3d22 6c30 3033 3234 223e 3c2f 613e  me=\"l00324\"></a>\n+0000d7d0: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n+0000d7e0: 656e 6f22 3e20 2033 3234 3c2f 7370 616e  eno\">  324</span\n+0000d7f0: 3e20 2020 206d 6173 6b2e 5665 7274 6578  >    mask.Vertex\n+0000d800: 5765 6967 6874 2830 2920 3d20 302e 3566  Weight(0) = 0.5f\n+0000d810: 3b3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ;</div>.<div cla\n+0000d820: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n+0000d830: 226c 3030 3332 3522 206e 616d 653d 226c  \"l00325\" name=\"l\n+0000d840: 3030 3332 3522 3e3c 2f61 3e3c 7370 616e  00325\"></a><span\n+0000d850: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n+0000d860: 2020 3332 353c 2f73 7061 6e3e 2020 2020    325</span>    \n+0000d870: 6d61 736b 2e56 6572 7465 7857 6569 6768  mask.VertexWeigh\n+0000d880: 7428 3129 203d 2030 2e35 663b 3c2f 6469  t(1) = 0.5f;</di\n+0000d890: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n+0000d8a0: 696e 6522 3e3c 6120 6964 3d22 6c30 3033  ine\"><a id=\"l003\n+0000d8b0: 3236 2220 6e61 6d65 3d22 6c30 3033 3236  26\" name=\"l00326\n+0000d8c0: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n+0000d8d0: 733d 226c 696e 656e 6f22 3e20 2033 3236  s=\"lineno\">  326\n+0000d8e0: 3c2f 7370 616e 3e7d 3c2f 6469 763e 0a3c  </span>}</div>.<\n+0000d8f0: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n+0000d900: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n+0000d910: 3030 3332 3722 206e 616d 653d 226c 3030  00327\" name=\"l00\n+0000d920: 3332 3722 3e3c 2f61 3e3c 7370 616e 2063  327\"></a><span c\n+0000d930: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n+0000d940: 3332 373c 2f73 7061 6e3e 203c 2f64 6976  327</span> </div\n+0000d950: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n+0000d960: 6e65 223e 3c61 2069 643d 226c 3030 3332  ne\"><a id=\"l0032\n+0000d970: 3822 206e 616d 653d 226c 3030 3332 3822  8\" name=\"l00328\"\n+0000d980: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n+0000d990: 3d22 6c69 6e65 6e6f 223e 2020 3332 383c  =\"lineno\">  328<\n+0000d9a0: 2f73 7061 6e3e 3c73 7061 6e20 636c 6173  /span><span clas\n+0000d9b0: 733d 226b 6579 776f 7264 223e 7465 6d70  s=\"keyword\">temp\n+0000d9c0: 6c61 7465 3c2f 7370 616e 3e20 266c 743b  late</span> &lt;\n+0000d9d0: 5363 6865 6d65 5479 7065 2053 4348 454d  SchemeType SCHEM\n+0000d9e0: 4526 6774 3b3c 2f64 6976 3e0a 3c64 6976  E&gt;</div>.<div\n+0000d9f0: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n+0000da00: 2069 643d 226c 3030 3332 3922 206e 616d   id=\"l00329\" nam\n+0000da10: 653d 226c 3030 3332 3922 3e3c 2f61 3e3c  e=\"l00329\"></a><\n+0000da20: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n+0000da30: 6e6f 223e 2020 3332 393c 2f73 7061 6e3e  no\">  329</span>\n+0000da40: 3c73 7061 6e20 636c 6173 733d 226b 6579  <span class=\"key\n+0000da50: 776f 7264 223e 7465 6d70 6c61 7465 3c2f  word\">template</\n+0000da60: 7370 616e 3e20 266c 743b 3c73 7061 6e20  span> &lt;<span \n+0000da70: 636c 6173 733d 226b 6579 776f 7264 223e  class=\"keyword\">\n+0000da80: 7479 7065 6e61 6d65 3c2f 7370 616e 3e20  typename</span> \n+0000da90: 5645 5254 4558 2c20 3c73 7061 6e20 636c  VERTEX, <span cl\n+0000daa0: 6173 733d 226b 6579 776f 7264 223e 7479  ass=\"keyword\">ty\n+0000dab0: 7065 6e61 6d65 3c2f 7370 616e 3e20 4d41  pename</span> MA\n+0000dac0: 534b 2667 743b 3c2f 6469 763e 0a3c 6469  SK&gt;</div>.<di\n+0000dad0: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n+0000dae0: 6120 6964 3d22 6c30 3033 3330 2220 6e61  a id=\"l00330\" na\n+0000daf0: 6d65 3d22 6c30 3033 3330 223e 3c2f 613e  me=\"l00330\"></a>\n+0000db00: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n+0000db10: 656e 6f22 3e20 2033 3330 3c2f 7370 616e  eno\">  330</span\n+0000db20: 3e3c 7370 616e 2063 6c61 7373 3d22 6b65  ><span class=\"ke\n+0000db30: 7977 6f72 6422 3e69 6e6c 696e 653c 2f73  yword\">inline</s\n+0000db40: 7061 6e3e 203c 7370 616e 2063 6c61 7373  pan> <span class\n+0000db50: 3d22 6b65 7977 6f72 6474 7970 6522 3e76  =\"keywordtype\">v\n+0000db60: 6f69 643c 2f73 7061 6e3e 3c2f 6469 763e  oid</span></div>\n+0000db70: 0a3c 6469 7620 636c 6173 733d 2266 6f6c  .<div class=\"fol\n+0000db80: 646f 7065 6e22 2069 643d 2266 6f6c 646f  dopen\" id=\"foldo\n+0000db90: 7065 6e30 3033 3331 2220 6461 7461 2d73  pen00331\" data-s\n+0000dba0: 7461 7274 3d22 7b22 2064 6174 612d 656e  tart=\"{\" data-en\n+0000dbb0: 643d 227d 223e 0a3c 6469 7620 636c 6173  d=\"}\">.<div clas\n+0000dbc0: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n+0000dbd0: 6c30 3033 3331 2220 6e61 6d65 3d22 6c30  l00331\" name=\"l0\n+0000dbe0: 3033 3331 223e 3c2f 613e 3c73 7061 6e20  0331\"></a><span \n+0000dbf0: 636c 6173 733d 226c 696e 656e 6f22 3e3c  class=\"lineno\"><\n+0000dc00: 6120 636c 6173 733d 226c 696e 6522 2068  a class=\"line\" h\n+0000dc10: 7265 663d 2261 3031 3334 312e 6874 6d6c  ref=\"a01341.html\n+0000dc20: 2361 3737 3634 3466 3639 6564 6530 3366  #a77644f69ede03f\n+0000dc30: 6136 3232 3232 6436 3061 3939 3937 3032  a62222d60a999702\n+0000dc40: 3338 223e 2020 3333 313c 2f61 3e3c 2f73  38\">  331</a></s\n+0000dc50: 7061 6e3e 3c61 2063 6c61 7373 3d22 636f  pan><a class=\"co\n+0000dc60: 6465 2068 6c5f 6675 6e63 7469 6f6e 2220  de hl_function\" \n+0000dc70: 6872 6566 3d22 6130 3133 3431 2e68 746d  href=\"a01341.htm\n+0000dc80: 6c23 6137 3736 3434 6636 3965 6465 3033  l#a77644f69ede03\n+0000dc90: 6661 3632 3232 3264 3630 6139 3939 3730  fa62222d60a99970\n+0000dca0: 3233 3822 3e53 6368 656d 6526 6c74 3b53  238\">Scheme&lt;S\n+0000dcb0: 4348 454d 4526 6774 3b3a 3a61 7373 6967  CHEME&gt;::assig\n+0000dcc0: 6e43 6f72 6e65 724d 6173 6b46 6f72 5665  nCornerMaskForVe\n+0000dcd0: 7274 6578 3c2f 613e 2856 4552 5445 5820  rtex</a>(VERTEX \n+0000dce0: 3c73 7061 6e20 636c 6173 733d 226b 6579  <span class=\"key\n+0000dcf0: 776f 7264 223e 636f 6e73 743c 2f73 7061  word\">const</spa\n+0000dd00: 6e3e 2661 6d70 3b2c 204d 4153 4b26 616d  n>&amp;, MASK&am\n+0000dd10: 703b 206d 6173 6b29 3c73 7061 6e20 636c  p; mask)<span cl\n+0000dd20: 6173 733d 226b 6579 776f 7264 223e 2063  ass=\"keyword\"> c\n+0000dd30: 6f6e 7374 203c 2f73 7061 6e3e 7b3c 2f64  onst </span>{</d\n+0000dd40: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n+0000dd50: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n+0000dd60: 3333 3222 206e 616d 653d 226c 3030 3333  332\" name=\"l0033\n+0000dd70: 3222 3e3c 2f61 3e3c 7370 616e 2063 6c61  2\"></a><span cla\n+0000dd80: 7373 3d22 6c69 6e65 6e6f 223e 2020 3333  ss=\"lineno\">  33\n+0000dd90: 323c 2f73 7061 6e3e 203c 2f64 6976 3e0a  2</span> </div>.\n+0000dda0: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n+0000ddb0: 223e 3c61 2069 643d 226c 3030 3333 3322  \"><a id=\"l00333\"\n+0000ddc0: 206e 616d 653d 226c 3030 3333 3322 3e3c   name=\"l00333\"><\n+0000ddd0: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n+0000dde0: 6c69 6e65 6e6f 223e 2020 3333 333c 2f73  lineno\">  333</s\n+0000ddf0: 7061 6e3e 2020 2020 6d61 736b 2e53 6574  pan>    mask.Set\n+0000de00: 4e75 6d56 6572 7465 7857 6569 6768 7473  NumVertexWeights\n+0000de10: 2831 293b 3c2f 6469 763e 0a3c 6469 7620  (1);</div>.<div \n+0000de20: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n+0000de30: 6964 3d22 6c30 3033 3334 2220 6e61 6d65  id=\"l00334\" name\n+0000de40: 3d22 6c30 3033 3334 223e 3c2f 613e 3c73  =\"l00334\"></a><s\n+0000de50: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n+0000de60: 6f22 3e20 2033 3334 3c2f 7370 616e 3e20  o\">  334</span> \n+0000de70: 2020 206d 6173 6b2e 5365 744e 756d 4564     mask.SetNumEd\n+0000de80: 6765 5765 6967 6874 7328 3029 3b3c 2f64  geWeights(0);</d\n+0000de90: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n+0000dea0: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n+0000deb0: 3333 3522 206e 616d 653d 226c 3030 3333  335\" name=\"l0033\n+0000dec0: 3522 3e3c 2f61 3e3c 7370 616e 2063 6c61  5\"></a><span cla\n+0000ded0: 7373 3d22 6c69 6e65 6e6f 223e 2020 3333  ss=\"lineno\">  33\n+0000dee0: 353c 2f73 7061 6e3e 2020 2020 6d61 736b  5</span>    mask\n+0000def0: 2e53 6574 4e75 6d46 6163 6557 6569 6768  .SetNumFaceWeigh\n+0000df00: 7473 2830 293b 3c2f 6469 763e 0a3c 6469  ts(0);</div>.<di\n+0000df10: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n+0000df20: 6120 6964 3d22 6c30 3033 3336 2220 6e61  a id=\"l00336\" na\n+0000df30: 6d65 3d22 6c30 3033 3336 223e 3c2f 613e  me=\"l00336\"></a>\n+0000df40: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n+0000df50: 656e 6f22 3e20 2033 3336 3c2f 7370 616e  eno\">  336</span\n+0000df60: 3e20 2020 206d 6173 6b2e 5365 7446 6163  >    mask.SetFac\n+0000df70: 6557 6569 6768 7473 466f 7246 6163 6543  eWeightsForFaceC\n+0000df80: 656e 7465 7273 283c 7370 616e 2063 6c61  enters(<span cla\n+0000df90: 7373 3d22 6b65 7977 6f72 6422 3e66 616c  ss=\"keyword\">fal\n+0000dfa0: 7365 3c2f 7370 616e 3e29 3b3c 2f64 6976  se</span>);</div\n+0000dfb0: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n+0000dfc0: 6e65 223e 3c61 2069 643d 226c 3030 3333  ne\"><a id=\"l0033\n+0000dfd0: 3722 206e 616d 653d 226c 3030 3333 3722  7\" name=\"l00337\"\n+0000dfe0: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n+0000dff0: 3d22 6c69 6e65 6e6f 223e 2020 3333 373c  =\"lineno\">  337<\n+0000e000: 2f73 7061 6e3e 203c 2f64 6976 3e0a 3c64  /span> </div>.<d\n+0000e010: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n+0000e020: 3c61 2069 643d 226c 3030 3333 3822 206e  <a id=\"l00338\" n\n+0000e030: 616d 653d 226c 3030 3333 3822 3e3c 2f61  ame=\"l00338\"></a\n+0000e040: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n+0000e050: 6e65 6e6f 223e 2020 3333 383c 2f73 7061  neno\">  338</spa\n+0000e060: 6e3e 2020 2020 6d61 736b 2e56 6572 7465  n>    mask.Verte\n+0000e070: 7857 6569 6768 7428 3029 203d 2031 2e30  xWeight(0) = 1.0\n+0000e080: 663b 3c2f 6469 763e 0a3c 6469 7620 636c  f;</div>.<div cl\n+0000e090: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n+0000e0a0: 3d22 6c30 3033 3339 2220 6e61 6d65 3d22  =\"l00339\" name=\"\n+0000e0b0: 6c30 3033 3339 223e 3c2f 613e 3c73 7061  l00339\"></a><spa\n+0000e0c0: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n+0000e0d0: 3e20 2033 3339 3c2f 7370 616e 3e7d 3c2f  >  339</span>}</\n+0000e0e0: 6469 763e 0a3c 2f64 6976 3e0a 3c64 6976  div>.</div>.<div\n+0000e0f0: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n+0000e100: 2069 643d 226c 3030 3334 3022 206e 616d   id=\"l00340\" nam\n+0000e110: 653d 226c 3030 3334 3022 3e3c 2f61 3e3c  e=\"l00340\"></a><\n+0000e120: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n+0000e130: 6e6f 223e 2020 3334 303c 2f73 7061 6e3e  no\">  340</span>\n+0000e140: 203c 2f64 6976 3e0a 3c64 6976 2063 6c61   </div>.<div cla\n+0000e150: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n+0000e160: 226c 3030 3334 3122 206e 616d 653d 226c  \"l00341\" name=\"l\n+0000e170: 3030 3334 3122 3e3c 2f61 3e3c 7370 616e  00341\"></a><span\n+0000e180: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n+0000e190: 2020 3334 313c 2f73 7061 6e3e 203c 2f64    341</span> </d\n+0000e1a0: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n+0000e1b0: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n+0000e1c0: 3334 3222 206e 616d 653d 226c 3030 3334  342\" name=\"l0034\n+0000e1d0: 3222 3e3c 2f61 3e3c 7370 616e 2063 6c61  2\"></a><span cla\n+0000e1e0: 7373 3d22 6c69 6e65 6e6f 223e 2020 3334  ss=\"lineno\">  34\n+0000e1f0: 323c 2f73 7061 6e3e 3c73 7061 6e20 636c  2</span><span cl\n+0000e200: 6173 733d 2263 6f6d 6d65 6e74 223e 2f2f  ass=\"comment\">//\n+0000e210: 3c2f 7370 616e 3e3c 2f64 6976 3e0a 3c64  </span></div>.<d\n+0000e220: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n+0000e230: 3c61 2069 643d 226c 3030 3334 3322 206e  <a id=\"l00343\" n\n+0000e240: 616d 653d 226c 3030 3334 3322 3e3c 2f61  ame=\"l00343\"></a\n+0000e250: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n+0000e260: 6e65 6e6f 223e 2020 3334 333c 2f73 7061  neno\">  343</spa\n+0000e270: 6e3e 3c73 7061 6e20 636c 6173 733d 2263  n><span class=\"c\n+0000e280: 6f6d 6d65 6e74 223e 2f2f 2020 5468 6520  omment\">//  The \n+0000e290: 636f 6d70 7574 6174 696f 6e20 6f66 2061  computation of a\n+0000e2a0: 2066 6163 652d 7665 7274 6578 206d 6173   face-vertex mas\n+0000e2b0: 6b20 6973 2074 7269 7669 616c 2061 6e64  k is trivial and\n+0000e2c0: 2063 6f6e 7369 7374 656e 7420 666f 7220   consistent for \n+0000e2d0: 616c 6c20 7363 6865 6d65 733a 3c2f 7370  all schemes:</sp\n+0000e2e0: 616e 3e3c 2f64 6976 3e0a 3c64 6976 2063  an></div>.<div c\n+0000e2f0: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n+0000e300: 643d 226c 3030 3334 3422 206e 616d 653d  d=\"l00344\" name=\n+0000e310: 226c 3030 3334 3422 3e3c 2f61 3e3c 7370  \"l00344\"></a><sp\n+0000e320: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n+0000e330: 223e 2020 3334 343c 2f73 7061 6e3e 3c73  \">  344</span><s\n+0000e340: 7061 6e20 636c 6173 733d 2263 6f6d 6d65  pan class=\"comme\n+0000e350: 6e74 223e 2f2f 3c2f 7370 616e 3e3c 2f64  nt\">//</span></d\n+0000e360: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n+0000e370: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n+0000e380: 3334 3522 206e 616d 653d 226c 3030 3334  345\" name=\"l0034\n+0000e390: 3522 3e3c 2f61 3e3c 7370 616e 2063 6c61  5\"></a><span cla\n+0000e3a0: 7373 3d22 6c69 6e65 6e6f 223e 2020 3334  ss=\"lineno\">  34\n+0000e3b0: 353c 2f73 7061 6e3e 3c73 7061 6e20 636c  5</span><span cl\n+0000e3c0: 6173 733d 226b 6579 776f 7264 223e 7465  ass=\"keyword\">te\n+0000e3d0: 6d70 6c61 7465 3c2f 7370 616e 3e20 266c  mplate</span> &l\n+0000e3e0: 743b 5363 6865 6d65 5479 7065 2053 4348  t;SchemeType SCH\n+0000e3f0: 454d 4526 6774 3b3c 2f64 6976 3e0a 3c64  EME&gt;</div>.<d\n+0000e400: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n+0000e410: 3c61 2069 643d 226c 3030 3334 3622 206e  <a id=\"l00346\" n\n+0000e420: 616d 653d 226c 3030 3334 3622 3e3c 2f61  ame=\"l00346\"></a\n+0000e430: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n+0000e440: 6e65 6e6f 223e 2020 3334 363c 2f73 7061  neno\">  346</spa\n+0000e450: 6e3e 3c73 7061 6e20 636c 6173 733d 226b  n><span class=\"k\n+0000e460: 6579 776f 7264 223e 7465 6d70 6c61 7465  eyword\">template\n+0000e470: 3c2f 7370 616e 3e20 266c 743b 3c73 7061  </span> &lt;<spa\n+0000e480: 6e20 636c 6173 733d 226b 6579 776f 7264  n class=\"keyword\n+0000e490: 223e 7479 7065 6e61 6d65 3c2f 7370 616e  \">typename</span\n+0000e4a0: 3e20 4641 4345 2c20 3c73 7061 6e20 636c  > FACE, <span cl\n+0000e4b0: 6173 733d 226b 6579 776f 7264 223e 7479  ass=\"keyword\">ty\n+0000e4c0: 7065 6e61 6d65 3c2f 7370 616e 3e20 4d41  pename</span> MA\n+0000e4d0: 534b 2667 743b 3c2f 6469 763e 0a3c 6469  SK&gt;</div>.<di\n+0000e4e0: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n+0000e4f0: 6120 6964 3d22 6c30 3033 3437 2220 6e61  a id=\"l00347\" na\n+0000e500: 6d65 3d22 6c30 3033 3437 223e 3c2f 613e  me=\"l00347\"></a>\n+0000e510: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n+0000e520: 656e 6f22 3e20 2033 3437 3c2f 7370 616e  eno\">  347</span\n+0000e530: 3e3c 7370 616e 2063 6c61 7373 3d22 6b65  ><span class=\"ke\n+0000e540: 7977 6f72 6474 7970 6522 3e76 6f69 643c  ywordtype\">void<\n+0000e550: 2f73 7061 6e3e 3c2f 6469 763e 0a3c 6469  /span></div>.<di\n+0000e560: 7620 636c 6173 733d 2266 6f6c 646f 7065  v class=\"foldope\n+0000e570: 6e22 2069 643d 2266 6f6c 646f 7065 6e30  n\" id=\"foldopen0\n+0000e580: 3033 3438 2220 6461 7461 2d73 7461 7274  0348\" data-start\n+0000e590: 3d22 7b22 2064 6174 612d 656e 643d 227d  =\"{\" data-end=\"}\n+0000e5a0: 223e 0a3c 6469 7620 636c 6173 733d 226c  \">.<div class=\"l\n+0000e5b0: 696e 6522 3e3c 6120 6964 3d22 6c30 3033  ine\"><a id=\"l003\n+0000e5c0: 3438 2220 6e61 6d65 3d22 6c30 3033 3438  48\" name=\"l00348\n+0000e5d0: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n+0000e5e0: 733d 226c 696e 656e 6f22 3e3c 6120 636c  s=\"lineno\"><a cl\n+0000e5f0: 6173 733d 226c 696e 6522 2068 7265 663d  ass=\"line\" href=\n+0000e600: 2261 3031 3334 312e 6874 6d6c 2361 6538  \"a01341.html#ae8\n+0000e610: 6564 3234 6231 3639 3165 3635 3433 3664  ed24b1691e65436d\n+0000e620: 3434 6537 3033 3138 3963 6166 3432 223e  44e703189caf42\">\n+0000e630: 2020 3334 383c 2f61 3e3c 2f73 7061 6e3e    348</a></span>\n+0000e640: 3c61 2063 6c61 7373 3d22 636f 6465 2068  <a class=\"code h\n+0000e650: 6c5f 6675 6e63 7469 6f6e 2220 6872 6566  l_function\" href\n+0000e660: 3d22 6130 3133 3431 2e68 746d 6c23 6165  =\"a01341.html#ae\n+0000e670: 3865 6432 3462 3136 3931 6536 3534 3336  8ed24b1691e65436\n+0000e680: 6434 3465 3730 3331 3839 6361 6634 3222  d44e703189caf42\"\n+0000e690: 3e53 6368 656d 6526 6c74 3b53 4348 454d  >Scheme&lt;SCHEM\n+0000e6a0: 4526 6774 3b3a 3a43 6f6d 7075 7465 4661  E&gt;::ComputeFa\n+0000e6b0: 6365 5665 7274 6578 4d61 736b 3c2f 613e  ceVertexMask</a>\n+0000e6c0: 2846 4143 4520 3c73 7061 6e20 636c 6173  (FACE <span clas\n+0000e6d0: 733d 226b 6579 776f 7264 223e 636f 6e73  s=\"keyword\">cons\n+0000e6e0: 743c 2f73 7061 6e3e 2661 6d70 3b20 6661  t</span>&amp; fa\n+0000e6f0: 6365 2c20 4d41 534b 2661 6d70 3b20 6d61  ce, MASK&amp; ma\n+0000e700: 736b 293c 7370 616e 2063 6c61 7373 3d22  sk)<span class=\"\n+0000e710: 6b65 7977 6f72 6422 3e20 636f 6e73 7420  keyword\"> const \n+0000e720: 3c2f 7370 616e 3e7b 3c2f 6469 763e 0a3c  </span>{</div>.<\n+0000e730: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n+0000e740: 3e3c 6120 6964 3d22 6c30 3033 3439 2220  ><a id=\"l00349\" \n+0000e750: 6e61 6d65 3d22 6c30 3033 3439 223e 3c2f  name=\"l00349\"></\n+0000e760: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n+0000e770: 696e 656e 6f22 3e20 2033 3439 3c2f 7370  ineno\">  349</sp\n+0000e780: 616e 3e20 3c2f 6469 763e 0a3c 6469 7620  an> </div>.<div \n+0000e790: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n+0000e7a0: 6964 3d22 6c30 3033 3530 2220 6e61 6d65  id=\"l00350\" name\n+0000e7b0: 3d22 6c30 3033 3530 223e 3c2f 613e 3c73  =\"l00350\"></a><s\n+0000e7c0: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n+0000e7d0: 6f22 3e20 2033 3530 3c2f 7370 616e 3e20  o\">  350</span> \n+0000e7e0: 2020 203c 7370 616e 2063 6c61 7373 3d22     <span class=\"\n+0000e7f0: 6b65 7977 6f72 6474 7970 6522 3e69 6e74  keywordtype\">int\n+0000e800: 3c2f 7370 616e 3e20 7665 7274 436f 756e  </span> vertCoun\n+0000e810: 7420 3d20 6661 6365 2e47 6574 4e75 6d56  t = face.GetNumV\n+0000e820: 6572 7469 6365 7328 293b 3c2f 6469 763e  ertices();</div>\n+0000e830: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n+0000e840: 6522 3e3c 6120 6964 3d22 6c30 3033 3531  e\"><a id=\"l00351\n+0000e850: 2220 6e61 6d65 3d22 6c30 3033 3531 223e  \" name=\"l00351\">\n+0000e860: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n+0000e870: 226c 696e 656e 6f22 3e20 2033 3531 3c2f  \"lineno\">  351</\n+0000e880: 7370 616e 3e20 3c2f 6469 763e 0a3c 6469  span> </div>.<di\n+0000e890: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n+0000e8a0: 6120 6964 3d22 6c30 3033 3532 2220 6e61  a id=\"l00352\" na\n+0000e8b0: 6d65 3d22 6c30 3033 3532 223e 3c2f 613e  me=\"l00352\"></a>\n+0000e8c0: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n+0000e8d0: 656e 6f22 3e20 2033 3532 3c2f 7370 616e  eno\">  352</span\n+0000e8e0: 3e20 2020 206d 6173 6b2e 5365 744e 756d  >    mask.SetNum\n+0000e8f0: 5665 7274 6578 5765 6967 6874 7328 7665  VertexWeights(ve\n+0000e900: 7274 436f 756e 7429 3b3c 2f64 6976 3e0a  rtCount);</div>.\n+0000e910: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n+0000e920: 223e 3c61 2069 643d 226c 3030 3335 3322  \"><a id=\"l00353\"\n+0000e930: 206e 616d 653d 226c 3030 3335 3322 3e3c   name=\"l00353\"><\n+0000e940: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n+0000e950: 6c69 6e65 6e6f 223e 2020 3335 333c 2f73  lineno\">  353</s\n+0000e960: 7061 6e3e 2020 2020 6d61 736b 2e53 6574  pan>    mask.Set\n+0000e970: 4e75 6d45 6467 6557 6569 6768 7473 2830  NumEdgeWeights(0\n+0000e980: 293b 3c2f 6469 763e 0a3c 6469 7620 636c  );</div>.<div cl\n+0000e990: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n+0000e9a0: 3d22 6c30 3033 3534 2220 6e61 6d65 3d22  =\"l00354\" name=\"\n+0000e9b0: 6c30 3033 3534 223e 3c2f 613e 3c73 7061  l00354\"></a><spa\n+0000e9c0: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n+0000e9d0: 3e20 2033 3534 3c2f 7370 616e 3e20 2020  >  354</span>   \n+0000e9e0: 206d 6173 6b2e 5365 744e 756d 4661 6365   mask.SetNumFace\n+0000e9f0: 5765 6967 6874 7328 3029 3b3c 2f64 6976  Weights(0);</div\n+0000ea00: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n+0000ea10: 6e65 223e 3c61 2069 643d 226c 3030 3335  ne\"><a id=\"l0035\n+0000ea20: 3522 206e 616d 653d 226c 3030 3335 3522  5\" name=\"l00355\"\n+0000ea30: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n+0000ea40: 3d22 6c69 6e65 6e6f 223e 2020 3335 353c  =\"lineno\">  355<\n+0000ea50: 2f73 7061 6e3e 2020 2020 6d61 736b 2e53  /span>    mask.S\n+0000ea60: 6574 4661 6365 5765 6967 6874 7346 6f72  etFaceWeightsFor\n+0000ea70: 4661 6365 4365 6e74 6572 7328 3c73 7061  FaceCenters(<spa\n+0000ea80: 6e20 636c 6173 733d 226b 6579 776f 7264  n class=\"keyword\n+0000ea90: 223e 6661 6c73 653c 2f73 7061 6e3e 293b  \">false</span>);\n+0000eaa0: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n+0000eab0: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n+0000eac0: 6c30 3033 3536 2220 6e61 6d65 3d22 6c30  l00356\" name=\"l0\n+0000ead0: 3033 3536 223e 3c2f 613e 3c73 7061 6e20  0356\"></a><span \n+0000eae0: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n+0000eaf0: 2033 3536 3c2f 7370 616e 3e20 3c2f 6469   356</span> </di\n+0000eb00: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n+0000eb10: 696e 6522 3e3c 6120 6964 3d22 6c30 3033  ine\"><a id=\"l003\n+0000eb20: 3537 2220 6e61 6d65 3d22 6c30 3033 3537  57\" name=\"l00357\n+0000eb30: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n+0000eb40: 733d 226c 696e 656e 6f22 3e20 2033 3537  s=\"lineno\">  357\n+0000eb50: 3c2f 7370 616e 3e20 2020 203c 7370 616e  </span>    <span\n+0000eb60: 2063 6c61 7373 3d22 6b65 7977 6f72 6422   class=\"keyword\"\n+0000eb70: 3e74 7970 656e 616d 653c 2f73 7061 6e3e  >typename</span>\n+0000eb80: 204d 4153 4b3a 3a57 6569 6768 7420 7657   MASK::Weight vW\n+0000eb90: 6569 6768 7420 3d20 312e 3066 202f 2028  eight = 1.0f / (\n+0000eba0: 3c73 7061 6e20 636c 6173 733d 226b 6579  <span class=\"key\n+0000ebb0: 776f 7264 223e 7479 7065 6e61 6d65 3c2f  word\">typename</\n+0000ebc0: 7370 616e 3e20 4d41 534b 3a3a 5765 6967  span> MASK::Weig\n+0000ebd0: 6874 2920 7665 7274 436f 756e 743b 3c2f  ht) vertCount;</\n+0000ebe0: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n+0000ebf0: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n+0000ec00: 3033 3538 2220 6e61 6d65 3d22 6c30 3033  0358\" name=\"l003\n+0000ec10: 3538 223e 3c2f 613e 3c73 7061 6e20 636c  58\"></a><span cl\n+0000ec20: 6173 733d 226c 696e 656e 6f22 3e20 2033  ass=\"lineno\">  3\n+0000ec30: 3538 3c2f 7370 616e 3e20 2020 203c 7370  58</span>    <sp\n+0000ec40: 616e 2063 6c61 7373 3d22 6b65 7977 6f72  an class=\"keywor\n+0000ec50: 6466 6c6f 7722 3e66 6f72 3c2f 7370 616e  dflow\">for</span\n+0000ec60: 3e20 283c 7370 616e 2063 6c61 7373 3d22  > (<span class=\"\n+0000ec70: 6b65 7977 6f72 6474 7970 6522 3e69 6e74  keywordtype\">int\n+0000ec80: 3c2f 7370 616e 3e20 6920 3d20 303b 2069  </span> i = 0; i\n+0000ec90: 2026 6c74 3b20 7665 7274 436f 756e 743b   &lt; vertCount;\n+0000eca0: 202b 2b69 2920 7b3c 2f64 6976 3e0a 3c64   ++i) {</div>.<d\n+0000ecb0: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n+0000ecc0: 3c61 2069 643d 226c 3030 3335 3922 206e  <a id=\"l00359\" n\n+0000ecd0: 616d 653d 226c 3030 3335 3922 3e3c 2f61  ame=\"l00359\"></a\n+0000ece0: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n+0000ecf0: 6e65 6e6f 223e 2020 3335 393c 2f73 7061  neno\">  359</spa\n+0000ed00: 6e3e 2020 2020 2020 2020 6d61 736b 2e56  n>        mask.V\n+0000ed10: 6572 7465 7857 6569 6768 7428 6929 203d  ertexWeight(i) =\n+0000ed20: 2076 5765 6967 6874 3b3c 2f64 6976 3e0a   vWeight;</div>.\n+0000ed30: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n+0000ed40: 223e 3c61 2069 643d 226c 3030 3336 3022  \"><a id=\"l00360\"\n+0000ed50: 206e 616d 653d 226c 3030 3336 3022 3e3c   name=\"l00360\"><\n+0000ed60: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n+0000ed70: 6c69 6e65 6e6f 223e 2020 3336 303c 2f73  lineno\">  360</s\n+0000ed80: 7061 6e3e 2020 2020 7d3c 2f64 6976 3e0a  pan>    }</div>.\n+0000ed90: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n+0000eda0: 223e 3c61 2069 643d 226c 3030 3336 3122  \"><a id=\"l00361\"\n+0000edb0: 206e 616d 653d 226c 3030 3336 3122 3e3c   name=\"l00361\"><\n+0000edc0: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n+0000edd0: 6c69 6e65 6e6f 223e 2020 3336 313c 2f73  lineno\">  361</s\n+0000ede0: 7061 6e3e 7d3c 2f64 6976 3e0a 3c2f 6469  pan>}</div>.</di\n+0000edf0: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n+0000ee00: 696e 6522 3e3c 6120 6964 3d22 6c30 3033  ine\"><a id=\"l003\n+0000ee10: 3632 2220 6e61 6d65 3d22 6c30 3033 3632  62\" name=\"l00362\n+0000ee20: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n+0000ee30: 733d 226c 696e 656e 6f22 3e20 2033 3632  s=\"lineno\">  362\n+0000ee40: 3c2f 7370 616e 3e20 3c2f 6469 763e 0a3c  </span> </div>.<\n+0000ee50: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n+0000ee60: 3e3c 6120 6964 3d22 6c30 3033 3633 2220  ><a id=\"l00363\" \n+0000ee70: 6e61 6d65 3d22 6c30 3033 3633 223e 3c2f  name=\"l00363\"></\n+0000ee80: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n+0000ee90: 696e 656e 6f22 3e20 2033 3633 3c2f 7370  ineno\">  363</sp\n+0000eea0: 616e 3e20 3c2f 6469 763e 0a3c 6469 7620  an> </div>.<div \n+0000eeb0: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n+0000eec0: 6964 3d22 6c30 3033 3634 2220 6e61 6d65  id=\"l00364\" name\n+0000eed0: 3d22 6c30 3033 3634 223e 3c2f 613e 3c73  =\"l00364\"></a><s\n+0000eee0: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n+0000eef0: 6f22 3e20 2033 3634 3c2f 7370 616e 3e3c  o\">  364</span><\n+0000ef00: 7370 616e 2063 6c61 7373 3d22 636f 6d6d  span class=\"comm\n+0000ef10: 656e 7422 3e2f 2f3c 2f73 7061 6e3e 3c2f  ent\">//</span></\n+0000ef20: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n+0000ef30: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n+0000ef40: 3033 3635 2220 6e61 6d65 3d22 6c30 3033  0365\" name=\"l003\n+0000ef50: 3635 223e 3c2f 613e 3c73 7061 6e20 636c  65\"></a><span cl\n+0000ef60: 6173 733d 226c 696e 656e 6f22 3e20 2033  ass=\"lineno\">  3\n+0000ef70: 3635 3c2f 7370 616e 3e3c 7370 616e 2063  65</span><span c\n+0000ef80: 6c61 7373 3d22 636f 6d6d 656e 7422 3e2f  lass=\"comment\">/\n+0000ef90: 2f20 2054 6865 2063 6f6d 7075 7461 7469  /  The computati\n+0000efa0: 6f6e 206f 6620 616e 2065 6467 652d 7665  on of an edge-ve\n+0000efb0: 7274 6578 206d 6173 6b20 7265 7175 6972  rtex mask requir\n+0000efc0: 6573 2069 6e73 7065 6374 696f 6e20 6f66  es inspection of\n+0000efd0: 2073 6861 7270 6e65 7373 2076 616c 7565   sharpness value\n+0000efe0: 7320 746f 3c2f 7370 616e 3e3c 2f64 6976  s to</span></div\n+0000eff0: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n+0000f000: 6e65 223e 3c61 2069 643d 226c 3030 3336  ne\"><a id=\"l0036\n+0000f010: 3622 206e 616d 653d 226c 3030 3336 3622  6\" name=\"l00366\"\n+0000f020: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n+0000f030: 3d22 6c69 6e65 6e6f 223e 2020 3336 363c  =\"lineno\">  366<\n+0000f040: 2f73 7061 6e3e 3c73 7061 6e20 636c 6173  /span><span clas\n+0000f050: 733d 2263 6f6d 6d65 6e74 223e 2f2f 2020  s=\"comment\">//  \n+0000f060: 6465 7465 726d 696e 6520 6966 2073 6d6f  determine if smo\n+0000f070: 6f74 6820 6f72 2061 2063 7265 6173 652c  oth or a crease,\n+0000f080: 2061 6e64 2061 6c73 6f20 746f 2064 6574   and also to det\n+0000f090: 6563 7420 616e 6420 6170 706c 7920 6120  ect and apply a \n+0000f0a0: 7472 616e 7369 7469 6f6e 2066 726f 6d20  transition from \n+0000f0b0: 613c 2f73 7061 6e3e 3c2f 6469 763e 0a3c  a</span></div>.<\n+0000f0c0: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n+0000f0d0: 3e3c 6120 6964 3d22 6c30 3033 3637 2220  ><a id=\"l00367\" \n+0000f0e0: 6e61 6d65 3d22 6c30 3033 3637 223e 3c2f  name=\"l00367\"></\n+0000f0f0: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n+0000f100: 696e 656e 6f22 3e20 2033 3637 3c2f 7370  ineno\">  367</sp\n+0000f110: 616e 3e3c 7370 616e 2063 6c61 7373 3d22  an><span class=\"\n+0000f120: 636f 6d6d 656e 7422 3e2f 2f20 2063 7265  comment\">//  cre\n+0000f130: 6173 6520 746f 2073 6d6f 6f74 682e 2020  ase to smooth.  \n+0000f140: 5573 696e 6720 7468 6520 7072 6f74 6563  Using the protec\n+0000f150: 7465 6420 6d65 7468 6f64 7320 746f 2061  ted methods to a\n+0000f160: 7373 6967 6e20 7468 6520 7370 6563 6966  ssign the specif\n+0000f170: 6963 206d 6173 6b73 2028 6f6e 6c79 3c2f  ic masks (only</\n+0000f180: 7370 616e 3e3c 2f64 6976 3e0a 3c64 6976  span></div>.<div\n+0000f190: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n+0000f1a0: 2069 643d 226c 3030 3336 3822 206e 616d   id=\"l00368\" nam\n+0000f1b0: 653d 226c 3030 3336 3822 3e3c 2f61 3e3c  e=\"l00368\"></a><\n+0000f1c0: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n+0000f1d0: 6e6f 223e 2020 3336 383c 2f73 7061 6e3e  no\">  368</span>\n+0000f1e0: 3c73 7061 6e20 636c 6173 733d 2263 6f6d  <span class=\"com\n+0000f1f0: 6d65 6e74 223e 2f2f 2020 7477 6f20 2d2d  ment\">//  two --\n+0000f200: 2073 6d6f 6f74 6820 6f72 2063 7265 6173   smooth or creas\n+0000f210: 6529 2074 6869 7320 696d 706c 656d 656e  e) this implemen\n+0000f220: 7461 7469 6f6e 2073 686f 756c 6420 7365  tation should se\n+0000f230: 7276 6520 616c 6c20 6e6f 6e2d 6c69 6e65  rve all non-line\n+0000f240: 6172 2073 6368 656d 6573 3c2f 7370 616e  ar schemes</span\n+0000f250: 3e3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ></div>.<div cla\n+0000f260: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n+0000f270: 226c 3030 3336 3922 206e 616d 653d 226c  \"l00369\" name=\"l\n+0000f280: 3030 3336 3922 3e3c 2f61 3e3c 7370 616e  00369\"></a><span\n+0000f290: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n+0000f2a0: 2020 3336 393c 2f73 7061 6e3e 3c73 7061    369</span><spa\n+0000f2b0: 6e20 636c 6173 733d 2263 6f6d 6d65 6e74  n class=\"comment\n+0000f2c0: 223e 2f2f 2020 2863 7572 7265 6e74 6c79  \">//  (currently\n+0000f2d0: 2043 6174 6d61 726b 2061 6e64 204c 6f6f   Catmark and Loo\n+0000f2e0: 7029 2061 6e64 206f 6e6c 7920 6e65 6564  p) and only need\n+0000f2f0: 7320 746f 2062 6520 7370 6563 6961 6c69  s to be speciali\n+0000f300: 7a65 6420 666f 7220 4269 6c69 6e65 6172  zed for Bilinear\n+0000f310: 2074 6f3c 2f73 7061 6e3e 3c2f 6469 763e   to</span></div>\n+0000f320: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n+0000f330: 6522 3e3c 6120 6964 3d22 6c30 3033 3730  e\"><a id=\"l00370\n+0000f340: 2220 6e61 6d65 3d22 6c30 3033 3730 223e  \" name=\"l00370\">\n+0000f350: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n+0000f360: 226c 696e 656e 6f22 3e20 2033 3730 3c2f  \"lineno\">  370</\n+0000f370: 7370 616e 3e3c 7370 616e 2063 6c61 7373  span><span class\n+0000f380: 3d22 636f 6d6d 656e 7422 3e2f 2f20 2074  =\"comment\">//  t\n+0000f390: 7269 7669 616c 697a 6520 6974 2074 6f20  rivialize it to \n+0000f3a0: 7468 6520 6372 6561 7365 2063 6173 652e  the crease case.\n+0000f3b0: 3c2f 7370 616e 3e3c 2f64 6976 3e0a 3c64  </span></div>.<d\n+0000f3c0: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n+0000f3d0: 3c61 2069 643d 226c 3030 3337 3122 206e  <a id=\"l00371\" n\n+0000f3e0: 616d 653d 226c 3030 3337 3122 3e3c 2f61  ame=\"l00371\"></a\n+0000f3f0: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n+0000f400: 6e65 6e6f 223e 2020 3337 313c 2f73 7061  neno\">  371</spa\n+0000f410: 6e3e 3c73 7061 6e20 636c 6173 733d 2263  n><span class=\"c\n+0000f420: 6f6d 6d65 6e74 223e 2f2f 3c2f 7370 616e  omment\">//</span\n+0000f430: 3e3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ></div>.<div cla\n+0000f440: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n+0000f450: 226c 3030 3337 3222 206e 616d 653d 226c  \"l00372\" name=\"l\n+0000f460: 3030 3337 3222 3e3c 2f61 3e3c 7370 616e  00372\"></a><span\n+0000f470: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n+0000f480: 2020 3337 323c 2f73 7061 6e3e 3c73 7061    372</span><spa\n+0000f490: 6e20 636c 6173 733d 2263 6f6d 6d65 6e74  n class=\"comment\n+0000f4a0: 223e 2f2f 2020 5468 6520 696d 706c 656d  \">//  The implem\n+0000f4b0: 656e 7461 7469 6f6e 2068 6572 6520 6973  entation here is\n+0000f4c0: 2073 6c69 6768 746c 7920 636f 6d70 6c69   slightly compli\n+0000f4d0: 6361 7465 6420 6279 2063 6f6d 6269 6e69  cated by combini\n+0000f4e0: 6e67 2074 776f 2073 6365 6e61 7269 6f73  ng two scenarios\n+0000f4f0: 2069 6e74 6f20 613c 2f73 7061 6e3e 3c2f   into a</span></\n+0000f500: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n+0000f510: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n+0000f520: 3033 3733 2220 6e61 6d65 3d22 6c30 3033  0373\" name=\"l003\n+0000f530: 3733 223e 3c2f 613e 3c73 7061 6e20 636c  73\"></a><span cl\n+0000f540: 6173 733d 226c 696e 656e 6f22 3e20 2033  ass=\"lineno\">  3\n+0000f550: 3733 3c2f 7370 616e 3e3c 7370 616e 2063  73</span><span c\n+0000f560: 6c61 7373 3d22 636f 6d6d 656e 7422 3e2f  lass=\"comment\">/\n+0000f570: 2f20 2073 696e 676c 6520 696d 706c 656d  /  single implem\n+0000f580: 656e 7461 7469 6f6e 202d 2d20 6569 7468  entation -- eith\n+0000f590: 6572 2074 6865 2063 616c 6c65 7220 6b6e  er the caller kn\n+0000f5a0: 6f77 7320 7468 6520 7061 7265 6e74 2061  ows the parent a\n+0000f5b0: 6e64 2063 6869 6c64 2072 756c 6573 2061  nd child rules a\n+0000f5c0: 6e64 3c2f 7370 616e 3e3c 2f64 6976 3e0a  nd</span></div>.\n+0000f5d0: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n+0000f5e0: 223e 3c61 2069 643d 226c 3030 3337 3422  \"><a id=\"l00374\"\n+0000f5f0: 206e 616d 653d 226c 3030 3337 3422 3e3c   name=\"l00374\"><\n+0000f600: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n+0000f610: 6c69 6e65 6e6f 223e 2020 3337 343c 2f73  lineno\">  374</s\n+0000f620: 7061 6e3e 3c73 7061 6e20 636c 6173 733d  pan><span class=\n+0000f630: 2263 6f6d 6d65 6e74 223e 2f2f 2020 7072  \"comment\">//  pr\n+0000f640: 6f76 6964 6573 2074 6865 6d2c 206f 7220  ovides them, or \n+0000f650: 7468 6579 2064 6f6e 2623 3339 3b74 2061  they don&#39;t a\n+0000f660: 6e64 2074 6865 2052 756c 6573 2068 6176  nd the Rules hav\n+0000f670: 6520 746f 2062 6520 6465 7465 726d 696e  e to be determin\n+0000f680: 6564 2066 726f 6d20 7368 6172 706e 6573  ed from sharpnes\n+0000f690: 733c 2f73 7061 6e3e 3c2f 6469 763e 0a3c  s</span></div>.<\n+0000f6a0: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n+0000f6b0: 3e3c 6120 6964 3d22 6c30 3033 3735 2220  ><a id=\"l00375\" \n+0000f6c0: 6e61 6d65 3d22 6c30 3033 3735 223e 3c2f  name=\"l00375\"></\n+0000f6d0: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n+0000f6e0: 696e 656e 6f22 3e20 2033 3735 3c2f 7370  ineno\">  375</sp\n+0000f6f0: 616e 3e3c 7370 616e 2063 6c61 7373 3d22  an><span class=\"\n+0000f700: 636f 6d6d 656e 7422 3e2f 2f20 2076 616c  comment\">//  val\n+0000f710: 7565 732e 2020 426f 7468 2063 6173 6573  ues.  Both cases\n+0000f720: 2069 6e63 6c75 6465 2071 7569 636b 2072   include quick r\n+0000f730: 6574 7572 6e20 6f6e 6365 2074 6865 2070  eturn once the p\n+0000f740: 6172 656e 7420 6973 2064 6574 6572 6d69  arent is determi\n+0000f750: 6e65 6420 746f 2062 653c 2f73 7061 6e3e  ned to be</span>\n+0000f760: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n+0000f770: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n+0000f780: 6c30 3033 3736 2220 6e61 6d65 3d22 6c30  l00376\" name=\"l0\n+0000f790: 3033 3736 223e 3c2f 613e 3c73 7061 6e20  0376\"></a><span \n+0000f7a0: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n+0000f7b0: 2033 3736 3c2f 7370 616e 3e3c 7370 616e   376</span><span\n+0000f7c0: 2063 6c61 7373 3d22 636f 6d6d 656e 7422   class=\"comment\"\n+0000f7d0: 3e2f 2f20 2073 6d6f 6f74 6820 6f72 2074  >//  smooth or t\n+0000f7e0: 6865 2063 6869 6c64 2061 2063 7265 6173  he child a creas\n+0000f7f0: 652c 206c 6561 7669 6e67 2074 6865 2074  e, leaving the t\n+0000f800: 7261 6e73 6974 696f 6e61 6c20 6361 7365  ransitional case\n+0000f810: 2072 656d 6169 6e69 6e67 2e3c 2f73 7061   remaining.</spa\n+0000f820: 6e3e 3c2f 6469 763e 0a3c 6469 7620 636c  n></div>.<div cl\n+0000f830: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n+0000f840: 3d22 6c30 3033 3737 2220 6e61 6d65 3d22  =\"l00377\" name=\"\n+0000f850: 6c30 3033 3737 223e 3c2f 613e 3c73 7061  l00377\"></a><spa\n+0000f860: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n+0000f870: 3e20 2033 3737 3c2f 7370 616e 3e3c 7370  >  377</span><sp\n+0000f880: 616e 2063 6c61 7373 3d22 636f 6d6d 656e  an class=\"commen\n+0000f890: 7422 3e2f 2f3c 2f73 7061 6e3e 3c2f 6469  t\">//</span></di\n+0000f8a0: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n+0000f8b0: 696e 6522 3e3c 6120 6964 3d22 6c30 3033  ine\"><a id=\"l003\n+0000f8c0: 3738 2220 6e61 6d65 3d22 6c30 3033 3738  78\" name=\"l00378\n+0000f8d0: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n+0000f8e0: 733d 226c 696e 656e 6f22 3e20 2033 3738  s=\"lineno\">  378\n+0000f8f0: 3c2f 7370 616e 3e3c 7370 616e 2063 6c61  </span><span cla\n+0000f900: 7373 3d22 636f 6d6d 656e 7422 3e2f 2f20  ss=\"comment\">// \n+0000f910: 2054 6865 206f 7665 7261 6c6c 2070 726f   The overall pro\n+0000f920: 6365 7373 2069 7320 6173 2066 6f6c 6c6f  cess is as follo\n+0000f930: 7773 3a3c 2f73 7061 6e3e 3c2f 6469 763e  ws:</span></div>\n+0000f940: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n+0000f950: 6522 3e3c 6120 6964 3d22 6c30 3033 3739  e\"><a id=\"l00379\n+0000f960: 2220 6e61 6d65 3d22 6c30 3033 3739 223e  \" name=\"l00379\">\n+0000f970: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n+0000f980: 226c 696e 656e 6f22 3e20 2033 3739 3c2f  \"lineno\">  379</\n+0000f990: 7370 616e 3e3c 7370 616e 2063 6c61 7373  span><span class\n+0000f9a0: 3d22 636f 6d6d 656e 7422 3e2f 2f3c 2f73  =\"comment\">//</s\n+0000f9b0: 7061 6e3e 3c2f 6469 763e 0a3c 6469 7620  pan></div>.<div \n+0000f9c0: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n+0000f9d0: 6964 3d22 6c30 3033 3830 2220 6e61 6d65  id=\"l00380\" name\n+0000f9e0: 3d22 6c30 3033 3830 223e 3c2f 613e 3c73  =\"l00380\"></a><s\n+0000f9f0: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n+0000fa00: 6f22 3e20 2033 3830 3c2f 7370 616e 3e3c  o\">  380</span><\n+0000fa10: 7370 616e 2063 6c61 7373 3d22 636f 6d6d  span class=\"comm\n+0000fa20: 656e 7422 3e2f 2f20 2020 2020 202d 2071  ent\">//      - q\n+0000fa30: 7569 636b 6c79 2064 6574 6563 7420 7468  uickly detect th\n+0000fa40: 6520 6d6f 7374 2063 6f6d 6d6f 6e20 7370  e most common sp\n+0000fa50: 6563 6966 6965 6420 6f72 2064 6574 6563  ecified or detec\n+0000fa60: 7465 6420 536d 6f6f 7468 2063 6173 6520  ted Smooth case \n+0000fa70: 616e 6420 7265 7475 726e 3c2f 7370 616e  and return</span\n+0000fa80: 3e3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ></div>.<div cla\n+0000fa90: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n+0000faa0: 226c 3030 3338 3122 206e 616d 653d 226c  \"l00381\" name=\"l\n+0000fab0: 3030 3338 3122 3e3c 2f61 3e3c 7370 616e  00381\"></a><span\n+0000fac0: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n+0000fad0: 2020 3338 313c 2f73 7061 6e3e 3c73 7061    381</span><spa\n+0000fae0: 6e20 636c 6173 733d 2263 6f6d 6d65 6e74  n class=\"comment\n+0000faf0: 223e 2f2f 2020 2020 2020 2d20 7175 6963  \">//      - quic\n+0000fb00: 6b6c 7920 6465 7465 6374 2061 2066 756c  kly detect a ful\n+0000fb10: 6c20 4372 6561 7365 2062 7920 6368 696c  l Crease by chil\n+0000fb20: 6420 5275 6c65 2061 7373 6967 6e6d 656e  d Rule assignmen\n+0000fb30: 7420 616e 6420 7265 7475 726e 3c2f 7370  t and return</sp\n+0000fb40: 616e 3e3c 2f64 6976 3e0a 3c64 6976 2063  an></div>.<div c\n+0000fb50: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n+0000fb60: 643d 226c 3030 3338 3222 206e 616d 653d  d=\"l00382\" name=\n+0000fb70: 226c 3030 3338 3222 3e3c 2f61 3e3c 7370  \"l00382\"></a><sp\n+0000fb80: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n+0000fb90: 223e 2020 3338 323c 2f73 7061 6e3e 3c73  \">  382</span><s\n+0000fba0: 7061 6e20 636c 6173 733d 2263 6f6d 6d65  pan class=\"comme\n+0000fbb0: 6e74 223e 2f2f 2020 2020 2020 2d20 6465  nt\">//      - de\n+0000fbc0: 7465 726d 696e 6520 6672 6f6d 2073 6861  termine from sha\n+0000fbd0: 7270 6e65 7373 2069 6620 756e 7370 6563  rpness if unspec\n+0000fbe0: 6966 6965 6420 6368 696c 6420 6973 2061  ified child is a\n+0000fbf0: 2063 7265 6173 6520 2d2d 2072 6574 7572   crease -- retur\n+0000fc00: 6e20 6966 2073 6f3c 2f73 7061 6e3e 3c2f  n if so</span></\n+0000fc10: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n+0000fc20: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n+0000fc30: 3033 3833 2220 6e61 6d65 3d22 6c30 3033  0383\" name=\"l003\n+0000fc40: 3833 223e 3c2f 613e 3c73 7061 6e20 636c  83\"></a><span cl\n+0000fc50: 6173 733d 226c 696e 656e 6f22 3e20 2033  ass=\"lineno\">  3\n+0000fc60: 3833 3c2f 7370 616e 3e3c 7370 616e 2063  83</span><span c\n+0000fc70: 6c61 7373 3d22 636f 6d6d 656e 7422 3e2f  lass=\"comment\">/\n+0000fc80: 2f20 2020 2020 202d 2063 6f6d 7075 7465  /      - compute\n+0000fc90: 2073 6d6f 6f74 6820 6d61 736b 2066 6f72   smooth mask for\n+0000fca0: 2063 6869 6c64 2061 6e64 2063 6f6d 6269   child and combi\n+0000fcb0: 6e65 2077 6974 6820 6372 6561 7365 2066  ne with crease f\n+0000fcc0: 726f 6d20 7061 7265 6e74 3c2f 7370 616e  rom parent</span\n+0000fcd0: 3e3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ></div>.<div cla\n+0000fce0: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n+0000fcf0: 226c 3030 3338 3422 206e 616d 653d 226c  \"l00384\" name=\"l\n+0000fd00: 3030 3338 3422 3e3c 2f61 3e3c 7370 616e  00384\"></a><span\n+0000fd10: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n+0000fd20: 2020 3338 343c 2f73 7061 6e3e 3c73 7061    384</span><spa\n+0000fd30: 6e20 636c 6173 733d 2263 6f6d 6d65 6e74  n class=\"comment\n+0000fd40: 223e 2f2f 3c2f 7370 616e 3e3c 2f64 6976  \">//</span></div\n+0000fd50: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n+0000fd60: 6e65 223e 3c61 2069 643d 226c 3030 3338  ne\"><a id=\"l0038\n+0000fd70: 3522 206e 616d 653d 226c 3030 3338 3522  5\" name=\"l00385\"\n+0000fd80: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n+0000fd90: 3d22 6c69 6e65 6e6f 223e 2020 3338 353c  =\"lineno\">  385<\n+0000fda0: 2f73 7061 6e3e 3c73 7061 6e20 636c 6173  /span><span clas\n+0000fdb0: 733d 2263 6f6d 6d65 6e74 223e 2f2f 2020  s=\"comment\">//  \n+0000fdc0: 5573 6167 6520 6f66 2074 6865 2070 6172  Usage of the par\n+0000fdd0: 656e 7420 5275 6c65 2068 6572 6520 616c  ent Rule here al\n+0000fde0: 6c6f 7773 2073 6f6d 6520 6d69 7375 7365  lows some misuse\n+0000fdf0: 2069 6e20 7468 6174 206f 6e6c 7920 7468   in that only th\n+0000fe00: 7265 6520 6f66 2066 6976 6520 706f 7373  ree of five poss\n+0000fe10: 6962 6c65 3c2f 7370 616e 3e3c 2f64 6976  ible</span></div\n+0000fe20: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n+0000fe30: 6e65 223e 3c61 2069 643d 226c 3030 3338  ne\"><a id=\"l0038\n+0000fe40: 3622 206e 616d 653d 226c 3030 3338 3622  6\" name=\"l00386\"\n+0000fe50: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n+0000fe60: 3d22 6c69 6e65 6e6f 223e 2020 3338 363c  =\"lineno\">  386<\n+0000fe70: 2f73 7061 6e3e 3c73 7061 6e20 636c 6173  /span><span clas\n+0000fe80: 733d 2263 6f6d 6d65 6e74 223e 2f2f 2020  s=\"comment\">//  \n+0000fe90: 6173 7369 676e 6d65 6e74 7320 6172 6520  assignments are \n+0000fea0: 6c65 6769 7469 6d61 7465 2066 6f72 2074  legitimate for t\n+0000feb0: 6865 2070 6172 656e 7420 616e 6420 666f  he parent and fo\n+0000fec0: 7572 2066 6f72 2074 6865 2063 6869 6c64  ur for the child\n+0000fed0: 2028 4461 7274 2062 6569 6e67 206f 6e6c   (Dart being onl\n+0000fee0: 793c 2f73 7061 6e3e 3c2f 6469 763e 0a3c  y</span></div>.<\n+0000fef0: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n+0000ff00: 3e3c 6120 6964 3d22 6c30 3033 3837 2220  ><a id=\"l00387\" \n+0000ff10: 6e61 6d65 3d22 6c30 3033 3837 223e 3c2f  name=\"l00387\"></\n+0000ff20: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n+0000ff30: 696e 656e 6f22 3e20 2033 3837 3c2f 7370  ineno\">  387</sp\n+0000ff40: 616e 3e3c 7370 616e 2063 6c61 7373 3d22  an><span class=\"\n+0000ff50: 636f 6d6d 656e 7422 3e2f 2f20 2076 616c  comment\">//  val\n+0000ff60: 6964 2066 6f72 2074 6865 2063 6869 6c64  id for the child\n+0000ff70: 2061 6e64 2043 6f72 6e65 7220 666f 7220   and Corner for \n+0000ff80: 6e65 6974 6865 7229 2e20 2052 6573 756c  neither).  Resul\n+0000ff90: 7473 2061 7265 2075 6e64 6566 696e 6564  ts are undefined\n+0000ffa0: 2069 6e20 7468 6573 6520 6361 7365 732e   in these cases.\n+0000ffb0: 3c2f 7370 616e 3e3c 2f64 6976 3e0a 3c64  </span></div>.<d\n+0000ffc0: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n+0000ffd0: 3c61 2069 643d 226c 3030 3338 3822 206e  <a id=\"l00388\" n\n+0000ffe0: 616d 653d 226c 3030 3338 3822 3e3c 2f61  ame=\"l00388\"></a\n+0000fff0: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n+00010000: 6e65 6e6f 223e 2020 3338 383c 2f73 7061  neno\">  388</spa\n+00010010: 6e3e 3c73 7061 6e20 636c 6173 733d 2263  n><span class=\"c\n+00010020: 6f6d 6d65 6e74 223e 2f2f 3c2f 7370 616e  omment\">//</span\n+00010030: 3e3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ></div>.<div cla\n+00010040: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n+00010050: 226c 3030 3338 3922 206e 616d 653d 226c  \"l00389\" name=\"l\n+00010060: 3030 3338 3922 3e3c 2f61 3e3c 7370 616e  00389\"></a><span\n+00010070: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n+00010080: 2020 3338 393c 2f73 7061 6e3e 3c73 7061    389</span><spa\n+00010090: 6e20 636c 6173 733d 226b 6579 776f 7264  n class=\"keyword\n+000100a0: 223e 7465 6d70 6c61 7465 3c2f 7370 616e  \">template</span\n+000100b0: 3e20 266c 743b 5363 6865 6d65 5479 7065  > &lt;SchemeType\n+000100c0: 2053 4348 454d 4526 6774 3b3c 2f64 6976   SCHEME&gt;</div\n+000100d0: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n+000100e0: 6e65 223e 3c61 2069 643d 226c 3030 3339  ne\"><a id=\"l0039\n+000100f0: 3022 206e 616d 653d 226c 3030 3339 3022  0\" name=\"l00390\"\n+00010100: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n+00010110: 3d22 6c69 6e65 6e6f 223e 2020 3339 303c  =\"lineno\">  390<\n+00010120: 2f73 7061 6e3e 3c73 7061 6e20 636c 6173  /span><span clas\n+00010130: 733d 226b 6579 776f 7264 223e 7465 6d70  s=\"keyword\">temp\n+00010140: 6c61 7465 3c2f 7370 616e 3e20 266c 743b  late</span> &lt;\n+00010150: 3c73 7061 6e20 636c 6173 733d 226b 6579  <span class=\"key\n+00010160: 776f 7264 223e 7479 7065 6e61 6d65 3c2f  word\">typename</\n+00010170: 7370 616e 3e20 4544 4745 2c20 3c73 7061  span> EDGE, <spa\n+00010180: 6e20 636c 6173 733d 226b 6579 776f 7264  n class=\"keyword\n+00010190: 223e 7479 7065 6e61 6d65 3c2f 7370 616e  \">typename</span\n+000101a0: 3e20 4d41 534b 2667 743b 3c2f 6469 763e  > MASK&gt;</div>\n+000101b0: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n+000101c0: 6522 3e3c 6120 6964 3d22 6c30 3033 3931  e\"><a id=\"l00391\n+000101d0: 2220 6e61 6d65 3d22 6c30 3033 3931 223e  \" name=\"l00391\">\n+000101e0: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n+000101f0: 226c 696e 656e 6f22 3e20 2033 3931 3c2f  \"lineno\">  391</\n+00010200: 7370 616e 3e3c 7370 616e 2063 6c61 7373  span><span class\n+00010210: 3d22 6b65 7977 6f72 6474 7970 6522 3e76  =\"keywordtype\">v\n+00010220: 6f69 643c 2f73 7061 6e3e 3c2f 6469 763e  oid</span></div>\n+00010230: 0a3c 6469 7620 636c 6173 733d 2266 6f6c  .<div class=\"fol\n+00010240: 646f 7065 6e22 2069 643d 2266 6f6c 646f  dopen\" id=\"foldo\n+00010250: 7065 6e30 3033 3932 2220 6461 7461 2d73  pen00392\" data-s\n+00010260: 7461 7274 3d22 7b22 2064 6174 612d 656e  tart=\"{\" data-en\n+00010270: 643d 227d 223e 0a3c 6469 7620 636c 6173  d=\"}\">.<div clas\n+00010280: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n+00010290: 6c30 3033 3932 2220 6e61 6d65 3d22 6c30  l00392\" name=\"l0\n+000102a0: 3033 3932 223e 3c2f 613e 3c73 7061 6e20  0392\"></a><span \n+000102b0: 636c 6173 733d 226c 696e 656e 6f22 3e3c  class=\"lineno\"><\n+000102c0: 6120 636c 6173 733d 226c 696e 6522 2068  a class=\"line\" h\n+000102d0: 7265 663d 2261 3031 3334 312e 6874 6d6c  ref=\"a01341.html\n+000102e0: 2361 3562 3561 3533 3737 6130 3165 6234  #a5b5a5377a01eb4\n+000102f0: 6261 3434 3665 3137 3465 6666 3965 3435  ba446e174eff9e45\n+00010300: 6163 223e 2020 3339 323c 2f61 3e3c 2f73  ac\">  392</a></s\n+00010310: 7061 6e3e 3c61 2063 6c61 7373 3d22 636f  pan><a class=\"co\n+00010320: 6465 2068 6c5f 6675 6e63 7469 6f6e 2220  de hl_function\" \n+00010330: 6872 6566 3d22 6130 3133 3431 2e68 746d  href=\"a01341.htm\n+00010340: 6c23 6135 6235 6135 3337 3761 3031 6562  l#a5b5a5377a01eb\n+00010350: 3462 6134 3436 6531 3734 6566 6639 6534  4ba446e174eff9e4\n+00010360: 3561 6322 3e53 6368 656d 6526 6c74 3b53  5ac\">Scheme&lt;S\n+00010370: 4348 454d 4526 6774 3b3a 3a43 6f6d 7075  CHEME&gt;::Compu\n+00010380: 7465 4564 6765 5665 7274 6578 4d61 736b  teEdgeVertexMask\n+00010390: 3c2f 613e 2845 4447 4520 3c73 7061 6e20  </a>(EDGE <span \n+000103a0: 636c 6173 733d 226b 6579 776f 7264 223e  class=\"keyword\">\n+000103b0: 636f 6e73 743c 2f73 7061 6e3e 2661 6d70  const</span>&amp\n+000103c0: 3b20 2020 2020 6564 6765 2c3c 2f64 6976  ;     edge,</div\n+000103d0: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n+000103e0: 6e65 223e 3c61 2069 643d 226c 3030 3339  ne\"><a id=\"l0039\n+000103f0: 3322 206e 616d 653d 226c 3030 3339 3322  3\" name=\"l00393\"\n+00010400: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n+00010410: 3d22 6c69 6e65 6e6f 223e 2020 3339 333c  =\"lineno\">  393<\n+00010420: 2f73 7061 6e3e 2020 2020 2020 2020 2020  /span>          \n+00010430: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00010440: 2020 2020 2020 2020 2020 2020 2020 204d                 M\n+00010450: 4153 4b26 616d 703b 2020 2020 2020 2020  ASK&amp;        \n+00010460: 2020 206d 6173 6b2c 3c2f 6469 763e 0a3c     mask,</div>.<\n+00010470: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n+00010480: 3e3c 6120 6964 3d22 6c30 3033 3934 2220  ><a id=\"l00394\" \n+00010490: 6e61 6d65 3d22 6c30 3033 3934 223e 3c2f  name=\"l00394\"></\n+000104a0: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n+000104b0: 696e 656e 6f22 3e20 2033 3934 3c2f 7370  ineno\">  394</sp\n+000104c0: 616e 3e20 2020 2020 2020 2020 2020 2020  an>             \n+000104d0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000104e0: 2020 2020 2020 2020 2020 2020 3c61 2063              <a c\n+000104f0: 6c61 7373 3d22 636f 6465 2068 6c5f 656e  lass=\"code hl_en\n+00010500: 756d 6572 6174 696f 6e22 2068 7265 663d  umeration\" href=\n+00010510: 2261 3031 3333 332e 6874 6d6c 2361 3131  \"a01333.html#a11\n+00010520: 6663 6435 3165 6638 3631 3138 6636 3565  fcd51ef86118f65e\n+00010530: 3630 3363 3134 3734 3337 3761 3738 223e  603c1474377a78\">\n+00010540: 4372 6561 7365 3a3a 5275 6c65 3c2f 613e  Crease::Rule</a>\n+00010550: 2070 6172 656e 7452 756c 652c 3c2f 6469   parentRule,</di\n+00010560: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n+00010570: 696e 6522 3e3c 6120 6964 3d22 6c30 3033  ine\"><a id=\"l003\n+00010580: 3935 2220 6e61 6d65 3d22 6c30 3033 3935  95\" name=\"l00395\n+00010590: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n+000105a0: 733d 226c 696e 656e 6f22 3e20 2033 3935  s=\"lineno\">  395\n+000105b0: 3c2f 7370 616e 3e20 2020 2020 2020 2020  </span>         \n+000105c0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000105d0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000105e0: 3c61 2063 6c61 7373 3d22 636f 6465 2068  <a class=\"code h\n+000105f0: 6c5f 656e 756d 6572 6174 696f 6e22 2068  l_enumeration\" h\n+00010600: 7265 663d 2261 3031 3333 332e 6874 6d6c  ref=\"a01333.html\n+00010610: 2361 3131 6663 6435 3165 6638 3631 3138  #a11fcd51ef86118\n+00010620: 6636 3565 3630 3363 3134 3734 3337 3761  f65e603c1474377a\n+00010630: 3738 223e 4372 6561 7365 3a3a 5275 6c65  78\">Crease::Rule\n+00010640: 3c2f 613e 2063 6869 6c64 5275 6c65 293c  </a> childRule)<\n+00010650: 7370 616e 2063 6c61 7373 3d22 6b65 7977  span class=\"keyw\n+00010660: 6f72 6422 3e20 636f 6e73 7420 3c2f 7370  ord\"> const </sp\n+00010670: 616e 3e7b 3c2f 6469 763e 0a3c 6469 7620  an>{</div>.<div \n+00010680: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n+00010690: 6964 3d22 6c30 3033 3936 2220 6e61 6d65  id=\"l00396\" name\n+000106a0: 3d22 6c30 3033 3936 223e 3c2f 613e 3c73  =\"l00396\"></a><s\n+000106b0: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n+000106c0: 6f22 3e20 2033 3936 3c2f 7370 616e 3e20  o\">  396</span> \n+000106d0: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n+000106e0: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n+000106f0: 6c30 3033 3937 2220 6e61 6d65 3d22 6c30  l00397\" name=\"l0\n+00010700: 3033 3937 223e 3c2f 613e 3c73 7061 6e20  0397\"></a><span \n+00010710: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n+00010720: 2033 3937 3c2f 7370 616e 3e20 2020 203c   397</span>    <\n+00010730: 7370 616e 2063 6c61 7373 3d22 636f 6d6d  span class=\"comm\n+00010740: 656e 7422 3e2f 2f3c 2f73 7061 6e3e 3c2f  ent\">//</span></\n+00010750: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n+00010760: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n+00010770: 3033 3938 2220 6e61 6d65 3d22 6c30 3033  0398\" name=\"l003\n+00010780: 3938 223e 3c2f 613e 3c73 7061 6e20 636c  98\"></a><span cl\n+00010790: 6173 733d 226c 696e 656e 6f22 3e20 2033  ass=\"lineno\">  3\n+000107a0: 3938 3c2f 7370 616e 3e20 2020 203c 7370  98</span>    <sp\n+000107b0: 616e 2063 6c61 7373 3d22 636f 6d6d 656e  an class=\"commen\n+000107c0: 7422 3e2f 2f20 2049 6620 7468 6520 7061  t\">//  If the pa\n+000107d0: 7265 6e74 2077 6173 2073 7065 6369 6669  rent was specifi\n+000107e0: 6564 206f 7220 6465 7465 726d 696e 6564  ed or determined\n+000107f0: 2074 6f20 6265 2053 6d6f 6f74 682c 2077   to be Smooth, w\n+00010800: 6520 6361 6e20 7175 6963 6b6c 7920 7265  e can quickly re\n+00010810: 7475 726e 3c2f 7370 616e 3e3c 2f64 6976  turn</span></div\n+00010820: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n+00010830: 6e65 223e 3c61 2069 643d 226c 3030 3339  ne\"><a id=\"l0039\n+00010840: 3922 206e 616d 653d 226c 3030 3339 3922  9\" name=\"l00399\"\n+00010850: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n+00010860: 3d22 6c69 6e65 6e6f 223e 2020 3339 393c  =\"lineno\">  399<\n+00010870: 2f73 7061 6e3e 2020 2020 3c73 7061 6e20  /span>    <span \n+00010880: 636c 6173 733d 2263 6f6d 6d65 6e74 223e  class=\"comment\">\n+00010890: 2f2f 2020 7769 7468 2061 2053 6d6f 6f74  //  with a Smoot\n+000108a0: 6820 6d61 736b 2e20 204f 7468 6572 7769  h mask.  Otherwi\n+000108b0: 7365 2074 6865 2070 6172 656e 7420 6973  se the parent is\n+000108c0: 2061 2063 7265 6173 6520 2d2d 2069 6620   a crease -- if \n+000108d0: 7468 6520 6368 696c 6420 7761 733c 2f73  the child was</s\n+000108e0: 7061 6e3e 3c2f 6469 763e 0a3c 6469 7620  pan></div>.<div \n+000108f0: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n+00010900: 6964 3d22 6c30 3034 3030 2220 6e61 6d65  id=\"l00400\" name\n+00010910: 3d22 6c30 3034 3030 223e 3c2f 613e 3c73  =\"l00400\"></a><s\n+00010920: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n+00010930: 6f22 3e20 2034 3030 3c2f 7370 616e 3e20  o\">  400</span> \n+00010940: 2020 203c 7370 616e 2063 6c61 7373 3d22     <span class=\"\n+00010950: 636f 6d6d 656e 7422 3e2f 2f20 2061 6c73  comment\">//  als\n+00010960: 6f20 7370 6563 6966 6965 6420 746f 2062  o specified to b\n+00010970: 6520 6120 6372 6561 7365 2c20 7765 2063  e a crease, we c\n+00010980: 616e 2071 7569 636b 6c79 2072 6574 7572  an quickly retur\n+00010990: 6e20 7769 7468 2061 2043 7265 6173 6520  n with a Crease \n+000109a0: 6d61 736b 2e3c 2f73 7061 6e3e 3c2f 6469  mask.</span></di\n+000109b0: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n+000109c0: 696e 6522 3e3c 6120 6964 3d22 6c30 3034  ine\"><a id=\"l004\n+000109d0: 3031 2220 6e61 6d65 3d22 6c30 3034 3031  01\" name=\"l00401\n+000109e0: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n+000109f0: 733d 226c 696e 656e 6f22 3e20 2034 3031  s=\"lineno\">  401\n+00010a00: 3c2f 7370 616e 3e20 2020 203c 7370 616e  </span>    <span\n+00010a10: 2063 6c61 7373 3d22 636f 6d6d 656e 7422   class=\"comment\"\n+00010a20: 3e2f 2f3c 2f73 7061 6e3e 3c2f 6469 763e  >//</span></div>\n+00010a30: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n+00010a40: 6522 3e3c 6120 6964 3d22 6c30 3034 3032  e\"><a id=\"l00402\n+00010a50: 2220 6e61 6d65 3d22 6c30 3034 3032 223e  \" name=\"l00402\">\n+00010a60: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n+00010a70: 226c 696e 656e 6f22 3e20 2034 3032 3c2f  \"lineno\">  402</\n+00010a80: 7370 616e 3e20 2020 203c 7370 616e 2063  span>    <span c\n+00010a90: 6c61 7373 3d22 6b65 7977 6f72 6466 6c6f  lass=\"keywordflo\n+00010aa0: 7722 3e69 663c 2f73 7061 6e3e 2028 2870  w\">if</span> ((p\n+00010ab0: 6172 656e 7452 756c 6520 3d3d 203c 6120  arentRule == <a \n+00010ac0: 636c 6173 733d 2263 6f64 6520 686c 5f65  class=\"code hl_e\n+00010ad0: 6e75 6d76 616c 7565 2220 6872 6566 3d22  numvalue\" href=\"\n+00010ae0: 6130 3133 3333 2e68 746d 6c23 6131 3166  a01333.html#a11f\n+00010af0: 6364 3531 6566 3836 3131 3866 3635 6536  cd51ef86118f65e6\n+00010b00: 3033 6331 3437 3433 3737 6137 3861 3631  03c1474377a78a61\n+00010b10: 6431 3337 6638 3636 3939 3765 6433 3639  d137f866997ed369\n+00010b20: 3365 3366 6361 6437 3664 6566 3566 223e  3e3fcad76def5f\">\n+00010b30: 4372 6561 7365 3a3a 5255 4c45 5f53 4d4f  Crease::RULE_SMO\n+00010b40: 4f54 483c 2f61 3e29 207c 7c3c 2f64 6976  OTH</a>) ||</div\n+00010b50: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n+00010b60: 6e65 223e 3c61 2069 643d 226c 3030 3430  ne\"><a id=\"l0040\n+00010b70: 3322 206e 616d 653d 226c 3030 3430 3322  3\" name=\"l00403\"\n+00010b80: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n+00010b90: 3d22 6c69 6e65 6e6f 223e 2020 3430 333c  =\"lineno\">  403<\n+00010ba0: 2f73 7061 6e3e 2020 2020 2020 2028 2870  /span>       ((p\n+00010bb0: 6172 656e 7452 756c 6520 3d3d 203c 6120  arentRule == <a \n+00010bc0: 636c 6173 733d 2263 6f64 6520 686c 5f65  class=\"code hl_e\n+00010bd0: 6e75 6d76 616c 7565 2220 6872 6566 3d22  numvalue\" href=\"\n+00010be0: 6130 3133 3333 2e68 746d 6c23 6131 3166  a01333.html#a11f\n+00010bf0: 6364 3531 6566 3836 3131 3866 3635 6536  cd51ef86118f65e6\n+00010c00: 3033 6331 3437 3433 3737 6137 3861 6232  03c1474377a78ab2\n+00010c10: 3939 6165 6662 3236 3031 3361 3739 6435  99aefb26013a79d5\n+00010c20: 3231 3931 6137 3838 3766 6561 3533 223e  2191a7887fea53\">\n+00010c30: 4372 6561 7365 3a3a 5255 4c45 5f55 4e4b  Crease::RULE_UNK\n+00010c40: 4e4f 574e 3c2f 613e 2920 2661 6d70 3b26  NOWN</a>) &amp;&\n+00010c50: 616d 703b 2028 6564 6765 2e47 6574 5368  amp; (edge.GetSh\n+00010c60: 6172 706e 6573 7328 2920 266c 743b 3d20  arpness() &lt;= \n+00010c70: 302e 3066 2929 2920 7b3c 2f64 6976 3e0a  0.0f))) {</div>.\n+00010c80: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n+00010c90: 223e 3c61 2069 643d 226c 3030 3430 3422  \"><a id=\"l00404\"\n+00010ca0: 206e 616d 653d 226c 3030 3430 3422 3e3c   name=\"l00404\"><\n+00010cb0: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n+00010cc0: 6c69 6e65 6e6f 223e 2020 3430 343c 2f73  lineno\">  404</s\n+00010cd0: 7061 6e3e 2020 2020 2020 2020 6173 7369  pan>        assi\n+00010ce0: 676e 536d 6f6f 7468 4d61 736b 466f 7245  gnSmoothMaskForE\n+00010cf0: 6467 6528 6564 6765 2c20 6d61 736b 293b  dge(edge, mask);\n+00010d00: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n+00010d10: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n+00010d20: 6c30 3034 3035 2220 6e61 6d65 3d22 6c30  l00405\" name=\"l0\n+00010d30: 3034 3035 223e 3c2f 613e 3c73 7061 6e20  0405\"></a><span \n+00010d40: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n+00010d50: 2034 3035 3c2f 7370 616e 3e20 2020 2020   405</span>     \n+00010d60: 2020 203c 7370 616e 2063 6c61 7373 3d22     <span class=\"\n+00010d70: 6b65 7977 6f72 6466 6c6f 7722 3e72 6574  keywordflow\">ret\n+00010d80: 7572 6e3c 2f73 7061 6e3e 3b3c 2f64 6976  urn</span>;</div\n+00010d90: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n+00010da0: 6e65 223e 3c61 2069 643d 226c 3030 3430  ne\"><a id=\"l0040\n+00010db0: 3622 206e 616d 653d 226c 3030 3430 3622  6\" name=\"l00406\"\n+00010dc0: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n+00010dd0: 3d22 6c69 6e65 6e6f 223e 2020 3430 363c  =\"lineno\">  406<\n+00010de0: 2f73 7061 6e3e 2020 2020 7d3c 2f64 6976  /span>    }</div\n+00010df0: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n+00010e00: 6e65 223e 3c61 2069 643d 226c 3030 3430  ne\"><a id=\"l0040\n+00010e10: 3722 206e 616d 653d 226c 3030 3430 3722  7\" name=\"l00407\"\n+00010e20: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n+00010e30: 3d22 6c69 6e65 6e6f 223e 2020 3430 373c  =\"lineno\">  407<\n+00010e40: 2f73 7061 6e3e 2020 2020 3c73 7061 6e20  /span>    <span \n+00010e50: 636c 6173 733d 226b 6579 776f 7264 666c  class=\"keywordfl\n+00010e60: 6f77 223e 6966 3c2f 7370 616e 3e20 2863  ow\">if</span> (c\n+00010e70: 6869 6c64 5275 6c65 203d 3d20 3c61 2063  hildRule == <a c\n+00010e80: 6c61 7373 3d22 636f 6465 2068 6c5f 656e  lass=\"code hl_en\n+00010e90: 756d 7661 6c75 6522 2068 7265 663d 2261  umvalue\" href=\"a\n+00010ea0: 3031 3333 332e 6874 6d6c 2361 3131 6663  01333.html#a11fc\n+00010eb0: 6435 3165 6638 3631 3138 6636 3565 3630  d51ef86118f65e60\n+00010ec0: 3363 3134 3734 3337 3761 3738 6139 3636  3c1474377a78a966\n+00010ed0: 6661 3161 6538 6165 6238 3538 3763 3439  fa1ae8aeb8587c49\n+00010ee0: 3863 6636 6139 3263 6333 3333 3522 3e43  8cf6a92cc3335\">C\n+00010ef0: 7265 6173 653a 3a52 554c 455f 4352 4541  rease::RULE_CREA\n+00010f00: 5345 3c2f 613e 2920 7b3c 2f64 6976 3e0a  SE</a>) {</div>.\n+00010f10: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n+00010f20: 223e 3c61 2069 643d 226c 3030 3430 3822  \"><a id=\"l00408\"\n+00010f30: 206e 616d 653d 226c 3030 3430 3822 3e3c   name=\"l00408\"><\n+00010f40: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n+00010f50: 6c69 6e65 6e6f 223e 2020 3430 383c 2f73  lineno\">  408</s\n+00010f60: 7061 6e3e 2020 2020 2020 2020 6173 7369  pan>        assi\n+00010f70: 676e 4372 6561 7365 4d61 736b 466f 7245  gnCreaseMaskForE\n+00010f80: 6467 6528 6564 6765 2c20 6d61 736b 293b  dge(edge, mask);\n+00010f90: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n+00010fa0: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n+00010fb0: 6c30 3034 3039 2220 6e61 6d65 3d22 6c30  l00409\" name=\"l0\n+00010fc0: 3034 3039 223e 3c2f 613e 3c73 7061 6e20  0409\"></a><span \n+00010fd0: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n+00010fe0: 2034 3039 3c2f 7370 616e 3e20 2020 2020   409</span>     \n+00010ff0: 2020 203c 7370 616e 2063 6c61 7373 3d22     <span class=\"\n+00011000: 6b65 7977 6f72 6466 6c6f 7722 3e72 6574  keywordflow\">ret\n+00011010: 7572 6e3c 2f73 7061 6e3e 3b3c 2f64 6976  urn</span>;</div\n+00011020: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n+00011030: 6e65 223e 3c61 2069 643d 226c 3030 3431  ne\"><a id=\"l0041\n+00011040: 3022 206e 616d 653d 226c 3030 3431 3022  0\" name=\"l00410\"\n+00011050: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n+00011060: 3d22 6c69 6e65 6e6f 223e 2020 3431 303c  =\"lineno\">  410<\n+00011070: 2f73 7061 6e3e 2020 2020 7d3c 2f64 6976  /span>    }</div\n+00011080: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n+00011090: 6e65 223e 3c61 2069 643d 226c 3030 3431  ne\"><a id=\"l0041\n+000110a0: 3122 206e 616d 653d 226c 3030 3431 3122  1\" name=\"l00411\"\n+000110b0: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n+000110c0: 3d22 6c69 6e65 6e6f 223e 2020 3431 313c  =\"lineno\">  411<\n+000110d0: 2f73 7061 6e3e 203c 2f64 6976 3e0a 3c64  /span> </div>.<d\n+000110e0: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n+000110f0: 3c61 2069 643d 226c 3030 3431 3222 206e  <a id=\"l00412\" n\n+00011100: 616d 653d 226c 3030 3431 3222 3e3c 2f61  ame=\"l00412\"></a\n+00011110: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n+00011120: 6e65 6e6f 223e 2020 3431 323c 2f73 7061  neno\">  412</spa\n+00011130: 6e3e 2020 2020 3c73 7061 6e20 636c 6173  n>    <span clas\n+00011140: 733d 2263 6f6d 6d65 6e74 223e 2f2f 3c2f  s=\"comment\">//</\n+00011150: 7370 616e 3e3c 2f64 6976 3e0a 3c64 6976  span></div>.<div\n+00011160: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n+00011170: 2069 643d 226c 3030 3431 3322 206e 616d   id=\"l00413\" nam\n+00011180: 653d 226c 3030 3431 3322 3e3c 2f61 3e3c  e=\"l00413\"></a><\n+00011190: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n+000111a0: 6e6f 223e 2020 3431 333c 2f73 7061 6e3e  no\">  413</span>\n+000111b0: 2020 2020 3c73 7061 6e20 636c 6173 733d      <span class=\n+000111c0: 2263 6f6d 6d65 6e74 223e 2f2f 2020 5765  \"comment\">//  We\n+000111d0: 2068 6176 6520 6120 4372 6561 7365 206f   have a Crease o\n+000111e0: 6e20 7468 6520 7061 7265 6e74 2061 6e64  n the parent and\n+000111f0: 2074 6865 2063 6869 6c64 2077 6173 2065   the child was e\n+00011200: 6974 6865 7220 7370 6563 6966 6965 6420  ither specified \n+00011210: 6173 2053 6d6f 6f74 683c 2f73 7061 6e3e  as Smooth</span>\n+00011220: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n+00011230: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n+00011240: 6c30 3034 3134 2220 6e61 6d65 3d22 6c30  l00414\" name=\"l0\n+00011250: 3034 3134 223e 3c2f 613e 3c73 7061 6e20  0414\"></a><span \n+00011260: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n+00011270: 2034 3134 3c2f 7370 616e 3e20 2020 203c   414</span>    <\n+00011280: 7370 616e 2063 6c61 7373 3d22 636f 6d6d  span class=\"comm\n+00011290: 656e 7422 3e2f 2f20 206f 7220 7761 7320  ent\">//  or was \n+000112a0: 6e6f 7420 7370 6563 6966 6965 6420 6174  not specified at\n+000112b0: 2061 6c6c 202d 2d20 6465 616c 2077 6974   all -- deal wit\n+000112c0: 6820 7468 6520 756e 7370 6563 6966 6965  h the unspecifie\n+000112d0: 6420 6361 7365 2066 6972 7374 2028 6167  d case first (ag\n+000112e0: 6169 6e3c 2f73 7061 6e3e 3c2f 6469 763e  ain</span></div>\n+000112f0: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n+00011300: 6522 3e3c 6120 6964 3d22 6c30 3034 3135  e\"><a id=\"l00415\n+00011310: 2220 6e61 6d65 3d22 6c30 3034 3135 223e  \" name=\"l00415\">\n+00011320: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n+00011330: 226c 696e 656e 6f22 3e20 2034 3135 3c2f  \"lineno\">  415</\n+00011340: 7370 616e 3e20 2020 203c 7370 616e 2063  span>    <span c\n+00011350: 6c61 7373 3d22 636f 6d6d 656e 7422 3e2f  lass=\"comment\">/\n+00011360: 2f20 2072 6574 7572 6e69 6e67 2061 2043  /  returning a C\n+00011370: 7265 6173 6520 6d61 736b 2069 6620 7468  rease mask if th\n+00011380: 6520 6368 696c 6420 6973 2061 6c73 6f20  e child is also \n+00011390: 6465 7465 726d 696e 6564 2074 6f20 6265  determined to be\n+000113a0: 2061 2043 7265 6173 6529 2061 6e64 3c2f   a Crease) and</\n+000113b0: 7370 616e 3e3c 2f64 6976 3e0a 3c64 6976  span></div>.<div\n+000113c0: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n+000113d0: 2069 643d 226c 3030 3431 3622 206e 616d   id=\"l00416\" nam\n+000113e0: 653d 226c 3030 3431 3622 3e3c 2f61 3e3c  e=\"l00416\"></a><\n+000113f0: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n+00011400: 6e6f 223e 2020 3431 363c 2f73 7061 6e3e  no\">  416</span>\n+00011410: 2020 2020 3c73 7061 6e20 636c 6173 733d      <span class=\n+00011420: 2263 6f6d 6d65 6e74 223e 2f2f 2020 636f  \"comment\">//  co\n+00011430: 6e74 696e 7565 2069 6620 7765 2068 6176  ntinue if we hav\n+00011440: 6520 6120 7472 616e 7369 7469 6f6e 2074  e a transition t\n+00011450: 6f20 536d 6f6f 7468 2e3c 2f73 7061 6e3e  o Smooth.</span>\n+00011460: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n+00011470: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n+00011480: 6c30 3034 3137 2220 6e61 6d65 3d22 6c30  l00417\" name=\"l0\n+00011490: 3034 3137 223e 3c2f 613e 3c73 7061 6e20  0417\"></a><span \n+000114a0: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n+000114b0: 2034 3137 3c2f 7370 616e 3e20 2020 203c   417</span>    <\n+000114c0: 7370 616e 2063 6c61 7373 3d22 636f 6d6d  span class=\"comm\n+000114d0: 656e 7422 3e2f 2f3c 2f73 7061 6e3e 3c2f  ent\">//</span></\n+000114e0: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n+000114f0: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n+00011500: 3034 3138 2220 6e61 6d65 3d22 6c30 3034  0418\" name=\"l004\n+00011510: 3138 223e 3c2f 613e 3c73 7061 6e20 636c  18\"></a><span cl\n+00011520: 6173 733d 226c 696e 656e 6f22 3e20 2034  ass=\"lineno\">  4\n+00011530: 3138 3c2f 7370 616e 3e20 2020 203c 7370  18</span>    <sp\n+00011540: 616e 2063 6c61 7373 3d22 636f 6d6d 656e  an class=\"commen\n+00011550: 7422 3e2f 2f20 204e 6f74 6520 7768 656e  t\">//  Note when\n+00011560: 2071 7561 6c69 6679 696e 6720 7468 6520   qualifying the \n+00011570: 6368 696c 6420 7468 6174 2069 6620 7468  child that if th\n+00011580: 6520 7061 7265 6e74 2073 6861 7270 6e65  e parent sharpne\n+00011590: 7373 2026 6774 3b20 312e 302c 2072 6567  ss &gt; 1.0, reg\n+000115a0: 6172 646c 6573 733c 2f73 7061 6e3e 3c2f  ardless</span></\n+000115b0: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n+000115c0: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n+000115d0: 3034 3139 2220 6e61 6d65 3d22 6c30 3034  0419\" name=\"l004\n+000115e0: 3139 223e 3c2f 613e 3c73 7061 6e20 636c  19\"></a><span cl\n+000115f0: 6173 733d 226c 696e 656e 6f22 3e20 2034  ass=\"lineno\">  4\n+00011600: 3139 3c2f 7370 616e 3e20 2020 203c 7370  19</span>    <sp\n+00011610: 616e 2063 6c61 7373 3d22 636f 6d6d 656e  an class=\"commen\n+00011620: 7422 3e2f 2f20 206f 6620 7468 6520 6372  t\">//  of the cr\n+00011630: 6561 7369 6e67 206d 6574 686f 642c 2077  easing method, w\n+00011640: 6865 7468 6572 2074 6865 2063 6869 6c64  hether the child\n+00011650: 2073 6861 7270 6e65 7373 2076 616c 7565   sharpness value\n+00011660: 7320 6465 6361 7920 746f 207a 6572 6f20  s decay to zero \n+00011670: 6973 3c2f 7370 616e 3e3c 2f64 6976 3e0a  is</span></div>.\n+00011680: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n+00011690: 223e 3c61 2069 643d 226c 3030 3432 3022  \"><a id=\"l00420\"\n+000116a0: 206e 616d 653d 226c 3030 3432 3022 3e3c   name=\"l00420\"><\n+000116b0: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n+000116c0: 6c69 6e65 6e6f 223e 2020 3432 303c 2f73  lineno\">  420</s\n+000116d0: 7061 6e3e 2020 2020 3c73 7061 6e20 636c  pan>    <span cl\n+000116e0: 6173 733d 2263 6f6d 6d65 6e74 223e 2f2f  ass=\"comment\">//\n+000116f0: 2020 6972 7265 6c65 7661 6e74 202d 2d20    irrelevant -- \n+00011700: 7468 6520 6672 6163 7469 6f6e 616c 2077  the fractional w\n+00011710: 6569 6768 7420 666f 7220 7375 6368 2061  eight for such a\n+00011720: 2063 6173 6520 2874 6865 2076 616c 7565   case (the value\n+00011730: 206f 6620 7468 6520 7061 7265 6e74 3c2f   of the parent</\n+00011740: 7370 616e 3e3c 2f64 6976 3e0a 3c64 6976  span></div>.<div\n+00011750: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n+00011760: 2069 643d 226c 3030 3432 3122 206e 616d   id=\"l00421\" nam\n+00011770: 653d 226c 3030 3432 3122 3e3c 2f61 3e3c  e=\"l00421\"></a><\n+00011780: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n+00011790: 6e6f 223e 2020 3432 313c 2f73 7061 6e3e  no\">  421</span>\n+000117a0: 2020 2020 3c73 7061 6e20 636c 6173 733d      <span class=\n+000117b0: 2263 6f6d 6d65 6e74 223e 2f2f 2020 7368  \"comment\">//  sh\n+000117c0: 6172 706e 6573 7329 2069 7320 2667 743b  arpness) is &gt;\n+000117d0: 2031 2e30 2c20 616e 6420 7768 656e 2063   1.0, and when c\n+000117e0: 6c61 6d70 6564 2074 6f20 3120 6566 6665  lamped to 1 effe\n+000117f0: 6374 6976 656c 7920 7969 656c 6473 2061  ctively yields a\n+00011800: 2066 756c 6c20 6372 6561 7365 2e3c 2f73   full crease.</s\n+00011810: 7061 6e3e 3c2f 6469 763e 0a3c 6469 7620  pan></div>.<div \n+00011820: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n+00011830: 6964 3d22 6c30 3034 3232 2220 6e61 6d65  id=\"l00422\" name\n+00011840: 3d22 6c30 3034 3232 223e 3c2f 613e 3c73  =\"l00422\"></a><s\n+00011850: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n+00011860: 6f22 3e20 2034 3232 3c2f 7370 616e 3e20  o\">  422</span> \n+00011870: 2020 203c 7370 616e 2063 6c61 7373 3d22     <span class=\"\n+00011880: 636f 6d6d 656e 7422 3e2f 2f3c 2f73 7061  comment\">//</spa\n+00011890: 6e3e 3c2f 6469 763e 0a3c 6469 7620 636c  n></div>.<div cl\n+000118a0: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n+000118b0: 3d22 6c30 3034 3233 2220 6e61 6d65 3d22  =\"l00423\" name=\"\n+000118c0: 6c30 3034 3233 223e 3c2f 613e 3c73 7061  l00423\"></a><spa\n+000118d0: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n+000118e0: 3e20 2034 3233 3c2f 7370 616e 3e20 2020  >  423</span>   \n+000118f0: 203c 7370 616e 2063 6c61 7373 3d22 6b65   <span class=\"ke\n+00011900: 7977 6f72 6466 6c6f 7722 3e69 663c 2f73  ywordflow\">if</s\n+00011910: 7061 6e3e 2028 6368 696c 6452 756c 6520  pan> (childRule \n+00011920: 3d3d 203c 6120 636c 6173 733d 2263 6f64  == <a class=\"cod\n+00011930: 6520 686c 5f65 6e75 6d76 616c 7565 2220  e hl_enumvalue\" \n+00011940: 6872 6566 3d22 6130 3133 3333 2e68 746d  href=\"a01333.htm\n+00011950: 6c23 6131 3166 6364 3531 6566 3836 3131  l#a11fcd51ef8611\n+00011960: 3866 3635 6536 3033 6331 3437 3433 3737  8f65e603c1474377\n+00011970: 6137 3861 6232 3939 6165 6662 3236 3031  a78ab299aefb2601\n+00011980: 3361 3739 6435 3231 3931 6137 3838 3766  3a79d52191a7887f\n+00011990: 6561 3533 223e 4372 6561 7365 3a3a 5255  ea53\">Crease::RU\n+000119a0: 4c45 5f55 4e4b 4e4f 574e 3c2f 613e 2920  LE_UNKNOWN</a>) \n+000119b0: 7b3c 2f64 6976 3e0a 3c64 6976 2063 6c61  {</div>.<div cla\n+000119c0: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n+000119d0: 226c 3030 3432 3422 206e 616d 653d 226c  \"l00424\" name=\"l\n+000119e0: 3030 3432 3422 3e3c 2f61 3e3c 7370 616e  00424\"></a><span\n+000119f0: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n+00011a00: 2020 3432 343c 2f73 7061 6e3e 2020 2020    424</span>    \n+00011a10: 2020 2020 3c61 2063 6c61 7373 3d22 636f      <a class=\"co\n+00011a20: 6465 2068 6c5f 636c 6173 7322 2068 7265  de hl_class\" hre\n+00011a30: 663d 2261 3031 3333 332e 6874 6d6c 223e  f=\"a01333.html\">\n+00011a40: 4372 6561 7365 3c2f 613e 2063 7265 6173  Crease</a> creas\n+00011a50: 6528 5f6f 7074 696f 6e73 293b 3c2f 6469  e(_options);</di\n+00011a60: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n+00011a70: 696e 6522 3e3c 6120 6964 3d22 6c30 3034  ine\"><a id=\"l004\n+00011a80: 3235 2220 6e61 6d65 3d22 6c30 3034 3235  25\" name=\"l00425\n+00011a90: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n+00011aa0: 733d 226c 696e 656e 6f22 3e20 2034 3235  s=\"lineno\">  425\n+00011ab0: 3c2f 7370 616e 3e20 3c2f 6469 763e 0a3c  </span> </div>.<\n+00011ac0: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n+00011ad0: 3e3c 6120 6964 3d22 6c30 3034 3236 2220  ><a id=\"l00426\" \n+00011ae0: 6e61 6d65 3d22 6c30 3034 3236 223e 3c2f  name=\"l00426\"></\n+00011af0: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n+00011b00: 696e 656e 6f22 3e20 2034 3236 3c2f 7370  ineno\">  426</sp\n+00011b10: 616e 3e20 2020 2020 2020 203c 7370 616e  an>        <span\n+00011b20: 2063 6c61 7373 3d22 6b65 7977 6f72 6474   class=\"keywordt\n+00011b30: 7970 6522 3e62 6f6f 6c3c 2f73 7061 6e3e  ype\">bool</span>\n+00011b40: 2063 6869 6c64 4973 4372 6561 7365 203d   childIsCrease =\n+00011b50: 203c 7370 616e 2063 6c61 7373 3d22 6b65   <span class=\"ke\n+00011b60: 7977 6f72 6422 3e66 616c 7365 3c2f 7370  yword\">false</sp\n+00011b70: 616e 3e3b 3c2f 6469 763e 0a3c 6469 7620  an>;</div>.<div \n+00011b80: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n+00011b90: 6964 3d22 6c30 3034 3237 2220 6e61 6d65  id=\"l00427\" name\n+00011ba0: 3d22 6c30 3034 3237 223e 3c2f 613e 3c73  =\"l00427\"></a><s\n+00011bb0: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n+00011bc0: 6f22 3e20 2034 3237 3c2f 7370 616e 3e20  o\">  427</span> \n+00011bd0: 2020 2020 2020 203c 7370 616e 2063 6c61         <span cla\n+00011be0: 7373 3d22 6b65 7977 6f72 6466 6c6f 7722  ss=\"keywordflow\"\n+00011bf0: 3e69 663c 2f73 7061 6e3e 2028 7061 7265  >if</span> (pare\n+00011c00: 6e74 5275 6c65 203d 3d20 3c61 2063 6c61  ntRule == <a cla\n+00011c10: 7373 3d22 636f 6465 2068 6c5f 656e 756d  ss=\"code hl_enum\n+00011c20: 7661 6c75 6522 2068 7265 663d 2261 3031  value\" href=\"a01\n+00011c30: 3333 332e 6874 6d6c 2361 3131 6663 6435  333.html#a11fcd5\n+00011c40: 3165 6638 3631 3138 6636 3565 3630 3363  1ef86118f65e603c\n+00011c50: 3134 3734 3337 3761 3738 6139 3636 6661  1474377a78a966fa\n+00011c60: 3161 6538 6165 6238 3538 3763 3439 3863  1ae8aeb8587c498c\n+00011c70: 6636 6139 3263 6333 3333 3522 3e43 7265  f6a92cc3335\">Cre\n+00011c80: 6173 653a 3a52 554c 455f 4352 4541 5345  ase::RULE_CREASE\n+00011c90: 3c2f 613e 2920 7b3c 2f64 6976 3e0a 3c64  </a>) {</div>.<d\n+00011ca0: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n+00011cb0: 3c61 2069 643d 226c 3030 3432 3822 206e  <a id=\"l00428\" n\n+00011cc0: 616d 653d 226c 3030 3432 3822 3e3c 2f61  ame=\"l00428\"></a\n+00011cd0: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n+00011ce0: 6e65 6e6f 223e 2020 3432 383c 2f73 7061  neno\">  428</spa\n+00011cf0: 6e3e 2020 2020 2020 2020 2020 2020 3c73  n>            <s\n+00011d00: 7061 6e20 636c 6173 733d 2263 6f6d 6d65  pan class=\"comme\n+00011d10: 6e74 223e 2f2f 2020 4368 696c 6420 756e  nt\">//  Child un\n+00011d20: 6b6e 6f77 6e20 6173 2064 6566 6175 6c74  known as default\n+00011d30: 2076 616c 7565 2062 7574 2070 6172 656e   value but paren\n+00011d40: 7420 5275 6c65 2073 7065 6369 6669 6564  t Rule specified\n+00011d50: 2061 7320 4372 6561 7365 3c2f 7370 616e   as Crease</span\n+00011d60: 3e3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ></div>.<div cla\n+00011d70: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n+00011d80: 226c 3030 3432 3922 206e 616d 653d 226c  \"l00429\" name=\"l\n+00011d90: 3030 3432 3922 3e3c 2f61 3e3c 7370 616e  00429\"></a><span\n+00011da0: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n+00011db0: 2020 3432 393c 2f73 7061 6e3e 2020 2020    429</span>    \n+00011dc0: 2020 2020 2020 2020 6368 696c 6449 7343          childIsC\n+00011dd0: 7265 6173 6520 3d20 3c73 7061 6e20 636c  rease = <span cl\n+00011de0: 6173 733d 226b 6579 776f 7264 223e 7472  ass=\"keyword\">tr\n+00011df0: 7565 3c2f 7370 616e 3e3b 3c2f 6469 763e  ue</span>;</div>\n+00011e00: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n+00011e10: 6522 3e3c 6120 6964 3d22 6c30 3034 3330  e\"><a id=\"l00430\n+00011e20: 2220 6e61 6d65 3d22 6c30 3034 3330 223e  \" name=\"l00430\">\n+00011e30: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n+00011e40: 226c 696e 656e 6f22 3e20 2034 3330 3c2f  \"lineno\">  430</\n+00011e50: 7370 616e 3e20 2020 2020 2020 207d 203c  span>        } <\n+00011e60: 7370 616e 2063 6c61 7373 3d22 6b65 7977  span class=\"keyw\n+00011e70: 6f72 6466 6c6f 7722 3e65 6c73 653c 2f73  ordflow\">else</s\n+00011e80: 7061 6e3e 203c 7370 616e 2063 6c61 7373  pan> <span class\n+00011e90: 3d22 6b65 7977 6f72 6466 6c6f 7722 3e69  =\"keywordflow\">i\n+00011ea0: 663c 2f73 7061 6e3e 2028 6564 6765 2e47  f</span> (edge.G\n+00011eb0: 6574 5368 6172 706e 6573 7328 2920 2667  etSharpness() &g\n+00011ec0: 743b 3d20 312e 3066 2920 7b3c 2f64 6976  t;= 1.0f) {</div\n+00011ed0: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n+00011ee0: 6e65 223e 3c61 2069 643d 226c 3030 3433  ne\"><a id=\"l0043\n+00011ef0: 3122 206e 616d 653d 226c 3030 3433 3122  1\" name=\"l00431\"\n+00011f00: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n+00011f10: 3d22 6c69 6e65 6e6f 223e 2020 3433 313c  =\"lineno\">  431<\n+00011f20: 2f73 7061 6e3e 2020 2020 2020 2020 2020  /span>          \n+00011f30: 2020 3c73 7061 6e20 636c 6173 733d 2263    <span class=\"c\n+00011f40: 6f6d 6d65 6e74 223e 2f2f 2020 5368 6172  omment\">//  Shar\n+00011f50: 706e 6573 7320 2667 743b 3d20 312e 3020  pness &gt;= 1.0 \n+00011f60: 616c 7761 7973 2061 2063 7265 6173 6520  always a crease \n+00011f70: 2d2d 2073 6565 206e 6f74 6520 6162 6f76  -- see note abov\n+00011f80: 653c 2f73 7061 6e3e 3c2f 6469 763e 0a3c  e</span></div>.<\n+00011f90: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n+00011fa0: 3e3c 6120 6964 3d22 6c30 3034 3332 2220  ><a id=\"l00432\" \n+00011fb0: 6e61 6d65 3d22 6c30 3034 3332 223e 3c2f  name=\"l00432\"></\n+00011fc0: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n+00011fd0: 696e 656e 6f22 3e20 2034 3332 3c2f 7370  ineno\">  432</sp\n+00011fe0: 616e 3e20 2020 2020 2020 2020 2020 2063  an>            c\n+00011ff0: 6869 6c64 4973 4372 6561 7365 203d 203c  hildIsCrease = <\n+00012000: 7370 616e 2063 6c61 7373 3d22 6b65 7977  span class=\"keyw\n+00012010: 6f72 6422 3e74 7275 653c 2f73 7061 6e3e  ord\">true</span>\n+00012020: 3b3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ;</div>.<div cla\n+00012030: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n+00012040: 226c 3030 3433 3322 206e 616d 653d 226c  \"l00433\" name=\"l\n+00012050: 3030 3433 3322 3e3c 2f61 3e3c 7370 616e  00433\"></a><span\n+00012060: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n+00012070: 2020 3433 333c 2f73 7061 6e3e 2020 2020    433</span>    \n+00012080: 2020 2020 7d20 3c73 7061 6e20 636c 6173      } <span clas\n+00012090: 733d 226b 6579 776f 7264 666c 6f77 223e  s=\"keywordflow\">\n+000120a0: 656c 7365 3c2f 7370 616e 3e20 3c73 7061  else</span> <spa\n+000120b0: 6e20 636c 6173 733d 226b 6579 776f 7264  n class=\"keyword\n+000120c0: 666c 6f77 223e 6966 3c2f 7370 616e 3e20  flow\">if</span> \n+000120d0: 2863 7265 6173 652e 3c61 2063 6c61 7373  (crease.<a class\n+000120e0: 3d22 636f 6465 2068 6c5f 6675 6e63 7469  =\"code hl_functi\n+000120f0: 6f6e 2220 6872 6566 3d22 6130 3133 3333  on\" href=\"a01333\n+00012100: 2e68 746d 6c23 6135 6466 6136 3831 3066  .html#a5dfa6810f\n+00012110: 3531 3066 6163 3165 6336 3231 6663 3965  510fac1ec621fc9e\n+00012120: 3662 3533 3063 3422 3e49 7355 6e69 666f  6b530c4\">IsUnifo\n+00012130: 726d 3c2f 613e 2829 2920 7b3c 2f64 6976  rm</a>()) {</div\n+00012140: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n+00012150: 6e65 223e 3c61 2069 643d 226c 3030 3433  ne\"><a id=\"l0043\n+00012160: 3422 206e 616d 653d 226c 3030 3433 3422  4\" name=\"l00434\"\n+00012170: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n+00012180: 3d22 6c69 6e65 6e6f 223e 2020 3433 343c  =\"lineno\">  434<\n+00012190: 2f73 7061 6e3e 2020 2020 2020 2020 2020  /span>          \n+000121a0: 2020 3c73 7061 6e20 636c 6173 733d 2263    <span class=\"c\n+000121b0: 6f6d 6d65 6e74 223e 2f2f 2020 5368 6172  omment\">//  Shar\n+000121c0: 706e 6573 7320 266c 743b 2031 2e30 2069  pness &lt; 1.0 i\n+000121d0: 7320 6775 6172 616e 7465 6564 2074 6f20  s guaranteed to \n+000121e0: 6465 6361 7920 746f 2030 2e30 2066 6f72  decay to 0.0 for\n+000121f0: 2055 6e69 666f 726d 2063 6869 6c64 2065   Uniform child e\n+00012200: 6467 6573 3c2f 7370 616e 3e3c 2f64 6976  dges</span></div\n+00012210: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n+00012220: 6e65 223e 3c61 2069 643d 226c 3030 3433  ne\"><a id=\"l0043\n+00012230: 3522 206e 616d 653d 226c 3030 3433 3522  5\" name=\"l00435\"\n+00012240: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n+00012250: 3d22 6c69 6e65 6e6f 223e 2020 3433 353c  =\"lineno\">  435<\n+00012260: 2f73 7061 6e3e 2020 2020 2020 2020 2020  /span>          \n+00012270: 2020 6368 696c 6449 7343 7265 6173 6520    childIsCrease \n+00012280: 3d20 3c73 7061 6e20 636c 6173 733d 226b  = <span class=\"k\n+00012290: 6579 776f 7264 223e 6661 6c73 653c 2f73  eyword\">false</s\n+000122a0: 7061 6e3e 3b3c 2f64 6976 3e0a 3c64 6976  pan>;</div>.<div\n+000122b0: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n+000122c0: 2069 643d 226c 3030 3433 3622 206e 616d   id=\"l00436\" nam\n+000122d0: 653d 226c 3030 3433 3622 3e3c 2f61 3e3c  e=\"l00436\"></a><\n+000122e0: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n+000122f0: 6e6f 223e 2020 3433 363c 2f73 7061 6e3e  no\">  436</span>\n+00012300: 2020 2020 2020 2020 7d20 3c73 7061 6e20          } <span \n+00012310: 636c 6173 733d 226b 6579 776f 7264 666c  class=\"keywordfl\n+00012320: 6f77 223e 656c 7365 3c2f 7370 616e 3e20  ow\">else</span> \n+00012330: 7b3c 2f64 6976 3e0a 3c64 6976 2063 6c61  {</div>.<div cla\n+00012340: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n+00012350: 226c 3030 3433 3722 206e 616d 653d 226c  \"l00437\" name=\"l\n+00012360: 3030 3433 3722 3e3c 2f61 3e3c 7370 616e  00437\"></a><span\n+00012370: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n+00012380: 2020 3433 373c 2f73 7061 6e3e 2020 2020    437</span>    \n+00012390: 2020 2020 2020 2020 3c73 7061 6e20 636c          <span cl\n+000123a0: 6173 733d 2263 6f6d 6d65 6e74 223e 2f2f  ass=\"comment\">//\n+000123b0: 2020 5368 6172 706e 6573 7320 266c 743b    Sharpness &lt;\n+000123c0: 3d20 312e 3020 646f 6573 206e 6f74 206e  = 1.0 does not n\n+000123d0: 6563 6573 7361 7269 6c79 2064 6563 6179  ecessarily decay\n+000123e0: 2074 6f20 302e 3020 666f 7220 626f 7468   to 0.0 for both\n+000123f0: 2063 6869 6c64 2065 6467 6573 2e2e 2e3c   child edges...<\n+00012400: 2f73 7061 6e3e 3c2f 6469 763e 0a3c 6469  /span></div>.<di\n+00012410: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n+00012420: 6120 6964 3d22 6c30 3034 3338 2220 6e61  a id=\"l00438\" na\n+00012430: 6d65 3d22 6c30 3034 3338 223e 3c2f 613e  me=\"l00438\"></a>\n+00012440: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n+00012450: 656e 6f22 3e20 2034 3338 3c2f 7370 616e  eno\">  438</span\n+00012460: 3e20 2020 2020 2020 2020 2020 203c 7370  >            <sp\n+00012470: 616e 2063 6c61 7373 3d22 6b65 7977 6f72  an class=\"keywor\n+00012480: 6474 7970 6522 3e66 6c6f 6174 3c2f 7370  dtype\">float</sp\n+00012490: 616e 3e20 6345 6467 6553 6861 7270 6e65  an> cEdgeSharpne\n+000124a0: 7373 5b32 5d3b 3c2f 6469 763e 0a3c 6469  ss[2];</div>.<di\n+000124b0: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n+000124c0: 6120 6964 3d22 6c30 3034 3339 2220 6e61  a id=\"l00439\" na\n+000124d0: 6d65 3d22 6c30 3034 3339 223e 3c2f 613e  me=\"l00439\"></a>\n+000124e0: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n+000124f0: 656e 6f22 3e20 2034 3339 3c2f 7370 616e  eno\">  439</span\n+00012500: 3e20 2020 2020 2020 2020 2020 2065 6467  >            edg\n+00012510: 652e 4765 7443 6869 6c64 5368 6172 706e  e.GetChildSharpn\n+00012520: 6573 7365 7328 6372 6561 7365 2c20 6345  esses(crease, cE\n+00012530: 6467 6553 6861 7270 6e65 7373 293b 3c2f  dgeSharpness);</\n+00012540: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n+00012550: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n+00012560: 3034 3430 2220 6e61 6d65 3d22 6c30 3034  0440\" name=\"l004\n+00012570: 3430 223e 3c2f 613e 3c73 7061 6e20 636c  40\"></a><span cl\n+00012580: 6173 733d 226c 696e 656e 6f22 3e20 2034  ass=\"lineno\">  4\n+00012590: 3430 3c2f 7370 616e 3e20 2020 2020 2020  40</span>       \n+000125a0: 2020 2020 2063 6869 6c64 4973 4372 6561       childIsCrea\n+000125b0: 7365 203d 2028 6345 6467 6553 6861 7270  se = (cEdgeSharp\n+000125c0: 6e65 7373 5b30 5d20 2667 743b 2030 2e30  ness[0] &gt; 0.0\n+000125d0: 6629 2026 616d 703b 2661 6d70 3b20 2863  f) &amp;&amp; (c\n+000125e0: 4564 6765 5368 6172 706e 6573 735b 315d  EdgeSharpness[1]\n+000125f0: 2026 6774 3b20 302e 3066 293b 3c2f 6469   &gt; 0.0f);</di\n+00012600: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n+00012610: 696e 6522 3e3c 6120 6964 3d22 6c30 3034  ine\"><a id=\"l004\n+00012620: 3431 2220 6e61 6d65 3d22 6c30 3034 3431  41\" name=\"l00441\n+00012630: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n+00012640: 733d 226c 696e 656e 6f22 3e20 2034 3431  s=\"lineno\">  441\n+00012650: 3c2f 7370 616e 3e20 2020 2020 2020 207d  </span>        }\n+00012660: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n+00012670: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n+00012680: 6c30 3034 3432 2220 6e61 6d65 3d22 6c30  l00442\" name=\"l0\n+00012690: 3034 3432 223e 3c2f 613e 3c73 7061 6e20  0442\"></a><span \n+000126a0: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n+000126b0: 2034 3432 3c2f 7370 616e 3e20 2020 2020   442</span>     \n+000126c0: 2020 203c 7370 616e 2063 6c61 7373 3d22     <span class=\"\n+000126d0: 6b65 7977 6f72 6466 6c6f 7722 3e69 663c  keywordflow\">if<\n+000126e0: 2f73 7061 6e3e 2028 6368 696c 6449 7343  /span> (childIsC\n+000126f0: 7265 6173 6529 207b 3c2f 6469 763e 0a3c  rease) {</div>.<\n+00012700: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n+00012710: 3e3c 6120 6964 3d22 6c30 3034 3433 2220  ><a id=\"l00443\" \n+00012720: 6e61 6d65 3d22 6c30 3034 3433 223e 3c2f  name=\"l00443\"></\n+00012730: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n+00012740: 696e 656e 6f22 3e20 2034 3433 3c2f 7370  ineno\">  443</sp\n+00012750: 616e 3e20 2020 2020 2020 2020 2020 2061  an>            a\n+00012760: 7373 6967 6e43 7265 6173 654d 6173 6b46  ssignCreaseMaskF\n+00012770: 6f72 4564 6765 2865 6467 652c 206d 6173  orEdge(edge, mas\n+00012780: 6b29 3b3c 2f64 6976 3e0a 3c64 6976 2063  k);</div>.<div c\n+00012790: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n+000127a0: 643d 226c 3030 3434 3422 206e 616d 653d  d=\"l00444\" name=\n+000127b0: 226c 3030 3434 3422 3e3c 2f61 3e3c 7370  \"l00444\"></a><sp\n+000127c0: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n+000127d0: 223e 2020 3434 343c 2f73 7061 6e3e 2020  \">  444</span>  \n+000127e0: 2020 2020 2020 2020 2020 3c73 7061 6e20            <span \n+000127f0: 636c 6173 733d 226b 6579 776f 7264 666c  class=\"keywordfl\n+00012800: 6f77 223e 7265 7475 726e 3c2f 7370 616e  ow\">return</span\n+00012810: 3e3b 3c2f 6469 763e 0a3c 6469 7620 636c  >;</div>.<div cl\n+00012820: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n+00012830: 3d22 6c30 3034 3435 2220 6e61 6d65 3d22  =\"l00445\" name=\"\n+00012840: 6c30 3034 3435 223e 3c2f 613e 3c73 7061  l00445\"></a><spa\n+00012850: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n+00012860: 3e20 2034 3435 3c2f 7370 616e 3e20 2020  >  445</span>   \n+00012870: 2020 2020 207d 3c2f 6469 763e 0a3c 6469       }</div>.<di\n+00012880: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n+00012890: 6120 6964 3d22 6c30 3034 3436 2220 6e61  a id=\"l00446\" na\n+000128a0: 6d65 3d22 6c30 3034 3436 223e 3c2f 613e  me=\"l00446\"></a>\n+000128b0: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n+000128c0: 656e 6f22 3e20 2034 3436 3c2f 7370 616e  eno\">  446</span\n+000128d0: 3e20 2020 207d 3c2f 6469 763e 0a3c 6469  >    }</div>.<di\n+000128e0: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n+000128f0: 6120 6964 3d22 6c30 3034 3437 2220 6e61  a id=\"l00447\" na\n+00012900: 6d65 3d22 6c30 3034 3437 223e 3c2f 613e  me=\"l00447\"></a>\n+00012910: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n+00012920: 656e 6f22 3e20 2034 3437 3c2f 7370 616e  eno\">  447</span\n+00012930: 3e20 3c2f 6469 763e 0a3c 6469 7620 636c  > </div>.<div cl\n+00012940: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n+00012950: 3d22 6c30 3034 3438 2220 6e61 6d65 3d22  =\"l00448\" name=\"\n+00012960: 6c30 3034 3438 223e 3c2f 613e 3c73 7061  l00448\"></a><spa\n+00012970: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n+00012980: 3e20 2034 3438 3c2f 7370 616e 3e20 2020  >  448</span>   \n+00012990: 203c 7370 616e 2063 6c61 7373 3d22 636f   <span class=\"co\n+000129a0: 6d6d 656e 7422 3e2f 2f3c 2f73 7061 6e3e  mment\">//</span>\n+000129b0: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n+000129c0: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n+000129d0: 6c30 3034 3439 2220 6e61 6d65 3d22 6c30  l00449\" name=\"l0\n+000129e0: 3034 3439 223e 3c2f 613e 3c73 7061 6e20  0449\"></a><span \n+000129f0: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n+00012a00: 2034 3439 3c2f 7370 616e 3e20 2020 203c   449</span>    <\n+00012a10: 7370 616e 2063 6c61 7373 3d22 636f 6d6d  span class=\"comm\n+00012a20: 656e 7422 3e2f 2f20 2057 6520 6172 6520  ent\">//  We are \n+00012a30: 6e6f 7720 6c65 6674 2077 6974 6820 7468  now left with th\n+00012a40: 6520 4372 6561 7365 2d74 6f2d 536d 6f6f  e Crease-to-Smoo\n+00012a50: 7468 2063 6173 6520 2d2d 2063 6f6d 7075  th case -- compu\n+00012a60: 7465 2074 6865 2053 6d6f 6f74 6820 6d61  te the Smooth ma\n+00012a70: 736b 3c2f 7370 616e 3e3c 2f64 6976 3e0a  sk</span></div>.\n+00012a80: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n+00012a90: 223e 3c61 2069 643d 226c 3030 3435 3022  \"><a id=\"l00450\"\n+00012aa0: 206e 616d 653d 226c 3030 3435 3022 3e3c   name=\"l00450\"><\n+00012ab0: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n+00012ac0: 6c69 6e65 6e6f 223e 2020 3435 303c 2f73  lineno\">  450</s\n+00012ad0: 7061 6e3e 2020 2020 3c73 7061 6e20 636c  pan>    <span cl\n+00012ae0: 6173 733d 2263 6f6d 6d65 6e74 223e 2f2f  ass=\"comment\">//\n+00012af0: 2020 666f 7220 7468 6520 6368 696c 6420    for the child \n+00012b00: 616e 6420 6175 676d 656e 7420 6974 2077  and augment it w\n+00012b10: 6974 6820 7468 6520 7472 616e 7369 7469  ith the transiti\n+00012b20: 6f6e 616c 2043 7265 6173 6520 6f66 2074  onal Crease of t\n+00012b30: 6865 2070 6172 656e 742e 3c2f 7370 616e  he parent.</span\n+00012b40: 3e3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ></div>.<div cla\n+00012b50: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n+00012b60: 226c 3030 3435 3122 206e 616d 653d 226c  \"l00451\" name=\"l\n+00012b70: 3030 3435 3122 3e3c 2f61 3e3c 7370 616e  00451\"></a><span\n+00012b80: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n+00012b90: 2020 3435 313c 2f73 7061 6e3e 2020 2020    451</span>    \n+00012ba0: 3c73 7061 6e20 636c 6173 733d 2263 6f6d  <span class=\"com\n+00012bb0: 6d65 6e74 223e 2f2f 3c2f 7370 616e 3e3c  ment\">//</span><\n+00012bc0: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n+00012bd0: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n+00012be0: 3030 3435 3222 206e 616d 653d 226c 3030  00452\" name=\"l00\n+00012bf0: 3435 3222 3e3c 2f61 3e3c 7370 616e 2063  452\"></a><span c\n+00012c00: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n+00012c10: 3435 323c 2f73 7061 6e3e 2020 2020 3c73  452</span>    <s\n+00012c20: 7061 6e20 636c 6173 733d 2263 6f6d 6d65  pan class=\"comme\n+00012c30: 6e74 223e 2f2f 2020 4120 6765 6e65 7261  nt\">//  A genera\n+00012c40: 6c20 636f 6d62 696e 6174 696f 6e20 6f66  l combination of\n+00012c50: 2073 6570 6172 6174 656c 7920 6173 7369   separately assi\n+00012c60: 676e 6564 206d 6173 6b73 2068 6572 6520  gned masks here \n+00012c70: 2861 7320 646f 6e65 2069 6e20 7468 6520  (as done in the \n+00012c80: 7665 7274 6578 2d3c 2f73 7061 6e3e 3c2f  vertex-</span></\n+00012c90: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n+00012ca0: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n+00012cb0: 3034 3533 2220 6e61 6d65 3d22 6c30 3034  0453\" name=\"l004\n+00012cc0: 3533 223e 3c2f 613e 3c73 7061 6e20 636c  53\"></a><span cl\n+00012cd0: 6173 733d 226c 696e 656e 6f22 3e20 2034  ass=\"lineno\">  4\n+00012ce0: 3533 3c2f 7370 616e 3e20 2020 203c 7370  53</span>    <sp\n+00012cf0: 616e 2063 6c61 7373 3d22 636f 6d6d 656e  an class=\"commen\n+00012d00: 7422 3e2f 2f20 2076 6572 7465 7820 6361  t\">//  vertex ca\n+00012d10: 7365 2920 6973 206f 7665 726b 696c 6c20  se) is overkill \n+00012d20: 2d2d 2074 7269 7669 616c 6c79 2063 6f6d  -- trivially com\n+00012d30: 6269 6e65 2074 6865 2030 2e35 6620 7665  bine the 0.5f ve\n+00012d40: 7274 6578 2063 6f65 6666 6963 6965 6e74  rtex coefficient\n+00012d50: 2066 6f72 3c2f 7370 616e 3e3c 2f64 6976   for</span></div\n+00012d60: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n+00012d70: 6e65 223e 3c61 2069 643d 226c 3030 3435  ne\"><a id=\"l0045\n+00012d80: 3422 206e 616d 653d 226c 3030 3435 3422  4\" name=\"l00454\"\n+00012d90: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n+00012da0: 3d22 6c69 6e65 6e6f 223e 2020 3435 343c  =\"lineno\">  454<\n+00012db0: 2f73 7061 6e3e 2020 2020 3c73 7061 6e20  /span>    <span \n+00012dc0: 636c 6173 733d 2263 6f6d 6d65 6e74 223e  class=\"comment\">\n+00012dd0: 2f2f 2020 7468 6520 4372 6561 7365 206f  //  the Crease o\n+00012de0: 6620 7468 6520 7061 7265 6e74 2077 6974  f the parent wit\n+00012df0: 6820 7468 6520 7665 7274 6578 2077 6569  h the vertex wei\n+00012e00: 6768 7473 2061 6e64 2061 7474 656e 7561  ghts and attenua\n+00012e10: 7465 2074 6865 2066 6163 6520 7765 6967  te the face weig\n+00012e20: 6874 733c 2f73 7061 6e3e 3c2f 6469 763e  hts</span></div>\n+00012e30: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n+00012e40: 6522 3e3c 6120 6964 3d22 6c30 3034 3535  e\"><a id=\"l00455\n+00012e50: 2220 6e61 6d65 3d22 6c30 3034 3535 223e  \" name=\"l00455\">\n+00012e60: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n+00012e70: 226c 696e 656e 6f22 3e20 2034 3535 3c2f  \"lineno\">  455</\n+00012e80: 7370 616e 3e20 2020 203c 7370 616e 2063  span>    <span c\n+00012e90: 6c61 7373 3d22 636f 6d6d 656e 7422 3e2f  lass=\"comment\">/\n+00012ea0: 2f20 2061 6363 6f72 6469 6e67 6c79 2e3c  /  accordingly.<\n+00012eb0: 2f73 7061 6e3e 3c2f 6469 763e 0a3c 6469  /span></div>.<di\n+00012ec0: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n+00012ed0: 6120 6964 3d22 6c30 3034 3536 2220 6e61  a id=\"l00456\" na\n+00012ee0: 6d65 3d22 6c30 3034 3536 223e 3c2f 613e  me=\"l00456\"></a>\n+00012ef0: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n+00012f00: 656e 6f22 3e20 2034 3536 3c2f 7370 616e  eno\">  456</span\n+00012f10: 3e20 2020 203c 7370 616e 2063 6c61 7373  >    <span class\n+00012f20: 3d22 636f 6d6d 656e 7422 3e2f 2f3c 2f73  =\"comment\">//</s\n+00012f30: 7061 6e3e 3c2f 6469 763e 0a3c 6469 7620  pan></div>.<div \n+00012f40: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n+00012f50: 6964 3d22 6c30 3034 3537 2220 6e61 6d65  id=\"l00457\" name\n+00012f60: 3d22 6c30 3034 3537 223e 3c2f 613e 3c73  =\"l00457\"></a><s\n+00012f70: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n+00012f80: 6f22 3e20 2034 3537 3c2f 7370 616e 3e20  o\">  457</span> \n+00012f90: 2020 2061 7373 6967 6e53 6d6f 6f74 684d     assignSmoothM\n+00012fa0: 6173 6b46 6f72 4564 6765 2865 6467 652c  askForEdge(edge,\n+00012fb0: 206d 6173 6b29 3b3c 2f64 6976 3e0a 3c64   mask);</div>.<d\n+00012fc0: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n+00012fd0: 3c61 2069 643d 226c 3030 3435 3822 206e  <a id=\"l00458\" n\n+00012fe0: 616d 653d 226c 3030 3435 3822 3e3c 2f61  ame=\"l00458\"></a\n+00012ff0: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n+00013000: 6e65 6e6f 223e 2020 3435 383c 2f73 7061  neno\">  458</spa\n+00013010: 6e3e 203c 2f64 6976 3e0a 3c64 6976 2063  n> </div>.<div c\n+00013020: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n+00013030: 643d 226c 3030 3435 3922 206e 616d 653d  d=\"l00459\" name=\n+00013040: 226c 3030 3435 3922 3e3c 2f61 3e3c 7370  \"l00459\"></a><sp\n+00013050: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n+00013060: 223e 2020 3435 393c 2f73 7061 6e3e 2020  \">  459</span>  \n+00013070: 2020 3c73 7061 6e20 636c 6173 733d 226b    <span class=\"k\n+00013080: 6579 776f 7264 223e 7479 7065 6465 663c  eyword\">typedef<\n+00013090: 2f73 7061 6e3e 203c 7370 616e 2063 6c61  /span> <span cla\n+000130a0: 7373 3d22 6b65 7977 6f72 6422 3e74 7970  ss=\"keyword\">typ\n+000130b0: 656e 616d 653c 2f73 7061 6e3e 204d 4153  ename</span> MAS\n+000130c0: 4b3a 3a57 6569 6768 7420 5765 6967 6874  K::Weight Weight\n+000130d0: 3b3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ;</div>.<div cla\n+000130e0: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n+000130f0: 226c 3030 3436 3022 206e 616d 653d 226c  \"l00460\" name=\"l\n+00013100: 3030 3436 3022 3e3c 2f61 3e3c 7370 616e  00460\"></a><span\n+00013110: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n+00013120: 2020 3436 303c 2f73 7061 6e3e 203c 2f64    460</span> </d\n+00013130: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n+00013140: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n+00013150: 3436 3122 206e 616d 653d 226c 3030 3436  461\" name=\"l0046\n+00013160: 3122 3e3c 2f61 3e3c 7370 616e 2063 6c61  1\"></a><span cla\n+00013170: 7373 3d22 6c69 6e65 6e6f 223e 2020 3436  ss=\"lineno\">  46\n+00013180: 313c 2f73 7061 6e3e 2020 2020 5765 6967  1</span>    Weig\n+00013190: 6874 2070 5765 6967 6874 203d 2065 6467  ht pWeight = edg\n+000131a0: 652e 4765 7453 6861 7270 6e65 7373 2829  e.GetSharpness()\n+000131b0: 3b3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ;</div>.<div cla\n+000131c0: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n+000131d0: 226c 3030 3436 3222 206e 616d 653d 226c  \"l00462\" name=\"l\n+000131e0: 3030 3436 3222 3e3c 2f61 3e3c 7370 616e  00462\"></a><span\n+000131f0: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n+00013200: 2020 3436 323c 2f73 7061 6e3e 2020 2020    462</span>    \n+00013210: 5765 6967 6874 2063 5765 6967 6874 203d  Weight cWeight =\n+00013220: 2031 2e30 6620 2d20 7057 6569 6768 743b   1.0f - pWeight;\n+00013230: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n+00013240: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n+00013250: 6c30 3034 3633 2220 6e61 6d65 3d22 6c30  l00463\" name=\"l0\n+00013260: 3034 3633 223e 3c2f 613e 3c73 7061 6e20  0463\"></a><span \n+00013270: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n+00013280: 2034 3633 3c2f 7370 616e 3e20 3c2f 6469   463</span> </di\n+00013290: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n+000132a0: 696e 6522 3e3c 6120 6964 3d22 6c30 3034  ine\"><a id=\"l004\n+000132b0: 3634 2220 6e61 6d65 3d22 6c30 3034 3634  64\" name=\"l00464\n+000132c0: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n+000132d0: 733d 226c 696e 656e 6f22 3e20 2034 3634  s=\"lineno\">  464\n+000132e0: 3c2f 7370 616e 3e20 2020 206d 6173 6b2e  </span>    mask.\n+000132f0: 5665 7274 6578 5765 6967 6874 2830 2920  VertexWeight(0) \n+00013300: 3d20 7057 6569 6768 7420 2a20 302e 3566  = pWeight * 0.5f\n+00013310: 202b 2063 5765 6967 6874 202a 206d 6173   + cWeight * mas\n+00013320: 6b2e 5665 7274 6578 5765 6967 6874 2830  k.VertexWeight(0\n+00013330: 293b 3c2f 6469 763e 0a3c 6469 7620 636c  );</div>.<div cl\n+00013340: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n+00013350: 3d22 6c30 3034 3635 2220 6e61 6d65 3d22  =\"l00465\" name=\"\n+00013360: 6c30 3034 3635 223e 3c2f 613e 3c73 7061  l00465\"></a><spa\n+00013370: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n+00013380: 3e20 2034 3635 3c2f 7370 616e 3e20 2020  >  465</span>   \n+00013390: 206d 6173 6b2e 5665 7274 6578 5765 6967   mask.VertexWeig\n+000133a0: 6874 2831 2920 3d20 7057 6569 6768 7420  ht(1) = pWeight \n+000133b0: 2a20 302e 3566 202b 2063 5765 6967 6874  * 0.5f + cWeight\n+000133c0: 202a 206d 6173 6b2e 5665 7274 6578 5765   * mask.VertexWe\n+000133d0: 6967 6874 2831 293b 3c2f 6469 763e 0a3c  ight(1);</div>.<\n+000133e0: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n+000133f0: 3e3c 6120 6964 3d22 6c30 3034 3636 2220  ><a id=\"l00466\" \n+00013400: 6e61 6d65 3d22 6c30 3034 3636 223e 3c2f  name=\"l00466\"></\n+00013410: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n+00013420: 696e 656e 6f22 3e20 2034 3636 3c2f 7370  ineno\">  466</sp\n+00013430: 616e 3e20 3c2f 6469 763e 0a3c 6469 7620  an> </div>.<div \n+00013440: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n+00013450: 6964 3d22 6c30 3034 3637 2220 6e61 6d65  id=\"l00467\" name\n+00013460: 3d22 6c30 3034 3637 223e 3c2f 613e 3c73  =\"l00467\"></a><s\n+00013470: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n+00013480: 6f22 3e20 2034 3637 3c2f 7370 616e 3e20  o\">  467</span> \n+00013490: 2020 203c 7370 616e 2063 6c61 7373 3d22     <span class=\"\n+000134a0: 6b65 7977 6f72 6474 7970 6522 3e69 6e74  keywordtype\">int\n+000134b0: 3c2f 7370 616e 3e20 6661 6365 436f 756e  </span> faceCoun\n+000134c0: 7420 3d20 6d61 736b 2e47 6574 4e75 6d46  t = mask.GetNumF\n+000134d0: 6163 6557 6569 6768 7473 2829 3b3c 2f64  aceWeights();</d\n+000134e0: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n+000134f0: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n+00013500: 3436 3822 206e 616d 653d 226c 3030 3436  468\" name=\"l0046\n+00013510: 3822 3e3c 2f61 3e3c 7370 616e 2063 6c61  8\"></a><span cla\n+00013520: 7373 3d22 6c69 6e65 6e6f 223e 2020 3436  ss=\"lineno\">  46\n+00013530: 383c 2f73 7061 6e3e 2020 2020 3c73 7061  8</span>    <spa\n+00013540: 6e20 636c 6173 733d 226b 6579 776f 7264  n class=\"keyword\n+00013550: 666c 6f77 223e 666f 723c 2f73 7061 6e3e  flow\">for</span>\n+00013560: 2028 3c73 7061 6e20 636c 6173 733d 226b   (<span class=\"k\n+00013570: 6579 776f 7264 7479 7065 223e 696e 743c  eywordtype\">int<\n+00013580: 2f73 7061 6e3e 2069 203d 2030 3b20 6920  /span> i = 0; i \n+00013590: 266c 743b 2066 6163 6543 6f75 6e74 3b20  &lt; faceCount; \n+000135a0: 2b2b 6929 207b 3c2f 6469 763e 0a3c 6469  ++i) {</div>.<di\n+000135b0: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n+000135c0: 6120 6964 3d22 6c30 3034 3639 2220 6e61  a id=\"l00469\" na\n+000135d0: 6d65 3d22 6c30 3034 3639 223e 3c2f 613e  me=\"l00469\"></a>\n+000135e0: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n+000135f0: 656e 6f22 3e20 2034 3639 3c2f 7370 616e  eno\">  469</span\n+00013600: 3e20 2020 2020 2020 206d 6173 6b2e 4661  >        mask.Fa\n+00013610: 6365 5765 6967 6874 2869 2920 2a3d 2063  ceWeight(i) *= c\n+00013620: 5765 6967 6874 3b3c 2f64 6976 3e0a 3c64  Weight;</div>.<d\n+00013630: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n+00013640: 3c61 2069 643d 226c 3030 3437 3022 206e  <a id=\"l00470\" n\n+00013650: 616d 653d 226c 3030 3437 3022 3e3c 2f61  ame=\"l00470\"></a\n+00013660: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n+00013670: 6e65 6e6f 223e 2020 3437 303c 2f73 7061  neno\">  470</spa\n+00013680: 6e3e 2020 2020 7d3c 2f64 6976 3e0a 3c64  n>    }</div>.<d\n+00013690: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n+000136a0: 3c61 2069 643d 226c 3030 3437 3122 206e  <a id=\"l00471\" n\n+000136b0: 616d 653d 226c 3030 3437 3122 3e3c 2f61  ame=\"l00471\"></a\n+000136c0: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n+000136d0: 6e65 6e6f 223e 2020 3437 313c 2f73 7061  neno\">  471</spa\n+000136e0: 6e3e 7d3c 2f64 6976 3e0a 3c2f 6469 763e  n>}</div>.</div>\n+000136f0: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n+00013700: 6522 3e3c 6120 6964 3d22 6c30 3034 3732  e\"><a id=\"l00472\n+00013710: 2220 6e61 6d65 3d22 6c30 3034 3732 223e  \" name=\"l00472\">\n+00013720: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n+00013730: 226c 696e 656e 6f22 3e20 2034 3732 3c2f  \"lineno\">  472</\n+00013740: 7370 616e 3e20 3c2f 6469 763e 0a3c 6469  span> </div>.<di\n+00013750: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n+00013760: 6120 6964 3d22 6c30 3034 3733 2220 6e61  a id=\"l00473\" na\n+00013770: 6d65 3d22 6c30 3034 3733 223e 3c2f 613e  me=\"l00473\"></a>\n+00013780: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n+00013790: 656e 6f22 3e20 2034 3733 3c2f 7370 616e  eno\">  473</span\n+000137a0: 3e3c 7370 616e 2063 6c61 7373 3d22 636f  ><span class=\"co\n+000137b0: 6d6d 656e 7422 3e2f 2f3c 2f73 7061 6e3e  mment\">//</span>\n+000137c0: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n+000137d0: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n+000137e0: 6c30 3034 3734 2220 6e61 6d65 3d22 6c30  l00474\" name=\"l0\n+000137f0: 3034 3734 223e 3c2f 613e 3c73 7061 6e20  0474\"></a><span \n+00013800: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n+00013810: 2034 3734 3c2f 7370 616e 3e3c 7370 616e   474</span><span\n+00013820: 2063 6c61 7373 3d22 636f 6d6d 656e 7422   class=\"comment\"\n+00013830: 3e2f 2f20 2054 6865 2063 6f6d 7075 7461  >//  The computa\n+00013840: 7469 6f6e 206f 6620 6120 7665 7274 6578  tion of a vertex\n+00013850: 2d76 6572 7465 7820 6d61 736b 2072 6571  -vertex mask req\n+00013860: 7569 7265 7320 696e 7370 6563 7469 6f6e  uires inspection\n+00013870: 206f 6620 6372 6561 7369 6e67 2073 6861   of creasing sha\n+00013880: 7270 6e65 7373 2076 616c 7565 733c 2f73  rpness values</s\n+00013890: 7061 6e3e 3c2f 6469 763e 0a3c 6469 7620  pan></div>.<div \n+000138a0: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n+000138b0: 6964 3d22 6c30 3034 3735 2220 6e61 6d65  id=\"l00475\" name\n+000138c0: 3d22 6c30 3034 3735 223e 3c2f 613e 3c73  =\"l00475\"></a><s\n+000138d0: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n+000138e0: 6f22 3e20 2034 3735 3c2f 7370 616e 3e3c  o\">  475</span><\n+000138f0: 7370 616e 2063 6c61 7373 3d22 636f 6d6d  span class=\"comm\n+00013900: 656e 7422 3e2f 2f20 2074 6f20 6465 7465  ent\">//  to dete\n+00013910: 726d 696e 6520 7768 6174 2073 7562 6469  rmine what subdi\n+00013920: 7669 7369 6f6e 2052 756c 6573 2061 7070  vision Rules app\n+00013930: 6c79 2074 6f20 7468 6520 7061 7265 6e74  ly to the parent\n+00013940: 2061 6e64 2069 7473 2063 6869 6c64 2076   and its child v\n+00013950: 6572 7465 782c 2061 6e64 2061 6c73 6f20  ertex, and also \n+00013960: 746f 3c2f 7370 616e 3e3c 2f64 6976 3e0a  to</span></div>.\n+00013970: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n+00013980: 223e 3c61 2069 643d 226c 3030 3437 3622  \"><a id=\"l00476\"\n+00013990: 206e 616d 653d 226c 3030 3437 3622 3e3c   name=\"l00476\"><\n+000139a0: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n+000139b0: 6c69 6e65 6e6f 223e 2020 3437 363c 2f73  lineno\">  476</s\n+000139c0: 7061 6e3e 3c73 7061 6e20 636c 6173 733d  pan><span class=\n+000139d0: 2263 6f6d 6d65 6e74 223e 2f2f 2020 6465  \"comment\">//  de\n+000139e0: 7465 6374 2061 6e64 2061 7070 6c79 2061  tect and apply a\n+000139f0: 2074 7261 6e73 6974 696f 6e20 6265 7477   transition betw\n+00013a00: 6565 6e20 7477 6f20 6469 6666 6572 696e  een two differin\n+00013a10: 6720 5275 6c65 732e 2020 5573 696e 6720  g Rules.  Using \n+00013a20: 7468 6520 7072 6f74 6563 7465 6420 6d65  the protected me\n+00013a30: 7468 6f64 7320 746f 3c2f 7370 616e 3e3c  thods to</span><\n+00013a40: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n+00013a50: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n+00013a60: 3030 3437 3722 206e 616d 653d 226c 3030  00477\" name=\"l00\n+00013a70: 3437 3722 3e3c 2f61 3e3c 7370 616e 2063  477\"></a><span c\n+00013a80: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n+00013a90: 3437 373c 2f73 7061 6e3e 3c73 7061 6e20  477</span><span \n+00013aa0: 636c 6173 733d 2263 6f6d 6d65 6e74 223e  class=\"comment\">\n+00013ab0: 2f2f 2020 6173 7369 676e 2073 7065 6369  //  assign speci\n+00013ac0: 6669 6320 6d61 736b 732c 2074 6869 7320  fic masks, this \n+00013ad0: 696d 706c 656d 656e 7461 7469 6f6e 2073  implementation s\n+00013ae0: 686f 756c 6420 7365 7276 6520 616c 6c20  hould serve all \n+00013af0: 6e6f 6e2d 6c69 6e65 6172 2073 6368 656d  non-linear schem\n+00013b00: 6573 2028 6375 7272 656e 746c 793c 2f73  es (currently</s\n+00013b10: 7061 6e3e 3c2f 6469 763e 0a3c 6469 7620  pan></div>.<div \n+00013b20: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n+00013b30: 6964 3d22 6c30 3034 3738 2220 6e61 6d65  id=\"l00478\" name\n+00013b40: 3d22 6c30 3034 3738 223e 3c2f 613e 3c73  =\"l00478\"></a><s\n+00013b50: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n+00013b60: 6f22 3e20 2034 3738 3c2f 7370 616e 3e3c  o\">  478</span><\n+00013b70: 7370 616e 2063 6c61 7373 3d22 636f 6d6d  span class=\"comm\n+00013b80: 656e 7422 3e2f 2f20 2043 6174 6d61 726b  ent\">//  Catmark\n+00013b90: 2061 6e64 204c 6f6f 7029 2061 6e64 206f   and Loop) and o\n+00013ba0: 6e6c 7920 6e65 6564 7320 746f 2062 6520  nly needs to be \n+00013bb0: 7370 6563 6961 6c69 7a65 6420 666f 7220  specialized for \n+00013bc0: 4269 6c69 6e65 6172 2074 6f20 7265 6d6f  Bilinear to remo\n+00013bd0: 7665 2061 6c6c 2075 6e6e 6563 6573 7361  ve all unnecessa\n+00013be0: 7279 3c2f 7370 616e 3e3c 2f64 6976 3e0a  ry</span></div>.\n+00013bf0: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n+00013c00: 223e 3c61 2069 643d 226c 3030 3437 3922  \"><a id=\"l00479\"\n+00013c10: 206e 616d 653d 226c 3030 3437 3922 3e3c   name=\"l00479\"><\n+00013c20: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n+00013c30: 6c69 6e65 6e6f 223e 2020 3437 393c 2f73  lineno\">  479</s\n+00013c40: 7061 6e3e 3c73 7061 6e20 636c 6173 733d  pan><span class=\n+00013c50: 2263 6f6d 6d65 6e74 223e 2f2f 2020 636f  \"comment\">//  co\n+00013c60: 6d70 6c65 7869 7479 2072 656c 6174 696e  mplexity relatin\n+00013c70: 6720 746f 2063 7265 6173 696e 672c 2052  g to creasing, R\n+00013c80: 756c 6573 2c20 6574 632e 3c2f 7370 616e  ules, etc.</span\n+00013c90: 3e3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ></div>.<div cla\n+00013ca0: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n+00013cb0: 226c 3030 3438 3022 206e 616d 653d 226c  \"l00480\" name=\"l\n+00013cc0: 3030 3438 3022 3e3c 2f61 3e3c 7370 616e  00480\"></a><span\n+00013cd0: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n+00013ce0: 2020 3438 303c 2f73 7061 6e3e 3c73 7061    480</span><spa\n+00013cf0: 6e20 636c 6173 733d 2263 6f6d 6d65 6e74  n class=\"comment\n+00013d00: 223e 2f2f 3c2f 7370 616e 3e3c 2f64 6976  \">//</span></div\n+00013d10: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n+00013d20: 6e65 223e 3c61 2069 643d 226c 3030 3438  ne\"><a id=\"l0048\n+00013d30: 3122 206e 616d 653d 226c 3030 3438 3122  1\" name=\"l00481\"\n+00013d40: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n+00013d50: 3d22 6c69 6e65 6e6f 223e 2020 3438 313c  =\"lineno\">  481<\n+00013d60: 2f73 7061 6e3e 3c73 7061 6e20 636c 6173  /span><span clas\n+00013d70: 733d 2263 6f6d 6d65 6e74 223e 2f2f 2020  s=\"comment\">//  \n+00013d80: 5468 6520 696d 706c 656d 656e 7461 7469  The implementati\n+00013d90: 6f6e 2068 6572 6520 6973 2073 6c69 6768  on here is sligh\n+00013da0: 746c 7920 636f 6d70 6c69 6361 7465 6420  tly complicated \n+00013db0: 6279 2063 6f6d 6269 6e69 6e67 2074 776f  by combining two\n+00013dc0: 2073 6365 6e61 7269 6f73 2069 6e74 6f20   scenarios into \n+00013dd0: 6f6e 6520 2d2d 3c2f 7370 616e 3e3c 2f64  one --</span></d\n+00013de0: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n+00013df0: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n+00013e00: 3438 3222 206e 616d 653d 226c 3030 3438  482\" name=\"l0048\n+00013e10: 3222 3e3c 2f61 3e3c 7370 616e 2063 6c61  2\"></a><span cla\n+00013e20: 7373 3d22 6c69 6e65 6e6f 223e 2020 3438  ss=\"lineno\">  48\n+00013e30: 323c 2f73 7061 6e3e 3c73 7061 6e20 636c  2</span><span cl\n+00013e40: 6173 733d 2263 6f6d 6d65 6e74 223e 2f2f  ass=\"comment\">//\n+00013e50: 2020 6569 7468 6572 2074 6865 2063 616c    either the cal\n+00013e60: 6c65 7220 6b6e 6f77 7320 7468 6520 7061  ler knows the pa\n+00013e70: 7265 6e74 2061 6e64 2063 6869 6c64 2072  rent and child r\n+00013e80: 756c 6573 2061 6e64 2070 726f 7669 6465  ules and provide\n+00013e90: 7320 7468 656d 2c20 6f72 2074 6865 7920  s them, or they \n+00013ea0: 646f 6e26 2333 393b 7420 616e 643c 2f73  don&#39;t and</s\n+00013eb0: 7061 6e3e 3c2f 6469 763e 0a3c 6469 7620  pan></div>.<div \n+00013ec0: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n+00013ed0: 6964 3d22 6c30 3034 3833 2220 6e61 6d65  id=\"l00483\" name\n+00013ee0: 3d22 6c30 3034 3833 223e 3c2f 613e 3c73  =\"l00483\"></a><s\n+00013ef0: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n+00013f00: 6f22 3e20 2034 3833 3c2f 7370 616e 3e3c  o\">  483</span><\n+00013f10: 7370 616e 2063 6c61 7373 3d22 636f 6d6d  span class=\"comm\n+00013f20: 656e 7422 3e2f 2f20 2074 6865 2052 756c  ent\">//  the Rul\n+00013f30: 6573 2068 6176 6520 746f 2062 6520 6465  es have to be de\n+00013f40: 7465 726d 696e 6564 2066 726f 6d20 7368  termined from sh\n+00013f50: 6172 706e 6573 7320 7661 6c75 6573 2e20  arpness values. \n+00013f60: 2045 7665 6e20 7768 656e 2074 6865 2052   Even when the R\n+00013f70: 756c 6573 2061 7265 206b 6e6f 776e 2061  ules are known a\n+00013f80: 6e64 3c2f 7370 616e 3e3c 2f64 6976 3e0a  nd</span></div>.\n+00013f90: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n+00013fa0: 223e 3c61 2069 643d 226c 3030 3438 3422  \"><a id=\"l00484\"\n+00013fb0: 206e 616d 653d 226c 3030 3438 3422 3e3c   name=\"l00484\"><\n+00013fc0: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n+00013fd0: 6c69 6e65 6e6f 223e 2020 3438 343c 2f73  lineno\">  484</s\n+00013fe0: 7061 6e3e 3c73 7061 6e20 636c 6173 733d  pan><span class=\n+00013ff0: 2263 6f6d 6d65 6e74 223e 2f2f 2020 7072  \"comment\">//  pr\n+00014000: 6f76 6964 6564 2074 686f 7567 682c 2074  ovided though, t\n+00014010: 6865 7265 2061 7265 2063 6173 6573 2077  here are cases w\n+00014020: 6865 7265 2074 6865 2070 6172 656e 7420  here the parent \n+00014030: 616e 6420 6368 696c 6420 7368 6172 706e  and child sharpn\n+00014040: 6573 7320 7661 6c75 6573 206e 6565 6420  ess values need \n+00014050: 746f 2062 653c 2f73 7061 6e3e 3c2f 6469  to be</span></di\n+00014060: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n+00014070: 696e 6522 3e3c 6120 6964 3d22 6c30 3034  ine\"><a id=\"l004\n+00014080: 3835 2220 6e61 6d65 3d22 6c30 3034 3835  85\" name=\"l00485\n+00014090: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n+000140a0: 733d 226c 696e 656e 6f22 3e20 2034 3835  s=\"lineno\">  485\n+000140b0: 3c2f 7370 616e 3e3c 7370 616e 2063 6c61  </span><span cla\n+000140c0: 7373 3d22 636f 6d6d 656e 7422 3e2f 2f20  ss=\"comment\">// \n+000140d0: 2069 6465 6e74 6966 6965 642c 2073 6f20   identified, so \n+000140e0: 6163 636f 756e 7469 6e67 2066 6f72 2074  accounting for t\n+000140f0: 6865 2075 6e6b 6e6f 776e 2052 756c 6573  he unknown Rules\n+00014100: 2074 6f6f 2069 7320 6e6f 7420 6d75 6368   too is not much\n+00014110: 206f 6620 616e 2061 6464 6564 2063 6f6d   of an added com\n+00014120: 706c 6963 6174 696f 6e2e 3c2f 7370 616e  plication.</span\n+00014130: 3e3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ></div>.<div cla\n+00014140: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n+00014150: 226c 3030 3438 3622 206e 616d 653d 226c  \"l00486\" name=\"l\n+00014160: 3030 3438 3622 3e3c 2f61 3e3c 7370 616e  00486\"></a><span\n+00014170: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n+00014180: 2020 3438 363c 2f73 7061 6e3e 3c73 7061    486</span><spa\n+00014190: 6e20 636c 6173 733d 2263 6f6d 6d65 6e74  n class=\"comment\n+000141a0: 223e 2f2f 3c2f 7370 616e 3e3c 2f64 6976  \">//</span></div\n+000141b0: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n+000141c0: 6e65 223e 3c61 2069 643d 226c 3030 3438  ne\"><a id=\"l0048\n+000141d0: 3722 206e 616d 653d 226c 3030 3438 3722  7\" name=\"l00487\"\n+000141e0: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n+000141f0: 3d22 6c69 6e65 6e6f 223e 2020 3438 373c  =\"lineno\">  487<\n+00014200: 2f73 7061 6e3e 3c73 7061 6e20 636c 6173  /span><span clas\n+00014210: 733d 2263 6f6d 6d65 6e74 223e 2f2f 2020  s=\"comment\">//  \n+00014220: 5468 6520 6265 6e65 6669 7420 6f66 2073  The benefit of s\n+00014230: 7570 706f 7274 696e 6720 7370 6563 6966  upporting specif\n+00014240: 6965 6420 5275 6c65 7320 6973 2074 6861  ied Rules is tha\n+00014250: 7420 7468 6579 2063 616e 206f 6674 656e  t they can often\n+00014260: 2062 6520 7472 6976 6961 6c6c 793c 2f73   be trivially</s\n+00014270: 7061 6e3e 3c2f 6469 763e 0a3c 6469 7620  pan></div>.<div \n+00014280: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n+00014290: 6964 3d22 6c30 3034 3838 2220 6e61 6d65  id=\"l00488\" name\n+000142a0: 3d22 6c30 3034 3838 223e 3c2f 613e 3c73  =\"l00488\"></a><s\n+000142b0: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n+000142c0: 6f22 3e20 2034 3838 3c2f 7370 616e 3e3c  o\">  488</span><\n+000142d0: 7370 616e 2063 6c61 7373 3d22 636f 6d6d  span class=\"comm\n+000142e0: 656e 7422 3e2f 2f20 2064 6574 6572 6d69  ent\">//  determi\n+000142f0: 6e65 6420 6672 6f6d 2063 6f6e 7465 7874  ned from context\n+00014300: 2028 652e 672e 2061 2076 6572 7465 7820   (e.g. a vertex \n+00014310: 6465 7269 7665 6420 6672 6f6d 2061 2066  derived from a f\n+00014320: 6163 6520 6174 2061 2070 7265 7669 6f75  ace at a previou\n+00014330: 7320 6c65 7665 6c20 7769 6c6c 2061 6c77  s level will alw\n+00014340: 6179 733c 2f73 7061 6e3e 3c2f 6469 763e  ays</span></div>\n+00014350: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n+00014360: 6522 3e3c 6120 6964 3d22 6c30 3034 3839  e\"><a id=\"l00489\n+00014370: 2220 6e61 6d65 3d22 6c30 3034 3839 223e  \" name=\"l00489\">\n+00014380: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n+00014390: 226c 696e 656e 6f22 3e20 2034 3839 3c2f  \"lineno\">  489</\n+000143a0: 7370 616e 3e3c 7370 616e 2063 6c61 7373  span><span class\n+000143b0: 3d22 636f 6d6d 656e 7422 3e2f 2f20 2062  =\"comment\">//  b\n+000143c0: 6520 736d 6f6f 7468 2920 7261 7468 6572  e smooth) rather\n+000143d0: 2074 6861 6e20 6d6f 7265 2067 656e 6572   than more gener\n+000143e0: 616c 6c79 2c20 616e 6420 6174 2067 7265  ally, and at gre\n+000143f0: 6174 6572 2063 6f73 742c 2069 6e73 7065  ater cost, inspe\n+00014400: 6374 696e 6720 6e65 6967 6862 6f72 696e  cting neighborin\n+00014410: 6720 616e 643c 2f73 7061 6e3e 3c2f 6469  g and</span></di\n+00014420: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n+00014430: 696e 6522 3e3c 6120 6964 3d22 6c30 3034  ine\"><a id=\"l004\n+00014440: 3930 2220 6e61 6d65 3d22 6c30 3034 3930  90\" name=\"l00490\n+00014450: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n+00014460: 733d 226c 696e 656e 6f22 3e20 2034 3930  s=\"lineno\">  490\n+00014470: 3c2f 7370 616e 3e3c 7370 616e 2063 6c61  </span><span cla\n+00014480: 7373 3d22 636f 6d6d 656e 7422 3e2f 2f20  ss=\"comment\">// \n+00014490: 2074 6865 7920 6172 6520 6f66 7465 6e20   they are often \n+000144a0: 7468 6520 7361 6d65 2066 6f72 2070 6172  the same for par\n+000144b0: 656e 7420 616e 6420 6368 696c 642e 3c2f  ent and child.</\n+000144c0: 7370 616e 3e3c 2f64 6976 3e0a 3c64 6976  span></div>.<div\n+000144d0: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n+000144e0: 2069 643d 226c 3030 3439 3122 206e 616d   id=\"l00491\" nam\n+000144f0: 653d 226c 3030 3439 3122 3e3c 2f61 3e3c  e=\"l00491\"></a><\n+00014500: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n+00014510: 6e6f 223e 2020 3439 313c 2f73 7061 6e3e  no\">  491</span>\n+00014520: 3c73 7061 6e20 636c 6173 733d 2263 6f6d  <span class=\"com\n+00014530: 6d65 6e74 223e 2f2f 3c2f 7370 616e 3e3c  ment\">//</span><\n+00014540: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n+00014550: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n+00014560: 3030 3439 3222 206e 616d 653d 226c 3030  00492\" name=\"l00\n+00014570: 3439 3222 3e3c 2f61 3e3c 7370 616e 2063  492\"></a><span c\n+00014580: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n+00014590: 3439 323c 2f73 7061 6e3e 3c73 7061 6e20  492</span><span \n+000145a0: 636c 6173 733d 2263 6f6d 6d65 6e74 223e  class=\"comment\">\n+000145b0: 2f2f 2020 5468 6520 6f76 6572 616c 6c20  //  The overall \n+000145c0: 7072 6f63 6573 7320 6973 2061 7320 666f  process is as fo\n+000145d0: 6c6c 6f77 733a 3c2f 7370 616e 3e3c 2f64  llows:</span></d\n+000145e0: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n+000145f0: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n+00014600: 3439 3322 206e 616d 653d 226c 3030 3439  493\" name=\"l0049\n+00014610: 3322 3e3c 2f61 3e3c 7370 616e 2063 6c61  3\"></a><span cla\n+00014620: 7373 3d22 6c69 6e65 6e6f 223e 2020 3439  ss=\"lineno\">  49\n+00014630: 333c 2f73 7061 6e3e 3c73 7061 6e20 636c  3</span><span cl\n+00014640: 6173 733d 2263 6f6d 6d65 6e74 223e 2f2f  ass=\"comment\">//\n+00014650: 3c2f 7370 616e 3e3c 2f64 6976 3e0a 3c64  </span></div>.<d\n+00014660: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n+00014670: 3c61 2069 643d 226c 3030 3439 3422 206e  <a id=\"l00494\" n\n+00014680: 616d 653d 226c 3030 3439 3422 3e3c 2f61  ame=\"l00494\"></a\n+00014690: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n+000146a0: 6e65 6e6f 223e 2020 3439 343c 2f73 7061  neno\">  494</spa\n+000146b0: 6e3e 3c73 7061 6e20 636c 6173 733d 2263  n><span class=\"c\n+000146c0: 6f6d 6d65 6e74 223e 2f2f 2020 2020 2020  omment\">//      \n+000146d0: 2d20 7175 6963 6b6c 7920 6465 7465 6374  - quickly detect\n+000146e0: 2074 6865 206d 6f73 7420 636f 6d6d 6f6e   the most common\n+000146f0: 2053 6d6f 6f74 6820 6361 7365 2077 6865   Smooth case whe\n+00014700: 6e20 7370 6563 6966 6965 6420 616e 6420  n specified and \n+00014710: 7265 7475 726e 3c2f 7370 616e 3e3c 2f64  return</span></d\n+00014720: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n+00014730: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n+00014740: 3439 3522 206e 616d 653d 226c 3030 3439  495\" name=\"l0049\n+00014750: 3522 3e3c 2f61 3e3c 7370 616e 2063 6c61  5\"></a><span cla\n+00014760: 7373 3d22 6c69 6e65 6e6f 223e 2020 3439  ss=\"lineno\">  49\n+00014770: 353c 2f73 7061 6e3e 3c73 7061 6e20 636c  5</span><span cl\n+00014780: 6173 733d 2263 6f6d 6d65 6e74 223e 2f2f  ass=\"comment\">//\n+00014790: 2020 2020 2020 2d20 6465 7465 726d 696e        - determin\n+000147a0: 6520 6966 2073 6861 7270 6e65 7373 2066  e if sharpness f\n+000147b0: 6f72 2070 6172 656e 7420 6973 2072 6571  or parent is req\n+000147c0: 7569 7265 6420 616e 6420 6761 7468 6572  uired and gather\n+000147d0: 2069 6620 736f 3c2f 7370 616e 3e3c 2f64   if so</span></d\n+000147e0: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n+000147f0: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n+00014800: 3439 3622 206e 616d 653d 226c 3030 3439  496\" name=\"l0049\n+00014810: 3622 3e3c 2f61 3e3c 7370 616e 2063 6c61  6\"></a><span cla\n+00014820: 7373 3d22 6c69 6e65 6e6f 223e 2020 3439  ss=\"lineno\">  49\n+00014830: 363c 2f73 7061 6e3e 3c73 7061 6e20 636c  6</span><span cl\n+00014840: 6173 733d 2263 6f6d 6d65 6e74 223e 2f2f  ass=\"comment\">//\n+00014850: 2020 2020 2020 2d20 6966 2075 6e73 7065        - if unspe\n+00014860: 6369 6669 6564 2c20 6465 7465 726d 696e  cified, determin\n+00014870: 6520 7468 6520 7061 7265 6e74 2072 756c  e the parent rul\n+00014880: 653c 2f73 7061 6e3e 3c2f 6469 763e 0a3c  e</span></div>.<\n+00014890: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n+000148a0: 3e3c 6120 6964 3d22 6c30 3034 3937 2220  ><a id=\"l00497\" \n+000148b0: 6e61 6d65 3d22 6c30 3034 3937 223e 3c2f  name=\"l00497\"></\n+000148c0: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n+000148d0: 696e 656e 6f22 3e20 2034 3937 3c2f 7370  ineno\">  497</sp\n+000148e0: 616e 3e3c 7370 616e 2063 6c61 7373 3d22  an><span class=\"\n+000148f0: 636f 6d6d 656e 7422 3e2f 2f20 2020 2020  comment\">//     \n+00014900: 202d 2061 7373 6967 6e20 6d61 736b 2066   - assign mask f\n+00014910: 6f72 2074 6865 2070 6172 656e 7420 7275  or the parent ru\n+00014920: 6c65 202d 2d20 7265 7475 726e 696e 6720  le -- returning \n+00014930: 6966 2053 6d6f 6f74 682f 4461 7274 3c2f  if Smooth/Dart</\n+00014940: 7370 616e 3e3c 2f64 6976 3e0a 3c64 6976  span></div>.<div\n+00014950: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n+00014960: 2069 643d 226c 3030 3439 3822 206e 616d   id=\"l00498\" nam\n+00014970: 653d 226c 3030 3439 3822 3e3c 2f61 3e3c  e=\"l00498\"></a><\n+00014980: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n+00014990: 6e6f 223e 2020 3439 383c 2f73 7061 6e3e  no\">  498</span>\n+000149a0: 3c73 7061 6e20 636c 6173 733d 2263 6f6d  <span class=\"com\n+000149b0: 6d65 6e74 223e 2f2f 2020 2020 2020 2d20  ment\">//      - \n+000149c0: 7265 7475 726e 2069 6620 6368 696c 6420  return if child \n+000149d0: 7275 6c65 206d 6174 6368 6573 2070 6172  rule matches par\n+000149e0: 656e 743c 2f73 7061 6e3e 3c2f 6469 763e  ent</span></div>\n+000149f0: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n+00014a00: 6522 3e3c 6120 6964 3d22 6c30 3034 3939  e\"><a id=\"l00499\n+00014a10: 2220 6e61 6d65 3d22 6c30 3034 3939 223e  \" name=\"l00499\">\n+00014a20: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n+00014a30: 226c 696e 656e 6f22 3e20 2034 3939 3c2f  \"lineno\">  499</\n+00014a40: 7370 616e 3e3c 7370 616e 2063 6c61 7373  span><span class\n+00014a50: 3d22 636f 6d6d 656e 7422 3e2f 2f20 2020  =\"comment\">//   \n+00014a60: 2020 202d 2067 6174 6865 7220 7368 6172     - gather shar\n+00014a70: 706e 6573 7320 666f 7220 6368 696c 6420  pness for child \n+00014a80: 746f 2064 6574 6572 6d69 6e65 206f 7220  to determine or \n+00014a90: 636f 6d62 696e 6520 6368 696c 6420 7275  combine child ru\n+00014aa0: 6c65 3c2f 7370 616e 3e3c 2f64 6976 3e0a  le</span></div>.\n+00014ab0: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n+00014ac0: 223e 3c61 2069 643d 226c 3030 3530 3022  \"><a id=\"l00500\"\n+00014ad0: 206e 616d 653d 226c 3030 3530 3022 3e3c   name=\"l00500\"><\n+00014ae0: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n+00014af0: 6c69 6e65 6e6f 223e 2020 3530 303c 2f73  lineno\">  500</s\n+00014b00: 7061 6e3e 3c73 7061 6e20 636c 6173 733d  pan><span class=\n+00014b10: 2263 6f6d 6d65 6e74 223e 2f2f 2020 2020  \"comment\">//    \n+00014b20: 2020 2d20 6966 2075 6e73 7065 6369 6669    - if unspecifi\n+00014b30: 6564 2c20 6465 7465 726d 696e 6520 7468  ed, determine th\n+00014b40: 6520 6368 696c 6420 7275 6c65 2c20 7265  e child rule, re\n+00014b50: 7475 726e 696e 6720 6966 2069 7420 6d61  turning if it ma\n+00014b60: 7463 6865 7320 7061 7265 6e74 3c2f 7370  tches parent</sp\n+00014b70: 616e 3e3c 2f64 6976 3e0a 3c64 6976 2063  an></div>.<div c\n+00014b80: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n+00014b90: 643d 226c 3030 3530 3122 206e 616d 653d  d=\"l00501\" name=\n+00014ba0: 226c 3030 3530 3122 3e3c 2f61 3e3c 7370  \"l00501\"></a><sp\n+00014bb0: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n+00014bc0: 223e 2020 3530 313c 2f73 7061 6e3e 3c73  \">  501</span><s\n+00014bd0: 7061 6e20 636c 6173 733d 2263 6f6d 6d65  pan class=\"comme\n+00014be0: 6e74 223e 2f2f 2020 2020 2020 2d20 6173  nt\">//      - as\n+00014bf0: 7369 676e 206c 6f63 616c 206d 6173 6b20  sign local mask \n+00014c00: 666f 7220 6368 696c 6420 7275 6c65 3c2f  for child rule</\n+00014c10: 7370 616e 3e3c 2f64 6976 3e0a 3c64 6976  span></div>.<div\n+00014c20: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n+00014c30: 2069 643d 226c 3030 3530 3222 206e 616d   id=\"l00502\" nam\n+00014c40: 653d 226c 3030 3530 3222 3e3c 2f61 3e3c  e=\"l00502\"></a><\n+00014c50: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n+00014c60: 6e6f 223e 2020 3530 323c 2f73 7061 6e3e  no\">  502</span>\n+00014c70: 3c73 7061 6e20 636c 6173 733d 2263 6f6d  <span class=\"com\n+00014c80: 6d65 6e74 223e 2f2f 2020 2020 2020 2d20  ment\">//      - \n+00014c90: 636f 6d62 696e 6520 6c6f 6361 6c20 6368  combine local ch\n+00014ca0: 696c 6420 6d61 736b 2077 6974 6820 7468  ild mask with th\n+00014cb0: 6520 7061 7265 6e74 206d 6173 6b3c 2f73  e parent mask</s\n+00014cc0: 7061 6e3e 3c2f 6469 763e 0a3c 6469 7620  pan></div>.<div \n+00014cd0: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n+00014ce0: 6964 3d22 6c30 3035 3033 2220 6e61 6d65  id=\"l00503\" name\n+00014cf0: 3d22 6c30 3035 3033 223e 3c2f 613e 3c73  =\"l00503\"></a><s\n+00014d00: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n+00014d10: 6f22 3e20 2035 3033 3c2f 7370 616e 3e3c  o\">  503</span><\n+00014d20: 7370 616e 2063 6c61 7373 3d22 636f 6d6d  span class=\"comm\n+00014d30: 656e 7422 3e2f 2f3c 2f73 7061 6e3e 3c2f  ent\">//</span></\n+00014d40: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n+00014d50: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n+00014d60: 3035 3034 2220 6e61 6d65 3d22 6c30 3035  0504\" name=\"l005\n+00014d70: 3034 223e 3c2f 613e 3c73 7061 6e20 636c  04\"></a><span cl\n+00014d80: 6173 733d 226c 696e 656e 6f22 3e20 2035  ass=\"lineno\">  5\n+00014d90: 3034 3c2f 7370 616e 3e3c 7370 616e 2063  04</span><span c\n+00014da0: 6c61 7373 3d22 636f 6d6d 656e 7422 3e2f  lass=\"comment\">/\n+00014db0: 2f20 2052 656d 656d 6265 7220 2d2d 2069  /  Remember -- i\n+00014dc0: 6620 7468 6520 7061 7265 6e74 2072 756c  f the parent rul\n+00014dd0: 6520 6973 2073 7065 6369 6669 6564 2062  e is specified b\n+00014de0: 7574 2074 6865 2063 6869 6c64 2069 7320  ut the child is \n+00014df0: 6e6f 742c 2074 6869 7320 696d 706c 6965  not, this implie\n+00014e00: 7320 6f6e 6c79 206f 6e65 3c2f 7370 616e  s only one</span\n+00014e10: 3e3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ></div>.<div cla\n+00014e20: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n+00014e30: 226c 3030 3530 3522 206e 616d 653d 226c  \"l00505\" name=\"l\n+00014e40: 3030 3530 3522 3e3c 2f61 3e3c 7370 616e  00505\"></a><span\n+00014e50: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n+00014e60: 2020 3530 353c 2f73 7061 6e3e 3c73 7061    505</span><spa\n+00014e70: 6e20 636c 6173 733d 2263 6f6d 6d65 6e74  n class=\"comment\n+00014e80: 223e 2f2f 2020 6f66 2074 6865 2074 776f  \">//  of the two\n+00014e90: 206f 7074 696f 6e61 6c20 7275 6c65 7320   optional rules \n+00014ea0: 7761 7320 7370 6563 6966 6965 6420 616e  was specified an\n+00014eb0: 6420 6973 206d 6561 6e74 2074 6f20 696e  d is meant to in\n+00014ec0: 6469 6361 7465 2074 6865 7265 2069 7320  dicate there is \n+00014ed0: 6e6f 2074 7261 6e73 6974 696f 6e2c 3c2f  no transition,</\n+00014ee0: 7370 616e 3e3c 2f64 6976 3e0a 3c64 6976  span></div>.<div\n+00014ef0: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n+00014f00: 2069 643d 226c 3030 3530 3622 206e 616d   id=\"l00506\" nam\n+00014f10: 653d 226c 3030 3530 3622 3e3c 2f61 3e3c  e=\"l00506\"></a><\n+00014f20: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n+00014f30: 6e6f 223e 2020 3530 363c 2f73 7061 6e3e  no\">  506</span>\n+00014f40: 3c73 7061 6e20 636c 6173 733d 2263 6f6d  <span class=\"com\n+00014f50: 6d65 6e74 223e 2f2f 2020 736f 2074 6865  ment\">//  so the\n+00014f60: 2063 6869 6c64 2072 756c 6520 7368 6f75   child rule shou\n+00014f70: 6c64 2062 6520 6173 7369 676e 6564 2074  ld be assigned t\n+00014f80: 6f20 6265 2074 6865 2073 616d 6520 2877  o be the same (w\n+00014f90: 6973 6820 7468 6520 636f 6d70 696c 6572  ish the compiler\n+00014fa0: 2077 6f75 6c64 2061 6c6c 6f77 2074 6869   would allow thi\n+00014fb0: 733c 2f73 7061 6e3e 3c2f 6469 763e 0a3c  s</span></div>.<\n+00014fc0: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n+00014fd0: 3e3c 6120 6964 3d22 6c30 3035 3037 2220  ><a id=\"l00507\" \n+00014fe0: 6e61 6d65 3d22 6c30 3035 3037 223e 3c2f  name=\"l00507\"></\n+00014ff0: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n+00015000: 696e 656e 6f22 3e20 2035 3037 3c2f 7370  ineno\">  507</sp\n+00015010: 616e 3e3c 7370 616e 2063 6c61 7373 3d22  an><span class=\"\n+00015020: 636f 6d6d 656e 7422 3e2f 2f20 2069 6e20  comment\">//  in \n+00015030: 6465 6661 756c 7420 7661 6c75 6520 6173  default value as\n+00015040: 7369 676e 6d65 6e74 292e 3c2f 7370 616e  signment).</span\n+00015050: 3e3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ></div>.<div cla\n+00015060: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n+00015070: 226c 3030 3530 3822 206e 616d 653d 226c  \"l00508\" name=\"l\n+00015080: 3030 3530 3822 3e3c 2f61 3e3c 7370 616e  00508\"></a><span\n+00015090: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n+000150a0: 2020 3530 383c 2f73 7061 6e3e 3c73 7061    508</span><spa\n+000150b0: 6e20 636c 6173 733d 2263 6f6d 6d65 6e74  n class=\"comment\n+000150c0: 223e 2f2f 3c2f 7370 616e 3e3c 2f64 6976  \">//</span></div\n+000150d0: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n+000150e0: 6e65 223e 3c61 2069 643d 226c 3030 3530  ne\"><a id=\"l0050\n+000150f0: 3922 206e 616d 653d 226c 3030 3530 3922  9\" name=\"l00509\"\n+00015100: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n+00015110: 3d22 6c69 6e65 6e6f 223e 2020 3530 393c  =\"lineno\">  509<\n+00015120: 2f73 7061 6e3e 3c73 7061 6e20 636c 6173  /span><span clas\n+00015130: 733d 226b 6579 776f 7264 223e 7465 6d70  s=\"keyword\">temp\n+00015140: 6c61 7465 3c2f 7370 616e 3e20 266c 743b  late</span> &lt;\n+00015150: 5363 6865 6d65 5479 7065 2053 4348 454d  SchemeType SCHEM\n+00015160: 4526 6774 3b3c 2f64 6976 3e0a 3c64 6976  E&gt;</div>.<div\n+00015170: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n+00015180: 2069 643d 226c 3030 3531 3022 206e 616d   id=\"l00510\" nam\n+00015190: 653d 226c 3030 3531 3022 3e3c 2f61 3e3c  e=\"l00510\"></a><\n+000151a0: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n+000151b0: 6e6f 223e 2020 3531 303c 2f73 7061 6e3e  no\">  510</span>\n+000151c0: 3c73 7061 6e20 636c 6173 733d 226b 6579  <span class=\"key\n+000151d0: 776f 7264 223e 7465 6d70 6c61 7465 3c2f  word\">template</\n+000151e0: 7370 616e 3e20 266c 743b 3c73 7061 6e20  span> &lt;<span \n+000151f0: 636c 6173 733d 226b 6579 776f 7264 223e  class=\"keyword\">\n+00015200: 7479 7065 6e61 6d65 3c2f 7370 616e 3e20  typename</span> \n+00015210: 5645 5254 4558 2c20 3c73 7061 6e20 636c  VERTEX, <span cl\n+00015220: 6173 733d 226b 6579 776f 7264 223e 7479  ass=\"keyword\">ty\n+00015230: 7065 6e61 6d65 3c2f 7370 616e 3e20 4d41  pename</span> MA\n+00015240: 534b 2667 743b 3c2f 6469 763e 0a3c 6469  SK&gt;</div>.<di\n+00015250: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n+00015260: 6120 6964 3d22 6c30 3035 3131 2220 6e61  a id=\"l00511\" na\n+00015270: 6d65 3d22 6c30 3035 3131 223e 3c2f 613e  me=\"l00511\"></a>\n+00015280: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n+00015290: 656e 6f22 3e20 2035 3131 3c2f 7370 616e  eno\">  511</span\n+000152a0: 3e3c 7370 616e 2063 6c61 7373 3d22 6b65  ><span class=\"ke\n+000152b0: 7977 6f72 6474 7970 6522 3e76 6f69 643c  ywordtype\">void<\n+000152c0: 2f73 7061 6e3e 3c2f 6469 763e 0a3c 6469  /span></div>.<di\n+000152d0: 7620 636c 6173 733d 2266 6f6c 646f 7065  v class=\"foldope\n+000152e0: 6e22 2069 643d 2266 6f6c 646f 7065 6e30  n\" id=\"foldopen0\n+000152f0: 3035 3132 2220 6461 7461 2d73 7461 7274  0512\" data-start\n+00015300: 3d22 7b22 2064 6174 612d 656e 643d 227d  =\"{\" data-end=\"}\n+00015310: 223e 0a3c 6469 7620 636c 6173 733d 226c  \">.<div class=\"l\n+00015320: 696e 6522 3e3c 6120 6964 3d22 6c30 3035  ine\"><a id=\"l005\n+00015330: 3132 2220 6e61 6d65 3d22 6c30 3035 3132  12\" name=\"l00512\n+00015340: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n+00015350: 733d 226c 696e 656e 6f22 3e3c 6120 636c  s=\"lineno\"><a cl\n+00015360: 6173 733d 226c 696e 6522 2068 7265 663d  ass=\"line\" href=\n+00015370: 2261 3031 3334 312e 6874 6d6c 2361 3332  \"a01341.html#a32\n+00015380: 3863 6132 3665 3631 3432 3833 3863 3438  8ca26e6142838c48\n+00015390: 3434 6230 3334 3534 3666 6238 6337 223e  44b034546fb8c7\">\n+000153a0: 2020 3531 323c 2f61 3e3c 2f73 7061 6e3e    512</a></span>\n+000153b0: 3c61 2063 6c61 7373 3d22 636f 6465 2068  <a class=\"code h\n+000153c0: 6c5f 6675 6e63 7469 6f6e 2220 6872 6566  l_function\" href\n+000153d0: 3d22 6130 3133 3431 2e68 746d 6c23 6133  =\"a01341.html#a3\n+000153e0: 3238 6361 3236 6536 3134 3238 3338 6334  28ca26e6142838c4\n+000153f0: 3834 3462 3033 3435 3436 6662 3863 3722  844b034546fb8c7\"\n+00015400: 3e53 6368 656d 6526 6c74 3b53 4348 454d  >Scheme&lt;SCHEM\n+00015410: 4526 6774 3b3a 3a43 6f6d 7075 7465 5665  E&gt;::ComputeVe\n+00015420: 7274 6578 5665 7274 6578 4d61 736b 3c2f  rtexVertexMask</\n+00015430: 613e 2856 4552 5445 5820 3c73 7061 6e20  a>(VERTEX <span \n+00015440: 636c 6173 733d 226b 6579 776f 7264 223e  class=\"keyword\">\n+00015450: 636f 6e73 743c 2f73 7061 6e3e 2661 6d70  const</span>&amp\n+00015460: 3b20 2020 7665 7274 6578 2c3c 2f64 6976  ;   vertex,</div\n+00015470: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n+00015480: 6e65 223e 3c61 2069 643d 226c 3030 3531  ne\"><a id=\"l0051\n+00015490: 3322 206e 616d 653d 226c 3030 3531 3322  3\" name=\"l00513\"\n+000154a0: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n+000154b0: 3d22 6c69 6e65 6e6f 223e 2020 3531 333c  =\"lineno\">  513<\n+000154c0: 2f73 7061 6e3e 2020 2020 2020 2020 2020  /span>          \n+000154d0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000154e0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000154f0: 204d 4153 4b26 616d 703b 2020 2020 2020   MASK&amp;      \n+00015500: 2020 2020 206d 6173 6b2c 3c2f 6469 763e       mask,</div>\n+00015510: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n+00015520: 6522 3e3c 6120 6964 3d22 6c30 3035 3134  e\"><a id=\"l00514\n+00015530: 2220 6e61 6d65 3d22 6c30 3035 3134 223e  \" name=\"l00514\">\n+00015540: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n+00015550: 226c 696e 656e 6f22 3e20 2035 3134 3c2f  \"lineno\">  514</\n+00015560: 7370 616e 3e20 2020 2020 2020 2020 2020  span>           \n+00015570: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00015580: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00015590: 3c61 2063 6c61 7373 3d22 636f 6465 2068  <a class=\"code h\n+000155a0: 6c5f 656e 756d 6572 6174 696f 6e22 2068  l_enumeration\" h\n+000155b0: 7265 663d 2261 3031 3333 332e 6874 6d6c  ref=\"a01333.html\n+000155c0: 2361 3131 6663 6435 3165 6638 3631 3138  #a11fcd51ef86118\n+000155d0: 6636 3565 3630 3363 3134 3734 3337 3761  f65e603c1474377a\n+000155e0: 3738 223e 4372 6561 7365 3a3a 5275 6c65  78\">Crease::Rule\n+000155f0: 3c2f 613e 2070 5275 6c65 2c3c 2f64 6976  </a> pRule,</div\n+00015600: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n+00015610: 6e65 223e 3c61 2069 643d 226c 3030 3531  ne\"><a id=\"l0051\n+00015620: 3522 206e 616d 653d 226c 3030 3531 3522  5\" name=\"l00515\"\n+00015630: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n+00015640: 3d22 6c69 6e65 6e6f 223e 2020 3531 353c  =\"lineno\">  515<\n+00015650: 2f73 7061 6e3e 2020 2020 2020 2020 2020  /span>          \n+00015660: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00015670: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00015680: 203c 6120 636c 6173 733d 2263 6f64 6520   <a class=\"code \n+00015690: 686c 5f65 6e75 6d65 7261 7469 6f6e 2220  hl_enumeration\" \n+000156a0: 6872 6566 3d22 6130 3133 3333 2e68 746d  href=\"a01333.htm\n+000156b0: 6c23 6131 3166 6364 3531 6566 3836 3131  l#a11fcd51ef8611\n+000156c0: 3866 3635 6536 3033 6331 3437 3433 3737  8f65e603c1474377\n+000156d0: 6137 3822 3e43 7265 6173 653a 3a52 756c  a78\">Crease::Rul\n+000156e0: 653c 2f61 3e20 6352 756c 6529 3c73 7061  e</a> cRule)<spa\n+000156f0: 6e20 636c 6173 733d 226b 6579 776f 7264  n class=\"keyword\n+00015700: 223e 2063 6f6e 7374 203c 2f73 7061 6e3e  \"> const </span>\n+00015710: 7b3c 2f64 6976 3e0a 3c64 6976 2063 6c61  {</div>.<div cla\n+00015720: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n+00015730: 226c 3030 3531 3622 206e 616d 653d 226c  \"l00516\" name=\"l\n+00015740: 3030 3531 3622 3e3c 2f61 3e3c 7370 616e  00516\"></a><span\n+00015750: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n+00015760: 2020 3531 363c 2f73 7061 6e3e 203c 2f64    516</span> </d\n+00015770: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n+00015780: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n+00015790: 3531 3722 206e 616d 653d 226c 3030 3531  517\" name=\"l0051\n+000157a0: 3722 3e3c 2f61 3e3c 7370 616e 2063 6c61  7\"></a><span cla\n+000157b0: 7373 3d22 6c69 6e65 6e6f 223e 2020 3531  ss=\"lineno\">  51\n+000157c0: 373c 2f73 7061 6e3e 2020 2020 3c73 7061  7</span>    <spa\n+000157d0: 6e20 636c 6173 733d 2263 6f6d 6d65 6e74  n class=\"comment\n+000157e0: 223e 2f2f 2020 5175 6963 6b20 6173 7369  \">//  Quick assi\n+000157f0: 676e 6d65 6e74 2061 6e64 2072 6574 7572  gnment and retur\n+00015800: 6e20 666f 7220 7468 6520 6d6f 7374 2063  n for the most c\n+00015810: 6f6d 6d6f 6e20 6361 7365 3a3c 2f73 7061  ommon case:</spa\n+00015820: 6e3e 3c2f 6469 763e 0a3c 6469 7620 636c  n></div>.<div cl\n+00015830: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n+00015840: 3d22 6c30 3035 3138 2220 6e61 6d65 3d22  =\"l00518\" name=\"\n+00015850: 6c30 3035 3138 223e 3c2f 613e 3c73 7061  l00518\"></a><spa\n+00015860: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n+00015870: 3e20 2035 3138 3c2f 7370 616e 3e20 2020  >  518</span>   \n+00015880: 203c 7370 616e 2063 6c61 7373 3d22 6b65   <span class=\"ke\n+00015890: 7977 6f72 6466 6c6f 7722 3e69 663c 2f73  ywordflow\">if</s\n+000158a0: 7061 6e3e 2028 2870 5275 6c65 203d 3d20  pan> ((pRule == \n+000158b0: 3c61 2063 6c61 7373 3d22 636f 6465 2068  <a class=\"code h\n+000158c0: 6c5f 656e 756d 7661 6c75 6522 2068 7265  l_enumvalue\" hre\n+000158d0: 663d 2261 3031 3333 332e 6874 6d6c 2361  f=\"a01333.html#a\n+000158e0: 3131 6663 6435 3165 6638 3631 3138 6636  11fcd51ef86118f6\n+000158f0: 3565 3630 3363 3134 3734 3337 3761 3738  5e603c1474377a78\n+00015900: 6136 3164 3133 3766 3836 3639 3937 6564  a61d137f866997ed\n+00015910: 3336 3933 6533 6663 6164 3736 6465 6635  3693e3fcad76def5\n+00015920: 6622 3e43 7265 6173 653a 3a52 554c 455f  f\">Crease::RULE_\n+00015930: 534d 4f4f 5448 3c2f 613e 2920 7c7c 2028  SMOOTH</a>) || (\n+00015940: 7052 756c 6520 3d3d 203c 6120 636c 6173  pRule == <a clas\n+00015950: 733d 2263 6f64 6520 686c 5f65 6e75 6d76  s=\"code hl_enumv\n+00015960: 616c 7565 2220 6872 6566 3d22 6130 3133  alue\" href=\"a013\n+00015970: 3333 2e68 746d 6c23 6131 3166 6364 3531  33.html#a11fcd51\n+00015980: 6566 3836 3131 3866 3635 6536 3033 6331  ef86118f65e603c1\n+00015990: 3437 3433 3737 6137 3861 3433 3436 3963  474377a78a43469c\n+000159a0: 3239 6438 3537 3961 3633 6263 3164 3632  29d8579a63bc1d62\n+000159b0: 3437 6432 3632 3437 3939 223e 4372 6561  47d2624799\">Crea\n+000159c0: 7365 3a3a 5255 4c45 5f44 4152 543c 2f61  se::RULE_DART</a\n+000159d0: 3e29 2920 7b3c 2f64 6976 3e0a 3c64 6976  >)) {</div>.<div\n+000159e0: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n+000159f0: 2069 643d 226c 3030 3531 3922 206e 616d   id=\"l00519\" nam\n+00015a00: 653d 226c 3030 3531 3922 3e3c 2f61 3e3c  e=\"l00519\"></a><\n+00015a10: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n+00015a20: 6e6f 223e 2020 3531 393c 2f73 7061 6e3e  no\">  519</span>\n+00015a30: 2020 2020 2020 2020 6173 7369 676e 536d          assignSm\n+00015a40: 6f6f 7468 4d61 736b 466f 7256 6572 7465  oothMaskForVerte\n+00015a50: 7828 7665 7274 6578 2c20 6d61 736b 293b  x(vertex, mask);\n+00015a60: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n+00015a70: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n+00015a80: 6c30 3035 3230 2220 6e61 6d65 3d22 6c30  l00520\" name=\"l0\n+00015a90: 3035 3230 223e 3c2f 613e 3c73 7061 6e20  0520\"></a><span \n+00015aa0: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n+00015ab0: 2035 3230 3c2f 7370 616e 3e20 2020 2020   520</span>     \n+00015ac0: 2020 203c 7370 616e 2063 6c61 7373 3d22     <span class=\"\n+00015ad0: 6b65 7977 6f72 6466 6c6f 7722 3e72 6574  keywordflow\">ret\n+00015ae0: 7572 6e3c 2f73 7061 6e3e 3b3c 2f64 6976  urn</span>;</div\n+00015af0: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n+00015b00: 6e65 223e 3c61 2069 643d 226c 3030 3532  ne\"><a id=\"l0052\n+00015b10: 3122 206e 616d 653d 226c 3030 3532 3122  1\" name=\"l00521\"\n+00015b20: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n+00015b30: 3d22 6c69 6e65 6e6f 223e 2020 3532 313c  =\"lineno\">  521<\n+00015b40: 2f73 7061 6e3e 2020 2020 7d3c 2f64 6976  /span>    }</div\n+00015b50: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n+00015b60: 6e65 223e 3c61 2069 643d 226c 3030 3532  ne\"><a id=\"l0052\n+00015b70: 3222 206e 616d 653d 226c 3030 3532 3222  2\" name=\"l00522\"\n+00015b80: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n+00015b90: 3d22 6c69 6e65 6e6f 223e 2020 3532 323c  =\"lineno\">  522<\n+00015ba0: 2f73 7061 6e3e 2020 2020 3c73 7061 6e20  /span>    <span \n+00015bb0: 636c 6173 733d 2263 6f6d 6d65 6e74 223e  class=\"comment\">\n+00015bc0: 2f2f 2020 4966 2075 6e73 7065 6369 6669  //  If unspecifi\n+00015bd0: 6564 2c20 6173 7369 676e 2074 6865 2063  ed, assign the c\n+00015be0: 6869 6c64 2072 756c 6520 746f 206d 6174  hild rule to mat\n+00015bf0: 6368 2074 6865 2070 6172 656e 7420 7275  ch the parent ru\n+00015c00: 6c65 2069 6620 7370 6563 6966 6965 643a  le if specified:\n+00015c10: 3c2f 7370 616e 3e3c 2f64 6976 3e0a 3c64  </span></div>.<d\n+00015c20: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n+00015c30: 3c61 2069 643d 226c 3030 3532 3322 206e  <a id=\"l00523\" n\n+00015c40: 616d 653d 226c 3030 3532 3322 3e3c 2f61  ame=\"l00523\"></a\n+00015c50: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n+00015c60: 6e65 6e6f 223e 2020 3532 333c 2f73 7061  neno\">  523</spa\n+00015c70: 6e3e 2020 2020 3c73 7061 6e20 636c 6173  n>    <span clas\n+00015c80: 733d 226b 6579 776f 7264 666c 6f77 223e  s=\"keywordflow\">\n+00015c90: 6966 3c2f 7370 616e 3e20 2828 6352 756c  if</span> ((cRul\n+00015ca0: 6520 3d3d 203c 6120 636c 6173 733d 2263  e == <a class=\"c\n+00015cb0: 6f64 6520 686c 5f65 6e75 6d76 616c 7565  ode hl_enumvalue\n+00015cc0: 2220 6872 6566 3d22 6130 3133 3333 2e68  \" href=\"a01333.h\n+00015cd0: 746d 6c23 6131 3166 6364 3531 6566 3836  tml#a11fcd51ef86\n+00015ce0: 3131 3866 3635 6536 3033 6331 3437 3433  118f65e603c14743\n+00015cf0: 3737 6137 3861 6232 3939 6165 6662 3236  77a78ab299aefb26\n+00015d00: 3031 3361 3739 6435 3231 3931 6137 3838  013a79d52191a788\n+00015d10: 3766 6561 3533 223e 4372 6561 7365 3a3a  7fea53\">Crease::\n+00015d20: 5255 4c45 5f55 4e4b 4e4f 574e 3c2f 613e  RULE_UNKNOWN</a>\n+00015d30: 2920 2661 6d70 3b26 616d 703b 2028 7052  ) &amp;&amp; (pR\n+00015d40: 756c 6520 213d 203c 6120 636c 6173 733d  ule != <a class=\n+00015d50: 2263 6f64 6520 686c 5f65 6e75 6d76 616c  \"code hl_enumval\n+00015d60: 7565 2220 6872 6566 3d22 6130 3133 3333  ue\" href=\"a01333\n+00015d70: 2e68 746d 6c23 6131 3166 6364 3531 6566  .html#a11fcd51ef\n+00015d80: 3836 3131 3866 3635 6536 3033 6331 3437  86118f65e603c147\n+00015d90: 3433 3737 6137 3861 6232 3939 6165 6662  4377a78ab299aefb\n+00015da0: 3236 3031 3361 3739 6435 3231 3931 6137  26013a79d52191a7\n+00015db0: 3838 3766 6561 3533 223e 4372 6561 7365  887fea53\">Crease\n+00015dc0: 3a3a 5255 4c45 5f55 4e4b 4e4f 574e 3c2f  ::RULE_UNKNOWN</\n+00015dd0: 613e 2929 207b 3c2f 6469 763e 0a3c 6469  a>)) {</div>.<di\n+00015de0: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n+00015df0: 6120 6964 3d22 6c30 3035 3234 2220 6e61  a id=\"l00524\" na\n+00015e00: 6d65 3d22 6c30 3035 3234 223e 3c2f 613e  me=\"l00524\"></a>\n+00015e10: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n+00015e20: 656e 6f22 3e20 2035 3234 3c2f 7370 616e  eno\">  524</span\n+00015e30: 3e20 2020 2020 2020 2063 5275 6c65 203d  >        cRule =\n+00015e40: 2070 5275 6c65 3b3c 2f64 6976 3e0a 3c64   pRule;</div>.<d\n+00015e50: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n+00015e60: 3c61 2069 643d 226c 3030 3532 3522 206e  <a id=\"l00525\" n\n+00015e70: 616d 653d 226c 3030 3532 3522 3e3c 2f61  ame=\"l00525\"></a\n+00015e80: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n+00015e90: 6e65 6e6f 223e 2020 3532 353c 2f73 7061  neno\">  525</spa\n+00015ea0: 6e3e 2020 2020 7d3c 2f64 6976 3e0a 3c64  n>    }</div>.<d\n+00015eb0: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n+00015ec0: 3c61 2069 643d 226c 3030 3532 3622 206e  <a id=\"l00526\" n\n+00015ed0: 616d 653d 226c 3030 3532 3622 3e3c 2f61  ame=\"l00526\"></a\n+00015ee0: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n+00015ef0: 6e65 6e6f 223e 2020 3532 363c 2f73 7061  neno\">  526</spa\n+00015f00: 6e3e 2020 2020 3c73 7061 6e20 636c 6173  n>    <span clas\n+00015f10: 733d 226b 6579 776f 7264 7479 7065 223e  s=\"keywordtype\">\n+00015f20: 696e 743c 2f73 7061 6e3e 2076 616c 656e  int</span> valen\n+00015f30: 6365 203d 2076 6572 7465 782e 4765 744e  ce = vertex.GetN\n+00015f40: 756d 4564 6765 7328 293b 3c2f 6469 763e  umEdges();</div>\n+00015f50: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n+00015f60: 6522 3e3c 6120 6964 3d22 6c30 3035 3237  e\"><a id=\"l00527\n+00015f70: 2220 6e61 6d65 3d22 6c30 3035 3237 223e  \" name=\"l00527\">\n+00015f80: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n+00015f90: 226c 696e 656e 6f22 3e20 2035 3237 3c2f  \"lineno\">  527</\n+00015fa0: 7370 616e 3e20 3c2f 6469 763e 0a3c 6469  span> </div>.<di\n+00015fb0: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n+00015fc0: 6120 6964 3d22 6c30 3035 3238 2220 6e61  a id=\"l00528\" na\n+00015fd0: 6d65 3d22 6c30 3035 3238 223e 3c2f 613e  me=\"l00528\"></a>\n+00015fe0: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n+00015ff0: 656e 6f22 3e20 2035 3238 3c2f 7370 616e  eno\">  528</span\n+00016000: 3e20 2020 203c 7370 616e 2063 6c61 7373  >    <span class\n+00016010: 3d22 636f 6d6d 656e 7422 3e2f 2f3c 2f73  =\"comment\">//</s\n+00016020: 7061 6e3e 3c2f 6469 763e 0a3c 6469 7620  pan></div>.<div \n+00016030: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n+00016040: 6964 3d22 6c30 3035 3239 2220 6e61 6d65  id=\"l00529\" name\n+00016050: 3d22 6c30 3035 3239 223e 3c2f 613e 3c73  =\"l00529\"></a><s\n+00016060: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n+00016070: 6f22 3e20 2035 3239 3c2f 7370 616e 3e20  o\">  529</span> \n+00016080: 2020 203c 7370 616e 2063 6c61 7373 3d22     <span class=\"\n+00016090: 636f 6d6d 656e 7422 3e2f 2f20 2044 6574  comment\">//  Det\n+000160a0: 6572 6d69 6e65 2069 6620 7765 206e 6565  ermine if we nee\n+000160b0: 6420 7468 6520 7061 7265 6e74 2065 6467  d the parent edg\n+000160c0: 6520 7368 6172 706e 6573 7320 7661 6c75  e sharpness valu\n+000160d0: 6573 202d 2d20 6964 656e 7469 6679 2f67  es -- identify/g\n+000160e0: 6174 6865 7220 6966 2073 6f3c 2f73 7061  ather if so</spa\n+000160f0: 6e3e 3c2f 6469 763e 0a3c 6469 7620 636c  n></div>.<div cl\n+00016100: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n+00016110: 3d22 6c30 3035 3330 2220 6e61 6d65 3d22  =\"l00530\" name=\"\n+00016120: 6c30 3035 3330 223e 3c2f 613e 3c73 7061  l00530\"></a><spa\n+00016130: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n+00016140: 3e20 2035 3330 3c2f 7370 616e 3e20 2020  >  530</span>   \n+00016150: 203c 7370 616e 2063 6c61 7373 3d22 636f   <span class=\"co\n+00016160: 6d6d 656e 7422 3e2f 2f20 2061 6e64 2075  mment\">//  and u\n+00016170: 7365 2069 7420 746f 2063 6f6d 7075 7465  se it to compute\n+00016180: 2074 6865 2070 6172 656e 7420 7275 6c65   the parent rule\n+00016190: 2069 6620 756e 7370 6563 6966 6965 643a   if unspecified:\n+000161a0: 3c2f 7370 616e 3e3c 2f64 6976 3e0a 3c64  </span></div>.<d\n+000161b0: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n+000161c0: 3c61 2069 643d 226c 3030 3533 3122 206e  <a id=\"l00531\" n\n+000161d0: 616d 653d 226c 3030 3533 3122 3e3c 2f61  ame=\"l00531\"></a\n+000161e0: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n+000161f0: 6e65 6e6f 223e 2020 3533 313c 2f73 7061  neno\">  531</spa\n+00016200: 6e3e 2020 2020 3c73 7061 6e20 636c 6173  n>    <span clas\n+00016210: 733d 2263 6f6d 6d65 6e74 223e 2f2f 3c2f  s=\"comment\">//</\n+00016220: 7370 616e 3e3c 2f64 6976 3e0a 3c64 6976  span></div>.<div\n+00016230: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n+00016240: 2069 643d 226c 3030 3533 3222 206e 616d   id=\"l00532\" nam\n+00016250: 653d 226c 3030 3533 3222 3e3c 2f61 3e3c  e=\"l00532\"></a><\n+00016260: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n+00016270: 6e6f 223e 2020 3533 323c 2f73 7061 6e3e  no\">  532</span>\n+00016280: 2020 2020 3c73 7061 6e20 636c 6173 733d      <span class=\n+00016290: 226b 6579 776f 7264 7479 7065 223e 666c  \"keywordtype\">fl\n+000162a0: 6f61 743c 2f73 7061 6e3e 202a 2070 4564  oat</span> * pEd\n+000162b0: 6765 5368 6172 706e 6573 7342 7566 6665  geSharpnessBuffe\n+000162c0: 7220 3d20 283c 7370 616e 2063 6c61 7373  r = (<span class\n+000162d0: 3d22 6b65 7977 6f72 6474 7970 6522 3e66  =\"keywordtype\">f\n+000162e0: 6c6f 6174 3c2f 7370 616e 3e20 2a29 616c  loat</span> *)al\n+000162f0: 6c6f 6361 2876 616c 656e 6365 2a3c 7370  loca(valence*<sp\n+00016300: 616e 2063 6c61 7373 3d22 6b65 7977 6f72  an class=\"keywor\n+00016310: 6422 3e73 697a 656f 663c 2f73 7061 6e3e  d\">sizeof</span>\n+00016320: 283c 7370 616e 2063 6c61 7373 3d22 6b65  (<span class=\"ke\n+00016330: 7977 6f72 6474 7970 6522 3e66 6c6f 6174  ywordtype\">float\n+00016340: 3c2f 7370 616e 3e29 292c 3c2f 6469 763e  </span>)),</div>\n+00016350: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n+00016360: 6522 3e3c 6120 6964 3d22 6c30 3035 3333  e\"><a id=\"l00533\n+00016370: 2220 6e61 6d65 3d22 6c30 3035 3333 223e  \" name=\"l00533\">\n+00016380: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n+00016390: 226c 696e 656e 6f22 3e20 2035 3333 3c2f  \"lineno\">  533</\n+000163a0: 7370 616e 3e20 2020 2020 2020 2020 202a  span>          *\n+000163b0: 2070 4564 6765 5368 6172 706e 6573 7320   pEdgeSharpness \n+000163c0: 2020 3d20 302c 3c2f 6469 763e 0a3c 6469    = 0,</div>.<di\n+000163d0: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n+000163e0: 6120 6964 3d22 6c30 3035 3334 2220 6e61  a id=\"l00534\" na\n+000163f0: 6d65 3d22 6c30 3035 3334 223e 3c2f 613e  me=\"l00534\"></a>\n+00016400: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n+00016410: 656e 6f22 3e20 2035 3334 3c2f 7370 616e  eno\">  534</span\n+00016420: 3e20 2020 2020 2020 2020 2020 2070 5665  >            pVe\n+00016430: 7274 6578 5368 6172 706e 6573 7320 3d20  rtexSharpness = \n+00016440: 302e 3066 3b3c 2f64 6976 3e0a 3c64 6976  0.0f;</div>.<div\n+00016450: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n+00016460: 2069 643d 226c 3030 3533 3522 206e 616d   id=\"l00535\" nam\n+00016470: 653d 226c 3030 3533 3522 3e3c 2f61 3e3c  e=\"l00535\"></a><\n+00016480: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n+00016490: 6e6f 223e 2020 3533 353c 2f73 7061 6e3e  no\">  535</span>\n+000164a0: 203c 2f64 6976 3e0a 3c64 6976 2063 6c61   </div>.<div cla\n+000164b0: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n+000164c0: 226c 3030 3533 3622 206e 616d 653d 226c  \"l00536\" name=\"l\n+000164d0: 3030 3533 3622 3e3c 2f61 3e3c 7370 616e  00536\"></a><span\n+000164e0: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n+000164f0: 2020 3533 363c 2f73 7061 6e3e 2020 2020    536</span>    \n+00016500: 3c73 7061 6e20 636c 6173 733d 226b 6579  <span class=\"key\n+00016510: 776f 7264 7479 7065 223e 626f 6f6c 3c2f  wordtype\">bool</\n+00016520: 7370 616e 3e20 7265 7175 6972 6550 6172  span> requirePar\n+00016530: 656e 7453 6861 7270 6e65 7373 203d 2028  entSharpness = (\n+00016540: 7052 756c 6520 3d3d 203c 6120 636c 6173  pRule == <a clas\n+00016550: 733d 2263 6f64 6520 686c 5f65 6e75 6d76  s=\"code hl_enumv\n+00016560: 616c 7565 2220 6872 6566 3d22 6130 3133  alue\" href=\"a013\n+00016570: 3333 2e68 746d 6c23 6131 3166 6364 3531  33.html#a11fcd51\n+00016580: 6566 3836 3131 3866 3635 6536 3033 6331  ef86118f65e603c1\n+00016590: 3437 3433 3737 6137 3861 6232 3939 6165  474377a78ab299ae\n+000165a0: 6662 3236 3031 3361 3739 6435 3231 3931  fb26013a79d52191\n+000165b0: 6137 3838 3766 6561 3533 223e 4372 6561  a7887fea53\">Crea\n+000165c0: 7365 3a3a 5255 4c45 5f55 4e4b 4e4f 574e  se::RULE_UNKNOWN\n+000165d0: 3c2f 613e 2920 7c7c 3c2f 6469 763e 0a3c  </a>) ||</div>.<\n+000165e0: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n+000165f0: 3e3c 6120 6964 3d22 6c30 3035 3337 2220  ><a id=\"l00537\" \n+00016600: 6e61 6d65 3d22 6c30 3035 3337 223e 3c2f  name=\"l00537\"></\n+00016610: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n+00016620: 696e 656e 6f22 3e20 2035 3337 3c2f 7370  ineno\">  537</sp\n+00016630: 616e 3e20 2020 2020 2020 2020 2020 2020  an>             \n+00016640: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00016650: 2020 2020 2028 7052 756c 6520 3d3d 203c       (pRule == <\n+00016660: 6120 636c 6173 733d 2263 6f64 6520 686c  a class=\"code hl\n+00016670: 5f65 6e75 6d76 616c 7565 2220 6872 6566  _enumvalue\" href\n+00016680: 3d22 6130 3133 3333 2e68 746d 6c23 6131  =\"a01333.html#a1\n+00016690: 3166 6364 3531 6566 3836 3131 3866 3635  1fcd51ef86118f65\n+000166a0: 6536 3033 6331 3437 3433 3737 6137 3861  e603c1474377a78a\n+000166b0: 3936 3666 6131 6165 3861 6562 3835 3837  966fa1ae8aeb8587\n+000166c0: 6334 3938 6366 3661 3932 6363 3333 3335  c498cf6a92cc3335\n+000166d0: 223e 4372 6561 7365 3a3a 5255 4c45 5f43  \">Crease::RULE_C\n+000166e0: 5245 4153 453c 2f61 3e29 207c 7c3c 2f64  REASE</a>) ||</d\n+000166f0: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n+00016700: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n+00016710: 3533 3822 206e 616d 653d 226c 3030 3533  538\" name=\"l0053\n+00016720: 3822 3e3c 2f61 3e3c 7370 616e 2063 6c61  8\"></a><span cla\n+00016730: 7373 3d22 6c69 6e65 6e6f 223e 2020 3533  ss=\"lineno\">  53\n+00016740: 383c 2f73 7061 6e3e 2020 2020 2020 2020  8</span>        \n+00016750: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00016760: 2020 2020 2020 2020 2020 2870 5275 6c65            (pRule\n+00016770: 2021 3d20 6352 756c 6529 3b3c 2f64 6976   != cRule);</div\n+00016780: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n+00016790: 6e65 223e 3c61 2069 643d 226c 3030 3533  ne\"><a id=\"l0053\n+000167a0: 3922 206e 616d 653d 226c 3030 3533 3922  9\" name=\"l00539\"\n+000167b0: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n+000167c0: 3d22 6c69 6e65 6e6f 223e 2020 3533 393c  =\"lineno\">  539<\n+000167d0: 2f73 7061 6e3e 2020 2020 3c73 7061 6e20  /span>    <span \n+000167e0: 636c 6173 733d 226b 6579 776f 7264 666c  class=\"keywordfl\n+000167f0: 6f77 223e 6966 3c2f 7370 616e 3e20 2872  ow\">if</span> (r\n+00016800: 6571 7569 7265 5061 7265 6e74 5368 6172  equireParentShar\n+00016810: 706e 6573 7329 207b 3c2f 6469 763e 0a3c  pness) {</div>.<\n+00016820: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n+00016830: 3e3c 6120 6964 3d22 6c30 3035 3430 2220  ><a id=\"l00540\" \n+00016840: 6e61 6d65 3d22 6c30 3035 3430 223e 3c2f  name=\"l00540\"></\n+00016850: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n+00016860: 696e 656e 6f22 3e20 2035 3430 3c2f 7370  ineno\">  540</sp\n+00016870: 616e 3e20 2020 2020 2020 2070 5665 7274  an>        pVert\n+00016880: 6578 5368 6172 706e 6573 7320 3d20 7665  exSharpness = ve\n+00016890: 7274 6578 2e47 6574 5368 6172 706e 6573  rtex.GetSharpnes\n+000168a0: 7328 293b 3c2f 6469 763e 0a3c 6469 7620  s();</div>.<div \n+000168b0: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n+000168c0: 6964 3d22 6c30 3035 3431 2220 6e61 6d65  id=\"l00541\" name\n+000168d0: 3d22 6c30 3035 3431 223e 3c2f 613e 3c73  =\"l00541\"></a><s\n+000168e0: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n+000168f0: 6f22 3e20 2035 3431 3c2f 7370 616e 3e20  o\">  541</span> \n+00016900: 2020 2020 2020 2070 4564 6765 5368 6172         pEdgeShar\n+00016910: 706e 6573 7320 2020 3d20 7665 7274 6578  pness   = vertex\n+00016920: 2e47 6574 5368 6172 706e 6573 7350 6572  .GetSharpnessPer\n+00016930: 4564 6765 2870 4564 6765 5368 6172 706e  Edge(pEdgeSharpn\n+00016940: 6573 7342 7566 6665 7229 3b3c 2f64 6976  essBuffer);</div\n+00016950: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n+00016960: 6e65 223e 3c61 2069 643d 226c 3030 3534  ne\"><a id=\"l0054\n+00016970: 3222 206e 616d 653d 226c 3030 3534 3222  2\" name=\"l00542\"\n+00016980: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n+00016990: 3d22 6c69 6e65 6e6f 223e 2020 3534 323c  =\"lineno\">  542<\n+000169a0: 2f73 7061 6e3e 203c 2f64 6976 3e0a 3c64  /span> </div>.<d\n+000169b0: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n+000169c0: 3c61 2069 643d 226c 3030 3534 3322 206e  <a id=\"l00543\" n\n+000169d0: 616d 653d 226c 3030 3534 3322 3e3c 2f61  ame=\"l00543\"></a\n+000169e0: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n+000169f0: 6e65 6e6f 223e 2020 3534 333c 2f73 7061  neno\">  543</spa\n+00016a00: 6e3e 2020 2020 2020 2020 3c73 7061 6e20  n>        <span \n+00016a10: 636c 6173 733d 226b 6579 776f 7264 666c  class=\"keywordfl\n+00016a20: 6f77 223e 6966 3c2f 7370 616e 3e20 2870  ow\">if</span> (p\n+00016a30: 5275 6c65 203d 3d20 3c61 2063 6c61 7373  Rule == <a class\n+00016a40: 3d22 636f 6465 2068 6c5f 656e 756d 7661  =\"code hl_enumva\n+00016a50: 6c75 6522 2068 7265 663d 2261 3031 3333  lue\" href=\"a0133\n+00016a60: 332e 6874 6d6c 2361 3131 6663 6435 3165  3.html#a11fcd51e\n+00016a70: 6638 3631 3138 6636 3565 3630 3363 3134  f86118f65e603c14\n+00016a80: 3734 3337 3761 3738 6162 3239 3961 6566  74377a78ab299aef\n+00016a90: 6232 3630 3133 6137 3964 3532 3139 3161  b26013a79d52191a\n+00016aa0: 3738 3837 6665 6135 3322 3e43 7265 6173  7887fea53\">Creas\n+00016ab0: 653a 3a52 554c 455f 554e 4b4e 4f57 4e3c  e::RULE_UNKNOWN<\n+00016ac0: 2f61 3e29 207b 3c2f 6469 763e 0a3c 6469  /a>) {</div>.<di\n+00016ad0: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n+00016ae0: 6120 6964 3d22 6c30 3035 3434 2220 6e61  a id=\"l00544\" na\n+00016af0: 6d65 3d22 6c30 3035 3434 223e 3c2f 613e  me=\"l00544\"></a>\n+00016b00: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n+00016b10: 656e 6f22 3e20 2035 3434 3c2f 7370 616e  eno\">  544</span\n+00016b20: 3e20 2020 2020 2020 2020 2020 2070 5275  >            pRu\n+00016b30: 6c65 203d 203c 6120 636c 6173 733d 2263  le = <a class=\"c\n+00016b40: 6f64 6520 686c 5f63 6c61 7373 2220 6872  ode hl_class\" hr\n+00016b50: 6566 3d22 6130 3133 3333 2e68 746d 6c22  ef=\"a01333.html\"\n+00016b60: 3e43 7265 6173 653c 2f61 3e28 5f6f 7074  >Crease</a>(_opt\n+00016b70: 696f 6e73 292e 3c61 2063 6c61 7373 3d22  ions).<a class=\"\n+00016b80: 636f 6465 2068 6c5f 6675 6e63 7469 6f6e  code hl_function\n+00016b90: 2220 6872 6566 3d22 6130 3133 3333 2e68  \" href=\"a01333.h\n+00016ba0: 746d 6c23 6134 3165 6262 3735 6432 3863  tml#a41ebb75d28c\n+00016bb0: 3539 3733 3332 3865 3065 3338 3833 3439  5973328e0e388349\n+00016bc0: 3561 6562 6122 3e44 6574 6572 6d69 6e65  5aeba\">Determine\n+00016bd0: 5665 7274 6578 5665 7274 6578 5275 6c65  VertexVertexRule\n+00016be0: 3c2f 613e 2870 5665 7274 6578 5368 6172  </a>(pVertexShar\n+00016bf0: 706e 6573 732c 2076 616c 656e 6365 2c20  pness, valence, \n+00016c00: 7045 6467 6553 6861 7270 6e65 7373 293b  pEdgeSharpness);\n+00016c10: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n+00016c20: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n+00016c30: 6c30 3035 3435 2220 6e61 6d65 3d22 6c30  l00545\" name=\"l0\n+00016c40: 3035 3435 223e 3c2f 613e 3c73 7061 6e20  0545\"></a><span \n+00016c50: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n+00016c60: 2035 3435 3c2f 7370 616e 3e20 2020 2020   545</span>     \n+00016c70: 2020 207d 3c2f 6469 763e 0a3c 6469 7620     }</div>.<div \n+00016c80: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n+00016c90: 6964 3d22 6c30 3035 3436 2220 6e61 6d65  id=\"l00546\" name\n+00016ca0: 3d22 6c30 3035 3436 223e 3c2f 613e 3c73  =\"l00546\"></a><s\n+00016cb0: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n+00016cc0: 6f22 3e20 2035 3436 3c2f 7370 616e 3e20  o\">  546</span> \n+00016cd0: 2020 207d 3c2f 6469 763e 0a3c 6469 7620     }</div>.<div \n+00016ce0: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n+00016cf0: 6964 3d22 6c30 3035 3437 2220 6e61 6d65  id=\"l00547\" name\n+00016d00: 3d22 6c30 3035 3437 223e 3c2f 613e 3c73  =\"l00547\"></a><s\n+00016d10: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n+00016d20: 6f22 3e20 2035 3437 3c2f 7370 616e 3e20  o\">  547</span> \n+00016d30: 2020 203c 7370 616e 2063 6c61 7373 3d22     <span class=\"\n+00016d40: 6b65 7977 6f72 6466 6c6f 7722 3e69 663c  keywordflow\">if<\n+00016d50: 2f73 7061 6e3e 2028 2870 5275 6c65 203d  /span> ((pRule =\n+00016d60: 3d20 3c61 2063 6c61 7373 3d22 636f 6465  = <a class=\"code\n+00016d70: 2068 6c5f 656e 756d 7661 6c75 6522 2068   hl_enumvalue\" h\n+00016d80: 7265 663d 2261 3031 3333 332e 6874 6d6c  ref=\"a01333.html\n+00016d90: 2361 3131 6663 6435 3165 6638 3631 3138  #a11fcd51ef86118\n+00016da0: 6636 3565 3630 3363 3134 3734 3337 3761  f65e603c1474377a\n+00016db0: 3738 6136 3164 3133 3766 3836 3639 3937  78a61d137f866997\n+00016dc0: 6564 3336 3933 6533 6663 6164 3736 6465  ed3693e3fcad76de\n+00016dd0: 6635 6622 3e43 7265 6173 653a 3a52 554c  f5f\">Crease::RUL\n+00016de0: 455f 534d 4f4f 5448 3c2f 613e 2920 7c7c  E_SMOOTH</a>) ||\n+00016df0: 2028 7052 756c 6520 3d3d 203c 6120 636c   (pRule == <a cl\n+00016e00: 6173 733d 2263 6f64 6520 686c 5f65 6e75  ass=\"code hl_enu\n+00016e10: 6d76 616c 7565 2220 6872 6566 3d22 6130  mvalue\" href=\"a0\n+00016e20: 3133 3333 2e68 746d 6c23 6131 3166 6364  1333.html#a11fcd\n+00016e30: 3531 6566 3836 3131 3866 3635 6536 3033  51ef86118f65e603\n+00016e40: 6331 3437 3433 3737 6137 3861 3433 3436  c1474377a78a4346\n+00016e50: 3963 3239 6438 3537 3961 3633 6263 3164  9c29d8579a63bc1d\n+00016e60: 3632 3437 6432 3632 3437 3939 223e 4372  6247d2624799\">Cr\n+00016e70: 6561 7365 3a3a 5255 4c45 5f44 4152 543c  ease::RULE_DART<\n+00016e80: 2f61 3e29 2920 7b3c 2f64 6976 3e0a 3c64  /a>)) {</div>.<d\n+00016e90: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n+00016ea0: 3c61 2069 643d 226c 3030 3534 3822 206e  <a id=\"l00548\" n\n+00016eb0: 616d 653d 226c 3030 3534 3822 3e3c 2f61  ame=\"l00548\"></a\n+00016ec0: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n+00016ed0: 6e65 6e6f 223e 2020 3534 383c 2f73 7061  neno\">  548</spa\n+00016ee0: 6e3e 2020 2020 2020 2020 6173 7369 676e  n>        assign\n+00016ef0: 536d 6f6f 7468 4d61 736b 466f 7256 6572  SmoothMaskForVer\n+00016f00: 7465 7828 7665 7274 6578 2c20 6d61 736b  tex(vertex, mask\n+00016f10: 293b 3c2f 6469 763e 0a3c 6469 7620 636c  );</div>.<div cl\n+00016f20: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n+00016f30: 3d22 6c30 3035 3439 2220 6e61 6d65 3d22  =\"l00549\" name=\"\n+00016f40: 6c30 3035 3439 223e 3c2f 613e 3c73 7061  l00549\"></a><spa\n+00016f50: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n+00016f60: 3e20 2035 3439 3c2f 7370 616e 3e20 2020  >  549</span>   \n+00016f70: 2020 2020 203c 7370 616e 2063 6c61 7373       <span class\n+00016f80: 3d22 6b65 7977 6f72 6466 6c6f 7722 3e72  =\"keywordflow\">r\n+00016f90: 6574 7572 6e3c 2f73 7061 6e3e 3b20 203c  eturn</span>;  <\n+00016fa0: 7370 616e 2063 6c61 7373 3d22 636f 6d6d  span class=\"comm\n+00016fb0: 656e 7422 3e2f 2f20 2041 7320 646f 6e65  ent\">//  As done\n+00016fc0: 206f 6e20 656e 7472 792c 2077 6520 6361   on entry, we ca\n+00016fd0: 6e20 7265 7475 726e 2069 6d6d 6564 6961  n return immedia\n+00016fe0: 7465 6c79 2069 6620 7061 7265 6e74 2069  tely if parent i\n+00016ff0: 7320 536d 6f6f 7468 2f44 6172 743c 2f73  s Smooth/Dart</s\n+00017000: 7061 6e3e 3c2f 6469 763e 0a3c 6469 7620  pan></div>.<div \n+00017010: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n+00017020: 6964 3d22 6c30 3035 3530 2220 6e61 6d65  id=\"l00550\" name\n+00017030: 3d22 6c30 3035 3530 223e 3c2f 613e 3c73  =\"l00550\"></a><s\n+00017040: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n+00017050: 6f22 3e20 2035 3530 3c2f 7370 616e 3e20  o\">  550</span> \n+00017060: 2020 207d 203c 7370 616e 2063 6c61 7373     } <span class\n+00017070: 3d22 6b65 7977 6f72 6466 6c6f 7722 3e65  =\"keywordflow\">e\n+00017080: 6c73 653c 2f73 7061 6e3e 203c 7370 616e  lse</span> <span\n+00017090: 2063 6c61 7373 3d22 6b65 7977 6f72 6466   class=\"keywordf\n+000170a0: 6c6f 7722 3e69 663c 2f73 7061 6e3e 2028  low\">if</span> (\n+000170b0: 7052 756c 6520 3d3d 203c 6120 636c 6173  pRule == <a clas\n+000170c0: 733d 2263 6f64 6520 686c 5f65 6e75 6d76  s=\"code hl_enumv\n+000170d0: 616c 7565 2220 6872 6566 3d22 6130 3133  alue\" href=\"a013\n+000170e0: 3333 2e68 746d 6c23 6131 3166 6364 3531  33.html#a11fcd51\n+000170f0: 6566 3836 3131 3866 3635 6536 3033 6331  ef86118f65e603c1\n+00017100: 3437 3433 3737 6137 3861 3936 3666 6131  474377a78a966fa1\n+00017110: 6165 3861 6562 3835 3837 6334 3938 6366  ae8aeb8587c498cf\n+00017120: 3661 3932 6363 3333 3335 223e 4372 6561  6a92cc3335\">Crea\n+00017130: 7365 3a3a 5255 4c45 5f43 5245 4153 453c  se::RULE_CREASE<\n+00017140: 2f61 3e29 207b 3c2f 6469 763e 0a3c 6469  /a>) {</div>.<di\n+00017150: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n+00017160: 6120 6964 3d22 6c30 3035 3531 2220 6e61  a id=\"l00551\" na\n+00017170: 6d65 3d22 6c30 3035 3531 223e 3c2f 613e  me=\"l00551\"></a>\n+00017180: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n+00017190: 656e 6f22 3e20 2035 3531 3c2f 7370 616e  eno\">  551</span\n+000171a0: 3e20 2020 2020 2020 203c 7370 616e 2063  >        <span c\n+000171b0: 6c61 7373 3d22 6b65 7977 6f72 6474 7970  lass=\"keywordtyp\n+000171c0: 6522 3e69 6e74 3c2f 7370 616e 3e20 6372  e\">int</span> cr\n+000171d0: 6561 7365 456e 6473 5b32 5d3b 3c2f 6469  easeEnds[2];</di\n+000171e0: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n+000171f0: 696e 6522 3e3c 6120 6964 3d22 6c30 3035  ine\"><a id=\"l005\n+00017200: 3532 2220 6e61 6d65 3d22 6c30 3035 3532  52\" name=\"l00552\n+00017210: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n+00017220: 733d 226c 696e 656e 6f22 3e20 2035 3532  s=\"lineno\">  552\n+00017230: 3c2f 7370 616e 3e20 2020 2020 2020 203c  </span>        <\n+00017240: 6120 636c 6173 733d 2263 6f64 6520 686c  a class=\"code hl\n+00017250: 5f63 6c61 7373 2220 6872 6566 3d22 6130  _class\" href=\"a0\n+00017260: 3133 3333 2e68 746d 6c22 3e43 7265 6173  1333.html\">Creas\n+00017270: 653c 2f61 3e28 5f6f 7074 696f 6e73 292e  e</a>(_options).\n+00017280: 3c61 2063 6c61 7373 3d22 636f 6465 2068  <a class=\"code h\n+00017290: 6c5f 6675 6e63 7469 6f6e 2220 6872 6566  l_function\" href\n+000172a0: 3d22 6130 3133 3333 2e68 746d 6c23 6133  =\"a01333.html#a3\n+000172b0: 3632 6632 3265 3763 6261 3161 3062 3966  62f22e7cba1a0b9f\n+000172c0: 3633 6539 6230 3037 6331 3966 3239 3622  63e9b007c19f296\"\n+000172d0: 3e47 6574 5368 6172 7045 6467 6550 6169  >GetSharpEdgePai\n+000172e0: 724f 6643 7265 6173 653c 2f61 3e28 7045  rOfCrease</a>(pE\n+000172f0: 6467 6553 6861 7270 6e65 7373 2c20 7661  dgeSharpness, va\n+00017300: 6c65 6e63 652c 2063 7265 6173 6545 6e64  lence, creaseEnd\n+00017310: 7329 3b3c 2f64 6976 3e0a 3c64 6976 2063  s);</div>.<div c\n+00017320: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n+00017330: 643d 226c 3030 3535 3322 206e 616d 653d  d=\"l00553\" name=\n+00017340: 226c 3030 3535 3322 3e3c 2f61 3e3c 7370  \"l00553\"></a><sp\n+00017350: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n+00017360: 223e 2020 3535 333c 2f73 7061 6e3e 203c  \">  553</span> <\n+00017370: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n+00017380: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n+00017390: 3030 3535 3422 206e 616d 653d 226c 3030  00554\" name=\"l00\n+000173a0: 3535 3422 3e3c 2f61 3e3c 7370 616e 2063  554\"></a><span c\n+000173b0: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n+000173c0: 3535 343c 2f73 7061 6e3e 2020 2020 2020  554</span>      \n+000173d0: 2020 6173 7369 676e 4372 6561 7365 4d61    assignCreaseMa\n+000173e0: 736b 466f 7256 6572 7465 7828 7665 7274  skForVertex(vert\n+000173f0: 6578 2c20 6d61 736b 2c20 6372 6561 7365  ex, mask, crease\n+00017400: 456e 6473 293b 3c2f 6469 763e 0a3c 6469  Ends);</div>.<di\n+00017410: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n+00017420: 6120 6964 3d22 6c30 3035 3535 2220 6e61  a id=\"l00555\" na\n+00017430: 6d65 3d22 6c30 3035 3535 223e 3c2f 613e  me=\"l00555\"></a>\n+00017440: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n+00017450: 656e 6f22 3e20 2035 3535 3c2f 7370 616e  eno\">  555</span\n+00017460: 3e20 2020 207d 203c 7370 616e 2063 6c61  >    } <span cla\n+00017470: 7373 3d22 6b65 7977 6f72 6466 6c6f 7722  ss=\"keywordflow\"\n+00017480: 3e65 6c73 653c 2f73 7061 6e3e 207b 3c2f  >else</span> {</\n+00017490: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n+000174a0: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n+000174b0: 3035 3536 2220 6e61 6d65 3d22 6c30 3035  0556\" name=\"l005\n+000174c0: 3536 223e 3c2f 613e 3c73 7061 6e20 636c  56\"></a><span cl\n+000174d0: 6173 733d 226c 696e 656e 6f22 3e20 2035  ass=\"lineno\">  5\n+000174e0: 3536 3c2f 7370 616e 3e20 2020 2020 2020  56</span>       \n+000174f0: 2061 7373 6967 6e43 6f72 6e65 724d 6173   assignCornerMas\n+00017500: 6b46 6f72 5665 7274 6578 2876 6572 7465  kForVertex(verte\n+00017510: 782c 206d 6173 6b29 3b3c 2f64 6976 3e0a  x, mask);</div>.\n+00017520: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n+00017530: 223e 3c61 2069 643d 226c 3030 3535 3722  \"><a id=\"l00557\"\n+00017540: 206e 616d 653d 226c 3030 3535 3722 3e3c   name=\"l00557\"><\n+00017550: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n+00017560: 6c69 6e65 6e6f 223e 2020 3535 373c 2f73  lineno\">  557</s\n+00017570: 7061 6e3e 2020 2020 7d3c 2f64 6976 3e0a  pan>    }</div>.\n+00017580: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n+00017590: 223e 3c61 2069 643d 226c 3030 3535 3822  \"><a id=\"l00558\"\n+000175a0: 206e 616d 653d 226c 3030 3535 3822 3e3c   name=\"l00558\"><\n+000175b0: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n+000175c0: 6c69 6e65 6e6f 223e 2020 3535 383c 2f73  lineno\">  558</s\n+000175d0: 7061 6e3e 2020 2020 3c73 7061 6e20 636c  pan>    <span cl\n+000175e0: 6173 733d 226b 6579 776f 7264 666c 6f77  ass=\"keywordflow\n+000175f0: 223e 6966 3c2f 7370 616e 3e20 2863 5275  \">if</span> (cRu\n+00017600: 6c65 203d 3d20 7052 756c 6529 203c 7370  le == pRule) <sp\n+00017610: 616e 2063 6c61 7373 3d22 6b65 7977 6f72  an class=\"keywor\n+00017620: 6466 6c6f 7722 3e72 6574 7572 6e3c 2f73  dflow\">return</s\n+00017630: 7061 6e3e 3b3c 2f64 6976 3e0a 3c64 6976  pan>;</div>.<div\n+00017640: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n+00017650: 2069 643d 226c 3030 3535 3922 206e 616d   id=\"l00559\" nam\n+00017660: 653d 226c 3030 3535 3922 3e3c 2f61 3e3c  e=\"l00559\"></a><\n+00017670: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n+00017680: 6e6f 223e 2020 3535 393c 2f73 7061 6e3e  no\">  559</span>\n+00017690: 203c 2f64 6976 3e0a 3c64 6976 2063 6c61   </div>.<div cla\n+000176a0: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n+000176b0: 226c 3030 3536 3022 206e 616d 653d 226c  \"l00560\" name=\"l\n+000176c0: 3030 3536 3022 3e3c 2f61 3e3c 7370 616e  00560\"></a><span\n+000176d0: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n+000176e0: 2020 3536 303c 2f73 7061 6e3e 2020 2020    560</span>    \n+000176f0: 3c73 7061 6e20 636c 6173 733d 2263 6f6d  <span class=\"com\n+00017700: 6d65 6e74 223e 2f2f 3c2f 7370 616e 3e3c  ment\">//</span><\n+00017710: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n+00017720: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n+00017730: 3030 3536 3122 206e 616d 653d 226c 3030  00561\" name=\"l00\n+00017740: 3536 3122 3e3c 2f61 3e3c 7370 616e 2063  561\"></a><span c\n+00017750: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n+00017760: 3536 313c 2f73 7061 6e3e 2020 2020 3c73  561</span>    <s\n+00017770: 7061 6e20 636c 6173 733d 2263 6f6d 6d65  pan class=\"comme\n+00017780: 6e74 223e 2f2f 2020 4964 656e 7469 6679  nt\">//  Identify\n+00017790: 2f67 6174 6865 7220 6368 696c 6420 7368  /gather child sh\n+000177a0: 6172 706e 6573 7320 746f 2063 6f6d 6269  arpness to combi\n+000177b0: 6e65 206d 6173 6b73 2066 6f72 2074 6865  ne masks for the\n+000177c0: 2074 776f 2064 6966 6665 7269 6e67 2052   two differing R\n+000177d0: 756c 6573 3a3c 2f73 7061 6e3e 3c2f 6469  ules:</span></di\n+000177e0: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n+000177f0: 696e 6522 3e3c 6120 6964 3d22 6c30 3035  ine\"><a id=\"l005\n+00017800: 3632 2220 6e61 6d65 3d22 6c30 3035 3632  62\" name=\"l00562\n+00017810: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n+00017820: 733d 226c 696e 656e 6f22 3e20 2035 3632  s=\"lineno\">  562\n+00017830: 3c2f 7370 616e 3e20 2020 203c 7370 616e  </span>    <span\n+00017840: 2063 6c61 7373 3d22 636f 6d6d 656e 7422   class=\"comment\"\n+00017850: 3e2f 2f3c 2f73 7061 6e3e 3c2f 6469 763e  >//</span></div>\n+00017860: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n+00017870: 6522 3e3c 6120 6964 3d22 6c30 3035 3633  e\"><a id=\"l00563\n+00017880: 2220 6e61 6d65 3d22 6c30 3035 3633 223e  \" name=\"l00563\">\n+00017890: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n+000178a0: 226c 696e 656e 6f22 3e20 2035 3633 3c2f  \"lineno\">  563</\n+000178b0: 7370 616e 3e20 2020 203c 6120 636c 6173  span>    <a clas\n+000178c0: 733d 2263 6f64 6520 686c 5f63 6c61 7373  s=\"code hl_class\n+000178d0: 2220 6872 6566 3d22 6130 3133 3333 2e68  \" href=\"a01333.h\n+000178e0: 746d 6c22 3e43 7265 6173 653c 2f61 3e20  tml\">Crease</a> \n+000178f0: 6372 6561 7365 285f 6f70 7469 6f6e 7329  crease(_options)\n+00017900: 3b3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ;</div>.<div cla\n+00017910: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n+00017920: 226c 3030 3536 3422 206e 616d 653d 226c  \"l00564\" name=\"l\n+00017930: 3030 3536 3422 3e3c 2f61 3e3c 7370 616e  00564\"></a><span\n+00017940: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n+00017950: 2020 3536 343c 2f73 7061 6e3e 203c 2f64    564</span> </d\n+00017960: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n+00017970: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n+00017980: 3536 3522 206e 616d 653d 226c 3030 3536  565\" name=\"l0056\n+00017990: 3522 3e3c 2f61 3e3c 7370 616e 2063 6c61  5\"></a><span cla\n+000179a0: 7373 3d22 6c69 6e65 6e6f 223e 2020 3536  ss=\"lineno\">  56\n+000179b0: 353c 2f73 7061 6e3e 2020 2020 3c73 7061  5</span>    <spa\n+000179c0: 6e20 636c 6173 733d 226b 6579 776f 7264  n class=\"keyword\n+000179d0: 7479 7065 223e 666c 6f61 743c 2f73 7061  type\">float</spa\n+000179e0: 6e3e 202a 2063 4564 6765 5368 6172 706e  n> * cEdgeSharpn\n+000179f0: 6573 7342 7566 6665 7220 3d20 283c 7370  essBuffer = (<sp\n+00017a00: 616e 2063 6c61 7373 3d22 6b65 7977 6f72  an class=\"keywor\n+00017a10: 6474 7970 6522 3e66 6c6f 6174 3c2f 7370  dtype\">float</sp\n+00017a20: 616e 3e20 2a29 616c 6c6f 6361 2876 616c  an> *)alloca(val\n+00017a30: 656e 6365 2a3c 7370 616e 2063 6c61 7373  ence*<span class\n+00017a40: 3d22 6b65 7977 6f72 6422 3e73 697a 656f  =\"keyword\">sizeo\n+00017a50: 663c 2f73 7061 6e3e 283c 7370 616e 2063  f</span>(<span c\n+00017a60: 6c61 7373 3d22 6b65 7977 6f72 6474 7970  lass=\"keywordtyp\n+00017a70: 6522 3e66 6c6f 6174 3c2f 7370 616e 3e29  e\">float</span>)\n+00017a80: 292c 3c2f 6469 763e 0a3c 6469 7620 636c  ),</div>.<div cl\n+00017a90: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n+00017aa0: 3d22 6c30 3035 3636 2220 6e61 6d65 3d22  =\"l00566\" name=\"\n+00017ab0: 6c30 3035 3636 223e 3c2f 613e 3c73 7061  l00566\"></a><spa\n+00017ac0: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n+00017ad0: 3e20 2035 3636 3c2f 7370 616e 3e20 2020  >  566</span>   \n+00017ae0: 2020 2020 2020 202a 2063 4564 6765 5368         * cEdgeSh\n+00017af0: 6172 706e 6573 7320 3d20 7665 7274 6578  arpness = vertex\n+00017b00: 2e47 6574 4368 696c 6453 6861 7270 6e65  .GetChildSharpne\n+00017b10: 7373 5065 7245 6467 6528 6372 6561 7365  ssPerEdge(crease\n+00017b20: 2c20 6345 6467 6553 6861 7270 6e65 7373  , cEdgeSharpness\n+00017b30: 4275 6666 6572 292c 3c2f 6469 763e 0a3c  Buffer),</div>.<\n+00017b40: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n+00017b50: 3e3c 6120 6964 3d22 6c30 3035 3637 2220  ><a id=\"l00567\" \n+00017b60: 6e61 6d65 3d22 6c30 3035 3637 223e 3c2f  name=\"l00567\"></\n+00017b70: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n+00017b80: 696e 656e 6f22 3e20 2035 3637 3c2f 7370  ineno\">  567</sp\n+00017b90: 616e 3e20 2020 2020 2020 2020 2020 2063  an>            c\n+00017ba0: 5665 7274 6578 5368 6172 706e 6573 7320  VertexSharpness \n+00017bb0: 3d20 7665 7274 6578 2e47 6574 4368 696c  = vertex.GetChil\n+00017bc0: 6453 6861 7270 6e65 7373 2863 7265 6173  dSharpness(creas\n+00017bd0: 6529 3b3c 2f64 6976 3e0a 3c64 6976 2063  e);</div>.<div c\n+00017be0: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n+00017bf0: 643d 226c 3030 3536 3822 206e 616d 653d  d=\"l00568\" name=\n+00017c00: 226c 3030 3536 3822 3e3c 2f61 3e3c 7370  \"l00568\"></a><sp\n+00017c10: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n+00017c20: 223e 2020 3536 383c 2f73 7061 6e3e 203c  \">  568</span> <\n+00017c30: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n+00017c40: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n+00017c50: 3030 3536 3922 206e 616d 653d 226c 3030  00569\" name=\"l00\n+00017c60: 3536 3922 3e3c 2f61 3e3c 7370 616e 2063  569\"></a><span c\n+00017c70: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n+00017c80: 3536 393c 2f73 7061 6e3e 2020 2020 3c73  569</span>    <s\n+00017c90: 7061 6e20 636c 6173 733d 226b 6579 776f  pan class=\"keywo\n+00017ca0: 7264 666c 6f77 223e 6966 3c2f 7370 616e  rdflow\">if</span\n+00017cb0: 3e20 2863 5275 6c65 203d 3d20 3c61 2063  > (cRule == <a c\n+00017cc0: 6c61 7373 3d22 636f 6465 2068 6c5f 656e  lass=\"code hl_en\n+00017cd0: 756d 7661 6c75 6522 2068 7265 663d 2261  umvalue\" href=\"a\n+00017ce0: 3031 3333 332e 6874 6d6c 2361 3131 6663  01333.html#a11fc\n+00017cf0: 6435 3165 6638 3631 3138 6636 3565 3630  d51ef86118f65e60\n+00017d00: 3363 3134 3734 3337 3761 3738 6162 3239  3c1474377a78ab29\n+00017d10: 3961 6566 6232 3630 3133 6137 3964 3532  9aefb26013a79d52\n+00017d20: 3139 3161 3738 3837 6665 6135 3322 3e43  191a7887fea53\">C\n+00017d30: 7265 6173 653a 3a52 554c 455f 554e 4b4e  rease::RULE_UNKN\n+00017d40: 4f57 4e3c 2f61 3e29 207b 3c2f 6469 763e  OWN</a>) {</div>\n+00017d50: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n+00017d60: 6522 3e3c 6120 6964 3d22 6c30 3035 3730  e\"><a id=\"l00570\n+00017d70: 2220 6e61 6d65 3d22 6c30 3035 3730 223e  \" name=\"l00570\">\n+00017d80: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n+00017d90: 226c 696e 656e 6f22 3e20 2035 3730 3c2f  \"lineno\">  570</\n+00017da0: 7370 616e 3e20 2020 2020 2020 2063 5275  span>        cRu\n+00017db0: 6c65 203d 2063 7265 6173 652e 3c61 2063  le = crease.<a c\n+00017dc0: 6c61 7373 3d22 636f 6465 2068 6c5f 6675  lass=\"code hl_fu\n+00017dd0: 6e63 7469 6f6e 2220 6872 6566 3d22 6130  nction\" href=\"a0\n+00017de0: 3133 3333 2e68 746d 6c23 6134 3165 6262  1333.html#a41ebb\n+00017df0: 3735 6432 3863 3539 3733 3332 3865 3065  75d28c5973328e0e\n+00017e00: 3338 3833 3439 3561 6562 6122 3e44 6574  3883495aeba\">Det\n+00017e10: 6572 6d69 6e65 5665 7274 6578 5665 7274  ermineVertexVert\n+00017e20: 6578 5275 6c65 3c2f 613e 2863 5665 7274  exRule</a>(cVert\n+00017e30: 6578 5368 6172 706e 6573 732c 2076 616c  exSharpness, val\n+00017e40: 656e 6365 2c20 6345 6467 6553 6861 7270  ence, cEdgeSharp\n+00017e50: 6e65 7373 293b 3c2f 6469 763e 0a3c 6469  ness);</div>.<di\n+00017e60: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n+00017e70: 6120 6964 3d22 6c30 3035 3731 2220 6e61  a id=\"l00571\" na\n+00017e80: 6d65 3d22 6c30 3035 3731 223e 3c2f 613e  me=\"l00571\"></a>\n+00017e90: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n+00017ea0: 656e 6f22 3e20 2035 3731 3c2f 7370 616e  eno\">  571</span\n+00017eb0: 3e20 2020 2020 2020 203c 7370 616e 2063  >        <span c\n+00017ec0: 6c61 7373 3d22 6b65 7977 6f72 6466 6c6f  lass=\"keywordflo\n+00017ed0: 7722 3e69 663c 2f73 7061 6e3e 2028 6352  w\">if</span> (cR\n+00017ee0: 756c 6520 3d3d 2070 5275 6c65 2920 3c73  ule == pRule) <s\n+00017ef0: 7061 6e20 636c 6173 733d 226b 6579 776f  pan class=\"keywo\n+00017f00: 7264 666c 6f77 223e 7265 7475 726e 3c2f  rdflow\">return</\n+00017f10: 7370 616e 3e3b 3c2f 6469 763e 0a3c 6469  span>;</div>.<di\n+00017f20: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n+00017f30: 6120 6964 3d22 6c30 3035 3732 2220 6e61  a id=\"l00572\" na\n+00017f40: 6d65 3d22 6c30 3035 3732 223e 3c2f 613e  me=\"l00572\"></a>\n+00017f50: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n+00017f60: 656e 6f22 3e20 2035 3732 3c2f 7370 616e  eno\">  572</span\n+00017f70: 3e20 2020 207d 3c2f 6469 763e 0a3c 6469  >    }</div>.<di\n+00017f80: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n+00017f90: 6120 6964 3d22 6c30 3035 3733 2220 6e61  a id=\"l00573\" na\n+00017fa0: 6d65 3d22 6c30 3035 3733 223e 3c2f 613e  me=\"l00573\"></a>\n+00017fb0: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n+00017fc0: 656e 6f22 3e20 2035 3733 3c2f 7370 616e  eno\">  573</span\n+00017fd0: 3e20 3c2f 6469 763e 0a3c 6469 7620 636c  > </div>.<div cl\n+00017fe0: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n+00017ff0: 3d22 6c30 3035 3734 2220 6e61 6d65 3d22  =\"l00574\" name=\"\n+00018000: 6c30 3035 3734 223e 3c2f 613e 3c73 7061  l00574\"></a><spa\n+00018010: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n+00018020: 3e20 2035 3734 3c2f 7370 616e 3e20 2020  >  574</span>   \n+00018030: 203c 7370 616e 2063 6c61 7373 3d22 636f   <span class=\"co\n+00018040: 6d6d 656e 7422 3e2f 2f3c 2f73 7061 6e3e  mment\">//</span>\n+00018050: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n+00018060: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n+00018070: 6c30 3035 3735 2220 6e61 6d65 3d22 6c30  l00575\" name=\"l0\n+00018080: 3035 3735 223e 3c2f 613e 3c73 7061 6e20  0575\"></a><span \n+00018090: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n+000180a0: 2035 3735 3c2f 7370 616e 3e20 2020 203c   575</span>    <\n+000180b0: 7370 616e 2063 6c61 7373 3d22 636f 6d6d  span class=\"comm\n+000180c0: 656e 7422 3e2f 2f20 2049 6e69 7469 616c  ent\">//  Initial\n+000180d0: 697a 6520 6120 6c6f 6361 6c20 6368 696c  ize a local chil\n+000180e0: 6420 6d61 736b 2c20 636f 6d70 7574 6520  d mask, compute \n+000180f0: 7468 6520 6672 6163 7469 6f6e 616c 2077  the fractional w\n+00018100: 6569 6768 7420 6672 6f6d 2070 6172 656e  eight from paren\n+00018110: 7420 616e 6420 6368 696c 643c 2f73 7061  t and child</spa\n+00018120: 6e3e 3c2f 6469 763e 0a3c 6469 7620 636c  n></div>.<div cl\n+00018130: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n+00018140: 3d22 6c30 3035 3736 2220 6e61 6d65 3d22  =\"l00576\" name=\"\n+00018150: 6c30 3035 3736 223e 3c2f 613e 3c73 7061  l00576\"></a><spa\n+00018160: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n+00018170: 3e20 2035 3736 3c2f 7370 616e 3e20 2020  >  576</span>   \n+00018180: 203c 7370 616e 2063 6c61 7373 3d22 636f   <span class=\"co\n+00018190: 6d6d 656e 7422 3e2f 2f20 2073 6861 7270  mment\">//  sharp\n+000181a0: 6e65 7373 2076 616c 7565 7320 616e 6420  ness values and \n+000181b0: 636f 6d62 696e 6520 7468 6520 7477 6f20  combine the two \n+000181c0: 6d61 736b 733a 3c2f 7370 616e 3e3c 2f64  masks:</span></d\n+000181d0: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n+000181e0: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n+000181f0: 3537 3722 206e 616d 653d 226c 3030 3537  577\" name=\"l0057\n+00018200: 3722 3e3c 2f61 3e3c 7370 616e 2063 6c61  7\"></a><span cla\n+00018210: 7373 3d22 6c69 6e65 6e6f 223e 2020 3537  ss=\"lineno\">  57\n+00018220: 373c 2f73 7061 6e3e 2020 2020 3c73 7061  7</span>    <spa\n+00018230: 6e20 636c 6173 733d 2263 6f6d 6d65 6e74  n class=\"comment\n+00018240: 223e 2f2f 3c2f 7370 616e 3e3c 2f64 6976  \">//</span></div\n+00018250: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n+00018260: 6e65 223e 3c61 2069 643d 226c 3030 3537  ne\"><a id=\"l0057\n+00018270: 3822 206e 616d 653d 226c 3030 3537 3822  8\" name=\"l00578\"\n+00018280: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n+00018290: 3d22 6c69 6e65 6e6f 223e 2020 3537 383c  =\"lineno\">  578<\n+000182a0: 2f73 7061 6e3e 2020 2020 3c73 7061 6e20  /span>    <span \n+000182b0: 636c 6173 733d 226b 6579 776f 7264 223e  class=\"keyword\">\n+000182c0: 7479 7065 6465 663c 2f73 7061 6e3e 203c  typedef</span> <\n+000182d0: 7370 616e 2063 6c61 7373 3d22 6b65 7977  span class=\"keyw\n+000182e0: 6f72 6422 3e74 7970 656e 616d 653c 2f73  ord\">typename</s\n+000182f0: 7061 6e3e 204d 4153 4b3a 3a57 6569 6768  pan> MASK::Weigh\n+00018300: 7420 5765 6967 6874 3b3c 2f64 6976 3e0a  t Weight;</div>.\n+00018310: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n+00018320: 223e 3c61 2069 643d 226c 3030 3537 3922  \"><a id=\"l00579\"\n+00018330: 206e 616d 653d 226c 3030 3537 3922 3e3c   name=\"l00579\"><\n+00018340: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n+00018350: 6c69 6e65 6e6f 223e 2020 3537 393c 2f73  lineno\">  579</s\n+00018360: 7061 6e3e 203c 2f64 6976 3e0a 3c64 6976  pan> </div>.<div\n+00018370: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n+00018380: 2069 643d 226c 3030 3538 3022 206e 616d   id=\"l00580\" nam\n+00018390: 653d 226c 3030 3538 3022 3e3c 2f61 3e3c  e=\"l00580\"></a><\n+000183a0: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n+000183b0: 6e6f 223e 2020 3538 303c 2f73 7061 6e3e  no\">  580</span>\n+000183c0: 2020 2020 5765 6967 6874 202a 2063 4d61      Weight * cMa\n+000183d0: 736b 5765 6967 6874 7320 3d20 2857 6569  skWeights = (Wei\n+000183e0: 6768 7420 2a29 616c 6c6f 6361 2828 3120  ght *)alloca((1 \n+000183f0: 2b20 3220 2a20 7661 6c65 6e63 6529 2a3c  + 2 * valence)*<\n+00018400: 7370 616e 2063 6c61 7373 3d22 6b65 7977  span class=\"keyw\n+00018410: 6f72 6422 3e73 697a 656f 663c 2f73 7061  ord\">sizeof</spa\n+00018420: 6e3e 2857 6569 6768 7429 293b 3c2f 6469  n>(Weight));</di\n+00018430: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n+00018440: 696e 6522 3e3c 6120 6964 3d22 6c30 3035  ine\"><a id=\"l005\n+00018450: 3831 2220 6e61 6d65 3d22 6c30 3035 3831  81\" name=\"l00581\n+00018460: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n+00018470: 733d 226c 696e 656e 6f22 3e20 2035 3831  s=\"lineno\">  581\n+00018480: 3c2f 7370 616e 3e20 2020 203c 6120 636c  </span>    <a cl\n+00018490: 6173 733d 2263 6f64 6520 686c 5f63 6c61  ass=\"code hl_cla\n+000184a0: 7373 2220 6872 6566 3d22 6130 3133 3435  ss\" href=\"a01345\n+000184b0: 2e68 746d 6c22 3e4c 6f63 616c 4d61 736b  .html\">LocalMask\n+000184c0: 266c 743b 5765 6967 6874 2667 743b 3c2f  &lt;Weight&gt;</\n+000184d0: 613e 2063 4d61 736b 2863 4d61 736b 5765  a> cMask(cMaskWe\n+000184e0: 6967 6874 732c 2063 4d61 736b 5765 6967  ights, cMaskWeig\n+000184f0: 6874 7320 2b20 312c 2063 4d61 736b 5765  hts + 1, cMaskWe\n+00018500: 6967 6874 7320 2b20 3120 2b20 7661 6c65  ights + 1 + vale\n+00018510: 6e63 6529 3b3c 2f64 6976 3e0a 3c64 6976  nce);</div>.<div\n+00018520: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n+00018530: 2069 643d 226c 3030 3538 3222 206e 616d   id=\"l00582\" nam\n+00018540: 653d 226c 3030 3538 3222 3e3c 2f61 3e3c  e=\"l00582\"></a><\n+00018550: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n+00018560: 6e6f 223e 2020 3538 323c 2f73 7061 6e3e  no\">  582</span>\n+00018570: 203c 2f64 6976 3e0a 3c64 6976 2063 6c61   </div>.<div cla\n+00018580: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n+00018590: 226c 3030 3538 3322 206e 616d 653d 226c  \"l00583\" name=\"l\n+000185a0: 3030 3538 3322 3e3c 2f61 3e3c 7370 616e  00583\"></a><span\n+000185b0: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n+000185c0: 2020 3538 333c 2f73 7061 6e3e 2020 2020    583</span>    \n+000185d0: 3c73 7061 6e20 636c 6173 733d 226b 6579  <span class=\"key\n+000185e0: 776f 7264 666c 6f77 223e 6966 3c2f 7370  wordflow\">if</sp\n+000185f0: 616e 3e20 2828 6352 756c 6520 3d3d 203c  an> ((cRule == <\n+00018600: 6120 636c 6173 733d 2263 6f64 6520 686c  a class=\"code hl\n+00018610: 5f65 6e75 6d76 616c 7565 2220 6872 6566  _enumvalue\" href\n+00018620: 3d22 6130 3133 3333 2e68 746d 6c23 6131  =\"a01333.html#a1\n+00018630: 3166 6364 3531 6566 3836 3131 3866 3635  1fcd51ef86118f65\n+00018640: 6536 3033 6331 3437 3433 3737 6137 3861  e603c1474377a78a\n+00018650: 3631 6431 3337 6638 3636 3939 3765 6433  61d137f866997ed3\n+00018660: 3639 3365 3366 6361 6437 3664 6566 3566  693e3fcad76def5f\n+00018670: 223e 4372 6561 7365 3a3a 5255 4c45 5f53  \">Crease::RULE_S\n+00018680: 4d4f 4f54 483c 2f61 3e29 207c 7c20 2863  MOOTH</a>) || (c\n+00018690: 5275 6c65 203d 3d20 3c61 2063 6c61 7373  Rule == <a class\n+000186a0: 3d22 636f 6465 2068 6c5f 656e 756d 7661  =\"code hl_enumva\n+000186b0: 6c75 6522 2068 7265 663d 2261 3031 3333  lue\" href=\"a0133\n+000186c0: 332e 6874 6d6c 2361 3131 6663 6435 3165  3.html#a11fcd51e\n+000186d0: 6638 3631 3138 6636 3565 3630 3363 3134  f86118f65e603c14\n+000186e0: 3734 3337 3761 3738 6134 3334 3639 6332  74377a78a43469c2\n+000186f0: 3964 3835 3739 6136 3362 6331 6436 3234  9d8579a63bc1d624\n+00018700: 3764 3236 3234 3739 3922 3e43 7265 6173  7d2624799\">Creas\n+00018710: 653a 3a52 554c 455f 4441 5254 3c2f 613e  e::RULE_DART</a>\n+00018720: 2929 207b 3c2f 6469 763e 0a3c 6469 7620  )) {</div>.<div \n+00018730: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n+00018740: 6964 3d22 6c30 3035 3834 2220 6e61 6d65  id=\"l00584\" name\n+00018750: 3d22 6c30 3035 3834 223e 3c2f 613e 3c73  =\"l00584\"></a><s\n+00018760: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n+00018770: 6f22 3e20 2035 3834 3c2f 7370 616e 3e20  o\">  584</span> \n+00018780: 2020 2020 2020 2061 7373 6967 6e53 6d6f         assignSmo\n+00018790: 6f74 684d 6173 6b46 6f72 5665 7274 6578  othMaskForVertex\n+000187a0: 2876 6572 7465 782c 2063 4d61 736b 293b  (vertex, cMask);\n+000187b0: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n+000187c0: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n+000187d0: 6c30 3035 3835 2220 6e61 6d65 3d22 6c30  l00585\" name=\"l0\n+000187e0: 3035 3835 223e 3c2f 613e 3c73 7061 6e20  0585\"></a><span \n+000187f0: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n+00018800: 2035 3835 3c2f 7370 616e 3e20 2020 207d   585</span>    }\n+00018810: 203c 7370 616e 2063 6c61 7373 3d22 6b65   <span class=\"ke\n+00018820: 7977 6f72 6466 6c6f 7722 3e65 6c73 653c  ywordflow\">else<\n+00018830: 2f73 7061 6e3e 203c 7370 616e 2063 6c61  /span> <span cla\n+00018840: 7373 3d22 6b65 7977 6f72 6466 6c6f 7722  ss=\"keywordflow\"\n+00018850: 3e69 663c 2f73 7061 6e3e 2028 6352 756c  >if</span> (cRul\n+00018860: 6520 3d3d 203c 6120 636c 6173 733d 2263  e == <a class=\"c\n+00018870: 6f64 6520 686c 5f65 6e75 6d76 616c 7565  ode hl_enumvalue\n+00018880: 2220 6872 6566 3d22 6130 3133 3333 2e68  \" href=\"a01333.h\n+00018890: 746d 6c23 6131 3166 6364 3531 6566 3836  tml#a11fcd51ef86\n+000188a0: 3131 3866 3635 6536 3033 6331 3437 3433  118f65e603c14743\n+000188b0: 3737 6137 3861 3936 3666 6131 6165 3861  77a78a966fa1ae8a\n+000188c0: 6562 3835 3837 6334 3938 6366 3661 3932  eb8587c498cf6a92\n+000188d0: 6363 3333 3335 223e 4372 6561 7365 3a3a  cc3335\">Crease::\n+000188e0: 5255 4c45 5f43 5245 4153 453c 2f61 3e29  RULE_CREASE</a>)\n+000188f0: 207b 3c2f 6469 763e 0a3c 6469 7620 636c   {</div>.<div cl\n+00018900: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n+00018910: 3d22 6c30 3035 3836 2220 6e61 6d65 3d22  =\"l00586\" name=\"\n+00018920: 6c30 3035 3836 223e 3c2f 613e 3c73 7061  l00586\"></a><spa\n+00018930: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n+00018940: 3e20 2035 3836 3c2f 7370 616e 3e20 2020  >  586</span>   \n+00018950: 2020 2020 203c 7370 616e 2063 6c61 7373       <span class\n+00018960: 3d22 6b65 7977 6f72 6474 7970 6522 3e69  =\"keywordtype\">i\n+00018970: 6e74 3c2f 7370 616e 3e20 6372 6561 7365  nt</span> crease\n+00018980: 456e 6473 5b32 5d3b 3c2f 6469 763e 0a3c  Ends[2];</div>.<\n+00018990: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n+000189a0: 3e3c 6120 6964 3d22 6c30 3035 3837 2220  ><a id=\"l00587\" \n+000189b0: 6e61 6d65 3d22 6c30 3035 3837 223e 3c2f  name=\"l00587\"></\n+000189c0: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n+000189d0: 696e 656e 6f22 3e20 2035 3837 3c2f 7370  ineno\">  587</sp\n+000189e0: 616e 3e20 2020 2020 2020 203c 6120 636c  an>        <a cl\n+000189f0: 6173 733d 2263 6f64 6520 686c 5f63 6c61  ass=\"code hl_cla\n+00018a00: 7373 2220 6872 6566 3d22 6130 3133 3333  ss\" href=\"a01333\n+00018a10: 2e68 746d 6c22 3e43 7265 6173 653c 2f61  .html\">Crease</a\n+00018a20: 3e28 5f6f 7074 696f 6e73 292e 3c61 2063  >(_options).<a c\n+00018a30: 6c61 7373 3d22 636f 6465 2068 6c5f 6675  lass=\"code hl_fu\n+00018a40: 6e63 7469 6f6e 2220 6872 6566 3d22 6130  nction\" href=\"a0\n+00018a50: 3133 3333 2e68 746d 6c23 6133 3632 6632  1333.html#a362f2\n+00018a60: 3265 3763 6261 3161 3062 3966 3633 6539  2e7cba1a0b9f63e9\n+00018a70: 6230 3037 6331 3966 3239 3622 3e47 6574  b007c19f296\">Get\n+00018a80: 5368 6172 7045 6467 6550 6169 724f 6643  SharpEdgePairOfC\n+00018a90: 7265 6173 653c 2f61 3e28 6345 6467 6553  rease</a>(cEdgeS\n+00018aa0: 6861 7270 6e65 7373 2c20 7661 6c65 6e63  harpness, valenc\n+00018ab0: 652c 2063 7265 6173 6545 6e64 7329 3b3c  e, creaseEnds);<\n+00018ac0: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n+00018ad0: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n+00018ae0: 3030 3538 3822 206e 616d 653d 226c 3030  00588\" name=\"l00\n+00018af0: 3538 3822 3e3c 2f61 3e3c 7370 616e 2063  588\"></a><span c\n+00018b00: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n+00018b10: 3538 383c 2f73 7061 6e3e 203c 2f64 6976  588</span> </div\n+00018b20: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n+00018b30: 6e65 223e 3c61 2069 643d 226c 3030 3538  ne\"><a id=\"l0058\n+00018b40: 3922 206e 616d 653d 226c 3030 3538 3922  9\" name=\"l00589\"\n+00018b50: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n+00018b60: 3d22 6c69 6e65 6e6f 223e 2020 3538 393c  =\"lineno\">  589<\n+00018b70: 2f73 7061 6e3e 2020 2020 2020 2020 6173  /span>        as\n+00018b80: 7369 676e 4372 6561 7365 4d61 736b 466f  signCreaseMaskFo\n+00018b90: 7256 6572 7465 7828 7665 7274 6578 2c20  rVertex(vertex, \n+00018ba0: 634d 6173 6b2c 2063 7265 6173 6545 6e64  cMask, creaseEnd\n+00018bb0: 7329 3b3c 2f64 6976 3e0a 3c64 6976 2063  s);</div>.<div c\n+00018bc0: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n+00018bd0: 643d 226c 3030 3539 3022 206e 616d 653d  d=\"l00590\" name=\n+00018be0: 226c 3030 3539 3022 3e3c 2f61 3e3c 7370  \"l00590\"></a><sp\n+00018bf0: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n+00018c00: 223e 2020 3539 303c 2f73 7061 6e3e 2020  \">  590</span>  \n+00018c10: 2020 7d20 3c73 7061 6e20 636c 6173 733d    } <span class=\n+00018c20: 226b 6579 776f 7264 666c 6f77 223e 656c  \"keywordflow\">el\n+00018c30: 7365 3c2f 7370 616e 3e20 7b3c 2f64 6976  se</span> {</div\n+00018c40: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n+00018c50: 6e65 223e 3c61 2069 643d 226c 3030 3539  ne\"><a id=\"l0059\n+00018c60: 3122 206e 616d 653d 226c 3030 3539 3122  1\" name=\"l00591\"\n+00018c70: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n+00018c80: 3d22 6c69 6e65 6e6f 223e 2020 3539 313c  =\"lineno\">  591<\n+00018c90: 2f73 7061 6e3e 2020 2020 2020 2020 6173  /span>        as\n+00018ca0: 7369 676e 436f 726e 6572 4d61 736b 466f  signCornerMaskFo\n+00018cb0: 7256 6572 7465 7828 7665 7274 6578 2c20  rVertex(vertex, \n+00018cc0: 634d 6173 6b29 3b3c 2f64 6976 3e0a 3c64  cMask);</div>.<d\n+00018cd0: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n+00018ce0: 3c61 2069 643d 226c 3030 3539 3222 206e  <a id=\"l00592\" n\n+00018cf0: 616d 653d 226c 3030 3539 3222 3e3c 2f61  ame=\"l00592\"></a\n+00018d00: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n+00018d10: 6e65 6e6f 223e 2020 3539 323c 2f73 7061  neno\">  592</spa\n+00018d20: 6e3e 2020 2020 7d3c 2f64 6976 3e0a 3c64  n>    }</div>.<d\n+00018d30: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n+00018d40: 3c61 2069 643d 226c 3030 3539 3322 206e  <a id=\"l00593\" n\n+00018d50: 616d 653d 226c 3030 3539 3322 3e3c 2f61  ame=\"l00593\"></a\n+00018d60: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n+00018d70: 6e65 6e6f 223e 2020 3539 333c 2f73 7061  neno\">  593</spa\n+00018d80: 6e3e 203c 2f64 6976 3e0a 3c64 6976 2063  n> </div>.<div c\n+00018d90: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n+00018da0: 643d 226c 3030 3539 3422 206e 616d 653d  d=\"l00594\" name=\n+00018db0: 226c 3030 3539 3422 3e3c 2f61 3e3c 7370  \"l00594\"></a><sp\n+00018dc0: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n+00018dd0: 223e 2020 3539 343c 2f73 7061 6e3e 2020  \">  594</span>  \n+00018de0: 2020 5765 6967 6874 2070 5765 6967 6874    Weight pWeight\n+00018df0: 203d 2063 7265 6173 652e 3c61 2063 6c61   = crease.<a cla\n+00018e00: 7373 3d22 636f 6465 2068 6c5f 6675 6e63  ss=\"code hl_func\n+00018e10: 7469 6f6e 2220 6872 6566 3d22 6130 3133  tion\" href=\"a013\n+00018e20: 3333 2e68 746d 6c23 6162 3133 6636 3534  33.html#ab13f654\n+00018e30: 6632 3565 6637 3632 3833 3936 6664 3930  f25ef7628396fd90\n+00018e40: 3232 3931 6238 6639 3622 3e43 6f6d 7075  2291b8f96\">Compu\n+00018e50: 7465 4672 6163 7469 6f6e 616c 5765 6967  teFractionalWeig\n+00018e60: 6874 4174 5665 7274 6578 3c2f 613e 2870  htAtVertex</a>(p\n+00018e70: 5665 7274 6578 5368 6172 706e 6573 732c  VertexSharpness,\n+00018e80: 2063 5665 7274 6578 5368 6172 706e 6573   cVertexSharpnes\n+00018e90: 732c 3c2f 6469 763e 0a3c 6469 7620 636c  s,</div>.<div cl\n+00018ea0: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n+00018eb0: 3d22 6c30 3035 3935 2220 6e61 6d65 3d22  =\"l00595\" name=\"\n+00018ec0: 6c30 3035 3935 223e 3c2f 613e 3c73 7061  l00595\"></a><spa\n+00018ed0: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n+00018ee0: 3e20 2035 3935 3c2f 7370 616e 3e20 2020  >  595</span>   \n+00018ef0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00018f00: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00018f10: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00018f20: 7661 6c65 6e63 652c 2070 4564 6765 5368  valence, pEdgeSh\n+00018f30: 6172 706e 6573 732c 2063 4564 6765 5368  arpness, cEdgeSh\n+00018f40: 6172 706e 6573 7329 3b3c 2f64 6976 3e0a  arpness);</div>.\n+00018f50: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n+00018f60: 223e 3c61 2069 643d 226c 3030 3539 3622  \"><a id=\"l00596\"\n+00018f70: 206e 616d 653d 226c 3030 3539 3622 3e3c   name=\"l00596\"><\n+00018f80: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n+00018f90: 6c69 6e65 6e6f 223e 2020 3539 363c 2f73  lineno\">  596</s\n+00018fa0: 7061 6e3e 2020 2020 5765 6967 6874 2063  pan>    Weight c\n+00018fb0: 5765 6967 6874 203d 2031 2e30 6620 2d20  Weight = 1.0f - \n+00018fc0: 7057 6569 6768 743b 3c2f 6469 763e 0a3c  pWeight;</div>.<\n+00018fd0: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n+00018fe0: 3e3c 6120 6964 3d22 6c30 3035 3937 2220  ><a id=\"l00597\" \n+00018ff0: 6e61 6d65 3d22 6c30 3035 3937 223e 3c2f  name=\"l00597\"></\n+00019000: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n+00019010: 696e 656e 6f22 3e20 2035 3937 3c2f 7370  ineno\">  597</sp\n+00019020: 616e 3e20 3c2f 6469 763e 0a3c 6469 7620  an> </div>.<div \n+00019030: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n+00019040: 6964 3d22 6c30 3035 3938 2220 6e61 6d65  id=\"l00598\" name\n+00019050: 3d22 6c30 3035 3938 223e 3c2f 613e 3c73  =\"l00598\"></a><s\n+00019060: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n+00019070: 6f22 3e20 2035 3938 3c2f 7370 616e 3e20  o\">  598</span> \n+00019080: 2020 2063 4d61 736b 2e3c 6120 636c 6173     cMask.<a clas\n+00019090: 733d 2263 6f64 6520 686c 5f66 756e 6374  s=\"code hl_funct\n+000190a0: 696f 6e22 2068 7265 663d 2261 3031 3334  ion\" href=\"a0134\n+000190b0: 352e 6874 6d6c 2361 3565 6438 3030 6539  5.html#a5ed800e9\n+000190c0: 6437 3032 6635 3761 6539 3738 6665 3630  d702f57ae978fe60\n+000190d0: 6261 3261 3337 6463 223e 436f 6d62 696e  ba2a37dc\">Combin\n+000190e0: 6556 6572 7465 7856 6572 7465 784d 6173  eVertexVertexMas\n+000190f0: 6b73 3c2f 613e 2863 5765 6967 6874 2c20  ks</a>(cWeight, \n+00019100: 7057 6569 6768 742c 206d 6173 6b29 3b3c  pWeight, mask);<\n+00019110: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n+00019120: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n+00019130: 3030 3539 3922 206e 616d 653d 226c 3030  00599\" name=\"l00\n+00019140: 3539 3922 3e3c 2f61 3e3c 7370 616e 2063  599\"></a><span c\n+00019150: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n+00019160: 3539 393c 2f73 7061 6e3e 7d3c 2f64 6976  599</span>}</div\n+00019170: 3e0a 3c2f 6469 763e 0a3c 6469 7620 636c  >.</div>.<div cl\n+00019180: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n+00019190: 3d22 6c30 3036 3030 2220 6e61 6d65 3d22  =\"l00600\" name=\"\n+000191a0: 6c30 3036 3030 223e 3c2f 613e 3c73 7061  l00600\"></a><spa\n+000191b0: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n+000191c0: 3e20 2036 3030 3c2f 7370 616e 3e20 3c2f  >  600</span> </\n+000191d0: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n+000191e0: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n+000191f0: 3036 3031 2220 6e61 6d65 3d22 6c30 3036  0601\" name=\"l006\n+00019200: 3031 223e 3c2f 613e 3c73 7061 6e20 636c  01\"></a><span cl\n+00019210: 6173 733d 226c 696e 656e 6f22 3e20 2036  ass=\"lineno\">  6\n+00019220: 3031 3c2f 7370 616e 3e3c 7370 616e 2063  01</span><span c\n+00019230: 6c61 7373 3d22 636f 6d6d 656e 7422 3e2f  lass=\"comment\">/\n+00019240: 2f3c 2f73 7061 6e3e 3c2f 6469 763e 0a3c  /</span></div>.<\n+00019250: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n+00019260: 3e3c 6120 6964 3d22 6c30 3036 3032 2220  ><a id=\"l00602\" \n+00019270: 6e61 6d65 3d22 6c30 3036 3032 223e 3c2f  name=\"l00602\"></\n+00019280: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n+00019290: 696e 656e 6f22 3e20 2036 3032 3c2f 7370  ineno\">  602</sp\n+000192a0: 616e 3e3c 7370 616e 2063 6c61 7373 3d22  an><span class=\"\n+000192b0: 636f 6d6d 656e 7422 3e2f 2f20 2054 6865  comment\">//  The\n+000192c0: 2063 6f6d 7075 7461 7469 6f6e 206f 6620   computation of \n+000192d0: 6c69 6d69 7420 6d61 736b 7320 666f 7220  limit masks for \n+000192e0: 7665 7274 6963 6573 3a3c 2f73 7061 6e3e  vertices:</span>\n+000192f0: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n+00019300: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n+00019310: 6c30 3036 3033 2220 6e61 6d65 3d22 6c30  l00603\" name=\"l0\n+00019320: 3036 3033 223e 3c2f 613e 3c73 7061 6e20  0603\"></a><span \n+00019330: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n+00019340: 2036 3033 3c2f 7370 616e 3e3c 7370 616e   603</span><span\n+00019350: 2063 6c61 7373 3d22 636f 6d6d 656e 7422   class=\"comment\"\n+00019360: 3e2f 2f3c 2f73 7061 6e3e 3c2f 6469 763e  >//</span></div>\n+00019370: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n+00019380: 6522 3e3c 6120 6964 3d22 6c30 3036 3034  e\"><a id=\"l00604\n+00019390: 2220 6e61 6d65 3d22 6c30 3036 3034 223e  \" name=\"l00604\">\n+000193a0: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n+000193b0: 226c 696e 656e 6f22 3e20 2036 3034 3c2f  \"lineno\">  604</\n+000193c0: 7370 616e 3e3c 7370 616e 2063 6c61 7373  span><span class\n+000193d0: 3d22 6b65 7977 6f72 6422 3e74 656d 706c  =\"keyword\">templ\n+000193e0: 6174 653c 2f73 7061 6e3e 2026 6c74 3b53  ate</span> &lt;S\n+000193f0: 6368 656d 6554 7970 6520 5343 4845 4d45  chemeType SCHEME\n+00019400: 2667 743b 3c2f 6469 763e 0a3c 6469 7620  &gt;</div>.<div \n+00019410: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n+00019420: 6964 3d22 6c30 3036 3035 2220 6e61 6d65  id=\"l00605\" name\n+00019430: 3d22 6c30 3036 3035 223e 3c2f 613e 3c73  =\"l00605\"></a><s\n+00019440: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n+00019450: 6f22 3e20 2036 3035 3c2f 7370 616e 3e3c  o\">  605</span><\n+00019460: 7370 616e 2063 6c61 7373 3d22 6b65 7977  span class=\"keyw\n+00019470: 6f72 6422 3e74 656d 706c 6174 653c 2f73  ord\">template</s\n+00019480: 7061 6e3e 2026 6c74 3b3c 7370 616e 2063  pan> &lt;<span c\n+00019490: 6c61 7373 3d22 6b65 7977 6f72 6422 3e74  lass=\"keyword\">t\n+000194a0: 7970 656e 616d 653c 2f73 7061 6e3e 2056  ypename</span> V\n+000194b0: 4552 5445 582c 203c 7370 616e 2063 6c61  ERTEX, <span cla\n+000194c0: 7373 3d22 6b65 7977 6f72 6422 3e74 7970  ss=\"keyword\">typ\n+000194d0: 656e 616d 653c 2f73 7061 6e3e 204d 4153  ename</span> MAS\n+000194e0: 4b26 6774 3b3c 2f64 6976 3e0a 3c64 6976  K&gt;</div>.<div\n+000194f0: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n+00019500: 2069 643d 226c 3030 3630 3622 206e 616d   id=\"l00606\" nam\n+00019510: 653d 226c 3030 3630 3622 3e3c 2f61 3e3c  e=\"l00606\"></a><\n+00019520: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n+00019530: 6e6f 223e 2020 3630 363c 2f73 7061 6e3e  no\">  606</span>\n+00019540: 3c73 7061 6e20 636c 6173 733d 226b 6579  <span class=\"key\n+00019550: 776f 7264 7479 7065 223e 766f 6964 3c2f  wordtype\">void</\n+00019560: 7370 616e 3e3c 2f64 6976 3e0a 3c64 6976  span></div>.<div\n+00019570: 2063 6c61 7373 3d22 666f 6c64 6f70 656e   class=\"foldopen\n+00019580: 2220 6964 3d22 666f 6c64 6f70 656e 3030  \" id=\"foldopen00\n+00019590: 3630 3722 2064 6174 612d 7374 6172 743d  607\" data-start=\n+000195a0: 227b 2220 6461 7461 2d65 6e64 3d22 7d22  \"{\" data-end=\"}\"\n+000195b0: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n+000195c0: 6e65 223e 3c61 2069 643d 226c 3030 3630  ne\"><a id=\"l0060\n+000195d0: 3722 206e 616d 653d 226c 3030 3630 3722  7\" name=\"l00607\"\n+000195e0: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n+000195f0: 3d22 6c69 6e65 6e6f 223e 3c61 2063 6c61  =\"lineno\"><a cla\n+00019600: 7373 3d22 6c69 6e65 2220 6872 6566 3d22  ss=\"line\" href=\"\n+00019610: 6130 3133 3431 2e68 746d 6c23 6133 6338  a01341.html#a3c8\n+00019620: 6437 3633 6361 3138 6334 3537 6339 3336  d763ca18c457c936\n+00019630: 6462 3065 3437 3939 3734 3666 3222 3e20  db0e4799746f2\"> \n+00019640: 2036 3037 3c2f 613e 3c2f 7370 616e 3e3c   607</a></span><\n+00019650: 6120 636c 6173 733d 2263 6f64 6520 686c  a class=\"code hl\n+00019660: 5f66 756e 6374 696f 6e22 2068 7265 663d  _function\" href=\n+00019670: 2261 3031 3334 312e 6874 6d6c 2361 3363  \"a01341.html#a3c\n+00019680: 3864 3736 3363 6131 3863 3435 3763 3933  8d763ca18c457c93\n+00019690: 3664 6230 6534 3739 3937 3436 6632 223e  6db0e4799746f2\">\n+000196a0: 5363 6865 6d65 266c 743b 5343 4845 4d45  Scheme&lt;SCHEME\n+000196b0: 2667 743b 3a3a 436f 6d70 7574 6556 6572  &gt;::ComputeVer\n+000196c0: 7465 784c 696d 6974 4d61 736b 3c2f 613e  texLimitMask</a>\n+000196d0: 2856 4552 5445 5820 3c73 7061 6e20 636c  (VERTEX <span cl\n+000196e0: 6173 733d 226b 6579 776f 7264 223e 636f  ass=\"keyword\">co\n+000196f0: 6e73 743c 2f73 7061 6e3e 2661 6d70 3b20  nst</span>&amp; \n+00019700: 7665 7274 6578 2c3c 2f64 6976 3e0a 3c64  vertex,</div>.<d\n+00019710: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n+00019720: 3c61 2069 643d 226c 3030 3630 3822 206e  <a id=\"l00608\" n\n+00019730: 616d 653d 226c 3030 3630 3822 3e3c 2f61  ame=\"l00608\"></a\n+00019740: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n+00019750: 6e65 6e6f 223e 2020 3630 383c 2f73 7061  neno\">  608</spa\n+00019760: 6e3e 2020 2020 2020 2020 2020 2020 2020  n>              \n+00019770: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00019780: 2020 2020 2020 2020 204d 4153 4b26 616d           MASK&am\n+00019790: 703b 2020 2020 2020 2020 206d 6173 6b2c  p;         mask,\n+000197a0: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n+000197b0: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n+000197c0: 6c30 3036 3039 2220 6e61 6d65 3d22 6c30  l00609\" name=\"l0\n+000197d0: 3036 3039 223e 3c2f 613e 3c73 7061 6e20  0609\"></a><span \n+000197e0: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n+000197f0: 2036 3039 3c2f 7370 616e 3e20 2020 2020   609</span>     \n+00019800: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00019810: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00019820: 2020 3c61 2063 6c61 7373 3d22 636f 6465    <a class=\"code\n+00019830: 2068 6c5f 656e 756d 6572 6174 696f 6e22   hl_enumeration\"\n+00019840: 2068 7265 663d 2261 3031 3333 332e 6874   href=\"a01333.ht\n+00019850: 6d6c 2361 3131 6663 6435 3165 6638 3631  ml#a11fcd51ef861\n+00019860: 3138 6636 3565 3630 3363 3134 3734 3337  18f65e603c147437\n+00019870: 3761 3738 223e 4372 6561 7365 3a3a 5275  7a78\">Crease::Ru\n+00019880: 6c65 3c2f 613e 2020 7275 6c65 293c 7370  le</a>  rule)<sp\n+00019890: 616e 2063 6c61 7373 3d22 6b65 7977 6f72  an class=\"keywor\n+000198a0: 6422 3e20 636f 6e73 7420 3c2f 7370 616e  d\"> const </span\n+000198b0: 3e7b 3c2f 6469 763e 0a3c 6469 7620 636c  >{</div>.<div cl\n+000198c0: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n+000198d0: 3d22 6c30 3036 3130 2220 6e61 6d65 3d22  =\"l00610\" name=\"\n+000198e0: 6c30 3036 3130 223e 3c2f 613e 3c73 7061  l00610\"></a><spa\n+000198f0: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n+00019900: 3e20 2036 3130 3c2f 7370 616e 3e20 3c2f  >  610</span> </\n+00019910: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n+00019920: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n+00019930: 3036 3131 2220 6e61 6d65 3d22 6c30 3036  0611\" name=\"l006\n+00019940: 3131 223e 3c2f 613e 3c73 7061 6e20 636c  11\"></a><span cl\n+00019950: 6173 733d 226c 696e 656e 6f22 3e20 2036  ass=\"lineno\">  6\n+00019960: 3131 3c2f 7370 616e 3e20 2020 203c 7370  11</span>    <sp\n+00019970: 616e 2063 6c61 7373 3d22 6b65 7977 6f72  an class=\"keywor\n+00019980: 6466 6c6f 7722 3e69 663c 2f73 7061 6e3e  dflow\">if</span>\n+00019990: 2028 2872 756c 6520 3d3d 203c 6120 636c   ((rule == <a cl\n+000199a0: 6173 733d 2263 6f64 6520 686c 5f65 6e75  ass=\"code hl_enu\n+000199b0: 6d76 616c 7565 2220 6872 6566 3d22 6130  mvalue\" href=\"a0\n+000199c0: 3133 3333 2e68 746d 6c23 6131 3166 6364  1333.html#a11fcd\n+000199d0: 3531 6566 3836 3131 3866 3635 6536 3033  51ef86118f65e603\n+000199e0: 6331 3437 3433 3737 6137 3861 3631 6431  c1474377a78a61d1\n+000199f0: 3337 6638 3636 3939 3765 6433 3639 3365  37f866997ed3693e\n+00019a00: 3366 6361 6437 3664 6566 3566 223e 4372  3fcad76def5f\">Cr\n+00019a10: 6561 7365 3a3a 5255 4c45 5f53 4d4f 4f54  ease::RULE_SMOOT\n+00019a20: 483c 2f61 3e29 207c 7c20 2872 756c 6520  H</a>) || (rule \n+00019a30: 3d3d 203c 6120 636c 6173 733d 2263 6f64  == <a class=\"cod\n+00019a40: 6520 686c 5f65 6e75 6d76 616c 7565 2220  e hl_enumvalue\" \n+00019a50: 6872 6566 3d22 6130 3133 3333 2e68 746d  href=\"a01333.htm\n+00019a60: 6c23 6131 3166 6364 3531 6566 3836 3131  l#a11fcd51ef8611\n+00019a70: 3866 3635 6536 3033 6331 3437 3433 3737  8f65e603c1474377\n+00019a80: 6137 3861 3433 3436 3963 3239 6438 3537  a78a43469c29d857\n+00019a90: 3961 3633 6263 3164 3632 3437 6432 3632  9a63bc1d6247d262\n+00019aa0: 3437 3939 223e 4372 6561 7365 3a3a 5255  4799\">Crease::RU\n+00019ab0: 4c45 5f44 4152 543c 2f61 3e29 2920 7b3c  LE_DART</a>)) {<\n+00019ac0: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n+00019ad0: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n+00019ae0: 3030 3631 3222 206e 616d 653d 226c 3030  00612\" name=\"l00\n+00019af0: 3631 3222 3e3c 2f61 3e3c 7370 616e 2063  612\"></a><span c\n+00019b00: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n+00019b10: 3631 323c 2f73 7061 6e3e 2020 2020 2020  612</span>      \n+00019b20: 2020 6173 7369 676e 536d 6f6f 7468 4c69    assignSmoothLi\n+00019b30: 6d69 744d 6173 6b28 7665 7274 6578 2c20  mitMask(vertex, \n+00019b40: 6d61 736b 293b 3c2f 6469 763e 0a3c 6469  mask);</div>.<di\n+00019b50: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n+00019b60: 6120 6964 3d22 6c30 3036 3133 2220 6e61  a id=\"l00613\" na\n+00019b70: 6d65 3d22 6c30 3036 3133 223e 3c2f 613e  me=\"l00613\"></a>\n+00019b80: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n+00019b90: 656e 6f22 3e20 2036 3133 3c2f 7370 616e  eno\">  613</span\n+00019ba0: 3e20 2020 207d 203c 7370 616e 2063 6c61  >    } <span cla\n+00019bb0: 7373 3d22 6b65 7977 6f72 6466 6c6f 7722  ss=\"keywordflow\"\n+00019bc0: 3e65 6c73 653c 2f73 7061 6e3e 203c 7370  >else</span> <sp\n+00019bd0: 616e 2063 6c61 7373 3d22 6b65 7977 6f72  an class=\"keywor\n+00019be0: 6466 6c6f 7722 3e69 663c 2f73 7061 6e3e  dflow\">if</span>\n+00019bf0: 2028 7275 6c65 203d 3d20 3c61 2063 6c61   (rule == <a cla\n+00019c00: 7373 3d22 636f 6465 2068 6c5f 656e 756d  ss=\"code hl_enum\n+00019c10: 7661 6c75 6522 2068 7265 663d 2261 3031  value\" href=\"a01\n+00019c20: 3333 332e 6874 6d6c 2361 3131 6663 6435  333.html#a11fcd5\n+00019c30: 3165 6638 3631 3138 6636 3565 3630 3363  1ef86118f65e603c\n+00019c40: 3134 3734 3337 3761 3738 6139 3636 6661  1474377a78a966fa\n+00019c50: 3161 6538 6165 6238 3538 3763 3439 3863  1ae8aeb8587c498c\n+00019c60: 6636 6139 3263 6333 3333 3522 3e43 7265  f6a92cc3335\">Cre\n+00019c70: 6173 653a 3a52 554c 455f 4352 4541 5345  ase::RULE_CREASE\n+00019c80: 3c2f 613e 2920 7b3c 2f64 6976 3e0a 3c64  </a>) {</div>.<d\n+00019c90: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n+00019ca0: 3c61 2069 643d 226c 3030 3631 3422 206e  <a id=\"l00614\" n\n+00019cb0: 616d 653d 226c 3030 3631 3422 3e3c 2f61  ame=\"l00614\"></a\n+00019cc0: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n+00019cd0: 6e65 6e6f 223e 2020 3631 343c 2f73 7061  neno\">  614</spa\n+00019ce0: 6e3e 2020 2020 2020 2020 3c73 7061 6e20  n>        <span \n+00019cf0: 636c 6173 733d 226b 6579 776f 7264 7479  class=\"keywordty\n+00019d00: 7065 223e 666c 6f61 743c 2f73 7061 6e3e  pe\">float</span>\n+00019d10: 202a 2065 6467 6553 6861 7270 6e65 7373   * edgeSharpness\n+00019d20: 203d 2028 3c73 7061 6e20 636c 6173 733d   = (<span class=\n+00019d30: 226b 6579 776f 7264 7479 7065 223e 666c  \"keywordtype\">fl\n+00019d40: 6f61 743c 2f73 7061 6e3e 202a 2961 6c6c  oat</span> *)all\n+00019d50: 6f63 6128 7665 7274 6578 2e47 6574 4e75  oca(vertex.GetNu\n+00019d60: 6d45 6467 6573 2829 202a 203c 7370 616e  mEdges() * <span\n+00019d70: 2063 6c61 7373 3d22 6b65 7977 6f72 6422   class=\"keyword\"\n+00019d80: 3e73 697a 656f 663c 2f73 7061 6e3e 2866  >sizeof</span>(f\n+00019d90: 6c6f 6174 2929 3b3c 2f64 6976 3e0a 3c64  loat));</div>.<d\n+00019da0: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n+00019db0: 3c61 2069 643d 226c 3030 3631 3522 206e  <a id=\"l00615\" n\n+00019dc0: 616d 653d 226c 3030 3631 3522 3e3c 2f61  ame=\"l00615\"></a\n+00019dd0: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n+00019de0: 6e65 6e6f 223e 2020 3631 353c 2f73 7061  neno\">  615</spa\n+00019df0: 6e3e 2020 2020 2020 2020 7665 7274 6578  n>        vertex\n+00019e00: 2e47 6574 5368 6172 706e 6573 7350 6572  .GetSharpnessPer\n+00019e10: 4564 6765 2865 6467 6553 6861 7270 6e65  Edge(edgeSharpne\n+00019e20: 7373 293b 3c2f 6469 763e 0a3c 6469 7620  ss);</div>.<div \n+00019e30: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n+00019e40: 6964 3d22 6c30 3036 3136 2220 6e61 6d65  id=\"l00616\" name\n+00019e50: 3d22 6c30 3036 3136 223e 3c2f 613e 3c73  =\"l00616\"></a><s\n+00019e60: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n+00019e70: 6f22 3e20 2036 3136 3c2f 7370 616e 3e20  o\">  616</span> \n+00019e80: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n+00019e90: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n+00019ea0: 6c30 3036 3137 2220 6e61 6d65 3d22 6c30  l00617\" name=\"l0\n+00019eb0: 3036 3137 223e 3c2f 613e 3c73 7061 6e20  0617\"></a><span \n+00019ec0: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n+00019ed0: 2036 3137 3c2f 7370 616e 3e20 2020 2020   617</span>     \n+00019ee0: 2020 203c 7370 616e 2063 6c61 7373 3d22     <span class=\"\n+00019ef0: 6b65 7977 6f72 6474 7970 6522 3e69 6e74  keywordtype\">int\n+00019f00: 3c2f 7370 616e 3e20 6372 6561 7365 456e  </span> creaseEn\n+00019f10: 6473 5b32 5d3b 3c2f 6469 763e 0a3c 6469  ds[2];</div>.<di\n+00019f20: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n+00019f30: 6120 6964 3d22 6c30 3036 3138 2220 6e61  a id=\"l00618\" na\n+00019f40: 6d65 3d22 6c30 3036 3138 223e 3c2f 613e  me=\"l00618\"></a>\n+00019f50: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n+00019f60: 656e 6f22 3e20 2036 3138 3c2f 7370 616e  eno\">  618</span\n+00019f70: 3e20 2020 2020 2020 203c 6120 636c 6173  >        <a clas\n+00019f80: 733d 2263 6f64 6520 686c 5f63 6c61 7373  s=\"code hl_class\n+00019f90: 2220 6872 6566 3d22 6130 3133 3333 2e68  \" href=\"a01333.h\n+00019fa0: 746d 6c22 3e43 7265 6173 653c 2f61 3e28  tml\">Crease</a>(\n+00019fb0: 5f6f 7074 696f 6e73 292e 3c61 2063 6c61  _options).<a cla\n+00019fc0: 7373 3d22 636f 6465 2068 6c5f 6675 6e63  ss=\"code hl_func\n+00019fd0: 7469 6f6e 2220 6872 6566 3d22 6130 3133  tion\" href=\"a013\n+00019fe0: 3333 2e68 746d 6c23 6133 3632 6632 3265  33.html#a362f22e\n+00019ff0: 3763 6261 3161 3062 3966 3633 6539 6230  7cba1a0b9f63e9b0\n+0001a000: 3037 6331 3966 3239 3622 3e47 6574 5368  07c19f296\">GetSh\n+0001a010: 6172 7045 6467 6550 6169 724f 6643 7265  arpEdgePairOfCre\n+0001a020: 6173 653c 2f61 3e28 6564 6765 5368 6172  ase</a>(edgeShar\n+0001a030: 706e 6573 732c 2076 6572 7465 782e 4765  pness, vertex.Ge\n+0001a040: 744e 756d 4564 6765 7328 292c 2063 7265  tNumEdges(), cre\n+0001a050: 6173 6545 6e64 7329 3b3c 2f64 6976 3e0a  aseEnds);</div>.\n+0001a060: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n+0001a070: 223e 3c61 2069 643d 226c 3030 3631 3922  \"><a id=\"l00619\"\n+0001a080: 206e 616d 653d 226c 3030 3631 3922 3e3c   name=\"l00619\"><\n+0001a090: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n+0001a0a0: 6c69 6e65 6e6f 223e 2020 3631 393c 2f73  lineno\">  619</s\n+0001a0b0: 7061 6e3e 203c 2f64 6976 3e0a 3c64 6976  pan> </div>.<div\n+0001a0c0: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n+0001a0d0: 2069 643d 226c 3030 3632 3022 206e 616d   id=\"l00620\" nam\n+0001a0e0: 653d 226c 3030 3632 3022 3e3c 2f61 3e3c  e=\"l00620\"></a><\n+0001a0f0: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n+0001a100: 6e6f 223e 2020 3632 303c 2f73 7061 6e3e  no\">  620</span>\n+0001a110: 2020 2020 2020 2020 6173 7369 676e 4372          assignCr\n+0001a120: 6561 7365 4c69 6d69 744d 6173 6b28 7665  easeLimitMask(ve\n+0001a130: 7274 6578 2c20 6d61 736b 2c20 6372 6561  rtex, mask, crea\n+0001a140: 7365 456e 6473 293b 3c2f 6469 763e 0a3c  seEnds);</div>.<\n+0001a150: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n+0001a160: 3e3c 6120 6964 3d22 6c30 3036 3231 2220  ><a id=\"l00621\" \n+0001a170: 6e61 6d65 3d22 6c30 3036 3231 223e 3c2f  name=\"l00621\"></\n+0001a180: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n+0001a190: 696e 656e 6f22 3e20 2036 3231 3c2f 7370  ineno\">  621</sp\n+0001a1a0: 616e 3e20 2020 207d 203c 7370 616e 2063  an>    } <span c\n+0001a1b0: 6c61 7373 3d22 6b65 7977 6f72 6466 6c6f  lass=\"keywordflo\n+0001a1c0: 7722 3e65 6c73 653c 2f73 7061 6e3e 207b  w\">else</span> {\n+0001a1d0: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n+0001a1e0: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n+0001a1f0: 6c30 3036 3232 2220 6e61 6d65 3d22 6c30  l00622\" name=\"l0\n+0001a200: 3036 3232 223e 3c2f 613e 3c73 7061 6e20  0622\"></a><span \n+0001a210: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n+0001a220: 2036 3232 3c2f 7370 616e 3e20 2020 2020   622</span>     \n+0001a230: 2020 2061 7373 6967 6e43 6f72 6e65 724c     assignCornerL\n+0001a240: 696d 6974 4d61 736b 2876 6572 7465 782c  imitMask(vertex,\n+0001a250: 206d 6173 6b29 3b3c 2f64 6976 3e0a 3c64   mask);</div>.<d\n+0001a260: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n+0001a270: 3c61 2069 643d 226c 3030 3632 3322 206e  <a id=\"l00623\" n\n+0001a280: 616d 653d 226c 3030 3632 3322 3e3c 2f61  ame=\"l00623\"></a\n+0001a290: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n+0001a2a0: 6e65 6e6f 223e 2020 3632 333c 2f73 7061  neno\">  623</spa\n+0001a2b0: 6e3e 2020 2020 7d3c 2f64 6976 3e0a 3c64  n>    }</div>.<d\n+0001a2c0: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n+0001a2d0: 3c61 2069 643d 226c 3030 3632 3422 206e  <a id=\"l00624\" n\n+0001a2e0: 616d 653d 226c 3030 3632 3422 3e3c 2f61  ame=\"l00624\"></a\n+0001a2f0: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n+0001a300: 6e65 6e6f 223e 2020 3632 343c 2f73 7061  neno\">  624</spa\n+0001a310: 6e3e 7d3c 2f64 6976 3e0a 3c2f 6469 763e  n>}</div>.</div>\n+0001a320: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n+0001a330: 6522 3e3c 6120 6964 3d22 6c30 3036 3235  e\"><a id=\"l00625\n+0001a340: 2220 6e61 6d65 3d22 6c30 3036 3235 223e  \" name=\"l00625\">\n+0001a350: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n+0001a360: 226c 696e 656e 6f22 3e20 2036 3235 3c2f  \"lineno\">  625</\n+0001a370: 7370 616e 3e20 3c2f 6469 763e 0a3c 6469  span> </div>.<di\n+0001a380: 7620 636c 6173 733d 226c 696e 6522 3e3c  v class=\"line\"><\n+0001a390: 6120 6964 3d22 6c30 3036 3236 2220 6e61  a id=\"l00626\" na\n+0001a3a0: 6d65 3d22 6c30 3036 3236 223e 3c2f 613e  me=\"l00626\"></a>\n+0001a3b0: 3c73 7061 6e20 636c 6173 733d 226c 696e  <span class=\"lin\n+0001a3c0: 656e 6f22 3e20 2036 3236 3c2f 7370 616e  eno\">  626</span\n+0001a3d0: 3e3c 7370 616e 2063 6c61 7373 3d22 6b65  ><span class=\"ke\n+0001a3e0: 7977 6f72 6422 3e74 656d 706c 6174 653c  yword\">template<\n+0001a3f0: 2f73 7061 6e3e 2026 6c74 3b53 6368 656d  /span> &lt;Schem\n+0001a400: 6554 7970 6520 5343 4845 4d45 2667 743b  eType SCHEME&gt;\n+0001a410: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n+0001a420: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n+0001a430: 6c30 3036 3237 2220 6e61 6d65 3d22 6c30  l00627\" name=\"l0\n+0001a440: 3036 3237 223e 3c2f 613e 3c73 7061 6e20  0627\"></a><span \n+0001a450: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n+0001a460: 2036 3237 3c2f 7370 616e 3e3c 7370 616e   627</span><span\n+0001a470: 2063 6c61 7373 3d22 6b65 7977 6f72 6422   class=\"keyword\"\n+0001a480: 3e74 656d 706c 6174 653c 2f73 7061 6e3e  >template</span>\n+0001a490: 2026 6c74 3b3c 7370 616e 2063 6c61 7373   &lt;<span class\n+0001a4a0: 3d22 6b65 7977 6f72 6422 3e74 7970 656e  =\"keyword\">typen\n+0001a4b0: 616d 653c 2f73 7061 6e3e 2056 4552 5445  ame</span> VERTE\n+0001a4c0: 582c 203c 7370 616e 2063 6c61 7373 3d22  X, <span class=\"\n+0001a4d0: 6b65 7977 6f72 6422 3e74 7970 656e 616d  keyword\">typenam\n+0001a4e0: 653c 2f73 7061 6e3e 204d 4153 4b26 6774  e</span> MASK&gt\n+0001a4f0: 3b3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ;</div>.<div cla\n+0001a500: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n+0001a510: 226c 3030 3632 3822 206e 616d 653d 226c  \"l00628\" name=\"l\n+0001a520: 3030 3632 3822 3e3c 2f61 3e3c 7370 616e  00628\"></a><span\n+0001a530: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n+0001a540: 2020 3632 383c 2f73 7061 6e3e 3c73 7061    628</span><spa\n+0001a550: 6e20 636c 6173 733d 226b 6579 776f 7264  n class=\"keyword\n+0001a560: 7479 7065 223e 766f 6964 3c2f 7370 616e  type\">void</span\n+0001a570: 3e3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ></div>.<div cla\n+0001a580: 7373 3d22 666f 6c64 6f70 656e 2220 6964  ss=\"foldopen\" id\n+0001a590: 3d22 666f 6c64 6f70 656e 3030 3632 3922  =\"foldopen00629\"\n+0001a5a0: 2064 6174 612d 7374 6172 743d 227b 2220   data-start=\"{\" \n+0001a5b0: 6461 7461 2d65 6e64 3d22 7d22 3e0a 3c64  data-end=\"}\">.<d\n+0001a5c0: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n+0001a5d0: 3c61 2069 643d 226c 3030 3632 3922 206e  <a id=\"l00629\" n\n+0001a5e0: 616d 653d 226c 3030 3632 3922 3e3c 2f61  ame=\"l00629\"></a\n+0001a5f0: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n+0001a600: 6e65 6e6f 223e 3c61 2063 6c61 7373 3d22  neno\"><a class=\"\n+0001a610: 6c69 6e65 2220 6872 6566 3d22 6130 3133  line\" href=\"a013\n+0001a620: 3431 2e68 746d 6c23 6130 3636 3762 3233  41.html#a0667b23\n+0001a630: 6532 3735 6139 6439 3566 6533 3063 3136  e275a9d95fe30c16\n+0001a640: 3561 3864 3162 3937 3522 3e20 2036 3239  5a8d1b975\">  629\n+0001a650: 3c2f 613e 3c2f 7370 616e 3e3c 6120 636c  </a></span><a cl\n+0001a660: 6173 733d 2263 6f64 6520 686c 5f66 756e  ass=\"code hl_fun\n+0001a670: 6374 696f 6e22 2068 7265 663d 2261 3031  ction\" href=\"a01\n+0001a680: 3334 312e 6874 6d6c 2361 3363 3864 3736  341.html#a3c8d76\n+0001a690: 3363 6131 3863 3435 3763 3933 3664 6230  3ca18c457c936db0\n+0001a6a0: 6534 3739 3937 3436 6632 223e 5363 6865  e4799746f2\">Sche\n+0001a6b0: 6d65 266c 743b 5343 4845 4d45 2667 743b  me&lt;SCHEME&gt;\n+0001a6c0: 3a3a 436f 6d70 7574 6556 6572 7465 784c  ::ComputeVertexL\n+0001a6d0: 696d 6974 4d61 736b 3c2f 613e 2856 4552  imitMask</a>(VER\n+0001a6e0: 5445 5820 3c73 7061 6e20 636c 6173 733d  TEX <span class=\n+0001a6f0: 226b 6579 776f 7264 223e 636f 6e73 743c  \"keyword\">const<\n+0001a700: 2f73 7061 6e3e 2661 6d70 3b20 7665 7274  /span>&amp; vert\n+0001a710: 6578 2c3c 2f64 6976 3e0a 3c64 6976 2063  ex,</div>.<div c\n+0001a720: 6c61 7373 3d22 6c69 6e65 223e 3c61 2069  lass=\"line\"><a i\n+0001a730: 643d 226c 3030 3633 3022 206e 616d 653d  d=\"l00630\" name=\n+0001a740: 226c 3030 3633 3022 3e3c 2f61 3e3c 7370  \"l00630\"></a><sp\n+0001a750: 616e 2063 6c61 7373 3d22 6c69 6e65 6e6f  an class=\"lineno\n+0001a760: 223e 2020 3633 303c 2f73 7061 6e3e 2020  \">  630</span>  \n+0001a770: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0001a780: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0001a790: 2020 2020 204d 4153 4b26 616d 703b 2020       MASK&amp;  \n+0001a7a0: 2020 2020 2020 2070 6f73 4d61 736b 2c3c         posMask,<\n+0001a7b0: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n+0001a7c0: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n+0001a7d0: 3030 3633 3122 206e 616d 653d 226c 3030  00631\" name=\"l00\n+0001a7e0: 3633 3122 3e3c 2f61 3e3c 7370 616e 2063  631\"></a><span c\n+0001a7f0: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n+0001a800: 3633 313c 2f73 7061 6e3e 2020 2020 2020  631</span>      \n+0001a810: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0001a820: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0001a830: 204d 4153 4b26 616d 703b 2020 2020 2020   MASK&amp;      \n+0001a840: 2020 2074 616e 314d 6173 6b2c 3c2f 6469     tan1Mask,</di\n+0001a850: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n+0001a860: 696e 6522 3e3c 6120 6964 3d22 6c30 3036  ine\"><a id=\"l006\n+0001a870: 3332 2220 6e61 6d65 3d22 6c30 3036 3332  32\" name=\"l00632\n+0001a880: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n+0001a890: 733d 226c 696e 656e 6f22 3e20 2036 3332  s=\"lineno\">  632\n+0001a8a0: 3c2f 7370 616e 3e20 2020 2020 2020 2020  </span>         \n+0001a8b0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0001a8c0: 2020 2020 2020 2020 2020 2020 2020 4d41                MA\n+0001a8d0: 534b 2661 6d70 3b20 2020 2020 2020 2020  SK&amp;         \n+0001a8e0: 7461 6e32 4d61 736b 2c3c 2f64 6976 3e0a  tan2Mask,</div>.\n+0001a8f0: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n+0001a900: 223e 3c61 2069 643d 226c 3030 3633 3322  \"><a id=\"l00633\"\n+0001a910: 206e 616d 653d 226c 3030 3633 3322 3e3c   name=\"l00633\"><\n+0001a920: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n+0001a930: 6c69 6e65 6e6f 223e 2020 3633 333c 2f73  lineno\">  633</s\n+0001a940: 7061 6e3e 2020 2020 2020 2020 2020 2020  pan>            \n+0001a950: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0001a960: 2020 2020 2020 2020 2020 203c 6120 636c             <a cl\n+0001a970: 6173 733d 2263 6f64 6520 686c 5f65 6e75  ass=\"code hl_enu\n+0001a980: 6d65 7261 7469 6f6e 2220 6872 6566 3d22  meration\" href=\"\n+0001a990: 6130 3133 3333 2e68 746d 6c23 6131 3166  a01333.html#a11f\n+0001a9a0: 6364 3531 6566 3836 3131 3866 3635 6536  cd51ef86118f65e6\n+0001a9b0: 3033 6331 3437 3433 3737 6137 3822 3e43  03c1474377a78\">C\n+0001a9c0: 7265 6173 653a 3a52 756c 653c 2f61 3e20  rease::Rule</a> \n+0001a9d0: 2072 756c 6529 3c73 7061 6e20 636c 6173   rule)<span clas\n+0001a9e0: 733d 226b 6579 776f 7264 223e 2063 6f6e  s=\"keyword\"> con\n+0001a9f0: 7374 203c 2f73 7061 6e3e 7b3c 2f64 6976  st </span>{</div\n+0001aa00: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n+0001aa10: 6e65 223e 3c61 2069 643d 226c 3030 3633  ne\"><a id=\"l0063\n+0001aa20: 3422 206e 616d 653d 226c 3030 3633 3422  4\" name=\"l00634\"\n+0001aa30: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n+0001aa40: 3d22 6c69 6e65 6e6f 223e 2020 3633 343c  =\"lineno\">  634<\n+0001aa50: 2f73 7061 6e3e 203c 2f64 6976 3e0a 3c64  /span> </div>.<d\n+0001aa60: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n+0001aa70: 3c61 2069 643d 226c 3030 3633 3522 206e  <a id=\"l00635\" n\n+0001aa80: 616d 653d 226c 3030 3633 3522 3e3c 2f61  ame=\"l00635\"></a\n+0001aa90: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n+0001aaa0: 6e65 6e6f 223e 2020 3633 353c 2f73 7061  neno\">  635</spa\n+0001aab0: 6e3e 2020 2020 3c73 7061 6e20 636c 6173  n>    <span clas\n+0001aac0: 733d 226b 6579 776f 7264 666c 6f77 223e  s=\"keywordflow\">\n+0001aad0: 6966 3c2f 7370 616e 3e20 2828 7275 6c65  if</span> ((rule\n+0001aae0: 203d 3d20 3c61 2063 6c61 7373 3d22 636f   == <a class=\"co\n+0001aaf0: 6465 2068 6c5f 656e 756d 7661 6c75 6522  de hl_enumvalue\"\n+0001ab00: 2068 7265 663d 2261 3031 3333 332e 6874   href=\"a01333.ht\n+0001ab10: 6d6c 2361 3131 6663 6435 3165 6638 3631  ml#a11fcd51ef861\n+0001ab20: 3138 6636 3565 3630 3363 3134 3734 3337  18f65e603c147437\n+0001ab30: 3761 3738 6136 3164 3133 3766 3836 3639  7a78a61d137f8669\n+0001ab40: 3937 6564 3336 3933 6533 6663 6164 3736  97ed3693e3fcad76\n+0001ab50: 6465 6635 6622 3e43 7265 6173 653a 3a52  def5f\">Crease::R\n+0001ab60: 554c 455f 534d 4f4f 5448 3c2f 613e 2920  ULE_SMOOTH</a>) \n+0001ab70: 7c7c 2028 7275 6c65 203d 3d20 3c61 2063  || (rule == <a c\n+0001ab80: 6c61 7373 3d22 636f 6465 2068 6c5f 656e  lass=\"code hl_en\n+0001ab90: 756d 7661 6c75 6522 2068 7265 663d 2261  umvalue\" href=\"a\n+0001aba0: 3031 3333 332e 6874 6d6c 2361 3131 6663  01333.html#a11fc\n+0001abb0: 6435 3165 6638 3631 3138 6636 3565 3630  d51ef86118f65e60\n+0001abc0: 3363 3134 3734 3337 3761 3738 6134 3334  3c1474377a78a434\n+0001abd0: 3639 6332 3964 3835 3739 6136 3362 6331  69c29d8579a63bc1\n+0001abe0: 6436 3234 3764 3236 3234 3739 3922 3e43  d6247d2624799\">C\n+0001abf0: 7265 6173 653a 3a52 554c 455f 4441 5254  rease::RULE_DART\n+0001ac00: 3c2f 613e 2929 207b 3c2f 6469 763e 0a3c  </a>)) {</div>.<\n+0001ac10: 6469 7620 636c 6173 733d 226c 696e 6522  div class=\"line\"\n+0001ac20: 3e3c 6120 6964 3d22 6c30 3036 3336 2220  ><a id=\"l00636\" \n+0001ac30: 6e61 6d65 3d22 6c30 3036 3336 223e 3c2f  name=\"l00636\"></\n+0001ac40: 613e 3c73 7061 6e20 636c 6173 733d 226c  a><span class=\"l\n+0001ac50: 696e 656e 6f22 3e20 2036 3336 3c2f 7370  ineno\">  636</sp\n+0001ac60: 616e 3e20 2020 2020 2020 2061 7373 6967  an>        assig\n+0001ac70: 6e53 6d6f 6f74 684c 696d 6974 4d61 736b  nSmoothLimitMask\n+0001ac80: 2876 6572 7465 782c 2070 6f73 4d61 736b  (vertex, posMask\n+0001ac90: 293b 3c2f 6469 763e 0a3c 6469 7620 636c  );</div>.<div cl\n+0001aca0: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n+0001acb0: 3d22 6c30 3036 3337 2220 6e61 6d65 3d22  =\"l00637\" name=\"\n+0001acc0: 6c30 3036 3337 223e 3c2f 613e 3c73 7061  l00637\"></a><spa\n+0001acd0: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n+0001ace0: 3e20 2036 3337 3c2f 7370 616e 3e20 2020  >  637</span>   \n+0001acf0: 2020 2020 2061 7373 6967 6e53 6d6f 6f74       assignSmoot\n+0001ad00: 684c 696d 6974 5461 6e67 656e 744d 6173  hLimitTangentMas\n+0001ad10: 6b73 2876 6572 7465 782c 2074 616e 314d  ks(vertex, tan1M\n+0001ad20: 6173 6b2c 2074 616e 324d 6173 6b29 3b3c  ask, tan2Mask);<\n+0001ad30: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n+0001ad40: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n+0001ad50: 3030 3633 3822 206e 616d 653d 226c 3030  00638\" name=\"l00\n+0001ad60: 3633 3822 3e3c 2f61 3e3c 7370 616e 2063  638\"></a><span c\n+0001ad70: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n+0001ad80: 3633 383c 2f73 7061 6e3e 2020 2020 7d20  638</span>    } \n+0001ad90: 3c73 7061 6e20 636c 6173 733d 226b 6579  <span class=\"key\n+0001ada0: 776f 7264 666c 6f77 223e 656c 7365 3c2f  wordflow\">else</\n+0001adb0: 7370 616e 3e20 3c73 7061 6e20 636c 6173  span> <span clas\n+0001adc0: 733d 226b 6579 776f 7264 666c 6f77 223e  s=\"keywordflow\">\n+0001add0: 6966 3c2f 7370 616e 3e20 2872 756c 6520  if</span> (rule \n+0001ade0: 3d3d 203c 6120 636c 6173 733d 2263 6f64  == <a class=\"cod\n+0001adf0: 6520 686c 5f65 6e75 6d76 616c 7565 2220  e hl_enumvalue\" \n+0001ae00: 6872 6566 3d22 6130 3133 3333 2e68 746d  href=\"a01333.htm\n+0001ae10: 6c23 6131 3166 6364 3531 6566 3836 3131  l#a11fcd51ef8611\n+0001ae20: 3866 3635 6536 3033 6331 3437 3433 3737  8f65e603c1474377\n+0001ae30: 6137 3861 3936 3666 6131 6165 3861 6562  a78a966fa1ae8aeb\n+0001ae40: 3835 3837 6334 3938 6366 3661 3932 6363  8587c498cf6a92cc\n+0001ae50: 3333 3335 223e 4372 6561 7365 3a3a 5255  3335\">Crease::RU\n+0001ae60: 4c45 5f43 5245 4153 453c 2f61 3e29 207b  LE_CREASE</a>) {\n+0001ae70: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n+0001ae80: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n+0001ae90: 6c30 3036 3339 2220 6e61 6d65 3d22 6c30  l00639\" name=\"l0\n+0001aea0: 3036 3339 223e 3c2f 613e 3c73 7061 6e20  0639\"></a><span \n+0001aeb0: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n+0001aec0: 2036 3339 3c2f 7370 616e 3e20 2020 2020   639</span>     \n+0001aed0: 2020 203c 7370 616e 2063 6c61 7373 3d22     <span class=\"\n+0001aee0: 6b65 7977 6f72 6474 7970 6522 3e66 6c6f  keywordtype\">flo\n+0001aef0: 6174 3c2f 7370 616e 3e20 2a20 6564 6765  at</span> * edge\n+0001af00: 5368 6172 706e 6573 7320 3d20 283c 7370  Sharpness = (<sp\n+0001af10: 616e 2063 6c61 7373 3d22 6b65 7977 6f72  an class=\"keywor\n+0001af20: 6474 7970 6522 3e66 6c6f 6174 3c2f 7370  dtype\">float</sp\n+0001af30: 616e 3e20 2a29 616c 6c6f 6361 2876 6572  an> *)alloca(ver\n+0001af40: 7465 782e 4765 744e 756d 4564 6765 7328  tex.GetNumEdges(\n+0001af50: 2920 2a20 3c73 7061 6e20 636c 6173 733d  ) * <span class=\n+0001af60: 226b 6579 776f 7264 223e 7369 7a65 6f66  \"keyword\">sizeof\n+0001af70: 3c2f 7370 616e 3e28 666c 6f61 7429 293b  </span>(float));\n+0001af80: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n+0001af90: 733d 226c 696e 6522 3e3c 6120 6964 3d22  s=\"line\"><a id=\"\n+0001afa0: 6c30 3036 3430 2220 6e61 6d65 3d22 6c30  l00640\" name=\"l0\n+0001afb0: 3036 3430 223e 3c2f 613e 3c73 7061 6e20  0640\"></a><span \n+0001afc0: 636c 6173 733d 226c 696e 656e 6f22 3e20  class=\"lineno\"> \n+0001afd0: 2036 3430 3c2f 7370 616e 3e20 2020 2020   640</span>     \n+0001afe0: 2020 2076 6572 7465 782e 4765 7453 6861     vertex.GetSha\n+0001aff0: 7270 6e65 7373 5065 7245 6467 6528 6564  rpnessPerEdge(ed\n+0001b000: 6765 5368 6172 706e 6573 7329 3b3c 2f64  geSharpness);</d\n+0001b010: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n+0001b020: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n+0001b030: 3634 3122 206e 616d 653d 226c 3030 3634  641\" name=\"l0064\n+0001b040: 3122 3e3c 2f61 3e3c 7370 616e 2063 6c61  1\"></a><span cla\n+0001b050: 7373 3d22 6c69 6e65 6e6f 223e 2020 3634  ss=\"lineno\">  64\n+0001b060: 313c 2f73 7061 6e3e 203c 2f64 6976 3e0a  1</span> </div>.\n+0001b070: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n+0001b080: 223e 3c61 2069 643d 226c 3030 3634 3222  \"><a id=\"l00642\"\n+0001b090: 206e 616d 653d 226c 3030 3634 3222 3e3c   name=\"l00642\"><\n+0001b0a0: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n+0001b0b0: 6c69 6e65 6e6f 223e 2020 3634 323c 2f73  lineno\">  642</s\n+0001b0c0: 7061 6e3e 2020 2020 2020 2020 3c73 7061  pan>        <spa\n+0001b0d0: 6e20 636c 6173 733d 226b 6579 776f 7264  n class=\"keyword\n+0001b0e0: 7479 7065 223e 696e 743c 2f73 7061 6e3e  type\">int</span>\n+0001b0f0: 2063 7265 6173 6545 6e64 735b 325d 3b3c   creaseEnds[2];<\n+0001b100: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n+0001b110: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n+0001b120: 3030 3634 3322 206e 616d 653d 226c 3030  00643\" name=\"l00\n+0001b130: 3634 3322 3e3c 2f61 3e3c 7370 616e 2063  643\"></a><span c\n+0001b140: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n+0001b150: 3634 333c 2f73 7061 6e3e 2020 2020 2020  643</span>      \n+0001b160: 2020 3c61 2063 6c61 7373 3d22 636f 6465    <a class=\"code\n+0001b170: 2068 6c5f 636c 6173 7322 2068 7265 663d   hl_class\" href=\n+0001b180: 2261 3031 3333 332e 6874 6d6c 223e 4372  \"a01333.html\">Cr\n+0001b190: 6561 7365 3c2f 613e 285f 6f70 7469 6f6e  ease</a>(_option\n+0001b1a0: 7329 2e3c 6120 636c 6173 733d 2263 6f64  s).<a class=\"cod\n+0001b1b0: 6520 686c 5f66 756e 6374 696f 6e22 2068  e hl_function\" h\n+0001b1c0: 7265 663d 2261 3031 3333 332e 6874 6d6c  ref=\"a01333.html\n+0001b1d0: 2361 3336 3266 3232 6537 6362 6131 6130  #a362f22e7cba1a0\n+0001b1e0: 6239 6636 3365 3962 3030 3763 3139 6632  b9f63e9b007c19f2\n+0001b1f0: 3936 223e 4765 7453 6861 7270 4564 6765  96\">GetSharpEdge\n+0001b200: 5061 6972 4f66 4372 6561 7365 3c2f 613e  PairOfCrease</a>\n+0001b210: 2865 6467 6553 6861 7270 6e65 7373 2c20  (edgeSharpness, \n+0001b220: 7665 7274 6578 2e47 6574 4e75 6d45 6467  vertex.GetNumEdg\n+0001b230: 6573 2829 2c20 6372 6561 7365 456e 6473  es(), creaseEnds\n+0001b240: 293b 3c2f 6469 763e 0a3c 6469 7620 636c  );</div>.<div cl\n+0001b250: 6173 733d 226c 696e 6522 3e3c 6120 6964  ass=\"line\"><a id\n+0001b260: 3d22 6c30 3036 3434 2220 6e61 6d65 3d22  =\"l00644\" name=\"\n+0001b270: 6c30 3036 3434 223e 3c2f 613e 3c73 7061  l00644\"></a><spa\n+0001b280: 6e20 636c 6173 733d 226c 696e 656e 6f22  n class=\"lineno\"\n+0001b290: 3e20 2036 3434 3c2f 7370 616e 3e20 3c2f  >  644</span> </\n+0001b2a0: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n+0001b2b0: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n+0001b2c0: 3036 3435 2220 6e61 6d65 3d22 6c30 3036  0645\" name=\"l006\n+0001b2d0: 3435 223e 3c2f 613e 3c73 7061 6e20 636c  45\"></a><span cl\n+0001b2e0: 6173 733d 226c 696e 656e 6f22 3e20 2036  ass=\"lineno\">  6\n+0001b2f0: 3435 3c2f 7370 616e 3e20 2020 2020 2020  45</span>       \n+0001b300: 2061 7373 6967 6e43 7265 6173 654c 696d   assignCreaseLim\n+0001b310: 6974 4d61 736b 2876 6572 7465 782c 2070  itMask(vertex, p\n+0001b320: 6f73 4d61 736b 2c20 6372 6561 7365 456e  osMask, creaseEn\n+0001b330: 6473 293b 3c2f 6469 763e 0a3c 6469 7620  ds);</div>.<div \n+0001b340: 636c 6173 733d 226c 696e 6522 3e3c 6120  class=\"line\"><a \n+0001b350: 6964 3d22 6c30 3036 3436 2220 6e61 6d65  id=\"l00646\" name\n+0001b360: 3d22 6c30 3036 3436 223e 3c2f 613e 3c73  =\"l00646\"></a><s\n+0001b370: 7061 6e20 636c 6173 733d 226c 696e 656e  pan class=\"linen\n+0001b380: 6f22 3e20 2036 3436 3c2f 7370 616e 3e20  o\">  646</span> \n+0001b390: 2020 2020 2020 2061 7373 6967 6e43 7265         assignCre\n+0001b3a0: 6173 654c 696d 6974 5461 6e67 656e 744d  aseLimitTangentM\n+0001b3b0: 6173 6b73 2876 6572 7465 782c 2074 616e  asks(vertex, tan\n+0001b3c0: 314d 6173 6b2c 2074 616e 324d 6173 6b2c  1Mask, tan2Mask,\n+0001b3d0: 2063 7265 6173 6545 6e64 7329 3b3c 2f64   creaseEnds);</d\n+0001b3e0: 6976 3e0a 3c64 6976 2063 6c61 7373 3d22  iv>.<div class=\"\n+0001b3f0: 6c69 6e65 223e 3c61 2069 643d 226c 3030  line\"><a id=\"l00\n+0001b400: 3634 3722 206e 616d 653d 226c 3030 3634  647\" name=\"l0064\n+0001b410: 3722 3e3c 2f61 3e3c 7370 616e 2063 6c61  7\"></a><span cla\n+0001b420: 7373 3d22 6c69 6e65 6e6f 223e 2020 3634  ss=\"lineno\">  64\n+0001b430: 373c 2f73 7061 6e3e 2020 2020 7d20 3c73  7</span>    } <s\n+0001b440: 7061 6e20 636c 6173 733d 226b 6579 776f  pan class=\"keywo\n+0001b450: 7264 666c 6f77 223e 656c 7365 3c2f 7370  rdflow\">else</sp\n+0001b460: 616e 3e20 7b3c 2f64 6976 3e0a 3c64 6976  an> {</div>.<div\n+0001b470: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n+0001b480: 2069 643d 226c 3030 3634 3822 206e 616d   id=\"l00648\" nam\n+0001b490: 653d 226c 3030 3634 3822 3e3c 2f61 3e3c  e=\"l00648\"></a><\n+0001b4a0: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n+0001b4b0: 6e6f 223e 2020 3634 383c 2f73 7061 6e3e  no\">  648</span>\n+0001b4c0: 2020 2020 2020 2020 6173 7369 676e 436f          assignCo\n+0001b4d0: 726e 6572 4c69 6d69 744d 6173 6b28 7665  rnerLimitMask(ve\n+0001b4e0: 7274 6578 2c20 706f 734d 6173 6b29 3b3c  rtex, posMask);<\n+0001b4f0: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n+0001b500: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n+0001b510: 3030 3634 3922 206e 616d 653d 226c 3030  00649\" name=\"l00\n+0001b520: 3634 3922 3e3c 2f61 3e3c 7370 616e 2063  649\"></a><span c\n+0001b530: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n+0001b540: 3634 393c 2f73 7061 6e3e 2020 2020 2020  649</span>      \n+0001b550: 2020 6173 7369 676e 436f 726e 6572 4c69    assignCornerLi\n+0001b560: 6d69 7454 616e 6765 6e74 4d61 736b 7328  mitTangentMasks(\n+0001b570: 7665 7274 6578 2c20 7461 6e31 4d61 736b  vertex, tan1Mask\n+0001b580: 2c20 7461 6e32 4d61 736b 293b 3c2f 6469  , tan2Mask);</di\n+0001b590: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n+0001b5a0: 696e 6522 3e3c 6120 6964 3d22 6c30 3036  ine\"><a id=\"l006\n+0001b5b0: 3530 2220 6e61 6d65 3d22 6c30 3036 3530  50\" name=\"l00650\n+0001b5c0: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n+0001b5d0: 733d 226c 696e 656e 6f22 3e20 2036 3530  s=\"lineno\">  650\n+0001b5e0: 3c2f 7370 616e 3e20 2020 207d 3c2f 6469  </span>    }</di\n+0001b5f0: 763e 0a3c 6469 7620 636c 6173 733d 226c  v>.<div class=\"l\n+0001b600: 696e 6522 3e3c 6120 6964 3d22 6c30 3036  ine\"><a id=\"l006\n+0001b610: 3531 2220 6e61 6d65 3d22 6c30 3036 3531  51\" name=\"l00651\n+0001b620: 223e 3c2f 613e 3c73 7061 6e20 636c 6173  \"></a><span clas\n+0001b630: 733d 226c 696e 656e 6f22 3e20 2036 3531  s=\"lineno\">  651\n+0001b640: 3c2f 7370 616e 3e7d 3c2f 6469 763e 0a3c  </span>}</div>.<\n+0001b650: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n+0001b660: 3d22 6c69 6e65 223e 3c61 2069 643d 226c  =\"line\"><a id=\"l\n+0001b670: 3030 3635 3222 206e 616d 653d 226c 3030  00652\" name=\"l00\n+0001b680: 3635 3222 3e3c 2f61 3e3c 7370 616e 2063  652\"></a><span c\n+0001b690: 6c61 7373 3d22 6c69 6e65 6e6f 223e 2020  lass=\"lineno\">  \n+0001b6a0: 3635 323c 2f73 7061 6e3e 203c 2f64 6976  652</span> </div\n+0001b6b0: 3e0a 3c64 6976 2063 6c61 7373 3d22 6c69  >.<div class=\"li\n+0001b6c0: 6e65 223e 3c61 2069 643d 226c 3030 3635  ne\"><a id=\"l0065\n+0001b6d0: 3322 206e 616d 653d 226c 3030 3635 3322  3\" name=\"l00653\"\n+0001b6e0: 3e3c 2f61 3e3c 7370 616e 2063 6c61 7373  ></a><span class\n+0001b6f0: 3d22 6c69 6e65 6e6f 223e 2020 3635 333c  =\"lineno\">  653<\n+0001b700: 2f73 7061 6e3e 203c 2f64 6976 3e0a 3c64  /span> </div>.<d\n+0001b710: 6976 2063 6c61 7373 3d22 6c69 6e65 223e  iv class=\"line\">\n+0001b720: 3c61 2069 643d 226c 3030 3635 3422 206e  <a id=\"l00654\" n\n+0001b730: 616d 653d 226c 3030 3635 3422 3e3c 2f61  ame=\"l00654\"></a\n+0001b740: 3e3c 7370 616e 2063 6c61 7373 3d22 6c69  ><span class=\"li\n+0001b750: 6e65 6e6f 223e 2020 3635 343c 2f73 7061  neno\">  654</spa\n+0001b760: 6e3e 7d20 3c73 7061 6e20 636c 6173 733d  n>} <span class=\n+0001b770: 2263 6f6d 6d65 6e74 223e 2f2f 2065 6e64  \"comment\">// end\n+0001b780: 206e 616d 6573 7061 6365 2073 6463 3c2f   namespace sdc</\n+0001b790: 7370 616e 3e3c 2f64 6976 3e0a 3c64 6976  span></div>.<div\n+0001b7a0: 2063 6c61 7373 3d22 6c69 6e65 223e 3c61   class=\"line\"><a\n+0001b7b0: 2069 643d 226c 3030 3635 3522 206e 616d   id=\"l00655\" nam\n+0001b7c0: 653d 226c 3030 3635 3522 3e3c 2f61 3e3c  e=\"l00655\"></a><\n+0001b7d0: 7370 616e 2063 6c61 7373 3d22 6c69 6e65  span class=\"line\n+0001b7e0: 6e6f 223e 2020 3635 353c 2f73 7061 6e3e  no\">  655</span>\n+0001b7f0: 203c 2f64 6976 3e0a 3c64 6976 2063 6c61   </div>.<div cla\n+0001b800: 7373 3d22 6c69 6e65 223e 3c61 2069 643d  ss=\"line\"><a id=\n+0001b810: 226c 3030 3635 3622 206e 616d 653d 226c  \"l00656\" name=\"l\n+0001b820: 3030 3635 3622 3e3c 2f61 3e3c 7370 616e  00656\"></a><span\n+0001b830: 2063 6c61 7373 3d22 6c69 6e65 6e6f 223e   class=\"lineno\">\n+0001b840: 2020 3635 363c 2f73 7061 6e3e 7d20 3c73    656</span>} <s\n+0001b850: 7061 6e20 636c 6173 733d 2263 6f6d 6d65  pan class=\"comme\n+0001b860: 6e74 223e 2f2f 2065 6e64 206e 616d 6573  nt\">// end names\n+0001b870: 7061 6365 204f 5045 4e53 5542 4449 565f  pace OPENSUBDIV_\n+0001b880: 5645 5253 494f 4e3c 2f73 7061 6e3e 3c2f  VERSION</span></\n+0001b890: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n+0001b8a0: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n+0001b8b0: 3036 3537 2220 6e61 6d65 3d22 6c30 3036  0657\" name=\"l006\n+0001b8c0: 3537 223e 3c2f 613e 3c73 7061 6e20 636c  57\"></a><span cl\n+0001b8d0: 6173 733d 226c 696e 656e 6f22 3e20 2036  ass=\"lineno\">  6\n+0001b8e0: 3537 3c2f 7370 616e 3e3c 7370 616e 2063  57</span><span c\n+0001b8f0: 6c61 7373 3d22 6b65 7977 6f72 6422 3e75  lass=\"keyword\">u\n+0001b900: 7369 6e67 206e 616d 6573 7061 6365 203c  sing namespace <\n+0001b910: 2f73 7061 6e3e 4f50 454e 5355 4244 4956  /span>OPENSUBDIV\n+0001b920: 5f56 4552 5349 4f4e 3b3c 2f64 6976 3e0a  _VERSION;</div>.\n+0001b930: 3c64 6976 2063 6c61 7373 3d22 6c69 6e65  <div class=\"line\n+0001b940: 223e 3c61 2069 643d 226c 3030 3635 3822  \"><a id=\"l00658\"\n+0001b950: 206e 616d 653d 226c 3030 3635 3822 3e3c   name=\"l00658\"><\n+0001b960: 2f61 3e3c 7370 616e 2063 6c61 7373 3d22  /a><span class=\"\n+0001b970: 6c69 6e65 6e6f 223e 2020 3635 383c 2f73  lineno\">  658</s\n+0001b980: 7061 6e3e 7d20 3c73 7061 6e20 636c 6173  pan>} <span clas\n+0001b990: 733d 2263 6f6d 6d65 6e74 223e 2f2f 2065  s=\"comment\">// e\n+0001b9a0: 6e64 206e 616d 6573 7061 6365 204f 7065  nd namespace Ope\n+0001b9b0: 6e53 7562 6469 763c 2f73 7061 6e3e 3c2f  nSubdiv</span></\n+0001b9c0: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n+0001b9d0: 226c 696e 6522 3e3c 6120 6964 3d22 6c30  \"line\"><a id=\"l0\n+0001b9e0: 3036 3539 2220 6e61 6d65 3d22 6c30 3036  0659\" name=\"l006\n+0001b9f0: 3539 223e 3c2f 613e 3c73 7061 6e20 636c  59\"></a><span cl\n+0001ba00: 6173 733d 226c 696e 656e 6f22 3e20 2036  ass=\"lineno\">  6\n+0001ba10: 3539 3c2f 7370 616e 3e20 3c2f 6469 763e  59</span> </div>\n+0001ba20: 0a3c 6469 7620 636c 6173 733d 226c 696e  .<div class=\"lin\n+0001ba30: 6522 3e3c 6120 6964 3d22 6c30 3036 3630  e\"><a id=\"l00660\n+0001ba40: 2220 6e61 6d65 3d22 6c30 3036 3630 223e  \" name=\"l00660\">\n+0001ba50: 3c2f 613e 3c73 7061 6e20 636c 6173 733d  </a><span class=\n+0001ba60: 226c 696e 656e 6f22 3e20 2036 3630 3c2f  \"lineno\">  660</\n+0001ba70: 7370 616e 3e3c 7370 616e 2063 6c61 7373  span><span class\n+0001ba80: 3d22 7072 6570 726f 6365 7373 6f72 223e  =\"preprocessor\">\n+0001ba90: 2365 6e64 6966 203c 2f73 7061 6e3e 3c73  #endif </span><s\n+0001baa0: 7061 6e20 636c 6173 733d 2263 6f6d 6d65  pan class=\"comme\n+0001bab0: 6e74 223e 2f2a 204f 5045 4e53 5542 4449  nt\">/* OPENSUBDI\n+0001bac0: 5633 5f53 4443 5f53 4348 454d 455f 4820  V3_SDC_SCHEME_H \n+0001bad0: 2a2f 3c2f 7370 616e 3e3c 7370 616e 2063  */</span><span c\n+0001bae0: 6c61 7373 3d22 7072 6570 726f 6365 7373  lass=\"preprocess\n+0001baf0: 6f72 223e 3c2f 7370 616e 3e3c 2f64 6976  or\"></span></div\n+0001bb00: 3e0a 3c64 6976 2063 6c61 7373 3d22 7474  >.<div class=\"tt\n+0001bb10: 6322 2069 643d 2261 6130 3039 3035 5f68  c\" id=\"aa00905_h\n+0001bb20: 746d 6c22 3e3c 6469 7620 636c 6173 733d  tml\"><div class=\n+0001bb30: 2274 746e 616d 6522 3e3c 6120 6872 6566  \"ttname\"><a href\n+0001bb40: 3d22 6130 3039 3035 2e68 746d 6c22 3e4f  =\"a00905.html\">O\n+0001bb50: 7065 6e53 7562 6469 763c 2f61 3e3c 2f64  penSubdiv</a></d\n+0001bb60: 6976 3e3c 6469 7620 636c 6173 733d 2274  iv><div class=\"t\n+0001bb70: 7464 6566 223e 3c62 3e44 6566 696e 6974  tdef\"><b>Definit\n+0001bb80: 696f 6e3c 2f62 3e20 3c61 2068 7265 663d  ion</b> <a href=\n+0001bb90: 2261 3030 3839 305f 736f 7572 6365 2e68  \"a00890_source.h\n+0001bba0: 746d 6c23 6c30 3030 3332 223e 6c69 6d69  tml#l00032\">limi\n+0001bbb0: 7473 2e68 3a33 323c 2f61 3e3c 2f64 6976  ts.h:32</a></div\n+0001bbc0: 3e3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ></div>.<div cla\n+0001bbd0: 7373 3d22 7474 6322 2069 643d 2261 6130  ss=\"ttc\" id=\"aa0\n+0001bbe0: 3039 3133 5f68 746d 6c5f 6136 3165 6632  0913_html_a61ef2\n+0001bbf0: 6638 6637 3635 6261 3137 6638 3033 3662  f8f765ba17f8036b\n+0001bc00: 6363 3066 3066 6138 3837 6222 3e3c 6469  cc0f0fa887b\"><di\n+0001bc10: 7620 636c 6173 733d 2274 746e 616d 6522  v class=\"ttname\"\n+0001bc20: 3e3c 6120 6872 6566 3d22 6130 3039 3133  ><a href=\"a00913\n+0001bc30: 2e68 746d 6c23 6136 3165 6632 6638 6637  .html#a61ef2f8f7\n+0001bc40: 3635 6261 3137 6638 3033 3662 6363 3066  65ba17f8036bcc0f\n+0001bc50: 3066 6138 3837 6222 3e4f 7065 6e53 7562  0fa887b\">OpenSub\n+0001bc60: 6469 763a 3a4f 5045 4e53 5542 4449 565f  div::OPENSUBDIV_\n+0001bc70: 5645 5253 494f 4e3a 3a53 6463 3a3a 5370  VERSION::Sdc::Sp\n+0001bc80: 6c69 743c 2f61 3e3c 2f64 6976 3e3c 6469  lit</a></div><di\n+0001bc90: 7620 636c 6173 733d 2274 7464 6563 6922  v class=\"ttdeci\"\n+0001bca0: 3e53 706c 6974 3c2f 6469 763e 3c64 6976  >Split</div><div\n+0001bcb0: 2063 6c61 7373 3d22 7474 646f 6322 3e45   class=\"ttdoc\">E\n+0001bcc0: 6e75 6d65 7261 7465 6420 7479 7065 2066  numerated type f\n+0001bcd0: 6f72 2061 6c6c 2066 6163 6520 7370 6c69  or all face spli\n+0001bce0: 7474 696e 6720 7363 6865 6d65 732e 3c2f  tting schemes.</\n+0001bcf0: 6469 763e 3c64 6976 2063 6c61 7373 3d22  div><div class=\"\n+0001bd00: 7474 6465 6622 3e3c 623e 4465 6669 6e69  ttdef\"><b>Defini\n+0001bd10: 7469 6f6e 3c2f 623e 203c 6120 6872 6566  tion</b> <a href\n+0001bd20: 3d22 6130 3134 3932 5f73 6f75 7263 652e  =\"a01492_source.\n+0001bd30: 6874 6d6c 236c 3030 3034 3722 3e74 7970  html#l00047\">typ\n+0001bd40: 6573 2e68 3a34 373c 2f61 3e3c 2f64 6976  es.h:47</a></div\n+0001bd50: 3e3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ></div>.<div cla\n+0001bd60: 7373 3d22 7474 6322 2069 643d 2261 6130  ss=\"ttc\" id=\"aa0\n+0001bd70: 3133 3333 5f68 746d 6c22 3e3c 6469 7620  1333_html\"><div \n+0001bd80: 636c 6173 733d 2274 746e 616d 6522 3e3c  class=\"ttname\"><\n+0001bd90: 6120 6872 6566 3d22 6130 3133 3333 2e68  a href=\"a01333.h\n+0001bda0: 746d 6c22 3e4f 7065 6e53 7562 6469 763a  tml\">OpenSubdiv:\n+0001bdb0: 3a4f 5045 4e53 5542 4449 565f 5645 5253  :OPENSUBDIV_VERS\n+0001bdc0: 494f 4e3a 3a53 6463 3a3a 4372 6561 7365  ION::Sdc::Crease\n+0001bdd0: 3c2f 613e 3c2f 6469 763e 3c64 6976 2063  </a></div><div c\n+0001bde0: 6c61 7373 3d22 7474 646f 6322 3e54 7970  lass=\"ttdoc\">Typ\n+0001bdf0: 6573 2c20 636f 6e73 7461 6e74 7320 616e  es, constants an\n+0001be00: 6420 7574 696c 6974 6965 7320 7265 6c61  d utilities rela\n+0001be10: 7465 6420 746f 2073 656d 692d 7368 6172  ted to semi-shar\n+0001be20: 7020 6372 6561 7369 6e67 20e2 8093 2077  p creasing ... w\n+0001be30: 686f 7365 2069 6d70 6c65 6d65 6e74 6174  hose implementat\n+0001be40: 696f 6e20 6973 2069 6e64 6570 656e 6465  ion is independe\n+0001be50: 6e74 206f 2e2e 2e3c 2f64 6976 3e3c 6469  nt o...</div><di\n+0001be60: 7620 636c 6173 733d 2274 7464 6566 223e  v class=\"ttdef\">\n+0001be70: 3c62 3e44 6566 696e 6974 696f 6e3c 2f62  <b>Definition</b\n+0001be80: 3e20 3c61 2068 7265 663d 2261 3030 3836  > <a href=\"a0086\n+0001be90: 395f 736f 7572 6365 2e68 746d 6c23 6c30  9_source.html#l0\n+0001bea0: 3030 3632 223e 6372 6561 7365 2e68 3a36  0062\">crease.h:6\n+0001beb0: 323c 2f61 3e3c 2f64 6976 3e3c 2f64 6976  2</a></div></div\n+0001bec0: 3e0a 3c64 6976 2063 6c61 7373 3d22 7474  >.<div class=\"tt\n+0001bed0: 6322 2069 643d 2261 6130 3133 3333 5f68  c\" id=\"aa01333_h\n+0001bee0: 746d 6c5f 6131 3166 6364 3531 6566 3836  tml_a11fcd51ef86\n+0001bef0: 3131 3866 3635 6536 3033 6331 3437 3433  118f65e603c14743\n+0001bf00: 3737 6137 3822 3e3c 6469 7620 636c 6173  77a78\"><div clas\n+0001bf10: 733d 2274 746e 616d 6522 3e3c 6120 6872  s=\"ttname\"><a hr\n+0001bf20: 6566 3d22 6130 3133 3333 2e68 746d 6c23  ef=\"a01333.html#\n+0001bf30: 6131 3166 6364 3531 6566 3836 3131 3866  a11fcd51ef86118f\n+0001bf40: 3635 6536 3033 6331 3437 3433 3737 6137  65e603c1474377a7\n+0001bf50: 3822 3e4f 7065 6e53 7562 6469 763a 3a4f  8\">OpenSubdiv::O\n+0001bf60: 5045 4e53 5542 4449 565f 5645 5253 494f  PENSUBDIV_VERSIO\n+0001bf70: 4e3a 3a53 6463 3a3a 4372 6561 7365 3a3a  N::Sdc::Crease::\n+0001bf80: 5275 6c65 3c2f 613e 3c2f 6469 763e 3c64  Rule</a></div><d\n+0001bf90: 6976 2063 6c61 7373 3d22 7474 6465 6369  iv class=\"ttdeci\n+0001bfa0: 223e 5275 6c65 3c2f 6469 763e 3c64 6976  \">Rule</div><div\n+0001bfb0: 2063 6c61 7373 3d22 7474 6465 6622 3e3c   class=\"ttdef\"><\n+0001bfc0: 623e 4465 6669 6e69 7469 6f6e 3c2f 623e  b>Definition</b>\n+0001bfd0: 203c 6120 6872 6566 3d22 6130 3038 3639   <a href=\"a00869\n+0001bfe0: 5f73 6f75 7263 652e 6874 6d6c 236c 3030  _source.html#l00\n+0001bff0: 3038 3222 3e63 7265 6173 652e 683a 3832  082\">crease.h:82\n+0001c000: 3c2f 613e 3c2f 6469 763e 3c2f 6469 763e  </a></div></div>\n+0001c010: 0a3c 6469 7620 636c 6173 733d 2274 7463  .<div class=\"ttc\n+0001c020: 2220 6964 3d22 6161 3031 3333 335f 6874  \" id=\"aa01333_ht\n+0001c030: 6d6c 5f61 3131 6663 6435 3165 6638 3631  ml_a11fcd51ef861\n+0001c040: 3138 6636 3565 3630 3363 3134 3734 3337  18f65e603c147437\n+0001c050: 3761 3738 6134 3334 3639 6332 3964 3835  7a78a43469c29d85\n+0001c060: 3739 6136 3362 6331 6436 3234 3764 3236  79a63bc1d6247d26\n+0001c070: 3234 3739 3922 3e3c 6469 7620 636c 6173  24799\"><div clas\n+0001c080: 733d 2274 746e 616d 6522 3e3c 6120 6872  s=\"ttname\"><a hr\n+0001c090: 6566 3d22 6130 3133 3333 2e68 746d 6c23  ef=\"a01333.html#\n+0001c0a0: 6131 3166 6364 3531 6566 3836 3131 3866  a11fcd51ef86118f\n+0001c0b0: 3635 6536 3033 6331 3437 3433 3737 6137  65e603c1474377a7\n+0001c0c0: 3861 3433 3436 3963 3239 6438 3537 3961  8a43469c29d8579a\n+0001c0d0: 3633 6263 3164 3632 3437 6432 3632 3437  63bc1d6247d26247\n+0001c0e0: 3939 223e 4f70 656e 5375 6264 6976 3a3a  99\">OpenSubdiv::\n+0001c0f0: 4f50 454e 5355 4244 4956 5f56 4552 5349  OPENSUBDIV_VERSI\n+0001c100: 4f4e 3a3a 5364 633a 3a43 7265 6173 653a  ON::Sdc::Crease:\n+0001c110: 3a52 554c 455f 4441 5254 3c2f 613e 3c2f  :RULE_DART</a></\n+0001c120: 6469 763e 3c64 6976 2063 6c61 7373 3d22  div><div class=\"\n+0001c130: 7474 6465 6369 223e 4020 5255 4c45 5f44  ttdeci\">@ RULE_D\n+0001c140: 4152 543c 2f64 6976 3e3c 6469 7620 636c  ART</div><div cl\n+0001c150: 6173 733d 2274 7464 6566 223e 3c62 3e44  ass=\"ttdef\"><b>D\n+0001c160: 6566 696e 6974 696f 6e3c 2f62 3e20 3c61  efinition</b> <a\n+0001c170: 2068 7265 663d 2261 3030 3836 395f 736f   href=\"a00869_so\n+0001c180: 7572 6365 2e68 746d 6c23 6c30 3030 3835  urce.html#l00085\n+0001c190: 223e 6372 6561 7365 2e68 3a38 353c 2f61  \">crease.h:85</a\n+0001c1a0: 3e3c 2f64 6976 3e3c 2f64 6976 3e0a 3c64  ></div></div>.<d\n+0001c1b0: 6976 2063 6c61 7373 3d22 7474 6322 2069  iv class=\"ttc\" i\n+0001c1c0: 643d 2261 6130 3133 3333 5f68 746d 6c5f  d=\"aa01333_html_\n+0001c1d0: 6131 3166 6364 3531 6566 3836 3131 3866  a11fcd51ef86118f\n+0001c1e0: 3635 6536 3033 6331 3437 3433 3737 6137  65e603c1474377a7\n+0001c1f0: 3861 3631 6431 3337 6638 3636 3939 3765  8a61d137f866997e\n+0001c200: 6433 3639 3365 3366 6361 6437 3664 6566  d3693e3fcad76def\n+0001c210: 3566 223e 3c64 6976 2063 6c61 7373 3d22  5f\"><div class=\"\n+0001c220: 7474 6e61 6d65 223e 3c61 2068 7265 663d  ttname\"><a href=\n+0001c230: 2261 3031 3333 332e 6874 6d6c 2361 3131  \"a01333.html#a11\n+0001c240: 6663 6435 3165 6638 3631 3138 6636 3565  fcd51ef86118f65e\n+0001c250: 3630 3363 3134 3734 3337 3761 3738 6136  603c1474377a78a6\n+0001c260: 3164 3133 3766 3836 3639 3937 6564 3336  1d137f866997ed36\n+0001c270: 3933 6533 6663 6164 3736 6465 6635 6622  93e3fcad76def5f\"\n+0001c280: 3e4f 7065 6e53 7562 6469 763a 3a4f 5045  >OpenSubdiv::OPE\n+0001c290: 4e53 5542 4449 565f 5645 5253 494f 4e3a  NSUBDIV_VERSION:\n+0001c2a0: 3a53 6463 3a3a 4372 6561 7365 3a3a 5255  :Sdc::Crease::RU\n+0001c2b0: 4c45 5f53 4d4f 4f54 483c 2f61 3e3c 2f64  LE_SMOOTH</a></d\n+0001c2c0: 6976 3e3c 6469 7620 636c 6173 733d 2274  iv><div class=\"t\n+0001c2d0: 7464 6563 6922 3e40 2052 554c 455f 534d  tdeci\">@ RULE_SM\n+0001c2e0: 4f4f 5448 3c2f 6469 763e 3c64 6976 2063  OOTH</div><div c\n+0001c2f0: 6c61 7373 3d22 7474 6465 6622 3e3c 623e  lass=\"ttdef\"><b>\n+0001c300: 4465 6669 6e69 7469 6f6e 3c2f 623e 203c  Definition</b> <\n+0001c310: 6120 6872 6566 3d22 6130 3038 3639 5f73  a href=\"a00869_s\n+0001c320: 6f75 7263 652e 6874 6d6c 236c 3030 3038  ource.html#l0008\n+0001c330: 3422 3e63 7265 6173 652e 683a 3834 3c2f  4\">crease.h:84</\n+0001c340: 613e 3c2f 6469 763e 3c2f 6469 763e 0a3c  a></div></div>.<\n+0001c350: 6469 7620 636c 6173 733d 2274 7463 2220  div class=\"ttc\" \n+0001c360: 6964 3d22 6161 3031 3333 335f 6874 6d6c  id=\"aa01333_html\n+0001c370: 5f61 3131 6663 6435 3165 6638 3631 3138  _a11fcd51ef86118\n+0001c380: 6636 3565 3630 3363 3134 3734 3337 3761  f65e603c1474377a\n+0001c390: 3738 6139 3636 6661 3161 6538 6165 6238  78a966fa1ae8aeb8\n+0001c3a0: 3538 3763 3439 3863 6636 6139 3263 6333  587c498cf6a92cc3\n+0001c3b0: 3333 3522 3e3c 6469 7620 636c 6173 733d  335\"><div class=\n+0001c3c0: 2274 746e 616d 6522 3e3c 6120 6872 6566  \"ttname\"><a href\n+0001c3d0: 3d22 6130 3133 3333 2e68 746d 6c23 6131  =\"a01333.html#a1\n+0001c3e0: 3166 6364 3531 6566 3836 3131 3866 3635  1fcd51ef86118f65\n+0001c3f0: 6536 3033 6331 3437 3433 3737 6137 3861  e603c1474377a78a\n+0001c400: 3936 3666 6131 6165 3861 6562 3835 3837  966fa1ae8aeb8587\n+0001c410: 6334 3938 6366 3661 3932 6363 3333 3335  c498cf6a92cc3335\n+0001c420: 223e 4f70 656e 5375 6264 6976 3a3a 4f50  \">OpenSubdiv::OP\n+0001c430: 454e 5355 4244 4956 5f56 4552 5349 4f4e  ENSUBDIV_VERSION\n+0001c440: 3a3a 5364 633a 3a43 7265 6173 653a 3a52  ::Sdc::Crease::R\n+0001c450: 554c 455f 4352 4541 5345 3c2f 613e 3c2f  ULE_CREASE</a></\n+0001c460: 6469 763e 3c64 6976 2063 6c61 7373 3d22  div><div class=\"\n+0001c470: 7474 6465 6369 223e 4020 5255 4c45 5f43  ttdeci\">@ RULE_C\n+0001c480: 5245 4153 453c 2f64 6976 3e3c 6469 7620  REASE</div><div \n+0001c490: 636c 6173 733d 2274 7464 6566 223e 3c62  class=\"ttdef\"><b\n+0001c4a0: 3e44 6566 696e 6974 696f 6e3c 2f62 3e20  >Definition</b> \n+0001c4b0: 3c61 2068 7265 663d 2261 3030 3836 395f  <a href=\"a00869_\n+0001c4c0: 736f 7572 6365 2e68 746d 6c23 6c30 3030  source.html#l000\n+0001c4d0: 3836 223e 6372 6561 7365 2e68 3a38 363c  86\">crease.h:86<\n+0001c4e0: 2f61 3e3c 2f64 6976 3e3c 2f64 6976 3e0a  /a></div></div>.\n+0001c4f0: 3c64 6976 2063 6c61 7373 3d22 7474 6322  <div class=\"ttc\"\n+0001c500: 2069 643d 2261 6130 3133 3333 5f68 746d   id=\"aa01333_htm\n+0001c510: 6c5f 6131 3166 6364 3531 6566 3836 3131  l_a11fcd51ef8611\n+0001c520: 3866 3635 6536 3033 6331 3437 3433 3737  8f65e603c1474377\n+0001c530: 6137 3861 6232 3939 6165 6662 3236 3031  a78ab299aefb2601\n+0001c540: 3361 3739 6435 3231 3931 6137 3838 3766  3a79d52191a7887f\n+0001c550: 6561 3533 223e 3c64 6976 2063 6c61 7373  ea53\"><div class\n+0001c560: 3d22 7474 6e61 6d65 223e 3c61 2068 7265  =\"ttname\"><a hre\n+0001c570: 663d 2261 3031 3333 332e 6874 6d6c 2361  f=\"a01333.html#a\n+0001c580: 3131 6663 6435 3165 6638 3631 3138 6636  11fcd51ef86118f6\n+0001c590: 3565 3630 3363 3134 3734 3337 3761 3738  5e603c1474377a78\n+0001c5a0: 6162 3239 3961 6566 6232 3630 3133 6137  ab299aefb26013a7\n+0001c5b0: 3964 3532 3139 3161 3738 3837 6665 6135  9d52191a7887fea5\n+0001c5c0: 3322 3e4f 7065 6e53 7562 6469 763a 3a4f  3\">OpenSubdiv::O\n+0001c5d0: 5045 4e53 5542 4449 565f 5645 5253 494f  PENSUBDIV_VERSIO\n+0001c5e0: 4e3a 3a53 6463 3a3a 4372 6561 7365 3a3a  N::Sdc::Crease::\n+0001c5f0: 5255 4c45 5f55 4e4b 4e4f 574e 3c2f 613e  RULE_UNKNOWN</a>\n+0001c600: 3c2f 6469 763e 3c64 6976 2063 6c61 7373  </div><div class\n+0001c610: 3d22 7474 6465 6369 223e 4020 5255 4c45  =\"ttdeci\">@ RULE\n+0001c620: 5f55 4e4b 4e4f 574e 3c2f 6469 763e 3c64  _UNKNOWN</div><d\n+0001c630: 6976 2063 6c61 7373 3d22 7474 6465 6622  iv class=\"ttdef\"\n+0001c640: 3e3c 623e 4465 6669 6e69 7469 6f6e 3c2f  ><b>Definition</\n+0001c650: 623e 203c 6120 6872 6566 3d22 6130 3038  b> <a href=\"a008\n+0001c660: 3639 5f73 6f75 7263 652e 6874 6d6c 236c  69_source.html#l\n+0001c670: 3030 3038 3322 3e63 7265 6173 652e 683a  00083\">crease.h:\n+0001c680: 3833 3c2f 613e 3c2f 6469 763e 3c2f 6469  83</a></div></di\n+0001c690: 763e 0a3c 6469 7620 636c 6173 733d 2274  v>.<div class=\"t\n+0001c6a0: 7463 2220 6964 3d22 6161 3031 3333 335f  tc\" id=\"aa01333_\n+0001c6b0: 6874 6d6c 5f61 3336 3266 3232 6537 6362  html_a362f22e7cb\n+0001c6c0: 6131 6130 6239 6636 3365 3962 3030 3763  a1a0b9f63e9b007c\n+0001c6d0: 3139 6632 3936 223e 3c64 6976 2063 6c61  19f296\"><div cla\n+0001c6e0: 7373 3d22 7474 6e61 6d65 223e 3c61 2068  ss=\"ttname\"><a h\n+0001c6f0: 7265 663d 2261 3031 3333 332e 6874 6d6c  ref=\"a01333.html\n+0001c700: 2361 3336 3266 3232 6537 6362 6131 6130  #a362f22e7cba1a0\n+0001c710: 6239 6636 3365 3962 3030 3763 3139 6632  b9f63e9b007c19f2\n+0001c720: 3936 223e 4f70 656e 5375 6264 6976 3a3a  96\">OpenSubdiv::\n+0001c730: 4f50 454e 5355 4244 4956 5f56 4552 5349  OPENSUBDIV_VERSI\n+0001c740: 4f4e 3a3a 5364 633a 3a43 7265 6173 653a  ON::Sdc::Crease:\n+0001c750: 3a47 6574 5368 6172 7045 6467 6550 6169  :GetSharpEdgePai\n+0001c760: 724f 6643 7265 6173 653c 2f61 3e3c 2f64  rOfCrease</a></d\n+0001c770: 6976 3e3c 6469 7620 636c 6173 733d 2274  iv><div class=\"t\n+0001c780: 7464 6563 6922 3e76 6f69 6420 4765 7453  tdeci\">void GetS\n+0001c790: 6861 7270 4564 6765 5061 6972 4f66 4372  harpEdgePairOfCr\n+0001c7a0: 6561 7365 2866 6c6f 6174 2063 6f6e 7374  ease(float const\n+0001c7b0: 202a 696e 6369 6465 6e74 4564 6765 5368   *incidentEdgeSh\n+0001c7c0: 6172 706e 6573 732c 2069 6e74 2069 6e63  arpness, int inc\n+0001c7d0: 6964 656e 7445 6467 6543 6f75 6e74 2c20  identEdgeCount, \n+0001c7e0: 696e 7420 7368 6172 7045 6467 6550 6169  int sharpEdgePai\n+0001c7f0: 725b 325d 2920 636f 6e73 743c 2f64 6976  r[2]) const</div\n+0001c800: 3e3c 6469 7620 636c 6173 733d 2274 7464  ><div class=\"ttd\n+0001c810: 6566 223e 3c62 3e44 6566 696e 6974 696f  ef\"><b>Definitio\n+0001c820: 6e3c 2f62 3e20 3c61 2068 7265 663d 2261  n</b> <a href=\"a\n+0001c830: 3030 3836 395f 736f 7572 6365 2e68 746d  00869_source.htm\n+0001c840: 6c23 6c30 3032 3238 223e 6372 6561 7365  l#l00228\">crease\n+0001c850: 2e68 3a32 3238 3c2f 613e 3c2f 6469 763e  .h:228</a></div>\n+0001c860: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n+0001c870: 733d 2274 7463 2220 6964 3d22 6161 3031  s=\"ttc\" id=\"aa01\n+0001c880: 3333 335f 6874 6d6c 5f61 3431 6562 6237  333_html_a41ebb7\n+0001c890: 3564 3238 6335 3937 3333 3238 6530 6533  5d28c5973328e0e3\n+0001c8a0: 3838 3334 3935 6165 6261 223e 3c64 6976  883495aeba\"><div\n+0001c8b0: 2063 6c61 7373 3d22 7474 6e61 6d65 223e   class=\"ttname\">\n+0001c8c0: 3c61 2068 7265 663d 2261 3031 3333 332e  <a href=\"a01333.\n+0001c8d0: 6874 6d6c 2361 3431 6562 6237 3564 3238  html#a41ebb75d28\n+0001c8e0: 6335 3937 3333 3238 6530 6533 3838 3334  c5973328e0e38834\n+0001c8f0: 3935 6165 6261 223e 4f70 656e 5375 6264  95aeba\">OpenSubd\n+0001c900: 6976 3a3a 4f50 454e 5355 4244 4956 5f56  iv::OPENSUBDIV_V\n+0001c910: 4552 5349 4f4e 3a3a 5364 633a 3a43 7265  ERSION::Sdc::Cre\n+0001c920: 6173 653a 3a44 6574 6572 6d69 6e65 5665  ase::DetermineVe\n+0001c930: 7274 6578 5665 7274 6578 5275 6c65 3c2f  rtexVertexRule</\n+0001c940: 613e 3c2f 6469 763e 3c64 6976 2063 6c61  a></div><div cla\n+0001c950: 7373 3d22 7474 6465 6369 223e 5275 6c65  ss=\"ttdeci\">Rule\n+0001c960: 2044 6574 6572 6d69 6e65 5665 7274 6578   DetermineVertex\n+0001c970: 5665 7274 6578 5275 6c65 2866 6c6f 6174  VertexRule(float\n+0001c980: 2076 6572 7465 7853 6861 7270 6e65 7373   vertexSharpness\n+0001c990: 2c20 696e 7420 696e 6369 6465 6e74 4564  , int incidentEd\n+0001c9a0: 6765 436f 756e 742c 2066 6c6f 6174 2063  geCount, float c\n+0001c9b0: 6f6e 7374 202a 696e 6369 6465 6e74 4564  onst *incidentEd\n+0001c9c0: 6765 5368 6172 706e 6573 7329 2063 6f6e  geSharpness) con\n+0001c9d0: 7374 3c2f 6469 763e 3c2f 6469 763e 0a3c  st</div></div>.<\n+0001c9e0: 6469 7620 636c 6173 733d 2274 7463 2220  div class=\"ttc\" \n+0001c9f0: 6964 3d22 6161 3031 3333 335f 6874 6d6c  id=\"aa01333_html\n+0001ca00: 5f61 3564 6661 3638 3130 6635 3130 6661  _a5dfa6810f510fa\n+0001ca10: 6331 6563 3632 3166 6339 6536 6235 3330  c1ec621fc9e6b530\n+0001ca20: 6334 223e 3c64 6976 2063 6c61 7373 3d22  c4\"><div class=\"\n+0001ca30: 7474 6e61 6d65 223e 3c61 2068 7265 663d  ttname\"><a href=\n+0001ca40: 2261 3031 3333 332e 6874 6d6c 2361 3564  \"a01333.html#a5d\n+0001ca50: 6661 3638 3130 6635 3130 6661 6331 6563  fa6810f510fac1ec\n+0001ca60: 3632 3166 6339 6536 6235 3330 6334 223e  621fc9e6b530c4\">\n+0001ca70: 4f70 656e 5375 6264 6976 3a3a 4f50 454e  OpenSubdiv::OPEN\n+0001ca80: 5355 4244 4956 5f56 4552 5349 4f4e 3a3a  SUBDIV_VERSION::\n+0001ca90: 5364 633a 3a43 7265 6173 653a 3a49 7355  Sdc::Crease::IsU\n+0001caa0: 6e69 666f 726d 3c2f 613e 3c2f 6469 763e  niform</a></div>\n+0001cab0: 3c64 6976 2063 6c61 7373 3d22 7474 6465  <div class=\"ttde\n+0001cac0: 6369 223e 626f 6f6c 2049 7355 6e69 666f  ci\">bool IsUnifo\n+0001cad0: 726d 2829 2063 6f6e 7374 3c2f 6469 763e  rm() const</div>\n+0001cae0: 3c64 6976 2063 6c61 7373 3d22 7474 6465  <div class=\"ttde\n+0001caf0: 6622 3e3c 623e 4465 6669 6e69 7469 6f6e  f\"><b>Definition\n+0001cb00: 3c2f 623e 203c 6120 6872 6566 3d22 6130  </b> <a href=\"a0\n+0001cb10: 3038 3639 5f73 6f75 7263 652e 6874 6d6c  0869_source.html\n+0001cb20: 236c 3030 3039 3522 3e63 7265 6173 652e  #l00095\">crease.\n+0001cb30: 683a 3935 3c2f 613e 3c2f 6469 763e 3c2f  h:95</a></div></\n+0001cb40: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n+0001cb50: 2274 7463 2220 6964 3d22 6161 3031 3333  \"ttc\" id=\"aa0133\n+0001cb60: 335f 6874 6d6c 5f61 6231 3366 3635 3466  3_html_ab13f654f\n+0001cb70: 3235 6566 3736 3238 3339 3666 6439 3032  25ef7628396fd902\n+0001cb80: 3239 3162 3866 3936 223e 3c64 6976 2063  291b8f96\"><div c\n+0001cb90: 6c61 7373 3d22 7474 6e61 6d65 223e 3c61  lass=\"ttname\"><a\n+0001cba0: 2068 7265 663d 2261 3031 3333 332e 6874   href=\"a01333.ht\n+0001cbb0: 6d6c 2361 6231 3366 3635 3466 3235 6566  ml#ab13f654f25ef\n+0001cbc0: 3736 3238 3339 3666 6439 3032 3239 3162  7628396fd902291b\n+0001cbd0: 3866 3936 223e 4f70 656e 5375 6264 6976  8f96\">OpenSubdiv\n+0001cbe0: 3a3a 4f50 454e 5355 4244 4956 5f56 4552  ::OPENSUBDIV_VER\n+0001cbf0: 5349 4f4e 3a3a 5364 633a 3a43 7265 6173  SION::Sdc::Creas\n+0001cc00: 653a 3a43 6f6d 7075 7465 4672 6163 7469  e::ComputeFracti\n+0001cc10: 6f6e 616c 5765 6967 6874 4174 5665 7274  onalWeightAtVert\n+0001cc20: 6578 3c2f 613e 3c2f 6469 763e 3c64 6976  ex</a></div><div\n+0001cc30: 2063 6c61 7373 3d22 7474 6465 6369 223e   class=\"ttdeci\">\n+0001cc40: 666c 6f61 7420 436f 6d70 7574 6546 7261  float ComputeFra\n+0001cc50: 6374 696f 6e61 6c57 6569 6768 7441 7456  ctionalWeightAtV\n+0001cc60: 6572 7465 7828 666c 6f61 7420 7665 7274  ertex(float vert\n+0001cc70: 6578 5368 6172 706e 6573 732c 2066 6c6f  exSharpness, flo\n+0001cc80: 6174 2063 6869 6c64 5665 7274 6578 5368  at childVertexSh\n+0001cc90: 6172 706e 6573 732c 2069 6e74 2069 6e63  arpness, int inc\n+0001cca0: 6964 656e 7445 6467 6543 6f75 6e74 2c20  identEdgeCount, \n+0001ccb0: 666c 6f61 7420 636f 6e73 7420 2a69 6e63  float const *inc\n+0001ccc0: 6964 656e 7445 6467 6553 6861 7270 6e65  identEdgeSharpne\n+0001ccd0: 7373 2c20 666c 6f61 7420 636f 6e73 7420  ss, float const \n+0001cce0: 2a63 6869 6c64 4564 6765 7353 6861 7270  *childEdgesSharp\n+0001ccf0: 6e65 7373 2920 636f 6e73 743c 2f64 6976  ness) const</div\n+0001cd00: 3e3c 6469 7620 636c 6173 733d 2274 7464  ><div class=\"ttd\n+0001cd10: 6f63 223e 5472 616e 7369 7469 6f6e 616c  oc\">Transitional\n+0001cd20: 2077 6569 6768 7469 6e67 3a20 5768 656e   weighting: When\n+0001cd30: 2074 6865 2072 756c 6573 2061 7070 6c69   the rules appli\n+0001cd40: 6361 626c 6520 746f 2061 2070 6172 656e  cable to a paren\n+0001cd50: 7420 7665 7274 6578 2061 6e64 2069 7473  t vertex and its\n+0001cd60: 2063 6869 6c64 2064 6966 6665 722c 2e2e   child differ,..\n+0001cd70: 2e3c 2f64 6976 3e3c 2f64 6976 3e0a 3c64  .</div></div>.<d\n+0001cd80: 6976 2063 6c61 7373 3d22 7474 6322 2069  iv class=\"ttc\" i\n+0001cd90: 643d 2261 6130 3133 3337 5f68 746d 6c22  d=\"aa01337_html\"\n+0001cda0: 3e3c 6469 7620 636c 6173 733d 2274 746e  ><div class=\"ttn\n+0001cdb0: 616d 6522 3e3c 6120 6872 6566 3d22 6130  ame\"><a href=\"a0\n+0001cdc0: 3133 3337 2e68 746d 6c22 3e4f 7065 6e53  1337.html\">OpenS\n+0001cdd0: 7562 6469 763a 3a4f 5045 4e53 5542 4449  ubdiv::OPENSUBDI\n+0001cde0: 565f 5645 5253 494f 4e3a 3a53 6463 3a3a  V_VERSION::Sdc::\n+0001cdf0: 4f70 7469 6f6e 733c 2f61 3e3c 2f64 6976  Options</a></div\n+0001ce00: 3e3c 6469 7620 636c 6173 733d 2274 7464  ><div class=\"ttd\n+0001ce10: 6f63 223e 416c 6c20 7375 7070 6f72 7465  oc\">All supporte\n+0001ce20: 6420 6f70 7469 6f6e 7320 6170 706c 7969  d options applyi\n+0001ce30: 6e67 2074 6f20 7375 6264 6976 6973 696f  ng to subdivisio\n+0001ce40: 6e20 7363 6865 6d65 2e3c 2f64 6976 3e3c  n scheme.</div><\n+0001ce50: 6469 7620 636c 6173 733d 2274 7464 6566  div class=\"ttdef\n+0001ce60: 223e 3c62 3e44 6566 696e 6974 696f 6e3c  \"><b>Definition<\n+0001ce70: 2f62 3e20 3c61 2068 7265 663d 2261 3030  /b> <a href=\"a00\n+0001ce80: 3836 305f 736f 7572 6365 2e68 746d 6c23  860_source.html#\n+0001ce90: 6c30 3030 3531 223e 6f70 7469 6f6e 732e  l00051\">options.\n+0001cea0: 683a 3531 3c2f 613e 3c2f 6469 763e 3c2f  h:51</a></div></\n+0001ceb0: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n+0001cec0: 2274 7463 2220 6964 3d22 6161 3031 3334  \"ttc\" id=\"aa0134\n+0001ced0: 315f 6874 6d6c 223e 3c64 6976 2063 6c61  1_html\"><div cla\n+0001cee0: 7373 3d22 7474 6e61 6d65 223e 3c61 2068  ss=\"ttname\"><a h\n+0001cef0: 7265 663d 2261 3031 3334 312e 6874 6d6c  ref=\"a01341.html\n+0001cf00: 223e 4f70 656e 5375 6264 6976 3a3a 4f50  \">OpenSubdiv::OP\n+0001cf10: 454e 5355 4244 4956 5f56 4552 5349 4f4e  ENSUBDIV_VERSION\n+0001cf20: 3a3a 5364 633a 3a53 6368 656d 653c 2f61  ::Sdc::Scheme</a\n+0001cf30: 3e3c 2f64 6976 3e3c 6469 7620 636c 6173  ></div><div clas\n+0001cf40: 733d 2274 7464 6f63 223e 5363 6865 6d65  s=\"ttdoc\">Scheme\n+0001cf50: 2069 7320 6120 636c 6173 7320 7465 6d70   is a class temp\n+0001cf60: 6c61 7465 2077 6869 6368 2070 726f 7669  late which provi\n+0001cf70: 6465 7320 616c 6c20 696d 706c 656d 656e  des all implemen\n+0001cf80: 7461 7469 6f6e 2066 6f72 2074 6865 2073  tation for the s\n+0001cf90: 7562 6469 7669 7369 6f6e 2073 6368 656d  ubdivision schem\n+0001cfa0: 6573 2073 7570 706f 7274 6564 2062 792e  es supported by.\n+0001cfb0: 2e2e 3c2f 6469 763e 3c64 6976 2063 6c61  ..</div><div cla\n+0001cfc0: 7373 3d22 7474 6465 6622 3e3c 623e 4465  ss=\"ttdef\"><b>De\n+0001cfd0: 6669 6e69 7469 6f6e 3c2f 623e 203c 6120  finition</b> <a \n+0001cfe0: 6872 6566 3d22 6130 3038 3633 5f73 6f75  href=\"a00863_sou\n+0001cff0: 7263 652e 6874 6d6c 236c 3030 3036 3622  rce.html#l00066\"\n+0001d000: 3e73 6368 656d 652e 683a 3636 3c2f 613e  >scheme.h:66</a>\n+0001d010: 3c2f 6469 763e 3c2f 6469 763e 0a3c 6469  </div></div>.<di\n+0001d020: 7620 636c 6173 733d 2274 7463 2220 6964  v class=\"ttc\" id\n+0001d030: 3d22 6161 3031 3334 315f 6874 6d6c 5f61  =\"aa01341_html_a\n+0001d040: 3035 3966 3563 3263 3931 3933 6265 3538  059f5c2c9193be58\n+0001d050: 6265 3331 3935 3565 3938 3761 3036 3030  be31955e987a0600\n+0001d060: 223e 3c64 6976 2063 6c61 7373 3d22 7474  \"><div class=\"tt\n+0001d070: 6e61 6d65 223e 3c61 2068 7265 663d 2261  name\"><a href=\"a\n+0001d080: 3031 3334 312e 6874 6d6c 2361 3035 3966  01341.html#a059f\n+0001d090: 3563 3263 3931 3933 6265 3538 6265 3331  5c2c9193be58be31\n+0001d0a0: 3935 3565 3938 3761 3036 3030 223e 4f70  955e987a0600\">Op\n+0001d0b0: 656e 5375 6264 6976 3a3a 4f50 454e 5355  enSubdiv::OPENSU\n+0001d0c0: 4244 4956 5f56 4552 5349 4f4e 3a3a 5364  BDIV_VERSION::Sd\n+0001d0d0: 633a 3a53 6368 656d 653a 3a61 7373 6967  c::Scheme::assig\n+0001d0e0: 6e53 6d6f 6f74 684d 6173 6b46 6f72 4564  nSmoothMaskForEd\n+0001d0f0: 6765 3c2f 613e 3c2f 6469 763e 3c64 6976  ge</a></div><div\n+0001d100: 2063 6c61 7373 3d22 7474 6465 6369 223e   class=\"ttdeci\">\n+0001d110: 766f 6964 2061 7373 6967 6e53 6d6f 6f74  void assignSmoot\n+0001d120: 684d 6173 6b46 6f72 4564 6765 2845 4447  hMaskForEdge(EDG\n+0001d130: 4520 636f 6e73 7420 2661 6d70 3b65 6467  E const &amp;edg\n+0001d140: 652c 204d 4153 4b20 2661 6d70 3b6d 6173  e, MASK &amp;mas\n+0001d150: 6b29 2063 6f6e 7374 3c2f 6469 763e 3c2f  k) const</div></\n+0001d160: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n+0001d170: 2274 7463 2220 6964 3d22 6161 3031 3334  \"ttc\" id=\"aa0134\n+0001d180: 315f 6874 6d6c 5f61 3134 6239 3764 6464  1_html_a14b97ddd\n+0001d190: 6535 6662 6133 3163 6137 6639 3333 3530  e5fba31ca7f93350\n+0001d1a0: 3865 6536 3439 6461 223e 3c64 6976 2063  8ee649da\"><div c\n+0001d1b0: 6c61 7373 3d22 7474 6e61 6d65 223e 3c61  lass=\"ttname\"><a\n+0001d1c0: 2068 7265 663d 2261 3031 3334 312e 6874   href=\"a01341.ht\n+0001d1d0: 6d6c 2361 3134 6239 3764 6464 6535 6662  ml#a14b97ddde5fb\n+0001d1e0: 6133 3163 6137 6639 3333 3530 3865 6536  a31ca7f933508ee6\n+0001d1f0: 3439 6461 223e 4f70 656e 5375 6264 6976  49da\">OpenSubdiv\n+0001d200: 3a3a 4f50 454e 5355 4244 4956 5f56 4552  ::OPENSUBDIV_VER\n+0001d210: 5349 4f4e 3a3a 5364 633a 3a53 6368 656d  SION::Sdc::Schem\n+0001d220: 653a 3a47 6574 546f 706f 6c6f 6769 6361  e::GetTopologica\n+0001d230: 6c53 706c 6974 5479 7065 3c2f 613e 3c2f  lSplitType</a></\n+0001d240: 6469 763e 3c64 6976 2063 6c61 7373 3d22  div><div class=\"\n+0001d250: 7474 6465 6369 223e 7374 6174 6963 2053  ttdeci\">static S\n+0001d260: 706c 6974 2047 6574 546f 706f 6c6f 6769  plit GetTopologi\n+0001d270: 6361 6c53 706c 6974 5479 7065 2829 3c2f  calSplitType()</\n+0001d280: 6469 763e 3c2f 6469 763e 0a3c 6469 7620  div></div>.<div \n+0001d290: 636c 6173 733d 2274 7463 2220 6964 3d22  class=\"ttc\" id=\"\n+0001d2a0: 6161 3031 3334 315f 6874 6d6c 5f61 3234  aa01341_html_a24\n+0001d2b0: 3339 6537 3833 3733 6439 6466 6436 6164  39e78373d9dfd6ad\n+0001d2c0: 3361 6233 3733 6337 6333 3264 6363 223e  3ab373c7c32dcc\">\n+0001d2d0: 3c64 6976 2063 6c61 7373 3d22 7474 6e61  <div class=\"ttna\n+0001d2e0: 6d65 223e 3c61 2068 7265 663d 2261 3031  me\"><a href=\"a01\n+0001d2f0: 3334 312e 6874 6d6c 2361 3234 3339 6537  341.html#a2439e7\n+0001d300: 3833 3733 6439 6466 6436 6164 3361 6233  8373d9dfd6ad3ab3\n+0001d310: 3733 6337 6333 3264 6363 223e 4f70 656e  73c7c32dcc\">Open\n+0001d320: 5375 6264 6976 3a3a 4f50 454e 5355 4244  Subdiv::OPENSUBD\n+0001d330: 4956 5f56 4552 5349 4f4e 3a3a 5364 633a  IV_VERSION::Sdc:\n+0001d340: 3a53 6368 656d 653a 3a61 7373 6967 6e43  :Scheme::assignC\n+0001d350: 7265 6173 654d 6173 6b46 6f72 5665 7274  reaseMaskForVert\n+0001d360: 6578 3c2f 613e 3c2f 6469 763e 3c64 6976  ex</a></div><div\n+0001d370: 2063 6c61 7373 3d22 7474 6465 6369 223e   class=\"ttdeci\">\n+0001d380: 766f 6964 2061 7373 6967 6e43 7265 6173  void assignCreas\n+0001d390: 654d 6173 6b46 6f72 5665 7274 6578 2856  eMaskForVertex(V\n+0001d3a0: 4552 5445 5820 636f 6e73 7420 2661 6d70  ERTEX const &amp\n+0001d3b0: 3b65 6467 652c 204d 4153 4b20 2661 6d70  ;edge, MASK &amp\n+0001d3c0: 3b6d 6173 6b2c 2069 6e74 2063 6f6e 7374  ;mask, int const\n+0001d3d0: 2063 7265 6173 6545 6e64 735b 325d 2920   creaseEnds[2]) \n+0001d3e0: 636f 6e73 743c 2f64 6976 3e3c 2f64 6976  const</div></div\n+0001d3f0: 3e0a 3c64 6976 2063 6c61 7373 3d22 7474  >.<div class=\"tt\n+0001d400: 6322 2069 643d 2261 6130 3133 3431 5f68  c\" id=\"aa01341_h\n+0001d410: 746d 6c5f 6133 3238 6361 3236 6536 3134  tml_a328ca26e614\n+0001d420: 3238 3338 6334 3834 3462 3033 3435 3436  2838c4844b034546\n+0001d430: 6662 3863 3722 3e3c 6469 7620 636c 6173  fb8c7\"><div clas\n+0001d440: 733d 2274 746e 616d 6522 3e3c 6120 6872  s=\"ttname\"><a hr\n+0001d450: 6566 3d22 6130 3133 3431 2e68 746d 6c23  ef=\"a01341.html#\n+0001d460: 6133 3238 6361 3236 6536 3134 3238 3338  a328ca26e6142838\n+0001d470: 6334 3834 3462 3033 3435 3436 6662 3863  c4844b034546fb8c\n+0001d480: 3722 3e4f 7065 6e53 7562 6469 763a 3a4f  7\">OpenSubdiv::O\n+0001d490: 5045 4e53 5542 4449 565f 5645 5253 494f  PENSUBDIV_VERSIO\n+0001d4a0: 4e3a 3a53 6463 3a3a 5363 6865 6d65 3a3a  N::Sdc::Scheme::\n+0001d4b0: 436f 6d70 7574 6556 6572 7465 7856 6572  ComputeVertexVer\n+0001d4c0: 7465 784d 6173 6b3c 2f61 3e3c 2f64 6976  texMask</a></div\n+0001d4d0: 3e3c 6469 7620 636c 6173 733d 2274 7464  ><div class=\"ttd\n+0001d4e0: 6563 6922 3e76 6f69 6420 436f 6d70 7574  eci\">void Comput\n+0001d4f0: 6556 6572 7465 7856 6572 7465 784d 6173  eVertexVertexMas\n+0001d500: 6b28 5645 5254 4558 2063 6f6e 7374 2026  k(VERTEX const &\n+0001d510: 616d 703b 7665 7274 6578 4e65 6967 6862  amp;vertexNeighb\n+0001d520: 6f72 686f 6f64 2c20 4d41 534b 2026 616d  orhood, MASK &am\n+0001d530: 703b 7665 7274 6578 5665 7274 6578 4d61  p;vertexVertexMa\n+0001d540: 736b 2c20 4372 6561 7365 3a3a 5275 6c65  sk, Crease::Rule\n+0001d550: 2070 6172 656e 7452 756c 653d 4372 6561   parentRule=Crea\n+0001d560: 7365 3a3a 5255 4c45 5f55 4e4b 4e4f 574e  se::RULE_UNKNOWN\n+0001d570: 2c20 4372 6561 7365 3a3a 5275 6c65 2063  , Crease::Rule c\n+0001d580: 6869 6c64 5275 6c65 3d43 7265 6173 653a  hildRule=Crease:\n+0001d590: 3a52 554c 455f 554e 4b4e 4f57 4e29 2063  :RULE_UNKNOWN) c\n+0001d5a0: 6f6e 7374 3c2f 6469 763e 3c64 6976 2063  onst</div><div c\n+0001d5b0: 6c61 7373 3d22 7474 646f 6322 3e56 6572  lass=\"ttdoc\">Ver\n+0001d5c0: 7465 782d 7665 7274 6578 206d 6173 6b73  tex-vertex masks\n+0001d5d0: 2049 6620 6b6e 6f77 6e2c 2061 2073 696e   If known, a sin\n+0001d5e0: 676c 6520 5275 6c65 206f 7220 7061 6972  gle Rule or pair\n+0001d5f0: 206f 6620 5275 6c65 7320 6361 6e20 6265   of Rules can be\n+0001d600: 2073 7065 6369 6669 6564 2028 696e 6469   specified (indi\n+0001d610: 6361 7469 6e67 2061 2063 7265 6173 6520  cating a crease \n+0001d620: 7472 2e2e 2e3c 2f64 6976 3e3c 6469 7620  tr...</div><div \n+0001d630: 636c 6173 733d 2274 7464 6566 223e 3c62  class=\"ttdef\"><b\n+0001d640: 3e44 6566 696e 6974 696f 6e3c 2f62 3e20  >Definition</b> \n+0001d650: 3c61 2068 7265 663d 2261 3030 3836 335f  <a href=\"a00863_\n+0001d660: 736f 7572 6365 2e68 746d 6c23 6c30 3035  source.html#l005\n+0001d670: 3132 223e 7363 6865 6d65 2e68 3a35 3132  12\">scheme.h:512\n+0001d680: 3c2f 613e 3c2f 6469 763e 3c2f 6469 763e  </a></div></div>\n+0001d690: 0a3c 6469 7620 636c 6173 733d 2274 7463  .<div class=\"ttc\n+0001d6a0: 2220 6964 3d22 6161 3031 3334 315f 6874  \" id=\"aa01341_ht\n+0001d6b0: 6d6c 5f61 3363 3864 3736 3363 6131 3863  ml_a3c8d763ca18c\n+0001d6c0: 3435 3763 3933 3664 6230 6534 3739 3937  457c936db0e47997\n+0001d6d0: 3436 6632 223e 3c64 6976 2063 6c61 7373  46f2\"><div class\n+0001d6e0: 3d22 7474 6e61 6d65 223e 3c61 2068 7265  =\"ttname\"><a hre\n+0001d6f0: 663d 2261 3031 3334 312e 6874 6d6c 2361  f=\"a01341.html#a\n+0001d700: 3363 3864 3736 3363 6131 3863 3435 3763  3c8d763ca18c457c\n+0001d710: 3933 3664 6230 6534 3739 3937 3436 6632  936db0e4799746f2\n+0001d720: 223e 4f70 656e 5375 6264 6976 3a3a 4f50  \">OpenSubdiv::OP\n+0001d730: 454e 5355 4244 4956 5f56 4552 5349 4f4e  ENSUBDIV_VERSION\n+0001d740: 3a3a 5364 633a 3a53 6368 656d 653a 3a43  ::Sdc::Scheme::C\n+0001d750: 6f6d 7075 7465 5665 7274 6578 4c69 6d69  omputeVertexLimi\n+0001d760: 744d 6173 6b3c 2f61 3e3c 2f64 6976 3e3c  tMask</a></div><\n+0001d770: 6469 7620 636c 6173 733d 2274 7464 6563  div class=\"ttdec\n+0001d780: 6922 3e76 6f69 6420 436f 6d70 7574 6556  i\">void ComputeV\n+0001d790: 6572 7465 784c 696d 6974 4d61 736b 2856  ertexLimitMask(V\n+0001d7a0: 4552 5445 5820 636f 6e73 7420 2661 6d70  ERTEX const &amp\n+0001d7b0: 3b76 6572 7465 784e 6569 6768 626f 7268  ;vertexNeighborh\n+0001d7c0: 6f6f 642c 204d 4153 4b20 2661 6d70 3b70  ood, MASK &amp;p\n+0001d7d0: 6f73 6974 696f 6e4d 6173 6b2c 2043 7265  ositionMask, Cre\n+0001d7e0: 6173 653a 3a52 756c 6520 7665 7274 6578  ase::Rule vertex\n+0001d7f0: 5275 6c65 2920 636f 6e73 743c 2f64 6976  Rule) const</div\n+0001d800: 3e3c 6469 7620 636c 6173 733d 2274 7464  ><div class=\"ttd\n+0001d810: 6f63 223e 4c69 6d69 7420 6d61 736b 7320  oc\">Limit masks \n+0001d820: 666f 7220 7665 7274 6963 6573 20e2 8093  for vertices ...\n+0001d830: 2070 6f73 6974 696f 6e20 616e 6420 7461   position and ta\n+0001d840: 6e67 656e 7473 2054 6865 7365 2070 7265  ngents These pre\n+0001d850: 7375 6d65 2074 6861 7420 6120 7665 7274  sume that a vert\n+0001d860: 6578 2069 7320 7375 6974 6162 6c79 2069  ex is suitably i\n+0001d870: 736f 6c61 7465 6420 666f 722e 2e2e 3c2f  solated for...</\n+0001d880: 6469 763e 3c64 6976 2063 6c61 7373 3d22  div><div class=\"\n+0001d890: 7474 6465 6622 3e3c 623e 4465 6669 6e69  ttdef\"><b>Defini\n+0001d8a0: 7469 6f6e 3c2f 623e 203c 6120 6872 6566  tion</b> <a href\n+0001d8b0: 3d22 6130 3038 3633 5f73 6f75 7263 652e  =\"a00863_source.\n+0001d8c0: 6874 6d6c 236c 3030 3630 3722 3e73 6368  html#l00607\">sch\n+0001d8d0: 656d 652e 683a 3630 373c 2f61 3e3c 2f64  eme.h:607</a></d\n+0001d8e0: 6976 3e3c 2f64 6976 3e0a 3c64 6976 2063  iv></div>.<div c\n+0001d8f0: 6c61 7373 3d22 7474 6322 2069 643d 2261  lass=\"ttc\" id=\"a\n+0001d900: 6130 3133 3431 5f68 746d 6c5f 6134 6638  a01341_html_a4f8\n+0001d910: 6535 3539 6239 3362 6261 6632 3665 6130  e559b93bbaf26ea0\n+0001d920: 6434 3062 3166 6132 6631 3934 6622 3e3c  d40b1fa2f194f\"><\n+0001d930: 6469 7620 636c 6173 733d 2274 746e 616d  div class=\"ttnam\n+0001d940: 6522 3e3c 6120 6872 6566 3d22 6130 3133  e\"><a href=\"a013\n+0001d950: 3431 2e68 746d 6c23 6134 6638 6535 3539  41.html#a4f8e559\n+0001d960: 6239 3362 6261 6632 3665 6130 6434 3062  b93bbaf26ea0d40b\n+0001d970: 3166 6132 6631 3934 6622 3e4f 7065 6e53  1fa2f194f\">OpenS\n+0001d980: 7562 6469 763a 3a4f 5045 4e53 5542 4449  ubdiv::OPENSUBDI\n+0001d990: 565f 5645 5253 494f 4e3a 3a53 6463 3a3a  V_VERSION::Sdc::\n+0001d9a0: 5363 6865 6d65 3a3a 6173 7369 676e 4372  Scheme::assignCr\n+0001d9b0: 6561 7365 4c69 6d69 7454 616e 6765 6e74  easeLimitTangent\n+0001d9c0: 4d61 736b 733c 2f61 3e3c 2f64 6976 3e3c  Masks</a></div><\n+0001d9d0: 6469 7620 636c 6173 733d 2274 7464 6563  div class=\"ttdec\n+0001d9e0: 6922 3e76 6f69 6420 6173 7369 676e 4372  i\">void assignCr\n+0001d9f0: 6561 7365 4c69 6d69 7454 616e 6765 6e74  easeLimitTangent\n+0001da00: 4d61 736b 7328 5645 5254 4558 2063 6f6e  Masks(VERTEX con\n+0001da10: 7374 2026 616d 703b 7665 7274 6578 2c20  st &amp;vertex, \n+0001da20: 4d41 534b 2026 616d 703b 7461 6e31 2c20  MASK &amp;tan1, \n+0001da30: 4d41 534b 2026 616d 703b 7461 6e32 2c20  MASK &amp;tan2, \n+0001da40: 696e 7420 636f 6e73 7420 6372 6561 7365  int const crease\n+0001da50: 456e 6473 5b32 5d29 2063 6f6e 7374 3c2f  Ends[2]) const</\n+0001da60: 6469 763e 3c2f 6469 763e 0a3c 6469 7620  div></div>.<div \n+0001da70: 636c 6173 733d 2274 7463 2220 6964 3d22  class=\"ttc\" id=\"\n+0001da80: 6161 3031 3334 315f 6874 6d6c 5f61 3533  aa01341_html_a53\n+0001da90: 3130 3034 3731 3663 3037 6161 6435 3433  1004716c07aad543\n+0001daa0: 3663 6232 6462 3237 6531 6563 3234 223e  6cb2db27e1ec24\">\n+0001dab0: 3c64 6976 2063 6c61 7373 3d22 7474 6e61  <div class=\"ttna\n+0001dac0: 6d65 223e 3c61 2068 7265 663d 2261 3031  me\"><a href=\"a01\n+0001dad0: 3334 312e 6874 6d6c 2361 3533 3130 3034  341.html#a531004\n+0001dae0: 3731 3663 3037 6161 6435 3433 3663 6232  716c07aad5436cb2\n+0001daf0: 6462 3237 6531 6563 3234 223e 4f70 656e  db27e1ec24\">Open\n+0001db00: 5375 6264 6976 3a3a 4f50 454e 5355 4244  Subdiv::OPENSUBD\n+0001db10: 4956 5f56 4552 5349 4f4e 3a3a 5364 633a  IV_VERSION::Sdc:\n+0001db20: 3a53 6368 656d 653a 3a47 6574 5265 6775  :Scheme::GetRegu\n+0001db30: 6c61 7246 6163 6553 697a 653c 2f61 3e3c  larFaceSize</a><\n+0001db40: 2f64 6976 3e3c 6469 7620 636c 6173 733d  /div><div class=\n+0001db50: 2274 7464 6563 6922 3e73 7461 7469 6320  \"ttdeci\">static \n+0001db60: 696e 7420 4765 7452 6567 756c 6172 4661  int GetRegularFa\n+0001db70: 6365 5369 7a65 2829 3c2f 6469 763e 3c2f  ceSize()</div></\n+0001db80: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n+0001db90: 2274 7463 2220 6964 3d22 6161 3031 3334  \"ttc\" id=\"aa0134\n+0001dba0: 315f 6874 6d6c 5f61 3536 3936 3461 3463  1_html_a56964a4c\n+0001dbb0: 3738 3361 6131 3565 6331 6638 3139 3330  783aa15ec1f81930\n+0001dbc0: 3665 6539 6632 3134 223e 3c64 6976 2063  6ee9f214\"><div c\n+0001dbd0: 6c61 7373 3d22 7474 6e61 6d65 223e 3c61  lass=\"ttname\"><a\n+0001dbe0: 2068 7265 663d 2261 3031 3334 312e 6874   href=\"a01341.ht\n+0001dbf0: 6d6c 2361 3536 3936 3461 3463 3738 3361  ml#a56964a4c783a\n+0001dc00: 6131 3565 6331 6638 3139 3330 3665 6539  a15ec1f819306ee9\n+0001dc10: 6632 3134 223e 4f70 656e 5375 6264 6976  f214\">OpenSubdiv\n+0001dc20: 3a3a 4f50 454e 5355 4244 4956 5f56 4552  ::OPENSUBDIV_VER\n+0001dc30: 5349 4f4e 3a3a 5364 633a 3a53 6368 656d  SION::Sdc::Schem\n+0001dc40: 653a 3a61 7373 6967 6e43 7265 6173 654d  e::assignCreaseM\n+0001dc50: 6173 6b46 6f72 4564 6765 3c2f 613e 3c2f  askForEdge</a></\n+0001dc60: 6469 763e 3c64 6976 2063 6c61 7373 3d22  div><div class=\"\n+0001dc70: 7474 6465 6369 223e 766f 6964 2061 7373  ttdeci\">void ass\n+0001dc80: 6967 6e43 7265 6173 654d 6173 6b46 6f72  ignCreaseMaskFor\n+0001dc90: 4564 6765 2845 4447 4520 636f 6e73 7420  Edge(EDGE const \n+0001dca0: 2661 6d70 3b65 6467 652c 204d 4153 4b20  &amp;edge, MASK \n+0001dcb0: 2661 6d70 3b6d 6173 6b29 2063 6f6e 7374  &amp;mask) const\n+0001dcc0: 3c2f 6469 763e 3c64 6976 2063 6c61 7373  </div><div class\n+0001dcd0: 3d22 7474 6465 6622 3e3c 623e 4465 6669  =\"ttdef\"><b>Defi\n+0001dce0: 6e69 7469 6f6e 3c2f 623e 203c 6120 6872  nition</b> <a hr\n+0001dcf0: 6566 3d22 6130 3038 3633 5f73 6f75 7263  ef=\"a00863_sourc\n+0001dd00: 652e 6874 6d6c 236c 3030 3331 3722 3e73  e.html#l00317\">s\n+0001dd10: 6368 656d 652e 683a 3331 373c 2f61 3e3c  cheme.h:317</a><\n+0001dd20: 2f64 6976 3e3c 2f64 6976 3e0a 3c64 6976  /div></div>.<div\n+0001dd30: 2063 6c61 7373 3d22 7474 6322 2069 643d   class=\"ttc\" id=\n+0001dd40: 2261 6130 3133 3431 5f68 746d 6c5f 6135  \"aa01341_html_a5\n+0001dd50: 6235 6135 3337 3761 3031 6562 3462 6134  b5a5377a01eb4ba4\n+0001dd60: 3436 6531 3734 6566 6639 6534 3561 6322  46e174eff9e45ac\"\n+0001dd70: 3e3c 6469 7620 636c 6173 733d 2274 746e  ><div class=\"ttn\n+0001dd80: 616d 6522 3e3c 6120 6872 6566 3d22 6130  ame\"><a href=\"a0\n+0001dd90: 3133 3431 2e68 746d 6c23 6135 6235 6135  1341.html#a5b5a5\n+0001dda0: 3337 3761 3031 6562 3462 6134 3436 6531  377a01eb4ba446e1\n+0001ddb0: 3734 6566 6639 6534 3561 6322 3e4f 7065  74eff9e45ac\">Ope\n+0001ddc0: 6e53 7562 6469 763a 3a4f 5045 4e53 5542  nSubdiv::OPENSUB\n+0001ddd0: 4449 565f 5645 5253 494f 4e3a 3a53 6463  DIV_VERSION::Sdc\n+0001dde0: 3a3a 5363 6865 6d65 3a3a 436f 6d70 7574  ::Scheme::Comput\n+0001ddf0: 6545 6467 6556 6572 7465 784d 6173 6b3c  eEdgeVertexMask<\n+0001de00: 2f61 3e3c 2f64 6976 3e3c 6469 7620 636c  /a></div><div cl\n+0001de10: 6173 733d 2274 7464 6563 6922 3e76 6f69  ass=\"ttdeci\">voi\n+0001de20: 6420 436f 6d70 7574 6545 6467 6556 6572  d ComputeEdgeVer\n+0001de30: 7465 784d 6173 6b28 4544 4745 2063 6f6e  texMask(EDGE con\n+0001de40: 7374 2026 616d 703b 6564 6765 4e65 6967  st &amp;edgeNeig\n+0001de50: 6862 6f72 686f 6f64 2c20 4d41 534b 2026  hborhood, MASK &\n+0001de60: 616d 703b 6564 6765 5665 7274 6578 4d61  amp;edgeVertexMa\n+0001de70: 736b 2c20 4372 6561 7365 3a3a 5275 6c65  sk, Crease::Rule\n+0001de80: 2070 6172 656e 7452 756c 653d 4372 6561   parentRule=Crea\n+0001de90: 7365 3a3a 5255 4c45 5f55 4e4b 4e4f 574e  se::RULE_UNKNOWN\n+0001dea0: 2c20 4372 6561 7365 3a3a 5275 6c65 2063  , Crease::Rule c\n+0001deb0: 6869 6c64 5275 6c65 3d43 7265 6173 653a  hildRule=Crease:\n+0001dec0: 3a52 554c 455f 554e 4b4e 4f57 4e29 2063  :RULE_UNKNOWN) c\n+0001ded0: 6f6e 7374 3c2f 6469 763e 3c64 6976 2063  onst</div><div c\n+0001dee0: 6c61 7373 3d22 7474 646f 6322 3e45 6467  lass=\"ttdoc\">Edg\n+0001def0: 652d 7665 7274 6578 206d 6173 6b73 2049  e-vertex masks I\n+0001df00: 6620 6b6e 6f77 6e2c 2074 6865 2052 756c  f known, the Rul\n+0001df10: 6520 666f 7220 7468 6520 6564 6765 2061  e for the edge a\n+0001df20: 6e64 2f6f 7220 7468 6520 6465 7269 7665  nd/or the derive\n+0001df30: 6420 7665 7274 6578 2063 616e 2062 6520  d vertex can be \n+0001df40: 7370 6563 6966 6965 6420 746f 2061 6363  specified to acc\n+0001df50: 656c 2e2e 2e3c 2f64 6976 3e3c 6469 7620  el...</div><div \n+0001df60: 636c 6173 733d 2274 7464 6566 223e 3c62  class=\"ttdef\"><b\n+0001df70: 3e44 6566 696e 6974 696f 6e3c 2f62 3e20  >Definition</b> \n+0001df80: 3c61 2068 7265 663d 2261 3030 3836 335f  <a href=\"a00863_\n+0001df90: 736f 7572 6365 2e68 746d 6c23 6c30 3033  source.html#l003\n+0001dfa0: 3932 223e 7363 6865 6d65 2e68 3a33 3932  92\">scheme.h:392\n+0001dfb0: 3c2f 613e 3c2f 6469 763e 3c2f 6469 763e  </a></div></div>\n+0001dfc0: 0a3c 6469 7620 636c 6173 733d 2274 7463  .<div class=\"ttc\n+0001dfd0: 2220 6964 3d22 6161 3031 3334 315f 6874  \" id=\"aa01341_ht\n+0001dfe0: 6d6c 5f61 3563 3134 3263 3464 3963 3666  ml_a5c142c4d9c6f\n+0001dff0: 3362 6536 3662 6430 3138 3731 3335 3931  3be66bd018713591\n+0001e000: 6666 6362 223e 3c64 6976 2063 6c61 7373  ffcb\"><div class\n+0001e010: 3d22 7474 6e61 6d65 223e 3c61 2068 7265  =\"ttname\"><a hre\n+0001e020: 663d 2261 3031 3334 312e 6874 6d6c 2361  f=\"a01341.html#a\n+0001e030: 3563 3134 3263 3464 3963 3666 3362 6536  5c142c4d9c6f3be6\n+0001e040: 3662 6430 3138 3731 3335 3931 6666 6362  6bd018713591ffcb\n+0001e050: 223e 4f70 656e 5375 6264 6976 3a3a 4f50  \">OpenSubdiv::OP\n+0001e060: 454e 5355 4244 4956 5f56 4552 5349 4f4e  ENSUBDIV_VERSION\n+0001e070: 3a3a 5364 633a 3a53 6368 656d 653a 3a53  ::Sdc::Scheme::S\n+0001e080: 6368 656d 653c 2f61 3e3c 2f64 6976 3e3c  cheme</a></div><\n+0001e090: 6469 7620 636c 6173 733d 2274 7464 6563  div class=\"ttdec\n+0001e0a0: 6922 3e53 6368 656d 6528 293c 2f64 6976  i\">Scheme()</div\n+0001e0b0: 3e3c 6469 7620 636c 6173 733d 2274 7464  ><div class=\"ttd\n+0001e0c0: 6566 223e 3c62 3e44 6566 696e 6974 696f  ef\"><b>Definitio\n+0001e0d0: 6e3c 2f62 3e20 3c61 2068 7265 663d 2261  n</b> <a href=\"a\n+0001e0e0: 3030 3836 335f 736f 7572 6365 2e68 746d  00863_source.htm\n+0001e0f0: 6c23 6c30 3030 3730 223e 7363 6865 6d65  l#l00070\">scheme\n+0001e100: 2e68 3a37 303c 2f61 3e3c 2f64 6976 3e3c  .h:70</a></div><\n+0001e110: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n+0001e120: 3d22 7474 6322 2069 643d 2261 6130 3133  =\"ttc\" id=\"aa013\n+0001e130: 3431 5f68 746d 6c5f 6137 3336 6331 3039  41_html_a736c109\n+0001e140: 3434 6362 3932 3162 3333 3466 6264 3862  44cb921b334fbd8b\n+0001e150: 3831 3836 3664 3539 6622 3e3c 6469 7620  81866d59f\"><div \n+0001e160: 636c 6173 733d 2274 746e 616d 6522 3e3c  class=\"ttname\"><\n+0001e170: 6120 6872 6566 3d22 6130 3133 3431 2e68  a href=\"a01341.h\n+0001e180: 746d 6c23 6137 3336 6331 3039 3434 6362  tml#a736c10944cb\n+0001e190: 3932 3162 3333 3466 6264 3862 3831 3836  921b334fbd8b8186\n+0001e1a0: 3664 3539 6622 3e4f 7065 6e53 7562 6469  6d59f\">OpenSubdi\n+0001e1b0: 763a 3a4f 5045 4e53 5542 4449 565f 5645  v::OPENSUBDIV_VE\n+0001e1c0: 5253 494f 4e3a 3a53 6463 3a3a 5363 6865  RSION::Sdc::Sche\n+0001e1d0: 6d65 3a3a 6173 7369 676e 536d 6f6f 7468  me::assignSmooth\n+0001e1e0: 4c69 6d69 744d 6173 6b3c 2f61 3e3c 2f64  LimitMask</a></d\n+0001e1f0: 6976 3e3c 6469 7620 636c 6173 733d 2274  iv><div class=\"t\n+0001e200: 7464 6563 6922 3e76 6f69 6420 6173 7369  tdeci\">void assi\n+0001e210: 676e 536d 6f6f 7468 4c69 6d69 744d 6173  gnSmoothLimitMas\n+0001e220: 6b28 5645 5254 4558 2063 6f6e 7374 2026  k(VERTEX const &\n+0001e230: 616d 703b 7665 7274 6578 2c20 4d41 534b  amp;vertex, MASK\n+0001e240: 2026 616d 703b 706f 7329 2063 6f6e 7374   &amp;pos) const\n+0001e250: 3c2f 6469 763e 3c2f 6469 763e 0a3c 6469  </div></div>.<di\n+0001e260: 7620 636c 6173 733d 2274 7463 2220 6964  v class=\"ttc\" id\n+0001e270: 3d22 6161 3031 3334 315f 6874 6d6c 5f61  =\"aa01341_html_a\n+0001e280: 3733 6366 3531 6534 3331 3563 6138 3665  73cf51e4315ca86e\n+0001e290: 3565 3061 3339 3534 6339 3266 3866 3734  5e0a3954c92f8f74\n+0001e2a0: 223e 3c64 6976 2063 6c61 7373 3d22 7474  \"><div class=\"tt\n+0001e2b0: 6e61 6d65 223e 3c61 2068 7265 663d 2261  name\"><a href=\"a\n+0001e2c0: 3031 3334 312e 6874 6d6c 2361 3733 6366  01341.html#a73cf\n+0001e2d0: 3531 6534 3331 3563 6138 3665 3565 3061  51e4315ca86e5e0a\n+0001e2e0: 3339 3534 6339 3266 3866 3734 223e 4f70  3954c92f8f74\">Op\n+0001e2f0: 656e 5375 6264 6976 3a3a 4f50 454e 5355  enSubdiv::OPENSU\n+0001e300: 4244 4956 5f56 4552 5349 4f4e 3a3a 5364  BDIV_VERSION::Sd\n+0001e310: 633a 3a53 6368 656d 653a 3a47 6574 4c6f  c::Scheme::GetLo\n+0001e320: 6361 6c4e 6569 6768 626f 7268 6f6f 6453  calNeighborhoodS\n+0001e330: 697a 653c 2f61 3e3c 2f64 6976 3e3c 6469  ize</a></div><di\n+0001e340: 7620 636c 6173 733d 2274 7464 6563 6922  v class=\"ttdeci\"\n+0001e350: 3e73 7461 7469 6320 696e 7420 4765 744c  >static int GetL\n+0001e360: 6f63 616c 4e65 6967 6862 6f72 686f 6f64  ocalNeighborhood\n+0001e370: 5369 7a65 2829 3c2f 6469 763e 3c2f 6469  Size()</div></di\n+0001e380: 763e 0a3c 6469 7620 636c 6173 733d 2274  v>.<div class=\"t\n+0001e390: 7463 2220 6964 3d22 6161 3031 3334 315f  tc\" id=\"aa01341_\n+0001e3a0: 6874 6d6c 5f61 3737 3634 3466 3639 6564  html_a77644f69ed\n+0001e3b0: 6530 3366 6136 3232 3232 6436 3061 3939  e03fa62222d60a99\n+0001e3c0: 3937 3032 3338 223e 3c64 6976 2063 6c61  970238\"><div cla\n+0001e3d0: 7373 3d22 7474 6e61 6d65 223e 3c61 2068  ss=\"ttname\"><a h\n+0001e3e0: 7265 663d 2261 3031 3334 312e 6874 6d6c  ref=\"a01341.html\n+0001e3f0: 2361 3737 3634 3466 3639 6564 6530 3366  #a77644f69ede03f\n+0001e400: 6136 3232 3232 6436 3061 3939 3937 3032  a62222d60a999702\n+0001e410: 3338 223e 4f70 656e 5375 6264 6976 3a3a  38\">OpenSubdiv::\n+0001e420: 4f50 454e 5355 4244 4956 5f56 4552 5349  OPENSUBDIV_VERSI\n+0001e430: 4f4e 3a3a 5364 633a 3a53 6368 656d 653a  ON::Sdc::Scheme:\n+0001e440: 3a61 7373 6967 6e43 6f72 6e65 724d 6173  :assignCornerMas\n+0001e450: 6b46 6f72 5665 7274 6578 3c2f 613e 3c2f  kForVertex</a></\n+0001e460: 6469 763e 3c64 6976 2063 6c61 7373 3d22  div><div class=\"\n+0001e470: 7474 6465 6369 223e 766f 6964 2061 7373  ttdeci\">void ass\n+0001e480: 6967 6e43 6f72 6e65 724d 6173 6b46 6f72  ignCornerMaskFor\n+0001e490: 5665 7274 6578 2856 4552 5445 5820 636f  Vertex(VERTEX co\n+0001e4a0: 6e73 7420 2661 6d70 3b65 6467 652c 204d  nst &amp;edge, M\n+0001e4b0: 4153 4b20 2661 6d70 3b6d 6173 6b29 2063  ASK &amp;mask) c\n+0001e4c0: 6f6e 7374 3c2f 6469 763e 3c64 6976 2063  onst</div><div c\n+0001e4d0: 6c61 7373 3d22 7474 6465 6622 3e3c 623e  lass=\"ttdef\"><b>\n+0001e4e0: 4465 6669 6e69 7469 6f6e 3c2f 623e 203c  Definition</b> <\n+0001e4f0: 6120 6872 6566 3d22 6130 3038 3633 5f73  a href=\"a00863_s\n+0001e500: 6f75 7263 652e 6874 6d6c 236c 3030 3333  ource.html#l0033\n+0001e510: 3122 3e73 6368 656d 652e 683a 3333 313c  1\">scheme.h:331<\n+0001e520: 2f61 3e3c 2f64 6976 3e3c 2f64 6976 3e0a  /a></div></div>.\n+0001e530: 3c64 6976 2063 6c61 7373 3d22 7474 6322  <div class=\"ttc\"\n+0001e540: 2069 643d 2261 6130 3133 3431 5f68 746d   id=\"aa01341_htm\n+0001e550: 6c5f 6137 6339 3331 3666 3732 3132 6433  l_a7c9316f7212d3\n+0001e560: 6561 3431 6462 3766 3366 3161 3636 6363  ea41db7f3f1a66cc\n+0001e570: 3765 3522 3e3c 6469 7620 636c 6173 733d  7e5\"><div class=\n+0001e580: 2274 746e 616d 6522 3e3c 6120 6872 6566  \"ttname\"><a href\n+0001e590: 3d22 6130 3133 3431 2e68 746d 6c23 6137  =\"a01341.html#a7\n+0001e5a0: 6339 3331 3666 3732 3132 6433 6561 3431  c9316f7212d3ea41\n+0001e5b0: 6462 3766 3366 3161 3636 6363 3765 3522  db7f3f1a66cc7e5\"\n+0001e5c0: 3e4f 7065 6e53 7562 6469 763a 3a4f 5045  >OpenSubdiv::OPE\n+0001e5d0: 4e53 5542 4449 565f 5645 5253 494f 4e3a  NSUBDIV_VERSION:\n+0001e5e0: 3a53 6463 3a3a 5363 6865 6d65 3a3a 6173  :Sdc::Scheme::as\n+0001e5f0: 7369 676e 4372 6561 7365 4c69 6d69 744d  signCreaseLimitM\n+0001e600: 6173 6b3c 2f61 3e3c 2f64 6976 3e3c 6469  ask</a></div><di\n+0001e610: 7620 636c 6173 733d 2274 7464 6563 6922  v class=\"ttdeci\"\n+0001e620: 3e76 6f69 6420 6173 7369 676e 4372 6561  >void assignCrea\n+0001e630: 7365 4c69 6d69 744d 6173 6b28 5645 5254  seLimitMask(VERT\n+0001e640: 4558 2063 6f6e 7374 2026 616d 703b 7665  EX const &amp;ve\n+0001e650: 7274 6578 2c20 4d41 534b 2026 616d 703b  rtex, MASK &amp;\n+0001e660: 706f 732c 2069 6e74 2063 6f6e 7374 2063  pos, int const c\n+0001e670: 7265 6173 6545 6e64 735b 325d 2920 636f  reaseEnds[2]) co\n+0001e680: 6e73 743c 2f64 6976 3e3c 2f64 6976 3e0a  nst</div></div>.\n+0001e690: 3c64 6976 2063 6c61 7373 3d22 7474 6322  <div class=\"ttc\"\n+0001e6a0: 2069 643d 2261 6130 3133 3431 5f68 746d   id=\"aa01341_htm\n+0001e6b0: 6c5f 6138 3437 3838 6135 6139 3366 3137  l_a84788a5a93f17\n+0001e6c0: 6536 3438 3130 3331 3233 6339 6634 6133  e648103123c9f4a3\n+0001e6d0: 3366 3922 3e3c 6469 7620 636c 6173 733d  3f9\"><div class=\n+0001e6e0: 2274 746e 616d 6522 3e3c 6120 6872 6566  \"ttname\"><a href\n+0001e6f0: 3d22 6130 3133 3431 2e68 746d 6c23 6138  =\"a01341.html#a8\n+0001e700: 3437 3838 6135 6139 3366 3137 6536 3438  4788a5a93f17e648\n+0001e710: 3130 3331 3233 6339 6634 6133 3366 3922  103123c9f4a33f9\"\n+0001e720: 3e4f 7065 6e53 7562 6469 763a 3a4f 5045  >OpenSubdiv::OPE\n+0001e730: 4e53 5542 4449 565f 5645 5253 494f 4e3a  NSUBDIV_VERSION:\n+0001e740: 3a53 6463 3a3a 5363 6865 6d65 3a3a 6173  :Sdc::Scheme::as\n+0001e750: 7369 676e 536d 6f6f 7468 4d61 736b 466f  signSmoothMaskFo\n+0001e760: 7256 6572 7465 783c 2f61 3e3c 2f64 6976  rVertex</a></div\n+0001e770: 3e3c 6469 7620 636c 6173 733d 2274 7464  ><div class=\"ttd\n+0001e780: 6563 6922 3e76 6f69 6420 6173 7369 676e  eci\">void assign\n+0001e790: 536d 6f6f 7468 4d61 736b 466f 7256 6572  SmoothMaskForVer\n+0001e7a0: 7465 7828 5645 5254 4558 2063 6f6e 7374  tex(VERTEX const\n+0001e7b0: 2026 616d 703b 6564 6765 2c20 4d41 534b   &amp;edge, MASK\n+0001e7c0: 2026 616d 703b 6d61 736b 2920 636f 6e73   &amp;mask) cons\n+0001e7d0: 743c 2f64 6976 3e3c 2f64 6976 3e0a 3c64  t</div></div>.<d\n+0001e7e0: 6976 2063 6c61 7373 3d22 7474 6322 2069  iv class=\"ttc\" i\n+0001e7f0: 643d 2261 6130 3133 3431 5f68 746d 6c5f  d=\"aa01341_html_\n+0001e800: 6138 6637 6539 3833 6232 3139 3561 6336  a8f7e983b2195ac6\n+0001e810: 6233 3838 6337 6136 6462 3137 6638 6362  b388c7a6db17f8cb\n+0001e820: 3022 3e3c 6469 7620 636c 6173 733d 2274  0\"><div class=\"t\n+0001e830: 746e 616d 6522 3e3c 6120 6872 6566 3d22  tname\"><a href=\"\n+0001e840: 6130 3133 3431 2e68 746d 6c23 6138 6637  a01341.html#a8f7\n+0001e850: 6539 3833 6232 3139 3561 6336 6233 3838  e983b2195ac6b388\n+0001e860: 6337 6136 6462 3137 6638 6362 3022 3e4f  c7a6db17f8cb0\">O\n+0001e870: 7065 6e53 7562 6469 763a 3a4f 5045 4e53  penSubdiv::OPENS\n+0001e880: 5542 4449 565f 5645 5253 494f 4e3a 3a53  UBDIV_VERSION::S\n+0001e890: 6463 3a3a 5363 6865 6d65 3a3a 4765 7452  dc::Scheme::GetR\n+0001e8a0: 6567 756c 6172 5665 7274 6578 5661 6c65  egularVertexVale\n+0001e8b0: 6e63 653c 2f61 3e3c 2f64 6976 3e3c 6469  nce</a></div><di\n+0001e8c0: 7620 636c 6173 733d 2274 7464 6563 6922  v class=\"ttdeci\"\n+0001e8d0: 3e73 7461 7469 6320 696e 7420 4765 7452  >static int GetR\n+0001e8e0: 6567 756c 6172 5665 7274 6578 5661 6c65  egularVertexVale\n+0001e8f0: 6e63 6528 293c 2f64 6976 3e3c 2f64 6976  nce()</div></div\n+0001e900: 3e0a 3c64 6976 2063 6c61 7373 3d22 7474  >.<div class=\"tt\n+0001e910: 6322 2069 643d 2261 6130 3133 3431 5f68  c\" id=\"aa01341_h\n+0001e920: 746d 6c5f 6139 6230 6464 6237 6336 3264  tml_a9b0ddb7c62d\n+0001e930: 3866 6364 3630 3239 6235 3935 6362 3865  8fcd6029b595cb8e\n+0001e940: 6163 3638 3222 3e3c 6469 7620 636c 6173  ac682\"><div clas\n+0001e950: 733d 2274 746e 616d 6522 3e3c 6120 6872  s=\"ttname\"><a hr\n+0001e960: 6566 3d22 6130 3133 3431 2e68 746d 6c23  ef=\"a01341.html#\n+0001e970: 6139 6230 6464 6237 6336 3264 3866 6364  a9b0ddb7c62d8fcd\n+0001e980: 3630 3239 6235 3935 6362 3865 6163 3638  6029b595cb8eac68\n+0001e990: 3222 3e4f 7065 6e53 7562 6469 763a 3a4f  2\">OpenSubdiv::O\n+0001e9a0: 5045 4e53 5542 4449 565f 5645 5253 494f  PENSUBDIV_VERSIO\n+0001e9b0: 4e3a 3a53 6463 3a3a 5363 6865 6d65 3a3a  N::Sdc::Scheme::\n+0001e9c0: 4765 744f 7074 696f 6e73 3c2f 613e 3c2f  GetOptions</a></\n+0001e9d0: 6469 763e 3c64 6976 2063 6c61 7373 3d22  div><div class=\"\n+0001e9e0: 7474 6465 6369 223e 4f70 7469 6f6e 7320  ttdeci\">Options \n+0001e9f0: 4765 744f 7074 696f 6e73 2829 2063 6f6e  GetOptions() con\n+0001ea00: 7374 3c2f 6469 763e 3c64 6976 2063 6c61  st</div><div cla\n+0001ea10: 7373 3d22 7474 6465 6622 3e3c 623e 4465  ss=\"ttdef\"><b>De\n+0001ea20: 6669 6e69 7469 6f6e 3c2f 623e 203c 6120  finition</b> <a \n+0001ea30: 6872 6566 3d22 6130 3038 3633 5f73 6f75  href=\"a00863_sou\n+0001ea40: 7263 652e 6874 6d6c 236c 3030 3037 3422  rce.html#l00074\"\n+0001ea50: 3e73 6368 656d 652e 683a 3734 3c2f 613e  >scheme.h:74</a>\n+0001ea60: 3c2f 6469 763e 3c2f 6469 763e 0a3c 6469  </div></div>.<di\n+0001ea70: 7620 636c 6173 733d 2274 7463 2220 6964  v class=\"ttc\" id\n+0001ea80: 3d22 6161 3031 3334 315f 6874 6d6c 5f61  =\"aa01341_html_a\n+0001ea90: 3965 6535 6531 3934 6130 3038 3332 6135  9ee5e194a00832a5\n+0001eaa0: 6266 6137 3663 6635 3864 6630 6263 3462  bfa76cf58df0bc4b\n+0001eab0: 223e 3c64 6976 2063 6c61 7373 3d22 7474  \"><div class=\"tt\n+0001eac0: 6e61 6d65 223e 3c61 2068 7265 663d 2261  name\"><a href=\"a\n+0001ead0: 3031 3334 312e 6874 6d6c 2361 3965 6535  01341.html#a9ee5\n+0001eae0: 6531 3934 6130 3038 3332 6135 6266 6137  e194a00832a5bfa7\n+0001eaf0: 3663 6635 3864 6630 6263 3462 223e 4f70  6cf58df0bc4b\">Op\n+0001eb00: 656e 5375 6264 6976 3a3a 4f50 454e 5355  enSubdiv::OPENSU\n+0001eb10: 4244 4956 5f56 4552 5349 4f4e 3a3a 5364  BDIV_VERSION::Sd\n+0001eb20: 633a 3a53 6368 656d 653a 3a61 7373 6967  c::Scheme::assig\n+0001eb30: 6e53 6d6f 6f74 684c 696d 6974 5461 6e67  nSmoothLimitTang\n+0001eb40: 656e 744d 6173 6b73 3c2f 613e 3c2f 6469  entMasks</a></di\n+0001eb50: 763e 3c64 6976 2063 6c61 7373 3d22 7474  v><div class=\"tt\n+0001eb60: 6465 6369 223e 766f 6964 2061 7373 6967  deci\">void assig\n+0001eb70: 6e53 6d6f 6f74 684c 696d 6974 5461 6e67  nSmoothLimitTang\n+0001eb80: 656e 744d 6173 6b73 2856 4552 5445 5820  entMasks(VERTEX \n+0001eb90: 636f 6e73 7420 2661 6d70 3b76 6572 7465  const &amp;verte\n+0001eba0: 782c 204d 4153 4b20 2661 6d70 3b74 616e  x, MASK &amp;tan\n+0001ebb0: 312c 204d 4153 4b20 2661 6d70 3b74 616e  1, MASK &amp;tan\n+0001ebc0: 3229 2063 6f6e 7374 3c2f 6469 763e 3c2f  2) const</div></\n+0001ebd0: 6469 763e 0a3c 6469 7620 636c 6173 733d  div>.<div class=\n+0001ebe0: 2274 7463 2220 6964 3d22 6161 3031 3334  \"ttc\" id=\"aa0134\n+0001ebf0: 315f 6874 6d6c 5f61 6132 3832 3164 3336  1_html_aa2821d36\n+0001ec00: 3565 6138 3133 3564 3633 3136 6330 6639  5ea8135d6316c0f9\n+0001ec10: 3236 6638 3763 6362 223e 3c64 6976 2063  26f87ccb\"><div c\n+0001ec20: 6c61 7373 3d22 7474 6e61 6d65 223e 3c61  lass=\"ttname\"><a\n+0001ec30: 2068 7265 663d 2261 3031 3334 312e 6874   href=\"a01341.ht\n+0001ec40: 6d6c 2361 6132 3832 3164 3336 3565 6138  ml#aa2821d365ea8\n+0001ec50: 3133 3564 3633 3136 6330 6639 3236 6638  135d6316c0f926f8\n+0001ec60: 3763 6362 223e 4f70 656e 5375 6264 6976  7ccb\">OpenSubdiv\n+0001ec70: 3a3a 4f50 454e 5355 4244 4956 5f56 4552  ::OPENSUBDIV_VER\n+0001ec80: 5349 4f4e 3a3a 5364 633a 3a53 6368 656d  SION::Sdc::Schem\n+0001ec90: 653a 3a61 7373 6967 6e43 6f72 6e65 724c  e::assignCornerL\n+0001eca0: 696d 6974 4d61 736b 3c2f 613e 3c2f 6469  imitMask</a></di\n+0001ecb0: 763e 3c64 6976 2063 6c61 7373 3d22 7474  v><div class=\"tt\n+0001ecc0: 6465 6369 223e 766f 6964 2061 7373 6967  deci\">void assig\n+0001ecd0: 6e43 6f72 6e65 724c 696d 6974 4d61 736b  nCornerLimitMask\n+0001ece0: 2856 4552 5445 5820 636f 6e73 7420 2661  (VERTEX const &a\n+0001ecf0: 6d70 3b76 6572 7465 782c 204d 4153 4b20  mp;vertex, MASK \n+0001ed00: 2661 6d70 3b70 6f73 2920 636f 6e73 743c  &amp;pos) const<\n+0001ed10: 2f64 6976 3e3c 2f64 6976 3e0a 3c64 6976  /div></div>.<div\n+0001ed20: 2063 6c61 7373 3d22 7474 6322 2069 643d   class=\"ttc\" id=\n+0001ed30: 2261 6130 3133 3431 5f68 746d 6c5f 6164  \"aa01341_html_ad\n+0001ed40: 6439 3466 3932 3163 3433 6661 3134 6438  d94f921c43fa14d8\n+0001ed50: 3836 6164 6662 6364 6363 3030 3231 3122  86adfbcdcc00211\"\n+0001ed60: 3e3c 6469 7620 636c 6173 733d 2274 746e  ><div class=\"ttn\n+0001ed70: 616d 6522 3e3c 6120 6872 6566 3d22 6130  ame\"><a href=\"a0\n+0001ed80: 3133 3431 2e68 746d 6c23 6164 6439 3466  1341.html#add94f\n+0001ed90: 3932 3163 3433 6661 3134 6438 3836 6164  921c43fa14d886ad\n+0001eda0: 6662 6364 6363 3030 3231 3122 3e4f 7065  fbcdcc00211\">Ope\n+0001edb0: 6e53 7562 6469 763a 3a4f 5045 4e53 5542  nSubdiv::OPENSUB\n+0001edc0: 4449 565f 5645 5253 494f 4e3a 3a53 6463  DIV_VERSION::Sdc\n+0001edd0: 3a3a 5363 6865 6d65 3a3a 5363 6865 6d65  ::Scheme::Scheme\n+0001ede0: 3c2f 613e 3c2f 6469 763e 3c64 6976 2063  </a></div><div c\n+0001edf0: 6c61 7373 3d22 7474 6465 6369 223e 5363  lass=\"ttdeci\">Sc\n+0001ee00: 6865 6d65 284f 7074 696f 6e73 2063 6f6e  heme(Options con\n+0001ee10: 7374 2026 616d 703b 6f70 7469 6f6e 7329  st &amp;options)\n+0001ee20: 3c2f 6469 763e 3c64 6976 2063 6c61 7373  </div><div class\n+0001ee30: 3d22 7474 6465 6622 3e3c 623e 4465 6669  =\"ttdef\"><b>Defi\n+0001ee40: 6e69 7469 6f6e 3c2f 623e 203c 6120 6872  nition</b> <a hr\n+0001ee50: 6566 3d22 6130 3038 3633 5f73 6f75 7263  ef=\"a00863_sourc\n+0001ee60: 652e 6874 6d6c 236c 3030 3037 3222 3e73  e.html#l00072\">s\n+0001ee70: 6368 656d 652e 683a 3732 3c2f 613e 3c2f  cheme.h:72</a></\n+0001ee80: 6469 763e 3c2f 6469 763e 0a3c 6469 7620  div></div>.<div \n+0001ee90: 636c 6173 733d 2274 7463 2220 6964 3d22  class=\"ttc\" id=\"\n+0001eea0: 6161 3031 3334 315f 6874 6d6c 5f61 6538  aa01341_html_ae8\n+0001eeb0: 6564 3234 6231 3639 3165 3635 3433 3664  ed24b1691e65436d\n+0001eec0: 3434 6537 3033 3138 3963 6166 3432 223e  44e703189caf42\">\n+0001eed0: 3c64 6976 2063 6c61 7373 3d22 7474 6e61  <div class=\"ttna\n+0001eee0: 6d65 223e 3c61 2068 7265 663d 2261 3031  me\"><a href=\"a01\n+0001eef0: 3334 312e 6874 6d6c 2361 6538 6564 3234  341.html#ae8ed24\n+0001ef00: 6231 3639 3165 3635 3433 3664 3434 6537  b1691e65436d44e7\n+0001ef10: 3033 3138 3963 6166 3432 223e 4f70 656e  03189caf42\">Open\n+0001ef20: 5375 6264 6976 3a3a 4f50 454e 5355 4244  Subdiv::OPENSUBD\n+0001ef30: 4956 5f56 4552 5349 4f4e 3a3a 5364 633a  IV_VERSION::Sdc:\n+0001ef40: 3a53 6368 656d 653a 3a43 6f6d 7075 7465  :Scheme::Compute\n+0001ef50: 4661 6365 5665 7274 6578 4d61 736b 3c2f  FaceVertexMask</\n+0001ef60: 613e 3c2f 6469 763e 3c64 6976 2063 6c61  a></div><div cla\n+0001ef70: 7373 3d22 7474 6465 6369 223e 766f 6964  ss=\"ttdeci\">void\n+0001ef80: 2043 6f6d 7075 7465 4661 6365 5665 7274   ComputeFaceVert\n+0001ef90: 6578 4d61 736b 2846 4143 4520 636f 6e73  exMask(FACE cons\n+0001efa0: 7420 2661 6d70 3b66 6163 654e 6569 6768  t &amp;faceNeigh\n+0001efb0: 626f 7268 6f6f 642c 204d 4153 4b20 2661  borhood, MASK &a\n+0001efc0: 6d70 3b66 6163 6556 6572 7465 784d 6173  mp;faceVertexMas\n+0001efd0: 6b29 2063 6f6e 7374 3c2f 6469 763e 3c64  k) const</div><d\n+0001efe0: 6976 2063 6c61 7373 3d22 7474 646f 6322  iv class=\"ttdoc\"\n+0001eff0: 3e46 6163 652d 7665 7274 6578 206d 6173  >Face-vertex mas\n+0001f000: 6b73 202d 2074 7269 7669 616c 2066 6f72  ks - trivial for\n+0001f010: 2061 6c6c 2063 7572 7265 6e74 2073 6368   all current sch\n+0001f020: 656d 6573 2e3c 2f64 6976 3e3c 6469 7620  emes.</div><div \n+0001f030: 636c 6173 733d 2274 7464 6566 223e 3c62  class=\"ttdef\"><b\n+0001f040: 3e44 6566 696e 6974 696f 6e3c 2f62 3e20  >Definition</b> \n+0001f050: 3c61 2068 7265 663d 2261 3030 3836 335f  <a href=\"a00863_\n+0001f060: 736f 7572 6365 2e68 746d 6c23 6c30 3033  source.html#l003\n+0001f070: 3438 223e 7363 6865 6d65 2e68 3a33 3438  48\">scheme.h:348\n+0001f080: 3c2f 613e 3c2f 6469 763e 3c2f 6469 763e  </a></div></div>\n+0001f090: 0a3c 6469 7620 636c 6173 733d 2274 7463  .<div class=\"ttc\n+0001f0a0: 2220 6964 3d22 6161 3031 3334 315f 6874  \" id=\"aa01341_ht\n+0001f0b0: 6d6c 5f61 6539 6565 3766 3131 6635 3165  ml_ae9ee7f11f51e\n+0001f0c0: 6336 6666 3863 3433 6162 3037 3239 3435  c6ff8c43ab072945\n+0001f0d0: 3462 3534 223e 3c64 6976 2063 6c61 7373  4b54\"><div class\n+0001f0e0: 3d22 7474 6e61 6d65 223e 3c61 2068 7265  =\"ttname\"><a hre\n+0001f0f0: 663d 2261 3031 3334 312e 6874 6d6c 2361  f=\"a01341.html#a\n+0001f100: 6539 6565 3766 3131 6635 3165 6336 6666  e9ee7f11f51ec6ff\n+0001f110: 3863 3433 6162 3037 3239 3435 3462 3534  8c43ab0729454b54\n+0001f120: 223e 4f70 656e 5375 6264 6976 3a3a 4f50  \">OpenSubdiv::OP\n+0001f130: 454e 5355 4244 4956 5f56 4552 5349 4f4e  ENSUBDIV_VERSION\n+0001f140: 3a3a 5364 633a 3a53 6368 656d 653a 3a61  ::Sdc::Scheme::a\n+0001f150: 7373 6967 6e43 6f72 6e65 724c 696d 6974  ssignCornerLimit\n+0001f160: 5461 6e67 656e 744d 6173 6b73 3c2f 613e  TangentMasks</a>\n+0001f170: 3c2f 6469 763e 3c64 6976 2063 6c61 7373  </div><div class\n+0001f180: 3d22 7474 6465 6369 223e 766f 6964 2061  =\"ttdeci\">void a\n+0001f190: 7373 6967 6e43 6f72 6e65 724c 696d 6974  ssignCornerLimit\n+0001f1a0: 5461 6e67 656e 744d 6173 6b73 2856 4552  TangentMasks(VER\n+0001f1b0: 5445 5820 636f 6e73 7420 2661 6d70 3b76  TEX const &amp;v\n+0001f1c0: 6572 7465 782c 204d 4153 4b20 2661 6d70  ertex, MASK &amp\n+0001f1d0: 3b74 616e 312c 204d 4153 4b20 2661 6d70  ;tan1, MASK &amp\n+0001f1e0: 3b74 616e 3229 2063 6f6e 7374 3c2f 6469  ;tan2) const</di\n+0001f1f0: 763e 3c2f 6469 763e 0a3c 6469 7620 636c  v></div>.<div cl\n+0001f200: 6173 733d 2274 7463 2220 6964 3d22 6161  ass=\"ttc\" id=\"aa\n+0001f210: 3031 3334 315f 6874 6d6c 5f61 6633 3630  01341_html_af360\n+0001f220: 6431 3131 3466 3533 3932 3832 3230 3331  d1114f5392822031\n+0001f230: 6361 6261 6439 3736 3664 6635 223e 3c64  cabad9766df5\"><d\n+0001f240: 6976 2063 6c61 7373 3d22 7474 6e61 6d65  iv class=\"ttname\n+0001f250: 223e 3c61 2068 7265 663d 2261 3031 3334  \"><a href=\"a0134\n+0001f260: 312e 6874 6d6c 2361 6633 3630 6431 3131  1.html#af360d111\n+0001f270: 3466 3533 3932 3832 3230 3331 6361 6261  4f5392822031caba\n+0001f280: 6439 3736 3664 6635 223e 4f70 656e 5375  d9766df5\">OpenSu\n+0001f290: 6264 6976 3a3a 4f50 454e 5355 4244 4956  bdiv::OPENSUBDIV\n+0001f2a0: 5f56 4552 5349 4f4e 3a3a 5364 633a 3a53  _VERSION::Sdc::S\n+0001f2b0: 6368 656d 653a 3a53 6574 4f70 7469 6f6e  cheme::SetOption\n+0001f2c0: 733c 2f61 3e3c 2f64 6976 3e3c 6469 7620  s</a></div><div \n+0001f2d0: 636c 6173 733d 2274 7464 6563 6922 3e76  class=\"ttdeci\">v\n+0001f2e0: 6f69 6420 5365 744f 7074 696f 6e73 2863  oid SetOptions(c\n+0001f2f0: 6f6e 7374 204f 7074 696f 6e73 2026 616d  onst Options &am\n+0001f300: 703b 6e65 774f 7074 696f 6e73 293c 2f64  p;newOptions)</d\n+0001f310: 6976 3e3c 6469 7620 636c 6173 733d 2274  iv><div class=\"t\n+0001f320: 7464 6566 223e 3c62 3e44 6566 696e 6974  tdef\"><b>Definit\n+0001f330: 696f 6e3c 2f62 3e20 3c61 2068 7265 663d  ion</b> <a href=\n+0001f340: 2261 3030 3836 335f 736f 7572 6365 2e68  \"a00863_source.h\n+0001f350: 746d 6c23 6c30 3030 3735 223e 7363 6865  tml#l00075\">sche\n+0001f360: 6d65 2e68 3a37 353c 2f61 3e3c 2f64 6976  me.h:75</a></div\n+0001f370: 3e3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ></div>.<div cla\n+0001f380: 7373 3d22 7474 6322 2069 643d 2261 6130  ss=\"ttc\" id=\"aa0\n+0001f390: 3133 3435 5f68 746d 6c22 3e3c 6469 7620  1345_html\"><div \n+0001f3a0: 636c 6173 733d 2274 746e 616d 6522 3e3c  class=\"ttname\"><\n+0001f3b0: 6120 6872 6566 3d22 6130 3133 3435 2e68  a href=\"a01345.h\n+0001f3c0: 746d 6c22 3e4f 7065 6e53 7562 6469 763a  tml\">OpenSubdiv:\n+0001f3d0: 3a4f 5045 4e53 5542 4449 565f 5645 5253  :OPENSUBDIV_VERS\n+0001f3e0: 494f 4e3a 3a53 6463 3a3a 5363 6865 6d65  ION::Sdc::Scheme\n+0001f3f0: 3a3a 4c6f 6361 6c4d 6173 6b3c 2f61 3e3c  ::LocalMask</a><\n+0001f400: 2f64 6976 3e3c 6469 7620 636c 6173 733d  /div><div class=\n+0001f410: 2274 7464 6566 223e 3c62 3e44 6566 696e  \"ttdef\"><b>Defin\n+0001f420: 6974 696f 6e3c 2f62 3e20 3c61 2068 7265  ition</b> <a hre\n+0001f430: 663d 2261 3030 3836 335f 736f 7572 6365  f=\"a00863_source\n+0001f440: 2e68 746d 6c23 6c30 3032 3039 223e 7363  .html#l00209\">sc\n+0001f450: 6865 6d65 2e68 3a32 3039 3c2f 613e 3c2f  heme.h:209</a></\n+0001f460: 6469 763e 3c2f 6469 763e 0a3c 6469 7620  div></div>.<div \n+0001f470: 636c 6173 733d 2274 7463 2220 6964 3d22  class=\"ttc\" id=\"\n+0001f480: 6161 3031 3334 355f 6874 6d6c 5f61 3137  aa01345_html_a17\n+0001f490: 3365 3938 6530 6431 6233 6431 3566 3563  3e98e0d1b3d15f5c\n+0001f4a0: 3361 6434 3336 6430 6665 6434 3031 223e  3ad436d0fed401\">\n+0001f4b0: 3c64 6976 2063 6c61 7373 3d22 7474 6e61  <div class=\"ttna\n+0001f4c0: 6d65 223e 3c61 2068 7265 663d 2261 3031  me\"><a href=\"a01\n+0001f4d0: 3334 352e 6874 6d6c 2361 3137 3365 3938  345.html#a173e98\n+0001f4e0: 6530 6431 6233 6431 3566 3563 3361 6434  e0d1b3d15f5c3ad4\n+0001f4f0: 3336 6430 6665 6434 3031 223e 4f70 656e  36d0fed401\">Open\n+0001f500: 5375 6264 6976 3a3a 4f50 454e 5355 4244  Subdiv::OPENSUBD\n+0001f510: 4956 5f56 4552 5349 4f4e 3a3a 5364 633a  IV_VERSION::Sdc:\n+0001f520: 3a53 6368 656d 653a 3a4c 6f63 616c 4d61  :Scheme::LocalMa\n+0001f530: 736b 3a3a 5765 6967 6874 3c2f 613e 3c2f  sk::Weight</a></\n+0001f540: 6469 763e 3c64 6976 2063 6c61 7373 3d22  div><div class=\"\n+0001f550: 7474 6465 6369 223e 5745 4947 4854 2057  ttdeci\">WEIGHT W\n+0001f560: 6569 6768 743c 2f64 6976 3e3c 6469 7620  eight</div><div \n+0001f570: 636c 6173 733d 2274 7464 6566 223e 3c62  class=\"ttdef\"><b\n+0001f580: 3e44 6566 696e 6974 696f 6e3c 2f62 3e20  >Definition</b> \n+0001f590: 3c61 2068 7265 663d 2261 3030 3836 335f  <a href=\"a00863_\n+0001f5a0: 736f 7572 6365 2e68 746d 6c23 6c30 3032  source.html#l002\n+0001f5b0: 3132 223e 7363 6865 6d65 2e68 3a32 3132  12\">scheme.h:212\n+0001f5c0: 3c2f 613e 3c2f 6469 763e 3c2f 6469 763e  </a></div></div>\n+0001f5d0: 0a3c 6469 7620 636c 6173 733d 2274 7463  .<div class=\"ttc\n+0001f5e0: 2220 6964 3d22 6161 3031 3334 355f 6874  \" id=\"aa01345_ht\n+0001f5f0: 6d6c 5f61 3335 3139 6535 6530 3536 3331  ml_a3519e5e05631\n+0001f600: 3032 3666 6164 3934 6337 3631 3666 3565  026fad94c7616f5e\n+0001f610: 3065 3637 223e 3c64 6976 2063 6c61 7373  0e67\"><div class\n+0001f620: 3d22 7474 6e61 6d65 223e 3c61 2068 7265  =\"ttname\"><a hre\n+0001f630: 663d 2261 3031 3334 352e 6874 6d6c 2361  f=\"a01345.html#a\n+0001f640: 3335 3139 6535 6530 3536 3331 3032 3666  3519e5e05631026f\n+0001f650: 6164 3934 6337 3631 3666 3565 3065 3637  ad94c7616f5e0e67\n+0001f660: 223e 4f70 656e 5375 6264 6976 3a3a 4f50  \">OpenSubdiv::OP\n+0001f670: 454e 5355 4244 4956 5f56 4552 5349 4f4e  ENSUBDIV_VERSION\n+0001f680: 3a3a 5364 633a 3a53 6368 656d 653a 3a4c  ::Sdc::Scheme::L\n+0001f690: 6f63 616c 4d61 736b 3a3a 4172 6546 6163  ocalMask::AreFac\n+0001f6a0: 6557 6569 6768 7473 466f 7246 6163 6543  eWeightsForFaceC\n+0001f6b0: 656e 7465 7273 3c2f 613e 3c2f 6469 763e  enters</a></div>\n+0001f6c0: 3c64 6976 2063 6c61 7373 3d22 7474 6465  <div class=\"ttde\n+0001f6d0: 6369 223e 626f 6f6c 2041 7265 4661 6365  ci\">bool AreFace\n+0001f6e0: 5765 6967 6874 7346 6f72 4661 6365 4365  WeightsForFaceCe\n+0001f6f0: 6e74 6572 7328 2920 636f 6e73 743c 2f64  nters() const</d\n+0001f700: 6976 3e3c 6469 7620 636c 6173 733d 2274  iv><div class=\"t\n+0001f710: 7464 6566 223e 3c62 3e44 6566 696e 6974  tdef\"><b>Definit\n+0001f720: 696f 6e3c 2f62 3e20 3c61 2068 7265 663d  ion</b> <a href=\n+0001f730: 2261 3030 3836 335f 736f 7572 6365 2e68  \"a00863_source.h\n+0001f740: 746d 6c23 6c30 3032 3339 223e 7363 6865  tml#l00239\">sche\n+0001f750: 6d65 2e68 3a32 3339 3c2f 613e 3c2f 6469  me.h:239</a></di\n+0001f760: 763e 3c2f 6469 763e 0a3c 6469 7620 636c  v></div>.<div cl\n+0001f770: 6173 733d 2274 7463 2220 6964 3d22 6161  ass=\"ttc\" id=\"aa\n+0001f780: 3031 3334 355f 6874 6d6c 5f61 3435 3232  01345_html_a4522\n+0001f790: 6631 6163 6435 6639 3461 3036 6262 3266  f1acd5f94a06bb2f\n+0001f7a0: 3530 3535 3264 3236 3730 6237 223e 3c64  50552d2670b7\"><d\n+0001f7b0: 6976 2063 6c61 7373 3d22 7474 6e61 6d65  iv class=\"ttname\n+0001f7c0: 223e 3c61 2068 7265 663d 2261 3031 3334  \"><a href=\"a0134\n+0001f7d0: 352e 6874 6d6c 2361 3435 3232 6631 6163  5.html#a4522f1ac\n+0001f7e0: 6435 6639 3461 3036 6262 3266 3530 3535  d5f94a06bb2f5055\n+0001f7f0: 3264 3236 3730 6237 223e 4f70 656e 5375  2d2670b7\">OpenSu\n+0001f800: 6264 6976 3a3a 4f50 454e 5355 4244 4956  bdiv::OPENSUBDIV\n+0001f810: 5f56 4552 5349 4f4e 3a3a 5364 633a 3a53  _VERSION::Sdc::S\n+0001f820: 6368 656d 653a 3a4c 6f63 616c 4d61 736b  cheme::LocalMask\n+0001f830: 3a3a 5365 744e 756d 4564 6765 5765 6967  ::SetNumEdgeWeig\n+0001f840: 6874 733c 2f61 3e3c 2f64 6976 3e3c 6469  hts</a></div><di\n+0001f850: 7620 636c 6173 733d 2274 7464 6563 6922  v class=\"ttdeci\"\n+0001f860: 3e76 6f69 6420 5365 744e 756d 4564 6765  >void SetNumEdge\n+0001f870: 5765 6967 6874 7328 696e 7420 636f 756e  Weights(int coun\n+0001f880: 7429 3c2f 6469 763e 3c64 6976 2063 6c61  t)</div><div cla\n+0001f890: 7373 3d22 7474 6465 6622 3e3c 623e 4465  ss=\"ttdef\"><b>De\n+0001f8a0: 6669 6e69 7469 6f6e 3c2f 623e 203c 6120  finition</b> <a \n+0001f8b0: 6872 6566 3d22 6130 3038 3633 5f73 6f75  href=\"a00863_sou\n+0001f8c0: 7263 652e 6874 6d6c 236c 3030 3232 3822  rce.html#l00228\"\n+0001f8d0: 3e73 6368 656d 652e 683a 3232 383c 2f61  >scheme.h:228</a\n+0001f8e0: 3e3c 2f64 6976 3e3c 2f64 6976 3e0a 3c64  ></div></div>.<d\n+0001f8f0: 6976 2063 6c61 7373 3d22 7474 6322 2069  iv class=\"ttc\" i\n+0001f900: 643d 2261 6130 3133 3435 5f68 746d 6c5f  d=\"aa01345_html_\n+0001f910: 6134 6462 3933 3261 3861 3333 6664 3036  a4db932a8a33fd06\n+0001f920: 3232 6337 6430 3131 3637 6562 3134 6235  22c7d01167eb14b5\n+0001f930: 3222 3e3c 6469 7620 636c 6173 733d 2274  2\"><div class=\"t\n+0001f940: 746e 616d 6522 3e3c 6120 6872 6566 3d22  tname\"><a href=\"\n+0001f950: 6130 3133 3435 2e68 746d 6c23 6134 6462  a01345.html#a4db\n+0001f960: 3933 3261 3861 3333 6664 3036 3232 6337  932a8a33fd0622c7\n+0001f970: 6430 3131 3637 6562 3134 6235 3222 3e4f  d01167eb14b52\">O\n+0001f980: 7065 6e53 7562 6469 763a 3a4f 5045 4e53  penSubdiv::OPENS\n+0001f990: 5542 4449 565f 5645 5253 494f 4e3a 3a53  UBDIV_VERSION::S\n+0001f9a0: 6463 3a3a 5363 6865 6d65 3a3a 4c6f 6361  dc::Scheme::Loca\n+0001f9b0: 6c4d 6173 6b3a 3a45 6467 6557 6569 6768  lMask::EdgeWeigh\n+0001f9c0: 743c 2f61 3e3c 2f64 6976 3e3c 6469 7620  t</a></div><div \n+0001f9d0: 636c 6173 733d 2274 7464 6563 6922 3e57  class=\"ttdeci\">W\n+0001f9e0: 6569 6768 7420 636f 6e73 7420 2661 6d70  eight const &amp\n+0001f9f0: 3b20 4564 6765 5765 6967 6874 2869 6e74  ; EdgeWeight(int\n+0001fa00: 2069 6e64 6578 2920 636f 6e73 743c 2f64   index) const</d\n+0001fa10: 6976 3e3c 6469 7620 636c 6173 733d 2274  iv><div class=\"t\n+0001fa20: 7464 6566 223e 3c62 3e44 6566 696e 6974  tdef\"><b>Definit\n+0001fa30: 696f 6e3c 2f62 3e20 3c61 2068 7265 663d  ion</b> <a href=\n+0001fa40: 2261 3030 3836 335f 736f 7572 6365 2e68  \"a00863_source.h\n+0001fa50: 746d 6c23 6c30 3032 3332 223e 7363 6865  tml#l00232\">sche\n+0001fa60: 6d65 2e68 3a32 3332 3c2f 613e 3c2f 6469  me.h:232</a></di\n+0001fa70: 763e 3c2f 6469 763e 0a3c 6469 7620 636c  v></div>.<div cl\n+0001fa80: 6173 733d 2274 7463 2220 6964 3d22 6161  ass=\"ttc\" id=\"aa\n+0001fa90: 3031 3334 355f 6874 6d6c 5f61 3533 3364  01345_html_a533d\n+0001faa0: 6261 3332 6139 3436 3835 3463 3366 3235  ba32a946854c3f25\n+0001fab0: 6532 3762 3532 3165 6637 6466 223e 3c64  e27b521ef7df\"><d\n+0001fac0: 6976 2063 6c61 7373 3d22 7474 6e61 6d65  iv class=\"ttname\n+0001fad0: 223e 3c61 2068 7265 663d 2261 3031 3334  \"><a href=\"a0134\n+0001fae0: 352e 6874 6d6c 2361 3533 3364 6261 3332  5.html#a533dba32\n+0001faf0: 6139 3436 3835 3463 3366 3235 6532 3762  a946854c3f25e27b\n+0001fb00: 3532 3165 6637 6466 223e 4f70 656e 5375  521ef7df\">OpenSu\n+0001fb10: 6264 6976 3a3a 4f50 454e 5355 4244 4956  bdiv::OPENSUBDIV\n+0001fb20: 5f56 4552 5349 4f4e 3a3a 5364 633a 3a53  _VERSION::Sdc::S\n+0001fb30: 6368 656d 653a 3a4c 6f63 616c 4d61 736b  cheme::LocalMask\n+0001fb40: 3a3a 4564 6765 5765 6967 6874 3c2f 613e  ::EdgeWeight</a>\n+0001fb50: 3c2f 6469 763e 3c64 6976 2063 6c61 7373  </div><div class\n+0001fb60: 3d22 7474 6465 6369 223e 5765 6967 6874  =\"ttdeci\">Weight\n+0001fb70: 2026 616d 703b 2045 6467 6557 6569 6768   &amp; EdgeWeigh\n+0001fb80: 7428 696e 7420 696e 6465 7829 3c2f 6469  t(int index)</di\n+0001fb90: 763e 3c64 6976 2063 6c61 7373 3d22 7474  v><div class=\"tt\n+0001fba0: 6465 6622 3e3c 623e 4465 6669 6e69 7469  def\"><b>Definiti\n+0001fbb0: 6f6e 3c2f 623e 203c 6120 6872 6566 3d22  on</b> <a href=\"\n+0001fbc0: 6130 3038 3633 5f73 6f75 7263 652e 6874  a00863_source.ht\n+0001fbd0: 6d6c 236c 3030 3233 3622 3e73 6368 656d  ml#l00236\">schem\n+0001fbe0: 652e 683a 3233 363c 2f61 3e3c 2f64 6976  e.h:236</a></div\n+0001fbf0: 3e3c 2f64 6976 3e0a 3c64 6976 2063 6c61  ></div>.<div cla\n+0001fc00: 7373 3d22 7474 6322 2069 643d 2261 6130  ss=\"ttc\" id=\"aa0\n+0001fc10: 3133 3435 5f68 746d 6c5f 6135 6564 3830  1345_html_a5ed80\n+0001fc20: 3065 3964 3730 3266 3537 6165 3937 3866  0e9d702f57ae978f\n+0001fc30: 6536 3062 6132 6133 3764 6322 3e3c 6469  e60ba2a37dc\"><di\n+0001fc40: 7620 636c 6173 733d 2274 746e 616d 6522  v class=\"ttname\"\n+0001fc50: 3e3c 6120 6872 6566 3d22 6130 3133 3435  ><a href=\"a01345\n+0001fc60: 2e68 746d 6c23 6135 6564 3830 3065 3964  .html#a5ed800e9d\n+0001fc70: 3730 3266 3537 6165 3937 3866 6536 3062  702f57ae978fe60b\n+0001fc80: 6132 6133 3764 6322 3e4f 7065 6e53 7562  a2a37dc\">OpenSub\n+0001fc90: 6469 763a 3a4f 5045 4e53 5542 4449 565f  div::OPENSUBDIV_\n+0001fca0: 5645 5253 494f 4e3a 3a53 6463 3a3a 5363  VERSION::Sdc::Sc\n+0001fcb0: 6865 6d65 3a3a 4c6f 6361 6c4d 6173 6b3a  heme::LocalMask:\n+0001fcc0: 3a43 6f6d 6269 6e65 5665 7274 6578 5665  :CombineVertexVe\n+0001fcd0: 7274 6578 4d61 736b 733c 2f61 3e3c 2f64  rtexMasks</a></d\n+0001fce0: 6976 3e3c 6469 7620 636c 6173 733d 2274  iv><div class=\"t\n+0001fcf0: 7464 6563 6922 3e76 6f69 6420 436f 6d62  tdeci\">void Comb\n+0001fd00: 696e 6556 6572 7465 7856 6572 7465 784d  ineVertexVertexM\n+0001fd10: 6173 6b73 2857 6569 6768 7420 7468 6973  asks(Weight this\n+0001fd20: 436f 6566 662c 2057 6569 6768 7420 6473  Coeff, Weight ds\n+0001fd30: 7443 6f65 6666 2c20 5553 4552 5f4d 4153  tCoeff, USER_MAS\n+0001fd40: 4b20 2661 6d70 3b64 7374 2920 636f 6e73  K &amp;dst) cons\n+0001fd50: 743c 2f64 6976 3e3c 6469 7620 636c 6173  t</div><div clas\n+0001fd60: 733d 2274 7464 6566 223e 3c62 3e44 6566  s=\"ttdef\"><b>Def\n+0001fd70: 696e 6974 696f 6e3c 2f62 3e20 3c61 2068  inition</b> <a h\n+0001fd80: 7265 663d 2261 3030 3836 335f 736f 7572  ref=\"a00863_sour\n+0001fd90: 6365 2e68 746d 6c23 6c30 3032 3439 223e  ce.html#l00249\">\n+0001fda0: 7363 6865 6d65 2e68 3a32 3439 3c2f 613e  scheme.h:249</a>\n+0001fdb0: 3c2f 6469 763e 3c2f 6469 763e 0a3c 6469  </div></div>.<di\n+0001fdc0: 7620 636c 6173 733d 2274 7463 2220 6964  v class=\"ttc\" id\n+0001fdd0: 3d22 6161 3031 3334 355f 6874 6d6c 5f61  =\"aa01345_html_a\n+0001fde0: 3630 3664 3933 3463 3664 3330 6233 6338  606d934c6d30b3c8\n+0001fdf0: 6165 3631 3730 3030 6562 3863 3561 3962  ae617000eb8c5a9b\n+0001fe00: 223e 3c64 6976 2063 6c61 7373 3d22 7474  \"><div class=\"tt\n+0001fe10: 6e61 6d65 223e 3c61 2068 7265 663d 2261  name\"><a href=\"a\n+0001fe20: 3031 3334 352e 6874 6d6c 2361 3630 3664  01345.html#a606d\n+0001fe30: 3933 3463 3664 3330 6233 6338 6165 3631  934c6d30b3c8ae61\n+0001fe40: 3730 3030 6562 3863 3561 3962 223e 4f70  7000eb8c5a9b\">Op\n+0001fe50: 656e 5375 6264 6976 3a3a 4f50 454e 5355  enSubdiv::OPENSU\n+0001fe60: 4244 4956 5f56 4552 5349 4f4e 3a3a 5364  BDIV_VERSION::Sd\n+0001fe70: 633a 3a53 6368 656d 653a 3a4c 6f63 616c  c::Scheme::Local\n+0001fe80: 4d61 736b 3a3a 4765 744e 756d 5665 7274  Mask::GetNumVert\n+0001fe90: 6578 5765 6967 6874 733c 2f61 3e3c 2f64  exWeights</a></d\n+0001fea0: 6976 3e3c 6469 7620 636c 6173 733d 2274  iv><div class=\"t\n+0001feb0: 7464 6563 6922 3e69 6e74 2047 6574 4e75  tdeci\">int GetNu\n+0001fec0: 6d56 6572 7465 7857 6569 6768 7473 2829  mVertexWeights()\n+0001fed0: 2063 6f6e 7374 3c2f 6469 763e 3c64 6976   const</div><div\n+0001fee0: 2063 6c61 7373 3d22 7474 6465 6622 3e3c   class=\"ttdef\"><\n+0001fef0: 623e 4465 6669 6e69 7469 6f6e 3c2f 623e  b>Definition</b>\n+0001ff00: 203c 6120 6872 6566 3d22 6130 3038 3633   <a href=\"a00863\n+0001ff10: 5f73 6f75 7263 652e 6874 6d6c 236c 3030  _source.html#l00\n+0001ff20: 3232 3322 3e73 6368 656d 652e 683a 3232  223\">scheme.h:22\n+0001ff30: 333c 2f61 3e3c 2f64 6976 3e3c 2f64 6976  3</a></div></div\n+0001ff40: 3e0a 3c64 6976 2063 6c61 7373 3d22 7474  >.<div class=\"tt\n+0001ff50: 6322 2069 643d 2261 6130 3133 3435 5f68  c\" id=\"aa01345_h\n+0001ff60: 746d 6c5f 6136 3165 3933 3366 3961 3132  tml_a61e933f9a12\n+0001ff70: 3863 6231 3664 3331 3631 3166 6439 3665  8cb16d31611fd96e\n+0001ff80: 6364 3135 3322 3e3c 6469 7620 636c 6173  cd153\"><div clas\n+0001ff90: 733d 2274 746e 616d 6522 3e3c 6120 6872  s=\"ttname\"><a hr\n+0001ffa0: 6566 3d22 6130 3133 3435 2e68 746d 6c23  ef=\"a01345.html#\n+0001ffb0: 6136 3165 3933 3366 3961 3132 3863 6231  a61e933f9a128cb1\n+0001ffc0: 3664 3331 3631 3166 6439 3665 6364 3135  6d31611fd96ecd15\n+0001ffd0: 3322 3e4f 7065 6e53 7562 6469 763a 3a4f  3\">OpenSubdiv::O\n+0001ffe0: 5045 4e53 5542 4449 565f 5645 5253 494f  PENSUBDIV_VERSIO\n+0001fff0: 4e3a 3a53 6463 3a3a 5363 6865 6d65 3a3a  N::Sdc::Scheme::\n+00020000: 4c6f 6361 6c4d 6173 6b3a 3a53 6574 4e75  LocalMask::SetNu\n+00020010: 6d46 6163 6557 6569 6768 7473 3c2f 613e  mFaceWeights</a>\n+00020020: 3c2f 6469 763e 3c64 6976 2063 6c61 7373  </div><div class\n+00020030: 3d22 7474 6465 6369 223e 766f 6964 2053  =\"ttdeci\">void S\n+00020040: 6574 4e75 6d46 6163 6557 6569 6768 7473  etNumFaceWeights\n+00020050: 2869 6e74 2063 6f75 6e74 293c 2f64 6976  (int count)</div\n+00020060: 3e3c 6469 7620 636c 6173 733d 2274 7464  ><div class=\"ttd\n+00020070: 6566 223e 3c62 3e44 6566 696e 6974 696f  ef\"><b>Definitio\n+00020080: 6e3c 2f62 3e20 3c61 2068 7265 663d 2261  n</b> <a href=\"a\n+00020090: 3030 3836 335f 736f 7572 6365 2e68 746d  00863_source.htm\n+000200a0: 6c23 6c30 3032 3239 223e 7363 6865 6d65  l#l00229\">scheme\n+000200b0: 2e68 3a32 3239 3c2f 613e 3c2f 6469 763e  .h:229</a></div>\n+000200c0: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n+000200d0: 733d 2274 7463 2220 6964 3d22 6161 3031  s=\"ttc\" id=\"aa01\n+000200e0: 3334 355f 6874 6d6c 5f61 3637 3464 6131  345_html_a674da1\n+000200f0: 3132 3838 3935 6138 6362 6166 6136 6330  128895a8cbafa6c0\n+00020100: 6563 3439 6539 6165 6330 223e 3c64 6976  ec49e9aec0\"><div\n+00020110: 2063 6c61 7373 3d22 7474 6e61 6d65 223e   class=\"ttname\">\n+00020120: 3c61 2068 7265 663d 2261 3031 3334 352e  <a href=\"a01345.\n+00020130: 6874 6d6c 2361 3637 3464 6131 3132 3838  html#a674da11288\n+00020140: 3935 6138 6362 6166 6136 6330 6563 3439  95a8cbafa6c0ec49\n+00020150: 6539 6165 6330 223e 4f70 656e 5375 6264  e9aec0\">OpenSubd\n+00020160: 6976 3a3a 4f50 454e 5355 4244 4956 5f56  iv::OPENSUBDIV_V\n+00020170: 4552 5349 4f4e 3a3a 5364 633a 3a53 6368  ERSION::Sdc::Sch\n+00020180: 656d 653a 3a4c 6f63 616c 4d61 736b 3a3a  eme::LocalMask::\n+00020190: 4661 6365 5765 6967 6874 3c2f 613e 3c2f  FaceWeight</a></\n+000201a0: 6469 763e 3c64 6976 2063 6c61 7373 3d22  div><div class=\"\n+000201b0: 7474 6465 6369 223e 5765 6967 6874 2063  ttdeci\">Weight c\n+000201c0: 6f6e 7374 2026 616d 703b 2046 6163 6557  onst &amp; FaceW\n+000201d0: 6569 6768 7428 696e 7420 696e 6465 7829  eight(int index)\n+000201e0: 2063 6f6e 7374 3c2f 6469 763e 3c64 6976   const</div><div\n+000201f0: 2063 6c61 7373 3d22 7474 6465 6622 3e3c   class=\"ttdef\"><\n+00020200: 623e 4465 6669 6e69 7469 6f6e 3c2f 623e  b>Definition</b>\n+00020210: 203c 6120 6872 6566 3d22 6130 3038 3633   <a href=\"a00863\n+00020220: 5f73 6f75 7263 652e 6874 6d6c 236c 3030  _source.html#l00\n+00020230: 3233 3322 3e73 6368 656d 652e 683a 3233  233\">scheme.h:23\n+00020240: 333c 2f61 3e3c 2f64 6976 3e3c 2f64 6976  3</a></div></div\n+00020250: 3e0a 3c64 6976 2063 6c61 7373 3d22 7474  >.<div class=\"tt\n+00020260: 6322 2069 643d 2261 6130 3133 3435 5f68  c\" id=\"aa01345_h\n+00020270: 746d 6c5f 6139 3065 3064 3239 3831 6632  tml_a90e0d2981f2\n+00020280: 3962 6337 6262 6466 6261 6261 3864 6236  9bc7bbdfbaba8db6\n+00020290: 3332 3735 3122 3e3c 6469 7620 636c 6173  32751\"><div clas\n+000202a0: 733d 2274 746e 616d 6522 3e3c 6120 6872  s=\"ttname\"><a hr\n+000202b0: 6566 3d22 6130 3133 3435 2e68 746d 6c23  ef=\"a01345.html#\n+000202c0: 6139 3065 3064 3239 3831 6632 3962 6337  a90e0d2981f29bc7\n+000202d0: 6262 6466 6261 6261 3864 6236 3332 3735  bbdfbaba8db63275\n+000202e0: 3122 3e4f 7065 6e53 7562 6469 763a 3a4f  1\">OpenSubdiv::O\n+000202f0: 5045 4e53 5542 4449 565f 5645 5253 494f  PENSUBDIV_VERSIO\n+00020300: 4e3a 3a53 6463 3a3a 5363 6865 6d65 3a3a  N::Sdc::Scheme::\n+00020310: 4c6f 6361 6c4d 6173 6b3a 3a47 6574 4e75  LocalMask::GetNu\n+00020320: 6d45 6467 6557 6569 6768 7473 3c2f 613e  mEdgeWeights</a>\n+00020330: 3c2f 6469 763e 3c64 6976 2063 6c61 7373  </div><div class\n+00020340: 3d22 7474 6465 6369 223e 696e 7420 4765  =\"ttdeci\">int Ge\n+00020350: 744e 756d 4564 6765 5765 6967 6874 7328  tNumEdgeWeights(\n+00020360: 2920 636f 6e73 743c 2f64 6976 3e3c 6469  ) const</div><di\n+00020370: 7620 636c 6173 733d 2274 7464 6566 223e  v class=\"ttdef\">\n+00020380: 3c62 3e44 6566 696e 6974 696f 6e3c 2f62  <b>Definition</b\n+00020390: 3e20 3c61 2068 7265 663d 2261 3030 3836  > <a href=\"a0086\n+000203a0: 335f 736f 7572 6365 2e68 746d 6c23 6c30  3_source.html#l0\n+000203b0: 3032 3234 223e 7363 6865 6d65 2e68 3a32  0224\">scheme.h:2\n+000203c0: 3234 3c2f 613e 3c2f 6469 763e 3c2f 6469  24</a></div></di\n+000203d0: 763e 0a3c 6469 7620 636c 6173 733d 2274  v>.<div class=\"t\n+000203e0: 7463 2220 6964 3d22 6161 3031 3334 355f  tc\" id=\"aa01345_\n+000203f0: 6874 6d6c 5f61 3932 6539 3839 3837 6639  html_a92e98987f9\n+00020400: 6134 3232 3062 3965 6464 3034 3134 3031  a4220b9edd041401\n+00020410: 6339 6564 3736 223e 3c64 6976 2063 6c61  c9ed76\"><div cla\n+00020420: 7373 3d22 7474 6e61 6d65 223e 3c61 2068  ss=\"ttname\"><a h\n+00020430: 7265 663d 2261 3031 3334 352e 6874 6d6c  ref=\"a01345.html\n+00020440: 2361 3932 6539 3839 3837 6639 6134 3232  #a92e98987f9a422\n+00020450: 3062 3965 6464 3034 3134 3031 6339 6564  0b9edd041401c9ed\n+00020460: 3736 223e 4f70 656e 5375 6264 6976 3a3a  76\">OpenSubdiv::\n+00020470: 4f50 454e 5355 4244 4956 5f56 4552 5349  OPENSUBDIV_VERSI\n+00020480: 4f4e 3a3a 5364 633a 3a53 6368 656d 653a  ON::Sdc::Scheme:\n+00020490: 3a4c 6f63 616c 4d61 736b 3a3a 5665 7274  :LocalMask::Vert\n+000204a0: 6578 5765 6967 6874 3c2f 613e 3c2f 6469  exWeight</a></di\n+000204b0: 763e 3c64 6976 2063 6c61 7373 3d22 7474  v><div class=\"tt\n+000204c0: 6465 6369 223e 5765 6967 6874 2026 616d  deci\">Weight &am\n+000204d0: 703b 2056 6572 7465 7857 6569 6768 7428  p; VertexWeight(\n+000204e0: 696e 7420 696e 6465 7829 3c2f 6469 763e  int index)</div>\n+000204f0: 3c64 6976 2063 6c61 7373 3d22 7474 6465  <div class=\"ttde\n+00020500: 6622 3e3c 623e 4465 6669 6e69 7469 6f6e  f\"><b>Definition\n+00020510: 3c2f 623e 203c 6120 6872 6566 3d22 6130  </b> <a href=\"a0\n+00020520: 3038 3633 5f73 6f75 7263 652e 6874 6d6c  0863_source.html\n+00020530: 236c 3030 3233 3522 3e73 6368 656d 652e  #l00235\">scheme.\n+00020540: 683a 3233 353c 2f61 3e3c 2f64 6976 3e3c  h:235</a></div><\n+00020550: 2f64 6976 3e0a 3c64 6976 2063 6c61 7373  /div>.<div class\n+00020560: 3d22 7474 6322 2069 643d 2261 6130 3133  =\"ttc\" id=\"aa013\n+00020570: 3435 5f68 746d 6c5f 6139 3366 3537 6535  45_html_a93f57e5\n+00020580: 3333 3733 3931 6332 3064 3436 6465 6664  337391c20d46defd\n+00020590: 6233 6161 3263 3166 6522 3e3c 6469 7620  b3aa2c1fe\"><div \n+000205a0: 636c 6173 733d 2274 746e 616d 6522 3e3c  class=\"ttname\"><\n+000205b0: 6120 6872 6566 3d22 6130 3133 3435 2e68  a href=\"a01345.h\n+000205c0: 746d 6c23 6139 3366 3537 6535 3333 3733  tml#a93f57e53373\n+000205d0: 3931 6332 3064 3436 6465 6664 6233 6161  91c20d46defdb3aa\n+000205e0: 3263 3166 6522 3e4f 7065 6e53 7562 6469  2c1fe\">OpenSubdi\n+000205f0: 763a 3a4f 5045 4e53 5542 4449 565f 5645  v::OPENSUBDIV_VE\n+00020600: 5253 494f 4e3a 3a53 6463 3a3a 5363 6865  RSION::Sdc::Sche\n+00020610: 6d65 3a3a 4c6f 6361 6c4d 6173 6b3a 3a47  me::LocalMask::G\n+00020620: 6574 4e75 6d46 6163 6557 6569 6768 7473  etNumFaceWeights\n+00020630: 3c2f 613e 3c2f 6469 763e 3c64 6976 2063  </a></div><div c\n+00020640: 6c61 7373 3d22 7474 6465 6369 223e 696e  lass=\"ttdeci\">in\n+00020650: 7420 4765 744e 756d 4661 6365 5765 6967  t GetNumFaceWeig\n+00020660: 6874 7328 2920 636f 6e73 743c 2f64 6976  hts() const</div\n+00020670: 3e3c 6469 7620 636c 6173 733d 2274 7464  ><div class=\"ttd\n+00020680: 6566 223e 3c62 3e44 6566 696e 6974 696f  ef\"><b>Definitio\n+00020690: 6e3c 2f62 3e20 3c61 2068 7265 663d 2261  n</b> <a href=\"a\n+000206a0: 3030 3836 335f 736f 7572 6365 2e68 746d  00863_source.htm\n+000206b0: 6c23 6c30 3032 3235 223e 7363 6865 6d65  l#l00225\">scheme\n+000206c0: 2e68 3a32 3235 3c2f 613e 3c2f 6469 763e  .h:225</a></div>\n+000206d0: 3c2f 6469 763e 0a3c 6469 7620 636c 6173  </div>.<div clas\n+000206e0: 733d 2274 7463 2220 6964 3d22 6161 3031  s=\"ttc\" id=\"aa01\n+000206f0: 3334 355f 6874 6d6c 5f61 3962 6134 3932  345_html_a9ba492\n+00020700: 3961 3861 3861 3664 3334 6164 6663 3566  9a8a8a6d34adfc5f\n+00020710: 3262 6564 3636 3764 3736 223e 3c64 6976  2bed667d76\"><div\n+00020720: 2063 6c61 7373 3d22 7474 6e61 6d65 223e   class=\"ttname\">\n+00020730: 3c61 2068 7265 663d 2261 3031 3334 352e  <a href=\"a01345.\n+00020740: 6874 6d6c 2361 3962 6134 3932 3961 3861  html#a9ba4929a8a\n+00020750: 3861 3664 3334 6164 6663 3566 3262 6564  8a6d34adfc5f2bed\n+00020760: 3636 3764 3736 223e 4f70 656e 5375 6264  667d76\">OpenSubd\n+00020770: 6976 3a3a 4f50 454e 5355 4244 4956 5f56  iv::OPENSUBDIV_V\n+00020780: 4552 5349 4f4e 3a3a 5364 633a 3a53 6368  ERSION::Sdc::Sch\n+00020790: 656d 653a 3a4c 6f63 616c 4d61 736b 3a3a  eme::LocalMask::\n+000207a0: 5365 7446 6163 6557 6569 6768 7473 466f  SetFaceWeightsFo\n+000207b0: 7246 6163 6543 656e 7465 7273 3c2f 613e  rFaceCenters</a>\n+000207c0: 3c2f 6469 763e 3c64 6976 2063 6c61 7373  </div><div class\n+000207d0: 3d22 7474 6465 6369 223e 766f 6964 2053  =\"ttdeci\">void S\n+000207e0: 6574 4661 6365 5765 6967 6874 7346 6f72  etFaceWeightsFor\n+000207f0: 4661 6365 4365 6e74 6572 7328 626f 6f6c  FaceCenters(bool\n+00020800: 206f 6e29 3c2f 6469 763e 3c64 6976 2063   on)</div><div c\n+00020810: 6c61 7373 3d22 7474 6465 6622 3e3c 623e  lass=\"ttdef\"><b>\n+00020820: 4465 6669 6e69 7469 6f6e 3c2f 623e 203c  Definition</b> <\n+00020830: 6120 6872 6566 3d22 6130 3038 3633 5f73  a href=\"a00863_s\n+00020840: 6f75 7263 652e 6874 6d6c 236c 3030 3234  ource.html#l0024\n+00020850: 3022 3e73 6368 656d 652e 683a 3234 303c  0\">scheme.h:240<\n+00020860: 2f61 3e3c 2f64 6976 3e3c 2f64 6976 3e0a  /a></div></div>.\n+00020870: 3c64 6976 2063 6c61 7373 3d22 7474 6322  <div class=\"ttc\"\n+00020880: 2069 643d 2261 6130 3133 3435 5f68 746d   id=\"aa01345_htm\n+00020890: 6c5f 6139 6563 6436 3237 6465 3361 3063  l_a9ecd627de3a0c\n+000208a0: 6135 6562 3261 6462 6564 3834 6533 3962  a5eb2adbed84e39b\n+000208b0: 3638 3122 3e3c 6469 7620 636c 6173 733d  681\"><div class=\n+000208c0: 2274 746e 616d 6522 3e3c 6120 6872 6566  \"ttname\"><a href\n+000208d0: 3d22 6130 3133 3435 2e68 746d 6c23 6139  =\"a01345.html#a9\n+000208e0: 6563 6436 3237 6465 3361 3063 6135 6562  ecd627de3a0ca5eb\n+000208f0: 3261 6462 6564 3834 6533 3962 3638 3122  2adbed84e39b681\"\n+00020900: 3e4f 7065 6e53 7562 6469 763a 3a4f 5045  >OpenSubdiv::OPE\n+00020910: 4e53 5542 4449 565f 5645 5253 494f 4e3a  NSUBDIV_VERSION:\n+00020920: 3a53 6463 3a3a 5363 6865 6d65 3a3a 4c6f  :Sdc::Scheme::Lo\n+00020930: 6361 6c4d 6173 6b3a 3a53 6574 4e75 6d56  calMask::SetNumV\n+00020940: 6572 7465 7857 6569 6768 7473 3c2f 613e  ertexWeights</a>\n+00020950: 3c2f 6469 763e 3c64 6976 2063 6c61 7373  </div><div class\n+00020960: 3d22 7474 6465 6369 223e 766f 6964 2053  =\"ttdeci\">void S\n+00020970: 6574 4e75 6d56 6572 7465 7857 6569 6768  etNumVertexWeigh\n+00020980: 7473 2869 6e74 2063 6f75 6e74 293c 2f64  ts(int count)</d\n+00020990: 6976 3e3c 6469 7620 636c 6173 733d 2274  iv><div class=\"t\n+000209a0: 7464 6566 223e 3c62 3e44 6566 696e 6974  tdef\"><b>Definit\n+000209b0: 696f 6e3c 2f62 3e20 3c61 2068 7265 663d  ion</b> <a href=\n+000209c0: 2261 3030 3836 335f 736f 7572 6365 2e68  \"a00863_source.h\n+000209d0: 746d 6c23 6c30 3032 3237 223e 7363 6865  tml#l00227\">sche\n+000209e0: 6d65 2e68 3a32 3237 3c2f 613e 3c2f 6469  me.h:227</a></di\n+000209f0: 763e 3c2f 6469 763e 0a3c 6469 7620 636c  v></div>.<div cl\n+00020a00: 6173 733d 2274 7463 2220 6964 3d22 6161  ass=\"ttc\" id=\"aa\n+00020a10: 3031 3334 355f 6874 6d6c 5f61 6334 6234  01345_html_ac4b4\n+00020a20: 6335 3566 6232 3464 6139 3566 3135 3466  c55fb24da95f154f\n+00020a30: 3461 3966 3531 3764 6230 3739 223e 3c64  4a9f517db079\"><d\n+00020a40: 6976 2063 6c61 7373 3d22 7474 6e61 6d65  iv class=\"ttname\n+00020a50: 223e 3c61 2068 7265 663d 2261 3031 3334  \"><a href=\"a0134\n+00020a60: 352e 6874 6d6c 2361 6334 6234 6335 3566  5.html#ac4b4c55f\n+00020a70: 6232 3464 6139 3566 3135 3466 3461 3966  b24da95f154f4a9f\n+00020a80: 3531 3764 6230 3739 223e 4f70 656e 5375  517db079\">OpenSu\n+00020a90: 6264 6976 3a3a 4f50 454e 5355 4244 4956  bdiv::OPENSUBDIV\n+00020aa0: 5f56 4552 5349 4f4e 3a3a 5364 633a 3a53  _VERSION::Sdc::S\n+00020ab0: 6368 656d 653a 3a4c 6f63 616c 4d61 736b  cheme::LocalMask\n+00020ac0: 3a3a 4c6f 6361 6c4d 6173 6b3c 2f61 3e3c  ::LocalMask</a><\n+00020ad0: 2f64 6976 3e3c 6469 7620 636c 6173 733d  /div><div class=\n+00020ae0: 2274 7464 6563 6922 3e4c 6f63 616c 4d61  \"ttdeci\">LocalMa\n+00020af0: 736b 2857 6569 6768 7420 2a76 2c20 5765  sk(Weight *v, We\n+00020b00: 6967 6874 202a 652c 2057 6569 6768 7420  ight *e, Weight \n+00020b10: 2a66 293c 2f64 6976 3e3c 6469 7620 636c  *f)</div><div cl\n+00020b20: 6173 733d 2274 7464 6566 223e 3c62 3e44  ass=\"ttdef\"><b>D\n+00020b30: 6566 696e 6974 696f 6e3c 2f62 3e20 3c61  efinition</b> <a\n+00020b40: 2068 7265 663d 2261 3030 3836 335f 736f   href=\"a00863_so\n+00020b50: 7572 6365 2e68 746d 6c23 6c30 3032 3135  urce.html#l00215\n+00020b60: 223e 7363 6865 6d65 2e68 3a32 3135 3c2f  \">scheme.h:215</\n+00020b70: 613e 3c2f 6469 763e 3c2f 6469 763e 0a3c  a></div></div>.<\n+00020b80: 6469 7620 636c 6173 733d 2274 7463 2220  div class=\"ttc\" \n+00020b90: 6964 3d22 6161 3031 3334 355f 6874 6d6c  id=\"aa01345_html\n+00020ba0: 5f61 6563 3563 3261 6266 6466 6264 6534  _aec5c2abfdfbde4\n+00020bb0: 6464 3933 3463 3036 3136 3235 3939 3437  dd934c0616259947\n+00020bc0: 3931 223e 3c64 6976 2063 6c61 7373 3d22  91\"><div class=\"\n+00020bd0: 7474 6e61 6d65 223e 3c61 2068 7265 663d  ttname\"><a href=\n+00020be0: 2261 3031 3334 352e 6874 6d6c 2361 6563  \"a01345.html#aec\n+00020bf0: 3563 3261 6266 6466 6264 6534 6464 3933  5c2abfdfbde4dd93\n+00020c00: 3463 3036 3136 3235 3939 3437 3931 223e  4c061625994791\">\n+00020c10: 4f70 656e 5375 6264 6976 3a3a 4f50 454e  OpenSubdiv::OPEN\n+00020c20: 5355 4244 4956 5f56 4552 5349 4f4e 3a3a  SUBDIV_VERSION::\n+00020c30: 5364 633a 3a53 6368 656d 653a 3a4c 6f63  Sdc::Scheme::Loc\n+00020c40: 616c 4d61 736b 3a3a 5665 7274 6578 5765  alMask::VertexWe\n+00020c50: 6967 6874 3c2f 613e 3c2f 6469 763e 3c64  ight</a></div><d\n+00020c60: 6976 2063 6c61 7373 3d22 7474 6465 6369  iv class=\"ttdeci\n+00020c70: 223e 5765 6967 6874 2063 6f6e 7374 2026  \">Weight const &\n+00020c80: 616d 703b 2056 6572 7465 7857 6569 6768  amp; VertexWeigh\n+00020c90: 7428 696e 7420 696e 6465 7829 2063 6f6e  t(int index) con\n+00020ca0: 7374 3c2f 6469 763e 3c64 6976 2063 6c61  st</div><div cla\n+00020cb0: 7373 3d22 7474 6465 6622 3e3c 623e 4465  ss=\"ttdef\"><b>De\n+00020cc0: 6669 6e69 7469 6f6e 3c2f 623e 203c 6120  finition</b> <a \n+00020cd0: 6872 6566 3d22 6130 3038 3633 5f73 6f75  href=\"a00863_sou\n+00020ce0: 7263 652e 6874 6d6c 236c 3030 3233 3122  rce.html#l00231\"\n+00020cf0: 3e73 6368 656d 652e 683a 3233 313c 2f61  >scheme.h:231</a\n+00020d00: 3e3c 2f64 6976 3e3c 2f64 6976 3e0a 3c64  ></div></div>.<d\n+00020d10: 6976 2063 6c61 7373 3d22 7474 6322 2069  iv class=\"ttc\" i\n+00020d20: 643d 2261 6130 3133 3435 5f68 746d 6c5f  d=\"aa01345_html_\n+00020d30: 6165 6466 3239 6633 3037 3836 6236 3233  aedf29f30786b623\n+00020d40: 3732 3030 3461 3232 6133 6661 3335 6135  72004a22a3fa35a5\n+00020d50: 6322 3e3c 6469 7620 636c 6173 733d 2274  c\"><div class=\"t\n+00020d60: 746e 616d 6522 3e3c 6120 6872 6566 3d22  tname\"><a href=\"\n+00020d70: 6130 3133 3435 2e68 746d 6c23 6165 6466  a01345.html#aedf\n+00020d80: 3239 6633 3037 3836 6236 3233 3732 3030  29f30786b6237200\n+00020d90: 3461 3232 6133 6661 3335 6135 6322 3e4f  4a22a3fa35a5c\">O\n+00020da0: 7065 6e53 7562 6469 763a 3a4f 5045 4e53  penSubdiv::OPENS\n+00020db0: 5542 4449 565f 5645 5253 494f 4e3a 3a53  UBDIV_VERSION::S\n+00020dc0: 6463 3a3a 5363 6865 6d65 3a3a 4c6f 6361  dc::Scheme::Loca\n+00020dd0: 6c4d 6173 6b3a 3a46 6163 6557 6569 6768  lMask::FaceWeigh\n+00020de0: 743c 2f61 3e3c 2f64 6976 3e3c 6469 7620  t</a></div><div \n+00020df0: 636c 6173 733d 2274 7464 6563 6922 3e57  class=\"ttdeci\">W\n+00020e00: 6569 6768 7420 2661 6d70 3b20 4661 6365  eight &amp; Face\n+00020e10: 5765 6967 6874 2869 6e74 2069 6e64 6578  Weight(int index\n+00020e20: 293c 2f64 6976 3e3c 6469 7620 636c 6173  )</div><div clas\n+00020e30: 733d 2274 7464 6566 223e 3c62 3e44 6566  s=\"ttdef\"><b>Def\n+00020e40: 696e 6974 696f 6e3c 2f62 3e20 3c61 2068  inition</b> <a h\n+00020e50: 7265 663d 2261 3030 3836 335f 736f 7572  ref=\"a00863_sour\n+00020e60: 6365 2e68 746d 6c23 6c30 3032 3337 223e  ce.html#l00237\">\n+00020e70: 7363 6865 6d65 2e68 3a32 3337 3c2f 613e  scheme.h:237</a>\n+00020e80: 3c2f 6469 763e 3c2f 6469 763e 0a3c 6469  </div></div>.<di\n+00020e90: 7620 636c 6173 733d 2274 7463 2220 6964  v class=\"ttc\" id\n+00020ea0: 3d22 6161 3031 3334 355f 6874 6d6c 5f61  =\"aa01345_html_a\n+00020eb0: 6635 3432 3933 3764 6136 3035 3033 3432  f542937da6050342\n+00020ec0: 6362 3664 3963 3034 3265 3462 3839 3532  cb6d9c042e4b8952\n+00020ed0: 223e 3c64 6976 2063 6c61 7373 3d22 7474  \"><div class=\"tt\n+00020ee0: 6e61 6d65 223e 3c61 2068 7265 663d 2261  name\"><a href=\"a\n+00020ef0: 3031 3334 352e 6874 6d6c 2361 6635 3432  01345.html#af542\n+00020f00: 3933 3764 6136 3035 3033 3432 6362 3664  937da6050342cb6d\n+00020f10: 3963 3034 3265 3462 3839 3532 223e 4f70  9c042e4b8952\">Op\n+00020f20: 656e 5375 6264 6976 3a3a 4f50 454e 5355  enSubdiv::OPENSU\n+00020f30: 4244 4956 5f56 4552 5349 4f4e 3a3a 5364  BDIV_VERSION::Sd\n+00020f40: 633a 3a53 6368 656d 653a 3a4c 6f63 616c  c::Scheme::Local\n+00020f50: 4d61 736b 3a3a 7e4c 6f63 616c 4d61 736b  Mask::~LocalMask\n+00020f60: 3c2f 613e 3c2f 6469 763e 3c64 6976 2063  </a></div><div c\n+00020f70: 6c61 7373 3d22 7474 6465 6369 223e 7e4c  lass=\"ttdeci\">~L\n+00020f80: 6f63 616c 4d61 736b 2829 3c2f 6469 763e  ocalMask()</div>\n+00020f90: 3c64 6976 2063 6c61 7373 3d22 7474 6465  <div class=\"ttde\n+00020fa0: 6622 3e3c 623e 4465 6669 6e69 7469 6f6e  f\"><b>Definition\n+00020fb0: 3c2f 623e 203c 6120 6872 6566 3d22 6130  </b> <a href=\"a0\n+00020fc0: 3038 3633 5f73 6f75 7263 652e 6874 6d6c  0863_source.html\n+00020fd0: 236c 3030 3231 3622 3e73 6368 656d 652e  #l00216\">scheme.\n+00020fe0: 683a 3231 363c 2f61 3e3c 2f64 6976 3e3c  h:216</a></div><\n+00020ff0: 2f64 6976 3e0a 3c2f 6469 763e 3c21 2d2d  /div>.</div><!--\n+00021000: 2066 7261 676d 656e 7420 2d2d 3e3c 2f64   fragment --></d\n+00021010: 6976 3e3c 212d 2d20 636f 6e74 656e 7473  iv><!-- contents\n+00021020: 202d 2d3e 0a3c 2f64 6976 3e3c 212d 2d20   -->.</div><!-- \n+00021030: 646f 632d 636f 6e74 656e 7420 2d2d 3e0a  doc-content -->.\n+00021040: 3c21 2d2d 2073 7461 7274 2066 6f6f 7465  <!-- start foote\n+00021050: 7220 7061 7274 202d 2d3e 0a3c 6469 7620  r part -->.<div \n+00021060: 6964 3d22 6e61 762d 7061 7468 2220 636c  id=\"nav-path\" cl\n+00021070: 6173 733d 226e 6176 7061 7468 223e 3c21  ass=\"navpath\"><!\n+00021080: 2d2d 2069 6420 6973 206e 6565 6465 6420  -- id is needed \n+00021090: 666f 7220 7472 6565 7669 6577 2066 756e  for treeview fun\n+000210a0: 6374 696f 6e21 202d 2d3e 0a20 203c 756c  ction! -->.  <ul\n+000210b0: 3e0a 2020 2020 3c6c 6920 636c 6173 733d  >.    <li class=\n+000210c0: 226e 6176 656c 656d 223e 3c61 2063 6c61  \"navelem\"><a cla\n+000210d0: 7373 3d22 656c 2220 6872 6566 3d22 6469  ss=\"el\" href=\"di\n+000210e0: 725f 3932 6433 3265 6432 6565 3561 3531  r_92d32ed2ee5a51\n+000210f0: 3839 6332 3437 3732 3763 3833 6534 6230  89c247727c83e4b0\n+00021100: 6661 2e68 746d 6c22 3e6f 7065 6e73 7562  fa.html\">opensub\n+00021110: 6469 763c 2f61 3e3c 2f6c 693e 3c6c 6920  div</a></li><li \n+00021120: 636c 6173 733d 226e 6176 656c 656d 223e  class=\"navelem\">\n+00021130: 3c61 2063 6c61 7373 3d22 656c 2220 6872  <a class=\"el\" hr\n+00021140: 6566 3d22 6469 725f 6636 3133 3638 3934  ef=\"dir_f6136894\n+00021150: 3463 3633 6332 6331 6638 6336 3962 6332  4c63c2c1f8c69bc2\n+00021160: 3332 6535 3963 3339 2e68 746d 6c22 3e73  32e59c39.html\">s\n+00021170: 6463 3c2f 613e 3c2f 6c69 3e3c 6c69 2063  dc</a></li><li c\n+00021180: 6c61 7373 3d22 6e61 7665 6c65 6d22 3e3c  lass=\"navelem\"><\n+00021190: 6120 636c 6173 733d 2265 6c22 2068 7265  a class=\"el\" hre\n+000211a0: 663d 2261 3030 3836 332e 6874 6d6c 223e  f=\"a00863.html\">\n+000211b0: 7363 6865 6d65 2e68 3c2f 613e 3c2f 6c69  scheme.h</a></li\n+000211c0: 3e0a 2020 2020 3c6c 6920 636c 6173 733d  >.    <li class=\n+000211d0: 2266 6f6f 7465 7222 3e47 656e 6572 6174  \"footer\">Generat\n+000211e0: 6564 206f 6e20 5468 7520 4a61 6e20 3220  ed on Thu Jan 2 \n+000211f0: 3230 3235 2030 383a 3437 3a34 3620 666f  2025 08:47:46 fo\n+00021200: 7220 4f70 656e 5375 6264 6976 2062 7920  r OpenSubdiv by \n+00021210: 3c61 2068 7265 663d 2268 7474 7073 3a2f  <a href=\"https:/\n+00021220: 2f77 7777 2e64 6f78 7967 656e 2e6f 7267  /www.doxygen.org\n+00021230: 2f69 6e64 6578 2e68 746d 6c22 3e3c 696d  /index.html\"><im\n+00021240: 6720 636c 6173 733d 2266 6f6f 7465 7222  g class=\"footer\"\n+00021250: 2073 7263 3d22 646f 7879 6765 6e2e 7376   src=\"doxygen.sv\n+00021260: 6722 2077 6964 7468 3d22 3130 3422 2068  g\" width=\"104\" h\n+00021270: 6569 6768 743d 2233 3122 2061 6c74 3d22  eight=\"31\" alt=\"\n+00021280: 646f 7879 6765 6e22 2f3e 3c2f 613e 2031  doxygen\"/></a> 1\n+00021290: 2e39 2e38 203c 2f6c 693e 0a20 203c 2f75  .9.8 </li>.  </u\n+000212a0: 6c3e 0a3c 2f64 6976 3e0a 3c2f 626f 6479  l>.</div>.</body\n+000212b0: 3e0a 3c2f 6874 6d6c 3e0a                 >.</html>.\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-d3d11LegacyGregoryPatchTable.h\n+scheme.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2015 Pixar\n+2// Copyright 2014 DreamWorks Animation LLC.\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -23,135 +23,847 @@\n 17//\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n-24\n-25#ifndef OPENSUBDIV3_OSD_D3D11_LEGACY_GREGORY_PATCH_TABLE_H\n-26#define OPENSUBDIV3_OSD_D3D11_LEGACY_GREGORY_PATCH_TABLE_H\n-27\n-28#include \"../version.h\"\n-29\n-30#include \"../far/patchTable.h\"\n-31#include \"../osd/nonCopyable.h\"\n+24#ifndef OPENSUBDIV3_SDC_SCHEME_H\n+25#define OPENSUBDIV3_SDC_SCHEME_H\n+26\n+27#include \"../version.h\"\n+28\n+29#include \"../sdc/types.h\"\n+30#include \"../sdc/options.h\"\n+31#include \"../sdc/crease.h\"\n 32\n-33struct ID3D11Buffer;\n-34struct ID3D11ShaderResourceView;\n-35struct ID3D11Device;\n-36struct ID3D11DeviceContext;\n-37\n-38namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-39namespace OPENSUBDIV_VERSION {\n-40\n-41namespace Osd {\n-42\n-_\b4_\b3class _\bD_\b3_\bD_\b1_\b1_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n-44 : private NonCopyable<D3D11LegacyGregoryPatchTable> {\n-45public:\n-_\b4_\b6 _\b~_\bD_\b3_\bD_\b1_\b1_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be();\n-47\n-48 template<typename DEVICE_CONTEXT>\n-_\b4_\b9 static _\bD_\b3_\bD_\b1_\b1_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be *_\bC_\br_\be_\ba_\bt_\be(\n-50 _\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be const *farPatchTable, DEVICE_CONTEXT context) {\n-51 return _\bC_\br_\be_\ba_\bt_\be(farPatchTable, context->GetDeviceContext());\n-52 }\n-53\n-_\b5_\b4 static _\bD_\b3_\bD_\b1_\b1_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be *_\bC_\br_\be_\ba_\bt_\be(\n-55 _\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be const *farPatchTable,\n-56 ID3D11DeviceContext *deviceContext);\n-57\n-_\b5_\b8 void _\bU_\bp_\bd_\ba_\bt_\be_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br(ID3D11Buffer *vbo,\n-59 int numVertices, int numVertexElements,\n-60 ID3D11DeviceContext *pd3d11DeviceContext);\n-61\n-_\b6_\b2 ID3D11ShaderResourceView* _\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bS_\bR_\bV() const {\n-63 return _vertexSRV;\n-64 }\n-65\n-_\b6_\b6 ID3D11ShaderResourceView* _\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be_\bS_\bR_\bV() const {\n-67 return _vertexValenceSRV;\n-68 }\n+33#include <cassert>\n+34#include <cstdlib>\n+35#include <vector>\n+36\n+37namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+38namespace OPENSUBDIV_VERSION {\n+39\n+40namespace Sdc {\n+41\n+65template <SchemeType SCHEME_TYPE>\n+_\b6_\b6class _\bS_\bc_\bh_\be_\bm_\be {\n+67\n+68public:\n 69\n-_\b7_\b0 ID3D11ShaderResourceView* _\bG_\be_\bt_\bQ_\bu_\ba_\bd_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bS_\bR_\bV() const {\n-71 return _quadOffsetsSRV;\n-72 }\n+_\b7_\b0 _\bS_\bc_\bh_\be_\bm_\be() : _options() { }\n+71\n+_\b7_\b2 _\bS_\bc_\bh_\be_\bm_\be(_\bO_\bp_\bt_\bi_\bo_\bn_\bs const& options) : _options(options) { }\n 73\n-_\b7_\b4 int _\bG_\be_\bt_\bQ_\bu_\ba_\bd_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bB_\ba_\bs_\be(_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bT_\by_\bp_\be type) {\n-75 if (type == _\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bG_\bR_\bE_\bG_\bO_\bR_\bY_\b__\bB_\bO_\bU_\bN_\bD_\bA_\bR_\bY) {\n-76 return _quadOffsetsBase[1];\n-77 }\n-78 return _quadOffsetsBase[0];\n-79 }\n-80\n-81protected:\n-_\b8_\b2 _\bD_\b3_\bD_\b1_\b1_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be();\n-83\n-84private:\n-85 ID3D11Buffer* _vertexValenceBuffer;\n-86 ID3D11Buffer* _quadOffsetsBuffer;\n-87 ID3D11ShaderResourceView* _vertexSRV;\n-88 ID3D11ShaderResourceView* _vertexValenceSRV;\n-89 ID3D11ShaderResourceView* _quadOffsetsSRV;\n-90 int _quadOffsetsBase[2]; // gregory, boundaryGregory\n-91};\n-92\n-93\n-94\n-95} // end namespace Osd\n-96\n-97} // end namespace OPENSUBDIV_VERSION\n-98using namespace OPENSUBDIV_VERSION;\n-99\n-100} // end namespace OpenSubdiv\n-101\n-102#endif // OPENSUBDIV3_OSD_D3D11_LEGACY_GREGORY_PATCH_TABLE_H\n+_\b7_\b4 _\bO_\bp_\bt_\bi_\bo_\bn_\bs _\bG_\be_\bt_\bO_\bp_\bt_\bi_\bo_\bn_\bs() const { return _options; }\n+_\b7_\b5 void _\bS_\be_\bt_\bO_\bp_\bt_\bi_\bo_\bn_\bs(const _\bO_\bp_\bt_\bi_\bo_\bn_\bs& newOptions) { _options = newOptions; }\n+76\n+80 template <typename FACE, typename MASK>\n+81 void _\bC_\bo_\bm_\bp_\bu_\bt_\be_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\be_\bx_\bM_\ba_\bs_\bk(FACE const& faceNeighborhood, MASK&\n+faceVertexMask) const;\n+82\n+98 template <typename EDGE, typename MASK>\n+99 void _\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bd_\bg_\be_\bV_\be_\br_\bt_\be_\bx_\bM_\ba_\bs_\bk(EDGE const& edgeNeighborhood, MASK&\n+edgeVertexMask,\n+100 _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be parentRule = _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bU_\bN_\bK_\bN_\bO_\bW_\bN,\n+101 _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be childRule = _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bU_\bN_\bK_\bN_\bO_\bW_\bN) const;\n+102\n+112 template <typename VERTEX, typename MASK>\n+113 void _\bC_\bo_\bm_\bp_\bu_\bt_\be_\bV_\be_\br_\bt_\be_\bx_\bV_\be_\br_\bt_\be_\bx_\bM_\ba_\bs_\bk(VERTEX const& vertexNeighborhood, MASK&\n+vertexVertexMask,\n+114 _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be parentRule = _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bU_\bN_\bK_\bN_\bO_\bW_\bN,\n+115 _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be childRule = _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bU_\bN_\bK_\bN_\bO_\bW_\bN) const;\n+116\n+141 template <typename VERTEX, typename MASK>\n+142 void _\bC_\bo_\bm_\bp_\bu_\bt_\be_\bV_\be_\br_\bt_\be_\bx_\bL_\bi_\bm_\bi_\bt_\bM_\ba_\bs_\bk(VERTEX const& vertexNeighborhood, MASK&\n+positionMask,\n+143 _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be vertexRule) const;\n+144\n+145 template <typename VERTEX, typename MASK>\n+146 void _\bC_\bo_\bm_\bp_\bu_\bt_\be_\bV_\be_\br_\bt_\be_\bx_\bL_\bi_\bm_\bi_\bt_\bM_\ba_\bs_\bk(VERTEX const& vertexNeighborhood, MASK&\n+positionMask,\n+147 MASK& tangent1Mask, MASK& tangent2Mask,\n+148 _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be vertexRule) const;\n+149\n+150 //\n+151 // Static methods defining traits/properties of the scheme:\n+152 //\n+_\b1_\b5_\b3 static _\bS_\bp_\bl_\bi_\bt _\bG_\be_\bt_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\bi_\bc_\ba_\bl_\bS_\bp_\bl_\bi_\bt_\bT_\by_\bp_\be();\n+_\b1_\b5_\b4 static int _\bG_\be_\bt_\bR_\be_\bg_\bu_\bl_\ba_\br_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be();\n+_\b1_\b5_\b5 static int _\bG_\be_\bt_\bR_\be_\bg_\bu_\bl_\ba_\br_\bV_\be_\br_\bt_\be_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be();\n+_\b1_\b5_\b6 static int _\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bh_\bo_\bo_\bd_\bS_\bi_\bz_\be();\n+157\n+158protected:\n+159\n+160 //\n+161 // Supporting internal methods -- optionally implemented, depending on\n+specialization:\n+162 //\n+163\n+164 // Subdivision/refinement masks -- two for edge-vertices and three for\n+vertex-vertices:\n+165 //\n+166 template <typename EDGE, typename MASK>\n+167 void _\ba_\bs_\bs_\bi_\bg_\bn_\bC_\br_\be_\ba_\bs_\be_\bM_\ba_\bs_\bk_\bF_\bo_\br_\bE_\bd_\bg_\be(EDGE const& edge, MASK& mask) const;\n+168 template <typename EDGE, typename MASK>\n+_\b1_\b6_\b9 void _\ba_\bs_\bs_\bi_\bg_\bn_\bS_\bm_\bo_\bo_\bt_\bh_\bM_\ba_\bs_\bk_\bF_\bo_\br_\bE_\bd_\bg_\be(EDGE const& edge, MASK& mask) const;\n+170\n+171 template <typename VERTEX, typename MASK>\n+172 void _\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\br_\bn_\be_\br_\bM_\ba_\bs_\bk_\bF_\bo_\br_\bV_\be_\br_\bt_\be_\bx(VERTEX const& edge, MASK& mask) const;\n+173 template <typename VERTEX, typename MASK>\n+_\b1_\b7_\b4 void _\ba_\bs_\bs_\bi_\bg_\bn_\bC_\br_\be_\ba_\bs_\be_\bM_\ba_\bs_\bk_\bF_\bo_\br_\bV_\be_\br_\bt_\be_\bx(VERTEX const& edge, MASK& mask, int const\n+creaseEnds[2]) const;\n+175 template <typename VERTEX, typename MASK>\n+_\b1_\b7_\b6 void _\ba_\bs_\bs_\bi_\bg_\bn_\bS_\bm_\bo_\bo_\bt_\bh_\bM_\ba_\bs_\bk_\bF_\bo_\br_\bV_\be_\br_\bt_\be_\bx(VERTEX const& edge, MASK& mask) const;\n+177\n+178 //\n+179 // Limit masks for position and tangents at vertices -- three cases for\n+each:\n+180 //\n+181 template <typename VERTEX, typename MASK>\n+_\b1_\b8_\b2 void _\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\br_\bn_\be_\br_\bL_\bi_\bm_\bi_\bt_\bM_\ba_\bs_\bk(VERTEX const& vertex, MASK& pos) const;\n+183 template <typename VERTEX, typename MASK>\n+_\b1_\b8_\b4 void _\ba_\bs_\bs_\bi_\bg_\bn_\bC_\br_\be_\ba_\bs_\be_\bL_\bi_\bm_\bi_\bt_\bM_\ba_\bs_\bk(VERTEX const& vertex, MASK& pos, int const\n+creaseEnds[2]) const;\n+185 template <typename VERTEX, typename MASK>\n+_\b1_\b8_\b6 void _\ba_\bs_\bs_\bi_\bg_\bn_\bS_\bm_\bo_\bo_\bt_\bh_\bL_\bi_\bm_\bi_\bt_\bM_\ba_\bs_\bk(VERTEX const& vertex, MASK& pos) const;\n+187\n+188 template <typename VERTEX, typename MASK>\n+_\b1_\b8_\b9 void _\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\br_\bn_\be_\br_\bL_\bi_\bm_\bi_\bt_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bM_\ba_\bs_\bk_\bs(VERTEX const& vertex, MASK& tan1, MASK&\n+tan2) const;\n+190 template <typename VERTEX, typename MASK>\n+_\b1_\b9_\b1 void _\ba_\bs_\bs_\bi_\bg_\bn_\bC_\br_\be_\ba_\bs_\be_\bL_\bi_\bm_\bi_\bt_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bM_\ba_\bs_\bk_\bs(VERTEX const& vertex, MASK& tan1, MASK&\n+tan2, int const creaseEnds[2]) const;\n+192 template <typename VERTEX, typename MASK>\n+_\b1_\b9_\b3 void _\ba_\bs_\bs_\bi_\bg_\bn_\bS_\bm_\bo_\bo_\bt_\bh_\bL_\bi_\bm_\bi_\bt_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bM_\ba_\bs_\bk_\bs(VERTEX const& vertex, MASK& tan1, MASK&\n+tan2) const;\n+194\n+195private:\n+196 _\bO_\bp_\bt_\bi_\bo_\bn_\bs _options;\n+197\n+198protected:\n+199\n+200 //\n+201 // Internal implementation support:\n+202 //\n+203 // We need a local \"mask\" class to be declared locally within the vertex-\n+vertex mask query\n+204 // to hold one of the two possible masks required and to combine the local\n+mask with the mask\n+205 // the caller provides. It has been parameterized by <WEIGHT> so that a\n+version compatible\n+206 // with the caller's mask class is created.\n+207 //\n+208 template <typename WEIGHT>\n+_\b2_\b0_\b9 class _\bL_\bo_\bc_\ba_\bl_\bM_\ba_\bs_\bk {\n+210\n+211 public:\n+_\b2_\b1_\b2 typedef WEIGHT _\bW_\be_\bi_\bg_\bh_\bt;\n+213\n+214 public:\n+_\b2_\b1_\b5 _\bL_\bo_\bc_\ba_\bl_\bM_\ba_\bs_\bk(_\bW_\be_\bi_\bg_\bh_\bt* v, _\bW_\be_\bi_\bg_\bh_\bt* e, _\bW_\be_\bi_\bg_\bh_\bt* f) : _vWeights(v), _eWeights(e),\n+_fWeights(f) { }\n+_\b2_\b1_\b6 _\b~_\bL_\bo_\bc_\ba_\bl_\bM_\ba_\bs_\bk() { }\n+217\n+218 public:\n+219\n+220 //\n+221 // Methods required for general mask assignments and queries:\n+222 //\n+_\b2_\b2_\b3 int _\bG_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\be_\bx_\bW_\be_\bi_\bg_\bh_\bt_\bs() const { return _vCount; }\n+_\b2_\b2_\b4 int _\bG_\be_\bt_\bN_\bu_\bm_\bE_\bd_\bg_\be_\bW_\be_\bi_\bg_\bh_\bt_\bs() const { return _eCount; }\n+_\b2_\b2_\b5 int _\bG_\be_\bt_\bN_\bu_\bm_\bF_\ba_\bc_\be_\bW_\be_\bi_\bg_\bh_\bt_\bs() const { return _fCount; }\n+226\n+_\b2_\b2_\b7 void _\bS_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\be_\bx_\bW_\be_\bi_\bg_\bh_\bt_\bs(int count) { _vCount = count; }\n+_\b2_\b2_\b8 void _\bS_\be_\bt_\bN_\bu_\bm_\bE_\bd_\bg_\be_\bW_\be_\bi_\bg_\bh_\bt_\bs( int count) { _eCount = count; }\n+_\b2_\b2_\b9 void _\bS_\be_\bt_\bN_\bu_\bm_\bF_\ba_\bc_\be_\bW_\be_\bi_\bg_\bh_\bt_\bs( int count) { _fCount = count; }\n+230\n+_\b2_\b3_\b1 _\bW_\be_\bi_\bg_\bh_\bt const& _\bV_\be_\br_\bt_\be_\bx_\bW_\be_\bi_\bg_\bh_\bt(int index) const { return _vWeights[index]; }\n+_\b2_\b3_\b2 _\bW_\be_\bi_\bg_\bh_\bt const& _\bE_\bd_\bg_\be_\bW_\be_\bi_\bg_\bh_\bt( int index) const { return _eWeights[index]; }\n+_\b2_\b3_\b3 _\bW_\be_\bi_\bg_\bh_\bt const& _\bF_\ba_\bc_\be_\bW_\be_\bi_\bg_\bh_\bt( int index) const { return _fWeights[index]; }\n+234\n+_\b2_\b3_\b5 _\bW_\be_\bi_\bg_\bh_\bt& _\bV_\be_\br_\bt_\be_\bx_\bW_\be_\bi_\bg_\bh_\bt(int index) { return _vWeights[index]; }\n+_\b2_\b3_\b6 _\bW_\be_\bi_\bg_\bh_\bt& _\bE_\bd_\bg_\be_\bW_\be_\bi_\bg_\bh_\bt( int index) { return _eWeights[index]; }\n+_\b2_\b3_\b7 _\bW_\be_\bi_\bg_\bh_\bt& _\bF_\ba_\bc_\be_\bW_\be_\bi_\bg_\bh_\bt( int index) { return _fWeights[index]; }\n+238\n+_\b2_\b3_\b9 bool _\bA_\br_\be_\bF_\ba_\bc_\be_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bF_\bo_\br_\bF_\ba_\bc_\be_\bC_\be_\bn_\bt_\be_\br_\bs() const { return _fWeightsForCenters; }\n+_\b2_\b4_\b0 void _\bS_\be_\bt_\bF_\ba_\bc_\be_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bF_\bo_\br_\bF_\ba_\bc_\be_\bC_\be_\bn_\bt_\be_\br_\bs(bool on) { _fWeightsForCenters = on; }\n+241\n+242 public:\n+243\n+244 //\n+245 // Additional methods -- mainly the blending method for vertex-vertex\n+masks:\n+246 //\n+247 template <typename USER_MASK>\n+248 inline void\n+_\b2_\b4_\b9 _\bC_\bo_\bm_\bb_\bi_\bn_\be_\bV_\be_\br_\bt_\be_\bx_\bV_\be_\br_\bt_\be_\bx_\bM_\ba_\bs_\bk_\bs(_\bW_\be_\bi_\bg_\bh_\bt thisCoeff, _\bW_\be_\bi_\bg_\bh_\bt dstCoeff, USER_MASK& dst)\n+const {\n+250\n+251 //\n+252 // This implementation is convoluted by the potential sparsity of each\n+mask. Since\n+253 // it is specific to a vertex-vertex mask, we are guaranteed to have\n+exactly one\n+254 // vertex-weight for both masks, but the edge- and face-weights are\n+optional. The\n+255 // child mask (the \"source\") should have a superset of the weights of the\n+parent\n+256 // (the \"destination\") given its reduced sharpness, so we fortunately don't\n+need to\n+257 // test all permutations.\n+258 //\n+259 dst.VertexWeight(0) = dstCoeff * dst.VertexWeight(0) + thisCoeff * this-\n+>_\bV_\be_\br_\bt_\be_\bx_\bW_\be_\bi_\bg_\bh_\bt(0);\n+260\n+261 int edgeWeightCount = this->_\bG_\be_\bt_\bN_\bu_\bm_\bE_\bd_\bg_\be_\bW_\be_\bi_\bg_\bh_\bt_\bs();\n+262 if (edgeWeightCount) {\n+263 if (dst.GetNumEdgeWeights() == 0) {\n+264 dst.SetNumEdgeWeights(edgeWeightCount);\n+265 for (int i = 0; i < edgeWeightCount; ++i) {\n+266 dst.EdgeWeight(i) = thisCoeff * this->_\bE_\bd_\bg_\be_\bW_\be_\bi_\bg_\bh_\bt(i);\n+267 }\n+268 } else {\n+269 for (int i = 0; i < edgeWeightCount; ++i) {\n+270 dst.EdgeWeight(i) = dstCoeff * dst.EdgeWeight(i) + thisCoeff * this-\n+>_\bE_\bd_\bg_\be_\bW_\be_\bi_\bg_\bh_\bt(i);\n+271 }\n+272 }\n+273 }\n+274\n+275 int faceWeightCount = this->_\bG_\be_\bt_\bN_\bu_\bm_\bF_\ba_\bc_\be_\bW_\be_\bi_\bg_\bh_\bt_\bs();\n+276 if (faceWeightCount) {\n+277 //\n+278 // If combining face weights, be sure their interpretation (i.e. face-\n+centers\n+279 // or opposite vertices) is properly set in the destination mask:\n+280 //\n+281 if (dst.GetNumFaceWeights() == 0) {\n+282 dst.SetNumFaceWeights(faceWeightCount);\n+283 dst.SetFaceWeightsForFaceCenters(this->_\bA_\br_\be_\bF_\ba_\bc_\be_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bF_\bo_\br_\bF_\ba_\bc_\be_\bC_\be_\bn_\bt_\be_\br_\bs());\n+284\n+285 for (int i = 0; i < faceWeightCount; ++i) {\n+286 dst.FaceWeight(i) = thisCoeff * this->_\bF_\ba_\bc_\be_\bW_\be_\bi_\bg_\bh_\bt(i);\n+287 }\n+288 } else {\n+289 assert(this->_\bA_\br_\be_\bF_\ba_\bc_\be_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bF_\bo_\br_\bF_\ba_\bc_\be_\bC_\be_\bn_\bt_\be_\br_\bs() ==\n+dst.AreFaceWeightsForFaceCenters());\n+290\n+291 for (int i = 0; i < faceWeightCount; ++i) {\n+292 dst.FaceWeight(i) = dstCoeff * dst.FaceWeight(i) + thisCoeff * this-\n+>_\bF_\ba_\bc_\be_\bW_\be_\bi_\bg_\bh_\bt(i);\n+293 }\n+294 }\n+295 }\n+296 }\n+297\n+298 private:\n+299 _\bW_\be_\bi_\bg_\bh_\bt* _vWeights;\n+300 _\bW_\be_\bi_\bg_\bh_\bt* _eWeights;\n+301 _\bW_\be_\bi_\bg_\bh_\bt* _fWeights;\n+302 int _vCount;\n+303 int _eCount;\n+304 int _fCount;\n+305 bool _fWeightsForCenters;\n+306 };\n+307};\n+308\n+309\n+310//\n+311// Crease and corner masks are common to most schemes -- the rest need to be\n+provided\n+312// for each Scheme specialization.\n+313//\n+314template <SchemeType SCHEME>\n+315template <typename EDGE, typename MASK>\n+316inline void\n+_\b3_\b1_\b7_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\br_\be_\ba_\bs_\be_\bM_\ba_\bs_\bk_\bF_\bo_\br_\bE_\bd_\bg_\be(EDGE const&, MASK& mask) const {\n+318\n+319 mask.SetNumVertexWeights(2);\n+320 mask.SetNumEdgeWeights(0);\n+321 mask.SetNumFaceWeights(0);\n+322 mask.SetFaceWeightsForFaceCenters(false);\n+323\n+324 mask.VertexWeight(0) = 0.5f;\n+325 mask.VertexWeight(1) = 0.5f;\n+326}\n+327\n+328template <SchemeType SCHEME>\n+329template <typename VERTEX, typename MASK>\n+330inline void\n+_\b3_\b3_\b1_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\br_\bn_\be_\br_\bM_\ba_\bs_\bk_\bF_\bo_\br_\bV_\be_\br_\bt_\be_\bx(VERTEX const&, MASK& mask) const {\n+332\n+333 mask.SetNumVertexWeights(1);\n+334 mask.SetNumEdgeWeights(0);\n+335 mask.SetNumFaceWeights(0);\n+336 mask.SetFaceWeightsForFaceCenters(false);\n+337\n+338 mask.VertexWeight(0) = 1.0f;\n+339}\n+340\n+341\n+342//\n+343// The computation of a face-vertex mask is trivial and consistent for all\n+schemes:\n+344//\n+345template <SchemeType SCHEME>\n+346template <typename FACE, typename MASK>\n+347void\n+_\b3_\b4_\b8_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b>_\b:_\b:_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\be_\bx_\bM_\ba_\bs_\bk(FACE const& face, MASK& mask) const {\n+349\n+350 int vertCount = face.GetNumVertices();\n+351\n+352 mask.SetNumVertexWeights(vertCount);\n+353 mask.SetNumEdgeWeights(0);\n+354 mask.SetNumFaceWeights(0);\n+355 mask.SetFaceWeightsForFaceCenters(false);\n+356\n+357 typename MASK::Weight vWeight = 1.0f / (typename MASK::Weight) vertCount;\n+358 for (int i = 0; i < vertCount; ++i) {\n+359 mask.VertexWeight(i) = vWeight;\n+360 }\n+361}\n+362\n+363\n+364//\n+365// The computation of an edge-vertex mask requires inspection of sharpness\n+values to\n+366// determine if smooth or a crease, and also to detect and apply a\n+transition from a\n+367// crease to smooth. Using the protected methods to assign the specific\n+masks (only\n+368// two -- smooth or crease) this implementation should serve all non-linear\n+schemes\n+369// (currently Catmark and Loop) and only needs to be specialized for\n+Bilinear to\n+370// trivialize it to the crease case.\n+371//\n+372// The implementation here is slightly complicated by combining two\n+scenarios into a\n+373// single implementation -- either the caller knows the parent and child\n+rules and\n+374// provides them, or they don't and the Rules have to be determined from\n+sharpness\n+375// values. Both cases include quick return once the parent is determined to\n+be\n+376// smooth or the child a crease, leaving the transitional case remaining.\n+377//\n+378// The overall process is as follows:\n+379//\n+380// - quickly detect the most common specified or detected Smooth case and\n+return\n+381// - quickly detect a full Crease by child Rule assignment and return\n+382// - determine from sharpness if unspecified child is a crease -- return if\n+so\n+383// - compute smooth mask for child and combine with crease from parent\n+384//\n+385// Usage of the parent Rule here allows some misuse in that only three of\n+five possible\n+386// assignments are legitimate for the parent and four for the child (Dart\n+being only\n+387// valid for the child and Corner for neither). Results are undefined in\n+these cases.\n+388//\n+389template <SchemeType SCHEME>\n+390template <typename EDGE, typename MASK>\n+391void\n+_\b3_\b9_\b2_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b>_\b:_\b:_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bd_\bg_\be_\bV_\be_\br_\bt_\be_\bx_\bM_\ba_\bs_\bk(EDGE const& edge,\n+393 MASK& mask,\n+394 _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be parentRule,\n+395 _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be childRule) const {\n+396\n+397 //\n+398 // If the parent was specified or determined to be Smooth, we can quickly\n+return\n+399 // with a Smooth mask. Otherwise the parent is a crease -- if the child was\n+400 // also specified to be a crease, we can quickly return with a Crease mask.\n+401 //\n+402 if ((parentRule == _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bS_\bM_\bO_\bO_\bT_\bH) ||\n+403 ((parentRule == _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bU_\bN_\bK_\bN_\bO_\bW_\bN) && (edge.GetSharpness() <= 0.0f))) {\n+404 assignSmoothMaskForEdge(edge, mask);\n+405 return;\n+406 }\n+407 if (childRule == _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bC_\bR_\bE_\bA_\bS_\bE) {\n+408 assignCreaseMaskForEdge(edge, mask);\n+409 return;\n+410 }\n+411\n+412 //\n+413 // We have a Crease on the parent and the child was either specified as\n+Smooth\n+414 // or was not specified at all -- deal with the unspecified case first\n+(again\n+415 // returning a Crease mask if the child is also determined to be a Crease)\n+and\n+416 // continue if we have a transition to Smooth.\n+417 //\n+418 // Note when qualifying the child that if the parent sharpness > 1.0,\n+regardless\n+419 // of the creasing method, whether the child sharpness values decay to zero\n+is\n+420 // irrelevant -- the fractional weight for such a case (the value of the\n+parent\n+421 // sharpness) is > 1.0, and when clamped to 1 effectively yields a full\n+crease.\n+422 //\n+423 if (childRule == _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bU_\bN_\bK_\bN_\bO_\bW_\bN) {\n+424 _\bC_\br_\be_\ba_\bs_\be crease(_options);\n+425\n+426 bool childIsCrease = false;\n+427 if (parentRule == _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bC_\bR_\bE_\bA_\bS_\bE) {\n+428 // Child unknown as default value but parent Rule specified as Crease\n+429 childIsCrease = true;\n+430 } else if (edge.GetSharpness() >= 1.0f) {\n+431 // Sharpness >= 1.0 always a crease -- see note above\n+432 childIsCrease = true;\n+433 } else if (crease._\bI_\bs_\bU_\bn_\bi_\bf_\bo_\br_\bm()) {\n+434 // Sharpness < 1.0 is guaranteed to decay to 0.0 for Uniform child edges\n+435 childIsCrease = false;\n+436 } else {\n+437 // Sharpness <= 1.0 does not necessarily decay to 0.0 for both child\n+edges...\n+438 float cEdgeSharpness[2];\n+439 edge.GetChildSharpnesses(crease, cEdgeSharpness);\n+440 childIsCrease = (cEdgeSharpness[0] > 0.0f) && (cEdgeSharpness[1] > 0.0f);\n+441 }\n+442 if (childIsCrease) {\n+443 assignCreaseMaskForEdge(edge, mask);\n+444 return;\n+445 }\n+446 }\n+447\n+448 //\n+449 // We are now left with the Crease-to-Smooth case -- compute the Smooth\n+mask\n+450 // for the child and augment it with the transitional Crease of the parent.\n+451 //\n+452 // A general combination of separately assigned masks here (as done in the\n+vertex-\n+453 // vertex case) is overkill -- trivially combine the 0.5f vertex\n+coefficient for\n+454 // the Crease of the parent with the vertex weights and attenuate the face\n+weights\n+455 // accordingly.\n+456 //\n+457 assignSmoothMaskForEdge(edge, mask);\n+458\n+459 typedef typename MASK::Weight Weight;\n+460\n+461 Weight pWeight = edge.GetSharpness();\n+462 Weight cWeight = 1.0f - pWeight;\n+463\n+464 mask.VertexWeight(0) = pWeight * 0.5f + cWeight * mask.VertexWeight(0);\n+465 mask.VertexWeight(1) = pWeight * 0.5f + cWeight * mask.VertexWeight(1);\n+466\n+467 int faceCount = mask.GetNumFaceWeights();\n+468 for (int i = 0; i < faceCount; ++i) {\n+469 mask.FaceWeight(i) *= cWeight;\n+470 }\n+471}\n+472\n+473//\n+474// The computation of a vertex-vertex mask requires inspection of creasing\n+sharpness values\n+475// to determine what subdivision Rules apply to the parent and its child\n+vertex, and also to\n+476// detect and apply a transition between two differing Rules. Using the\n+protected methods to\n+477// assign specific masks, this implementation should serve all non-linear\n+schemes (currently\n+478// Catmark and Loop) and only needs to be specialized for Bilinear to remove\n+all unnecessary\n+479// complexity relating to creasing, Rules, etc.\n+480//\n+481// The implementation here is slightly complicated by combining two\n+scenarios into one --\n+482// either the caller knows the parent and child rules and provides them, or\n+they don't and\n+483// the Rules have to be determined from sharpness values. Even when the\n+Rules are known and\n+484// provided though, there are cases where the parent and child sharpness\n+values need to be\n+485// identified, so accounting for the unknown Rules too is not much of an\n+added complication.\n+486//\n+487// The benefit of supporting specified Rules is that they can often be\n+trivially\n+488// determined from context (e.g. a vertex derived from a face at a previous\n+level will always\n+489// be smooth) rather than more generally, and at greater cost, inspecting\n+neighboring and\n+490// they are often the same for parent and child.\n+491//\n+492// The overall process is as follows:\n+493//\n+494// - quickly detect the most common Smooth case when specified and return\n+495// - determine if sharpness for parent is required and gather if so\n+496// - if unspecified, determine the parent rule\n+497// - assign mask for the parent rule -- returning if Smooth/Dart\n+498// - return if child rule matches parent\n+499// - gather sharpness for child to determine or combine child rule\n+500// - if unspecified, determine the child rule, returning if it matches\n+parent\n+501// - assign local mask for child rule\n+502// - combine local child mask with the parent mask\n+503//\n+504// Remember -- if the parent rule is specified but the child is not, this\n+implies only one\n+505// of the two optional rules was specified and is meant to indicate there is\n+no transition,\n+506// so the child rule should be assigned to be the same (wish the compiler\n+would allow this\n+507// in default value assignment).\n+508//\n+509template <SchemeType SCHEME>\n+510template <typename VERTEX, typename MASK>\n+511void\n+_\b5_\b1_\b2_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b>_\b:_\b:_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bV_\be_\br_\bt_\be_\bx_\bV_\be_\br_\bt_\be_\bx_\bM_\ba_\bs_\bk(VERTEX const& vertex,\n+513 MASK& mask,\n+514 _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be pRule,\n+515 _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be cRule) const {\n+516\n+517 // Quick assignment and return for the most common case:\n+518 if ((pRule == _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bS_\bM_\bO_\bO_\bT_\bH) || (pRule == _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bD_\bA_\bR_\bT)) {\n+519 assignSmoothMaskForVertex(vertex, mask);\n+520 return;\n+521 }\n+522 // If unspecified, assign the child rule to match the parent rule if\n+specified:\n+523 if ((cRule == _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bU_\bN_\bK_\bN_\bO_\bW_\bN) && (pRule != _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bU_\bN_\bK_\bN_\bO_\bW_\bN)) {\n+524 cRule = pRule;\n+525 }\n+526 int valence = vertex.GetNumEdges();\n+527\n+528 //\n+529 // Determine if we need the parent edge sharpness values -- identify/gather\n+if so\n+530 // and use it to compute the parent rule if unspecified:\n+531 //\n+532 float * pEdgeSharpnessBuffer = (float *)alloca(valence*sizeof(float)),\n+533 * pEdgeSharpness = 0,\n+534 pVertexSharpness = 0.0f;\n+535\n+536 bool requireParentSharpness = (pRule == _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bU_\bN_\bK_\bN_\bO_\bW_\bN) ||\n+537 (pRule == _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bC_\bR_\bE_\bA_\bS_\bE) ||\n+538 (pRule != cRule);\n+539 if (requireParentSharpness) {\n+540 pVertexSharpness = vertex.GetSharpness();\n+541 pEdgeSharpness = vertex.GetSharpnessPerEdge(pEdgeSharpnessBuffer);\n+542\n+543 if (pRule == _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bU_\bN_\bK_\bN_\bO_\bW_\bN) {\n+544 pRule = _\bC_\br_\be_\ba_\bs_\be(_options)._\bD_\be_\bt_\be_\br_\bm_\bi_\bn_\be_\bV_\be_\br_\bt_\be_\bx_\bV_\be_\br_\bt_\be_\bx_\bR_\bu_\bl_\be(pVertexSharpness,\n+valence, pEdgeSharpness);\n+545 }\n+546 }\n+547 if ((pRule == _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bS_\bM_\bO_\bO_\bT_\bH) || (pRule == _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bD_\bA_\bR_\bT)) {\n+548 assignSmoothMaskForVertex(vertex, mask);\n+549 return; // As done on entry, we can return immediately if parent is Smooth/\n+Dart\n+550 } else if (pRule == _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bC_\bR_\bE_\bA_\bS_\bE) {\n+551 int creaseEnds[2];\n+552 _\bC_\br_\be_\ba_\bs_\be(_options)._\bG_\be_\bt_\bS_\bh_\ba_\br_\bp_\bE_\bd_\bg_\be_\bP_\ba_\bi_\br_\bO_\bf_\bC_\br_\be_\ba_\bs_\be(pEdgeSharpness, valence,\n+creaseEnds);\n+553\n+554 assignCreaseMaskForVertex(vertex, mask, creaseEnds);\n+555 } else {\n+556 assignCornerMaskForVertex(vertex, mask);\n+557 }\n+558 if (cRule == pRule) return;\n+559\n+560 //\n+561 // Identify/gather child sharpness to combine masks for the two differing\n+Rules:\n+562 //\n+563 _\bC_\br_\be_\ba_\bs_\be crease(_options);\n+564\n+565 float * cEdgeSharpnessBuffer = (float *)alloca(valence*sizeof(float)),\n+566 * cEdgeSharpness = vertex.GetChildSharpnessPerEdge(crease,\n+cEdgeSharpnessBuffer),\n+567 cVertexSharpness = vertex.GetChildSharpness(crease);\n+568\n+569 if (cRule == _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bU_\bN_\bK_\bN_\bO_\bW_\bN) {\n+570 cRule = crease._\bD_\be_\bt_\be_\br_\bm_\bi_\bn_\be_\bV_\be_\br_\bt_\be_\bx_\bV_\be_\br_\bt_\be_\bx_\bR_\bu_\bl_\be(cVertexSharpness, valence,\n+cEdgeSharpness);\n+571 if (cRule == pRule) return;\n+572 }\n+573\n+574 //\n+575 // Initialize a local child mask, compute the fractional weight from parent\n+and child\n+576 // sharpness values and combine the two masks:\n+577 //\n+578 typedef typename MASK::Weight Weight;\n+579\n+580 Weight * cMaskWeights = (Weight *)alloca((1 + 2 * valence)*sizeof(Weight));\n+581 _\bL_\bo_\bc_\ba_\bl_\bM_\ba_\bs_\bk_\b<_\bW_\be_\bi_\bg_\bh_\bt_\b> cMask(cMaskWeights, cMaskWeights + 1, cMaskWeights + 1 +\n+valence);\n+582\n+583 if ((cRule == _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bS_\bM_\bO_\bO_\bT_\bH) || (cRule == _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bD_\bA_\bR_\bT)) {\n+584 assignSmoothMaskForVertex(vertex, cMask);\n+585 } else if (cRule == _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bC_\bR_\bE_\bA_\bS_\bE) {\n+586 int creaseEnds[2];\n+587 _\bC_\br_\be_\ba_\bs_\be(_options)._\bG_\be_\bt_\bS_\bh_\ba_\br_\bp_\bE_\bd_\bg_\be_\bP_\ba_\bi_\br_\bO_\bf_\bC_\br_\be_\ba_\bs_\be(cEdgeSharpness, valence,\n+creaseEnds);\n+588\n+589 assignCreaseMaskForVertex(vertex, cMask, creaseEnds);\n+590 } else {\n+591 assignCornerMaskForVertex(vertex, cMask);\n+592 }\n+593\n+594 Weight pWeight = crease._\bC_\bo_\bm_\bp_\bu_\bt_\be_\bF_\br_\ba_\bc_\bt_\bi_\bo_\bn_\ba_\bl_\bW_\be_\bi_\bg_\bh_\bt_\bA_\bt_\bV_\be_\br_\bt_\be_\bx(pVertexSharpness,\n+cVertexSharpness,\n+595 valence, pEdgeSharpness, cEdgeSharpness);\n+596 Weight cWeight = 1.0f - pWeight;\n+597\n+598 cMask._\bC_\bo_\bm_\bb_\bi_\bn_\be_\bV_\be_\br_\bt_\be_\bx_\bV_\be_\br_\bt_\be_\bx_\bM_\ba_\bs_\bk_\bs(cWeight, pWeight, mask);\n+599}\n+600\n+601//\n+602// The computation of limit masks for vertices:\n+603//\n+604template <SchemeType SCHEME>\n+605template <typename VERTEX, typename MASK>\n+606void\n+_\b6_\b0_\b7_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b>_\b:_\b:_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bV_\be_\br_\bt_\be_\bx_\bL_\bi_\bm_\bi_\bt_\bM_\ba_\bs_\bk(VERTEX const& vertex,\n+608 MASK& mask,\n+609 _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be rule) const {\n+610\n+611 if ((rule == _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bS_\bM_\bO_\bO_\bT_\bH) || (rule == _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bD_\bA_\bR_\bT)) {\n+612 assignSmoothLimitMask(vertex, mask);\n+613 } else if (rule == _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bC_\bR_\bE_\bA_\bS_\bE) {\n+614 float * edgeSharpness = (float *)alloca(vertex.GetNumEdges() * sizeof\n+(float));\n+615 vertex.GetSharpnessPerEdge(edgeSharpness);\n+616\n+617 int creaseEnds[2];\n+618 _\bC_\br_\be_\ba_\bs_\be(_options)._\bG_\be_\bt_\bS_\bh_\ba_\br_\bp_\bE_\bd_\bg_\be_\bP_\ba_\bi_\br_\bO_\bf_\bC_\br_\be_\ba_\bs_\be(edgeSharpness, vertex.GetNumEdges\n+(), creaseEnds);\n+619\n+620 assignCreaseLimitMask(vertex, mask, creaseEnds);\n+621 } else {\n+622 assignCornerLimitMask(vertex, mask);\n+623 }\n+624}\n+625\n+626template <SchemeType SCHEME>\n+627template <typename VERTEX, typename MASK>\n+628void\n+_\b6_\b2_\b9_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b>_\b:_\b:_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bV_\be_\br_\bt_\be_\bx_\bL_\bi_\bm_\bi_\bt_\bM_\ba_\bs_\bk(VERTEX const& vertex,\n+630 MASK& posMask,\n+631 MASK& tan1Mask,\n+632 MASK& tan2Mask,\n+633 _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be rule) const {\n+634\n+635 if ((rule == _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bS_\bM_\bO_\bO_\bT_\bH) || (rule == _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bD_\bA_\bR_\bT)) {\n+636 assignSmoothLimitMask(vertex, posMask);\n+637 assignSmoothLimitTangentMasks(vertex, tan1Mask, tan2Mask);\n+638 } else if (rule == _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bC_\bR_\bE_\bA_\bS_\bE) {\n+639 float * edgeSharpness = (float *)alloca(vertex.GetNumEdges() * sizeof\n+(float));\n+640 vertex.GetSharpnessPerEdge(edgeSharpness);\n+641\n+642 int creaseEnds[2];\n+643 _\bC_\br_\be_\ba_\bs_\be(_options)._\bG_\be_\bt_\bS_\bh_\ba_\br_\bp_\bE_\bd_\bg_\be_\bP_\ba_\bi_\br_\bO_\bf_\bC_\br_\be_\ba_\bs_\be(edgeSharpness, vertex.GetNumEdges\n+(), creaseEnds);\n+644\n+645 assignCreaseLimitMask(vertex, posMask, creaseEnds);\n+646 assignCreaseLimitTangentMasks(vertex, tan1Mask, tan2Mask, creaseEnds);\n+647 } else {\n+648 assignCornerLimitMask(vertex, posMask);\n+649 assignCornerLimitTangentMasks(vertex, tan1Mask, tan2Mask);\n+650 }\n+651}\n+652\n+653\n+654} // end namespace sdc\n+655\n+656} // end namespace OPENSUBDIV_VERSION\n+657using namespace OPENSUBDIV_VERSION;\n+658} // end namespace OpenSubdiv\n+659\n+660#endif /* OPENSUBDIV3_SDC_SCHEME_H */\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bT_\by_\bp_\be\n-Type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b4_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bG_\bR_\bE_\bG_\bO_\bR_\bY_\b__\bB_\bO_\bU_\bN_\bD_\bA_\bR_\bY\n-@ GREGORY_BOUNDARY\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b6_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n-Container for arrays of parametric patches.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bd_\b3_\bd_\b1_\b1_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b4_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n-_\bU_\bp_\bd_\ba_\bt_\be_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-void UpdateVertexBuffer(ID3D11Buffer *vbo, int numVertices, int\n-numVertexElements, ID3D11DeviceContext *pd3d11DeviceContext)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n-_\bG_\be_\bt_\bQ_\bu_\ba_\bd_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bB_\ba_\bs_\be\n-int GetQuadOffsetsBase(Far::PatchDescriptor::Type type)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bd_\b3_\bd_\b1_\b1_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n-_\b~_\bD_\b3_\bD_\b1_\b1_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n-~D3D11LegacyGregoryPatchTable()\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static D3D11LegacyGregoryPatchTable * Create(Far::PatchTable const\n-*farPatchTable, ID3D11DeviceContext *deviceContext)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bS_\bR_\bV\n-ID3D11ShaderResourceView * GetVertexSRV() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bd_\b3_\bd_\b1_\b1_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static D3D11LegacyGregoryPatchTable * Create(Far::PatchTable const\n-*farPatchTable, DEVICE_CONTEXT context)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bd_\b3_\bd_\b1_\b1_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b4_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n-_\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be_\bS_\bR_\bV\n-ID3D11ShaderResourceView * GetVertexValenceSRV() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bd_\b3_\bd_\b1_\b1_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n-_\bG_\be_\bt_\bQ_\bu_\ba_\bd_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bS_\bR_\bV\n-ID3D11ShaderResourceView * GetQuadOffsetsSRV() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bd_\b3_\bd_\b1_\b1_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n-_\bD_\b3_\bD_\b1_\b1_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n-D3D11LegacyGregoryPatchTable()\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bp_\bl_\bi_\bt\n+Split\n+Enumerated type for all face splitting schemes.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b4_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be\n+Types, constants and utilities related to semi-sharp creasing \u00e2\u0080\u0093 whose\n+implementation is independent o...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b6_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be\n+Rule\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b8_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bD_\bA_\bR_\bT\n+@ RULE_DART\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b8_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bS_\bM_\bO_\bO_\bT_\bH\n+@ RULE_SMOOTH\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b8_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bC_\bR_\bE_\bA_\bS_\bE\n+@ RULE_CREASE\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b8_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bU_\bN_\bK_\bN_\bO_\bW_\bN\n+@ RULE_UNKNOWN\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b8_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bG_\be_\bt_\bS_\bh_\ba_\br_\bp_\bE_\bd_\bg_\be_\bP_\ba_\bi_\br_\bO_\bf_\bC_\br_\be_\ba_\bs_\be\n+void GetSharpEdgePairOfCrease(float const *incidentEdgeSharpness, int\n+incidentEdgeCount, int sharpEdgePair[2]) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b2_\b2_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bD_\be_\bt_\be_\br_\bm_\bi_\bn_\be_\bV_\be_\br_\bt_\be_\bx_\bV_\be_\br_\bt_\be_\bx_\bR_\bu_\bl_\be\n+Rule DetermineVertexVertexRule(float vertexSharpness, int incidentEdgeCount,\n+float const *incidentEdgeSharpness) const\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bI_\bs_\bU_\bn_\bi_\bf_\bo_\br_\bm\n+bool IsUniform() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b9_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bF_\br_\ba_\bc_\bt_\bi_\bo_\bn_\ba_\bl_\bW_\be_\bi_\bg_\bh_\bt_\bA_\bt_\bV_\be_\br_\bt_\be_\bx\n+float ComputeFractionalWeightAtVertex(float vertexSharpness, float\n+childVertexSharpness, int incidentEdgeCount, float const\n+*incidentEdgeSharpness, float const *childEdgesSharpness) const\n+Transitional weighting: When the rules applicable to a parent vertex and its\n+child differ,...\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n+All supported options applying to subdivision scheme.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b5_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be\n+Scheme is a class template which provides all implementation for the\n+subdivision schemes supported by...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b6_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bS_\bm_\bo_\bo_\bt_\bh_\bM_\ba_\bs_\bk_\bF_\bo_\br_\bE_\bd_\bg_\be\n+void assignSmoothMaskForEdge(EDGE const &edge, MASK &mask) const\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bG_\be_\bt_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\bi_\bc_\ba_\bl_\bS_\bp_\bl_\bi_\bt_\bT_\by_\bp_\be\n+static Split GetTopologicalSplitType()\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\br_\be_\ba_\bs_\be_\bM_\ba_\bs_\bk_\bF_\bo_\br_\bV_\be_\br_\bt_\be_\bx\n+void assignCreaseMaskForVertex(VERTEX const &edge, MASK &mask, int const\n+creaseEnds[2]) const\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bV_\be_\br_\bt_\be_\bx_\bV_\be_\br_\bt_\be_\bx_\bM_\ba_\bs_\bk\n+void ComputeVertexVertexMask(VERTEX const &vertexNeighborhood, MASK\n+&vertexVertexMask, Crease::Rule parentRule=Crease::RULE_UNKNOWN, Crease::Rule\n+childRule=Crease::RULE_UNKNOWN) const\n+Vertex-vertex masks If known, a single Rule or pair of Rules can be specified\n+(indicating a crease tr...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b5_\b1_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bV_\be_\br_\bt_\be_\bx_\bL_\bi_\bm_\bi_\bt_\bM_\ba_\bs_\bk\n+void ComputeVertexLimitMask(VERTEX const &vertexNeighborhood, MASK\n+&positionMask, Crease::Rule vertexRule) const\n+Limit masks for vertices \u00e2\u0080\u0093 position and tangents These presume that a vertex\n+is suitably isolated for...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b6_\b0_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\br_\be_\ba_\bs_\be_\bL_\bi_\bm_\bi_\bt_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bM_\ba_\bs_\bk_\bs\n+void assignCreaseLimitTangentMasks(VERTEX const &vertex, MASK &tan1, MASK\n+&tan2, int const creaseEnds[2]) const\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bG_\be_\bt_\bR_\be_\bg_\bu_\bl_\ba_\br_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be\n+static int GetRegularFaceSize()\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\br_\be_\ba_\bs_\be_\bM_\ba_\bs_\bk_\bF_\bo_\br_\bE_\bd_\bg_\be\n+void assignCreaseMaskForEdge(EDGE const &edge, MASK &mask) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b3_\b1_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bd_\bg_\be_\bV_\be_\br_\bt_\be_\bx_\bM_\ba_\bs_\bk\n+void ComputeEdgeVertexMask(EDGE const &edgeNeighborhood, MASK &edgeVertexMask,\n+Crease::Rule parentRule=Crease::RULE_UNKNOWN, Crease::Rule childRule=Crease::\n+RULE_UNKNOWN) const\n+Edge-vertex masks If known, the Rule for the edge and/or the derived vertex can\n+be specified to accel...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b3_\b9_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be\n+Scheme()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b7_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bS_\bm_\bo_\bo_\bt_\bh_\bL_\bi_\bm_\bi_\bt_\bM_\ba_\bs_\bk\n+void assignSmoothLimitMask(VERTEX const &vertex, MASK &pos) const\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bh_\bo_\bo_\bd_\bS_\bi_\bz_\be\n+static int GetLocalNeighborhoodSize()\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\br_\bn_\be_\br_\bM_\ba_\bs_\bk_\bF_\bo_\br_\bV_\be_\br_\bt_\be_\bx\n+void assignCornerMaskForVertex(VERTEX const &edge, MASK &mask) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b3_\b3_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\br_\be_\ba_\bs_\be_\bL_\bi_\bm_\bi_\bt_\bM_\ba_\bs_\bk\n+void assignCreaseLimitMask(VERTEX const &vertex, MASK &pos, int const\n+creaseEnds[2]) const\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bS_\bm_\bo_\bo_\bt_\bh_\bM_\ba_\bs_\bk_\bF_\bo_\br_\bV_\be_\br_\bt_\be_\bx\n+void assignSmoothMaskForVertex(VERTEX const &edge, MASK &mask) const\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bG_\be_\bt_\bR_\be_\bg_\bu_\bl_\ba_\br_\bV_\be_\br_\bt_\be_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be\n+static int GetRegularVertexValence()\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bG_\be_\bt_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n+Options GetOptions() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b7_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bS_\bm_\bo_\bo_\bt_\bh_\bL_\bi_\bm_\bi_\bt_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bM_\ba_\bs_\bk_\bs\n+void assignSmoothLimitTangentMasks(VERTEX const &vertex, MASK &tan1, MASK\n+&tan2) const\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\br_\bn_\be_\br_\bL_\bi_\bm_\bi_\bt_\bM_\ba_\bs_\bk\n+void assignCornerLimitMask(VERTEX const &vertex, MASK &pos) const\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be\n+Scheme(Options const &options)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b7_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\be_\bx_\bM_\ba_\bs_\bk\n+void ComputeFaceVertexMask(FACE const &faceNeighborhood, MASK &faceVertexMask)\n+const\n+Face-vertex masks - trivial for all current schemes.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b3_\b4_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\br_\bn_\be_\br_\bL_\bi_\bm_\bi_\bt_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bM_\ba_\bs_\bk_\bs\n+void assignCornerLimitTangentMasks(VERTEX const &vertex, MASK &tan1, MASK\n+&tan2) const\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bS_\be_\bt_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n+void SetOptions(const Options &newOptions)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b7_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bM_\ba_\bs_\bk\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b2_\b0_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bM_\ba_\bs_\bk_\b:_\b:_\bW_\be_\bi_\bg_\bh_\bt\n+WEIGHT Weight\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b2_\b1_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bM_\ba_\bs_\bk_\b:_\b:\n+_\bA_\br_\be_\bF_\ba_\bc_\be_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bF_\bo_\br_\bF_\ba_\bc_\be_\bC_\be_\bn_\bt_\be_\br_\bs\n+bool AreFaceWeightsForFaceCenters() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b2_\b3_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bM_\ba_\bs_\bk_\b:_\b:_\bS_\be_\bt_\bN_\bu_\bm_\bE_\bd_\bg_\be_\bW_\be_\bi_\bg_\bh_\bt_\bs\n+void SetNumEdgeWeights(int count)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b2_\b2_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bM_\ba_\bs_\bk_\b:_\b:_\bE_\bd_\bg_\be_\bW_\be_\bi_\bg_\bh_\bt\n+Weight const & EdgeWeight(int index) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b2_\b3_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bM_\ba_\bs_\bk_\b:_\b:_\bE_\bd_\bg_\be_\bW_\be_\bi_\bg_\bh_\bt\n+Weight & EdgeWeight(int index)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b2_\b3_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bM_\ba_\bs_\bk_\b:_\b:\n+_\bC_\bo_\bm_\bb_\bi_\bn_\be_\bV_\be_\br_\bt_\be_\bx_\bV_\be_\br_\bt_\be_\bx_\bM_\ba_\bs_\bk_\bs\n+void CombineVertexVertexMasks(Weight thisCoeff, Weight dstCoeff, USER_MASK\n+&dst) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b2_\b4_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bM_\ba_\bs_\bk_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\be_\bx_\bW_\be_\bi_\bg_\bh_\bt_\bs\n+int GetNumVertexWeights() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b2_\b2_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bM_\ba_\bs_\bk_\b:_\b:_\bS_\be_\bt_\bN_\bu_\bm_\bF_\ba_\bc_\be_\bW_\be_\bi_\bg_\bh_\bt_\bs\n+void SetNumFaceWeights(int count)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b2_\b2_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bM_\ba_\bs_\bk_\b:_\b:_\bF_\ba_\bc_\be_\bW_\be_\bi_\bg_\bh_\bt\n+Weight const & FaceWeight(int index) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b2_\b3_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bM_\ba_\bs_\bk_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bE_\bd_\bg_\be_\bW_\be_\bi_\bg_\bh_\bt_\bs\n+int GetNumEdgeWeights() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b2_\b2_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bM_\ba_\bs_\bk_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bW_\be_\bi_\bg_\bh_\bt\n+Weight & VertexWeight(int index)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b2_\b3_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bM_\ba_\bs_\bk_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bF_\ba_\bc_\be_\bW_\be_\bi_\bg_\bh_\bt_\bs\n+int GetNumFaceWeights() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b2_\b2_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bM_\ba_\bs_\bk_\b:_\b:\n+_\bS_\be_\bt_\bF_\ba_\bc_\be_\bW_\be_\bi_\bg_\bh_\bt_\bs_\bF_\bo_\br_\bF_\ba_\bc_\be_\bC_\be_\bn_\bt_\be_\br_\bs\n+void SetFaceWeightsForFaceCenters(bool on)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b2_\b4_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bM_\ba_\bs_\bk_\b:_\b:_\bS_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\be_\bx_\bW_\be_\bi_\bg_\bh_\bt_\bs\n+void SetNumVertexWeights(int count)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b2_\b2_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bM_\ba_\bs_\bk_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bM_\ba_\bs_\bk\n+LocalMask(Weight *v, Weight *e, Weight *f)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b2_\b1_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bM_\ba_\bs_\bk_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bW_\be_\bi_\bg_\bh_\bt\n+Weight const & VertexWeight(int index) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b2_\b3_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bM_\ba_\bs_\bk_\b:_\b:_\bF_\ba_\bc_\be_\bW_\be_\bi_\bg_\bh_\bt\n+Weight & FaceWeight(int index)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b2_\b3_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bL_\bo_\bc_\ba_\bl_\bM_\ba_\bs_\bk_\b:_\b:_\b~_\bL_\bo_\bc_\ba_\bl_\bM_\ba_\bs_\bk\n+~LocalMask()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b2_\b1_\b6\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bd_\b3_\bd_\b1_\b1_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh\n+    * _\bs_\bd_\bc\n+    * _\bs_\bc_\bh_\be_\bm_\be_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00866.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00866.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/bufferDescriptor.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/sdc/catmarkScheme.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -88,43 +88,38 @@\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n-<a href=\"#nested-classes\">Classes</a> &#124;\n <a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">bufferDescriptor.h File Reference</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">catmarkScheme.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &lt;string.h&gt;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00863_source.html\">../sdc/scheme.h</a>&quot;</code><br />\n+<code>#include &lt;cassert&gt;</code><br />\n+<code>#include &lt;cmath&gt;</code><br />\n </div>\n <p><a href=\"a00866_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n-<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n-Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01141.html\">BufferDescriptor</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"a01141.html\" title=\"BufferDescriptor is a struct which describes buffer elements in interleaved data buffers....\">BufferDescriptor</a> is a struct which describes buffer elements in interleaved data buffers. Almost all <a class=\"el\" href=\"a00912.html\">Osd</a> Evaluator APIs take BufferDescriptors along with device-specific buffer objects.  <a href=\"a01141.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-</table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n+<tr class=\"memitem:a00913\" id=\"r_a00913\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00913.html\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00866.html\">bufferDescriptor.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_f61368944c63c2c1f8c69bc232e59c39.html\">sdc</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00866.html\">catmarkScheme.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,26 +1,22 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-bufferDescriptor.h File Reference\n+_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+catmarkScheme.h File Reference\n #include \"../version.h\"\n-#include <string.h>\n+#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bs_\bc_\bh_\be_\bm_\be_\b._\bh\"\n+#include <cassert>\n+#include <cmath>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n-C\bCl\bla\bas\bss\bse\bes\bs\n-struct \u00a0 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n-         _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br is a struct which describes buffer elements in\n-\u00a0        interleaved data buffers. Almost all _\bO_\bs_\bd Evaluator APIs take\n-         BufferDescriptors along with device-specific buffer objects. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh\n+    * _\bs_\bd_\bc\n+    * _\bc_\ba_\bt_\bm_\ba_\br_\bk_\bS_\bc_\bh_\be_\bm_\be_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00866_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00866_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/bufferDescriptor.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/sdc/catmarkScheme.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">bufferDescriptor.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">catmarkScheme.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00866.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2015 Pixar</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2014 DreamWorks Animation LLC.</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -118,113 +118,566 @@\n <div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_BUFFER_DESCRIPTOR_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_BUFFER_DESCRIPTOR_H</span></div>\n-<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n-<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#include &lt;string.h&gt;</span></div>\n+<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_SDC_CATMARK_SCHEME_H</span></div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#define OPENSUBDIV3_SDC_CATMARK_SCHEME_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span> </div>\n+<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span> </div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#include &quot;../sdc/scheme.h&quot;</span></div>\n <div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span> </div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &lt;cassert&gt;</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &lt;cmath&gt;</span></div>\n <div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00034\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html\">   34</a></span><span class=\"keyword\">namespace </span>Osd {</div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span> </div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span> </div>\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span><span class=\"comment\">//  example:</span></div>\n-<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span><span class=\"comment\">//       n</span></div>\n-<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span><span class=\"comment\">//  -----+----------------------------------------+-------------------------</span></div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span><span class=\"comment\">//       |               vertex  0                |</span></div>\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span><span class=\"comment\">//  -----+----------------------------------------+-------------------------</span></div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span><span class=\"comment\">//       |  X  Y  Z  R  G  B  A Xu Yu Zu Xv Yv Zv |</span></div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span><span class=\"comment\">//  -----+----------------------------------------+-------------------------</span></div>\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span><span class=\"comment\">//       &lt;------------- stride = 13 --------------&gt;</span></div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span><span class=\"comment\">//     - XYZ      (offset = n+0,  length = 3, stride = 13)</span></div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span><span class=\"comment\">//     - RGBA     (offset = n+3,  length = 4, stride = 13)</span></div>\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span><span class=\"comment\">//     - uTangent (offset = n+7,  length = 3, stride = 13)</span></div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span><span class=\"comment\">//     - vTangent (offset = n+10, length = 3, stride = 13)</span></div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span><span class=\"comment\">//</span></div>\n-<div class=\"foldopen\" id=\"foldopen00061\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01141.html\">   61</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> {</div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span> </div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01141.html#a446218762f5de8c77d06ee61e14b6b61\">   64</a></span>    <a class=\"code hl_function\" href=\"a01141.html#a446218762f5de8c77d06ee61e14b6b61\">BufferDescriptor</a>() : <a class=\"code hl_variable\" href=\"a01141.html#aed7ea92f45bd273dde380a45ddced592\">offset</a>(0), <a class=\"code hl_variable\" href=\"a01141.html#a9f59b34b1f25fe00023291b678246bcc\">length</a>(0), <a class=\"code hl_variable\" href=\"a01141.html#a08f66a6870d87afcd5dc1b60d1019692\">stride</a>(0) { }</div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span> </div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01141.html#a958068066d1d10ae2a452ac57d9c0401\">   67</a></span>    <a class=\"code hl_function\" href=\"a01141.html#a958068066d1d10ae2a452ac57d9c0401\">BufferDescriptor</a>(<span class=\"keywordtype\">int</span> o, <span class=\"keywordtype\">int</span> l, <span class=\"keywordtype\">int</span> s) : <a class=\"code hl_variable\" href=\"a01141.html#aed7ea92f45bd273dde380a45ddced592\">offset</a>(o), <a class=\"code hl_variable\" href=\"a01141.html#a9f59b34b1f25fe00023291b678246bcc\">length</a>(l), <a class=\"code hl_variable\" href=\"a01141.html#a08f66a6870d87afcd5dc1b60d1019692\">stride</a>(s) { }</div>\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00070\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01141.html#ae3d9db59ffddaff0873246935222c6a8\">   70</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01141.html#ae3d9db59ffddaff0873246935222c6a8\">GetLocalOffset</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01141.html#a08f66a6870d87afcd5dc1b60d1019692\">stride</a> &gt; 0 ? <a class=\"code hl_variable\" href=\"a01141.html#aed7ea92f45bd273dde380a45ddced592\">offset</a> % <a class=\"code hl_variable\" href=\"a01141.html#a08f66a6870d87afcd5dc1b60d1019692\">stride</a> : 0;</div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00075\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01141.html#ac532c4b500b1a85ea22217f2c65a70ed\">   75</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01141.html#ac532c4b500b1a85ea22217f2c65a70ed\">IsValid</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span>        <span class=\"keywordflow\">return</span> ((<a class=\"code hl_variable\" href=\"a01141.html#a9f59b34b1f25fe00023291b678246bcc\">length</a> &gt; 0) &amp;&amp;</div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span>                (<a class=\"code hl_variable\" href=\"a01141.html#a9f59b34b1f25fe00023291b678246bcc\">length</a> &lt;= <a class=\"code hl_variable\" href=\"a01141.html#a08f66a6870d87afcd5dc1b60d1019692\">stride</a> - <a class=\"code hl_function\" href=\"a01141.html#ae3d9db59ffddaff0873246935222c6a8\">GetLocalOffset</a>()));</div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00081\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01141.html#a372de693ad40b3f42839c8ec6ac845f4\">   81</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01141.html#a372de693ad40b3f42839c8ec6ac845f4\">Reset</a>() {</div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>        <a class=\"code hl_variable\" href=\"a01141.html#aed7ea92f45bd273dde380a45ddced592\">offset</a> = <a class=\"code hl_variable\" href=\"a01141.html#a9f59b34b1f25fe00023291b678246bcc\">length</a> = <a class=\"code hl_variable\" href=\"a01141.html#a08f66a6870d87afcd5dc1b60d1019692\">stride</a> = 0;</div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00086\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01141.html#aaff9aa09cae91e39d5422c8cfc878ba5\">   86</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01141.html#aaff9aa09cae91e39d5422c8cfc878ba5\">operator == </a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;other)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>        <span class=\"keywordflow\">return</span> (<a class=\"code hl_variable\" href=\"a01141.html#aed7ea92f45bd273dde380a45ddced592\">offset</a> == other.<a class=\"code hl_variable\" href=\"a01141.html#aed7ea92f45bd273dde380a45ddced592\">offset</a> &amp;&amp;</div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>                <a class=\"code hl_variable\" href=\"a01141.html#a9f59b34b1f25fe00023291b678246bcc\">length</a> == other.<a class=\"code hl_variable\" href=\"a01141.html#a9f59b34b1f25fe00023291b678246bcc\">length</a> &amp;&amp;</div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>                <a class=\"code hl_variable\" href=\"a01141.html#a08f66a6870d87afcd5dc1b60d1019692\">stride</a> == other.<a class=\"code hl_variable\" href=\"a01141.html#a08f66a6870d87afcd5dc1b60d1019692\">stride</a>);</div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00093\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01141.html#a9f79e5aef7aa7198087e68c98c9804d3\">   93</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01141.html#a9f79e5aef7aa7198087e68c98c9804d3\">operator != </a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;other)<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>        <span class=\"keywordflow\">return</span> !(this-&gt;<a class=\"code hl_function\" href=\"a01141.html#aaff9aa09cae91e39d5422c8cfc878ba5\">operator==</a>(other));</div>\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span> </div>\n-<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01141.html#aed7ea92f45bd273dde380a45ddced592\">   98</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"a01141.html#aed7ea92f45bd273dde380a45ddced592\">offset</a>;</div>\n-<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01141.html#a9f59b34b1f25fe00023291b678246bcc\">  100</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"a01141.html#a9f59b34b1f25fe00023291b678246bcc\">length</a>;</div>\n-<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01141.html#a08f66a6870d87afcd5dc1b60d1019692\">  102</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"a01141.html#a08f66a6870d87afcd5dc1b60d1019692\">stride</a>;</div>\n-<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span> </div>\n-<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span>} <span class=\"comment\">// end namespace Osd</span></div>\n-</div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">namespace </span>Sdc {</div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span> </div>\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"comment\">//  Specializations for Scheme&lt;SCHEME_CATMARK&gt;:</span></div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span> </div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span><span class=\"comment\">//  Catmark traits:</span></div>\n+<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#a0e02d297f903bddcf8bc10c0ae17ad3c\">   47</a></span><span class=\"keyword\">inline</span> <a class=\"code hl_enumeration\" href=\"a00913.html#a61ef2f8f765ba17f8036bcc0f0fa887b\">Split</a> <a class=\"code hl_function\" href=\"a01341.html#a14b97ddde5fba31ca7f933508ee649da\">Scheme&lt;SCHEME_CATMARK&gt;::GetTopologicalSplitType</a>() { <span class=\"keywordflow\">return</span> <a class=\"code hl_enumvalue\" href=\"a00913.html#a61ef2f8f765ba17f8036bcc0f0fa887ba56eed514f6a5971f198c9e421054b513\">SPLIT_TO_QUADS</a>; }</div>\n+<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span> </div>\n+<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#a36744b2ac3801874da987d36851be86c\">   50</a></span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01341.html#a531004716c07aad5436cb2db27e1ec24\">Scheme&lt;SCHEME_CATMARK&gt;::GetRegularFaceSize</a>() { <span class=\"keywordflow\">return</span> 4; }</div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span> </div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#ad46ad6c30664729d163c5fcc20cdf917\">   53</a></span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01341.html#a8f7e983b2195ac6b388c7a6db17f8cb0\">Scheme&lt;SCHEME_CATMARK&gt;::GetRegularVertexValence</a>() { <span class=\"keywordflow\">return</span> 4; }</div>\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span> </div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n+<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#a953430a884584e984c0afbb058091be1\">   56</a></span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01341.html#a73cf51e4315ca86e5e0a3954c92f8f74\">Scheme&lt;SCHEME_CATMARK&gt;::GetLocalNeighborhoodSize</a>() { <span class=\"keywordflow\">return</span> 1; }</div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span> </div>\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span> </div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span><span class=\"comment\">//  Masks for edge-vertices:  the hard Crease mask does not need to be specialized</span></div>\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span><span class=\"comment\">//  (simply the midpoint), so all that is left is the Smooth case:</span></div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span><span class=\"comment\">//  The Smooth mask is complicated by the need to support the &quot;triangle subdivision&quot;</span></div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span><span class=\"comment\">//  option, which applies different weighting in the presence of triangles.  It is</span></div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span><span class=\"comment\">//  up for debate as to whether this is useful or not -- we may be able to deprecate</span></div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span><span class=\"comment\">//  this option.</span></div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> EDGE, <span class=\"keyword\">typename</span> MASK&gt;</div>\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00071\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#a16cbaf7f173cf2fdc02c992d3a31c925\">   71</a></span><a class=\"code hl_function\" href=\"a01341.html#a059f5c2c9193be58be31955e987a0600\">Scheme&lt;SCHEME_CATMARK&gt;::assignSmoothMaskForEdge</a>(EDGE <span class=\"keyword\">const</span>&amp; edge, MASK&amp; mask)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span> </div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span>    <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> MASK::Weight Weight;</div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span> </div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span>    <span class=\"keywordtype\">int</span> faceCount = edge.GetNumFaces();</div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span> </div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span>    mask.SetNumVertexWeights(2);</div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span>    mask.SetNumEdgeWeights(0);</div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>    mask.SetNumFaceWeights(faceCount);</div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span>    mask.SetFaceWeightsForFaceCenters(<span class=\"keyword\">true</span>);</div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span> </div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>    <span class=\"comment\">//  Determine if we need to inspect incident faces and apply alternate weighting for</span></div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span>    <span class=\"comment\">//  triangles -- and if so, determine which of the two are triangles.</span></div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>    <span class=\"keywordtype\">bool</span> face0IsTri = <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>    <span class=\"keywordtype\">bool</span> face1IsTri = <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>    <span class=\"keywordtype\">bool</span> useTriangleOption = (_options.GetTriangleSubdivision() == <a class=\"code hl_enumvalue\" href=\"a01337.html#a10fe8c2b78e5c59377614876a362c38baf222ead5fa4875f2ea2794c2d765a87d\">Options::TRI_SUB_SMOOTH</a>);</div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>    <span class=\"keywordflow\">if</span> (useTriangleOption) {</div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>        <span class=\"keywordflow\">if</span> (faceCount == 2) {</div>\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>            <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>            <span class=\"comment\">//  Ideally we want to avoid this inspection when we have already subdivided at</span></div>\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span>            <span class=\"comment\">//  least once -- need something in the Edge interface to help avoid this, e.g.</span></div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>            <span class=\"comment\">//  an IsRegular() query, the subdivision level...</span></div>\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span>            <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span>            <span class=\"keywordtype\">int</span> vertsPerFace[2];</div>\n+<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>            edge.GetNumVerticesPerFace(vertsPerFace);</div>\n+<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span> </div>\n+<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span>            face0IsTri = (vertsPerFace[0] == 3);</div>\n+<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span>            face1IsTri = (vertsPerFace[1] == 3);</div>\n+<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span>            useTriangleOption = face0IsTri || face1IsTri;</div>\n+<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span>            useTriangleOption = <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span>        }</div>\n+<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span>    }</div>\n <div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span> </div>\n-<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span> </div>\n-<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span> </div>\n-<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_BUFFER_DESCRIPTOR_H</span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa01141_html\"><div class=\"ttname\"><a href=\"a01141.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::BufferDescriptor</a></div><div class=\"ttdoc\">BufferDescriptor is a struct which describes buffer elements in interleaved data buffers....</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00866_source.html#l00061\">bufferDescriptor.h:61</a></div></div>\n-<div class=\"ttc\" id=\"aa01141_html_a08f66a6870d87afcd5dc1b60d1019692\"><div class=\"ttname\"><a href=\"a01141.html#a08f66a6870d87afcd5dc1b60d1019692\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::BufferDescriptor::stride</a></div><div class=\"ttdeci\">int stride</div><div class=\"ttdoc\">stride to the next element</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00866_source.html#l00102\">bufferDescriptor.h:102</a></div></div>\n-<div class=\"ttc\" id=\"aa01141_html_a372de693ad40b3f42839c8ec6ac845f4\"><div class=\"ttname\"><a href=\"a01141.html#a372de693ad40b3f42839c8ec6ac845f4\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::BufferDescriptor::Reset</a></div><div class=\"ttdeci\">void Reset()</div><div class=\"ttdoc\">Resets the descriptor to default.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00866_source.html#l00081\">bufferDescriptor.h:81</a></div></div>\n-<div class=\"ttc\" id=\"aa01141_html_a446218762f5de8c77d06ee61e14b6b61\"><div class=\"ttname\"><a href=\"a01141.html#a446218762f5de8c77d06ee61e14b6b61\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::BufferDescriptor::BufferDescriptor</a></div><div class=\"ttdeci\">BufferDescriptor()</div><div class=\"ttdoc\">Default Constructor.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00866_source.html#l00064\">bufferDescriptor.h:64</a></div></div>\n-<div class=\"ttc\" id=\"aa01141_html_a958068066d1d10ae2a452ac57d9c0401\"><div class=\"ttname\"><a href=\"a01141.html#a958068066d1d10ae2a452ac57d9c0401\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::BufferDescriptor::BufferDescriptor</a></div><div class=\"ttdeci\">BufferDescriptor(int o, int l, int s)</div><div class=\"ttdoc\">Constructor.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00866_source.html#l00067\">bufferDescriptor.h:67</a></div></div>\n-<div class=\"ttc\" id=\"aa01141_html_a9f59b34b1f25fe00023291b678246bcc\"><div class=\"ttname\"><a href=\"a01141.html#a9f59b34b1f25fe00023291b678246bcc\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::BufferDescriptor::length</a></div><div class=\"ttdeci\">int length</div><div class=\"ttdoc\">number or length of the data</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00866_source.html#l00100\">bufferDescriptor.h:100</a></div></div>\n-<div class=\"ttc\" id=\"aa01141_html_a9f79e5aef7aa7198087e68c98c9804d3\"><div class=\"ttname\"><a href=\"a01141.html#a9f79e5aef7aa7198087e68c98c9804d3\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::BufferDescriptor::operator!=</a></div><div class=\"ttdeci\">bool operator!=(BufferDescriptor const &amp;other) const</div><div class=\"ttdoc\">True if the descriptors are not identical.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00866_source.html#l00093\">bufferDescriptor.h:93</a></div></div>\n-<div class=\"ttc\" id=\"aa01141_html_aaff9aa09cae91e39d5422c8cfc878ba5\"><div class=\"ttname\"><a href=\"a01141.html#aaff9aa09cae91e39d5422c8cfc878ba5\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::BufferDescriptor::operator==</a></div><div class=\"ttdeci\">bool operator==(BufferDescriptor const &amp;other) const</div><div class=\"ttdoc\">True if the descriptors are identical.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00866_source.html#l00086\">bufferDescriptor.h:86</a></div></div>\n-<div class=\"ttc\" id=\"aa01141_html_ac532c4b500b1a85ea22217f2c65a70ed\"><div class=\"ttname\"><a href=\"a01141.html#ac532c4b500b1a85ea22217f2c65a70ed\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::BufferDescriptor::IsValid</a></div><div class=\"ttdeci\">bool IsValid() const</div><div class=\"ttdoc\">True if the descriptor values are internally consistent.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00866_source.html#l00075\">bufferDescriptor.h:75</a></div></div>\n-<div class=\"ttc\" id=\"aa01141_html_ae3d9db59ffddaff0873246935222c6a8\"><div class=\"ttname\"><a href=\"a01141.html#ae3d9db59ffddaff0873246935222c6a8\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::BufferDescriptor::GetLocalOffset</a></div><div class=\"ttdeci\">int GetLocalOffset() const</div><div class=\"ttdoc\">Returns the relative offset within a stride.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00866_source.html#l00070\">bufferDescriptor.h:70</a></div></div>\n-<div class=\"ttc\" id=\"aa01141_html_aed7ea92f45bd273dde380a45ddced592\"><div class=\"ttname\"><a href=\"a01141.html#aed7ea92f45bd273dde380a45ddced592\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::BufferDescriptor::offset</a></div><div class=\"ttdeci\">int offset</div><div class=\"ttdoc\">offset to desired element data</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00866_source.html#l00098\">bufferDescriptor.h:98</a></div></div>\n+<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span>    <span class=\"keywordflow\">if</span> (! useTriangleOption) {</div>\n+<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span>        mask.VertexWeight(0) = 0.25f;</div>\n+<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span>        mask.VertexWeight(1) = 0.25f;</div>\n+<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span> </div>\n+<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span>        <span class=\"keywordflow\">if</span> (faceCount == 2) {</div>\n+<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span>            mask.FaceWeight(0) = 0.25f;</div>\n+<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span>            mask.FaceWeight(1) = 0.25f;</div>\n+<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span>            Weight fWeight = 0.5f / (Weight)faceCount;</div>\n+<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\">  116</span>            <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; faceCount; ++i) {</div>\n+<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span>                mask.FaceWeight(i) = fWeight;</div>\n+<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\">  118</span>            }</div>\n+<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span>        }</div>\n+<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span>    } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\">  121</span>        <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span>        <span class=\"comment\">//  This mimics the implementation in Hbr in terms of order of operations.</span></div>\n+<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span>        <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span>        <span class=\"keyword\">const</span> Weight CATMARK_SMOOTH_TRI_EDGE_WEIGHT = (Weight) 0.470;</div>\n+<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span> </div>\n+<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span>        Weight f0Weight = face0IsTri ? CATMARK_SMOOTH_TRI_EDGE_WEIGHT : 0.25f;</div>\n+<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span>        Weight f1Weight = face1IsTri ? CATMARK_SMOOTH_TRI_EDGE_WEIGHT : 0.25f;</div>\n+<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span> </div>\n+<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span>        Weight fWeight = 0.5f * (f0Weight + f1Weight);</div>\n+<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span>        Weight vWeight = 0.5f * (1.0f - 2.0f * fWeight);</div>\n+<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\">  131</span> </div>\n+<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\">  132</span>        mask.VertexWeight(0) = vWeight;</div>\n+<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\">  133</span>        mask.VertexWeight(1) = vWeight;</div>\n+<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\">  134</span> </div>\n+<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\">  135</span>        mask.FaceWeight(0) = fWeight;</div>\n+<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\">  136</span>        mask.FaceWeight(1) = fWeight;</div>\n+<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\">  137</span>    }</div>\n+<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\">  138</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\">  139</span> </div>\n+<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\">  140</span> </div>\n+<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\">  141</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span><span class=\"comment\">//  Masks for vertex-vertices:  the hard Corner mask does not need to be specialized</span></div>\n+<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\">  143</span><span class=\"comment\">//  (simply the vertex itself), leaving the Crease and Smooth cases (Dart is smooth):</span></div>\n+<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\">  144</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\">  145</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n+<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\">  146</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK&gt;</div>\n+<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\">  147</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00148\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#aae024a2b2e5e40f3f35c836beaee2acf\">  148</a></span><a class=\"code hl_function\" href=\"a01341.html#a2439e78373d9dfd6ad3ab373c7c32dcc\">Scheme&lt;SCHEME_CATMARK&gt;::assignCreaseMaskForVertex</a>(VERTEX <span class=\"keyword\">const</span>&amp; vertex, MASK&amp; mask,</div>\n+<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\">  149</span>                                                  <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> creaseEnds[2])<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\">  150</span>    <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> MASK::Weight Weight;</div>\n+<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\">  151</span> </div>\n+<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\">  152</span>    <span class=\"keywordtype\">int</span> valence = vertex.GetNumEdges();</div>\n+<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\">  153</span> </div>\n+<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\">  154</span>    mask.SetNumVertexWeights(1);</div>\n+<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\">  155</span>    mask.SetNumEdgeWeights(valence);</div>\n+<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\">  156</span>    mask.SetNumFaceWeights(0);</div>\n+<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\">  157</span>    mask.SetFaceWeightsForFaceCenters(<span class=\"keyword\">false</span>);</div>\n+<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\">  158</span> </div>\n+<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\">  159</span>    Weight vWeight = 0.75f;</div>\n+<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\">  160</span>    Weight eWeight = 0.125f;</div>\n+<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\">  161</span> </div>\n+<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\">  162</span>    mask.VertexWeight(0) = vWeight;</div>\n+<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\">  163</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; valence; ++i) {</div>\n+<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\">  164</span>        mask.EdgeWeight(i) = 0.0f;</div>\n+<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\">  165</span>    }</div>\n+<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\">  166</span>    mask.EdgeWeight(creaseEnds[0]) = eWeight;</div>\n+<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\">  167</span>    mask.EdgeWeight(creaseEnds[1]) = eWeight;</div>\n+<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\">  168</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\">  169</span> </div>\n+<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\">  170</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n+<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK&gt;</div>\n+<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\">  172</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00173\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#ad60bcde0b6056db8500466af6951d05a\">  173</a></span><a class=\"code hl_function\" href=\"a01341.html#a84788a5a93f17e648103123c9f4a33f9\">Scheme&lt;SCHEME_CATMARK&gt;::assignSmoothMaskForVertex</a>(VERTEX <span class=\"keyword\">const</span>&amp; vertex, MASK&amp; mask)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\">  174</span> </div>\n+<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\">  175</span>    <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> MASK::Weight Weight;</div>\n+<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\">  176</span> </div>\n+<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\">  178</span>    <span class=\"comment\">//  A Smooth vertex must be manifold and interior -- manifold boundary vertices will be</span></div>\n+<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\">  179</span>    <span class=\"comment\">//  Creases and non-manifold vertices of any kind will be Corners or Creases.  If smooth</span></div>\n+<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\">  180</span>    <span class=\"comment\">//  rules for non-manifold vertices are ever defined, this will need adjusting:</span></div>\n+<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\">  181</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\">  182</span>    assert(vertex.GetNumFaces() == vertex.GetNumEdges());</div>\n+<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\">  183</span> </div>\n+<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\">  184</span>    <span class=\"keywordtype\">int</span> valence = vertex.GetNumFaces();</div>\n+<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\">  185</span> </div>\n+<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\">  186</span>    mask.SetNumVertexWeights(1);</div>\n+<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\">  187</span>    mask.SetNumEdgeWeights(valence);</div>\n+<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\">  188</span>    mask.SetNumFaceWeights(valence);</div>\n+<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\">  189</span>    mask.SetFaceWeightsForFaceCenters(<span class=\"keyword\">true</span>);</div>\n+<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\">  190</span> </div>\n+<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\">  191</span>    Weight vWeight = (Weight)(valence - 2) / (Weight)valence;</div>\n+<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\">  192</span>    Weight fWeight = 1.0f / (Weight)(valence * valence);</div>\n+<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\">  193</span>    Weight eWeight = fWeight;</div>\n+<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\">  194</span> </div>\n+<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\">  195</span>    mask.VertexWeight(0) = vWeight;</div>\n+<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\">  196</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; valence; ++i) {</div>\n+<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\">  197</span>        mask.EdgeWeight(i) = eWeight;</div>\n+<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\">  198</span>        mask.FaceWeight(i) = fWeight;</div>\n+<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\">  199</span>    }</div>\n+<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\">  200</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\">  201</span> </div>\n+<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\">  202</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\">  203</span><span class=\"comment\">//  Limit masks for position:</span></div>\n+<div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\">  204</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\">  205</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n+<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\">  206</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK&gt;</div>\n+<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\">  207</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00208\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#ab38c56ce6121aed94f2796bf5df894be\">  208</a></span><a class=\"code hl_function\" href=\"a01341.html#aa2821d365ea8135d6316c0f926f87ccb\">Scheme&lt;SCHEME_CATMARK&gt;::assignCornerLimitMask</a>(VERTEX <span class=\"keyword\">const</span>&amp; <span class=\"comment\">/* vertex */</span>, MASK&amp; posMask)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\">  209</span> </div>\n+<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\">  210</span>    posMask.SetNumVertexWeights(1);</div>\n+<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\">  211</span>    posMask.SetNumEdgeWeights(0);</div>\n+<div class=\"line\"><a id=\"l00212\" name=\"l00212\"></a><span class=\"lineno\">  212</span>    posMask.SetNumFaceWeights(0);</div>\n+<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\">  213</span>    posMask.SetFaceWeightsForFaceCenters(<span class=\"keyword\">false</span>);</div>\n+<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\">  214</span> </div>\n+<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\">  215</span>    posMask.VertexWeight(0) = 1.0f;</div>\n+<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\">  216</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\">  217</span> </div>\n+<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\">  218</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n+<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\">  219</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK&gt;</div>\n+<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\">  220</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00221\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#ad439ba00463a7af51cf821692d6cc2e3\">  221</a></span><a class=\"code hl_function\" href=\"a01341.html#a7c9316f7212d3ea41db7f3f1a66cc7e5\">Scheme&lt;SCHEME_CATMARK&gt;::assignCreaseLimitMask</a>(VERTEX <span class=\"keyword\">const</span>&amp; vertex, MASK&amp; posMask,</div>\n+<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\">  222</span>                                              <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> creaseEnds[2])<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\">  223</span> </div>\n+<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\">  224</span>    <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> MASK::Weight Weight;</div>\n+<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\">  225</span> </div>\n+<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\">  226</span>    <span class=\"keywordtype\">int</span> valence = vertex.GetNumEdges();</div>\n+<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\">  227</span> </div>\n+<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\">  228</span>    posMask.SetNumVertexWeights(1);</div>\n+<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\">  229</span>    posMask.SetNumEdgeWeights(valence);</div>\n+<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\">  230</span>    posMask.SetNumFaceWeights(0);</div>\n+<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\">  231</span>    posMask.SetFaceWeightsForFaceCenters(<span class=\"keyword\">false</span>);</div>\n+<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\">  232</span> </div>\n+<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\">  233</span>    Weight vWeight = (Weight)(2.0 / 3.0);</div>\n+<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\">  234</span>    Weight eWeight = (Weight)(1.0 / 6.0);</div>\n+<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\">  235</span> </div>\n+<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\">  236</span>    posMask.VertexWeight(0) = vWeight;</div>\n+<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\">  237</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; valence; ++i) {</div>\n+<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\">  238</span>        posMask.EdgeWeight(i) = 0.0f;</div>\n+<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\">  239</span>    }</div>\n+<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\">  240</span>    posMask.EdgeWeight(creaseEnds[0]) = eWeight;</div>\n+<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\">  241</span>    posMask.EdgeWeight(creaseEnds[1]) = eWeight;</div>\n+<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\">  242</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\">  243</span> </div>\n+<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\">  244</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n+<div class=\"line\"><a id=\"l00245\" name=\"l00245\"></a><span class=\"lineno\">  245</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK&gt;</div>\n+<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\">  246</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00247\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00247\" name=\"l00247\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#adbc763184791a8854374af8b123fa242\">  247</a></span><a class=\"code hl_function\" href=\"a01341.html#a736c10944cb921b334fbd8b81866d59f\">Scheme&lt;SCHEME_CATMARK&gt;::assignSmoothLimitMask</a>(VERTEX <span class=\"keyword\">const</span>&amp; vertex, MASK&amp; posMask)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00248\" name=\"l00248\"></a><span class=\"lineno\">  248</span> </div>\n+<div class=\"line\"><a id=\"l00249\" name=\"l00249\"></a><span class=\"lineno\">  249</span>    <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> MASK::Weight Weight;</div>\n+<div class=\"line\"><a id=\"l00250\" name=\"l00250\"></a><span class=\"lineno\">  250</span> </div>\n+<div class=\"line\"><a id=\"l00251\" name=\"l00251\"></a><span class=\"lineno\">  251</span>    <span class=\"keywordtype\">int</span> valence = vertex.GetNumFaces();</div>\n+<div class=\"line\"><a id=\"l00252\" name=\"l00252\"></a><span class=\"lineno\">  252</span>    <span class=\"keywordflow\">if</span> (valence == 2) {</div>\n+<div class=\"line\"><a id=\"l00253\" name=\"l00253\"></a><span class=\"lineno\">  253</span>        assignCornerLimitMask(vertex, posMask);</div>\n+<div class=\"line\"><a id=\"l00254\" name=\"l00254\"></a><span class=\"lineno\">  254</span>        <span class=\"keywordflow\">return</span>;</div>\n+<div class=\"line\"><a id=\"l00255\" name=\"l00255\"></a><span class=\"lineno\">  255</span>    }</div>\n+<div class=\"line\"><a id=\"l00256\" name=\"l00256\"></a><span class=\"lineno\">  256</span> </div>\n+<div class=\"line\"><a id=\"l00257\" name=\"l00257\"></a><span class=\"lineno\">  257</span>    posMask.SetNumVertexWeights(1);</div>\n+<div class=\"line\"><a id=\"l00258\" name=\"l00258\"></a><span class=\"lineno\">  258</span>    posMask.SetNumEdgeWeights(valence);</div>\n+<div class=\"line\"><a id=\"l00259\" name=\"l00259\"></a><span class=\"lineno\">  259</span>    posMask.SetNumFaceWeights(valence);</div>\n+<div class=\"line\"><a id=\"l00260\" name=\"l00260\"></a><span class=\"lineno\">  260</span>    posMask.SetFaceWeightsForFaceCenters(<span class=\"keyword\">false</span>);</div>\n+<div class=\"line\"><a id=\"l00261\" name=\"l00261\"></a><span class=\"lineno\">  261</span> </div>\n+<div class=\"line\"><a id=\"l00262\" name=\"l00262\"></a><span class=\"lineno\">  262</span>    <span class=\"comment\">//  Specialize for the regular case:</span></div>\n+<div class=\"line\"><a id=\"l00263\" name=\"l00263\"></a><span class=\"lineno\">  263</span>    <span class=\"keywordflow\">if</span> (valence == 4) {</div>\n+<div class=\"line\"><a id=\"l00264\" name=\"l00264\"></a><span class=\"lineno\">  264</span>        Weight fWeight = (Weight)(1.0 / 36.0);</div>\n+<div class=\"line\"><a id=\"l00265\" name=\"l00265\"></a><span class=\"lineno\">  265</span>        Weight eWeight = (Weight)(1.0 /  9.0);</div>\n+<div class=\"line\"><a id=\"l00266\" name=\"l00266\"></a><span class=\"lineno\">  266</span>        Weight vWeight = (Weight)(4.0 /  9.0);</div>\n+<div class=\"line\"><a id=\"l00267\" name=\"l00267\"></a><span class=\"lineno\">  267</span> </div>\n+<div class=\"line\"><a id=\"l00268\" name=\"l00268\"></a><span class=\"lineno\">  268</span>        posMask.VertexWeight(0) = vWeight;</div>\n+<div class=\"line\"><a id=\"l00269\" name=\"l00269\"></a><span class=\"lineno\">  269</span> </div>\n+<div class=\"line\"><a id=\"l00270\" name=\"l00270\"></a><span class=\"lineno\">  270</span>        posMask.EdgeWeight(0) = eWeight;</div>\n+<div class=\"line\"><a id=\"l00271\" name=\"l00271\"></a><span class=\"lineno\">  271</span>        posMask.EdgeWeight(1) = eWeight;</div>\n+<div class=\"line\"><a id=\"l00272\" name=\"l00272\"></a><span class=\"lineno\">  272</span>        posMask.EdgeWeight(2) = eWeight;</div>\n+<div class=\"line\"><a id=\"l00273\" name=\"l00273\"></a><span class=\"lineno\">  273</span>        posMask.EdgeWeight(3) = eWeight;</div>\n+<div class=\"line\"><a id=\"l00274\" name=\"l00274\"></a><span class=\"lineno\">  274</span> </div>\n+<div class=\"line\"><a id=\"l00275\" name=\"l00275\"></a><span class=\"lineno\">  275</span>        posMask.FaceWeight(0) = fWeight;</div>\n+<div class=\"line\"><a id=\"l00276\" name=\"l00276\"></a><span class=\"lineno\">  276</span>        posMask.FaceWeight(1) = fWeight;</div>\n+<div class=\"line\"><a id=\"l00277\" name=\"l00277\"></a><span class=\"lineno\">  277</span>        posMask.FaceWeight(2) = fWeight;</div>\n+<div class=\"line\"><a id=\"l00278\" name=\"l00278\"></a><span class=\"lineno\">  278</span>        posMask.FaceWeight(3) = fWeight;</div>\n+<div class=\"line\"><a id=\"l00279\" name=\"l00279\"></a><span class=\"lineno\">  279</span>    } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00280\" name=\"l00280\"></a><span class=\"lineno\">  280</span>        Weight Valence = (Weight) valence;</div>\n+<div class=\"line\"><a id=\"l00281\" name=\"l00281\"></a><span class=\"lineno\">  281</span> </div>\n+<div class=\"line\"><a id=\"l00282\" name=\"l00282\"></a><span class=\"lineno\">  282</span>        Weight fWeight = 1.0f / (Valence * (Valence + 5.0f));</div>\n+<div class=\"line\"><a id=\"l00283\" name=\"l00283\"></a><span class=\"lineno\">  283</span>        Weight eWeight = 4.0f * fWeight;</div>\n+<div class=\"line\"><a id=\"l00284\" name=\"l00284\"></a><span class=\"lineno\">  284</span>        Weight vWeight = 1.0f - Valence * (eWeight + fWeight);</div>\n+<div class=\"line\"><a id=\"l00285\" name=\"l00285\"></a><span class=\"lineno\">  285</span> </div>\n+<div class=\"line\"><a id=\"l00286\" name=\"l00286\"></a><span class=\"lineno\">  286</span>        posMask.VertexWeight(0) = vWeight;</div>\n+<div class=\"line\"><a id=\"l00287\" name=\"l00287\"></a><span class=\"lineno\">  287</span>        <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; valence; ++i) {</div>\n+<div class=\"line\"><a id=\"l00288\" name=\"l00288\"></a><span class=\"lineno\">  288</span>            posMask.EdgeWeight(i) = eWeight;</div>\n+<div class=\"line\"><a id=\"l00289\" name=\"l00289\"></a><span class=\"lineno\">  289</span>            posMask.FaceWeight(i) = fWeight;</div>\n+<div class=\"line\"><a id=\"l00290\" name=\"l00290\"></a><span class=\"lineno\">  290</span>        }</div>\n+<div class=\"line\"><a id=\"l00291\" name=\"l00291\"></a><span class=\"lineno\">  291</span>    }</div>\n+<div class=\"line\"><a id=\"l00292\" name=\"l00292\"></a><span class=\"lineno\">  292</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00293\" name=\"l00293\"></a><span class=\"lineno\">  293</span> </div>\n+<div class=\"line\"><a id=\"l00294\" name=\"l00294\"></a><span class=\"lineno\">  294</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00295\" name=\"l00295\"></a><span class=\"lineno\">  295</span><span class=\"comment\">//  Limit masks for tangents -- these are stubs for now, or have a temporary</span></div>\n+<div class=\"line\"><a id=\"l00296\" name=\"l00296\"></a><span class=\"lineno\">  296</span><span class=\"comment\">//  implementation</span></div>\n+<div class=\"line\"><a id=\"l00297\" name=\"l00297\"></a><span class=\"lineno\">  297</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00298\" name=\"l00298\"></a><span class=\"lineno\">  298</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n+<div class=\"line\"><a id=\"l00299\" name=\"l00299\"></a><span class=\"lineno\">  299</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK&gt;</div>\n+<div class=\"line\"><a id=\"l00300\" name=\"l00300\"></a><span class=\"lineno\">  300</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00301\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00301\" name=\"l00301\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#adfe86b1bf62ea328adddf4e5c4b01049\">  301</a></span><a class=\"code hl_function\" href=\"a01341.html#ae9ee7f11f51ec6ff8c43ab0729454b54\">Scheme&lt;SCHEME_CATMARK&gt;::assignCornerLimitTangentMasks</a>(VERTEX <span class=\"keyword\">const</span>&amp; vertex,</div>\n+<div class=\"line\"><a id=\"l00302\" name=\"l00302\"></a><span class=\"lineno\">  302</span>        MASK&amp; tan1Mask, MASK&amp; tan2Mask)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00303\" name=\"l00303\"></a><span class=\"lineno\">  303</span> </div>\n+<div class=\"line\"><a id=\"l00304\" name=\"l00304\"></a><span class=\"lineno\">  304</span>    <span class=\"keywordtype\">int</span> valence = vertex.GetNumEdges();</div>\n+<div class=\"line\"><a id=\"l00305\" name=\"l00305\"></a><span class=\"lineno\">  305</span> </div>\n+<div class=\"line\"><a id=\"l00306\" name=\"l00306\"></a><span class=\"lineno\">  306</span>    tan1Mask.SetNumVertexWeights(1);</div>\n+<div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\">  307</span>    tan1Mask.SetNumEdgeWeights(valence);</div>\n+<div class=\"line\"><a id=\"l00308\" name=\"l00308\"></a><span class=\"lineno\">  308</span>    tan1Mask.SetNumFaceWeights(0);</div>\n+<div class=\"line\"><a id=\"l00309\" name=\"l00309\"></a><span class=\"lineno\">  309</span>    tan1Mask.SetFaceWeightsForFaceCenters(<span class=\"keyword\">false</span>);</div>\n+<div class=\"line\"><a id=\"l00310\" name=\"l00310\"></a><span class=\"lineno\">  310</span> </div>\n+<div class=\"line\"><a id=\"l00311\" name=\"l00311\"></a><span class=\"lineno\">  311</span>    tan2Mask.SetNumVertexWeights(1);</div>\n+<div class=\"line\"><a id=\"l00312\" name=\"l00312\"></a><span class=\"lineno\">  312</span>    tan2Mask.SetNumEdgeWeights(valence);</div>\n+<div class=\"line\"><a id=\"l00313\" name=\"l00313\"></a><span class=\"lineno\">  313</span>    tan2Mask.SetNumFaceWeights(0);</div>\n+<div class=\"line\"><a id=\"l00314\" name=\"l00314\"></a><span class=\"lineno\">  314</span>    tan2Mask.SetFaceWeightsForFaceCenters(<span class=\"keyword\">false</span>);</div>\n+<div class=\"line\"><a id=\"l00315\" name=\"l00315\"></a><span class=\"lineno\">  315</span> </div>\n+<div class=\"line\"><a id=\"l00316\" name=\"l00316\"></a><span class=\"lineno\">  316</span>    <span class=\"comment\">//  Should be at least 2 edges -- be sure to clear weights for any more:</span></div>\n+<div class=\"line\"><a id=\"l00317\" name=\"l00317\"></a><span class=\"lineno\">  317</span>    tan1Mask.VertexWeight(0) = -1.0f;</div>\n+<div class=\"line\"><a id=\"l00318\" name=\"l00318\"></a><span class=\"lineno\">  318</span>    tan1Mask.EdgeWeight(0)   =  1.0f;</div>\n+<div class=\"line\"><a id=\"l00319\" name=\"l00319\"></a><span class=\"lineno\">  319</span>    tan1Mask.EdgeWeight(1)   =  0.0f;</div>\n+<div class=\"line\"><a id=\"l00320\" name=\"l00320\"></a><span class=\"lineno\">  320</span> </div>\n+<div class=\"line\"><a id=\"l00321\" name=\"l00321\"></a><span class=\"lineno\">  321</span>    tan2Mask.VertexWeight(0) = -1.0f;</div>\n+<div class=\"line\"><a id=\"l00322\" name=\"l00322\"></a><span class=\"lineno\">  322</span>    tan2Mask.EdgeWeight(0)   =  0.0f;</div>\n+<div class=\"line\"><a id=\"l00323\" name=\"l00323\"></a><span class=\"lineno\">  323</span>    tan2Mask.EdgeWeight(1)   =  1.0f;</div>\n+<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\">  324</span> </div>\n+<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\">  325</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 2; i &lt; valence; ++i) {</div>\n+<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\">  326</span>        tan1Mask.EdgeWeight(i) = 0.0f;</div>\n+<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\">  327</span>        tan2Mask.EdgeWeight(i) = 0.0f;</div>\n+<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\">  328</span>    }</div>\n+<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\">  329</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\">  330</span> </div>\n+<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\">  331</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n+<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\">  332</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK&gt;</div>\n+<div class=\"line\"><a id=\"l00333\" name=\"l00333\"></a><span class=\"lineno\">  333</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00334\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00334\" name=\"l00334\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#a2ef69ac92171507161acb0c0af01d6f2\">  334</a></span><a class=\"code hl_function\" href=\"a01341.html#a4f8e559b93bbaf26ea0d40b1fa2f194f\">Scheme&lt;SCHEME_CATMARK&gt;::assignCreaseLimitTangentMasks</a>(VERTEX <span class=\"keyword\">const</span>&amp; vertex,</div>\n+<div class=\"line\"><a id=\"l00335\" name=\"l00335\"></a><span class=\"lineno\">  335</span>        MASK&amp; tan1Mask, MASK&amp; tan2Mask, <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> creaseEnds[2])<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00336\" name=\"l00336\"></a><span class=\"lineno\">  336</span> </div>\n+<div class=\"line\"><a id=\"l00337\" name=\"l00337\"></a><span class=\"lineno\">  337</span>    <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> MASK::Weight Weight;</div>\n+<div class=\"line\"><a id=\"l00338\" name=\"l00338\"></a><span class=\"lineno\">  338</span> </div>\n+<div class=\"line\"><a id=\"l00339\" name=\"l00339\"></a><span class=\"lineno\">  339</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00340\" name=\"l00340\"></a><span class=\"lineno\">  340</span>    <span class=\"comment\">//  First, the tangent along the crease:</span></div>\n+<div class=\"line\"><a id=\"l00341\" name=\"l00341\"></a><span class=\"lineno\">  341</span>    <span class=\"comment\">//      The first crease edge is considered the &quot;leading&quot; edge of the span</span></div>\n+<div class=\"line\"><a id=\"l00342\" name=\"l00342\"></a><span class=\"lineno\">  342</span>    <span class=\"comment\">//  of surface for which we are evaluating tangents and the second edge the</span></div>\n+<div class=\"line\"><a id=\"l00343\" name=\"l00343\"></a><span class=\"lineno\">  343</span>    <span class=\"comment\">//  &quot;trailing edge&quot;.  By convention, the tangent along the crease is oriented</span></div>\n+<div class=\"line\"><a id=\"l00344\" name=\"l00344\"></a><span class=\"lineno\">  344</span>    <span class=\"comment\">//  in the direction of the leading edge.</span></div>\n+<div class=\"line\"><a id=\"l00345\" name=\"l00345\"></a><span class=\"lineno\">  345</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00346\" name=\"l00346\"></a><span class=\"lineno\">  346</span>    <span class=\"keywordtype\">int</span> numEdges = vertex.GetNumEdges();</div>\n+<div class=\"line\"><a id=\"l00347\" name=\"l00347\"></a><span class=\"lineno\">  347</span>    <span class=\"keywordtype\">int</span> numFaces = vertex.GetNumFaces();</div>\n+<div class=\"line\"><a id=\"l00348\" name=\"l00348\"></a><span class=\"lineno\">  348</span> </div>\n+<div class=\"line\"><a id=\"l00349\" name=\"l00349\"></a><span class=\"lineno\">  349</span>    tan1Mask.SetNumVertexWeights(1);</div>\n+<div class=\"line\"><a id=\"l00350\" name=\"l00350\"></a><span class=\"lineno\">  350</span>    tan1Mask.SetNumEdgeWeights(numEdges);</div>\n+<div class=\"line\"><a id=\"l00351\" name=\"l00351\"></a><span class=\"lineno\">  351</span>    tan1Mask.SetNumFaceWeights(numFaces);</div>\n+<div class=\"line\"><a id=\"l00352\" name=\"l00352\"></a><span class=\"lineno\">  352</span>    tan1Mask.SetFaceWeightsForFaceCenters(<span class=\"keyword\">false</span>);</div>\n+<div class=\"line\"><a id=\"l00353\" name=\"l00353\"></a><span class=\"lineno\">  353</span> </div>\n+<div class=\"line\"><a id=\"l00354\" name=\"l00354\"></a><span class=\"lineno\">  354</span>    tan1Mask.VertexWeight(0) = 0.0f;</div>\n+<div class=\"line\"><a id=\"l00355\" name=\"l00355\"></a><span class=\"lineno\">  355</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; numEdges; ++i) {</div>\n+<div class=\"line\"><a id=\"l00356\" name=\"l00356\"></a><span class=\"lineno\">  356</span>        tan1Mask.EdgeWeight(i) = 0.0f;</div>\n+<div class=\"line\"><a id=\"l00357\" name=\"l00357\"></a><span class=\"lineno\">  357</span>    }</div>\n+<div class=\"line\"><a id=\"l00358\" name=\"l00358\"></a><span class=\"lineno\">  358</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; numFaces; ++i) {</div>\n+<div class=\"line\"><a id=\"l00359\" name=\"l00359\"></a><span class=\"lineno\">  359</span>        tan1Mask.FaceWeight(i) = 0.0f;</div>\n+<div class=\"line\"><a id=\"l00360\" name=\"l00360\"></a><span class=\"lineno\">  360</span>    }</div>\n+<div class=\"line\"><a id=\"l00361\" name=\"l00361\"></a><span class=\"lineno\">  361</span> </div>\n+<div class=\"line\"><a id=\"l00362\" name=\"l00362\"></a><span class=\"lineno\">  362</span>    tan1Mask.EdgeWeight(creaseEnds[0]) =  0.5f;</div>\n+<div class=\"line\"><a id=\"l00363\" name=\"l00363\"></a><span class=\"lineno\">  363</span>    tan1Mask.EdgeWeight(creaseEnds[1]) = -0.5f;</div>\n+<div class=\"line\"><a id=\"l00364\" name=\"l00364\"></a><span class=\"lineno\">  364</span> </div>\n+<div class=\"line\"><a id=\"l00365\" name=\"l00365\"></a><span class=\"lineno\">  365</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00366\" name=\"l00366\"></a><span class=\"lineno\">  366</span>    <span class=\"comment\">//  Second, the tangent across the interior faces:</span></div>\n+<div class=\"line\"><a id=\"l00367\" name=\"l00367\"></a><span class=\"lineno\">  367</span>    <span class=\"comment\">//      Note this is ambiguous for an interior vertex.  We currently return</span></div>\n+<div class=\"line\"><a id=\"l00368\" name=\"l00368\"></a><span class=\"lineno\">  368</span>    <span class=\"comment\">//  the tangent for the surface in the counter-clockwise span between the</span></div>\n+<div class=\"line\"><a id=\"l00369\" name=\"l00369\"></a><span class=\"lineno\">  369</span>    <span class=\"comment\">//  leading and trailing edges that form the crease.  Given the expected</span></div>\n+<div class=\"line\"><a id=\"l00370\" name=\"l00370\"></a><span class=\"lineno\">  370</span>    <span class=\"comment\">//  computation of a surface normal as Tan1 X Tan2, this tangent should be</span></div>\n+<div class=\"line\"><a id=\"l00371\" name=\"l00371\"></a><span class=\"lineno\">  371</span>    <span class=\"comment\">//  oriented &quot;inward&quot; from the crease/boundary -- across the surface rather</span></div>\n+<div class=\"line\"><a id=\"l00372\" name=\"l00372\"></a><span class=\"lineno\">  372</span>    <span class=\"comment\">//  than outward and away from it.</span></div>\n+<div class=\"line\"><a id=\"l00373\" name=\"l00373\"></a><span class=\"lineno\">  373</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00374\" name=\"l00374\"></a><span class=\"lineno\">  374</span>    tan2Mask.SetNumVertexWeights(1);</div>\n+<div class=\"line\"><a id=\"l00375\" name=\"l00375\"></a><span class=\"lineno\">  375</span>    tan2Mask.SetNumEdgeWeights(numEdges);</div>\n+<div class=\"line\"><a id=\"l00376\" name=\"l00376\"></a><span class=\"lineno\">  376</span>    tan2Mask.SetNumFaceWeights(numFaces);</div>\n+<div class=\"line\"><a id=\"l00377\" name=\"l00377\"></a><span class=\"lineno\">  377</span>    tan2Mask.SetFaceWeightsForFaceCenters(<span class=\"keyword\">false</span>);</div>\n+<div class=\"line\"><a id=\"l00378\" name=\"l00378\"></a><span class=\"lineno\">  378</span> </div>\n+<div class=\"line\"><a id=\"l00379\" name=\"l00379\"></a><span class=\"lineno\">  379</span>    <span class=\"comment\">//  Prepend weights of 0 preceding the crease:</span></div>\n+<div class=\"line\"><a id=\"l00380\" name=\"l00380\"></a><span class=\"lineno\">  380</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; creaseEnds[0]; ++i) {</div>\n+<div class=\"line\"><a id=\"l00381\" name=\"l00381\"></a><span class=\"lineno\">  381</span>        tan2Mask.EdgeWeight(i) = 0.0f;</div>\n+<div class=\"line\"><a id=\"l00382\" name=\"l00382\"></a><span class=\"lineno\">  382</span>        tan2Mask.FaceWeight(i) = 0.0f;</div>\n+<div class=\"line\"><a id=\"l00383\" name=\"l00383\"></a><span class=\"lineno\">  383</span>    }</div>\n+<div class=\"line\"><a id=\"l00384\" name=\"l00384\"></a><span class=\"lineno\">  384</span> </div>\n+<div class=\"line\"><a id=\"l00385\" name=\"l00385\"></a><span class=\"lineno\">  385</span>    <span class=\"comment\">//  Assign weights to crease edge and interior points:</span></div>\n+<div class=\"line\"><a id=\"l00386\" name=\"l00386\"></a><span class=\"lineno\">  386</span>    <span class=\"keywordtype\">int</span> interiorEdgeCount = creaseEnds[1] - creaseEnds[0] - 1;</div>\n+<div class=\"line\"><a id=\"l00387\" name=\"l00387\"></a><span class=\"lineno\">  387</span>    <span class=\"keywordflow\">if</span> (interiorEdgeCount == 1) {</div>\n+<div class=\"line\"><a id=\"l00388\" name=\"l00388\"></a><span class=\"lineno\">  388</span>        <span class=\"comment\">//  The regular case -- uniform B-spline cross-tangent:</span></div>\n+<div class=\"line\"><a id=\"l00389\" name=\"l00389\"></a><span class=\"lineno\">  389</span> </div>\n+<div class=\"line\"><a id=\"l00390\" name=\"l00390\"></a><span class=\"lineno\">  390</span>        tan2Mask.VertexWeight(0) = (Weight)(-4.0 / 6.0);</div>\n+<div class=\"line\"><a id=\"l00391\" name=\"l00391\"></a><span class=\"lineno\">  391</span> </div>\n+<div class=\"line\"><a id=\"l00392\" name=\"l00392\"></a><span class=\"lineno\">  392</span>        tan2Mask.EdgeWeight(creaseEnds[0])     = (Weight)(-1.0 / 6.0);</div>\n+<div class=\"line\"><a id=\"l00393\" name=\"l00393\"></a><span class=\"lineno\">  393</span>        tan2Mask.EdgeWeight(creaseEnds[0] + 1) = (Weight)( 4.0 / 6.0);</div>\n+<div class=\"line\"><a id=\"l00394\" name=\"l00394\"></a><span class=\"lineno\">  394</span>        tan2Mask.EdgeWeight(creaseEnds[1])     = (Weight)(-1.0 / 6.0);</div>\n+<div class=\"line\"><a id=\"l00395\" name=\"l00395\"></a><span class=\"lineno\">  395</span> </div>\n+<div class=\"line\"><a id=\"l00396\" name=\"l00396\"></a><span class=\"lineno\">  396</span>        tan2Mask.FaceWeight(creaseEnds[0])     = (Weight)(1.0 / 6.0);</div>\n+<div class=\"line\"><a id=\"l00397\" name=\"l00397\"></a><span class=\"lineno\">  397</span>        tan2Mask.FaceWeight(creaseEnds[0] + 1) = (Weight)(1.0 / 6.0);</div>\n+<div class=\"line\"><a id=\"l00398\" name=\"l00398\"></a><span class=\"lineno\">  398</span>    } <span class=\"keywordflow\">else</span> <span class=\"keywordflow\">if</span> (interiorEdgeCount &gt; 1) {</div>\n+<div class=\"line\"><a id=\"l00399\" name=\"l00399\"></a><span class=\"lineno\">  399</span>        <span class=\"comment\">//  The irregular case -- formulae from Biermann et al:</span></div>\n+<div class=\"line\"><a id=\"l00400\" name=\"l00400\"></a><span class=\"lineno\">  400</span> </div>\n+<div class=\"line\"><a id=\"l00401\" name=\"l00401\"></a><span class=\"lineno\">  401</span>        <span class=\"keywordtype\">double</span> k     = (double) (interiorEdgeCount + 1);</div>\n+<div class=\"line\"><a id=\"l00402\" name=\"l00402\"></a><span class=\"lineno\">  402</span>        <span class=\"keywordtype\">double</span> theta = M_PI / k;</div>\n+<div class=\"line\"><a id=\"l00403\" name=\"l00403\"></a><span class=\"lineno\">  403</span> </div>\n+<div class=\"line\"><a id=\"l00404\" name=\"l00404\"></a><span class=\"lineno\">  404</span>        <span class=\"keywordtype\">double</span> cosTheta = std::cos(theta);</div>\n+<div class=\"line\"><a id=\"l00405\" name=\"l00405\"></a><span class=\"lineno\">  405</span>        <span class=\"keywordtype\">double</span> sinTheta = std::sin(theta);</div>\n+<div class=\"line\"><a id=\"l00406\" name=\"l00406\"></a><span class=\"lineno\">  406</span> </div>\n+<div class=\"line\"><a id=\"l00407\" name=\"l00407\"></a><span class=\"lineno\">  407</span>        <span class=\"comment\">//  Loop/Schaefer use a different divisor here (3*k + cos(theta)):</span></div>\n+<div class=\"line\"><a id=\"l00408\" name=\"l00408\"></a><span class=\"lineno\">  408</span>        <span class=\"keywordtype\">double</span> commonDenom = 1.0f / (k * (3.0f + cosTheta));</div>\n+<div class=\"line\"><a id=\"l00409\" name=\"l00409\"></a><span class=\"lineno\">  409</span>        <span class=\"keywordtype\">double</span> R = (cosTheta + 1.0f) / sinTheta;</div>\n+<div class=\"line\"><a id=\"l00410\" name=\"l00410\"></a><span class=\"lineno\">  410</span> </div>\n+<div class=\"line\"><a id=\"l00411\" name=\"l00411\"></a><span class=\"lineno\">  411</span>        <span class=\"keywordtype\">double</span> vertexWeight = 4.0f * R * (cosTheta - 1.0f);</div>\n+<div class=\"line\"><a id=\"l00412\" name=\"l00412\"></a><span class=\"lineno\">  412</span>        <span class=\"keywordtype\">double</span> creaseWeight = -R * (1.0f + 2.0f * cosTheta);</div>\n+<div class=\"line\"><a id=\"l00413\" name=\"l00413\"></a><span class=\"lineno\">  413</span> </div>\n+<div class=\"line\"><a id=\"l00414\" name=\"l00414\"></a><span class=\"lineno\">  414</span>        tan2Mask.VertexWeight(0) = (Weight) (vertexWeight * commonDenom);</div>\n+<div class=\"line\"><a id=\"l00415\" name=\"l00415\"></a><span class=\"lineno\">  415</span> </div>\n+<div class=\"line\"><a id=\"l00416\" name=\"l00416\"></a><span class=\"lineno\">  416</span>        tan2Mask.EdgeWeight(creaseEnds[0]) = (Weight) (creaseWeight * commonDenom);</div>\n+<div class=\"line\"><a id=\"l00417\" name=\"l00417\"></a><span class=\"lineno\">  417</span>        tan2Mask.EdgeWeight(creaseEnds[1]) = (Weight) (creaseWeight * commonDenom);</div>\n+<div class=\"line\"><a id=\"l00418\" name=\"l00418\"></a><span class=\"lineno\">  418</span> </div>\n+<div class=\"line\"><a id=\"l00419\" name=\"l00419\"></a><span class=\"lineno\">  419</span>        tan2Mask.FaceWeight(creaseEnds[0]) = (Weight) (sinTheta * commonDenom);</div>\n+<div class=\"line\"><a id=\"l00420\" name=\"l00420\"></a><span class=\"lineno\">  420</span> </div>\n+<div class=\"line\"><a id=\"l00421\" name=\"l00421\"></a><span class=\"lineno\">  421</span>        <span class=\"keywordtype\">double</span> sinThetaI      = 0.0f;</div>\n+<div class=\"line\"><a id=\"l00422\" name=\"l00422\"></a><span class=\"lineno\">  422</span>        <span class=\"keywordtype\">double</span> sinThetaIplus1 = sinTheta;</div>\n+<div class=\"line\"><a id=\"l00423\" name=\"l00423\"></a><span class=\"lineno\">  423</span>        <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 1; i &lt; k; ++i) {</div>\n+<div class=\"line\"><a id=\"l00424\" name=\"l00424\"></a><span class=\"lineno\">  424</span>            sinThetaI      = sinThetaIplus1;</div>\n+<div class=\"line\"><a id=\"l00425\" name=\"l00425\"></a><span class=\"lineno\">  425</span>            sinThetaIplus1 = std::sin((i+1)*theta);</div>\n+<div class=\"line\"><a id=\"l00426\" name=\"l00426\"></a><span class=\"lineno\">  426</span> </div>\n+<div class=\"line\"><a id=\"l00427\" name=\"l00427\"></a><span class=\"lineno\">  427</span>            tan2Mask.EdgeWeight(creaseEnds[0] + i) = (Weight) ((4.0f * sinThetaI) * commonDenom);</div>\n+<div class=\"line\"><a id=\"l00428\" name=\"l00428\"></a><span class=\"lineno\">  428</span>            tan2Mask.FaceWeight(creaseEnds[0] + i) = (Weight) ((sinThetaI + sinThetaIplus1) * commonDenom);</div>\n+<div class=\"line\"><a id=\"l00429\" name=\"l00429\"></a><span class=\"lineno\">  429</span>        }</div>\n+<div class=\"line\"><a id=\"l00430\" name=\"l00430\"></a><span class=\"lineno\">  430</span>    } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00431\" name=\"l00431\"></a><span class=\"lineno\">  431</span>        <span class=\"comment\">//  Special case for a single face -- simple average of boundary edges:</span></div>\n+<div class=\"line\"><a id=\"l00432\" name=\"l00432\"></a><span class=\"lineno\">  432</span> </div>\n+<div class=\"line\"><a id=\"l00433\" name=\"l00433\"></a><span class=\"lineno\">  433</span>        tan2Mask.VertexWeight(0) = -6.0f;</div>\n+<div class=\"line\"><a id=\"l00434\" name=\"l00434\"></a><span class=\"lineno\">  434</span> </div>\n+<div class=\"line\"><a id=\"l00435\" name=\"l00435\"></a><span class=\"lineno\">  435</span>        tan2Mask.EdgeWeight(creaseEnds[0]) = 3.0f;</div>\n+<div class=\"line\"><a id=\"l00436\" name=\"l00436\"></a><span class=\"lineno\">  436</span>        tan2Mask.EdgeWeight(creaseEnds[1]) = 3.0f;</div>\n+<div class=\"line\"><a id=\"l00437\" name=\"l00437\"></a><span class=\"lineno\">  437</span> </div>\n+<div class=\"line\"><a id=\"l00438\" name=\"l00438\"></a><span class=\"lineno\">  438</span>        tan2Mask.FaceWeight(creaseEnds[0]) = 0.0f;</div>\n+<div class=\"line\"><a id=\"l00439\" name=\"l00439\"></a><span class=\"lineno\">  439</span>    }</div>\n+<div class=\"line\"><a id=\"l00440\" name=\"l00440\"></a><span class=\"lineno\">  440</span> </div>\n+<div class=\"line\"><a id=\"l00441\" name=\"l00441\"></a><span class=\"lineno\">  441</span>    <span class=\"comment\">//  Append weights of 0 following the crease:</span></div>\n+<div class=\"line\"><a id=\"l00442\" name=\"l00442\"></a><span class=\"lineno\">  442</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = creaseEnds[1]; i &lt; numFaces; ++i) {</div>\n+<div class=\"line\"><a id=\"l00443\" name=\"l00443\"></a><span class=\"lineno\">  443</span>        tan2Mask.FaceWeight(i) = 0.0f;</div>\n+<div class=\"line\"><a id=\"l00444\" name=\"l00444\"></a><span class=\"lineno\">  444</span>    }</div>\n+<div class=\"line\"><a id=\"l00445\" name=\"l00445\"></a><span class=\"lineno\">  445</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = creaseEnds[1] + 1; i &lt; numEdges; ++i) {</div>\n+<div class=\"line\"><a id=\"l00446\" name=\"l00446\"></a><span class=\"lineno\">  446</span>        tan2Mask.EdgeWeight(i) = 0.0f;</div>\n+<div class=\"line\"><a id=\"l00447\" name=\"l00447\"></a><span class=\"lineno\">  447</span>    }</div>\n+<div class=\"line\"><a id=\"l00448\" name=\"l00448\"></a><span class=\"lineno\">  448</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00449\" name=\"l00449\"></a><span class=\"lineno\">  449</span> </div>\n+<div class=\"line\"><a id=\"l00450\" name=\"l00450\"></a><span class=\"lineno\">  450</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n+<div class=\"line\"><a id=\"l00451\" name=\"l00451\"></a><span class=\"lineno\">  451</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK&gt;</div>\n+<div class=\"line\"><a id=\"l00452\" name=\"l00452\"></a><span class=\"lineno\">  452</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00453\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00453\" name=\"l00453\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#a15a82416378d985afe049eaebc185e7d\">  453</a></span><a class=\"code hl_function\" href=\"a01341.html#a9ee5e194a00832a5bfa76cf58df0bc4b\">Scheme&lt;SCHEME_CATMARK&gt;::assignSmoothLimitTangentMasks</a>(VERTEX <span class=\"keyword\">const</span>&amp; vertex,</div>\n+<div class=\"line\"><a id=\"l00454\" name=\"l00454\"></a><span class=\"lineno\">  454</span>        MASK&amp; tan1Mask, MASK&amp; tan2Mask)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00455\" name=\"l00455\"></a><span class=\"lineno\">  455</span> </div>\n+<div class=\"line\"><a id=\"l00456\" name=\"l00456\"></a><span class=\"lineno\">  456</span>    <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> MASK::Weight Weight;</div>\n+<div class=\"line\"><a id=\"l00457\" name=\"l00457\"></a><span class=\"lineno\">  457</span> </div>\n+<div class=\"line\"><a id=\"l00458\" name=\"l00458\"></a><span class=\"lineno\">  458</span>    <span class=\"keywordtype\">int</span> valence = vertex.GetNumFaces();</div>\n+<div class=\"line\"><a id=\"l00459\" name=\"l00459\"></a><span class=\"lineno\">  459</span>    <span class=\"keywordflow\">if</span> (valence == 2) {</div>\n+<div class=\"line\"><a id=\"l00460\" name=\"l00460\"></a><span class=\"lineno\">  460</span>        assignCornerLimitTangentMasks(vertex, tan1Mask, tan2Mask);</div>\n+<div class=\"line\"><a id=\"l00461\" name=\"l00461\"></a><span class=\"lineno\">  461</span>        <span class=\"keywordflow\">return</span>;</div>\n+<div class=\"line\"><a id=\"l00462\" name=\"l00462\"></a><span class=\"lineno\">  462</span>    }</div>\n+<div class=\"line\"><a id=\"l00463\" name=\"l00463\"></a><span class=\"lineno\">  463</span> </div>\n+<div class=\"line\"><a id=\"l00464\" name=\"l00464\"></a><span class=\"lineno\">  464</span>    <span class=\"comment\">//  Compute tan1 initially -- tan2 is simply a rotation:</span></div>\n+<div class=\"line\"><a id=\"l00465\" name=\"l00465\"></a><span class=\"lineno\">  465</span>    tan1Mask.SetNumVertexWeights(1);</div>\n+<div class=\"line\"><a id=\"l00466\" name=\"l00466\"></a><span class=\"lineno\">  466</span>    tan1Mask.SetNumEdgeWeights(valence);</div>\n+<div class=\"line\"><a id=\"l00467\" name=\"l00467\"></a><span class=\"lineno\">  467</span>    tan1Mask.SetNumFaceWeights(valence);</div>\n+<div class=\"line\"><a id=\"l00468\" name=\"l00468\"></a><span class=\"lineno\">  468</span>    tan1Mask.SetFaceWeightsForFaceCenters(<span class=\"keyword\">false</span>);</div>\n+<div class=\"line\"><a id=\"l00469\" name=\"l00469\"></a><span class=\"lineno\">  469</span> </div>\n+<div class=\"line\"><a id=\"l00470\" name=\"l00470\"></a><span class=\"lineno\">  470</span>    tan1Mask.VertexWeight(0) = 0.0f;</div>\n+<div class=\"line\"><a id=\"l00471\" name=\"l00471\"></a><span class=\"lineno\">  471</span> </div>\n+<div class=\"line\"><a id=\"l00472\" name=\"l00472\"></a><span class=\"lineno\">  472</span>    <span class=\"keywordflow\">if</span> (valence == 4) {</div>\n+<div class=\"line\"><a id=\"l00473\" name=\"l00473\"></a><span class=\"lineno\">  473</span>        tan1Mask.EdgeWeight(0) =  4.0f;</div>\n+<div class=\"line\"><a id=\"l00474\" name=\"l00474\"></a><span class=\"lineno\">  474</span>        tan1Mask.EdgeWeight(1) =  0.0f;</div>\n+<div class=\"line\"><a id=\"l00475\" name=\"l00475\"></a><span class=\"lineno\">  475</span>        tan1Mask.EdgeWeight(2) = -4.0f;</div>\n+<div class=\"line\"><a id=\"l00476\" name=\"l00476\"></a><span class=\"lineno\">  476</span>        tan1Mask.EdgeWeight(3) =  0.0f;</div>\n+<div class=\"line\"><a id=\"l00477\" name=\"l00477\"></a><span class=\"lineno\">  477</span> </div>\n+<div class=\"line\"><a id=\"l00478\" name=\"l00478\"></a><span class=\"lineno\">  478</span>        tan1Mask.FaceWeight(0) =  1.0f;</div>\n+<div class=\"line\"><a id=\"l00479\" name=\"l00479\"></a><span class=\"lineno\">  479</span>        tan1Mask.FaceWeight(1) = -1.0f;</div>\n+<div class=\"line\"><a id=\"l00480\" name=\"l00480\"></a><span class=\"lineno\">  480</span>        tan1Mask.FaceWeight(2) = -1.0f;</div>\n+<div class=\"line\"><a id=\"l00481\" name=\"l00481\"></a><span class=\"lineno\">  481</span>        tan1Mask.FaceWeight(3) =  1.0f;</div>\n+<div class=\"line\"><a id=\"l00482\" name=\"l00482\"></a><span class=\"lineno\">  482</span>    } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00483\" name=\"l00483\"></a><span class=\"lineno\">  483</span>        <span class=\"keywordtype\">double</span> theta = 2.0f * M_PI / (double)valence;</div>\n+<div class=\"line\"><a id=\"l00484\" name=\"l00484\"></a><span class=\"lineno\">  484</span> </div>\n+<div class=\"line\"><a id=\"l00485\" name=\"l00485\"></a><span class=\"lineno\">  485</span>        <span class=\"keywordtype\">double</span> cosTheta     = std::cos(theta);</div>\n+<div class=\"line\"><a id=\"l00486\" name=\"l00486\"></a><span class=\"lineno\">  486</span>        <span class=\"keywordtype\">double</span> cosHalfTheta = std::cos(theta * 0.5f);</div>\n+<div class=\"line\"><a id=\"l00487\" name=\"l00487\"></a><span class=\"lineno\">  487</span> </div>\n+<div class=\"line\"><a id=\"l00488\" name=\"l00488\"></a><span class=\"lineno\">  488</span>        <span class=\"keywordtype\">double</span> lambda = (5.0 / 16.0) + (1.0 / 16.0) *</div>\n+<div class=\"line\"><a id=\"l00489\" name=\"l00489\"></a><span class=\"lineno\">  489</span>                (cosTheta + cosHalfTheta * std::sqrt(2.0f * (9.0f + cosTheta)));</div>\n+<div class=\"line\"><a id=\"l00490\" name=\"l00490\"></a><span class=\"lineno\">  490</span> </div>\n+<div class=\"line\"><a id=\"l00491\" name=\"l00491\"></a><span class=\"lineno\">  491</span>        <span class=\"keywordtype\">double</span> edgeWeightScale = 4.0f;</div>\n+<div class=\"line\"><a id=\"l00492\" name=\"l00492\"></a><span class=\"lineno\">  492</span>        <span class=\"keywordtype\">double</span> faceWeightScale = 1.0f / (4.0f * lambda - 1.0f);</div>\n+<div class=\"line\"><a id=\"l00493\" name=\"l00493\"></a><span class=\"lineno\">  493</span> </div>\n+<div class=\"line\"><a id=\"l00494\" name=\"l00494\"></a><span class=\"lineno\">  494</span>        <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; valence; ++i) {</div>\n+<div class=\"line\"><a id=\"l00495\" name=\"l00495\"></a><span class=\"lineno\">  495</span>            <span class=\"keywordtype\">double</span> cosThetaI      = std::cos(  i  * theta);</div>\n+<div class=\"line\"><a id=\"l00496\" name=\"l00496\"></a><span class=\"lineno\">  496</span>            <span class=\"keywordtype\">double</span> cosThetaIplus1 = std::cos((i+1)* theta);</div>\n+<div class=\"line\"><a id=\"l00497\" name=\"l00497\"></a><span class=\"lineno\">  497</span> </div>\n+<div class=\"line\"><a id=\"l00498\" name=\"l00498\"></a><span class=\"lineno\">  498</span>            tan1Mask.EdgeWeight(i) = (Weight) (edgeWeightScale * cosThetaI);</div>\n+<div class=\"line\"><a id=\"l00499\" name=\"l00499\"></a><span class=\"lineno\">  499</span>            tan1Mask.FaceWeight(i) = (Weight) (faceWeightScale * (cosThetaI + cosThetaIplus1));</div>\n+<div class=\"line\"><a id=\"l00500\" name=\"l00500\"></a><span class=\"lineno\">  500</span>        }</div>\n+<div class=\"line\"><a id=\"l00501\" name=\"l00501\"></a><span class=\"lineno\">  501</span>    }</div>\n+<div class=\"line\"><a id=\"l00502\" name=\"l00502\"></a><span class=\"lineno\">  502</span> </div>\n+<div class=\"line\"><a id=\"l00503\" name=\"l00503\"></a><span class=\"lineno\">  503</span>    <span class=\"comment\">//  Now rotate/copy tan1 weights to tan2:</span></div>\n+<div class=\"line\"><a id=\"l00504\" name=\"l00504\"></a><span class=\"lineno\">  504</span>    tan2Mask.SetNumVertexWeights(1);</div>\n+<div class=\"line\"><a id=\"l00505\" name=\"l00505\"></a><span class=\"lineno\">  505</span>    tan2Mask.SetNumEdgeWeights(valence);</div>\n+<div class=\"line\"><a id=\"l00506\" name=\"l00506\"></a><span class=\"lineno\">  506</span>    tan2Mask.SetNumFaceWeights(valence);</div>\n+<div class=\"line\"><a id=\"l00507\" name=\"l00507\"></a><span class=\"lineno\">  507</span>    tan2Mask.SetFaceWeightsForFaceCenters(<span class=\"keyword\">false</span>);</div>\n+<div class=\"line\"><a id=\"l00508\" name=\"l00508\"></a><span class=\"lineno\">  508</span> </div>\n+<div class=\"line\"><a id=\"l00509\" name=\"l00509\"></a><span class=\"lineno\">  509</span>    tan2Mask.VertexWeight(0) = 0.0f;</div>\n+<div class=\"line\"><a id=\"l00510\" name=\"l00510\"></a><span class=\"lineno\">  510</span>    <span class=\"keywordflow\">if</span> (valence == 4) {</div>\n+<div class=\"line\"><a id=\"l00511\" name=\"l00511\"></a><span class=\"lineno\">  511</span>        tan2Mask.EdgeWeight(0) =  0.0f;</div>\n+<div class=\"line\"><a id=\"l00512\" name=\"l00512\"></a><span class=\"lineno\">  512</span>        tan2Mask.EdgeWeight(1) =  4.0f;</div>\n+<div class=\"line\"><a id=\"l00513\" name=\"l00513\"></a><span class=\"lineno\">  513</span>        tan2Mask.EdgeWeight(2) =  0.0f;</div>\n+<div class=\"line\"><a id=\"l00514\" name=\"l00514\"></a><span class=\"lineno\">  514</span>        tan2Mask.EdgeWeight(3) = -4.0f;</div>\n+<div class=\"line\"><a id=\"l00515\" name=\"l00515\"></a><span class=\"lineno\">  515</span> </div>\n+<div class=\"line\"><a id=\"l00516\" name=\"l00516\"></a><span class=\"lineno\">  516</span>        tan2Mask.FaceWeight(0) =  1.0f;</div>\n+<div class=\"line\"><a id=\"l00517\" name=\"l00517\"></a><span class=\"lineno\">  517</span>        tan2Mask.FaceWeight(1) =  1.0f;</div>\n+<div class=\"line\"><a id=\"l00518\" name=\"l00518\"></a><span class=\"lineno\">  518</span>        tan2Mask.FaceWeight(2) = -1.0f;</div>\n+<div class=\"line\"><a id=\"l00519\" name=\"l00519\"></a><span class=\"lineno\">  519</span>        tan2Mask.FaceWeight(3) = -1.0f;</div>\n+<div class=\"line\"><a id=\"l00520\" name=\"l00520\"></a><span class=\"lineno\">  520</span>    } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00521\" name=\"l00521\"></a><span class=\"lineno\">  521</span>        tan2Mask.EdgeWeight(0) = tan1Mask.EdgeWeight(valence-1);</div>\n+<div class=\"line\"><a id=\"l00522\" name=\"l00522\"></a><span class=\"lineno\">  522</span>        tan2Mask.FaceWeight(0) = tan1Mask.FaceWeight(valence-1);</div>\n+<div class=\"line\"><a id=\"l00523\" name=\"l00523\"></a><span class=\"lineno\">  523</span>        <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 1; i &lt; valence; ++i) {</div>\n+<div class=\"line\"><a id=\"l00524\" name=\"l00524\"></a><span class=\"lineno\">  524</span>            tan2Mask.EdgeWeight(i) = tan1Mask.EdgeWeight(i-1);</div>\n+<div class=\"line\"><a id=\"l00525\" name=\"l00525\"></a><span class=\"lineno\">  525</span>            tan2Mask.FaceWeight(i) = tan1Mask.FaceWeight(i-1);</div>\n+<div class=\"line\"><a id=\"l00526\" name=\"l00526\"></a><span class=\"lineno\">  526</span>        }</div>\n+<div class=\"line\"><a id=\"l00527\" name=\"l00527\"></a><span class=\"lineno\">  527</span>    }</div>\n+<div class=\"line\"><a id=\"l00528\" name=\"l00528\"></a><span class=\"lineno\">  528</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00529\" name=\"l00529\"></a><span class=\"lineno\">  529</span> </div>\n+<div class=\"line\"><a id=\"l00530\" name=\"l00530\"></a><span class=\"lineno\">  530</span>} <span class=\"comment\">// end namespace sdc</span></div>\n+<div class=\"line\"><a id=\"l00531\" name=\"l00531\"></a><span class=\"lineno\">  531</span> </div>\n+<div class=\"line\"><a id=\"l00532\" name=\"l00532\"></a><span class=\"lineno\">  532</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00533\" name=\"l00533\"></a><span class=\"lineno\">  533</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00534\" name=\"l00534\"></a><span class=\"lineno\">  534</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l00535\" name=\"l00535\"></a><span class=\"lineno\">  535</span> </div>\n+<div class=\"line\"><a id=\"l00536\" name=\"l00536\"></a><span class=\"lineno\">  536</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_SDC_CATMARK_SCHEME_H */</span><span class=\"preprocessor\"></span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa00913_html_a61ef2f8f765ba17f8036bcc0f0fa887b\"><div class=\"ttname\"><a href=\"a00913.html#a61ef2f8f765ba17f8036bcc0f0fa887b\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Split</a></div><div class=\"ttdeci\">Split</div><div class=\"ttdoc\">Enumerated type for all face splitting schemes.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01492_source.html#l00047\">types.h:47</a></div></div>\n+<div class=\"ttc\" id=\"aa00913_html_a61ef2f8f765ba17f8036bcc0f0fa887ba56eed514f6a5971f198c9e421054b513\"><div class=\"ttname\"><a href=\"a00913.html#a61ef2f8f765ba17f8036bcc0f0fa887ba56eed514f6a5971f198c9e421054b513\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::SPLIT_TO_QUADS</a></div><div class=\"ttdeci\">@ SPLIT_TO_QUADS</div><div class=\"ttdoc\">Used by Catmark and Bilinear.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01492_source.html#l00048\">types.h:48</a></div></div>\n+<div class=\"ttc\" id=\"aa01337_html_a10fe8c2b78e5c59377614876a362c38baf222ead5fa4875f2ea2794c2d765a87d\"><div class=\"ttname\"><a href=\"a01337.html#a10fe8c2b78e5c59377614876a362c38baf222ead5fa4875f2ea2794c2d765a87d\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::TRI_SUB_SMOOTH</a></div><div class=\"ttdeci\">@ TRI_SUB_SMOOTH</div><div class=\"ttdoc\">&quot;smooth triangle&quot; weights (Catmark scheme only)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00860_source.html#l00075\">options.h:74</a></div></div>\n+<div class=\"ttc\" id=\"aa01341_html_a059f5c2c9193be58be31955e987a0600\"><div class=\"ttname\"><a href=\"a01341.html#a059f5c2c9193be58be31955e987a0600\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::assignSmoothMaskForEdge</a></div><div class=\"ttdeci\">void assignSmoothMaskForEdge(EDGE const &amp;edge, MASK &amp;mask) const</div></div>\n+<div class=\"ttc\" id=\"aa01341_html_a14b97ddde5fba31ca7f933508ee649da\"><div class=\"ttname\"><a href=\"a01341.html#a14b97ddde5fba31ca7f933508ee649da\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::GetTopologicalSplitType</a></div><div class=\"ttdeci\">static Split GetTopologicalSplitType()</div></div>\n+<div class=\"ttc\" id=\"aa01341_html_a2439e78373d9dfd6ad3ab373c7c32dcc\"><div class=\"ttname\"><a href=\"a01341.html#a2439e78373d9dfd6ad3ab373c7c32dcc\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::assignCreaseMaskForVertex</a></div><div class=\"ttdeci\">void assignCreaseMaskForVertex(VERTEX const &amp;edge, MASK &amp;mask, int const creaseEnds[2]) const</div></div>\n+<div class=\"ttc\" id=\"aa01341_html_a4f8e559b93bbaf26ea0d40b1fa2f194f\"><div class=\"ttname\"><a href=\"a01341.html#a4f8e559b93bbaf26ea0d40b1fa2f194f\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::assignCreaseLimitTangentMasks</a></div><div class=\"ttdeci\">void assignCreaseLimitTangentMasks(VERTEX const &amp;vertex, MASK &amp;tan1, MASK &amp;tan2, int const creaseEnds[2]) const</div></div>\n+<div class=\"ttc\" id=\"aa01341_html_a531004716c07aad5436cb2db27e1ec24\"><div class=\"ttname\"><a href=\"a01341.html#a531004716c07aad5436cb2db27e1ec24\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::GetRegularFaceSize</a></div><div class=\"ttdeci\">static int GetRegularFaceSize()</div></div>\n+<div class=\"ttc\" id=\"aa01341_html_a736c10944cb921b334fbd8b81866d59f\"><div class=\"ttname\"><a href=\"a01341.html#a736c10944cb921b334fbd8b81866d59f\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::assignSmoothLimitMask</a></div><div class=\"ttdeci\">void assignSmoothLimitMask(VERTEX const &amp;vertex, MASK &amp;pos) const</div></div>\n+<div class=\"ttc\" id=\"aa01341_html_a73cf51e4315ca86e5e0a3954c92f8f74\"><div class=\"ttname\"><a href=\"a01341.html#a73cf51e4315ca86e5e0a3954c92f8f74\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::GetLocalNeighborhoodSize</a></div><div class=\"ttdeci\">static int GetLocalNeighborhoodSize()</div></div>\n+<div class=\"ttc\" id=\"aa01341_html_a7c9316f7212d3ea41db7f3f1a66cc7e5\"><div class=\"ttname\"><a href=\"a01341.html#a7c9316f7212d3ea41db7f3f1a66cc7e5\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::assignCreaseLimitMask</a></div><div class=\"ttdeci\">void assignCreaseLimitMask(VERTEX const &amp;vertex, MASK &amp;pos, int const creaseEnds[2]) const</div></div>\n+<div class=\"ttc\" id=\"aa01341_html_a84788a5a93f17e648103123c9f4a33f9\"><div class=\"ttname\"><a href=\"a01341.html#a84788a5a93f17e648103123c9f4a33f9\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::assignSmoothMaskForVertex</a></div><div class=\"ttdeci\">void assignSmoothMaskForVertex(VERTEX const &amp;edge, MASK &amp;mask) const</div></div>\n+<div class=\"ttc\" id=\"aa01341_html_a8f7e983b2195ac6b388c7a6db17f8cb0\"><div class=\"ttname\"><a href=\"a01341.html#a8f7e983b2195ac6b388c7a6db17f8cb0\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::GetRegularVertexValence</a></div><div class=\"ttdeci\">static int GetRegularVertexValence()</div></div>\n+<div class=\"ttc\" id=\"aa01341_html_a9ee5e194a00832a5bfa76cf58df0bc4b\"><div class=\"ttname\"><a href=\"a01341.html#a9ee5e194a00832a5bfa76cf58df0bc4b\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::assignSmoothLimitTangentMasks</a></div><div class=\"ttdeci\">void assignSmoothLimitTangentMasks(VERTEX const &amp;vertex, MASK &amp;tan1, MASK &amp;tan2) const</div></div>\n+<div class=\"ttc\" id=\"aa01341_html_aa2821d365ea8135d6316c0f926f87ccb\"><div class=\"ttname\"><a href=\"a01341.html#aa2821d365ea8135d6316c0f926f87ccb\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::assignCornerLimitMask</a></div><div class=\"ttdeci\">void assignCornerLimitMask(VERTEX const &amp;vertex, MASK &amp;pos) const</div></div>\n+<div class=\"ttc\" id=\"aa01341_html_ae9ee7f11f51ec6ff8c43ab0729454b54\"><div class=\"ttname\"><a href=\"a01341.html#ae9ee7f11f51ec6ff8c43ab0729454b54\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::assignCornerLimitTangentMasks</a></div><div class=\"ttdeci\">void assignCornerLimitTangentMasks(VERTEX const &amp;vertex, MASK &amp;tan1, MASK &amp;tan2) const</div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00866.html\">bufferDescriptor.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_f61368944c63c2c1f8c69bc232e59c39.html\">sdc</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00866.html\">catmarkScheme.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-bufferDescriptor.h\n+catmarkScheme.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2015 Pixar\n+2// Copyright 2014 DreamWorks Animation LLC.\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -23,126 +23,592 @@\n 17//\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n-24\n-25#ifndef OPENSUBDIV3_OSD_BUFFER_DESCRIPTOR_H\n-26#define OPENSUBDIV3_OSD_BUFFER_DESCRIPTOR_H\n-27\n-28#include \"../version.h\"\n-29#include <string.h>\n+24#ifndef OPENSUBDIV3_SDC_CATMARK_SCHEME_H\n+25#define OPENSUBDIV3_SDC_CATMARK_SCHEME_H\n+26\n+27#include \"../version.h\"\n+28\n+29#include \"../sdc/scheme.h\"\n 30\n-31namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-32namespace OPENSUBDIV_VERSION {\n+31#include <cassert>\n+32#include <cmath>\n 33\n-_\b3_\b4namespace Osd {\n-35\n-46\n-47// example:\n-48// n\n-49// -----+----------------------------------------+-------------------------\n-50// | vertex 0 |\n-51// -----+----------------------------------------+-------------------------\n-52// | X Y Z R G B A Xu Yu Zu Xv Yv Zv |\n-53// -----+----------------------------------------+-------------------------\n-54// <------------- stride = 13 -------------->\n-55//\n-56// - XYZ (offset = n+0, length = 3, stride = 13)\n-57// - RGBA (offset = n+3, length = 4, stride = 13)\n-58// - uTangent (offset = n+7, length = 3, stride = 13)\n-59// - vTangent (offset = n+10, length = 3, stride = 13)\n-60//\n-_\b6_\b1struct _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br {\n-62\n-_\b6_\b4 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br() : _\bo_\bf_\bf_\bs_\be_\bt(0), _\bl_\be_\bn_\bg_\bt_\bh(0), _\bs_\bt_\br_\bi_\bd_\be(0) { }\n-65\n-_\b6_\b7 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(int o, int l, int s) : _\bo_\bf_\bf_\bs_\be_\bt(o), _\bl_\be_\bn_\bg_\bt_\bh(l), _\bs_\bt_\br_\bi_\bd_\be(s) { }\n-68\n-_\b7_\b0 int _\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bO_\bf_\bf_\bs_\be_\bt() const {\n-71 return _\bs_\bt_\br_\bi_\bd_\be > 0 ? _\bo_\bf_\bf_\bs_\be_\bt % _\bs_\bt_\br_\bi_\bd_\be : 0;\n-72 }\n-73\n-_\b7_\b5 bool _\bI_\bs_\bV_\ba_\bl_\bi_\bd() const {\n-76 return ((_\bl_\be_\bn_\bg_\bt_\bh > 0) &&\n-77 (_\bl_\be_\bn_\bg_\bt_\bh <= _\bs_\bt_\br_\bi_\bd_\be - _\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bO_\bf_\bf_\bs_\be_\bt()));\n-78 }\n-79\n-_\b8_\b1 void _\bR_\be_\bs_\be_\bt() {\n-82 _\bo_\bf_\bf_\bs_\be_\bt = _\bl_\be_\bn_\bg_\bt_\bh = _\bs_\bt_\br_\bi_\bd_\be = 0;\n-83 }\n-84\n-_\b8_\b6 bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b _\b=_\b=_\b (_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &other) const {\n-87 return (_\bo_\bf_\bf_\bs_\be_\bt == other._\bo_\bf_\bf_\bs_\be_\bt &&\n-88 _\bl_\be_\bn_\bg_\bt_\bh == other._\bl_\be_\bn_\bg_\bt_\bh &&\n-89 _\bs_\bt_\br_\bi_\bd_\be == other._\bs_\bt_\br_\bi_\bd_\be);\n-90 }\n-91\n-_\b9_\b3 bool _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b _\b!_\b=_\b (_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &other) const {\n-94 return !(this->_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b=(other));\n-95 }\n-96\n-_\b9_\b8 int _\bo_\bf_\bf_\bs_\be_\bt;\n-_\b1_\b0_\b0 int _\bl_\be_\bn_\bg_\bt_\bh;\n-_\b1_\b0_\b2 int _\bs_\bt_\br_\bi_\bd_\be;\n-103};\n-104\n-105} // end namespace Osd\n+34namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+35namespace OPENSUBDIV_VERSION {\n+36\n+37namespace Sdc {\n+38\n+39//\n+40// Specializations for Scheme<SCHEME_CATMARK>:\n+41//\n+42\n+43//\n+44// Catmark traits:\n+45//\n+46template <>\n+_\b4_\b7inline _\bS_\bp_\bl_\bi_\bt _\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bC_\bA_\bT_\bM_\bA_\bR_\bK_\b>_\b:_\b:_\bG_\be_\bt_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\bi_\bc_\ba_\bl_\bS_\bp_\bl_\bi_\bt_\bT_\by_\bp_\be() { return\n+_\bS_\bP_\bL_\bI_\bT_\b__\bT_\bO_\b__\bQ_\bU_\bA_\bD_\bS; }\n+48\n+49template <>\n+_\b5_\b0inline int _\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bC_\bA_\bT_\bM_\bA_\bR_\bK_\b>_\b:_\b:_\bG_\be_\bt_\bR_\be_\bg_\bu_\bl_\ba_\br_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be() { return 4; }\n+51\n+52template <>\n+_\b5_\b3inline int _\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bC_\bA_\bT_\bM_\bA_\bR_\bK_\b>_\b:_\b:_\bG_\be_\bt_\bR_\be_\bg_\bu_\bl_\ba_\br_\bV_\be_\br_\bt_\be_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be() { return 4; }\n+54\n+55template <>\n+_\b5_\b6inline int _\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bC_\bA_\bT_\bM_\bA_\bR_\bK_\b>_\b:_\b:_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bh_\bo_\bo_\bd_\bS_\bi_\bz_\be() { return 1; }\n+57\n+58\n+59//\n+60// Masks for edge-vertices: the hard Crease mask does not need to be\n+specialized\n+61// (simply the midpoint), so all that is left is the Smooth case:\n+62//\n+63// The Smooth mask is complicated by the need to support the \"triangle\n+subdivision\"\n+64// option, which applies different weighting in the presence of triangles. It\n+is\n+65// up for debate as to whether this is useful or not -- we may be able to\n+deprecate\n+66// this option.\n+67//\n+68template <>\n+69template <typename EDGE, typename MASK>\n+70inline void\n+_\b7_\b1_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bC_\bA_\bT_\bM_\bA_\bR_\bK_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bS_\bm_\bo_\bo_\bt_\bh_\bM_\ba_\bs_\bk_\bF_\bo_\br_\bE_\bd_\bg_\be(EDGE const& edge, MASK& mask)\n+const {\n+72\n+73 typedef typename MASK::Weight Weight;\n+74\n+75 int faceCount = edge.GetNumFaces();\n+76\n+77 mask.SetNumVertexWeights(2);\n+78 mask.SetNumEdgeWeights(0);\n+79 mask.SetNumFaceWeights(faceCount);\n+80 mask.SetFaceWeightsForFaceCenters(true);\n+81\n+82 //\n+83 // Determine if we need to inspect incident faces and apply alternate\n+weighting for\n+84 // triangles -- and if so, determine which of the two are triangles.\n+85 //\n+86 bool face0IsTri = false;\n+87 bool face1IsTri = false;\n+88 bool useTriangleOption = (_options.GetTriangleSubdivision() == _\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bT_\bR_\bI_\b__\bS_\bU_\bB_\b__\bS_\bM_\bO_\bO_\bT_\bH);\n+89 if (useTriangleOption) {\n+90 if (faceCount == 2) {\n+91 //\n+92 // Ideally we want to avoid this inspection when we have already subdivided\n+at\n+93 // least once -- need something in the Edge interface to help avoid this,\n+e.g.\n+94 // an IsRegular() query, the subdivision level...\n+95 //\n+96 int vertsPerFace[2];\n+97 edge.GetNumVerticesPerFace(vertsPerFace);\n+98\n+99 face0IsTri = (vertsPerFace[0] == 3);\n+100 face1IsTri = (vertsPerFace[1] == 3);\n+101 useTriangleOption = face0IsTri || face1IsTri;\n+102 } else {\n+103 useTriangleOption = false;\n+104 }\n+105 }\n 106\n-107} // end namespace OPENSUBDIV_VERSION\n-108using namespace OPENSUBDIV_VERSION;\n-109\n-110} // end namespace OpenSubdiv\n-111\n-112#endif // OPENSUBDIV3_OSD_BUFFER_DESCRIPTOR_H\n+107 if (! useTriangleOption) {\n+108 mask.VertexWeight(0) = 0.25f;\n+109 mask.VertexWeight(1) = 0.25f;\n+110\n+111 if (faceCount == 2) {\n+112 mask.FaceWeight(0) = 0.25f;\n+113 mask.FaceWeight(1) = 0.25f;\n+114 } else {\n+115 Weight fWeight = 0.5f / (Weight)faceCount;\n+116 for (int i = 0; i < faceCount; ++i) {\n+117 mask.FaceWeight(i) = fWeight;\n+118 }\n+119 }\n+120 } else {\n+121 //\n+122 // This mimics the implementation in Hbr in terms of order of operations.\n+123 //\n+124 const Weight CATMARK_SMOOTH_TRI_EDGE_WEIGHT = (Weight) 0.470;\n+125\n+126 Weight f0Weight = face0IsTri ? CATMARK_SMOOTH_TRI_EDGE_WEIGHT : 0.25f;\n+127 Weight f1Weight = face1IsTri ? CATMARK_SMOOTH_TRI_EDGE_WEIGHT : 0.25f;\n+128\n+129 Weight fWeight = 0.5f * (f0Weight + f1Weight);\n+130 Weight vWeight = 0.5f * (1.0f - 2.0f * fWeight);\n+131\n+132 mask.VertexWeight(0) = vWeight;\n+133 mask.VertexWeight(1) = vWeight;\n+134\n+135 mask.FaceWeight(0) = fWeight;\n+136 mask.FaceWeight(1) = fWeight;\n+137 }\n+138}\n+139\n+140\n+141//\n+142// Masks for vertex-vertices: the hard Corner mask does not need to be\n+specialized\n+143// (simply the vertex itself), leaving the Crease and Smooth cases (Dart is\n+smooth):\n+144//\n+145template <>\n+146template <typename VERTEX, typename MASK>\n+147inline void\n+_\b1_\b4_\b8_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bC_\bA_\bT_\bM_\bA_\bR_\bK_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\br_\be_\ba_\bs_\be_\bM_\ba_\bs_\bk_\bF_\bo_\br_\bV_\be_\br_\bt_\be_\bx(VERTEX const& vertex,\n+MASK& mask,\n+149 int const creaseEnds[2]) const {\n+150 typedef typename MASK::Weight Weight;\n+151\n+152 int valence = vertex.GetNumEdges();\n+153\n+154 mask.SetNumVertexWeights(1);\n+155 mask.SetNumEdgeWeights(valence);\n+156 mask.SetNumFaceWeights(0);\n+157 mask.SetFaceWeightsForFaceCenters(false);\n+158\n+159 Weight vWeight = 0.75f;\n+160 Weight eWeight = 0.125f;\n+161\n+162 mask.VertexWeight(0) = vWeight;\n+163 for (int i = 0; i < valence; ++i) {\n+164 mask.EdgeWeight(i) = 0.0f;\n+165 }\n+166 mask.EdgeWeight(creaseEnds[0]) = eWeight;\n+167 mask.EdgeWeight(creaseEnds[1]) = eWeight;\n+168}\n+169\n+170template <>\n+171template <typename VERTEX, typename MASK>\n+172inline void\n+_\b1_\b7_\b3_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bC_\bA_\bT_\bM_\bA_\bR_\bK_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bS_\bm_\bo_\bo_\bt_\bh_\bM_\ba_\bs_\bk_\bF_\bo_\br_\bV_\be_\br_\bt_\be_\bx(VERTEX const& vertex,\n+MASK& mask) const {\n+174\n+175 typedef typename MASK::Weight Weight;\n+176\n+177 //\n+178 // A Smooth vertex must be manifold and interior -- manifold boundary\n+vertices will be\n+179 // Creases and non-manifold vertices of any kind will be Corners or\n+Creases. If smooth\n+180 // rules for non-manifold vertices are ever defined, this will need\n+adjusting:\n+181 //\n+182 assert(vertex.GetNumFaces() == vertex.GetNumEdges());\n+183\n+184 int valence = vertex.GetNumFaces();\n+185\n+186 mask.SetNumVertexWeights(1);\n+187 mask.SetNumEdgeWeights(valence);\n+188 mask.SetNumFaceWeights(valence);\n+189 mask.SetFaceWeightsForFaceCenters(true);\n+190\n+191 Weight vWeight = (Weight)(valence - 2) / (Weight)valence;\n+192 Weight fWeight = 1.0f / (Weight)(valence * valence);\n+193 Weight eWeight = fWeight;\n+194\n+195 mask.VertexWeight(0) = vWeight;\n+196 for (int i = 0; i < valence; ++i) {\n+197 mask.EdgeWeight(i) = eWeight;\n+198 mask.FaceWeight(i) = fWeight;\n+199 }\n+200}\n+201\n+202//\n+203// Limit masks for position:\n+204//\n+205template <>\n+206template <typename VERTEX, typename MASK>\n+207inline void\n+_\b2_\b0_\b8_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bC_\bA_\bT_\bM_\bA_\bR_\bK_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\br_\bn_\be_\br_\bL_\bi_\bm_\bi_\bt_\bM_\ba_\bs_\bk(VERTEX const& /* vertex */,\n+MASK& posMask) const {\n+209\n+210 posMask.SetNumVertexWeights(1);\n+211 posMask.SetNumEdgeWeights(0);\n+212 posMask.SetNumFaceWeights(0);\n+213 posMask.SetFaceWeightsForFaceCenters(false);\n+214\n+215 posMask.VertexWeight(0) = 1.0f;\n+216}\n+217\n+218template <>\n+219template <typename VERTEX, typename MASK>\n+220inline void\n+_\b2_\b2_\b1_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bC_\bA_\bT_\bM_\bA_\bR_\bK_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\br_\be_\ba_\bs_\be_\bL_\bi_\bm_\bi_\bt_\bM_\ba_\bs_\bk(VERTEX const& vertex, MASK&\n+posMask,\n+222 int const creaseEnds[2]) const {\n+223\n+224 typedef typename MASK::Weight Weight;\n+225\n+226 int valence = vertex.GetNumEdges();\n+227\n+228 posMask.SetNumVertexWeights(1);\n+229 posMask.SetNumEdgeWeights(valence);\n+230 posMask.SetNumFaceWeights(0);\n+231 posMask.SetFaceWeightsForFaceCenters(false);\n+232\n+233 Weight vWeight = (Weight)(2.0 / 3.0);\n+234 Weight eWeight = (Weight)(1.0 / 6.0);\n+235\n+236 posMask.VertexWeight(0) = vWeight;\n+237 for (int i = 0; i < valence; ++i) {\n+238 posMask.EdgeWeight(i) = 0.0f;\n+239 }\n+240 posMask.EdgeWeight(creaseEnds[0]) = eWeight;\n+241 posMask.EdgeWeight(creaseEnds[1]) = eWeight;\n+242}\n+243\n+244template <>\n+245template <typename VERTEX, typename MASK>\n+246inline void\n+_\b2_\b4_\b7_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bC_\bA_\bT_\bM_\bA_\bR_\bK_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bS_\bm_\bo_\bo_\bt_\bh_\bL_\bi_\bm_\bi_\bt_\bM_\ba_\bs_\bk(VERTEX const& vertex, MASK&\n+posMask) const {\n+248\n+249 typedef typename MASK::Weight Weight;\n+250\n+251 int valence = vertex.GetNumFaces();\n+252 if (valence == 2) {\n+253 assignCornerLimitMask(vertex, posMask);\n+254 return;\n+255 }\n+256\n+257 posMask.SetNumVertexWeights(1);\n+258 posMask.SetNumEdgeWeights(valence);\n+259 posMask.SetNumFaceWeights(valence);\n+260 posMask.SetFaceWeightsForFaceCenters(false);\n+261\n+262 // Specialize for the regular case:\n+263 if (valence == 4) {\n+264 Weight fWeight = (Weight)(1.0 / 36.0);\n+265 Weight eWeight = (Weight)(1.0 / 9.0);\n+266 Weight vWeight = (Weight)(4.0 / 9.0);\n+267\n+268 posMask.VertexWeight(0) = vWeight;\n+269\n+270 posMask.EdgeWeight(0) = eWeight;\n+271 posMask.EdgeWeight(1) = eWeight;\n+272 posMask.EdgeWeight(2) = eWeight;\n+273 posMask.EdgeWeight(3) = eWeight;\n+274\n+275 posMask.FaceWeight(0) = fWeight;\n+276 posMask.FaceWeight(1) = fWeight;\n+277 posMask.FaceWeight(2) = fWeight;\n+278 posMask.FaceWeight(3) = fWeight;\n+279 } else {\n+280 Weight Valence = (Weight) valence;\n+281\n+282 Weight fWeight = 1.0f / (Valence * (Valence + 5.0f));\n+283 Weight eWeight = 4.0f * fWeight;\n+284 Weight vWeight = 1.0f - Valence * (eWeight + fWeight);\n+285\n+286 posMask.VertexWeight(0) = vWeight;\n+287 for (int i = 0; i < valence; ++i) {\n+288 posMask.EdgeWeight(i) = eWeight;\n+289 posMask.FaceWeight(i) = fWeight;\n+290 }\n+291 }\n+292}\n+293\n+294//\n+295// Limit masks for tangents -- these are stubs for now, or have a temporary\n+296// implementation\n+297//\n+298template <>\n+299template <typename VERTEX, typename MASK>\n+300inline void\n+_\b3_\b0_\b1_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bC_\bA_\bT_\bM_\bA_\bR_\bK_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\br_\bn_\be_\br_\bL_\bi_\bm_\bi_\bt_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bM_\ba_\bs_\bk_\bs(VERTEX const& vertex,\n+302 MASK& tan1Mask, MASK& tan2Mask) const {\n+303\n+304 int valence = vertex.GetNumEdges();\n+305\n+306 tan1Mask.SetNumVertexWeights(1);\n+307 tan1Mask.SetNumEdgeWeights(valence);\n+308 tan1Mask.SetNumFaceWeights(0);\n+309 tan1Mask.SetFaceWeightsForFaceCenters(false);\n+310\n+311 tan2Mask.SetNumVertexWeights(1);\n+312 tan2Mask.SetNumEdgeWeights(valence);\n+313 tan2Mask.SetNumFaceWeights(0);\n+314 tan2Mask.SetFaceWeightsForFaceCenters(false);\n+315\n+316 // Should be at least 2 edges -- be sure to clear weights for any more:\n+317 tan1Mask.VertexWeight(0) = -1.0f;\n+318 tan1Mask.EdgeWeight(0) = 1.0f;\n+319 tan1Mask.EdgeWeight(1) = 0.0f;\n+320\n+321 tan2Mask.VertexWeight(0) = -1.0f;\n+322 tan2Mask.EdgeWeight(0) = 0.0f;\n+323 tan2Mask.EdgeWeight(1) = 1.0f;\n+324\n+325 for (int i = 2; i < valence; ++i) {\n+326 tan1Mask.EdgeWeight(i) = 0.0f;\n+327 tan2Mask.EdgeWeight(i) = 0.0f;\n+328 }\n+329}\n+330\n+331template <>\n+332template <typename VERTEX, typename MASK>\n+333inline void\n+_\b3_\b3_\b4_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bC_\bA_\bT_\bM_\bA_\bR_\bK_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\br_\be_\ba_\bs_\be_\bL_\bi_\bm_\bi_\bt_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bM_\ba_\bs_\bk_\bs(VERTEX const& vertex,\n+335 MASK& tan1Mask, MASK& tan2Mask, int const creaseEnds[2]) const {\n+336\n+337 typedef typename MASK::Weight Weight;\n+338\n+339 //\n+340 // First, the tangent along the crease:\n+341 // The first crease edge is considered the \"leading\" edge of the span\n+342 // of surface for which we are evaluating tangents and the second edge the\n+343 // \"trailing edge\". By convention, the tangent along the crease is oriented\n+344 // in the direction of the leading edge.\n+345 //\n+346 int numEdges = vertex.GetNumEdges();\n+347 int numFaces = vertex.GetNumFaces();\n+348\n+349 tan1Mask.SetNumVertexWeights(1);\n+350 tan1Mask.SetNumEdgeWeights(numEdges);\n+351 tan1Mask.SetNumFaceWeights(numFaces);\n+352 tan1Mask.SetFaceWeightsForFaceCenters(false);\n+353\n+354 tan1Mask.VertexWeight(0) = 0.0f;\n+355 for (int i = 0; i < numEdges; ++i) {\n+356 tan1Mask.EdgeWeight(i) = 0.0f;\n+357 }\n+358 for (int i = 0; i < numFaces; ++i) {\n+359 tan1Mask.FaceWeight(i) = 0.0f;\n+360 }\n+361\n+362 tan1Mask.EdgeWeight(creaseEnds[0]) = 0.5f;\n+363 tan1Mask.EdgeWeight(creaseEnds[1]) = -0.5f;\n+364\n+365 //\n+366 // Second, the tangent across the interior faces:\n+367 // Note this is ambiguous for an interior vertex. We currently return\n+368 // the tangent for the surface in the counter-clockwise span between the\n+369 // leading and trailing edges that form the crease. Given the expected\n+370 // computation of a surface normal as Tan1 X Tan2, this tangent should be\n+371 // oriented \"inward\" from the crease/boundary -- across the surface rather\n+372 // than outward and away from it.\n+373 //\n+374 tan2Mask.SetNumVertexWeights(1);\n+375 tan2Mask.SetNumEdgeWeights(numEdges);\n+376 tan2Mask.SetNumFaceWeights(numFaces);\n+377 tan2Mask.SetFaceWeightsForFaceCenters(false);\n+378\n+379 // Prepend weights of 0 preceding the crease:\n+380 for (int i = 0; i < creaseEnds[0]; ++i) {\n+381 tan2Mask.EdgeWeight(i) = 0.0f;\n+382 tan2Mask.FaceWeight(i) = 0.0f;\n+383 }\n+384\n+385 // Assign weights to crease edge and interior points:\n+386 int interiorEdgeCount = creaseEnds[1] - creaseEnds[0] - 1;\n+387 if (interiorEdgeCount == 1) {\n+388 // The regular case -- uniform B-spline cross-tangent:\n+389\n+390 tan2Mask.VertexWeight(0) = (Weight)(-4.0 / 6.0);\n+391\n+392 tan2Mask.EdgeWeight(creaseEnds[0]) = (Weight)(-1.0 / 6.0);\n+393 tan2Mask.EdgeWeight(creaseEnds[0] + 1) = (Weight)( 4.0 / 6.0);\n+394 tan2Mask.EdgeWeight(creaseEnds[1]) = (Weight)(-1.0 / 6.0);\n+395\n+396 tan2Mask.FaceWeight(creaseEnds[0]) = (Weight)(1.0 / 6.0);\n+397 tan2Mask.FaceWeight(creaseEnds[0] + 1) = (Weight)(1.0 / 6.0);\n+398 } else if (interiorEdgeCount > 1) {\n+399 // The irregular case -- formulae from Biermann et al:\n+400\n+401 double k = (double) (interiorEdgeCount + 1);\n+402 double theta = M_PI / k;\n+403\n+404 double cosTheta = std::cos(theta);\n+405 double sinTheta = std::sin(theta);\n+406\n+407 // Loop/Schaefer use a different divisor here (3*k + cos(theta)):\n+408 double commonDenom = 1.0f / (k * (3.0f + cosTheta));\n+409 double R = (cosTheta + 1.0f) / sinTheta;\n+410\n+411 double vertexWeight = 4.0f * R * (cosTheta - 1.0f);\n+412 double creaseWeight = -R * (1.0f + 2.0f * cosTheta);\n+413\n+414 tan2Mask.VertexWeight(0) = (Weight) (vertexWeight * commonDenom);\n+415\n+416 tan2Mask.EdgeWeight(creaseEnds[0]) = (Weight) (creaseWeight * commonDenom);\n+417 tan2Mask.EdgeWeight(creaseEnds[1]) = (Weight) (creaseWeight * commonDenom);\n+418\n+419 tan2Mask.FaceWeight(creaseEnds[0]) = (Weight) (sinTheta * commonDenom);\n+420\n+421 double sinThetaI = 0.0f;\n+422 double sinThetaIplus1 = sinTheta;\n+423 for (int i = 1; i < k; ++i) {\n+424 sinThetaI = sinThetaIplus1;\n+425 sinThetaIplus1 = std::sin((i+1)*theta);\n+426\n+427 tan2Mask.EdgeWeight(creaseEnds[0] + i) = (Weight) ((4.0f * sinThetaI) *\n+commonDenom);\n+428 tan2Mask.FaceWeight(creaseEnds[0] + i) = (Weight) ((sinThetaI +\n+sinThetaIplus1) * commonDenom);\n+429 }\n+430 } else {\n+431 // Special case for a single face -- simple average of boundary edges:\n+432\n+433 tan2Mask.VertexWeight(0) = -6.0f;\n+434\n+435 tan2Mask.EdgeWeight(creaseEnds[0]) = 3.0f;\n+436 tan2Mask.EdgeWeight(creaseEnds[1]) = 3.0f;\n+437\n+438 tan2Mask.FaceWeight(creaseEnds[0]) = 0.0f;\n+439 }\n+440\n+441 // Append weights of 0 following the crease:\n+442 for (int i = creaseEnds[1]; i < numFaces; ++i) {\n+443 tan2Mask.FaceWeight(i) = 0.0f;\n+444 }\n+445 for (int i = creaseEnds[1] + 1; i < numEdges; ++i) {\n+446 tan2Mask.EdgeWeight(i) = 0.0f;\n+447 }\n+448}\n+449\n+450template <>\n+451template <typename VERTEX, typename MASK>\n+452inline void\n+_\b4_\b5_\b3_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bC_\bA_\bT_\bM_\bA_\bR_\bK_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bS_\bm_\bo_\bo_\bt_\bh_\bL_\bi_\bm_\bi_\bt_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bM_\ba_\bs_\bk_\bs(VERTEX const& vertex,\n+454 MASK& tan1Mask, MASK& tan2Mask) const {\n+455\n+456 typedef typename MASK::Weight Weight;\n+457\n+458 int valence = vertex.GetNumFaces();\n+459 if (valence == 2) {\n+460 assignCornerLimitTangentMasks(vertex, tan1Mask, tan2Mask);\n+461 return;\n+462 }\n+463\n+464 // Compute tan1 initially -- tan2 is simply a rotation:\n+465 tan1Mask.SetNumVertexWeights(1);\n+466 tan1Mask.SetNumEdgeWeights(valence);\n+467 tan1Mask.SetNumFaceWeights(valence);\n+468 tan1Mask.SetFaceWeightsForFaceCenters(false);\n+469\n+470 tan1Mask.VertexWeight(0) = 0.0f;\n+471\n+472 if (valence == 4) {\n+473 tan1Mask.EdgeWeight(0) = 4.0f;\n+474 tan1Mask.EdgeWeight(1) = 0.0f;\n+475 tan1Mask.EdgeWeight(2) = -4.0f;\n+476 tan1Mask.EdgeWeight(3) = 0.0f;\n+477\n+478 tan1Mask.FaceWeight(0) = 1.0f;\n+479 tan1Mask.FaceWeight(1) = -1.0f;\n+480 tan1Mask.FaceWeight(2) = -1.0f;\n+481 tan1Mask.FaceWeight(3) = 1.0f;\n+482 } else {\n+483 double theta = 2.0f * M_PI / (double)valence;\n+484\n+485 double cosTheta = std::cos(theta);\n+486 double cosHalfTheta = std::cos(theta * 0.5f);\n+487\n+488 double lambda = (5.0 / 16.0) + (1.0 / 16.0) *\n+489 (cosTheta + cosHalfTheta * std::sqrt(2.0f * (9.0f + cosTheta)));\n+490\n+491 double edgeWeightScale = 4.0f;\n+492 double faceWeightScale = 1.0f / (4.0f * lambda - 1.0f);\n+493\n+494 for (int i = 0; i < valence; ++i) {\n+495 double cosThetaI = std::cos( i * theta);\n+496 double cosThetaIplus1 = std::cos((i+1)* theta);\n+497\n+498 tan1Mask.EdgeWeight(i) = (Weight) (edgeWeightScale * cosThetaI);\n+499 tan1Mask.FaceWeight(i) = (Weight) (faceWeightScale * (cosThetaI +\n+cosThetaIplus1));\n+500 }\n+501 }\n+502\n+503 // Now rotate/copy tan1 weights to tan2:\n+504 tan2Mask.SetNumVertexWeights(1);\n+505 tan2Mask.SetNumEdgeWeights(valence);\n+506 tan2Mask.SetNumFaceWeights(valence);\n+507 tan2Mask.SetFaceWeightsForFaceCenters(false);\n+508\n+509 tan2Mask.VertexWeight(0) = 0.0f;\n+510 if (valence == 4) {\n+511 tan2Mask.EdgeWeight(0) = 0.0f;\n+512 tan2Mask.EdgeWeight(1) = 4.0f;\n+513 tan2Mask.EdgeWeight(2) = 0.0f;\n+514 tan2Mask.EdgeWeight(3) = -4.0f;\n+515\n+516 tan2Mask.FaceWeight(0) = 1.0f;\n+517 tan2Mask.FaceWeight(1) = 1.0f;\n+518 tan2Mask.FaceWeight(2) = -1.0f;\n+519 tan2Mask.FaceWeight(3) = -1.0f;\n+520 } else {\n+521 tan2Mask.EdgeWeight(0) = tan1Mask.EdgeWeight(valence-1);\n+522 tan2Mask.FaceWeight(0) = tan1Mask.FaceWeight(valence-1);\n+523 for (int i = 1; i < valence; ++i) {\n+524 tan2Mask.EdgeWeight(i) = tan1Mask.EdgeWeight(i-1);\n+525 tan2Mask.FaceWeight(i) = tan1Mask.FaceWeight(i-1);\n+526 }\n+527 }\n+528}\n+529\n+530} // end namespace sdc\n+531\n+532} // end namespace OPENSUBDIV_VERSION\n+533using namespace OPENSUBDIV_VERSION;\n+534} // end namespace OpenSubdiv\n+535\n+536#endif /* OPENSUBDIV3_SDC_CATMARK_SCHEME_H */\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n-BufferDescriptor is a struct which describes buffer elements in interleaved\n-data buffers....\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b6_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bs_\bt_\br_\bi_\bd_\be\n-int stride\n-stride to the next element\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b1_\b0_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bR_\be_\bs_\be_\bt\n-void Reset()\n-Resets the descriptor to default.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b8_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n-BufferDescriptor()\n-Default Constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b6_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n-BufferDescriptor(int o, int l, int s)\n-Constructor.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b6_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bl_\be_\bn_\bg_\bt_\bh\n-int length\n-number or length of the data\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b1_\b0_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b!_\b=\n-bool operator!=(BufferDescriptor const &other) const\n-True if the descriptors are not identical.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b9_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=_\b=\n-bool operator==(BufferDescriptor const &other) const\n-True if the descriptors are identical.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b8_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bI_\bs_\bV_\ba_\bl_\bi_\bd\n-bool IsValid() const\n-True if the descriptor values are internally consistent.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b7_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bO_\bf_\bf_\bs_\be_\bt\n-int GetLocalOffset() const\n-Returns the relative offset within a stride.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b7_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bo_\bf_\bf_\bs_\be_\bt\n-int offset\n-offset to desired element data\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b9_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bp_\bl_\bi_\bt\n+Split\n+Enumerated type for all face splitting schemes.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b4_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bP_\bL_\bI_\bT_\b__\bT_\bO_\b__\bQ_\bU_\bA_\bD_\bS\n+@ SPLIT_TO_QUADS\n+Used by Catmark and Bilinear.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b4_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bT_\bR_\bI_\b__\bS_\bU_\bB_\b__\bS_\bM_\bO_\bO_\bT_\bH\n+@ TRI_SUB_SMOOTH\n+\"smooth triangle\" weights (Catmark scheme only)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b7_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bS_\bm_\bo_\bo_\bt_\bh_\bM_\ba_\bs_\bk_\bF_\bo_\br_\bE_\bd_\bg_\be\n+void assignSmoothMaskForEdge(EDGE const &edge, MASK &mask) const\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bG_\be_\bt_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\bi_\bc_\ba_\bl_\bS_\bp_\bl_\bi_\bt_\bT_\by_\bp_\be\n+static Split GetTopologicalSplitType()\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\br_\be_\ba_\bs_\be_\bM_\ba_\bs_\bk_\bF_\bo_\br_\bV_\be_\br_\bt_\be_\bx\n+void assignCreaseMaskForVertex(VERTEX const &edge, MASK &mask, int const\n+creaseEnds[2]) const\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\br_\be_\ba_\bs_\be_\bL_\bi_\bm_\bi_\bt_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bM_\ba_\bs_\bk_\bs\n+void assignCreaseLimitTangentMasks(VERTEX const &vertex, MASK &tan1, MASK\n+&tan2, int const creaseEnds[2]) const\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bG_\be_\bt_\bR_\be_\bg_\bu_\bl_\ba_\br_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be\n+static int GetRegularFaceSize()\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bS_\bm_\bo_\bo_\bt_\bh_\bL_\bi_\bm_\bi_\bt_\bM_\ba_\bs_\bk\n+void assignSmoothLimitMask(VERTEX const &vertex, MASK &pos) const\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bh_\bo_\bo_\bd_\bS_\bi_\bz_\be\n+static int GetLocalNeighborhoodSize()\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\br_\be_\ba_\bs_\be_\bL_\bi_\bm_\bi_\bt_\bM_\ba_\bs_\bk\n+void assignCreaseLimitMask(VERTEX const &vertex, MASK &pos, int const\n+creaseEnds[2]) const\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bS_\bm_\bo_\bo_\bt_\bh_\bM_\ba_\bs_\bk_\bF_\bo_\br_\bV_\be_\br_\bt_\be_\bx\n+void assignSmoothMaskForVertex(VERTEX const &edge, MASK &mask) const\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bG_\be_\bt_\bR_\be_\bg_\bu_\bl_\ba_\br_\bV_\be_\br_\bt_\be_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be\n+static int GetRegularVertexValence()\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bS_\bm_\bo_\bo_\bt_\bh_\bL_\bi_\bm_\bi_\bt_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bM_\ba_\bs_\bk_\bs\n+void assignSmoothLimitTangentMasks(VERTEX const &vertex, MASK &tan1, MASK\n+&tan2) const\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\br_\bn_\be_\br_\bL_\bi_\bm_\bi_\bt_\bM_\ba_\bs_\bk\n+void assignCornerLimitMask(VERTEX const &vertex, MASK &pos) const\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\br_\bn_\be_\br_\bL_\bi_\bm_\bi_\bt_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bM_\ba_\bs_\bk_\bs\n+void assignCornerLimitTangentMasks(VERTEX const &vertex, MASK &tan1, MASK\n+&tan2) const\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh\n+    * _\bs_\bd_\bc\n+    * _\bc_\ba_\bt_\bm_\ba_\br_\bk_\bS_\bc_\bh_\be_\bm_\be_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00869.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00869.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/glVertexBuffer.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/sdc/crease.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -90,42 +90,41 @@\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> &#124;\n <a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">glVertexBuffer.h File Reference</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">crease.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00842_source.html\">../osd/opengl.h</a>&quot;</code><br />\n-<code>#include &lt;cstddef&gt;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00860_source.html\">../sdc/options.h</a>&quot;</code><br />\n </div>\n <p><a href=\"a00869_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01245.html\">GLVertexBuffer</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Concrete vertex buffer class for GLSL subdivision and OpenGL drawing.  <a href=\"a01245.html#details\">More...</a><br /></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01333.html\">Crease</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Types, constants and utilities related to semi-sharp creasing &ndash; whose implementation is independent of the subdivision scheme.  <a href=\"a01333.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n+<tr class=\"memitem:a00913\" id=\"r_a00913\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00913.html\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00869.html\">glVertexBuffer.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_f61368944c63c2c1f8c69bc232e59c39.html\">sdc</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00869.html\">crease.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,26 +1,25 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-glVertexBuffer.h File Reference\n+crease.h File Reference\n #include \"../version.h\"\n-#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bo_\bp_\be_\bn_\bg_\bl_\b._\bh\"\n-#include <cstddef>\n+#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-\u00a0       Concrete vertex buffer class for GLSL subdivision and OpenGL drawing.\n-        _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bC_\br_\be_\ba_\bs_\be\n+\u00a0       Types, constants and utilities related to semi-sharp creasing \u2013 whose\n+        implementation is independent of the subdivision scheme. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bg_\bl_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh\n+    * _\bs_\bd_\bc\n+    * _\bc_\br_\be_\ba_\bs_\be_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00869.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00869.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,3 +1,3 @@\n var a00869 = [\n-    [\"GLVertexBuffer\", \"a01245.html\", \"a01245\"]\n+    [\"Crease\", \"a01333.html\", \"a01333\"]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00869_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00869_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/glVertexBuffer.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/sdc/crease.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">glVertexBuffer.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">crease.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00869.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2013 Pixar</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2014 DreamWorks Animation LLC.</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -118,79 +118,221 @@\n <div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_GL_VERTEX_BUFFER_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_GL_VERTEX_BUFFER_H</span></div>\n-<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n-<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../osd/opengl.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &lt;cstddef&gt;</span></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span> </div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n+<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_SDC_CREASE_H</span></div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#define OPENSUBDIV3_SDC_CREASE_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span> </div>\n+<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span> </div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#include &quot;../sdc/options.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span> </div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">namespace </span>Sdc {</div>\n <div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span> </div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"keyword\">namespace </span>Osd {</div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00044\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01245.html\">   44</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01245.html\">GLVertexBuffer</a> {</div>\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01245.html#abfb3fc6fd2278633f65442db6528c926\">   47</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01245.html\">GLVertexBuffer</a> * <a class=\"code hl_function\" href=\"a01245.html#abfb3fc6fd2278633f65442db6528c926\">Create</a>(<span class=\"keywordtype\">int</span> numElements, <span class=\"keywordtype\">int</span> numVertices,</div>\n-<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span>                                   <span class=\"keywordtype\">void</span> *deviceContext = NULL);</div>\n-<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span> </div>\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01245.html#a2629b06f77082d1c67c50b03be4e465a\">   51</a></span>    <a class=\"code hl_function\" href=\"a01245.html#a2629b06f77082d1c67c50b03be4e465a\">~GLVertexBuffer</a>();</div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span> </div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01245.html#a96601a091f8831823c4dd72b6c962f1b\">   55</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01245.html#a96601a091f8831823c4dd72b6c962f1b\">UpdateData</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <span class=\"keywordtype\">int</span> startVertex, <span class=\"keywordtype\">int</span> numVertices,</div>\n-<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span>                    <span class=\"keywordtype\">void</span> *deviceContext = NULL);</div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span> </div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01245.html#a77cee40767fd4936f20a8f9d9d9ea625\">   59</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01245.html#a77cee40767fd4936f20a8f9d9d9ea625\">GetNumElements</a>() <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span> </div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01245.html#aaf4a32b8a414eff77000c584c2015cb7\">   62</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01245.html#aaf4a32b8a414eff77000c584c2015cb7\">GetNumVertices</a>() <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span> </div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01245.html#a6a642b61f5cf7ced73523798467735a5\">   65</a></span>    GLuint <a class=\"code hl_function\" href=\"a01245.html#a6a642b61f5cf7ced73523798467735a5\">BindVBO</a>(<span class=\"keywordtype\">void</span> *deviceContext = NULL);</div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span> </div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span><span class=\"keyword\">protected</span>:</div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01245.html#aa6f38a53fba4a64d600b9c4695477049\">   69</a></span>    <a class=\"code hl_function\" href=\"a01245.html#aa6f38a53fba4a64d600b9c4695477049\">GLVertexBuffer</a>(<span class=\"keywordtype\">int</span> numElements, <span class=\"keywordtype\">int</span> numVertices);</div>\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span> </div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01245.html#add23d9f5bbc918076d240287a9b3664f\">   73</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01245.html#add23d9f5bbc918076d240287a9b3664f\">allocate</a>();</div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span> </div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span>    <span class=\"keywordtype\">int</span> _numElements;</div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span>    <span class=\"keywordtype\">int</span> _numVertices;</div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span>    GLuint _vbo;</div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span> </div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>}  <span class=\"comment\">// end namespace Osd</span></div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span> </div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>}  <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span> </div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>}  <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span> </div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_GL_VERTEX_BUFFER_H</span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa01245_html\"><div class=\"ttname\"><a href=\"a01245.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLVertexBuffer</a></div><div class=\"ttdoc\">Concrete vertex buffer class for GLSL subdivision and OpenGL drawing.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00869_source.html#l00044\">glVertexBuffer.h:44</a></div></div>\n-<div class=\"ttc\" id=\"aa01245_html_a2629b06f77082d1c67c50b03be4e465a\"><div class=\"ttname\"><a href=\"a01245.html#a2629b06f77082d1c67c50b03be4e465a\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLVertexBuffer::~GLVertexBuffer</a></div><div class=\"ttdeci\">~GLVertexBuffer()</div><div class=\"ttdoc\">Destructor.</div></div>\n-<div class=\"ttc\" id=\"aa01245_html_a6a642b61f5cf7ced73523798467735a5\"><div class=\"ttname\"><a href=\"a01245.html#a6a642b61f5cf7ced73523798467735a5\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLVertexBuffer::BindVBO</a></div><div class=\"ttdeci\">GLuint BindVBO(void *deviceContext=NULL)</div><div class=\"ttdoc\">Returns the GL buffer object.</div></div>\n-<div class=\"ttc\" id=\"aa01245_html_a77cee40767fd4936f20a8f9d9d9ea625\"><div class=\"ttname\"><a href=\"a01245.html#a77cee40767fd4936f20a8f9d9d9ea625\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLVertexBuffer::GetNumElements</a></div><div class=\"ttdeci\">int GetNumElements() const</div><div class=\"ttdoc\">Returns how many elements defined in this vertex buffer.</div></div>\n-<div class=\"ttc\" id=\"aa01245_html_a96601a091f8831823c4dd72b6c962f1b\"><div class=\"ttname\"><a href=\"a01245.html#a96601a091f8831823c4dd72b6c962f1b\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLVertexBuffer::UpdateData</a></div><div class=\"ttdeci\">void UpdateData(const float *src, int startVertex, int numVertices, void *deviceContext=NULL)</div></div>\n-<div class=\"ttc\" id=\"aa01245_html_aa6f38a53fba4a64d600b9c4695477049\"><div class=\"ttname\"><a href=\"a01245.html#aa6f38a53fba4a64d600b9c4695477049\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLVertexBuffer::GLVertexBuffer</a></div><div class=\"ttdeci\">GLVertexBuffer(int numElements, int numVertices)</div><div class=\"ttdoc\">Constructor.</div></div>\n-<div class=\"ttc\" id=\"aa01245_html_aaf4a32b8a414eff77000c584c2015cb7\"><div class=\"ttname\"><a href=\"a01245.html#aaf4a32b8a414eff77000c584c2015cb7\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLVertexBuffer::GetNumVertices</a></div><div class=\"ttdeci\">int GetNumVertices() const</div><div class=\"ttdoc\">Returns how many vertices allocated in this vertex buffer.</div></div>\n-<div class=\"ttc\" id=\"aa01245_html_abfb3fc6fd2278633f65442db6528c926\"><div class=\"ttname\"><a href=\"a01245.html#abfb3fc6fd2278633f65442db6528c926\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLVertexBuffer::Create</a></div><div class=\"ttdeci\">static GLVertexBuffer * Create(int numElements, int numVertices, void *deviceContext=NULL)</div><div class=\"ttdoc\">Creator. Returns NULL if error.</div></div>\n-<div class=\"ttc\" id=\"aa01245_html_add23d9f5bbc918076d240287a9b3664f\"><div class=\"ttname\"><a href=\"a01245.html#add23d9f5bbc918076d240287a9b3664f\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLVertexBuffer::allocate</a></div><div class=\"ttdeci\">bool allocate()</div></div>\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00062\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01333.html\">   62</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01333.html\">Crease</a> {</div>\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span> </div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01333.html#a2f54449f8a8ca460b0ad468b1aa1b4e0\">   67</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> <a class=\"code hl_variable\" href=\"a01333.html#a2f54449f8a8ca460b0ad468b1aa1b4e0\">SHARPNESS_SMOOTH</a>;    <span class=\"comment\">// =  0.0f, do we really need this?</span></div>\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01333.html#a3bd7c586b7bf49ac3b1053ba789dae07\">   68</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> <a class=\"code hl_variable\" href=\"a01333.html#a3bd7c586b7bf49ac3b1053ba789dae07\">SHARPNESS_INFINITE</a>;  <span class=\"comment\">// = 10.0f;</span></div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span> </div>\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01333.html#a4620253f6da5407f55c2b95a727e0f03\">   70</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01333.html#a4620253f6da5407f55c2b95a727e0f03\">IsSmooth</a>(<span class=\"keywordtype\">float</span> sharpness)    { <span class=\"keywordflow\">return</span> sharpness &lt;= <a class=\"code hl_variable\" href=\"a01333.html#a2f54449f8a8ca460b0ad468b1aa1b4e0\">SHARPNESS_SMOOTH</a>; }</div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01333.html#ac9bfeebd44b0e47bb06c119c3b4ed750\">   71</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01333.html#ac9bfeebd44b0e47bb06c119c3b4ed750\">IsSharp</a>(<span class=\"keywordtype\">float</span> sharpness)     { <span class=\"keywordflow\">return</span> sharpness &gt; <a class=\"code hl_variable\" href=\"a01333.html#a2f54449f8a8ca460b0ad468b1aa1b4e0\">SHARPNESS_SMOOTH</a>; }</div>\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01333.html#a0538e02ac31e9f1118abdd1f272e7982\">   72</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01333.html#a0538e02ac31e9f1118abdd1f272e7982\">IsInfinite</a>(<span class=\"keywordtype\">float</span> sharpness)  { <span class=\"keywordflow\">return</span> sharpness &gt;= <a class=\"code hl_variable\" href=\"a01333.html#a3bd7c586b7bf49ac3b1053ba789dae07\">SHARPNESS_INFINITE</a>; }</div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01333.html#a694f45be997ab00786d1b80f5bd39d8f\">   73</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01333.html#a694f45be997ab00786d1b80f5bd39d8f\">IsSemiSharp</a>(<span class=\"keywordtype\">float</span> sharpness) { <span class=\"keywordflow\">return</span> (<a class=\"code hl_variable\" href=\"a01333.html#a2f54449f8a8ca460b0ad468b1aa1b4e0\">SHARPNESS_SMOOTH</a> &lt; sharpness) &amp;&amp; (sharpness &lt; <a class=\"code hl_variable\" href=\"a01333.html#a3bd7c586b7bf49ac3b1053ba789dae07\">SHARPNESS_INFINITE</a>); }</div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00082\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78\">   82</a></span>    <span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78\">Rule</a> {</div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78ab299aefb26013a79d52191a7887fea53\">   83</a></span>        <a class=\"code hl_enumvalue\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78ab299aefb26013a79d52191a7887fea53\">RULE_UNKNOWN</a> = 0,</div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78a61d137f866997ed3693e3fcad76def5f\">   84</a></span>        <a class=\"code hl_enumvalue\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78a61d137f866997ed3693e3fcad76def5f\">RULE_SMOOTH</a>  = (1 &lt;&lt; 0),</div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78a43469c29d8579a63bc1d6247d2624799\">   85</a></span>        <a class=\"code hl_enumvalue\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78a43469c29d8579a63bc1d6247d2624799\">RULE_DART</a>    = (1 &lt;&lt; 1),</div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78a966fa1ae8aeb8587c498cf6a92cc3335\">   86</a></span>        <a class=\"code hl_enumvalue\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78a966fa1ae8aeb8587c498cf6a92cc3335\">RULE_CREASE</a>  = (1 &lt;&lt; 2),</div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>        <a class=\"code hl_enumvalue\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78a27ed0595212af48db763e461bfdc29ef\">RULE_CORNER</a>  = (1 &lt;&lt; 3)</div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78a27ed0595212af48db763e461bfdc29ef\">   88</a></span>    };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span> </div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01333.html#a9659c3f2c73b80d9dc22763a6054079b\">   91</a></span>    <a class=\"code hl_function\" href=\"a01333.html#a9659c3f2c73b80d9dc22763a6054079b\">Crease</a>() : _options() { }</div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01333.html#a75d5d7e54170ccf6481932916e0fa9c1\">   92</a></span>    <a class=\"code hl_function\" href=\"a01333.html#a75d5d7e54170ccf6481932916e0fa9c1\">Crease</a>(<a class=\"code hl_class\" href=\"a01337.html\">Options</a> <span class=\"keyword\">const</span>&amp; options) : _options(options) { }</div>\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01333.html#af6737d6f9be18766c7a993cc9da108a8\">   93</a></span>    <a class=\"code hl_function\" href=\"a01333.html#af6737d6f9be18766c7a993cc9da108a8\">~Crease</a>() { }</div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span> </div>\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01333.html#a5dfa6810f510fac1ec621fc9e6b530c4\">   95</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01333.html#a5dfa6810f510fac1ec621fc9e6b530c4\">IsUniform</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _options.<a class=\"code hl_function\" href=\"a01337.html#a17dfce050325c0054b6e2fa422cb62b1\">GetCreasingMethod</a>() == <a class=\"code hl_enumvalue\" href=\"a01337.html#a16ec522dc0398bf1435a912cd669ffb0a10f2956db48d2975424be2e52ebd544d\">Options::CREASE_UNIFORM</a>; }</div>\n+<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span> </div>\n+<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span> </div>\n+<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"a01333.html#aa4ac191c71a85e2929036f27377fea59\">SharpenBoundaryEdge</a>(<span class=\"keywordtype\">float</span> edgeSharpness) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"a01333.html#a121d7a72bfdf61c89df7447a52ffb848\">SharpenBoundaryVertex</a>(<span class=\"keywordtype\">float</span> edgeSharpness) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span> </div>\n+<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span>    <span class=\"comment\">//  For future consideration</span></div>\n+<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span>    <span class=\"comment\">//float SharpenNonManifoldEdge(float edgeSharpness) const;</span></div>\n+<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span>    <span class=\"comment\">//float SharpenNonManifoldVertex(float edgeSharpness) const;</span></div>\n+<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span> </div>\n+<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span> </div>\n+<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"a01333.html#a7e5126bd5cff203bcea84ef35845fb40\">SubdivideUniformSharpness</a>(<span class=\"keywordtype\">float</span> vertexOrEdgeSharpness) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span> </div>\n+<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"a01333.html#a03f4bc921d6ee6fad4440ac134e92e36\">SubdivideVertexSharpness</a>(<span class=\"keywordtype\">float</span> vertexSharpness) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span> </div>\n+<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01333.html#ab37ffb609adbeb8b5b8242b572d4d0de\">  128</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"a01333.html#ab37ffb609adbeb8b5b8242b572d4d0de\">SubdivideEdgeSharpnessAtVertex</a>(<span class=\"keywordtype\">float</span>        edgeSharpness,</div>\n+<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span>                                         <span class=\"keywordtype\">int</span>          incidentEdgeCountAtEndVertex,</div>\n+<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span>                                         <span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span>* edgeSharpnessAroundEndVertex) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\">  131</span> </div>\n+<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01333.html#a7c27382a0be83617c49b8587ba75b438\">  132</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01333.html#a7c27382a0be83617c49b8587ba75b438\">SubdivideEdgeSharpnessesAroundVertex</a>(<span class=\"keywordtype\">int</span>          incidentEdgeCountAtVertex,</div>\n+<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\">  133</span>                                              <span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span>* incidentEdgeSharpnessAroundVertex,</div>\n+<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\">  134</span>                                              <span class=\"keywordtype\">float</span>*       childEdgesSharpnessAroundVertex) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\">  136</span> </div>\n+<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\">  138</span> </div>\n+<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01333.html#a41ebb75d28c5973328e0e3883495aeba\">  144</a></span>    <a class=\"code hl_enumeration\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78\">Rule</a> <a class=\"code hl_function\" href=\"a01333.html#a41ebb75d28c5973328e0e3883495aeba\">DetermineVertexVertexRule</a>(<span class=\"keywordtype\">float</span>        vertexSharpness,</div>\n+<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\">  145</span>                                   <span class=\"keywordtype\">int</span>          incidentEdgeCount,</div>\n+<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\">  146</span>                                   <span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span>* incidentEdgeSharpness) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01333.html#a500fadaa8cec78ab9690ad7331dba3d6\">  147</a></span>    <a class=\"code hl_enumeration\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78\">Rule</a> <a class=\"code hl_function\" href=\"a01333.html#a500fadaa8cec78ab9690ad7331dba3d6\">DetermineVertexVertexRule</a>(<span class=\"keywordtype\">float</span>        vertexSharpness,</div>\n+<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\">  148</span>                                   <span class=\"keywordtype\">int</span>          sharpEdgeCount) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\">  150</span> </div>\n+<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01333.html#ab13f654f25ef7628396fd902291b8f96\">  162</a></span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"a01333.html#ab13f654f25ef7628396fd902291b8f96\">ComputeFractionalWeightAtVertex</a>(<span class=\"keywordtype\">float</span>        vertexSharpness,</div>\n+<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\">  163</span>                                          <span class=\"keywordtype\">float</span>        childVertexSharpness,</div>\n+<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\">  164</span>                                          <span class=\"keywordtype\">int</span>          incidentEdgeCount,</div>\n+<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\">  165</span>                                          <span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span>* incidentEdgeSharpness,</div>\n+<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\">  166</span>                                          <span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span>* childEdgesSharpness) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\">  167</span> </div>\n+<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\">  168</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01333.html#a362f22e7cba1a0b9f63e9b007c19f296\">GetSharpEdgePairOfCrease</a>(<span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * incidentEdgeSharpness,</div>\n+<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\">  169</span>                                  <span class=\"keywordtype\">int</span>           incidentEdgeCount,</div>\n+<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\">  170</span>                                  <span class=\"keywordtype\">int</span>           sharpEdgePair[2]) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span> </div>\n+<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\">  172</span>    <span class=\"comment\">//  Would these really help?  Maybe only need Rules for the vertex-vertex case...</span></div>\n+<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\">  173</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\">  174</span>    <span class=\"comment\">//  Rule DetermineEdgeVertexRule(float parentEdgeSharpness) const;</span></div>\n+<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\">  175</span>    <span class=\"comment\">//  Rule DetermineEdgeVertexRule(float childEdge1Sharpness, float childEdge2Sharpness) const;</span></div>\n+<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\">  176</span> </div>\n+<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span><span class=\"keyword\">protected</span>:</div>\n+<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\">  178</span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"a01333.html#a453a232c0edcafd9d484197d46ed39ec\">decrementSharpness</a>(<span class=\"keywordtype\">float</span> sharpness) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\">  179</span> </div>\n+<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\">  180</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\">  181</span>    <a class=\"code hl_class\" href=\"a01337.html\">Options</a> _options;</div>\n+<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\">  182</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\">  183</span> </div>\n+<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\">  184</span> </div>\n+<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\">  185</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\">  186</span><span class=\"comment\">//  Inline declarations:</span></div>\n+<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\">  187</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\">  188</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">float</span></div>\n+<div class=\"foldopen\" id=\"foldopen00189\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01333.html#aa4ac191c71a85e2929036f27377fea59\">  189</a></span><a class=\"code hl_function\" href=\"a01333.html#aa4ac191c71a85e2929036f27377fea59\">Crease::SharpenBoundaryEdge</a>(<span class=\"keywordtype\">float</span> <span class=\"comment\">/* edgeSharpness */</span>)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\">  190</span> </div>\n+<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\">  191</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\">  192</span>    <span class=\"comment\">//  Despite the presence of the BOUNDARY_NONE option, boundary edges are always sharpened.</span></div>\n+<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\">  193</span>    <span class=\"comment\">//  Much of the code relies on sharpness to indicate boundaries to avoid the more complex</span></div>\n+<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\">  194</span>    <span class=\"comment\">//  topological inspection</span></div>\n+<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\">  195</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\">  196</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01333.html#a3bd7c586b7bf49ac3b1053ba789dae07\">SHARPNESS_INFINITE</a>;</div>\n+<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\">  197</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\">  198</span> </div>\n+<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\">  199</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">float</span></div>\n+<div class=\"foldopen\" id=\"foldopen00200\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01333.html#a121d7a72bfdf61c89df7447a52ffb848\">  200</a></span><a class=\"code hl_function\" href=\"a01333.html#a121d7a72bfdf61c89df7447a52ffb848\">Crease::SharpenBoundaryVertex</a>(<span class=\"keywordtype\">float</span> vertexSharpness)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\">  201</span> </div>\n+<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\">  202</span>    <span class=\"keywordflow\">return</span> (_options.<a class=\"code hl_function\" href=\"a01337.html#a590338ee8b544306b970a0c1445cd01f\">GetVtxBoundaryInterpolation</a>() == <a class=\"code hl_enumvalue\" href=\"a01337.html#acbf78f1a6abfc8db080ef7fb3c3f417eac6e5f52f358d3b6d62cc2b708a5a8757\">Options::VTX_BOUNDARY_EDGE_AND_CORNER</a>) ?</div>\n+<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\">  203</span>            <a class=\"code hl_variable\" href=\"a01333.html#a3bd7c586b7bf49ac3b1053ba789dae07\">SHARPNESS_INFINITE</a> : vertexSharpness;</div>\n+<div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\">  204</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\">  205</span> </div>\n+<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\">  206</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">float</span></div>\n+<div class=\"foldopen\" id=\"foldopen00207\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01333.html#a453a232c0edcafd9d484197d46ed39ec\">  207</a></span><a class=\"code hl_function\" href=\"a01333.html#a453a232c0edcafd9d484197d46ed39ec\">Crease::decrementSharpness</a>(<span class=\"keywordtype\">float</span> sharpness)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\">  208</span> </div>\n+<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\">  209</span>    <span class=\"keywordflow\">if</span> (<a class=\"code hl_function\" href=\"a01333.html#a4620253f6da5407f55c2b95a727e0f03\">IsSmooth</a>(sharpness)) <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01333.html#a2f54449f8a8ca460b0ad468b1aa1b4e0\">Crease::SHARPNESS_SMOOTH</a>;  <span class=\"comment\">// redundant but most common</span></div>\n+<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\">  210</span>    <span class=\"keywordflow\">if</span> (<a class=\"code hl_function\" href=\"a01333.html#a0538e02ac31e9f1118abdd1f272e7982\">IsInfinite</a>(sharpness)) <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01333.html#a3bd7c586b7bf49ac3b1053ba789dae07\">Crease::SHARPNESS_INFINITE</a>;</div>\n+<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\">  211</span>    <span class=\"keywordflow\">if</span> (sharpness &gt; 1.0f) <span class=\"keywordflow\">return</span> (sharpness - 1.0f);</div>\n+<div class=\"line\"><a id=\"l00212\" name=\"l00212\"></a><span class=\"lineno\">  212</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_variable\" href=\"a01333.html#a2f54449f8a8ca460b0ad468b1aa1b4e0\">Crease::SHARPNESS_SMOOTH</a>;</div>\n+<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\">  213</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\">  214</span> </div>\n+<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\">  215</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">float</span></div>\n+<div class=\"foldopen\" id=\"foldopen00216\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01333.html#a7e5126bd5cff203bcea84ef35845fb40\">  216</a></span><a class=\"code hl_function\" href=\"a01333.html#a7e5126bd5cff203bcea84ef35845fb40\">Crease::SubdivideUniformSharpness</a>(<span class=\"keywordtype\">float</span> vertexOrEdgeSharpness)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\">  217</span> </div>\n+<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\">  218</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01333.html#a453a232c0edcafd9d484197d46ed39ec\">decrementSharpness</a>(vertexOrEdgeSharpness);</div>\n+<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\">  219</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\">  220</span> </div>\n+<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\">  221</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">float</span></div>\n+<div class=\"foldopen\" id=\"foldopen00222\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01333.html#a03f4bc921d6ee6fad4440ac134e92e36\">  222</a></span><a class=\"code hl_function\" href=\"a01333.html#a03f4bc921d6ee6fad4440ac134e92e36\">Crease::SubdivideVertexSharpness</a>(<span class=\"keywordtype\">float</span> vertexSharpness)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\">  223</span> </div>\n+<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\">  224</span>    <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01333.html#a453a232c0edcafd9d484197d46ed39ec\">decrementSharpness</a>(vertexSharpness);</div>\n+<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\">  225</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\">  226</span> </div>\n+<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\">  227</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00228\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01333.html#a362f22e7cba1a0b9f63e9b007c19f296\">  228</a></span><a class=\"code hl_function\" href=\"a01333.html#a362f22e7cba1a0b9f63e9b007c19f296\">Crease::GetSharpEdgePairOfCrease</a>(<span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * incidentEdgeSharpness, <span class=\"keywordtype\">int</span> incidentEdgeCount,</div>\n+<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\">  229</span>                                 <span class=\"keywordtype\">int</span> sharpEdgePair[2])<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\">  230</span> </div>\n+<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\">  231</span>    <span class=\"comment\">//  Only to be called when a crease is present at a vertex -- exactly two sharp</span></div>\n+<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\">  232</span>    <span class=\"comment\">//  edges are expected here:</span></div>\n+<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\">  233</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\">  234</span>    sharpEdgePair[0] = 0;</div>\n+<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\">  235</span>    <span class=\"keywordflow\">while</span> (<a class=\"code hl_function\" href=\"a01333.html#a4620253f6da5407f55c2b95a727e0f03\">IsSmooth</a>(incidentEdgeSharpness[sharpEdgePair[0]])) ++ sharpEdgePair[0];</div>\n+<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\">  236</span> </div>\n+<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\">  237</span>    sharpEdgePair[1] = incidentEdgeCount - 1;</div>\n+<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\">  238</span>    <span class=\"keywordflow\">while</span> (<a class=\"code hl_function\" href=\"a01333.html#a4620253f6da5407f55c2b95a727e0f03\">IsSmooth</a>(incidentEdgeSharpness[sharpEdgePair[1]])) -- sharpEdgePair[1];</div>\n+<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\">  239</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\">  240</span> </div>\n+<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\">  241</span>} <span class=\"comment\">// end namespace sdc</span></div>\n+<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\">  242</span> </div>\n+<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\">  243</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\">  244</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00245\" name=\"l00245\"></a><span class=\"lineno\">  245</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\">  246</span> </div>\n+<div class=\"line\"><a id=\"l00247\" name=\"l00247\"></a><span class=\"lineno\">  247</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_SDC_CREASE_H */</span><span class=\"preprocessor\"></span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa01333_html\"><div class=\"ttname\"><a href=\"a01333.html\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease</a></div><div class=\"ttdoc\">Types, constants and utilities related to semi-sharp creasing \u2013 whose implementation is independent o...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00869_source.html#l00062\">crease.h:62</a></div></div>\n+<div class=\"ttc\" id=\"aa01333_html_a03f4bc921d6ee6fad4440ac134e92e36\"><div class=\"ttname\"><a href=\"a01333.html#a03f4bc921d6ee6fad4440ac134e92e36\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::SubdivideVertexSharpness</a></div><div class=\"ttdeci\">float SubdivideVertexSharpness(float vertexSharpness) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00869_source.html#l00222\">crease.h:222</a></div></div>\n+<div class=\"ttc\" id=\"aa01333_html_a0538e02ac31e9f1118abdd1f272e7982\"><div class=\"ttname\"><a href=\"a01333.html#a0538e02ac31e9f1118abdd1f272e7982\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::IsInfinite</a></div><div class=\"ttdeci\">static bool IsInfinite(float sharpness)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00869_source.html#l00072\">crease.h:72</a></div></div>\n+<div class=\"ttc\" id=\"aa01333_html_a11fcd51ef86118f65e603c1474377a78\"><div class=\"ttname\"><a href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::Rule</a></div><div class=\"ttdeci\">Rule</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00869_source.html#l00082\">crease.h:82</a></div></div>\n+<div class=\"ttc\" id=\"aa01333_html_a11fcd51ef86118f65e603c1474377a78a27ed0595212af48db763e461bfdc29ef\"><div class=\"ttname\"><a href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78a27ed0595212af48db763e461bfdc29ef\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::RULE_CORNER</a></div><div class=\"ttdeci\">@ RULE_CORNER</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00869_source.html#l00088\">crease.h:87</a></div></div>\n+<div class=\"ttc\" id=\"aa01333_html_a11fcd51ef86118f65e603c1474377a78a43469c29d8579a63bc1d6247d2624799\"><div class=\"ttname\"><a href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78a43469c29d8579a63bc1d6247d2624799\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::RULE_DART</a></div><div class=\"ttdeci\">@ RULE_DART</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00869_source.html#l00085\">crease.h:85</a></div></div>\n+<div class=\"ttc\" id=\"aa01333_html_a11fcd51ef86118f65e603c1474377a78a61d137f866997ed3693e3fcad76def5f\"><div class=\"ttname\"><a href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78a61d137f866997ed3693e3fcad76def5f\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::RULE_SMOOTH</a></div><div class=\"ttdeci\">@ RULE_SMOOTH</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00869_source.html#l00084\">crease.h:84</a></div></div>\n+<div class=\"ttc\" id=\"aa01333_html_a11fcd51ef86118f65e603c1474377a78a966fa1ae8aeb8587c498cf6a92cc3335\"><div class=\"ttname\"><a href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78a966fa1ae8aeb8587c498cf6a92cc3335\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::RULE_CREASE</a></div><div class=\"ttdeci\">@ RULE_CREASE</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00869_source.html#l00086\">crease.h:86</a></div></div>\n+<div class=\"ttc\" id=\"aa01333_html_a11fcd51ef86118f65e603c1474377a78ab299aefb26013a79d52191a7887fea53\"><div class=\"ttname\"><a href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78ab299aefb26013a79d52191a7887fea53\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::RULE_UNKNOWN</a></div><div class=\"ttdeci\">@ RULE_UNKNOWN</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00869_source.html#l00083\">crease.h:83</a></div></div>\n+<div class=\"ttc\" id=\"aa01333_html_a121d7a72bfdf61c89df7447a52ffb848\"><div class=\"ttname\"><a href=\"a01333.html#a121d7a72bfdf61c89df7447a52ffb848\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::SharpenBoundaryVertex</a></div><div class=\"ttdeci\">float SharpenBoundaryVertex(float edgeSharpness) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00869_source.html#l00200\">crease.h:200</a></div></div>\n+<div class=\"ttc\" id=\"aa01333_html_a2f54449f8a8ca460b0ad468b1aa1b4e0\"><div class=\"ttname\"><a href=\"a01333.html#a2f54449f8a8ca460b0ad468b1aa1b4e0\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::SHARPNESS_SMOOTH</a></div><div class=\"ttdeci\">static float const SHARPNESS_SMOOTH</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00869_source.html#l00067\">crease.h:67</a></div></div>\n+<div class=\"ttc\" id=\"aa01333_html_a362f22e7cba1a0b9f63e9b007c19f296\"><div class=\"ttname\"><a href=\"a01333.html#a362f22e7cba1a0b9f63e9b007c19f296\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::GetSharpEdgePairOfCrease</a></div><div class=\"ttdeci\">void GetSharpEdgePairOfCrease(float const *incidentEdgeSharpness, int incidentEdgeCount, int sharpEdgePair[2]) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00869_source.html#l00228\">crease.h:228</a></div></div>\n+<div class=\"ttc\" id=\"aa01333_html_a3bd7c586b7bf49ac3b1053ba789dae07\"><div class=\"ttname\"><a href=\"a01333.html#a3bd7c586b7bf49ac3b1053ba789dae07\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::SHARPNESS_INFINITE</a></div><div class=\"ttdeci\">static float const SHARPNESS_INFINITE</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00869_source.html#l00068\">crease.h:68</a></div></div>\n+<div class=\"ttc\" id=\"aa01333_html_a41ebb75d28c5973328e0e3883495aeba\"><div class=\"ttname\"><a href=\"a01333.html#a41ebb75d28c5973328e0e3883495aeba\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::DetermineVertexVertexRule</a></div><div class=\"ttdeci\">Rule DetermineVertexVertexRule(float vertexSharpness, int incidentEdgeCount, float const *incidentEdgeSharpness) const</div></div>\n+<div class=\"ttc\" id=\"aa01333_html_a453a232c0edcafd9d484197d46ed39ec\"><div class=\"ttname\"><a href=\"a01333.html#a453a232c0edcafd9d484197d46ed39ec\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::decrementSharpness</a></div><div class=\"ttdeci\">float decrementSharpness(float sharpness) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00869_source.html#l00207\">crease.h:207</a></div></div>\n+<div class=\"ttc\" id=\"aa01333_html_a4620253f6da5407f55c2b95a727e0f03\"><div class=\"ttname\"><a href=\"a01333.html#a4620253f6da5407f55c2b95a727e0f03\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::IsSmooth</a></div><div class=\"ttdeci\">static bool IsSmooth(float sharpness)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00869_source.html#l00070\">crease.h:70</a></div></div>\n+<div class=\"ttc\" id=\"aa01333_html_a500fadaa8cec78ab9690ad7331dba3d6\"><div class=\"ttname\"><a href=\"a01333.html#a500fadaa8cec78ab9690ad7331dba3d6\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::DetermineVertexVertexRule</a></div><div class=\"ttdeci\">Rule DetermineVertexVertexRule(float vertexSharpness, int sharpEdgeCount) const</div></div>\n+<div class=\"ttc\" id=\"aa01333_html_a5dfa6810f510fac1ec621fc9e6b530c4\"><div class=\"ttname\"><a href=\"a01333.html#a5dfa6810f510fac1ec621fc9e6b530c4\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::IsUniform</a></div><div class=\"ttdeci\">bool IsUniform() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00869_source.html#l00095\">crease.h:95</a></div></div>\n+<div class=\"ttc\" id=\"aa01333_html_a694f45be997ab00786d1b80f5bd39d8f\"><div class=\"ttname\"><a href=\"a01333.html#a694f45be997ab00786d1b80f5bd39d8f\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::IsSemiSharp</a></div><div class=\"ttdeci\">static bool IsSemiSharp(float sharpness)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00869_source.html#l00073\">crease.h:73</a></div></div>\n+<div class=\"ttc\" id=\"aa01333_html_a75d5d7e54170ccf6481932916e0fa9c1\"><div class=\"ttname\"><a href=\"a01333.html#a75d5d7e54170ccf6481932916e0fa9c1\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::Crease</a></div><div class=\"ttdeci\">Crease(Options const &amp;options)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00869_source.html#l00092\">crease.h:92</a></div></div>\n+<div class=\"ttc\" id=\"aa01333_html_a7c27382a0be83617c49b8587ba75b438\"><div class=\"ttname\"><a href=\"a01333.html#a7c27382a0be83617c49b8587ba75b438\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::SubdivideEdgeSharpnessesAroundVertex</a></div><div class=\"ttdeci\">void SubdivideEdgeSharpnessesAroundVertex(int incidentEdgeCountAtVertex, float const *incidentEdgeSharpnessAroundVertex, float *childEdgesSharpnessAroundVertex) const</div></div>\n+<div class=\"ttc\" id=\"aa01333_html_a7e5126bd5cff203bcea84ef35845fb40\"><div class=\"ttname\"><a href=\"a01333.html#a7e5126bd5cff203bcea84ef35845fb40\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::SubdivideUniformSharpness</a></div><div class=\"ttdeci\">float SubdivideUniformSharpness(float vertexOrEdgeSharpness) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00869_source.html#l00216\">crease.h:216</a></div></div>\n+<div class=\"ttc\" id=\"aa01333_html_a9659c3f2c73b80d9dc22763a6054079b\"><div class=\"ttname\"><a href=\"a01333.html#a9659c3f2c73b80d9dc22763a6054079b\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::Crease</a></div><div class=\"ttdeci\">Crease()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00869_source.html#l00091\">crease.h:91</a></div></div>\n+<div class=\"ttc\" id=\"aa01333_html_aa4ac191c71a85e2929036f27377fea59\"><div class=\"ttname\"><a href=\"a01333.html#aa4ac191c71a85e2929036f27377fea59\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::SharpenBoundaryEdge</a></div><div class=\"ttdeci\">float SharpenBoundaryEdge(float edgeSharpness) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00869_source.html#l00189\">crease.h:189</a></div></div>\n+<div class=\"ttc\" id=\"aa01333_html_ab13f654f25ef7628396fd902291b8f96\"><div class=\"ttname\"><a href=\"a01333.html#ab13f654f25ef7628396fd902291b8f96\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::ComputeFractionalWeightAtVertex</a></div><div class=\"ttdeci\">float ComputeFractionalWeightAtVertex(float vertexSharpness, float childVertexSharpness, int incidentEdgeCount, float const *incidentEdgeSharpness, float const *childEdgesSharpness) const</div><div class=\"ttdoc\">Transitional weighting: When the rules applicable to a parent vertex and its child differ,...</div></div>\n+<div class=\"ttc\" id=\"aa01333_html_ab37ffb609adbeb8b5b8242b572d4d0de\"><div class=\"ttname\"><a href=\"a01333.html#ab37ffb609adbeb8b5b8242b572d4d0de\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::SubdivideEdgeSharpnessAtVertex</a></div><div class=\"ttdeci\">float SubdivideEdgeSharpnessAtVertex(float edgeSharpness, int incidentEdgeCountAtEndVertex, float const *edgeSharpnessAroundEndVertex) const</div></div>\n+<div class=\"ttc\" id=\"aa01333_html_ac9bfeebd44b0e47bb06c119c3b4ed750\"><div class=\"ttname\"><a href=\"a01333.html#ac9bfeebd44b0e47bb06c119c3b4ed750\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::IsSharp</a></div><div class=\"ttdeci\">static bool IsSharp(float sharpness)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00869_source.html#l00071\">crease.h:71</a></div></div>\n+<div class=\"ttc\" id=\"aa01333_html_af6737d6f9be18766c7a993cc9da108a8\"><div class=\"ttname\"><a href=\"a01333.html#af6737d6f9be18766c7a993cc9da108a8\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::~Crease</a></div><div class=\"ttdeci\">~Crease()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00869_source.html#l00093\">crease.h:93</a></div></div>\n+<div class=\"ttc\" id=\"aa01337_html\"><div class=\"ttname\"><a href=\"a01337.html\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options</a></div><div class=\"ttdoc\">All supported options applying to subdivision scheme.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00860_source.html#l00051\">options.h:51</a></div></div>\n+<div class=\"ttc\" id=\"aa01337_html_a16ec522dc0398bf1435a912cd669ffb0a10f2956db48d2975424be2e52ebd544d\"><div class=\"ttname\"><a href=\"a01337.html#a16ec522dc0398bf1435a912cd669ffb0a10f2956db48d2975424be2e52ebd544d\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::CREASE_UNIFORM</a></div><div class=\"ttdeci\">@ CREASE_UNIFORM</div><div class=\"ttdoc\">Catmark rule.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00860_source.html#l00069\">options.h:69</a></div></div>\n+<div class=\"ttc\" id=\"aa01337_html_a17dfce050325c0054b6e2fa422cb62b1\"><div class=\"ttname\"><a href=\"a01337.html#a17dfce050325c0054b6e2fa422cb62b1\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::GetCreasingMethod</a></div><div class=\"ttdeci\">CreasingMethod GetCreasingMethod() const</div><div class=\"ttdoc\">Get edge crease rule.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00860_source.html#l00101\">options.h:101</a></div></div>\n+<div class=\"ttc\" id=\"aa01337_html_a590338ee8b544306b970a0c1445cd01f\"><div class=\"ttname\"><a href=\"a01337.html#a590338ee8b544306b970a0c1445cd01f\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::GetVtxBoundaryInterpolation</a></div><div class=\"ttdeci\">VtxBoundaryInterpolation GetVtxBoundaryInterpolation() const</div><div class=\"ttdoc\">Get vertex boundary interpolation rule.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00860_source.html#l00089\">options.h:89</a></div></div>\n+<div class=\"ttc\" id=\"aa01337_html_acbf78f1a6abfc8db080ef7fb3c3f417eac6e5f52f358d3b6d62cc2b708a5a8757\"><div class=\"ttname\"><a href=\"a01337.html#acbf78f1a6abfc8db080ef7fb3c3f417eac6e5f52f358d3b6d62cc2b708a5a8757\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options::VTX_BOUNDARY_EDGE_AND_CORNER</a></div><div class=\"ttdeci\">@ VTX_BOUNDARY_EDGE_AND_CORNER</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00860_source.html#l00059\">options.h:57</a></div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00869.html\">glVertexBuffer.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_f61368944c63c2c1f8c69bc232e59c39.html\">sdc</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00869.html\">crease.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "encoding", "source2": "encoding", "unified_diff": "@@ -1 +1 @@\n-us-ascii\n+utf-8\n"}, {"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-glVertexBuffer.h\n+crease.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2013 Pixar\n+2// Copyright 2014 DreamWorks Animation LLC.\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -23,89 +23,289 @@\n 17//\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n-24\n-25#ifndef OPENSUBDIV3_OSD_GL_VERTEX_BUFFER_H\n-26#define OPENSUBDIV3_OSD_GL_VERTEX_BUFFER_H\n-27\n-28#include \"../version.h\"\n-29\n-30#include \"../osd/opengl.h\"\n-31#include <cstddef>\n-32\n-33namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-34namespace OPENSUBDIV_VERSION {\n+24#ifndef OPENSUBDIV3_SDC_CREASE_H\n+25#define OPENSUBDIV3_SDC_CREASE_H\n+26\n+27#include \"../version.h\"\n+28\n+29#include \"../sdc/options.h\"\n+30\n+31namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+32namespace OPENSUBDIV_VERSION {\n+33\n+34namespace Sdc {\n 35\n-36namespace Osd {\n-37\n-_\b4_\b4class _\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br {\n-45public:\n-_\b4_\b7 static _\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br * _\bC_\br_\be_\ba_\bt_\be(int numElements, int numVertices,\n-48 void *deviceContext = NULL);\n-49\n-_\b5_\b1 _\b~_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br();\n-52\n-_\b5_\b5 void _\bU_\bp_\bd_\ba_\bt_\be_\bD_\ba_\bt_\ba(const float *src, int startVertex, int numVertices,\n-56 void *deviceContext = NULL);\n-57\n-_\b5_\b9 int _\bG_\be_\bt_\bN_\bu_\bm_\bE_\bl_\be_\bm_\be_\bn_\bt_\bs() const;\n-60\n-_\b6_\b2 int _\bG_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs() const;\n-63\n-_\b6_\b5 GLuint _\bB_\bi_\bn_\bd_\bV_\bB_\bO(void *deviceContext = NULL);\n-66\n-67protected:\n-_\b6_\b9 _\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br(int numElements, int numVertices);\n-70\n-_\b7_\b3 bool _\ba_\bl_\bl_\bo_\bc_\ba_\bt_\be();\n-74\n-75private:\n-76 int _numElements;\n-77 int _numVertices;\n-78 GLuint _vbo;\n-79};\n-80\n-81} // end namespace Osd\n-82\n-83} // end namespace OPENSUBDIV_VERSION\n-84using namespace OPENSUBDIV_VERSION;\n-85\n-86} // end namespace OpenSubdiv\n-87\n-88#endif // OPENSUBDIV3_OSD_GL_VERTEX_BUFFER_H\n+61\n+_\b6_\b2class _\bC_\br_\be_\ba_\bs_\be {\n+63public:\n+65\n+_\b6_\b7 static float const _\bS_\bH_\bA_\bR_\bP_\bN_\bE_\bS_\bS_\b__\bS_\bM_\bO_\bO_\bT_\bH; // = 0.0f, do we really need this?\n+_\b6_\b8 static float const _\bS_\bH_\bA_\bR_\bP_\bN_\bE_\bS_\bS_\b__\bI_\bN_\bF_\bI_\bN_\bI_\bT_\bE; // = 10.0f;\n+69\n+_\b7_\b0 static bool _\bI_\bs_\bS_\bm_\bo_\bo_\bt_\bh(float sharpness) { return sharpness <=\n+_\bS_\bH_\bA_\bR_\bP_\bN_\bE_\bS_\bS_\b__\bS_\bM_\bO_\bO_\bT_\bH; }\n+_\b7_\b1 static bool _\bI_\bs_\bS_\bh_\ba_\br_\bp(float sharpness) { return sharpness > _\bS_\bH_\bA_\bR_\bP_\bN_\bE_\bS_\bS_\b__\bS_\bM_\bO_\bO_\bT_\bH;\n+}\n+_\b7_\b2 static bool _\bI_\bs_\bI_\bn_\bf_\bi_\bn_\bi_\bt_\be(float sharpness) { return sharpness >=\n+_\bS_\bH_\bA_\bR_\bP_\bN_\bE_\bS_\bS_\b__\bI_\bN_\bF_\bI_\bN_\bI_\bT_\bE; }\n+_\b7_\b3 static bool _\bI_\bs_\bS_\be_\bm_\bi_\bS_\bh_\ba_\br_\bp(float sharpness) { return (_\bS_\bH_\bA_\bR_\bP_\bN_\bE_\bS_\bS_\b__\bS_\bM_\bO_\bO_\bT_\bH <\n+sharpness) && (sharpness < _\bS_\bH_\bA_\bR_\bP_\bN_\bE_\bS_\bS_\b__\bI_\bN_\bF_\bI_\bN_\bI_\bT_\bE); }\n+75\n+_\b8_\b2 enum _\bR_\bu_\bl_\be {\n+_\b8_\b3 _\bR_\bU_\bL_\bE_\b__\bU_\bN_\bK_\bN_\bO_\bW_\bN = 0,\n+_\b8_\b4 _\bR_\bU_\bL_\bE_\b__\bS_\bM_\bO_\bO_\bT_\bH = (1 << 0),\n+_\b8_\b5 _\bR_\bU_\bL_\bE_\b__\bD_\bA_\bR_\bT = (1 << 1),\n+_\b8_\b6 _\bR_\bU_\bL_\bE_\b__\bC_\bR_\bE_\bA_\bS_\bE = (1 << 2),\n+87 _\bR_\bU_\bL_\bE_\b__\bC_\bO_\bR_\bN_\bE_\bR = (1 << 3)\n+_\b8_\b8 };\n+89\n+90public:\n+_\b9_\b1 _\bC_\br_\be_\ba_\bs_\be() : _options() { }\n+_\b9_\b2 _\bC_\br_\be_\ba_\bs_\be(_\bO_\bp_\bt_\bi_\bo_\bn_\bs const& options) : _options(options) { }\n+_\b9_\b3 _\b~_\bC_\br_\be_\ba_\bs_\be() { }\n+94\n+_\b9_\b5 bool _\bI_\bs_\bU_\bn_\bi_\bf_\bo_\br_\bm() const { return _options._\bG_\be_\bt_\bC_\br_\be_\ba_\bs_\bi_\bn_\bg_\bM_\be_\bt_\bh_\bo_\bd() == _\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bC_\bR_\bE_\bA_\bS_\bE_\b__\bU_\bN_\bI_\bF_\bO_\bR_\bM; }\n+96\n+98\n+104 float _\bS_\bh_\ba_\br_\bp_\be_\bn_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bE_\bd_\bg_\be(float edgeSharpness) const;\n+105 float _\bS_\bh_\ba_\br_\bp_\be_\bn_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bV_\be_\br_\bt_\be_\bx(float edgeSharpness) const;\n+106\n+107 // For future consideration\n+108 //float SharpenNonManifoldEdge(float edgeSharpness) const;\n+109 //float SharpenNonManifoldVertex(float edgeSharpness) const;\n+111\n+113\n+124 float _\bS_\bu_\bb_\bd_\bi_\bv_\bi_\bd_\be_\bU_\bn_\bi_\bf_\bo_\br_\bm_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs(float vertexOrEdgeSharpness) const;\n+125\n+126 float _\bS_\bu_\bb_\bd_\bi_\bv_\bi_\bd_\be_\bV_\be_\br_\bt_\be_\bx_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs(float vertexSharpness) const;\n+127\n+_\b1_\b2_\b8 float _\bS_\bu_\bb_\bd_\bi_\bv_\bi_\bd_\be_\bE_\bd_\bg_\be_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs_\bA_\bt_\bV_\be_\br_\bt_\be_\bx(float edgeSharpness,\n+129 int incidentEdgeCountAtEndVertex,\n+130 float const* edgeSharpnessAroundEndVertex) const;\n+131\n+_\b1_\b3_\b2 void _\bS_\bu_\bb_\bd_\bi_\bv_\bi_\bd_\be_\bE_\bd_\bg_\be_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs_\be_\bs_\bA_\br_\bo_\bu_\bn_\bd_\bV_\be_\br_\bt_\be_\bx(int incidentEdgeCountAtVertex,\n+133 float const* incidentEdgeSharpnessAroundVertex,\n+134 float* childEdgesSharpnessAroundVertex) const;\n+136\n+138\n+_\b1_\b4_\b4 _\bR_\bu_\bl_\be _\bD_\be_\bt_\be_\br_\bm_\bi_\bn_\be_\bV_\be_\br_\bt_\be_\bx_\bV_\be_\br_\bt_\be_\bx_\bR_\bu_\bl_\be(float vertexSharpness,\n+145 int incidentEdgeCount,\n+146 float const* incidentEdgeSharpness) const;\n+_\b1_\b4_\b7 _\bR_\bu_\bl_\be _\bD_\be_\bt_\be_\br_\bm_\bi_\bn_\be_\bV_\be_\br_\bt_\be_\bx_\bV_\be_\br_\bt_\be_\bx_\bR_\bu_\bl_\be(float vertexSharpness,\n+148 int sharpEdgeCount) const;\n+150\n+_\b1_\b6_\b2 float _\bC_\bo_\bm_\bp_\bu_\bt_\be_\bF_\br_\ba_\bc_\bt_\bi_\bo_\bn_\ba_\bl_\bW_\be_\bi_\bg_\bh_\bt_\bA_\bt_\bV_\be_\br_\bt_\be_\bx(float vertexSharpness,\n+163 float childVertexSharpness,\n+164 int incidentEdgeCount,\n+165 float const* incidentEdgeSharpness,\n+166 float const* childEdgesSharpness) const;\n+167\n+168 void _\bG_\be_\bt_\bS_\bh_\ba_\br_\bp_\bE_\bd_\bg_\be_\bP_\ba_\bi_\br_\bO_\bf_\bC_\br_\be_\ba_\bs_\be(float const * incidentEdgeSharpness,\n+169 int incidentEdgeCount,\n+170 int sharpEdgePair[2]) const;\n+171\n+172 // Would these really help? Maybe only need Rules for the vertex-vertex\n+case...\n+173 //\n+174 // Rule DetermineEdgeVertexRule(float parentEdgeSharpness) const;\n+175 // Rule DetermineEdgeVertexRule(float childEdge1Sharpness, float\n+childEdge2Sharpness) const;\n+176\n+177protected:\n+178 float _\bd_\be_\bc_\br_\be_\bm_\be_\bn_\bt_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs(float sharpness) const;\n+179\n+180private:\n+181 _\bO_\bp_\bt_\bi_\bo_\bn_\bs _options;\n+182};\n+183\n+184\n+185//\n+186// Inline declarations:\n+187//\n+188inline float\n+_\b1_\b8_\b9_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bS_\bh_\ba_\br_\bp_\be_\bn_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bE_\bd_\bg_\be(float /* edgeSharpness */) const {\n+190\n+191 //\n+192 // Despite the presence of the BOUNDARY_NONE option, boundary edges are\n+always sharpened.\n+193 // Much of the code relies on sharpness to indicate boundaries to avoid the\n+more complex\n+194 // topological inspection\n+195 //\n+196 return _\bS_\bH_\bA_\bR_\bP_\bN_\bE_\bS_\bS_\b__\bI_\bN_\bF_\bI_\bN_\bI_\bT_\bE;\n+197}\n+198\n+199inline float\n+_\b2_\b0_\b0_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bS_\bh_\ba_\br_\bp_\be_\bn_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bV_\be_\br_\bt_\be_\bx(float vertexSharpness) const {\n+201\n+202 return (_options._\bG_\be_\bt_\bV_\bt_\bx_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn() == _\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bV_\bT_\bX_\b__\bB_\bO_\bU_\bN_\bD_\bA_\bR_\bY_\b__\bE_\bD_\bG_\bE_\b__\bA_\bN_\bD_\b__\bC_\bO_\bR_\bN_\bE_\bR) ?\n+203 _\bS_\bH_\bA_\bR_\bP_\bN_\bE_\bS_\bS_\b__\bI_\bN_\bF_\bI_\bN_\bI_\bT_\bE : vertexSharpness;\n+204}\n+205\n+206inline float\n+_\b2_\b0_\b7_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bd_\be_\bc_\br_\be_\bm_\be_\bn_\bt_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs(float sharpness) const {\n+208\n+209 if (_\bI_\bs_\bS_\bm_\bo_\bo_\bt_\bh(sharpness)) return _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bS_\bH_\bA_\bR_\bP_\bN_\bE_\bS_\bS_\b__\bS_\bM_\bO_\bO_\bT_\bH; // redundant but\n+most common\n+210 if (_\bI_\bs_\bI_\bn_\bf_\bi_\bn_\bi_\bt_\be(sharpness)) return _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bS_\bH_\bA_\bR_\bP_\bN_\bE_\bS_\bS_\b__\bI_\bN_\bF_\bI_\bN_\bI_\bT_\bE;\n+211 if (sharpness > 1.0f) return (sharpness - 1.0f);\n+212 return _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bS_\bH_\bA_\bR_\bP_\bN_\bE_\bS_\bS_\b__\bS_\bM_\bO_\bO_\bT_\bH;\n+213}\n+214\n+215inline float\n+_\b2_\b1_\b6_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bS_\bu_\bb_\bd_\bi_\bv_\bi_\bd_\be_\bU_\bn_\bi_\bf_\bo_\br_\bm_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs(float vertexOrEdgeSharpness) const {\n+217\n+218 return _\bd_\be_\bc_\br_\be_\bm_\be_\bn_\bt_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs(vertexOrEdgeSharpness);\n+219}\n+220\n+221inline float\n+_\b2_\b2_\b2_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bS_\bu_\bb_\bd_\bi_\bv_\bi_\bd_\be_\bV_\be_\br_\bt_\be_\bx_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs(float vertexSharpness) const {\n+223\n+224 return _\bd_\be_\bc_\br_\be_\bm_\be_\bn_\bt_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs(vertexSharpness);\n+225}\n+226\n+227inline void\n+_\b2_\b2_\b8_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bG_\be_\bt_\bS_\bh_\ba_\br_\bp_\bE_\bd_\bg_\be_\bP_\ba_\bi_\br_\bO_\bf_\bC_\br_\be_\ba_\bs_\be(float const * incidentEdgeSharpness, int\n+incidentEdgeCount,\n+229 int sharpEdgePair[2]) const {\n+230\n+231 // Only to be called when a crease is present at a vertex -- exactly two\n+sharp\n+232 // edges are expected here:\n+233 //\n+234 sharpEdgePair[0] = 0;\n+235 while (_\bI_\bs_\bS_\bm_\bo_\bo_\bt_\bh(incidentEdgeSharpness[sharpEdgePair[0]])) ++ sharpEdgePair\n+[0];\n+236\n+237 sharpEdgePair[1] = incidentEdgeCount - 1;\n+238 while (_\bI_\bs_\bS_\bm_\bo_\bo_\bt_\bh(incidentEdgeSharpness[sharpEdgePair[1]])) -- sharpEdgePair\n+[1];\n+239}\n+240\n+241} // end namespace sdc\n+242\n+243} // end namespace OPENSUBDIV_VERSION\n+244using namespace OPENSUBDIV_VERSION;\n+245} // end namespace OpenSubdiv\n+246\n+247#endif /* OPENSUBDIV3_SDC_CREASE_H */\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-Concrete vertex buffer class for GLSL subdivision and OpenGL drawing.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh_\b:_\b4_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\b~_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-~GLVertexBuffer()\n-Destructor.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bB_\bi_\bn_\bd_\bV_\bB_\bO\n-GLuint BindVBO(void *deviceContext=NULL)\n-Returns the GL buffer object.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bE_\bl_\be_\bm_\be_\bn_\bt_\bs\n-int GetNumElements() const\n-Returns how many elements defined in this vertex buffer.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bU_\bp_\bd_\ba_\bt_\be_\bD_\ba_\bt_\ba\n-void UpdateData(const float *src, int startVertex, int numVertices, void\n-*deviceContext=NULL)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-GLVertexBuffer(int numElements, int numVertices)\n-Constructor.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n-int GetNumVertices() const\n-Returns how many vertices allocated in this vertex buffer.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static GLVertexBuffer * Create(int numElements, int numVertices, void\n-*deviceContext=NULL)\n-Creator. Returns NULL if error.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\ba_\bl_\bl_\bo_\bc_\ba_\bt_\be\n-bool allocate()\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be\n+Types, constants and utilities related to semi-sharp creasing \u00e2\u0080\u0093 whose\n+implementation is independent o...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b6_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bS_\bu_\bb_\bd_\bi_\bv_\bi_\bd_\be_\bV_\be_\br_\bt_\be_\bx_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs\n+float SubdivideVertexSharpness(float vertexSharpness) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b2_\b2_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bI_\bs_\bI_\bn_\bf_\bi_\bn_\bi_\bt_\be\n+static bool IsInfinite(float sharpness)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b7_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be\n+Rule\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b8_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bC_\bO_\bR_\bN_\bE_\bR\n+@ RULE_CORNER\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b8_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bD_\bA_\bR_\bT\n+@ RULE_DART\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b8_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bS_\bM_\bO_\bO_\bT_\bH\n+@ RULE_SMOOTH\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b8_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bC_\bR_\bE_\bA_\bS_\bE\n+@ RULE_CREASE\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b8_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bU_\bL_\bE_\b__\bU_\bN_\bK_\bN_\bO_\bW_\bN\n+@ RULE_UNKNOWN\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b8_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bS_\bh_\ba_\br_\bp_\be_\bn_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bV_\be_\br_\bt_\be_\bx\n+float SharpenBoundaryVertex(float edgeSharpness) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b2_\b0_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bS_\bH_\bA_\bR_\bP_\bN_\bE_\bS_\bS_\b__\bS_\bM_\bO_\bO_\bT_\bH\n+static float const SHARPNESS_SMOOTH\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b6_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bG_\be_\bt_\bS_\bh_\ba_\br_\bp_\bE_\bd_\bg_\be_\bP_\ba_\bi_\br_\bO_\bf_\bC_\br_\be_\ba_\bs_\be\n+void GetSharpEdgePairOfCrease(float const *incidentEdgeSharpness, int\n+incidentEdgeCount, int sharpEdgePair[2]) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b2_\b2_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bS_\bH_\bA_\bR_\bP_\bN_\bE_\bS_\bS_\b__\bI_\bN_\bF_\bI_\bN_\bI_\bT_\bE\n+static float const SHARPNESS_INFINITE\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b6_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bD_\be_\bt_\be_\br_\bm_\bi_\bn_\be_\bV_\be_\br_\bt_\be_\bx_\bV_\be_\br_\bt_\be_\bx_\bR_\bu_\bl_\be\n+Rule DetermineVertexVertexRule(float vertexSharpness, int incidentEdgeCount,\n+float const *incidentEdgeSharpness) const\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bd_\be_\bc_\br_\be_\bm_\be_\bn_\bt_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs\n+float decrementSharpness(float sharpness) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b2_\b0_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bI_\bs_\bS_\bm_\bo_\bo_\bt_\bh\n+static bool IsSmooth(float sharpness)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b7_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bD_\be_\bt_\be_\br_\bm_\bi_\bn_\be_\bV_\be_\br_\bt_\be_\bx_\bV_\be_\br_\bt_\be_\bx_\bR_\bu_\bl_\be\n+Rule DetermineVertexVertexRule(float vertexSharpness, int sharpEdgeCount) const\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bI_\bs_\bU_\bn_\bi_\bf_\bo_\br_\bm\n+bool IsUniform() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b9_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bI_\bs_\bS_\be_\bm_\bi_\bS_\bh_\ba_\br_\bp\n+static bool IsSemiSharp(float sharpness)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b7_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bC_\br_\be_\ba_\bs_\be\n+Crease(Options const &options)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b9_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:\n+_\bS_\bu_\bb_\bd_\bi_\bv_\bi_\bd_\be_\bE_\bd_\bg_\be_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs_\be_\bs_\bA_\br_\bo_\bu_\bn_\bd_\bV_\be_\br_\bt_\be_\bx\n+void SubdivideEdgeSharpnessesAroundVertex(int incidentEdgeCountAtVertex, float\n+const *incidentEdgeSharpnessAroundVertex, float\n+*childEdgesSharpnessAroundVertex) const\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bS_\bu_\bb_\bd_\bi_\bv_\bi_\bd_\be_\bU_\bn_\bi_\bf_\bo_\br_\bm_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs\n+float SubdivideUniformSharpness(float vertexOrEdgeSharpness) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b2_\b1_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bC_\br_\be_\ba_\bs_\be\n+Crease()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b9_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bS_\bh_\ba_\br_\bp_\be_\bn_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bE_\bd_\bg_\be\n+float SharpenBoundaryEdge(float edgeSharpness) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b1_\b8_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bF_\br_\ba_\bc_\bt_\bi_\bo_\bn_\ba_\bl_\bW_\be_\bi_\bg_\bh_\bt_\bA_\bt_\bV_\be_\br_\bt_\be_\bx\n+float ComputeFractionalWeightAtVertex(float vertexSharpness, float\n+childVertexSharpness, int incidentEdgeCount, float const\n+*incidentEdgeSharpness, float const *childEdgesSharpness) const\n+Transitional weighting: When the rules applicable to a parent vertex and its\n+child differ,...\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bS_\bu_\bb_\bd_\bi_\bv_\bi_\bd_\be_\bE_\bd_\bg_\be_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs_\bA_\bt_\bV_\be_\br_\bt_\be_\bx\n+float SubdivideEdgeSharpnessAtVertex(float edgeSharpness, int\n+incidentEdgeCountAtEndVertex, float const *edgeSharpnessAroundEndVertex) const\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bI_\bs_\bS_\bh_\ba_\br_\bp\n+static bool IsSharp(float sharpness)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b7_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\b~_\bC_\br_\be_\ba_\bs_\be\n+~Crease()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b9_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n+All supported options applying to subdivision scheme.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b5_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bC_\bR_\bE_\bA_\bS_\bE_\b__\bU_\bN_\bI_\bF_\bO_\bR_\bM\n+@ CREASE_UNIFORM\n+Catmark rule.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b6_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bG_\be_\bt_\bC_\br_\be_\ba_\bs_\bi_\bn_\bg_\bM_\be_\bt_\bh_\bo_\bd\n+CreasingMethod GetCreasingMethod() const\n+Get edge crease rule.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b1_\b0_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bG_\be_\bt_\bV_\bt_\bx_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bI_\bn_\bt_\be_\br_\bp_\bo_\bl_\ba_\bt_\bi_\bo_\bn\n+VtxBoundaryInterpolation GetVtxBoundaryInterpolation() const\n+Get vertex boundary interpolation rule.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b8_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bV_\bT_\bX_\b__\bB_\bO_\bU_\bN_\bD_\bA_\bR_\bY_\b__\bE_\bD_\bG_\bE_\b__\bA_\bN_\bD_\b__\bC_\bO_\bR_\bN_\bE_\bR\n+@ VTX_BOUNDARY_EDGE_AND_CORNER\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b5_\b7\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bg_\bl_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh\n+    * _\bs_\bd_\bc\n+    * _\bc_\br_\be_\ba_\bs_\be_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00872.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00872.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/mesh.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/sdc/loopScheme.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -88,109 +88,38 @@\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n-<a href=\"#nested-classes\">Classes</a> &#124;\n-<a href=\"#namespaces\">Namespaces</a> &#124;\n-<a href=\"#typedef-members\">Typedefs</a> &#124;\n-<a href=\"#enum-members\">Enumerations</a> &#124;\n-<a href=\"#func-members\">Functions</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">mesh.h File Reference</div></div>\n+<a href=\"#namespaces\">Namespaces</a>  </div>\n+  <div class=\"headertitle\"><div class=\"title\">loopScheme.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &lt;bitset&gt;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00863_source.html\">../sdc/scheme.h</a>&quot;</code><br />\n <code>#include &lt;cassert&gt;</code><br />\n-<code>#include &lt;cstring&gt;</code><br />\n-<code>#include &lt;vector&gt;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00764_source.html\">../far/topologyRefiner.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00776_source.html\">../far/patchTableFactory.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00758_source.html\">../far/stencilTable.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00752_source.html\">../far/stencilTableFactory.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00866_source.html\">../osd/bufferDescriptor.h</a>&quot;</code><br />\n+<code>#include &lt;cmath&gt;</code><br />\n </div>\n <p><a href=\"a00872_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n-<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n-Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01269.html\">MeshInterface&lt; PATCH_TABLE &gt;</a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01273.html\">EvaluatorCacheT&lt; EVALUATOR &gt;</a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01277.html\">EvaluatorCacheT&lt; EVALUATOR &gt;::Entry</a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01281.html\">Mesh&lt; VERTEX_BUFFER, STENCIL_TABLE, EVALUATOR, PATCH_TABLE, DEVICE_CONTEXT &gt;</a></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-</table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n+<tr class=\"memitem:a00913\" id=\"r_a00913\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00913.html\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-</table><table class=\"memberdecls\">\n-<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"typedef-members\" name=\"typedef-members\"></a>\n-Typedefs</h2></td></tr>\n-<tr class=\"memitem:a85ba9df501aea9af1ec9da1558c255bc\" id=\"r_a85ba9df501aea9af1ec9da1558c255bc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef std::bitset&lt; <a class=\"el\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a5676712c77d29cfdd330e2802db1c464\">NUM_MESH_BITS</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html#a85ba9df501aea9af1ec9da1558c255bc\">MeshBitset</a></td></tr>\n-<tr class=\"separator:a85ba9df501aea9af1ec9da1558c255bc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-</table><table class=\"memberdecls\">\n-<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"enum-members\" name=\"enum-members\"></a>\n-Enumerations</h2></td></tr>\n-<tr class=\"memitem:a1af6b50e9f8ae13d3d2f9d5b03b35492\" id=\"r_a1af6b50e9f8ae13d3d2f9d5b03b35492\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492\">MeshBits</a> { <br />\n-&#160;&#160;<a class=\"el\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492adef344bcbdd50a1a93136eb53183c718\">MeshAdaptive</a> = 0\n-, <br />\n-&#160;&#160;<a class=\"el\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a9313c644b9b2a998bcb55cfcc4582b1a\">MeshInterleaveVarying</a> = 1\n-, <br />\n-&#160;&#160;<a class=\"el\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492ac10e41fef659f3b3a1b730319bdedb45\">MeshFVarData</a> = 2\n-, <br />\n-&#160;&#160;<a class=\"el\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a9b8a23ab039e120012bc7c622308d603\">MeshFVarAdaptive</a> = 3\n-, <br />\n-&#160;&#160;<a class=\"el\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492ab32b8ef595539e14041e2fb0e619e3f9\">MeshUseSmoothCornerPatch</a> = 4\n-, <br />\n-&#160;&#160;<a class=\"el\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a9058d69e1089fc77f1974a76c34e2071\">MeshUseSingleCreasePatch</a> = 5\n-, <br />\n-&#160;&#160;<a class=\"el\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a8fab1b3018f94b5b2432c7435e795925\">MeshUseInfSharpPatch</a> = 6\n-, <br />\n-&#160;&#160;<a class=\"el\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a4124233e4f787f999c7975afceab34f3\">MeshEndCapBilinearBasis</a> = 7\n-, <br />\n-&#160;&#160;<a class=\"el\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492aa2f41b6ba0393698bb3af283283737f7\">MeshEndCapBSplineBasis</a> = 8\n-, <br />\n-&#160;&#160;<a class=\"el\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492aa2878e1a215530f5f6fb89f1e06f91ee\">MeshEndCapGregoryBasis</a> = 9\n-, <br />\n-&#160;&#160;<a class=\"el\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492aad7b3fb2be609abdbfafaf5b1c834158\">MeshEndCapLegacyGregory</a> = 10\n-, <br />\n-&#160;&#160;<a class=\"el\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a5676712c77d29cfdd330e2802db1c464\">NUM_MESH_BITS</a> = 11\n-<br />\n- }</td></tr>\n-<tr class=\"separator:a1af6b50e9f8ae13d3d2f9d5b03b35492\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-</table><table class=\"memberdecls\">\n-<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\n-Functions</h2></td></tr>\n-<tr class=\"memitem:a06ceddf21c024b341a5b946049cd701a\" id=\"r_a06ceddf21c024b341a5b946049cd701a\"><td class=\"memTemplParams\" colspan=\"2\">template&lt;typename STENCIL_TABLE , typename SRC_STENCIL_TABLE , typename DEVICE_CONTEXT &gt; </td></tr>\n-<tr class=\"memitem:a06ceddf21c024b341a5b946049cd701a\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">STENCIL_TABLE const *&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html#a06ceddf21c024b341a5b946049cd701a\">convertToCompatibleStencilTable</a> (SRC_STENCIL_TABLE const *table, DEVICE_CONTEXT *context)</td></tr>\n-<tr class=\"separator:a06ceddf21c024b341a5b946049cd701a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a33f9830228f847fae1c30c9dffe02b5a\" id=\"r_a33f9830228f847fae1c30c9dffe02b5a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">template&lt;&gt; </td></tr>\n-<tr class=\"memitem:a33f9830228f847fae1c30c9dffe02b5a\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"a01065.html\">Far::StencilTable</a> const *&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html#a33f9830228f847fae1c30c9dffe02b5a\">convertToCompatibleStencilTable&lt; Far::StencilTable, Far::StencilTable, void &gt;</a> (<a class=\"el\" href=\"a01065.html\">Far::StencilTable</a> const *table, void *)</td></tr>\n-<tr class=\"separator:a33f9830228f847fae1c30c9dffe02b5a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a4c2520cc1a8a5a03e3f53584629d7318\" id=\"r_a4c2520cc1a8a5a03e3f53584629d7318\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">template&lt;&gt; </td></tr>\n-<tr class=\"memitem:a4c2520cc1a8a5a03e3f53584629d7318\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"a01081.html\">Far::LimitStencilTable</a> const *&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html#a4c2520cc1a8a5a03e3f53584629d7318\">convertToCompatibleStencilTable&lt; Far::LimitStencilTable, Far::LimitStencilTable, void &gt;</a> (<a class=\"el\" href=\"a01081.html\">Far::LimitStencilTable</a> const *table, void *)</td></tr>\n-<tr class=\"separator:a4c2520cc1a8a5a03e3f53584629d7318\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:ab5753a2b0a0995c8e2259d2c4765f7df\" id=\"r_ab5753a2b0a0995c8e2259d2c4765f7df\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">template&lt;&gt; </td></tr>\n-<tr class=\"memitem:ab5753a2b0a0995c8e2259d2c4765f7df\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"a01065.html\">Far::StencilTable</a> const *&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html#ab5753a2b0a0995c8e2259d2c4765f7df\">convertToCompatibleStencilTable&lt; Far::StencilTable, Far::StencilTable, ID3D11DeviceContext &gt;</a> (<a class=\"el\" href=\"a01065.html\">Far::StencilTable</a> const *table, ID3D11DeviceContext *)</td></tr>\n-<tr class=\"separator:ab5753a2b0a0995c8e2259d2c4765f7df\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00872.html\">mesh.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_f61368944c63c2c1f8c69bc232e59c39.html\">sdc</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00872.html\">loopScheme.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,80 +1,22 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bT_\by_\bp_\be_\bd_\be_\bf_\bs | _\bE_\bn_\bu_\bm_\be_\br_\ba_\bt_\bi_\bo_\bn_\bs | _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n-mesh.h File Reference\n+_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+loopScheme.h File Reference\n #include \"../version.h\"\n-#include <bitset>\n+#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bs_\bc_\bh_\be_\bm_\be_\b._\bh\"\n #include <cassert>\n-#include <cstring>\n-#include <vector>\n-#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh\"\n-#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh\"\n-#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh\"\n-#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh\"\n-#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh\"\n+#include <cmath>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n-C\bCl\bla\bas\bss\bse\bes\bs\n- class \u00a0 _\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\b _\bP_\bA_\bT_\bC_\bH_\b__\bT_\bA_\bB_\bL_\bE_\b _\b>\n-\u00a0\n- class \u00a0 _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bC_\ba_\bc_\bh_\be_\bT_\b<_\b _\bE_\bV_\bA_\bL_\bU_\bA_\bT_\bO_\bR_\b _\b>\n-\u00a0\n-struct \u00a0 _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bC_\ba_\bc_\bh_\be_\bT_\b<_\b _\bE_\bV_\bA_\bL_\bU_\bA_\bT_\bO_\bR_\b _\b>_\b:_\b:_\bE_\bn_\bt_\br_\by\n-\u00a0\n- class \u00a0 _\bM_\be_\bs_\bh_\b<_\b _\bV_\bE_\bR_\bT_\bE_\bX_\b__\bB_\bU_\bF_\bF_\bE_\bR_\b,_\b _\bS_\bT_\bE_\bN_\bC_\bI_\bL_\b__\bT_\bA_\bB_\bL_\bE_\b,_\b _\bE_\bV_\bA_\bL_\bU_\bA_\bT_\bO_\bR_\b,_\b _\bP_\bA_\bT_\bC_\bH_\b__\bT_\bA_\bB_\bL_\bE_\b,\n-         _\bD_\bE_\bV_\bI_\bC_\bE_\b__\bC_\bO_\bN_\bT_\bE_\bX_\bT_\b _\b>\n-\u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n-\u00a0\n-T\bTy\byp\bpe\bed\bde\bef\bfs\bs\n-typedef std::bitset< _\bN_\bU_\bM_\b__\bM_\bE_\bS_\bH_\b__\bB_\bI_\bT_\bS >\u00a0 _\bM_\be_\bs_\bh_\bB_\bi_\bt_\bs_\be_\bt\n-\u00a0\n-E\bEn\bnu\bum\bme\ber\bra\bat\bti\bio\bon\bns\bs\n-enum \u00a0 _\bM_\be_\bs_\bh_\bB_\bi_\bt_\bs {\n-       \u00a0\u00a0_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be = 0 ,\n-       \u00a0\u00a0_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bl_\be_\ba_\bv_\be_\bV_\ba_\br_\by_\bi_\bn_\bg = 1 ,\n-       \u00a0\u00a0_\bM_\be_\bs_\bh_\bF_\bV_\ba_\br_\bD_\ba_\bt_\ba = 2 ,\n-       \u00a0\u00a0_\bM_\be_\bs_\bh_\bF_\bV_\ba_\br_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be = 3 ,\n-       \u00a0\u00a0_\bM_\be_\bs_\bh_\bU_\bs_\be_\bS_\bm_\bo_\bo_\bt_\bh_\bC_\bo_\br_\bn_\be_\br_\bP_\ba_\bt_\bc_\bh = 4 ,\n-       \u00a0\u00a0_\bM_\be_\bs_\bh_\bU_\bs_\be_\bS_\bi_\bn_\bg_\bl_\be_\bC_\br_\be_\ba_\bs_\be_\bP_\ba_\bt_\bc_\bh = 5 ,\n-       \u00a0\u00a0_\bM_\be_\bs_\bh_\bU_\bs_\be_\bI_\bn_\bf_\bS_\bh_\ba_\br_\bp_\bP_\ba_\bt_\bc_\bh = 6 ,\n-       \u00a0\u00a0_\bM_\be_\bs_\bh_\bE_\bn_\bd_\bC_\ba_\bp_\bB_\bi_\bl_\bi_\bn_\be_\ba_\br_\bB_\ba_\bs_\bi_\bs = 7 ,\n-       \u00a0\u00a0_\bM_\be_\bs_\bh_\bE_\bn_\bd_\bC_\ba_\bp_\bB_\bS_\bp_\bl_\bi_\bn_\be_\bB_\ba_\bs_\bi_\bs = 8 ,\n-       \u00a0\u00a0_\bM_\be_\bs_\bh_\bE_\bn_\bd_\bC_\ba_\bp_\bG_\br_\be_\bg_\bo_\br_\by_\bB_\ba_\bs_\bi_\bs = 9 ,\n-       \u00a0\u00a0_\bM_\be_\bs_\bh_\bE_\bn_\bd_\bC_\ba_\bp_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by = 10 ,\n-       \u00a0\u00a0_\bN_\bU_\bM_\b__\bM_\bE_\bS_\bH_\b__\bB_\bI_\bT_\bS = 11\n-       }\n-\u00a0\n-F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n-template<typename STENCIL_TABLE , typename SRC_STENCIL_TABLE , typename\n-DEVICE_CONTEXT >\n-         STENCIL_TABLE const *\u00a0 _\bc_\bo_\bn_\bv_\be_\br_\bt_\bT_\bo_\bC_\bo_\bm_\bp_\ba_\bt_\bi_\bb_\bl_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n-                                (SRC_STENCIL_TABLE const *table, DEVICE_CONTEXT\n-                                *context)\n-\u00a0\n-                     template<>\n-     _\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *\u00a0 _\bc_\bo_\bn_\bv_\be_\br_\bt_\bT_\bo_\bC_\bo_\bm_\bp_\ba_\bt_\bi_\bb_\bl_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b<_\b _\bF_\ba_\br_\b:_\b:\n-                                _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b,_\b _\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b,_\b _\bv_\bo_\bi_\bd_\b _\b> (_\bF_\ba_\br_\b:_\b:\n-                                _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *table, void *)\n-\u00a0\n-                     template<>\n-_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *\u00a0 _\bc_\bo_\bn_\bv_\be_\br_\bt_\bT_\bo_\bC_\bo_\bm_\bp_\ba_\bt_\bi_\bb_\bl_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b<_\b _\bF_\ba_\br_\b:_\b:\n-                                _\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b,_\b _\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b,_\b _\bv_\bo_\bi_\bd\n-                                _\b> (_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *table, void *)\n-\u00a0\n-                     template<>\n-     _\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *\u00a0 _\bc_\bo_\bn_\bv_\be_\br_\bt_\bT_\bo_\bC_\bo_\bm_\bp_\ba_\bt_\bi_\bb_\bl_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b<_\b _\bF_\ba_\br_\b:_\b:\n-                                _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b,_\b _\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b,\n-                                _\bI_\bD_\b3_\bD_\b1_\b1_\bD_\be_\bv_\bi_\bc_\be_\bC_\bo_\bn_\bt_\be_\bx_\bt_\b _\b> (_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const\n-                                *table, ID3D11DeviceContext *)\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bm_\be_\bs_\bh_\b._\bh\n+    * _\bs_\bd_\bc\n+    * _\bl_\bo_\bo_\bp_\bS_\bc_\bh_\be_\bm_\be_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00872_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00872_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/mesh.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/sdc/loopScheme.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">mesh.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">loopScheme.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00872.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2013 Pixar</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2014 DreamWorks Animation LLC.</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -118,886 +118,618 @@\n <div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_MESH_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_MESH_H</span></div>\n-<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n-<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &lt;bitset&gt;</span></div>\n+<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_SDC_LOOP_SCHEME_H</span></div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#define OPENSUBDIV3_SDC_LOOP_SCHEME_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span> </div>\n+<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span> </div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#include &quot;../sdc/scheme.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span> </div>\n <div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &lt;cassert&gt;</span></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &lt;cstring&gt;</span></div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"preprocessor\">#include &lt;vector&gt;</span></div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span> </div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"preprocessor\">#include &quot;../far/topologyRefiner.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"preprocessor\">#include &quot;../far/patchTableFactory.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"preprocessor\">#include &quot;../far/stencilTable.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"preprocessor\">#include &quot;../far/stencilTableFactory.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span> </div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"preprocessor\">#include &quot;../osd/bufferDescriptor.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span> </div>\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span><span class=\"keyword\">struct </span>ID3D11DeviceContext;</div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &lt;cmath&gt;</span></div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"keyword\">namespace </span>Sdc {</div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span> </div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span> </div>\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"comment\">//  Specializations for Sdc::Scheme&lt;SCHEME_LOOP&gt;:</span></div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span> </div>\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span> </div>\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span><span class=\"keyword\">namespace </span>Osd {</div>\n-<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00049\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492\">   49</a></span><span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492\">MeshBits</a> {</div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492adef344bcbdd50a1a93136eb53183c718\">   50</a></span>    <a class=\"code hl_enumvalue\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492adef344bcbdd50a1a93136eb53183c718\">MeshAdaptive</a>             = 0,</div>\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a9313c644b9b2a998bcb55cfcc4582b1a\">   51</a></span>    <a class=\"code hl_enumvalue\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a9313c644b9b2a998bcb55cfcc4582b1a\">MeshInterleaveVarying</a>    = 1,</div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492ac10e41fef659f3b3a1b730319bdedb45\">   52</a></span>    <a class=\"code hl_enumvalue\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492ac10e41fef659f3b3a1b730319bdedb45\">MeshFVarData</a>             = 2,</div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a9b8a23ab039e120012bc7c622308d603\">   53</a></span>    <a class=\"code hl_enumvalue\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a9b8a23ab039e120012bc7c622308d603\">MeshFVarAdaptive</a>         = 3,</div>\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492ab32b8ef595539e14041e2fb0e619e3f9\">   54</a></span>    <a class=\"code hl_enumvalue\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492ab32b8ef595539e14041e2fb0e619e3f9\">MeshUseSmoothCornerPatch</a> = 4,</div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a9058d69e1089fc77f1974a76c34e2071\">   55</a></span>    <a class=\"code hl_enumvalue\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a9058d69e1089fc77f1974a76c34e2071\">MeshUseSingleCreasePatch</a> = 5,</div>\n-<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a8fab1b3018f94b5b2432c7435e795925\">   56</a></span>    <a class=\"code hl_enumvalue\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a8fab1b3018f94b5b2432c7435e795925\">MeshUseInfSharpPatch</a>     = 6,</div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a4124233e4f787f999c7975afceab34f3\">   57</a></span>    <a class=\"code hl_enumvalue\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a4124233e4f787f999c7975afceab34f3\">MeshEndCapBilinearBasis</a>  = 7,  <span class=\"comment\">// exclusive</span></div>\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492aa2f41b6ba0393698bb3af283283737f7\">   58</a></span>    <a class=\"code hl_enumvalue\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492aa2f41b6ba0393698bb3af283283737f7\">MeshEndCapBSplineBasis</a>   = 8,  <span class=\"comment\">// exclusive</span></div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492aa2878e1a215530f5f6fb89f1e06f91ee\">   59</a></span>    <a class=\"code hl_enumvalue\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492aa2878e1a215530f5f6fb89f1e06f91ee\">MeshEndCapGregoryBasis</a>   = 9,  <span class=\"comment\">// exclusive</span></div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492aad7b3fb2be609abdbfafaf5b1c834158\">   60</a></span>    <a class=\"code hl_enumvalue\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492aad7b3fb2be609abdbfafaf5b1c834158\">MeshEndCapLegacyGregory</a>  = 10, <span class=\"comment\">// exclusive</span></div>\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a5676712c77d29cfdd330e2802db1c464\">   61</a></span>    <a class=\"code hl_enumvalue\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a5676712c77d29cfdd330e2802db1c464\">NUM_MESH_BITS</a>            = 11,</div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html#a85ba9df501aea9af1ec9da1558c255bc\">   63</a></span><span class=\"keyword\">typedef</span> std::bitset&lt;NUM_MESH_BITS&gt; <a class=\"code hl_typedef\" href=\"a00912.html#a85ba9df501aea9af1ec9da1558c255bc\">MeshBitset</a>;</div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span> </div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span><span class=\"comment\">// ---------------------------------------------------------------------------</span></div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span> </div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> PATCH_TABLE&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00068\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01269.html\">   68</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01269.html\">MeshInterface</a> {</div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01269.html#adf9352136d44e5999629c6b4530bf4e0\">   70</a></span>    <span class=\"keyword\">typedef</span> PATCH_TABLE <a class=\"code hl_typedef\" href=\"a01269.html#adf9352136d44e5999629c6b4530bf4e0\">PatchTable</a>;</div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01269.html#a9cf40ecf1b9b5c29507fe92a03f37a3c\">   71</a></span>    <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> PatchTable::VertexBufferBinding <a class=\"code hl_typedef\" href=\"a01269.html#a9cf40ecf1b9b5c29507fe92a03f37a3c\">VertexBufferBinding</a>;</div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span> </div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01269.html#a97aeac9a21a88e08fc89852a92011bea\">   74</a></span>    <a class=\"code hl_function\" href=\"a01269.html#a97aeac9a21a88e08fc89852a92011bea\">MeshInterface</a>() { }</div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span> </div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01269.html#a7ae07c3be3d1d28183ee669ab9739bf2\">   76</a></span>    <span class=\"keyword\">virtual</span> <a class=\"code hl_function\" href=\"a01269.html#a7ae07c3be3d1d28183ee669ab9739bf2\">~MeshInterface</a>() { }</div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span> </div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01269.html#a431ba3d2dd158085dd98ac0a74b6852e\">   78</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01269.html#a431ba3d2dd158085dd98ac0a74b6852e\">GetNumVertices</a>() <span class=\"keyword\">const</span> = 0;</div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span> </div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01269.html#a17f6f0b76abe06cfe6f518f6b84baf43\">   80</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01269.html#a17f6f0b76abe06cfe6f518f6b84baf43\">GetMaxValence</a>() <span class=\"keyword\">const</span> = 0;</div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span> </div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01269.html#a5c79ce02489e8591ee2d2bfbfab155ec\">   82</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01269.html#a5c79ce02489e8591ee2d2bfbfab155ec\">UpdateVertexBuffer</a>(<span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> *vertexData,</div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>                                    <span class=\"keywordtype\">int</span> startVertex, <span class=\"keywordtype\">int</span> numVerts) = 0;</div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span> </div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01269.html#a46c5effb867afe6684124103763ea931\">   85</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01269.html#a46c5effb867afe6684124103763ea931\">UpdateVaryingBuffer</a>(<span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> *varyingData,</div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>                                     <span class=\"keywordtype\">int</span> startVertex, <span class=\"keywordtype\">int</span> numVerts) = 0;</div>\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span><span class=\"comment\">//  Loop traits:</span></div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n+<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#a0e02d297f903bddcf8bc10c0ae17ad3c\">   48</a></span><span class=\"keyword\">inline</span> <a class=\"code hl_enumeration\" href=\"a00913.html#a61ef2f8f765ba17f8036bcc0f0fa887b\">Split</a> <a class=\"code hl_function\" href=\"a01341.html#a14b97ddde5fba31ca7f933508ee649da\">Scheme&lt;SCHEME_LOOP&gt;::GetTopologicalSplitType</a>() { <span class=\"keywordflow\">return</span> <a class=\"code hl_enumvalue\" href=\"a00913.html#a61ef2f8f765ba17f8036bcc0f0fa887ba31959b36c678fcb560f478ecb7c051f5\">SPLIT_TO_TRIS</a>; }</div>\n+<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span> </div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#a36744b2ac3801874da987d36851be86c\">   51</a></span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01341.html#a531004716c07aad5436cb2db27e1ec24\">Scheme&lt;SCHEME_LOOP&gt;::GetRegularFaceSize</a>() { <span class=\"keywordflow\">return</span> 3; }</div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span> </div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#ad46ad6c30664729d163c5fcc20cdf917\">   54</a></span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01341.html#a8f7e983b2195ac6b388c7a6db17f8cb0\">Scheme&lt;SCHEME_LOOP&gt;::GetRegularVertexValence</a>() { <span class=\"keywordflow\">return</span> 6; }</div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span> </div>\n+<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#a953430a884584e984c0afbb058091be1\">   57</a></span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01341.html#a73cf51e4315ca86e5e0a3954c92f8f74\">Scheme&lt;SCHEME_LOOP&gt;::GetLocalNeighborhoodSize</a>() { <span class=\"keywordflow\">return</span> 1; }</div>\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span> </div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span> </div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span><span class=\"comment\">//  Protected methods to assign the two types of masks for an edge-vertex --</span></div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span><span class=\"comment\">//  Crease and Smooth.</span></div>\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span><span class=\"comment\">//  The Crease case does not really need to be specialized, though it may be</span></div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span><span class=\"comment\">//  preferable to define all explicitly here.</span></div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> EDGE, <span class=\"keyword\">typename</span> MASK&gt;</div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00070\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#a0b9bc37795aeebc3e732c117a5934426\">   70</a></span><a class=\"code hl_function\" href=\"a01341.html#a56964a4c783aa15ec1f819306ee9f214\">Scheme&lt;SCHEME_LOOP&gt;::assignCreaseMaskForEdge</a>(EDGE <span class=\"keyword\">const</span>&amp;, MASK&amp; mask)<span class=\"keyword\"> const</span></div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span><span class=\"keyword\"></span>{</div>\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>    mask.SetNumVertexWeights(2);</div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span>    mask.SetNumEdgeWeights(0);</div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span>    mask.SetNumFaceWeights(0);</div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span>    mask.SetFaceWeightsForFaceCenters(<span class=\"keyword\">false</span>);</div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span> </div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span>    mask.VertexWeight(0) = 0.5f;</div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span>    mask.VertexWeight(1) = 0.5f;</div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span> </div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> EDGE, <span class=\"keyword\">typename</span> MASK&gt;</div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00084\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#a16cbaf7f173cf2fdc02c992d3a31c925\">   84</a></span><a class=\"code hl_function\" href=\"a01341.html#a059f5c2c9193be58be31955e987a0600\">Scheme&lt;SCHEME_LOOP&gt;::assignSmoothMaskForEdge</a>(EDGE <span class=\"keyword\">const</span>&amp; edge, MASK&amp; mask)<span class=\"keyword\"> const</span></div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span><span class=\"keyword\"></span>{</div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>    <span class=\"keywordtype\">int</span> faceCount = edge.GetNumFaces();</div>\n <div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span> </div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01269.html#a9a90398ba2073fe3da454f6b00deb33c\">   88</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01269.html#a9a90398ba2073fe3da454f6b00deb33c\">Refine</a>() = 0;</div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span> </div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01269.html#ae13c194d355f54c75f87897e3c5beb6b\">   90</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01269.html#ae13c194d355f54c75f87897e3c5beb6b\">Synchronize</a>() = 0;</div>\n-<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span> </div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01269.html#a6a57ae718d1dcdeb05728bca6f18ba4e\">   92</a></span>    <span class=\"keyword\">virtual</span> <a class=\"code hl_typedef\" href=\"a01269.html#adf9352136d44e5999629c6b4530bf4e0\">PatchTable</a> * <a class=\"code hl_function\" href=\"a01269.html#a6a57ae718d1dcdeb05728bca6f18ba4e\">GetPatchTable</a>() <span class=\"keyword\">const</span> = 0;</div>\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span> </div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01269.html#a15628b18e19d90e91fdbd659925ae5c0\">   94</a></span>    <span class=\"keyword\">virtual</span> <a class=\"code hl_class\" href=\"a00993.html\">Far::PatchTable</a> <span class=\"keyword\">const</span> *<a class=\"code hl_function\" href=\"a01269.html#a15628b18e19d90e91fdbd659925ae5c0\">GetFarPatchTable</a>() <span class=\"keyword\">const</span> = 0;</div>\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span> </div>\n-<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01269.html#a9d8ecd607dbb0749a55113224fbd39c4\">   96</a></span>    <span class=\"keyword\">virtual</span> <a class=\"code hl_typedef\" href=\"a01269.html#a9cf40ecf1b9b5c29507fe92a03f37a3c\">VertexBufferBinding</a> <a class=\"code hl_function\" href=\"a01269.html#a9d8ecd607dbb0749a55113224fbd39c4\">BindVertexBuffer</a>() = 0;</div>\n-<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span> </div>\n-<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01269.html#abcdcb8fab7865dc196900b37c2e2d279\">   98</a></span>    <span class=\"keyword\">virtual</span> <a class=\"code hl_typedef\" href=\"a01269.html#a9cf40ecf1b9b5c29507fe92a03f37a3c\">VertexBufferBinding</a> <a class=\"code hl_function\" href=\"a01269.html#abcdcb8fab7865dc196900b37c2e2d279\">BindVaryingBuffer</a>() = 0;</div>\n-<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span> </div>\n-<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span><span class=\"keyword\">protected</span>:</div>\n-<div class=\"foldopen\" id=\"foldopen00101\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01269.html#a51f237c3f08f6ddc2ea7ba5cb0d00b36\">  101</a></span>    <span class=\"keyword\">static</span> <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01269.html#a51f237c3f08f6ddc2ea7ba5cb0d00b36\">refineMesh</a>(<a class=\"code hl_class\" href=\"a01121.html\">Far::TopologyRefiner</a> &amp; refiner,</div>\n-<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span>                                  <span class=\"keywordtype\">int</span> level, <span class=\"keywordtype\">bool</span> adaptive,</div>\n-<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span>                                  <span class=\"keywordtype\">bool</span> singleCreasePatch) {</div>\n-<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span>        <span class=\"keywordflow\">if</span> (adaptive) {</div>\n-<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span>            <a class=\"code hl_struct\" href=\"a01129.html\">Far::TopologyRefiner::AdaptiveOptions</a> options(level);</div>\n-<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span>            options.<a class=\"code hl_variable\" href=\"a01129.html#a5834971432c649e28d5a0186f79a60d5\">useSingleCreasePatch</a> = singleCreasePatch;</div>\n-<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span>            refiner.<a class=\"code hl_function\" href=\"a01121.html#aff92309935db19988908471bee4fef4d\">RefineAdaptive</a>(options);</div>\n-<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span>            <span class=\"comment\">//  This dependency on FVar channels should not be necessary</span></div>\n-<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span>            <span class=\"keywordtype\">bool</span> fullTopologyInLastLevel = refiner.<a class=\"code hl_function\" href=\"a01121.html#aa9be824a572029f3ec1e0c0d6cfecd77\">GetNumFVarChannels</a>()&gt;0;</div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>    mask.SetNumVertexWeights(2);</div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>    mask.SetNumEdgeWeights(0);</div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>    mask.SetNumFaceWeights(faceCount);</div>\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>    mask.SetFaceWeightsForFaceCenters(<span class=\"keyword\">false</span>);</div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span> </div>\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>    <span class=\"comment\">//  This is where we run into the issue of &quot;face weights&quot; -- we want to weight the</span></div>\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span>    <span class=\"comment\">//  face-centers for Catmark, but face-centers are not generated for Loop.  So do</span></div>\n+<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span>    <span class=\"comment\">//  we make assumptions on how the mask is used, assign some property to the mask</span></div>\n+<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>    <span class=\"comment\">//  to indicate how they were assigned, or take input from the mask itself?</span></div>\n+<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span>    <span class=\"comment\">//  Regardless, we have two choices:</span></div>\n+<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span>    <span class=\"comment\">//      - face-weights are for the vertices opposite the edge (as in Hbr):</span></div>\n+<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span>    <span class=\"comment\">//          vertex weights = 0.375f;</span></div>\n+<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span>    <span class=\"comment\">//          face weights   = 0.125f;</span></div>\n+<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span>    <span class=\"comment\">//      - face-weights are for the face centers:</span></div>\n+<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span>    <span class=\"comment\">//          vertex weights = 0.125f;</span></div>\n+<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span>    <span class=\"comment\">//          face weights   = 0.375f;</span></div>\n+<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span>    <span class=\"comment\">//  Coincidentally the coefficients are the same but reversed.</span></div>\n+<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span>    <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> MASK::Weight Weight;</div>\n <div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span> </div>\n-<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span>            <a class=\"code hl_struct\" href=\"a01125.html\">Far::TopologyRefiner::UniformOptions</a> options(level);</div>\n-<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span>            options.<a class=\"code hl_variable\" href=\"a01125.html#ad58e8c2606ce33af17bb83fb90eb7325\">fullTopologyInLastLevel</a> = fullTopologyInLastLevel;</div>\n-<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span>            refiner.<a class=\"code hl_function\" href=\"a01121.html#ad22b7ffd9f8f3b488e5f220cf00c8c82\">RefineUniform</a>(options);</div>\n-<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span>        }</div>\n-<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\">  116</span>    }</div>\n-</div>\n-<div class=\"foldopen\" id=\"foldopen00117\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01269.html#a173851f742adc30ac139af96fe63732d\">  117</a></span>    <span class=\"keyword\">static</span> <span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01269.html#a173851f742adc30ac139af96fe63732d\">refineMesh</a>(<a class=\"code hl_class\" href=\"a01121.html\">Far::TopologyRefiner</a> &amp; refiner,</div>\n-<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\">  118</span>                                  <span class=\"keywordtype\">int</span> level, <a class=\"code hl_typedef\" href=\"a00912.html#a85ba9df501aea9af1ec9da1558c255bc\">MeshBitset</a> bits) {</div>\n-<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span>        <span class=\"keywordflow\">if</span> (bits.test(<a class=\"code hl_enumvalue\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492adef344bcbdd50a1a93136eb53183c718\">MeshAdaptive</a>)) {</div>\n-<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span>            <a class=\"code hl_struct\" href=\"a01129.html\">Far::TopologyRefiner::AdaptiveOptions</a> options(level);</div>\n-<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\">  121</span>            options.<a class=\"code hl_variable\" href=\"a01129.html#a5834971432c649e28d5a0186f79a60d5\">useSingleCreasePatch</a> = bits.test(<a class=\"code hl_enumvalue\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a9058d69e1089fc77f1974a76c34e2071\">MeshUseSingleCreasePatch</a>);</div>\n-<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span>            options.<a class=\"code hl_variable\" href=\"a01129.html#a5eba866952b7be15b065060b1f5a81da\">useInfSharpPatch</a> = bits.test(<a class=\"code hl_enumvalue\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a8fab1b3018f94b5b2432c7435e795925\">MeshUseInfSharpPatch</a>);</div>\n-<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span>            options.<a class=\"code hl_variable\" href=\"a01129.html#a74c90a5955fcad9c95d4c18346f7c312\">considerFVarChannels</a> = bits.test(<a class=\"code hl_enumvalue\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a9b8a23ab039e120012bc7c622308d603\">MeshFVarAdaptive</a>);</div>\n-<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span>            refiner.<a class=\"code hl_function\" href=\"a01121.html#aff92309935db19988908471bee4fef4d\">RefineAdaptive</a>(options);</div>\n-<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span>            <span class=\"comment\">//  This dependency on FVar channels should not be necessary</span></div>\n-<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span>            <span class=\"keywordtype\">bool</span> fullTopologyInLastLevel = refiner.<a class=\"code hl_function\" href=\"a01121.html#aa9be824a572029f3ec1e0c0d6cfecd77\">GetNumFVarChannels</a>()&gt;0;</div>\n-<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span> </div>\n-<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span>            <a class=\"code hl_struct\" href=\"a01125.html\">Far::TopologyRefiner::UniformOptions</a> options(level);</div>\n-<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span>            options.<a class=\"code hl_variable\" href=\"a01125.html#ad58e8c2606ce33af17bb83fb90eb7325\">fullTopologyInLastLevel</a> = fullTopologyInLastLevel;</div>\n-<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\">  131</span>            refiner.<a class=\"code hl_function\" href=\"a01121.html#ad22b7ffd9f8f3b488e5f220cf00c8c82\">RefineUniform</a>(options);</div>\n-<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\">  132</span>        }</div>\n-<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\">  133</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\">  134</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\">  135</span> </div>\n-<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\">  136</span><span class=\"comment\">// ---------------------------------------------------------------------------</span></div>\n-<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\">  137</span> </div>\n-<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\">  138</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> STENCIL_TABLE, <span class=\"keyword\">typename</span> SRC_STENCIL_TABLE,</div>\n-<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\">  139</span>          <span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n-<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\">  140</span>STENCIL_TABLE <span class=\"keyword\">const</span> *</div>\n-<div class=\"foldopen\" id=\"foldopen00141\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html#a06ceddf21c024b341a5b946049cd701a\">  141</a></span><a class=\"code hl_function\" href=\"a00912.html#a06ceddf21c024b341a5b946049cd701a\">convertToCompatibleStencilTable</a>(</div>\n-<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span>    SRC_STENCIL_TABLE <span class=\"keyword\">const</span> *table, DEVICE_CONTEXT *context) {</div>\n-<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\">  143</span>    <span class=\"keywordflow\">if</span> (! table) <span class=\"keywordflow\">return</span> NULL;</div>\n-<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\">  144</span>    <span class=\"keywordflow\">return</span> STENCIL_TABLE::Create(table, context);</div>\n-<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\">  145</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\">  146</span> </div>\n-<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\">  147</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00148\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html#a33f9830228f847fae1c30c9dffe02b5a\">  148</a></span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a01065.html\">Far::StencilTable</a> <span class=\"keyword\">const</span> *</div>\n-<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\">  149</span><a class=\"code hl_function\" href=\"a00912.html#a33f9830228f847fae1c30c9dffe02b5a\">convertToCompatibleStencilTable&lt;Far::StencilTable, Far::StencilTable, void&gt;</a>(</div>\n-<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\">  150</span>    <a class=\"code hl_class\" href=\"a01065.html\">Far::StencilTable</a> <span class=\"keyword\">const</span> *table, <span class=\"keywordtype\">void</span> *  <span class=\"comment\">/*context*/</span>) {</div>\n-<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\">  151</span>    <span class=\"comment\">// no need for conversion</span></div>\n-<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\">  152</span>    <span class=\"comment\">// XXX: We don&#39;t want to even copy.</span></div>\n-<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\">  153</span>    <span class=\"keywordflow\">if</span> (! table) <span class=\"keywordflow\">return</span> NULL;</div>\n-<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\">  154</span>    <span class=\"keywordflow\">return</span> <span class=\"keyword\">new</span> <a class=\"code hl_class\" href=\"a01065.html\">Far::StencilTable</a>(*table);</div>\n-<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\">  155</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\">  156</span> </div>\n-<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\">  157</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00158\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html#a4c2520cc1a8a5a03e3f53584629d7318\">  158</a></span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a01081.html\">Far::LimitStencilTable</a> <span class=\"keyword\">const</span> *</div>\n-<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\">  159</span><a class=\"code hl_function\" href=\"a00912.html#a4c2520cc1a8a5a03e3f53584629d7318\">convertToCompatibleStencilTable&lt;Far::LimitStencilTable, Far::LimitStencilTable, void&gt;</a>(</div>\n-<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\">  160</span>    <a class=\"code hl_class\" href=\"a01081.html\">Far::LimitStencilTable</a> <span class=\"keyword\">const</span> *table, <span class=\"keywordtype\">void</span> *  <span class=\"comment\">/*context*/</span>) {</div>\n-<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\">  161</span>    <span class=\"comment\">// no need for conversion</span></div>\n-<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\">  162</span>    <span class=\"comment\">// XXX: We don&#39;t want to even copy.</span></div>\n-<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\">  163</span>    <span class=\"keywordflow\">if</span> (! table) <span class=\"keywordflow\">return</span> NULL;</div>\n-<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\">  164</span>    <span class=\"keywordflow\">return</span> <span class=\"keyword\">new</span> <a class=\"code hl_class\" href=\"a01081.html\">Far::LimitStencilTable</a>(*table);</div>\n-<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\">  165</span>}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\">  166</span> </div>\n-<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\">  167</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00168\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html#ab5753a2b0a0995c8e2259d2c4765f7df\">  168</a></span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a01065.html\">Far::StencilTable</a> <span class=\"keyword\">const</span> *</div>\n-<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\">  169</span><a class=\"code hl_function\" href=\"a00912.html#ab5753a2b0a0995c8e2259d2c4765f7df\">convertToCompatibleStencilTable&lt;Far::StencilTable, Far::StencilTable, ID3D11DeviceContext&gt;</a>(</div>\n-<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\">  170</span>    <a class=\"code hl_class\" href=\"a01065.html\">Far::StencilTable</a> <span class=\"keyword\">const</span> *table, ID3D11DeviceContext *  <span class=\"comment\">/*context*/</span>) {</div>\n-<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span>    <span class=\"comment\">// no need for conversion</span></div>\n-<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\">  172</span>    <span class=\"comment\">// XXX: We don&#39;t want to even copy.</span></div>\n-<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\">  173</span>    <span class=\"keywordflow\">if</span> (! table) <span class=\"keywordflow\">return</span> NULL;</div>\n-<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\">  174</span>    <span class=\"keywordflow\">return</span> <span class=\"keyword\">new</span> <a class=\"code hl_class\" href=\"a01065.html\">Far::StencilTable</a>(*table);</div>\n+<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span>    Weight vWeight = mask.AreFaceWeightsForFaceCenters() ? 0.125f : 0.375f;</div>\n+<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span>    Weight fWeight = mask.AreFaceWeightsForFaceCenters() ? 0.375f : 0.125f;</div>\n+<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span> </div>\n+<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span>    mask.VertexWeight(0) = vWeight;</div>\n+<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\">  116</span>    mask.VertexWeight(1) = vWeight;</div>\n+<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span> </div>\n+<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\">  118</span>    <span class=\"keywordflow\">if</span> (faceCount == 2) {</div>\n+<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span>        mask.FaceWeight(0) = fWeight;</div>\n+<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span>        mask.FaceWeight(1) = fWeight;</div>\n+<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\">  121</span>    } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span>        <span class=\"comment\">//  The non-manifold case is not clearly defined -- we adjust the above</span></div>\n+<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span>        <span class=\"comment\">//  face-weight to preserve the ratio of edge-center and face-centers:</span></div>\n+<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span>        fWeight *= 2.0f / (Weight) faceCount;</div>\n+<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span>        <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; faceCount; ++i) {</div>\n+<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span>            mask.FaceWeight(i) = fWeight;</div>\n+<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span>        }</div>\n+<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span>    }</div>\n+<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span> </div>\n+<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\">  131</span> </div>\n+<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\">  132</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\">  133</span><span class=\"comment\">//  Protected methods to assign the three types of masks for a vertex-vertex --</span></div>\n+<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\">  134</span><span class=\"comment\">//  Corner, Crease and Smooth (Dart is the same as Smooth).</span></div>\n+<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\">  135</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\">  136</span><span class=\"comment\">//  Corner and Crease do not really need to be specialized, though it may be</span></div>\n+<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\">  137</span><span class=\"comment\">//  preferable to define all explicitly here.</span></div>\n+<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\">  138</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\">  139</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n+<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\">  140</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK&gt;</div>\n+<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\">  141</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00142\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#a69f605f0483a055ef68c29fd0d9d10d2\">  142</a></span><a class=\"code hl_function\" href=\"a01341.html#a77644f69ede03fa62222d60a99970238\">Scheme&lt;SCHEME_LOOP&gt;::assignCornerMaskForVertex</a>(VERTEX <span class=\"keyword\">const</span>&amp;, MASK&amp; mask)<span class=\"keyword\"> const</span></div>\n+<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\">  143</span><span class=\"keyword\"></span>{</div>\n+<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\">  144</span>    mask.SetNumVertexWeights(1);</div>\n+<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\">  145</span>    mask.SetNumEdgeWeights(0);</div>\n+<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\">  146</span>    mask.SetNumFaceWeights(0);</div>\n+<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\">  147</span>    mask.SetFaceWeightsForFaceCenters(<span class=\"keyword\">false</span>);</div>\n+<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\">  148</span> </div>\n+<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\">  149</span>    mask.VertexWeight(0) = 1.0f;</div>\n+<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\">  150</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\">  151</span> </div>\n+<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\">  152</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n+<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\">  153</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK&gt;</div>\n+<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\">  154</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00155\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#aae024a2b2e5e40f3f35c836beaee2acf\">  155</a></span><a class=\"code hl_function\" href=\"a01341.html#a2439e78373d9dfd6ad3ab373c7c32dcc\">Scheme&lt;SCHEME_LOOP&gt;::assignCreaseMaskForVertex</a>(VERTEX <span class=\"keyword\">const</span>&amp; vertex, MASK&amp; mask,</div>\n+<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\">  156</span>                                               <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> creaseEnds[2])<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\">  157</span>    <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> MASK::Weight Weight;</div>\n+<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\">  158</span> </div>\n+<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\">  159</span>    <span class=\"keywordtype\">int</span> valence = vertex.GetNumEdges();</div>\n+<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\">  160</span> </div>\n+<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\">  161</span>    mask.SetNumVertexWeights(1);</div>\n+<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\">  162</span>    mask.SetNumEdgeWeights(valence);</div>\n+<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\">  163</span>    mask.SetNumFaceWeights(0);</div>\n+<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\">  164</span>    mask.SetFaceWeightsForFaceCenters(<span class=\"keyword\">false</span>);</div>\n+<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\">  165</span> </div>\n+<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\">  166</span>    Weight vWeight = 0.75f;</div>\n+<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\">  167</span>    Weight eWeight = 0.125f;</div>\n+<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\">  168</span> </div>\n+<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\">  169</span>    mask.VertexWeight(0) = vWeight;</div>\n+<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\">  170</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; valence; ++i) {</div>\n+<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span>        mask.EdgeWeight(i) = 0.0f;</div>\n+<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\">  172</span>    }</div>\n+<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\">  173</span>    mask.EdgeWeight(creaseEnds[0]) = eWeight;</div>\n+<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\">  174</span>    mask.EdgeWeight(creaseEnds[1]) = eWeight;</div>\n <div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\">  175</span>}</div>\n </div>\n <div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\">  176</span> </div>\n-<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span><span class=\"comment\">// ---------------------------------------------------------------------------</span></div>\n-<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\">  178</span> </div>\n-<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\">  179</span><span class=\"comment\">// Osd evaluator cache: for the GPU backends require compiled instance</span></div>\n-<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\">  180</span><span class=\"comment\">//   (GLXFB, GLCompute, CL)</span></div>\n-<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\">  181</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\">  182</span><span class=\"comment\">// note: this is just an example usage and client applications are supposed</span></div>\n-<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\">  183</span><span class=\"comment\">//       to implement their own structure for Evaluator instance.</span></div>\n-<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\">  184</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\">  185</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> EVALUATOR&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00186\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01273.html\">  186</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01273.html\">EvaluatorCacheT</a> {</div>\n-<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\">  187</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"foldopen\" id=\"foldopen00188\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01273.html#a922392890afb6e4f8d4d08845244f145\">  188</a></span>    <a class=\"code hl_function\" href=\"a01273.html#a922392890afb6e4f8d4d08845244f145\">~EvaluatorCacheT</a>() {</div>\n-<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\">  189</span>        <span class=\"keywordflow\">for</span>(<span class=\"keyword\">typename</span> Evaluators::iterator it = _evaluators.begin();</div>\n-<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\">  190</span>            it != _evaluators.end(); ++it) {</div>\n-<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\">  191</span>            <span class=\"keyword\">delete</span> it-&gt;evaluator;</div>\n-<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\">  192</span>        }</div>\n-<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\">  193</span>    }</div>\n-</div>\n+<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n+<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\">  178</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK&gt;</div>\n+<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\">  179</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00180\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#ad60bcde0b6056db8500466af6951d05a\">  180</a></span><a class=\"code hl_function\" href=\"a01341.html#a84788a5a93f17e648103123c9f4a33f9\">Scheme&lt;SCHEME_LOOP&gt;::assignSmoothMaskForVertex</a>(VERTEX <span class=\"keyword\">const</span>&amp; vertex, MASK&amp; mask)<span class=\"keyword\"> const</span></div>\n+<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\">  181</span><span class=\"keyword\"></span>{</div>\n+<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\">  182</span>    <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> MASK::Weight Weight;</div>\n+<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\">  183</span> </div>\n+<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\">  184</span>    <span class=\"keywordtype\">int</span> valence = vertex.GetNumFaces();</div>\n+<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\">  185</span> </div>\n+<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\">  186</span>    mask.SetNumVertexWeights(1);</div>\n+<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\">  187</span>    mask.SetNumEdgeWeights(valence);</div>\n+<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\">  188</span>    mask.SetNumFaceWeights(0);</div>\n+<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\">  189</span>    mask.SetFaceWeightsForFaceCenters(<span class=\"keyword\">false</span>);</div>\n+<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\">  190</span> </div>\n+<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\">  191</span>    <span class=\"comment\">//  Specialize for the regular case:  1/16 per edge-vert, 5/8 for the vert itself:</span></div>\n+<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\">  192</span>    Weight eWeight = (Weight) 0.0625f;</div>\n+<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\">  193</span>    Weight vWeight = (Weight) 0.625f;</div>\n <div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\">  194</span> </div>\n-<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\">  195</span>    <span class=\"comment\">// XXX: FIXME, linear search</span></div>\n-<div class=\"foldopen\" id=\"foldopen00196\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01277.html\">  196</a></span>    <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a01277.html\">Entry</a> {</div>\n-<div class=\"foldopen\" id=\"foldopen00197\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01277.html#ada6adfb697358377d8da9232690daae2\">  197</a></span>        <a class=\"code hl_function\" href=\"a01277.html#ada6adfb697358377d8da9232690daae2\">Entry</a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDescArg,</div>\n-<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\">  198</span>              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDescArg,</div>\n-<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\">  199</span>              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDescArg,</div>\n-<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\">  200</span>              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDescArg,</div>\n-<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\">  201</span>              EVALUATOR *evalArg) : <a class=\"code hl_variable\" href=\"a01277.html#a5d0b0430c7584408dbcd788f52b80fd4\">srcDesc</a>(srcDescArg), <a class=\"code hl_variable\" href=\"a01277.html#a463eaf3e8922e8aadc9e5eb0998067a9\">dstDesc</a>(dstDescArg),</div>\n-<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\">  202</span>                              <a class=\"code hl_variable\" href=\"a01277.html#a598ff84099694191b9815ad4528750d6\">duDesc</a>(duDescArg), <a class=\"code hl_variable\" href=\"a01277.html#ae8a207538288cc8048fab45cf824dc7e\">dvDesc</a>(dvDescArg),</div>\n-<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\">  203</span>                              <a class=\"code hl_variable\" href=\"a01277.html#a6f1841c958530d57dca2cf8e449623cc\">duuDesc</a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>()),</div>\n-<div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\">  204</span>                              <a class=\"code hl_variable\" href=\"a01277.html#a32b5fd50dc24be2bdd0c0ce3a68c352e\">duvDesc</a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>()),</div>\n-<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\">  205</span>                              <a class=\"code hl_variable\" href=\"a01277.html#a1b564bc13c46807d779bd7e9a74a6e73\">dvvDesc</a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>()),</div>\n-<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\">  206</span>                              <a class=\"code hl_variable\" href=\"a01277.html#a8fdf9373eaeffa18a4674b9316c12d23\">evaluator</a>(evalArg) {}</div>\n-</div>\n-<div class=\"foldopen\" id=\"foldopen00207\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01277.html#a0d596cc177157da972daa1a9911027a8\">  207</a></span>        <a class=\"code hl_function\" href=\"a01277.html#a0d596cc177157da972daa1a9911027a8\">Entry</a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDescArg,</div>\n-<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\">  208</span>              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDescArg,</div>\n-<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\">  209</span>              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDescArg,</div>\n-<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\">  210</span>              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDescArg,</div>\n-<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\">  211</span>              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDescArg,</div>\n-<div class=\"line\"><a id=\"l00212\" name=\"l00212\"></a><span class=\"lineno\">  212</span>              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDescArg,</div>\n-<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\">  213</span>              <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDescArg,</div>\n-<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\">  214</span>              EVALUATOR *evalArg) : <a class=\"code hl_variable\" href=\"a01277.html#a5d0b0430c7584408dbcd788f52b80fd4\">srcDesc</a>(srcDescArg), <a class=\"code hl_variable\" href=\"a01277.html#a463eaf3e8922e8aadc9e5eb0998067a9\">dstDesc</a>(dstDescArg),</div>\n-<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\">  215</span>                              <a class=\"code hl_variable\" href=\"a01277.html#a598ff84099694191b9815ad4528750d6\">duDesc</a>(duDescArg), <a class=\"code hl_variable\" href=\"a01277.html#ae8a207538288cc8048fab45cf824dc7e\">dvDesc</a>(dvDescArg),</div>\n-<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\">  216</span>                              <a class=\"code hl_variable\" href=\"a01277.html#a6f1841c958530d57dca2cf8e449623cc\">duuDesc</a>(duuDescArg),</div>\n-<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\">  217</span>                              <a class=\"code hl_variable\" href=\"a01277.html#a32b5fd50dc24be2bdd0c0ce3a68c352e\">duvDesc</a>(duvDescArg),</div>\n-<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\">  218</span>                              <a class=\"code hl_variable\" href=\"a01277.html#a1b564bc13c46807d779bd7e9a74a6e73\">dvvDesc</a>(dvvDescArg),</div>\n-<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\">  219</span>                              <a class=\"code hl_variable\" href=\"a01277.html#a8fdf9373eaeffa18a4674b9316c12d23\">evaluator</a>(evalArg) {}</div>\n-</div>\n-<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01277.html#a463eaf3e8922e8aadc9e5eb0998067a9\">  220</a></span>        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <a class=\"code hl_variable\" href=\"a01277.html#a5d0b0430c7584408dbcd788f52b80fd4\">srcDesc</a>, <a class=\"code hl_variable\" href=\"a01277.html#a463eaf3e8922e8aadc9e5eb0998067a9\">dstDesc</a>;</div>\n-<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01277.html#a598ff84099694191b9815ad4528750d6\">  221</a></span>        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <a class=\"code hl_variable\" href=\"a01277.html#a598ff84099694191b9815ad4528750d6\">duDesc</a>, <a class=\"code hl_variable\" href=\"a01277.html#ae8a207538288cc8048fab45cf824dc7e\">dvDesc</a>;</div>\n-<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01277.html#a6f1841c958530d57dca2cf8e449623cc\">  222</a></span>        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <a class=\"code hl_variable\" href=\"a01277.html#a6f1841c958530d57dca2cf8e449623cc\">duuDesc</a>, <a class=\"code hl_variable\" href=\"a01277.html#a32b5fd50dc24be2bdd0c0ce3a68c352e\">duvDesc</a>, <a class=\"code hl_variable\" href=\"a01277.html#a1b564bc13c46807d779bd7e9a74a6e73\">dvvDesc</a>;</div>\n-<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01277.html#a8fdf9373eaeffa18a4674b9316c12d23\">  223</a></span>        EVALUATOR *<a class=\"code hl_variable\" href=\"a01277.html#a8fdf9373eaeffa18a4674b9316c12d23\">evaluator</a>;</div>\n-<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\">  224</span>    };</div>\n-</div>\n-<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01273.html#aa3bf448cf35c2b498ee29830343fe2de\">  225</a></span>    <span class=\"keyword\">typedef</span> std::vector&lt;Entry&gt; <a class=\"code hl_typedef\" href=\"a01273.html#aa3bf448cf35c2b498ee29830343fe2de\">Evaluators</a>;</div>\n-<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\">  226</span> </div>\n-<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\">  227</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00228\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01273.html#a7d2e3a44295a45db4d6cf935b53c3cbe\">  228</a></span>    EVALUATOR *<a class=\"code hl_function\" href=\"a01273.html#a7d2e3a44295a45db4d6cf935b53c3cbe\">GetEvaluator</a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\">  229</span>                            <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\">  230</span>                            DEVICE_CONTEXT *deviceContext) {</div>\n-<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\">  231</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01273.html#a7d2e3a44295a45db4d6cf935b53c3cbe\">GetEvaluator</a>(srcDesc, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\">  232</span>                            <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\">  233</span>                            <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\">  234</span>                            <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\">  235</span>                            <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\">  236</span>                            <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\">  237</span>                            deviceContext);</div>\n-<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\">  238</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\">  239</span> </div>\n-<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\">  240</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00241\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01273.html#a323bd60a5b0a37389ea7990836f12e18\">  241</a></span>    EVALUATOR *<a class=\"code hl_function\" href=\"a01273.html#a323bd60a5b0a37389ea7990836f12e18\">GetEvaluator</a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\">  242</span>                            <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\">  243</span>                            <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\">  244</span>                            <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00245\" name=\"l00245\"></a><span class=\"lineno\">  245</span>                            DEVICE_CONTEXT *deviceContext) {</div>\n-<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\">  246</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01273.html#a7d2e3a44295a45db4d6cf935b53c3cbe\">GetEvaluator</a>(srcDesc, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00247\" name=\"l00247\"></a><span class=\"lineno\">  247</span>                            duDesc, dvDesc,</div>\n-<div class=\"line\"><a id=\"l00248\" name=\"l00248\"></a><span class=\"lineno\">  248</span>                            <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l00249\" name=\"l00249\"></a><span class=\"lineno\">  249</span>                            <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l00250\" name=\"l00250\"></a><span class=\"lineno\">  250</span>                            <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(),</div>\n-<div class=\"line\"><a id=\"l00251\" name=\"l00251\"></a><span class=\"lineno\">  251</span>                            deviceContext);</div>\n-<div class=\"line\"><a id=\"l00252\" name=\"l00252\"></a><span class=\"lineno\">  252</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00253\" name=\"l00253\"></a><span class=\"lineno\">  253</span> </div>\n-<div class=\"line\"><a id=\"l00254\" name=\"l00254\"></a><span class=\"lineno\">  254</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00255\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00255\" name=\"l00255\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01273.html#a6026c1c3d9b42543c0ed159214f99cc2\">  255</a></span>    EVALUATOR *<a class=\"code hl_function\" href=\"a01273.html#a6026c1c3d9b42543c0ed159214f99cc2\">GetEvaluator</a>(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00256\" name=\"l00256\"></a><span class=\"lineno\">  256</span>                            <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00257\" name=\"l00257\"></a><span class=\"lineno\">  257</span>                            <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00258\" name=\"l00258\"></a><span class=\"lineno\">  258</span>                            <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00259\" name=\"l00259\"></a><span class=\"lineno\">  259</span>                            <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l00260\" name=\"l00260\"></a><span class=\"lineno\">  260</span>                            <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l00261\" name=\"l00261\"></a><span class=\"lineno\">  261</span>                            <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00262\" name=\"l00262\"></a><span class=\"lineno\">  262</span>                            DEVICE_CONTEXT *deviceContext) {</div>\n-<div class=\"line\"><a id=\"l00263\" name=\"l00263\"></a><span class=\"lineno\">  263</span> </div>\n-<div class=\"line\"><a id=\"l00264\" name=\"l00264\"></a><span class=\"lineno\">  264</span>        <span class=\"keywordflow\">for</span>(<span class=\"keyword\">typename</span> Evaluators::iterator it = _evaluators.begin();</div>\n-<div class=\"line\"><a id=\"l00265\" name=\"l00265\"></a><span class=\"lineno\">  265</span>            it != _evaluators.end(); ++it) {</div>\n-<div class=\"line\"><a id=\"l00266\" name=\"l00266\"></a><span class=\"lineno\">  266</span>            <span class=\"keywordflow\">if</span> (isEqual(srcDesc, it-&gt;srcDesc) &amp;&amp;</div>\n-<div class=\"line\"><a id=\"l00267\" name=\"l00267\"></a><span class=\"lineno\">  267</span>                isEqual(dstDesc, it-&gt;dstDesc) &amp;&amp;</div>\n-<div class=\"line\"><a id=\"l00268\" name=\"l00268\"></a><span class=\"lineno\">  268</span>                isEqual(duDesc,  it-&gt;duDesc) &amp;&amp;</div>\n-<div class=\"line\"><a id=\"l00269\" name=\"l00269\"></a><span class=\"lineno\">  269</span>                isEqual(dvDesc,  it-&gt;dvDesc) &amp;&amp;</div>\n-<div class=\"line\"><a id=\"l00270\" name=\"l00270\"></a><span class=\"lineno\">  270</span>                isEqual(duuDesc, it-&gt;duuDesc) &amp;&amp;</div>\n-<div class=\"line\"><a id=\"l00271\" name=\"l00271\"></a><span class=\"lineno\">  271</span>                isEqual(duvDesc, it-&gt;duvDesc) &amp;&amp;</div>\n-<div class=\"line\"><a id=\"l00272\" name=\"l00272\"></a><span class=\"lineno\">  272</span>                isEqual(dvvDesc, it-&gt;dvvDesc)) {</div>\n-<div class=\"line\"><a id=\"l00273\" name=\"l00273\"></a><span class=\"lineno\">  273</span>                <span class=\"keywordflow\">return</span> it-&gt;evaluator;</div>\n-<div class=\"line\"><a id=\"l00274\" name=\"l00274\"></a><span class=\"lineno\">  274</span>            }</div>\n-<div class=\"line\"><a id=\"l00275\" name=\"l00275\"></a><span class=\"lineno\">  275</span>        }</div>\n-<div class=\"line\"><a id=\"l00276\" name=\"l00276\"></a><span class=\"lineno\">  276</span>        EVALUATOR *e = EVALUATOR::Create(srcDesc, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00277\" name=\"l00277\"></a><span class=\"lineno\">  277</span>                                         duDesc, dvDesc,</div>\n-<div class=\"line\"><a id=\"l00278\" name=\"l00278\"></a><span class=\"lineno\">  278</span>                                         duuDesc, duvDesc, dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00279\" name=\"l00279\"></a><span class=\"lineno\">  279</span>                                         deviceContext);</div>\n-<div class=\"line\"><a id=\"l00280\" name=\"l00280\"></a><span class=\"lineno\">  280</span>        _evaluators.push_back(<a class=\"code hl_struct\" href=\"a01277.html\">Entry</a>(srcDesc, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00281\" name=\"l00281\"></a><span class=\"lineno\">  281</span>                                    duDesc, dvDesc,</div>\n-<div class=\"line\"><a id=\"l00282\" name=\"l00282\"></a><span class=\"lineno\">  282</span>                                    duuDesc, duvDesc, dvvDesc, e));</div>\n-<div class=\"line\"><a id=\"l00283\" name=\"l00283\"></a><span class=\"lineno\">  283</span>        <span class=\"keywordflow\">return</span> e;</div>\n-<div class=\"line\"><a id=\"l00284\" name=\"l00284\"></a><span class=\"lineno\">  284</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00285\" name=\"l00285\"></a><span class=\"lineno\">  285</span> </div>\n-<div class=\"line\"><a id=\"l00286\" name=\"l00286\"></a><span class=\"lineno\">  286</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00287\" name=\"l00287\"></a><span class=\"lineno\">  287</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> isEqual(<a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;a,</div>\n-<div class=\"line\"><a id=\"l00288\" name=\"l00288\"></a><span class=\"lineno\">  288</span>                        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;b) {</div>\n-<div class=\"line\"><a id=\"l00289\" name=\"l00289\"></a><span class=\"lineno\">  289</span>        <span class=\"keywordtype\">int</span> offsetA = a.<a class=\"code hl_variable\" href=\"a01141.html#a08f66a6870d87afcd5dc1b60d1019692\">stride</a> ? (a.<a class=\"code hl_variable\" href=\"a01141.html#aed7ea92f45bd273dde380a45ddced592\">offset</a> % a.<a class=\"code hl_variable\" href=\"a01141.html#a08f66a6870d87afcd5dc1b60d1019692\">stride</a>) : 0;</div>\n-<div class=\"line\"><a id=\"l00290\" name=\"l00290\"></a><span class=\"lineno\">  290</span>        <span class=\"keywordtype\">int</span> offsetB = b.<a class=\"code hl_variable\" href=\"a01141.html#a08f66a6870d87afcd5dc1b60d1019692\">stride</a> ? (b.<a class=\"code hl_variable\" href=\"a01141.html#aed7ea92f45bd273dde380a45ddced592\">offset</a> % b.<a class=\"code hl_variable\" href=\"a01141.html#a08f66a6870d87afcd5dc1b60d1019692\">stride</a>) : 0;</div>\n-<div class=\"line\"><a id=\"l00291\" name=\"l00291\"></a><span class=\"lineno\">  291</span> </div>\n-<div class=\"line\"><a id=\"l00292\" name=\"l00292\"></a><span class=\"lineno\">  292</span>        <span class=\"comment\">// Note: XFB kernel needs to be configured with the local offset</span></div>\n-<div class=\"line\"><a id=\"l00293\" name=\"l00293\"></a><span class=\"lineno\">  293</span>        <span class=\"comment\">// of the dstDesc to skip preceding primvars.</span></div>\n-<div class=\"line\"><a id=\"l00294\" name=\"l00294\"></a><span class=\"lineno\">  294</span>        <span class=\"keywordflow\">return</span> (offsetA == offsetB &amp;&amp;</div>\n-<div class=\"line\"><a id=\"l00295\" name=\"l00295\"></a><span class=\"lineno\">  295</span>                a.<a class=\"code hl_variable\" href=\"a01141.html#a9f59b34b1f25fe00023291b678246bcc\">length</a> == b.<a class=\"code hl_variable\" href=\"a01141.html#a9f59b34b1f25fe00023291b678246bcc\">length</a> &amp;&amp;</div>\n-<div class=\"line\"><a id=\"l00296\" name=\"l00296\"></a><span class=\"lineno\">  296</span>                a.<a class=\"code hl_variable\" href=\"a01141.html#a08f66a6870d87afcd5dc1b60d1019692\">stride</a> == b.<a class=\"code hl_variable\" href=\"a01141.html#a08f66a6870d87afcd5dc1b60d1019692\">stride</a>);</div>\n-<div class=\"line\"><a id=\"l00297\" name=\"l00297\"></a><span class=\"lineno\">  297</span>    }</div>\n-<div class=\"line\"><a id=\"l00298\" name=\"l00298\"></a><span class=\"lineno\">  298</span> </div>\n-<div class=\"line\"><a id=\"l00299\" name=\"l00299\"></a><span class=\"lineno\">  299</span>    <a class=\"code hl_typedef\" href=\"a01273.html#aa3bf448cf35c2b498ee29830343fe2de\">Evaluators</a> _evaluators;</div>\n-<div class=\"line\"><a id=\"l00300\" name=\"l00300\"></a><span class=\"lineno\">  300</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00301\" name=\"l00301\"></a><span class=\"lineno\">  301</span> </div>\n-<div class=\"line\"><a id=\"l00303\" name=\"l00303\"></a><span class=\"lineno\">  303</span> </div>\n-<div class=\"line\"><a id=\"l00304\" name=\"l00304\"></a><span class=\"lineno\">  304</span><span class=\"comment\">// template helpers to see if the evaluator is instantiatable or not.</span></div>\n-<div class=\"line\"><a id=\"l00305\" name=\"l00305\"></a><span class=\"lineno\">  305</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> EVALUATOR&gt;</div>\n-<div class=\"line\"><a id=\"l00306\" name=\"l00306\"></a><span class=\"lineno\">  306</span><span class=\"keyword\">struct </span>instantiatable</div>\n-<div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\">  307</span>{</div>\n-<div class=\"line\"><a id=\"l00308\" name=\"l00308\"></a><span class=\"lineno\">  308</span>    <span class=\"keyword\">typedef</span> <span class=\"keywordtype\">char</span> yes[1];</div>\n-<div class=\"line\"><a id=\"l00309\" name=\"l00309\"></a><span class=\"lineno\">  309</span>    <span class=\"keyword\">typedef</span> <span class=\"keywordtype\">char</span> no[2];</div>\n-<div class=\"line\"><a id=\"l00310\" name=\"l00310\"></a><span class=\"lineno\">  310</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> C&gt; <span class=\"keyword\">static</span> yes &amp;chk(<span class=\"keyword\">typename</span> C::Instantiatable *t=0);</div>\n-<div class=\"line\"><a id=\"l00311\" name=\"l00311\"></a><span class=\"lineno\">  311</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> C&gt; <span class=\"keyword\">static</span> no  &amp;chk(...);</div>\n-<div class=\"line\"><a id=\"l00312\" name=\"l00312\"></a><span class=\"lineno\">  312</span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">bool</span> <span class=\"keyword\">const</span> value = <span class=\"keyword\">sizeof</span>(chk&lt;EVALUATOR&gt;(0)) == <span class=\"keyword\">sizeof</span>(yes);</div>\n-<div class=\"line\"><a id=\"l00313\" name=\"l00313\"></a><span class=\"lineno\">  313</span>};</div>\n-<div class=\"line\"><a id=\"l00314\" name=\"l00314\"></a><span class=\"lineno\">  314</span><span class=\"keyword\">template</span> &lt;<span class=\"keywordtype\">bool</span> C, <span class=\"keyword\">typename</span> T=<span class=\"keywordtype\">void</span>&gt;</div>\n-<div class=\"line\"><a id=\"l00315\" name=\"l00315\"></a><span class=\"lineno\">  315</span><span class=\"keyword\">struct </span>enable_if { <span class=\"keyword\">typedef</span> T type; };</div>\n-<div class=\"line\"><a id=\"l00316\" name=\"l00316\"></a><span class=\"lineno\">  316</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> T&gt;</div>\n-<div class=\"line\"><a id=\"l00317\" name=\"l00317\"></a><span class=\"lineno\">  317</span><span class=\"keyword\">struct </span>enable_if&lt;false, T&gt; { };</div>\n-<div class=\"line\"><a id=\"l00318\" name=\"l00318\"></a><span class=\"lineno\">  318</span> </div>\n-<div class=\"line\"><a id=\"l00320\" name=\"l00320\"></a><span class=\"lineno\">  320</span> </div>\n-<div class=\"line\"><a id=\"l00321\" name=\"l00321\"></a><span class=\"lineno\">  321</span><span class=\"comment\">// extract a kernel from cache if available</span></div>\n-<div class=\"line\"><a id=\"l00322\" name=\"l00322\"></a><span class=\"lineno\">  322</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> EVALUATOR, <span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n-<div class=\"line\"><a id=\"l00323\" name=\"l00323\"></a><span class=\"lineno\">  323</span><span class=\"keyword\">static</span> EVALUATOR *GetEvaluator(</div>\n-<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\">  324</span>    EvaluatorCacheT&lt;EVALUATOR&gt; *cache,</div>\n-<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\">  325</span>    BufferDescriptor <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\">  326</span>    BufferDescriptor <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\">  327</span>    BufferDescriptor <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\">  328</span>    BufferDescriptor <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\">  329</span>    BufferDescriptor <span class=\"keyword\">const</span> &amp;duuDesc,</div>\n-<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\">  330</span>    BufferDescriptor <span class=\"keyword\">const</span> &amp;duvDesc,</div>\n-<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\">  331</span>    BufferDescriptor <span class=\"keyword\">const</span> &amp;dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\">  332</span>    DEVICE_CONTEXT deviceContext,</div>\n-<div class=\"line\"><a id=\"l00333\" name=\"l00333\"></a><span class=\"lineno\">  333</span>    <span class=\"keyword\">typename</span> enable_if&lt;instantiatable&lt;EVALUATOR&gt;::value, <span class=\"keywordtype\">void</span>&gt;::type*t=0) {</div>\n-<div class=\"line\"><a id=\"l00334\" name=\"l00334\"></a><span class=\"lineno\">  334</span>    (void)t;</div>\n-<div class=\"line\"><a id=\"l00335\" name=\"l00335\"></a><span class=\"lineno\">  335</span>    <span class=\"keywordflow\">if</span> (cache == NULL) <span class=\"keywordflow\">return</span> NULL;</div>\n-<div class=\"line\"><a id=\"l00336\" name=\"l00336\"></a><span class=\"lineno\">  336</span>    <span class=\"keywordflow\">return</span> cache-&gt;GetEvaluator(srcDesc, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00337\" name=\"l00337\"></a><span class=\"lineno\">  337</span>                               duDesc, dvDesc, duuDesc, duvDesc, dvvDesc,</div>\n-<div class=\"line\"><a id=\"l00338\" name=\"l00338\"></a><span class=\"lineno\">  338</span>                               deviceContext);</div>\n-<div class=\"line\"><a id=\"l00339\" name=\"l00339\"></a><span class=\"lineno\">  339</span>}</div>\n-<div class=\"line\"><a id=\"l00340\" name=\"l00340\"></a><span class=\"lineno\">  340</span> </div>\n-<div class=\"line\"><a id=\"l00341\" name=\"l00341\"></a><span class=\"lineno\">  341</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> EVALUATOR, <span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n-<div class=\"line\"><a id=\"l00342\" name=\"l00342\"></a><span class=\"lineno\">  342</span><span class=\"keyword\">static</span> EVALUATOR *GetEvaluator(</div>\n-<div class=\"line\"><a id=\"l00343\" name=\"l00343\"></a><span class=\"lineno\">  343</span>    EvaluatorCacheT&lt;EVALUATOR&gt; *cache,</div>\n-<div class=\"line\"><a id=\"l00344\" name=\"l00344\"></a><span class=\"lineno\">  344</span>    BufferDescriptor <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00345\" name=\"l00345\"></a><span class=\"lineno\">  345</span>    BufferDescriptor <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00346\" name=\"l00346\"></a><span class=\"lineno\">  346</span>    BufferDescriptor <span class=\"keyword\">const</span> &amp;duDesc,</div>\n-<div class=\"line\"><a id=\"l00347\" name=\"l00347\"></a><span class=\"lineno\">  347</span>    BufferDescriptor <span class=\"keyword\">const</span> &amp;dvDesc,</div>\n-<div class=\"line\"><a id=\"l00348\" name=\"l00348\"></a><span class=\"lineno\">  348</span>    DEVICE_CONTEXT deviceContext,</div>\n-<div class=\"line\"><a id=\"l00349\" name=\"l00349\"></a><span class=\"lineno\">  349</span>    <span class=\"keyword\">typename</span> enable_if&lt;instantiatable&lt;EVALUATOR&gt;::value, <span class=\"keywordtype\">void</span>&gt;::type*t=0) {</div>\n-<div class=\"line\"><a id=\"l00350\" name=\"l00350\"></a><span class=\"lineno\">  350</span>    (void)t;</div>\n-<div class=\"line\"><a id=\"l00351\" name=\"l00351\"></a><span class=\"lineno\">  351</span>    <span class=\"keywordflow\">if</span> (cache == NULL) <span class=\"keywordflow\">return</span> NULL;</div>\n-<div class=\"line\"><a id=\"l00352\" name=\"l00352\"></a><span class=\"lineno\">  352</span>    <span class=\"keywordflow\">return</span> cache-&gt;GetEvaluator(srcDesc, dstDesc, duDesc, dvDesc, deviceContext);</div>\n-<div class=\"line\"><a id=\"l00353\" name=\"l00353\"></a><span class=\"lineno\">  353</span>}</div>\n-<div class=\"line\"><a id=\"l00354\" name=\"l00354\"></a><span class=\"lineno\">  354</span> </div>\n-<div class=\"line\"><a id=\"l00355\" name=\"l00355\"></a><span class=\"lineno\">  355</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> EVALUATOR, <span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n-<div class=\"line\"><a id=\"l00356\" name=\"l00356\"></a><span class=\"lineno\">  356</span><span class=\"keyword\">static</span> EVALUATOR *GetEvaluator(</div>\n-<div class=\"line\"><a id=\"l00357\" name=\"l00357\"></a><span class=\"lineno\">  357</span>    EvaluatorCacheT&lt;EVALUATOR&gt; *cache,</div>\n-<div class=\"line\"><a id=\"l00358\" name=\"l00358\"></a><span class=\"lineno\">  358</span>    BufferDescriptor <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00359\" name=\"l00359\"></a><span class=\"lineno\">  359</span>    BufferDescriptor <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00360\" name=\"l00360\"></a><span class=\"lineno\">  360</span>    DEVICE_CONTEXT deviceContext,</div>\n-<div class=\"line\"><a id=\"l00361\" name=\"l00361\"></a><span class=\"lineno\">  361</span>    <span class=\"keyword\">typename</span> enable_if&lt;instantiatable&lt;EVALUATOR&gt;::value, <span class=\"keywordtype\">void</span>&gt;::type*t=0) {</div>\n-<div class=\"line\"><a id=\"l00362\" name=\"l00362\"></a><span class=\"lineno\">  362</span>    (void)t;</div>\n-<div class=\"line\"><a id=\"l00363\" name=\"l00363\"></a><span class=\"lineno\">  363</span>    <span class=\"keywordflow\">if</span> (cache == NULL) <span class=\"keywordflow\">return</span> NULL;</div>\n-<div class=\"line\"><a id=\"l00364\" name=\"l00364\"></a><span class=\"lineno\">  364</span>    <span class=\"keywordflow\">return</span> cache-&gt;GetEvaluator(srcDesc, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00365\" name=\"l00365\"></a><span class=\"lineno\">  365</span>                               BufferDescriptor(),</div>\n-<div class=\"line\"><a id=\"l00366\" name=\"l00366\"></a><span class=\"lineno\">  366</span>                               BufferDescriptor(),</div>\n-<div class=\"line\"><a id=\"l00367\" name=\"l00367\"></a><span class=\"lineno\">  367</span>                               deviceContext);</div>\n-<div class=\"line\"><a id=\"l00368\" name=\"l00368\"></a><span class=\"lineno\">  368</span>}</div>\n-<div class=\"line\"><a id=\"l00369\" name=\"l00369\"></a><span class=\"lineno\">  369</span> </div>\n-<div class=\"line\"><a id=\"l00370\" name=\"l00370\"></a><span class=\"lineno\">  370</span><span class=\"comment\">// fallback</span></div>\n-<div class=\"line\"><a id=\"l00371\" name=\"l00371\"></a><span class=\"lineno\">  371</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> EVALUATOR, <span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n-<div class=\"line\"><a id=\"l00372\" name=\"l00372\"></a><span class=\"lineno\">  372</span><span class=\"keyword\">static</span> EVALUATOR *GetEvaluator(</div>\n-<div class=\"line\"><a id=\"l00373\" name=\"l00373\"></a><span class=\"lineno\">  373</span>    EvaluatorCacheT&lt;EVALUATOR&gt; *,</div>\n-<div class=\"line\"><a id=\"l00374\" name=\"l00374\"></a><span class=\"lineno\">  374</span>    BufferDescriptor <span class=\"keyword\">const</span> &amp;,</div>\n-<div class=\"line\"><a id=\"l00375\" name=\"l00375\"></a><span class=\"lineno\">  375</span>    BufferDescriptor <span class=\"keyword\">const</span> &amp;,</div>\n-<div class=\"line\"><a id=\"l00376\" name=\"l00376\"></a><span class=\"lineno\">  376</span>    BufferDescriptor <span class=\"keyword\">const</span> &amp;,</div>\n-<div class=\"line\"><a id=\"l00377\" name=\"l00377\"></a><span class=\"lineno\">  377</span>    BufferDescriptor <span class=\"keyword\">const</span> &amp;,</div>\n-<div class=\"line\"><a id=\"l00378\" name=\"l00378\"></a><span class=\"lineno\">  378</span>    BufferDescriptor <span class=\"keyword\">const</span> &amp;,</div>\n-<div class=\"line\"><a id=\"l00379\" name=\"l00379\"></a><span class=\"lineno\">  379</span>    BufferDescriptor <span class=\"keyword\">const</span> &amp;,</div>\n-<div class=\"line\"><a id=\"l00380\" name=\"l00380\"></a><span class=\"lineno\">  380</span>    BufferDescriptor <span class=\"keyword\">const</span> &amp;,</div>\n-<div class=\"line\"><a id=\"l00381\" name=\"l00381\"></a><span class=\"lineno\">  381</span>    DEVICE_CONTEXT,</div>\n-<div class=\"line\"><a id=\"l00382\" name=\"l00382\"></a><span class=\"lineno\">  382</span>    <span class=\"keyword\">typename</span> enable_if&lt;!instantiatable&lt;EVALUATOR&gt;::value, <span class=\"keywordtype\">void</span>&gt;::type*t=0) {</div>\n-<div class=\"line\"><a id=\"l00383\" name=\"l00383\"></a><span class=\"lineno\">  383</span>    (void)t;</div>\n-<div class=\"line\"><a id=\"l00384\" name=\"l00384\"></a><span class=\"lineno\">  384</span>    <span class=\"keywordflow\">return</span> NULL;</div>\n-<div class=\"line\"><a id=\"l00385\" name=\"l00385\"></a><span class=\"lineno\">  385</span>}</div>\n-<div class=\"line\"><a id=\"l00386\" name=\"l00386\"></a><span class=\"lineno\">  386</span> </div>\n-<div class=\"line\"><a id=\"l00387\" name=\"l00387\"></a><span class=\"lineno\">  387</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> EVALUATOR, <span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n-<div class=\"line\"><a id=\"l00388\" name=\"l00388\"></a><span class=\"lineno\">  388</span><span class=\"keyword\">static</span> EVALUATOR *GetEvaluator(</div>\n-<div class=\"line\"><a id=\"l00389\" name=\"l00389\"></a><span class=\"lineno\">  389</span>    EvaluatorCacheT&lt;EVALUATOR&gt; *,</div>\n-<div class=\"line\"><a id=\"l00390\" name=\"l00390\"></a><span class=\"lineno\">  390</span>    BufferDescriptor <span class=\"keyword\">const</span> &amp;,</div>\n-<div class=\"line\"><a id=\"l00391\" name=\"l00391\"></a><span class=\"lineno\">  391</span>    BufferDescriptor <span class=\"keyword\">const</span> &amp;,</div>\n-<div class=\"line\"><a id=\"l00392\" name=\"l00392\"></a><span class=\"lineno\">  392</span>    BufferDescriptor <span class=\"keyword\">const</span> &amp;,</div>\n-<div class=\"line\"><a id=\"l00393\" name=\"l00393\"></a><span class=\"lineno\">  393</span>    BufferDescriptor <span class=\"keyword\">const</span> &amp;,</div>\n-<div class=\"line\"><a id=\"l00394\" name=\"l00394\"></a><span class=\"lineno\">  394</span>    DEVICE_CONTEXT,</div>\n-<div class=\"line\"><a id=\"l00395\" name=\"l00395\"></a><span class=\"lineno\">  395</span>    <span class=\"keyword\">typename</span> enable_if&lt;!instantiatable&lt;EVALUATOR&gt;::value, <span class=\"keywordtype\">void</span>&gt;::type*t=0) {</div>\n-<div class=\"line\"><a id=\"l00396\" name=\"l00396\"></a><span class=\"lineno\">  396</span>    (void)t;</div>\n-<div class=\"line\"><a id=\"l00397\" name=\"l00397\"></a><span class=\"lineno\">  397</span>    <span class=\"keywordflow\">return</span> NULL;</div>\n-<div class=\"line\"><a id=\"l00398\" name=\"l00398\"></a><span class=\"lineno\">  398</span>}</div>\n-<div class=\"line\"><a id=\"l00399\" name=\"l00399\"></a><span class=\"lineno\">  399</span> </div>\n-<div class=\"line\"><a id=\"l00400\" name=\"l00400\"></a><span class=\"lineno\">  400</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> EVALUATOR, <span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n-<div class=\"line\"><a id=\"l00401\" name=\"l00401\"></a><span class=\"lineno\">  401</span><span class=\"keyword\">static</span> EVALUATOR *GetEvaluator(</div>\n-<div class=\"line\"><a id=\"l00402\" name=\"l00402\"></a><span class=\"lineno\">  402</span>    EvaluatorCacheT&lt;EVALUATOR&gt; *,</div>\n-<div class=\"line\"><a id=\"l00403\" name=\"l00403\"></a><span class=\"lineno\">  403</span>    BufferDescriptor <span class=\"keyword\">const</span> &amp;,</div>\n-<div class=\"line\"><a id=\"l00404\" name=\"l00404\"></a><span class=\"lineno\">  404</span>    BufferDescriptor <span class=\"keyword\">const</span> &amp;,</div>\n-<div class=\"line\"><a id=\"l00405\" name=\"l00405\"></a><span class=\"lineno\">  405</span>    DEVICE_CONTEXT,</div>\n-<div class=\"line\"><a id=\"l00406\" name=\"l00406\"></a><span class=\"lineno\">  406</span>    <span class=\"keyword\">typename</span> enable_if&lt;!instantiatable&lt;EVALUATOR&gt;::value, <span class=\"keywordtype\">void</span>&gt;::type*t=0) {</div>\n-<div class=\"line\"><a id=\"l00407\" name=\"l00407\"></a><span class=\"lineno\">  407</span>    (void)t;</div>\n-<div class=\"line\"><a id=\"l00408\" name=\"l00408\"></a><span class=\"lineno\">  408</span>    <span class=\"keywordflow\">return</span> NULL;</div>\n-<div class=\"line\"><a id=\"l00409\" name=\"l00409\"></a><span class=\"lineno\">  409</span>}</div>\n-<div class=\"line\"><a id=\"l00410\" name=\"l00410\"></a><span class=\"lineno\">  410</span> </div>\n-<div class=\"line\"><a id=\"l00411\" name=\"l00411\"></a><span class=\"lineno\">  411</span><span class=\"comment\">// ---------------------------------------------------------------------------</span></div>\n-<div class=\"line\"><a id=\"l00412\" name=\"l00412\"></a><span class=\"lineno\">  412</span> </div>\n-<div class=\"line\"><a id=\"l00413\" name=\"l00413\"></a><span class=\"lineno\">  413</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> VERTEX_BUFFER,</div>\n-<div class=\"line\"><a id=\"l00414\" name=\"l00414\"></a><span class=\"lineno\">  414</span>          <span class=\"keyword\">typename</span> STENCIL_TABLE,</div>\n-<div class=\"line\"><a id=\"l00415\" name=\"l00415\"></a><span class=\"lineno\">  415</span>          <span class=\"keyword\">typename</span> EVALUATOR,</div>\n-<div class=\"line\"><a id=\"l00416\" name=\"l00416\"></a><span class=\"lineno\">  416</span>          <span class=\"keyword\">typename</span> PATCH_TABLE,</div>\n-<div class=\"line\"><a id=\"l00417\" name=\"l00417\"></a><span class=\"lineno\">  417</span>          <span class=\"keyword\">typename</span> DEVICE_CONTEXT = <span class=\"keywordtype\">void</span>&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00418\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00418\" name=\"l00418\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01281.html\">  418</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01281.html\">Mesh</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"a01269.html\">MeshInterface</a>&lt;PATCH_TABLE&gt; {</div>\n-<div class=\"line\"><a id=\"l00419\" name=\"l00419\"></a><span class=\"lineno\">  419</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00420\" name=\"l00420\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01281.html#a722ca2b35d7001c0eeb6298f2c3704ca\">  420</a></span>    <span class=\"keyword\">typedef</span> VERTEX_BUFFER <a class=\"code hl_typedef\" href=\"a01281.html#a722ca2b35d7001c0eeb6298f2c3704ca\">VertexBuffer</a>;</div>\n-<div class=\"line\"><a id=\"l00421\" name=\"l00421\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01281.html#a5613b23fcbadaf4ffe3dbe87c2d2e773\">  421</a></span>    <span class=\"keyword\">typedef</span> EVALUATOR <a class=\"code hl_typedef\" href=\"a01281.html#a5613b23fcbadaf4ffe3dbe87c2d2e773\">Evaluator</a>;</div>\n-<div class=\"line\"><a id=\"l00422\" name=\"l00422\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01281.html#a6b90e8290c540c78bedd053e2cc42f31\">  422</a></span>    <span class=\"keyword\">typedef</span> STENCIL_TABLE <a class=\"code hl_typedef\" href=\"a01281.html#a6b90e8290c540c78bedd053e2cc42f31\">StencilTable</a>;</div>\n-<div class=\"line\"><a id=\"l00423\" name=\"l00423\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01281.html#adf9352136d44e5999629c6b4530bf4e0\">  423</a></span>    <span class=\"keyword\">typedef</span> PATCH_TABLE <a class=\"code hl_typedef\" href=\"a01281.html#adf9352136d44e5999629c6b4530bf4e0\">PatchTable</a>;</div>\n-<div class=\"line\"><a id=\"l00424\" name=\"l00424\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01281.html#a3e2f358c45731eceb819ae70e7c8ca6e\">  424</a></span>    <span class=\"keyword\">typedef</span> DEVICE_CONTEXT <a class=\"code hl_typedef\" href=\"a01281.html#a3e2f358c45731eceb819ae70e7c8ca6e\">DeviceContext</a>;</div>\n-<div class=\"line\"><a id=\"l00425\" name=\"l00425\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01281.html#a81bf971c4b5d929fc29f37e38b519853\">  425</a></span>    <span class=\"keyword\">typedef</span> <a class=\"code hl_class\" href=\"a01273.html\">EvaluatorCacheT&lt;Evaluator&gt;</a> <a class=\"code hl_typedef\" href=\"a01281.html#a81bf971c4b5d929fc29f37e38b519853\">EvaluatorCache</a>;</div>\n-<div class=\"line\"><a id=\"l00426\" name=\"l00426\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01281.html#a9cf40ecf1b9b5c29507fe92a03f37a3c\">  426</a></span>    <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> PatchTable::VertexBufferBinding <a class=\"code hl_typedef\" href=\"a01281.html#a9cf40ecf1b9b5c29507fe92a03f37a3c\">VertexBufferBinding</a>;</div>\n-<div class=\"line\"><a id=\"l00427\" name=\"l00427\"></a><span class=\"lineno\">  427</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00428\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00428\" name=\"l00428\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01281.html#a69e70d7e23e9bd8bd8eb7b5f0589009f\">  428</a></span>    <a class=\"code hl_function\" href=\"a01281.html#a69e70d7e23e9bd8bd8eb7b5f0589009f\">Mesh</a>(<a class=\"code hl_class\" href=\"a01121.html\">Far::TopologyRefiner</a> * refiner,</div>\n-<div class=\"line\"><a id=\"l00429\" name=\"l00429\"></a><span class=\"lineno\">  429</span>         <span class=\"keywordtype\">int</span> numVertexElements,</div>\n-<div class=\"line\"><a id=\"l00430\" name=\"l00430\"></a><span class=\"lineno\">  430</span>         <span class=\"keywordtype\">int</span> numVaryingElements,</div>\n-<div class=\"line\"><a id=\"l00431\" name=\"l00431\"></a><span class=\"lineno\">  431</span>         <span class=\"keywordtype\">int</span> level,</div>\n-<div class=\"line\"><a id=\"l00432\" name=\"l00432\"></a><span class=\"lineno\">  432</span>         <a class=\"code hl_typedef\" href=\"a00912.html#a85ba9df501aea9af1ec9da1558c255bc\">MeshBitset</a> bits = <a class=\"code hl_typedef\" href=\"a00912.html#a85ba9df501aea9af1ec9da1558c255bc\">MeshBitset</a>(),</div>\n-<div class=\"line\"><a id=\"l00433\" name=\"l00433\"></a><span class=\"lineno\">  433</span>         <a class=\"code hl_class\" href=\"a01273.html\">EvaluatorCache</a> * evaluatorCache = NULL,</div>\n-<div class=\"line\"><a id=\"l00434\" name=\"l00434\"></a><span class=\"lineno\">  434</span>         <a class=\"code hl_typedef\" href=\"a01281.html#a3e2f358c45731eceb819ae70e7c8ca6e\">DeviceContext</a> * deviceContext = NULL) :</div>\n-<div class=\"line\"><a id=\"l00435\" name=\"l00435\"></a><span class=\"lineno\">  435</span> </div>\n-<div class=\"line\"><a id=\"l00436\" name=\"l00436\"></a><span class=\"lineno\">  436</span>            _refiner(refiner),</div>\n-<div class=\"line\"><a id=\"l00437\" name=\"l00437\"></a><span class=\"lineno\">  437</span>            _farPatchTable(NULL),</div>\n-<div class=\"line\"><a id=\"l00438\" name=\"l00438\"></a><span class=\"lineno\">  438</span>            _numVertices(0),</div>\n-<div class=\"line\"><a id=\"l00439\" name=\"l00439\"></a><span class=\"lineno\">  439</span>            _maxValence(0),</div>\n-<div class=\"line\"><a id=\"l00440\" name=\"l00440\"></a><span class=\"lineno\">  440</span>            _vertexBuffer(NULL),</div>\n-<div class=\"line\"><a id=\"l00441\" name=\"l00441\"></a><span class=\"lineno\">  441</span>            _varyingBuffer(NULL),</div>\n-<div class=\"line\"><a id=\"l00442\" name=\"l00442\"></a><span class=\"lineno\">  442</span>            _vertexStencilTable(NULL),</div>\n-<div class=\"line\"><a id=\"l00443\" name=\"l00443\"></a><span class=\"lineno\">  443</span>            _varyingStencilTable(NULL),</div>\n-<div class=\"line\"><a id=\"l00444\" name=\"l00444\"></a><span class=\"lineno\">  444</span>            _evaluatorCache(evaluatorCache),</div>\n-<div class=\"line\"><a id=\"l00445\" name=\"l00445\"></a><span class=\"lineno\">  445</span>            _patchTable(NULL),</div>\n-<div class=\"line\"><a id=\"l00446\" name=\"l00446\"></a><span class=\"lineno\">  446</span>            _deviceContext(deviceContext) {</div>\n+<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\">  195</span>    <span class=\"keywordflow\">if</span> (valence != 6) {</div>\n+<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\">  196</span>        <span class=\"comment\">//  From HbrLoopSubdivision&lt;T&gt;::Subdivide(mesh, vertex):</span></div>\n+<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\">  197</span>        <span class=\"comment\">//     - could use some lookup tables here for common irregular valence (5, 7, 8)</span></div>\n+<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\">  198</span>        <span class=\"comment\">//       or all of these cosine calls will be adding up...</span></div>\n+<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\">  199</span> </div>\n+<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\">  200</span>        <span class=\"keywordtype\">double</span> dValence   = (double) valence;</div>\n+<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\">  201</span>        <span class=\"keywordtype\">double</span> invValence = 1.0f / dValence;</div>\n+<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\">  202</span>        <span class=\"keywordtype\">double</span> cosTheta   = std::cos(M_PI * 2.0f * invValence);</div>\n+<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\">  203</span> </div>\n+<div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\">  204</span>        <span class=\"keywordtype\">double</span> beta = 0.25f * cosTheta + 0.375f;</div>\n+<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\">  205</span> </div>\n+<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\">  206</span>        eWeight = (Weight) ((0.625f - (beta * beta)) * invValence);</div>\n+<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\">  207</span>        vWeight = (Weight) (1.0f - (eWeight * dValence));</div>\n+<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\">  208</span>    }</div>\n+<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\">  209</span> </div>\n+<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\">  210</span>    mask.VertexWeight(0) = vWeight;</div>\n+<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\">  211</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; valence; ++i) {</div>\n+<div class=\"line\"><a id=\"l00212\" name=\"l00212\"></a><span class=\"lineno\">  212</span>        mask.EdgeWeight(i) = eWeight;</div>\n+<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\">  213</span>    }</div>\n+<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\">  214</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\">  215</span> </div>\n+<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\">  216</span> </div>\n+<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\">  217</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\">  218</span><span class=\"comment\">//  Limit masks for position:</span></div>\n+<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\">  219</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\">  220</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n+<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\">  221</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK&gt;</div>\n+<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\">  222</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00223\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#ab38c56ce6121aed94f2796bf5df894be\">  223</a></span><a class=\"code hl_function\" href=\"a01341.html#aa2821d365ea8135d6316c0f926f87ccb\">Scheme&lt;SCHEME_LOOP&gt;::assignCornerLimitMask</a>(VERTEX <span class=\"keyword\">const</span>&amp; <span class=\"comment\">/* vertex */</span>, MASK&amp; posMask)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\">  224</span> </div>\n+<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\">  225</span>    posMask.SetNumVertexWeights(1);</div>\n+<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\">  226</span>    posMask.SetNumEdgeWeights(0);</div>\n+<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\">  227</span>    posMask.SetNumFaceWeights(0);</div>\n+<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\">  228</span>    posMask.SetFaceWeightsForFaceCenters(<span class=\"keyword\">false</span>);</div>\n+<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\">  229</span> </div>\n+<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\">  230</span>    posMask.VertexWeight(0) = 1.0f;</div>\n+<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\">  231</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\">  232</span> </div>\n+<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\">  233</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n+<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\">  234</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK&gt;</div>\n+<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\">  235</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00236\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#ad439ba00463a7af51cf821692d6cc2e3\">  236</a></span><a class=\"code hl_function\" href=\"a01341.html#a7c9316f7212d3ea41db7f3f1a66cc7e5\">Scheme&lt;SCHEME_LOOP&gt;::assignCreaseLimitMask</a>(VERTEX <span class=\"keyword\">const</span>&amp; vertex, MASK&amp; posMask,</div>\n+<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\">  237</span>                                           <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> creaseEnds[2])<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\">  238</span> </div>\n+<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\">  239</span>    <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> MASK::Weight Weight;</div>\n+<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\">  240</span> </div>\n+<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\">  241</span>    <span class=\"keywordtype\">int</span> valence = vertex.GetNumEdges();</div>\n+<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\">  242</span> </div>\n+<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\">  243</span>    posMask.SetNumVertexWeights(1);</div>\n+<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\">  244</span>    posMask.SetNumEdgeWeights(valence);</div>\n+<div class=\"line\"><a id=\"l00245\" name=\"l00245\"></a><span class=\"lineno\">  245</span>    posMask.SetNumFaceWeights(0);</div>\n+<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\">  246</span>    posMask.SetFaceWeightsForFaceCenters(<span class=\"keyword\">false</span>);</div>\n+<div class=\"line\"><a id=\"l00247\" name=\"l00247\"></a><span class=\"lineno\">  247</span> </div>\n+<div class=\"line\"><a id=\"l00248\" name=\"l00248\"></a><span class=\"lineno\">  248</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00249\" name=\"l00249\"></a><span class=\"lineno\">  249</span>    <span class=\"comment\">//  The refinement mask for a crease vertex is (1/8, 3/4, 1/8) and for a crease</span></div>\n+<div class=\"line\"><a id=\"l00250\" name=\"l00250\"></a><span class=\"lineno\">  250</span>    <span class=\"comment\">//  edge is (1/2, 1/2) -- producing a uniform B-spline curve along the crease</span></div>\n+<div class=\"line\"><a id=\"l00251\" name=\"l00251\"></a><span class=\"lineno\">  251</span>    <span class=\"comment\">//  (boundary) whether the vertex or its crease is regular or not.  The limit</span></div>\n+<div class=\"line\"><a id=\"l00252\" name=\"l00252\"></a><span class=\"lineno\">  252</span>    <span class=\"comment\">//  mask is therefore (1/6, 2/3, 1/6) for ALL cases.</span></div>\n+<div class=\"line\"><a id=\"l00253\" name=\"l00253\"></a><span class=\"lineno\">  253</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00254\" name=\"l00254\"></a><span class=\"lineno\">  254</span>    <span class=\"comment\">//  An alternative limit mask (1/5, 3/5, 1/5) is often published for use either</span></div>\n+<div class=\"line\"><a id=\"l00255\" name=\"l00255\"></a><span class=\"lineno\">  255</span>    <span class=\"comment\">//  for irregular crease vertices or for all crease/boundary vertices, but this</span></div>\n+<div class=\"line\"><a id=\"l00256\" name=\"l00256\"></a><span class=\"lineno\">  256</span>    <span class=\"comment\">//  is based on an alternate refinement mask for the edge -- (3/8, 5/8) versus</span></div>\n+<div class=\"line\"><a id=\"l00257\" name=\"l00257\"></a><span class=\"lineno\">  257</span>    <span class=\"comment\">//  the usual (1/2, 1/2) -- and will not produce the B-spline curve desired.</span></div>\n+<div class=\"line\"><a id=\"l00258\" name=\"l00258\"></a><span class=\"lineno\">  258</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00259\" name=\"l00259\"></a><span class=\"lineno\">  259</span>    Weight vWeight = (Weight) (4.0 / 6.0);</div>\n+<div class=\"line\"><a id=\"l00260\" name=\"l00260\"></a><span class=\"lineno\">  260</span>    Weight eWeight = (Weight) (1.0 / 6.0);</div>\n+<div class=\"line\"><a id=\"l00261\" name=\"l00261\"></a><span class=\"lineno\">  261</span> </div>\n+<div class=\"line\"><a id=\"l00262\" name=\"l00262\"></a><span class=\"lineno\">  262</span>    posMask.VertexWeight(0) = vWeight;</div>\n+<div class=\"line\"><a id=\"l00263\" name=\"l00263\"></a><span class=\"lineno\">  263</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; valence; ++i) {</div>\n+<div class=\"line\"><a id=\"l00264\" name=\"l00264\"></a><span class=\"lineno\">  264</span>        posMask.EdgeWeight(i) = 0.0f;</div>\n+<div class=\"line\"><a id=\"l00265\" name=\"l00265\"></a><span class=\"lineno\">  265</span>    }</div>\n+<div class=\"line\"><a id=\"l00266\" name=\"l00266\"></a><span class=\"lineno\">  266</span>    posMask.EdgeWeight(creaseEnds[0]) = eWeight;</div>\n+<div class=\"line\"><a id=\"l00267\" name=\"l00267\"></a><span class=\"lineno\">  267</span>    posMask.EdgeWeight(creaseEnds[1]) = eWeight;</div>\n+<div class=\"line\"><a id=\"l00268\" name=\"l00268\"></a><span class=\"lineno\">  268</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00269\" name=\"l00269\"></a><span class=\"lineno\">  269</span> </div>\n+<div class=\"line\"><a id=\"l00270\" name=\"l00270\"></a><span class=\"lineno\">  270</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n+<div class=\"line\"><a id=\"l00271\" name=\"l00271\"></a><span class=\"lineno\">  271</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK&gt;</div>\n+<div class=\"line\"><a id=\"l00272\" name=\"l00272\"></a><span class=\"lineno\">  272</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00273\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00273\" name=\"l00273\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#adbc763184791a8854374af8b123fa242\">  273</a></span><a class=\"code hl_function\" href=\"a01341.html#a736c10944cb921b334fbd8b81866d59f\">Scheme&lt;SCHEME_LOOP&gt;::assignSmoothLimitMask</a>(VERTEX <span class=\"keyword\">const</span>&amp; vertex, MASK&amp; posMask)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00274\" name=\"l00274\"></a><span class=\"lineno\">  274</span> </div>\n+<div class=\"line\"><a id=\"l00275\" name=\"l00275\"></a><span class=\"lineno\">  275</span>    <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> MASK::Weight Weight;</div>\n+<div class=\"line\"><a id=\"l00276\" name=\"l00276\"></a><span class=\"lineno\">  276</span> </div>\n+<div class=\"line\"><a id=\"l00277\" name=\"l00277\"></a><span class=\"lineno\">  277</span>    <span class=\"keywordtype\">int</span> valence = vertex.GetNumFaces();</div>\n+<div class=\"line\"><a id=\"l00278\" name=\"l00278\"></a><span class=\"lineno\">  278</span> </div>\n+<div class=\"line\"><a id=\"l00279\" name=\"l00279\"></a><span class=\"lineno\">  279</span>    posMask.SetNumVertexWeights(1);</div>\n+<div class=\"line\"><a id=\"l00280\" name=\"l00280\"></a><span class=\"lineno\">  280</span>    posMask.SetNumEdgeWeights(valence);</div>\n+<div class=\"line\"><a id=\"l00281\" name=\"l00281\"></a><span class=\"lineno\">  281</span>    posMask.SetNumFaceWeights(0);</div>\n+<div class=\"line\"><a id=\"l00282\" name=\"l00282\"></a><span class=\"lineno\">  282</span>    posMask.SetFaceWeightsForFaceCenters(<span class=\"keyword\">false</span>);</div>\n+<div class=\"line\"><a id=\"l00283\" name=\"l00283\"></a><span class=\"lineno\">  283</span> </div>\n+<div class=\"line\"><a id=\"l00284\" name=\"l00284\"></a><span class=\"lineno\">  284</span>    <span class=\"comment\">//  Specialize for the regular case:  1/12 per edge-vert, 1/2 for the vert itself:</span></div>\n+<div class=\"line\"><a id=\"l00285\" name=\"l00285\"></a><span class=\"lineno\">  285</span>    <span class=\"keywordflow\">if</span> (valence == 6) {</div>\n+<div class=\"line\"><a id=\"l00286\" name=\"l00286\"></a><span class=\"lineno\">  286</span>        Weight eWeight = (Weight) (1.0 / 12.0);</div>\n+<div class=\"line\"><a id=\"l00287\" name=\"l00287\"></a><span class=\"lineno\">  287</span>        Weight vWeight = 0.5f;</div>\n+<div class=\"line\"><a id=\"l00288\" name=\"l00288\"></a><span class=\"lineno\">  288</span> </div>\n+<div class=\"line\"><a id=\"l00289\" name=\"l00289\"></a><span class=\"lineno\">  289</span>        posMask.VertexWeight(0) = vWeight;</div>\n+<div class=\"line\"><a id=\"l00290\" name=\"l00290\"></a><span class=\"lineno\">  290</span> </div>\n+<div class=\"line\"><a id=\"l00291\" name=\"l00291\"></a><span class=\"lineno\">  291</span>        posMask.EdgeWeight(0) = eWeight;</div>\n+<div class=\"line\"><a id=\"l00292\" name=\"l00292\"></a><span class=\"lineno\">  292</span>        posMask.EdgeWeight(1) = eWeight;</div>\n+<div class=\"line\"><a id=\"l00293\" name=\"l00293\"></a><span class=\"lineno\">  293</span>        posMask.EdgeWeight(2) = eWeight;</div>\n+<div class=\"line\"><a id=\"l00294\" name=\"l00294\"></a><span class=\"lineno\">  294</span>        posMask.EdgeWeight(3) = eWeight;</div>\n+<div class=\"line\"><a id=\"l00295\" name=\"l00295\"></a><span class=\"lineno\">  295</span>        posMask.EdgeWeight(4) = eWeight;</div>\n+<div class=\"line\"><a id=\"l00296\" name=\"l00296\"></a><span class=\"lineno\">  296</span>        posMask.EdgeWeight(5) = eWeight;</div>\n+<div class=\"line\"><a id=\"l00297\" name=\"l00297\"></a><span class=\"lineno\">  297</span> </div>\n+<div class=\"line\"><a id=\"l00298\" name=\"l00298\"></a><span class=\"lineno\">  298</span>    } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00299\" name=\"l00299\"></a><span class=\"lineno\">  299</span>        <span class=\"keywordtype\">double</span> dValence   = (double) valence;</div>\n+<div class=\"line\"><a id=\"l00300\" name=\"l00300\"></a><span class=\"lineno\">  300</span>        <span class=\"keywordtype\">double</span> invValence = 1.0f / dValence;</div>\n+<div class=\"line\"><a id=\"l00301\" name=\"l00301\"></a><span class=\"lineno\">  301</span>        <span class=\"keywordtype\">double</span> cosTheta   = std::cos(M_PI * 2.0f * invValence);</div>\n+<div class=\"line\"><a id=\"l00302\" name=\"l00302\"></a><span class=\"lineno\">  302</span> </div>\n+<div class=\"line\"><a id=\"l00303\" name=\"l00303\"></a><span class=\"lineno\">  303</span>        <span class=\"keywordtype\">double</span> beta  = 0.25f * cosTheta + 0.375f;</div>\n+<div class=\"line\"><a id=\"l00304\" name=\"l00304\"></a><span class=\"lineno\">  304</span>        <span class=\"keywordtype\">double</span> gamma = (0.625f - (beta * beta)) * invValence;</div>\n+<div class=\"line\"><a id=\"l00305\" name=\"l00305\"></a><span class=\"lineno\">  305</span> </div>\n+<div class=\"line\"><a id=\"l00306\" name=\"l00306\"></a><span class=\"lineno\">  306</span>        Weight eWeight = (Weight) (1.0f / (dValence + 3.0f / (8.0f * gamma)));</div>\n+<div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\">  307</span>        Weight vWeight = (Weight) (1.0f - (eWeight * dValence));</div>\n+<div class=\"line\"><a id=\"l00308\" name=\"l00308\"></a><span class=\"lineno\">  308</span> </div>\n+<div class=\"line\"><a id=\"l00309\" name=\"l00309\"></a><span class=\"lineno\">  309</span>        posMask.VertexWeight(0) = vWeight;</div>\n+<div class=\"line\"><a id=\"l00310\" name=\"l00310\"></a><span class=\"lineno\">  310</span>        <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; valence; ++i) {</div>\n+<div class=\"line\"><a id=\"l00311\" name=\"l00311\"></a><span class=\"lineno\">  311</span>            posMask.EdgeWeight(i) = eWeight;</div>\n+<div class=\"line\"><a id=\"l00312\" name=\"l00312\"></a><span class=\"lineno\">  312</span>        }</div>\n+<div class=\"line\"><a id=\"l00313\" name=\"l00313\"></a><span class=\"lineno\">  313</span>    }</div>\n+<div class=\"line\"><a id=\"l00314\" name=\"l00314\"></a><span class=\"lineno\">  314</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00315\" name=\"l00315\"></a><span class=\"lineno\">  315</span> </div>\n+<div class=\"line\"><a id=\"l00316\" name=\"l00316\"></a><span class=\"lineno\">  316</span><span class=\"comment\">/*</span></div>\n+<div class=\"line\"><a id=\"l00317\" name=\"l00317\"></a><span class=\"lineno\">  317</span><span class=\"comment\">//  Limit masks for tangents:</span></div>\n+<div class=\"line\"><a id=\"l00318\" name=\"l00318\"></a><span class=\"lineno\">  318</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00319\" name=\"l00319\"></a><span class=\"lineno\">  319</span><span class=\"comment\">//  A note on tangent magnitudes:</span></div>\n+<div class=\"line\"><a id=\"l00320\" name=\"l00320\"></a><span class=\"lineno\">  320</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00321\" name=\"l00321\"></a><span class=\"lineno\">  321</span><span class=\"comment\">//  Several formulae exist for limit tangents at a vertex to accommodate the</span></div>\n+<div class=\"line\"><a id=\"l00322\" name=\"l00322\"></a><span class=\"lineno\">  322</span><span class=\"comment\">//  different topological configurations around the vertex.  While these produce</span></div>\n+<div class=\"line\"><a id=\"l00323\" name=\"l00323\"></a><span class=\"lineno\">  323</span><span class=\"comment\">//  the desired direction, there is inconsistency in the resulting magnitudes.</span></div>\n+<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\">  324</span><span class=\"comment\">//  Ideally a regular mesh of uniformly shaped triangles with similar edge lengths</span></div>\n+<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\">  325</span><span class=\"comment\">//  should produce tangents of similar magnitudes throughout -- including corners</span></div>\n+<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\">  326</span><span class=\"comment\">//  and boundaries.  So some of the common formulae for these are adjusted with</span></div>\n+<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\">  327</span><span class=\"comment\">//  scale factors.</span></div>\n+<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\">  328</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\">  329</span><span class=\"comment\">//  For uses where magnitude does not matter, this scaling should be irrelevant.</span></div>\n+<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\">  330</span><span class=\"comment\">//  But just as with patches, where the magnitudes of partial derivatives are</span></div>\n+<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\">  331</span><span class=\"comment\">//  consistent between similar patches, the magnitudes of limit tangents should</span></div>\n+<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\">  332</span><span class=\"comment\">//  also be similar.</span></div>\n+<div class=\"line\"><a id=\"l00333\" name=\"l00333\"></a><span class=\"lineno\">  333</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00334\" name=\"l00334\"></a><span class=\"lineno\">  334</span><span class=\"comment\">//  The reference tangents, in terms of magnitudes, are those produced by the</span></div>\n+<div class=\"line\"><a id=\"l00335\" name=\"l00335\"></a><span class=\"lineno\">  335</span><span class=\"comment\">//  limit tangent mask for smooth interior vertices, for which well established</span></div>\n+<div class=\"line\"><a id=\"l00336\" name=\"l00336\"></a><span class=\"lineno\">  336</span><span class=\"comment\">//  sin/cos formulae apply -- these remain unscaled.  Formulae for the other</span></div>\n+<div class=\"line\"><a id=\"l00337\" name=\"l00337\"></a><span class=\"lineno\">  337</span><span class=\"comment\">//  crease/boundary, corner tangents and irregular cases are scaled to be more</span></div>\n+<div class=\"line\"><a id=\"l00338\" name=\"l00338\"></a><span class=\"lineno\">  338</span><span class=\"comment\">//  consistent with these.</span></div>\n+<div class=\"line\"><a id=\"l00339\" name=\"l00339\"></a><span class=\"lineno\">  339</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00340\" name=\"l00340\"></a><span class=\"lineno\">  340</span><span class=\"comment\">//  The crease/boundary tangents for the regular case can be viewed as derived</span></div>\n+<div class=\"line\"><a id=\"l00341\" name=\"l00341\"></a><span class=\"lineno\">  341</span><span class=\"comment\">//  from the smooth interior masks with two &quot;phantom&quot; points extrapolated across</span></div>\n+<div class=\"line\"><a id=\"l00342\" name=\"l00342\"></a><span class=\"lineno\">  342</span><span class=\"comment\">//  the regular boundary:</span></div>\n+<div class=\"line\"><a id=\"l00343\" name=\"l00343\"></a><span class=\"lineno\">  343</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00344\" name=\"l00344\"></a><span class=\"lineno\">  344</span><span class=\"comment\">//            v3           v2          </span></div>\n+<div class=\"line\"><a id=\"l00345\" name=\"l00345\"></a><span class=\"lineno\">  345</span><span class=\"comment\">//             X - - - - - X</span></div>\n+<div class=\"line\"><a id=\"l00346\" name=\"l00346\"></a><span class=\"lineno\">  346</span><span class=\"comment\">//           /   \\       /   \\</span></div>\n+<div class=\"line\"><a id=\"l00347\" name=\"l00347\"></a><span class=\"lineno\">  347</span><span class=\"comment\">//         /       \\   /       \\</span></div>\n+<div class=\"line\"><a id=\"l00348\" name=\"l00348\"></a><span class=\"lineno\">  348</span><span class=\"comment\">//   v4  X - - - - - X - - - - - X  v1</span></div>\n+<div class=\"line\"><a id=\"l00349\" name=\"l00349\"></a><span class=\"lineno\">  349</span><span class=\"comment\">//         .       . 0 .       .</span></div>\n+<div class=\"line\"><a id=\"l00350\" name=\"l00350\"></a><span class=\"lineno\">  350</span><span class=\"comment\">//           .   .       .   .</span></div>\n+<div class=\"line\"><a id=\"l00351\" name=\"l00351\"></a><span class=\"lineno\">  351</span><span class=\"comment\">//             .   .   .   .</span></div>\n+<div class=\"line\"><a id=\"l00352\" name=\"l00352\"></a><span class=\"lineno\">  352</span><span class=\"comment\">//           (v5)         (v6)</span></div>\n+<div class=\"line\"><a id=\"l00353\" name=\"l00353\"></a><span class=\"lineno\">  353</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00354\" name=\"l00354\"></a><span class=\"lineno\">  354</span><span class=\"comment\">//  where v5 = v0 + (v4 - v3) and v6 = v0 + v1 - v2.</span></div>\n+<div class=\"line\"><a id=\"l00355\" name=\"l00355\"></a><span class=\"lineno\">  355</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00356\" name=\"l00356\"></a><span class=\"lineno\">  356</span><span class=\"comment\">//  When the standard limit tangent mask is applied, the cosines of increments</span></div>\n+<div class=\"line\"><a id=\"l00357\" name=\"l00357\"></a><span class=\"lineno\">  357</span><span class=\"comment\">//  of pi/3 give us coefficients that are multiples of 1/2, leading to the first</span></div>\n+<div class=\"line\"><a id=\"l00358\" name=\"l00358\"></a><span class=\"lineno\">  358</span><span class=\"comment\">//  tangent T1 = 3/2 * (v1 - v4), rather than the widely used T1 = v1 - v4.  So</span></div>\n+<div class=\"line\"><a id=\"l00359\" name=\"l00359\"></a><span class=\"lineno\">  359</span><span class=\"comment\">//  this scale factor of 3/2 is applied to ensure tangents along the boundaries</span></div>\n+<div class=\"line\"><a id=\"l00360\" name=\"l00360\"></a><span class=\"lineno\">  360</span><span class=\"comment\">//  are of similar magnitude as tangents in the immediate interior (which may be</span></div>\n+<div class=\"line\"><a id=\"l00361\" name=\"l00361\"></a><span class=\"lineno\">  361</span><span class=\"comment\">//  parallel).</span></div>\n+<div class=\"line\"><a id=\"l00362\" name=\"l00362\"></a><span class=\"lineno\">  362</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00363\" name=\"l00363\"></a><span class=\"lineno\">  363</span><span class=\"comment\">//  Tangents at corners are essentially a form of boundary tangent, and so its</span></div>\n+<div class=\"line\"><a id=\"l00364\" name=\"l00364\"></a><span class=\"lineno\">  364</span><span class=\"comment\">//  simple difference formula is scaled to be consistent with adjoining boundary</span></div>\n+<div class=\"line\"><a id=\"l00365\" name=\"l00365\"></a><span class=\"lineno\">  365</span><span class=\"comment\">//  tangents -- not just with the 3/2 factor from above, but with an additional</span></div>\n+<div class=\"line\"><a id=\"l00366\" name=\"l00366\"></a><span class=\"lineno\">  366</span><span class=\"comment\">//  2.0 to compensate for the fact that the difference of only side of the vertex</span></div>\n+<div class=\"line\"><a id=\"l00367\" name=\"l00367\"></a><span class=\"lineno\">  367</span><span class=\"comment\">//  is considered here.  The resulting scale factor of 3.0 for the regular corner</span></div>\n+<div class=\"line\"><a id=\"l00368\" name=\"l00368\"></a><span class=\"lineno\">  368</span><span class=\"comment\">//  is what similarly arises by extrapolating an interior region around the</span></div>\n+<div class=\"line\"><a id=\"l00369\" name=\"l00369\"></a><span class=\"lineno\">  369</span><span class=\"comment\">//  vertex and using the interior mask for the first tangent.</span></div>\n+<div class=\"line\"><a id=\"l00370\" name=\"l00370\"></a><span class=\"lineno\">  370</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00371\" name=\"l00371\"></a><span class=\"lineno\">  371</span><span class=\"comment\">//  The cross-tangent formula for the regular crease/boundary is similarly found</span></div>\n+<div class=\"line\"><a id=\"l00372\" name=\"l00372\"></a><span class=\"lineno\">  372</span><span class=\"comment\">//  from the above construction of the boundary, but the commonly used weights of</span></div>\n+<div class=\"line\"><a id=\"l00373\" name=\"l00373\"></a><span class=\"lineno\">  373</span><span class=\"comment\">//  +/- 1 and 2 result from omitting the common factor of sqrt(3)/2 (arising from</span></div>\n+<div class=\"line\"><a id=\"l00374\" name=\"l00374\"></a><span class=\"lineno\">  374</span><span class=\"comment\">//  the sines of increments of pi/3).  With that scale factor close to one, it has</span></div>\n+<div class=\"line\"><a id=\"l00375\" name=\"l00375\"></a><span class=\"lineno\">  375</span><span class=\"comment\">//  less impact than the irregular cases, which are analogous to corner tangents</span></div>\n+<div class=\"line\"><a id=\"l00376\" name=\"l00376\"></a><span class=\"lineno\">  376</span><span class=\"comment\">//  in that differences on only one side of the vertex are considered.  While a</span></div>\n+<div class=\"line\"><a id=\"l00377\" name=\"l00377\"></a><span class=\"lineno\">  377</span><span class=\"comment\">//  scaling of 3.0 is similarly understandable for the valence 2 and 3 cases, it is</span></div>\n+<div class=\"line\"><a id=\"l00378\" name=\"l00378\"></a><span class=\"lineno\">  378</span><span class=\"comment\">//  less obvious in the irregular formula for valence &gt; 4, but similarly effective.</span></div>\n+<div class=\"line\"><a id=\"l00379\" name=\"l00379\"></a><span class=\"lineno\">  379</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00380\" name=\"l00380\"></a><span class=\"lineno\">  380</span><span class=\"comment\">//  The end result of these adjustments should be a set of limit tangents that are</span></div>\n+<div class=\"line\"><a id=\"l00381\" name=\"l00381\"></a><span class=\"lineno\">  381</span><span class=\"comment\">//  of similar magnitude over a regular mesh including boundaries and corners.</span></div>\n+<div class=\"line\"><a id=\"l00382\" name=\"l00382\"></a><span class=\"lineno\">  382</span><span class=\"comment\">*/</span></div>\n+<div class=\"line\"><a id=\"l00383\" name=\"l00383\"></a><span class=\"lineno\">  383</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n+<div class=\"line\"><a id=\"l00384\" name=\"l00384\"></a><span class=\"lineno\">  384</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK&gt;</div>\n+<div class=\"line\"><a id=\"l00385\" name=\"l00385\"></a><span class=\"lineno\">  385</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00386\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00386\" name=\"l00386\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#adfe86b1bf62ea328adddf4e5c4b01049\">  386</a></span><a class=\"code hl_function\" href=\"a01341.html#ae9ee7f11f51ec6ff8c43ab0729454b54\">Scheme&lt;SCHEME_LOOP&gt;::assignCornerLimitTangentMasks</a>(VERTEX <span class=\"keyword\">const</span>&amp; vertex,</div>\n+<div class=\"line\"><a id=\"l00387\" name=\"l00387\"></a><span class=\"lineno\">  387</span>        MASK&amp; tan1Mask, MASK&amp; tan2Mask)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00388\" name=\"l00388\"></a><span class=\"lineno\">  388</span> </div>\n+<div class=\"line\"><a id=\"l00389\" name=\"l00389\"></a><span class=\"lineno\">  389</span>    <span class=\"keywordtype\">int</span> valence = vertex.GetNumEdges();</div>\n+<div class=\"line\"><a id=\"l00390\" name=\"l00390\"></a><span class=\"lineno\">  390</span> </div>\n+<div class=\"line\"><a id=\"l00391\" name=\"l00391\"></a><span class=\"lineno\">  391</span>    tan1Mask.SetNumVertexWeights(1);</div>\n+<div class=\"line\"><a id=\"l00392\" name=\"l00392\"></a><span class=\"lineno\">  392</span>    tan1Mask.SetNumEdgeWeights(valence);</div>\n+<div class=\"line\"><a id=\"l00393\" name=\"l00393\"></a><span class=\"lineno\">  393</span>    tan1Mask.SetNumFaceWeights(0);</div>\n+<div class=\"line\"><a id=\"l00394\" name=\"l00394\"></a><span class=\"lineno\">  394</span>    tan1Mask.SetFaceWeightsForFaceCenters(<span class=\"keyword\">false</span>);</div>\n+<div class=\"line\"><a id=\"l00395\" name=\"l00395\"></a><span class=\"lineno\">  395</span> </div>\n+<div class=\"line\"><a id=\"l00396\" name=\"l00396\"></a><span class=\"lineno\">  396</span>    tan2Mask.SetNumVertexWeights(1);</div>\n+<div class=\"line\"><a id=\"l00397\" name=\"l00397\"></a><span class=\"lineno\">  397</span>    tan2Mask.SetNumEdgeWeights(valence);</div>\n+<div class=\"line\"><a id=\"l00398\" name=\"l00398\"></a><span class=\"lineno\">  398</span>    tan2Mask.SetNumFaceWeights(0);</div>\n+<div class=\"line\"><a id=\"l00399\" name=\"l00399\"></a><span class=\"lineno\">  399</span>    tan2Mask.SetFaceWeightsForFaceCenters(<span class=\"keyword\">false</span>);</div>\n+<div class=\"line\"><a id=\"l00400\" name=\"l00400\"></a><span class=\"lineno\">  400</span> </div>\n+<div class=\"line\"><a id=\"l00401\" name=\"l00401\"></a><span class=\"lineno\">  401</span>    <span class=\"comment\">//  See note above regarding scale factor of 3.0:</span></div>\n+<div class=\"line\"><a id=\"l00402\" name=\"l00402\"></a><span class=\"lineno\">  402</span>    tan1Mask.VertexWeight(0) = -3.0f;</div>\n+<div class=\"line\"><a id=\"l00403\" name=\"l00403\"></a><span class=\"lineno\">  403</span>    tan1Mask.EdgeWeight(0)   =  3.0f;</div>\n+<div class=\"line\"><a id=\"l00404\" name=\"l00404\"></a><span class=\"lineno\">  404</span>    tan1Mask.EdgeWeight(1)   =  0.0f;</div>\n+<div class=\"line\"><a id=\"l00405\" name=\"l00405\"></a><span class=\"lineno\">  405</span> </div>\n+<div class=\"line\"><a id=\"l00406\" name=\"l00406\"></a><span class=\"lineno\">  406</span>    tan2Mask.VertexWeight(0) = -3.0f;</div>\n+<div class=\"line\"><a id=\"l00407\" name=\"l00407\"></a><span class=\"lineno\">  407</span>    tan2Mask.EdgeWeight(0)   =  0.0f;</div>\n+<div class=\"line\"><a id=\"l00408\" name=\"l00408\"></a><span class=\"lineno\">  408</span>    tan2Mask.EdgeWeight(1)   =  3.0f;</div>\n+<div class=\"line\"><a id=\"l00409\" name=\"l00409\"></a><span class=\"lineno\">  409</span> </div>\n+<div class=\"line\"><a id=\"l00410\" name=\"l00410\"></a><span class=\"lineno\">  410</span>    <span class=\"comment\">//  Should be at least 2 edges -- be sure to clear weights for any more:</span></div>\n+<div class=\"line\"><a id=\"l00411\" name=\"l00411\"></a><span class=\"lineno\">  411</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 2; i &lt; valence; ++i) {</div>\n+<div class=\"line\"><a id=\"l00412\" name=\"l00412\"></a><span class=\"lineno\">  412</span>        tan1Mask.EdgeWeight(i) = 0.0f;</div>\n+<div class=\"line\"><a id=\"l00413\" name=\"l00413\"></a><span class=\"lineno\">  413</span>        tan2Mask.EdgeWeight(i) = 0.0f;</div>\n+<div class=\"line\"><a id=\"l00414\" name=\"l00414\"></a><span class=\"lineno\">  414</span>    }</div>\n+<div class=\"line\"><a id=\"l00415\" name=\"l00415\"></a><span class=\"lineno\">  415</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00416\" name=\"l00416\"></a><span class=\"lineno\">  416</span> </div>\n+<div class=\"line\"><a id=\"l00417\" name=\"l00417\"></a><span class=\"lineno\">  417</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n+<div class=\"line\"><a id=\"l00418\" name=\"l00418\"></a><span class=\"lineno\">  418</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK&gt;</div>\n+<div class=\"line\"><a id=\"l00419\" name=\"l00419\"></a><span class=\"lineno\">  419</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00420\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00420\" name=\"l00420\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#a2ef69ac92171507161acb0c0af01d6f2\">  420</a></span><a class=\"code hl_function\" href=\"a01341.html#a4f8e559b93bbaf26ea0d40b1fa2f194f\">Scheme&lt;SCHEME_LOOP&gt;::assignCreaseLimitTangentMasks</a>(VERTEX <span class=\"keyword\">const</span>&amp; vertex,</div>\n+<div class=\"line\"><a id=\"l00421\" name=\"l00421\"></a><span class=\"lineno\">  421</span>        MASK&amp; tan1Mask, MASK&amp; tan2Mask, <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> creaseEnds[2])<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00422\" name=\"l00422\"></a><span class=\"lineno\">  422</span> </div>\n+<div class=\"line\"><a id=\"l00423\" name=\"l00423\"></a><span class=\"lineno\">  423</span>    <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> MASK::Weight Weight;</div>\n+<div class=\"line\"><a id=\"l00424\" name=\"l00424\"></a><span class=\"lineno\">  424</span> </div>\n+<div class=\"line\"><a id=\"l00425\" name=\"l00425\"></a><span class=\"lineno\">  425</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00426\" name=\"l00426\"></a><span class=\"lineno\">  426</span>    <span class=\"comment\">//  First, the tangent along the crease:</span></div>\n+<div class=\"line\"><a id=\"l00427\" name=\"l00427\"></a><span class=\"lineno\">  427</span>    <span class=\"comment\">//      The first crease edge is considered the &quot;leading&quot; edge of the span</span></div>\n+<div class=\"line\"><a id=\"l00428\" name=\"l00428\"></a><span class=\"lineno\">  428</span>    <span class=\"comment\">//  of surface for which we are evaluating tangents and the second edge the</span></div>\n+<div class=\"line\"><a id=\"l00429\" name=\"l00429\"></a><span class=\"lineno\">  429</span>    <span class=\"comment\">//  &quot;trailing edge&quot;.  By convention, the tangent along the crease is oriented</span></div>\n+<div class=\"line\"><a id=\"l00430\" name=\"l00430\"></a><span class=\"lineno\">  430</span>    <span class=\"comment\">//  in the direction of the leading edge.</span></div>\n+<div class=\"line\"><a id=\"l00431\" name=\"l00431\"></a><span class=\"lineno\">  431</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00432\" name=\"l00432\"></a><span class=\"lineno\">  432</span>    <span class=\"keywordtype\">int</span> valence = vertex.GetNumEdges();</div>\n+<div class=\"line\"><a id=\"l00433\" name=\"l00433\"></a><span class=\"lineno\">  433</span> </div>\n+<div class=\"line\"><a id=\"l00434\" name=\"l00434\"></a><span class=\"lineno\">  434</span>    tan1Mask.SetNumVertexWeights(1);</div>\n+<div class=\"line\"><a id=\"l00435\" name=\"l00435\"></a><span class=\"lineno\">  435</span>    tan1Mask.SetNumEdgeWeights(valence);</div>\n+<div class=\"line\"><a id=\"l00436\" name=\"l00436\"></a><span class=\"lineno\">  436</span>    tan1Mask.SetNumFaceWeights(0);</div>\n+<div class=\"line\"><a id=\"l00437\" name=\"l00437\"></a><span class=\"lineno\">  437</span>    tan1Mask.SetFaceWeightsForFaceCenters(<span class=\"keyword\">false</span>);</div>\n+<div class=\"line\"><a id=\"l00438\" name=\"l00438\"></a><span class=\"lineno\">  438</span> </div>\n+<div class=\"line\"><a id=\"l00439\" name=\"l00439\"></a><span class=\"lineno\">  439</span>    tan1Mask.VertexWeight(0) = 0.0f;</div>\n+<div class=\"line\"><a id=\"l00440\" name=\"l00440\"></a><span class=\"lineno\">  440</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; valence; ++i) {</div>\n+<div class=\"line\"><a id=\"l00441\" name=\"l00441\"></a><span class=\"lineno\">  441</span>        tan1Mask.EdgeWeight(i) = 0.0f;</div>\n+<div class=\"line\"><a id=\"l00442\" name=\"l00442\"></a><span class=\"lineno\">  442</span>    }</div>\n+<div class=\"line\"><a id=\"l00443\" name=\"l00443\"></a><span class=\"lineno\">  443</span> </div>\n+<div class=\"line\"><a id=\"l00444\" name=\"l00444\"></a><span class=\"lineno\">  444</span>    <span class=\"comment\">//  See the note above regarding scale factor of 1.5:</span></div>\n+<div class=\"line\"><a id=\"l00445\" name=\"l00445\"></a><span class=\"lineno\">  445</span>    tan1Mask.EdgeWeight(creaseEnds[0]) =  1.5f;</div>\n+<div class=\"line\"><a id=\"l00446\" name=\"l00446\"></a><span class=\"lineno\">  446</span>    tan1Mask.EdgeWeight(creaseEnds[1]) = -1.5f;</div>\n <div class=\"line\"><a id=\"l00447\" name=\"l00447\"></a><span class=\"lineno\">  447</span> </div>\n-<div class=\"line\"><a id=\"l00448\" name=\"l00448\"></a><span class=\"lineno\">  448</span>        assert(_refiner);</div>\n-<div class=\"line\"><a id=\"l00449\" name=\"l00449\"></a><span class=\"lineno\">  449</span> </div>\n-<div class=\"line\"><a id=\"l00450\" name=\"l00450\"></a><span class=\"lineno\">  450</span>        <a class=\"code hl_function\" href=\"a01269.html#a51f237c3f08f6ddc2ea7ba5cb0d00b36\">MeshInterface&lt;PATCH_TABLE&gt;::refineMesh</a>(</div>\n-<div class=\"line\"><a id=\"l00451\" name=\"l00451\"></a><span class=\"lineno\">  451</span>            *_refiner, level, bits);</div>\n-<div class=\"line\"><a id=\"l00452\" name=\"l00452\"></a><span class=\"lineno\">  452</span> </div>\n-<div class=\"line\"><a id=\"l00453\" name=\"l00453\"></a><span class=\"lineno\">  453</span>        <span class=\"keywordtype\">int</span> vertexBufferStride = numVertexElements +</div>\n-<div class=\"line\"><a id=\"l00454\" name=\"l00454\"></a><span class=\"lineno\">  454</span>            (bits.test(<a class=\"code hl_enumvalue\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a9313c644b9b2a998bcb55cfcc4582b1a\">MeshInterleaveVarying</a>) ? numVaryingElements : 0);</div>\n-<div class=\"line\"><a id=\"l00455\" name=\"l00455\"></a><span class=\"lineno\">  455</span>        <span class=\"keywordtype\">int</span> varyingBufferStride =</div>\n-<div class=\"line\"><a id=\"l00456\" name=\"l00456\"></a><span class=\"lineno\">  456</span>            (bits.test(<a class=\"code hl_enumvalue\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a9313c644b9b2a998bcb55cfcc4582b1a\">MeshInterleaveVarying</a>) ? 0 : numVaryingElements);</div>\n-<div class=\"line\"><a id=\"l00457\" name=\"l00457\"></a><span class=\"lineno\">  457</span> </div>\n-<div class=\"line\"><a id=\"l00458\" name=\"l00458\"></a><span class=\"lineno\">  458</span>        initializeContext(numVertexElements,</div>\n-<div class=\"line\"><a id=\"l00459\" name=\"l00459\"></a><span class=\"lineno\">  459</span>                          numVaryingElements,</div>\n-<div class=\"line\"><a id=\"l00460\" name=\"l00460\"></a><span class=\"lineno\">  460</span>                          level, bits);</div>\n-<div class=\"line\"><a id=\"l00461\" name=\"l00461\"></a><span class=\"lineno\">  461</span> </div>\n-<div class=\"line\"><a id=\"l00462\" name=\"l00462\"></a><span class=\"lineno\">  462</span>        initializeVertexBuffers(_numVertices,</div>\n-<div class=\"line\"><a id=\"l00463\" name=\"l00463\"></a><span class=\"lineno\">  463</span>                                vertexBufferStride,</div>\n-<div class=\"line\"><a id=\"l00464\" name=\"l00464\"></a><span class=\"lineno\">  464</span>                                varyingBufferStride);</div>\n-<div class=\"line\"><a id=\"l00465\" name=\"l00465\"></a><span class=\"lineno\">  465</span> </div>\n-<div class=\"line\"><a id=\"l00466\" name=\"l00466\"></a><span class=\"lineno\">  466</span>        <span class=\"comment\">// configure vertex buffer descriptor</span></div>\n-<div class=\"line\"><a id=\"l00467\" name=\"l00467\"></a><span class=\"lineno\">  467</span>        _vertexDesc =</div>\n-<div class=\"line\"><a id=\"l00468\" name=\"l00468\"></a><span class=\"lineno\">  468</span>            <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(0, numVertexElements, vertexBufferStride);</div>\n-<div class=\"line\"><a id=\"l00469\" name=\"l00469\"></a><span class=\"lineno\">  469</span>        <span class=\"keywordflow\">if</span> (bits.test(<a class=\"code hl_enumvalue\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a9313c644b9b2a998bcb55cfcc4582b1a\">MeshInterleaveVarying</a>)) {</div>\n-<div class=\"line\"><a id=\"l00470\" name=\"l00470\"></a><span class=\"lineno\">  470</span>            _varyingDesc = <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(</div>\n-<div class=\"line\"><a id=\"l00471\" name=\"l00471\"></a><span class=\"lineno\">  471</span>                numVertexElements, numVaryingElements, vertexBufferStride);</div>\n-<div class=\"line\"><a id=\"l00472\" name=\"l00472\"></a><span class=\"lineno\">  472</span>        } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00473\" name=\"l00473\"></a><span class=\"lineno\">  473</span>            _varyingDesc = <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a>(</div>\n-<div class=\"line\"><a id=\"l00474\" name=\"l00474\"></a><span class=\"lineno\">  474</span>                0, numVaryingElements, varyingBufferStride);</div>\n-<div class=\"line\"><a id=\"l00475\" name=\"l00475\"></a><span class=\"lineno\">  475</span>        }</div>\n-<div class=\"line\"><a id=\"l00476\" name=\"l00476\"></a><span class=\"lineno\">  476</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00477\" name=\"l00477\"></a><span class=\"lineno\">  477</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00478\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00478\" name=\"l00478\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01281.html#a92162d9c34b218e4c03472f3483e3a78\">  478</a></span>    <span class=\"keyword\">virtual</span> <a class=\"code hl_function\" href=\"a01281.html#a92162d9c34b218e4c03472f3483e3a78\">~Mesh</a>() {</div>\n-<div class=\"line\"><a id=\"l00479\" name=\"l00479\"></a><span class=\"lineno\">  479</span>        <span class=\"keyword\">delete</span> _refiner;</div>\n-<div class=\"line\"><a id=\"l00480\" name=\"l00480\"></a><span class=\"lineno\">  480</span>        <span class=\"keyword\">delete</span> _farPatchTable;</div>\n-<div class=\"line\"><a id=\"l00481\" name=\"l00481\"></a><span class=\"lineno\">  481</span>        <span class=\"keyword\">delete</span> _vertexBuffer;</div>\n-<div class=\"line\"><a id=\"l00482\" name=\"l00482\"></a><span class=\"lineno\">  482</span>        <span class=\"keyword\">delete</span> _varyingBuffer;</div>\n-<div class=\"line\"><a id=\"l00483\" name=\"l00483\"></a><span class=\"lineno\">  483</span>        <span class=\"keyword\">delete</span> _vertexStencilTable;</div>\n-<div class=\"line\"><a id=\"l00484\" name=\"l00484\"></a><span class=\"lineno\">  484</span>        <span class=\"keyword\">delete</span> _varyingStencilTable;</div>\n-<div class=\"line\"><a id=\"l00485\" name=\"l00485\"></a><span class=\"lineno\">  485</span>        <span class=\"keyword\">delete</span> _patchTable;</div>\n-<div class=\"line\"><a id=\"l00486\" name=\"l00486\"></a><span class=\"lineno\">  486</span>        <span class=\"comment\">// deviceContext and evaluatorCache are not owned by this class.</span></div>\n-<div class=\"line\"><a id=\"l00487\" name=\"l00487\"></a><span class=\"lineno\">  487</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00488\" name=\"l00488\"></a><span class=\"lineno\">  488</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00489\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00489\" name=\"l00489\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01281.html#aa12fdb15b7109e56fc98b256a5d1018c\">  489</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01281.html#aa12fdb15b7109e56fc98b256a5d1018c\">UpdateVertexBuffer</a>(<span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> *vertexData,</div>\n-<div class=\"line\"><a id=\"l00490\" name=\"l00490\"></a><span class=\"lineno\">  490</span>                                    <span class=\"keywordtype\">int</span> startVertex, <span class=\"keywordtype\">int</span> numVerts) {</div>\n-<div class=\"line\"><a id=\"l00491\" name=\"l00491\"></a><span class=\"lineno\">  491</span>        _vertexBuffer-&gt;UpdateData(vertexData, startVertex, numVerts,</div>\n-<div class=\"line\"><a id=\"l00492\" name=\"l00492\"></a><span class=\"lineno\">  492</span>                                  _deviceContext);</div>\n-<div class=\"line\"><a id=\"l00493\" name=\"l00493\"></a><span class=\"lineno\">  493</span>    }</div>\n-</div>\n+<div class=\"line\"><a id=\"l00448\" name=\"l00448\"></a><span class=\"lineno\">  448</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00449\" name=\"l00449\"></a><span class=\"lineno\">  449</span>    <span class=\"comment\">//  Second, the tangent across the interior faces:</span></div>\n+<div class=\"line\"><a id=\"l00450\" name=\"l00450\"></a><span class=\"lineno\">  450</span>    <span class=\"comment\">//      Note this is ambiguous for an interior vertex.  We currently return</span></div>\n+<div class=\"line\"><a id=\"l00451\" name=\"l00451\"></a><span class=\"lineno\">  451</span>    <span class=\"comment\">//  the tangent for the surface in the counter-clockwise span between the</span></div>\n+<div class=\"line\"><a id=\"l00452\" name=\"l00452\"></a><span class=\"lineno\">  452</span>    <span class=\"comment\">//  leading and trailing edges that form the crease.  Given the expected</span></div>\n+<div class=\"line\"><a id=\"l00453\" name=\"l00453\"></a><span class=\"lineno\">  453</span>    <span class=\"comment\">//  computation of a surface normal as Tan1 X Tan2, this tangent should be</span></div>\n+<div class=\"line\"><a id=\"l00454\" name=\"l00454\"></a><span class=\"lineno\">  454</span>    <span class=\"comment\">//  oriented &quot;inward&quot; from the crease/boundary -- across the surface rather</span></div>\n+<div class=\"line\"><a id=\"l00455\" name=\"l00455\"></a><span class=\"lineno\">  455</span>    <span class=\"comment\">//  than outward and away from it.</span></div>\n+<div class=\"line\"><a id=\"l00456\" name=\"l00456\"></a><span class=\"lineno\">  456</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00457\" name=\"l00457\"></a><span class=\"lineno\">  457</span>    <span class=\"comment\">//  There is inconsistency in the orientation of this tangent in commonly</span></div>\n+<div class=\"line\"><a id=\"l00458\" name=\"l00458\"></a><span class=\"lineno\">  458</span>    <span class=\"comment\">//  published results:  the general formula provided for arbitrary valence</span></div>\n+<div class=\"line\"><a id=\"l00459\" name=\"l00459\"></a><span class=\"lineno\">  459</span>    <span class=\"comment\">//  has the tangent pointing across the crease and &quot;outward&quot; from the surface,</span></div>\n+<div class=\"line\"><a id=\"l00460\" name=\"l00460\"></a><span class=\"lineno\">  460</span>    <span class=\"comment\">//  while the special cases for regular valence and lower have the tangent</span></div>\n+<div class=\"line\"><a id=\"l00461\" name=\"l00461\"></a><span class=\"lineno\">  461</span>    <span class=\"comment\">//  pointing across the surface and &quot;inward&quot; from the crease.  So if we are</span></div>\n+<div class=\"line\"><a id=\"l00462\" name=\"l00462\"></a><span class=\"lineno\">  462</span>    <span class=\"comment\">//  to consistently orient the first tangent along the crease, regardless of</span></div>\n+<div class=\"line\"><a id=\"l00463\" name=\"l00463\"></a><span class=\"lineno\">  463</span>    <span class=\"comment\">//  the interior topology, we have to correct this.  With the first tangent</span></div>\n+<div class=\"line\"><a id=\"l00464\" name=\"l00464\"></a><span class=\"lineno\">  464</span>    <span class=\"comment\">//  following the direction of the leading crease edge, we want the second</span></div>\n+<div class=\"line\"><a id=\"l00465\" name=\"l00465\"></a><span class=\"lineno\">  465</span>    <span class=\"comment\">//  tangent pointing inward/across the surface -- so we flip the result of</span></div>\n+<div class=\"line\"><a id=\"l00466\" name=\"l00466\"></a><span class=\"lineno\">  466</span>    <span class=\"comment\">//  the general formula.</span></div>\n+<div class=\"line\"><a id=\"l00467\" name=\"l00467\"></a><span class=\"lineno\">  467</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00468\" name=\"l00468\"></a><span class=\"lineno\">  468</span>    tan2Mask.SetNumVertexWeights(1);</div>\n+<div class=\"line\"><a id=\"l00469\" name=\"l00469\"></a><span class=\"lineno\">  469</span>    tan2Mask.SetNumEdgeWeights(valence);</div>\n+<div class=\"line\"><a id=\"l00470\" name=\"l00470\"></a><span class=\"lineno\">  470</span>    tan2Mask.SetNumFaceWeights(0);</div>\n+<div class=\"line\"><a id=\"l00471\" name=\"l00471\"></a><span class=\"lineno\">  471</span>    tan2Mask.SetFaceWeightsForFaceCenters(<span class=\"keyword\">false</span>);</div>\n+<div class=\"line\"><a id=\"l00472\" name=\"l00472\"></a><span class=\"lineno\">  472</span> </div>\n+<div class=\"line\"><a id=\"l00473\" name=\"l00473\"></a><span class=\"lineno\">  473</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; creaseEnds[0]; ++i) {</div>\n+<div class=\"line\"><a id=\"l00474\" name=\"l00474\"></a><span class=\"lineno\">  474</span>        tan2Mask.EdgeWeight(i) = 0.0f;</div>\n+<div class=\"line\"><a id=\"l00475\" name=\"l00475\"></a><span class=\"lineno\">  475</span>    }</div>\n+<div class=\"line\"><a id=\"l00476\" name=\"l00476\"></a><span class=\"lineno\">  476</span>    <span class=\"keywordtype\">int</span> interiorEdgeCount = creaseEnds[1] - creaseEnds[0] - 1;</div>\n+<div class=\"line\"><a id=\"l00477\" name=\"l00477\"></a><span class=\"lineno\">  477</span>    <span class=\"keywordflow\">if</span> (interiorEdgeCount == 2) {</div>\n+<div class=\"line\"><a id=\"l00478\" name=\"l00478\"></a><span class=\"lineno\">  478</span>        <span class=\"comment\">//  See note above regarding scale factor of (sin(60 degs) == sqrt(3)/2:</span></div>\n+<div class=\"line\"><a id=\"l00479\" name=\"l00479\"></a><span class=\"lineno\">  479</span> </div>\n+<div class=\"line\"><a id=\"l00480\" name=\"l00480\"></a><span class=\"lineno\">  480</span>        <span class=\"keyword\">static</span> Weight <span class=\"keyword\">const</span> Root3    = (Weight) 1.73205080756887729352;</div>\n+<div class=\"line\"><a id=\"l00481\" name=\"l00481\"></a><span class=\"lineno\">  481</span>        <span class=\"keyword\">static</span> Weight <span class=\"keyword\">const</span> Root3by2 = (Weight) (Root3 * 0.5);</div>\n+<div class=\"line\"><a id=\"l00482\" name=\"l00482\"></a><span class=\"lineno\">  482</span> </div>\n+<div class=\"line\"><a id=\"l00483\" name=\"l00483\"></a><span class=\"lineno\">  483</span>        tan2Mask.VertexWeight(0) = -Root3;</div>\n+<div class=\"line\"><a id=\"l00484\" name=\"l00484\"></a><span class=\"lineno\">  484</span> </div>\n+<div class=\"line\"><a id=\"l00485\" name=\"l00485\"></a><span class=\"lineno\">  485</span>        tan2Mask.EdgeWeight(creaseEnds[0]) = -Root3by2;</div>\n+<div class=\"line\"><a id=\"l00486\" name=\"l00486\"></a><span class=\"lineno\">  486</span>        tan2Mask.EdgeWeight(creaseEnds[1]) = -Root3by2;</div>\n+<div class=\"line\"><a id=\"l00487\" name=\"l00487\"></a><span class=\"lineno\">  487</span> </div>\n+<div class=\"line\"><a id=\"l00488\" name=\"l00488\"></a><span class=\"lineno\">  488</span>        tan2Mask.EdgeWeight(creaseEnds[0] + 1) = Root3;</div>\n+<div class=\"line\"><a id=\"l00489\" name=\"l00489\"></a><span class=\"lineno\">  489</span>        tan2Mask.EdgeWeight(creaseEnds[0] + 2) = Root3;</div>\n+<div class=\"line\"><a id=\"l00490\" name=\"l00490\"></a><span class=\"lineno\">  490</span>    } <span class=\"keywordflow\">else</span> <span class=\"keywordflow\">if</span> (interiorEdgeCount &gt; 2) {</div>\n+<div class=\"line\"><a id=\"l00491\" name=\"l00491\"></a><span class=\"lineno\">  491</span>        <span class=\"comment\">//  See notes above regarding scale factor of -3.0 (-1 for orientation,</span></div>\n+<div class=\"line\"><a id=\"l00492\" name=\"l00492\"></a><span class=\"lineno\">  492</span>        <span class=\"comment\">//  2.0 for considering the region as a half-disk, and 1.5 in keeping</span></div>\n+<div class=\"line\"><a id=\"l00493\" name=\"l00493\"></a><span class=\"lineno\">  493</span>        <span class=\"comment\">//  with the crease tangent):</span></div>\n <div class=\"line\"><a id=\"l00494\" name=\"l00494\"></a><span class=\"lineno\">  494</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00495\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00495\" name=\"l00495\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01281.html#a2d7dd4047fcb530d2d5a72b922142517\">  495</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01281.html#a2d7dd4047fcb530d2d5a72b922142517\">UpdateVaryingBuffer</a>(<span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> *varyingData,</div>\n-<div class=\"line\"><a id=\"l00496\" name=\"l00496\"></a><span class=\"lineno\">  496</span>                                     <span class=\"keywordtype\">int</span> startVertex, <span class=\"keywordtype\">int</span> numVerts) {</div>\n-<div class=\"line\"><a id=\"l00497\" name=\"l00497\"></a><span class=\"lineno\">  497</span>        _varyingBuffer-&gt;UpdateData(varyingData, startVertex, numVerts,</div>\n-<div class=\"line\"><a id=\"l00498\" name=\"l00498\"></a><span class=\"lineno\">  498</span>                                   _deviceContext);</div>\n-<div class=\"line\"><a id=\"l00499\" name=\"l00499\"></a><span class=\"lineno\">  499</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00500\" name=\"l00500\"></a><span class=\"lineno\">  500</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00501\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00501\" name=\"l00501\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01281.html#a32c8d641fe9ea1565be646a10c5d6c85\">  501</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01281.html#a32c8d641fe9ea1565be646a10c5d6c85\">Refine</a>() {</div>\n+<div class=\"line\"><a id=\"l00495\" name=\"l00495\"></a><span class=\"lineno\">  495</span>        <span class=\"keywordtype\">double</span> theta = M_PI / (interiorEdgeCount + 1);</div>\n+<div class=\"line\"><a id=\"l00496\" name=\"l00496\"></a><span class=\"lineno\">  496</span> </div>\n+<div class=\"line\"><a id=\"l00497\" name=\"l00497\"></a><span class=\"lineno\">  497</span>        tan2Mask.VertexWeight(0) = 0.0f;</div>\n+<div class=\"line\"><a id=\"l00498\" name=\"l00498\"></a><span class=\"lineno\">  498</span> </div>\n+<div class=\"line\"><a id=\"l00499\" name=\"l00499\"></a><span class=\"lineno\">  499</span>        Weight cWeight = (Weight) (-3.0f * std::sin(theta));</div>\n+<div class=\"line\"><a id=\"l00500\" name=\"l00500\"></a><span class=\"lineno\">  500</span>        tan2Mask.EdgeWeight(creaseEnds[0]) = cWeight;</div>\n+<div class=\"line\"><a id=\"l00501\" name=\"l00501\"></a><span class=\"lineno\">  501</span>        tan2Mask.EdgeWeight(creaseEnds[1]) = cWeight;</div>\n <div class=\"line\"><a id=\"l00502\" name=\"l00502\"></a><span class=\"lineno\">  502</span> </div>\n-<div class=\"line\"><a id=\"l00503\" name=\"l00503\"></a><span class=\"lineno\">  503</span>        <span class=\"keywordtype\">int</span> numControlVertices = _refiner-&gt;<a class=\"code hl_function\" href=\"a01121.html#adc03a3531bd92ada5669788241e3515f\">GetLevel</a>(0).<a class=\"code hl_function\" href=\"a01113.html#aaf4a32b8a414eff77000c584c2015cb7\">GetNumVertices</a>();</div>\n-<div class=\"line\"><a id=\"l00504\" name=\"l00504\"></a><span class=\"lineno\">  504</span> </div>\n-<div class=\"line\"><a id=\"l00505\" name=\"l00505\"></a><span class=\"lineno\">  505</span>        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> srcDesc = _vertexDesc;</div>\n-<div class=\"line\"><a id=\"l00506\" name=\"l00506\"></a><span class=\"lineno\">  506</span>        <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> dstDesc(srcDesc);</div>\n-<div class=\"line\"><a id=\"l00507\" name=\"l00507\"></a><span class=\"lineno\">  507</span>        dstDesc.<a class=\"code hl_variable\" href=\"a01141.html#aed7ea92f45bd273dde380a45ddced592\">offset</a> += numControlVertices * dstDesc.<a class=\"code hl_variable\" href=\"a01141.html#a08f66a6870d87afcd5dc1b60d1019692\">stride</a>;</div>\n-<div class=\"line\"><a id=\"l00508\" name=\"l00508\"></a><span class=\"lineno\">  508</span> </div>\n-<div class=\"line\"><a id=\"l00509\" name=\"l00509\"></a><span class=\"lineno\">  509</span>        <span class=\"comment\">// note that the _evaluatorCache can be NULL and thus</span></div>\n-<div class=\"line\"><a id=\"l00510\" name=\"l00510\"></a><span class=\"lineno\">  510</span>        <span class=\"comment\">// the evaluatorInstance can be NULL</span></div>\n-<div class=\"line\"><a id=\"l00511\" name=\"l00511\"></a><span class=\"lineno\">  511</span>        <span class=\"comment\">//  (for uninstantiatable kernels CPU,TBB etc)</span></div>\n-<div class=\"line\"><a id=\"l00512\" name=\"l00512\"></a><span class=\"lineno\">  512</span>        <a class=\"code hl_typedef\" href=\"a01281.html#a5613b23fcbadaf4ffe3dbe87c2d2e773\">Evaluator</a> <span class=\"keyword\">const</span> *instance = GetEvaluator&lt;Evaluator&gt;(</div>\n-<div class=\"line\"><a id=\"l00513\" name=\"l00513\"></a><span class=\"lineno\">  513</span>            _evaluatorCache, srcDesc, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00514\" name=\"l00514\"></a><span class=\"lineno\">  514</span>            _deviceContext);</div>\n-<div class=\"line\"><a id=\"l00515\" name=\"l00515\"></a><span class=\"lineno\">  515</span> </div>\n-<div class=\"line\"><a id=\"l00516\" name=\"l00516\"></a><span class=\"lineno\">  516</span>        Evaluator::EvalStencils(_vertexBuffer, srcDesc,</div>\n-<div class=\"line\"><a id=\"l00517\" name=\"l00517\"></a><span class=\"lineno\">  517</span>                                _vertexBuffer, dstDesc,</div>\n-<div class=\"line\"><a id=\"l00518\" name=\"l00518\"></a><span class=\"lineno\">  518</span>                                _vertexStencilTable,</div>\n-<div class=\"line\"><a id=\"l00519\" name=\"l00519\"></a><span class=\"lineno\">  519</span>                                instance, _deviceContext);</div>\n+<div class=\"line\"><a id=\"l00503\" name=\"l00503\"></a><span class=\"lineno\">  503</span>        <span class=\"keywordtype\">double</span> eCoeff  = -3.0f * 2.0f * (std::cos(theta) - 1.0f);</div>\n+<div class=\"line\"><a id=\"l00504\" name=\"l00504\"></a><span class=\"lineno\">  504</span>        <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 1; i &lt;= interiorEdgeCount; ++i) {</div>\n+<div class=\"line\"><a id=\"l00505\" name=\"l00505\"></a><span class=\"lineno\">  505</span>            tan2Mask.EdgeWeight(creaseEnds[0] + i) = (Weight) (eCoeff * std::sin(i * theta));</div>\n+<div class=\"line\"><a id=\"l00506\" name=\"l00506\"></a><span class=\"lineno\">  506</span>        }</div>\n+<div class=\"line\"><a id=\"l00507\" name=\"l00507\"></a><span class=\"lineno\">  507</span>    } <span class=\"keywordflow\">else</span> <span class=\"keywordflow\">if</span> (interiorEdgeCount == 1) {</div>\n+<div class=\"line\"><a id=\"l00508\" name=\"l00508\"></a><span class=\"lineno\">  508</span>        <span class=\"comment\">//  See notes above regarding scale factor of 3.0:</span></div>\n+<div class=\"line\"><a id=\"l00509\" name=\"l00509\"></a><span class=\"lineno\">  509</span> </div>\n+<div class=\"line\"><a id=\"l00510\" name=\"l00510\"></a><span class=\"lineno\">  510</span>        tan2Mask.VertexWeight(0) = -3.0f;</div>\n+<div class=\"line\"><a id=\"l00511\" name=\"l00511\"></a><span class=\"lineno\">  511</span> </div>\n+<div class=\"line\"><a id=\"l00512\" name=\"l00512\"></a><span class=\"lineno\">  512</span>        tan2Mask.EdgeWeight(creaseEnds[0]) = 0.0f;</div>\n+<div class=\"line\"><a id=\"l00513\" name=\"l00513\"></a><span class=\"lineno\">  513</span>        tan2Mask.EdgeWeight(creaseEnds[1]) = 0.0f;</div>\n+<div class=\"line\"><a id=\"l00514\" name=\"l00514\"></a><span class=\"lineno\">  514</span> </div>\n+<div class=\"line\"><a id=\"l00515\" name=\"l00515\"></a><span class=\"lineno\">  515</span>        tan2Mask.EdgeWeight(creaseEnds[0] + 1) = 3.0f;</div>\n+<div class=\"line\"><a id=\"l00516\" name=\"l00516\"></a><span class=\"lineno\">  516</span>    } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00517\" name=\"l00517\"></a><span class=\"lineno\">  517</span>        <span class=\"comment\">//  See notes above regarding scale factor of 3.0:</span></div>\n+<div class=\"line\"><a id=\"l00518\" name=\"l00518\"></a><span class=\"lineno\">  518</span> </div>\n+<div class=\"line\"><a id=\"l00519\" name=\"l00519\"></a><span class=\"lineno\">  519</span>        tan2Mask.VertexWeight(0) = -6.0f;</div>\n <div class=\"line\"><a id=\"l00520\" name=\"l00520\"></a><span class=\"lineno\">  520</span> </div>\n-<div class=\"line\"><a id=\"l00521\" name=\"l00521\"></a><span class=\"lineno\">  521</span>        <span class=\"keywordflow\">if</span> (_varyingDesc.<a class=\"code hl_variable\" href=\"a01141.html#a9f59b34b1f25fe00023291b678246bcc\">length</a> &gt; 0) {</div>\n-<div class=\"line\"><a id=\"l00522\" name=\"l00522\"></a><span class=\"lineno\">  522</span>            <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> vSrcDesc = _varyingDesc;</div>\n-<div class=\"line\"><a id=\"l00523\" name=\"l00523\"></a><span class=\"lineno\">  523</span>            <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> vDstDesc(vSrcDesc);</div>\n-<div class=\"line\"><a id=\"l00524\" name=\"l00524\"></a><span class=\"lineno\">  524</span>            vDstDesc.<a class=\"code hl_variable\" href=\"a01141.html#aed7ea92f45bd273dde380a45ddced592\">offset</a> += numControlVertices * vDstDesc.<a class=\"code hl_variable\" href=\"a01141.html#a08f66a6870d87afcd5dc1b60d1019692\">stride</a>;</div>\n-<div class=\"line\"><a id=\"l00525\" name=\"l00525\"></a><span class=\"lineno\">  525</span> </div>\n-<div class=\"line\"><a id=\"l00526\" name=\"l00526\"></a><span class=\"lineno\">  526</span>            instance = GetEvaluator&lt;Evaluator&gt;(</div>\n-<div class=\"line\"><a id=\"l00527\" name=\"l00527\"></a><span class=\"lineno\">  527</span>                _evaluatorCache, vSrcDesc, vDstDesc,</div>\n-<div class=\"line\"><a id=\"l00528\" name=\"l00528\"></a><span class=\"lineno\">  528</span>                _deviceContext);</div>\n-<div class=\"line\"><a id=\"l00529\" name=\"l00529\"></a><span class=\"lineno\">  529</span> </div>\n-<div class=\"line\"><a id=\"l00530\" name=\"l00530\"></a><span class=\"lineno\">  530</span>            <span class=\"keywordflow\">if</span> (_varyingBuffer) {</div>\n-<div class=\"line\"><a id=\"l00531\" name=\"l00531\"></a><span class=\"lineno\">  531</span>                <span class=\"comment\">// non-interleaved</span></div>\n-<div class=\"line\"><a id=\"l00532\" name=\"l00532\"></a><span class=\"lineno\">  532</span>                Evaluator::EvalStencils(_varyingBuffer, vSrcDesc,</div>\n-<div class=\"line\"><a id=\"l00533\" name=\"l00533\"></a><span class=\"lineno\">  533</span>                                        _varyingBuffer, vDstDesc,</div>\n-<div class=\"line\"><a id=\"l00534\" name=\"l00534\"></a><span class=\"lineno\">  534</span>                                        _varyingStencilTable,</div>\n-<div class=\"line\"><a id=\"l00535\" name=\"l00535\"></a><span class=\"lineno\">  535</span>                                        instance, _deviceContext);</div>\n-<div class=\"line\"><a id=\"l00536\" name=\"l00536\"></a><span class=\"lineno\">  536</span>            } <span class=\"keywordflow\">else</span> {</div>\n-<div class=\"line\"><a id=\"l00537\" name=\"l00537\"></a><span class=\"lineno\">  537</span>                <span class=\"comment\">// interleaved</span></div>\n-<div class=\"line\"><a id=\"l00538\" name=\"l00538\"></a><span class=\"lineno\">  538</span>                Evaluator::EvalStencils(_vertexBuffer, vSrcDesc,</div>\n-<div class=\"line\"><a id=\"l00539\" name=\"l00539\"></a><span class=\"lineno\">  539</span>                                        _vertexBuffer, vDstDesc,</div>\n-<div class=\"line\"><a id=\"l00540\" name=\"l00540\"></a><span class=\"lineno\">  540</span>                                        _varyingStencilTable,</div>\n-<div class=\"line\"><a id=\"l00541\" name=\"l00541\"></a><span class=\"lineno\">  541</span>                                        instance, _deviceContext);</div>\n-<div class=\"line\"><a id=\"l00542\" name=\"l00542\"></a><span class=\"lineno\">  542</span>            }</div>\n-<div class=\"line\"><a id=\"l00543\" name=\"l00543\"></a><span class=\"lineno\">  543</span>        }</div>\n-<div class=\"line\"><a id=\"l00544\" name=\"l00544\"></a><span class=\"lineno\">  544</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00545\" name=\"l00545\"></a><span class=\"lineno\">  545</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00546\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00546\" name=\"l00546\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01281.html#ab945364bf8cadb3d1f8285551d9d49f0\">  546</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01281.html#ab945364bf8cadb3d1f8285551d9d49f0\">Synchronize</a>() {</div>\n-<div class=\"line\"><a id=\"l00547\" name=\"l00547\"></a><span class=\"lineno\">  547</span>        Evaluator::Synchronize(_deviceContext);</div>\n-<div class=\"line\"><a id=\"l00548\" name=\"l00548\"></a><span class=\"lineno\">  548</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00549\" name=\"l00549\"></a><span class=\"lineno\">  549</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00550\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00550\" name=\"l00550\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01281.html#abcd37c29ab31ebecf03405bf4e92f28a\">  550</a></span>    <span class=\"keyword\">virtual</span> <a class=\"code hl_typedef\" href=\"a01281.html#adf9352136d44e5999629c6b4530bf4e0\">PatchTable</a> * <a class=\"code hl_function\" href=\"a01281.html#abcd37c29ab31ebecf03405bf4e92f28a\">GetPatchTable</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00551\" name=\"l00551\"></a><span class=\"lineno\">  551</span>        <span class=\"keywordflow\">return</span> _patchTable;</div>\n-<div class=\"line\"><a id=\"l00552\" name=\"l00552\"></a><span class=\"lineno\">  552</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00553\" name=\"l00553\"></a><span class=\"lineno\">  553</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00554\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00554\" name=\"l00554\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01281.html#ac9e858564a58e758570a257e6db063b8\">  554</a></span>    <span class=\"keyword\">virtual</span> <a class=\"code hl_class\" href=\"a00993.html\">Far::PatchTable</a> <span class=\"keyword\">const</span> *<a class=\"code hl_function\" href=\"a01281.html#ac9e858564a58e758570a257e6db063b8\">GetFarPatchTable</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00555\" name=\"l00555\"></a><span class=\"lineno\">  555</span>        <span class=\"keywordflow\">return</span> _farPatchTable;</div>\n-<div class=\"line\"><a id=\"l00556\" name=\"l00556\"></a><span class=\"lineno\">  556</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00557\" name=\"l00557\"></a><span class=\"lineno\">  557</span> </div>\n-<div class=\"line\"><a id=\"l00558\" name=\"l00558\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01281.html#a65a924e7a9f6038025677e4aa728d9d3\">  558</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01281.html#a65a924e7a9f6038025677e4aa728d9d3\">GetNumVertices</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _numVertices; }</div>\n-<div class=\"line\"><a id=\"l00559\" name=\"l00559\"></a><span class=\"lineno\">  559</span> </div>\n-<div class=\"line\"><a id=\"l00560\" name=\"l00560\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01281.html#affef41596871be7997c1691510d02e3f\">  560</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01281.html#affef41596871be7997c1691510d02e3f\">GetMaxValence</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _maxValence; }</div>\n+<div class=\"line\"><a id=\"l00521\" name=\"l00521\"></a><span class=\"lineno\">  521</span>        tan2Mask.EdgeWeight(creaseEnds[0]) = 3.0f;</div>\n+<div class=\"line\"><a id=\"l00522\" name=\"l00522\"></a><span class=\"lineno\">  522</span>        tan2Mask.EdgeWeight(creaseEnds[1]) = 3.0f;</div>\n+<div class=\"line\"><a id=\"l00523\" name=\"l00523\"></a><span class=\"lineno\">  523</span>    }</div>\n+<div class=\"line\"><a id=\"l00524\" name=\"l00524\"></a><span class=\"lineno\">  524</span>    <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = creaseEnds[1] + 1; i &lt; valence; ++i) {</div>\n+<div class=\"line\"><a id=\"l00525\" name=\"l00525\"></a><span class=\"lineno\">  525</span>        tan2Mask.EdgeWeight(i) = 0.0f;</div>\n+<div class=\"line\"><a id=\"l00526\" name=\"l00526\"></a><span class=\"lineno\">  526</span>    }</div>\n+<div class=\"line\"><a id=\"l00527\" name=\"l00527\"></a><span class=\"lineno\">  527</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00528\" name=\"l00528\"></a><span class=\"lineno\">  528</span> </div>\n+<div class=\"line\"><a id=\"l00529\" name=\"l00529\"></a><span class=\"lineno\">  529</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n+<div class=\"line\"><a id=\"l00530\" name=\"l00530\"></a><span class=\"lineno\">  530</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK&gt;</div>\n+<div class=\"line\"><a id=\"l00531\" name=\"l00531\"></a><span class=\"lineno\">  531</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00532\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00532\" name=\"l00532\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#a15a82416378d985afe049eaebc185e7d\">  532</a></span><a class=\"code hl_function\" href=\"a01341.html#a9ee5e194a00832a5bfa76cf58df0bc4b\">Scheme&lt;SCHEME_LOOP&gt;::assignSmoothLimitTangentMasks</a>(VERTEX <span class=\"keyword\">const</span>&amp; vertex,</div>\n+<div class=\"line\"><a id=\"l00533\" name=\"l00533\"></a><span class=\"lineno\">  533</span>        MASK&amp; tan1Mask, MASK&amp; tan2Mask)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00534\" name=\"l00534\"></a><span class=\"lineno\">  534</span> </div>\n+<div class=\"line\"><a id=\"l00535\" name=\"l00535\"></a><span class=\"lineno\">  535</span>    <span class=\"keyword\">typedef</span> <span class=\"keyword\">typename</span> MASK::Weight Weight;</div>\n+<div class=\"line\"><a id=\"l00536\" name=\"l00536\"></a><span class=\"lineno\">  536</span> </div>\n+<div class=\"line\"><a id=\"l00537\" name=\"l00537\"></a><span class=\"lineno\">  537</span>    <span class=\"keywordtype\">int</span> valence = vertex.GetNumFaces();</div>\n+<div class=\"line\"><a id=\"l00538\" name=\"l00538\"></a><span class=\"lineno\">  538</span> </div>\n+<div class=\"line\"><a id=\"l00539\" name=\"l00539\"></a><span class=\"lineno\">  539</span>    tan1Mask.SetNumVertexWeights(1);</div>\n+<div class=\"line\"><a id=\"l00540\" name=\"l00540\"></a><span class=\"lineno\">  540</span>    tan1Mask.SetNumEdgeWeights(valence);</div>\n+<div class=\"line\"><a id=\"l00541\" name=\"l00541\"></a><span class=\"lineno\">  541</span>    tan1Mask.SetNumFaceWeights(0);</div>\n+<div class=\"line\"><a id=\"l00542\" name=\"l00542\"></a><span class=\"lineno\">  542</span>    tan1Mask.SetFaceWeightsForFaceCenters(<span class=\"keyword\">false</span>);</div>\n+<div class=\"line\"><a id=\"l00543\" name=\"l00543\"></a><span class=\"lineno\">  543</span> </div>\n+<div class=\"line\"><a id=\"l00544\" name=\"l00544\"></a><span class=\"lineno\">  544</span>    tan2Mask.SetNumVertexWeights(1);</div>\n+<div class=\"line\"><a id=\"l00545\" name=\"l00545\"></a><span class=\"lineno\">  545</span>    tan2Mask.SetNumEdgeWeights(valence);</div>\n+<div class=\"line\"><a id=\"l00546\" name=\"l00546\"></a><span class=\"lineno\">  546</span>    tan2Mask.SetNumFaceWeights(0);</div>\n+<div class=\"line\"><a id=\"l00547\" name=\"l00547\"></a><span class=\"lineno\">  547</span>    tan2Mask.SetFaceWeightsForFaceCenters(<span class=\"keyword\">false</span>);</div>\n+<div class=\"line\"><a id=\"l00548\" name=\"l00548\"></a><span class=\"lineno\">  548</span> </div>\n+<div class=\"line\"><a id=\"l00549\" name=\"l00549\"></a><span class=\"lineno\">  549</span>    tan1Mask.VertexWeight(0) = 0.0f;</div>\n+<div class=\"line\"><a id=\"l00550\" name=\"l00550\"></a><span class=\"lineno\">  550</span>    tan2Mask.VertexWeight(0) = 0.0f;</div>\n+<div class=\"line\"><a id=\"l00551\" name=\"l00551\"></a><span class=\"lineno\">  551</span> </div>\n+<div class=\"line\"><a id=\"l00552\" name=\"l00552\"></a><span class=\"lineno\">  552</span>    <span class=\"keywordflow\">if</span> (valence == 6) {</div>\n+<div class=\"line\"><a id=\"l00553\" name=\"l00553\"></a><span class=\"lineno\">  553</span>        <span class=\"keyword\">static</span> Weight <span class=\"keyword\">const</span> Root3by2 = (Weight)(0.5 * 1.73205080756887729352);</div>\n+<div class=\"line\"><a id=\"l00554\" name=\"l00554\"></a><span class=\"lineno\">  554</span> </div>\n+<div class=\"line\"><a id=\"l00555\" name=\"l00555\"></a><span class=\"lineno\">  555</span>        tan1Mask.EdgeWeight(0) =  1.0f;</div>\n+<div class=\"line\"><a id=\"l00556\" name=\"l00556\"></a><span class=\"lineno\">  556</span>        tan1Mask.EdgeWeight(1) =  0.5f;</div>\n+<div class=\"line\"><a id=\"l00557\" name=\"l00557\"></a><span class=\"lineno\">  557</span>        tan1Mask.EdgeWeight(2) = -0.5f;</div>\n+<div class=\"line\"><a id=\"l00558\" name=\"l00558\"></a><span class=\"lineno\">  558</span>        tan1Mask.EdgeWeight(3) = -1.0f;</div>\n+<div class=\"line\"><a id=\"l00559\" name=\"l00559\"></a><span class=\"lineno\">  559</span>        tan1Mask.EdgeWeight(4) = -0.5f;</div>\n+<div class=\"line\"><a id=\"l00560\" name=\"l00560\"></a><span class=\"lineno\">  560</span>        tan1Mask.EdgeWeight(5) =  0.5f;</div>\n <div class=\"line\"><a id=\"l00561\" name=\"l00561\"></a><span class=\"lineno\">  561</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00562\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00562\" name=\"l00562\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01281.html#a6043945695eb4786b2ff1eba1725088a\">  562</a></span>    <span class=\"keyword\">virtual</span> <a class=\"code hl_typedef\" href=\"a01281.html#a9cf40ecf1b9b5c29507fe92a03f37a3c\">VertexBufferBinding</a> <a class=\"code hl_function\" href=\"a01281.html#a6043945695eb4786b2ff1eba1725088a\">BindVertexBuffer</a>() {</div>\n-<div class=\"line\"><a id=\"l00563\" name=\"l00563\"></a><span class=\"lineno\">  563</span>        <span class=\"keywordflow\">return</span> _vertexBuffer-&gt;BindVBO(_deviceContext);</div>\n-<div class=\"line\"><a id=\"l00564\" name=\"l00564\"></a><span class=\"lineno\">  564</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00565\" name=\"l00565\"></a><span class=\"lineno\">  565</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00566\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00566\" name=\"l00566\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01281.html#a914e3cead7ba6e0634b70bcf2957e8f7\">  566</a></span>    <span class=\"keyword\">virtual</span> <a class=\"code hl_typedef\" href=\"a01281.html#a9cf40ecf1b9b5c29507fe92a03f37a3c\">VertexBufferBinding</a> <a class=\"code hl_function\" href=\"a01281.html#a914e3cead7ba6e0634b70bcf2957e8f7\">BindVaryingBuffer</a>() {</div>\n-<div class=\"line\"><a id=\"l00567\" name=\"l00567\"></a><span class=\"lineno\">  567</span>        <span class=\"keywordflow\">return</span> _varyingBuffer-&gt;BindVBO(_deviceContext);</div>\n-<div class=\"line\"><a id=\"l00568\" name=\"l00568\"></a><span class=\"lineno\">  568</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00569\" name=\"l00569\"></a><span class=\"lineno\">  569</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00570\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00570\" name=\"l00570\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01281.html#a1e4d2fe7a4770614b65af59e4a92058a\">  570</a></span>    <span class=\"keyword\">virtual</span> <a class=\"code hl_typedef\" href=\"a01281.html#a722ca2b35d7001c0eeb6298f2c3704ca\">VertexBuffer</a> * <a class=\"code hl_function\" href=\"a01281.html#a1e4d2fe7a4770614b65af59e4a92058a\">GetVertexBuffer</a>() {</div>\n-<div class=\"line\"><a id=\"l00571\" name=\"l00571\"></a><span class=\"lineno\">  571</span>        <span class=\"keywordflow\">return</span> _vertexBuffer;</div>\n-<div class=\"line\"><a id=\"l00572\" name=\"l00572\"></a><span class=\"lineno\">  572</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00573\" name=\"l00573\"></a><span class=\"lineno\">  573</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00574\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00574\" name=\"l00574\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01281.html#a2da98e35e1a94b53d77c7c5d68b44320\">  574</a></span>    <span class=\"keyword\">virtual</span> <a class=\"code hl_typedef\" href=\"a01281.html#a722ca2b35d7001c0eeb6298f2c3704ca\">VertexBuffer</a> * <a class=\"code hl_function\" href=\"a01281.html#a2da98e35e1a94b53d77c7c5d68b44320\">GetVaryingBuffer</a>() {</div>\n-<div class=\"line\"><a id=\"l00575\" name=\"l00575\"></a><span class=\"lineno\">  575</span>        <span class=\"keywordflow\">return</span> _varyingBuffer;</div>\n-<div class=\"line\"><a id=\"l00576\" name=\"l00576\"></a><span class=\"lineno\">  576</span>    }</div>\n+<div class=\"line\"><a id=\"l00562\" name=\"l00562\"></a><span class=\"lineno\">  562</span>        tan2Mask.EdgeWeight(0) =  0.0f;</div>\n+<div class=\"line\"><a id=\"l00563\" name=\"l00563\"></a><span class=\"lineno\">  563</span>        tan2Mask.EdgeWeight(1) =  Root3by2;</div>\n+<div class=\"line\"><a id=\"l00564\" name=\"l00564\"></a><span class=\"lineno\">  564</span>        tan2Mask.EdgeWeight(2) =  Root3by2;</div>\n+<div class=\"line\"><a id=\"l00565\" name=\"l00565\"></a><span class=\"lineno\">  565</span>        tan2Mask.EdgeWeight(3) =  0.0f;</div>\n+<div class=\"line\"><a id=\"l00566\" name=\"l00566\"></a><span class=\"lineno\">  566</span>        tan2Mask.EdgeWeight(4) = -Root3by2;</div>\n+<div class=\"line\"><a id=\"l00567\" name=\"l00567\"></a><span class=\"lineno\">  567</span>        tan2Mask.EdgeWeight(5) = -Root3by2;</div>\n+<div class=\"line\"><a id=\"l00568\" name=\"l00568\"></a><span class=\"lineno\">  568</span>    } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00569\" name=\"l00569\"></a><span class=\"lineno\">  569</span>        <span class=\"keywordtype\">double</span> alpha = 2.0f * M_PI / valence;</div>\n+<div class=\"line\"><a id=\"l00570\" name=\"l00570\"></a><span class=\"lineno\">  570</span>        <span class=\"keywordflow\">for</span> (<span class=\"keywordtype\">int</span> i = 0; i &lt; valence; ++i) {</div>\n+<div class=\"line\"><a id=\"l00571\" name=\"l00571\"></a><span class=\"lineno\">  571</span>            <span class=\"keywordtype\">double</span> alphaI = alpha * i;</div>\n+<div class=\"line\"><a id=\"l00572\" name=\"l00572\"></a><span class=\"lineno\">  572</span>            tan1Mask.EdgeWeight(i) = (Weight) std::cos(alphaI);</div>\n+<div class=\"line\"><a id=\"l00573\" name=\"l00573\"></a><span class=\"lineno\">  573</span>            tan2Mask.EdgeWeight(i) = (Weight) std::sin(alphaI);</div>\n+<div class=\"line\"><a id=\"l00574\" name=\"l00574\"></a><span class=\"lineno\">  574</span>        }</div>\n+<div class=\"line\"><a id=\"l00575\" name=\"l00575\"></a><span class=\"lineno\">  575</span>    }</div>\n+<div class=\"line\"><a id=\"l00576\" name=\"l00576\"></a><span class=\"lineno\">  576</span>}</div>\n </div>\n <div class=\"line\"><a id=\"l00577\" name=\"l00577\"></a><span class=\"lineno\">  577</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00578\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00578\" name=\"l00578\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01281.html#a060777db09a25a79af64ea17acdc6d4a\">  578</a></span>    <span class=\"keyword\">virtual</span> <a class=\"code hl_class\" href=\"a01121.html\">Far::TopologyRefiner</a> <span class=\"keyword\">const</span> * <a class=\"code hl_function\" href=\"a01281.html#a060777db09a25a79af64ea17acdc6d4a\">GetTopologyRefiner</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00579\" name=\"l00579\"></a><span class=\"lineno\">  579</span>        <span class=\"keywordflow\">return</span> _refiner;</div>\n-<div class=\"line\"><a id=\"l00580\" name=\"l00580\"></a><span class=\"lineno\">  580</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00581\" name=\"l00581\"></a><span class=\"lineno\">  581</span> </div>\n-<div class=\"line\"><a id=\"l00582\" name=\"l00582\"></a><span class=\"lineno\">  582</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00583\" name=\"l00583\"></a><span class=\"lineno\">  583</span>    <span class=\"keywordtype\">void</span> initializeContext(<span class=\"keywordtype\">int</span> numVertexElements,</div>\n-<div class=\"line\"><a id=\"l00584\" name=\"l00584\"></a><span class=\"lineno\">  584</span>                           <span class=\"keywordtype\">int</span> numVaryingElements,</div>\n-<div class=\"line\"><a id=\"l00585\" name=\"l00585\"></a><span class=\"lineno\">  585</span>                           <span class=\"keywordtype\">int</span> level, <a class=\"code hl_typedef\" href=\"a00912.html#a85ba9df501aea9af1ec9da1558c255bc\">MeshBitset</a> bits) {</div>\n-<div class=\"line\"><a id=\"l00586\" name=\"l00586\"></a><span class=\"lineno\">  586</span>        assert(_refiner);</div>\n-<div class=\"line\"><a id=\"l00587\" name=\"l00587\"></a><span class=\"lineno\">  587</span> </div>\n-<div class=\"line\"><a id=\"l00588\" name=\"l00588\"></a><span class=\"lineno\">  588</span>        Far::StencilTableFactory::Options options;</div>\n-<div class=\"line\"><a id=\"l00589\" name=\"l00589\"></a><span class=\"lineno\">  589</span>        options.generateOffsets = <span class=\"keyword\">true</span>;</div>\n-<div class=\"line\"><a id=\"l00590\" name=\"l00590\"></a><span class=\"lineno\">  590</span>        options.generateIntermediateLevels =</div>\n-<div class=\"line\"><a id=\"l00591\" name=\"l00591\"></a><span class=\"lineno\">  591</span>            _refiner-&gt;<a class=\"code hl_function\" href=\"a01121.html#a5dfa6810f510fac1ec621fc9e6b530c4\">IsUniform</a>() ? false : <span class=\"keyword\">true</span>;</div>\n-<div class=\"line\"><a id=\"l00592\" name=\"l00592\"></a><span class=\"lineno\">  592</span> </div>\n-<div class=\"line\"><a id=\"l00593\" name=\"l00593\"></a><span class=\"lineno\">  593</span>        <a class=\"code hl_class\" href=\"a01065.html\">Far::StencilTable</a> <span class=\"keyword\">const</span> * vertexStencils = NULL;</div>\n-<div class=\"line\"><a id=\"l00594\" name=\"l00594\"></a><span class=\"lineno\">  594</span>        <a class=\"code hl_class\" href=\"a01065.html\">Far::StencilTable</a> <span class=\"keyword\">const</span> * varyingStencils = NULL;</div>\n-<div class=\"line\"><a id=\"l00595\" name=\"l00595\"></a><span class=\"lineno\">  595</span> </div>\n-<div class=\"line\"><a id=\"l00596\" name=\"l00596\"></a><span class=\"lineno\">  596</span>        <span class=\"keywordflow\">if</span> (numVertexElements&gt;0) {</div>\n-<div class=\"line\"><a id=\"l00597\" name=\"l00597\"></a><span class=\"lineno\">  597</span> </div>\n-<div class=\"line\"><a id=\"l00598\" name=\"l00598\"></a><span class=\"lineno\">  598</span>            vertexStencils = <a class=\"code hl_function\" href=\"a01097.html#a667e11d1b8502dd1215608af93ada08c\">Far::StencilTableFactory::Create</a>(*_refiner,</div>\n-<div class=\"line\"><a id=\"l00599\" name=\"l00599\"></a><span class=\"lineno\">  599</span>                                                              options);</div>\n-<div class=\"line\"><a id=\"l00600\" name=\"l00600\"></a><span class=\"lineno\">  600</span>        }</div>\n-<div class=\"line\"><a id=\"l00601\" name=\"l00601\"></a><span class=\"lineno\">  601</span> </div>\n-<div class=\"line\"><a id=\"l00602\" name=\"l00602\"></a><span class=\"lineno\">  602</span>        <span class=\"keywordflow\">if</span> (numVaryingElements&gt;0) {</div>\n-<div class=\"line\"><a id=\"l00603\" name=\"l00603\"></a><span class=\"lineno\">  603</span> </div>\n-<div class=\"line\"><a id=\"l00604\" name=\"l00604\"></a><span class=\"lineno\">  604</span>            options.interpolationMode =</div>\n-<div class=\"line\"><a id=\"l00605\" name=\"l00605\"></a><span class=\"lineno\">  605</span>                <a class=\"code hl_enumvalue\" href=\"a01045.html#a46c8a310cf4c094f8c80e1cb8dc1f911ab18c20abfc04611ab0aec5e1c81bb2ab\">Far::StencilTableFactory::INTERPOLATE_VARYING</a>;</div>\n-<div class=\"line\"><a id=\"l00606\" name=\"l00606\"></a><span class=\"lineno\">  606</span> </div>\n-<div class=\"line\"><a id=\"l00607\" name=\"l00607\"></a><span class=\"lineno\">  607</span>            varyingStencils = <a class=\"code hl_function\" href=\"a01097.html#a667e11d1b8502dd1215608af93ada08c\">Far::StencilTableFactory::Create</a>(*_refiner,</div>\n-<div class=\"line\"><a id=\"l00608\" name=\"l00608\"></a><span class=\"lineno\">  608</span>                                                               options);</div>\n-<div class=\"line\"><a id=\"l00609\" name=\"l00609\"></a><span class=\"lineno\">  609</span>        }</div>\n-<div class=\"line\"><a id=\"l00610\" name=\"l00610\"></a><span class=\"lineno\">  610</span> </div>\n-<div class=\"line\"><a id=\"l00611\" name=\"l00611\"></a><span class=\"lineno\">  611</span>        <a class=\"code hl_struct\" href=\"a01021.html\">Far::PatchTableFactory::Options</a> poptions(level);</div>\n-<div class=\"line\"><a id=\"l00612\" name=\"l00612\"></a><span class=\"lineno\">  612</span>        poptions.generateFVarTables = bits.test(<a class=\"code hl_enumvalue\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492ac10e41fef659f3b3a1b730319bdedb45\">MeshFVarData</a>);</div>\n-<div class=\"line\"><a id=\"l00613\" name=\"l00613\"></a><span class=\"lineno\">  613</span>        poptions.generateFVarLegacyLinearPatches = !bits.test(<a class=\"code hl_enumvalue\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a9b8a23ab039e120012bc7c622308d603\">MeshFVarAdaptive</a>);</div>\n-<div class=\"line\"><a id=\"l00614\" name=\"l00614\"></a><span class=\"lineno\">  614</span>        poptions.generateLegacySharpCornerPatches = !bits.test(<a class=\"code hl_enumvalue\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492ab32b8ef595539e14041e2fb0e619e3f9\">MeshUseSmoothCornerPatch</a>);</div>\n-<div class=\"line\"><a id=\"l00615\" name=\"l00615\"></a><span class=\"lineno\">  615</span>        poptions.useSingleCreasePatch = bits.test(<a class=\"code hl_enumvalue\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a9058d69e1089fc77f1974a76c34e2071\">MeshUseSingleCreasePatch</a>);</div>\n-<div class=\"line\"><a id=\"l00616\" name=\"l00616\"></a><span class=\"lineno\">  616</span>        poptions.useInfSharpPatch = bits.test(<a class=\"code hl_enumvalue\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a8fab1b3018f94b5b2432c7435e795925\">MeshUseInfSharpPatch</a>);</div>\n-<div class=\"line\"><a id=\"l00617\" name=\"l00617\"></a><span class=\"lineno\">  617</span> </div>\n-<div class=\"line\"><a id=\"l00618\" name=\"l00618\"></a><span class=\"lineno\">  618</span>        <span class=\"comment\">// points on bilinear and gregory basis endcap boundaries can be</span></div>\n-<div class=\"line\"><a id=\"l00619\" name=\"l00619\"></a><span class=\"lineno\">  619</span>        <span class=\"comment\">// shared among adjacent patches to save some stencils.</span></div>\n-<div class=\"line\"><a id=\"l00620\" name=\"l00620\"></a><span class=\"lineno\">  620</span>        <span class=\"keywordflow\">if</span> (bits.test(<a class=\"code hl_enumvalue\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a4124233e4f787f999c7975afceab34f3\">MeshEndCapBilinearBasis</a>)) {</div>\n-<div class=\"line\"><a id=\"l00621\" name=\"l00621\"></a><span class=\"lineno\">  621</span>            poptions.SetEndCapType(</div>\n-<div class=\"line\"><a id=\"l00622\" name=\"l00622\"></a><span class=\"lineno\">  622</span>                <a class=\"code hl_enumvalue\" href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535a90f0e9a2c992889cefdf1db954f9d98f\">Far::PatchTableFactory::Options::ENDCAP_BILINEAR_BASIS</a>);</div>\n-<div class=\"line\"><a id=\"l00623\" name=\"l00623\"></a><span class=\"lineno\">  623</span>            poptions.shareEndCapPatchPoints = <span class=\"keyword\">true</span>;</div>\n-<div class=\"line\"><a id=\"l00624\" name=\"l00624\"></a><span class=\"lineno\">  624</span>        } <span class=\"keywordflow\">else</span> <span class=\"keywordflow\">if</span> (bits.test(<a class=\"code hl_enumvalue\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492aa2f41b6ba0393698bb3af283283737f7\">MeshEndCapBSplineBasis</a>)) {</div>\n-<div class=\"line\"><a id=\"l00625\" name=\"l00625\"></a><span class=\"lineno\">  625</span>            poptions.SetEndCapType(</div>\n-<div class=\"line\"><a id=\"l00626\" name=\"l00626\"></a><span class=\"lineno\">  626</span>                <a class=\"code hl_enumvalue\" href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535ac3fc1d183b0bdfbc7bf1cce613c4ff04\">Far::PatchTableFactory::Options::ENDCAP_BSPLINE_BASIS</a>);</div>\n-<div class=\"line\"><a id=\"l00627\" name=\"l00627\"></a><span class=\"lineno\">  627</span>        } <span class=\"keywordflow\">else</span> <span class=\"keywordflow\">if</span> (bits.test(<a class=\"code hl_enumvalue\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492aa2878e1a215530f5f6fb89f1e06f91ee\">MeshEndCapGregoryBasis</a>)) {</div>\n-<div class=\"line\"><a id=\"l00628\" name=\"l00628\"></a><span class=\"lineno\">  628</span>            poptions.SetEndCapType(</div>\n-<div class=\"line\"><a id=\"l00629\" name=\"l00629\"></a><span class=\"lineno\">  629</span>                <a class=\"code hl_enumvalue\" href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535a2e89c8e5ac21dbd024ec902de51566b0\">Far::PatchTableFactory::Options::ENDCAP_GREGORY_BASIS</a>);</div>\n-<div class=\"line\"><a id=\"l00630\" name=\"l00630\"></a><span class=\"lineno\">  630</span>            poptions.shareEndCapPatchPoints = <span class=\"keyword\">true</span>;</div>\n-<div class=\"line\"><a id=\"l00631\" name=\"l00631\"></a><span class=\"lineno\">  631</span>        } <span class=\"keywordflow\">else</span> <span class=\"keywordflow\">if</span> (bits.test(<a class=\"code hl_enumvalue\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492aad7b3fb2be609abdbfafaf5b1c834158\">MeshEndCapLegacyGregory</a>)) {</div>\n-<div class=\"line\"><a id=\"l00632\" name=\"l00632\"></a><span class=\"lineno\">  632</span>            poptions.SetEndCapType(</div>\n-<div class=\"line\"><a id=\"l00633\" name=\"l00633\"></a><span class=\"lineno\">  633</span>                <a class=\"code hl_enumvalue\" href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535a0c0d3d9e480d64f20f1b32d599c88aa5\">Far::PatchTableFactory::Options::ENDCAP_LEGACY_GREGORY</a>);</div>\n-<div class=\"line\"><a id=\"l00634\" name=\"l00634\"></a><span class=\"lineno\">  634</span>        }</div>\n-<div class=\"line\"><a id=\"l00635\" name=\"l00635\"></a><span class=\"lineno\">  635</span> </div>\n-<div class=\"line\"><a id=\"l00636\" name=\"l00636\"></a><span class=\"lineno\">  636</span>        _farPatchTable = <a class=\"code hl_function\" href=\"a01017.html#a6ad8881e91652a8fe4d68d18ac16a435\">Far::PatchTableFactory::Create</a>(*_refiner, poptions);</div>\n-<div class=\"line\"><a id=\"l00637\" name=\"l00637\"></a><span class=\"lineno\">  637</span> </div>\n-<div class=\"line\"><a id=\"l00638\" name=\"l00638\"></a><span class=\"lineno\">  638</span>        <span class=\"comment\">// if there&#39;s endcap stencils, merge it into regular stencils.</span></div>\n-<div class=\"line\"><a id=\"l00639\" name=\"l00639\"></a><span class=\"lineno\">  639</span>        <span class=\"keywordflow\">if</span> (_farPatchTable-&gt;<a class=\"code hl_function\" href=\"a00993.html#a1d27edb01bfb68ba50776b25aa437783\">GetLocalPointStencilTable</a>()) {</div>\n-<div class=\"line\"><a id=\"l00640\" name=\"l00640\"></a><span class=\"lineno\">  640</span>            <span class=\"comment\">// append stencils</span></div>\n-<div class=\"line\"><a id=\"l00641\" name=\"l00641\"></a><span class=\"lineno\">  641</span>            <span class=\"keywordflow\">if</span> (Far::StencilTable <span class=\"keyword\">const</span> *vertexStencilsWithLocalPoints =</div>\n-<div class=\"line\"><a id=\"l00642\" name=\"l00642\"></a><span class=\"lineno\">  642</span>                <a class=\"code hl_function\" href=\"a01097.html#ab7374d716e8637a5ffbd12029713ec0f\">Far::StencilTableFactory::AppendLocalPointStencilTable</a>(</div>\n-<div class=\"line\"><a id=\"l00643\" name=\"l00643\"></a><span class=\"lineno\">  643</span>                    *_refiner,</div>\n-<div class=\"line\"><a id=\"l00644\" name=\"l00644\"></a><span class=\"lineno\">  644</span>                    vertexStencils,</div>\n-<div class=\"line\"><a id=\"l00645\" name=\"l00645\"></a><span class=\"lineno\">  645</span>                    _farPatchTable-&gt;<a class=\"code hl_function\" href=\"a00993.html#a1d27edb01bfb68ba50776b25aa437783\">GetLocalPointStencilTable</a>())) {</div>\n-<div class=\"line\"><a id=\"l00646\" name=\"l00646\"></a><span class=\"lineno\">  646</span>                <span class=\"keyword\">delete</span> vertexStencils;</div>\n-<div class=\"line\"><a id=\"l00647\" name=\"l00647\"></a><span class=\"lineno\">  647</span>                vertexStencils = vertexStencilsWithLocalPoints;</div>\n-<div class=\"line\"><a id=\"l00648\" name=\"l00648\"></a><span class=\"lineno\">  648</span>            }</div>\n-<div class=\"line\"><a id=\"l00649\" name=\"l00649\"></a><span class=\"lineno\">  649</span>            <span class=\"keywordflow\">if</span> (varyingStencils) {</div>\n-<div class=\"line\"><a id=\"l00650\" name=\"l00650\"></a><span class=\"lineno\">  650</span>                <span class=\"keywordflow\">if</span> (Far::StencilTable <span class=\"keyword\">const</span> *varyingStencilsWithLocalPoints =</div>\n-<div class=\"line\"><a id=\"l00651\" name=\"l00651\"></a><span class=\"lineno\">  651</span>                    <a class=\"code hl_function\" href=\"a01097.html#ab7374d716e8637a5ffbd12029713ec0f\">Far::StencilTableFactory::AppendLocalPointStencilTable</a>(</div>\n-<div class=\"line\"><a id=\"l00652\" name=\"l00652\"></a><span class=\"lineno\">  652</span>                        *_refiner,</div>\n-<div class=\"line\"><a id=\"l00653\" name=\"l00653\"></a><span class=\"lineno\">  653</span>                        varyingStencils,</div>\n-<div class=\"line\"><a id=\"l00654\" name=\"l00654\"></a><span class=\"lineno\">  654</span>                        _farPatchTable-&gt;<a class=\"code hl_function\" href=\"a00993.html#ad6bafe91da1dcf5b8fb1f7c8cb4ed619\">GetLocalPointVaryingStencilTable</a>())) {</div>\n-<div class=\"line\"><a id=\"l00655\" name=\"l00655\"></a><span class=\"lineno\">  655</span>                    <span class=\"keyword\">delete</span> varyingStencils;</div>\n-<div class=\"line\"><a id=\"l00656\" name=\"l00656\"></a><span class=\"lineno\">  656</span>                    varyingStencils = varyingStencilsWithLocalPoints;</div>\n-<div class=\"line\"><a id=\"l00657\" name=\"l00657\"></a><span class=\"lineno\">  657</span>                }</div>\n-<div class=\"line\"><a id=\"l00658\" name=\"l00658\"></a><span class=\"lineno\">  658</span>            }</div>\n-<div class=\"line\"><a id=\"l00659\" name=\"l00659\"></a><span class=\"lineno\">  659</span>        }</div>\n-<div class=\"line\"><a id=\"l00660\" name=\"l00660\"></a><span class=\"lineno\">  660</span> </div>\n-<div class=\"line\"><a id=\"l00661\" name=\"l00661\"></a><span class=\"lineno\">  661</span>        _maxValence = _farPatchTable-&gt;<a class=\"code hl_function\" href=\"a00993.html#a14bf987459715b918b370247bb24a61c\">GetMaxValence</a>();</div>\n-<div class=\"line\"><a id=\"l00662\" name=\"l00662\"></a><span class=\"lineno\">  662</span>        _patchTable = PatchTable::Create(_farPatchTable, _deviceContext);</div>\n-<div class=\"line\"><a id=\"l00663\" name=\"l00663\"></a><span class=\"lineno\">  663</span> </div>\n-<div class=\"line\"><a id=\"l00664\" name=\"l00664\"></a><span class=\"lineno\">  664</span>        <span class=\"comment\">// numvertices = coarse verts + refined verts + gregory basis verts</span></div>\n-<div class=\"line\"><a id=\"l00665\" name=\"l00665\"></a><span class=\"lineno\">  665</span>        _numVertices = vertexStencils-&gt;<a class=\"code hl_function\" href=\"a01061.html#a02e67ceab8cb5af7982ef2a31a07a2ce\">GetNumControlVertices</a>()</div>\n-<div class=\"line\"><a id=\"l00666\" name=\"l00666\"></a><span class=\"lineno\">  666</span>            + vertexStencils-&gt;<a class=\"code hl_function\" href=\"a01061.html#a65836d2070b943c8fecbad926d074de2\">GetNumStencils</a>();</div>\n-<div class=\"line\"><a id=\"l00667\" name=\"l00667\"></a><span class=\"lineno\">  667</span> </div>\n-<div class=\"line\"><a id=\"l00668\" name=\"l00668\"></a><span class=\"lineno\">  668</span>        <span class=\"comment\">// convert to device stenciltable if necessary.</span></div>\n-<div class=\"line\"><a id=\"l00669\" name=\"l00669\"></a><span class=\"lineno\">  669</span>        _vertexStencilTable =</div>\n-<div class=\"line\"><a id=\"l00670\" name=\"l00670\"></a><span class=\"lineno\">  670</span>            convertToCompatibleStencilTable&lt;StencilTable&gt;(</div>\n-<div class=\"line\"><a id=\"l00671\" name=\"l00671\"></a><span class=\"lineno\">  671</span>            vertexStencils, _deviceContext);</div>\n-<div class=\"line\"><a id=\"l00672\" name=\"l00672\"></a><span class=\"lineno\">  672</span>        _varyingStencilTable =</div>\n-<div class=\"line\"><a id=\"l00673\" name=\"l00673\"></a><span class=\"lineno\">  673</span>            convertToCompatibleStencilTable&lt;StencilTable&gt;(</div>\n-<div class=\"line\"><a id=\"l00674\" name=\"l00674\"></a><span class=\"lineno\">  674</span>            varyingStencils, _deviceContext);</div>\n-<div class=\"line\"><a id=\"l00675\" name=\"l00675\"></a><span class=\"lineno\">  675</span> </div>\n-<div class=\"line\"><a id=\"l00676\" name=\"l00676\"></a><span class=\"lineno\">  676</span>        <span class=\"comment\">// FIXME: we do extra copyings for Far::Stencils.</span></div>\n-<div class=\"line\"><a id=\"l00677\" name=\"l00677\"></a><span class=\"lineno\">  677</span>        <span class=\"keyword\">delete</span> vertexStencils;</div>\n-<div class=\"line\"><a id=\"l00678\" name=\"l00678\"></a><span class=\"lineno\">  678</span>        <span class=\"keyword\">delete</span> varyingStencils;</div>\n-<div class=\"line\"><a id=\"l00679\" name=\"l00679\"></a><span class=\"lineno\">  679</span>    }</div>\n-<div class=\"line\"><a id=\"l00680\" name=\"l00680\"></a><span class=\"lineno\">  680</span> </div>\n-<div class=\"line\"><a id=\"l00681\" name=\"l00681\"></a><span class=\"lineno\">  681</span>    <span class=\"keywordtype\">void</span> initializeVertexBuffers(<span class=\"keywordtype\">int</span> numVertices,</div>\n-<div class=\"line\"><a id=\"l00682\" name=\"l00682\"></a><span class=\"lineno\">  682</span>                                 <span class=\"keywordtype\">int</span> numVertexElements,</div>\n-<div class=\"line\"><a id=\"l00683\" name=\"l00683\"></a><span class=\"lineno\">  683</span>                                 <span class=\"keywordtype\">int</span> numVaryingElements) {</div>\n-<div class=\"line\"><a id=\"l00684\" name=\"l00684\"></a><span class=\"lineno\">  684</span> </div>\n-<div class=\"line\"><a id=\"l00685\" name=\"l00685\"></a><span class=\"lineno\">  685</span>        <span class=\"keywordflow\">if</span> (numVertexElements) {</div>\n-<div class=\"line\"><a id=\"l00686\" name=\"l00686\"></a><span class=\"lineno\">  686</span>            _vertexBuffer = VertexBuffer::Create(numVertexElements,</div>\n-<div class=\"line\"><a id=\"l00687\" name=\"l00687\"></a><span class=\"lineno\">  687</span>                                                 numVertices, _deviceContext);</div>\n-<div class=\"line\"><a id=\"l00688\" name=\"l00688\"></a><span class=\"lineno\">  688</span>        }</div>\n-<div class=\"line\"><a id=\"l00689\" name=\"l00689\"></a><span class=\"lineno\">  689</span> </div>\n-<div class=\"line\"><a id=\"l00690\" name=\"l00690\"></a><span class=\"lineno\">  690</span>        <span class=\"keywordflow\">if</span> (numVaryingElements) {</div>\n-<div class=\"line\"><a id=\"l00691\" name=\"l00691\"></a><span class=\"lineno\">  691</span>            _varyingBuffer = VertexBuffer::Create(numVaryingElements,</div>\n-<div class=\"line\"><a id=\"l00692\" name=\"l00692\"></a><span class=\"lineno\">  692</span>                                                  numVertices, _deviceContext);</div>\n-<div class=\"line\"><a id=\"l00693\" name=\"l00693\"></a><span class=\"lineno\">  693</span>        }</div>\n-<div class=\"line\"><a id=\"l00694\" name=\"l00694\"></a><span class=\"lineno\">  694</span>    }</div>\n-<div class=\"line\"><a id=\"l00695\" name=\"l00695\"></a><span class=\"lineno\">  695</span> </div>\n-<div class=\"line\"><a id=\"l00696\" name=\"l00696\"></a><span class=\"lineno\">  696</span>    Far::TopologyRefiner * _refiner;</div>\n-<div class=\"line\"><a id=\"l00697\" name=\"l00697\"></a><span class=\"lineno\">  697</span>    Far::PatchTable * _farPatchTable;</div>\n-<div class=\"line\"><a id=\"l00698\" name=\"l00698\"></a><span class=\"lineno\">  698</span> </div>\n-<div class=\"line\"><a id=\"l00699\" name=\"l00699\"></a><span class=\"lineno\">  699</span>    <span class=\"keywordtype\">int</span> _numVertices;</div>\n-<div class=\"line\"><a id=\"l00700\" name=\"l00700\"></a><span class=\"lineno\">  700</span>    <span class=\"keywordtype\">int</span> _maxValence;</div>\n-<div class=\"line\"><a id=\"l00701\" name=\"l00701\"></a><span class=\"lineno\">  701</span> </div>\n-<div class=\"line\"><a id=\"l00702\" name=\"l00702\"></a><span class=\"lineno\">  702</span>    <a class=\"code hl_typedef\" href=\"a01281.html#a722ca2b35d7001c0eeb6298f2c3704ca\">VertexBuffer</a> * _vertexBuffer;</div>\n-<div class=\"line\"><a id=\"l00703\" name=\"l00703\"></a><span class=\"lineno\">  703</span>    <a class=\"code hl_typedef\" href=\"a01281.html#a722ca2b35d7001c0eeb6298f2c3704ca\">VertexBuffer</a> * _varyingBuffer;</div>\n-<div class=\"line\"><a id=\"l00704\" name=\"l00704\"></a><span class=\"lineno\">  704</span> </div>\n-<div class=\"line\"><a id=\"l00705\" name=\"l00705\"></a><span class=\"lineno\">  705</span>    BufferDescriptor _vertexDesc;</div>\n-<div class=\"line\"><a id=\"l00706\" name=\"l00706\"></a><span class=\"lineno\">  706</span>    BufferDescriptor _varyingDesc;</div>\n-<div class=\"line\"><a id=\"l00707\" name=\"l00707\"></a><span class=\"lineno\">  707</span> </div>\n-<div class=\"line\"><a id=\"l00708\" name=\"l00708\"></a><span class=\"lineno\">  708</span>    <a class=\"code hl_typedef\" href=\"a01281.html#a6b90e8290c540c78bedd053e2cc42f31\">StencilTable</a> <span class=\"keyword\">const</span> * _vertexStencilTable;</div>\n-<div class=\"line\"><a id=\"l00709\" name=\"l00709\"></a><span class=\"lineno\">  709</span>    <a class=\"code hl_typedef\" href=\"a01281.html#a6b90e8290c540c78bedd053e2cc42f31\">StencilTable</a> <span class=\"keyword\">const</span> * _varyingStencilTable;</div>\n-<div class=\"line\"><a id=\"l00710\" name=\"l00710\"></a><span class=\"lineno\">  710</span>    <a class=\"code hl_typedef\" href=\"a01281.html#a81bf971c4b5d929fc29f37e38b519853\">EvaluatorCache</a> * _evaluatorCache;</div>\n-<div class=\"line\"><a id=\"l00711\" name=\"l00711\"></a><span class=\"lineno\">  711</span> </div>\n-<div class=\"line\"><a id=\"l00712\" name=\"l00712\"></a><span class=\"lineno\">  712</span>    <a class=\"code hl_typedef\" href=\"a01281.html#adf9352136d44e5999629c6b4530bf4e0\">PatchTable</a> *_patchTable;</div>\n-<div class=\"line\"><a id=\"l00713\" name=\"l00713\"></a><span class=\"lineno\">  713</span>    <a class=\"code hl_typedef\" href=\"a01281.html#a3e2f358c45731eceb819ae70e7c8ca6e\">DeviceContext</a> *_deviceContext;</div>\n-<div class=\"line\"><a id=\"l00714\" name=\"l00714\"></a><span class=\"lineno\">  714</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00715\" name=\"l00715\"></a><span class=\"lineno\">  715</span> </div>\n-<div class=\"line\"><a id=\"l00716\" name=\"l00716\"></a><span class=\"lineno\">  716</span>} <span class=\"comment\">// end namespace Osd</span></div>\n-<div class=\"line\"><a id=\"l00717\" name=\"l00717\"></a><span class=\"lineno\">  717</span> </div>\n-<div class=\"line\"><a id=\"l00718\" name=\"l00718\"></a><span class=\"lineno\">  718</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00719\" name=\"l00719\"></a><span class=\"lineno\">  719</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00720\" name=\"l00720\"></a><span class=\"lineno\">  720</span> </div>\n-<div class=\"line\"><a id=\"l00721\" name=\"l00721\"></a><span class=\"lineno\">  721</span>}  <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l00722\" name=\"l00722\"></a><span class=\"lineno\">  722</span> </div>\n-<div class=\"line\"><a id=\"l00723\" name=\"l00723\"></a><span class=\"lineno\">  723</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_MESH_H</span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa00912_html_a06ceddf21c024b341a5b946049cd701a\"><div class=\"ttname\"><a href=\"a00912.html#a06ceddf21c024b341a5b946049cd701a\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::convertToCompatibleStencilTable</a></div><div class=\"ttdeci\">STENCIL_TABLE const * convertToCompatibleStencilTable(SRC_STENCIL_TABLE const *table, DEVICE_CONTEXT *context)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00141\">mesh.h:141</a></div></div>\n-<div class=\"ttc\" id=\"aa00912_html_a1af6b50e9f8ae13d3d2f9d5b03b35492\"><div class=\"ttname\"><a href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshBits</a></div><div class=\"ttdeci\">MeshBits</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00049\">mesh.h:49</a></div></div>\n-<div class=\"ttc\" id=\"aa00912_html_a1af6b50e9f8ae13d3d2f9d5b03b35492a4124233e4f787f999c7975afceab34f3\"><div class=\"ttname\"><a href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a4124233e4f787f999c7975afceab34f3\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshEndCapBilinearBasis</a></div><div class=\"ttdeci\">@ MeshEndCapBilinearBasis</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00057\">mesh.h:57</a></div></div>\n-<div class=\"ttc\" id=\"aa00912_html_a1af6b50e9f8ae13d3d2f9d5b03b35492a5676712c77d29cfdd330e2802db1c464\"><div class=\"ttname\"><a href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a5676712c77d29cfdd330e2802db1c464\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::NUM_MESH_BITS</a></div><div class=\"ttdeci\">@ NUM_MESH_BITS</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00061\">mesh.h:61</a></div></div>\n-<div class=\"ttc\" id=\"aa00912_html_a1af6b50e9f8ae13d3d2f9d5b03b35492a8fab1b3018f94b5b2432c7435e795925\"><div class=\"ttname\"><a href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a8fab1b3018f94b5b2432c7435e795925\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshUseInfSharpPatch</a></div><div class=\"ttdeci\">@ MeshUseInfSharpPatch</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00056\">mesh.h:56</a></div></div>\n-<div class=\"ttc\" id=\"aa00912_html_a1af6b50e9f8ae13d3d2f9d5b03b35492a9058d69e1089fc77f1974a76c34e2071\"><div class=\"ttname\"><a href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a9058d69e1089fc77f1974a76c34e2071\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshUseSingleCreasePatch</a></div><div class=\"ttdeci\">@ MeshUseSingleCreasePatch</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00055\">mesh.h:55</a></div></div>\n-<div class=\"ttc\" id=\"aa00912_html_a1af6b50e9f8ae13d3d2f9d5b03b35492a9313c644b9b2a998bcb55cfcc4582b1a\"><div class=\"ttname\"><a href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a9313c644b9b2a998bcb55cfcc4582b1a\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshInterleaveVarying</a></div><div class=\"ttdeci\">@ MeshInterleaveVarying</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00051\">mesh.h:51</a></div></div>\n-<div class=\"ttc\" id=\"aa00912_html_a1af6b50e9f8ae13d3d2f9d5b03b35492a9b8a23ab039e120012bc7c622308d603\"><div class=\"ttname\"><a href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a9b8a23ab039e120012bc7c622308d603\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshFVarAdaptive</a></div><div class=\"ttdeci\">@ MeshFVarAdaptive</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00053\">mesh.h:53</a></div></div>\n-<div class=\"ttc\" id=\"aa00912_html_a1af6b50e9f8ae13d3d2f9d5b03b35492aa2878e1a215530f5f6fb89f1e06f91ee\"><div class=\"ttname\"><a href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492aa2878e1a215530f5f6fb89f1e06f91ee\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshEndCapGregoryBasis</a></div><div class=\"ttdeci\">@ MeshEndCapGregoryBasis</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00059\">mesh.h:59</a></div></div>\n-<div class=\"ttc\" id=\"aa00912_html_a1af6b50e9f8ae13d3d2f9d5b03b35492aa2f41b6ba0393698bb3af283283737f7\"><div class=\"ttname\"><a href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492aa2f41b6ba0393698bb3af283283737f7\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshEndCapBSplineBasis</a></div><div class=\"ttdeci\">@ MeshEndCapBSplineBasis</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00058\">mesh.h:58</a></div></div>\n-<div class=\"ttc\" id=\"aa00912_html_a1af6b50e9f8ae13d3d2f9d5b03b35492aad7b3fb2be609abdbfafaf5b1c834158\"><div class=\"ttname\"><a href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492aad7b3fb2be609abdbfafaf5b1c834158\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshEndCapLegacyGregory</a></div><div class=\"ttdeci\">@ MeshEndCapLegacyGregory</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00060\">mesh.h:60</a></div></div>\n-<div class=\"ttc\" id=\"aa00912_html_a1af6b50e9f8ae13d3d2f9d5b03b35492ab32b8ef595539e14041e2fb0e619e3f9\"><div class=\"ttname\"><a href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492ab32b8ef595539e14041e2fb0e619e3f9\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshUseSmoothCornerPatch</a></div><div class=\"ttdeci\">@ MeshUseSmoothCornerPatch</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00054\">mesh.h:54</a></div></div>\n-<div class=\"ttc\" id=\"aa00912_html_a1af6b50e9f8ae13d3d2f9d5b03b35492ac10e41fef659f3b3a1b730319bdedb45\"><div class=\"ttname\"><a href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492ac10e41fef659f3b3a1b730319bdedb45\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshFVarData</a></div><div class=\"ttdeci\">@ MeshFVarData</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00052\">mesh.h:52</a></div></div>\n-<div class=\"ttc\" id=\"aa00912_html_a1af6b50e9f8ae13d3d2f9d5b03b35492adef344bcbdd50a1a93136eb53183c718\"><div class=\"ttname\"><a href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492adef344bcbdd50a1a93136eb53183c718\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshAdaptive</a></div><div class=\"ttdeci\">@ MeshAdaptive</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00050\">mesh.h:50</a></div></div>\n-<div class=\"ttc\" id=\"aa00912_html_a33f9830228f847fae1c30c9dffe02b5a\"><div class=\"ttname\"><a href=\"a00912.html#a33f9830228f847fae1c30c9dffe02b5a\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::convertToCompatibleStencilTable&lt; Far::StencilTable, Far::StencilTable, void &gt;</a></div><div class=\"ttdeci\">Far::StencilTable const * convertToCompatibleStencilTable&lt; Far::StencilTable, Far::StencilTable, void &gt;(Far::StencilTable const *table, void *)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00148\">mesh.h:149</a></div></div>\n-<div class=\"ttc\" id=\"aa00912_html_a4c2520cc1a8a5a03e3f53584629d7318\"><div class=\"ttname\"><a href=\"a00912.html#a4c2520cc1a8a5a03e3f53584629d7318\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::convertToCompatibleStencilTable&lt; Far::LimitStencilTable, Far::LimitStencilTable, void &gt;</a></div><div class=\"ttdeci\">Far::LimitStencilTable const * convertToCompatibleStencilTable&lt; Far::LimitStencilTable, Far::LimitStencilTable, void &gt;(Far::LimitStencilTable const *table, void *)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00158\">mesh.h:159</a></div></div>\n-<div class=\"ttc\" id=\"aa00912_html_a85ba9df501aea9af1ec9da1558c255bc\"><div class=\"ttname\"><a href=\"a00912.html#a85ba9df501aea9af1ec9da1558c255bc\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshBitset</a></div><div class=\"ttdeci\">std::bitset&lt; NUM_MESH_BITS &gt; MeshBitset</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00063\">mesh.h:63</a></div></div>\n-<div class=\"ttc\" id=\"aa00912_html_ab5753a2b0a0995c8e2259d2c4765f7df\"><div class=\"ttname\"><a href=\"a00912.html#ab5753a2b0a0995c8e2259d2c4765f7df\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::convertToCompatibleStencilTable&lt; Far::StencilTable, Far::StencilTable, ID3D11DeviceContext &gt;</a></div><div class=\"ttdeci\">Far::StencilTable const * convertToCompatibleStencilTable&lt; Far::StencilTable, Far::StencilTable, ID3D11DeviceContext &gt;(Far::StencilTable const *table, ID3D11DeviceContext *)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00168\">mesh.h:169</a></div></div>\n-<div class=\"ttc\" id=\"aa00993_html\"><div class=\"ttname\"><a href=\"a00993.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable</a></div><div class=\"ttdoc\">Container for arrays of parametric patches.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00761_source.html#l00055\">patchTable.h:55</a></div></div>\n-<div class=\"ttc\" id=\"aa00993_html_a14bf987459715b918b370247bb24a61c\"><div class=\"ttname\"><a href=\"a00993.html#a14bf987459715b918b370247bb24a61c\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetMaxValence</a></div><div class=\"ttdeci\">int GetMaxValence() const</div><div class=\"ttdoc\">Returns max vertex valence.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00761_source.html#l00092\">patchTable.h:92</a></div></div>\n-<div class=\"ttc\" id=\"aa00993_html_a1d27edb01bfb68ba50776b25aa437783\"><div class=\"ttname\"><a href=\"a00993.html#a1d27edb01bfb68ba50776b25aa437783\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetLocalPointStencilTable</a></div><div class=\"ttdeci\">StencilTable const * GetLocalPointStencilTable() const</div><div class=\"ttdoc\">Returns the stencil table to compute local point vertex values.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00761_source.html#l00778\">patchTable.h:778</a></div></div>\n-<div class=\"ttc\" id=\"aa00993_html_ad6bafe91da1dcf5b8fb1f7c8cb4ed619\"><div class=\"ttname\"><a href=\"a00993.html#ad6bafe91da1dcf5b8fb1f7c8cb4ed619\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::GetLocalPointVaryingStencilTable</a></div><div class=\"ttdeci\">StencilTable const * GetLocalPointVaryingStencilTable() const</div><div class=\"ttdoc\">Returns the stencil table to compute local point varying values.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00761_source.html#l00783\">patchTable.h:783</a></div></div>\n-<div class=\"ttc\" id=\"aa01017_html_a6ad8881e91652a8fe4d68d18ac16a435\"><div class=\"ttname\"><a href=\"a01017.html#a6ad8881e91652a8fe4d68d18ac16a435\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Create</a></div><div class=\"ttdeci\">static PatchTable * Create(TopologyRefiner const &amp;refiner, Options options=Options(), ConstIndexArray selectedFaces=ConstIndexArray())</div><div class=\"ttdoc\">Instantiates a PatchTable from a client-provided TopologyRefiner.</div></div>\n-<div class=\"ttc\" id=\"aa01021_html\"><div class=\"ttname\"><a href=\"a01021.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options</a></div><div class=\"ttdoc\">Public options for the PatchTable factory.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00045\">patchTableFactory.h:45</a></div></div>\n-<div class=\"ttc\" id=\"aa01021_html_aebc767d646011ab7d5bc7d6d49adf535a0c0d3d9e480d64f20f1b32d599c88aa5\"><div class=\"ttname\"><a href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535a0c0d3d9e480d64f20f1b32d599c88aa5\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::ENDCAP_LEGACY_GREGORY</a></div><div class=\"ttdeci\">@ ENDCAP_LEGACY_GREGORY</div><div class=\"ttdoc\">legacy option for 2.x style Gregory patches (Catmark only)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00061\">patchTableFactory.h:60</a></div></div>\n-<div class=\"ttc\" id=\"aa01021_html_aebc767d646011ab7d5bc7d6d49adf535a2e89c8e5ac21dbd024ec902de51566b0\"><div class=\"ttname\"><a href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535a2e89c8e5ac21dbd024ec902de51566b0\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::ENDCAP_GREGORY_BASIS</a></div><div class=\"ttdeci\">@ ENDCAP_GREGORY_BASIS</div><div class=\"ttdoc\">use Gregory patches (highest quality, recommended default)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00059\">patchTableFactory.h:59</a></div></div>\n-<div class=\"ttc\" id=\"aa01021_html_aebc767d646011ab7d5bc7d6d49adf535a90f0e9a2c992889cefdf1db954f9d98f\"><div class=\"ttname\"><a href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535a90f0e9a2c992889cefdf1db954f9d98f\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::ENDCAP_BILINEAR_BASIS</a></div><div class=\"ttdeci\">@ ENDCAP_BILINEAR_BASIS</div><div class=\"ttdoc\">use linear patches (simple quads or tris)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00057\">patchTableFactory.h:57</a></div></div>\n-<div class=\"ttc\" id=\"aa01021_html_aebc767d646011ab7d5bc7d6d49adf535ac3fc1d183b0bdfbc7bf1cce613c4ff04\"><div class=\"ttname\"><a href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535ac3fc1d183b0bdfbc7bf1cce613c4ff04\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::ENDCAP_BSPLINE_BASIS</a></div><div class=\"ttdeci\">@ ENDCAP_BSPLINE_BASIS</div><div class=\"ttdoc\">use BSpline-like patches (same patch type as regular)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00776_source.html#l00058\">patchTableFactory.h:58</a></div></div>\n-<div class=\"ttc\" id=\"aa01045_html_a46c8a310cf4c094f8c80e1cb8dc1f911ab18c20abfc04611ab0aec5e1c81bb2ab\"><div class=\"ttname\"><a href=\"a01045.html#a46c8a310cf4c094f8c80e1cb8dc1f911ab18c20abfc04611ab0aec5e1c81bb2ab\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactoryReal&lt; float &gt;::INTERPOLATE_VARYING</a></div><div class=\"ttdeci\">@ INTERPOLATE_VARYING</div><div class=\"ttdoc\">varying primvar stencils</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00057\">stencilTableFactory.h:57</a></div></div>\n-<div class=\"ttc\" id=\"aa01061_html_a02e67ceab8cb5af7982ef2a31a07a2ce\"><div class=\"ttname\"><a href=\"a01061.html#a02e67ceab8cb5af7982ef2a31a07a2ce\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::GetNumControlVertices</a></div><div class=\"ttdeci\">int GetNumControlVertices() const</div><div class=\"ttdoc\">Returns the number of control vertices indexed in the table.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00161\">stencilTable.h:161</a></div></div>\n-<div class=\"ttc\" id=\"aa01061_html_a65836d2070b943c8fecbad926d074de2\"><div class=\"ttname\"><a href=\"a01061.html#a65836d2070b943c8fecbad926d074de2\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::GetNumStencils</a></div><div class=\"ttdeci\">int GetNumStencils() const</div><div class=\"ttdoc\">Returns the number of stencils in the table.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00156\">stencilTable.h:156</a></div></div>\n-<div class=\"ttc\" id=\"aa01065_html\"><div class=\"ttname\"><a href=\"a01065.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTable</a></div><div class=\"ttdoc\">Stencil table class wrapping the template for compatibility.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00273\">stencilTable.h:273</a></div></div>\n-<div class=\"ttc\" id=\"aa01081_html\"><div class=\"ttname\"><a href=\"a01081.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTable</a></div><div class=\"ttdoc\">Limit stencil table class wrapping the template for compatibility.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00758_source.html#l00583\">stencilTable.h:583</a></div></div>\n-<div class=\"ttc\" id=\"aa01097_html_a667e11d1b8502dd1215608af93ada08c\"><div class=\"ttname\"><a href=\"a01097.html#a667e11d1b8502dd1215608af93ada08c\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactory::Create</a></div><div class=\"ttdeci\">static StencilTable const * Create(TopologyRefiner const &amp;refiner, Options options=Options())</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00293\">stencilTableFactory.h:293</a></div></div>\n-<div class=\"ttc\" id=\"aa01097_html_ab7374d716e8637a5ffbd12029713ec0f\"><div class=\"ttname\"><a href=\"a01097.html#ab7374d716e8637a5ffbd12029713ec0f\">OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactory::AppendLocalPointStencilTable</a></div><div class=\"ttdeci\">static StencilTable const * AppendLocalPointStencilTable(TopologyRefiner const &amp;refiner, StencilTable const *baseStencilTable, StencilTable const *localPointStencilTable, bool factorize=true)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00752_source.html#l00308\">stencilTableFactory.h:308</a></div></div>\n-<div class=\"ttc\" id=\"aa01113_html_aaf4a32b8a414eff77000c584c2015cb7\"><div class=\"ttname\"><a href=\"a01113.html#aaf4a32b8a414eff77000c584c2015cb7\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::GetNumVertices</a></div><div class=\"ttdeci\">int GetNumVertices() const</div><div class=\"ttdoc\">Return the number of vertices in this level.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00782_source.html#l00062\">topologyLevel.h:62</a></div></div>\n-<div class=\"ttc\" id=\"aa01121_html\"><div class=\"ttname\"><a href=\"a01121.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner</a></div><div class=\"ttdoc\">Stores topology data for a specified set of refinement options.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00051\">topologyRefiner.h:51</a></div></div>\n-<div class=\"ttc\" id=\"aa01121_html_a5dfa6810f510fac1ec621fc9e6b530c4\"><div class=\"ttname\"><a href=\"a01121.html#a5dfa6810f510fac1ec621fc9e6b530c4\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::IsUniform</a></div><div class=\"ttdeci\">bool IsUniform() const</div><div class=\"ttdoc\">Returns true if uniform refinement has been applied.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00068\">topologyRefiner.h:68</a></div></div>\n-<div class=\"ttc\" id=\"aa01121_html_aa9be824a572029f3ec1e0c0d6cfecd77\"><div class=\"ttname\"><a href=\"a01121.html#aa9be824a572029f3ec1e0c0d6cfecd77\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::GetNumFVarChannels</a></div><div class=\"ttdeci\">int GetNumFVarChannels() const</div><div class=\"ttdoc\">Returns the number of face-varying channels in the tables.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00293\">topologyRefiner.h:293</a></div></div>\n-<div class=\"ttc\" id=\"aa01121_html_ad22b7ffd9f8f3b488e5f220cf00c8c82\"><div class=\"ttname\"><a href=\"a01121.html#ad22b7ffd9f8f3b488e5f220cf00c8c82\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::RefineUniform</a></div><div class=\"ttdeci\">void RefineUniform(UniformOptions options)</div><div class=\"ttdoc\">Refine the topology uniformly.</div></div>\n-<div class=\"ttc\" id=\"aa01121_html_adc03a3531bd92ada5669788241e3515f\"><div class=\"ttname\"><a href=\"a01121.html#adc03a3531bd92ada5669788241e3515f\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::GetLevel</a></div><div class=\"ttdeci\">TopologyLevel const &amp; GetLevel(int level) const</div><div class=\"ttdoc\">Returns a handle to access data specific to a particular level.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00095\">topologyRefiner.h:95</a></div></div>\n-<div class=\"ttc\" id=\"aa01121_html_aff92309935db19988908471bee4fef4d\"><div class=\"ttname\"><a href=\"a01121.html#aff92309935db19988908471bee4fef4d\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::RefineAdaptive</a></div><div class=\"ttdeci\">void RefineAdaptive(AdaptiveOptions options, ConstIndexArray selectedFaces=ConstIndexArray())</div><div class=\"ttdoc\">Feature Adaptive topology refinement.</div></div>\n-<div class=\"ttc\" id=\"aa01125_html\"><div class=\"ttname\"><a href=\"a01125.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::UniformOptions</a></div><div class=\"ttdoc\">Uniform refinement options.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00118\">topologyRefiner.h:118</a></div></div>\n-<div class=\"ttc\" id=\"aa01125_html_ad58e8c2606ce33af17bb83fb90eb7325\"><div class=\"ttname\"><a href=\"a01125.html#ad58e8c2606ce33af17bb83fb90eb7325\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::UniformOptions::fullTopologyInLastLevel</a></div><div class=\"ttdeci\">unsigned int fullTopologyInLastLevel</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00131\">topologyRefiner.h:131</a></div></div>\n-<div class=\"ttc\" id=\"aa01129_html\"><div class=\"ttname\"><a href=\"a01129.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::AdaptiveOptions</a></div><div class=\"ttdoc\">Adaptive refinement options.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00156\">topologyRefiner.h:156</a></div></div>\n-<div class=\"ttc\" id=\"aa01129_html_a5834971432c649e28d5a0186f79a60d5\"><div class=\"ttname\"><a href=\"a01129.html#a5834971432c649e28d5a0186f79a60d5\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::AdaptiveOptions::useSingleCreasePatch</a></div><div class=\"ttdeci\">unsigned int useSingleCreasePatch</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00176\">topologyRefiner.h:176</a></div></div>\n-<div class=\"ttc\" id=\"aa01129_html_a5eba866952b7be15b065060b1f5a81da\"><div class=\"ttname\"><a href=\"a01129.html#a5eba866952b7be15b065060b1f5a81da\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::AdaptiveOptions::useInfSharpPatch</a></div><div class=\"ttdeci\">unsigned int useInfSharpPatch</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00178\">topologyRefiner.h:178</a></div></div>\n-<div class=\"ttc\" id=\"aa01129_html_a74c90a5955fcad9c95d4c18346f7c312\"><div class=\"ttname\"><a href=\"a01129.html#a74c90a5955fcad9c95d4c18346f7c312\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::AdaptiveOptions::considerFVarChannels</a></div><div class=\"ttdeci\">unsigned int considerFVarChannels</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00764_source.html#l00180\">topologyRefiner.h:180</a></div></div>\n-<div class=\"ttc\" id=\"aa01141_html\"><div class=\"ttname\"><a href=\"a01141.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::BufferDescriptor</a></div><div class=\"ttdoc\">BufferDescriptor is a struct which describes buffer elements in interleaved data buffers....</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00866_source.html#l00061\">bufferDescriptor.h:61</a></div></div>\n-<div class=\"ttc\" id=\"aa01141_html_a08f66a6870d87afcd5dc1b60d1019692\"><div class=\"ttname\"><a href=\"a01141.html#a08f66a6870d87afcd5dc1b60d1019692\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::BufferDescriptor::stride</a></div><div class=\"ttdeci\">int stride</div><div class=\"ttdoc\">stride to the next element</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00866_source.html#l00102\">bufferDescriptor.h:102</a></div></div>\n-<div class=\"ttc\" id=\"aa01141_html_a9f59b34b1f25fe00023291b678246bcc\"><div class=\"ttname\"><a href=\"a01141.html#a9f59b34b1f25fe00023291b678246bcc\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::BufferDescriptor::length</a></div><div class=\"ttdeci\">int length</div><div class=\"ttdoc\">number or length of the data</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00866_source.html#l00100\">bufferDescriptor.h:100</a></div></div>\n-<div class=\"ttc\" id=\"aa01141_html_aed7ea92f45bd273dde380a45ddced592\"><div class=\"ttname\"><a href=\"a01141.html#aed7ea92f45bd273dde380a45ddced592\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::BufferDescriptor::offset</a></div><div class=\"ttdeci\">int offset</div><div class=\"ttdoc\">offset to desired element data</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00866_source.html#l00098\">bufferDescriptor.h:98</a></div></div>\n-<div class=\"ttc\" id=\"aa01269_html\"><div class=\"ttname\"><a href=\"a01269.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshInterface</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00068\">mesh.h:68</a></div></div>\n-<div class=\"ttc\" id=\"aa01269_html_a15628b18e19d90e91fdbd659925ae5c0\"><div class=\"ttname\"><a href=\"a01269.html#a15628b18e19d90e91fdbd659925ae5c0\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshInterface::GetFarPatchTable</a></div><div class=\"ttdeci\">virtual Far::PatchTable const * GetFarPatchTable() const =0</div></div>\n-<div class=\"ttc\" id=\"aa01269_html_a173851f742adc30ac139af96fe63732d\"><div class=\"ttname\"><a href=\"a01269.html#a173851f742adc30ac139af96fe63732d\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshInterface::refineMesh</a></div><div class=\"ttdeci\">static void refineMesh(Far::TopologyRefiner &amp;refiner, int level, MeshBitset bits)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00117\">mesh.h:117</a></div></div>\n-<div class=\"ttc\" id=\"aa01269_html_a17f6f0b76abe06cfe6f518f6b84baf43\"><div class=\"ttname\"><a href=\"a01269.html#a17f6f0b76abe06cfe6f518f6b84baf43\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshInterface::GetMaxValence</a></div><div class=\"ttdeci\">virtual int GetMaxValence() const =0</div></div>\n-<div class=\"ttc\" id=\"aa01269_html_a431ba3d2dd158085dd98ac0a74b6852e\"><div class=\"ttname\"><a href=\"a01269.html#a431ba3d2dd158085dd98ac0a74b6852e\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshInterface::GetNumVertices</a></div><div class=\"ttdeci\">virtual int GetNumVertices() const =0</div></div>\n-<div class=\"ttc\" id=\"aa01269_html_a46c5effb867afe6684124103763ea931\"><div class=\"ttname\"><a href=\"a01269.html#a46c5effb867afe6684124103763ea931\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshInterface::UpdateVaryingBuffer</a></div><div class=\"ttdeci\">virtual void UpdateVaryingBuffer(float const *varyingData, int startVertex, int numVerts)=0</div></div>\n-<div class=\"ttc\" id=\"aa01269_html_a51f237c3f08f6ddc2ea7ba5cb0d00b36\"><div class=\"ttname\"><a href=\"a01269.html#a51f237c3f08f6ddc2ea7ba5cb0d00b36\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshInterface::refineMesh</a></div><div class=\"ttdeci\">static void refineMesh(Far::TopologyRefiner &amp;refiner, int level, bool adaptive, bool singleCreasePatch)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00101\">mesh.h:101</a></div></div>\n-<div class=\"ttc\" id=\"aa01269_html_a5c79ce02489e8591ee2d2bfbfab155ec\"><div class=\"ttname\"><a href=\"a01269.html#a5c79ce02489e8591ee2d2bfbfab155ec\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshInterface::UpdateVertexBuffer</a></div><div class=\"ttdeci\">virtual void UpdateVertexBuffer(float const *vertexData, int startVertex, int numVerts)=0</div></div>\n-<div class=\"ttc\" id=\"aa01269_html_a6a57ae718d1dcdeb05728bca6f18ba4e\"><div class=\"ttname\"><a href=\"a01269.html#a6a57ae718d1dcdeb05728bca6f18ba4e\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshInterface::GetPatchTable</a></div><div class=\"ttdeci\">virtual PatchTable * GetPatchTable() const =0</div></div>\n-<div class=\"ttc\" id=\"aa01269_html_a7ae07c3be3d1d28183ee669ab9739bf2\"><div class=\"ttname\"><a href=\"a01269.html#a7ae07c3be3d1d28183ee669ab9739bf2\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshInterface::~MeshInterface</a></div><div class=\"ttdeci\">virtual ~MeshInterface()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00076\">mesh.h:76</a></div></div>\n-<div class=\"ttc\" id=\"aa01269_html_a97aeac9a21a88e08fc89852a92011bea\"><div class=\"ttname\"><a href=\"a01269.html#a97aeac9a21a88e08fc89852a92011bea\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshInterface::MeshInterface</a></div><div class=\"ttdeci\">MeshInterface()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00074\">mesh.h:74</a></div></div>\n-<div class=\"ttc\" id=\"aa01269_html_a9a90398ba2073fe3da454f6b00deb33c\"><div class=\"ttname\"><a href=\"a01269.html#a9a90398ba2073fe3da454f6b00deb33c\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshInterface::Refine</a></div><div class=\"ttdeci\">virtual void Refine()=0</div></div>\n-<div class=\"ttc\" id=\"aa01269_html_a9cf40ecf1b9b5c29507fe92a03f37a3c\"><div class=\"ttname\"><a href=\"a01269.html#a9cf40ecf1b9b5c29507fe92a03f37a3c\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshInterface::VertexBufferBinding</a></div><div class=\"ttdeci\">PatchTable::VertexBufferBinding VertexBufferBinding</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00071\">mesh.h:71</a></div></div>\n-<div class=\"ttc\" id=\"aa01269_html_a9d8ecd607dbb0749a55113224fbd39c4\"><div class=\"ttname\"><a href=\"a01269.html#a9d8ecd607dbb0749a55113224fbd39c4\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshInterface::BindVertexBuffer</a></div><div class=\"ttdeci\">virtual VertexBufferBinding BindVertexBuffer()=0</div></div>\n-<div class=\"ttc\" id=\"aa01269_html_abcdcb8fab7865dc196900b37c2e2d279\"><div class=\"ttname\"><a href=\"a01269.html#abcdcb8fab7865dc196900b37c2e2d279\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshInterface::BindVaryingBuffer</a></div><div class=\"ttdeci\">virtual VertexBufferBinding BindVaryingBuffer()=0</div></div>\n-<div class=\"ttc\" id=\"aa01269_html_adf9352136d44e5999629c6b4530bf4e0\"><div class=\"ttname\"><a href=\"a01269.html#adf9352136d44e5999629c6b4530bf4e0\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshInterface::PatchTable</a></div><div class=\"ttdeci\">PATCH_TABLE PatchTable</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00070\">mesh.h:70</a></div></div>\n-<div class=\"ttc\" id=\"aa01269_html_ae13c194d355f54c75f87897e3c5beb6b\"><div class=\"ttname\"><a href=\"a01269.html#ae13c194d355f54c75f87897e3c5beb6b\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshInterface::Synchronize</a></div><div class=\"ttdeci\">virtual void Synchronize()=0</div></div>\n-<div class=\"ttc\" id=\"aa01273_html\"><div class=\"ttname\"><a href=\"a01273.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::EvaluatorCacheT</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00186\">mesh.h:186</a></div></div>\n-<div class=\"ttc\" id=\"aa01273_html_a323bd60a5b0a37389ea7990836f12e18\"><div class=\"ttname\"><a href=\"a01273.html#a323bd60a5b0a37389ea7990836f12e18\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::EvaluatorCacheT::GetEvaluator</a></div><div class=\"ttdeci\">EVALUATOR * GetEvaluator(BufferDescriptor const &amp;srcDesc, BufferDescriptor const &amp;dstDesc, BufferDescriptor const &amp;duDesc, BufferDescriptor const &amp;dvDesc, DEVICE_CONTEXT *deviceContext)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00241\">mesh.h:241</a></div></div>\n-<div class=\"ttc\" id=\"aa01273_html_a6026c1c3d9b42543c0ed159214f99cc2\"><div class=\"ttname\"><a href=\"a01273.html#a6026c1c3d9b42543c0ed159214f99cc2\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::EvaluatorCacheT::GetEvaluator</a></div><div class=\"ttdeci\">EVALUATOR * GetEvaluator(BufferDescriptor const &amp;srcDesc, BufferDescriptor const &amp;dstDesc, BufferDescriptor const &amp;duDesc, BufferDescriptor const &amp;dvDesc, BufferDescriptor const &amp;duuDesc, BufferDescriptor const &amp;duvDesc, BufferDescriptor const &amp;dvvDesc, DEVICE_CONTEXT *deviceContext)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00255\">mesh.h:255</a></div></div>\n-<div class=\"ttc\" id=\"aa01273_html_a7d2e3a44295a45db4d6cf935b53c3cbe\"><div class=\"ttname\"><a href=\"a01273.html#a7d2e3a44295a45db4d6cf935b53c3cbe\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::EvaluatorCacheT::GetEvaluator</a></div><div class=\"ttdeci\">EVALUATOR * GetEvaluator(BufferDescriptor const &amp;srcDesc, BufferDescriptor const &amp;dstDesc, DEVICE_CONTEXT *deviceContext)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00228\">mesh.h:228</a></div></div>\n-<div class=\"ttc\" id=\"aa01273_html_a922392890afb6e4f8d4d08845244f145\"><div class=\"ttname\"><a href=\"a01273.html#a922392890afb6e4f8d4d08845244f145\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::EvaluatorCacheT::~EvaluatorCacheT</a></div><div class=\"ttdeci\">~EvaluatorCacheT()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00188\">mesh.h:188</a></div></div>\n-<div class=\"ttc\" id=\"aa01273_html_aa3bf448cf35c2b498ee29830343fe2de\"><div class=\"ttname\"><a href=\"a01273.html#aa3bf448cf35c2b498ee29830343fe2de\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::EvaluatorCacheT::Evaluators</a></div><div class=\"ttdeci\">std::vector&lt; Entry &gt; Evaluators</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00225\">mesh.h:225</a></div></div>\n-<div class=\"ttc\" id=\"aa01277_html\"><div class=\"ttname\"><a href=\"a01277.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::EvaluatorCacheT::Entry</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00196\">mesh.h:196</a></div></div>\n-<div class=\"ttc\" id=\"aa01277_html_a0d596cc177157da972daa1a9911027a8\"><div class=\"ttname\"><a href=\"a01277.html#a0d596cc177157da972daa1a9911027a8\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::EvaluatorCacheT::Entry::Entry</a></div><div class=\"ttdeci\">Entry(BufferDescriptor const &amp;srcDescArg, BufferDescriptor const &amp;dstDescArg, BufferDescriptor const &amp;duDescArg, BufferDescriptor const &amp;dvDescArg, BufferDescriptor const &amp;duuDescArg, BufferDescriptor const &amp;duvDescArg, BufferDescriptor const &amp;dvvDescArg, EVALUATOR *evalArg)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00207\">mesh.h:207</a></div></div>\n-<div class=\"ttc\" id=\"aa01277_html_a1b564bc13c46807d779bd7e9a74a6e73\"><div class=\"ttname\"><a href=\"a01277.html#a1b564bc13c46807d779bd7e9a74a6e73\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::EvaluatorCacheT::Entry::dvvDesc</a></div><div class=\"ttdeci\">BufferDescriptor dvvDesc</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00222\">mesh.h:222</a></div></div>\n-<div class=\"ttc\" id=\"aa01277_html_a32b5fd50dc24be2bdd0c0ce3a68c352e\"><div class=\"ttname\"><a href=\"a01277.html#a32b5fd50dc24be2bdd0c0ce3a68c352e\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::EvaluatorCacheT::Entry::duvDesc</a></div><div class=\"ttdeci\">BufferDescriptor duvDesc</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00222\">mesh.h:222</a></div></div>\n-<div class=\"ttc\" id=\"aa01277_html_a463eaf3e8922e8aadc9e5eb0998067a9\"><div class=\"ttname\"><a href=\"a01277.html#a463eaf3e8922e8aadc9e5eb0998067a9\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::EvaluatorCacheT::Entry::dstDesc</a></div><div class=\"ttdeci\">BufferDescriptor dstDesc</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00220\">mesh.h:220</a></div></div>\n-<div class=\"ttc\" id=\"aa01277_html_a598ff84099694191b9815ad4528750d6\"><div class=\"ttname\"><a href=\"a01277.html#a598ff84099694191b9815ad4528750d6\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::EvaluatorCacheT::Entry::duDesc</a></div><div class=\"ttdeci\">BufferDescriptor duDesc</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00221\">mesh.h:221</a></div></div>\n-<div class=\"ttc\" id=\"aa01277_html_a5d0b0430c7584408dbcd788f52b80fd4\"><div class=\"ttname\"><a href=\"a01277.html#a5d0b0430c7584408dbcd788f52b80fd4\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::EvaluatorCacheT::Entry::srcDesc</a></div><div class=\"ttdeci\">BufferDescriptor srcDesc</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00220\">mesh.h:220</a></div></div>\n-<div class=\"ttc\" id=\"aa01277_html_a6f1841c958530d57dca2cf8e449623cc\"><div class=\"ttname\"><a href=\"a01277.html#a6f1841c958530d57dca2cf8e449623cc\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::EvaluatorCacheT::Entry::duuDesc</a></div><div class=\"ttdeci\">BufferDescriptor duuDesc</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00222\">mesh.h:222</a></div></div>\n-<div class=\"ttc\" id=\"aa01277_html_a8fdf9373eaeffa18a4674b9316c12d23\"><div class=\"ttname\"><a href=\"a01277.html#a8fdf9373eaeffa18a4674b9316c12d23\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::EvaluatorCacheT::Entry::evaluator</a></div><div class=\"ttdeci\">EVALUATOR * evaluator</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00223\">mesh.h:223</a></div></div>\n-<div class=\"ttc\" id=\"aa01277_html_ada6adfb697358377d8da9232690daae2\"><div class=\"ttname\"><a href=\"a01277.html#ada6adfb697358377d8da9232690daae2\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::EvaluatorCacheT::Entry::Entry</a></div><div class=\"ttdeci\">Entry(BufferDescriptor const &amp;srcDescArg, BufferDescriptor const &amp;dstDescArg, BufferDescriptor const &amp;duDescArg, BufferDescriptor const &amp;dvDescArg, EVALUATOR *evalArg)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00197\">mesh.h:197</a></div></div>\n-<div class=\"ttc\" id=\"aa01277_html_ae8a207538288cc8048fab45cf824dc7e\"><div class=\"ttname\"><a href=\"a01277.html#ae8a207538288cc8048fab45cf824dc7e\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::EvaluatorCacheT::Entry::dvDesc</a></div><div class=\"ttdeci\">BufferDescriptor dvDesc</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00221\">mesh.h:221</a></div></div>\n-<div class=\"ttc\" id=\"aa01281_html\"><div class=\"ttname\"><a href=\"a01281.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::Mesh</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00418\">mesh.h:418</a></div></div>\n-<div class=\"ttc\" id=\"aa01281_html_a060777db09a25a79af64ea17acdc6d4a\"><div class=\"ttname\"><a href=\"a01281.html#a060777db09a25a79af64ea17acdc6d4a\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::Mesh::GetTopologyRefiner</a></div><div class=\"ttdeci\">virtual Far::TopologyRefiner const * GetTopologyRefiner() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00578\">mesh.h:578</a></div></div>\n-<div class=\"ttc\" id=\"aa01281_html_a1e4d2fe7a4770614b65af59e4a92058a\"><div class=\"ttname\"><a href=\"a01281.html#a1e4d2fe7a4770614b65af59e4a92058a\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::Mesh::GetVertexBuffer</a></div><div class=\"ttdeci\">virtual VertexBuffer * GetVertexBuffer()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00570\">mesh.h:570</a></div></div>\n-<div class=\"ttc\" id=\"aa01281_html_a2d7dd4047fcb530d2d5a72b922142517\"><div class=\"ttname\"><a href=\"a01281.html#a2d7dd4047fcb530d2d5a72b922142517\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::Mesh::UpdateVaryingBuffer</a></div><div class=\"ttdeci\">virtual void UpdateVaryingBuffer(float const *varyingData, int startVertex, int numVerts)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00495\">mesh.h:495</a></div></div>\n-<div class=\"ttc\" id=\"aa01281_html_a2da98e35e1a94b53d77c7c5d68b44320\"><div class=\"ttname\"><a href=\"a01281.html#a2da98e35e1a94b53d77c7c5d68b44320\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::Mesh::GetVaryingBuffer</a></div><div class=\"ttdeci\">virtual VertexBuffer * GetVaryingBuffer()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00574\">mesh.h:574</a></div></div>\n-<div class=\"ttc\" id=\"aa01281_html_a32c8d641fe9ea1565be646a10c5d6c85\"><div class=\"ttname\"><a href=\"a01281.html#a32c8d641fe9ea1565be646a10c5d6c85\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::Mesh::Refine</a></div><div class=\"ttdeci\">virtual void Refine()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00501\">mesh.h:501</a></div></div>\n-<div class=\"ttc\" id=\"aa01281_html_a3e2f358c45731eceb819ae70e7c8ca6e\"><div class=\"ttname\"><a href=\"a01281.html#a3e2f358c45731eceb819ae70e7c8ca6e\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::Mesh::DeviceContext</a></div><div class=\"ttdeci\">DEVICE_CONTEXT DeviceContext</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00424\">mesh.h:424</a></div></div>\n-<div class=\"ttc\" id=\"aa01281_html_a5613b23fcbadaf4ffe3dbe87c2d2e773\"><div class=\"ttname\"><a href=\"a01281.html#a5613b23fcbadaf4ffe3dbe87c2d2e773\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::Mesh::Evaluator</a></div><div class=\"ttdeci\">EVALUATOR Evaluator</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00421\">mesh.h:421</a></div></div>\n-<div class=\"ttc\" id=\"aa01281_html_a6043945695eb4786b2ff1eba1725088a\"><div class=\"ttname\"><a href=\"a01281.html#a6043945695eb4786b2ff1eba1725088a\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::Mesh::BindVertexBuffer</a></div><div class=\"ttdeci\">virtual VertexBufferBinding BindVertexBuffer()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00562\">mesh.h:562</a></div></div>\n-<div class=\"ttc\" id=\"aa01281_html_a65a924e7a9f6038025677e4aa728d9d3\"><div class=\"ttname\"><a href=\"a01281.html#a65a924e7a9f6038025677e4aa728d9d3\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::Mesh::GetNumVertices</a></div><div class=\"ttdeci\">virtual int GetNumVertices() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00558\">mesh.h:558</a></div></div>\n-<div class=\"ttc\" id=\"aa01281_html_a69e70d7e23e9bd8bd8eb7b5f0589009f\"><div class=\"ttname\"><a href=\"a01281.html#a69e70d7e23e9bd8bd8eb7b5f0589009f\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::Mesh::Mesh</a></div><div class=\"ttdeci\">Mesh(Far::TopologyRefiner *refiner, int numVertexElements, int numVaryingElements, int level, MeshBitset bits=MeshBitset(), EvaluatorCache *evaluatorCache=NULL, DeviceContext *deviceContext=NULL)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00428\">mesh.h:428</a></div></div>\n-<div class=\"ttc\" id=\"aa01281_html_a6b90e8290c540c78bedd053e2cc42f31\"><div class=\"ttname\"><a href=\"a01281.html#a6b90e8290c540c78bedd053e2cc42f31\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::Mesh::StencilTable</a></div><div class=\"ttdeci\">STENCIL_TABLE StencilTable</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00422\">mesh.h:422</a></div></div>\n-<div class=\"ttc\" id=\"aa01281_html_a722ca2b35d7001c0eeb6298f2c3704ca\"><div class=\"ttname\"><a href=\"a01281.html#a722ca2b35d7001c0eeb6298f2c3704ca\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::Mesh::VertexBuffer</a></div><div class=\"ttdeci\">VERTEX_BUFFER VertexBuffer</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00420\">mesh.h:420</a></div></div>\n-<div class=\"ttc\" id=\"aa01281_html_a81bf971c4b5d929fc29f37e38b519853\"><div class=\"ttname\"><a href=\"a01281.html#a81bf971c4b5d929fc29f37e38b519853\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::Mesh::EvaluatorCache</a></div><div class=\"ttdeci\">EvaluatorCacheT&lt; Evaluator &gt; EvaluatorCache</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00425\">mesh.h:425</a></div></div>\n-<div class=\"ttc\" id=\"aa01281_html_a914e3cead7ba6e0634b70bcf2957e8f7\"><div class=\"ttname\"><a href=\"a01281.html#a914e3cead7ba6e0634b70bcf2957e8f7\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::Mesh::BindVaryingBuffer</a></div><div class=\"ttdeci\">virtual VertexBufferBinding BindVaryingBuffer()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00566\">mesh.h:566</a></div></div>\n-<div class=\"ttc\" id=\"aa01281_html_a92162d9c34b218e4c03472f3483e3a78\"><div class=\"ttname\"><a href=\"a01281.html#a92162d9c34b218e4c03472f3483e3a78\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::Mesh::~Mesh</a></div><div class=\"ttdeci\">virtual ~Mesh()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00478\">mesh.h:478</a></div></div>\n-<div class=\"ttc\" id=\"aa01281_html_a9cf40ecf1b9b5c29507fe92a03f37a3c\"><div class=\"ttname\"><a href=\"a01281.html#a9cf40ecf1b9b5c29507fe92a03f37a3c\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::Mesh::VertexBufferBinding</a></div><div class=\"ttdeci\">PatchTable::VertexBufferBinding VertexBufferBinding</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00426\">mesh.h:426</a></div></div>\n-<div class=\"ttc\" id=\"aa01281_html_aa12fdb15b7109e56fc98b256a5d1018c\"><div class=\"ttname\"><a href=\"a01281.html#aa12fdb15b7109e56fc98b256a5d1018c\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::Mesh::UpdateVertexBuffer</a></div><div class=\"ttdeci\">virtual void UpdateVertexBuffer(float const *vertexData, int startVertex, int numVerts)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00489\">mesh.h:489</a></div></div>\n-<div class=\"ttc\" id=\"aa01281_html_ab945364bf8cadb3d1f8285551d9d49f0\"><div class=\"ttname\"><a href=\"a01281.html#ab945364bf8cadb3d1f8285551d9d49f0\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::Mesh::Synchronize</a></div><div class=\"ttdeci\">virtual void Synchronize()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00546\">mesh.h:546</a></div></div>\n-<div class=\"ttc\" id=\"aa01281_html_abcd37c29ab31ebecf03405bf4e92f28a\"><div class=\"ttname\"><a href=\"a01281.html#abcd37c29ab31ebecf03405bf4e92f28a\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::Mesh::GetPatchTable</a></div><div class=\"ttdeci\">virtual PatchTable * GetPatchTable() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00550\">mesh.h:550</a></div></div>\n-<div class=\"ttc\" id=\"aa01281_html_ac9e858564a58e758570a257e6db063b8\"><div class=\"ttname\"><a href=\"a01281.html#ac9e858564a58e758570a257e6db063b8\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::Mesh::GetFarPatchTable</a></div><div class=\"ttdeci\">virtual Far::PatchTable const * GetFarPatchTable() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00554\">mesh.h:554</a></div></div>\n-<div class=\"ttc\" id=\"aa01281_html_adf9352136d44e5999629c6b4530bf4e0\"><div class=\"ttname\"><a href=\"a01281.html#adf9352136d44e5999629c6b4530bf4e0\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::Mesh::PatchTable</a></div><div class=\"ttdeci\">PATCH_TABLE PatchTable</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00423\">mesh.h:423</a></div></div>\n-<div class=\"ttc\" id=\"aa01281_html_affef41596871be7997c1691510d02e3f\"><div class=\"ttname\"><a href=\"a01281.html#affef41596871be7997c1691510d02e3f\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::Mesh::GetMaxValence</a></div><div class=\"ttdeci\">virtual int GetMaxValence() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00560\">mesh.h:560</a></div></div>\n+<div class=\"line\"><a id=\"l00578\" name=\"l00578\"></a><span class=\"lineno\">  578</span>} <span class=\"comment\">// end namespace Sdc</span></div>\n+<div class=\"line\"><a id=\"l00579\" name=\"l00579\"></a><span class=\"lineno\">  579</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00580\" name=\"l00580\"></a><span class=\"lineno\">  580</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00581\" name=\"l00581\"></a><span class=\"lineno\">  581</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l00582\" name=\"l00582\"></a><span class=\"lineno\">  582</span> </div>\n+<div class=\"line\"><a id=\"l00583\" name=\"l00583\"></a><span class=\"lineno\">  583</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_SDC_LOOP_SCHEME_H */</span><span class=\"preprocessor\"></span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa00913_html_a61ef2f8f765ba17f8036bcc0f0fa887b\"><div class=\"ttname\"><a href=\"a00913.html#a61ef2f8f765ba17f8036bcc0f0fa887b\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Split</a></div><div class=\"ttdeci\">Split</div><div class=\"ttdoc\">Enumerated type for all face splitting schemes.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01492_source.html#l00047\">types.h:47</a></div></div>\n+<div class=\"ttc\" id=\"aa00913_html_a61ef2f8f765ba17f8036bcc0f0fa887ba31959b36c678fcb560f478ecb7c051f5\"><div class=\"ttname\"><a href=\"a00913.html#a61ef2f8f765ba17f8036bcc0f0fa887ba31959b36c678fcb560f478ecb7c051f5\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::SPLIT_TO_TRIS</a></div><div class=\"ttdeci\">@ SPLIT_TO_TRIS</div><div class=\"ttdoc\">Used by Loop.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01492_source.html#l00049\">types.h:49</a></div></div>\n+<div class=\"ttc\" id=\"aa01341_html_a059f5c2c9193be58be31955e987a0600\"><div class=\"ttname\"><a href=\"a01341.html#a059f5c2c9193be58be31955e987a0600\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::assignSmoothMaskForEdge</a></div><div class=\"ttdeci\">void assignSmoothMaskForEdge(EDGE const &amp;edge, MASK &amp;mask) const</div></div>\n+<div class=\"ttc\" id=\"aa01341_html_a14b97ddde5fba31ca7f933508ee649da\"><div class=\"ttname\"><a href=\"a01341.html#a14b97ddde5fba31ca7f933508ee649da\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::GetTopologicalSplitType</a></div><div class=\"ttdeci\">static Split GetTopologicalSplitType()</div></div>\n+<div class=\"ttc\" id=\"aa01341_html_a2439e78373d9dfd6ad3ab373c7c32dcc\"><div class=\"ttname\"><a href=\"a01341.html#a2439e78373d9dfd6ad3ab373c7c32dcc\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::assignCreaseMaskForVertex</a></div><div class=\"ttdeci\">void assignCreaseMaskForVertex(VERTEX const &amp;edge, MASK &amp;mask, int const creaseEnds[2]) const</div></div>\n+<div class=\"ttc\" id=\"aa01341_html_a4f8e559b93bbaf26ea0d40b1fa2f194f\"><div class=\"ttname\"><a href=\"a01341.html#a4f8e559b93bbaf26ea0d40b1fa2f194f\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::assignCreaseLimitTangentMasks</a></div><div class=\"ttdeci\">void assignCreaseLimitTangentMasks(VERTEX const &amp;vertex, MASK &amp;tan1, MASK &amp;tan2, int const creaseEnds[2]) const</div></div>\n+<div class=\"ttc\" id=\"aa01341_html_a531004716c07aad5436cb2db27e1ec24\"><div class=\"ttname\"><a href=\"a01341.html#a531004716c07aad5436cb2db27e1ec24\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::GetRegularFaceSize</a></div><div class=\"ttdeci\">static int GetRegularFaceSize()</div></div>\n+<div class=\"ttc\" id=\"aa01341_html_a56964a4c783aa15ec1f819306ee9f214\"><div class=\"ttname\"><a href=\"a01341.html#a56964a4c783aa15ec1f819306ee9f214\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::assignCreaseMaskForEdge</a></div><div class=\"ttdeci\">void assignCreaseMaskForEdge(EDGE const &amp;edge, MASK &amp;mask) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00863_source.html#l00317\">scheme.h:317</a></div></div>\n+<div class=\"ttc\" id=\"aa01341_html_a736c10944cb921b334fbd8b81866d59f\"><div class=\"ttname\"><a href=\"a01341.html#a736c10944cb921b334fbd8b81866d59f\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::assignSmoothLimitMask</a></div><div class=\"ttdeci\">void assignSmoothLimitMask(VERTEX const &amp;vertex, MASK &amp;pos) const</div></div>\n+<div class=\"ttc\" id=\"aa01341_html_a73cf51e4315ca86e5e0a3954c92f8f74\"><div class=\"ttname\"><a href=\"a01341.html#a73cf51e4315ca86e5e0a3954c92f8f74\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::GetLocalNeighborhoodSize</a></div><div class=\"ttdeci\">static int GetLocalNeighborhoodSize()</div></div>\n+<div class=\"ttc\" id=\"aa01341_html_a77644f69ede03fa62222d60a99970238\"><div class=\"ttname\"><a href=\"a01341.html#a77644f69ede03fa62222d60a99970238\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::assignCornerMaskForVertex</a></div><div class=\"ttdeci\">void assignCornerMaskForVertex(VERTEX const &amp;edge, MASK &amp;mask) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00863_source.html#l00331\">scheme.h:331</a></div></div>\n+<div class=\"ttc\" id=\"aa01341_html_a7c9316f7212d3ea41db7f3f1a66cc7e5\"><div class=\"ttname\"><a href=\"a01341.html#a7c9316f7212d3ea41db7f3f1a66cc7e5\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::assignCreaseLimitMask</a></div><div class=\"ttdeci\">void assignCreaseLimitMask(VERTEX const &amp;vertex, MASK &amp;pos, int const creaseEnds[2]) const</div></div>\n+<div class=\"ttc\" id=\"aa01341_html_a84788a5a93f17e648103123c9f4a33f9\"><div class=\"ttname\"><a href=\"a01341.html#a84788a5a93f17e648103123c9f4a33f9\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::assignSmoothMaskForVertex</a></div><div class=\"ttdeci\">void assignSmoothMaskForVertex(VERTEX const &amp;edge, MASK &amp;mask) const</div></div>\n+<div class=\"ttc\" id=\"aa01341_html_a8f7e983b2195ac6b388c7a6db17f8cb0\"><div class=\"ttname\"><a href=\"a01341.html#a8f7e983b2195ac6b388c7a6db17f8cb0\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::GetRegularVertexValence</a></div><div class=\"ttdeci\">static int GetRegularVertexValence()</div></div>\n+<div class=\"ttc\" id=\"aa01341_html_a9ee5e194a00832a5bfa76cf58df0bc4b\"><div class=\"ttname\"><a href=\"a01341.html#a9ee5e194a00832a5bfa76cf58df0bc4b\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::assignSmoothLimitTangentMasks</a></div><div class=\"ttdeci\">void assignSmoothLimitTangentMasks(VERTEX const &amp;vertex, MASK &amp;tan1, MASK &amp;tan2) const</div></div>\n+<div class=\"ttc\" id=\"aa01341_html_aa2821d365ea8135d6316c0f926f87ccb\"><div class=\"ttname\"><a href=\"a01341.html#aa2821d365ea8135d6316c0f926f87ccb\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::assignCornerLimitMask</a></div><div class=\"ttdeci\">void assignCornerLimitMask(VERTEX const &amp;vertex, MASK &amp;pos) const</div></div>\n+<div class=\"ttc\" id=\"aa01341_html_ae9ee7f11f51ec6ff8c43ab0729454b54\"><div class=\"ttname\"><a href=\"a01341.html#ae9ee7f11f51ec6ff8c43ab0729454b54\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::assignCornerLimitTangentMasks</a></div><div class=\"ttdeci\">void assignCornerLimitTangentMasks(VERTEX const &amp;vertex, MASK &amp;tan1, MASK &amp;tan2) const</div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00872.html\">mesh.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_f61368944c63c2c1f8c69bc232e59c39.html\">sdc</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00872.html\">loopScheme.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-mesh.h\n+loopScheme.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2013 Pixar\n+2// Copyright 2014 DreamWorks Animation LLC.\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -23,1094 +23,671 @@\n 17//\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n-24\n-25#ifndef OPENSUBDIV3_OSD_MESH_H\n-26#define OPENSUBDIV3_OSD_MESH_H\n-27\n-28#include \"../version.h\"\n-29\n-30#include <bitset>\n+24#ifndef OPENSUBDIV3_SDC_LOOP_SCHEME_H\n+25#define OPENSUBDIV3_SDC_LOOP_SCHEME_H\n+26\n+27#include \"../version.h\"\n+28\n+29#include \"../sdc/scheme.h\"\n+30\n 31#include <cassert>\n-32#include <cstring>\n-33#include <vector>\n-34\n-35#include \"../far/topologyRefiner.h\"\n-36#include \"../far/patchTableFactory.h\"\n-37#include \"../far/stencilTable.h\"\n-38#include \"../far/stencilTableFactory.h\"\n-39\n-40#include \"../osd/bufferDescriptor.h\"\n-41\n-42struct ID3D11DeviceContext;\n+32#include <cmath>\n+33\n+34namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+35namespace OPENSUBDIV_VERSION {\n+36namespace Sdc {\n+37\n+38\n+39//\n+40// Specializations for Sdc::Scheme<SCHEME_LOOP>:\n+41//\n+42//\n 43\n-44namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-45namespace OPENSUBDIV_VERSION {\n-46\n-47namespace Osd {\n-48\n-_\b4_\b9enum _\bM_\be_\bs_\bh_\bB_\bi_\bt_\bs {\n-_\b5_\b0 _\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be = 0,\n-_\b5_\b1 _\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bl_\be_\ba_\bv_\be_\bV_\ba_\br_\by_\bi_\bn_\bg = 1,\n-_\b5_\b2 _\bM_\be_\bs_\bh_\bF_\bV_\ba_\br_\bD_\ba_\bt_\ba = 2,\n-_\b5_\b3 _\bM_\be_\bs_\bh_\bF_\bV_\ba_\br_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be = 3,\n-_\b5_\b4 _\bM_\be_\bs_\bh_\bU_\bs_\be_\bS_\bm_\bo_\bo_\bt_\bh_\bC_\bo_\br_\bn_\be_\br_\bP_\ba_\bt_\bc_\bh = 4,\n-_\b5_\b5 _\bM_\be_\bs_\bh_\bU_\bs_\be_\bS_\bi_\bn_\bg_\bl_\be_\bC_\br_\be_\ba_\bs_\be_\bP_\ba_\bt_\bc_\bh = 5,\n-_\b5_\b6 _\bM_\be_\bs_\bh_\bU_\bs_\be_\bI_\bn_\bf_\bS_\bh_\ba_\br_\bp_\bP_\ba_\bt_\bc_\bh = 6,\n-_\b5_\b7 _\bM_\be_\bs_\bh_\bE_\bn_\bd_\bC_\ba_\bp_\bB_\bi_\bl_\bi_\bn_\be_\ba_\br_\bB_\ba_\bs_\bi_\bs = 7, // exclusive\n-_\b5_\b8 _\bM_\be_\bs_\bh_\bE_\bn_\bd_\bC_\ba_\bp_\bB_\bS_\bp_\bl_\bi_\bn_\be_\bB_\ba_\bs_\bi_\bs = 8, // exclusive\n-_\b5_\b9 _\bM_\be_\bs_\bh_\bE_\bn_\bd_\bC_\ba_\bp_\bG_\br_\be_\bg_\bo_\br_\by_\bB_\ba_\bs_\bi_\bs = 9, // exclusive\n-_\b6_\b0 _\bM_\be_\bs_\bh_\bE_\bn_\bd_\bC_\ba_\bp_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by = 10, // exclusive\n-_\b6_\b1 _\bN_\bU_\bM_\b__\bM_\bE_\bS_\bH_\b__\bB_\bI_\bT_\bS = 11,\n-62};\n-_\b6_\b3typedef std::bitset<NUM_MESH_BITS> _\bM_\be_\bs_\bh_\bB_\bi_\bt_\bs_\be_\bt;\n-64\n-65// --------------------------------------------------------------------------\n--\n-66\n-67template <class PATCH_TABLE>\n-_\b6_\b8class _\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be {\n-69public:\n-_\b7_\b0 typedef PATCH_TABLE _\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be;\n-_\b7_\b1 typedef typename PatchTable::VertexBufferBinding _\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bB_\bi_\bn_\bd_\bi_\bn_\bg;\n-72\n-73public:\n-_\b7_\b4 _\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be() { }\n-75\n-_\b7_\b6 virtual _\b~_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be() { }\n-77\n-_\b7_\b8 virtual int _\bG_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs() const = 0;\n-79\n-_\b8_\b0 virtual int _\bG_\be_\bt_\bM_\ba_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be() const = 0;\n-81\n-_\b8_\b2 virtual void _\bU_\bp_\bd_\ba_\bt_\be_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br(float const *vertexData,\n-83 int startVertex, int numVerts) = 0;\n-84\n-_\b8_\b5 virtual void _\bU_\bp_\bd_\ba_\bt_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bB_\bu_\bf_\bf_\be_\br(float const *varyingData,\n-86 int startVertex, int numVerts) = 0;\n+44//\n+45// Loop traits:\n+46//\n+47template <>\n+_\b4_\b8inline _\bS_\bp_\bl_\bi_\bt _\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bL_\bO_\bO_\bP_\b>_\b:_\b:_\bG_\be_\bt_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\bi_\bc_\ba_\bl_\bS_\bp_\bl_\bi_\bt_\bT_\by_\bp_\be() { return\n+_\bS_\bP_\bL_\bI_\bT_\b__\bT_\bO_\b__\bT_\bR_\bI_\bS; }\n+49\n+50template <>\n+_\b5_\b1inline int _\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bL_\bO_\bO_\bP_\b>_\b:_\b:_\bG_\be_\bt_\bR_\be_\bg_\bu_\bl_\ba_\br_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be() { return 3; }\n+52\n+53template <>\n+_\b5_\b4inline int _\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bL_\bO_\bO_\bP_\b>_\b:_\b:_\bG_\be_\bt_\bR_\be_\bg_\bu_\bl_\ba_\br_\bV_\be_\br_\bt_\be_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be() { return 6; }\n+55\n+56template <>\n+_\b5_\b7inline int _\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bL_\bO_\bO_\bP_\b>_\b:_\b:_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bh_\bo_\bo_\bd_\bS_\bi_\bz_\be() { return 1; }\n+58\n+59\n+60//\n+61// Protected methods to assign the two types of masks for an edge-vertex --\n+62// Crease and Smooth.\n+63//\n+64// The Crease case does not really need to be specialized, though it may be\n+65// preferable to define all explicitly here.\n+66//\n+67template <>\n+68template <typename EDGE, typename MASK>\n+69inline void\n+_\b7_\b0_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bL_\bO_\bO_\bP_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\br_\be_\ba_\bs_\be_\bM_\ba_\bs_\bk_\bF_\bo_\br_\bE_\bd_\bg_\be(EDGE const&, MASK& mask) const\n+71{\n+72 mask.SetNumVertexWeights(2);\n+73 mask.SetNumEdgeWeights(0);\n+74 mask.SetNumFaceWeights(0);\n+75 mask.SetFaceWeightsForFaceCenters(false);\n+76\n+77 mask.VertexWeight(0) = 0.5f;\n+78 mask.VertexWeight(1) = 0.5f;\n+79}\n+80\n+81template <>\n+82template <typename EDGE, typename MASK>\n+83inline void\n+_\b8_\b4_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bL_\bO_\bO_\bP_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bS_\bm_\bo_\bo_\bt_\bh_\bM_\ba_\bs_\bk_\bF_\bo_\br_\bE_\bd_\bg_\be(EDGE const& edge, MASK& mask)\n+const\n+85{\n+86 int faceCount = edge.GetNumFaces();\n 87\n-_\b8_\b8 virtual void _\bR_\be_\bf_\bi_\bn_\be() = 0;\n-89\n-_\b9_\b0 virtual void _\bS_\by_\bn_\bc_\bh_\br_\bo_\bn_\bi_\bz_\be() = 0;\n-91\n-_\b9_\b2 virtual _\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be * _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be() const = 0;\n-93\n-_\b9_\b4 virtual _\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be const *_\bG_\be_\bt_\bF_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be() const = 0;\n-95\n-_\b9_\b6 virtual _\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bB_\bi_\bn_\bd_\bi_\bn_\bg _\bB_\bi_\bn_\bd_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br() = 0;\n-97\n-_\b9_\b8 virtual _\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bB_\bi_\bn_\bd_\bi_\bn_\bg _\bB_\bi_\bn_\bd_\bV_\ba_\br_\by_\bi_\bn_\bg_\bB_\bu_\bf_\bf_\be_\br() = 0;\n-99\n-100protected:\n-_\b1_\b0_\b1 static inline void _\br_\be_\bf_\bi_\bn_\be_\bM_\be_\bs_\bh(_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & refiner,\n-102 int level, bool adaptive,\n-103 bool singleCreasePatch) {\n-104 if (adaptive) {\n-105 _\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs options(level);\n-106 options._\bu_\bs_\be_\bS_\bi_\bn_\bg_\bl_\be_\bC_\br_\be_\ba_\bs_\be_\bP_\ba_\bt_\bc_\bh = singleCreasePatch;\n-107 refiner._\bR_\be_\bf_\bi_\bn_\be_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be(options);\n-108 } else {\n-109 // This dependency on FVar channels should not be necessary\n-110 bool fullTopologyInLastLevel = refiner._\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs()>0;\n+88 mask.SetNumVertexWeights(2);\n+89 mask.SetNumEdgeWeights(0);\n+90 mask.SetNumFaceWeights(faceCount);\n+91 mask.SetFaceWeightsForFaceCenters(false);\n+92\n+93 //\n+94 // This is where we run into the issue of \"face weights\" -- we want to\n+weight the\n+95 // face-centers for Catmark, but face-centers are not generated for Loop. So\n+do\n+96 // we make assumptions on how the mask is used, assign some property to the\n+mask\n+97 // to indicate how they were assigned, or take input from the mask itself?\n+98 //\n+99 // Regardless, we have two choices:\n+100 // - face-weights are for the vertices opposite the edge (as in Hbr):\n+101 // vertex weights = 0.375f;\n+102 // face weights = 0.125f;\n+103 //\n+104 // - face-weights are for the face centers:\n+105 // vertex weights = 0.125f;\n+106 // face weights = 0.375f;\n+107 //\n+108 // Coincidentally the coefficients are the same but reversed.\n+109 //\n+110 typedef typename MASK::Weight Weight;\n 111\n-112 _\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bU_\bn_\bi_\bf_\bo_\br_\bm_\bO_\bp_\bt_\bi_\bo_\bn_\bs options(level);\n-113 options._\bf_\bu_\bl_\bl_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bI_\bn_\bL_\ba_\bs_\bt_\bL_\be_\bv_\be_\bl = fullTopologyInLastLevel;\n-114 refiner._\bR_\be_\bf_\bi_\bn_\be_\bU_\bn_\bi_\bf_\bo_\br_\bm(options);\n-115 }\n-116 }\n-_\b1_\b1_\b7 static inline void _\br_\be_\bf_\bi_\bn_\be_\bM_\be_\bs_\bh(_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br & refiner,\n-118 int level, _\bM_\be_\bs_\bh_\bB_\bi_\bt_\bs_\be_\bt bits) {\n-119 if (bits.test(_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be)) {\n-120 _\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs options(level);\n-121 options._\bu_\bs_\be_\bS_\bi_\bn_\bg_\bl_\be_\bC_\br_\be_\ba_\bs_\be_\bP_\ba_\bt_\bc_\bh = bits.test(_\bM_\be_\bs_\bh_\bU_\bs_\be_\bS_\bi_\bn_\bg_\bl_\be_\bC_\br_\be_\ba_\bs_\be_\bP_\ba_\bt_\bc_\bh);\n-122 options._\bu_\bs_\be_\bI_\bn_\bf_\bS_\bh_\ba_\br_\bp_\bP_\ba_\bt_\bc_\bh = bits.test(_\bM_\be_\bs_\bh_\bU_\bs_\be_\bI_\bn_\bf_\bS_\bh_\ba_\br_\bp_\bP_\ba_\bt_\bc_\bh);\n-123 options._\bc_\bo_\bn_\bs_\bi_\bd_\be_\br_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs = bits.test(_\bM_\be_\bs_\bh_\bF_\bV_\ba_\br_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be);\n-124 refiner._\bR_\be_\bf_\bi_\bn_\be_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be(options);\n-125 } else {\n-126 // This dependency on FVar channels should not be necessary\n-127 bool fullTopologyInLastLevel = refiner._\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs()>0;\n-128\n-129 _\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bU_\bn_\bi_\bf_\bo_\br_\bm_\bO_\bp_\bt_\bi_\bo_\bn_\bs options(level);\n-130 options._\bf_\bu_\bl_\bl_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bI_\bn_\bL_\ba_\bs_\bt_\bL_\be_\bv_\be_\bl = fullTopologyInLastLevel;\n-131 refiner._\bR_\be_\bf_\bi_\bn_\be_\bU_\bn_\bi_\bf_\bo_\br_\bm(options);\n-132 }\n-133 }\n-134};\n-135\n-136// -------------------------------------------------------------------------\n+112 Weight vWeight = mask.AreFaceWeightsForFaceCenters() ? 0.125f : 0.375f;\n+113 Weight fWeight = mask.AreFaceWeightsForFaceCenters() ? 0.375f : 0.125f;\n+114\n+115 mask.VertexWeight(0) = vWeight;\n+116 mask.VertexWeight(1) = vWeight;\n+117\n+118 if (faceCount == 2) {\n+119 mask.FaceWeight(0) = fWeight;\n+120 mask.FaceWeight(1) = fWeight;\n+121 } else {\n+122 // The non-manifold case is not clearly defined -- we adjust the above\n+123 // face-weight to preserve the ratio of edge-center and face-centers:\n+124 fWeight *= 2.0f / (Weight) faceCount;\n+125 for (int i = 0; i < faceCount; ++i) {\n+126 mask.FaceWeight(i) = fWeight;\n+127 }\n+128 }\n+129}\n+130\n+131\n+132//\n+133// Protected methods to assign the three types of masks for a vertex-vertex\n --\n-137\n-138template <typename STENCIL_TABLE, typename SRC_STENCIL_TABLE,\n-139 typename DEVICE_CONTEXT>\n-140STENCIL_TABLE const *\n-_\b1_\b4_\b1_\bc_\bo_\bn_\bv_\be_\br_\bt_\bT_\bo_\bC_\bo_\bm_\bp_\ba_\bt_\bi_\bb_\bl_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(\n-142 SRC_STENCIL_TABLE const *table, DEVICE_CONTEXT *context) {\n-143 if (! table) return NULL;\n-144 return STENCIL_TABLE::Create(table, context);\n-145}\n-146\n-147template <>\n-_\b1_\b4_\b8inline _\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *\n-149_\bc_\bo_\bn_\bv_\be_\br_\bt_\bT_\bo_\bC_\bo_\bm_\bp_\ba_\bt_\bi_\bb_\bl_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b<_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b,_\b _\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b,_\b _\bv_\bo_\bi_\bd_\b>(\n-150 _\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *table, void * /*context*/) {\n-151 // no need for conversion\n-152 // XXX: We don't want to even copy.\n-153 if (! table) return NULL;\n-154 return new _\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(*table);\n-155}\n-156\n-157template <>\n-_\b1_\b5_\b8inline _\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *\n-159_\bc_\bo_\bn_\bv_\be_\br_\bt_\bT_\bo_\bC_\bo_\bm_\bp_\ba_\bt_\bi_\bb_\bl_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b<_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b,_\b _\bF_\ba_\br_\b:_\b:\n-_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b,_\b _\bv_\bo_\bi_\bd_\b>(\n-160 _\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *table, void * /*context*/) {\n-161 // no need for conversion\n-162 // XXX: We don't want to even copy.\n-163 if (! table) return NULL;\n-164 return new _\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(*table);\n-165}\n-166\n-167template <>\n-_\b1_\b6_\b8inline _\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *\n-169_\bc_\bo_\bn_\bv_\be_\br_\bt_\bT_\bo_\bC_\bo_\bm_\bp_\ba_\bt_\bi_\bb_\bl_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b<_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b,_\b _\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b,\n-_\bI_\bD_\b3_\bD_\b1_\b1_\bD_\be_\bv_\bi_\bc_\be_\bC_\bo_\bn_\bt_\be_\bx_\bt_\b>(\n-170 _\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const *table, ID3D11DeviceContext * /*context*/) {\n-171 // no need for conversion\n-172 // XXX: We don't want to even copy.\n-173 if (! table) return NULL;\n-174 return new _\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(*table);\n+134// Corner, Crease and Smooth (Dart is the same as Smooth).\n+135//\n+136// Corner and Crease do not really need to be specialized, though it may be\n+137// preferable to define all explicitly here.\n+138//\n+139template <>\n+140template <typename VERTEX, typename MASK>\n+141inline void\n+_\b1_\b4_\b2_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bL_\bO_\bO_\bP_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\br_\bn_\be_\br_\bM_\ba_\bs_\bk_\bF_\bo_\br_\bV_\be_\br_\bt_\be_\bx(VERTEX const&, MASK& mask)\n+const\n+143{\n+144 mask.SetNumVertexWeights(1);\n+145 mask.SetNumEdgeWeights(0);\n+146 mask.SetNumFaceWeights(0);\n+147 mask.SetFaceWeightsForFaceCenters(false);\n+148\n+149 mask.VertexWeight(0) = 1.0f;\n+150}\n+151\n+152template <>\n+153template <typename VERTEX, typename MASK>\n+154inline void\n+_\b1_\b5_\b5_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bL_\bO_\bO_\bP_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\br_\be_\ba_\bs_\be_\bM_\ba_\bs_\bk_\bF_\bo_\br_\bV_\be_\br_\bt_\be_\bx(VERTEX const& vertex, MASK&\n+mask,\n+156 int const creaseEnds[2]) const {\n+157 typedef typename MASK::Weight Weight;\n+158\n+159 int valence = vertex.GetNumEdges();\n+160\n+161 mask.SetNumVertexWeights(1);\n+162 mask.SetNumEdgeWeights(valence);\n+163 mask.SetNumFaceWeights(0);\n+164 mask.SetFaceWeightsForFaceCenters(false);\n+165\n+166 Weight vWeight = 0.75f;\n+167 Weight eWeight = 0.125f;\n+168\n+169 mask.VertexWeight(0) = vWeight;\n+170 for (int i = 0; i < valence; ++i) {\n+171 mask.EdgeWeight(i) = 0.0f;\n+172 }\n+173 mask.EdgeWeight(creaseEnds[0]) = eWeight;\n+174 mask.EdgeWeight(creaseEnds[1]) = eWeight;\n 175}\n 176\n-177// -------------------------------------------------------------------------\n---\n-178\n-179// Osd evaluator cache: for the GPU backends require compiled instance\n-180// (GLXFB, GLCompute, CL)\n-181//\n-182// note: this is just an example usage and client applications are supposed\n-183// to implement their own structure for Evaluator instance.\n-184//\n-185template <typename EVALUATOR>\n-_\b1_\b8_\b6class _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bC_\ba_\bc_\bh_\be_\bT {\n-187public:\n-_\b1_\b8_\b8 _\b~_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bC_\ba_\bc_\bh_\be_\bT() {\n-189 for(typename Evaluators::iterator it = _evaluators.begin();\n-190 it != _evaluators.end(); ++it) {\n-191 delete it->evaluator;\n-192 }\n-193 }\n+177template <>\n+178template <typename VERTEX, typename MASK>\n+179inline void\n+_\b1_\b8_\b0_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bL_\bO_\bO_\bP_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bS_\bm_\bo_\bo_\bt_\bh_\bM_\ba_\bs_\bk_\bF_\bo_\br_\bV_\be_\br_\bt_\be_\bx(VERTEX const& vertex, MASK&\n+mask) const\n+181{\n+182 typedef typename MASK::Weight Weight;\n+183\n+184 int valence = vertex.GetNumFaces();\n+185\n+186 mask.SetNumVertexWeights(1);\n+187 mask.SetNumEdgeWeights(valence);\n+188 mask.SetNumFaceWeights(0);\n+189 mask.SetFaceWeightsForFaceCenters(false);\n+190\n+191 // Specialize for the regular case: 1/16 per edge-vert, 5/8 for the vert\n+itself:\n+192 Weight eWeight = (Weight) 0.0625f;\n+193 Weight vWeight = (Weight) 0.625f;\n 194\n-195 // XXX: FIXME, linear search\n-_\b1_\b9_\b6 struct _\bE_\bn_\bt_\br_\by {\n-_\b1_\b9_\b7 _\bE_\bn_\bt_\br_\by(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDescArg,\n-198 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDescArg,\n-199 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDescArg,\n-200 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDescArg,\n-201 EVALUATOR *evalArg) : _\bs_\br_\bc_\bD_\be_\bs_\bc(srcDescArg), _\bd_\bs_\bt_\bD_\be_\bs_\bc(dstDescArg),\n-202 _\bd_\bu_\bD_\be_\bs_\bc(duDescArg), _\bd_\bv_\bD_\be_\bs_\bc(dvDescArg),\n-203 _\bd_\bu_\bu_\bD_\be_\bs_\bc(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br()),\n-204 _\bd_\bu_\bv_\bD_\be_\bs_\bc(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br()),\n-205 _\bd_\bv_\bv_\bD_\be_\bs_\bc(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br()),\n-206 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br(evalArg) {}\n-_\b2_\b0_\b7 _\bE_\bn_\bt_\br_\by(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDescArg,\n-208 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDescArg,\n-209 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDescArg,\n-210 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDescArg,\n-211 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDescArg,\n-212 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDescArg,\n-213 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDescArg,\n-214 EVALUATOR *evalArg) : _\bs_\br_\bc_\bD_\be_\bs_\bc(srcDescArg), _\bd_\bs_\bt_\bD_\be_\bs_\bc(dstDescArg),\n-215 _\bd_\bu_\bD_\be_\bs_\bc(duDescArg), _\bd_\bv_\bD_\be_\bs_\bc(dvDescArg),\n-216 _\bd_\bu_\bu_\bD_\be_\bs_\bc(duuDescArg),\n-217 _\bd_\bu_\bv_\bD_\be_\bs_\bc(duvDescArg),\n-218 _\bd_\bv_\bv_\bD_\be_\bs_\bc(dvvDescArg),\n-219 _\be_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br(evalArg) {}\n-_\b2_\b2_\b0 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br _\bs_\br_\bc_\bD_\be_\bs_\bc, _\bd_\bs_\bt_\bD_\be_\bs_\bc;\n-_\b2_\b2_\b1 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br _\bd_\bu_\bD_\be_\bs_\bc, _\bd_\bv_\bD_\be_\bs_\bc;\n-_\b2_\b2_\b2 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br _\bd_\bu_\bu_\bD_\be_\bs_\bc, _\bd_\bu_\bv_\bD_\be_\bs_\bc, _\bd_\bv_\bv_\bD_\be_\bs_\bc;\n-_\b2_\b2_\b3 EVALUATOR *_\be_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br;\n-224 };\n-_\b2_\b2_\b5 typedef std::vector<Entry> _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bs;\n-226\n-227 template <typename DEVICE_CONTEXT>\n-_\b2_\b2_\b8 EVALUATOR *_\bG_\be_\bt_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-229 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-230 DEVICE_CONTEXT *deviceContext) {\n-231 return _\bG_\be_\bt_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br(srcDesc, dstDesc,\n-232 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-233 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-234 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-235 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-236 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-237 deviceContext);\n-238 }\n-239\n-240 template <typename DEVICE_CONTEXT>\n-_\b2_\b4_\b1 EVALUATOR *_\bG_\be_\bt_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-242 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-243 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-244 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-245 DEVICE_CONTEXT *deviceContext) {\n-246 return _\bG_\be_\bt_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br(srcDesc, dstDesc,\n-247 duDesc, dvDesc,\n-248 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-249 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-250 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(),\n-251 deviceContext);\n-252 }\n-253\n-254 template <typename DEVICE_CONTEXT>\n-_\b2_\b5_\b5 EVALUATOR *_\bG_\be_\bt_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-256 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-257 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duDesc,\n-258 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvDesc,\n-259 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duuDesc,\n-260 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &duvDesc,\n-261 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dvvDesc,\n-262 DEVICE_CONTEXT *deviceContext) {\n-263\n-264 for(typename Evaluators::iterator it = _evaluators.begin();\n-265 it != _evaluators.end(); ++it) {\n-266 if (isEqual(srcDesc, it->srcDesc) &&\n-267 isEqual(dstDesc, it->dstDesc) &&\n-268 isEqual(duDesc, it->duDesc) &&\n-269 isEqual(dvDesc, it->dvDesc) &&\n-270 isEqual(duuDesc, it->duuDesc) &&\n-271 isEqual(duvDesc, it->duvDesc) &&\n-272 isEqual(dvvDesc, it->dvvDesc)) {\n-273 return it->evaluator;\n-274 }\n-275 }\n-276 EVALUATOR *e = EVALUATOR::Create(srcDesc, dstDesc,\n-277 duDesc, dvDesc,\n-278 duuDesc, duvDesc, dvvDesc,\n-279 deviceContext);\n-280 _evaluators.push_back(_\bE_\bn_\bt_\br_\by(srcDesc, dstDesc,\n-281 duDesc, dvDesc,\n-282 duuDesc, duvDesc, dvvDesc, e));\n-283 return e;\n-284 }\n-285\n-286private:\n-287 static bool isEqual(_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &a,\n-288 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &b) {\n-289 int offsetA = a._\bs_\bt_\br_\bi_\bd_\be ? (a._\bo_\bf_\bf_\bs_\be_\bt % a._\bs_\bt_\br_\bi_\bd_\be) : 0;\n-290 int offsetB = b._\bs_\bt_\br_\bi_\bd_\be ? (b._\bo_\bf_\bf_\bs_\be_\bt % b._\bs_\bt_\br_\bi_\bd_\be) : 0;\n-291\n-292 // Note: XFB kernel needs to be configured with the local offset\n-293 // of the dstDesc to skip preceding primvars.\n-294 return (offsetA == offsetB &&\n-295 a._\bl_\be_\bn_\bg_\bt_\bh == b._\bl_\be_\bn_\bg_\bt_\bh &&\n-296 a._\bs_\bt_\br_\bi_\bd_\be == b._\bs_\bt_\br_\bi_\bd_\be);\n-297 }\n-298\n-299 _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bs _evaluators;\n-300};\n-301\n-303\n-304// template helpers to see if the evaluator is instantiatable or not.\n-305template <typename EVALUATOR>\n-306struct instantiatable\n-307{\n-308 typedef char yes[1];\n-309 typedef char no[2];\n-310 template <typename C> static yes &chk(typename C::Instantiatable *t=0);\n-311 template <typename C> static no &chk(...);\n-312 static bool const value = sizeof(chk<EVALUATOR>(0)) == sizeof(yes);\n-313};\n-314template <bool C, typename T=void>\n-315struct enable_if { typedef T type; };\n-316template <typename T>\n-317struct enable_if<false, T> { };\n-318\n-320\n-321// extract a kernel from cache if available\n-322template <typename EVALUATOR, typename DEVICE_CONTEXT>\n-323static EVALUATOR *GetEvaluator(\n-324 EvaluatorCacheT<EVALUATOR> *cache,\n-325 BufferDescriptor const &srcDesc,\n-326 BufferDescriptor const &dstDesc,\n-327 BufferDescriptor const &duDesc,\n-328 BufferDescriptor const &dvDesc,\n-329 BufferDescriptor const &duuDesc,\n-330 BufferDescriptor const &duvDesc,\n-331 BufferDescriptor const &dvvDesc,\n-332 DEVICE_CONTEXT deviceContext,\n-333 typename enable_if<instantiatable<EVALUATOR>::value, void>::type*t=0) {\n-334 (void)t;\n-335 if (cache == NULL) return NULL;\n-336 return cache->GetEvaluator(srcDesc, dstDesc,\n-337 duDesc, dvDesc, duuDesc, duvDesc, dvvDesc,\n-338 deviceContext);\n-339}\n-340\n-341template <typename EVALUATOR, typename DEVICE_CONTEXT>\n-342static EVALUATOR *GetEvaluator(\n-343 EvaluatorCacheT<EVALUATOR> *cache,\n-344 BufferDescriptor const &srcDesc,\n-345 BufferDescriptor const &dstDesc,\n-346 BufferDescriptor const &duDesc,\n-347 BufferDescriptor const &dvDesc,\n-348 DEVICE_CONTEXT deviceContext,\n-349 typename enable_if<instantiatable<EVALUATOR>::value, void>::type*t=0) {\n-350 (void)t;\n-351 if (cache == NULL) return NULL;\n-352 return cache->GetEvaluator(srcDesc, dstDesc, duDesc, dvDesc,\n-deviceContext);\n-353}\n-354\n-355template <typename EVALUATOR, typename DEVICE_CONTEXT>\n-356static EVALUATOR *GetEvaluator(\n-357 EvaluatorCacheT<EVALUATOR> *cache,\n-358 BufferDescriptor const &srcDesc,\n-359 BufferDescriptor const &dstDesc,\n-360 DEVICE_CONTEXT deviceContext,\n-361 typename enable_if<instantiatable<EVALUATOR>::value, void>::type*t=0) {\n-362 (void)t;\n-363 if (cache == NULL) return NULL;\n-364 return cache->GetEvaluator(srcDesc, dstDesc,\n-365 BufferDescriptor(),\n-366 BufferDescriptor(),\n-367 deviceContext);\n-368}\n-369\n-370// fallback\n-371template <typename EVALUATOR, typename DEVICE_CONTEXT>\n-372static EVALUATOR *GetEvaluator(\n-373 EvaluatorCacheT<EVALUATOR> *,\n-374 BufferDescriptor const &,\n-375 BufferDescriptor const &,\n-376 BufferDescriptor const &,\n-377 BufferDescriptor const &,\n-378 BufferDescriptor const &,\n-379 BufferDescriptor const &,\n-380 BufferDescriptor const &,\n-381 DEVICE_CONTEXT,\n-382 typename enable_if<!instantiatable<EVALUATOR>::value, void>::type*t=0) {\n-383 (void)t;\n-384 return NULL;\n-385}\n-386\n-387template <typename EVALUATOR, typename DEVICE_CONTEXT>\n-388static EVALUATOR *GetEvaluator(\n-389 EvaluatorCacheT<EVALUATOR> *,\n-390 BufferDescriptor const &,\n-391 BufferDescriptor const &,\n-392 BufferDescriptor const &,\n-393 BufferDescriptor const &,\n-394 DEVICE_CONTEXT,\n-395 typename enable_if<!instantiatable<EVALUATOR>::value, void>::type*t=0) {\n-396 (void)t;\n-397 return NULL;\n-398}\n-399\n-400template <typename EVALUATOR, typename DEVICE_CONTEXT>\n-401static EVALUATOR *GetEvaluator(\n-402 EvaluatorCacheT<EVALUATOR> *,\n-403 BufferDescriptor const &,\n-404 BufferDescriptor const &,\n-405 DEVICE_CONTEXT,\n-406 typename enable_if<!instantiatable<EVALUATOR>::value, void>::type*t=0) {\n-407 (void)t;\n-408 return NULL;\n-409}\n-410\n-411// -------------------------------------------------------------------------\n---\n-412\n-413template <typename VERTEX_BUFFER,\n-414 typename STENCIL_TABLE,\n-415 typename EVALUATOR,\n-416 typename PATCH_TABLE,\n-417 typename DEVICE_CONTEXT = void>\n-_\b4_\b1_\b8class _\bM_\be_\bs_\bh : public _\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be<PATCH_TABLE> {\n-419public:\n-_\b4_\b2_\b0 typedef VERTEX_BUFFER _\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br;\n-_\b4_\b2_\b1 typedef EVALUATOR _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br;\n-_\b4_\b2_\b2 typedef STENCIL_TABLE _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be;\n-_\b4_\b2_\b3 typedef PATCH_TABLE _\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be;\n-_\b4_\b2_\b4 typedef DEVICE_CONTEXT _\bD_\be_\bv_\bi_\bc_\be_\bC_\bo_\bn_\bt_\be_\bx_\bt;\n-_\b4_\b2_\b5 typedef _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bC_\ba_\bc_\bh_\be_\bT_\b<_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b> _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bC_\ba_\bc_\bh_\be;\n-_\b4_\b2_\b6 typedef typename PatchTable::VertexBufferBinding _\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bB_\bi_\bn_\bd_\bi_\bn_\bg;\n-427\n-_\b4_\b2_\b8 _\bM_\be_\bs_\bh(_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br * refiner,\n-429 int numVertexElements,\n-430 int numVaryingElements,\n-431 int level,\n-432 _\bM_\be_\bs_\bh_\bB_\bi_\bt_\bs_\be_\bt bits = _\bM_\be_\bs_\bh_\bB_\bi_\bt_\bs_\be_\bt(),\n-433 _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bC_\ba_\bc_\bh_\be * evaluatorCache = NULL,\n-434 _\bD_\be_\bv_\bi_\bc_\be_\bC_\bo_\bn_\bt_\be_\bx_\bt * deviceContext = NULL) :\n-435\n-436 _refiner(refiner),\n-437 _farPatchTable(NULL),\n-438 _numVertices(0),\n-439 _maxValence(0),\n-440 _vertexBuffer(NULL),\n-441 _varyingBuffer(NULL),\n-442 _vertexStencilTable(NULL),\n-443 _varyingStencilTable(NULL),\n-444 _evaluatorCache(evaluatorCache),\n-445 _patchTable(NULL),\n-446 _deviceContext(deviceContext) {\n+195 if (valence != 6) {\n+196 // From HbrLoopSubdivision<T>::Subdivide(mesh, vertex):\n+197 // - could use some lookup tables here for common irregular valence (5, 7,\n+8)\n+198 // or all of these cosine calls will be adding up...\n+199\n+200 double dValence = (double) valence;\n+201 double invValence = 1.0f / dValence;\n+202 double cosTheta = std::cos(M_PI * 2.0f * invValence);\n+203\n+204 double beta = 0.25f * cosTheta + 0.375f;\n+205\n+206 eWeight = (Weight) ((0.625f - (beta * beta)) * invValence);\n+207 vWeight = (Weight) (1.0f - (eWeight * dValence));\n+208 }\n+209\n+210 mask.VertexWeight(0) = vWeight;\n+211 for (int i = 0; i < valence; ++i) {\n+212 mask.EdgeWeight(i) = eWeight;\n+213 }\n+214}\n+215\n+216\n+217//\n+218// Limit masks for position:\n+219//\n+220template <>\n+221template <typename VERTEX, typename MASK>\n+222inline void\n+_\b2_\b2_\b3_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bL_\bO_\bO_\bP_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\br_\bn_\be_\br_\bL_\bi_\bm_\bi_\bt_\bM_\ba_\bs_\bk(VERTEX const& /* vertex */, MASK&\n+posMask) const {\n+224\n+225 posMask.SetNumVertexWeights(1);\n+226 posMask.SetNumEdgeWeights(0);\n+227 posMask.SetNumFaceWeights(0);\n+228 posMask.SetFaceWeightsForFaceCenters(false);\n+229\n+230 posMask.VertexWeight(0) = 1.0f;\n+231}\n+232\n+233template <>\n+234template <typename VERTEX, typename MASK>\n+235inline void\n+_\b2_\b3_\b6_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bL_\bO_\bO_\bP_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\br_\be_\ba_\bs_\be_\bL_\bi_\bm_\bi_\bt_\bM_\ba_\bs_\bk(VERTEX const& vertex, MASK&\n+posMask,\n+237 int const creaseEnds[2]) const {\n+238\n+239 typedef typename MASK::Weight Weight;\n+240\n+241 int valence = vertex.GetNumEdges();\n+242\n+243 posMask.SetNumVertexWeights(1);\n+244 posMask.SetNumEdgeWeights(valence);\n+245 posMask.SetNumFaceWeights(0);\n+246 posMask.SetFaceWeightsForFaceCenters(false);\n+247\n+248 //\n+249 // The refinement mask for a crease vertex is (1/8, 3/4, 1/8) and for a\n+crease\n+250 // edge is (1/2, 1/2) -- producing a uniform B-spline curve along the\n+crease\n+251 // (boundary) whether the vertex or its crease is regular or not. The limit\n+252 // mask is therefore (1/6, 2/3, 1/6) for ALL cases.\n+253 //\n+254 // An alternative limit mask (1/5, 3/5, 1/5) is often published for use\n+either\n+255 // for irregular crease vertices or for all crease/boundary vertices, but\n+this\n+256 // is based on an alternate refinement mask for the edge -- (3/8, 5/8)\n+versus\n+257 // the usual (1/2, 1/2) -- and will not produce the B-spline curve desired.\n+258 //\n+259 Weight vWeight = (Weight) (4.0 / 6.0);\n+260 Weight eWeight = (Weight) (1.0 / 6.0);\n+261\n+262 posMask.VertexWeight(0) = vWeight;\n+263 for (int i = 0; i < valence; ++i) {\n+264 posMask.EdgeWeight(i) = 0.0f;\n+265 }\n+266 posMask.EdgeWeight(creaseEnds[0]) = eWeight;\n+267 posMask.EdgeWeight(creaseEnds[1]) = eWeight;\n+268}\n+269\n+270template <>\n+271template <typename VERTEX, typename MASK>\n+272inline void\n+_\b2_\b7_\b3_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bL_\bO_\bO_\bP_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bS_\bm_\bo_\bo_\bt_\bh_\bL_\bi_\bm_\bi_\bt_\bM_\ba_\bs_\bk(VERTEX const& vertex, MASK&\n+posMask) const {\n+274\n+275 typedef typename MASK::Weight Weight;\n+276\n+277 int valence = vertex.GetNumFaces();\n+278\n+279 posMask.SetNumVertexWeights(1);\n+280 posMask.SetNumEdgeWeights(valence);\n+281 posMask.SetNumFaceWeights(0);\n+282 posMask.SetFaceWeightsForFaceCenters(false);\n+283\n+284 // Specialize for the regular case: 1/12 per edge-vert, 1/2 for the vert\n+itself:\n+285 if (valence == 6) {\n+286 Weight eWeight = (Weight) (1.0 / 12.0);\n+287 Weight vWeight = 0.5f;\n+288\n+289 posMask.VertexWeight(0) = vWeight;\n+290\n+291 posMask.EdgeWeight(0) = eWeight;\n+292 posMask.EdgeWeight(1) = eWeight;\n+293 posMask.EdgeWeight(2) = eWeight;\n+294 posMask.EdgeWeight(3) = eWeight;\n+295 posMask.EdgeWeight(4) = eWeight;\n+296 posMask.EdgeWeight(5) = eWeight;\n+297\n+298 } else {\n+299 double dValence = (double) valence;\n+300 double invValence = 1.0f / dValence;\n+301 double cosTheta = std::cos(M_PI * 2.0f * invValence);\n+302\n+303 double beta = 0.25f * cosTheta + 0.375f;\n+304 double gamma = (0.625f - (beta * beta)) * invValence;\n+305\n+306 Weight eWeight = (Weight) (1.0f / (dValence + 3.0f / (8.0f * gamma)));\n+307 Weight vWeight = (Weight) (1.0f - (eWeight * dValence));\n+308\n+309 posMask.VertexWeight(0) = vWeight;\n+310 for (int i = 0; i < valence; ++i) {\n+311 posMask.EdgeWeight(i) = eWeight;\n+312 }\n+313 }\n+314}\n+315\n+316/*\n+317// Limit masks for tangents:\n+318//\n+319// A note on tangent magnitudes:\n+320//\n+321// Several formulae exist for limit tangents at a vertex to accommodate the\n+322// different topological configurations around the vertex. While these\n+produce\n+323// the desired direction, there is inconsistency in the resulting\n+magnitudes.\n+324// Ideally a regular mesh of uniformly shaped triangles with similar edge\n+lengths\n+325// should produce tangents of similar magnitudes throughout -- including\n+corners\n+326// and boundaries. So some of the common formulae for these are adjusted\n+with\n+327// scale factors.\n+328//\n+329// For uses where magnitude does not matter, this scaling should be\n+irrelevant.\n+330// But just as with patches, where the magnitudes of partial derivatives are\n+331// consistent between similar patches, the magnitudes of limit tangents\n+should\n+332// also be similar.\n+333//\n+334// The reference tangents, in terms of magnitudes, are those produced by the\n+335// limit tangent mask for smooth interior vertices, for which well\n+established\n+336// sin/cos formulae apply -- these remain unscaled. Formulae for the other\n+337// crease/boundary, corner tangents and irregular cases are scaled to be\n+more\n+338// consistent with these.\n+339//\n+340// The crease/boundary tangents for the regular case can be viewed as\n+derived\n+341// from the smooth interior masks with two \"phantom\" points extrapolated\n+across\n+342// the regular boundary:\n+343//\n+344// v3 v2\n+345// X - - - - - X\n+346// / \\ / \\\n+347// / \\ / \\\n+348// v4 X - - - - - X - - - - - X v1\n+349// . . 0 . .\n+350// . . . .\n+351// . . . .\n+352// (v5) (v6)\n+353//\n+354// where v5 = v0 + (v4 - v3) and v6 = v0 + v1 - v2.\n+355//\n+356// When the standard limit tangent mask is applied, the cosines of\n+increments\n+357// of pi/3 give us coefficients that are multiples of 1/2, leading to the\n+first\n+358// tangent T1 = 3/2 * (v1 - v4), rather than the widely used T1 = v1 - v4.\n+So\n+359// this scale factor of 3/2 is applied to ensure tangents along the\n+boundaries\n+360// are of similar magnitude as tangents in the immediate interior (which may\n+be\n+361// parallel).\n+362//\n+363// Tangents at corners are essentially a form of boundary tangent, and so\n+its\n+364// simple difference formula is scaled to be consistent with adjoining\n+boundary\n+365// tangents -- not just with the 3/2 factor from above, but with an\n+additional\n+366// 2.0 to compensate for the fact that the difference of only side of the\n+vertex\n+367// is considered here. The resulting scale factor of 3.0 for the regular\n+corner\n+368// is what similarly arises by extrapolating an interior region around the\n+369// vertex and using the interior mask for the first tangent.\n+370//\n+371// The cross-tangent formula for the regular crease/boundary is similarly\n+found\n+372// from the above construction of the boundary, but the commonly used\n+weights of\n+373// +/- 1 and 2 result from omitting the common factor of sqrt(3)/2 (arising\n+from\n+374// the sines of increments of pi/3). With that scale factor close to one, it\n+has\n+375// less impact than the irregular cases, which are analogous to corner\n+tangents\n+376// in that differences on only one side of the vertex are considered. While\n+a\n+377// scaling of 3.0 is similarly understandable for the valence 2 and 3 cases,\n+it is\n+378// less obvious in the irregular formula for valence > 4, but similarly\n+effective.\n+379//\n+380// The end result of these adjustments should be a set of limit tangents\n+that are\n+381// of similar magnitude over a regular mesh including boundaries and\n+corners.\n+382*/\n+383template <>\n+384template <typename VERTEX, typename MASK>\n+385inline void\n+_\b3_\b8_\b6_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bL_\bO_\bO_\bP_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\br_\bn_\be_\br_\bL_\bi_\bm_\bi_\bt_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bM_\ba_\bs_\bk_\bs(VERTEX const& vertex,\n+387 MASK& tan1Mask, MASK& tan2Mask) const {\n+388\n+389 int valence = vertex.GetNumEdges();\n+390\n+391 tan1Mask.SetNumVertexWeights(1);\n+392 tan1Mask.SetNumEdgeWeights(valence);\n+393 tan1Mask.SetNumFaceWeights(0);\n+394 tan1Mask.SetFaceWeightsForFaceCenters(false);\n+395\n+396 tan2Mask.SetNumVertexWeights(1);\n+397 tan2Mask.SetNumEdgeWeights(valence);\n+398 tan2Mask.SetNumFaceWeights(0);\n+399 tan2Mask.SetFaceWeightsForFaceCenters(false);\n+400\n+401 // See note above regarding scale factor of 3.0:\n+402 tan1Mask.VertexWeight(0) = -3.0f;\n+403 tan1Mask.EdgeWeight(0) = 3.0f;\n+404 tan1Mask.EdgeWeight(1) = 0.0f;\n+405\n+406 tan2Mask.VertexWeight(0) = -3.0f;\n+407 tan2Mask.EdgeWeight(0) = 0.0f;\n+408 tan2Mask.EdgeWeight(1) = 3.0f;\n+409\n+410 // Should be at least 2 edges -- be sure to clear weights for any more:\n+411 for (int i = 2; i < valence; ++i) {\n+412 tan1Mask.EdgeWeight(i) = 0.0f;\n+413 tan2Mask.EdgeWeight(i) = 0.0f;\n+414 }\n+415}\n+416\n+417template <>\n+418template <typename VERTEX, typename MASK>\n+419inline void\n+_\b4_\b2_\b0_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bL_\bO_\bO_\bP_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\br_\be_\ba_\bs_\be_\bL_\bi_\bm_\bi_\bt_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bM_\ba_\bs_\bk_\bs(VERTEX const& vertex,\n+421 MASK& tan1Mask, MASK& tan2Mask, int const creaseEnds[2]) const {\n+422\n+423 typedef typename MASK::Weight Weight;\n+424\n+425 //\n+426 // First, the tangent along the crease:\n+427 // The first crease edge is considered the \"leading\" edge of the span\n+428 // of surface for which we are evaluating tangents and the second edge the\n+429 // \"trailing edge\". By convention, the tangent along the crease is oriented\n+430 // in the direction of the leading edge.\n+431 //\n+432 int valence = vertex.GetNumEdges();\n+433\n+434 tan1Mask.SetNumVertexWeights(1);\n+435 tan1Mask.SetNumEdgeWeights(valence);\n+436 tan1Mask.SetNumFaceWeights(0);\n+437 tan1Mask.SetFaceWeightsForFaceCenters(false);\n+438\n+439 tan1Mask.VertexWeight(0) = 0.0f;\n+440 for (int i = 0; i < valence; ++i) {\n+441 tan1Mask.EdgeWeight(i) = 0.0f;\n+442 }\n+443\n+444 // See the note above regarding scale factor of 1.5:\n+445 tan1Mask.EdgeWeight(creaseEnds[0]) = 1.5f;\n+446 tan1Mask.EdgeWeight(creaseEnds[1]) = -1.5f;\n 447\n-448 assert(_refiner);\n-449\n-450 _\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\bP_\bA_\bT_\bC_\bH_\b__\bT_\bA_\bB_\bL_\bE_\b>_\b:_\b:_\br_\be_\bf_\bi_\bn_\be_\bM_\be_\bs_\bh(\n-451 *_refiner, level, bits);\n-452\n-453 int vertexBufferStride = numVertexElements +\n-454 (bits.test(_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bl_\be_\ba_\bv_\be_\bV_\ba_\br_\by_\bi_\bn_\bg) ? numVaryingElements : 0);\n-455 int varyingBufferStride =\n-456 (bits.test(_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bl_\be_\ba_\bv_\be_\bV_\ba_\br_\by_\bi_\bn_\bg) ? 0 : numVaryingElements);\n-457\n-458 initializeContext(numVertexElements,\n-459 numVaryingElements,\n-460 level, bits);\n-461\n-462 initializeVertexBuffers(_numVertices,\n-463 vertexBufferStride,\n-464 varyingBufferStride);\n-465\n-466 // configure vertex buffer descriptor\n-467 _vertexDesc =\n-468 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(0, numVertexElements, vertexBufferStride);\n-469 if (bits.test(_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bl_\be_\ba_\bv_\be_\bV_\ba_\br_\by_\bi_\bn_\bg)) {\n-470 _varyingDesc = _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(\n-471 numVertexElements, numVaryingElements, vertexBufferStride);\n-472 } else {\n-473 _varyingDesc = _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(\n-474 0, numVaryingElements, varyingBufferStride);\n+448 //\n+449 // Second, the tangent across the interior faces:\n+450 // Note this is ambiguous for an interior vertex. We currently return\n+451 // the tangent for the surface in the counter-clockwise span between the\n+452 // leading and trailing edges that form the crease. Given the expected\n+453 // computation of a surface normal as Tan1 X Tan2, this tangent should be\n+454 // oriented \"inward\" from the crease/boundary -- across the surface rather\n+455 // than outward and away from it.\n+456 //\n+457 // There is inconsistency in the orientation of this tangent in commonly\n+458 // published results: the general formula provided for arbitrary valence\n+459 // has the tangent pointing across the crease and \"outward\" from the\n+surface,\n+460 // while the special cases for regular valence and lower have the tangent\n+461 // pointing across the surface and \"inward\" from the crease. So if we are\n+462 // to consistently orient the first tangent along the crease, regardless of\n+463 // the interior topology, we have to correct this. With the first tangent\n+464 // following the direction of the leading crease edge, we want the second\n+465 // tangent pointing inward/across the surface -- so we flip the result of\n+466 // the general formula.\n+467 //\n+468 tan2Mask.SetNumVertexWeights(1);\n+469 tan2Mask.SetNumEdgeWeights(valence);\n+470 tan2Mask.SetNumFaceWeights(0);\n+471 tan2Mask.SetFaceWeightsForFaceCenters(false);\n+472\n+473 for (int i = 0; i < creaseEnds[0]; ++i) {\n+474 tan2Mask.EdgeWeight(i) = 0.0f;\n 475 }\n-476 }\n-477\n-_\b4_\b7_\b8 virtual _\b~_\bM_\be_\bs_\bh() {\n-479 delete _refiner;\n-480 delete _farPatchTable;\n-481 delete _vertexBuffer;\n-482 delete _varyingBuffer;\n-483 delete _vertexStencilTable;\n-484 delete _varyingStencilTable;\n-485 delete _patchTable;\n-486 // deviceContext and evaluatorCache are not owned by this class.\n-487 }\n-488\n-_\b4_\b8_\b9 virtual void _\bU_\bp_\bd_\ba_\bt_\be_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br(float const *vertexData,\n-490 int startVertex, int numVerts) {\n-491 _vertexBuffer->UpdateData(vertexData, startVertex, numVerts,\n-492 _deviceContext);\n-493 }\n+476 int interiorEdgeCount = creaseEnds[1] - creaseEnds[0] - 1;\n+477 if (interiorEdgeCount == 2) {\n+478 // See note above regarding scale factor of (sin(60 degs) == sqrt(3)/2:\n+479\n+480 static Weight const Root3 = (Weight) 1.73205080756887729352;\n+481 static Weight const Root3by2 = (Weight) (Root3 * 0.5);\n+482\n+483 tan2Mask.VertexWeight(0) = -Root3;\n+484\n+485 tan2Mask.EdgeWeight(creaseEnds[0]) = -Root3by2;\n+486 tan2Mask.EdgeWeight(creaseEnds[1]) = -Root3by2;\n+487\n+488 tan2Mask.EdgeWeight(creaseEnds[0] + 1) = Root3;\n+489 tan2Mask.EdgeWeight(creaseEnds[0] + 2) = Root3;\n+490 } else if (interiorEdgeCount > 2) {\n+491 // See notes above regarding scale factor of -3.0 (-1 for orientation,\n+492 // 2.0 for considering the region as a half-disk, and 1.5 in keeping\n+493 // with the crease tangent):\n 494\n-_\b4_\b9_\b5 virtual void _\bU_\bp_\bd_\ba_\bt_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bB_\bu_\bf_\bf_\be_\br(float const *varyingData,\n-496 int startVertex, int numVerts) {\n-497 _varyingBuffer->UpdateData(varyingData, startVertex, numVerts,\n-498 _deviceContext);\n-499 }\n-500\n-_\b5_\b0_\b1 virtual void _\bR_\be_\bf_\bi_\bn_\be() {\n+495 double theta = M_PI / (interiorEdgeCount + 1);\n+496\n+497 tan2Mask.VertexWeight(0) = 0.0f;\n+498\n+499 Weight cWeight = (Weight) (-3.0f * std::sin(theta));\n+500 tan2Mask.EdgeWeight(creaseEnds[0]) = cWeight;\n+501 tan2Mask.EdgeWeight(creaseEnds[1]) = cWeight;\n 502\n-503 int numControlVertices = _refiner->_\bG_\be_\bt_\bL_\be_\bv_\be_\bl(0)._\bG_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs();\n-504\n-505 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br srcDesc = _vertexDesc;\n-506 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br dstDesc(srcDesc);\n-507 dstDesc._\bo_\bf_\bf_\bs_\be_\bt += numControlVertices * dstDesc._\bs_\bt_\br_\bi_\bd_\be;\n-508\n-509 // note that the _evaluatorCache can be NULL and thus\n-510 // the evaluatorInstance can be NULL\n-511 // (for uninstantiatable kernels CPU,TBB etc)\n-512 _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br const *instance = GetEvaluator<Evaluator>(\n-513 _evaluatorCache, srcDesc, dstDesc,\n-514 _deviceContext);\n-515\n-516 Evaluator::EvalStencils(_vertexBuffer, srcDesc,\n-517 _vertexBuffer, dstDesc,\n-518 _vertexStencilTable,\n-519 instance, _deviceContext);\n+503 double eCoeff = -3.0f * 2.0f * (std::cos(theta) - 1.0f);\n+504 for (int i = 1; i <= interiorEdgeCount; ++i) {\n+505 tan2Mask.EdgeWeight(creaseEnds[0] + i) = (Weight) (eCoeff * std::sin(i *\n+theta));\n+506 }\n+507 } else if (interiorEdgeCount == 1) {\n+508 // See notes above regarding scale factor of 3.0:\n+509\n+510 tan2Mask.VertexWeight(0) = -3.0f;\n+511\n+512 tan2Mask.EdgeWeight(creaseEnds[0]) = 0.0f;\n+513 tan2Mask.EdgeWeight(creaseEnds[1]) = 0.0f;\n+514\n+515 tan2Mask.EdgeWeight(creaseEnds[0] + 1) = 3.0f;\n+516 } else {\n+517 // See notes above regarding scale factor of 3.0:\n+518\n+519 tan2Mask.VertexWeight(0) = -6.0f;\n 520\n-521 if (_varyingDesc._\bl_\be_\bn_\bg_\bt_\bh > 0) {\n-522 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br vSrcDesc = _varyingDesc;\n-523 _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br vDstDesc(vSrcDesc);\n-524 vDstDesc._\bo_\bf_\bf_\bs_\be_\bt += numControlVertices * vDstDesc._\bs_\bt_\br_\bi_\bd_\be;\n-525\n-526 instance = GetEvaluator<Evaluator>(\n-527 _evaluatorCache, vSrcDesc, vDstDesc,\n-528 _deviceContext);\n-529\n-530 if (_varyingBuffer) {\n-531 // non-interleaved\n-532 Evaluator::EvalStencils(_varyingBuffer, vSrcDesc,\n-533 _varyingBuffer, vDstDesc,\n-534 _varyingStencilTable,\n-535 instance, _deviceContext);\n-536 } else {\n-537 // interleaved\n-538 Evaluator::EvalStencils(_vertexBuffer, vSrcDesc,\n-539 _vertexBuffer, vDstDesc,\n-540 _varyingStencilTable,\n-541 instance, _deviceContext);\n-542 }\n-543 }\n-544 }\n-545\n-_\b5_\b4_\b6 virtual void _\bS_\by_\bn_\bc_\bh_\br_\bo_\bn_\bi_\bz_\be() {\n-547 Evaluator::Synchronize(_deviceContext);\n-548 }\n-549\n-_\b5_\b5_\b0 virtual _\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be * _\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be() const {\n-551 return _patchTable;\n-552 }\n-553\n-_\b5_\b5_\b4 virtual _\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be const *_\bG_\be_\bt_\bF_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be() const {\n-555 return _farPatchTable;\n-556 }\n-557\n-_\b5_\b5_\b8 virtual int _\bG_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs() const { return _numVertices; }\n-559\n-_\b5_\b6_\b0 virtual int _\bG_\be_\bt_\bM_\ba_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be() const { return _maxValence; }\n+521 tan2Mask.EdgeWeight(creaseEnds[0]) = 3.0f;\n+522 tan2Mask.EdgeWeight(creaseEnds[1]) = 3.0f;\n+523 }\n+524 for (int i = creaseEnds[1] + 1; i < valence; ++i) {\n+525 tan2Mask.EdgeWeight(i) = 0.0f;\n+526 }\n+527}\n+528\n+529template <>\n+530template <typename VERTEX, typename MASK>\n+531inline void\n+_\b5_\b3_\b2_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bL_\bO_\bO_\bP_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bS_\bm_\bo_\bo_\bt_\bh_\bL_\bi_\bm_\bi_\bt_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bM_\ba_\bs_\bk_\bs(VERTEX const& vertex,\n+533 MASK& tan1Mask, MASK& tan2Mask) const {\n+534\n+535 typedef typename MASK::Weight Weight;\n+536\n+537 int valence = vertex.GetNumFaces();\n+538\n+539 tan1Mask.SetNumVertexWeights(1);\n+540 tan1Mask.SetNumEdgeWeights(valence);\n+541 tan1Mask.SetNumFaceWeights(0);\n+542 tan1Mask.SetFaceWeightsForFaceCenters(false);\n+543\n+544 tan2Mask.SetNumVertexWeights(1);\n+545 tan2Mask.SetNumEdgeWeights(valence);\n+546 tan2Mask.SetNumFaceWeights(0);\n+547 tan2Mask.SetFaceWeightsForFaceCenters(false);\n+548\n+549 tan1Mask.VertexWeight(0) = 0.0f;\n+550 tan2Mask.VertexWeight(0) = 0.0f;\n+551\n+552 if (valence == 6) {\n+553 static Weight const Root3by2 = (Weight)(0.5 * 1.73205080756887729352);\n+554\n+555 tan1Mask.EdgeWeight(0) = 1.0f;\n+556 tan1Mask.EdgeWeight(1) = 0.5f;\n+557 tan1Mask.EdgeWeight(2) = -0.5f;\n+558 tan1Mask.EdgeWeight(3) = -1.0f;\n+559 tan1Mask.EdgeWeight(4) = -0.5f;\n+560 tan1Mask.EdgeWeight(5) = 0.5f;\n 561\n-_\b5_\b6_\b2 virtual _\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bB_\bi_\bn_\bd_\bi_\bn_\bg _\bB_\bi_\bn_\bd_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br() {\n-563 return _vertexBuffer->BindVBO(_deviceContext);\n-564 }\n-565\n-_\b5_\b6_\b6 virtual _\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bB_\bi_\bn_\bd_\bi_\bn_\bg _\bB_\bi_\bn_\bd_\bV_\ba_\br_\by_\bi_\bn_\bg_\bB_\bu_\bf_\bf_\be_\br() {\n-567 return _varyingBuffer->BindVBO(_deviceContext);\n-568 }\n-569\n-_\b5_\b7_\b0 virtual _\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br * _\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br() {\n-571 return _vertexBuffer;\n-572 }\n-573\n-_\b5_\b7_\b4 virtual _\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br * _\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bB_\bu_\bf_\bf_\be_\br() {\n-575 return _varyingBuffer;\n-576 }\n+562 tan2Mask.EdgeWeight(0) = 0.0f;\n+563 tan2Mask.EdgeWeight(1) = Root3by2;\n+564 tan2Mask.EdgeWeight(2) = Root3by2;\n+565 tan2Mask.EdgeWeight(3) = 0.0f;\n+566 tan2Mask.EdgeWeight(4) = -Root3by2;\n+567 tan2Mask.EdgeWeight(5) = -Root3by2;\n+568 } else {\n+569 double alpha = 2.0f * M_PI / valence;\n+570 for (int i = 0; i < valence; ++i) {\n+571 double alphaI = alpha * i;\n+572 tan1Mask.EdgeWeight(i) = (Weight) std::cos(alphaI);\n+573 tan2Mask.EdgeWeight(i) = (Weight) std::sin(alphaI);\n+574 }\n+575 }\n+576}\n 577\n-_\b5_\b7_\b8 virtual _\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const * _\bG_\be_\bt_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br() const {\n-579 return _refiner;\n-580 }\n-581\n-582private:\n-583 void initializeContext(int numVertexElements,\n-584 int numVaryingElements,\n-585 int level, _\bM_\be_\bs_\bh_\bB_\bi_\bt_\bs_\be_\bt bits) {\n-586 assert(_refiner);\n-587\n-588 Far::StencilTableFactory::Options options;\n-589 options.generateOffsets = true;\n-590 options.generateIntermediateLevels =\n-591 _refiner->_\bI_\bs_\bU_\bn_\bi_\bf_\bo_\br_\bm() ? false : true;\n-592\n-593 _\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const * vertexStencils = NULL;\n-594 _\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const * varyingStencils = NULL;\n-595\n-596 if (numVertexElements>0) {\n-597\n-598 vertexStencils = _\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\br_\be_\ba_\bt_\be(*_refiner,\n-599 options);\n-600 }\n-601\n-602 if (numVaryingElements>0) {\n-603\n-604 options.interpolationMode =\n-605 _\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bI_\bN_\bT_\bE_\bR_\bP_\bO_\bL_\bA_\bT_\bE_\b__\bV_\bA_\bR_\bY_\bI_\bN_\bG;\n-606\n-607 varyingStencils = _\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\br_\be_\ba_\bt_\be(*_refiner,\n-608 options);\n-609 }\n-610\n-611 _\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs poptions(level);\n-612 poptions.generateFVarTables = bits.test(_\bM_\be_\bs_\bh_\bF_\bV_\ba_\br_\bD_\ba_\bt_\ba);\n-613 poptions.generateFVarLegacyLinearPatches = !bits.test(_\bM_\be_\bs_\bh_\bF_\bV_\ba_\br_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be);\n-614 poptions.generateLegacySharpCornerPatches = !bits.test\n-(_\bM_\be_\bs_\bh_\bU_\bs_\be_\bS_\bm_\bo_\bo_\bt_\bh_\bC_\bo_\br_\bn_\be_\br_\bP_\ba_\bt_\bc_\bh);\n-615 poptions.useSingleCreasePatch = bits.test(_\bM_\be_\bs_\bh_\bU_\bs_\be_\bS_\bi_\bn_\bg_\bl_\be_\bC_\br_\be_\ba_\bs_\be_\bP_\ba_\bt_\bc_\bh);\n-616 poptions.useInfSharpPatch = bits.test(_\bM_\be_\bs_\bh_\bU_\bs_\be_\bI_\bn_\bf_\bS_\bh_\ba_\br_\bp_\bP_\ba_\bt_\bc_\bh);\n-617\n-618 // points on bilinear and gregory basis endcap boundaries can be\n-619 // shared among adjacent patches to save some stencils.\n-620 if (bits.test(_\bM_\be_\bs_\bh_\bE_\bn_\bd_\bC_\ba_\bp_\bB_\bi_\bl_\bi_\bn_\be_\ba_\br_\bB_\ba_\bs_\bi_\bs)) {\n-621 poptions.SetEndCapType(\n-622 _\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bE_\bN_\bD_\bC_\bA_\bP_\b__\bB_\bI_\bL_\bI_\bN_\bE_\bA_\bR_\b__\bB_\bA_\bS_\bI_\bS);\n-623 poptions.shareEndCapPatchPoints = true;\n-624 } else if (bits.test(_\bM_\be_\bs_\bh_\bE_\bn_\bd_\bC_\ba_\bp_\bB_\bS_\bp_\bl_\bi_\bn_\be_\bB_\ba_\bs_\bi_\bs)) {\n-625 poptions.SetEndCapType(\n-626 _\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bE_\bN_\bD_\bC_\bA_\bP_\b__\bB_\bS_\bP_\bL_\bI_\bN_\bE_\b__\bB_\bA_\bS_\bI_\bS);\n-627 } else if (bits.test(_\bM_\be_\bs_\bh_\bE_\bn_\bd_\bC_\ba_\bp_\bG_\br_\be_\bg_\bo_\br_\by_\bB_\ba_\bs_\bi_\bs)) {\n-628 poptions.SetEndCapType(\n-629 _\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bE_\bN_\bD_\bC_\bA_\bP_\b__\bG_\bR_\bE_\bG_\bO_\bR_\bY_\b__\bB_\bA_\bS_\bI_\bS);\n-630 poptions.shareEndCapPatchPoints = true;\n-631 } else if (bits.test(_\bM_\be_\bs_\bh_\bE_\bn_\bd_\bC_\ba_\bp_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by)) {\n-632 poptions.SetEndCapType(\n-633 _\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bE_\bN_\bD_\bC_\bA_\bP_\b__\bL_\bE_\bG_\bA_\bC_\bY_\b__\bG_\bR_\bE_\bG_\bO_\bR_\bY);\n-634 }\n-635\n-636 _farPatchTable = _\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\br_\be_\ba_\bt_\be(*_refiner, poptions);\n-637\n-638 // if there's endcap stencils, merge it into regular stencils.\n-639 if (_farPatchTable->_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be()) {\n-640 // append stencils\n-641 if (Far::StencilTable const *vertexStencilsWithLocalPoints =\n-642 _\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bA_\bp_\bp_\be_\bn_\bd_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(\n-643 *_refiner,\n-644 vertexStencils,\n-645 _farPatchTable->_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be())) {\n-646 delete vertexStencils;\n-647 vertexStencils = vertexStencilsWithLocalPoints;\n-648 }\n-649 if (varyingStencils) {\n-650 if (Far::StencilTable const *varyingStencilsWithLocalPoints =\n-651 _\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bA_\bp_\bp_\be_\bn_\bd_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be(\n-652 *_refiner,\n-653 varyingStencils,\n-654 _farPatchTable->_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be())) {\n-655 delete varyingStencils;\n-656 varyingStencils = varyingStencilsWithLocalPoints;\n-657 }\n-658 }\n-659 }\n-660\n-661 _maxValence = _farPatchTable->_\bG_\be_\bt_\bM_\ba_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be();\n-662 _patchTable = PatchTable::Create(_farPatchTable, _deviceContext);\n-663\n-664 // numvertices = coarse verts + refined verts + gregory basis verts\n-665 _numVertices = vertexStencils->_\bG_\be_\bt_\bN_\bu_\bm_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bV_\be_\br_\bt_\bi_\bc_\be_\bs()\n-666 + vertexStencils->_\bG_\be_\bt_\bN_\bu_\bm_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs();\n-667\n-668 // convert to device stenciltable if necessary.\n-669 _vertexStencilTable =\n-670 convertToCompatibleStencilTable<StencilTable>(\n-671 vertexStencils, _deviceContext);\n-672 _varyingStencilTable =\n-673 convertToCompatibleStencilTable<StencilTable>(\n-674 varyingStencils, _deviceContext);\n-675\n-676 // FIXME: we do extra copyings for Far::Stencils.\n-677 delete vertexStencils;\n-678 delete varyingStencils;\n-679 }\n-680\n-681 void initializeVertexBuffers(int numVertices,\n-682 int numVertexElements,\n-683 int numVaryingElements) {\n-684\n-685 if (numVertexElements) {\n-686 _vertexBuffer = VertexBuffer::Create(numVertexElements,\n-687 numVertices, _deviceContext);\n-688 }\n-689\n-690 if (numVaryingElements) {\n-691 _varyingBuffer = VertexBuffer::Create(numVaryingElements,\n-692 numVertices, _deviceContext);\n-693 }\n-694 }\n-695\n-696 Far::TopologyRefiner * _refiner;\n-697 Far::PatchTable * _farPatchTable;\n-698\n-699 int _numVertices;\n-700 int _maxValence;\n-701\n-702 _\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br * _vertexBuffer;\n-703 _\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br * _varyingBuffer;\n-704\n-705 BufferDescriptor _vertexDesc;\n-706 BufferDescriptor _varyingDesc;\n-707\n-708 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const * _vertexStencilTable;\n-709 _\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be const * _varyingStencilTable;\n-710 _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bC_\ba_\bc_\bh_\be * _evaluatorCache;\n-711\n-712 _\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be *_patchTable;\n-713 _\bD_\be_\bv_\bi_\bc_\be_\bC_\bo_\bn_\bt_\be_\bx_\bt *_deviceContext;\n-714};\n-715\n-716} // end namespace Osd\n-717\n-718} // end namespace OPENSUBDIV_VERSION\n-719using namespace OPENSUBDIV_VERSION;\n-720\n-721} // end namespace OpenSubdiv\n-722\n-723#endif // OPENSUBDIV3_OSD_MESH_H\n+578} // end namespace Sdc\n+579} // end namespace OPENSUBDIV_VERSION\n+580using namespace OPENSUBDIV_VERSION;\n+581} // end namespace OpenSubdiv\n+582\n+583#endif /* OPENSUBDIV3_SDC_LOOP_SCHEME_H */\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bc_\bo_\bn_\bv_\be_\br_\bt_\bT_\bo_\bC_\bo_\bm_\bp_\ba_\bt_\bi_\bb_\bl_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n-STENCIL_TABLE const * convertToCompatibleStencilTable(SRC_STENCIL_TABLE const\n-*table, DEVICE_CONTEXT *context)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b1_\b4_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bB_\bi_\bt_\bs\n-MeshBits\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b4_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bE_\bn_\bd_\bC_\ba_\bp_\bB_\bi_\bl_\bi_\bn_\be_\ba_\br_\bB_\ba_\bs_\bi_\bs\n-@ MeshEndCapBilinearBasis\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b5_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bN_\bU_\bM_\b__\bM_\bE_\bS_\bH_\b__\bB_\bI_\bT_\bS\n-@ NUM_MESH_BITS\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b6_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bU_\bs_\be_\bI_\bn_\bf_\bS_\bh_\ba_\br_\bp_\bP_\ba_\bt_\bc_\bh\n-@ MeshUseInfSharpPatch\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b5_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bU_\bs_\be_\bS_\bi_\bn_\bg_\bl_\be_\bC_\br_\be_\ba_\bs_\be_\bP_\ba_\bt_\bc_\bh\n-@ MeshUseSingleCreasePatch\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b5_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bl_\be_\ba_\bv_\be_\bV_\ba_\br_\by_\bi_\bn_\bg\n-@ MeshInterleaveVarying\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b5_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bF_\bV_\ba_\br_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be\n-@ MeshFVarAdaptive\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b5_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bE_\bn_\bd_\bC_\ba_\bp_\bG_\br_\be_\bg_\bo_\br_\by_\bB_\ba_\bs_\bi_\bs\n-@ MeshEndCapGregoryBasis\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b5_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bE_\bn_\bd_\bC_\ba_\bp_\bB_\bS_\bp_\bl_\bi_\bn_\be_\bB_\ba_\bs_\bi_\bs\n-@ MeshEndCapBSplineBasis\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b5_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bE_\bn_\bd_\bC_\ba_\bp_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by\n-@ MeshEndCapLegacyGregory\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b6_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bU_\bs_\be_\bS_\bm_\bo_\bo_\bt_\bh_\bC_\bo_\br_\bn_\be_\br_\bP_\ba_\bt_\bc_\bh\n-@ MeshUseSmoothCornerPatch\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b5_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bF_\bV_\ba_\br_\bD_\ba_\bt_\ba\n-@ MeshFVarData\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b5_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be\n-@ MeshAdaptive\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b5_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bc_\bo_\bn_\bv_\be_\br_\bt_\bT_\bo_\bC_\bo_\bm_\bp_\ba_\bt_\bi_\bb_\bl_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b<_\b _\bF_\ba_\br_\b:_\b:\n-_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b,_\b _\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b,_\b _\bv_\bo_\bi_\bd_\b _\b>\n-Far::StencilTable const * convertToCompatibleStencilTable< Far::StencilTable,\n-Far::StencilTable, void >(Far::StencilTable const *table, void *)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b1_\b4_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bc_\bo_\bn_\bv_\be_\br_\bt_\bT_\bo_\bC_\bo_\bm_\bp_\ba_\bt_\bi_\bb_\bl_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b<_\b _\bF_\ba_\br_\b:_\b:\n-_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b,_\b _\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b,_\b _\bv_\bo_\bi_\bd_\b _\b>\n-Far::LimitStencilTable const * convertToCompatibleStencilTable< Far::\n-LimitStencilTable, Far::LimitStencilTable, void >(Far::LimitStencilTable const\n-*table, void *)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b1_\b5_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bB_\bi_\bt_\bs_\be_\bt\n-std::bitset< NUM_MESH_BITS > MeshBitset\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b6_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bc_\bo_\bn_\bv_\be_\br_\bt_\bT_\bo_\bC_\bo_\bm_\bp_\ba_\bt_\bi_\bb_\bl_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b<_\b _\bF_\ba_\br_\b:_\b:\n-_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b,_\b _\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b,_\b _\bI_\bD_\b3_\bD_\b1_\b1_\bD_\be_\bv_\bi_\bc_\be_\bC_\bo_\bn_\bt_\be_\bx_\bt_\b _\b>\n-Far::StencilTable const * convertToCompatibleStencilTable< Far::StencilTable,\n-Far::StencilTable, ID3D11DeviceContext >(Far::StencilTable const *table,\n-ID3D11DeviceContext *)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b1_\b6_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n-Container for arrays of parametric patches.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bM_\ba_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be\n-int GetMaxValence() const\n-Returns max vertex valence.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b9_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n-StencilTable const * GetLocalPointStencilTable() const\n-Returns the stencil table to compute local point vertex values.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b7_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n-_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n-StencilTable const * GetLocalPointVaryingStencilTable() const\n-Returns the stencil table to compute local point varying values.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b8_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static PatchTable * Create(TopologyRefiner const &refiner, Options\n-options=Options(), ConstIndexArray selectedFaces=ConstIndexArray())\n-Instantiates a PatchTable from a client-provided TopologyRefiner.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n-Public options for the PatchTable factory.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b4_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bE_\bN_\bD_\bC_\bA_\bP_\b__\bL_\bE_\bG_\bA_\bC_\bY_\b__\bG_\bR_\bE_\bG_\bO_\bR_\bY\n-@ ENDCAP_LEGACY_GREGORY\n-legacy option for 2.x style Gregory patches (Catmark only)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b6_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bE_\bN_\bD_\bC_\bA_\bP_\b__\bG_\bR_\bE_\bG_\bO_\bR_\bY_\b__\bB_\bA_\bS_\bI_\bS\n-@ ENDCAP_GREGORY_BASIS\n-use Gregory patches (highest quality, recommended default)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bE_\bN_\bD_\bC_\bA_\bP_\b__\bB_\bI_\bL_\bI_\bN_\bE_\bA_\bR_\b__\bB_\bA_\bS_\bI_\bS\n-@ ENDCAP_BILINEAR_BASIS\n-use linear patches (simple quads or tris)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bE_\bN_\bD_\bC_\bA_\bP_\b__\bB_\bS_\bP_\bL_\bI_\bN_\bE_\b__\bB_\bA_\bS_\bI_\bS\n-@ ENDCAP_BSPLINE_BASIS\n-use BSpline-like patches (same patch type as regular)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bR_\be_\ba_\bl_\b<_\b _\bf_\bl_\bo_\ba_\bt_\b _\b>_\b:_\b:\n-_\bI_\bN_\bT_\bE_\bR_\bP_\bO_\bL_\bA_\bT_\bE_\b__\bV_\bA_\bR_\bY_\bI_\bN_\bG\n-@ INTERPOLATE_VARYING\n-varying primvar stencils\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n-int GetNumControlVertices() const\n-Returns the number of control vertices indexed in the table.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b6_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bR_\be_\ba_\bl_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-int GetNumStencils() const\n-Returns the number of stencils in the table.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b1_\b5_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n-Stencil table class wrapping the template for compatibility.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b2_\b7_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n-Limit stencil table class wrapping the template for compatibility.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b8_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static StencilTable const * Create(TopologyRefiner const &refiner, Options\n-options=Options())\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b2_\b9_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n-_\bA_\bp_\bp_\be_\bn_\bd_\bL_\bo_\bc_\ba_\bl_\bP_\bo_\bi_\bn_\bt_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n-static StencilTable const * AppendLocalPointStencilTable(TopologyRefiner const\n-&refiner, StencilTable const *baseStencilTable, StencilTable const\n-*localPointStencilTable, bool factorize=true)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b3_\b0_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n-int GetNumVertices() const\n-Return the number of vertices in this level.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bL_\be_\bv_\be_\bl_\b._\bh_\b:_\b6_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br\n-Stores topology data for a specified set of refinement options.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b5_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bI_\bs_\bU_\bn_\bi_\bf_\bo_\br_\bm\n-bool IsUniform() const\n-Returns true if uniform refinement has been applied.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b6_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs\n-int GetNumFVarChannels() const\n-Returns the number of face-varying channels in the tables.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b2_\b9_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bU_\bn_\bi_\bf_\bo_\br_\bm\n-void RefineUniform(UniformOptions options)\n-Refine the topology uniformly.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bG_\be_\bt_\bL_\be_\bv_\be_\bl\n-TopologyLevel const & GetLevel(int level) const\n-Returns a handle to access data specific to a particular level.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b9_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be\n-void RefineAdaptive(AdaptiveOptions options, ConstIndexArray\n-selectedFaces=ConstIndexArray())\n-Feature Adaptive topology refinement.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bU_\bn_\bi_\bf_\bo_\br_\bm_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n-Uniform refinement options.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b1_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bU_\bn_\bi_\bf_\bo_\br_\bm_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bf_\bu_\bl_\bl_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bI_\bn_\bL_\ba_\bs_\bt_\bL_\be_\bv_\be_\bl\n-unsigned int fullTopologyInLastLevel\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b3_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n-Adaptive refinement options.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b5_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bu_\bs_\be_\bS_\bi_\bn_\bg_\bl_\be_\bC_\br_\be_\ba_\bs_\be_\bP_\ba_\bt_\bc_\bh\n-unsigned int useSingleCreasePatch\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b7_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bu_\bs_\be_\bI_\bn_\bf_\bS_\bh_\ba_\br_\bp_\bP_\ba_\bt_\bc_\bh\n-unsigned int useInfSharpPatch\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b7_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b:_\b:_\bA_\bd_\ba_\bp_\bt_\bi_\bv_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n-_\bc_\bo_\bn_\bs_\bi_\bd_\be_\br_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs\n-unsigned int considerFVarChannels\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b1_\b8_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n-BufferDescriptor is a struct which describes buffer elements in interleaved\n-data buffers....\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b6_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bs_\bt_\br_\bi_\bd_\be\n-int stride\n-stride to the next element\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b1_\b0_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bl_\be_\bn_\bg_\bt_\bh\n-int length\n-number or length of the data\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b1_\b0_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bo_\bf_\bf_\bs_\be_\bt\n-int offset\n-offset to desired element data\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b9_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b6_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bG_\be_\bt_\bF_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n-virtual Far::PatchTable const * GetFarPatchTable() const =0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\br_\be_\bf_\bi_\bn_\be_\bM_\be_\bs_\bh\n-static void refineMesh(Far::TopologyRefiner &refiner, int level, MeshBitset\n-bits)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b1_\b1_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bG_\be_\bt_\bM_\ba_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be\n-virtual int GetMaxValence() const =0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n-virtual int GetNumVertices() const =0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bU_\bp_\bd_\ba_\bt_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bB_\bu_\bf_\bf_\be_\br\n-virtual void UpdateVaryingBuffer(float const *varyingData, int startVertex, int\n-numVerts)=0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\br_\be_\bf_\bi_\bn_\be_\bM_\be_\bs_\bh\n-static void refineMesh(Far::TopologyRefiner &refiner, int level, bool adaptive,\n-bool singleCreasePatch)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b1_\b0_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bU_\bp_\bd_\ba_\bt_\be_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-virtual void UpdateVertexBuffer(float const *vertexData, int startVertex, int\n-numVerts)=0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n-virtual PatchTable * GetPatchTable() const =0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\b~_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-virtual ~MeshInterface()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b7_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-MeshInterface()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b7_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be\n-virtual void Refine()=0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bB_\bi_\bn_\bd_\bi_\bn_\bg\n-PatchTable::VertexBufferBinding VertexBufferBinding\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b7_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bB_\bi_\bn_\bd_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-virtual VertexBufferBinding BindVertexBuffer()=0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bB_\bi_\bn_\bd_\bV_\ba_\br_\by_\bi_\bn_\bg_\bB_\bu_\bf_\bf_\be_\br\n-virtual VertexBufferBinding BindVaryingBuffer()=0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n-PATCH_TABLE PatchTable\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b7_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b:_\b:_\bS_\by_\bn_\bc_\bh_\br_\bo_\bn_\bi_\bz_\be\n-virtual void Synchronize()=0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bC_\ba_\bc_\bh_\be_\bT\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b1_\b8_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bC_\ba_\bc_\bh_\be_\bT_\b:_\b:_\bG_\be_\bt_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n-EVALUATOR * GetEvaluator(BufferDescriptor const &srcDesc, BufferDescriptor\n-const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &dvDesc,\n-DEVICE_CONTEXT *deviceContext)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b2_\b4_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bC_\ba_\bc_\bh_\be_\bT_\b:_\b:_\bG_\be_\bt_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n-EVALUATOR * GetEvaluator(BufferDescriptor const &srcDesc, BufferDescriptor\n-const &dstDesc, BufferDescriptor const &duDesc, BufferDescriptor const &dvDesc,\n-BufferDescriptor const &duuDesc, BufferDescriptor const &duvDesc,\n-BufferDescriptor const &dvvDesc, DEVICE_CONTEXT *deviceContext)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b2_\b5_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bC_\ba_\bc_\bh_\be_\bT_\b:_\b:_\bG_\be_\bt_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n-EVALUATOR * GetEvaluator(BufferDescriptor const &srcDesc, BufferDescriptor\n-const &dstDesc, DEVICE_CONTEXT *deviceContext)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b2_\b2_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bC_\ba_\bc_\bh_\be_\bT_\b:_\b:_\b~_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bC_\ba_\bc_\bh_\be_\bT\n-~EvaluatorCacheT()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b1_\b8_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bC_\ba_\bc_\bh_\be_\bT_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bs\n-std::vector< Entry > Evaluators\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b2_\b2_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bC_\ba_\bc_\bh_\be_\bT_\b:_\b:_\bE_\bn_\bt_\br_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b1_\b9_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bC_\ba_\bc_\bh_\be_\bT_\b:_\b:_\bE_\bn_\bt_\br_\by_\b:_\b:_\bE_\bn_\bt_\br_\by\n-Entry(BufferDescriptor const &srcDescArg, BufferDescriptor const &dstDescArg,\n-BufferDescriptor const &duDescArg, BufferDescriptor const &dvDescArg,\n-BufferDescriptor const &duuDescArg, BufferDescriptor const &duvDescArg,\n-BufferDescriptor const &dvvDescArg, EVALUATOR *evalArg)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b2_\b0_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bC_\ba_\bc_\bh_\be_\bT_\b:_\b:_\bE_\bn_\bt_\br_\by_\b:_\b:_\bd_\bv_\bv_\bD_\be_\bs_\bc\n-BufferDescriptor dvvDesc\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b2_\b2_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bC_\ba_\bc_\bh_\be_\bT_\b:_\b:_\bE_\bn_\bt_\br_\by_\b:_\b:_\bd_\bu_\bv_\bD_\be_\bs_\bc\n-BufferDescriptor duvDesc\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b2_\b2_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bC_\ba_\bc_\bh_\be_\bT_\b:_\b:_\bE_\bn_\bt_\br_\by_\b:_\b:_\bd_\bs_\bt_\bD_\be_\bs_\bc\n-BufferDescriptor dstDesc\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b2_\b2_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bC_\ba_\bc_\bh_\be_\bT_\b:_\b:_\bE_\bn_\bt_\br_\by_\b:_\b:_\bd_\bu_\bD_\be_\bs_\bc\n-BufferDescriptor duDesc\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b2_\b2_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bC_\ba_\bc_\bh_\be_\bT_\b:_\b:_\bE_\bn_\bt_\br_\by_\b:_\b:_\bs_\br_\bc_\bD_\be_\bs_\bc\n-BufferDescriptor srcDesc\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b2_\b2_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bC_\ba_\bc_\bh_\be_\bT_\b:_\b:_\bE_\bn_\bt_\br_\by_\b:_\b:_\bd_\bu_\bu_\bD_\be_\bs_\bc\n-BufferDescriptor duuDesc\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b2_\b2_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bC_\ba_\bc_\bh_\be_\bT_\b:_\b:_\bE_\bn_\bt_\br_\by_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n-EVALUATOR * evaluator\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b2_\b2_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bC_\ba_\bc_\bh_\be_\bT_\b:_\b:_\bE_\bn_\bt_\br_\by_\b:_\b:_\bE_\bn_\bt_\br_\by\n-Entry(BufferDescriptor const &srcDescArg, BufferDescriptor const &dstDescArg,\n-BufferDescriptor const &duDescArg, BufferDescriptor const &dvDescArg, EVALUATOR\n-*evalArg)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b1_\b9_\b7\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bC_\ba_\bc_\bh_\be_\bT_\b:_\b:_\bE_\bn_\bt_\br_\by_\b:_\b:_\bd_\bv_\bD_\be_\bs_\bc\n-BufferDescriptor dvDesc\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b2_\b2_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b4_\b1_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\b:_\b:_\bG_\be_\bt_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br\n-virtual Far::TopologyRefiner const * GetTopologyRefiner() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b5_\b7_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\b:_\b:_\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-virtual VertexBuffer * GetVertexBuffer()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b5_\b7_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\b:_\b:_\bU_\bp_\bd_\ba_\bt_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bB_\bu_\bf_\bf_\be_\br\n-virtual void UpdateVaryingBuffer(float const *varyingData, int startVertex, int\n-numVerts)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b4_\b9_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\b:_\b:_\bG_\be_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bB_\bu_\bf_\bf_\be_\br\n-virtual VertexBuffer * GetVaryingBuffer()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b5_\b7_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be\n-virtual void Refine()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b5_\b0_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\b:_\b:_\bD_\be_\bv_\bi_\bc_\be_\bC_\bo_\bn_\bt_\be_\bx_\bt\n-DEVICE_CONTEXT DeviceContext\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b4_\b2_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n-EVALUATOR Evaluator\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b4_\b2_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\b:_\b:_\bB_\bi_\bn_\bd_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-virtual VertexBufferBinding BindVertexBuffer()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b5_\b6_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n-virtual int GetNumVertices() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b5_\b5_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\b:_\b:_\bM_\be_\bs_\bh\n-Mesh(Far::TopologyRefiner *refiner, int numVertexElements, int\n-numVaryingElements, int level, MeshBitset bits=MeshBitset(), EvaluatorCache\n-*evaluatorCache=NULL, DeviceContext *deviceContext=NULL)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b4_\b2_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\b:_\b:_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n-STENCIL_TABLE StencilTable\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b4_\b2_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-VERTEX_BUFFER VertexBuffer\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b4_\b2_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\bC_\ba_\bc_\bh_\be\n-EvaluatorCacheT< Evaluator > EvaluatorCache\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b4_\b2_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\b:_\b:_\bB_\bi_\bn_\bd_\bV_\ba_\br_\by_\bi_\bn_\bg_\bB_\bu_\bf_\bf_\be_\br\n-virtual VertexBufferBinding BindVaryingBuffer()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b5_\b6_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\b:_\b:_\b~_\bM_\be_\bs_\bh\n-virtual ~Mesh()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b4_\b7_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\bB_\bi_\bn_\bd_\bi_\bn_\bg\n-PatchTable::VertexBufferBinding VertexBufferBinding\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b4_\b2_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\b:_\b:_\bU_\bp_\bd_\ba_\bt_\be_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-virtual void UpdateVertexBuffer(float const *vertexData, int startVertex, int\n-numVerts)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b4_\b8_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\b:_\b:_\bS_\by_\bn_\bc_\bh_\br_\bo_\bn_\bi_\bz_\be\n-virtual void Synchronize()\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b5_\b4_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\b:_\b:_\bG_\be_\bt_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n-virtual PatchTable * GetPatchTable() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b5_\b5_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\b:_\b:_\bG_\be_\bt_\bF_\ba_\br_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n-virtual Far::PatchTable const * GetFarPatchTable() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b5_\b5_\b4\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n-PATCH_TABLE PatchTable\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b4_\b2_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\b:_\b:_\bG_\be_\bt_\bM_\ba_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be\n-virtual int GetMaxValence() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b5_\b6_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bp_\bl_\bi_\bt\n+Split\n+Enumerated type for all face splitting schemes.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b4_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bP_\bL_\bI_\bT_\b__\bT_\bO_\b__\bT_\bR_\bI_\bS\n+@ SPLIT_TO_TRIS\n+Used by Loop.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b4_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bS_\bm_\bo_\bo_\bt_\bh_\bM_\ba_\bs_\bk_\bF_\bo_\br_\bE_\bd_\bg_\be\n+void assignSmoothMaskForEdge(EDGE const &edge, MASK &mask) const\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bG_\be_\bt_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\bi_\bc_\ba_\bl_\bS_\bp_\bl_\bi_\bt_\bT_\by_\bp_\be\n+static Split GetTopologicalSplitType()\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\br_\be_\ba_\bs_\be_\bM_\ba_\bs_\bk_\bF_\bo_\br_\bV_\be_\br_\bt_\be_\bx\n+void assignCreaseMaskForVertex(VERTEX const &edge, MASK &mask, int const\n+creaseEnds[2]) const\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\br_\be_\ba_\bs_\be_\bL_\bi_\bm_\bi_\bt_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bM_\ba_\bs_\bk_\bs\n+void assignCreaseLimitTangentMasks(VERTEX const &vertex, MASK &tan1, MASK\n+&tan2, int const creaseEnds[2]) const\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bG_\be_\bt_\bR_\be_\bg_\bu_\bl_\ba_\br_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be\n+static int GetRegularFaceSize()\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\br_\be_\ba_\bs_\be_\bM_\ba_\bs_\bk_\bF_\bo_\br_\bE_\bd_\bg_\be\n+void assignCreaseMaskForEdge(EDGE const &edge, MASK &mask) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b3_\b1_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bS_\bm_\bo_\bo_\bt_\bh_\bL_\bi_\bm_\bi_\bt_\bM_\ba_\bs_\bk\n+void assignSmoothLimitMask(VERTEX const &vertex, MASK &pos) const\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bh_\bo_\bo_\bd_\bS_\bi_\bz_\be\n+static int GetLocalNeighborhoodSize()\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\br_\bn_\be_\br_\bM_\ba_\bs_\bk_\bF_\bo_\br_\bV_\be_\br_\bt_\be_\bx\n+void assignCornerMaskForVertex(VERTEX const &edge, MASK &mask) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b3_\b3_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\br_\be_\ba_\bs_\be_\bL_\bi_\bm_\bi_\bt_\bM_\ba_\bs_\bk\n+void assignCreaseLimitMask(VERTEX const &vertex, MASK &pos, int const\n+creaseEnds[2]) const\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bS_\bm_\bo_\bo_\bt_\bh_\bM_\ba_\bs_\bk_\bF_\bo_\br_\bV_\be_\br_\bt_\be_\bx\n+void assignSmoothMaskForVertex(VERTEX const &edge, MASK &mask) const\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bG_\be_\bt_\bR_\be_\bg_\bu_\bl_\ba_\br_\bV_\be_\br_\bt_\be_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be\n+static int GetRegularVertexValence()\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bS_\bm_\bo_\bo_\bt_\bh_\bL_\bi_\bm_\bi_\bt_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bM_\ba_\bs_\bk_\bs\n+void assignSmoothLimitTangentMasks(VERTEX const &vertex, MASK &tan1, MASK\n+&tan2) const\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\br_\bn_\be_\br_\bL_\bi_\bm_\bi_\bt_\bM_\ba_\bs_\bk\n+void assignCornerLimitMask(VERTEX const &vertex, MASK &pos) const\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\br_\bn_\be_\br_\bL_\bi_\bm_\bi_\bt_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bM_\ba_\bs_\bk_\bs\n+void assignCornerLimitTangentMasks(VERTEX const &vertex, MASK &tan1, MASK\n+&tan2) const\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bm_\be_\bs_\bh_\b._\bh\n+    * _\bs_\bd_\bc\n+    * _\bl_\bo_\bo_\bp_\bS_\bc_\bh_\be_\bm_\be_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00875.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00875.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/cudaVertexBuffer.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/sdc/bilinearScheme.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -88,43 +88,36 @@\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n-<a href=\"#nested-classes\">Classes</a> &#124;\n <a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">cudaVertexBuffer.h File Reference</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">bilinearScheme.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &lt;cstddef&gt;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00863_source.html\">../sdc/scheme.h</a>&quot;</code><br />\n </div>\n <p><a href=\"a00875_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n-<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n-Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01193.html\">CudaVertexBuffer</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Concrete vertex buffer class for Cuda subdivision.  <a href=\"a01193.html#details\">More...</a><br /></td></tr>\n-<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-</table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n+<tr class=\"memitem:a00913\" id=\"r_a00913\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00913.html\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00875.html\">cudaVertexBuffer.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_f61368944c63c2c1f8c69bc232e59c39.html\">sdc</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00875.html\">bilinearScheme.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,24 +1,20 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-cudaVertexBuffer.h File Reference\n+_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+bilinearScheme.h File Reference\n #include \"../version.h\"\n-#include <cstddef>\n+#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bs_\bc_\bh_\be_\bm_\be_\b._\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n-C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bC_\bu_\bd_\ba_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-\u00a0       Concrete vertex buffer class for Cuda subdivision. _\bM_\bo_\br_\be_\b._\b._\b.\n-\u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bc_\bu_\bd_\ba_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh\n+    * _\bs_\bd_\bc\n+    * _\bb_\bi_\bl_\bi_\bn_\be_\ba_\br_\bS_\bc_\bh_\be_\bm_\be_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00875_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00875_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/cudaVertexBuffer.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/sdc/bilinearScheme.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">cudaVertexBuffer.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">bilinearScheme.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00875.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2013 Pixar</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2014 DreamWorks Animation LLC.</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -118,80 +118,193 @@\n <div class=\"line\"><a id=\"l00017\" name=\"l00017\"></a><span class=\"lineno\">   17</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_CUDA_VERTEX_BUFFER_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_CUDA_VERTEX_BUFFER_H</span></div>\n-<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n-<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &lt;cstddef&gt;</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span> </div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span>Osd {</div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00042\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01193.html\">   42</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01193.html\">CudaVertexBuffer</a> {</div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span> </div>\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01193.html#ab51afd364a99a3e33d8042537e8f167b\">   46</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01193.html\">CudaVertexBuffer</a> * <a class=\"code hl_function\" href=\"a01193.html#ab51afd364a99a3e33d8042537e8f167b\">Create</a>(<span class=\"keywordtype\">int</span> numElements, <span class=\"keywordtype\">int</span> numVertices,</div>\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span>                                     <span class=\"keywordtype\">void</span> *deviceContext = NULL);</div>\n+<div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_SDC_BILINEAR_SCHEME_H</span></div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#define OPENSUBDIV3_SDC_BILINEAR_SCHEME_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span> </div>\n+<div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span> </div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#include &quot;../sdc/scheme.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span> </div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00034\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00913.html\">   34</a></span><span class=\"keyword\">namespace </span>Sdc {</div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span> </div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"comment\">//  Specializations for Scheme&lt;SCHEME_BILINEAR&gt;:</span></div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span> </div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"comment\">//  Bilinear traits:</span></div>\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#a0e02d297f903bddcf8bc10c0ae17ad3c\">   44</a></span><span class=\"keyword\">inline</span> <a class=\"code hl_enumeration\" href=\"a00913.html#a61ef2f8f765ba17f8036bcc0f0fa887b\">Split</a> <a class=\"code hl_function\" href=\"a01341.html#a14b97ddde5fba31ca7f933508ee649da\">Scheme&lt;SCHEME_BILINEAR&gt;::GetTopologicalSplitType</a>() { <span class=\"keywordflow\">return</span> <a class=\"code hl_enumvalue\" href=\"a00913.html#a61ef2f8f765ba17f8036bcc0f0fa887ba56eed514f6a5971f198c9e421054b513\">SPLIT_TO_QUADS</a>; }</div>\n+<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span> </div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#a36744b2ac3801874da987d36851be86c\">   47</a></span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01341.html#a531004716c07aad5436cb2db27e1ec24\">Scheme&lt;SCHEME_BILINEAR&gt;::GetRegularFaceSize</a>() { <span class=\"keywordflow\">return</span> 4; }</div>\n <div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span> </div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01193.html#a7534b2edf898c9b6ee4a0b9c8aaf918f\">   50</a></span>    <a class=\"code hl_function\" href=\"a01193.html#a7534b2edf898c9b6ee4a0b9c8aaf918f\">~CudaVertexBuffer</a>();</div>\n+<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#ad46ad6c30664729d163c5fcc20cdf917\">   50</a></span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01341.html#a8f7e983b2195ac6b388c7a6db17f8cb0\">Scheme&lt;SCHEME_BILINEAR&gt;::GetRegularVertexValence</a>() { <span class=\"keywordflow\">return</span> 4; }</div>\n <div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span> </div>\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01193.html#a96601a091f8831823c4dd72b6c962f1b\">   54</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01193.html#a96601a091f8831823c4dd72b6c962f1b\">UpdateData</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <span class=\"keywordtype\">int</span> startVertex, <span class=\"keywordtype\">int</span> numVertices,</div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span>                    <span class=\"keywordtype\">void</span> *deviceContext=NULL);</div>\n-<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span> </div>\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01193.html#a77cee40767fd4936f20a8f9d9d9ea625\">   58</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01193.html#a77cee40767fd4936f20a8f9d9d9ea625\">GetNumElements</a>() <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span> </div>\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01193.html#aaf4a32b8a414eff77000c584c2015cb7\">   61</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01193.html#aaf4a32b8a414eff77000c584c2015cb7\">GetNumVertices</a>() <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span> </div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01193.html#a59eb144c23606529ba730ae15598af09\">   64</a></span>    <span class=\"keywordtype\">float</span> * <a class=\"code hl_function\" href=\"a01193.html#a59eb144c23606529ba730ae15598af09\">BindCudaBuffer</a>();</div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span> </div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span><span class=\"keyword\">protected</span>:</div>\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01193.html#af6cb32d896f7815cac1969c857845ba8\">   68</a></span>    <a class=\"code hl_function\" href=\"a01193.html#af6cb32d896f7815cac1969c857845ba8\">CudaVertexBuffer</a>(<span class=\"keywordtype\">int</span> numElements, <span class=\"keywordtype\">int</span> numVertices);</div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span> </div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01193.html#add23d9f5bbc918076d240287a9b3664f\">   72</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01193.html#add23d9f5bbc918076d240287a9b3664f\">allocate</a>();</div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span> </div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span>    <span class=\"keywordtype\">int</span> _numElements;</div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span>    <span class=\"keywordtype\">int</span> _numVertices;</div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span>    <span class=\"keywordtype\">void</span> *_cudaMem;</div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span> </div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span> </div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>}  <span class=\"comment\">// end namespace Osd</span></div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span> </div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>}  <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#a953430a884584e984c0afbb058091be1\">   53</a></span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01341.html#a73cf51e4315ca86e5e0a3954c92f8f74\">Scheme&lt;SCHEME_BILINEAR&gt;::GetLocalNeighborhoodSize</a>() { <span class=\"keywordflow\">return</span> 0; }</div>\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span> </div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span> </div>\n+<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span><span class=\"comment\">//  Refinement masks:</span></div>\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> EDGE, <span class=\"keyword\">typename</span> MASK&gt;</div>\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span><span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00062\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#af9dea56e1ab2f200dd03b4e35cf754c3\">   62</a></span><a class=\"code hl_function\" href=\"a01341.html#a5b5a5377a01eb4ba446e174eff9e45ac\">Scheme&lt;SCHEME_BILINEAR&gt;::ComputeEdgeVertexMask</a>(EDGE <span class=\"keyword\">const</span>&amp; edge, MASK&amp; mask,</div>\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>                                                <a class=\"code hl_enumeration\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78\">Crease::Rule</a>, <a class=\"code hl_enumeration\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78\">Crease::Rule</a>)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span>    <span class=\"comment\">//  This should be inline, otherwise trivially replicate it:</span></div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span>    assignCreaseMaskForEdge(edge, mask);</div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span> </div>\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK&gt;</div>\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span><span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00071\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#acd3f8303b964bda017e6f1e0cc77c6c3\">   71</a></span><a class=\"code hl_function\" href=\"a01341.html#a328ca26e6142838c4844b034546fb8c7\">Scheme&lt;SCHEME_BILINEAR&gt;::ComputeVertexVertexMask</a>(VERTEX <span class=\"keyword\">const</span>&amp; vertex, MASK&amp; mask,</div>\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>                                                  <a class=\"code hl_enumeration\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78\">Crease::Rule</a>, <a class=\"code hl_enumeration\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78\">Crease::Rule</a>)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span>    <span class=\"comment\">//  This should be inline, otherwise trivially replicate it:</span></div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span>    assignCornerMaskForVertex(vertex, mask);</div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span> </div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span> </div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span><span class=\"comment\">//  Limit masks for position -- the limit position of all vertices is the refined vertex.</span></div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK&gt;</div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00084\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#ab38c56ce6121aed94f2796bf5df894be\">   84</a></span><a class=\"code hl_function\" href=\"a01341.html#aa2821d365ea8135d6316c0f926f87ccb\">Scheme&lt;SCHEME_BILINEAR&gt;::assignCornerLimitMask</a>(VERTEX <span class=\"keyword\">const</span>&amp; <span class=\"comment\">/* vertex */</span>, MASK&amp; posMask)<span class=\"keyword\"> const </span>{</div>\n <div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span> </div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>}  <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span> </div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_CUDA_VERTEX_BUFFER_H</span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa01193_html\"><div class=\"ttname\"><a href=\"a01193.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaVertexBuffer</a></div><div class=\"ttdoc\">Concrete vertex buffer class for Cuda subdivision.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00875_source.html#l00042\">cudaVertexBuffer.h:42</a></div></div>\n-<div class=\"ttc\" id=\"aa01193_html_a59eb144c23606529ba730ae15598af09\"><div class=\"ttname\"><a href=\"a01193.html#a59eb144c23606529ba730ae15598af09\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaVertexBuffer::BindCudaBuffer</a></div><div class=\"ttdeci\">float * BindCudaBuffer()</div><div class=\"ttdoc\">Returns cuda memory.</div></div>\n-<div class=\"ttc\" id=\"aa01193_html_a7534b2edf898c9b6ee4a0b9c8aaf918f\"><div class=\"ttname\"><a href=\"a01193.html#a7534b2edf898c9b6ee4a0b9c8aaf918f\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaVertexBuffer::~CudaVertexBuffer</a></div><div class=\"ttdeci\">~CudaVertexBuffer()</div><div class=\"ttdoc\">Destructor.</div></div>\n-<div class=\"ttc\" id=\"aa01193_html_a77cee40767fd4936f20a8f9d9d9ea625\"><div class=\"ttname\"><a href=\"a01193.html#a77cee40767fd4936f20a8f9d9d9ea625\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaVertexBuffer::GetNumElements</a></div><div class=\"ttdeci\">int GetNumElements() const</div><div class=\"ttdoc\">Returns how many elements defined in this vertex buffer.</div></div>\n-<div class=\"ttc\" id=\"aa01193_html_a96601a091f8831823c4dd72b6c962f1b\"><div class=\"ttname\"><a href=\"a01193.html#a96601a091f8831823c4dd72b6c962f1b\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaVertexBuffer::UpdateData</a></div><div class=\"ttdeci\">void UpdateData(const float *src, int startVertex, int numVertices, void *deviceContext=NULL)</div></div>\n-<div class=\"ttc\" id=\"aa01193_html_aaf4a32b8a414eff77000c584c2015cb7\"><div class=\"ttname\"><a href=\"a01193.html#aaf4a32b8a414eff77000c584c2015cb7\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaVertexBuffer::GetNumVertices</a></div><div class=\"ttdeci\">int GetNumVertices() const</div><div class=\"ttdoc\">Returns how many vertices allocated in this vertex buffer.</div></div>\n-<div class=\"ttc\" id=\"aa01193_html_ab51afd364a99a3e33d8042537e8f167b\"><div class=\"ttname\"><a href=\"a01193.html#ab51afd364a99a3e33d8042537e8f167b\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaVertexBuffer::Create</a></div><div class=\"ttdeci\">static CudaVertexBuffer * Create(int numElements, int numVertices, void *deviceContext=NULL)</div><div class=\"ttdoc\">Creator. Returns NULL if error.</div></div>\n-<div class=\"ttc\" id=\"aa01193_html_add23d9f5bbc918076d240287a9b3664f\"><div class=\"ttname\"><a href=\"a01193.html#add23d9f5bbc918076d240287a9b3664f\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaVertexBuffer::allocate</a></div><div class=\"ttdeci\">bool allocate()</div></div>\n-<div class=\"ttc\" id=\"aa01193_html_af6cb32d896f7815cac1969c857845ba8\"><div class=\"ttname\"><a href=\"a01193.html#af6cb32d896f7815cac1969c857845ba8\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaVertexBuffer::CudaVertexBuffer</a></div><div class=\"ttdeci\">CudaVertexBuffer(int numElements, int numVertices)</div><div class=\"ttdoc\">Constructor.</div></div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>    posMask.SetNumVertexWeights(1);</div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>    posMask.SetNumEdgeWeights(0);</div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>    posMask.SetNumFaceWeights(0);</div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>    posMask.SetFaceWeightsForFaceCenters(<span class=\"keyword\">false</span>);</div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span> </div>\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>    posMask.VertexWeight(0) = 1.0f;</div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span> </div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK&gt;</div>\n+<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00097\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#afb316654a26523ceeed5600b759377b2\">   97</a></span><a class=\"code hl_function\" href=\"a01341.html#a7c9316f7212d3ea41db7f3f1a66cc7e5\">Scheme&lt;SCHEME_BILINEAR&gt;::assignCreaseLimitMask</a>(VERTEX <span class=\"keyword\">const</span>&amp; vertex, MASK&amp; posMask,</div>\n+<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span>                                               <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> <span class=\"comment\">/* creaseEnds */</span>[2])<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span> </div>\n+<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span>    assignCornerLimitMask(vertex, posMask);</div>\n+<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span> </div>\n+<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n+<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK&gt;</div>\n+<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00106\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#adbc763184791a8854374af8b123fa242\">  106</a></span><a class=\"code hl_function\" href=\"a01341.html#a736c10944cb921b334fbd8b81866d59f\">Scheme&lt;SCHEME_BILINEAR&gt;::assignSmoothLimitMask</a>(VERTEX <span class=\"keyword\">const</span>&amp; vertex, MASK&amp; posMask)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span> </div>\n+<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span>    assignCornerLimitMask(vertex, posMask);</div>\n+<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span> </div>\n+<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span><span class=\"comment\">//  Limit masks for tangents -- these are ambiguous around all vertices.  Provide</span></div>\n+<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span><span class=\"comment\">//  the tangents based on the incident edges of the first face.</span></div>\n+<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n+<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\">  116</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK&gt;</div>\n+<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00118\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#a887ec963f864c3f0782365b6865d23fc\">  118</a></span><a class=\"code hl_function\" href=\"a01341.html#ae9ee7f11f51ec6ff8c43ab0729454b54\">Scheme&lt;SCHEME_BILINEAR&gt;::assignCornerLimitTangentMasks</a>(VERTEX <span class=\"keyword\">const</span>&amp; <span class=\"comment\">/* vertex */</span>,</div>\n+<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span>        MASK&amp; tan1Mask, MASK&amp; tan2Mask)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span> </div>\n+<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\">  121</span>    tan1Mask.SetNumVertexWeights(1);</div>\n+<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span>    tan1Mask.SetNumEdgeWeights(2);</div>\n+<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span>    tan1Mask.SetNumFaceWeights(0);</div>\n+<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span>    tan1Mask.SetFaceWeightsForFaceCenters(<span class=\"keyword\">false</span>);</div>\n+<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span> </div>\n+<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span>    tan2Mask.SetNumVertexWeights(1);</div>\n+<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span>    tan2Mask.SetNumEdgeWeights(2);</div>\n+<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span>    tan2Mask.SetNumFaceWeights(0);</div>\n+<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span>    tan2Mask.SetFaceWeightsForFaceCenters(<span class=\"keyword\">false</span>);</div>\n+<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span> </div>\n+<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\">  131</span>    tan1Mask.VertexWeight(0) = -1.0f;</div>\n+<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\">  132</span>    tan1Mask.EdgeWeight(0) = 1.0f;</div>\n+<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\">  133</span>    tan1Mask.EdgeWeight(1) = 0.0f;</div>\n+<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\">  134</span> </div>\n+<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\">  135</span>    tan2Mask.VertexWeight(0) = -1.0f;</div>\n+<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\">  136</span>    tan2Mask.EdgeWeight(0) = 0.0f;</div>\n+<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\">  137</span>    tan2Mask.EdgeWeight(1) = 1.0f;</div>\n+<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\">  138</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\">  139</span> </div>\n+<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\">  140</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n+<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\">  141</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK&gt;</div>\n+<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00143\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#a7d9a8245c3860d5c975081a87b71939a\">  143</a></span><a class=\"code hl_function\" href=\"a01341.html#a4f8e559b93bbaf26ea0d40b1fa2f194f\">Scheme&lt;SCHEME_BILINEAR&gt;::assignCreaseLimitTangentMasks</a>(VERTEX <span class=\"keyword\">const</span>&amp; vertex,</div>\n+<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\">  144</span>        MASK&amp; tan1Mask, MASK&amp; tan2Mask, <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> <span class=\"comment\">/* creaseEnds */</span>[2])<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\">  145</span> </div>\n+<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\">  146</span>    assignCornerLimitTangentMasks(vertex, tan1Mask, tan2Mask);</div>\n+<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\">  147</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\">  148</span> </div>\n+<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\">  149</span><span class=\"keyword\">template</span> &lt;&gt;</div>\n+<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\">  150</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> VERTEX, <span class=\"keyword\">typename</span> MASK&gt;</div>\n+<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\">  151</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00152\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01341.html#a15a82416378d985afe049eaebc185e7d\">  152</a></span><a class=\"code hl_function\" href=\"a01341.html#a9ee5e194a00832a5bfa76cf58df0bc4b\">Scheme&lt;SCHEME_BILINEAR&gt;::assignSmoothLimitTangentMasks</a>(VERTEX <span class=\"keyword\">const</span>&amp; vertex,</div>\n+<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\">  153</span>        MASK&amp; tan1Mask, MASK&amp; tan2Mask)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\">  154</span> </div>\n+<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\">  155</span>    assignCornerLimitTangentMasks(vertex, tan1Mask, tan2Mask);</div>\n+<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\">  156</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\">  157</span> </div>\n+<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\">  158</span>} <span class=\"comment\">// end namespace sdc</span></div>\n+</div>\n+<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\">  159</span> </div>\n+<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\">  160</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\">  161</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\">  162</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\">  163</span> </div>\n+<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\">  164</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_SDC_BILINEAR_SCHEME_H */</span><span class=\"preprocessor\"></span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa00913_html_a61ef2f8f765ba17f8036bcc0f0fa887b\"><div class=\"ttname\"><a href=\"a00913.html#a61ef2f8f765ba17f8036bcc0f0fa887b\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Split</a></div><div class=\"ttdeci\">Split</div><div class=\"ttdoc\">Enumerated type for all face splitting schemes.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01492_source.html#l00047\">types.h:47</a></div></div>\n+<div class=\"ttc\" id=\"aa00913_html_a61ef2f8f765ba17f8036bcc0f0fa887ba56eed514f6a5971f198c9e421054b513\"><div class=\"ttname\"><a href=\"a00913.html#a61ef2f8f765ba17f8036bcc0f0fa887ba56eed514f6a5971f198c9e421054b513\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::SPLIT_TO_QUADS</a></div><div class=\"ttdeci\">@ SPLIT_TO_QUADS</div><div class=\"ttdoc\">Used by Catmark and Bilinear.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01492_source.html#l00048\">types.h:48</a></div></div>\n+<div class=\"ttc\" id=\"aa01333_html_a11fcd51ef86118f65e603c1474377a78\"><div class=\"ttname\"><a href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::Rule</a></div><div class=\"ttdeci\">Rule</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00869_source.html#l00082\">crease.h:82</a></div></div>\n+<div class=\"ttc\" id=\"aa01341_html_a14b97ddde5fba31ca7f933508ee649da\"><div class=\"ttname\"><a href=\"a01341.html#a14b97ddde5fba31ca7f933508ee649da\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::GetTopologicalSplitType</a></div><div class=\"ttdeci\">static Split GetTopologicalSplitType()</div></div>\n+<div class=\"ttc\" id=\"aa01341_html_a328ca26e6142838c4844b034546fb8c7\"><div class=\"ttname\"><a href=\"a01341.html#a328ca26e6142838c4844b034546fb8c7\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::ComputeVertexVertexMask</a></div><div class=\"ttdeci\">void ComputeVertexVertexMask(VERTEX const &amp;vertexNeighborhood, MASK &amp;vertexVertexMask, Crease::Rule parentRule=Crease::RULE_UNKNOWN, Crease::Rule childRule=Crease::RULE_UNKNOWN) const</div><div class=\"ttdoc\">Vertex-vertex masks If known, a single Rule or pair of Rules can be specified (indicating a crease tr...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00863_source.html#l00512\">scheme.h:512</a></div></div>\n+<div class=\"ttc\" id=\"aa01341_html_a4f8e559b93bbaf26ea0d40b1fa2f194f\"><div class=\"ttname\"><a href=\"a01341.html#a4f8e559b93bbaf26ea0d40b1fa2f194f\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::assignCreaseLimitTangentMasks</a></div><div class=\"ttdeci\">void assignCreaseLimitTangentMasks(VERTEX const &amp;vertex, MASK &amp;tan1, MASK &amp;tan2, int const creaseEnds[2]) const</div></div>\n+<div class=\"ttc\" id=\"aa01341_html_a531004716c07aad5436cb2db27e1ec24\"><div class=\"ttname\"><a href=\"a01341.html#a531004716c07aad5436cb2db27e1ec24\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::GetRegularFaceSize</a></div><div class=\"ttdeci\">static int GetRegularFaceSize()</div></div>\n+<div class=\"ttc\" id=\"aa01341_html_a5b5a5377a01eb4ba446e174eff9e45ac\"><div class=\"ttname\"><a href=\"a01341.html#a5b5a5377a01eb4ba446e174eff9e45ac\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::ComputeEdgeVertexMask</a></div><div class=\"ttdeci\">void ComputeEdgeVertexMask(EDGE const &amp;edgeNeighborhood, MASK &amp;edgeVertexMask, Crease::Rule parentRule=Crease::RULE_UNKNOWN, Crease::Rule childRule=Crease::RULE_UNKNOWN) const</div><div class=\"ttdoc\">Edge-vertex masks If known, the Rule for the edge and/or the derived vertex can be specified to accel...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00863_source.html#l00392\">scheme.h:392</a></div></div>\n+<div class=\"ttc\" id=\"aa01341_html_a736c10944cb921b334fbd8b81866d59f\"><div class=\"ttname\"><a href=\"a01341.html#a736c10944cb921b334fbd8b81866d59f\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::assignSmoothLimitMask</a></div><div class=\"ttdeci\">void assignSmoothLimitMask(VERTEX const &amp;vertex, MASK &amp;pos) const</div></div>\n+<div class=\"ttc\" id=\"aa01341_html_a73cf51e4315ca86e5e0a3954c92f8f74\"><div class=\"ttname\"><a href=\"a01341.html#a73cf51e4315ca86e5e0a3954c92f8f74\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::GetLocalNeighborhoodSize</a></div><div class=\"ttdeci\">static int GetLocalNeighborhoodSize()</div></div>\n+<div class=\"ttc\" id=\"aa01341_html_a7c9316f7212d3ea41db7f3f1a66cc7e5\"><div class=\"ttname\"><a href=\"a01341.html#a7c9316f7212d3ea41db7f3f1a66cc7e5\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::assignCreaseLimitMask</a></div><div class=\"ttdeci\">void assignCreaseLimitMask(VERTEX const &amp;vertex, MASK &amp;pos, int const creaseEnds[2]) const</div></div>\n+<div class=\"ttc\" id=\"aa01341_html_a8f7e983b2195ac6b388c7a6db17f8cb0\"><div class=\"ttname\"><a href=\"a01341.html#a8f7e983b2195ac6b388c7a6db17f8cb0\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::GetRegularVertexValence</a></div><div class=\"ttdeci\">static int GetRegularVertexValence()</div></div>\n+<div class=\"ttc\" id=\"aa01341_html_a9ee5e194a00832a5bfa76cf58df0bc4b\"><div class=\"ttname\"><a href=\"a01341.html#a9ee5e194a00832a5bfa76cf58df0bc4b\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::assignSmoothLimitTangentMasks</a></div><div class=\"ttdeci\">void assignSmoothLimitTangentMasks(VERTEX const &amp;vertex, MASK &amp;tan1, MASK &amp;tan2) const</div></div>\n+<div class=\"ttc\" id=\"aa01341_html_aa2821d365ea8135d6316c0f926f87ccb\"><div class=\"ttname\"><a href=\"a01341.html#aa2821d365ea8135d6316c0f926f87ccb\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::assignCornerLimitMask</a></div><div class=\"ttdeci\">void assignCornerLimitMask(VERTEX const &amp;vertex, MASK &amp;pos) const</div></div>\n+<div class=\"ttc\" id=\"aa01341_html_ae9ee7f11f51ec6ff8c43ab0729454b54\"><div class=\"ttname\"><a href=\"a01341.html#ae9ee7f11f51ec6ff8c43ab0729454b54\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::assignCornerLimitTangentMasks</a></div><div class=\"ttdeci\">void assignCornerLimitTangentMasks(VERTEX const &amp;vertex, MASK &amp;tan1, MASK &amp;tan2) const</div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00875.html\">cudaVertexBuffer.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_f61368944c63c2c1f8c69bc232e59c39.html\">sdc</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00875.html\">bilinearScheme.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-cudaVertexBuffer.h\n+bilinearScheme.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2013 Pixar\n+2// Copyright 2014 DreamWorks Animation LLC.\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -23,90 +23,211 @@\n 17//\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n-24\n-25#ifndef OPENSUBDIV3_OSD_CUDA_VERTEX_BUFFER_H\n-26#define OPENSUBDIV3_OSD_CUDA_VERTEX_BUFFER_H\n-27\n-28#include \"../version.h\"\n-29\n-30#include <cstddef>\n-31\n-32namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-33namespace OPENSUBDIV_VERSION {\n-34\n-35namespace Osd {\n-36\n-_\b4_\b2class _\bC_\bu_\bd_\ba_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br {\n-43\n-44public:\n-_\b4_\b6 static _\bC_\bu_\bd_\ba_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br * _\bC_\br_\be_\ba_\bt_\be(int numElements, int numVertices,\n-47 void *deviceContext = NULL);\n+24#ifndef OPENSUBDIV3_SDC_BILINEAR_SCHEME_H\n+25#define OPENSUBDIV3_SDC_BILINEAR_SCHEME_H\n+26\n+27#include \"../version.h\"\n+28\n+29#include \"../sdc/scheme.h\"\n+30\n+31namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+32namespace OPENSUBDIV_VERSION {\n+33\n+_\b3_\b4namespace Sdc {\n+35\n+36//\n+37// Specializations for Scheme<SCHEME_BILINEAR>:\n+38//\n+39\n+40//\n+41// Bilinear traits:\n+42//\n+43template <>\n+_\b4_\b4inline _\bS_\bp_\bl_\bi_\bt _\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bB_\bI_\bL_\bI_\bN_\bE_\bA_\bR_\b>_\b:_\b:_\bG_\be_\bt_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\bi_\bc_\ba_\bl_\bS_\bp_\bl_\bi_\bt_\bT_\by_\bp_\be() { return\n+_\bS_\bP_\bL_\bI_\bT_\b__\bT_\bO_\b__\bQ_\bU_\bA_\bD_\bS; }\n+45\n+46template <>\n+_\b4_\b7inline int _\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bB_\bI_\bL_\bI_\bN_\bE_\bA_\bR_\b>_\b:_\b:_\bG_\be_\bt_\bR_\be_\bg_\bu_\bl_\ba_\br_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be() { return 4; }\n 48\n-_\b5_\b0 _\b~_\bC_\bu_\bd_\ba_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br();\n+49template <>\n+_\b5_\b0inline int _\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bB_\bI_\bL_\bI_\bN_\bE_\bA_\bR_\b>_\b:_\b:_\bG_\be_\bt_\bR_\be_\bg_\bu_\bl_\ba_\br_\bV_\be_\br_\bt_\be_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be() { return 4; }\n 51\n-_\b5_\b4 void _\bU_\bp_\bd_\ba_\bt_\be_\bD_\ba_\bt_\ba(const float *src, int startVertex, int numVertices,\n-55 void *deviceContext=NULL);\n-56\n-_\b5_\b8 int _\bG_\be_\bt_\bN_\bu_\bm_\bE_\bl_\be_\bm_\be_\bn_\bt_\bs() const;\n-59\n-_\b6_\b1 int _\bG_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs() const;\n-62\n-_\b6_\b4 float * _\bB_\bi_\bn_\bd_\bC_\bu_\bd_\ba_\bB_\bu_\bf_\bf_\be_\br();\n-65\n-66protected:\n-_\b6_\b8 _\bC_\bu_\bd_\ba_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br(int numElements, int numVertices);\n-69\n-_\b7_\b2 bool _\ba_\bl_\bl_\bo_\bc_\ba_\bt_\be();\n-73\n-74private:\n-75 int _numElements;\n-76 int _numVertices;\n-77 void *_cudaMem;\n-78\n-79};\n-80\n-81} // end namespace Osd\n-82\n-83} // end namespace OPENSUBDIV_VERSION\n-84using namespace OPENSUBDIV_VERSION;\n+52template <>\n+_\b5_\b3inline int _\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bB_\bI_\bL_\bI_\bN_\bE_\bA_\bR_\b>_\b:_\b:_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bh_\bo_\bo_\bd_\bS_\bi_\bz_\be() { return 0; }\n+54\n+55\n+56//\n+57// Refinement masks:\n+58//\n+59template <>\n+60template <typename EDGE, typename MASK>\n+61void\n+_\b6_\b2_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bB_\bI_\bL_\bI_\bN_\bE_\bA_\bR_\b>_\b:_\b:_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bd_\bg_\be_\bV_\be_\br_\bt_\be_\bx_\bM_\ba_\bs_\bk(EDGE const& edge, MASK& mask,\n+63 _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be, _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be) const {\n+64 // This should be inline, otherwise trivially replicate it:\n+65 assignCreaseMaskForEdge(edge, mask);\n+66}\n+67\n+68template <>\n+69template <typename VERTEX, typename MASK>\n+70void\n+_\b7_\b1_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bB_\bI_\bL_\bI_\bN_\bE_\bA_\bR_\b>_\b:_\b:_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bV_\be_\br_\bt_\be_\bx_\bV_\be_\br_\bt_\be_\bx_\bM_\ba_\bs_\bk(VERTEX const& vertex, MASK&\n+mask,\n+72 _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be, _\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be) const {\n+73 // This should be inline, otherwise trivially replicate it:\n+74 assignCornerMaskForVertex(vertex, mask);\n+75}\n+76\n+77\n+78//\n+79// Limit masks for position -- the limit position of all vertices is the\n+refined vertex.\n+80//\n+81template <>\n+82template <typename VERTEX, typename MASK>\n+83inline void\n+_\b8_\b4_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bB_\bI_\bL_\bI_\bN_\bE_\bA_\bR_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\br_\bn_\be_\br_\bL_\bi_\bm_\bi_\bt_\bM_\ba_\bs_\bk(VERTEX const& /* vertex */,\n+MASK& posMask) const {\n 85\n-86} // end namespace OpenSubdiv\n-87\n-88#endif // OPENSUBDIV3_OSD_CUDA_VERTEX_BUFFER_H\n+86 posMask.SetNumVertexWeights(1);\n+87 posMask.SetNumEdgeWeights(0);\n+88 posMask.SetNumFaceWeights(0);\n+89 posMask.SetFaceWeightsForFaceCenters(false);\n+90\n+91 posMask.VertexWeight(0) = 1.0f;\n+92}\n+93\n+94template <>\n+95template <typename VERTEX, typename MASK>\n+96inline void\n+_\b9_\b7_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bB_\bI_\bL_\bI_\bN_\bE_\bA_\bR_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\br_\be_\ba_\bs_\be_\bL_\bi_\bm_\bi_\bt_\bM_\ba_\bs_\bk(VERTEX const& vertex, MASK&\n+posMask,\n+98 int const /* creaseEnds */[2]) const {\n+99\n+100 assignCornerLimitMask(vertex, posMask);\n+101}\n+102\n+103template <>\n+104template <typename VERTEX, typename MASK>\n+105inline void\n+_\b1_\b0_\b6_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bB_\bI_\bL_\bI_\bN_\bE_\bA_\bR_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bS_\bm_\bo_\bo_\bt_\bh_\bL_\bi_\bm_\bi_\bt_\bM_\ba_\bs_\bk(VERTEX const& vertex, MASK&\n+posMask) const {\n+107\n+108 assignCornerLimitMask(vertex, posMask);\n+109}\n+110\n+111//\n+112// Limit masks for tangents -- these are ambiguous around all vertices.\n+Provide\n+113// the tangents based on the incident edges of the first face.\n+114//\n+115template <>\n+116template <typename VERTEX, typename MASK>\n+117inline void\n+_\b1_\b1_\b8_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bB_\bI_\bL_\bI_\bN_\bE_\bA_\bR_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\br_\bn_\be_\br_\bL_\bi_\bm_\bi_\bt_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bM_\ba_\bs_\bk_\bs(VERTEX const& /\n+* vertex */,\n+119 MASK& tan1Mask, MASK& tan2Mask) const {\n+120\n+121 tan1Mask.SetNumVertexWeights(1);\n+122 tan1Mask.SetNumEdgeWeights(2);\n+123 tan1Mask.SetNumFaceWeights(0);\n+124 tan1Mask.SetFaceWeightsForFaceCenters(false);\n+125\n+126 tan2Mask.SetNumVertexWeights(1);\n+127 tan2Mask.SetNumEdgeWeights(2);\n+128 tan2Mask.SetNumFaceWeights(0);\n+129 tan2Mask.SetFaceWeightsForFaceCenters(false);\n+130\n+131 tan1Mask.VertexWeight(0) = -1.0f;\n+132 tan1Mask.EdgeWeight(0) = 1.0f;\n+133 tan1Mask.EdgeWeight(1) = 0.0f;\n+134\n+135 tan2Mask.VertexWeight(0) = -1.0f;\n+136 tan2Mask.EdgeWeight(0) = 0.0f;\n+137 tan2Mask.EdgeWeight(1) = 1.0f;\n+138}\n+139\n+140template <>\n+141template <typename VERTEX, typename MASK>\n+142inline void\n+_\b1_\b4_\b3_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bB_\bI_\bL_\bI_\bN_\bE_\bA_\bR_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\br_\be_\ba_\bs_\be_\bL_\bi_\bm_\bi_\bt_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bM_\ba_\bs_\bk_\bs(VERTEX const& vertex,\n+144 MASK& tan1Mask, MASK& tan2Mask, int const /* creaseEnds */[2]) const {\n+145\n+146 assignCornerLimitTangentMasks(vertex, tan1Mask, tan2Mask);\n+147}\n+148\n+149template <>\n+150template <typename VERTEX, typename MASK>\n+151inline void\n+_\b1_\b5_\b2_\bS_\bc_\bh_\be_\bm_\be_\b<_\bS_\bC_\bH_\bE_\bM_\bE_\b__\bB_\bI_\bL_\bI_\bN_\bE_\bA_\bR_\b>_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bS_\bm_\bo_\bo_\bt_\bh_\bL_\bi_\bm_\bi_\bt_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bM_\ba_\bs_\bk_\bs(VERTEX const& vertex,\n+153 MASK& tan1Mask, MASK& tan2Mask) const {\n+154\n+155 assignCornerLimitTangentMasks(vertex, tan1Mask, tan2Mask);\n+156}\n+157\n+158} // end namespace sdc\n+159\n+160} // end namespace OPENSUBDIV_VERSION\n+161using namespace OPENSUBDIV_VERSION;\n+162} // end namespace OpenSubdiv\n+163\n+164#endif /* OPENSUBDIV3_SDC_BILINEAR_SCHEME_H */\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-Concrete vertex buffer class for Cuda subdivision.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bu_\bd_\ba_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh_\b:_\b4_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bB_\bi_\bn_\bd_\bC_\bu_\bd_\ba_\bB_\bu_\bf_\bf_\be_\br\n-float * BindCudaBuffer()\n-Returns cuda memory.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\b~_\bC_\bu_\bd_\ba_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-~CudaVertexBuffer()\n-Destructor.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bE_\bl_\be_\bm_\be_\bn_\bt_\bs\n-int GetNumElements() const\n-Returns how many elements defined in this vertex buffer.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bU_\bp_\bd_\ba_\bt_\be_\bD_\ba_\bt_\ba\n-void UpdateData(const float *src, int startVertex, int numVertices, void\n-*deviceContext=NULL)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n-int GetNumVertices() const\n-Returns how many vertices allocated in this vertex buffer.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static CudaVertexBuffer * Create(int numElements, int numVertices, void\n-*deviceContext=NULL)\n-Creator. Returns NULL if error.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\ba_\bl_\bl_\bo_\bc_\ba_\bt_\be\n-bool allocate()\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bu_\bd_\ba_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bC_\bu_\bd_\ba_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-CudaVertexBuffer(int numElements, int numVertices)\n-Constructor.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bp_\bl_\bi_\bt\n+Split\n+Enumerated type for all face splitting schemes.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b4_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bP_\bL_\bI_\bT_\b__\bT_\bO_\b__\bQ_\bU_\bA_\bD_\bS\n+@ SPLIT_TO_QUADS\n+Used by Catmark and Bilinear.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b4_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bC_\br_\be_\ba_\bs_\be_\b:_\b:_\bR_\bu_\bl_\be\n+Rule\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\br_\be_\ba_\bs_\be_\b._\bh_\b:_\b8_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bG_\be_\bt_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\bi_\bc_\ba_\bl_\bS_\bp_\bl_\bi_\bt_\bT_\by_\bp_\be\n+static Split GetTopologicalSplitType()\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bV_\be_\br_\bt_\be_\bx_\bV_\be_\br_\bt_\be_\bx_\bM_\ba_\bs_\bk\n+void ComputeVertexVertexMask(VERTEX const &vertexNeighborhood, MASK\n+&vertexVertexMask, Crease::Rule parentRule=Crease::RULE_UNKNOWN, Crease::Rule\n+childRule=Crease::RULE_UNKNOWN) const\n+Vertex-vertex masks If known, a single Rule or pair of Rules can be specified\n+(indicating a crease tr...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b5_\b1_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\br_\be_\ba_\bs_\be_\bL_\bi_\bm_\bi_\bt_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bM_\ba_\bs_\bk_\bs\n+void assignCreaseLimitTangentMasks(VERTEX const &vertex, MASK &tan1, MASK\n+&tan2, int const creaseEnds[2]) const\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bG_\be_\bt_\bR_\be_\bg_\bu_\bl_\ba_\br_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be\n+static int GetRegularFaceSize()\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bd_\bg_\be_\bV_\be_\br_\bt_\be_\bx_\bM_\ba_\bs_\bk\n+void ComputeEdgeVertexMask(EDGE const &edgeNeighborhood, MASK &edgeVertexMask,\n+Crease::Rule parentRule=Crease::RULE_UNKNOWN, Crease::Rule childRule=Crease::\n+RULE_UNKNOWN) const\n+Edge-vertex masks If known, the Rule for the edge and/or the derived vertex can\n+be specified to accel...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bc_\bh_\be_\bm_\be_\b._\bh_\b:_\b3_\b9_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bS_\bm_\bo_\bo_\bt_\bh_\bL_\bi_\bm_\bi_\bt_\bM_\ba_\bs_\bk\n+void assignSmoothLimitMask(VERTEX const &vertex, MASK &pos) const\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bG_\be_\bt_\bL_\bo_\bc_\ba_\bl_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bh_\bo_\bo_\bd_\bS_\bi_\bz_\be\n+static int GetLocalNeighborhoodSize()\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\br_\be_\ba_\bs_\be_\bL_\bi_\bm_\bi_\bt_\bM_\ba_\bs_\bk\n+void assignCreaseLimitMask(VERTEX const &vertex, MASK &pos, int const\n+creaseEnds[2]) const\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\bG_\be_\bt_\bR_\be_\bg_\bu_\bl_\ba_\br_\bV_\be_\br_\bt_\be_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be\n+static int GetRegularVertexValence()\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bS_\bm_\bo_\bo_\bt_\bh_\bL_\bi_\bm_\bi_\bt_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bM_\ba_\bs_\bk_\bs\n+void assignSmoothLimitTangentMasks(VERTEX const &vertex, MASK &tan1, MASK\n+&tan2) const\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\br_\bn_\be_\br_\bL_\bi_\bm_\bi_\bt_\bM_\ba_\bs_\bk\n+void assignCornerLimitMask(VERTEX const &vertex, MASK &pos) const\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\b:_\b:_\ba_\bs_\bs_\bi_\bg_\bn_\bC_\bo_\br_\bn_\be_\br_\bL_\bi_\bm_\bi_\bt_\bT_\ba_\bn_\bg_\be_\bn_\bt_\bM_\ba_\bs_\bk_\bs\n+void assignCornerLimitTangentMasks(VERTEX const &vertex, MASK &tan1, MASK\n+&tan2) const\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bc_\bu_\bd_\ba_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh\n+    * _\bs_\bd_\bc\n+    * _\bb_\bi_\bl_\bi_\bn_\be_\ba_\br_\bS_\bc_\bh_\be_\bm_\be_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00878.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00878.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/glMesh.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/bfr/vertexDescriptor.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -88,43 +88,43 @@\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n-<a href=\"#namespaces\">Namespaces</a> &#124;\n-<a href=\"#typedef-members\">Typedefs</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">glMesh.h File Reference</div></div>\n+<a href=\"#nested-classes\">Classes</a> &#124;\n+<a href=\"#namespaces\">Namespaces</a>  </div>\n+  <div class=\"headertitle\"><div class=\"title\">vertexDescriptor.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00872_source.html\">../osd/mesh.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00788_source.html\">../osd/glPatchTable.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00800_source.html\">../vtr/stackBuffer.h</a>&quot;</code><br />\n </div>\n <p><a href=\"a00878_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n+<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n+Classes</h2></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00969.html\">VertexDescriptor</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Simple class used by subclasses of <a class=\"el\" href=\"a00941.html\" title=\"Base class providing initialization of a Surface for each face of a mesh.\">SurfaceFactory</a> to describe a vertex.  <a href=\"a00969.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+</table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n+<tr class=\"memitem:a00907\" id=\"r_a00907\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00907.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-</table><table class=\"memberdecls\">\n-<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"typedef-members\" name=\"typedef-members\"></a>\n-Typedefs</h2></td></tr>\n-<tr class=\"memitem:a7f9cf2b729178bdbb847fc4afd91af9e\" id=\"r_a7f9cf2b729178bdbb847fc4afd91af9e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef <a class=\"el\" href=\"a01269.html\">MeshInterface</a>&lt; <a class=\"el\" href=\"a01237.html\">GLPatchTable</a> &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html#a7f9cf2b729178bdbb847fc4afd91af9e\">GLMeshInterface</a></td></tr>\n-<tr class=\"separator:a7f9cf2b729178bdbb847fc4afd91af9e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00878.html\">glMesh.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_fa5edef2a780a73fbfb6a11f1af88ceb.html\">bfr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00878.html\">vertexDescriptor.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,24 +1,25 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bT_\by_\bp_\be_\bd_\be_\bf_\bs\n-glMesh.h File Reference\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+vertexDescriptor.h File Reference\n #include \"../version.h\"\n-#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bm_\be_\bs_\bh_\b._\bh\"\n-#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bg_\bl_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh\"\n+#include \"_\b._\b._\b/_\bv_\bt_\br_\b/_\bs_\bt_\ba_\bc_\bk_\bB_\bu_\bf_\bf_\be_\br_\b._\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n+C\bCl\bla\bas\bss\bse\bes\bs\n+class \u00a0 _\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n+\u00a0       Simple class used by subclasses of _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by to describe a vertex.\n+        _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n-\u00a0\n-T\bTy\byp\bpe\bed\bde\bef\bfs\bs\n-typedef _\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be< _\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be >\u00a0 _\bG_\bL_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bg_\bl_\bM_\be_\bs_\bh_\b._\bh\n+    * _\bb_\bf_\br\n+    * _\bv_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00878.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00878.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,3 +1,3 @@\n var a00878 = [\n-    [\"GLMeshInterface\", \"a00878.html#a7f9cf2b729178bdbb847fc4afd91af9e\", null]\n+    [\"VertexDescriptor\", \"a00969.html\", \"a00969\"]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00878_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00878_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/glMesh.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/bfr/vertexDescriptor.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">glMesh.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">vertexDescriptor.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00878.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2013 Pixar</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2021 Pixar</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -119,45 +119,425 @@\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_GL_MESH_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_GL_MESH_H</span></div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_BFR_VERTEX_DESCRIPTOR_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_BFR_VERTEX_DESCRIPTOR_H</span></div>\n <div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n <div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n <div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../osd/mesh.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../osd/glPatchTable.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span> </div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span> </div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"keyword\">namespace </span>Osd {</div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span> </div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html#a7f9cf2b729178bdbb847fc4afd91af9e\">   38</a></span><span class=\"keyword\">typedef</span> <a class=\"code hl_class\" href=\"a01269.html\">MeshInterface&lt;GLPatchTable&gt;</a> <a class=\"code hl_typedef\" href=\"a00912.html#a7f9cf2b729178bdbb847fc4afd91af9e\">GLMeshInterface</a>;</div>\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span> </div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span> </div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span>} <span class=\"comment\">// end namespace Osd</span></div>\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span> </div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span> </div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span>}  <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span> </div>\n-<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_GL_MESH_H</span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa00912_html_a7f9cf2b729178bdbb847fc4afd91af9e\"><div class=\"ttname\"><a href=\"a00912.html#a7f9cf2b729178bdbb847fc4afd91af9e\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLMeshInterface</a></div><div class=\"ttdeci\">MeshInterface&lt; GLPatchTable &gt; GLMeshInterface</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00878_source.html#l00038\">glMesh.h:38</a></div></div>\n-<div class=\"ttc\" id=\"aa01269_html\"><div class=\"ttname\"><a href=\"a01269.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshInterface</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00872_source.html#l00068\">mesh.h:68</a></div></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../vtr/stackBuffer.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span> </div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span>Bfr {</div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span><span class=\"comment\">//  WIP - need to migrate some of these comments into Doxygen</span></div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span><span class=\"comment\">//      - others will be moved to the external documentation</span></div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span><span class=\"comment\">//  It is used by subclasses of SurfaceFactory to provide a complete</span></div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span><span class=\"comment\">//  topological description for each vertex of a face, i.e. invoked via</span></div>\n+<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span><span class=\"comment\">//  the virtual method:</span></div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span><span class=\"comment\">//      int populateFaceVertexDescriptor(Index baseFace,</span></div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span><span class=\"comment\">//                                       int cornerVertex,</span></div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span><span class=\"comment\">//                                       VertexDescriptor &amp; v) const;</span></div>\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span><span class=\"comment\">//  Assignment of the full topology can be involved in the presence of</span></div>\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span><span class=\"comment\">//  irregular faces, non-manifold topology or creasing around a vertex, but</span></div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span><span class=\"comment\">//  many cases will be simple.  For example, to specify a regular boundary</span></div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span><span class=\"comment\">//  vertex of a Catmark mesh without any optional sharpness:</span></div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span><span class=\"comment\">//      int  numIncidentFaces = 2;</span></div>\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span><span class=\"comment\">//      bool vertexOnBoundary = true;</span></div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span><span class=\"comment\">//      vd.Initialize(numIncidentFaces);</span></div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span><span class=\"comment\">//          vd.SetManifold(true);</span></div>\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span><span class=\"comment\">//          vd.SetBoundary(vertexOnBoundary);</span></div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span><span class=\"comment\">//          vd.ClearIncidentFaceSizes();</span></div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span><span class=\"comment\">//      vd.Finalize();</span></div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span><span class=\"comment\">//  For a more general example, to assign a vertex of some valence whose</span></div>\n+<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span><span class=\"comment\">//  incident faces are of different sizes (e.g. required when triangles</span></div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span><span class=\"comment\">//  appear around a vertex in an otherwise quad-dominant Catmark mesh):</span></div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span><span class=\"comment\">//      int  numIncidentFaces = meshVertex.GetNumIncidentFaces();</span></div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span><span class=\"comment\">//      bool vertexOnBoundary = meshVertex.IsBoundar();</span></div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span><span class=\"comment\">//      vd.Initialize(numIncidentFaces);</span></div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span><span class=\"comment\">//          vd.SetManifold(true);</span></div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span><span class=\"comment\">//          vd.SetBoundary(vertexOnBoundary);</span></div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span><span class=\"comment\">//          for (int i = 0; i &lt; numIncidentFaces; ++i) {</span></div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span><span class=\"comment\">//              vd.SetIncidentFaceSize(i, meshVertex.GetIncidentFaceSize(i));</span></div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span><span class=\"comment\">//          }</span></div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span><span class=\"comment\">//      vd.Finalize();</span></div>\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span><span class=\"comment\">//  These examples specify the incident faces as forming a manifold ring</span></div>\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span><span class=\"comment\">//  (or half-ring) around the vertex, i.e. they can be specified as a</span></div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span><span class=\"comment\">//  continuous, connected sequence in counter-clockwise order (and also</span></div>\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span><span class=\"comment\">//  without degeneracies).  In the case of a boundary vertex, the first</span></div>\n+<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span><span class=\"comment\">//  face must be on the leading edge of the boundary while the last is on</span></div>\n+<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span><span class=\"comment\">//  the trailing edge.  For an interior vertex, which face is specified</span></div>\n+<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span><span class=\"comment\">//  first does not matter (since the set is periodic).</span></div>\n+<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span><span class=\"comment\">//  In both cases, the location of the base face in this sequence -- the</span></div>\n+<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span><span class=\"comment\">//  face whose corner vertex is being described here -- must be specified</span></div>\n+<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span><span class=\"comment\">//  in the return value to populateFaceVertexDescriptor() (e.g. when a</span></div>\n+<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span><span class=\"comment\">//  boundary vertex has 3 incident faces, a return value of 0, 1 or 2</span></div>\n+<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span><span class=\"comment\">//  will indicate which is the base face).</span></div>\n+<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span><span class=\"comment\">//  The corresponding methods to specify mesh control vertex indices (or</span></div>\n+<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span><span class=\"comment\">//  face-varying indices) complete the specification of the neighborhood:</span></div>\n+<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span><span class=\"comment\">//      int getFaceCornerVertexIndices(Index baseFace, int cornerVertex,</span></div>\n+<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span><span class=\"comment\">//                                     Index vertexIndices[]) const;</span></div>\n+<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span><span class=\"comment\">//      int getFaceCornerFVarValueIndices(Index baseFace, int cornerVertex,</span></div>\n+<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span><span class=\"comment\">//                                        Index fvarValueIndices[],</span></div>\n+<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span><span class=\"comment\">//                                        int   fvarChannel) const;</span></div>\n+<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\">  116</span><span class=\"comment\">//  and are invoked by the Factory when needed.</span></div>\n+<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\">  118</span><span class=\"comment\">//  For each incident face, the indices for all vertices of that face are</span></div>\n+<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span><span class=\"comment\">//  to be specified (not the one-ring or some other subset).  These indices</span></div>\n+<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span><span class=\"comment\">//  must also be specified in an orientation relative to the vertex, i.e.</span></div>\n+<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\">  121</span><span class=\"comment\">//  for a vertex A and an incident face with face-vertices that may be</span></div>\n+<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span><span class=\"comment\">//  stored internally as {D, C, A, B}, they must be specified with A first</span></div>\n+<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span><span class=\"comment\">//  as {A, B, C, D}.  This may seem a bit cumbersome, but it has clear</span></div>\n+<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span><span class=\"comment\">//  advantages when dealing with face-varying indices and unordered faces.</span></div>\n+<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span><span class=\"comment\">//  More compact ways of specifying vertex indices for ordered, manifold</span></div>\n+<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span><span class=\"comment\">//  cases may be worth exploring in future, but face-varying indices and</span></div>\n+<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span><span class=\"comment\">//  non-manifold (unordered) vertices will always require such a full set,</span></div>\n+<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span><span class=\"comment\">//  so both methods will need to co-exist.</span></div>\n+<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span><span class=\"comment\">//  </span></div>\n+<div class=\"foldopen\" id=\"foldopen00131\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00969.html\">  131</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a00969.html\">VertexDescriptor</a> {</div>\n+<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\">  132</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\">  133</span>    <span class=\"comment\">//  The full declaration must be enclosed by calls to these methods:</span></div>\n+<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\">  134</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\">  135</span>    <span class=\"comment\">//  Note that vertex valences or face sizes in excess of those defined</span></div>\n+<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\">  136</span>    <span class=\"comment\">//  in Bfr::Limits (typically 16-bits) are not valid.  When specifying</span></div>\n+<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\">  137</span>    <span class=\"comment\">//  values in excess of these limits, initialization will fail and/or</span></div>\n+<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\">  138</span>    <span class=\"comment\">//  the descriptor will be marked invalid and finalization will fail.</span></div>\n+<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\">  139</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\">  140</span> </div>\n+<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span> </div>\n+<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\">  149</span> </div>\n+<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00969.html#a1d4a38a2944a3705bfbd325766bda216\">  151</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00969.html#a1d4a38a2944a3705bfbd325766bda216\">Initialize</a>(<span class=\"keywordtype\">int</span> numIncidentFaces);</div>\n+<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\">  152</span> </div>\n+<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00969.html#a0cb0c1f4fa225637898cf1c7420bc064\">  154</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00969.html#a0cb0c1f4fa225637898cf1c7420bc064\">Finalize</a>();</div>\n+<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\">  155</span> </div>\n+<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\">  157</span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00969.html#ac532c4b500b1a85ea22217f2c65a70ed\">IsValid</a>() <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\">  159</span> </div>\n+<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\">  160</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\">  161</span>    <span class=\"comment\">//  WIP - need to migrate these comments into Doxygen</span></div>\n+<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\">  162</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\">  163</span>    <span class=\"comment\">//  Three groups of methods describe the topology around a vertex:</span></div>\n+<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\">  164</span>    <span class=\"comment\">//      - simple properties (vertex is a boundary, manifold, etc.)</span></div>\n+<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\">  165</span>    <span class=\"comment\">//      - sizes of incident faces (constant or size for each face)</span></div>\n+<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\">  166</span>    <span class=\"comment\">//      - sharpness of the vertex and its incident edges (optional)</span></div>\n+<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\">  167</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\">  168</span> </div>\n+<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\">  169</span>    <span class=\"comment\">//  Manifold and boundary conditions:</span></div>\n+<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\">  170</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span>    <span class=\"comment\">//  The manifold property is a strict condition but preferred for</span></div>\n+<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\">  172</span>    <span class=\"comment\">//  efficiency and is usually available from common connected mesh</span></div>\n+<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\">  173</span>    <span class=\"comment\">//  representations.  When declaring the topology as &quot;manifold&quot;,</span></div>\n+<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\">  174</span>    <span class=\"comment\">//  the Factory assumes the following:</span></div>\n+<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\">  175</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\">  176</span>    <span class=\"comment\">//      - all incident faces are &quot;ordered&quot; (counter-clockwise)</span></div>\n+<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span>    <span class=\"comment\">//      - all incident faces are consistently oriented</span></div>\n+<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\">  178</span>    <span class=\"comment\">//      - all incident edges are non-degenerate</span></div>\n+<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\">  179</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\">  180</span>    <span class=\"comment\">//  If not certain that all of these conditions are met, it is best</span></div>\n+<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\">  181</span>    <span class=\"comment\">//  to not declare manifold -- leaving the Factory to make sense of</span></div>\n+<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\">  182</span>    <span class=\"comment\">//  the set of incident faces from the face-vertex indices that are</span></div>\n+<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\">  183</span>    <span class=\"comment\">//  provided elsewhere.</span></div>\n+<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\">  184</span>    <span class=\"comment\">//  </span></div>\n+<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\">  185</span> </div>\n+<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\">  187</span> </div>\n+<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\">  191</span> </div>\n+<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\">  193</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00969.html#a100c73e08e78f4378b34a3f7abd9f1be\">SetManifold</a>(<span class=\"keywordtype\">bool</span> isManifold);</div>\n+<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\">  194</span> </div>\n+<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\">  196</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00969.html#ae228420c7ad83f58aad85b1268518df8\">SetBoundary</a>(<span class=\"keywordtype\">bool</span> isOnBoundary);</div>\n+<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\">  197</span> </div>\n+<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\">  199</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00969.html#ae9fae0d6843ce883db4c377d19dd61a8\">SetIncidentFaceSize</a>(<span class=\"keywordtype\">int</span> faceIndex, <span class=\"keywordtype\">int</span> faceSize);</div>\n+<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\">  200</span> </div>\n+<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\">  202</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00969.html#a5c719e43580059139938a6ed0f851853\">ClearIncidentFaceSizes</a>();</div>\n+<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\">  203</span> </div>\n+<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\">  205</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00969.html#a5f2854209dd55d5c420b1a7282da8793\">SetVertexSharpness</a>(<span class=\"keywordtype\">float</span> sharpness);</div>\n+<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\">  206</span> </div>\n+<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\">  208</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00969.html#a68afc60df5a617f5d7e1580548b72f9b\">ClearVertexSharpness</a>();</div>\n+<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\">  209</span> </div>\n+<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\">  221</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00969.html#aea91b4a9e7032d4fce2434c93ae2983a\">SetManifoldEdgeSharpness</a>(<span class=\"keywordtype\">int</span> edgeIndex, <span class=\"keywordtype\">float</span> edgeSharpness);</div>\n+<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\">  222</span> </div>\n+<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\">  238</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00969.html#a4dacf9da42e80ca546274402a8d3b266\">SetIncidentFaceEdgeSharpness</a>(<span class=\"keywordtype\">int</span> faceIndex, <span class=\"keywordtype\">float</span> leadingEdgeSharp,</div>\n+<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\">  239</span>                                                     <span class=\"keywordtype\">float</span> trailingEdgeSharp);</div>\n+<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\">  240</span> </div>\n+<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\">  242</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00969.html#a831025d6d817c4afb1df7d5a705af378\">ClearEdgeSharpness</a>();</div>\n+<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\">  244</span> </div>\n+<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\">  246</span> </div>\n+<div class=\"line\"><a id=\"l00251\" name=\"l00251\"></a><span class=\"lineno\">  251</span> </div>\n+<div class=\"line\"><a id=\"l00253\" name=\"l00253\"></a><span class=\"lineno\">  253</span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00969.html#a28f34ca6c256f1f7fa44e862540ec421\">IsManifold</a>() <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00254\" name=\"l00254\"></a><span class=\"lineno\">  254</span> </div>\n+<div class=\"line\"><a id=\"l00256\" name=\"l00256\"></a><span class=\"lineno\">  256</span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00969.html#ab744a59a71fffcff3e745c2c679aec29\">IsBoundary</a>() <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00257\" name=\"l00257\"></a><span class=\"lineno\">  257</span> </div>\n+<div class=\"line\"><a id=\"l00259\" name=\"l00259\"></a><span class=\"lineno\">  259</span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00969.html#ad56c50bc5582768806d7890c55b63141\">HasIncidentFaceSizes</a>() <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00260\" name=\"l00260\"></a><span class=\"lineno\">  260</span> </div>\n+<div class=\"line\"><a id=\"l00262\" name=\"l00262\"></a><span class=\"lineno\">  262</span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00969.html#a434afb577a5e287b615364d94d124e84\">GetIncidentFaceSize</a>(<span class=\"keywordtype\">int</span> faceIndex) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00263\" name=\"l00263\"></a><span class=\"lineno\">  263</span> </div>\n+<div class=\"line\"><a id=\"l00265\" name=\"l00265\"></a><span class=\"lineno\">  265</span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00969.html#a4f46be1cfd41b34d8808363c83e9ff56\">HasVertexSharpness</a>() <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00266\" name=\"l00266\"></a><span class=\"lineno\">  266</span> </div>\n+<div class=\"line\"><a id=\"l00268\" name=\"l00268\"></a><span class=\"lineno\">  268</span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"a00969.html#a03588bdc24a8240380aa0972ecae0ea1\">GetVertexSharpness</a>() <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00269\" name=\"l00269\"></a><span class=\"lineno\">  269</span> </div>\n+<div class=\"line\"><a id=\"l00271\" name=\"l00271\"></a><span class=\"lineno\">  271</span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00969.html#a2c6d182581c88931784f62fe2b8ae666\">HasEdgeSharpness</a>() <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00272\" name=\"l00272\"></a><span class=\"lineno\">  272</span> </div>\n+<div class=\"line\"><a id=\"l00274\" name=\"l00274\"></a><span class=\"lineno\">  274</span>    <span class=\"keywordtype\">float</span> <a class=\"code hl_function\" href=\"a00969.html#a460ea7c821fd4c2522de6503f9c25866\">GetManifoldEdgeSharpness</a>(<span class=\"keywordtype\">int</span> edgeIndex) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00275\" name=\"l00275\"></a><span class=\"lineno\">  275</span> </div>\n+<div class=\"line\"><a id=\"l00277\" name=\"l00277\"></a><span class=\"lineno\">  277</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00969.html#aa57d6053ca61cdf53b36937812b09307\">GetIncidentFaceEdgeSharpness</a>(<span class=\"keywordtype\">int</span> faceIndex,</div>\n+<div class=\"line\"><a id=\"l00278\" name=\"l00278\"></a><span class=\"lineno\">  278</span>            <span class=\"keywordtype\">float</span> * leadingEdgeSharp, <span class=\"keywordtype\">float</span> * trailingEdgeSharp) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00280\" name=\"l00280\"></a><span class=\"lineno\">  280</span> </div>\n+<div class=\"line\"><a id=\"l00281\" name=\"l00281\"></a><span class=\"lineno\">  281</span><span class=\"keyword\">protected</span>:</div>\n+<div class=\"line\"><a id=\"l00283\" name=\"l00283\"></a><span class=\"lineno\">  283</span>    <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span>FaceVertex;</div>\n+<div class=\"line\"><a id=\"l00284\" name=\"l00284\"></a><span class=\"lineno\">  284</span> </div>\n+<div class=\"line\"><a id=\"l00285\" name=\"l00285\"></a><span class=\"lineno\">  285</span>    <a class=\"code hl_class\" href=\"a00969.html\">VertexDescriptor</a>() { }</div>\n+<div class=\"line\"><a id=\"l00286\" name=\"l00286\"></a><span class=\"lineno\">  286</span>    <a class=\"code hl_class\" href=\"a00969.html\">~VertexDescriptor</a>() { }</div>\n+<div class=\"line\"><a id=\"l00287\" name=\"l00287\"></a><span class=\"lineno\">  287</span> </div>\n+<div class=\"line\"><a id=\"l00288\" name=\"l00288\"></a><span class=\"lineno\">  288</span>    <span class=\"keyword\">typedef</span> Vtr::internal::StackBuffer&lt;int,8,true&gt;    IntBuffer;</div>\n+<div class=\"line\"><a id=\"l00289\" name=\"l00289\"></a><span class=\"lineno\">  289</span>    <span class=\"keyword\">typedef</span> Vtr::internal::StackBuffer&lt;float,16,true&gt; FloatBuffer;</div>\n+<div class=\"line\"><a id=\"l00290\" name=\"l00290\"></a><span class=\"lineno\">  290</span> </div>\n+<div class=\"line\"><a id=\"l00291\" name=\"l00291\"></a><span class=\"lineno\">  291</span>    <span class=\"keywordtype\">void</span> initFaceSizes();</div>\n+<div class=\"line\"><a id=\"l00292\" name=\"l00292\"></a><span class=\"lineno\">  292</span>    <span class=\"keywordtype\">void</span> initEdgeSharpness();</div>\n+<div class=\"line\"><a id=\"l00294\" name=\"l00294\"></a><span class=\"lineno\">  294</span> </div>\n+<div class=\"line\"><a id=\"l00295\" name=\"l00295\"></a><span class=\"lineno\">  295</span><span class=\"keyword\">protected</span>:</div>\n+<div class=\"line\"><a id=\"l00297\" name=\"l00297\"></a><span class=\"lineno\">  297</span>    <span class=\"comment\">//  Member variables assigned through the above interface:</span></div>\n+<div class=\"line\"><a id=\"l00298\" name=\"l00298\"></a><span class=\"lineno\">  298</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> _isValid       : 1;</div>\n+<div class=\"line\"><a id=\"l00299\" name=\"l00299\"></a><span class=\"lineno\">  299</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> _isInitialized : 1;</div>\n+<div class=\"line\"><a id=\"l00300\" name=\"l00300\"></a><span class=\"lineno\">  300</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> _isFinalized   : 1;</div>\n+<div class=\"line\"><a id=\"l00301\" name=\"l00301\"></a><span class=\"lineno\">  301</span> </div>\n+<div class=\"line\"><a id=\"l00302\" name=\"l00302\"></a><span class=\"lineno\">  302</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> _isManifold : 1;</div>\n+<div class=\"line\"><a id=\"l00303\" name=\"l00303\"></a><span class=\"lineno\">  303</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> _isBoundary : 1;</div>\n+<div class=\"line\"><a id=\"l00304\" name=\"l00304\"></a><span class=\"lineno\">  304</span> </div>\n+<div class=\"line\"><a id=\"l00305\" name=\"l00305\"></a><span class=\"lineno\">  305</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> _hasFaceSizes     : 1;</div>\n+<div class=\"line\"><a id=\"l00306\" name=\"l00306\"></a><span class=\"lineno\">  306</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> _hasEdgeSharpness : 1;</div>\n+<div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\">  307</span> </div>\n+<div class=\"line\"><a id=\"l00308\" name=\"l00308\"></a><span class=\"lineno\">  308</span>    <span class=\"keywordtype\">short</span> _numFaces;</div>\n+<div class=\"line\"><a id=\"l00309\" name=\"l00309\"></a><span class=\"lineno\">  309</span>    <span class=\"keywordtype\">float</span> _vertSharpness;</div>\n+<div class=\"line\"><a id=\"l00310\" name=\"l00310\"></a><span class=\"lineno\">  310</span> </div>\n+<div class=\"line\"><a id=\"l00311\" name=\"l00311\"></a><span class=\"lineno\">  311</span>    FloatBuffer _faceEdgeSharpness;</div>\n+<div class=\"line\"><a id=\"l00312\" name=\"l00312\"></a><span class=\"lineno\">  312</span>    IntBuffer   _faceSizeOffsets;</div>\n+<div class=\"line\"><a id=\"l00314\" name=\"l00314\"></a><span class=\"lineno\">  314</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00315\" name=\"l00315\"></a><span class=\"lineno\">  315</span> </div>\n+<div class=\"line\"><a id=\"l00316\" name=\"l00316\"></a><span class=\"lineno\">  316</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00317\" name=\"l00317\"></a><span class=\"lineno\">  317</span><span class=\"comment\">//  Public inline methods for simple assignment:</span></div>\n+<div class=\"line\"><a id=\"l00318\" name=\"l00318\"></a><span class=\"lineno\">  318</span><span class=\"comment\">//  </span></div>\n+<div class=\"line\"><a id=\"l00319\" name=\"l00319\"></a><span class=\"lineno\">  319</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span></div>\n+<div class=\"foldopen\" id=\"foldopen00320\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00320\" name=\"l00320\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00969.html#ac532c4b500b1a85ea22217f2c65a70ed\">  320</a></span><a class=\"code hl_function\" href=\"a00969.html#ac532c4b500b1a85ea22217f2c65a70ed\">VertexDescriptor::IsValid</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00321\" name=\"l00321\"></a><span class=\"lineno\">  321</span>    <span class=\"keywordflow\">return</span> _isValid;</div>\n+<div class=\"line\"><a id=\"l00322\" name=\"l00322\"></a><span class=\"lineno\">  322</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00323\" name=\"l00323\"></a><span class=\"lineno\">  323</span> </div>\n+<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\">  324</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00325\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00969.html#a100c73e08e78f4378b34a3f7abd9f1be\">  325</a></span><a class=\"code hl_function\" href=\"a00969.html#a100c73e08e78f4378b34a3f7abd9f1be\">VertexDescriptor::SetManifold</a>(<span class=\"keywordtype\">bool</span> isManifold) {</div>\n+<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\">  326</span>    _isManifold = isManifold;</div>\n+<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\">  327</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\">  328</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span></div>\n+<div class=\"foldopen\" id=\"foldopen00329\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00969.html#a28f34ca6c256f1f7fa44e862540ec421\">  329</a></span><a class=\"code hl_function\" href=\"a00969.html#a28f34ca6c256f1f7fa44e862540ec421\">VertexDescriptor::IsManifold</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\">  330</span>    <span class=\"keywordflow\">return</span> _isManifold;</div>\n+<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\">  331</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\">  332</span> </div>\n+<div class=\"line\"><a id=\"l00333\" name=\"l00333\"></a><span class=\"lineno\">  333</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00334\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00334\" name=\"l00334\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00969.html#ae228420c7ad83f58aad85b1268518df8\">  334</a></span><a class=\"code hl_function\" href=\"a00969.html#ae228420c7ad83f58aad85b1268518df8\">VertexDescriptor::SetBoundary</a>(<span class=\"keywordtype\">bool</span> isBoundary) {</div>\n+<div class=\"line\"><a id=\"l00335\" name=\"l00335\"></a><span class=\"lineno\">  335</span>    _isBoundary = isBoundary;</div>\n+<div class=\"line\"><a id=\"l00336\" name=\"l00336\"></a><span class=\"lineno\">  336</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00337\" name=\"l00337\"></a><span class=\"lineno\">  337</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span></div>\n+<div class=\"foldopen\" id=\"foldopen00338\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00338\" name=\"l00338\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00969.html#ab744a59a71fffcff3e745c2c679aec29\">  338</a></span><a class=\"code hl_function\" href=\"a00969.html#ab744a59a71fffcff3e745c2c679aec29\">VertexDescriptor::IsBoundary</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00339\" name=\"l00339\"></a><span class=\"lineno\">  339</span>    <span class=\"keywordflow\">return</span> _isBoundary;</div>\n+<div class=\"line\"><a id=\"l00340\" name=\"l00340\"></a><span class=\"lineno\">  340</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00341\" name=\"l00341\"></a><span class=\"lineno\">  341</span> </div>\n+<div class=\"line\"><a id=\"l00342\" name=\"l00342\"></a><span class=\"lineno\">  342</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00343\" name=\"l00343\"></a><span class=\"lineno\">  343</span><span class=\"comment\">//  Public inline methods involving sizes of incident faces:</span></div>\n+<div class=\"line\"><a id=\"l00344\" name=\"l00344\"></a><span class=\"lineno\">  344</span><span class=\"comment\">//  </span></div>\n+<div class=\"line\"><a id=\"l00345\" name=\"l00345\"></a><span class=\"lineno\">  345</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span></div>\n+<div class=\"foldopen\" id=\"foldopen00346\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00346\" name=\"l00346\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00969.html#ad56c50bc5582768806d7890c55b63141\">  346</a></span><a class=\"code hl_function\" href=\"a00969.html#ad56c50bc5582768806d7890c55b63141\">VertexDescriptor::HasIncidentFaceSizes</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00347\" name=\"l00347\"></a><span class=\"lineno\">  347</span>    <span class=\"keywordflow\">return</span> _hasFaceSizes;</div>\n+<div class=\"line\"><a id=\"l00348\" name=\"l00348\"></a><span class=\"lineno\">  348</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00349\" name=\"l00349\"></a><span class=\"lineno\">  349</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00350\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00350\" name=\"l00350\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00969.html#a5c719e43580059139938a6ed0f851853\">  350</a></span><a class=\"code hl_function\" href=\"a00969.html#a5c719e43580059139938a6ed0f851853\">VertexDescriptor::ClearIncidentFaceSizes</a>() {</div>\n+<div class=\"line\"><a id=\"l00351\" name=\"l00351\"></a><span class=\"lineno\">  351</span>    _hasFaceSizes = <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00352\" name=\"l00352\"></a><span class=\"lineno\">  352</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00353\" name=\"l00353\"></a><span class=\"lineno\">  353</span> </div>\n+<div class=\"line\"><a id=\"l00354\" name=\"l00354\"></a><span class=\"lineno\">  354</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00355\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00355\" name=\"l00355\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00969.html#ae9fae0d6843ce883db4c377d19dd61a8\">  355</a></span><a class=\"code hl_function\" href=\"a00969.html#ae9fae0d6843ce883db4c377d19dd61a8\">VertexDescriptor::SetIncidentFaceSize</a>(<span class=\"keywordtype\">int</span> incFaceIndex, <span class=\"keywordtype\">int</span> faceSize) {</div>\n+<div class=\"line\"><a id=\"l00356\" name=\"l00356\"></a><span class=\"lineno\">  356</span> </div>\n+<div class=\"line\"><a id=\"l00357\" name=\"l00357\"></a><span class=\"lineno\">  357</span>    <span class=\"keywordflow\">if</span> (!_hasFaceSizes) initFaceSizes();</div>\n+<div class=\"line\"><a id=\"l00358\" name=\"l00358\"></a><span class=\"lineno\">  358</span> </div>\n+<div class=\"line\"><a id=\"l00359\" name=\"l00359\"></a><span class=\"lineno\">  359</span>    _faceSizeOffsets[incFaceIndex] = faceSize;</div>\n+<div class=\"line\"><a id=\"l00360\" name=\"l00360\"></a><span class=\"lineno\">  360</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00361\" name=\"l00361\"></a><span class=\"lineno\">  361</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span></div>\n+<div class=\"foldopen\" id=\"foldopen00362\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00362\" name=\"l00362\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00969.html#a434afb577a5e287b615364d94d124e84\">  362</a></span><a class=\"code hl_function\" href=\"a00969.html#a434afb577a5e287b615364d94d124e84\">VertexDescriptor::GetIncidentFaceSize</a>(<span class=\"keywordtype\">int</span> incFaceIndex)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00363\" name=\"l00363\"></a><span class=\"lineno\">  363</span> </div>\n+<div class=\"line\"><a id=\"l00364\" name=\"l00364\"></a><span class=\"lineno\">  364</span>    <span class=\"keywordflow\">return</span> _isFinalized ?</div>\n+<div class=\"line\"><a id=\"l00365\" name=\"l00365\"></a><span class=\"lineno\">  365</span>          (_faceSizeOffsets[incFaceIndex+1] - _faceSizeOffsets[incFaceIndex]) :</div>\n+<div class=\"line\"><a id=\"l00366\" name=\"l00366\"></a><span class=\"lineno\">  366</span>           _faceSizeOffsets[incFaceIndex];</div>\n+<div class=\"line\"><a id=\"l00367\" name=\"l00367\"></a><span class=\"lineno\">  367</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00368\" name=\"l00368\"></a><span class=\"lineno\">  368</span> </div>\n+<div class=\"line\"><a id=\"l00369\" name=\"l00369\"></a><span class=\"lineno\">  369</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00370\" name=\"l00370\"></a><span class=\"lineno\">  370</span><span class=\"comment\">//  Public inline methods involving vertex sharpness:</span></div>\n+<div class=\"line\"><a id=\"l00371\" name=\"l00371\"></a><span class=\"lineno\">  371</span><span class=\"comment\">//  </span></div>\n+<div class=\"line\"><a id=\"l00372\" name=\"l00372\"></a><span class=\"lineno\">  372</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span></div>\n+<div class=\"foldopen\" id=\"foldopen00373\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00373\" name=\"l00373\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00969.html#a4f46be1cfd41b34d8808363c83e9ff56\">  373</a></span><a class=\"code hl_function\" href=\"a00969.html#a4f46be1cfd41b34d8808363c83e9ff56\">VertexDescriptor::HasVertexSharpness</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00374\" name=\"l00374\"></a><span class=\"lineno\">  374</span>    <span class=\"keywordflow\">return</span> _vertSharpness &gt; 0.0f;</div>\n+<div class=\"line\"><a id=\"l00375\" name=\"l00375\"></a><span class=\"lineno\">  375</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00376\" name=\"l00376\"></a><span class=\"lineno\">  376</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00377\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00377\" name=\"l00377\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00969.html#a68afc60df5a617f5d7e1580548b72f9b\">  377</a></span><a class=\"code hl_function\" href=\"a00969.html#a68afc60df5a617f5d7e1580548b72f9b\">VertexDescriptor::ClearVertexSharpness</a>() {</div>\n+<div class=\"line\"><a id=\"l00378\" name=\"l00378\"></a><span class=\"lineno\">  378</span>    _vertSharpness = 0.0f;</div>\n+<div class=\"line\"><a id=\"l00379\" name=\"l00379\"></a><span class=\"lineno\">  379</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00380\" name=\"l00380\"></a><span class=\"lineno\">  380</span> </div>\n+<div class=\"line\"><a id=\"l00381\" name=\"l00381\"></a><span class=\"lineno\">  381</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00382\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00382\" name=\"l00382\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00969.html#a5f2854209dd55d5c420b1a7282da8793\">  382</a></span><a class=\"code hl_function\" href=\"a00969.html#a5f2854209dd55d5c420b1a7282da8793\">VertexDescriptor::SetVertexSharpness</a>(<span class=\"keywordtype\">float</span> vertSharpness) {</div>\n+<div class=\"line\"><a id=\"l00383\" name=\"l00383\"></a><span class=\"lineno\">  383</span>    _vertSharpness = vertSharpness;</div>\n+<div class=\"line\"><a id=\"l00384\" name=\"l00384\"></a><span class=\"lineno\">  384</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00385\" name=\"l00385\"></a><span class=\"lineno\">  385</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">float</span></div>\n+<div class=\"foldopen\" id=\"foldopen00386\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00386\" name=\"l00386\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00969.html#a03588bdc24a8240380aa0972ecae0ea1\">  386</a></span><a class=\"code hl_function\" href=\"a00969.html#a03588bdc24a8240380aa0972ecae0ea1\">VertexDescriptor::GetVertexSharpness</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00387\" name=\"l00387\"></a><span class=\"lineno\">  387</span>    <span class=\"keywordflow\">return</span> _vertSharpness;</div>\n+<div class=\"line\"><a id=\"l00388\" name=\"l00388\"></a><span class=\"lineno\">  388</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00389\" name=\"l00389\"></a><span class=\"lineno\">  389</span> </div>\n+<div class=\"line\"><a id=\"l00390\" name=\"l00390\"></a><span class=\"lineno\">  390</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00391\" name=\"l00391\"></a><span class=\"lineno\">  391</span><span class=\"comment\">//  Public inline methods involving vertex sharpness:</span></div>\n+<div class=\"line\"><a id=\"l00392\" name=\"l00392\"></a><span class=\"lineno\">  392</span><span class=\"comment\">//  </span></div>\n+<div class=\"line\"><a id=\"l00393\" name=\"l00393\"></a><span class=\"lineno\">  393</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span></div>\n+<div class=\"foldopen\" id=\"foldopen00394\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00394\" name=\"l00394\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00969.html#a2c6d182581c88931784f62fe2b8ae666\">  394</a></span><a class=\"code hl_function\" href=\"a00969.html#a2c6d182581c88931784f62fe2b8ae666\">VertexDescriptor::HasEdgeSharpness</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00395\" name=\"l00395\"></a><span class=\"lineno\">  395</span>    <span class=\"keywordflow\">return</span> _hasEdgeSharpness;</div>\n+<div class=\"line\"><a id=\"l00396\" name=\"l00396\"></a><span class=\"lineno\">  396</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00397\" name=\"l00397\"></a><span class=\"lineno\">  397</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00398\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00398\" name=\"l00398\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00969.html#a831025d6d817c4afb1df7d5a705af378\">  398</a></span><a class=\"code hl_function\" href=\"a00969.html#a831025d6d817c4afb1df7d5a705af378\">VertexDescriptor::ClearEdgeSharpness</a>() {</div>\n+<div class=\"line\"><a id=\"l00399\" name=\"l00399\"></a><span class=\"lineno\">  399</span>    _hasEdgeSharpness = <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00400\" name=\"l00400\"></a><span class=\"lineno\">  400</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00401\" name=\"l00401\"></a><span class=\"lineno\">  401</span> </div>\n+<div class=\"line\"><a id=\"l00402\" name=\"l00402\"></a><span class=\"lineno\">  402</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00403\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00403\" name=\"l00403\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00969.html#aea91b4a9e7032d4fce2434c93ae2983a\">  403</a></span><a class=\"code hl_function\" href=\"a00969.html#aea91b4a9e7032d4fce2434c93ae2983a\">VertexDescriptor::SetManifoldEdgeSharpness</a>(<span class=\"keywordtype\">int</span> edgeIndex, <span class=\"keywordtype\">float</span> sharpness) {</div>\n+<div class=\"line\"><a id=\"l00404\" name=\"l00404\"></a><span class=\"lineno\">  404</span> </div>\n+<div class=\"line\"><a id=\"l00405\" name=\"l00405\"></a><span class=\"lineno\">  405</span>    <span class=\"keywordflow\">if</span> (!_hasEdgeSharpness) initEdgeSharpness();</div>\n+<div class=\"line\"><a id=\"l00406\" name=\"l00406\"></a><span class=\"lineno\">  406</span> </div>\n+<div class=\"line\"><a id=\"l00407\" name=\"l00407\"></a><span class=\"lineno\">  407</span>    <span class=\"comment\">//  Assign the leading edge of the face after the edge (even index):</span></div>\n+<div class=\"line\"><a id=\"l00408\" name=\"l00408\"></a><span class=\"lineno\">  408</span>    <span class=\"keywordflow\">if</span> (edgeIndex &lt; _numFaces) {</div>\n+<div class=\"line\"><a id=\"l00409\" name=\"l00409\"></a><span class=\"lineno\">  409</span>        _faceEdgeSharpness[2*edgeIndex] = sharpness;</div>\n+<div class=\"line\"><a id=\"l00410\" name=\"l00410\"></a><span class=\"lineno\">  410</span>    }</div>\n+<div class=\"line\"><a id=\"l00411\" name=\"l00411\"></a><span class=\"lineno\">  411</span> </div>\n+<div class=\"line\"><a id=\"l00412\" name=\"l00412\"></a><span class=\"lineno\">  412</span>    <span class=\"comment\">//  Assign the trailing edge of the face before the edge (odd index):</span></div>\n+<div class=\"line\"><a id=\"l00413\" name=\"l00413\"></a><span class=\"lineno\">  413</span>    <span class=\"keywordflow\">if</span> (edgeIndex &gt; 0) {</div>\n+<div class=\"line\"><a id=\"l00414\" name=\"l00414\"></a><span class=\"lineno\">  414</span>        _faceEdgeSharpness[2*edgeIndex-1] = sharpness;</div>\n+<div class=\"line\"><a id=\"l00415\" name=\"l00415\"></a><span class=\"lineno\">  415</span>    } <span class=\"keywordflow\">else</span> <span class=\"keywordflow\">if</span> (!<a class=\"code hl_function\" href=\"a00969.html#ab744a59a71fffcff3e745c2c679aec29\">IsBoundary</a>()) {</div>\n+<div class=\"line\"><a id=\"l00416\" name=\"l00416\"></a><span class=\"lineno\">  416</span>        _faceEdgeSharpness[2*_numFaces-1] = sharpness;</div>\n+<div class=\"line\"><a id=\"l00417\" name=\"l00417\"></a><span class=\"lineno\">  417</span>    }</div>\n+<div class=\"line\"><a id=\"l00418\" name=\"l00418\"></a><span class=\"lineno\">  418</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00419\" name=\"l00419\"></a><span class=\"lineno\">  419</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">float</span></div>\n+<div class=\"foldopen\" id=\"foldopen00420\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00420\" name=\"l00420\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00969.html#a460ea7c821fd4c2522de6503f9c25866\">  420</a></span><a class=\"code hl_function\" href=\"a00969.html#a460ea7c821fd4c2522de6503f9c25866\">VertexDescriptor::GetManifoldEdgeSharpness</a>(<span class=\"keywordtype\">int</span> edgeIndex)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00421\" name=\"l00421\"></a><span class=\"lineno\">  421</span> </div>\n+<div class=\"line\"><a id=\"l00422\" name=\"l00422\"></a><span class=\"lineno\">  422</span>    <span class=\"comment\">//  All edges are first of the pair (even index) except last of boundary</span></div>\n+<div class=\"line\"><a id=\"l00423\" name=\"l00423\"></a><span class=\"lineno\">  423</span>    <span class=\"keywordflow\">return</span> _faceEdgeSharpness[2*edgeIndex - (edgeIndex == _numFaces)];</div>\n+<div class=\"line\"><a id=\"l00424\" name=\"l00424\"></a><span class=\"lineno\">  424</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00425\" name=\"l00425\"></a><span class=\"lineno\">  425</span> </div>\n+<div class=\"line\"><a id=\"l00426\" name=\"l00426\"></a><span class=\"lineno\">  426</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00427\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00427\" name=\"l00427\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00969.html#a4dacf9da42e80ca546274402a8d3b266\">  427</a></span><a class=\"code hl_function\" href=\"a00969.html#a4dacf9da42e80ca546274402a8d3b266\">VertexDescriptor::SetIncidentFaceEdgeSharpness</a>(<span class=\"keywordtype\">int</span> faceIndex,</div>\n+<div class=\"line\"><a id=\"l00428\" name=\"l00428\"></a><span class=\"lineno\">  428</span>        <span class=\"keywordtype\">float</span> leadingEdgeSharpness, <span class=\"keywordtype\">float</span> trailingEdgeSharpness) {</div>\n+<div class=\"line\"><a id=\"l00429\" name=\"l00429\"></a><span class=\"lineno\">  429</span> </div>\n+<div class=\"line\"><a id=\"l00430\" name=\"l00430\"></a><span class=\"lineno\">  430</span>    <span class=\"keywordflow\">if</span> (!_hasEdgeSharpness) initEdgeSharpness();</div>\n+<div class=\"line\"><a id=\"l00431\" name=\"l00431\"></a><span class=\"lineno\">  431</span> </div>\n+<div class=\"line\"><a id=\"l00432\" name=\"l00432\"></a><span class=\"lineno\">  432</span>    _faceEdgeSharpness[2*faceIndex  ] = leadingEdgeSharpness;</div>\n+<div class=\"line\"><a id=\"l00433\" name=\"l00433\"></a><span class=\"lineno\">  433</span>    _faceEdgeSharpness[2*faceIndex+1] = trailingEdgeSharpness;</div>\n+<div class=\"line\"><a id=\"l00434\" name=\"l00434\"></a><span class=\"lineno\">  434</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00435\" name=\"l00435\"></a><span class=\"lineno\">  435</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00436\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00436\" name=\"l00436\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00969.html#aa57d6053ca61cdf53b36937812b09307\">  436</a></span><a class=\"code hl_function\" href=\"a00969.html#aa57d6053ca61cdf53b36937812b09307\">VertexDescriptor::GetIncidentFaceEdgeSharpness</a>(<span class=\"keywordtype\">int</span> faceIndex,</div>\n+<div class=\"line\"><a id=\"l00437\" name=\"l00437\"></a><span class=\"lineno\">  437</span>        <span class=\"keywordtype\">float</span> * leadingEdgeSharpness, <span class=\"keywordtype\">float</span> * trailingEdgeSharpness)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00438\" name=\"l00438\"></a><span class=\"lineno\">  438</span> </div>\n+<div class=\"line\"><a id=\"l00439\" name=\"l00439\"></a><span class=\"lineno\">  439</span>    *leadingEdgeSharpness  = _faceEdgeSharpness[2*faceIndex];</div>\n+<div class=\"line\"><a id=\"l00440\" name=\"l00440\"></a><span class=\"lineno\">  440</span>    *trailingEdgeSharpness = _faceEdgeSharpness[2*faceIndex+1];</div>\n+<div class=\"line\"><a id=\"l00441\" name=\"l00441\"></a><span class=\"lineno\">  441</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00442\" name=\"l00442\"></a><span class=\"lineno\">  442</span> </div>\n+<div class=\"line\"><a id=\"l00443\" name=\"l00443\"></a><span class=\"lineno\">  443</span>} <span class=\"comment\">// end namespace Bfr</span></div>\n+<div class=\"line\"><a id=\"l00444\" name=\"l00444\"></a><span class=\"lineno\">  444</span> </div>\n+<div class=\"line\"><a id=\"l00445\" name=\"l00445\"></a><span class=\"lineno\">  445</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00446\" name=\"l00446\"></a><span class=\"lineno\">  446</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00447\" name=\"l00447\"></a><span class=\"lineno\">  447</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l00448\" name=\"l00448\"></a><span class=\"lineno\">  448</span> </div>\n+<div class=\"line\"><a id=\"l00449\" name=\"l00449\"></a><span class=\"lineno\">  449</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_BFR_VERTEX_DESCRIPTOR_H */</span><span class=\"preprocessor\"></span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa00969_html\"><div class=\"ttname\"><a href=\"a00969.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::VertexDescriptor</a></div><div class=\"ttdoc\">Simple class used by subclasses of SurfaceFactory to describe a vertex.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00878_source.html#l00131\">vertexDescriptor.h:131</a></div></div>\n+<div class=\"ttc\" id=\"aa00969_html_a03588bdc24a8240380aa0972ecae0ea1\"><div class=\"ttname\"><a href=\"a00969.html#a03588bdc24a8240380aa0972ecae0ea1\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::VertexDescriptor::GetVertexSharpness</a></div><div class=\"ttdeci\">float GetVertexSharpness() const</div><div class=\"ttdoc\">Return the sharpness of the vertex.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00878_source.html#l00386\">vertexDescriptor.h:386</a></div></div>\n+<div class=\"ttc\" id=\"aa00969_html_a0cb0c1f4fa225637898cf1c7420bc064\"><div class=\"ttname\"><a href=\"a00969.html#a0cb0c1f4fa225637898cf1c7420bc064\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::VertexDescriptor::Finalize</a></div><div class=\"ttdeci\">bool Finalize()</div><div class=\"ttdoc\">Terminate the sequence of specifications.</div></div>\n+<div class=\"ttc\" id=\"aa00969_html_a100c73e08e78f4378b34a3f7abd9f1be\"><div class=\"ttname\"><a href=\"a00969.html#a100c73e08e78f4378b34a3f7abd9f1be\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::VertexDescriptor::SetManifold</a></div><div class=\"ttdeci\">void SetManifold(bool isManifold)</div><div class=\"ttdoc\">Declare the vertex neighborhood as manifold (ordered)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00878_source.html#l00325\">vertexDescriptor.h:325</a></div></div>\n+<div class=\"ttc\" id=\"aa00969_html_a1d4a38a2944a3705bfbd325766bda216\"><div class=\"ttname\"><a href=\"a00969.html#a1d4a38a2944a3705bfbd325766bda216\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::VertexDescriptor::Initialize</a></div><div class=\"ttdeci\">bool Initialize(int numIncidentFaces)</div><div class=\"ttdoc\">Initialize specification with the number of incident faces.</div></div>\n+<div class=\"ttc\" id=\"aa00969_html_a28f34ca6c256f1f7fa44e862540ec421\"><div class=\"ttname\"><a href=\"a00969.html#a28f34ca6c256f1f7fa44e862540ec421\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::VertexDescriptor::IsManifold</a></div><div class=\"ttdeci\">bool IsManifold() const</div><div class=\"ttdoc\">Return if vertex neighborhood is manifold.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00878_source.html#l00329\">vertexDescriptor.h:329</a></div></div>\n+<div class=\"ttc\" id=\"aa00969_html_a2c6d182581c88931784f62fe2b8ae666\"><div class=\"ttname\"><a href=\"a00969.html#a2c6d182581c88931784f62fe2b8ae666\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::VertexDescriptor::HasEdgeSharpness</a></div><div class=\"ttdeci\">bool HasEdgeSharpness() const</div><div class=\"ttdoc\">Return if sharpness was assigned to the incident edges.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00878_source.html#l00394\">vertexDescriptor.h:394</a></div></div>\n+<div class=\"ttc\" id=\"aa00969_html_a434afb577a5e287b615364d94d124e84\"><div class=\"ttname\"><a href=\"a00969.html#a434afb577a5e287b615364d94d124e84\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::VertexDescriptor::GetIncidentFaceSize</a></div><div class=\"ttdeci\">int GetIncidentFaceSize(int faceIndex) const</div><div class=\"ttdoc\">Return the size of an incident face.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00878_source.html#l00362\">vertexDescriptor.h:362</a></div></div>\n+<div class=\"ttc\" id=\"aa00969_html_a460ea7c821fd4c2522de6503f9c25866\"><div class=\"ttname\"><a href=\"a00969.html#a460ea7c821fd4c2522de6503f9c25866\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::VertexDescriptor::GetManifoldEdgeSharpness</a></div><div class=\"ttdeci\">float GetManifoldEdgeSharpness(int edgeIndex) const</div><div class=\"ttdoc\">Return the sharpness assigned to a manifold edge.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00878_source.html#l00420\">vertexDescriptor.h:420</a></div></div>\n+<div class=\"ttc\" id=\"aa00969_html_a4dacf9da42e80ca546274402a8d3b266\"><div class=\"ttname\"><a href=\"a00969.html#a4dacf9da42e80ca546274402a8d3b266\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::VertexDescriptor::SetIncidentFaceEdgeSharpness</a></div><div class=\"ttdeci\">void SetIncidentFaceEdgeSharpness(int faceIndex, float leadingEdgeSharp, float trailingEdgeSharp)</div><div class=\"ttdoc\">Assign sharpness to the edges of an incident face.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00878_source.html#l00427\">vertexDescriptor.h:427</a></div></div>\n+<div class=\"ttc\" id=\"aa00969_html_a4f46be1cfd41b34d8808363c83e9ff56\"><div class=\"ttname\"><a href=\"a00969.html#a4f46be1cfd41b34d8808363c83e9ff56\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::VertexDescriptor::HasVertexSharpness</a></div><div class=\"ttdeci\">bool HasVertexSharpness() const</div><div class=\"ttdoc\">Return if sharpness was assigned to the vertex.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00878_source.html#l00373\">vertexDescriptor.h:373</a></div></div>\n+<div class=\"ttc\" id=\"aa00969_html_a5c719e43580059139938a6ed0f851853\"><div class=\"ttname\"><a href=\"a00969.html#a5c719e43580059139938a6ed0f851853\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::VertexDescriptor::ClearIncidentFaceSizes</a></div><div class=\"ttdeci\">void ClearIncidentFaceSizes()</div><div class=\"ttdoc\">Remove any assigned sizes of incident faces.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00878_source.html#l00350\">vertexDescriptor.h:350</a></div></div>\n+<div class=\"ttc\" id=\"aa00969_html_a5f2854209dd55d5c420b1a7282da8793\"><div class=\"ttname\"><a href=\"a00969.html#a5f2854209dd55d5c420b1a7282da8793\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::VertexDescriptor::SetVertexSharpness</a></div><div class=\"ttdeci\">void SetVertexSharpness(float sharpness)</div><div class=\"ttdoc\">Assign sharpness to the vertex.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00878_source.html#l00382\">vertexDescriptor.h:382</a></div></div>\n+<div class=\"ttc\" id=\"aa00969_html_a68afc60df5a617f5d7e1580548b72f9b\"><div class=\"ttname\"><a href=\"a00969.html#a68afc60df5a617f5d7e1580548b72f9b\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::VertexDescriptor::ClearVertexSharpness</a></div><div class=\"ttdeci\">void ClearVertexSharpness()</div><div class=\"ttdoc\">Remove any sharpness assigned to the vertex.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00878_source.html#l00377\">vertexDescriptor.h:377</a></div></div>\n+<div class=\"ttc\" id=\"aa00969_html_a831025d6d817c4afb1df7d5a705af378\"><div class=\"ttname\"><a href=\"a00969.html#a831025d6d817c4afb1df7d5a705af378\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::VertexDescriptor::ClearEdgeSharpness</a></div><div class=\"ttdeci\">void ClearEdgeSharpness()</div><div class=\"ttdoc\">Remove any sharpness assigned to the incident edges.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00878_source.html#l00398\">vertexDescriptor.h:398</a></div></div>\n+<div class=\"ttc\" id=\"aa00969_html_aa57d6053ca61cdf53b36937812b09307\"><div class=\"ttname\"><a href=\"a00969.html#aa57d6053ca61cdf53b36937812b09307\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::VertexDescriptor::GetIncidentFaceEdgeSharpness</a></div><div class=\"ttdeci\">void GetIncidentFaceEdgeSharpness(int faceIndex, float *leadingEdgeSharp, float *trailingEdgeSharp) const</div><div class=\"ttdoc\">Return the sharpness assigned to edges of an incident face.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00878_source.html#l00436\">vertexDescriptor.h:436</a></div></div>\n+<div class=\"ttc\" id=\"aa00969_html_ab744a59a71fffcff3e745c2c679aec29\"><div class=\"ttname\"><a href=\"a00969.html#ab744a59a71fffcff3e745c2c679aec29\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::VertexDescriptor::IsBoundary</a></div><div class=\"ttdeci\">bool IsBoundary() const</div><div class=\"ttdoc\">Return if vertex neighborhood is on a boundary.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00878_source.html#l00338\">vertexDescriptor.h:338</a></div></div>\n+<div class=\"ttc\" id=\"aa00969_html_ac532c4b500b1a85ea22217f2c65a70ed\"><div class=\"ttname\"><a href=\"a00969.html#ac532c4b500b1a85ea22217f2c65a70ed\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::VertexDescriptor::IsValid</a></div><div class=\"ttdeci\">bool IsValid() const</div><div class=\"ttdoc\">Return if instance is valid.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00878_source.html#l00320\">vertexDescriptor.h:320</a></div></div>\n+<div class=\"ttc\" id=\"aa00969_html_ad56c50bc5582768806d7890c55b63141\"><div class=\"ttname\"><a href=\"a00969.html#ad56c50bc5582768806d7890c55b63141\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::VertexDescriptor::HasIncidentFaceSizes</a></div><div class=\"ttdeci\">bool HasIncidentFaceSizes() const</div><div class=\"ttdoc\">Return if the sizes of incident faces are assigned.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00878_source.html#l00346\">vertexDescriptor.h:346</a></div></div>\n+<div class=\"ttc\" id=\"aa00969_html_ae228420c7ad83f58aad85b1268518df8\"><div class=\"ttname\"><a href=\"a00969.html#ae228420c7ad83f58aad85b1268518df8\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::VertexDescriptor::SetBoundary</a></div><div class=\"ttdeci\">void SetBoundary(bool isOnBoundary)</div><div class=\"ttdoc\">Declare the vertex neighborhood as being on a boundary.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00878_source.html#l00334\">vertexDescriptor.h:334</a></div></div>\n+<div class=\"ttc\" id=\"aa00969_html_ae9fae0d6843ce883db4c377d19dd61a8\"><div class=\"ttname\"><a href=\"a00969.html#ae9fae0d6843ce883db4c377d19dd61a8\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::VertexDescriptor::SetIncidentFaceSize</a></div><div class=\"ttdeci\">void SetIncidentFaceSize(int faceIndex, int faceSize)</div><div class=\"ttdoc\">Assign the size of an incident face.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00878_source.html#l00355\">vertexDescriptor.h:355</a></div></div>\n+<div class=\"ttc\" id=\"aa00969_html_aea91b4a9e7032d4fce2434c93ae2983a\"><div class=\"ttname\"><a href=\"a00969.html#aea91b4a9e7032d4fce2434c93ae2983a\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::VertexDescriptor::SetManifoldEdgeSharpness</a></div><div class=\"ttdeci\">void SetManifoldEdgeSharpness(int edgeIndex, float edgeSharpness)</div><div class=\"ttdoc\">Assign sharpness to the edge of a manifold neighborhood.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00878_source.html#l00403\">vertexDescriptor.h:403</a></div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00878.html\">glMesh.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_fa5edef2a780a73fbfb6a11f1af88ceb.html\">bfr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00878.html\">vertexDescriptor.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-glMesh.h\n+vertexDescriptor.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2013 Pixar\n+2// Copyright 2021 Pixar\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -24,42 +24,446 @@\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n 24\n-25#ifndef OPENSUBDIV3_OSD_GL_MESH_H\n-26#define OPENSUBDIV3_OSD_GL_MESH_H\n+25#ifndef OPENSUBDIV3_BFR_VERTEX_DESCRIPTOR_H\n+26#define OPENSUBDIV3_BFR_VERTEX_DESCRIPTOR_H\n 27\n 28#include \"../version.h\"\n 29\n-30#include \"../osd/mesh.h\"\n-31#include \"../osd/glPatchTable.h\"\n-32\n-33namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-34namespace OPENSUBDIV_VERSION {\n-35\n-36namespace Osd {\n-37\n-_\b3_\b8typedef _\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be_\b<_\bG_\bL_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b> _\bG_\bL_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be;\n-39\n-40\n-41} // end namespace Osd\n-42\n-43} // end namespace OPENSUBDIV_VERSION\n-44using namespace OPENSUBDIV_VERSION;\n-45\n-46} // end namespace OpenSubdiv\n-47\n-48#endif // OPENSUBDIV3_OSD_GL_MESH_H\n+30#include \"../vtr/stackBuffer.h\"\n+31\n+32namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+33namespace OPENSUBDIV_VERSION {\n+34\n+35namespace Bfr {\n+36\n+50//\n+51// WIP - need to migrate some of these comments into Doxygen\n+52// - others will be moved to the external documentation\n+53//\n+54// It is used by subclasses of SurfaceFactory to provide a complete\n+55// topological description for each vertex of a face, i.e. invoked via\n+56// the virtual method:\n+57//\n+58// int populateFaceVertexDescriptor(Index baseFace,\n+59// int cornerVertex,\n+60// VertexDescriptor & v) const;\n+61//\n+62// Assignment of the full topology can be involved in the presence of\n+63// irregular faces, non-manifold topology or creasing around a vertex, but\n+64// many cases will be simple. For example, to specify a regular boundary\n+65// vertex of a Catmark mesh without any optional sharpness:\n+66//\n+67// int numIncidentFaces = 2;\n+68// bool vertexOnBoundary = true;\n+69//\n+70// vd.Initialize(numIncidentFaces);\n+71// vd.SetManifold(true);\n+72// vd.SetBoundary(vertexOnBoundary);\n+73// vd.ClearIncidentFaceSizes();\n+74// vd.Finalize();\n+75//\n+76// For a more general example, to assign a vertex of some valence whose\n+77// incident faces are of different sizes (e.g. required when triangles\n+78// appear around a vertex in an otherwise quad-dominant Catmark mesh):\n+79//\n+80// int numIncidentFaces = meshVertex.GetNumIncidentFaces();\n+81// bool vertexOnBoundary = meshVertex.IsBoundar();\n+82//\n+83// vd.Initialize(numIncidentFaces);\n+84// vd.SetManifold(true);\n+85// vd.SetBoundary(vertexOnBoundary);\n+86//\n+87// for (int i = 0; i < numIncidentFaces; ++i) {\n+88// vd.SetIncidentFaceSize(i, meshVertex.GetIncidentFaceSize(i));\n+89// }\n+90// vd.Finalize();\n+91//\n+92// These examples specify the incident faces as forming a manifold ring\n+93// (or half-ring) around the vertex, i.e. they can be specified as a\n+94// continuous, connected sequence in counter-clockwise order (and also\n+95// without degeneracies). In the case of a boundary vertex, the first\n+96// face must be on the leading edge of the boundary while the last is on\n+97// the trailing edge. For an interior vertex, which face is specified\n+98// first does not matter (since the set is periodic).\n+99//\n+100// In both cases, the location of the base face in this sequence -- the\n+101// face whose corner vertex is being described here -- must be specified\n+102// in the return value to populateFaceVertexDescriptor() (e.g. when a\n+103// boundary vertex has 3 incident faces, a return value of 0, 1 or 2\n+104// will indicate which is the base face).\n+105//\n+106// The corresponding methods to specify mesh control vertex indices (or\n+107// face-varying indices) complete the specification of the neighborhood:\n+108//\n+109// int getFaceCornerVertexIndices(Index baseFace, int cornerVertex,\n+110// Index vertexIndices[]) const;\n+111//\n+112// int getFaceCornerFVarValueIndices(Index baseFace, int cornerVertex,\n+113// Index fvarValueIndices[],\n+114// int fvarChannel) const;\n+115//\n+116// and are invoked by the Factory when needed.\n+117//\n+118// For each incident face, the indices for all vertices of that face are\n+119// to be specified (not the one-ring or some other subset). These indices\n+120// must also be specified in an orientation relative to the vertex, i.e.\n+121// for a vertex A and an incident face with face-vertices that may be\n+122// stored internally as {D, C, A, B}, they must be specified with A first\n+123// as {A, B, C, D}. This may seem a bit cumbersome, but it has clear\n+124// advantages when dealing with face-varying indices and unordered faces.\n+125//\n+126// More compact ways of specifying vertex indices for ordered, manifold\n+127// cases may be worth exploring in future, but face-varying indices and\n+128// non-manifold (unordered) vertices will always require such a full set,\n+129// so both methods will need to co-exist.\n+130//\n+_\b1_\b3_\b1class _\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br {\n+132public:\n+133 // The full declaration must be enclosed by calls to these methods:\n+134 //\n+135 // Note that vertex valences or face sizes in excess of those defined\n+136 // in Bfr::Limits (typically 16-bits) are not valid. When specifying\n+137 // values in excess of these limits, initialization will fail and/or\n+138 // the descriptor will be marked invalid and finalization will fail.\n+139 //\n+140\n+142\n+149\n+_\b1_\b5_\b1 bool _\bI_\bn_\bi_\bt_\bi_\ba_\bl_\bi_\bz_\be(int numIncidentFaces);\n+152\n+_\b1_\b5_\b4 bool _\bF_\bi_\bn_\ba_\bl_\bi_\bz_\be();\n+155\n+157 bool _\bI_\bs_\bV_\ba_\bl_\bi_\bd() const;\n+159\n+160 //\n+161 // WIP - need to migrate these comments into Doxygen\n+162 //\n+163 // Three groups of methods describe the topology around a vertex:\n+164 // - simple properties (vertex is a boundary, manifold, etc.)\n+165 // - sizes of incident faces (constant or size for each face)\n+166 // - sharpness of the vertex and its incident edges (optional)\n+167 //\n+168\n+169 // Manifold and boundary conditions:\n+170 //\n+171 // The manifold property is a strict condition but preferred for\n+172 // efficiency and is usually available from common connected mesh\n+173 // representations. When declaring the topology as \"manifold\",\n+174 // the Factory assumes the following:\n+175 //\n+176 // - all incident faces are \"ordered\" (counter-clockwise)\n+177 // - all incident faces are consistently oriented\n+178 // - all incident edges are non-degenerate\n+179 //\n+180 // If not certain that all of these conditions are met, it is best\n+181 // to not declare manifold -- leaving the Factory to make sense of\n+182 // the set of incident faces from the face-vertex indices that are\n+183 // provided elsewhere.\n+184 //\n+185\n+187\n+191\n+193 void _\bS_\be_\bt_\bM_\ba_\bn_\bi_\bf_\bo_\bl_\bd(bool isManifold);\n+194\n+196 void _\bS_\be_\bt_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by(bool isOnBoundary);\n+197\n+199 void _\bS_\be_\bt_\bI_\bn_\bc_\bi_\bd_\be_\bn_\bt_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be(int faceIndex, int faceSize);\n+200\n+202 void _\bC_\bl_\be_\ba_\br_\bI_\bn_\bc_\bi_\bd_\be_\bn_\bt_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be_\bs();\n+203\n+205 void _\bS_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs(float sharpness);\n+206\n+208 void _\bC_\bl_\be_\ba_\br_\bV_\be_\br_\bt_\be_\bx_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs();\n+209\n+221 void _\bS_\be_\bt_\bM_\ba_\bn_\bi_\bf_\bo_\bl_\bd_\bE_\bd_\bg_\be_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs(int edgeIndex, float edgeSharpness);\n+222\n+238 void _\bS_\be_\bt_\bI_\bn_\bc_\bi_\bd_\be_\bn_\bt_\bF_\ba_\bc_\be_\bE_\bd_\bg_\be_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs(int faceIndex, float leadingEdgeSharp,\n+239 float trailingEdgeSharp);\n+240\n+242 void _\bC_\bl_\be_\ba_\br_\bE_\bd_\bg_\be_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs();\n+244\n+246\n+251\n+253 bool _\bI_\bs_\bM_\ba_\bn_\bi_\bf_\bo_\bl_\bd() const;\n+254\n+256 bool _\bI_\bs_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by() const;\n+257\n+259 bool _\bH_\ba_\bs_\bI_\bn_\bc_\bi_\bd_\be_\bn_\bt_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be_\bs() const;\n+260\n+262 int _\bG_\be_\bt_\bI_\bn_\bc_\bi_\bd_\be_\bn_\bt_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be(int faceIndex) const;\n+263\n+265 bool _\bH_\ba_\bs_\bV_\be_\br_\bt_\be_\bx_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs() const;\n+266\n+268 float _\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs() const;\n+269\n+271 bool _\bH_\ba_\bs_\bE_\bd_\bg_\be_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs() const;\n+272\n+274 float _\bG_\be_\bt_\bM_\ba_\bn_\bi_\bf_\bo_\bl_\bd_\bE_\bd_\bg_\be_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs(int edgeIndex) const;\n+275\n+277 void _\bG_\be_\bt_\bI_\bn_\bc_\bi_\bd_\be_\bn_\bt_\bF_\ba_\bc_\be_\bE_\bd_\bg_\be_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs(int faceIndex,\n+278 float * leadingEdgeSharp, float * trailingEdgeSharp) const;\n+280\n+281protected:\n+283 friend class FaceVertex;\n+284\n+285 _\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br() { }\n+286 _\b~_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br() { }\n+287\n+288 typedef Vtr::internal::StackBuffer<int,8,true> IntBuffer;\n+289 typedef Vtr::internal::StackBuffer<float,16,true> FloatBuffer;\n+290\n+291 void initFaceSizes();\n+292 void initEdgeSharpness();\n+294\n+295protected:\n+297 // Member variables assigned through the above interface:\n+298 unsigned short _isValid : 1;\n+299 unsigned short _isInitialized : 1;\n+300 unsigned short _isFinalized : 1;\n+301\n+302 unsigned short _isManifold : 1;\n+303 unsigned short _isBoundary : 1;\n+304\n+305 unsigned short _hasFaceSizes : 1;\n+306 unsigned short _hasEdgeSharpness : 1;\n+307\n+308 short _numFaces;\n+309 float _vertSharpness;\n+310\n+311 FloatBuffer _faceEdgeSharpness;\n+312 IntBuffer _faceSizeOffsets;\n+314};\n+315\n+316//\n+317// Public inline methods for simple assignment:\n+318//\n+319inline bool\n+_\b3_\b2_\b0_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bI_\bs_\bV_\ba_\bl_\bi_\bd() const {\n+321 return _isValid;\n+322}\n+323\n+324inline void\n+_\b3_\b2_\b5_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bS_\be_\bt_\bM_\ba_\bn_\bi_\bf_\bo_\bl_\bd(bool isManifold) {\n+326 _isManifold = isManifold;\n+327}\n+328inline bool\n+_\b3_\b2_\b9_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bI_\bs_\bM_\ba_\bn_\bi_\bf_\bo_\bl_\bd() const {\n+330 return _isManifold;\n+331}\n+332\n+333inline void\n+_\b3_\b3_\b4_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bS_\be_\bt_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by(bool isBoundary) {\n+335 _isBoundary = isBoundary;\n+336}\n+337inline bool\n+_\b3_\b3_\b8_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bI_\bs_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by() const {\n+339 return _isBoundary;\n+340}\n+341\n+342//\n+343// Public inline methods involving sizes of incident faces:\n+344//\n+345inline bool\n+_\b3_\b4_\b6_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bH_\ba_\bs_\bI_\bn_\bc_\bi_\bd_\be_\bn_\bt_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be_\bs() const {\n+347 return _hasFaceSizes;\n+348}\n+349inline void\n+_\b3_\b5_\b0_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bC_\bl_\be_\ba_\br_\bI_\bn_\bc_\bi_\bd_\be_\bn_\bt_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be_\bs() {\n+351 _hasFaceSizes = false;\n+352}\n+353\n+354inline void\n+_\b3_\b5_\b5_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bS_\be_\bt_\bI_\bn_\bc_\bi_\bd_\be_\bn_\bt_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be(int incFaceIndex, int faceSize) {\n+356\n+357 if (!_hasFaceSizes) initFaceSizes();\n+358\n+359 _faceSizeOffsets[incFaceIndex] = faceSize;\n+360}\n+361inline int\n+_\b3_\b6_\b2_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bG_\be_\bt_\bI_\bn_\bc_\bi_\bd_\be_\bn_\bt_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be(int incFaceIndex) const {\n+363\n+364 return _isFinalized ?\n+365 (_faceSizeOffsets[incFaceIndex+1] - _faceSizeOffsets[incFaceIndex]) :\n+366 _faceSizeOffsets[incFaceIndex];\n+367}\n+368\n+369//\n+370// Public inline methods involving vertex sharpness:\n+371//\n+372inline bool\n+_\b3_\b7_\b3_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bH_\ba_\bs_\bV_\be_\br_\bt_\be_\bx_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs() const {\n+374 return _vertSharpness > 0.0f;\n+375}\n+376inline void\n+_\b3_\b7_\b7_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bC_\bl_\be_\ba_\br_\bV_\be_\br_\bt_\be_\bx_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs() {\n+378 _vertSharpness = 0.0f;\n+379}\n+380\n+381inline void\n+_\b3_\b8_\b2_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bS_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs(float vertSharpness) {\n+383 _vertSharpness = vertSharpness;\n+384}\n+385inline float\n+_\b3_\b8_\b6_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs() const {\n+387 return _vertSharpness;\n+388}\n+389\n+390//\n+391// Public inline methods involving vertex sharpness:\n+392//\n+393inline bool\n+_\b3_\b9_\b4_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bH_\ba_\bs_\bE_\bd_\bg_\be_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs() const {\n+395 return _hasEdgeSharpness;\n+396}\n+397inline void\n+_\b3_\b9_\b8_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bC_\bl_\be_\ba_\br_\bE_\bd_\bg_\be_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs() {\n+399 _hasEdgeSharpness = false;\n+400}\n+401\n+402inline void\n+_\b4_\b0_\b3_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bS_\be_\bt_\bM_\ba_\bn_\bi_\bf_\bo_\bl_\bd_\bE_\bd_\bg_\be_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs(int edgeIndex, float sharpness) {\n+404\n+405 if (!_hasEdgeSharpness) initEdgeSharpness();\n+406\n+407 // Assign the leading edge of the face after the edge (even index):\n+408 if (edgeIndex < _numFaces) {\n+409 _faceEdgeSharpness[2*edgeIndex] = sharpness;\n+410 }\n+411\n+412 // Assign the trailing edge of the face before the edge (odd index):\n+413 if (edgeIndex > 0) {\n+414 _faceEdgeSharpness[2*edgeIndex-1] = sharpness;\n+415 } else if (!_\bI_\bs_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by()) {\n+416 _faceEdgeSharpness[2*_numFaces-1] = sharpness;\n+417 }\n+418}\n+419inline float\n+_\b4_\b2_\b0_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bG_\be_\bt_\bM_\ba_\bn_\bi_\bf_\bo_\bl_\bd_\bE_\bd_\bg_\be_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs(int edgeIndex) const {\n+421\n+422 // All edges are first of the pair (even index) except last of boundary\n+423 return _faceEdgeSharpness[2*edgeIndex - (edgeIndex == _numFaces)];\n+424}\n+425\n+426inline void\n+_\b4_\b2_\b7_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bS_\be_\bt_\bI_\bn_\bc_\bi_\bd_\be_\bn_\bt_\bF_\ba_\bc_\be_\bE_\bd_\bg_\be_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs(int faceIndex,\n+428 float leadingEdgeSharpness, float trailingEdgeSharpness) {\n+429\n+430 if (!_hasEdgeSharpness) initEdgeSharpness();\n+431\n+432 _faceEdgeSharpness[2*faceIndex ] = leadingEdgeSharpness;\n+433 _faceEdgeSharpness[2*faceIndex+1] = trailingEdgeSharpness;\n+434}\n+435inline void\n+_\b4_\b3_\b6_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bG_\be_\bt_\bI_\bn_\bc_\bi_\bd_\be_\bn_\bt_\bF_\ba_\bc_\be_\bE_\bd_\bg_\be_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs(int faceIndex,\n+437 float * leadingEdgeSharpness, float * trailingEdgeSharpness) const {\n+438\n+439 *leadingEdgeSharpness = _faceEdgeSharpness[2*faceIndex];\n+440 *trailingEdgeSharpness = _faceEdgeSharpness[2*faceIndex+1];\n+441}\n+442\n+443} // end namespace Bfr\n+444\n+445} // end namespace OPENSUBDIV_VERSION\n+446using namespace OPENSUBDIV_VERSION;\n+447} // end namespace OpenSubdiv\n+448\n+449#endif /* OPENSUBDIV3_BFR_VERTEX_DESCRIPTOR_H */\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-MeshInterface< GLPatchTable > GLMeshInterface\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bM_\be_\bs_\bh_\b._\bh_\b:_\b3_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\be_\bs_\bh_\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\be_\bs_\bh_\b._\bh_\b:_\b6_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n+Simple class used by subclasses of SurfaceFactory to describe a vertex.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bv_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b1_\b3_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs\n+float GetVertexSharpness() const\n+Return the sharpness of the vertex.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bv_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b3_\b8_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bF_\bi_\bn_\ba_\bl_\bi_\bz_\be\n+bool Finalize()\n+Terminate the sequence of specifications.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bS_\be_\bt_\bM_\ba_\bn_\bi_\bf_\bo_\bl_\bd\n+void SetManifold(bool isManifold)\n+Declare the vertex neighborhood as manifold (ordered)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bv_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b3_\b2_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bI_\bn_\bi_\bt_\bi_\ba_\bl_\bi_\bz_\be\n+bool Initialize(int numIncidentFaces)\n+Initialize specification with the number of incident faces.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bI_\bs_\bM_\ba_\bn_\bi_\bf_\bo_\bl_\bd\n+bool IsManifold() const\n+Return if vertex neighborhood is manifold.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bv_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b3_\b2_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bH_\ba_\bs_\bE_\bd_\bg_\be_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs\n+bool HasEdgeSharpness() const\n+Return if sharpness was assigned to the incident edges.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bv_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b3_\b9_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bG_\be_\bt_\bI_\bn_\bc_\bi_\bd_\be_\bn_\bt_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be\n+int GetIncidentFaceSize(int faceIndex) const\n+Return the size of an incident face.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bv_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b3_\b6_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bG_\be_\bt_\bM_\ba_\bn_\bi_\bf_\bo_\bl_\bd_\bE_\bd_\bg_\be_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs\n+float GetManifoldEdgeSharpness(int edgeIndex) const\n+Return the sharpness assigned to a manifold edge.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bv_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b4_\b2_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:\n+_\bS_\be_\bt_\bI_\bn_\bc_\bi_\bd_\be_\bn_\bt_\bF_\ba_\bc_\be_\bE_\bd_\bg_\be_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs\n+void SetIncidentFaceEdgeSharpness(int faceIndex, float leadingEdgeSharp, float\n+trailingEdgeSharp)\n+Assign sharpness to the edges of an incident face.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bv_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b4_\b2_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bH_\ba_\bs_\bV_\be_\br_\bt_\be_\bx_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs\n+bool HasVertexSharpness() const\n+Return if sharpness was assigned to the vertex.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bv_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b3_\b7_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bC_\bl_\be_\ba_\br_\bI_\bn_\bc_\bi_\bd_\be_\bn_\bt_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be_\bs\n+void ClearIncidentFaceSizes()\n+Remove any assigned sizes of incident faces.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bv_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b3_\b5_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bS_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs\n+void SetVertexSharpness(float sharpness)\n+Assign sharpness to the vertex.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bv_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b3_\b8_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bC_\bl_\be_\ba_\br_\bV_\be_\br_\bt_\be_\bx_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs\n+void ClearVertexSharpness()\n+Remove any sharpness assigned to the vertex.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bv_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b3_\b7_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bC_\bl_\be_\ba_\br_\bE_\bd_\bg_\be_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs\n+void ClearEdgeSharpness()\n+Remove any sharpness assigned to the incident edges.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bv_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b3_\b9_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:\n+_\bG_\be_\bt_\bI_\bn_\bc_\bi_\bd_\be_\bn_\bt_\bF_\ba_\bc_\be_\bE_\bd_\bg_\be_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs\n+void GetIncidentFaceEdgeSharpness(int faceIndex, float *leadingEdgeSharp, float\n+*trailingEdgeSharp) const\n+Return the sharpness assigned to edges of an incident face.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bv_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b4_\b3_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bI_\bs_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by\n+bool IsBoundary() const\n+Return if vertex neighborhood is on a boundary.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bv_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b3_\b3_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bI_\bs_\bV_\ba_\bl_\bi_\bd\n+bool IsValid() const\n+Return if instance is valid.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bv_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b3_\b2_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bH_\ba_\bs_\bI_\bn_\bc_\bi_\bd_\be_\bn_\bt_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be_\bs\n+bool HasIncidentFaceSizes() const\n+Return if the sizes of incident faces are assigned.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bv_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b3_\b4_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bS_\be_\bt_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by\n+void SetBoundary(bool isOnBoundary)\n+Declare the vertex neighborhood as being on a boundary.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bv_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b3_\b3_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bS_\be_\bt_\bI_\bn_\bc_\bi_\bd_\be_\bn_\bt_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be\n+void SetIncidentFaceSize(int faceIndex, int faceSize)\n+Assign the size of an incident face.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bv_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b3_\b5_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bS_\be_\bt_\bM_\ba_\bn_\bi_\bf_\bo_\bl_\bd_\bE_\bd_\bg_\be_\bS_\bh_\ba_\br_\bp_\bn_\be_\bs_\bs\n+void SetManifoldEdgeSharpness(int edgeIndex, float edgeSharpness)\n+Assign sharpness to the edge of a manifold neighborhood.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bv_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b4_\b0_\b3\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bg_\bl_\bM_\be_\bs_\bh_\b._\bh\n+    * _\bb_\bf_\br\n+    * _\bv_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00881.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00881.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/clVertexBuffer.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/bfr/surfaceFactory.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -90,41 +90,48 @@\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> &#124;\n <a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">clVertexBuffer.h File Reference</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">surfaceFactory.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00845_source.html\">../osd/opencl.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00887_source.html\">../bfr/surface.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00893_source.html\">../bfr/surfaceFactoryMeshAdapter.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00860_source.html\">../sdc/options.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a01492_source.html\">../sdc/types.h</a>&quot;</code><br />\n+<code>#include &lt;cstdint&gt;</code><br />\n </div>\n <p><a href=\"a00881_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01157.html\">CLVertexBuffer</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Concrete vertex buffer class for OpenCL subdivision.  <a href=\"a01157.html#details\">More...</a><br /></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00941.html\">SurfaceFactory</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Base class providing initialization of a <a class=\"el\" href=\"a00933.html\" title=\"Encapsulates the limit surface for a face of a mesh.\">Surface</a> for each face of a mesh.  <a href=\"a00941.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00945.html\">SurfaceFactory::Options</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Simple set of options assigned to instances of <a class=\"el\" href=\"a00941.html\" title=\"Base class providing initialization of a Surface for each face of a mesh.\">SurfaceFactory</a>.  <a href=\"a00945.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n+<tr class=\"memitem:a00907\" id=\"r_a00907\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00907.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00881.html\">clVertexBuffer.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_fa5edef2a780a73fbfb6a11f1af88ceb.html\">bfr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00881.html\">surfaceFactory.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,24 +1,32 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-clVertexBuffer.h File Reference\n+surfaceFactory.h File Reference\n #include \"../version.h\"\n-#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bo_\bp_\be_\bn_\bc_\bl_\b._\bh\"\n+#include \"_\b._\b._\b/_\bb_\bf_\br_\b/_\bs_\bu_\br_\bf_\ba_\bc_\be_\b._\bh\"\n+#include \"_\b._\b._\b/_\bb_\bf_\br_\b/_\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b._\bh\"\n+#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh\"\n+#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n+#include <cstdint>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bC_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-\u00a0       Concrete vertex buffer class for OpenCL subdivision. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by\n+\u00a0       Base class providing initialization of a _\bS_\bu_\br_\bf_\ba_\bc_\be for each face of a\n+        mesh. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n+\u00a0       Simple set of options assigned to instances of _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bc_\bl_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh\n+    * _\bb_\bf_\br\n+    * _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00881.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00881.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,3 +1,4 @@\n var a00881 = [\n-    [\"CLVertexBuffer\", \"a01157.html\", \"a01157\"]\n+    [\"SurfaceFactory\", \"a00941.html\", \"a00941\"],\n+    [\"Options\", \"a00945.html\", \"a00945\"]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00881_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00881_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/clVertexBuffer.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/bfr/surfaceFactory.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">clVertexBuffer.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">surfaceFactory.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00881.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2013 Pixar</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2021 Pixar</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -119,95 +119,412 @@\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_CL_VERTEX_BUFFER_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_CL_VERTEX_BUFFER_H</span></div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_BFR_SURFACE_FACTORY_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_BFR_SURFACE_FACTORY_H</span></div>\n <div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n <div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#include &quot;../osd/opencl.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span> </div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">namespace </span>Osd {</div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00042\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01157.html\">   42</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01157.html\">CLVertexBuffer</a> {</div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span> </div>\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01157.html#ac5f331ad354f94f90a08a928f7f57bba\">   46</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01157.html\">CLVertexBuffer</a> * <a class=\"code hl_function\" href=\"a01157.html#ac5f331ad354f94f90a08a928f7f57bba\">Create</a>(<span class=\"keywordtype\">int</span> numElements, <span class=\"keywordtype\">int</span> numVertices, cl_context clContext);</div>\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span> </div>\n-<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00049\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01157.html#ad1ac8e33d52862dac84a2da1483fee51\">   49</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01157.html\">CLVertexBuffer</a> * <a class=\"code hl_function\" href=\"a01157.html#ad1ac8e33d52862dac84a2da1483fee51\">Create</a>(<span class=\"keywordtype\">int</span> numElements, <span class=\"keywordtype\">int</span> numVertices,</div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span>                                   DEVICE_CONTEXT context) {</div>\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01157.html#ac5f331ad354f94f90a08a928f7f57bba\">Create</a>(numElements, numVertices, context-&gt;GetContext());</div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span> </div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01157.html#a4801ba3ea81294d3e7e3da970863896e\">   55</a></span>    <a class=\"code hl_function\" href=\"a01157.html#a4801ba3ea81294d3e7e3da970863896e\">~CLVertexBuffer</a>();</div>\n-<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span> </div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01157.html#a7259d1296f30e13d171cd892708d8d0a\">   59</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01157.html#a7259d1296f30e13d171cd892708d8d0a\">UpdateData</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <span class=\"keywordtype\">int</span> startVertex, <span class=\"keywordtype\">int</span> numVertices, cl_command_queue clQueue, </div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span>        cl_event* startEvents = NULL, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents = 0, cl_event* endEvent = NULL);</div>\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span> </div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span>    <span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00063\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01157.html#a2cf1549497a0e50dde24baad4792e08c\">   63</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01157.html#a2cf1549497a0e50dde24baad4792e08c\">UpdateData</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <span class=\"keywordtype\">int</span> startVertex, <span class=\"keywordtype\">int</span> numVertices,</div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span>                    DEVICE_CONTEXT context, </div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span>                    cl_event* startEvents = NULL, <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> numStartEvents = 0, cl_event* endEvent = NULL) {</div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span>        <a class=\"code hl_function\" href=\"a01157.html#a7259d1296f30e13d171cd892708d8d0a\">UpdateData</a>(src, startVertex, numVertices, context-&gt;GetCommandQueue(), startEvents, numStartEvents, endEvent);</div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span> </div>\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01157.html#a77cee40767fd4936f20a8f9d9d9ea625\">   70</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01157.html#a77cee40767fd4936f20a8f9d9d9ea625\">GetNumElements</a>() <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span> </div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01157.html#aaf4a32b8a414eff77000c584c2015cb7\">   73</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01157.html#aaf4a32b8a414eff77000c584c2015cb7\">GetNumVertices</a>() <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span> </div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01157.html#ad9c25d5b96f9d5e971f677d32b406ec6\">   76</a></span>    cl_mem <a class=\"code hl_function\" href=\"a01157.html#ad9c25d5b96f9d5e971f677d32b406ec6\">BindCLBuffer</a>(cl_command_queue queue);</div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span> </div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span><span class=\"keyword\">protected</span>:</div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01157.html#a48e2b665b557d5f3f838bc552152160b\">   80</a></span>    <a class=\"code hl_function\" href=\"a01157.html#a48e2b665b557d5f3f838bc552152160b\">CLVertexBuffer</a>(<span class=\"keywordtype\">int</span> numElements, <span class=\"keywordtype\">int</span> numVertices, cl_context clContext);</div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span> </div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01157.html#a7ff15d15ad0fe31e5cb9a1e6c19f09b0\">   84</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01157.html#a7ff15d15ad0fe31e5cb9a1e6c19f09b0\">allocate</a>(cl_context clContext);</div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span> </div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>    <span class=\"keywordtype\">int</span> _numElements;</div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>    <span class=\"keywordtype\">int</span> _numVertices;</div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>    cl_mem _clMemory;</div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span> </div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>}  <span class=\"comment\">// end namespace Osd</span></div>\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span> </div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>}  <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span> </div>\n-<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>}  <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span> </div>\n-<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_CL_VERTEX_BUFFER_H</span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa01157_html\"><div class=\"ttname\"><a href=\"a01157.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLVertexBuffer</a></div><div class=\"ttdoc\">Concrete vertex buffer class for OpenCL subdivision.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00881_source.html#l00042\">clVertexBuffer.h:42</a></div></div>\n-<div class=\"ttc\" id=\"aa01157_html_a2cf1549497a0e50dde24baad4792e08c\"><div class=\"ttname\"><a href=\"a01157.html#a2cf1549497a0e50dde24baad4792e08c\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLVertexBuffer::UpdateData</a></div><div class=\"ttdeci\">void UpdateData(const float *src, int startVertex, int numVertices, DEVICE_CONTEXT context, cl_event *startEvents=NULL, unsigned int numStartEvents=0, cl_event *endEvent=NULL)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00881_source.html#l00063\">clVertexBuffer.h:63</a></div></div>\n-<div class=\"ttc\" id=\"aa01157_html_a4801ba3ea81294d3e7e3da970863896e\"><div class=\"ttname\"><a href=\"a01157.html#a4801ba3ea81294d3e7e3da970863896e\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLVertexBuffer::~CLVertexBuffer</a></div><div class=\"ttdeci\">~CLVertexBuffer()</div><div class=\"ttdoc\">Destructor.</div></div>\n-<div class=\"ttc\" id=\"aa01157_html_a48e2b665b557d5f3f838bc552152160b\"><div class=\"ttname\"><a href=\"a01157.html#a48e2b665b557d5f3f838bc552152160b\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLVertexBuffer::CLVertexBuffer</a></div><div class=\"ttdeci\">CLVertexBuffer(int numElements, int numVertices, cl_context clContext)</div><div class=\"ttdoc\">Constructor.</div></div>\n-<div class=\"ttc\" id=\"aa01157_html_a7259d1296f30e13d171cd892708d8d0a\"><div class=\"ttname\"><a href=\"a01157.html#a7259d1296f30e13d171cd892708d8d0a\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLVertexBuffer::UpdateData</a></div><div class=\"ttdeci\">void UpdateData(const float *src, int startVertex, int numVertices, cl_command_queue clQueue, cl_event *startEvents=NULL, unsigned int numStartEvents=0, cl_event *endEvent=NULL)</div></div>\n-<div class=\"ttc\" id=\"aa01157_html_a77cee40767fd4936f20a8f9d9d9ea625\"><div class=\"ttname\"><a href=\"a01157.html#a77cee40767fd4936f20a8f9d9d9ea625\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLVertexBuffer::GetNumElements</a></div><div class=\"ttdeci\">int GetNumElements() const</div><div class=\"ttdoc\">Returns how many elements defined in this vertex buffer.</div></div>\n-<div class=\"ttc\" id=\"aa01157_html_a7ff15d15ad0fe31e5cb9a1e6c19f09b0\"><div class=\"ttname\"><a href=\"a01157.html#a7ff15d15ad0fe31e5cb9a1e6c19f09b0\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLVertexBuffer::allocate</a></div><div class=\"ttdeci\">bool allocate(cl_context clContext)</div></div>\n-<div class=\"ttc\" id=\"aa01157_html_aaf4a32b8a414eff77000c584c2015cb7\"><div class=\"ttname\"><a href=\"a01157.html#aaf4a32b8a414eff77000c584c2015cb7\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLVertexBuffer::GetNumVertices</a></div><div class=\"ttdeci\">int GetNumVertices() const</div><div class=\"ttdoc\">Returns how many vertices allocated in this vertex buffer.</div></div>\n-<div class=\"ttc\" id=\"aa01157_html_ac5f331ad354f94f90a08a928f7f57bba\"><div class=\"ttname\"><a href=\"a01157.html#ac5f331ad354f94f90a08a928f7f57bba\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLVertexBuffer::Create</a></div><div class=\"ttdeci\">static CLVertexBuffer * Create(int numElements, int numVertices, cl_context clContext)</div><div class=\"ttdoc\">Creator. Returns NULL if error.</div></div>\n-<div class=\"ttc\" id=\"aa01157_html_ad1ac8e33d52862dac84a2da1483fee51\"><div class=\"ttname\"><a href=\"a01157.html#ad1ac8e33d52862dac84a2da1483fee51\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLVertexBuffer::Create</a></div><div class=\"ttdeci\">static CLVertexBuffer * Create(int numElements, int numVertices, DEVICE_CONTEXT context)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00881_source.html#l00049\">clVertexBuffer.h:49</a></div></div>\n-<div class=\"ttc\" id=\"aa01157_html_ad9c25d5b96f9d5e971f677d32b406ec6\"><div class=\"ttname\"><a href=\"a01157.html#ad9c25d5b96f9d5e971f677d32b406ec6\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLVertexBuffer::BindCLBuffer</a></div><div class=\"ttdeci\">cl_mem BindCLBuffer(cl_command_queue queue)</div><div class=\"ttdoc\">Returns the CL memory object.</div></div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../bfr/surface.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../bfr/surfaceFactoryMeshAdapter.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &quot;../sdc/options.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"preprocessor\">#include &quot;../sdc/types.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span> </div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"preprocessor\">#include &lt;cstdint&gt;</span></div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span> </div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"keyword\">namespace </span>Bfr {</div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span> </div>\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"comment\">//  Forward declarations of public and internal classes used by factories:</span></div>\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span><span class=\"keyword\">class </span>SurfaceFactoryCache;</div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span><span class=\"keyword\">class </span>FaceTopology;</div>\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span><span class=\"keyword\">class </span>FaceSurface;</div>\n+<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00103\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00941.html\">  103</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a00941.html\">SurfaceFactory</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"a00957.html\">SurfaceFactoryMeshAdapter</a> {</div>\n+<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"foldopen\" id=\"foldopen00116\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00945.html\">  116</a></span>    <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a00945.html\">Options</a> {</div>\n+<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span>    <span class=\"keyword\">public</span>:</div>\n+<div class=\"foldopen\" id=\"foldopen00118\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00945.html#a28d39a844c3a37ab61d32ab7c6352f09\">  118</a></span>        <a class=\"code hl_function\" href=\"a00945.html#a28d39a844c3a37ab61d32ab7c6352f09\">Options</a>() : _dfltFVarID(-1), _externCache(0), _enableCache(true),</div>\n+<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span>                    _approxLevelSmooth(2), _approxLevelSharp(6) { }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span> </div>\n+<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span>        <a class=\"code hl_class\" href=\"a00945.html\">Options</a> &amp; <a class=\"code hl_function\" href=\"a00945.html#a2db0e8ff5143c3a69bf3772bac7bde78\">SetDefaultFVarID</a>(<a class=\"code hl_typedef\" href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">FVarID</a> <span class=\"keywordtype\">id</span>);</div>\n+<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00945.html#a51ba21f3605015ed597a25303143c0b1\">  125</a></span>        <a class=\"code hl_typedef\" href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">FVarID</a> <a class=\"code hl_function\" href=\"a00945.html#a51ba21f3605015ed597a25303143c0b1\">GetDefaultFVarID</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _dfltFVarID; }</div>\n+<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span> </div>\n+<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span>        <a class=\"code hl_class\" href=\"a00945.html\">Options</a> &amp; <a class=\"code hl_function\" href=\"a00945.html#a14e81c17e41ad591714664008331f41e\">EnableCaching</a>(<span class=\"keywordtype\">bool</span> on);</div>\n+<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00945.html#a2c83835832d46536d097ae6ff32659db\">  130</a></span>        <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00945.html#a2c83835832d46536d097ae6ff32659db\">IsCachingEnabled</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _enableCache; }</div>\n+<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\">  131</span> </div>\n+<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\">  133</span>        <a class=\"code hl_class\" href=\"a00945.html\">Options</a> &amp; <a class=\"code hl_function\" href=\"a00945.html#a06af1ca1d903fe5110c962bec75acec7\">SetExternalCache</a>(<a class=\"code hl_class\" href=\"a00949.html\">SurfaceFactoryCache</a> * c);</div>\n+<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00945.html#acd0411b6d29a6acae3826da06d86bd5b\">  135</a></span>        <a class=\"code hl_class\" href=\"a00949.html\">SurfaceFactoryCache</a> * <a class=\"code hl_function\" href=\"a00945.html#acd0411b6d29a6acae3826da06d86bd5b\">GetExternalCache</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _externCache; }</div>\n+<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\">  136</span> </div>\n+<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\">  137</span>        <span class=\"comment\">//  Set refinement levels used to approximate the limit surface</span></div>\n+<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\">  138</span>        <span class=\"comment\">//  for smooth and sharp features (reasonable defaults assigned):</span></div>\n+<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\">  140</span>        <a class=\"code hl_class\" href=\"a00945.html\">Options</a> &amp; <a class=\"code hl_function\" href=\"a00945.html#a1ee6780461b18cc80b5c79b520310079\">SetApproxLevelSmooth</a>(<span class=\"keywordtype\">int</span> level);</div>\n+<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00945.html#a1ff965cb913fbc4716a5985c3d3c60e3\">  142</a></span>        <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00945.html#a1ff965cb913fbc4716a5985c3d3c60e3\">GetApproxLevelSmooth</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _approxLevelSmooth; }</div>\n+<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\">  143</span> </div>\n+<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\">  145</span>        <a class=\"code hl_class\" href=\"a00945.html\">Options</a> &amp; <a class=\"code hl_function\" href=\"a00945.html#a391dfc1d3e1d75fc0aa496717784a95e\">SetApproxLevelSharp</a>(<span class=\"keywordtype\">int</span> level);</div>\n+<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00945.html#a595df0016de04902f5954b740c7baa2c\">  147</a></span>        <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00945.html#a595df0016de04902f5954b740c7baa2c\">GetApproxLevelSharp</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _approxLevelSharp; }</div>\n+<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\">  148</span> </div>\n+<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\">  149</span>    <span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\">  150</span>        <span class=\"comment\">//  Member variables:</span></div>\n+<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\">  151</span>        <a class=\"code hl_typedef\" href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">FVarID</a> _dfltFVarID;</div>\n+<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\">  152</span> </div>\n+<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\">  153</span>        <a class=\"code hl_class\" href=\"a00949.html\">SurfaceFactoryCache</a> * _externCache;</div>\n+<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\">  154</span> </div>\n+<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\">  155</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> _enableCache : 1;</div>\n+<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\">  156</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> _approxLevelSmooth;</div>\n+<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\">  157</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> _approxLevelSharp;</div>\n+<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\">  158</span>    };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\">  159</span> </div>\n+<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\">  160</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00941.html#a1e36434fc02ae0d7a087a8eb07577ee9\">  161</a></span>    <a class=\"code hl_function\" href=\"a00941.html#a1e36434fc02ae0d7a087a8eb07577ee9\">~SurfaceFactory</a>() <span class=\"keyword\">override</span>;</div>\n+<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\">  162</span> </div>\n+<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\">  164</span> </div>\n+<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\">  168</span> </div>\n+<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00941.html#a758e06255013d2d7393c3ac2d18f6922\">  170</a></span>    <a class=\"code hl_enumeration\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833d\">Sdc::SchemeType</a> <a class=\"code hl_function\" href=\"a00941.html#a758e06255013d2d7393c3ac2d18f6922\">GetSchemeType</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _subdivScheme; }</div>\n+<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span> </div>\n+<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00941.html#a4528f38657b0c96bce6c3d7deffd7c02\">  173</a></span>    <a class=\"code hl_class\" href=\"a01337.html\">Sdc::Options</a> <a class=\"code hl_function\" href=\"a00941.html#a4528f38657b0c96bce6c3d7deffd7c02\">GetSchemeOptions</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _subdivOptions; }</div>\n+<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\">  175</span> </div>\n+<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\">  176</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\">  178</span> </div>\n+<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\">  190</span> </div>\n+<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00941.html#a5cab9f649e56c15a486e3878a19bedf7\">  200</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00941.html#a5cab9f649e56c15a486e3878a19bedf7\">FaceHasLimitSurface</a>(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\">  201</span> </div>\n+<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00941.html#a59964d0c9ed91d83447ceacede2acc1d\">  208</a></span>    <a class=\"code hl_class\" href=\"a00921.html\">Parameterization</a> <a class=\"code hl_function\" href=\"a00941.html#a59964d0c9ed91d83447ceacede2acc1d\">GetFaceParameterization</a>(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\">  210</span> </div>\n+<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\">  211</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\">  213</span> </div>\n+<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\">  233</span> </div>\n+<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\">  241</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\">  242</span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00941.html#abb4a2f3f7e6623ace424afc5c0315fc1\">InitVertexSurface</a>(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex, <a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;</a> * surface) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\">  243</span> </div>\n+<div class=\"line\"><a id=\"l00251\" name=\"l00251\"></a><span class=\"lineno\">  251</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00252\" name=\"l00252\"></a><span class=\"lineno\">  252</span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00941.html#adee257f933b8440f3e1b4760c506f15f\">InitVaryingSurface</a>(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex, <a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;</a> * surface) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00253\" name=\"l00253\"></a><span class=\"lineno\">  253</span> </div>\n+<div class=\"line\"><a id=\"l00266\" name=\"l00266\"></a><span class=\"lineno\">  266</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00267\" name=\"l00267\"></a><span class=\"lineno\">  267</span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00941.html#a2236306cbbc12f5a77753e269c76fe0e\">InitFaceVaryingSurface</a>(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex, <a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;</a> * surface) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00268\" name=\"l00268\"></a><span class=\"lineno\">  268</span> </div>\n+<div class=\"line\"><a id=\"l00278\" name=\"l00278\"></a><span class=\"lineno\">  278</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00279\" name=\"l00279\"></a><span class=\"lineno\">  279</span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00941.html#a2236306cbbc12f5a77753e269c76fe0e\">InitFaceVaryingSurface</a>(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex, <a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;</a> * surface,</div>\n+<div class=\"line\"><a id=\"l00280\" name=\"l00280\"></a><span class=\"lineno\">  280</span>                                                 <a class=\"code hl_typedef\" href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">FVarID</a>          fvarID) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00281\" name=\"l00281\"></a><span class=\"lineno\">  281</span> </div>\n+<div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\">  307</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00308\" name=\"l00308\"></a><span class=\"lineno\">  308</span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00941.html#a6ab6508b7c2a5c259acf6b9b89688fc8\">InitSurfaces</a>(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex, <a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;</a> * vtxSurface,</div>\n+<div class=\"line\"><a id=\"l00309\" name=\"l00309\"></a><span class=\"lineno\">  309</span>                                       <a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;</a> * fvarSurfaces,</div>\n+<div class=\"line\"><a id=\"l00310\" name=\"l00310\"></a><span class=\"lineno\">  310</span>                                       <a class=\"code hl_typedef\" href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">FVarID</a> <span class=\"keyword\">const</span>    fvarIDs[] = 0,</div>\n+<div class=\"line\"><a id=\"l00311\" name=\"l00311\"></a><span class=\"lineno\">  311</span>                                       <span class=\"keywordtype\">int</span>             fvarCount = 0,</div>\n+<div class=\"line\"><a id=\"l00312\" name=\"l00312\"></a><span class=\"lineno\">  312</span>                                       <a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;</a> * varSurface = 0) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00314\" name=\"l00314\"></a><span class=\"lineno\">  314</span> </div>\n+<div class=\"line\"><a id=\"l00316\" name=\"l00316\"></a><span class=\"lineno\">  316</span> </div>\n+<div class=\"line\"><a id=\"l00319\" name=\"l00319\"></a><span class=\"lineno\">  319</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00320\" name=\"l00320\"></a><span class=\"lineno\">  320</span>    <span class=\"comment\">//      WIP - considering removing these since non-essential</span></div>\n+<div class=\"line\"><a id=\"l00321\" name=\"l00321\"></a><span class=\"lineno\">  321</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00322\" name=\"l00322\"></a><span class=\"lineno\">  322</span> </div>\n+<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\">  324</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL=<span class=\"keywordtype\">float</span>&gt;</div>\n+<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\">  325</span>    <a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;</a> * <a class=\"code hl_function\" href=\"a00941.html#a676cf019574c99fa77341ac09889192d\">CreateVertexSurface</a>(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\">  326</span> </div>\n+<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\">  328</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL=<span class=\"keywordtype\">float</span>&gt;</div>\n+<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\">  329</span>    <a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;</a> * <a class=\"code hl_function\" href=\"a00941.html#a81638f2ff6818fd96aa7cd1ad3ed0703\">CreateVaryingSurface</a>(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\">  330</span> </div>\n+<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\">  332</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL=<span class=\"keywordtype\">float</span>&gt;</div>\n+<div class=\"line\"><a id=\"l00333\" name=\"l00333\"></a><span class=\"lineno\">  333</span>    <a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;</a> * <a class=\"code hl_function\" href=\"a00941.html#a67a5dcab87b052d231634dd9fcf5dee2\">CreateFaceVaryingSurface</a>(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00334\" name=\"l00334\"></a><span class=\"lineno\">  334</span> </div>\n+<div class=\"line\"><a id=\"l00336\" name=\"l00336\"></a><span class=\"lineno\">  336</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL=<span class=\"keywordtype\">float</span>&gt;</div>\n+<div class=\"line\"><a id=\"l00337\" name=\"l00337\"></a><span class=\"lineno\">  337</span>    <a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;</a> * <a class=\"code hl_function\" href=\"a00941.html#a67a5dcab87b052d231634dd9fcf5dee2\">CreateFaceVaryingSurface</a>(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex, <a class=\"code hl_typedef\" href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">FVarID</a> <span class=\"keywordtype\">id</span>) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00339\" name=\"l00339\"></a><span class=\"lineno\">  339</span> </div>\n+<div class=\"line\"><a id=\"l00340\" name=\"l00340\"></a><span class=\"lineno\">  340</span><span class=\"keyword\">protected</span>:</div>\n+<div class=\"line\"><a id=\"l00342\" name=\"l00342\"></a><span class=\"lineno\">  342</span> </div>\n+<div class=\"line\"><a id=\"l00346\" name=\"l00346\"></a><span class=\"lineno\">  346</span> </div>\n+<div class=\"line\"><a id=\"l00358\" name=\"l00358\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00941.html#ae54ee5a9e2bcb2bfdf395084395a0719\">  358</a></span>    <a class=\"code hl_function\" href=\"a00941.html#ae54ee5a9e2bcb2bfdf395084395a0719\">SurfaceFactory</a>(<a class=\"code hl_enumeration\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833d\">Sdc::SchemeType</a>      schemeType,</div>\n+<div class=\"line\"><a id=\"l00359\" name=\"l00359\"></a><span class=\"lineno\">  359</span>                   <a class=\"code hl_class\" href=\"a01337.html\">Sdc::Options</a> <span class=\"keyword\">const</span> &amp; schemeOptions,</div>\n+<div class=\"line\"><a id=\"l00360\" name=\"l00360\"></a><span class=\"lineno\">  360</span>                   <a class=\"code hl_class\" href=\"a00945.html\">Options</a>      <span class=\"keyword\">const</span> &amp; limitOptions);</div>\n+<div class=\"line\"><a id=\"l00361\" name=\"l00361\"></a><span class=\"lineno\">  361</span> </div>\n+<div class=\"line\"><a id=\"l00363\" name=\"l00363\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00941.html#a043a7fc91f7bc29a4cbba51d9cb00ecb\">  363</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00941.html#a043a7fc91f7bc29a4cbba51d9cb00ecb\">setInternalCache</a>(<a class=\"code hl_class\" href=\"a00949.html\">SurfaceFactoryCache</a> * cache);</div>\n+<div class=\"line\"><a id=\"l00364\" name=\"l00364\"></a><span class=\"lineno\">  364</span> </div>\n+<div class=\"line\"><a id=\"l00365\" name=\"l00365\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00941.html#a5ac6bb6255796f79debe11e25b816093\">  365</a></span>    <a class=\"code hl_function\" href=\"a00941.html#a5ac6bb6255796f79debe11e25b816093\">SurfaceFactory</a>(<a class=\"code hl_class\" href=\"a00941.html\">SurfaceFactory</a> <span class=\"keyword\">const</span> &amp;) = <span class=\"keyword\">delete</span>;</div>\n+<div class=\"line\"><a id=\"l00366\" name=\"l00366\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00941.html#a5d089ab30f0402395635d7b389710594\">  366</a></span>    <a class=\"code hl_class\" href=\"a00941.html\">SurfaceFactory</a> &amp; <a class=\"code hl_function\" href=\"a00941.html#a5d089ab30f0402395635d7b389710594\">operator=</a>(<a class=\"code hl_class\" href=\"a00941.html\">SurfaceFactory</a> <span class=\"keyword\">const</span> &amp;) = <span class=\"keyword\">delete</span>;</div>\n+<div class=\"line\"><a id=\"l00368\" name=\"l00368\"></a><span class=\"lineno\">  368</span> </div>\n+<div class=\"line\"><a id=\"l00369\" name=\"l00369\"></a><span class=\"lineno\">  369</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00370\" name=\"l00370\"></a><span class=\"lineno\">  370</span>    <span class=\"comment\">//  Supporting internal methods:</span></div>\n+<div class=\"line\"><a id=\"l00371\" name=\"l00371\"></a><span class=\"lineno\">  371</span>    <span class=\"keywordtype\">void</span> setSubdivisionOptions(<a class=\"code hl_enumeration\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833d\">Sdc::SchemeType</a>, <a class=\"code hl_class\" href=\"a01337.html\">Sdc::Options</a> <span class=\"keyword\">const</span> &amp; options);</div>\n+<div class=\"line\"><a id=\"l00372\" name=\"l00372\"></a><span class=\"lineno\">  372</span>    <span class=\"keywordtype\">void</span> setFactoryOptions(<a class=\"code hl_class\" href=\"a00945.html\">Options</a> <span class=\"keyword\">const</span> &amp; factoryOptions);</div>\n+<div class=\"line\"><a id=\"l00373\" name=\"l00373\"></a><span class=\"lineno\">  373</span> </div>\n+<div class=\"line\"><a id=\"l00374\" name=\"l00374\"></a><span class=\"lineno\">  374</span>    <span class=\"keywordtype\">bool</span> faceHasLimitSimple(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex, <span class=\"keywordtype\">int</span> faceSize) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00375\" name=\"l00375\"></a><span class=\"lineno\">  375</span> </div>\n+<div class=\"line\"><a id=\"l00376\" name=\"l00376\"></a><span class=\"lineno\">  376</span>    <span class=\"keywordtype\">bool</span> faceHasLimitNeighborhood(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00377\" name=\"l00377\"></a><span class=\"lineno\">  377</span>    <span class=\"keywordtype\">bool</span> faceHasLimitNeighborhood(FaceTopology <span class=\"keyword\">const</span> &amp; faceTopology) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00378\" name=\"l00378\"></a><span class=\"lineno\">  378</span> </div>\n+<div class=\"line\"><a id=\"l00379\" name=\"l00379\"></a><span class=\"lineno\">  379</span>    <span class=\"keyword\">class </span>SurfaceSet;</div>\n+<div class=\"line\"><a id=\"l00380\" name=\"l00380\"></a><span class=\"lineno\">  380</span> </div>\n+<div class=\"line\"><a id=\"l00381\" name=\"l00381\"></a><span class=\"lineno\">  381</span>    <span class=\"keywordtype\">bool</span> populateAllSurfaces(      <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex, SurfaceSet * sSetPtr) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00382\" name=\"l00382\"></a><span class=\"lineno\">  382</span>    <span class=\"keywordtype\">bool</span> populateLinearSurfaces(   <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex, SurfaceSet * sSetPtr) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00383\" name=\"l00383\"></a><span class=\"lineno\">  383</span>    <span class=\"keywordtype\">bool</span> populateNonLinearSurfaces(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex, SurfaceSet * sSetPtr) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00384\" name=\"l00384\"></a><span class=\"lineno\">  384</span> </div>\n+<div class=\"line\"><a id=\"l00385\" name=\"l00385\"></a><span class=\"lineno\">  385</span>    <span class=\"keywordtype\">bool</span> initSurfaces(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex, internal::SurfaceData * vtxSurface,</div>\n+<div class=\"line\"><a id=\"l00386\" name=\"l00386\"></a><span class=\"lineno\">  386</span>                                       internal::SurfaceData * varSurface,</div>\n+<div class=\"line\"><a id=\"l00387\" name=\"l00387\"></a><span class=\"lineno\">  387</span>                                       internal::SurfaceData * fvarSurfaces,</div>\n+<div class=\"line\"><a id=\"l00388\" name=\"l00388\"></a><span class=\"lineno\">  388</span>                                       <span class=\"keywordtype\">int</span>           fvarCount,</div>\n+<div class=\"line\"><a id=\"l00389\" name=\"l00389\"></a><span class=\"lineno\">  389</span>                                       <a class=\"code hl_typedef\" href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">FVarID</a> <span class=\"keyword\">const</span>  fvarIDs[]) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00390\" name=\"l00390\"></a><span class=\"lineno\">  390</span> </div>\n+<div class=\"line\"><a id=\"l00391\" name=\"l00391\"></a><span class=\"lineno\">  391</span>    <span class=\"comment\">//  Methods to assemble topology and corresponding indices for entire face:</span></div>\n+<div class=\"line\"><a id=\"l00392\" name=\"l00392\"></a><span class=\"lineno\">  392</span>    <span class=\"keywordtype\">bool</span> isFaceNeighborhoodRegular(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a>          faceIndex,</div>\n+<div class=\"line\"><a id=\"l00393\" name=\"l00393\"></a><span class=\"lineno\">  393</span>                                   <a class=\"code hl_typedef\" href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">FVarID</a> <span class=\"keyword\">const</span> * fvarPtrOrVtx,</div>\n+<div class=\"line\"><a id=\"l00394\" name=\"l00394\"></a><span class=\"lineno\">  394</span>                                   <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a>          indices[]) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00395\" name=\"l00395\"></a><span class=\"lineno\">  395</span> </div>\n+<div class=\"line\"><a id=\"l00396\" name=\"l00396\"></a><span class=\"lineno\">  396</span>    <span class=\"keywordtype\">bool</span> initFaceNeighborhoodTopology(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a>          faceIndex,</div>\n+<div class=\"line\"><a id=\"l00397\" name=\"l00397\"></a><span class=\"lineno\">  397</span>                                      FaceTopology * topology) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00398\" name=\"l00398\"></a><span class=\"lineno\">  398</span> </div>\n+<div class=\"line\"><a id=\"l00399\" name=\"l00399\"></a><span class=\"lineno\">  399</span>    <span class=\"keywordtype\">bool</span> gatherFaceNeighborhoodTopology(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a>          faceIndex,</div>\n+<div class=\"line\"><a id=\"l00400\" name=\"l00400\"></a><span class=\"lineno\">  400</span>                                        FaceTopology * topology) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00401\" name=\"l00401\"></a><span class=\"lineno\">  401</span> </div>\n+<div class=\"line\"><a id=\"l00402\" name=\"l00402\"></a><span class=\"lineno\">  402</span>    <span class=\"keywordtype\">int</span> gatherFaceNeighborhoodIndices(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a>                faceIndex,</div>\n+<div class=\"line\"><a id=\"l00403\" name=\"l00403\"></a><span class=\"lineno\">  403</span>                                      FaceTopology <span class=\"keyword\">const</span> &amp; topology,</div>\n+<div class=\"line\"><a id=\"l00404\" name=\"l00404\"></a><span class=\"lineno\">  404</span>                                      <a class=\"code hl_typedef\" href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">FVarID</a>       <span class=\"keyword\">const</span> * fvarPtrOrVtx,</div>\n+<div class=\"line\"><a id=\"l00405\" name=\"l00405\"></a><span class=\"lineno\">  405</span>                                      <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a>                indices[]) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00406\" name=\"l00406\"></a><span class=\"lineno\">  406</span> </div>\n+<div class=\"line\"><a id=\"l00407\" name=\"l00407\"></a><span class=\"lineno\">  407</span>    <span class=\"comment\">//  Methods to assemble Surfaces for the different categories of patch:</span></div>\n+<div class=\"line\"><a id=\"l00408\" name=\"l00408\"></a><span class=\"lineno\">  408</span>    <span class=\"keyword\">typedef</span> internal::SurfaceData SurfaceType;</div>\n+<div class=\"line\"><a id=\"l00409\" name=\"l00409\"></a><span class=\"lineno\">  409</span> </div>\n+<div class=\"line\"><a id=\"l00410\" name=\"l00410\"></a><span class=\"lineno\">  410</span>    <span class=\"keywordtype\">void</span> assignLinearSurface(SurfaceType  * surfacePtr,</div>\n+<div class=\"line\"><a id=\"l00411\" name=\"l00411\"></a><span class=\"lineno\">  411</span>                             <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a>          faceIndex,</div>\n+<div class=\"line\"><a id=\"l00412\" name=\"l00412\"></a><span class=\"lineno\">  412</span>                             <a class=\"code hl_typedef\" href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">FVarID</a> <span class=\"keyword\">const</span> * fvarPtrOrVtx) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00413\" name=\"l00413\"></a><span class=\"lineno\">  413</span> </div>\n+<div class=\"line\"><a id=\"l00414\" name=\"l00414\"></a><span class=\"lineno\">  414</span>    <span class=\"keywordtype\">void</span> assignRegularSurface(SurfaceType * surfacePtr,</div>\n+<div class=\"line\"><a id=\"l00415\" name=\"l00415\"></a><span class=\"lineno\">  415</span>                              <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> <span class=\"keyword\">const</span>   surfacePatchPoints[]) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00416\" name=\"l00416\"></a><span class=\"lineno\">  416</span> </div>\n+<div class=\"line\"><a id=\"l00417\" name=\"l00417\"></a><span class=\"lineno\">  417</span>    <span class=\"keywordtype\">void</span> assignRegularSurface(SurfaceType       * surfacePtr,</div>\n+<div class=\"line\"><a id=\"l00418\" name=\"l00418\"></a><span class=\"lineno\">  418</span>                              FaceSurface <span class=\"keyword\">const</span> &amp; surfaceDescription) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00419\" name=\"l00419\"></a><span class=\"lineno\">  419</span> </div>\n+<div class=\"line\"><a id=\"l00420\" name=\"l00420\"></a><span class=\"lineno\">  420</span>    <span class=\"keywordtype\">void</span> assignIrregularSurface(SurfaceType       * surfacePtr,</div>\n+<div class=\"line\"><a id=\"l00421\" name=\"l00421\"></a><span class=\"lineno\">  421</span>                                FaceSurface <span class=\"keyword\">const</span> &amp; surfaceDescription) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00422\" name=\"l00422\"></a><span class=\"lineno\">  422</span> </div>\n+<div class=\"line\"><a id=\"l00423\" name=\"l00423\"></a><span class=\"lineno\">  423</span>    <span class=\"keywordtype\">void</span> copyNonLinearSurface(SurfaceType       * surfacePtr,</div>\n+<div class=\"line\"><a id=\"l00424\" name=\"l00424\"></a><span class=\"lineno\">  424</span>                              SurfaceType <span class=\"keyword\">const</span> &amp; surfaceSource,</div>\n+<div class=\"line\"><a id=\"l00425\" name=\"l00425\"></a><span class=\"lineno\">  425</span>                              FaceSurface <span class=\"keyword\">const</span> &amp; surfaceDescription) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00426\" name=\"l00426\"></a><span class=\"lineno\">  426</span> </div>\n+<div class=\"line\"><a id=\"l00427\" name=\"l00427\"></a><span class=\"lineno\">  427</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00428\" name=\"l00428\"></a><span class=\"lineno\">  428</span>    <span class=\"comment\">//  Members describing options and subdivision properties (very little</span></div>\n+<div class=\"line\"><a id=\"l00429\" name=\"l00429\"></a><span class=\"lineno\">  429</span>    <span class=\"comment\">//  memory and low initialization cost)</span></div>\n+<div class=\"line\"><a id=\"l00430\" name=\"l00430\"></a><span class=\"lineno\">  430</span>    <a class=\"code hl_enumeration\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833d\">Sdc::SchemeType</a> _subdivScheme;</div>\n+<div class=\"line\"><a id=\"l00431\" name=\"l00431\"></a><span class=\"lineno\">  431</span>    <a class=\"code hl_class\" href=\"a01337.html\">Sdc::Options</a>    _subdivOptions;</div>\n+<div class=\"line\"><a id=\"l00432\" name=\"l00432\"></a><span class=\"lineno\">  432</span>    <a class=\"code hl_class\" href=\"a00945.html\">Options</a>         _factoryOptions;</div>\n+<div class=\"line\"><a id=\"l00433\" name=\"l00433\"></a><span class=\"lineno\">  433</span> </div>\n+<div class=\"line\"><a id=\"l00434\" name=\"l00434\"></a><span class=\"lineno\">  434</span>    <span class=\"comment\">//  Members related to subdivision topology, options and limit tests:</span></div>\n+<div class=\"line\"><a id=\"l00435\" name=\"l00435\"></a><span class=\"lineno\">  435</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> _linearScheme      : 1;</div>\n+<div class=\"line\"><a id=\"l00436\" name=\"l00436\"></a><span class=\"lineno\">  436</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> _linearFVarInterp  : 1;</div>\n+<div class=\"line\"><a id=\"l00437\" name=\"l00437\"></a><span class=\"lineno\">  437</span> </div>\n+<div class=\"line\"><a id=\"l00438\" name=\"l00438\"></a><span class=\"lineno\">  438</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> _testNeighborhoodForLimit       : 1;</div>\n+<div class=\"line\"><a id=\"l00439\" name=\"l00439\"></a><span class=\"lineno\">  439</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> _rejectSmoothBoundariesForLimit : 1;</div>\n+<div class=\"line\"><a id=\"l00440\" name=\"l00440\"></a><span class=\"lineno\">  440</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> _rejectIrregularFacesForLimit   : 1;</div>\n+<div class=\"line\"><a id=\"l00441\" name=\"l00441\"></a><span class=\"lineno\">  441</span> </div>\n+<div class=\"line\"><a id=\"l00442\" name=\"l00442\"></a><span class=\"lineno\">  442</span>    <span class=\"keywordtype\">int</span>  _regFaceSize;</div>\n+<div class=\"line\"><a id=\"l00443\" name=\"l00443\"></a><span class=\"lineno\">  443</span> </div>\n+<div class=\"line\"><a id=\"l00444\" name=\"l00444\"></a><span class=\"lineno\">  444</span>    <span class=\"comment\">//  Members related to caching:</span></div>\n+<div class=\"line\"><a id=\"l00445\" name=\"l00445\"></a><span class=\"lineno\">  445</span>    <a class=\"code hl_class\" href=\"a00949.html\">SurfaceFactoryCache</a> <span class=\"keyword\">mutable</span> * _topologyCache;</div>\n+<div class=\"line\"><a id=\"l00446\" name=\"l00446\"></a><span class=\"lineno\">  446</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00447\" name=\"l00447\"></a><span class=\"lineno\">  447</span> </div>\n+<div class=\"line\"><a id=\"l00448\" name=\"l00448\"></a><span class=\"lineno\">  448</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00449\" name=\"l00449\"></a><span class=\"lineno\">  449</span><span class=\"comment\">//  Inline methods for Options:</span></div>\n+<div class=\"line\"><a id=\"l00450\" name=\"l00450\"></a><span class=\"lineno\">  450</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00451\" name=\"l00451\"></a><span class=\"lineno\">  451</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a00945.html\">SurfaceFactory::Options</a> &amp;</div>\n+<div class=\"foldopen\" id=\"foldopen00452\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00452\" name=\"l00452\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00945.html#a2db0e8ff5143c3a69bf3772bac7bde78\">  452</a></span><a class=\"code hl_function\" href=\"a00945.html#a2db0e8ff5143c3a69bf3772bac7bde78\">SurfaceFactory::Options::SetDefaultFVarID</a>(<a class=\"code hl_typedef\" href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">FVarID</a> <span class=\"keywordtype\">id</span>) {</div>\n+<div class=\"line\"><a id=\"l00453\" name=\"l00453\"></a><span class=\"lineno\">  453</span>    _dfltFVarID = id;</div>\n+<div class=\"line\"><a id=\"l00454\" name=\"l00454\"></a><span class=\"lineno\">  454</span>    <span class=\"keywordflow\">return</span> *<span class=\"keyword\">this</span>;</div>\n+<div class=\"line\"><a id=\"l00455\" name=\"l00455\"></a><span class=\"lineno\">  455</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00456\" name=\"l00456\"></a><span class=\"lineno\">  456</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a00945.html\">SurfaceFactory::Options</a> &amp;</div>\n+<div class=\"foldopen\" id=\"foldopen00457\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00457\" name=\"l00457\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00945.html#a14e81c17e41ad591714664008331f41e\">  457</a></span><a class=\"code hl_function\" href=\"a00945.html#a14e81c17e41ad591714664008331f41e\">SurfaceFactory::Options::EnableCaching</a>(<span class=\"keywordtype\">bool</span> on) {</div>\n+<div class=\"line\"><a id=\"l00458\" name=\"l00458\"></a><span class=\"lineno\">  458</span>    _enableCache = on;</div>\n+<div class=\"line\"><a id=\"l00459\" name=\"l00459\"></a><span class=\"lineno\">  459</span>    <span class=\"keywordflow\">return</span> *<span class=\"keyword\">this</span>;</div>\n+<div class=\"line\"><a id=\"l00460\" name=\"l00460\"></a><span class=\"lineno\">  460</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00461\" name=\"l00461\"></a><span class=\"lineno\">  461</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a00945.html\">SurfaceFactory::Options</a> &amp; </div>\n+<div class=\"foldopen\" id=\"foldopen00462\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00462\" name=\"l00462\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00945.html#a06af1ca1d903fe5110c962bec75acec7\">  462</a></span><a class=\"code hl_function\" href=\"a00945.html#a06af1ca1d903fe5110c962bec75acec7\">SurfaceFactory::Options::SetExternalCache</a>(<a class=\"code hl_class\" href=\"a00949.html\">SurfaceFactoryCache</a> * c) {</div>\n+<div class=\"line\"><a id=\"l00463\" name=\"l00463\"></a><span class=\"lineno\">  463</span>    _externCache = c;</div>\n+<div class=\"line\"><a id=\"l00464\" name=\"l00464\"></a><span class=\"lineno\">  464</span>    <span class=\"keywordflow\">return</span> *<span class=\"keyword\">this</span>;</div>\n+<div class=\"line\"><a id=\"l00465\" name=\"l00465\"></a><span class=\"lineno\">  465</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00466\" name=\"l00466\"></a><span class=\"lineno\">  466</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a00945.html\">SurfaceFactory::Options</a> &amp;</div>\n+<div class=\"foldopen\" id=\"foldopen00467\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00467\" name=\"l00467\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00945.html#a1ee6780461b18cc80b5c79b520310079\">  467</a></span><a class=\"code hl_function\" href=\"a00945.html#a1ee6780461b18cc80b5c79b520310079\">SurfaceFactory::Options::SetApproxLevelSmooth</a>(<span class=\"keywordtype\">int</span> level) {</div>\n+<div class=\"line\"><a id=\"l00468\" name=\"l00468\"></a><span class=\"lineno\">  468</span>    _approxLevelSmooth = (<span class=\"keywordtype\">unsigned</span> char) level;</div>\n+<div class=\"line\"><a id=\"l00469\" name=\"l00469\"></a><span class=\"lineno\">  469</span>    <span class=\"keywordflow\">return</span> *<span class=\"keyword\">this</span>;</div>\n+<div class=\"line\"><a id=\"l00470\" name=\"l00470\"></a><span class=\"lineno\">  470</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00471\" name=\"l00471\"></a><span class=\"lineno\">  471</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a00945.html\">SurfaceFactory::Options</a> &amp;</div>\n+<div class=\"foldopen\" id=\"foldopen00472\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00472\" name=\"l00472\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00945.html#a391dfc1d3e1d75fc0aa496717784a95e\">  472</a></span><a class=\"code hl_function\" href=\"a00945.html#a391dfc1d3e1d75fc0aa496717784a95e\">SurfaceFactory::Options::SetApproxLevelSharp</a>(<span class=\"keywordtype\">int</span> level) {</div>\n+<div class=\"line\"><a id=\"l00473\" name=\"l00473\"></a><span class=\"lineno\">  473</span>    _approxLevelSharp = (<span class=\"keywordtype\">unsigned</span> char) level;</div>\n+<div class=\"line\"><a id=\"l00474\" name=\"l00474\"></a><span class=\"lineno\">  474</span>    <span class=\"keywordflow\">return</span> *<span class=\"keyword\">this</span>;</div>\n+<div class=\"line\"><a id=\"l00475\" name=\"l00475\"></a><span class=\"lineno\">  475</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00476\" name=\"l00476\"></a><span class=\"lineno\">  476</span> </div>\n+<div class=\"line\"><a id=\"l00477\" name=\"l00477\"></a><span class=\"lineno\">  477</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00478\" name=\"l00478\"></a><span class=\"lineno\">  478</span><span class=\"comment\">//  Inline methods to initializes Surfaces:</span></div>\n+<div class=\"line\"><a id=\"l00479\" name=\"l00479\"></a><span class=\"lineno\">  479</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00480\" name=\"l00480\"></a><span class=\"lineno\">  480</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00481\" name=\"l00481\"></a><span class=\"lineno\">  481</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span></div>\n+<div class=\"foldopen\" id=\"foldopen00482\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00482\" name=\"l00482\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00941.html#abb4a2f3f7e6623ace424afc5c0315fc1\">  482</a></span><a class=\"code hl_function\" href=\"a00941.html#abb4a2f3f7e6623ace424afc5c0315fc1\">SurfaceFactory::InitVertexSurface</a>(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> face, <a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;</a> * s)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00483\" name=\"l00483\"></a><span class=\"lineno\">  483</span> </div>\n+<div class=\"line\"><a id=\"l00484\" name=\"l00484\"></a><span class=\"lineno\">  484</span>    <span class=\"keywordflow\">return</span> initSurfaces(face, &amp;s-&gt;getSurfaceData(), 0, 0, 0, 0);</div>\n+<div class=\"line\"><a id=\"l00485\" name=\"l00485\"></a><span class=\"lineno\">  485</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00486\" name=\"l00486\"></a><span class=\"lineno\">  486</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00487\" name=\"l00487\"></a><span class=\"lineno\">  487</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span></div>\n+<div class=\"foldopen\" id=\"foldopen00488\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00488\" name=\"l00488\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00941.html#adee257f933b8440f3e1b4760c506f15f\">  488</a></span><a class=\"code hl_function\" href=\"a00941.html#adee257f933b8440f3e1b4760c506f15f\">SurfaceFactory::InitVaryingSurface</a>(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> face, <a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;</a> * s)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00489\" name=\"l00489\"></a><span class=\"lineno\">  489</span> </div>\n+<div class=\"line\"><a id=\"l00490\" name=\"l00490\"></a><span class=\"lineno\">  490</span>    <span class=\"keywordflow\">return</span> initSurfaces(face, 0, &amp;s-&gt;getSurfaceData(), 0, 0, 0);</div>\n+<div class=\"line\"><a id=\"l00491\" name=\"l00491\"></a><span class=\"lineno\">  491</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00492\" name=\"l00492\"></a><span class=\"lineno\">  492</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00493\" name=\"l00493\"></a><span class=\"lineno\">  493</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span></div>\n+<div class=\"foldopen\" id=\"foldopen00494\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00494\" name=\"l00494\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00941.html#a9cd69d28232867bdbb5f0b0cfcea5db5\">  494</a></span><a class=\"code hl_function\" href=\"a00941.html#a2236306cbbc12f5a77753e269c76fe0e\">SurfaceFactory::InitFaceVaryingSurface</a>(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> face, <a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;</a> * s,</div>\n+<div class=\"line\"><a id=\"l00495\" name=\"l00495\"></a><span class=\"lineno\">  495</span>                                                   <a class=\"code hl_typedef\" href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">FVarID</a> fvarID)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00496\" name=\"l00496\"></a><span class=\"lineno\">  496</span>    <span class=\"keywordflow\">return</span> initSurfaces(face, 0, 0, &amp;s-&gt;getSurfaceData(), 1, &amp;fvarID);</div>\n+<div class=\"line\"><a id=\"l00497\" name=\"l00497\"></a><span class=\"lineno\">  497</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00498\" name=\"l00498\"></a><span class=\"lineno\">  498</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00499\" name=\"l00499\"></a><span class=\"lineno\">  499</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span></div>\n+<div class=\"foldopen\" id=\"foldopen00500\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00500\" name=\"l00500\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00941.html#a2236306cbbc12f5a77753e269c76fe0e\">  500</a></span><a class=\"code hl_function\" href=\"a00941.html#a2236306cbbc12f5a77753e269c76fe0e\">SurfaceFactory::InitFaceVaryingSurface</a>(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> face, <a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;</a> * s)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00501\" name=\"l00501\"></a><span class=\"lineno\">  501</span>    <a class=\"code hl_typedef\" href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">FVarID</a> dfltID = _factoryOptions.<a class=\"code hl_function\" href=\"a00945.html#a51ba21f3605015ed597a25303143c0b1\">GetDefaultFVarID</a>();</div>\n+<div class=\"line\"><a id=\"l00502\" name=\"l00502\"></a><span class=\"lineno\">  502</span>    <span class=\"keywordflow\">return</span> initSurfaces(face, 0, 0, &amp;s-&gt;getSurfaceData(), 1, &amp;dfltID);</div>\n+<div class=\"line\"><a id=\"l00503\" name=\"l00503\"></a><span class=\"lineno\">  503</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00504\" name=\"l00504\"></a><span class=\"lineno\">  504</span> </div>\n+<div class=\"line\"><a id=\"l00505\" name=\"l00505\"></a><span class=\"lineno\">  505</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00506\" name=\"l00506\"></a><span class=\"lineno\">  506</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span></div>\n+<div class=\"foldopen\" id=\"foldopen00507\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00507\" name=\"l00507\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00941.html#a6ab6508b7c2a5c259acf6b9b89688fc8\">  507</a></span><a class=\"code hl_function\" href=\"a00941.html#a6ab6508b7c2a5c259acf6b9b89688fc8\">SurfaceFactory::InitSurfaces</a>(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex, <a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;</a> * vtxSurface,</div>\n+<div class=\"line\"><a id=\"l00508\" name=\"l00508\"></a><span class=\"lineno\">  508</span>        <a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;</a> * fvarSurfaces, <a class=\"code hl_typedef\" href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">FVarID</a> <span class=\"keyword\">const</span> fvarIDs[], <span class=\"keywordtype\">int</span> fvarCount,</div>\n+<div class=\"line\"><a id=\"l00509\" name=\"l00509\"></a><span class=\"lineno\">  509</span>        <a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;</a> * varSurface)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00510\" name=\"l00510\"></a><span class=\"lineno\">  510</span> </div>\n+<div class=\"line\"><a id=\"l00511\" name=\"l00511\"></a><span class=\"lineno\">  511</span>    <span class=\"keywordtype\">bool</span> useDfltFVarID = fvarSurfaces &amp;&amp; (fvarIDs == 0) &amp;&amp; (fvarCount == 0);</div>\n+<div class=\"line\"><a id=\"l00512\" name=\"l00512\"></a><span class=\"lineno\">  512</span>    <a class=\"code hl_typedef\" href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">FVarID</a> dfltFVarID = useDfltFVarID ? _factoryOptions.<a class=\"code hl_function\" href=\"a00945.html#a51ba21f3605015ed597a25303143c0b1\">GetDefaultFVarID</a>() : 0;</div>\n+<div class=\"line\"><a id=\"l00513\" name=\"l00513\"></a><span class=\"lineno\">  513</span> </div>\n+<div class=\"line\"><a id=\"l00514\" name=\"l00514\"></a><span class=\"lineno\">  514</span>    <span class=\"keywordflow\">return</span> initSurfaces(faceIndex,</div>\n+<div class=\"line\"><a id=\"l00515\" name=\"l00515\"></a><span class=\"lineno\">  515</span>                        vtxSurface    ? &amp;vtxSurface-&gt;getSurfaceData()   : 0,</div>\n+<div class=\"line\"><a id=\"l00516\" name=\"l00516\"></a><span class=\"lineno\">  516</span>                        varSurface    ? &amp;varSurface-&gt;getSurfaceData()   : 0,</div>\n+<div class=\"line\"><a id=\"l00517\" name=\"l00517\"></a><span class=\"lineno\">  517</span>                        fvarSurfaces  ? &amp;fvarSurfaces-&gt;getSurfaceData() : 0,</div>\n+<div class=\"line\"><a id=\"l00518\" name=\"l00518\"></a><span class=\"lineno\">  518</span>                        fvarCount     ? fvarCount : (fvarSurfaces != 0),</div>\n+<div class=\"line\"><a id=\"l00519\" name=\"l00519\"></a><span class=\"lineno\">  519</span>                        useDfltFVarID ? &amp;dfltFVarID : fvarIDs);</div>\n+<div class=\"line\"><a id=\"l00520\" name=\"l00520\"></a><span class=\"lineno\">  520</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00521\" name=\"l00521\"></a><span class=\"lineno\">  521</span> </div>\n+<div class=\"line\"><a id=\"l00522\" name=\"l00522\"></a><span class=\"lineno\">  522</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00523\" name=\"l00523\"></a><span class=\"lineno\">  523</span><span class=\"comment\">//  Inline methods to allocate and initialize Surfaces:</span></div>\n+<div class=\"line\"><a id=\"l00524\" name=\"l00524\"></a><span class=\"lineno\">  524</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00525\" name=\"l00525\"></a><span class=\"lineno\">  525</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00526\" name=\"l00526\"></a><span class=\"lineno\">  526</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;</a> *</div>\n+<div class=\"foldopen\" id=\"foldopen00527\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00527\" name=\"l00527\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00941.html#a676cf019574c99fa77341ac09889192d\">  527</a></span><a class=\"code hl_function\" href=\"a00941.html#a676cf019574c99fa77341ac09889192d\">SurfaceFactory::CreateVertexSurface</a>(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00528\" name=\"l00528\"></a><span class=\"lineno\">  528</span>    <a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;</a> * s = <span class=\"keyword\">new</span> <a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;</a>();</div>\n+<div class=\"line\"><a id=\"l00529\" name=\"l00529\"></a><span class=\"lineno\">  529</span>    <span class=\"keywordflow\">if</span> (InitVertexSurface&lt;REAL&gt;(faceIndex, s)) <span class=\"keywordflow\">return</span> s;</div>\n+<div class=\"line\"><a id=\"l00530\" name=\"l00530\"></a><span class=\"lineno\">  530</span>    <span class=\"keyword\">delete</span> s;</div>\n+<div class=\"line\"><a id=\"l00531\" name=\"l00531\"></a><span class=\"lineno\">  531</span>    <span class=\"keywordflow\">return</span> 0;</div>\n+<div class=\"line\"><a id=\"l00532\" name=\"l00532\"></a><span class=\"lineno\">  532</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00533\" name=\"l00533\"></a><span class=\"lineno\">  533</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00534\" name=\"l00534\"></a><span class=\"lineno\">  534</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;</a> *</div>\n+<div class=\"foldopen\" id=\"foldopen00535\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00535\" name=\"l00535\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00941.html#a81638f2ff6818fd96aa7cd1ad3ed0703\">  535</a></span><a class=\"code hl_function\" href=\"a00941.html#a81638f2ff6818fd96aa7cd1ad3ed0703\">SurfaceFactory::CreateVaryingSurface</a>(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00536\" name=\"l00536\"></a><span class=\"lineno\">  536</span>    <a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;</a> * s = <span class=\"keyword\">new</span> <a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;</a>();</div>\n+<div class=\"line\"><a id=\"l00537\" name=\"l00537\"></a><span class=\"lineno\">  537</span>    <span class=\"keywordflow\">if</span> (InitVaryingSurface&lt;REAL&gt;(faceIndex, s)) <span class=\"keywordflow\">return</span> s;</div>\n+<div class=\"line\"><a id=\"l00538\" name=\"l00538\"></a><span class=\"lineno\">  538</span>    <span class=\"keyword\">delete</span> s;</div>\n+<div class=\"line\"><a id=\"l00539\" name=\"l00539\"></a><span class=\"lineno\">  539</span>    <span class=\"keywordflow\">return</span> 0;</div>\n+<div class=\"line\"><a id=\"l00540\" name=\"l00540\"></a><span class=\"lineno\">  540</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00541\" name=\"l00541\"></a><span class=\"lineno\">  541</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00542\" name=\"l00542\"></a><span class=\"lineno\">  542</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;</a> *</div>\n+<div class=\"foldopen\" id=\"foldopen00543\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00543\" name=\"l00543\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00941.html#a59227e292ea63aa9641a090521cfd457\">  543</a></span><a class=\"code hl_function\" href=\"a00941.html#a67a5dcab87b052d231634dd9fcf5dee2\">SurfaceFactory::CreateFaceVaryingSurface</a>(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex, <a class=\"code hl_typedef\" href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">FVarID</a> fvarID)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00544\" name=\"l00544\"></a><span class=\"lineno\">  544</span>    <a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;</a> * s = <span class=\"keyword\">new</span> <a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;</a>();</div>\n+<div class=\"line\"><a id=\"l00545\" name=\"l00545\"></a><span class=\"lineno\">  545</span>    <span class=\"keywordflow\">if</span> (InitFaceVaryingSurface&lt;REAL&gt;(faceIndex, s, fvarID)) <span class=\"keywordflow\">return</span> s;</div>\n+<div class=\"line\"><a id=\"l00546\" name=\"l00546\"></a><span class=\"lineno\">  546</span>    <span class=\"keyword\">delete</span> s;</div>\n+<div class=\"line\"><a id=\"l00547\" name=\"l00547\"></a><span class=\"lineno\">  547</span>    <span class=\"keywordflow\">return</span> 0;</div>\n+<div class=\"line\"><a id=\"l00548\" name=\"l00548\"></a><span class=\"lineno\">  548</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00549\" name=\"l00549\"></a><span class=\"lineno\">  549</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00550\" name=\"l00550\"></a><span class=\"lineno\">  550</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;</a> *</div>\n+<div class=\"foldopen\" id=\"foldopen00551\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00551\" name=\"l00551\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00941.html#a67a5dcab87b052d231634dd9fcf5dee2\">  551</a></span><a class=\"code hl_function\" href=\"a00941.html#a67a5dcab87b052d231634dd9fcf5dee2\">SurfaceFactory::CreateFaceVaryingSurface</a>(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> face)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00552\" name=\"l00552\"></a><span class=\"lineno\">  552</span>    <a class=\"code hl_typedef\" href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">FVarID</a> dfltID = _factoryOptions.<a class=\"code hl_function\" href=\"a00945.html#a51ba21f3605015ed597a25303143c0b1\">GetDefaultFVarID</a>();</div>\n+<div class=\"line\"><a id=\"l00553\" name=\"l00553\"></a><span class=\"lineno\">  553</span>    <span class=\"keywordflow\">return</span> CreateFaceVaryingSurface&lt;REAL&gt;(face, dfltID);</div>\n+<div class=\"line\"><a id=\"l00554\" name=\"l00554\"></a><span class=\"lineno\">  554</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00555\" name=\"l00555\"></a><span class=\"lineno\">  555</span> </div>\n+<div class=\"line\"><a id=\"l00556\" name=\"l00556\"></a><span class=\"lineno\">  556</span>} <span class=\"comment\">// end namespace Bfr</span></div>\n+<div class=\"line\"><a id=\"l00557\" name=\"l00557\"></a><span class=\"lineno\">  557</span> </div>\n+<div class=\"line\"><a id=\"l00558\" name=\"l00558\"></a><span class=\"lineno\">  558</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00559\" name=\"l00559\"></a><span class=\"lineno\">  559</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00560\" name=\"l00560\"></a><span class=\"lineno\">  560</span> </div>\n+<div class=\"line\"><a id=\"l00561\" name=\"l00561\"></a><span class=\"lineno\">  561</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l00562\" name=\"l00562\"></a><span class=\"lineno\">  562</span> </div>\n+<div class=\"line\"><a id=\"l00563\" name=\"l00563\"></a><span class=\"lineno\">  563</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_BFR_SURFACE_FACTORY_H */</span><span class=\"preprocessor\"></span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa00913_html_aa3daa2f428c6be2b1cb394f3a525833d\"><div class=\"ttname\"><a href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833d\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::SchemeType</a></div><div class=\"ttdeci\">SchemeType</div><div class=\"ttdoc\">Enumerated type for all subdivision schemes supported by OpenSubdiv.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01492_source.html#l00037\">types.h:37</a></div></div>\n+<div class=\"ttc\" id=\"aa00921_html\"><div class=\"ttname\"><a href=\"a00921.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization</a></div><div class=\"ttdoc\">Simple class defining the 2D parameterization of a face.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00899_source.html#l00052\">parameterization.h:52</a></div></div>\n+<div class=\"ttc\" id=\"aa00933_html\"><div class=\"ttname\"><a href=\"a00933.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface</a></div><div class=\"ttdoc\">Encapsulates the limit surface for a face of a mesh.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00887_source.html#l00059\">surface.h:59</a></div></div>\n+<div class=\"ttc\" id=\"aa00941_html\"><div class=\"ttname\"><a href=\"a00941.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory</a></div><div class=\"ttdoc\">Base class providing initialization of a Surface for each face of a mesh.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00881_source.html#l00103\">surfaceFactory.h:103</a></div></div>\n+<div class=\"ttc\" id=\"aa00941_html_a043a7fc91f7bc29a4cbba51d9cb00ecb\"><div class=\"ttname\"><a href=\"a00941.html#a043a7fc91f7bc29a4cbba51d9cb00ecb\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::setInternalCache</a></div><div class=\"ttdeci\">void setInternalCache(SurfaceFactoryCache *cache)</div><div class=\"ttdoc\">Subclass to identify an internal cache for use by base class.</div></div>\n+<div class=\"ttc\" id=\"aa00941_html_a1e36434fc02ae0d7a087a8eb07577ee9\"><div class=\"ttname\"><a href=\"a00941.html#a1e36434fc02ae0d7a087a8eb07577ee9\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::~SurfaceFactory</a></div><div class=\"ttdeci\">~SurfaceFactory() override</div></div>\n+<div class=\"ttc\" id=\"aa00941_html_a2236306cbbc12f5a77753e269c76fe0e\"><div class=\"ttname\"><a href=\"a00941.html#a2236306cbbc12f5a77753e269c76fe0e\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::InitFaceVaryingSurface</a></div><div class=\"ttdeci\">bool InitFaceVaryingSurface(Index faceIndex, Surface&lt; REAL &gt; *surface) const</div><div class=\"ttdoc\">Initialize a Surface for the default face-varying data.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00881_source.html#l00500\">surfaceFactory.h:500</a></div></div>\n+<div class=\"ttc\" id=\"aa00941_html_a4528f38657b0c96bce6c3d7deffd7c02\"><div class=\"ttname\"><a href=\"a00941.html#a4528f38657b0c96bce6c3d7deffd7c02\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::GetSchemeOptions</a></div><div class=\"ttdeci\">Sdc::Options GetSchemeOptions() const</div><div class=\"ttdoc\">Return the set of subdivision options.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00881_source.html#l00173\">surfaceFactory.h:173</a></div></div>\n+<div class=\"ttc\" id=\"aa00941_html_a59964d0c9ed91d83447ceacede2acc1d\"><div class=\"ttname\"><a href=\"a00941.html#a59964d0c9ed91d83447ceacede2acc1d\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::GetFaceParameterization</a></div><div class=\"ttdeci\">Parameterization GetFaceParameterization(Index faceIndex) const</div><div class=\"ttdoc\">Return the Parameterization of a face with a limit surface.</div></div>\n+<div class=\"ttc\" id=\"aa00941_html_a5ac6bb6255796f79debe11e25b816093\"><div class=\"ttname\"><a href=\"a00941.html#a5ac6bb6255796f79debe11e25b816093\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::SurfaceFactory</a></div><div class=\"ttdeci\">SurfaceFactory(SurfaceFactory const &amp;)=delete</div></div>\n+<div class=\"ttc\" id=\"aa00941_html_a5cab9f649e56c15a486e3878a19bedf7\"><div class=\"ttname\"><a href=\"a00941.html#a5cab9f649e56c15a486e3878a19bedf7\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::FaceHasLimitSurface</a></div><div class=\"ttdeci\">bool FaceHasLimitSurface(Index faceIndex) const</div><div class=\"ttdoc\">Return if a specified face has a limit surface.</div></div>\n+<div class=\"ttc\" id=\"aa00941_html_a5d089ab30f0402395635d7b389710594\"><div class=\"ttname\"><a href=\"a00941.html#a5d089ab30f0402395635d7b389710594\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::operator=</a></div><div class=\"ttdeci\">SurfaceFactory &amp; operator=(SurfaceFactory const &amp;)=delete</div></div>\n+<div class=\"ttc\" id=\"aa00941_html_a676cf019574c99fa77341ac09889192d\"><div class=\"ttname\"><a href=\"a00941.html#a676cf019574c99fa77341ac09889192d\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::CreateVertexSurface</a></div><div class=\"ttdeci\">Surface&lt; REAL &gt; * CreateVertexSurface(Index faceIndex) const</div><div class=\"ttdoc\">Construct a Surface for vertex data.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00881_source.html#l00527\">surfaceFactory.h:527</a></div></div>\n+<div class=\"ttc\" id=\"aa00941_html_a67a5dcab87b052d231634dd9fcf5dee2\"><div class=\"ttname\"><a href=\"a00941.html#a67a5dcab87b052d231634dd9fcf5dee2\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::CreateFaceVaryingSurface</a></div><div class=\"ttdeci\">Surface&lt; REAL &gt; * CreateFaceVaryingSurface(Index faceIndex) const</div><div class=\"ttdoc\">Construct a Surface for the default face-varying data.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00881_source.html#l00551\">surfaceFactory.h:551</a></div></div>\n+<div class=\"ttc\" id=\"aa00941_html_a6ab6508b7c2a5c259acf6b9b89688fc8\"><div class=\"ttname\"><a href=\"a00941.html#a6ab6508b7c2a5c259acf6b9b89688fc8\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::InitSurfaces</a></div><div class=\"ttdeci\">bool InitSurfaces(Index faceIndex, Surface&lt; REAL &gt; *vtxSurface, Surface&lt; REAL &gt; *fvarSurfaces, FVarID const fvarIDs[]=0, int fvarCount=0, Surface&lt; REAL &gt; *varSurface=0) const</div><div class=\"ttdoc\">Initialize multiple Surfaces at once.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00881_source.html#l00507\">surfaceFactory.h:507</a></div></div>\n+<div class=\"ttc\" id=\"aa00941_html_a758e06255013d2d7393c3ac2d18f6922\"><div class=\"ttname\"><a href=\"a00941.html#a758e06255013d2d7393c3ac2d18f6922\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::GetSchemeType</a></div><div class=\"ttdeci\">Sdc::SchemeType GetSchemeType() const</div><div class=\"ttdoc\">Return the subdivision scheme.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00881_source.html#l00170\">surfaceFactory.h:170</a></div></div>\n+<div class=\"ttc\" id=\"aa00941_html_a81638f2ff6818fd96aa7cd1ad3ed0703\"><div class=\"ttname\"><a href=\"a00941.html#a81638f2ff6818fd96aa7cd1ad3ed0703\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::CreateVaryingSurface</a></div><div class=\"ttdeci\">Surface&lt; REAL &gt; * CreateVaryingSurface(Index faceIndex) const</div><div class=\"ttdoc\">Construct a Surface for varying data.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00881_source.html#l00535\">surfaceFactory.h:535</a></div></div>\n+<div class=\"ttc\" id=\"aa00941_html_abb4a2f3f7e6623ace424afc5c0315fc1\"><div class=\"ttname\"><a href=\"a00941.html#abb4a2f3f7e6623ace424afc5c0315fc1\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::InitVertexSurface</a></div><div class=\"ttdeci\">bool InitVertexSurface(Index faceIndex, Surface&lt; REAL &gt; *surface) const</div><div class=\"ttdoc\">Initialize a Surface for vertex data.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00881_source.html#l00482\">surfaceFactory.h:482</a></div></div>\n+<div class=\"ttc\" id=\"aa00941_html_adee257f933b8440f3e1b4760c506f15f\"><div class=\"ttname\"><a href=\"a00941.html#adee257f933b8440f3e1b4760c506f15f\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::InitVaryingSurface</a></div><div class=\"ttdeci\">bool InitVaryingSurface(Index faceIndex, Surface&lt; REAL &gt; *surface) const</div><div class=\"ttdoc\">Initialize a Surface for varying data.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00881_source.html#l00488\">surfaceFactory.h:488</a></div></div>\n+<div class=\"ttc\" id=\"aa00941_html_ae54ee5a9e2bcb2bfdf395084395a0719\"><div class=\"ttname\"><a href=\"a00941.html#ae54ee5a9e2bcb2bfdf395084395a0719\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::SurfaceFactory</a></div><div class=\"ttdeci\">SurfaceFactory(Sdc::SchemeType schemeType, Sdc::Options const &amp;schemeOptions, Options const &amp;limitOptions)</div><div class=\"ttdoc\">Constructor to be used by subclasses.</div></div>\n+<div class=\"ttc\" id=\"aa00945_html\"><div class=\"ttname\"><a href=\"a00945.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::Options</a></div><div class=\"ttdoc\">Simple set of options assigned to instances of SurfaceFactory.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00881_source.html#l00116\">surfaceFactory.h:116</a></div></div>\n+<div class=\"ttc\" id=\"aa00945_html_a06af1ca1d903fe5110c962bec75acec7\"><div class=\"ttname\"><a href=\"a00945.html#a06af1ca1d903fe5110c962bec75acec7\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::Options::SetExternalCache</a></div><div class=\"ttdeci\">Options &amp; SetExternalCache(SurfaceFactoryCache *c)</div><div class=\"ttdoc\">Assign an external cache to override the internal.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00881_source.html#l00462\">surfaceFactory.h:462</a></div></div>\n+<div class=\"ttc\" id=\"aa00945_html_a14e81c17e41ad591714664008331f41e\"><div class=\"ttname\"><a href=\"a00945.html#a14e81c17e41ad591714664008331f41e\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::Options::EnableCaching</a></div><div class=\"ttdeci\">Options &amp; EnableCaching(bool on)</div><div class=\"ttdoc\">Enable or disable caching (default is true):</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00881_source.html#l00457\">surfaceFactory.h:457</a></div></div>\n+<div class=\"ttc\" id=\"aa00945_html_a1ee6780461b18cc80b5c79b520310079\"><div class=\"ttname\"><a href=\"a00945.html#a1ee6780461b18cc80b5c79b520310079\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::Options::SetApproxLevelSmooth</a></div><div class=\"ttdeci\">Options &amp; SetApproxLevelSmooth(int level)</div><div class=\"ttdoc\">Assign maximum refinement level for smooth features.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00881_source.html#l00467\">surfaceFactory.h:467</a></div></div>\n+<div class=\"ttc\" id=\"aa00945_html_a1ff965cb913fbc4716a5985c3d3c60e3\"><div class=\"ttname\"><a href=\"a00945.html#a1ff965cb913fbc4716a5985c3d3c60e3\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::Options::GetApproxLevelSmooth</a></div><div class=\"ttdeci\">int GetApproxLevelSmooth() const</div><div class=\"ttdoc\">Return maximum refinement level for smooth features.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00881_source.html#l00142\">surfaceFactory.h:142</a></div></div>\n+<div class=\"ttc\" id=\"aa00945_html_a28d39a844c3a37ab61d32ab7c6352f09\"><div class=\"ttname\"><a href=\"a00945.html#a28d39a844c3a37ab61d32ab7c6352f09\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::Options::Options</a></div><div class=\"ttdeci\">Options()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00881_source.html#l00118\">surfaceFactory.h:118</a></div></div>\n+<div class=\"ttc\" id=\"aa00945_html_a2c83835832d46536d097ae6ff32659db\"><div class=\"ttname\"><a href=\"a00945.html#a2c83835832d46536d097ae6ff32659db\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::Options::IsCachingEnabled</a></div><div class=\"ttdeci\">bool IsCachingEnabled() const</div><div class=\"ttdoc\">Return if caching is enable.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00881_source.html#l00130\">surfaceFactory.h:130</a></div></div>\n+<div class=\"ttc\" id=\"aa00945_html_a2db0e8ff5143c3a69bf3772bac7bde78\"><div class=\"ttname\"><a href=\"a00945.html#a2db0e8ff5143c3a69bf3772bac7bde78\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::Options::SetDefaultFVarID</a></div><div class=\"ttdeci\">Options &amp; SetDefaultFVarID(FVarID id)</div><div class=\"ttdoc\">Assign the default face-varying ID (none assigned by default)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00881_source.html#l00452\">surfaceFactory.h:452</a></div></div>\n+<div class=\"ttc\" id=\"aa00945_html_a391dfc1d3e1d75fc0aa496717784a95e\"><div class=\"ttname\"><a href=\"a00945.html#a391dfc1d3e1d75fc0aa496717784a95e\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::Options::SetApproxLevelSharp</a></div><div class=\"ttdeci\">Options &amp; SetApproxLevelSharp(int level)</div><div class=\"ttdoc\">Assign maximum refinement level for sharp features.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00881_source.html#l00472\">surfaceFactory.h:472</a></div></div>\n+<div class=\"ttc\" id=\"aa00945_html_a51ba21f3605015ed597a25303143c0b1\"><div class=\"ttname\"><a href=\"a00945.html#a51ba21f3605015ed597a25303143c0b1\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::Options::GetDefaultFVarID</a></div><div class=\"ttdeci\">FVarID GetDefaultFVarID() const</div><div class=\"ttdoc\">Return the default face-varying ID.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00881_source.html#l00125\">surfaceFactory.h:125</a></div></div>\n+<div class=\"ttc\" id=\"aa00945_html_a595df0016de04902f5954b740c7baa2c\"><div class=\"ttname\"><a href=\"a00945.html#a595df0016de04902f5954b740c7baa2c\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::Options::GetApproxLevelSharp</a></div><div class=\"ttdeci\">int GetApproxLevelSharp() const</div><div class=\"ttdoc\">Return maximum refinement level for sharp features.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00881_source.html#l00147\">surfaceFactory.h:147</a></div></div>\n+<div class=\"ttc\" id=\"aa00945_html_acd0411b6d29a6acae3826da06d86bd5b\"><div class=\"ttname\"><a href=\"a00945.html#acd0411b6d29a6acae3826da06d86bd5b\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::Options::GetExternalCache</a></div><div class=\"ttdeci\">SurfaceFactoryCache * GetExternalCache() const</div><div class=\"ttdoc\">Return any assigned external cache.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00881_source.html#l00135\">surfaceFactory.h:135</a></div></div>\n+<div class=\"ttc\" id=\"aa00949_html\"><div class=\"ttname\"><a href=\"a00949.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryCache</a></div><div class=\"ttdoc\">Container used internally by SurfaceFactory to store reusable information.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00896_source.html#l00059\">surfaceFactoryCache.h:59</a></div></div>\n+<div class=\"ttc\" id=\"aa00957_html\"><div class=\"ttname\"><a href=\"a00957.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryMeshAdapter</a></div><div class=\"ttdoc\">Abstract interface adapting SurfaceFactory to a connected mesh representation.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00893_source.html#l00065\">surfaceFactoryMeshAdapter.h:65</a></div></div>\n+<div class=\"ttc\" id=\"aa00957_html_a4a0e50e01fef3e431767a928c2631cab\"><div class=\"ttname\"><a href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryMeshAdapter::Index</a></div><div class=\"ttdeci\">int Index</div><div class=\"ttdoc\">Integer type representing a mesh index.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00893_source.html#l00068\">surfaceFactoryMeshAdapter.h:68</a></div></div>\n+<div class=\"ttc\" id=\"aa00957_html_af98288d7b5176d7295be622a10c6c64e\"><div class=\"ttname\"><a href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryMeshAdapter::FVarID</a></div><div class=\"ttdeci\">std::intptr_t FVarID</div><div class=\"ttdoc\">Type used to identify and specify face-varying primvars.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00893_source.html#l00080\">surfaceFactoryMeshAdapter.h:80</a></div></div>\n+<div class=\"ttc\" id=\"aa01337_html\"><div class=\"ttname\"><a href=\"a01337.html\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options</a></div><div class=\"ttdoc\">All supported options applying to subdivision scheme.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00860_source.html#l00051\">options.h:51</a></div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00881.html\">clVertexBuffer.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_fa5edef2a780a73fbfb6a11f1af88ceb.html\">bfr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00881.html\">surfaceFactory.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-clVertexBuffer.h\n+surfaceFactory.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2013 Pixar\n+2// Copyright 2021 Pixar\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -24,114 +24,476 @@\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n 24\n-25#ifndef OPENSUBDIV3_OSD_CL_VERTEX_BUFFER_H\n-26#define OPENSUBDIV3_OSD_CL_VERTEX_BUFFER_H\n+25#ifndef OPENSUBDIV3_BFR_SURFACE_FACTORY_H\n+26#define OPENSUBDIV3_BFR_SURFACE_FACTORY_H\n 27\n 28#include \"../version.h\"\n-29#include \"../osd/opencl.h\"\n-30\n-31namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-32namespace OPENSUBDIV_VERSION {\n-33\n-34namespace Osd {\n-35\n-_\b4_\b2class _\bC_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br {\n-43\n-44public:\n-_\b4_\b6 static _\bC_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br * _\bC_\br_\be_\ba_\bt_\be(int numElements, int numVertices, cl_context\n-clContext);\n-47\n-48 template <typename DEVICE_CONTEXT>\n-_\b4_\b9 static _\bC_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br * _\bC_\br_\be_\ba_\bt_\be(int numElements, int numVertices,\n-50 DEVICE_CONTEXT context) {\n-51 return _\bC_\br_\be_\ba_\bt_\be(numElements, numVertices, context->GetContext());\n-52 }\n-53\n-_\b5_\b5 _\b~_\bC_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br();\n-56\n-_\b5_\b9 void _\bU_\bp_\bd_\ba_\bt_\be_\bD_\ba_\bt_\ba(const float *src, int startVertex, int numVertices,\n-cl_command_queue clQueue,\n-60 cl_event* startEvents = NULL, unsigned int numStartEvents = 0, cl_event*\n-endEvent = NULL);\n-61\n-62 template<typename DEVICE_CONTEXT>\n-_\b6_\b3 void _\bU_\bp_\bd_\ba_\bt_\be_\bD_\ba_\bt_\ba(const float *src, int startVertex, int numVertices,\n-64 DEVICE_CONTEXT context,\n-65 cl_event* startEvents = NULL, unsigned int numStartEvents = 0, cl_event*\n-endEvent = NULL) {\n-66 _\bU_\bp_\bd_\ba_\bt_\be_\bD_\ba_\bt_\ba(src, startVertex, numVertices, context->GetCommandQueue(),\n-startEvents, numStartEvents, endEvent);\n-67 }\n-68\n-_\b7_\b0 int _\bG_\be_\bt_\bN_\bu_\bm_\bE_\bl_\be_\bm_\be_\bn_\bt_\bs() const;\n-71\n-_\b7_\b3 int _\bG_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs() const;\n-74\n-_\b7_\b6 cl_mem _\bB_\bi_\bn_\bd_\bC_\bL_\bB_\bu_\bf_\bf_\be_\br(cl_command_queue queue);\n-77\n-78protected:\n-_\b8_\b0 _\bC_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br(int numElements, int numVertices, cl_context clContext);\n-81\n-_\b8_\b4 bool _\ba_\bl_\bl_\bo_\bc_\ba_\bt_\be(cl_context clContext);\n-85\n-86private:\n-87 int _numElements;\n-88 int _numVertices;\n-89 cl_mem _clMemory;\n-90};\n-91\n-92} // end namespace Osd\n-93\n-94} // end namespace OPENSUBDIV_VERSION\n-95using namespace OPENSUBDIV_VERSION;\n-96\n-97} // end namespace OpenSubdiv\n-98\n-99#endif // OPENSUBDIV3_OSD_CL_VERTEX_BUFFER_H\n+29\n+30#include \"../bfr/surface.h\"\n+31#include \"../bfr/surfaceFactoryMeshAdapter.h\"\n+32#include \"../sdc/options.h\"\n+33#include \"../sdc/types.h\"\n+34\n+35#include <cstdint>\n+36\n+37namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+38namespace OPENSUBDIV_VERSION {\n+39\n+40namespace Bfr {\n+41\n+42//\n+43// Forward declarations of public and internal classes used by factories:\n+44//\n+45class SurfaceFactoryCache;\n+46class FaceTopology;\n+47class FaceSurface;\n+48\n+_\b1_\b0_\b3class _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by : public _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br {\n+104public:\n+_\b1_\b1_\b6 class _\bO_\bp_\bt_\bi_\bo_\bn_\bs {\n+117 public:\n+_\b1_\b1_\b8 _\bO_\bp_\bt_\bi_\bo_\bn_\bs() : _dfltFVarID(-1), _externCache(0), _enableCache(true),\n+119 _approxLevelSmooth(2), _approxLevelSharp(6) { }\n+120\n+123 _\bO_\bp_\bt_\bi_\bo_\bn_\bs & _\bS_\be_\bt_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bF_\bV_\ba_\br_\bI_\bD(_\bF_\bV_\ba_\br_\bI_\bD id);\n+_\b1_\b2_\b5 _\bF_\bV_\ba_\br_\bI_\bD _\bG_\be_\bt_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bF_\bV_\ba_\br_\bI_\bD() const { return _dfltFVarID; }\n+126\n+128 _\bO_\bp_\bt_\bi_\bo_\bn_\bs & _\bE_\bn_\ba_\bb_\bl_\be_\bC_\ba_\bc_\bh_\bi_\bn_\bg(bool on);\n+_\b1_\b3_\b0 bool _\bI_\bs_\bC_\ba_\bc_\bh_\bi_\bn_\bg_\bE_\bn_\ba_\bb_\bl_\be_\bd() const { return _enableCache; }\n+131\n+133 _\bO_\bp_\bt_\bi_\bo_\bn_\bs & _\bS_\be_\bt_\bE_\bx_\bt_\be_\br_\bn_\ba_\bl_\bC_\ba_\bc_\bh_\be(_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be * c);\n+_\b1_\b3_\b5 _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be * _\bG_\be_\bt_\bE_\bx_\bt_\be_\br_\bn_\ba_\bl_\bC_\ba_\bc_\bh_\be() const { return _externCache; }\n+136\n+137 // Set refinement levels used to approximate the limit surface\n+138 // for smooth and sharp features (reasonable defaults assigned):\n+140 _\bO_\bp_\bt_\bi_\bo_\bn_\bs & _\bS_\be_\bt_\bA_\bp_\bp_\br_\bo_\bx_\bL_\be_\bv_\be_\bl_\bS_\bm_\bo_\bo_\bt_\bh(int level);\n+_\b1_\b4_\b2 int _\bG_\be_\bt_\bA_\bp_\bp_\br_\bo_\bx_\bL_\be_\bv_\be_\bl_\bS_\bm_\bo_\bo_\bt_\bh() const { return _approxLevelSmooth; }\n+143\n+145 _\bO_\bp_\bt_\bi_\bo_\bn_\bs & _\bS_\be_\bt_\bA_\bp_\bp_\br_\bo_\bx_\bL_\be_\bv_\be_\bl_\bS_\bh_\ba_\br_\bp(int level);\n+_\b1_\b4_\b7 int _\bG_\be_\bt_\bA_\bp_\bp_\br_\bo_\bx_\bL_\be_\bv_\be_\bl_\bS_\bh_\ba_\br_\bp() const { return _approxLevelSharp; }\n+148\n+149 private:\n+150 // Member variables:\n+151 _\bF_\bV_\ba_\br_\bI_\bD _dfltFVarID;\n+152\n+153 _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be * _externCache;\n+154\n+155 unsigned char _enableCache : 1;\n+156 unsigned char _approxLevelSmooth;\n+157 unsigned char _approxLevelSharp;\n+158 };\n+159\n+160public:\n+_\b1_\b6_\b1 _\b~_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by() override;\n+162\n+164\n+168\n+_\b1_\b7_\b0 _\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\bT_\by_\bp_\be _\bG_\be_\bt_\bS_\bc_\bh_\be_\bm_\be_\bT_\by_\bp_\be() const { return _subdivScheme; }\n+171\n+_\b1_\b7_\b3 _\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs _\bG_\be_\bt_\bS_\bc_\bh_\be_\bm_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs() const { return _subdivOptions; }\n+175\n+176public:\n+178\n+190\n+_\b2_\b0_\b0 bool _\bF_\ba_\bc_\be_\bH_\ba_\bs_\bL_\bi_\bm_\bi_\bt_\bS_\bu_\br_\bf_\ba_\bc_\be(_\bI_\bn_\bd_\be_\bx faceIndex) const;\n+201\n+_\b2_\b0_\b8 _\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn _\bG_\be_\bt_\bF_\ba_\bc_\be_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn(_\bI_\bn_\bd_\be_\bx faceIndex) const;\n+210\n+211public:\n+213\n+233\n+241 template <typename REAL>\n+242 bool _\bI_\bn_\bi_\bt_\bV_\be_\br_\bt_\be_\bx_\bS_\bu_\br_\bf_\ba_\bc_\be(_\bI_\bn_\bd_\be_\bx faceIndex, _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b> * surface) const;\n+243\n+251 template <typename REAL>\n+252 bool _\bI_\bn_\bi_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bu_\br_\bf_\ba_\bc_\be(_\bI_\bn_\bd_\be_\bx faceIndex, _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b> * surface) const;\n+253\n+266 template <typename REAL>\n+267 bool _\bI_\bn_\bi_\bt_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bu_\br_\bf_\ba_\bc_\be(_\bI_\bn_\bd_\be_\bx faceIndex, _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b> * surface)\n+const;\n+268\n+278 template <typename REAL>\n+279 bool _\bI_\bn_\bi_\bt_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bu_\br_\bf_\ba_\bc_\be(_\bI_\bn_\bd_\be_\bx faceIndex, _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b> * surface,\n+280 _\bF_\bV_\ba_\br_\bI_\bD fvarID) const;\n+281\n+307 template <typename REAL>\n+308 bool _\bI_\bn_\bi_\bt_\bS_\bu_\br_\bf_\ba_\bc_\be_\bs(_\bI_\bn_\bd_\be_\bx faceIndex, _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b> * vtxSurface,\n+309 _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b> * fvarSurfaces,\n+310 _\bF_\bV_\ba_\br_\bI_\bD const fvarIDs[] = 0,\n+311 int fvarCount = 0,\n+312 _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b> * varSurface = 0) const;\n+314\n+316\n+319 //\n+320 // WIP - considering removing these since non-essential\n+321 //\n+322\n+324 template <typename REAL=float>\n+325 _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b> * _\bC_\br_\be_\ba_\bt_\be_\bV_\be_\br_\bt_\be_\bx_\bS_\bu_\br_\bf_\ba_\bc_\be(_\bI_\bn_\bd_\be_\bx faceIndex) const;\n+326\n+328 template <typename REAL=float>\n+329 _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b> * _\bC_\br_\be_\ba_\bt_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bu_\br_\bf_\ba_\bc_\be(_\bI_\bn_\bd_\be_\bx faceIndex) const;\n+330\n+332 template <typename REAL=float>\n+333 _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b> * _\bC_\br_\be_\ba_\bt_\be_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bu_\br_\bf_\ba_\bc_\be(_\bI_\bn_\bd_\be_\bx faceIndex) const;\n+334\n+336 template <typename REAL=float>\n+337 _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b> * _\bC_\br_\be_\ba_\bt_\be_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bu_\br_\bf_\ba_\bc_\be(_\bI_\bn_\bd_\be_\bx faceIndex, _\bF_\bV_\ba_\br_\bI_\bD id) const;\n+339\n+340protected:\n+342\n+346\n+_\b3_\b5_\b8 _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by(_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\bT_\by_\bp_\be schemeType,\n+359 _\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs const & schemeOptions,\n+360 _\bO_\bp_\bt_\bi_\bo_\bn_\bs const & limitOptions);\n+361\n+_\b3_\b6_\b3 void _\bs_\be_\bt_\bI_\bn_\bt_\be_\br_\bn_\ba_\bl_\bC_\ba_\bc_\bh_\be(_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be * cache);\n+364\n+_\b3_\b6_\b5 _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by(_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by const &) = delete;\n+_\b3_\b6_\b6 _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by & _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by const &) = delete;\n+368\n+369private:\n+370 // Supporting internal methods:\n+371 void setSubdivisionOptions(_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\bT_\by_\bp_\be, _\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs const & options);\n+372 void setFactoryOptions(_\bO_\bp_\bt_\bi_\bo_\bn_\bs const & factoryOptions);\n+373\n+374 bool faceHasLimitSimple(_\bI_\bn_\bd_\be_\bx faceIndex, int faceSize) const;\n+375\n+376 bool faceHasLimitNeighborhood(_\bI_\bn_\bd_\be_\bx faceIndex) const;\n+377 bool faceHasLimitNeighborhood(FaceTopology const & faceTopology) const;\n+378\n+379 class SurfaceSet;\n+380\n+381 bool populateAllSurfaces( _\bI_\bn_\bd_\be_\bx faceIndex, SurfaceSet * sSetPtr) const;\n+382 bool populateLinearSurfaces( _\bI_\bn_\bd_\be_\bx faceIndex, SurfaceSet * sSetPtr) const;\n+383 bool populateNonLinearSurfaces(_\bI_\bn_\bd_\be_\bx faceIndex, SurfaceSet * sSetPtr)\n+const;\n+384\n+385 bool initSurfaces(_\bI_\bn_\bd_\be_\bx faceIndex, internal::SurfaceData * vtxSurface,\n+386 internal::SurfaceData * varSurface,\n+387 internal::SurfaceData * fvarSurfaces,\n+388 int fvarCount,\n+389 _\bF_\bV_\ba_\br_\bI_\bD const fvarIDs[]) const;\n+390\n+391 // Methods to assemble topology and corresponding indices for entire face:\n+392 bool isFaceNeighborhoodRegular(_\bI_\bn_\bd_\be_\bx faceIndex,\n+393 _\bF_\bV_\ba_\br_\bI_\bD const * fvarPtrOrVtx,\n+394 _\bI_\bn_\bd_\be_\bx indices[]) const;\n+395\n+396 bool initFaceNeighborhoodTopology(_\bI_\bn_\bd_\be_\bx faceIndex,\n+397 FaceTopology * topology) const;\n+398\n+399 bool gatherFaceNeighborhoodTopology(_\bI_\bn_\bd_\be_\bx faceIndex,\n+400 FaceTopology * topology) const;\n+401\n+402 int gatherFaceNeighborhoodIndices(_\bI_\bn_\bd_\be_\bx faceIndex,\n+403 FaceTopology const & topology,\n+404 _\bF_\bV_\ba_\br_\bI_\bD const * fvarPtrOrVtx,\n+405 _\bI_\bn_\bd_\be_\bx indices[]) const;\n+406\n+407 // Methods to assemble Surfaces for the different categories of patch:\n+408 typedef internal::SurfaceData SurfaceType;\n+409\n+410 void assignLinearSurface(SurfaceType * surfacePtr,\n+411 _\bI_\bn_\bd_\be_\bx faceIndex,\n+412 _\bF_\bV_\ba_\br_\bI_\bD const * fvarPtrOrVtx) const;\n+413\n+414 void assignRegularSurface(SurfaceType * surfacePtr,\n+415 _\bI_\bn_\bd_\be_\bx const surfacePatchPoints[]) const;\n+416\n+417 void assignRegularSurface(SurfaceType * surfacePtr,\n+418 FaceSurface const & surfaceDescription) const;\n+419\n+420 void assignIrregularSurface(SurfaceType * surfacePtr,\n+421 FaceSurface const & surfaceDescription) const;\n+422\n+423 void copyNonLinearSurface(SurfaceType * surfacePtr,\n+424 SurfaceType const & surfaceSource,\n+425 FaceSurface const & surfaceDescription) const;\n+426\n+427private:\n+428 // Members describing options and subdivision properties (very little\n+429 // memory and low initialization cost)\n+430 _\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\bT_\by_\bp_\be _subdivScheme;\n+431 _\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs _subdivOptions;\n+432 _\bO_\bp_\bt_\bi_\bo_\bn_\bs _factoryOptions;\n+433\n+434 // Members related to subdivision topology, options and limit tests:\n+435 unsigned int _linearScheme : 1;\n+436 unsigned int _linearFVarInterp : 1;\n+437\n+438 unsigned int _testNeighborhoodForLimit : 1;\n+439 unsigned int _rejectSmoothBoundariesForLimit : 1;\n+440 unsigned int _rejectIrregularFacesForLimit : 1;\n+441\n+442 int _regFaceSize;\n+443\n+444 // Members related to caching:\n+445 _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be mutable * _topologyCache;\n+446};\n+447\n+448//\n+449// Inline methods for Options:\n+450//\n+451inline _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs &\n+_\b4_\b5_\b2_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bS_\be_\bt_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bF_\bV_\ba_\br_\bI_\bD(_\bF_\bV_\ba_\br_\bI_\bD id) {\n+453 _dfltFVarID = id;\n+454 return *this;\n+455}\n+456inline _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs &\n+_\b4_\b5_\b7_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bE_\bn_\ba_\bb_\bl_\be_\bC_\ba_\bc_\bh_\bi_\bn_\bg(bool on) {\n+458 _enableCache = on;\n+459 return *this;\n+460}\n+461inline _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs &\n+_\b4_\b6_\b2_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bS_\be_\bt_\bE_\bx_\bt_\be_\br_\bn_\ba_\bl_\bC_\ba_\bc_\bh_\be(_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be * c) {\n+463 _externCache = c;\n+464 return *this;\n+465}\n+466inline _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs &\n+_\b4_\b6_\b7_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bS_\be_\bt_\bA_\bp_\bp_\br_\bo_\bx_\bL_\be_\bv_\be_\bl_\bS_\bm_\bo_\bo_\bt_\bh(int level) {\n+468 _approxLevelSmooth = (unsigned char) level;\n+469 return *this;\n+470}\n+471inline _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs &\n+_\b4_\b7_\b2_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bS_\be_\bt_\bA_\bp_\bp_\br_\bo_\bx_\bL_\be_\bv_\be_\bl_\bS_\bh_\ba_\br_\bp(int level) {\n+473 _approxLevelSharp = (unsigned char) level;\n+474 return *this;\n+475}\n+476\n+477//\n+478// Inline methods to initializes Surfaces:\n+479//\n+480template <typename REAL>\n+481inline bool\n+_\b4_\b8_\b2_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bI_\bn_\bi_\bt_\bV_\be_\br_\bt_\be_\bx_\bS_\bu_\br_\bf_\ba_\bc_\be(_\bI_\bn_\bd_\be_\bx face, _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b> * s) const {\n+483\n+484 return initSurfaces(face, &s->getSurfaceData(), 0, 0, 0, 0);\n+485}\n+486template <typename REAL>\n+487inline bool\n+_\b4_\b8_\b8_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bI_\bn_\bi_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bu_\br_\bf_\ba_\bc_\be(_\bI_\bn_\bd_\be_\bx face, _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b> * s) const {\n+489\n+490 return initSurfaces(face, 0, &s->getSurfaceData(), 0, 0, 0);\n+491}\n+492template <typename REAL>\n+493inline bool\n+_\b4_\b9_\b4_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bI_\bn_\bi_\bt_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bu_\br_\bf_\ba_\bc_\be(_\bI_\bn_\bd_\be_\bx face, _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b> * s,\n+495 _\bF_\bV_\ba_\br_\bI_\bD fvarID) const {\n+496 return initSurfaces(face, 0, 0, &s->getSurfaceData(), 1, &fvarID);\n+497}\n+498template <typename REAL>\n+499inline bool\n+_\b5_\b0_\b0_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bI_\bn_\bi_\bt_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bu_\br_\bf_\ba_\bc_\be(_\bI_\bn_\bd_\be_\bx face, _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b> * s) const\n+{\n+501 _\bF_\bV_\ba_\br_\bI_\bD dfltID = _factoryOptions._\bG_\be_\bt_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bF_\bV_\ba_\br_\bI_\bD();\n+502 return initSurfaces(face, 0, 0, &s->getSurfaceData(), 1, &dfltID);\n+503}\n+504\n+505template <typename REAL>\n+506inline bool\n+_\b5_\b0_\b7_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bI_\bn_\bi_\bt_\bS_\bu_\br_\bf_\ba_\bc_\be_\bs(_\bI_\bn_\bd_\be_\bx faceIndex, _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b> * vtxSurface,\n+508 _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b> * fvarSurfaces, _\bF_\bV_\ba_\br_\bI_\bD const fvarIDs[], int fvarCount,\n+509 _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b> * varSurface) const {\n+510\n+511 bool useDfltFVarID = fvarSurfaces && (fvarIDs == 0) && (fvarCount == 0);\n+512 _\bF_\bV_\ba_\br_\bI_\bD dfltFVarID = useDfltFVarID ? _factoryOptions._\bG_\be_\bt_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bF_\bV_\ba_\br_\bI_\bD() : 0;\n+513\n+514 return initSurfaces(faceIndex,\n+515 vtxSurface ? &vtxSurface->getSurfaceData() : 0,\n+516 varSurface ? &varSurface->getSurfaceData() : 0,\n+517 fvarSurfaces ? &fvarSurfaces->getSurfaceData() : 0,\n+518 fvarCount ? fvarCount : (fvarSurfaces != 0),\n+519 useDfltFVarID ? &dfltFVarID : fvarIDs);\n+520}\n+521\n+522//\n+523// Inline methods to allocate and initialize Surfaces:\n+524//\n+525template <typename REAL>\n+526inline _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b> *\n+_\b5_\b2_\b7_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\br_\be_\ba_\bt_\be_\bV_\be_\br_\bt_\be_\bx_\bS_\bu_\br_\bf_\ba_\bc_\be(_\bI_\bn_\bd_\be_\bx faceIndex) const {\n+528 _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b> * s = new _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b>();\n+529 if (InitVertexSurface<REAL>(faceIndex, s)) return s;\n+530 delete s;\n+531 return 0;\n+532}\n+533template <typename REAL>\n+534inline _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b> *\n+_\b5_\b3_\b5_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\br_\be_\ba_\bt_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bu_\br_\bf_\ba_\bc_\be(_\bI_\bn_\bd_\be_\bx faceIndex) const {\n+536 _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b> * s = new _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b>();\n+537 if (InitVaryingSurface<REAL>(faceIndex, s)) return s;\n+538 delete s;\n+539 return 0;\n+540}\n+541template <typename REAL>\n+542inline _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b> *\n+_\b5_\b4_\b3_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\br_\be_\ba_\bt_\be_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bu_\br_\bf_\ba_\bc_\be(_\bI_\bn_\bd_\be_\bx faceIndex, _\bF_\bV_\ba_\br_\bI_\bD fvarID)\n+const {\n+544 _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b> * s = new _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b>();\n+545 if (InitFaceVaryingSurface<REAL>(faceIndex, s, fvarID)) return s;\n+546 delete s;\n+547 return 0;\n+548}\n+549template <typename REAL>\n+550inline _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b> *\n+_\b5_\b5_\b1_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\br_\be_\ba_\bt_\be_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bu_\br_\bf_\ba_\bc_\be(_\bI_\bn_\bd_\be_\bx face) const {\n+552 _\bF_\bV_\ba_\br_\bI_\bD dfltID = _factoryOptions._\bG_\be_\bt_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bF_\bV_\ba_\br_\bI_\bD();\n+553 return CreateFaceVaryingSurface<REAL>(face, dfltID);\n+554}\n+555\n+556} // end namespace Bfr\n+557\n+558} // end namespace OPENSUBDIV_VERSION\n+559using namespace OPENSUBDIV_VERSION;\n+560\n+561} // end namespace OpenSubdiv\n+562\n+563#endif /* OPENSUBDIV3_BFR_SURFACE_FACTORY_H */\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-Concrete vertex buffer class for OpenCL subdivision.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh_\b:_\b4_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bU_\bp_\bd_\ba_\bt_\be_\bD_\ba_\bt_\ba\n-void UpdateData(const float *src, int startVertex, int numVertices,\n-DEVICE_CONTEXT context, cl_event *startEvents=NULL, unsigned int\n-numStartEvents=0, cl_event *endEvent=NULL)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh_\b:_\b6_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\b~_\bC_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-~CLVertexBuffer()\n-Destructor.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bC_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-CLVertexBuffer(int numElements, int numVertices, cl_context clContext)\n-Constructor.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bU_\bp_\bd_\ba_\bt_\be_\bD_\ba_\bt_\ba\n-void UpdateData(const float *src, int startVertex, int numVertices,\n-cl_command_queue clQueue, cl_event *startEvents=NULL, unsigned int\n-numStartEvents=0, cl_event *endEvent=NULL)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bE_\bl_\be_\bm_\be_\bn_\bt_\bs\n-int GetNumElements() const\n-Returns how many elements defined in this vertex buffer.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\ba_\bl_\bl_\bo_\bc_\ba_\bt_\be\n-bool allocate(cl_context clContext)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n-int GetNumVertices() const\n-Returns how many vertices allocated in this vertex buffer.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static CLVertexBuffer * Create(int numElements, int numVertices, cl_context\n-clContext)\n-Creator. Returns NULL if error.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static CLVertexBuffer * Create(int numElements, int numVertices, DEVICE_CONTEXT\n-context)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bl_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh_\b:_\b4_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bB_\bi_\bn_\bd_\bC_\bL_\bB_\bu_\bf_\bf_\be_\br\n-cl_mem BindCLBuffer(cl_command_queue queue)\n-Returns the CL memory object.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\bT_\by_\bp_\be\n+SchemeType\n+Enumerated type for all subdivision schemes supported by OpenSubdiv.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b3_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn\n+Simple class defining the 2D parameterization of a face.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b5_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be\n+Encapsulates the limit surface for a face of a mesh.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\b._\bh_\b:_\b5_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by\n+Base class providing initialization of a Surface for each face of a mesh.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b0_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bs_\be_\bt_\bI_\bn_\bt_\be_\br_\bn_\ba_\bl_\bC_\ba_\bc_\bh_\be\n+void setInternalCache(SurfaceFactoryCache *cache)\n+Subclass to identify an internal cache for use by base class.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\b~_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by\n+~SurfaceFactory() override\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bI_\bn_\bi_\bt_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bu_\br_\bf_\ba_\bc_\be\n+bool InitFaceVaryingSurface(Index faceIndex, Surface< REAL > *surface) const\n+Initialize a Surface for the default face-varying data.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b0_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bG_\be_\bt_\bS_\bc_\bh_\be_\bm_\be_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n+Sdc::Options GetSchemeOptions() const\n+Return the set of subdivision options.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b7_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bG_\be_\bt_\bF_\ba_\bc_\be_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn\n+Parameterization GetFaceParameterization(Index faceIndex) const\n+Return the Parameterization of a face with a limit surface.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by\n+SurfaceFactory(SurfaceFactory const &)=delete\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bF_\ba_\bc_\be_\bH_\ba_\bs_\bL_\bi_\bm_\bi_\bt_\bS_\bu_\br_\bf_\ba_\bc_\be\n+bool FaceHasLimitSurface(Index faceIndex) const\n+Return if a specified face has a limit surface.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n+SurfaceFactory & operator=(SurfaceFactory const &)=delete\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\br_\be_\ba_\bt_\be_\bV_\be_\br_\bt_\be_\bx_\bS_\bu_\br_\bf_\ba_\bc_\be\n+Surface< REAL > * CreateVertexSurface(Index faceIndex) const\n+Construct a Surface for vertex data.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b2_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\br_\be_\ba_\bt_\be_\bF_\ba_\bc_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bu_\br_\bf_\ba_\bc_\be\n+Surface< REAL > * CreateFaceVaryingSurface(Index faceIndex) const\n+Construct a Surface for the default face-varying data.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b5_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bI_\bn_\bi_\bt_\bS_\bu_\br_\bf_\ba_\bc_\be_\bs\n+bool InitSurfaces(Index faceIndex, Surface< REAL > *vtxSurface, Surface< REAL >\n+*fvarSurfaces, FVarID const fvarIDs[]=0, int fvarCount=0, Surface< REAL >\n+*varSurface=0) const\n+Initialize multiple Surfaces at once.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b0_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bG_\be_\bt_\bS_\bc_\bh_\be_\bm_\be_\bT_\by_\bp_\be\n+Sdc::SchemeType GetSchemeType() const\n+Return the subdivision scheme.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b7_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bC_\br_\be_\ba_\bt_\be_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bu_\br_\bf_\ba_\bc_\be\n+Surface< REAL > * CreateVaryingSurface(Index faceIndex) const\n+Construct a Surface for varying data.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b3_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bI_\bn_\bi_\bt_\bV_\be_\br_\bt_\be_\bx_\bS_\bu_\br_\bf_\ba_\bc_\be\n+bool InitVertexSurface(Index faceIndex, Surface< REAL > *surface) const\n+Initialize a Surface for vertex data.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b4_\b8_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bI_\bn_\bi_\bt_\bV_\ba_\br_\by_\bi_\bn_\bg_\bS_\bu_\br_\bf_\ba_\bc_\be\n+bool InitVaryingSurface(Index faceIndex, Surface< REAL > *surface) const\n+Initialize a Surface for varying data.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b4_\b8_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by\n+SurfaceFactory(Sdc::SchemeType schemeType, Sdc::Options const &schemeOptions,\n+Options const &limitOptions)\n+Constructor to be used by subclasses.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n+Simple set of options assigned to instances of SurfaceFactory.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b1_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bS_\be_\bt_\bE_\bx_\bt_\be_\br_\bn_\ba_\bl_\bC_\ba_\bc_\bh_\be\n+Options & SetExternalCache(SurfaceFactoryCache *c)\n+Assign an external cache to override the internal.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b4_\b6_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bE_\bn_\ba_\bb_\bl_\be_\bC_\ba_\bc_\bh_\bi_\bn_\bg\n+Options & EnableCaching(bool on)\n+Enable or disable caching (default is true):\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b4_\b5_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bS_\be_\bt_\bA_\bp_\bp_\br_\bo_\bx_\bL_\be_\bv_\be_\bl_\bS_\bm_\bo_\bo_\bt_\bh\n+Options & SetApproxLevelSmooth(int level)\n+Assign maximum refinement level for smooth features.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b4_\b6_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bG_\be_\bt_\bA_\bp_\bp_\br_\bo_\bx_\bL_\be_\bv_\be_\bl_\bS_\bm_\bo_\bo_\bt_\bh\n+int GetApproxLevelSmooth() const\n+Return maximum refinement level for smooth features.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b4_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n+Options()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b1_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bI_\bs_\bC_\ba_\bc_\bh_\bi_\bn_\bg_\bE_\bn_\ba_\bb_\bl_\be_\bd\n+bool IsCachingEnabled() const\n+Return if caching is enable.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b3_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bS_\be_\bt_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bF_\bV_\ba_\br_\bI_\bD\n+Options & SetDefaultFVarID(FVarID id)\n+Assign the default face-varying ID (none assigned by default)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b4_\b5_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bS_\be_\bt_\bA_\bp_\bp_\br_\bo_\bx_\bL_\be_\bv_\be_\bl_\bS_\bh_\ba_\br_\bp\n+Options & SetApproxLevelSharp(int level)\n+Assign maximum refinement level for sharp features.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b4_\b7_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bG_\be_\bt_\bD_\be_\bf_\ba_\bu_\bl_\bt_\bF_\bV_\ba_\br_\bI_\bD\n+FVarID GetDefaultFVarID() const\n+Return the default face-varying ID.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b2_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:\n+_\bG_\be_\bt_\bA_\bp_\bp_\br_\bo_\bx_\bL_\be_\bv_\be_\bl_\bS_\bh_\ba_\br_\bp\n+int GetApproxLevelSharp() const\n+Return maximum refinement level for sharp features.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b4_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bG_\be_\bt_\bE_\bx_\bt_\be_\br_\bn_\ba_\bl_\bC_\ba_\bc_\bh_\be\n+SurfaceFactoryCache * GetExternalCache() const\n+Return any assigned external cache.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b3_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be\n+Container used internally by SurfaceFactory to store reusable information.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be_\b._\bh_\b:_\b5_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br\n+Abstract interface adapting SurfaceFactory to a connected mesh representation.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b._\bh_\b:_\b6_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx\n+int Index\n+Integer type representing a mesh index.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b._\bh_\b:_\b6_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b:_\b:_\bF_\bV_\ba_\br_\bI_\bD\n+std::intptr_t FVarID\n+Type used to identify and specify face-varying primvars.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b._\bh_\b:_\b8_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n+All supported options applying to subdivision scheme.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bo_\bp_\bt_\bi_\bo_\bn_\bs_\b._\bh_\b:_\b5_\b1\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bc_\bl_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh\n+    * _\bb_\bf_\br\n+    * _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00884.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00884.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/mtlVertexBuffer.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/bfr/refinerSurfaceFactory.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -90,40 +90,47 @@\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> &#124;\n <a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">mtlVertexBuffer.h File Reference</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">refinerSurfaceFactory.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00824_source.html\">../osd/mtlCommon.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00881_source.html\">../bfr/surfaceFactory.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00896_source.html\">../bfr/surfaceFactoryCache.h</a>&quot;</code><br />\n </div>\n <p><a href=\"a00884_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01309.html\">CPUMTLVertexBuffer</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00925.html\">RefinerSurfaceFactoryBase</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Intermediate subclass of <a class=\"el\" href=\"a00941.html\" title=\"Base class providing initialization of a Surface for each face of a mesh.\">SurfaceFactory</a> with <a class=\"el\" href=\"a01121.html\" title=\"Stores topology data for a specified set of refinement options.\">Far::TopologyRefiner</a> as the mesh.  <a href=\"a00925.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00929.html\">RefinerSurfaceFactory&lt; CACHE_TYPE &gt;</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Template for concrete subclasses of <a class=\"el\" href=\"a00925.html\" title=\"Intermediate subclass of SurfaceFactory with Far::TopologyRefiner as the mesh.\">RefinerSurfaceFactoryBase</a>.  <a href=\"a00929.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n+<tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far</a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:a00907\" id=\"r_a00907\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00907.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00884.html\">mtlVertexBuffer.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_fa5edef2a780a73fbfb6a11f1af88ceb.html\">bfr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00884.html\">refinerSurfaceFactory.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,23 +1,31 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-mtlVertexBuffer.h File Reference\n+refinerSurfaceFactory.h File Reference\n #include \"../version.h\"\n-#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bm_\bt_\bl_\bC_\bo_\bm_\bm_\bo_\bn_\b._\bh\"\n+#include \"_\b._\b._\b/_\bb_\bf_\br_\b/_\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh\"\n+#include \"_\b._\b._\b/_\bb_\bf_\br_\b/_\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be_\b._\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bC_\bP_\bU_\bM_\bT_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n+class \u00a0 _\bR_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bB_\ba_\bs_\be\n+\u00a0       Intermediate subclass of _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by with _\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br as\n+        the mesh. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bR_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b<_\b _\bC_\bA_\bC_\bH_\bE_\b__\bT_\bY_\bP_\bE_\b _\b>\n+\u00a0       Template for concrete subclasses of _\bR_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bB_\ba_\bs_\be. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br\n+\u00a0\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bm_\bt_\bl_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh\n+    * _\bb_\bf_\br\n+    * _\br_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00884.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00884.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,3 +1,4 @@\n var a00884 = [\n-    [\"CPUMTLVertexBuffer\", \"a01309.html\", \"a01309\"]\n+    [\"RefinerSurfaceFactoryBase\", \"a00925.html\", \"a00925\"],\n+    [\"RefinerSurfaceFactory< CACHE_TYPE >\", \"a00929.html\", \"a00929\"]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00884_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00884_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/mtlVertexBuffer.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/bfr/refinerSurfaceFactory.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">mtlVertexBuffer.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">refinerSurfaceFactory.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00884.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2013 Pixar</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2021 Pixar</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -119,97 +119,163 @@\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_MTL_VERTEX_BUFFER_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_MTL_VERTEX_BUFFER_H</span></div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_BFR_REFINER_SURFACE_FACTORY_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_BFR_REFINER_SURFACE_FACTORY_H</span></div>\n <div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n <div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#include &quot;../osd/mtlCommon.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span> </div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"keyword\">@protocol </span>MTLDevice;</div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"keyword\">@protocol </span>MTLBuffer;</div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">namespace </span>Osd {</div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00039\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01309.html\">   39</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01309.html\">CPUMTLVertexBuffer</a> {</div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01309.html#a2d6cb1babaae310f9c4c7fb45e0d33bc\">   41</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01309.html\">CPUMTLVertexBuffer</a>* <a class=\"code hl_function\" href=\"a01309.html#a2d6cb1babaae310f9c4c7fb45e0d33bc\">Create</a>(<span class=\"keywordtype\">int</span> numElements, <span class=\"keywordtype\">int</span> numVertices, <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context);</div>\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span> </div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01309.html#a892b78f6079decdbfa11a14db932c25f\">   43</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01309.html#a892b78f6079decdbfa11a14db932c25f\">UpdateData</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span>* src, <span class=\"keywordtype\">int</span> startVertex, <span class=\"keywordtype\">int</span> numVertices, <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context);</div>\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00045\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01309.html#a77cee40767fd4936f20a8f9d9d9ea625\">   45</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01309.html#a77cee40767fd4936f20a8f9d9d9ea625\">GetNumElements</a>()<span class=\"keyword\"> const</span></div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span><span class=\"keyword\">    </span>{</div>\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span>        <span class=\"keywordflow\">return</span> _numElements;</div>\n-<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00050\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01309.html#aaf4a32b8a414eff77000c584c2015cb7\">   50</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01309.html#aaf4a32b8a414eff77000c584c2015cb7\">GetNumVertices</a>()<span class=\"keyword\"> const</span></div>\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span><span class=\"keyword\">    </span>{</div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span>        <span class=\"keywordflow\">return</span> _numVertices;</div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span> </div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01309.html#adf7a9df5d3fc4d803bf5f1f374d90274\">   55</a></span>    <span class=\"keywordtype\">float</span>* <a class=\"code hl_function\" href=\"a01309.html#adf7a9df5d3fc4d803bf5f1f374d90274\">BindCpuBuffer</a>();</div>\n-<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01309.html#ab72828297150416f7e6293367f5a1ddf\">   56</a></span>    id&lt;MTLBuffer&gt; <a class=\"code hl_function\" href=\"a01309.html#ab72828297150416f7e6293367f5a1ddf\">BindMTLBuffer</a>(<a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context);</div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00058\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01309.html#a0bdc1fa268a4bd0a0fce92e933532677\">   58</a></span>    id&lt;MTLBuffer&gt; <a class=\"code hl_function\" href=\"a01309.html#a0bdc1fa268a4bd0a0fce92e933532677\">BindVBO</a>(<a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context)</div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span>    {</div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01309.html#ab72828297150416f7e6293367f5a1ddf\">BindMTLBuffer</a>(context);</div>\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span> </div>\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span><span class=\"keyword\">protected</span>:</div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span> </div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01309.html#a1457f342bc3007386104aa3d29277a67\">   65</a></span>    <a class=\"code hl_function\" href=\"a01309.html#a1457f342bc3007386104aa3d29277a67\">CPUMTLVertexBuffer</a>(<span class=\"keywordtype\">int</span> numElements, <span class=\"keywordtype\">int</span> numVertices);</div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span> </div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01309.html#ae765f2922a2e542bd85c1e0c0ae1d169\">   67</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01309.html#ae765f2922a2e542bd85c1e0c0ae1d169\">allocate</a>(<a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context);</div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../bfr/surfaceFactory.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../bfr/surfaceFactoryCache.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span> </div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00036\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00908.html\">   36</a></span><span class=\"keyword\">namespace </span>Far {</div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span>    <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01121.html\">TopologyRefiner</a>;</div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span> </div>\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"keyword\">namespace </span>Bfr {</div>\n+<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00058\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00925.html\">   58</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a00925.html\">RefinerSurfaceFactoryBase</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"a00941.html\">SurfaceFactory</a> {</div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span> </div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span> </div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00925.html#af457c931d6d611e35737454f2c483f84\">   66</a></span>    <a class=\"code hl_function\" href=\"a00925.html#af457c931d6d611e35737454f2c483f84\">RefinerSurfaceFactoryBase</a>(<a class=\"code hl_class\" href=\"a01121.html\">Far::TopologyRefiner</a> <span class=\"keyword\">const</span> &amp; mesh,</div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span>                              <a class=\"code hl_class\" href=\"a00945.html\">Options</a> <span class=\"keyword\">const</span> &amp; options);</div>\n <div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span> </div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span>    <span class=\"keywordtype\">int</span> _numElements;</div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>    <span class=\"keywordtype\">int</span> _numVertices;</div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>    id&lt;MTLBuffer&gt; _buffer;</div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span>    <span class=\"keywordtype\">bool</span> _dirty;</div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span> </div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span>} <span class=\"comment\">//end namespace Osd</span></div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00925.html#af1812d7cdae22188afec02034f1219cb\">   69</a></span>    <a class=\"code hl_function\" href=\"a00925.html#af1812d7cdae22188afec02034f1219cb\">~RefinerSurfaceFactoryBase</a>() <span class=\"keyword\">override</span> = <span class=\"keywordflow\">default</span>;</div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span> </div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span> </div>\n <div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span> </div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span>} <span class=\"comment\">//end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>    <span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00925.html#ab71a07bb9e45c564b8aabe091482414c\">   79</a></span>    <a class=\"code hl_class\" href=\"a01121.html\">Far::TopologyRefiner</a> <span class=\"keyword\">const</span> &amp; <a class=\"code hl_function\" href=\"a00925.html#ab71a07bb9e45c564b8aabe091482414c\">GetMesh</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _mesh; }</div>\n <div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span> </div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>} <span class=\"comment\">//end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span> </div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// OPENSUBDIV3_OSD_MTL_VERTEX_BUFFER_H</span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa01285_html\"><div class=\"ttname\"><a href=\"a01285.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLContext</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00824_source.html#l00040\">mtlCommon.h:40</a></div></div>\n-<div class=\"ttc\" id=\"aa01309_html\"><div class=\"ttname\"><a href=\"a01309.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CPUMTLVertexBuffer</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00884_source.html#l00039\">mtlVertexBuffer.h:39</a></div></div>\n-<div class=\"ttc\" id=\"aa01309_html_a0bdc1fa268a4bd0a0fce92e933532677\"><div class=\"ttname\"><a href=\"a01309.html#a0bdc1fa268a4bd0a0fce92e933532677\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CPUMTLVertexBuffer::BindVBO</a></div><div class=\"ttdeci\">id&lt; MTLBuffer &gt; BindVBO(MTLContext *context)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00884_source.html#l00058\">mtlVertexBuffer.h:58</a></div></div>\n-<div class=\"ttc\" id=\"aa01309_html_a1457f342bc3007386104aa3d29277a67\"><div class=\"ttname\"><a href=\"a01309.html#a1457f342bc3007386104aa3d29277a67\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CPUMTLVertexBuffer::CPUMTLVertexBuffer</a></div><div class=\"ttdeci\">CPUMTLVertexBuffer(int numElements, int numVertices)</div></div>\n-<div class=\"ttc\" id=\"aa01309_html_a2d6cb1babaae310f9c4c7fb45e0d33bc\"><div class=\"ttname\"><a href=\"a01309.html#a2d6cb1babaae310f9c4c7fb45e0d33bc\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CPUMTLVertexBuffer::Create</a></div><div class=\"ttdeci\">static CPUMTLVertexBuffer * Create(int numElements, int numVertices, MTLContext *context)</div></div>\n-<div class=\"ttc\" id=\"aa01309_html_a77cee40767fd4936f20a8f9d9d9ea625\"><div class=\"ttname\"><a href=\"a01309.html#a77cee40767fd4936f20a8f9d9d9ea625\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CPUMTLVertexBuffer::GetNumElements</a></div><div class=\"ttdeci\">int GetNumElements() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00884_source.html#l00045\">mtlVertexBuffer.h:45</a></div></div>\n-<div class=\"ttc\" id=\"aa01309_html_a892b78f6079decdbfa11a14db932c25f\"><div class=\"ttname\"><a href=\"a01309.html#a892b78f6079decdbfa11a14db932c25f\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CPUMTLVertexBuffer::UpdateData</a></div><div class=\"ttdeci\">void UpdateData(const float *src, int startVertex, int numVertices, MTLContext *context)</div></div>\n-<div class=\"ttc\" id=\"aa01309_html_aaf4a32b8a414eff77000c584c2015cb7\"><div class=\"ttname\"><a href=\"a01309.html#aaf4a32b8a414eff77000c584c2015cb7\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CPUMTLVertexBuffer::GetNumVertices</a></div><div class=\"ttdeci\">int GetNumVertices() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00884_source.html#l00050\">mtlVertexBuffer.h:50</a></div></div>\n-<div class=\"ttc\" id=\"aa01309_html_ab72828297150416f7e6293367f5a1ddf\"><div class=\"ttname\"><a href=\"a01309.html#ab72828297150416f7e6293367f5a1ddf\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CPUMTLVertexBuffer::BindMTLBuffer</a></div><div class=\"ttdeci\">id&lt; MTLBuffer &gt; BindMTLBuffer(MTLContext *context)</div></div>\n-<div class=\"ttc\" id=\"aa01309_html_adf7a9df5d3fc4d803bf5f1f374d90274\"><div class=\"ttname\"><a href=\"a01309.html#adf7a9df5d3fc4d803bf5f1f374d90274\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CPUMTLVertexBuffer::BindCpuBuffer</a></div><div class=\"ttdeci\">float * BindCpuBuffer()</div></div>\n-<div class=\"ttc\" id=\"aa01309_html_ae765f2922a2e542bd85c1e0c0ae1d169\"><div class=\"ttname\"><a href=\"a01309.html#ae765f2922a2e542bd85c1e0c0ae1d169\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CPUMTLVertexBuffer::allocate</a></div><div class=\"ttdeci\">bool allocate(MTLContext *context)</div></div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00925.html#a9920fb01c4b75c94a953a98008a4baba\">   82</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00925.html#a9920fb01c4b75c94a953a98008a4baba\">GetNumFaces</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _numFaces; }</div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span> </div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00925.html#aa9be824a572029f3ec1e0c0d6cfecd77\">   85</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00925.html#aa9be824a572029f3ec1e0c0d6cfecd77\">GetNumFVarChannels</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _numFVarChannels; }</div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span> </div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span><span class=\"keyword\">protected</span>:</div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>    <span class=\"comment\">//  Virtual overrides to satisfy the SurfaceFactoryMeshAdapter interface:</span></div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00957.html#aebdd02cef87f646218eed308629e9aed\">isFaceHole</a>( <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex) <span class=\"keyword\">const override</span>;</div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>    <span class=\"keywordtype\">int</span>  <a class=\"code hl_function\" href=\"a00957.html#a46acc55c125fe8d843fd2b74c582abec\">getFaceSize</a>(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex) <span class=\"keyword\">const override</span>;</div>\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span> </div>\n+<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00957.html#ac8c29cf2fda93d2c3408f80e8371d375\">getFaceVertexIndices</a>(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex,</div>\n+<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>                        <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertexIndices[]) <span class=\"keyword\">const override</span>;</div>\n+<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00957.html#aba5c13d35cdaae43f2a1b4798868747a\">getFaceFVarValueIndices</a>(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex,</div>\n+<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span>                        <a class=\"code hl_typedef\" href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">FVarID</a> fvarID, <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> fvarValueIndices[]) <span class=\"keyword\">const override</span>;</div>\n+<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span> </div>\n+<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00957.html#a6f2eece993bb137b995618881c7f9160\">populateFaceVertexDescriptor</a>(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex, <span class=\"keywordtype\">int</span> faceVertex,</div>\n+<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span>                        <a class=\"code hl_class\" href=\"a00969.html\">VertexDescriptor</a> * vertexDescriptor) <span class=\"keyword\">const override</span>;</div>\n+<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span> </div>\n+<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00957.html#a2bbf77d68fb983954c51bd91cfe35302\">getFaceVertexIncidentFaceVertexIndices</a>(</div>\n+<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span>                        <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex, <span class=\"keywordtype\">int</span> faceVertex,</div>\n+<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span>                        <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertexIndices[]) <span class=\"keyword\">const override</span>;</div>\n+<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00957.html#a269c87ee7505e80e2e4db772ee73a016\">getFaceVertexIncidentFaceFVarValueIndices</a>(</div>\n+<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span>                        <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex, <span class=\"keywordtype\">int</span> faceVertex,</div>\n+<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span>                        <a class=\"code hl_typedef\" href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">FVarID</a> fvarID, <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> fvarValueIndices[]) <span class=\"keyword\">const override</span>;</div>\n+<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span> </div>\n+<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span>    <span class=\"comment\">//  Optional SurfaceFactoryMeshAdapter overrides for regular patches:</span></div>\n+<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00957.html#a72634fd790cc4d1f52801aa5399328b5\">getFaceNeighborhoodVertexIndicesIfRegular</a>(</div>\n+<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span>                        <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex,</div>\n+<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span>                        <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertexIndices[]) <span class=\"keyword\">const override</span>;</div>\n+<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span> </div>\n+<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\">  116</span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00957.html#aa7e32ce7ba896c5ddfe6521ad0022ce2\">getFaceNeighborhoodFVarValueIndicesIfRegular</a>(</div>\n+<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span>                        <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex,</div>\n+<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\">  118</span>                        <a class=\"code hl_typedef\" href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">FVarID</a> fvarID, <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> fvarValueIndices[]) <span class=\"keyword\">const override</span>;</div>\n+<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span> </div>\n+<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\">  121</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span>    <span class=\"comment\">//  Internal supporting methods:</span></div>\n+<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span>    <span class=\"keywordtype\">int</span> getFaceVaryingChannel(<a class=\"code hl_typedef\" href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">FVarID</a> fvarID) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span> </div>\n+<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span>    <span class=\"keywordtype\">int</span> getFaceVertexPointIndices(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex, <span class=\"keywordtype\">int</span> faceVertex,</div>\n+<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span>                                  <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> indices[], <span class=\"keywordtype\">int</span> vtxOrFVarChannel) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span> </div>\n+<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span>    <span class=\"keywordtype\">int</span> getFacePatchPointIndices(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex,</div>\n+<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\">  131</span>                                 <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> indices[], <span class=\"keywordtype\">int</span> vtxOrFVarChannel) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\">  132</span> </div>\n+<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\">  133</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\">  134</span>    <span class=\"comment\">//  Additional members for the subclass:</span></div>\n+<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\">  135</span>    <a class=\"code hl_class\" href=\"a01121.html\">Far::TopologyRefiner</a> <span class=\"keyword\">const</span> &amp; _mesh;</div>\n+<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\">  136</span> </div>\n+<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\">  137</span>    <span class=\"keywordtype\">int</span> _numFaces;</div>\n+<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\">  138</span>    <span class=\"keywordtype\">int</span> _numFVarChannels;</div>\n+<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\">  139</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\">  140</span> </div>\n+<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\">  141</span> </div>\n+<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\">  156</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class</span> CACHE_TYPE = SurfaceFactoryCache&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00157\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00929.html\">  157</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a00929.html\">RefinerSurfaceFactory</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"a00925.html\">RefinerSurfaceFactoryBase</a> {</div>\n+<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\">  158</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"foldopen\" id=\"foldopen00159\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00929.html#af74dafe122d798d4069b675c52f6665a\">  159</a></span>    <a class=\"code hl_function\" href=\"a00929.html#af74dafe122d798d4069b675c52f6665a\">RefinerSurfaceFactory</a>(<a class=\"code hl_class\" href=\"a01121.html\">Far::TopologyRefiner</a> <span class=\"keyword\">const</span> &amp; mesh,</div>\n+<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\">  160</span>                          <a class=\"code hl_class\" href=\"a00945.html\">Options</a> <span class=\"keyword\">const</span> &amp; options = <a class=\"code hl_class\" href=\"a00945.html\">Options</a>()) :</div>\n+<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\">  161</span>            <a class=\"code hl_class\" href=\"a00925.html\">RefinerSurfaceFactoryBase</a>(mesh, options),</div>\n+<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\">  162</span>            _localCache() {</div>\n+<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\">  163</span> </div>\n+<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\">  164</span>        <a class=\"code hl_function\" href=\"a00941.html#a043a7fc91f7bc29a4cbba51d9cb00ecb\">SurfaceFactory::setInternalCache</a>(&amp;_localCache);</div>\n+<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\">  165</span>    }</div>\n+</div>\n+<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00929.html#aaeb5db4a748ed56e042ab8c003faa8e9\">  166</a></span>    <a class=\"code hl_function\" href=\"a00929.html#aaeb5db4a748ed56e042ab8c003faa8e9\">~RefinerSurfaceFactory</a>() <span class=\"keyword\">override</span> = <span class=\"keywordflow\">default</span>;</div>\n+<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\">  167</span> </div>\n+<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\">  168</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\">  169</span>    CACHE_TYPE _localCache;</div>\n+<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\">  170</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span> </div>\n+<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\">  172</span>} <span class=\"comment\">// end namespace Bfr</span></div>\n+<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\">  173</span> </div>\n+<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\">  174</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\">  175</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\">  176</span> </div>\n+<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\">  178</span> </div>\n+<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\">  179</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_BFR_REFINER_SURFACE_FACTORY_H */</span><span class=\"preprocessor\"></span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa00925_html\"><div class=\"ttname\"><a href=\"a00925.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::RefinerSurfaceFactoryBase</a></div><div class=\"ttdoc\">Intermediate subclass of SurfaceFactory with Far::TopologyRefiner as the mesh.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00884_source.html#l00058\">refinerSurfaceFactory.h:58</a></div></div>\n+<div class=\"ttc\" id=\"aa00925_html_a9920fb01c4b75c94a953a98008a4baba\"><div class=\"ttname\"><a href=\"a00925.html#a9920fb01c4b75c94a953a98008a4baba\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::RefinerSurfaceFactoryBase::GetNumFaces</a></div><div class=\"ttdeci\">int GetNumFaces() const</div><div class=\"ttdoc\">Return the number of faces.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00884_source.html#l00082\">refinerSurfaceFactory.h:82</a></div></div>\n+<div class=\"ttc\" id=\"aa00925_html_aa9be824a572029f3ec1e0c0d6cfecd77\"><div class=\"ttname\"><a href=\"a00925.html#aa9be824a572029f3ec1e0c0d6cfecd77\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::RefinerSurfaceFactoryBase::GetNumFVarChannels</a></div><div class=\"ttdeci\">int GetNumFVarChannels() const</div><div class=\"ttdoc\">Return the number of face-varying channels.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00884_source.html#l00085\">refinerSurfaceFactory.h:85</a></div></div>\n+<div class=\"ttc\" id=\"aa00925_html_ab71a07bb9e45c564b8aabe091482414c\"><div class=\"ttname\"><a href=\"a00925.html#ab71a07bb9e45c564b8aabe091482414c\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::RefinerSurfaceFactoryBase::GetMesh</a></div><div class=\"ttdeci\">Far::TopologyRefiner const &amp; GetMesh() const</div><div class=\"ttdoc\">Return the instance of the mesh.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00884_source.html#l00079\">refinerSurfaceFactory.h:79</a></div></div>\n+<div class=\"ttc\" id=\"aa00925_html_af1812d7cdae22188afec02034f1219cb\"><div class=\"ttname\"><a href=\"a00925.html#af1812d7cdae22188afec02034f1219cb\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::RefinerSurfaceFactoryBase::~RefinerSurfaceFactoryBase</a></div><div class=\"ttdeci\">~RefinerSurfaceFactoryBase() override=default</div></div>\n+<div class=\"ttc\" id=\"aa00925_html_af457c931d6d611e35737454f2c483f84\"><div class=\"ttname\"><a href=\"a00925.html#af457c931d6d611e35737454f2c483f84\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::RefinerSurfaceFactoryBase::RefinerSurfaceFactoryBase</a></div><div class=\"ttdeci\">RefinerSurfaceFactoryBase(Far::TopologyRefiner const &amp;mesh, Options const &amp;options)</div></div>\n+<div class=\"ttc\" id=\"aa00929_html\"><div class=\"ttname\"><a href=\"a00929.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::RefinerSurfaceFactory</a></div><div class=\"ttdoc\">Template for concrete subclasses of RefinerSurfaceFactoryBase.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00884_source.html#l00157\">refinerSurfaceFactory.h:157</a></div></div>\n+<div class=\"ttc\" id=\"aa00929_html_aaeb5db4a748ed56e042ab8c003faa8e9\"><div class=\"ttname\"><a href=\"a00929.html#aaeb5db4a748ed56e042ab8c003faa8e9\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::RefinerSurfaceFactory::~RefinerSurfaceFactory</a></div><div class=\"ttdeci\">~RefinerSurfaceFactory() override=default</div></div>\n+<div class=\"ttc\" id=\"aa00929_html_af74dafe122d798d4069b675c52f6665a\"><div class=\"ttname\"><a href=\"a00929.html#af74dafe122d798d4069b675c52f6665a\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::RefinerSurfaceFactory::RefinerSurfaceFactory</a></div><div class=\"ttdeci\">RefinerSurfaceFactory(Far::TopologyRefiner const &amp;mesh, Options const &amp;options=Options())</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00884_source.html#l00159\">refinerSurfaceFactory.h:159</a></div></div>\n+<div class=\"ttc\" id=\"aa00941_html\"><div class=\"ttname\"><a href=\"a00941.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory</a></div><div class=\"ttdoc\">Base class providing initialization of a Surface for each face of a mesh.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00881_source.html#l00103\">surfaceFactory.h:103</a></div></div>\n+<div class=\"ttc\" id=\"aa00941_html_a043a7fc91f7bc29a4cbba51d9cb00ecb\"><div class=\"ttname\"><a href=\"a00941.html#a043a7fc91f7bc29a4cbba51d9cb00ecb\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::setInternalCache</a></div><div class=\"ttdeci\">void setInternalCache(SurfaceFactoryCache *cache)</div><div class=\"ttdoc\">Subclass to identify an internal cache for use by base class.</div></div>\n+<div class=\"ttc\" id=\"aa00945_html\"><div class=\"ttname\"><a href=\"a00945.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::Options</a></div><div class=\"ttdoc\">Simple set of options assigned to instances of SurfaceFactory.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00881_source.html#l00116\">surfaceFactory.h:116</a></div></div>\n+<div class=\"ttc\" id=\"aa00957_html_a269c87ee7505e80e2e4db772ee73a016\"><div class=\"ttname\"><a href=\"a00957.html#a269c87ee7505e80e2e4db772ee73a016\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryMeshAdapter::getFaceVertexIncidentFaceFVarValueIndices</a></div><div class=\"ttdeci\">virtual int getFaceVertexIncidentFaceFVarValueIndices(Index faceIndex, int faceVertex, FVarID fvarID, Index fvarValueIndices[]) const =0</div><div class=\"ttdoc\">Gather face-varying indices of incident faces around a face-vertex.</div></div>\n+<div class=\"ttc\" id=\"aa00957_html_a2bbf77d68fb983954c51bd91cfe35302\"><div class=\"ttname\"><a href=\"a00957.html#a2bbf77d68fb983954c51bd91cfe35302\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryMeshAdapter::getFaceVertexIncidentFaceVertexIndices</a></div><div class=\"ttdeci\">virtual int getFaceVertexIncidentFaceVertexIndices(Index faceIndex, int faceVertex, Index vertexIndices[]) const =0</div><div class=\"ttdoc\">Gather vertex indices of incident faces around a face-vertex.</div></div>\n+<div class=\"ttc\" id=\"aa00957_html_a46acc55c125fe8d843fd2b74c582abec\"><div class=\"ttname\"><a href=\"a00957.html#a46acc55c125fe8d843fd2b74c582abec\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryMeshAdapter::getFaceSize</a></div><div class=\"ttdeci\">virtual int getFaceSize(Index faceIndex) const =0</div><div class=\"ttdoc\">Returns the size of a face (number of vertices)</div></div>\n+<div class=\"ttc\" id=\"aa00957_html_a4a0e50e01fef3e431767a928c2631cab\"><div class=\"ttname\"><a href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryMeshAdapter::Index</a></div><div class=\"ttdeci\">int Index</div><div class=\"ttdoc\">Integer type representing a mesh index.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00893_source.html#l00068\">surfaceFactoryMeshAdapter.h:68</a></div></div>\n+<div class=\"ttc\" id=\"aa00957_html_a6f2eece993bb137b995618881c7f9160\"><div class=\"ttname\"><a href=\"a00957.html#a6f2eece993bb137b995618881c7f9160\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryMeshAdapter::populateFaceVertexDescriptor</a></div><div class=\"ttdeci\">virtual int populateFaceVertexDescriptor(Index faceIndex, int faceVertex, VertexDescriptor *vertexDescriptor) const =0</div><div class=\"ttdoc\">Describe the topology of incident faces around a face-vertex.</div></div>\n+<div class=\"ttc\" id=\"aa00957_html_a72634fd790cc4d1f52801aa5399328b5\"><div class=\"ttname\"><a href=\"a00957.html#a72634fd790cc4d1f52801aa5399328b5\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryMeshAdapter::getFaceNeighborhoodVertexIndicesIfRegular</a></div><div class=\"ttdeci\">virtual bool getFaceNeighborhoodVertexIndicesIfRegular(Index faceIndex, Index vertexIndices[]) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00893_source.html#l00218\">surfaceFactoryMeshAdapter.h:218</a></div></div>\n+<div class=\"ttc\" id=\"aa00957_html_aa7e32ce7ba896c5ddfe6521ad0022ce2\"><div class=\"ttname\"><a href=\"a00957.html#aa7e32ce7ba896c5ddfe6521ad0022ce2\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryMeshAdapter::getFaceNeighborhoodFVarValueIndicesIfRegular</a></div><div class=\"ttdeci\">virtual bool getFaceNeighborhoodFVarValueIndicesIfRegular(Index faceIndex, FVarID fvarID, Index fvarValueIndices[]) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00893_source.html#l00224\">surfaceFactoryMeshAdapter.h:224</a></div></div>\n+<div class=\"ttc\" id=\"aa00957_html_aba5c13d35cdaae43f2a1b4798868747a\"><div class=\"ttname\"><a href=\"a00957.html#aba5c13d35cdaae43f2a1b4798868747a\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryMeshAdapter::getFaceFVarValueIndices</a></div><div class=\"ttdeci\">virtual int getFaceFVarValueIndices(Index faceIndex, FVarID fvarID, Index fvarValueIndices[]) const =0</div><div class=\"ttdoc\">Gather the face-varying indices of the face's vertices.</div></div>\n+<div class=\"ttc\" id=\"aa00957_html_ac8c29cf2fda93d2c3408f80e8371d375\"><div class=\"ttname\"><a href=\"a00957.html#ac8c29cf2fda93d2c3408f80e8371d375\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryMeshAdapter::getFaceVertexIndices</a></div><div class=\"ttdeci\">virtual int getFaceVertexIndices(Index faceIndex, Index vertexIndices[]) const =0</div><div class=\"ttdoc\">Gather the indices of the face's vertices.</div></div>\n+<div class=\"ttc\" id=\"aa00957_html_aebdd02cef87f646218eed308629e9aed\"><div class=\"ttname\"><a href=\"a00957.html#aebdd02cef87f646218eed308629e9aed\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryMeshAdapter::isFaceHole</a></div><div class=\"ttdeci\">virtual bool isFaceHole(Index faceIndex) const =0</div><div class=\"ttdoc\">Returns if a face is a hole.</div></div>\n+<div class=\"ttc\" id=\"aa00957_html_af98288d7b5176d7295be622a10c6c64e\"><div class=\"ttname\"><a href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryMeshAdapter::FVarID</a></div><div class=\"ttdeci\">std::intptr_t FVarID</div><div class=\"ttdoc\">Type used to identify and specify face-varying primvars.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00893_source.html#l00080\">surfaceFactoryMeshAdapter.h:80</a></div></div>\n+<div class=\"ttc\" id=\"aa00969_html\"><div class=\"ttname\"><a href=\"a00969.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::VertexDescriptor</a></div><div class=\"ttdoc\">Simple class used by subclasses of SurfaceFactory to describe a vertex.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00878_source.html#l00131\">vertexDescriptor.h:131</a></div></div>\n+<div class=\"ttc\" id=\"aa01121_html\"><div class=\"ttname\"><a href=\"a01121.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner</a></div><div class=\"ttdoc\">Stores topology data for a specified set of refinement options.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00833_source.html#l00051\">topologyRefiner.h:51</a></div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00884.html\">mtlVertexBuffer.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_fa5edef2a780a73fbfb6a11f1af88ceb.html\">bfr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00884.html\">refinerSurfaceFactory.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-mtlVertexBuffer.h\n+refinerSurfaceFactory.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2013 Pixar\n+2// Copyright 2021 Pixar\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -24,101 +24,222 @@\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n 24\n-25#ifndef OPENSUBDIV3_OSD_MTL_VERTEX_BUFFER_H\n-26#define OPENSUBDIV3_OSD_MTL_VERTEX_BUFFER_H\n+25#ifndef OPENSUBDIV3_BFR_REFINER_SURFACE_FACTORY_H\n+26#define OPENSUBDIV3_BFR_REFINER_SURFACE_FACTORY_H\n 27\n 28#include \"../version.h\"\n-29#include \"../osd/mtlCommon.h\"\n-30\n-31@protocol MTLDevice;\n-32@protocol MTLBuffer;\n-33\n-34namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-35namespace OPENSUBDIV_VERSION {\n-36\n-37namespace Osd {\n-38\n-_\b3_\b9class _\bC_\bP_\bU_\bM_\bT_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br {\n-40public:\n-_\b4_\b1 static _\bC_\bP_\bU_\bM_\bT_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br* _\bC_\br_\be_\ba_\bt_\be(int numElements, int numVertices,\n-_\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context);\n-42\n-_\b4_\b3 void _\bU_\bp_\bd_\ba_\bt_\be_\bD_\ba_\bt_\ba(const float* src, int startVertex, int numVertices,\n-_\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context);\n-44\n-_\b4_\b5 int _\bG_\be_\bt_\bN_\bu_\bm_\bE_\bl_\be_\bm_\be_\bn_\bt_\bs() const\n-46 {\n-47 return _numElements;\n-48 }\n-49\n-_\b5_\b0 int _\bG_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs() const\n-51 {\n-52 return _numVertices;\n-53 }\n-54\n-_\b5_\b5 float* _\bB_\bi_\bn_\bd_\bC_\bp_\bu_\bB_\bu_\bf_\bf_\be_\br();\n-_\b5_\b6 id<MTLBuffer> _\bB_\bi_\bn_\bd_\bM_\bT_\bL_\bB_\bu_\bf_\bf_\be_\br(_\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context);\n-57\n-_\b5_\b8 id<MTLBuffer> _\bB_\bi_\bn_\bd_\bV_\bB_\bO(_\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context)\n-59 {\n-60 return _\bB_\bi_\bn_\bd_\bM_\bT_\bL_\bB_\bu_\bf_\bf_\be_\br(context);\n-61 }\n-62\n-63protected:\n-64\n-_\b6_\b5 _\bC_\bP_\bU_\bM_\bT_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br(int numElements, int numVertices);\n-66\n-_\b6_\b7 bool _\ba_\bl_\bl_\bo_\bc_\ba_\bt_\be(_\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context);\n+29\n+30#include \"../bfr/surfaceFactory.h\"\n+31#include \"../bfr/surfaceFactoryCache.h\"\n+32\n+33namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+34namespace OPENSUBDIV_VERSION {\n+35\n+_\b3_\b6namespace Far {\n+37 class _\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br;\n+38}\n+39\n+40namespace Bfr {\n+41\n+_\b5_\b8class _\bR_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bB_\ba_\bs_\be : public _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by {\n+59public:\n+61\n+65\n+_\b6_\b6 _\bR_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bB_\ba_\bs_\be(_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const & mesh,\n+67 _\bO_\bp_\bt_\bi_\bo_\bn_\bs const & options);\n 68\n-69private:\n-70 int _numElements;\n-71 int _numVertices;\n-72 id<MTLBuffer> _buffer;\n-73 bool _dirty;\n-74};\n-75\n-76} //end namespace Osd\n+_\b6_\b9 _\b~_\bR_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bB_\ba_\bs_\be() override = default;\n+71\n+73\n 77\n-78} //end namespace OPENSUBDIV_VERSION\n-79 using namespace OPENSUBDIV_VERSION;\n+_\b7_\b9 _\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const & _\bG_\be_\bt_\bM_\be_\bs_\bh() const { return _mesh; }\n 80\n-81} //end namespace OpenSubdiv\n-82\n-83#endif // OPENSUBDIV3_OSD_MTL_VERTEX_BUFFER_H\n+_\b8_\b2 int _\bG_\be_\bt_\bN_\bu_\bm_\bF_\ba_\bc_\be_\bs() const { return _numFaces; }\n+83\n+_\b8_\b5 int _\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs() const { return _numFVarChannels; }\n+87\n+88protected:\n+90 //\n+91 // Virtual overrides to satisfy the SurfaceFactoryMeshAdapter interface:\n+92 //\n+93 bool _\bi_\bs_\bF_\ba_\bc_\be_\bH_\bo_\bl_\be( _\bI_\bn_\bd_\be_\bx faceIndex) const override;\n+94 int _\bg_\be_\bt_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be(_\bI_\bn_\bd_\be_\bx faceIndex) const override;\n+95\n+96 int _\bg_\be_\bt_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\be_\bx_\bI_\bn_\bd_\bi_\bc_\be_\bs(_\bI_\bn_\bd_\be_\bx faceIndex,\n+97 _\bI_\bn_\bd_\be_\bx vertexIndices[]) const override;\n+98 int _\bg_\be_\bt_\bF_\ba_\bc_\be_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bI_\bn_\bd_\bi_\bc_\be_\bs(_\bI_\bn_\bd_\be_\bx faceIndex,\n+99 _\bF_\bV_\ba_\br_\bI_\bD fvarID, _\bI_\bn_\bd_\be_\bx fvarValueIndices[]) const override;\n+100\n+101 int _\bp_\bo_\bp_\bu_\bl_\ba_\bt_\be_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(_\bI_\bn_\bd_\be_\bx faceIndex, int faceVertex,\n+102 _\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br * vertexDescriptor) const override;\n+103\n+104 int _\bg_\be_\bt_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\be_\bx_\bI_\bn_\bc_\bi_\bd_\be_\bn_\bt_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\be_\bx_\bI_\bn_\bd_\bi_\bc_\be_\bs(\n+105 _\bI_\bn_\bd_\be_\bx faceIndex, int faceVertex,\n+106 _\bI_\bn_\bd_\be_\bx vertexIndices[]) const override;\n+107 int _\bg_\be_\bt_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\be_\bx_\bI_\bn_\bc_\bi_\bd_\be_\bn_\bt_\bF_\ba_\bc_\be_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bI_\bn_\bd_\bi_\bc_\be_\bs(\n+108 _\bI_\bn_\bd_\be_\bx faceIndex, int faceVertex,\n+109 _\bF_\bV_\ba_\br_\bI_\bD fvarID, _\bI_\bn_\bd_\be_\bx fvarValueIndices[]) const override;\n+110\n+111 // Optional SurfaceFactoryMeshAdapter overrides for regular patches:\n+112 bool _\bg_\be_\bt_\bF_\ba_\bc_\be_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bh_\bo_\bo_\bd_\bV_\be_\br_\bt_\be_\bx_\bI_\bn_\bd_\bi_\bc_\be_\bs_\bI_\bf_\bR_\be_\bg_\bu_\bl_\ba_\br(\n+113 _\bI_\bn_\bd_\be_\bx faceIndex,\n+114 _\bI_\bn_\bd_\be_\bx vertexIndices[]) const override;\n+115\n+116 bool _\bg_\be_\bt_\bF_\ba_\bc_\be_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bh_\bo_\bo_\bd_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bI_\bn_\bd_\bi_\bc_\be_\bs_\bI_\bf_\bR_\be_\bg_\bu_\bl_\ba_\br(\n+117 _\bI_\bn_\bd_\be_\bx faceIndex,\n+118 _\bF_\bV_\ba_\br_\bI_\bD fvarID, _\bI_\bn_\bd_\be_\bx fvarValueIndices[]) const override;\n+120\n+121private:\n+122 //\n+123 // Internal supporting methods:\n+124 //\n+125 int getFaceVaryingChannel(_\bF_\bV_\ba_\br_\bI_\bD fvarID) const;\n+126\n+127 int getFaceVertexPointIndices(_\bI_\bn_\bd_\be_\bx faceIndex, int faceVertex,\n+128 _\bI_\bn_\bd_\be_\bx indices[], int vtxOrFVarChannel) const;\n+129\n+130 int getFacePatchPointIndices(_\bI_\bn_\bd_\be_\bx faceIndex,\n+131 _\bI_\bn_\bd_\be_\bx indices[], int vtxOrFVarChannel) const;\n+132\n+133private:\n+134 // Additional members for the subclass:\n+135 _\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const & _mesh;\n+136\n+137 int _numFaces;\n+138 int _numFVarChannels;\n+139};\n+140\n+141\n+142//\n+156template <class CACHE_TYPE = SurfaceFactoryCache>\n+_\b1_\b5_\b7class _\bR_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by : public _\bR_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bB_\ba_\bs_\be {\n+158public:\n+_\b1_\b5_\b9 _\bR_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by(_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br const & mesh,\n+160 _\bO_\bp_\bt_\bi_\bo_\bn_\bs const & options = _\bO_\bp_\bt_\bi_\bo_\bn_\bs()) :\n+161 _\bR_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bB_\ba_\bs_\be(mesh, options),\n+162 _localCache() {\n+163\n+164 _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bs_\be_\bt_\bI_\bn_\bt_\be_\br_\bn_\ba_\bl_\bC_\ba_\bc_\bh_\be(&_localCache);\n+165 }\n+_\b1_\b6_\b6 _\b~_\bR_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by() override = default;\n+167\n+168private:\n+169 CACHE_TYPE _localCache;\n+170};\n+171\n+172} // end namespace Bfr\n+173\n+174} // end namespace OPENSUBDIV_VERSION\n+175using namespace OPENSUBDIV_VERSION;\n+176\n+177} // end namespace OpenSubdiv\n+178\n+179#endif /* OPENSUBDIV3_BFR_REFINER_SURFACE_FACTORY_H */\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bm_\bo_\bn_\b._\bh_\b:_\b4_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bP_\bU_\bM_\bT_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh_\b:_\b3_\b9\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bP_\bU_\bM_\bT_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bB_\bi_\bn_\bd_\bV_\bB_\bO\n-id< MTLBuffer > BindVBO(MTLContext *context)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh_\b:_\b5_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bP_\bU_\bM_\bT_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bC_\bP_\bU_\bM_\bT_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-CPUMTLVertexBuffer(int numElements, int numVertices)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bP_\bU_\bM_\bT_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static CPUMTLVertexBuffer * Create(int numElements, int numVertices, MTLContext\n-*context)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bP_\bU_\bM_\bT_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bE_\bl_\be_\bm_\be_\bn_\bt_\bs\n-int GetNumElements() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh_\b:_\b4_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bP_\bU_\bM_\bT_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bU_\bp_\bd_\ba_\bt_\be_\bD_\ba_\bt_\ba\n-void UpdateData(const float *src, int startVertex, int numVertices, MTLContext\n-*context)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bP_\bU_\bM_\bT_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n-int GetNumVertices() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh_\b:_\b5_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bP_\bU_\bM_\bT_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bB_\bi_\bn_\bd_\bM_\bT_\bL_\bB_\bu_\bf_\bf_\be_\br\n-id< MTLBuffer > BindMTLBuffer(MTLContext *context)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bP_\bU_\bM_\bT_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bB_\bi_\bn_\bd_\bC_\bp_\bu_\bB_\bu_\bf_\bf_\be_\br\n-float * BindCpuBuffer()\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bP_\bU_\bM_\bT_\bL_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\ba_\bl_\bl_\bo_\bc_\ba_\bt_\be\n-bool allocate(MTLContext *context)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bB_\ba_\bs_\be\n+Intermediate subclass of SurfaceFactory with Far::TopologyRefiner as the mesh.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\br_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b5_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bB_\ba_\bs_\be_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bF_\ba_\bc_\be_\bs\n+int GetNumFaces() const\n+Return the number of faces.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\br_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b8_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bB_\ba_\bs_\be_\b:_\b:\n+_\bG_\be_\bt_\bN_\bu_\bm_\bF_\bV_\ba_\br_\bC_\bh_\ba_\bn_\bn_\be_\bl_\bs\n+int GetNumFVarChannels() const\n+Return the number of face-varying channels.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\br_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b8_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bB_\ba_\bs_\be_\b:_\b:_\bG_\be_\bt_\bM_\be_\bs_\bh\n+Far::TopologyRefiner const & GetMesh() const\n+Return the instance of the mesh.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\br_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b7_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bB_\ba_\bs_\be_\b:_\b:\n+_\b~_\bR_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bB_\ba_\bs_\be\n+~RefinerSurfaceFactoryBase() override=default\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bB_\ba_\bs_\be_\b:_\b:\n+_\bR_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bB_\ba_\bs_\be\n+RefinerSurfaceFactoryBase(Far::TopologyRefiner const &mesh, Options const\n+&options)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by\n+Template for concrete subclasses of RefinerSurfaceFactoryBase.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\br_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b5_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n+_\b~_\bR_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by\n+~RefinerSurfaceFactory() override=default\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bR_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:\n+_\bR_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by\n+RefinerSurfaceFactory(Far::TopologyRefiner const &mesh, Options const\n+&options=Options())\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\br_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b5_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by\n+Base class providing initialization of a Surface for each face of a mesh.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b0_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bs_\be_\bt_\bI_\bn_\bt_\be_\br_\bn_\ba_\bl_\bC_\ba_\bc_\bh_\be\n+void setInternalCache(SurfaceFactoryCache *cache)\n+Subclass to identify an internal cache for use by base class.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n+Simple set of options assigned to instances of SurfaceFactory.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b1_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b:_\b:\n+_\bg_\be_\bt_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\be_\bx_\bI_\bn_\bc_\bi_\bd_\be_\bn_\bt_\bF_\ba_\bc_\be_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bI_\bn_\bd_\bi_\bc_\be_\bs\n+virtual int getFaceVertexIncidentFaceFVarValueIndices(Index faceIndex, int\n+faceVertex, FVarID fvarID, Index fvarValueIndices[]) const =0\n+Gather face-varying indices of incident faces around a face-vertex.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b:_\b:\n+_\bg_\be_\bt_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\be_\bx_\bI_\bn_\bc_\bi_\bd_\be_\bn_\bt_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\be_\bx_\bI_\bn_\bd_\bi_\bc_\be_\bs\n+virtual int getFaceVertexIncidentFaceVertexIndices(Index faceIndex, int\n+faceVertex, Index vertexIndices[]) const =0\n+Gather vertex indices of incident faces around a face-vertex.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b:_\b:_\bg_\be_\bt_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be\n+virtual int getFaceSize(Index faceIndex) const =0\n+Returns the size of a face (number of vertices)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx\n+int Index\n+Integer type representing a mesh index.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b._\bh_\b:_\b6_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b:_\b:\n+_\bp_\bo_\bp_\bu_\bl_\ba_\bt_\be_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n+virtual int populateFaceVertexDescriptor(Index faceIndex, int faceVertex,\n+VertexDescriptor *vertexDescriptor) const =0\n+Describe the topology of incident faces around a face-vertex.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b:_\b:\n+_\bg_\be_\bt_\bF_\ba_\bc_\be_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bh_\bo_\bo_\bd_\bV_\be_\br_\bt_\be_\bx_\bI_\bn_\bd_\bi_\bc_\be_\bs_\bI_\bf_\bR_\be_\bg_\bu_\bl_\ba_\br\n+virtual bool getFaceNeighborhoodVertexIndicesIfRegular(Index faceIndex, Index\n+vertexIndices[]) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b._\bh_\b:_\b2_\b1_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b:_\b:\n+_\bg_\be_\bt_\bF_\ba_\bc_\be_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bh_\bo_\bo_\bd_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bI_\bn_\bd_\bi_\bc_\be_\bs_\bI_\bf_\bR_\be_\bg_\bu_\bl_\ba_\br\n+virtual bool getFaceNeighborhoodFVarValueIndicesIfRegular(Index faceIndex,\n+FVarID fvarID, Index fvarValueIndices[]) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b._\bh_\b:_\b2_\b2_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b:_\b:\n+_\bg_\be_\bt_\bF_\ba_\bc_\be_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bI_\bn_\bd_\bi_\bc_\be_\bs\n+virtual int getFaceFVarValueIndices(Index faceIndex, FVarID fvarID, Index\n+fvarValueIndices[]) const =0\n+Gather the face-varying indices of the face's vertices.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b:_\b:\n+_\bg_\be_\bt_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\be_\bx_\bI_\bn_\bd_\bi_\bc_\be_\bs\n+virtual int getFaceVertexIndices(Index faceIndex, Index vertexIndices[]) const\n+=0\n+Gather the indices of the face's vertices.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b:_\b:_\bi_\bs_\bF_\ba_\bc_\be_\bH_\bo_\bl_\be\n+virtual bool isFaceHole(Index faceIndex) const =0\n+Returns if a face is a hole.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b:_\b:_\bF_\bV_\ba_\br_\bI_\bD\n+std::intptr_t FVarID\n+Type used to identify and specify face-varying primvars.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b._\bh_\b:_\b8_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n+Simple class used by subclasses of SurfaceFactory to describe a vertex.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bv_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b1_\b3_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bT_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br\n+Stores topology data for a specified set of refinement options.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh_\b:_\b5_\b1\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bm_\bt_\bl_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh\n+    * _\bb_\bf_\br\n+    * _\br_\be_\bf_\bi_\bn_\be_\br_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00887.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00887.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/glLegacyGregoryPatchTable.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/bfr/surface.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -90,42 +90,46 @@\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> &#124;\n <a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">glLegacyGregoryPatchTable.h File Reference</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">surface.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00761_source.html\">../far/patchTable.h</a>&quot;</code><br />\n-<code>#include &quot;../osd/nonCopyable.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00842_source.html\">../osd/opengl.h</a>&quot;</code><br />\n+<code>#include &quot;../bfr/surfaceData.h&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00899_source.html\">../bfr/parameterization.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00797_source.html\">../vtr/array.h</a>&quot;</code><br />\n </div>\n <p><a href=\"a00887_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01233.html\">GLLegacyGregoryPatchTable</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00933.html\">Surface&lt; REAL &gt;</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Encapsulates the limit surface for a face of a mesh.  <a href=\"a00933.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00937.html\">Surface&lt; REAL &gt;::PointDescriptor</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Simple struct defining the size and stride of points in arrays.  <a href=\"a00937.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n+<tr class=\"memitem:a00907\" id=\"r_a00907\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00907.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00887.html\">glLegacyGregoryPatchTable.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_fa5edef2a780a73fbfb6a11f1af88ceb.html\">bfr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00887.html\">surface.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,25 +1,30 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-glLegacyGregoryPatchTable.h File Reference\n+surface.h File Reference\n #include \"../version.h\"\n-#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh\"\n-#include \"../osd/nonCopyable.h\"\n-#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bo_\bp_\be_\bn_\bg_\bl_\b._\bh\"\n+#include \"../bfr/surfaceData.h\"\n+#include \"_\b._\b._\b/_\bb_\bf_\br_\b/_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b._\bh\"\n+#include \"_\b._\b._\b/_\bv_\bt_\br_\b/_\ba_\br_\br_\ba_\by_\b._\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bG_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+ class \u00a0 _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\b _\bR_\bE_\bA_\bL_\b _\b>\n+\u00a0        Encapsulates the limit surface for a face of a mesh. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+struct \u00a0 _\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\b _\bR_\bE_\bA_\bL_\b _\b>_\b:_\b:_\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n+\u00a0        Simple struct defining the size and stride of points in arrays.\n+         _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bg_\bl_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh\n+    * _\bb_\bf_\br\n+    * _\bs_\bu_\br_\bf_\ba_\bc_\be_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00887.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00887.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,3 +1,4 @@\n var a00887 = [\n-    [\"GLLegacyGregoryPatchTable\", \"a01233.html\", \"a01233\"]\n+    [\"Surface< REAL >\", \"a00933.html\", \"a00933\"],\n+    [\"PointDescriptor\", \"a00937.html\", \"a00937\"]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00887_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00887_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/glLegacyGregoryPatchTable.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/bfr/surface.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">glLegacyGregoryPatchTable.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">surface.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00887.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2015 Pixar</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2021 Pixar</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -119,103 +119,358 @@\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_GL_LEGACY_GREGORY_PATCH_TABLE_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_GL_LEGACY_GREGORY_PATCH_TABLE_H</span></div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_BFR_SURFACE_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_BFR_SURFACE_H</span></div>\n <div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n <div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n <div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../far/patchTable.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../osd/nonCopyable.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &quot;../osd/opengl.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../bfr/surfaceData.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../bfr/parameterization.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &quot;../vtr/array.h&quot;</span></div>\n <div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span> </div>\n <div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n <div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n <div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">namespace </span>Osd {</div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">namespace </span>Bfr {</div>\n <div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00039\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01233.html\">   39</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01233.html\">GLLegacyGregoryPatchTable</a></div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span>    : <span class=\"keyword\">private</span> NonCopyable&lt;GLLegacyGregoryPatchTable&gt; {</div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01233.html#a51fd18f3671b7b6c473a039d75808067\">   42</a></span>    <a class=\"code hl_function\" href=\"a01233.html#a51fd18f3671b7b6c473a039d75808067\">~GLLegacyGregoryPatchTable</a>();</div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span> </div>\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01233.html#afa527b26d9eade00d0fa657646b1a151\">   44</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01233.html\">GLLegacyGregoryPatchTable</a> *<a class=\"code hl_function\" href=\"a01233.html#afa527b26d9eade00d0fa657646b1a151\">Create</a>(<a class=\"code hl_class\" href=\"a00993.html\">Far::PatchTable</a> <span class=\"keyword\">const</span> *patchTable);</div>\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span> </div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01233.html#a733eda5d63a4d77324d7d50d704eaf3a\">   46</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01233.html#a733eda5d63a4d77324d7d50d704eaf3a\">UpdateVertexBuffer</a>(GLuint vbo);</div>\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00048\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01233.html#af81d48caf41d4a7e0c5ceb166d4de990\">   48</a></span>    GLuint <a class=\"code hl_function\" href=\"a01233.html#af81d48caf41d4a7e0c5ceb166d4de990\">GetVertexTextureBuffer</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span>        <span class=\"keywordflow\">return</span> _vertexTextureBuffer;</div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00052\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01233.html#a36f9d327f21d3dee80bb225000403cce\">   52</a></span>    GLuint <a class=\"code hl_function\" href=\"a01233.html#a36f9d327f21d3dee80bb225000403cce\">GetVertexValenceTextureBuffer</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span>        <span class=\"keywordflow\">return</span> _vertexValenceTextureBuffer;</div>\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00056\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01233.html#a4968ced94d61cc4d5e8f0e9883fd2116\">   56</a></span>    GLuint <a class=\"code hl_function\" href=\"a01233.html#a4968ced94d61cc4d5e8f0e9883fd2116\">GetQuadOffsetsTextureBuffer</a>()<span class=\"keyword\"> const </span>{</div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span>        <span class=\"keywordflow\">return</span> _quadOffsetsTextureBuffer;</div>\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00060\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01233.html#a7d706a485061caef58778fdc8a7348d1\">   60</a></span>    GLuint <a class=\"code hl_function\" href=\"a01233.html#a7d706a485061caef58778fdc8a7348d1\">GetQuadOffsetsBase</a>(<a class=\"code hl_enumeration\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">Far::PatchDescriptor::Type</a> type) {</div>\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span>        <span class=\"keywordflow\">if</span> (type == <a class=\"code hl_enumvalue\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7ac4ae10df9c13e44880ca7be341e44f2a\">Far::PatchDescriptor::GREGORY_BOUNDARY</a>) {</div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span>            <span class=\"keywordflow\">return</span> _quadOffsetsBase[1];</div>\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>        }</div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span>        <span class=\"keywordflow\">return</span> _quadOffsetsBase[0];</div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span> </div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span><span class=\"keyword\">protected</span>:</div>\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01233.html#a5b78188b846b316c5c0cdb42f4ee9563\">   68</a></span>    <a class=\"code hl_function\" href=\"a01233.html#a5b78188b846b316c5c0cdb42f4ee9563\">GLLegacyGregoryPatchTable</a>();</div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span> </div>\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>    GLuint _vertexTextureBuffer;</div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>    GLuint _vertexValenceTextureBuffer;</div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span>    GLuint _quadOffsetsTextureBuffer;</div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span>    GLuint _quadOffsetsBase[2];       <span class=\"comment\">// gregory, boundaryGregory</span></div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span>};</div>\n-</div>\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00059\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00933.html\">   59</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a00933.html\">Surface</a> {</div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"foldopen\" id=\"foldopen00063\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00937.html\">   63</a></span>    <span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a00937.html\">PointDescriptor</a> {</div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00937.html#ac60ab7fa3966237e2de95cc60defa4de\">   64</a></span>        <a class=\"code hl_function\" href=\"a00937.html#ac60ab7fa3966237e2de95cc60defa4de\">PointDescriptor</a>() : <a class=\"code hl_variable\" href=\"a00937.html#a439227feff9d7f55384e8780cfc2eb82\">size</a>(0), <a class=\"code hl_variable\" href=\"a00937.html#a08f66a6870d87afcd5dc1b60d1019692\">stride</a>(0) { }</div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00937.html#a69d66788e741236b1176159a1d609189\">   65</a></span>        <a class=\"code hl_function\" href=\"a00937.html#a69d66788e741236b1176159a1d609189\">PointDescriptor</a>(<span class=\"keywordtype\">int</span> n) : <a class=\"code hl_variable\" href=\"a00937.html#a439227feff9d7f55384e8780cfc2eb82\">size</a>(n), <a class=\"code hl_variable\" href=\"a00937.html#a08f66a6870d87afcd5dc1b60d1019692\">stride</a>(n) { }</div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00937.html#a6e6069bdfef867e798fe863f40f4274a\">   66</a></span>        <a class=\"code hl_function\" href=\"a00937.html#a6e6069bdfef867e798fe863f40f4274a\">PointDescriptor</a>(<span class=\"keywordtype\">int</span> n, <span class=\"keywordtype\">int</span> m) : <a class=\"code hl_variable\" href=\"a00937.html#a439227feff9d7f55384e8780cfc2eb82\">size</a>(n), <a class=\"code hl_variable\" href=\"a00937.html#a08f66a6870d87afcd5dc1b60d1019692\">stride</a>(m) { }</div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span> </div>\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00937.html#a439227feff9d7f55384e8780cfc2eb82\">   68</a></span>        <span class=\"keywordtype\">int</span> <a class=\"code hl_variable\" href=\"a00937.html#a439227feff9d7f55384e8780cfc2eb82\">size</a>, <a class=\"code hl_variable\" href=\"a00937.html#a08f66a6870d87afcd5dc1b60d1019692\">stride</a>;</div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span>    };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span> </div>\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00933.html#a4a0e50e01fef3e431767a928c2631cab\">   72</a></span>    <span class=\"keyword\">typedef</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_typedef\" href=\"a00933.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a>;</div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span> </div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span><span class=\"keyword\">public</span>:</div>\n <div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span> </div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span> </div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span> </div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>}  <span class=\"comment\">// end namespace Osd</span></div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span> </div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>}  <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span> </div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span>}  <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span> </div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_GL_LEGACY_GREGORY_PATCH_TABLE_H</span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa00973_html_a1d1cfd8ffb84e947f82999c682b666a7\"><div class=\"ttname\"><a href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::Type</a></div><div class=\"ttdeci\">Type</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00773_source.html#l00048\">patchDescriptor.h:48</a></div></div>\n-<div class=\"ttc\" id=\"aa00973_html_a1d1cfd8ffb84e947f82999c682b666a7ac4ae10df9c13e44880ca7be341e44f2a\"><div class=\"ttname\"><a href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7ac4ae10df9c13e44880ca7be341e44f2a\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::GREGORY_BOUNDARY</a></div><div class=\"ttdeci\">@ GREGORY_BOUNDARY</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00773_source.html#l00061\">patchDescriptor.h:61</a></div></div>\n-<div class=\"ttc\" id=\"aa00993_html\"><div class=\"ttname\"><a href=\"a00993.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable</a></div><div class=\"ttdoc\">Container for arrays of parametric patches.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00761_source.html#l00055\">patchTable.h:55</a></div></div>\n-<div class=\"ttc\" id=\"aa01233_html\"><div class=\"ttname\"><a href=\"a01233.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLLegacyGregoryPatchTable</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00887_source.html#l00039\">glLegacyGregoryPatchTable.h:40</a></div></div>\n-<div class=\"ttc\" id=\"aa01233_html_a36f9d327f21d3dee80bb225000403cce\"><div class=\"ttname\"><a href=\"a01233.html#a36f9d327f21d3dee80bb225000403cce\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLLegacyGregoryPatchTable::GetVertexValenceTextureBuffer</a></div><div class=\"ttdeci\">GLuint GetVertexValenceTextureBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00887_source.html#l00052\">glLegacyGregoryPatchTable.h:52</a></div></div>\n-<div class=\"ttc\" id=\"aa01233_html_a4968ced94d61cc4d5e8f0e9883fd2116\"><div class=\"ttname\"><a href=\"a01233.html#a4968ced94d61cc4d5e8f0e9883fd2116\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLLegacyGregoryPatchTable::GetQuadOffsetsTextureBuffer</a></div><div class=\"ttdeci\">GLuint GetQuadOffsetsTextureBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00887_source.html#l00056\">glLegacyGregoryPatchTable.h:56</a></div></div>\n-<div class=\"ttc\" id=\"aa01233_html_a51fd18f3671b7b6c473a039d75808067\"><div class=\"ttname\"><a href=\"a01233.html#a51fd18f3671b7b6c473a039d75808067\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLLegacyGregoryPatchTable::~GLLegacyGregoryPatchTable</a></div><div class=\"ttdeci\">~GLLegacyGregoryPatchTable()</div></div>\n-<div class=\"ttc\" id=\"aa01233_html_a5b78188b846b316c5c0cdb42f4ee9563\"><div class=\"ttname\"><a href=\"a01233.html#a5b78188b846b316c5c0cdb42f4ee9563\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLLegacyGregoryPatchTable::GLLegacyGregoryPatchTable</a></div><div class=\"ttdeci\">GLLegacyGregoryPatchTable()</div></div>\n-<div class=\"ttc\" id=\"aa01233_html_a733eda5d63a4d77324d7d50d704eaf3a\"><div class=\"ttname\"><a href=\"a01233.html#a733eda5d63a4d77324d7d50d704eaf3a\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLLegacyGregoryPatchTable::UpdateVertexBuffer</a></div><div class=\"ttdeci\">void UpdateVertexBuffer(GLuint vbo)</div></div>\n-<div class=\"ttc\" id=\"aa01233_html_a7d706a485061caef58778fdc8a7348d1\"><div class=\"ttname\"><a href=\"a01233.html#a7d706a485061caef58778fdc8a7348d1\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLLegacyGregoryPatchTable::GetQuadOffsetsBase</a></div><div class=\"ttdeci\">GLuint GetQuadOffsetsBase(Far::PatchDescriptor::Type type)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00887_source.html#l00060\">glLegacyGregoryPatchTable.h:60</a></div></div>\n-<div class=\"ttc\" id=\"aa01233_html_af81d48caf41d4a7e0c5ceb166d4de990\"><div class=\"ttname\"><a href=\"a01233.html#af81d48caf41d4a7e0c5ceb166d4de990\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLLegacyGregoryPatchTable::GetVertexTextureBuffer</a></div><div class=\"ttdeci\">GLuint GetVertexTextureBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00887_source.html#l00048\">glLegacyGregoryPatchTable.h:48</a></div></div>\n-<div class=\"ttc\" id=\"aa01233_html_afa527b26d9eade00d0fa657646b1a151\"><div class=\"ttname\"><a href=\"a01233.html#afa527b26d9eade00d0fa657646b1a151\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLLegacyGregoryPatchTable::Create</a></div><div class=\"ttdeci\">static GLLegacyGregoryPatchTable * Create(Far::PatchTable const *patchTable)</div></div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span> </div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00933.html#ac532c4b500b1a85ea22217f2c65a70ed\">   86</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00933.html#ac532c4b500b1a85ea22217f2c65a70ed\">IsValid</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _data.isValid(); }</div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span> </div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00933.html#aa71d36872f416feaa853788a7a7a7ef8\">   89</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00933.html#aa71d36872f416feaa853788a7a7a7ef8\">Clear</a>() { _data.reinitialize(); }</div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span> </div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00933.html#a6e1a6ad293d9318f65c2e28c468c66ba\">   92</a></span>    <a class=\"code hl_function\" href=\"a00933.html#a6e1a6ad293d9318f65c2e28c468c66ba\">Surface</a>();</div>\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span> </div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00933.html#aa9500016cdd5cf88992541cc263a75c9\">   94</a></span>    <a class=\"code hl_function\" href=\"a00933.html#aa9500016cdd5cf88992541cc263a75c9\">Surface</a>(<a class=\"code hl_class\" href=\"a00933.html\">Surface</a> <span class=\"keyword\">const</span> &amp; src) = <span class=\"keywordflow\">default</span>;</div>\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00933.html#a85251d7cc5b0aa5838fa1767b6e31e5d\">   95</a></span>    <a class=\"code hl_class\" href=\"a00933.html\">Surface</a>&amp; <a class=\"code hl_function\" href=\"a00933.html#a85251d7cc5b0aa5838fa1767b6e31e5d\">operator=</a>(<a class=\"code hl_class\" href=\"a00933.html\">Surface</a> <span class=\"keyword\">const</span> &amp; src) = <span class=\"keywordflow\">default</span>;</div>\n+<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00933.html#a9fbe10437e4a7f3c40787283a3ecd560\">   96</a></span>    <a class=\"code hl_function\" href=\"a00933.html#a9fbe10437e4a7f3c40787283a3ecd560\">~Surface</a>() = <span class=\"keywordflow\">default</span>;</div>\n+<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span> </div>\n+<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span> </div>\n+<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span> </div>\n+<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00933.html#a66515298a982aab202e1e3e537c7d324\">  106</a></span>    <a class=\"code hl_class\" href=\"a00921.html\">Parameterization</a> <a class=\"code hl_function\" href=\"a00933.html#a66515298a982aab202e1e3e537c7d324\">GetParameterization</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _data.getParam(); }</div>\n+<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span> </div>\n+<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00933.html#a181e30653909f9d0e0afa92dd44d28ec\">  109</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00933.html#a181e30653909f9d0e0afa92dd44d28ec\">GetFaceSize</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a00933.html#a66515298a982aab202e1e3e537c7d324\">GetParameterization</a>().<a class=\"code hl_function\" href=\"a00921.html#a181e30653909f9d0e0afa92dd44d28ec\">GetFaceSize</a>(); }</div>\n+<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span> </div>\n+<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00933.html#a193470573424fe6b2e91f317509b5897\">  112</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00933.html#a193470573424fe6b2e91f317509b5897\">IsRegular</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _data.isRegular(); }</div>\n+<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span> </div>\n+<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00933.html#adb6e3801db80be8fef1fd0fa4673b041\">  115</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00933.html#adb6e3801db80be8fef1fd0fa4673b041\">IsLinear</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _data.isLinear(); }</div>\n+<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span> </div>\n+<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span> </div>\n+<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\">  135</span> </div>\n+<div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00933.html#a133ed4fbaddeb2a8036915b14cb21cff\">  137</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00933.html#a133ed4fbaddeb2a8036915b14cb21cff\">GetNumControlPoints</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _data.getNumCVs(); }</div>\n+<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\">  138</span> </div>\n+<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00933.html#a2666f2fe497e68b29337056deda176a9\">  140</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00933.html#a2666f2fe497e68b29337056deda176a9\">GetControlPointIndices</a>(<a class=\"code hl_typedef\" href=\"a00933.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> meshPointIndices[]) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\">  141</span> </div>\n+<div class=\"line\"><a id=\"l00151\" name=\"l00151\"></a><span class=\"lineno\">  151</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL_MESH&gt;</div>\n+<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00933.html#ad24baa29c6dfff25cd17ee1269ab9f8d\">  152</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00933.html#ad24baa29c6dfff25cd17ee1269ab9f8d\">GatherControlPoints</a>(REAL_MESH       <span class=\"keyword\">const</span>   meshPoints[],</div>\n+<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\">  153</span>                             <a class=\"code hl_struct\" href=\"a00937.html\">PointDescriptor</a> <span class=\"keyword\">const</span> &amp; meshPointDesc,</div>\n+<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\">  154</span>                             REAL                    controlPoints[],</div>\n+<div class=\"line\"><a id=\"l00155\" name=\"l00155\"></a><span class=\"lineno\">  155</span>                             <a class=\"code hl_struct\" href=\"a00937.html\">PointDescriptor</a> <span class=\"keyword\">const</span> &amp; controlPointDesc) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00156\" name=\"l00156\"></a><span class=\"lineno\">  156</span> </div>\n+<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00933.html#a22604a4489ed5fdedb0ef272de0fa637\">  158</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00933.html#a22604a4489ed5fdedb0ef272de0fa637\">BoundControlPoints</a>(REAL            <span class=\"keyword\">const</span>   controlPoints[],</div>\n+<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\">  159</span>                            <a class=\"code hl_struct\" href=\"a00937.html\">PointDescriptor</a> <span class=\"keyword\">const</span> &amp; controlPointDesc,</div>\n+<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\">  160</span>                            REAL                    minExtent[],</div>\n+<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\">  161</span>                            REAL                    maxExtent[]) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\">  162</span> </div>\n+<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00933.html#a8df5cf06cea51aeb6419fd698651ae3b\">  164</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00933.html#a8df5cf06cea51aeb6419fd698651ae3b\">BoundControlPointsFromMesh</a>(REAL            <span class=\"keyword\">const</span>   meshPoints[],</div>\n+<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\">  165</span>                                    <a class=\"code hl_struct\" href=\"a00937.html\">PointDescriptor</a> <span class=\"keyword\">const</span> &amp; meshPointDesc,</div>\n+<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\">  166</span>                                    REAL                    minExtent[],</div>\n+<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\">  167</span>                                    REAL                    maxExtent[]) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\">  169</span> </div>\n+<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span> </div>\n+<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span> </div>\n+<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00933.html#adff7aaf7aca5ccb158ebc202cb435e33\">  179</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00933.html#adff7aaf7aca5ccb158ebc202cb435e33\">GetNumPatchPoints</a>() <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\">  180</span> </div>\n+<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\">  199</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00933.html#ac11caa08d0e7f7ce63e6f3292b20840a\">PreparePatchPoints</a>(REAL            <span class=\"keyword\">const</span>   meshPoints[],</div>\n+<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\">  200</span>                            <a class=\"code hl_struct\" href=\"a00937.html\">PointDescriptor</a> <span class=\"keyword\">const</span> &amp; meshPointDesc,</div>\n+<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\">  201</span>                            REAL                    patchPoints[],</div>\n+<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\">  202</span>                            <a class=\"code hl_struct\" href=\"a00937.html\">PointDescriptor</a> <span class=\"keyword\">const</span> &amp; patchPointDesc) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\">  203</span> </div>\n+<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\">  213</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00933.html#ad2b27352bb353eeb1f1419c2ad07385e\">ComputePatchPoints</a>(REAL                    patchPoints[],</div>\n+<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\">  214</span>                            <a class=\"code hl_struct\" href=\"a00937.html\">PointDescriptor</a> <span class=\"keyword\">const</span> &amp; patchPointDesc) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\">  216</span> </div>\n+<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\">  218</span> </div>\n+<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\">  225</span> </div>\n+<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\">  227</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00933.html#a1563dc3496644c732d9644a1f7133d0e\">Evaluate</a>(REAL <span class=\"keyword\">const</span> uv[2],</div>\n+<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\">  228</span>                  REAL <span class=\"keyword\">const</span> patchPoints[], <a class=\"code hl_struct\" href=\"a00937.html\">PointDescriptor</a> <span class=\"keyword\">const</span> &amp; pointDesc,</div>\n+<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\">  229</span>                  REAL P[]) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\">  230</span> </div>\n+<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\">  232</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00933.html#a1563dc3496644c732d9644a1f7133d0e\">Evaluate</a>(REAL <span class=\"keyword\">const</span> uv[2],</div>\n+<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\">  233</span>                  REAL <span class=\"keyword\">const</span> patchPoints[], <a class=\"code hl_struct\" href=\"a00937.html\">PointDescriptor</a> <span class=\"keyword\">const</span> &amp; pointDesc,</div>\n+<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\">  234</span>                  REAL P[], REAL Du[], REAL Dv[]) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\">  235</span> </div>\n+<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\">  237</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00933.html#a1563dc3496644c732d9644a1f7133d0e\">Evaluate</a>(REAL <span class=\"keyword\">const</span> uv[2],</div>\n+<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\">  238</span>                  REAL <span class=\"keyword\">const</span> patchPoints[], <a class=\"code hl_struct\" href=\"a00937.html\">PointDescriptor</a> <span class=\"keyword\">const</span> &amp; pointDesc,</div>\n+<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\">  239</span>                  REAL P[], REAL Du[],  REAL Dv[],</div>\n+<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\">  240</span>                  REAL Duu[], REAL Duv[], REAL Dvv[]) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\">  242</span> </div>\n+<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\">  244</span> </div>\n+<div class=\"line\"><a id=\"l00256\" name=\"l00256\"></a><span class=\"lineno\">  256</span> </div>\n+<div class=\"line\"><a id=\"l00258\" name=\"l00258\"></a><span class=\"lineno\">  258</span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00933.html#afc66676db4f0e7834e8b0fa77c7c1b46\">EvaluateStencil</a>(REAL <span class=\"keyword\">const</span> uv[2], REAL sP[]) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00259\" name=\"l00259\"></a><span class=\"lineno\">  259</span> </div>\n+<div class=\"line\"><a id=\"l00261\" name=\"l00261\"></a><span class=\"lineno\">  261</span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00933.html#afc66676db4f0e7834e8b0fa77c7c1b46\">EvaluateStencil</a>(REAL <span class=\"keyword\">const</span> uv[2], REAL sP[],</div>\n+<div class=\"line\"><a id=\"l00262\" name=\"l00262\"></a><span class=\"lineno\">  262</span>                        REAL sDu[], REAL sDv[]) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00263\" name=\"l00263\"></a><span class=\"lineno\">  263</span> </div>\n+<div class=\"line\"><a id=\"l00265\" name=\"l00265\"></a><span class=\"lineno\">  265</span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00933.html#afc66676db4f0e7834e8b0fa77c7c1b46\">EvaluateStencil</a>(REAL <span class=\"keyword\">const</span> uv[2], REAL sP[],</div>\n+<div class=\"line\"><a id=\"l00266\" name=\"l00266\"></a><span class=\"lineno\">  266</span>                        REAL sDu[],  REAL sDv[],</div>\n+<div class=\"line\"><a id=\"l00267\" name=\"l00267\"></a><span class=\"lineno\">  267</span>                        REAL sDuu[], REAL sDuv[], REAL sDvv[]) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00268\" name=\"l00268\"></a><span class=\"lineno\">  268</span> </div>\n+<div class=\"line\"><a id=\"l00270\" name=\"l00270\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00933.html#a4b5e80eb39b7497712eed0009309cd3c\">  270</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00933.html#a4b5e80eb39b7497712eed0009309cd3c\">ApplyStencil</a>(REAL <span class=\"keyword\">const</span> stencil[],</div>\n+<div class=\"line\"><a id=\"l00271\" name=\"l00271\"></a><span class=\"lineno\">  271</span>                      REAL <span class=\"keyword\">const</span> controlPoints[], <a class=\"code hl_struct\" href=\"a00937.html\">PointDescriptor</a> <span class=\"keyword\">const</span> &amp;,</div>\n+<div class=\"line\"><a id=\"l00272\" name=\"l00272\"></a><span class=\"lineno\">  272</span>                      REAL result[]) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00273\" name=\"l00273\"></a><span class=\"lineno\">  273</span> </div>\n+<div class=\"line\"><a id=\"l00275\" name=\"l00275\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00933.html#a7fa4a5c3bfea7fc2ebda886f9b12eb95\">  275</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00933.html#a7fa4a5c3bfea7fc2ebda886f9b12eb95\">ApplyStencilFromMesh</a>(REAL <span class=\"keyword\">const</span> stencil[],</div>\n+<div class=\"line\"><a id=\"l00276\" name=\"l00276\"></a><span class=\"lineno\">  276</span>                              REAL <span class=\"keyword\">const</span> meshPoints[], <a class=\"code hl_struct\" href=\"a00937.html\">PointDescriptor</a> <span class=\"keyword\">const</span> &amp;,</div>\n+<div class=\"line\"><a id=\"l00277\" name=\"l00277\"></a><span class=\"lineno\">  277</span>                              REAL result[]) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00279\" name=\"l00279\"></a><span class=\"lineno\">  279</span> </div>\n+<div class=\"line\"><a id=\"l00280\" name=\"l00280\"></a><span class=\"lineno\">  280</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00281\" name=\"l00281\"></a><span class=\"lineno\">  281</span>    <span class=\"comment\">//  Internal methods for evaluating derivatives, basis weights and</span></div>\n+<div class=\"line\"><a id=\"l00282\" name=\"l00282\"></a><span class=\"lineno\">  282</span>    <span class=\"comment\">//  stencils for regular, irregular and irregular linear patches:</span></div>\n+<div class=\"line\"><a id=\"l00283\" name=\"l00283\"></a><span class=\"lineno\">  283</span>    <span class=\"keyword\">typedef</span> <a class=\"code hl_class\" href=\"a01353.html\">Vtr::ConstArray&lt;int&gt;</a> <a class=\"code hl_class\" href=\"a01353.html\">IndexArray</a>;</div>\n+<div class=\"line\"><a id=\"l00284\" name=\"l00284\"></a><span class=\"lineno\">  284</span> </div>\n+<div class=\"line\"><a id=\"l00285\" name=\"l00285\"></a><span class=\"lineno\">  285</span>    <span class=\"keywordtype\">void</span> evaluateDerivs(REAL <span class=\"keyword\">const</span> uv[2], REAL <span class=\"keyword\">const</span> patchPoints[],</div>\n+<div class=\"line\"><a id=\"l00286\" name=\"l00286\"></a><span class=\"lineno\">  286</span>                        <a class=\"code hl_struct\" href=\"a00937.html\">PointDescriptor</a> <span class=\"keyword\">const</span> &amp;, REAL * derivs[]) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00287\" name=\"l00287\"></a><span class=\"lineno\">  287</span>    <span class=\"keywordtype\">void</span> evalRegularDerivs(REAL <span class=\"keyword\">const</span> uv[2], REAL <span class=\"keyword\">const</span> patchPoints[],</div>\n+<div class=\"line\"><a id=\"l00288\" name=\"l00288\"></a><span class=\"lineno\">  288</span>                           <a class=\"code hl_struct\" href=\"a00937.html\">PointDescriptor</a> <span class=\"keyword\">const</span> &amp;, REAL * derivs[]) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00289\" name=\"l00289\"></a><span class=\"lineno\">  289</span>    <span class=\"keywordtype\">void</span> evalIrregularDerivs(REAL <span class=\"keyword\">const</span> uv[2], REAL <span class=\"keyword\">const</span> patchPoints[],</div>\n+<div class=\"line\"><a id=\"l00290\" name=\"l00290\"></a><span class=\"lineno\">  290</span>                             <a class=\"code hl_struct\" href=\"a00937.html\">PointDescriptor</a> <span class=\"keyword\">const</span> &amp;, REAL * derivs[]) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00291\" name=\"l00291\"></a><span class=\"lineno\">  291</span>    <span class=\"keywordtype\">void</span> evalMultiLinearDerivs(REAL <span class=\"keyword\">const</span> uv[2], REAL <span class=\"keyword\">const</span> patchPoints[],</div>\n+<div class=\"line\"><a id=\"l00292\" name=\"l00292\"></a><span class=\"lineno\">  292</span>                               <a class=\"code hl_struct\" href=\"a00937.html\">PointDescriptor</a> <span class=\"keyword\">const</span> &amp;, REAL * derivs[]) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00293\" name=\"l00293\"></a><span class=\"lineno\">  293</span> </div>\n+<div class=\"line\"><a id=\"l00294\" name=\"l00294\"></a><span class=\"lineno\">  294</span>    <span class=\"keywordtype\">void</span>       evalRegularBasis(REAL <span class=\"keyword\">const</span> uv[2], REAL * wDeriv[]) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00295\" name=\"l00295\"></a><span class=\"lineno\">  295</span>    <a class=\"code hl_class\" href=\"a01353.html\">IndexArray</a> evalIrregularBasis(REAL <span class=\"keyword\">const</span> uv[2], REAL * wDeriv[]) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00296\" name=\"l00296\"></a><span class=\"lineno\">  296</span>    <span class=\"keywordtype\">int</span>        evalMultiLinearBasis(REAL <span class=\"keyword\">const</span> uv[2], REAL * wDeriv[]) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00297\" name=\"l00297\"></a><span class=\"lineno\">  297</span> </div>\n+<div class=\"line\"><a id=\"l00298\" name=\"l00298\"></a><span class=\"lineno\">  298</span>    <span class=\"keywordtype\">int</span> evaluateStencils(REAL <span class=\"keyword\">const</span> uv[2], REAL * sDeriv[]) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00299\" name=\"l00299\"></a><span class=\"lineno\">  299</span>    <span class=\"keywordtype\">int</span> evalRegularStencils(REAL <span class=\"keyword\">const</span> uv[2], REAL * sDeriv[]) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00300\" name=\"l00300\"></a><span class=\"lineno\">  300</span>    <span class=\"keywordtype\">int</span> evalIrregularStencils(REAL <span class=\"keyword\">const</span> uv[2], REAL * sDeriv[]) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00301\" name=\"l00301\"></a><span class=\"lineno\">  301</span>    <span class=\"keywordtype\">int</span> evalMultiLinearStencils(REAL <span class=\"keyword\">const</span> uv[2], REAL * sDeriv[]) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00302\" name=\"l00302\"></a><span class=\"lineno\">  302</span> </div>\n+<div class=\"line\"><a id=\"l00303\" name=\"l00303\"></a><span class=\"lineno\">  303</span>    <span class=\"comment\">//  Internal methods to compute patch points:</span></div>\n+<div class=\"line\"><a id=\"l00304\" name=\"l00304\"></a><span class=\"lineno\">  304</span>    <span class=\"keywordtype\">void</span> computeLinearPatchPoints(REAL p[], <a class=\"code hl_struct\" href=\"a00937.html\">PointDescriptor</a> <span class=\"keyword\">const</span> &amp;) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00305\" name=\"l00305\"></a><span class=\"lineno\">  305</span>    <span class=\"keywordtype\">void</span> computeIrregularPatchPoints(REAL p[], <a class=\"code hl_struct\" href=\"a00937.html\">PointDescriptor</a> <span class=\"keyword\">const</span> &amp;) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00306\" name=\"l00306\"></a><span class=\"lineno\">  306</span> </div>\n+<div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\">  307</span>    <span class=\"comment\">//  Internal methods specific to regular or irregular patches:</span></div>\n+<div class=\"line\"><a id=\"l00308\" name=\"l00308\"></a><span class=\"lineno\">  308</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> getRegPatchType()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _data.getRegPatchType(); }</div>\n+<div class=\"line\"><a id=\"l00309\" name=\"l00309\"></a><span class=\"lineno\">  309</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span> getRegPatchMask()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _data.getRegPatchMask(); }</div>\n+<div class=\"line\"><a id=\"l00310\" name=\"l00310\"></a><span class=\"lineno\">  310</span> </div>\n+<div class=\"line\"><a id=\"l00311\" name=\"l00311\"></a><span class=\"lineno\">  311</span>    internal::IrregularPatchType <span class=\"keyword\">const</span> &amp; getIrregPatch() <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00312\" name=\"l00312\"></a><span class=\"lineno\">  312</span> </div>\n+<div class=\"line\"><a id=\"l00313\" name=\"l00313\"></a><span class=\"lineno\">  313</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00314\" name=\"l00314\"></a><span class=\"lineno\">  314</span>    <span class=\"comment\">//  Access to the set of member variables - provided to the Factory:</span></div>\n+<div class=\"line\"><a id=\"l00315\" name=\"l00315\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00933.html#a3bdc23048cdd1242d0a429413fa89256\">  315</a></span>    <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a00941.html\">SurfaceFactory</a>;</div>\n+<div class=\"line\"><a id=\"l00316\" name=\"l00316\"></a><span class=\"lineno\">  316</span> </div>\n+<div class=\"line\"><a id=\"l00317\" name=\"l00317\"></a><span class=\"lineno\">  317</span>    internal::SurfaceData       &amp; getSurfaceData()       { <span class=\"keywordflow\">return</span> _data; }</div>\n+<div class=\"line\"><a id=\"l00318\" name=\"l00318\"></a><span class=\"lineno\">  318</span>    internal::SurfaceData <span class=\"keyword\">const</span> &amp; getSurfaceData()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _data; }</div>\n+<div class=\"line\"><a id=\"l00319\" name=\"l00319\"></a><span class=\"lineno\">  319</span> </div>\n+<div class=\"line\"><a id=\"l00320\" name=\"l00320\"></a><span class=\"lineno\">  320</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00321\" name=\"l00321\"></a><span class=\"lineno\">  321</span>    <span class=\"comment\">//  All member variables encapsulated in a single class:</span></div>\n+<div class=\"line\"><a id=\"l00322\" name=\"l00322\"></a><span class=\"lineno\">  322</span>    internal::SurfaceData _data;</div>\n+<div class=\"line\"><a id=\"l00323\" name=\"l00323\"></a><span class=\"lineno\">  323</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\">  324</span> </div>\n+<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\">  325</span> </div>\n+<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\">  326</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\">  327</span><span class=\"comment\">//  Simple inline methods composed of other methods:</span></div>\n+<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\">  328</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\">  329</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\">  330</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00331\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00933.html#ad2b27352bb353eeb1f1419c2ad07385e\">  331</a></span><a class=\"code hl_function\" href=\"a00933.html#ad2b27352bb353eeb1f1419c2ad07385e\">Surface&lt;REAL&gt;::ComputePatchPoints</a>(REAL points[],</div>\n+<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\">  332</span>                                  <a class=\"code hl_struct\" href=\"a00937.html\">PointDescriptor</a> <span class=\"keyword\">const</span> &amp; pointDesc)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00333\" name=\"l00333\"></a><span class=\"lineno\">  333</span> </div>\n+<div class=\"line\"><a id=\"l00334\" name=\"l00334\"></a><span class=\"lineno\">  334</span>    <span class=\"keywordflow\">if</span> (!IsRegular()) {</div>\n+<div class=\"line\"><a id=\"l00335\" name=\"l00335\"></a><span class=\"lineno\">  335</span>        <span class=\"keywordflow\">if</span> (IsLinear()) {</div>\n+<div class=\"line\"><a id=\"l00336\" name=\"l00336\"></a><span class=\"lineno\">  336</span>            computeLinearPatchPoints(points, pointDesc);</div>\n+<div class=\"line\"><a id=\"l00337\" name=\"l00337\"></a><span class=\"lineno\">  337</span>        } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00338\" name=\"l00338\"></a><span class=\"lineno\">  338</span>            computeIrregularPatchPoints(points, pointDesc);</div>\n+<div class=\"line\"><a id=\"l00339\" name=\"l00339\"></a><span class=\"lineno\">  339</span>        }</div>\n+<div class=\"line\"><a id=\"l00340\" name=\"l00340\"></a><span class=\"lineno\">  340</span>    }</div>\n+<div class=\"line\"><a id=\"l00341\" name=\"l00341\"></a><span class=\"lineno\">  341</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00342\" name=\"l00342\"></a><span class=\"lineno\">  342</span> </div>\n+<div class=\"line\"><a id=\"l00343\" name=\"l00343\"></a><span class=\"lineno\">  343</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00344\" name=\"l00344\"></a><span class=\"lineno\">  344</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00345\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00345\" name=\"l00345\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00933.html#ac11caa08d0e7f7ce63e6f3292b20840a\">  345</a></span><a class=\"code hl_function\" href=\"a00933.html#ac11caa08d0e7f7ce63e6f3292b20840a\">Surface&lt;REAL&gt;::PreparePatchPoints</a>(</div>\n+<div class=\"line\"><a id=\"l00346\" name=\"l00346\"></a><span class=\"lineno\">  346</span>        REAL <span class=\"keyword\">const</span> meshPoints[], <a class=\"code hl_struct\" href=\"a00937.html\">PointDescriptor</a> <span class=\"keyword\">const</span> &amp; meshPointDesc,</div>\n+<div class=\"line\"><a id=\"l00347\" name=\"l00347\"></a><span class=\"lineno\">  347</span>        REAL patchPoints[],  <a class=\"code hl_struct\" href=\"a00937.html\">PointDescriptor</a> <span class=\"keyword\">const</span> &amp; patchPointDesc)<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00348\" name=\"l00348\"></a><span class=\"lineno\">  348</span> </div>\n+<div class=\"line\"><a id=\"l00349\" name=\"l00349\"></a><span class=\"lineno\">  349</span>    GatherControlPoints(meshPoints, meshPointDesc, patchPoints, patchPointDesc);</div>\n+<div class=\"line\"><a id=\"l00350\" name=\"l00350\"></a><span class=\"lineno\">  350</span>    ComputePatchPoints(patchPoints, patchPointDesc);</div>\n+<div class=\"line\"><a id=\"l00351\" name=\"l00351\"></a><span class=\"lineno\">  351</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00352\" name=\"l00352\"></a><span class=\"lineno\">  352</span> </div>\n+<div class=\"line\"><a id=\"l00353\" name=\"l00353\"></a><span class=\"lineno\">  353</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00354\" name=\"l00354\"></a><span class=\"lineno\">  354</span><span class=\"comment\">//  Inline invocations of more general methods for derivative overloads:</span></div>\n+<div class=\"line\"><a id=\"l00355\" name=\"l00355\"></a><span class=\"lineno\">  355</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00356\" name=\"l00356\"></a><span class=\"lineno\">  356</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00357\" name=\"l00357\"></a><span class=\"lineno\">  357</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"line\"><a id=\"l00358\" name=\"l00358\"></a><span class=\"lineno\">  358</span><a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;::evaluateDerivs</a>(REAL <span class=\"keyword\">const</span> uv[2],</div>\n+<div class=\"line\"><a id=\"l00359\" name=\"l00359\"></a><span class=\"lineno\">  359</span>                              REAL <span class=\"keyword\">const</span> patchPoints[],</div>\n+<div class=\"line\"><a id=\"l00360\" name=\"l00360\"></a><span class=\"lineno\">  360</span>                              PointDescriptor <span class=\"keyword\">const</span> &amp; pointDesc,</div>\n+<div class=\"line\"><a id=\"l00361\" name=\"l00361\"></a><span class=\"lineno\">  361</span>                              REAL * derivatives[])<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00362\" name=\"l00362\"></a><span class=\"lineno\">  362</span>    <span class=\"keywordflow\">if</span> (IsRegular()) {</div>\n+<div class=\"line\"><a id=\"l00363\" name=\"l00363\"></a><span class=\"lineno\">  363</span>        evalRegularDerivs(uv, patchPoints, pointDesc, derivatives);</div>\n+<div class=\"line\"><a id=\"l00364\" name=\"l00364\"></a><span class=\"lineno\">  364</span>    } <span class=\"keywordflow\">else</span> <span class=\"keywordflow\">if</span> (IsLinear()) {</div>\n+<div class=\"line\"><a id=\"l00365\" name=\"l00365\"></a><span class=\"lineno\">  365</span>        evalMultiLinearDerivs(uv, patchPoints, pointDesc, derivatives);</div>\n+<div class=\"line\"><a id=\"l00366\" name=\"l00366\"></a><span class=\"lineno\">  366</span>    } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00367\" name=\"l00367\"></a><span class=\"lineno\">  367</span>        evalIrregularDerivs(uv, patchPoints, pointDesc, derivatives);</div>\n+<div class=\"line\"><a id=\"l00368\" name=\"l00368\"></a><span class=\"lineno\">  368</span>    }</div>\n+<div class=\"line\"><a id=\"l00369\" name=\"l00369\"></a><span class=\"lineno\">  369</span>}</div>\n+<div class=\"line\"><a id=\"l00370\" name=\"l00370\"></a><span class=\"lineno\">  370</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00371\" name=\"l00371\"></a><span class=\"lineno\">  371</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00372\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00372\" name=\"l00372\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00933.html#a1563dc3496644c732d9644a1f7133d0e\">  372</a></span><a class=\"code hl_function\" href=\"a00933.html#a1563dc3496644c732d9644a1f7133d0e\">Surface&lt;REAL&gt;::Evaluate</a>(REAL <span class=\"keyword\">const</span> uv[2],</div>\n+<div class=\"line\"><a id=\"l00373\" name=\"l00373\"></a><span class=\"lineno\">  373</span>                        REAL <span class=\"keyword\">const</span> patchPoints[],</div>\n+<div class=\"line\"><a id=\"l00374\" name=\"l00374\"></a><span class=\"lineno\">  374</span>                        <a class=\"code hl_struct\" href=\"a00937.html\">PointDescriptor</a> <span class=\"keyword\">const</span> &amp; pointDesc,</div>\n+<div class=\"line\"><a id=\"l00375\" name=\"l00375\"></a><span class=\"lineno\">  375</span>                        REAL P[])<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00376\" name=\"l00376\"></a><span class=\"lineno\">  376</span> </div>\n+<div class=\"line\"><a id=\"l00377\" name=\"l00377\"></a><span class=\"lineno\">  377</span>    REAL * derivatives[6] = { P, 0, 0, 0, 0, 0 };</div>\n+<div class=\"line\"><a id=\"l00378\" name=\"l00378\"></a><span class=\"lineno\">  378</span>    evaluateDerivs(uv, patchPoints, pointDesc, derivatives);</div>\n+<div class=\"line\"><a id=\"l00379\" name=\"l00379\"></a><span class=\"lineno\">  379</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00380\" name=\"l00380\"></a><span class=\"lineno\">  380</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00381\" name=\"l00381\"></a><span class=\"lineno\">  381</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00382\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00382\" name=\"l00382\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00933.html#a13d195e96314a82c23dc716c9500770a\">  382</a></span><a class=\"code hl_function\" href=\"a00933.html#a1563dc3496644c732d9644a1f7133d0e\">Surface&lt;REAL&gt;::Evaluate</a>(REAL <span class=\"keyword\">const</span> uv[2],</div>\n+<div class=\"line\"><a id=\"l00383\" name=\"l00383\"></a><span class=\"lineno\">  383</span>                        REAL <span class=\"keyword\">const</span> patchPoints[],</div>\n+<div class=\"line\"><a id=\"l00384\" name=\"l00384\"></a><span class=\"lineno\">  384</span>                        <a class=\"code hl_struct\" href=\"a00937.html\">PointDescriptor</a> <span class=\"keyword\">const</span> &amp; pointDesc,</div>\n+<div class=\"line\"><a id=\"l00385\" name=\"l00385\"></a><span class=\"lineno\">  385</span>                        REAL P[], REAL Du[], REAL Dv[])<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00386\" name=\"l00386\"></a><span class=\"lineno\">  386</span> </div>\n+<div class=\"line\"><a id=\"l00387\" name=\"l00387\"></a><span class=\"lineno\">  387</span>    REAL * derivatives[6] = { P, Du, Dv, 0, 0, 0 };</div>\n+<div class=\"line\"><a id=\"l00388\" name=\"l00388\"></a><span class=\"lineno\">  388</span>    evaluateDerivs(uv, patchPoints, pointDesc, derivatives);</div>\n+<div class=\"line\"><a id=\"l00389\" name=\"l00389\"></a><span class=\"lineno\">  389</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00390\" name=\"l00390\"></a><span class=\"lineno\">  390</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00391\" name=\"l00391\"></a><span class=\"lineno\">  391</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00392\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00392\" name=\"l00392\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00933.html#a7e06def79a1cb93ef61d58f06b3ccec1\">  392</a></span><a class=\"code hl_function\" href=\"a00933.html#a1563dc3496644c732d9644a1f7133d0e\">Surface&lt;REAL&gt;::Evaluate</a>(REAL <span class=\"keyword\">const</span> uv[2],</div>\n+<div class=\"line\"><a id=\"l00393\" name=\"l00393\"></a><span class=\"lineno\">  393</span>                        REAL <span class=\"keyword\">const</span> patchPoints[],</div>\n+<div class=\"line\"><a id=\"l00394\" name=\"l00394\"></a><span class=\"lineno\">  394</span>                        <a class=\"code hl_struct\" href=\"a00937.html\">PointDescriptor</a> <span class=\"keyword\">const</span> &amp; pointDesc,</div>\n+<div class=\"line\"><a id=\"l00395\" name=\"l00395\"></a><span class=\"lineno\">  395</span>                        REAL P[],   REAL Du[],  REAL Dv[],</div>\n+<div class=\"line\"><a id=\"l00396\" name=\"l00396\"></a><span class=\"lineno\">  396</span>                        REAL Duu[], REAL Duv[], REAL Dvv[])<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00397\" name=\"l00397\"></a><span class=\"lineno\">  397</span> </div>\n+<div class=\"line\"><a id=\"l00398\" name=\"l00398\"></a><span class=\"lineno\">  398</span>    REAL * derivatives[6] = { P, Du, Dv, Duu, Duv, Dvv };</div>\n+<div class=\"line\"><a id=\"l00399\" name=\"l00399\"></a><span class=\"lineno\">  399</span>    evaluateDerivs(uv, patchPoints, pointDesc, derivatives);</div>\n+<div class=\"line\"><a id=\"l00400\" name=\"l00400\"></a><span class=\"lineno\">  400</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00401\" name=\"l00401\"></a><span class=\"lineno\">  401</span> </div>\n+<div class=\"line\"><a id=\"l00402\" name=\"l00402\"></a><span class=\"lineno\">  402</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00403\" name=\"l00403\"></a><span class=\"lineno\">  403</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span></div>\n+<div class=\"line\"><a id=\"l00404\" name=\"l00404\"></a><span class=\"lineno\">  404</span><a class=\"code hl_class\" href=\"a00933.html\">Surface&lt;REAL&gt;::evaluateStencils</a>(REAL <span class=\"keyword\">const</span> uv[2], REAL * sDeriv[])<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00405\" name=\"l00405\"></a><span class=\"lineno\">  405</span> </div>\n+<div class=\"line\"><a id=\"l00406\" name=\"l00406\"></a><span class=\"lineno\">  406</span>    <span class=\"keywordflow\">if</span> (IsRegular()) {</div>\n+<div class=\"line\"><a id=\"l00407\" name=\"l00407\"></a><span class=\"lineno\">  407</span>        <span class=\"keywordflow\">return</span> evalRegularStencils(uv, sDeriv);</div>\n+<div class=\"line\"><a id=\"l00408\" name=\"l00408\"></a><span class=\"lineno\">  408</span>    } <span class=\"keywordflow\">else</span> <span class=\"keywordflow\">if</span> (IsLinear()) {</div>\n+<div class=\"line\"><a id=\"l00409\" name=\"l00409\"></a><span class=\"lineno\">  409</span>        <span class=\"keywordflow\">return</span> evalMultiLinearStencils(uv, sDeriv);</div>\n+<div class=\"line\"><a id=\"l00410\" name=\"l00410\"></a><span class=\"lineno\">  410</span>    } <span class=\"keywordflow\">else</span> {</div>\n+<div class=\"line\"><a id=\"l00411\" name=\"l00411\"></a><span class=\"lineno\">  411</span>        <span class=\"keywordflow\">return</span> evalIrregularStencils(uv, sDeriv);</div>\n+<div class=\"line\"><a id=\"l00412\" name=\"l00412\"></a><span class=\"lineno\">  412</span>    }</div>\n+<div class=\"line\"><a id=\"l00413\" name=\"l00413\"></a><span class=\"lineno\">  413</span>}</div>\n+<div class=\"line\"><a id=\"l00414\" name=\"l00414\"></a><span class=\"lineno\">  414</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00415\" name=\"l00415\"></a><span class=\"lineno\">  415</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span></div>\n+<div class=\"foldopen\" id=\"foldopen00416\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00416\" name=\"l00416\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00933.html#afc66676db4f0e7834e8b0fa77c7c1b46\">  416</a></span><a class=\"code hl_function\" href=\"a00933.html#afc66676db4f0e7834e8b0fa77c7c1b46\">Surface&lt;REAL&gt;::EvaluateStencil</a>(REAL <span class=\"keyword\">const</span> uv[2], REAL sP[])<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00417\" name=\"l00417\"></a><span class=\"lineno\">  417</span> </div>\n+<div class=\"line\"><a id=\"l00418\" name=\"l00418\"></a><span class=\"lineno\">  418</span>    REAL * derivativeStencils[6] = { sP, 0, 0, 0, 0, 0 };</div>\n+<div class=\"line\"><a id=\"l00419\" name=\"l00419\"></a><span class=\"lineno\">  419</span>    <span class=\"keywordflow\">return</span> evaluateStencils(uv, derivativeStencils);</div>\n+<div class=\"line\"><a id=\"l00420\" name=\"l00420\"></a><span class=\"lineno\">  420</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00421\" name=\"l00421\"></a><span class=\"lineno\">  421</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00422\" name=\"l00422\"></a><span class=\"lineno\">  422</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span></div>\n+<div class=\"foldopen\" id=\"foldopen00423\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00423\" name=\"l00423\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00933.html#a79f6ee2550666194950187ff62bc4a6d\">  423</a></span><a class=\"code hl_function\" href=\"a00933.html#afc66676db4f0e7834e8b0fa77c7c1b46\">Surface&lt;REAL&gt;::EvaluateStencil</a>(REAL <span class=\"keyword\">const</span> uv[2],</div>\n+<div class=\"line\"><a id=\"l00424\" name=\"l00424\"></a><span class=\"lineno\">  424</span>                          REAL sP[], REAL sDu[], REAL sDv[])<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00425\" name=\"l00425\"></a><span class=\"lineno\">  425</span> </div>\n+<div class=\"line\"><a id=\"l00426\" name=\"l00426\"></a><span class=\"lineno\">  426</span>    REAL * derivativeStencils[6] = { sP, sDu, sDv, 0, 0, 0 };</div>\n+<div class=\"line\"><a id=\"l00427\" name=\"l00427\"></a><span class=\"lineno\">  427</span>    <span class=\"keywordflow\">return</span> evaluateStencils(uv, derivativeStencils);</div>\n+<div class=\"line\"><a id=\"l00428\" name=\"l00428\"></a><span class=\"lineno\">  428</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00429\" name=\"l00429\"></a><span class=\"lineno\">  429</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00430\" name=\"l00430\"></a><span class=\"lineno\">  430</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span></div>\n+<div class=\"foldopen\" id=\"foldopen00431\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00431\" name=\"l00431\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00933.html#a9c615b13fdbe2f618a45a22967267227\">  431</a></span><a class=\"code hl_function\" href=\"a00933.html#afc66676db4f0e7834e8b0fa77c7c1b46\">Surface&lt;REAL&gt;::EvaluateStencil</a>(REAL <span class=\"keyword\">const</span> uv[2],</div>\n+<div class=\"line\"><a id=\"l00432\" name=\"l00432\"></a><span class=\"lineno\">  432</span>                          REAL sP[],   REAL sDu[],  REAL sDv[],</div>\n+<div class=\"line\"><a id=\"l00433\" name=\"l00433\"></a><span class=\"lineno\">  433</span>                          REAL sDuu[], REAL sDuv[], REAL sDvv[])<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00434\" name=\"l00434\"></a><span class=\"lineno\">  434</span> </div>\n+<div class=\"line\"><a id=\"l00435\" name=\"l00435\"></a><span class=\"lineno\">  435</span>    REAL * derivativeStencils[6] = { sP, sDu, sDv, sDuu, sDuv, sDvv };</div>\n+<div class=\"line\"><a id=\"l00436\" name=\"l00436\"></a><span class=\"lineno\">  436</span>    <span class=\"keywordflow\">return</span> evaluateStencils(uv, derivativeStencils);</div>\n+<div class=\"line\"><a id=\"l00437\" name=\"l00437\"></a><span class=\"lineno\">  437</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00438\" name=\"l00438\"></a><span class=\"lineno\">  438</span> </div>\n+<div class=\"line\"><a id=\"l00439\" name=\"l00439\"></a><span class=\"lineno\">  439</span>} <span class=\"comment\">// end namespace Bfr</span></div>\n+<div class=\"line\"><a id=\"l00440\" name=\"l00440\"></a><span class=\"lineno\">  440</span> </div>\n+<div class=\"line\"><a id=\"l00441\" name=\"l00441\"></a><span class=\"lineno\">  441</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00442\" name=\"l00442\"></a><span class=\"lineno\">  442</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00443\" name=\"l00443\"></a><span class=\"lineno\">  443</span> </div>\n+<div class=\"line\"><a id=\"l00444\" name=\"l00444\"></a><span class=\"lineno\">  444</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l00445\" name=\"l00445\"></a><span class=\"lineno\">  445</span> </div>\n+<div class=\"line\"><a id=\"l00446\" name=\"l00446\"></a><span class=\"lineno\">  446</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_BFR_SURFACE */</span><span class=\"preprocessor\"></span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa00921_html\"><div class=\"ttname\"><a href=\"a00921.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization</a></div><div class=\"ttdoc\">Simple class defining the 2D parameterization of a face.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00899_source.html#l00052\">parameterization.h:52</a></div></div>\n+<div class=\"ttc\" id=\"aa00921_html_a181e30653909f9d0e0afa92dd44d28ec\"><div class=\"ttname\"><a href=\"a00921.html#a181e30653909f9d0e0afa92dd44d28ec\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization::GetFaceSize</a></div><div class=\"ttdeci\">int GetFaceSize() const</div><div class=\"ttdoc\">Returns the size (number of vertices) of the corresponding face.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00899_source.html#l00101\">parameterization.h:101</a></div></div>\n+<div class=\"ttc\" id=\"aa00933_html\"><div class=\"ttname\"><a href=\"a00933.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface</a></div><div class=\"ttdoc\">Encapsulates the limit surface for a face of a mesh.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00887_source.html#l00059\">surface.h:59</a></div></div>\n+<div class=\"ttc\" id=\"aa00933_html_a133ed4fbaddeb2a8036915b14cb21cff\"><div class=\"ttname\"><a href=\"a00933.html#a133ed4fbaddeb2a8036915b14cb21cff\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::GetNumControlPoints</a></div><div class=\"ttdeci\">int GetNumControlPoints() const</div><div class=\"ttdoc\">Return the number of control points affecting the Surface.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00887_source.html#l00137\">surface.h:137</a></div></div>\n+<div class=\"ttc\" id=\"aa00933_html_a1563dc3496644c732d9644a1f7133d0e\"><div class=\"ttname\"><a href=\"a00933.html#a1563dc3496644c732d9644a1f7133d0e\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::Evaluate</a></div><div class=\"ttdeci\">void Evaluate(REAL const uv[2], REAL const patchPoints[], PointDescriptor const &amp;pointDesc, REAL P[]) const</div><div class=\"ttdoc\">Evaluation of position.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00887_source.html#l00372\">surface.h:372</a></div></div>\n+<div class=\"ttc\" id=\"aa00933_html_a181e30653909f9d0e0afa92dd44d28ec\"><div class=\"ttname\"><a href=\"a00933.html#a181e30653909f9d0e0afa92dd44d28ec\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::GetFaceSize</a></div><div class=\"ttdeci\">int GetFaceSize() const</div><div class=\"ttdoc\">Return the size of the face.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00887_source.html#l00109\">surface.h:109</a></div></div>\n+<div class=\"ttc\" id=\"aa00933_html_a193470573424fe6b2e91f317509b5897\"><div class=\"ttname\"><a href=\"a00933.html#a193470573424fe6b2e91f317509b5897\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::IsRegular</a></div><div class=\"ttdeci\">bool IsRegular() const</div><div class=\"ttdoc\">Return if the Surface is a single regular patch.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00887_source.html#l00112\">surface.h:112</a></div></div>\n+<div class=\"ttc\" id=\"aa00933_html_a22604a4489ed5fdedb0ef272de0fa637\"><div class=\"ttname\"><a href=\"a00933.html#a22604a4489ed5fdedb0ef272de0fa637\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::BoundControlPoints</a></div><div class=\"ttdeci\">void BoundControlPoints(REAL const controlPoints[], PointDescriptor const &amp;controlPointDesc, REAL minExtent[], REAL maxExtent[]) const</div><div class=\"ttdoc\">Compute bounds of control points from a local array.</div></div>\n+<div class=\"ttc\" id=\"aa00933_html_a2666f2fe497e68b29337056deda176a9\"><div class=\"ttname\"><a href=\"a00933.html#a2666f2fe497e68b29337056deda176a9\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::GetControlPointIndices</a></div><div class=\"ttdeci\">int GetControlPointIndices(Index meshPointIndices[]) const</div><div class=\"ttdoc\">Identify indices of control points in the mesh.</div></div>\n+<div class=\"ttc\" id=\"aa00933_html_a4a0e50e01fef3e431767a928c2631cab\"><div class=\"ttname\"><a href=\"a00933.html#a4a0e50e01fef3e431767a928c2631cab\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::Index</a></div><div class=\"ttdeci\">int Index</div><div class=\"ttdoc\">Integer type representing a mesh index.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00887_source.html#l00072\">surface.h:72</a></div></div>\n+<div class=\"ttc\" id=\"aa00933_html_a4b5e80eb39b7497712eed0009309cd3c\"><div class=\"ttname\"><a href=\"a00933.html#a4b5e80eb39b7497712eed0009309cd3c\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::ApplyStencil</a></div><div class=\"ttdeci\">void ApplyStencil(REAL const stencil[], REAL const controlPoints[], PointDescriptor const &amp;, REAL result[]) const</div><div class=\"ttdoc\">Apply a single stencil to control points from a local array.</div></div>\n+<div class=\"ttc\" id=\"aa00933_html_a66515298a982aab202e1e3e537c7d324\"><div class=\"ttname\"><a href=\"a00933.html#a66515298a982aab202e1e3e537c7d324\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::GetParameterization</a></div><div class=\"ttdeci\">Parameterization GetParameterization() const</div><div class=\"ttdoc\">Return the Parameterization.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00887_source.html#l00106\">surface.h:106</a></div></div>\n+<div class=\"ttc\" id=\"aa00933_html_a6e1a6ad293d9318f65c2e28c468c66ba\"><div class=\"ttname\"><a href=\"a00933.html#a6e1a6ad293d9318f65c2e28c468c66ba\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::Surface</a></div><div class=\"ttdeci\">Surface()</div><div class=\"ttdoc\">Default construction produces an invalid instance.</div></div>\n+<div class=\"ttc\" id=\"aa00933_html_a7fa4a5c3bfea7fc2ebda886f9b12eb95\"><div class=\"ttname\"><a href=\"a00933.html#a7fa4a5c3bfea7fc2ebda886f9b12eb95\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::ApplyStencilFromMesh</a></div><div class=\"ttdeci\">void ApplyStencilFromMesh(REAL const stencil[], REAL const meshPoints[], PointDescriptor const &amp;, REAL result[]) const</div><div class=\"ttdoc\">Apply a single stencil to control points from the mesh data.</div></div>\n+<div class=\"ttc\" id=\"aa00933_html_a85251d7cc5b0aa5838fa1767b6e31e5d\"><div class=\"ttname\"><a href=\"a00933.html#a85251d7cc5b0aa5838fa1767b6e31e5d\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::operator=</a></div><div class=\"ttdeci\">Surface &amp; operator=(Surface const &amp;src)=default</div></div>\n+<div class=\"ttc\" id=\"aa00933_html_a8df5cf06cea51aeb6419fd698651ae3b\"><div class=\"ttname\"><a href=\"a00933.html#a8df5cf06cea51aeb6419fd698651ae3b\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::BoundControlPointsFromMesh</a></div><div class=\"ttdeci\">void BoundControlPointsFromMesh(REAL const meshPoints[], PointDescriptor const &amp;meshPointDesc, REAL minExtent[], REAL maxExtent[]) const</div><div class=\"ttdoc\">Compute bounds of control points from the mesh data.</div></div>\n+<div class=\"ttc\" id=\"aa00933_html_a9fbe10437e4a7f3c40787283a3ecd560\"><div class=\"ttname\"><a href=\"a00933.html#a9fbe10437e4a7f3c40787283a3ecd560\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::~Surface</a></div><div class=\"ttdeci\">~Surface()=default</div></div>\n+<div class=\"ttc\" id=\"aa00933_html_aa71d36872f416feaa853788a7a7a7ef8\"><div class=\"ttname\"><a href=\"a00933.html#aa71d36872f416feaa853788a7a7a7ef8\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::Clear</a></div><div class=\"ttdeci\">void Clear()</div><div class=\"ttdoc\">Clear a previously initialized Surface.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00887_source.html#l00089\">surface.h:89</a></div></div>\n+<div class=\"ttc\" id=\"aa00933_html_aa9500016cdd5cf88992541cc263a75c9\"><div class=\"ttname\"><a href=\"a00933.html#aa9500016cdd5cf88992541cc263a75c9\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::Surface</a></div><div class=\"ttdeci\">Surface(Surface const &amp;src)=default</div></div>\n+<div class=\"ttc\" id=\"aa00933_html_ac11caa08d0e7f7ce63e6f3292b20840a\"><div class=\"ttname\"><a href=\"a00933.html#ac11caa08d0e7f7ce63e6f3292b20840a\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::PreparePatchPoints</a></div><div class=\"ttdeci\">void PreparePatchPoints(REAL const meshPoints[], PointDescriptor const &amp;meshPointDesc, REAL patchPoints[], PointDescriptor const &amp;patchPointDesc) const</div><div class=\"ttdoc\">Prepare patch points in a local array for evaluation.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00887_source.html#l00345\">surface.h:345</a></div></div>\n+<div class=\"ttc\" id=\"aa00933_html_ac532c4b500b1a85ea22217f2c65a70ed\"><div class=\"ttname\"><a href=\"a00933.html#ac532c4b500b1a85ea22217f2c65a70ed\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::IsValid</a></div><div class=\"ttdeci\">bool IsValid() const</div><div class=\"ttdoc\">Return true if successfully initialized.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00887_source.html#l00086\">surface.h:86</a></div></div>\n+<div class=\"ttc\" id=\"aa00933_html_ad24baa29c6dfff25cd17ee1269ab9f8d\"><div class=\"ttname\"><a href=\"a00933.html#ad24baa29c6dfff25cd17ee1269ab9f8d\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::GatherControlPoints</a></div><div class=\"ttdeci\">void GatherControlPoints(REAL_MESH const meshPoints[], PointDescriptor const &amp;meshPointDesc, REAL controlPoints[], PointDescriptor const &amp;controlPointDesc) const</div><div class=\"ttdoc\">Gather control points in a local array.</div></div>\n+<div class=\"ttc\" id=\"aa00933_html_ad2b27352bb353eeb1f1419c2ad07385e\"><div class=\"ttname\"><a href=\"a00933.html#ad2b27352bb353eeb1f1419c2ad07385e\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::ComputePatchPoints</a></div><div class=\"ttdeci\">void ComputePatchPoints(REAL patchPoints[], PointDescriptor const &amp;patchPointDesc) const</div><div class=\"ttdoc\">Compute all patch points following the control points.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00887_source.html#l00331\">surface.h:331</a></div></div>\n+<div class=\"ttc\" id=\"aa00933_html_adb6e3801db80be8fef1fd0fa4673b041\"><div class=\"ttname\"><a href=\"a00933.html#adb6e3801db80be8fef1fd0fa4673b041\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::IsLinear</a></div><div class=\"ttdeci\">bool IsLinear() const</div><div class=\"ttdoc\">Return if the Surface is linear.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00887_source.html#l00115\">surface.h:115</a></div></div>\n+<div class=\"ttc\" id=\"aa00933_html_adff7aaf7aca5ccb158ebc202cb435e33\"><div class=\"ttname\"><a href=\"a00933.html#adff7aaf7aca5ccb158ebc202cb435e33\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::GetNumPatchPoints</a></div><div class=\"ttdeci\">int GetNumPatchPoints() const</div><div class=\"ttdoc\">Return the number of patch points representing the Surface.</div></div>\n+<div class=\"ttc\" id=\"aa00933_html_afc66676db4f0e7834e8b0fa77c7c1b46\"><div class=\"ttname\"><a href=\"a00933.html#afc66676db4f0e7834e8b0fa77c7c1b46\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::EvaluateStencil</a></div><div class=\"ttdeci\">int EvaluateStencil(REAL const uv[2], REAL sP[]) const</div><div class=\"ttdoc\">Evaluation of the limit stencil for position.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00887_source.html#l00416\">surface.h:416</a></div></div>\n+<div class=\"ttc\" id=\"aa00937_html\"><div class=\"ttname\"><a href=\"a00937.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::PointDescriptor</a></div><div class=\"ttdoc\">Simple struct defining the size and stride of points in arrays.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00887_source.html#l00063\">surface.h:63</a></div></div>\n+<div class=\"ttc\" id=\"aa00937_html_a08f66a6870d87afcd5dc1b60d1019692\"><div class=\"ttname\"><a href=\"a00937.html#a08f66a6870d87afcd5dc1b60d1019692\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::PointDescriptor::stride</a></div><div class=\"ttdeci\">int stride</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00887_source.html#l00068\">surface.h:68</a></div></div>\n+<div class=\"ttc\" id=\"aa00937_html_a439227feff9d7f55384e8780cfc2eb82\"><div class=\"ttname\"><a href=\"a00937.html#a439227feff9d7f55384e8780cfc2eb82\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::PointDescriptor::size</a></div><div class=\"ttdeci\">int size</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00887_source.html#l00068\">surface.h:68</a></div></div>\n+<div class=\"ttc\" id=\"aa00937_html_a69d66788e741236b1176159a1d609189\"><div class=\"ttname\"><a href=\"a00937.html#a69d66788e741236b1176159a1d609189\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::PointDescriptor::PointDescriptor</a></div><div class=\"ttdeci\">PointDescriptor(int n)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00887_source.html#l00065\">surface.h:65</a></div></div>\n+<div class=\"ttc\" id=\"aa00937_html_a6e6069bdfef867e798fe863f40f4274a\"><div class=\"ttname\"><a href=\"a00937.html#a6e6069bdfef867e798fe863f40f4274a\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::PointDescriptor::PointDescriptor</a></div><div class=\"ttdeci\">PointDescriptor(int n, int m)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00887_source.html#l00066\">surface.h:66</a></div></div>\n+<div class=\"ttc\" id=\"aa00937_html_ac60ab7fa3966237e2de95cc60defa4de\"><div class=\"ttname\"><a href=\"a00937.html#ac60ab7fa3966237e2de95cc60defa4de\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::PointDescriptor::PointDescriptor</a></div><div class=\"ttdeci\">PointDescriptor()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00887_source.html#l00064\">surface.h:64</a></div></div>\n+<div class=\"ttc\" id=\"aa00941_html\"><div class=\"ttname\"><a href=\"a00941.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory</a></div><div class=\"ttdoc\">Base class providing initialization of a Surface for each face of a mesh.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00881_source.html#l00103\">surfaceFactory.h:103</a></div></div>\n+<div class=\"ttc\" id=\"aa01353_html\"><div class=\"ttname\"><a href=\"a01353.html\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00797_source.html#l00053\">array.h:53</a></div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00887.html\">glLegacyGregoryPatchTable.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_fa5edef2a780a73fbfb6a11f1af88ceb.html\">bfr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00887.html\">surface.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-glLegacyGregoryPatchTable.h\n+surface.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2015 Pixar\n+2// Copyright 2021 Pixar\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -24,113 +24,420 @@\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n 24\n-25#ifndef OPENSUBDIV3_OSD_GL_LEGACY_GREGORY_PATCH_TABLE_H\n-26#define OPENSUBDIV3_OSD_GL_LEGACY_GREGORY_PATCH_TABLE_H\n+25#ifndef OPENSUBDIV3_BFR_SURFACE_H\n+26#define OPENSUBDIV3_BFR_SURFACE_H\n 27\n 28#include \"../version.h\"\n 29\n-30#include \"../far/patchTable.h\"\n-31#include \"../osd/nonCopyable.h\"\n-32#include \"../osd/opengl.h\"\n+30#include \"../bfr/surfaceData.h\"\n+31#include \"../bfr/parameterization.h\"\n+32#include \"../vtr/array.h\"\n 33\n 34namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n 35namespace OPENSUBDIV_VERSION {\n 36\n-37namespace Osd {\n+37namespace Bfr {\n 38\n-_\b3_\b9class _\bG_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n-40 : private NonCopyable<GLLegacyGregoryPatchTable> {\n-41public:\n-_\b4_\b2 _\b~_\bG_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be();\n-43\n-_\b4_\b4 static _\bG_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be *_\bC_\br_\be_\ba_\bt_\be(_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be const *patchTable);\n-45\n-_\b4_\b6 void _\bU_\bp_\bd_\ba_\bt_\be_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br(GLuint vbo);\n-47\n-_\b4_\b8 GLuint _\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bT_\be_\bx_\bt_\bu_\br_\be_\bB_\bu_\bf_\bf_\be_\br() const {\n-49 return _vertexTextureBuffer;\n-50 }\n-51\n-_\b5_\b2 GLuint _\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be_\bT_\be_\bx_\bt_\bu_\br_\be_\bB_\bu_\bf_\bf_\be_\br() const {\n-53 return _vertexValenceTextureBuffer;\n-54 }\n-55\n-_\b5_\b6 GLuint _\bG_\be_\bt_\bQ_\bu_\ba_\bd_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bT_\be_\bx_\bt_\bu_\br_\be_\bB_\bu_\bf_\bf_\be_\br() const {\n-57 return _quadOffsetsTextureBuffer;\n-58 }\n-59\n-_\b6_\b0 GLuint _\bG_\be_\bt_\bQ_\bu_\ba_\bd_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bB_\ba_\bs_\be(_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bT_\by_\bp_\be type) {\n-61 if (type == _\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bG_\bR_\bE_\bG_\bO_\bR_\bY_\b__\bB_\bO_\bU_\bN_\bD_\bA_\bR_\bY) {\n-62 return _quadOffsetsBase[1];\n-63 }\n-64 return _quadOffsetsBase[0];\n-65 }\n-66\n-67protected:\n-_\b6_\b8 _\bG_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be();\n-69\n-70private:\n-71 GLuint _vertexTextureBuffer;\n-72 GLuint _vertexValenceTextureBuffer;\n-73 GLuint _quadOffsetsTextureBuffer;\n-74 GLuint _quadOffsetsBase[2]; // gregory, boundaryGregory\n-75};\n+58template <typename REAL>\n+_\b5_\b9class _\bS_\bu_\br_\bf_\ba_\bc_\be {\n+60public:\n+_\b6_\b3 struct _\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br {\n+_\b6_\b4 _\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br() : _\bs_\bi_\bz_\be(0), _\bs_\bt_\br_\bi_\bd_\be(0) { }\n+_\b6_\b5 _\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(int n) : _\bs_\bi_\bz_\be(n), _\bs_\bt_\br_\bi_\bd_\be(n) { }\n+_\b6_\b6 _\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(int n, int m) : _\bs_\bi_\bz_\be(n), _\bs_\bt_\br_\bi_\bd_\be(m) { }\n+67\n+_\b6_\b8 int _\bs_\bi_\bz_\be, _\bs_\bt_\br_\bi_\bd_\be;\n+69 };\n+70\n+_\b7_\b2 typedef int _\bI_\bn_\bd_\be_\bx;\n+73\n+74public:\n 76\n-77\n-78\n-79} // end namespace Osd\n-80\n-81} // end namespace OPENSUBDIV_VERSION\n-82using namespace OPENSUBDIV_VERSION;\n-83\n-84} // end namespace OpenSubdiv\n-85\n-86#endif // OPENSUBDIV3_OSD_GL_LEGACY_GREGORY_PATCH_TABLE_H\n+84\n+_\b8_\b6 bool _\bI_\bs_\bV_\ba_\bl_\bi_\bd() const { return _data.isValid(); }\n+87\n+_\b8_\b9 void _\bC_\bl_\be_\ba_\br() { _data.reinitialize(); }\n+90\n+_\b9_\b2 _\bS_\bu_\br_\bf_\ba_\bc_\be();\n+93\n+_\b9_\b4 _\bS_\bu_\br_\bf_\ba_\bc_\be(_\bS_\bu_\br_\bf_\ba_\bc_\be const & src) = default;\n+_\b9_\b5 _\bS_\bu_\br_\bf_\ba_\bc_\be& _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(_\bS_\bu_\br_\bf_\ba_\bc_\be const & src) = default;\n+_\b9_\b6 _\b~_\bS_\bu_\br_\bf_\ba_\bc_\be() = default;\n+98\n+100\n+104\n+_\b1_\b0_\b6 _\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn _\bG_\be_\bt_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn() const { return _data.getParam(); }\n+107\n+_\b1_\b0_\b9 int _\bG_\be_\bt_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be() const { return _\bG_\be_\bt_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn()._\bG_\be_\bt_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be(); }\n+110\n+_\b1_\b1_\b2 bool _\bI_\bs_\bR_\be_\bg_\bu_\bl_\ba_\br() const { return _data.isRegular(); }\n+113\n+_\b1_\b1_\b5 bool _\bI_\bs_\bL_\bi_\bn_\be_\ba_\br() const { return _data.isLinear(); }\n+117\n+119\n+135\n+_\b1_\b3_\b7 int _\bG_\be_\bt_\bN_\bu_\bm_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bP_\bo_\bi_\bn_\bt_\bs() const { return _data.getNumCVs(); }\n+138\n+_\b1_\b4_\b0 int _\bG_\be_\bt_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bP_\bo_\bi_\bn_\bt_\bI_\bn_\bd_\bi_\bc_\be_\bs(_\bI_\bn_\bd_\be_\bx meshPointIndices[]) const;\n+141\n+151 template <typename REAL_MESH>\n+_\b1_\b5_\b2 void _\bG_\ba_\bt_\bh_\be_\br_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bP_\bo_\bi_\bn_\bt_\bs(REAL_MESH const meshPoints[],\n+153 _\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const & meshPointDesc,\n+154 REAL controlPoints[],\n+155 _\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const & controlPointDesc) const;\n+156\n+_\b1_\b5_\b8 void _\bB_\bo_\bu_\bn_\bd_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bP_\bo_\bi_\bn_\bt_\bs(REAL const controlPoints[],\n+159 _\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const & controlPointDesc,\n+160 REAL minExtent[],\n+161 REAL maxExtent[]) const;\n+162\n+_\b1_\b6_\b4 void _\bB_\bo_\bu_\bn_\bd_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bP_\bo_\bi_\bn_\bt_\bs_\bF_\br_\bo_\bm_\bM_\be_\bs_\bh(REAL const meshPoints[],\n+165 _\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const & meshPointDesc,\n+166 REAL minExtent[],\n+167 REAL maxExtent[]) const;\n+169\n+171\n+177\n+_\b1_\b7_\b9 int _\bG_\be_\bt_\bN_\bu_\bm_\bP_\ba_\bt_\bc_\bh_\bP_\bo_\bi_\bn_\bt_\bs() const;\n+180\n+199 void _\bP_\br_\be_\bp_\ba_\br_\be_\bP_\ba_\bt_\bc_\bh_\bP_\bo_\bi_\bn_\bt_\bs(REAL const meshPoints[],\n+200 _\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const & meshPointDesc,\n+201 REAL patchPoints[],\n+202 _\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const & patchPointDesc) const;\n+203\n+213 void _\bC_\bo_\bm_\bp_\bu_\bt_\be_\bP_\ba_\bt_\bc_\bh_\bP_\bo_\bi_\bn_\bt_\bs(REAL patchPoints[],\n+214 _\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const & patchPointDesc) const;\n+216\n+218\n+225\n+227 void _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be(REAL const uv[2],\n+228 REAL const patchPoints[], _\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const & pointDesc,\n+229 REAL P[]) const;\n+230\n+232 void _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be(REAL const uv[2],\n+233 REAL const patchPoints[], _\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const & pointDesc,\n+234 REAL P[], REAL Du[], REAL Dv[]) const;\n+235\n+237 void _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be(REAL const uv[2],\n+238 REAL const patchPoints[], _\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const & pointDesc,\n+239 REAL P[], REAL Du[], REAL Dv[],\n+240 REAL Duu[], REAL Duv[], REAL Dvv[]) const;\n+242\n+244\n+256\n+258 int _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl(REAL const uv[2], REAL sP[]) const;\n+259\n+261 int _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl(REAL const uv[2], REAL sP[],\n+262 REAL sDu[], REAL sDv[]) const;\n+263\n+265 int _\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl(REAL const uv[2], REAL sP[],\n+266 REAL sDu[], REAL sDv[],\n+267 REAL sDuu[], REAL sDuv[], REAL sDvv[]) const;\n+268\n+_\b2_\b7_\b0 void _\bA_\bp_\bp_\bl_\by_\bS_\bt_\be_\bn_\bc_\bi_\bl(REAL const stencil[],\n+271 REAL const controlPoints[], _\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &,\n+272 REAL result[]) const;\n+273\n+_\b2_\b7_\b5 void _\bA_\bp_\bp_\bl_\by_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bF_\br_\bo_\bm_\bM_\be_\bs_\bh(REAL const stencil[],\n+276 REAL const meshPoints[], _\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &,\n+277 REAL result[]) const;\n+279\n+280private:\n+281 // Internal methods for evaluating derivatives, basis weights and\n+282 // stencils for regular, irregular and irregular linear patches:\n+283 typedef _\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by_\b<_\bi_\bn_\bt_\b> _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by;\n+284\n+285 void evaluateDerivs(REAL const uv[2], REAL const patchPoints[],\n+286 _\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &, REAL * derivs[]) const;\n+287 void evalRegularDerivs(REAL const uv[2], REAL const patchPoints[],\n+288 _\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &, REAL * derivs[]) const;\n+289 void evalIrregularDerivs(REAL const uv[2], REAL const patchPoints[],\n+290 _\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &, REAL * derivs[]) const;\n+291 void evalMultiLinearDerivs(REAL const uv[2], REAL const patchPoints[],\n+292 _\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &, REAL * derivs[]) const;\n+293\n+294 void evalRegularBasis(REAL const uv[2], REAL * wDeriv[]) const;\n+295 _\bI_\bn_\bd_\be_\bx_\bA_\br_\br_\ba_\by evalIrregularBasis(REAL const uv[2], REAL * wDeriv[]) const;\n+296 int evalMultiLinearBasis(REAL const uv[2], REAL * wDeriv[]) const;\n+297\n+298 int evaluateStencils(REAL const uv[2], REAL * sDeriv[]) const;\n+299 int evalRegularStencils(REAL const uv[2], REAL * sDeriv[]) const;\n+300 int evalIrregularStencils(REAL const uv[2], REAL * sDeriv[]) const;\n+301 int evalMultiLinearStencils(REAL const uv[2], REAL * sDeriv[]) const;\n+302\n+303 // Internal methods to compute patch points:\n+304 void computeLinearPatchPoints(REAL p[], _\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &) const;\n+305 void computeIrregularPatchPoints(REAL p[], _\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &) const;\n+306\n+307 // Internal methods specific to regular or irregular patches:\n+308 unsigned char getRegPatchType() const { return _data.getRegPatchType(); }\n+309 unsigned char getRegPatchMask() const { return _data.getRegPatchMask(); }\n+310\n+311 internal::IrregularPatchType const & getIrregPatch() const;\n+312\n+313private:\n+314 // Access to the set of member variables - provided to the Factory:\n+_\b3_\b1_\b5 friend class _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by;\n+316\n+317 internal::SurfaceData & getSurfaceData() { return _data; }\n+318 internal::SurfaceData const & getSurfaceData() const { return _data; }\n+319\n+320private:\n+321 // All member variables encapsulated in a single class:\n+322 internal::SurfaceData _data;\n+323};\n+324\n+325\n+326//\n+327// Simple inline methods composed of other methods:\n+328//\n+329template <typename REAL>\n+330inline void\n+_\b3_\b3_\b1_\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bP_\ba_\bt_\bc_\bh_\bP_\bo_\bi_\bn_\bt_\bs(REAL points[],\n+332 _\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const & pointDesc) const {\n+333\n+334 if (!IsRegular()) {\n+335 if (IsLinear()) {\n+336 computeLinearPatchPoints(points, pointDesc);\n+337 } else {\n+338 computeIrregularPatchPoints(points, pointDesc);\n+339 }\n+340 }\n+341}\n+342\n+343template <typename REAL>\n+344inline void\n+_\b3_\b4_\b5_\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\bP_\br_\be_\bp_\ba_\br_\be_\bP_\ba_\bt_\bc_\bh_\bP_\bo_\bi_\bn_\bt_\bs(\n+346 REAL const meshPoints[], _\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const & meshPointDesc,\n+347 REAL patchPoints[], _\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const & patchPointDesc) const {\n+348\n+349 GatherControlPoints(meshPoints, meshPointDesc, patchPoints,\n+patchPointDesc);\n+350 ComputePatchPoints(patchPoints, patchPointDesc);\n+351}\n+352\n+353//\n+354// Inline invocations of more general methods for derivative overloads:\n+355//\n+356template <typename REAL>\n+357inline void\n+358_\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bD_\be_\br_\bi_\bv_\bs(REAL const uv[2],\n+359 REAL const patchPoints[],\n+360 PointDescriptor const & pointDesc,\n+361 REAL * derivatives[]) const {\n+362 if (IsRegular()) {\n+363 evalRegularDerivs(uv, patchPoints, pointDesc, derivatives);\n+364 } else if (IsLinear()) {\n+365 evalMultiLinearDerivs(uv, patchPoints, pointDesc, derivatives);\n+366 } else {\n+367 evalIrregularDerivs(uv, patchPoints, pointDesc, derivatives);\n+368 }\n+369}\n+370template <typename REAL>\n+371inline void\n+_\b3_\b7_\b2_\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be(REAL const uv[2],\n+373 REAL const patchPoints[],\n+374 _\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const & pointDesc,\n+375 REAL P[]) const {\n+376\n+377 REAL * derivatives[6] = { P, 0, 0, 0, 0, 0 };\n+378 evaluateDerivs(uv, patchPoints, pointDesc, derivatives);\n+379}\n+380template <typename REAL>\n+381inline void\n+_\b3_\b8_\b2_\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be(REAL const uv[2],\n+383 REAL const patchPoints[],\n+384 _\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const & pointDesc,\n+385 REAL P[], REAL Du[], REAL Dv[]) const {\n+386\n+387 REAL * derivatives[6] = { P, Du, Dv, 0, 0, 0 };\n+388 evaluateDerivs(uv, patchPoints, pointDesc, derivatives);\n+389}\n+390template <typename REAL>\n+391inline void\n+_\b3_\b9_\b2_\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be(REAL const uv[2],\n+393 REAL const patchPoints[],\n+394 _\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const & pointDesc,\n+395 REAL P[], REAL Du[], REAL Dv[],\n+396 REAL Duu[], REAL Duv[], REAL Dvv[]) const {\n+397\n+398 REAL * derivatives[6] = { P, Du, Dv, Duu, Duv, Dvv };\n+399 evaluateDerivs(uv, patchPoints, pointDesc, derivatives);\n+400}\n+401\n+402template <typename REAL>\n+403inline int\n+404_\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\be_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(REAL const uv[2], REAL * sDeriv[]) const {\n+405\n+406 if (IsRegular()) {\n+407 return evalRegularStencils(uv, sDeriv);\n+408 } else if (IsLinear()) {\n+409 return evalMultiLinearStencils(uv, sDeriv);\n+410 } else {\n+411 return evalIrregularStencils(uv, sDeriv);\n+412 }\n+413}\n+414template <typename REAL>\n+415inline int\n+_\b4_\b1_\b6_\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl(REAL const uv[2], REAL sP[]) const {\n+417\n+418 REAL * derivativeStencils[6] = { sP, 0, 0, 0, 0, 0 };\n+419 return evaluateStencils(uv, derivativeStencils);\n+420}\n+421template <typename REAL>\n+422inline int\n+_\b4_\b2_\b3_\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl(REAL const uv[2],\n+424 REAL sP[], REAL sDu[], REAL sDv[]) const {\n+425\n+426 REAL * derivativeStencils[6] = { sP, sDu, sDv, 0, 0, 0 };\n+427 return evaluateStencils(uv, derivativeStencils);\n+428}\n+429template <typename REAL>\n+430inline int\n+_\b4_\b3_\b1_\bS_\bu_\br_\bf_\ba_\bc_\be_\b<_\bR_\bE_\bA_\bL_\b>_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl(REAL const uv[2],\n+432 REAL sP[], REAL sDu[], REAL sDv[],\n+433 REAL sDuu[], REAL sDuv[], REAL sDvv[]) const {\n+434\n+435 REAL * derivativeStencils[6] = { sP, sDu, sDv, sDuu, sDuv, sDvv };\n+436 return evaluateStencils(uv, derivativeStencils);\n+437}\n+438\n+439} // end namespace Bfr\n+440\n+441} // end namespace OPENSUBDIV_VERSION\n+442using namespace OPENSUBDIV_VERSION;\n+443\n+444} // end namespace OpenSubdiv\n+445\n+446#endif /* OPENSUBDIV3_BFR_SURFACE */\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bT_\by_\bp_\be\n-Type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b4_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bG_\bR_\bE_\bG_\bO_\bR_\bY_\b__\bB_\bO_\bU_\bN_\bD_\bA_\bR_\bY\n-@ GREGORY_BOUNDARY\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b6_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n-Container for arrays of parametric patches.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b4_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n-_\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be_\bT_\be_\bx_\bt_\bu_\br_\be_\bB_\bu_\bf_\bf_\be_\br\n-GLuint GetVertexValenceTextureBuffer() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n-_\bG_\be_\bt_\bQ_\bu_\ba_\bd_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bT_\be_\bx_\bt_\bu_\br_\be_\bB_\bu_\bf_\bf_\be_\br\n-GLuint GetQuadOffsetsTextureBuffer() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n-_\b~_\bG_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n-~GLLegacyGregoryPatchTable()\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n-_\bG_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n-GLLegacyGregoryPatchTable()\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n-_\bU_\bp_\bd_\ba_\bt_\be_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-void UpdateVertexBuffer(GLuint vbo)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n-_\bG_\be_\bt_\bQ_\bu_\ba_\bd_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bB_\ba_\bs_\be\n-GLuint GetQuadOffsetsBase(Far::PatchDescriptor::Type type)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n-_\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bT_\be_\bx_\bt_\bu_\br_\be_\bB_\bu_\bf_\bf_\be_\br\n-GLuint GetVertexTextureBuffer() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bg_\bl_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b4_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bG_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static GLLegacyGregoryPatchTable * Create(Far::PatchTable const *patchTable)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn\n+Simple class defining the 2D parameterization of a face.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b5_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bt_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be\n+int GetFaceSize() const\n+Returns the size (number of vertices) of the corresponding face.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b1_\b0_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be\n+Encapsulates the limit surface for a face of a mesh.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\b._\bh_\b:_\b5_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bP_\bo_\bi_\bn_\bt_\bs\n+int GetNumControlPoints() const\n+Return the number of control points affecting the Surface.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\b._\bh_\b:_\b1_\b3_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be\n+void Evaluate(REAL const uv[2], REAL const patchPoints[], PointDescriptor const\n+&pointDesc, REAL P[]) const\n+Evaluation of position.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\b._\bh_\b:_\b3_\b7_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\b:_\b:_\bG_\be_\bt_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be\n+int GetFaceSize() const\n+Return the size of the face.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\b._\bh_\b:_\b1_\b0_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\b:_\b:_\bI_\bs_\bR_\be_\bg_\bu_\bl_\ba_\br\n+bool IsRegular() const\n+Return if the Surface is a single regular patch.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\b._\bh_\b:_\b1_\b1_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bP_\bo_\bi_\bn_\bt_\bs\n+void BoundControlPoints(REAL const controlPoints[], PointDescriptor const\n+&controlPointDesc, REAL minExtent[], REAL maxExtent[]) const\n+Compute bounds of control points from a local array.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\b:_\b:_\bG_\be_\bt_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bP_\bo_\bi_\bn_\bt_\bI_\bn_\bd_\bi_\bc_\be_\bs\n+int GetControlPointIndices(Index meshPointIndices[]) const\n+Identify indices of control points in the mesh.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\b:_\b:_\bI_\bn_\bd_\be_\bx\n+int Index\n+Integer type representing a mesh index.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\b._\bh_\b:_\b7_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\b:_\b:_\bA_\bp_\bp_\bl_\by_\bS_\bt_\be_\bn_\bc_\bi_\bl\n+void ApplyStencil(REAL const stencil[], REAL const controlPoints[],\n+PointDescriptor const &, REAL result[]) const\n+Apply a single stencil to control points from a local array.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\b:_\b:_\bG_\be_\bt_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn\n+Parameterization GetParameterization() const\n+Return the Parameterization.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\b._\bh_\b:_\b1_\b0_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be\n+Surface()\n+Default construction produces an invalid instance.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\b:_\b:_\bA_\bp_\bp_\bl_\by_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bF_\br_\bo_\bm_\bM_\be_\bs_\bh\n+void ApplyStencilFromMesh(REAL const stencil[], REAL const meshPoints[],\n+PointDescriptor const &, REAL result[]) const\n+Apply a single stencil to control points from the mesh data.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n+Surface & operator=(Surface const &src)=default\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\b:_\b:_\bB_\bo_\bu_\bn_\bd_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bP_\bo_\bi_\bn_\bt_\bs_\bF_\br_\bo_\bm_\bM_\be_\bs_\bh\n+void BoundControlPointsFromMesh(REAL const meshPoints[], PointDescriptor const\n+&meshPointDesc, REAL minExtent[], REAL maxExtent[]) const\n+Compute bounds of control points from the mesh data.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\b:_\b:_\b~_\bS_\bu_\br_\bf_\ba_\bc_\be\n+~Surface()=default\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\b:_\b:_\bC_\bl_\be_\ba_\br\n+void Clear()\n+Clear a previously initialized Surface.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\b._\bh_\b:_\b8_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be\n+Surface(Surface const &src)=default\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\b:_\b:_\bP_\br_\be_\bp_\ba_\br_\be_\bP_\ba_\bt_\bc_\bh_\bP_\bo_\bi_\bn_\bt_\bs\n+void PreparePatchPoints(REAL const meshPoints[], PointDescriptor const\n+&meshPointDesc, REAL patchPoints[], PointDescriptor const &patchPointDesc)\n+const\n+Prepare patch points in a local array for evaluation.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\b._\bh_\b:_\b3_\b4_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\b:_\b:_\bI_\bs_\bV_\ba_\bl_\bi_\bd\n+bool IsValid() const\n+Return true if successfully initialized.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\b._\bh_\b:_\b8_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\b:_\b:_\bG_\ba_\bt_\bh_\be_\br_\bC_\bo_\bn_\bt_\br_\bo_\bl_\bP_\bo_\bi_\bn_\bt_\bs\n+void GatherControlPoints(REAL_MESH const meshPoints[], PointDescriptor const\n+&meshPointDesc, REAL controlPoints[], PointDescriptor const &controlPointDesc)\n+const\n+Gather control points in a local array.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\b:_\b:_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bP_\ba_\bt_\bc_\bh_\bP_\bo_\bi_\bn_\bt_\bs\n+void ComputePatchPoints(REAL patchPoints[], PointDescriptor const\n+&patchPointDesc) const\n+Compute all patch points following the control points.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\b._\bh_\b:_\b3_\b3_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\b:_\b:_\bI_\bs_\bL_\bi_\bn_\be_\ba_\br\n+bool IsLinear() const\n+Return if the Surface is linear.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\b._\bh_\b:_\b1_\b1_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bP_\ba_\bt_\bc_\bh_\bP_\bo_\bi_\bn_\bt_\bs\n+int GetNumPatchPoints() const\n+Return the number of patch points representing the Surface.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\b:_\b:_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\be_\bS_\bt_\be_\bn_\bc_\bi_\bl\n+int EvaluateStencil(REAL const uv[2], REAL sP[]) const\n+Evaluation of the limit stencil for position.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\b._\bh_\b:_\b4_\b1_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\b:_\b:_\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n+Simple struct defining the size and stride of points in arrays.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\b._\bh_\b:_\b6_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\b:_\b:_\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bs_\bt_\br_\bi_\bd_\be\n+int stride\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\b._\bh_\b:_\b6_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\b:_\b:_\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bs_\bi_\bz_\be\n+int size\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\b._\bh_\b:_\b6_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\b:_\b:_\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n+PointDescriptor(int n)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\b._\bh_\b:_\b6_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\b:_\b:_\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n+PointDescriptor(int n, int m)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\b._\bh_\b:_\b6_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\b:_\b:_\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bP_\bo_\bi_\bn_\bt_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n+PointDescriptor()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\b._\bh_\b:_\b6_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by\n+Base class providing initialization of a Surface for each face of a mesh.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b0_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bV_\bt_\br_\b:_\b:_\bC_\bo_\bn_\bs_\bt_\bA_\br_\br_\ba_\by\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\ba_\br_\br_\ba_\by_\b._\bh_\b:_\b5_\b3\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bg_\bl_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh\n+    * _\bb_\bf_\br\n+    * _\bs_\bu_\br_\bf_\ba_\bc_\be_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00890.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00890.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/tbbKernel.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/bfr/limits.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -88,51 +88,43 @@\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n-<a href=\"#namespaces\">Namespaces</a> &#124;\n-<a href=\"#func-members\">Functions</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">tbbKernel.h File Reference</div></div>\n+<a href=\"#nested-classes\">Classes</a> &#124;\n+<a href=\"#namespaces\">Namespaces</a>  </div>\n+  <div class=\"headertitle\"><div class=\"title\">limits.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00773_source.html\">../far/patchDescriptor.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00755_source.html\">../far/patchParam.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a01486_source.html\">../far/types.h</a>&quot;</code><br />\n </div>\n <p><a href=\"a00890_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n+<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n+Classes</h2></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00917.html\">Limits</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Simple struct with limits related to topology.  <a href=\"a00917.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+</table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n+<tr class=\"memitem:a00907\" id=\"r_a00907\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00907.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-</table><table class=\"memberdecls\">\n-<tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"func-members\" name=\"func-members\"></a>\n-Functions</h2></td></tr>\n-<tr class=\"memitem:a4a6a0fcc01638f2a0316b32ad158b485\" id=\"r_a4a6a0fcc01638f2a0316b32ad158b485\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html#a4a6a0fcc01638f2a0316b32ad158b485\">TbbEvalStencils</a> (float const *src, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;srcDesc, float *dst, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDesc, int const *sizes, int const *offsets, int const *indices, float const *weights, int start, int end)</td></tr>\n-<tr class=\"separator:a4a6a0fcc01638f2a0316b32ad158b485\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:af23c35537952bfdd493441e5c42ff2ed\" id=\"r_af23c35537952bfdd493441e5c42ff2ed\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html#af23c35537952bfdd493441e5c42ff2ed\">TbbEvalStencils</a> (float const *src, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;srcDesc, float *dst, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDesc, float *dstDu, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDuDesc, float *dstDv, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDvDesc, int const *sizes, int const *offsets, int const *indices, float const *weights, float const *duWeights, float const *dvWeights, int start, int end)</td></tr>\n-<tr class=\"separator:af23c35537952bfdd493441e5c42ff2ed\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:aa65ed860a2fa5935d99129a898a8f0b6\" id=\"r_aa65ed860a2fa5935d99129a898a8f0b6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html#aa65ed860a2fa5935d99129a898a8f0b6\">TbbEvalStencils</a> (float const *src, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;srcDesc, float *dst, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDesc, float *dstDu, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDuDesc, float *dstDv, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDvDesc, float *dstDuu, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDuuDesc, float *dstDuv, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDuvDesc, float *dstDvv, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDvvDesc, int const *sizes, int const *offsets, int const *indices, float const *weights, float const *duWeights, float const *dvWeights, float const *duuWeights, float const *duvWeights, float const *dvvWeights, int start, int end)</td></tr>\n-<tr class=\"separator:aa65ed860a2fa5935d99129a898a8f0b6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a20e08be34d6183b6943ed7a1586eca4a\" id=\"r_a20e08be34d6183b6943ed7a1586eca4a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html#a20e08be34d6183b6943ed7a1586eca4a\">TbbEvalPatches</a> (float const *src, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;srcDesc, float *dst, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDesc, float *dstDu, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDuDesc, float *dstDv, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDvDesc, int numPatchCoords, const <a class=\"el\" href=\"a01321.html\">PatchCoord</a> *patchCoords, const <a class=\"el\" href=\"a01325.html\">PatchArray</a> *patchArrayBuffer, const int *patchIndexBuffer, const <a class=\"el\" href=\"a01329.html\">PatchParam</a> *patchParamBuffer)</td></tr>\n-<tr class=\"separator:a20e08be34d6183b6943ed7a1586eca4a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:aa0c3c264a43eeddc5cb3a58b006d3d32\" id=\"r_aa0c3c264a43eeddc5cb3a58b006d3d32\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html#aa0c3c264a43eeddc5cb3a58b006d3d32\">TbbEvalPatches</a> (float const *src, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;srcDesc, float *dst, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDesc, float *dstDu, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDuDesc, float *dstDv, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDvDesc, float *dstDuu, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDuuDesc, float *dstDuv, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDuvDesc, float *dstDvv, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDvvDesc, int numPatchCoords, const <a class=\"el\" href=\"a01321.html\">PatchCoord</a> *patchCoords, const <a class=\"el\" href=\"a01325.html\">PatchArray</a> *patchArrayBuffer, const int *patchIndexBuffer, const <a class=\"el\" href=\"a01329.html\">PatchParam</a> *patchParamBuffer)</td></tr>\n-<tr class=\"separator:aa0c3c264a43eeddc5cb3a58b006d3d32\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00890.html\">tbbKernel.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_fa5edef2a780a73fbfb6a11f1af88ceb.html\">bfr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00890.html\">limits.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,59 +1,24 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-_\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs | _\bF_\bu_\bn_\bc_\bt_\bi_\bo_\bn_\bs\n-tbbKernel.h File Reference\n+_\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n+limits.h File Reference\n #include \"../version.h\"\n-#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh\"\n-#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bp_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm_\b._\bh\"\n+#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n+C\bCl\bla\bas\bss\bse\bes\bs\n+struct \u00a0 _\bL_\bi_\bm_\bi_\bt_\bs\n+\u00a0        Simple struct with limits related to topology. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n-\u00a0\n-F\bFu\bun\bnc\bct\bti\bio\bon\bns\bs\n-void\u00a0 _\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs (float const *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc, float\n-      *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc, int const *sizes, int const\n-      *offsets, int const *indices, float const *weights, int start, int end)\n-\u00a0\n-void\u00a0 _\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs (float const *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc, float\n-      *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc, float *dstDu, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n-      const &dstDuDesc, float *dstDv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDvDesc, int\n-      const *sizes, int const *offsets, int const *indices, float const\n-      *weights, float const *duWeights, float const *dvWeights, int start, int\n-      end)\n-\u00a0\n-void\u00a0 _\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs (float const *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc, float\n-      *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc, float *dstDu, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n-      const &dstDuDesc, float *dstDv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDvDesc, float\n-      *dstDuu, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDuuDesc, float *dstDuv,\n-      _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDuvDesc, float *dstDvv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const\n-      &dstDvvDesc, int const *sizes, int const *offsets, int const *indices,\n-      float const *weights, float const *duWeights, float const *dvWeights,\n-      float const *duuWeights, float const *duvWeights, float const\n-      *dvvWeights, int start, int end)\n-\u00a0\n-void\u00a0 _\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs (float const *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc, float\n-      *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc, float *dstDu, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n-      const &dstDuDesc, float *dstDv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDvDesc, int\n-      numPatchCoords, const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd *patchCoords, const _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by\n-      *patchArrayBuffer, const int *patchIndexBuffer, const _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm\n-      *patchParamBuffer)\n-\u00a0\n-void\u00a0 _\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs (float const *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc, float\n-      *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc, float *dstDu, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n-      const &dstDuDesc, float *dstDv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDvDesc, float\n-      *dstDuu, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDuuDesc, float *dstDuv,\n-      _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDuvDesc, float *dstDvv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const\n-      &dstDvvDesc, int numPatchCoords, const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd *patchCoords, const\n-      _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by *patchArrayBuffer, const int *patchIndexBuffer, const\n-      _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm *patchParamBuffer)\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bt_\bb_\bb_\bK_\be_\br_\bn_\be_\bl_\b._\bh\n+    * _\bb_\bf_\br\n+    * _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00890.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00890.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,7 +1,3 @@\n var a00890 = [\n-    [\"TbbEvalPatches\", \"a00890.html#aa0c3c264a43eeddc5cb3a58b006d3d32\", null],\n-    [\"TbbEvalPatches\", \"a00890.html#a20e08be34d6183b6943ed7a1586eca4a\", null],\n-    [\"TbbEvalStencils\", \"a00890.html#aa65ed860a2fa5935d99129a898a8f0b6\", null],\n-    [\"TbbEvalStencils\", \"a00890.html#af23c35537952bfdd493441e5c42ff2ed\", null],\n-    [\"TbbEvalStencils\", \"a00890.html#a4a6a0fcc01638f2a0316b32ad158b485\", null]\n+    [\"Limits\", \"a00917.html\", null]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00890_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00890_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/tbbKernel.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/bfr/limits.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">tbbKernel.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">limits.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00890.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2013 Pixar</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2021 Pixar</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -119,116 +119,55 @@\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_TBB_KERNEL_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_TBB_KERNEL_H</span></div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_BFR_LIMITS_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_BFR_LIMITS_H</span></div>\n <div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n <div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#include &quot;../far/patchDescriptor.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../far/patchParam.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../far/types.h&quot;</span></div>\n <div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n+<div class=\"foldopen\" id=\"foldopen00032\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00905.html\">   32</a></span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"foldopen\" id=\"foldopen00033\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00906.html\">   33</a></span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n <div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span> </div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span>Osd {</div>\n+<div class=\"foldopen\" id=\"foldopen00035\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00907.html\">   35</a></span><span class=\"keyword\">namespace </span>Bfr {</div>\n <div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">struct </span>PatchArray;</div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"keyword\">struct </span>PatchCoord;</div>\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span><span class=\"keyword\">struct </span>PatchParam;</div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span><span class=\"keyword\">struct </span>BufferDescriptor;</div>\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\">   41</span> </div>\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span><span class=\"keywordtype\">void</span></div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html#a4a6a0fcc01638f2a0316b32ad158b485\">   43</a></span><a class=\"code hl_function\" href=\"a00912.html#a4a6a0fcc01638f2a0316b32ad158b485\">TbbEvalStencils</a>(<span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span>                <span class=\"keywordtype\">float</span> * dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span>                <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> * sizes,</div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span>                <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> * offsets,</div>\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span>                <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> * indices,</div>\n-<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span>                <span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * weights,</div>\n-<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span>                <span class=\"keywordtype\">int</span> start, <span class=\"keywordtype\">int</span> end);</div>\n+<div class=\"foldopen\" id=\"foldopen00040\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00917.html\">   40</a></span><span class=\"keyword\">struct </span><a class=\"code hl_struct\" href=\"a00917.html\">Limits</a> {</div>\n+<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00917.html#aca372fcd4c25aa589418934c5056b16c\">   42</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00917.html#aca372fcd4c25aa589418934c5056b16c\">MaxValence</a>()  { <span class=\"keywordflow\">return</span> Far::VALENCE_LIMIT; }</div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span> </div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00917.html#a058dee146ff7dafb8d2b8cb0d09f5da8\">   46</a></span>    <span class=\"keyword\">static</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00917.html#a058dee146ff7dafb8d2b8cb0d09f5da8\">MaxFaceSize</a>() { <span class=\"keywordflow\">return</span> Far::VALENCE_LIMIT; }</div>\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span> </div>\n+<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span>} <span class=\"comment\">// end namespace Bfr</span></div>\n+</div>\n <div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span> </div>\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span><span class=\"keywordtype\">void</span></div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html#af23c35537952bfdd493441e5c42ff2ed\">   52</a></span><a class=\"code hl_function\" href=\"a00912.html#a4a6a0fcc01638f2a0316b32ad158b485\">TbbEvalStencils</a>(<span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span>                <span class=\"keywordtype\">float</span> * dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span>                <span class=\"keywordtype\">float</span> * dstDu,     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDuDesc,</div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span>                <span class=\"keywordtype\">float</span> * dstDv,     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDvDesc,</div>\n-<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span>                <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> * sizes,</div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span>                <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> * offsets,</div>\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span>                <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> * indices,</div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span>                <span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * weights,</div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span>                <span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * duWeights,</div>\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span>                <span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * dvWeights,</div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span>                <span class=\"keywordtype\">int</span> start, <span class=\"keywordtype\">int</span> end);</div>\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span> </div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span><span class=\"keywordtype\">void</span></div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html#aa65ed860a2fa5935d99129a898a8f0b6\">   65</a></span><a class=\"code hl_function\" href=\"a00912.html#a4a6a0fcc01638f2a0316b32ad158b485\">TbbEvalStencils</a>(<span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span>                <span class=\"keywordtype\">float</span> * dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span>                <span class=\"keywordtype\">float</span> * dstDu,     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDuDesc,</div>\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span>                <span class=\"keywordtype\">float</span> * dstDv,     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDvDesc,</div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span>                <span class=\"keywordtype\">float</span> * dstDuu,    <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDuuDesc,</div>\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span>                <span class=\"keywordtype\">float</span> * dstDuv,    <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDuvDesc,</div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>                <span class=\"keywordtype\">float</span> * dstDvv,    <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDvvDesc,</div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>                <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> * sizes,</div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span>                <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> * offsets,</div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span>                <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> * indices,</div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span>                <span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * weights,</div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span>                <span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * duWeights,</div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span>                <span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * dvWeights,</div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span>                <span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * duuWeights,</div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>                <span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * duvWeights,</div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span>                <span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> * dvvWeights,</div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>                <span class=\"keywordtype\">int</span> start, <span class=\"keywordtype\">int</span> end);</div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span> </div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span><span class=\"keywordtype\">void</span></div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html#a20e08be34d6183b6943ed7a1586eca4a\">   84</a></span><a class=\"code hl_function\" href=\"a00912.html#a20e08be34d6183b6943ed7a1586eca4a\">TbbEvalPatches</a>(<span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> *src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>               <span class=\"keywordtype\">float</span> *dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>               <span class=\"keywordtype\">float</span> *dstDu,     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDuDesc,</div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>               <span class=\"keywordtype\">float</span> *dstDv,     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDvDesc,</div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>               <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>               <span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a> *patchCoords,</div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>               <span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01325.html\">PatchArray</a> *patchArrayBuffer,</div>\n-<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span>               <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> *patchIndexBuffer,</div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>               <span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01329.html\">PatchParam</a> *patchParamBuffer);</div>\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span> </div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span><span class=\"keywordtype\">void</span></div>\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00912.html#aa0c3c264a43eeddc5cb3a58b006d3d32\">   95</a></span><a class=\"code hl_function\" href=\"a00912.html#a20e08be34d6183b6943ed7a1586eca4a\">TbbEvalPatches</a>(<span class=\"keywordtype\">float</span> <span class=\"keyword\">const</span> *src, <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;srcDesc,</div>\n-<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span>               <span class=\"keywordtype\">float</span> *dst,       <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDesc,</div>\n-<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>               <span class=\"keywordtype\">float</span> *dstDu,     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDuDesc,</div>\n-<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span>               <span class=\"keywordtype\">float</span> *dstDv,     <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDvDesc,</div>\n-<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span>               <span class=\"keywordtype\">float</span> *dstDuu,    <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDuuDesc,</div>\n-<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span>               <span class=\"keywordtype\">float</span> *dstDuv,    <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDuvDesc,</div>\n-<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span>               <span class=\"keywordtype\">float</span> *dstDvv,    <a class=\"code hl_struct\" href=\"a01141.html\">BufferDescriptor</a> <span class=\"keyword\">const</span> &amp;dstDvvDesc,</div>\n-<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span>               <span class=\"keywordtype\">int</span> numPatchCoords,</div>\n-<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span>               <span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01321.html\">PatchCoord</a> *patchCoords,</div>\n-<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span>               <span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01325.html\">PatchArray</a> *patchArrayBuffer,</div>\n-<div class=\"line\"><a id=\"l00105\" name=\"l00105\"></a><span class=\"lineno\">  105</span>               <span class=\"keyword\">const</span> <span class=\"keywordtype\">int</span> *patchIndexBuffer,</div>\n-<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span>               <span class=\"keyword\">const</span> <a class=\"code hl_struct\" href=\"a01329.html\">PatchParam</a> *patchParamBuffer);</div>\n-<div class=\"line\"><a id=\"l00107\" name=\"l00107\"></a><span class=\"lineno\">  107</span> </div>\n-<div class=\"line\"><a id=\"l00108\" name=\"l00108\"></a><span class=\"lineno\">  108</span>}  <span class=\"comment\">// end namespace Osd</span></div>\n-<div class=\"line\"><a id=\"l00109\" name=\"l00109\"></a><span class=\"lineno\">  109</span> </div>\n-<div class=\"line\"><a id=\"l00110\" name=\"l00110\"></a><span class=\"lineno\">  110</span>}  <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00112\" name=\"l00112\"></a><span class=\"lineno\">  112</span> </div>\n-<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span>}  <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span> </div>\n-<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_TBB_KERNEL_H</span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa00912_html_a20e08be34d6183b6943ed7a1586eca4a\"><div class=\"ttname\"><a href=\"a00912.html#a20e08be34d6183b6943ed7a1586eca4a\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvalPatches</a></div><div class=\"ttdeci\">void TbbEvalPatches(float const *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, float *dstDu, BufferDescriptor const &amp;dstDuDesc, float *dstDv, BufferDescriptor const &amp;dstDvDesc, int numPatchCoords, const PatchCoord *patchCoords, const PatchArray *patchArrayBuffer, const int *patchIndexBuffer, const PatchParam *patchParamBuffer)</div></div>\n-<div class=\"ttc\" id=\"aa00912_html_a4a6a0fcc01638f2a0316b32ad158b485\"><div class=\"ttname\"><a href=\"a00912.html#a4a6a0fcc01638f2a0316b32ad158b485\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvalStencils</a></div><div class=\"ttdeci\">void TbbEvalStencils(float const *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, int const *sizes, int const *offsets, int const *indices, float const *weights, int start, int end)</div></div>\n-<div class=\"ttc\" id=\"aa01141_html\"><div class=\"ttname\"><a href=\"a01141.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::BufferDescriptor</a></div><div class=\"ttdoc\">BufferDescriptor is a struct which describes buffer elements in interleaved data buffers....</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00866_source.html#l00061\">bufferDescriptor.h:61</a></div></div>\n-<div class=\"ttc\" id=\"aa01321_html\"><div class=\"ttname\"><a href=\"a01321.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchCoord</a></div><div class=\"ttdoc\">Coordinates set on a patch table.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00042\">types.h:42</a></div></div>\n-<div class=\"ttc\" id=\"aa01325_html\"><div class=\"ttname\"><a href=\"a01325.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchArray</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00066\">types.h:66</a></div></div>\n-<div class=\"ttc\" id=\"aa01329_html\"><div class=\"ttname\"><a href=\"a01329.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchParam</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00127\">types.h:127</a></div></div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+</div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+</div>\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span> </div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_BFR_LIMITS_H */</span><span class=\"preprocessor\"></span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa00917_html\"><div class=\"ttname\"><a href=\"a00917.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Limits</a></div><div class=\"ttdoc\">Simple struct with limits related to topology.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00040\">limits.h:40</a></div></div>\n+<div class=\"ttc\" id=\"aa00917_html_a058dee146ff7dafb8d2b8cb0d09f5da8\"><div class=\"ttname\"><a href=\"a00917.html#a058dee146ff7dafb8d2b8cb0d09f5da8\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Limits::MaxFaceSize</a></div><div class=\"ttdeci\">static int MaxFaceSize()</div><div class=\"ttdoc\">Returns the maximum allowable size for a face (number of vertices)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00046\">limits.h:46</a></div></div>\n+<div class=\"ttc\" id=\"aa00917_html_aca372fcd4c25aa589418934c5056b16c\"><div class=\"ttname\"><a href=\"a00917.html#aca372fcd4c25aa589418934c5056b16c\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Limits::MaxValence</a></div><div class=\"ttdeci\">static int MaxValence()</div><div class=\"ttdoc\">Returns the maximum allowable valence for a vertex.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00042\">limits.h:42</a></div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00890.html\">tbbKernel.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_fa5edef2a780a73fbfb6a11f1af88ceb.html\">bfr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00890.html\">limits.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-tbbKernel.h\n+limits.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2013 Pixar\n+2// Copyright 2021 Pixar\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -24,126 +24,49 @@\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n 24\n-25#ifndef OPENSUBDIV3_OSD_TBB_KERNEL_H\n-26#define OPENSUBDIV3_OSD_TBB_KERNEL_H\n+25#ifndef OPENSUBDIV3_BFR_LIMITS_H\n+26#define OPENSUBDIV3_BFR_LIMITS_H\n 27\n 28#include \"../version.h\"\n-29#include \"../far/patchDescriptor.h\"\n-30#include \"../far/patchParam.h\"\n+29\n+30#include \"../far/types.h\"\n 31\n-32namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-33namespace OPENSUBDIV_VERSION {\n+_\b3_\b2namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+_\b3_\b3namespace OPENSUBDIV_VERSION {\n 34\n-35namespace Osd {\n+_\b3_\b5namespace Bfr {\n 36\n-37struct PatchArray;\n-38struct PatchCoord;\n-39struct PatchParam;\n-40struct BufferDescriptor;\n-41\n-42void\n-_\b4_\b3_\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(float const * src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-44 float * dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-45 int const * sizes,\n-46 int const * offsets,\n-47 int const * indices,\n-48 float const * weights,\n-49 int start, int end);\n+_\b4_\b0struct _\bL_\bi_\bm_\bi_\bt_\bs {\n+_\b4_\b2 static int _\bM_\ba_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be() { return Far::VALENCE_LIMIT; }\n+43\n+_\b4_\b6 static int _\bM_\ba_\bx_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be() { return Far::VALENCE_LIMIT; }\n+47};\n+48\n+49} // end namespace Bfr\n 50\n-51void\n-_\b5_\b2_\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(float const * src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-53 float * dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-54 float * dstDu, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDuDesc,\n-55 float * dstDv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDvDesc,\n-56 int const * sizes,\n-57 int const * offsets,\n-58 int const * indices,\n-59 float const * weights,\n-60 float const * duWeights,\n-61 float const * dvWeights,\n-62 int start, int end);\n-63\n-64void\n-_\b6_\b5_\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs(float const * src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-66 float * dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-67 float * dstDu, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDuDesc,\n-68 float * dstDv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDvDesc,\n-69 float * dstDuu, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDuuDesc,\n-70 float * dstDuv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDuvDesc,\n-71 float * dstDvv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDvvDesc,\n-72 int const * sizes,\n-73 int const * offsets,\n-74 int const * indices,\n-75 float const * weights,\n-76 float const * duWeights,\n-77 float const * dvWeights,\n-78 float const * duuWeights,\n-79 float const * duvWeights,\n-80 float const * dvvWeights,\n-81 int start, int end);\n-82\n-83void\n-_\b8_\b4_\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(float const *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-85 float *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-86 float *dstDu, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDuDesc,\n-87 float *dstDv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDvDesc,\n-88 int numPatchCoords,\n-89 const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd *patchCoords,\n-90 const _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by *patchArrayBuffer,\n-91 const int *patchIndexBuffer,\n-92 const _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm *patchParamBuffer);\n-93\n-94void\n-_\b9_\b5_\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs(float const *src, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &srcDesc,\n-96 float *dst, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDesc,\n-97 float *dstDu, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDuDesc,\n-98 float *dstDv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDvDesc,\n-99 float *dstDuu, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDuuDesc,\n-100 float *dstDuv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDuvDesc,\n-101 float *dstDvv, _\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br const &dstDvvDesc,\n-102 int numPatchCoords,\n-103 const _\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd *patchCoords,\n-104 const _\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by *patchArrayBuffer,\n-105 const int *patchIndexBuffer,\n-106 const _\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm *patchParamBuffer);\n-107\n-108} // end namespace Osd\n-109\n-110} // end namespace OPENSUBDIV_VERSION\n-111using namespace OPENSUBDIV_VERSION;\n-112\n-113} // end namespace OpenSubdiv\n-114\n-115#endif // OPENSUBDIV3_OSD_TBB_KERNEL_H\n+51} // end namespace OPENSUBDIV_VERSION\n+52using namespace OPENSUBDIV_VERSION;\n+53} // end namespace OpenSubdiv\n+54\n+55#endif /* OPENSUBDIV3_BFR_LIMITS_H */\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bP_\ba_\bt_\bc_\bh_\be_\bs\n-void TbbEvalPatches(float const *src, BufferDescriptor const &srcDesc, float\n-*dst, BufferDescriptor const &dstDesc, float *dstDu, BufferDescriptor const\n-&dstDuDesc, float *dstDv, BufferDescriptor const &dstDvDesc, int\n-numPatchCoords, const PatchCoord *patchCoords, const PatchArray\n-*patchArrayBuffer, const int *patchIndexBuffer, const PatchParam\n-*patchParamBuffer)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bT_\bb_\bb_\bE_\bv_\ba_\bl_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bs\n-void TbbEvalStencils(float const *src, BufferDescriptor const &srcDesc, float\n-*dst, BufferDescriptor const &dstDesc, int const *sizes, int const *offsets,\n-int const *indices, float const *weights, int start, int end)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bB_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n-BufferDescriptor is a struct which describes buffer elements in interleaved\n-data buffers....\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b6_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bC_\bo_\bo_\br_\bd\n-Coordinates set on a patch table.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b4_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bA_\br_\br_\ba_\by\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b6_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bP_\ba_\br_\ba_\bm\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b1_\b2_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bs\n+Simple struct with limits related to topology.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b4_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bs_\b:_\b:_\bM_\ba_\bx_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be\n+static int MaxFaceSize()\n+Returns the maximum allowable size for a face (number of vertices)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b4_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bL_\bi_\bm_\bi_\bt_\bs_\b:_\b:_\bM_\ba_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be\n+static int MaxValence()\n+Returns the maximum allowable valence for a vertex.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b4_\b2\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bt_\bb_\bb_\bK_\be_\br_\bn_\be_\bl_\b._\bh\n+    * _\bb_\bf_\br\n+    * _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00893.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00893.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/mtlLegacyGregoryPatchTable.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/bfr/surfaceFactoryMeshAdapter.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -90,42 +90,41 @@\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> &#124;\n <a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">mtlLegacyGregoryPatchTable.h File Reference</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">surfaceFactoryMeshAdapter.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00761_source.html\">../far/patchTable.h</a>&quot;</code><br />\n-<code>#include &quot;../osd/nonCopyable.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00824_source.html\">../osd/mtlCommon.h</a>&quot;</code><br />\n+<code>#include &lt;cstdint&gt;</code><br />\n </div>\n <p><a href=\"a00893_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01297.html\">MTLLegacyGregoryPatchTable</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00957.html\">SurfaceFactoryMeshAdapter</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Abstract interface adapting <a class=\"el\" href=\"a00941.html\" title=\"Base class providing initialization of a Surface for each face of a mesh.\">SurfaceFactory</a> to a connected mesh representation.  <a href=\"a00957.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n+<tr class=\"memitem:a00907\" id=\"r_a00907\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00907.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00893.html\">mtlLegacyGregoryPatchTable.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_fa5edef2a780a73fbfb6a11f1af88ceb.html\">bfr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00893.html\">surfaceFactoryMeshAdapter.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,25 +1,25 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-mtlLegacyGregoryPatchTable.h File Reference\n+surfaceFactoryMeshAdapter.h File Reference\n #include \"../version.h\"\n-#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh\"\n-#include \"../osd/nonCopyable.h\"\n-#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bm_\bt_\bl_\bC_\bo_\bm_\bm_\bo_\bn_\b._\bh\"\n+#include <cstdint>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bM_\bT_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n+class \u00a0 _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br\n+\u00a0       Abstract interface adapting _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by to a connected mesh\n+        representation. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bm_\bt_\bl_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh\n+    * _\bb_\bf_\br\n+    * _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00893.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00893.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,3 +1,3 @@\n var a00893 = [\n-    [\"MTLLegacyGregoryPatchTable\", \"a01297.html\", \"a01297\"]\n+    [\"SurfaceFactoryMeshAdapter\", \"a00957.html\", \"a00957\"]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00893_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00893_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/mtlLegacyGregoryPatchTable.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/bfr/surfaceFactoryMeshAdapter.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">mtlLegacyGregoryPatchTable.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">surfaceFactoryMeshAdapter.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00893.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2013 Pixar</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2021 Pixar</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -119,112 +119,149 @@\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_MTL_LEGACY_GREGORY_PATCH_TABLE_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_MTL_LEGACY_GREGORY_PATCH_TABLE_H</span></div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_BFR_SURFACE_FACTORY_ADAPTER_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_BFR_SURFACE_FACTORY_ADAPTER_H</span></div>\n <div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n <div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#include &quot;../far/patchTable.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../osd/nonCopyable.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"preprocessor\">#include &quot;../osd/mtlCommon.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span> </div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"keyword\">@protocol </span>MTLDevice;</div>\n-<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span><span class=\"keyword\">@protocol </span>MTLBuffer;</div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span> </div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &lt;cstdint&gt;</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n+<div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span> </div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span>Bfr {</div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n+<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span><span class=\"keyword\">class </span>VertexDescriptor;</div>\n <div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span> </div>\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span><span class=\"keyword\">namespace </span>Osd {</div>\n-<div class=\"line\"><a id=\"l00040\" name=\"l00040\"></a><span class=\"lineno\">   40</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00041\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00041\" name=\"l00041\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01297.html\">   41</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01297.html\">MTLLegacyGregoryPatchTable</a></div>\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\">   42</span>: <span class=\"keyword\">private</span> NonCopyable&lt;MTLLegacyGregoryPatchTable&gt;</div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span>{</div>\n-<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01297.html#aed8ca15f9dfcacfcfc31ab1227b61dcc\">   45</a></span>    <a class=\"code hl_function\" href=\"a01297.html#aed8ca15f9dfcacfcfc31ab1227b61dcc\">~MTLLegacyGregoryPatchTable</a>();</div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span> </div>\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span>    <span class=\"keyword\">template</span>&lt;<span class=\"keyword\">typename</span> DEVICE_CONTEXT&gt;</div>\n-<div class=\"foldopen\" id=\"foldopen00048\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01297.html#a25a5b8f002589cba7fd380492019ece8\">   48</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01297.html\">MTLLegacyGregoryPatchTable</a>* <a class=\"code hl_function\" href=\"a01297.html#a25a5b8f002589cba7fd380492019ece8\">Create</a>(<a class=\"code hl_class\" href=\"a00993.html\">Far::PatchTable</a> <span class=\"keyword\">const</span>* farPatchTable, DEVICE_CONTEXT context) {</div>\n-<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span>        <span class=\"keywordflow\">return</span> Create(farPatchTable, context);</div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span> </div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01297.html#ac51e7db7abdd0eaaca33d4947bbe41b4\">   52</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01297.html\">MTLLegacyGregoryPatchTable</a>* <a class=\"code hl_function\" href=\"a01297.html#ac51e7db7abdd0eaaca33d4947bbe41b4\">Create</a>(<a class=\"code hl_class\" href=\"a00993.html\">Far::PatchTable</a> <span class=\"keyword\">const</span>* farPatchTable, <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context);</div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span> </div>\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01297.html#ad922644c53b64f5b60565065f09cbd17\">   54</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01297.html#ad922644c53b64f5b60565065f09cbd17\">UpdateVertexBuffer</a>(id&lt;MTLBuffer&gt; vbo, <span class=\"keywordtype\">int</span> numVertices, <span class=\"keywordtype\">int</span> numVertexElements, <a class=\"code hl_class\" href=\"a01285.html\">MTLContext</a>* context);</div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00056\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01297.html#afffd8d6da44d9c7113d9dc190eefdb3d\">   56</a></span>    id&lt;MTLBuffer&gt; <a class=\"code hl_function\" href=\"a01297.html#afffd8d6da44d9c7113d9dc190eefdb3d\">GetVertexBuffer</a>()<span class=\"keyword\"> const</span></div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span><span class=\"keyword\">    </span>{</div>\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span>        <span class=\"keywordflow\">return</span> _vertexBuffer;</div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00061\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01297.html#a7e1414cf8ab619f18f532b58f614b123\">   61</a></span>    id&lt;MTLBuffer&gt; <a class=\"code hl_function\" href=\"a01297.html#a7e1414cf8ab619f18f532b58f614b123\">GetVertexValenceBuffer</a>()<span class=\"keyword\"> const</span></div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span><span class=\"keyword\">    </span>{</div>\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span>        <span class=\"keywordflow\">return</span> _vertexValenceBuffer;</div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00066\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01297.html#a846f5698d4874b41374c2ac6c52c3ea2\">   66</a></span>    id&lt;MTLBuffer&gt; <a class=\"code hl_function\" href=\"a01297.html#a846f5698d4874b41374c2ac6c52c3ea2\">GetQuadOffsetsBuffer</a>()<span class=\"keyword\"> const</span></div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span><span class=\"keyword\">    </span>{</div>\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span>        <span class=\"keywordflow\">return</span> _quadOffsetsBuffer;</div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00071\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01297.html#a176fb87b7ba47d5c2c2a6d332e2687ce\">   71</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01297.html#a176fb87b7ba47d5c2c2a6d332e2687ce\">GetQuadOffsetsBase</a>(<a class=\"code hl_enumeration\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">Far::PatchDescriptor::Type</a> type)</div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>    {</div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span>        <span class=\"keywordflow\">if</span>(type == <a class=\"code hl_enumvalue\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7ac4ae10df9c13e44880ca7be341e44f2a\">Far::PatchDescriptor::GREGORY_BOUNDARY</a>)</div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span>            <span class=\"keywordflow\">return</span> _quadOffsetsBase[1];</div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span>        <span class=\"keywordflow\">return</span> _quadOffsetsBase[0];</div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span> </div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>    id&lt;MTLBuffer&gt; _vertexBuffer;</div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span>    id&lt;MTLBuffer&gt; _vertexValenceBuffer;</div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>    id&lt;MTLBuffer&gt; _quadOffsetsBuffer;</div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>    <span class=\"keywordtype\">int</span> _quadOffsetsBase[2];</div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span> </div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>} <span class=\"comment\">//end namespace Osd</span></div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span> </div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>} <span class=\"comment\">//end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span> </div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>} <span class=\"comment\">//end namespace OpenSuddiv</span></div>\n-<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span> </div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">// OPENSUBDIV3_OSD_MTL_LEGACY_GREGORY_PATCH_TABLE_H</span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa00973_html_a1d1cfd8ffb84e947f82999c682b666a7\"><div class=\"ttname\"><a href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::Type</a></div><div class=\"ttdeci\">Type</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00773_source.html#l00048\">patchDescriptor.h:48</a></div></div>\n-<div class=\"ttc\" id=\"aa00973_html_a1d1cfd8ffb84e947f82999c682b666a7ac4ae10df9c13e44880ca7be341e44f2a\"><div class=\"ttname\"><a href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7ac4ae10df9c13e44880ca7be341e44f2a\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::GREGORY_BOUNDARY</a></div><div class=\"ttdeci\">@ GREGORY_BOUNDARY</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00773_source.html#l00061\">patchDescriptor.h:61</a></div></div>\n-<div class=\"ttc\" id=\"aa00993_html\"><div class=\"ttname\"><a href=\"a00993.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable</a></div><div class=\"ttdoc\">Container for arrays of parametric patches.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00761_source.html#l00055\">patchTable.h:55</a></div></div>\n-<div class=\"ttc\" id=\"aa01285_html\"><div class=\"ttname\"><a href=\"a01285.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLContext</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00824_source.html#l00040\">mtlCommon.h:40</a></div></div>\n-<div class=\"ttc\" id=\"aa01297_html\"><div class=\"ttname\"><a href=\"a01297.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLLegacyGregoryPatchTable</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00893_source.html#l00041\">mtlLegacyGregoryPatchTable.h:43</a></div></div>\n-<div class=\"ttc\" id=\"aa01297_html_a176fb87b7ba47d5c2c2a6d332e2687ce\"><div class=\"ttname\"><a href=\"a01297.html#a176fb87b7ba47d5c2c2a6d332e2687ce\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLLegacyGregoryPatchTable::GetQuadOffsetsBase</a></div><div class=\"ttdeci\">int GetQuadOffsetsBase(Far::PatchDescriptor::Type type)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00893_source.html#l00071\">mtlLegacyGregoryPatchTable.h:71</a></div></div>\n-<div class=\"ttc\" id=\"aa01297_html_a25a5b8f002589cba7fd380492019ece8\"><div class=\"ttname\"><a href=\"a01297.html#a25a5b8f002589cba7fd380492019ece8\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLLegacyGregoryPatchTable::Create</a></div><div class=\"ttdeci\">static MTLLegacyGregoryPatchTable * Create(Far::PatchTable const *farPatchTable, DEVICE_CONTEXT context)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00893_source.html#l00048\">mtlLegacyGregoryPatchTable.h:48</a></div></div>\n-<div class=\"ttc\" id=\"aa01297_html_a7e1414cf8ab619f18f532b58f614b123\"><div class=\"ttname\"><a href=\"a01297.html#a7e1414cf8ab619f18f532b58f614b123\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLLegacyGregoryPatchTable::GetVertexValenceBuffer</a></div><div class=\"ttdeci\">id&lt; MTLBuffer &gt; GetVertexValenceBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00893_source.html#l00061\">mtlLegacyGregoryPatchTable.h:61</a></div></div>\n-<div class=\"ttc\" id=\"aa01297_html_a846f5698d4874b41374c2ac6c52c3ea2\"><div class=\"ttname\"><a href=\"a01297.html#a846f5698d4874b41374c2ac6c52c3ea2\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLLegacyGregoryPatchTable::GetQuadOffsetsBuffer</a></div><div class=\"ttdeci\">id&lt; MTLBuffer &gt; GetQuadOffsetsBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00893_source.html#l00066\">mtlLegacyGregoryPatchTable.h:66</a></div></div>\n-<div class=\"ttc\" id=\"aa01297_html_ac51e7db7abdd0eaaca33d4947bbe41b4\"><div class=\"ttname\"><a href=\"a01297.html#ac51e7db7abdd0eaaca33d4947bbe41b4\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLLegacyGregoryPatchTable::Create</a></div><div class=\"ttdeci\">static MTLLegacyGregoryPatchTable * Create(Far::PatchTable const *farPatchTable, MTLContext *context)</div></div>\n-<div class=\"ttc\" id=\"aa01297_html_ad922644c53b64f5b60565065f09cbd17\"><div class=\"ttname\"><a href=\"a01297.html#ad922644c53b64f5b60565065f09cbd17\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLLegacyGregoryPatchTable::UpdateVertexBuffer</a></div><div class=\"ttdeci\">void UpdateVertexBuffer(id&lt; MTLBuffer &gt; vbo, int numVertices, int numVertexElements, MTLContext *context)</div></div>\n-<div class=\"ttc\" id=\"aa01297_html_aed8ca15f9dfcacfcfc31ab1227b61dcc\"><div class=\"ttname\"><a href=\"a01297.html#aed8ca15f9dfcacfcfc31ab1227b61dcc\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLLegacyGregoryPatchTable::~MTLLegacyGregoryPatchTable</a></div><div class=\"ttdeci\">~MTLLegacyGregoryPatchTable()</div></div>\n-<div class=\"ttc\" id=\"aa01297_html_afffd8d6da44d9c7113d9dc190eefdb3d\"><div class=\"ttname\"><a href=\"a01297.html#afffd8d6da44d9c7113d9dc190eefdb3d\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLLegacyGregoryPatchTable::GetVertexBuffer</a></div><div class=\"ttdeci\">id&lt; MTLBuffer &gt; GetVertexBuffer() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00893_source.html#l00056\">mtlLegacyGregoryPatchTable.h:56</a></div></div>\n+<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"comment\">//  SurfaceFactoryMeshAdapter is an abstract class that defines the interface</span></div>\n+<div class=\"line\"><a id=\"l00044\" name=\"l00044\"></a><span class=\"lineno\">   44</span><span class=\"comment\">//  through which subclasses of SurfaceFactory adapt to a connected mesh</span></div>\n+<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\">   45</span><span class=\"comment\">//  representation. The interface defines methods that describe the mesh</span></div>\n+<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span><span class=\"comment\">//  topology and control indices in the neighborhood of a mesh -- from</span></div>\n+<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span><span class=\"comment\">//  which the SurfaceFactory to identifies an appropriate limit surface.</span></div>\n+<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\">   48</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span><span class=\"comment\">//  SurfaceFactoryMeshAdapter methods require a subclass to provide a complete</span></div>\n+<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span><span class=\"comment\">//  description of the topology around a base face, as well as indices</span></div>\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span><span class=\"comment\">//  associated with it (both vertex and face-varying).  The intent here is</span></div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span><span class=\"comment\">//  to keep the number of methods required to a minimum, and also to minimize</span></div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span><span class=\"comment\">//  the number of invocations required by the factory.</span></div>\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span><span class=\"comment\">//  With the need to support both linear and non-linear cases (for which</span></div>\n+<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span><span class=\"comment\">//  linear is trivial by comparison) and the limit surface for both vertex</span></div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span><span class=\"comment\">//  and face-varying topologies, the result is a small set of methods</span></div>\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span><span class=\"comment\">//  covering this matrix of functionality.</span></div>\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span><span class=\"comment\">//  Since face-varying data may differ in topology from the vertex data --</span></div>\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span><span class=\"comment\">//  with each set of face-varying data potentially having its own unique</span></div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span><span class=\"comment\">//  topology -- sets of face-varying data are uniquely distinguished by an</span></div>\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span><span class=\"comment\">//  associated integer (a face-varying ID).</span></div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span><span class=\"comment\">//</span></div>\n+<div class=\"foldopen\" id=\"foldopen00065\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00957.html\">   65</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a00957.html\">SurfaceFactoryMeshAdapter</a> {</div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">   68</a></span>    <span class=\"keyword\">typedef</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a>;</div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span> </div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">   80</a></span>    <span class=\"keyword\">typedef</span> std::intptr_t <a class=\"code hl_typedef\" href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">FVarID</a>;</div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span> </div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span><span class=\"keyword\">protected</span>:</div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span>    <a class=\"code hl_class\" href=\"a00957.html\">SurfaceFactoryMeshAdapter</a>() { }</div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>    <span class=\"keyword\">virtual</span> <a class=\"code hl_class\" href=\"a00957.html\">~SurfaceFactoryMeshAdapter</a>() { }</div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span> </div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span><span class=\"keyword\">protected</span>:</div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span> </div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span> </div>\n+<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00957.html#aebdd02cef87f646218eed308629e9aed\">   96</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00957.html#aebdd02cef87f646218eed308629e9aed\">isFaceHole</a>(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex) <span class=\"keyword\">const</span> = 0;</div>\n+<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span> </div>\n+<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00957.html#a46acc55c125fe8d843fd2b74c582abec\">   99</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00957.html#a46acc55c125fe8d843fd2b74c582abec\">getFaceSize</a>(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex) <span class=\"keyword\">const</span> = 0;</div>\n+<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\">  101</span> </div>\n+<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span> </div>\n+<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span> </div>\n+<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00957.html#ac8c29cf2fda93d2c3408f80e8371d375\">  113</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00957.html#ac8c29cf2fda93d2c3408f80e8371d375\">getFaceVertexIndices</a>(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex,</div>\n+<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span>                    <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertexIndices[]) <span class=\"keyword\">const</span> = 0;</div>\n+<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span> </div>\n+<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00957.html#aba5c13d35cdaae43f2a1b4798868747a\">  117</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00957.html#aba5c13d35cdaae43f2a1b4798868747a\">getFaceFVarValueIndices</a>(<a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex,</div>\n+<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\">  118</span>                    <a class=\"code hl_typedef\" href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">FVarID</a> fvarID, <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> fvarValueIndices[]) <span class=\"keyword\">const</span> = 0;</div>\n+<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span> </div>\n+<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\">  121</span><span class=\"keyword\">protected</span>:</div>\n+<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span> </div>\n+<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\">  159</span> </div>\n+<div class=\"line\"><a id=\"l00161\" name=\"l00161\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00957.html#a6f2eece993bb137b995618881c7f9160\">  161</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00957.html#a6f2eece993bb137b995618881c7f9160\">populateFaceVertexDescriptor</a>(</div>\n+<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\">  162</span>                    <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex, <span class=\"keywordtype\">int</span> faceVertex,</div>\n+<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\">  163</span>                    <a class=\"code hl_class\" href=\"a00969.html\">VertexDescriptor</a> * vertexDescriptor) <span class=\"keyword\">const</span> = 0;</div>\n+<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\">  164</span> </div>\n+<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00957.html#a2bbf77d68fb983954c51bd91cfe35302\">  166</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00957.html#a2bbf77d68fb983954c51bd91cfe35302\">getFaceVertexIncidentFaceVertexIndices</a>(</div>\n+<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\">  167</span>                    <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex, <span class=\"keywordtype\">int</span> faceVertex,</div>\n+<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\">  168</span>                    <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertexIndices[]) <span class=\"keyword\">const</span> = 0;</div>\n+<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\">  169</span> </div>\n+<div class=\"line\"><a id=\"l00172\" name=\"l00172\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00957.html#a269c87ee7505e80e2e4db772ee73a016\">  172</a></span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00957.html#a269c87ee7505e80e2e4db772ee73a016\">getFaceVertexIncidentFaceFVarValueIndices</a>(</div>\n+<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\">  173</span>                    <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex, <span class=\"keywordtype\">int</span> faceVertex,</div>\n+<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\">  174</span>                    <a class=\"code hl_typedef\" href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">FVarID</a> fvarID, <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> fvarValueIndices[]) <span class=\"keyword\">const</span> = 0;</div>\n+<div class=\"line\"><a id=\"l00176\" name=\"l00176\"></a><span class=\"lineno\">  176</span> </div>\n+<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span><span class=\"keyword\">protected</span>:</div>\n+<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\">  179</span> </div>\n+<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\">  203</span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00957.html#a72634fd790cc4d1f52801aa5399328b5\">getFaceNeighborhoodVertexIndicesIfRegular</a>(</div>\n+<div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\">  204</span>            <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex, <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> vertexIndices[]) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\">  205</span> </div>\n+<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\">  206</span>    <span class=\"keyword\">virtual</span> <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00957.html#aa7e32ce7ba896c5ddfe6521ad0022ce2\">getFaceNeighborhoodFVarValueIndicesIfRegular</a>(</div>\n+<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\">  207</span>            <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex, <a class=\"code hl_typedef\" href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">FVarID</a> fvarID, <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> fvarValueIndices[]) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\">  209</span> </div>\n+<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\">  210</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\">  211</span>    <span class=\"comment\">//  No private members</span></div>\n+<div class=\"line\"><a id=\"l00212\" name=\"l00212\"></a><span class=\"lineno\">  212</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\">  213</span> </div>\n+<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\">  214</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\">  215</span><span class=\"comment\">//  Inline defaults for optional methods:</span></div>\n+<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\">  216</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\">  217</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span></div>\n+<div class=\"foldopen\" id=\"foldopen00218\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00957.html#a72634fd790cc4d1f52801aa5399328b5\">  218</a></span><a class=\"code hl_function\" href=\"a00957.html#a72634fd790cc4d1f52801aa5399328b5\">SurfaceFactoryMeshAdapter::getFaceNeighborhoodVertexIndicesIfRegular</a>(</div>\n+<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\">  219</span>        <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a>, <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a>[])<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\">  220</span>    <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\">  221</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\">  222</span> </div>\n+<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\">  223</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span></div>\n+<div class=\"foldopen\" id=\"foldopen00224\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00957.html#aa7e32ce7ba896c5ddfe6521ad0022ce2\">  224</a></span><a class=\"code hl_function\" href=\"a00957.html#aa7e32ce7ba896c5ddfe6521ad0022ce2\">SurfaceFactoryMeshAdapter::getFaceNeighborhoodFVarValueIndicesIfRegular</a>(</div>\n+<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\">  225</span>        <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a>, <a class=\"code hl_typedef\" href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">FVarID</a>, <a class=\"code hl_typedef\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a>[])<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\">  226</span>    <span class=\"keywordflow\">return</span> <span class=\"keyword\">false</span>;</div>\n+<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\">  227</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\">  228</span> </div>\n+<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\">  229</span>} <span class=\"comment\">// end namespace Bfr</span></div>\n+<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\">  230</span> </div>\n+<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\">  231</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\">  232</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\">  233</span> </div>\n+<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\">  234</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\">  235</span> </div>\n+<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\">  236</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_BFR_SURFACE_FACTORY_ADAPTER_H */</span><span class=\"preprocessor\"></span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa00957_html\"><div class=\"ttname\"><a href=\"a00957.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryMeshAdapter</a></div><div class=\"ttdoc\">Abstract interface adapting SurfaceFactory to a connected mesh representation.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00893_source.html#l00065\">surfaceFactoryMeshAdapter.h:65</a></div></div>\n+<div class=\"ttc\" id=\"aa00957_html_a269c87ee7505e80e2e4db772ee73a016\"><div class=\"ttname\"><a href=\"a00957.html#a269c87ee7505e80e2e4db772ee73a016\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryMeshAdapter::getFaceVertexIncidentFaceFVarValueIndices</a></div><div class=\"ttdeci\">virtual int getFaceVertexIncidentFaceFVarValueIndices(Index faceIndex, int faceVertex, FVarID fvarID, Index fvarValueIndices[]) const =0</div><div class=\"ttdoc\">Gather face-varying indices of incident faces around a face-vertex.</div></div>\n+<div class=\"ttc\" id=\"aa00957_html_a2bbf77d68fb983954c51bd91cfe35302\"><div class=\"ttname\"><a href=\"a00957.html#a2bbf77d68fb983954c51bd91cfe35302\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryMeshAdapter::getFaceVertexIncidentFaceVertexIndices</a></div><div class=\"ttdeci\">virtual int getFaceVertexIncidentFaceVertexIndices(Index faceIndex, int faceVertex, Index vertexIndices[]) const =0</div><div class=\"ttdoc\">Gather vertex indices of incident faces around a face-vertex.</div></div>\n+<div class=\"ttc\" id=\"aa00957_html_a46acc55c125fe8d843fd2b74c582abec\"><div class=\"ttname\"><a href=\"a00957.html#a46acc55c125fe8d843fd2b74c582abec\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryMeshAdapter::getFaceSize</a></div><div class=\"ttdeci\">virtual int getFaceSize(Index faceIndex) const =0</div><div class=\"ttdoc\">Returns the size of a face (number of vertices)</div></div>\n+<div class=\"ttc\" id=\"aa00957_html_a4a0e50e01fef3e431767a928c2631cab\"><div class=\"ttname\"><a href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryMeshAdapter::Index</a></div><div class=\"ttdeci\">int Index</div><div class=\"ttdoc\">Integer type representing a mesh index.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00893_source.html#l00068\">surfaceFactoryMeshAdapter.h:68</a></div></div>\n+<div class=\"ttc\" id=\"aa00957_html_a6f2eece993bb137b995618881c7f9160\"><div class=\"ttname\"><a href=\"a00957.html#a6f2eece993bb137b995618881c7f9160\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryMeshAdapter::populateFaceVertexDescriptor</a></div><div class=\"ttdeci\">virtual int populateFaceVertexDescriptor(Index faceIndex, int faceVertex, VertexDescriptor *vertexDescriptor) const =0</div><div class=\"ttdoc\">Describe the topology of incident faces around a face-vertex.</div></div>\n+<div class=\"ttc\" id=\"aa00957_html_a72634fd790cc4d1f52801aa5399328b5\"><div class=\"ttname\"><a href=\"a00957.html#a72634fd790cc4d1f52801aa5399328b5\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryMeshAdapter::getFaceNeighborhoodVertexIndicesIfRegular</a></div><div class=\"ttdeci\">virtual bool getFaceNeighborhoodVertexIndicesIfRegular(Index faceIndex, Index vertexIndices[]) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00893_source.html#l00218\">surfaceFactoryMeshAdapter.h:218</a></div></div>\n+<div class=\"ttc\" id=\"aa00957_html_aa7e32ce7ba896c5ddfe6521ad0022ce2\"><div class=\"ttname\"><a href=\"a00957.html#aa7e32ce7ba896c5ddfe6521ad0022ce2\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryMeshAdapter::getFaceNeighborhoodFVarValueIndicesIfRegular</a></div><div class=\"ttdeci\">virtual bool getFaceNeighborhoodFVarValueIndicesIfRegular(Index faceIndex, FVarID fvarID, Index fvarValueIndices[]) const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00893_source.html#l00224\">surfaceFactoryMeshAdapter.h:224</a></div></div>\n+<div class=\"ttc\" id=\"aa00957_html_aba5c13d35cdaae43f2a1b4798868747a\"><div class=\"ttname\"><a href=\"a00957.html#aba5c13d35cdaae43f2a1b4798868747a\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryMeshAdapter::getFaceFVarValueIndices</a></div><div class=\"ttdeci\">virtual int getFaceFVarValueIndices(Index faceIndex, FVarID fvarID, Index fvarValueIndices[]) const =0</div><div class=\"ttdoc\">Gather the face-varying indices of the face's vertices.</div></div>\n+<div class=\"ttc\" id=\"aa00957_html_ac8c29cf2fda93d2c3408f80e8371d375\"><div class=\"ttname\"><a href=\"a00957.html#ac8c29cf2fda93d2c3408f80e8371d375\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryMeshAdapter::getFaceVertexIndices</a></div><div class=\"ttdeci\">virtual int getFaceVertexIndices(Index faceIndex, Index vertexIndices[]) const =0</div><div class=\"ttdoc\">Gather the indices of the face's vertices.</div></div>\n+<div class=\"ttc\" id=\"aa00957_html_aebdd02cef87f646218eed308629e9aed\"><div class=\"ttname\"><a href=\"a00957.html#aebdd02cef87f646218eed308629e9aed\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryMeshAdapter::isFaceHole</a></div><div class=\"ttdeci\">virtual bool isFaceHole(Index faceIndex) const =0</div><div class=\"ttdoc\">Returns if a face is a hole.</div></div>\n+<div class=\"ttc\" id=\"aa00957_html_af98288d7b5176d7295be622a10c6c64e\"><div class=\"ttname\"><a href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryMeshAdapter::FVarID</a></div><div class=\"ttdeci\">std::intptr_t FVarID</div><div class=\"ttdoc\">Type used to identify and specify face-varying primvars.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00893_source.html#l00080\">surfaceFactoryMeshAdapter.h:80</a></div></div>\n+<div class=\"ttc\" id=\"aa00969_html\"><div class=\"ttname\"><a href=\"a00969.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::VertexDescriptor</a></div><div class=\"ttdoc\">Simple class used by subclasses of SurfaceFactory to describe a vertex.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00878_source.html#l00131\">vertexDescriptor.h:131</a></div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00893.html\">mtlLegacyGregoryPatchTable.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_fa5edef2a780a73fbfb6a11f1af88ceb.html\">bfr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00893.html\">surfaceFactoryMeshAdapter.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-mtlLegacyGregoryPatchTable.h\n+surfaceFactoryMeshAdapter.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2013 Pixar\n+2// Copyright 2021 Pixar\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -24,127 +24,179 @@\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n 24\n-25#ifndef OPENSUBDIV3_OSD_MTL_LEGACY_GREGORY_PATCH_TABLE_H\n-26#define OPENSUBDIV3_OSD_MTL_LEGACY_GREGORY_PATCH_TABLE_H\n+25#ifndef OPENSUBDIV3_BFR_SURFACE_FACTORY_ADAPTER_H\n+26#define OPENSUBDIV3_BFR_SURFACE_FACTORY_ADAPTER_H\n 27\n 28#include \"../version.h\"\n-29#include \"../far/patchTable.h\"\n-30#include \"../osd/nonCopyable.h\"\n-31#include \"../osd/mtlCommon.h\"\n-32\n-33@protocol MTLDevice;\n-34@protocol MTLBuffer;\n-35\n-36namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-37namespace OPENSUBDIV_VERSION {\n+29\n+30#include <cstdint>\n+31\n+32namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+33namespace OPENSUBDIV_VERSION {\n+34\n+35namespace Bfr {\n+36\n+37class VertexDescriptor;\n 38\n-39namespace Osd {\n-40\n-_\b4_\b1class _\bM_\bT_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n-42: private NonCopyable<MTLLegacyGregoryPatchTable>\n-43{\n-44public:\n-_\b4_\b5 _\b~_\bM_\bT_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be();\n-46\n-47 template<typename DEVICE_CONTEXT>\n-_\b4_\b8 static _\bM_\bT_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be* _\bC_\br_\be_\ba_\bt_\be(_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be const*\n-farPatchTable, DEVICE_CONTEXT context) {\n-49 return Create(farPatchTable, context);\n-50 }\n-51\n-_\b5_\b2 static _\bM_\bT_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be* _\bC_\br_\be_\ba_\bt_\be(_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be const*\n-farPatchTable, _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context);\n-53\n-_\b5_\b4 void _\bU_\bp_\bd_\ba_\bt_\be_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br(id<MTLBuffer> vbo, int numVertices, int\n-numVertexElements, _\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt* context);\n-55\n-_\b5_\b6 id<MTLBuffer> _\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br() const\n-57 {\n-58 return _vertexBuffer;\n-59 }\n-60\n-_\b6_\b1 id<MTLBuffer> _\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be_\bB_\bu_\bf_\bf_\be_\br() const\n-62 {\n-63 return _vertexValenceBuffer;\n-64 }\n-65\n-_\b6_\b6 id<MTLBuffer> _\bG_\be_\bt_\bQ_\bu_\ba_\bd_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br() const\n-67 {\n-68 return _quadOffsetsBuffer;\n-69 }\n-70\n-_\b7_\b1 int _\bG_\be_\bt_\bQ_\bu_\ba_\bd_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bB_\ba_\bs_\be(_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bT_\by_\bp_\be type)\n-72 {\n-73 if(type == _\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bG_\bR_\bE_\bG_\bO_\bR_\bY_\b__\bB_\bO_\bU_\bN_\bD_\bA_\bR_\bY)\n-74 return _quadOffsetsBase[1];\n-75 return _quadOffsetsBase[0];\n-76 }\n-77\n-78private:\n-79 id<MTLBuffer> _vertexBuffer;\n-80 id<MTLBuffer> _vertexValenceBuffer;\n-81 id<MTLBuffer> _quadOffsetsBuffer;\n-82 int _quadOffsetsBase[2];\n-83};\n-84\n-85} //end namespace Osd\n-86\n-87} //end namespace OPENSUBDIV_VERSION\n-88using namespace OPENSUBDIV_VERSION;\n-89\n-90} //end namespace OpenSuddiv\n-91\n-92#endif // OPENSUBDIV3_OSD_MTL_LEGACY_GREGORY_PATCH_TABLE_H\n+43// SurfaceFactoryMeshAdapter is an abstract class that defines the interface\n+44// through which subclasses of SurfaceFactory adapt to a connected mesh\n+45// representation. The interface defines methods that describe the mesh\n+46// topology and control indices in the neighborhood of a mesh -- from\n+47// which the SurfaceFactory to identifies an appropriate limit surface.\n+48//\n+49// SurfaceFactoryMeshAdapter methods require a subclass to provide a complete\n+50// description of the topology around a base face, as well as indices\n+51// associated with it (both vertex and face-varying). The intent here is\n+52// to keep the number of methods required to a minimum, and also to minimize\n+53// the number of invocations required by the factory.\n+54//\n+55// With the need to support both linear and non-linear cases (for which\n+56// linear is trivial by comparison) and the limit surface for both vertex\n+57// and face-varying topologies, the result is a small set of methods\n+58// covering this matrix of functionality.\n+59//\n+60// Since face-varying data may differ in topology from the vertex data --\n+61// with each set of face-varying data potentially having its own unique\n+62// topology -- sets of face-varying data are uniquely distinguished by an\n+63// associated integer (a face-varying ID).\n+64//\n+_\b6_\b5class _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br {\n+66public:\n+_\b6_\b8 typedef int _\bI_\bn_\bd_\be_\bx;\n+69\n+_\b8_\b0 typedef std::intptr_t _\bF_\bV_\ba_\br_\bI_\bD;\n+81\n+82protected:\n+84 _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br() { }\n+85 virtual _\b~_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br() { }\n+87\n+88protected:\n+90\n+94\n+_\b9_\b6 virtual bool _\bi_\bs_\bF_\ba_\bc_\be_\bH_\bo_\bl_\be(_\bI_\bn_\bd_\be_\bx faceIndex) const = 0;\n+97\n+_\b9_\b9 virtual int _\bg_\be_\bt_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be(_\bI_\bn_\bd_\be_\bx faceIndex) const = 0;\n+101\n+103\n+111\n+_\b1_\b1_\b3 virtual int _\bg_\be_\bt_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\be_\bx_\bI_\bn_\bd_\bi_\bc_\be_\bs(_\bI_\bn_\bd_\be_\bx faceIndex,\n+114 _\bI_\bn_\bd_\be_\bx vertexIndices[]) const = 0;\n+115\n+_\b1_\b1_\b7 virtual int _\bg_\be_\bt_\bF_\ba_\bc_\be_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bI_\bn_\bd_\bi_\bc_\be_\bs(_\bI_\bn_\bd_\be_\bx faceIndex,\n+118 _\bF_\bV_\ba_\br_\bI_\bD fvarID, _\bI_\bn_\bd_\be_\bx fvarValueIndices[]) const = 0;\n+120\n+121protected:\n+123\n+159\n+_\b1_\b6_\b1 virtual int _\bp_\bo_\bp_\bu_\bl_\ba_\bt_\be_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br(\n+162 _\bI_\bn_\bd_\be_\bx faceIndex, int faceVertex,\n+163 _\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br * vertexDescriptor) const = 0;\n+164\n+_\b1_\b6_\b6 virtual int _\bg_\be_\bt_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\be_\bx_\bI_\bn_\bc_\bi_\bd_\be_\bn_\bt_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\be_\bx_\bI_\bn_\bd_\bi_\bc_\be_\bs(\n+167 _\bI_\bn_\bd_\be_\bx faceIndex, int faceVertex,\n+168 _\bI_\bn_\bd_\be_\bx vertexIndices[]) const = 0;\n+169\n+_\b1_\b7_\b2 virtual int _\bg_\be_\bt_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\be_\bx_\bI_\bn_\bc_\bi_\bd_\be_\bn_\bt_\bF_\ba_\bc_\be_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bI_\bn_\bd_\bi_\bc_\be_\bs(\n+173 _\bI_\bn_\bd_\be_\bx faceIndex, int faceVertex,\n+174 _\bF_\bV_\ba_\br_\bI_\bD fvarID, _\bI_\bn_\bd_\be_\bx fvarValueIndices[]) const = 0;\n+176\n+177protected:\n+179\n+203 virtual bool _\bg_\be_\bt_\bF_\ba_\bc_\be_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bh_\bo_\bo_\bd_\bV_\be_\br_\bt_\be_\bx_\bI_\bn_\bd_\bi_\bc_\be_\bs_\bI_\bf_\bR_\be_\bg_\bu_\bl_\ba_\br(\n+204 _\bI_\bn_\bd_\be_\bx faceIndex, _\bI_\bn_\bd_\be_\bx vertexIndices[]) const;\n+205\n+206 virtual bool _\bg_\be_\bt_\bF_\ba_\bc_\be_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bh_\bo_\bo_\bd_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bI_\bn_\bd_\bi_\bc_\be_\bs_\bI_\bf_\bR_\be_\bg_\bu_\bl_\ba_\br(\n+207 _\bI_\bn_\bd_\be_\bx faceIndex, _\bF_\bV_\ba_\br_\bI_\bD fvarID, _\bI_\bn_\bd_\be_\bx fvarValueIndices[]) const;\n+209\n+210private:\n+211 // No private members\n+212};\n+213\n+214//\n+215// Inline defaults for optional methods:\n+216//\n+217inline bool\n+_\b2_\b1_\b8_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b:_\b:_\bg_\be_\bt_\bF_\ba_\bc_\be_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bh_\bo_\bo_\bd_\bV_\be_\br_\bt_\be_\bx_\bI_\bn_\bd_\bi_\bc_\be_\bs_\bI_\bf_\bR_\be_\bg_\bu_\bl_\ba_\br(\n+219 _\bI_\bn_\bd_\be_\bx, _\bI_\bn_\bd_\be_\bx[]) const {\n+220 return false;\n+221}\n+222\n+223inline bool\n+_\b2_\b2_\b4_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b:_\b:_\bg_\be_\bt_\bF_\ba_\bc_\be_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bh_\bo_\bo_\bd_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bI_\bn_\bd_\bi_\bc_\be_\bs_\bI_\bf_\bR_\be_\bg_\bu_\bl_\ba_\br(\n+225 _\bI_\bn_\bd_\be_\bx, _\bF_\bV_\ba_\br_\bI_\bD, _\bI_\bn_\bd_\be_\bx[]) const {\n+226 return false;\n+227}\n+228\n+229} // end namespace Bfr\n+230\n+231} // end namespace OPENSUBDIV_VERSION\n+232using namespace OPENSUBDIV_VERSION;\n+233\n+234} // end namespace OpenSubdiv\n+235\n+236#endif /* OPENSUBDIV3_BFR_SURFACE_FACTORY_ADAPTER_H */\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bT_\by_\bp_\be\n-Type\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b4_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b:_\b:_\bG_\bR_\bE_\bG_\bO_\bR_\bY_\b__\bB_\bO_\bU_\bN_\bD_\bA_\bR_\bY\n-@ GREGORY_BOUNDARY\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b6_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br_\b:_\b:_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n-Container for arrays of parametric patches.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b5\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bC_\bo_\bn_\bt_\be_\bx_\bt\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bC_\bo_\bm_\bm_\bo_\bn_\b._\bh_\b:_\b4_\b0\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b4_\b3\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n-_\bG_\be_\bt_\bQ_\bu_\ba_\bd_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bB_\ba_\bs_\be\n-int GetQuadOffsetsBase(Far::PatchDescriptor::Type type)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b7_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static MTLLegacyGregoryPatchTable * Create(Far::PatchTable const\n-*farPatchTable, DEVICE_CONTEXT context)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b4_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n-_\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bV_\ba_\bl_\be_\bn_\bc_\be_\bB_\bu_\bf_\bf_\be_\br\n-id< MTLBuffer > GetVertexValenceBuffer() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b1\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n-_\bG_\be_\bt_\bQ_\bu_\ba_\bd_\bO_\bf_\bf_\bs_\be_\bt_\bs_\bB_\bu_\bf_\bf_\be_\br\n-id< MTLBuffer > GetQuadOffsetsBuffer() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b6_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static MTLLegacyGregoryPatchTable * Create(Far::PatchTable const\n-*farPatchTable, MTLContext *context)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n-_\bU_\bp_\bd_\ba_\bt_\be_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-void UpdateVertexBuffer(id< MTLBuffer > vbo, int numVertices, int\n-numVertexElements, MTLContext *context)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n-_\b~_\bM_\bT_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be\n-~MTLLegacyGregoryPatchTable()\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bM_\bT_\bL_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b:_\b:\n-_\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-id< MTLBuffer > GetVertexBuffer() const\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bm_\bt_\bl_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh_\b:_\b5_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br\n+Abstract interface adapting SurfaceFactory to a connected mesh representation.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b._\bh_\b:_\b6_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b:_\b:\n+_\bg_\be_\bt_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\be_\bx_\bI_\bn_\bc_\bi_\bd_\be_\bn_\bt_\bF_\ba_\bc_\be_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bI_\bn_\bd_\bi_\bc_\be_\bs\n+virtual int getFaceVertexIncidentFaceFVarValueIndices(Index faceIndex, int\n+faceVertex, FVarID fvarID, Index fvarValueIndices[]) const =0\n+Gather face-varying indices of incident faces around a face-vertex.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b:_\b:\n+_\bg_\be_\bt_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\be_\bx_\bI_\bn_\bc_\bi_\bd_\be_\bn_\bt_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\be_\bx_\bI_\bn_\bd_\bi_\bc_\be_\bs\n+virtual int getFaceVertexIncidentFaceVertexIndices(Index faceIndex, int\n+faceVertex, Index vertexIndices[]) const =0\n+Gather vertex indices of incident faces around a face-vertex.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b:_\b:_\bg_\be_\bt_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be\n+virtual int getFaceSize(Index faceIndex) const =0\n+Returns the size of a face (number of vertices)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b:_\b:_\bI_\bn_\bd_\be_\bx\n+int Index\n+Integer type representing a mesh index.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b._\bh_\b:_\b6_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b:_\b:\n+_\bp_\bo_\bp_\bu_\bl_\ba_\bt_\be_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n+virtual int populateFaceVertexDescriptor(Index faceIndex, int faceVertex,\n+VertexDescriptor *vertexDescriptor) const =0\n+Describe the topology of incident faces around a face-vertex.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b:_\b:\n+_\bg_\be_\bt_\bF_\ba_\bc_\be_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bh_\bo_\bo_\bd_\bV_\be_\br_\bt_\be_\bx_\bI_\bn_\bd_\bi_\bc_\be_\bs_\bI_\bf_\bR_\be_\bg_\bu_\bl_\ba_\br\n+virtual bool getFaceNeighborhoodVertexIndicesIfRegular(Index faceIndex, Index\n+vertexIndices[]) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b._\bh_\b:_\b2_\b1_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b:_\b:\n+_\bg_\be_\bt_\bF_\ba_\bc_\be_\bN_\be_\bi_\bg_\bh_\bb_\bo_\br_\bh_\bo_\bo_\bd_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bI_\bn_\bd_\bi_\bc_\be_\bs_\bI_\bf_\bR_\be_\bg_\bu_\bl_\ba_\br\n+virtual bool getFaceNeighborhoodFVarValueIndicesIfRegular(Index faceIndex,\n+FVarID fvarID, Index fvarValueIndices[]) const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b._\bh_\b:_\b2_\b2_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b:_\b:\n+_\bg_\be_\bt_\bF_\ba_\bc_\be_\bF_\bV_\ba_\br_\bV_\ba_\bl_\bu_\be_\bI_\bn_\bd_\bi_\bc_\be_\bs\n+virtual int getFaceFVarValueIndices(Index faceIndex, FVarID fvarID, Index\n+fvarValueIndices[]) const =0\n+Gather the face-varying indices of the face's vertices.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b:_\b:\n+_\bg_\be_\bt_\bF_\ba_\bc_\be_\bV_\be_\br_\bt_\be_\bx_\bI_\bn_\bd_\bi_\bc_\be_\bs\n+virtual int getFaceVertexIndices(Index faceIndex, Index vertexIndices[]) const\n+=0\n+Gather the indices of the face's vertices.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b:_\b:_\bi_\bs_\bF_\ba_\bc_\be_\bH_\bo_\bl_\be\n+virtual bool isFaceHole(Index faceIndex) const =0\n+Returns if a face is a hole.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b:_\b:_\bF_\bV_\ba_\br_\bI_\bD\n+std::intptr_t FVarID\n+Type used to identify and specify face-varying primvars.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b._\bh_\b:_\b8_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bV_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br\n+Simple class used by subclasses of SurfaceFactory to describe a vertex.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bv_\be_\br_\bt_\be_\bx_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh_\b:_\b1_\b3_\b1\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bm_\bt_\bl_\bL_\be_\bg_\ba_\bc_\by_\bG_\br_\be_\bg_\bo_\br_\by_\bP_\ba_\bt_\bc_\bh_\bT_\ba_\bb_\bl_\be_\b._\bh\n+    * _\bb_\bf_\br\n+    * _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bM_\be_\bs_\bh_\bA_\bd_\ba_\bp_\bt_\be_\br_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00896.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00896.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/cpuD3D11VertexBuffer.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/bfr/surfaceFactoryCache.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -90,41 +90,46 @@\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> &#124;\n <a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">cpuD3D11VertexBuffer.h File Reference</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">surfaceFactoryCache.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &lt;cstddef&gt;</code><br />\n+<code>#include &quot;../bfr/irregularPatchType.h&quot;</code><br />\n+<code>#include &lt;map&gt;</code><br />\n+<code>#include &lt;cstdint&gt;</code><br />\n </div>\n <p><a href=\"a00896_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01161.html\">CpuD3D11VertexBuffer</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Concrete vertex buffer class for Cpu subdivision and DirectX drawing.  <a href=\"a01161.html#details\">More...</a><br /></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00949.html\">SurfaceFactoryCache</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Container used internally by <a class=\"el\" href=\"a00941.html\" title=\"Base class providing initialization of a Surface for each face of a mesh.\">SurfaceFactory</a> to store reusable information.  <a href=\"a00949.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00953.html\">SurfaceFactoryCacheThreaded&lt; MUTEX_TYPE, READ_LOCK_GUARD_TYPE, WRITE_LOCK_GUARD_TYPE &gt;</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Template for declaring thread-safe subclasses of <a class=\"el\" href=\"a00949.html\" title=\"Container used internally by SurfaceFactory to store reusable information.\">SurfaceFactoryCache</a>.  <a href=\"a00953.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n+<tr class=\"memitem:a00907\" id=\"r_a00907\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00907.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00896.html\">cpuD3D11VertexBuffer.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_fa5edef2a780a73fbfb6a11f1af88ceb.html\">bfr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00896.html\">surfaceFactoryCache.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,25 +1,32 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-cpuD3D11VertexBuffer.h File Reference\n+surfaceFactoryCache.h File Reference\n #include \"../version.h\"\n-#include <cstddef>\n+#include \"../bfr/irregularPatchType.h\"\n+#include <map>\n+#include <cstdint>\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bC_\bp_\bu_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-\u00a0       Concrete vertex buffer class for Cpu subdivision and DirectX drawing.\n+class \u00a0 _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be\n+\u00a0       Container used internally by _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by to store reusable\n+        information. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be_\bT_\bh_\br_\be_\ba_\bd_\be_\bd_\b<_\b _\bM_\bU_\bT_\bE_\bX_\b__\bT_\bY_\bP_\bE_\b,_\b _\bR_\bE_\bA_\bD_\b__\bL_\bO_\bC_\bK_\b__\bG_\bU_\bA_\bR_\bD_\b__\bT_\bY_\bP_\bE_\b,\n+        _\bW_\bR_\bI_\bT_\bE_\b__\bL_\bO_\bC_\bK_\b__\bG_\bU_\bA_\bR_\bD_\b__\bT_\bY_\bP_\bE_\b _\b>\n+\u00a0       Template for declaring thread-safe subclasses of _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be.\n         _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bc_\bp_\bu_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh\n+    * _\bb_\bf_\br\n+    * _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00896.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00896.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,3 +1,4 @@\n var a00896 = [\n-    [\"CpuD3D11VertexBuffer\", \"a01161.html\", \"a01161\"]\n+    [\"SurfaceFactoryCache\", \"a00949.html\", \"a00949\"],\n+    [\"SurfaceFactoryCacheThreaded< MUTEX_TYPE, READ_LOCK_GUARD_TYPE, WRITE_LOCK_GUARD_TYPE >\", \"a00953.html\", \"a00953\"]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00896_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00896_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/cpuD3D11VertexBuffer.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/bfr/surfaceFactoryCache.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">cpuD3D11VertexBuffer.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">surfaceFactoryCache.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00896.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2013 Pixar</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2021 Pixar</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -119,91 +119,126 @@\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_CPU_D3D11_VERTEX_BUFFER_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_CPU_D3D11_VERTEX_BUFFER_H</span></div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_BFR_SURFACE_FACTORY_CACHE_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_BFR_SURFACE_FACTORY_CACHE_H</span></div>\n <div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n <div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n-<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span><span class=\"preprocessor\">#include &lt;cstddef&gt;</span></div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span> </div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"keyword\">struct </span>ID3D11Buffer;</div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"keyword\">struct </span>ID3D11Device;</div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"keyword\">struct </span>ID3D11DeviceContext;</div>\n+<div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../bfr/irregularPatchType.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"preprocessor\">#include &lt;map&gt;</span></div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"preprocessor\">#include &lt;cstdint&gt;</span></div>\n <div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span> </div>\n <div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n <div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n <div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span> </div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"keyword\">namespace </span>Osd {</div>\n+<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"keyword\">namespace </span>Bfr {</div>\n <div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00048\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00048\" name=\"l00048\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01161.html\">   48</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01161.html\">CpuD3D11VertexBuffer</a> {</div>\n-<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\">   49</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01161.html#a00d85863962f5871f802164e2fba7acc\">   51</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01161.html\">CpuD3D11VertexBuffer</a> * <a class=\"code hl_function\" href=\"a01161.html#a00d85863962f5871f802164e2fba7acc\">Create</a>(<span class=\"keywordtype\">int</span> numElements, <span class=\"keywordtype\">int</span> numVertices,</div>\n-<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span>                                         ID3D11DeviceContext *deviceContext);</div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span> </div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01161.html#ae6f29f48db71c5ed845eb6abe085af91\">   55</a></span>    <span class=\"keyword\">virtual</span> <a class=\"code hl_function\" href=\"a01161.html#ae6f29f48db71c5ed845eb6abe085af91\">~CpuD3D11VertexBuffer</a>();</div>\n-<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span> </div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01161.html#a96601a091f8831823c4dd72b6c962f1b\">   59</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01161.html#a96601a091f8831823c4dd72b6c962f1b\">UpdateData</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <span class=\"keywordtype\">int</span> startVertex, <span class=\"keywordtype\">int</span> numVertices,</div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span>                    <span class=\"keywordtype\">void</span> *deviceContext = NULL);</div>\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span> </div>\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01161.html#a77cee40767fd4936f20a8f9d9d9ea625\">   63</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01161.html#a77cee40767fd4936f20a8f9d9d9ea625\">GetNumElements</a>() <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span> </div>\n-<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01161.html#aaf4a32b8a414eff77000c584c2015cb7\">   66</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01161.html#aaf4a32b8a414eff77000c584c2015cb7\">GetNumVertices</a>() <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span> </div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01161.html#adf7a9df5d3fc4d803bf5f1f374d90274\">   69</a></span>    <span class=\"keywordtype\">float</span> * <a class=\"code hl_function\" href=\"a01161.html#adf7a9df5d3fc4d803bf5f1f374d90274\">BindCpuBuffer</a>();</div>\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span> </div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01161.html#ac86f03cfaa5678c28ffce2b69e3fb5bc\">   72</a></span>    ID3D11Buffer *<a class=\"code hl_function\" href=\"a01161.html#ac86f03cfaa5678c28ffce2b69e3fb5bc\">BindD3D11Buffer</a>(ID3D11DeviceContext *deviceContext);</div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00075\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01161.html#aedcdb663cc4d3635fb5ba9149fb0d214\">   75</a></span>    ID3D11Buffer *<a class=\"code hl_function\" href=\"a01161.html#aedcdb663cc4d3635fb5ba9149fb0d214\">BindVBO</a>(ID3D11DeviceContext *deviceContext) {</div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01161.html#ac86f03cfaa5678c28ffce2b69e3fb5bc\">BindD3D11Buffer</a>(deviceContext);</div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span> </div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span><span class=\"keyword\">protected</span>:</div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01161.html#a632143bc1ec4fbbca2148b0e9e87bc08\">   81</a></span>    <a class=\"code hl_function\" href=\"a01161.html#a632143bc1ec4fbbca2148b0e9e87bc08\">CpuD3D11VertexBuffer</a>(<span class=\"keywordtype\">int</span> numElements, <span class=\"keywordtype\">int</span> numVertices);</div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span> </div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01161.html#ae61b4ed6cc7cb69826cd0804c2d972b7\">   83</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01161.html#ae61b4ed6cc7cb69826cd0804c2d972b7\">allocate</a>(ID3D11Device *device);</div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span> </div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>    <span class=\"keywordtype\">int</span> _numElements;</div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>    <span class=\"keywordtype\">int</span> _numVertices;</div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>    ID3D11Buffer *_d3d11Buffer;</div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>    <span class=\"keywordtype\">float</span> *_cpuBuffer;</div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span> </div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>}  <span class=\"comment\">// end namespace Osd</span></div>\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span> </div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>}  <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span> </div>\n-<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>}  <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span><span class=\"comment\">//  Initial/expected use requires simple searches of and additions to the</span></div>\n+<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span><span class=\"comment\">//  cache by the SurfaceFactory or its Builders.  Longer term, with the</span></div>\n+<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span><span class=\"comment\">//  possibility of instances of caches being shared between meshes and</span></div>\n+<div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span><span class=\"comment\">//  factories, additional options and/or public methods may be warranted</span></div>\n+<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span><span class=\"comment\">//  to limit what is cached or to prune the cache if it gets too large.</span></div>\n+<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span><span class=\"comment\">//</span></div>\n+<div class=\"foldopen\" id=\"foldopen00059\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00949.html\">   59</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a00949.html\">SurfaceFactoryCache</a> {</div>\n+<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00949.html#a3f63565868cb0b0871e2db37939ec0e2\">   61</a></span>    <a class=\"code hl_function\" href=\"a00949.html#a3f63565868cb0b0871e2db37939ec0e2\">SurfaceFactoryCache</a>();</div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00949.html#a624a2bb484d2deb54dd08d3310e746b3\">   62</a></span>    <span class=\"keyword\">virtual</span> <a class=\"code hl_function\" href=\"a00949.html#a624a2bb484d2deb54dd08d3310e746b3\">~SurfaceFactoryCache</a>();</div>\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\">   63</span> </div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00949.html#a704742f6a7a07e766b5320c8d6f2f745\">   64</a></span>    <a class=\"code hl_function\" href=\"a00949.html#a704742f6a7a07e766b5320c8d6f2f745\">SurfaceFactoryCache</a>(<a class=\"code hl_class\" href=\"a00949.html\">SurfaceFactoryCache</a> <span class=\"keyword\">const</span> &amp;) = <span class=\"keyword\">delete</span>;</div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00949.html#a736c32f5c64da3442ff1c74ef1fb9ff7\">   65</a></span>    <a class=\"code hl_class\" href=\"a00949.html\">SurfaceFactoryCache</a> &amp; <a class=\"code hl_function\" href=\"a00949.html#a736c32f5c64da3442ff1c74ef1fb9ff7\">operator=</a>(<a class=\"code hl_class\" href=\"a00949.html\">SurfaceFactoryCache</a> <span class=\"keyword\">const</span> &amp;) = <span class=\"keyword\">delete</span>;</div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span> </div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span><span class=\"keyword\">protected</span>:</div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span>    <span class=\"comment\">//  Access restricted to the Factory, its Builders, etc.</span></div>\n+<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span>    <span class=\"keyword\">friend</span> <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a00941.html\">SurfaceFactory</a>;</div>\n+<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span> </div>\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>    <span class=\"keyword\">typedef</span> std::uint64_t                     KeyType;</div>\n+<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span>    <span class=\"keyword\">typedef</span> internal::IrregularPatchSharedPtr DataType;</div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span> </div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span><span class=\"keyword\">protected</span>:</div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span>    <span class=\"keywordtype\">size_t</span> Size()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _map.size(); }</div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span> </div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>    <span class=\"comment\">//  Potential overrides by subclasses for thread-safety:</span></div>\n+<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>    <span class=\"keyword\">virtual</span> DataType Find(KeyType <span class=\"keyword\">const</span> &amp; key) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span>    <span class=\"keyword\">virtual</span> DataType Add(KeyType <span class=\"keyword\">const</span> &amp; key, DataType <span class=\"keyword\">const</span> &amp; data);</div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span> </div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>    <span class=\"comment\">//  Common implementation used by all subclasses:</span></div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>    DataType find(KeyType <span class=\"keyword\">const</span> &amp; key) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>    DataType add(KeyType <span class=\"keyword\">const</span> &amp; key, DataType <span class=\"keyword\">const</span> &amp; data);</div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span> </div>\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>    <span class=\"keyword\">typedef</span> std::map&lt;KeyType, DataType&gt; MapType;</div>\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span> </div>\n+<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span>    MapType _map;</div>\n+<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>};</div>\n+</div>\n <div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span> </div>\n-<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_CPU_D3D11_VERTEX_BUFFER_H</span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa01161_html\"><div class=\"ttname\"><a href=\"a01161.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuD3D11VertexBuffer</a></div><div class=\"ttdoc\">Concrete vertex buffer class for Cpu subdivision and DirectX drawing.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00896_source.html#l00048\">cpuD3D11VertexBuffer.h:48</a></div></div>\n-<div class=\"ttc\" id=\"aa01161_html_a00d85863962f5871f802164e2fba7acc\"><div class=\"ttname\"><a href=\"a01161.html#a00d85863962f5871f802164e2fba7acc\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuD3D11VertexBuffer::Create</a></div><div class=\"ttdeci\">static CpuD3D11VertexBuffer * Create(int numElements, int numVertices, ID3D11DeviceContext *deviceContext)</div><div class=\"ttdoc\">Creator. Returns NULL if error.</div></div>\n-<div class=\"ttc\" id=\"aa01161_html_a632143bc1ec4fbbca2148b0e9e87bc08\"><div class=\"ttname\"><a href=\"a01161.html#a632143bc1ec4fbbca2148b0e9e87bc08\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuD3D11VertexBuffer::CpuD3D11VertexBuffer</a></div><div class=\"ttdeci\">CpuD3D11VertexBuffer(int numElements, int numVertices)</div><div class=\"ttdoc\">Constructor.</div></div>\n-<div class=\"ttc\" id=\"aa01161_html_a77cee40767fd4936f20a8f9d9d9ea625\"><div class=\"ttname\"><a href=\"a01161.html#a77cee40767fd4936f20a8f9d9d9ea625\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuD3D11VertexBuffer::GetNumElements</a></div><div class=\"ttdeci\">int GetNumElements() const</div><div class=\"ttdoc\">Returns how many elements defined in this vertex buffer.</div></div>\n-<div class=\"ttc\" id=\"aa01161_html_a96601a091f8831823c4dd72b6c962f1b\"><div class=\"ttname\"><a href=\"a01161.html#a96601a091f8831823c4dd72b6c962f1b\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuD3D11VertexBuffer::UpdateData</a></div><div class=\"ttdeci\">void UpdateData(const float *src, int startVertex, int numVertices, void *deviceContext=NULL)</div></div>\n-<div class=\"ttc\" id=\"aa01161_html_aaf4a32b8a414eff77000c584c2015cb7\"><div class=\"ttname\"><a href=\"a01161.html#aaf4a32b8a414eff77000c584c2015cb7\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuD3D11VertexBuffer::GetNumVertices</a></div><div class=\"ttdeci\">int GetNumVertices() const</div><div class=\"ttdoc\">Returns how many vertices allocated in this vertex buffer.</div></div>\n-<div class=\"ttc\" id=\"aa01161_html_ac86f03cfaa5678c28ffce2b69e3fb5bc\"><div class=\"ttname\"><a href=\"a01161.html#ac86f03cfaa5678c28ffce2b69e3fb5bc\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuD3D11VertexBuffer::BindD3D11Buffer</a></div><div class=\"ttdeci\">ID3D11Buffer * BindD3D11Buffer(ID3D11DeviceContext *deviceContext)</div><div class=\"ttdoc\">Returns the D3D11 buffer object.</div></div>\n-<div class=\"ttc\" id=\"aa01161_html_adf7a9df5d3fc4d803bf5f1f374d90274\"><div class=\"ttname\"><a href=\"a01161.html#adf7a9df5d3fc4d803bf5f1f374d90274\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuD3D11VertexBuffer::BindCpuBuffer</a></div><div class=\"ttdeci\">float * BindCpuBuffer()</div><div class=\"ttdoc\">Returns the address of CPU buffer.</div></div>\n-<div class=\"ttc\" id=\"aa01161_html_ae61b4ed6cc7cb69826cd0804c2d972b7\"><div class=\"ttname\"><a href=\"a01161.html#ae61b4ed6cc7cb69826cd0804c2d972b7\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuD3D11VertexBuffer::allocate</a></div><div class=\"ttdeci\">bool allocate(ID3D11Device *device)</div></div>\n-<div class=\"ttc\" id=\"aa01161_html_ae6f29f48db71c5ed845eb6abe085af91\"><div class=\"ttname\"><a href=\"a01161.html#ae6f29f48db71c5ed845eb6abe085af91\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuD3D11VertexBuffer::~CpuD3D11VertexBuffer</a></div><div class=\"ttdeci\">virtual ~CpuD3D11VertexBuffer()</div><div class=\"ttdoc\">Destructor.</div></div>\n-<div class=\"ttc\" id=\"aa01161_html_aedcdb663cc4d3635fb5ba9149fb0d214\"><div class=\"ttname\"><a href=\"a01161.html#aedcdb663cc4d3635fb5ba9149fb0d214\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuD3D11VertexBuffer::BindVBO</a></div><div class=\"ttdeci\">ID3D11Buffer * BindVBO(ID3D11DeviceContext *deviceContext)</div><div class=\"ttdoc\">Returns the D3D11 buffer object (for Osd::Mesh interface)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00896_source.html#l00075\">cpuD3D11VertexBuffer.h:75</a></div></div>\n+<div class=\"line\"><a id=\"l00113\" name=\"l00113\"></a><span class=\"lineno\">  113</span><span class=\"comment\">//  Separate read and write locks are provided to support mutex types</span></div>\n+<div class=\"line\"><a id=\"l00114\" name=\"l00114\"></a><span class=\"lineno\">  114</span><span class=\"comment\">//  allowing shared (read) or exclusive (write) access.</span></div>\n+<div class=\"line\"><a id=\"l00115\" name=\"l00115\"></a><span class=\"lineno\">  115</span><span class=\"comment\">// </span></div>\n+<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\">  116</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">class </span>MUTEX_TYPE, <span class=\"keyword\">class </span>READ_LOCK_GUARD_TYPE,</div>\n+<div class=\"line\"><a id=\"l00117\" name=\"l00117\"></a><span class=\"lineno\">  117</span>                            <span class=\"keyword\">class </span>WRITE_LOCK_GUARD_TYPE&gt;</div>\n+<div class=\"foldopen\" id=\"foldopen00118\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00953.html\">  118</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a00953.html\">SurfaceFactoryCacheThreaded</a> : <span class=\"keyword\">public</span> <a class=\"code hl_class\" href=\"a00949.html\">SurfaceFactoryCache</a> {</div>\n+<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00953.html#a9e84b6f045809c700d7dc53c3a350afe\">  120</a></span>    <a class=\"code hl_function\" href=\"a00953.html#a9e84b6f045809c700d7dc53c3a350afe\">SurfaceFactoryCacheThreaded</a>() : <a class=\"code hl_class\" href=\"a00949.html\">SurfaceFactoryCache</a>() { }</div>\n+<div class=\"line\"><a id=\"l00121\" name=\"l00121\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00953.html#ac74eea23eda9dbc078678ee5d440c7b8\">  121</a></span>    <a class=\"code hl_function\" href=\"a00953.html#ac74eea23eda9dbc078678ee5d440c7b8\">~SurfaceFactoryCacheThreaded</a>() <span class=\"keyword\">override</span> = <span class=\"keywordflow\">default</span>;</div>\n+<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span> </div>\n+<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\">  123</span><span class=\"keyword\">protected</span>:</div>\n+<div class=\"line\"><a id=\"l00125\" name=\"l00125\"></a><span class=\"lineno\">  125</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span>    <span class=\"comment\">//  Virtual overrides from base:</span></div>\n+<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\">  127</span>    <span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00128\" name=\"l00128\"></a><span class=\"lineno\">  128</span>    DataType Find(KeyType <span class=\"keyword\">const</span> &amp; key)<span class=\"keyword\"> const override </span>{</div>\n+<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span>        READ_LOCK_GUARD_TYPE lockGuard(_mutex);</div>\n+<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span>        <span class=\"keywordflow\">return</span> find(key);</div>\n+<div class=\"line\"><a id=\"l00131\" name=\"l00131\"></a><span class=\"lineno\">  131</span>    }</div>\n+<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\">  132</span> </div>\n+<div class=\"line\"><a id=\"l00133\" name=\"l00133\"></a><span class=\"lineno\">  133</span>    DataType Add(KeyType <span class=\"keyword\">const</span> &amp; key, DataType <span class=\"keyword\">const</span> &amp; data)<span class=\"keyword\"> override </span>{</div>\n+<div class=\"line\"><a id=\"l00134\" name=\"l00134\"></a><span class=\"lineno\">  134</span>        WRITE_LOCK_GUARD_TYPE lockGuard(_mutex);</div>\n+<div class=\"line\"><a id=\"l00135\" name=\"l00135\"></a><span class=\"lineno\">  135</span>        <span class=\"keywordflow\">return</span> add(key, data);</div>\n+<div class=\"line\"><a id=\"l00136\" name=\"l00136\"></a><span class=\"lineno\">  136</span>    }</div>\n+<div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\">  138</span> </div>\n+<div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\">  139</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\">  140</span>    MUTEX_TYPE <span class=\"keyword\">mutable</span> _mutex;</div>\n+<div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\">  141</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span> </div>\n+<div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\">  143</span>} <span class=\"comment\">// end namespace Bfr</span></div>\n+<div class=\"line\"><a id=\"l00144\" name=\"l00144\"></a><span class=\"lineno\">  144</span> </div>\n+<div class=\"line\"><a id=\"l00145\" name=\"l00145\"></a><span class=\"lineno\">  145</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00146\" name=\"l00146\"></a><span class=\"lineno\">  146</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\">  147</span> </div>\n+<div class=\"line\"><a id=\"l00148\" name=\"l00148\"></a><span class=\"lineno\">  148</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\">  149</span> </div>\n+<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\">  150</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_BFR_SURFACE_FACTORY_CACHE_H */</span><span class=\"preprocessor\"></span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa00941_html\"><div class=\"ttname\"><a href=\"a00941.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory</a></div><div class=\"ttdoc\">Base class providing initialization of a Surface for each face of a mesh.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00881_source.html#l00103\">surfaceFactory.h:103</a></div></div>\n+<div class=\"ttc\" id=\"aa00949_html\"><div class=\"ttname\"><a href=\"a00949.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryCache</a></div><div class=\"ttdoc\">Container used internally by SurfaceFactory to store reusable information.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00896_source.html#l00059\">surfaceFactoryCache.h:59</a></div></div>\n+<div class=\"ttc\" id=\"aa00949_html_a3f63565868cb0b0871e2db37939ec0e2\"><div class=\"ttname\"><a href=\"a00949.html#a3f63565868cb0b0871e2db37939ec0e2\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryCache::SurfaceFactoryCache</a></div><div class=\"ttdeci\">SurfaceFactoryCache()</div></div>\n+<div class=\"ttc\" id=\"aa00949_html_a624a2bb484d2deb54dd08d3310e746b3\"><div class=\"ttname\"><a href=\"a00949.html#a624a2bb484d2deb54dd08d3310e746b3\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryCache::~SurfaceFactoryCache</a></div><div class=\"ttdeci\">virtual ~SurfaceFactoryCache()</div></div>\n+<div class=\"ttc\" id=\"aa00949_html_a704742f6a7a07e766b5320c8d6f2f745\"><div class=\"ttname\"><a href=\"a00949.html#a704742f6a7a07e766b5320c8d6f2f745\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryCache::SurfaceFactoryCache</a></div><div class=\"ttdeci\">SurfaceFactoryCache(SurfaceFactoryCache const &amp;)=delete</div></div>\n+<div class=\"ttc\" id=\"aa00949_html_a736c32f5c64da3442ff1c74ef1fb9ff7\"><div class=\"ttname\"><a href=\"a00949.html#a736c32f5c64da3442ff1c74ef1fb9ff7\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryCache::operator=</a></div><div class=\"ttdeci\">SurfaceFactoryCache &amp; operator=(SurfaceFactoryCache const &amp;)=delete</div></div>\n+<div class=\"ttc\" id=\"aa00953_html\"><div class=\"ttname\"><a href=\"a00953.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryCacheThreaded</a></div><div class=\"ttdoc\">Template for declaring thread-safe subclasses of SurfaceFactoryCache.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00896_source.html#l00118\">surfaceFactoryCache.h:118</a></div></div>\n+<div class=\"ttc\" id=\"aa00953_html_a9e84b6f045809c700d7dc53c3a350afe\"><div class=\"ttname\"><a href=\"a00953.html#a9e84b6f045809c700d7dc53c3a350afe\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryCacheThreaded::SurfaceFactoryCacheThreaded</a></div><div class=\"ttdeci\">SurfaceFactoryCacheThreaded()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00896_source.html#l00120\">surfaceFactoryCache.h:120</a></div></div>\n+<div class=\"ttc\" id=\"aa00953_html_ac74eea23eda9dbc078678ee5d440c7b8\"><div class=\"ttname\"><a href=\"a00953.html#ac74eea23eda9dbc078678ee5d440c7b8\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryCacheThreaded::~SurfaceFactoryCacheThreaded</a></div><div class=\"ttdeci\">~SurfaceFactoryCacheThreaded() override=default</div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00896.html\">cpuD3D11VertexBuffer.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_fa5edef2a780a73fbfb6a11f1af88ceb.html\">bfr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00896.html\">surfaceFactoryCache.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-cpuD3D11VertexBuffer.h\n+surfaceFactoryCache.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2013 Pixar\n+2// Copyright 2021 Pixar\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -24,105 +24,131 @@\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n 24\n-25#ifndef OPENSUBDIV3_OSD_CPU_D3D11_VERTEX_BUFFER_H\n-26#define OPENSUBDIV3_OSD_CPU_D3D11_VERTEX_BUFFER_H\n+25#ifndef OPENSUBDIV3_BFR_SURFACE_FACTORY_CACHE_H\n+26#define OPENSUBDIV3_BFR_SURFACE_FACTORY_CACHE_H\n 27\n 28#include \"../version.h\"\n-29#include <cstddef>\n-30\n-31struct ID3D11Buffer;\n-32struct ID3D11Device;\n-33struct ID3D11DeviceContext;\n+29\n+30#include \"../bfr/irregularPatchType.h\"\n+31\n+32#include <map>\n+33#include <cstdint>\n 34\n 35namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n 36namespace OPENSUBDIV_VERSION {\n 37\n-38namespace Osd {\n+38namespace Bfr {\n 39\n-_\b4_\b8class _\bC_\bp_\bu_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br {\n-49public:\n-_\b5_\b1 static _\bC_\bp_\bu_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br * _\bC_\br_\be_\ba_\bt_\be(int numElements, int numVertices,\n-52 ID3D11DeviceContext *deviceContext);\n-53\n-_\b5_\b5 virtual _\b~_\bC_\bp_\bu_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br();\n-56\n-_\b5_\b9 void _\bU_\bp_\bd_\ba_\bt_\be_\bD_\ba_\bt_\ba(const float *src, int startVertex, int numVertices,\n-60 void *deviceContext = NULL);\n-61\n-_\b6_\b3 int _\bG_\be_\bt_\bN_\bu_\bm_\bE_\bl_\be_\bm_\be_\bn_\bt_\bs() const;\n-64\n-_\b6_\b6 int _\bG_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs() const;\n-67\n-_\b6_\b9 float * _\bB_\bi_\bn_\bd_\bC_\bp_\bu_\bB_\bu_\bf_\bf_\be_\br();\n-70\n-_\b7_\b2 ID3D11Buffer *_\bB_\bi_\bn_\bd_\bD_\b3_\bD_\b1_\b1_\bB_\bu_\bf_\bf_\be_\br(ID3D11DeviceContext *deviceContext);\n-73\n-_\b7_\b5 ID3D11Buffer *_\bB_\bi_\bn_\bd_\bV_\bB_\bO(ID3D11DeviceContext *deviceContext) {\n-76 return _\bB_\bi_\bn_\bd_\bD_\b3_\bD_\b1_\b1_\bB_\bu_\bf_\bf_\be_\br(deviceContext);\n-77 }\n-78\n-79protected:\n-_\b8_\b1 _\bC_\bp_\bu_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br(int numElements, int numVertices);\n-82\n-_\b8_\b3 bool _\ba_\bl_\bl_\bo_\bc_\ba_\bt_\be(ID3D11Device *device);\n-84\n-85private:\n-86 int _numElements;\n-87 int _numVertices;\n-88 ID3D11Buffer *_d3d11Buffer;\n-89 float *_cpuBuffer;\n-90};\n-91\n-92} // end namespace Osd\n-93\n-94} // end namespace OPENSUBDIV_VERSION\n-95using namespace OPENSUBDIV_VERSION;\n-96\n-97} // end namespace OpenSubdiv\n+52//\n+53// Initial/expected use requires simple searches of and additions to the\n+54// cache by the SurfaceFactory or its Builders. Longer term, with the\n+55// possibility of instances of caches being shared between meshes and\n+56// factories, additional options and/or public methods may be warranted\n+57// to limit what is cached or to prune the cache if it gets too large.\n+58//\n+_\b5_\b9class _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be {\n+60public:\n+_\b6_\b1 _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be();\n+_\b6_\b2 virtual _\b~_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be();\n+63\n+_\b6_\b4 _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be(_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be const &) = delete;\n+_\b6_\b5 _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be & _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be const &) = delete;\n+66\n+67protected:\n+69 // Access restricted to the Factory, its Builders, etc.\n+70 friend class _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by;\n+71\n+72 typedef std::uint64_t KeyType;\n+73 typedef internal::IrregularPatchSharedPtr DataType;\n+75\n+76protected:\n+78 size_t Size() const { return _map.size(); }\n+79\n+80 //\n+81 // Potential overrides by subclasses for thread-safety:\n+82 //\n+83 virtual DataType Find(KeyType const & key) const;\n+84 virtual DataType Add(KeyType const & key, DataType const & data);\n+85\n+86 //\n+87 // Common implementation used by all subclasses:\n+88 //\n+89 DataType find(KeyType const & key) const;\n+90 DataType add(KeyType const & key, DataType const & data);\n+92\n+93private:\n+94 typedef std::map<KeyType, DataType> MapType;\n+95\n+96 MapType _map;\n+97};\n 98\n-99#endif // OPENSUBDIV3_OSD_CPU_D3D11_VERTEX_BUFFER_H\n+113// Separate read and write locks are provided to support mutex types\n+114// allowing shared (read) or exclusive (write) access.\n+115//\n+116template <class MUTEX_TYPE, class READ_LOCK_GUARD_TYPE,\n+117 class WRITE_LOCK_GUARD_TYPE>\n+_\b1_\b1_\b8class _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be_\bT_\bh_\br_\be_\ba_\bd_\be_\bd : public _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be {\n+119public:\n+_\b1_\b2_\b0 _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be_\bT_\bh_\br_\be_\ba_\bd_\be_\bd() : _\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be() { }\n+_\b1_\b2_\b1 _\b~_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be_\bT_\bh_\br_\be_\ba_\bd_\be_\bd() override = default;\n+122\n+123protected:\n+125 //\n+126 // Virtual overrides from base:\n+127 //\n+128 DataType Find(KeyType const & key) const override {\n+129 READ_LOCK_GUARD_TYPE lockGuard(_mutex);\n+130 return find(key);\n+131 }\n+132\n+133 DataType Add(KeyType const & key, DataType const & data) override {\n+134 WRITE_LOCK_GUARD_TYPE lockGuard(_mutex);\n+135 return add(key, data);\n+136 }\n+138\n+139private:\n+140 MUTEX_TYPE mutable _mutex;\n+141};\n+142\n+143} // end namespace Bfr\n+144\n+145} // end namespace OPENSUBDIV_VERSION\n+146using namespace OPENSUBDIV_VERSION;\n+147\n+148} // end namespace OpenSubdiv\n+149\n+150#endif /* OPENSUBDIV3_BFR_SURFACE_FACTORY_CACHE_H */\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-Concrete vertex buffer class for Cpu subdivision and DirectX drawing.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh_\b:_\b4_\b8\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static CpuD3D11VertexBuffer * Create(int numElements, int numVertices,\n-ID3D11DeviceContext *deviceContext)\n-Creator. Returns NULL if error.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bC_\bp_\bu_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-CpuD3D11VertexBuffer(int numElements, int numVertices)\n-Constructor.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bE_\bl_\be_\bm_\be_\bn_\bt_\bs\n-int GetNumElements() const\n-Returns how many elements defined in this vertex buffer.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bU_\bp_\bd_\ba_\bt_\be_\bD_\ba_\bt_\ba\n-void UpdateData(const float *src, int startVertex, int numVertices, void\n-*deviceContext=NULL)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n-int GetNumVertices() const\n-Returns how many vertices allocated in this vertex buffer.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bB_\bi_\bn_\bd_\bD_\b3_\bD_\b1_\b1_\bB_\bu_\bf_\bf_\be_\br\n-ID3D11Buffer * BindD3D11Buffer(ID3D11DeviceContext *deviceContext)\n-Returns the D3D11 buffer object.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bB_\bi_\bn_\bd_\bC_\bp_\bu_\bB_\bu_\bf_\bf_\be_\br\n-float * BindCpuBuffer()\n-Returns the address of CPU buffer.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\ba_\bl_\bl_\bo_\bc_\ba_\bt_\be\n-bool allocate(ID3D11Device *device)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:\n-_\b~_\bC_\bp_\bu_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-virtual ~CpuD3D11VertexBuffer()\n-Destructor.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bB_\bi_\bn_\bd_\bV_\bB_\bO\n-ID3D11Buffer * BindVBO(ID3D11DeviceContext *deviceContext)\n-Returns the D3D11 buffer object (for Osd::Mesh interface)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh_\b:_\b7_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by\n+Base class providing initialization of a Surface for each face of a mesh.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\b._\bh_\b:_\b1_\b0_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be\n+Container used internally by SurfaceFactory to store reusable information.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be_\b._\bh_\b:_\b5_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be\n+SurfaceFactoryCache()\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be_\b:_\b:_\b~_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be\n+virtual ~SurfaceFactoryCache()\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be\n+SurfaceFactoryCache(SurfaceFactoryCache const &)=delete\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n+SurfaceFactoryCache & operator=(SurfaceFactoryCache const &)=delete\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be_\bT_\bh_\br_\be_\ba_\bd_\be_\bd\n+Template for declaring thread-safe subclasses of SurfaceFactoryCache.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be_\b._\bh_\b:_\b1_\b1_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be_\bT_\bh_\br_\be_\ba_\bd_\be_\bd_\b:_\b:\n+_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be_\bT_\bh_\br_\be_\ba_\bd_\be_\bd\n+SurfaceFactoryCacheThreaded()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be_\b._\bh_\b:_\b1_\b2_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be_\bT_\bh_\br_\be_\ba_\bd_\be_\bd_\b:_\b:\n+_\b~_\bS_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be_\bT_\bh_\br_\be_\ba_\bd_\be_\bd\n+~SurfaceFactoryCacheThreaded() override=default\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bc_\bp_\bu_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh\n+    * _\bb_\bf_\br\n+    * _\bs_\bu_\br_\bf_\ba_\bc_\be_\bF_\ba_\bc_\bt_\bo_\br_\by_\bC_\ba_\bc_\bh_\be_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00899.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00899.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/cpuVertexBuffer.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/bfr/parameterization.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -90,41 +90,41 @@\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> &#124;\n <a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">cpuVertexBuffer.h File Reference</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">parameterization.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &lt;cstddef&gt;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a01492_source.html\">../sdc/types.h</a>&quot;</code><br />\n </div>\n <p><a href=\"a00899_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01177.html\">CpuVertexBuffer</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Concrete vertex buffer class for CPU subdivision.  <a href=\"a01177.html#details\">More...</a><br /></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00921.html\">Parameterization</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Simple class defining the 2D parameterization of a face.  <a href=\"a00921.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n+<tr class=\"memitem:a00907\" id=\"r_a00907\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00907.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00899.html\">cpuVertexBuffer.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_fa5edef2a780a73fbfb6a11f1af88ceb.html\">bfr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00899.html\">parameterization.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,24 +1,24 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-cpuVertexBuffer.h File Reference\n+parameterization.h File Reference\n #include \"../version.h\"\n-#include <cstddef>\n+#include \"_\b._\b._\b/_\bs_\bd_\bc_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bC_\bp_\bu_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-\u00a0       Concrete vertex buffer class for CPU subdivision. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn\n+\u00a0       Simple class defining the 2D parameterization of a face. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bc_\bp_\bu_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh\n+    * _\bb_\bf_\br\n+    * _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00899.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00899.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,3 +1,3 @@\n var a00899 = [\n-    [\"CpuVertexBuffer\", \"a01177.html\", \"a01177\"]\n+    [\"Parameterization\", \"a00921.html\", \"a00921\"]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00899_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00899_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/cpuVertexBuffer.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/bfr/parameterization.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">cpuVertexBuffer.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">parameterization.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00899.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2013 Pixar</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2021 Pixar</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -119,75 +119,200 @@\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_CPU_VERTEX_BUFFER_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_CPU_VERTEX_BUFFER_H</span></div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_BFR_PARAMETERIZATION_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_BFR_PARAMETERIZATION_H</span></div>\n <div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n <div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n <div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &lt;cstddef&gt;</span></div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../sdc/types.h&quot;</span></div>\n <div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n <div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n <div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n <div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span> </div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span>Osd {</div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span>Bfr {</div>\n <div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00042\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00042\" name=\"l00042\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01177.html\">   42</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01177.html\">CpuVertexBuffer</a> {</div>\n-<div class=\"line\"><a id=\"l00043\" name=\"l00043\"></a><span class=\"lineno\">   43</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00045\" name=\"l00045\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01177.html#a8b93d5003e64d51c9bd7e487cd15c101\">   45</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01177.html\">CpuVertexBuffer</a> * <a class=\"code hl_function\" href=\"a01177.html#a8b93d5003e64d51c9bd7e487cd15c101\">Create</a>(<span class=\"keywordtype\">int</span> numElements, <span class=\"keywordtype\">int</span> numVertices,</div>\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\">   46</span>                                    <span class=\"keywordtype\">void</span> *deviceContext = NULL);</div>\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span> </div>\n-<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01177.html#ad0932519eaf677c42a8ccfe9a78a2698\">   49</a></span>    <a class=\"code hl_function\" href=\"a01177.html#ad0932519eaf677c42a8ccfe9a78a2698\">~CpuVertexBuffer</a>();</div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span> </div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01177.html#a96601a091f8831823c4dd72b6c962f1b\">   53</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01177.html#a96601a091f8831823c4dd72b6c962f1b\">UpdateData</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <span class=\"keywordtype\">int</span> startVertex, <span class=\"keywordtype\">int</span> numVertices,</div>\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span>                    <span class=\"keywordtype\">void</span> *deviceContext = NULL);</div>\n-<div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span> </div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01177.html#a77cee40767fd4936f20a8f9d9d9ea625\">   57</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01177.html#a77cee40767fd4936f20a8f9d9d9ea625\">GetNumElements</a>() <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span> </div>\n-<div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01177.html#aaf4a32b8a414eff77000c584c2015cb7\">   60</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01177.html#aaf4a32b8a414eff77000c584c2015cb7\">GetNumVertices</a>() <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span> </div>\n-<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01177.html#adf7a9df5d3fc4d803bf5f1f374d90274\">   63</a></span>    <span class=\"keywordtype\">float</span> * <a class=\"code hl_function\" href=\"a01177.html#adf7a9df5d3fc4d803bf5f1f374d90274\">BindCpuBuffer</a>();</div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span> </div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span><span class=\"keyword\">protected</span>:</div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01177.html#afa9168f4f1f046aea4ff94933ac48972\">   67</a></span>    <a class=\"code hl_function\" href=\"a01177.html#afa9168f4f1f046aea4ff94933ac48972\">CpuVertexBuffer</a>(<span class=\"keywordtype\">int</span> numElements, <span class=\"keywordtype\">int</span> numVertices);</div>\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span> </div>\n-<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span>    <span class=\"keywordtype\">int</span> _numElements;</div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>    <span class=\"keywordtype\">int</span> _numVertices;</div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>    <span class=\"keywordtype\">float</span> *_cpuBuffer;</div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span>};</div>\n-</div>\n-<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span> </div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span> </div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span>}  <span class=\"comment\">// end namespace Osd</span></div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span> </div>\n-<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span>}  <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span> </div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>}  <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"foldopen\" id=\"foldopen00052\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00921.html\">   52</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a00921.html\">Parameterization</a> {</div>\n+<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\">   53</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00921.html#a1d1cfd8ffb84e947f82999c682b666a7ae1a12d53590e4fd25c9fd9006f19ab5c\">   62</a></span>    <span class=\"keyword\">enum</span> <a class=\"code hl_enumeration\" href=\"a00921.html#a1d1cfd8ffb84e947f82999c682b666a7\">Type</a> { <a class=\"code hl_enumvalue\" href=\"a00921.html#a1d1cfd8ffb84e947f82999c682b666a7ae1a12d53590e4fd25c9fd9006f19ab5c\">QUAD</a>,          </div>\n+<div class=\"line\"><a id=\"l00063\" name=\"l00063\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00921.html#a1d1cfd8ffb84e947f82999c682b666a7acde3f260abb10fb9633e1ca01de9e78d\">   63</a></span>                <a class=\"code hl_enumvalue\" href=\"a00921.html#a1d1cfd8ffb84e947f82999c682b666a7acde3f260abb10fb9633e1ca01de9e78d\">TRI</a>,           </div>\n+<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\">   64</span>                <a class=\"code hl_enumvalue\" href=\"a00921.html#a1d1cfd8ffb84e947f82999c682b666a7a7cbabd8b5f03feec7dda7f68118f0850\">QUAD_SUBFACES</a>  </div>\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00921.html#a1d1cfd8ffb84e947f82999c682b666a7a7cbabd8b5f03feec7dda7f68118f0850\">   65</a></span>    };</div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span> </div>\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\">   67</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span> </div>\n+<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span> </div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00921.html#a301ad64c8ae0a3ba3af84377138a069f\">   78</a></span>    <a class=\"code hl_function\" href=\"a00921.html#a301ad64c8ae0a3ba3af84377138a069f\">Parameterization</a>(<a class=\"code hl_enumeration\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833d\">Sdc::SchemeType</a> scheme, <span class=\"keywordtype\">int</span> faceSize);</div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span> </div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00921.html#ac532c4b500b1a85ea22217f2c65a70ed\">   81</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00921.html#ac532c4b500b1a85ea22217f2c65a70ed\">IsValid</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (_faceSize &gt; 0); }</div>\n <div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\">   82</span> </div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_CPU_VERTEX_BUFFER_H</span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa01177_html\"><div class=\"ttname\"><a href=\"a01177.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuVertexBuffer</a></div><div class=\"ttdoc\">Concrete vertex buffer class for CPU subdivision.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00899_source.html#l00042\">cpuVertexBuffer.h:42</a></div></div>\n-<div class=\"ttc\" id=\"aa01177_html_a77cee40767fd4936f20a8f9d9d9ea625\"><div class=\"ttname\"><a href=\"a01177.html#a77cee40767fd4936f20a8f9d9d9ea625\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuVertexBuffer::GetNumElements</a></div><div class=\"ttdeci\">int GetNumElements() const</div><div class=\"ttdoc\">Returns how many elements defined in this vertex buffer.</div></div>\n-<div class=\"ttc\" id=\"aa01177_html_a8b93d5003e64d51c9bd7e487cd15c101\"><div class=\"ttname\"><a href=\"a01177.html#a8b93d5003e64d51c9bd7e487cd15c101\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuVertexBuffer::Create</a></div><div class=\"ttdeci\">static CpuVertexBuffer * Create(int numElements, int numVertices, void *deviceContext=NULL)</div><div class=\"ttdoc\">Creator. Returns NULL if error.</div></div>\n-<div class=\"ttc\" id=\"aa01177_html_a96601a091f8831823c4dd72b6c962f1b\"><div class=\"ttname\"><a href=\"a01177.html#a96601a091f8831823c4dd72b6c962f1b\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuVertexBuffer::UpdateData</a></div><div class=\"ttdeci\">void UpdateData(const float *src, int startVertex, int numVertices, void *deviceContext=NULL)</div></div>\n-<div class=\"ttc\" id=\"aa01177_html_aaf4a32b8a414eff77000c584c2015cb7\"><div class=\"ttname\"><a href=\"a01177.html#aaf4a32b8a414eff77000c584c2015cb7\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuVertexBuffer::GetNumVertices</a></div><div class=\"ttdeci\">int GetNumVertices() const</div><div class=\"ttdoc\">Returns how many vertices allocated in this vertex buffer.</div></div>\n-<div class=\"ttc\" id=\"aa01177_html_ad0932519eaf677c42a8ccfe9a78a2698\"><div class=\"ttname\"><a href=\"a01177.html#ad0932519eaf677c42a8ccfe9a78a2698\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuVertexBuffer::~CpuVertexBuffer</a></div><div class=\"ttdeci\">~CpuVertexBuffer()</div><div class=\"ttdoc\">Destructor.</div></div>\n-<div class=\"ttc\" id=\"aa01177_html_adf7a9df5d3fc4d803bf5f1f374d90274\"><div class=\"ttname\"><a href=\"a01177.html#adf7a9df5d3fc4d803bf5f1f374d90274\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuVertexBuffer::BindCpuBuffer</a></div><div class=\"ttdeci\">float * BindCpuBuffer()</div><div class=\"ttdoc\">Returns the address of CPU buffer.</div></div>\n-<div class=\"ttc\" id=\"aa01177_html_afa9168f4f1f046aea4ff94933ac48972\"><div class=\"ttname\"><a href=\"a01177.html#afa9168f4f1f046aea4ff94933ac48972\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuVertexBuffer::CpuVertexBuffer</a></div><div class=\"ttdeci\">CpuVertexBuffer(int numElements, int numVertices)</div><div class=\"ttdoc\">Constructor.</div></div>\n+<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00921.html#aa7e0b89d67d34c1dd7a37cdce95f9e2c\">   84</a></span>    <a class=\"code hl_function\" href=\"a00921.html#aa7e0b89d67d34c1dd7a37cdce95f9e2c\">Parameterization</a>() : _type(0), _uDim(0), _faceSize(0) { }</div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span> </div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00921.html#a64a4b29d36851a8d83be05af5b25f886\">   86</a></span>    <a class=\"code hl_function\" href=\"a00921.html#a64a4b29d36851a8d83be05af5b25f886\">Parameterization</a>(<a class=\"code hl_class\" href=\"a00921.html\">Parameterization</a> <span class=\"keyword\">const</span> &amp;) = <span class=\"keywordflow\">default</span>;</div>\n+<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00921.html#af488514a0e7868dd273ebe767420c416\">   87</a></span>    <a class=\"code hl_class\" href=\"a00921.html\">Parameterization</a> &amp; <a class=\"code hl_function\" href=\"a00921.html#af488514a0e7868dd273ebe767420c416\">operator=</a>(<a class=\"code hl_class\" href=\"a00921.html\">Parameterization</a> <span class=\"keyword\">const</span> &amp;) = <span class=\"keywordflow\">default</span>;</div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00921.html#a4a581bbd4a90fe89f0c9210dede62c5f\">   88</a></span>    <a class=\"code hl_function\" href=\"a00921.html#a4a581bbd4a90fe89f0c9210dede62c5f\">~Parameterization</a>() = <span class=\"keywordflow\">default</span>;</div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span> </div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span> </div>\n+<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span> </div>\n+<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00921.html#a485decc00facb0972f8775a8a20851fa\">   98</a></span>    <a class=\"code hl_enumeration\" href=\"a00921.html#a1d1cfd8ffb84e947f82999c682b666a7\">Type</a> <a class=\"code hl_function\" href=\"a00921.html#a485decc00facb0972f8775a8a20851fa\">GetType</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> (<a class=\"code hl_enumeration\" href=\"a00921.html#a1d1cfd8ffb84e947f82999c682b666a7\">Type</a>) _type; }</div>\n+<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span> </div>\n+<div class=\"line\"><a id=\"l00101\" name=\"l00101\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00921.html#a181e30653909f9d0e0afa92dd44d28ec\">  101</a></span>    <span class=\"keywordtype\">int</span>  <a class=\"code hl_function\" href=\"a00921.html#a181e30653909f9d0e0afa92dd44d28ec\">GetFaceSize</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _faceSize; }</div>\n+<div class=\"line\"><a id=\"l00103\" name=\"l00103\"></a><span class=\"lineno\">  103</span> </div>\n+<div class=\"line\"><a id=\"l00104\" name=\"l00104\"></a><span class=\"lineno\">  104</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00106\" name=\"l00106\"></a><span class=\"lineno\">  106</span> </div>\n+<div class=\"line\"><a id=\"l00116\" name=\"l00116\"></a><span class=\"lineno\">  116</span> </div>\n+<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\">  118</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00921.html#a9cb32ed5657438f0a1b7f322b221dc75\">  119</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00921.html#a9cb32ed5657438f0a1b7f322b221dc75\">GetVertexCoord</a>(<span class=\"keywordtype\">int</span> vertexIndex, REAL uvCoord[2]) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span> </div>\n+<div class=\"line\"><a id=\"l00122\" name=\"l00122\"></a><span class=\"lineno\">  122</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00123\" name=\"l00123\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00921.html#a8619f1774a47cdf85d93832261fe7d54\">  123</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00921.html#a8619f1774a47cdf85d93832261fe7d54\">GetEdgeCoord</a>(<span class=\"keywordtype\">int</span> edgeIndex, REAL t, REAL uvCoord[2]) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00124\" name=\"l00124\"></a><span class=\"lineno\">  124</span> </div>\n+<div class=\"line\"><a id=\"l00126\" name=\"l00126\"></a><span class=\"lineno\">  126</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00127\" name=\"l00127\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00921.html#a43caa8212032f3649809914cc0f57653\">  127</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00921.html#a43caa8212032f3649809914cc0f57653\">GetCenterCoord</a>(REAL uvCoord[2]) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00129\" name=\"l00129\"></a><span class=\"lineno\">  129</span> </div>\n+<div class=\"line\"><a id=\"l00130\" name=\"l00130\"></a><span class=\"lineno\">  130</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00132\" name=\"l00132\"></a><span class=\"lineno\">  132</span> </div>\n+<div class=\"line\"><a id=\"l00147\" name=\"l00147\"></a><span class=\"lineno\">  147</span> </div>\n+<div class=\"line\"><a id=\"l00149\" name=\"l00149\"></a><span class=\"lineno\">  149</span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00921.html#adc4cd156a8fdb843b0e233a922bb8a17\">HasSubFaces</a>() <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00150\" name=\"l00150\"></a><span class=\"lineno\">  150</span> </div>\n+<div class=\"line\"><a id=\"l00152\" name=\"l00152\"></a><span class=\"lineno\">  152</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00153\" name=\"l00153\"></a><span class=\"lineno\">  153</span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00921.html#a0381bb479d54363806267616b61c6ed3\">GetSubFace</a>(REAL <span class=\"keyword\">const</span> uvCoord[2]) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00154\" name=\"l00154\"></a><span class=\"lineno\">  154</span> </div>\n+<div class=\"line\"><a id=\"l00157\" name=\"l00157\"></a><span class=\"lineno\">  157</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\">  158</span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00921.html#a41cf5ce29cf0ef8f61e9bfe9b8c007f6\">ConvertCoordToSubFace</a>(</div>\n+<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\">  159</span>                REAL <span class=\"keyword\">const</span> uvCoord[2], REAL subFaceCoord[2]) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\">  160</span> </div>\n+<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\">  162</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\">  163</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00921.html#aed9d1936ffe46b9622ae31cb43233a2e\">ConvertSubFaceToCoord</a>(<span class=\"keywordtype\">int</span> subFace,</div>\n+<div class=\"line\"><a id=\"l00164\" name=\"l00164\"></a><span class=\"lineno\">  164</span>                REAL <span class=\"keyword\">const</span> subFaceCoord[2], REAL uvCoord[2]) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\">  165</span> </div>\n+<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\">  168</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\">  169</span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00921.html#ae7ee02ea1bb1c8b1fff7793d51013bed\">ConvertCoordToNormalizedSubFace</a>(</div>\n+<div class=\"line\"><a id=\"l00170\" name=\"l00170\"></a><span class=\"lineno\">  170</span>                REAL <span class=\"keyword\">const</span> uvCoord[2], REAL subFaceCoord[2]) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span> </div>\n+<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\">  173</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00174\" name=\"l00174\"></a><span class=\"lineno\">  174</span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00921.html#a9b6878c9cfa5f864aacae60e159451c8\">ConvertNormalizedSubFaceToCoord</a>(<span class=\"keywordtype\">int</span> subFace,</div>\n+<div class=\"line\"><a id=\"l00175\" name=\"l00175\"></a><span class=\"lineno\">  175</span>                REAL <span class=\"keyword\">const</span> subFaceCoord[2], REAL uvCoord[2]) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span> </div>\n+<div class=\"line\"><a id=\"l00178\" name=\"l00178\"></a><span class=\"lineno\">  178</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\">  179</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\">  180</span>    <span class=\"keywordtype\">int</span> convertCoordToSubFace(<span class=\"keywordtype\">bool</span> normalized,</div>\n+<div class=\"line\"><a id=\"l00181\" name=\"l00181\"></a><span class=\"lineno\">  181</span>                REAL <span class=\"keyword\">const</span> uvCoord[2], REAL subFaceCoord[2]) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\">  182</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\">  183</span>    <span class=\"keywordtype\">void</span> convertSubFaceToCoord(<span class=\"keywordtype\">bool</span> normalized, <span class=\"keywordtype\">int</span> subFace,</div>\n+<div class=\"line\"><a id=\"l00184\" name=\"l00184\"></a><span class=\"lineno\">  184</span>                REAL <span class=\"keyword\">const</span> subFaceCoord[2], REAL uvCoord[2]) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\">  185</span> </div>\n+<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\">  186</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00187\" name=\"l00187\"></a><span class=\"lineno\">  187</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span>  _type;</div>\n+<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\">  188</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">char</span>  _uDim;</div>\n+<div class=\"line\"><a id=\"l00189\" name=\"l00189\"></a><span class=\"lineno\">  189</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> _faceSize;</div>\n+<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\">  190</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00191\" name=\"l00191\"></a><span class=\"lineno\">  191</span> </div>\n+<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\">  192</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00193\" name=\"l00193\"></a><span class=\"lineno\">  193</span><span class=\"comment\">//  Inline sub-face coordinate conversion methods:</span></div>\n+<div class=\"line\"><a id=\"l00194\" name=\"l00194\"></a><span class=\"lineno\">  194</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00195\" name=\"l00195\"></a><span class=\"lineno\">  195</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">bool</span></div>\n+<div class=\"foldopen\" id=\"foldopen00196\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00196\" name=\"l00196\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00921.html#adc4cd156a8fdb843b0e233a922bb8a17\">  196</a></span><a class=\"code hl_function\" href=\"a00921.html#adc4cd156a8fdb843b0e233a922bb8a17\">Parameterization::HasSubFaces</a>()<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00197\" name=\"l00197\"></a><span class=\"lineno\">  197</span>    <span class=\"keywordflow\">return</span> (_type == <a class=\"code hl_enumvalue\" href=\"a00921.html#a1d1cfd8ffb84e947f82999c682b666a7a7cbabd8b5f03feec7dda7f68118f0850\">QUAD_SUBFACES</a>);</div>\n+<div class=\"line\"><a id=\"l00198\" name=\"l00198\"></a><span class=\"lineno\">  198</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00199\" name=\"l00199\"></a><span class=\"lineno\">  199</span> </div>\n+<div class=\"line\"><a id=\"l00200\" name=\"l00200\"></a><span class=\"lineno\">  200</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00201\" name=\"l00201\"></a><span class=\"lineno\">  201</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span></div>\n+<div class=\"foldopen\" id=\"foldopen00202\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00202\" name=\"l00202\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00921.html#a0381bb479d54363806267616b61c6ed3\">  202</a></span><a class=\"code hl_function\" href=\"a00921.html#a0381bb479d54363806267616b61c6ed3\">Parameterization::GetSubFace</a>(REAL <span class=\"keyword\">const</span> uvCoord[2])<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\">  203</span> </div>\n+<div class=\"line\"><a id=\"l00204\" name=\"l00204\"></a><span class=\"lineno\">  204</span>    <span class=\"keywordflow\">if</span> (!<a class=\"code hl_function\" href=\"a00921.html#adc4cd156a8fdb843b0e233a922bb8a17\">HasSubFaces</a>()) <span class=\"keywordflow\">return</span> 0;</div>\n+<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\">  205</span> </div>\n+<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\">  206</span>    <span class=\"keywordtype\">int</span> uTile = (int) uvCoord[0];</div>\n+<div class=\"line\"><a id=\"l00207\" name=\"l00207\"></a><span class=\"lineno\">  207</span>    <span class=\"keywordtype\">int</span> vTile = (int) uvCoord[1];</div>\n+<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\">  208</span>    <span class=\"keywordflow\">return</span> (vTile + ((uvCoord[1] - (REAL) vTile) &gt; 0.75f)) * _uDim +</div>\n+<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\">  209</span>           (uTile + ((uvCoord[0] - (REAL) uTile) &gt; 0.75f));</div>\n+<div class=\"line\"><a id=\"l00210\" name=\"l00210\"></a><span class=\"lineno\">  210</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\">  211</span> </div>\n+<div class=\"line\"><a id=\"l00212\" name=\"l00212\"></a><span class=\"lineno\">  212</span><span class=\"comment\">//  Conversions to unnormalized sub-face coordinates:</span></div>\n+<div class=\"line\"><a id=\"l00213\" name=\"l00213\"></a><span class=\"lineno\">  213</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\">  214</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span></div>\n+<div class=\"foldopen\" id=\"foldopen00215\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00921.html#a41cf5ce29cf0ef8f61e9bfe9b8c007f6\">  215</a></span><a class=\"code hl_function\" href=\"a00921.html#a41cf5ce29cf0ef8f61e9bfe9b8c007f6\">Parameterization::ConvertCoordToSubFace</a>(</div>\n+<div class=\"line\"><a id=\"l00216\" name=\"l00216\"></a><span class=\"lineno\">  216</span>        REAL <span class=\"keyword\">const</span> uvCoord[2], REAL subCoord[2])<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00217\" name=\"l00217\"></a><span class=\"lineno\">  217</span>    <span class=\"keywordflow\">return</span> convertCoordToSubFace&lt;REAL&gt;(<span class=\"keyword\">false</span>, uvCoord, subCoord);</div>\n+<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\">  218</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\">  219</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00220\" name=\"l00220\"></a><span class=\"lineno\">  220</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00221\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00921.html#aed9d1936ffe46b9622ae31cb43233a2e\">  221</a></span><a class=\"code hl_function\" href=\"a00921.html#aed9d1936ffe46b9622ae31cb43233a2e\">Parameterization::ConvertSubFaceToCoord</a>(</div>\n+<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\">  222</span>        <span class=\"keywordtype\">int</span> subFace, REAL <span class=\"keyword\">const</span> subCoord[2], REAL uvCoord[2])<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\">  223</span>    convertSubFaceToCoord&lt;REAL&gt;(<span class=\"keyword\">false</span>, subFace, subCoord, uvCoord);</div>\n+<div class=\"line\"><a id=\"l00224\" name=\"l00224\"></a><span class=\"lineno\">  224</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\">  225</span> </div>\n+<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\">  226</span><span class=\"comment\">//  Conversions to normalized sub-face coordinates:</span></div>\n+<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\">  227</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00228\" name=\"l00228\"></a><span class=\"lineno\">  228</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span></div>\n+<div class=\"foldopen\" id=\"foldopen00229\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00921.html#ae7ee02ea1bb1c8b1fff7793d51013bed\">  229</a></span><a class=\"code hl_function\" href=\"a00921.html#ae7ee02ea1bb1c8b1fff7793d51013bed\">Parameterization::ConvertCoordToNormalizedSubFace</a>(</div>\n+<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\">  230</span>        REAL <span class=\"keyword\">const</span> uvCoord[2], REAL subCoord[2])<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\">  231</span>    <span class=\"keywordflow\">return</span> convertCoordToSubFace&lt;REAL&gt;(<span class=\"keyword\">true</span>, uvCoord, subCoord);</div>\n+<div class=\"line\"><a id=\"l00232\" name=\"l00232\"></a><span class=\"lineno\">  232</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\">  233</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\">  234</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">void</span></div>\n+<div class=\"foldopen\" id=\"foldopen00235\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00921.html#a9b6878c9cfa5f864aacae60e159451c8\">  235</a></span><a class=\"code hl_function\" href=\"a00921.html#a9b6878c9cfa5f864aacae60e159451c8\">Parameterization::ConvertNormalizedSubFaceToCoord</a>(</div>\n+<div class=\"line\"><a id=\"l00236\" name=\"l00236\"></a><span class=\"lineno\">  236</span>        <span class=\"keywordtype\">int</span> subFace, REAL <span class=\"keyword\">const</span> subCoord[2], REAL uvCoord[2])<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00237\" name=\"l00237\"></a><span class=\"lineno\">  237</span>    convertSubFaceToCoord&lt;REAL&gt;(<span class=\"keyword\">true</span>, subFace, subCoord, uvCoord);</div>\n+<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\">  238</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\">  239</span> </div>\n+<div class=\"line\"><a id=\"l00240\" name=\"l00240\"></a><span class=\"lineno\">  240</span>} <span class=\"comment\">// end namespace Bfr</span></div>\n+<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\">  241</span> </div>\n+<div class=\"line\"><a id=\"l00242\" name=\"l00242\"></a><span class=\"lineno\">  242</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\">  243</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00244\" name=\"l00244\"></a><span class=\"lineno\">  244</span> </div>\n+<div class=\"line\"><a id=\"l00245\" name=\"l00245\"></a><span class=\"lineno\">  245</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l00246\" name=\"l00246\"></a><span class=\"lineno\">  246</span> </div>\n+<div class=\"line\"><a id=\"l00247\" name=\"l00247\"></a><span class=\"lineno\">  247</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_BFR_PARAMETERIZATION */</span><span class=\"preprocessor\"></span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa00913_html_aa3daa2f428c6be2b1cb394f3a525833d\"><div class=\"ttname\"><a href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833d\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::SchemeType</a></div><div class=\"ttdeci\">SchemeType</div><div class=\"ttdoc\">Enumerated type for all subdivision schemes supported by OpenSubdiv.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01492_source.html#l00037\">types.h:37</a></div></div>\n+<div class=\"ttc\" id=\"aa00921_html\"><div class=\"ttname\"><a href=\"a00921.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization</a></div><div class=\"ttdoc\">Simple class defining the 2D parameterization of a face.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00899_source.html#l00052\">parameterization.h:52</a></div></div>\n+<div class=\"ttc\" id=\"aa00921_html_a0381bb479d54363806267616b61c6ed3\"><div class=\"ttname\"><a href=\"a00921.html#a0381bb479d54363806267616b61c6ed3\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization::GetSubFace</a></div><div class=\"ttdeci\">int GetSubFace(REAL const uvCoord[2]) const</div><div class=\"ttdoc\">Returns the integer sub-face containing the given (u,v)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00899_source.html#l00202\">parameterization.h:202</a></div></div>\n+<div class=\"ttc\" id=\"aa00921_html_a181e30653909f9d0e0afa92dd44d28ec\"><div class=\"ttname\"><a href=\"a00921.html#a181e30653909f9d0e0afa92dd44d28ec\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization::GetFaceSize</a></div><div class=\"ttdeci\">int GetFaceSize() const</div><div class=\"ttdoc\">Returns the size (number of vertices) of the corresponding face.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00899_source.html#l00101\">parameterization.h:101</a></div></div>\n+<div class=\"ttc\" id=\"aa00921_html_a1d1cfd8ffb84e947f82999c682b666a7\"><div class=\"ttname\"><a href=\"a00921.html#a1d1cfd8ffb84e947f82999c682b666a7\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization::Type</a></div><div class=\"ttdeci\">Type</div><div class=\"ttdoc\">Enumerated type for the different kinds of Parameterizations.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00899_source.html#l00062\">parameterization.h:62</a></div></div>\n+<div class=\"ttc\" id=\"aa00921_html_a1d1cfd8ffb84e947f82999c682b666a7a7cbabd8b5f03feec7dda7f68118f0850\"><div class=\"ttname\"><a href=\"a00921.html#a1d1cfd8ffb84e947f82999c682b666a7a7cbabd8b5f03feec7dda7f68118f0850\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization::QUAD_SUBFACES</a></div><div class=\"ttdeci\">@ QUAD_SUBFACES</div><div class=\"ttdoc\">Partitioned into quadrilateral sub-faces.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00899_source.html#l00065\">parameterization.h:64</a></div></div>\n+<div class=\"ttc\" id=\"aa00921_html_a1d1cfd8ffb84e947f82999c682b666a7acde3f260abb10fb9633e1ca01de9e78d\"><div class=\"ttname\"><a href=\"a00921.html#a1d1cfd8ffb84e947f82999c682b666a7acde3f260abb10fb9633e1ca01de9e78d\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization::TRI</a></div><div class=\"ttdeci\">@ TRI</div><div class=\"ttdoc\">Triangle.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00899_source.html#l00063\">parameterization.h:63</a></div></div>\n+<div class=\"ttc\" id=\"aa00921_html_a1d1cfd8ffb84e947f82999c682b666a7ae1a12d53590e4fd25c9fd9006f19ab5c\"><div class=\"ttname\"><a href=\"a00921.html#a1d1cfd8ffb84e947f82999c682b666a7ae1a12d53590e4fd25c9fd9006f19ab5c\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization::QUAD</a></div><div class=\"ttdeci\">@ QUAD</div><div class=\"ttdoc\">Quadrilateral.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00899_source.html#l00062\">parameterization.h:62</a></div></div>\n+<div class=\"ttc\" id=\"aa00921_html_a301ad64c8ae0a3ba3af84377138a069f\"><div class=\"ttname\"><a href=\"a00921.html#a301ad64c8ae0a3ba3af84377138a069f\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization::Parameterization</a></div><div class=\"ttdeci\">Parameterization(Sdc::SchemeType scheme, int faceSize)</div><div class=\"ttdoc\">Primary constructor with subdivision scheme and face size.</div></div>\n+<div class=\"ttc\" id=\"aa00921_html_a41cf5ce29cf0ef8f61e9bfe9b8c007f6\"><div class=\"ttname\"><a href=\"a00921.html#a41cf5ce29cf0ef8f61e9bfe9b8c007f6\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization::ConvertCoordToSubFace</a></div><div class=\"ttdeci\">int ConvertCoordToSubFace(REAL const uvCoord[2], REAL subFaceCoord[2]) const</div><div class=\"ttdoc\">Convert (u,v) to a sub-face (return value) and its local (u,v) coordinate.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00899_source.html#l00215\">parameterization.h:215</a></div></div>\n+<div class=\"ttc\" id=\"aa00921_html_a43caa8212032f3649809914cc0f57653\"><div class=\"ttname\"><a href=\"a00921.html#a43caa8212032f3649809914cc0f57653\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization::GetCenterCoord</a></div><div class=\"ttdeci\">void GetCenterCoord(REAL uvCoord[2]) const</div><div class=\"ttdoc\">Returns the (u,v) coordinate for the center of the face.</div></div>\n+<div class=\"ttc\" id=\"aa00921_html_a485decc00facb0972f8775a8a20851fa\"><div class=\"ttname\"><a href=\"a00921.html#a485decc00facb0972f8775a8a20851fa\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization::GetType</a></div><div class=\"ttdeci\">Type GetType() const</div><div class=\"ttdoc\">Returns the type of parameterization assigned.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00899_source.html#l00098\">parameterization.h:98</a></div></div>\n+<div class=\"ttc\" id=\"aa00921_html_a4a581bbd4a90fe89f0c9210dede62c5f\"><div class=\"ttname\"><a href=\"a00921.html#a4a581bbd4a90fe89f0c9210dede62c5f\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization::~Parameterization</a></div><div class=\"ttdeci\">~Parameterization()=default</div></div>\n+<div class=\"ttc\" id=\"aa00921_html_a64a4b29d36851a8d83be05af5b25f886\"><div class=\"ttname\"><a href=\"a00921.html#a64a4b29d36851a8d83be05af5b25f886\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization::Parameterization</a></div><div class=\"ttdeci\">Parameterization(Parameterization const &amp;)=default</div></div>\n+<div class=\"ttc\" id=\"aa00921_html_a8619f1774a47cdf85d93832261fe7d54\"><div class=\"ttname\"><a href=\"a00921.html#a8619f1774a47cdf85d93832261fe7d54\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization::GetEdgeCoord</a></div><div class=\"ttdeci\">void GetEdgeCoord(int edgeIndex, REAL t, REAL uvCoord[2]) const</div><div class=\"ttdoc\">Returns the (u,v) coordinate at any point on a given edge.</div></div>\n+<div class=\"ttc\" id=\"aa00921_html_a9b6878c9cfa5f864aacae60e159451c8\"><div class=\"ttname\"><a href=\"a00921.html#a9b6878c9cfa5f864aacae60e159451c8\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization::ConvertNormalizedSubFaceToCoord</a></div><div class=\"ttdeci\">void ConvertNormalizedSubFaceToCoord(int subFace, REAL const subFaceCoord[2], REAL uvCoord[2]) const</div><div class=\"ttdoc\">Convert a sub-face and its normalized (u,v) coordinate to (u,v)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00899_source.html#l00235\">parameterization.h:235</a></div></div>\n+<div class=\"ttc\" id=\"aa00921_html_a9cb32ed5657438f0a1b7f322b221dc75\"><div class=\"ttname\"><a href=\"a00921.html#a9cb32ed5657438f0a1b7f322b221dc75\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization::GetVertexCoord</a></div><div class=\"ttdeci\">void GetVertexCoord(int vertexIndex, REAL uvCoord[2]) const</div><div class=\"ttdoc\">Returns the (u,v) coordinate of a given vertex.</div></div>\n+<div class=\"ttc\" id=\"aa00921_html_aa7e0b89d67d34c1dd7a37cdce95f9e2c\"><div class=\"ttname\"><a href=\"a00921.html#aa7e0b89d67d34c1dd7a37cdce95f9e2c\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization::Parameterization</a></div><div class=\"ttdeci\">Parameterization()</div><div class=\"ttdoc\">Default construction produces an invalid instance.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00899_source.html#l00084\">parameterization.h:84</a></div></div>\n+<div class=\"ttc\" id=\"aa00921_html_ac532c4b500b1a85ea22217f2c65a70ed\"><div class=\"ttname\"><a href=\"a00921.html#ac532c4b500b1a85ea22217f2c65a70ed\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization::IsValid</a></div><div class=\"ttdeci\">bool IsValid() const</div><div class=\"ttdoc\">Returns true if correctly initialized.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00899_source.html#l00081\">parameterization.h:81</a></div></div>\n+<div class=\"ttc\" id=\"aa00921_html_adc4cd156a8fdb843b0e233a922bb8a17\"><div class=\"ttname\"><a href=\"a00921.html#adc4cd156a8fdb843b0e233a922bb8a17\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization::HasSubFaces</a></div><div class=\"ttdeci\">bool HasSubFaces() const</div><div class=\"ttdoc\">Returns if Parameterization has been partitioned into sub-faces.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00899_source.html#l00196\">parameterization.h:196</a></div></div>\n+<div class=\"ttc\" id=\"aa00921_html_ae7ee02ea1bb1c8b1fff7793d51013bed\"><div class=\"ttname\"><a href=\"a00921.html#ae7ee02ea1bb1c8b1fff7793d51013bed\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization::ConvertCoordToNormalizedSubFace</a></div><div class=\"ttdeci\">int ConvertCoordToNormalizedSubFace(REAL const uvCoord[2], REAL subFaceCoord[2]) const</div><div class=\"ttdoc\">Convert (u,v) to a sub-face (return value) and its normalized (u,v) coordinate.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00899_source.html#l00229\">parameterization.h:229</a></div></div>\n+<div class=\"ttc\" id=\"aa00921_html_aed9d1936ffe46b9622ae31cb43233a2e\"><div class=\"ttname\"><a href=\"a00921.html#aed9d1936ffe46b9622ae31cb43233a2e\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization::ConvertSubFaceToCoord</a></div><div class=\"ttdeci\">void ConvertSubFaceToCoord(int subFace, REAL const subFaceCoord[2], REAL uvCoord[2]) const</div><div class=\"ttdoc\">Convert a sub-face and its local (u,v) coordinate to (u,v)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00899_source.html#l00221\">parameterization.h:221</a></div></div>\n+<div class=\"ttc\" id=\"aa00921_html_af488514a0e7868dd273ebe767420c416\"><div class=\"ttname\"><a href=\"a00921.html#af488514a0e7868dd273ebe767420c416\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization::operator=</a></div><div class=\"ttdeci\">Parameterization &amp; operator=(Parameterization const &amp;)=default</div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00899.html\">cpuVertexBuffer.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_fa5edef2a780a73fbfb6a11f1af88ceb.html\">bfr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00899.html\">parameterization.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-cpuVertexBuffer.h\n+parameterization.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2013 Pixar\n+2// Copyright 2021 Pixar\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -24,84 +24,243 @@\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n 24\n-25#ifndef OPENSUBDIV3_OSD_CPU_VERTEX_BUFFER_H\n-26#define OPENSUBDIV3_OSD_CPU_VERTEX_BUFFER_H\n+25#ifndef OPENSUBDIV3_BFR_PARAMETERIZATION_H\n+26#define OPENSUBDIV3_BFR_PARAMETERIZATION_H\n 27\n 28#include \"../version.h\"\n 29\n-30#include <cstddef>\n+30#include \"../sdc/types.h\"\n 31\n 32namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n 33namespace OPENSUBDIV_VERSION {\n 34\n-35namespace Osd {\n+35namespace Bfr {\n 36\n-_\b4_\b2class _\bC_\bp_\bu_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br {\n-43public:\n-_\b4_\b5 static _\bC_\bp_\bu_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br * _\bC_\br_\be_\ba_\bt_\be(int numElements, int numVertices,\n-46 void *deviceContext = NULL);\n-47\n-_\b4_\b9 _\b~_\bC_\bp_\bu_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br();\n-50\n-_\b5_\b3 void _\bU_\bp_\bd_\ba_\bt_\be_\bD_\ba_\bt_\ba(const float *src, int startVertex, int numVertices,\n-54 void *deviceContext = NULL);\n-55\n-_\b5_\b7 int _\bG_\be_\bt_\bN_\bu_\bm_\bE_\bl_\be_\bm_\be_\bn_\bt_\bs() const;\n-58\n-_\b6_\b0 int _\bG_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs() const;\n-61\n-_\b6_\b3 float * _\bB_\bi_\bn_\bd_\bC_\bp_\bu_\bB_\bu_\bf_\bf_\be_\br();\n-64\n-65protected:\n-_\b6_\b7 _\bC_\bp_\bu_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br(int numElements, int numVertices);\n-68\n-69private:\n-70 int _numElements;\n-71 int _numVertices;\n-72 float *_cpuBuffer;\n-73};\n-74\n-75\n-76} // end namespace Osd\n-77\n-78} // end namespace OPENSUBDIV_VERSION\n-79using namespace OPENSUBDIV_VERSION;\n-80\n-81} // end namespace OpenSubdiv\n+_\b5_\b2class _\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn {\n+53public:\n+_\b6_\b2 enum _\bT_\by_\bp_\be { _\bQ_\bU_\bA_\bD,\n+_\b6_\b3 _\bT_\bR_\bI,\n+64 _\bQ_\bU_\bA_\bD_\b__\bS_\bU_\bB_\bF_\bA_\bC_\bE_\bS\n+_\b6_\b5 };\n+66\n+67public:\n+69\n+76\n+_\b7_\b8 _\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn(_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\bT_\by_\bp_\be scheme, int faceSize);\n+79\n+_\b8_\b1 bool _\bI_\bs_\bV_\ba_\bl_\bi_\bd() const { return (_faceSize > 0); }\n 82\n-83#endif // OPENSUBDIV3_OSD_CPU_VERTEX_BUFFER_H\n+_\b8_\b4 _\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn() : _type(0), _uDim(0), _faceSize(0) { }\n+85\n+_\b8_\b6 _\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn(_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn const &) = default;\n+_\b8_\b7 _\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn & _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn const &) = default;\n+_\b8_\b8 _\b~_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn() = default;\n+90\n+92\n+96\n+_\b9_\b8 _\bT_\by_\bp_\be _\bG_\be_\bt_\bT_\by_\bp_\be() const { return (_\bT_\by_\bp_\be) _type; }\n+99\n+_\b1_\b0_\b1 int _\bG_\be_\bt_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be() const { return _faceSize; }\n+103\n+104public:\n+106\n+116\n+118 template <typename REAL>\n+_\b1_\b1_\b9 void _\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bC_\bo_\bo_\br_\bd(int vertexIndex, REAL uvCoord[2]) const;\n+120\n+122 template <typename REAL>\n+_\b1_\b2_\b3 void _\bG_\be_\bt_\bE_\bd_\bg_\be_\bC_\bo_\bo_\br_\bd(int edgeIndex, REAL t, REAL uvCoord[2]) const;\n+124\n+126 template <typename REAL>\n+_\b1_\b2_\b7 void _\bG_\be_\bt_\bC_\be_\bn_\bt_\be_\br_\bC_\bo_\bo_\br_\bd(REAL uvCoord[2]) const;\n+129\n+130public:\n+132\n+147\n+149 bool _\bH_\ba_\bs_\bS_\bu_\bb_\bF_\ba_\bc_\be_\bs() const;\n+150\n+152 template <typename REAL>\n+153 int _\bG_\be_\bt_\bS_\bu_\bb_\bF_\ba_\bc_\be(REAL const uvCoord[2]) const;\n+154\n+157 template <typename REAL>\n+158 int _\bC_\bo_\bn_\bv_\be_\br_\bt_\bC_\bo_\bo_\br_\bd_\bT_\bo_\bS_\bu_\bb_\bF_\ba_\bc_\be(\n+159 REAL const uvCoord[2], REAL subFaceCoord[2]) const;\n+160\n+162 template <typename REAL>\n+163 void _\bC_\bo_\bn_\bv_\be_\br_\bt_\bS_\bu_\bb_\bF_\ba_\bc_\be_\bT_\bo_\bC_\bo_\bo_\br_\bd(int subFace,\n+164 REAL const subFaceCoord[2], REAL uvCoord[2]) const;\n+165\n+168 template <typename REAL>\n+169 int _\bC_\bo_\bn_\bv_\be_\br_\bt_\bC_\bo_\bo_\br_\bd_\bT_\bo_\bN_\bo_\br_\bm_\ba_\bl_\bi_\bz_\be_\bd_\bS_\bu_\bb_\bF_\ba_\bc_\be(\n+170 REAL const uvCoord[2], REAL subFaceCoord[2]) const;\n+171\n+173 template <typename REAL>\n+174 void _\bC_\bo_\bn_\bv_\be_\br_\bt_\bN_\bo_\br_\bm_\ba_\bl_\bi_\bz_\be_\bd_\bS_\bu_\bb_\bF_\ba_\bc_\be_\bT_\bo_\bC_\bo_\bo_\br_\bd(int subFace,\n+175 REAL const subFaceCoord[2], REAL uvCoord[2]) const;\n+177\n+178private:\n+179 template <typename REAL>\n+180 int convertCoordToSubFace(bool normalized,\n+181 REAL const uvCoord[2], REAL subFaceCoord[2]) const;\n+182 template <typename REAL>\n+183 void convertSubFaceToCoord(bool normalized, int subFace,\n+184 REAL const subFaceCoord[2], REAL uvCoord[2]) const;\n+185\n+186private:\n+187 unsigned char _type;\n+188 unsigned char _uDim;\n+189 unsigned short _faceSize;\n+190};\n+191\n+192//\n+193// Inline sub-face coordinate conversion methods:\n+194//\n+195inline bool\n+_\b1_\b9_\b6_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bH_\ba_\bs_\bS_\bu_\bb_\bF_\ba_\bc_\be_\bs() const {\n+197 return (_type == _\bQ_\bU_\bA_\bD_\b__\bS_\bU_\bB_\bF_\bA_\bC_\bE_\bS);\n+198}\n+199\n+200template <typename REAL>\n+201inline int\n+_\b2_\b0_\b2_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bt_\bS_\bu_\bb_\bF_\ba_\bc_\be(REAL const uvCoord[2]) const {\n+203\n+204 if (!_\bH_\ba_\bs_\bS_\bu_\bb_\bF_\ba_\bc_\be_\bs()) return 0;\n+205\n+206 int uTile = (int) uvCoord[0];\n+207 int vTile = (int) uvCoord[1];\n+208 return (vTile + ((uvCoord[1] - (REAL) vTile) > 0.75f)) * _uDim +\n+209 (uTile + ((uvCoord[0] - (REAL) uTile) > 0.75f));\n+210}\n+211\n+212// Conversions to unnormalized sub-face coordinates:\n+213template <typename REAL>\n+214inline int\n+_\b2_\b1_\b5_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bC_\bo_\bn_\bv_\be_\br_\bt_\bC_\bo_\bo_\br_\bd_\bT_\bo_\bS_\bu_\bb_\bF_\ba_\bc_\be(\n+216 REAL const uvCoord[2], REAL subCoord[2]) const {\n+217 return convertCoordToSubFace<REAL>(false, uvCoord, subCoord);\n+218}\n+219template <typename REAL>\n+220inline void\n+_\b2_\b2_\b1_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bC_\bo_\bn_\bv_\be_\br_\bt_\bS_\bu_\bb_\bF_\ba_\bc_\be_\bT_\bo_\bC_\bo_\bo_\br_\bd(\n+222 int subFace, REAL const subCoord[2], REAL uvCoord[2]) const {\n+223 convertSubFaceToCoord<REAL>(false, subFace, subCoord, uvCoord);\n+224}\n+225\n+226// Conversions to normalized sub-face coordinates:\n+227template <typename REAL>\n+228inline int\n+_\b2_\b2_\b9_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bC_\bo_\bn_\bv_\be_\br_\bt_\bC_\bo_\bo_\br_\bd_\bT_\bo_\bN_\bo_\br_\bm_\ba_\bl_\bi_\bz_\be_\bd_\bS_\bu_\bb_\bF_\ba_\bc_\be(\n+230 REAL const uvCoord[2], REAL subCoord[2]) const {\n+231 return convertCoordToSubFace<REAL>(true, uvCoord, subCoord);\n+232}\n+233template <typename REAL>\n+234inline void\n+_\b2_\b3_\b5_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bC_\bo_\bn_\bv_\be_\br_\bt_\bN_\bo_\br_\bm_\ba_\bl_\bi_\bz_\be_\bd_\bS_\bu_\bb_\bF_\ba_\bc_\be_\bT_\bo_\bC_\bo_\bo_\br_\bd(\n+236 int subFace, REAL const subCoord[2], REAL uvCoord[2]) const {\n+237 convertSubFaceToCoord<REAL>(true, subFace, subCoord, uvCoord);\n+238}\n+239\n+240} // end namespace Bfr\n+241\n+242} // end namespace OPENSUBDIV_VERSION\n+243using namespace OPENSUBDIV_VERSION;\n+244\n+245} // end namespace OpenSubdiv\n+246\n+247#endif /* OPENSUBDIV3_BFR_PARAMETERIZATION */\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-Concrete vertex buffer class for CPU subdivision.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bc_\bp_\bu_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh_\b:_\b4_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bE_\bl_\be_\bm_\be_\bn_\bt_\bs\n-int GetNumElements() const\n-Returns how many elements defined in this vertex buffer.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static CpuVertexBuffer * Create(int numElements, int numVertices, void\n-*deviceContext=NULL)\n-Creator. Returns NULL if error.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bU_\bp_\bd_\ba_\bt_\be_\bD_\ba_\bt_\ba\n-void UpdateData(const float *src, int startVertex, int numVertices, void\n-*deviceContext=NULL)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n-int GetNumVertices() const\n-Returns how many vertices allocated in this vertex buffer.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\b~_\bC_\bp_\bu_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-~CpuVertexBuffer()\n-Destructor.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bB_\bi_\bn_\bd_\bC_\bp_\bu_\bB_\bu_\bf_\bf_\be_\br\n-float * BindCpuBuffer()\n-Returns the address of CPU buffer.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bC_\bp_\bu_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bC_\bp_\bu_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-CpuVertexBuffer(int numElements, int numVertices)\n-Constructor.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bS_\bd_\bc_\b:_\b:_\bS_\bc_\bh_\be_\bm_\be_\bT_\by_\bp_\be\n+SchemeType\n+Enumerated type for all subdivision schemes supported by OpenSubdiv.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\by_\bp_\be_\bs_\b._\bh_\b:_\b3_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn\n+Simple class defining the 2D parameterization of a face.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b5_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bt_\bS_\bu_\bb_\bF_\ba_\bc_\be\n+int GetSubFace(REAL const uvCoord[2]) const\n+Returns the integer sub-face containing the given (u,v)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b2_\b0_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bt_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be\n+int GetFaceSize() const\n+Returns the size (number of vertices) of the corresponding face.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b1_\b0_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bT_\by_\bp_\be\n+Type\n+Enumerated type for the different kinds of Parameterizations.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b6_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bQ_\bU_\bA_\bD_\b__\bS_\bU_\bB_\bF_\bA_\bC_\bE_\bS\n+@ QUAD_SUBFACES\n+Partitioned into quadrilateral sub-faces.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b6_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bT_\bR_\bI\n+@ TRI\n+Triangle.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b6_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bQ_\bU_\bA_\bD\n+@ QUAD\n+Quadrilateral.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b6_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn\n+Parameterization(Sdc::SchemeType scheme, int faceSize)\n+Primary constructor with subdivision scheme and face size.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bC_\bo_\bn_\bv_\be_\br_\bt_\bC_\bo_\bo_\br_\bd_\bT_\bo_\bS_\bu_\bb_\bF_\ba_\bc_\be\n+int ConvertCoordToSubFace(REAL const uvCoord[2], REAL subFaceCoord[2]) const\n+Convert (u,v) to a sub-face (return value) and its local (u,v) coordinate.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b2_\b1_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bt_\bC_\be_\bn_\bt_\be_\br_\bC_\bo_\bo_\br_\bd\n+void GetCenterCoord(REAL uvCoord[2]) const\n+Returns the (u,v) coordinate for the center of the face.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bt_\bT_\by_\bp_\be\n+Type GetType() const\n+Returns the type of parameterization assigned.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b9_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\b~_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn\n+~Parameterization()=default\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn\n+Parameterization(Parameterization const &)=default\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bt_\bE_\bd_\bg_\be_\bC_\bo_\bo_\br_\bd\n+void GetEdgeCoord(int edgeIndex, REAL t, REAL uvCoord[2]) const\n+Returns the (u,v) coordinate at any point on a given edge.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:\n+_\bC_\bo_\bn_\bv_\be_\br_\bt_\bN_\bo_\br_\bm_\ba_\bl_\bi_\bz_\be_\bd_\bS_\bu_\bb_\bF_\ba_\bc_\be_\bT_\bo_\bC_\bo_\bo_\br_\bd\n+void ConvertNormalizedSubFaceToCoord(int subFace, REAL const subFaceCoord[2],\n+REAL uvCoord[2]) const\n+Convert a sub-face and its normalized (u,v) coordinate to (u,v)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b2_\b3_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bC_\bo_\bo_\br_\bd\n+void GetVertexCoord(int vertexIndex, REAL uvCoord[2]) const\n+Returns the (u,v) coordinate of a given vertex.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn\n+Parameterization()\n+Default construction produces an invalid instance.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b8_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bI_\bs_\bV_\ba_\bl_\bi_\bd\n+bool IsValid() const\n+Returns true if correctly initialized.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b8_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bH_\ba_\bs_\bS_\bu_\bb_\bF_\ba_\bc_\be_\bs\n+bool HasSubFaces() const\n+Returns if Parameterization has been partitioned into sub-faces.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b1_\b9_\b6\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:\n+_\bC_\bo_\bn_\bv_\be_\br_\bt_\bC_\bo_\bo_\br_\bd_\bT_\bo_\bN_\bo_\br_\bm_\ba_\bl_\bi_\bz_\be_\bd_\bS_\bu_\bb_\bF_\ba_\bc_\be\n+int ConvertCoordToNormalizedSubFace(REAL const uvCoord[2], REAL subFaceCoord\n+[2]) const\n+Convert (u,v) to a sub-face (return value) and its normalized (u,v) coordinate.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b2_\b2_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bC_\bo_\bn_\bv_\be_\br_\bt_\bS_\bu_\bb_\bF_\ba_\bc_\be_\bT_\bo_\bC_\bo_\bo_\br_\bd\n+void ConvertSubFaceToCoord(int subFace, REAL const subFaceCoord[2], REAL\n+uvCoord[2]) const\n+Convert a sub-face and its local (u,v) coordinate to (u,v)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b2_\b2_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n+Parameterization & operator=(Parameterization const &)=default\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bc_\bp_\bu_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh\n+    * _\bb_\bf_\br\n+    * _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00902.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00902.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/d3d11VertexBuffer.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/bfr/tessellation.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -90,40 +90,44 @@\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> &#124;\n <a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">d3d11VertexBuffer.h File Reference</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">tessellation.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00899_source.html\">../bfr/parameterization.h</a>&quot;</code><br />\n </div>\n <p><a href=\"a00902_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01213.html\">D3D11VertexBuffer</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Concrete vertex buffer class for DirectX subdivision and DirectX drawing.  <a href=\"a01213.html#details\">More...</a><br /></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00961.html\">Tessellation</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Encapsulates a specific tessellation pattern of a <a class=\"el\" href=\"a00921.html\" title=\"Simple class defining the 2D parameterization of a face.\">Parameterization</a>.  <a href=\"a00961.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00965.html\">Tessellation::Options</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"a00965.html\" title=\"Options configure a Tessellation to specify the nature of both its results and the structure of the c...\">Options</a> configure a <a class=\"el\" href=\"a00961.html\" title=\"Encapsulates a specific tessellation pattern of a Parameterization.\">Tessellation</a> to specify the nature of both its results and the structure of the coordinate and facet index arrays that its methods will populate.  <a href=\"a00965.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n+<tr class=\"memitem:a00907\" id=\"r_a00907\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00907.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00902.html\">d3d11VertexBuffer.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_fa5edef2a780a73fbfb6a11f1af88ceb.html\">bfr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00902.html\">tessellation.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,24 +1,30 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-d3d11VertexBuffer.h File Reference\n+tessellation.h File Reference\n #include \"../version.h\"\n+#include \"_\b._\b._\b/_\bb_\bf_\br_\b/_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b._\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-\u00a0       Concrete vertex buffer class for DirectX subdivision and DirectX\n-        drawing. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn\n+\u00a0       Encapsulates a specific tessellation pattern of a _\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn.\n+        _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n+        _\bO_\bp_\bt_\bi_\bo_\bn_\bs configure a _\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn to specify the nature of both its\n+\u00a0       results and the structure of the coordinate and facet index arrays that\n+        its methods will populate. _\bM_\bo_\br_\be_\b._\b._\b.\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n-namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br\n \u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bd_\b3_\bd_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh\n+    * _\bb_\bf_\br\n+    * _\bt_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00902.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00902.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,3 +1,4 @@\n var a00902 = [\n-    [\"D3D11VertexBuffer\", \"a01213.html\", \"a01213\"]\n+    [\"Tessellation\", \"a00961.html\", \"a00961\"],\n+    [\"Options\", \"a00965.html\", \"a00965\"]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00902_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00902_source.html", "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/osd/d3d11VertexBuffer.h Source File</title>\n+<title>OpenSubdiv: opensubdiv/bfr/tessellation.h Source File</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -92,19 +92,19 @@\n <div class=\"SRStatus\" id=\"NoMatches\">No Matches</div>\n </div>\n </div>\n </div>\n </div>\n \n <div class=\"header\">\n-  <div class=\"headertitle\"><div class=\"title\">d3d11VertexBuffer.h</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">tessellation.h</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <a href=\"a00902.html\">Go to the documentation of this file.</a><div class=\"fragment\"><div class=\"line\"><a id=\"l00001\" name=\"l00001\"></a><span class=\"lineno\">    1</span><span class=\"comment\">//</span></div>\n-<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2013 Pixar</span></div>\n+<div class=\"line\"><a id=\"l00002\" name=\"l00002\"></a><span class=\"lineno\">    2</span><span class=\"comment\">//   Copyright 2021 Pixar</span></div>\n <div class=\"line\"><a id=\"l00003\" name=\"l00003\"></a><span class=\"lineno\">    3</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00004\" name=\"l00004\"></a><span class=\"lineno\">    4</span><span class=\"comment\">//   Licensed under the Apache License, Version 2.0 (the &quot;Apache License&quot;)</span></div>\n <div class=\"line\"><a id=\"l00005\" name=\"l00005\"></a><span class=\"lineno\">    5</span><span class=\"comment\">//   with the following modification; you may not use this file except in</span></div>\n <div class=\"line\"><a id=\"l00006\" name=\"l00006\"></a><span class=\"lineno\">    6</span><span class=\"comment\">//   compliance with the Apache License and the following modification to it:</span></div>\n <div class=\"line\"><a id=\"l00007\" name=\"l00007\"></a><span class=\"lineno\">    7</span><span class=\"comment\">//   Section 6. Trademarks. is deleted and replaced with:</span></div>\n <div class=\"line\"><a id=\"l00008\" name=\"l00008\"></a><span class=\"lineno\">    8</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00009\" name=\"l00009\"></a><span class=\"lineno\">    9</span><span class=\"comment\">//   6. Trademarks. This License does not grant permission to use the trade</span></div>\n@@ -119,93 +119,281 @@\n <div class=\"line\"><a id=\"l00018\" name=\"l00018\"></a><span class=\"lineno\">   18</span><span class=\"comment\">//   Unless required by applicable law or agreed to in writing, software</span></div>\n <div class=\"line\"><a id=\"l00019\" name=\"l00019\"></a><span class=\"lineno\">   19</span><span class=\"comment\">//   distributed under the Apache License with the above modification is</span></div>\n <div class=\"line\"><a id=\"l00020\" name=\"l00020\"></a><span class=\"lineno\">   20</span><span class=\"comment\">//   distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>\n <div class=\"line\"><a id=\"l00021\" name=\"l00021\"></a><span class=\"lineno\">   21</span><span class=\"comment\">//   KIND, either express or implied. See the Apache License for the specific</span></div>\n <div class=\"line\"><a id=\"l00022\" name=\"l00022\"></a><span class=\"lineno\">   22</span><span class=\"comment\">//   language governing permissions and limitations under the Apache License.</span></div>\n <div class=\"line\"><a id=\"l00023\" name=\"l00023\"></a><span class=\"lineno\">   23</span><span class=\"comment\">//</span></div>\n <div class=\"line\"><a id=\"l00024\" name=\"l00024\"></a><span class=\"lineno\">   24</span> </div>\n-<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_OSD_D3D11_VERTEX_BUFFER_H</span></div>\n-<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_OSD_D3D11_VERTEX_BUFFER_H</span></div>\n+<div class=\"line\"><a id=\"l00025\" name=\"l00025\"></a><span class=\"lineno\">   25</span><span class=\"preprocessor\">#ifndef OPENSUBDIV3_BFR_TESSELLATION_H</span></div>\n+<div class=\"line\"><a id=\"l00026\" name=\"l00026\"></a><span class=\"lineno\">   26</span><span class=\"preprocessor\">#define OPENSUBDIV3_BFR_TESSELLATION_H</span></div>\n <div class=\"line\"><a id=\"l00027\" name=\"l00027\"></a><span class=\"lineno\">   27</span> </div>\n <div class=\"line\"><a id=\"l00028\" name=\"l00028\"></a><span class=\"lineno\">   28</span><span class=\"preprocessor\">#include &quot;../version.h&quot;</span></div>\n <div class=\"line\"><a id=\"l00029\" name=\"l00029\"></a><span class=\"lineno\">   29</span> </div>\n-<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"keyword\">struct </span>ID3D11Buffer;</div>\n-<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span><span class=\"keyword\">struct </span>ID3D11Device;</div>\n-<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"keyword\">struct </span>ID3D11DeviceContext;</div>\n-<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"keyword\">struct </span>ID3D11UnorderedAccessView;</div>\n+<div class=\"line\"><a id=\"l00030\" name=\"l00030\"></a><span class=\"lineno\">   30</span><span class=\"preprocessor\">#include &quot;../bfr/parameterization.h&quot;</span></div>\n+<div class=\"line\"><a id=\"l00031\" name=\"l00031\"></a><span class=\"lineno\">   31</span> </div>\n+<div class=\"line\"><a id=\"l00032\" name=\"l00032\"></a><span class=\"lineno\">   32</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n+<div class=\"line\"><a id=\"l00033\" name=\"l00033\"></a><span class=\"lineno\">   33</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n <div class=\"line\"><a id=\"l00034\" name=\"l00034\"></a><span class=\"lineno\">   34</span> </div>\n-<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span><a class=\"code hl_namespace\" href=\"a00905.html\">OpenSubdiv</a> {</div>\n-<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span><span class=\"keyword\">namespace </span>OPENSUBDIV_VERSION {</div>\n-<div class=\"line\"><a id=\"l00037\" name=\"l00037\"></a><span class=\"lineno\">   37</span> </div>\n-<div class=\"line\"><a id=\"l00038\" name=\"l00038\"></a><span class=\"lineno\">   38</span><span class=\"keyword\">namespace </span>Osd {</div>\n-<div class=\"line\"><a id=\"l00039\" name=\"l00039\"></a><span class=\"lineno\">   39</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00046\" data-start=\"{\" data-end=\"};\">\n-<div class=\"line\"><a id=\"l00046\" name=\"l00046\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01213.html\">   46</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a01213.html\">D3D11VertexBuffer</a> {</div>\n-<div class=\"line\"><a id=\"l00047\" name=\"l00047\"></a><span class=\"lineno\">   47</span><span class=\"keyword\">public</span>:</div>\n-<div class=\"line\"><a id=\"l00049\" name=\"l00049\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01213.html#a915a9d78d36f58b1750237ae40555029\">   49</a></span>    <span class=\"keyword\">static</span> <a class=\"code hl_class\" href=\"a01213.html\">D3D11VertexBuffer</a> * <a class=\"code hl_function\" href=\"a01213.html#a915a9d78d36f58b1750237ae40555029\">Create</a>(<span class=\"keywordtype\">int</span> numElements, <span class=\"keywordtype\">int</span> numVertices,</div>\n-<div class=\"line\"><a id=\"l00050\" name=\"l00050\"></a><span class=\"lineno\">   50</span>                                      ID3D11DeviceContext *deviceContext);</div>\n-<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\">   51</span> </div>\n-<div class=\"line\"><a id=\"l00053\" name=\"l00053\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01213.html#ad9941ba7019b0fd8aad6e9321d91c26a\">   53</a></span>    <span class=\"keyword\">virtual</span> <a class=\"code hl_function\" href=\"a01213.html#ad9941ba7019b0fd8aad6e9321d91c26a\">~D3D11VertexBuffer</a>();</div>\n-<div class=\"line\"><a id=\"l00054\" name=\"l00054\"></a><span class=\"lineno\">   54</span> </div>\n-<div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01213.html#a8f44858290b870c214ee24afead3e9c3\">   57</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a01213.html#a8f44858290b870c214ee24afead3e9c3\">UpdateData</a>(<span class=\"keyword\">const</span> <span class=\"keywordtype\">float</span> *src, <span class=\"keywordtype\">int</span> startVertex, <span class=\"keywordtype\">int</span> numVertices,</div>\n-<div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span>                    ID3D11DeviceContext *deviceContext);</div>\n-<div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span> </div>\n-<div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01213.html#a77cee40767fd4936f20a8f9d9d9ea625\">   61</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01213.html#a77cee40767fd4936f20a8f9d9d9ea625\">GetNumElements</a>() <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00062\" name=\"l00062\"></a><span class=\"lineno\">   62</span> </div>\n-<div class=\"line\"><a id=\"l00064\" name=\"l00064\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01213.html#aaf4a32b8a414eff77000c584c2015cb7\">   64</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a01213.html#aaf4a32b8a414eff77000c584c2015cb7\">GetNumVertices</a>() <span class=\"keyword\">const</span>;</div>\n-<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\">   65</span> </div>\n-<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01213.html#ac86f03cfaa5678c28ffce2b69e3fb5bc\">   67</a></span>    ID3D11Buffer *<a class=\"code hl_function\" href=\"a01213.html#ac86f03cfaa5678c28ffce2b69e3fb5bc\">BindD3D11Buffer</a>(ID3D11DeviceContext *deviceContext);</div>\n-<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span> </div>\n-<div class=\"foldopen\" id=\"foldopen00070\" data-start=\"{\" data-end=\"}\">\n-<div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01213.html#aedcdb663cc4d3635fb5ba9149fb0d214\">   70</a></span>    ID3D11Buffer *<a class=\"code hl_function\" href=\"a01213.html#aedcdb663cc4d3635fb5ba9149fb0d214\">BindVBO</a>(ID3D11DeviceContext *deviceContext) {</div>\n-<div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span>        <span class=\"keywordflow\">return</span> <a class=\"code hl_function\" href=\"a01213.html#ac86f03cfaa5678c28ffce2b69e3fb5bc\">BindD3D11Buffer</a>(deviceContext);</div>\n-<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>    }</div>\n-</div>\n-<div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span> </div>\n-<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01213.html#adc0a258da9e9ac3bc19ff36418c54510\">   75</a></span>    ID3D11UnorderedAccessView *<a class=\"code hl_function\" href=\"a01213.html#adc0a258da9e9ac3bc19ff36418c54510\">BindD3D11UAV</a>(ID3D11DeviceContext *deviceContext);</div>\n-<div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span> </div>\n-<div class=\"line\"><a id=\"l00077\" name=\"l00077\"></a><span class=\"lineno\">   77</span><span class=\"keyword\">protected</span>:</div>\n-<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01213.html#aacfe93ef7f7ede21dcf7088b62467742\">   79</a></span>    <a class=\"code hl_function\" href=\"a01213.html#aacfe93ef7f7ede21dcf7088b62467742\">D3D11VertexBuffer</a>(<span class=\"keywordtype\">int</span> numElements, <span class=\"keywordtype\">int</span> numVertices);</div>\n-<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\">   80</span> </div>\n-<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span>    <span class=\"comment\">// Allocates D3D11 buffer</span></div>\n-<div class=\"line\"><a id=\"l00082\" name=\"l00082\"></a><span class=\"lineno\"><a class=\"line\" href=\"a01213.html#ae61b4ed6cc7cb69826cd0804c2d972b7\">   82</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a01213.html#ae61b4ed6cc7cb69826cd0804c2d972b7\">allocate</a>(ID3D11Device *device);</div>\n-<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span> </div>\n-<div class=\"line\"><a id=\"l00084\" name=\"l00084\"></a><span class=\"lineno\">   84</span><span class=\"keyword\">private</span>:</div>\n-<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\">   85</span>    <span class=\"keywordtype\">int</span> _numElements;</div>\n-<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>    <span class=\"keywordtype\">int</span> _numVertices;</div>\n-<div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span>    ID3D11Buffer *_buffer;</div>\n-<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>    ID3D11Buffer *_uploadBuffer;</div>\n-<div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span>    ID3D11UnorderedAccessView *_uav;</div>\n-<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>};</div>\n+<div class=\"line\"><a id=\"l00035\" name=\"l00035\"></a><span class=\"lineno\">   35</span><span class=\"keyword\">namespace </span>Bfr {</div>\n+<div class=\"line\"><a id=\"l00036\" name=\"l00036\"></a><span class=\"lineno\">   36</span> </div>\n+<div class=\"foldopen\" id=\"foldopen00051\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00051\" name=\"l00051\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00961.html\">   51</a></span><span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a00961.html\">Tessellation</a> {</div>\n+<div class=\"line\"><a id=\"l00052\" name=\"l00052\"></a><span class=\"lineno\">   52</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"foldopen\" id=\"foldopen00065\" data-start=\"{\" data-end=\"};\">\n+<div class=\"line\"><a id=\"l00065\" name=\"l00065\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00965.html\">   65</a></span>    <span class=\"keyword\">class </span><a class=\"code hl_class\" href=\"a00965.html\">Options</a> {</div>\n+<div class=\"line\"><a id=\"l00066\" name=\"l00066\"></a><span class=\"lineno\">   66</span>    <span class=\"keyword\">public</span>:</div>\n+<div class=\"foldopen\" id=\"foldopen00067\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00067\" name=\"l00067\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00965.html#a28d39a844c3a37ab61d32ab7c6352f09\">   67</a></span>        <a class=\"code hl_function\" href=\"a00965.html#a28d39a844c3a37ab61d32ab7c6352f09\">Options</a>() : _preserveQuads(false), _facetSize4(false),</div>\n+<div class=\"line\"><a id=\"l00068\" name=\"l00068\"></a><span class=\"lineno\">   68</span>                    _coordStride(0), _facetStride(0) { }</div>\n </div>\n+<div class=\"line\"><a id=\"l00069\" name=\"l00069\"></a><span class=\"lineno\">   69</span> </div>\n+<div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>        <a class=\"code hl_class\" href=\"a00965.html\">Options</a> &amp; <a class=\"code hl_function\" href=\"a00965.html#ae2ec197b850e8bd12878cc67a503a07a\">PreserveQuads</a>(<span class=\"keywordtype\">bool</span> on);</div>\n+<div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00965.html#ae2ec197b850e8bd12878cc67a503a07a\">   74</a></span>        <span class=\"keywordtype\">bool</span>      <a class=\"code hl_function\" href=\"a00965.html#ae2ec197b850e8bd12878cc67a503a07a\">PreserveQuads</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _preserveQuads; }</div>\n+<div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span> </div>\n+<div class=\"line\"><a id=\"l00078\" name=\"l00078\"></a><span class=\"lineno\">   78</span>        <a class=\"code hl_class\" href=\"a00965.html\">Options</a> &amp; <a class=\"code hl_function\" href=\"a00965.html#a50c6e039e8278312e95c1dd94b8478e0\">SetFacetSize</a>(<span class=\"keywordtype\">int</span> numIndices);</div>\n+<div class=\"line\"><a id=\"l00079\" name=\"l00079\"></a><span class=\"lineno\">   79</span>        <span class=\"comment\">//  @brief Return the number of indices per facet</span></div>\n+<div class=\"line\"><a id=\"l00080\" name=\"l00080\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00965.html#a671621e55bfbc48db77919d5fd31744f\">   80</a></span>        <span class=\"keywordtype\">int</span>       <a class=\"code hl_function\" href=\"a00965.html#a671621e55bfbc48db77919d5fd31744f\">GetFacetSize</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> 3 + (int)_facetSize4; }</div>\n+<div class=\"line\"><a id=\"l00081\" name=\"l00081\"></a><span class=\"lineno\">   81</span> </div>\n+<div class=\"line\"><a id=\"l00083\" name=\"l00083\"></a><span class=\"lineno\">   83</span>        <a class=\"code hl_class\" href=\"a00965.html\">Options</a> &amp; <a class=\"code hl_function\" href=\"a00965.html#ad6a995daa3f819edeeaf0a8c1aeb8b6a\">SetFacetStride</a>(<span class=\"keywordtype\">int</span> stride);</div>\n+<div class=\"line\"><a id=\"l00085\" name=\"l00085\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00965.html#a54b068769e4e728e78528f9bdde25b86\">   85</a></span>        <span class=\"keywordtype\">int</span>       <a class=\"code hl_function\" href=\"a00965.html#a54b068769e4e728e78528f9bdde25b86\">GetFacetStride</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _facetStride; }</div>\n+<div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span> </div>\n+<div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>        <a class=\"code hl_class\" href=\"a00965.html\">Options</a> &amp; <a class=\"code hl_function\" href=\"a00965.html#aa7688afdaece2c387e8963d634752aa6\">SetCoordStride</a>(<span class=\"keywordtype\">int</span> stride);</div>\n+<div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00965.html#a3f642ed70a22d6d9d3d2fe79029653f5\">   90</a></span>        <span class=\"keywordtype\">int</span>       <a class=\"code hl_function\" href=\"a00965.html#a3f642ed70a22d6d9d3d2fe79029653f5\">GetCoordStride</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _coordStride; }</div>\n <div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span> </div>\n-<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>}  <span class=\"comment\">// end namespace Osd</span></div>\n-<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span> </div>\n-<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>}  <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n-<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n-<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span> </div>\n-<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>}  <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n-<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span> </div>\n-<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_D3D11_VERTEX_BUFFER_H</span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n-<div class=\"ttc\" id=\"aa01213_html\"><div class=\"ttname\"><a href=\"a01213.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11VertexBuffer</a></div><div class=\"ttdoc\">Concrete vertex buffer class for DirectX subdivision and DirectX drawing.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00902_source.html#l00046\">d3d11VertexBuffer.h:46</a></div></div>\n-<div class=\"ttc\" id=\"aa01213_html_a77cee40767fd4936f20a8f9d9d9ea625\"><div class=\"ttname\"><a href=\"a01213.html#a77cee40767fd4936f20a8f9d9d9ea625\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11VertexBuffer::GetNumElements</a></div><div class=\"ttdeci\">int GetNumElements() const</div><div class=\"ttdoc\">Returns how many elements defined in this vertex buffer.</div></div>\n-<div class=\"ttc\" id=\"aa01213_html_a8f44858290b870c214ee24afead3e9c3\"><div class=\"ttname\"><a href=\"a01213.html#a8f44858290b870c214ee24afead3e9c3\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11VertexBuffer::UpdateData</a></div><div class=\"ttdeci\">void UpdateData(const float *src, int startVertex, int numVertices, ID3D11DeviceContext *deviceContext)</div></div>\n-<div class=\"ttc\" id=\"aa01213_html_a915a9d78d36f58b1750237ae40555029\"><div class=\"ttname\"><a href=\"a01213.html#a915a9d78d36f58b1750237ae40555029\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11VertexBuffer::Create</a></div><div class=\"ttdeci\">static D3D11VertexBuffer * Create(int numElements, int numVertices, ID3D11DeviceContext *deviceContext)</div><div class=\"ttdoc\">Creator. Returns NULL if error.</div></div>\n-<div class=\"ttc\" id=\"aa01213_html_aacfe93ef7f7ede21dcf7088b62467742\"><div class=\"ttname\"><a href=\"a01213.html#aacfe93ef7f7ede21dcf7088b62467742\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11VertexBuffer::D3D11VertexBuffer</a></div><div class=\"ttdeci\">D3D11VertexBuffer(int numElements, int numVertices)</div><div class=\"ttdoc\">Constructor.</div></div>\n-<div class=\"ttc\" id=\"aa01213_html_aaf4a32b8a414eff77000c584c2015cb7\"><div class=\"ttname\"><a href=\"a01213.html#aaf4a32b8a414eff77000c584c2015cb7\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11VertexBuffer::GetNumVertices</a></div><div class=\"ttdeci\">int GetNumVertices() const</div><div class=\"ttdoc\">Returns how many vertices allocated in this vertex buffer.</div></div>\n-<div class=\"ttc\" id=\"aa01213_html_ac86f03cfaa5678c28ffce2b69e3fb5bc\"><div class=\"ttname\"><a href=\"a01213.html#ac86f03cfaa5678c28ffce2b69e3fb5bc\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11VertexBuffer::BindD3D11Buffer</a></div><div class=\"ttdeci\">ID3D11Buffer * BindD3D11Buffer(ID3D11DeviceContext *deviceContext)</div><div class=\"ttdoc\">Returns the D3D11 buffer object.</div></div>\n-<div class=\"ttc\" id=\"aa01213_html_ad9941ba7019b0fd8aad6e9321d91c26a\"><div class=\"ttname\"><a href=\"a01213.html#ad9941ba7019b0fd8aad6e9321d91c26a\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11VertexBuffer::~D3D11VertexBuffer</a></div><div class=\"ttdeci\">virtual ~D3D11VertexBuffer()</div><div class=\"ttdoc\">Destructor.</div></div>\n-<div class=\"ttc\" id=\"aa01213_html_adc0a258da9e9ac3bc19ff36418c54510\"><div class=\"ttname\"><a href=\"a01213.html#adc0a258da9e9ac3bc19ff36418c54510\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11VertexBuffer::BindD3D11UAV</a></div><div class=\"ttdeci\">ID3D11UnorderedAccessView * BindD3D11UAV(ID3D11DeviceContext *deviceContext)</div><div class=\"ttdoc\">Returns the D3D11 UAV.</div></div>\n-<div class=\"ttc\" id=\"aa01213_html_ae61b4ed6cc7cb69826cd0804c2d972b7\"><div class=\"ttname\"><a href=\"a01213.html#ae61b4ed6cc7cb69826cd0804c2d972b7\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11VertexBuffer::allocate</a></div><div class=\"ttdeci\">bool allocate(ID3D11Device *device)</div></div>\n-<div class=\"ttc\" id=\"aa01213_html_aedcdb663cc4d3635fb5ba9149fb0d214\"><div class=\"ttname\"><a href=\"a01213.html#aedcdb663cc4d3635fb5ba9149fb0d214\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11VertexBuffer::BindVBO</a></div><div class=\"ttdeci\">ID3D11Buffer * BindVBO(ID3D11DeviceContext *deviceContext)</div><div class=\"ttdoc\">Returns the D3D11 buffer object (for Osd::Mesh interface)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00902_source.html#l00070\">d3d11VertexBuffer.h:70</a></div></div>\n+<div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span>    <span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00093\" name=\"l00093\"></a><span class=\"lineno\">   93</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> _preserveQuads : 1;</div>\n+<div class=\"line\"><a id=\"l00094\" name=\"l00094\"></a><span class=\"lineno\">   94</span>        <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">int</span> _facetSize4    : 1;</div>\n+<div class=\"line\"><a id=\"l00095\" name=\"l00095\"></a><span class=\"lineno\">   95</span> </div>\n+<div class=\"line\"><a id=\"l00096\" name=\"l00096\"></a><span class=\"lineno\">   96</span>        <span class=\"keywordtype\">short</span> _coordStride;</div>\n+<div class=\"line\"><a id=\"l00097\" name=\"l00097\"></a><span class=\"lineno\">   97</span>        <span class=\"keywordtype\">short</span> _facetStride;</div>\n+<div class=\"line\"><a id=\"l00098\" name=\"l00098\"></a><span class=\"lineno\">   98</span>    };</div>\n+</div>\n+<div class=\"line\"><a id=\"l00099\" name=\"l00099\"></a><span class=\"lineno\">   99</span> </div>\n+<div class=\"line\"><a id=\"l00100\" name=\"l00100\"></a><span class=\"lineno\">  100</span><span class=\"keyword\">public</span>:</div>\n+<div class=\"line\"><a id=\"l00102\" name=\"l00102\"></a><span class=\"lineno\">  102</span> </div>\n+<div class=\"line\"><a id=\"l00111\" name=\"l00111\"></a><span class=\"lineno\">  111</span> </div>\n+<div class=\"line\"><a id=\"l00118\" name=\"l00118\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00961.html#a7f0af117d53701f7ca6e3eb2368b89bb\">  118</a></span>    <a class=\"code hl_function\" href=\"a00961.html#a7f0af117d53701f7ca6e3eb2368b89bb\">Tessellation</a>(<a class=\"code hl_class\" href=\"a00921.html\">Parameterization</a> <span class=\"keyword\">const</span> &amp; p, <span class=\"keywordtype\">int</span> uniformRate,</div>\n+<div class=\"line\"><a id=\"l00119\" name=\"l00119\"></a><span class=\"lineno\">  119</span>                 <a class=\"code hl_class\" href=\"a00965.html\">Options</a> <span class=\"keyword\">const</span> &amp; options = <a class=\"code hl_class\" href=\"a00965.html\">Options</a>());</div>\n+<div class=\"line\"><a id=\"l00120\" name=\"l00120\"></a><span class=\"lineno\">  120</span> </div>\n+<div class=\"line\"><a id=\"l00158\" name=\"l00158\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00961.html#a65ee652b3607c97bb2b04a64c55d7f99\">  158</a></span>    <a class=\"code hl_function\" href=\"a00961.html#a65ee652b3607c97bb2b04a64c55d7f99\">Tessellation</a>(<a class=\"code hl_class\" href=\"a00921.html\">Parameterization</a> <span class=\"keyword\">const</span> &amp; p, <span class=\"keywordtype\">int</span> numRates, <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> rates[],</div>\n+<div class=\"line\"><a id=\"l00159\" name=\"l00159\"></a><span class=\"lineno\">  159</span>                 <a class=\"code hl_class\" href=\"a00965.html\">Options</a> <span class=\"keyword\">const</span> &amp; options = <a class=\"code hl_class\" href=\"a00965.html\">Options</a>());</div>\n+<div class=\"line\"><a id=\"l00160\" name=\"l00160\"></a><span class=\"lineno\">  160</span> </div>\n+<div class=\"line\"><a id=\"l00162\" name=\"l00162\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00961.html#ac532c4b500b1a85ea22217f2c65a70ed\">  162</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00961.html#ac532c4b500b1a85ea22217f2c65a70ed\">IsValid</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _isValid; }</div>\n+<div class=\"line\"><a id=\"l00163\" name=\"l00163\"></a><span class=\"lineno\">  163</span> </div>\n+<div class=\"line\"><a id=\"l00165\" name=\"l00165\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00961.html#a7a3e89992f3cc492804ec9bc184a1674\">  165</a></span>    <a class=\"code hl_function\" href=\"a00961.html#a7a3e89992f3cc492804ec9bc184a1674\">Tessellation</a>() = <span class=\"keyword\">delete</span>;</div>\n+<div class=\"line\"><a id=\"l00166\" name=\"l00166\"></a><span class=\"lineno\">  166</span> </div>\n+<div class=\"line\"><a id=\"l00167\" name=\"l00167\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00961.html#ab03191ef31cf0d8b0bcc44f226804e87\">  167</a></span>    <a class=\"code hl_function\" href=\"a00961.html#ab03191ef31cf0d8b0bcc44f226804e87\">Tessellation</a>(<a class=\"code hl_class\" href=\"a00961.html\">Tessellation</a> <span class=\"keyword\">const</span> &amp;) = <span class=\"keyword\">delete</span>;</div>\n+<div class=\"line\"><a id=\"l00168\" name=\"l00168\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00961.html#add7bb6250635b7a713a1d2f5424163de\">  168</a></span>    <a class=\"code hl_class\" href=\"a00961.html\">Tessellation</a> &amp; <a class=\"code hl_function\" href=\"a00961.html#add7bb6250635b7a713a1d2f5424163de\">operator=</a>(<a class=\"code hl_class\" href=\"a00961.html\">Tessellation</a> <span class=\"keyword\">const</span> &amp;) = <span class=\"keyword\">delete</span>;</div>\n+<div class=\"line\"><a id=\"l00169\" name=\"l00169\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00961.html#a23cbee9f350de81b12dea4bc69ba023f\">  169</a></span>    <a class=\"code hl_function\" href=\"a00961.html#a23cbee9f350de81b12dea4bc69ba023f\">~Tessellation</a>();</div>\n+<div class=\"line\"><a id=\"l00171\" name=\"l00171\"></a><span class=\"lineno\">  171</span> </div>\n+<div class=\"line\"><a id=\"l00173\" name=\"l00173\"></a><span class=\"lineno\">  173</span> </div>\n+<div class=\"line\"><a id=\"l00177\" name=\"l00177\"></a><span class=\"lineno\">  177</span> </div>\n+<div class=\"line\"><a id=\"l00179\" name=\"l00179\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00961.html#a66515298a982aab202e1e3e537c7d324\">  179</a></span>    <a class=\"code hl_class\" href=\"a00921.html\">Parameterization</a> <a class=\"code hl_function\" href=\"a00961.html#a66515298a982aab202e1e3e537c7d324\">GetParameterization</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _param; }</div>\n+<div class=\"line\"><a id=\"l00180\" name=\"l00180\"></a><span class=\"lineno\">  180</span> </div>\n+<div class=\"line\"><a id=\"l00182\" name=\"l00182\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00961.html#a181e30653909f9d0e0afa92dd44d28ec\">  182</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00961.html#a181e30653909f9d0e0afa92dd44d28ec\">GetFaceSize</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _param.<a class=\"code hl_function\" href=\"a00921.html#a181e30653909f9d0e0afa92dd44d28ec\">GetFaceSize</a>(); }</div>\n+<div class=\"line\"><a id=\"l00183\" name=\"l00183\"></a><span class=\"lineno\">  183</span> </div>\n+<div class=\"line\"><a id=\"l00185\" name=\"l00185\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00961.html#ab08dc4952f122dc09ce7e39daa3c56f1\">  185</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00961.html#ab08dc4952f122dc09ce7e39daa3c56f1\">GetRates</a>(<span class=\"keywordtype\">int</span> rates[]) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00186\" name=\"l00186\"></a><span class=\"lineno\">  186</span> </div>\n+<div class=\"line\"><a id=\"l00188\" name=\"l00188\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00961.html#a5dfa6810f510fac1ec621fc9e6b530c4\">  188</a></span>    <span class=\"keywordtype\">bool</span> <a class=\"code hl_function\" href=\"a00961.html#a5dfa6810f510fac1ec621fc9e6b530c4\">IsUniform</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _isUniform; }</div>\n+<div class=\"line\"><a id=\"l00190\" name=\"l00190\"></a><span class=\"lineno\">  190</span> </div>\n+<div class=\"line\"><a id=\"l00192\" name=\"l00192\"></a><span class=\"lineno\">  192</span> </div>\n+<div class=\"line\"><a id=\"l00203\" name=\"l00203\"></a><span class=\"lineno\">  203</span> </div>\n+<div class=\"line\"><a id=\"l00205\" name=\"l00205\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00961.html#a5e16c9ef594c36629fb3fb0955101db6\">  205</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00961.html#a5e16c9ef594c36629fb3fb0955101db6\">GetNumCoords</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _numInteriorPoints + _numBoundaryPoints; }</div>\n+<div class=\"line\"><a id=\"l00206\" name=\"l00206\"></a><span class=\"lineno\">  206</span> </div>\n+<div class=\"line\"><a id=\"l00208\" name=\"l00208\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00961.html#a3f642ed70a22d6d9d3d2fe79029653f5\">  208</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00961.html#a3f642ed70a22d6d9d3d2fe79029653f5\">GetCoordStride</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _coordStride; }</div>\n+<div class=\"line\"><a id=\"l00209\" name=\"l00209\"></a><span class=\"lineno\">  209</span> </div>\n+<div class=\"line\"><a id=\"l00211\" name=\"l00211\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00961.html#a23a949704d2705159dd4fe15299f4308\">  211</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00961.html#a23a949704d2705159dd4fe15299f4308\">GetNumBoundaryCoords</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _numBoundaryPoints; }</div>\n+<div class=\"line\"><a id=\"l00212\" name=\"l00212\"></a><span class=\"lineno\">  212</span> </div>\n+<div class=\"line\"><a id=\"l00214\" name=\"l00214\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00961.html#a95bd158ec25b0697574bfda5d1397c63\">  214</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00961.html#a95bd158ec25b0697574bfda5d1397c63\">GetNumInteriorCoords</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _numInteriorPoints; }</div>\n+<div class=\"line\"><a id=\"l00215\" name=\"l00215\"></a><span class=\"lineno\">  215</span> </div>\n+<div class=\"line\"><a id=\"l00218\" name=\"l00218\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00961.html#a49852dfe24985b64fe13d3ef589fb8b2\">  218</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00961.html#a49852dfe24985b64fe13d3ef589fb8b2\">GetNumEdgeCoords</a>(<span class=\"keywordtype\">int</span> edge)<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _outerRates[edge] - 1; }</div>\n+<div class=\"line\"><a id=\"l00219\" name=\"l00219\"></a><span class=\"lineno\">  219</span> </div>\n+<div class=\"line\"><a id=\"l00221\" name=\"l00221\"></a><span class=\"lineno\">  221</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00222\" name=\"l00222\"></a><span class=\"lineno\">  222</span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00961.html#a6087a536754ca9dc75010f34f55b5811\">GetCoords</a>(REAL coordTuples[]) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00223\" name=\"l00223\"></a><span class=\"lineno\">  223</span> </div>\n+<div class=\"line\"><a id=\"l00225\" name=\"l00225\"></a><span class=\"lineno\">  225</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00226\" name=\"l00226\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00961.html#aab7f4c322b4b552c5abcf2e3496de60c\">  226</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00961.html#aab7f4c322b4b552c5abcf2e3496de60c\">GetBoundaryCoords</a>(REAL coordTuples[]) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00227\" name=\"l00227\"></a><span class=\"lineno\">  227</span> </div>\n+<div class=\"line\"><a id=\"l00229\" name=\"l00229\"></a><span class=\"lineno\">  229</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00230\" name=\"l00230\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00961.html#a539f9a4fad8037e34e12ad9454f70ba1\">  230</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00961.html#a539f9a4fad8037e34e12ad9454f70ba1\">GetInteriorCoords</a>(REAL coordTuples[]) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00231\" name=\"l00231\"></a><span class=\"lineno\">  231</span> </div>\n+<div class=\"line\"><a id=\"l00233\" name=\"l00233\"></a><span class=\"lineno\">  233</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00234\" name=\"l00234\"></a><span class=\"lineno\">  234</span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00961.html#a981c6b6a9293adc992ee7f899a22707d\">GetVertexCoord</a>(<span class=\"keywordtype\">int</span> vertex, REAL coordTuples[]) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00235\" name=\"l00235\"></a><span class=\"lineno\">  235</span> </div>\n+<div class=\"line\"><a id=\"l00238\" name=\"l00238\"></a><span class=\"lineno\">  238</span>    <span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00239\" name=\"l00239\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00961.html#aefe76150c0f45fa43a4211b9f4cb4bc2\">  239</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00961.html#aefe76150c0f45fa43a4211b9f4cb4bc2\">GetEdgeCoords</a>(<span class=\"keywordtype\">int</span> edge,  REAL coordTuples[]) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00241\" name=\"l00241\"></a><span class=\"lineno\">  241</span> </div>\n+<div class=\"line\"><a id=\"l00243\" name=\"l00243\"></a><span class=\"lineno\">  243</span> </div>\n+<div class=\"line\"><a id=\"l00253\" name=\"l00253\"></a><span class=\"lineno\">  253</span> </div>\n+<div class=\"line\"><a id=\"l00255\" name=\"l00255\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00961.html#a8f84862ac65dcdc8cd9063b0264b711f\">  255</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00961.html#a8f84862ac65dcdc8cd9063b0264b711f\">GetNumFacets</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _numFacets; }</div>\n+<div class=\"line\"><a id=\"l00256\" name=\"l00256\"></a><span class=\"lineno\">  256</span> </div>\n+<div class=\"line\"><a id=\"l00258\" name=\"l00258\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00961.html#a671621e55bfbc48db77919d5fd31744f\">  258</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00961.html#a671621e55bfbc48db77919d5fd31744f\">GetFacetSize</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _facetSize; }</div>\n+<div class=\"line\"><a id=\"l00259\" name=\"l00259\"></a><span class=\"lineno\">  259</span> </div>\n+<div class=\"line\"><a id=\"l00261\" name=\"l00261\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00961.html#a54b068769e4e728e78528f9bdde25b86\">  261</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00961.html#a54b068769e4e728e78528f9bdde25b86\">GetFacetStride</a>()<span class=\"keyword\"> const </span>{ <span class=\"keywordflow\">return</span> _facetStride; }</div>\n+<div class=\"line\"><a id=\"l00262\" name=\"l00262\"></a><span class=\"lineno\">  262</span> </div>\n+<div class=\"line\"><a id=\"l00264\" name=\"l00264\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00961.html#a8deec91fff8094f942051dc22769402e\">  264</a></span>    <span class=\"keywordtype\">int</span> <a class=\"code hl_function\" href=\"a00961.html#a8deec91fff8094f942051dc22769402e\">GetFacets</a>(<span class=\"keywordtype\">int</span> facetTuples[]) <span class=\"keyword\">const</span>;</div>\n+<div class=\"line\"><a id=\"l00266\" name=\"l00266\"></a><span class=\"lineno\">  266</span> </div>\n+<div class=\"line\"><a id=\"l00268\" name=\"l00268\"></a><span class=\"lineno\">  268</span> </div>\n+<div class=\"line\"><a id=\"l00283\" name=\"l00283\"></a><span class=\"lineno\">  283</span> </div>\n+<div class=\"line\"><a id=\"l00285\" name=\"l00285\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00961.html#a621ab2f30043ff7f4ecdad9e64a73173\">  285</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00961.html#a621ab2f30043ff7f4ecdad9e64a73173\">TransformFacetCoordIndices</a>(<span class=\"keywordtype\">int</span> facetTuples[], <span class=\"keywordtype\">int</span> commonOffset);</div>\n+<div class=\"line\"><a id=\"l00286\" name=\"l00286\"></a><span class=\"lineno\">  286</span> </div>\n+<div class=\"line\"><a id=\"l00289\" name=\"l00289\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00961.html#a666de589b64bea493b1d23446a1ddb49\">  289</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00961.html#a666de589b64bea493b1d23446a1ddb49\">TransformFacetCoordIndices</a>(<span class=\"keywordtype\">int</span> facetTuples[],</div>\n+<div class=\"line\"><a id=\"l00290\" name=\"l00290\"></a><span class=\"lineno\">  290</span>                                    <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> boundaryIndices[],</div>\n+<div class=\"line\"><a id=\"l00291\" name=\"l00291\"></a><span class=\"lineno\">  291</span>                                    <span class=\"keywordtype\">int</span>       interiorOffset);</div>\n+<div class=\"line\"><a id=\"l00292\" name=\"l00292\"></a><span class=\"lineno\">  292</span> </div>\n+<div class=\"line\"><a id=\"l00294\" name=\"l00294\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00961.html#a2651a3405daf40d1ffbd47c57233d3c3\">  294</a></span>    <span class=\"keywordtype\">void</span> <a class=\"code hl_function\" href=\"a00961.html#a2651a3405daf40d1ffbd47c57233d3c3\">TransformFacetCoordIndices</a>(<span class=\"keywordtype\">int</span> facetTuples[],</div>\n+<div class=\"line\"><a id=\"l00295\" name=\"l00295\"></a><span class=\"lineno\">  295</span>                                    <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> boundaryIndices[],</div>\n+<div class=\"line\"><a id=\"l00296\" name=\"l00296\"></a><span class=\"lineno\">  296</span>                                    <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> interiorIndices[]);</div>\n+<div class=\"line\"><a id=\"l00298\" name=\"l00298\"></a><span class=\"lineno\">  298</span> </div>\n+<div class=\"line\"><a id=\"l00299\" name=\"l00299\"></a><span class=\"lineno\">  299</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00300\" name=\"l00300\"></a><span class=\"lineno\">  300</span>    <span class=\"comment\">//  Private initialization methods:</span></div>\n+<div class=\"line\"><a id=\"l00301\" name=\"l00301\"></a><span class=\"lineno\">  301</span>    <span class=\"keywordtype\">bool</span> validateArguments(<a class=\"code hl_class\" href=\"a00921.html\">Parameterization</a> <span class=\"keyword\">const</span> &amp; p,</div>\n+<div class=\"line\"><a id=\"l00302\" name=\"l00302\"></a><span class=\"lineno\">  302</span>                    <span class=\"keywordtype\">int</span> nRates, <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> rates[], <a class=\"code hl_class\" href=\"a00965.html\">Options</a> <span class=\"keyword\">const</span> &amp; options);</div>\n+<div class=\"line\"><a id=\"l00303\" name=\"l00303\"></a><span class=\"lineno\">  303</span> </div>\n+<div class=\"line\"><a id=\"l00304\" name=\"l00304\"></a><span class=\"lineno\">  304</span>    <span class=\"keywordtype\">void</span> initialize(<a class=\"code hl_class\" href=\"a00921.html\">Parameterization</a> <span class=\"keyword\">const</span> &amp; p,</div>\n+<div class=\"line\"><a id=\"l00305\" name=\"l00305\"></a><span class=\"lineno\">  305</span>                    <span class=\"keywordtype\">int</span> nRates, <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> rates[], <a class=\"code hl_class\" href=\"a00965.html\">Options</a> <span class=\"keyword\">const</span> &amp; options);</div>\n+<div class=\"line\"><a id=\"l00306\" name=\"l00306\"></a><span class=\"lineno\">  306</span> </div>\n+<div class=\"line\"><a id=\"l00307\" name=\"l00307\"></a><span class=\"lineno\">  307</span>    <span class=\"keywordtype\">void</span> initializeDefaults();</div>\n+<div class=\"line\"><a id=\"l00308\" name=\"l00308\"></a><span class=\"lineno\">  308</span>    <span class=\"keywordtype\">int</span>  initializeRates(<span class=\"keywordtype\">int</span> nRates, <span class=\"keywordtype\">int</span> <span class=\"keyword\">const</span> rates[]);</div>\n+<div class=\"line\"><a id=\"l00309\" name=\"l00309\"></a><span class=\"lineno\">  309</span>    <span class=\"keywordtype\">void</span> initializeInventoryForParamTri(<span class=\"keywordtype\">int</span> sumOfOuterRates);</div>\n+<div class=\"line\"><a id=\"l00310\" name=\"l00310\"></a><span class=\"lineno\">  310</span>    <span class=\"keywordtype\">void</span> initializeInventoryForParamQuad(<span class=\"keywordtype\">int</span> sumOfOuterRates);</div>\n+<div class=\"line\"><a id=\"l00311\" name=\"l00311\"></a><span class=\"lineno\">  311</span>    <span class=\"keywordtype\">void</span> initializeInventoryForParamQPoly(<span class=\"keywordtype\">int</span> sumOfOuterRates);</div>\n+<div class=\"line\"><a id=\"l00312\" name=\"l00312\"></a><span class=\"lineno\">  312</span> </div>\n+<div class=\"line\"><a id=\"l00313\" name=\"l00313\"></a><span class=\"lineno\">  313</span><span class=\"keyword\">private</span>:</div>\n+<div class=\"line\"><a id=\"l00314\" name=\"l00314\"></a><span class=\"lineno\">  314</span>    <span class=\"comment\">//  Private members:</span></div>\n+<div class=\"line\"><a id=\"l00315\" name=\"l00315\"></a><span class=\"lineno\">  315</span>    <a class=\"code hl_class\" href=\"a00921.html\">Parameterization</a> _param;</div>\n+<div class=\"line\"><a id=\"l00316\" name=\"l00316\"></a><span class=\"lineno\">  316</span> </div>\n+<div class=\"line\"><a id=\"l00317\" name=\"l00317\"></a><span class=\"lineno\">  317</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> _isValid       :  1;</div>\n+<div class=\"line\"><a id=\"l00318\" name=\"l00318\"></a><span class=\"lineno\">  318</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> _isUniform     :  1;</div>\n+<div class=\"line\"><a id=\"l00319\" name=\"l00319\"></a><span class=\"lineno\">  319</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> _triangulate   :  1;</div>\n+<div class=\"line\"><a id=\"l00320\" name=\"l00320\"></a><span class=\"lineno\">  320</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> _singleFace    :  1;</div>\n+<div class=\"line\"><a id=\"l00321\" name=\"l00321\"></a><span class=\"lineno\">  321</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> _segmentedFace :  1;</div>\n+<div class=\"line\"><a id=\"l00322\" name=\"l00322\"></a><span class=\"lineno\">  322</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> _triangleFan   :  1;</div>\n+<div class=\"line\"><a id=\"l00323\" name=\"l00323\"></a><span class=\"lineno\">  323</span>    <span class=\"keywordtype\">unsigned</span> <span class=\"keywordtype\">short</span> _splitQuad     :  1;</div>\n+<div class=\"line\"><a id=\"l00324\" name=\"l00324\"></a><span class=\"lineno\">  324</span> </div>\n+<div class=\"line\"><a id=\"l00325\" name=\"l00325\"></a><span class=\"lineno\">  325</span>    <span class=\"keywordtype\">short</span> _facetSize;</div>\n+<div class=\"line\"><a id=\"l00326\" name=\"l00326\"></a><span class=\"lineno\">  326</span>    <span class=\"keywordtype\">int</span>   _facetStride;</div>\n+<div class=\"line\"><a id=\"l00327\" name=\"l00327\"></a><span class=\"lineno\">  327</span>    <span class=\"keywordtype\">int</span>   _coordStride;</div>\n+<div class=\"line\"><a id=\"l00328\" name=\"l00328\"></a><span class=\"lineno\">  328</span> </div>\n+<div class=\"line\"><a id=\"l00329\" name=\"l00329\"></a><span class=\"lineno\">  329</span>    <span class=\"keywordtype\">int</span> _numGivenRates;</div>\n+<div class=\"line\"><a id=\"l00330\" name=\"l00330\"></a><span class=\"lineno\">  330</span>    <span class=\"keywordtype\">int</span> _numBoundaryPoints;</div>\n+<div class=\"line\"><a id=\"l00331\" name=\"l00331\"></a><span class=\"lineno\">  331</span>    <span class=\"keywordtype\">int</span> _numInteriorPoints;</div>\n+<div class=\"line\"><a id=\"l00332\" name=\"l00332\"></a><span class=\"lineno\">  332</span>    <span class=\"keywordtype\">int</span> _numFacets;</div>\n+<div class=\"line\"><a id=\"l00333\" name=\"l00333\"></a><span class=\"lineno\">  333</span> </div>\n+<div class=\"line\"><a id=\"l00334\" name=\"l00334\"></a><span class=\"lineno\">  334</span>    <span class=\"keywordtype\">int</span>  _innerRates[2];</div>\n+<div class=\"line\"><a id=\"l00335\" name=\"l00335\"></a><span class=\"lineno\">  335</span>    <span class=\"keywordtype\">int</span>* _outerRates;</div>\n+<div class=\"line\"><a id=\"l00336\" name=\"l00336\"></a><span class=\"lineno\">  336</span>    <span class=\"keywordtype\">int</span>  _outerRatesLocal[4];</div>\n+<div class=\"line\"><a id=\"l00337\" name=\"l00337\"></a><span class=\"lineno\">  337</span>};</div>\n+</div>\n+<div class=\"line\"><a id=\"l00338\" name=\"l00338\"></a><span class=\"lineno\">  338</span> </div>\n+<div class=\"line\"><a id=\"l00339\" name=\"l00339\"></a><span class=\"lineno\">  339</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00340\" name=\"l00340\"></a><span class=\"lineno\">  340</span><span class=\"comment\">//  Inline implementations:</span></div>\n+<div class=\"line\"><a id=\"l00341\" name=\"l00341\"></a><span class=\"lineno\">  341</span><span class=\"comment\">//</span></div>\n+<div class=\"line\"><a id=\"l00342\" name=\"l00342\"></a><span class=\"lineno\">  342</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a00965.html\">Tessellation::Options</a> &amp;</div>\n+<div class=\"foldopen\" id=\"foldopen00343\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00343\" name=\"l00343\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00965.html#a98820ec764e776bd556a9b80b872b78f\">  343</a></span><a class=\"code hl_function\" href=\"a00965.html#ae2ec197b850e8bd12878cc67a503a07a\">Tessellation::Options::PreserveQuads</a>(<span class=\"keywordtype\">bool</span> on) {</div>\n+<div class=\"line\"><a id=\"l00344\" name=\"l00344\"></a><span class=\"lineno\">  344</span>    _preserveQuads = on;</div>\n+<div class=\"line\"><a id=\"l00345\" name=\"l00345\"></a><span class=\"lineno\">  345</span>    <span class=\"keywordflow\">return</span> *<span class=\"keyword\">this</span>;</div>\n+<div class=\"line\"><a id=\"l00346\" name=\"l00346\"></a><span class=\"lineno\">  346</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00347\" name=\"l00347\"></a><span class=\"lineno\">  347</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a00965.html\">Tessellation::Options</a> &amp;</div>\n+<div class=\"foldopen\" id=\"foldopen00348\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00348\" name=\"l00348\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00965.html#a50c6e039e8278312e95c1dd94b8478e0\">  348</a></span><a class=\"code hl_function\" href=\"a00965.html#a50c6e039e8278312e95c1dd94b8478e0\">Tessellation::Options::SetFacetSize</a>(<span class=\"keywordtype\">int</span> numIndices) {</div>\n+<div class=\"line\"><a id=\"l00349\" name=\"l00349\"></a><span class=\"lineno\">  349</span>    _facetSize4 = (numIndices == 4);</div>\n+<div class=\"line\"><a id=\"l00350\" name=\"l00350\"></a><span class=\"lineno\">  350</span>    <span class=\"keywordflow\">return</span> *<span class=\"keyword\">this</span>;</div>\n+<div class=\"line\"><a id=\"l00351\" name=\"l00351\"></a><span class=\"lineno\">  351</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00352\" name=\"l00352\"></a><span class=\"lineno\">  352</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a00965.html\">Tessellation::Options</a> &amp;</div>\n+<div class=\"foldopen\" id=\"foldopen00353\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00353\" name=\"l00353\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00965.html#ad6a995daa3f819edeeaf0a8c1aeb8b6a\">  353</a></span><a class=\"code hl_function\" href=\"a00965.html#ad6a995daa3f819edeeaf0a8c1aeb8b6a\">Tessellation::Options::SetFacetStride</a>(<span class=\"keywordtype\">int</span> stride)  {</div>\n+<div class=\"line\"><a id=\"l00354\" name=\"l00354\"></a><span class=\"lineno\">  354</span>    _facetStride = (short) stride;</div>\n+<div class=\"line\"><a id=\"l00355\" name=\"l00355\"></a><span class=\"lineno\">  355</span>    <span class=\"keywordflow\">return</span> *<span class=\"keyword\">this</span>;</div>\n+<div class=\"line\"><a id=\"l00356\" name=\"l00356\"></a><span class=\"lineno\">  356</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00357\" name=\"l00357\"></a><span class=\"lineno\">  357</span><span class=\"keyword\">inline</span> <a class=\"code hl_class\" href=\"a00965.html\">Tessellation::Options</a> &amp;</div>\n+<div class=\"foldopen\" id=\"foldopen00358\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00358\" name=\"l00358\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00965.html#aa7688afdaece2c387e8963d634752aa6\">  358</a></span><a class=\"code hl_function\" href=\"a00965.html#aa7688afdaece2c387e8963d634752aa6\">Tessellation::Options::SetCoordStride</a>(<span class=\"keywordtype\">int</span> stride) {</div>\n+<div class=\"line\"><a id=\"l00359\" name=\"l00359\"></a><span class=\"lineno\">  359</span>    _coordStride = (short) stride;</div>\n+<div class=\"line\"><a id=\"l00360\" name=\"l00360\"></a><span class=\"lineno\">  360</span>    <span class=\"keywordflow\">return</span> *<span class=\"keyword\">this</span>;</div>\n+<div class=\"line\"><a id=\"l00361\" name=\"l00361\"></a><span class=\"lineno\">  361</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00362\" name=\"l00362\"></a><span class=\"lineno\">  362</span> </div>\n+<div class=\"line\"><a id=\"l00363\" name=\"l00363\"></a><span class=\"lineno\">  363</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00364\" name=\"l00364\"></a><span class=\"lineno\">  364</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span></div>\n+<div class=\"foldopen\" id=\"foldopen00365\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00365\" name=\"l00365\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00961.html#a981c6b6a9293adc992ee7f899a22707d\">  365</a></span><a class=\"code hl_function\" href=\"a00961.html#a981c6b6a9293adc992ee7f899a22707d\">Tessellation::GetVertexCoord</a>(<span class=\"keywordtype\">int</span> vertex, REAL coord[])<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00366\" name=\"l00366\"></a><span class=\"lineno\">  366</span>    _param.<a class=\"code hl_function\" href=\"a00921.html#a9cb32ed5657438f0a1b7f322b221dc75\">GetVertexCoord</a>(vertex, coord);</div>\n+<div class=\"line\"><a id=\"l00367\" name=\"l00367\"></a><span class=\"lineno\">  367</span>    <span class=\"keywordflow\">return</span> 1;</div>\n+<div class=\"line\"><a id=\"l00368\" name=\"l00368\"></a><span class=\"lineno\">  368</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00369\" name=\"l00369\"></a><span class=\"lineno\">  369</span> </div>\n+<div class=\"line\"><a id=\"l00370\" name=\"l00370\"></a><span class=\"lineno\">  370</span><span class=\"keyword\">template</span> &lt;<span class=\"keyword\">typename</span> REAL&gt;</div>\n+<div class=\"line\"><a id=\"l00371\" name=\"l00371\"></a><span class=\"lineno\">  371</span><span class=\"keyword\">inline</span> <span class=\"keywordtype\">int</span></div>\n+<div class=\"foldopen\" id=\"foldopen00372\" data-start=\"{\" data-end=\"}\">\n+<div class=\"line\"><a id=\"l00372\" name=\"l00372\"></a><span class=\"lineno\"><a class=\"line\" href=\"a00961.html#a6087a536754ca9dc75010f34f55b5811\">  372</a></span><a class=\"code hl_function\" href=\"a00961.html#a6087a536754ca9dc75010f34f55b5811\">Tessellation::GetCoords</a>(REAL coordTuples[])<span class=\"keyword\"> const </span>{</div>\n+<div class=\"line\"><a id=\"l00373\" name=\"l00373\"></a><span class=\"lineno\">  373</span>    <span class=\"keywordtype\">int</span> nCoords = <a class=\"code hl_function\" href=\"a00961.html#aab7f4c322b4b552c5abcf2e3496de60c\">GetBoundaryCoords</a>(coordTuples);</div>\n+<div class=\"line\"><a id=\"l00374\" name=\"l00374\"></a><span class=\"lineno\">  374</span>    nCoords += <a class=\"code hl_function\" href=\"a00961.html#a539f9a4fad8037e34e12ad9454f70ba1\">GetInteriorCoords</a>(coordTuples + nCoords * _coordStride);</div>\n+<div class=\"line\"><a id=\"l00375\" name=\"l00375\"></a><span class=\"lineno\">  375</span>    <span class=\"keywordflow\">return</span> nCoords;</div>\n+<div class=\"line\"><a id=\"l00376\" name=\"l00376\"></a><span class=\"lineno\">  376</span>}</div>\n+</div>\n+<div class=\"line\"><a id=\"l00377\" name=\"l00377\"></a><span class=\"lineno\">  377</span> </div>\n+<div class=\"line\"><a id=\"l00378\" name=\"l00378\"></a><span class=\"lineno\">  378</span>} <span class=\"comment\">// end namespace Bfr</span></div>\n+<div class=\"line\"><a id=\"l00379\" name=\"l00379\"></a><span class=\"lineno\">  379</span> </div>\n+<div class=\"line\"><a id=\"l00380\" name=\"l00380\"></a><span class=\"lineno\">  380</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n+<div class=\"line\"><a id=\"l00381\" name=\"l00381\"></a><span class=\"lineno\">  381</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n+<div class=\"line\"><a id=\"l00382\" name=\"l00382\"></a><span class=\"lineno\">  382</span> </div>\n+<div class=\"line\"><a id=\"l00383\" name=\"l00383\"></a><span class=\"lineno\">  383</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n+<div class=\"line\"><a id=\"l00384\" name=\"l00384\"></a><span class=\"lineno\">  384</span> </div>\n+<div class=\"line\"><a id=\"l00385\" name=\"l00385\"></a><span class=\"lineno\">  385</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_BFR_TESSELLATION */</span><span class=\"preprocessor\"></span></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa00921_html\"><div class=\"ttname\"><a href=\"a00921.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization</a></div><div class=\"ttdoc\">Simple class defining the 2D parameterization of a face.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00899_source.html#l00052\">parameterization.h:52</a></div></div>\n+<div class=\"ttc\" id=\"aa00921_html_a181e30653909f9d0e0afa92dd44d28ec\"><div class=\"ttname\"><a href=\"a00921.html#a181e30653909f9d0e0afa92dd44d28ec\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization::GetFaceSize</a></div><div class=\"ttdeci\">int GetFaceSize() const</div><div class=\"ttdoc\">Returns the size (number of vertices) of the corresponding face.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00899_source.html#l00101\">parameterization.h:101</a></div></div>\n+<div class=\"ttc\" id=\"aa00921_html_a9cb32ed5657438f0a1b7f322b221dc75\"><div class=\"ttname\"><a href=\"a00921.html#a9cb32ed5657438f0a1b7f322b221dc75\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization::GetVertexCoord</a></div><div class=\"ttdeci\">void GetVertexCoord(int vertexIndex, REAL uvCoord[2]) const</div><div class=\"ttdoc\">Returns the (u,v) coordinate of a given vertex.</div></div>\n+<div class=\"ttc\" id=\"aa00961_html\"><div class=\"ttname\"><a href=\"a00961.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation</a></div><div class=\"ttdoc\">Encapsulates a specific tessellation pattern of a Parameterization.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00902_source.html#l00051\">tessellation.h:51</a></div></div>\n+<div class=\"ttc\" id=\"aa00961_html_a181e30653909f9d0e0afa92dd44d28ec\"><div class=\"ttname\"><a href=\"a00961.html#a181e30653909f9d0e0afa92dd44d28ec\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::GetFaceSize</a></div><div class=\"ttdeci\">int GetFaceSize() const</div><div class=\"ttdoc\">Return the size of the face.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00902_source.html#l00182\">tessellation.h:182</a></div></div>\n+<div class=\"ttc\" id=\"aa00961_html_a23a949704d2705159dd4fe15299f4308\"><div class=\"ttname\"><a href=\"a00961.html#a23a949704d2705159dd4fe15299f4308\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::GetNumBoundaryCoords</a></div><div class=\"ttdeci\">int GetNumBoundaryCoords() const</div><div class=\"ttdoc\">Return the number of boundary coordinates.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00902_source.html#l00211\">tessellation.h:211</a></div></div>\n+<div class=\"ttc\" id=\"aa00961_html_a23cbee9f350de81b12dea4bc69ba023f\"><div class=\"ttname\"><a href=\"a00961.html#a23cbee9f350de81b12dea4bc69ba023f\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::~Tessellation</a></div><div class=\"ttdeci\">~Tessellation()</div></div>\n+<div class=\"ttc\" id=\"aa00961_html_a2651a3405daf40d1ffbd47c57233d3c3\"><div class=\"ttname\"><a href=\"a00961.html#a2651a3405daf40d1ffbd47c57233d3c3\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::TransformFacetCoordIndices</a></div><div class=\"ttdeci\">void TransformFacetCoordIndices(int facetTuples[], int const boundaryIndices[], int const interiorIndices[])</div><div class=\"ttdoc\">Reassign all facet coordinate indices.</div></div>\n+<div class=\"ttc\" id=\"aa00961_html_a3f642ed70a22d6d9d3d2fe79029653f5\"><div class=\"ttname\"><a href=\"a00961.html#a3f642ed70a22d6d9d3d2fe79029653f5\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::GetCoordStride</a></div><div class=\"ttdeci\">int GetCoordStride() const</div><div class=\"ttdoc\">Return the number of elements between each coordinate.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00902_source.html#l00208\">tessellation.h:208</a></div></div>\n+<div class=\"ttc\" id=\"aa00961_html_a49852dfe24985b64fe13d3ef589fb8b2\"><div class=\"ttname\"><a href=\"a00961.html#a49852dfe24985b64fe13d3ef589fb8b2\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::GetNumEdgeCoords</a></div><div class=\"ttdeci\">int GetNumEdgeCoords(int edge) const</div><div class=\"ttdoc\">Return the number of coordinates within a given edge (excluding those at its end vertices)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00902_source.html#l00218\">tessellation.h:218</a></div></div>\n+<div class=\"ttc\" id=\"aa00961_html_a539f9a4fad8037e34e12ad9454f70ba1\"><div class=\"ttname\"><a href=\"a00961.html#a539f9a4fad8037e34e12ad9454f70ba1\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::GetInteriorCoords</a></div><div class=\"ttdeci\">int GetInteriorCoords(REAL coordTuples[]) const</div><div class=\"ttdoc\">Retrieve the coordinates for the boundary.</div></div>\n+<div class=\"ttc\" id=\"aa00961_html_a54b068769e4e728e78528f9bdde25b86\"><div class=\"ttname\"><a href=\"a00961.html#a54b068769e4e728e78528f9bdde25b86\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::GetFacetStride</a></div><div class=\"ttdeci\">int GetFacetStride() const</div><div class=\"ttdoc\">Return the number of elements between each facet.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00902_source.html#l00261\">tessellation.h:261</a></div></div>\n+<div class=\"ttc\" id=\"aa00961_html_a5dfa6810f510fac1ec621fc9e6b530c4\"><div class=\"ttname\"><a href=\"a00961.html#a5dfa6810f510fac1ec621fc9e6b530c4\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::IsUniform</a></div><div class=\"ttdeci\">bool IsUniform() const</div><div class=\"ttdoc\">Return if the pattern is uniform.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00902_source.html#l00188\">tessellation.h:188</a></div></div>\n+<div class=\"ttc\" id=\"aa00961_html_a5e16c9ef594c36629fb3fb0955101db6\"><div class=\"ttname\"><a href=\"a00961.html#a5e16c9ef594c36629fb3fb0955101db6\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::GetNumCoords</a></div><div class=\"ttdeci\">int GetNumCoords() const</div><div class=\"ttdoc\">Return the number of coordinates in the entire pattern.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00902_source.html#l00205\">tessellation.h:205</a></div></div>\n+<div class=\"ttc\" id=\"aa00961_html_a6087a536754ca9dc75010f34f55b5811\"><div class=\"ttname\"><a href=\"a00961.html#a6087a536754ca9dc75010f34f55b5811\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::GetCoords</a></div><div class=\"ttdeci\">int GetCoords(REAL coordTuples[]) const</div><div class=\"ttdoc\">Retrieve the coordinates for the entire pattern.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00902_source.html#l00372\">tessellation.h:372</a></div></div>\n+<div class=\"ttc\" id=\"aa00961_html_a621ab2f30043ff7f4ecdad9e64a73173\"><div class=\"ttname\"><a href=\"a00961.html#a621ab2f30043ff7f4ecdad9e64a73173\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::TransformFacetCoordIndices</a></div><div class=\"ttdeci\">void TransformFacetCoordIndices(int facetTuples[], int commonOffset)</div><div class=\"ttdoc\">Apply a common offset to all facet coordinate indices.</div></div>\n+<div class=\"ttc\" id=\"aa00961_html_a65ee652b3607c97bb2b04a64c55d7f99\"><div class=\"ttname\"><a href=\"a00961.html#a65ee652b3607c97bb2b04a64c55d7f99\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::Tessellation</a></div><div class=\"ttdeci\">Tessellation(Parameterization const &amp;p, int numRates, int const rates[], Options const &amp;options=Options())</div><div class=\"ttdoc\">General constructor providing multiple tessellation rates for a non-uniform tessellation.</div></div>\n+<div class=\"ttc\" id=\"aa00961_html_a66515298a982aab202e1e3e537c7d324\"><div class=\"ttname\"><a href=\"a00961.html#a66515298a982aab202e1e3e537c7d324\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::GetParameterization</a></div><div class=\"ttdeci\">Parameterization GetParameterization() const</div><div class=\"ttdoc\">Return the Parameterization.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00902_source.html#l00179\">tessellation.h:179</a></div></div>\n+<div class=\"ttc\" id=\"aa00961_html_a666de589b64bea493b1d23446a1ddb49\"><div class=\"ttname\"><a href=\"a00961.html#a666de589b64bea493b1d23446a1ddb49\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::TransformFacetCoordIndices</a></div><div class=\"ttdeci\">void TransformFacetCoordIndices(int facetTuples[], int const boundaryIndices[], int interiorOffset)</div><div class=\"ttdoc\">Reassign indices of boundary coordinates while offseting those of interior coordinates.</div></div>\n+<div class=\"ttc\" id=\"aa00961_html_a671621e55bfbc48db77919d5fd31744f\"><div class=\"ttname\"><a href=\"a00961.html#a671621e55bfbc48db77919d5fd31744f\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::GetFacetSize</a></div><div class=\"ttdeci\">int GetFacetSize() const</div><div class=\"ttdoc\">Return the number of indices assigned to each facet.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00902_source.html#l00258\">tessellation.h:258</a></div></div>\n+<div class=\"ttc\" id=\"aa00961_html_a7a3e89992f3cc492804ec9bc184a1674\"><div class=\"ttname\"><a href=\"a00961.html#a7a3e89992f3cc492804ec9bc184a1674\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::Tessellation</a></div><div class=\"ttdeci\">Tessellation()=delete</div><div class=\"ttdoc\">Default construction is unavailable.</div></div>\n+<div class=\"ttc\" id=\"aa00961_html_a7f0af117d53701f7ca6e3eb2368b89bb\"><div class=\"ttname\"><a href=\"a00961.html#a7f0af117d53701f7ca6e3eb2368b89bb\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::Tessellation</a></div><div class=\"ttdeci\">Tessellation(Parameterization const &amp;p, int uniformRate, Options const &amp;options=Options())</div><div class=\"ttdoc\">Simple constructor providing a single uniform tessellation rate.</div></div>\n+<div class=\"ttc\" id=\"aa00961_html_a8deec91fff8094f942051dc22769402e\"><div class=\"ttname\"><a href=\"a00961.html#a8deec91fff8094f942051dc22769402e\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::GetFacets</a></div><div class=\"ttdeci\">int GetFacets(int facetTuples[]) const</div><div class=\"ttdoc\">Retrieve the facet indices for the entire pattern.</div></div>\n+<div class=\"ttc\" id=\"aa00961_html_a8f84862ac65dcdc8cd9063b0264b711f\"><div class=\"ttname\"><a href=\"a00961.html#a8f84862ac65dcdc8cd9063b0264b711f\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::GetNumFacets</a></div><div class=\"ttdeci\">int GetNumFacets() const</div><div class=\"ttdoc\">Return the number of facets in the entire pattern.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00902_source.html#l00255\">tessellation.h:255</a></div></div>\n+<div class=\"ttc\" id=\"aa00961_html_a95bd158ec25b0697574bfda5d1397c63\"><div class=\"ttname\"><a href=\"a00961.html#a95bd158ec25b0697574bfda5d1397c63\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::GetNumInteriorCoords</a></div><div class=\"ttdeci\">int GetNumInteriorCoords() const</div><div class=\"ttdoc\">Return the number of interior coordinates.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00902_source.html#l00214\">tessellation.h:214</a></div></div>\n+<div class=\"ttc\" id=\"aa00961_html_a981c6b6a9293adc992ee7f899a22707d\"><div class=\"ttname\"><a href=\"a00961.html#a981c6b6a9293adc992ee7f899a22707d\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::GetVertexCoord</a></div><div class=\"ttdeci\">int GetVertexCoord(int vertex, REAL coordTuples[]) const</div><div class=\"ttdoc\">Retrieve the coordinate for a given vertex of the face.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00902_source.html#l00365\">tessellation.h:365</a></div></div>\n+<div class=\"ttc\" id=\"aa00961_html_aab7f4c322b4b552c5abcf2e3496de60c\"><div class=\"ttname\"><a href=\"a00961.html#aab7f4c322b4b552c5abcf2e3496de60c\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::GetBoundaryCoords</a></div><div class=\"ttdeci\">int GetBoundaryCoords(REAL coordTuples[]) const</div><div class=\"ttdoc\">Retrieve the coordinates for the boundary.</div></div>\n+<div class=\"ttc\" id=\"aa00961_html_ab03191ef31cf0d8b0bcc44f226804e87\"><div class=\"ttname\"><a href=\"a00961.html#ab03191ef31cf0d8b0bcc44f226804e87\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::Tessellation</a></div><div class=\"ttdeci\">Tessellation(Tessellation const &amp;)=delete</div></div>\n+<div class=\"ttc\" id=\"aa00961_html_ab08dc4952f122dc09ce7e39daa3c56f1\"><div class=\"ttname\"><a href=\"a00961.html#ab08dc4952f122dc09ce7e39daa3c56f1\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::GetRates</a></div><div class=\"ttdeci\">int GetRates(int rates[]) const</div><div class=\"ttdoc\">Retrieve the rates assigned.</div></div>\n+<div class=\"ttc\" id=\"aa00961_html_ac532c4b500b1a85ea22217f2c65a70ed\"><div class=\"ttname\"><a href=\"a00961.html#ac532c4b500b1a85ea22217f2c65a70ed\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::IsValid</a></div><div class=\"ttdeci\">bool IsValid() const</div><div class=\"ttdoc\">Return true if correctly initialized.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00902_source.html#l00162\">tessellation.h:162</a></div></div>\n+<div class=\"ttc\" id=\"aa00961_html_add7bb6250635b7a713a1d2f5424163de\"><div class=\"ttname\"><a href=\"a00961.html#add7bb6250635b7a713a1d2f5424163de\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::operator=</a></div><div class=\"ttdeci\">Tessellation &amp; operator=(Tessellation const &amp;)=delete</div></div>\n+<div class=\"ttc\" id=\"aa00961_html_aefe76150c0f45fa43a4211b9f4cb4bc2\"><div class=\"ttname\"><a href=\"a00961.html#aefe76150c0f45fa43a4211b9f4cb4bc2\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::GetEdgeCoords</a></div><div class=\"ttdeci\">int GetEdgeCoords(int edge, REAL coordTuples[]) const</div><div class=\"ttdoc\">Retrieve the coordinates for a given edge of the face (excluding those at its end vertices)</div></div>\n+<div class=\"ttc\" id=\"aa00965_html\"><div class=\"ttname\"><a href=\"a00965.html\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::Options</a></div><div class=\"ttdoc\">Options configure a Tessellation to specify the nature of both its results and the structure of the c...</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00902_source.html#l00065\">tessellation.h:65</a></div></div>\n+<div class=\"ttc\" id=\"aa00965_html_a28d39a844c3a37ab61d32ab7c6352f09\"><div class=\"ttname\"><a href=\"a00965.html#a28d39a844c3a37ab61d32ab7c6352f09\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::Options::Options</a></div><div class=\"ttdeci\">Options()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00902_source.html#l00067\">tessellation.h:67</a></div></div>\n+<div class=\"ttc\" id=\"aa00965_html_a3f642ed70a22d6d9d3d2fe79029653f5\"><div class=\"ttname\"><a href=\"a00965.html#a3f642ed70a22d6d9d3d2fe79029653f5\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::Options::GetCoordStride</a></div><div class=\"ttdeci\">int GetCoordStride() const</div><div class=\"ttdoc\">Return the stride between (u,v) pairs.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00902_source.html#l00090\">tessellation.h:90</a></div></div>\n+<div class=\"ttc\" id=\"aa00965_html_a50c6e039e8278312e95c1dd94b8478e0\"><div class=\"ttname\"><a href=\"a00965.html#a50c6e039e8278312e95c1dd94b8478e0\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::Options::SetFacetSize</a></div><div class=\"ttdeci\">Options &amp; SetFacetSize(int numIndices)</div><div class=\"ttdoc\">Assign the number of indices per facet (must be 3 or 4, default is 3)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00902_source.html#l00348\">tessellation.h:348</a></div></div>\n+<div class=\"ttc\" id=\"aa00965_html_a54b068769e4e728e78528f9bdde25b86\"><div class=\"ttname\"><a href=\"a00965.html#a54b068769e4e728e78528f9bdde25b86\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::Options::GetFacetStride</a></div><div class=\"ttdeci\">int GetFacetStride() const</div><div class=\"ttdoc\">Return the stride between facets.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00902_source.html#l00085\">tessellation.h:85</a></div></div>\n+<div class=\"ttc\" id=\"aa00965_html_a671621e55bfbc48db77919d5fd31744f\"><div class=\"ttname\"><a href=\"a00965.html#a671621e55bfbc48db77919d5fd31744f\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::Options::GetFacetSize</a></div><div class=\"ttdeci\">int GetFacetSize() const</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00902_source.html#l00080\">tessellation.h:80</a></div></div>\n+<div class=\"ttc\" id=\"aa00965_html_aa7688afdaece2c387e8963d634752aa6\"><div class=\"ttname\"><a href=\"a00965.html#aa7688afdaece2c387e8963d634752aa6\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::Options::SetCoordStride</a></div><div class=\"ttdeci\">Options &amp; SetCoordStride(int stride)</div><div class=\"ttdoc\">Assign the stride between (u,v) pairs (default is 2)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00902_source.html#l00358\">tessellation.h:358</a></div></div>\n+<div class=\"ttc\" id=\"aa00965_html_ad6a995daa3f819edeeaf0a8c1aeb8b6a\"><div class=\"ttname\"><a href=\"a00965.html#ad6a995daa3f819edeeaf0a8c1aeb8b6a\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::Options::SetFacetStride</a></div><div class=\"ttdeci\">Options &amp; SetFacetStride(int stride)</div><div class=\"ttdoc\">Assign the stride between facets (default is facet size)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00902_source.html#l00353\">tessellation.h:353</a></div></div>\n+<div class=\"ttc\" id=\"aa00965_html_ae2ec197b850e8bd12878cc67a503a07a\"><div class=\"ttname\"><a href=\"a00965.html#ae2ec197b850e8bd12878cc67a503a07a\">OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::Options::PreserveQuads</a></div><div class=\"ttdeci\">bool PreserveQuads() const</div><div class=\"ttdoc\">Return if preservation of quads is set.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00902_source.html#l00074\">tessellation.h:74</a></div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00902.html\">d3d11VertexBuffer.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_fa5edef2a780a73fbfb6a11f1af88ceb.html\">bfr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00902.html\">tessellation.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,15 +1,15 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n-d3d11VertexBuffer.h\n+tessellation.h\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bd_\bo_\bc_\bu_\bm_\be_\bn_\bt_\ba_\bt_\bi_\bo_\bn_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n 1//\n-2// Copyright 2013 Pixar\n+2// Copyright 2021 Pixar\n 3//\n 4// Licensed under the Apache License, Version 2.0 (the \"Apache License\")\n 5// with the following modification; you may not use this file except in\n 6// compliance with the Apache License and the following modification to it:\n 7// Section 6. Trademarks. is deleted and replaced with:\n 8//\n 9// 6. Trademarks. This License does not grant permission to use the trade\n@@ -24,106 +24,367 @@\n 18// Unless required by applicable law or agreed to in writing, software\n 19// distributed under the Apache License with the above modification is\n 20// distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n 21// KIND, either express or implied. See the Apache License for the specific\n 22// language governing permissions and limitations under the Apache License.\n 23//\n 24\n-25#ifndef OPENSUBDIV3_OSD_D3D11_VERTEX_BUFFER_H\n-26#define OPENSUBDIV3_OSD_D3D11_VERTEX_BUFFER_H\n+25#ifndef OPENSUBDIV3_BFR_TESSELLATION_H\n+26#define OPENSUBDIV3_BFR_TESSELLATION_H\n 27\n 28#include \"../version.h\"\n 29\n-30struct ID3D11Buffer;\n-31struct ID3D11Device;\n-32struct ID3D11DeviceContext;\n-33struct ID3D11UnorderedAccessView;\n+30#include \"../bfr/parameterization.h\"\n+31\n+32namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n+33namespace OPENSUBDIV_VERSION {\n 34\n-35namespace _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv {\n-36namespace OPENSUBDIV_VERSION {\n-37\n-38namespace Osd {\n-39\n-_\b4_\b6class _\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br {\n-47public:\n-_\b4_\b9 static _\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br * _\bC_\br_\be_\ba_\bt_\be(int numElements, int numVertices,\n-50 ID3D11DeviceContext *deviceContext);\n-51\n-_\b5_\b3 virtual _\b~_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br();\n-54\n-_\b5_\b7 void _\bU_\bp_\bd_\ba_\bt_\be_\bD_\ba_\bt_\ba(const float *src, int startVertex, int numVertices,\n-58 ID3D11DeviceContext *deviceContext);\n-59\n-_\b6_\b1 int _\bG_\be_\bt_\bN_\bu_\bm_\bE_\bl_\be_\bm_\be_\bn_\bt_\bs() const;\n-62\n-_\b6_\b4 int _\bG_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs() const;\n-65\n-_\b6_\b7 ID3D11Buffer *_\bB_\bi_\bn_\bd_\bD_\b3_\bD_\b1_\b1_\bB_\bu_\bf_\bf_\be_\br(ID3D11DeviceContext *deviceContext);\n-68\n-_\b7_\b0 ID3D11Buffer *_\bB_\bi_\bn_\bd_\bV_\bB_\bO(ID3D11DeviceContext *deviceContext) {\n-71 return _\bB_\bi_\bn_\bd_\bD_\b3_\bD_\b1_\b1_\bB_\bu_\bf_\bf_\be_\br(deviceContext);\n-72 }\n-73\n-_\b7_\b5 ID3D11UnorderedAccessView *_\bB_\bi_\bn_\bd_\bD_\b3_\bD_\b1_\b1_\bU_\bA_\bV(ID3D11DeviceContext *deviceContext);\n-76\n-77protected:\n-_\b7_\b9 _\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br(int numElements, int numVertices);\n-80\n-81 // Allocates D3D11 buffer\n-_\b8_\b2 bool _\ba_\bl_\bl_\bo_\bc_\ba_\bt_\be(ID3D11Device *device);\n-83\n-84private:\n-85 int _numElements;\n-86 int _numVertices;\n-87 ID3D11Buffer *_buffer;\n-88 ID3D11Buffer *_uploadBuffer;\n-89 ID3D11UnorderedAccessView *_uav;\n-90};\n+35namespace Bfr {\n+36\n+_\b5_\b1class _\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn {\n+52public:\n+_\b6_\b5 class _\bO_\bp_\bt_\bi_\bo_\bn_\bs {\n+66 public:\n+_\b6_\b7 _\bO_\bp_\bt_\bi_\bo_\bn_\bs() : _preserveQuads(false), _facetSize4(false),\n+68 _coordStride(0), _facetStride(0) { }\n+69\n+72 _\bO_\bp_\bt_\bi_\bo_\bn_\bs & _\bP_\br_\be_\bs_\be_\br_\bv_\be_\bQ_\bu_\ba_\bd_\bs(bool on);\n+_\b7_\b4 bool _\bP_\br_\be_\bs_\be_\br_\bv_\be_\bQ_\bu_\ba_\bd_\bs() const { return _preserveQuads; }\n+75\n+78 _\bO_\bp_\bt_\bi_\bo_\bn_\bs & _\bS_\be_\bt_\bF_\ba_\bc_\be_\bt_\bS_\bi_\bz_\be(int numIndices);\n+79 // @brief Return the number of indices per facet\n+_\b8_\b0 int _\bG_\be_\bt_\bF_\ba_\bc_\be_\bt_\bS_\bi_\bz_\be() const { return 3 + (int)_facetSize4; }\n+81\n+83 _\bO_\bp_\bt_\bi_\bo_\bn_\bs & _\bS_\be_\bt_\bF_\ba_\bc_\be_\bt_\bS_\bt_\br_\bi_\bd_\be(int stride);\n+_\b8_\b5 int _\bG_\be_\bt_\bF_\ba_\bc_\be_\bt_\bS_\bt_\br_\bi_\bd_\be() const { return _facetStride; }\n+86\n+88 _\bO_\bp_\bt_\bi_\bo_\bn_\bs & _\bS_\be_\bt_\bC_\bo_\bo_\br_\bd_\bS_\bt_\br_\bi_\bd_\be(int stride);\n+_\b9_\b0 int _\bG_\be_\bt_\bC_\bo_\bo_\br_\bd_\bS_\bt_\br_\bi_\bd_\be() const { return _coordStride; }\n 91\n-92} // end namespace Osd\n-93\n-94} // end namespace OPENSUBDIV_VERSION\n-95using namespace OPENSUBDIV_VERSION;\n-96\n-97} // end namespace OpenSubdiv\n-98\n-99#endif // OPENSUBDIV3_OSD_D3D11_VERTEX_BUFFER_H\n+92 private:\n+93 unsigned int _preserveQuads : 1;\n+94 unsigned int _facetSize4 : 1;\n+95\n+96 short _coordStride;\n+97 short _facetStride;\n+98 };\n+99\n+100public:\n+102\n+111\n+_\b1_\b1_\b8 _\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn(_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn const & p, int uniformRate,\n+119 _\bO_\bp_\bt_\bi_\bo_\bn_\bs const & options = _\bO_\bp_\bt_\bi_\bo_\bn_\bs());\n+120\n+_\b1_\b5_\b8 _\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn(_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn const & p, int numRates, int const rates[],\n+159 _\bO_\bp_\bt_\bi_\bo_\bn_\bs const & options = _\bO_\bp_\bt_\bi_\bo_\bn_\bs());\n+160\n+_\b1_\b6_\b2 bool _\bI_\bs_\bV_\ba_\bl_\bi_\bd() const { return _isValid; }\n+163\n+_\b1_\b6_\b5 _\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn() = delete;\n+166\n+_\b1_\b6_\b7 _\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn(_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn const &) = delete;\n+_\b1_\b6_\b8 _\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn & _\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=(_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn const &) = delete;\n+_\b1_\b6_\b9 _\b~_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn();\n+171\n+173\n+177\n+_\b1_\b7_\b9 _\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn _\bG_\be_\bt_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn() const { return _param; }\n+180\n+_\b1_\b8_\b2 int _\bG_\be_\bt_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be() const { return _param._\bG_\be_\bt_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be(); }\n+183\n+_\b1_\b8_\b5 int _\bG_\be_\bt_\bR_\ba_\bt_\be_\bs(int rates[]) const;\n+186\n+_\b1_\b8_\b8 bool _\bI_\bs_\bU_\bn_\bi_\bf_\bo_\br_\bm() const { return _isUniform; }\n+190\n+192\n+203\n+_\b2_\b0_\b5 int _\bG_\be_\bt_\bN_\bu_\bm_\bC_\bo_\bo_\br_\bd_\bs() const { return _numInteriorPoints + _numBoundaryPoints;\n+}\n+206\n+_\b2_\b0_\b8 int _\bG_\be_\bt_\bC_\bo_\bo_\br_\bd_\bS_\bt_\br_\bi_\bd_\be() const { return _coordStride; }\n+209\n+_\b2_\b1_\b1 int _\bG_\be_\bt_\bN_\bu_\bm_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bC_\bo_\bo_\br_\bd_\bs() const { return _numBoundaryPoints; }\n+212\n+_\b2_\b1_\b4 int _\bG_\be_\bt_\bN_\bu_\bm_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bC_\bo_\bo_\br_\bd_\bs() const { return _numInteriorPoints; }\n+215\n+_\b2_\b1_\b8 int _\bG_\be_\bt_\bN_\bu_\bm_\bE_\bd_\bg_\be_\bC_\bo_\bo_\br_\bd_\bs(int edge) const { return _outerRates[edge] - 1; }\n+219\n+221 template <typename REAL>\n+222 int _\bG_\be_\bt_\bC_\bo_\bo_\br_\bd_\bs(REAL coordTuples[]) const;\n+223\n+225 template <typename REAL>\n+_\b2_\b2_\b6 int _\bG_\be_\bt_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bC_\bo_\bo_\br_\bd_\bs(REAL coordTuples[]) const;\n+227\n+229 template <typename REAL>\n+_\b2_\b3_\b0 int _\bG_\be_\bt_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bC_\bo_\bo_\br_\bd_\bs(REAL coordTuples[]) const;\n+231\n+233 template <typename REAL>\n+234 int _\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bC_\bo_\bo_\br_\bd(int vertex, REAL coordTuples[]) const;\n+235\n+238 template <typename REAL>\n+_\b2_\b3_\b9 int _\bG_\be_\bt_\bE_\bd_\bg_\be_\bC_\bo_\bo_\br_\bd_\bs(int edge, REAL coordTuples[]) const;\n+241\n+243\n+253\n+_\b2_\b5_\b5 int _\bG_\be_\bt_\bN_\bu_\bm_\bF_\ba_\bc_\be_\bt_\bs() const { return _numFacets; }\n+256\n+_\b2_\b5_\b8 int _\bG_\be_\bt_\bF_\ba_\bc_\be_\bt_\bS_\bi_\bz_\be() const { return _facetSize; }\n+259\n+_\b2_\b6_\b1 int _\bG_\be_\bt_\bF_\ba_\bc_\be_\bt_\bS_\bt_\br_\bi_\bd_\be() const { return _facetStride; }\n+262\n+_\b2_\b6_\b4 int _\bG_\be_\bt_\bF_\ba_\bc_\be_\bt_\bs(int facetTuples[]) const;\n+266\n+268\n+283\n+_\b2_\b8_\b5 void _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bF_\ba_\bc_\be_\bt_\bC_\bo_\bo_\br_\bd_\bI_\bn_\bd_\bi_\bc_\be_\bs(int facetTuples[], int commonOffset);\n+286\n+_\b2_\b8_\b9 void _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bF_\ba_\bc_\be_\bt_\bC_\bo_\bo_\br_\bd_\bI_\bn_\bd_\bi_\bc_\be_\bs(int facetTuples[],\n+290 int const boundaryIndices[],\n+291 int interiorOffset);\n+292\n+_\b2_\b9_\b4 void _\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bF_\ba_\bc_\be_\bt_\bC_\bo_\bo_\br_\bd_\bI_\bn_\bd_\bi_\bc_\be_\bs(int facetTuples[],\n+295 int const boundaryIndices[],\n+296 int const interiorIndices[]);\n+298\n+299private:\n+300 // Private initialization methods:\n+301 bool validateArguments(_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn const & p,\n+302 int nRates, int const rates[], _\bO_\bp_\bt_\bi_\bo_\bn_\bs const & options);\n+303\n+304 void initialize(_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn const & p,\n+305 int nRates, int const rates[], _\bO_\bp_\bt_\bi_\bo_\bn_\bs const & options);\n+306\n+307 void initializeDefaults();\n+308 int initializeRates(int nRates, int const rates[]);\n+309 void initializeInventoryForParamTri(int sumOfOuterRates);\n+310 void initializeInventoryForParamQuad(int sumOfOuterRates);\n+311 void initializeInventoryForParamQPoly(int sumOfOuterRates);\n+312\n+313private:\n+314 // Private members:\n+315 _\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn _param;\n+316\n+317 unsigned short _isValid : 1;\n+318 unsigned short _isUniform : 1;\n+319 unsigned short _triangulate : 1;\n+320 unsigned short _singleFace : 1;\n+321 unsigned short _segmentedFace : 1;\n+322 unsigned short _triangleFan : 1;\n+323 unsigned short _splitQuad : 1;\n+324\n+325 short _facetSize;\n+326 int _facetStride;\n+327 int _coordStride;\n+328\n+329 int _numGivenRates;\n+330 int _numBoundaryPoints;\n+331 int _numInteriorPoints;\n+332 int _numFacets;\n+333\n+334 int _innerRates[2];\n+335 int* _outerRates;\n+336 int _outerRatesLocal[4];\n+337};\n+338\n+339//\n+340// Inline implementations:\n+341//\n+342inline _\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs &\n+_\b3_\b4_\b3_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bP_\br_\be_\bs_\be_\br_\bv_\be_\bQ_\bu_\ba_\bd_\bs(bool on) {\n+344 _preserveQuads = on;\n+345 return *this;\n+346}\n+347inline _\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs &\n+_\b3_\b4_\b8_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bS_\be_\bt_\bF_\ba_\bc_\be_\bt_\bS_\bi_\bz_\be(int numIndices) {\n+349 _facetSize4 = (numIndices == 4);\n+350 return *this;\n+351}\n+352inline _\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs &\n+_\b3_\b5_\b3_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bS_\be_\bt_\bF_\ba_\bc_\be_\bt_\bS_\bt_\br_\bi_\bd_\be(int stride) {\n+354 _facetStride = (short) stride;\n+355 return *this;\n+356}\n+357inline _\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs &\n+_\b3_\b5_\b8_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bS_\be_\bt_\bC_\bo_\bo_\br_\bd_\bS_\bt_\br_\bi_\bd_\be(int stride) {\n+359 _coordStride = (short) stride;\n+360 return *this;\n+361}\n+362\n+363template <typename REAL>\n+364inline int\n+_\b3_\b6_\b5_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bC_\bo_\bo_\br_\bd(int vertex, REAL coord[]) const {\n+366 _param._\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bC_\bo_\bo_\br_\bd(vertex, coord);\n+367 return 1;\n+368}\n+369\n+370template <typename REAL>\n+371inline int\n+_\b3_\b7_\b2_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bt_\bC_\bo_\bo_\br_\bd_\bs(REAL coordTuples[]) const {\n+373 int nCoords = _\bG_\be_\bt_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bC_\bo_\bo_\br_\bd_\bs(coordTuples);\n+374 nCoords += _\bG_\be_\bt_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bC_\bo_\bo_\br_\bd_\bs(coordTuples + nCoords * _coordStride);\n+375 return nCoords;\n+376}\n+377\n+378} // end namespace Bfr\n+379\n+380} // end namespace OPENSUBDIV_VERSION\n+381using namespace OPENSUBDIV_VERSION;\n+382\n+383} // end namespace OpenSubdiv\n+384\n+385#endif /* OPENSUBDIV3_BFR_TESSELLATION */\n _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bl_\bi_\bm_\bi_\bt_\bs_\b._\bh_\b:_\b3_\b2\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-Concrete vertex buffer class for DirectX subdivision and DirectX drawing.\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bd_\b3_\bd_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh_\b:_\b4_\b6\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bE_\bl_\be_\bm_\be_\bn_\bt_\bs\n-int GetNumElements() const\n-Returns how many elements defined in this vertex buffer.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bU_\bp_\bd_\ba_\bt_\be_\bD_\ba_\bt_\ba\n-void UpdateData(const float *src, int startVertex, int numVertices,\n-ID3D11DeviceContext *deviceContext)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bC_\br_\be_\ba_\bt_\be\n-static D3D11VertexBuffer * Create(int numElements, int numVertices,\n-ID3D11DeviceContext *deviceContext)\n-Creator. Returns NULL if error.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-D3D11VertexBuffer(int numElements, int numVertices)\n-Constructor.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bV_\be_\br_\bt_\bi_\bc_\be_\bs\n-int GetNumVertices() const\n-Returns how many vertices allocated in this vertex buffer.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bB_\bi_\bn_\bd_\bD_\b3_\bD_\b1_\b1_\bB_\bu_\bf_\bf_\be_\br\n-ID3D11Buffer * BindD3D11Buffer(ID3D11DeviceContext *deviceContext)\n-Returns the D3D11 buffer object.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\b~_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br\n-virtual ~D3D11VertexBuffer()\n-Destructor.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bB_\bi_\bn_\bd_\bD_\b3_\bD_\b1_\b1_\bU_\bA_\bV\n-ID3D11UnorderedAccessView * BindD3D11UAV(ID3D11DeviceContext *deviceContext)\n-Returns the D3D11 UAV.\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\ba_\bl_\bl_\bo_\bc_\ba_\bt_\be\n-bool allocate(ID3D11Device *device)\n-_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd_\b:_\b:_\bD_\b3_\bD_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b:_\b:_\bB_\bi_\bn_\bd_\bV_\bB_\bO\n-ID3D11Buffer * BindVBO(ID3D11DeviceContext *deviceContext)\n-Returns the D3D11 buffer object (for Osd::Mesh interface)\n-D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bd_\b3_\bd_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh_\b:_\b7_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn\n+Simple class defining the 2D parameterization of a face.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b5_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bt_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be\n+int GetFaceSize() const\n+Returns the size (number of vertices) of the corresponding face.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b1_\b0_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bC_\bo_\bo_\br_\bd\n+void GetVertexCoord(int vertexIndex, REAL uvCoord[2]) const\n+Returns the (u,v) coordinate of a given vertex.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn\n+Encapsulates a specific tessellation pattern of a Parameterization.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b5_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bt_\bF_\ba_\bc_\be_\bS_\bi_\bz_\be\n+int GetFaceSize() const\n+Return the size of the face.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b1_\b8_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bC_\bo_\bo_\br_\bd_\bs\n+int GetNumBoundaryCoords() const\n+Return the number of boundary coordinates.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b2_\b1_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\b~_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn\n+~Tessellation()\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bF_\ba_\bc_\be_\bt_\bC_\bo_\bo_\br_\bd_\bI_\bn_\bd_\bi_\bc_\be_\bs\n+void TransformFacetCoordIndices(int facetTuples[], int const boundaryIndices[],\n+int const interiorIndices[])\n+Reassign all facet coordinate indices.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bt_\bC_\bo_\bo_\br_\bd_\bS_\bt_\br_\bi_\bd_\be\n+int GetCoordStride() const\n+Return the number of elements between each coordinate.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b2_\b0_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bE_\bd_\bg_\be_\bC_\bo_\bo_\br_\bd_\bs\n+int GetNumEdgeCoords(int edge) const\n+Return the number of coordinates within a given edge (excluding those at its\n+end vertices)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b2_\b1_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bt_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bC_\bo_\bo_\br_\bd_\bs\n+int GetInteriorCoords(REAL coordTuples[]) const\n+Retrieve the coordinates for the boundary.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bt_\bF_\ba_\bc_\be_\bt_\bS_\bt_\br_\bi_\bd_\be\n+int GetFacetStride() const\n+Return the number of elements between each facet.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b2_\b6_\b1\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bI_\bs_\bU_\bn_\bi_\bf_\bo_\br_\bm\n+bool IsUniform() const\n+Return if the pattern is uniform.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b1_\b8_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bC_\bo_\bo_\br_\bd_\bs\n+int GetNumCoords() const\n+Return the number of coordinates in the entire pattern.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b2_\b0_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bt_\bC_\bo_\bo_\br_\bd_\bs\n+int GetCoords(REAL coordTuples[]) const\n+Retrieve the coordinates for the entire pattern.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b3_\b7_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bF_\ba_\bc_\be_\bt_\bC_\bo_\bo_\br_\bd_\bI_\bn_\bd_\bi_\bc_\be_\bs\n+void TransformFacetCoordIndices(int facetTuples[], int commonOffset)\n+Apply a common offset to all facet coordinate indices.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn\n+Tessellation(Parameterization const &p, int numRates, int const rates[],\n+Options const &options=Options())\n+General constructor providing multiple tessellation rates for a non-uniform\n+tessellation.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bt_\bP_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bi_\bz_\ba_\bt_\bi_\bo_\bn\n+Parameterization GetParameterization() const\n+Return the Parameterization.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b1_\b7_\b9\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bT_\br_\ba_\bn_\bs_\bf_\bo_\br_\bm_\bF_\ba_\bc_\be_\bt_\bC_\bo_\bo_\br_\bd_\bI_\bn_\bd_\bi_\bc_\be_\bs\n+void TransformFacetCoordIndices(int facetTuples[], int const boundaryIndices[],\n+int interiorOffset)\n+Reassign indices of boundary coordinates while offseting those of interior\n+coordinates.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bt_\bF_\ba_\bc_\be_\bt_\bS_\bi_\bz_\be\n+int GetFacetSize() const\n+Return the number of indices assigned to each facet.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b2_\b5_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn\n+Tessellation()=delete\n+Default construction is unavailable.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn\n+Tessellation(Parameterization const &p, int uniformRate, Options const\n+&options=Options())\n+Simple constructor providing a single uniform tessellation rate.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bt_\bF_\ba_\bc_\be_\bt_\bs\n+int GetFacets(int facetTuples[]) const\n+Retrieve the facet indices for the entire pattern.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bF_\ba_\bc_\be_\bt_\bs\n+int GetNumFacets() const\n+Return the number of facets in the entire pattern.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b2_\b5_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bt_\bN_\bu_\bm_\bI_\bn_\bt_\be_\br_\bi_\bo_\br_\bC_\bo_\bo_\br_\bd_\bs\n+int GetNumInteriorCoords() const\n+Return the number of interior coordinates.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b2_\b1_\b4\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bt_\bV_\be_\br_\bt_\be_\bx_\bC_\bo_\bo_\br_\bd\n+int GetVertexCoord(int vertex, REAL coordTuples[]) const\n+Retrieve the coordinate for a given vertex of the face.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b3_\b6_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bt_\bB_\bo_\bu_\bn_\bd_\ba_\br_\by_\bC_\bo_\bo_\br_\bd_\bs\n+int GetBoundaryCoords(REAL coordTuples[]) const\n+Retrieve the coordinates for the boundary.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn\n+Tessellation(Tessellation const &)=delete\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bt_\bR_\ba_\bt_\be_\bs\n+int GetRates(int rates[]) const\n+Retrieve the rates assigned.\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bI_\bs_\bV_\ba_\bl_\bi_\bd\n+bool IsValid() const\n+Return true if correctly initialized.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b1_\b6_\b2\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bo_\bp_\be_\br_\ba_\bt_\bo_\br_\b=\n+Tessellation & operator=(Tessellation const &)=delete\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bG_\be_\bt_\bE_\bd_\bg_\be_\bC_\bo_\bo_\br_\bd_\bs\n+int GetEdgeCoords(int edge, REAL coordTuples[]) const\n+Retrieve the coordinates for a given edge of the face (excluding those at its\n+end vertices)\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n+Options configure a Tessellation to specify the nature of both its results and\n+the structure of the c...\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b6_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs\n+Options()\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b6_\b7\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bG_\be_\bt_\bC_\bo_\bo_\br_\bd_\bS_\bt_\br_\bi_\bd_\be\n+int GetCoordStride() const\n+Return the stride between (u,v) pairs.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b9_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bS_\be_\bt_\bF_\ba_\bc_\be_\bt_\bS_\bi_\bz_\be\n+Options & SetFacetSize(int numIndices)\n+Assign the number of indices per facet (must be 3 or 4, default is 3)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b3_\b4_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bG_\be_\bt_\bF_\ba_\bc_\be_\bt_\bS_\bt_\br_\bi_\bd_\be\n+int GetFacetStride() const\n+Return the stride between facets.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b8_\b5\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bG_\be_\bt_\bF_\ba_\bc_\be_\bt_\bS_\bi_\bz_\be\n+int GetFacetSize() const\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b8_\b0\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bS_\be_\bt_\bC_\bo_\bo_\br_\bd_\bS_\bt_\br_\bi_\bd_\be\n+Options & SetCoordStride(int stride)\n+Assign the stride between (u,v) pairs (default is 2)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b3_\b5_\b8\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bS_\be_\bt_\bF_\ba_\bc_\be_\bt_\bS_\bt_\br_\bi_\bd_\be\n+Options & SetFacetStride(int stride)\n+Assign the stride between facets (default is facet size)\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b3_\b5_\b3\n+_\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bB_\bf_\br_\b:_\b:_\bT_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b:_\b:_\bO_\bp_\bt_\bi_\bo_\bn_\bs_\b:_\b:_\bP_\br_\be_\bs_\be_\br_\bv_\be_\bQ_\bu_\ba_\bd_\bs\n+bool PreserveQuads() const\n+Return if preservation of quads is set.\n+D\bDe\bef\bfi\bin\bni\bit\bti\bio\bon\bn _\bt_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh_\b:_\b7_\b4\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bo_\bs_\bd\n-    * _\bd_\b3_\bd_\b1_\b1_\bV_\be_\br_\bt_\be_\bx_\bB_\bu_\bf_\bf_\be_\br_\b._\bh\n+    * _\bb_\bf_\br\n+    * _\bt_\be_\bs_\bs_\be_\bl_\bl_\ba_\bt_\bi_\bo_\bn_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00908.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00908.html", "unified_diff": "@@ -280,15 +280,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">typedef <a class=\"el\" href=\"a01353.html\">Vtr::ConstArray</a>&lt;<a class=\"el\" href=\"a00973.html\">PatchDescriptor</a>&gt; <a class=\"el\" href=\"a00908.html#ad258c2d8f7871bc0d40cf3a9ded6e08a\">ConstPatchDescriptorArray</a></td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00773_source.html#l00146\">146</a> of file <a class=\"el\" href=\"a00773_source.html\">patchDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00857_source.html#l00146\">146</a> of file <a class=\"el\" href=\"a00857_source.html\">patchDescriptor.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a3139c7c52ddf26b2403e8e95ff63eeb3\" name=\"a3139c7c52ddf26b2403e8e95ff63eeb3\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3139c7c52ddf26b2403e8e95ff63eeb3\">&#9670;&#160;</a></span>ConstPatchParamArray</h2>\n \n <div class=\"memitem\">\n@@ -296,15 +296,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">typedef <a class=\"el\" href=\"a01353.html\">Vtr::ConstArray</a>&lt;<a class=\"el\" href=\"a00989.html\">PatchParam</a>&gt; <a class=\"el\" href=\"a00908.html#a3139c7c52ddf26b2403e8e95ff63eeb3\">ConstPatchParamArray</a></td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00755_source.html#l00246\">246</a> of file <a class=\"el\" href=\"a00755_source.html\">patchParam.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00836_source.html#l00246\">246</a> of file <a class=\"el\" href=\"a00836_source.html\">patchParam.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aa1630f297a91dfc683dfcfddeeebb2ac\" name=\"aa1630f297a91dfc683dfcfddeeebb2ac\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa1630f297a91dfc683dfcfddeeebb2ac\">&#9670;&#160;</a></span>ErrorCallbackFunc</h2>\n \n <div class=\"memitem\">\n@@ -314,15 +314,15 @@\n           <td class=\"memname\">typedef void(* ErrorCallbackFunc) (<a class=\"el\" href=\"a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45a\">ErrorType</a> err, const char *message)</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n <p>The error callback function type (default is \"printf\") </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00749_source.html#l00045\">45</a> of file <a class=\"el\" href=\"a00749_source.html\">error.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00839_source.html#l00045\">45</a> of file <a class=\"el\" href=\"a00839_source.html\">error.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ab34c85a48f33dfe7b8bf4d966fdebbf2\" name=\"ab34c85a48f33dfe7b8bf4d966fdebbf2\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab34c85a48f33dfe7b8bf4d966fdebbf2\">&#9670;&#160;</a></span>Index</h2>\n \n <div class=\"memitem\">\n@@ -394,15 +394,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">typedef <a class=\"el\" href=\"a01357.html\">Vtr::Array</a>&lt;<a class=\"el\" href=\"a00989.html\">PatchParam</a>&gt; <a class=\"el\" href=\"a00908.html#abe07210a029a01571c54276ae28b4d88\">PatchParamArray</a></td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00755_source.html#l00245\">245</a> of file <a class=\"el\" href=\"a00755_source.html\">patchParam.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00836_source.html#l00245\">245</a> of file <a class=\"el\" href=\"a00836_source.html\">patchParam.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a46ea68db89cc3d55c4191ef7648281ce\" name=\"a46ea68db89cc3d55c4191ef7648281ce\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a46ea68db89cc3d55c4191ef7648281ce\">&#9670;&#160;</a></span>PatchParamTable</h2>\n \n <div class=\"memitem\">\n@@ -410,15 +410,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">typedef std::vector&lt;<a class=\"el\" href=\"a00989.html\">PatchParam</a>&gt; <a class=\"el\" href=\"a00908.html#a46ea68db89cc3d55c4191ef7648281ce\">PatchParamTable</a></td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00755_source.html#l00243\">243</a> of file <a class=\"el\" href=\"a00755_source.html\">patchParam.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00836_source.html#l00243\">243</a> of file <a class=\"el\" href=\"a00836_source.html\">patchParam.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a2bd300390ebc686e71a3690f4a0b1726\" name=\"a2bd300390ebc686e71a3690f4a0b1726\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2bd300390ebc686e71a3690f4a0b1726\">&#9670;&#160;</a></span>WarningCallbackFunc</h2>\n \n <div class=\"memitem\">\n@@ -428,15 +428,15 @@\n           <td class=\"memname\">typedef void(* WarningCallbackFunc) (const char *message)</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n <p>The warning callback function type (default is \"printf\") </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00749_source.html#l00057\">57</a> of file <a class=\"el\" href=\"a00749_source.html\">error.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00839_source.html#l00057\">57</a> of file <a class=\"el\" href=\"a00839_source.html\">error.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Enumeration Type Documentation</h2>\n <a id=\"ab0df38968e4f03a3f1f6d6df0f31f45a\" name=\"ab0df38968e4f03a3f1f6d6df0f31f45a\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab0df38968e4f03a3f1f6d6df0f31f45a\">&#9670;&#160;</a></span>ErrorType</h2>\n \n@@ -457,15 +457,15 @@\n </td></tr>\n <tr><td class=\"fieldname\"><a id=\"ab0df38968e4f03a3f1f6d6df0f31f45aa9b2839feb039937015e9668f601e4d32\" name=\"ab0df38968e4f03a3f1f6d6df0f31f45aa9b2839feb039937015e9668f601e4d32\"></a>FAR_CODING_ERROR&#160;</td><td class=\"fielddoc\"><p>Issue a generic programming error, but continue execution. </p>\n </td></tr>\n <tr><td class=\"fieldname\"><a id=\"ab0df38968e4f03a3f1f6d6df0f31f45aac565fa39d681e2766584dd87246c3bdd\" name=\"ab0df38968e4f03a3f1f6d6df0f31f45aac565fa39d681e2766584dd87246c3bdd\"></a>FAR_RUNTIME_ERROR&#160;</td><td class=\"fielddoc\"><p>Issue a generic runtime error, but continue execution. </p>\n </td></tr>\n </table>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00749_source.html#l00035\">35</a> of file <a class=\"el\" href=\"a00749_source.html\">error.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00839_source.html#l00035\">35</a> of file <a class=\"el\" href=\"a00839_source.html\">error.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Function Documentation</h2>\n <a id=\"a25d51c3a61fb3dacded6e48d01fd2fdb\" name=\"a25d51c3a61fb3dacded6e48d01fd2fdb\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a25d51c3a61fb3dacded6e48d01fd2fdb\">&#9670;&#160;</a></span>Error()</h2>\n \n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00912.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00912.html", "unified_diff": "@@ -294,15 +294,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">typedef <a class=\"el\" href=\"a01269.html\">MeshInterface</a>&lt;<a class=\"el\" href=\"a01209.html\">D3D11PatchTable</a>&gt; <a class=\"el\" href=\"a00912.html#ae5c8e80d05d6eaee105d8eecfa9ab609\">D3D11MeshInterface</a></td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00860_source.html#l00038\">38</a> of file <a class=\"el\" href=\"a00860_source.html\">d3d11Mesh.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00737_source.html#l00038\">38</a> of file <a class=\"el\" href=\"a00737_source.html\">d3d11Mesh.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a7f9cf2b729178bdbb847fc4afd91af9e\" name=\"a7f9cf2b729178bdbb847fc4afd91af9e\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7f9cf2b729178bdbb847fc4afd91af9e\">&#9670;&#160;</a></span>GLMeshInterface</h2>\n \n <div class=\"memitem\">\n@@ -310,15 +310,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">typedef <a class=\"el\" href=\"a01269.html\">MeshInterface</a>&lt;<a class=\"el\" href=\"a01237.html\">GLPatchTable</a>&gt; <a class=\"el\" href=\"a00912.html#a7f9cf2b729178bdbb847fc4afd91af9e\">GLMeshInterface</a></td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00878_source.html#l00038\">38</a> of file <a class=\"el\" href=\"a00878_source.html\">glMesh.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00719_source.html#l00038\">38</a> of file <a class=\"el\" href=\"a00719_source.html\">glMesh.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a85ba9df501aea9af1ec9da1558c255bc\" name=\"a85ba9df501aea9af1ec9da1558c255bc\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a85ba9df501aea9af1ec9da1558c255bc\">&#9670;&#160;</a></span>MeshBitset</h2>\n \n <div class=\"memitem\">\n@@ -326,15 +326,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">typedef std::bitset&lt;<a class=\"el\" href=\"a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a5676712c77d29cfdd330e2802db1c464\">NUM_MESH_BITS</a>&gt; <a class=\"el\" href=\"a00912.html#a85ba9df501aea9af1ec9da1558c255bc\">MeshBitset</a></td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00063\">63</a> of file <a class=\"el\" href=\"a00872_source.html\">mesh.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00063\">63</a> of file <a class=\"el\" href=\"a00704_source.html\">mesh.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aa41e5b43fe46eeb0f97ff6ebdb1935aa\" name=\"aa41e5b43fe46eeb0f97ff6ebdb1935aa\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa41e5b43fe46eeb0f97ff6ebdb1935aa\">&#9670;&#160;</a></span>MTLMeshInterface</h2>\n \n <div class=\"memitem\">\n@@ -342,15 +342,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">typedef <a class=\"el\" href=\"a01269.html\">MeshInterface</a>&lt;<a class=\"el\" href=\"a01305.html\">MTLPatchTable</a>&gt; <a class=\"el\" href=\"a00912.html#aa41e5b43fe46eeb0f97ff6ebdb1935aa\">MTLMeshInterface</a></td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00812_source.html#l00038\">38</a> of file <a class=\"el\" href=\"a00812_source.html\">mtlMesh.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00740_source.html#l00038\">38</a> of file <a class=\"el\" href=\"a00740_source.html\">mtlMesh.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a98098cd229f60d2397d84a76fe654a31\" name=\"a98098cd229f60d2397d84a76fe654a31\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a98098cd229f60d2397d84a76fe654a31\">&#9670;&#160;</a></span>PatchArrayVector</h2>\n \n <div class=\"memitem\">\n@@ -405,15 +405,15 @@\n <tr><td class=\"fieldname\"><a id=\"a1af6b50e9f8ae13d3d2f9d5b03b35492a4124233e4f787f999c7975afceab34f3\" name=\"a1af6b50e9f8ae13d3d2f9d5b03b35492a4124233e4f787f999c7975afceab34f3\"></a>MeshEndCapBilinearBasis&#160;</td><td class=\"fielddoc\"></td></tr>\n <tr><td class=\"fieldname\"><a id=\"a1af6b50e9f8ae13d3d2f9d5b03b35492aa2f41b6ba0393698bb3af283283737f7\" name=\"a1af6b50e9f8ae13d3d2f9d5b03b35492aa2f41b6ba0393698bb3af283283737f7\"></a>MeshEndCapBSplineBasis&#160;</td><td class=\"fielddoc\"></td></tr>\n <tr><td class=\"fieldname\"><a id=\"a1af6b50e9f8ae13d3d2f9d5b03b35492aa2878e1a215530f5f6fb89f1e06f91ee\" name=\"a1af6b50e9f8ae13d3d2f9d5b03b35492aa2878e1a215530f5f6fb89f1e06f91ee\"></a>MeshEndCapGregoryBasis&#160;</td><td class=\"fielddoc\"></td></tr>\n <tr><td class=\"fieldname\"><a id=\"a1af6b50e9f8ae13d3d2f9d5b03b35492aad7b3fb2be609abdbfafaf5b1c834158\" name=\"a1af6b50e9f8ae13d3d2f9d5b03b35492aad7b3fb2be609abdbfafaf5b1c834158\"></a>MeshEndCapLegacyGregory&#160;</td><td class=\"fielddoc\"></td></tr>\n <tr><td class=\"fieldname\"><a id=\"a1af6b50e9f8ae13d3d2f9d5b03b35492a5676712c77d29cfdd330e2802db1c464\" name=\"a1af6b50e9f8ae13d3d2f9d5b03b35492a5676712c77d29cfdd330e2802db1c464\"></a>NUM_MESH_BITS&#160;</td><td class=\"fielddoc\"></td></tr>\n </table>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00049\">49</a> of file <a class=\"el\" href=\"a00872_source.html\">mesh.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00049\">49</a> of file <a class=\"el\" href=\"a00704_source.html\">mesh.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Function Documentation</h2>\n <a id=\"a06ceddf21c024b341a5b946049cd701a\" name=\"a06ceddf21c024b341a5b946049cd701a\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a06ceddf21c024b341a5b946049cd701a\">&#9670;&#160;</a></span>convertToCompatibleStencilTable()</h2>\n \n@@ -438,15 +438,15 @@\n           <td></td>\n           <td>)</td>\n           <td></td><td></td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00141\">141</a> of file <a class=\"el\" href=\"a00872_source.html\">mesh.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00141\">141</a> of file <a class=\"el\" href=\"a00704_source.html\">mesh.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a4c2520cc1a8a5a03e3f53584629d7318\" name=\"a4c2520cc1a8a5a03e3f53584629d7318\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4c2520cc1a8a5a03e3f53584629d7318\">&#9670;&#160;</a></span>convertToCompatibleStencilTable&lt; Far::LimitStencilTable, Far::LimitStencilTable, void &gt;()</h2>\n \n <div class=\"memitem\">\n@@ -478,15 +478,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00158\">158</a> of file <a class=\"el\" href=\"a00872_source.html\">mesh.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00158\">158</a> of file <a class=\"el\" href=\"a00704_source.html\">mesh.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ab5753a2b0a0995c8e2259d2c4765f7df\" name=\"ab5753a2b0a0995c8e2259d2c4765f7df\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab5753a2b0a0995c8e2259d2c4765f7df\">&#9670;&#160;</a></span>convertToCompatibleStencilTable&lt; Far::StencilTable, Far::StencilTable, ID3D11DeviceContext &gt;()</h2>\n \n <div class=\"memitem\">\n@@ -518,15 +518,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00168\">168</a> of file <a class=\"el\" href=\"a00872_source.html\">mesh.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00168\">168</a> of file <a class=\"el\" href=\"a00704_source.html\">mesh.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a33f9830228f847fae1c30c9dffe02b5a\" name=\"a33f9830228f847fae1c30c9dffe02b5a\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a33f9830228f847fae1c30c9dffe02b5a\">&#9670;&#160;</a></span>convertToCompatibleStencilTable&lt; Far::StencilTable, Far::StencilTable, void &gt;()</h2>\n \n <div class=\"memitem\">\n@@ -558,15 +558,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00148\">148</a> of file <a class=\"el\" href=\"a00872_source.html\">mesh.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00148\">148</a> of file <a class=\"el\" href=\"a00704_source.html\">mesh.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a44a05502feb5015035bc81b93cffb99c\" name=\"a44a05502feb5015035bc81b93cffb99c\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a44a05502feb5015035bc81b93cffb99c\">&#9670;&#160;</a></span>OmpEvalStencils() <span class=\"overload\">[1/3]</span></h2>\n \n <div class=\"memitem\">\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00917.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00917.html", "unified_diff": "@@ -97,29 +97,29 @@\n   <div class=\"headertitle\"><div class=\"title\">Limits Struct Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Simple struct with limits related to topology.  \n  <a href=\"a00917.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00701_source.html\">limits.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00890_source.html\">limits.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\n Static Public Member Functions</h2></td></tr>\n <tr class=\"memitem:aca372fcd4c25aa589418934c5056b16c\" id=\"r_aca372fcd4c25aa589418934c5056b16c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00917.html#aca372fcd4c25aa589418934c5056b16c\">MaxValence</a> ()</td></tr>\n <tr class=\"memdesc:aca372fcd4c25aa589418934c5056b16c\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the maximum allowable valence for a vertex.  <br /></td></tr>\n <tr class=\"separator:aca372fcd4c25aa589418934c5056b16c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a058dee146ff7dafb8d2b8cb0d09f5da8\" id=\"r_a058dee146ff7dafb8d2b8cb0d09f5da8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00917.html#a058dee146ff7dafb8d2b8cb0d09f5da8\">MaxFaceSize</a> ()</td></tr>\n <tr class=\"memdesc:a058dee146ff7dafb8d2b8cb0d09f5da8\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns the maximum allowable size for a face (number of vertices)  <br /></td></tr>\n <tr class=\"separator:a058dee146ff7dafb8d2b8cb0d09f5da8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p>Simple struct with limits related to topology. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00701_source.html#l00040\">40</a> of file <a class=\"el\" href=\"a00701_source.html\">limits.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00890_source.html#l00040\">40</a> of file <a class=\"el\" href=\"a00890_source.html\">limits.h</a>.</p>\n </div><h2 class=\"groupheader\">Member Function Documentation</h2>\n <a id=\"a058dee146ff7dafb8d2b8cb0d09f5da8\" name=\"a058dee146ff7dafb8d2b8cb0d09f5da8\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a058dee146ff7dafb8d2b8cb0d09f5da8\">&#9670;&#160;</a></span>MaxFaceSize()</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n <table class=\"mlabels\">\n@@ -138,15 +138,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the maximum allowable size for a face (number of vertices) </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00701_source.html#l00046\">46</a> of file <a class=\"el\" href=\"a00701_source.html\">limits.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00890_source.html#l00046\">46</a> of file <a class=\"el\" href=\"a00890_source.html\">limits.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aca372fcd4c25aa589418934c5056b16c\" name=\"aca372fcd4c25aa589418934c5056b16c\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aca372fcd4c25aa589418934c5056b16c\">&#9670;&#160;</a></span>MaxValence()</h2>\n \n <div class=\"memitem\">\n@@ -167,20 +167,20 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the maximum allowable valence for a vertex. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00701_source.html#l00042\">42</a> of file <a class=\"el\" href=\"a00701_source.html\">limits.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00890_source.html#l00042\">42</a> of file <a class=\"el\" href=\"a00890_source.html\">limits.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li>opensubdiv/bfr/<a class=\"el\" href=\"a00701_source.html\">limits.h</a></li>\n+<li>opensubdiv/bfr/<a class=\"el\" href=\"a00890_source.html\">limits.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00907.html\">Bfr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00917.html\">Limits</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00921.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00921.html", "unified_diff": "@@ -97,15 +97,15 @@\n   <div class=\"headertitle\"><div class=\"title\">Parameterization Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Simple class defining the 2D parameterization of a face.  \n  <a href=\"a00921.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00719_source.html\">parameterization.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00899_source.html\">parameterization.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\n Public Types</h2></td></tr>\n <tr class=\"memitem:a1d1cfd8ffb84e947f82999c682b666a7\" id=\"r_a1d1cfd8ffb84e947f82999c682b666a7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00921.html#a1d1cfd8ffb84e947f82999c682b666a7\">Type</a> { <br />\n &#160;&#160;<a class=\"el\" href=\"a00921.html#a1d1cfd8ffb84e947f82999c682b666a7ae1a12d53590e4fd25c9fd9006f19ab5c\">QUAD</a>\n , <br />\n &#160;&#160;<a class=\"el\" href=\"a00921.html#a1d1cfd8ffb84e947f82999c682b666a7acde3f260abb10fb9633e1ca01de9e78d\">TRI</a>\n@@ -192,15 +192,15 @@\n <tr class=\"separator:a9b6878c9cfa5f864aacae60e159451c8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p>Simple class defining the 2D parameterization of a face. </p>\n <p><a class=\"el\" href=\"a00921.html\" title=\"Simple class defining the 2D parameterization of a face.\">Parameterization</a> is a simple class that provides information about the parameterization of a face in a local (u,v) coordinate system. It is defined by the size of a face (i.e. its number of vertices) and the subdivision scheme that determines its limit surface.</p>\n <p>As an example of how the subdivision scheme is essential in determining the <a class=\"el\" href=\"a00921.html\" title=\"Simple class defining the 2D parameterization of a face.\">Parameterization</a>, consider the case of a triangle. A triangle is regular for the Loop scheme and so has a very simple parameterization as a triangular patch. But for the Catmull-Clark scheme, a triangle is an irregular face that must first be subdivided &ndash; making its limit surface a piecewise collection of quadrilateral patches. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00719_source.html#l00052\">52</a> of file <a class=\"el\" href=\"a00719_source.html\">parameterization.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00899_source.html#l00052\">52</a> of file <a class=\"el\" href=\"a00899_source.html\">parameterization.h</a>.</p>\n </div><h2 class=\"groupheader\">Member Enumeration Documentation</h2>\n <a id=\"a1d1cfd8ffb84e947f82999c682b666a7\" name=\"a1d1cfd8ffb84e947f82999c682b666a7\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1d1cfd8ffb84e947f82999c682b666a7\">&#9670;&#160;</a></span>Type</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n       <table class=\"memname\">\n@@ -217,15 +217,15 @@\n </td></tr>\n <tr><td class=\"fieldname\"><a id=\"a1d1cfd8ffb84e947f82999c682b666a7acde3f260abb10fb9633e1ca01de9e78d\" name=\"a1d1cfd8ffb84e947f82999c682b666a7acde3f260abb10fb9633e1ca01de9e78d\"></a>TRI&#160;</td><td class=\"fielddoc\"><p>Triangle. </p>\n </td></tr>\n <tr><td class=\"fieldname\"><a id=\"a1d1cfd8ffb84e947f82999c682b666a7a7cbabd8b5f03feec7dda7f68118f0850\" name=\"a1d1cfd8ffb84e947f82999c682b666a7a7cbabd8b5f03feec7dda7f68118f0850\"></a>QUAD_SUBFACES&#160;</td><td class=\"fielddoc\"><p>Partitioned into quadrilateral sub-faces. </p>\n </td></tr>\n </table>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00719_source.html#l00062\">62</a> of file <a class=\"el\" href=\"a00719_source.html\">parameterization.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00899_source.html#l00062\">62</a> of file <a class=\"el\" href=\"a00899_source.html\">parameterization.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"a301ad64c8ae0a3ba3af84377138a069f\" name=\"a301ad64c8ae0a3ba3af84377138a069f\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a301ad64c8ae0a3ba3af84377138a069f\">&#9670;&#160;</a></span>Parameterization() <span class=\"overload\">[1/3]</span></h2>\n \n@@ -277,15 +277,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Default construction produces an invalid instance. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00719_source.html#l00084\">84</a> of file <a class=\"el\" href=\"a00719_source.html\">parameterization.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00899_source.html#l00084\">84</a> of file <a class=\"el\" href=\"a00899_source.html\">parameterization.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a64a4b29d36851a8d83be05af5b25f886\" name=\"a64a4b29d36851a8d83be05af5b25f886\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a64a4b29d36851a8d83be05af5b25f886\">&#9670;&#160;</a></span>Parameterization() <span class=\"overload\">[3/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -371,15 +371,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Convert (u,v) to a sub-face (return value) and its normalized (u,v) coordinate. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00719_source.html#l00229\">229</a> of file <a class=\"el\" href=\"a00719_source.html\">parameterization.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00899_source.html#l00229\">229</a> of file <a class=\"el\" href=\"a00899_source.html\">parameterization.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a41cf5ce29cf0ef8f61e9bfe9b8c007f6\" name=\"a41cf5ce29cf0ef8f61e9bfe9b8c007f6\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a41cf5ce29cf0ef8f61e9bfe9b8c007f6\">&#9670;&#160;</a></span>ConvertCoordToSubFace()</h2>\n \n <div class=\"memitem\">\n@@ -413,15 +413,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Convert (u,v) to a sub-face (return value) and its local (u,v) coordinate. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00719_source.html#l00215\">215</a> of file <a class=\"el\" href=\"a00719_source.html\">parameterization.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00899_source.html#l00215\">215</a> of file <a class=\"el\" href=\"a00899_source.html\">parameterization.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a9b6878c9cfa5f864aacae60e159451c8\" name=\"a9b6878c9cfa5f864aacae60e159451c8\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9b6878c9cfa5f864aacae60e159451c8\">&#9670;&#160;</a></span>ConvertNormalizedSubFaceToCoord()</h2>\n \n <div class=\"memitem\">\n@@ -461,15 +461,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Convert a sub-face and its normalized (u,v) coordinate to (u,v) </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00719_source.html#l00235\">235</a> of file <a class=\"el\" href=\"a00719_source.html\">parameterization.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00899_source.html#l00235\">235</a> of file <a class=\"el\" href=\"a00899_source.html\">parameterization.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aed9d1936ffe46b9622ae31cb43233a2e\" name=\"aed9d1936ffe46b9622ae31cb43233a2e\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aed9d1936ffe46b9622ae31cb43233a2e\">&#9670;&#160;</a></span>ConvertSubFaceToCoord()</h2>\n \n <div class=\"memitem\">\n@@ -509,15 +509,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Convert a sub-face and its local (u,v) coordinate to (u,v) </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00719_source.html#l00221\">221</a> of file <a class=\"el\" href=\"a00719_source.html\">parameterization.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00899_source.html#l00221\">221</a> of file <a class=\"el\" href=\"a00899_source.html\">parameterization.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a43caa8212032f3649809914cc0f57653\" name=\"a43caa8212032f3649809914cc0f57653\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a43caa8212032f3649809914cc0f57653\">&#9670;&#160;</a></span>GetCenterCoord()</h2>\n \n <div class=\"memitem\">\n@@ -598,15 +598,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the size (number of vertices) of the corresponding face. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00719_source.html#l00101\">101</a> of file <a class=\"el\" href=\"a00719_source.html\">parameterization.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00899_source.html#l00101\">101</a> of file <a class=\"el\" href=\"a00899_source.html\">parameterization.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a0381bb479d54363806267616b61c6ed3\" name=\"a0381bb479d54363806267616b61c6ed3\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0381bb479d54363806267616b61c6ed3\">&#9670;&#160;</a></span>GetSubFace()</h2>\n \n <div class=\"memitem\">\n@@ -630,15 +630,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the integer sub-face containing the given (u,v) </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00719_source.html#l00202\">202</a> of file <a class=\"el\" href=\"a00719_source.html\">parameterization.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00899_source.html#l00202\">202</a> of file <a class=\"el\" href=\"a00899_source.html\">parameterization.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a485decc00facb0972f8775a8a20851fa\" name=\"a485decc00facb0972f8775a8a20851fa\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a485decc00facb0972f8775a8a20851fa\">&#9670;&#160;</a></span>GetType()</h2>\n \n <div class=\"memitem\">\n@@ -659,15 +659,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the type of parameterization assigned. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00719_source.html#l00098\">98</a> of file <a class=\"el\" href=\"a00719_source.html\">parameterization.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00899_source.html#l00098\">98</a> of file <a class=\"el\" href=\"a00899_source.html\">parameterization.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a9cb32ed5657438f0a1b7f322b221dc75\" name=\"a9cb32ed5657438f0a1b7f322b221dc75\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9cb32ed5657438f0a1b7f322b221dc75\">&#9670;&#160;</a></span>GetVertexCoord()</h2>\n \n <div class=\"memitem\">\n@@ -720,15 +720,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns if <a class=\"el\" href=\"a00921.html\" title=\"Simple class defining the 2D parameterization of a face.\">Parameterization</a> has been partitioned into sub-faces. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00719_source.html#l00196\">196</a> of file <a class=\"el\" href=\"a00719_source.html\">parameterization.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00899_source.html#l00196\">196</a> of file <a class=\"el\" href=\"a00899_source.html\">parameterization.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ac532c4b500b1a85ea22217f2c65a70ed\" name=\"ac532c4b500b1a85ea22217f2c65a70ed\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac532c4b500b1a85ea22217f2c65a70ed\">&#9670;&#160;</a></span>IsValid()</h2>\n \n <div class=\"memitem\">\n@@ -749,15 +749,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns true if correctly initialized. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00719_source.html#l00081\">81</a> of file <a class=\"el\" href=\"a00719_source.html\">parameterization.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00899_source.html#l00081\">81</a> of file <a class=\"el\" href=\"a00899_source.html\">parameterization.h</a>.</p>\n \n </div>\n </div>\n <a id=\"af488514a0e7868dd273ebe767420c416\" name=\"af488514a0e7868dd273ebe767420c416\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af488514a0e7868dd273ebe767420c416\">&#9670;&#160;</a></span>operator=()</h2>\n \n <div class=\"memitem\">\n@@ -780,15 +780,15 @@\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/bfr/<a class=\"el\" href=\"a00719_source.html\">parameterization.h</a></li>\n+<li>opensubdiv/bfr/<a class=\"el\" href=\"a00899_source.html\">parameterization.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00907.html\">Bfr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00921.html\">Parameterization</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00925.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00925.html", "unified_diff": "@@ -96,15 +96,15 @@\n   <div class=\"headertitle\"><div class=\"title\">RefinerSurfaceFactoryBase Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Intermediate subclass of <a class=\"el\" href=\"a00941.html\" title=\"Base class providing initialization of a Surface for each face of a mesh.\">SurfaceFactory</a> with <a class=\"el\" href=\"a01121.html\" title=\"Stores topology data for a specified set of refinement options.\">Far::TopologyRefiner</a> as the mesh.  \n  <a href=\"a00925.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00716_source.html\">refinerSurfaceFactory.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00884_source.html\">refinerSurfaceFactory.h</a>&gt;</code></p>\n <div class=\"dynheader\">\n Inheritance diagram for RefinerSurfaceFactoryBase:</div>\n <div class=\"dyncontent\">\n  <div class=\"center\">\n   <img src=\"a00925.png\" usemap=\"#RefinerSurfaceFactoryBase_map\" alt=\"\"/>\n   <map id=\"RefinerSurfaceFactoryBase_map\" name=\"RefinerSurfaceFactoryBase_map\">\n <area href=\"a00941.html\" title=\"Base class providing initialization of a Surface for each face of a mesh.\" alt=\"SurfaceFactory\" shape=\"rect\" coords=\"0,56,249,80\"/>\n@@ -236,15 +236,15 @@\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p>Intermediate subclass of <a class=\"el\" href=\"a00941.html\" title=\"Base class providing initialization of a Surface for each face of a mesh.\">SurfaceFactory</a> with <a class=\"el\" href=\"a01121.html\" title=\"Stores topology data for a specified set of refinement options.\">Far::TopologyRefiner</a> as the mesh. </p>\n <p><a class=\"el\" href=\"a00925.html\" title=\"Intermediate subclass of SurfaceFactory with Far::TopologyRefiner as the mesh.\">RefinerSurfaceFactoryBase</a> is an intermediate subclass of <a class=\"el\" href=\"a00941.html\" title=\"Base class providing initialization of a Surface for each face of a mesh.\">SurfaceFactory</a> using <a class=\"el\" href=\"a01121.html\" title=\"Stores topology data for a specified set of refinement options.\">Far::TopologyRefiner</a> as the connected mesh representation.</p>\n <p>The <a class=\"el\" href=\"a00957.html\" title=\"Abstract interface adapting SurfaceFactory to a connected mesh representation.\">SurfaceFactoryMeshAdapter</a> interface for TopologyRefiner is provided in full, along with some public extensions specific to TopologyRefiner.</p>\n <p>Additional caching expectations of <a class=\"el\" href=\"a00941.html\" title=\"Base class providing initialization of a Surface for each face of a mesh.\">SurfaceFactory</a> are NOT specified here. These are deferred to subclasses to implement different behaviors of the factory's internal caching. A template for such subclasses is additionally provided &ndash; allowing clients desiring a thread-safe cache to simply declare a subclass for a preferred thread-safe type. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00716_source.html#l00058\">58</a> of file <a class=\"el\" href=\"a00716_source.html\">refinerSurfaceFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00884_source.html#l00058\">58</a> of file <a class=\"el\" href=\"a00884_source.html\">refinerSurfaceFactory.h</a>.</p>\n </div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"af457c931d6d611e35737454f2c483f84\" name=\"af457c931d6d611e35737454f2c483f84\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af457c931d6d611e35737454f2c483f84\">&#9670;&#160;</a></span>RefinerSurfaceFactoryBase()</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n       <table class=\"memname\">\n@@ -317,15 +317,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return the instance of the mesh. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00716_source.html#l00079\">79</a> of file <a class=\"el\" href=\"a00716_source.html\">refinerSurfaceFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00884_source.html#l00079\">79</a> of file <a class=\"el\" href=\"a00884_source.html\">refinerSurfaceFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a9920fb01c4b75c94a953a98008a4baba\" name=\"a9920fb01c4b75c94a953a98008a4baba\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9920fb01c4b75c94a953a98008a4baba\">&#9670;&#160;</a></span>GetNumFaces()</h2>\n \n <div class=\"memitem\">\n@@ -346,15 +346,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return the number of faces. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00716_source.html#l00082\">82</a> of file <a class=\"el\" href=\"a00716_source.html\">refinerSurfaceFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00884_source.html#l00082\">82</a> of file <a class=\"el\" href=\"a00884_source.html\">refinerSurfaceFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aa9be824a572029f3ec1e0c0d6cfecd77\" name=\"aa9be824a572029f3ec1e0c0d6cfecd77\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa9be824a572029f3ec1e0c0d6cfecd77\">&#9670;&#160;</a></span>GetNumFVarChannels()</h2>\n \n <div class=\"memitem\">\n@@ -375,20 +375,20 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return the number of face-varying channels. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00716_source.html#l00085\">85</a> of file <a class=\"el\" href=\"a00716_source.html\">refinerSurfaceFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00884_source.html#l00085\">85</a> of file <a class=\"el\" href=\"a00884_source.html\">refinerSurfaceFactory.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/bfr/<a class=\"el\" href=\"a00716_source.html\">refinerSurfaceFactory.h</a></li>\n+<li>opensubdiv/bfr/<a class=\"el\" href=\"a00884_source.html\">refinerSurfaceFactory.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00907.html\">Bfr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00925.html\">RefinerSurfaceFactoryBase</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00929.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00929.html", "unified_diff": "@@ -97,15 +97,15 @@\n   <div class=\"headertitle\"><div class=\"title\">RefinerSurfaceFactory&lt; CACHE_TYPE &gt; Class Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Template for concrete subclasses of <a class=\"el\" href=\"a00925.html\" title=\"Intermediate subclass of SurfaceFactory with Far::TopologyRefiner as the mesh.\">RefinerSurfaceFactoryBase</a>.  \n  <a href=\"a00929.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00716_source.html\">refinerSurfaceFactory.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00884_source.html\">refinerSurfaceFactory.h</a>&gt;</code></p>\n <div class=\"dynheader\">\n Inheritance diagram for RefinerSurfaceFactory&lt; CACHE_TYPE &gt;:</div>\n <div class=\"dyncontent\">\n  <div class=\"center\">\n   <img src=\"a00929.png\" usemap=\"#RefinerSurfaceFactory_3C_20CACHE_5FTYPE_20_3E_map\" alt=\"\"/>\n   <map id=\"RefinerSurfaceFactory_3C_20CACHE_5FTYPE_20_3E_map\" name=\"RefinerSurfaceFactory_3C_20CACHE_5FTYPE_20_3E_map\">\n <area href=\"a00925.html\" title=\"Intermediate subclass of SurfaceFactory with Far::TopologyRefiner as the mesh.\" alt=\"RefinerSurfaceFactoryBase\" shape=\"rect\" coords=\"0,112,249,136\"/>\n@@ -241,15 +241,15 @@\n   <table class=\"tparams\">\n     <tr><td class=\"paramname\">CACHE_TYPE</td><td>A subclass of <a class=\"el\" href=\"a00949.html\" title=\"Container used internally by SurfaceFactory to store reusable information.\">SurfaceFactoryCache</a></td></tr>\n   </table>\n   </dd>\n </dl>\n <p>Note a default template parameter uses the base <a class=\"el\" href=\"a00949.html\" title=\"Container used internally by SurfaceFactory to store reusable information.\">SurfaceFactoryCache</a> for convenience, but which is not thread-safe. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00716_source.html#l00157\">157</a> of file <a class=\"el\" href=\"a00716_source.html\">refinerSurfaceFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00884_source.html#l00157\">157</a> of file <a class=\"el\" href=\"a00884_source.html\">refinerSurfaceFactory.h</a>.</p>\n </div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"af74dafe122d798d4069b675c52f6665a\" name=\"af74dafe122d798d4069b675c52f6665a\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af74dafe122d798d4069b675c52f6665a\">&#9670;&#160;</a></span>RefinerSurfaceFactory()</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n <div class=\"memtemplate\">\n@@ -279,15 +279,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00716_source.html#l00159\">159</a> of file <a class=\"el\" href=\"a00716_source.html\">refinerSurfaceFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00884_source.html#l00159\">159</a> of file <a class=\"el\" href=\"a00884_source.html\">refinerSurfaceFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aaeb5db4a748ed56e042ab8c003faa8e9\" name=\"aaeb5db4a748ed56e042ab8c003faa8e9\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aaeb5db4a748ed56e042ab8c003faa8e9\">&#9670;&#160;</a></span>~RefinerSurfaceFactory()</h2>\n \n <div class=\"memitem\">\n@@ -311,15 +311,15 @@\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/bfr/<a class=\"el\" href=\"a00716_source.html\">refinerSurfaceFactory.h</a></li>\n+<li>opensubdiv/bfr/<a class=\"el\" href=\"a00884_source.html\">refinerSurfaceFactory.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00907.html\">Bfr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00929.html\">RefinerSurfaceFactory</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00933.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00933.html", "unified_diff": "@@ -98,15 +98,15 @@\n   <div class=\"headertitle\"><div class=\"title\">Surface&lt; REAL &gt; Class Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Encapsulates the limit surface for a face of a mesh.  \n  <a href=\"a00933.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00704_source.html\">surface.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00887_source.html\">surface.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n <tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00937.html\">PointDescriptor</a></td></tr>\n <tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Simple struct defining the size and stride of points in arrays.  <a href=\"a00937.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n@@ -228,15 +228,15 @@\n     <tr><td class=\"paramname\">REAL</td><td>Floating point precision (float or double only)</td></tr>\n   </table>\n   </dd>\n </dl>\n <p>Instances of <a class=\"el\" href=\"a00933.html\" title=\"Encapsulates the limit surface for a face of a mesh.\">Surface</a> are created or initialized by a subclass of the <a class=\"el\" href=\"a00941.html\" title=\"Base class providing initialization of a Surface for each face of a mesh.\">SurfaceFactory</a>. Since existing instances can be re-initialized, they should be tested for validity after such re-initialization.</p>\n <p>All Surfaces are assigned a <a class=\"el\" href=\"a00921.html\" title=\"Simple class defining the 2D parameterization of a face.\">Parameterization</a> based on the subdivision scheme and the size of the face, which can then be used for evaluation and tessellation of the surface. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00059\">59</a> of file <a class=\"el\" href=\"a00704_source.html\">surface.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00887_source.html#l00059\">59</a> of file <a class=\"el\" href=\"a00887_source.html\">surface.h</a>.</p>\n </div><h2 class=\"groupheader\">Member Typedef Documentation</h2>\n <a id=\"a4a0e50e01fef3e431767a928c2631cab\" name=\"a4a0e50e01fef3e431767a928c2631cab\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4a0e50e01fef3e431767a928c2631cab\">&#9670;&#160;</a></span>Index</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n <div class=\"memtemplate\">\n@@ -246,15 +246,15 @@\n           <td class=\"memname\">typedef int <a class=\"el\" href=\"a00933.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a></td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n <p>Integer type representing a mesh index. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00072\">72</a> of file <a class=\"el\" href=\"a00704_source.html\">surface.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00887_source.html#l00072\">72</a> of file <a class=\"el\" href=\"a00887_source.html\">surface.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"a6e1a6ad293d9318f65c2e28c468c66ba\" name=\"a6e1a6ad293d9318f65c2e28c468c66ba\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6e1a6ad293d9318f65c2e28c468c66ba\">&#9670;&#160;</a></span>Surface() <span class=\"overload\">[1/2]</span></h2>\n \n@@ -531,15 +531,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Clear a previously initialized <a class=\"el\" href=\"a00933.html\" title=\"Encapsulates the limit surface for a face of a mesh.\">Surface</a>. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00089\">89</a> of file <a class=\"el\" href=\"a00704_source.html\">surface.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00887_source.html#l00089\">89</a> of file <a class=\"el\" href=\"a00887_source.html\">surface.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ad2b27352bb353eeb1f1419c2ad07385e\" name=\"ad2b27352bb353eeb1f1419c2ad07385e\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad2b27352bb353eeb1f1419c2ad07385e\">&#9670;&#160;</a></span>ComputePatchPoints()</h2>\n \n <div class=\"memitem\">\n@@ -581,15 +581,15 @@\n   <table class=\"params\">\n     <tr><td class=\"paramname\">patchPoints</td><td>Array of patch point data to be modified </td></tr>\n     <tr><td class=\"paramname\">patchPointDesc</td><td>The size and stride of patch point data </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00331\">331</a> of file <a class=\"el\" href=\"a00704_source.html\">surface.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00887_source.html#l00331\">331</a> of file <a class=\"el\" href=\"a00887_source.html\">surface.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a1563dc3496644c732d9644a1f7133d0e\" name=\"a1563dc3496644c732d9644a1f7133d0e\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1563dc3496644c732d9644a1f7133d0e\">&#9670;&#160;</a></span>Evaluate() <span class=\"overload\">[1/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -635,15 +635,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Evaluation of position. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00372\">372</a> of file <a class=\"el\" href=\"a00704_source.html\">surface.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00887_source.html#l00372\">372</a> of file <a class=\"el\" href=\"a00887_source.html\">surface.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a13d195e96314a82c23dc716c9500770a\" name=\"a13d195e96314a82c23dc716c9500770a\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a13d195e96314a82c23dc716c9500770a\">&#9670;&#160;</a></span>Evaluate() <span class=\"overload\">[2/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -701,15 +701,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Overload of evaluation for 1st derivatives. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00382\">382</a> of file <a class=\"el\" href=\"a00704_source.html\">surface.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00887_source.html#l00382\">382</a> of file <a class=\"el\" href=\"a00887_source.html\">surface.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a7e06def79a1cb93ef61d58f06b3ccec1\" name=\"a7e06def79a1cb93ef61d58f06b3ccec1\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7e06def79a1cb93ef61d58f06b3ccec1\">&#9670;&#160;</a></span>Evaluate() <span class=\"overload\">[3/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -785,15 +785,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Overload of evaluation for 2nd derivatives. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00392\">392</a> of file <a class=\"el\" href=\"a00704_source.html\">surface.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00887_source.html#l00392\">392</a> of file <a class=\"el\" href=\"a00887_source.html\">surface.h</a>.</p>\n \n </div>\n </div>\n <a id=\"afc66676db4f0e7834e8b0fa77c7c1b46\" name=\"afc66676db4f0e7834e8b0fa77c7c1b46\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afc66676db4f0e7834e8b0fa77c7c1b46\">&#9670;&#160;</a></span>EvaluateStencil() <span class=\"overload\">[1/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -827,15 +827,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Evaluation of the limit stencil for position. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00416\">416</a> of file <a class=\"el\" href=\"a00704_source.html\">surface.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00887_source.html#l00416\">416</a> of file <a class=\"el\" href=\"a00887_source.html\">surface.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a79f6ee2550666194950187ff62bc4a6d\" name=\"a79f6ee2550666194950187ff62bc4a6d\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a79f6ee2550666194950187ff62bc4a6d\">&#9670;&#160;</a></span>EvaluateStencil() <span class=\"overload\">[2/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -881,15 +881,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Overload of limit stencil evaluation for 1st derivatives. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00423\">423</a> of file <a class=\"el\" href=\"a00704_source.html\">surface.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00887_source.html#l00423\">423</a> of file <a class=\"el\" href=\"a00887_source.html\">surface.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a9c615b13fdbe2f618a45a22967267227\" name=\"a9c615b13fdbe2f618a45a22967267227\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9c615b13fdbe2f618a45a22967267227\">&#9670;&#160;</a></span>EvaluateStencil() <span class=\"overload\">[3/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -953,15 +953,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Overload of limit stencil evaluation for 2nd derivatives. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00431\">431</a> of file <a class=\"el\" href=\"a00704_source.html\">surface.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00887_source.html#l00431\">431</a> of file <a class=\"el\" href=\"a00887_source.html\">surface.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ad24baa29c6dfff25cd17ee1269ab9f8d\" name=\"ad24baa29c6dfff25cd17ee1269ab9f8d\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad24baa29c6dfff25cd17ee1269ab9f8d\">&#9670;&#160;</a></span>GatherControlPoints()</h2>\n \n <div class=\"memitem\">\n@@ -1067,15 +1067,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return the size of the face. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00109\">109</a> of file <a class=\"el\" href=\"a00704_source.html\">surface.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00887_source.html#l00109\">109</a> of file <a class=\"el\" href=\"a00887_source.html\">surface.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a133ed4fbaddeb2a8036915b14cb21cff\" name=\"a133ed4fbaddeb2a8036915b14cb21cff\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a133ed4fbaddeb2a8036915b14cb21cff\">&#9670;&#160;</a></span>GetNumControlPoints()</h2>\n \n <div class=\"memitem\">\n@@ -1098,15 +1098,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return the number of control points affecting the <a class=\"el\" href=\"a00933.html\" title=\"Encapsulates the limit surface for a face of a mesh.\">Surface</a>. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00137\">137</a> of file <a class=\"el\" href=\"a00704_source.html\">surface.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00887_source.html#l00137\">137</a> of file <a class=\"el\" href=\"a00887_source.html\">surface.h</a>.</p>\n \n </div>\n </div>\n <a id=\"adff7aaf7aca5ccb158ebc202cb435e33\" name=\"adff7aaf7aca5ccb158ebc202cb435e33\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adff7aaf7aca5ccb158ebc202cb435e33\">&#9670;&#160;</a></span>GetNumPatchPoints()</h2>\n \n <div class=\"memitem\">\n@@ -1150,15 +1150,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return the <a class=\"el\" href=\"a00921.html\" title=\"Simple class defining the 2D parameterization of a face.\">Parameterization</a>. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00106\">106</a> of file <a class=\"el\" href=\"a00704_source.html\">surface.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00887_source.html#l00106\">106</a> of file <a class=\"el\" href=\"a00887_source.html\">surface.h</a>.</p>\n \n </div>\n </div>\n <a id=\"adb6e3801db80be8fef1fd0fa4673b041\" name=\"adb6e3801db80be8fef1fd0fa4673b041\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adb6e3801db80be8fef1fd0fa4673b041\">&#9670;&#160;</a></span>IsLinear()</h2>\n \n <div class=\"memitem\">\n@@ -1181,15 +1181,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return if the <a class=\"el\" href=\"a00933.html\" title=\"Encapsulates the limit surface for a face of a mesh.\">Surface</a> is linear. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00115\">115</a> of file <a class=\"el\" href=\"a00704_source.html\">surface.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00887_source.html#l00115\">115</a> of file <a class=\"el\" href=\"a00887_source.html\">surface.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a193470573424fe6b2e91f317509b5897\" name=\"a193470573424fe6b2e91f317509b5897\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a193470573424fe6b2e91f317509b5897\">&#9670;&#160;</a></span>IsRegular()</h2>\n \n <div class=\"memitem\">\n@@ -1212,15 +1212,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return if the <a class=\"el\" href=\"a00933.html\" title=\"Encapsulates the limit surface for a face of a mesh.\">Surface</a> is a single regular patch. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00112\">112</a> of file <a class=\"el\" href=\"a00704_source.html\">surface.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00887_source.html#l00112\">112</a> of file <a class=\"el\" href=\"a00887_source.html\">surface.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ac532c4b500b1a85ea22217f2c65a70ed\" name=\"ac532c4b500b1a85ea22217f2c65a70ed\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac532c4b500b1a85ea22217f2c65a70ed\">&#9670;&#160;</a></span>IsValid()</h2>\n \n <div class=\"memitem\">\n@@ -1243,15 +1243,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return true if successfully initialized. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00086\">86</a> of file <a class=\"el\" href=\"a00704_source.html\">surface.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00887_source.html#l00086\">86</a> of file <a class=\"el\" href=\"a00887_source.html\">surface.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a85251d7cc5b0aa5838fa1767b6e31e5d\" name=\"a85251d7cc5b0aa5838fa1767b6e31e5d\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a85251d7cc5b0aa5838fa1767b6e31e5d\">&#9670;&#160;</a></span>operator=()</h2>\n \n <div class=\"memitem\">\n@@ -1336,15 +1336,15 @@\n     <tr><td class=\"paramname\">patchPoints</td><td>Output array of patch point data </td></tr>\n     <tr><td class=\"paramname\">patchPointDesc</td><td>The size and stride of patch point data</td></tr>\n   </table>\n   </dd>\n </dl>\n <p>Note that this method requires the mesh data be in a contiguous array. If a large data set is fragmented into blocks or pages, this method cannot be used. The control points will need to be gathered explicitly as the subset of patch points, after which the method to compute the remaining patch points can be used. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00345\">345</a> of file <a class=\"el\" href=\"a00704_source.html\">surface.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00887_source.html#l00345\">345</a> of file <a class=\"el\" href=\"a00887_source.html\">surface.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Friends And Related Symbol Documentation</h2>\n <a id=\"a3bdc23048cdd1242d0a429413fa89256\" name=\"a3bdc23048cdd1242d0a429413fa89256\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3bdc23048cdd1242d0a429413fa89256\">&#9670;&#160;</a></span>SurfaceFactory</h2>\n \n@@ -1363,20 +1363,20 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">friend</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00315\">315</a> of file <a class=\"el\" href=\"a00704_source.html\">surface.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00887_source.html#l00315\">315</a> of file <a class=\"el\" href=\"a00887_source.html\">surface.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/bfr/<a class=\"el\" href=\"a00704_source.html\">surface.h</a></li>\n+<li>opensubdiv/bfr/<a class=\"el\" href=\"a00887_source.html\">surface.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00907.html\">Bfr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00933.html\">Surface</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00937.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00937.html", "unified_diff": "@@ -98,15 +98,15 @@\n   <div class=\"headertitle\"><div class=\"title\">Surface&lt; REAL &gt;::PointDescriptor Struct Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Simple struct defining the size and stride of points in arrays.  \n  <a href=\"a00937.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00704_source.html\">surface.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00887_source.html\">surface.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\n Public Member Functions</h2></td></tr>\n <tr class=\"memitem:ac60ab7fa3966237e2de95cc60defa4de\" id=\"r_ac60ab7fa3966237e2de95cc60defa4de\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00937.html#ac60ab7fa3966237e2de95cc60defa4de\">PointDescriptor</a> ()</td></tr>\n <tr class=\"separator:ac60ab7fa3966237e2de95cc60defa4de\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a69d66788e741236b1176159a1d609189\" id=\"r_a69d66788e741236b1176159a1d609189\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00937.html#a69d66788e741236b1176159a1d609189\">PointDescriptor</a> (int n)</td></tr>\n <tr class=\"separator:a69d66788e741236b1176159a1d609189\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n@@ -120,15 +120,15 @@\n <tr class=\"memitem:a08f66a6870d87afcd5dc1b60d1019692\" id=\"r_a08f66a6870d87afcd5dc1b60d1019692\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00937.html#a08f66a6870d87afcd5dc1b60d1019692\">stride</a></td></tr>\n <tr class=\"separator:a08f66a6870d87afcd5dc1b60d1019692\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><div class=\"compoundTemplParams\">template&lt;typename REAL&gt;<br />\n struct OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface&lt; REAL &gt;::PointDescriptor</div><p>Simple struct defining the size and stride of points in arrays. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00063\">63</a> of file <a class=\"el\" href=\"a00704_source.html\">surface.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00887_source.html#l00063\">63</a> of file <a class=\"el\" href=\"a00887_source.html\">surface.h</a>.</p>\n </div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"ac60ab7fa3966237e2de95cc60defa4de\" name=\"ac60ab7fa3966237e2de95cc60defa4de\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac60ab7fa3966237e2de95cc60defa4de\">&#9670;&#160;</a></span>PointDescriptor() <span class=\"overload\">[1/3]</span></h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n <div class=\"memtemplate\">\n@@ -147,15 +147,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00064\">64</a> of file <a class=\"el\" href=\"a00704_source.html\">surface.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00887_source.html#l00064\">64</a> of file <a class=\"el\" href=\"a00887_source.html\">surface.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a69d66788e741236b1176159a1d609189\" name=\"a69d66788e741236b1176159a1d609189\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a69d66788e741236b1176159a1d609189\">&#9670;&#160;</a></span>PointDescriptor() <span class=\"overload\">[2/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -177,15 +177,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00065\">65</a> of file <a class=\"el\" href=\"a00704_source.html\">surface.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00887_source.html#l00065\">65</a> of file <a class=\"el\" href=\"a00887_source.html\">surface.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a6e6069bdfef867e798fe863f40f4274a\" name=\"a6e6069bdfef867e798fe863f40f4274a\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6e6069bdfef867e798fe863f40f4274a\">&#9670;&#160;</a></span>PointDescriptor() <span class=\"overload\">[3/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -217,15 +217,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00066\">66</a> of file <a class=\"el\" href=\"a00704_source.html\">surface.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00887_source.html#l00066\">66</a> of file <a class=\"el\" href=\"a00887_source.html\">surface.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Member Data Documentation</h2>\n <a id=\"a439227feff9d7f55384e8780cfc2eb82\" name=\"a439227feff9d7f55384e8780cfc2eb82\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a439227feff9d7f55384e8780cfc2eb82\">&#9670;&#160;</a></span>size</h2>\n \n@@ -236,15 +236,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">int size</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00068\">68</a> of file <a class=\"el\" href=\"a00704_source.html\">surface.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00887_source.html#l00068\">68</a> of file <a class=\"el\" href=\"a00887_source.html\">surface.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a08f66a6870d87afcd5dc1b60d1019692\" name=\"a08f66a6870d87afcd5dc1b60d1019692\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a08f66a6870d87afcd5dc1b60d1019692\">&#9670;&#160;</a></span>stride</h2>\n \n <div class=\"memitem\">\n@@ -254,20 +254,20 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">int stride</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00068\">68</a> of file <a class=\"el\" href=\"a00704_source.html\">surface.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00887_source.html#l00068\">68</a> of file <a class=\"el\" href=\"a00887_source.html\">surface.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li>opensubdiv/bfr/<a class=\"el\" href=\"a00704_source.html\">surface.h</a></li>\n+<li>opensubdiv/bfr/<a class=\"el\" href=\"a00887_source.html\">surface.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00907.html\">Bfr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00933.html\">Surface</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00937.html\">PointDescriptor</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00941.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00941.html", "unified_diff": "@@ -98,15 +98,15 @@\n   <div class=\"headertitle\"><div class=\"title\">SurfaceFactory Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Base class providing initialization of a <a class=\"el\" href=\"a00933.html\" title=\"Encapsulates the limit surface for a face of a mesh.\">Surface</a> for each face of a mesh.  \n  <a href=\"a00941.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00713_source.html\">surfaceFactory.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00881_source.html\">surfaceFactory.h</a>&gt;</code></p>\n <div class=\"dynheader\">\n Inheritance diagram for SurfaceFactory:</div>\n <div class=\"dyncontent\">\n  <div class=\"center\">\n   <img src=\"a00941.png\" usemap=\"#SurfaceFactory_map\" alt=\"\"/>\n   <map id=\"SurfaceFactory_map\" name=\"SurfaceFactory_map\">\n <area href=\"a00957.html\" title=\"Abstract interface adapting SurfaceFactory to a connected mesh representation.\" alt=\"SurfaceFactoryMeshAdapter\" shape=\"rect\" coords=\"0,0,249,24\"/>\n@@ -245,15 +245,15 @@\n <p>A subclass of <a class=\"el\" href=\"a00941.html\" title=\"Base class providing initialization of a Surface for each face of a mesh.\">SurfaceFactory</a> is written to support a specific type of connected mesh. The public interface of <a class=\"el\" href=\"a00941.html\" title=\"Base class providing initialization of a Surface for each face of a mesh.\">SurfaceFactory</a> is both inherited by and extended by the subclasses. Expected extensions to the interface include one or more constructors (i.e. given a specific instance of the subclass' mesh type) as well as other methods that may involve the mesh's data types (primvars) in their native form.</p>\n <p>By inheriting the <a class=\"el\" href=\"a00957.html\" title=\"Abstract interface adapting SurfaceFactory to a connected mesh representation.\">SurfaceFactoryMeshAdapter</a> interface, <a class=\"el\" href=\"a00941.html\" title=\"Base class providing initialization of a Surface for each face of a mesh.\">SurfaceFactory</a> requires its subclasses to implement the small suite of pure virtual methods to complete the factory's implementation for the subclass' mesh type. These methods provide the base factory with topological information about faces of that mesh &ndash; from which it creates instances of <a class=\"el\" href=\"a00933.html\" title=\"Encapsulates the limit surface for a face of a mesh.\">Surface</a> defining their limit surface.</p>\n <p>The <a class=\"el\" href=\"a00941.html\" title=\"Base class providing initialization of a Surface for each face of a mesh.\">SurfaceFactory</a> inherits rather than contains <a class=\"el\" href=\"a00957.html\" title=\"Abstract interface adapting SurfaceFactory to a connected mesh representation.\">SurfaceFactoryMeshAdapter</a> as instances of <a class=\"el\" href=\"a00957.html\" title=\"Abstract interface adapting SurfaceFactory to a connected mesh representation.\">SurfaceFactoryMeshAdapter</a> serve no purpose on their own, and the interface between the two is designed with the specific needs of the <a class=\"el\" href=\"a00941.html\" title=\"Base class providing initialization of a Surface for each face of a mesh.\">SurfaceFactory</a>. When customizing a subclass of <a class=\"el\" href=\"a00941.html\" title=\"Base class providing initialization of a Surface for each face of a mesh.\">SurfaceFactory</a> for a particular mesh type, this inheritance also avoids the need to coordinate the subclass of <a class=\"el\" href=\"a00941.html\" title=\"Base class providing initialization of a Surface for each face of a mesh.\">SurfaceFactory</a> with the separate subclass of <a class=\"el\" href=\"a00957.html\" title=\"Abstract interface adapting SurfaceFactory to a connected mesh representation.\">SurfaceFactoryMeshAdapter</a>.</p>\n <p>It must be emphasized that a subclass of <a class=\"el\" href=\"a00941.html\" title=\"Base class providing initialization of a Surface for each face of a mesh.\">SurfaceFactory</a> is written to support a specific type of \"connected\" mesh &ndash; not simply a container of data defining a mesh. The <a class=\"el\" href=\"a00957.html\" title=\"Abstract interface adapting SurfaceFactory to a connected mesh representation.\">SurfaceFactoryMeshAdapter</a> interface describes the complete topological neighborhood around a specific face, and without any connectivity between mesh components (e.g. given a vertex, what are its incident faces?), satisfying these methods will be impossible, or, at best, extremely inefficient.</p>\n <p>Ultimately a subclass of <a class=\"el\" href=\"a00941.html\" title=\"Base class providing initialization of a Surface for each face of a mesh.\">SurfaceFactory</a> is expected to be a lightweight interface to a connected mesh &ndash; lightweight in terms of both time and memory usage. It's construction is expected to be trivial, after which it can quickly and efficiently provide a <a class=\"el\" href=\"a00933.html\" title=\"Encapsulates the limit surface for a face of a mesh.\">Surface</a> for one or more faces of a mesh for immediate evaluation. So construction of an instance of a subclass should involve no heavy pre-processing &ndash; the greater the overhead of a subclass constructor, the more it violates the intention of the base class as a lightweight interface.</p>\n <p>Instances of <a class=\"el\" href=\"a00941.html\" title=\"Base class providing initialization of a Surface for each face of a mesh.\">SurfaceFactory</a> are initialized with a set of <a class=\"el\" href=\"a00945.html\" title=\"Simple set of options assigned to instances of SurfaceFactory.\">Options</a> that form part of the state of the factory and remain fixed for its lifetime. Such options are intended to ensure that the instances of <a class=\"el\" href=\"a00933.html\" title=\"Encapsulates the limit surface for a face of a mesh.\">Surface</a> that it creates are consistent, as well as to enable/disable or otherwise manage caching for construction efficiency &ndash; either internally or between itself and other factories (advanced). </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00713_source.html#l00103\">103</a> of file <a class=\"el\" href=\"a00713_source.html\">surfaceFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00881_source.html#l00103\">103</a> of file <a class=\"el\" href=\"a00881_source.html\">surfaceFactory.h</a>.</p>\n </div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"a1e36434fc02ae0d7a087a8eb07577ee9\" name=\"a1e36434fc02ae0d7a087a8eb07577ee9\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1e36434fc02ae0d7a087a8eb07577ee9\">&#9670;&#160;</a></span>~SurfaceFactory()</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n <table class=\"mlabels\">\n@@ -372,15 +372,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Construct a <a class=\"el\" href=\"a00933.html\" title=\"Encapsulates the limit surface for a face of a mesh.\">Surface</a> for the default face-varying data. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00713_source.html#l00551\">551</a> of file <a class=\"el\" href=\"a00713_source.html\">surfaceFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00881_source.html#l00551\">551</a> of file <a class=\"el\" href=\"a00881_source.html\">surfaceFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a59227e292ea63aa9641a090521cfd457\" name=\"a59227e292ea63aa9641a090521cfd457\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a59227e292ea63aa9641a090521cfd457\">&#9670;&#160;</a></span>CreateFaceVaryingSurface() <span class=\"overload\">[2/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -414,15 +414,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Construct a <a class=\"el\" href=\"a00933.html\" title=\"Encapsulates the limit surface for a face of a mesh.\">Surface</a> for specified face-varying data. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00713_source.html#l00543\">543</a> of file <a class=\"el\" href=\"a00713_source.html\">surfaceFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00881_source.html#l00543\">543</a> of file <a class=\"el\" href=\"a00881_source.html\">surfaceFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a81638f2ff6818fd96aa7cd1ad3ed0703\" name=\"a81638f2ff6818fd96aa7cd1ad3ed0703\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a81638f2ff6818fd96aa7cd1ad3ed0703\">&#9670;&#160;</a></span>CreateVaryingSurface()</h2>\n \n <div class=\"memitem\">\n@@ -446,15 +446,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Construct a <a class=\"el\" href=\"a00933.html\" title=\"Encapsulates the limit surface for a face of a mesh.\">Surface</a> for varying data. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00713_source.html#l00535\">535</a> of file <a class=\"el\" href=\"a00713_source.html\">surfaceFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00881_source.html#l00535\">535</a> of file <a class=\"el\" href=\"a00881_source.html\">surfaceFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a676cf019574c99fa77341ac09889192d\" name=\"a676cf019574c99fa77341ac09889192d\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a676cf019574c99fa77341ac09889192d\">&#9670;&#160;</a></span>CreateVertexSurface()</h2>\n \n <div class=\"memitem\">\n@@ -478,15 +478,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Construct a <a class=\"el\" href=\"a00933.html\" title=\"Encapsulates the limit surface for a face of a mesh.\">Surface</a> for vertex data. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00713_source.html#l00527\">527</a> of file <a class=\"el\" href=\"a00713_source.html\">surfaceFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00881_source.html#l00527\">527</a> of file <a class=\"el\" href=\"a00881_source.html\">surfaceFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a5cab9f649e56c15a486e3878a19bedf7\" name=\"a5cab9f649e56c15a486e3878a19bedf7\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5cab9f649e56c15a486e3878a19bedf7\">&#9670;&#160;</a></span>FaceHasLimitSurface()</h2>\n \n <div class=\"memitem\">\n@@ -549,15 +549,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return the set of subdivision options. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00713_source.html#l00173\">173</a> of file <a class=\"el\" href=\"a00713_source.html\">surfaceFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00881_source.html#l00173\">173</a> of file <a class=\"el\" href=\"a00881_source.html\">surfaceFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a758e06255013d2d7393c3ac2d18f6922\" name=\"a758e06255013d2d7393c3ac2d18f6922\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a758e06255013d2d7393c3ac2d18f6922\">&#9670;&#160;</a></span>GetSchemeType()</h2>\n \n <div class=\"memitem\">\n@@ -578,15 +578,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return the subdivision scheme. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00713_source.html#l00170\">170</a> of file <a class=\"el\" href=\"a00713_source.html\">surfaceFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00881_source.html#l00170\">170</a> of file <a class=\"el\" href=\"a00881_source.html\">surfaceFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a2236306cbbc12f5a77753e269c76fe0e\" name=\"a2236306cbbc12f5a77753e269c76fe0e\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2236306cbbc12f5a77753e269c76fe0e\">&#9670;&#160;</a></span>InitFaceVaryingSurface() <span class=\"overload\">[1/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -629,15 +629,15 @@\n     <tr><td class=\"paramname\">faceIndex</td><td>Index of face with limit surface of interest </td></tr>\n     <tr><td class=\"paramname\">surface</td><td><a class=\"el\" href=\"a00933.html\" title=\"Encapsulates the limit surface for a face of a mesh.\">Surface</a> to initialize for face-varying data </td></tr>\n   </table>\n   </dd>\n </dl>\n <dl class=\"section return\"><dt>Returns</dt><dd>True if the face has a limit surface, the default face-varying ID was valid, and its <a class=\"el\" href=\"a00933.html\" title=\"Encapsulates the limit surface for a face of a mesh.\">Surface</a> was successfully constructed </dd></dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00713_source.html#l00500\">500</a> of file <a class=\"el\" href=\"a00713_source.html\">surfaceFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00881_source.html#l00500\">500</a> of file <a class=\"el\" href=\"a00881_source.html\">surfaceFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a9cd69d28232867bdbb5f0b0cfcea5db5\" name=\"a9cd69d28232867bdbb5f0b0cfcea5db5\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9cd69d28232867bdbb5f0b0cfcea5db5\">&#9670;&#160;</a></span>InitFaceVaryingSurface() <span class=\"overload\">[2/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -686,15 +686,15 @@\n     <tr><td class=\"paramname\">surface</td><td><a class=\"el\" href=\"a00933.html\" title=\"Encapsulates the limit surface for a face of a mesh.\">Surface</a> to initialize for face-varying data </td></tr>\n     <tr><td class=\"paramname\">fvarID</td><td>Identifier of a specific set of face-varying data </td></tr>\n   </table>\n   </dd>\n </dl>\n <dl class=\"section return\"><dt>Returns</dt><dd>True if the face has a limit surface, the given face-varying ID was valid, and its <a class=\"el\" href=\"a00933.html\" title=\"Encapsulates the limit surface for a face of a mesh.\">Surface</a> was successfully constructed </dd></dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00713_source.html#l00494\">494</a> of file <a class=\"el\" href=\"a00713_source.html\">surfaceFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00881_source.html#l00494\">494</a> of file <a class=\"el\" href=\"a00881_source.html\">surfaceFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a6ab6508b7c2a5c259acf6b9b89688fc8\" name=\"a6ab6508b7c2a5c259acf6b9b89688fc8\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6ab6508b7c2a5c259acf6b9b89688fc8\">&#9670;&#160;</a></span>InitSurfaces()</h2>\n \n <div class=\"memitem\">\n@@ -766,15 +766,15 @@\n     <tr><td class=\"paramname\">fvarCount</td><td>Size of array of face-varying Surfaces (optional) </td></tr>\n     <tr><td class=\"paramname\">varSurface</td><td><a class=\"el\" href=\"a00933.html\" title=\"Encapsulates the limit surface for a face of a mesh.\">Surface</a> to initialize for varying data (optional) </td></tr>\n   </table>\n   </dd>\n </dl>\n <dl class=\"section return\"><dt>Returns</dt><dd>True if the face has a limit surface, any given face-varying IDs were valid, and all Surfaces were successfully constructed. </dd></dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00713_source.html#l00507\">507</a> of file <a class=\"el\" href=\"a00713_source.html\">surfaceFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00881_source.html#l00507\">507</a> of file <a class=\"el\" href=\"a00881_source.html\">surfaceFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"adee257f933b8440f3e1b4760c506f15f\" name=\"adee257f933b8440f3e1b4760c506f15f\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adee257f933b8440f3e1b4760c506f15f\">&#9670;&#160;</a></span>InitVaryingSurface()</h2>\n \n <div class=\"memitem\">\n@@ -816,15 +816,15 @@\n     <tr><td class=\"paramname\">faceIndex</td><td>Index of face with limit surface of interest </td></tr>\n     <tr><td class=\"paramname\">surface</td><td><a class=\"el\" href=\"a00933.html\" title=\"Encapsulates the limit surface for a face of a mesh.\">Surface</a> to initialize for varying data </td></tr>\n   </table>\n   </dd>\n </dl>\n <dl class=\"section return\"><dt>Returns</dt><dd>True if the face has a limit surface and it was successfully constructed </dd></dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00713_source.html#l00488\">488</a> of file <a class=\"el\" href=\"a00713_source.html\">surfaceFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00881_source.html#l00488\">488</a> of file <a class=\"el\" href=\"a00881_source.html\">surfaceFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"abb4a2f3f7e6623ace424afc5c0315fc1\" name=\"abb4a2f3f7e6623ace424afc5c0315fc1\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abb4a2f3f7e6623ace424afc5c0315fc1\">&#9670;&#160;</a></span>InitVertexSurface()</h2>\n \n <div class=\"memitem\">\n@@ -866,15 +866,15 @@\n     <tr><td class=\"paramname\">faceIndex</td><td>Index of face with limit surface of interest </td></tr>\n     <tr><td class=\"paramname\">surface</td><td><a class=\"el\" href=\"a00933.html\" title=\"Encapsulates the limit surface for a face of a mesh.\">Surface</a> to initialize for vertex data </td></tr>\n   </table>\n   </dd>\n </dl>\n <dl class=\"section return\"><dt>Returns</dt><dd>True if the face has a limit surface and it was successfully constructed </dd></dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00713_source.html#l00482\">482</a> of file <a class=\"el\" href=\"a00713_source.html\">surfaceFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00881_source.html#l00482\">482</a> of file <a class=\"el\" href=\"a00881_source.html\">surfaceFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a5d089ab30f0402395635d7b389710594\" name=\"a5d089ab30f0402395635d7b389710594\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5d089ab30f0402395635d7b389710594\">&#9670;&#160;</a></span>operator=()</h2>\n \n <div class=\"memitem\">\n@@ -925,15 +925,15 @@\n </div><div class=\"memdoc\">\n \n <p>Subclass to identify an internal cache for use by base class. </p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/bfr/<a class=\"el\" href=\"a00713_source.html\">surfaceFactory.h</a></li>\n+<li>opensubdiv/bfr/<a class=\"el\" href=\"a00881_source.html\">surfaceFactory.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00907.html\">Bfr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00941.html\">SurfaceFactory</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00945.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00945.html", "unified_diff": "@@ -97,15 +97,15 @@\n   <div class=\"headertitle\"><div class=\"title\">SurfaceFactory::Options Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Simple set of options assigned to instances of <a class=\"el\" href=\"a00941.html\" title=\"Base class providing initialization of a Surface for each face of a mesh.\">SurfaceFactory</a>.  \n  <a href=\"a00945.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00713_source.html\">surfaceFactory.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00881_source.html\">surfaceFactory.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\n Public Member Functions</h2></td></tr>\n <tr class=\"memitem:a28d39a844c3a37ab61d32ab7c6352f09\" id=\"r_a28d39a844c3a37ab61d32ab7c6352f09\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00945.html#a28d39a844c3a37ab61d32ab7c6352f09\">Options</a> ()</td></tr>\n <tr class=\"separator:a28d39a844c3a37ab61d32ab7c6352f09\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a2db0e8ff5143c3a69bf3772bac7bde78\" id=\"r_a2db0e8ff5143c3a69bf3772bac7bde78\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"a00945.html\">Options</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00945.html#a2db0e8ff5143c3a69bf3772bac7bde78\">SetDefaultFVarID</a> (<a class=\"el\" href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">FVarID</a> id)</td></tr>\n <tr class=\"memdesc:a2db0e8ff5143c3a69bf3772bac7bde78\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Assign the default face-varying ID (none assigned by default)  <br /></td></tr>\n@@ -139,15 +139,15 @@\n <tr class=\"separator:a595df0016de04902f5954b740c7baa2c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p>Simple set of options assigned to instances of <a class=\"el\" href=\"a00941.html\" title=\"Base class providing initialization of a Surface for each face of a mesh.\">SurfaceFactory</a>. </p>\n <p>The <a class=\"el\" href=\"a00945.html\" title=\"Simple set of options assigned to instances of SurfaceFactory.\">Options</a> class is a simple container specifying options for the construction of the <a class=\"el\" href=\"a00941.html\" title=\"Base class providing initialization of a Surface for each face of a mesh.\">SurfaceFactory</a> to be applied during its lifetime.</p>\n <p>These options currently include choices to identify a default face-varying ID, to control caching behavior (on or off, use of external vs internal cache), and to control the accuracy of the resulting limit surface representations. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00713_source.html#l00116\">116</a> of file <a class=\"el\" href=\"a00713_source.html\">surfaceFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00881_source.html#l00116\">116</a> of file <a class=\"el\" href=\"a00881_source.html\">surfaceFactory.h</a>.</p>\n </div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"a28d39a844c3a37ab61d32ab7c6352f09\" name=\"a28d39a844c3a37ab61d32ab7c6352f09\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a28d39a844c3a37ab61d32ab7c6352f09\">&#9670;&#160;</a></span>Options()</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n <table class=\"mlabels\">\n@@ -164,15 +164,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00713_source.html#l00118\">118</a> of file <a class=\"el\" href=\"a00713_source.html\">surfaceFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00881_source.html#l00118\">118</a> of file <a class=\"el\" href=\"a00881_source.html\">surfaceFactory.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Member Function Documentation</h2>\n <a id=\"a14e81c17e41ad591714664008331f41e\" name=\"a14e81c17e41ad591714664008331f41e\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a14e81c17e41ad591714664008331f41e\">&#9670;&#160;</a></span>EnableCaching()</h2>\n \n@@ -195,15 +195,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Enable or disable caching (default is true): </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00713_source.html#l00457\">457</a> of file <a class=\"el\" href=\"a00713_source.html\">surfaceFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00881_source.html#l00457\">457</a> of file <a class=\"el\" href=\"a00881_source.html\">surfaceFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a595df0016de04902f5954b740c7baa2c\" name=\"a595df0016de04902f5954b740c7baa2c\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a595df0016de04902f5954b740c7baa2c\">&#9670;&#160;</a></span>GetApproxLevelSharp()</h2>\n \n <div class=\"memitem\">\n@@ -224,15 +224,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return maximum refinement level for sharp features. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00713_source.html#l00147\">147</a> of file <a class=\"el\" href=\"a00713_source.html\">surfaceFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00881_source.html#l00147\">147</a> of file <a class=\"el\" href=\"a00881_source.html\">surfaceFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a1ff965cb913fbc4716a5985c3d3c60e3\" name=\"a1ff965cb913fbc4716a5985c3d3c60e3\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1ff965cb913fbc4716a5985c3d3c60e3\">&#9670;&#160;</a></span>GetApproxLevelSmooth()</h2>\n \n <div class=\"memitem\">\n@@ -253,15 +253,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return maximum refinement level for smooth features. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00713_source.html#l00142\">142</a> of file <a class=\"el\" href=\"a00713_source.html\">surfaceFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00881_source.html#l00142\">142</a> of file <a class=\"el\" href=\"a00881_source.html\">surfaceFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a51ba21f3605015ed597a25303143c0b1\" name=\"a51ba21f3605015ed597a25303143c0b1\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a51ba21f3605015ed597a25303143c0b1\">&#9670;&#160;</a></span>GetDefaultFVarID()</h2>\n \n <div class=\"memitem\">\n@@ -282,15 +282,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return the default face-varying ID. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00713_source.html#l00125\">125</a> of file <a class=\"el\" href=\"a00713_source.html\">surfaceFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00881_source.html#l00125\">125</a> of file <a class=\"el\" href=\"a00881_source.html\">surfaceFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"acd0411b6d29a6acae3826da06d86bd5b\" name=\"acd0411b6d29a6acae3826da06d86bd5b\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acd0411b6d29a6acae3826da06d86bd5b\">&#9670;&#160;</a></span>GetExternalCache()</h2>\n \n <div class=\"memitem\">\n@@ -311,15 +311,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return any assigned external cache. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00713_source.html#l00135\">135</a> of file <a class=\"el\" href=\"a00713_source.html\">surfaceFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00881_source.html#l00135\">135</a> of file <a class=\"el\" href=\"a00881_source.html\">surfaceFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a2c83835832d46536d097ae6ff32659db\" name=\"a2c83835832d46536d097ae6ff32659db\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2c83835832d46536d097ae6ff32659db\">&#9670;&#160;</a></span>IsCachingEnabled()</h2>\n \n <div class=\"memitem\">\n@@ -340,15 +340,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return if caching is enable. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00713_source.html#l00130\">130</a> of file <a class=\"el\" href=\"a00713_source.html\">surfaceFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00881_source.html#l00130\">130</a> of file <a class=\"el\" href=\"a00881_source.html\">surfaceFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a391dfc1d3e1d75fc0aa496717784a95e\" name=\"a391dfc1d3e1d75fc0aa496717784a95e\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a391dfc1d3e1d75fc0aa496717784a95e\">&#9670;&#160;</a></span>SetApproxLevelSharp()</h2>\n \n <div class=\"memitem\">\n@@ -370,15 +370,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Assign maximum refinement level for sharp features. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00713_source.html#l00472\">472</a> of file <a class=\"el\" href=\"a00713_source.html\">surfaceFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00881_source.html#l00472\">472</a> of file <a class=\"el\" href=\"a00881_source.html\">surfaceFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a1ee6780461b18cc80b5c79b520310079\" name=\"a1ee6780461b18cc80b5c79b520310079\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1ee6780461b18cc80b5c79b520310079\">&#9670;&#160;</a></span>SetApproxLevelSmooth()</h2>\n \n <div class=\"memitem\">\n@@ -400,15 +400,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Assign maximum refinement level for smooth features. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00713_source.html#l00467\">467</a> of file <a class=\"el\" href=\"a00713_source.html\">surfaceFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00881_source.html#l00467\">467</a> of file <a class=\"el\" href=\"a00881_source.html\">surfaceFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a2db0e8ff5143c3a69bf3772bac7bde78\" name=\"a2db0e8ff5143c3a69bf3772bac7bde78\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2db0e8ff5143c3a69bf3772bac7bde78\">&#9670;&#160;</a></span>SetDefaultFVarID()</h2>\n \n <div class=\"memitem\">\n@@ -430,15 +430,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Assign the default face-varying ID (none assigned by default) </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00713_source.html#l00452\">452</a> of file <a class=\"el\" href=\"a00713_source.html\">surfaceFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00881_source.html#l00452\">452</a> of file <a class=\"el\" href=\"a00881_source.html\">surfaceFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a06af1ca1d903fe5110c962bec75acec7\" name=\"a06af1ca1d903fe5110c962bec75acec7\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a06af1ca1d903fe5110c962bec75acec7\">&#9670;&#160;</a></span>SetExternalCache()</h2>\n \n <div class=\"memitem\">\n@@ -460,20 +460,20 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Assign an external cache to override the internal. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00713_source.html#l00462\">462</a> of file <a class=\"el\" href=\"a00713_source.html\">surfaceFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00881_source.html#l00462\">462</a> of file <a class=\"el\" href=\"a00881_source.html\">surfaceFactory.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/bfr/<a class=\"el\" href=\"a00713_source.html\">surfaceFactory.h</a></li>\n+<li>opensubdiv/bfr/<a class=\"el\" href=\"a00881_source.html\">surfaceFactory.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00907.html\">Bfr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00941.html\">SurfaceFactory</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00945.html\">Options</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00949.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00949.html", "unified_diff": "@@ -97,15 +97,15 @@\n   <div class=\"headertitle\"><div class=\"title\">SurfaceFactoryCache Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Container used internally by <a class=\"el\" href=\"a00941.html\" title=\"Base class providing initialization of a Surface for each face of a mesh.\">SurfaceFactory</a> to store reusable information.  \n  <a href=\"a00949.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00710_source.html\">surfaceFactoryCache.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00896_source.html\">surfaceFactoryCache.h</a>&gt;</code></p>\n <div class=\"dynheader\">\n Inheritance diagram for SurfaceFactoryCache:</div>\n <div class=\"dyncontent\">\n  <div class=\"center\">\n   <img src=\"a00949.png\" usemap=\"#SurfaceFactoryCache_map\" alt=\"\"/>\n   <map id=\"SurfaceFactoryCache_map\" name=\"SurfaceFactoryCache_map\">\n <area href=\"a00953.html\" title=\"Template for declaring thread-safe subclasses of SurfaceFactoryCache.\" alt=\"SurfaceFactoryCacheThreaded&lt; MUTEX_TYPE, READ_LOCK_GUARD_TYPE, WRITE_LOCK_GUARD_TYPE &gt;\" shape=\"rect\" coords=\"0,56,647,80\"/>\n@@ -124,15 +124,15 @@\n <tr class=\"separator:a736c32f5c64da3442ff1c74ef1fb9ff7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p>Container used internally by <a class=\"el\" href=\"a00941.html\" title=\"Base class providing initialization of a Surface for each face of a mesh.\">SurfaceFactory</a> to store reusable information. </p>\n <p><a class=\"el\" href=\"a00949.html\" title=\"Container used internally by SurfaceFactory to store reusable information.\">SurfaceFactoryCache</a> is a container for storing/caching instances of the internal representation of complex patches used by <a class=\"el\" href=\"a00941.html\" title=\"Base class providing initialization of a Surface for each face of a mesh.\">SurfaceFactory</a> so that they can be quickly identified and retrieved for reuse.</p>\n <p>It is intended for internal use by <a class=\"el\" href=\"a00941.html\" title=\"Base class providing initialization of a Surface for each face of a mesh.\">SurfaceFactory</a>. Public access is available but limited to construction only &ndash; allowing an instance to be reused by assigning it to more than one <a class=\"el\" href=\"a00941.html\" title=\"Base class providing initialization of a Surface for each face of a mesh.\">SurfaceFactory</a>. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00710_source.html#l00059\">59</a> of file <a class=\"el\" href=\"a00710_source.html\">surfaceFactoryCache.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00896_source.html#l00059\">59</a> of file <a class=\"el\" href=\"a00896_source.html\">surfaceFactoryCache.h</a>.</p>\n </div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"a3f63565868cb0b0871e2db37939ec0e2\" name=\"a3f63565868cb0b0871e2db37939ec0e2\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3f63565868cb0b0871e2db37939ec0e2\">&#9670;&#160;</a></span>SurfaceFactoryCache() <span class=\"overload\">[1/2]</span></h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n       <table class=\"memname\">\n@@ -222,15 +222,15 @@\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/bfr/<a class=\"el\" href=\"a00710_source.html\">surfaceFactoryCache.h</a></li>\n+<li>opensubdiv/bfr/<a class=\"el\" href=\"a00896_source.html\">surfaceFactoryCache.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00907.html\">Bfr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00949.html\">SurfaceFactoryCache</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00953.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00953.html", "unified_diff": "@@ -97,15 +97,15 @@\n   <div class=\"headertitle\"><div class=\"title\">SurfaceFactoryCacheThreaded&lt; MUTEX_TYPE, READ_LOCK_GUARD_TYPE, WRITE_LOCK_GUARD_TYPE &gt; Class Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Template for declaring thread-safe subclasses of <a class=\"el\" href=\"a00949.html\" title=\"Container used internally by SurfaceFactory to store reusable information.\">SurfaceFactoryCache</a>.  \n  <a href=\"a00953.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00710_source.html\">surfaceFactoryCache.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00896_source.html\">surfaceFactoryCache.h</a>&gt;</code></p>\n <div class=\"dynheader\">\n Inheritance diagram for SurfaceFactoryCacheThreaded&lt; MUTEX_TYPE, READ_LOCK_GUARD_TYPE, WRITE_LOCK_GUARD_TYPE &gt;:</div>\n <div class=\"dyncontent\">\n  <div class=\"center\">\n   <img src=\"a00953.png\" usemap=\"#SurfaceFactoryCacheThreaded_3C_20MUTEX_5FTYPE_2C_20READ_5FLOCK_5FGUARD_5FTYPE_2C_20WRITE_5FLOCK_5FGUARD_5FTYPE_20_3E_map\" alt=\"\"/>\n   <map id=\"SurfaceFactoryCacheThreaded_3C_20MUTEX_5FTYPE_2C_20READ_5FLOCK_5FGUARD_5FTYPE_2C_20WRITE_5FLOCK_5FGUARD_5FTYPE_20_3E_map\" name=\"SurfaceFactoryCacheThreaded_3C_20MUTEX_5FTYPE_2C_20READ_5FLOCK_5FGUARD_5FTYPE_2C_20WRITE_5FLOCK_5FGUARD_5FTYPE_20_3E_map\">\n <area href=\"a00949.html\" title=\"Container used internally by SurfaceFactory to store reusable information.\" alt=\"SurfaceFactoryCache\" shape=\"rect\" coords=\"0,0,647,24\"/>\n@@ -137,15 +137,15 @@\n     <tr><td class=\"paramname\">MUTEX_TYPE</td><td>A mutex type with supported lock guards </td></tr>\n     <tr><td class=\"paramname\">READ_LOCK_GUARD_TYPE</td><td>A scoped lock guard allowing potentially shared access for read operations. </td></tr>\n     <tr><td class=\"paramname\">WRITE_LOCK_GUARD_TYPE</td><td>A scoped lock guard allowing exclusive access for write operations. </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00710_source.html#l00118\">118</a> of file <a class=\"el\" href=\"a00710_source.html\">surfaceFactoryCache.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00896_source.html#l00118\">118</a> of file <a class=\"el\" href=\"a00896_source.html\">surfaceFactoryCache.h</a>.</p>\n </div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"a9e84b6f045809c700d7dc53c3a350afe\" name=\"a9e84b6f045809c700d7dc53c3a350afe\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9e84b6f045809c700d7dc53c3a350afe\">&#9670;&#160;</a></span>SurfaceFactoryCacheThreaded()</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n <div class=\"memtemplate\">\n@@ -164,15 +164,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00710_source.html#l00120\">120</a> of file <a class=\"el\" href=\"a00710_source.html\">surfaceFactoryCache.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00896_source.html#l00120\">120</a> of file <a class=\"el\" href=\"a00896_source.html\">surfaceFactoryCache.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ac74eea23eda9dbc078678ee5d440c7b8\" name=\"ac74eea23eda9dbc078678ee5d440c7b8\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac74eea23eda9dbc078678ee5d440c7b8\">&#9670;&#160;</a></span>~SurfaceFactoryCacheThreaded()</h2>\n \n <div class=\"memitem\">\n@@ -196,15 +196,15 @@\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/bfr/<a class=\"el\" href=\"a00710_source.html\">surfaceFactoryCache.h</a></li>\n+<li>opensubdiv/bfr/<a class=\"el\" href=\"a00896_source.html\">surfaceFactoryCache.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00907.html\">Bfr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00953.html\">SurfaceFactoryCacheThreaded</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00957.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00957.html", "unified_diff": "@@ -97,15 +97,15 @@\n   <div class=\"headertitle\"><div class=\"title\">SurfaceFactoryMeshAdapter Class Reference<span class=\"mlabels\"><span class=\"mlabel\">abstract</span></span></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Abstract interface adapting <a class=\"el\" href=\"a00941.html\" title=\"Base class providing initialization of a Surface for each face of a mesh.\">SurfaceFactory</a> to a connected mesh representation.  \n  <a href=\"a00957.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00707_source.html\">surfaceFactoryMeshAdapter.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00893_source.html\">surfaceFactoryMeshAdapter.h</a>&gt;</code></p>\n <div class=\"dynheader\">\n Inheritance diagram for SurfaceFactoryMeshAdapter:</div>\n <div class=\"dyncontent\">\n  <div class=\"center\">\n   <img src=\"a00957.png\" usemap=\"#SurfaceFactoryMeshAdapter_map\" alt=\"\"/>\n   <map id=\"SurfaceFactoryMeshAdapter_map\" name=\"SurfaceFactoryMeshAdapter_map\">\n <area href=\"a00941.html\" title=\"Base class providing initialization of a Surface for each face of a mesh.\" alt=\"SurfaceFactory\" shape=\"rect\" coords=\"0,56,249,80\"/>\n@@ -171,15 +171,15 @@\n <tr class=\"separator:a72634fd790cc4d1f52801aa5399328b5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:aa7e32ce7ba896c5ddfe6521ad0022ce2\" id=\"r_aa7e32ce7ba896c5ddfe6521ad0022ce2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00957.html#aa7e32ce7ba896c5ddfe6521ad0022ce2\">getFaceNeighborhoodFVarValueIndicesIfRegular</a> (<a class=\"el\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> faceIndex, <a class=\"el\" href=\"a00957.html#af98288d7b5176d7295be622a10c6c64e\">FVarID</a> fvarID, <a class=\"el\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a> fvarValueIndices[]) const</td></tr>\n <tr class=\"separator:aa7e32ce7ba896c5ddfe6521ad0022ce2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p>Abstract interface adapting <a class=\"el\" href=\"a00941.html\" title=\"Base class providing initialization of a Surface for each face of a mesh.\">SurfaceFactory</a> to a connected mesh representation. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00707_source.html#l00065\">65</a> of file <a class=\"el\" href=\"a00707_source.html\">surfaceFactoryMeshAdapter.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00893_source.html#l00065\">65</a> of file <a class=\"el\" href=\"a00893_source.html\">surfaceFactoryMeshAdapter.h</a>.</p>\n </div><h2 class=\"groupheader\">Member Typedef Documentation</h2>\n <a id=\"af98288d7b5176d7295be622a10c6c64e\" name=\"af98288d7b5176d7295be622a10c6c64e\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af98288d7b5176d7295be622a10c6c64e\">&#9670;&#160;</a></span>FVarID</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n       <table class=\"memname\">\n@@ -189,15 +189,15 @@\n       </table>\n </div><div class=\"memdoc\">\n \n <p>Type used to identify and specify face-varying primvars. </p>\n <p>A face-varying ID is used to specify face-varying primvars for evaluation so that they can be identified by the subclass for the mesh. It can be assigned as either a positive integer ID or pointer, with the subclass determining its interpretation.</p>\n <p>Often only one face-varying primvar is of interest, so a default can be assigned to the factory to avoid repeated specification. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00707_source.html#l00080\">80</a> of file <a class=\"el\" href=\"a00707_source.html\">surfaceFactoryMeshAdapter.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00893_source.html#l00080\">80</a> of file <a class=\"el\" href=\"a00893_source.html\">surfaceFactoryMeshAdapter.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a4a0e50e01fef3e431767a928c2631cab\" name=\"a4a0e50e01fef3e431767a928c2631cab\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4a0e50e01fef3e431767a928c2631cab\">&#9670;&#160;</a></span>Index</h2>\n \n <div class=\"memitem\">\n@@ -207,15 +207,15 @@\n           <td class=\"memname\">typedef int <a class=\"el\" href=\"a00957.html#a4a0e50e01fef3e431767a928c2631cab\">Index</a></td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n <p>Integer type representing a mesh index. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00707_source.html#l00068\">68</a> of file <a class=\"el\" href=\"a00707_source.html\">surfaceFactoryMeshAdapter.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00893_source.html#l00068\">68</a> of file <a class=\"el\" href=\"a00893_source.html\">surfaceFactoryMeshAdapter.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Member Function Documentation</h2>\n <a id=\"aba5c13d35cdaae43f2a1b4798868747a\" name=\"aba5c13d35cdaae43f2a1b4798868747a\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aba5c13d35cdaae43f2a1b4798868747a\">&#9670;&#160;</a></span>getFaceFVarValueIndices()</h2>\n \n@@ -296,15 +296,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span><span class=\"mlabel\">virtual</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00707_source.html#l00224\">224</a> of file <a class=\"el\" href=\"a00707_source.html\">surfaceFactoryMeshAdapter.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00893_source.html#l00224\">224</a> of file <a class=\"el\" href=\"a00893_source.html\">surfaceFactoryMeshAdapter.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a72634fd790cc4d1f52801aa5399328b5\" name=\"a72634fd790cc4d1f52801aa5399328b5\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a72634fd790cc4d1f52801aa5399328b5\">&#9670;&#160;</a></span>getFaceNeighborhoodVertexIndicesIfRegular()</h2>\n \n <div class=\"memitem\">\n@@ -334,15 +334,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span><span class=\"mlabel\">virtual</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00707_source.html#l00218\">218</a> of file <a class=\"el\" href=\"a00707_source.html\">surfaceFactoryMeshAdapter.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00893_source.html#l00218\">218</a> of file <a class=\"el\" href=\"a00893_source.html\">surfaceFactoryMeshAdapter.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a46acc55c125fe8d843fd2b74c582abec\" name=\"a46acc55c125fe8d843fd2b74c582abec\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a46acc55c125fe8d843fd2b74c582abec\">&#9670;&#160;</a></span>getFaceSize()</h2>\n \n <div class=\"memitem\">\n@@ -571,15 +571,15 @@\n </div><div class=\"memdoc\">\n \n <p>Describe the topology of incident faces around a face-vertex. </p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/bfr/<a class=\"el\" href=\"a00707_source.html\">surfaceFactoryMeshAdapter.h</a></li>\n+<li>opensubdiv/bfr/<a class=\"el\" href=\"a00893_source.html\">surfaceFactoryMeshAdapter.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00907.html\">Bfr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00957.html\">SurfaceFactoryMeshAdapter</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00961.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00961.html", "unified_diff": "@@ -97,15 +97,15 @@\n   <div class=\"headertitle\"><div class=\"title\">Tessellation Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Encapsulates a specific tessellation pattern of a <a class=\"el\" href=\"a00921.html\" title=\"Simple class defining the 2D parameterization of a face.\">Parameterization</a>.  \n  <a href=\"a00961.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00722_source.html\">tessellation.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00902_source.html\">tessellation.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n <tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00965.html\">Options</a></td></tr>\n <tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\"><a class=\"el\" href=\"a00965.html\" title=\"Options configure a Tessellation to specify the nature of both its results and the structure of the c...\">Options</a> configure a <a class=\"el\" href=\"a00961.html\" title=\"Encapsulates a specific tessellation pattern of a Parameterization.\">Tessellation</a> to specify the nature of both its results and the structure of the coordinate and facet index arrays that its methods will populate.  <a href=\"a00965.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n@@ -219,15 +219,15 @@\n <tr class=\"separator:a2651a3405daf40d1ffbd47c57233d3c3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p>Encapsulates a specific tessellation pattern of a <a class=\"el\" href=\"a00921.html\" title=\"Simple class defining the 2D parameterization of a face.\">Parameterization</a>. </p>\n <p><a class=\"el\" href=\"a00961.html\" title=\"Encapsulates a specific tessellation pattern of a Parameterization.\">Tessellation</a> is a simple class that encapsulates a specified tessellation pattern for a given <a class=\"el\" href=\"a00921.html\" title=\"Simple class defining the 2D parameterization of a face.\">Parameterization</a>. <a class=\"el\" href=\"a00961.html\" title=\"Encapsulates a specific tessellation pattern of a Parameterization.\">Tessellation</a> parameters are given on construction and are fixed for its lifetime.</p>\n <p>Methods allow inspection of the pattern in terms of the 2D coordinates of the points comprising the pattern and the faces that connect them. The 2D coordinates are referred to both in the documentation and the interface as \"coords\" while the faces connecting them are referred to as \"facets\" (to distinguish from the faces of the mesh, to which a <a class=\"el\" href=\"a00961.html\" title=\"Encapsulates a specific tessellation pattern of a Parameterization.\">Tessellation</a> is applied). </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00722_source.html#l00051\">51</a> of file <a class=\"el\" href=\"a00722_source.html\">tessellation.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00902_source.html#l00051\">51</a> of file <a class=\"el\" href=\"a00902_source.html\">tessellation.h</a>.</p>\n </div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"a7f0af117d53701f7ca6e3eb2368b89bb\" name=\"a7f0af117d53701f7ca6e3eb2368b89bb\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7f0af117d53701f7ca6e3eb2368b89bb\">&#9670;&#160;</a></span>Tessellation() <span class=\"overload\">[1/4]</span></h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n       <table class=\"memname\">\n@@ -445,15 +445,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Retrieve the coordinates for the entire pattern. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00722_source.html#l00372\">372</a> of file <a class=\"el\" href=\"a00722_source.html\">tessellation.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00902_source.html#l00372\">372</a> of file <a class=\"el\" href=\"a00902_source.html\">tessellation.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a3f642ed70a22d6d9d3d2fe79029653f5\" name=\"a3f642ed70a22d6d9d3d2fe79029653f5\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3f642ed70a22d6d9d3d2fe79029653f5\">&#9670;&#160;</a></span>GetCoordStride()</h2>\n \n <div class=\"memitem\">\n@@ -474,15 +474,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return the number of elements between each coordinate. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00722_source.html#l00208\">208</a> of file <a class=\"el\" href=\"a00722_source.html\">tessellation.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00902_source.html#l00208\">208</a> of file <a class=\"el\" href=\"a00902_source.html\">tessellation.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aefe76150c0f45fa43a4211b9f4cb4bc2\" name=\"aefe76150c0f45fa43a4211b9f4cb4bc2\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aefe76150c0f45fa43a4211b9f4cb4bc2\">&#9670;&#160;</a></span>GetEdgeCoords()</h2>\n \n <div class=\"memitem\">\n@@ -535,15 +535,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return the size of the face. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00722_source.html#l00182\">182</a> of file <a class=\"el\" href=\"a00722_source.html\">tessellation.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00902_source.html#l00182\">182</a> of file <a class=\"el\" href=\"a00902_source.html\">tessellation.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a8deec91fff8094f942051dc22769402e\" name=\"a8deec91fff8094f942051dc22769402e\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8deec91fff8094f942051dc22769402e\">&#9670;&#160;</a></span>GetFacets()</h2>\n \n <div class=\"memitem\">\n@@ -584,15 +584,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return the number of indices assigned to each facet. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00722_source.html#l00258\">258</a> of file <a class=\"el\" href=\"a00722_source.html\">tessellation.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00902_source.html#l00258\">258</a> of file <a class=\"el\" href=\"a00902_source.html\">tessellation.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a54b068769e4e728e78528f9bdde25b86\" name=\"a54b068769e4e728e78528f9bdde25b86\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a54b068769e4e728e78528f9bdde25b86\">&#9670;&#160;</a></span>GetFacetStride()</h2>\n \n <div class=\"memitem\">\n@@ -613,15 +613,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return the number of elements between each facet. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00722_source.html#l00261\">261</a> of file <a class=\"el\" href=\"a00722_source.html\">tessellation.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00902_source.html#l00261\">261</a> of file <a class=\"el\" href=\"a00902_source.html\">tessellation.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a539f9a4fad8037e34e12ad9454f70ba1\" name=\"a539f9a4fad8037e34e12ad9454f70ba1\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a539f9a4fad8037e34e12ad9454f70ba1\">&#9670;&#160;</a></span>GetInteriorCoords()</h2>\n \n <div class=\"memitem\">\n@@ -664,15 +664,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return the number of boundary coordinates. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00722_source.html#l00211\">211</a> of file <a class=\"el\" href=\"a00722_source.html\">tessellation.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00902_source.html#l00211\">211</a> of file <a class=\"el\" href=\"a00902_source.html\">tessellation.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a5e16c9ef594c36629fb3fb0955101db6\" name=\"a5e16c9ef594c36629fb3fb0955101db6\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5e16c9ef594c36629fb3fb0955101db6\">&#9670;&#160;</a></span>GetNumCoords()</h2>\n \n <div class=\"memitem\">\n@@ -693,15 +693,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return the number of coordinates in the entire pattern. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00722_source.html#l00205\">205</a> of file <a class=\"el\" href=\"a00722_source.html\">tessellation.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00902_source.html#l00205\">205</a> of file <a class=\"el\" href=\"a00902_source.html\">tessellation.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a49852dfe24985b64fe13d3ef589fb8b2\" name=\"a49852dfe24985b64fe13d3ef589fb8b2\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a49852dfe24985b64fe13d3ef589fb8b2\">&#9670;&#160;</a></span>GetNumEdgeCoords()</h2>\n \n <div class=\"memitem\">\n@@ -723,15 +723,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return the number of coordinates within a given edge (excluding those at its end vertices) </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00722_source.html#l00218\">218</a> of file <a class=\"el\" href=\"a00722_source.html\">tessellation.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00902_source.html#l00218\">218</a> of file <a class=\"el\" href=\"a00902_source.html\">tessellation.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a8f84862ac65dcdc8cd9063b0264b711f\" name=\"a8f84862ac65dcdc8cd9063b0264b711f\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8f84862ac65dcdc8cd9063b0264b711f\">&#9670;&#160;</a></span>GetNumFacets()</h2>\n \n <div class=\"memitem\">\n@@ -752,15 +752,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return the number of facets in the entire pattern. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00722_source.html#l00255\">255</a> of file <a class=\"el\" href=\"a00722_source.html\">tessellation.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00902_source.html#l00255\">255</a> of file <a class=\"el\" href=\"a00902_source.html\">tessellation.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a95bd158ec25b0697574bfda5d1397c63\" name=\"a95bd158ec25b0697574bfda5d1397c63\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a95bd158ec25b0697574bfda5d1397c63\">&#9670;&#160;</a></span>GetNumInteriorCoords()</h2>\n \n <div class=\"memitem\">\n@@ -781,15 +781,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return the number of interior coordinates. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00722_source.html#l00214\">214</a> of file <a class=\"el\" href=\"a00722_source.html\">tessellation.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00902_source.html#l00214\">214</a> of file <a class=\"el\" href=\"a00902_source.html\">tessellation.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a66515298a982aab202e1e3e537c7d324\" name=\"a66515298a982aab202e1e3e537c7d324\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a66515298a982aab202e1e3e537c7d324\">&#9670;&#160;</a></span>GetParameterization()</h2>\n \n <div class=\"memitem\">\n@@ -810,15 +810,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return the <a class=\"el\" href=\"a00921.html\" title=\"Simple class defining the 2D parameterization of a face.\">Parameterization</a>. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00722_source.html#l00179\">179</a> of file <a class=\"el\" href=\"a00722_source.html\">tessellation.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00902_source.html#l00179\">179</a> of file <a class=\"el\" href=\"a00902_source.html\">tessellation.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ab08dc4952f122dc09ce7e39daa3c56f1\" name=\"ab08dc4952f122dc09ce7e39daa3c56f1\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab08dc4952f122dc09ce7e39daa3c56f1\">&#9670;&#160;</a></span>GetRates()</h2>\n \n <div class=\"memitem\">\n@@ -872,15 +872,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Retrieve the coordinate for a given vertex of the face. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00722_source.html#l00365\">365</a> of file <a class=\"el\" href=\"a00722_source.html\">tessellation.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00902_source.html#l00365\">365</a> of file <a class=\"el\" href=\"a00902_source.html\">tessellation.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a5dfa6810f510fac1ec621fc9e6b530c4\" name=\"a5dfa6810f510fac1ec621fc9e6b530c4\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5dfa6810f510fac1ec621fc9e6b530c4\">&#9670;&#160;</a></span>IsUniform()</h2>\n \n <div class=\"memitem\">\n@@ -901,15 +901,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return if the pattern is uniform. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00722_source.html#l00188\">188</a> of file <a class=\"el\" href=\"a00722_source.html\">tessellation.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00902_source.html#l00188\">188</a> of file <a class=\"el\" href=\"a00902_source.html\">tessellation.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ac532c4b500b1a85ea22217f2c65a70ed\" name=\"ac532c4b500b1a85ea22217f2c65a70ed\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac532c4b500b1a85ea22217f2c65a70ed\">&#9670;&#160;</a></span>IsValid()</h2>\n \n <div class=\"memitem\">\n@@ -930,15 +930,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return true if correctly initialized. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00722_source.html#l00162\">162</a> of file <a class=\"el\" href=\"a00722_source.html\">tessellation.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00902_source.html#l00162\">162</a> of file <a class=\"el\" href=\"a00902_source.html\">tessellation.h</a>.</p>\n \n </div>\n </div>\n <a id=\"add7bb6250635b7a713a1d2f5424163de\" name=\"add7bb6250635b7a713a1d2f5424163de\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#add7bb6250635b7a713a1d2f5424163de\">&#9670;&#160;</a></span>operator=()</h2>\n \n <div class=\"memitem\">\n@@ -1063,15 +1063,15 @@\n </div><div class=\"memdoc\">\n \n <p>Reassign indices of boundary coordinates while offseting those of interior coordinates. </p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/bfr/<a class=\"el\" href=\"a00722_source.html\">tessellation.h</a></li>\n+<li>opensubdiv/bfr/<a class=\"el\" href=\"a00902_source.html\">tessellation.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00907.html\">Bfr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00961.html\">Tessellation</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00965.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00965.html", "unified_diff": "@@ -97,15 +97,15 @@\n   <div class=\"headertitle\"><div class=\"title\">Tessellation::Options Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p><a class=\"el\" href=\"a00965.html\" title=\"Options configure a Tessellation to specify the nature of both its results and the structure of the c...\">Options</a> configure a <a class=\"el\" href=\"a00961.html\" title=\"Encapsulates a specific tessellation pattern of a Parameterization.\">Tessellation</a> to specify the nature of both its results and the structure of the coordinate and facet index arrays that its methods will populate.  \n  <a href=\"a00965.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00722_source.html\">tessellation.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00902_source.html\">tessellation.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\n Public Member Functions</h2></td></tr>\n <tr class=\"memitem:a28d39a844c3a37ab61d32ab7c6352f09\" id=\"r_a28d39a844c3a37ab61d32ab7c6352f09\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00965.html#a28d39a844c3a37ab61d32ab7c6352f09\">Options</a> ()</td></tr>\n <tr class=\"separator:a28d39a844c3a37ab61d32ab7c6352f09\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a98820ec764e776bd556a9b80b872b78f\" id=\"r_a98820ec764e776bd556a9b80b872b78f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"a00965.html\">Options</a> &amp;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00965.html#a98820ec764e776bd556a9b80b872b78f\">PreserveQuads</a> (bool on)</td></tr>\n <tr class=\"memdesc:a98820ec764e776bd556a9b80b872b78f\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Select preservation of quads for quad-based subdivision (requires 4-sided facets, default is off)  <br /></td></tr>\n@@ -132,15 +132,15 @@\n <tr class=\"separator:a3f642ed70a22d6d9d3d2fe79029653f5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p><a class=\"el\" href=\"a00965.html\" title=\"Options configure a Tessellation to specify the nature of both its results and the structure of the c...\">Options</a> configure a <a class=\"el\" href=\"a00961.html\" title=\"Encapsulates a specific tessellation pattern of a Parameterization.\">Tessellation</a> to specify the nature of both its results and the structure of the coordinate and facet index arrays that its methods will populate. </p>\n <p>The sizes and strides of the target arrays should be specified explicitly as they are not inferred by the presence of other options.</p>\n <p>Modifiers of <a class=\"el\" href=\"a00965.html\" title=\"Options configure a Tessellation to specify the nature of both its results and the structure of the c...\">Options</a> return a reference to itself to facilitate inline usage. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00722_source.html#l00065\">65</a> of file <a class=\"el\" href=\"a00722_source.html\">tessellation.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00902_source.html#l00065\">65</a> of file <a class=\"el\" href=\"a00902_source.html\">tessellation.h</a>.</p>\n </div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"a28d39a844c3a37ab61d32ab7c6352f09\" name=\"a28d39a844c3a37ab61d32ab7c6352f09\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a28d39a844c3a37ab61d32ab7c6352f09\">&#9670;&#160;</a></span>Options()</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n <table class=\"mlabels\">\n@@ -157,15 +157,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00722_source.html#l00067\">67</a> of file <a class=\"el\" href=\"a00722_source.html\">tessellation.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00902_source.html#l00067\">67</a> of file <a class=\"el\" href=\"a00902_source.html\">tessellation.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Member Function Documentation</h2>\n <a id=\"a3f642ed70a22d6d9d3d2fe79029653f5\" name=\"a3f642ed70a22d6d9d3d2fe79029653f5\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3f642ed70a22d6d9d3d2fe79029653f5\">&#9670;&#160;</a></span>GetCoordStride()</h2>\n \n@@ -187,15 +187,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return the stride between (u,v) pairs. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00722_source.html#l00090\">90</a> of file <a class=\"el\" href=\"a00722_source.html\">tessellation.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00902_source.html#l00090\">90</a> of file <a class=\"el\" href=\"a00902_source.html\">tessellation.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a671621e55bfbc48db77919d5fd31744f\" name=\"a671621e55bfbc48db77919d5fd31744f\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a671621e55bfbc48db77919d5fd31744f\">&#9670;&#160;</a></span>GetFacetSize()</h2>\n \n <div class=\"memitem\">\n@@ -214,15 +214,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00722_source.html#l00080\">80</a> of file <a class=\"el\" href=\"a00722_source.html\">tessellation.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00902_source.html#l00080\">80</a> of file <a class=\"el\" href=\"a00902_source.html\">tessellation.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a54b068769e4e728e78528f9bdde25b86\" name=\"a54b068769e4e728e78528f9bdde25b86\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a54b068769e4e728e78528f9bdde25b86\">&#9670;&#160;</a></span>GetFacetStride()</h2>\n \n <div class=\"memitem\">\n@@ -243,15 +243,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return the stride between facets. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00722_source.html#l00085\">85</a> of file <a class=\"el\" href=\"a00722_source.html\">tessellation.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00902_source.html#l00085\">85</a> of file <a class=\"el\" href=\"a00902_source.html\">tessellation.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ae2ec197b850e8bd12878cc67a503a07a\" name=\"ae2ec197b850e8bd12878cc67a503a07a\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae2ec197b850e8bd12878cc67a503a07a\">&#9670;&#160;</a></span>PreserveQuads() <span class=\"overload\">[1/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -272,15 +272,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return if preservation of quads is set. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00722_source.html#l00074\">74</a> of file <a class=\"el\" href=\"a00722_source.html\">tessellation.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00902_source.html#l00074\">74</a> of file <a class=\"el\" href=\"a00902_source.html\">tessellation.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a98820ec764e776bd556a9b80b872b78f\" name=\"a98820ec764e776bd556a9b80b872b78f\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a98820ec764e776bd556a9b80b872b78f\">&#9670;&#160;</a></span>PreserveQuads() <span class=\"overload\">[2/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -302,15 +302,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Select preservation of quads for quad-based subdivision (requires 4-sided facets, default is off) </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00722_source.html#l00343\">343</a> of file <a class=\"el\" href=\"a00722_source.html\">tessellation.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00902_source.html#l00343\">343</a> of file <a class=\"el\" href=\"a00902_source.html\">tessellation.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aa7688afdaece2c387e8963d634752aa6\" name=\"aa7688afdaece2c387e8963d634752aa6\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa7688afdaece2c387e8963d634752aa6\">&#9670;&#160;</a></span>SetCoordStride()</h2>\n \n <div class=\"memitem\">\n@@ -332,15 +332,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Assign the stride between (u,v) pairs (default is 2) </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00722_source.html#l00358\">358</a> of file <a class=\"el\" href=\"a00722_source.html\">tessellation.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00902_source.html#l00358\">358</a> of file <a class=\"el\" href=\"a00902_source.html\">tessellation.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a50c6e039e8278312e95c1dd94b8478e0\" name=\"a50c6e039e8278312e95c1dd94b8478e0\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a50c6e039e8278312e95c1dd94b8478e0\">&#9670;&#160;</a></span>SetFacetSize()</h2>\n \n <div class=\"memitem\">\n@@ -362,15 +362,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Assign the number of indices per facet (must be 3 or 4, default is 3) </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00722_source.html#l00348\">348</a> of file <a class=\"el\" href=\"a00722_source.html\">tessellation.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00902_source.html#l00348\">348</a> of file <a class=\"el\" href=\"a00902_source.html\">tessellation.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ad6a995daa3f819edeeaf0a8c1aeb8b6a\" name=\"ad6a995daa3f819edeeaf0a8c1aeb8b6a\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad6a995daa3f819edeeaf0a8c1aeb8b6a\">&#9670;&#160;</a></span>SetFacetStride()</h2>\n \n <div class=\"memitem\">\n@@ -392,20 +392,20 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Assign the stride between facets (default is facet size) </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00722_source.html#l00353\">353</a> of file <a class=\"el\" href=\"a00722_source.html\">tessellation.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00902_source.html#l00353\">353</a> of file <a class=\"el\" href=\"a00902_source.html\">tessellation.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/bfr/<a class=\"el\" href=\"a00722_source.html\">tessellation.h</a></li>\n+<li>opensubdiv/bfr/<a class=\"el\" href=\"a00902_source.html\">tessellation.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00907.html\">Bfr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00961.html\">Tessellation</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00965.html\">Options</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00969.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00969.html", "unified_diff": "@@ -96,15 +96,15 @@\n   <div class=\"headertitle\"><div class=\"title\">VertexDescriptor Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Simple class used by subclasses of <a class=\"el\" href=\"a00941.html\" title=\"Base class providing initialization of a Surface for each face of a mesh.\">SurfaceFactory</a> to describe a vertex.  \n  <a href=\"a00969.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00725_source.html\">vertexDescriptor.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00878_source.html\">vertexDescriptor.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\n Public Member Functions</h2></td></tr>\n <tr><td colspan=\"2\"><div class=\"groupHeader\">Methods to begin and end specification</div></td></tr>\n <tr><td colspan=\"2\"><div class=\"groupText\"><p>Partially constructed instances are populated using a set of methods between calls to <a class=\"el\" href=\"a00969.html#a1d4a38a2944a3705bfbd325766bda216\" title=\"Initialize specification with the number of incident faces.\">Initialize()</a> and <a class=\"el\" href=\"a00969.html#a0cb0c1f4fa225637898cf1c7420bc064\" title=\"Terminate the sequence of specifications.\">Finalize()</a>. Both return false to indicate failure due to invalid input, or the instance can be inspected after each to determine if valid. </p>\n </div></td></tr>\n <tr class=\"memitem:a1d4a38a2944a3705bfbd325766bda216\" id=\"r_a1d4a38a2944a3705bfbd325766bda216\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00969.html#a1d4a38a2944a3705bfbd325766bda216\">Initialize</a> (int numIncidentFaces)</td></tr>\n@@ -178,15 +178,15 @@\n <tr class=\"separator:aa57d6053ca61cdf53b36937812b09307\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p>Simple class used by subclasses of <a class=\"el\" href=\"a00941.html\" title=\"Base class providing initialization of a Surface for each face of a mesh.\">SurfaceFactory</a> to describe a vertex. </p>\n <p><a class=\"el\" href=\"a00969.html\" title=\"Simple class used by subclasses of SurfaceFactory to describe a vertex.\">VertexDescriptor</a> is a simple class used by <a class=\"el\" href=\"a00941.html\" title=\"Base class providing initialization of a Surface for each face of a mesh.\">SurfaceFactory</a> and its subclasses to provide a complete topological description around the vertex of a face, i.e. its valence, the sizes of its incident faces, sharpness values, etc.</p>\n <p>Instances are created and partially initialized by <a class=\"el\" href=\"a00941.html\" title=\"Base class providing initialization of a Surface for each face of a mesh.\">SurfaceFactory</a> before being passed to its subclasses to be fully populated. So public construction is not available (or useful). </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00725_source.html#l00131\">131</a> of file <a class=\"el\" href=\"a00725_source.html\">vertexDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00878_source.html#l00131\">131</a> of file <a class=\"el\" href=\"a00878_source.html\">vertexDescriptor.h</a>.</p>\n </div><h2 class=\"groupheader\">Member Function Documentation</h2>\n <a id=\"a831025d6d817c4afb1df7d5a705af378\" name=\"a831025d6d817c4afb1df7d5a705af378\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a831025d6d817c4afb1df7d5a705af378\">&#9670;&#160;</a></span>ClearEdgeSharpness()</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n <table class=\"mlabels\">\n@@ -205,15 +205,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Remove any sharpness assigned to the incident edges. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00725_source.html#l00398\">398</a> of file <a class=\"el\" href=\"a00725_source.html\">vertexDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00878_source.html#l00398\">398</a> of file <a class=\"el\" href=\"a00878_source.html\">vertexDescriptor.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a5c719e43580059139938a6ed0f851853\" name=\"a5c719e43580059139938a6ed0f851853\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5c719e43580059139938a6ed0f851853\">&#9670;&#160;</a></span>ClearIncidentFaceSizes()</h2>\n \n <div class=\"memitem\">\n@@ -234,15 +234,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Remove any assigned sizes of incident faces. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00725_source.html#l00350\">350</a> of file <a class=\"el\" href=\"a00725_source.html\">vertexDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00878_source.html#l00350\">350</a> of file <a class=\"el\" href=\"a00878_source.html\">vertexDescriptor.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a68afc60df5a617f5d7e1580548b72f9b\" name=\"a68afc60df5a617f5d7e1580548b72f9b\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a68afc60df5a617f5d7e1580548b72f9b\">&#9670;&#160;</a></span>ClearVertexSharpness()</h2>\n \n <div class=\"memitem\">\n@@ -263,15 +263,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Remove any sharpness assigned to the vertex. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00725_source.html#l00377\">377</a> of file <a class=\"el\" href=\"a00725_source.html\">vertexDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00878_source.html#l00377\">377</a> of file <a class=\"el\" href=\"a00878_source.html\">vertexDescriptor.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a0cb0c1f4fa225637898cf1c7420bc064\" name=\"a0cb0c1f4fa225637898cf1c7420bc064\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0cb0c1f4fa225637898cf1c7420bc064\">&#9670;&#160;</a></span>Finalize()</h2>\n \n <div class=\"memitem\">\n@@ -328,15 +328,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return the sharpness assigned to edges of an incident face. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00725_source.html#l00436\">436</a> of file <a class=\"el\" href=\"a00725_source.html\">vertexDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00878_source.html#l00436\">436</a> of file <a class=\"el\" href=\"a00878_source.html\">vertexDescriptor.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a434afb577a5e287b615364d94d124e84\" name=\"a434afb577a5e287b615364d94d124e84\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a434afb577a5e287b615364d94d124e84\">&#9670;&#160;</a></span>GetIncidentFaceSize()</h2>\n \n <div class=\"memitem\">\n@@ -358,15 +358,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return the size of an incident face. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00725_source.html#l00362\">362</a> of file <a class=\"el\" href=\"a00725_source.html\">vertexDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00878_source.html#l00362\">362</a> of file <a class=\"el\" href=\"a00878_source.html\">vertexDescriptor.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a460ea7c821fd4c2522de6503f9c25866\" name=\"a460ea7c821fd4c2522de6503f9c25866\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a460ea7c821fd4c2522de6503f9c25866\">&#9670;&#160;</a></span>GetManifoldEdgeSharpness()</h2>\n \n <div class=\"memitem\">\n@@ -388,15 +388,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return the sharpness assigned to a manifold edge. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00725_source.html#l00420\">420</a> of file <a class=\"el\" href=\"a00725_source.html\">vertexDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00878_source.html#l00420\">420</a> of file <a class=\"el\" href=\"a00878_source.html\">vertexDescriptor.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a03588bdc24a8240380aa0972ecae0ea1\" name=\"a03588bdc24a8240380aa0972ecae0ea1\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a03588bdc24a8240380aa0972ecae0ea1\">&#9670;&#160;</a></span>GetVertexSharpness()</h2>\n \n <div class=\"memitem\">\n@@ -417,15 +417,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return the sharpness of the vertex. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00725_source.html#l00386\">386</a> of file <a class=\"el\" href=\"a00725_source.html\">vertexDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00878_source.html#l00386\">386</a> of file <a class=\"el\" href=\"a00878_source.html\">vertexDescriptor.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a2c6d182581c88931784f62fe2b8ae666\" name=\"a2c6d182581c88931784f62fe2b8ae666\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2c6d182581c88931784f62fe2b8ae666\">&#9670;&#160;</a></span>HasEdgeSharpness()</h2>\n \n <div class=\"memitem\">\n@@ -446,15 +446,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return if sharpness was assigned to the incident edges. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00725_source.html#l00394\">394</a> of file <a class=\"el\" href=\"a00725_source.html\">vertexDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00878_source.html#l00394\">394</a> of file <a class=\"el\" href=\"a00878_source.html\">vertexDescriptor.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ad56c50bc5582768806d7890c55b63141\" name=\"ad56c50bc5582768806d7890c55b63141\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad56c50bc5582768806d7890c55b63141\">&#9670;&#160;</a></span>HasIncidentFaceSizes()</h2>\n \n <div class=\"memitem\">\n@@ -475,15 +475,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return if the sizes of incident faces are assigned. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00725_source.html#l00346\">346</a> of file <a class=\"el\" href=\"a00725_source.html\">vertexDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00878_source.html#l00346\">346</a> of file <a class=\"el\" href=\"a00878_source.html\">vertexDescriptor.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a4f46be1cfd41b34d8808363c83e9ff56\" name=\"a4f46be1cfd41b34d8808363c83e9ff56\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4f46be1cfd41b34d8808363c83e9ff56\">&#9670;&#160;</a></span>HasVertexSharpness()</h2>\n \n <div class=\"memitem\">\n@@ -504,15 +504,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return if sharpness was assigned to the vertex. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00725_source.html#l00373\">373</a> of file <a class=\"el\" href=\"a00725_source.html\">vertexDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00878_source.html#l00373\">373</a> of file <a class=\"el\" href=\"a00878_source.html\">vertexDescriptor.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a1d4a38a2944a3705bfbd325766bda216\" name=\"a1d4a38a2944a3705bfbd325766bda216\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1d4a38a2944a3705bfbd325766bda216\">&#9670;&#160;</a></span>Initialize()</h2>\n \n <div class=\"memitem\">\n@@ -553,15 +553,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return if vertex neighborhood is on a boundary. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00725_source.html#l00338\">338</a> of file <a class=\"el\" href=\"a00725_source.html\">vertexDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00878_source.html#l00338\">338</a> of file <a class=\"el\" href=\"a00878_source.html\">vertexDescriptor.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a28f34ca6c256f1f7fa44e862540ec421\" name=\"a28f34ca6c256f1f7fa44e862540ec421\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a28f34ca6c256f1f7fa44e862540ec421\">&#9670;&#160;</a></span>IsManifold()</h2>\n \n <div class=\"memitem\">\n@@ -582,15 +582,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return if vertex neighborhood is manifold. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00725_source.html#l00329\">329</a> of file <a class=\"el\" href=\"a00725_source.html\">vertexDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00878_source.html#l00329\">329</a> of file <a class=\"el\" href=\"a00878_source.html\">vertexDescriptor.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ac532c4b500b1a85ea22217f2c65a70ed\" name=\"ac532c4b500b1a85ea22217f2c65a70ed\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac532c4b500b1a85ea22217f2c65a70ed\">&#9670;&#160;</a></span>IsValid()</h2>\n \n <div class=\"memitem\">\n@@ -611,15 +611,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return if instance is valid. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00725_source.html#l00320\">320</a> of file <a class=\"el\" href=\"a00725_source.html\">vertexDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00878_source.html#l00320\">320</a> of file <a class=\"el\" href=\"a00878_source.html\">vertexDescriptor.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ae228420c7ad83f58aad85b1268518df8\" name=\"ae228420c7ad83f58aad85b1268518df8\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae228420c7ad83f58aad85b1268518df8\">&#9670;&#160;</a></span>SetBoundary()</h2>\n \n <div class=\"memitem\">\n@@ -641,15 +641,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Declare the vertex neighborhood as being on a boundary. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00725_source.html#l00334\">334</a> of file <a class=\"el\" href=\"a00725_source.html\">vertexDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00878_source.html#l00334\">334</a> of file <a class=\"el\" href=\"a00878_source.html\">vertexDescriptor.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a4dacf9da42e80ca546274402a8d3b266\" name=\"a4dacf9da42e80ca546274402a8d3b266\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4dacf9da42e80ca546274402a8d3b266\">&#9670;&#160;</a></span>SetIncidentFaceEdgeSharpness()</h2>\n \n <div class=\"memitem\">\n@@ -696,15 +696,15 @@\n     <tr><td class=\"paramname\">faceIndex</td><td>Index of the incident face </td></tr>\n     <tr><td class=\"paramname\">leadingEdgeSharp</td><td>Sharpness to assign to the leading edge of the incident face, i.e. the edge of the face following the vertex. </td></tr>\n     <tr><td class=\"paramname\">trailingEdgeSharp</td><td>Sharpness to assign to the trailing edge of the incident face, i.e. the edge of the face preceding the vertex. </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00725_source.html#l00427\">427</a> of file <a class=\"el\" href=\"a00725_source.html\">vertexDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00878_source.html#l00427\">427</a> of file <a class=\"el\" href=\"a00878_source.html\">vertexDescriptor.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ae9fae0d6843ce883db4c377d19dd61a8\" name=\"ae9fae0d6843ce883db4c377d19dd61a8\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae9fae0d6843ce883db4c377d19dd61a8\">&#9670;&#160;</a></span>SetIncidentFaceSize()</h2>\n \n <div class=\"memitem\">\n@@ -736,15 +736,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Assign the size of an incident face. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00725_source.html#l00355\">355</a> of file <a class=\"el\" href=\"a00725_source.html\">vertexDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00878_source.html#l00355\">355</a> of file <a class=\"el\" href=\"a00878_source.html\">vertexDescriptor.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a100c73e08e78f4378b34a3f7abd9f1be\" name=\"a100c73e08e78f4378b34a3f7abd9f1be\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a100c73e08e78f4378b34a3f7abd9f1be\">&#9670;&#160;</a></span>SetManifold()</h2>\n \n <div class=\"memitem\">\n@@ -766,15 +766,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Declare the vertex neighborhood as manifold (ordered) </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00725_source.html#l00325\">325</a> of file <a class=\"el\" href=\"a00725_source.html\">vertexDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00878_source.html#l00325\">325</a> of file <a class=\"el\" href=\"a00878_source.html\">vertexDescriptor.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aea91b4a9e7032d4fce2434c93ae2983a\" name=\"aea91b4a9e7032d4fce2434c93ae2983a\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aea91b4a9e7032d4fce2434c93ae2983a\">&#9670;&#160;</a></span>SetManifoldEdgeSharpness()</h2>\n \n <div class=\"memitem\">\n@@ -814,15 +814,15 @@\n   <table class=\"params\">\n     <tr><td class=\"paramname\">edgeIndex</td><td>Index of the edge in the ordered sequence </td></tr>\n     <tr><td class=\"paramname\">edgeSharpness</td><td>Sharpness to be assigned to the edge </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00725_source.html#l00403\">403</a> of file <a class=\"el\" href=\"a00725_source.html\">vertexDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00878_source.html#l00403\">403</a> of file <a class=\"el\" href=\"a00878_source.html\">vertexDescriptor.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a5f2854209dd55d5c420b1a7282da8793\" name=\"a5f2854209dd55d5c420b1a7282da8793\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5f2854209dd55d5c420b1a7282da8793\">&#9670;&#160;</a></span>SetVertexSharpness()</h2>\n \n <div class=\"memitem\">\n@@ -844,20 +844,20 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Assign sharpness to the vertex. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00725_source.html#l00382\">382</a> of file <a class=\"el\" href=\"a00725_source.html\">vertexDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00878_source.html#l00382\">382</a> of file <a class=\"el\" href=\"a00878_source.html\">vertexDescriptor.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/bfr/<a class=\"el\" href=\"a00725_source.html\">vertexDescriptor.h</a></li>\n+<li>opensubdiv/bfr/<a class=\"el\" href=\"a00878_source.html\">vertexDescriptor.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00907.html\">Bfr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00969.html\">VertexDescriptor</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00973.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00973.html", "unified_diff": "@@ -99,15 +99,15 @@\n   <div class=\"headertitle\"><div class=\"title\">PatchDescriptor Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Describes the type of a patch.  \n  <a href=\"a00973.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00773_source.html\">patchDescriptor.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00857_source.html\">patchDescriptor.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\n Public Types</h2></td></tr>\n <tr class=\"memitem:a1d1cfd8ffb84e947f82999c682b666a7\" id=\"r_a1d1cfd8ffb84e947f82999c682b666a7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">Type</a> { <br />\n &#160;&#160;<a class=\"el\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a3a0c2fc8a9cab2764314c3324a8a68b2\">NON_PATCH</a> = 0\n , <br />\n &#160;&#160;<a class=\"el\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7adc0f401e772f1affa81071e70631abbf\">POINTS</a>\n@@ -192,15 +192,15 @@\n <tr class=\"memdesc:ae2b7537df7fd7add00efb4285fa356c2\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns a vector of all the legal patch descriptors for the given adaptive subdivision scheme.  <br /></td></tr>\n <tr class=\"separator:ae2b7537df7fd7add00efb4285fa356c2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p>Describes the type of a patch. </p>\n <p>Uniquely identifies all the different types of patches </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00773_source.html#l00044\">44</a> of file <a class=\"el\" href=\"a00773_source.html\">patchDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00857_source.html#l00044\">44</a> of file <a class=\"el\" href=\"a00857_source.html\">patchDescriptor.h</a>.</p>\n </div><h2 class=\"groupheader\">Member Enumeration Documentation</h2>\n <a id=\"a1d1cfd8ffb84e947f82999c682b666a7\" name=\"a1d1cfd8ffb84e947f82999c682b666a7\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1d1cfd8ffb84e947f82999c682b666a7\">&#9670;&#160;</a></span>Type</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n       <table class=\"memname\">\n@@ -226,15 +226,15 @@\n </td></tr>\n <tr><td class=\"fieldname\"><a id=\"a1d1cfd8ffb84e947f82999c682b666a7ae765e809376e5557d348d3e991a7273e\" name=\"a1d1cfd8ffb84e947f82999c682b666a7ae765e809376e5557d348d3e991a7273e\"></a>GREGORY&#160;</td><td class=\"fielddoc\"></td></tr>\n <tr><td class=\"fieldname\"><a id=\"a1d1cfd8ffb84e947f82999c682b666a7ac4ae10df9c13e44880ca7be341e44f2a\" name=\"a1d1cfd8ffb84e947f82999c682b666a7ac4ae10df9c13e44880ca7be341e44f2a\"></a>GREGORY_BOUNDARY&#160;</td><td class=\"fielddoc\"></td></tr>\n <tr><td class=\"fieldname\"><a id=\"a1d1cfd8ffb84e947f82999c682b666a7ad7d1a88a40ae8938e07af7a7745054b0\" name=\"a1d1cfd8ffb84e947f82999c682b666a7ad7d1a88a40ae8938e07af7a7745054b0\"></a>GREGORY_BASIS&#160;</td><td class=\"fielddoc\"></td></tr>\n <tr><td class=\"fieldname\"><a id=\"a1d1cfd8ffb84e947f82999c682b666a7a8bf2cfb939c78155cae7549621ea73f6\" name=\"a1d1cfd8ffb84e947f82999c682b666a7a8bf2cfb939c78155cae7549621ea73f6\"></a>GREGORY_TRIANGLE&#160;</td><td class=\"fielddoc\"></td></tr>\n </table>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00773_source.html#l00048\">48</a> of file <a class=\"el\" href=\"a00773_source.html\">patchDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00857_source.html#l00048\">48</a> of file <a class=\"el\" href=\"a00857_source.html\">patchDescriptor.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"af3f91a4a134cb2e5786990ec81f30d17\" name=\"af3f91a4a134cb2e5786990ec81f30d17\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af3f91a4a134cb2e5786990ec81f30d17\">&#9670;&#160;</a></span>PatchDescriptor() <span class=\"overload\">[1/3]</span></h2>\n \n@@ -256,15 +256,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Default constructor. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00773_source.html#l00069\">69</a> of file <a class=\"el\" href=\"a00773_source.html\">patchDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00857_source.html#l00069\">69</a> of file <a class=\"el\" href=\"a00857_source.html\">patchDescriptor.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a8e33c50700963e8dc99a5f598a32aaa3\" name=\"a8e33c50700963e8dc99a5f598a32aaa3\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8e33c50700963e8dc99a5f598a32aaa3\">&#9670;&#160;</a></span>PatchDescriptor() <span class=\"overload\">[2/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -286,15 +286,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Constructor. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00773_source.html#l00073\">73</a> of file <a class=\"el\" href=\"a00773_source.html\">patchDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00857_source.html#l00073\">73</a> of file <a class=\"el\" href=\"a00857_source.html\">patchDescriptor.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a6c6de8b1c8212039f4702f70bb75cf02\" name=\"a6c6de8b1c8212039f4702f70bb75cf02\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6c6de8b1c8212039f4702f70bb75cf02\">&#9670;&#160;</a></span>PatchDescriptor() <span class=\"overload\">[3/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -316,15 +316,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Copy Constructor. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00773_source.html#l00077\">77</a> of file <a class=\"el\" href=\"a00773_source.html\">patchDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00857_source.html#l00077\">77</a> of file <a class=\"el\" href=\"a00857_source.html\">patchDescriptor.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Member Function Documentation</h2>\n <a id=\"ae2b7537df7fd7add00efb4285fa356c2\" name=\"ae2b7537df7fd7add00efb4285fa356c2\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae2b7537df7fd7add00efb4285fa356c2\">&#9670;&#160;</a></span>GetAdaptivePatchDescriptors()</h2>\n \n@@ -374,15 +374,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Number of control vertices of Gregory patch basis (20) </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00773_source.html#l00126\">126</a> of file <a class=\"el\" href=\"a00773_source.html\">patchDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00857_source.html#l00126\">126</a> of file <a class=\"el\" href=\"a00857_source.html\">patchDescriptor.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ac81253df324c9b3e106783112457be15\" name=\"ac81253df324c9b3e106783112457be15\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac81253df324c9b3e106783112457be15\">&#9670;&#160;</a></span>GetGregoryPatchSize()</h2>\n \n <div class=\"memitem\">\n@@ -403,15 +403,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Number of control vertices of Gregory (and Gregory Boundary) Patches in table. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00773_source.html#l00123\">123</a> of file <a class=\"el\" href=\"a00773_source.html\">patchDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00857_source.html#l00123\">123</a> of file <a class=\"el\" href=\"a00857_source.html\">patchDescriptor.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a65d29e074c001aa7817045e54403bfbb\" name=\"a65d29e074c001aa7817045e54403bfbb\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a65d29e074c001aa7817045e54403bfbb\">&#9670;&#160;</a></span>GetNumControlVertices() <span class=\"overload\">[1/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -432,15 +432,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the number of control vertices expected for a patch of the type described. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00773_source.html#l00110\">110</a> of file <a class=\"el\" href=\"a00773_source.html\">patchDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00857_source.html#l00110\">110</a> of file <a class=\"el\" href=\"a00857_source.html\">patchDescriptor.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ae9baf121beab0244c3efe2a546c9664a\" name=\"ae9baf121beab0244c3efe2a546c9664a\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae9baf121beab0244c3efe2a546c9664a\">&#9670;&#160;</a></span>GetNumControlVertices() <span class=\"overload\">[2/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -462,15 +462,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the number of control vertices expected for a patch of the type described. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00773_source.html#l00150\">150</a> of file <a class=\"el\" href=\"a00773_source.html\">patchDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00857_source.html#l00150\">150</a> of file <a class=\"el\" href=\"a00857_source.html\">patchDescriptor.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a881bd183b2e330c490fcce5caf3ef433\" name=\"a881bd183b2e330c490fcce5caf3ef433\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a881bd183b2e330c490fcce5caf3ef433\">&#9670;&#160;</a></span>GetNumFVarControlVertices() <span class=\"overload\">[1/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -492,15 +492,15 @@\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Deprecated. </p>\n <dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"a00973.html#ae9baf121beab0244c3efe2a546c9664a\" title=\"Returns the number of control vertices expected for a patch of the type described.\">PatchDescriptor::GetNumControlVertices</a> </dd></dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00773_source.html#l00115\">115</a> of file <a class=\"el\" href=\"a00773_source.html\">patchDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00857_source.html#l00115\">115</a> of file <a class=\"el\" href=\"a00857_source.html\">patchDescriptor.h</a>.</p>\n \n </div>\n </div>\n <a id=\"adb4f93fd5ebd3f74793dd8c7bfa4d5f5\" name=\"adb4f93fd5ebd3f74793dd8c7bfa4d5f5\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adb4f93fd5ebd3f74793dd8c7bfa4d5f5\">&#9670;&#160;</a></span>GetNumFVarControlVertices() <span class=\"overload\">[2/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -523,15 +523,15 @@\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Deprecated. </p>\n <dl class=\"section see\"><dt>See also</dt><dd><a class=\"el\" href=\"a00973.html#ae9baf121beab0244c3efe2a546c9664a\" title=\"Returns the number of control vertices expected for a patch of the type described.\">PatchDescriptor::GetNumControlVertices</a> </dd></dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00773_source.html#l00168\">168</a> of file <a class=\"el\" href=\"a00773_source.html\">patchDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00857_source.html#l00168\">168</a> of file <a class=\"el\" href=\"a00857_source.html\">patchDescriptor.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a7f367dc8b49973c9c3571907a5c85749\" name=\"a7f367dc8b49973c9c3571907a5c85749\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7f367dc8b49973c9c3571907a5c85749\">&#9670;&#160;</a></span>GetRegularPatchSize()</h2>\n \n <div class=\"memitem\">\n@@ -552,15 +552,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Number of control vertices of Regular Patches in table. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00773_source.html#l00120\">120</a> of file <a class=\"el\" href=\"a00773_source.html\">patchDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00857_source.html#l00120\">120</a> of file <a class=\"el\" href=\"a00857_source.html\">patchDescriptor.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a485decc00facb0972f8775a8a20851fa\" name=\"a485decc00facb0972f8775a8a20851fa\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a485decc00facb0972f8775a8a20851fa\">&#9670;&#160;</a></span>GetType()</h2>\n \n <div class=\"memitem\">\n@@ -581,15 +581,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the type of the patch. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00773_source.html#l00087\">87</a> of file <a class=\"el\" href=\"a00773_source.html\">patchDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00857_source.html#l00087\">87</a> of file <a class=\"el\" href=\"a00857_source.html\">patchDescriptor.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a1d77cd9717f08d87e372cd7047d774d9\" name=\"a1d77cd9717f08d87e372cd7047d774d9\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1d77cd9717f08d87e372cd7047d774d9\">&#9670;&#160;</a></span>IsAdaptive() <span class=\"overload\">[1/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -610,15 +610,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns true if the type is an adaptive patch. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00773_source.html#l00097\">97</a> of file <a class=\"el\" href=\"a00773_source.html\">patchDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00857_source.html#l00097\">97</a> of file <a class=\"el\" href=\"a00857_source.html\">patchDescriptor.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aa1c2bc6e9b4732d59a1c215f1ddfa224\" name=\"aa1c2bc6e9b4732d59a1c215f1ddfa224\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa1c2bc6e9b4732d59a1c215f1ddfa224\">&#9670;&#160;</a></span>IsAdaptive() <span class=\"overload\">[2/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -640,15 +640,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns true if the type is an adaptive (non-linear) patch. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00773_source.html#l00092\">92</a> of file <a class=\"el\" href=\"a00773_source.html\">patchDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00857_source.html#l00092\">92</a> of file <a class=\"el\" href=\"a00857_source.html\">patchDescriptor.h</a>.</p>\n \n </div>\n </div>\n <a id=\"abd9f5b68153db907eb7ccd0ed177dfdd\" name=\"abd9f5b68153db907eb7ccd0ed177dfdd\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abd9f5b68153db907eb7ccd0ed177dfdd\">&#9670;&#160;</a></span>operator&lt;()</h2>\n \n <div class=\"memitem\">\n@@ -670,15 +670,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Allows ordering of patches by type. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00773_source.html#l00173\">173</a> of file <a class=\"el\" href=\"a00773_source.html\">patchDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00857_source.html#l00173\">173</a> of file <a class=\"el\" href=\"a00857_source.html\">patchDescriptor.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a957e78d72208a5a9b394a2ea1d4d95d9\" name=\"a957e78d72208a5a9b394a2ea1d4d95d9\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a957e78d72208a5a9b394a2ea1d4d95d9\">&#9670;&#160;</a></span>operator=()</h2>\n \n <div class=\"memitem\">\n@@ -700,15 +700,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Assignment operator. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00773_source.html#l00081\">81</a> of file <a class=\"el\" href=\"a00773_source.html\">patchDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00857_source.html#l00081\">81</a> of file <a class=\"el\" href=\"a00857_source.html\">patchDescriptor.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a70f2b01ccc2adc41113279d318210005\" name=\"a70f2b01ccc2adc41113279d318210005\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a70f2b01ccc2adc41113279d318210005\">&#9670;&#160;</a></span>operator==()</h2>\n \n <div class=\"memitem\">\n@@ -730,15 +730,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>True if the descriptors are identical. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00773_source.html#l00180\">180</a> of file <a class=\"el\" href=\"a00773_source.html\">patchDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00857_source.html#l00180\">180</a> of file <a class=\"el\" href=\"a00857_source.html\">patchDescriptor.h</a>.</p>\n \n </div>\n </div>\n <a id=\"acd0f82d3c49b8a5dd436d4003c44b713\" name=\"acd0f82d3c49b8a5dd436d4003c44b713\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acd0f82d3c49b8a5dd436d4003c44b713\">&#9670;&#160;</a></span>print()</h2>\n \n <div class=\"memitem\">\n@@ -752,15 +752,15 @@\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/far/<a class=\"el\" href=\"a00773_source.html\">patchDescriptor.h</a></li>\n+<li>opensubdiv/far/<a class=\"el\" href=\"a00857_source.html\">patchDescriptor.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00908.html\">Far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00973.html\">PatchDescriptor</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00977.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00977.html", "unified_diff": "@@ -99,15 +99,15 @@\n   <div class=\"headertitle\"><div class=\"title\">PatchMap Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>An quadtree-based map connecting coarse faces to their sub-patches.  \n  <a href=\"a00977.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00779_source.html\">patchMap.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00830_source.html\">patchMap.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\n Public Types</h2></td></tr>\n <tr class=\"memitem:ae83a6047fa1e373c7943d54b6dc46402\" id=\"r_ae83a6047fa1e373c7943d54b6dc46402\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef <a class=\"el\" href=\"a00997.html\">PatchTable::PatchHandle</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00977.html#ae83a6047fa1e373c7943d54b6dc46402\">Handle</a></td></tr>\n <tr class=\"separator:ae83a6047fa1e373c7943d54b6dc46402\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\n@@ -120,29 +120,29 @@\n <tr class=\"separator:abc70f9419d5f26ef85cbef5c5b6451f0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p>An quadtree-based map connecting coarse faces to their sub-patches. </p>\n <p>PatchTable::PatchArrays contain lists of patches that represent the limit surface of a mesh, sorted by their topological type. These arrays break the connection between coarse faces and their sub-patches.</p>\n <p>The <a class=\"el\" href=\"a00977.html\" title=\"An quadtree-based map connecting coarse faces to their sub-patches.\">PatchMap</a> provides a quad-tree based lookup structure that, given a singular parametric location, can efficiently return a handle to the sub-patch that contains this location. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00779_source.html#l00049\">49</a> of file <a class=\"el\" href=\"a00779_source.html\">patchMap.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00830_source.html#l00049\">49</a> of file <a class=\"el\" href=\"a00830_source.html\">patchMap.h</a>.</p>\n </div><h2 class=\"groupheader\">Member Typedef Documentation</h2>\n <a id=\"ae83a6047fa1e373c7943d54b6dc46402\" name=\"ae83a6047fa1e373c7943d54b6dc46402\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae83a6047fa1e373c7943d54b6dc46402\">&#9670;&#160;</a></span>Handle</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">typedef <a class=\"el\" href=\"a00997.html\">PatchTable::PatchHandle</a> <a class=\"el\" href=\"a00977.html#ae83a6047fa1e373c7943d54b6dc46402\">Handle</a></td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00779_source.html#l00052\">52</a> of file <a class=\"el\" href=\"a00779_source.html\">patchMap.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00830_source.html#l00052\">52</a> of file <a class=\"el\" href=\"a00830_source.html\">patchMap.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"a016619de52fd79dbcdb879cc12b79200\" name=\"a016619de52fd79dbcdb879cc12b79200\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a016619de52fd79dbcdb879cc12b79200\">&#9670;&#160;</a></span>PatchMap()</h2>\n \n@@ -218,20 +218,20 @@\n     <tr><td class=\"paramname\">u</td><td>Local u parameter</td></tr>\n     <tr><td class=\"paramname\">v</td><td>Local v parameter</td></tr>\n   </table>\n   </dd>\n </dl>\n <dl class=\"section return\"><dt>Returns</dt><dd>A patch handle or 0 if the face is not supported (index out of bounds) or is tagged as a hole </dd></dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00779_source.html#l00193\">193</a> of file <a class=\"el\" href=\"a00779_source.html\">patchMap.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00830_source.html#l00193\">193</a> of file <a class=\"el\" href=\"a00830_source.html\">patchMap.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/far/<a class=\"el\" href=\"a00779_source.html\">patchMap.h</a></li>\n+<li>opensubdiv/far/<a class=\"el\" href=\"a00830_source.html\">patchMap.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00908.html\">Far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00977.html\">PatchMap</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00985.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00985.html", "unified_diff": "@@ -94,42 +94,42 @@\n   <div class=\"summary\">\n <a href=\"#pub-attribs\">Public Attributes</a> &#124;\n <a href=\"a00982.html\">List of all members</a>  </div>\n   <div class=\"headertitle\"><div class=\"title\">PatchMap::QuadNode::Child Struct Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00779_source.html\">patchMap.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00830_source.html\">patchMap.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\n Public Attributes</h2></td></tr>\n <tr class=\"memitem:ad3e71fff03a23f93fef41adc5d367435\" id=\"r_ad3e71fff03a23f93fef41adc5d367435\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">unsigned int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00985.html#ad3e71fff03a23f93fef41adc5d367435\">isSet</a>: 1</td></tr>\n <tr class=\"separator:ad3e71fff03a23f93fef41adc5d367435\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a07e7a9f4469398070886a336d833daa9\" id=\"r_a07e7a9f4469398070886a336d833daa9\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">unsigned int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00985.html#a07e7a9f4469398070886a336d833daa9\">isLeaf</a>: 1</td></tr>\n <tr class=\"separator:a07e7a9f4469398070886a336d833daa9\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a589d64202487f78e3cc30dd2e04c5201\" id=\"r_a589d64202487f78e3cc30dd2e04c5201\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">unsigned int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00985.html#a589d64202487f78e3cc30dd2e04c5201\">index</a>: 30</td></tr>\n <tr class=\"separator:a589d64202487f78e3cc30dd2e04c5201\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\">\n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00779_source.html#l00085\">85</a> of file <a class=\"el\" href=\"a00779_source.html\">patchMap.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00830_source.html#l00085\">85</a> of file <a class=\"el\" href=\"a00830_source.html\">patchMap.h</a>.</p>\n </div><h2 class=\"groupheader\">Member Data Documentation</h2>\n <a id=\"a589d64202487f78e3cc30dd2e04c5201\" name=\"a589d64202487f78e3cc30dd2e04c5201\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a589d64202487f78e3cc30dd2e04c5201\">&#9670;&#160;</a></span>index</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">unsigned int index</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00779_source.html#l00088\">88</a> of file <a class=\"el\" href=\"a00779_source.html\">patchMap.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00830_source.html#l00088\">88</a> of file <a class=\"el\" href=\"a00830_source.html\">patchMap.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a07e7a9f4469398070886a336d833daa9\" name=\"a07e7a9f4469398070886a336d833daa9\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a07e7a9f4469398070886a336d833daa9\">&#9670;&#160;</a></span>isLeaf</h2>\n \n <div class=\"memitem\">\n@@ -137,15 +137,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">unsigned int isLeaf</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00779_source.html#l00087\">87</a> of file <a class=\"el\" href=\"a00779_source.html\">patchMap.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00830_source.html#l00087\">87</a> of file <a class=\"el\" href=\"a00830_source.html\">patchMap.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ad3e71fff03a23f93fef41adc5d367435\" name=\"ad3e71fff03a23f93fef41adc5d367435\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad3e71fff03a23f93fef41adc5d367435\">&#9670;&#160;</a></span>isSet</h2>\n \n <div class=\"memitem\">\n@@ -153,20 +153,20 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">unsigned int isSet</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00779_source.html#l00086\">86</a> of file <a class=\"el\" href=\"a00779_source.html\">patchMap.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00830_source.html#l00086\">86</a> of file <a class=\"el\" href=\"a00830_source.html\">patchMap.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li>opensubdiv/far/<a class=\"el\" href=\"a00779_source.html\">patchMap.h</a></li>\n+<li>opensubdiv/far/<a class=\"el\" href=\"a00830_source.html\">patchMap.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00908.html\">Far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00977.html\">PatchMap</a></li><li class=\"navelem\"><b>QuadNode</b></li><li class=\"navelem\"><a class=\"el\" href=\"a00985.html\">Child</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00989.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00989.html", "unified_diff": "@@ -98,15 +98,15 @@\n   <div class=\"headertitle\"><div class=\"title\">PatchParam Struct Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Patch parameterization.  \n  <a href=\"a00989.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00755_source.html\">patchParam.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00836_source.html\">patchParam.h</a>&gt;</code></p>\n <div class=\"dynheader\">\n Inheritance diagram for PatchParam:</div>\n <div class=\"dyncontent\">\n  <div class=\"center\">\n   <img src=\"a00989.png\" usemap=\"#PatchParam_map\" alt=\"\"/>\n   <map id=\"PatchParam_map\" name=\"PatchParam_map\">\n <area href=\"a01329.html\" alt=\"PatchParam\" shape=\"rect\" coords=\"0,56,80,80\"/>\n@@ -249,15 +249,15 @@\n   |       \\       |       \\       |       |       \\       |       \\\n   |   L1    \\     |   L1    \\     |       |   L1    \\     |   L1    \\\n   |           \\   |           \\   |       |           \\   |           \\\n   |0,0          \\ |1,0          \\ |       |             \\ |             \\\n   +---------------+---------------+       +---------------+---------------+\n (0,0)                           (1,0)  (0,0,1)                         (1,0,0)\n </pre> \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00755_source.html#l00152\">152</a> of file <a class=\"el\" href=\"a00755_source.html\">patchParam.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00836_source.html#l00152\">152</a> of file <a class=\"el\" href=\"a00836_source.html\">patchParam.h</a>.</p>\n </div><h2 class=\"groupheader\">Member Function Documentation</h2>\n <a id=\"aa71d36872f416feaa853788a7a7a7ef8\" name=\"aa71d36872f416feaa853788a7a7a7ef8\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa71d36872f416feaa853788a7a7a7ef8\">&#9670;&#160;</a></span>Clear()</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n <table class=\"mlabels\">\n@@ -276,15 +276,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Resets everything to 0. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00755_source.html#l00174\">174</a> of file <a class=\"el\" href=\"a00755_source.html\">patchParam.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00836_source.html#l00174\">174</a> of file <a class=\"el\" href=\"a00836_source.html\">patchParam.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a3ce6d530fdd758f089cd61589cf13937\" name=\"a3ce6d530fdd758f089cd61589cf13937\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3ce6d530fdd758f089cd61589cf13937\">&#9670;&#160;</a></span>GetBoundary()</h2>\n \n <div class=\"memitem\">\n@@ -305,15 +305,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the boundary edge encoding for the patch. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00755_source.html#l00191\">191</a> of file <a class=\"el\" href=\"a00755_source.html\">patchParam.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00836_source.html#l00191\">191</a> of file <a class=\"el\" href=\"a00836_source.html\">patchParam.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a75d02f3fb15201f2a2ca9850f77db8bb\" name=\"a75d02f3fb15201f2a2ca9850f77db8bb\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a75d02f3fb15201f2a2ca9850f77db8bb\">&#9670;&#160;</a></span>GetDepth()</h2>\n \n <div class=\"memitem\">\n@@ -334,15 +334,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the level of subdivision of the patch. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00755_source.html#l00197\">197</a> of file <a class=\"el\" href=\"a00755_source.html\">patchParam.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00836_source.html#l00197\">197</a> of file <a class=\"el\" href=\"a00836_source.html\">patchParam.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a71fe5a723e7c3a29b26cb6a0af33a7ee\" name=\"a71fe5a723e7c3a29b26cb6a0af33a7ee\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a71fe5a723e7c3a29b26cb6a0af33a7ee\">&#9670;&#160;</a></span>GetFaceId()</h2>\n \n <div class=\"memitem\">\n@@ -363,15 +363,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the faceid. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00755_source.html#l00177\">177</a> of file <a class=\"el\" href=\"a00755_source.html\">patchParam.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00836_source.html#l00177\">177</a> of file <a class=\"el\" href=\"a00836_source.html\">patchParam.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a3fb8c711847e677119dcecab48e27200\" name=\"a3fb8c711847e677119dcecab48e27200\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3fb8c711847e677119dcecab48e27200\">&#9670;&#160;</a></span>GetParamFraction()</h2>\n \n <div class=\"memitem\">\n@@ -392,15 +392,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the fraction of unit parametric space covered by this face. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00755_source.html#l00265\">265</a> of file <a class=\"el\" href=\"a00755_source.html\">patchParam.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00836_source.html#l00265\">265</a> of file <a class=\"el\" href=\"a00836_source.html\">patchParam.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a3e80fdc78d4e976e88f8d035a6bdfe9a\" name=\"a3e80fdc78d4e976e88f8d035a6bdfe9a\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3e80fdc78d4e976e88f8d035a6bdfe9a\">&#9670;&#160;</a></span>GetTransition()</h2>\n \n <div class=\"memitem\">\n@@ -421,15 +421,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the transition edge encoding for the patch. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00755_source.html#l00188\">188</a> of file <a class=\"el\" href=\"a00755_source.html\">patchParam.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00836_source.html#l00188\">188</a> of file <a class=\"el\" href=\"a00836_source.html\">patchParam.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a5e290d380300d960b35a9e4bb36532b3\" name=\"a5e290d380300d960b35a9e4bb36532b3\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5e290d380300d960b35a9e4bb36532b3\">&#9670;&#160;</a></span>GetU()</h2>\n \n <div class=\"memitem\">\n@@ -450,15 +450,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the log2 value of the u parameter at the first corner of the patch. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00755_source.html#l00181\">181</a> of file <a class=\"el\" href=\"a00755_source.html\">patchParam.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00836_source.html#l00181\">181</a> of file <a class=\"el\" href=\"a00836_source.html\">patchParam.h</a>.</p>\n \n </div>\n </div>\n <a id=\"adf00c825e17a25a22eddd4a5dc3f3ea2\" name=\"adf00c825e17a25a22eddd4a5dc3f3ea2\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adf00c825e17a25a22eddd4a5dc3f3ea2\">&#9670;&#160;</a></span>GetV()</h2>\n \n <div class=\"memitem\">\n@@ -479,15 +479,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the log2 value of the v parameter at the first corner of the patch. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00755_source.html#l00185\">185</a> of file <a class=\"el\" href=\"a00755_source.html\">patchParam.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00836_source.html#l00185\">185</a> of file <a class=\"el\" href=\"a00836_source.html\">patchParam.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a193470573424fe6b2e91f317509b5897\" name=\"a193470573424fe6b2e91f317509b5897\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a193470573424fe6b2e91f317509b5897\">&#9670;&#160;</a></span>IsRegular()</h2>\n \n <div class=\"memitem\">\n@@ -508,15 +508,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns whether the patch is regular. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00755_source.html#l00228\">228</a> of file <a class=\"el\" href=\"a00755_source.html\">patchParam.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00836_source.html#l00228\">228</a> of file <a class=\"el\" href=\"a00836_source.html\">patchParam.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a117b0b4f76b0e63ad1f6a3d83591f034\" name=\"a117b0b4f76b0e63ad1f6a3d83591f034\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a117b0b4f76b0e63ad1f6a3d83591f034\">&#9670;&#160;</a></span>IsTriangleRotated()</h2>\n \n <div class=\"memitem\">\n@@ -537,15 +537,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns if a triangular patch is parametrically rotated 180 degrees. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00755_source.html#l00290\">290</a> of file <a class=\"el\" href=\"a00755_source.html\">patchParam.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00836_source.html#l00290\">290</a> of file <a class=\"el\" href=\"a00836_source.html\">patchParam.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a8a53fc370a76c5d29d610d9ae926f4fe\" name=\"a8a53fc370a76c5d29d610d9ae926f4fe\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8a53fc370a76c5d29d610d9ae926f4fe\">&#9670;&#160;</a></span>NonQuadRoot()</h2>\n \n <div class=\"memitem\">\n@@ -566,15 +566,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>True if the parent base face is a non-quad. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00755_source.html#l00194\">194</a> of file <a class=\"el\" href=\"a00755_source.html\">patchParam.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00836_source.html#l00194\">194</a> of file <a class=\"el\" href=\"a00836_source.html\">patchParam.h</a>.</p>\n \n </div>\n </div>\n <a id=\"af348a1feaddb11b275b5291bfe7e76f7\" name=\"af348a1feaddb11b275b5291bfe7e76f7\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af348a1feaddb11b275b5291bfe7e76f7\">&#9670;&#160;</a></span>Normalize()</h2>\n \n <div class=\"memitem\">\n@@ -615,15 +615,15 @@\n   <table class=\"params\">\n     <tr><td class=\"paramname\">u</td><td>u parameter </td></tr>\n     <tr><td class=\"paramname\">v</td><td>v parameter </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00755_source.html#l00271\">271</a> of file <a class=\"el\" href=\"a00755_source.html\">patchParam.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00836_source.html#l00271\">271</a> of file <a class=\"el\" href=\"a00836_source.html\">patchParam.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a2adc7ff754a40f9a22c04cf2ab04d75c\" name=\"a2adc7ff754a40f9a22c04cf2ab04d75c\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2adc7ff754a40f9a22c04cf2ab04d75c\">&#9670;&#160;</a></span>NormalizeTriangle()</h2>\n \n <div class=\"memitem\">\n@@ -655,15 +655,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00755_source.html#l00297\">297</a> of file <a class=\"el\" href=\"a00755_source.html\">patchParam.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00836_source.html#l00297\">297</a> of file <a class=\"el\" href=\"a00836_source.html\">patchParam.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a98adcbce89caf00ca5c67c978d1f8576\" name=\"a98adcbce89caf00ca5c67c978d1f8576\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a98adcbce89caf00ca5c67c978d1f8576\">&#9670;&#160;</a></span>Set()</h2>\n \n <div class=\"memitem\">\n@@ -744,15 +744,15 @@\n     <tr><td class=\"paramname\">boundary</td><td>5-bits identifying boundary edges (and verts for tris) </td></tr>\n     <tr><td class=\"paramname\">transition</td><td>4-bits identifying transition edges</td></tr>\n     <tr><td class=\"paramname\">regular</td><td>whether the patch is regular </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00755_source.html#l00249\">249</a> of file <a class=\"el\" href=\"a00755_source.html\">patchParam.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00836_source.html#l00249\">249</a> of file <a class=\"el\" href=\"a00836_source.html\">patchParam.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ac1285d0e8771e821487cb18d0a324097\" name=\"ac1285d0e8771e821487cb18d0a324097\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac1285d0e8771e821487cb18d0a324097\">&#9670;&#160;</a></span>Unnormalize()</h2>\n \n <div class=\"memitem\">\n@@ -793,15 +793,15 @@\n   <table class=\"params\">\n     <tr><td class=\"paramname\">u</td><td>u parameter </td></tr>\n     <tr><td class=\"paramname\">v</td><td>v parameter </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00755_source.html#l00281\">281</a> of file <a class=\"el\" href=\"a00755_source.html\">patchParam.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00836_source.html#l00281\">281</a> of file <a class=\"el\" href=\"a00836_source.html\">patchParam.h</a>.</p>\n \n </div>\n </div>\n <a id=\"acf6abf4b1514b90d77bff5c2563ef1c3\" name=\"acf6abf4b1514b90d77bff5c2563ef1c3\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acf6abf4b1514b90d77bff5c2563ef1c3\">&#9670;&#160;</a></span>UnnormalizeTriangle()</h2>\n \n <div class=\"memitem\">\n@@ -833,15 +833,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00755_source.html#l00312\">312</a> of file <a class=\"el\" href=\"a00755_source.html\">patchParam.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00836_source.html#l00312\">312</a> of file <a class=\"el\" href=\"a00836_source.html\">patchParam.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Member Data Documentation</h2>\n <a id=\"ae918c114a445f892134cb94b70d3f07e\" name=\"ae918c114a445f892134cb94b70d3f07e\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae918c114a445f892134cb94b70d3f07e\">&#9670;&#160;</a></span>field0</h2>\n \n@@ -850,15 +850,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">unsigned int field0</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00755_source.html#l00230\">230</a> of file <a class=\"el\" href=\"a00755_source.html\">patchParam.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00836_source.html#l00230\">230</a> of file <a class=\"el\" href=\"a00836_source.html\">patchParam.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aa992496f945c3e0ffb3a55ca84a7cb60\" name=\"aa992496f945c3e0ffb3a55ca84a7cb60\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa992496f945c3e0ffb3a55ca84a7cb60\">&#9670;&#160;</a></span>field1</h2>\n \n <div class=\"memitem\">\n@@ -866,20 +866,20 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">unsigned int field1</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00755_source.html#l00231\">231</a> of file <a class=\"el\" href=\"a00755_source.html\">patchParam.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00836_source.html#l00231\">231</a> of file <a class=\"el\" href=\"a00836_source.html\">patchParam.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li>opensubdiv/far/<a class=\"el\" href=\"a00755_source.html\">patchParam.h</a></li>\n+<li>opensubdiv/far/<a class=\"el\" href=\"a00836_source.html\">patchParam.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00908.html\">Far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00989.html\">PatchParam</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00993.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00993.html", "unified_diff": "@@ -98,15 +98,15 @@\n   <div class=\"headertitle\"><div class=\"title\">PatchTable Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Container for arrays of parametric patches.  \n  <a href=\"a00993.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00761_source.html\">patchTable.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00842_source.html\">patchTable.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n <tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00997.html\">PatchHandle</a></td></tr>\n <tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Handle that can be used as unique patch identifier within <a class=\"el\" href=\"a00993.html\" title=\"Container for arrays of parametric patches.\">PatchTable</a>.  <a href=\"a00997.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n@@ -420,15 +420,15 @@\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p>Container for arrays of parametric patches. </p>\n <p><a class=\"el\" href=\"a00993.html\" title=\"Container for arrays of parametric patches.\">PatchTable</a> contains topology and parametric information about the patches generated by the Refinement process. Patches in the table are sorted into arrays based on their <a class=\"el\" href=\"a00973.html\" title=\"Describes the type of a patch.\">PatchDescriptor</a> Type.</p>\n <p>Note : <a class=\"el\" href=\"a00993.html\" title=\"Container for arrays of parametric patches.\">PatchTable</a> can be accessed either using a <a class=\"el\" href=\"a00997.html\" title=\"Handle that can be used as unique patch identifier within PatchTable.\">PatchHandle</a> or a combination of array and patch indices.</p>\n <p>XXXX manuelk we should add a PatchIterator that can dereference into a <a class=\"el\" href=\"a00997.html\" title=\"Handle that can be used as unique patch identifier within PatchTable.\">PatchHandle</a> for fast linear traversal of the table </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00761_source.html#l00055\">55</a> of file <a class=\"el\" href=\"a00761_source.html\">patchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00842_source.html#l00055\">55</a> of file <a class=\"el\" href=\"a00842_source.html\">patchTable.h</a>.</p>\n </div><h2 class=\"groupheader\">Member Typedef Documentation</h2>\n <a id=\"ab72c4254f74c932eeb7d7b08805932c5\" name=\"ab72c4254f74c932eeb7d7b08805932c5\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab72c4254f74c932eeb7d7b08805932c5\">&#9670;&#160;</a></span>ConstQuadOffsetsArray</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n       <table class=\"memname\">\n@@ -436,15 +436,15 @@\n           <td class=\"memname\">typedef <a class=\"el\" href=\"a01353.html\">Vtr::ConstArray</a>&lt;unsigned int&gt; <a class=\"el\" href=\"a00993.html#ab72c4254f74c932eeb7d7b08805932c5\">ConstQuadOffsetsArray</a></td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n <p>Accessors for the gregory patch evaluation buffers. These methods will be deprecated. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00761_source.html#l00259\">259</a> of file <a class=\"el\" href=\"a00761_source.html\">patchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00842_source.html#l00259\">259</a> of file <a class=\"el\" href=\"a00842_source.html\">patchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a9484ab8a323750c2f639ee8709b1349b\" name=\"a9484ab8a323750c2f639ee8709b1349b\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9484ab8a323750c2f639ee8709b1349b\">&#9670;&#160;</a></span>PatchVertsTable</h2>\n \n <div class=\"memitem\">\n@@ -452,15 +452,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">typedef std::vector&lt;<a class=\"el\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a>&gt; <a class=\"el\" href=\"a00993.html#a9484ab8a323750c2f639ee8709b1349b\">PatchVertsTable</a></td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00761_source.html#l00375\">375</a> of file <a class=\"el\" href=\"a00761_source.html\">patchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00842_source.html#l00375\">375</a> of file <a class=\"el\" href=\"a00842_source.html\">patchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ad71e6ae07059dc39b0550c98cfcee291\" name=\"ad71e6ae07059dc39b0550c98cfcee291\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad71e6ae07059dc39b0550c98cfcee291\">&#9670;&#160;</a></span>QuadOffsetsTable</h2>\n \n <div class=\"memitem\">\n@@ -468,15 +468,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">typedef std::vector&lt;unsigned int&gt; <a class=\"el\" href=\"a00993.html#ad71e6ae07059dc39b0550c98cfcee291\">QuadOffsetsTable</a></td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00761_source.html#l00389\">389</a> of file <a class=\"el\" href=\"a00761_source.html\">patchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00842_source.html#l00389\">389</a> of file <a class=\"el\" href=\"a00842_source.html\">patchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a2fbf111cac9d122eeaec5c0cb73fa77d\" name=\"a2fbf111cac9d122eeaec5c0cb73fa77d\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2fbf111cac9d122eeaec5c0cb73fa77d\">&#9670;&#160;</a></span>VertexValenceTable</h2>\n \n <div class=\"memitem\">\n@@ -484,15 +484,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">typedef std::vector&lt;<a class=\"el\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a>&gt; <a class=\"el\" href=\"a00993.html#a2fbf111cac9d122eeaec5c0cb73fa77d\">VertexValenceTable</a></td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00761_source.html#l00264\">264</a> of file <a class=\"el\" href=\"a00761_source.html\">patchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00842_source.html#l00264\">264</a> of file <a class=\"el\" href=\"a00842_source.html\">patchTable.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"a3419c5d57330d6787f8c14a7677b8d9b\" name=\"a3419c5d57330d6787f8c14a7677b8d9b\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3419c5d57330d6787f8c14a7677b8d9b\">&#9670;&#160;</a></span>PatchTable() <span class=\"overload\">[1/2]</span></h2>\n \n@@ -601,15 +601,15 @@\n     <tr><td class=\"paramname\">src</td><td>Buffer with primvar data for the base and refined vertex values</td></tr>\n     <tr><td class=\"paramname\">dst</td><td>Destination buffer for the computed local point vertex values</td></tr>\n   </table>\n   </dd>\n </dl>\n <p>For more flexibility computing local vertex points, retrieval of the local point stencil table and use of its public methods is recommended or often required. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00761_source.html#l00826\">826</a> of file <a class=\"el\" href=\"a00761_source.html\">patchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00842_source.html#l00826\">826</a> of file <a class=\"el\" href=\"a00842_source.html\">patchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a059c9506f9ef8ebf24a68fc298be58be\" name=\"a059c9506f9ef8ebf24a68fc298be58be\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a059c9506f9ef8ebf24a68fc298be58be\">&#9670;&#160;</a></span>ComputeLocalPointValuesFaceVarying()</h2>\n \n <div class=\"memitem\">\n@@ -658,15 +658,15 @@\n     <tr><td class=\"paramname\">dst</td><td>Destination buffer for the computed local point face-varying values</td></tr>\n     <tr><td class=\"paramname\">channel</td><td>face-varying channel</td></tr>\n   </table>\n   </dd>\n </dl>\n <p>For more flexibility computing local face-varying points, retrieval of the local point face-varying stencil table and use of its public methods is recommended or often required. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00761_source.html#l00844\">844</a> of file <a class=\"el\" href=\"a00761_source.html\">patchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00842_source.html#l00844\">844</a> of file <a class=\"el\" href=\"a00842_source.html\">patchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a08ccda63d26e5b06957be5f5eec75d01\" name=\"a08ccda63d26e5b06957be5f5eec75d01\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a08ccda63d26e5b06957be5f5eec75d01\">&#9670;&#160;</a></span>ComputeLocalPointValuesVarying()</h2>\n \n <div class=\"memitem\">\n@@ -708,15 +708,15 @@\n     <tr><td class=\"paramname\">src</td><td>Buffer with primvar data for the base and refined varying values</td></tr>\n     <tr><td class=\"paramname\">dst</td><td>Destination buffer for the computed local point varying values</td></tr>\n   </table>\n   </dd>\n </dl>\n <p>For more flexibility computing local varying points, retrieval of the local point varying stencil table and use of its public methods is recommended or often required. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00761_source.html#l00835\">835</a> of file <a class=\"el\" href=\"a00761_source.html\">patchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00842_source.html#l00835\">835</a> of file <a class=\"el\" href=\"a00842_source.html\">patchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a80a3dced9165fc1a8a9bdbfe6b6111a4\" name=\"a80a3dced9165fc1a8a9bdbfe6b6111a4\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a80a3dced9165fc1a8a9bdbfe6b6111a4\">&#9670;&#160;</a></span>EvaluateBasis() <span class=\"overload\">[1/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -790,15 +790,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>An overloaded version to assist template parameter resolution when explicitly declaring unused array arguments as 0. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00761_source.html#l00865\">865</a> of file <a class=\"el\" href=\"a00761_source.html\">patchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00842_source.html#l00865\">865</a> of file <a class=\"el\" href=\"a00842_source.html\">patchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a3c912c55ec0579d5f16fb2946a9e7f72\" name=\"a3c912c55ec0579d5f16fb2946a9e7f72\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3c912c55ec0579d5f16fb2946a9e7f72\">&#9670;&#160;</a></span>EvaluateBasis() <span class=\"overload\">[2/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -872,15 +872,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>An overloaded version to assist template parameter resolution when explicitly declaring unused array arguments as 0. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00761_source.html#l00858\">858</a> of file <a class=\"el\" href=\"a00761_source.html\">patchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00842_source.html#l00858\">858</a> of file <a class=\"el\" href=\"a00842_source.html\">patchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ab8a09f15edef57b9b4aed0d0d6183b75\" name=\"ab8a09f15edef57b9b4aed0d0d6183b75\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab8a09f15edef57b9b4aed0d0d6183b75\">&#9670;&#160;</a></span>EvaluateBasis() <span class=\"overload\">[3/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -1048,15 +1048,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>An overloaded version to assist template parameter resolution when explicitly declaring unused array arguments as 0. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00761_source.html#l00895\">895</a> of file <a class=\"el\" href=\"a00761_source.html\">patchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00842_source.html#l00895\">895</a> of file <a class=\"el\" href=\"a00842_source.html\">patchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aa78873a43e9f5b599cba62356882d0a5\" name=\"aa78873a43e9f5b599cba62356882d0a5\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa78873a43e9f5b599cba62356882d0a5\">&#9670;&#160;</a></span>EvaluateBasisFaceVarying() <span class=\"overload\">[2/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -1136,15 +1136,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>An overloaded version to assist template parameter resolution when explicitly declaring unused array arguments as 0. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00761_source.html#l00888\">888</a> of file <a class=\"el\" href=\"a00761_source.html\">patchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00842_source.html#l00888\">888</a> of file <a class=\"el\" href=\"a00842_source.html\">patchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a64fe119d6034e4b1f39e81d39ad9dfc4\" name=\"a64fe119d6034e4b1f39e81d39ad9dfc4\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a64fe119d6034e4b1f39e81d39ad9dfc4\">&#9670;&#160;</a></span>EvaluateBasisFaceVarying() <span class=\"overload\">[3/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -1313,15 +1313,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>An overloaded version to assist template parameter resolution when explicitly declaring unused array arguments as 0. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00761_source.html#l00880\">880</a> of file <a class=\"el\" href=\"a00761_source.html\">patchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00842_source.html#l00880\">880</a> of file <a class=\"el\" href=\"a00842_source.html\">patchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a30c6cda6c630d6823cdcc718e79a99ca\" name=\"a30c6cda6c630d6823cdcc718e79a99ca\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a30c6cda6c630d6823cdcc718e79a99ca\">&#9670;&#160;</a></span>EvaluateBasisVarying() <span class=\"overload\">[2/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -1395,15 +1395,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>An overloaded version to assist template parameter resolution when explicitly declaring unused array arguments as 0. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00761_source.html#l00873\">873</a> of file <a class=\"el\" href=\"a00761_source.html\">patchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00842_source.html#l00873\">873</a> of file <a class=\"el\" href=\"a00842_source.html\">patchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ad690cee703683b70def7a4419120cc9a\" name=\"ad690cee703683b70def7a4419120cc9a\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad690cee703683b70def7a4419120cc9a\">&#9670;&#160;</a></span>EvaluateBasisVarying() <span class=\"overload\">[3/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -1654,15 +1654,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00761_source.html#l00812\">812</a> of file <a class=\"el\" href=\"a00761_source.html\">patchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00842_source.html#l00812\">812</a> of file <a class=\"el\" href=\"a00842_source.html\">patchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a523e2a6f899aede5166441b14efa348a\" name=\"a523e2a6f899aede5166441b14efa348a\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a523e2a6f899aede5166441b14efa348a\">&#9670;&#160;</a></span>GetLocalPointFaceVaryingStencilTable() <span class=\"overload\">[2/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -1684,15 +1684,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the stencil table to compute local point face-varying values. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00761_source.html#l00789\">789</a> of file <a class=\"el\" href=\"a00761_source.html\">patchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00842_source.html#l00789\">789</a> of file <a class=\"el\" href=\"a00842_source.html\">patchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ac176593fac078b4f7dd4801d586d6c41\" name=\"ac176593fac078b4f7dd4801d586d6c41\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac176593fac078b4f7dd4801d586d6c41\">&#9670;&#160;</a></span>GetLocalPointFaceVaryingStencilTable() <span class=\"overload\">[3/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -1735,15 +1735,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the stencil table to compute local point vertex values. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00761_source.html#l00778\">778</a> of file <a class=\"el\" href=\"a00761_source.html\">patchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00842_source.html#l00778\">778</a> of file <a class=\"el\" href=\"a00842_source.html\">patchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a1c85ed58e2e3362dd22fbdb815f2c5a3\" name=\"a1c85ed58e2e3362dd22fbdb815f2c5a3\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1c85ed58e2e3362dd22fbdb815f2c5a3\">&#9670;&#160;</a></span>GetLocalPointStencilTable() <span class=\"overload\">[2/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -1785,15 +1785,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00761_source.html#l00800\">800</a> of file <a class=\"el\" href=\"a00761_source.html\">patchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00842_source.html#l00800\">800</a> of file <a class=\"el\" href=\"a00842_source.html\">patchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ad6bafe91da1dcf5b8fb1f7c8cb4ed619\" name=\"ad6bafe91da1dcf5b8fb1f7c8cb4ed619\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad6bafe91da1dcf5b8fb1f7c8cb4ed619\">&#9670;&#160;</a></span>GetLocalPointVaryingStencilTable() <span class=\"overload\">[1/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -1814,15 +1814,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the stencil table to compute local point varying values. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00761_source.html#l00783\">783</a> of file <a class=\"el\" href=\"a00761_source.html\">patchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00842_source.html#l00783\">783</a> of file <a class=\"el\" href=\"a00842_source.html\">patchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"af903f44e0f0743652b5f465ff60492a2\" name=\"af903f44e0f0743652b5f465ff60492a2\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af903f44e0f0743652b5f465ff60492a2\">&#9670;&#160;</a></span>GetLocalPointVaryingStencilTable() <span class=\"overload\">[2/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -1864,15 +1864,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00761_source.html#l00806\">806</a> of file <a class=\"el\" href=\"a00761_source.html\">patchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00842_source.html#l00806\">806</a> of file <a class=\"el\" href=\"a00842_source.html\">patchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a14bf987459715b918b370247bb24a61c\" name=\"a14bf987459715b918b370247bb24a61c\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a14bf987459715b918b370247bb24a61c\">&#9670;&#160;</a></span>GetMaxValence()</h2>\n \n <div class=\"memitem\">\n@@ -1893,15 +1893,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns max vertex valence. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00761_source.html#l00092\">92</a> of file <a class=\"el\" href=\"a00761_source.html\">patchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00842_source.html#l00092\">92</a> of file <a class=\"el\" href=\"a00842_source.html\">patchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a5b32465be706d80f4fac5ea05e3e0ded\" name=\"a5b32465be706d80f4fac5ea05e3e0ded\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5b32465be706d80f4fac5ea05e3e0ded\">&#9670;&#160;</a></span>GetNumControlVertices()</h2>\n \n <div class=\"memitem\">\n@@ -1942,15 +1942,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the total number of control vertex indices in the table. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00761_source.html#l00084\">84</a> of file <a class=\"el\" href=\"a00761_source.html\">patchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00842_source.html#l00084\">84</a> of file <a class=\"el\" href=\"a00842_source.html\">patchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aa9be824a572029f3ec1e0c0d6cfecd77\" name=\"aa9be824a572029f3ec1e0c0d6cfecd77\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa9be824a572029f3ec1e0c0d6cfecd77\">&#9670;&#160;</a></span>GetNumFVarChannels()</h2>\n \n <div class=\"memitem\">\n@@ -2106,15 +2106,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the total number of ptex faces in the mesh. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00761_source.html#l00095\">95</a> of file <a class=\"el\" href=\"a00761_source.html\">patchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00842_source.html#l00095\">95</a> of file <a class=\"el\" href=\"a00842_source.html\">patchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ad2744ba943362370738d6bd8448cd779\" name=\"ad2744ba943362370738d6bd8448cd779\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad2744ba943362370738d6bd8448cd779\">&#9670;&#160;</a></span>GetPatchArrayDescriptor()</h2>\n \n <div class=\"memitem\">\n@@ -2255,15 +2255,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Get the table of patch control vertices. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00761_source.html#l00378\">378</a> of file <a class=\"el\" href=\"a00761_source.html\">patchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00842_source.html#l00378\">378</a> of file <a class=\"el\" href=\"a00842_source.html\">patchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a9373bf15eaee019dd08099d05515e080\" name=\"a9373bf15eaee019dd08099d05515e080\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9373bf15eaee019dd08099d05515e080\">&#9670;&#160;</a></span>GetPatchDescriptor()</h2>\n \n <div class=\"memitem\">\n@@ -2568,15 +2568,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the PatchParamTable (PatchParams order matches patch array sorting) </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00761_source.html#l00381\">381</a> of file <a class=\"el\" href=\"a00761_source.html\">patchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00842_source.html#l00381\">381</a> of file <a class=\"el\" href=\"a00842_source.html\">patchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a68a029efbad55b2fd991d29aa37a7c28\" name=\"a68a029efbad55b2fd991d29aa37a7c28\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a68a029efbad55b2fd991d29aa37a7c28\">&#9670;&#160;</a></span>GetPatchQuadOffsets()</h2>\n \n <div class=\"memitem\">\n@@ -2717,15 +2717,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the quad-offsets table. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00761_source.html#l00392\">392</a> of file <a class=\"el\" href=\"a00761_source.html\">patchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00842_source.html#l00392\">392</a> of file <a class=\"el\" href=\"a00842_source.html\">patchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ad173086439fbbf0412b86b3d1262847d\" name=\"ad173086439fbbf0412b86b3d1262847d\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad173086439fbbf0412b86b3d1262847d\">&#9670;&#160;</a></span>GetSharpnessIndexTable()</h2>\n \n <div class=\"memitem\">\n@@ -2746,15 +2746,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns a sharpness index table for each patch (if exists) </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00761_source.html#l00384\">384</a> of file <a class=\"el\" href=\"a00761_source.html\">patchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00842_source.html#l00384\">384</a> of file <a class=\"el\" href=\"a00842_source.html\">patchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a7c1135ced687d1313ed925b8441fdf60\" name=\"a7c1135ced687d1313ed925b8441fdf60\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7c1135ced687d1313ed925b8441fdf60\">&#9670;&#160;</a></span>getSharpnessIndices()</h2>\n \n <div class=\"memitem\">\n@@ -2801,15 +2801,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns sharpness values table. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00761_source.html#l00387\">387</a> of file <a class=\"el\" href=\"a00761_source.html\">patchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00842_source.html#l00387\">387</a> of file <a class=\"el\" href=\"a00842_source.html\">patchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a02449704e384b32232b06d0d57968138\" name=\"a02449704e384b32232b06d0d57968138\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a02449704e384b32232b06d0d57968138\">&#9670;&#160;</a></span>getSharpnessValues()</h2>\n \n <div class=\"memitem\">\n@@ -2944,15 +2944,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the 'VertexValences' table (vertex neighborhoods table) </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00761_source.html#l00267\">267</a> of file <a class=\"el\" href=\"a00761_source.html\">patchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00842_source.html#l00267\">267</a> of file <a class=\"el\" href=\"a00842_source.html\">patchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a11c0f8be31c18b856cf9cdea511e54de\" name=\"a11c0f8be31c18b856cf9cdea511e54de\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a11c0f8be31c18b856cf9cdea511e54de\">&#9670;&#160;</a></span>IsFeatureAdaptive()</h2>\n \n <div class=\"memitem\">\n@@ -3013,15 +3013,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00761_source.html#l00756\">756</a> of file <a class=\"el\" href=\"a00761_source.html\">patchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00842_source.html#l00756\">756</a> of file <a class=\"el\" href=\"a00842_source.html\">patchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a4814cce8e9b999c4dbb64bcf09ab73e1\" name=\"a4814cce8e9b999c4dbb64bcf09ab73e1\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4814cce8e9b999c4dbb64bcf09ab73e1\">&#9670;&#160;</a></span>LocalPointFaceVaryingStencilPrecisionMatchesType() <span class=\"overload\">[3/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -3042,15 +3042,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00761_source.html#l00769\">769</a> of file <a class=\"el\" href=\"a00761_source.html\">patchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00842_source.html#l00769\">769</a> of file <a class=\"el\" href=\"a00842_source.html\">patchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ae7d9c513e950df25aebfeed309666764\" name=\"ae7d9c513e950df25aebfeed309666764\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae7d9c513e950df25aebfeed309666764\">&#9670;&#160;</a></span>LocalPointStencilPrecisionMatchesType() <span class=\"overload\">[1/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -3092,15 +3092,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00761_source.html#l00748\">748</a> of file <a class=\"el\" href=\"a00761_source.html\">patchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00842_source.html#l00748\">748</a> of file <a class=\"el\" href=\"a00842_source.html\">patchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a24c2f632253c21d97fdba264ac2635a9\" name=\"a24c2f632253c21d97fdba264ac2635a9\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a24c2f632253c21d97fdba264ac2635a9\">&#9670;&#160;</a></span>LocalPointStencilPrecisionMatchesType() <span class=\"overload\">[3/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -3121,15 +3121,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00761_source.html#l00761\">761</a> of file <a class=\"el\" href=\"a00761_source.html\">patchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00842_source.html#l00761\">761</a> of file <a class=\"el\" href=\"a00842_source.html\">patchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ab181437e35cfc57ef3efdd368bb51a69\" name=\"ab181437e35cfc57ef3efdd368bb51a69\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab181437e35cfc57ef3efdd368bb51a69\">&#9670;&#160;</a></span>LocalPointVaryingStencilPrecisionMatchesType() <span class=\"overload\">[1/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -3171,15 +3171,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00761_source.html#l00752\">752</a> of file <a class=\"el\" href=\"a00761_source.html\">patchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00842_source.html#l00752\">752</a> of file <a class=\"el\" href=\"a00842_source.html\">patchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"af22fd3afdc99098cc89463f530de5011\" name=\"af22fd3afdc99098cc89463f530de5011\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af22fd3afdc99098cc89463f530de5011\">&#9670;&#160;</a></span>LocalPointVaryingStencilPrecisionMatchesType() <span class=\"overload\">[3/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -3200,15 +3200,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00761_source.html#l00765\">765</a> of file <a class=\"el\" href=\"a00761_source.html\">patchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00842_source.html#l00765\">765</a> of file <a class=\"el\" href=\"a00842_source.html\">patchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"acd0f82d3c49b8a5dd436d4003c44b713\" name=\"acd0f82d3c49b8a5dd436d4003c44b713\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acd0f82d3c49b8a5dd436d4003c44b713\">&#9670;&#160;</a></span>print()</h2>\n \n <div class=\"memitem\">\n@@ -3244,20 +3244,20 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">friend</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00761_source.html#l00531\">531</a> of file <a class=\"el\" href=\"a00761_source.html\">patchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00842_source.html#l00531\">531</a> of file <a class=\"el\" href=\"a00842_source.html\">patchTable.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/far/<a class=\"el\" href=\"a00761_source.html\">patchTable.h</a></li>\n+<li>opensubdiv/far/<a class=\"el\" href=\"a00842_source.html\">patchTable.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00908.html\">Far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00993.html\">PatchTable</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00997.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00997.html", "unified_diff": "@@ -98,15 +98,15 @@\n   <div class=\"headertitle\"><div class=\"title\">PatchTable::PatchHandle Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Handle that can be used as unique patch identifier within <a class=\"el\" href=\"a00993.html\" title=\"Container for arrays of parametric patches.\">PatchTable</a>.  \n  <a href=\"a00997.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00761_source.html\">patchTable.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00842_source.html\">patchTable.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\n Public Attributes</h2></td></tr>\n <tr class=\"memitem:a4430ecde7e1d784b2bef6dc4c2ff04c2\" id=\"r_a4430ecde7e1d784b2bef6dc4c2ff04c2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00997.html#a4430ecde7e1d784b2bef6dc4c2ff04c2\">arrayIndex</a></td></tr>\n <tr class=\"separator:a4430ecde7e1d784b2bef6dc4c2ff04c2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a31bdf15525ab73560c2b725ff7f8ae3a\" id=\"r_a31bdf15525ab73560c2b725ff7f8ae3a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00997.html#a31bdf15525ab73560c2b725ff7f8ae3a\">patchIndex</a></td></tr>\n <tr class=\"separator:a31bdf15525ab73560c2b725ff7f8ae3a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n@@ -119,15 +119,15 @@\n <tr class=\"separator:ad4867d502f9704b7e45a7974e8918dc3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:aff380d8d7f072959898c0a4e25150d2a\" id=\"r_aff380d8d7f072959898c0a4e25150d2a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00997.html#aff380d8d7f072959898c0a4e25150d2a\">PatchMap</a></td></tr>\n <tr class=\"separator:aff380d8d7f072959898c0a4e25150d2a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p>Handle that can be used as unique patch identifier within <a class=\"el\" href=\"a00993.html\" title=\"Container for arrays of parametric patches.\">PatchTable</a>. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00761_source.html#l00060\">60</a> of file <a class=\"el\" href=\"a00761_source.html\">patchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00842_source.html#l00060\">60</a> of file <a class=\"el\" href=\"a00842_source.html\">patchTable.h</a>.</p>\n </div><h2 class=\"groupheader\">Friends And Related Symbol Documentation</h2>\n <a id=\"aff380d8d7f072959898c0a4e25150d2a\" name=\"aff380d8d7f072959898c0a4e25150d2a\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aff380d8d7f072959898c0a4e25150d2a\">&#9670;&#160;</a></span>PatchMap</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n <table class=\"mlabels\">\n@@ -141,15 +141,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">friend</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00761_source.html#l00065\">65</a> of file <a class=\"el\" href=\"a00761_source.html\">patchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00842_source.html#l00065\">65</a> of file <a class=\"el\" href=\"a00842_source.html\">patchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ad4867d502f9704b7e45a7974e8918dc3\" name=\"ad4867d502f9704b7e45a7974e8918dc3\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad4867d502f9704b7e45a7974e8918dc3\">&#9670;&#160;</a></span>PatchTable</h2>\n \n <div class=\"memitem\">\n@@ -165,15 +165,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">friend</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00761_source.html#l00064\">64</a> of file <a class=\"el\" href=\"a00761_source.html\">patchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00842_source.html#l00064\">64</a> of file <a class=\"el\" href=\"a00842_source.html\">patchTable.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Member Data Documentation</h2>\n <a id=\"a4430ecde7e1d784b2bef6dc4c2ff04c2\" name=\"a4430ecde7e1d784b2bef6dc4c2ff04c2\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4430ecde7e1d784b2bef6dc4c2ff04c2\">&#9670;&#160;</a></span>arrayIndex</h2>\n \n@@ -182,15 +182,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\"><a class=\"el\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> arrayIndex</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00761_source.html#l00067\">67</a> of file <a class=\"el\" href=\"a00761_source.html\">patchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00842_source.html#l00067\">67</a> of file <a class=\"el\" href=\"a00842_source.html\">patchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a31bdf15525ab73560c2b725ff7f8ae3a\" name=\"a31bdf15525ab73560c2b725ff7f8ae3a\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a31bdf15525ab73560c2b725ff7f8ae3a\">&#9670;&#160;</a></span>patchIndex</h2>\n \n <div class=\"memitem\">\n@@ -198,15 +198,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\"><a class=\"el\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> patchIndex</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00761_source.html#l00068\">68</a> of file <a class=\"el\" href=\"a00761_source.html\">patchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00842_source.html#l00068\">68</a> of file <a class=\"el\" href=\"a00842_source.html\">patchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a46d1a8129375c3ee40a33a81d44b685a\" name=\"a46d1a8129375c3ee40a33a81d44b685a\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a46d1a8129375c3ee40a33a81d44b685a\">&#9670;&#160;</a></span>vertIndex</h2>\n \n <div class=\"memitem\">\n@@ -214,20 +214,20 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\"><a class=\"el\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> vertIndex</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00761_source.html#l00069\">69</a> of file <a class=\"el\" href=\"a00761_source.html\">patchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00842_source.html#l00069\">69</a> of file <a class=\"el\" href=\"a00842_source.html\">patchTable.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/far/<a class=\"el\" href=\"a00761_source.html\">patchTable.h</a></li>\n+<li>opensubdiv/far/<a class=\"el\" href=\"a00842_source.html\">patchTable.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00908.html\">Far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00993.html\">PatchTable</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00997.html\">PatchHandle</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01017.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01017.html", "unified_diff": "@@ -99,15 +99,15 @@\n   <div class=\"headertitle\"><div class=\"title\">PatchTableFactory Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Factory for constructing a <a class=\"el\" href=\"a00993.html\" title=\"Container for arrays of parametric patches.\">PatchTable</a> from a <a class=\"el\" href=\"a01121.html\" title=\"Stores topology data for a specified set of refinement options.\">TopologyRefiner</a>.  \n  <a href=\"a01017.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00776_source.html\">patchTableFactory.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00854_source.html\">patchTableFactory.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n <tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01021.html\">Options</a></td></tr>\n <tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Public options for the <a class=\"el\" href=\"a00993.html\" title=\"Container for arrays of parametric patches.\">PatchTable</a> factory.  <a href=\"a01021.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01025.html\">PatchFaceTag</a></td></tr>\n@@ -124,29 +124,29 @@\n <tr class=\"memitem:a6ad8881e91652a8fe4d68d18ac16a435\" id=\"r_a6ad8881e91652a8fe4d68d18ac16a435\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"a00993.html\">PatchTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01017.html#a6ad8881e91652a8fe4d68d18ac16a435\">Create</a> (<a class=\"el\" href=\"a01121.html\">TopologyRefiner</a> const &amp;refiner, <a class=\"el\" href=\"a01021.html\">Options</a> options=<a class=\"el\" href=\"a01021.html\">Options</a>(), <a class=\"el\" href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">ConstIndexArray</a> selectedFaces=<a class=\"el\" href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">ConstIndexArray</a>())</td></tr>\n <tr class=\"memdesc:a6ad8881e91652a8fe4d68d18ac16a435\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Instantiates a <a class=\"el\" href=\"a00993.html\" title=\"Container for arrays of parametric patches.\">PatchTable</a> from a client-provided <a class=\"el\" href=\"a01121.html\" title=\"Stores topology data for a specified set of refinement options.\">TopologyRefiner</a>.  <br /></td></tr>\n <tr class=\"separator:a6ad8881e91652a8fe4d68d18ac16a435\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p>Factory for constructing a <a class=\"el\" href=\"a00993.html\" title=\"Container for arrays of parametric patches.\">PatchTable</a> from a <a class=\"el\" href=\"a01121.html\" title=\"Stores topology data for a specified set of refinement options.\">TopologyRefiner</a>. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00776_source.html#l00040\">40</a> of file <a class=\"el\" href=\"a00776_source.html\">patchTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00854_source.html#l00040\">40</a> of file <a class=\"el\" href=\"a00854_source.html\">patchTableFactory.h</a>.</p>\n </div><h2 class=\"groupheader\">Member Typedef Documentation</h2>\n <a id=\"a37218ea13f75caee4c93cc4e94d26060\" name=\"a37218ea13f75caee4c93cc4e94d26060\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a37218ea13f75caee4c93cc4e94d26060\">&#9670;&#160;</a></span>PatchTagVector</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">typedef std::vector&lt;<a class=\"el\" href=\"a01025.html\">PatchFaceTag</a>&gt; <a class=\"el\" href=\"a01017.html#a37218ea13f75caee4c93cc4e94d26060\">PatchTagVector</a></td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00776_source.html#l00208\">208</a> of file <a class=\"el\" href=\"a00776_source.html\">patchTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00854_source.html#l00208\">208</a> of file <a class=\"el\" href=\"a00854_source.html\">patchTableFactory.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Member Function Documentation</h2>\n <a id=\"a6ad8881e91652a8fe4d68d18ac16a435\" name=\"a6ad8881e91652a8fe4d68d18ac16a435\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6ad8881e91652a8fe4d68d18ac16a435\">&#9670;&#160;</a></span>Create()</h2>\n \n@@ -200,15 +200,15 @@\n   </dd>\n </dl>\n <dl class=\"section return\"><dt>Returns</dt><dd>A new instance of <a class=\"el\" href=\"a00993.html\" title=\"Container for arrays of parametric patches.\">PatchTable</a> </dd></dl>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/far/<a class=\"el\" href=\"a00776_source.html\">patchTableFactory.h</a></li>\n+<li>opensubdiv/far/<a class=\"el\" href=\"a00854_source.html\">patchTableFactory.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00908.html\">Far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01017.html\">PatchTableFactory</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01021.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01021.html", "unified_diff": "@@ -99,15 +99,15 @@\n   <div class=\"headertitle\"><div class=\"title\">PatchTableFactory::Options Struct Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Public options for the <a class=\"el\" href=\"a00993.html\" title=\"Container for arrays of parametric patches.\">PatchTable</a> factory.  \n  <a href=\"a01021.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00776_source.html\">patchTableFactory.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00854_source.html\">patchTableFactory.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\n Public Types</h2></td></tr>\n <tr class=\"memitem:aebc767d646011ab7d5bc7d6d49adf535\" id=\"r_aebc767d646011ab7d5bc7d6d49adf535\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535\">EndCapType</a> { <br />\n &#160;&#160;<a class=\"el\" href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535a39a0bc0d1c407b2b849c2bfaba366b22\">ENDCAP_NONE</a> = 0\n , <br />\n &#160;&#160;<a class=\"el\" href=\"a01021.html#aebc767d646011ab7d5bc7d6d49adf535a90f0e9a2c992889cefdf1db954f9d98f\">ENDCAP_BILINEAR_BASIS</a>\n@@ -208,15 +208,15 @@\n <tr class=\"memitem:a4c1ba8119a16ea0682a870ee7a8282a5\" id=\"r_a4c1ba8119a16ea0682a870ee7a8282a5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int const  *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01021.html#a4c1ba8119a16ea0682a870ee7a8282a5\">fvarChannelIndices</a></td></tr>\n <tr class=\"memdesc:a4c1ba8119a16ea0682a870ee7a8282a5\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">List containing the indices of the channels selected for the factory.  <br /></td></tr>\n <tr class=\"separator:a4c1ba8119a16ea0682a870ee7a8282a5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p>Public options for the <a class=\"el\" href=\"a00993.html\" title=\"Container for arrays of parametric patches.\">PatchTable</a> factory. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00776_source.html#l00045\">45</a> of file <a class=\"el\" href=\"a00776_source.html\">patchTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00854_source.html#l00045\">45</a> of file <a class=\"el\" href=\"a00854_source.html\">patchTableFactory.h</a>.</p>\n </div><h2 class=\"groupheader\">Member Enumeration Documentation</h2>\n <a id=\"aebc767d646011ab7d5bc7d6d49adf535\" name=\"aebc767d646011ab7d5bc7d6d49adf535\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aebc767d646011ab7d5bc7d6d49adf535\">&#9670;&#160;</a></span>EndCapType</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n       <table class=\"memname\">\n@@ -237,15 +237,15 @@\n </td></tr>\n <tr><td class=\"fieldname\"><a id=\"aebc767d646011ab7d5bc7d6d49adf535a2e89c8e5ac21dbd024ec902de51566b0\" name=\"aebc767d646011ab7d5bc7d6d49adf535a2e89c8e5ac21dbd024ec902de51566b0\"></a>ENDCAP_GREGORY_BASIS&#160;</td><td class=\"fielddoc\"><p>use Gregory patches (highest quality, recommended default) </p>\n </td></tr>\n <tr><td class=\"fieldname\"><a id=\"aebc767d646011ab7d5bc7d6d49adf535a0c0d3d9e480d64f20f1b32d599c88aa5\" name=\"aebc767d646011ab7d5bc7d6d49adf535a0c0d3d9e480d64f20f1b32d599c88aa5\"></a>ENDCAP_LEGACY_GREGORY&#160;</td><td class=\"fielddoc\"><p>legacy option for 2.x style Gregory patches (Catmark only) </p>\n </td></tr>\n </table>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00776_source.html#l00055\">55</a> of file <a class=\"el\" href=\"a00776_source.html\">patchTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00854_source.html#l00055\">55</a> of file <a class=\"el\" href=\"a00854_source.html\">patchTableFactory.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"afe7ba5a3a3e0f7b63f27fc527f472528\" name=\"afe7ba5a3a3e0f7b63f27fc527f472528\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afe7ba5a3a3e0f7b63f27fc527f472528\">&#9670;&#160;</a></span>Options()</h2>\n \n@@ -266,15 +266,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00776_source.html#l00063\">63</a> of file <a class=\"el\" href=\"a00776_source.html\">patchTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00854_source.html#l00063\">63</a> of file <a class=\"el\" href=\"a00854_source.html\">patchTableFactory.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Member Function Documentation</h2>\n <a id=\"a1f59869b65e626aebb332538b92759ec\" name=\"a1f59869b65e626aebb332538b92759ec\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1f59869b65e626aebb332538b92759ec\">&#9670;&#160;</a></span>GetEndCapType()</h2>\n \n@@ -296,15 +296,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Get endcap basis type. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00776_source.html#l00085\">85</a> of file <a class=\"el\" href=\"a00776_source.html\">patchTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00854_source.html#l00085\">85</a> of file <a class=\"el\" href=\"a00854_source.html\">patchTableFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a14138864bf072e99898a8d1a0c074468\" name=\"a14138864bf072e99898a8d1a0c074468\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a14138864bf072e99898a8d1a0c074468\">&#9670;&#160;</a></span>GetRefineAdaptiveOptions()</h2>\n \n <div class=\"memitem\">\n@@ -325,15 +325,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Determine adaptive refinement options to match assigned patch options. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00776_source.html#l00100\">100</a> of file <a class=\"el\" href=\"a00776_source.html\">patchTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00854_source.html#l00100\">100</a> of file <a class=\"el\" href=\"a00854_source.html\">patchTableFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a6a9e4615ca58b7206de550f249c5e37c\" name=\"a6a9e4615ca58b7206de550f249c5e37c\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6a9e4615ca58b7206de550f249c5e37c\">&#9670;&#160;</a></span>SetEndCapType()</h2>\n \n <div class=\"memitem\">\n@@ -355,15 +355,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Set endcap basis type. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00776_source.html#l00088\">88</a> of file <a class=\"el\" href=\"a00776_source.html\">patchTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00854_source.html#l00088\">88</a> of file <a class=\"el\" href=\"a00854_source.html\">patchTableFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aa6530a2eb5204da33e7c02f8fcdcbac2\" name=\"aa6530a2eb5204da33e7c02f8fcdcbac2\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa6530a2eb5204da33e7c02f8fcdcbac2\">&#9670;&#160;</a></span>SetFVarPatchPrecision() <span class=\"overload\">[1/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -403,15 +403,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00776_source.html#l00215\">215</a> of file <a class=\"el\" href=\"a00776_source.html\">patchTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00854_source.html#l00215\">215</a> of file <a class=\"el\" href=\"a00854_source.html\">patchTableFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a425e9cd3218a02afffaf0289f1a9c6fd\" name=\"a425e9cd3218a02afffaf0289f1a9c6fd\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a425e9cd3218a02afffaf0289f1a9c6fd\">&#9670;&#160;</a></span>SetMaxIsolationLevel()</h2>\n \n <div class=\"memitem\">\n@@ -433,15 +433,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Set maximum isolation level. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00776_source.html#l00091\">91</a> of file <a class=\"el\" href=\"a00776_source.html\">patchTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00854_source.html#l00091\">91</a> of file <a class=\"el\" href=\"a00854_source.html\">patchTableFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a2d5bc9d7d16144b5cdc70381843defa9\" name=\"a2d5bc9d7d16144b5cdc70381843defa9\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2d5bc9d7d16144b5cdc70381843defa9\">&#9670;&#160;</a></span>SetPatchPrecision() <span class=\"overload\">[1/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -481,15 +481,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00776_source.html#l00212\">212</a> of file <a class=\"el\" href=\"a00776_source.html\">patchTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00854_source.html#l00212\">212</a> of file <a class=\"el\" href=\"a00854_source.html\">patchTableFactory.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Member Data Documentation</h2>\n <a id=\"a497f7c6fe6944842dd54758e9ec5a8e2\" name=\"a497f7c6fe6944842dd54758e9ec5a8e2\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a497f7c6fe6944842dd54758e9ec5a8e2\">&#9670;&#160;</a></span>endCapType</h2>\n \n@@ -500,15 +500,15 @@\n           <td class=\"memname\">unsigned int endCapType</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n <p>EndCapType. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00776_source.html#l00120\">120</a> of file <a class=\"el\" href=\"a00776_source.html\">patchTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00854_source.html#l00120\">120</a> of file <a class=\"el\" href=\"a00854_source.html\">patchTableFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a4c1ba8119a16ea0682a870ee7a8282a5\" name=\"a4c1ba8119a16ea0682a870ee7a8282a5\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4c1ba8119a16ea0682a870ee7a8282a5\">&#9670;&#160;</a></span>fvarChannelIndices</h2>\n \n <div class=\"memitem\">\n@@ -518,15 +518,15 @@\n           <td class=\"memname\">int const* fvarChannelIndices</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n <p>List containing the indices of the channels selected for the factory. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00776_source.html#l00140\">140</a> of file <a class=\"el\" href=\"a00776_source.html\">patchTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00854_source.html#l00140\">140</a> of file <a class=\"el\" href=\"a00854_source.html\">patchTableFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a3f663e5c2b7e65976b6521c21ea59130\" name=\"a3f663e5c2b7e65976b6521c21ea59130\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3f663e5c2b7e65976b6521c21ea59130\">&#9670;&#160;</a></span>fvarPatchPrecisionDouble</h2>\n \n <div class=\"memitem\">\n@@ -536,15 +536,15 @@\n           <td class=\"memname\">unsigned int fvarPatchPrecisionDouble</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n <p>Generate double-precision stencils for face-varying patches. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00776_source.html#l00133\">133</a> of file <a class=\"el\" href=\"a00776_source.html\">patchTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00854_source.html#l00133\">133</a> of file <a class=\"el\" href=\"a00854_source.html\">patchTableFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a8d3c24dcc455474a3a9498c6b6378cc4\" name=\"a8d3c24dcc455474a3a9498c6b6378cc4\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8d3c24dcc455474a3a9498c6b6378cc4\">&#9670;&#160;</a></span>generateAllLevels</h2>\n \n <div class=\"memitem\">\n@@ -554,15 +554,15 @@\n           <td class=\"memname\">unsigned int generateAllLevels</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n <p>Generate levels from 'firstLevel' to 'maxLevel' (Uniform mode only) </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00776_source.html#l00110\">110</a> of file <a class=\"el\" href=\"a00776_source.html\">patchTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00854_source.html#l00110\">110</a> of file <a class=\"el\" href=\"a00854_source.html\">patchTableFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a2a03b250662eec5d267daf6692e4b341\" name=\"a2a03b250662eec5d267daf6692e4b341\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2a03b250662eec5d267daf6692e4b341\">&#9670;&#160;</a></span>generateFVarLegacyLinearPatches</h2>\n \n <div class=\"memitem\">\n@@ -572,15 +572,15 @@\n           <td class=\"memname\">unsigned int generateFVarLegacyLinearPatches</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n <p>Generate all linear face-varying patches (legacy) </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00776_source.html#l00136\">136</a> of file <a class=\"el\" href=\"a00776_source.html\">patchTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00854_source.html#l00136\">136</a> of file <a class=\"el\" href=\"a00854_source.html\">patchTableFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a97f60d840c3d2830f0c4680783a334e8\" name=\"a97f60d840c3d2830f0c4680783a334e8\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a97f60d840c3d2830f0c4680783a334e8\">&#9670;&#160;</a></span>generateFVarTables</h2>\n \n <div class=\"memitem\">\n@@ -590,15 +590,15 @@\n           <td class=\"memname\">unsigned int generateFVarTables</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n <p>Generate face-varying patch tables. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00776_source.html#l00129\">129</a> of file <a class=\"el\" href=\"a00776_source.html\">patchTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00854_source.html#l00129\">129</a> of file <a class=\"el\" href=\"a00854_source.html\">patchTableFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a0fe3eeef4b5b332c7747a940db43cd8d\" name=\"a0fe3eeef4b5b332c7747a940db43cd8d\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0fe3eeef4b5b332c7747a940db43cd8d\">&#9670;&#160;</a></span>generateLegacySharpCornerPatches</h2>\n \n <div class=\"memitem\">\n@@ -608,15 +608,15 @@\n           <td class=\"memname\">unsigned int generateLegacySharpCornerPatches</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n <p>Generate sharp regular patches at smooth corners (legacy) </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00776_source.html#l00137\">137</a> of file <a class=\"el\" href=\"a00776_source.html\">patchTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00854_source.html#l00137\">137</a> of file <a class=\"el\" href=\"a00854_source.html\">patchTableFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a728df1785179cd0768a4971b8c34708a\" name=\"a728df1785179cd0768a4971b8c34708a\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a728df1785179cd0768a4971b8c34708a\">&#9670;&#160;</a></span>generateVaryingLocalPoints</h2>\n \n <div class=\"memitem\">\n@@ -626,15 +626,15 @@\n           <td class=\"memname\">unsigned int generateVaryingLocalPoints</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n <p>Generate local points with varying patches. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00776_source.html#l00126\">126</a> of file <a class=\"el\" href=\"a00776_source.html\">patchTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00854_source.html#l00126\">126</a> of file <a class=\"el\" href=\"a00854_source.html\">patchTableFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a039b27c797bb2b4be4af66798787081e\" name=\"a039b27c797bb2b4be4af66798787081e\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a039b27c797bb2b4be4af66798787081e\">&#9670;&#160;</a></span>generateVaryingTables</h2>\n \n <div class=\"memitem\">\n@@ -644,15 +644,15 @@\n           <td class=\"memname\">unsigned int generateVaryingTables</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n <p>Generate varying patch tables. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00776_source.html#l00125\">125</a> of file <a class=\"el\" href=\"a00776_source.html\">patchTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00854_source.html#l00125\">125</a> of file <a class=\"el\" href=\"a00854_source.html\">patchTableFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a9e322b8f2ad57dd369956f27113b7a8a\" name=\"a9e322b8f2ad57dd369956f27113b7a8a\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9e322b8f2ad57dd369956f27113b7a8a\">&#9670;&#160;</a></span>includeBaseLevelIndices</h2>\n \n <div class=\"memitem\">\n@@ -662,15 +662,15 @@\n           <td class=\"memname\">unsigned int includeBaseLevelIndices</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n <p>Include base level in patch point indices (Uniform mode only) </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00776_source.html#l00111\">111</a> of file <a class=\"el\" href=\"a00776_source.html\">patchTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00854_source.html#l00111\">111</a> of file <a class=\"el\" href=\"a00854_source.html\">patchTableFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a7551f187d9f4a70b27faed7597d96e4f\" name=\"a7551f187d9f4a70b27faed7597d96e4f\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7551f187d9f4a70b27faed7597d96e4f\">&#9670;&#160;</a></span>includeFVarBaseLevelIndices</h2>\n \n <div class=\"memitem\">\n@@ -680,15 +680,15 @@\n           <td class=\"memname\">unsigned int includeFVarBaseLevelIndices</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n <p>Include base level in face-varying patch point indices (Uniform mode only) </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00776_source.html#l00112\">112</a> of file <a class=\"el\" href=\"a00776_source.html\">patchTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00854_source.html#l00112\">112</a> of file <a class=\"el\" href=\"a00854_source.html\">patchTableFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a18b47b281350d10784fd4917be9019f1\" name=\"a18b47b281350d10784fd4917be9019f1\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a18b47b281350d10784fd4917be9019f1\">&#9670;&#160;</a></span>maxIsolationLevel</h2>\n \n <div class=\"memitem\">\n@@ -698,15 +698,15 @@\n           <td class=\"memname\">unsigned int maxIsolationLevel</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n <p>Cap adaptive feature isolation to the given level (max. 10) </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00776_source.html#l00117\">117</a> of file <a class=\"el\" href=\"a00776_source.html\">patchTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00854_source.html#l00117\">117</a> of file <a class=\"el\" href=\"a00854_source.html\">patchTableFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ad17511fd9b0cea1b15b6bc31c0fc3e80\" name=\"ad17511fd9b0cea1b15b6bc31c0fc3e80\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad17511fd9b0cea1b15b6bc31c0fc3e80\">&#9670;&#160;</a></span>numFVarChannels</h2>\n \n <div class=\"memitem\">\n@@ -716,15 +716,15 @@\n           <td class=\"memname\">int numFVarChannels</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n <p>Number of channel indices and interpolation modes passed. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00776_source.html#l00139\">139</a> of file <a class=\"el\" href=\"a00776_source.html\">patchTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00854_source.html#l00139\">139</a> of file <a class=\"el\" href=\"a00854_source.html\">patchTableFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a91ce5fe0ce9b9ec6c5afcfb6e1ccaa40\" name=\"a91ce5fe0ce9b9ec6c5afcfb6e1ccaa40\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a91ce5fe0ce9b9ec6c5afcfb6e1ccaa40\">&#9670;&#160;</a></span>patchPrecisionDouble</h2>\n \n <div class=\"memitem\">\n@@ -734,15 +734,15 @@\n           <td class=\"memname\">unsigned int patchPrecisionDouble</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n <p>Generate double-precision stencils for vertex patches. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00776_source.html#l00132\">132</a> of file <a class=\"el\" href=\"a00776_source.html\">patchTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00854_source.html#l00132\">132</a> of file <a class=\"el\" href=\"a00854_source.html\">patchTableFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a113fa8ce12150940afe0215c702cc89d\" name=\"a113fa8ce12150940afe0215c702cc89d\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a113fa8ce12150940afe0215c702cc89d\">&#9670;&#160;</a></span>shareEndCapPatchPoints</h2>\n \n <div class=\"memitem\">\n@@ -751,15 +751,15 @@\n         <tr>\n           <td class=\"memname\">unsigned int shareEndCapPatchPoints</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n <p>Share endcap patch points among adjacent endcap patches. currently only work with GregoryBasis. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00776_source.html#l00121\">121</a> of file <a class=\"el\" href=\"a00776_source.html\">patchTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00854_source.html#l00121\">121</a> of file <a class=\"el\" href=\"a00854_source.html\">patchTableFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ae0427ab3b81525a0dfa5d2b510a06461\" name=\"ae0427ab3b81525a0dfa5d2b510a06461\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae0427ab3b81525a0dfa5d2b510a06461\">&#9670;&#160;</a></span>triangulateQuads</h2>\n \n <div class=\"memitem\">\n@@ -769,15 +769,15 @@\n           <td class=\"memname\">unsigned int triangulateQuads</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n <p>Triangulate 'QUADS' primitives (Uniform mode only) </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00776_source.html#l00113\">113</a> of file <a class=\"el\" href=\"a00776_source.html\">patchTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00854_source.html#l00113\">113</a> of file <a class=\"el\" href=\"a00854_source.html\">patchTableFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a5eba866952b7be15b065060b1f5a81da\" name=\"a5eba866952b7be15b065060b1f5a81da\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5eba866952b7be15b065060b1f5a81da\">&#9670;&#160;</a></span>useInfSharpPatch</h2>\n \n <div class=\"memitem\">\n@@ -787,15 +787,15 @@\n           <td class=\"memname\">unsigned int useInfSharpPatch</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n <p>Use infinitely-sharp patch. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00776_source.html#l00116\">116</a> of file <a class=\"el\" href=\"a00776_source.html\">patchTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00854_source.html#l00116\">116</a> of file <a class=\"el\" href=\"a00854_source.html\">patchTableFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a5834971432c649e28d5a0186f79a60d5\" name=\"a5834971432c649e28d5a0186f79a60d5\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5834971432c649e28d5a0186f79a60d5\">&#9670;&#160;</a></span>useSingleCreasePatch</h2>\n \n <div class=\"memitem\">\n@@ -805,20 +805,20 @@\n           <td class=\"memname\">unsigned int useSingleCreasePatch</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n <p>Use single crease patch. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00776_source.html#l00115\">115</a> of file <a class=\"el\" href=\"a00776_source.html\">patchTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00854_source.html#l00115\">115</a> of file <a class=\"el\" href=\"a00854_source.html\">patchTableFactory.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li>opensubdiv/far/<a class=\"el\" href=\"a00776_source.html\">patchTableFactory.h</a></li>\n+<li>opensubdiv/far/<a class=\"el\" href=\"a00854_source.html\">patchTableFactory.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00908.html\">Far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01017.html\">PatchTableFactory</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01021.html\">Options</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01025.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01025.html", "unified_diff": "@@ -98,15 +98,15 @@\n   <div class=\"headertitle\"><div class=\"title\">PatchTableFactory::PatchFaceTag Struct Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Obsolete internal struct not intended for public use &ndash; due to be deprecated.  \n  <a href=\"a01025.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00776_source.html\">patchTableFactory.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00854_source.html\">patchTableFactory.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\n Public Member Functions</h2></td></tr>\n <tr class=\"memitem:ac8bb3912a3ce86b15842e79d0b421204\" id=\"r_ac8bb3912a3ce86b15842e79d0b421204\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01025.html#ac8bb3912a3ce86b15842e79d0b421204\">clear</a> ()</td></tr>\n <tr class=\"separator:ac8bb3912a3ce86b15842e79d0b421204\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:ace61bb1240f406368b44e72e58728428\" id=\"r_ace61bb1240f406368b44e72e58728428\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01025.html#ace61bb1240f406368b44e72e58728428\">assignBoundaryPropertiesFromEdgeMask</a> (int boundaryEdgeMask)</td></tr>\n <tr class=\"separator:ace61bb1240f406368b44e72e58728428\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n@@ -133,15 +133,15 @@\n <tr class=\"separator:a395c4eda069d129a467d5266a4746673\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a03fbcf9e0aec39ba35fc19aefbb07e64\" id=\"r_a03fbcf9e0aec39ba35fc19aefbb07e64\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">unsigned int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01025.html#a03fbcf9e0aec39ba35fc19aefbb07e64\">_isSingleCrease</a>: 1</td></tr>\n <tr class=\"separator:a03fbcf9e0aec39ba35fc19aefbb07e64\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p>Obsolete internal struct not intended for public use &ndash; due to be deprecated. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00776_source.html#l00192\">192</a> of file <a class=\"el\" href=\"a00776_source.html\">patchTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00854_source.html#l00192\">192</a> of file <a class=\"el\" href=\"a00854_source.html\">patchTableFactory.h</a>.</p>\n </div><h2 class=\"groupheader\">Member Function Documentation</h2>\n <a id=\"ace61bb1240f406368b44e72e58728428\" name=\"ace61bb1240f406368b44e72e58728428\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ace61bb1240f406368b44e72e58728428\">&#9670;&#160;</a></span>assignBoundaryPropertiesFromEdgeMask()</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n       <table class=\"memname\">\n@@ -219,15 +219,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">unsigned int _boundaryCount</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00776_source.html#l00199\">199</a> of file <a class=\"el\" href=\"a00776_source.html\">patchTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00854_source.html#l00199\">199</a> of file <a class=\"el\" href=\"a00854_source.html\">patchTableFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a0e2fbbb4a1a96f3fbaee3c1273684e0e\" name=\"a0e2fbbb4a1a96f3fbaee3c1273684e0e\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0e2fbbb4a1a96f3fbaee3c1273684e0e\">&#9670;&#160;</a></span>_boundaryIndex</h2>\n \n <div class=\"memitem\">\n@@ -235,15 +235,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">unsigned int _boundaryIndex</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00776_source.html#l00198\">198</a> of file <a class=\"el\" href=\"a00776_source.html\">patchTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00854_source.html#l00198\">198</a> of file <a class=\"el\" href=\"a00854_source.html\">patchTableFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a4130a836c1d7653793698df818db0624\" name=\"a4130a836c1d7653793698df818db0624\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4130a836c1d7653793698df818db0624\">&#9670;&#160;</a></span>_boundaryMask</h2>\n \n <div class=\"memitem\">\n@@ -251,15 +251,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">unsigned int _boundaryMask</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00776_source.html#l00197\">197</a> of file <a class=\"el\" href=\"a00776_source.html\">patchTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00854_source.html#l00197\">197</a> of file <a class=\"el\" href=\"a00854_source.html\">patchTableFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a395c4eda069d129a467d5266a4746673\" name=\"a395c4eda069d129a467d5266a4746673\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a395c4eda069d129a467d5266a4746673\">&#9670;&#160;</a></span>_hasBoundaryEdge</h2>\n \n <div class=\"memitem\">\n@@ -267,15 +267,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">unsigned int _hasBoundaryEdge</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00776_source.html#l00200\">200</a> of file <a class=\"el\" href=\"a00776_source.html\">patchTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00854_source.html#l00200\">200</a> of file <a class=\"el\" href=\"a00854_source.html\">patchTableFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a85527f734ee41ab3855c42c0e1257f95\" name=\"a85527f734ee41ab3855c42c0e1257f95\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a85527f734ee41ab3855c42c0e1257f95\">&#9670;&#160;</a></span>_hasPatch</h2>\n \n <div class=\"memitem\">\n@@ -283,15 +283,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">unsigned int _hasPatch</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00776_source.html#l00194\">194</a> of file <a class=\"el\" href=\"a00776_source.html\">patchTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00854_source.html#l00194\">194</a> of file <a class=\"el\" href=\"a00854_source.html\">patchTableFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a0a3cc48a737c60aa048df1c3f41da070\" name=\"a0a3cc48a737c60aa048df1c3f41da070\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0a3cc48a737c60aa048df1c3f41da070\">&#9670;&#160;</a></span>_isRegular</h2>\n \n <div class=\"memitem\">\n@@ -299,15 +299,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">unsigned int _isRegular</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00776_source.html#l00195\">195</a> of file <a class=\"el\" href=\"a00776_source.html\">patchTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00854_source.html#l00195\">195</a> of file <a class=\"el\" href=\"a00854_source.html\">patchTableFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a03fbcf9e0aec39ba35fc19aefbb07e64\" name=\"a03fbcf9e0aec39ba35fc19aefbb07e64\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a03fbcf9e0aec39ba35fc19aefbb07e64\">&#9670;&#160;</a></span>_isSingleCrease</h2>\n \n <div class=\"memitem\">\n@@ -315,15 +315,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">unsigned int _isSingleCrease</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00776_source.html#l00201\">201</a> of file <a class=\"el\" href=\"a00776_source.html\">patchTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00854_source.html#l00201\">201</a> of file <a class=\"el\" href=\"a00854_source.html\">patchTableFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a29cbdb64d4e0e49551db4b7674a4c38a\" name=\"a29cbdb64d4e0e49551db4b7674a4c38a\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a29cbdb64d4e0e49551db4b7674a4c38a\">&#9670;&#160;</a></span>_transitionMask</h2>\n \n <div class=\"memitem\">\n@@ -331,20 +331,20 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">unsigned int _transitionMask</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00776_source.html#l00196\">196</a> of file <a class=\"el\" href=\"a00776_source.html\">patchTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00854_source.html#l00196\">196</a> of file <a class=\"el\" href=\"a00854_source.html\">patchTableFactory.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li>opensubdiv/far/<a class=\"el\" href=\"a00776_source.html\">patchTableFactory.h</a></li>\n+<li>opensubdiv/far/<a class=\"el\" href=\"a00854_source.html\">patchTableFactory.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00908.html\">Far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01017.html\">PatchTableFactory</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01025.html\">PatchFaceTag</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01029.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01029.html", "unified_diff": "@@ -98,15 +98,15 @@\n   <div class=\"headertitle\"><div class=\"title\">PrimvarRefinerReal&lt; REAL &gt; Class Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Applies refinement operations to generic primvar data.  \n  <a href=\"a01029.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00746_source.html\">primvarRefiner.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00851_source.html\">primvarRefiner.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\n Public Member Functions</h2></td></tr>\n <tr class=\"memitem:a1fe1fbda93c01c326f13929d1c3c6247\" id=\"r_a1fe1fbda93c01c326f13929d1c3c6247\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01029.html#a1fe1fbda93c01c326f13929d1c3c6247\">PrimvarRefinerReal</a> (<a class=\"el\" href=\"a01121.html\">TopologyRefiner</a> const &amp;refiner)</td></tr>\n <tr class=\"separator:a1fe1fbda93c01c326f13929d1c3c6247\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:ade7a1750cdc922e27c561520815d8b27\" id=\"r_ade7a1750cdc922e27c561520815d8b27\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01029.html#ade7a1750cdc922e27c561520815d8b27\">~PrimvarRefinerReal</a> ()</td></tr>\n <tr class=\"separator:ade7a1750cdc922e27c561520815d8b27\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n@@ -159,15 +159,15 @@\n <tr class=\"memitem:afdee0e9e9c6edd34c96892efff808a87\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01029.html#afdee0e9e9c6edd34c96892efff808a87\">LimitFaceVarying</a> (T const &amp;src, U &amp;dst, int channel=0) const</td></tr>\n <tr class=\"separator:afdee0e9e9c6edd34c96892efff808a87\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><div class=\"compoundTemplParams\">template&lt;typename REAL&gt;<br />\n class OpenSubdiv::OPENSUBDIV_VERSION::Far::PrimvarRefinerReal&lt; REAL &gt;</div><p>Applies refinement operations to generic primvar data. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00746_source.html#l00056\">56</a> of file <a class=\"el\" href=\"a00746_source.html\">primvarRefiner.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00851_source.html#l00056\">56</a> of file <a class=\"el\" href=\"a00851_source.html\">primvarRefiner.h</a>.</p>\n </div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"a1fe1fbda93c01c326f13929d1c3c6247\" name=\"a1fe1fbda93c01c326f13929d1c3c6247\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1fe1fbda93c01c326f13929d1c3c6247\">&#9670;&#160;</a></span>PrimvarRefinerReal()</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n <div class=\"memtemplate\">\n@@ -187,15 +187,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00746_source.html#l00059\">59</a> of file <a class=\"el\" href=\"a00746_source.html\">primvarRefiner.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00851_source.html#l00059\">59</a> of file <a class=\"el\" href=\"a00851_source.html\">primvarRefiner.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ade7a1750cdc922e27c561520815d8b27\" name=\"ade7a1750cdc922e27c561520815d8b27\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ade7a1750cdc922e27c561520815d8b27\">&#9670;&#160;</a></span>~PrimvarRefinerReal()</h2>\n \n <div class=\"memitem\">\n@@ -216,15 +216,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00746_source.html#l00060\">60</a> of file <a class=\"el\" href=\"a00746_source.html\">primvarRefiner.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00851_source.html#l00060\">60</a> of file <a class=\"el\" href=\"a00851_source.html\">primvarRefiner.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Member Function Documentation</h2>\n <a id=\"a6f7fc8b9ce66fa57ac58ed977cc9c6f0\" name=\"a6f7fc8b9ce66fa57ac58ed977cc9c6f0\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6f7fc8b9ce66fa57ac58ed977cc9c6f0\">&#9670;&#160;</a></span>GetTopologyRefiner()</h2>\n \n@@ -246,15 +246,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00746_source.html#l00062\">62</a> of file <a class=\"el\" href=\"a00746_source.html\">primvarRefiner.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00851_source.html#l00062\">62</a> of file <a class=\"el\" href=\"a00851_source.html\">primvarRefiner.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ab97b75b7c0fffa06a5948bd6ba7b420d\" name=\"ab97b75b7c0fffa06a5948bd6ba7b420d\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab97b75b7c0fffa06a5948bd6ba7b420d\">&#9670;&#160;</a></span>Interpolate()</h2>\n \n <div class=\"memitem\">\n@@ -305,15 +305,15 @@\n     <tr><td class=\"paramname\">level</td><td>The refinement level</td></tr>\n     <tr><td class=\"paramname\">src</td><td>Source primvar buffer (<a class=\"el\" href=\"a01029.html#templating\">templating</a> control vertex data)</td></tr>\n     <tr><td class=\"paramname\">dst</td><td>Destination primvar buffer (<a class=\"el\" href=\"a01029.html#templating\">templating</a> refined vertex data) </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00746_source.html#l00267\">267</a> of file <a class=\"el\" href=\"a00746_source.html\">primvarRefiner.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00851_source.html#l00267\">267</a> of file <a class=\"el\" href=\"a00851_source.html\">primvarRefiner.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a3f8bd2ef902e11aad1debbdda26bb596\" name=\"a3f8bd2ef902e11aad1debbdda26bb596\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3f8bd2ef902e11aad1debbdda26bb596\">&#9670;&#160;</a></span>InterpolateFaceUniform()</h2>\n \n <div class=\"memitem\">\n@@ -365,15 +365,15 @@\n     <tr><td class=\"paramname\">level</td><td>The refinement level</td></tr>\n     <tr><td class=\"paramname\">src</td><td>Source primvar buffer</td></tr>\n     <tr><td class=\"paramname\">dst</td><td>Destination primvar buffer </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00746_source.html#l00394\">394</a> of file <a class=\"el\" href=\"a00746_source.html\">primvarRefiner.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00851_source.html#l00394\">394</a> of file <a class=\"el\" href=\"a00851_source.html\">primvarRefiner.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ad8f74e1887299ed02e0094100f18c998\" name=\"ad8f74e1887299ed02e0094100f18c998\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad8f74e1887299ed02e0094100f18c998\">&#9670;&#160;</a></span>InterpolateFaceVarying()</h2>\n \n <div class=\"memitem\">\n@@ -423,15 +423,15 @@\n </table>\n </div><div class=\"memdoc\">\n \n <p>Apply face-varying interpolation weights to a primvar buffer associated with a particular face-varying channel. </p>\n <p>Unlike vertex and varying primvar buffers, there is not a 1-to-1 correspondence between vertices and face-varying values &ndash; typically there are more face-varying values than vertices. Each face-varying channel is also independent in how its values relate to the vertices.</p>\n <p>The destination buffer must allocate an array of data for all the refined values, i.e. at least refiner.GetLevel(level).GetNumFVarValues(channel). </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00746_source.html#l00293\">293</a> of file <a class=\"el\" href=\"a00746_source.html\">primvarRefiner.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00851_source.html#l00293\">293</a> of file <a class=\"el\" href=\"a00851_source.html\">primvarRefiner.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aa2fd72e336a12bf454dd79ba6ce8ee56\" name=\"aa2fd72e336a12bf454dd79ba6ce8ee56\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa2fd72e336a12bf454dd79ba6ce8ee56\">&#9670;&#160;</a></span>InterpolateVarying()</h2>\n \n <div class=\"memitem\">\n@@ -483,15 +483,15 @@\n     <tr><td class=\"paramname\">level</td><td>The refinement level</td></tr>\n     <tr><td class=\"paramname\">src</td><td>Source primvar buffer (<a class=\"el\" href=\"a01029.html#templating\">templating</a> control vertex data)</td></tr>\n     <tr><td class=\"paramname\">dst</td><td>Destination primvar buffer (<a class=\"el\" href=\"a01029.html#templating\">templating</a> refined vertex data) </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00746_source.html#l00412\">412</a> of file <a class=\"el\" href=\"a00746_source.html\">primvarRefiner.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00851_source.html#l00412\">412</a> of file <a class=\"el\" href=\"a00851_source.html\">primvarRefiner.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a0357839a7fabaa02f1d6d6a3c75e1ec2\" name=\"a0357839a7fabaa02f1d6d6a3c75e1ec2\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0357839a7fabaa02f1d6d6a3c75e1ec2\">&#9670;&#160;</a></span>Limit() <span class=\"overload\">[1/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -535,15 +535,15 @@\n   <table class=\"params\">\n     <tr><td class=\"paramname\">src</td><td>Source primvar buffer (refined data) for last level</td></tr>\n     <tr><td class=\"paramname\">dstPos</td><td>Destination primvar buffer (data at the limit) </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00746_source.html#l00319\">319</a> of file <a class=\"el\" href=\"a00746_source.html\">primvarRefiner.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00851_source.html#l00319\">319</a> of file <a class=\"el\" href=\"a00851_source.html\">primvarRefiner.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a2cf4c50a1117c44ba4d11db92b067401\" name=\"a2cf4c50a1117c44ba4d11db92b067401\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2cf4c50a1117c44ba4d11db92b067401\">&#9670;&#160;</a></span>Limit() <span class=\"overload\">[2/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -589,15 +589,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00746_source.html#l00344\">344</a> of file <a class=\"el\" href=\"a00746_source.html\">primvarRefiner.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00851_source.html#l00344\">344</a> of file <a class=\"el\" href=\"a00851_source.html\">primvarRefiner.h</a>.</p>\n \n </div>\n </div>\n <a id=\"afdee0e9e9c6edd34c96892efff808a87\" name=\"afdee0e9e9c6edd34c96892efff808a87\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afdee0e9e9c6edd34c96892efff808a87\">&#9670;&#160;</a></span>LimitFaceVarying()</h2>\n \n <div class=\"memitem\">\n@@ -637,20 +637,20 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00746_source.html#l00369\">369</a> of file <a class=\"el\" href=\"a00746_source.html\">primvarRefiner.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00851_source.html#l00369\">369</a> of file <a class=\"el\" href=\"a00851_source.html\">primvarRefiner.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/far/<a class=\"el\" href=\"a00746_source.html\">primvarRefiner.h</a></li>\n+<li>opensubdiv/far/<a class=\"el\" href=\"a00851_source.html\">primvarRefiner.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00908.html\">Far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01029.html\">PrimvarRefinerReal</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01037.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01037.html", "unified_diff": "@@ -94,15 +94,15 @@\n   <div class=\"summary\">\n <a href=\"#pub-methods\">Public Member Functions</a> &#124;\n <a href=\"a01034.html\">List of all members</a>  </div>\n   <div class=\"headertitle\"><div class=\"title\">PrimvarRefiner Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00746_source.html\">primvarRefiner.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00851_source.html\">primvarRefiner.h</a>&gt;</code></p>\n <div class=\"dynheader\">\n Inheritance diagram for PrimvarRefiner:</div>\n <div class=\"dyncontent\">\n  <div class=\"center\">\n   <img src=\"a01037.png\" usemap=\"#PrimvarRefiner_map\" alt=\"\"/>\n   <map id=\"PrimvarRefiner_map\" name=\"PrimvarRefiner_map\">\n <area href=\"a01029.html\" alt=\"PrimvarRefinerReal&lt; float &gt;\" shape=\"rect\" coords=\"0,0,170,24\"/>\n@@ -138,15 +138,15 @@\n <tr class=\"memitem:a2cf4c50a1117c44ba4d11db92b067401 inherit pub_methods_a01029\" id=\"r_a2cf4c50a1117c44ba4d11db92b067401\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01029.html#a2cf4c50a1117c44ba4d11db92b067401\">Limit</a> (T const &amp;src, U &amp;dstPos, U1 &amp;dstTan1, U2 &amp;dstTan2) const</td></tr>\n <tr class=\"separator:a2cf4c50a1117c44ba4d11db92b067401 inherit pub_methods_a01029\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:afdee0e9e9c6edd34c96892efff808a87 inherit pub_methods_a01029\" id=\"r_afdee0e9e9c6edd34c96892efff808a87\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01029.html#afdee0e9e9c6edd34c96892efff808a87\">LimitFaceVarying</a> (T const &amp;src, U &amp;dst, int channel=0) const</td></tr>\n <tr class=\"separator:afdee0e9e9c6edd34c96892efff808a87 inherit pub_methods_a01029\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\">\n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00746_source.html#l01265\">1265</a> of file <a class=\"el\" href=\"a00746_source.html\">primvarRefiner.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00851_source.html#l01265\">1265</a> of file <a class=\"el\" href=\"a00851_source.html\">primvarRefiner.h</a>.</p>\n </div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"a643d81a2ae20ba1897433f5af5a3697a\" name=\"a643d81a2ae20ba1897433f5af5a3697a\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a643d81a2ae20ba1897433f5af5a3697a\">&#9670;&#160;</a></span>PrimvarRefiner()</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n <table class=\"mlabels\">\n@@ -164,20 +164,20 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00746_source.html#l01267\">1267</a> of file <a class=\"el\" href=\"a00746_source.html\">primvarRefiner.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00851_source.html#l01267\">1267</a> of file <a class=\"el\" href=\"a00851_source.html\">primvarRefiner.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/far/<a class=\"el\" href=\"a00746_source.html\">primvarRefiner.h</a></li>\n+<li>opensubdiv/far/<a class=\"el\" href=\"a00851_source.html\">primvarRefiner.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00908.html\">Far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01037.html\">PrimvarRefiner</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01041.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01041.html", "unified_diff": "@@ -97,15 +97,15 @@\n   <div class=\"headertitle\"><div class=\"title\">PtexIndices Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Object used to compute and query ptex face indices.  \n  <a href=\"a01041.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00770_source.html\">ptexIndices.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00848_source.html\">ptexIndices.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\n Public Member Functions</h2></td></tr>\n <tr class=\"memitem:a7b5dd5f4c76d684d924adf477eeea0a3\" id=\"r_a7b5dd5f4c76d684d924adf477eeea0a3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01041.html#a7b5dd5f4c76d684d924adf477eeea0a3\">PtexIndices</a> (<a class=\"el\" href=\"a01121.html\">TopologyRefiner</a> const &amp;refiner)</td></tr>\n <tr class=\"memdesc:a7b5dd5f4c76d684d924adf477eeea0a3\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Constructor.  <br /></td></tr>\n <tr class=\"separator:a7b5dd5f4c76d684d924adf477eeea0a3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:af22a241c3be4bc69a948371d108e7cfa\" id=\"r_af22a241c3be4bc69a948371d108e7cfa\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01041.html#af22a241c3be4bc69a948371d108e7cfa\">~PtexIndices</a> ()</td></tr>\n@@ -121,15 +121,15 @@\n <tr class=\"memdesc:a8a146d5966d7372bdd2557e990e52adc\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns ptex face adjacency information for a given coarse face.  <br /></td></tr>\n <tr class=\"separator:a8a146d5966d7372bdd2557e990e52adc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p>Object used to compute and query ptex face indices. </p>\n <p>Given a refiner, constructing a <a class=\"el\" href=\"a01041.html\" title=\"Object used to compute and query ptex face indices.\">PtexIndices</a> object builds the mapping from coarse faces to ptex ids. Once built, the object can be used to query the mapping. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00770_source.html#l00046\">46</a> of file <a class=\"el\" href=\"a00770_source.html\">ptexIndices.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00848_source.html#l00046\">46</a> of file <a class=\"el\" href=\"a00848_source.html\">ptexIndices.h</a>.</p>\n </div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"a7b5dd5f4c76d684d924adf477eeea0a3\" name=\"a7b5dd5f4c76d684d924adf477eeea0a3\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7b5dd5f4c76d684d924adf477eeea0a3\">&#9670;&#160;</a></span>PtexIndices()</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n       <table class=\"memname\">\n@@ -262,15 +262,15 @@\n \n <p>Returns the number of ptex faces in the mesh. </p>\n <p>Ptex </p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/far/<a class=\"el\" href=\"a00770_source.html\">ptexIndices.h</a></li>\n+<li>opensubdiv/far/<a class=\"el\" href=\"a00848_source.html\">ptexIndices.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00908.html\">Far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01041.html\">PtexIndices</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01045.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01045.html", "unified_diff": "@@ -99,15 +99,15 @@\n   <div class=\"headertitle\"><div class=\"title\">StencilTableFactoryReal&lt; REAL &gt; Class Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>A specialized factory for <a class=\"el\" href=\"a01065.html\" title=\"Stencil table class wrapping the template for compatibility.\">StencilTable</a>.  \n  <a href=\"a01045.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00752_source.html\">stencilTableFactory.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00824_source.html\">stencilTableFactory.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n <tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01085.html\">Options</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\n@@ -140,15 +140,15 @@\n <tr class=\"memdesc:a33b8f611576b3e0907832e571e4844f5\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Utility function for stencil splicing for local point face-varying stencils.  <br /></td></tr>\n <tr class=\"separator:a33b8f611576b3e0907832e571e4844f5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><div class=\"compoundTemplParams\">template&lt;typename REAL&gt;<br />\n class OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactoryReal&lt; REAL &gt;</div><p>A specialized factory for <a class=\"el\" href=\"a01065.html\" title=\"Stencil table class wrapping the template for compatibility.\">StencilTable</a>. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00051\">51</a> of file <a class=\"el\" href=\"a00752_source.html\">stencilTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00824_source.html#l00051\">51</a> of file <a class=\"el\" href=\"a00824_source.html\">stencilTableFactory.h</a>.</p>\n </div><h2 class=\"groupheader\">Member Enumeration Documentation</h2>\n <a id=\"a46c8a310cf4c094f8c80e1cb8dc1f911\" name=\"a46c8a310cf4c094f8c80e1cb8dc1f911\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a46c8a310cf4c094f8c80e1cb8dc1f911\">&#9670;&#160;</a></span>Mode</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n <div class=\"memtemplate\">\n@@ -164,15 +164,15 @@\n </td></tr>\n <tr><td class=\"fieldname\"><a id=\"a46c8a310cf4c094f8c80e1cb8dc1f911ab18c20abfc04611ab0aec5e1c81bb2ab\" name=\"a46c8a310cf4c094f8c80e1cb8dc1f911ab18c20abfc04611ab0aec5e1c81bb2ab\"></a>INTERPOLATE_VARYING&#160;</td><td class=\"fielddoc\"><p>varying primvar stencils </p>\n </td></tr>\n <tr><td class=\"fieldname\"><a id=\"a46c8a310cf4c094f8c80e1cb8dc1f911a4178369e390d2596ce60676642fec077\" name=\"a46c8a310cf4c094f8c80e1cb8dc1f911a4178369e390d2596ce60676642fec077\"></a>INTERPOLATE_FACE_VARYING&#160;</td><td class=\"fielddoc\"><p>face-varying primvar stencils </p>\n </td></tr>\n </table>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00055\">55</a> of file <a class=\"el\" href=\"a00752_source.html\">stencilTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00824_source.html#l00055\">55</a> of file <a class=\"el\" href=\"a00824_source.html\">stencilTableFactory.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Member Function Documentation</h2>\n <a id=\"ac3115cc051309860811962d0b1fa9413\" name=\"ac3115cc051309860811962d0b1fa9413\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac3115cc051309860811962d0b1fa9413\">&#9670;&#160;</a></span>AppendLocalPointStencilTable()</h2>\n \n@@ -357,15 +357,15 @@\n     <tr><td class=\"paramname\">baseStencilTable</td><td>Input <a class=\"el\" href=\"a01065.html\" title=\"Stencil table class wrapping the template for compatibility.\">StencilTable</a> for refined vertices</td></tr>\n     <tr><td class=\"paramname\">localPointStencilTable</td><td><a class=\"el\" href=\"a01065.html\" title=\"Stencil table class wrapping the template for compatibility.\">StencilTable</a> for the change of basis patch points.</td></tr>\n     <tr><td class=\"paramname\">factorize</td><td>If factorize is set to true, endcap stencils will be factorized with supporting vertices from baseStencil table so that the endcap points can be computed directly from control vertices. </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00148\">148</a> of file <a class=\"el\" href=\"a00752_source.html\">stencilTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00824_source.html#l00148\">148</a> of file <a class=\"el\" href=\"a00824_source.html\">stencilTableFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aecc6558dfbb8b7bb2c2a89150cb8340a\" name=\"aecc6558dfbb8b7bb2c2a89150cb8340a\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aecc6558dfbb8b7bb2c2a89150cb8340a\">&#9670;&#160;</a></span>Create() <span class=\"overload\">[1/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -458,16 +458,16 @@\n   </table>\n   </dd>\n </dl>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following files:<ul>\n-<li>opensubdiv/far/<a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a></li>\n-<li>opensubdiv/far/<a class=\"el\" href=\"a00752_source.html\">stencilTableFactory.h</a></li>\n+<li>opensubdiv/far/<a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a></li>\n+<li>opensubdiv/far/<a class=\"el\" href=\"a00824_source.html\">stencilTableFactory.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00908.html\">Far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01045.html\">StencilTableFactoryReal</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01049.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01049.html", "unified_diff": "@@ -99,15 +99,15 @@\n   <div class=\"headertitle\"><div class=\"title\">LimitStencilTableFactoryReal&lt; REAL &gt; Class Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>A specialized factory for <a class=\"el\" href=\"a01081.html\" title=\"Limit stencil table class wrapping the template for compatibility.\">LimitStencilTable</a>.  \n  <a href=\"a01049.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00752_source.html\">stencilTableFactory.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00824_source.html\">stencilTableFactory.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n <tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01093.html\">LocationArray</a></td></tr>\n <tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Descriptor for limit surface locations.  <a href=\"a01093.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01089.html\">Options</a></td></tr>\n@@ -135,15 +135,15 @@\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><div class=\"compoundTemplParams\">template&lt;typename REAL&gt;<br />\n class OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableFactoryReal&lt; REAL &gt;</div><p>A specialized factory for <a class=\"el\" href=\"a01081.html\" title=\"Limit stencil table class wrapping the template for compatibility.\">LimitStencilTable</a>. </p>\n <p>The <a class=\"el\" href=\"a01101.html\" title=\"Stencil table factory class wrapping the template for compatibility.\">LimitStencilTableFactory</a> creates a table of limit stencils. Limit stencils can interpolate any arbitrary location on the limit surface. The stencils will be bilinear if the surface is refined uniformly, and bicubic if feature adaptive isolation is used instead.</p>\n <p>Surface locations are expressed as a combination of ptex face index and normalized (s,t) patch coordinates. The factory exposes the <a class=\"el\" href=\"a01093.html\" title=\"Descriptor for limit surface locations.\">LocationArray</a> struct as a container for these location descriptors. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00209\">209</a> of file <a class=\"el\" href=\"a00752_source.html\">stencilTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00824_source.html#l00209\">209</a> of file <a class=\"el\" href=\"a00824_source.html\">stencilTableFactory.h</a>.</p>\n </div><h2 class=\"groupheader\">Member Typedef Documentation</h2>\n <a id=\"a940880e2d35dea72f52db5bcdc9c94b7\" name=\"a940880e2d35dea72f52db5bcdc9c94b7\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a940880e2d35dea72f52db5bcdc9c94b7\">&#9670;&#160;</a></span>LocationArrayVec</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n <div class=\"memtemplate\">\n@@ -151,15 +151,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">typedef std::vector&lt;<a class=\"el\" href=\"a01093.html\">LocationArray</a>&gt; <a class=\"el\" href=\"a01049.html#a940880e2d35dea72f52db5bcdc9c94b7\">LocationArrayVec</a></td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00244\">244</a> of file <a class=\"el\" href=\"a00752_source.html\">stencilTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00824_source.html#l00244\">244</a> of file <a class=\"el\" href=\"a00824_source.html\">stencilTableFactory.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Member Enumeration Documentation</h2>\n <a id=\"a46c8a310cf4c094f8c80e1cb8dc1f911\" name=\"a46c8a310cf4c094f8c80e1cb8dc1f911\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a46c8a310cf4c094f8c80e1cb8dc1f911\">&#9670;&#160;</a></span>Mode</h2>\n \n@@ -178,15 +178,15 @@\n </td></tr>\n <tr><td class=\"fieldname\"><a id=\"a46c8a310cf4c094f8c80e1cb8dc1f911ab18c20abfc04611ab0aec5e1c81bb2ab\" name=\"a46c8a310cf4c094f8c80e1cb8dc1f911ab18c20abfc04611ab0aec5e1c81bb2ab\"></a>INTERPOLATE_VARYING&#160;</td><td class=\"fielddoc\"><p>varying primvar stencils </p>\n </td></tr>\n <tr><td class=\"fieldname\"><a id=\"a46c8a310cf4c094f8c80e1cb8dc1f911a4178369e390d2596ce60676642fec077\" name=\"a46c8a310cf4c094f8c80e1cb8dc1f911a4178369e390d2596ce60676642fec077\"></a>INTERPOLATE_FACE_VARYING&#160;</td><td class=\"fielddoc\"><p>face-varying primvar stencils </p>\n </td></tr>\n </table>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00213\">213</a> of file <a class=\"el\" href=\"a00752_source.html\">stencilTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00824_source.html#l00213\">213</a> of file <a class=\"el\" href=\"a00824_source.html\">stencilTableFactory.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Member Function Documentation</h2>\n <a id=\"aeed4f0b7aa0a6a1d8f3673e01c062d48\" name=\"aeed4f0b7aa0a6a1d8f3673e01c062d48\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aeed4f0b7aa0a6a1d8f3673e01c062d48\">&#9670;&#160;</a></span>Create()</h2>\n \n@@ -252,16 +252,16 @@\n   </table>\n   </dd>\n </dl>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following files:<ul>\n-<li>opensubdiv/far/<a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a></li>\n-<li>opensubdiv/far/<a class=\"el\" href=\"a00752_source.html\">stencilTableFactory.h</a></li>\n+<li>opensubdiv/far/<a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a></li>\n+<li>opensubdiv/far/<a class=\"el\" href=\"a00824_source.html\">stencilTableFactory.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00908.html\">Far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01049.html\">LimitStencilTableFactoryReal</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01053.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01053.html", "unified_diff": "@@ -99,15 +99,15 @@\n   <div class=\"headertitle\"><div class=\"title\">StencilReal&lt; REAL &gt; Class Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Vertex stencil descriptor.  \n  <a href=\"a01053.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>&gt;</code></p>\n <div class=\"dynheader\">\n Inheritance diagram for StencilReal&lt; REAL &gt;:</div>\n <div class=\"dyncontent\">\n  <div class=\"center\">\n   <img src=\"a01053.png\" usemap=\"#StencilReal_3C_20REAL_20_3E_map\" alt=\"\"/>\n   <map id=\"StencilReal_3C_20REAL_20_3E_map\" name=\"StencilReal_3C_20REAL_20_3E_map\">\n <area href=\"a01069.html\" alt=\"LimitStencilReal&lt; float &gt;\" shape=\"rect\" coords=\"0,56,156,80\"/>\n@@ -160,15 +160,15 @@\n <tr class=\"separator:a19f9c49c05d967ad8e51bc2a696caf4b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><div class=\"compoundTemplParams\">template&lt;typename REAL&gt;<br />\n class OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilReal&lt; REAL &gt;</div><p>Vertex stencil descriptor. </p>\n <p>Allows access and manipulation of a single stencil in a <a class=\"el\" href=\"a01065.html\" title=\"Stencil table class wrapping the template for compatibility.\">StencilTable</a>. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00053\">53</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00053\">53</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n </div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"a1bacc5a5c4ae6f44d4f06c1dd0adf8f4\" name=\"a1bacc5a5c4ae6f44d4f06c1dd0adf8f4\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1bacc5a5c4ae6f44d4f06c1dd0adf8f4\">&#9670;&#160;</a></span>StencilReal() <span class=\"overload\">[1/3]</span></h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n <div class=\"memtemplate\">\n@@ -189,15 +189,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Default constructor. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00057\">57</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00057\">57</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a52ca26745627f4704181d58dc919ae57\" name=\"a52ca26745627f4704181d58dc919ae57\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a52ca26745627f4704181d58dc919ae57\">&#9670;&#160;</a></span>StencilReal() <span class=\"overload\">[2/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -245,15 +245,15 @@\n     <tr><td class=\"paramname\">size</td><td>Table pointer to the size of the stencil</td></tr>\n     <tr><td class=\"paramname\">indices</td><td>Table pointer to the vertex indices of the stencil</td></tr>\n     <tr><td class=\"paramname\">weights</td><td>Table pointer to the vertex weights of the stencil </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00067\">67</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00067\">67</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a698f69e8409658c6afaf5ea1ff0f15b8\" name=\"a698f69e8409658c6afaf5ea1ff0f15b8\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a698f69e8409658c6afaf5ea1ff0f15b8\">&#9670;&#160;</a></span>StencilReal() <span class=\"overload\">[3/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -277,15 +277,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Copy constructor. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00071\">71</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00071\">71</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Member Function Documentation</h2>\n <a id=\"aa4907b035ab197f57102411e48b2cfc0\" name=\"aa4907b035ab197f57102411e48b2cfc0\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa4907b035ab197f57102411e48b2cfc0\">&#9670;&#160;</a></span>GetSize()</h2>\n \n@@ -309,15 +309,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the size of the stencil. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00078\">78</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00078\">78</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ab823038f11d7c069fc63a2b992055535\" name=\"ab823038f11d7c069fc63a2b992055535\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab823038f11d7c069fc63a2b992055535\">&#9670;&#160;</a></span>GetSizePtr()</h2>\n \n <div class=\"memitem\">\n@@ -340,15 +340,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the size of the stencil as a pointer. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00083\">83</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00083\">83</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a8d6f065bafcef50d1f904979c794d1ce\" name=\"a8d6f065bafcef50d1f904979c794d1ce\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8d6f065bafcef50d1f904979c794d1ce\">&#9670;&#160;</a></span>GetVertexIndices()</h2>\n \n <div class=\"memitem\">\n@@ -371,15 +371,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the control vertices' indices. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00088\">88</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00088\">88</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aecc2be688aecf08f7a98e49db8fed2f8\" name=\"aecc2be688aecf08f7a98e49db8fed2f8\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aecc2be688aecf08f7a98e49db8fed2f8\">&#9670;&#160;</a></span>GetWeights()</h2>\n \n <div class=\"memitem\">\n@@ -402,15 +402,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the interpolation weights. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00093\">93</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00093\">93</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a659a293dd51073a1b9560bb80f687705\" name=\"a659a293dd51073a1b9560bb80f687705\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a659a293dd51073a1b9560bb80f687705\">&#9670;&#160;</a></span>Next()</h2>\n \n <div class=\"memitem\">\n@@ -433,15 +433,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Advance to the next stencil in the table. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00098\">98</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00098\">98</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Friends And Related Symbol Documentation</h2>\n <a id=\"a19f9c49c05d967ad8e51bc2a696caf4b\" name=\"a19f9c49c05d967ad8e51bc2a696caf4b\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a19f9c49c05d967ad8e51bc2a696caf4b\">&#9670;&#160;</a></span>LimitStencilTableFactoryReal&lt; REAL &gt;</h2>\n \n@@ -460,15 +460,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">friend</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00098\">98</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00098\">98</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"af58f6a3f9b167c3330097c1a69ca36a8\" name=\"af58f6a3f9b167c3330097c1a69ca36a8\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af58f6a3f9b167c3330097c1a69ca36a8\">&#9670;&#160;</a></span>StencilTableFactoryReal&lt; REAL &gt;</h2>\n \n <div class=\"memitem\">\n@@ -486,15 +486,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">friend</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00098\">98</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00098\">98</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Member Data Documentation</h2>\n <a id=\"a8b387cbfb5a56ee18bf92d10f3cdad6d\" name=\"a8b387cbfb5a56ee18bf92d10f3cdad6d\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8b387cbfb5a56ee18bf92d10f3cdad6d\">&#9670;&#160;</a></span>_indices</h2>\n \n@@ -513,15 +513,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00110\">110</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00110\">110</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a52397f1270007c943b8539338a796608\" name=\"a52397f1270007c943b8539338a796608\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a52397f1270007c943b8539338a796608\">&#9670;&#160;</a></span>_size</h2>\n \n <div class=\"memitem\">\n@@ -539,15 +539,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00109\">109</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00109\">109</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aab5755075fff28578bfd3387c504d303\" name=\"aab5755075fff28578bfd3387c504d303\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aab5755075fff28578bfd3387c504d303\">&#9670;&#160;</a></span>_weights</h2>\n \n <div class=\"memitem\">\n@@ -565,20 +565,20 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00111\">111</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00111\">111</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/far/<a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a></li>\n+<li>opensubdiv/far/<a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00908.html\">Far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01053.html\">StencilReal</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01057.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01057.html", "unified_diff": "@@ -98,15 +98,15 @@\n   <div class=\"headertitle\"><div class=\"title\">Stencil Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Vertex stencil class wrapping the template for compatibility.  \n  <a href=\"a01057.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>&gt;</code></p>\n <div class=\"dynheader\">\n Inheritance diagram for Stencil:</div>\n <div class=\"dyncontent\">\n  <div class=\"center\">\n   <img src=\"a01057.png\" usemap=\"#Stencil_map\" alt=\"\"/>\n   <map id=\"Stencil_map\" name=\"Stencil_map\">\n <area href=\"a01053.html\" alt=\"StencilReal&lt; float &gt;\" shape=\"rect\" coords=\"0,0,123,24\"/>\n@@ -161,15 +161,15 @@\n <tr class=\"separator:a8b387cbfb5a56ee18bf92d10f3cdad6d inherit pro_attribs_a01053\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:aab5755075fff28578bfd3387c504d303 inherit pro_attribs_a01053\" id=\"r_aab5755075fff28578bfd3387c504d303\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">float *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01053.html#aab5755075fff28578bfd3387c504d303\">_weights</a></td></tr>\n <tr class=\"separator:aab5755075fff28578bfd3387c504d303 inherit pro_attribs_a01053\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p>Vertex stencil class wrapping the template for compatibility. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00116\">116</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00116\">116</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n </div><h2 class=\"groupheader\">Member Typedef Documentation</h2>\n <a id=\"a71b0ccb1e01e77608b938cb11039a34a\" name=\"a71b0ccb1e01e77608b938cb11039a34a\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a71b0ccb1e01e77608b938cb11039a34a\">&#9670;&#160;</a></span>BaseStencil</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n <table class=\"mlabels\">\n@@ -183,15 +183,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00118\">118</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00118\">118</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"af3b2d4f28b2b1edbb491db39b0658c2a\" name=\"af3b2d4f28b2b1edbb491db39b0658c2a\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af3b2d4f28b2b1edbb491db39b0658c2a\">&#9670;&#160;</a></span>Stencil() <span class=\"overload\">[1/3]</span></h2>\n \n@@ -211,15 +211,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00121\">121</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00121\">121</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a540bd990ac7c5770b6f1a5eb5b58d874\" name=\"a540bd990ac7c5770b6f1a5eb5b58d874\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a540bd990ac7c5770b6f1a5eb5b58d874\">&#9670;&#160;</a></span>Stencil() <span class=\"overload\">[2/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -239,15 +239,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00122\">122</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00122\">122</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a685b0ef36235914f7c10ff8f1169ade8\" name=\"a685b0ef36235914f7c10ff8f1169ade8\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a685b0ef36235914f7c10ff8f1169ade8\">&#9670;&#160;</a></span>Stencil() <span class=\"overload\">[3/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -283,20 +283,20 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00123\">123</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00123\">123</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/far/<a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a></li>\n+<li>opensubdiv/far/<a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00908.html\">Far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01057.html\">Stencil</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01061.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01061.html", "unified_diff": "@@ -100,15 +100,15 @@\n   <div class=\"headertitle\"><div class=\"title\">StencilTableReal&lt; REAL &gt; Class Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Table of subdivision stencils.  \n  <a href=\"a01061.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>&gt;</code></p>\n <div class=\"dynheader\">\n Inheritance diagram for StencilTableReal&lt; REAL &gt;:</div>\n <div class=\"dyncontent\">\n  <div class=\"center\">\n   <img src=\"a01061.png\" usemap=\"#StencilTableReal_3C_20REAL_20_3E_map\" alt=\"\"/>\n   <map id=\"StencilTableReal_3C_20REAL_20_3E_map\" name=\"StencilTableReal_3C_20REAL_20_3E_map\">\n <area href=\"a01077.html\" alt=\"LimitStencilTableReal&lt; float &gt;\" shape=\"rect\" coords=\"0,56,187,80\"/>\n@@ -209,15 +209,15 @@\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><div class=\"compoundTemplParams\">template&lt;typename REAL&gt;<br />\n class OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal&lt; REAL &gt;</div><p>Table of subdivision stencils. </p>\n <p>Stencils are the most direct method of evaluation of locations on the limit of a surface. Every point of a limit surface can be computed by linearly blending a collection of coarse control vertices.</p>\n <p>A stencil assigns a series of control vertex indices with a blending weight that corresponds to a unique parametric location of the limit surface. When the control vertices move in space, the limit location can be very efficiently recomputed simply by applying the blending weights to the series of coarse control vertices. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00141\">141</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00141\">141</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n </div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"acfd28c310b1539af45e019690b1cb211\" name=\"acfd28c310b1539af45e019690b1cb211\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acfd28c310b1539af45e019690b1cb211\">&#9670;&#160;</a></span>StencilTableReal() <span class=\"overload\">[1/3]</span></h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n <div class=\"memtemplate\">\n@@ -304,15 +304,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00153\">153</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00153\">153</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"adb82c38de4fd0bdc8550e62ebe932c48\" name=\"adb82c38de4fd0bdc8550e62ebe932c48\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adb82c38de4fd0bdc8550e62ebe932c48\">&#9670;&#160;</a></span>StencilTableReal() <span class=\"overload\">[2/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -333,15 +333,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00255\">255</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00255\">255</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a9a7d4fcf07fd12c97d4917c309315136\" name=\"a9a7d4fcf07fd12c97d4917c309315136\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9a7d4fcf07fd12c97d4917c309315136\">&#9670;&#160;</a></span>StencilTableReal() <span class=\"overload\">[3/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -363,15 +363,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00256\">256</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00256\">256</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Member Function Documentation</h2>\n <a id=\"aa71d36872f416feaa853788a7a7a7ef8\" name=\"aa71d36872f416feaa853788a7a7a7ef8\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa71d36872f416feaa853788a7a7a7ef8\">&#9670;&#160;</a></span>Clear()</h2>\n \n@@ -414,15 +414,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00714\">714</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00714\">714</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a8ac84e48ecd3aec3db72f62a4c8206f8\" name=\"a8ac84e48ecd3aec3db72f62a4c8206f8\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8ac84e48ecd3aec3db72f62a4c8206f8\">&#9670;&#160;</a></span>generateOffsets()</h2>\n \n <div class=\"memitem\">\n@@ -443,15 +443,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00678\">678</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00678\">678</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a2c225eadcb49bfb4af44bfb883516809\" name=\"a2c225eadcb49bfb4af44bfb883516809\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2c225eadcb49bfb4af44bfb883516809\">&#9670;&#160;</a></span>GetControlIndices()</h2>\n \n <div class=\"memitem\">\n@@ -474,15 +474,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the indices of the control vertices. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00179\">179</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00179\">179</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a02e67ceab8cb5af7982ef2a31a07a2ce\" name=\"a02e67ceab8cb5af7982ef2a31a07a2ce\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a02e67ceab8cb5af7982ef2a31a07a2ce\">&#9670;&#160;</a></span>GetNumControlVertices()</h2>\n \n <div class=\"memitem\">\n@@ -505,15 +505,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the number of control vertices indexed in the table. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00161\">161</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00161\">161</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a65836d2070b943c8fecbad926d074de2\" name=\"a65836d2070b943c8fecbad926d074de2\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a65836d2070b943c8fecbad926d074de2\">&#9670;&#160;</a></span>GetNumStencils()</h2>\n \n <div class=\"memitem\">\n@@ -536,15 +536,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the number of stencils in the table. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00156\">156</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00156\">156</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a82005658c7c2b4aea6222587d06ce4ef\" name=\"a82005658c7c2b4aea6222587d06ce4ef\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a82005658c7c2b4aea6222587d06ce4ef\">&#9670;&#160;</a></span>GetOffsets()</h2>\n \n <div class=\"memitem\">\n@@ -567,15 +567,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the offset to a given stencil (factory may leave empty) </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00174\">174</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00174\">174</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a50345bcc33c588cf49520a79396e105d\" name=\"a50345bcc33c588cf49520a79396e105d\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a50345bcc33c588cf49520a79396e105d\">&#9670;&#160;</a></span>GetSizes()</h2>\n \n <div class=\"memitem\">\n@@ -598,15 +598,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the number of control vertices of each stencil in the table. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00169\">169</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00169\">169</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a84969a9edeae22167a83fde274f002af\" name=\"a84969a9edeae22167a83fde274f002af\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a84969a9edeae22167a83fde274f002af\">&#9670;&#160;</a></span>GetStencil()</h2>\n \n <div class=\"memitem\">\n@@ -630,15 +630,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns a <a class=\"el\" href=\"a01057.html\" title=\"Vertex stencil class wrapping the template for compatibility.\">Stencil</a> at index i in the table. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00722\">722</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00722\">722</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ac5effc231d2dad1b9fb193c4cf43ab83\" name=\"ac5effc231d2dad1b9fb193c4cf43ab83\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac5effc231d2dad1b9fb193c4cf43ab83\">&#9670;&#160;</a></span>GetWeights()</h2>\n \n <div class=\"memitem\">\n@@ -661,15 +661,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the stencil interpolation weights. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00184\">184</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00184\">184</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a35786984f5caa4684165da2c96fba9b3\" name=\"a35786984f5caa4684165da2c96fba9b3\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a35786984f5caa4684165da2c96fba9b3\">&#9670;&#160;</a></span>operator[]()</h2>\n \n <div class=\"memitem\">\n@@ -693,15 +693,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the stencil at index i in the table. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00734\">734</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00734\">734</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ae00a9e01294323589df33d2680dab235\" name=\"ae00a9e01294323589df33d2680dab235\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae00a9e01294323589df33d2680dab235\">&#9670;&#160;</a></span>reserve()</h2>\n \n <div class=\"memitem\">\n@@ -733,15 +733,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00698\">698</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00698\">698</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ac21f18df5c8da2db4d23287cdab5fcc1\" name=\"ac21f18df5c8da2db4d23287cdab5fcc1\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac21f18df5c8da2db4d23287cdab5fcc1\">&#9670;&#160;</a></span>resize()</h2>\n \n <div class=\"memitem\">\n@@ -773,15 +773,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00690\">690</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00690\">690</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a84fb9ead4f0f7458491b5d310592cea9\" name=\"a84fb9ead4f0f7458491b5d310592cea9\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a84fb9ead4f0f7458491b5d310592cea9\">&#9670;&#160;</a></span>shrinkToFit()</h2>\n \n <div class=\"memitem\">\n@@ -802,15 +802,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00706\">706</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00706\">706</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a3cd3b8de1630c159f3c66dfc950210cf\" name=\"a3cd3b8de1630c159f3c66dfc950210cf\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3cd3b8de1630c159f3c66dfc950210cf\">&#9670;&#160;</a></span>update() <span class=\"overload\">[1/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -862,15 +862,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00650\">650</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00650\">650</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a1bcd132b8e6d40cb6ed1543f28ff998c\" name=\"a1bcd132b8e6d40cb6ed1543f28ff998c\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1bcd132b8e6d40cb6ed1543f28ff998c\">&#9670;&#160;</a></span>update() <span class=\"overload\">[2/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -934,15 +934,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00618\">618</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00618\">618</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"afbd961bebfa92a8fd0826f219baaf8f5\" name=\"afbd961bebfa92a8fd0826f219baaf8f5\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afbd961bebfa92a8fd0826f219baaf8f5\">&#9670;&#160;</a></span>UpdateValues() <span class=\"overload\">[1/4]</span></h2>\n \n <div class=\"memitem\">\n@@ -1000,15 +1000,15 @@\n     <tr><td class=\"paramname\">dstValues</td><td>Destination buffer for the interpolated primvar data</td></tr>\n     <tr><td class=\"paramname\">start</td><td>Index of first destination value to update</td></tr>\n     <tr><td class=\"paramname\">end</td><td>Index of last destination value to update </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00205\">205</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00205\">205</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ae1ff7caf5509b4d76bc8220608d5b176\" name=\"ae1ff7caf5509b4d76bc8220608d5b176\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae1ff7caf5509b4d76bc8220608d5b176\">&#9670;&#160;</a></span>UpdateValues() <span class=\"overload\">[2/4]</span></h2>\n \n <div class=\"memitem\">\n@@ -1054,15 +1054,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00217\">217</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00217\">217</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a232ddf5a15e24e91b2ec55f83a1436b5\" name=\"a232ddf5a15e24e91b2ec55f83a1436b5\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a232ddf5a15e24e91b2ec55f83a1436b5\">&#9670;&#160;</a></span>UpdateValues() <span class=\"overload\">[3/4]</span></h2>\n \n <div class=\"memitem\">\n@@ -1120,15 +1120,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00210\">210</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00210\">210</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ac67bfdfb875671203b222a0a25b1cfe3\" name=\"ac67bfdfb875671203b222a0a25b1cfe3\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac67bfdfb875671203b222a0a25b1cfe3\">&#9670;&#160;</a></span>UpdateValues() <span class=\"overload\">[4/4]</span></h2>\n \n <div class=\"memitem\">\n@@ -1186,15 +1186,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00221\">221</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00221\">221</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Friends And Related Symbol Documentation</h2>\n <a id=\"a15cb55501155c442dba5f0e14bf03124\" name=\"a15cb55501155c442dba5f0e14bf03124\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a15cb55501155c442dba5f0e14bf03124\">&#9670;&#160;</a></span>Far::PatchTableBuilder</h2>\n \n@@ -1213,15 +1213,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">friend</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00261\">261</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00261\">261</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"af58f6a3f9b167c3330097c1a69ca36a8\" name=\"af58f6a3f9b167c3330097c1a69ca36a8\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af58f6a3f9b167c3330097c1a69ca36a8\">&#9670;&#160;</a></span>StencilTableFactoryReal&lt; REAL &gt;</h2>\n \n <div class=\"memitem\">\n@@ -1239,15 +1239,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">friend</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00256\">256</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00256\">256</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Member Data Documentation</h2>\n <a id=\"ad6ce8118325de299bd7d9735f68e6de2\" name=\"ad6ce8118325de299bd7d9735f68e6de2\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad6ce8118325de299bd7d9735f68e6de2\">&#9670;&#160;</a></span>_indices</h2>\n \n@@ -1266,15 +1266,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00267\">267</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00267\">267</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a385a2eb32312f28d79a02461a59c0630\" name=\"a385a2eb32312f28d79a02461a59c0630\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a385a2eb32312f28d79a02461a59c0630\">&#9670;&#160;</a></span>_numControlVertices</h2>\n \n <div class=\"memitem\">\n@@ -1292,15 +1292,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00263\">263</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00263\">263</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aac45e3e693e9298942da27bef3cec02c\" name=\"aac45e3e693e9298942da27bef3cec02c\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aac45e3e693e9298942da27bef3cec02c\">&#9670;&#160;</a></span>_offsets</h2>\n \n <div class=\"memitem\">\n@@ -1318,15 +1318,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00266\">266</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00266\">266</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a11ad3846bf577760d1c829835f62b8d3\" name=\"a11ad3846bf577760d1c829835f62b8d3\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a11ad3846bf577760d1c829835f62b8d3\">&#9670;&#160;</a></span>_sizes</h2>\n \n <div class=\"memitem\">\n@@ -1344,15 +1344,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00265\">265</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00265\">265</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aae5a4bd49c41df5f949d773549c09d19\" name=\"aae5a4bd49c41df5f949d773549c09d19\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aae5a4bd49c41df5f949d773549c09d19\">&#9670;&#160;</a></span>_weights</h2>\n \n <div class=\"memitem\">\n@@ -1370,20 +1370,20 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00268\">268</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00268\">268</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/far/<a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a></li>\n+<li>opensubdiv/far/<a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00908.html\">Far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01061.html\">StencilTableReal</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01065.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01065.html", "unified_diff": "@@ -99,15 +99,15 @@\n   <div class=\"headertitle\"><div class=\"title\">StencilTable Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p><a class=\"el\" href=\"a01057.html\" title=\"Vertex stencil class wrapping the template for compatibility.\">Stencil</a> table class wrapping the template for compatibility.  \n  <a href=\"a01065.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>&gt;</code></p>\n <div class=\"dynheader\">\n Inheritance diagram for StencilTable:</div>\n <div class=\"dyncontent\">\n  <div class=\"center\">\n   <img src=\"a01065.png\" usemap=\"#StencilTable_map\" alt=\"\"/>\n   <map id=\"StencilTable_map\" name=\"StencilTable_map\">\n <area href=\"a01061.html\" alt=\"StencilTableReal&lt; float &gt;\" shape=\"rect\" coords=\"0,0,154,24\"/>\n@@ -208,15 +208,15 @@\n <tr class=\"separator:ad6ce8118325de299bd7d9735f68e6de2 inherit pro_attribs_a01061\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:aae5a4bd49c41df5f949d773549c09d19 inherit pro_attribs_a01061\" id=\"r_aae5a4bd49c41df5f949d773549c09d19\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; float &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01061.html#aae5a4bd49c41df5f949d773549c09d19\">_weights</a></td></tr>\n <tr class=\"separator:aae5a4bd49c41df5f949d773549c09d19 inherit pro_attribs_a01061\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p><a class=\"el\" href=\"a01057.html\" title=\"Vertex stencil class wrapping the template for compatibility.\">Stencil</a> table class wrapping the template for compatibility. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00273\">273</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00273\">273</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n </div><h2 class=\"groupheader\">Member Typedef Documentation</h2>\n <a id=\"a54f0bb223290a17a59f51f4cbcfbc2e2\" name=\"a54f0bb223290a17a59f51f4cbcfbc2e2\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a54f0bb223290a17a59f51f4cbcfbc2e2\">&#9670;&#160;</a></span>BaseTable</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n <table class=\"mlabels\">\n@@ -230,15 +230,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00275\">275</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00275\">275</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"acc553d2d5624ab2a790ae9613812393e\" name=\"acc553d2d5624ab2a790ae9613812393e\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acc553d2d5624ab2a790ae9613812393e\">&#9670;&#160;</a></span>StencilTable() <span class=\"overload\">[1/3]</span></h2>\n \n@@ -258,15 +258,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00286\">286</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00286\">286</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a54db76b34112b5cb3c623be8789dd8f4\" name=\"a54db76b34112b5cb3c623be8789dd8f4\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a54db76b34112b5cb3c623be8789dd8f4\">&#9670;&#160;</a></span>StencilTable() <span class=\"overload\">[2/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -286,15 +286,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00287\">287</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00287\">287</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a3d12830eb0d421206de500d7abc9decf\" name=\"a3d12830eb0d421206de500d7abc9decf\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3d12830eb0d421206de500d7abc9decf\">&#9670;&#160;</a></span>StencilTable() <span class=\"overload\">[3/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -354,15 +354,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00288\">288</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00288\">288</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Member Function Documentation</h2>\n <a id=\"a67e208e25b2922502d5f0c9d8e36ce88\" name=\"a67e208e25b2922502d5f0c9d8e36ce88\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a67e208e25b2922502d5f0c9d8e36ce88\">&#9670;&#160;</a></span>GetStencil()</h2>\n \n@@ -383,15 +383,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00278\">278</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00278\">278</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aa4c7aa3ea058d947fa1a2021704f9ee5\" name=\"aa4c7aa3ea058d947fa1a2021704f9ee5\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa4c7aa3ea058d947fa1a2021704f9ee5\">&#9670;&#160;</a></span>operator[]()</h2>\n \n <div class=\"memitem\">\n@@ -411,20 +411,20 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00281\">281</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00281\">281</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/far/<a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a></li>\n+<li>opensubdiv/far/<a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00908.html\">Far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01065.html\">StencilTable</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01069.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01069.html", "unified_diff": "@@ -98,15 +98,15 @@\n   <div class=\"headertitle\"><div class=\"title\">LimitStencilReal&lt; REAL &gt; Class Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Limit point stencil descriptor.  \n  <a href=\"a01069.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>&gt;</code></p>\n <div class=\"dynheader\">\n Inheritance diagram for LimitStencilReal&lt; REAL &gt;:</div>\n <div class=\"dyncontent\">\n  <div class=\"center\">\n   <img src=\"a01069.png\" usemap=\"#LimitStencilReal_3C_20REAL_20_3E_map\" alt=\"\"/>\n   <map id=\"LimitStencilReal_3C_20REAL_20_3E_map\" name=\"LimitStencilReal_3C_20REAL_20_3E_map\">\n <area href=\"a01053.html\" title=\"Vertex stencil descriptor.\" alt=\"StencilReal&lt; REAL &gt;\" shape=\"rect\" coords=\"0,0,156,24\"/>\n@@ -179,15 +179,15 @@\n <tr class=\"memitem:aab5755075fff28578bfd3387c504d303 inherit pro_attribs_a01053\" id=\"r_aab5755075fff28578bfd3387c504d303\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">REAL *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01053.html#aab5755075fff28578bfd3387c504d303\">_weights</a></td></tr>\n <tr class=\"separator:aab5755075fff28578bfd3387c504d303 inherit pro_attribs_a01053\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><div class=\"compoundTemplParams\">template&lt;typename REAL&gt;<br />\n class OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilReal&lt; REAL &gt;</div><p>Limit point stencil descriptor. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00303\">303</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00303\">303</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n </div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"ad6ade692f92a3bf50c813a82bd63d4c7\" name=\"ad6ade692f92a3bf50c813a82bd63d4c7\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad6ade692f92a3bf50c813a82bd63d4c7\">&#9670;&#160;</a></span>LimitStencilReal()</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n <div class=\"memtemplate\">\n@@ -268,15 +268,15 @@\n     <tr><td class=\"paramname\">duuWeights</td><td>Table pointer to the 'uu' derivative weights</td></tr>\n     <tr><td class=\"paramname\">duvWeights</td><td>Table pointer to the 'uv' derivative weights</td></tr>\n     <tr><td class=\"paramname\">dvvWeights</td><td>Table pointer to the 'vv' derivative weights </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00324\">324</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00324\">324</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Member Function Documentation</h2>\n <a id=\"ae5f480289f879cf877d43c9db90acd50\" name=\"ae5f480289f879cf877d43c9db90acd50\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae5f480289f879cf877d43c9db90acd50\">&#9670;&#160;</a></span>GetDuuWeights()</h2>\n \n@@ -300,15 +300,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the uu derivative weights. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00351\">351</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00351\">351</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a448678fc2c70f09429f6a105b7aea8e4\" name=\"a448678fc2c70f09429f6a105b7aea8e4\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a448678fc2c70f09429f6a105b7aea8e4\">&#9670;&#160;</a></span>GetDuvWeights()</h2>\n \n <div class=\"memitem\">\n@@ -331,15 +331,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the uv derivative weights. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00356\">356</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00356\">356</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ae18b32c2a684569e90392e2548cd9f53\" name=\"ae18b32c2a684569e90392e2548cd9f53\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae18b32c2a684569e90392e2548cd9f53\">&#9670;&#160;</a></span>GetDuWeights()</h2>\n \n <div class=\"memitem\">\n@@ -362,15 +362,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the u derivative weights. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00341\">341</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00341\">341</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a9f286a1d78b9333a3c3efbe793e10b47\" name=\"a9f286a1d78b9333a3c3efbe793e10b47\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9f286a1d78b9333a3c3efbe793e10b47\">&#9670;&#160;</a></span>GetDvvWeights()</h2>\n \n <div class=\"memitem\">\n@@ -393,15 +393,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the vv derivative weights. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00361\">361</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00361\">361</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a4fe06ffb99a6663f5262d9ac1fe06dd4\" name=\"a4fe06ffb99a6663f5262d9ac1fe06dd4\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4fe06ffb99a6663f5262d9ac1fe06dd4\">&#9670;&#160;</a></span>GetDvWeights()</h2>\n \n <div class=\"memitem\">\n@@ -424,15 +424,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the v derivative weights. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00346\">346</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00346\">346</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a659a293dd51073a1b9560bb80f687705\" name=\"a659a293dd51073a1b9560bb80f687705\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a659a293dd51073a1b9560bb80f687705\">&#9670;&#160;</a></span>Next()</h2>\n \n <div class=\"memitem\">\n@@ -455,15 +455,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Advance to the next stencil in the table. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00366\">366</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00366\">366</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Friends And Related Symbol Documentation</h2>\n <a id=\"a19f9c49c05d967ad8e51bc2a696caf4b\" name=\"a19f9c49c05d967ad8e51bc2a696caf4b\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a19f9c49c05d967ad8e51bc2a696caf4b\">&#9670;&#160;</a></span>LimitStencilTableFactoryReal&lt; REAL &gt;</h2>\n \n@@ -482,15 +482,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">friend</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00366\">366</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00366\">366</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"af58f6a3f9b167c3330097c1a69ca36a8\" name=\"af58f6a3f9b167c3330097c1a69ca36a8\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af58f6a3f9b167c3330097c1a69ca36a8\">&#9670;&#160;</a></span>StencilTableFactoryReal&lt; REAL &gt;</h2>\n \n <div class=\"memitem\">\n@@ -508,20 +508,20 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">friend</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00366\">366</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00366\">366</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/far/<a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a></li>\n+<li>opensubdiv/far/<a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00908.html\">Far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01069.html\">LimitStencilReal</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01073.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01073.html", "unified_diff": "@@ -98,15 +98,15 @@\n   <div class=\"headertitle\"><div class=\"title\">LimitStencil Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Limit point stencil class wrapping the template for compatibility.  \n  <a href=\"a01073.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>&gt;</code></p>\n <div class=\"dynheader\">\n Inheritance diagram for LimitStencil:</div>\n <div class=\"dyncontent\">\n  <div class=\"center\">\n   <img src=\"a01073.png\" usemap=\"#LimitStencil_map\" alt=\"\"/>\n   <map id=\"LimitStencil_map\" name=\"LimitStencil_map\">\n <area href=\"a01069.html\" alt=\"LimitStencilReal&lt; float &gt;\" shape=\"rect\" coords=\"0,56,148,80\"/>\n@@ -182,15 +182,15 @@\n <tr class=\"separator:a8b387cbfb5a56ee18bf92d10f3cdad6d inherit pro_attribs_a01053\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:aab5755075fff28578bfd3387c504d303 inherit pro_attribs_a01053\" id=\"r_aab5755075fff28578bfd3387c504d303\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">REAL *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01053.html#aab5755075fff28578bfd3387c504d303\">_weights</a></td></tr>\n <tr class=\"separator:aab5755075fff28578bfd3387c504d303 inherit pro_attribs_a01053\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p>Limit point stencil class wrapping the template for compatibility. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00392\">392</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00392\">392</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n </div><h2 class=\"groupheader\">Member Typedef Documentation</h2>\n <a id=\"a1449f658bfbe067e5c7d709e700bbc29\" name=\"a1449f658bfbe067e5c7d709e700bbc29\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1449f658bfbe067e5c7d709e700bbc29\">&#9670;&#160;</a></span>BaseStencil</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n <table class=\"mlabels\">\n@@ -204,15 +204,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00394\">394</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00394\">394</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"a071ea9b75540c3d54d9bf934fc944e5a\" name=\"a071ea9b75540c3d54d9bf934fc944e5a\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a071ea9b75540c3d54d9bf934fc944e5a\">&#9670;&#160;</a></span>LimitStencil() <span class=\"overload\">[1/2]</span></h2>\n \n@@ -233,15 +233,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00397\">397</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00397\">397</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a51e1d601373aa0cd9ce70b630ce22adf\" name=\"a51e1d601373aa0cd9ce70b630ce22adf\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a51e1d601373aa0cd9ce70b630ce22adf\">&#9670;&#160;</a></span>LimitStencil() <span class=\"overload\">[2/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -307,20 +307,20 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00398\">398</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00398\">398</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/far/<a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a></li>\n+<li>opensubdiv/far/<a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00908.html\">Far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01073.html\">LimitStencil</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01077.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01077.html", "unified_diff": "@@ -99,15 +99,15 @@\n   <div class=\"headertitle\"><div class=\"title\">LimitStencilTableReal&lt; REAL &gt; Class Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Table of limit subdivision stencils.  \n  <a href=\"a01077.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>&gt;</code></p>\n <div class=\"dynheader\">\n Inheritance diagram for LimitStencilTableReal&lt; REAL &gt;:</div>\n <div class=\"dyncontent\">\n  <div class=\"center\">\n   <img src=\"a01077.png\" usemap=\"#LimitStencilTableReal_3C_20REAL_20_3E_map\" alt=\"\"/>\n   <map id=\"LimitStencilTableReal_3C_20REAL_20_3E_map\" name=\"LimitStencilTableReal_3C_20REAL_20_3E_map\">\n <area href=\"a01061.html\" title=\"Table of subdivision stencils.\" alt=\"StencilTableReal&lt; REAL &gt;\" shape=\"rect\" coords=\"0,0,187,24\"/>\n@@ -257,15 +257,15 @@\n <tr class=\"memitem:aae5a4bd49c41df5f949d773549c09d19 inherit pro_attribs_a01061\" id=\"r_aae5a4bd49c41df5f949d773549c09d19\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; REAL &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01061.html#aae5a4bd49c41df5f949d773549c09d19\">_weights</a></td></tr>\n <tr class=\"separator:aae5a4bd49c41df5f949d773549c09d19 inherit pro_attribs_a01061\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><div class=\"compoundTemplParams\">template&lt;typename REAL&gt;<br />\n class OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableReal&lt; REAL &gt;</div><p>Table of limit subdivision stencils. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00409\">409</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00409\">409</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n </div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"a8bd530eac9ff33dc0b117d5f4a0cb939\" name=\"a8bd530eac9ff33dc0b117d5f4a0cb939\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8bd530eac9ff33dc0b117d5f4a0cb939\">&#9670;&#160;</a></span>LimitStencilTableReal()</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n <div class=\"memtemplate\">\n@@ -406,15 +406,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the 'uu' derivative stencil interpolation weights. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00444\">444</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00444\">444</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ac6b92b68f0b56967e7ffa2d13aea72d0\" name=\"ac6b92b68f0b56967e7ffa2d13aea72d0\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac6b92b68f0b56967e7ffa2d13aea72d0\">&#9670;&#160;</a></span>GetDuvWeights()</h2>\n \n <div class=\"memitem\">\n@@ -437,15 +437,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the 'uv' derivative stencil interpolation weights. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00449\">449</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00449\">449</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aa3883f989c1ef593204f33e6ff8d31fe\" name=\"aa3883f989c1ef593204f33e6ff8d31fe\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa3883f989c1ef593204f33e6ff8d31fe\">&#9670;&#160;</a></span>GetDuWeights()</h2>\n \n <div class=\"memitem\">\n@@ -468,15 +468,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the 'u' derivative stencil interpolation weights. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00434\">434</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00434\">434</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a176d8d4711bcb252f95b79f40549eaad\" name=\"a176d8d4711bcb252f95b79f40549eaad\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a176d8d4711bcb252f95b79f40549eaad\">&#9670;&#160;</a></span>GetDvvWeights()</h2>\n \n <div class=\"memitem\">\n@@ -499,15 +499,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the 'vv' derivative stencil interpolation weights. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00454\">454</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00454\">454</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a3b267a7fa353373736643e1a003c0d96\" name=\"a3b267a7fa353373736643e1a003c0d96\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3b267a7fa353373736643e1a003c0d96\">&#9670;&#160;</a></span>GetDvWeights()</h2>\n \n <div class=\"memitem\">\n@@ -530,15 +530,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the 'v' derivative stencil interpolation weights. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00439\">439</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00439\">439</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a785195dfb6a281904181b1cba18b3e62\" name=\"a785195dfb6a281904181b1cba18b3e62\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a785195dfb6a281904181b1cba18b3e62\">&#9670;&#160;</a></span>GetLimitStencil()</h2>\n \n <div class=\"memitem\">\n@@ -562,15 +562,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns a <a class=\"el\" href=\"a01073.html\" title=\"Limit point stencil class wrapping the template for compatibility.\">LimitStencil</a> at index i in the table. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00749\">749</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00749\">749</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a14f00fd1df2ddd7e1d4750e7dbda200c\" name=\"a14f00fd1df2ddd7e1d4750e7dbda200c\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a14f00fd1df2ddd7e1d4750e7dbda200c\">&#9670;&#160;</a></span>operator[]()</h2>\n \n <div class=\"memitem\">\n@@ -594,15 +594,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the limit stencil at index i in the table. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00782\">782</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00782\">782</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a9afad522b48b3d7a0fe296ec26e1484b\" name=\"a9afad522b48b3d7a0fe296ec26e1484b\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9afad522b48b3d7a0fe296ec26e1484b\">&#9670;&#160;</a></span>Update2ndDerivs() <span class=\"overload\">[1/4]</span></h2>\n \n <div class=\"memitem\">\n@@ -674,15 +674,15 @@\n     <tr><td class=\"paramname\">vvderivs</td><td>Destination buffer for the interpolated 'vv' derivative primvar data</td></tr>\n     <tr><td class=\"paramname\">start</td><td>Index of first destination derivative to update</td></tr>\n     <tr><td class=\"paramname\">end</td><td>Index of last destination derivative to update </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00528\">528</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00528\">528</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a1efa2668bb0085a23b0b590f7a765ab2\" name=\"a1efa2668bb0085a23b0b590f7a765ab2\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1efa2668bb0085a23b0b590f7a765ab2\">&#9670;&#160;</a></span>Update2ndDerivs() <span class=\"overload\">[2/4]</span></h2>\n \n <div class=\"memitem\">\n@@ -740,15 +740,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00548\">548</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00548\">548</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ac0752d706ee5bbf7ef22f26a9399538f\" name=\"ac0752d706ee5bbf7ef22f26a9399538f\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac0752d706ee5bbf7ef22f26a9399538f\">&#9670;&#160;</a></span>Update2ndDerivs() <span class=\"overload\">[3/4]</span></h2>\n \n <div class=\"memitem\">\n@@ -818,15 +818,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00538\">538</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00538\">538</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a4ee18e8eea83ee57a5a993154ed4cfbd\" name=\"a4ee18e8eea83ee57a5a993154ed4cfbd\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4ee18e8eea83ee57a5a993154ed4cfbd\">&#9670;&#160;</a></span>Update2ndDerivs() <span class=\"overload\">[4/4]</span></h2>\n \n <div class=\"memitem\">\n@@ -896,15 +896,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00556\">556</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00556\">556</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a6388396152cb879c2766329f2b0091f8\" name=\"a6388396152cb879c2766329f2b0091f8\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6388396152cb879c2766329f2b0091f8\">&#9670;&#160;</a></span>UpdateDerivs() <span class=\"overload\">[1/4]</span></h2>\n \n <div class=\"memitem\">\n@@ -969,15 +969,15 @@\n     <tr><td class=\"paramname\">vderivs</td><td>Destination buffer for the interpolated 'v' derivative primvar data</td></tr>\n     <tr><td class=\"paramname\">start</td><td>Index of first destination derivative to update</td></tr>\n     <tr><td class=\"paramname\">end</td><td>Index of last destination derivative to update </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00476\">476</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00476\">476</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a1de3a0b02983c7a753ca434492d72a41\" name=\"a1de3a0b02983c7a753ca434492d72a41\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1de3a0b02983c7a753ca434492d72a41\">&#9670;&#160;</a></span>UpdateDerivs() <span class=\"overload\">[2/4]</span></h2>\n \n <div class=\"memitem\">\n@@ -1029,15 +1029,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00493\">493</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00493\">493</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ad3029ef69f3a4b90c058c27cfa968897\" name=\"ad3029ef69f3a4b90c058c27cfa968897\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad3029ef69f3a4b90c058c27cfa968897\">&#9670;&#160;</a></span>UpdateDerivs() <span class=\"overload\">[3/4]</span></h2>\n \n <div class=\"memitem\">\n@@ -1101,15 +1101,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00484\">484</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00484\">484</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aeb3fc8705b16ef80f1686b6fc7cd44e7\" name=\"aeb3fc8705b16ef80f1686b6fc7cd44e7\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aeb3fc8705b16ef80f1686b6fc7cd44e7\">&#9670;&#160;</a></span>UpdateDerivs() <span class=\"overload\">[4/4]</span></h2>\n \n <div class=\"memitem\">\n@@ -1173,15 +1173,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00500\">500</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00500\">500</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Friends And Related Symbol Documentation</h2>\n <a id=\"a19f9c49c05d967ad8e51bc2a696caf4b\" name=\"a19f9c49c05d967ad8e51bc2a696caf4b\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a19f9c49c05d967ad8e51bc2a696caf4b\">&#9670;&#160;</a></span>LimitStencilTableFactoryReal&lt; REAL &gt;</h2>\n \n@@ -1200,20 +1200,20 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">friend</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00565\">565</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00565\">565</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/far/<a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a></li>\n+<li>opensubdiv/far/<a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00908.html\">Far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01077.html\">LimitStencilTableReal</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01081.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01081.html", "unified_diff": "@@ -99,15 +99,15 @@\n   <div class=\"headertitle\"><div class=\"title\">LimitStencilTable Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Limit stencil table class wrapping the template for compatibility.  \n  <a href=\"a01081.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>&gt;</code></p>\n <div class=\"dynheader\">\n Inheritance diagram for LimitStencilTable:</div>\n <div class=\"dyncontent\">\n  <div class=\"center\">\n   <img src=\"a01081.png\" usemap=\"#LimitStencilTable_map\" alt=\"\"/>\n   <map id=\"LimitStencilTable_map\" name=\"LimitStencilTable_map\">\n <area href=\"a01077.html\" alt=\"LimitStencilTableReal&lt; float &gt;\" shape=\"rect\" coords=\"0,56,179,80\"/>\n@@ -257,15 +257,15 @@\n <tr class=\"separator:ad6ce8118325de299bd7d9735f68e6de2 inherit pro_attribs_a01061\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:aae5a4bd49c41df5f949d773549c09d19 inherit pro_attribs_a01061\" id=\"r_aae5a4bd49c41df5f949d773549c09d19\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; REAL &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01061.html#aae5a4bd49c41df5f949d773549c09d19\">_weights</a></td></tr>\n <tr class=\"separator:aae5a4bd49c41df5f949d773549c09d19 inherit pro_attribs_a01061\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p>Limit stencil table class wrapping the template for compatibility. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00583\">583</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00583\">583</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n </div><h2 class=\"groupheader\">Member Typedef Documentation</h2>\n <a id=\"a13d2ee8ca9cdc9073905193ea1cefd95\" name=\"a13d2ee8ca9cdc9073905193ea1cefd95\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a13d2ee8ca9cdc9073905193ea1cefd95\">&#9670;&#160;</a></span>BaseTable</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n <table class=\"mlabels\">\n@@ -279,15 +279,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00585\">585</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00585\">585</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"a45723c21481c3887e0740fe69acbac40\" name=\"a45723c21481c3887e0740fe69acbac40\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a45723c21481c3887e0740fe69acbac40\">&#9670;&#160;</a></span>LimitStencilTable()</h2>\n \n@@ -378,15 +378,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00596\">596</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00596\">596</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Member Function Documentation</h2>\n <a id=\"a177ff72b08f474982eaa70fa93fe5471\" name=\"a177ff72b08f474982eaa70fa93fe5471\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a177ff72b08f474982eaa70fa93fe5471\">&#9670;&#160;</a></span>GetLimitStencil()</h2>\n \n@@ -407,15 +407,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00588\">588</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00588\">588</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a486c20121d63d5149d01adbe45d3b9b6\" name=\"a486c20121d63d5149d01adbe45d3b9b6\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a486c20121d63d5149d01adbe45d3b9b6\">&#9670;&#160;</a></span>operator[]()</h2>\n \n <div class=\"memitem\">\n@@ -435,20 +435,20 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00758_source.html#l00591\">591</a> of file <a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00591\">591</a> of file <a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/far/<a class=\"el\" href=\"a00758_source.html\">stencilTable.h</a></li>\n+<li>opensubdiv/far/<a class=\"el\" href=\"a00818_source.html\">stencilTable.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00908.html\">Far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01081.html\">LimitStencilTable</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01085.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01085.html", "unified_diff": "@@ -95,15 +95,15 @@\n <a href=\"#pub-methods\">Public Member Functions</a> &#124;\n <a href=\"#pub-attribs\">Public Attributes</a> &#124;\n <a href=\"a01082.html\">List of all members</a>  </div>\n   <div class=\"headertitle\"><div class=\"title\">StencilTableFactoryReal&lt; REAL &gt;::Options Struct Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00752_source.html\">stencilTableFactory.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00824_source.html\">stencilTableFactory.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\n Public Member Functions</h2></td></tr>\n <tr class=\"memitem:a28d39a844c3a37ab61d32ab7c6352f09\" id=\"r_a28d39a844c3a37ab61d32ab7c6352f09\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01085.html#a28d39a844c3a37ab61d32ab7c6352f09\">Options</a> ()</td></tr>\n <tr class=\"separator:a28d39a844c3a37ab61d32ab7c6352f09\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\n@@ -127,15 +127,15 @@\n <tr class=\"separator:a110477b0e61b09d8be1a472df34f6386\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a7cd8273eef086a749ce3d40063fb4a28\" id=\"r_a7cd8273eef086a749ce3d40063fb4a28\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">unsigned int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01085.html#a7cd8273eef086a749ce3d40063fb4a28\">fvarChannel</a></td></tr>\n <tr class=\"separator:a7cd8273eef086a749ce3d40063fb4a28\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><div class=\"compoundTemplParams\">template&lt;typename REAL&gt;<br />\n struct OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactoryReal&lt; REAL &gt;::Options</div>\n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00061\">61</a> of file <a class=\"el\" href=\"a00752_source.html\">stencilTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00824_source.html#l00061\">61</a> of file <a class=\"el\" href=\"a00824_source.html\">stencilTableFactory.h</a>.</p>\n </div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"a28d39a844c3a37ab61d32ab7c6352f09\" name=\"a28d39a844c3a37ab61d32ab7c6352f09\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a28d39a844c3a37ab61d32ab7c6352f09\">&#9670;&#160;</a></span>Options()</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n <div class=\"memtemplate\">\n@@ -154,15 +154,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00063\">63</a> of file <a class=\"el\" href=\"a00752_source.html\">stencilTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00824_source.html#l00063\">63</a> of file <a class=\"el\" href=\"a00824_source.html\">stencilTableFactory.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Member Data Documentation</h2>\n <a id=\"a059c9b4a95b37faa88d1dd0fac0adc8d\" name=\"a059c9b4a95b37faa88d1dd0fac0adc8d\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a059c9b4a95b37faa88d1dd0fac0adc8d\">&#9670;&#160;</a></span>factorizeIntermediateLevels</h2>\n \n@@ -174,15 +174,15 @@\n         <tr>\n           <td class=\"memname\">unsigned int factorizeIntermediateLevels</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n <p>accumulate stencil weights from control vertices or from the stencils of the previous level </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00075\">75</a> of file <a class=\"el\" href=\"a00752_source.html\">stencilTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00824_source.html#l00075\">75</a> of file <a class=\"el\" href=\"a00824_source.html\">stencilTableFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a7cd8273eef086a749ce3d40063fb4a28\" name=\"a7cd8273eef086a749ce3d40063fb4a28\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7cd8273eef086a749ce3d40063fb4a28\">&#9670;&#160;</a></span>fvarChannel</h2>\n \n <div class=\"memitem\">\n@@ -193,15 +193,15 @@\n         <tr>\n           <td class=\"memname\">unsigned int fvarChannel</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n <p>face-varying channel to use when generating face-varying stencils </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00079\">79</a> of file <a class=\"el\" href=\"a00752_source.html\">stencilTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00824_source.html#l00079\">79</a> of file <a class=\"el\" href=\"a00824_source.html\">stencilTableFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a7091c369d67630320a623dbc4a2b34b7\" name=\"a7091c369d67630320a623dbc4a2b34b7\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7091c369d67630320a623dbc4a2b34b7\">&#9670;&#160;</a></span>generateControlVerts</h2>\n \n <div class=\"memitem\">\n@@ -213,15 +213,15 @@\n           <td class=\"memname\">unsigned int generateControlVerts</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n <p>generate stencils for control-vertices </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00073\">73</a> of file <a class=\"el\" href=\"a00752_source.html\">stencilTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00824_source.html#l00073\">73</a> of file <a class=\"el\" href=\"a00824_source.html\">stencilTableFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a55457e193a57e08a56663abf8cc838b4\" name=\"a55457e193a57e08a56663abf8cc838b4\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a55457e193a57e08a56663abf8cc838b4\">&#9670;&#160;</a></span>generateIntermediateLevels</h2>\n \n <div class=\"memitem\">\n@@ -233,15 +233,15 @@\n           <td class=\"memname\">unsigned int generateIntermediateLevels</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n <p>vertices at all levels or highest only </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00074\">74</a> of file <a class=\"el\" href=\"a00752_source.html\">stencilTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00824_source.html#l00074\">74</a> of file <a class=\"el\" href=\"a00824_source.html\">stencilTableFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a73289d5e55adccde08afd7399a2357f2\" name=\"a73289d5e55adccde08afd7399a2357f2\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a73289d5e55adccde08afd7399a2357f2\">&#9670;&#160;</a></span>generateOffsets</h2>\n \n <div class=\"memitem\">\n@@ -253,15 +253,15 @@\n           <td class=\"memname\">unsigned int generateOffsets</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n <p>populate optional \"_offsets\" field </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00072\">72</a> of file <a class=\"el\" href=\"a00752_source.html\">stencilTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00824_source.html#l00072\">72</a> of file <a class=\"el\" href=\"a00824_source.html\">stencilTableFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ab7c383a49298cf060574242fe679378f\" name=\"ab7c383a49298cf060574242fe679378f\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab7c383a49298cf060574242fe679378f\">&#9670;&#160;</a></span>interpolationMode</h2>\n \n <div class=\"memitem\">\n@@ -273,15 +273,15 @@\n           <td class=\"memname\">unsigned int interpolationMode</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n <p>interpolation mode </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00071\">71</a> of file <a class=\"el\" href=\"a00752_source.html\">stencilTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00824_source.html#l00071\">71</a> of file <a class=\"el\" href=\"a00824_source.html\">stencilTableFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a110477b0e61b09d8be1a472df34f6386\" name=\"a110477b0e61b09d8be1a472df34f6386\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a110477b0e61b09d8be1a472df34f6386\">&#9670;&#160;</a></span>maxLevel</h2>\n \n <div class=\"memitem\">\n@@ -293,20 +293,20 @@\n           <td class=\"memname\">unsigned int maxLevel</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n <p>generate stencils up to 'maxLevel' </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00078\">78</a> of file <a class=\"el\" href=\"a00752_source.html\">stencilTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00824_source.html#l00078\">78</a> of file <a class=\"el\" href=\"a00824_source.html\">stencilTableFactory.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li>opensubdiv/far/<a class=\"el\" href=\"a00752_source.html\">stencilTableFactory.h</a></li>\n+<li>opensubdiv/far/<a class=\"el\" href=\"a00824_source.html\">stencilTableFactory.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00908.html\">Far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01045.html\">StencilTableFactoryReal</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01085.html\">Options</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01089.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01089.html", "unified_diff": "@@ -95,15 +95,15 @@\n <a href=\"#pub-methods\">Public Member Functions</a> &#124;\n <a href=\"#pub-attribs\">Public Attributes</a> &#124;\n <a href=\"a01086.html\">List of all members</a>  </div>\n   <div class=\"headertitle\"><div class=\"title\">LimitStencilTableFactoryReal&lt; REAL &gt;::Options Struct Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00752_source.html\">stencilTableFactory.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00824_source.html\">stencilTableFactory.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\n Public Member Functions</h2></td></tr>\n <tr class=\"memitem:a28d39a844c3a37ab61d32ab7c6352f09\" id=\"r_a28d39a844c3a37ab61d32ab7c6352f09\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01089.html#a28d39a844c3a37ab61d32ab7c6352f09\">Options</a> ()</td></tr>\n <tr class=\"separator:a28d39a844c3a37ab61d32ab7c6352f09\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\n@@ -120,15 +120,15 @@\n <tr class=\"memitem:a7cd8273eef086a749ce3d40063fb4a28\" id=\"r_a7cd8273eef086a749ce3d40063fb4a28\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">unsigned int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01089.html#a7cd8273eef086a749ce3d40063fb4a28\">fvarChannel</a></td></tr>\n <tr class=\"memdesc:a7cd8273eef086a749ce3d40063fb4a28\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">face-varying channel to use  <br /></td></tr>\n <tr class=\"separator:a7cd8273eef086a749ce3d40063fb4a28\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><div class=\"compoundTemplParams\">template&lt;typename REAL&gt;<br />\n struct OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableFactoryReal&lt; REAL &gt;::Options</div>\n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00219\">219</a> of file <a class=\"el\" href=\"a00752_source.html\">stencilTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00824_source.html#l00219\">219</a> of file <a class=\"el\" href=\"a00824_source.html\">stencilTableFactory.h</a>.</p>\n </div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"a28d39a844c3a37ab61d32ab7c6352f09\" name=\"a28d39a844c3a37ab61d32ab7c6352f09\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a28d39a844c3a37ab61d32ab7c6352f09\">&#9670;&#160;</a></span>Options()</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n <div class=\"memtemplate\">\n@@ -147,15 +147,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00221\">221</a> of file <a class=\"el\" href=\"a00752_source.html\">stencilTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00824_source.html#l00221\">221</a> of file <a class=\"el\" href=\"a00824_source.html\">stencilTableFactory.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Member Data Documentation</h2>\n <a id=\"a7cd8273eef086a749ce3d40063fb4a28\" name=\"a7cd8273eef086a749ce3d40063fb4a28\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7cd8273eef086a749ce3d40063fb4a28\">&#9670;&#160;</a></span>fvarChannel</h2>\n \n@@ -168,15 +168,15 @@\n           <td class=\"memname\">unsigned int fvarChannel</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n <p>face-varying channel to use </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00229\">229</a> of file <a class=\"el\" href=\"a00752_source.html\">stencilTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00824_source.html#l00229\">229</a> of file <a class=\"el\" href=\"a00824_source.html\">stencilTableFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"af252d435ac2f27d8f77717cd529a2339\" name=\"af252d435ac2f27d8f77717cd529a2339\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af252d435ac2f27d8f77717cd529a2339\">&#9670;&#160;</a></span>generate1stDerivatives</h2>\n \n <div class=\"memitem\">\n@@ -188,15 +188,15 @@\n           <td class=\"memname\">unsigned int generate1stDerivatives</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n <p>Generate weights for 1st derivatives. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00227\">227</a> of file <a class=\"el\" href=\"a00752_source.html\">stencilTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00824_source.html#l00227\">227</a> of file <a class=\"el\" href=\"a00824_source.html\">stencilTableFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"adb29a270ae6d25f74593a6c23488adeb\" name=\"adb29a270ae6d25f74593a6c23488adeb\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adb29a270ae6d25f74593a6c23488adeb\">&#9670;&#160;</a></span>generate2ndDerivatives</h2>\n \n <div class=\"memitem\">\n@@ -208,15 +208,15 @@\n           <td class=\"memname\">unsigned int generate2ndDerivatives</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n <p>Generate weights for 2nd derivatives. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00228\">228</a> of file <a class=\"el\" href=\"a00752_source.html\">stencilTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00824_source.html#l00228\">228</a> of file <a class=\"el\" href=\"a00824_source.html\">stencilTableFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ab7c383a49298cf060574242fe679378f\" name=\"ab7c383a49298cf060574242fe679378f\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab7c383a49298cf060574242fe679378f\">&#9670;&#160;</a></span>interpolationMode</h2>\n \n <div class=\"memitem\">\n@@ -228,20 +228,20 @@\n           <td class=\"memname\">unsigned int interpolationMode</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n <p>interpolation mode </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00226\">226</a> of file <a class=\"el\" href=\"a00752_source.html\">stencilTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00824_source.html#l00226\">226</a> of file <a class=\"el\" href=\"a00824_source.html\">stencilTableFactory.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li>opensubdiv/far/<a class=\"el\" href=\"a00752_source.html\">stencilTableFactory.h</a></li>\n+<li>opensubdiv/far/<a class=\"el\" href=\"a00824_source.html\">stencilTableFactory.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00908.html\">Far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01049.html\">LimitStencilTableFactoryReal</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01089.html\">Options</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01093.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01093.html", "unified_diff": "@@ -98,15 +98,15 @@\n   <div class=\"headertitle\"><div class=\"title\">LimitStencilTableFactoryReal&lt; REAL &gt;::LocationArray Struct Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Descriptor for limit surface locations.  \n  <a href=\"a01093.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00752_source.html\">stencilTableFactory.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00824_source.html\">stencilTableFactory.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\n Public Member Functions</h2></td></tr>\n <tr class=\"memitem:a23ed026fe98bd57164dbb601791f51fc\" id=\"r_a23ed026fe98bd57164dbb601791f51fc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01093.html#a23ed026fe98bd57164dbb601791f51fc\">LocationArray</a> ()</td></tr>\n <tr class=\"separator:a23ed026fe98bd57164dbb601791f51fc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\n@@ -124,15 +124,15 @@\n <tr class=\"memdesc:a1e42f8f49a2deb57d4c2f0005c4ec020\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">array of v coordinates  <br /></td></tr>\n <tr class=\"separator:a1e42f8f49a2deb57d4c2f0005c4ec020\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><div class=\"compoundTemplParams\">template&lt;typename REAL&gt;<br />\n struct OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableFactoryReal&lt; REAL &gt;::LocationArray</div><p>Descriptor for limit surface locations. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00233\">233</a> of file <a class=\"el\" href=\"a00752_source.html\">stencilTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00824_source.html#l00233\">233</a> of file <a class=\"el\" href=\"a00824_source.html\">stencilTableFactory.h</a>.</p>\n </div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"a23ed026fe98bd57164dbb601791f51fc\" name=\"a23ed026fe98bd57164dbb601791f51fc\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a23ed026fe98bd57164dbb601791f51fc\">&#9670;&#160;</a></span>LocationArray()</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n <div class=\"memtemplate\">\n@@ -151,15 +151,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00235\">235</a> of file <a class=\"el\" href=\"a00752_source.html\">stencilTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00824_source.html#l00235\">235</a> of file <a class=\"el\" href=\"a00824_source.html\">stencilTableFactory.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Member Data Documentation</h2>\n <a id=\"ab9e5cd822f289b54101de5a704d68ac5\" name=\"ab9e5cd822f289b54101de5a704d68ac5\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab9e5cd822f289b54101de5a704d68ac5\">&#9670;&#160;</a></span>numLocations</h2>\n \n@@ -172,15 +172,15 @@\n           <td class=\"memname\">int numLocations</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n <p>number of (u,v) coordinates in the array </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00238\">238</a> of file <a class=\"el\" href=\"a00752_source.html\">stencilTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00824_source.html#l00238\">238</a> of file <a class=\"el\" href=\"a00824_source.html\">stencilTableFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"afb60a8380cb9df186de7183b32bd84e2\" name=\"afb60a8380cb9df186de7183b32bd84e2\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afb60a8380cb9df186de7183b32bd84e2\">&#9670;&#160;</a></span>ptexIdx</h2>\n \n <div class=\"memitem\">\n@@ -192,15 +192,15 @@\n           <td class=\"memname\">int ptexIdx</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n <p>ptex face index </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00237\">237</a> of file <a class=\"el\" href=\"a00752_source.html\">stencilTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00824_source.html#l00237\">237</a> of file <a class=\"el\" href=\"a00824_source.html\">stencilTableFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a22a5e18d1aeafd28cdd38b543c50c688\" name=\"a22a5e18d1aeafd28cdd38b543c50c688\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a22a5e18d1aeafd28cdd38b543c50c688\">&#9670;&#160;</a></span>s</h2>\n \n <div class=\"memitem\">\n@@ -212,15 +212,15 @@\n           <td class=\"memname\">REAL const* s</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n <p>array of u coordinates </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00240\">240</a> of file <a class=\"el\" href=\"a00752_source.html\">stencilTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00824_source.html#l00240\">240</a> of file <a class=\"el\" href=\"a00824_source.html\">stencilTableFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a1e42f8f49a2deb57d4c2f0005c4ec020\" name=\"a1e42f8f49a2deb57d4c2f0005c4ec020\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1e42f8f49a2deb57d4c2f0005c4ec020\">&#9670;&#160;</a></span>t</h2>\n \n <div class=\"memitem\">\n@@ -232,20 +232,20 @@\n           <td class=\"memname\">REAL const * t</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n <p>array of v coordinates </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00241\">241</a> of file <a class=\"el\" href=\"a00752_source.html\">stencilTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00824_source.html#l00241\">241</a> of file <a class=\"el\" href=\"a00824_source.html\">stencilTableFactory.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li>opensubdiv/far/<a class=\"el\" href=\"a00752_source.html\">stencilTableFactory.h</a></li>\n+<li>opensubdiv/far/<a class=\"el\" href=\"a00824_source.html\">stencilTableFactory.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00908.html\">Far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01049.html\">LimitStencilTableFactoryReal</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01093.html\">LocationArray</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01097.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01097.html", "unified_diff": "@@ -97,15 +97,15 @@\n   <div class=\"headertitle\"><div class=\"title\">StencilTableFactory Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p><a class=\"el\" href=\"a01057.html\" title=\"Vertex stencil class wrapping the template for compatibility.\">Stencil</a> table factory class wrapping the template for compatibility.  \n  <a href=\"a01097.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00752_source.html\">stencilTableFactory.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00824_source.html\">stencilTableFactory.h</a>&gt;</code></p>\n <div class=\"dynheader\">\n Inheritance diagram for StencilTableFactory:</div>\n <div class=\"dyncontent\">\n  <div class=\"center\">\n   <img src=\"a01097.png\" usemap=\"#StencilTableFactory_map\" alt=\"\"/>\n   <map id=\"StencilTableFactory_map\" name=\"StencilTableFactory_map\">\n <area href=\"a01045.html\" alt=\"StencilTableFactoryReal&lt; float &gt;\" shape=\"rect\" coords=\"0,0,198,24\"/>\n@@ -146,15 +146,15 @@\n <tr class=\"inherit_header pub_types_a01045\"><td colspan=\"2\" onclick=\"javascript:toggleInherit('pub_types_a01045')\"><img src=\"closed.png\" alt=\"-\"/>&#160;Public Types inherited from <a class=\"el\" href=\"a01045.html\">StencilTableFactoryReal&lt; float &gt;</a></td></tr>\n <tr class=\"memitem:a46c8a310cf4c094f8c80e1cb8dc1f911 inherit pub_types_a01045\" id=\"r_a46c8a310cf4c094f8c80e1cb8dc1f911\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01045.html#a46c8a310cf4c094f8c80e1cb8dc1f911\">Mode</a> </td></tr>\n <tr class=\"separator:a46c8a310cf4c094f8c80e1cb8dc1f911 inherit pub_types_a01045\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p><a class=\"el\" href=\"a01057.html\" title=\"Vertex stencil class wrapping the template for compatibility.\">Stencil</a> table factory class wrapping the template for compatibility. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00287\">287</a> of file <a class=\"el\" href=\"a00752_source.html\">stencilTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00824_source.html#l00287\">287</a> of file <a class=\"el\" href=\"a00824_source.html\">stencilTableFactory.h</a>.</p>\n </div><h2 class=\"groupheader\">Member Function Documentation</h2>\n <a id=\"ab7374d716e8637a5ffbd12029713ec0f\" name=\"ab7374d716e8637a5ffbd12029713ec0f\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab7374d716e8637a5ffbd12029713ec0f\">&#9670;&#160;</a></span>AppendLocalPointStencilTable()</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n <table class=\"mlabels\">\n@@ -194,15 +194,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00308\">308</a> of file <a class=\"el\" href=\"a00752_source.html\">stencilTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00824_source.html#l00308\">308</a> of file <a class=\"el\" href=\"a00824_source.html\">stencilTableFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aa8beed46ad3a5f5f34241b9d21907f84\" name=\"aa8beed46ad3a5f5f34241b9d21907f84\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa8beed46ad3a5f5f34241b9d21907f84\">&#9670;&#160;</a></span>AppendLocalPointStencilTableFaceVarying()</h2>\n \n <div class=\"memitem\">\n@@ -250,15 +250,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00334\">334</a> of file <a class=\"el\" href=\"a00752_source.html\">stencilTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00824_source.html#l00334\">334</a> of file <a class=\"el\" href=\"a00824_source.html\">stencilTableFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a51e4075d73757537a600b85c8f3d2cfa\" name=\"a51e4075d73757537a600b85c8f3d2cfa\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a51e4075d73757537a600b85c8f3d2cfa\">&#9670;&#160;</a></span>AppendLocalPointStencilTableVarying()</h2>\n \n <div class=\"memitem\">\n@@ -300,15 +300,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00321\">321</a> of file <a class=\"el\" href=\"a00752_source.html\">stencilTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00824_source.html#l00321\">321</a> of file <a class=\"el\" href=\"a00824_source.html\">stencilTableFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ac5c331f10fb4518358660a5538fac897\" name=\"ac5c331f10fb4518358660a5538fac897\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac5c331f10fb4518358660a5538fac897\">&#9670;&#160;</a></span>Create() <span class=\"overload\">[1/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -338,15 +338,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00300\">300</a> of file <a class=\"el\" href=\"a00752_source.html\">stencilTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00824_source.html#l00300\">300</a> of file <a class=\"el\" href=\"a00824_source.html\">stencilTableFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a667e11d1b8502dd1215608af93ada08c\" name=\"a667e11d1b8502dd1215608af93ada08c\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a667e11d1b8502dd1215608af93ada08c\">&#9670;&#160;</a></span>Create() <span class=\"overload\">[2/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -376,20 +376,20 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00293\">293</a> of file <a class=\"el\" href=\"a00752_source.html\">stencilTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00824_source.html#l00293\">293</a> of file <a class=\"el\" href=\"a00824_source.html\">stencilTableFactory.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/far/<a class=\"el\" href=\"a00752_source.html\">stencilTableFactory.h</a></li>\n+<li>opensubdiv/far/<a class=\"el\" href=\"a00824_source.html\">stencilTableFactory.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00908.html\">Far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01097.html\">StencilTableFactory</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01101.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01101.html", "unified_diff": "@@ -97,15 +97,15 @@\n   <div class=\"headertitle\"><div class=\"title\">LimitStencilTableFactory Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p><a class=\"el\" href=\"a01057.html\" title=\"Vertex stencil class wrapping the template for compatibility.\">Stencil</a> table factory class wrapping the template for compatibility.  \n  <a href=\"a01101.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00752_source.html\">stencilTableFactory.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00824_source.html\">stencilTableFactory.h</a>&gt;</code></p>\n <div class=\"dynheader\">\n Inheritance diagram for LimitStencilTableFactory:</div>\n <div class=\"dyncontent\">\n  <div class=\"center\">\n   <img src=\"a01101.png\" usemap=\"#LimitStencilTableFactory_map\" alt=\"\"/>\n   <map id=\"LimitStencilTableFactory_map\" name=\"LimitStencilTableFactory_map\">\n <area href=\"a01049.html\" alt=\"LimitStencilTableFactoryReal&lt; float &gt;\" shape=\"rect\" coords=\"0,0,223,24\"/>\n@@ -128,15 +128,15 @@\n <tr class=\"separator:a46c8a310cf4c094f8c80e1cb8dc1f911 inherit pub_types_a01049\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a940880e2d35dea72f52db5bcdc9c94b7 inherit pub_types_a01049\" id=\"r_a940880e2d35dea72f52db5bcdc9c94b7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef std::vector&lt; LocationArray &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01049.html#a940880e2d35dea72f52db5bcdc9c94b7\">LocationArrayVec</a></td></tr>\n <tr class=\"separator:a940880e2d35dea72f52db5bcdc9c94b7 inherit pub_types_a01049\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p><a class=\"el\" href=\"a01057.html\" title=\"Vertex stencil class wrapping the template for compatibility.\">Stencil</a> table factory class wrapping the template for compatibility. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00354\">354</a> of file <a class=\"el\" href=\"a00752_source.html\">stencilTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00824_source.html#l00354\">354</a> of file <a class=\"el\" href=\"a00824_source.html\">stencilTableFactory.h</a>.</p>\n </div><h2 class=\"groupheader\">Member Function Documentation</h2>\n <a id=\"a1a5ba2b86bac859c158ec1c8141e29a7\" name=\"a1a5ba2b86bac859c158ec1c8141e29a7\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1a5ba2b86bac859c158ec1c8141e29a7\">&#9670;&#160;</a></span>Create()</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n <table class=\"mlabels\">\n@@ -182,20 +182,20 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00360\">360</a> of file <a class=\"el\" href=\"a00752_source.html\">stencilTableFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00824_source.html#l00360\">360</a> of file <a class=\"el\" href=\"a00824_source.html\">stencilTableFactory.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/far/<a class=\"el\" href=\"a00752_source.html\">stencilTableFactory.h</a></li>\n+<li>opensubdiv/far/<a class=\"el\" href=\"a00824_source.html\">stencilTableFactory.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00908.html\">Far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01101.html\">LimitStencilTableFactory</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01105.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01105.html", "unified_diff": "@@ -99,15 +99,15 @@\n   <div class=\"headertitle\"><div class=\"title\">TopologyDescriptor Struct Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>A simple reference to raw topology data for use with <a class=\"el\" href=\"a01117.html\" title=\"Factory for constructing TopologyRefiners from specific mesh classes.\">TopologyRefinerFactory</a>.  \n  <a href=\"a01105.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00785_source.html\">topologyDescriptor.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00845_source.html\">topologyDescriptor.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n <tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01109.html\">FVarChannel</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\n@@ -148,15 +148,15 @@\n <tr class=\"memitem:a222697ec045f92879ae194eb2d92b526\" id=\"r_a222697ec045f92879ae194eb2d92b526\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"a01109.html\">FVarChannel</a> const  *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01105.html#a222697ec045f92879ae194eb2d92b526\">fvarChannels</a></td></tr>\n <tr class=\"separator:a222697ec045f92879ae194eb2d92b526\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p>A simple reference to raw topology data for use with <a class=\"el\" href=\"a01117.html\" title=\"Factory for constructing TopologyRefiners from specific mesh classes.\">TopologyRefinerFactory</a>. </p>\n <p><a class=\"el\" href=\"a01105.html\" title=\"A simple reference to raw topology data for use with TopologyRefinerFactory.\">TopologyDescriptor</a> is a simple struct containing references to raw topology data used to construct a <a class=\"el\" href=\"a01121.html\" title=\"Stores topology data for a specified set of refinement options.\">TopologyRefiner</a>. It is not a requirement but a convenience for use with <a class=\"el\" href=\"a01117.html\" title=\"Factory for constructing TopologyRefiners from specific mesh classes.\">TopologyRefinerFactory</a> when mesh topology is not available in an existing mesh data structure. It should be functionally complete and simple to use, but for more demanding situations, writing a custom Factory is usually warranted. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00785_source.html#l00049\">49</a> of file <a class=\"el\" href=\"a00785_source.html\">topologyDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00845_source.html#l00049\">49</a> of file <a class=\"el\" href=\"a00845_source.html\">topologyDescriptor.h</a>.</p>\n </div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"a8209f1b69b0162ee2e7065d91088113d\" name=\"a8209f1b69b0162ee2e7065d91088113d\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8209f1b69b0162ee2e7065d91088113d\">&#9670;&#160;</a></span>TopologyDescriptor()</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n       <table class=\"memname\">\n@@ -180,15 +180,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\"><a class=\"el\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> const* cornerVertexIndices</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00785_source.html#l00062\">62</a> of file <a class=\"el\" href=\"a00785_source.html\">topologyDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00845_source.html#l00062\">62</a> of file <a class=\"el\" href=\"a00845_source.html\">topologyDescriptor.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a6d938f6b0a9ff0fa377ef675aa2c7fda\" name=\"a6d938f6b0a9ff0fa377ef675aa2c7fda\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6d938f6b0a9ff0fa377ef675aa2c7fda\">&#9670;&#160;</a></span>cornerWeights</h2>\n \n <div class=\"memitem\">\n@@ -196,15 +196,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">float const* cornerWeights</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00785_source.html#l00063\">63</a> of file <a class=\"el\" href=\"a00785_source.html\">topologyDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00845_source.html#l00063\">63</a> of file <a class=\"el\" href=\"a00845_source.html\">topologyDescriptor.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a411a2a927b0270c9e4753dc219763ba5\" name=\"a411a2a927b0270c9e4753dc219763ba5\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a411a2a927b0270c9e4753dc219763ba5\">&#9670;&#160;</a></span>creaseVertexIndexPairs</h2>\n \n <div class=\"memitem\">\n@@ -212,15 +212,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\"><a class=\"el\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> const* creaseVertexIndexPairs</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00785_source.html#l00058\">58</a> of file <a class=\"el\" href=\"a00785_source.html\">topologyDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00845_source.html#l00058\">58</a> of file <a class=\"el\" href=\"a00845_source.html\">topologyDescriptor.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a8cd977015d3ffffc1146c5a4e17d65e0\" name=\"a8cd977015d3ffffc1146c5a4e17d65e0\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8cd977015d3ffffc1146c5a4e17d65e0\">&#9670;&#160;</a></span>creaseWeights</h2>\n \n <div class=\"memitem\">\n@@ -228,15 +228,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">float const* creaseWeights</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00785_source.html#l00059\">59</a> of file <a class=\"el\" href=\"a00785_source.html\">topologyDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00845_source.html#l00059\">59</a> of file <a class=\"el\" href=\"a00845_source.html\">topologyDescriptor.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a222697ec045f92879ae194eb2d92b526\" name=\"a222697ec045f92879ae194eb2d92b526\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a222697ec045f92879ae194eb2d92b526\">&#9670;&#160;</a></span>fvarChannels</h2>\n \n <div class=\"memitem\">\n@@ -244,15 +244,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\"><a class=\"el\" href=\"a01109.html\">FVarChannel</a> const* fvarChannels</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00785_source.html#l00082\">82</a> of file <a class=\"el\" href=\"a00785_source.html\">topologyDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00845_source.html#l00082\">82</a> of file <a class=\"el\" href=\"a00845_source.html\">topologyDescriptor.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a4fcd8e9a636d89045d364607f2b035a1\" name=\"a4fcd8e9a636d89045d364607f2b035a1\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4fcd8e9a636d89045d364607f2b035a1\">&#9670;&#160;</a></span>holeIndices</h2>\n \n <div class=\"memitem\">\n@@ -260,15 +260,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\"><a class=\"el\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> const* holeIndices</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00785_source.html#l00066\">66</a> of file <a class=\"el\" href=\"a00785_source.html\">topologyDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00845_source.html#l00066\">66</a> of file <a class=\"el\" href=\"a00845_source.html\">topologyDescriptor.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a75fa7c3542be9d51069674ed3f9d078c\" name=\"a75fa7c3542be9d51069674ed3f9d078c\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a75fa7c3542be9d51069674ed3f9d078c\">&#9670;&#160;</a></span>isLeftHanded</h2>\n \n <div class=\"memitem\">\n@@ -276,15 +276,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">bool isLeftHanded</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00785_source.html#l00068\">68</a> of file <a class=\"el\" href=\"a00785_source.html\">topologyDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00845_source.html#l00068\">68</a> of file <a class=\"el\" href=\"a00845_source.html\">topologyDescriptor.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a5ea0fa49c8b73deae98be1cdf67a48dd\" name=\"a5ea0fa49c8b73deae98be1cdf67a48dd\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5ea0fa49c8b73deae98be1cdf67a48dd\">&#9670;&#160;</a></span>numCorners</h2>\n \n <div class=\"memitem\">\n@@ -292,15 +292,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">int numCorners</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00785_source.html#l00061\">61</a> of file <a class=\"el\" href=\"a00785_source.html\">topologyDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00845_source.html#l00061\">61</a> of file <a class=\"el\" href=\"a00845_source.html\">topologyDescriptor.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ab8975c25a0f7d3a9f1fca83e267bc21e\" name=\"ab8975c25a0f7d3a9f1fca83e267bc21e\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab8975c25a0f7d3a9f1fca83e267bc21e\">&#9670;&#160;</a></span>numCreases</h2>\n \n <div class=\"memitem\">\n@@ -308,15 +308,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">int numCreases</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00785_source.html#l00057\">57</a> of file <a class=\"el\" href=\"a00785_source.html\">topologyDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00845_source.html#l00057\">57</a> of file <a class=\"el\" href=\"a00845_source.html\">topologyDescriptor.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a523d3dc0299fc8921db1c26cc908f084\" name=\"a523d3dc0299fc8921db1c26cc908f084\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a523d3dc0299fc8921db1c26cc908f084\">&#9670;&#160;</a></span>numFaces</h2>\n \n <div class=\"memitem\">\n@@ -324,15 +324,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">int numFaces</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00785_source.html#l00052\">52</a> of file <a class=\"el\" href=\"a00785_source.html\">topologyDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00845_source.html#l00052\">52</a> of file <a class=\"el\" href=\"a00845_source.html\">topologyDescriptor.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ad17511fd9b0cea1b15b6bc31c0fc3e80\" name=\"ad17511fd9b0cea1b15b6bc31c0fc3e80\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad17511fd9b0cea1b15b6bc31c0fc3e80\">&#9670;&#160;</a></span>numFVarChannels</h2>\n \n <div class=\"memitem\">\n@@ -340,15 +340,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">int numFVarChannels</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00785_source.html#l00081\">81</a> of file <a class=\"el\" href=\"a00785_source.html\">topologyDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00845_source.html#l00081\">81</a> of file <a class=\"el\" href=\"a00845_source.html\">topologyDescriptor.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aba3adf422acc0fc845afeba3a5df2b8f\" name=\"aba3adf422acc0fc845afeba3a5df2b8f\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aba3adf422acc0fc845afeba3a5df2b8f\">&#9670;&#160;</a></span>numHoles</h2>\n \n <div class=\"memitem\">\n@@ -356,15 +356,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">int numHoles</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00785_source.html#l00065\">65</a> of file <a class=\"el\" href=\"a00785_source.html\">topologyDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00845_source.html#l00065\">65</a> of file <a class=\"el\" href=\"a00845_source.html\">topologyDescriptor.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a29cac0aff7e6d15e55e9a8285799fe87\" name=\"a29cac0aff7e6d15e55e9a8285799fe87\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a29cac0aff7e6d15e55e9a8285799fe87\">&#9670;&#160;</a></span>numVertices</h2>\n \n <div class=\"memitem\">\n@@ -372,15 +372,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">int numVertices</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00785_source.html#l00051\">51</a> of file <a class=\"el\" href=\"a00785_source.html\">topologyDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00845_source.html#l00051\">51</a> of file <a class=\"el\" href=\"a00845_source.html\">topologyDescriptor.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a79e9d33aa1203818c4b765007d10be63\" name=\"a79e9d33aa1203818c4b765007d10be63\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a79e9d33aa1203818c4b765007d10be63\">&#9670;&#160;</a></span>numVertsPerFace</h2>\n \n <div class=\"memitem\">\n@@ -388,15 +388,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">int const* numVertsPerFace</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00785_source.html#l00054\">54</a> of file <a class=\"el\" href=\"a00785_source.html\">topologyDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00845_source.html#l00054\">54</a> of file <a class=\"el\" href=\"a00845_source.html\">topologyDescriptor.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a3f2274c4d3dd54c4e24144e504972b34\" name=\"a3f2274c4d3dd54c4e24144e504972b34\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3f2274c4d3dd54c4e24144e504972b34\">&#9670;&#160;</a></span>vertIndicesPerFace</h2>\n \n <div class=\"memitem\">\n@@ -404,20 +404,20 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\"><a class=\"el\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> const* vertIndicesPerFace</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00785_source.html#l00055\">55</a> of file <a class=\"el\" href=\"a00785_source.html\">topologyDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00845_source.html#l00055\">55</a> of file <a class=\"el\" href=\"a00845_source.html\">topologyDescriptor.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li>opensubdiv/far/<a class=\"el\" href=\"a00785_source.html\">topologyDescriptor.h</a></li>\n+<li>opensubdiv/far/<a class=\"el\" href=\"a00845_source.html\">topologyDescriptor.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00908.html\">Far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01105.html\">TopologyDescriptor</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01109.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01109.html", "unified_diff": "@@ -95,15 +95,15 @@\n <a href=\"#pub-methods\">Public Member Functions</a> &#124;\n <a href=\"#pub-attribs\">Public Attributes</a> &#124;\n <a href=\"a01106.html\">List of all members</a>  </div>\n   <div class=\"headertitle\"><div class=\"title\">TopologyDescriptor::FVarChannel Struct Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00785_source.html\">topologyDescriptor.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00845_source.html\">topologyDescriptor.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\n Public Member Functions</h2></td></tr>\n <tr class=\"memitem:a029d281df9f5dc8c00b52a35f8e0dfde\" id=\"r_a029d281df9f5dc8c00b52a35f8e0dfde\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01109.html#a029d281df9f5dc8c00b52a35f8e0dfde\">FVarChannel</a> ()</td></tr>\n <tr class=\"separator:a029d281df9f5dc8c00b52a35f8e0dfde\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\n@@ -111,15 +111,15 @@\n <tr class=\"memitem:aa0d5f7bfb1ba01e0cb648ff6fc249437\" id=\"r_aa0d5f7bfb1ba01e0cb648ff6fc249437\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01109.html#aa0d5f7bfb1ba01e0cb648ff6fc249437\">numValues</a></td></tr>\n <tr class=\"separator:aa0d5f7bfb1ba01e0cb648ff6fc249437\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a123fe78d0e97dc72f5dfd9f27f93f699\" id=\"r_a123fe78d0e97dc72f5dfd9f27f93f699\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> const  *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01109.html#a123fe78d0e97dc72f5dfd9f27f93f699\">valueIndices</a></td></tr>\n <tr class=\"separator:a123fe78d0e97dc72f5dfd9f27f93f699\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\">\n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00785_source.html#l00073\">73</a> of file <a class=\"el\" href=\"a00785_source.html\">topologyDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00845_source.html#l00073\">73</a> of file <a class=\"el\" href=\"a00845_source.html\">topologyDescriptor.h</a>.</p>\n </div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"a029d281df9f5dc8c00b52a35f8e0dfde\" name=\"a029d281df9f5dc8c00b52a35f8e0dfde\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a029d281df9f5dc8c00b52a35f8e0dfde\">&#9670;&#160;</a></span>FVarChannel()</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n <table class=\"mlabels\">\n@@ -136,15 +136,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00785_source.html#l00078\">78</a> of file <a class=\"el\" href=\"a00785_source.html\">topologyDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00845_source.html#l00078\">78</a> of file <a class=\"el\" href=\"a00845_source.html\">topologyDescriptor.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Member Data Documentation</h2>\n <a id=\"aa0d5f7bfb1ba01e0cb648ff6fc249437\" name=\"aa0d5f7bfb1ba01e0cb648ff6fc249437\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa0d5f7bfb1ba01e0cb648ff6fc249437\">&#9670;&#160;</a></span>numValues</h2>\n \n@@ -153,15 +153,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">int numValues</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00785_source.html#l00075\">75</a> of file <a class=\"el\" href=\"a00785_source.html\">topologyDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00845_source.html#l00075\">75</a> of file <a class=\"el\" href=\"a00845_source.html\">topologyDescriptor.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a123fe78d0e97dc72f5dfd9f27f93f699\" name=\"a123fe78d0e97dc72f5dfd9f27f93f699\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a123fe78d0e97dc72f5dfd9f27f93f699\">&#9670;&#160;</a></span>valueIndices</h2>\n \n <div class=\"memitem\">\n@@ -169,20 +169,20 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\"><a class=\"el\" href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">Index</a> const* valueIndices</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00785_source.html#l00076\">76</a> of file <a class=\"el\" href=\"a00785_source.html\">topologyDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00845_source.html#l00076\">76</a> of file <a class=\"el\" href=\"a00845_source.html\">topologyDescriptor.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li>opensubdiv/far/<a class=\"el\" href=\"a00785_source.html\">topologyDescriptor.h</a></li>\n+<li>opensubdiv/far/<a class=\"el\" href=\"a00845_source.html\">topologyDescriptor.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00908.html\">Far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01105.html\">TopologyDescriptor</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01109.html\">FVarChannel</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01113.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01113.html", "unified_diff": "@@ -96,15 +96,15 @@\n   <div class=\"headertitle\"><div class=\"title\">TopologyLevel Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>An interface for accessing data in a specific level of a refined topology hierarchy.  \n  <a href=\"a01113.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00782_source.html\">topologyLevel.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00821_source.html\">topologyLevel.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\n Public Member Functions</h2></td></tr>\n <tr><td colspan=\"2\"><div class=\"groupHeader\">Methods to inspect the overall inventory of components:</div></td></tr>\n <tr><td colspan=\"2\"><div class=\"groupText\"><p>All three main component types are indexed locally within each level. For some topological relationships &ndash; notably face-vertices, which is often the only relationship of interest &ndash; the total number of entries is also made available. </p>\n </div></td></tr>\n <tr class=\"memitem:aaf4a32b8a414eff77000c584c2015cb7\" id=\"r_aaf4a32b8a414eff77000c584c2015cb7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01113.html#aaf4a32b8a414eff77000c584c2015cb7\">GetNumVertices</a> () const</td></tr>\n@@ -258,15 +258,15 @@\n <tr class=\"memitem:ac5cb1977407971568a00663f6badb998\" id=\"r_ac5cb1977407971568a00663f6badb998\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01113.html#ac5cb1977407971568a00663f6badb998\">~TopologyLevel</a> ()</td></tr>\n <tr class=\"separator:ac5cb1977407971568a00663f6badb998\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p>An interface for accessing data in a specific level of a refined topology hierarchy. </p>\n <p><a class=\"el\" href=\"a01113.html\" title=\"An interface for accessing data in a specific level of a refined topology hierarchy.\">TopologyLevel</a> provides an interface to data in a specific level of a topology hierarchy. Instances of <a class=\"el\" href=\"a01113.html\" title=\"An interface for accessing data in a specific level of a refined topology hierarchy.\">TopologyLevel</a> are created and owned by a <a class=\"el\" href=\"a01121.html\" title=\"Stores topology data for a specified set of refinement options.\">TopologyRefiner</a>, which will return const-references to them. Such references are only valid during the lifetime of the <a class=\"el\" href=\"a01121.html\" title=\"Stores topology data for a specified set of refinement options.\">TopologyRefiner</a> that created and returned them, and only for a given refinement, i.e. if the <a class=\"el\" href=\"a01121.html\" title=\"Stores topology data for a specified set of refinement options.\">TopologyRefiner</a> is re-refined, any references to TopoologyLevels are invalidated. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l00049\">49</a> of file <a class=\"el\" href=\"a00782_source.html\">topologyLevel.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00821_source.html#l00049\">49</a> of file <a class=\"el\" href=\"a00821_source.html\">topologyLevel.h</a>.</p>\n </div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"a03a8183081b34983ade155e3636ba835\" name=\"a03a8183081b34983ade155e3636ba835\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a03a8183081b34983ade155e3636ba835\">&#9670;&#160;</a></span>TopologyLevel()</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n <table class=\"mlabels\">\n@@ -283,15 +283,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l00300\">300</a> of file <a class=\"el\" href=\"a00782_source.html\">topologyLevel.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00821_source.html#l00300\">300</a> of file <a class=\"el\" href=\"a00821_source.html\">topologyLevel.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ac5cb1977407971568a00663f6badb998\" name=\"ac5cb1977407971568a00663f6badb998\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac5cb1977407971568a00663f6badb998\">&#9670;&#160;</a></span>~TopologyLevel()</h2>\n \n <div class=\"memitem\">\n@@ -310,15 +310,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l00301\">301</a> of file <a class=\"el\" href=\"a00782_source.html\">topologyLevel.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00821_source.html#l00301\">301</a> of file <a class=\"el\" href=\"a00821_source.html\">topologyLevel.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Member Function Documentation</h2>\n <a id=\"a3a95c7209a6a7997eb8c28784376be92\" name=\"a3a95c7209a6a7997eb8c28784376be92\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3a95c7209a6a7997eb8c28784376be92\">&#9670;&#160;</a></span>DoesEdgeFVarTopologyMatch()</h2>\n \n@@ -351,15 +351,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return if face-varying topology across the edge only matches. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l00247\">247</a> of file <a class=\"el\" href=\"a00782_source.html\">topologyLevel.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00821_source.html#l00247\">247</a> of file <a class=\"el\" href=\"a00821_source.html\">topologyLevel.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a1f37d5ebb1aca5f512d914d5810031a3\" name=\"a1f37d5ebb1aca5f512d914d5810031a3\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1f37d5ebb1aca5f512d914d5810031a3\">&#9670;&#160;</a></span>DoesFaceFVarTopologyMatch()</h2>\n \n <div class=\"memitem\">\n@@ -391,15 +391,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return if face-varying topology around a face matches. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l00252\">252</a> of file <a class=\"el\" href=\"a00782_source.html\">topologyLevel.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00821_source.html#l00252\">252</a> of file <a class=\"el\" href=\"a00821_source.html\">topologyLevel.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a76fadd35f9ed2954cd78926d77af53b5\" name=\"a76fadd35f9ed2954cd78926d77af53b5\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a76fadd35f9ed2954cd78926d77af53b5\">&#9670;&#160;</a></span>DoesVertexFVarTopologyMatch()</h2>\n \n <div class=\"memitem\">\n@@ -431,15 +431,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return if face-varying topology around a vertex matches. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l00242\">242</a> of file <a class=\"el\" href=\"a00782_source.html\">topologyLevel.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00821_source.html#l00242\">242</a> of file <a class=\"el\" href=\"a00821_source.html\">topologyLevel.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a9197cce11b83fae9f8ed3ef5ac79c2ed\" name=\"a9197cce11b83fae9f8ed3ef5ac79c2ed\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9197cce11b83fae9f8ed3ef5ac79c2ed\">&#9670;&#160;</a></span>FindEdge()</h2>\n \n <div class=\"memitem\">\n@@ -471,15 +471,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Identify the edge matching the given vertex pair. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l00120\">120</a> of file <a class=\"el\" href=\"a00782_source.html\">topologyLevel.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00821_source.html#l00120\">120</a> of file <a class=\"el\" href=\"a00821_source.html\">topologyLevel.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a7718004bcd0c2ca1c75690bce636b288\" name=\"a7718004bcd0c2ca1c75690bce636b288\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7718004bcd0c2ca1c75690bce636b288\">&#9670;&#160;</a></span>GetEdgeChildEdges()</h2>\n \n <div class=\"memitem\">\n@@ -501,15 +501,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Access the child edges (in the next level) of a given edge. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l00268\">268</a> of file <a class=\"el\" href=\"a00782_source.html\">topologyLevel.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00821_source.html#l00268\">268</a> of file <a class=\"el\" href=\"a00821_source.html\">topologyLevel.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ad93895054c5fe26a9d6693b3148dfe37\" name=\"ad93895054c5fe26a9d6693b3148dfe37\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad93895054c5fe26a9d6693b3148dfe37\">&#9670;&#160;</a></span>GetEdgeChildVertex()</h2>\n \n <div class=\"memitem\">\n@@ -531,15 +531,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return the child vertex (in the next level) of a given edge. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l00274\">274</a> of file <a class=\"el\" href=\"a00782_source.html\">topologyLevel.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00821_source.html#l00274\">274</a> of file <a class=\"el\" href=\"a00821_source.html\">topologyLevel.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a2f1963e1ac953b6ad0e59e26b0715ffd\" name=\"a2f1963e1ac953b6ad0e59e26b0715ffd\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2f1963e1ac953b6ad0e59e26b0715ffd\">&#9670;&#160;</a></span>GetEdgeFaceLocalIndices()</h2>\n \n <div class=\"memitem\">\n@@ -561,15 +561,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Access the local indices of an edge with respect to its incident faces. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l00117\">117</a> of file <a class=\"el\" href=\"a00782_source.html\">topologyLevel.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00821_source.html#l00117\">117</a> of file <a class=\"el\" href=\"a00821_source.html\">topologyLevel.h</a>.</p>\n \n </div>\n </div>\n <a id=\"abb05067bd51857d06a3f8e48c173d2f0\" name=\"abb05067bd51857d06a3f8e48c173d2f0\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abb05067bd51857d06a3f8e48c173d2f0\">&#9670;&#160;</a></span>GetEdgeFaces()</h2>\n \n <div class=\"memitem\">\n@@ -591,15 +591,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Access the faces incident a given edge. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l00102\">102</a> of file <a class=\"el\" href=\"a00782_source.html\">topologyLevel.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00821_source.html#l00102\">102</a> of file <a class=\"el\" href=\"a00821_source.html\">topologyLevel.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a186601737e9346c814c965c5409b2c7d\" name=\"a186601737e9346c814c965c5409b2c7d\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a186601737e9346c814c965c5409b2c7d\">&#9670;&#160;</a></span>GetEdgeSharpness()</h2>\n \n <div class=\"memitem\">\n@@ -621,15 +621,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return the sharpness assigned a given edge. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l00173\">173</a> of file <a class=\"el\" href=\"a00782_source.html\">topologyLevel.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00821_source.html#l00173\">173</a> of file <a class=\"el\" href=\"a00821_source.html\">topologyLevel.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ac31cc6267342297f46af11ea4d90734d\" name=\"ac31cc6267342297f46af11ea4d90734d\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac31cc6267342297f46af11ea4d90734d\">&#9670;&#160;</a></span>GetEdgeVertices()</h2>\n \n <div class=\"memitem\">\n@@ -651,15 +651,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Access the vertices incident a given edge. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l00099\">99</a> of file <a class=\"el\" href=\"a00782_source.html\">topologyLevel.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00821_source.html#l00099\">99</a> of file <a class=\"el\" href=\"a00821_source.html\">topologyLevel.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a34ad525bfe0752e223af5d175b73df4b\" name=\"a34ad525bfe0752e223af5d175b73df4b\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a34ad525bfe0752e223af5d175b73df4b\">&#9670;&#160;</a></span>GetFaceChildEdges()</h2>\n \n <div class=\"memitem\">\n@@ -681,15 +681,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Access the child edges (in the next level) of a given face. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l00265\">265</a> of file <a class=\"el\" href=\"a00782_source.html\">topologyLevel.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00821_source.html#l00265\">265</a> of file <a class=\"el\" href=\"a00821_source.html\">topologyLevel.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a538ff3341a16c352107117885dbfdf51\" name=\"a538ff3341a16c352107117885dbfdf51\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a538ff3341a16c352107117885dbfdf51\">&#9670;&#160;</a></span>GetFaceChildFaces()</h2>\n \n <div class=\"memitem\">\n@@ -711,15 +711,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Access the child faces (in the next level) of a given face. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l00262\">262</a> of file <a class=\"el\" href=\"a00782_source.html\">topologyLevel.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00821_source.html#l00262\">262</a> of file <a class=\"el\" href=\"a00821_source.html\">topologyLevel.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a767b6203c923ebbbd37688e3c9e6cac9\" name=\"a767b6203c923ebbbd37688e3c9e6cac9\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a767b6203c923ebbbd37688e3c9e6cac9\">&#9670;&#160;</a></span>GetFaceChildVertex()</h2>\n \n <div class=\"memitem\">\n@@ -741,15 +741,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return the child vertex (in the next level) of a given face. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l00271\">271</a> of file <a class=\"el\" href=\"a00782_source.html\">topologyLevel.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00821_source.html#l00271\">271</a> of file <a class=\"el\" href=\"a00821_source.html\">topologyLevel.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a96e525f06a05bfcd50166c6cdccbff2f\" name=\"a96e525f06a05bfcd50166c6cdccbff2f\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a96e525f06a05bfcd50166c6cdccbff2f\">&#9670;&#160;</a></span>GetFaceEdges()</h2>\n \n <div class=\"memitem\">\n@@ -771,15 +771,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Access the edges incident a given face. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l00096\">96</a> of file <a class=\"el\" href=\"a00782_source.html\">topologyLevel.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00821_source.html#l00096\">96</a> of file <a class=\"el\" href=\"a00821_source.html\">topologyLevel.h</a>.</p>\n \n </div>\n </div>\n <a id=\"abdcd74fa1bc533f080edf439beddc791\" name=\"abdcd74fa1bc533f080edf439beddc791\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abdcd74fa1bc533f080edf439beddc791\">&#9670;&#160;</a></span>GetFaceFVarValues()</h2>\n \n <div class=\"memitem\">\n@@ -811,15 +811,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Access the face-varying values associated with a particular face. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l00237\">237</a> of file <a class=\"el\" href=\"a00782_source.html\">topologyLevel.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00821_source.html#l00237\">237</a> of file <a class=\"el\" href=\"a00821_source.html\">topologyLevel.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a022517960b10f4541899a2f87cc8de1f\" name=\"a022517960b10f4541899a2f87cc8de1f\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a022517960b10f4541899a2f87cc8de1f\">&#9670;&#160;</a></span>GetFaceParentFace()</h2>\n \n <div class=\"memitem\">\n@@ -841,15 +841,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return the parent face (in the previous level) of a given face. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l00280\">280</a> of file <a class=\"el\" href=\"a00782_source.html\">topologyLevel.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00821_source.html#l00280\">280</a> of file <a class=\"el\" href=\"a00821_source.html\">topologyLevel.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a4b4f2e42c99ed87cb2ff3eb949a1d074\" name=\"a4b4f2e42c99ed87cb2ff3eb949a1d074\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4b4f2e42c99ed87cb2ff3eb949a1d074\">&#9670;&#160;</a></span>GetFaceVertices()</h2>\n \n <div class=\"memitem\">\n@@ -871,15 +871,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Access the vertices incident a given face. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l00093\">93</a> of file <a class=\"el\" href=\"a00782_source.html\">topologyLevel.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00821_source.html#l00093\">93</a> of file <a class=\"el\" href=\"a00821_source.html\">topologyLevel.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a6338eb5f743bf170f76ec5a9764735d6\" name=\"a6338eb5f743bf170f76ec5a9764735d6\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6338eb5f743bf170f76ec5a9764735d6\">&#9670;&#160;</a></span>GetNumEdges()</h2>\n \n <div class=\"memitem\">\n@@ -900,15 +900,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return the number of edges in this level. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l00068\">68</a> of file <a class=\"el\" href=\"a00782_source.html\">topologyLevel.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00821_source.html#l00068\">68</a> of file <a class=\"el\" href=\"a00821_source.html\">topologyLevel.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a9920fb01c4b75c94a953a98008a4baba\" name=\"a9920fb01c4b75c94a953a98008a4baba\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9920fb01c4b75c94a953a98008a4baba\">&#9670;&#160;</a></span>GetNumFaces()</h2>\n \n <div class=\"memitem\">\n@@ -929,15 +929,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return the number of faces in this level. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l00065\">65</a> of file <a class=\"el\" href=\"a00782_source.html\">topologyLevel.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00821_source.html#l00065\">65</a> of file <a class=\"el\" href=\"a00821_source.html\">topologyLevel.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ae4228cb7954118c55af0a77a99333788\" name=\"ae4228cb7954118c55af0a77a99333788\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae4228cb7954118c55af0a77a99333788\">&#9670;&#160;</a></span>GetNumFaceVertices()</h2>\n \n <div class=\"memitem\">\n@@ -958,15 +958,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return the total number of face-vertices, i.e. the sum of all vertices for all faces. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l00071\">71</a> of file <a class=\"el\" href=\"a00782_source.html\">topologyLevel.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00821_source.html#l00071\">71</a> of file <a class=\"el\" href=\"a00821_source.html\">topologyLevel.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aa9be824a572029f3ec1e0c0d6cfecd77\" name=\"aa9be824a572029f3ec1e0c0d6cfecd77\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa9be824a572029f3ec1e0c0d6cfecd77\">&#9670;&#160;</a></span>GetNumFVarChannels()</h2>\n \n <div class=\"memitem\">\n@@ -987,15 +987,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return the number of face-varying channels (should be same for all levels) </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l00230\">230</a> of file <a class=\"el\" href=\"a00782_source.html\">topologyLevel.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00821_source.html#l00230\">230</a> of file <a class=\"el\" href=\"a00821_source.html\">topologyLevel.h</a>.</p>\n \n </div>\n </div>\n <a id=\"afa663a1bb972ec104c8b842d9dc967a5\" name=\"afa663a1bb972ec104c8b842d9dc967a5\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afa663a1bb972ec104c8b842d9dc967a5\">&#9670;&#160;</a></span>GetNumFVarValues()</h2>\n \n <div class=\"memitem\">\n@@ -1017,15 +1017,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return the total number of face-varying values in a particular channel (the upper bound of a face-varying value index) </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l00234\">234</a> of file <a class=\"el\" href=\"a00782_source.html\">topologyLevel.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00821_source.html#l00234\">234</a> of file <a class=\"el\" href=\"a00821_source.html\">topologyLevel.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aaf4a32b8a414eff77000c584c2015cb7\" name=\"aaf4a32b8a414eff77000c584c2015cb7\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aaf4a32b8a414eff77000c584c2015cb7\">&#9670;&#160;</a></span>GetNumVertices()</h2>\n \n <div class=\"memitem\">\n@@ -1046,15 +1046,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return the number of vertices in this level. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l00062\">62</a> of file <a class=\"el\" href=\"a00782_source.html\">topologyLevel.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00821_source.html#l00062\">62</a> of file <a class=\"el\" href=\"a00821_source.html\">topologyLevel.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a2d57cefb50c830531eb61a6a2e8b79c4\" name=\"a2d57cefb50c830531eb61a6a2e8b79c4\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2d57cefb50c830531eb61a6a2e8b79c4\">&#9670;&#160;</a></span>GetVertexChildVertex()</h2>\n \n <div class=\"memitem\">\n@@ -1076,15 +1076,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return the child vertex (in the next level) of a given vertex. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l00277\">277</a> of file <a class=\"el\" href=\"a00782_source.html\">topologyLevel.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00821_source.html#l00277\">277</a> of file <a class=\"el\" href=\"a00821_source.html\">topologyLevel.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a91fb9d0d5f9451bc57ad9bd79a3d5ecc\" name=\"a91fb9d0d5f9451bc57ad9bd79a3d5ecc\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a91fb9d0d5f9451bc57ad9bd79a3d5ecc\">&#9670;&#160;</a></span>GetVertexEdgeLocalIndices()</h2>\n \n <div class=\"memitem\">\n@@ -1106,15 +1106,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Access the local indices of a vertex with respect to its incident edges. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l00114\">114</a> of file <a class=\"el\" href=\"a00782_source.html\">topologyLevel.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00821_source.html#l00114\">114</a> of file <a class=\"el\" href=\"a00821_source.html\">topologyLevel.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a71766ec0fe6997019e1ea2d9d5be6b30\" name=\"a71766ec0fe6997019e1ea2d9d5be6b30\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a71766ec0fe6997019e1ea2d9d5be6b30\">&#9670;&#160;</a></span>GetVertexEdges()</h2>\n \n <div class=\"memitem\">\n@@ -1136,15 +1136,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Access the edges incident a given vertex. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l00108\">108</a> of file <a class=\"el\" href=\"a00782_source.html\">topologyLevel.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00821_source.html#l00108\">108</a> of file <a class=\"el\" href=\"a00821_source.html\">topologyLevel.h</a>.</p>\n \n </div>\n </div>\n <a id=\"afac250ff4bc31d95fd2300202fa0e083\" name=\"afac250ff4bc31d95fd2300202fa0e083\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afac250ff4bc31d95fd2300202fa0e083\">&#9670;&#160;</a></span>GetVertexFaceLocalIndices()</h2>\n \n <div class=\"memitem\">\n@@ -1166,15 +1166,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Access the local indices of a vertex with respect to its incident faces. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l00111\">111</a> of file <a class=\"el\" href=\"a00782_source.html\">topologyLevel.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00821_source.html#l00111\">111</a> of file <a class=\"el\" href=\"a00821_source.html\">topologyLevel.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a8d60953ddb124d161c845aff79b2766d\" name=\"a8d60953ddb124d161c845aff79b2766d\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8d60953ddb124d161c845aff79b2766d\">&#9670;&#160;</a></span>GetVertexFaces()</h2>\n \n <div class=\"memitem\">\n@@ -1196,15 +1196,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Access the faces incident a given vertex. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l00105\">105</a> of file <a class=\"el\" href=\"a00782_source.html\">topologyLevel.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00821_source.html#l00105\">105</a> of file <a class=\"el\" href=\"a00821_source.html\">topologyLevel.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a20841b396faca029ff2507b1456268d1\" name=\"a20841b396faca029ff2507b1456268d1\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a20841b396faca029ff2507b1456268d1\">&#9670;&#160;</a></span>GetVertexRule()</h2>\n \n <div class=\"memitem\">\n@@ -1226,15 +1226,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return the subdivision rule assigned a given vertex specific to this level. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l00194\">194</a> of file <a class=\"el\" href=\"a00782_source.html\">topologyLevel.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00821_source.html#l00194\">194</a> of file <a class=\"el\" href=\"a00821_source.html\">topologyLevel.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ad44fcb4ce1945cc40f6772ccdc57c216\" name=\"ad44fcb4ce1945cc40f6772ccdc57c216\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad44fcb4ce1945cc40f6772ccdc57c216\">&#9670;&#160;</a></span>GetVertexSharpness()</h2>\n \n <div class=\"memitem\">\n@@ -1256,15 +1256,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return the sharpness assigned a given vertex. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l00176\">176</a> of file <a class=\"el\" href=\"a00782_source.html\">topologyLevel.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00821_source.html#l00176\">176</a> of file <a class=\"el\" href=\"a00821_source.html\">topologyLevel.h</a>.</p>\n \n </div>\n </div>\n <a id=\"af13c6081737fbf3fa34e690e1d5b81b8\" name=\"af13c6081737fbf3fa34e690e1d5b81b8\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af13c6081737fbf3fa34e690e1d5b81b8\">&#9670;&#160;</a></span>IsEdgeBoundary()</h2>\n \n <div class=\"memitem\">\n@@ -1286,15 +1286,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return if the edge is a boundary (only one incident face) </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l00134\">134</a> of file <a class=\"el\" href=\"a00782_source.html\">topologyLevel.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00821_source.html#l00134\">134</a> of file <a class=\"el\" href=\"a00821_source.html\">topologyLevel.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a7740126da36c149d0c38beab662b262d\" name=\"a7740126da36c149d0c38beab662b262d\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7740126da36c149d0c38beab662b262d\">&#9670;&#160;</a></span>IsEdgeInfSharp()</h2>\n \n <div class=\"memitem\">\n@@ -1316,15 +1316,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return if the edge is infinitely-sharp. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l00179\">179</a> of file <a class=\"el\" href=\"a00782_source.html\">topologyLevel.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00821_source.html#l00179\">179</a> of file <a class=\"el\" href=\"a00821_source.html\">topologyLevel.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a6c6c47e9293f086576f6b54f92abbed3\" name=\"a6c6c47e9293f086576f6b54f92abbed3\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6c6c47e9293f086576f6b54f92abbed3\">&#9670;&#160;</a></span>IsEdgeNonManifold()</h2>\n \n <div class=\"memitem\">\n@@ -1346,15 +1346,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return if the edge is non-manifold. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l00128\">128</a> of file <a class=\"el\" href=\"a00782_source.html\">topologyLevel.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00821_source.html#l00128\">128</a> of file <a class=\"el\" href=\"a00821_source.html\">topologyLevel.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ac5840056570743d410a552b8d1d90f4d\" name=\"ac5840056570743d410a552b8d1d90f4d\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac5840056570743d410a552b8d1d90f4d\">&#9670;&#160;</a></span>IsEdgeSemiSharp()</h2>\n \n <div class=\"memitem\">\n@@ -1376,15 +1376,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return if the edge is semi-sharp. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l00185\">185</a> of file <a class=\"el\" href=\"a00782_source.html\">topologyLevel.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00821_source.html#l00185\">185</a> of file <a class=\"el\" href=\"a00821_source.html\">topologyLevel.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a6ce73966755c0b5d8a47c5de34e0b91c\" name=\"a6ce73966755c0b5d8a47c5de34e0b91c\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6ce73966755c0b5d8a47c5de34e0b91c\">&#9670;&#160;</a></span>IsFaceHole()</h2>\n \n <div class=\"memitem\">\n@@ -1406,15 +1406,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return if a given face has been tagged as a hole. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l00191\">191</a> of file <a class=\"el\" href=\"a00782_source.html\">topologyLevel.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00821_source.html#l00191\">191</a> of file <a class=\"el\" href=\"a00821_source.html\">topologyLevel.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aa3218dc6988e9a2cfcb099a793314811\" name=\"aa3218dc6988e9a2cfcb099a793314811\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa3218dc6988e9a2cfcb099a793314811\">&#9670;&#160;</a></span>IsVertexBoundary()</h2>\n \n <div class=\"memitem\">\n@@ -1436,15 +1436,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return if the vertex is on a boundary (at least one incident boundary edge) </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l00137\">137</a> of file <a class=\"el\" href=\"a00782_source.html\">topologyLevel.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00821_source.html#l00137\">137</a> of file <a class=\"el\" href=\"a00821_source.html\">topologyLevel.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a23deed96e33a15e5307536d34d67d284\" name=\"a23deed96e33a15e5307536d34d67d284\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a23deed96e33a15e5307536d34d67d284\">&#9670;&#160;</a></span>IsVertexCorner()</h2>\n \n <div class=\"memitem\">\n@@ -1466,15 +1466,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return if the vertex is a corner (only one incident face) </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l00140\">140</a> of file <a class=\"el\" href=\"a00782_source.html\">topologyLevel.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00821_source.html#l00140\">140</a> of file <a class=\"el\" href=\"a00821_source.html\">topologyLevel.h</a>.</p>\n \n </div>\n </div>\n <a id=\"af2e9df856672471d6d52245646b99ec1\" name=\"af2e9df856672471d6d52245646b99ec1\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af2e9df856672471d6d52245646b99ec1\">&#9670;&#160;</a></span>IsVertexInfSharp()</h2>\n \n <div class=\"memitem\">\n@@ -1496,15 +1496,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return if the vertex is infinitely-sharp. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l00182\">182</a> of file <a class=\"el\" href=\"a00782_source.html\">topologyLevel.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00821_source.html#l00182\">182</a> of file <a class=\"el\" href=\"a00821_source.html\">topologyLevel.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ae8289e621fd91c4eff0d44903edb34c2\" name=\"ae8289e621fd91c4eff0d44903edb34c2\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae8289e621fd91c4eff0d44903edb34c2\">&#9670;&#160;</a></span>IsVertexNonManifold()</h2>\n \n <div class=\"memitem\">\n@@ -1526,15 +1526,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return if the vertex is non-manifold. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l00131\">131</a> of file <a class=\"el\" href=\"a00782_source.html\">topologyLevel.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00821_source.html#l00131\">131</a> of file <a class=\"el\" href=\"a00821_source.html\">topologyLevel.h</a>.</p>\n \n </div>\n </div>\n <a id=\"adba75894e1f7679a01b8341b9ac00893\" name=\"adba75894e1f7679a01b8341b9ac00893\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adba75894e1f7679a01b8341b9ac00893\">&#9670;&#160;</a></span>IsVertexSemiSharp()</h2>\n \n <div class=\"memitem\">\n@@ -1556,15 +1556,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Return if the vertex is semi-sharp. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l00188\">188</a> of file <a class=\"el\" href=\"a00782_source.html\">topologyLevel.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00821_source.html#l00188\">188</a> of file <a class=\"el\" href=\"a00821_source.html\">topologyLevel.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a10516dcd41f2f223e38d04f31311f100\" name=\"a10516dcd41f2f223e38d04f31311f100\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a10516dcd41f2f223e38d04f31311f100\">&#9670;&#160;</a></span>IsVertexValenceRegular()</h2>\n \n <div class=\"memitem\">\n@@ -1589,15 +1589,15 @@\n </div><div class=\"memdoc\">\n \n <p>Return if the valence of the vertex is regular (must be manifold) </p>\n <p>Note that this test only determines if the valence of the vertex is regular with respect to the assigned subdivision scheme &ndash; not if the neighborhood around the vertex is regular. The latter depends on a number of factors including the incident faces of the vertex (they must all be regular) and the presence of sharpness at the vertex itself or its incident edges.</p>\n <p>The regularity of the valence is a necessary but not a sufficient condition in determining the regularity of the neighborhood. For example, while the valence of an interior vertex may be regular, its neighborhood is not if the vertex was made infinitely sharp. Conversely, a corner vertex is considered regular by its valence but its neighborhood is not if the vertex was not made infinitely sharp.</p>\n <p>Whether the valence of the vertex is regular is also a property that remains the same for the vertex in all subdivision levels. In contrast, the regularity of the region around the vertex may change as the presence of irregular faces or semi-sharp features is reduced by subdivision. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l00162\">162</a> of file <a class=\"el\" href=\"a00782_source.html\">topologyLevel.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00821_source.html#l00162\">162</a> of file <a class=\"el\" href=\"a00821_source.html\">topologyLevel.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a3f963f5352658762e7a2e8d82fb888a0\" name=\"a3f963f5352658762e7a2e8d82fb888a0\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3f963f5352658762e7a2e8d82fb888a0\">&#9670;&#160;</a></span>PrintTopology()</h2>\n \n <div class=\"memitem\">\n@@ -1617,15 +1617,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l00287\">287</a> of file <a class=\"el\" href=\"a00782_source.html\">topologyLevel.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00821_source.html#l00287\">287</a> of file <a class=\"el\" href=\"a00821_source.html\">topologyLevel.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a640a101c65375bded32722376e651f97\" name=\"a640a101c65375bded32722376e651f97\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a640a101c65375bded32722376e651f97\">&#9670;&#160;</a></span>ValidateTopology()</h2>\n \n <div class=\"memitem\">\n@@ -1644,15 +1644,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l00286\">286</a> of file <a class=\"el\" href=\"a00782_source.html\">topologyLevel.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00821_source.html#l00286\">286</a> of file <a class=\"el\" href=\"a00821_source.html\">topologyLevel.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Friends And Related Symbol Documentation</h2>\n <a id=\"a094d2e51437ecd5ecc6a0cf2c4ce1e78\" name=\"a094d2e51437ecd5ecc6a0cf2c4ce1e78\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a094d2e51437ecd5ecc6a0cf2c4ce1e78\">&#9670;&#160;</a></span>TopologyRefiner</h2>\n \n@@ -1669,20 +1669,20 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">friend</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l00292\">292</a> of file <a class=\"el\" href=\"a00782_source.html\">topologyLevel.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00821_source.html#l00292\">292</a> of file <a class=\"el\" href=\"a00821_source.html\">topologyLevel.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/far/<a class=\"el\" href=\"a00782_source.html\">topologyLevel.h</a></li>\n+<li>opensubdiv/far/<a class=\"el\" href=\"a00821_source.html\">topologyLevel.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00908.html\">Far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01113.html\">TopologyLevel</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01117.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01117.html", "unified_diff": "@@ -99,15 +99,15 @@\n   <div class=\"headertitle\"><div class=\"title\">TopologyRefinerFactory&lt; MESH &gt; Class Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Factory for constructing TopologyRefiners from specific mesh classes.  \n  <a href=\"a01117.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00767_source.html\">topologyRefinerFactory.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00827_source.html\">topologyRefinerFactory.h</a>&gt;</code></p>\n <div class=\"dynheader\">\n Inheritance diagram for TopologyRefinerFactory&lt; MESH &gt;:</div>\n <div class=\"dyncontent\">\n  <div class=\"center\">\n   <img src=\"a01117.png\" usemap=\"#TopologyRefinerFactory_3C_20MESH_20_3E_map\" alt=\"\"/>\n   <map id=\"TopologyRefinerFactory_3C_20MESH_20_3E_map\" name=\"TopologyRefinerFactory_3C_20MESH_20_3E_map\">\n <area href=\"a01133.html\" title=\"Private base class of Factories for constructing TopologyRefiners.\" alt=\"TopologyRefinerFactoryBase\" shape=\"rect\" coords=\"0,0,209,24\"/>\n@@ -277,15 +277,15 @@\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><div class=\"compoundTemplParams\">template&lt;class MESH&gt;<br />\n class OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory&lt; MESH &gt;</div><p>Factory for constructing TopologyRefiners from specific mesh classes. </p>\n <p>TopologyRefinerFactory&lt;MESH&gt; is the factory class template to convert an instance of <a class=\"el\" href=\"a01121.html\" title=\"Stores topology data for a specified set of refinement options.\">TopologyRefiner</a> from an arbitrary mesh class. While a class template, the implementation is not (cannot) be complete, so specialization of a few methods is required (it is a stateless factory, so no instance and only static methods).</p>\n <p>This template provides both the interface and high level assembly for the construction of the <a class=\"el\" href=\"a01121.html\" title=\"Stores topology data for a specified set of refinement options.\">TopologyRefiner</a> instance. The high level construction executes a specific set of operations to convert the client's MESH into <a class=\"el\" href=\"a01121.html\" title=\"Stores topology data for a specified set of refinement options.\">TopologyRefiner</a>. This set of operations combines methods independent of MESH from the base class with those specialized here for class MESH. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00767_source.html#l00078\">78</a> of file <a class=\"el\" href=\"a00767_source.html\">topologyRefinerFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00827_source.html#l00078\">78</a> of file <a class=\"el\" href=\"a00827_source.html\">topologyRefinerFactory.h</a>.</p>\n </div><h2 class=\"groupheader\">Member Typedef Documentation</h2>\n <a id=\"a5458be6ce3f2e63c8d8555f4ab3b2b62\" name=\"a5458be6ce3f2e63c8d8555f4ab3b2b62\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5458be6ce3f2e63c8d8555f4ab3b2b62\">&#9670;&#160;</a></span>TopologyError</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n <div class=\"memtemplate\">\n@@ -301,15 +301,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00767_source.html#l00131\">131</a> of file <a class=\"el\" href=\"a00767_source.html\">topologyRefinerFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00827_source.html#l00131\">131</a> of file <a class=\"el\" href=\"a00827_source.html\">topologyRefinerFactory.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Member Function Documentation</h2>\n <a id=\"a3df7295af055588a7b4f20d4da021ad1\" name=\"a3df7295af055588a7b4f20d4da021ad1\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3df7295af055588a7b4f20d4da021ad1\">&#9670;&#160;</a></span>assignComponentTags()</h2>\n \n@@ -344,15 +344,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">static</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>(Optional) Specify edge or vertex sharpness or face holes </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00767_source.html#l00690\">690</a> of file <a class=\"el\" href=\"a00767_source.html\">topologyRefinerFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00827_source.html#l00690\">690</a> of file <a class=\"el\" href=\"a00827_source.html\">topologyRefinerFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a098784adfa428c620663baf9c2d8e41a\" name=\"a098784adfa428c620663baf9c2d8e41a\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a098784adfa428c620663baf9c2d8e41a\">&#9670;&#160;</a></span>assignComponentTopology()</h2>\n \n <div class=\"memitem\">\n@@ -386,15 +386,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">static</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Specify the relationships between vertices, faces, etc. ie the face-vertices, vertex-faces, edge-vertices, etc. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00767_source.html#l00621\">621</a> of file <a class=\"el\" href=\"a00767_source.html\">topologyRefinerFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00827_source.html#l00621\">621</a> of file <a class=\"el\" href=\"a00827_source.html\">topologyRefinerFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a6999e259e020bc687d09ef616ab3825b\" name=\"a6999e259e020bc687d09ef616ab3825b\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6999e259e020bc687d09ef616ab3825b\">&#9670;&#160;</a></span>assignFaceVaryingTopology()</h2>\n \n <div class=\"memitem\">\n@@ -428,15 +428,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">static</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>(Optional) Specify face-varying data per face </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00767_source.html#l00674\">674</a> of file <a class=\"el\" href=\"a00767_source.html\">topologyRefinerFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00827_source.html#l00674\">674</a> of file <a class=\"el\" href=\"a00827_source.html\">topologyRefinerFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ab10eb061eba33095095d754241081ff9\" name=\"ab10eb061eba33095095d754241081ff9\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab10eb061eba33095095d754241081ff9\">&#9670;&#160;</a></span>Create() <span class=\"overload\">[1/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -479,15 +479,15 @@\n     <tr><td class=\"paramname\">mesh</td><td>Client's topological representation (or a converter) </td></tr>\n     <tr><td class=\"paramname\">options</td><td><a class=\"el\" href=\"a01137.html\" title=\"Options related to the construction of each TopologyRefiner.\">Options</a> controlling the creation of the <a class=\"el\" href=\"a01121.html\" title=\"Stores topology data for a specified set of refinement options.\">TopologyRefiner</a></td></tr>\n   </table>\n   </dd>\n </dl>\n <dl class=\"section return\"><dt>Returns</dt><dd>A new instance of <a class=\"el\" href=\"a01121.html\" title=\"Stores topology data for a specified set of refinement options.\">TopologyRefiner</a> or 0 for failure </dd></dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00767_source.html#l00346\">346</a> of file <a class=\"el\" href=\"a00767_source.html\">topologyRefinerFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00827_source.html#l00346\">346</a> of file <a class=\"el\" href=\"a00827_source.html\">topologyRefinerFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"adbb03cacfb38376d07a8ce7e99b98f4a\" name=\"adbb03cacfb38376d07a8ce7e99b98f4a\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adbb03cacfb38376d07a8ce7e99b98f4a\">&#9670;&#160;</a></span>Create() <span class=\"overload\">[2/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -519,15 +519,15 @@\n   <table class=\"params\">\n     <tr><td class=\"paramname\">baseLevel</td><td>An existing <a class=\"el\" href=\"a01121.html\" title=\"Stores topology data for a specified set of refinement options.\">TopologyRefiner</a> to share base level.</td></tr>\n   </table>\n   </dd>\n </dl>\n <dl class=\"section return\"><dt>Returns</dt><dd>A new instance of <a class=\"el\" href=\"a01121.html\" title=\"Stores topology data for a specified set of refinement options.\">TopologyRefiner</a> or 0 for failure </dd></dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00767_source.html#l00364\">364</a> of file <a class=\"el\" href=\"a00767_source.html\">topologyRefinerFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00827_source.html#l00364\">364</a> of file <a class=\"el\" href=\"a00827_source.html\">topologyRefinerFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ad73911f95b0a7025a510631c13526d4d\" name=\"ad73911f95b0a7025a510631c13526d4d\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad73911f95b0a7025a510631c13526d4d\">&#9670;&#160;</a></span>createBaseFVarChannel() <span class=\"overload\">[1/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -561,15 +561,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Create a new face-varying channel with the given number of values. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00767_source.html#l00561\">561</a> of file <a class=\"el\" href=\"a00767_source.html\">topologyRefinerFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00827_source.html#l00561\">561</a> of file <a class=\"el\" href=\"a00827_source.html\">topologyRefinerFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ae1a1f2e7baae99c0bd9f179c8e17df01\" name=\"ae1a1f2e7baae99c0bd9f179c8e17df01\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae1a1f2e7baae99c0bd9f179c8e17df01\">&#9670;&#160;</a></span>createBaseFVarChannel() <span class=\"overload\">[2/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -609,15 +609,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Create a new face-varying channel with the given number of values and independent interpolation options. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00767_source.html#l00566\">566</a> of file <a class=\"el\" href=\"a00767_source.html\">topologyRefinerFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00827_source.html#l00566\">566</a> of file <a class=\"el\" href=\"a00827_source.html\">topologyRefinerFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"abadf245d872a6a226772a14a471324d0\" name=\"abadf245d872a6a226772a14a471324d0\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abadf245d872a6a226772a14a471324d0\">&#9670;&#160;</a></span>findBaseEdge()</h2>\n \n <div class=\"memitem\">\n@@ -657,15 +657,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Identify an edge to be assigned a sharpness value given a vertex pair. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00767_source.html#l00521\">521</a> of file <a class=\"el\" href=\"a00767_source.html\">topologyRefinerFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00827_source.html#l00521\">521</a> of file <a class=\"el\" href=\"a00827_source.html\">topologyRefinerFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a20ee9f5a59d04c6448e0e8903947cf03\" name=\"a20ee9f5a59d04c6448e0e8903947cf03\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a20ee9f5a59d04c6448e0e8903947cf03\">&#9670;&#160;</a></span>getBaseEdgeFaceLocalIndices()</h2>\n \n <div class=\"memitem\">\n@@ -699,15 +699,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Assign the local indices of an edge within each of its incident faces. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00767_source.html#l00505\">505</a> of file <a class=\"el\" href=\"a00767_source.html\">topologyRefinerFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00827_source.html#l00505\">505</a> of file <a class=\"el\" href=\"a00827_source.html\">topologyRefinerFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a598f3a70a526b3d47f1edd383d904792\" name=\"a598f3a70a526b3d47f1edd383d904792\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a598f3a70a526b3d47f1edd383d904792\">&#9670;&#160;</a></span>getBaseEdgeFaces()</h2>\n \n <div class=\"memitem\">\n@@ -741,15 +741,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Assign the faces incident each edge. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00767_source.html#l00489\">489</a> of file <a class=\"el\" href=\"a00767_source.html\">topologyRefinerFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00827_source.html#l00489\">489</a> of file <a class=\"el\" href=\"a00827_source.html\">topologyRefinerFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a78f9b78d9fd7895d88449157202d2320\" name=\"a78f9b78d9fd7895d88449157202d2320\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a78f9b78d9fd7895d88449157202d2320\">&#9670;&#160;</a></span>getBaseEdgeVertices()</h2>\n \n <div class=\"memitem\">\n@@ -783,15 +783,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Assign the vertices incident each edge. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00767_source.html#l00484\">484</a> of file <a class=\"el\" href=\"a00767_source.html\">topologyRefinerFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00827_source.html#l00484\">484</a> of file <a class=\"el\" href=\"a00827_source.html\">topologyRefinerFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a8233d0fd9a411e3cebb6de37f0b4dd52\" name=\"a8233d0fd9a411e3cebb6de37f0b4dd52\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8233d0fd9a411e3cebb6de37f0b4dd52\">&#9670;&#160;</a></span>getBaseFaceEdges()</h2>\n \n <div class=\"memitem\">\n@@ -825,15 +825,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Assign the edges incident each face. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00767_source.html#l00479\">479</a> of file <a class=\"el\" href=\"a00767_source.html\">topologyRefinerFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00827_source.html#l00479\">479</a> of file <a class=\"el\" href=\"a00827_source.html\">topologyRefinerFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a5709feae1ab1f49570e4adf485e21433\" name=\"a5709feae1ab1f49570e4adf485e21433\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5709feae1ab1f49570e4adf485e21433\">&#9670;&#160;</a></span>getBaseFaceFVarValues()</h2>\n \n <div class=\"memitem\">\n@@ -873,15 +873,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Assign the face-varying values for the corners of each face. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00767_source.html#l00573\">573</a> of file <a class=\"el\" href=\"a00767_source.html\">topologyRefinerFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00827_source.html#l00573\">573</a> of file <a class=\"el\" href=\"a00827_source.html\">topologyRefinerFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a1c58093296637493b5d5f4f8dea7e02a\" name=\"a1c58093296637493b5d5f4f8dea7e02a\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1c58093296637493b5d5f4f8dea7e02a\">&#9670;&#160;</a></span>getBaseFaceVertices()</h2>\n \n <div class=\"memitem\">\n@@ -915,15 +915,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Assign the vertices incident each face. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00767_source.html#l00474\">474</a> of file <a class=\"el\" href=\"a00767_source.html\">topologyRefinerFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00827_source.html#l00474\">474</a> of file <a class=\"el\" href=\"a00827_source.html\">topologyRefinerFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a6ff4d209a7fa096c6fd8d314519006fb\" name=\"a6ff4d209a7fa096c6fd8d314519006fb\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6ff4d209a7fa096c6fd8d314519006fb\">&#9670;&#160;</a></span>getBaseVertexEdgeLocalIndices()</h2>\n \n <div class=\"memitem\">\n@@ -957,15 +957,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Assign the local indices of a vertex within each of its incident edges. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00767_source.html#l00515\">515</a> of file <a class=\"el\" href=\"a00767_source.html\">topologyRefinerFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00827_source.html#l00515\">515</a> of file <a class=\"el\" href=\"a00827_source.html\">topologyRefinerFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ad2e926d52d7682c6e6453831e91eeb98\" name=\"ad2e926d52d7682c6e6453831e91eeb98\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad2e926d52d7682c6e6453831e91eeb98\">&#9670;&#160;</a></span>getBaseVertexEdges()</h2>\n \n <div class=\"memitem\">\n@@ -999,15 +999,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Assign the edges incident each vertex. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00767_source.html#l00499\">499</a> of file <a class=\"el\" href=\"a00767_source.html\">topologyRefinerFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00827_source.html#l00499\">499</a> of file <a class=\"el\" href=\"a00827_source.html\">topologyRefinerFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a0f20907169dab737f3b4ca7fd45674fe\" name=\"a0f20907169dab737f3b4ca7fd45674fe\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0f20907169dab737f3b4ca7fd45674fe\">&#9670;&#160;</a></span>getBaseVertexFaceLocalIndices()</h2>\n \n <div class=\"memitem\">\n@@ -1041,15 +1041,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Assign the local indices of a vertex within each of its incident faces. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00767_source.html#l00510\">510</a> of file <a class=\"el\" href=\"a00767_source.html\">topologyRefinerFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00827_source.html#l00510\">510</a> of file <a class=\"el\" href=\"a00827_source.html\">topologyRefinerFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a7af5443e6de72365777b88c44ca73c05\" name=\"a7af5443e6de72365777b88c44ca73c05\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7af5443e6de72365777b88c44ca73c05\">&#9670;&#160;</a></span>getBaseVertexFaces()</h2>\n \n <div class=\"memitem\">\n@@ -1083,15 +1083,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Assign the faces incident each vertex. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00767_source.html#l00494\">494</a> of file <a class=\"el\" href=\"a00767_source.html\">topologyRefinerFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00827_source.html#l00494\">494</a> of file <a class=\"el\" href=\"a00827_source.html\">topologyRefinerFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ad86027437b67e115c875a494ba140ccb\" name=\"ad86027437b67e115c875a494ba140ccb\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad86027437b67e115c875a494ba140ccb\">&#9670;&#160;</a></span>getNumBaseEdges()</h2>\n \n <div class=\"memitem\">\n@@ -1113,15 +1113,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00767_source.html#l00441\">441</a> of file <a class=\"el\" href=\"a00767_source.html\">topologyRefinerFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00827_source.html#l00441\">441</a> of file <a class=\"el\" href=\"a00827_source.html\">topologyRefinerFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a020886e09179d60d2ca1dfaf99ef8c41\" name=\"a020886e09179d60d2ca1dfaf99ef8c41\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a020886e09179d60d2ca1dfaf99ef8c41\">&#9670;&#160;</a></span>getNumBaseFaces()</h2>\n \n <div class=\"memitem\">\n@@ -1143,15 +1143,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00767_source.html#l00436\">436</a> of file <a class=\"el\" href=\"a00767_source.html\">topologyRefinerFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00827_source.html#l00436\">436</a> of file <a class=\"el\" href=\"a00827_source.html\">topologyRefinerFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a117dbe541844bdb9987238648c4097f2\" name=\"a117dbe541844bdb9987238648c4097f2\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a117dbe541844bdb9987238648c4097f2\">&#9670;&#160;</a></span>getNumBaseVertices()</h2>\n \n <div class=\"memitem\">\n@@ -1173,15 +1173,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00767_source.html#l00446\">446</a> of file <a class=\"el\" href=\"a00767_source.html\">topologyRefinerFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00827_source.html#l00446\">446</a> of file <a class=\"el\" href=\"a00827_source.html\">topologyRefinerFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a2c34b14ad2b2ea6959f262de4974fdae\" name=\"a2c34b14ad2b2ea6959f262de4974fdae\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2c34b14ad2b2ea6959f262de4974fdae\">&#9670;&#160;</a></span>populateBaseLevel()</h2>\n \n <div class=\"memitem\">\n@@ -1219,15 +1219,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">static</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00767_source.html#l00371\">371</a> of file <a class=\"el\" href=\"a00767_source.html\">topologyRefinerFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00827_source.html#l00371\">371</a> of file <a class=\"el\" href=\"a00827_source.html\">topologyRefinerFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a363ef6e3c1fa9e4a58ff0a3852deec66\" name=\"a363ef6e3c1fa9e4a58ff0a3852deec66\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a363ef6e3c1fa9e4a58ff0a3852deec66\">&#9670;&#160;</a></span>populateBaseLocalIndices()</h2>\n \n <div class=\"memitem\">\n@@ -1251,15 +1251,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Determine all local indices by inspection (only for pure manifold meshes) </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00767_source.html#l00527\">527</a> of file <a class=\"el\" href=\"a00767_source.html\">topologyRefinerFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00827_source.html#l00527\">527</a> of file <a class=\"el\" href=\"a00827_source.html\">topologyRefinerFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a0c4c1d44df4c480bd0adfa9e86891b39\" name=\"a0c4c1d44df4c480bd0adfa9e86891b39\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0c4c1d44df4c480bd0adfa9e86891b39\">&#9670;&#160;</a></span>reportInvalidTopology()</h2>\n \n <div class=\"memitem\">\n@@ -1299,15 +1299,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">static</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>(Optional) Control run-time topology validation and error reporting </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00767_source.html#l00707\">707</a> of file <a class=\"el\" href=\"a00767_source.html\">topologyRefinerFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00827_source.html#l00707\">707</a> of file <a class=\"el\" href=\"a00827_source.html\">topologyRefinerFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a4c574c458d080393a258f48e0ab20938\" name=\"a4c574c458d080393a258f48e0ab20938\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4c574c458d080393a258f48e0ab20938\">&#9670;&#160;</a></span>resizeComponentTopology()</h2>\n \n <div class=\"memitem\">\n@@ -1341,15 +1341,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">static</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Specify the number of vertices, faces, face-vertices, etc. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00767_source.html#l00580\">580</a> of file <a class=\"el\" href=\"a00767_source.html\">topologyRefinerFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00827_source.html#l00580\">580</a> of file <a class=\"el\" href=\"a00827_source.html\">topologyRefinerFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aaa60d4a0d80d8e76e3569ddeb3d16ca4\" name=\"aaa60d4a0d80d8e76e3569ddeb3d16ca4\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aaa60d4a0d80d8e76e3569ddeb3d16ca4\">&#9670;&#160;</a></span>setBaseEdgeNonManifold()</h2>\n \n <div class=\"memitem\">\n@@ -1389,15 +1389,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Tag an edge as non-manifold. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00767_source.html#l00533\">533</a> of file <a class=\"el\" href=\"a00767_source.html\">topologyRefinerFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00827_source.html#l00533\">533</a> of file <a class=\"el\" href=\"a00827_source.html\">topologyRefinerFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aa1b903734e1a9136e087c3cd4e3ff657\" name=\"aa1b903734e1a9136e087c3cd4e3ff657\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa1b903734e1a9136e087c3cd4e3ff657\">&#9670;&#160;</a></span>setBaseEdgeSharpness()</h2>\n \n <div class=\"memitem\">\n@@ -1437,15 +1437,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Assign a sharpness value to a given edge. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00767_source.html#l00544\">544</a> of file <a class=\"el\" href=\"a00767_source.html\">topologyRefinerFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00827_source.html#l00544\">544</a> of file <a class=\"el\" href=\"a00827_source.html\">topologyRefinerFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"afe44424c4c292e12634a9eb1d4efbc7e\" name=\"afe44424c4c292e12634a9eb1d4efbc7e\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afe44424c4c292e12634a9eb1d4efbc7e\">&#9670;&#160;</a></span>setBaseFaceHole()</h2>\n \n <div class=\"memitem\">\n@@ -1485,15 +1485,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Tag a face as a hole. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00767_source.html#l00554\">554</a> of file <a class=\"el\" href=\"a00767_source.html\">topologyRefinerFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00827_source.html#l00554\">554</a> of file <a class=\"el\" href=\"a00827_source.html\">topologyRefinerFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a7b7a064f825e85f70c995e1614d3f569\" name=\"a7b7a064f825e85f70c995e1614d3f569\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7b7a064f825e85f70c995e1614d3f569\">&#9670;&#160;</a></span>setBaseVertexNonManifold()</h2>\n \n <div class=\"memitem\">\n@@ -1533,15 +1533,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Tag a vertex as non-manifold. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00767_source.html#l00538\">538</a> of file <a class=\"el\" href=\"a00767_source.html\">topologyRefinerFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00827_source.html#l00538\">538</a> of file <a class=\"el\" href=\"a00827_source.html\">topologyRefinerFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a6bcd3738db74e1efce001beee0693c8a\" name=\"a6bcd3738db74e1efce001beee0693c8a\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6bcd3738db74e1efce001beee0693c8a\">&#9670;&#160;</a></span>setBaseVertexSharpness()</h2>\n \n <div class=\"memitem\">\n@@ -1581,15 +1581,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Assign a sharpness value to a given vertex. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00767_source.html#l00549\">549</a> of file <a class=\"el\" href=\"a00767_source.html\">topologyRefinerFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00827_source.html#l00549\">549</a> of file <a class=\"el\" href=\"a00827_source.html\">topologyRefinerFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a11f84f47a826b23f96914e6c032ad0c3\" name=\"a11f84f47a826b23f96914e6c032ad0c3\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a11f84f47a826b23f96914e6c032ad0c3\">&#9670;&#160;</a></span>setNumBaseEdgeFaces()</h2>\n \n <div class=\"memitem\">\n@@ -1629,15 +1629,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Specify the number of faces incident each edge. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00767_source.html#l00458\">458</a> of file <a class=\"el\" href=\"a00767_source.html\">topologyRefinerFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00827_source.html#l00458\">458</a> of file <a class=\"el\" href=\"a00827_source.html\">topologyRefinerFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aac57d69b5bb270ccabe0d84364d065ce\" name=\"aac57d69b5bb270ccabe0d84364d065ce\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aac57d69b5bb270ccabe0d84364d065ce\">&#9670;&#160;</a></span>setNumBaseEdges()</h2>\n \n <div class=\"memitem\">\n@@ -1671,15 +1671,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Specify the number of edges to be accommodated. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00767_source.html#l00425\">425</a> of file <a class=\"el\" href=\"a00767_source.html\">topologyRefinerFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00827_source.html#l00425\">425</a> of file <a class=\"el\" href=\"a00827_source.html\">topologyRefinerFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a7ea1b1dae066a5255ac2c2d0d56c1460\" name=\"a7ea1b1dae066a5255ac2c2d0d56c1460\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7ea1b1dae066a5255ac2c2d0d56c1460\">&#9670;&#160;</a></span>setNumBaseFaces()</h2>\n \n <div class=\"memitem\">\n@@ -1713,15 +1713,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Specify the number of faces to be accommodated. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00767_source.html#l00420\">420</a> of file <a class=\"el\" href=\"a00767_source.html\">topologyRefinerFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00827_source.html#l00420\">420</a> of file <a class=\"el\" href=\"a00827_source.html\">topologyRefinerFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a8eea2866a8b3ba7bf6898984fe2a543a\" name=\"a8eea2866a8b3ba7bf6898984fe2a543a\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8eea2866a8b3ba7bf6898984fe2a543a\">&#9670;&#160;</a></span>setNumBaseFaceVertices()</h2>\n \n <div class=\"memitem\">\n@@ -1761,15 +1761,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Specify the number of vertices incident each face. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00767_source.html#l00452\">452</a> of file <a class=\"el\" href=\"a00767_source.html\">topologyRefinerFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00827_source.html#l00452\">452</a> of file <a class=\"el\" href=\"a00827_source.html\">topologyRefinerFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a53afbc1d886920a1f7bd9fb66bc7c764\" name=\"a53afbc1d886920a1f7bd9fb66bc7c764\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a53afbc1d886920a1f7bd9fb66bc7c764\">&#9670;&#160;</a></span>setNumBaseVertexEdges()</h2>\n \n <div class=\"memitem\">\n@@ -1809,15 +1809,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Specify the number of edges incident each vertex. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00767_source.html#l00468\">468</a> of file <a class=\"el\" href=\"a00767_source.html\">topologyRefinerFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00827_source.html#l00468\">468</a> of file <a class=\"el\" href=\"a00827_source.html\">topologyRefinerFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a5dabb3b53480f7070826d20114b826b3\" name=\"a5dabb3b53480f7070826d20114b826b3\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5dabb3b53480f7070826d20114b826b3\">&#9670;&#160;</a></span>setNumBaseVertexFaces()</h2>\n \n <div class=\"memitem\">\n@@ -1857,15 +1857,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Specify the number of faces incident each vertex. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00767_source.html#l00463\">463</a> of file <a class=\"el\" href=\"a00767_source.html\">topologyRefinerFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00827_source.html#l00463\">463</a> of file <a class=\"el\" href=\"a00827_source.html\">topologyRefinerFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ade6bd4c9d2e9eaf232d928f45b58e070\" name=\"ade6bd4c9d2e9eaf232d928f45b58e070\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ade6bd4c9d2e9eaf232d928f45b58e070\">&#9670;&#160;</a></span>setNumBaseVertices()</h2>\n \n <div class=\"memitem\">\n@@ -1899,21 +1899,21 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Specify the number of vertices to be accommodated. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00767_source.html#l00430\">430</a> of file <a class=\"el\" href=\"a00767_source.html\">topologyRefinerFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00827_source.html#l00430\">430</a> of file <a class=\"el\" href=\"a00827_source.html\">topologyRefinerFactory.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following files:<ul>\n-<li>opensubdiv/far/<a class=\"el\" href=\"a00764_source.html\">topologyRefiner.h</a></li>\n-<li>opensubdiv/far/<a class=\"el\" href=\"a00767_source.html\">topologyRefinerFactory.h</a></li>\n+<li>opensubdiv/far/<a class=\"el\" href=\"a00833_source.html\">topologyRefiner.h</a></li>\n+<li>opensubdiv/far/<a class=\"el\" href=\"a00827_source.html\">topologyRefinerFactory.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00908.html\">Far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01117.html\">TopologyRefinerFactory</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01121.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01121.html", "unified_diff": "@@ -98,15 +98,15 @@\n   <div class=\"headertitle\"><div class=\"title\">TopologyRefiner Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Stores topology data for a specified set of refinement options.  \n  <a href=\"a01121.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00764_source.html\">topologyRefiner.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00833_source.html\">topologyRefiner.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n <tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01129.html\">AdaptiveOptions</a></td></tr>\n <tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Adaptive refinement options.  <a href=\"a01129.html#details\">More...</a><br /></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01125.html\">UniformOptions</a></td></tr>\n@@ -208,15 +208,15 @@\n <tr class=\"separator:a402a532c087e1e0041ad6bb613b1a79e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a13c709a24feeed80409924510e3efc5e\" id=\"r_a13c709a24feeed80409924510e3efc5e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01121.html#a13c709a24feeed80409924510e3efc5e\">TopologyRefiner</a> (<a class=\"el\" href=\"a01121.html\">TopologyRefiner</a> const &amp;source)</td></tr>\n <tr class=\"separator:a13c709a24feeed80409924510e3efc5e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p>Stores topology data for a specified set of refinement options. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00764_source.html#l00051\">51</a> of file <a class=\"el\" href=\"a00764_source.html\">topologyRefiner.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00051\">51</a> of file <a class=\"el\" href=\"a00833_source.html\">topologyRefiner.h</a>.</p>\n </div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"a91353962838bff64448014136e0e11ff\" name=\"a91353962838bff64448014136e0e11ff\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a91353962838bff64448014136e0e11ff\">&#9670;&#160;</a></span>TopologyRefiner() <span class=\"overload\">[1/2]</span></h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n       <table class=\"memname\">\n@@ -311,15 +311,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the options specified on refinement. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00764_source.html#l00196\">196</a> of file <a class=\"el\" href=\"a00764_source.html\">topologyRefiner.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00196\">196</a> of file <a class=\"el\" href=\"a00833_source.html\">topologyRefiner.h</a>.</p>\n \n </div>\n </div>\n <a id=\"af29a7e9914ee6860c7167300ea17e514\" name=\"af29a7e9914ee6860c7167300ea17e514\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af29a7e9914ee6860c7167300ea17e514\">&#9670;&#160;</a></span>GetFVarLinearInterpolation()</h2>\n \n <div class=\"memitem\">\n@@ -341,15 +341,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the face-varying interpolation rule set for a given channel. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00764_source.html#l00298\">298</a> of file <a class=\"el\" href=\"a00764_source.html\">topologyRefiner.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00298\">298</a> of file <a class=\"el\" href=\"a00833_source.html\">topologyRefiner.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a523d4cb42fe52e7b330bd027712c7f04\" name=\"a523d4cb42fe52e7b330bd027712c7f04\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a523d4cb42fe52e7b330bd027712c7f04\">&#9670;&#160;</a></span>getLevel() <span class=\"overload\">[1/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -369,15 +369,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00764_source.html#l00236\">236</a> of file <a class=\"el\" href=\"a00764_source.html\">topologyRefiner.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00236\">236</a> of file <a class=\"el\" href=\"a00833_source.html\">topologyRefiner.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a1712dfb8f057c939b48f6fb62c4c66e8\" name=\"a1712dfb8f057c939b48f6fb62c4c66e8\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1712dfb8f057c939b48f6fb62c4c66e8\">&#9670;&#160;</a></span>getLevel() <span class=\"overload\">[2/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -397,15 +397,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00764_source.html#l00237\">237</a> of file <a class=\"el\" href=\"a00764_source.html\">topologyRefiner.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00237\">237</a> of file <a class=\"el\" href=\"a00833_source.html\">topologyRefiner.h</a>.</p>\n \n </div>\n </div>\n <a id=\"adc03a3531bd92ada5669788241e3515f\" name=\"adc03a3531bd92ada5669788241e3515f\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adc03a3531bd92ada5669788241e3515f\">&#9670;&#160;</a></span>GetLevel()</h2>\n \n <div class=\"memitem\">\n@@ -427,15 +427,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns a handle to access data specific to a particular level. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00764_source.html#l00095\">95</a> of file <a class=\"el\" href=\"a00764_source.html\">topologyRefiner.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00095\">95</a> of file <a class=\"el\" href=\"a00833_source.html\">topologyRefiner.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a7d0b5dc6f7f567507a906e00d1887151\" name=\"a7d0b5dc6f7f567507a906e00d1887151\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7d0b5dc6f7f567507a906e00d1887151\">&#9670;&#160;</a></span>GetMaxLevel()</h2>\n \n <div class=\"memitem\">\n@@ -456,15 +456,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the highest level of refinement. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00764_source.html#l00074\">74</a> of file <a class=\"el\" href=\"a00764_source.html\">topologyRefiner.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00074\">74</a> of file <a class=\"el\" href=\"a00833_source.html\">topologyRefiner.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a14bf987459715b918b370247bb24a61c\" name=\"a14bf987459715b918b370247bb24a61c\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a14bf987459715b918b370247bb24a61c\">&#9670;&#160;</a></span>GetMaxValence()</h2>\n \n <div class=\"memitem\">\n@@ -485,15 +485,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the maximum vertex valence in all levels. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00764_source.html#l00077\">77</a> of file <a class=\"el\" href=\"a00764_source.html\">topologyRefiner.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00077\">77</a> of file <a class=\"el\" href=\"a00833_source.html\">topologyRefiner.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a96f712a5e40873f00b0b61f72ffb9e3c\" name=\"a96f712a5e40873f00b0b61f72ffb9e3c\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a96f712a5e40873f00b0b61f72ffb9e3c\">&#9670;&#160;</a></span>GetNumEdgesTotal()</h2>\n \n <div class=\"memitem\">\n@@ -514,15 +514,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the total number of edges in all levels. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00764_source.html#l00086\">86</a> of file <a class=\"el\" href=\"a00764_source.html\">topologyRefiner.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00086\">86</a> of file <a class=\"el\" href=\"a00833_source.html\">topologyRefiner.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ac5eadebfdd9b11ac383653e5a2383231\" name=\"ac5eadebfdd9b11ac383653e5a2383231\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac5eadebfdd9b11ac383653e5a2383231\">&#9670;&#160;</a></span>GetNumFacesTotal()</h2>\n \n <div class=\"memitem\">\n@@ -543,15 +543,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the total number of edges in all levels. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00764_source.html#l00089\">89</a> of file <a class=\"el\" href=\"a00764_source.html\">topologyRefiner.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00089\">89</a> of file <a class=\"el\" href=\"a00833_source.html\">topologyRefiner.h</a>.</p>\n \n </div>\n </div>\n <a id=\"accbb5f2a2fa9138df8c399b9f1d37982\" name=\"accbb5f2a2fa9138df8c399b9f1d37982\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#accbb5f2a2fa9138df8c399b9f1d37982\">&#9670;&#160;</a></span>GetNumFaceVerticesTotal()</h2>\n \n <div class=\"memitem\">\n@@ -572,15 +572,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the total number of face vertices in all levels. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00764_source.html#l00092\">92</a> of file <a class=\"el\" href=\"a00764_source.html\">topologyRefiner.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00092\">92</a> of file <a class=\"el\" href=\"a00833_source.html\">topologyRefiner.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aa9be824a572029f3ec1e0c0d6cfecd77\" name=\"aa9be824a572029f3ec1e0c0d6cfecd77\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa9be824a572029f3ec1e0c0d6cfecd77\">&#9670;&#160;</a></span>GetNumFVarChannels()</h2>\n \n <div class=\"memitem\">\n@@ -601,15 +601,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the number of face-varying channels in the tables. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00764_source.html#l00293\">293</a> of file <a class=\"el\" href=\"a00764_source.html\">topologyRefiner.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00293\">293</a> of file <a class=\"el\" href=\"a00833_source.html\">topologyRefiner.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a30e986821916537de9d85e6b032ff5da\" name=\"a30e986821916537de9d85e6b032ff5da\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a30e986821916537de9d85e6b032ff5da\">&#9670;&#160;</a></span>GetNumFVarValuesTotal()</h2>\n \n <div class=\"memitem\">\n@@ -650,15 +650,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the number of refinement levels. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00764_source.html#l00071\">71</a> of file <a class=\"el\" href=\"a00764_source.html\">topologyRefiner.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00071\">71</a> of file <a class=\"el\" href=\"a00833_source.html\">topologyRefiner.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ae8ef99a47f8185a3a621e4d5b10a20a0\" name=\"ae8ef99a47f8185a3a621e4d5b10a20a0\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae8ef99a47f8185a3a621e4d5b10a20a0\">&#9670;&#160;</a></span>GetNumVerticesTotal()</h2>\n \n <div class=\"memitem\">\n@@ -679,15 +679,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the total number of vertices in all levels. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00764_source.html#l00083\">83</a> of file <a class=\"el\" href=\"a00764_source.html\">topologyRefiner.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00083\">83</a> of file <a class=\"el\" href=\"a00833_source.html\">topologyRefiner.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ad111e17222fca3c7877734ef1780e37f\" name=\"ad111e17222fca3c7877734ef1780e37f\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad111e17222fca3c7877734ef1780e37f\">&#9670;&#160;</a></span>getRefinement() <span class=\"overload\">[1/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -707,15 +707,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00764_source.html#l00239\">239</a> of file <a class=\"el\" href=\"a00764_source.html\">topologyRefiner.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00239\">239</a> of file <a class=\"el\" href=\"a00833_source.html\">topologyRefiner.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a402a532c087e1e0041ad6bb613b1a79e\" name=\"a402a532c087e1e0041ad6bb613b1a79e\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a402a532c087e1e0041ad6bb613b1a79e\">&#9670;&#160;</a></span>getRefinement() <span class=\"overload\">[2/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -735,15 +735,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00764_source.html#l00240\">240</a> of file <a class=\"el\" href=\"a00764_source.html\">topologyRefiner.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00240\">240</a> of file <a class=\"el\" href=\"a00833_source.html\">topologyRefiner.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a4528f38657b0c96bce6c3d7deffd7c02\" name=\"a4528f38657b0c96bce6c3d7deffd7c02\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4528f38657b0c96bce6c3d7deffd7c02\">&#9670;&#160;</a></span>GetSchemeOptions()</h2>\n \n <div class=\"memitem\">\n@@ -764,15 +764,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the subdivision options. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00764_source.html#l00065\">65</a> of file <a class=\"el\" href=\"a00764_source.html\">topologyRefiner.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00065\">65</a> of file <a class=\"el\" href=\"a00833_source.html\">topologyRefiner.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a758e06255013d2d7393c3ac2d18f6922\" name=\"a758e06255013d2d7393c3ac2d18f6922\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a758e06255013d2d7393c3ac2d18f6922\">&#9670;&#160;</a></span>GetSchemeType()</h2>\n \n <div class=\"memitem\">\n@@ -793,15 +793,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the subdivision scheme. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00764_source.html#l00062\">62</a> of file <a class=\"el\" href=\"a00764_source.html\">topologyRefiner.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00062\">62</a> of file <a class=\"el\" href=\"a00833_source.html\">topologyRefiner.h</a>.</p>\n \n </div>\n </div>\n <a id=\"abb1241288f333733e84a5676f55f6bb9\" name=\"abb1241288f333733e84a5676f55f6bb9\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abb1241288f333733e84a5676f55f6bb9\">&#9670;&#160;</a></span>GetUniformOptions()</h2>\n \n <div class=\"memitem\">\n@@ -822,15 +822,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the options specified on refinement. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00764_source.html#l00149\">149</a> of file <a class=\"el\" href=\"a00764_source.html\">topologyRefiner.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00149\">149</a> of file <a class=\"el\" href=\"a00833_source.html\">topologyRefiner.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a1b68f0501aabb94ba410e006181d2cc5\" name=\"a1b68f0501aabb94ba410e006181d2cc5\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1b68f0501aabb94ba410e006181d2cc5\">&#9670;&#160;</a></span>HasHoles()</h2>\n \n <div class=\"memitem\">\n@@ -851,15 +851,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns true if faces have been tagged as holes. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00764_source.html#l00080\">80</a> of file <a class=\"el\" href=\"a00764_source.html\">topologyRefiner.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00080\">80</a> of file <a class=\"el\" href=\"a00833_source.html\">topologyRefiner.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a5dfa6810f510fac1ec621fc9e6b530c4\" name=\"a5dfa6810f510fac1ec621fc9e6b530c4\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5dfa6810f510fac1ec621fc9e6b530c4\">&#9670;&#160;</a></span>IsUniform()</h2>\n \n <div class=\"memitem\">\n@@ -880,15 +880,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns true if uniform refinement has been applied. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00764_source.html#l00068\">68</a> of file <a class=\"el\" href=\"a00764_source.html\">topologyRefiner.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00068\">68</a> of file <a class=\"el\" href=\"a00833_source.html\">topologyRefiner.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aff92309935db19988908471bee4fef4d\" name=\"aff92309935db19988908471bee4fef4d\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aff92309935db19988908471bee4fef4d\">&#9670;&#160;</a></span>RefineAdaptive()</h2>\n \n <div class=\"memitem\">\n@@ -989,15 +989,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">friend</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00764_source.html#l00226\">226</a> of file <a class=\"el\" href=\"a00764_source.html\">topologyRefiner.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00226\">226</a> of file <a class=\"el\" href=\"a00833_source.html\">topologyRefiner.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ad452cef79832abb71eef0c3d88acc1a0\" name=\"ad452cef79832abb71eef0c3d88acc1a0\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad452cef79832abb71eef0c3d88acc1a0\">&#9670;&#160;</a></span>PatchTableBuilder</h2>\n \n <div class=\"memitem\">\n@@ -1013,15 +1013,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">friend</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00764_source.html#l00225\">225</a> of file <a class=\"el\" href=\"a00764_source.html\">topologyRefiner.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00225\">225</a> of file <a class=\"el\" href=\"a00833_source.html\">topologyRefiner.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a2cb48b58c1c2ecef25abb39339a95ac1\" name=\"a2cb48b58c1c2ecef25abb39339a95ac1\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2cb48b58c1c2ecef25abb39339a95ac1\">&#9670;&#160;</a></span>PrimvarRefinerReal</h2>\n \n <div class=\"memitem\">\n@@ -1039,15 +1039,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">friend</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00764_source.html#l00229\">229</a> of file <a class=\"el\" href=\"a00764_source.html\">topologyRefiner.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00229\">229</a> of file <a class=\"el\" href=\"a00833_source.html\">topologyRefiner.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a3e6c896f40ac50aec4b28f19bc4eae9c\" name=\"a3e6c896f40ac50aec4b28f19bc4eae9c\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3e6c896f40ac50aec4b28f19bc4eae9c\">&#9670;&#160;</a></span>PtexIndices</h2>\n \n <div class=\"memitem\">\n@@ -1063,15 +1063,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">friend</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00764_source.html#l00227\">227</a> of file <a class=\"el\" href=\"a00764_source.html\">topologyRefiner.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00227\">227</a> of file <a class=\"el\" href=\"a00833_source.html\">topologyRefiner.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a7efec9ae15b61001dcf6a0de284914b7\" name=\"a7efec9ae15b61001dcf6a0de284914b7\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7efec9ae15b61001dcf6a0de284914b7\">&#9670;&#160;</a></span>TopologyRefinerFactory</h2>\n \n <div class=\"memitem\">\n@@ -1089,15 +1089,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">friend</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00764_source.html#l00223\">223</a> of file <a class=\"el\" href=\"a00764_source.html\">topologyRefiner.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00223\">223</a> of file <a class=\"el\" href=\"a00833_source.html\">topologyRefiner.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a7b09fef2ae2989a546c50a65add2091f\" name=\"a7b09fef2ae2989a546c50a65add2091f\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7b09fef2ae2989a546c50a65add2091f\">&#9670;&#160;</a></span>TopologyRefinerFactoryBase</h2>\n \n <div class=\"memitem\">\n@@ -1113,20 +1113,20 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">friend</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00764_source.html#l00224\">224</a> of file <a class=\"el\" href=\"a00764_source.html\">topologyRefiner.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00224\">224</a> of file <a class=\"el\" href=\"a00833_source.html\">topologyRefiner.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/far/<a class=\"el\" href=\"a00764_source.html\">topologyRefiner.h</a></li>\n+<li>opensubdiv/far/<a class=\"el\" href=\"a00833_source.html\">topologyRefiner.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00908.html\">Far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01121.html\">TopologyRefiner</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01125.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01125.html", "unified_diff": "@@ -98,15 +98,15 @@\n   <div class=\"headertitle\"><div class=\"title\">TopologyRefiner::UniformOptions Struct Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Uniform refinement options.  \n  <a href=\"a01125.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00764_source.html\">topologyRefiner.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00833_source.html\">topologyRefiner.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\n Public Member Functions</h2></td></tr>\n <tr class=\"memitem:af20c4ed6bf53695afb4a978fdf472ed3\" id=\"r_af20c4ed6bf53695afb4a978fdf472ed3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01125.html#af20c4ed6bf53695afb4a978fdf472ed3\">UniformOptions</a> (int level)</td></tr>\n <tr class=\"separator:af20c4ed6bf53695afb4a978fdf472ed3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a47a5b6a174f91a113c7f50b1b55bd664\" id=\"r_a47a5b6a174f91a113c7f50b1b55bd664\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01125.html#a47a5b6a174f91a113c7f50b1b55bd664\">SetRefinementLevel</a> (int level)</td></tr>\n <tr class=\"memdesc:a47a5b6a174f91a113c7f50b1b55bd664\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Set uniform refinement level.  <br /></td></tr>\n@@ -123,15 +123,15 @@\n <tr class=\"separator:ad58e8c2606ce33af17bb83fb90eb7325\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p>Uniform refinement options. </p>\n <p>Options for uniform refinement, including the number of levels, vertex ordering and generation of topology information.</p>\n <p>Note the impact of the option to generate fullTopologyInLastLevel. Given subsequent levels of uniform refinement typically reguire 4x the data of the previous level, only the minimum amount of data is generated in the last level by default, i.e. a vertex and face-vertex list. If requiring topology traversal of the last level, e.g. inspecting edges or incident faces of vertices, the option to generate full topology in the last level should be enabled. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00764_source.html#l00118\">118</a> of file <a class=\"el\" href=\"a00764_source.html\">topologyRefiner.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00118\">118</a> of file <a class=\"el\" href=\"a00833_source.html\">topologyRefiner.h</a>.</p>\n </div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"af20c4ed6bf53695afb4a978fdf472ed3\" name=\"af20c4ed6bf53695afb4a978fdf472ed3\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af20c4ed6bf53695afb4a978fdf472ed3\">&#9670;&#160;</a></span>UniformOptions()</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n <table class=\"mlabels\">\n@@ -149,15 +149,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00764_source.html#l00120\">120</a> of file <a class=\"el\" href=\"a00764_source.html\">topologyRefiner.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00120\">120</a> of file <a class=\"el\" href=\"a00833_source.html\">topologyRefiner.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Member Function Documentation</h2>\n <a id=\"a47a5b6a174f91a113c7f50b1b55bd664\" name=\"a47a5b6a174f91a113c7f50b1b55bd664\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a47a5b6a174f91a113c7f50b1b55bd664\">&#9670;&#160;</a></span>SetRefinementLevel()</h2>\n \n@@ -180,15 +180,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Set uniform refinement level. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00764_source.html#l00126\">126</a> of file <a class=\"el\" href=\"a00764_source.html\">topologyRefiner.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00126\">126</a> of file <a class=\"el\" href=\"a00833_source.html\">topologyRefiner.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Member Data Documentation</h2>\n <a id=\"ad58e8c2606ce33af17bb83fb90eb7325\" name=\"ad58e8c2606ce33af17bb83fb90eb7325\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad58e8c2606ce33af17bb83fb90eb7325\">&#9670;&#160;</a></span>fullTopologyInLastLevel</h2>\n \n@@ -198,15 +198,15 @@\n         <tr>\n           <td class=\"memname\">unsigned int fullTopologyInLastLevel</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n <p>Skip topological relationships in the last level of refinement that are not needed for interpolation (keep false if using limit). </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00764_source.html#l00131\">131</a> of file <a class=\"el\" href=\"a00764_source.html\">topologyRefiner.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00131\">131</a> of file <a class=\"el\" href=\"a00833_source.html\">topologyRefiner.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a3b1e47f9568213cc322ef29a84c932b6\" name=\"a3b1e47f9568213cc322ef29a84c932b6\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3b1e47f9568213cc322ef29a84c932b6\">&#9670;&#160;</a></span>orderVerticesFromFacesFirst</h2>\n \n <div class=\"memitem\">\n@@ -215,15 +215,15 @@\n         <tr>\n           <td class=\"memname\">unsigned int orderVerticesFromFacesFirst</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n <p>Order child vertices from faces first instead of child vertices of vertices </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00764_source.html#l00129\">129</a> of file <a class=\"el\" href=\"a00764_source.html\">topologyRefiner.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00129\">129</a> of file <a class=\"el\" href=\"a00833_source.html\">topologyRefiner.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a240d1e5f5b743486e8122db6223d4562\" name=\"a240d1e5f5b743486e8122db6223d4562\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a240d1e5f5b743486e8122db6223d4562\">&#9670;&#160;</a></span>refinementLevel</h2>\n \n <div class=\"memitem\">\n@@ -233,20 +233,20 @@\n           <td class=\"memname\">unsigned int refinementLevel</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n <p>Number of refinement iterations. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00764_source.html#l00128\">128</a> of file <a class=\"el\" href=\"a00764_source.html\">topologyRefiner.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00128\">128</a> of file <a class=\"el\" href=\"a00833_source.html\">topologyRefiner.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li>opensubdiv/far/<a class=\"el\" href=\"a00764_source.html\">topologyRefiner.h</a></li>\n+<li>opensubdiv/far/<a class=\"el\" href=\"a00833_source.html\">topologyRefiner.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00908.html\">Far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01121.html\">TopologyRefiner</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01125.html\">UniformOptions</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01129.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01129.html", "unified_diff": "@@ -98,15 +98,15 @@\n   <div class=\"headertitle\"><div class=\"title\">TopologyRefiner::AdaptiveOptions Struct Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Adaptive refinement options.  \n  <a href=\"a01129.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00764_source.html\">topologyRefiner.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00833_source.html\">topologyRefiner.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\n Public Member Functions</h2></td></tr>\n <tr class=\"memitem:a3c39e6532871f8952e2f94332b8c80bf\" id=\"r_a3c39e6532871f8952e2f94332b8c80bf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01129.html#a3c39e6532871f8952e2f94332b8c80bf\">AdaptiveOptions</a> (int level)</td></tr>\n <tr class=\"separator:a3c39e6532871f8952e2f94332b8c80bf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a5ef292b43e4824968e72d664012be93f\" id=\"r_a5ef292b43e4824968e72d664012be93f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01129.html#a5ef292b43e4824968e72d664012be93f\">SetIsolationLevel</a> (int level)</td></tr>\n <tr class=\"memdesc:a5ef292b43e4824968e72d664012be93f\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Set isolation level.  <br /></td></tr>\n@@ -129,15 +129,15 @@\n <tr class=\"separator:a74c90a5955fcad9c95d4c18346f7c312\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a3b1e47f9568213cc322ef29a84c932b6\" id=\"r_a3b1e47f9568213cc322ef29a84c932b6\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">unsigned int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01129.html#a3b1e47f9568213cc322ef29a84c932b6\">orderVerticesFromFacesFirst</a>:1</td></tr>\n <tr class=\"separator:a3b1e47f9568213cc322ef29a84c932b6\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p>Adaptive refinement options. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00764_source.html#l00156\">156</a> of file <a class=\"el\" href=\"a00764_source.html\">topologyRefiner.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00156\">156</a> of file <a class=\"el\" href=\"a00833_source.html\">topologyRefiner.h</a>.</p>\n </div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"a3c39e6532871f8952e2f94332b8c80bf\" name=\"a3c39e6532871f8952e2f94332b8c80bf\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3c39e6532871f8952e2f94332b8c80bf\">&#9670;&#160;</a></span>AdaptiveOptions()</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n <table class=\"mlabels\">\n@@ -155,15 +155,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00764_source.html#l00158\">158</a> of file <a class=\"el\" href=\"a00764_source.html\">topologyRefiner.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00158\">158</a> of file <a class=\"el\" href=\"a00833_source.html\">topologyRefiner.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Member Function Documentation</h2>\n <a id=\"a5ef292b43e4824968e72d664012be93f\" name=\"a5ef292b43e4824968e72d664012be93f\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5ef292b43e4824968e72d664012be93f\">&#9670;&#160;</a></span>SetIsolationLevel()</h2>\n \n@@ -186,15 +186,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Set isolation level. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00764_source.html#l00167\">167</a> of file <a class=\"el\" href=\"a00764_source.html\">topologyRefiner.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00167\">167</a> of file <a class=\"el\" href=\"a00833_source.html\">topologyRefiner.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aef7c0b69c6709719e4d985ca7b5d6dd6\" name=\"aef7c0b69c6709719e4d985ca7b5d6dd6\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aef7c0b69c6709719e4d985ca7b5d6dd6\">&#9670;&#160;</a></span>SetSecondaryLevel()</h2>\n \n <div class=\"memitem\">\n@@ -216,15 +216,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Set secondary isolation level. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00764_source.html#l00170\">170</a> of file <a class=\"el\" href=\"a00764_source.html\">topologyRefiner.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00170\">170</a> of file <a class=\"el\" href=\"a00833_source.html\">topologyRefiner.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Member Data Documentation</h2>\n <a id=\"a74c90a5955fcad9c95d4c18346f7c312\" name=\"a74c90a5955fcad9c95d4c18346f7c312\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a74c90a5955fcad9c95d4c18346f7c312\">&#9670;&#160;</a></span>considerFVarChannels</h2>\n \n@@ -234,15 +234,15 @@\n         <tr>\n           <td class=\"memname\">unsigned int considerFVarChannels</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n <p>Inspect face-varying channels and isolate when irregular features present </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00764_source.html#l00180\">180</a> of file <a class=\"el\" href=\"a00764_source.html\">topologyRefiner.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00180\">180</a> of file <a class=\"el\" href=\"a00833_source.html\">topologyRefiner.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a5561c34bac948dc836506e8e8d3ee134\" name=\"a5561c34bac948dc836506e8e8d3ee134\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5561c34bac948dc836506e8e8d3ee134\">&#9670;&#160;</a></span>isolationLevel</h2>\n \n <div class=\"memitem\">\n@@ -251,15 +251,15 @@\n         <tr>\n           <td class=\"memname\">unsigned int isolationLevel</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n <p>Number of iterations applied to isolate extraordinary vertices and creases </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00764_source.html#l00172\">172</a> of file <a class=\"el\" href=\"a00764_source.html\">topologyRefiner.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00172\">172</a> of file <a class=\"el\" href=\"a00833_source.html\">topologyRefiner.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a3b1e47f9568213cc322ef29a84c932b6\" name=\"a3b1e47f9568213cc322ef29a84c932b6\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3b1e47f9568213cc322ef29a84c932b6\">&#9670;&#160;</a></span>orderVerticesFromFacesFirst</h2>\n \n <div class=\"memitem\">\n@@ -268,15 +268,15 @@\n         <tr>\n           <td class=\"memname\">unsigned int orderVerticesFromFacesFirst</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n <p>Order child vertices from faces first instead of child vertices of vertices </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00764_source.html#l00182\">182</a> of file <a class=\"el\" href=\"a00764_source.html\">topologyRefiner.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00182\">182</a> of file <a class=\"el\" href=\"a00833_source.html\">topologyRefiner.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a1c8854b9dd7ff2353b618434d08d054a\" name=\"a1c8854b9dd7ff2353b618434d08d054a\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1c8854b9dd7ff2353b618434d08d054a\">&#9670;&#160;</a></span>secondaryLevel</h2>\n \n <div class=\"memitem\">\n@@ -285,15 +285,15 @@\n         <tr>\n           <td class=\"memname\">unsigned int secondaryLevel</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n <p>Shallower level to stop isolation of smooth irregular features </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00764_source.html#l00174\">174</a> of file <a class=\"el\" href=\"a00764_source.html\">topologyRefiner.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00174\">174</a> of file <a class=\"el\" href=\"a00833_source.html\">topologyRefiner.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a5eba866952b7be15b065060b1f5a81da\" name=\"a5eba866952b7be15b065060b1f5a81da\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5eba866952b7be15b065060b1f5a81da\">&#9670;&#160;</a></span>useInfSharpPatch</h2>\n \n <div class=\"memitem\">\n@@ -302,15 +302,15 @@\n         <tr>\n           <td class=\"memname\">unsigned int useInfSharpPatch</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n <p>Use infinitely sharp patches and stop isolation where applicable </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00764_source.html#l00178\">178</a> of file <a class=\"el\" href=\"a00764_source.html\">topologyRefiner.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00178\">178</a> of file <a class=\"el\" href=\"a00833_source.html\">topologyRefiner.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a5834971432c649e28d5a0186f79a60d5\" name=\"a5834971432c649e28d5a0186f79a60d5\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5834971432c649e28d5a0186f79a60d5\">&#9670;&#160;</a></span>useSingleCreasePatch</h2>\n \n <div class=\"memitem\">\n@@ -319,20 +319,20 @@\n         <tr>\n           <td class=\"memname\">unsigned int useSingleCreasePatch</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n <p>Use 'single-crease' patch and stop isolation where applicable </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00764_source.html#l00176\">176</a> of file <a class=\"el\" href=\"a00764_source.html\">topologyRefiner.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00176\">176</a> of file <a class=\"el\" href=\"a00833_source.html\">topologyRefiner.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li>opensubdiv/far/<a class=\"el\" href=\"a00764_source.html\">topologyRefiner.h</a></li>\n+<li>opensubdiv/far/<a class=\"el\" href=\"a00833_source.html\">topologyRefiner.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00908.html\">Far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01121.html\">TopologyRefiner</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01129.html\">AdaptiveOptions</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01133.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01133.html", "unified_diff": "@@ -98,15 +98,15 @@\n   <div class=\"headertitle\"><div class=\"title\">TopologyRefinerFactoryBase Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Private base class of Factories for constructing TopologyRefiners.  \n  <a href=\"a01133.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00767_source.html\">topologyRefinerFactory.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00827_source.html\">topologyRefinerFactory.h</a>&gt;</code></p>\n <div class=\"dynheader\">\n Inheritance diagram for TopologyRefinerFactoryBase:</div>\n <div class=\"dyncontent\">\n  <div class=\"center\">\n   <img src=\"a01133.png\" usemap=\"#TopologyRefinerFactoryBase_map\" alt=\"\"/>\n   <map id=\"TopologyRefinerFactoryBase_map\" name=\"TopologyRefinerFactoryBase_map\">\n <area href=\"a01117.html\" title=\"Factory for constructing TopologyRefiners from specific mesh classes.\" alt=\"TopologyRefinerFactory&lt; MESH &gt;\" shape=\"rect\" coords=\"0,56,209,80\"/>\n@@ -129,15 +129,15 @@\n <tr class=\"memitem:ac800e6db9b484b31f8fa11799ee4ac1b\" id=\"r_ac800e6db9b484b31f8fa11799ee4ac1b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01133.html#ac800e6db9b484b31f8fa11799ee4ac1b\">prepareFaceVaryingChannels</a> (<a class=\"el\" href=\"a01121.html\">TopologyRefiner</a> &amp;refiner)</td></tr>\n <tr class=\"separator:ac800e6db9b484b31f8fa11799ee4ac1b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p>Private base class of Factories for constructing TopologyRefiners. </p>\n <p><a class=\"el\" href=\"a01133.html\" title=\"Private base class of Factories for constructing TopologyRefiners.\">TopologyRefinerFactoryBase</a> is the base class for subclasses that are intended to construct TopologyRefiners directly from meshes in their native representations. The subclasses are parameterized by the mesh type &lt;class MESH&gt; and are expected to inherit the details related to assembly and validation provided here that are independent of the subclass' mesh type. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00767_source.html#l00047\">47</a> of file <a class=\"el\" href=\"a00767_source.html\">topologyRefinerFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00827_source.html#l00047\">47</a> of file <a class=\"el\" href=\"a00827_source.html\">topologyRefinerFactory.h</a>.</p>\n </div><h2 class=\"groupheader\">Member Typedef Documentation</h2>\n <a id=\"a896a964625491e084b3d776acd10f053\" name=\"a896a964625491e084b3d776acd10f053\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a896a964625491e084b3d776acd10f053\">&#9670;&#160;</a></span>TopologyCallback</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n <table class=\"mlabels\">\n@@ -151,15 +151,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00767_source.html#l00054\">54</a> of file <a class=\"el\" href=\"a00767_source.html\">topologyRefinerFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00827_source.html#l00054\">54</a> of file <a class=\"el\" href=\"a00827_source.html\">topologyRefinerFactory.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Member Function Documentation</h2>\n <a id=\"a8d7f178267895f2a90585e60849b9119\" name=\"a8d7f178267895f2a90585e60849b9119\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8d7f178267895f2a90585e60849b9119\">&#9670;&#160;</a></span>prepareComponentTagsAndSharpness()</h2>\n \n@@ -283,15 +283,15 @@\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/far/<a class=\"el\" href=\"a00767_source.html\">topologyRefinerFactory.h</a></li>\n+<li>opensubdiv/far/<a class=\"el\" href=\"a00827_source.html\">topologyRefinerFactory.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00908.html\">Far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01133.html\">TopologyRefinerFactoryBase</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01137.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01137.html", "unified_diff": "@@ -98,15 +98,15 @@\n   <div class=\"headertitle\"><div class=\"title\">TopologyRefinerFactory&lt; MESH &gt;::Options Struct Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p><a class=\"el\" href=\"a01137.html\" title=\"Options related to the construction of each TopologyRefiner.\">Options</a> related to the construction of each <a class=\"el\" href=\"a01121.html\" title=\"Stores topology data for a specified set of refinement options.\">TopologyRefiner</a>.  \n  <a href=\"a01137.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00767_source.html\">topologyRefinerFactory.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00827_source.html\">topologyRefinerFactory.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\n Public Member Functions</h2></td></tr>\n <tr class=\"memitem:a33cde130beeee5dd5125d2c188b1a088\" id=\"r_a33cde130beeee5dd5125d2c188b1a088\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01137.html#a33cde130beeee5dd5125d2c188b1a088\">Options</a> (<a class=\"el\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833d\">Sdc::SchemeType</a> sdcType=<a class=\"el\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833da29c9704ef8a61670dfc242b6e6b82a9f\">Sdc::SCHEME_CATMARK</a>, <a class=\"el\" href=\"a01337.html\">Sdc::Options</a> sdcOptions=<a class=\"el\" href=\"a01337.html\">Sdc::Options</a>())</td></tr>\n <tr class=\"separator:a33cde130beeee5dd5125d2c188b1a088\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\n@@ -119,15 +119,15 @@\n <tr class=\"memitem:adaa22b025e8615d6e4281a86b794e5df\" id=\"r_adaa22b025e8615d6e4281a86b794e5df\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">unsigned int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01137.html#adaa22b025e8615d6e4281a86b794e5df\">validateFullTopology</a>: 1</td></tr>\n <tr class=\"separator:adaa22b025e8615d6e4281a86b794e5df\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><div class=\"compoundTemplParams\">template&lt;class MESH&gt;<br />\n struct OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory&lt; MESH &gt;::Options</div><p><a class=\"el\" href=\"a01137.html\" title=\"Options related to the construction of each TopologyRefiner.\">Options</a> related to the construction of each <a class=\"el\" href=\"a01121.html\" title=\"Stores topology data for a specified set of refinement options.\">TopologyRefiner</a>. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00767_source.html#l00084\">84</a> of file <a class=\"el\" href=\"a00767_source.html\">topologyRefinerFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00827_source.html#l00084\">84</a> of file <a class=\"el\" href=\"a00827_source.html\">topologyRefinerFactory.h</a>.</p>\n </div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"a33cde130beeee5dd5125d2c188b1a088\" name=\"a33cde130beeee5dd5125d2c188b1a088\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a33cde130beeee5dd5125d2c188b1a088\">&#9670;&#160;</a></span>Options()</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n <div class=\"memtemplate\">\n@@ -157,15 +157,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00767_source.html#l00086\">86</a> of file <a class=\"el\" href=\"a00767_source.html\">topologyRefinerFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00827_source.html#l00086\">86</a> of file <a class=\"el\" href=\"a00827_source.html\">topologyRefinerFactory.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Member Data Documentation</h2>\n <a id=\"a9ec2ab2b4bd49c6cf367dac80c8cbb94\" name=\"a9ec2ab2b4bd49c6cf367dac80c8cbb94\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9ec2ab2b4bd49c6cf367dac80c8cbb94\">&#9670;&#160;</a></span>schemeOptions</h2>\n \n@@ -177,15 +177,15 @@\n         <tr>\n           <td class=\"memname\"><a class=\"el\" href=\"a01337.html\">Sdc::Options</a> schemeOptions</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n <p>The full set of options for the scheme, e.g. boundary interpolation rules... </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00767_source.html#l00092\">92</a> of file <a class=\"el\" href=\"a00767_source.html\">topologyRefinerFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00827_source.html#l00092\">92</a> of file <a class=\"el\" href=\"a00827_source.html\">topologyRefinerFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ab4a105466e7c764e3aabaa6c44c1eeb6\" name=\"ab4a105466e7c764e3aabaa6c44c1eeb6\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab4a105466e7c764e3aabaa6c44c1eeb6\">&#9670;&#160;</a></span>schemeType</h2>\n \n <div class=\"memitem\">\n@@ -197,15 +197,15 @@\n           <td class=\"memname\"><a class=\"el\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833d\">Sdc::SchemeType</a> schemeType</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n <p>The subdivision scheme type identifier. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00767_source.html#l00091\">91</a> of file <a class=\"el\" href=\"a00767_source.html\">topologyRefinerFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00827_source.html#l00091\">91</a> of file <a class=\"el\" href=\"a00827_source.html\">topologyRefinerFactory.h</a>.</p>\n \n </div>\n </div>\n <a id=\"adaa22b025e8615d6e4281a86b794e5df\" name=\"adaa22b025e8615d6e4281a86b794e5df\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adaa22b025e8615d6e4281a86b794e5df\">&#9670;&#160;</a></span>validateFullTopology</h2>\n \n <div class=\"memitem\">\n@@ -216,20 +216,20 @@\n         <tr>\n           <td class=\"memname\">unsigned int validateFullTopology</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n <p>Apply more extensive validation of the constructed topology &ndash; intended for debugging. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00767_source.html#l00094\">94</a> of file <a class=\"el\" href=\"a00767_source.html\">topologyRefinerFactory.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00827_source.html#l00094\">94</a> of file <a class=\"el\" href=\"a00827_source.html\">topologyRefinerFactory.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li>opensubdiv/far/<a class=\"el\" href=\"a00767_source.html\">topologyRefinerFactory.h</a></li>\n+<li>opensubdiv/far/<a class=\"el\" href=\"a00827_source.html\">topologyRefinerFactory.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00908.html\">Far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01117.html\">TopologyRefinerFactory</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01137.html\">Options</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01141.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01141.html", "unified_diff": "@@ -98,15 +98,15 @@\n   <div class=\"headertitle\"><div class=\"title\">BufferDescriptor Struct Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p><a class=\"el\" href=\"a01141.html\" title=\"BufferDescriptor is a struct which describes buffer elements in interleaved data buffers....\">BufferDescriptor</a> is a struct which describes buffer elements in interleaved data buffers. Almost all <a class=\"el\" href=\"a00912.html\">Osd</a> Evaluator APIs take BufferDescriptors along with device-specific buffer objects.  \n  <a href=\"a01141.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00866_source.html\">bufferDescriptor.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00764_source.html\">bufferDescriptor.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\n Public Member Functions</h2></td></tr>\n <tr class=\"memitem:a446218762f5de8c77d06ee61e14b6b61\" id=\"r_a446218762f5de8c77d06ee61e14b6b61\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01141.html#a446218762f5de8c77d06ee61e14b6b61\">BufferDescriptor</a> ()</td></tr>\n <tr class=\"memdesc:a446218762f5de8c77d06ee61e14b6b61\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Default Constructor.  <br /></td></tr>\n <tr class=\"separator:a446218762f5de8c77d06ee61e14b6b61\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a958068066d1d10ae2a452ac57d9c0401\" id=\"r_a958068066d1d10ae2a452ac57d9c0401\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01141.html#a958068066d1d10ae2a452ac57d9c0401\">BufferDescriptor</a> (int o, int l, int s)</td></tr>\n@@ -143,15 +143,15 @@\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p><a class=\"el\" href=\"a01141.html\" title=\"BufferDescriptor is a struct which describes buffer elements in interleaved data buffers....\">BufferDescriptor</a> is a struct which describes buffer elements in interleaved data buffers. Almost all <a class=\"el\" href=\"a00912.html\">Osd</a> Evaluator APIs take BufferDescriptors along with device-specific buffer objects. </p>\n <p>The offset of <a class=\"el\" href=\"a01141.html\" title=\"BufferDescriptor is a struct which describes buffer elements in interleaved data buffers....\">BufferDescriptor</a> can also be used to express a batching offset if the data buffer is combined across multiple objects together.</p>\n <ul>\n <li>Note that each element has the same data type (float) </li>\n </ul>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00866_source.html#l00061\">61</a> of file <a class=\"el\" href=\"a00866_source.html\">bufferDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00764_source.html#l00061\">61</a> of file <a class=\"el\" href=\"a00764_source.html\">bufferDescriptor.h</a>.</p>\n </div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"a446218762f5de8c77d06ee61e14b6b61\" name=\"a446218762f5de8c77d06ee61e14b6b61\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a446218762f5de8c77d06ee61e14b6b61\">&#9670;&#160;</a></span>BufferDescriptor() <span class=\"overload\">[1/2]</span></h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n <table class=\"mlabels\">\n@@ -170,15 +170,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Default Constructor. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00866_source.html#l00064\">64</a> of file <a class=\"el\" href=\"a00866_source.html\">bufferDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00764_source.html#l00064\">64</a> of file <a class=\"el\" href=\"a00764_source.html\">bufferDescriptor.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a958068066d1d10ae2a452ac57d9c0401\" name=\"a958068066d1d10ae2a452ac57d9c0401\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a958068066d1d10ae2a452ac57d9c0401\">&#9670;&#160;</a></span>BufferDescriptor() <span class=\"overload\">[2/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -216,15 +216,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Constructor. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00866_source.html#l00067\">67</a> of file <a class=\"el\" href=\"a00866_source.html\">bufferDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00764_source.html#l00067\">67</a> of file <a class=\"el\" href=\"a00764_source.html\">bufferDescriptor.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Member Function Documentation</h2>\n <a id=\"ae3d9db59ffddaff0873246935222c6a8\" name=\"ae3d9db59ffddaff0873246935222c6a8\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae3d9db59ffddaff0873246935222c6a8\">&#9670;&#160;</a></span>GetLocalOffset()</h2>\n \n@@ -246,15 +246,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the relative offset within a stride. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00866_source.html#l00070\">70</a> of file <a class=\"el\" href=\"a00866_source.html\">bufferDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00764_source.html#l00070\">70</a> of file <a class=\"el\" href=\"a00764_source.html\">bufferDescriptor.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ac532c4b500b1a85ea22217f2c65a70ed\" name=\"ac532c4b500b1a85ea22217f2c65a70ed\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac532c4b500b1a85ea22217f2c65a70ed\">&#9670;&#160;</a></span>IsValid()</h2>\n \n <div class=\"memitem\">\n@@ -275,15 +275,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>True if the descriptor values are internally consistent. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00866_source.html#l00075\">75</a> of file <a class=\"el\" href=\"a00866_source.html\">bufferDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00764_source.html#l00075\">75</a> of file <a class=\"el\" href=\"a00764_source.html\">bufferDescriptor.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a9f79e5aef7aa7198087e68c98c9804d3\" name=\"a9f79e5aef7aa7198087e68c98c9804d3\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9f79e5aef7aa7198087e68c98c9804d3\">&#9670;&#160;</a></span>operator!=()</h2>\n \n <div class=\"memitem\">\n@@ -305,15 +305,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>True if the descriptors are not identical. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00866_source.html#l00093\">93</a> of file <a class=\"el\" href=\"a00866_source.html\">bufferDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00764_source.html#l00093\">93</a> of file <a class=\"el\" href=\"a00764_source.html\">bufferDescriptor.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aaff9aa09cae91e39d5422c8cfc878ba5\" name=\"aaff9aa09cae91e39d5422c8cfc878ba5\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aaff9aa09cae91e39d5422c8cfc878ba5\">&#9670;&#160;</a></span>operator==()</h2>\n \n <div class=\"memitem\">\n@@ -335,15 +335,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>True if the descriptors are identical. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00866_source.html#l00086\">86</a> of file <a class=\"el\" href=\"a00866_source.html\">bufferDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00764_source.html#l00086\">86</a> of file <a class=\"el\" href=\"a00764_source.html\">bufferDescriptor.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a372de693ad40b3f42839c8ec6ac845f4\" name=\"a372de693ad40b3f42839c8ec6ac845f4\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a372de693ad40b3f42839c8ec6ac845f4\">&#9670;&#160;</a></span>Reset()</h2>\n \n <div class=\"memitem\">\n@@ -364,15 +364,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Resets the descriptor to default. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00866_source.html#l00081\">81</a> of file <a class=\"el\" href=\"a00866_source.html\">bufferDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00764_source.html#l00081\">81</a> of file <a class=\"el\" href=\"a00764_source.html\">bufferDescriptor.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Member Data Documentation</h2>\n <a id=\"a9f59b34b1f25fe00023291b678246bcc\" name=\"a9f59b34b1f25fe00023291b678246bcc\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9f59b34b1f25fe00023291b678246bcc\">&#9670;&#160;</a></span>length</h2>\n \n@@ -383,15 +383,15 @@\n           <td class=\"memname\">int length</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n <p>number or length of the data </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00866_source.html#l00100\">100</a> of file <a class=\"el\" href=\"a00866_source.html\">bufferDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00764_source.html#l00100\">100</a> of file <a class=\"el\" href=\"a00764_source.html\">bufferDescriptor.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aed7ea92f45bd273dde380a45ddced592\" name=\"aed7ea92f45bd273dde380a45ddced592\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aed7ea92f45bd273dde380a45ddced592\">&#9670;&#160;</a></span>offset</h2>\n \n <div class=\"memitem\">\n@@ -401,15 +401,15 @@\n           <td class=\"memname\">int offset</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n <p>offset to desired element data </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00866_source.html#l00098\">98</a> of file <a class=\"el\" href=\"a00866_source.html\">bufferDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00764_source.html#l00098\">98</a> of file <a class=\"el\" href=\"a00764_source.html\">bufferDescriptor.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a08f66a6870d87afcd5dc1b60d1019692\" name=\"a08f66a6870d87afcd5dc1b60d1019692\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a08f66a6870d87afcd5dc1b60d1019692\">&#9670;&#160;</a></span>stride</h2>\n \n <div class=\"memitem\">\n@@ -419,20 +419,20 @@\n           <td class=\"memname\">int stride</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n <p>stride to the next element </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00866_source.html#l00102\">102</a> of file <a class=\"el\" href=\"a00866_source.html\">bufferDescriptor.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00764_source.html#l00102\">102</a> of file <a class=\"el\" href=\"a00764_source.html\">bufferDescriptor.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li>opensubdiv/osd/<a class=\"el\" href=\"a00866_source.html\">bufferDescriptor.h</a></li>\n+<li>opensubdiv/osd/<a class=\"el\" href=\"a00764_source.html\">bufferDescriptor.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00912.html\">Osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01141.html\">BufferDescriptor</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01145.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01145.html", "unified_diff": "@@ -98,15 +98,15 @@\n   <div class=\"headertitle\"><div class=\"title\">CLStencilTable Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>OpenCL stencil table.  \n  <a href=\"a01145.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00830_source.html\">clEvaluator.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00749_source.html\">clEvaluator.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\n Public Member Functions</h2></td></tr>\n <tr class=\"memitem:a33ca6bb1dba9f8e390a58395d164431e\" id=\"r_a33ca6bb1dba9f8e390a58395d164431e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01145.html#a33ca6bb1dba9f8e390a58395d164431e\">CLStencilTable</a> (<a class=\"el\" href=\"a01065.html\">Far::StencilTable</a> const *stencilTable, cl_context clContext)</td></tr>\n <tr class=\"separator:a33ca6bb1dba9f8e390a58395d164431e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:af2994e79cf93c872e39659321750351a\" id=\"r_af2994e79cf93c872e39659321750351a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01145.html#af2994e79cf93c872e39659321750351a\">CLStencilTable</a> (<a class=\"el\" href=\"a01081.html\">Far::LimitStencilTable</a> const *limitStencilTable, cl_context clContext)</td></tr>\n <tr class=\"separator:af2994e79cf93c872e39659321750351a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n@@ -143,15 +143,15 @@\n <tr class=\"separator:a474edc933635aca814471b8d48950a0e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p>OpenCL stencil table. </p>\n <p>This class is an OpenCL buffer representation of <a class=\"el\" href=\"a01065.html\" title=\"Stencil table class wrapping the template for compatibility.\">Far::StencilTable</a>.</p>\n <p>CLCompute consumes this table to apply stencils </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00830_source.html#l00052\">52</a> of file <a class=\"el\" href=\"a00830_source.html\">clEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00749_source.html#l00052\">52</a> of file <a class=\"el\" href=\"a00749_source.html\">clEvaluator.h</a>.</p>\n </div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"a33ca6bb1dba9f8e390a58395d164431e\" name=\"a33ca6bb1dba9f8e390a58395d164431e\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a33ca6bb1dba9f8e390a58395d164431e\">&#9670;&#160;</a></span>CLStencilTable() <span class=\"overload\">[1/2]</span></h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n       <table class=\"memname\">\n@@ -255,15 +255,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00830_source.html#l00061\">61</a> of file <a class=\"el\" href=\"a00830_source.html\">clEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00749_source.html#l00061\">61</a> of file <a class=\"el\" href=\"a00749_source.html\">clEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ad4e05c20d99b64b2160c1a0c96cb0c01\" name=\"ad4e05c20d99b64b2160c1a0c96cb0c01\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad4e05c20d99b64b2160c1a0c96cb0c01\">&#9670;&#160;</a></span>Create() <span class=\"overload\">[2/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -295,15 +295,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00830_source.html#l00055\">55</a> of file <a class=\"el\" href=\"a00830_source.html\">clEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00749_source.html#l00055\">55</a> of file <a class=\"el\" href=\"a00749_source.html\">clEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a9a1d122f4bea431331fa542cf6dee1f6\" name=\"a9a1d122f4bea431331fa542cf6dee1f6\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9a1d122f4bea431331fa542cf6dee1f6\">&#9670;&#160;</a></span>GetDuuWeightsBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -322,15 +322,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00830_source.html#l00080\">80</a> of file <a class=\"el\" href=\"a00830_source.html\">clEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00749_source.html#l00080\">80</a> of file <a class=\"el\" href=\"a00749_source.html\">clEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aa79d14d151020f9298c742c3072e7fc9\" name=\"aa79d14d151020f9298c742c3072e7fc9\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa79d14d151020f9298c742c3072e7fc9\">&#9670;&#160;</a></span>GetDuvWeightsBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -349,15 +349,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00830_source.html#l00081\">81</a> of file <a class=\"el\" href=\"a00830_source.html\">clEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00749_source.html#l00081\">81</a> of file <a class=\"el\" href=\"a00749_source.html\">clEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aab6c794e109053815894e2314f05564b\" name=\"aab6c794e109053815894e2314f05564b\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aab6c794e109053815894e2314f05564b\">&#9670;&#160;</a></span>GetDuWeightsBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -376,15 +376,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00830_source.html#l00078\">78</a> of file <a class=\"el\" href=\"a00830_source.html\">clEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00749_source.html#l00078\">78</a> of file <a class=\"el\" href=\"a00749_source.html\">clEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a015241b43d27300535376319ae7b6dc4\" name=\"a015241b43d27300535376319ae7b6dc4\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a015241b43d27300535376319ae7b6dc4\">&#9670;&#160;</a></span>GetDvvWeightsBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -403,15 +403,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00830_source.html#l00082\">82</a> of file <a class=\"el\" href=\"a00830_source.html\">clEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00749_source.html#l00082\">82</a> of file <a class=\"el\" href=\"a00749_source.html\">clEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aa1550324554767683ae2bf0317e6bad6\" name=\"aa1550324554767683ae2bf0317e6bad6\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa1550324554767683ae2bf0317e6bad6\">&#9670;&#160;</a></span>GetDvWeightsBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -430,15 +430,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00830_source.html#l00079\">79</a> of file <a class=\"el\" href=\"a00830_source.html\">clEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00749_source.html#l00079\">79</a> of file <a class=\"el\" href=\"a00749_source.html\">clEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a5cbc4ec76e497871b20b4ef91f5f054f\" name=\"a5cbc4ec76e497871b20b4ef91f5f054f\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5cbc4ec76e497871b20b4ef91f5f054f\">&#9670;&#160;</a></span>GetIndicesBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -457,15 +457,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00830_source.html#l00076\">76</a> of file <a class=\"el\" href=\"a00830_source.html\">clEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00749_source.html#l00076\">76</a> of file <a class=\"el\" href=\"a00749_source.html\">clEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a65836d2070b943c8fecbad926d074de2\" name=\"a65836d2070b943c8fecbad926d074de2\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a65836d2070b943c8fecbad926d074de2\">&#9670;&#160;</a></span>GetNumStencils()</h2>\n \n <div class=\"memitem\">\n@@ -484,15 +484,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00830_source.html#l00083\">83</a> of file <a class=\"el\" href=\"a00830_source.html\">clEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00749_source.html#l00083\">83</a> of file <a class=\"el\" href=\"a00749_source.html\">clEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a3bd38b85fd2bea1c4d2018d2f8e177a3\" name=\"a3bd38b85fd2bea1c4d2018d2f8e177a3\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3bd38b85fd2bea1c4d2018d2f8e177a3\">&#9670;&#160;</a></span>GetOffsetsBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -511,15 +511,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00830_source.html#l00075\">75</a> of file <a class=\"el\" href=\"a00830_source.html\">clEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00749_source.html#l00075\">75</a> of file <a class=\"el\" href=\"a00749_source.html\">clEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a65e52572efdebb80844185aada8d5951\" name=\"a65e52572efdebb80844185aada8d5951\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a65e52572efdebb80844185aada8d5951\">&#9670;&#160;</a></span>GetSizesBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -538,15 +538,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00830_source.html#l00074\">74</a> of file <a class=\"el\" href=\"a00830_source.html\">clEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00749_source.html#l00074\">74</a> of file <a class=\"el\" href=\"a00749_source.html\">clEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"af37e0ab1fae60f201db4eb21ff7e941e\" name=\"af37e0ab1fae60f201db4eb21ff7e941e\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af37e0ab1fae60f201db4eb21ff7e941e\">&#9670;&#160;</a></span>GetWeightsBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -565,20 +565,20 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00830_source.html#l00077\">77</a> of file <a class=\"el\" href=\"a00830_source.html\">clEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00749_source.html#l00077\">77</a> of file <a class=\"el\" href=\"a00749_source.html\">clEvaluator.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/osd/<a class=\"el\" href=\"a00830_source.html\">clEvaluator.h</a></li>\n+<li>opensubdiv/osd/<a class=\"el\" href=\"a00749_source.html\">clEvaluator.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00912.html\">Osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01145.html\">CLStencilTable</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01149.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01149.html", "unified_diff": "@@ -96,15 +96,15 @@\n <a href=\"#pub-methods\">Public Member Functions</a> &#124;\n <a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n <a href=\"a01146.html\">List of all members</a>  </div>\n   <div class=\"headertitle\"><div class=\"title\">CLEvaluator Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00830_source.html\">clEvaluator.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00749_source.html\">clEvaluator.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\n Public Types</h2></td></tr>\n <tr class=\"memitem:a2c24b70c9312d8dff3fecb9ddea52c44\" id=\"r_a2c24b70c9312d8dff3fecb9ddea52c44\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01149.html#a2c24b70c9312d8dff3fecb9ddea52c44\">Instantiatable</a></td></tr>\n <tr class=\"separator:a2c24b70c9312d8dff3fecb9ddea52c44\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\n@@ -245,29 +245,29 @@\n <tr class=\"memdesc:a7e77f811e9d48160701e705bb4300388\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Wait the OpenCL kernels finish.  <br /></td></tr>\n <tr class=\"separator:a7e77f811e9d48160701e705bb4300388\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a0529a707250f9931f945ec49d4e428d2\" id=\"r_a0529a707250f9931f945ec49d4e428d2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01149.html#a0529a707250f9931f945ec49d4e428d2\">Synchronize</a> (cl_command_queue queue)</td></tr>\n <tr class=\"separator:a0529a707250f9931f945ec49d4e428d2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\">\n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00830_source.html#l00100\">100</a> of file <a class=\"el\" href=\"a00830_source.html\">clEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00749_source.html#l00100\">100</a> of file <a class=\"el\" href=\"a00749_source.html\">clEvaluator.h</a>.</p>\n </div><h2 class=\"groupheader\">Member Typedef Documentation</h2>\n <a id=\"a2c24b70c9312d8dff3fecb9ddea52c44\" name=\"a2c24b70c9312d8dff3fecb9ddea52c44\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2c24b70c9312d8dff3fecb9ddea52c44\">&#9670;&#160;</a></span>Instantiatable</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">typedef bool <a class=\"el\" href=\"a01149.html#a2c24b70c9312d8dff3fecb9ddea52c44\">Instantiatable</a></td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00830_source.html#l00102\">102</a> of file <a class=\"el\" href=\"a00830_source.html\">clEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00749_source.html#l00102\">102</a> of file <a class=\"el\" href=\"a00749_source.html\">clEvaluator.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"adbb0aafb7db3284f164499e8007c4cac\" name=\"adbb0aafb7db3284f164499e8007c4cac\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adbb0aafb7db3284f164499e8007c4cac\">&#9670;&#160;</a></span>CLEvaluator()</h2>\n \n@@ -452,15 +452,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00830_source.html#l00145\">145</a> of file <a class=\"el\" href=\"a00830_source.html\">clEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00749_source.html#l00145\">145</a> of file <a class=\"el\" href=\"a00749_source.html\">clEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a49cef5f95d8dec6c11fc1dd62dcd7045\" name=\"a49cef5f95d8dec6c11fc1dd62dcd7045\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a49cef5f95d8dec6c11fc1dd62dcd7045\">&#9670;&#160;</a></span>Create() <span class=\"overload\">[2/4]</span></h2>\n \n <div class=\"memitem\">\n@@ -530,15 +530,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Generic creator template. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00830_source.html#l00131\">131</a> of file <a class=\"el\" href=\"a00830_source.html\">clEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00749_source.html#l00131\">131</a> of file <a class=\"el\" href=\"a00749_source.html\">clEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a1243e4560da0f71a3dcd290772548d98\" name=\"a1243e4560da0f71a3dcd290772548d98\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1243e4560da0f71a3dcd290772548d98\">&#9670;&#160;</a></span>Create() <span class=\"overload\">[3/4]</span></h2>\n \n <div class=\"memitem\">\n@@ -592,15 +592,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00830_source.html#l00116\">116</a> of file <a class=\"el\" href=\"a00830_source.html\">clEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00749_source.html#l00116\">116</a> of file <a class=\"el\" href=\"a00749_source.html\">clEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a3a2faa1170cedd851fea7266e0ff7eda\" name=\"a3a2faa1170cedd851fea7266e0ff7eda\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3a2faa1170cedd851fea7266e0ff7eda\">&#9670;&#160;</a></span>Create() <span class=\"overload\">[4/4]</span></h2>\n \n <div class=\"memitem\">\n@@ -652,15 +652,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Generic creator template. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00830_source.html#l00106\">106</a> of file <a class=\"el\" href=\"a00830_source.html\">clEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00749_source.html#l00106\">106</a> of file <a class=\"el\" href=\"a00749_source.html\">clEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a4d6d90d5c4b0237cbeab58062dbdf5c8\" name=\"a4d6d90d5c4b0237cbeab58062dbdf5c8\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4d6d90d5c4b0237cbeab58062dbdf5c8\">&#9670;&#160;</a></span>EvalPatches() <span class=\"overload\">[1/8]</span></h2>\n \n <div class=\"memitem\">\n@@ -1101,15 +1101,15 @@\n     <tr><td class=\"paramname\">numStartEvents</td><td>the number of events in the array pointed to by startEvents.</td></tr>\n     <tr><td class=\"paramname\">startEvents</td><td>points to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately.</td></tr>\n     <tr><td class=\"paramname\">endEvent</td><td>pointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required. </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00830_source.html#l01125\">1125</a> of file <a class=\"el\" href=\"a00830_source.html\">clEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00749_source.html#l01125\">1125</a> of file <a class=\"el\" href=\"a00749_source.html\">clEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a28ceea444575e321b0e98cb33fd0ed61\" name=\"a28ceea444575e321b0e98cb33fd0ed61\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a28ceea444575e321b0e98cb33fd0ed61\">&#9670;&#160;</a></span>EvalPatches() <span class=\"overload\">[4/8]</span></h2>\n \n <div class=\"memitem\">\n@@ -1276,15 +1276,15 @@\n     <tr><td class=\"paramname\">numStartEvents</td><td>the number of events in the array pointed to by startEvents.</td></tr>\n     <tr><td class=\"paramname\">startEvents</td><td>points to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately.</td></tr>\n     <tr><td class=\"paramname\">endEvent</td><td>pointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required. </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00830_source.html#l01379\">1379</a> of file <a class=\"el\" href=\"a00830_source.html\">clEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00749_source.html#l01379\">1379</a> of file <a class=\"el\" href=\"a00749_source.html\">clEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ab011f671d8598811f0ed39a28616f908\" name=\"ab011f671d8598811f0ed39a28616f908\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab011f671d8598811f0ed39a28616f908\">&#9670;&#160;</a></span>EvalPatches() <span class=\"overload\">[5/8]</span></h2>\n \n <div class=\"memitem\">\n@@ -1423,15 +1423,15 @@\n     <tr><td class=\"paramname\">numStartEvents</td><td>the number of events in the array pointed to by startEvents.</td></tr>\n     <tr><td class=\"paramname\">startEvents</td><td>points to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately.</td></tr>\n     <tr><td class=\"paramname\">endEvent</td><td>pointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required. </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00830_source.html#l01003\">1003</a> of file <a class=\"el\" href=\"a00830_source.html\">clEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00749_source.html#l01003\">1003</a> of file <a class=\"el\" href=\"a00749_source.html\">clEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ad62bdcb72a8d878f80a6e6a53abebccd\" name=\"ad62bdcb72a8d878f80a6e6a53abebccd\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad62bdcb72a8d878f80a6e6a53abebccd\">&#9670;&#160;</a></span>EvalPatches() <span class=\"overload\">[6/8]</span></h2>\n \n <div class=\"memitem\">\n@@ -1556,15 +1556,15 @@\n     <tr><td class=\"paramname\">numStartEvents</td><td>the number of events in the array pointed to by startEvents.</td></tr>\n     <tr><td class=\"paramname\">startEvents</td><td>points to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately.</td></tr>\n     <tr><td class=\"paramname\">endEvent</td><td>pointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required. </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00830_source.html#l01288\">1288</a> of file <a class=\"el\" href=\"a00830_source.html\">clEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00749_source.html#l01288\">1288</a> of file <a class=\"el\" href=\"a00749_source.html\">clEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ab5cae7e895f2efe955b27ae3dafccfd2\" name=\"ab5cae7e895f2efe955b27ae3dafccfd2\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab5cae7e895f2efe955b27ae3dafccfd2\">&#9670;&#160;</a></span>EvalPatches() <span class=\"overload\">[7/8]</span></h2>\n \n <div class=\"memitem\">\n@@ -1678,15 +1678,15 @@\n     <tr><td class=\"paramname\">numStartEvents</td><td>the number of events in the array pointed to by startEvents.</td></tr>\n     <tr><td class=\"paramname\">startEvents</td><td>points to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately.</td></tr>\n     <tr><td class=\"paramname\">endEvent</td><td>pointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required. </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00830_source.html#l00902\">902</a> of file <a class=\"el\" href=\"a00830_source.html\">clEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00749_source.html#l00902\">902</a> of file <a class=\"el\" href=\"a00749_source.html\">clEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a7053fc9101b3f27878eb21c1d96a6421\" name=\"a7053fc9101b3f27878eb21c1d96a6421\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7053fc9101b3f27878eb21c1d96a6421\">&#9670;&#160;</a></span>EvalPatches() <span class=\"overload\">[8/8]</span></h2>\n \n <div class=\"memitem\">\n@@ -1783,15 +1783,15 @@\n     <tr><td class=\"paramname\">numStartEvents</td><td>the number of events in the array pointed to by startEvents.</td></tr>\n     <tr><td class=\"paramname\">startEvents</td><td>points to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately.</td></tr>\n     <tr><td class=\"paramname\">endEvent</td><td>pointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required. </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00830_source.html#l01217\">1217</a> of file <a class=\"el\" href=\"a00830_source.html\">clEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00749_source.html#l01217\">1217</a> of file <a class=\"el\" href=\"a00749_source.html\">clEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aa55b9dc6ee02d2a3beb2f85df1794afb\" name=\"aa55b9dc6ee02d2a3beb2f85df1794afb\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa55b9dc6ee02d2a3beb2f85df1794afb\">&#9670;&#160;</a></span>EvalPatchesFaceVarying() <span class=\"overload\">[1/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -1979,15 +1979,15 @@\n     <tr><td class=\"paramname\">numStartEvents</td><td>the number of events in the array pointed to by startEvents.</td></tr>\n     <tr><td class=\"paramname\">startEvents</td><td>points to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately.</td></tr>\n     <tr><td class=\"paramname\">endEvent</td><td>pointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required. </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00830_source.html#l02437\">2437</a> of file <a class=\"el\" href=\"a00830_source.html\">clEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00749_source.html#l02437\">2437</a> of file <a class=\"el\" href=\"a00749_source.html\">clEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a67b59f584f05e87e91b371cb3744f137\" name=\"a67b59f584f05e87e91b371cb3744f137\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a67b59f584f05e87e91b371cb3744f137\">&#9670;&#160;</a></span>EvalPatchesFaceVarying() <span class=\"overload\">[2/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -2161,15 +2161,15 @@\n     <tr><td class=\"paramname\">numStartEvents</td><td>the number of events in the array pointed to by startEvents.</td></tr>\n     <tr><td class=\"paramname\">startEvents</td><td>points to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately.</td></tr>\n     <tr><td class=\"paramname\">endEvent</td><td>pointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required. </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00830_source.html#l02564\">2564</a> of file <a class=\"el\" href=\"a00830_source.html\">clEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00749_source.html#l02564\">2564</a> of file <a class=\"el\" href=\"a00749_source.html\">clEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a1f66ce14f335d4a575fc95365bf811d9\" name=\"a1f66ce14f335d4a575fc95365bf811d9\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1f66ce14f335d4a575fc95365bf811d9\">&#9670;&#160;</a></span>EvalPatchesFaceVarying() <span class=\"overload\">[3/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -2315,15 +2315,15 @@\n     <tr><td class=\"paramname\">numStartEvents</td><td>the number of events in the array pointed to by startEvents.</td></tr>\n     <tr><td class=\"paramname\">startEvents</td><td>points to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately.</td></tr>\n     <tr><td class=\"paramname\">endEvent</td><td>pointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required. </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00830_source.html#l02231\">2231</a> of file <a class=\"el\" href=\"a00830_source.html\">clEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00749_source.html#l02231\">2231</a> of file <a class=\"el\" href=\"a00749_source.html\">clEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aa479c7900943eed61feede277083eb08\" name=\"aa479c7900943eed61feede277083eb08\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa479c7900943eed61feede277083eb08\">&#9670;&#160;</a></span>EvalPatchesFaceVarying() <span class=\"overload\">[4/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -2455,15 +2455,15 @@\n     <tr><td class=\"paramname\">numStartEvents</td><td>the number of events in the array pointed to by startEvents.</td></tr>\n     <tr><td class=\"paramname\">startEvents</td><td>points to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately.</td></tr>\n     <tr><td class=\"paramname\">endEvent</td><td>pointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required. </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00830_source.html#l02329\">2329</a> of file <a class=\"el\" href=\"a00830_source.html\">clEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00749_source.html#l02329\">2329</a> of file <a class=\"el\" href=\"a00749_source.html\">clEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a4306bdafdbba79ec4c659b9743701955\" name=\"a4306bdafdbba79ec4c659b9743701955\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4306bdafdbba79ec4c659b9743701955\">&#9670;&#160;</a></span>EvalPatchesFaceVarying() <span class=\"overload\">[5/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -2581,15 +2581,15 @@\n     <tr><td class=\"paramname\">numStartEvents</td><td>the number of events in the array pointed to by startEvents.</td></tr>\n     <tr><td class=\"paramname\">startEvents</td><td>points to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately.</td></tr>\n     <tr><td class=\"paramname\">endEvent</td><td>pointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required. </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00830_source.html#l02061\">2061</a> of file <a class=\"el\" href=\"a00830_source.html\">clEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00749_source.html#l02061\">2061</a> of file <a class=\"el\" href=\"a00749_source.html\">clEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"afadb249fa0e871eead60821dff48d73c\" name=\"afadb249fa0e871eead60821dff48d73c\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afadb249fa0e871eead60821dff48d73c\">&#9670;&#160;</a></span>EvalPatchesFaceVarying() <span class=\"overload\">[6/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -2693,15 +2693,15 @@\n     <tr><td class=\"paramname\">numStartEvents</td><td>the number of events in the array pointed to by startEvents.</td></tr>\n     <tr><td class=\"paramname\">startEvents</td><td>points to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately.</td></tr>\n     <tr><td class=\"paramname\">endEvent</td><td>pointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required. </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00830_source.html#l02143\">2143</a> of file <a class=\"el\" href=\"a00830_source.html\">clEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00749_source.html#l02143\">2143</a> of file <a class=\"el\" href=\"a00749_source.html\">clEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ac81e120ca5b078e6563f78e7726e3c40\" name=\"ac81e120ca5b078e6563f78e7726e3c40\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac81e120ca5b078e6563f78e7726e3c40\">&#9670;&#160;</a></span>EvalPatchesVarying() <span class=\"overload\">[1/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -2882,15 +2882,15 @@\n     <tr><td class=\"paramname\">numStartEvents</td><td>the number of events in the array pointed to by startEvents.</td></tr>\n     <tr><td class=\"paramname\">startEvents</td><td>points to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately.</td></tr>\n     <tr><td class=\"paramname\">endEvent</td><td>pointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required. </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00830_source.html#l01854\">1854</a> of file <a class=\"el\" href=\"a00830_source.html\">clEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00749_source.html#l01854\">1854</a> of file <a class=\"el\" href=\"a00749_source.html\">clEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a222342a2581dc8a6366a16589b316959\" name=\"a222342a2581dc8a6366a16589b316959\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a222342a2581dc8a6366a16589b316959\">&#9670;&#160;</a></span>EvalPatchesVarying() <span class=\"overload\">[2/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -3057,15 +3057,15 @@\n     <tr><td class=\"paramname\">numStartEvents</td><td>the number of events in the array pointed to by startEvents.</td></tr>\n     <tr><td class=\"paramname\">startEvents</td><td>points to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately.</td></tr>\n     <tr><td class=\"paramname\">endEvent</td><td>pointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required. </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00830_source.html#l01978\">1978</a> of file <a class=\"el\" href=\"a00830_source.html\">clEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00749_source.html#l01978\">1978</a> of file <a class=\"el\" href=\"a00749_source.html\">clEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a7676de92e41c1e04e85f097f3d6d931e\" name=\"a7676de92e41c1e04e85f097f3d6d931e\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7676de92e41c1e04e85f097f3d6d931e\">&#9670;&#160;</a></span>EvalPatchesVarying() <span class=\"overload\">[3/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -3204,15 +3204,15 @@\n     <tr><td class=\"paramname\">numStartEvents</td><td>the number of events in the array pointed to by startEvents.</td></tr>\n     <tr><td class=\"paramname\">startEvents</td><td>points to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately.</td></tr>\n     <tr><td class=\"paramname\">endEvent</td><td>pointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required. </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00830_source.html#l01653\">1653</a> of file <a class=\"el\" href=\"a00830_source.html\">clEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00749_source.html#l01653\">1653</a> of file <a class=\"el\" href=\"a00749_source.html\">clEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ab2a20bb6b2533aba43bd534e43e7dcac\" name=\"ab2a20bb6b2533aba43bd534e43e7dcac\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab2a20bb6b2533aba43bd534e43e7dcac\">&#9670;&#160;</a></span>EvalPatchesVarying() <span class=\"overload\">[4/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -3337,15 +3337,15 @@\n     <tr><td class=\"paramname\">numStartEvents</td><td>the number of events in the array pointed to by startEvents.</td></tr>\n     <tr><td class=\"paramname\">startEvents</td><td>points to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately.</td></tr>\n     <tr><td class=\"paramname\">endEvent</td><td>pointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required. </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00830_source.html#l01749\">1749</a> of file <a class=\"el\" href=\"a00830_source.html\">clEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00749_source.html#l01749\">1749</a> of file <a class=\"el\" href=\"a00749_source.html\">clEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a927d8aae868323d5208b1e95c2591ad1\" name=\"a927d8aae868323d5208b1e95c2591ad1\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a927d8aae868323d5208b1e95c2591ad1\">&#9670;&#160;</a></span>EvalPatchesVarying() <span class=\"overload\">[5/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -3456,15 +3456,15 @@\n     <tr><td class=\"paramname\">numStartEvents</td><td>the number of events in the array pointed to by startEvents.</td></tr>\n     <tr><td class=\"paramname\">startEvents</td><td>points to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately.</td></tr>\n     <tr><td class=\"paramname\">endEvent</td><td>pointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required. </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00830_source.html#l01489\">1489</a> of file <a class=\"el\" href=\"a00830_source.html\">clEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00749_source.html#l01489\">1489</a> of file <a class=\"el\" href=\"a00749_source.html\">clEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ac15f843a06ecca29a922132ab59e3890\" name=\"ac15f843a06ecca29a922132ab59e3890\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac15f843a06ecca29a922132ab59e3890\">&#9670;&#160;</a></span>EvalPatchesVarying() <span class=\"overload\">[6/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -3561,15 +3561,15 @@\n     <tr><td class=\"paramname\">numStartEvents</td><td>the number of events in the array pointed to by startEvents.</td></tr>\n     <tr><td class=\"paramname\">startEvents</td><td>points to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately.</td></tr>\n     <tr><td class=\"paramname\">endEvent</td><td>pointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required. </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00830_source.html#l01568\">1568</a> of file <a class=\"el\" href=\"a00830_source.html\">clEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00749_source.html#l01568\">1568</a> of file <a class=\"el\" href=\"a00749_source.html\">clEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a5d554da3e958f90c0c39296029b69c4e\" name=\"a5d554da3e958f90c0c39296029b69c4e\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5d554da3e958f90c0c39296029b69c4e\">&#9670;&#160;</a></span>EvalStencils() <span class=\"overload\">[1/9]</span></h2>\n \n <div class=\"memitem\">\n@@ -4206,15 +4206,15 @@\n     <tr><td class=\"paramname\">numStartEvents</td><td>the number of events in the array pointed to by startEvents.</td></tr>\n     <tr><td class=\"paramname\">startEvents</td><td>points to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately.</td></tr>\n     <tr><td class=\"paramname\">endEvent</td><td>pointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required. </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00830_source.html#l00421\">421</a> of file <a class=\"el\" href=\"a00830_source.html\">clEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00749_source.html#l00421\">421</a> of file <a class=\"el\" href=\"a00749_source.html\">clEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a74b2f41060f4bc17f3522444d30126b6\" name=\"a74b2f41060f4bc17f3522444d30126b6\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a74b2f41060f4bc17f3522444d30126b6\">&#9670;&#160;</a></span>EvalStencils() <span class=\"overload\">[5/9]</span></h2>\n \n <div class=\"memitem\">\n@@ -4367,15 +4367,15 @@\n     <tr><td class=\"paramname\">numStartEvents</td><td>the number of events in the array pointed to by startEvents.</td></tr>\n     <tr><td class=\"paramname\">startEvents</td><td>points to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately.</td></tr>\n     <tr><td class=\"paramname\">endEvent</td><td>pointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required. </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00830_source.html#l00646\">646</a> of file <a class=\"el\" href=\"a00830_source.html\">clEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00749_source.html#l00646\">646</a> of file <a class=\"el\" href=\"a00749_source.html\">clEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a035ab75e105567802674d86736e0959a\" name=\"a035ab75e105567802674d86736e0959a\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a035ab75e105567802674d86736e0959a\">&#9670;&#160;</a></span>EvalStencils() <span class=\"overload\">[6/9]</span></h2>\n \n <div class=\"memitem\">\n@@ -4500,15 +4500,15 @@\n     <tr><td class=\"paramname\">numStartEvents</td><td>the number of events in the array pointed to by startEvents.</td></tr>\n     <tr><td class=\"paramname\">startEvents</td><td>points to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately.</td></tr>\n     <tr><td class=\"paramname\">endEvent</td><td>pointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required. </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00830_source.html#l00309\">309</a> of file <a class=\"el\" href=\"a00830_source.html\">clEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00749_source.html#l00309\">309</a> of file <a class=\"el\" href=\"a00749_source.html\">clEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a26fd58275b838dbf0da96410269a41ef\" name=\"a26fd58275b838dbf0da96410269a41ef\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a26fd58275b838dbf0da96410269a41ef\">&#9670;&#160;</a></span>EvalStencils() <span class=\"overload\">[7/9]</span></h2>\n \n <div class=\"memitem\">\n@@ -4619,15 +4619,15 @@\n     <tr><td class=\"paramname\">numStartEvents</td><td>the number of events in the array pointed to by startEvents.</td></tr>\n     <tr><td class=\"paramname\">startEvents</td><td>points to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately.</td></tr>\n     <tr><td class=\"paramname\">endEvent</td><td>pointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required. </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00830_source.html#l00561\">561</a> of file <a class=\"el\" href=\"a00830_source.html\">clEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00749_source.html#l00561\">561</a> of file <a class=\"el\" href=\"a00749_source.html\">clEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a0f2d760bbb9a4ea58eaf6e2806d033ca\" name=\"a0f2d760bbb9a4ea58eaf6e2806d033ca\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0f2d760bbb9a4ea58eaf6e2806d033ca\">&#9670;&#160;</a></span>EvalStencils() <span class=\"overload\">[8/9]</span></h2>\n \n <div class=\"memitem\">\n@@ -4727,15 +4727,15 @@\n     <tr><td class=\"paramname\">numStartEvents</td><td>the number of events in the array pointed to by startEvents.</td></tr>\n     <tr><td class=\"paramname\">startEvents</td><td>points to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately.</td></tr>\n     <tr><td class=\"paramname\">endEvent</td><td>pointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required. </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00830_source.html#l00219\">219</a> of file <a class=\"el\" href=\"a00830_source.html\">clEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00749_source.html#l00219\">219</a> of file <a class=\"el\" href=\"a00749_source.html\">clEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ac9a39efadbe573a03ffe5971586f72e8\" name=\"ac9a39efadbe573a03ffe5971586f72e8\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac9a39efadbe573a03ffe5971586f72e8\">&#9670;&#160;</a></span>EvalStencils() <span class=\"overload\">[9/9]</span></h2>\n \n <div class=\"memitem\">\n@@ -4818,15 +4818,15 @@\n     <tr><td class=\"paramname\">numStartEvents</td><td>the number of events in the array pointed to by startEvents.</td></tr>\n     <tr><td class=\"paramname\">startEvents</td><td>points to an array of cl_event which will determine when it is safe for the OpenCL device to begin work or NULL if it can begin immediately.</td></tr>\n     <tr><td class=\"paramname\">endEvent</td><td>pointer to a cl_event which will receive a copy of the cl_event which indicates when all work for this call has completed. This cl_event has an incremented reference count and should be released via clReleaseEvent(). NULL if not required. </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00830_source.html#l00500\">500</a> of file <a class=\"el\" href=\"a00830_source.html\">clEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00749_source.html#l00500\">500</a> of file <a class=\"el\" href=\"a00749_source.html\">clEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a0529a707250f9931f945ec49d4e428d2\" name=\"a0529a707250f9931f945ec49d4e428d2\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0529a707250f9931f945ec49d4e428d2\">&#9670;&#160;</a></span>Synchronize() <span class=\"overload\">[1/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -4876,20 +4876,20 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Wait the OpenCL kernels finish. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00830_source.html#l02613\">2613</a> of file <a class=\"el\" href=\"a00830_source.html\">clEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00749_source.html#l02613\">2613</a> of file <a class=\"el\" href=\"a00749_source.html\">clEvaluator.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/osd/<a class=\"el\" href=\"a00830_source.html\">clEvaluator.h</a></li>\n+<li>opensubdiv/osd/<a class=\"el\" href=\"a00749_source.html\">clEvaluator.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00912.html\">Osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01149.html\">CLEvaluator</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01153.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01153.html", "unified_diff": "@@ -100,15 +100,15 @@\n   <div class=\"headertitle\"><div class=\"title\">CLPatchTable Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>CL patch table.  \n  <a href=\"a01153.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00833_source.html\">clPatchTable.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00785_source.html\">clPatchTable.h</a>&gt;</code></p>\n <div class=\"dynheader\">\n Inheritance diagram for CLPatchTable:</div>\n <div class=\"dyncontent\">\n  <div class=\"center\">\n   <img src=\"a01153.png\" alt=\"\"/>\n  </div></div>\n <table class=\"memberdecls\">\n@@ -181,15 +181,15 @@\n <tr class=\"separator:af22c38b9eb5a91397769c40d36a303d3\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p>CL patch table. </p>\n <p>This class is a CL buffer representation of <a class=\"el\" href=\"a00993.html\" title=\"Container for arrays of parametric patches.\">Far::PatchTable</a>.</p>\n <p><a class=\"el\" href=\"a01149.html\">CLEvaluator</a> consumes this table to evaluate on the patches. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00052\">52</a> of file <a class=\"el\" href=\"a00833_source.html\">clPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00785_source.html#l00052\">52</a> of file <a class=\"el\" href=\"a00785_source.html\">clPatchTable.h</a>.</p>\n </div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"a214a812acfe800e62954b45e2f2ee15d\" name=\"a214a812acfe800e62954b45e2f2ee15d\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a214a812acfe800e62954b45e2f2ee15d\">&#9670;&#160;</a></span>~CLPatchTable()</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n       <table class=\"memname\">\n@@ -338,15 +338,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00059\">59</a> of file <a class=\"el\" href=\"a00833_source.html\">clPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00785_source.html#l00059\">59</a> of file <a class=\"el\" href=\"a00785_source.html\">clPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a5956886f3c08959eade5d92c33136ad5\" name=\"a5956886f3c08959eade5d92c33136ad5\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5956886f3c08959eade5d92c33136ad5\">&#9670;&#160;</a></span>GetFVarPatchArrayBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -368,15 +368,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the CL memory of the array of <a class=\"el\" href=\"a01325.html\">Osd::PatchArray</a> buffer. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00086\">86</a> of file <a class=\"el\" href=\"a00833_source.html\">clPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00785_source.html#l00086\">86</a> of file <a class=\"el\" href=\"a00785_source.html\">clPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a72aca2fb5c3e3f40ef9109a827c3b28f\" name=\"a72aca2fb5c3e3f40ef9109a827c3b28f\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a72aca2fb5c3e3f40ef9109a827c3b28f\">&#9670;&#160;</a></span>GetFVarPatchIndexBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -398,15 +398,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the CL memory of the face-varying control vertices. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00089\">89</a> of file <a class=\"el\" href=\"a00833_source.html\">clPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00785_source.html#l00089\">89</a> of file <a class=\"el\" href=\"a00785_source.html\">clPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ad7ab95a3f811625b4d9ee2c1b6cac6af\" name=\"ad7ab95a3f811625b4d9ee2c1b6cac6af\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad7ab95a3f811625b4d9ee2c1b6cac6af\">&#9670;&#160;</a></span>GetFVarPatchParamBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -428,15 +428,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the CL memory of the array of <a class=\"el\" href=\"a01329.html\">Osd::PatchParam</a> buffer. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00092\">92</a> of file <a class=\"el\" href=\"a00833_source.html\">clPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00785_source.html#l00092\">92</a> of file <a class=\"el\" href=\"a00785_source.html\">clPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aa9be824a572029f3ec1e0c0d6cfecd77\" name=\"aa9be824a572029f3ec1e0c0d6cfecd77\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa9be824a572029f3ec1e0c0d6cfecd77\">&#9670;&#160;</a></span>GetNumFVarChannels()</h2>\n \n <div class=\"memitem\">\n@@ -457,15 +457,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the number of face-varying channel buffers. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00083\">83</a> of file <a class=\"el\" href=\"a00833_source.html\">clPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00785_source.html#l00083\">83</a> of file <a class=\"el\" href=\"a00785_source.html\">clPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a693751f5a6c94b134873f5c524fd999a\" name=\"a693751f5a6c94b134873f5c524fd999a\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a693751f5a6c94b134873f5c524fd999a\">&#9670;&#160;</a></span>GetPatchArrayBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -486,15 +486,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the CL memory of the array of <a class=\"el\" href=\"a01325.html\">Osd::PatchArray</a> buffer. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00068\">68</a> of file <a class=\"el\" href=\"a00833_source.html\">clPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00785_source.html#l00068\">68</a> of file <a class=\"el\" href=\"a00785_source.html\">clPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"abf29cd5f256ac52b7afdc6d87f915c4b\" name=\"abf29cd5f256ac52b7afdc6d87f915c4b\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abf29cd5f256ac52b7afdc6d87f915c4b\">&#9670;&#160;</a></span>GetPatchIndexBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -515,15 +515,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the CL memory of the patch control vertices. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00071\">71</a> of file <a class=\"el\" href=\"a00833_source.html\">clPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00785_source.html#l00071\">71</a> of file <a class=\"el\" href=\"a00785_source.html\">clPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a48b951719ff4fe3b94b20f997dc1d480\" name=\"a48b951719ff4fe3b94b20f997dc1d480\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a48b951719ff4fe3b94b20f997dc1d480\">&#9670;&#160;</a></span>GetPatchParamBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -544,15 +544,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the CL memory of the array of <a class=\"el\" href=\"a01329.html\">Osd::PatchParam</a> buffer. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00074\">74</a> of file <a class=\"el\" href=\"a00833_source.html\">clPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00785_source.html#l00074\">74</a> of file <a class=\"el\" href=\"a00785_source.html\">clPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"afc269c290092f9ae42a8e15cdb8cebd1\" name=\"afc269c290092f9ae42a8e15cdb8cebd1\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afc269c290092f9ae42a8e15cdb8cebd1\">&#9670;&#160;</a></span>GetVaryingPatchArrayBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -573,15 +573,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the CL memory of the array of <a class=\"el\" href=\"a01325.html\">Osd::PatchArray</a> buffer. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00077\">77</a> of file <a class=\"el\" href=\"a00833_source.html\">clPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00785_source.html#l00077\">77</a> of file <a class=\"el\" href=\"a00785_source.html\">clPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a954d3789118ddd8dc6a5d17e20665b3c\" name=\"a954d3789118ddd8dc6a5d17e20665b3c\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a954d3789118ddd8dc6a5d17e20665b3c\">&#9670;&#160;</a></span>GetVaryingPatchIndexBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -602,15 +602,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the CL memory of the varying control vertices. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00080\">80</a> of file <a class=\"el\" href=\"a00833_source.html\">clPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00785_source.html#l00080\">80</a> of file <a class=\"el\" href=\"a00785_source.html\">clPatchTable.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Member Data Documentation</h2>\n <a id=\"af4ff1daf1bfd79ffa1cc26a79870b141\" name=\"af4ff1daf1bfd79ffa1cc26a79870b141\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af4ff1daf1bfd79ffa1cc26a79870b141\">&#9670;&#160;</a></span>_fvarIndexBuffers</h2>\n \n@@ -627,15 +627,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00107\">107</a> of file <a class=\"el\" href=\"a00833_source.html\">clPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00785_source.html#l00107\">107</a> of file <a class=\"el\" href=\"a00785_source.html\">clPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"af22c38b9eb5a91397769c40d36a303d3\" name=\"af22c38b9eb5a91397769c40d36a303d3\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af22c38b9eb5a91397769c40d36a303d3\">&#9670;&#160;</a></span>_fvarParamBuffers</h2>\n \n <div class=\"memitem\">\n@@ -651,15 +651,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00108\">108</a> of file <a class=\"el\" href=\"a00833_source.html\">clPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00785_source.html#l00108\">108</a> of file <a class=\"el\" href=\"a00785_source.html\">clPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a0eece245e692b6640c527214e8df756d\" name=\"a0eece245e692b6640c527214e8df756d\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0eece245e692b6640c527214e8df756d\">&#9670;&#160;</a></span>_fvarPatchArrays</h2>\n \n <div class=\"memitem\">\n@@ -675,15 +675,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00106\">106</a> of file <a class=\"el\" href=\"a00833_source.html\">clPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00785_source.html#l00106\">106</a> of file <a class=\"el\" href=\"a00785_source.html\">clPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a56bd6edaa10c8b3c718265203430dcb9\" name=\"a56bd6edaa10c8b3c718265203430dcb9\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a56bd6edaa10c8b3c718265203430dcb9\">&#9670;&#160;</a></span>_indexBuffer</h2>\n \n <div class=\"memitem\">\n@@ -699,15 +699,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00100\">100</a> of file <a class=\"el\" href=\"a00833_source.html\">clPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00785_source.html#l00100\">100</a> of file <a class=\"el\" href=\"a00785_source.html\">clPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a7210a18569c2e0f0d728092835951c70\" name=\"a7210a18569c2e0f0d728092835951c70\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7210a18569c2e0f0d728092835951c70\">&#9670;&#160;</a></span>_patchArrays</h2>\n \n <div class=\"memitem\">\n@@ -723,15 +723,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00099\">99</a> of file <a class=\"el\" href=\"a00833_source.html\">clPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00785_source.html#l00099\">99</a> of file <a class=\"el\" href=\"a00785_source.html\">clPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a2d547b12237422c1035f5817e671155c\" name=\"a2d547b12237422c1035f5817e671155c\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2d547b12237422c1035f5817e671155c\">&#9670;&#160;</a></span>_patchParamBuffer</h2>\n \n <div class=\"memitem\">\n@@ -747,15 +747,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00101\">101</a> of file <a class=\"el\" href=\"a00833_source.html\">clPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00785_source.html#l00101\">101</a> of file <a class=\"el\" href=\"a00785_source.html\">clPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a82703277c754b05b7844b074b6a049c7\" name=\"a82703277c754b05b7844b074b6a049c7\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a82703277c754b05b7844b074b6a049c7\">&#9670;&#160;</a></span>_varyingIndexBuffer</h2>\n \n <div class=\"memitem\">\n@@ -771,15 +771,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00104\">104</a> of file <a class=\"el\" href=\"a00833_source.html\">clPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00785_source.html#l00104\">104</a> of file <a class=\"el\" href=\"a00785_source.html\">clPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"afa7c9b6ac860cd6db8c1d8fc2aa7d63d\" name=\"afa7c9b6ac860cd6db8c1d8fc2aa7d63d\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afa7c9b6ac860cd6db8c1d8fc2aa7d63d\">&#9670;&#160;</a></span>_varyingPatchArrays</h2>\n \n <div class=\"memitem\">\n@@ -795,20 +795,20 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00833_source.html#l00103\">103</a> of file <a class=\"el\" href=\"a00833_source.html\">clPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00785_source.html#l00103\">103</a> of file <a class=\"el\" href=\"a00785_source.html\">clPatchTable.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/osd/<a class=\"el\" href=\"a00833_source.html\">clPatchTable.h</a></li>\n+<li>opensubdiv/osd/<a class=\"el\" href=\"a00785_source.html\">clPatchTable.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00912.html\">Osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01153.html\">CLPatchTable</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01157.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01157.html", "unified_diff": "@@ -99,15 +99,15 @@\n   <div class=\"headertitle\"><div class=\"title\">CLVertexBuffer Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Concrete vertex buffer class for OpenCL subdivision.  \n  <a href=\"a01157.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00881_source.html\">clVertexBuffer.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00725_source.html\">clVertexBuffer.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\n Public Member Functions</h2></td></tr>\n <tr class=\"memitem:a4801ba3ea81294d3e7e3da970863896e\" id=\"r_a4801ba3ea81294d3e7e3da970863896e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01157.html#a4801ba3ea81294d3e7e3da970863896e\">~CLVertexBuffer</a> ()</td></tr>\n <tr class=\"memdesc:a4801ba3ea81294d3e7e3da970863896e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Destructor.  <br /></td></tr>\n <tr class=\"separator:a4801ba3ea81294d3e7e3da970863896e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a7259d1296f30e13d171cd892708d8d0a\" id=\"r_a7259d1296f30e13d171cd892708d8d0a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01157.html#a7259d1296f30e13d171cd892708d8d0a\">UpdateData</a> (const float *src, int startVertex, int numVertices, cl_command_queue clQueue, cl_event *startEvents=NULL, unsigned int numStartEvents=0, cl_event *endEvent=NULL)</td></tr>\n@@ -142,15 +142,15 @@\n <tr class=\"memitem:a7ff15d15ad0fe31e5cb9a1e6c19f09b0\" id=\"r_a7ff15d15ad0fe31e5cb9a1e6c19f09b0\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01157.html#a7ff15d15ad0fe31e5cb9a1e6c19f09b0\">allocate</a> (cl_context clContext)</td></tr>\n <tr class=\"separator:a7ff15d15ad0fe31e5cb9a1e6c19f09b0\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p>Concrete vertex buffer class for OpenCL subdivision. </p>\n <p><a class=\"el\" href=\"a01157.html\" title=\"Concrete vertex buffer class for OpenCL subdivision.\">CLVertexBuffer</a> implements CLVertexBufferInterface. An instance of this buffer class can be passed to <a class=\"el\" href=\"a01149.html\">CLEvaluator</a> </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00881_source.html#l00042\">42</a> of file <a class=\"el\" href=\"a00881_source.html\">clVertexBuffer.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00725_source.html#l00042\">42</a> of file <a class=\"el\" href=\"a00725_source.html\">clVertexBuffer.h</a>.</p>\n </div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"a4801ba3ea81294d3e7e3da970863896e\" name=\"a4801ba3ea81294d3e7e3da970863896e\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4801ba3ea81294d3e7e3da970863896e\">&#9670;&#160;</a></span>~CLVertexBuffer()</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n       <table class=\"memname\">\n@@ -341,15 +341,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00881_source.html#l00049\">49</a> of file <a class=\"el\" href=\"a00881_source.html\">clVertexBuffer.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00725_source.html#l00049\">49</a> of file <a class=\"el\" href=\"a00725_source.html\">clVertexBuffer.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a77cee40767fd4936f20a8f9d9d9ea625\" name=\"a77cee40767fd4936f20a8f9d9d9ea625\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a77cee40767fd4936f20a8f9d9d9ea625\">&#9670;&#160;</a></span>GetNumElements()</h2>\n \n <div class=\"memitem\">\n@@ -508,20 +508,20 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00881_source.html#l00063\">63</a> of file <a class=\"el\" href=\"a00881_source.html\">clVertexBuffer.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00725_source.html#l00063\">63</a> of file <a class=\"el\" href=\"a00725_source.html\">clVertexBuffer.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/osd/<a class=\"el\" href=\"a00881_source.html\">clVertexBuffer.h</a></li>\n+<li>opensubdiv/osd/<a class=\"el\" href=\"a00725_source.html\">clVertexBuffer.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00912.html\">Osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01157.html\">CLVertexBuffer</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01161.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01161.html", "unified_diff": "@@ -99,15 +99,15 @@\n   <div class=\"headertitle\"><div class=\"title\">CpuD3D11VertexBuffer Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Concrete vertex buffer class for Cpu subdivision and DirectX drawing.  \n  <a href=\"a01161.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00896_source.html\">cpuD3D11VertexBuffer.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00773_source.html\">cpuD3D11VertexBuffer.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\n Public Member Functions</h2></td></tr>\n <tr class=\"memitem:ae6f29f48db71c5ed845eb6abe085af91\" id=\"r_ae6f29f48db71c5ed845eb6abe085af91\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01161.html#ae6f29f48db71c5ed845eb6abe085af91\">~CpuD3D11VertexBuffer</a> ()</td></tr>\n <tr class=\"memdesc:ae6f29f48db71c5ed845eb6abe085af91\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Destructor.  <br /></td></tr>\n <tr class=\"separator:ae6f29f48db71c5ed845eb6abe085af91\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a96601a091f8831823c4dd72b6c962f1b\" id=\"r_a96601a091f8831823c4dd72b6c962f1b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01161.html#a96601a091f8831823c4dd72b6c962f1b\">UpdateData</a> (const float *src, int startVertex, int numVertices, void *deviceContext=NULL)</td></tr>\n@@ -143,15 +143,15 @@\n <tr class=\"separator:ae61b4ed6cc7cb69826cd0804c2d972b7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p>Concrete vertex buffer class for Cpu subdivision and DirectX drawing. </p>\n <p><a class=\"el\" href=\"a01161.html\" title=\"Concrete vertex buffer class for Cpu subdivision and DirectX drawing.\">CpuD3D11VertexBuffer</a> implements CpuVertexBufferInterface and D3D11VertexBufferInterface.</p>\n <p>An instance of this buffer class can be passed to <a class=\"el\" href=\"a01165.html\">CpuEvaluator</a>. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00896_source.html#l00048\">48</a> of file <a class=\"el\" href=\"a00896_source.html\">cpuD3D11VertexBuffer.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00773_source.html#l00048\">48</a> of file <a class=\"el\" href=\"a00773_source.html\">cpuD3D11VertexBuffer.h</a>.</p>\n </div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"ae6f29f48db71c5ed845eb6abe085af91\" name=\"ae6f29f48db71c5ed845eb6abe085af91\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae6f29f48db71c5ed845eb6abe085af91\">&#9670;&#160;</a></span>~CpuD3D11VertexBuffer()</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n <table class=\"mlabels\">\n@@ -302,15 +302,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the D3D11 buffer object (for <a class=\"el\" href=\"a01281.html\">Osd::Mesh</a> interface) </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00896_source.html#l00075\">75</a> of file <a class=\"el\" href=\"a00896_source.html\">cpuD3D11VertexBuffer.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00773_source.html#l00075\">75</a> of file <a class=\"el\" href=\"a00773_source.html\">cpuD3D11VertexBuffer.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a00d85863962f5871f802164e2fba7acc\" name=\"a00d85863962f5871f802164e2fba7acc\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a00d85863962f5871f802164e2fba7acc\">&#9670;&#160;</a></span>Create()</h2>\n \n <div class=\"memitem\">\n@@ -430,15 +430,15 @@\n       </table>\n </div><div class=\"memdoc\">\n <p>This method is meant to be used in client code in order to provide coarse vertices data to <a class=\"el\" href=\"a00912.html\">Osd</a>. </p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/osd/<a class=\"el\" href=\"a00896_source.html\">cpuD3D11VertexBuffer.h</a></li>\n+<li>opensubdiv/osd/<a class=\"el\" href=\"a00773_source.html\">cpuD3D11VertexBuffer.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00912.html\">Osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01161.html\">CpuD3D11VertexBuffer</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01165.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01165.html", "unified_diff": "@@ -94,15 +94,15 @@\n   <div class=\"summary\">\n <a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n <a href=\"a01162.html\">List of all members</a>  </div>\n   <div class=\"headertitle\"><div class=\"title\">CpuEvaluator Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00803_source.html\">cpuEvaluator.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00782_source.html\">cpuEvaluator.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\n Static Public Member Functions</h2></td></tr>\n <tr class=\"memitem:ae8e914fc701af498ea6c6244da408b94\" id=\"r_ae8e914fc701af498ea6c6244da408b94\"><td class=\"memTemplParams\" colspan=\"2\">template&lt;typename SRC_BUFFER , typename DST_BUFFER , typename STENCIL_TABLE &gt; </td></tr>\n <tr class=\"memitem:ae8e914fc701af498ea6c6244da408b94\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01165.html#ae8e914fc701af498ea6c6244da408b94\">EvalStencils</a> (SRC_BUFFER *srcBuffer, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;srcDesc, DST_BUFFER *dstBuffer, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDesc, STENCIL_TABLE const *stencilTable, const <a class=\"el\" href=\"a01165.html\">CpuEvaluator</a> *instance=NULL, void *deviceContext=NULL)</td></tr>\n <tr class=\"memdesc:ae8e914fc701af498ea6c6244da408b94\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Generic static eval stencils function. This function has a same signature as other device kernels have so that it can be called in the same way from OsdMesh template interface.  <br /></td></tr>\n <tr class=\"separator:ae8e914fc701af498ea6c6244da408b94\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n@@ -170,15 +170,15 @@\n <tr class=\"separator:a46c223689a9dfec7040c8ee9783a6c52\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:ae339a533e5f7a5021c5a4b40ec09c208\" id=\"r_ae339a533e5f7a5021c5a4b40ec09c208\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01165.html#ae339a533e5f7a5021c5a4b40ec09c208\">Synchronize</a> (void *)</td></tr>\n <tr class=\"memdesc:ae339a533e5f7a5021c5a4b40ec09c208\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">synchronize all asynchronous computation invoked on this device.  <br /></td></tr>\n <tr class=\"separator:ae339a533e5f7a5021c5a4b40ec09c208\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\">\n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00803_source.html#l00039\">39</a> of file <a class=\"el\" href=\"a00803_source.html\">cpuEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l00039\">39</a> of file <a class=\"el\" href=\"a00782_source.html\">cpuEvaluator.h</a>.</p>\n </div><h2 class=\"groupheader\">Member Function Documentation</h2>\n <a id=\"a7b556148d6ef2e04fbe99677e3a87e91\" name=\"a7b556148d6ef2e04fbe99677e3a87e91\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7b556148d6ef2e04fbe99677e3a87e91\">&#9670;&#160;</a></span>EvalPatches() <span class=\"overload\">[1/6]</span></h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n <table class=\"mlabels\">\n@@ -716,15 +716,15 @@\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01173.html\" title=\"Cpu patch table.\">CpuPatchTable</a> or equivalent XXX: currently <a class=\"el\" href=\"a00993.html\" title=\"Container for arrays of parametric patches.\">Far::PatchTable</a> can't be used due to interface mismatch</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>not used in the cpu evaluator</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the cpu evaluator </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00803_source.html#l00607\">607</a> of file <a class=\"el\" href=\"a00803_source.html\">cpuEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l00607\">607</a> of file <a class=\"el\" href=\"a00782_source.html\">cpuEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aadc6952ecef0e1cddda06e3c9d0a252a\" name=\"aadc6952ecef0e1cddda06e3c9d0a252a\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aadc6952ecef0e1cddda06e3c9d0a252a\">&#9670;&#160;</a></span>EvalPatches() <span class=\"overload\">[5/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -842,15 +842,15 @@\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01173.html\" title=\"Cpu patch table.\">CpuPatchTable</a> or equivalent XXX: currently <a class=\"el\" href=\"a00993.html\" title=\"Container for arrays of parametric patches.\">Far::PatchTable</a> can't be used due to interface mismatch</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>not used in the cpu evaluator</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the cpu evaluator </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00803_source.html#l00517\">517</a> of file <a class=\"el\" href=\"a00803_source.html\">cpuEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l00517\">517</a> of file <a class=\"el\" href=\"a00782_source.html\">cpuEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a833e2ee19e5dd9018607512aa8d32dbe\" name=\"a833e2ee19e5dd9018607512aa8d32dbe\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a833e2ee19e5dd9018607512aa8d32dbe\">&#9670;&#160;</a></span>EvalPatches() <span class=\"overload\">[6/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -943,15 +943,15 @@\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01173.html\" title=\"Cpu patch table.\">CpuPatchTable</a> or equivalent XXX: currently <a class=\"el\" href=\"a00993.html\" title=\"Container for arrays of parametric patches.\">Far::PatchTable</a> can't be used due to interface mismatch</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>not used in the cpu evaluator</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the cpu evaluator </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00803_source.html#l00454\">454</a> of file <a class=\"el\" href=\"a00803_source.html\">cpuEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l00454\">454</a> of file <a class=\"el\" href=\"a00782_source.html\">cpuEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a46c223689a9dfec7040c8ee9783a6c52\" name=\"a46c223689a9dfec7040c8ee9783a6c52\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a46c223689a9dfec7040c8ee9783a6c52\">&#9670;&#160;</a></span>EvalPatchesFaceVarying() <span class=\"overload\">[1/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -1118,15 +1118,15 @@\n     <tr><td class=\"paramname\">fvarChannel</td><td>face-varying channel</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>not used in the cpu evaluator</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the cpu evaluator </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00803_source.html#l01188\">1188</a> of file <a class=\"el\" href=\"a00803_source.html\">cpuEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l01188\">1188</a> of file <a class=\"el\" href=\"a00782_source.html\">cpuEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a2fbe9aec649e88f531714099d49c6db1\" name=\"a2fbe9aec649e88f531714099d49c6db1\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2fbe9aec649e88f531714099d49c6db1\">&#9670;&#160;</a></span>EvalPatchesFaceVarying() <span class=\"overload\">[2/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -1251,15 +1251,15 @@\n     <tr><td class=\"paramname\">fvarChannel</td><td>face-varying channel</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>not used in the cpu evaluator</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the cpu evaluator </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00803_source.html#l01100\">1100</a> of file <a class=\"el\" href=\"a00803_source.html\">cpuEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l01100\">1100</a> of file <a class=\"el\" href=\"a00782_source.html\">cpuEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a0cf0cb080682d71200633ef242b83615\" name=\"a0cf0cb080682d71200633ef242b83615\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0cf0cb080682d71200633ef242b83615\">&#9670;&#160;</a></span>EvalPatchesFaceVarying() <span class=\"overload\">[3/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -1356,15 +1356,15 @@\n     <tr><td class=\"paramname\">fvarChannel</td><td>face-varying channel</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>not used in the cpu evaluator</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the cpu evaluator </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00803_source.html#l01034\">1034</a> of file <a class=\"el\" href=\"a00803_source.html\">cpuEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l01034\">1034</a> of file <a class=\"el\" href=\"a00782_source.html\">cpuEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a63c07f0657267c51a42e68bbf2674d2c\" name=\"a63c07f0657267c51a42e68bbf2674d2c\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a63c07f0657267c51a42e68bbf2674d2c\">&#9670;&#160;</a></span>EvalPatchesVarying() <span class=\"overload\">[1/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -1524,15 +1524,15 @@\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01173.html\" title=\"Cpu patch table.\">CpuPatchTable</a> or equivalent XXX: currently <a class=\"el\" href=\"a00993.html\" title=\"Container for arrays of parametric patches.\">Far::PatchTable</a> can't be used due to interface mismatch</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>not used in the cpu evaluator</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the cpu evaluator </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00803_source.html#l00971\">971</a> of file <a class=\"el\" href=\"a00803_source.html\">cpuEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l00971\">971</a> of file <a class=\"el\" href=\"a00782_source.html\">cpuEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ada4f37a111fe2b1bfb12d9c2d458e5b5\" name=\"ada4f37a111fe2b1bfb12d9c2d458e5b5\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ada4f37a111fe2b1bfb12d9c2d458e5b5\">&#9670;&#160;</a></span>EvalPatchesVarying() <span class=\"overload\">[2/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -1650,15 +1650,15 @@\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01173.html\" title=\"Cpu patch table.\">CpuPatchTable</a> or equivalent XXX: currently <a class=\"el\" href=\"a00993.html\" title=\"Container for arrays of parametric patches.\">Far::PatchTable</a> can't be used due to interface mismatch</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>not used in the cpu evaluator</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the cpu evaluator </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00803_source.html#l00886\">886</a> of file <a class=\"el\" href=\"a00803_source.html\">cpuEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l00886\">886</a> of file <a class=\"el\" href=\"a00782_source.html\">cpuEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"adb3a32fbae8a1437b6368dc1e298f58f\" name=\"adb3a32fbae8a1437b6368dc1e298f58f\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adb3a32fbae8a1437b6368dc1e298f58f\">&#9670;&#160;</a></span>EvalPatchesVarying() <span class=\"overload\">[3/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -1748,15 +1748,15 @@\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01173.html\" title=\"Cpu patch table.\">CpuPatchTable</a> or equivalent XXX: currently <a class=\"el\" href=\"a00993.html\" title=\"Container for arrays of parametric patches.\">Far::PatchTable</a> can't be used due to interface mismatch</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>not used in the cpu evaluator</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the cpu evaluator </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00803_source.html#l00823\">823</a> of file <a class=\"el\" href=\"a00803_source.html\">cpuEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l00823\">823</a> of file <a class=\"el\" href=\"a00782_source.html\">cpuEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a4345e3659b7fb82f23dd51c688179ce3\" name=\"a4345e3659b7fb82f23dd51c688179ce3\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4345e3659b7fb82f23dd51c688179ce3\">&#9670;&#160;</a></span>EvalStencils() <span class=\"overload\">[1/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -2352,15 +2352,15 @@\n     <tr><td class=\"paramname\">stencilTable</td><td><a class=\"el\" href=\"a01065.html\" title=\"Stencil table class wrapping the template for compatibility.\">Far::StencilTable</a> or equivalent</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>not used in the cpu kernel (declared as a typed pointer to prevent undesirable template resolution)</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the cpu kernel </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00803_source.html#l00303\">303</a> of file <a class=\"el\" href=\"a00803_source.html\">cpuEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l00303\">303</a> of file <a class=\"el\" href=\"a00782_source.html\">cpuEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"af918f56587a2c4b397c8ae4f385a85fd\" name=\"af918f56587a2c4b397c8ae4f385a85fd\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af918f56587a2c4b397c8ae4f385a85fd\">&#9670;&#160;</a></span>EvalStencils() <span class=\"overload\">[5/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -2464,15 +2464,15 @@\n     <tr><td class=\"paramname\">stencilTable</td><td><a class=\"el\" href=\"a01065.html\" title=\"Stencil table class wrapping the template for compatibility.\">Far::StencilTable</a> or equivalent</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>not used in the cpu kernel (declared as a typed pointer to prevent undesirable template resolution)</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the cpu kernel </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00803_source.html#l00168\">168</a> of file <a class=\"el\" href=\"a00803_source.html\">cpuEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l00168\">168</a> of file <a class=\"el\" href=\"a00782_source.html\">cpuEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ae8e914fc701af498ea6c6244da408b94\" name=\"ae8e914fc701af498ea6c6244da408b94\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae8e914fc701af498ea6c6244da408b94\">&#9670;&#160;</a></span>EvalStencils() <span class=\"overload\">[6/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -2551,15 +2551,15 @@\n     <tr><td class=\"paramname\">stencilTable</td><td><a class=\"el\" href=\"a01065.html\" title=\"Stencil table class wrapping the template for compatibility.\">Far::StencilTable</a> or equivalent</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>not used in the cpu kernel (declared as a typed pointer to prevent undesirable template resolution)</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the cpu kernel </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00803_source.html#l00072\">72</a> of file <a class=\"el\" href=\"a00803_source.html\">cpuEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l00072\">72</a> of file <a class=\"el\" href=\"a00782_source.html\">cpuEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ae339a533e5f7a5021c5a4b40ec09c208\" name=\"ae339a533e5f7a5021c5a4b40ec09c208\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae339a533e5f7a5021c5a4b40ec09c208\">&#9670;&#160;</a></span>Synchronize()</h2>\n \n <div class=\"memitem\">\n@@ -2584,20 +2584,20 @@\n </div><div class=\"memdoc\">\n \n <p>synchronize all asynchronous computation invoked on this device. </p>\n <hr  />\n <p>Other methods</p>\n <hr  />\n  \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00803_source.html#l01227\">1227</a> of file <a class=\"el\" href=\"a00803_source.html\">cpuEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00782_source.html#l01227\">1227</a> of file <a class=\"el\" href=\"a00782_source.html\">cpuEvaluator.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/osd/<a class=\"el\" href=\"a00803_source.html\">cpuEvaluator.h</a></li>\n+<li>opensubdiv/osd/<a class=\"el\" href=\"a00782_source.html\">cpuEvaluator.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00912.html\">Osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01165.html\">CpuEvaluator</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01169.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01169.html", "unified_diff": "@@ -99,15 +99,15 @@\n   <div class=\"headertitle\"><div class=\"title\">CpuGLVertexBuffer Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Concrete vertex buffer class for cpu subdivision and OpenGL drawing.  \n  <a href=\"a01169.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00821_source.html\">cpuGLVertexBuffer.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00680_source.html\">cpuGLVertexBuffer.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\n Public Member Functions</h2></td></tr>\n <tr class=\"memitem:aec560f36966b5da9528b8dbc065f7cc7\" id=\"r_aec560f36966b5da9528b8dbc065f7cc7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01169.html#aec560f36966b5da9528b8dbc065f7cc7\">~CpuGLVertexBuffer</a> ()</td></tr>\n <tr class=\"memdesc:aec560f36966b5da9528b8dbc065f7cc7\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Destructor.  <br /></td></tr>\n <tr class=\"separator:aec560f36966b5da9528b8dbc065f7cc7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a96601a091f8831823c4dd72b6c962f1b\" id=\"r_a96601a091f8831823c4dd72b6c962f1b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01169.html#a96601a091f8831823c4dd72b6c962f1b\">UpdateData</a> (const float *src, int startVertex, int numVertices, void *deviceContext=NULL)</td></tr>\n@@ -139,15 +139,15 @@\n <tr class=\"separator:add23d9f5bbc918076d240287a9b3664f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p>Concrete vertex buffer class for cpu subdivision and OpenGL drawing. </p>\n <p><a class=\"el\" href=\"a01169.html\" title=\"Concrete vertex buffer class for cpu subdivision and OpenGL drawing.\">CpuGLVertexBuffer</a> implements CpuVertexBufferInterface and GLVertexBufferInterface.</p>\n <p>The buffer interop between Cpu and GL is handled automatically when a client calls BindCpuBuffer and BindVBO methods. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00821_source.html#l00047\">47</a> of file <a class=\"el\" href=\"a00821_source.html\">cpuGLVertexBuffer.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00680_source.html#l00047\">47</a> of file <a class=\"el\" href=\"a00680_source.html\">cpuGLVertexBuffer.h</a>.</p>\n </div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"aec560f36966b5da9528b8dbc065f7cc7\" name=\"aec560f36966b5da9528b8dbc065f7cc7\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aec560f36966b5da9528b8dbc065f7cc7\">&#9670;&#160;</a></span>~CpuGLVertexBuffer()</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n       <table class=\"memname\">\n@@ -387,15 +387,15 @@\n       </table>\n </div><div class=\"memdoc\">\n <p>This method is meant to be used in client code in order to provide coarse vertices data to <a class=\"el\" href=\"a00912.html\">Osd</a>. </p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/osd/<a class=\"el\" href=\"a00821_source.html\">cpuGLVertexBuffer.h</a></li>\n+<li>opensubdiv/osd/<a class=\"el\" href=\"a00680_source.html\">cpuGLVertexBuffer.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00912.html\">Osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01169.html\">CpuGLVertexBuffer</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01173.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01173.html", "unified_diff": "@@ -99,15 +99,15 @@\n   <div class=\"headertitle\"><div class=\"title\">CpuPatchTable Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Cpu patch table.  \n  <a href=\"a01173.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00818_source.html\">cpuPatchTable.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00791_source.html\">cpuPatchTable.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\n Public Member Functions</h2></td></tr>\n <tr class=\"memitem:a3c19d1748852f36ba69a6557e5069e08\" id=\"r_a3c19d1748852f36ba69a6557e5069e08\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01173.html#a3c19d1748852f36ba69a6557e5069e08\">CpuPatchTable</a> (const <a class=\"el\" href=\"a00993.html\">Far::PatchTable</a> *patchTable)</td></tr>\n <tr class=\"separator:a3c19d1748852f36ba69a6557e5069e08\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a16142cac8dd0880ad2451586633a7999\" id=\"r_a16142cac8dd0880ad2451586633a7999\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01173.html#a16142cac8dd0880ad2451586633a7999\">~CpuPatchTable</a> ()</td></tr>\n <tr class=\"separator:a16142cac8dd0880ad2451586633a7999\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n@@ -168,15 +168,15 @@\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p>Cpu patch table. </p>\n <p>XXX: We can use just <a class=\"el\" href=\"a00993.html\" title=\"Container for arrays of parametric patches.\">Far::PatchTable</a> for typical CpuEval use cases.</p>\n <p>Currently this class exists because of the template resolution for the <a class=\"el\" href=\"a01165.html\">CpuEvaluator</a>'s generic interface functions (glEvalLimit example uses), and device-specific patch tables such as GLPatchTables internally use as a staging buffer to splice patcharray and interleave sharpnesses.</p>\n <p>Ideally Far::PatchTables should have the same data representation and accessors so that we don't have to copy data unnecessarily. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00059\">59</a> of file <a class=\"el\" href=\"a00818_source.html\">cpuPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l00059\">59</a> of file <a class=\"el\" href=\"a00791_source.html\">cpuPatchTable.h</a>.</p>\n </div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"a3c19d1748852f36ba69a6557e5069e08\" name=\"a3c19d1748852f36ba69a6557e5069e08\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3c19d1748852f36ba69a6557e5069e08\">&#9670;&#160;</a></span>CpuPatchTable()</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n <table class=\"mlabels\">\n@@ -219,15 +219,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00068\">68</a> of file <a class=\"el\" href=\"a00818_source.html\">cpuPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l00068\">68</a> of file <a class=\"el\" href=\"a00791_source.html\">cpuPatchTable.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Member Function Documentation</h2>\n <a id=\"a27ccdd38f0f38adf16a4f5ceac6fed20\" name=\"a27ccdd38f0f38adf16a4f5ceac6fed20\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a27ccdd38f0f38adf16a4f5ceac6fed20\">&#9670;&#160;</a></span>Create()</h2>\n \n@@ -258,15 +258,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00061\">61</a> of file <a class=\"el\" href=\"a00818_source.html\">cpuPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l00061\">61</a> of file <a class=\"el\" href=\"a00791_source.html\">cpuPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a025630c8fdb360ed195aef08547f1235\" name=\"a025630c8fdb360ed195aef08547f1235\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a025630c8fdb360ed195aef08547f1235\">&#9670;&#160;</a></span>GetFVarPatchArrayBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -286,15 +286,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00109\">109</a> of file <a class=\"el\" href=\"a00818_source.html\">cpuPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l00109\">109</a> of file <a class=\"el\" href=\"a00791_source.html\">cpuPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a8a0e294dd3f62accf3bcd37506b8f0c0\" name=\"a8a0e294dd3f62accf3bcd37506b8f0c0\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8a0e294dd3f62accf3bcd37506b8f0c0\">&#9670;&#160;</a></span>GetFVarPatchIndexBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -314,15 +314,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00112\">112</a> of file <a class=\"el\" href=\"a00818_source.html\">cpuPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l00112\">112</a> of file <a class=\"el\" href=\"a00791_source.html\">cpuPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a89d1a006bc57adefbd8cc2b3221507d8\" name=\"a89d1a006bc57adefbd8cc2b3221507d8\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a89d1a006bc57adefbd8cc2b3221507d8\">&#9670;&#160;</a></span>GetFVarPatchIndexSize()</h2>\n \n <div class=\"memitem\">\n@@ -342,15 +342,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00115\">115</a> of file <a class=\"el\" href=\"a00818_source.html\">cpuPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l00115\">115</a> of file <a class=\"el\" href=\"a00791_source.html\">cpuPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a9aff63c1a01a0ab08941350288def5fa\" name=\"a9aff63c1a01a0ab08941350288def5fa\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9aff63c1a01a0ab08941350288def5fa\">&#9670;&#160;</a></span>GetFVarPatchParamBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -370,15 +370,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00118\">118</a> of file <a class=\"el\" href=\"a00818_source.html\">cpuPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l00118\">118</a> of file <a class=\"el\" href=\"a00791_source.html\">cpuPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a154f068140b02b8324cfa70cdbe1191c\" name=\"a154f068140b02b8324cfa70cdbe1191c\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a154f068140b02b8324cfa70cdbe1191c\">&#9670;&#160;</a></span>GetFVarPatchParamSize()</h2>\n \n <div class=\"memitem\">\n@@ -398,15 +398,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00121\">121</a> of file <a class=\"el\" href=\"a00818_source.html\">cpuPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l00121\">121</a> of file <a class=\"el\" href=\"a00791_source.html\">cpuPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aa9be824a572029f3ec1e0c0d6cfecd77\" name=\"aa9be824a572029f3ec1e0c0d6cfecd77\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa9be824a572029f3ec1e0c0d6cfecd77\">&#9670;&#160;</a></span>GetNumFVarChannels()</h2>\n \n <div class=\"memitem\">\n@@ -425,15 +425,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00106\">106</a> of file <a class=\"el\" href=\"a00818_source.html\">cpuPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l00106\">106</a> of file <a class=\"el\" href=\"a00791_source.html\">cpuPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aae90ef525393fa41f95eff50d1255e97\" name=\"aae90ef525393fa41f95eff50d1255e97\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aae90ef525393fa41f95eff50d1255e97\">&#9670;&#160;</a></span>GetNumPatchArrays()</h2>\n \n <div class=\"memitem\">\n@@ -452,15 +452,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00080\">80</a> of file <a class=\"el\" href=\"a00818_source.html\">cpuPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l00080\">80</a> of file <a class=\"el\" href=\"a00791_source.html\">cpuPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ab6582a6586adaea0803247fb415f8c17\" name=\"ab6582a6586adaea0803247fb415f8c17\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab6582a6586adaea0803247fb415f8c17\">&#9670;&#160;</a></span>GetPatchArrayBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -479,15 +479,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00070\">70</a> of file <a class=\"el\" href=\"a00818_source.html\">cpuPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l00070\">70</a> of file <a class=\"el\" href=\"a00791_source.html\">cpuPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a1934f183cb763099b7452f3569b70fdc\" name=\"a1934f183cb763099b7452f3569b70fdc\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1934f183cb763099b7452f3569b70fdc\">&#9670;&#160;</a></span>GetPatchIndexBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -506,15 +506,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00073\">73</a> of file <a class=\"el\" href=\"a00818_source.html\">cpuPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l00073\">73</a> of file <a class=\"el\" href=\"a00791_source.html\">cpuPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a5b16f51336dbdc1af5b34028cc5de8cc\" name=\"a5b16f51336dbdc1af5b34028cc5de8cc\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5b16f51336dbdc1af5b34028cc5de8cc\">&#9670;&#160;</a></span>GetPatchIndexSize()</h2>\n \n <div class=\"memitem\">\n@@ -533,15 +533,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00083\">83</a> of file <a class=\"el\" href=\"a00818_source.html\">cpuPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l00083\">83</a> of file <a class=\"el\" href=\"a00791_source.html\">cpuPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a6a81c037eca6f27ea4ef41f39d0a1d50\" name=\"a6a81c037eca6f27ea4ef41f39d0a1d50\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6a81c037eca6f27ea4ef41f39d0a1d50\">&#9670;&#160;</a></span>GetPatchParamBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -560,15 +560,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00076\">76</a> of file <a class=\"el\" href=\"a00818_source.html\">cpuPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l00076\">76</a> of file <a class=\"el\" href=\"a00791_source.html\">cpuPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a9ca8e987a5e8ac5bbd66f46bf2fc419c\" name=\"a9ca8e987a5e8ac5bbd66f46bf2fc419c\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9ca8e987a5e8ac5bbd66f46bf2fc419c\">&#9670;&#160;</a></span>GetPatchParamSize()</h2>\n \n <div class=\"memitem\">\n@@ -587,15 +587,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00086\">86</a> of file <a class=\"el\" href=\"a00818_source.html\">cpuPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l00086\">86</a> of file <a class=\"el\" href=\"a00791_source.html\">cpuPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aa67ab7e38db41de0990e7d034719dbd1\" name=\"aa67ab7e38db41de0990e7d034719dbd1\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa67ab7e38db41de0990e7d034719dbd1\">&#9670;&#160;</a></span>GetVaryingPatchArrayBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -614,15 +614,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00090\">90</a> of file <a class=\"el\" href=\"a00818_source.html\">cpuPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l00090\">90</a> of file <a class=\"el\" href=\"a00791_source.html\">cpuPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a0cfc50b227edbe9872586c2b4ab89dec\" name=\"a0cfc50b227edbe9872586c2b4ab89dec\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0cfc50b227edbe9872586c2b4ab89dec\">&#9670;&#160;</a></span>GetVaryingPatchIndexBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -641,15 +641,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00096\">96</a> of file <a class=\"el\" href=\"a00818_source.html\">cpuPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l00096\">96</a> of file <a class=\"el\" href=\"a00791_source.html\">cpuPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aa255bcea11d324b35e8095fa7f134f8c\" name=\"aa255bcea11d324b35e8095fa7f134f8c\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa255bcea11d324b35e8095fa7f134f8c\">&#9670;&#160;</a></span>GetVaryingPatchIndexSize()</h2>\n \n <div class=\"memitem\">\n@@ -668,15 +668,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00102\">102</a> of file <a class=\"el\" href=\"a00818_source.html\">cpuPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l00102\">102</a> of file <a class=\"el\" href=\"a00791_source.html\">cpuPatchTable.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Member Data Documentation</h2>\n <a id=\"a413f77230a89ed1a04ee4f1407a4d7b3\" name=\"a413f77230a89ed1a04ee4f1407a4d7b3\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a413f77230a89ed1a04ee4f1407a4d7b3\">&#9670;&#160;</a></span>_fvarIndexBuffers</h2>\n \n@@ -693,15 +693,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00134\">134</a> of file <a class=\"el\" href=\"a00818_source.html\">cpuPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l00134\">134</a> of file <a class=\"el\" href=\"a00791_source.html\">cpuPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a374201f74533e6af17184def3a4d18f3\" name=\"a374201f74533e6af17184def3a4d18f3\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a374201f74533e6af17184def3a4d18f3\">&#9670;&#160;</a></span>_fvarParamBuffers</h2>\n \n <div class=\"memitem\">\n@@ -717,15 +717,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00135\">135</a> of file <a class=\"el\" href=\"a00818_source.html\">cpuPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l00135\">135</a> of file <a class=\"el\" href=\"a00791_source.html\">cpuPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"acdf8228439ce43565d90edce85b43368\" name=\"acdf8228439ce43565d90edce85b43368\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acdf8228439ce43565d90edce85b43368\">&#9670;&#160;</a></span>_fvarPatchArrays</h2>\n \n <div class=\"memitem\">\n@@ -741,15 +741,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00133\">133</a> of file <a class=\"el\" href=\"a00818_source.html\">cpuPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l00133\">133</a> of file <a class=\"el\" href=\"a00791_source.html\">cpuPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a6e32349421c301eddf366c04c3a28015\" name=\"a6e32349421c301eddf366c04c3a28015\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6e32349421c301eddf366c04c3a28015\">&#9670;&#160;</a></span>_indexBuffer</h2>\n \n <div class=\"memitem\">\n@@ -765,15 +765,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00127\">127</a> of file <a class=\"el\" href=\"a00818_source.html\">cpuPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l00127\">127</a> of file <a class=\"el\" href=\"a00791_source.html\">cpuPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a5dfb6b58580f2dec58e9b5bfdb4ed9f1\" name=\"a5dfb6b58580f2dec58e9b5bfdb4ed9f1\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5dfb6b58580f2dec58e9b5bfdb4ed9f1\">&#9670;&#160;</a></span>_patchArrays</h2>\n \n <div class=\"memitem\">\n@@ -789,15 +789,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00126\">126</a> of file <a class=\"el\" href=\"a00818_source.html\">cpuPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l00126\">126</a> of file <a class=\"el\" href=\"a00791_source.html\">cpuPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a18d45929d48a1738134292a7f0b27377\" name=\"a18d45929d48a1738134292a7f0b27377\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a18d45929d48a1738134292a7f0b27377\">&#9670;&#160;</a></span>_patchParamBuffer</h2>\n \n <div class=\"memitem\">\n@@ -813,15 +813,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00128\">128</a> of file <a class=\"el\" href=\"a00818_source.html\">cpuPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l00128\">128</a> of file <a class=\"el\" href=\"a00791_source.html\">cpuPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a0ff57b15e0b6f9c4ecd676fd76ae1ba1\" name=\"a0ff57b15e0b6f9c4ecd676fd76ae1ba1\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0ff57b15e0b6f9c4ecd676fd76ae1ba1\">&#9670;&#160;</a></span>_varyingIndexBuffer</h2>\n \n <div class=\"memitem\">\n@@ -837,15 +837,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00131\">131</a> of file <a class=\"el\" href=\"a00818_source.html\">cpuPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l00131\">131</a> of file <a class=\"el\" href=\"a00791_source.html\">cpuPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"acd99a0391b3b04586b11051fd0f7ed10\" name=\"acd99a0391b3b04586b11051fd0f7ed10\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acd99a0391b3b04586b11051fd0f7ed10\">&#9670;&#160;</a></span>_varyingPatchArrays</h2>\n \n <div class=\"memitem\">\n@@ -861,20 +861,20 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00818_source.html#l00130\">130</a> of file <a class=\"el\" href=\"a00818_source.html\">cpuPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l00130\">130</a> of file <a class=\"el\" href=\"a00791_source.html\">cpuPatchTable.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/osd/<a class=\"el\" href=\"a00818_source.html\">cpuPatchTable.h</a></li>\n+<li>opensubdiv/osd/<a class=\"el\" href=\"a00791_source.html\">cpuPatchTable.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00912.html\">Osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01173.html\">CpuPatchTable</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01177.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01177.html", "unified_diff": "@@ -99,15 +99,15 @@\n   <div class=\"headertitle\"><div class=\"title\">CpuVertexBuffer Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Concrete vertex buffer class for CPU subdivision.  \n  <a href=\"a01177.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00899_source.html\">cpuVertexBuffer.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00743_source.html\">cpuVertexBuffer.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\n Public Member Functions</h2></td></tr>\n <tr class=\"memitem:ad0932519eaf677c42a8ccfe9a78a2698\" id=\"r_ad0932519eaf677c42a8ccfe9a78a2698\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01177.html#ad0932519eaf677c42a8ccfe9a78a2698\">~CpuVertexBuffer</a> ()</td></tr>\n <tr class=\"memdesc:ad0932519eaf677c42a8ccfe9a78a2698\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Destructor.  <br /></td></tr>\n <tr class=\"separator:ad0932519eaf677c42a8ccfe9a78a2698\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a96601a091f8831823c4dd72b6c962f1b\" id=\"r_a96601a091f8831823c4dd72b6c962f1b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01177.html#a96601a091f8831823c4dd72b6c962f1b\">UpdateData</a> (const float *src, int startVertex, int numVertices, void *deviceContext=NULL)</td></tr>\n@@ -134,15 +134,15 @@\n <tr class=\"memdesc:afa9168f4f1f046aea4ff94933ac48972\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Constructor.  <br /></td></tr>\n <tr class=\"separator:afa9168f4f1f046aea4ff94933ac48972\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p>Concrete vertex buffer class for CPU subdivision. </p>\n <p><a class=\"el\" href=\"a01177.html\" title=\"Concrete vertex buffer class for CPU subdivision.\">CpuVertexBuffer</a> implements the VertexBufferInterface. An instance of this buffer class can be passed to <a class=\"el\" href=\"a01165.html\">CpuEvaluator</a> </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00899_source.html#l00042\">42</a> of file <a class=\"el\" href=\"a00899_source.html\">cpuVertexBuffer.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00743_source.html#l00042\">42</a> of file <a class=\"el\" href=\"a00743_source.html\">cpuVertexBuffer.h</a>.</p>\n </div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"ad0932519eaf677c42a8ccfe9a78a2698\" name=\"ad0932519eaf677c42a8ccfe9a78a2698\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad0932519eaf677c42a8ccfe9a78a2698\">&#9670;&#160;</a></span>~CpuVertexBuffer()</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n       <table class=\"memname\">\n@@ -337,15 +337,15 @@\n       </table>\n </div><div class=\"memdoc\">\n <p>This method is meant to be used in client code in order to provide coarse vertices data to <a class=\"el\" href=\"a00912.html\">Osd</a>. </p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/osd/<a class=\"el\" href=\"a00899_source.html\">cpuVertexBuffer.h</a></li>\n+<li>opensubdiv/osd/<a class=\"el\" href=\"a00743_source.html\">cpuVertexBuffer.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00912.html\">Osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01177.html\">CpuVertexBuffer</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01181.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01181.html", "unified_diff": "@@ -98,15 +98,15 @@\n   <div class=\"headertitle\"><div class=\"title\">CudaStencilTable Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>CUDA stencil table.  \n  <a href=\"a01181.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00839_source.html\">cudaEvaluator.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00692_source.html\">cudaEvaluator.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\n Public Member Functions</h2></td></tr>\n <tr class=\"memitem:af872fc469b3696a745d30d22c2b89c4c\" id=\"r_af872fc469b3696a745d30d22c2b89c4c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01181.html#af872fc469b3696a745d30d22c2b89c4c\">CudaStencilTable</a> (<a class=\"el\" href=\"a01065.html\">Far::StencilTable</a> const *stencilTable)</td></tr>\n <tr class=\"separator:af872fc469b3696a745d30d22c2b89c4c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a45150c630c07bbeabd4b91145cecf087\" id=\"r_a45150c630c07bbeabd4b91145cecf087\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01181.html#a45150c630c07bbeabd4b91145cecf087\">CudaStencilTable</a> (<a class=\"el\" href=\"a01081.html\">Far::LimitStencilTable</a> const *limitStencilTable)</td></tr>\n <tr class=\"separator:a45150c630c07bbeabd4b91145cecf087\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n@@ -141,15 +141,15 @@\n <tr class=\"separator:ac1bda7ee1a17bc67c977cde973c0aaad\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p>CUDA stencil table. </p>\n <p>This class is a cuda buffer representation of <a class=\"el\" href=\"a01065.html\" title=\"Stencil table class wrapping the template for compatibility.\">Far::StencilTable</a>.</p>\n <p><a class=\"el\" href=\"a01185.html\">CudaEvaluator</a> consumes this table to apply stencils </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00839_source.html#l00052\">52</a> of file <a class=\"el\" href=\"a00839_source.html\">cudaEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00692_source.html#l00052\">52</a> of file <a class=\"el\" href=\"a00692_source.html\">cudaEvaluator.h</a>.</p>\n </div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"af872fc469b3696a745d30d22c2b89c4c\" name=\"af872fc469b3696a745d30d22c2b89c4c\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af872fc469b3696a745d30d22c2b89c4c\">&#9670;&#160;</a></span>CudaStencilTable() <span class=\"overload\">[1/2]</span></h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n <table class=\"mlabels\">\n@@ -247,15 +247,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00839_source.html#l00059\">59</a> of file <a class=\"el\" href=\"a00839_source.html\">cudaEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00692_source.html#l00059\">59</a> of file <a class=\"el\" href=\"a00692_source.html\">cudaEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"afa5ea3da09e459d3786b4249caea825d\" name=\"afa5ea3da09e459d3786b4249caea825d\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afa5ea3da09e459d3786b4249caea825d\">&#9670;&#160;</a></span>Create() <span class=\"overload\">[2/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -285,15 +285,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00839_source.html#l00054\">54</a> of file <a class=\"el\" href=\"a00839_source.html\">cudaEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00692_source.html#l00054\">54</a> of file <a class=\"el\" href=\"a00692_source.html\">cudaEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a6b4f42dac92785ea5a1d77a4a75fa502\" name=\"a6b4f42dac92785ea5a1d77a4a75fa502\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6b4f42dac92785ea5a1d77a4a75fa502\">&#9670;&#160;</a></span>GetDuuWeightsBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -312,15 +312,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00839_source.html#l00076\">76</a> of file <a class=\"el\" href=\"a00839_source.html\">cudaEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00692_source.html#l00076\">76</a> of file <a class=\"el\" href=\"a00692_source.html\">cudaEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a0227c2f6e9e0eaa1bf104e5a6efa0830\" name=\"a0227c2f6e9e0eaa1bf104e5a6efa0830\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0227c2f6e9e0eaa1bf104e5a6efa0830\">&#9670;&#160;</a></span>GetDuvWeightsBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -339,15 +339,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00839_source.html#l00077\">77</a> of file <a class=\"el\" href=\"a00839_source.html\">cudaEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00692_source.html#l00077\">77</a> of file <a class=\"el\" href=\"a00692_source.html\">cudaEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a2b91670573e565368e68512e02d045d6\" name=\"a2b91670573e565368e68512e02d045d6\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2b91670573e565368e68512e02d045d6\">&#9670;&#160;</a></span>GetDuWeightsBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -366,15 +366,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00839_source.html#l00074\">74</a> of file <a class=\"el\" href=\"a00839_source.html\">cudaEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00692_source.html#l00074\">74</a> of file <a class=\"el\" href=\"a00692_source.html\">cudaEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a2fd4ce98e6978f5895dd4c79ef84e4d5\" name=\"a2fd4ce98e6978f5895dd4c79ef84e4d5\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2fd4ce98e6978f5895dd4c79ef84e4d5\">&#9670;&#160;</a></span>GetDvvWeightsBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -393,15 +393,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00839_source.html#l00078\">78</a> of file <a class=\"el\" href=\"a00839_source.html\">cudaEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00692_source.html#l00078\">78</a> of file <a class=\"el\" href=\"a00692_source.html\">cudaEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a5a1c0c8eb5d41b526ec9480f03dbf4d0\" name=\"a5a1c0c8eb5d41b526ec9480f03dbf4d0\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5a1c0c8eb5d41b526ec9480f03dbf4d0\">&#9670;&#160;</a></span>GetDvWeightsBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -420,15 +420,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00839_source.html#l00075\">75</a> of file <a class=\"el\" href=\"a00839_source.html\">cudaEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00692_source.html#l00075\">75</a> of file <a class=\"el\" href=\"a00692_source.html\">cudaEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"af2f896634b0a6cc6d4efb82aafbad5a6\" name=\"af2f896634b0a6cc6d4efb82aafbad5a6\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af2f896634b0a6cc6d4efb82aafbad5a6\">&#9670;&#160;</a></span>GetIndicesBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -447,15 +447,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00839_source.html#l00072\">72</a> of file <a class=\"el\" href=\"a00839_source.html\">cudaEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00692_source.html#l00072\">72</a> of file <a class=\"el\" href=\"a00692_source.html\">cudaEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a65836d2070b943c8fecbad926d074de2\" name=\"a65836d2070b943c8fecbad926d074de2\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a65836d2070b943c8fecbad926d074de2\">&#9670;&#160;</a></span>GetNumStencils()</h2>\n \n <div class=\"memitem\">\n@@ -474,15 +474,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00839_source.html#l00079\">79</a> of file <a class=\"el\" href=\"a00839_source.html\">cudaEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00692_source.html#l00079\">79</a> of file <a class=\"el\" href=\"a00692_source.html\">cudaEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a3822b0045b4aa89b646b145acf6dc230\" name=\"a3822b0045b4aa89b646b145acf6dc230\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3822b0045b4aa89b646b145acf6dc230\">&#9670;&#160;</a></span>GetOffsetsBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -501,15 +501,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00839_source.html#l00071\">71</a> of file <a class=\"el\" href=\"a00839_source.html\">cudaEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00692_source.html#l00071\">71</a> of file <a class=\"el\" href=\"a00692_source.html\">cudaEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ac4528f233689c7f4ae7f3fd7b0eea484\" name=\"ac4528f233689c7f4ae7f3fd7b0eea484\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac4528f233689c7f4ae7f3fd7b0eea484\">&#9670;&#160;</a></span>GetSizesBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -528,15 +528,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00839_source.html#l00070\">70</a> of file <a class=\"el\" href=\"a00839_source.html\">cudaEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00692_source.html#l00070\">70</a> of file <a class=\"el\" href=\"a00692_source.html\">cudaEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aa3cd13b6b7e97cebf92d03d3208b75fa\" name=\"aa3cd13b6b7e97cebf92d03d3208b75fa\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa3cd13b6b7e97cebf92d03d3208b75fa\">&#9670;&#160;</a></span>GetWeightsBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -555,20 +555,20 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00839_source.html#l00073\">73</a> of file <a class=\"el\" href=\"a00839_source.html\">cudaEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00692_source.html#l00073\">73</a> of file <a class=\"el\" href=\"a00692_source.html\">cudaEvaluator.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/osd/<a class=\"el\" href=\"a00839_source.html\">cudaEvaluator.h</a></li>\n+<li>opensubdiv/osd/<a class=\"el\" href=\"a00692_source.html\">cudaEvaluator.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00912.html\">Osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01181.html\">CudaStencilTable</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01185.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01185.html", "unified_diff": "@@ -94,15 +94,15 @@\n   <div class=\"summary\">\n <a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n <a href=\"a01182.html\">List of all members</a>  </div>\n   <div class=\"headertitle\"><div class=\"title\">CudaEvaluator Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00839_source.html\">cudaEvaluator.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00692_source.html\">cudaEvaluator.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\n Static Public Member Functions</h2></td></tr>\n <tr class=\"memitem:a68186cd64196498ff6a31e55a822f468\" id=\"r_a68186cd64196498ff6a31e55a822f468\"><td class=\"memTemplParams\" colspan=\"2\">template&lt;typename SRC_BUFFER , typename DST_BUFFER , typename STENCIL_TABLE &gt; </td></tr>\n <tr class=\"memitem:a68186cd64196498ff6a31e55a822f468\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01185.html#a68186cd64196498ff6a31e55a822f468\">EvalStencils</a> (SRC_BUFFER *srcBuffer, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;srcDesc, DST_BUFFER *dstBuffer, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDesc, STENCIL_TABLE const *stencilTable, const void *instance=NULL, void *deviceContext=NULL)</td></tr>\n <tr class=\"memdesc:a68186cd64196498ff6a31e55a822f468\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Generic static compute function. This function has a same signature as other device kernels have so that it can be called transparently from OsdMesh template interface.  <br /></td></tr>\n <tr class=\"separator:a68186cd64196498ff6a31e55a822f468\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n@@ -169,15 +169,15 @@\n <tr class=\"memdesc:ad845f529b06a8cc42bead41a6641dddd\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Generic limit eval function. This function has a same signature as other device kernels have so that it can be called in the same way.  <br /></td></tr>\n <tr class=\"separator:ad845f529b06a8cc42bead41a6641dddd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a9689407af718de4263562bb3a760c1dd\" id=\"r_a9689407af718de4263562bb3a760c1dd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01185.html#a9689407af718de4263562bb3a760c1dd\">Synchronize</a> (void *deviceContext=NULL)</td></tr>\n <tr class=\"separator:a9689407af718de4263562bb3a760c1dd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\">\n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00839_source.html#l00094\">94</a> of file <a class=\"el\" href=\"a00839_source.html\">cudaEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00692_source.html#l00094\">94</a> of file <a class=\"el\" href=\"a00692_source.html\">cudaEvaluator.h</a>.</p>\n </div><h2 class=\"groupheader\">Member Function Documentation</h2>\n <a id=\"a5e8c8e96ba584406e87a2e63aacfb382\" name=\"a5e8c8e96ba584406e87a2e63aacfb382\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5e8c8e96ba584406e87a2e63aacfb382\">&#9670;&#160;</a></span>EvalPatches() <span class=\"overload\">[1/6]</span></h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n <table class=\"mlabels\">\n@@ -715,15 +715,15 @@\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01189.html\" title=\"CUDA patch table.\">CudaPatchTable</a> or equivalent</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>not used in the cuda evaluator</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the cuda evaluator </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00839_source.html#l00648\">648</a> of file <a class=\"el\" href=\"a00839_source.html\">cudaEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00692_source.html#l00648\">648</a> of file <a class=\"el\" href=\"a00692_source.html\">cudaEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aed5bc5e9191bc7fccb1bdedf835d8a35\" name=\"aed5bc5e9191bc7fccb1bdedf835d8a35\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aed5bc5e9191bc7fccb1bdedf835d8a35\">&#9670;&#160;</a></span>EvalPatches() <span class=\"overload\">[5/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -841,15 +841,15 @@\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01189.html\" title=\"CUDA patch table.\">CudaPatchTable</a> or equivalent</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>not used in the cuda evaluator</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the cuda evaluator </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00839_source.html#l00565\">565</a> of file <a class=\"el\" href=\"a00839_source.html\">cudaEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00692_source.html#l00565\">565</a> of file <a class=\"el\" href=\"a00692_source.html\">cudaEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ad3803e8121bc0491e9f97900ecd50022\" name=\"ad3803e8121bc0491e9f97900ecd50022\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad3803e8121bc0491e9f97900ecd50022\">&#9670;&#160;</a></span>EvalPatches() <span class=\"overload\">[6/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -942,15 +942,15 @@\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01189.html\" title=\"CUDA patch table.\">CudaPatchTable</a> or equivalent</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>not used in the cuda evaluator</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the cuda evaluator </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00839_source.html#l00504\">504</a> of file <a class=\"el\" href=\"a00839_source.html\">cudaEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00692_source.html#l00504\">504</a> of file <a class=\"el\" href=\"a00692_source.html\">cudaEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ad845f529b06a8cc42bead41a6641dddd\" name=\"ad845f529b06a8cc42bead41a6641dddd\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad845f529b06a8cc42bead41a6641dddd\">&#9670;&#160;</a></span>EvalPatchesFaceVarying() <span class=\"overload\">[1/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -1117,15 +1117,15 @@\n     <tr><td class=\"paramname\">fvarChannel</td><td>face-varying channel</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>not used in the cuda evaluator</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the cuda evaluator </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00839_source.html#l01224\">1224</a> of file <a class=\"el\" href=\"a00839_source.html\">cudaEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00692_source.html#l01224\">1224</a> of file <a class=\"el\" href=\"a00692_source.html\">cudaEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a67b4efe234a614018b35d181db7855b4\" name=\"a67b4efe234a614018b35d181db7855b4\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a67b4efe234a614018b35d181db7855b4\">&#9670;&#160;</a></span>EvalPatchesFaceVarying() <span class=\"overload\">[2/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -1250,15 +1250,15 @@\n     <tr><td class=\"paramname\">fvarChannel</td><td>face-varying channel</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>not used in the cuda evaluator</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the cuda evaluator </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00839_source.html#l01136\">1136</a> of file <a class=\"el\" href=\"a00839_source.html\">cudaEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00692_source.html#l01136\">1136</a> of file <a class=\"el\" href=\"a00692_source.html\">cudaEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"af5d3c947db15fced476cfb40f7f12203\" name=\"af5d3c947db15fced476cfb40f7f12203\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af5d3c947db15fced476cfb40f7f12203\">&#9670;&#160;</a></span>EvalPatchesFaceVarying() <span class=\"overload\">[3/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -1355,15 +1355,15 @@\n     <tr><td class=\"paramname\">fvarChannel</td><td>face-varying channel</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>not used in the cuda evaluator</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the cuda evaluator </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00839_source.html#l01070\">1070</a> of file <a class=\"el\" href=\"a00839_source.html\">cudaEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00692_source.html#l01070\">1070</a> of file <a class=\"el\" href=\"a00692_source.html\">cudaEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ad13485a6dcf9e310ac0421ef1b2ad17b\" name=\"ad13485a6dcf9e310ac0421ef1b2ad17b\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad13485a6dcf9e310ac0421ef1b2ad17b\">&#9670;&#160;</a></span>EvalPatchesVarying() <span class=\"overload\">[1/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -1523,15 +1523,15 @@\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01189.html\" title=\"CUDA patch table.\">CudaPatchTable</a> or equivalent</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>not used in the cuda evaluator</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the cuda evaluator </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00839_source.html#l01007\">1007</a> of file <a class=\"el\" href=\"a00839_source.html\">cudaEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00692_source.html#l01007\">1007</a> of file <a class=\"el\" href=\"a00692_source.html\">cudaEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a1ce4601b04557e046242651341c39ea0\" name=\"a1ce4601b04557e046242651341c39ea0\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1ce4601b04557e046242651341c39ea0\">&#9670;&#160;</a></span>EvalPatchesVarying() <span class=\"overload\">[2/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -1649,15 +1649,15 @@\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01189.html\" title=\"CUDA patch table.\">CudaPatchTable</a> or equivalent</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>not used in the cuda evaluator</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the cuda evaluator </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00839_source.html#l00922\">922</a> of file <a class=\"el\" href=\"a00839_source.html\">cudaEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00692_source.html#l00922\">922</a> of file <a class=\"el\" href=\"a00692_source.html\">cudaEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a5711ade355506a3ff3fe3b4f5df8c2b5\" name=\"a5711ade355506a3ff3fe3b4f5df8c2b5\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5711ade355506a3ff3fe3b4f5df8c2b5\">&#9670;&#160;</a></span>EvalPatchesVarying() <span class=\"overload\">[3/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -1747,15 +1747,15 @@\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01189.html\" title=\"CUDA patch table.\">CudaPatchTable</a> or equivalent</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>not used in the cuda evaluator</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the cuda evaluator </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00839_source.html#l00859\">859</a> of file <a class=\"el\" href=\"a00839_source.html\">cudaEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00692_source.html#l00859\">859</a> of file <a class=\"el\" href=\"a00692_source.html\">cudaEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a4345e3659b7fb82f23dd51c688179ce3\" name=\"a4345e3659b7fb82f23dd51c688179ce3\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4345e3659b7fb82f23dd51c688179ce3\">&#9670;&#160;</a></span>EvalStencils() <span class=\"overload\">[1/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -2351,15 +2351,15 @@\n     <tr><td class=\"paramname\">stencilTable</td><td>stencil table to be applied.</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>not used in the cuda kernel (declared as a typed pointer to prevent undesirable template resolution)</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the cuda kernel </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00839_source.html#l00353\">353</a> of file <a class=\"el\" href=\"a00839_source.html\">cudaEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00692_source.html#l00353\">353</a> of file <a class=\"el\" href=\"a00692_source.html\">cudaEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a5d88651e38d57abedd93558865ce8f78\" name=\"a5d88651e38d57abedd93558865ce8f78\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5d88651e38d57abedd93558865ce8f78\">&#9670;&#160;</a></span>EvalStencils() <span class=\"overload\">[5/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -2463,15 +2463,15 @@\n     <tr><td class=\"paramname\">stencilTable</td><td>stencil table to be applied.</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>not used in the cuda kernel (declared as a typed pointer to prevent undesirable template resolution)</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the cuda kernel </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00839_source.html#l00218\">218</a> of file <a class=\"el\" href=\"a00839_source.html\">cudaEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00692_source.html#l00218\">218</a> of file <a class=\"el\" href=\"a00692_source.html\">cudaEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a68186cd64196498ff6a31e55a822f468\" name=\"a68186cd64196498ff6a31e55a822f468\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a68186cd64196498ff6a31e55a822f468\">&#9670;&#160;</a></span>EvalStencils() <span class=\"overload\">[6/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -2550,15 +2550,15 @@\n     <tr><td class=\"paramname\">stencilTable</td><td>stencil table to be applied. The table must have Cuda memory interfaces.</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>not used in the <a class=\"el\" href=\"a01185.html\">CudaEvaluator</a></td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the <a class=\"el\" href=\"a01185.html\">CudaEvaluator</a> </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00839_source.html#l00126\">126</a> of file <a class=\"el\" href=\"a00839_source.html\">cudaEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00692_source.html#l00126\">126</a> of file <a class=\"el\" href=\"a00692_source.html\">cudaEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a9689407af718de4263562bb3a760c1dd\" name=\"a9689407af718de4263562bb3a760c1dd\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9689407af718de4263562bb3a760c1dd\">&#9670;&#160;</a></span>Synchronize()</h2>\n \n <div class=\"memitem\">\n@@ -2584,15 +2584,15 @@\n <hr  />\n <p>Other methods</p>\n <hr  />\n  \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/osd/<a class=\"el\" href=\"a00839_source.html\">cudaEvaluator.h</a></li>\n+<li>opensubdiv/osd/<a class=\"el\" href=\"a00692_source.html\">cudaEvaluator.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00912.html\">Osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01185.html\">CudaEvaluator</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01189.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01189.html", "unified_diff": "@@ -100,15 +100,15 @@\n   <div class=\"headertitle\"><div class=\"title\">CudaPatchTable Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>CUDA patch table.  \n  <a href=\"a01189.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00836_source.html\">cudaPatchTable.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00677_source.html\">cudaPatchTable.h</a>&gt;</code></p>\n <div class=\"dynheader\">\n Inheritance diagram for CudaPatchTable:</div>\n <div class=\"dyncontent\">\n  <div class=\"center\">\n   <img src=\"a01189.png\" alt=\"\"/>\n  </div></div>\n <table class=\"memberdecls\">\n@@ -178,15 +178,15 @@\n <tr class=\"separator:a24f6a6d8efcff60c81c635786f88e951\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p>CUDA patch table. </p>\n <p>This class is a cuda buffer representation of <a class=\"el\" href=\"a00993.html\" title=\"Container for arrays of parametric patches.\">Far::PatchTable</a>.</p>\n <p><a class=\"el\" href=\"a01185.html\">CudaEvaluator</a> consumes this table to evaluate on the patches. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00836_source.html#l00051\">51</a> of file <a class=\"el\" href=\"a00836_source.html\">cudaPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00677_source.html#l00051\">51</a> of file <a class=\"el\" href=\"a00677_source.html\">cudaPatchTable.h</a>.</p>\n </div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"a77236fdbdacca3f2e8e21c4be8ca0bf6\" name=\"a77236fdbdacca3f2e8e21c4be8ca0bf6\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a77236fdbdacca3f2e8e21c4be8ca0bf6\">&#9670;&#160;</a></span>~CudaPatchTable()</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n       <table class=\"memname\">\n@@ -315,15 +315,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the cuda memory of the array of <a class=\"el\" href=\"a01325.html\">Osd::PatchArray</a> buffer. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00836_source.html#l00081\">81</a> of file <a class=\"el\" href=\"a00836_source.html\">cudaPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00677_source.html#l00081\">81</a> of file <a class=\"el\" href=\"a00677_source.html\">cudaPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"abdb11e2609df00620abd8c081c3b13be\" name=\"abdb11e2609df00620abd8c081c3b13be\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abdb11e2609df00620abd8c081c3b13be\">&#9670;&#160;</a></span>GetFVarPatchIndexBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -345,15 +345,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the cuda memory of the array of face-varying control vertices. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00836_source.html#l00086\">86</a> of file <a class=\"el\" href=\"a00836_source.html\">cudaPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00677_source.html#l00086\">86</a> of file <a class=\"el\" href=\"a00677_source.html\">cudaPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"adb0788b75a061fc9b650d75bf691f1d8\" name=\"adb0788b75a061fc9b650d75bf691f1d8\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adb0788b75a061fc9b650d75bf691f1d8\">&#9670;&#160;</a></span>GetFVarPatchParamBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -375,15 +375,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the cuda memory of the array of face-varying param. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00836_source.html#l00091\">91</a> of file <a class=\"el\" href=\"a00836_source.html\">cudaPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00677_source.html#l00091\">91</a> of file <a class=\"el\" href=\"a00677_source.html\">cudaPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aa9be824a572029f3ec1e0c0d6cfecd77\" name=\"aa9be824a572029f3ec1e0c0d6cfecd77\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa9be824a572029f3ec1e0c0d6cfecd77\">&#9670;&#160;</a></span>GetNumFVarChannels()</h2>\n \n <div class=\"memitem\">\n@@ -404,15 +404,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the number of face-varying channels buffers. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00836_source.html#l00078\">78</a> of file <a class=\"el\" href=\"a00836_source.html\">cudaPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00677_source.html#l00078\">78</a> of file <a class=\"el\" href=\"a00677_source.html\">cudaPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a7e3a54d16295a2557cf0e63cb223a2db\" name=\"a7e3a54d16295a2557cf0e63cb223a2db\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7e3a54d16295a2557cf0e63cb223a2db\">&#9670;&#160;</a></span>GetPatchArrayBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -433,15 +433,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the cuda memory of the array of <a class=\"el\" href=\"a01325.html\">Osd::PatchArray</a> buffer. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00836_source.html#l00060\">60</a> of file <a class=\"el\" href=\"a00836_source.html\">cudaPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00677_source.html#l00060\">60</a> of file <a class=\"el\" href=\"a00677_source.html\">cudaPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aa14d12be64d8e84f6303a9803e73b71d\" name=\"aa14d12be64d8e84f6303a9803e73b71d\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa14d12be64d8e84f6303a9803e73b71d\">&#9670;&#160;</a></span>GetPatchIndexBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -462,15 +462,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the cuda memory of the patch control vertices. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00836_source.html#l00063\">63</a> of file <a class=\"el\" href=\"a00836_source.html\">cudaPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00677_source.html#l00063\">63</a> of file <a class=\"el\" href=\"a00677_source.html\">cudaPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ab9e6dd4a1062dc6560e306db28f31a67\" name=\"ab9e6dd4a1062dc6560e306db28f31a67\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab9e6dd4a1062dc6560e306db28f31a67\">&#9670;&#160;</a></span>GetPatchParamBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -491,15 +491,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the cuda memory of the array of <a class=\"el\" href=\"a01329.html\">Osd::PatchParam</a> buffer. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00836_source.html#l00066\">66</a> of file <a class=\"el\" href=\"a00836_source.html\">cudaPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00677_source.html#l00066\">66</a> of file <a class=\"el\" href=\"a00677_source.html\">cudaPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a54e86fe3c2d4863e344fd9be2a8141c9\" name=\"a54e86fe3c2d4863e344fd9be2a8141c9\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a54e86fe3c2d4863e344fd9be2a8141c9\">&#9670;&#160;</a></span>GetVaryingPatchArrayBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -520,15 +520,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the cuda memory of the array of <a class=\"el\" href=\"a01325.html\">Osd::PatchArray</a> buffer. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00836_source.html#l00069\">69</a> of file <a class=\"el\" href=\"a00836_source.html\">cudaPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00677_source.html#l00069\">69</a> of file <a class=\"el\" href=\"a00677_source.html\">cudaPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a486517cc7e9296c01072ccd51f77da27\" name=\"a486517cc7e9296c01072ccd51f77da27\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a486517cc7e9296c01072ccd51f77da27\">&#9670;&#160;</a></span>GetVaryingPatchIndexBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -549,15 +549,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the cuda memory of the array of varying control vertices. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00836_source.html#l00073\">73</a> of file <a class=\"el\" href=\"a00836_source.html\">cudaPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00677_source.html#l00073\">73</a> of file <a class=\"el\" href=\"a00677_source.html\">cudaPatchTable.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Member Data Documentation</h2>\n <a id=\"a4fd7bd0ad86a18e26331e88d278450d9\" name=\"a4fd7bd0ad86a18e26331e88d278450d9\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4fd7bd0ad86a18e26331e88d278450d9\">&#9670;&#160;</a></span>_fvarIndexBuffers</h2>\n \n@@ -574,15 +574,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00836_source.html#l00108\">108</a> of file <a class=\"el\" href=\"a00836_source.html\">cudaPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00677_source.html#l00108\">108</a> of file <a class=\"el\" href=\"a00677_source.html\">cudaPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a24f6a6d8efcff60c81c635786f88e951\" name=\"a24f6a6d8efcff60c81c635786f88e951\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a24f6a6d8efcff60c81c635786f88e951\">&#9670;&#160;</a></span>_fvarParamBuffers</h2>\n \n <div class=\"memitem\">\n@@ -598,15 +598,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00836_source.html#l00109\">109</a> of file <a class=\"el\" href=\"a00836_source.html\">cudaPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00677_source.html#l00109\">109</a> of file <a class=\"el\" href=\"a00677_source.html\">cudaPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a9ae3024459ccecb8a33ef3af5f27130a\" name=\"a9ae3024459ccecb8a33ef3af5f27130a\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9ae3024459ccecb8a33ef3af5f27130a\">&#9670;&#160;</a></span>_fvarPatchArrays</h2>\n \n <div class=\"memitem\">\n@@ -622,15 +622,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00836_source.html#l00107\">107</a> of file <a class=\"el\" href=\"a00836_source.html\">cudaPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00677_source.html#l00107\">107</a> of file <a class=\"el\" href=\"a00677_source.html\">cudaPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aff9fed47b172665795e7b46f4713cb39\" name=\"aff9fed47b172665795e7b46f4713cb39\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aff9fed47b172665795e7b46f4713cb39\">&#9670;&#160;</a></span>_indexBuffer</h2>\n \n <div class=\"memitem\">\n@@ -646,15 +646,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00836_source.html#l00101\">101</a> of file <a class=\"el\" href=\"a00836_source.html\">cudaPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00677_source.html#l00101\">101</a> of file <a class=\"el\" href=\"a00677_source.html\">cudaPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ab051492a1c9d697cdbb351fd09300659\" name=\"ab051492a1c9d697cdbb351fd09300659\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab051492a1c9d697cdbb351fd09300659\">&#9670;&#160;</a></span>_patchArrays</h2>\n \n <div class=\"memitem\">\n@@ -670,15 +670,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00836_source.html#l00100\">100</a> of file <a class=\"el\" href=\"a00836_source.html\">cudaPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00677_source.html#l00100\">100</a> of file <a class=\"el\" href=\"a00677_source.html\">cudaPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"afec3f4b40a8f9b6e6ed2715a774d959a\" name=\"afec3f4b40a8f9b6e6ed2715a774d959a\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afec3f4b40a8f9b6e6ed2715a774d959a\">&#9670;&#160;</a></span>_patchParamBuffer</h2>\n \n <div class=\"memitem\">\n@@ -694,15 +694,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00836_source.html#l00102\">102</a> of file <a class=\"el\" href=\"a00836_source.html\">cudaPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00677_source.html#l00102\">102</a> of file <a class=\"el\" href=\"a00677_source.html\">cudaPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a732aefa1f4a2701e2a19c828be76b7d0\" name=\"a732aefa1f4a2701e2a19c828be76b7d0\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a732aefa1f4a2701e2a19c828be76b7d0\">&#9670;&#160;</a></span>_varyingIndexBuffer</h2>\n \n <div class=\"memitem\">\n@@ -718,15 +718,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00836_source.html#l00105\">105</a> of file <a class=\"el\" href=\"a00836_source.html\">cudaPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00677_source.html#l00105\">105</a> of file <a class=\"el\" href=\"a00677_source.html\">cudaPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a372ca54f02d574dc4a20aa2f35277a1d\" name=\"a372ca54f02d574dc4a20aa2f35277a1d\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a372ca54f02d574dc4a20aa2f35277a1d\">&#9670;&#160;</a></span>_varyingPatchArrays</h2>\n \n <div class=\"memitem\">\n@@ -742,20 +742,20 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00836_source.html#l00104\">104</a> of file <a class=\"el\" href=\"a00836_source.html\">cudaPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00677_source.html#l00104\">104</a> of file <a class=\"el\" href=\"a00677_source.html\">cudaPatchTable.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/osd/<a class=\"el\" href=\"a00836_source.html\">cudaPatchTable.h</a></li>\n+<li>opensubdiv/osd/<a class=\"el\" href=\"a00677_source.html\">cudaPatchTable.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00912.html\">Osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01189.html\">CudaPatchTable</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01193.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01193.html", "unified_diff": "@@ -99,15 +99,15 @@\n   <div class=\"headertitle\"><div class=\"title\">CudaVertexBuffer Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Concrete vertex buffer class for Cuda subdivision.  \n  <a href=\"a01193.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00875_source.html\">cudaVertexBuffer.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00674_source.html\">cudaVertexBuffer.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\n Public Member Functions</h2></td></tr>\n <tr class=\"memitem:a7534b2edf898c9b6ee4a0b9c8aaf918f\" id=\"r_a7534b2edf898c9b6ee4a0b9c8aaf918f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01193.html#a7534b2edf898c9b6ee4a0b9c8aaf918f\">~CudaVertexBuffer</a> ()</td></tr>\n <tr class=\"memdesc:a7534b2edf898c9b6ee4a0b9c8aaf918f\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Destructor.  <br /></td></tr>\n <tr class=\"separator:a7534b2edf898c9b6ee4a0b9c8aaf918f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a96601a091f8831823c4dd72b6c962f1b\" id=\"r_a96601a091f8831823c4dd72b6c962f1b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01193.html#a96601a091f8831823c4dd72b6c962f1b\">UpdateData</a> (const float *src, int startVertex, int numVertices, void *deviceContext=NULL)</td></tr>\n@@ -136,15 +136,15 @@\n <tr class=\"memitem:add23d9f5bbc918076d240287a9b3664f\" id=\"r_add23d9f5bbc918076d240287a9b3664f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01193.html#add23d9f5bbc918076d240287a9b3664f\">allocate</a> ()</td></tr>\n <tr class=\"separator:add23d9f5bbc918076d240287a9b3664f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p>Concrete vertex buffer class for Cuda subdivision. </p>\n <p><a class=\"el\" href=\"a01193.html\" title=\"Concrete vertex buffer class for Cuda subdivision.\">CudaVertexBuffer</a> implements CudaVertexBufferInterface. An instance of this buffer class can be passed to <a class=\"el\" href=\"a01185.html\">CudaEvaluator</a> </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00875_source.html#l00042\">42</a> of file <a class=\"el\" href=\"a00875_source.html\">cudaVertexBuffer.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00674_source.html#l00042\">42</a> of file <a class=\"el\" href=\"a00674_source.html\">cudaVertexBuffer.h</a>.</p>\n </div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"a7534b2edf898c9b6ee4a0b9c8aaf918f\" name=\"a7534b2edf898c9b6ee4a0b9c8aaf918f\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7534b2edf898c9b6ee4a0b9c8aaf918f\">&#9670;&#160;</a></span>~CudaVertexBuffer()</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n       <table class=\"memname\">\n@@ -365,15 +365,15 @@\n       </table>\n </div><div class=\"memdoc\">\n <p>This method is meant to be used in client code in order to provide coarse vertices data to <a class=\"el\" href=\"a00912.html\">Osd</a>. </p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/osd/<a class=\"el\" href=\"a00875_source.html\">cudaVertexBuffer.h</a></li>\n+<li>opensubdiv/osd/<a class=\"el\" href=\"a00674_source.html\">cudaVertexBuffer.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00912.html\">Osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01193.html\">CudaVertexBuffer</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01197.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01197.html", "unified_diff": "@@ -98,15 +98,15 @@\n   <div class=\"headertitle\"><div class=\"title\">D3D11StencilTable Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>D3D11 stencil table.  \n  <a href=\"a01197.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00800_source.html\">d3d11ComputeEvaluator.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00686_source.html\">d3d11ComputeEvaluator.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\n Public Member Functions</h2></td></tr>\n <tr class=\"memitem:a7e3a2f5c281c55308400138222797dbc\" id=\"r_a7e3a2f5c281c55308400138222797dbc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01197.html#a7e3a2f5c281c55308400138222797dbc\">D3D11StencilTable</a> (<a class=\"el\" href=\"a01065.html\">Far::StencilTable</a> const *stencilTable, ID3D11DeviceContext *deviceContext)</td></tr>\n <tr class=\"separator:a7e3a2f5c281c55308400138222797dbc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a729ea8793ae67b1767d670a4541006e2\" id=\"r_a729ea8793ae67b1767d670a4541006e2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01197.html#a729ea8793ae67b1767d670a4541006e2\">~D3D11StencilTable</a> ()</td></tr>\n <tr class=\"separator:a729ea8793ae67b1767d670a4541006e2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n@@ -130,15 +130,15 @@\n <tr class=\"separator:a8981041688d408d08dce9c8890504650\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p>D3D11 stencil table. </p>\n <p>This class is a D3D11 Shader Resource View representation of <a class=\"el\" href=\"a01065.html\" title=\"Stencil table class wrapping the template for compatibility.\">Far::StencilTable</a>.</p>\n <p><a class=\"el\" href=\"a01201.html\">D3D11ComputeEvaluator</a> consumes this table to apply stencils </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00800_source.html#l00056\">56</a> of file <a class=\"el\" href=\"a00800_source.html\">d3d11ComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00686_source.html#l00056\">56</a> of file <a class=\"el\" href=\"a00686_source.html\">d3d11ComputeEvaluator.h</a>.</p>\n </div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"a7e3a2f5c281c55308400138222797dbc\" name=\"a7e3a2f5c281c55308400138222797dbc\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7e3a2f5c281c55308400138222797dbc\">&#9670;&#160;</a></span>D3D11StencilTable()</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n       <table class=\"memname\">\n@@ -214,15 +214,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00800_source.html#l00059\">59</a> of file <a class=\"el\" href=\"a00800_source.html\">d3d11ComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00686_source.html#l00059\">59</a> of file <a class=\"el\" href=\"a00686_source.html\">d3d11ComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a8981041688d408d08dce9c8890504650\" name=\"a8981041688d408d08dce9c8890504650\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8981041688d408d08dce9c8890504650\">&#9670;&#160;</a></span>Create() <span class=\"overload\">[2/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -252,15 +252,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00800_source.html#l00064\">64</a> of file <a class=\"el\" href=\"a00800_source.html\">d3d11ComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00686_source.html#l00064\">64</a> of file <a class=\"el\" href=\"a00686_source.html\">d3d11ComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a6aa76c564ae400e727b2377ce785cd90\" name=\"a6aa76c564ae400e727b2377ce785cd90\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6aa76c564ae400e727b2377ce785cd90\">&#9670;&#160;</a></span>GetIndicesSRV()</h2>\n \n <div class=\"memitem\">\n@@ -279,15 +279,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00800_source.html#l00077\">77</a> of file <a class=\"el\" href=\"a00800_source.html\">d3d11ComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00686_source.html#l00077\">77</a> of file <a class=\"el\" href=\"a00686_source.html\">d3d11ComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a65836d2070b943c8fecbad926d074de2\" name=\"a65836d2070b943c8fecbad926d074de2\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a65836d2070b943c8fecbad926d074de2\">&#9670;&#160;</a></span>GetNumStencils()</h2>\n \n <div class=\"memitem\">\n@@ -306,15 +306,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00800_source.html#l00079\">79</a> of file <a class=\"el\" href=\"a00800_source.html\">d3d11ComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00686_source.html#l00079\">79</a> of file <a class=\"el\" href=\"a00686_source.html\">d3d11ComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a4e486bdd9cf98a5582781a905d154e67\" name=\"a4e486bdd9cf98a5582781a905d154e67\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4e486bdd9cf98a5582781a905d154e67\">&#9670;&#160;</a></span>GetOffsetsSRV()</h2>\n \n <div class=\"memitem\">\n@@ -333,15 +333,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00800_source.html#l00076\">76</a> of file <a class=\"el\" href=\"a00800_source.html\">d3d11ComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00686_source.html#l00076\">76</a> of file <a class=\"el\" href=\"a00686_source.html\">d3d11ComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aa6b4c8f4cd5a1e0111e77d7365018c74\" name=\"aa6b4c8f4cd5a1e0111e77d7365018c74\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa6b4c8f4cd5a1e0111e77d7365018c74\">&#9670;&#160;</a></span>GetSizesSRV()</h2>\n \n <div class=\"memitem\">\n@@ -360,15 +360,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00800_source.html#l00075\">75</a> of file <a class=\"el\" href=\"a00800_source.html\">d3d11ComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00686_source.html#l00075\">75</a> of file <a class=\"el\" href=\"a00686_source.html\">d3d11ComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ac3de1233503ee41bac41618702b4302c\" name=\"ac3de1233503ee41bac41618702b4302c\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac3de1233503ee41bac41618702b4302c\">&#9670;&#160;</a></span>GetWeightsSRV()</h2>\n \n <div class=\"memitem\">\n@@ -387,20 +387,20 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00800_source.html#l00078\">78</a> of file <a class=\"el\" href=\"a00800_source.html\">d3d11ComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00686_source.html#l00078\">78</a> of file <a class=\"el\" href=\"a00686_source.html\">d3d11ComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/osd/<a class=\"el\" href=\"a00800_source.html\">d3d11ComputeEvaluator.h</a></li>\n+<li>opensubdiv/osd/<a class=\"el\" href=\"a00686_source.html\">d3d11ComputeEvaluator.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00912.html\">Osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01197.html\">D3D11StencilTable</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01201.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01201.html", "unified_diff": "@@ -96,15 +96,15 @@\n <a href=\"#pub-methods\">Public Member Functions</a> &#124;\n <a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n <a href=\"a01198.html\">List of all members</a>  </div>\n   <div class=\"headertitle\"><div class=\"title\">D3D11ComputeEvaluator Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00800_source.html\">d3d11ComputeEvaluator.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00686_source.html\">d3d11ComputeEvaluator.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\n Public Types</h2></td></tr>\n <tr class=\"memitem:a2c24b70c9312d8dff3fecb9ddea52c44\" id=\"r_a2c24b70c9312d8dff3fecb9ddea52c44\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01201.html#a2c24b70c9312d8dff3fecb9ddea52c44\">Instantiatable</a></td></tr>\n <tr class=\"separator:a2c24b70c9312d8dff3fecb9ddea52c44\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\n@@ -136,29 +136,29 @@\n <tr class=\"separator:a0fe7977009448c93da833015758daab8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a32ee99f6118ec6f2a93fee1d34a90dc1\" id=\"r_a32ee99f6118ec6f2a93fee1d34a90dc1\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01201.html#a32ee99f6118ec6f2a93fee1d34a90dc1\">Synchronize</a> (ID3D11DeviceContext *deviceContext)</td></tr>\n <tr class=\"memdesc:a32ee99f6118ec6f2a93fee1d34a90dc1\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Wait the dispatched kernel finishes.  <br /></td></tr>\n <tr class=\"separator:a32ee99f6118ec6f2a93fee1d34a90dc1\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\">\n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00800_source.html#l00096\">96</a> of file <a class=\"el\" href=\"a00800_source.html\">d3d11ComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00686_source.html#l00096\">96</a> of file <a class=\"el\" href=\"a00686_source.html\">d3d11ComputeEvaluator.h</a>.</p>\n </div><h2 class=\"groupheader\">Member Typedef Documentation</h2>\n <a id=\"a2c24b70c9312d8dff3fecb9ddea52c44\" name=\"a2c24b70c9312d8dff3fecb9ddea52c44\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2c24b70c9312d8dff3fecb9ddea52c44\">&#9670;&#160;</a></span>Instantiatable</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">typedef bool <a class=\"el\" href=\"a01201.html#a2c24b70c9312d8dff3fecb9ddea52c44\">Instantiatable</a></td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00800_source.html#l00098\">98</a> of file <a class=\"el\" href=\"a00800_source.html\">d3d11ComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00686_source.html#l00098\">98</a> of file <a class=\"el\" href=\"a00686_source.html\">d3d11ComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"aa81511d3938d70d67a62217951cb8eb7\" name=\"aa81511d3938d70d67a62217951cb8eb7\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa81511d3938d70d67a62217951cb8eb7\">&#9670;&#160;</a></span>D3D11ComputeEvaluator()</h2>\n \n@@ -519,15 +519,15 @@\n     <tr><td class=\"paramname\">stencilTable</td><td>stencil table to be applied. The table must have SSBO interfaces.</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>cached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem.</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>ID3D11DeviceContext. </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00800_source.html#l00148\">148</a> of file <a class=\"el\" href=\"a00800_source.html\">d3d11ComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00686_source.html#l00148\">148</a> of file <a class=\"el\" href=\"a00686_source.html\">d3d11ComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a6be7cb8c9a51cd6ba1c01c5c59f94a60\" name=\"a6be7cb8c9a51cd6ba1c01c5c59f94a60\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6be7cb8c9a51cd6ba1c01c5c59f94a60\">&#9670;&#160;</a></span>EvalStencils() <span class=\"overload\">[3/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -584,15 +584,15 @@\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n <p>Dispatch the DX compute kernel on GPU asynchronously. returns false if the kernel hasn't been compiled yet. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00800_source.html#l00181\">181</a> of file <a class=\"el\" href=\"a00800_source.html\">d3d11ComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00686_source.html#l00181\">181</a> of file <a class=\"el\" href=\"a00686_source.html\">d3d11ComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a32ee99f6118ec6f2a93fee1d34a90dc1\" name=\"a32ee99f6118ec6f2a93fee1d34a90dc1\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a32ee99f6118ec6f2a93fee1d34a90dc1\">&#9670;&#160;</a></span>Synchronize()</h2>\n \n <div class=\"memitem\">\n@@ -617,15 +617,15 @@\n </div><div class=\"memdoc\">\n \n <p>Wait the dispatched kernel finishes. </p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/osd/<a class=\"el\" href=\"a00800_source.html\">d3d11ComputeEvaluator.h</a></li>\n+<li>opensubdiv/osd/<a class=\"el\" href=\"a00686_source.html\">d3d11ComputeEvaluator.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00912.html\">Osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01201.html\">D3D11ComputeEvaluator</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01205.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01205.html", "unified_diff": "@@ -96,15 +96,15 @@\n <a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n <a href=\"#pro-methods\">Protected Member Functions</a> &#124;\n <a href=\"a01202.html\">List of all members</a>  </div>\n   <div class=\"headertitle\"><div class=\"title\">D3D11LegacyGregoryPatchTable Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00863_source.html\">d3d11LegacyGregoryPatchTable.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00695_source.html\">d3d11LegacyGregoryPatchTable.h</a>&gt;</code></p>\n <div class=\"dynheader\">\n Inheritance diagram for D3D11LegacyGregoryPatchTable:</div>\n <div class=\"dyncontent\">\n  <div class=\"center\">\n   <img src=\"a01205.png\" alt=\"\"/>\n  </div></div>\n <table class=\"memberdecls\">\n@@ -134,15 +134,15 @@\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-methods\" name=\"pro-methods\"></a>\n Protected Member Functions</h2></td></tr>\n <tr class=\"memitem:af138b4535e4db5f013225c5924e0b243\" id=\"r_af138b4535e4db5f013225c5924e0b243\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01205.html#af138b4535e4db5f013225c5924e0b243\">D3D11LegacyGregoryPatchTable</a> ()</td></tr>\n <tr class=\"separator:af138b4535e4db5f013225c5924e0b243\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\">\n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00863_source.html#l00043\">43</a> of file <a class=\"el\" href=\"a00863_source.html\">d3d11LegacyGregoryPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00695_source.html#l00043\">43</a> of file <a class=\"el\" href=\"a00695_source.html\">d3d11LegacyGregoryPatchTable.h</a>.</p>\n </div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"a1b73be1e9343a3df3d0dd6027d06fe1b\" name=\"a1b73be1e9343a3df3d0dd6027d06fe1b\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1b73be1e9343a3df3d0dd6027d06fe1b\">&#9670;&#160;</a></span>~D3D11LegacyGregoryPatchTable()</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n       <table class=\"memname\">\n@@ -215,15 +215,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00863_source.html#l00049\">49</a> of file <a class=\"el\" href=\"a00863_source.html\">d3d11LegacyGregoryPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00695_source.html#l00049\">49</a> of file <a class=\"el\" href=\"a00695_source.html\">d3d11LegacyGregoryPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a976374548278711d50993273260df174\" name=\"a976374548278711d50993273260df174\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a976374548278711d50993273260df174\">&#9670;&#160;</a></span>Create() <span class=\"overload\">[2/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -279,15 +279,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00863_source.html#l00074\">74</a> of file <a class=\"el\" href=\"a00863_source.html\">d3d11LegacyGregoryPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00695_source.html#l00074\">74</a> of file <a class=\"el\" href=\"a00695_source.html\">d3d11LegacyGregoryPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"af03db41bfcbbf8bb266f7b067df6433a\" name=\"af03db41bfcbbf8bb266f7b067df6433a\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af03db41bfcbbf8bb266f7b067df6433a\">&#9670;&#160;</a></span>GetQuadOffsetsSRV()</h2>\n \n <div class=\"memitem\">\n@@ -306,15 +306,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00863_source.html#l00070\">70</a> of file <a class=\"el\" href=\"a00863_source.html\">d3d11LegacyGregoryPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00695_source.html#l00070\">70</a> of file <a class=\"el\" href=\"a00695_source.html\">d3d11LegacyGregoryPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ab758c72f33a9e3aa46c1096446c3557e\" name=\"ab758c72f33a9e3aa46c1096446c3557e\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab758c72f33a9e3aa46c1096446c3557e\">&#9670;&#160;</a></span>GetVertexSRV()</h2>\n \n <div class=\"memitem\">\n@@ -333,15 +333,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00863_source.html#l00062\">62</a> of file <a class=\"el\" href=\"a00863_source.html\">d3d11LegacyGregoryPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00695_source.html#l00062\">62</a> of file <a class=\"el\" href=\"a00695_source.html\">d3d11LegacyGregoryPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"adbc155c902f4c2cb88d9fffbeb6499b4\" name=\"adbc155c902f4c2cb88d9fffbeb6499b4\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adbc155c902f4c2cb88d9fffbeb6499b4\">&#9670;&#160;</a></span>GetVertexValenceSRV()</h2>\n \n <div class=\"memitem\">\n@@ -360,15 +360,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00863_source.html#l00066\">66</a> of file <a class=\"el\" href=\"a00863_source.html\">d3d11LegacyGregoryPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00695_source.html#l00066\">66</a> of file <a class=\"el\" href=\"a00695_source.html\">d3d11LegacyGregoryPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a16aad8981b0b35184b6e44cfb242003d\" name=\"a16aad8981b0b35184b6e44cfb242003d\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a16aad8981b0b35184b6e44cfb242003d\">&#9670;&#160;</a></span>UpdateVertexBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -405,15 +405,15 @@\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/osd/<a class=\"el\" href=\"a00863_source.html\">d3d11LegacyGregoryPatchTable.h</a></li>\n+<li>opensubdiv/osd/<a class=\"el\" href=\"a00695_source.html\">d3d11LegacyGregoryPatchTable.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00912.html\">Osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01205.html\">D3D11LegacyGregoryPatchTable</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01209.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01209.html", "unified_diff": "@@ -98,15 +98,15 @@\n <a href=\"#pro-methods\">Protected Member Functions</a> &#124;\n <a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n <a href=\"a01206.html\">List of all members</a>  </div>\n   <div class=\"headertitle\"><div class=\"title\">D3D11PatchTable Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00815_source.html\">d3d11PatchTable.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00710_source.html\">d3d11PatchTable.h</a>&gt;</code></p>\n <div class=\"dynheader\">\n Inheritance diagram for D3D11PatchTable:</div>\n <div class=\"dyncontent\">\n  <div class=\"center\">\n   <img src=\"a01209.png\" alt=\"\"/>\n  </div></div>\n <table class=\"memberdecls\">\n@@ -152,29 +152,29 @@\n <tr class=\"memitem:a922297765b71fb93103914cb95b76e68\" id=\"r_a922297765b71fb93103914cb95b76e68\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">ID3D11Buffer *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01209.html#a922297765b71fb93103914cb95b76e68\">_patchParamBuffer</a></td></tr>\n <tr class=\"separator:a922297765b71fb93103914cb95b76e68\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a906a11e9011b14e667c4e46e0cb0089c\" id=\"r_a906a11e9011b14e667c4e46e0cb0089c\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">ID3D11ShaderResourceView *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01209.html#a906a11e9011b14e667c4e46e0cb0089c\">_patchParamBufferSRV</a></td></tr>\n <tr class=\"separator:a906a11e9011b14e667c4e46e0cb0089c\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\">\n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00815_source.html#l00049\">49</a> of file <a class=\"el\" href=\"a00815_source.html\">d3d11PatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00710_source.html#l00049\">49</a> of file <a class=\"el\" href=\"a00710_source.html\">d3d11PatchTable.h</a>.</p>\n </div><h2 class=\"groupheader\">Member Typedef Documentation</h2>\n <a id=\"a2d85a5ed6ddcef5023c9ef2e6fdd38a5\" name=\"a2d85a5ed6ddcef5023c9ef2e6fdd38a5\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2d85a5ed6ddcef5023c9ef2e6fdd38a5\">&#9670;&#160;</a></span>VertexBufferBinding</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">typedef ID3D11Buffer* <a class=\"el\" href=\"a01209.html#a2d85a5ed6ddcef5023c9ef2e6fdd38a5\">VertexBufferBinding</a></td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00815_source.html#l00051\">51</a> of file <a class=\"el\" href=\"a00815_source.html\">d3d11PatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00710_source.html#l00051\">51</a> of file <a class=\"el\" href=\"a00710_source.html\">d3d11PatchTable.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"ac81ed5f09e3d3a2aae5a01802b343a6d\" name=\"ac81ed5f09e3d3a2aae5a01802b343a6d\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac81ed5f09e3d3a2aae5a01802b343a6d\">&#9670;&#160;</a></span>D3D11PatchTable()</h2>\n \n@@ -278,15 +278,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00815_source.html#l00057\">57</a> of file <a class=\"el\" href=\"a00815_source.html\">d3d11PatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00710_source.html#l00057\">57</a> of file <a class=\"el\" href=\"a00710_source.html\">d3d11PatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a8d071db2033c568b98a8aed737e563e9\" name=\"a8d071db2033c568b98a8aed737e563e9\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8d071db2033c568b98a8aed737e563e9\">&#9670;&#160;</a></span>Create() <span class=\"overload\">[2/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -341,15 +341,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00815_source.html#l00065\">65</a> of file <a class=\"el\" href=\"a00815_source.html\">d3d11PatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00710_source.html#l00065\">65</a> of file <a class=\"el\" href=\"a00710_source.html\">d3d11PatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a45505c8c99abe0baf8b56981fa0a31e1\" name=\"a45505c8c99abe0baf8b56981fa0a31e1\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a45505c8c99abe0baf8b56981fa0a31e1\">&#9670;&#160;</a></span>GetPatchIndexBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -370,15 +370,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the index buffer containing the patch control vertices. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00815_source.html#l00070\">70</a> of file <a class=\"el\" href=\"a00815_source.html\">d3d11PatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00710_source.html#l00070\">70</a> of file <a class=\"el\" href=\"a00710_source.html\">d3d11PatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ab57fd008d10c0c2c6ed4182bb3f187ee\" name=\"ab57fd008d10c0c2c6ed4182bb3f187ee\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab57fd008d10c0c2c6ed4182bb3f187ee\">&#9670;&#160;</a></span>GetPatchParamSRV()</h2>\n \n <div class=\"memitem\">\n@@ -399,15 +399,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the SRV containing the patch parameter. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00815_source.html#l00075\">75</a> of file <a class=\"el\" href=\"a00815_source.html\">d3d11PatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00710_source.html#l00075\">75</a> of file <a class=\"el\" href=\"a00710_source.html\">d3d11PatchTable.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Member Data Documentation</h2>\n <a id=\"a70f9e642d07efb73b8e7dc7a418d6311\" name=\"a70f9e642d07efb73b8e7dc7a418d6311\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a70f9e642d07efb73b8e7dc7a418d6311\">&#9670;&#160;</a></span>_indexBuffer</h2>\n \n@@ -424,15 +424,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00815_source.html#l00086\">86</a> of file <a class=\"el\" href=\"a00815_source.html\">d3d11PatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00710_source.html#l00086\">86</a> of file <a class=\"el\" href=\"a00710_source.html\">d3d11PatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a5dfb6b58580f2dec58e9b5bfdb4ed9f1\" name=\"a5dfb6b58580f2dec58e9b5bfdb4ed9f1\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5dfb6b58580f2dec58e9b5bfdb4ed9f1\">&#9670;&#160;</a></span>_patchArrays</h2>\n \n <div class=\"memitem\">\n@@ -448,15 +448,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00815_source.html#l00084\">84</a> of file <a class=\"el\" href=\"a00815_source.html\">d3d11PatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00710_source.html#l00084\">84</a> of file <a class=\"el\" href=\"a00710_source.html\">d3d11PatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a922297765b71fb93103914cb95b76e68\" name=\"a922297765b71fb93103914cb95b76e68\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a922297765b71fb93103914cb95b76e68\">&#9670;&#160;</a></span>_patchParamBuffer</h2>\n \n <div class=\"memitem\">\n@@ -472,15 +472,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00815_source.html#l00087\">87</a> of file <a class=\"el\" href=\"a00815_source.html\">d3d11PatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00710_source.html#l00087\">87</a> of file <a class=\"el\" href=\"a00710_source.html\">d3d11PatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a906a11e9011b14e667c4e46e0cb0089c\" name=\"a906a11e9011b14e667c4e46e0cb0089c\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a906a11e9011b14e667c4e46e0cb0089c\">&#9670;&#160;</a></span>_patchParamBufferSRV</h2>\n \n <div class=\"memitem\">\n@@ -496,20 +496,20 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00815_source.html#l00088\">88</a> of file <a class=\"el\" href=\"a00815_source.html\">d3d11PatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00710_source.html#l00088\">88</a> of file <a class=\"el\" href=\"a00710_source.html\">d3d11PatchTable.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/osd/<a class=\"el\" href=\"a00815_source.html\">d3d11PatchTable.h</a></li>\n+<li>opensubdiv/osd/<a class=\"el\" href=\"a00710_source.html\">d3d11PatchTable.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00912.html\">Osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01209.html\">D3D11PatchTable</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01213.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01213.html", "unified_diff": "@@ -99,15 +99,15 @@\n   <div class=\"headertitle\"><div class=\"title\">D3D11VertexBuffer Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Concrete vertex buffer class for DirectX subdivision and DirectX drawing.  \n  <a href=\"a01213.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00902_source.html\">d3d11VertexBuffer.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00788_source.html\">d3d11VertexBuffer.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\n Public Member Functions</h2></td></tr>\n <tr class=\"memitem:ad9941ba7019b0fd8aad6e9321d91c26a\" id=\"r_ad9941ba7019b0fd8aad6e9321d91c26a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">virtual&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01213.html#ad9941ba7019b0fd8aad6e9321d91c26a\">~D3D11VertexBuffer</a> ()</td></tr>\n <tr class=\"memdesc:ad9941ba7019b0fd8aad6e9321d91c26a\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Destructor.  <br /></td></tr>\n <tr class=\"separator:ad9941ba7019b0fd8aad6e9321d91c26a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a8f44858290b870c214ee24afead3e9c3\" id=\"r_a8f44858290b870c214ee24afead3e9c3\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01213.html#a8f44858290b870c214ee24afead3e9c3\">UpdateData</a> (const float *src, int startVertex, int numVertices, ID3D11DeviceContext *deviceContext)</td></tr>\n@@ -142,15 +142,15 @@\n <tr class=\"memitem:ae61b4ed6cc7cb69826cd0804c2d972b7\" id=\"r_ae61b4ed6cc7cb69826cd0804c2d972b7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01213.html#ae61b4ed6cc7cb69826cd0804c2d972b7\">allocate</a> (ID3D11Device *device)</td></tr>\n <tr class=\"separator:ae61b4ed6cc7cb69826cd0804c2d972b7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p>Concrete vertex buffer class for DirectX subdivision and DirectX drawing. </p>\n <p><a class=\"el\" href=\"a01213.html\" title=\"Concrete vertex buffer class for DirectX subdivision and DirectX drawing.\">D3D11VertexBuffer</a> implements D3D11VertexBufferInterface. An instance of this buffer class can be passed to <a class=\"el\" href=\"a01201.html\">D3D11ComputeEvaluator</a>. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00902_source.html#l00046\">46</a> of file <a class=\"el\" href=\"a00902_source.html\">d3d11VertexBuffer.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00788_source.html#l00046\">46</a> of file <a class=\"el\" href=\"a00788_source.html\">d3d11VertexBuffer.h</a>.</p>\n </div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"ad9941ba7019b0fd8aad6e9321d91c26a\" name=\"ad9941ba7019b0fd8aad6e9321d91c26a\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad9941ba7019b0fd8aad6e9321d91c26a\">&#9670;&#160;</a></span>~D3D11VertexBuffer()</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n <table class=\"mlabels\">\n@@ -302,15 +302,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the D3D11 buffer object (for <a class=\"el\" href=\"a01281.html\">Osd::Mesh</a> interface) </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00902_source.html#l00070\">70</a> of file <a class=\"el\" href=\"a00902_source.html\">d3d11VertexBuffer.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00788_source.html#l00070\">70</a> of file <a class=\"el\" href=\"a00788_source.html\">d3d11VertexBuffer.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a915a9d78d36f58b1750237ae40555029\" name=\"a915a9d78d36f58b1750237ae40555029\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a915a9d78d36f58b1750237ae40555029\">&#9670;&#160;</a></span>Create()</h2>\n \n <div class=\"memitem\">\n@@ -430,15 +430,15 @@\n       </table>\n </div><div class=\"memdoc\">\n <p>This method is meant to be used in client code in order to provide coarse vertices data to <a class=\"el\" href=\"a00912.html\">Osd</a>. </p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/osd/<a class=\"el\" href=\"a00902_source.html\">d3d11VertexBuffer.h</a></li>\n+<li>opensubdiv/osd/<a class=\"el\" href=\"a00788_source.html\">d3d11VertexBuffer.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00912.html\">Osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01213.html\">D3D11VertexBuffer</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01217.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01217.html", "unified_diff": "@@ -98,15 +98,15 @@\n   <div class=\"headertitle\"><div class=\"title\">GLStencilTableSSBO Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>GL stencil table (Shader Storage buffer)  \n  <a href=\"a01217.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00848_source.html\">glComputeEvaluator.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00752_source.html\">glComputeEvaluator.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\n Public Member Functions</h2></td></tr>\n <tr class=\"memitem:aaacee6173a99bb3d7bbfb0a352ef9828\" id=\"r_aaacee6173a99bb3d7bbfb0a352ef9828\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01217.html#aaacee6173a99bb3d7bbfb0a352ef9828\">GLStencilTableSSBO</a> (<a class=\"el\" href=\"a01065.html\">Far::StencilTable</a> const *stencilTable)</td></tr>\n <tr class=\"separator:aaacee6173a99bb3d7bbfb0a352ef9828\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a27a911fea9736fbe935c0edc4de9b998\" id=\"r_a27a911fea9736fbe935c0edc4de9b998\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01217.html#a27a911fea9736fbe935c0edc4de9b998\">GLStencilTableSSBO</a> (<a class=\"el\" href=\"a01081.html\">Far::LimitStencilTable</a> const *limitStencilTable)</td></tr>\n <tr class=\"separator:a27a911fea9736fbe935c0edc4de9b998\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n@@ -141,15 +141,15 @@\n <tr class=\"separator:ab739faa3277bb2ea54b5198b3b664f37\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p>GL stencil table (Shader Storage buffer) </p>\n <p>This class is a GLSL SSBO representation of <a class=\"el\" href=\"a01065.html\" title=\"Stencil table class wrapping the template for compatibility.\">Far::StencilTable</a>.</p>\n <p>GLSLComputeKernel consumes this table to apply stencils </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00848_source.html#l00051\">51</a> of file <a class=\"el\" href=\"a00848_source.html\">glComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00051\">51</a> of file <a class=\"el\" href=\"a00752_source.html\">glComputeEvaluator.h</a>.</p>\n </div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"aaacee6173a99bb3d7bbfb0a352ef9828\" name=\"aaacee6173a99bb3d7bbfb0a352ef9828\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aaacee6173a99bb3d7bbfb0a352ef9828\">&#9670;&#160;</a></span>GLStencilTableSSBO() <span class=\"overload\">[1/2]</span></h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n <table class=\"mlabels\">\n@@ -247,15 +247,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00848_source.html#l00058\">58</a> of file <a class=\"el\" href=\"a00848_source.html\">glComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00058\">58</a> of file <a class=\"el\" href=\"a00752_source.html\">glComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"af687fa998cd70f0e79b87d59c96c6a72\" name=\"af687fa998cd70f0e79b87d59c96c6a72\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af687fa998cd70f0e79b87d59c96c6a72\">&#9670;&#160;</a></span>Create() <span class=\"overload\">[2/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -285,15 +285,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00848_source.html#l00053\">53</a> of file <a class=\"el\" href=\"a00848_source.html\">glComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00053\">53</a> of file <a class=\"el\" href=\"a00752_source.html\">glComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"abe929adc8bb596b84057169f5ade4663\" name=\"abe929adc8bb596b84057169f5ade4663\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abe929adc8bb596b84057169f5ade4663\">&#9670;&#160;</a></span>GetDuuWeightsBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -312,15 +312,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00848_source.html#l00076\">76</a> of file <a class=\"el\" href=\"a00848_source.html\">glComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00076\">76</a> of file <a class=\"el\" href=\"a00752_source.html\">glComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a0684aca639f38b5f1b0c8efffe5f8bd8\" name=\"a0684aca639f38b5f1b0c8efffe5f8bd8\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0684aca639f38b5f1b0c8efffe5f8bd8\">&#9670;&#160;</a></span>GetDuvWeightsBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -339,15 +339,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00848_source.html#l00077\">77</a> of file <a class=\"el\" href=\"a00848_source.html\">glComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00077\">77</a> of file <a class=\"el\" href=\"a00752_source.html\">glComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a2e90e1efa299fe2698ce2d1aa87ade49\" name=\"a2e90e1efa299fe2698ce2d1aa87ade49\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2e90e1efa299fe2698ce2d1aa87ade49\">&#9670;&#160;</a></span>GetDuWeightsBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -366,15 +366,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00848_source.html#l00074\">74</a> of file <a class=\"el\" href=\"a00848_source.html\">glComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00074\">74</a> of file <a class=\"el\" href=\"a00752_source.html\">glComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aadc7c7c9d50c030f7aee9e486b3b1d55\" name=\"aadc7c7c9d50c030f7aee9e486b3b1d55\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aadc7c7c9d50c030f7aee9e486b3b1d55\">&#9670;&#160;</a></span>GetDvvWeightsBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -393,15 +393,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00848_source.html#l00078\">78</a> of file <a class=\"el\" href=\"a00848_source.html\">glComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00078\">78</a> of file <a class=\"el\" href=\"a00752_source.html\">glComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ae418f2ccdfaec79f90a3ccb92cd511a2\" name=\"ae418f2ccdfaec79f90a3ccb92cd511a2\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae418f2ccdfaec79f90a3ccb92cd511a2\">&#9670;&#160;</a></span>GetDvWeightsBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -420,15 +420,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00848_source.html#l00075\">75</a> of file <a class=\"el\" href=\"a00848_source.html\">glComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00075\">75</a> of file <a class=\"el\" href=\"a00752_source.html\">glComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a6bacf93d27488cfcbf2e66d23b4073a1\" name=\"a6bacf93d27488cfcbf2e66d23b4073a1\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6bacf93d27488cfcbf2e66d23b4073a1\">&#9670;&#160;</a></span>GetIndicesBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -447,15 +447,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00848_source.html#l00072\">72</a> of file <a class=\"el\" href=\"a00848_source.html\">glComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00072\">72</a> of file <a class=\"el\" href=\"a00752_source.html\">glComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a65836d2070b943c8fecbad926d074de2\" name=\"a65836d2070b943c8fecbad926d074de2\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a65836d2070b943c8fecbad926d074de2\">&#9670;&#160;</a></span>GetNumStencils()</h2>\n \n <div class=\"memitem\">\n@@ -474,15 +474,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00848_source.html#l00079\">79</a> of file <a class=\"el\" href=\"a00848_source.html\">glComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00079\">79</a> of file <a class=\"el\" href=\"a00752_source.html\">glComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a8ccadebd4c9c36a15a5cbec461bd07e7\" name=\"a8ccadebd4c9c36a15a5cbec461bd07e7\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8ccadebd4c9c36a15a5cbec461bd07e7\">&#9670;&#160;</a></span>GetOffsetsBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -501,15 +501,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00848_source.html#l00071\">71</a> of file <a class=\"el\" href=\"a00848_source.html\">glComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00071\">71</a> of file <a class=\"el\" href=\"a00752_source.html\">glComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ab44562bc3f0ba09049f60ed0553e158a\" name=\"ab44562bc3f0ba09049f60ed0553e158a\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab44562bc3f0ba09049f60ed0553e158a\">&#9670;&#160;</a></span>GetSizesBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -528,15 +528,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00848_source.html#l00070\">70</a> of file <a class=\"el\" href=\"a00848_source.html\">glComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00070\">70</a> of file <a class=\"el\" href=\"a00752_source.html\">glComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a18892fc15bb6ed7166dc6bfd5aaf0065\" name=\"a18892fc15bb6ed7166dc6bfd5aaf0065\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a18892fc15bb6ed7166dc6bfd5aaf0065\">&#9670;&#160;</a></span>GetWeightsBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -555,20 +555,20 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00848_source.html#l00073\">73</a> of file <a class=\"el\" href=\"a00848_source.html\">glComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00073\">73</a> of file <a class=\"el\" href=\"a00752_source.html\">glComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/osd/<a class=\"el\" href=\"a00848_source.html\">glComputeEvaluator.h</a></li>\n+<li>opensubdiv/osd/<a class=\"el\" href=\"a00752_source.html\">glComputeEvaluator.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00912.html\">Osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01217.html\">GLStencilTableSSBO</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01221.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01221.html", "unified_diff": "@@ -97,15 +97,15 @@\n <a href=\"#pub-methods\">Public Member Functions</a> &#124;\n <a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n <a href=\"a01218.html\">List of all members</a>  </div>\n   <div class=\"headertitle\"><div class=\"title\">GLComputeEvaluator Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00848_source.html\">glComputeEvaluator.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00752_source.html\">glComputeEvaluator.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\n Public Types</h2></td></tr>\n <tr class=\"memitem:a2c24b70c9312d8dff3fecb9ddea52c44\" id=\"r_a2c24b70c9312d8dff3fecb9ddea52c44\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01221.html#a2c24b70c9312d8dff3fecb9ddea52c44\">Instantiatable</a></td></tr>\n <tr class=\"separator:a2c24b70c9312d8dff3fecb9ddea52c44\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\n@@ -233,29 +233,29 @@\n <tr class=\"separator:a719692669b13f988a0f61f4beacd79bb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:ac6c93ad38a7902d0e5ec28ff3bf9e52e\" id=\"r_ac6c93ad38a7902d0e5ec28ff3bf9e52e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01221.html#ac6c93ad38a7902d0e5ec28ff3bf9e52e\">Synchronize</a> (void *deviceContext)</td></tr>\n <tr class=\"memdesc:ac6c93ad38a7902d0e5ec28ff3bf9e52e\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Wait the dispatched kernel finishes.  <br /></td></tr>\n <tr class=\"separator:ac6c93ad38a7902d0e5ec28ff3bf9e52e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\">\n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00848_source.html#l00096\">96</a> of file <a class=\"el\" href=\"a00848_source.html\">glComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00096\">96</a> of file <a class=\"el\" href=\"a00752_source.html\">glComputeEvaluator.h</a>.</p>\n </div><h2 class=\"groupheader\">Member Typedef Documentation</h2>\n <a id=\"a2c24b70c9312d8dff3fecb9ddea52c44\" name=\"a2c24b70c9312d8dff3fecb9ddea52c44\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2c24b70c9312d8dff3fecb9ddea52c44\">&#9670;&#160;</a></span>Instantiatable</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">typedef bool <a class=\"el\" href=\"a01221.html#a2c24b70c9312d8dff3fecb9ddea52c44\">Instantiatable</a></td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00848_source.html#l00098\">98</a> of file <a class=\"el\" href=\"a00848_source.html\">glComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00098\">98</a> of file <a class=\"el\" href=\"a00752_source.html\">glComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"a9fe54ab76e32fb2dc6f7cd631ce2e678\" name=\"a9fe54ab76e32fb2dc6f7cd631ce2e678\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9fe54ab76e32fb2dc6f7cd631ce2e678\">&#9670;&#160;</a></span>GLComputeEvaluator()</h2>\n \n@@ -423,15 +423,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00848_source.html#l00111\">111</a> of file <a class=\"el\" href=\"a00848_source.html\">glComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00111\">111</a> of file <a class=\"el\" href=\"a00752_source.html\">glComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ab4c3cfbc05a1b3c7e08aac8258e38139\" name=\"ab4c3cfbc05a1b3c7e08aac8258e38139\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab4c3cfbc05a1b3c7e08aac8258e38139\">&#9670;&#160;</a></span>Create() <span class=\"overload\">[2/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -479,15 +479,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00848_source.html#l00099\">99</a> of file <a class=\"el\" href=\"a00848_source.html\">glComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00099\">99</a> of file <a class=\"el\" href=\"a00752_source.html\">glComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a2d1074f49212a9ae65161e9c957dbab7\" name=\"a2d1074f49212a9ae65161e9c957dbab7\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2d1074f49212a9ae65161e9c957dbab7\">&#9670;&#160;</a></span>EvalPatches() <span class=\"overload\">[1/8]</span></h2>\n \n <div class=\"memitem\">\n@@ -857,15 +857,15 @@\n     <tr><td class=\"paramname\">numPatchCoords</td><td>number of patchCoords.</td></tr>\n     <tr><td class=\"paramname\">patchCoords</td><td>array of locations to be evaluated.</td></tr>\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01237.html\">GLPatchTable</a> or equivalent </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00848_source.html#l01071\">1071</a> of file <a class=\"el\" href=\"a00848_source.html\">glComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l01071\">1071</a> of file <a class=\"el\" href=\"a00752_source.html\">glComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"af806842b89f37a3cd5e153ed67c926ec\" name=\"af806842b89f37a3cd5e153ed67c926ec\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af806842b89f37a3cd5e153ed67c926ec\">&#9670;&#160;</a></span>EvalPatches() <span class=\"overload\">[4/8]</span></h2>\n \n <div class=\"memitem\">\n@@ -1025,15 +1025,15 @@\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01237.html\">GLPatchTable</a> or equivalent</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>cached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem.</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the GLXFB evaluator </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00848_source.html#l00870\">870</a> of file <a class=\"el\" href=\"a00848_source.html\">glComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00870\">870</a> of file <a class=\"el\" href=\"a00752_source.html\">glComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aa28dc7f2bd31f1cdac0013ad9de8f434\" name=\"aa28dc7f2bd31f1cdac0013ad9de8f434\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa28dc7f2bd31f1cdac0013ad9de8f434\">&#9670;&#160;</a></span>EvalPatches() <span class=\"overload\">[5/8]</span></h2>\n \n <div class=\"memitem\">\n@@ -1137,15 +1137,15 @@\n     <tr><td class=\"paramname\">numPatchCoords</td><td>number of patchCoords.</td></tr>\n     <tr><td class=\"paramname\">patchCoords</td><td>array of locations to be evaluated.</td></tr>\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01237.html\">GLPatchTable</a> or equivalent </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00848_source.html#l00997\">997</a> of file <a class=\"el\" href=\"a00848_source.html\">glComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00997\">997</a> of file <a class=\"el\" href=\"a00752_source.html\">glComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a6a85616578cd5275f4a1d69f6db5ad3b\" name=\"a6a85616578cd5275f4a1d69f6db5ad3b\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6a85616578cd5275f4a1d69f6db5ad3b\">&#9670;&#160;</a></span>EvalPatches() <span class=\"overload\">[6/8]</span></h2>\n \n <div class=\"memitem\">\n@@ -1263,15 +1263,15 @@\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01237.html\">GLPatchTable</a> or equivalent</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>cached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem.</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the GLXFB evaluator </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00848_source.html#l00769\">769</a> of file <a class=\"el\" href=\"a00848_source.html\">glComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00769\">769</a> of file <a class=\"el\" href=\"a00752_source.html\">glComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a96616cfe920c027568e2ae931b3ba506\" name=\"a96616cfe920c027568e2ae931b3ba506\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a96616cfe920c027568e2ae931b3ba506\">&#9670;&#160;</a></span>EvalPatches() <span class=\"overload\">[7/8]</span></h2>\n \n <div class=\"memitem\">\n@@ -1347,15 +1347,15 @@\n     <tr><td class=\"paramname\">numPatchCoords</td><td>number of patchCoords.</td></tr>\n     <tr><td class=\"paramname\">patchCoords</td><td>array of locations to be evaluated. must have BindVBO() method returning an array of <a class=\"el\" href=\"a01321.html\" title=\"Coordinates set on a patch table.\">PatchCoord</a> struct in VBO.</td></tr>\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01237.html\">GLPatchTable</a> or equivalent </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00848_source.html#l00943\">943</a> of file <a class=\"el\" href=\"a00848_source.html\">glComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00943\">943</a> of file <a class=\"el\" href=\"a00752_source.html\">glComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aa6e408cc03b3625bb31a2822075bd87c\" name=\"aa6e408cc03b3625bb31a2822075bd87c\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa6e408cc03b3625bb31a2822075bd87c\">&#9670;&#160;</a></span>EvalPatches() <span class=\"overload\">[8/8]</span></h2>\n \n <div class=\"memitem\">\n@@ -1448,15 +1448,15 @@\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01237.html\">GLPatchTable</a> or equivalent</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>cached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem.</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the GLXFB evaluator </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00848_source.html#l00691\">691</a> of file <a class=\"el\" href=\"a00848_source.html\">glComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00691\">691</a> of file <a class=\"el\" href=\"a00752_source.html\">glComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a719692669b13f988a0f61f4beacd79bb\" name=\"a719692669b13f988a0f61f4beacd79bb\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a719692669b13f988a0f61f4beacd79bb\">&#9670;&#160;</a></span>EvalPatchesFaceVarying() <span class=\"overload\">[1/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -1623,15 +1623,15 @@\n     <tr><td class=\"paramname\">fvarChannel</td><td>face-varying channel</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>cached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem.</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the GLXFB evaluator </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00848_source.html#l01903\">1903</a> of file <a class=\"el\" href=\"a00848_source.html\">glComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l01903\">1903</a> of file <a class=\"el\" href=\"a00752_source.html\">glComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ab0a4a9c408bc2a690d879cc7c2ffd21c\" name=\"ab0a4a9c408bc2a690d879cc7c2ffd21c\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab0a4a9c408bc2a690d879cc7c2ffd21c\">&#9670;&#160;</a></span>EvalPatchesFaceVarying() <span class=\"overload\">[2/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -1784,15 +1784,15 @@\n     <tr><td class=\"paramname\">patchCoords</td><td>array of locations to be evaluated. must have BindVBO() method returning an array of <a class=\"el\" href=\"a01321.html\" title=\"Coordinates set on a patch table.\">PatchCoord</a> struct in VBO.</td></tr>\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01237.html\">GLPatchTable</a> or equivalent</td></tr>\n     <tr><td class=\"paramname\">fvarChannel</td><td>face-varying channel </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00848_source.html#l02011\">2011</a> of file <a class=\"el\" href=\"a00848_source.html\">glComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l02011\">2011</a> of file <a class=\"el\" href=\"a00752_source.html\">glComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a151b29da7c29ca329738e6a5f0c64898\" name=\"a151b29da7c29ca329738e6a5f0c64898\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a151b29da7c29ca329738e6a5f0c64898\">&#9670;&#160;</a></span>EvalPatchesFaceVarying() <span class=\"overload\">[3/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -1917,15 +1917,15 @@\n     <tr><td class=\"paramname\">fvarChannel</td><td>face-varying channel</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>cached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem.</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the GLXFB evaluator </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00848_source.html#l01736\">1736</a> of file <a class=\"el\" href=\"a00848_source.html\">glComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l01736\">1736</a> of file <a class=\"el\" href=\"a00752_source.html\">glComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a8736b15a3afb5b221ed009b19503e063\" name=\"a8736b15a3afb5b221ed009b19503e063\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8736b15a3afb5b221ed009b19503e063\">&#9670;&#160;</a></span>EvalPatchesFaceVarying() <span class=\"overload\">[4/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -2036,15 +2036,15 @@\n     <tr><td class=\"paramname\">patchCoords</td><td>array of locations to be evaluated. must have BindVBO() method returning an array of <a class=\"el\" href=\"a01321.html\" title=\"Coordinates set on a patch table.\">PatchCoord</a> struct in VBO.</td></tr>\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01237.html\">GLPatchTable</a> or equivalent</td></tr>\n     <tr><td class=\"paramname\">fvarChannel</td><td>face-varying channel </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00848_source.html#l01816\">1816</a> of file <a class=\"el\" href=\"a00848_source.html\">glComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l01816\">1816</a> of file <a class=\"el\" href=\"a00752_source.html\">glComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a1fddf904b732d4adcc2c77287a11da21\" name=\"a1fddf904b732d4adcc2c77287a11da21\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1fddf904b732d4adcc2c77287a11da21\">&#9670;&#160;</a></span>EvalPatchesFaceVarying() <span class=\"overload\">[5/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -2141,15 +2141,15 @@\n     <tr><td class=\"paramname\">fvarChannel</td><td>face-varying channel</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>cached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem.</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the GLXFB evaluator </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00848_source.html#l01606\">1606</a> of file <a class=\"el\" href=\"a00848_source.html\">glComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l01606\">1606</a> of file <a class=\"el\" href=\"a00752_source.html\">glComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"af7d3e4db03873d8c0d5da1d2c53f979e\" name=\"af7d3e4db03873d8c0d5da1d2c53f979e\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af7d3e4db03873d8c0d5da1d2c53f979e\">&#9670;&#160;</a></span>EvalPatchesFaceVarying() <span class=\"overload\">[6/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -2232,15 +2232,15 @@\n     <tr><td class=\"paramname\">patchCoords</td><td>array of locations to be evaluated. must have BindVBO() method returning an array of <a class=\"el\" href=\"a01321.html\" title=\"Coordinates set on a patch table.\">PatchCoord</a> struct in VBO.</td></tr>\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01237.html\">GLPatchTable</a> or equivalent</td></tr>\n     <tr><td class=\"paramname\">fvarChannel</td><td>face-varying channel </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00848_source.html#l01669\">1669</a> of file <a class=\"el\" href=\"a00848_source.html\">glComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l01669\">1669</a> of file <a class=\"el\" href=\"a00752_source.html\">glComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a7a65272357856989d99d800900d53e85\" name=\"a7a65272357856989d99d800900d53e85\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7a65272357856989d99d800900d53e85\">&#9670;&#160;</a></span>EvalPatchesVarying() <span class=\"overload\">[1/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -2386,15 +2386,15 @@\n     <tr><td class=\"paramname\">numPatchCoords</td><td>number of patchCoords.</td></tr>\n     <tr><td class=\"paramname\">patchCoords</td><td>array of locations to be evaluated. must have BindVBO() method returning an array of <a class=\"el\" href=\"a01321.html\" title=\"Coordinates set on a patch table.\">PatchCoord</a> struct in VBO.</td></tr>\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01237.html\">GLPatchTable</a> or equivalent </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00848_source.html#l01544\">1544</a> of file <a class=\"el\" href=\"a00848_source.html\">glComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l01544\">1544</a> of file <a class=\"el\" href=\"a00752_source.html\">glComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a5e61f61981d7584a2297f249946bd445\" name=\"a5e61f61981d7584a2297f249946bd445\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5e61f61981d7584a2297f249946bd445\">&#9670;&#160;</a></span>EvalPatchesVarying() <span class=\"overload\">[2/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -2554,15 +2554,15 @@\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01237.html\">GLPatchTable</a> or equivalent</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>cached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem.</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the GLXFB evaluator </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00848_source.html#l01439\">1439</a> of file <a class=\"el\" href=\"a00848_source.html\">glComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l01439\">1439</a> of file <a class=\"el\" href=\"a00752_source.html\">glComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ae642c88c8896d4d55b1876757197b1cc\" name=\"ae642c88c8896d4d55b1876757197b1cc\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae642c88c8896d4d55b1876757197b1cc\">&#9670;&#160;</a></span>EvalPatchesVarying() <span class=\"overload\">[3/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -2666,15 +2666,15 @@\n     <tr><td class=\"paramname\">numPatchCoords</td><td>number of patchCoords.</td></tr>\n     <tr><td class=\"paramname\">patchCoords</td><td>array of locations to be evaluated. must have BindVBO() method returning an array of <a class=\"el\" href=\"a01321.html\" title=\"Coordinates set on a patch table.\">PatchCoord</a> struct in VBO.</td></tr>\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01237.html\">GLPatchTable</a> or equivalent </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00848_source.html#l01355\">1355</a> of file <a class=\"el\" href=\"a00848_source.html\">glComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l01355\">1355</a> of file <a class=\"el\" href=\"a00752_source.html\">glComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a2accf86fd727ccc3d78bb4acd9842978\" name=\"a2accf86fd727ccc3d78bb4acd9842978\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2accf86fd727ccc3d78bb4acd9842978\">&#9670;&#160;</a></span>EvalPatchesVarying() <span class=\"overload\">[4/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -2792,15 +2792,15 @@\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01237.html\">GLPatchTable</a> or equivalent</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>cached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem.</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the GLXFB evaluator </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00848_source.html#l01278\">1278</a> of file <a class=\"el\" href=\"a00848_source.html\">glComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l01278\">1278</a> of file <a class=\"el\" href=\"a00752_source.html\">glComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a03c47cdd97f18b8bbdd1e3ce66cbd5d8\" name=\"a03c47cdd97f18b8bbdd1e3ce66cbd5d8\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a03c47cdd97f18b8bbdd1e3ce66cbd5d8\">&#9670;&#160;</a></span>EvalPatchesVarying() <span class=\"overload\">[5/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -2876,15 +2876,15 @@\n     <tr><td class=\"paramname\">numPatchCoords</td><td>number of patchCoords.</td></tr>\n     <tr><td class=\"paramname\">patchCoords</td><td>array of locations to be evaluated. must have BindVBO() method returning an array of <a class=\"el\" href=\"a01321.html\" title=\"Coordinates set on a patch table.\">PatchCoord</a> struct in VBO.</td></tr>\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01237.html\">GLPatchTable</a> or equivalent </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00848_source.html#l01214\">1214</a> of file <a class=\"el\" href=\"a00848_source.html\">glComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l01214\">1214</a> of file <a class=\"el\" href=\"a00752_source.html\">glComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a1c6ee39e3debcf0f71886acfeac5ce47\" name=\"a1c6ee39e3debcf0f71886acfeac5ce47\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1c6ee39e3debcf0f71886acfeac5ce47\">&#9670;&#160;</a></span>EvalPatchesVarying() <span class=\"overload\">[6/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -2974,15 +2974,15 @@\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01237.html\">GLPatchTable</a> or equivalent</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>cached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem.</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the GLXFB evaluator </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00848_source.html#l01154\">1154</a> of file <a class=\"el\" href=\"a00848_source.html\">glComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l01154\">1154</a> of file <a class=\"el\" href=\"a00752_source.html\">glComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a54b949bb4819f61594334e599194f224\" name=\"a54b949bb4819f61594334e599194f224\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a54b949bb4819f61594334e599194f224\">&#9670;&#160;</a></span>EvalStencils() <span class=\"overload\">[1/8]</span></h2>\n \n <div class=\"memitem\">\n@@ -3447,15 +3447,15 @@\n     <tr><td class=\"paramname\">dvvBuffer</td><td>Output buffer 2nd derivative wrt v must have BindVBO() method returning a GL buffer object of destination data</td></tr>\n     <tr><td class=\"paramname\">dvvDesc</td><td>vertex buffer descriptor for the dvvBuffer</td></tr>\n     <tr><td class=\"paramname\">stencilTable</td><td>stencil table to be applied. The table must have SSBO interfaces. </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00848_source.html#l00502\">502</a> of file <a class=\"el\" href=\"a00848_source.html\">glComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00502\">502</a> of file <a class=\"el\" href=\"a00752_source.html\">glComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ab914d6c888b41d82916edf17e35d5fbe\" name=\"ab914d6c888b41d82916edf17e35d5fbe\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab914d6c888b41d82916edf17e35d5fbe\">&#9670;&#160;</a></span>EvalStencils() <span class=\"overload\">[4/8]</span></h2>\n \n <div class=\"memitem\">\n@@ -3601,15 +3601,15 @@\n     <tr><td class=\"paramname\">stencilTable</td><td>stencil table to be applied. The table must have SSBO interfaces.</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>cached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem.</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the GLSL kernel </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00848_source.html#l00326\">326</a> of file <a class=\"el\" href=\"a00848_source.html\">glComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00326\">326</a> of file <a class=\"el\" href=\"a00752_source.html\">glComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a16dedd32573dd7f70c61f1fb6072e791\" name=\"a16dedd32573dd7f70c61f1fb6072e791\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a16dedd32573dd7f70c61f1fb6072e791\">&#9670;&#160;</a></span>EvalStencils() <span class=\"overload\">[5/8]</span></h2>\n \n <div class=\"memitem\">\n@@ -3699,15 +3699,15 @@\n     <tr><td class=\"paramname\">dvBuffer</td><td>Output buffer derivative wrt v must have BindVBO() method returning a GL buffer object of destination data</td></tr>\n     <tr><td class=\"paramname\">dvDesc</td><td>vertex buffer descriptor for the dvBuffer</td></tr>\n     <tr><td class=\"paramname\">stencilTable</td><td>stencil table to be applied. The table must have SSBO interfaces. </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00848_source.html#l00434\">434</a> of file <a class=\"el\" href=\"a00848_source.html\">glComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00434\">434</a> of file <a class=\"el\" href=\"a00752_source.html\">glComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a4290a43277fbcd7d5f55aaa369939e54\" name=\"a4290a43277fbcd7d5f55aaa369939e54\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4290a43277fbcd7d5f55aaa369939e54\">&#9670;&#160;</a></span>EvalStencils() <span class=\"overload\">[6/8]</span></h2>\n \n <div class=\"memitem\">\n@@ -3811,15 +3811,15 @@\n     <tr><td class=\"paramname\">stencilTable</td><td>stencil table to be applied. The table must have SSBO interfaces.</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>cached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem.</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the GLSL kernel </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00848_source.html#l00236\">236</a> of file <a class=\"el\" href=\"a00848_source.html\">glComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00236\">236</a> of file <a class=\"el\" href=\"a00752_source.html\">glComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aab4ecc7e79b822b8994b326cc05ad573\" name=\"aab4ecc7e79b822b8994b326cc05ad573\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aab4ecc7e79b822b8994b326cc05ad573\">&#9670;&#160;</a></span>EvalStencils() <span class=\"overload\">[7/8]</span></h2>\n \n <div class=\"memitem\">\n@@ -3881,15 +3881,15 @@\n     <tr><td class=\"paramname\">dstBuffer</td><td>Output primvar buffer must have BindVBO() method returning a GL buffer object of destination data</td></tr>\n     <tr><td class=\"paramname\">dstDesc</td><td>vertex buffer descriptor for the output buffer</td></tr>\n     <tr><td class=\"paramname\">stencilTable</td><td>stencil table to be applied. The table must have SSBO interfaces. </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00848_source.html#l00386\">386</a> of file <a class=\"el\" href=\"a00848_source.html\">glComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00386\">386</a> of file <a class=\"el\" href=\"a00752_source.html\">glComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a5a332778562ac0aaa3b59e7d504329f6\" name=\"a5a332778562ac0aaa3b59e7d504329f6\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5a332778562ac0aaa3b59e7d504329f6\">&#9670;&#160;</a></span>EvalStencils() <span class=\"overload\">[8/8]</span></h2>\n \n <div class=\"memitem\">\n@@ -3968,15 +3968,15 @@\n     <tr><td class=\"paramname\">stencilTable</td><td>stencil table to be applied. The table must have SSBO interfaces.</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>cached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem.</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the GLSL kernel </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00848_source.html#l00168\">168</a> of file <a class=\"el\" href=\"a00848_source.html\">glComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00752_source.html#l00168\">168</a> of file <a class=\"el\" href=\"a00752_source.html\">glComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ac6c93ad38a7902d0e5ec28ff3bf9e52e\" name=\"ac6c93ad38a7902d0e5ec28ff3bf9e52e\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac6c93ad38a7902d0e5ec28ff3bf9e52e\">&#9670;&#160;</a></span>Synchronize()</h2>\n \n <div class=\"memitem\">\n@@ -4001,15 +4001,15 @@\n </div><div class=\"memdoc\">\n \n <p>Wait the dispatched kernel finishes. </p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/osd/<a class=\"el\" href=\"a00848_source.html\">glComputeEvaluator.h</a></li>\n+<li>opensubdiv/osd/<a class=\"el\" href=\"a00752_source.html\">glComputeEvaluator.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00912.html\">Osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01221.html\">GLComputeEvaluator</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01233.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01233.html", "unified_diff": "@@ -96,15 +96,15 @@\n <a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n <a href=\"#pro-methods\">Protected Member Functions</a> &#124;\n <a href=\"a01230.html\">List of all members</a>  </div>\n   <div class=\"headertitle\"><div class=\"title\">GLLegacyGregoryPatchTable Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00887_source.html\">glLegacyGregoryPatchTable.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00767_source.html\">glLegacyGregoryPatchTable.h</a>&gt;</code></p>\n <div class=\"dynheader\">\n Inheritance diagram for GLLegacyGregoryPatchTable:</div>\n <div class=\"dyncontent\">\n  <div class=\"center\">\n   <img src=\"a01233.png\" alt=\"\"/>\n  </div></div>\n <table class=\"memberdecls\">\n@@ -131,15 +131,15 @@\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pro-methods\" name=\"pro-methods\"></a>\n Protected Member Functions</h2></td></tr>\n <tr class=\"memitem:a5b78188b846b316c5c0cdb42f4ee9563\" id=\"r_a5b78188b846b316c5c0cdb42f4ee9563\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01233.html#a5b78188b846b316c5c0cdb42f4ee9563\">GLLegacyGregoryPatchTable</a> ()</td></tr>\n <tr class=\"separator:a5b78188b846b316c5c0cdb42f4ee9563\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\">\n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00887_source.html#l00039\">39</a> of file <a class=\"el\" href=\"a00887_source.html\">glLegacyGregoryPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00767_source.html#l00039\">39</a> of file <a class=\"el\" href=\"a00767_source.html\">glLegacyGregoryPatchTable.h</a>.</p>\n </div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"a51fd18f3671b7b6c473a039d75808067\" name=\"a51fd18f3671b7b6c473a039d75808067\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a51fd18f3671b7b6c473a039d75808067\">&#9670;&#160;</a></span>~GLLegacyGregoryPatchTable()</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n       <table class=\"memname\">\n@@ -226,15 +226,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00887_source.html#l00060\">60</a> of file <a class=\"el\" href=\"a00887_source.html\">glLegacyGregoryPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00767_source.html#l00060\">60</a> of file <a class=\"el\" href=\"a00767_source.html\">glLegacyGregoryPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a4968ced94d61cc4d5e8f0e9883fd2116\" name=\"a4968ced94d61cc4d5e8f0e9883fd2116\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4968ced94d61cc4d5e8f0e9883fd2116\">&#9670;&#160;</a></span>GetQuadOffsetsTextureBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -253,15 +253,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00887_source.html#l00056\">56</a> of file <a class=\"el\" href=\"a00887_source.html\">glLegacyGregoryPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00767_source.html#l00056\">56</a> of file <a class=\"el\" href=\"a00767_source.html\">glLegacyGregoryPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"af81d48caf41d4a7e0c5ceb166d4de990\" name=\"af81d48caf41d4a7e0c5ceb166d4de990\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af81d48caf41d4a7e0c5ceb166d4de990\">&#9670;&#160;</a></span>GetVertexTextureBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -280,15 +280,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00887_source.html#l00048\">48</a> of file <a class=\"el\" href=\"a00887_source.html\">glLegacyGregoryPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00767_source.html#l00048\">48</a> of file <a class=\"el\" href=\"a00767_source.html\">glLegacyGregoryPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a36f9d327f21d3dee80bb225000403cce\" name=\"a36f9d327f21d3dee80bb225000403cce\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a36f9d327f21d3dee80bb225000403cce\">&#9670;&#160;</a></span>GetVertexValenceTextureBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -307,15 +307,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00887_source.html#l00052\">52</a> of file <a class=\"el\" href=\"a00887_source.html\">glLegacyGregoryPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00767_source.html#l00052\">52</a> of file <a class=\"el\" href=\"a00767_source.html\">glLegacyGregoryPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a733eda5d63a4d77324d7d50d704eaf3a\" name=\"a733eda5d63a4d77324d7d50d704eaf3a\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a733eda5d63a4d77324d7d50d704eaf3a\">&#9670;&#160;</a></span>UpdateVertexBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -330,15 +330,15 @@\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/osd/<a class=\"el\" href=\"a00887_source.html\">glLegacyGregoryPatchTable.h</a></li>\n+<li>opensubdiv/osd/<a class=\"el\" href=\"a00767_source.html\">glLegacyGregoryPatchTable.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00912.html\">Osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01233.html\">GLLegacyGregoryPatchTable</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01237.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01237.html", "unified_diff": "@@ -98,15 +98,15 @@\n <a href=\"#pro-methods\">Protected Member Functions</a> &#124;\n <a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n <a href=\"a01234.html\">List of all members</a>  </div>\n   <div class=\"headertitle\"><div class=\"title\">GLPatchTable Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00788_source.html\">glPatchTable.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00779_source.html\">glPatchTable.h</a>&gt;</code></p>\n <div class=\"dynheader\">\n Inheritance diagram for GLPatchTable:</div>\n <div class=\"dyncontent\">\n  <div class=\"center\">\n   <img src=\"a01237.png\" alt=\"\"/>\n  </div></div>\n <table class=\"memberdecls\">\n@@ -201,29 +201,29 @@\n <tr class=\"memitem:a2a8e1501f85608c6309e00955b6197dc\" id=\"r_a2a8e1501f85608c6309e00955b6197dc\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; GLuint &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01237.html#a2a8e1501f85608c6309e00955b6197dc\">_fvarParamBuffers</a></td></tr>\n <tr class=\"separator:a2a8e1501f85608c6309e00955b6197dc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a554c6f7c7544b621ca3f8f824cdc7e8e\" id=\"r_a554c6f7c7544b621ca3f8f824cdc7e8e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; GLuint &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01237.html#a554c6f7c7544b621ca3f8f824cdc7e8e\">_fvarParamTextures</a></td></tr>\n <tr class=\"separator:a554c6f7c7544b621ca3f8f824cdc7e8e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\">\n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00788_source.html#l00045\">45</a> of file <a class=\"el\" href=\"a00788_source.html\">glPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00779_source.html#l00045\">45</a> of file <a class=\"el\" href=\"a00779_source.html\">glPatchTable.h</a>.</p>\n </div><h2 class=\"groupheader\">Member Typedef Documentation</h2>\n <a id=\"a02af2ea2e9328a776b5b0bb3edf88864\" name=\"a02af2ea2e9328a776b5b0bb3edf88864\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a02af2ea2e9328a776b5b0bb3edf88864\">&#9670;&#160;</a></span>VertexBufferBinding</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">typedef GLuint <a class=\"el\" href=\"a01237.html#a02af2ea2e9328a776b5b0bb3edf88864\">VertexBufferBinding</a></td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00788_source.html#l00047\">47</a> of file <a class=\"el\" href=\"a00788_source.html\">glPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00779_source.html#l00047\">47</a> of file <a class=\"el\" href=\"a00779_source.html\">glPatchTable.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"a27e3bbc29608fb5ded788e1a6d068da7\" name=\"a27e3bbc29608fb5ded788e1a6d068da7\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a27e3bbc29608fb5ded788e1a6d068da7\">&#9670;&#160;</a></span>~GLPatchTable()</h2>\n \n@@ -351,15 +351,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the patch arrays for face-varying index buffer data. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00788_source.html#l00098\">98</a> of file <a class=\"el\" href=\"a00788_source.html\">glPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00779_source.html#l00098\">98</a> of file <a class=\"el\" href=\"a00779_source.html\">glPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a2657089828a2062a96ae15b4ea2d9bbf\" name=\"a2657089828a2062a96ae15b4ea2d9bbf\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2657089828a2062a96ae15b4ea2d9bbf\">&#9670;&#160;</a></span>GetFVarPatchIndexBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -381,15 +381,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the GL index buffer containing face-varying control vertices. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00788_source.html#l00103\">103</a> of file <a class=\"el\" href=\"a00788_source.html\">glPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00779_source.html#l00103\">103</a> of file <a class=\"el\" href=\"a00779_source.html\">glPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a95e40964621a631c5accc1a6e9bc85c7\" name=\"a95e40964621a631c5accc1a6e9bc85c7\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a95e40964621a631c5accc1a6e9bc85c7\">&#9670;&#160;</a></span>GetFVarPatchIndexTextureBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -411,15 +411,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the GL texture buffer containing face-varying control vertices. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00788_source.html#l00108\">108</a> of file <a class=\"el\" href=\"a00788_source.html\">glPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00779_source.html#l00108\">108</a> of file <a class=\"el\" href=\"a00779_source.html\">glPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a6693fe16c1c27f92acdcd0716a6656e1\" name=\"a6693fe16c1c27f92acdcd0716a6656e1\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6693fe16c1c27f92acdcd0716a6656e1\">&#9670;&#160;</a></span>GetFVarPatchParamBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -441,15 +441,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the GL index buffer containing face-varying patch params. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00788_source.html#l00113\">113</a> of file <a class=\"el\" href=\"a00788_source.html\">glPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00779_source.html#l00113\">113</a> of file <a class=\"el\" href=\"a00779_source.html\">glPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aa0d257bdc8fd9e5180f9b210fdc50209\" name=\"aa0d257bdc8fd9e5180f9b210fdc50209\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa0d257bdc8fd9e5180f9b210fdc50209\">&#9670;&#160;</a></span>GetFVarPatchParamTextureBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -471,15 +471,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the GL texture buffer containing face-varying patch params. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00788_source.html#l00118\">118</a> of file <a class=\"el\" href=\"a00788_source.html\">glPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00779_source.html#l00118\">118</a> of file <a class=\"el\" href=\"a00779_source.html\">glPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aa9be824a572029f3ec1e0c0d6cfecd77\" name=\"aa9be824a572029f3ec1e0c0d6cfecd77\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa9be824a572029f3ec1e0c0d6cfecd77\">&#9670;&#160;</a></span>GetNumFVarChannels()</h2>\n \n <div class=\"memitem\">\n@@ -500,15 +500,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the number of face-varying channel buffers. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00788_source.html#l00095\">95</a> of file <a class=\"el\" href=\"a00788_source.html\">glPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00779_source.html#l00095\">95</a> of file <a class=\"el\" href=\"a00779_source.html\">glPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a18e3d09b0c7b7552f8e419e36788166a\" name=\"a18e3d09b0c7b7552f8e419e36788166a\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a18e3d09b0c7b7552f8e419e36788166a\">&#9670;&#160;</a></span>GetPatchArrays()</h2>\n \n <div class=\"memitem\">\n@@ -529,15 +529,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the patch arrays for vertex index buffer data. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00788_source.html#l00055\">55</a> of file <a class=\"el\" href=\"a00788_source.html\">glPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00779_source.html#l00055\">55</a> of file <a class=\"el\" href=\"a00779_source.html\">glPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aa22b6cb3f4bbb8edaaa553389e080e40\" name=\"aa22b6cb3f4bbb8edaaa553389e080e40\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa22b6cb3f4bbb8edaaa553389e080e40\">&#9670;&#160;</a></span>GetPatchIndexBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -558,15 +558,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the GL index buffer containing the patch control vertices. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00788_source.html#l00060\">60</a> of file <a class=\"el\" href=\"a00788_source.html\">glPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00779_source.html#l00060\">60</a> of file <a class=\"el\" href=\"a00779_source.html\">glPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ac1366e74b619cfb89c4c2df52b7aa697\" name=\"ac1366e74b619cfb89c4c2df52b7aa697\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac1366e74b619cfb89c4c2df52b7aa697\">&#9670;&#160;</a></span>GetPatchIndexTextureBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -587,15 +587,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the GL texture buffer containing the patch control vertices. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00788_source.html#l00070\">70</a> of file <a class=\"el\" href=\"a00788_source.html\">glPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00779_source.html#l00070\">70</a> of file <a class=\"el\" href=\"a00779_source.html\">glPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a645a6698ee27f028eb10e8a43044bf7f\" name=\"a645a6698ee27f028eb10e8a43044bf7f\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a645a6698ee27f028eb10e8a43044bf7f\">&#9670;&#160;</a></span>GetPatchParamBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -616,15 +616,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the GL index buffer containing the patch parameter. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00788_source.html#l00065\">65</a> of file <a class=\"el\" href=\"a00788_source.html\">glPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00779_source.html#l00065\">65</a> of file <a class=\"el\" href=\"a00779_source.html\">glPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a2b6605b35fc9437ab5750d6929fc66d8\" name=\"a2b6605b35fc9437ab5750d6929fc66d8\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2b6605b35fc9437ab5750d6929fc66d8\">&#9670;&#160;</a></span>GetPatchParamTextureBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -645,15 +645,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the GL texture buffer containing the patch parameter. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00788_source.html#l00075\">75</a> of file <a class=\"el\" href=\"a00788_source.html\">glPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00779_source.html#l00075\">75</a> of file <a class=\"el\" href=\"a00779_source.html\">glPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aec45672f51f456fea341d644bcf16434\" name=\"aec45672f51f456fea341d644bcf16434\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aec45672f51f456fea341d644bcf16434\">&#9670;&#160;</a></span>GetVaryingPatchArrays()</h2>\n \n <div class=\"memitem\">\n@@ -674,15 +674,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the patch arrays for varying index buffer data. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00788_source.html#l00080\">80</a> of file <a class=\"el\" href=\"a00788_source.html\">glPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00779_source.html#l00080\">80</a> of file <a class=\"el\" href=\"a00779_source.html\">glPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ae0df6dbe9e1a7425c18c063dd55335f0\" name=\"ae0df6dbe9e1a7425c18c063dd55335f0\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae0df6dbe9e1a7425c18c063dd55335f0\">&#9670;&#160;</a></span>GetVaryingPatchIndexBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -703,15 +703,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the GL index buffer containing the varying control vertices. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00788_source.html#l00085\">85</a> of file <a class=\"el\" href=\"a00788_source.html\">glPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00779_source.html#l00085\">85</a> of file <a class=\"el\" href=\"a00779_source.html\">glPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ac444539beb3cfb4b80ea5119a705b662\" name=\"ac444539beb3cfb4b80ea5119a705b662\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac444539beb3cfb4b80ea5119a705b662\">&#9670;&#160;</a></span>GetVaryingPatchIndexTextureBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -732,15 +732,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Returns the GL texture buffer containing the varying control vertices. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00788_source.html#l00090\">90</a> of file <a class=\"el\" href=\"a00788_source.html\">glPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00779_source.html#l00090\">90</a> of file <a class=\"el\" href=\"a00779_source.html\">glPatchTable.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Member Data Documentation</h2>\n <a id=\"a0e48596d8f2ffc1ce58bcf64cea7ec06\" name=\"a0e48596d8f2ffc1ce58bcf64cea7ec06\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0e48596d8f2ffc1ce58bcf64cea7ec06\">&#9670;&#160;</a></span>_fvarIndexBuffers</h2>\n \n@@ -757,15 +757,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00788_source.html#l00141\">141</a> of file <a class=\"el\" href=\"a00788_source.html\">glPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00779_source.html#l00141\">141</a> of file <a class=\"el\" href=\"a00779_source.html\">glPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ab7e41e6a4b6c3fb8faeb136fc6e64998\" name=\"ab7e41e6a4b6c3fb8faeb136fc6e64998\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab7e41e6a4b6c3fb8faeb136fc6e64998\">&#9670;&#160;</a></span>_fvarIndexTextures</h2>\n \n <div class=\"memitem\">\n@@ -781,15 +781,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00788_source.html#l00142\">142</a> of file <a class=\"el\" href=\"a00788_source.html\">glPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00779_source.html#l00142\">142</a> of file <a class=\"el\" href=\"a00779_source.html\">glPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a2a8e1501f85608c6309e00955b6197dc\" name=\"a2a8e1501f85608c6309e00955b6197dc\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2a8e1501f85608c6309e00955b6197dc\">&#9670;&#160;</a></span>_fvarParamBuffers</h2>\n \n <div class=\"memitem\">\n@@ -805,15 +805,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00788_source.html#l00144\">144</a> of file <a class=\"el\" href=\"a00788_source.html\">glPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00779_source.html#l00144\">144</a> of file <a class=\"el\" href=\"a00779_source.html\">glPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a554c6f7c7544b621ca3f8f824cdc7e8e\" name=\"a554c6f7c7544b621ca3f8f824cdc7e8e\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a554c6f7c7544b621ca3f8f824cdc7e8e\">&#9670;&#160;</a></span>_fvarParamTextures</h2>\n \n <div class=\"memitem\">\n@@ -829,15 +829,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00788_source.html#l00145\">145</a> of file <a class=\"el\" href=\"a00788_source.html\">glPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00779_source.html#l00145\">145</a> of file <a class=\"el\" href=\"a00779_source.html\">glPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"abce41960eb6bedc82cbf0cb711ea66da\" name=\"abce41960eb6bedc82cbf0cb711ea66da\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abce41960eb6bedc82cbf0cb711ea66da\">&#9670;&#160;</a></span>_fvarPatchArrays</h2>\n \n <div class=\"memitem\">\n@@ -853,15 +853,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00788_source.html#l00140\">140</a> of file <a class=\"el\" href=\"a00788_source.html\">glPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00779_source.html#l00140\">140</a> of file <a class=\"el\" href=\"a00779_source.html\">glPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a5dfb6b58580f2dec58e9b5bfdb4ed9f1\" name=\"a5dfb6b58580f2dec58e9b5bfdb4ed9f1\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5dfb6b58580f2dec58e9b5bfdb4ed9f1\">&#9670;&#160;</a></span>_patchArrays</h2>\n \n <div class=\"memitem\">\n@@ -877,15 +877,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00788_source.html#l00128\">128</a> of file <a class=\"el\" href=\"a00788_source.html\">glPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00779_source.html#l00128\">128</a> of file <a class=\"el\" href=\"a00779_source.html\">glPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a60ed91ae6ab2018bcc0d4f3db4f0d2e9\" name=\"a60ed91ae6ab2018bcc0d4f3db4f0d2e9\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a60ed91ae6ab2018bcc0d4f3db4f0d2e9\">&#9670;&#160;</a></span>_patchIndexBuffer</h2>\n \n <div class=\"memitem\">\n@@ -901,15 +901,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00788_source.html#l00130\">130</a> of file <a class=\"el\" href=\"a00788_source.html\">glPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00779_source.html#l00130\">130</a> of file <a class=\"el\" href=\"a00779_source.html\">glPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"abbedd905fe4d0e32460f82d1aa9bf360\" name=\"abbedd905fe4d0e32460f82d1aa9bf360\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abbedd905fe4d0e32460f82d1aa9bf360\">&#9670;&#160;</a></span>_patchIndexTexture</h2>\n \n <div class=\"memitem\">\n@@ -925,15 +925,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00788_source.html#l00133\">133</a> of file <a class=\"el\" href=\"a00788_source.html\">glPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00779_source.html#l00133\">133</a> of file <a class=\"el\" href=\"a00779_source.html\">glPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"afcbe2b12b775d32f606ee7e347dba51a\" name=\"afcbe2b12b775d32f606ee7e347dba51a\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afcbe2b12b775d32f606ee7e347dba51a\">&#9670;&#160;</a></span>_patchParamBuffer</h2>\n \n <div class=\"memitem\">\n@@ -949,15 +949,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00788_source.html#l00131\">131</a> of file <a class=\"el\" href=\"a00788_source.html\">glPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00779_source.html#l00131\">131</a> of file <a class=\"el\" href=\"a00779_source.html\">glPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a698f8b3d96e62c8512eb3881c8112978\" name=\"a698f8b3d96e62c8512eb3881c8112978\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a698f8b3d96e62c8512eb3881c8112978\">&#9670;&#160;</a></span>_patchParamTexture</h2>\n \n <div class=\"memitem\">\n@@ -973,15 +973,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00788_source.html#l00134\">134</a> of file <a class=\"el\" href=\"a00788_source.html\">glPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00779_source.html#l00134\">134</a> of file <a class=\"el\" href=\"a00779_source.html\">glPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a30ba44ce4fe4d55733bb32e59a0f564f\" name=\"a30ba44ce4fe4d55733bb32e59a0f564f\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a30ba44ce4fe4d55733bb32e59a0f564f\">&#9670;&#160;</a></span>_varyingIndexBuffer</h2>\n \n <div class=\"memitem\">\n@@ -997,15 +997,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00788_source.html#l00137\">137</a> of file <a class=\"el\" href=\"a00788_source.html\">glPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00779_source.html#l00137\">137</a> of file <a class=\"el\" href=\"a00779_source.html\">glPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a45c78bbbee12b05b67a5709c0c9e3edf\" name=\"a45c78bbbee12b05b67a5709c0c9e3edf\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a45c78bbbee12b05b67a5709c0c9e3edf\">&#9670;&#160;</a></span>_varyingIndexTexture</h2>\n \n <div class=\"memitem\">\n@@ -1021,15 +1021,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00788_source.html#l00138\">138</a> of file <a class=\"el\" href=\"a00788_source.html\">glPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00779_source.html#l00138\">138</a> of file <a class=\"el\" href=\"a00779_source.html\">glPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"acd99a0391b3b04586b11051fd0f7ed10\" name=\"acd99a0391b3b04586b11051fd0f7ed10\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acd99a0391b3b04586b11051fd0f7ed10\">&#9670;&#160;</a></span>_varyingPatchArrays</h2>\n \n <div class=\"memitem\">\n@@ -1045,20 +1045,20 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00788_source.html#l00136\">136</a> of file <a class=\"el\" href=\"a00788_source.html\">glPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00779_source.html#l00136\">136</a> of file <a class=\"el\" href=\"a00779_source.html\">glPatchTable.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/osd/<a class=\"el\" href=\"a00788_source.html\">glPatchTable.h</a></li>\n+<li>opensubdiv/osd/<a class=\"el\" href=\"a00779_source.html\">glPatchTable.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00912.html\">Osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01237.html\">GLPatchTable</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01241.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01241.html", "unified_diff": "@@ -97,15 +97,15 @@\n   <div class=\"headertitle\"><div class=\"title\">GLSLPatchShaderSource Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Provides shader source which can be used by client code.  \n  <a href=\"a01241.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00827_source.html\">glslPatchShaderSource.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00728_source.html\">glslPatchShaderSource.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\n Static Public Member Functions</h2></td></tr>\n <tr class=\"memitem:ad41c6e1dc4a5cd6ee4f33fc5a8e15d1d\" id=\"r_ad41c6e1dc4a5cd6ee4f33fc5a8e15d1d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static std::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01241.html#ad41c6e1dc4a5cd6ee4f33fc5a8e15d1d\">GetPatchBasisShaderSource</a> ()</td></tr>\n <tr class=\"memdesc:ad41c6e1dc4a5cd6ee4f33fc5a8e15d1d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns shader source which can be used to evaluate position and first and second derivatives on piecewise parametric patches resulting from subdivision refinement.  <br /></td></tr>\n <tr class=\"separator:ad41c6e1dc4a5cd6ee4f33fc5a8e15d1d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a230efce26a4754c94dbeedd435fe471b\" id=\"r_a230efce26a4754c94dbeedd435fe471b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static std::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01241.html#a230efce26a4754c94dbeedd435fe471b\">GetPatchDrawingShaderSource</a> ()</td></tr>\n@@ -122,15 +122,15 @@\n <tr class=\"separator:afc38178f7de93f60d4f6c1072c33cc7e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a57a46d6848317cc76a02bc166ee05c24\" id=\"r_a57a46d6848317cc76a02bc166ee05c24\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static std::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01241.html#a57a46d6848317cc76a02bc166ee05c24\">GetTessEvalShaderSource</a> (<a class=\"el\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">Far::PatchDescriptor::Type</a> type)</td></tr>\n <tr class=\"separator:a57a46d6848317cc76a02bc166ee05c24\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p>Provides shader source which can be used by client code. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00827_source.html#l00040\">40</a> of file <a class=\"el\" href=\"a00827_source.html\">glslPatchShaderSource.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00728_source.html#l00040\">40</a> of file <a class=\"el\" href=\"a00728_source.html\">glslPatchShaderSource.h</a>.</p>\n </div><h2 class=\"groupheader\">Member Function Documentation</h2>\n <a id=\"ad5f427d2655d384980715874209345e7\" name=\"ad5f427d2655d384980715874209345e7\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad5f427d2655d384980715874209345e7\">&#9670;&#160;</a></span>GetCommonShaderSource()</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n <table class=\"mlabels\">\n@@ -282,15 +282,15 @@\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/osd/<a class=\"el\" href=\"a00827_source.html\">glslPatchShaderSource.h</a></li>\n+<li>opensubdiv/osd/<a class=\"el\" href=\"a00728_source.html\">glslPatchShaderSource.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00912.html\">Osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01241.html\">GLSLPatchShaderSource</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01245.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01245.html", "unified_diff": "@@ -99,15 +99,15 @@\n   <div class=\"headertitle\"><div class=\"title\">GLVertexBuffer Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Concrete vertex buffer class for GLSL subdivision and OpenGL drawing.  \n  <a href=\"a01245.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00869_source.html\">glVertexBuffer.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00683_source.html\">glVertexBuffer.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\n Public Member Functions</h2></td></tr>\n <tr class=\"memitem:a2629b06f77082d1c67c50b03be4e465a\" id=\"r_a2629b06f77082d1c67c50b03be4e465a\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01245.html#a2629b06f77082d1c67c50b03be4e465a\">~GLVertexBuffer</a> ()</td></tr>\n <tr class=\"memdesc:a2629b06f77082d1c67c50b03be4e465a\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Destructor.  <br /></td></tr>\n <tr class=\"separator:a2629b06f77082d1c67c50b03be4e465a\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a96601a091f8831823c4dd72b6c962f1b\" id=\"r_a96601a091f8831823c4dd72b6c962f1b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01245.html#a96601a091f8831823c4dd72b6c962f1b\">UpdateData</a> (const float *src, int startVertex, int numVertices, void *deviceContext=NULL)</td></tr>\n@@ -136,15 +136,15 @@\n <tr class=\"memitem:add23d9f5bbc918076d240287a9b3664f\" id=\"r_add23d9f5bbc918076d240287a9b3664f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01245.html#add23d9f5bbc918076d240287a9b3664f\">allocate</a> ()</td></tr>\n <tr class=\"separator:add23d9f5bbc918076d240287a9b3664f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p>Concrete vertex buffer class for GLSL subdivision and OpenGL drawing. </p>\n <p><a class=\"el\" href=\"a01245.html\" title=\"Concrete vertex buffer class for GLSL subdivision and OpenGL drawing.\">GLVertexBuffer</a> implements GLVertexBufferInterface. An instance of this buffer class can be passed to OsdGLComputeEvaluator. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00869_source.html#l00044\">44</a> of file <a class=\"el\" href=\"a00869_source.html\">glVertexBuffer.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00683_source.html#l00044\">44</a> of file <a class=\"el\" href=\"a00683_source.html\">glVertexBuffer.h</a>.</p>\n </div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"a2629b06f77082d1c67c50b03be4e465a\" name=\"a2629b06f77082d1c67c50b03be4e465a\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2629b06f77082d1c67c50b03be4e465a\">&#9670;&#160;</a></span>~GLVertexBuffer()</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n       <table class=\"memname\">\n@@ -366,15 +366,15 @@\n       </table>\n </div><div class=\"memdoc\">\n <p>This method is meant to be used in client code in order to provide coarse vertices data to <a class=\"el\" href=\"a00912.html\">Osd</a>. </p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/osd/<a class=\"el\" href=\"a00869_source.html\">glVertexBuffer.h</a></li>\n+<li>opensubdiv/osd/<a class=\"el\" href=\"a00683_source.html\">glVertexBuffer.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00912.html\">Osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01245.html\">GLVertexBuffer</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01249.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01249.html", "unified_diff": "@@ -98,15 +98,15 @@\n   <div class=\"headertitle\"><div class=\"title\">GLStencilTableTBO Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>GL TextureBuffer stencil table.  \n  <a href=\"a01249.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00791_source.html\">glXFBEvaluator.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00701_source.html\">glXFBEvaluator.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\n Public Member Functions</h2></td></tr>\n <tr class=\"memitem:abbba46ba67be00a0eac751e3e731db6e\" id=\"r_abbba46ba67be00a0eac751e3e731db6e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01249.html#abbba46ba67be00a0eac751e3e731db6e\">GLStencilTableTBO</a> (<a class=\"el\" href=\"a01065.html\">Far::StencilTable</a> const *stencilTable)</td></tr>\n <tr class=\"separator:abbba46ba67be00a0eac751e3e731db6e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:ac74a769daf1fe45575a16b738bb761cd\" id=\"r_ac74a769daf1fe45575a16b738bb761cd\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01249.html#ac74a769daf1fe45575a16b738bb761cd\">GLStencilTableTBO</a> (<a class=\"el\" href=\"a01081.html\">Far::LimitStencilTable</a> const *limitStencilTable)</td></tr>\n <tr class=\"separator:ac74a769daf1fe45575a16b738bb761cd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n@@ -141,15 +141,15 @@\n <tr class=\"separator:ae38a4728f9debae7733ab48cfadd8312\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p>GL TextureBuffer stencil table. </p>\n <p>This class is a GL Texture Buffer representation of <a class=\"el\" href=\"a01065.html\" title=\"Stencil table class wrapping the template for compatibility.\">Far::StencilTable</a>.</p>\n <p>GLSLTransformFeedback consumes this table to apply stencils </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l00052\">52</a> of file <a class=\"el\" href=\"a00791_source.html\">glXFBEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00701_source.html#l00052\">52</a> of file <a class=\"el\" href=\"a00701_source.html\">glXFBEvaluator.h</a>.</p>\n </div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"abbba46ba67be00a0eac751e3e731db6e\" name=\"abbba46ba67be00a0eac751e3e731db6e\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abbba46ba67be00a0eac751e3e731db6e\">&#9670;&#160;</a></span>GLStencilTableTBO() <span class=\"overload\">[1/2]</span></h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n <table class=\"mlabels\">\n@@ -247,15 +247,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l00060\">60</a> of file <a class=\"el\" href=\"a00791_source.html\">glXFBEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00701_source.html#l00060\">60</a> of file <a class=\"el\" href=\"a00701_source.html\">glXFBEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a24a8210b637a5b0fca2b258de3b8b8a6\" name=\"a24a8210b637a5b0fca2b258de3b8b8a6\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a24a8210b637a5b0fca2b258de3b8b8a6\">&#9670;&#160;</a></span>Create() <span class=\"overload\">[2/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -285,15 +285,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l00054\">54</a> of file <a class=\"el\" href=\"a00791_source.html\">glXFBEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00701_source.html#l00054\">54</a> of file <a class=\"el\" href=\"a00701_source.html\">glXFBEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a70fdd6f46c3a89dd4627b67c9a37d02e\" name=\"a70fdd6f46c3a89dd4627b67c9a37d02e\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a70fdd6f46c3a89dd4627b67c9a37d02e\">&#9670;&#160;</a></span>GetDuuWeightsTexture()</h2>\n \n <div class=\"memitem\">\n@@ -312,15 +312,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l00078\">78</a> of file <a class=\"el\" href=\"a00791_source.html\">glXFBEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00701_source.html#l00078\">78</a> of file <a class=\"el\" href=\"a00701_source.html\">glXFBEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a6987f68e0e090437e6a28dadce50f566\" name=\"a6987f68e0e090437e6a28dadce50f566\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6987f68e0e090437e6a28dadce50f566\">&#9670;&#160;</a></span>GetDuvWeightsTexture()</h2>\n \n <div class=\"memitem\">\n@@ -339,15 +339,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l00079\">79</a> of file <a class=\"el\" href=\"a00791_source.html\">glXFBEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00701_source.html#l00079\">79</a> of file <a class=\"el\" href=\"a00701_source.html\">glXFBEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"afd4ff3060d31d9650d6c2820d870fda8\" name=\"afd4ff3060d31d9650d6c2820d870fda8\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afd4ff3060d31d9650d6c2820d870fda8\">&#9670;&#160;</a></span>GetDuWeightsTexture()</h2>\n \n <div class=\"memitem\">\n@@ -366,15 +366,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l00076\">76</a> of file <a class=\"el\" href=\"a00791_source.html\">glXFBEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00701_source.html#l00076\">76</a> of file <a class=\"el\" href=\"a00701_source.html\">glXFBEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a5d98fa1e61dcd32b8deb16bc9cf04d52\" name=\"a5d98fa1e61dcd32b8deb16bc9cf04d52\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5d98fa1e61dcd32b8deb16bc9cf04d52\">&#9670;&#160;</a></span>GetDvvWeightsTexture()</h2>\n \n <div class=\"memitem\">\n@@ -393,15 +393,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l00080\">80</a> of file <a class=\"el\" href=\"a00791_source.html\">glXFBEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00701_source.html#l00080\">80</a> of file <a class=\"el\" href=\"a00701_source.html\">glXFBEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"afb1cd9d41b168ceeadd4892bfb3d3f77\" name=\"afb1cd9d41b168ceeadd4892bfb3d3f77\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afb1cd9d41b168ceeadd4892bfb3d3f77\">&#9670;&#160;</a></span>GetDvWeightsTexture()</h2>\n \n <div class=\"memitem\">\n@@ -420,15 +420,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l00077\">77</a> of file <a class=\"el\" href=\"a00791_source.html\">glXFBEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00701_source.html#l00077\">77</a> of file <a class=\"el\" href=\"a00701_source.html\">glXFBEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a809a960b308df1bca3d8f406dbf9f422\" name=\"a809a960b308df1bca3d8f406dbf9f422\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a809a960b308df1bca3d8f406dbf9f422\">&#9670;&#160;</a></span>GetIndicesTexture()</h2>\n \n <div class=\"memitem\">\n@@ -447,15 +447,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l00074\">74</a> of file <a class=\"el\" href=\"a00791_source.html\">glXFBEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00701_source.html#l00074\">74</a> of file <a class=\"el\" href=\"a00701_source.html\">glXFBEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a65836d2070b943c8fecbad926d074de2\" name=\"a65836d2070b943c8fecbad926d074de2\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a65836d2070b943c8fecbad926d074de2\">&#9670;&#160;</a></span>GetNumStencils()</h2>\n \n <div class=\"memitem\">\n@@ -474,15 +474,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l00081\">81</a> of file <a class=\"el\" href=\"a00791_source.html\">glXFBEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00701_source.html#l00081\">81</a> of file <a class=\"el\" href=\"a00701_source.html\">glXFBEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"afef26723ecaa12060e3e4744c0e206a9\" name=\"afef26723ecaa12060e3e4744c0e206a9\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afef26723ecaa12060e3e4744c0e206a9\">&#9670;&#160;</a></span>GetOffsetsTexture()</h2>\n \n <div class=\"memitem\">\n@@ -501,15 +501,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l00073\">73</a> of file <a class=\"el\" href=\"a00791_source.html\">glXFBEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00701_source.html#l00073\">73</a> of file <a class=\"el\" href=\"a00701_source.html\">glXFBEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a233d7a80471d1d90eb2caf732e25115b\" name=\"a233d7a80471d1d90eb2caf732e25115b\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a233d7a80471d1d90eb2caf732e25115b\">&#9670;&#160;</a></span>GetSizesTexture()</h2>\n \n <div class=\"memitem\">\n@@ -528,15 +528,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l00072\">72</a> of file <a class=\"el\" href=\"a00791_source.html\">glXFBEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00701_source.html#l00072\">72</a> of file <a class=\"el\" href=\"a00701_source.html\">glXFBEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ad5f4a852f17762c50c5d3011b11155cb\" name=\"ad5f4a852f17762c50c5d3011b11155cb\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad5f4a852f17762c50c5d3011b11155cb\">&#9670;&#160;</a></span>GetWeightsTexture()</h2>\n \n <div class=\"memitem\">\n@@ -555,20 +555,20 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l00075\">75</a> of file <a class=\"el\" href=\"a00791_source.html\">glXFBEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00701_source.html#l00075\">75</a> of file <a class=\"el\" href=\"a00701_source.html\">glXFBEvaluator.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/osd/<a class=\"el\" href=\"a00791_source.html\">glXFBEvaluator.h</a></li>\n+<li>opensubdiv/osd/<a class=\"el\" href=\"a00701_source.html\">glXFBEvaluator.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00912.html\">Osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01249.html\">GLStencilTableTBO</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01253.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01253.html", "unified_diff": "@@ -97,15 +97,15 @@\n <a href=\"#pub-methods\">Public Member Functions</a> &#124;\n <a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n <a href=\"a01250.html\">List of all members</a>  </div>\n   <div class=\"headertitle\"><div class=\"title\">GLXFBEvaluator Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00791_source.html\">glXFBEvaluator.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00701_source.html\">glXFBEvaluator.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\n Public Types</h2></td></tr>\n <tr class=\"memitem:a2c24b70c9312d8dff3fecb9ddea52c44\" id=\"r_a2c24b70c9312d8dff3fecb9ddea52c44\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01253.html#a2c24b70c9312d8dff3fecb9ddea52c44\">Instantiatable</a></td></tr>\n <tr class=\"separator:a2c24b70c9312d8dff3fecb9ddea52c44\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\n@@ -247,29 +247,29 @@\n <tr class=\"separator:afb7e2a0c3a861f3dcd410ba0d5b2046e\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a631211712e30cb07dc6d6cc51bb1db15\" id=\"r_a631211712e30cb07dc6d6cc51bb1db15\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01253.html#a631211712e30cb07dc6d6cc51bb1db15\">Synchronize</a> (void *kernel)</td></tr>\n <tr class=\"memdesc:a631211712e30cb07dc6d6cc51bb1db15\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Wait the dispatched kernel finishes.  <br /></td></tr>\n <tr class=\"separator:a631211712e30cb07dc6d6cc51bb1db15\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\">\n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l00098\">98</a> of file <a class=\"el\" href=\"a00791_source.html\">glXFBEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00701_source.html#l00098\">98</a> of file <a class=\"el\" href=\"a00701_source.html\">glXFBEvaluator.h</a>.</p>\n </div><h2 class=\"groupheader\">Member Typedef Documentation</h2>\n <a id=\"a2c24b70c9312d8dff3fecb9ddea52c44\" name=\"a2c24b70c9312d8dff3fecb9ddea52c44\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2c24b70c9312d8dff3fecb9ddea52c44\">&#9670;&#160;</a></span>Instantiatable</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">typedef bool <a class=\"el\" href=\"a01253.html#a2c24b70c9312d8dff3fecb9ddea52c44\">Instantiatable</a></td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l00100\">100</a> of file <a class=\"el\" href=\"a00791_source.html\">glXFBEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00701_source.html#l00100\">100</a> of file <a class=\"el\" href=\"a00701_source.html\">glXFBEvaluator.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"a1932f725b28e271ab11ca768ba3bb01e\" name=\"a1932f725b28e271ab11ca768ba3bb01e\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1932f725b28e271ab11ca768ba3bb01e\">&#9670;&#160;</a></span>GLXFBEvaluator()</h2>\n \n@@ -421,15 +421,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l00126\">126</a> of file <a class=\"el\" href=\"a00791_source.html\">glXFBEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00701_source.html#l00126\">126</a> of file <a class=\"el\" href=\"a00701_source.html\">glXFBEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a3a08d0f058b0d8dde7c853734ee446c7\" name=\"a3a08d0f058b0d8dde7c853734ee446c7\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3a08d0f058b0d8dde7c853734ee446c7\">&#9670;&#160;</a></span>Create() <span class=\"overload\">[2/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -495,15 +495,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l00170\">170</a> of file <a class=\"el\" href=\"a00791_source.html\">glXFBEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00701_source.html#l00170\">170</a> of file <a class=\"el\" href=\"a00701_source.html\">glXFBEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a591dd44e4e7d35454ab63664150137a3\" name=\"a591dd44e4e7d35454ab63664150137a3\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a591dd44e4e7d35454ab63664150137a3\">&#9670;&#160;</a></span>Create() <span class=\"overload\">[3/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -573,15 +573,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Generic creator template. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l00140\">140</a> of file <a class=\"el\" href=\"a00791_source.html\">glXFBEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00701_source.html#l00140\">140</a> of file <a class=\"el\" href=\"a00701_source.html\">glXFBEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aaf7aeae38dd52386c15108d7e94eb30f\" name=\"aaf7aeae38dd52386c15108d7e94eb30f\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aaf7aeae38dd52386c15108d7e94eb30f\">&#9670;&#160;</a></span>Create() <span class=\"overload\">[4/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -649,15 +649,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Specialization to allow creation without a device context. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l00157\">157</a> of file <a class=\"el\" href=\"a00791_source.html\">glXFBEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00701_source.html#l00157\">157</a> of file <a class=\"el\" href=\"a00701_source.html\">glXFBEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a5be617906ad76ddcc4795dd6557a79f7\" name=\"a5be617906ad76ddcc4795dd6557a79f7\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5be617906ad76ddcc4795dd6557a79f7\">&#9670;&#160;</a></span>Create() <span class=\"overload\">[5/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -709,15 +709,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Generic creator template. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l00104\">104</a> of file <a class=\"el\" href=\"a00791_source.html\">glXFBEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00701_source.html#l00104\">104</a> of file <a class=\"el\" href=\"a00701_source.html\">glXFBEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a429f25fc87b709736f619fb76bd6c47f\" name=\"a429f25fc87b709736f619fb76bd6c47f\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a429f25fc87b709736f619fb76bd6c47f\">&#9670;&#160;</a></span>Create() <span class=\"overload\">[6/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -767,15 +767,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Specialization to allow creation without a device context. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l00117\">117</a> of file <a class=\"el\" href=\"a00791_source.html\">glXFBEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00701_source.html#l00117\">117</a> of file <a class=\"el\" href=\"a00701_source.html\">glXFBEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a2d1074f49212a9ae65161e9c957dbab7\" name=\"a2d1074f49212a9ae65161e9c957dbab7\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2d1074f49212a9ae65161e9c957dbab7\">&#9670;&#160;</a></span>EvalPatches() <span class=\"overload\">[1/8]</span></h2>\n \n <div class=\"memitem\">\n@@ -1145,15 +1145,15 @@\n     <tr><td class=\"paramname\">numPatchCoords</td><td>number of patchCoords.</td></tr>\n     <tr><td class=\"paramname\">patchCoords</td><td>array of locations to be evaluated.</td></tr>\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01237.html\">GLPatchTable</a> or equivalent </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l01144\">1144</a> of file <a class=\"el\" href=\"a00791_source.html\">glXFBEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00701_source.html#l01144\">1144</a> of file <a class=\"el\" href=\"a00701_source.html\">glXFBEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a9a52edc932f03ffa9bbf67c093a1dd65\" name=\"a9a52edc932f03ffa9bbf67c093a1dd65\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9a52edc932f03ffa9bbf67c093a1dd65\">&#9670;&#160;</a></span>EvalPatches() <span class=\"overload\">[4/8]</span></h2>\n \n <div class=\"memitem\">\n@@ -1313,15 +1313,15 @@\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01237.html\">GLPatchTable</a> or equivalent</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>cached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem.</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the GLXFB evaluator </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l00943\">943</a> of file <a class=\"el\" href=\"a00791_source.html\">glXFBEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00701_source.html#l00943\">943</a> of file <a class=\"el\" href=\"a00701_source.html\">glXFBEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aa28dc7f2bd31f1cdac0013ad9de8f434\" name=\"aa28dc7f2bd31f1cdac0013ad9de8f434\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa28dc7f2bd31f1cdac0013ad9de8f434\">&#9670;&#160;</a></span>EvalPatches() <span class=\"overload\">[5/8]</span></h2>\n \n <div class=\"memitem\">\n@@ -1425,15 +1425,15 @@\n     <tr><td class=\"paramname\">numPatchCoords</td><td>number of patchCoords.</td></tr>\n     <tr><td class=\"paramname\">patchCoords</td><td>array of locations to be evaluated.</td></tr>\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01237.html\">GLPatchTable</a> or equivalent </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l01070\">1070</a> of file <a class=\"el\" href=\"a00791_source.html\">glXFBEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00701_source.html#l01070\">1070</a> of file <a class=\"el\" href=\"a00701_source.html\">glXFBEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a57b0367816baf9831808847cbfe833b0\" name=\"a57b0367816baf9831808847cbfe833b0\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a57b0367816baf9831808847cbfe833b0\">&#9670;&#160;</a></span>EvalPatches() <span class=\"overload\">[6/8]</span></h2>\n \n <div class=\"memitem\">\n@@ -1551,15 +1551,15 @@\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01237.html\">GLPatchTable</a> or equivalent</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>cached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem.</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the GLXFB evaluator </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l00843\">843</a> of file <a class=\"el\" href=\"a00791_source.html\">glXFBEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00701_source.html#l00843\">843</a> of file <a class=\"el\" href=\"a00701_source.html\">glXFBEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a96616cfe920c027568e2ae931b3ba506\" name=\"a96616cfe920c027568e2ae931b3ba506\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a96616cfe920c027568e2ae931b3ba506\">&#9670;&#160;</a></span>EvalPatches() <span class=\"overload\">[7/8]</span></h2>\n \n <div class=\"memitem\">\n@@ -1635,15 +1635,15 @@\n     <tr><td class=\"paramname\">numPatchCoords</td><td>number of patchCoords.</td></tr>\n     <tr><td class=\"paramname\">patchCoords</td><td>array of locations to be evaluated. must have BindVBO() method returning an array of <a class=\"el\" href=\"a01321.html\" title=\"Coordinates set on a patch table.\">PatchCoord</a> struct in VBO.</td></tr>\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01237.html\">GLPatchTable</a> or equivalent </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l01016\">1016</a> of file <a class=\"el\" href=\"a00791_source.html\">glXFBEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00701_source.html#l01016\">1016</a> of file <a class=\"el\" href=\"a00701_source.html\">glXFBEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a8ba6c1bfddfa877a523c098af03af037\" name=\"a8ba6c1bfddfa877a523c098af03af037\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8ba6c1bfddfa877a523c098af03af037\">&#9670;&#160;</a></span>EvalPatches() <span class=\"overload\">[8/8]</span></h2>\n \n <div class=\"memitem\">\n@@ -1736,15 +1736,15 @@\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01237.html\">GLPatchTable</a> or equivalent</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>cached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem.</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the GLXFB evaluator </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l00765\">765</a> of file <a class=\"el\" href=\"a00791_source.html\">glXFBEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00701_source.html#l00765\">765</a> of file <a class=\"el\" href=\"a00701_source.html\">glXFBEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"afb7e2a0c3a861f3dcd410ba0d5b2046e\" name=\"afb7e2a0c3a861f3dcd410ba0d5b2046e\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afb7e2a0c3a861f3dcd410ba0d5b2046e\">&#9670;&#160;</a></span>EvalPatchesFaceVarying() <span class=\"overload\">[1/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -1911,15 +1911,15 @@\n     <tr><td class=\"paramname\">fvarChannel</td><td>face-varying channel</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>cached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem.</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the GLXFB evaluator </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l01976\">1976</a> of file <a class=\"el\" href=\"a00791_source.html\">glXFBEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00701_source.html#l01976\">1976</a> of file <a class=\"el\" href=\"a00701_source.html\">glXFBEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ab0a4a9c408bc2a690d879cc7c2ffd21c\" name=\"ab0a4a9c408bc2a690d879cc7c2ffd21c\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab0a4a9c408bc2a690d879cc7c2ffd21c\">&#9670;&#160;</a></span>EvalPatchesFaceVarying() <span class=\"overload\">[2/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -2072,15 +2072,15 @@\n     <tr><td class=\"paramname\">patchCoords</td><td>array of locations to be evaluated. must have BindVBO() method returning an array of <a class=\"el\" href=\"a01321.html\" title=\"Coordinates set on a patch table.\">PatchCoord</a> struct in VBO.</td></tr>\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01237.html\">GLPatchTable</a> or equivalent</td></tr>\n     <tr><td class=\"paramname\">fvarChannel</td><td>face-varying channel </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l02084\">2084</a> of file <a class=\"el\" href=\"a00791_source.html\">glXFBEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00701_source.html#l02084\">2084</a> of file <a class=\"el\" href=\"a00701_source.html\">glXFBEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a9433f78f8817d1ae4f6030144cb16de5\" name=\"a9433f78f8817d1ae4f6030144cb16de5\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9433f78f8817d1ae4f6030144cb16de5\">&#9670;&#160;</a></span>EvalPatchesFaceVarying() <span class=\"overload\">[3/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -2205,15 +2205,15 @@\n     <tr><td class=\"paramname\">fvarChannel</td><td>face-varying channel</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>cached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem.</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the GLXFB evaluator </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l01809\">1809</a> of file <a class=\"el\" href=\"a00791_source.html\">glXFBEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00701_source.html#l01809\">1809</a> of file <a class=\"el\" href=\"a00701_source.html\">glXFBEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a8736b15a3afb5b221ed009b19503e063\" name=\"a8736b15a3afb5b221ed009b19503e063\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8736b15a3afb5b221ed009b19503e063\">&#9670;&#160;</a></span>EvalPatchesFaceVarying() <span class=\"overload\">[4/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -2324,15 +2324,15 @@\n     <tr><td class=\"paramname\">patchCoords</td><td>array of locations to be evaluated. must have BindVBO() method returning an array of <a class=\"el\" href=\"a01321.html\" title=\"Coordinates set on a patch table.\">PatchCoord</a> struct in VBO.</td></tr>\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01237.html\">GLPatchTable</a> or equivalent</td></tr>\n     <tr><td class=\"paramname\">fvarChannel</td><td>face-varying channel </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l01889\">1889</a> of file <a class=\"el\" href=\"a00791_source.html\">glXFBEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00701_source.html#l01889\">1889</a> of file <a class=\"el\" href=\"a00701_source.html\">glXFBEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ac843917323be2a95667e5460702b3682\" name=\"ac843917323be2a95667e5460702b3682\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac843917323be2a95667e5460702b3682\">&#9670;&#160;</a></span>EvalPatchesFaceVarying() <span class=\"overload\">[5/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -2429,15 +2429,15 @@\n     <tr><td class=\"paramname\">fvarChannel</td><td>face-varying channel</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>cached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem.</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the GLXFB evaluator </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l01679\">1679</a> of file <a class=\"el\" href=\"a00791_source.html\">glXFBEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00701_source.html#l01679\">1679</a> of file <a class=\"el\" href=\"a00701_source.html\">glXFBEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"af7d3e4db03873d8c0d5da1d2c53f979e\" name=\"af7d3e4db03873d8c0d5da1d2c53f979e\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af7d3e4db03873d8c0d5da1d2c53f979e\">&#9670;&#160;</a></span>EvalPatchesFaceVarying() <span class=\"overload\">[6/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -2520,15 +2520,15 @@\n     <tr><td class=\"paramname\">patchCoords</td><td>array of locations to be evaluated. must have BindVBO() method returning an array of <a class=\"el\" href=\"a01321.html\" title=\"Coordinates set on a patch table.\">PatchCoord</a> struct in VBO.</td></tr>\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01237.html\">GLPatchTable</a> or equivalent</td></tr>\n     <tr><td class=\"paramname\">fvarChannel</td><td>face-varying channel </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l01742\">1742</a> of file <a class=\"el\" href=\"a00791_source.html\">glXFBEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00701_source.html#l01742\">1742</a> of file <a class=\"el\" href=\"a00701_source.html\">glXFBEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a7a65272357856989d99d800900d53e85\" name=\"a7a65272357856989d99d800900d53e85\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7a65272357856989d99d800900d53e85\">&#9670;&#160;</a></span>EvalPatchesVarying() <span class=\"overload\">[1/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -2674,15 +2674,15 @@\n     <tr><td class=\"paramname\">numPatchCoords</td><td>number of patchCoords.</td></tr>\n     <tr><td class=\"paramname\">patchCoords</td><td>array of locations to be evaluated. must have BindVBO() method returning an array of <a class=\"el\" href=\"a01321.html\" title=\"Coordinates set on a patch table.\">PatchCoord</a> struct in VBO.</td></tr>\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01237.html\">GLPatchTable</a> or equivalent </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l01617\">1617</a> of file <a class=\"el\" href=\"a00791_source.html\">glXFBEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00701_source.html#l01617\">1617</a> of file <a class=\"el\" href=\"a00701_source.html\">glXFBEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ab5bace5b1f7bb4faa1fedfcf7d4fe77d\" name=\"ab5bace5b1f7bb4faa1fedfcf7d4fe77d\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab5bace5b1f7bb4faa1fedfcf7d4fe77d\">&#9670;&#160;</a></span>EvalPatchesVarying() <span class=\"overload\">[2/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -2842,15 +2842,15 @@\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01237.html\">GLPatchTable</a> or equivalent</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>cached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem.</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the GLXFB evaluator </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l01512\">1512</a> of file <a class=\"el\" href=\"a00791_source.html\">glXFBEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00701_source.html#l01512\">1512</a> of file <a class=\"el\" href=\"a00701_source.html\">glXFBEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ae642c88c8896d4d55b1876757197b1cc\" name=\"ae642c88c8896d4d55b1876757197b1cc\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae642c88c8896d4d55b1876757197b1cc\">&#9670;&#160;</a></span>EvalPatchesVarying() <span class=\"overload\">[3/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -2954,15 +2954,15 @@\n     <tr><td class=\"paramname\">numPatchCoords</td><td>number of patchCoords.</td></tr>\n     <tr><td class=\"paramname\">patchCoords</td><td>array of locations to be evaluated. must have BindVBO() method returning an array of <a class=\"el\" href=\"a01321.html\" title=\"Coordinates set on a patch table.\">PatchCoord</a> struct in VBO.</td></tr>\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01237.html\">GLPatchTable</a> or equivalent </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l01428\">1428</a> of file <a class=\"el\" href=\"a00791_source.html\">glXFBEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00701_source.html#l01428\">1428</a> of file <a class=\"el\" href=\"a00701_source.html\">glXFBEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a4e52803429d069b9631cce1535a20c4c\" name=\"a4e52803429d069b9631cce1535a20c4c\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4e52803429d069b9631cce1535a20c4c\">&#9670;&#160;</a></span>EvalPatchesVarying() <span class=\"overload\">[4/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -3080,15 +3080,15 @@\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01237.html\">GLPatchTable</a> or equivalent</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>cached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem.</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the GLXFB evaluator </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l01351\">1351</a> of file <a class=\"el\" href=\"a00791_source.html\">glXFBEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00701_source.html#l01351\">1351</a> of file <a class=\"el\" href=\"a00701_source.html\">glXFBEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a03c47cdd97f18b8bbdd1e3ce66cbd5d8\" name=\"a03c47cdd97f18b8bbdd1e3ce66cbd5d8\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a03c47cdd97f18b8bbdd1e3ce66cbd5d8\">&#9670;&#160;</a></span>EvalPatchesVarying() <span class=\"overload\">[5/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -3164,15 +3164,15 @@\n     <tr><td class=\"paramname\">numPatchCoords</td><td>number of patchCoords.</td></tr>\n     <tr><td class=\"paramname\">patchCoords</td><td>array of locations to be evaluated. must have BindVBO() method returning an array of <a class=\"el\" href=\"a01321.html\" title=\"Coordinates set on a patch table.\">PatchCoord</a> struct in VBO.</td></tr>\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01237.html\">GLPatchTable</a> or equivalent </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l01287\">1287</a> of file <a class=\"el\" href=\"a00791_source.html\">glXFBEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00701_source.html#l01287\">1287</a> of file <a class=\"el\" href=\"a00701_source.html\">glXFBEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a6ee6055100beee2bc55426a0e909dc59\" name=\"a6ee6055100beee2bc55426a0e909dc59\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6ee6055100beee2bc55426a0e909dc59\">&#9670;&#160;</a></span>EvalPatchesVarying() <span class=\"overload\">[6/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -3262,15 +3262,15 @@\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01237.html\">GLPatchTable</a> or equivalent</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>cached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem.</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the GLXFB evaluator </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l01227\">1227</a> of file <a class=\"el\" href=\"a00791_source.html\">glXFBEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00701_source.html#l01227\">1227</a> of file <a class=\"el\" href=\"a00701_source.html\">glXFBEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a54b949bb4819f61594334e599194f224\" name=\"a54b949bb4819f61594334e599194f224\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a54b949bb4819f61594334e599194f224\">&#9670;&#160;</a></span>EvalStencils() <span class=\"overload\">[1/8]</span></h2>\n \n <div class=\"memitem\">\n@@ -3735,15 +3735,15 @@\n     <tr><td class=\"paramname\">dvvBuffer</td><td>Output buffer 2nd derivative wrt v must have BindVBO() method returning a GL buffer object of destination data</td></tr>\n     <tr><td class=\"paramname\">dvvDesc</td><td>vertex buffer descriptor for the dvvBuffer</td></tr>\n     <tr><td class=\"paramname\">stencilTable</td><td>stencil table to be applied. The table must have Texture Buffer Object interfaces. </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l00575\">575</a> of file <a class=\"el\" href=\"a00791_source.html\">glXFBEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00701_source.html#l00575\">575</a> of file <a class=\"el\" href=\"a00701_source.html\">glXFBEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a327901007bb31de57205e906c2f7ccbf\" name=\"a327901007bb31de57205e906c2f7ccbf\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a327901007bb31de57205e906c2f7ccbf\">&#9670;&#160;</a></span>EvalStencils() <span class=\"overload\">[4/8]</span></h2>\n \n <div class=\"memitem\">\n@@ -3889,15 +3889,15 @@\n     <tr><td class=\"paramname\">stencilTable</td><td>stencil table to be applied. The table must have Texture Buffer Object interfaces.</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>cached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem.</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the GLSLTransformFeedback kernel </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l00396\">396</a> of file <a class=\"el\" href=\"a00791_source.html\">glXFBEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00701_source.html#l00396\">396</a> of file <a class=\"el\" href=\"a00701_source.html\">glXFBEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a16dedd32573dd7f70c61f1fb6072e791\" name=\"a16dedd32573dd7f70c61f1fb6072e791\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a16dedd32573dd7f70c61f1fb6072e791\">&#9670;&#160;</a></span>EvalStencils() <span class=\"overload\">[5/8]</span></h2>\n \n <div class=\"memitem\">\n@@ -3987,15 +3987,15 @@\n     <tr><td class=\"paramname\">dvBuffer</td><td>Output buffer derivative wrt v must have BindVBO() method returning a GL buffer object of destination data</td></tr>\n     <tr><td class=\"paramname\">dvDesc</td><td>vertex buffer descriptor for the dvBuffer</td></tr>\n     <tr><td class=\"paramname\">stencilTable</td><td>stencil table to be applied. The table must have Texture Buffer Object interfaces. </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l00506\">506</a> of file <a class=\"el\" href=\"a00791_source.html\">glXFBEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00701_source.html#l00506\">506</a> of file <a class=\"el\" href=\"a00701_source.html\">glXFBEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a432c889974c11c85b8a7748412b9bfd8\" name=\"a432c889974c11c85b8a7748412b9bfd8\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a432c889974c11c85b8a7748412b9bfd8\">&#9670;&#160;</a></span>EvalStencils() <span class=\"overload\">[6/8]</span></h2>\n \n <div class=\"memitem\">\n@@ -4099,15 +4099,15 @@\n     <tr><td class=\"paramname\">stencilTable</td><td>stencil table to be applied. The table must have Texture Buffer Object interfaces.</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>cached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem.</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the GLSLTransformFeedback kernel </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l00306\">306</a> of file <a class=\"el\" href=\"a00791_source.html\">glXFBEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00701_source.html#l00306\">306</a> of file <a class=\"el\" href=\"a00701_source.html\">glXFBEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aab4ecc7e79b822b8994b326cc05ad573\" name=\"aab4ecc7e79b822b8994b326cc05ad573\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aab4ecc7e79b822b8994b326cc05ad573\">&#9670;&#160;</a></span>EvalStencils() <span class=\"overload\">[7/8]</span></h2>\n \n <div class=\"memitem\">\n@@ -4169,15 +4169,15 @@\n     <tr><td class=\"paramname\">dstBuffer</td><td>Output primvar buffer must have BindVBO() method returning a GL buffer object of destination data</td></tr>\n     <tr><td class=\"paramname\">dstDesc</td><td>vertex buffer descriptor for the output buffer</td></tr>\n     <tr><td class=\"paramname\">stencilTable</td><td>stencil table to be applied. The table must have Texture Buffer Object interfaces. </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l00457\">457</a> of file <a class=\"el\" href=\"a00791_source.html\">glXFBEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00701_source.html#l00457\">457</a> of file <a class=\"el\" href=\"a00701_source.html\">glXFBEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ace53e6fcf744de81b768e33166d7201c\" name=\"ace53e6fcf744de81b768e33166d7201c\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ace53e6fcf744de81b768e33166d7201c\">&#9670;&#160;</a></span>EvalStencils() <span class=\"overload\">[8/8]</span></h2>\n \n <div class=\"memitem\">\n@@ -4256,15 +4256,15 @@\n     <tr><td class=\"paramname\">stencilTable</td><td>stencil table to be applied. The table must have Texture Buffer Object interfaces.</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>cached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem.</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the GLSLTransformFeedback kernel </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00791_source.html#l00238\">238</a> of file <a class=\"el\" href=\"a00791_source.html\">glXFBEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00701_source.html#l00238\">238</a> of file <a class=\"el\" href=\"a00701_source.html\">glXFBEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a631211712e30cb07dc6d6cc51bb1db15\" name=\"a631211712e30cb07dc6d6cc51bb1db15\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a631211712e30cb07dc6d6cc51bb1db15\">&#9670;&#160;</a></span>Synchronize()</h2>\n \n <div class=\"memitem\">\n@@ -4289,15 +4289,15 @@\n </div><div class=\"memdoc\">\n \n <p>Wait the dispatched kernel finishes. </p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/osd/<a class=\"el\" href=\"a00791_source.html\">glXFBEvaluator.h</a></li>\n+<li>opensubdiv/osd/<a class=\"el\" href=\"a00701_source.html\">glXFBEvaluator.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00912.html\">Osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01253.html\">GLXFBEvaluator</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01265.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01265.html", "unified_diff": "@@ -97,15 +97,15 @@\n   <div class=\"headertitle\"><div class=\"title\">HLSLPatchShaderSource Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Provides shader source which can be used by client code.  \n  <a href=\"a01265.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00794_source.html\">hlslPatchShaderSource.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00716_source.html\">hlslPatchShaderSource.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\n Static Public Member Functions</h2></td></tr>\n <tr class=\"memitem:ad41c6e1dc4a5cd6ee4f33fc5a8e15d1d\" id=\"r_ad41c6e1dc4a5cd6ee4f33fc5a8e15d1d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static std::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01265.html#ad41c6e1dc4a5cd6ee4f33fc5a8e15d1d\">GetPatchBasisShaderSource</a> ()</td></tr>\n <tr class=\"memdesc:ad41c6e1dc4a5cd6ee4f33fc5a8e15d1d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns shader source which can be used to evaluate position and first and second derivatives on piecewise parametric patches resulting from subdivision refinement.  <br /></td></tr>\n <tr class=\"separator:ad41c6e1dc4a5cd6ee4f33fc5a8e15d1d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a230efce26a4754c94dbeedd435fe471b\" id=\"r_a230efce26a4754c94dbeedd435fe471b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static std::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01265.html#a230efce26a4754c94dbeedd435fe471b\">GetPatchDrawingShaderSource</a> ()</td></tr>\n@@ -122,15 +122,15 @@\n <tr class=\"separator:a97a09fe0a378798cafdff72e115e373f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a733309309efe67ba5d1acd7d0a9ff6ca\" id=\"r_a733309309efe67ba5d1acd7d0a9ff6ca\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static std::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01265.html#a733309309efe67ba5d1acd7d0a9ff6ca\">GetDomainShaderSource</a> (<a class=\"el\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">Far::PatchDescriptor::Type</a> type)</td></tr>\n <tr class=\"separator:a733309309efe67ba5d1acd7d0a9ff6ca\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p>Provides shader source which can be used by client code. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00794_source.html#l00040\">40</a> of file <a class=\"el\" href=\"a00794_source.html\">hlslPatchShaderSource.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00716_source.html#l00040\">40</a> of file <a class=\"el\" href=\"a00716_source.html\">hlslPatchShaderSource.h</a>.</p>\n </div><h2 class=\"groupheader\">Member Function Documentation</h2>\n <a id=\"ad5f427d2655d384980715874209345e7\" name=\"ad5f427d2655d384980715874209345e7\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad5f427d2655d384980715874209345e7\">&#9670;&#160;</a></span>GetCommonShaderSource()</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n <table class=\"mlabels\">\n@@ -282,15 +282,15 @@\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/osd/<a class=\"el\" href=\"a00794_source.html\">hlslPatchShaderSource.h</a></li>\n+<li>opensubdiv/osd/<a class=\"el\" href=\"a00716_source.html\">hlslPatchShaderSource.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00912.html\">Osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01265.html\">HLSLPatchShaderSource</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01269.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01269.html", "unified_diff": "@@ -96,15 +96,15 @@\n <a href=\"#pub-methods\">Public Member Functions</a> &#124;\n <a href=\"#pro-static-methods\">Static Protected Member Functions</a> &#124;\n <a href=\"a01266.html\">List of all members</a>  </div>\n   <div class=\"headertitle\"><div class=\"title\">MeshInterface&lt; PATCH_TABLE &gt; Class Template Reference<span class=\"mlabels\"><span class=\"mlabel\">abstract</span></span></div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00872_source.html\">mesh.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00704_source.html\">mesh.h</a>&gt;</code></p>\n <div class=\"dynheader\">\n Inheritance diagram for MeshInterface&lt; PATCH_TABLE &gt;:</div>\n <div class=\"dyncontent\">\n  <div class=\"center\">\n   <img src=\"a01269.png\" usemap=\"#MeshInterface_3C_20PATCH_5FTABLE_20_3E_map\" alt=\"\"/>\n   <map id=\"MeshInterface_3C_20PATCH_5FTABLE_20_3E_map\" name=\"MeshInterface_3C_20PATCH_5FTABLE_20_3E_map\">\n <area href=\"a01281.html\" alt=\"Mesh&lt; VERTEX_BUFFER, STENCIL_TABLE, EVALUATOR, PATCH_TABLE, DEVICE_CONTEXT &gt;\" shape=\"rect\" coords=\"0,56,579,80\"/>\n@@ -151,15 +151,15 @@\n <tr class=\"separator:a51f237c3f08f6ddc2ea7ba5cb0d00b36\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a173851f742adc30ac139af96fe63732d\" id=\"r_a173851f742adc30ac139af96fe63732d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01269.html#a173851f742adc30ac139af96fe63732d\">refineMesh</a> (<a class=\"el\" href=\"a01121.html\">Far::TopologyRefiner</a> &amp;refiner, int level, <a class=\"el\" href=\"a00912.html#a85ba9df501aea9af1ec9da1558c255bc\">MeshBitset</a> bits)</td></tr>\n <tr class=\"separator:a173851f742adc30ac139af96fe63732d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><div class=\"compoundTemplParams\">template&lt;class PATCH_TABLE&gt;<br />\n class OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshInterface&lt; PATCH_TABLE &gt;</div>\n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00068\">68</a> of file <a class=\"el\" href=\"a00872_source.html\">mesh.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00068\">68</a> of file <a class=\"el\" href=\"a00704_source.html\">mesh.h</a>.</p>\n </div><h2 class=\"groupheader\">Member Typedef Documentation</h2>\n <a id=\"adf9352136d44e5999629c6b4530bf4e0\" name=\"adf9352136d44e5999629c6b4530bf4e0\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adf9352136d44e5999629c6b4530bf4e0\">&#9670;&#160;</a></span>PatchTable</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n <div class=\"memtemplate\">\n@@ -167,15 +167,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">typedef PATCH_TABLE <a class=\"el\" href=\"a01269.html#adf9352136d44e5999629c6b4530bf4e0\">PatchTable</a></td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00070\">70</a> of file <a class=\"el\" href=\"a00872_source.html\">mesh.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00070\">70</a> of file <a class=\"el\" href=\"a00704_source.html\">mesh.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a9cf40ecf1b9b5c29507fe92a03f37a3c\" name=\"a9cf40ecf1b9b5c29507fe92a03f37a3c\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9cf40ecf1b9b5c29507fe92a03f37a3c\">&#9670;&#160;</a></span>VertexBufferBinding</h2>\n \n <div class=\"memitem\">\n@@ -185,15 +185,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">typedef PatchTable::VertexBufferBinding <a class=\"el\" href=\"a01269.html#a9cf40ecf1b9b5c29507fe92a03f37a3c\">VertexBufferBinding</a></td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00071\">71</a> of file <a class=\"el\" href=\"a00872_source.html\">mesh.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00071\">71</a> of file <a class=\"el\" href=\"a00704_source.html\">mesh.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"a97aeac9a21a88e08fc89852a92011bea\" name=\"a97aeac9a21a88e08fc89852a92011bea\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a97aeac9a21a88e08fc89852a92011bea\">&#9670;&#160;</a></span>MeshInterface()</h2>\n \n@@ -215,15 +215,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00074\">74</a> of file <a class=\"el\" href=\"a00872_source.html\">mesh.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00074\">74</a> of file <a class=\"el\" href=\"a00704_source.html\">mesh.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a7ae07c3be3d1d28183ee669ab9739bf2\" name=\"a7ae07c3be3d1d28183ee669ab9739bf2\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7ae07c3be3d1d28183ee669ab9739bf2\">&#9670;&#160;</a></span>~MeshInterface()</h2>\n \n <div class=\"memitem\">\n@@ -244,15 +244,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00076\">76</a> of file <a class=\"el\" href=\"a00872_source.html\">mesh.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00076\">76</a> of file <a class=\"el\" href=\"a00704_source.html\">mesh.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Member Function Documentation</h2>\n <a id=\"abcdcb8fab7865dc196900b37c2e2d279\" name=\"abcdcb8fab7865dc196900b37c2e2d279\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abcdcb8fab7865dc196900b37c2e2d279\">&#9670;&#160;</a></span>BindVaryingBuffer()</h2>\n \n@@ -500,15 +500,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00101\">101</a> of file <a class=\"el\" href=\"a00872_source.html\">mesh.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00101\">101</a> of file <a class=\"el\" href=\"a00704_source.html\">mesh.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a173851f742adc30ac139af96fe63732d\" name=\"a173851f742adc30ac139af96fe63732d\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a173851f742adc30ac139af96fe63732d\">&#9670;&#160;</a></span>refineMesh() <span class=\"overload\">[2/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -546,15 +546,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00117\">117</a> of file <a class=\"el\" href=\"a00872_source.html\">mesh.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00117\">117</a> of file <a class=\"el\" href=\"a00704_source.html\">mesh.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ae13c194d355f54c75f87897e3c5beb6b\" name=\"ae13c194d355f54c75f87897e3c5beb6b\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae13c194d355f54c75f87897e3c5beb6b\">&#9670;&#160;</a></span>Synchronize()</h2>\n \n <div class=\"memitem\">\n@@ -672,15 +672,15 @@\n </div><div class=\"memdoc\">\n \n <p>Implemented in <a class=\"el\" href=\"a01281.html#aa12fdb15b7109e56fc98b256a5d1018c\">Mesh&lt; VERTEX_BUFFER, STENCIL_TABLE, EVALUATOR, PATCH_TABLE, DEVICE_CONTEXT &gt;</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/osd/<a class=\"el\" href=\"a00872_source.html\">mesh.h</a></li>\n+<li>opensubdiv/osd/<a class=\"el\" href=\"a00704_source.html\">mesh.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00912.html\">Osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01269.html\">MeshInterface</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01273.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01273.html", "unified_diff": "@@ -96,15 +96,15 @@\n <a href=\"#pub-types\">Public Types</a> &#124;\n <a href=\"#pub-methods\">Public Member Functions</a> &#124;\n <a href=\"a01270.html\">List of all members</a>  </div>\n   <div class=\"headertitle\"><div class=\"title\">EvaluatorCacheT&lt; EVALUATOR &gt; Class Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00872_source.html\">mesh.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00704_source.html\">mesh.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n <tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01277.html\">Entry</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\n@@ -125,15 +125,15 @@\n <tr class=\"memitem:a6026c1c3d9b42543c0ed159214f99cc2\" id=\"r_a6026c1c3d9b42543c0ed159214f99cc2\"><td class=\"memTemplParams\" colspan=\"2\">template&lt;typename DEVICE_CONTEXT &gt; </td></tr>\n <tr class=\"memitem:a6026c1c3d9b42543c0ed159214f99cc2\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">EVALUATOR *&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01273.html#a6026c1c3d9b42543c0ed159214f99cc2\">GetEvaluator</a> (<a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;srcDesc, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDesc, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;duDesc, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dvDesc, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;duuDesc, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;duvDesc, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dvvDesc, DEVICE_CONTEXT *deviceContext)</td></tr>\n <tr class=\"separator:a6026c1c3d9b42543c0ed159214f99cc2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><div class=\"compoundTemplParams\">template&lt;typename EVALUATOR&gt;<br />\n class OpenSubdiv::OPENSUBDIV_VERSION::Osd::EvaluatorCacheT&lt; EVALUATOR &gt;</div>\n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00186\">186</a> of file <a class=\"el\" href=\"a00872_source.html\">mesh.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00186\">186</a> of file <a class=\"el\" href=\"a00704_source.html\">mesh.h</a>.</p>\n </div><h2 class=\"groupheader\">Member Typedef Documentation</h2>\n <a id=\"aa3bf448cf35c2b498ee29830343fe2de\" name=\"aa3bf448cf35c2b498ee29830343fe2de\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa3bf448cf35c2b498ee29830343fe2de\">&#9670;&#160;</a></span>Evaluators</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n <div class=\"memtemplate\">\n@@ -141,15 +141,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">typedef std::vector&lt;<a class=\"el\" href=\"a01277.html\">Entry</a>&gt; <a class=\"el\" href=\"a01273.html#aa3bf448cf35c2b498ee29830343fe2de\">Evaluators</a></td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00225\">225</a> of file <a class=\"el\" href=\"a00872_source.html\">mesh.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00225\">225</a> of file <a class=\"el\" href=\"a00704_source.html\">mesh.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"a922392890afb6e4f8d4d08845244f145\" name=\"a922392890afb6e4f8d4d08845244f145\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a922392890afb6e4f8d4d08845244f145\">&#9670;&#160;</a></span>~EvaluatorCacheT()</h2>\n \n@@ -171,15 +171,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00188\">188</a> of file <a class=\"el\" href=\"a00872_source.html\">mesh.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00188\">188</a> of file <a class=\"el\" href=\"a00704_source.html\">mesh.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Member Function Documentation</h2>\n <a id=\"a6026c1c3d9b42543c0ed159214f99cc2\" name=\"a6026c1c3d9b42543c0ed159214f99cc2\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6026c1c3d9b42543c0ed159214f99cc2\">&#9670;&#160;</a></span>GetEvaluator() <span class=\"overload\">[1/3]</span></h2>\n \n@@ -250,15 +250,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00255\">255</a> of file <a class=\"el\" href=\"a00872_source.html\">mesh.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00255\">255</a> of file <a class=\"el\" href=\"a00704_source.html\">mesh.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a323bd60a5b0a37389ea7990836f12e18\" name=\"a323bd60a5b0a37389ea7990836f12e18\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a323bd60a5b0a37389ea7990836f12e18\">&#9670;&#160;</a></span>GetEvaluator() <span class=\"overload\">[2/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -310,15 +310,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00241\">241</a> of file <a class=\"el\" href=\"a00872_source.html\">mesh.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00241\">241</a> of file <a class=\"el\" href=\"a00704_source.html\">mesh.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a7d2e3a44295a45db4d6cf935b53c3cbe\" name=\"a7d2e3a44295a45db4d6cf935b53c3cbe\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7d2e3a44295a45db4d6cf935b53c3cbe\">&#9670;&#160;</a></span>GetEvaluator() <span class=\"overload\">[3/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -358,20 +358,20 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00228\">228</a> of file <a class=\"el\" href=\"a00872_source.html\">mesh.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00228\">228</a> of file <a class=\"el\" href=\"a00704_source.html\">mesh.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/osd/<a class=\"el\" href=\"a00872_source.html\">mesh.h</a></li>\n+<li>opensubdiv/osd/<a class=\"el\" href=\"a00704_source.html\">mesh.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00912.html\">Osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01273.html\">EvaluatorCacheT</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01277.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01277.html", "unified_diff": "@@ -95,15 +95,15 @@\n <a href=\"#pub-methods\">Public Member Functions</a> &#124;\n <a href=\"#pub-attribs\">Public Attributes</a> &#124;\n <a href=\"a01274.html\">List of all members</a>  </div>\n   <div class=\"headertitle\"><div class=\"title\">EvaluatorCacheT&lt; EVALUATOR &gt;::Entry Struct Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00872_source.html\">mesh.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00704_source.html\">mesh.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\n Public Member Functions</h2></td></tr>\n <tr class=\"memitem:ada6adfb697358377d8da9232690daae2\" id=\"r_ada6adfb697358377d8da9232690daae2\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01277.html#ada6adfb697358377d8da9232690daae2\">Entry</a> (<a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;srcDescArg, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDescArg, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;duDescArg, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dvDescArg, EVALUATOR *evalArg)</td></tr>\n <tr class=\"separator:ada6adfb697358377d8da9232690daae2\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a0d596cc177157da972daa1a9911027a8\" id=\"r_a0d596cc177157da972daa1a9911027a8\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01277.html#a0d596cc177157da972daa1a9911027a8\">Entry</a> (<a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;srcDescArg, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDescArg, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;duDescArg, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dvDescArg, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;duuDescArg, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;duvDescArg, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dvvDescArg, EVALUATOR *evalArg)</td></tr>\n <tr class=\"separator:a0d596cc177157da972daa1a9911027a8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n@@ -126,15 +126,15 @@\n <tr class=\"separator:a1b564bc13c46807d779bd7e9a74a6e73\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a8fdf9373eaeffa18a4674b9316c12d23\" id=\"r_a8fdf9373eaeffa18a4674b9316c12d23\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">EVALUATOR *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01277.html#a8fdf9373eaeffa18a4674b9316c12d23\">evaluator</a></td></tr>\n <tr class=\"separator:a8fdf9373eaeffa18a4674b9316c12d23\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><div class=\"compoundTemplParams\">template&lt;typename EVALUATOR&gt;<br />\n struct OpenSubdiv::OPENSUBDIV_VERSION::Osd::EvaluatorCacheT&lt; EVALUATOR &gt;::Entry</div>\n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00196\">196</a> of file <a class=\"el\" href=\"a00872_source.html\">mesh.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00196\">196</a> of file <a class=\"el\" href=\"a00704_source.html\">mesh.h</a>.</p>\n </div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"ada6adfb697358377d8da9232690daae2\" name=\"ada6adfb697358377d8da9232690daae2\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ada6adfb697358377d8da9232690daae2\">&#9670;&#160;</a></span>Entry() <span class=\"overload\">[1/2]</span></h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n <div class=\"memtemplate\">\n@@ -182,15 +182,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00197\">197</a> of file <a class=\"el\" href=\"a00872_source.html\">mesh.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00197\">197</a> of file <a class=\"el\" href=\"a00704_source.html\">mesh.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a0d596cc177157da972daa1a9911027a8\" name=\"a0d596cc177157da972daa1a9911027a8\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0d596cc177157da972daa1a9911027a8\">&#9670;&#160;</a></span>Entry() <span class=\"overload\">[2/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -258,15 +258,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00207\">207</a> of file <a class=\"el\" href=\"a00872_source.html\">mesh.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00207\">207</a> of file <a class=\"el\" href=\"a00704_source.html\">mesh.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Member Data Documentation</h2>\n <a id=\"a463eaf3e8922e8aadc9e5eb0998067a9\" name=\"a463eaf3e8922e8aadc9e5eb0998067a9\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a463eaf3e8922e8aadc9e5eb0998067a9\">&#9670;&#160;</a></span>dstDesc</h2>\n \n@@ -277,15 +277,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\"><a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> dstDesc</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00220\">220</a> of file <a class=\"el\" href=\"a00872_source.html\">mesh.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00220\">220</a> of file <a class=\"el\" href=\"a00704_source.html\">mesh.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a598ff84099694191b9815ad4528750d6\" name=\"a598ff84099694191b9815ad4528750d6\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a598ff84099694191b9815ad4528750d6\">&#9670;&#160;</a></span>duDesc</h2>\n \n <div class=\"memitem\">\n@@ -295,15 +295,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\"><a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> duDesc</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00221\">221</a> of file <a class=\"el\" href=\"a00872_source.html\">mesh.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00221\">221</a> of file <a class=\"el\" href=\"a00704_source.html\">mesh.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a6f1841c958530d57dca2cf8e449623cc\" name=\"a6f1841c958530d57dca2cf8e449623cc\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6f1841c958530d57dca2cf8e449623cc\">&#9670;&#160;</a></span>duuDesc</h2>\n \n <div class=\"memitem\">\n@@ -313,15 +313,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\"><a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> duuDesc</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00222\">222</a> of file <a class=\"el\" href=\"a00872_source.html\">mesh.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00222\">222</a> of file <a class=\"el\" href=\"a00704_source.html\">mesh.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a32b5fd50dc24be2bdd0c0ce3a68c352e\" name=\"a32b5fd50dc24be2bdd0c0ce3a68c352e\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a32b5fd50dc24be2bdd0c0ce3a68c352e\">&#9670;&#160;</a></span>duvDesc</h2>\n \n <div class=\"memitem\">\n@@ -331,15 +331,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\"><a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> duvDesc</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00222\">222</a> of file <a class=\"el\" href=\"a00872_source.html\">mesh.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00222\">222</a> of file <a class=\"el\" href=\"a00704_source.html\">mesh.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ae8a207538288cc8048fab45cf824dc7e\" name=\"ae8a207538288cc8048fab45cf824dc7e\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae8a207538288cc8048fab45cf824dc7e\">&#9670;&#160;</a></span>dvDesc</h2>\n \n <div class=\"memitem\">\n@@ -349,15 +349,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\"><a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> dvDesc</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00221\">221</a> of file <a class=\"el\" href=\"a00872_source.html\">mesh.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00221\">221</a> of file <a class=\"el\" href=\"a00704_source.html\">mesh.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a1b564bc13c46807d779bd7e9a74a6e73\" name=\"a1b564bc13c46807d779bd7e9a74a6e73\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1b564bc13c46807d779bd7e9a74a6e73\">&#9670;&#160;</a></span>dvvDesc</h2>\n \n <div class=\"memitem\">\n@@ -367,15 +367,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\"><a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> dvvDesc</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00222\">222</a> of file <a class=\"el\" href=\"a00872_source.html\">mesh.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00222\">222</a> of file <a class=\"el\" href=\"a00704_source.html\">mesh.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a8fdf9373eaeffa18a4674b9316c12d23\" name=\"a8fdf9373eaeffa18a4674b9316c12d23\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8fdf9373eaeffa18a4674b9316c12d23\">&#9670;&#160;</a></span>evaluator</h2>\n \n <div class=\"memitem\">\n@@ -385,15 +385,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">EVALUATOR* evaluator</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00223\">223</a> of file <a class=\"el\" href=\"a00872_source.html\">mesh.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00223\">223</a> of file <a class=\"el\" href=\"a00704_source.html\">mesh.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a5d0b0430c7584408dbcd788f52b80fd4\" name=\"a5d0b0430c7584408dbcd788f52b80fd4\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5d0b0430c7584408dbcd788f52b80fd4\">&#9670;&#160;</a></span>srcDesc</h2>\n \n <div class=\"memitem\">\n@@ -403,20 +403,20 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\"><a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> srcDesc</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00220\">220</a> of file <a class=\"el\" href=\"a00872_source.html\">mesh.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00220\">220</a> of file <a class=\"el\" href=\"a00704_source.html\">mesh.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this struct was generated from the following file:<ul>\n-<li>opensubdiv/osd/<a class=\"el\" href=\"a00872_source.html\">mesh.h</a></li>\n+<li>opensubdiv/osd/<a class=\"el\" href=\"a00704_source.html\">mesh.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00912.html\">Osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01273.html\">EvaluatorCacheT</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01277.html\">Entry</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01281.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01281.html", "unified_diff": "@@ -95,15 +95,15 @@\n <a href=\"#pub-types\">Public Types</a> &#124;\n <a href=\"#pub-methods\">Public Member Functions</a> &#124;\n <a href=\"a01278.html\">List of all members</a>  </div>\n   <div class=\"headertitle\"><div class=\"title\">Mesh&lt; VERTEX_BUFFER, STENCIL_TABLE, EVALUATOR, PATCH_TABLE, DEVICE_CONTEXT &gt; Class Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00872_source.html\">mesh.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00704_source.html\">mesh.h</a>&gt;</code></p>\n <div class=\"dynheader\">\n Inheritance diagram for Mesh&lt; VERTEX_BUFFER, STENCIL_TABLE, EVALUATOR, PATCH_TABLE, DEVICE_CONTEXT &gt;:</div>\n <div class=\"dyncontent\">\n  <div class=\"center\">\n   <img src=\"a01281.png\" usemap=\"#Mesh_3C_20VERTEX_5FBUFFER_2C_20STENCIL_5FTABLE_2C_20EVALUATOR_2C_20PATCH_5FTABLE_2C_20DEVICE_5FCONTEXT_20_3E_map\" alt=\"\"/>\n   <map id=\"Mesh_3C_20VERTEX_5FBUFFER_2C_20STENCIL_5FTABLE_2C_20EVALUATOR_2C_20PATCH_5FTABLE_2C_20DEVICE_5FCONTEXT_20_3E_map\" name=\"Mesh_3C_20VERTEX_5FBUFFER_2C_20STENCIL_5FTABLE_2C_20EVALUATOR_2C_20PATCH_5FTABLE_2C_20DEVICE_5FCONTEXT_20_3E_map\">\n <area href=\"a01269.html\" alt=\"MeshInterface&lt; PATCH_TABLE &gt;\" shape=\"rect\" coords=\"0,0,579,24\"/>\n@@ -177,15 +177,15 @@\n <tr class=\"separator:a51f237c3f08f6ddc2ea7ba5cb0d00b36 inherit pro_static_methods_a01269\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a173851f742adc30ac139af96fe63732d inherit pro_static_methods_a01269\" id=\"r_a173851f742adc30ac139af96fe63732d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01269.html#a173851f742adc30ac139af96fe63732d\">refineMesh</a> (<a class=\"el\" href=\"a01121.html\">Far::TopologyRefiner</a> &amp;refiner, int level, <a class=\"el\" href=\"a00912.html#a85ba9df501aea9af1ec9da1558c255bc\">MeshBitset</a> bits)</td></tr>\n <tr class=\"separator:a173851f742adc30ac139af96fe63732d inherit pro_static_methods_a01269\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><div class=\"compoundTemplParams\">template&lt;typename VERTEX_BUFFER, typename STENCIL_TABLE, typename EVALUATOR, typename PATCH_TABLE, typename DEVICE_CONTEXT = void&gt;<br />\n class OpenSubdiv::OPENSUBDIV_VERSION::Osd::Mesh&lt; VERTEX_BUFFER, STENCIL_TABLE, EVALUATOR, PATCH_TABLE, DEVICE_CONTEXT &gt;</div>\n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00418\">418</a> of file <a class=\"el\" href=\"a00872_source.html\">mesh.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00418\">418</a> of file <a class=\"el\" href=\"a00704_source.html\">mesh.h</a>.</p>\n </div><h2 class=\"groupheader\">Member Typedef Documentation</h2>\n <a id=\"a3e2f358c45731eceb819ae70e7c8ca6e\" name=\"a3e2f358c45731eceb819ae70e7c8ca6e\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3e2f358c45731eceb819ae70e7c8ca6e\">&#9670;&#160;</a></span>DeviceContext</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n <div class=\"memtemplate\">\n@@ -193,15 +193,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">typedef DEVICE_CONTEXT <a class=\"el\" href=\"a01281.html#a3e2f358c45731eceb819ae70e7c8ca6e\">DeviceContext</a></td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00424\">424</a> of file <a class=\"el\" href=\"a00872_source.html\">mesh.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00424\">424</a> of file <a class=\"el\" href=\"a00704_source.html\">mesh.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a5613b23fcbadaf4ffe3dbe87c2d2e773\" name=\"a5613b23fcbadaf4ffe3dbe87c2d2e773\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5613b23fcbadaf4ffe3dbe87c2d2e773\">&#9670;&#160;</a></span>Evaluator</h2>\n \n <div class=\"memitem\">\n@@ -211,15 +211,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">typedef EVALUATOR <a class=\"el\" href=\"a01281.html#a5613b23fcbadaf4ffe3dbe87c2d2e773\">Evaluator</a></td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00421\">421</a> of file <a class=\"el\" href=\"a00872_source.html\">mesh.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00421\">421</a> of file <a class=\"el\" href=\"a00704_source.html\">mesh.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a81bf971c4b5d929fc29f37e38b519853\" name=\"a81bf971c4b5d929fc29f37e38b519853\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a81bf971c4b5d929fc29f37e38b519853\">&#9670;&#160;</a></span>EvaluatorCache</h2>\n \n <div class=\"memitem\">\n@@ -229,15 +229,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">typedef <a class=\"el\" href=\"a01273.html\">EvaluatorCacheT</a>&lt;<a class=\"el\" href=\"a01281.html#a5613b23fcbadaf4ffe3dbe87c2d2e773\">Evaluator</a>&gt; <a class=\"el\" href=\"a01281.html#a81bf971c4b5d929fc29f37e38b519853\">EvaluatorCache</a></td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00425\">425</a> of file <a class=\"el\" href=\"a00872_source.html\">mesh.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00425\">425</a> of file <a class=\"el\" href=\"a00704_source.html\">mesh.h</a>.</p>\n \n </div>\n </div>\n <a id=\"adf9352136d44e5999629c6b4530bf4e0\" name=\"adf9352136d44e5999629c6b4530bf4e0\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adf9352136d44e5999629c6b4530bf4e0\">&#9670;&#160;</a></span>PatchTable</h2>\n \n <div class=\"memitem\">\n@@ -247,15 +247,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">typedef PATCH_TABLE <a class=\"el\" href=\"a01281.html#adf9352136d44e5999629c6b4530bf4e0\">PatchTable</a></td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00423\">423</a> of file <a class=\"el\" href=\"a00872_source.html\">mesh.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00423\">423</a> of file <a class=\"el\" href=\"a00704_source.html\">mesh.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a6b90e8290c540c78bedd053e2cc42f31\" name=\"a6b90e8290c540c78bedd053e2cc42f31\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6b90e8290c540c78bedd053e2cc42f31\">&#9670;&#160;</a></span>StencilTable</h2>\n \n <div class=\"memitem\">\n@@ -265,15 +265,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">typedef STENCIL_TABLE <a class=\"el\" href=\"a01281.html#a6b90e8290c540c78bedd053e2cc42f31\">StencilTable</a></td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00422\">422</a> of file <a class=\"el\" href=\"a00872_source.html\">mesh.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00422\">422</a> of file <a class=\"el\" href=\"a00704_source.html\">mesh.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a722ca2b35d7001c0eeb6298f2c3704ca\" name=\"a722ca2b35d7001c0eeb6298f2c3704ca\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a722ca2b35d7001c0eeb6298f2c3704ca\">&#9670;&#160;</a></span>VertexBuffer</h2>\n \n <div class=\"memitem\">\n@@ -283,15 +283,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">typedef VERTEX_BUFFER <a class=\"el\" href=\"a01281.html#a722ca2b35d7001c0eeb6298f2c3704ca\">VertexBuffer</a></td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00420\">420</a> of file <a class=\"el\" href=\"a00872_source.html\">mesh.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00420\">420</a> of file <a class=\"el\" href=\"a00704_source.html\">mesh.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a9cf40ecf1b9b5c29507fe92a03f37a3c\" name=\"a9cf40ecf1b9b5c29507fe92a03f37a3c\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9cf40ecf1b9b5c29507fe92a03f37a3c\">&#9670;&#160;</a></span>VertexBufferBinding</h2>\n \n <div class=\"memitem\">\n@@ -301,15 +301,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">typedef PatchTable::VertexBufferBinding <a class=\"el\" href=\"a01281.html#a9cf40ecf1b9b5c29507fe92a03f37a3c\">VertexBufferBinding</a></td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00426\">426</a> of file <a class=\"el\" href=\"a00872_source.html\">mesh.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00426\">426</a> of file <a class=\"el\" href=\"a00704_source.html\">mesh.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"a69e70d7e23e9bd8bd8eb7b5f0589009f\" name=\"a69e70d7e23e9bd8bd8eb7b5f0589009f\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a69e70d7e23e9bd8bd8eb7b5f0589009f\">&#9670;&#160;</a></span>Mesh()</h2>\n \n@@ -372,15 +372,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00428\">428</a> of file <a class=\"el\" href=\"a00872_source.html\">mesh.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00428\">428</a> of file <a class=\"el\" href=\"a00704_source.html\">mesh.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a92162d9c34b218e4c03472f3483e3a78\" name=\"a92162d9c34b218e4c03472f3483e3a78\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a92162d9c34b218e4c03472f3483e3a78\">&#9670;&#160;</a></span>~Mesh()</h2>\n \n <div class=\"memitem\">\n@@ -401,15 +401,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00478\">478</a> of file <a class=\"el\" href=\"a00872_source.html\">mesh.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00478\">478</a> of file <a class=\"el\" href=\"a00704_source.html\">mesh.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Member Function Documentation</h2>\n <a id=\"a914e3cead7ba6e0634b70bcf2957e8f7\" name=\"a914e3cead7ba6e0634b70bcf2957e8f7\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a914e3cead7ba6e0634b70bcf2957e8f7\">&#9670;&#160;</a></span>BindVaryingBuffer()</h2>\n \n@@ -433,15 +433,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Implements <a class=\"el\" href=\"a01269.html#abcdcb8fab7865dc196900b37c2e2d279\">MeshInterface&lt; PATCH_TABLE &gt;</a>.</p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00566\">566</a> of file <a class=\"el\" href=\"a00872_source.html\">mesh.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00566\">566</a> of file <a class=\"el\" href=\"a00704_source.html\">mesh.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a6043945695eb4786b2ff1eba1725088a\" name=\"a6043945695eb4786b2ff1eba1725088a\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6043945695eb4786b2ff1eba1725088a\">&#9670;&#160;</a></span>BindVertexBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -464,15 +464,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Implements <a class=\"el\" href=\"a01269.html#a9d8ecd607dbb0749a55113224fbd39c4\">MeshInterface&lt; PATCH_TABLE &gt;</a>.</p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00562\">562</a> of file <a class=\"el\" href=\"a00872_source.html\">mesh.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00562\">562</a> of file <a class=\"el\" href=\"a00704_source.html\">mesh.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ac9e858564a58e758570a257e6db063b8\" name=\"ac9e858564a58e758570a257e6db063b8\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac9e858564a58e758570a257e6db063b8\">&#9670;&#160;</a></span>GetFarPatchTable()</h2>\n \n <div class=\"memitem\">\n@@ -495,15 +495,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Implements <a class=\"el\" href=\"a01269.html#a15628b18e19d90e91fdbd659925ae5c0\">MeshInterface&lt; PATCH_TABLE &gt;</a>.</p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00554\">554</a> of file <a class=\"el\" href=\"a00872_source.html\">mesh.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00554\">554</a> of file <a class=\"el\" href=\"a00704_source.html\">mesh.h</a>.</p>\n \n </div>\n </div>\n <a id=\"affef41596871be7997c1691510d02e3f\" name=\"affef41596871be7997c1691510d02e3f\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#affef41596871be7997c1691510d02e3f\">&#9670;&#160;</a></span>GetMaxValence()</h2>\n \n <div class=\"memitem\">\n@@ -526,15 +526,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Implements <a class=\"el\" href=\"a01269.html#a17f6f0b76abe06cfe6f518f6b84baf43\">MeshInterface&lt; PATCH_TABLE &gt;</a>.</p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00560\">560</a> of file <a class=\"el\" href=\"a00872_source.html\">mesh.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00560\">560</a> of file <a class=\"el\" href=\"a00704_source.html\">mesh.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a65a924e7a9f6038025677e4aa728d9d3\" name=\"a65a924e7a9f6038025677e4aa728d9d3\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a65a924e7a9f6038025677e4aa728d9d3\">&#9670;&#160;</a></span>GetNumVertices()</h2>\n \n <div class=\"memitem\">\n@@ -557,15 +557,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Implements <a class=\"el\" href=\"a01269.html#a431ba3d2dd158085dd98ac0a74b6852e\">MeshInterface&lt; PATCH_TABLE &gt;</a>.</p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00558\">558</a> of file <a class=\"el\" href=\"a00872_source.html\">mesh.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00558\">558</a> of file <a class=\"el\" href=\"a00704_source.html\">mesh.h</a>.</p>\n \n </div>\n </div>\n <a id=\"abcd37c29ab31ebecf03405bf4e92f28a\" name=\"abcd37c29ab31ebecf03405bf4e92f28a\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abcd37c29ab31ebecf03405bf4e92f28a\">&#9670;&#160;</a></span>GetPatchTable()</h2>\n \n <div class=\"memitem\">\n@@ -588,15 +588,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Implements <a class=\"el\" href=\"a01269.html#a6a57ae718d1dcdeb05728bca6f18ba4e\">MeshInterface&lt; PATCH_TABLE &gt;</a>.</p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00550\">550</a> of file <a class=\"el\" href=\"a00872_source.html\">mesh.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00550\">550</a> of file <a class=\"el\" href=\"a00704_source.html\">mesh.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a060777db09a25a79af64ea17acdc6d4a\" name=\"a060777db09a25a79af64ea17acdc6d4a\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a060777db09a25a79af64ea17acdc6d4a\">&#9670;&#160;</a></span>GetTopologyRefiner()</h2>\n \n <div class=\"memitem\">\n@@ -617,15 +617,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00578\">578</a> of file <a class=\"el\" href=\"a00872_source.html\">mesh.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00578\">578</a> of file <a class=\"el\" href=\"a00704_source.html\">mesh.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a2da98e35e1a94b53d77c7c5d68b44320\" name=\"a2da98e35e1a94b53d77c7c5d68b44320\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2da98e35e1a94b53d77c7c5d68b44320\">&#9670;&#160;</a></span>GetVaryingBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -646,15 +646,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00574\">574</a> of file <a class=\"el\" href=\"a00872_source.html\">mesh.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00574\">574</a> of file <a class=\"el\" href=\"a00704_source.html\">mesh.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a1e4d2fe7a4770614b65af59e4a92058a\" name=\"a1e4d2fe7a4770614b65af59e4a92058a\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1e4d2fe7a4770614b65af59e4a92058a\">&#9670;&#160;</a></span>GetVertexBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -675,15 +675,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00570\">570</a> of file <a class=\"el\" href=\"a00872_source.html\">mesh.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00570\">570</a> of file <a class=\"el\" href=\"a00704_source.html\">mesh.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a32c8d641fe9ea1565be646a10c5d6c85\" name=\"a32c8d641fe9ea1565be646a10c5d6c85\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a32c8d641fe9ea1565be646a10c5d6c85\">&#9670;&#160;</a></span>Refine()</h2>\n \n <div class=\"memitem\">\n@@ -706,15 +706,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Implements <a class=\"el\" href=\"a01269.html#a9a90398ba2073fe3da454f6b00deb33c\">MeshInterface&lt; PATCH_TABLE &gt;</a>.</p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00501\">501</a> of file <a class=\"el\" href=\"a00872_source.html\">mesh.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00501\">501</a> of file <a class=\"el\" href=\"a00704_source.html\">mesh.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ab945364bf8cadb3d1f8285551d9d49f0\" name=\"ab945364bf8cadb3d1f8285551d9d49f0\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab945364bf8cadb3d1f8285551d9d49f0\">&#9670;&#160;</a></span>Synchronize()</h2>\n \n <div class=\"memitem\">\n@@ -737,15 +737,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Implements <a class=\"el\" href=\"a01269.html#ae13c194d355f54c75f87897e3c5beb6b\">MeshInterface&lt; PATCH_TABLE &gt;</a>.</p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00546\">546</a> of file <a class=\"el\" href=\"a00872_source.html\">mesh.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00546\">546</a> of file <a class=\"el\" href=\"a00704_source.html\">mesh.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a2d7dd4047fcb530d2d5a72b922142517\" name=\"a2d7dd4047fcb530d2d5a72b922142517\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2d7dd4047fcb530d2d5a72b922142517\">&#9670;&#160;</a></span>UpdateVaryingBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -785,15 +785,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Implements <a class=\"el\" href=\"a01269.html#a46c5effb867afe6684124103763ea931\">MeshInterface&lt; PATCH_TABLE &gt;</a>.</p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00495\">495</a> of file <a class=\"el\" href=\"a00872_source.html\">mesh.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00495\">495</a> of file <a class=\"el\" href=\"a00704_source.html\">mesh.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aa12fdb15b7109e56fc98b256a5d1018c\" name=\"aa12fdb15b7109e56fc98b256a5d1018c\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa12fdb15b7109e56fc98b256a5d1018c\">&#9670;&#160;</a></span>UpdateVertexBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -833,20 +833,20 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">virtual</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Implements <a class=\"el\" href=\"a01269.html#a5c79ce02489e8591ee2d2bfbfab155ec\">MeshInterface&lt; PATCH_TABLE &gt;</a>.</p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00489\">489</a> of file <a class=\"el\" href=\"a00872_source.html\">mesh.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00704_source.html#l00489\">489</a> of file <a class=\"el\" href=\"a00704_source.html\">mesh.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/osd/<a class=\"el\" href=\"a00872_source.html\">mesh.h</a></li>\n+<li>opensubdiv/osd/<a class=\"el\" href=\"a00704_source.html\">mesh.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00912.html\">Osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01281.html\">Mesh</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01285.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01285.html", "unified_diff": "@@ -94,40 +94,40 @@\n   <div class=\"summary\">\n <a href=\"#pub-attribs\">Public Attributes</a> &#124;\n <a href=\"a01282.html\">List of all members</a>  </div>\n   <div class=\"headertitle\"><div class=\"title\">MTLContext Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00824_source.html\">mtlCommon.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00698_source.html\">mtlCommon.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-attribs\" name=\"pub-attribs\"></a>\n Public Attributes</h2></td></tr>\n <tr class=\"memitem:a7d70f5acf4efd89092645b4c44e480cf\" id=\"r_a7d70f5acf4efd89092645b4c44e480cf\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">id&lt; MTLDevice &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01285.html#a7d70f5acf4efd89092645b4c44e480cf\">device</a> = nullptr</td></tr>\n <tr class=\"separator:a7d70f5acf4efd89092645b4c44e480cf\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a66809eb79c7e79a491fd8c889465166b\" id=\"r_a66809eb79c7e79a491fd8c889465166b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">id&lt; MTLCommandQueue &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01285.html#a66809eb79c7e79a491fd8c889465166b\">commandQueue</a> = nullptr</td></tr>\n <tr class=\"separator:a66809eb79c7e79a491fd8c889465166b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\">\n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00824_source.html#l00040\">40</a> of file <a class=\"el\" href=\"a00824_source.html\">mtlCommon.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00698_source.html#l00040\">40</a> of file <a class=\"el\" href=\"a00698_source.html\">mtlCommon.h</a>.</p>\n </div><h2 class=\"groupheader\">Member Data Documentation</h2>\n <a id=\"a66809eb79c7e79a491fd8c889465166b\" name=\"a66809eb79c7e79a491fd8c889465166b\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a66809eb79c7e79a491fd8c889465166b\">&#9670;&#160;</a></span>commandQueue</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">id&lt;MTLCommandQueue&gt; commandQueue = nullptr</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00824_source.html#l00043\">43</a> of file <a class=\"el\" href=\"a00824_source.html\">mtlCommon.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00698_source.html#l00043\">43</a> of file <a class=\"el\" href=\"a00698_source.html\">mtlCommon.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a7d70f5acf4efd89092645b4c44e480cf\" name=\"a7d70f5acf4efd89092645b4c44e480cf\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7d70f5acf4efd89092645b4c44e480cf\">&#9670;&#160;</a></span>device</h2>\n \n <div class=\"memitem\">\n@@ -135,20 +135,20 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">id&lt;MTLDevice&gt; device = nullptr</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00824_source.html#l00042\">42</a> of file <a class=\"el\" href=\"a00824_source.html\">mtlCommon.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00698_source.html#l00042\">42</a> of file <a class=\"el\" href=\"a00698_source.html\">mtlCommon.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/osd/<a class=\"el\" href=\"a00824_source.html\">mtlCommon.h</a></li>\n+<li>opensubdiv/osd/<a class=\"el\" href=\"a00698_source.html\">mtlCommon.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00912.html\">Osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01285.html\">MTLContext</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01289.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01289.html", "unified_diff": "@@ -95,15 +95,15 @@\n <a href=\"#pub-methods\">Public Member Functions</a> &#124;\n <a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n <a href=\"a01286.html\">List of all members</a>  </div>\n   <div class=\"headertitle\"><div class=\"title\">MTLStencilTable Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00806_source.html\">mtlComputeEvaluator.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00689_source.html\">mtlComputeEvaluator.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\n Public Member Functions</h2></td></tr>\n <tr class=\"memitem:a45e329ffe9fe4e32a1b21bfc89a6763f\" id=\"r_a45e329ffe9fe4e32a1b21bfc89a6763f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01289.html#a45e329ffe9fe4e32a1b21bfc89a6763f\">MTLStencilTable</a> (<a class=\"el\" href=\"a01065.html\">Far::StencilTable</a> const *stencilTable, <a class=\"el\" href=\"a01285.html\">MTLContext</a> *context)</td></tr>\n <tr class=\"separator:a45e329ffe9fe4e32a1b21bfc89a6763f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a015dc72c3360b4841ee2b3feb06c106f\" id=\"r_a015dc72c3360b4841ee2b3feb06c106f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01289.html#a015dc72c3360b4841ee2b3feb06c106f\">MTLStencilTable</a> (<a class=\"el\" href=\"a01081.html\">Far::LimitStencilTable</a> const *stencilTable, <a class=\"el\" href=\"a01285.html\">MTLContext</a> *context)</td></tr>\n <tr class=\"separator:a015dc72c3360b4841ee2b3feb06c106f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n@@ -134,15 +134,15 @@\n Static Public Member Functions</h2></td></tr>\n <tr class=\"memitem:ad96fc1ad226b46fec987d3b131a87a90\" id=\"r_ad96fc1ad226b46fec987d3b131a87a90\"><td class=\"memTemplParams\" colspan=\"2\">template&lt;typename STENCIL_TABLE , typename DEVICE_CONTEXT &gt; </td></tr>\n <tr class=\"memitem:ad96fc1ad226b46fec987d3b131a87a90\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"a01289.html\">MTLStencilTable</a> *&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01289.html#ad96fc1ad226b46fec987d3b131a87a90\">Create</a> (STENCIL_TABLE *stencilTable, DEVICE_CONTEXT context)</td></tr>\n <tr class=\"separator:ad96fc1ad226b46fec987d3b131a87a90\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\">\n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00806_source.html#l00050\">50</a> of file <a class=\"el\" href=\"a00806_source.html\">mtlComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00689_source.html#l00050\">50</a> of file <a class=\"el\" href=\"a00689_source.html\">mtlComputeEvaluator.h</a>.</p>\n </div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"a45e329ffe9fe4e32a1b21bfc89a6763f\" name=\"a45e329ffe9fe4e32a1b21bfc89a6763f\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a45e329ffe9fe4e32a1b21bfc89a6763f\">&#9670;&#160;</a></span>MTLStencilTable() <span class=\"overload\">[1/2]</span></h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n       <table class=\"memname\">\n@@ -246,15 +246,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00806_source.html#l00054\">54</a> of file <a class=\"el\" href=\"a00806_source.html\">mtlComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00689_source.html#l00054\">54</a> of file <a class=\"el\" href=\"a00689_source.html\">mtlComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a4dec46cc7a06c6c1687109e48f04e085\" name=\"a4dec46cc7a06c6c1687109e48f04e085\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4dec46cc7a06c6c1687109e48f04e085\">&#9670;&#160;</a></span>GetDuuWeightsBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -273,15 +273,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00806_source.html#l00071\">71</a> of file <a class=\"el\" href=\"a00806_source.html\">mtlComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00689_source.html#l00071\">71</a> of file <a class=\"el\" href=\"a00689_source.html\">mtlComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a6175e9daf70e8c27fb5122546df3fb1f\" name=\"a6175e9daf70e8c27fb5122546df3fb1f\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6175e9daf70e8c27fb5122546df3fb1f\">&#9670;&#160;</a></span>GetDuvWeightsBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -300,15 +300,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00806_source.html#l00072\">72</a> of file <a class=\"el\" href=\"a00806_source.html\">mtlComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00689_source.html#l00072\">72</a> of file <a class=\"el\" href=\"a00689_source.html\">mtlComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a13aa05ad0482bad5182feb3cd75b4168\" name=\"a13aa05ad0482bad5182feb3cd75b4168\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a13aa05ad0482bad5182feb3cd75b4168\">&#9670;&#160;</a></span>GetDuWeightsBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -327,15 +327,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00806_source.html#l00069\">69</a> of file <a class=\"el\" href=\"a00806_source.html\">mtlComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00689_source.html#l00069\">69</a> of file <a class=\"el\" href=\"a00689_source.html\">mtlComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a2f1e271aba868c291f9e0a9e9d1ace47\" name=\"a2f1e271aba868c291f9e0a9e9d1ace47\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2f1e271aba868c291f9e0a9e9d1ace47\">&#9670;&#160;</a></span>GetDvvWeightsBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -354,15 +354,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00806_source.html#l00073\">73</a> of file <a class=\"el\" href=\"a00806_source.html\">mtlComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00689_source.html#l00073\">73</a> of file <a class=\"el\" href=\"a00689_source.html\">mtlComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ae7df9ee000b676b2afb8b2979c006494\" name=\"ae7df9ee000b676b2afb8b2979c006494\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae7df9ee000b676b2afb8b2979c006494\">&#9670;&#160;</a></span>GetDvWeightsBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -381,15 +381,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00806_source.html#l00070\">70</a> of file <a class=\"el\" href=\"a00806_source.html\">mtlComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00689_source.html#l00070\">70</a> of file <a class=\"el\" href=\"a00689_source.html\">mtlComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a860a80d6ea4ec9aec06280c39376683c\" name=\"a860a80d6ea4ec9aec06280c39376683c\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a860a80d6ea4ec9aec06280c39376683c\">&#9670;&#160;</a></span>GetIndicesBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -408,15 +408,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00806_source.html#l00067\">67</a> of file <a class=\"el\" href=\"a00806_source.html\">mtlComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00689_source.html#l00067\">67</a> of file <a class=\"el\" href=\"a00689_source.html\">mtlComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a65836d2070b943c8fecbad926d074de2\" name=\"a65836d2070b943c8fecbad926d074de2\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a65836d2070b943c8fecbad926d074de2\">&#9670;&#160;</a></span>GetNumStencils()</h2>\n \n <div class=\"memitem\">\n@@ -435,15 +435,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00806_source.html#l00075\">75</a> of file <a class=\"el\" href=\"a00806_source.html\">mtlComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00689_source.html#l00075\">75</a> of file <a class=\"el\" href=\"a00689_source.html\">mtlComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aa1aa052f6513bda4c60b0ac423fb34cc\" name=\"aa1aa052f6513bda4c60b0ac423fb34cc\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa1aa052f6513bda4c60b0ac423fb34cc\">&#9670;&#160;</a></span>GetOffsetsBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -462,15 +462,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00806_source.html#l00066\">66</a> of file <a class=\"el\" href=\"a00806_source.html\">mtlComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00689_source.html#l00066\">66</a> of file <a class=\"el\" href=\"a00689_source.html\">mtlComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a9b2f404d67fa83cd4715d2bbbeef6b4c\" name=\"a9b2f404d67fa83cd4715d2bbbeef6b4c\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9b2f404d67fa83cd4715d2bbbeef6b4c\">&#9670;&#160;</a></span>GetSizesBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -489,15 +489,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00806_source.html#l00065\">65</a> of file <a class=\"el\" href=\"a00806_source.html\">mtlComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00689_source.html#l00065\">65</a> of file <a class=\"el\" href=\"a00689_source.html\">mtlComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ab22907c9cfe58b82ddfcad8241304500\" name=\"ab22907c9cfe58b82ddfcad8241304500\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab22907c9cfe58b82ddfcad8241304500\">&#9670;&#160;</a></span>GetWeightsBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -516,20 +516,20 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00806_source.html#l00068\">68</a> of file <a class=\"el\" href=\"a00806_source.html\">mtlComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00689_source.html#l00068\">68</a> of file <a class=\"el\" href=\"a00689_source.html\">mtlComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/osd/<a class=\"el\" href=\"a00806_source.html\">mtlComputeEvaluator.h</a></li>\n+<li>opensubdiv/osd/<a class=\"el\" href=\"a00689_source.html\">mtlComputeEvaluator.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00912.html\">Osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01289.html\">MTLStencilTable</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01293.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01293.html", "unified_diff": "@@ -96,15 +96,15 @@\n <a href=\"#pub-methods\">Public Member Functions</a> &#124;\n <a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n <a href=\"a01290.html\">List of all members</a>  </div>\n   <div class=\"headertitle\"><div class=\"title\">MTLComputeEvaluator Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00806_source.html\">mtlComputeEvaluator.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00689_source.html\">mtlComputeEvaluator.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\n Public Types</h2></td></tr>\n <tr class=\"memitem:a2c24b70c9312d8dff3fecb9ddea52c44\" id=\"r_a2c24b70c9312d8dff3fecb9ddea52c44\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01293.html#a2c24b70c9312d8dff3fecb9ddea52c44\">Instantiatable</a></td></tr>\n <tr class=\"separator:a2c24b70c9312d8dff3fecb9ddea52c44\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\n@@ -231,29 +231,29 @@\n <tr class=\"separator:a0b18216ba91299d39434a936ff58309b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a7e02041f843415c1056ea2ca3f7d0b62\" id=\"r_a7e02041f843415c1056ea2ca3f7d0b62\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01293.html#a7e02041f843415c1056ea2ca3f7d0b62\">Synchronize</a> (<a class=\"el\" href=\"a01285.html\">MTLContext</a> *context)</td></tr>\n <tr class=\"memdesc:a7e02041f843415c1056ea2ca3f7d0b62\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Wait for the dispatched kernel to finish.  <br /></td></tr>\n <tr class=\"separator:a7e02041f843415c1056ea2ca3f7d0b62\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\">\n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00806_source.html#l00091\">91</a> of file <a class=\"el\" href=\"a00806_source.html\">mtlComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00689_source.html#l00091\">91</a> of file <a class=\"el\" href=\"a00689_source.html\">mtlComputeEvaluator.h</a>.</p>\n </div><h2 class=\"groupheader\">Member Typedef Documentation</h2>\n <a id=\"a2c24b70c9312d8dff3fecb9ddea52c44\" name=\"a2c24b70c9312d8dff3fecb9ddea52c44\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2c24b70c9312d8dff3fecb9ddea52c44\">&#9670;&#160;</a></span>Instantiatable</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">typedef bool <a class=\"el\" href=\"a01293.html#a2c24b70c9312d8dff3fecb9ddea52c44\">Instantiatable</a></td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00806_source.html#l00094\">94</a> of file <a class=\"el\" href=\"a00806_source.html\">mtlComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00689_source.html#l00094\">94</a> of file <a class=\"el\" href=\"a00689_source.html\">mtlComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"a10015b2c4f90f3a11e60cc88dcbb9d6b\" name=\"a10015b2c4f90f3a11e60cc88dcbb9d6b\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a10015b2c4f90f3a11e60cc88dcbb9d6b\">&#9670;&#160;</a></span>MTLComputeEvaluator()</h2>\n \n@@ -877,15 +877,15 @@\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01305.html\">MTLPatchTable</a> or equivalent</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>cached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem.</td></tr>\n     <tr><td class=\"paramname\">context</td><td>used to obtain the MTLDevice object and command queue to obtain command buffers from. </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00806_source.html#l00889\">889</a> of file <a class=\"el\" href=\"a00806_source.html\">mtlComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00689_source.html#l00889\">889</a> of file <a class=\"el\" href=\"a00689_source.html\">mtlComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"add1df0176df3d03028f001f041f26d5c\" name=\"add1df0176df3d03028f001f041f26d5c\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#add1df0176df3d03028f001f041f26d5c\">&#9670;&#160;</a></span>EvalPatches() <span class=\"overload\">[4/8]</span></h2>\n \n <div class=\"memitem\">\n@@ -1038,15 +1038,15 @@\n     <tr><td class=\"paramname\">patchCoords</td><td>array of locations to be evaluated.</td></tr>\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01305.html\">MTLPatchTable</a> or equivalent</td></tr>\n     <tr><td class=\"paramname\">context</td><td>used to obtain the MTLDevice object and command queue to obtain command buffers from. </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00806_source.html#l01104\">1104</a> of file <a class=\"el\" href=\"a00806_source.html\">mtlComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00689_source.html#l01104\">1104</a> of file <a class=\"el\" href=\"a00689_source.html\">mtlComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a04f16e003e67523aaa60a18a7104a83b\" name=\"a04f16e003e67523aaa60a18a7104a83b\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a04f16e003e67523aaa60a18a7104a83b\">&#9670;&#160;</a></span>EvalPatches() <span class=\"overload\">[5/8]</span></h2>\n \n <div class=\"memitem\">\n@@ -1164,15 +1164,15 @@\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01305.html\">MTLPatchTable</a> or equivalent</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>cached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem.</td></tr>\n     <tr><td class=\"paramname\">context</td><td>used to obtain the MTLDevice object and command queue to obtain command buffers from. </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00806_source.html#l00786\">786</a> of file <a class=\"el\" href=\"a00806_source.html\">mtlComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00689_source.html#l00786\">786</a> of file <a class=\"el\" href=\"a00689_source.html\">mtlComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ade51863a5d2d4b642f8c78b9e85faf38\" name=\"ade51863a5d2d4b642f8c78b9e85faf38\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ade51863a5d2d4b642f8c78b9e85faf38\">&#9670;&#160;</a></span>EvalPatches() <span class=\"overload\">[6/8]</span></h2>\n \n <div class=\"memitem\">\n@@ -1283,15 +1283,15 @@\n     <tr><td class=\"paramname\">patchCoords</td><td>array of locations to be evaluated.</td></tr>\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01305.html\">MTLPatchTable</a> or equivalent</td></tr>\n     <tr><td class=\"paramname\">context</td><td>used to obtain the MTLDevice object and command queue to obtain command buffers from. </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00806_source.html#l01025\">1025</a> of file <a class=\"el\" href=\"a00806_source.html\">mtlComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00689_source.html#l01025\">1025</a> of file <a class=\"el\" href=\"a00689_source.html\">mtlComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a1e8b40a131056bb2e3868d4dd4a94ba6\" name=\"a1e8b40a131056bb2e3868d4dd4a94ba6\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1e8b40a131056bb2e3868d4dd4a94ba6\">&#9670;&#160;</a></span>EvalPatches() <span class=\"overload\">[7/8]</span></h2>\n \n <div class=\"memitem\">\n@@ -1384,15 +1384,15 @@\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01305.html\">MTLPatchTable</a> or equivalent</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>cached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem.</td></tr>\n     <tr><td class=\"paramname\">context</td><td>used to obtain the MTLDevice object and command queue to obtain command buffers from. </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00806_source.html#l00705\">705</a> of file <a class=\"el\" href=\"a00806_source.html\">mtlComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00689_source.html#l00705\">705</a> of file <a class=\"el\" href=\"a00689_source.html\">mtlComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aab3cbda7289b76b077b371b92e9afaf3\" name=\"aab3cbda7289b76b077b371b92e9afaf3\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aab3cbda7289b76b077b371b92e9afaf3\">&#9670;&#160;</a></span>EvalPatches() <span class=\"overload\">[8/8]</span></h2>\n \n <div class=\"memitem\">\n@@ -1475,15 +1475,15 @@\n     <tr><td class=\"paramname\">patchCoords</td><td>array of locations to be evaluated. must have BindVBO() method returning an array of <a class=\"el\" href=\"a01321.html\" title=\"Coordinates set on a patch table.\">PatchCoord</a> struct in VBO.</td></tr>\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01305.html\">MTLPatchTable</a> or equivalent</td></tr>\n     <tr><td class=\"paramname\">context</td><td>used to obtain the MTLDevice object and command queue to obtain command buffers from. </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00806_source.html#l00966\">966</a> of file <a class=\"el\" href=\"a00806_source.html\">mtlComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00689_source.html#l00966\">966</a> of file <a class=\"el\" href=\"a00689_source.html\">mtlComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a0b18216ba91299d39434a936ff58309b\" name=\"a0b18216ba91299d39434a936ff58309b\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0b18216ba91299d39434a936ff58309b\">&#9670;&#160;</a></span>EvalPatchesFaceVarying() <span class=\"overload\">[1/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -1650,15 +1650,15 @@\n     <tr><td class=\"paramname\">fvarChannel</td><td>face-varying channel</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>cached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem.</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>used to obtain the MTLDevice object and command queue to obtain command buffers from. </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00806_source.html#l01991\">1991</a> of file <a class=\"el\" href=\"a00806_source.html\">mtlComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00689_source.html#l01991\">1991</a> of file <a class=\"el\" href=\"a00689_source.html\">mtlComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a7ae29a65e3cfdc045541528dd58ee2d5\" name=\"a7ae29a65e3cfdc045541528dd58ee2d5\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7ae29a65e3cfdc045541528dd58ee2d5\">&#9670;&#160;</a></span>EvalPatchesFaceVarying() <span class=\"overload\">[2/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -1818,15 +1818,15 @@\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01305.html\">MTLPatchTable</a> or equivalent</td></tr>\n     <tr><td class=\"paramname\">fvarChannel</td><td>face-varying channel</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>used to obtain the MTLDevice object and command queue to obtain command buffers from. </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00806_source.html#l02106\">2106</a> of file <a class=\"el\" href=\"a00806_source.html\">mtlComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00689_source.html#l02106\">2106</a> of file <a class=\"el\" href=\"a00689_source.html\">mtlComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aa8e715d1d6cb338e9617ca3795a94021\" name=\"aa8e715d1d6cb338e9617ca3795a94021\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa8e715d1d6cb338e9617ca3795a94021\">&#9670;&#160;</a></span>EvalPatchesFaceVarying() <span class=\"overload\">[3/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -1951,15 +1951,15 @@\n     <tr><td class=\"paramname\">fvarChannel</td><td>face-varying channel</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>cached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem.</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>used to obtain the MTLDevice object and command queue to obtain command buffers from. </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00806_source.html#l01813\">1813</a> of file <a class=\"el\" href=\"a00806_source.html\">mtlComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00689_source.html#l01813\">1813</a> of file <a class=\"el\" href=\"a00689_source.html\">mtlComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a4b6168e3efdb657463a20aa39ccdb38f\" name=\"a4b6168e3efdb657463a20aa39ccdb38f\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4b6168e3efdb657463a20aa39ccdb38f\">&#9670;&#160;</a></span>EvalPatchesFaceVarying() <span class=\"overload\">[4/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -2077,15 +2077,15 @@\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01305.html\">MTLPatchTable</a> or equivalent</td></tr>\n     <tr><td class=\"paramname\">fvarChannel</td><td>face-varying channel</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>used to obtain the MTLDevice object and command queue to obtain command buffers from. </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00806_source.html#l01900\">1900</a> of file <a class=\"el\" href=\"a00806_source.html\">mtlComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00689_source.html#l01900\">1900</a> of file <a class=\"el\" href=\"a00689_source.html\">mtlComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a575672bd557a88df3702b3be802825d8\" name=\"a575672bd557a88df3702b3be802825d8\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a575672bd557a88df3702b3be802825d8\">&#9670;&#160;</a></span>EvalPatchesFaceVarying() <span class=\"overload\">[5/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -2182,15 +2182,15 @@\n     <tr><td class=\"paramname\">fvarChannel</td><td>face-varying channel</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>cached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem.</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>used to obtain the MTLDevice object and command queue to obtain command buffers from. </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00806_source.html#l01672\">1672</a> of file <a class=\"el\" href=\"a00806_source.html\">mtlComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00689_source.html#l01672\">1672</a> of file <a class=\"el\" href=\"a00689_source.html\">mtlComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a9349f2fdf4e170771e2216874f2bb23c\" name=\"a9349f2fdf4e170771e2216874f2bb23c\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9349f2fdf4e170771e2216874f2bb23c\">&#9670;&#160;</a></span>EvalPatchesFaceVarying() <span class=\"overload\">[6/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -2280,15 +2280,15 @@\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01305.html\">MTLPatchTable</a> or equivalent</td></tr>\n     <tr><td class=\"paramname\">fvarChannel</td><td>face-varying channel</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>used to obtain the MTLDevice object and command queue to obtain command buffers from. </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00806_source.html#l01742\">1742</a> of file <a class=\"el\" href=\"a00806_source.html\">mtlComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00689_source.html#l01742\">1742</a> of file <a class=\"el\" href=\"a00689_source.html\">mtlComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a6934af1b25d411774984ecec8c626470\" name=\"a6934af1b25d411774984ecec8c626470\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6934af1b25d411774984ecec8c626470\">&#9670;&#160;</a></span>EvalPatchesVarying() <span class=\"overload\">[1/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -2448,15 +2448,15 @@\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01305.html\">MTLPatchTable</a> or equivalent</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>cached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem.</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>used to obtain the MTLDevice object and command queue to obtain command buffers from. </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00806_source.html#l01496\">1496</a> of file <a class=\"el\" href=\"a00806_source.html\">mtlComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00689_source.html#l01496\">1496</a> of file <a class=\"el\" href=\"a00689_source.html\">mtlComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a3642ea4f1fe75e6f580d195981f67767\" name=\"a3642ea4f1fe75e6f580d195981f67767\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3642ea4f1fe75e6f580d195981f67767\">&#9670;&#160;</a></span>EvalPatchesVarying() <span class=\"overload\">[2/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -2609,15 +2609,15 @@\n     <tr><td class=\"paramname\">patchCoords</td><td>array of locations to be evaluated. must have BindVBO() method returning an array of <a class=\"el\" href=\"a01321.html\" title=\"Coordinates set on a patch table.\">PatchCoord</a> struct in VBO.</td></tr>\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01305.html\">MTLPatchTable</a> or equivalent</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>used to obtain the MTLDevice object and command queue to obtain command buffers from. </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00806_source.html#l01606\">1606</a> of file <a class=\"el\" href=\"a00806_source.html\">mtlComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00689_source.html#l01606\">1606</a> of file <a class=\"el\" href=\"a00689_source.html\">mtlComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"abc5af1154bccd394f7d1aba5d353206e\" name=\"abc5af1154bccd394f7d1aba5d353206e\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abc5af1154bccd394f7d1aba5d353206e\">&#9670;&#160;</a></span>EvalPatchesVarying() <span class=\"overload\">[3/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -2735,15 +2735,15 @@\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01305.html\">MTLPatchTable</a> or equivalent</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>cached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem.</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>used to obtain the MTLDevice object and command queue to obtain command buffers from. </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00806_source.html#l01325\">1325</a> of file <a class=\"el\" href=\"a00806_source.html\">mtlComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00689_source.html#l01325\">1325</a> of file <a class=\"el\" href=\"a00689_source.html\">mtlComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ae4dc813f334cc8b2e59659c0736bf2eb\" name=\"ae4dc813f334cc8b2e59659c0736bf2eb\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae4dc813f334cc8b2e59659c0736bf2eb\">&#9670;&#160;</a></span>EvalPatchesVarying() <span class=\"overload\">[4/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -2854,15 +2854,15 @@\n     <tr><td class=\"paramname\">patchCoords</td><td>array of locations to be evaluated. must have BindVBO() method returning an array of <a class=\"el\" href=\"a01321.html\" title=\"Coordinates set on a patch table.\">PatchCoord</a> struct in VBO.</td></tr>\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01305.html\">MTLPatchTable</a> or equivalent</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>used to obtain the MTLDevice object and command queue to obtain command buffers from. </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00806_source.html#l01407\">1407</a> of file <a class=\"el\" href=\"a00806_source.html\">mtlComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00689_source.html#l01407\">1407</a> of file <a class=\"el\" href=\"a00689_source.html\">mtlComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a974cf5639aed61ef20e1ca50e9f866a6\" name=\"a974cf5639aed61ef20e1ca50e9f866a6\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a974cf5639aed61ef20e1ca50e9f866a6\">&#9670;&#160;</a></span>EvalPatchesVarying() <span class=\"overload\">[5/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -2952,15 +2952,15 @@\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01305.html\">MTLPatchTable</a> or equivalent</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>cached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem.</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>used to obtain the MTLDevice object and command queue to obtain command buffers from. </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00806_source.html#l01192\">1192</a> of file <a class=\"el\" href=\"a00806_source.html\">mtlComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00689_source.html#l01192\">1192</a> of file <a class=\"el\" href=\"a00689_source.html\">mtlComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ae5186e8abdeee89cbeef798c27c6ba6b\" name=\"ae5186e8abdeee89cbeef798c27c6ba6b\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae5186e8abdeee89cbeef798c27c6ba6b\">&#9670;&#160;</a></span>EvalPatchesVarying() <span class=\"overload\">[6/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -3043,15 +3043,15 @@\n     <tr><td class=\"paramname\">patchCoords</td><td>array of locations to be evaluated. must have BindVBO() method returning an array of <a class=\"el\" href=\"a01321.html\" title=\"Coordinates set on a patch table.\">PatchCoord</a> struct in VBO.</td></tr>\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01305.html\">MTLPatchTable</a> or equivalent</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>used to obtain the MTLDevice object and command queue to obtain command buffers from. </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00806_source.html#l01257\">1257</a> of file <a class=\"el\" href=\"a00806_source.html\">mtlComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00689_source.html#l01257\">1257</a> of file <a class=\"el\" href=\"a00689_source.html\">mtlComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a01f08038160f2a7981d56c21a69c0eb9\" name=\"a01f08038160f2a7981d56c21a69c0eb9\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a01f08038160f2a7981d56c21a69c0eb9\">&#9670;&#160;</a></span>EvalStencils() <span class=\"overload\">[1/8]</span></h2>\n \n <div class=\"memitem\">\n@@ -3544,15 +3544,15 @@\n     <tr><td class=\"paramname\">stencilTable</td><td>stencil table to be applied. The table must have MTLBuffer interfaces.</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>cached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem.</td></tr>\n     <tr><td class=\"paramname\">context</td><td>used to obtain the MTLDevice object and command queue to obtain command buffers from. </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00806_source.html#l00312\">312</a> of file <a class=\"el\" href=\"a00806_source.html\">mtlComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00689_source.html#l00312\">312</a> of file <a class=\"el\" href=\"a00689_source.html\">mtlComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a9e01da75168e927a75070da8dd09b06e\" name=\"a9e01da75168e927a75070da8dd09b06e\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9e01da75168e927a75070da8dd09b06e\">&#9670;&#160;</a></span>EvalStencils() <span class=\"overload\">[4/8]</span></h2>\n \n <div class=\"memitem\">\n@@ -3691,15 +3691,15 @@\n     <tr><td class=\"paramname\">dvvDesc</td><td>vertex buffer descriptor for the dvvBuffer</td></tr>\n     <tr><td class=\"paramname\">stencilTable</td><td>stencil table to be applied. The table must have MTLBuffer interfaces.</td></tr>\n     <tr><td class=\"paramname\">context</td><td>used to obtain the MTLDevice object and command queue to obtain command buffers from. </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00806_source.html#l00504\">504</a> of file <a class=\"el\" href=\"a00806_source.html\">mtlComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00689_source.html#l00504\">504</a> of file <a class=\"el\" href=\"a00689_source.html\">mtlComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a47b111c4b8b6a94c2705f04b2d7a095d\" name=\"a47b111c4b8b6a94c2705f04b2d7a095d\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a47b111c4b8b6a94c2705f04b2d7a095d\">&#9670;&#160;</a></span>EvalStencils() <span class=\"overload\">[5/8]</span></h2>\n \n <div class=\"memitem\">\n@@ -3803,15 +3803,15 @@\n     <tr><td class=\"paramname\">stencilTable</td><td>stencil table to be applied. The table must have MTLBuffer interfaces.</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>cached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem.</td></tr>\n     <tr><td class=\"paramname\">context</td><td>used to obtain the MTLDevice object and command queue to obtain command buffers from. </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00806_source.html#l00220\">220</a> of file <a class=\"el\" href=\"a00806_source.html\">mtlComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00689_source.html#l00220\">220</a> of file <a class=\"el\" href=\"a00689_source.html\">mtlComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a8b223dcc2eb6ca7b1389f206b86d3c60\" name=\"a8b223dcc2eb6ca7b1389f206b86d3c60\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8b223dcc2eb6ca7b1389f206b86d3c60\">&#9670;&#160;</a></span>EvalStencils() <span class=\"overload\">[6/8]</span></h2>\n \n <div class=\"memitem\">\n@@ -3908,15 +3908,15 @@\n     <tr><td class=\"paramname\">dvDesc</td><td>vertex buffer descriptor for the dvBuffer</td></tr>\n     <tr><td class=\"paramname\">stencilTable</td><td>stencil table to be applied. The table must have MTLBuffer interfaces.</td></tr>\n     <tr><td class=\"paramname\">context</td><td>used to obtain the MTLDevice object and command queue to obtain command buffers from. </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00806_source.html#l00430\">430</a> of file <a class=\"el\" href=\"a00806_source.html\">mtlComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00689_source.html#l00430\">430</a> of file <a class=\"el\" href=\"a00689_source.html\">mtlComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ab4a74384293a0625c6fc8d4ee6af1314\" name=\"ab4a74384293a0625c6fc8d4ee6af1314\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab4a74384293a0625c6fc8d4ee6af1314\">&#9670;&#160;</a></span>EvalStencils() <span class=\"overload\">[7/8]</span></h2>\n \n <div class=\"memitem\">\n@@ -3995,15 +3995,15 @@\n     <tr><td class=\"paramname\">stencilTable</td><td>stencil table to be applied. The table must have MTLBuffer interfaces.</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>cached compiled instance. Clients are supposed to pre-compile an instance of this class and provide to this function. If it's null the kernel still compute by instantiating on-demand kernel although it may cause a performance problem.</td></tr>\n     <tr><td class=\"paramname\">context</td><td>used to obtain the MTLDevice object and command queue to obtain command buffers from. </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00806_source.html#l00149\">149</a> of file <a class=\"el\" href=\"a00806_source.html\">mtlComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00689_source.html#l00149\">149</a> of file <a class=\"el\" href=\"a00689_source.html\">mtlComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a6bd37be5877b28116c7378aa3d81bab4\" name=\"a6bd37be5877b28116c7378aa3d81bab4\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6bd37be5877b28116c7378aa3d81bab4\">&#9670;&#160;</a></span>EvalStencils() <span class=\"overload\">[8/8]</span></h2>\n \n <div class=\"memitem\">\n@@ -4072,15 +4072,15 @@\n     <tr><td class=\"paramname\">dstDesc</td><td>vertex buffer descriptor for the output buffer</td></tr>\n     <tr><td class=\"paramname\">stencilTable</td><td>stencil table to be applied. The table must have MTLBuffer interfaces.</td></tr>\n     <tr><td class=\"paramname\">context</td><td>used to obtain the MTLDevice object and command queue to obtain command buffers from. </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00806_source.html#l00376\">376</a> of file <a class=\"el\" href=\"a00806_source.html\">mtlComputeEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00689_source.html#l00376\">376</a> of file <a class=\"el\" href=\"a00689_source.html\">mtlComputeEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a7e02041f843415c1056ea2ca3f7d0b62\" name=\"a7e02041f843415c1056ea2ca3f7d0b62\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7e02041f843415c1056ea2ca3f7d0b62\">&#9670;&#160;</a></span>Synchronize()</h2>\n \n <div class=\"memitem\">\n@@ -4105,15 +4105,15 @@\n </div><div class=\"memdoc\">\n \n <p>Wait for the dispatched kernel to finish. </p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/osd/<a class=\"el\" href=\"a00806_source.html\">mtlComputeEvaluator.h</a></li>\n+<li>opensubdiv/osd/<a class=\"el\" href=\"a00689_source.html\">mtlComputeEvaluator.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00912.html\">Osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01293.html\">MTLComputeEvaluator</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01297.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01297.html", "unified_diff": "@@ -95,15 +95,15 @@\n <a href=\"#pub-methods\">Public Member Functions</a> &#124;\n <a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n <a href=\"a01294.html\">List of all members</a>  </div>\n   <div class=\"headertitle\"><div class=\"title\">MTLLegacyGregoryPatchTable Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00893_source.html\">mtlLegacyGregoryPatchTable.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00746_source.html\">mtlLegacyGregoryPatchTable.h</a>&gt;</code></p>\n <div class=\"dynheader\">\n Inheritance diagram for MTLLegacyGregoryPatchTable:</div>\n <div class=\"dyncontent\">\n  <div class=\"center\">\n   <img src=\"a01297.png\" alt=\"\"/>\n  </div></div>\n <table class=\"memberdecls\">\n@@ -128,15 +128,15 @@\n <tr class=\"memitem:a25a5b8f002589cba7fd380492019ece8\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"a01297.html\">MTLLegacyGregoryPatchTable</a> *&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01297.html#a25a5b8f002589cba7fd380492019ece8\">Create</a> (<a class=\"el\" href=\"a00993.html\">Far::PatchTable</a> const *farPatchTable, DEVICE_CONTEXT context)</td></tr>\n <tr class=\"separator:a25a5b8f002589cba7fd380492019ece8\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:ac51e7db7abdd0eaaca33d4947bbe41b4\" id=\"r_ac51e7db7abdd0eaaca33d4947bbe41b4\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static <a class=\"el\" href=\"a01297.html\">MTLLegacyGregoryPatchTable</a> *&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01297.html#ac51e7db7abdd0eaaca33d4947bbe41b4\">Create</a> (<a class=\"el\" href=\"a00993.html\">Far::PatchTable</a> const *farPatchTable, <a class=\"el\" href=\"a01285.html\">MTLContext</a> *context)</td></tr>\n <tr class=\"separator:ac51e7db7abdd0eaaca33d4947bbe41b4\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\">\n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00893_source.html#l00041\">41</a> of file <a class=\"el\" href=\"a00893_source.html\">mtlLegacyGregoryPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00746_source.html#l00041\">41</a> of file <a class=\"el\" href=\"a00746_source.html\">mtlLegacyGregoryPatchTable.h</a>.</p>\n </div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"aed8ca15f9dfcacfcfc31ab1227b61dcc\" name=\"aed8ca15f9dfcacfcfc31ab1227b61dcc\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aed8ca15f9dfcacfcfc31ab1227b61dcc\">&#9670;&#160;</a></span>~MTLLegacyGregoryPatchTable()</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n       <table class=\"memname\">\n@@ -184,15 +184,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00893_source.html#l00048\">48</a> of file <a class=\"el\" href=\"a00893_source.html\">mtlLegacyGregoryPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00746_source.html#l00048\">48</a> of file <a class=\"el\" href=\"a00746_source.html\">mtlLegacyGregoryPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ac51e7db7abdd0eaaca33d4947bbe41b4\" name=\"ac51e7db7abdd0eaaca33d4947bbe41b4\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac51e7db7abdd0eaaca33d4947bbe41b4\">&#9670;&#160;</a></span>Create() <span class=\"overload\">[2/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -248,15 +248,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00893_source.html#l00071\">71</a> of file <a class=\"el\" href=\"a00893_source.html\">mtlLegacyGregoryPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00746_source.html#l00071\">71</a> of file <a class=\"el\" href=\"a00746_source.html\">mtlLegacyGregoryPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a846f5698d4874b41374c2ac6c52c3ea2\" name=\"a846f5698d4874b41374c2ac6c52c3ea2\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a846f5698d4874b41374c2ac6c52c3ea2\">&#9670;&#160;</a></span>GetQuadOffsetsBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -275,15 +275,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00893_source.html#l00066\">66</a> of file <a class=\"el\" href=\"a00893_source.html\">mtlLegacyGregoryPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00746_source.html#l00066\">66</a> of file <a class=\"el\" href=\"a00746_source.html\">mtlLegacyGregoryPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"afffd8d6da44d9c7113d9dc190eefdb3d\" name=\"afffd8d6da44d9c7113d9dc190eefdb3d\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afffd8d6da44d9c7113d9dc190eefdb3d\">&#9670;&#160;</a></span>GetVertexBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -302,15 +302,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00893_source.html#l00056\">56</a> of file <a class=\"el\" href=\"a00893_source.html\">mtlLegacyGregoryPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00746_source.html#l00056\">56</a> of file <a class=\"el\" href=\"a00746_source.html\">mtlLegacyGregoryPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a7e1414cf8ab619f18f532b58f614b123\" name=\"a7e1414cf8ab619f18f532b58f614b123\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7e1414cf8ab619f18f532b58f614b123\">&#9670;&#160;</a></span>GetVertexValenceBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -329,15 +329,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00893_source.html#l00061\">61</a> of file <a class=\"el\" href=\"a00893_source.html\">mtlLegacyGregoryPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00746_source.html#l00061\">61</a> of file <a class=\"el\" href=\"a00746_source.html\">mtlLegacyGregoryPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ad922644c53b64f5b60565065f09cbd17\" name=\"ad922644c53b64f5b60565065f09cbd17\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad922644c53b64f5b60565065f09cbd17\">&#9670;&#160;</a></span>UpdateVertexBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -374,15 +374,15 @@\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/osd/<a class=\"el\" href=\"a00893_source.html\">mtlLegacyGregoryPatchTable.h</a></li>\n+<li>opensubdiv/osd/<a class=\"el\" href=\"a00746_source.html\">mtlLegacyGregoryPatchTable.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00912.html\">Osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01297.html\">MTLLegacyGregoryPatchTable</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01301.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01301.html", "unified_diff": "@@ -97,15 +97,15 @@\n   <div class=\"headertitle\"><div class=\"title\">MTLPatchShaderSource Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Provides shader source which can be used by client code.  \n  <a href=\"a01301.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00851_source.html\">mtlPatchShaderSource.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00734_source.html\">mtlPatchShaderSource.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\n Static Public Member Functions</h2></td></tr>\n <tr class=\"memitem:ad41c6e1dc4a5cd6ee4f33fc5a8e15d1d\" id=\"r_ad41c6e1dc4a5cd6ee4f33fc5a8e15d1d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static std::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01301.html#ad41c6e1dc4a5cd6ee4f33fc5a8e15d1d\">GetPatchBasisShaderSource</a> ()</td></tr>\n <tr class=\"memdesc:ad41c6e1dc4a5cd6ee4f33fc5a8e15d1d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Returns shader source which can be used to evaluate position and first and second derivatives on piecewise parametric patches resulting from subdivision refinement.  <br /></td></tr>\n <tr class=\"separator:ad41c6e1dc4a5cd6ee4f33fc5a8e15d1d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a230efce26a4754c94dbeedd435fe471b\" id=\"r_a230efce26a4754c94dbeedd435fe471b\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static std::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01301.html#a230efce26a4754c94dbeedd435fe471b\">GetPatchDrawingShaderSource</a> ()</td></tr>\n@@ -129,15 +129,15 @@\n <tr class=\"separator:a55538e8657b191955044d983cf1b3649\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a85470a02e193180c7d9c51b2d65962bb\" id=\"r_a85470a02e193180c7d9c51b2d65962bb\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static std::string&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01301.html#a85470a02e193180c7d9c51b2d65962bb\">GetDomainShaderSource</a> (<a class=\"el\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">Far::PatchDescriptor::Type</a> type, <a class=\"el\" href=\"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\">Far::PatchDescriptor::Type</a> fvarType)</td></tr>\n <tr class=\"separator:a85470a02e193180c7d9c51b2d65962bb\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p>Provides shader source which can be used by client code. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00851_source.html#l00040\">40</a> of file <a class=\"el\" href=\"a00851_source.html\">mtlPatchShaderSource.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00734_source.html#l00040\">40</a> of file <a class=\"el\" href=\"a00734_source.html\">mtlPatchShaderSource.h</a>.</p>\n </div><h2 class=\"groupheader\">Member Function Documentation</h2>\n <a id=\"ad5f427d2655d384980715874209345e7\" name=\"ad5f427d2655d384980715874209345e7\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad5f427d2655d384980715874209345e7\">&#9670;&#160;</a></span>GetCommonShaderSource()</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n <table class=\"mlabels\">\n@@ -400,15 +400,15 @@\n \n <p>Deprecated. </p>\n <p>These methods are deprecated. Clients should determine the patch type of a face-varying patch by inspecting the face-varying patch array descriptors. </p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/osd/<a class=\"el\" href=\"a00851_source.html\">mtlPatchShaderSource.h</a></li>\n+<li>opensubdiv/osd/<a class=\"el\" href=\"a00734_source.html\">mtlPatchShaderSource.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00912.html\">Osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01301.html\">MTLPatchShaderSource</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01305.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01305.html", "unified_diff": "@@ -98,15 +98,15 @@\n <a href=\"#pro-methods\">Protected Member Functions</a> &#124;\n <a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n <a href=\"a01302.html\">List of all members</a>  </div>\n   <div class=\"headertitle\"><div class=\"title\">MTLPatchTable Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00809_source.html\">mtlPatchTable.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00776_source.html\">mtlPatchTable.h</a>&gt;</code></p>\n <div class=\"dynheader\">\n Inheritance diagram for MTLPatchTable:</div>\n <div class=\"dyncontent\">\n  <div class=\"center\">\n   <img src=\"a01305.png\" alt=\"\"/>\n  </div></div>\n <table class=\"memberdecls\">\n@@ -170,29 +170,29 @@\n <tr class=\"memitem:a39ae7f640465cdd116c1f87b81308fb5\" id=\"r_a39ae7f640465cdd116c1f87b81308fb5\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; id&lt; MTLBuffer &gt; &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01305.html#a39ae7f640465cdd116c1f87b81308fb5\">_fvarIndexBuffers</a></td></tr>\n <tr class=\"separator:a39ae7f640465cdd116c1f87b81308fb5\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:abb2abbc1ce950284fa16f51583d0ab92\" id=\"r_abb2abbc1ce950284fa16f51583d0ab92\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">std::vector&lt; id&lt; MTLBuffer &gt; &gt;&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01305.html#abb2abbc1ce950284fa16f51583d0ab92\">_fvarParamBuffers</a></td></tr>\n <tr class=\"separator:abb2abbc1ce950284fa16f51583d0ab92\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\">\n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00809_source.html#l00046\">46</a> of file <a class=\"el\" href=\"a00809_source.html\">mtlPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00776_source.html#l00046\">46</a> of file <a class=\"el\" href=\"a00776_source.html\">mtlPatchTable.h</a>.</p>\n </div><h2 class=\"groupheader\">Member Typedef Documentation</h2>\n <a id=\"aa00654dc321a5c8dc370a900b0f404da\" name=\"aa00654dc321a5c8dc370a900b0f404da\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa00654dc321a5c8dc370a900b0f404da\">&#9670;&#160;</a></span>VertexBufferBinding</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">typedef id&lt;MTLBuffer&gt; <a class=\"el\" href=\"a01305.html#aa00654dc321a5c8dc370a900b0f404da\">VertexBufferBinding</a></td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00809_source.html#l00048\">48</a> of file <a class=\"el\" href=\"a00809_source.html\">mtlPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00776_source.html#l00048\">48</a> of file <a class=\"el\" href=\"a00776_source.html\">mtlPatchTable.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"a3f197c2ae3862390d72e7443a2525187\" name=\"a3f197c2ae3862390d72e7443a2525187\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3f197c2ae3862390d72e7443a2525187\">&#9670;&#160;</a></span>MTLPatchTable()</h2>\n \n@@ -296,15 +296,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00809_source.html#l00054\">54</a> of file <a class=\"el\" href=\"a00809_source.html\">mtlPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00776_source.html#l00054\">54</a> of file <a class=\"el\" href=\"a00776_source.html\">mtlPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a24c34d2b403d22f2d3bcfdf6f5005ee4\" name=\"a24c34d2b403d22f2d3bcfdf6f5005ee4\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a24c34d2b403d22f2d3bcfdf6f5005ee4\">&#9670;&#160;</a></span>Create() <span class=\"overload\">[2/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -360,15 +360,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00809_source.html#l00069\">69</a> of file <a class=\"el\" href=\"a00809_source.html\">mtlPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00776_source.html#l00069\">69</a> of file <a class=\"el\" href=\"a00776_source.html\">mtlPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ae4e03248b9615425f7719fde5890796c\" name=\"ae4e03248b9615425f7719fde5890796c\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae4e03248b9615425f7719fde5890796c\">&#9670;&#160;</a></span>GetFVarPatchIndexBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -388,15 +388,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00809_source.html#l00070\">70</a> of file <a class=\"el\" href=\"a00809_source.html\">mtlPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00776_source.html#l00070\">70</a> of file <a class=\"el\" href=\"a00776_source.html\">mtlPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a3d306565eb0af09fa64cabc6d72c6755\" name=\"a3d306565eb0af09fa64cabc6d72c6755\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3d306565eb0af09fa64cabc6d72c6755\">&#9670;&#160;</a></span>GetFVarPatchParamBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -416,15 +416,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00809_source.html#l00071\">71</a> of file <a class=\"el\" href=\"a00809_source.html\">mtlPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00776_source.html#l00071\">71</a> of file <a class=\"el\" href=\"a00776_source.html\">mtlPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aa9be824a572029f3ec1e0c0d6cfecd77\" name=\"aa9be824a572029f3ec1e0c0d6cfecd77\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa9be824a572029f3ec1e0c0d6cfecd77\">&#9670;&#160;</a></span>GetNumFVarChannels()</h2>\n \n <div class=\"memitem\">\n@@ -443,15 +443,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00809_source.html#l00068\">68</a> of file <a class=\"el\" href=\"a00809_source.html\">mtlPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00776_source.html#l00068\">68</a> of file <a class=\"el\" href=\"a00776_source.html\">mtlPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a18e3d09b0c7b7552f8e419e36788166a\" name=\"a18e3d09b0c7b7552f8e419e36788166a\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a18e3d09b0c7b7552f8e419e36788166a\">&#9670;&#160;</a></span>GetPatchArrays()</h2>\n \n <div class=\"memitem\">\n@@ -470,15 +470,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00809_source.html#l00061\">61</a> of file <a class=\"el\" href=\"a00809_source.html\">mtlPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00776_source.html#l00061\">61</a> of file <a class=\"el\" href=\"a00776_source.html\">mtlPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a4c33a50d79c6e811fb78461ce00c6310\" name=\"a4c33a50d79c6e811fb78461ce00c6310\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4c33a50d79c6e811fb78461ce00c6310\">&#9670;&#160;</a></span>GetPatchIndexBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -497,15 +497,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00809_source.html#l00062\">62</a> of file <a class=\"el\" href=\"a00809_source.html\">mtlPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00776_source.html#l00062\">62</a> of file <a class=\"el\" href=\"a00776_source.html\">mtlPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a445098a6db6b14888b3a8bac35967e52\" name=\"a445098a6db6b14888b3a8bac35967e52\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a445098a6db6b14888b3a8bac35967e52\">&#9670;&#160;</a></span>GetPatchParamBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -524,15 +524,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00809_source.html#l00063\">63</a> of file <a class=\"el\" href=\"a00809_source.html\">mtlPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00776_source.html#l00063\">63</a> of file <a class=\"el\" href=\"a00776_source.html\">mtlPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aec45672f51f456fea341d644bcf16434\" name=\"aec45672f51f456fea341d644bcf16434\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aec45672f51f456fea341d644bcf16434\">&#9670;&#160;</a></span>GetVaryingPatchArrays()</h2>\n \n <div class=\"memitem\">\n@@ -551,15 +551,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00809_source.html#l00065\">65</a> of file <a class=\"el\" href=\"a00809_source.html\">mtlPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00776_source.html#l00065\">65</a> of file <a class=\"el\" href=\"a00776_source.html\">mtlPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a2ad5c87b20355961bc623d1c1ece01f8\" name=\"a2ad5c87b20355961bc623d1c1ece01f8\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2ad5c87b20355961bc623d1c1ece01f8\">&#9670;&#160;</a></span>GetVaryingPatchIndexBuffer()</h2>\n \n <div class=\"memitem\">\n@@ -578,15 +578,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00809_source.html#l00066\">66</a> of file <a class=\"el\" href=\"a00809_source.html\">mtlPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00776_source.html#l00066\">66</a> of file <a class=\"el\" href=\"a00776_source.html\">mtlPatchTable.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Member Data Documentation</h2>\n <a id=\"a39ae7f640465cdd116c1f87b81308fb5\" name=\"a39ae7f640465cdd116c1f87b81308fb5\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a39ae7f640465cdd116c1f87b81308fb5\">&#9670;&#160;</a></span>_fvarIndexBuffers</h2>\n \n@@ -603,15 +603,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00809_source.html#l00086\">86</a> of file <a class=\"el\" href=\"a00809_source.html\">mtlPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00776_source.html#l00086\">86</a> of file <a class=\"el\" href=\"a00776_source.html\">mtlPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"abb2abbc1ce950284fa16f51583d0ab92\" name=\"abb2abbc1ce950284fa16f51583d0ab92\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abb2abbc1ce950284fa16f51583d0ab92\">&#9670;&#160;</a></span>_fvarParamBuffers</h2>\n \n <div class=\"memitem\">\n@@ -627,15 +627,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00809_source.html#l00087\">87</a> of file <a class=\"el\" href=\"a00809_source.html\">mtlPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00776_source.html#l00087\">87</a> of file <a class=\"el\" href=\"a00776_source.html\">mtlPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"abce41960eb6bedc82cbf0cb711ea66da\" name=\"abce41960eb6bedc82cbf0cb711ea66da\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abce41960eb6bedc82cbf0cb711ea66da\">&#9670;&#160;</a></span>_fvarPatchArrays</h2>\n \n <div class=\"memitem\">\n@@ -651,15 +651,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00809_source.html#l00085\">85</a> of file <a class=\"el\" href=\"a00809_source.html\">mtlPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00776_source.html#l00085\">85</a> of file <a class=\"el\" href=\"a00776_source.html\">mtlPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"af3b671a26ce6aaead2c7a2633b7cd268\" name=\"af3b671a26ce6aaead2c7a2633b7cd268\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af3b671a26ce6aaead2c7a2633b7cd268\">&#9670;&#160;</a></span>_indexBuffer</h2>\n \n <div class=\"memitem\">\n@@ -675,15 +675,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00809_source.html#l00078\">78</a> of file <a class=\"el\" href=\"a00809_source.html\">mtlPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00776_source.html#l00078\">78</a> of file <a class=\"el\" href=\"a00776_source.html\">mtlPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a5dfb6b58580f2dec58e9b5bfdb4ed9f1\" name=\"a5dfb6b58580f2dec58e9b5bfdb4ed9f1\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5dfb6b58580f2dec58e9b5bfdb4ed9f1\">&#9670;&#160;</a></span>_patchArrays</h2>\n \n <div class=\"memitem\">\n@@ -699,15 +699,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00809_source.html#l00076\">76</a> of file <a class=\"el\" href=\"a00809_source.html\">mtlPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00776_source.html#l00076\">76</a> of file <a class=\"el\" href=\"a00776_source.html\">mtlPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ac8b76e9d03149033d838a528d667e193\" name=\"ac8b76e9d03149033d838a528d667e193\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac8b76e9d03149033d838a528d667e193\">&#9670;&#160;</a></span>_patchParamBuffer</h2>\n \n <div class=\"memitem\">\n@@ -723,15 +723,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00809_source.html#l00079\">79</a> of file <a class=\"el\" href=\"a00809_source.html\">mtlPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00776_source.html#l00079\">79</a> of file <a class=\"el\" href=\"a00776_source.html\">mtlPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"acd99a0391b3b04586b11051fd0f7ed10\" name=\"acd99a0391b3b04586b11051fd0f7ed10\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acd99a0391b3b04586b11051fd0f7ed10\">&#9670;&#160;</a></span>_varyingPatchArrays</h2>\n \n <div class=\"memitem\">\n@@ -747,15 +747,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00809_source.html#l00081\">81</a> of file <a class=\"el\" href=\"a00809_source.html\">mtlPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00776_source.html#l00081\">81</a> of file <a class=\"el\" href=\"a00776_source.html\">mtlPatchTable.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ab65dac5d88eb7b4e1ccc2003f352e802\" name=\"ab65dac5d88eb7b4e1ccc2003f352e802\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab65dac5d88eb7b4e1ccc2003f352e802\">&#9670;&#160;</a></span>_varyingPatchIndexBuffer</h2>\n \n <div class=\"memitem\">\n@@ -771,20 +771,20 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00809_source.html#l00083\">83</a> of file <a class=\"el\" href=\"a00809_source.html\">mtlPatchTable.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00776_source.html#l00083\">83</a> of file <a class=\"el\" href=\"a00776_source.html\">mtlPatchTable.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/osd/<a class=\"el\" href=\"a00809_source.html\">mtlPatchTable.h</a></li>\n+<li>opensubdiv/osd/<a class=\"el\" href=\"a00776_source.html\">mtlPatchTable.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00912.html\">Osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01305.html\">MTLPatchTable</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01309.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01309.html", "unified_diff": "@@ -96,15 +96,15 @@\n <a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n <a href=\"#pro-methods\">Protected Member Functions</a> &#124;\n <a href=\"a01306.html\">List of all members</a>  </div>\n   <div class=\"headertitle\"><div class=\"title\">CPUMTLVertexBuffer Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00884_source.html\">mtlVertexBuffer.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00713_source.html\">mtlVertexBuffer.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\n Public Member Functions</h2></td></tr>\n <tr class=\"memitem:a892b78f6079decdbfa11a14db932c25f\" id=\"r_a892b78f6079decdbfa11a14db932c25f\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01309.html#a892b78f6079decdbfa11a14db932c25f\">UpdateData</a> (const float *src, int startVertex, int numVertices, <a class=\"el\" href=\"a01285.html\">MTLContext</a> *context)</td></tr>\n <tr class=\"separator:a892b78f6079decdbfa11a14db932c25f\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a77cee40767fd4936f20a8f9d9d9ea625\" id=\"r_a77cee40767fd4936f20a8f9d9d9ea625\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">int&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01309.html#a77cee40767fd4936f20a8f9d9d9ea625\">GetNumElements</a> () const</td></tr>\n <tr class=\"separator:a77cee40767fd4936f20a8f9d9d9ea625\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n@@ -127,15 +127,15 @@\n <tr class=\"memitem:a1457f342bc3007386104aa3d29277a67\" id=\"r_a1457f342bc3007386104aa3d29277a67\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01309.html#a1457f342bc3007386104aa3d29277a67\">CPUMTLVertexBuffer</a> (int numElements, int numVertices)</td></tr>\n <tr class=\"separator:a1457f342bc3007386104aa3d29277a67\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:ae765f2922a2e542bd85c1e0c0ae1d169\" id=\"r_ae765f2922a2e542bd85c1e0c0ae1d169\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">bool&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01309.html#ae765f2922a2e542bd85c1e0c0ae1d169\">allocate</a> (<a class=\"el\" href=\"a01285.html\">MTLContext</a> *context)</td></tr>\n <tr class=\"separator:ae765f2922a2e542bd85c1e0c0ae1d169\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\">\n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00884_source.html#l00039\">39</a> of file <a class=\"el\" href=\"a00884_source.html\">mtlVertexBuffer.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00713_source.html#l00039\">39</a> of file <a class=\"el\" href=\"a00713_source.html\">mtlVertexBuffer.h</a>.</p>\n </div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"a1457f342bc3007386104aa3d29277a67\" name=\"a1457f342bc3007386104aa3d29277a67\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1457f342bc3007386104aa3d29277a67\">&#9670;&#160;</a></span>CPUMTLVertexBuffer()</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n <table class=\"mlabels\">\n@@ -251,15 +251,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00884_source.html#l00058\">58</a> of file <a class=\"el\" href=\"a00884_source.html\">mtlVertexBuffer.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00713_source.html#l00058\">58</a> of file <a class=\"el\" href=\"a00713_source.html\">mtlVertexBuffer.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a2d6cb1babaae310f9c4c7fb45e0d33bc\" name=\"a2d6cb1babaae310f9c4c7fb45e0d33bc\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2d6cb1babaae310f9c4c7fb45e0d33bc\">&#9670;&#160;</a></span>Create()</h2>\n \n <div class=\"memitem\">\n@@ -320,15 +320,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00884_source.html#l00045\">45</a> of file <a class=\"el\" href=\"a00884_source.html\">mtlVertexBuffer.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00713_source.html#l00045\">45</a> of file <a class=\"el\" href=\"a00713_source.html\">mtlVertexBuffer.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aaf4a32b8a414eff77000c584c2015cb7\" name=\"aaf4a32b8a414eff77000c584c2015cb7\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aaf4a32b8a414eff77000c584c2015cb7\">&#9670;&#160;</a></span>GetNumVertices()</h2>\n \n <div class=\"memitem\">\n@@ -347,15 +347,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00884_source.html#l00050\">50</a> of file <a class=\"el\" href=\"a00884_source.html\">mtlVertexBuffer.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00713_source.html#l00050\">50</a> of file <a class=\"el\" href=\"a00713_source.html\">mtlVertexBuffer.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a892b78f6079decdbfa11a14db932c25f\" name=\"a892b78f6079decdbfa11a14db932c25f\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a892b78f6079decdbfa11a14db932c25f\">&#9670;&#160;</a></span>UpdateData()</h2>\n \n <div class=\"memitem\">\n@@ -392,15 +392,15 @@\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/osd/<a class=\"el\" href=\"a00884_source.html\">mtlVertexBuffer.h</a></li>\n+<li>opensubdiv/osd/<a class=\"el\" href=\"a00713_source.html\">mtlVertexBuffer.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00912.html\">Osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01309.html\">CPUMTLVertexBuffer</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01313.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01313.html", "unified_diff": "@@ -94,15 +94,15 @@\n   <div class=\"summary\">\n <a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n <a href=\"a01310.html\">List of all members</a>  </div>\n   <div class=\"headertitle\"><div class=\"title\">OmpEvaluator Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00854_source.html\">ompEvaluator.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00707_source.html\">ompEvaluator.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\n Static Public Member Functions</h2></td></tr>\n <tr class=\"memitem:a76ac331e29d26f25d0d807b74c1a838b\" id=\"r_a76ac331e29d26f25d0d807b74c1a838b\"><td class=\"memTemplParams\" colspan=\"2\">template&lt;typename SRC_BUFFER , typename DST_BUFFER , typename STENCIL_TABLE &gt; </td></tr>\n <tr class=\"memitem:a76ac331e29d26f25d0d807b74c1a838b\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01313.html#a76ac331e29d26f25d0d807b74c1a838b\">EvalStencils</a> (SRC_BUFFER *srcBuffer, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;srcDesc, DST_BUFFER *dstBuffer, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDesc, STENCIL_TABLE const *stencilTable, const <a class=\"el\" href=\"a01313.html\">OmpEvaluator</a> *instance=NULL, void *deviceContext=NULL)</td></tr>\n <tr class=\"memdesc:a76ac331e29d26f25d0d807b74c1a838b\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Generic static eval stencils function. This function has a same signature as other device kernels have so that it can be called in the same way from OsdMesh template interface.  <br /></td></tr>\n <tr class=\"separator:a76ac331e29d26f25d0d807b74c1a838b\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n@@ -172,15 +172,15 @@\n <tr class=\"separator:a9689407af718de4263562bb3a760c1dd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:ad58f2120e84fdd3f92d7cd861e97822d\" id=\"r_ad58f2120e84fdd3f92d7cd861e97822d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01313.html#ad58f2120e84fdd3f92d7cd861e97822d\">SetNumThreads</a> (int numThreads)</td></tr>\n <tr class=\"memdesc:ad58f2120e84fdd3f92d7cd861e97822d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Deprecated. Client code should initialize OpenMP.  <br /></td></tr>\n <tr class=\"separator:ad58f2120e84fdd3f92d7cd861e97822d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\">\n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00854_source.html#l00039\">39</a> of file <a class=\"el\" href=\"a00854_source.html\">ompEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00707_source.html#l00039\">39</a> of file <a class=\"el\" href=\"a00707_source.html\">ompEvaluator.h</a>.</p>\n </div><h2 class=\"groupheader\">Member Function Documentation</h2>\n <a id=\"a7b556148d6ef2e04fbe99677e3a87e91\" name=\"a7b556148d6ef2e04fbe99677e3a87e91\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7b556148d6ef2e04fbe99677e3a87e91\">&#9670;&#160;</a></span>EvalPatches() <span class=\"overload\">[1/6]</span></h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n <table class=\"mlabels\">\n@@ -718,15 +718,15 @@\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01173.html\" title=\"Cpu patch table.\">CpuPatchTable</a> or equivalent XXX: currently <a class=\"el\" href=\"a00993.html\" title=\"Container for arrays of parametric patches.\">Far::PatchTable</a> can't be used due to interface mismatch</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>not used in the omp evaluator</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the omp evaluator </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00854_source.html#l00607\">607</a> of file <a class=\"el\" href=\"a00854_source.html\">ompEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00707_source.html#l00607\">607</a> of file <a class=\"el\" href=\"a00707_source.html\">ompEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a8ec09b3a6962ce219f54fb5edec53640\" name=\"a8ec09b3a6962ce219f54fb5edec53640\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8ec09b3a6962ce219f54fb5edec53640\">&#9670;&#160;</a></span>EvalPatches() <span class=\"overload\">[5/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -844,15 +844,15 @@\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01173.html\" title=\"Cpu patch table.\">CpuPatchTable</a> or equivalent XXX: currently <a class=\"el\" href=\"a00993.html\" title=\"Container for arrays of parametric patches.\">Far::PatchTable</a> can't be used due to interface mismatch</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>not used in the omp evaluator</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the omp evaluator </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00854_source.html#l00517\">517</a> of file <a class=\"el\" href=\"a00854_source.html\">ompEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00707_source.html#l00517\">517</a> of file <a class=\"el\" href=\"a00707_source.html\">ompEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"abbbc45452da270eafbeb163a0e78df03\" name=\"abbbc45452da270eafbeb163a0e78df03\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abbbc45452da270eafbeb163a0e78df03\">&#9670;&#160;</a></span>EvalPatches() <span class=\"overload\">[6/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -945,15 +945,15 @@\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01173.html\" title=\"Cpu patch table.\">CpuPatchTable</a> or equivalent XXX: currently <a class=\"el\" href=\"a00993.html\" title=\"Container for arrays of parametric patches.\">Far::PatchTable</a> can't be used due to interface mismatch</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>not used in the omp evaluator</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the omp evaluator </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00854_source.html#l00454\">454</a> of file <a class=\"el\" href=\"a00854_source.html\">ompEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00707_source.html#l00454\">454</a> of file <a class=\"el\" href=\"a00707_source.html\">ompEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ae4eb5ea878fcae370e0e38dbad433a6a\" name=\"ae4eb5ea878fcae370e0e38dbad433a6a\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae4eb5ea878fcae370e0e38dbad433a6a\">&#9670;&#160;</a></span>EvalPatchesFaceVarying() <span class=\"overload\">[1/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -1120,15 +1120,15 @@\n     <tr><td class=\"paramname\">fvarChannel</td><td>face-varying channel</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>not used in the omp evaluator</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the omp evaluator </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00854_source.html#l01188\">1188</a> of file <a class=\"el\" href=\"a00854_source.html\">ompEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00707_source.html#l01188\">1188</a> of file <a class=\"el\" href=\"a00707_source.html\">ompEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a708ed2ca5a7497a5679cd660546ec4da\" name=\"a708ed2ca5a7497a5679cd660546ec4da\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a708ed2ca5a7497a5679cd660546ec4da\">&#9670;&#160;</a></span>EvalPatchesFaceVarying() <span class=\"overload\">[2/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -1253,15 +1253,15 @@\n     <tr><td class=\"paramname\">fvarChannel</td><td>face-varying channel</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>not used in the omp evaluator</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the omp evaluator </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00854_source.html#l01100\">1100</a> of file <a class=\"el\" href=\"a00854_source.html\">ompEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00707_source.html#l01100\">1100</a> of file <a class=\"el\" href=\"a00707_source.html\">ompEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a0fa8e0e28a0ceff063bd07e098abd645\" name=\"a0fa8e0e28a0ceff063bd07e098abd645\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0fa8e0e28a0ceff063bd07e098abd645\">&#9670;&#160;</a></span>EvalPatchesFaceVarying() <span class=\"overload\">[3/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -1358,15 +1358,15 @@\n     <tr><td class=\"paramname\">fvarChannel</td><td>face-varying channel</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>not used in the omp evaluator</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the omp evaluator </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00854_source.html#l01034\">1034</a> of file <a class=\"el\" href=\"a00854_source.html\">ompEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00707_source.html#l01034\">1034</a> of file <a class=\"el\" href=\"a00707_source.html\">ompEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a5e2b53fce1097e9ec639828256aa44f1\" name=\"a5e2b53fce1097e9ec639828256aa44f1\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5e2b53fce1097e9ec639828256aa44f1\">&#9670;&#160;</a></span>EvalPatchesVarying() <span class=\"overload\">[1/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -1526,15 +1526,15 @@\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01173.html\" title=\"Cpu patch table.\">CpuPatchTable</a> or equivalent XXX: currently <a class=\"el\" href=\"a00993.html\" title=\"Container for arrays of parametric patches.\">Far::PatchTable</a> can't be used due to interface mismatch</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>not used in the omp evaluator</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the omp evaluator </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00854_source.html#l00971\">971</a> of file <a class=\"el\" href=\"a00854_source.html\">ompEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00707_source.html#l00971\">971</a> of file <a class=\"el\" href=\"a00707_source.html\">ompEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a95dcfa63c8f686a8a30b46dcc563d5fe\" name=\"a95dcfa63c8f686a8a30b46dcc563d5fe\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a95dcfa63c8f686a8a30b46dcc563d5fe\">&#9670;&#160;</a></span>EvalPatchesVarying() <span class=\"overload\">[2/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -1652,15 +1652,15 @@\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01173.html\" title=\"Cpu patch table.\">CpuPatchTable</a> or equivalent XXX: currently <a class=\"el\" href=\"a00993.html\" title=\"Container for arrays of parametric patches.\">Far::PatchTable</a> can't be used due to interface mismatch</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>not used in the omp evaluator</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the omp evaluator </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00854_source.html#l00886\">886</a> of file <a class=\"el\" href=\"a00854_source.html\">ompEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00707_source.html#l00886\">886</a> of file <a class=\"el\" href=\"a00707_source.html\">ompEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a6e57edf33d097abc92fbafe7e4ae9224\" name=\"a6e57edf33d097abc92fbafe7e4ae9224\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6e57edf33d097abc92fbafe7e4ae9224\">&#9670;&#160;</a></span>EvalPatchesVarying() <span class=\"overload\">[3/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -1750,15 +1750,15 @@\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01173.html\" title=\"Cpu patch table.\">CpuPatchTable</a> or equivalent XXX: currently <a class=\"el\" href=\"a00993.html\" title=\"Container for arrays of parametric patches.\">Far::PatchTable</a> can't be used due to interface mismatch</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>not used in the omp evaluator</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the omp evaluator </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00854_source.html#l00823\">823</a> of file <a class=\"el\" href=\"a00854_source.html\">ompEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00707_source.html#l00823\">823</a> of file <a class=\"el\" href=\"a00707_source.html\">ompEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a4345e3659b7fb82f23dd51c688179ce3\" name=\"a4345e3659b7fb82f23dd51c688179ce3\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4345e3659b7fb82f23dd51c688179ce3\">&#9670;&#160;</a></span>EvalStencils() <span class=\"overload\">[1/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -2354,15 +2354,15 @@\n     <tr><td class=\"paramname\">stencilTable</td><td><a class=\"el\" href=\"a01065.html\" title=\"Stencil table class wrapping the template for compatibility.\">Far::StencilTable</a> or equivalent</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>not used in the omp kernel (declared as a typed pointer to prevent undesirable template resolution)</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the omp kernel </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00854_source.html#l00303\">303</a> of file <a class=\"el\" href=\"a00854_source.html\">ompEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00707_source.html#l00303\">303</a> of file <a class=\"el\" href=\"a00707_source.html\">ompEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a6b577cee117522a91402eb4237e5e913\" name=\"a6b577cee117522a91402eb4237e5e913\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a6b577cee117522a91402eb4237e5e913\">&#9670;&#160;</a></span>EvalStencils() <span class=\"overload\">[5/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -2466,15 +2466,15 @@\n     <tr><td class=\"paramname\">stencilTable</td><td><a class=\"el\" href=\"a01065.html\" title=\"Stencil table class wrapping the template for compatibility.\">Far::StencilTable</a> or equivalent</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>not used in the omp kernel (declared as a typed pointer to prevent undesirable template resolution)</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the omp kernel </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00854_source.html#l00168\">168</a> of file <a class=\"el\" href=\"a00854_source.html\">ompEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00707_source.html#l00168\">168</a> of file <a class=\"el\" href=\"a00707_source.html\">ompEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a76ac331e29d26f25d0d807b74c1a838b\" name=\"a76ac331e29d26f25d0d807b74c1a838b\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a76ac331e29d26f25d0d807b74c1a838b\">&#9670;&#160;</a></span>EvalStencils() <span class=\"overload\">[6/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -2553,15 +2553,15 @@\n     <tr><td class=\"paramname\">stencilTable</td><td><a class=\"el\" href=\"a01065.html\" title=\"Stencil table class wrapping the template for compatibility.\">Far::StencilTable</a> or equivalent</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>not used in the omp kernel (declared as a typed pointer to prevent undesirable template resolution)</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the omp kernel </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00854_source.html#l00072\">72</a> of file <a class=\"el\" href=\"a00854_source.html\">ompEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00707_source.html#l00072\">72</a> of file <a class=\"el\" href=\"a00707_source.html\">ompEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ad58f2120e84fdd3f92d7cd861e97822d\" name=\"ad58f2120e84fdd3f92d7cd861e97822d\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad58f2120e84fdd3f92d7cd861e97822d\">&#9670;&#160;</a></span>SetNumThreads()</h2>\n \n <div class=\"memitem\">\n@@ -2615,15 +2615,15 @@\n <hr  />\n <p>Other methods</p>\n <hr  />\n  \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/osd/<a class=\"el\" href=\"a00854_source.html\">ompEvaluator.h</a></li>\n+<li>opensubdiv/osd/<a class=\"el\" href=\"a00707_source.html\">ompEvaluator.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00912.html\">Osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01313.html\">OmpEvaluator</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01317.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01317.html", "unified_diff": "@@ -94,15 +94,15 @@\n   <div class=\"summary\">\n <a href=\"#pub-static-methods\">Static Public Member Functions</a> &#124;\n <a href=\"a01314.html\">List of all members</a>  </div>\n   <div class=\"headertitle\"><div class=\"title\">TbbEvaluator Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00857_source.html\">tbbEvaluator.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00731_source.html\">tbbEvaluator.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-static-methods\" name=\"pub-static-methods\"></a>\n Static Public Member Functions</h2></td></tr>\n <tr class=\"memitem:a1083776ed758e8a1ebd8915eb68c5010\" id=\"r_a1083776ed758e8a1ebd8915eb68c5010\"><td class=\"memTemplParams\" colspan=\"2\">template&lt;typename SRC_BUFFER , typename DST_BUFFER , typename STENCIL_TABLE &gt; </td></tr>\n <tr class=\"memitem:a1083776ed758e8a1ebd8915eb68c5010\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">static bool&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01317.html#a1083776ed758e8a1ebd8915eb68c5010\">EvalStencils</a> (SRC_BUFFER *srcBuffer, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;srcDesc, DST_BUFFER *dstBuffer, <a class=\"el\" href=\"a01141.html\">BufferDescriptor</a> const &amp;dstDesc, STENCIL_TABLE const *stencilTable, <a class=\"el\" href=\"a01317.html\">TbbEvaluator</a> const *instance=NULL, void *deviceContext=NULL)</td></tr>\n <tr class=\"memdesc:a1083776ed758e8a1ebd8915eb68c5010\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Generic static eval stencils function. This function has a same signature as other device kernels have so that it can be called in the same way from OsdMesh template interface.  <br /></td></tr>\n <tr class=\"separator:a1083776ed758e8a1ebd8915eb68c5010\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n@@ -173,15 +173,15 @@\n <tr class=\"separator:a9689407af718de4263562bb3a760c1dd\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:ad58f2120e84fdd3f92d7cd861e97822d\" id=\"r_ad58f2120e84fdd3f92d7cd861e97822d\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">static void&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01317.html#ad58f2120e84fdd3f92d7cd861e97822d\">SetNumThreads</a> (int numThreads)</td></tr>\n <tr class=\"memdesc:ad58f2120e84fdd3f92d7cd861e97822d\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Deprecated. Client code should initialize TBB.  <br /></td></tr>\n <tr class=\"separator:ad58f2120e84fdd3f92d7cd861e97822d\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\">\n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00857_source.html#l00039\">39</a> of file <a class=\"el\" href=\"a00857_source.html\">tbbEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00731_source.html#l00039\">39</a> of file <a class=\"el\" href=\"a00731_source.html\">tbbEvaluator.h</a>.</p>\n </div><h2 class=\"groupheader\">Member Function Documentation</h2>\n <a id=\"a7b556148d6ef2e04fbe99677e3a87e91\" name=\"a7b556148d6ef2e04fbe99677e3a87e91\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7b556148d6ef2e04fbe99677e3a87e91\">&#9670;&#160;</a></span>EvalPatches() <span class=\"overload\">[1/6]</span></h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n <table class=\"mlabels\">\n@@ -719,15 +719,15 @@\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01173.html\" title=\"Cpu patch table.\">CpuPatchTable</a> or equivalent XXX: currently <a class=\"el\" href=\"a00993.html\" title=\"Container for arrays of parametric patches.\">Far::PatchTable</a> can't be used due to interface mismatch</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>not used in the cpu evaluator</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the cpu evaluator </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00857_source.html#l00607\">607</a> of file <a class=\"el\" href=\"a00857_source.html\">tbbEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00731_source.html#l00607\">607</a> of file <a class=\"el\" href=\"a00731_source.html\">tbbEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ab78e3701e650dfc99c2beb39c7e611a4\" name=\"ab78e3701e650dfc99c2beb39c7e611a4\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab78e3701e650dfc99c2beb39c7e611a4\">&#9670;&#160;</a></span>EvalPatches() <span class=\"overload\">[5/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -845,15 +845,15 @@\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01173.html\" title=\"Cpu patch table.\">CpuPatchTable</a> or equivalent XXX: currently <a class=\"el\" href=\"a00993.html\" title=\"Container for arrays of parametric patches.\">Far::PatchTable</a> can't be used due to interface mismatch</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>not used in the cpu evaluator</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the cpu evaluator </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00857_source.html#l00517\">517</a> of file <a class=\"el\" href=\"a00857_source.html\">tbbEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00731_source.html#l00517\">517</a> of file <a class=\"el\" href=\"a00731_source.html\">tbbEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a16b9e4c7e07040ae42e3d49454393f5f\" name=\"a16b9e4c7e07040ae42e3d49454393f5f\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a16b9e4c7e07040ae42e3d49454393f5f\">&#9670;&#160;</a></span>EvalPatches() <span class=\"overload\">[6/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -946,15 +946,15 @@\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01173.html\" title=\"Cpu patch table.\">CpuPatchTable</a> or equivalent XXX: currently <a class=\"el\" href=\"a00993.html\" title=\"Container for arrays of parametric patches.\">Far::PatchTable</a> can't be used due to interface mismatch</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>not used in the cpu evaluator</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the cpu evaluator </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00857_source.html#l00454\">454</a> of file <a class=\"el\" href=\"a00857_source.html\">tbbEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00731_source.html#l00454\">454</a> of file <a class=\"el\" href=\"a00731_source.html\">tbbEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"af8ac6af5dd3993a38da263eec54d83b0\" name=\"af8ac6af5dd3993a38da263eec54d83b0\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af8ac6af5dd3993a38da263eec54d83b0\">&#9670;&#160;</a></span>EvalPatchesFaceVarying() <span class=\"overload\">[1/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -1121,15 +1121,15 @@\n     <tr><td class=\"paramname\">fvarChannel</td><td>face-varying channel</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>not used in the cpu evaluator</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the cpu evaluator </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00857_source.html#l01188\">1188</a> of file <a class=\"el\" href=\"a00857_source.html\">tbbEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00731_source.html#l01188\">1188</a> of file <a class=\"el\" href=\"a00731_source.html\">tbbEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aaa27f47cddc2a42796014b8da00633fd\" name=\"aaa27f47cddc2a42796014b8da00633fd\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aaa27f47cddc2a42796014b8da00633fd\">&#9670;&#160;</a></span>EvalPatchesFaceVarying() <span class=\"overload\">[2/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -1254,15 +1254,15 @@\n     <tr><td class=\"paramname\">fvarChannel</td><td>face-varying channel</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>not used in the cpu evaluator</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the cpu evaluator </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00857_source.html#l01100\">1100</a> of file <a class=\"el\" href=\"a00857_source.html\">tbbEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00731_source.html#l01100\">1100</a> of file <a class=\"el\" href=\"a00731_source.html\">tbbEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"abeb5f95d1536bd3a7cadf440c2db96af\" name=\"abeb5f95d1536bd3a7cadf440c2db96af\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#abeb5f95d1536bd3a7cadf440c2db96af\">&#9670;&#160;</a></span>EvalPatchesFaceVarying() <span class=\"overload\">[3/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -1359,15 +1359,15 @@\n     <tr><td class=\"paramname\">fvarChannel</td><td>face-varying channel</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>not used in the cpu evaluator</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the cpu evaluator </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00857_source.html#l01034\">1034</a> of file <a class=\"el\" href=\"a00857_source.html\">tbbEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00731_source.html#l01034\">1034</a> of file <a class=\"el\" href=\"a00731_source.html\">tbbEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aa3171fe53d673ceca93eb75372c3d7c4\" name=\"aa3171fe53d673ceca93eb75372c3d7c4\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa3171fe53d673ceca93eb75372c3d7c4\">&#9670;&#160;</a></span>EvalPatchesVarying() <span class=\"overload\">[1/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -1527,15 +1527,15 @@\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01173.html\" title=\"Cpu patch table.\">CpuPatchTable</a> or equivalent XXX: currently <a class=\"el\" href=\"a00993.html\" title=\"Container for arrays of parametric patches.\">Far::PatchTable</a> can't be used due to interface mismatch</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>not used in the cpu evaluator</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the cpu evaluator </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00857_source.html#l00971\">971</a> of file <a class=\"el\" href=\"a00857_source.html\">tbbEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00731_source.html#l00971\">971</a> of file <a class=\"el\" href=\"a00731_source.html\">tbbEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a52f3dbfeaec0360f92ac83464c7c2e6c\" name=\"a52f3dbfeaec0360f92ac83464c7c2e6c\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a52f3dbfeaec0360f92ac83464c7c2e6c\">&#9670;&#160;</a></span>EvalPatchesVarying() <span class=\"overload\">[2/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -1653,15 +1653,15 @@\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01173.html\" title=\"Cpu patch table.\">CpuPatchTable</a> or equivalent XXX: currently <a class=\"el\" href=\"a00993.html\" title=\"Container for arrays of parametric patches.\">Far::PatchTable</a> can't be used due to interface mismatch</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>not used in the cpu evaluator</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the cpu evaluator </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00857_source.html#l00886\">886</a> of file <a class=\"el\" href=\"a00857_source.html\">tbbEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00731_source.html#l00886\">886</a> of file <a class=\"el\" href=\"a00731_source.html\">tbbEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"afb857c7493452a91389f40021a03c45d\" name=\"afb857c7493452a91389f40021a03c45d\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afb857c7493452a91389f40021a03c45d\">&#9670;&#160;</a></span>EvalPatchesVarying() <span class=\"overload\">[3/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -1751,15 +1751,15 @@\n     <tr><td class=\"paramname\">patchTable</td><td><a class=\"el\" href=\"a01173.html\" title=\"Cpu patch table.\">CpuPatchTable</a> or equivalent XXX: currently <a class=\"el\" href=\"a00993.html\" title=\"Container for arrays of parametric patches.\">Far::PatchTable</a> can't be used due to interface mismatch</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>not used in the cpu evaluator</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the cpu evaluator </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00857_source.html#l00823\">823</a> of file <a class=\"el\" href=\"a00857_source.html\">tbbEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00731_source.html#l00823\">823</a> of file <a class=\"el\" href=\"a00731_source.html\">tbbEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a4345e3659b7fb82f23dd51c688179ce3\" name=\"a4345e3659b7fb82f23dd51c688179ce3\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4345e3659b7fb82f23dd51c688179ce3\">&#9670;&#160;</a></span>EvalStencils() <span class=\"overload\">[1/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -2355,15 +2355,15 @@\n     <tr><td class=\"paramname\">stencilTable</td><td><a class=\"el\" href=\"a01065.html\" title=\"Stencil table class wrapping the template for compatibility.\">Far::StencilTable</a> or equivalent</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>not used in the tbb kernel (declared as a typed pointer to prevent undesirable template resolution)</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the tbb kernel </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00857_source.html#l00303\">303</a> of file <a class=\"el\" href=\"a00857_source.html\">tbbEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00731_source.html#l00303\">303</a> of file <a class=\"el\" href=\"a00731_source.html\">tbbEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"af04c6d999c9f014e93711ceb9097e2a0\" name=\"af04c6d999c9f014e93711ceb9097e2a0\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af04c6d999c9f014e93711ceb9097e2a0\">&#9670;&#160;</a></span>EvalStencils() <span class=\"overload\">[5/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -2467,15 +2467,15 @@\n     <tr><td class=\"paramname\">stencilTable</td><td><a class=\"el\" href=\"a01065.html\" title=\"Stencil table class wrapping the template for compatibility.\">Far::StencilTable</a> or equivalent</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>not used in the tbb kernel (declared as a typed pointer to prevent undesirable template resolution)</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the tbb kernel </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00857_source.html#l00168\">168</a> of file <a class=\"el\" href=\"a00857_source.html\">tbbEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00731_source.html#l00168\">168</a> of file <a class=\"el\" href=\"a00731_source.html\">tbbEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a1083776ed758e8a1ebd8915eb68c5010\" name=\"a1083776ed758e8a1ebd8915eb68c5010\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a1083776ed758e8a1ebd8915eb68c5010\">&#9670;&#160;</a></span>EvalStencils() <span class=\"overload\">[6/6]</span></h2>\n \n <div class=\"memitem\">\n@@ -2554,15 +2554,15 @@\n     <tr><td class=\"paramname\">stencilTable</td><td><a class=\"el\" href=\"a01065.html\" title=\"Stencil table class wrapping the template for compatibility.\">Far::StencilTable</a> or equivalent</td></tr>\n     <tr><td class=\"paramname\">instance</td><td>not used in the tbb kernel (declared as a typed pointer to prevent undesirable template resolution)</td></tr>\n     <tr><td class=\"paramname\">deviceContext</td><td>not used in the tbb kernel </td></tr>\n   </table>\n   </dd>\n </dl>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00857_source.html#l00072\">72</a> of file <a class=\"el\" href=\"a00857_source.html\">tbbEvaluator.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00731_source.html#l00072\">72</a> of file <a class=\"el\" href=\"a00731_source.html\">tbbEvaluator.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ad58f2120e84fdd3f92d7cd861e97822d\" name=\"ad58f2120e84fdd3f92d7cd861e97822d\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad58f2120e84fdd3f92d7cd861e97822d\">&#9670;&#160;</a></span>SetNumThreads()</h2>\n \n <div class=\"memitem\">\n@@ -2624,15 +2624,15 @@\n <hr  />\n <p>Other methods</p>\n <hr  />\n  \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/osd/<a class=\"el\" href=\"a00857_source.html\">tbbEvaluator.h</a></li>\n+<li>opensubdiv/osd/<a class=\"el\" href=\"a00731_source.html\">tbbEvaluator.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00912.html\">Osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01317.html\">TbbEvaluator</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01333.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01333.html", "unified_diff": "@@ -101,15 +101,15 @@\n   <div class=\"headertitle\"><div class=\"title\">Crease Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>Types, constants and utilities related to semi-sharp creasing &ndash; whose implementation is independent of the subdivision scheme.  \n  <a href=\"a01333.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00731_source.html\">crease.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00869_source.html\">crease.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\n Public Types</h2></td></tr>\n <tr class=\"memitem:a11fcd51ef86118f65e603c1474377a78\" id=\"r_a11fcd51ef86118f65e603c1474377a78\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78\">Rule</a> { <br />\n &#160;&#160;<a class=\"el\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78ab299aefb26013a79d52191a7887fea53\">RULE_UNKNOWN</a> = 0\n , <br />\n &#160;&#160;<a class=\"el\" href=\"a01333.html#a11fcd51ef86118f65e603c1474377a78a61d137f866997ed3693e3fcad76def5f\">RULE_SMOOTH</a> = (1 &lt;&lt; 0)\n@@ -180,15 +180,15 @@\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p>Types, constants and utilities related to semi-sharp creasing &ndash; whose implementation is independent of the subdivision scheme. </p>\n <p><a class=\"el\" href=\"a01333.html\" title=\"Types, constants and utilities related to semi-sharp creasing \u2013 whose implementation is independent o...\">Crease</a> is intended to be a light-weight, trivially constructed class that computes crease-related properties &ndash; typically sharpness values and associated interpolation weights. An instance of <a class=\"el\" href=\"a01333.html\" title=\"Types, constants and utilities related to semi-sharp creasing \u2013 whose implementation is independent o...\">Crease</a> is defined with a set of options that include current and future variations that will impact computations involving sharpness values.</p>\n <p>The <a class=\"el\" href=\"a01333.html\" title=\"Types, constants and utilities related to semi-sharp creasing \u2013 whose implementation is independent o...\">Crease</a> methods do not use topological neighborhoods as input. The methods here rely more on the sharpness values and less on the topology, so we choose to work directly with the sharpness values. We also follow the trend of using primitive arrays in the interface to encourage local gathering for re-use.</p>\n <p>Note on the need for and use of sharpness values: In general, mask queries rely on the sharpness values. The common case of a smooth vertex, when known, avoids the need to inspect them, but unless the rules are well understood, users will be expected to provided them &ndash; particularly when they expect the mask queries to do all of the work (just determining if a vertex is smooth will require inspection of incident edge sharpness). Mask queries will occasionally require the subdivided sharpness values around the child vertex. So users will be expected to either provide them up front when known, or to be gathered on demand. Any implementation of subdivision with creasing cannot avoid subdividing the sharpness values first, so keeping them available for re-use is a worthwhile consideration. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00731_source.html#l00062\">62</a> of file <a class=\"el\" href=\"a00731_source.html\">crease.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00869_source.html#l00062\">62</a> of file <a class=\"el\" href=\"a00869_source.html\">crease.h</a>.</p>\n </div><h2 class=\"groupheader\">Member Enumeration Documentation</h2>\n <a id=\"a11fcd51ef86118f65e603c1474377a78\" name=\"a11fcd51ef86118f65e603c1474377a78\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a11fcd51ef86118f65e603c1474377a78\">&#9670;&#160;</a></span>Rule</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n       <table class=\"memname\">\n@@ -202,15 +202,15 @@\n <tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"a11fcd51ef86118f65e603c1474377a78ab299aefb26013a79d52191a7887fea53\" name=\"a11fcd51ef86118f65e603c1474377a78ab299aefb26013a79d52191a7887fea53\"></a>RULE_UNKNOWN&#160;</td><td class=\"fielddoc\"></td></tr>\n <tr><td class=\"fieldname\"><a id=\"a11fcd51ef86118f65e603c1474377a78a61d137f866997ed3693e3fcad76def5f\" name=\"a11fcd51ef86118f65e603c1474377a78a61d137f866997ed3693e3fcad76def5f\"></a>RULE_SMOOTH&#160;</td><td class=\"fielddoc\"></td></tr>\n <tr><td class=\"fieldname\"><a id=\"a11fcd51ef86118f65e603c1474377a78a43469c29d8579a63bc1d6247d2624799\" name=\"a11fcd51ef86118f65e603c1474377a78a43469c29d8579a63bc1d6247d2624799\"></a>RULE_DART&#160;</td><td class=\"fielddoc\"></td></tr>\n <tr><td class=\"fieldname\"><a id=\"a11fcd51ef86118f65e603c1474377a78a966fa1ae8aeb8587c498cf6a92cc3335\" name=\"a11fcd51ef86118f65e603c1474377a78a966fa1ae8aeb8587c498cf6a92cc3335\"></a>RULE_CREASE&#160;</td><td class=\"fielddoc\"></td></tr>\n <tr><td class=\"fieldname\"><a id=\"a11fcd51ef86118f65e603c1474377a78a27ed0595212af48db763e461bfdc29ef\" name=\"a11fcd51ef86118f65e603c1474377a78a27ed0595212af48db763e461bfdc29ef\"></a>RULE_CORNER&#160;</td><td class=\"fielddoc\"></td></tr>\n </table>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00731_source.html#l00082\">82</a> of file <a class=\"el\" href=\"a00731_source.html\">crease.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00869_source.html#l00082\">82</a> of file <a class=\"el\" href=\"a00869_source.html\">crease.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"a9659c3f2c73b80d9dc22763a6054079b\" name=\"a9659c3f2c73b80d9dc22763a6054079b\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9659c3f2c73b80d9dc22763a6054079b\">&#9670;&#160;</a></span>Crease() <span class=\"overload\">[1/2]</span></h2>\n \n@@ -230,15 +230,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00731_source.html#l00091\">91</a> of file <a class=\"el\" href=\"a00731_source.html\">crease.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00869_source.html#l00091\">91</a> of file <a class=\"el\" href=\"a00869_source.html\">crease.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a75d5d7e54170ccf6481932916e0fa9c1\" name=\"a75d5d7e54170ccf6481932916e0fa9c1\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a75d5d7e54170ccf6481932916e0fa9c1\">&#9670;&#160;</a></span>Crease() <span class=\"overload\">[2/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -258,15 +258,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00731_source.html#l00092\">92</a> of file <a class=\"el\" href=\"a00731_source.html\">crease.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00869_source.html#l00092\">92</a> of file <a class=\"el\" href=\"a00869_source.html\">crease.h</a>.</p>\n \n </div>\n </div>\n <a id=\"af6737d6f9be18766c7a993cc9da108a8\" name=\"af6737d6f9be18766c7a993cc9da108a8\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af6737d6f9be18766c7a993cc9da108a8\">&#9670;&#160;</a></span>~Crease()</h2>\n \n <div class=\"memitem\">\n@@ -285,15 +285,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00731_source.html#l00093\">93</a> of file <a class=\"el\" href=\"a00731_source.html\">crease.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00869_source.html#l00093\">93</a> of file <a class=\"el\" href=\"a00869_source.html\">crease.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Member Function Documentation</h2>\n <a id=\"ab13f654f25ef7628396fd902291b8f96\" name=\"ab13f654f25ef7628396fd902291b8f96\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab13f654f25ef7628396fd902291b8f96\">&#9670;&#160;</a></span>ComputeFractionalWeightAtVertex()</h2>\n \n@@ -362,15 +362,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00731_source.html#l00207\">207</a> of file <a class=\"el\" href=\"a00731_source.html\">crease.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00869_source.html#l00207\">207</a> of file <a class=\"el\" href=\"a00869_source.html\">crease.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a41ebb75d28c5973328e0e3883495aeba\" name=\"a41ebb75d28c5973328e0e3883495aeba\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a41ebb75d28c5973328e0e3883495aeba\">&#9670;&#160;</a></span>DetermineVertexVertexRule() <span class=\"overload\">[1/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -469,15 +469,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00731_source.html#l00228\">228</a> of file <a class=\"el\" href=\"a00731_source.html\">crease.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00869_source.html#l00228\">228</a> of file <a class=\"el\" href=\"a00869_source.html\">crease.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a0538e02ac31e9f1118abdd1f272e7982\" name=\"a0538e02ac31e9f1118abdd1f272e7982\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0538e02ac31e9f1118abdd1f272e7982\">&#9670;&#160;</a></span>IsInfinite()</h2>\n \n <div class=\"memitem\">\n@@ -497,15 +497,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00731_source.html#l00072\">72</a> of file <a class=\"el\" href=\"a00731_source.html\">crease.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00869_source.html#l00072\">72</a> of file <a class=\"el\" href=\"a00869_source.html\">crease.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a694f45be997ab00786d1b80f5bd39d8f\" name=\"a694f45be997ab00786d1b80f5bd39d8f\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a694f45be997ab00786d1b80f5bd39d8f\">&#9670;&#160;</a></span>IsSemiSharp()</h2>\n \n <div class=\"memitem\">\n@@ -525,15 +525,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00731_source.html#l00073\">73</a> of file <a class=\"el\" href=\"a00731_source.html\">crease.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00869_source.html#l00073\">73</a> of file <a class=\"el\" href=\"a00869_source.html\">crease.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ac9bfeebd44b0e47bb06c119c3b4ed750\" name=\"ac9bfeebd44b0e47bb06c119c3b4ed750\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac9bfeebd44b0e47bb06c119c3b4ed750\">&#9670;&#160;</a></span>IsSharp()</h2>\n \n <div class=\"memitem\">\n@@ -553,15 +553,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00731_source.html#l00071\">71</a> of file <a class=\"el\" href=\"a00731_source.html\">crease.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00869_source.html#l00071\">71</a> of file <a class=\"el\" href=\"a00869_source.html\">crease.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a4620253f6da5407f55c2b95a727e0f03\" name=\"a4620253f6da5407f55c2b95a727e0f03\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4620253f6da5407f55c2b95a727e0f03\">&#9670;&#160;</a></span>IsSmooth()</h2>\n \n <div class=\"memitem\">\n@@ -581,15 +581,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">static</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00731_source.html#l00070\">70</a> of file <a class=\"el\" href=\"a00731_source.html\">crease.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00869_source.html#l00070\">70</a> of file <a class=\"el\" href=\"a00869_source.html\">crease.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a5dfa6810f510fac1ec621fc9e6b530c4\" name=\"a5dfa6810f510fac1ec621fc9e6b530c4\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5dfa6810f510fac1ec621fc9e6b530c4\">&#9670;&#160;</a></span>IsUniform()</h2>\n \n <div class=\"memitem\">\n@@ -608,15 +608,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00731_source.html#l00095\">95</a> of file <a class=\"el\" href=\"a00731_source.html\">crease.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00869_source.html#l00095\">95</a> of file <a class=\"el\" href=\"a00869_source.html\">crease.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aa4ac191c71a85e2929036f27377fea59\" name=\"aa4ac191c71a85e2929036f27377fea59\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa4ac191c71a85e2929036f27377fea59\">&#9670;&#160;</a></span>SharpenBoundaryEdge()</h2>\n \n <div class=\"memitem\">\n@@ -637,15 +637,15 @@\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n <p>Optional sharp features: Since options treat certain topological features as infinitely sharp &ndash; boundaries or (in future) non-manifold features &ndash; sharpness values should be adjusted before use. The following methods will adjust (by return) specific values according to the options applied. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00731_source.html#l00189\">189</a> of file <a class=\"el\" href=\"a00731_source.html\">crease.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00869_source.html#l00189\">189</a> of file <a class=\"el\" href=\"a00869_source.html\">crease.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a121d7a72bfdf61c89df7447a52ffb848\" name=\"a121d7a72bfdf61c89df7447a52ffb848\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a121d7a72bfdf61c89df7447a52ffb848\">&#9670;&#160;</a></span>SharpenBoundaryVertex()</h2>\n \n <div class=\"memitem\">\n@@ -665,15 +665,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00731_source.html#l00200\">200</a> of file <a class=\"el\" href=\"a00731_source.html\">crease.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00869_source.html#l00200\">200</a> of file <a class=\"el\" href=\"a00869_source.html\">crease.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ab37ffb609adbeb8b5b8242b572d4d0de\" name=\"ab37ffb609adbeb8b5b8242b572d4d0de\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab37ffb609adbeb8b5b8242b572d4d0de\">&#9670;&#160;</a></span>SubdivideEdgeSharpnessAtVertex()</h2>\n \n <div class=\"memitem\">\n@@ -766,15 +766,15 @@\n </div><div class=\"memdoc\">\n <p>Sharpness subdivision: The computation of a Uniform subdivided sharpness value is as follows:</p><ul>\n <li>Smooth edges or verts stay Smooth</li>\n <li>Sharp edges or verts stay Sharp</li>\n <li>semi-sharp edges or verts are decremented by 1.0 but for Chaikin (and potentially future non-uniform schemes that improve upon it) the computation is more involved. In the case of edges in particular, the sharpness of a child edge is determined by the sharpness in the neighborhood of the end vertex corresponding to the child. For this reason, an alternative to subdividing sharpness that computes all child edges around a vertex is given. </li>\n </ul>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00731_source.html#l00216\">216</a> of file <a class=\"el\" href=\"a00731_source.html\">crease.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00869_source.html#l00216\">216</a> of file <a class=\"el\" href=\"a00869_source.html\">crease.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a03f4bc921d6ee6fad4440ac134e92e36\" name=\"a03f4bc921d6ee6fad4440ac134e92e36\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a03f4bc921d6ee6fad4440ac134e92e36\">&#9670;&#160;</a></span>SubdivideVertexSharpness()</h2>\n \n <div class=\"memitem\">\n@@ -794,15 +794,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00731_source.html#l00222\">222</a> of file <a class=\"el\" href=\"a00731_source.html\">crease.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00869_source.html#l00222\">222</a> of file <a class=\"el\" href=\"a00869_source.html\">crease.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Member Data Documentation</h2>\n <a id=\"a3bd7c586b7bf49ac3b1053ba789dae07\" name=\"a3bd7c586b7bf49ac3b1053ba789dae07\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3bd7c586b7bf49ac3b1053ba789dae07\">&#9670;&#160;</a></span>SHARPNESS_INFINITE</h2>\n \n@@ -819,15 +819,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00731_source.html#l00068\">68</a> of file <a class=\"el\" href=\"a00731_source.html\">crease.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00869_source.html#l00068\">68</a> of file <a class=\"el\" href=\"a00869_source.html\">crease.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a2f54449f8a8ca460b0ad468b1aa1b4e0\" name=\"a2f54449f8a8ca460b0ad468b1aa1b4e0\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2f54449f8a8ca460b0ad468b1aa1b4e0\">&#9670;&#160;</a></span>SHARPNESS_SMOOTH</h2>\n \n <div class=\"memitem\">\n@@ -844,20 +844,20 @@\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">static</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n <p>Constants and related queries of sharpness values: </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00731_source.html#l00067\">67</a> of file <a class=\"el\" href=\"a00731_source.html\">crease.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00869_source.html#l00067\">67</a> of file <a class=\"el\" href=\"a00869_source.html\">crease.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/sdc/<a class=\"el\" href=\"a00731_source.html\">crease.h</a></li>\n+<li>opensubdiv/sdc/<a class=\"el\" href=\"a00869_source.html\">crease.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00913.html\">Sdc</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01333.html\">Crease</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01337.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01337.html", "unified_diff": "@@ -98,15 +98,15 @@\n   <div class=\"headertitle\"><div class=\"title\">Options Class Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n <p>All supported options applying to subdivision scheme.  \n  <a href=\"a01337.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00734_source.html\">options.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00860_source.html\">options.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\n Public Types</h2></td></tr>\n <tr class=\"memitem:acbf78f1a6abfc8db080ef7fb3c3f417e\" id=\"r_acbf78f1a6abfc8db080ef7fb3c3f417e\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">enum &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01337.html#acbf78f1a6abfc8db080ef7fb3c3f417e\">VtxBoundaryInterpolation</a> { <br />\n &#160;&#160;<a class=\"el\" href=\"a01337.html#acbf78f1a6abfc8db080ef7fb3c3f417ea5d15ed470f1f0ecce0549282de54a3ba\">VTX_BOUNDARY_NONE</a> = 0\n , <br />\n &#160;&#160;<a class=\"el\" href=\"a01337.html#acbf78f1a6abfc8db080ef7fb3c3f417ea9240987283549b42eeb262f088b68fdf\">VTX_BOUNDARY_EDGE_ONLY</a>\n@@ -175,15 +175,15 @@\n <tr class=\"separator:a4a4af2e71173f0acc6f26b139ebaa592\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><p>All supported options applying to subdivision scheme. </p>\n <p>The <a class=\"el\" href=\"a01337.html\" title=\"All supported options applying to subdivision scheme.\">Options</a> class contains all supported options that can be applied to a subdivision scheme to affect the shape of the limit surface. These differ from approximations that may be applied at a higher level, i.e. options to limit the level of feature adaptive subdivision, options to ignore fractional creasing, or creasing entirely, etc. These options define the shape of a particular limit surface, including the \"shape\" of primitive variable data associated with it.</p>\n <p>The intent is that these sets of options be defined at a high level and propagated into the lowest-level computation in support of each subdivision scheme. Ideally it remains a set of bit-fields (essentially an int) and so remains light weight and easily passed around by value. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00734_source.html#l00051\">51</a> of file <a class=\"el\" href=\"a00734_source.html\">options.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00860_source.html#l00051\">51</a> of file <a class=\"el\" href=\"a00860_source.html\">options.h</a>.</p>\n </div><h2 class=\"groupheader\">Member Enumeration Documentation</h2>\n <a id=\"a16ec522dc0398bf1435a912cd669ffb0\" name=\"a16ec522dc0398bf1435a912cd669ffb0\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a16ec522dc0398bf1435a912cd669ffb0\">&#9670;&#160;</a></span>CreasingMethod</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n       <table class=\"memname\">\n@@ -195,15 +195,15 @@\n <table class=\"fieldtable\">\n <tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"a16ec522dc0398bf1435a912cd669ffb0a10f2956db48d2975424be2e52ebd544d\" name=\"a16ec522dc0398bf1435a912cd669ffb0a10f2956db48d2975424be2e52ebd544d\"></a>CREASE_UNIFORM&#160;</td><td class=\"fielddoc\"><p>Catmark rule. </p>\n </td></tr>\n <tr><td class=\"fieldname\"><a id=\"a16ec522dc0398bf1435a912cd669ffb0a1e31a583663dd65a7b2feffeb24268b5\" name=\"a16ec522dc0398bf1435a912cd669ffb0a1e31a583663dd65a7b2feffeb24268b5\"></a>CREASE_CHAIKIN&#160;</td><td class=\"fielddoc\"><p>Chaikin rule. </p>\n </td></tr>\n </table>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00734_source.html#l00068\">68</a> of file <a class=\"el\" href=\"a00734_source.html\">options.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00860_source.html#l00068\">68</a> of file <a class=\"el\" href=\"a00860_source.html\">options.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a5b87eaca6ca0833462c9d4ad84df167b\" name=\"a5b87eaca6ca0833462c9d4ad84df167b\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5b87eaca6ca0833462c9d4ad84df167b\">&#9670;&#160;</a></span>FVarLinearInterpolation</h2>\n \n <div class=\"memitem\">\n@@ -225,15 +225,15 @@\n </td></tr>\n <tr><td class=\"fieldname\"><a id=\"a5b87eaca6ca0833462c9d4ad84df167ba60007144d7e8d50ed9f907badecf8ea1\" name=\"a5b87eaca6ca0833462c9d4ad84df167ba60007144d7e8d50ed9f907badecf8ea1\"></a>FVAR_LINEAR_BOUNDARIES&#160;</td><td class=\"fielddoc\"><p>sharpen all boundaries (\"always sharp\") </p>\n </td></tr>\n <tr><td class=\"fieldname\"><a id=\"a5b87eaca6ca0833462c9d4ad84df167ba8d4df083104973fad1479109988e0387\" name=\"a5b87eaca6ca0833462c9d4ad84df167ba8d4df083104973fad1479109988e0387\"></a>FVAR_LINEAR_ALL&#160;</td><td class=\"fielddoc\"><p>bilinear interpolation (\"bilinear\") </p>\n </td></tr>\n </table>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00734_source.html#l00060\">60</a> of file <a class=\"el\" href=\"a00734_source.html\">options.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00860_source.html#l00060\">60</a> of file <a class=\"el\" href=\"a00860_source.html\">options.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a10fe8c2b78e5c59377614876a362c38b\" name=\"a10fe8c2b78e5c59377614876a362c38b\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a10fe8c2b78e5c59377614876a362c38b\">&#9670;&#160;</a></span>TriangleSubdivision</h2>\n \n <div class=\"memitem\">\n@@ -247,15 +247,15 @@\n <table class=\"fieldtable\">\n <tr><th colspan=\"2\">Enumerator</th></tr><tr><td class=\"fieldname\"><a id=\"a10fe8c2b78e5c59377614876a362c38ba2dd7b5ddb5288776e48d86049e56e730\" name=\"a10fe8c2b78e5c59377614876a362c38ba2dd7b5ddb5288776e48d86049e56e730\"></a>TRI_SUB_CATMARK&#160;</td><td class=\"fielddoc\"><p>Catmark weights (Catmark scheme only) </p>\n </td></tr>\n <tr><td class=\"fieldname\"><a id=\"a10fe8c2b78e5c59377614876a362c38baf222ead5fa4875f2ea2794c2d765a87d\" name=\"a10fe8c2b78e5c59377614876a362c38baf222ead5fa4875f2ea2794c2d765a87d\"></a>TRI_SUB_SMOOTH&#160;</td><td class=\"fielddoc\"><p>\"smooth triangle\" weights (Catmark scheme only) </p>\n </td></tr>\n </table>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00734_source.html#l00072\">72</a> of file <a class=\"el\" href=\"a00734_source.html\">options.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00860_source.html#l00072\">72</a> of file <a class=\"el\" href=\"a00860_source.html\">options.h</a>.</p>\n \n </div>\n </div>\n <a id=\"acbf78f1a6abfc8db080ef7fb3c3f417e\" name=\"acbf78f1a6abfc8db080ef7fb3c3f417e\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acbf78f1a6abfc8db080ef7fb3c3f417e\">&#9670;&#160;</a></span>VtxBoundaryInterpolation</h2>\n \n <div class=\"memitem\">\n@@ -271,15 +271,15 @@\n </td></tr>\n <tr><td class=\"fieldname\"><a id=\"acbf78f1a6abfc8db080ef7fb3c3f417ea9240987283549b42eeb262f088b68fdf\" name=\"acbf78f1a6abfc8db080ef7fb3c3f417ea9240987283549b42eeb262f088b68fdf\"></a>VTX_BOUNDARY_EDGE_ONLY&#160;</td><td class=\"fielddoc\"><p>all boundary edges sharpened and interpolated </p>\n </td></tr>\n <tr><td class=\"fieldname\"><a id=\"acbf78f1a6abfc8db080ef7fb3c3f417eac6e5f52f358d3b6d62cc2b708a5a8757\" name=\"acbf78f1a6abfc8db080ef7fb3c3f417eac6e5f52f358d3b6d62cc2b708a5a8757\"></a>VTX_BOUNDARY_EDGE_AND_CORNER&#160;</td><td class=\"fielddoc\"><p>all boundary edges and corner vertices sharpened and interpolated </p>\n </td></tr>\n </table>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00734_source.html#l00053\">53</a> of file <a class=\"el\" href=\"a00734_source.html\">options.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00860_source.html#l00053\">53</a> of file <a class=\"el\" href=\"a00860_source.html\">options.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"a28d39a844c3a37ab61d32ab7c6352f09\" name=\"a28d39a844c3a37ab61d32ab7c6352f09\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a28d39a844c3a37ab61d32ab7c6352f09\">&#9670;&#160;</a></span>Options()</h2>\n \n@@ -299,15 +299,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00734_source.html#l00079\">79</a> of file <a class=\"el\" href=\"a00734_source.html\">options.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00860_source.html#l00079\">79</a> of file <a class=\"el\" href=\"a00860_source.html\">options.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Member Function Documentation</h2>\n <a id=\"a17dfce050325c0054b6e2fa422cb62b1\" name=\"a17dfce050325c0054b6e2fa422cb62b1\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a17dfce050325c0054b6e2fa422cb62b1\">&#9670;&#160;</a></span>GetCreasingMethod()</h2>\n \n@@ -329,15 +329,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Get edge crease rule. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00734_source.html#l00101\">101</a> of file <a class=\"el\" href=\"a00734_source.html\">options.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00860_source.html#l00101\">101</a> of file <a class=\"el\" href=\"a00860_source.html\">options.h</a>.</p>\n \n </div>\n </div>\n <a id=\"acab24306782f101827103b87bbe4b8dd\" name=\"acab24306782f101827103b87bbe4b8dd\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acab24306782f101827103b87bbe4b8dd\">&#9670;&#160;</a></span>GetFVarLinearInterpolation()</h2>\n \n <div class=\"memitem\">\n@@ -358,15 +358,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Get face-varying interpolation rule. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00734_source.html#l00095\">95</a> of file <a class=\"el\" href=\"a00734_source.html\">options.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00860_source.html#l00095\">95</a> of file <a class=\"el\" href=\"a00860_source.html\">options.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a17cbc048b495cdae28ce8ab569da02f4\" name=\"a17cbc048b495cdae28ce8ab569da02f4\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a17cbc048b495cdae28ce8ab569da02f4\">&#9670;&#160;</a></span>GetTriangleSubdivision()</h2>\n \n <div class=\"memitem\">\n@@ -387,15 +387,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Get triangle subdivision weights rule (Catmark scheme only !) </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00734_source.html#l00107\">107</a> of file <a class=\"el\" href=\"a00734_source.html\">options.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00860_source.html#l00107\">107</a> of file <a class=\"el\" href=\"a00860_source.html\">options.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a590338ee8b544306b970a0c1445cd01f\" name=\"a590338ee8b544306b970a0c1445cd01f\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a590338ee8b544306b970a0c1445cd01f\">&#9670;&#160;</a></span>GetVtxBoundaryInterpolation()</h2>\n \n <div class=\"memitem\">\n@@ -416,15 +416,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Get vertex boundary interpolation rule. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00734_source.html#l00089\">89</a> of file <a class=\"el\" href=\"a00734_source.html\">options.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00860_source.html#l00089\">89</a> of file <a class=\"el\" href=\"a00860_source.html\">options.h</a>.</p>\n \n </div>\n </div>\n <a id=\"afc9b634a338ac29f528ec02ea0e90f10\" name=\"afc9b634a338ac29f528ec02ea0e90f10\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afc9b634a338ac29f528ec02ea0e90f10\">&#9670;&#160;</a></span>SetCreasingMethod()</h2>\n \n <div class=\"memitem\">\n@@ -446,15 +446,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Set edge crease rule. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00734_source.html#l00104\">104</a> of file <a class=\"el\" href=\"a00734_source.html\">options.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00860_source.html#l00104\">104</a> of file <a class=\"el\" href=\"a00860_source.html\">options.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a2b335eb227194b4fc6fcec7f3c4b25ce\" name=\"a2b335eb227194b4fc6fcec7f3c4b25ce\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2b335eb227194b4fc6fcec7f3c4b25ce\">&#9670;&#160;</a></span>SetFVarLinearInterpolation()</h2>\n \n <div class=\"memitem\">\n@@ -476,15 +476,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Set face-varying interpolation rule. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00734_source.html#l00098\">98</a> of file <a class=\"el\" href=\"a00734_source.html\">options.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00860_source.html#l00098\">98</a> of file <a class=\"el\" href=\"a00860_source.html\">options.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a4a4af2e71173f0acc6f26b139ebaa592\" name=\"a4a4af2e71173f0acc6f26b139ebaa592\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4a4af2e71173f0acc6f26b139ebaa592\">&#9670;&#160;</a></span>SetTriangleSubdivision()</h2>\n \n <div class=\"memitem\">\n@@ -506,15 +506,15 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Set triangle subdivision weights rule (Catmark scheme only !) </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00734_source.html#l00110\">110</a> of file <a class=\"el\" href=\"a00734_source.html\">options.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00860_source.html#l00110\">110</a> of file <a class=\"el\" href=\"a00860_source.html\">options.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a70997d63dc747e55154e2ab4b4354141\" name=\"a70997d63dc747e55154e2ab4b4354141\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a70997d63dc747e55154e2ab4b4354141\">&#9670;&#160;</a></span>SetVtxBoundaryInterpolation()</h2>\n \n <div class=\"memitem\">\n@@ -536,20 +536,20 @@\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n <p>Set vertex boundary interpolation rule. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00734_source.html#l00092\">92</a> of file <a class=\"el\" href=\"a00734_source.html\">options.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00860_source.html#l00092\">92</a> of file <a class=\"el\" href=\"a00860_source.html\">options.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/sdc/<a class=\"el\" href=\"a00734_source.html\">options.h</a></li>\n+<li>opensubdiv/sdc/<a class=\"el\" href=\"a00860_source.html\">options.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00913.html\">Sdc</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01337.html\">Options</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01341.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01341.html", "unified_diff": "@@ -101,15 +101,15 @@\n </div><!--header-->\n <div class=\"contents\">\n \n <p><a class=\"el\" href=\"a01341.html\" title=\"Scheme is a class template which provides all implementation for the subdivision schemes supported by...\">Scheme</a> is a class template which provides all implementation for the subdivision schemes supported by <a class=\"el\" href=\"a00905.html\">OpenSubdiv</a> through specializations of the methods of each. An instance of Scheme&lt;SCHEME_TYPE&gt; includes a set of <a class=\"el\" href=\"a01337.html\" title=\"All supported options applying to subdivision scheme.\">Options</a> that will dictate the variable aspects of its behavior. <br  />\n   \n  <a href=\"a01341.html#details\">More...</a></p>\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00743_source.html\">scheme.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00863_source.html\">scheme.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n <tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01345.html\">LocalMask</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\n@@ -273,15 +273,15 @@\n <div class=\"textblock\"><div class=\"compoundTemplParams\">template&lt;<a class=\"el\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833d\">SchemeType</a> SCHEME_TYPE&gt;<br />\n class OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme&lt; SCHEME_TYPE &gt;</div><p><a class=\"el\" href=\"a01341.html\" title=\"Scheme is a class template which provides all implementation for the subdivision schemes supported by...\">Scheme</a> is a class template which provides all implementation for the subdivision schemes supported by <a class=\"el\" href=\"a00905.html\">OpenSubdiv</a> through specializations of the methods of each. An instance of Scheme&lt;SCHEME_TYPE&gt; includes a set of <a class=\"el\" href=\"a01337.html\" title=\"All supported options applying to subdivision scheme.\">Options</a> that will dictate the variable aspects of its behavior. <br  />\n  </p>\n <p>The primary purpose of <a class=\"el\" href=\"a01341.html\" title=\"Scheme is a class template which provides all implementation for the subdivision schemes supported by...\">Scheme</a> is to provide the mask weights for vertices generated by subdivision. Methods to determine the masks are given topological neighborhoods from which to compute the appropriate weights for neighboring components. While these neighborhoods may require sharpness values for creasing, the computation of subdivided crease values is independent of the scheme type and is also made available through the <a class=\"el\" href=\"a01333.html\" title=\"Types, constants and utilities related to semi-sharp creasing \u2013 whose implementation is independent o...\">Crease</a> class.</p>\n <p>Mask queries are assisted by two utility classes &ndash; a Neighborhood class defining the set of relevant data in the topological neighborhood of the vertex being subdivided, and a Mask class into which the associated mask weights will be stored. Depending on where and how these queries are used, more or less information may be available. See the details of the Neighborhood classes as appropriate initialization of them is critical. It is generally best to initialize them with what data is known and accessible for immediate and efficient retrieval, but subclasses can be created to gather it lazily if desired. <br  />\n  </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00743_source.html#l00066\">66</a> of file <a class=\"el\" href=\"a00743_source.html\">scheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00863_source.html#l00066\">66</a> of file <a class=\"el\" href=\"a00863_source.html\">scheme.h</a>.</p>\n </div><h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"a5c142c4d9c6f3be66bd018713591ffcb\" name=\"a5c142c4d9c6f3be66bd018713591ffcb\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5c142c4d9c6f3be66bd018713591ffcb\">&#9670;&#160;</a></span>Scheme() <span class=\"overload\">[1/2]</span></h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n <div class=\"memtemplate\">\n@@ -300,15 +300,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00743_source.html#l00070\">70</a> of file <a class=\"el\" href=\"a00743_source.html\">scheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00863_source.html#l00070\">70</a> of file <a class=\"el\" href=\"a00863_source.html\">scheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"add94f921c43fa14d886adfbcdcc00211\" name=\"add94f921c43fa14d886adfbcdcc00211\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#add94f921c43fa14d886adfbcdcc00211\">&#9670;&#160;</a></span>Scheme() <span class=\"overload\">[2/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -330,15 +330,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00743_source.html#l00072\">72</a> of file <a class=\"el\" href=\"a00743_source.html\">scheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00863_source.html#l00072\">72</a> of file <a class=\"el\" href=\"a00863_source.html\">scheme.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Member Function Documentation</h2>\n <a id=\"ab38c56ce6121aed94f2796bf5df894be\" name=\"ab38c56ce6121aed94f2796bf5df894be\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab38c56ce6121aed94f2796bf5df894be\">&#9670;&#160;</a></span>assignCornerLimitMask() <span class=\"overload\">[1/4]</span></h2>\n \n@@ -369,15 +369,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00740_source.html#l00084\">84</a> of file <a class=\"el\" href=\"a00740_source.html\">bilinearScheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00875_source.html#l00084\">84</a> of file <a class=\"el\" href=\"a00875_source.html\">bilinearScheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ab38c56ce6121aed94f2796bf5df894be\" name=\"ab38c56ce6121aed94f2796bf5df894be\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab38c56ce6121aed94f2796bf5df894be\">&#9670;&#160;</a></span>assignCornerLimitMask() <span class=\"overload\">[2/4]</span></h2>\n \n <div class=\"memitem\">\n@@ -407,15 +407,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00737_source.html#l00208\">208</a> of file <a class=\"el\" href=\"a00737_source.html\">catmarkScheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00866_source.html#l00208\">208</a> of file <a class=\"el\" href=\"a00866_source.html\">catmarkScheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ab38c56ce6121aed94f2796bf5df894be\" name=\"ab38c56ce6121aed94f2796bf5df894be\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ab38c56ce6121aed94f2796bf5df894be\">&#9670;&#160;</a></span>assignCornerLimitMask() <span class=\"overload\">[3/4]</span></h2>\n \n <div class=\"memitem\">\n@@ -445,15 +445,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00728_source.html#l00223\">223</a> of file <a class=\"el\" href=\"a00728_source.html\">loopScheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00223\">223</a> of file <a class=\"el\" href=\"a00872_source.html\">loopScheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aa2821d365ea8135d6316c0f926f87ccb\" name=\"aa2821d365ea8135d6316c0f926f87ccb\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aa2821d365ea8135d6316c0f926f87ccb\">&#9670;&#160;</a></span>assignCornerLimitMask() <span class=\"overload\">[4/4]</span></h2>\n \n <div class=\"memitem\">\n@@ -529,15 +529,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00740_source.html#l00118\">118</a> of file <a class=\"el\" href=\"a00740_source.html\">bilinearScheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00875_source.html#l00118\">118</a> of file <a class=\"el\" href=\"a00875_source.html\">bilinearScheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ae9ee7f11f51ec6ff8c43ab0729454b54\" name=\"ae9ee7f11f51ec6ff8c43ab0729454b54\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae9ee7f11f51ec6ff8c43ab0729454b54\">&#9670;&#160;</a></span>assignCornerLimitTangentMasks() <span class=\"overload\">[2/4]</span></h2>\n \n <div class=\"memitem\">\n@@ -619,15 +619,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00737_source.html#l00301\">301</a> of file <a class=\"el\" href=\"a00737_source.html\">catmarkScheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00866_source.html#l00301\">301</a> of file <a class=\"el\" href=\"a00866_source.html\">catmarkScheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"adfe86b1bf62ea328adddf4e5c4b01049\" name=\"adfe86b1bf62ea328adddf4e5c4b01049\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adfe86b1bf62ea328adddf4e5c4b01049\">&#9670;&#160;</a></span>assignCornerLimitTangentMasks() <span class=\"overload\">[4/4]</span></h2>\n \n <div class=\"memitem\">\n@@ -663,15 +663,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00728_source.html#l00386\">386</a> of file <a class=\"el\" href=\"a00728_source.html\">loopScheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00386\">386</a> of file <a class=\"el\" href=\"a00872_source.html\">loopScheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a69f605f0483a055ef68c29fd0d9d10d2\" name=\"a69f605f0483a055ef68c29fd0d9d10d2\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a69f605f0483a055ef68c29fd0d9d10d2\">&#9670;&#160;</a></span>assignCornerMaskForVertex() <span class=\"overload\">[1/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -701,15 +701,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00728_source.html#l00142\">142</a> of file <a class=\"el\" href=\"a00728_source.html\">loopScheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00142\">142</a> of file <a class=\"el\" href=\"a00872_source.html\">loopScheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a77644f69ede03fa62222d60a99970238\" name=\"a77644f69ede03fa62222d60a99970238\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a77644f69ede03fa62222d60a99970238\">&#9670;&#160;</a></span>assignCornerMaskForVertex() <span class=\"overload\">[2/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -743,15 +743,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00743_source.html#l00331\">331</a> of file <a class=\"el\" href=\"a00743_source.html\">scheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00863_source.html#l00331\">331</a> of file <a class=\"el\" href=\"a00863_source.html\">scheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a7c9316f7212d3ea41db7f3f1a66cc7e5\" name=\"a7c9316f7212d3ea41db7f3f1a66cc7e5\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7c9316f7212d3ea41db7f3f1a66cc7e5\">&#9670;&#160;</a></span>assignCreaseLimitMask() <span class=\"overload\">[1/4]</span></h2>\n \n <div class=\"memitem\">\n@@ -833,15 +833,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00737_source.html#l00221\">221</a> of file <a class=\"el\" href=\"a00737_source.html\">catmarkScheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00866_source.html#l00221\">221</a> of file <a class=\"el\" href=\"a00866_source.html\">catmarkScheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ad439ba00463a7af51cf821692d6cc2e3\" name=\"ad439ba00463a7af51cf821692d6cc2e3\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad439ba00463a7af51cf821692d6cc2e3\">&#9670;&#160;</a></span>assignCreaseLimitMask() <span class=\"overload\">[3/4]</span></h2>\n \n <div class=\"memitem\">\n@@ -877,15 +877,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00728_source.html#l00236\">236</a> of file <a class=\"el\" href=\"a00728_source.html\">loopScheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00236\">236</a> of file <a class=\"el\" href=\"a00872_source.html\">loopScheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"afb316654a26523ceeed5600b759377b2\" name=\"afb316654a26523ceeed5600b759377b2\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#afb316654a26523ceeed5600b759377b2\">&#9670;&#160;</a></span>assignCreaseLimitMask() <span class=\"overload\">[4/4]</span></h2>\n \n <div class=\"memitem\">\n@@ -921,15 +921,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00740_source.html#l00097\">97</a> of file <a class=\"el\" href=\"a00740_source.html\">bilinearScheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00875_source.html#l00097\">97</a> of file <a class=\"el\" href=\"a00875_source.html\">bilinearScheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a4f8e559b93bbaf26ea0d40b1fa2f194f\" name=\"a4f8e559b93bbaf26ea0d40b1fa2f194f\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4f8e559b93bbaf26ea0d40b1fa2f194f\">&#9670;&#160;</a></span>assignCreaseLimitTangentMasks() <span class=\"overload\">[1/4]</span></h2>\n \n <div class=\"memitem\">\n@@ -1023,15 +1023,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00737_source.html#l00334\">334</a> of file <a class=\"el\" href=\"a00737_source.html\">catmarkScheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00866_source.html#l00334\">334</a> of file <a class=\"el\" href=\"a00866_source.html\">catmarkScheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a2ef69ac92171507161acb0c0af01d6f2\" name=\"a2ef69ac92171507161acb0c0af01d6f2\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2ef69ac92171507161acb0c0af01d6f2\">&#9670;&#160;</a></span>assignCreaseLimitTangentMasks() <span class=\"overload\">[3/4]</span></h2>\n \n <div class=\"memitem\">\n@@ -1073,15 +1073,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00728_source.html#l00420\">420</a> of file <a class=\"el\" href=\"a00728_source.html\">loopScheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00420\">420</a> of file <a class=\"el\" href=\"a00872_source.html\">loopScheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a7d9a8245c3860d5c975081a87b71939a\" name=\"a7d9a8245c3860d5c975081a87b71939a\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7d9a8245c3860d5c975081a87b71939a\">&#9670;&#160;</a></span>assignCreaseLimitTangentMasks() <span class=\"overload\">[4/4]</span></h2>\n \n <div class=\"memitem\">\n@@ -1123,15 +1123,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00740_source.html#l00143\">143</a> of file <a class=\"el\" href=\"a00740_source.html\">bilinearScheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00875_source.html#l00143\">143</a> of file <a class=\"el\" href=\"a00875_source.html\">bilinearScheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a0b9bc37795aeebc3e732c117a5934426\" name=\"a0b9bc37795aeebc3e732c117a5934426\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0b9bc37795aeebc3e732c117a5934426\">&#9670;&#160;</a></span>assignCreaseMaskForEdge() <span class=\"overload\">[1/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -1161,15 +1161,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00728_source.html#l00070\">70</a> of file <a class=\"el\" href=\"a00728_source.html\">loopScheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00070\">70</a> of file <a class=\"el\" href=\"a00872_source.html\">loopScheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a56964a4c783aa15ec1f819306ee9f214\" name=\"a56964a4c783aa15ec1f819306ee9f214\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a56964a4c783aa15ec1f819306ee9f214\">&#9670;&#160;</a></span>assignCreaseMaskForEdge() <span class=\"overload\">[2/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -1203,15 +1203,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00743_source.html#l00317\">317</a> of file <a class=\"el\" href=\"a00743_source.html\">scheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00863_source.html#l00317\">317</a> of file <a class=\"el\" href=\"a00863_source.html\">scheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a2439e78373d9dfd6ad3ab373c7c32dcc\" name=\"a2439e78373d9dfd6ad3ab373c7c32dcc\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a2439e78373d9dfd6ad3ab373c7c32dcc\">&#9670;&#160;</a></span>assignCreaseMaskForVertex() <span class=\"overload\">[1/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -1293,15 +1293,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00737_source.html#l00148\">148</a> of file <a class=\"el\" href=\"a00737_source.html\">catmarkScheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00866_source.html#l00148\">148</a> of file <a class=\"el\" href=\"a00866_source.html\">catmarkScheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aae024a2b2e5e40f3f35c836beaee2acf\" name=\"aae024a2b2e5e40f3f35c836beaee2acf\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aae024a2b2e5e40f3f35c836beaee2acf\">&#9670;&#160;</a></span>assignCreaseMaskForVertex() <span class=\"overload\">[3/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -1337,15 +1337,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00728_source.html#l00155\">155</a> of file <a class=\"el\" href=\"a00728_source.html\">loopScheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00155\">155</a> of file <a class=\"el\" href=\"a00872_source.html\">loopScheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a736c10944cb921b334fbd8b81866d59f\" name=\"a736c10944cb921b334fbd8b81866d59f\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a736c10944cb921b334fbd8b81866d59f\">&#9670;&#160;</a></span>assignSmoothLimitMask() <span class=\"overload\">[1/4]</span></h2>\n \n <div class=\"memitem\">\n@@ -1415,15 +1415,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00740_source.html#l00106\">106</a> of file <a class=\"el\" href=\"a00740_source.html\">bilinearScheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00875_source.html#l00106\">106</a> of file <a class=\"el\" href=\"a00875_source.html\">bilinearScheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"adbc763184791a8854374af8b123fa242\" name=\"adbc763184791a8854374af8b123fa242\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adbc763184791a8854374af8b123fa242\">&#9670;&#160;</a></span>assignSmoothLimitMask() <span class=\"overload\">[3/4]</span></h2>\n \n <div class=\"memitem\">\n@@ -1453,15 +1453,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00737_source.html#l00247\">247</a> of file <a class=\"el\" href=\"a00737_source.html\">catmarkScheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00866_source.html#l00247\">247</a> of file <a class=\"el\" href=\"a00866_source.html\">catmarkScheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"adbc763184791a8854374af8b123fa242\" name=\"adbc763184791a8854374af8b123fa242\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adbc763184791a8854374af8b123fa242\">&#9670;&#160;</a></span>assignSmoothLimitMask() <span class=\"overload\">[4/4]</span></h2>\n \n <div class=\"memitem\">\n@@ -1491,15 +1491,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00728_source.html#l00273\">273</a> of file <a class=\"el\" href=\"a00728_source.html\">loopScheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00273\">273</a> of file <a class=\"el\" href=\"a00872_source.html\">loopScheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a9ee5e194a00832a5bfa76cf58df0bc4b\" name=\"a9ee5e194a00832a5bfa76cf58df0bc4b\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9ee5e194a00832a5bfa76cf58df0bc4b\">&#9670;&#160;</a></span>assignSmoothLimitTangentMasks() <span class=\"overload\">[1/4]</span></h2>\n \n <div class=\"memitem\">\n@@ -1581,15 +1581,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00740_source.html#l00152\">152</a> of file <a class=\"el\" href=\"a00740_source.html\">bilinearScheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00875_source.html#l00152\">152</a> of file <a class=\"el\" href=\"a00875_source.html\">bilinearScheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a15a82416378d985afe049eaebc185e7d\" name=\"a15a82416378d985afe049eaebc185e7d\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a15a82416378d985afe049eaebc185e7d\">&#9670;&#160;</a></span>assignSmoothLimitTangentMasks() <span class=\"overload\">[3/4]</span></h2>\n \n <div class=\"memitem\">\n@@ -1625,15 +1625,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00737_source.html#l00453\">453</a> of file <a class=\"el\" href=\"a00737_source.html\">catmarkScheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00866_source.html#l00453\">453</a> of file <a class=\"el\" href=\"a00866_source.html\">catmarkScheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a15a82416378d985afe049eaebc185e7d\" name=\"a15a82416378d985afe049eaebc185e7d\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a15a82416378d985afe049eaebc185e7d\">&#9670;&#160;</a></span>assignSmoothLimitTangentMasks() <span class=\"overload\">[4/4]</span></h2>\n \n <div class=\"memitem\">\n@@ -1669,15 +1669,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00728_source.html#l00532\">532</a> of file <a class=\"el\" href=\"a00728_source.html\">loopScheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00532\">532</a> of file <a class=\"el\" href=\"a00872_source.html\">loopScheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a16cbaf7f173cf2fdc02c992d3a31c925\" name=\"a16cbaf7f173cf2fdc02c992d3a31c925\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a16cbaf7f173cf2fdc02c992d3a31c925\">&#9670;&#160;</a></span>assignSmoothMaskForEdge() <span class=\"overload\">[1/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -1707,15 +1707,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00737_source.html#l00071\">71</a> of file <a class=\"el\" href=\"a00737_source.html\">catmarkScheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00866_source.html#l00071\">71</a> of file <a class=\"el\" href=\"a00866_source.html\">catmarkScheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a16cbaf7f173cf2fdc02c992d3a31c925\" name=\"a16cbaf7f173cf2fdc02c992d3a31c925\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a16cbaf7f173cf2fdc02c992d3a31c925\">&#9670;&#160;</a></span>assignSmoothMaskForEdge() <span class=\"overload\">[2/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -1745,15 +1745,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00728_source.html#l00084\">84</a> of file <a class=\"el\" href=\"a00728_source.html\">loopScheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00084\">84</a> of file <a class=\"el\" href=\"a00872_source.html\">loopScheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a059f5c2c9193be58be31955e987a0600\" name=\"a059f5c2c9193be58be31955e987a0600\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a059f5c2c9193be58be31955e987a0600\">&#9670;&#160;</a></span>assignSmoothMaskForEdge() <span class=\"overload\">[3/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -1863,15 +1863,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00737_source.html#l00173\">173</a> of file <a class=\"el\" href=\"a00737_source.html\">catmarkScheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00866_source.html#l00173\">173</a> of file <a class=\"el\" href=\"a00866_source.html\">catmarkScheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ad60bcde0b6056db8500466af6951d05a\" name=\"ad60bcde0b6056db8500466af6951d05a\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad60bcde0b6056db8500466af6951d05a\">&#9670;&#160;</a></span>assignSmoothMaskForVertex() <span class=\"overload\">[3/3]</span></h2>\n \n <div class=\"memitem\">\n@@ -1901,15 +1901,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00728_source.html#l00180\">180</a> of file <a class=\"el\" href=\"a00728_source.html\">loopScheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00180\">180</a> of file <a class=\"el\" href=\"a00872_source.html\">loopScheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"af9dea56e1ab2f200dd03b4e35cf754c3\" name=\"af9dea56e1ab2f200dd03b4e35cf754c3\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af9dea56e1ab2f200dd03b4e35cf754c3\">&#9670;&#160;</a></span>ComputeEdgeVertexMask() <span class=\"overload\">[1/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -1943,15 +1943,15 @@\n           <td></td>\n           <td>)</td>\n           <td></td><td> const</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00740_source.html#l00062\">62</a> of file <a class=\"el\" href=\"a00740_source.html\">bilinearScheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00875_source.html#l00062\">62</a> of file <a class=\"el\" href=\"a00875_source.html\">bilinearScheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a5b5a5377a01eb4ba446e174eff9e45ac\" name=\"a5b5a5377a01eb4ba446e174eff9e45ac\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5b5a5377a01eb4ba446e174eff9e45ac\">&#9670;&#160;</a></span>ComputeEdgeVertexMask() <span class=\"overload\">[2/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -1992,15 +1992,15 @@\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n <p>Edge-vertex masks If known, the Rule for the edge and/or the derived vertex can be specified to accelerate the computation (though the Rule for the parent is trivially determined). In particular, knowing the child rule can avoid the need to subdivide the sharpness of the edge to see if it is a transitional crease that warrants fractional blending. </p>\n <p>Whether to use the \"Rules\" in this interface is really debatable &ndash; the parent Rule is really based on the edge and its sharpness, while the child Rule is technically based on the neighborhood of the child vertex, but it can be deduced from the two child edges' sharpness. So the <a class=\"el\" href=\"a01333.html\" title=\"Types, constants and utilities related to semi-sharp creasing \u2013 whose implementation is independent o...\">Crease</a> methods used to compute these rules differ from those for the vertex-vertex mask. Perhaps a simple pair of new methods for <a class=\"el\" href=\"a01333.html\" title=\"Types, constants and utilities related to semi-sharp creasing \u2013 whose implementation is independent o...\">Crease</a> should be added specific to the edge-vertex case, i.e. one that takes a single sharpness (for the parent rule) and one that takes a pair (for the child). </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00743_source.html#l00392\">392</a> of file <a class=\"el\" href=\"a00743_source.html\">scheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00863_source.html#l00392\">392</a> of file <a class=\"el\" href=\"a00863_source.html\">scheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ae8ed24b1691e65436d44e703189caf42\" name=\"ae8ed24b1691e65436d44e703189caf42\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae8ed24b1691e65436d44e703189caf42\">&#9670;&#160;</a></span>ComputeFaceVertexMask()</h2>\n \n <div class=\"memitem\">\n@@ -2028,15 +2028,15 @@\n           <td></td><td> const</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n <p>Face-vertex masks - trivial for all current schemes. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00743_source.html#l00348\">348</a> of file <a class=\"el\" href=\"a00743_source.html\">scheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00863_source.html#l00348\">348</a> of file <a class=\"el\" href=\"a00863_source.html\">scheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a3c8d763ca18c457c936db0e4799746f2\" name=\"a3c8d763ca18c457c936db0e4799746f2\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3c8d763ca18c457c936db0e4799746f2\">&#9670;&#160;</a></span>ComputeVertexLimitMask() <span class=\"overload\">[1/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -2072,15 +2072,15 @@\n       </table>\n </div><div class=\"memdoc\">\n \n <p>Limit masks for vertices &ndash; position and tangents These presume that a vertex is suitably isolated for its limit to be well-defined and, unlike the refinement masks, the subdivision Rule for the vertex (presumably at its last level of refinement) is required rather than being optional. In the presence of semi-sharp creasing that has not decayed to zero, the limit is neither sharp nor smooth &ndash; in such cases the Rule specified by the caller determines the result. </p>\n <p>For tangent masks, the direction of the first tangent (T1) is oriented towards the leading edge of the vertex, i.e. the first incident edge of the vertex (beginning the set of incident edges in counter-clockwise order). The second tangent (T2) lies within the tangent plane such that its normal can be computed as T1 x T2. So for a boundary vertex, T1 will point along the boundary in the direction of the leading edge while T2 points inward across the limit surface.</p>\n <p>As for magnitude, no assumptions should be made of the magnitudes of the resulting tangent vectors. Common formulae often factor out scale factors that contribute to magnitude. While some attempt has been made to make magnitudes more consistent between regular corners, boundaries and the interior, the same has not been done at irregular vertices &ndash; at least not yet. This may be addressed in future, as having consistent magnitudes returned here can aid in the construction of patches from limit positions and tangents. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00743_source.html#l00607\">607</a> of file <a class=\"el\" href=\"a00743_source.html\">scheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00863_source.html#l00607\">607</a> of file <a class=\"el\" href=\"a00863_source.html\">scheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a0667b23e275a9d95fe30c165a8d1b975\" name=\"a0667b23e275a9d95fe30c165a8d1b975\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0667b23e275a9d95fe30c165a8d1b975\">&#9670;&#160;</a></span>ComputeVertexLimitMask() <span class=\"overload\">[2/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -2124,15 +2124,15 @@\n           <td></td>\n           <td>)</td>\n           <td></td><td> const</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00743_source.html#l00629\">629</a> of file <a class=\"el\" href=\"a00743_source.html\">scheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00863_source.html#l00629\">629</a> of file <a class=\"el\" href=\"a00863_source.html\">scheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"acd3f8303b964bda017e6f1e0cc77c6c3\" name=\"acd3f8303b964bda017e6f1e0cc77c6c3\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acd3f8303b964bda017e6f1e0cc77c6c3\">&#9670;&#160;</a></span>ComputeVertexVertexMask() <span class=\"overload\">[1/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -2166,15 +2166,15 @@\n           <td></td>\n           <td>)</td>\n           <td></td><td> const</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00740_source.html#l00071\">71</a> of file <a class=\"el\" href=\"a00740_source.html\">bilinearScheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00875_source.html#l00071\">71</a> of file <a class=\"el\" href=\"a00875_source.html\">bilinearScheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a328ca26e6142838c4844b034546fb8c7\" name=\"a328ca26e6142838c4844b034546fb8c7\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a328ca26e6142838c4844b034546fb8c7\">&#9670;&#160;</a></span>ComputeVertexVertexMask() <span class=\"overload\">[2/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -2214,15 +2214,15 @@\n           <td></td><td> const</td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n <p>Vertex-vertex masks If known, a single Rule or pair of Rules can be specified (indicating a crease transition) to accelerate the computation. Either no Rules, the first, or both should be specified. Specification of only the first Rule implies it to be true for both (wish the compiler would allow such default value specification), i.e. no transition. The case of knowing the parent Rule but deferring determination of the child Rule to this method is not supported. </p>\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00743_source.html#l00512\">512</a> of file <a class=\"el\" href=\"a00743_source.html\">scheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00863_source.html#l00512\">512</a> of file <a class=\"el\" href=\"a00863_source.html\">scheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a953430a884584e984c0afbb058091be1\" name=\"a953430a884584e984c0afbb058091be1\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a953430a884584e984c0afbb058091be1\">&#9670;&#160;</a></span>GetLocalNeighborhoodSize() <span class=\"overload\">[1/4]</span></h2>\n \n <div class=\"memitem\">\n@@ -2241,15 +2241,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00740_source.html#l00053\">53</a> of file <a class=\"el\" href=\"a00740_source.html\">bilinearScheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00875_source.html#l00053\">53</a> of file <a class=\"el\" href=\"a00875_source.html\">bilinearScheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a953430a884584e984c0afbb058091be1\" name=\"a953430a884584e984c0afbb058091be1\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a953430a884584e984c0afbb058091be1\">&#9670;&#160;</a></span>GetLocalNeighborhoodSize() <span class=\"overload\">[2/4]</span></h2>\n \n <div class=\"memitem\">\n@@ -2268,15 +2268,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00737_source.html#l00056\">56</a> of file <a class=\"el\" href=\"a00737_source.html\">catmarkScheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00866_source.html#l00056\">56</a> of file <a class=\"el\" href=\"a00866_source.html\">catmarkScheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a953430a884584e984c0afbb058091be1\" name=\"a953430a884584e984c0afbb058091be1\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a953430a884584e984c0afbb058091be1\">&#9670;&#160;</a></span>GetLocalNeighborhoodSize() <span class=\"overload\">[3/4]</span></h2>\n \n <div class=\"memitem\">\n@@ -2295,15 +2295,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00728_source.html#l00057\">57</a> of file <a class=\"el\" href=\"a00728_source.html\">loopScheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00057\">57</a> of file <a class=\"el\" href=\"a00872_source.html\">loopScheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a73cf51e4315ca86e5e0a3954c92f8f74\" name=\"a73cf51e4315ca86e5e0a3954c92f8f74\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a73cf51e4315ca86e5e0a3954c92f8f74\">&#9670;&#160;</a></span>GetLocalNeighborhoodSize() <span class=\"overload\">[4/4]</span></h2>\n \n <div class=\"memitem\">\n@@ -2351,15 +2351,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00743_source.html#l00074\">74</a> of file <a class=\"el\" href=\"a00743_source.html\">scheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00863_source.html#l00074\">74</a> of file <a class=\"el\" href=\"a00863_source.html\">scheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a36744b2ac3801874da987d36851be86c\" name=\"a36744b2ac3801874da987d36851be86c\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a36744b2ac3801874da987d36851be86c\">&#9670;&#160;</a></span>GetRegularFaceSize() <span class=\"overload\">[1/4]</span></h2>\n \n <div class=\"memitem\">\n@@ -2378,15 +2378,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00740_source.html#l00047\">47</a> of file <a class=\"el\" href=\"a00740_source.html\">bilinearScheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00875_source.html#l00047\">47</a> of file <a class=\"el\" href=\"a00875_source.html\">bilinearScheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a36744b2ac3801874da987d36851be86c\" name=\"a36744b2ac3801874da987d36851be86c\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a36744b2ac3801874da987d36851be86c\">&#9670;&#160;</a></span>GetRegularFaceSize() <span class=\"overload\">[2/4]</span></h2>\n \n <div class=\"memitem\">\n@@ -2405,15 +2405,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00737_source.html#l00050\">50</a> of file <a class=\"el\" href=\"a00737_source.html\">catmarkScheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00866_source.html#l00050\">50</a> of file <a class=\"el\" href=\"a00866_source.html\">catmarkScheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a36744b2ac3801874da987d36851be86c\" name=\"a36744b2ac3801874da987d36851be86c\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a36744b2ac3801874da987d36851be86c\">&#9670;&#160;</a></span>GetRegularFaceSize() <span class=\"overload\">[3/4]</span></h2>\n \n <div class=\"memitem\">\n@@ -2432,15 +2432,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00728_source.html#l00051\">51</a> of file <a class=\"el\" href=\"a00728_source.html\">loopScheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00051\">51</a> of file <a class=\"el\" href=\"a00872_source.html\">loopScheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a531004716c07aad5436cb2db27e1ec24\" name=\"a531004716c07aad5436cb2db27e1ec24\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a531004716c07aad5436cb2db27e1ec24\">&#9670;&#160;</a></span>GetRegularFaceSize() <span class=\"overload\">[4/4]</span></h2>\n \n <div class=\"memitem\">\n@@ -2486,15 +2486,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00740_source.html#l00050\">50</a> of file <a class=\"el\" href=\"a00740_source.html\">bilinearScheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00875_source.html#l00050\">50</a> of file <a class=\"el\" href=\"a00875_source.html\">bilinearScheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ad46ad6c30664729d163c5fcc20cdf917\" name=\"ad46ad6c30664729d163c5fcc20cdf917\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad46ad6c30664729d163c5fcc20cdf917\">&#9670;&#160;</a></span>GetRegularVertexValence() <span class=\"overload\">[2/4]</span></h2>\n \n <div class=\"memitem\">\n@@ -2513,15 +2513,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00737_source.html#l00053\">53</a> of file <a class=\"el\" href=\"a00737_source.html\">catmarkScheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00866_source.html#l00053\">53</a> of file <a class=\"el\" href=\"a00866_source.html\">catmarkScheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ad46ad6c30664729d163c5fcc20cdf917\" name=\"ad46ad6c30664729d163c5fcc20cdf917\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad46ad6c30664729d163c5fcc20cdf917\">&#9670;&#160;</a></span>GetRegularVertexValence() <span class=\"overload\">[3/4]</span></h2>\n \n <div class=\"memitem\">\n@@ -2540,15 +2540,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00728_source.html#l00054\">54</a> of file <a class=\"el\" href=\"a00728_source.html\">loopScheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00054\">54</a> of file <a class=\"el\" href=\"a00872_source.html\">loopScheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a8f7e983b2195ac6b388c7a6db17f8cb0\" name=\"a8f7e983b2195ac6b388c7a6db17f8cb0\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a8f7e983b2195ac6b388c7a6db17f8cb0\">&#9670;&#160;</a></span>GetRegularVertexValence() <span class=\"overload\">[4/4]</span></h2>\n \n <div class=\"memitem\">\n@@ -2594,15 +2594,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00740_source.html#l00044\">44</a> of file <a class=\"el\" href=\"a00740_source.html\">bilinearScheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00875_source.html#l00044\">44</a> of file <a class=\"el\" href=\"a00875_source.html\">bilinearScheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a0e02d297f903bddcf8bc10c0ae17ad3c\" name=\"a0e02d297f903bddcf8bc10c0ae17ad3c\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0e02d297f903bddcf8bc10c0ae17ad3c\">&#9670;&#160;</a></span>GetTopologicalSplitType() <span class=\"overload\">[2/4]</span></h2>\n \n <div class=\"memitem\">\n@@ -2621,15 +2621,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00737_source.html#l00047\">47</a> of file <a class=\"el\" href=\"a00737_source.html\">catmarkScheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00866_source.html#l00047\">47</a> of file <a class=\"el\" href=\"a00866_source.html\">catmarkScheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a0e02d297f903bddcf8bc10c0ae17ad3c\" name=\"a0e02d297f903bddcf8bc10c0ae17ad3c\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0e02d297f903bddcf8bc10c0ae17ad3c\">&#9670;&#160;</a></span>GetTopologicalSplitType() <span class=\"overload\">[3/4]</span></h2>\n \n <div class=\"memitem\">\n@@ -2648,15 +2648,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00728_source.html#l00048\">48</a> of file <a class=\"el\" href=\"a00728_source.html\">loopScheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00872_source.html#l00048\">48</a> of file <a class=\"el\" href=\"a00872_source.html\">loopScheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a14b97ddde5fba31ca7f933508ee649da\" name=\"a14b97ddde5fba31ca7f933508ee649da\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a14b97ddde5fba31ca7f933508ee649da\">&#9670;&#160;</a></span>GetTopologicalSplitType() <span class=\"overload\">[4/4]</span></h2>\n \n <div class=\"memitem\">\n@@ -2705,20 +2705,20 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00743_source.html#l00075\">75</a> of file <a class=\"el\" href=\"a00743_source.html\">scheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00863_source.html#l00075\">75</a> of file <a class=\"el\" href=\"a00863_source.html\">scheme.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/sdc/<a class=\"el\" href=\"a00743_source.html\">scheme.h</a></li>\n+<li>opensubdiv/sdc/<a class=\"el\" href=\"a00863_source.html\">scheme.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00913.html\">Sdc</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01341.html\">Scheme</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01345.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01345.html", "unified_diff": "@@ -95,15 +95,15 @@\n <a href=\"#pub-types\">Public Types</a> &#124;\n <a href=\"#pub-methods\">Public Member Functions</a> &#124;\n <a href=\"a01342.html\">List of all members</a>  </div>\n   <div class=\"headertitle\"><div class=\"title\">Scheme&lt; SCHEME_TYPE &gt;::LocalMask&lt; WEIGHT &gt; Class Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00743_source.html\">scheme.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00863_source.html\">scheme.h</a>&gt;</code></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-types\" name=\"pub-types\"></a>\n Public Types</h2></td></tr>\n <tr class=\"memitem:a173e98e0d1b3d15f5c3ad436d0fed401\" id=\"r_a173e98e0d1b3d15f5c3ad436d0fed401\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">typedef WEIGHT&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01345.html#a173e98e0d1b3d15f5c3ad436d0fed401\">Weight</a></td></tr>\n <tr class=\"separator:a173e98e0d1b3d15f5c3ad436d0fed401\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"pub-methods\" name=\"pub-methods\"></a>\n@@ -144,15 +144,15 @@\n <tr class=\"memitem:a5ed800e9d702f57ae978fe60ba2a37dc\"><td class=\"memTemplItemLeft\" align=\"right\" valign=\"top\">void&#160;</td><td class=\"memTemplItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01345.html#a5ed800e9d702f57ae978fe60ba2a37dc\">CombineVertexVertexMasks</a> (<a class=\"el\" href=\"a01345.html#a173e98e0d1b3d15f5c3ad436d0fed401\">Weight</a> thisCoeff, <a class=\"el\" href=\"a01345.html#a173e98e0d1b3d15f5c3ad436d0fed401\">Weight</a> dstCoeff, USER_MASK &amp;dst) const</td></tr>\n <tr class=\"separator:a5ed800e9d702f57ae978fe60ba2a37dc\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><div class=\"compoundTemplParams\">template&lt;<a class=\"el\" href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833d\">SchemeType</a> SCHEME_TYPE&gt;<br />\n template&lt;typename WEIGHT&gt;<br />\n class OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme&lt; SCHEME_TYPE &gt;::LocalMask&lt; WEIGHT &gt;</div>\n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00743_source.html#l00209\">209</a> of file <a class=\"el\" href=\"a00743_source.html\">scheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00863_source.html#l00209\">209</a> of file <a class=\"el\" href=\"a00863_source.html\">scheme.h</a>.</p>\n </div><h2 class=\"groupheader\">Member Typedef Documentation</h2>\n <a id=\"a173e98e0d1b3d15f5c3ad436d0fed401\" name=\"a173e98e0d1b3d15f5c3ad436d0fed401\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a173e98e0d1b3d15f5c3ad436d0fed401\">&#9670;&#160;</a></span>Weight</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n <div class=\"memtemplate\">\n@@ -162,15 +162,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">typedef WEIGHT <a class=\"el\" href=\"a01345.html#a173e98e0d1b3d15f5c3ad436d0fed401\">Weight</a></td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00743_source.html#l00212\">212</a> of file <a class=\"el\" href=\"a00743_source.html\">scheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00863_source.html#l00212\">212</a> of file <a class=\"el\" href=\"a00863_source.html\">scheme.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"ac4b4c55fb24da95f154f4a9f517db079\" name=\"ac4b4c55fb24da95f154f4a9f517db079\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac4b4c55fb24da95f154f4a9f517db079\">&#9670;&#160;</a></span>LocalMask()</h2>\n \n@@ -211,15 +211,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00743_source.html#l00215\">215</a> of file <a class=\"el\" href=\"a00743_source.html\">scheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00863_source.html#l00215\">215</a> of file <a class=\"el\" href=\"a00863_source.html\">scheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"af542937da6050342cb6d9c042e4b8952\" name=\"af542937da6050342cb6d9c042e4b8952\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af542937da6050342cb6d9c042e4b8952\">&#9670;&#160;</a></span>~LocalMask()</h2>\n \n <div class=\"memitem\">\n@@ -242,15 +242,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00743_source.html#l00216\">216</a> of file <a class=\"el\" href=\"a00743_source.html\">scheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00863_source.html#l00216\">216</a> of file <a class=\"el\" href=\"a00863_source.html\">scheme.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Member Function Documentation</h2>\n <a id=\"a3519e5e05631026fad94c7616f5e0e67\" name=\"a3519e5e05631026fad94c7616f5e0e67\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a3519e5e05631026fad94c7616f5e0e67\">&#9670;&#160;</a></span>AreFaceWeightsForFaceCenters()</h2>\n \n@@ -274,15 +274,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00743_source.html#l00239\">239</a> of file <a class=\"el\" href=\"a00743_source.html\">scheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00863_source.html#l00239\">239</a> of file <a class=\"el\" href=\"a00863_source.html\">scheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a5ed800e9d702f57ae978fe60ba2a37dc\" name=\"a5ed800e9d702f57ae978fe60ba2a37dc\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5ed800e9d702f57ae978fe60ba2a37dc\">&#9670;&#160;</a></span>CombineVertexVertexMasks()</h2>\n \n <div class=\"memitem\">\n@@ -324,15 +324,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00743_source.html#l00249\">249</a> of file <a class=\"el\" href=\"a00743_source.html\">scheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00863_source.html#l00249\">249</a> of file <a class=\"el\" href=\"a00863_source.html\">scheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a533dba32a946854c3f25e27b521ef7df\" name=\"a533dba32a946854c3f25e27b521ef7df\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a533dba32a946854c3f25e27b521ef7df\">&#9670;&#160;</a></span>EdgeWeight() <span class=\"overload\">[1/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -356,15 +356,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00743_source.html#l00236\">236</a> of file <a class=\"el\" href=\"a00743_source.html\">scheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00863_source.html#l00236\">236</a> of file <a class=\"el\" href=\"a00863_source.html\">scheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a4db932a8a33fd0622c7d01167eb14b52\" name=\"a4db932a8a33fd0622c7d01167eb14b52\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4db932a8a33fd0622c7d01167eb14b52\">&#9670;&#160;</a></span>EdgeWeight() <span class=\"overload\">[2/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -388,15 +388,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00743_source.html#l00232\">232</a> of file <a class=\"el\" href=\"a00743_source.html\">scheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00863_source.html#l00232\">232</a> of file <a class=\"el\" href=\"a00863_source.html\">scheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aedf29f30786b62372004a22a3fa35a5c\" name=\"aedf29f30786b62372004a22a3fa35a5c\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aedf29f30786b62372004a22a3fa35a5c\">&#9670;&#160;</a></span>FaceWeight() <span class=\"overload\">[1/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -420,15 +420,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00743_source.html#l00237\">237</a> of file <a class=\"el\" href=\"a00743_source.html\">scheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00863_source.html#l00237\">237</a> of file <a class=\"el\" href=\"a00863_source.html\">scheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a674da1128895a8cbafa6c0ec49e9aec0\" name=\"a674da1128895a8cbafa6c0ec49e9aec0\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a674da1128895a8cbafa6c0ec49e9aec0\">&#9670;&#160;</a></span>FaceWeight() <span class=\"overload\">[2/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -452,15 +452,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00743_source.html#l00233\">233</a> of file <a class=\"el\" href=\"a00743_source.html\">scheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00863_source.html#l00233\">233</a> of file <a class=\"el\" href=\"a00863_source.html\">scheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a90e0d2981f29bc7bbdfbaba8db632751\" name=\"a90e0d2981f29bc7bbdfbaba8db632751\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a90e0d2981f29bc7bbdfbaba8db632751\">&#9670;&#160;</a></span>GetNumEdgeWeights()</h2>\n \n <div class=\"memitem\">\n@@ -483,15 +483,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00743_source.html#l00224\">224</a> of file <a class=\"el\" href=\"a00743_source.html\">scheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00863_source.html#l00224\">224</a> of file <a class=\"el\" href=\"a00863_source.html\">scheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a93f57e5337391c20d46defdb3aa2c1fe\" name=\"a93f57e5337391c20d46defdb3aa2c1fe\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a93f57e5337391c20d46defdb3aa2c1fe\">&#9670;&#160;</a></span>GetNumFaceWeights()</h2>\n \n <div class=\"memitem\">\n@@ -514,15 +514,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00743_source.html#l00225\">225</a> of file <a class=\"el\" href=\"a00743_source.html\">scheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00863_source.html#l00225\">225</a> of file <a class=\"el\" href=\"a00863_source.html\">scheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a606d934c6d30b3c8ae617000eb8c5a9b\" name=\"a606d934c6d30b3c8ae617000eb8c5a9b\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a606d934c6d30b3c8ae617000eb8c5a9b\">&#9670;&#160;</a></span>GetNumVertexWeights()</h2>\n \n <div class=\"memitem\">\n@@ -545,15 +545,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00743_source.html#l00223\">223</a> of file <a class=\"el\" href=\"a00743_source.html\">scheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00863_source.html#l00223\">223</a> of file <a class=\"el\" href=\"a00863_source.html\">scheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a9ba4929a8a8a6d34adfc5f2bed667d76\" name=\"a9ba4929a8a8a6d34adfc5f2bed667d76\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9ba4929a8a8a6d34adfc5f2bed667d76\">&#9670;&#160;</a></span>SetFaceWeightsForFaceCenters()</h2>\n \n <div class=\"memitem\">\n@@ -577,15 +577,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00743_source.html#l00240\">240</a> of file <a class=\"el\" href=\"a00743_source.html\">scheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00863_source.html#l00240\">240</a> of file <a class=\"el\" href=\"a00863_source.html\">scheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a4522f1acd5f94a06bb2f50552d2670b7\" name=\"a4522f1acd5f94a06bb2f50552d2670b7\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4522f1acd5f94a06bb2f50552d2670b7\">&#9670;&#160;</a></span>SetNumEdgeWeights()</h2>\n \n <div class=\"memitem\">\n@@ -609,15 +609,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00743_source.html#l00228\">228</a> of file <a class=\"el\" href=\"a00743_source.html\">scheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00863_source.html#l00228\">228</a> of file <a class=\"el\" href=\"a00863_source.html\">scheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a61e933f9a128cb16d31611fd96ecd153\" name=\"a61e933f9a128cb16d31611fd96ecd153\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a61e933f9a128cb16d31611fd96ecd153\">&#9670;&#160;</a></span>SetNumFaceWeights()</h2>\n \n <div class=\"memitem\">\n@@ -641,15 +641,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00743_source.html#l00229\">229</a> of file <a class=\"el\" href=\"a00743_source.html\">scheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00863_source.html#l00229\">229</a> of file <a class=\"el\" href=\"a00863_source.html\">scheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a9ecd627de3a0ca5eb2adbed84e39b681\" name=\"a9ecd627de3a0ca5eb2adbed84e39b681\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9ecd627de3a0ca5eb2adbed84e39b681\">&#9670;&#160;</a></span>SetNumVertexWeights()</h2>\n \n <div class=\"memitem\">\n@@ -673,15 +673,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00743_source.html#l00227\">227</a> of file <a class=\"el\" href=\"a00743_source.html\">scheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00863_source.html#l00227\">227</a> of file <a class=\"el\" href=\"a00863_source.html\">scheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a92e98987f9a4220b9edd041401c9ed76\" name=\"a92e98987f9a4220b9edd041401c9ed76\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a92e98987f9a4220b9edd041401c9ed76\">&#9670;&#160;</a></span>VertexWeight() <span class=\"overload\">[1/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -705,15 +705,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00743_source.html#l00235\">235</a> of file <a class=\"el\" href=\"a00743_source.html\">scheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00863_source.html#l00235\">235</a> of file <a class=\"el\" href=\"a00863_source.html\">scheme.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aec5c2abfdfbde4dd934c061625994791\" name=\"aec5c2abfdfbde4dd934c061625994791\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aec5c2abfdfbde4dd934c061625994791\">&#9670;&#160;</a></span>VertexWeight() <span class=\"overload\">[2/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -737,20 +737,20 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00743_source.html#l00231\">231</a> of file <a class=\"el\" href=\"a00743_source.html\">scheme.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00863_source.html#l00231\">231</a> of file <a class=\"el\" href=\"a00863_source.html\">scheme.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/sdc/<a class=\"el\" href=\"a00743_source.html\">scheme.h</a></li>\n+<li>opensubdiv/sdc/<a class=\"el\" href=\"a00863_source.html\">scheme.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00913.html\">Sdc</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01341.html\">Scheme</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01345.html\">LocalMask</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01353.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01353.html", "unified_diff": "@@ -96,15 +96,15 @@\n <a href=\"#pub-methods\">Public Member Functions</a> &#124;\n <a href=\"#pro-attribs\">Protected Attributes</a> &#124;\n <a href=\"a01350.html\">List of all members</a>  </div>\n   <div class=\"headertitle\"><div class=\"title\">ConstArray&lt; TYPE &gt; Class Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00683_source.html\">array.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00797_source.html\">array.h</a>&gt;</code></p>\n <div class=\"dynheader\">\n Inheritance diagram for ConstArray&lt; TYPE &gt;:</div>\n <div class=\"dyncontent\">\n  <div class=\"center\">\n   <img src=\"a01353.png\" usemap=\"#ConstArray_3C_20TYPE_20_3E_map\" alt=\"\"/>\n   <map id=\"ConstArray_3C_20TYPE_20_3E_map\" name=\"ConstArray_3C_20TYPE_20_3E_map\">\n <area href=\"a01357.html\" alt=\"Array&lt; TYPE &gt;\" shape=\"rect\" coords=\"0,56,133,80\"/>\n@@ -153,15 +153,15 @@\n <tr class=\"separator:a0b346105187c04000fd7f76046ec9909\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a9f1927ae81f20205d93e0b86915f27d7\" id=\"r_a9f1927ae81f20205d93e0b86915f27d7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"a01353.html#aafd1e3ba4133ad908bdbc99c4b356e5f\">size_type</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01353.html#a9f1927ae81f20205d93e0b86915f27d7\">_size</a></td></tr>\n <tr class=\"separator:a9f1927ae81f20205d93e0b86915f27d7\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><div class=\"compoundTemplParams\">template&lt;typename TYPE&gt;<br />\n class OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray&lt; TYPE &gt;</div>\n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00683_source.html#l00053\">53</a> of file <a class=\"el\" href=\"a00683_source.html\">array.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00797_source.html#l00053\">53</a> of file <a class=\"el\" href=\"a00797_source.html\">array.h</a>.</p>\n </div><h2 class=\"groupheader\">Member Typedef Documentation</h2>\n <a id=\"a543c28695d3d02ccf15ea7d9125aba04\" name=\"a543c28695d3d02ccf15ea7d9125aba04\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a543c28695d3d02ccf15ea7d9125aba04\">&#9670;&#160;</a></span>const_iterator</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n <div class=\"memtemplate\">\n@@ -169,15 +169,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">typedef TYPE const* <a class=\"el\" href=\"a01353.html#a543c28695d3d02ccf15ea7d9125aba04\">const_iterator</a></td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00683_source.html#l00060\">60</a> of file <a class=\"el\" href=\"a00683_source.html\">array.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00797_source.html#l00060\">60</a> of file <a class=\"el\" href=\"a00797_source.html\">array.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ac20b1b0146a3077fd2de652b07f94de9\" name=\"ac20b1b0146a3077fd2de652b07f94de9\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac20b1b0146a3077fd2de652b07f94de9\">&#9670;&#160;</a></span>const_reference</h2>\n \n <div class=\"memitem\">\n@@ -187,15 +187,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">typedef TYPE const&amp; <a class=\"el\" href=\"a01353.html#ac20b1b0146a3077fd2de652b07f94de9\">const_reference</a></td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00683_source.html#l00059\">59</a> of file <a class=\"el\" href=\"a00683_source.html\">array.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00797_source.html#l00059\">59</a> of file <a class=\"el\" href=\"a00797_source.html\">array.h</a>.</p>\n \n </div>\n </div>\n <a id=\"adfa2f8bb0c1215f3b0ef976f122faf0d\" name=\"adfa2f8bb0c1215f3b0ef976f122faf0d\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adfa2f8bb0c1215f3b0ef976f122faf0d\">&#9670;&#160;</a></span>iterator</h2>\n \n <div class=\"memitem\">\n@@ -205,15 +205,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">typedef TYPE* <a class=\"el\" href=\"a01353.html#adfa2f8bb0c1215f3b0ef976f122faf0d\">iterator</a></td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00683_source.html#l00063\">63</a> of file <a class=\"el\" href=\"a00683_source.html\">array.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00797_source.html#l00063\">63</a> of file <a class=\"el\" href=\"a00797_source.html\">array.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a9025ff89fc9afe7d9054abb58123bbda\" name=\"a9025ff89fc9afe7d9054abb58123bbda\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9025ff89fc9afe7d9054abb58123bbda\">&#9670;&#160;</a></span>reference</h2>\n \n <div class=\"memitem\">\n@@ -223,15 +223,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">typedef TYPE&amp; <a class=\"el\" href=\"a01353.html#a9025ff89fc9afe7d9054abb58123bbda\">reference</a></td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00683_source.html#l00062\">62</a> of file <a class=\"el\" href=\"a00683_source.html\">array.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00797_source.html#l00062\">62</a> of file <a class=\"el\" href=\"a00797_source.html\">array.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aafd1e3ba4133ad908bdbc99c4b356e5f\" name=\"aafd1e3ba4133ad908bdbc99c4b356e5f\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aafd1e3ba4133ad908bdbc99c4b356e5f\">&#9670;&#160;</a></span>size_type</h2>\n \n <div class=\"memitem\">\n@@ -241,15 +241,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">typedef int <a class=\"el\" href=\"a01353.html#aafd1e3ba4133ad908bdbc99c4b356e5f\">size_type</a></td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00683_source.html#l00057\">57</a> of file <a class=\"el\" href=\"a00683_source.html\">array.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00797_source.html#l00057\">57</a> of file <a class=\"el\" href=\"a00797_source.html\">array.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a0caff2a05d659a02367f0f31ae29e45c\" name=\"a0caff2a05d659a02367f0f31ae29e45c\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0caff2a05d659a02367f0f31ae29e45c\">&#9670;&#160;</a></span>value_type</h2>\n \n <div class=\"memitem\">\n@@ -259,15 +259,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">typedef TYPE <a class=\"el\" href=\"a01353.html#a0caff2a05d659a02367f0f31ae29e45c\">value_type</a></td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00683_source.html#l00056\">56</a> of file <a class=\"el\" href=\"a00683_source.html\">array.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00797_source.html#l00056\">56</a> of file <a class=\"el\" href=\"a00797_source.html\">array.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"aeec9d58ea099acc6be7c5655c229b050\" name=\"aeec9d58ea099acc6be7c5655c229b050\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aeec9d58ea099acc6be7c5655c229b050\">&#9670;&#160;</a></span>ConstArray() <span class=\"overload\">[1/2]</span></h2>\n \n@@ -289,15 +289,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00683_source.html#l00067\">67</a> of file <a class=\"el\" href=\"a00683_source.html\">array.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00797_source.html#l00067\">67</a> of file <a class=\"el\" href=\"a00797_source.html\">array.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a7a2762a78af05d23e5664a40720b3dc6\" name=\"a7a2762a78af05d23e5664a40720b3dc6\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a7a2762a78af05d23e5664a40720b3dc6\">&#9670;&#160;</a></span>ConstArray() <span class=\"overload\">[2/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -329,15 +329,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00683_source.html#l00069\">69</a> of file <a class=\"el\" href=\"a00683_source.html\">array.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00797_source.html#l00069\">69</a> of file <a class=\"el\" href=\"a00797_source.html\">array.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Member Function Documentation</h2>\n <a id=\"a29305669b60ca1680752e2fc3592ba99\" name=\"a29305669b60ca1680752e2fc3592ba99\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a29305669b60ca1680752e2fc3592ba99\">&#9670;&#160;</a></span>begin()</h2>\n \n@@ -359,15 +359,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00683_source.html#l00077\">77</a> of file <a class=\"el\" href=\"a00683_source.html\">array.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00797_source.html#l00077\">77</a> of file <a class=\"el\" href=\"a00797_source.html\">array.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a644718bb2fb240de962dc3c9a1fdf0dc\" name=\"a644718bb2fb240de962dc3c9a1fdf0dc\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a644718bb2fb240de962dc3c9a1fdf0dc\">&#9670;&#160;</a></span>empty()</h2>\n \n <div class=\"memitem\">\n@@ -388,15 +388,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00683_source.html#l00074\">74</a> of file <a class=\"el\" href=\"a00683_source.html\">array.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00797_source.html#l00074\">74</a> of file <a class=\"el\" href=\"a00797_source.html\">array.h</a>.</p>\n \n </div>\n </div>\n <a id=\"accf9a4bd0c34d4a5f6a7dab66ea10cdc\" name=\"accf9a4bd0c34d4a5f6a7dab66ea10cdc\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#accf9a4bd0c34d4a5f6a7dab66ea10cdc\">&#9670;&#160;</a></span>end()</h2>\n \n <div class=\"memitem\">\n@@ -417,15 +417,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00683_source.html#l00078\">78</a> of file <a class=\"el\" href=\"a00683_source.html\">array.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00797_source.html#l00078\">78</a> of file <a class=\"el\" href=\"a00797_source.html\">array.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aab75dd5fb27049f92ee6af282b29be8c\" name=\"aab75dd5fb27049f92ee6af282b29be8c\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aab75dd5fb27049f92ee6af282b29be8c\">&#9670;&#160;</a></span>FindIndex()</h2>\n \n <div class=\"memitem\">\n@@ -447,15 +447,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00683_source.html#l00090\">90</a> of file <a class=\"el\" href=\"a00683_source.html\">array.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00797_source.html#l00090\">90</a> of file <a class=\"el\" href=\"a00797_source.html\">array.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a5afd472f9e68f5d28798ef5953a995a1\" name=\"a5afd472f9e68f5d28798ef5953a995a1\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a5afd472f9e68f5d28798ef5953a995a1\">&#9670;&#160;</a></span>FindIndexIn4Tuple()</h2>\n \n <div class=\"memitem\">\n@@ -477,15 +477,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00683_source.html#l00080\">80</a> of file <a class=\"el\" href=\"a00683_source.html\">array.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00797_source.html#l00080\">80</a> of file <a class=\"el\" href=\"a00797_source.html\">array.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a4bc7a742b78a2528f413b38fe426a74c\" name=\"a4bc7a742b78a2528f413b38fe426a74c\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4bc7a742b78a2528f413b38fe426a74c\">&#9670;&#160;</a></span>operator[]()</h2>\n \n <div class=\"memitem\">\n@@ -507,15 +507,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00683_source.html#l00076\">76</a> of file <a class=\"el\" href=\"a00683_source.html\">array.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00797_source.html#l00076\">76</a> of file <a class=\"el\" href=\"a00797_source.html\">array.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a60304b65bf89363bcc3165d3cde67f86\" name=\"a60304b65bf89363bcc3165d3cde67f86\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a60304b65bf89363bcc3165d3cde67f86\">&#9670;&#160;</a></span>size()</h2>\n \n <div class=\"memitem\">\n@@ -536,15 +536,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00683_source.html#l00072\">72</a> of file <a class=\"el\" href=\"a00683_source.html\">array.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00797_source.html#l00072\">72</a> of file <a class=\"el\" href=\"a00797_source.html\">array.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Member Data Documentation</h2>\n <a id=\"a0b346105187c04000fd7f76046ec9909\" name=\"a0b346105187c04000fd7f76046ec9909\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0b346105187c04000fd7f76046ec9909\">&#9670;&#160;</a></span>_begin</h2>\n \n@@ -563,15 +563,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00683_source.html#l00100\">100</a> of file <a class=\"el\" href=\"a00683_source.html\">array.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00797_source.html#l00100\">100</a> of file <a class=\"el\" href=\"a00797_source.html\">array.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a9f1927ae81f20205d93e0b86915f27d7\" name=\"a9f1927ae81f20205d93e0b86915f27d7\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9f1927ae81f20205d93e0b86915f27d7\">&#9670;&#160;</a></span>_size</h2>\n \n <div class=\"memitem\">\n@@ -589,20 +589,20 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">protected</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00683_source.html#l00101\">101</a> of file <a class=\"el\" href=\"a00683_source.html\">array.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00797_source.html#l00101\">101</a> of file <a class=\"el\" href=\"a00797_source.html\">array.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/vtr/<a class=\"el\" href=\"a00683_source.html\">array.h</a></li>\n+<li>opensubdiv/vtr/<a class=\"el\" href=\"a00797_source.html\">array.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00909.html\">Vtr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01353.html\">ConstArray</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01357.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01357.html", "unified_diff": "@@ -95,15 +95,15 @@\n <a href=\"#pub-types\">Public Types</a> &#124;\n <a href=\"#pub-methods\">Public Member Functions</a> &#124;\n <a href=\"a01354.html\">List of all members</a>  </div>\n   <div class=\"headertitle\"><div class=\"title\">Array&lt; TYPE &gt; Class Template Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n \n-<p><code>#include &lt;<a class=\"el\" href=\"a00683_source.html\">array.h</a>&gt;</code></p>\n+<p><code>#include &lt;<a class=\"el\" href=\"a00797_source.html\">array.h</a>&gt;</code></p>\n <div class=\"dynheader\">\n Inheritance diagram for Array&lt; TYPE &gt;:</div>\n <div class=\"dyncontent\">\n  <div class=\"center\">\n   <img src=\"a01357.png\" usemap=\"#Array_3C_20TYPE_20_3E_map\" alt=\"\"/>\n   <map id=\"Array_3C_20TYPE_20_3E_map\" name=\"Array_3C_20TYPE_20_3E_map\">\n <area href=\"a01353.html\" alt=\"ConstArray&lt; TYPE &gt;\" shape=\"rect\" coords=\"0,0,133,24\"/>\n@@ -177,15 +177,15 @@\n <tr class=\"separator:a0b346105187c04000fd7f76046ec9909 inherit pro_attribs_a01353\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a9f1927ae81f20205d93e0b86915f27d7 inherit pro_attribs_a01353\" id=\"r_a9f1927ae81f20205d93e0b86915f27d7\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a class=\"el\" href=\"a01353.html#aafd1e3ba4133ad908bdbc99c4b356e5f\">size_type</a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01353.html#a9f1927ae81f20205d93e0b86915f27d7\">_size</a></td></tr>\n <tr class=\"separator:a9f1927ae81f20205d93e0b86915f27d7 inherit pro_attribs_a01353\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n <a name=\"details\" id=\"details\"></a><h2 class=\"groupheader\">Detailed Description</h2>\n <div class=\"textblock\"><div class=\"compoundTemplParams\">template&lt;typename TYPE&gt;<br />\n class OpenSubdiv::OPENSUBDIV_VERSION::Vtr::Array&lt; TYPE &gt;</div>\n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00683_source.html#l00105\">105</a> of file <a class=\"el\" href=\"a00683_source.html\">array.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00797_source.html#l00105\">105</a> of file <a class=\"el\" href=\"a00797_source.html\">array.h</a>.</p>\n </div><h2 class=\"groupheader\">Member Typedef Documentation</h2>\n <a id=\"ac20b1b0146a3077fd2de652b07f94de9\" name=\"ac20b1b0146a3077fd2de652b07f94de9\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ac20b1b0146a3077fd2de652b07f94de9\">&#9670;&#160;</a></span>const_reference</h2>\n \n <div class=\"memitem\">\n <div class=\"memproto\">\n <div class=\"memtemplate\">\n@@ -193,15 +193,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">typedef TYPE const&amp; <a class=\"el\" href=\"a01357.html#ac20b1b0146a3077fd2de652b07f94de9\">const_reference</a></td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00683_source.html#l00111\">111</a> of file <a class=\"el\" href=\"a00683_source.html\">array.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00797_source.html#l00111\">111</a> of file <a class=\"el\" href=\"a00797_source.html\">array.h</a>.</p>\n \n </div>\n </div>\n <a id=\"adfa2f8bb0c1215f3b0ef976f122faf0d\" name=\"adfa2f8bb0c1215f3b0ef976f122faf0d\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adfa2f8bb0c1215f3b0ef976f122faf0d\">&#9670;&#160;</a></span>iterator</h2>\n \n <div class=\"memitem\">\n@@ -211,15 +211,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">typedef TYPE* <a class=\"el\" href=\"a01357.html#adfa2f8bb0c1215f3b0ef976f122faf0d\">iterator</a></td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00683_source.html#l00114\">114</a> of file <a class=\"el\" href=\"a00683_source.html\">array.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00797_source.html#l00114\">114</a> of file <a class=\"el\" href=\"a00797_source.html\">array.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a9025ff89fc9afe7d9054abb58123bbda\" name=\"a9025ff89fc9afe7d9054abb58123bbda\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a9025ff89fc9afe7d9054abb58123bbda\">&#9670;&#160;</a></span>reference</h2>\n \n <div class=\"memitem\">\n@@ -229,15 +229,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">typedef TYPE&amp; <a class=\"el\" href=\"a01357.html#a9025ff89fc9afe7d9054abb58123bbda\">reference</a></td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00683_source.html#l00113\">113</a> of file <a class=\"el\" href=\"a00683_source.html\">array.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00797_source.html#l00113\">113</a> of file <a class=\"el\" href=\"a00797_source.html\">array.h</a>.</p>\n \n </div>\n </div>\n <a id=\"aafd1e3ba4133ad908bdbc99c4b356e5f\" name=\"aafd1e3ba4133ad908bdbc99c4b356e5f\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#aafd1e3ba4133ad908bdbc99c4b356e5f\">&#9670;&#160;</a></span>size_type</h2>\n \n <div class=\"memitem\">\n@@ -247,15 +247,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">typedef int <a class=\"el\" href=\"a01357.html#aafd1e3ba4133ad908bdbc99c4b356e5f\">size_type</a></td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00683_source.html#l00109\">109</a> of file <a class=\"el\" href=\"a00683_source.html\">array.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00797_source.html#l00109\">109</a> of file <a class=\"el\" href=\"a00797_source.html\">array.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a0caff2a05d659a02367f0f31ae29e45c\" name=\"a0caff2a05d659a02367f0f31ae29e45c\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a0caff2a05d659a02367f0f31ae29e45c\">&#9670;&#160;</a></span>value_type</h2>\n \n <div class=\"memitem\">\n@@ -265,15 +265,15 @@\n       <table class=\"memname\">\n         <tr>\n           <td class=\"memname\">typedef TYPE <a class=\"el\" href=\"a01357.html#a0caff2a05d659a02367f0f31ae29e45c\">value_type</a></td>\n         </tr>\n       </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00683_source.html#l00108\">108</a> of file <a class=\"el\" href=\"a00683_source.html\">array.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00797_source.html#l00108\">108</a> of file <a class=\"el\" href=\"a00797_source.html\">array.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Constructor &amp; Destructor Documentation</h2>\n <a id=\"af9474cac29f3177edf5e8d72ea4a440c\" name=\"af9474cac29f3177edf5e8d72ea4a440c\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#af9474cac29f3177edf5e8d72ea4a440c\">&#9670;&#160;</a></span>Array() <span class=\"overload\">[1/2]</span></h2>\n \n@@ -295,15 +295,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00683_source.html#l00118\">118</a> of file <a class=\"el\" href=\"a00683_source.html\">array.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00797_source.html#l00118\">118</a> of file <a class=\"el\" href=\"a00797_source.html\">array.h</a>.</p>\n \n </div>\n </div>\n <a id=\"adbe98cd78a59ce56cb45c2239136cc10\" name=\"adbe98cd78a59ce56cb45c2239136cc10\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#adbe98cd78a59ce56cb45c2239136cc10\">&#9670;&#160;</a></span>Array() <span class=\"overload\">[2/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -335,15 +335,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00683_source.html#l00120\">120</a> of file <a class=\"el\" href=\"a00683_source.html\">array.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00797_source.html#l00120\">120</a> of file <a class=\"el\" href=\"a00797_source.html\">array.h</a>.</p>\n \n </div>\n </div>\n <h2 class=\"groupheader\">Member Function Documentation</h2>\n <a id=\"ad69bd11391be1a1dba5c8202259664f8\" name=\"ad69bd11391be1a1dba5c8202259664f8\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ad69bd11391be1a1dba5c8202259664f8\">&#9670;&#160;</a></span>begin()</h2>\n \n@@ -365,15 +365,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00683_source.html#l00132\">132</a> of file <a class=\"el\" href=\"a00683_source.html\">array.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00797_source.html#l00132\">132</a> of file <a class=\"el\" href=\"a00797_source.html\">array.h</a>.</p>\n \n </div>\n </div>\n <a id=\"acad38d52497a975bfb6f2f6acd76631f\" name=\"acad38d52497a975bfb6f2f6acd76631f\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#acad38d52497a975bfb6f2f6acd76631f\">&#9670;&#160;</a></span>end()</h2>\n \n <div class=\"memitem\">\n@@ -394,15 +394,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00683_source.html#l00136\">136</a> of file <a class=\"el\" href=\"a00683_source.html\">array.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00797_source.html#l00136\">136</a> of file <a class=\"el\" href=\"a00797_source.html\">array.h</a>.</p>\n \n </div>\n </div>\n <a id=\"ae96c1b25ff445d67d3c3e8d5858839a6\" name=\"ae96c1b25ff445d67d3c3e8d5858839a6\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#ae96c1b25ff445d67d3c3e8d5858839a6\">&#9670;&#160;</a></span>operator[]() <span class=\"overload\">[1/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -424,15 +424,15 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00683_source.html#l00128\">128</a> of file <a class=\"el\" href=\"a00683_source.html\">array.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00797_source.html#l00128\">128</a> of file <a class=\"el\" href=\"a00797_source.html\">array.h</a>.</p>\n \n </div>\n </div>\n <a id=\"a4bc7a742b78a2528f413b38fe426a74c\" name=\"a4bc7a742b78a2528f413b38fe426a74c\"></a>\n <h2 class=\"memtitle\"><span class=\"permalink\"><a href=\"#a4bc7a742b78a2528f413b38fe426a74c\">&#9670;&#160;</a></span>operator[]() <span class=\"overload\">[2/2]</span></h2>\n \n <div class=\"memitem\">\n@@ -454,20 +454,20 @@\n   </td>\n   <td class=\"mlabels-right\">\n <span class=\"mlabels\"><span class=\"mlabel\">inline</span></span>  </td>\n   </tr>\n </table>\n </div><div class=\"memdoc\">\n \n-<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00683_source.html#l00124\">124</a> of file <a class=\"el\" href=\"a00683_source.html\">array.h</a>.</p>\n+<p class=\"definition\">Definition at line <a class=\"el\" href=\"a00797_source.html#l00124\">124</a> of file <a class=\"el\" href=\"a00797_source.html\">array.h</a>.</p>\n \n </div>\n </div>\n <hr/>The documentation for this class was generated from the following file:<ul>\n-<li>opensubdiv/vtr/<a class=\"el\" href=\"a00683_source.html\">array.h</a></li>\n+<li>opensubdiv/vtr/<a class=\"el\" href=\"a00797_source.html\">array.h</a></li>\n </ul>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00906.html\">OPENSUBDIV_VERSION</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00909.html\">Vtr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01357.html\">Array</a></li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01486_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01486_source.html", "unified_diff": "@@ -156,27 +156,27 @@\n <div class=\"line\"><a id=\"l00055\" name=\"l00055\"></a><span class=\"lineno\">   55</span>} <span class=\"comment\">// end namespace Far</span></div>\n <div class=\"line\"><a id=\"l00056\" name=\"l00056\"></a><span class=\"lineno\">   56</span> </div>\n <div class=\"line\"><a id=\"l00057\" name=\"l00057\"></a><span class=\"lineno\">   57</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n <div class=\"line\"><a id=\"l00058\" name=\"l00058\"></a><span class=\"lineno\">   58</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n <div class=\"line\"><a id=\"l00059\" name=\"l00059\"></a><span class=\"lineno\">   59</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n <div class=\"line\"><a id=\"l00060\" name=\"l00060\"></a><span class=\"lineno\">   60</span> </div>\n <div class=\"line\"><a id=\"l00061\" name=\"l00061\"></a><span class=\"lineno\">   61</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_FAR_TYPES_H */</span><span class=\"preprocessor\"></span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n <div class=\"ttc\" id=\"aa00908_html_a200172f1c19545bc01f292afa2167e2f\"><div class=\"ttname\"><a href=\"a00908.html#a200172f1c19545bc01f292afa2167e2f\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LocalIndex</a></div><div class=\"ttdeci\">Vtr::LocalIndex LocalIndex</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01486_source.html#l00042\">types.h:42</a></div></div>\n <div class=\"ttc\" id=\"aa00908_html_a26b477946e364f3510ef5028d66132f3\"><div class=\"ttname\"><a href=\"a00908.html#a26b477946e364f3510ef5028d66132f3\">OpenSubdiv::OPENSUBDIV_VERSION::Far::LocalIndexArray</a></div><div class=\"ttdeci\">Vtr::LocalIndexArray LocalIndexArray</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01486_source.html#l00045\">types.h:45</a></div></div>\n <div class=\"ttc\" id=\"aa00908_html_a35788aa710e3f7e277e5f0b008d76d61\"><div class=\"ttname\"><a href=\"a00908.html#a35788aa710e3f7e277e5f0b008d76d61\">OpenSubdiv::OPENSUBDIV_VERSION::Far::ConstIndexArray</a></div><div class=\"ttdeci\">Vtr::ConstIndexArray ConstIndexArray</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01486_source.html#l00047\">types.h:47</a></div></div>\n <div class=\"ttc\" id=\"aa00908_html_a48f809d54fe9eb8cbd9d3f7521ba4fb1\"><div class=\"ttname\"><a href=\"a00908.html#a48f809d54fe9eb8cbd9d3f7521ba4fb1\">OpenSubdiv::OPENSUBDIV_VERSION::Far::ConstLocalIndexArray</a></div><div class=\"ttdeci\">Vtr::ConstLocalIndexArray ConstLocalIndexArray</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01486_source.html#l00048\">types.h:48</a></div></div>\n <div class=\"ttc\" id=\"aa00908_html_a70ecf570850744b0efeeedd7b743e950\"><div class=\"ttname\"><a href=\"a00908.html#a70ecf570850744b0efeeedd7b743e950\">OpenSubdiv::OPENSUBDIV_VERSION::Far::IndexArray</a></div><div class=\"ttdeci\">Vtr::IndexArray IndexArray</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01486_source.html#l00044\">types.h:44</a></div></div>\n <div class=\"ttc\" id=\"aa00908_html_a98af1cee938a3f984af1e7e9a205080c\"><div class=\"ttname\"><a href=\"a00908.html#a98af1cee938a3f984af1e7e9a205080c\">OpenSubdiv::OPENSUBDIV_VERSION::Far::IndexIsValid</a></div><div class=\"ttdeci\">bool IndexIsValid(Index index)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01486_source.html#l00050\">types.h:50</a></div></div>\n <div class=\"ttc\" id=\"aa00908_html_ab34c85a48f33dfe7b8bf4d966fdebbf2\"><div class=\"ttname\"><a href=\"a00908.html#ab34c85a48f33dfe7b8bf4d966fdebbf2\">OpenSubdiv::OPENSUBDIV_VERSION::Far::Index</a></div><div class=\"ttdeci\">Vtr::Index Index</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01486_source.html#l00041\">types.h:41</a></div></div>\n <div class=\"ttc\" id=\"aa00909_html_a4a0e50e01fef3e431767a928c2631cab\"><div class=\"ttname\"><a href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::Index</a></div><div class=\"ttdeci\">int Index</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01495_source.html#l00054\">types.h:54</a></div></div>\n <div class=\"ttc\" id=\"aa00909_html_a97c1e0c5ac33f97e2b73fde56b56c363\"><div class=\"ttname\"><a href=\"a00909.html#a97c1e0c5ac33f97e2b73fde56b56c363\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::LocalIndex</a></div><div class=\"ttdeci\">unsigned short LocalIndex</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01495_source.html#l00066\">types.h:66</a></div></div>\n <div class=\"ttc\" id=\"aa00909_html_a98af1cee938a3f984af1e7e9a205080c\"><div class=\"ttname\"><a href=\"a00909.html#a98af1cee938a3f984af1e7e9a205080c\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::IndexIsValid</a></div><div class=\"ttdeci\">bool IndexIsValid(Index index)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01495_source.html#l00058\">types.h:58</a></div></div>\n-<div class=\"ttc\" id=\"aa01353_html\"><div class=\"ttname\"><a href=\"a01353.html\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00683_source.html#l00053\">array.h:53</a></div></div>\n-<div class=\"ttc\" id=\"aa01357_html\"><div class=\"ttname\"><a href=\"a01357.html\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::Array</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00683_source.html#l00105\">array.h:105</a></div></div>\n+<div class=\"ttc\" id=\"aa01353_html\"><div class=\"ttname\"><a href=\"a01353.html\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00797_source.html#l00053\">array.h:53</a></div></div>\n+<div class=\"ttc\" id=\"aa01357_html\"><div class=\"ttname\"><a href=\"a01357.html\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::Array</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00797_source.html#l00105\">array.h:105</a></div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7f420b72a822828cfa8b0561c695a5cc.html\">far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01486.html\">types.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01489.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01489.html", "unified_diff": "@@ -95,15 +95,15 @@\n <a href=\"#nested-classes\">Classes</a> &#124;\n <a href=\"#namespaces\">Namespaces</a> &#124;\n <a href=\"#typedef-members\">Typedefs</a>  </div>\n   <div class=\"headertitle\"><div class=\"title\">types.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00761_source.html\">../far/patchTable.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00842_source.html\">../far/patchTable.h</a>&quot;</code><br />\n <code>#include &lt;algorithm&gt;</code><br />\n </div>\n <p><a href=\"a01489_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n <tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">struct &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01321.html\">PatchCoord</a></td></tr>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01489_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01489_source.html", "unified_diff": "@@ -260,24 +260,24 @@\n <div class=\"line\"><a id=\"l00137\" name=\"l00137\"></a><span class=\"lineno\">  137</span>}  <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n <div class=\"line\"><a id=\"l00138\" name=\"l00138\"></a><span class=\"lineno\">  138</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n <div class=\"line\"><a id=\"l00139\" name=\"l00139\"></a><span class=\"lineno\">  139</span> </div>\n <div class=\"line\"><a id=\"l00140\" name=\"l00140\"></a><span class=\"lineno\">  140</span>}  <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n <div class=\"line\"><a id=\"l00141\" name=\"l00141\"></a><span class=\"lineno\">  141</span> </div>\n <div class=\"line\"><a id=\"l00142\" name=\"l00142\"></a><span class=\"lineno\">  142</span> </div>\n <div class=\"line\"><a id=\"l00143\" name=\"l00143\"></a><span class=\"lineno\">  143</span><span class=\"preprocessor\">#endif  </span><span class=\"comment\">// OPENSUBDIV3_OSD_TYPES_H</span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n <div class=\"ttc\" id=\"aa00912_html_a1e22001c627b0364d6c6d62a3ed05fee\"><div class=\"ttname\"><a href=\"a00912.html#a1e22001c627b0364d6c6d62a3ed05fee\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchParamVector</a></div><div class=\"ttdeci\">std::vector&lt; PatchParam &gt; PatchParamVector</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00133\">types.h:133</a></div></div>\n <div class=\"ttc\" id=\"aa00912_html_a98098cd229f60d2397d84a76fe654a31\"><div class=\"ttname\"><a href=\"a00912.html#a98098cd229f60d2397d84a76fe654a31\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchArrayVector</a></div><div class=\"ttdeci\">std::vector&lt; PatchArray &gt; PatchArrayVector</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00132\">types.h:132</a></div></div>\n-<div class=\"ttc\" id=\"aa00973_html\"><div class=\"ttname\"><a href=\"a00973.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor</a></div><div class=\"ttdoc\">Describes the type of a patch.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00773_source.html#l00044\">patchDescriptor.h:44</a></div></div>\n-<div class=\"ttc\" id=\"aa00973_html_a485decc00facb0972f8775a8a20851fa\"><div class=\"ttname\"><a href=\"a00973.html#a485decc00facb0972f8775a8a20851fa\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::GetType</a></div><div class=\"ttdeci\">Type GetType() const</div><div class=\"ttdoc\">Returns the type of the patch.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00773_source.html#l00087\">patchDescriptor.h:87</a></div></div>\n-<div class=\"ttc\" id=\"aa00989_html\"><div class=\"ttname\"><a href=\"a00989.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchParam</a></div><div class=\"ttdoc\">Patch parameterization.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00755_source.html#l00152\">patchParam.h:152</a></div></div>\n-<div class=\"ttc\" id=\"aa00997_html\"><div class=\"ttname\"><a href=\"a00997.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::PatchHandle</a></div><div class=\"ttdoc\">Handle that can be used as unique patch identifier within PatchTable.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00761_source.html#l00060\">patchTable.h:60</a></div></div>\n-<div class=\"ttc\" id=\"aa00997_html_a31bdf15525ab73560c2b725ff7f8ae3a\"><div class=\"ttname\"><a href=\"a00997.html#a31bdf15525ab73560c2b725ff7f8ae3a\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::PatchHandle::patchIndex</a></div><div class=\"ttdeci\">Index patchIndex</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00761_source.html#l00068\">patchTable.h:68</a></div></div>\n-<div class=\"ttc\" id=\"aa00997_html_a4430ecde7e1d784b2bef6dc4c2ff04c2\"><div class=\"ttname\"><a href=\"a00997.html#a4430ecde7e1d784b2bef6dc4c2ff04c2\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::PatchHandle::arrayIndex</a></div><div class=\"ttdeci\">Index arrayIndex</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00761_source.html#l00067\">patchTable.h:67</a></div></div>\n-<div class=\"ttc\" id=\"aa00997_html_a46d1a8129375c3ee40a33a81d44b685a\"><div class=\"ttname\"><a href=\"a00997.html#a46d1a8129375c3ee40a33a81d44b685a\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::PatchHandle::vertIndex</a></div><div class=\"ttdeci\">Index vertIndex</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00761_source.html#l00069\">patchTable.h:69</a></div></div>\n+<div class=\"ttc\" id=\"aa00973_html\"><div class=\"ttname\"><a href=\"a00973.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor</a></div><div class=\"ttdoc\">Describes the type of a patch.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00857_source.html#l00044\">patchDescriptor.h:44</a></div></div>\n+<div class=\"ttc\" id=\"aa00973_html_a485decc00facb0972f8775a8a20851fa\"><div class=\"ttname\"><a href=\"a00973.html#a485decc00facb0972f8775a8a20851fa\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::GetType</a></div><div class=\"ttdeci\">Type GetType() const</div><div class=\"ttdoc\">Returns the type of the patch.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00857_source.html#l00087\">patchDescriptor.h:87</a></div></div>\n+<div class=\"ttc\" id=\"aa00989_html\"><div class=\"ttname\"><a href=\"a00989.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchParam</a></div><div class=\"ttdoc\">Patch parameterization.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00836_source.html#l00152\">patchParam.h:152</a></div></div>\n+<div class=\"ttc\" id=\"aa00997_html\"><div class=\"ttname\"><a href=\"a00997.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::PatchHandle</a></div><div class=\"ttdoc\">Handle that can be used as unique patch identifier within PatchTable.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00842_source.html#l00060\">patchTable.h:60</a></div></div>\n+<div class=\"ttc\" id=\"aa00997_html_a31bdf15525ab73560c2b725ff7f8ae3a\"><div class=\"ttname\"><a href=\"a00997.html#a31bdf15525ab73560c2b725ff7f8ae3a\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::PatchHandle::patchIndex</a></div><div class=\"ttdeci\">Index patchIndex</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00842_source.html#l00068\">patchTable.h:68</a></div></div>\n+<div class=\"ttc\" id=\"aa00997_html_a4430ecde7e1d784b2bef6dc4c2ff04c2\"><div class=\"ttname\"><a href=\"a00997.html#a4430ecde7e1d784b2bef6dc4c2ff04c2\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::PatchHandle::arrayIndex</a></div><div class=\"ttdeci\">Index arrayIndex</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00842_source.html#l00067\">patchTable.h:67</a></div></div>\n+<div class=\"ttc\" id=\"aa00997_html_a46d1a8129375c3ee40a33a81d44b685a\"><div class=\"ttname\"><a href=\"a00997.html#a46d1a8129375c3ee40a33a81d44b685a\">OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::PatchHandle::vertIndex</a></div><div class=\"ttdeci\">Index vertIndex</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00842_source.html#l00069\">patchTable.h:69</a></div></div>\n <div class=\"ttc\" id=\"aa01321_html\"><div class=\"ttname\"><a href=\"a01321.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchCoord</a></div><div class=\"ttdoc\">Coordinates set on a patch table.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00042\">types.h:42</a></div></div>\n <div class=\"ttc\" id=\"aa01321_html_a06ae6afa9ea8e2028021f8ee3f28b824\"><div class=\"ttname\"><a href=\"a01321.html#a06ae6afa9ea8e2028021f8ee3f28b824\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchCoord::handle</a></div><div class=\"ttdeci\">Far::PatchTable::PatchHandle handle</div><div class=\"ttdoc\">patch handle</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00062\">types.h:62</a></div></div>\n <div class=\"ttc\" id=\"aa01321_html_a5e6a814c3f060dc9575af4082f4d905e\"><div class=\"ttname\"><a href=\"a01321.html#a5e6a814c3f060dc9575af4082f4d905e\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchCoord::PatchCoord</a></div><div class=\"ttdeci\">PatchCoord()</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00056\">types.h:56</a></div></div>\n <div class=\"ttc\" id=\"aa01321_html_a874f74a4dc1c9a0cd9c6e0d79c298f55\"><div class=\"ttname\"><a href=\"a01321.html#a874f74a4dc1c9a0cd9c6e0d79c298f55\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchCoord::s</a></div><div class=\"ttdeci\">float s</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00063\">types.h:63</a></div></div>\n <div class=\"ttc\" id=\"aa01321_html_abe64006c4fe55b720f483bd7711bf216\"><div class=\"ttname\"><a href=\"a01321.html#abe64006c4fe55b720f483bd7711bf216\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchCoord::PatchCoord</a></div><div class=\"ttdeci\">PatchCoord(Far::PatchTable::PatchHandle handleArg, float sArg, float tArg)</div><div class=\"ttdoc\">Constructor.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00053\">types.h:53</a></div></div>\n <div class=\"ttc\" id=\"aa01321_html_afea36502e9d227ff62c5fb2719a246f2\"><div class=\"ttname\"><a href=\"a01321.html#afea36502e9d227ff62c5fb2719a246f2\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchCoord::t</a></div><div class=\"ttdeci\">float t</div><div class=\"ttdoc\">parametric location on patch</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00063\">types.h:63</a></div></div>\n <div class=\"ttc\" id=\"aa01325_html\"><div class=\"ttname\"><a href=\"a01325.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchArray</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01489_source.html#l00066\">types.h:66</a></div></div>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01492_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01492_source.html", "unified_diff": "@@ -167,15 +167,15 @@\n <div class=\"line\"><a id=\"l00070\" name=\"l00070\"></a><span class=\"lineno\">   70</span>} <span class=\"comment\">// end namespace sdc</span></div>\n <div class=\"line\"><a id=\"l00071\" name=\"l00071\"></a><span class=\"lineno\">   71</span> </div>\n <div class=\"line\"><a id=\"l00072\" name=\"l00072\"></a><span class=\"lineno\">   72</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n <div class=\"line\"><a id=\"l00073\" name=\"l00073\"></a><span class=\"lineno\">   73</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n <div class=\"line\"><a id=\"l00074\" name=\"l00074\"></a><span class=\"lineno\">   74</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n <div class=\"line\"><a id=\"l00075\" name=\"l00075\"></a><span class=\"lineno\">   75</span> </div>\n <div class=\"line\"><a id=\"l00076\" name=\"l00076\"></a><span class=\"lineno\">   76</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_SDC_TYPES_H */</span><span class=\"preprocessor\"></span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n <div class=\"ttc\" id=\"aa00913_html_a61ef2f8f765ba17f8036bcc0f0fa887b\"><div class=\"ttname\"><a href=\"a00913.html#a61ef2f8f765ba17f8036bcc0f0fa887b\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Split</a></div><div class=\"ttdeci\">Split</div><div class=\"ttdoc\">Enumerated type for all face splitting schemes.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01492_source.html#l00047\">types.h:47</a></div></div>\n <div class=\"ttc\" id=\"aa00913_html_a61ef2f8f765ba17f8036bcc0f0fa887ba31959b36c678fcb560f478ecb7c051f5\"><div class=\"ttname\"><a href=\"a00913.html#a61ef2f8f765ba17f8036bcc0f0fa887ba31959b36c678fcb560f478ecb7c051f5\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::SPLIT_TO_TRIS</a></div><div class=\"ttdeci\">@ SPLIT_TO_TRIS</div><div class=\"ttdoc\">Used by Loop.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01492_source.html#l00049\">types.h:49</a></div></div>\n <div class=\"ttc\" id=\"aa00913_html_a61ef2f8f765ba17f8036bcc0f0fa887ba56eed514f6a5971f198c9e421054b513\"><div class=\"ttname\"><a href=\"a00913.html#a61ef2f8f765ba17f8036bcc0f0fa887ba56eed514f6a5971f198c9e421054b513\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::SPLIT_TO_QUADS</a></div><div class=\"ttdeci\">@ SPLIT_TO_QUADS</div><div class=\"ttdoc\">Used by Catmark and Bilinear.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01492_source.html#l00048\">types.h:48</a></div></div>\n <div class=\"ttc\" id=\"aa00913_html_a61ef2f8f765ba17f8036bcc0f0fa887ba6ebca125aa2292ebbdfd6539d3656d28\"><div class=\"ttname\"><a href=\"a00913.html#a61ef2f8f765ba17f8036bcc0f0fa887ba6ebca125aa2292ebbdfd6539d3656d28\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::SPLIT_HYBRID</a></div><div class=\"ttdeci\">@ SPLIT_HYBRID</div><div class=\"ttdoc\">Not currently used (potential future extension)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01492_source.html#l00051\">types.h:50</a></div></div>\n <div class=\"ttc\" id=\"aa00913_html_aa3daa2f428c6be2b1cb394f3a525833d\"><div class=\"ttname\"><a href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833d\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::SchemeType</a></div><div class=\"ttdeci\">SchemeType</div><div class=\"ttdoc\">Enumerated type for all subdivision schemes supported by OpenSubdiv.</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01492_source.html#l00037\">types.h:37</a></div></div>\n <div class=\"ttc\" id=\"aa00913_html_aa3daa2f428c6be2b1cb394f3a525833da02558f420bac2d6bd3f8411d4b3957a0\"><div class=\"ttname\"><a href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833da02558f420bac2d6bd3f8411d4b3957a0\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::SCHEME_BILINEAR</a></div><div class=\"ttdeci\">@ SCHEME_BILINEAR</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01492_source.html#l00038\">types.h:38</a></div></div>\n <div class=\"ttc\" id=\"aa00913_html_aa3daa2f428c6be2b1cb394f3a525833da29c9704ef8a61670dfc242b6e6b82a9f\"><div class=\"ttname\"><a href=\"a00913.html#aa3daa2f428c6be2b1cb394f3a525833da29c9704ef8a61670dfc242b6e6b82a9f\">OpenSubdiv::OPENSUBDIV_VERSION::Sdc::SCHEME_CATMARK</a></div><div class=\"ttdeci\">@ SCHEME_CATMARK</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01492_source.html#l00039\">types.h:39</a></div></div>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01495.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01495.html", "unified_diff": "@@ -95,15 +95,15 @@\n <a href=\"#namespaces\">Namespaces</a> &#124;\n <a href=\"#typedef-members\">Typedefs</a> &#124;\n <a href=\"#func-members\">Functions</a>  </div>\n   <div class=\"headertitle\"><div class=\"title\">types.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00683_source.html\">../vtr/array.h</a>&quot;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00797_source.html\">../vtr/array.h</a>&quot;</code><br />\n <code>#include &lt;vector&gt;</code><br />\n </div>\n <p><a href=\"a01495_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a01495_source.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a01495_source.html", "unified_diff": "@@ -187,25 +187,25 @@\n <div class=\"line\"><a id=\"l00086\" name=\"l00086\"></a><span class=\"lineno\">   86</span>} <span class=\"comment\">// end namespace Vtr</span></div>\n <div class=\"line\"><a id=\"l00087\" name=\"l00087\"></a><span class=\"lineno\">   87</span> </div>\n <div class=\"line\"><a id=\"l00088\" name=\"l00088\"></a><span class=\"lineno\">   88</span>} <span class=\"comment\">// end namespace OPENSUBDIV_VERSION</span></div>\n <div class=\"line\"><a id=\"l00089\" name=\"l00089\"></a><span class=\"lineno\">   89</span><span class=\"keyword\">using namespace </span>OPENSUBDIV_VERSION;</div>\n <div class=\"line\"><a id=\"l00090\" name=\"l00090\"></a><span class=\"lineno\">   90</span>} <span class=\"comment\">// end namespace OpenSubdiv</span></div>\n <div class=\"line\"><a id=\"l00091\" name=\"l00091\"></a><span class=\"lineno\">   91</span> </div>\n <div class=\"line\"><a id=\"l00092\" name=\"l00092\"></a><span class=\"lineno\">   92</span><span class=\"preprocessor\">#endif </span><span class=\"comment\">/* OPENSUBDIV3_VTR_TYPES_H */</span><span class=\"preprocessor\"></span></div>\n-<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00701_source.html#l00032\">limits.h:32</a></div></div>\n+<div class=\"ttc\" id=\"aa00905_html\"><div class=\"ttname\"><a href=\"a00905.html\">OpenSubdiv</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00890_source.html#l00032\">limits.h:32</a></div></div>\n <div class=\"ttc\" id=\"aa00909_html_a175f8a210a75b8180bc7ec74459492c9\"><div class=\"ttname\"><a href=\"a00909.html#a175f8a210a75b8180bc7ec74459492c9\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstLocalIndexArray</a></div><div class=\"ttdeci\">ConstArray&lt; LocalIndex &gt; ConstLocalIndexArray</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01495_source.html#l00083\">types.h:83</a></div></div>\n <div class=\"ttc\" id=\"aa00909_html_a1e004d5c1e30ef69719d4083afe0f4ce\"><div class=\"ttname\"><a href=\"a00909.html#a1e004d5c1e30ef69719d4083afe0f4ce\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::LocalIndexArray</a></div><div class=\"ttdeci\">Array&lt; LocalIndex &gt; LocalIndexArray</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01495_source.html#l00082\">types.h:82</a></div></div>\n <div class=\"ttc\" id=\"aa00909_html_a4a0e50e01fef3e431767a928c2631cab\"><div class=\"ttname\"><a href=\"a00909.html#a4a0e50e01fef3e431767a928c2631cab\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::Index</a></div><div class=\"ttdeci\">int Index</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01495_source.html#l00054\">types.h:54</a></div></div>\n <div class=\"ttc\" id=\"aa00909_html_a5ce395d26317168dcf613c15181476ed\"><div class=\"ttname\"><a href=\"a00909.html#a5ce395d26317168dcf613c15181476ed\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::IndexVector</a></div><div class=\"ttdeci\">std::vector&lt; Index &gt; IndexVector</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01495_source.html#l00077\">types.h:77</a></div></div>\n <div class=\"ttc\" id=\"aa00909_html_a7c31dd7ef75734862d363b332be917dd\"><div class=\"ttname\"><a href=\"a00909.html#a7c31dd7ef75734862d363b332be917dd\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstIndexArray</a></div><div class=\"ttdeci\">ConstArray&lt; Index &gt; ConstIndexArray</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01495_source.html#l00080\">types.h:80</a></div></div>\n <div class=\"ttc\" id=\"aa00909_html_a97c1e0c5ac33f97e2b73fde56b56c363\"><div class=\"ttname\"><a href=\"a00909.html#a97c1e0c5ac33f97e2b73fde56b56c363\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::LocalIndex</a></div><div class=\"ttdeci\">unsigned short LocalIndex</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01495_source.html#l00066\">types.h:66</a></div></div>\n <div class=\"ttc\" id=\"aa00909_html_a98af1cee938a3f984af1e7e9a205080c\"><div class=\"ttname\"><a href=\"a00909.html#a98af1cee938a3f984af1e7e9a205080c\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::IndexIsValid</a></div><div class=\"ttdeci\">bool IndexIsValid(Index index)</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01495_source.html#l00058\">types.h:58</a></div></div>\n <div class=\"ttc\" id=\"aa00909_html_ab4fd2ea03eba4c01ed28072b21917a0f\"><div class=\"ttname\"><a href=\"a00909.html#ab4fd2ea03eba4c01ed28072b21917a0f\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::IndexArray</a></div><div class=\"ttdeci\">Array&lt; Index &gt; IndexArray</div><div class=\"ttdef\"><b>Definition</b> <a href=\"a01495_source.html#l00079\">types.h:79</a></div></div>\n-<div class=\"ttc\" id=\"aa01353_html\"><div class=\"ttname\"><a href=\"a01353.html\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00683_source.html#l00053\">array.h:53</a></div></div>\n-<div class=\"ttc\" id=\"aa01357_html\"><div class=\"ttname\"><a href=\"a01357.html\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::Array</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00683_source.html#l00105\">array.h:105</a></div></div>\n+<div class=\"ttc\" id=\"aa01353_html\"><div class=\"ttname\"><a href=\"a01353.html\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00797_source.html#l00053\">array.h:53</a></div></div>\n+<div class=\"ttc\" id=\"aa01357_html\"><div class=\"ttname\"><a href=\"a01357.html\">OpenSubdiv::OPENSUBDIV_VERSION::Vtr::Array</a></div><div class=\"ttdef\"><b>Definition</b> <a href=\"a00797_source.html#l00105\">array.h:105</a></div></div>\n </div><!-- fragment --></div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n     <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_bd5473d7d5841d48919aaa9ad0cb1f9b.html\">vtr</a></li><li class=\"navelem\"><a class=\"el\" href=\"a01495.html\">types.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/dir_2483050b711c1829a6434006d0beb10c.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/dir_2483050b711c1829a6434006d0beb10c.html", "unified_diff": "@@ -93,91 +93,91 @@\n <div class=\"header\">\n   <div class=\"headertitle\"><div class=\"title\">osd Directory Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"files\" name=\"files\"></a>\n Files</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00866_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00866.html\">bufferDescriptor.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00764_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00764.html\">bufferDescriptor.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00830_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00830.html\">clEvaluator.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00749_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00749.html\">clEvaluator.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00833_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00833.html\">clPatchTable.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00785_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00785.html\">clPatchTable.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00881_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00881.html\">clVertexBuffer.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00725_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00725.html\">clVertexBuffer.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00896_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00896.html\">cpuD3D11VertexBuffer.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00773_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00773.html\">cpuD3D11VertexBuffer.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00803_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00803.html\">cpuEvaluator.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00782_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00782.html\">cpuEvaluator.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00821_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00821.html\">cpuGLVertexBuffer.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00680_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00680.html\">cpuGLVertexBuffer.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00818_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00818.html\">cpuPatchTable.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00791_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00791.html\">cpuPatchTable.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00899_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00899.html\">cpuVertexBuffer.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00743_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00743.html\">cpuVertexBuffer.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00839_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00839.html\">cudaEvaluator.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00692_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00692.html\">cudaEvaluator.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00836_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00836.html\">cudaPatchTable.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00677_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00677.html\">cudaPatchTable.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00875_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00875.html\">cudaVertexBuffer.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00674_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00674.html\">cudaVertexBuffer.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00800_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00800.html\">d3d11ComputeEvaluator.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00686_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00686.html\">d3d11ComputeEvaluator.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00863_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00863.html\">d3d11LegacyGregoryPatchTable.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00695_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00695.html\">d3d11LegacyGregoryPatchTable.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00860_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00860.html\">d3d11Mesh.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00737_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00737.html\">d3d11Mesh.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00815_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00815.html\">d3d11PatchTable.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00710_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00710.html\">d3d11PatchTable.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00902_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00902.html\">d3d11VertexBuffer.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00788_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00788.html\">d3d11VertexBuffer.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00848_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00848.html\">glComputeEvaluator.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00752_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00752.html\">glComputeEvaluator.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00887_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00887.html\">glLegacyGregoryPatchTable.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00767_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00767.html\">glLegacyGregoryPatchTable.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00878_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00878.html\">glMesh.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00719_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00719.html\">glMesh.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00788_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00788.html\">glPatchTable.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00779_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00779.html\">glPatchTable.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00827_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00827.html\">glslPatchShaderSource.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00728_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00728.html\">glslPatchShaderSource.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00869_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00869.html\">glVertexBuffer.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00683_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00683.html\">glVertexBuffer.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00791_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00791.html\">glXFBEvaluator.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00701_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00701.html\">glXFBEvaluator.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00794_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00794.html\">hlslPatchShaderSource.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00716_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00716.html\">hlslPatchShaderSource.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00872_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00872.html\">mesh.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00704_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00704.html\">mesh.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00824_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00824.html\">mtlCommon.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00698_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00698.html\">mtlCommon.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00806_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00806.html\">mtlComputeEvaluator.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00689_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00689.html\">mtlComputeEvaluator.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00893_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00893.html\">mtlLegacyGregoryPatchTable.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00746_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00746.html\">mtlLegacyGregoryPatchTable.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00812_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00812.html\">mtlMesh.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00740_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00740.html\">mtlMesh.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00851_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00851.html\">mtlPatchShaderSource.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00734_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00734.html\">mtlPatchShaderSource.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00809_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00809.html\">mtlPatchTable.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00776_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00776.html\">mtlPatchTable.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00884_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00884.html\">mtlVertexBuffer.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00713_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00713.html\">mtlVertexBuffer.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00854_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00854.html\">ompEvaluator.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00707_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00707.html\">ompEvaluator.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00797_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00797.html\">ompKernel.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00761_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00761.html\">ompKernel.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00845_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00845.html\">opencl.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00755_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00755.html\">opencl.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00842_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00842.html\">opengl.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00722_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00722.html\">opengl.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00857_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00857.html\">tbbEvaluator.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00731_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00731.html\">tbbEvaluator.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00890_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00890.html\">tbbKernel.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00758_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00758.html\">tbbKernel.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a01489_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01489.html\">types.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/dir_2483050b711c1829a6434006d0beb10c.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/dir_2483050b711c1829a6434006d0beb10c.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,42 +1,42 @@\n var dir_2483050b711c1829a6434006d0beb10c = [\n-    [\"bufferDescriptor.h\", \"a00866.html\", \"a00866\"],\n-    [\"clEvaluator.h\", \"a00830.html\", \"a00830\"],\n-    [\"clPatchTable.h\", \"a00833.html\", \"a00833\"],\n-    [\"clVertexBuffer.h\", \"a00881.html\", \"a00881\"],\n-    [\"cpuD3D11VertexBuffer.h\", \"a00896.html\", \"a00896\"],\n-    [\"cpuEvaluator.h\", \"a00803.html\", \"a00803\"],\n-    [\"cpuGLVertexBuffer.h\", \"a00821.html\", \"a00821\"],\n-    [\"cpuPatchTable.h\", \"a00818.html\", \"a00818\"],\n-    [\"cpuVertexBuffer.h\", \"a00899.html\", \"a00899\"],\n-    [\"cudaEvaluator.h\", \"a00839.html\", \"a00839\"],\n-    [\"cudaPatchTable.h\", \"a00836.html\", \"a00836\"],\n-    [\"cudaVertexBuffer.h\", \"a00875.html\", \"a00875\"],\n-    [\"d3d11ComputeEvaluator.h\", \"a00800.html\", \"a00800\"],\n-    [\"d3d11LegacyGregoryPatchTable.h\", \"a00863.html\", \"a00863\"],\n-    [\"d3d11Mesh.h\", \"a00860.html\", \"a00860\"],\n-    [\"d3d11PatchTable.h\", \"a00815.html\", \"a00815\"],\n-    [\"d3d11VertexBuffer.h\", \"a00902.html\", \"a00902\"],\n-    [\"glComputeEvaluator.h\", \"a00848.html\", \"a00848\"],\n-    [\"glLegacyGregoryPatchTable.h\", \"a00887.html\", \"a00887\"],\n-    [\"glMesh.h\", \"a00878.html\", \"a00878\"],\n-    [\"glPatchTable.h\", \"a00788.html\", \"a00788\"],\n-    [\"glslPatchShaderSource.h\", \"a00827.html\", \"a00827\"],\n-    [\"glVertexBuffer.h\", \"a00869.html\", \"a00869\"],\n-    [\"glXFBEvaluator.h\", \"a00791.html\", \"a00791\"],\n-    [\"hlslPatchShaderSource.h\", \"a00794.html\", \"a00794\"],\n-    [\"mesh.h\", \"a00872.html\", \"a00872\"],\n-    [\"mtlCommon.h\", \"a00824.html\", \"a00824\"],\n-    [\"mtlComputeEvaluator.h\", \"a00806.html\", \"a00806\"],\n-    [\"mtlLegacyGregoryPatchTable.h\", \"a00893.html\", \"a00893\"],\n-    [\"mtlMesh.h\", \"a00812.html\", \"a00812\"],\n-    [\"mtlPatchShaderSource.h\", \"a00851.html\", \"a00851\"],\n-    [\"mtlPatchTable.h\", \"a00809.html\", \"a00809\"],\n-    [\"mtlVertexBuffer.h\", \"a00884.html\", \"a00884\"],\n-    [\"ompEvaluator.h\", \"a00854.html\", \"a00854\"],\n-    [\"ompKernel.h\", \"a00797.html\", \"a00797\"],\n-    [\"opencl.h\", \"a00845.html\", null],\n-    [\"opengl.h\", \"a00842.html\", null],\n-    [\"tbbEvaluator.h\", \"a00857.html\", \"a00857\"],\n-    [\"tbbKernel.h\", \"a00890.html\", \"a00890\"],\n+    [\"bufferDescriptor.h\", \"a00764.html\", \"a00764\"],\n+    [\"clEvaluator.h\", \"a00749.html\", \"a00749\"],\n+    [\"clPatchTable.h\", \"a00785.html\", \"a00785\"],\n+    [\"clVertexBuffer.h\", \"a00725.html\", \"a00725\"],\n+    [\"cpuD3D11VertexBuffer.h\", \"a00773.html\", \"a00773\"],\n+    [\"cpuEvaluator.h\", \"a00782.html\", \"a00782\"],\n+    [\"cpuGLVertexBuffer.h\", \"a00680.html\", \"a00680\"],\n+    [\"cpuPatchTable.h\", \"a00791.html\", \"a00791\"],\n+    [\"cpuVertexBuffer.h\", \"a00743.html\", \"a00743\"],\n+    [\"cudaEvaluator.h\", \"a00692.html\", \"a00692\"],\n+    [\"cudaPatchTable.h\", \"a00677.html\", \"a00677\"],\n+    [\"cudaVertexBuffer.h\", \"a00674.html\", \"a00674\"],\n+    [\"d3d11ComputeEvaluator.h\", \"a00686.html\", \"a00686\"],\n+    [\"d3d11LegacyGregoryPatchTable.h\", \"a00695.html\", \"a00695\"],\n+    [\"d3d11Mesh.h\", \"a00737.html\", \"a00737\"],\n+    [\"d3d11PatchTable.h\", \"a00710.html\", \"a00710\"],\n+    [\"d3d11VertexBuffer.h\", \"a00788.html\", \"a00788\"],\n+    [\"glComputeEvaluator.h\", \"a00752.html\", \"a00752\"],\n+    [\"glLegacyGregoryPatchTable.h\", \"a00767.html\", \"a00767\"],\n+    [\"glMesh.h\", \"a00719.html\", \"a00719\"],\n+    [\"glPatchTable.h\", \"a00779.html\", \"a00779\"],\n+    [\"glslPatchShaderSource.h\", \"a00728.html\", \"a00728\"],\n+    [\"glVertexBuffer.h\", \"a00683.html\", \"a00683\"],\n+    [\"glXFBEvaluator.h\", \"a00701.html\", \"a00701\"],\n+    [\"hlslPatchShaderSource.h\", \"a00716.html\", \"a00716\"],\n+    [\"mesh.h\", \"a00704.html\", \"a00704\"],\n+    [\"mtlCommon.h\", \"a00698.html\", \"a00698\"],\n+    [\"mtlComputeEvaluator.h\", \"a00689.html\", \"a00689\"],\n+    [\"mtlLegacyGregoryPatchTable.h\", \"a00746.html\", \"a00746\"],\n+    [\"mtlMesh.h\", \"a00740.html\", \"a00740\"],\n+    [\"mtlPatchShaderSource.h\", \"a00734.html\", \"a00734\"],\n+    [\"mtlPatchTable.h\", \"a00776.html\", \"a00776\"],\n+    [\"mtlVertexBuffer.h\", \"a00713.html\", \"a00713\"],\n+    [\"ompEvaluator.h\", \"a00707.html\", \"a00707\"],\n+    [\"ompKernel.h\", \"a00761.html\", \"a00761\"],\n+    [\"opencl.h\", \"a00755.html\", null],\n+    [\"opengl.h\", \"a00722.html\", null],\n+    [\"tbbEvaluator.h\", \"a00731.html\", \"a00731\"],\n+    [\"tbbKernel.h\", \"a00758.html\", \"a00758\"],\n     [\"types.h\", \"a01489.html\", \"a01489\"]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/dir_7f420b72a822828cfa8b0561c695a5cc.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/dir_7f420b72a822828cfa8b0561c695a5cc.html", "unified_diff": "@@ -93,41 +93,41 @@\n <div class=\"header\">\n   <div class=\"headertitle\"><div class=\"title\">far Directory Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"files\" name=\"files\"></a>\n Files</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00749_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00749.html\">error.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00839_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00839.html\">error.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00773_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00773.html\">patchDescriptor.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00857_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00857.html\">patchDescriptor.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00779_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00779.html\">patchMap.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00830_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00830.html\">patchMap.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00755_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00755.html\">patchParam.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00836_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00836.html\">patchParam.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00761_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00761.html\">patchTable.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00842_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00842.html\">patchTable.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00776_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00776.html\">patchTableFactory.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00854_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00854.html\">patchTableFactory.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00746_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00746.html\">primvarRefiner.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00851_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00851.html\">primvarRefiner.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00770_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00770.html\">ptexIndices.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00848_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00848.html\">ptexIndices.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00758_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00758.html\">stencilTable.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00818_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00818.html\">stencilTable.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00752_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00752.html\">stencilTableFactory.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00824_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00824.html\">stencilTableFactory.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00785_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00785.html\">topologyDescriptor.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00845_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00845.html\">topologyDescriptor.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00782_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00782.html\">topologyLevel.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00821_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00821.html\">topologyLevel.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00764_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00764.html\">topologyRefiner.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00833_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00833.html\">topologyRefiner.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00767_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00767.html\">topologyRefinerFactory.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00827_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00827.html\">topologyRefinerFactory.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a01486_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01486.html\">types.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/dir_7f420b72a822828cfa8b0561c695a5cc.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/dir_7f420b72a822828cfa8b0561c695a5cc.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,17 +1,17 @@\n var dir_7f420b72a822828cfa8b0561c695a5cc = [\n-    [\"error.h\", \"a00749.html\", \"a00749\"],\n-    [\"patchDescriptor.h\", \"a00773.html\", \"a00773\"],\n-    [\"patchMap.h\", \"a00779.html\", \"a00779\"],\n-    [\"patchParam.h\", \"a00755.html\", \"a00755\"],\n-    [\"patchTable.h\", \"a00761.html\", \"a00761\"],\n-    [\"patchTableFactory.h\", \"a00776.html\", \"a00776\"],\n-    [\"primvarRefiner.h\", \"a00746.html\", \"a00746\"],\n-    [\"ptexIndices.h\", \"a00770.html\", \"a00770\"],\n-    [\"stencilTable.h\", \"a00758.html\", \"a00758\"],\n-    [\"stencilTableFactory.h\", \"a00752.html\", \"a00752\"],\n-    [\"topologyDescriptor.h\", \"a00785.html\", \"a00785\"],\n-    [\"topologyLevel.h\", \"a00782.html\", \"a00782\"],\n-    [\"topologyRefiner.h\", \"a00764.html\", \"a00764\"],\n-    [\"topologyRefinerFactory.h\", \"a00767.html\", \"a00767\"],\n+    [\"error.h\", \"a00839.html\", \"a00839\"],\n+    [\"patchDescriptor.h\", \"a00857.html\", \"a00857\"],\n+    [\"patchMap.h\", \"a00830.html\", \"a00830\"],\n+    [\"patchParam.h\", \"a00836.html\", \"a00836\"],\n+    [\"patchTable.h\", \"a00842.html\", \"a00842\"],\n+    [\"patchTableFactory.h\", \"a00854.html\", \"a00854\"],\n+    [\"primvarRefiner.h\", \"a00851.html\", \"a00851\"],\n+    [\"ptexIndices.h\", \"a00848.html\", \"a00848\"],\n+    [\"stencilTable.h\", \"a00818.html\", \"a00818\"],\n+    [\"stencilTableFactory.h\", \"a00824.html\", \"a00824\"],\n+    [\"topologyDescriptor.h\", \"a00845.html\", \"a00845\"],\n+    [\"topologyLevel.h\", \"a00821.html\", \"a00821\"],\n+    [\"topologyRefiner.h\", \"a00833.html\", \"a00833\"],\n+    [\"topologyRefinerFactory.h\", \"a00827.html\", \"a00827\"],\n     [\"types.h\", \"a01486.html\", \"a01486\"]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/dir_bd5473d7d5841d48919aaa9ad0cb1f9b.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/dir_bd5473d7d5841d48919aaa9ad0cb1f9b.html", "unified_diff": "@@ -93,29 +93,29 @@\n <div class=\"header\">\n   <div class=\"headertitle\"><div class=\"title\">vtr Directory Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"files\" name=\"files\"></a>\n Files</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00683_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00683.html\">array.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00797_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00797.html\">array.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00698_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00698.html\">componentInterfaces.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00812_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00812.html\">componentInterfaces.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00689_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00689.html\">fvarLevel.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00794_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00794.html\">fvarLevel.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00680_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00680.html\">fvarRefinement.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00806_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00806.html\">fvarRefinement.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00695_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00695.html\">level.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00815_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00815.html\">level.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00674_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00674.html\">refinement.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00803_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00803.html\">refinement.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00677_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00677.html\">sparseSelector.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00809_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00809.html\">sparseSelector.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00692_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00692.html\">stackBuffer.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00800_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00800.html\">stackBuffer.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a01495_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01495.html\">types.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/dir_bd5473d7d5841d48919aaa9ad0cb1f9b.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/dir_bd5473d7d5841d48919aaa9ad0cb1f9b.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,11 +1,11 @@\n var dir_bd5473d7d5841d48919aaa9ad0cb1f9b = [\n-    [\"array.h\", \"a00683.html\", \"a00683\"],\n-    [\"componentInterfaces.h\", \"a00698.html\", null],\n-    [\"fvarLevel.h\", \"a00689.html\", null],\n-    [\"fvarRefinement.h\", \"a00680.html\", null],\n-    [\"level.h\", \"a00695.html\", null],\n-    [\"refinement.h\", \"a00674.html\", null],\n-    [\"sparseSelector.h\", \"a00677.html\", null],\n-    [\"stackBuffer.h\", \"a00692.html\", null],\n+    [\"array.h\", \"a00797.html\", \"a00797\"],\n+    [\"componentInterfaces.h\", \"a00812.html\", null],\n+    [\"fvarLevel.h\", \"a00794.html\", null],\n+    [\"fvarRefinement.h\", \"a00806.html\", null],\n+    [\"level.h\", \"a00815.html\", null],\n+    [\"refinement.h\", \"a00803.html\", null],\n+    [\"sparseSelector.h\", \"a00809.html\", null],\n+    [\"stackBuffer.h\", \"a00800.html\", null],\n     [\"types.h\", \"a01495.html\", \"a01495\"]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/dir_f61368944c63c2c1f8c69bc232e59c39.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/dir_f61368944c63c2c1f8c69bc232e59c39.html", "unified_diff": "@@ -93,25 +93,25 @@\n <div class=\"header\">\n   <div class=\"headertitle\"><div class=\"title\">sdc Directory Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"files\" name=\"files\"></a>\n Files</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00740_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00740.html\">bilinearScheme.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00875_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00875.html\">bilinearScheme.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00737_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00737.html\">catmarkScheme.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00866_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00866.html\">catmarkScheme.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00731_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00731.html\">crease.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00869_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00869.html\">crease.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00728_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00728.html\">loopScheme.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00872_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00872.html\">loopScheme.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00734_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00734.html\">options.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00860_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00860.html\">options.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00743_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00743.html\">scheme.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00863_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00863.html\">scheme.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a01492_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01492.html\">types.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/dir_f61368944c63c2c1f8c69bc232e59c39.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/dir_f61368944c63c2c1f8c69bc232e59c39.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,9 +1,9 @@\n var dir_f61368944c63c2c1f8c69bc232e59c39 = [\n-    [\"bilinearScheme.h\", \"a00740.html\", null],\n-    [\"catmarkScheme.h\", \"a00737.html\", null],\n-    [\"crease.h\", \"a00731.html\", \"a00731\"],\n-    [\"loopScheme.h\", \"a00728.html\", null],\n-    [\"options.h\", \"a00734.html\", \"a00734\"],\n-    [\"scheme.h\", \"a00743.html\", \"a00743\"],\n+    [\"bilinearScheme.h\", \"a00875.html\", null],\n+    [\"catmarkScheme.h\", \"a00866.html\", null],\n+    [\"crease.h\", \"a00869.html\", \"a00869\"],\n+    [\"loopScheme.h\", \"a00872.html\", null],\n+    [\"options.h\", \"a00860.html\", \"a00860\"],\n+    [\"scheme.h\", \"a00863.html\", \"a00863\"],\n     [\"types.h\", \"a01492.html\", \"a01492\"]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/dir_fa5edef2a780a73fbfb6a11f1af88ceb.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/dir_fa5edef2a780a73fbfb6a11f1af88ceb.html", "unified_diff": "@@ -93,31 +93,31 @@\n <div class=\"header\">\n   <div class=\"headertitle\"><div class=\"title\">bfr Directory Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"files\" name=\"files\"></a>\n Files</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00701_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00701.html\">limits.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00890_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00890.html\">limits.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00719_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00719.html\">parameterization.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00899_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00899.html\">parameterization.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00716_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00716.html\">refinerSurfaceFactory.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00884_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00884.html\">refinerSurfaceFactory.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00704_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00704.html\">surface.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00887_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00887.html\">surface.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00713_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00713.html\">surfaceFactory.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00881_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00881.html\">surfaceFactory.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00710_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00710.html\">surfaceFactoryCache.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00896_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00896.html\">surfaceFactoryCache.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00707_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00707.html\">surfaceFactoryMeshAdapter.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00893_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00893.html\">surfaceFactoryMeshAdapter.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00722_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00722.html\">tessellation.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00902_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00902.html\">tessellation.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00725_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00725.html\">vertexDescriptor.h</a></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\"><a href=\"a00878_source.html\"><span class=\"icondoc\"></span></a>&#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00878.html\">vertexDescriptor.h</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/dir_fa5edef2a780a73fbfb6a11f1af88ceb.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/dir_fa5edef2a780a73fbfb6a11f1af88ceb.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,11 +1,11 @@\n var dir_fa5edef2a780a73fbfb6a11f1af88ceb = [\n-    [\"limits.h\", \"a00701.html\", \"a00701\"],\n-    [\"parameterization.h\", \"a00719.html\", \"a00719\"],\n-    [\"refinerSurfaceFactory.h\", \"a00716.html\", \"a00716\"],\n-    [\"surface.h\", \"a00704.html\", \"a00704\"],\n-    [\"surfaceFactory.h\", \"a00713.html\", \"a00713\"],\n-    [\"surfaceFactoryCache.h\", \"a00710.html\", \"a00710\"],\n-    [\"surfaceFactoryMeshAdapter.h\", \"a00707.html\", \"a00707\"],\n-    [\"tessellation.h\", \"a00722.html\", \"a00722\"],\n-    [\"vertexDescriptor.h\", \"a00725.html\", \"a00725\"]\n+    [\"limits.h\", \"a00890.html\", \"a00890\"],\n+    [\"parameterization.h\", \"a00899.html\", \"a00899\"],\n+    [\"refinerSurfaceFactory.h\", \"a00884.html\", \"a00884\"],\n+    [\"surface.h\", \"a00887.html\", \"a00887\"],\n+    [\"surfaceFactory.h\", \"a00881.html\", \"a00881\"],\n+    [\"surfaceFactoryCache.h\", \"a00896.html\", \"a00896\"],\n+    [\"surfaceFactoryMeshAdapter.h\", \"a00893.html\", \"a00893\"],\n+    [\"tessellation.h\", \"a00902.html\", \"a00902\"],\n+    [\"vertexDescriptor.h\", \"a00878.html\", \"a00878\"]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/files.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/files.html", "unified_diff": "@@ -94,97 +94,97 @@\n   <div class=\"headertitle\"><div class=\"title\">File List</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\">Here is a list of all files with brief descriptions:</div><div class=\"directory\">\n <div class=\"levels\">[detail level <span onclick=\"javascript:toggleLevel(1);\">1</span><span onclick=\"javascript:toggleLevel(2);\">2</span><span onclick=\"javascript:toggleLevel(3);\">3</span>]</div><table class=\"directory\">\n <tr id=\"row_0_\" class=\"even\"><td class=\"entry\"><span style=\"width:0px;display:inline-block;\">&#160;</span><span id=\"arr_0_\" class=\"arrow\" onclick=\"toggleFolder('0_')\">&#9660;</span><span id=\"img_0_\" class=\"iconfopen\" onclick=\"toggleFolder('0_')\">&#160;</span><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\" target=\"_self\">opensubdiv</a></td><td class=\"desc\"></td></tr>\n <tr id=\"row_0_0_\" class=\"odd\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_0_0_\" class=\"arrow\" onclick=\"toggleFolder('0_0_')\">&#9660;</span><span id=\"img_0_0_\" class=\"iconfopen\" onclick=\"toggleFolder('0_0_')\">&#160;</span><a class=\"el\" href=\"dir_fa5edef2a780a73fbfb6a11f1af88ceb.html\" target=\"_self\">bfr</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_0_0_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00701_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00701.html\" target=\"_self\">limits.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_0_1_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00719_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00719.html\" target=\"_self\">parameterization.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_0_2_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00716_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00716.html\" target=\"_self\">refinerSurfaceFactory.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_0_3_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00704_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00704.html\" target=\"_self\">surface.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_0_4_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00713_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00713.html\" target=\"_self\">surfaceFactory.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_0_5_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00710_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00710.html\" target=\"_self\">surfaceFactoryCache.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_0_6_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00707_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00707.html\" target=\"_self\">surfaceFactoryMeshAdapter.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_0_7_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00722_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00722.html\" target=\"_self\">tessellation.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_0_8_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00725_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00725.html\" target=\"_self\">vertexDescriptor.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_0_0_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00890_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00890.html\" target=\"_self\">limits.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_0_1_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00899_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00899.html\" target=\"_self\">parameterization.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_0_2_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00884_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00884.html\" target=\"_self\">refinerSurfaceFactory.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_0_3_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00887_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00887.html\" target=\"_self\">surface.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_0_4_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00881_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00881.html\" target=\"_self\">surfaceFactory.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_0_5_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00896_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00896.html\" target=\"_self\">surfaceFactoryCache.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_0_6_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00893_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00893.html\" target=\"_self\">surfaceFactoryMeshAdapter.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_0_7_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00902_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00902.html\" target=\"_self\">tessellation.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_0_8_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00878_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00878.html\" target=\"_self\">vertexDescriptor.h</a></td><td class=\"desc\"></td></tr>\n <tr id=\"row_0_1_\" class=\"odd\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_0_1_\" class=\"arrow\" onclick=\"toggleFolder('0_1_')\">&#9660;</span><span id=\"img_0_1_\" class=\"iconfopen\" onclick=\"toggleFolder('0_1_')\">&#160;</span><a class=\"el\" href=\"dir_7f420b72a822828cfa8b0561c695a5cc.html\" target=\"_self\">far</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_1_0_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00749_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00749.html\" target=\"_self\">error.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_1_1_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00773_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00773.html\" target=\"_self\">patchDescriptor.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_1_2_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00779_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00779.html\" target=\"_self\">patchMap.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_1_3_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00755_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00755.html\" target=\"_self\">patchParam.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_1_4_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00761_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00761.html\" target=\"_self\">patchTable.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_1_5_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00776_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00776.html\" target=\"_self\">patchTableFactory.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_1_6_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00746_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00746.html\" target=\"_self\">primvarRefiner.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_1_7_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00770_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00770.html\" target=\"_self\">ptexIndices.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_1_8_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00758_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00758.html\" target=\"_self\">stencilTable.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_1_9_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00752_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00752.html\" target=\"_self\">stencilTableFactory.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_1_10_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00785_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00785.html\" target=\"_self\">topologyDescriptor.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_1_11_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00782_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00782.html\" target=\"_self\">topologyLevel.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_1_12_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00764_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00764.html\" target=\"_self\">topologyRefiner.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_1_13_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00767_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00767.html\" target=\"_self\">topologyRefinerFactory.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_1_0_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00839_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00839.html\" target=\"_self\">error.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_1_1_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00857_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00857.html\" target=\"_self\">patchDescriptor.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_1_2_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00830_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00830.html\" target=\"_self\">patchMap.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_1_3_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00836_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00836.html\" target=\"_self\">patchParam.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_1_4_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00842_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00842.html\" target=\"_self\">patchTable.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_1_5_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00854_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00854.html\" target=\"_self\">patchTableFactory.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_1_6_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00851_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00851.html\" target=\"_self\">primvarRefiner.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_1_7_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00848_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00848.html\" target=\"_self\">ptexIndices.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_1_8_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00818_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00818.html\" target=\"_self\">stencilTable.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_1_9_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00824_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00824.html\" target=\"_self\">stencilTableFactory.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_1_10_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00845_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00845.html\" target=\"_self\">topologyDescriptor.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_1_11_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00821_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00821.html\" target=\"_self\">topologyLevel.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_1_12_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00833_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00833.html\" target=\"_self\">topologyRefiner.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_1_13_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00827_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00827.html\" target=\"_self\">topologyRefinerFactory.h</a></td><td class=\"desc\"></td></tr>\n <tr id=\"row_0_1_14_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a01486_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a01486.html\" target=\"_self\">types.h</a></td><td class=\"desc\"></td></tr>\n <tr id=\"row_0_2_\" class=\"odd\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_0_2_\" class=\"arrow\" onclick=\"toggleFolder('0_2_')\">&#9660;</span><span id=\"img_0_2_\" class=\"iconfopen\" onclick=\"toggleFolder('0_2_')\">&#160;</span><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\" target=\"_self\">osd</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_2_0_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00866_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00866.html\" target=\"_self\">bufferDescriptor.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_2_1_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00830_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00830.html\" target=\"_self\">clEvaluator.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_2_2_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00833_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00833.html\" target=\"_self\">clPatchTable.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_2_3_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00881_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00881.html\" target=\"_self\">clVertexBuffer.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_2_4_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00896_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00896.html\" target=\"_self\">cpuD3D11VertexBuffer.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_2_5_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00803_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00803.html\" target=\"_self\">cpuEvaluator.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_2_6_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00821_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00821.html\" target=\"_self\">cpuGLVertexBuffer.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_2_7_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00818_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00818.html\" target=\"_self\">cpuPatchTable.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_2_8_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00899_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00899.html\" target=\"_self\">cpuVertexBuffer.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_2_9_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00839_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00839.html\" target=\"_self\">cudaEvaluator.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_2_10_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00836_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00836.html\" target=\"_self\">cudaPatchTable.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_2_11_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00875_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00875.html\" target=\"_self\">cudaVertexBuffer.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_2_12_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00800_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00800.html\" target=\"_self\">d3d11ComputeEvaluator.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_2_13_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00863_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00863.html\" target=\"_self\">d3d11LegacyGregoryPatchTable.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_2_14_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00860_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00860.html\" target=\"_self\">d3d11Mesh.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_2_15_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00815_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00815.html\" target=\"_self\">d3d11PatchTable.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_2_16_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00902_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00902.html\" target=\"_self\">d3d11VertexBuffer.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_2_17_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00848_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00848.html\" target=\"_self\">glComputeEvaluator.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_2_18_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00887_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00887.html\" target=\"_self\">glLegacyGregoryPatchTable.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_2_19_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00878_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00878.html\" target=\"_self\">glMesh.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_2_20_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00788_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00788.html\" target=\"_self\">glPatchTable.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_2_21_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00827_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00827.html\" target=\"_self\">glslPatchShaderSource.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_2_22_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00869_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00869.html\" target=\"_self\">glVertexBuffer.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_2_23_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00791_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00791.html\" target=\"_self\">glXFBEvaluator.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_2_24_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00794_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00794.html\" target=\"_self\">hlslPatchShaderSource.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_2_25_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00872_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00872.html\" target=\"_self\">mesh.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_2_26_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00824_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00824.html\" target=\"_self\">mtlCommon.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_2_27_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00806_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00806.html\" target=\"_self\">mtlComputeEvaluator.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_2_28_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00893_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00893.html\" target=\"_self\">mtlLegacyGregoryPatchTable.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_2_29_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00812_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00812.html\" target=\"_self\">mtlMesh.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_2_30_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00851_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00851.html\" target=\"_self\">mtlPatchShaderSource.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_2_31_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00809_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00809.html\" target=\"_self\">mtlPatchTable.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_2_32_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00884_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00884.html\" target=\"_self\">mtlVertexBuffer.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_2_33_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00854_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00854.html\" target=\"_self\">ompEvaluator.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_2_34_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00797_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00797.html\" target=\"_self\">ompKernel.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_2_35_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00845_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00845.html\" target=\"_self\">opencl.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_2_36_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00842_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00842.html\" target=\"_self\">opengl.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_2_37_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00857_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00857.html\" target=\"_self\">tbbEvaluator.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_2_38_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00890_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00890.html\" target=\"_self\">tbbKernel.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_2_0_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00764_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00764.html\" target=\"_self\">bufferDescriptor.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_2_1_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00749_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00749.html\" target=\"_self\">clEvaluator.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_2_2_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00785_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00785.html\" target=\"_self\">clPatchTable.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_2_3_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00725_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00725.html\" target=\"_self\">clVertexBuffer.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_2_4_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00773_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00773.html\" target=\"_self\">cpuD3D11VertexBuffer.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_2_5_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00782_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00782.html\" target=\"_self\">cpuEvaluator.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_2_6_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00680_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00680.html\" target=\"_self\">cpuGLVertexBuffer.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_2_7_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00791_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00791.html\" target=\"_self\">cpuPatchTable.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_2_8_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00743_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00743.html\" target=\"_self\">cpuVertexBuffer.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_2_9_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00692_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00692.html\" target=\"_self\">cudaEvaluator.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_2_10_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00677_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00677.html\" target=\"_self\">cudaPatchTable.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_2_11_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00674_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00674.html\" target=\"_self\">cudaVertexBuffer.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_2_12_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00686_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00686.html\" target=\"_self\">d3d11ComputeEvaluator.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_2_13_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00695_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00695.html\" target=\"_self\">d3d11LegacyGregoryPatchTable.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_2_14_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00737_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00737.html\" target=\"_self\">d3d11Mesh.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_2_15_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00710_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00710.html\" target=\"_self\">d3d11PatchTable.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_2_16_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00788_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00788.html\" target=\"_self\">d3d11VertexBuffer.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_2_17_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00752_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00752.html\" target=\"_self\">glComputeEvaluator.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_2_18_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00767_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00767.html\" target=\"_self\">glLegacyGregoryPatchTable.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_2_19_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00719_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00719.html\" target=\"_self\">glMesh.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_2_20_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00779_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00779.html\" target=\"_self\">glPatchTable.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_2_21_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00728_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00728.html\" target=\"_self\">glslPatchShaderSource.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_2_22_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00683_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00683.html\" target=\"_self\">glVertexBuffer.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_2_23_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00701_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00701.html\" target=\"_self\">glXFBEvaluator.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_2_24_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00716_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00716.html\" target=\"_self\">hlslPatchShaderSource.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_2_25_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00704_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00704.html\" target=\"_self\">mesh.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_2_26_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00698_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00698.html\" target=\"_self\">mtlCommon.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_2_27_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00689_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00689.html\" target=\"_self\">mtlComputeEvaluator.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_2_28_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00746_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00746.html\" target=\"_self\">mtlLegacyGregoryPatchTable.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_2_29_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00740_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00740.html\" target=\"_self\">mtlMesh.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_2_30_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00734_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00734.html\" target=\"_self\">mtlPatchShaderSource.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_2_31_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00776_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00776.html\" target=\"_self\">mtlPatchTable.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_2_32_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00713_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00713.html\" target=\"_self\">mtlVertexBuffer.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_2_33_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00707_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00707.html\" target=\"_self\">ompEvaluator.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_2_34_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00761_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00761.html\" target=\"_self\">ompKernel.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_2_35_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00755_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00755.html\" target=\"_self\">opencl.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_2_36_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00722_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00722.html\" target=\"_self\">opengl.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_2_37_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00731_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00731.html\" target=\"_self\">tbbEvaluator.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_2_38_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00758_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00758.html\" target=\"_self\">tbbKernel.h</a></td><td class=\"desc\"></td></tr>\n <tr id=\"row_0_2_39_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a01489_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a01489.html\" target=\"_self\">types.h</a></td><td class=\"desc\"></td></tr>\n <tr id=\"row_0_3_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_0_3_\" class=\"arrow\" onclick=\"toggleFolder('0_3_')\">&#9660;</span><span id=\"img_0_3_\" class=\"iconfopen\" onclick=\"toggleFolder('0_3_')\">&#160;</span><a class=\"el\" href=\"dir_f61368944c63c2c1f8c69bc232e59c39.html\" target=\"_self\">sdc</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_3_0_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00740_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00740.html\" target=\"_self\">bilinearScheme.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_3_1_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00737_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00737.html\" target=\"_self\">catmarkScheme.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_3_2_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00731_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00731.html\" target=\"_self\">crease.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_3_3_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00728_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00728.html\" target=\"_self\">loopScheme.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_3_4_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00734_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00734.html\" target=\"_self\">options.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_3_5_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00743_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00743.html\" target=\"_self\">scheme.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_3_0_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00875_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00875.html\" target=\"_self\">bilinearScheme.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_3_1_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00866_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00866.html\" target=\"_self\">catmarkScheme.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_3_2_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00869_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00869.html\" target=\"_self\">crease.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_3_3_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00872_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00872.html\" target=\"_self\">loopScheme.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_3_4_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00860_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00860.html\" target=\"_self\">options.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_3_5_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00863_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00863.html\" target=\"_self\">scheme.h</a></td><td class=\"desc\"></td></tr>\n <tr id=\"row_0_3_6_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a01492_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a01492.html\" target=\"_self\">types.h</a></td><td class=\"desc\"></td></tr>\n <tr id=\"row_0_4_\" class=\"even\"><td class=\"entry\"><span style=\"width:16px;display:inline-block;\">&#160;</span><span id=\"arr_0_4_\" class=\"arrow\" onclick=\"toggleFolder('0_4_')\">&#9660;</span><span id=\"img_0_4_\" class=\"iconfopen\" onclick=\"toggleFolder('0_4_')\">&#160;</span><a class=\"el\" href=\"dir_bd5473d7d5841d48919aaa9ad0cb1f9b.html\" target=\"_self\">vtr</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_4_0_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00683_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00683.html\" target=\"_self\">array.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_4_1_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00698_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00698.html\" target=\"_self\">componentInterfaces.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_4_2_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00689_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00689.html\" target=\"_self\">fvarLevel.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_4_3_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00680_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00680.html\" target=\"_self\">fvarRefinement.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_4_4_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00695_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00695.html\" target=\"_self\">level.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_4_5_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00674_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00674.html\" target=\"_self\">refinement.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_4_6_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00677_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00677.html\" target=\"_self\">sparseSelector.h</a></td><td class=\"desc\"></td></tr>\n-<tr id=\"row_0_4_7_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00692_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00692.html\" target=\"_self\">stackBuffer.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_4_0_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00797_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00797.html\" target=\"_self\">array.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_4_1_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00812_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00812.html\" target=\"_self\">componentInterfaces.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_4_2_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00794_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00794.html\" target=\"_self\">fvarLevel.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_4_3_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00806_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00806.html\" target=\"_self\">fvarRefinement.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_4_4_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00815_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00815.html\" target=\"_self\">level.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_4_5_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00803_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00803.html\" target=\"_self\">refinement.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_4_6_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00809_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00809.html\" target=\"_self\">sparseSelector.h</a></td><td class=\"desc\"></td></tr>\n+<tr id=\"row_0_4_7_\" class=\"even\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a00800_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a00800.html\" target=\"_self\">stackBuffer.h</a></td><td class=\"desc\"></td></tr>\n <tr id=\"row_0_4_8_\" class=\"odd\"><td class=\"entry\"><span style=\"width:48px;display:inline-block;\">&#160;</span><a href=\"a01495_source.html\"><span class=\"icondoc\"></span></a><a class=\"el\" href=\"a01495.html\" target=\"_self\">types.h</a></td><td class=\"desc\"></td></tr>\n </table>\n </div><!-- directory -->\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n"}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/navtreeindex0.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/navtreeindex0.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,205 +1,205 @@\n var NAVTREEINDEX0 = {\n-    \"a00674.html\": [2, 0, 0, 4, 5],\n-    \"a00674_source.html\": [2, 0, 0, 4, 5],\n-    \"a00677.html\": [2, 0, 0, 4, 6],\n-    \"a00677_source.html\": [2, 0, 0, 4, 6],\n-    \"a00680.html\": [2, 0, 0, 4, 3],\n-    \"a00680_source.html\": [2, 0, 0, 4, 3],\n-    \"a00683.html\": [2, 0, 0, 4, 0],\n-    \"a00683_source.html\": [2, 0, 0, 4, 0],\n-    \"a00689.html\": [2, 0, 0, 4, 2],\n-    \"a00689_source.html\": [2, 0, 0, 4, 2],\n-    \"a00692.html\": [2, 0, 0, 4, 7],\n-    \"a00692_source.html\": [2, 0, 0, 4, 7],\n-    \"a00695.html\": [2, 0, 0, 4, 4],\n-    \"a00695_source.html\": [2, 0, 0, 4, 4],\n-    \"a00698.html\": [2, 0, 0, 4, 1],\n-    \"a00698_source.html\": [2, 0, 0, 4, 1],\n-    \"a00701.html\": [2, 0, 0, 0, 0],\n-    \"a00701_source.html\": [2, 0, 0, 0, 0],\n-    \"a00704.html\": [2, 0, 0, 0, 3],\n-    \"a00704_source.html\": [2, 0, 0, 0, 3],\n-    \"a00707.html\": [2, 0, 0, 0, 6],\n-    \"a00707_source.html\": [2, 0, 0, 0, 6],\n-    \"a00710.html\": [2, 0, 0, 0, 5],\n-    \"a00710_source.html\": [2, 0, 0, 0, 5],\n-    \"a00713.html\": [2, 0, 0, 0, 4],\n-    \"a00713_source.html\": [2, 0, 0, 0, 4],\n-    \"a00716.html\": [2, 0, 0, 0, 2],\n-    \"a00716_source.html\": [2, 0, 0, 0, 2],\n-    \"a00719.html\": [2, 0, 0, 0, 1],\n-    \"a00719_source.html\": [2, 0, 0, 0, 1],\n-    \"a00722.html\": [2, 0, 0, 0, 7],\n-    \"a00722_source.html\": [2, 0, 0, 0, 7],\n-    \"a00725.html\": [2, 0, 0, 0, 8],\n-    \"a00725_source.html\": [2, 0, 0, 0, 8],\n-    \"a00728.html\": [2, 0, 0, 3, 3],\n-    \"a00728_source.html\": [2, 0, 0, 3, 3],\n-    \"a00731.html\": [2, 0, 0, 3, 2],\n-    \"a00731_source.html\": [2, 0, 0, 3, 2],\n-    \"a00734.html\": [2, 0, 0, 3, 4],\n-    \"a00734_source.html\": [2, 0, 0, 3, 4],\n-    \"a00737.html\": [2, 0, 0, 3, 1],\n-    \"a00737_source.html\": [2, 0, 0, 3, 1],\n-    \"a00740.html\": [2, 0, 0, 3, 0],\n-    \"a00740_source.html\": [2, 0, 0, 3, 0],\n-    \"a00743.html\": [2, 0, 0, 3, 5],\n-    \"a00743_source.html\": [2, 0, 0, 3, 5],\n-    \"a00746.html\": [2, 0, 0, 1, 6],\n-    \"a00746_source.html\": [2, 0, 0, 1, 6],\n-    \"a00749.html\": [2, 0, 0, 1, 0],\n-    \"a00749.html#a25d51c3a61fb3dacded6e48d01fd2fdb\": [2, 0, 0, 1, 0, 3],\n-    \"a00749.html#a2bd300390ebc686e71a3690f4a0b1726\": [2, 0, 0, 1, 0, 1],\n-    \"a00749.html#a3ba4fd4ed534a5c9c32ad01fa88bb8d9\": [2, 0, 0, 1, 0, 4],\n-    \"a00749.html#a73bbe6b41209e4c34234f192f0193a63\": [2, 0, 0, 1, 0, 5],\n-    \"a00749.html#a97d41b6faaf421937e6b82bd1c3067db\": [2, 0, 0, 1, 0, 6],\n-    \"a00749.html#aa1630f297a91dfc683dfcfddeeebb2ac\": [2, 0, 0, 1, 0, 0],\n-    \"a00749.html#ab0df38968e4f03a3f1f6d6df0f31f45a\": [2, 0, 0, 1, 0, 2],\n-    \"a00749.html#ab0df38968e4f03a3f1f6d6df0f31f45aa2a5bda2a3e25aa282462381f55284980\": [2, 0, 0, 1, 0, 2, 1],\n-    \"a00749.html#ab0df38968e4f03a3f1f6d6df0f31f45aa3efe6cb2ec7e23769d53919dfb3291b5\": [2, 0, 0, 1, 0, 2, 2],\n-    \"a00749.html#ab0df38968e4f03a3f1f6d6df0f31f45aa9b2839feb039937015e9668f601e4d32\": [2, 0, 0, 1, 0, 2, 3],\n-    \"a00749.html#ab0df38968e4f03a3f1f6d6df0f31f45aabeca977bc439b451aea1325f48a52a0b\": [2, 0, 0, 1, 0, 2, 0],\n-    \"a00749.html#ab0df38968e4f03a3f1f6d6df0f31f45aac565fa39d681e2766584dd87246c3bdd\": [2, 0, 0, 1, 0, 2, 4],\n-    \"a00749_source.html\": [2, 0, 0, 1, 0],\n-    \"a00752.html\": [2, 0, 0, 1, 9],\n-    \"a00752_source.html\": [2, 0, 0, 1, 9],\n-    \"a00755.html\": [2, 0, 0, 1, 3],\n-    \"a00755.html#a3139c7c52ddf26b2403e8e95ff63eeb3\": [2, 0, 0, 1, 3, 1],\n-    \"a00755.html#a46ea68db89cc3d55c4191ef7648281ce\": [2, 0, 0, 1, 3, 3],\n-    \"a00755.html#abe07210a029a01571c54276ae28b4d88\": [2, 0, 0, 1, 3, 2],\n-    \"a00755_source.html\": [2, 0, 0, 1, 3],\n-    \"a00758.html\": [2, 0, 0, 1, 8],\n-    \"a00758_source.html\": [2, 0, 0, 1, 8],\n-    \"a00761.html\": [2, 0, 0, 1, 4],\n-    \"a00761_source.html\": [2, 0, 0, 1, 4],\n-    \"a00764.html\": [2, 0, 0, 1, 12],\n-    \"a00764_source.html\": [2, 0, 0, 1, 12],\n-    \"a00767.html\": [2, 0, 0, 1, 13],\n-    \"a00767_source.html\": [2, 0, 0, 1, 13],\n-    \"a00770.html\": [2, 0, 0, 1, 7],\n-    \"a00770_source.html\": [2, 0, 0, 1, 7],\n-    \"a00773.html\": [2, 0, 0, 1, 1],\n-    \"a00773.html#ad258c2d8f7871bc0d40cf3a9ded6e08a\": [2, 0, 0, 1, 1, 1],\n-    \"a00773_source.html\": [2, 0, 0, 1, 1],\n-    \"a00776.html\": [2, 0, 0, 1, 5],\n-    \"a00776_source.html\": [2, 0, 0, 1, 5],\n-    \"a00779.html\": [2, 0, 0, 1, 2],\n-    \"a00779_source.html\": [2, 0, 0, 1, 2],\n-    \"a00782.html\": [2, 0, 0, 1, 11],\n-    \"a00782_source.html\": [2, 0, 0, 1, 11],\n-    \"a00785.html\": [2, 0, 0, 1, 10],\n-    \"a00785_source.html\": [2, 0, 0, 1, 10],\n-    \"a00788.html\": [2, 0, 0, 2, 20],\n-    \"a00788_source.html\": [2, 0, 0, 2, 20],\n-    \"a00791.html\": [2, 0, 0, 2, 23],\n-    \"a00791_source.html\": [2, 0, 0, 2, 23],\n-    \"a00794.html\": [2, 0, 0, 2, 24],\n-    \"a00794_source.html\": [2, 0, 0, 2, 24],\n-    \"a00797.html\": [2, 0, 0, 2, 34],\n-    \"a00797.html#a44a05502feb5015035bc81b93cffb99c\": [2, 0, 0, 2, 34, 0],\n-    \"a00797.html#a870745ff3e883b32547d4db42b3be2bd\": [2, 0, 0, 2, 34, 2],\n-    \"a00797.html#a907dc53421460557871ddc35f77751f5\": [2, 0, 0, 2, 34, 1],\n-    \"a00797_source.html\": [2, 0, 0, 2, 34],\n-    \"a00800.html\": [2, 0, 0, 2, 12],\n-    \"a00800_source.html\": [2, 0, 0, 2, 12],\n-    \"a00803.html\": [2, 0, 0, 2, 5],\n-    \"a00803_source.html\": [2, 0, 0, 2, 5],\n-    \"a00806.html\": [2, 0, 0, 2, 27],\n-    \"a00806_source.html\": [2, 0, 0, 2, 27],\n-    \"a00809.html\": [2, 0, 0, 2, 31],\n-    \"a00809_source.html\": [2, 0, 0, 2, 31],\n-    \"a00812.html\": [2, 0, 0, 2, 29],\n-    \"a00812.html#aa41e5b43fe46eeb0f97ff6ebdb1935aa\": [2, 0, 0, 2, 29, 0],\n-    \"a00812_source.html\": [2, 0, 0, 2, 29],\n-    \"a00815.html\": [2, 0, 0, 2, 15],\n-    \"a00815_source.html\": [2, 0, 0, 2, 15],\n-    \"a00818.html\": [2, 0, 0, 2, 7],\n-    \"a00818_source.html\": [2, 0, 0, 2, 7],\n-    \"a00821.html\": [2, 0, 0, 2, 6],\n-    \"a00821_source.html\": [2, 0, 0, 2, 6],\n-    \"a00824.html\": [2, 0, 0, 2, 26],\n-    \"a00824_source.html\": [2, 0, 0, 2, 26],\n-    \"a00827.html\": [2, 0, 0, 2, 21],\n-    \"a00827_source.html\": [2, 0, 0, 2, 21],\n-    \"a00830.html\": [2, 0, 0, 2, 1],\n-    \"a00830_source.html\": [2, 0, 0, 2, 1],\n-    \"a00833.html\": [2, 0, 0, 2, 2],\n-    \"a00833_source.html\": [2, 0, 0, 2, 2],\n-    \"a00836.html\": [2, 0, 0, 2, 10],\n-    \"a00836_source.html\": [2, 0, 0, 2, 10],\n-    \"a00839.html\": [2, 0, 0, 2, 9],\n-    \"a00839_source.html\": [2, 0, 0, 2, 9],\n-    \"a00842.html\": [2, 0, 0, 2, 36],\n-    \"a00842_source.html\": [2, 0, 0, 2, 36],\n-    \"a00845.html\": [2, 0, 0, 2, 35],\n-    \"a00845_source.html\": [2, 0, 0, 2, 35],\n-    \"a00848.html\": [2, 0, 0, 2, 17],\n-    \"a00848_source.html\": [2, 0, 0, 2, 17],\n-    \"a00851.html\": [2, 0, 0, 2, 30],\n-    \"a00851_source.html\": [2, 0, 0, 2, 30],\n-    \"a00854.html\": [2, 0, 0, 2, 33],\n-    \"a00854_source.html\": [2, 0, 0, 2, 33],\n-    \"a00857.html\": [2, 0, 0, 2, 37],\n-    \"a00857_source.html\": [2, 0, 0, 2, 37],\n-    \"a00860.html\": [2, 0, 0, 2, 14],\n-    \"a00860.html#ae5c8e80d05d6eaee105d8eecfa9ab609\": [2, 0, 0, 2, 14, 0],\n-    \"a00860_source.html\": [2, 0, 0, 2, 14],\n-    \"a00863.html\": [2, 0, 0, 2, 13],\n-    \"a00863_source.html\": [2, 0, 0, 2, 13],\n-    \"a00866.html\": [2, 0, 0, 2, 0],\n-    \"a00866_source.html\": [2, 0, 0, 2, 0],\n-    \"a00869.html\": [2, 0, 0, 2, 22],\n-    \"a00869_source.html\": [2, 0, 0, 2, 22],\n-    \"a00872.html\": [2, 0, 0, 2, 25],\n-    \"a00872.html#a06ceddf21c024b341a5b946049cd701a\": [2, 0, 0, 2, 25, 6],\n-    \"a00872.html#a1af6b50e9f8ae13d3d2f9d5b03b35492\": [2, 0, 0, 2, 25, 5],\n-    \"a00872.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a4124233e4f787f999c7975afceab34f3\": [2, 0, 0, 2, 25, 5, 7],\n-    \"a00872.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a5676712c77d29cfdd330e2802db1c464\": [2, 0, 0, 2, 25, 5, 11],\n-    \"a00872.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a8fab1b3018f94b5b2432c7435e795925\": [2, 0, 0, 2, 25, 5, 6],\n-    \"a00872.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a9058d69e1089fc77f1974a76c34e2071\": [2, 0, 0, 2, 25, 5, 5],\n-    \"a00872.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a9313c644b9b2a998bcb55cfcc4582b1a\": [2, 0, 0, 2, 25, 5, 1],\n-    \"a00872.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a9b8a23ab039e120012bc7c622308d603\": [2, 0, 0, 2, 25, 5, 3],\n-    \"a00872.html#a1af6b50e9f8ae13d3d2f9d5b03b35492aa2878e1a215530f5f6fb89f1e06f91ee\": [2, 0, 0, 2, 25, 5, 9],\n-    \"a00872.html#a1af6b50e9f8ae13d3d2f9d5b03b35492aa2f41b6ba0393698bb3af283283737f7\": [2, 0, 0, 2, 25, 5, 8],\n-    \"a00872.html#a1af6b50e9f8ae13d3d2f9d5b03b35492aad7b3fb2be609abdbfafaf5b1c834158\": [2, 0, 0, 2, 25, 5, 10],\n-    \"a00872.html#a1af6b50e9f8ae13d3d2f9d5b03b35492ab32b8ef595539e14041e2fb0e619e3f9\": [2, 0, 0, 2, 25, 5, 4],\n-    \"a00872.html#a1af6b50e9f8ae13d3d2f9d5b03b35492ac10e41fef659f3b3a1b730319bdedb45\": [2, 0, 0, 2, 25, 5, 2],\n-    \"a00872.html#a1af6b50e9f8ae13d3d2f9d5b03b35492adef344bcbdd50a1a93136eb53183c718\": [2, 0, 0, 2, 25, 5, 0],\n-    \"a00872.html#a33f9830228f847fae1c30c9dffe02b5a\": [2, 0, 0, 2, 25, 9],\n-    \"a00872.html#a4c2520cc1a8a5a03e3f53584629d7318\": [2, 0, 0, 2, 25, 7],\n-    \"a00872.html#a85ba9df501aea9af1ec9da1558c255bc\": [2, 0, 0, 2, 25, 4],\n-    \"a00872.html#ab5753a2b0a0995c8e2259d2c4765f7df\": [2, 0, 0, 2, 25, 8],\n-    \"a00872_source.html\": [2, 0, 0, 2, 25],\n-    \"a00875.html\": [2, 0, 0, 2, 11],\n-    \"a00875_source.html\": [2, 0, 0, 2, 11],\n-    \"a00878.html\": [2, 0, 0, 2, 19],\n-    \"a00878.html#a7f9cf2b729178bdbb847fc4afd91af9e\": [2, 0, 0, 2, 19, 0],\n-    \"a00878_source.html\": [2, 0, 0, 2, 19],\n-    \"a00881.html\": [2, 0, 0, 2, 3],\n-    \"a00881_source.html\": [2, 0, 0, 2, 3],\n-    \"a00884.html\": [2, 0, 0, 2, 32],\n-    \"a00884_source.html\": [2, 0, 0, 2, 32],\n-    \"a00887.html\": [2, 0, 0, 2, 18],\n-    \"a00887_source.html\": [2, 0, 0, 2, 18],\n-    \"a00890.html\": [2, 0, 0, 2, 38],\n-    \"a00890.html#a20e08be34d6183b6943ed7a1586eca4a\": [2, 0, 0, 2, 38, 1],\n-    \"a00890.html#a4a6a0fcc01638f2a0316b32ad158b485\": [2, 0, 0, 2, 38, 4],\n-    \"a00890.html#aa0c3c264a43eeddc5cb3a58b006d3d32\": [2, 0, 0, 2, 38, 0],\n-    \"a00890.html#aa65ed860a2fa5935d99129a898a8f0b6\": [2, 0, 0, 2, 38, 2],\n-    \"a00890.html#af23c35537952bfdd493441e5c42ff2ed\": [2, 0, 0, 2, 38, 3],\n-    \"a00890_source.html\": [2, 0, 0, 2, 38],\n-    \"a00893.html\": [2, 0, 0, 2, 28],\n-    \"a00893_source.html\": [2, 0, 0, 2, 28],\n-    \"a00896.html\": [2, 0, 0, 2, 4],\n-    \"a00896_source.html\": [2, 0, 0, 2, 4],\n-    \"a00899.html\": [2, 0, 0, 2, 8],\n-    \"a00899_source.html\": [2, 0, 0, 2, 8],\n-    \"a00902.html\": [2, 0, 0, 2, 16],\n-    \"a00902_source.html\": [2, 0, 0, 2, 16],\n+    \"a00674.html\": [2, 0, 0, 2, 11],\n+    \"a00674_source.html\": [2, 0, 0, 2, 11],\n+    \"a00677.html\": [2, 0, 0, 2, 10],\n+    \"a00677_source.html\": [2, 0, 0, 2, 10],\n+    \"a00680.html\": [2, 0, 0, 2, 6],\n+    \"a00680_source.html\": [2, 0, 0, 2, 6],\n+    \"a00683.html\": [2, 0, 0, 2, 22],\n+    \"a00683_source.html\": [2, 0, 0, 2, 22],\n+    \"a00686.html\": [2, 0, 0, 2, 12],\n+    \"a00686_source.html\": [2, 0, 0, 2, 12],\n+    \"a00689.html\": [2, 0, 0, 2, 27],\n+    \"a00689_source.html\": [2, 0, 0, 2, 27],\n+    \"a00692.html\": [2, 0, 0, 2, 9],\n+    \"a00692_source.html\": [2, 0, 0, 2, 9],\n+    \"a00695.html\": [2, 0, 0, 2, 13],\n+    \"a00695_source.html\": [2, 0, 0, 2, 13],\n+    \"a00698.html\": [2, 0, 0, 2, 26],\n+    \"a00698_source.html\": [2, 0, 0, 2, 26],\n+    \"a00701.html\": [2, 0, 0, 2, 23],\n+    \"a00701_source.html\": [2, 0, 0, 2, 23],\n+    \"a00704.html\": [2, 0, 0, 2, 25],\n+    \"a00704.html#a06ceddf21c024b341a5b946049cd701a\": [2, 0, 0, 2, 25, 6],\n+    \"a00704.html#a1af6b50e9f8ae13d3d2f9d5b03b35492\": [2, 0, 0, 2, 25, 5],\n+    \"a00704.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a4124233e4f787f999c7975afceab34f3\": [2, 0, 0, 2, 25, 5, 7],\n+    \"a00704.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a5676712c77d29cfdd330e2802db1c464\": [2, 0, 0, 2, 25, 5, 11],\n+    \"a00704.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a8fab1b3018f94b5b2432c7435e795925\": [2, 0, 0, 2, 25, 5, 6],\n+    \"a00704.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a9058d69e1089fc77f1974a76c34e2071\": [2, 0, 0, 2, 25, 5, 5],\n+    \"a00704.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a9313c644b9b2a998bcb55cfcc4582b1a\": [2, 0, 0, 2, 25, 5, 1],\n+    \"a00704.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a9b8a23ab039e120012bc7c622308d603\": [2, 0, 0, 2, 25, 5, 3],\n+    \"a00704.html#a1af6b50e9f8ae13d3d2f9d5b03b35492aa2878e1a215530f5f6fb89f1e06f91ee\": [2, 0, 0, 2, 25, 5, 9],\n+    \"a00704.html#a1af6b50e9f8ae13d3d2f9d5b03b35492aa2f41b6ba0393698bb3af283283737f7\": [2, 0, 0, 2, 25, 5, 8],\n+    \"a00704.html#a1af6b50e9f8ae13d3d2f9d5b03b35492aad7b3fb2be609abdbfafaf5b1c834158\": [2, 0, 0, 2, 25, 5, 10],\n+    \"a00704.html#a1af6b50e9f8ae13d3d2f9d5b03b35492ab32b8ef595539e14041e2fb0e619e3f9\": [2, 0, 0, 2, 25, 5, 4],\n+    \"a00704.html#a1af6b50e9f8ae13d3d2f9d5b03b35492ac10e41fef659f3b3a1b730319bdedb45\": [2, 0, 0, 2, 25, 5, 2],\n+    \"a00704.html#a1af6b50e9f8ae13d3d2f9d5b03b35492adef344bcbdd50a1a93136eb53183c718\": [2, 0, 0, 2, 25, 5, 0],\n+    \"a00704.html#a33f9830228f847fae1c30c9dffe02b5a\": [2, 0, 0, 2, 25, 9],\n+    \"a00704.html#a4c2520cc1a8a5a03e3f53584629d7318\": [2, 0, 0, 2, 25, 7],\n+    \"a00704.html#a85ba9df501aea9af1ec9da1558c255bc\": [2, 0, 0, 2, 25, 4],\n+    \"a00704.html#ab5753a2b0a0995c8e2259d2c4765f7df\": [2, 0, 0, 2, 25, 8],\n+    \"a00704_source.html\": [2, 0, 0, 2, 25],\n+    \"a00707.html\": [2, 0, 0, 2, 33],\n+    \"a00707_source.html\": [2, 0, 0, 2, 33],\n+    \"a00710.html\": [2, 0, 0, 2, 15],\n+    \"a00710_source.html\": [2, 0, 0, 2, 15],\n+    \"a00713.html\": [2, 0, 0, 2, 32],\n+    \"a00713_source.html\": [2, 0, 0, 2, 32],\n+    \"a00716.html\": [2, 0, 0, 2, 24],\n+    \"a00716_source.html\": [2, 0, 0, 2, 24],\n+    \"a00719.html\": [2, 0, 0, 2, 19],\n+    \"a00719.html#a7f9cf2b729178bdbb847fc4afd91af9e\": [2, 0, 0, 2, 19, 0],\n+    \"a00719_source.html\": [2, 0, 0, 2, 19],\n+    \"a00722.html\": [2, 0, 0, 2, 36],\n+    \"a00722_source.html\": [2, 0, 0, 2, 36],\n+    \"a00725.html\": [2, 0, 0, 2, 3],\n+    \"a00725_source.html\": [2, 0, 0, 2, 3],\n+    \"a00728.html\": [2, 0, 0, 2, 21],\n+    \"a00728_source.html\": [2, 0, 0, 2, 21],\n+    \"a00731.html\": [2, 0, 0, 2, 37],\n+    \"a00731_source.html\": [2, 0, 0, 2, 37],\n+    \"a00734.html\": [2, 0, 0, 2, 30],\n+    \"a00734_source.html\": [2, 0, 0, 2, 30],\n+    \"a00737.html\": [2, 0, 0, 2, 14],\n+    \"a00737.html#ae5c8e80d05d6eaee105d8eecfa9ab609\": [2, 0, 0, 2, 14, 0],\n+    \"a00737_source.html\": [2, 0, 0, 2, 14],\n+    \"a00740.html\": [2, 0, 0, 2, 29],\n+    \"a00740.html#aa41e5b43fe46eeb0f97ff6ebdb1935aa\": [2, 0, 0, 2, 29, 0],\n+    \"a00740_source.html\": [2, 0, 0, 2, 29],\n+    \"a00743.html\": [2, 0, 0, 2, 8],\n+    \"a00743_source.html\": [2, 0, 0, 2, 8],\n+    \"a00746.html\": [2, 0, 0, 2, 28],\n+    \"a00746_source.html\": [2, 0, 0, 2, 28],\n+    \"a00749.html\": [2, 0, 0, 2, 1],\n+    \"a00749_source.html\": [2, 0, 0, 2, 1],\n+    \"a00752.html\": [2, 0, 0, 2, 17],\n+    \"a00752_source.html\": [2, 0, 0, 2, 17],\n+    \"a00755.html\": [2, 0, 0, 2, 35],\n+    \"a00755_source.html\": [2, 0, 0, 2, 35],\n+    \"a00758.html\": [2, 0, 0, 2, 38],\n+    \"a00758.html#a20e08be34d6183b6943ed7a1586eca4a\": [2, 0, 0, 2, 38, 1],\n+    \"a00758.html#a4a6a0fcc01638f2a0316b32ad158b485\": [2, 0, 0, 2, 38, 4],\n+    \"a00758.html#aa0c3c264a43eeddc5cb3a58b006d3d32\": [2, 0, 0, 2, 38, 0],\n+    \"a00758.html#aa65ed860a2fa5935d99129a898a8f0b6\": [2, 0, 0, 2, 38, 2],\n+    \"a00758.html#af23c35537952bfdd493441e5c42ff2ed\": [2, 0, 0, 2, 38, 3],\n+    \"a00758_source.html\": [2, 0, 0, 2, 38],\n+    \"a00761.html\": [2, 0, 0, 2, 34],\n+    \"a00761.html#a44a05502feb5015035bc81b93cffb99c\": [2, 0, 0, 2, 34, 0],\n+    \"a00761.html#a870745ff3e883b32547d4db42b3be2bd\": [2, 0, 0, 2, 34, 2],\n+    \"a00761.html#a907dc53421460557871ddc35f77751f5\": [2, 0, 0, 2, 34, 1],\n+    \"a00761_source.html\": [2, 0, 0, 2, 34],\n+    \"a00764.html\": [2, 0, 0, 2, 0],\n+    \"a00764_source.html\": [2, 0, 0, 2, 0],\n+    \"a00767.html\": [2, 0, 0, 2, 18],\n+    \"a00767_source.html\": [2, 0, 0, 2, 18],\n+    \"a00773.html\": [2, 0, 0, 2, 4],\n+    \"a00773_source.html\": [2, 0, 0, 2, 4],\n+    \"a00776.html\": [2, 0, 0, 2, 31],\n+    \"a00776_source.html\": [2, 0, 0, 2, 31],\n+    \"a00779.html\": [2, 0, 0, 2, 20],\n+    \"a00779_source.html\": [2, 0, 0, 2, 20],\n+    \"a00782.html\": [2, 0, 0, 2, 5],\n+    \"a00782_source.html\": [2, 0, 0, 2, 5],\n+    \"a00785.html\": [2, 0, 0, 2, 2],\n+    \"a00785_source.html\": [2, 0, 0, 2, 2],\n+    \"a00788.html\": [2, 0, 0, 2, 16],\n+    \"a00788_source.html\": [2, 0, 0, 2, 16],\n+    \"a00791.html\": [2, 0, 0, 2, 7],\n+    \"a00791_source.html\": [2, 0, 0, 2, 7],\n+    \"a00794.html\": [2, 0, 0, 4, 2],\n+    \"a00794_source.html\": [2, 0, 0, 4, 2],\n+    \"a00797.html\": [2, 0, 0, 4, 0],\n+    \"a00797_source.html\": [2, 0, 0, 4, 0],\n+    \"a00800.html\": [2, 0, 0, 4, 7],\n+    \"a00800_source.html\": [2, 0, 0, 4, 7],\n+    \"a00803.html\": [2, 0, 0, 4, 5],\n+    \"a00803_source.html\": [2, 0, 0, 4, 5],\n+    \"a00806.html\": [2, 0, 0, 4, 3],\n+    \"a00806_source.html\": [2, 0, 0, 4, 3],\n+    \"a00809.html\": [2, 0, 0, 4, 6],\n+    \"a00809_source.html\": [2, 0, 0, 4, 6],\n+    \"a00812.html\": [2, 0, 0, 4, 1],\n+    \"a00812_source.html\": [2, 0, 0, 4, 1],\n+    \"a00815.html\": [2, 0, 0, 4, 4],\n+    \"a00815_source.html\": [2, 0, 0, 4, 4],\n+    \"a00818.html\": [2, 0, 0, 1, 8],\n+    \"a00818_source.html\": [2, 0, 0, 1, 8],\n+    \"a00821.html\": [2, 0, 0, 1, 11],\n+    \"a00821_source.html\": [2, 0, 0, 1, 11],\n+    \"a00824.html\": [2, 0, 0, 1, 9],\n+    \"a00824_source.html\": [2, 0, 0, 1, 9],\n+    \"a00827.html\": [2, 0, 0, 1, 13],\n+    \"a00827_source.html\": [2, 0, 0, 1, 13],\n+    \"a00830.html\": [2, 0, 0, 1, 2],\n+    \"a00830_source.html\": [2, 0, 0, 1, 2],\n+    \"a00833.html\": [2, 0, 0, 1, 12],\n+    \"a00833_source.html\": [2, 0, 0, 1, 12],\n+    \"a00836.html\": [2, 0, 0, 1, 3],\n+    \"a00836.html#a3139c7c52ddf26b2403e8e95ff63eeb3\": [2, 0, 0, 1, 3, 1],\n+    \"a00836.html#a46ea68db89cc3d55c4191ef7648281ce\": [2, 0, 0, 1, 3, 3],\n+    \"a00836.html#abe07210a029a01571c54276ae28b4d88\": [2, 0, 0, 1, 3, 2],\n+    \"a00836_source.html\": [2, 0, 0, 1, 3],\n+    \"a00839.html\": [2, 0, 0, 1, 0],\n+    \"a00839.html#a25d51c3a61fb3dacded6e48d01fd2fdb\": [2, 0, 0, 1, 0, 3],\n+    \"a00839.html#a2bd300390ebc686e71a3690f4a0b1726\": [2, 0, 0, 1, 0, 1],\n+    \"a00839.html#a3ba4fd4ed534a5c9c32ad01fa88bb8d9\": [2, 0, 0, 1, 0, 4],\n+    \"a00839.html#a73bbe6b41209e4c34234f192f0193a63\": [2, 0, 0, 1, 0, 5],\n+    \"a00839.html#a97d41b6faaf421937e6b82bd1c3067db\": [2, 0, 0, 1, 0, 6],\n+    \"a00839.html#aa1630f297a91dfc683dfcfddeeebb2ac\": [2, 0, 0, 1, 0, 0],\n+    \"a00839.html#ab0df38968e4f03a3f1f6d6df0f31f45a\": [2, 0, 0, 1, 0, 2],\n+    \"a00839.html#ab0df38968e4f03a3f1f6d6df0f31f45aa2a5bda2a3e25aa282462381f55284980\": [2, 0, 0, 1, 0, 2, 1],\n+    \"a00839.html#ab0df38968e4f03a3f1f6d6df0f31f45aa3efe6cb2ec7e23769d53919dfb3291b5\": [2, 0, 0, 1, 0, 2, 2],\n+    \"a00839.html#ab0df38968e4f03a3f1f6d6df0f31f45aa9b2839feb039937015e9668f601e4d32\": [2, 0, 0, 1, 0, 2, 3],\n+    \"a00839.html#ab0df38968e4f03a3f1f6d6df0f31f45aabeca977bc439b451aea1325f48a52a0b\": [2, 0, 0, 1, 0, 2, 0],\n+    \"a00839.html#ab0df38968e4f03a3f1f6d6df0f31f45aac565fa39d681e2766584dd87246c3bdd\": [2, 0, 0, 1, 0, 2, 4],\n+    \"a00839_source.html\": [2, 0, 0, 1, 0],\n+    \"a00842.html\": [2, 0, 0, 1, 4],\n+    \"a00842_source.html\": [2, 0, 0, 1, 4],\n+    \"a00845.html\": [2, 0, 0, 1, 10],\n+    \"a00845_source.html\": [2, 0, 0, 1, 10],\n+    \"a00848.html\": [2, 0, 0, 1, 7],\n+    \"a00848_source.html\": [2, 0, 0, 1, 7],\n+    \"a00851.html\": [2, 0, 0, 1, 6],\n+    \"a00851_source.html\": [2, 0, 0, 1, 6],\n+    \"a00854.html\": [2, 0, 0, 1, 5],\n+    \"a00854_source.html\": [2, 0, 0, 1, 5],\n+    \"a00857.html\": [2, 0, 0, 1, 1],\n+    \"a00857.html#ad258c2d8f7871bc0d40cf3a9ded6e08a\": [2, 0, 0, 1, 1, 1],\n+    \"a00857_source.html\": [2, 0, 0, 1, 1],\n+    \"a00860.html\": [2, 0, 0, 3, 4],\n+    \"a00860_source.html\": [2, 0, 0, 3, 4],\n+    \"a00863.html\": [2, 0, 0, 3, 5],\n+    \"a00863_source.html\": [2, 0, 0, 3, 5],\n+    \"a00866.html\": [2, 0, 0, 3, 1],\n+    \"a00866_source.html\": [2, 0, 0, 3, 1],\n+    \"a00869.html\": [2, 0, 0, 3, 2],\n+    \"a00869_source.html\": [2, 0, 0, 3, 2],\n+    \"a00872.html\": [2, 0, 0, 3, 3],\n+    \"a00872_source.html\": [2, 0, 0, 3, 3],\n+    \"a00875.html\": [2, 0, 0, 3, 0],\n+    \"a00875_source.html\": [2, 0, 0, 3, 0],\n+    \"a00878.html\": [2, 0, 0, 0, 8],\n+    \"a00878_source.html\": [2, 0, 0, 0, 8],\n+    \"a00881.html\": [2, 0, 0, 0, 4],\n+    \"a00881_source.html\": [2, 0, 0, 0, 4],\n+    \"a00884.html\": [2, 0, 0, 0, 2],\n+    \"a00884_source.html\": [2, 0, 0, 0, 2],\n+    \"a00887.html\": [2, 0, 0, 0, 3],\n+    \"a00887_source.html\": [2, 0, 0, 0, 3],\n+    \"a00890.html\": [2, 0, 0, 0, 0],\n+    \"a00890_source.html\": [2, 0, 0, 0, 0],\n+    \"a00893.html\": [2, 0, 0, 0, 6],\n+    \"a00893_source.html\": [2, 0, 0, 0, 6],\n+    \"a00896.html\": [2, 0, 0, 0, 5],\n+    \"a00896_source.html\": [2, 0, 0, 0, 5],\n+    \"a00899.html\": [2, 0, 0, 0, 1],\n+    \"a00899_source.html\": [2, 0, 0, 0, 1],\n+    \"a00902.html\": [2, 0, 0, 0, 7],\n+    \"a00902_source.html\": [2, 0, 0, 0, 7],\n     \"a00905.html\": [0, 0, 0],\n     \"a00906.html\": [0, 0, 0, 0],\n     \"a00907.html\": [0, 0, 0, 0, 0],\n     \"a00908.html\": [0, 0, 0, 0, 1],\n     \"a00908.html#a200172f1c19545bc01f292afa2167e2f\": [0, 0, 0, 0, 1, 32],\n     \"a00908.html#a25d51c3a61fb3dacded6e48d01fd2fdb\": [0, 0, 0, 0, 1, 38],\n     \"a00908.html#a26b477946e364f3510ef5028d66132f3\": [0, 0, 0, 0, 1, 33],\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/navtreeindex1.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/navtreeindex1.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -19,72 +19,72 @@\n     \"a00913.html#a61ef2f8f765ba17f8036bcc0f0fa887ba31959b36c678fcb560f478ecb7c051f5\": [0, 0, 0, 0, 3, 5, 1],\n     \"a00913.html#a61ef2f8f765ba17f8036bcc0f0fa887ba56eed514f6a5971f198c9e421054b513\": [0, 0, 0, 0, 3, 5, 0],\n     \"a00913.html#a61ef2f8f765ba17f8036bcc0f0fa887ba6ebca125aa2292ebbdfd6539d3656d28\": [0, 0, 0, 0, 3, 5, 2],\n     \"a00913.html#aa3daa2f428c6be2b1cb394f3a525833d\": [0, 0, 0, 0, 3, 4],\n     \"a00913.html#aa3daa2f428c6be2b1cb394f3a525833da02558f420bac2d6bd3f8411d4b3957a0\": [0, 0, 0, 0, 3, 4, 0],\n     \"a00913.html#aa3daa2f428c6be2b1cb394f3a525833da29c9704ef8a61670dfc242b6e6b82a9f\": [0, 0, 0, 0, 3, 4, 1],\n     \"a00913.html#aa3daa2f428c6be2b1cb394f3a525833da529a2651a5dcfac532e933ffefc36e99\": [0, 0, 0, 0, 3, 4, 2],\n-    \"a00917.html\": [0, 0, 0, 0, 0, 0],\n     \"a00917.html\": [1, 0, 0, 0, 0, 0],\n-    \"a00921.html\": [1, 0, 0, 0, 0, 1],\n+    \"a00917.html\": [0, 0, 0, 0, 0, 0],\n     \"a00921.html\": [0, 0, 0, 0, 0, 1],\n+    \"a00921.html\": [1, 0, 0, 0, 0, 1],\n     \"a00921.html#a0381bb479d54363806267616b61c6ed3\": [0, 0, 0, 0, 0, 1, 12],\n     \"a00921.html#a0381bb479d54363806267616b61c6ed3\": [1, 0, 0, 0, 0, 1, 12],\n-    \"a00921.html#a181e30653909f9d0e0afa92dd44d28ec\": [0, 0, 0, 0, 0, 1, 11],\n     \"a00921.html#a181e30653909f9d0e0afa92dd44d28ec\": [1, 0, 0, 0, 0, 1, 11],\n-    \"a00921.html#a1d1cfd8ffb84e947f82999c682b666a7\": [0, 0, 0, 0, 0, 1, 0],\n+    \"a00921.html#a181e30653909f9d0e0afa92dd44d28ec\": [0, 0, 0, 0, 0, 1, 11],\n     \"a00921.html#a1d1cfd8ffb84e947f82999c682b666a7\": [1, 0, 0, 0, 0, 1, 0],\n-    \"a00921.html#a1d1cfd8ffb84e947f82999c682b666a7a7cbabd8b5f03feec7dda7f68118f0850\": [0, 0, 0, 0, 0, 1, 0, 2],\n+    \"a00921.html#a1d1cfd8ffb84e947f82999c682b666a7\": [0, 0, 0, 0, 0, 1, 0],\n     \"a00921.html#a1d1cfd8ffb84e947f82999c682b666a7a7cbabd8b5f03feec7dda7f68118f0850\": [1, 0, 0, 0, 0, 1, 0, 2],\n-    \"a00921.html#a1d1cfd8ffb84e947f82999c682b666a7acde3f260abb10fb9633e1ca01de9e78d\": [0, 0, 0, 0, 0, 1, 0, 1],\n+    \"a00921.html#a1d1cfd8ffb84e947f82999c682b666a7a7cbabd8b5f03feec7dda7f68118f0850\": [0, 0, 0, 0, 0, 1, 0, 2],\n     \"a00921.html#a1d1cfd8ffb84e947f82999c682b666a7acde3f260abb10fb9633e1ca01de9e78d\": [1, 0, 0, 0, 0, 1, 0, 1],\n-    \"a00921.html#a1d1cfd8ffb84e947f82999c682b666a7ae1a12d53590e4fd25c9fd9006f19ab5c\": [1, 0, 0, 0, 0, 1, 0, 0],\n+    \"a00921.html#a1d1cfd8ffb84e947f82999c682b666a7acde3f260abb10fb9633e1ca01de9e78d\": [0, 0, 0, 0, 0, 1, 0, 1],\n     \"a00921.html#a1d1cfd8ffb84e947f82999c682b666a7ae1a12d53590e4fd25c9fd9006f19ab5c\": [0, 0, 0, 0, 0, 1, 0, 0],\n+    \"a00921.html#a1d1cfd8ffb84e947f82999c682b666a7ae1a12d53590e4fd25c9fd9006f19ab5c\": [1, 0, 0, 0, 0, 1, 0, 0],\n     \"a00921.html#a301ad64c8ae0a3ba3af84377138a069f\": [0, 0, 0, 0, 0, 1, 1],\n     \"a00921.html#a301ad64c8ae0a3ba3af84377138a069f\": [1, 0, 0, 0, 0, 1, 1],\n-    \"a00921.html#a41cf5ce29cf0ef8f61e9bfe9b8c007f6\": [0, 0, 0, 0, 0, 1, 6],\n     \"a00921.html#a41cf5ce29cf0ef8f61e9bfe9b8c007f6\": [1, 0, 0, 0, 0, 1, 6],\n-    \"a00921.html#a43caa8212032f3649809914cc0f57653\": [0, 0, 0, 0, 0, 1, 9],\n+    \"a00921.html#a41cf5ce29cf0ef8f61e9bfe9b8c007f6\": [0, 0, 0, 0, 0, 1, 6],\n     \"a00921.html#a43caa8212032f3649809914cc0f57653\": [1, 0, 0, 0, 0, 1, 9],\n+    \"a00921.html#a43caa8212032f3649809914cc0f57653\": [0, 0, 0, 0, 0, 1, 9],\n     \"a00921.html#a485decc00facb0972f8775a8a20851fa\": [1, 0, 0, 0, 0, 1, 13],\n     \"a00921.html#a485decc00facb0972f8775a8a20851fa\": [0, 0, 0, 0, 0, 1, 13],\n     \"a00921.html#a4a581bbd4a90fe89f0c9210dede62c5f\": [1, 0, 0, 0, 0, 1, 4],\n     \"a00921.html#a4a581bbd4a90fe89f0c9210dede62c5f\": [0, 0, 0, 0, 0, 1, 4],\n     \"a00921.html#a64a4b29d36851a8d83be05af5b25f886\": [1, 0, 0, 0, 0, 1, 3],\n     \"a00921.html#a64a4b29d36851a8d83be05af5b25f886\": [0, 0, 0, 0, 0, 1, 3],\n-    \"a00921.html#a8619f1774a47cdf85d93832261fe7d54\": [0, 0, 0, 0, 0, 1, 10],\n     \"a00921.html#a8619f1774a47cdf85d93832261fe7d54\": [1, 0, 0, 0, 0, 1, 10],\n-    \"a00921.html#a9b6878c9cfa5f864aacae60e159451c8\": [1, 0, 0, 0, 0, 1, 7],\n+    \"a00921.html#a8619f1774a47cdf85d93832261fe7d54\": [0, 0, 0, 0, 0, 1, 10],\n     \"a00921.html#a9b6878c9cfa5f864aacae60e159451c8\": [0, 0, 0, 0, 0, 1, 7],\n+    \"a00921.html#a9b6878c9cfa5f864aacae60e159451c8\": [1, 0, 0, 0, 0, 1, 7],\n     \"a00921.html#a9cb32ed5657438f0a1b7f322b221dc75\": [0, 0, 0, 0, 0, 1, 14],\n     \"a00921.html#a9cb32ed5657438f0a1b7f322b221dc75\": [1, 0, 0, 0, 0, 1, 14],\n     \"a00921.html#aa7e0b89d67d34c1dd7a37cdce95f9e2c\": [0, 0, 0, 0, 0, 1, 2],\n     \"a00921.html#aa7e0b89d67d34c1dd7a37cdce95f9e2c\": [1, 0, 0, 0, 0, 1, 2],\n     \"a00921.html#ac532c4b500b1a85ea22217f2c65a70ed\": [1, 0, 0, 0, 0, 1, 16],\n     \"a00921.html#ac532c4b500b1a85ea22217f2c65a70ed\": [0, 0, 0, 0, 0, 1, 16],\n     \"a00921.html#adc4cd156a8fdb843b0e233a922bb8a17\": [0, 0, 0, 0, 0, 1, 15],\n     \"a00921.html#adc4cd156a8fdb843b0e233a922bb8a17\": [1, 0, 0, 0, 0, 1, 15],\n-    \"a00921.html#ae7ee02ea1bb1c8b1fff7793d51013bed\": [0, 0, 0, 0, 0, 1, 5],\n     \"a00921.html#ae7ee02ea1bb1c8b1fff7793d51013bed\": [1, 0, 0, 0, 0, 1, 5],\n+    \"a00921.html#ae7ee02ea1bb1c8b1fff7793d51013bed\": [0, 0, 0, 0, 0, 1, 5],\n     \"a00921.html#aed9d1936ffe46b9622ae31cb43233a2e\": [1, 0, 0, 0, 0, 1, 8],\n     \"a00921.html#aed9d1936ffe46b9622ae31cb43233a2e\": [0, 0, 0, 0, 0, 1, 8],\n     \"a00921.html#af488514a0e7868dd273ebe767420c416\": [0, 0, 0, 0, 0, 1, 17],\n     \"a00921.html#af488514a0e7868dd273ebe767420c416\": [1, 0, 0, 0, 0, 1, 17],\n     \"a00925.html\": [0, 0, 0, 0, 0, 3],\n     \"a00925.html\": [1, 0, 0, 0, 0, 3],\n-    \"a00925.html#a9920fb01c4b75c94a953a98008a4baba\": [1, 0, 0, 0, 0, 3, 3],\n     \"a00925.html#a9920fb01c4b75c94a953a98008a4baba\": [0, 0, 0, 0, 0, 3, 3],\n+    \"a00925.html#a9920fb01c4b75c94a953a98008a4baba\": [1, 0, 0, 0, 0, 3, 3],\n     \"a00925.html#aa9be824a572029f3ec1e0c0d6cfecd77\": [1, 0, 0, 0, 0, 3, 4],\n     \"a00925.html#aa9be824a572029f3ec1e0c0d6cfecd77\": [0, 0, 0, 0, 0, 3, 4],\n     \"a00925.html#ab71a07bb9e45c564b8aabe091482414c\": [1, 0, 0, 0, 0, 3, 2],\n     \"a00925.html#ab71a07bb9e45c564b8aabe091482414c\": [0, 0, 0, 0, 0, 3, 2],\n-    \"a00925.html#af1812d7cdae22188afec02034f1219cb\": [1, 0, 0, 0, 0, 3, 1],\n     \"a00925.html#af1812d7cdae22188afec02034f1219cb\": [0, 0, 0, 0, 0, 3, 1],\n-    \"a00925.html#af457c931d6d611e35737454f2c483f84\": [1, 0, 0, 0, 0, 3, 0],\n+    \"a00925.html#af1812d7cdae22188afec02034f1219cb\": [1, 0, 0, 0, 0, 3, 1],\n     \"a00925.html#af457c931d6d611e35737454f2c483f84\": [0, 0, 0, 0, 0, 3, 0],\n+    \"a00925.html#af457c931d6d611e35737454f2c483f84\": [1, 0, 0, 0, 0, 3, 0],\n     \"a00929.html\": [0, 0, 0, 0, 0, 2],\n     \"a00929.html\": [1, 0, 0, 0, 0, 2],\n     \"a00929.html#aaeb5db4a748ed56e042ab8c003faa8e9\": [1, 0, 0, 0, 0, 2, 1],\n     \"a00929.html#aaeb5db4a748ed56e042ab8c003faa8e9\": [0, 0, 0, 0, 0, 2, 1],\n     \"a00929.html#af74dafe122d798d4069b675c52f6665a\": [1, 0, 0, 0, 0, 2, 0],\n     \"a00929.html#af74dafe122d798d4069b675c52f6665a\": [0, 0, 0, 0, 0, 2, 0],\n     \"a00933.html\": [0, 0, 0, 0, 0, 4],\n@@ -99,24 +99,24 @@\n     \"a00933.html#a181e30653909f9d0e0afa92dd44d28ec\": [1, 0, 0, 0, 0, 4, 19],\n     \"a00933.html#a193470573424fe6b2e91f317509b5897\": [0, 0, 0, 0, 0, 4, 24],\n     \"a00933.html#a193470573424fe6b2e91f317509b5897\": [1, 0, 0, 0, 0, 4, 24],\n     \"a00933.html#a22604a4489ed5fdedb0ef272de0fa637\": [1, 0, 0, 0, 0, 4, 7],\n     \"a00933.html#a22604a4489ed5fdedb0ef272de0fa637\": [0, 0, 0, 0, 0, 4, 7],\n     \"a00933.html#a2666f2fe497e68b29337056deda176a9\": [1, 0, 0, 0, 0, 4, 18],\n     \"a00933.html#a2666f2fe497e68b29337056deda176a9\": [0, 0, 0, 0, 0, 4, 18],\n-    \"a00933.html#a3bdc23048cdd1242d0a429413fa89256\": [0, 0, 0, 0, 0, 4, 28],\n     \"a00933.html#a3bdc23048cdd1242d0a429413fa89256\": [1, 0, 0, 0, 0, 4, 28],\n-    \"a00933.html#a4a0e50e01fef3e431767a928c2631cab\": [1, 0, 0, 0, 0, 4, 1],\n+    \"a00933.html#a3bdc23048cdd1242d0a429413fa89256\": [0, 0, 0, 0, 0, 4, 28],\n     \"a00933.html#a4a0e50e01fef3e431767a928c2631cab\": [0, 0, 0, 0, 0, 4, 1],\n+    \"a00933.html#a4a0e50e01fef3e431767a928c2631cab\": [1, 0, 0, 0, 0, 4, 1],\n     \"a00933.html#a4b5e80eb39b7497712eed0009309cd3c\": [1, 0, 0, 0, 0, 4, 5],\n     \"a00933.html#a4b5e80eb39b7497712eed0009309cd3c\": [0, 0, 0, 0, 0, 4, 5],\n     \"a00933.html#a66515298a982aab202e1e3e537c7d324\": [1, 0, 0, 0, 0, 4, 22],\n     \"a00933.html#a66515298a982aab202e1e3e537c7d324\": [0, 0, 0, 0, 0, 4, 22],\n-    \"a00933.html#a6e1a6ad293d9318f65c2e28c468c66ba\": [0, 0, 0, 0, 0, 4, 2],\n     \"a00933.html#a6e1a6ad293d9318f65c2e28c468c66ba\": [1, 0, 0, 0, 0, 4, 2],\n+    \"a00933.html#a6e1a6ad293d9318f65c2e28c468c66ba\": [0, 0, 0, 0, 0, 4, 2],\n     \"a00933.html#a79f6ee2550666194950187ff62bc4a6d\": [0, 0, 0, 0, 0, 4, 15],\n     \"a00933.html#a79f6ee2550666194950187ff62bc4a6d\": [1, 0, 0, 0, 0, 4, 15],\n     \"a00933.html#a7e06def79a1cb93ef61d58f06b3ccec1\": [1, 0, 0, 0, 0, 4, 13],\n     \"a00933.html#a7e06def79a1cb93ef61d58f06b3ccec1\": [0, 0, 0, 0, 0, 4, 13],\n     \"a00933.html#a7fa4a5c3bfea7fc2ebda886f9b12eb95\": [1, 0, 0, 0, 0, 4, 6],\n     \"a00933.html#a7fa4a5c3bfea7fc2ebda886f9b12eb95\": [0, 0, 0, 0, 0, 4, 6],\n     \"a00933.html#a85251d7cc5b0aa5838fa1767b6e31e5d\": [1, 0, 0, 0, 0, 4, 26],\n@@ -129,124 +129,124 @@\n     \"a00933.html#a9fbe10437e4a7f3c40787283a3ecd560\": [1, 0, 0, 0, 0, 4, 4],\n     \"a00933.html#aa71d36872f416feaa853788a7a7a7ef8\": [1, 0, 0, 0, 0, 4, 9],\n     \"a00933.html#aa71d36872f416feaa853788a7a7a7ef8\": [0, 0, 0, 0, 0, 4, 9],\n     \"a00933.html#aa9500016cdd5cf88992541cc263a75c9\": [1, 0, 0, 0, 0, 4, 3],\n     \"a00933.html#aa9500016cdd5cf88992541cc263a75c9\": [0, 0, 0, 0, 0, 4, 3],\n     \"a00933.html#ac11caa08d0e7f7ce63e6f3292b20840a\": [0, 0, 0, 0, 0, 4, 27],\n     \"a00933.html#ac11caa08d0e7f7ce63e6f3292b20840a\": [1, 0, 0, 0, 0, 4, 27],\n-    \"a00933.html#ac532c4b500b1a85ea22217f2c65a70ed\": [1, 0, 0, 0, 0, 4, 25],\n     \"a00933.html#ac532c4b500b1a85ea22217f2c65a70ed\": [0, 0, 0, 0, 0, 4, 25],\n-    \"a00933.html#ad24baa29c6dfff25cd17ee1269ab9f8d\": [0, 0, 0, 0, 0, 4, 17],\n+    \"a00933.html#ac532c4b500b1a85ea22217f2c65a70ed\": [1, 0, 0, 0, 0, 4, 25],\n     \"a00933.html#ad24baa29c6dfff25cd17ee1269ab9f8d\": [1, 0, 0, 0, 0, 4, 17],\n-    \"a00933.html#ad2b27352bb353eeb1f1419c2ad07385e\": [0, 0, 0, 0, 0, 4, 10],\n+    \"a00933.html#ad24baa29c6dfff25cd17ee1269ab9f8d\": [0, 0, 0, 0, 0, 4, 17],\n     \"a00933.html#ad2b27352bb353eeb1f1419c2ad07385e\": [1, 0, 0, 0, 0, 4, 10],\n-    \"a00933.html#adb6e3801db80be8fef1fd0fa4673b041\": [0, 0, 0, 0, 0, 4, 23],\n+    \"a00933.html#ad2b27352bb353eeb1f1419c2ad07385e\": [0, 0, 0, 0, 0, 4, 10],\n     \"a00933.html#adb6e3801db80be8fef1fd0fa4673b041\": [1, 0, 0, 0, 0, 4, 23],\n-    \"a00933.html#adff7aaf7aca5ccb158ebc202cb435e33\": [0, 0, 0, 0, 0, 4, 21],\n+    \"a00933.html#adb6e3801db80be8fef1fd0fa4673b041\": [0, 0, 0, 0, 0, 4, 23],\n     \"a00933.html#adff7aaf7aca5ccb158ebc202cb435e33\": [1, 0, 0, 0, 0, 4, 21],\n+    \"a00933.html#adff7aaf7aca5ccb158ebc202cb435e33\": [0, 0, 0, 0, 0, 4, 21],\n     \"a00933.html#afc66676db4f0e7834e8b0fa77c7c1b46\": [1, 0, 0, 0, 0, 4, 14],\n     \"a00933.html#afc66676db4f0e7834e8b0fa77c7c1b46\": [0, 0, 0, 0, 0, 4, 14],\n-    \"a00937.html\": [1, 0, 0, 0, 0, 4, 0],\n     \"a00937.html\": [0, 0, 0, 0, 0, 4, 0],\n-    \"a00937.html#a08f66a6870d87afcd5dc1b60d1019692\": [0, 0, 0, 0, 0, 4, 0, 4],\n+    \"a00937.html\": [1, 0, 0, 0, 0, 4, 0],\n     \"a00937.html#a08f66a6870d87afcd5dc1b60d1019692\": [1, 0, 0, 0, 0, 4, 0, 4],\n+    \"a00937.html#a08f66a6870d87afcd5dc1b60d1019692\": [0, 0, 0, 0, 0, 4, 0, 4],\n     \"a00937.html#a439227feff9d7f55384e8780cfc2eb82\": [0, 0, 0, 0, 0, 4, 0, 3],\n     \"a00937.html#a439227feff9d7f55384e8780cfc2eb82\": [1, 0, 0, 0, 0, 4, 0, 3],\n     \"a00937.html#a69d66788e741236b1176159a1d609189\": [0, 0, 0, 0, 0, 4, 0, 1],\n     \"a00937.html#a69d66788e741236b1176159a1d609189\": [1, 0, 0, 0, 0, 4, 0, 1],\n     \"a00937.html#a6e6069bdfef867e798fe863f40f4274a\": [0, 0, 0, 0, 0, 4, 0, 2],\n     \"a00937.html#a6e6069bdfef867e798fe863f40f4274a\": [1, 0, 0, 0, 0, 4, 0, 2],\n     \"a00937.html#ac60ab7fa3966237e2de95cc60defa4de\": [0, 0, 0, 0, 0, 4, 0, 0],\n     \"a00937.html#ac60ab7fa3966237e2de95cc60defa4de\": [1, 0, 0, 0, 0, 4, 0, 0],\n     \"a00941.html\": [1, 0, 0, 0, 0, 5],\n     \"a00941.html\": [0, 0, 0, 0, 0, 5],\n-    \"a00941.html#a043a7fc91f7bc29a4cbba51d9cb00ecb\": [1, 0, 0, 0, 0, 5, 18],\n     \"a00941.html#a043a7fc91f7bc29a4cbba51d9cb00ecb\": [0, 0, 0, 0, 0, 5, 18],\n-    \"a00941.html#a1e36434fc02ae0d7a087a8eb07577ee9\": [1, 0, 0, 0, 0, 5, 1],\n+    \"a00941.html#a043a7fc91f7bc29a4cbba51d9cb00ecb\": [1, 0, 0, 0, 0, 5, 18],\n     \"a00941.html#a1e36434fc02ae0d7a087a8eb07577ee9\": [0, 0, 0, 0, 0, 5, 1],\n+    \"a00941.html#a1e36434fc02ae0d7a087a8eb07577ee9\": [1, 0, 0, 0, 0, 5, 1],\n     \"a00941.html#a2236306cbbc12f5a77753e269c76fe0e\": [0, 0, 0, 0, 0, 5, 12],\n     \"a00941.html#a2236306cbbc12f5a77753e269c76fe0e\": [1, 0, 0, 0, 0, 5, 12],\n-    \"a00941.html#a4528f38657b0c96bce6c3d7deffd7c02\": [0, 0, 0, 0, 0, 5, 10],\n     \"a00941.html#a4528f38657b0c96bce6c3d7deffd7c02\": [1, 0, 0, 0, 0, 5, 10],\n+    \"a00941.html#a4528f38657b0c96bce6c3d7deffd7c02\": [0, 0, 0, 0, 0, 5, 10],\n     \"a00941.html#a59227e292ea63aa9641a090521cfd457\": [1, 0, 0, 0, 0, 5, 5],\n     \"a00941.html#a59227e292ea63aa9641a090521cfd457\": [0, 0, 0, 0, 0, 5, 5],\n-    \"a00941.html#a59964d0c9ed91d83447ceacede2acc1d\": [1, 0, 0, 0, 0, 5, 9],\n     \"a00941.html#a59964d0c9ed91d83447ceacede2acc1d\": [0, 0, 0, 0, 0, 5, 9],\n+    \"a00941.html#a59964d0c9ed91d83447ceacede2acc1d\": [1, 0, 0, 0, 0, 5, 9],\n     \"a00941.html#a5ac6bb6255796f79debe11e25b816093\": [0, 0, 0, 0, 0, 5, 3],\n     \"a00941.html#a5ac6bb6255796f79debe11e25b816093\": [1, 0, 0, 0, 0, 5, 3],\n     \"a00941.html#a5cab9f649e56c15a486e3878a19bedf7\": [0, 0, 0, 0, 0, 5, 8],\n     \"a00941.html#a5cab9f649e56c15a486e3878a19bedf7\": [1, 0, 0, 0, 0, 5, 8],\n-    \"a00941.html#a5d089ab30f0402395635d7b389710594\": [0, 0, 0, 0, 0, 5, 17],\n     \"a00941.html#a5d089ab30f0402395635d7b389710594\": [1, 0, 0, 0, 0, 5, 17],\n+    \"a00941.html#a5d089ab30f0402395635d7b389710594\": [0, 0, 0, 0, 0, 5, 17],\n     \"a00941.html#a676cf019574c99fa77341ac09889192d\": [0, 0, 0, 0, 0, 5, 7],\n     \"a00941.html#a676cf019574c99fa77341ac09889192d\": [1, 0, 0, 0, 0, 5, 7],\n     \"a00941.html#a67a5dcab87b052d231634dd9fcf5dee2\": [1, 0, 0, 0, 0, 5, 4],\n     \"a00941.html#a67a5dcab87b052d231634dd9fcf5dee2\": [0, 0, 0, 0, 0, 5, 4],\n     \"a00941.html#a6ab6508b7c2a5c259acf6b9b89688fc8\": [1, 0, 0, 0, 0, 5, 14],\n     \"a00941.html#a6ab6508b7c2a5c259acf6b9b89688fc8\": [0, 0, 0, 0, 0, 5, 14],\n     \"a00941.html#a758e06255013d2d7393c3ac2d18f6922\": [1, 0, 0, 0, 0, 5, 11],\n     \"a00941.html#a758e06255013d2d7393c3ac2d18f6922\": [0, 0, 0, 0, 0, 5, 11],\n-    \"a00941.html#a81638f2ff6818fd96aa7cd1ad3ed0703\": [0, 0, 0, 0, 0, 5, 6],\n     \"a00941.html#a81638f2ff6818fd96aa7cd1ad3ed0703\": [1, 0, 0, 0, 0, 5, 6],\n+    \"a00941.html#a81638f2ff6818fd96aa7cd1ad3ed0703\": [0, 0, 0, 0, 0, 5, 6],\n     \"a00941.html#a9cd69d28232867bdbb5f0b0cfcea5db5\": [1, 0, 0, 0, 0, 5, 13],\n     \"a00941.html#a9cd69d28232867bdbb5f0b0cfcea5db5\": [0, 0, 0, 0, 0, 5, 13],\n     \"a00941.html#abb4a2f3f7e6623ace424afc5c0315fc1\": [1, 0, 0, 0, 0, 5, 16],\n     \"a00941.html#abb4a2f3f7e6623ace424afc5c0315fc1\": [0, 0, 0, 0, 0, 5, 16],\n-    \"a00941.html#adee257f933b8440f3e1b4760c506f15f\": [1, 0, 0, 0, 0, 5, 15],\n     \"a00941.html#adee257f933b8440f3e1b4760c506f15f\": [0, 0, 0, 0, 0, 5, 15],\n+    \"a00941.html#adee257f933b8440f3e1b4760c506f15f\": [1, 0, 0, 0, 0, 5, 15],\n     \"a00941.html#ae54ee5a9e2bcb2bfdf395084395a0719\": [0, 0, 0, 0, 0, 5, 2],\n     \"a00941.html#ae54ee5a9e2bcb2bfdf395084395a0719\": [1, 0, 0, 0, 0, 5, 2],\n-    \"a00945.html\": [1, 0, 0, 0, 0, 5, 0],\n     \"a00945.html\": [0, 0, 0, 0, 0, 5, 0],\n+    \"a00945.html\": [1, 0, 0, 0, 0, 5, 0],\n     \"a00945.html#a06af1ca1d903fe5110c962bec75acec7\": [1, 0, 0, 0, 0, 5, 0, 10],\n     \"a00945.html#a06af1ca1d903fe5110c962bec75acec7\": [0, 0, 0, 0, 0, 5, 0, 10],\n-    \"a00945.html#a14e81c17e41ad591714664008331f41e\": [1, 0, 0, 0, 0, 5, 0, 1],\n     \"a00945.html#a14e81c17e41ad591714664008331f41e\": [0, 0, 0, 0, 0, 5, 0, 1],\n-    \"a00945.html#a1ee6780461b18cc80b5c79b520310079\": [0, 0, 0, 0, 0, 5, 0, 8],\n+    \"a00945.html#a14e81c17e41ad591714664008331f41e\": [1, 0, 0, 0, 0, 5, 0, 1],\n     \"a00945.html#a1ee6780461b18cc80b5c79b520310079\": [1, 0, 0, 0, 0, 5, 0, 8],\n+    \"a00945.html#a1ee6780461b18cc80b5c79b520310079\": [0, 0, 0, 0, 0, 5, 0, 8],\n     \"a00945.html#a1ff965cb913fbc4716a5985c3d3c60e3\": [0, 0, 0, 0, 0, 5, 0, 3],\n     \"a00945.html#a1ff965cb913fbc4716a5985c3d3c60e3\": [1, 0, 0, 0, 0, 5, 0, 3],\n-    \"a00945.html#a28d39a844c3a37ab61d32ab7c6352f09\": [0, 0, 0, 0, 0, 5, 0, 0],\n     \"a00945.html#a28d39a844c3a37ab61d32ab7c6352f09\": [1, 0, 0, 0, 0, 5, 0, 0],\n-    \"a00945.html#a2c83835832d46536d097ae6ff32659db\": [0, 0, 0, 0, 0, 5, 0, 6],\n+    \"a00945.html#a28d39a844c3a37ab61d32ab7c6352f09\": [0, 0, 0, 0, 0, 5, 0, 0],\n     \"a00945.html#a2c83835832d46536d097ae6ff32659db\": [1, 0, 0, 0, 0, 5, 0, 6],\n+    \"a00945.html#a2c83835832d46536d097ae6ff32659db\": [0, 0, 0, 0, 0, 5, 0, 6],\n     \"a00945.html#a2db0e8ff5143c3a69bf3772bac7bde78\": [0, 0, 0, 0, 0, 5, 0, 9],\n     \"a00945.html#a2db0e8ff5143c3a69bf3772bac7bde78\": [1, 0, 0, 0, 0, 5, 0, 9],\n     \"a00945.html#a391dfc1d3e1d75fc0aa496717784a95e\": [0, 0, 0, 0, 0, 5, 0, 7],\n     \"a00945.html#a391dfc1d3e1d75fc0aa496717784a95e\": [1, 0, 0, 0, 0, 5, 0, 7],\n-    \"a00945.html#a51ba21f3605015ed597a25303143c0b1\": [0, 0, 0, 0, 0, 5, 0, 4],\n     \"a00945.html#a51ba21f3605015ed597a25303143c0b1\": [1, 0, 0, 0, 0, 5, 0, 4],\n+    \"a00945.html#a51ba21f3605015ed597a25303143c0b1\": [0, 0, 0, 0, 0, 5, 0, 4],\n     \"a00945.html#a595df0016de04902f5954b740c7baa2c\": [1, 0, 0, 0, 0, 5, 0, 2],\n     \"a00945.html#a595df0016de04902f5954b740c7baa2c\": [0, 0, 0, 0, 0, 5, 0, 2],\n     \"a00945.html#acd0411b6d29a6acae3826da06d86bd5b\": [1, 0, 0, 0, 0, 5, 0, 5],\n     \"a00945.html#acd0411b6d29a6acae3826da06d86bd5b\": [0, 0, 0, 0, 0, 5, 0, 5],\n-    \"a00949.html\": [0, 0, 0, 0, 0, 6],\n     \"a00949.html\": [1, 0, 0, 0, 0, 6],\n+    \"a00949.html\": [0, 0, 0, 0, 0, 6],\n     \"a00949.html#a3f63565868cb0b0871e2db37939ec0e2\": [0, 0, 0, 0, 0, 6, 0],\n     \"a00949.html#a3f63565868cb0b0871e2db37939ec0e2\": [1, 0, 0, 0, 0, 6, 0],\n     \"a00949.html#a624a2bb484d2deb54dd08d3310e746b3\": [1, 0, 0, 0, 0, 6, 1],\n     \"a00949.html#a624a2bb484d2deb54dd08d3310e746b3\": [0, 0, 0, 0, 0, 6, 1],\n     \"a00949.html#a704742f6a7a07e766b5320c8d6f2f745\": [1, 0, 0, 0, 0, 6, 2],\n     \"a00949.html#a704742f6a7a07e766b5320c8d6f2f745\": [0, 0, 0, 0, 0, 6, 2],\n     \"a00949.html#a736c32f5c64da3442ff1c74ef1fb9ff7\": [1, 0, 0, 0, 0, 6, 3],\n     \"a00949.html#a736c32f5c64da3442ff1c74ef1fb9ff7\": [0, 0, 0, 0, 0, 6, 3],\n     \"a00953.html\": [0, 0, 0, 0, 0, 7],\n     \"a00953.html\": [1, 0, 0, 0, 0, 7],\n-    \"a00953.html#a9e84b6f045809c700d7dc53c3a350afe\": [0, 0, 0, 0, 0, 7, 0],\n     \"a00953.html#a9e84b6f045809c700d7dc53c3a350afe\": [1, 0, 0, 0, 0, 7, 0],\n+    \"a00953.html#a9e84b6f045809c700d7dc53c3a350afe\": [0, 0, 0, 0, 0, 7, 0],\n     \"a00953.html#ac74eea23eda9dbc078678ee5d440c7b8\": [0, 0, 0, 0, 0, 7, 1],\n     \"a00953.html#ac74eea23eda9dbc078678ee5d440c7b8\": [1, 0, 0, 0, 0, 7, 1],\n     \"a00957.html\": [0, 0, 0, 0, 0, 8],\n     \"a00957.html\": [1, 0, 0, 0, 0, 8],\n     \"a00957.html#a269c87ee7505e80e2e4db772ee73a016\": [1, 0, 0, 0, 0, 8, 6],\n     \"a00957.html#a269c87ee7505e80e2e4db772ee73a016\": [0, 0, 0, 0, 0, 8, 6],\n     \"a00957.html#a2bbf77d68fb983954c51bd91cfe35302\": [1, 0, 0, 0, 0, 8, 7],\n     \"a00957.html#a2bbf77d68fb983954c51bd91cfe35302\": [0, 0, 0, 0, 0, 8, 7],\n-    \"a00957.html#a46acc55c125fe8d843fd2b74c582abec\": [0, 0, 0, 0, 0, 8, 5],\n     \"a00957.html#a46acc55c125fe8d843fd2b74c582abec\": [1, 0, 0, 0, 0, 8, 5],\n+    \"a00957.html#a46acc55c125fe8d843fd2b74c582abec\": [0, 0, 0, 0, 0, 8, 5],\n     \"a00957.html#a4a0e50e01fef3e431767a928c2631cab\": [0, 0, 0, 0, 0, 8, 1],\n     \"a00957.html#a4a0e50e01fef3e431767a928c2631cab\": [1, 0, 0, 0, 0, 8, 1],\n-    \"a00957.html#a6f2eece993bb137b995618881c7f9160\": [1, 0, 0, 0, 0, 8, 10],\n     \"a00957.html#a6f2eece993bb137b995618881c7f9160\": [0, 0, 0, 0, 0, 8, 10],\n+    \"a00957.html#a6f2eece993bb137b995618881c7f9160\": [1, 0, 0, 0, 0, 8, 10],\n     \"a00957.html#a72634fd790cc4d1f52801aa5399328b5\": [1, 0, 0, 0, 0, 8, 4],\n     \"a00957.html#a72634fd790cc4d1f52801aa5399328b5\": [0, 0, 0, 0, 0, 8, 4]\n };\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/navtreeindex2.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/navtreeindex2.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,252 +1,252 @@\n var NAVTREEINDEX2 = {\n-    \"a00957.html#aa7e32ce7ba896c5ddfe6521ad0022ce2\": [1, 0, 0, 0, 0, 8, 3],\n     \"a00957.html#aa7e32ce7ba896c5ddfe6521ad0022ce2\": [0, 0, 0, 0, 0, 8, 3],\n-    \"a00957.html#aba5c13d35cdaae43f2a1b4798868747a\": [0, 0, 0, 0, 0, 8, 2],\n+    \"a00957.html#aa7e32ce7ba896c5ddfe6521ad0022ce2\": [1, 0, 0, 0, 0, 8, 3],\n     \"a00957.html#aba5c13d35cdaae43f2a1b4798868747a\": [1, 0, 0, 0, 0, 8, 2],\n-    \"a00957.html#ac8c29cf2fda93d2c3408f80e8371d375\": [1, 0, 0, 0, 0, 8, 8],\n+    \"a00957.html#aba5c13d35cdaae43f2a1b4798868747a\": [0, 0, 0, 0, 0, 8, 2],\n     \"a00957.html#ac8c29cf2fda93d2c3408f80e8371d375\": [0, 0, 0, 0, 0, 8, 8],\n-    \"a00957.html#aebdd02cef87f646218eed308629e9aed\": [1, 0, 0, 0, 0, 8, 9],\n+    \"a00957.html#ac8c29cf2fda93d2c3408f80e8371d375\": [1, 0, 0, 0, 0, 8, 8],\n     \"a00957.html#aebdd02cef87f646218eed308629e9aed\": [0, 0, 0, 0, 0, 8, 9],\n+    \"a00957.html#aebdd02cef87f646218eed308629e9aed\": [1, 0, 0, 0, 0, 8, 9],\n     \"a00957.html#af98288d7b5176d7295be622a10c6c64e\": [1, 0, 0, 0, 0, 8, 0],\n     \"a00957.html#af98288d7b5176d7295be622a10c6c64e\": [0, 0, 0, 0, 0, 8, 0],\n     \"a00961.html\": [0, 0, 0, 0, 0, 9],\n     \"a00961.html\": [1, 0, 0, 0, 0, 9],\n-    \"a00961.html#a181e30653909f9d0e0afa92dd44d28ec\": [1, 0, 0, 0, 0, 9, 10],\n     \"a00961.html#a181e30653909f9d0e0afa92dd44d28ec\": [0, 0, 0, 0, 0, 9, 10],\n-    \"a00961.html#a23a949704d2705159dd4fe15299f4308\": [0, 0, 0, 0, 0, 9, 15],\n+    \"a00961.html#a181e30653909f9d0e0afa92dd44d28ec\": [1, 0, 0, 0, 0, 9, 10],\n     \"a00961.html#a23a949704d2705159dd4fe15299f4308\": [1, 0, 0, 0, 0, 9, 15],\n+    \"a00961.html#a23a949704d2705159dd4fe15299f4308\": [0, 0, 0, 0, 0, 9, 15],\n     \"a00961.html#a23cbee9f350de81b12dea4bc69ba023f\": [0, 0, 0, 0, 0, 9, 5],\n     \"a00961.html#a23cbee9f350de81b12dea4bc69ba023f\": [1, 0, 0, 0, 0, 9, 5],\n     \"a00961.html#a2651a3405daf40d1ffbd47c57233d3c3\": [0, 0, 0, 0, 0, 9, 27],\n     \"a00961.html#a2651a3405daf40d1ffbd47c57233d3c3\": [1, 0, 0, 0, 0, 9, 27],\n     \"a00961.html#a3f642ed70a22d6d9d3d2fe79029653f5\": [1, 0, 0, 0, 0, 9, 8],\n     \"a00961.html#a3f642ed70a22d6d9d3d2fe79029653f5\": [0, 0, 0, 0, 0, 9, 8],\n     \"a00961.html#a49852dfe24985b64fe13d3ef589fb8b2\": [0, 0, 0, 0, 0, 9, 17],\n     \"a00961.html#a49852dfe24985b64fe13d3ef589fb8b2\": [1, 0, 0, 0, 0, 9, 17],\n     \"a00961.html#a539f9a4fad8037e34e12ad9454f70ba1\": [1, 0, 0, 0, 0, 9, 14],\n     \"a00961.html#a539f9a4fad8037e34e12ad9454f70ba1\": [0, 0, 0, 0, 0, 9, 14],\n-    \"a00961.html#a54b068769e4e728e78528f9bdde25b86\": [0, 0, 0, 0, 0, 9, 13],\n     \"a00961.html#a54b068769e4e728e78528f9bdde25b86\": [1, 0, 0, 0, 0, 9, 13],\n+    \"a00961.html#a54b068769e4e728e78528f9bdde25b86\": [0, 0, 0, 0, 0, 9, 13],\n     \"a00961.html#a5dfa6810f510fac1ec621fc9e6b530c4\": [0, 0, 0, 0, 0, 9, 23],\n     \"a00961.html#a5dfa6810f510fac1ec621fc9e6b530c4\": [1, 0, 0, 0, 0, 9, 23],\n-    \"a00961.html#a5e16c9ef594c36629fb3fb0955101db6\": [0, 0, 0, 0, 0, 9, 16],\n     \"a00961.html#a5e16c9ef594c36629fb3fb0955101db6\": [1, 0, 0, 0, 0, 9, 16],\n-    \"a00961.html#a6087a536754ca9dc75010f34f55b5811\": [0, 0, 0, 0, 0, 9, 7],\n+    \"a00961.html#a5e16c9ef594c36629fb3fb0955101db6\": [0, 0, 0, 0, 0, 9, 16],\n     \"a00961.html#a6087a536754ca9dc75010f34f55b5811\": [1, 0, 0, 0, 0, 9, 7],\n+    \"a00961.html#a6087a536754ca9dc75010f34f55b5811\": [0, 0, 0, 0, 0, 9, 7],\n     \"a00961.html#a621ab2f30043ff7f4ecdad9e64a73173\": [0, 0, 0, 0, 0, 9, 26],\n     \"a00961.html#a621ab2f30043ff7f4ecdad9e64a73173\": [1, 0, 0, 0, 0, 9, 26],\n     \"a00961.html#a65ee652b3607c97bb2b04a64c55d7f99\": [0, 0, 0, 0, 0, 9, 2],\n     \"a00961.html#a65ee652b3607c97bb2b04a64c55d7f99\": [1, 0, 0, 0, 0, 9, 2],\n     \"a00961.html#a66515298a982aab202e1e3e537c7d324\": [1, 0, 0, 0, 0, 9, 20],\n     \"a00961.html#a66515298a982aab202e1e3e537c7d324\": [0, 0, 0, 0, 0, 9, 20],\n-    \"a00961.html#a666de589b64bea493b1d23446a1ddb49\": [0, 0, 0, 0, 0, 9, 28],\n     \"a00961.html#a666de589b64bea493b1d23446a1ddb49\": [1, 0, 0, 0, 0, 9, 28],\n+    \"a00961.html#a666de589b64bea493b1d23446a1ddb49\": [0, 0, 0, 0, 0, 9, 28],\n     \"a00961.html#a671621e55bfbc48db77919d5fd31744f\": [0, 0, 0, 0, 0, 9, 12],\n     \"a00961.html#a671621e55bfbc48db77919d5fd31744f\": [1, 0, 0, 0, 0, 9, 12],\n-    \"a00961.html#a7a3e89992f3cc492804ec9bc184a1674\": [1, 0, 0, 0, 0, 9, 3],\n     \"a00961.html#a7a3e89992f3cc492804ec9bc184a1674\": [0, 0, 0, 0, 0, 9, 3],\n-    \"a00961.html#a7f0af117d53701f7ca6e3eb2368b89bb\": [1, 0, 0, 0, 0, 9, 1],\n+    \"a00961.html#a7a3e89992f3cc492804ec9bc184a1674\": [1, 0, 0, 0, 0, 9, 3],\n     \"a00961.html#a7f0af117d53701f7ca6e3eb2368b89bb\": [0, 0, 0, 0, 0, 9, 1],\n-    \"a00961.html#a8deec91fff8094f942051dc22769402e\": [1, 0, 0, 0, 0, 9, 11],\n+    \"a00961.html#a7f0af117d53701f7ca6e3eb2368b89bb\": [1, 0, 0, 0, 0, 9, 1],\n     \"a00961.html#a8deec91fff8094f942051dc22769402e\": [0, 0, 0, 0, 0, 9, 11],\n+    \"a00961.html#a8deec91fff8094f942051dc22769402e\": [1, 0, 0, 0, 0, 9, 11],\n     \"a00961.html#a8f84862ac65dcdc8cd9063b0264b711f\": [0, 0, 0, 0, 0, 9, 18],\n     \"a00961.html#a8f84862ac65dcdc8cd9063b0264b711f\": [1, 0, 0, 0, 0, 9, 18],\n-    \"a00961.html#a95bd158ec25b0697574bfda5d1397c63\": [0, 0, 0, 0, 0, 9, 19],\n     \"a00961.html#a95bd158ec25b0697574bfda5d1397c63\": [1, 0, 0, 0, 0, 9, 19],\n-    \"a00961.html#a981c6b6a9293adc992ee7f899a22707d\": [0, 0, 0, 0, 0, 9, 22],\n+    \"a00961.html#a95bd158ec25b0697574bfda5d1397c63\": [0, 0, 0, 0, 0, 9, 19],\n     \"a00961.html#a981c6b6a9293adc992ee7f899a22707d\": [1, 0, 0, 0, 0, 9, 22],\n+    \"a00961.html#a981c6b6a9293adc992ee7f899a22707d\": [0, 0, 0, 0, 0, 9, 22],\n     \"a00961.html#aab7f4c322b4b552c5abcf2e3496de60c\": [0, 0, 0, 0, 0, 9, 6],\n     \"a00961.html#aab7f4c322b4b552c5abcf2e3496de60c\": [1, 0, 0, 0, 0, 9, 6],\n-    \"a00961.html#ab03191ef31cf0d8b0bcc44f226804e87\": [1, 0, 0, 0, 0, 9, 4],\n     \"a00961.html#ab03191ef31cf0d8b0bcc44f226804e87\": [0, 0, 0, 0, 0, 9, 4],\n-    \"a00961.html#ab08dc4952f122dc09ce7e39daa3c56f1\": [1, 0, 0, 0, 0, 9, 21],\n+    \"a00961.html#ab03191ef31cf0d8b0bcc44f226804e87\": [1, 0, 0, 0, 0, 9, 4],\n     \"a00961.html#ab08dc4952f122dc09ce7e39daa3c56f1\": [0, 0, 0, 0, 0, 9, 21],\n-    \"a00961.html#ac532c4b500b1a85ea22217f2c65a70ed\": [0, 0, 0, 0, 0, 9, 24],\n+    \"a00961.html#ab08dc4952f122dc09ce7e39daa3c56f1\": [1, 0, 0, 0, 0, 9, 21],\n     \"a00961.html#ac532c4b500b1a85ea22217f2c65a70ed\": [1, 0, 0, 0, 0, 9, 24],\n-    \"a00961.html#add7bb6250635b7a713a1d2f5424163de\": [0, 0, 0, 0, 0, 9, 25],\n+    \"a00961.html#ac532c4b500b1a85ea22217f2c65a70ed\": [0, 0, 0, 0, 0, 9, 24],\n     \"a00961.html#add7bb6250635b7a713a1d2f5424163de\": [1, 0, 0, 0, 0, 9, 25],\n-    \"a00961.html#aefe76150c0f45fa43a4211b9f4cb4bc2\": [0, 0, 0, 0, 0, 9, 9],\n+    \"a00961.html#add7bb6250635b7a713a1d2f5424163de\": [0, 0, 0, 0, 0, 9, 25],\n     \"a00961.html#aefe76150c0f45fa43a4211b9f4cb4bc2\": [1, 0, 0, 0, 0, 9, 9],\n-    \"a00965.html\": [0, 0, 0, 0, 0, 9, 0],\n+    \"a00961.html#aefe76150c0f45fa43a4211b9f4cb4bc2\": [0, 0, 0, 0, 0, 9, 9],\n     \"a00965.html\": [1, 0, 0, 0, 0, 9, 0],\n-    \"a00965.html#a28d39a844c3a37ab61d32ab7c6352f09\": [1, 0, 0, 0, 0, 9, 0, 0],\n+    \"a00965.html\": [0, 0, 0, 0, 0, 9, 0],\n     \"a00965.html#a28d39a844c3a37ab61d32ab7c6352f09\": [0, 0, 0, 0, 0, 9, 0, 0],\n-    \"a00965.html#a3f642ed70a22d6d9d3d2fe79029653f5\": [1, 0, 0, 0, 0, 9, 0, 1],\n+    \"a00965.html#a28d39a844c3a37ab61d32ab7c6352f09\": [1, 0, 0, 0, 0, 9, 0, 0],\n     \"a00965.html#a3f642ed70a22d6d9d3d2fe79029653f5\": [0, 0, 0, 0, 0, 9, 0, 1],\n-    \"a00965.html#a50c6e039e8278312e95c1dd94b8478e0\": [1, 0, 0, 0, 0, 9, 0, 7],\n+    \"a00965.html#a3f642ed70a22d6d9d3d2fe79029653f5\": [1, 0, 0, 0, 0, 9, 0, 1],\n     \"a00965.html#a50c6e039e8278312e95c1dd94b8478e0\": [0, 0, 0, 0, 0, 9, 0, 7],\n+    \"a00965.html#a50c6e039e8278312e95c1dd94b8478e0\": [1, 0, 0, 0, 0, 9, 0, 7],\n     \"a00965.html#a54b068769e4e728e78528f9bdde25b86\": [1, 0, 0, 0, 0, 9, 0, 3],\n     \"a00965.html#a54b068769e4e728e78528f9bdde25b86\": [0, 0, 0, 0, 0, 9, 0, 3],\n     \"a00965.html#a671621e55bfbc48db77919d5fd31744f\": [1, 0, 0, 0, 0, 9, 0, 2],\n     \"a00965.html#a671621e55bfbc48db77919d5fd31744f\": [0, 0, 0, 0, 0, 9, 0, 2],\n     \"a00965.html#a98820ec764e776bd556a9b80b872b78f\": [0, 0, 0, 0, 0, 9, 0, 5],\n     \"a00965.html#a98820ec764e776bd556a9b80b872b78f\": [1, 0, 0, 0, 0, 9, 0, 5],\n     \"a00965.html#aa7688afdaece2c387e8963d634752aa6\": [0, 0, 0, 0, 0, 9, 0, 6],\n     \"a00965.html#aa7688afdaece2c387e8963d634752aa6\": [1, 0, 0, 0, 0, 9, 0, 6],\n-    \"a00965.html#ad6a995daa3f819edeeaf0a8c1aeb8b6a\": [0, 0, 0, 0, 0, 9, 0, 8],\n     \"a00965.html#ad6a995daa3f819edeeaf0a8c1aeb8b6a\": [1, 0, 0, 0, 0, 9, 0, 8],\n-    \"a00965.html#ae2ec197b850e8bd12878cc67a503a07a\": [1, 0, 0, 0, 0, 9, 0, 4],\n+    \"a00965.html#ad6a995daa3f819edeeaf0a8c1aeb8b6a\": [0, 0, 0, 0, 0, 9, 0, 8],\n     \"a00965.html#ae2ec197b850e8bd12878cc67a503a07a\": [0, 0, 0, 0, 0, 9, 0, 4],\n+    \"a00965.html#ae2ec197b850e8bd12878cc67a503a07a\": [1, 0, 0, 0, 0, 9, 0, 4],\n     \"a00969.html\": [0, 0, 0, 0, 0, 10],\n     \"a00969.html\": [1, 0, 0, 0, 0, 10],\n     \"a00969.html#a03588bdc24a8240380aa0972ecae0ea1\": [0, 0, 0, 0, 0, 10, 7],\n     \"a00969.html#a03588bdc24a8240380aa0972ecae0ea1\": [1, 0, 0, 0, 0, 10, 7],\n-    \"a00969.html#a0cb0c1f4fa225637898cf1c7420bc064\": [0, 0, 0, 0, 0, 10, 3],\n     \"a00969.html#a0cb0c1f4fa225637898cf1c7420bc064\": [1, 0, 0, 0, 0, 10, 3],\n+    \"a00969.html#a0cb0c1f4fa225637898cf1c7420bc064\": [0, 0, 0, 0, 0, 10, 3],\n     \"a00969.html#a100c73e08e78f4378b34a3f7abd9f1be\": [0, 0, 0, 0, 0, 10, 18],\n     \"a00969.html#a100c73e08e78f4378b34a3f7abd9f1be\": [1, 0, 0, 0, 0, 10, 18],\n-    \"a00969.html#a1d4a38a2944a3705bfbd325766bda216\": [0, 0, 0, 0, 0, 10, 11],\n     \"a00969.html#a1d4a38a2944a3705bfbd325766bda216\": [1, 0, 0, 0, 0, 10, 11],\n+    \"a00969.html#a1d4a38a2944a3705bfbd325766bda216\": [0, 0, 0, 0, 0, 10, 11],\n     \"a00969.html#a28f34ca6c256f1f7fa44e862540ec421\": [0, 0, 0, 0, 0, 10, 13],\n     \"a00969.html#a28f34ca6c256f1f7fa44e862540ec421\": [1, 0, 0, 0, 0, 10, 13],\n     \"a00969.html#a2c6d182581c88931784f62fe2b8ae666\": [1, 0, 0, 0, 0, 10, 8],\n     \"a00969.html#a2c6d182581c88931784f62fe2b8ae666\": [0, 0, 0, 0, 0, 10, 8],\n     \"a00969.html#a434afb577a5e287b615364d94d124e84\": [0, 0, 0, 0, 0, 10, 5],\n     \"a00969.html#a434afb577a5e287b615364d94d124e84\": [1, 0, 0, 0, 0, 10, 5],\n     \"a00969.html#a460ea7c821fd4c2522de6503f9c25866\": [0, 0, 0, 0, 0, 10, 6],\n     \"a00969.html#a460ea7c821fd4c2522de6503f9c25866\": [1, 0, 0, 0, 0, 10, 6],\n     \"a00969.html#a4dacf9da42e80ca546274402a8d3b266\": [1, 0, 0, 0, 0, 10, 16],\n     \"a00969.html#a4dacf9da42e80ca546274402a8d3b266\": [0, 0, 0, 0, 0, 10, 16],\n-    \"a00969.html#a4f46be1cfd41b34d8808363c83e9ff56\": [1, 0, 0, 0, 0, 10, 10],\n     \"a00969.html#a4f46be1cfd41b34d8808363c83e9ff56\": [0, 0, 0, 0, 0, 10, 10],\n+    \"a00969.html#a4f46be1cfd41b34d8808363c83e9ff56\": [1, 0, 0, 0, 0, 10, 10],\n     \"a00969.html#a5c719e43580059139938a6ed0f851853\": [1, 0, 0, 0, 0, 10, 1],\n     \"a00969.html#a5c719e43580059139938a6ed0f851853\": [0, 0, 0, 0, 0, 10, 1],\n     \"a00969.html#a5f2854209dd55d5c420b1a7282da8793\": [1, 0, 0, 0, 0, 10, 20],\n     \"a00969.html#a5f2854209dd55d5c420b1a7282da8793\": [0, 0, 0, 0, 0, 10, 20],\n     \"a00969.html#a68afc60df5a617f5d7e1580548b72f9b\": [0, 0, 0, 0, 0, 10, 2],\n     \"a00969.html#a68afc60df5a617f5d7e1580548b72f9b\": [1, 0, 0, 0, 0, 10, 2],\n-    \"a00969.html#a831025d6d817c4afb1df7d5a705af378\": [1, 0, 0, 0, 0, 10, 0],\n     \"a00969.html#a831025d6d817c4afb1df7d5a705af378\": [0, 0, 0, 0, 0, 10, 0],\n-    \"a00969.html#aa57d6053ca61cdf53b36937812b09307\": [0, 0, 0, 0, 0, 10, 4],\n+    \"a00969.html#a831025d6d817c4afb1df7d5a705af378\": [1, 0, 0, 0, 0, 10, 0],\n     \"a00969.html#aa57d6053ca61cdf53b36937812b09307\": [1, 0, 0, 0, 0, 10, 4],\n+    \"a00969.html#aa57d6053ca61cdf53b36937812b09307\": [0, 0, 0, 0, 0, 10, 4],\n     \"a00969.html#ab744a59a71fffcff3e745c2c679aec29\": [0, 0, 0, 0, 0, 10, 12],\n     \"a00969.html#ab744a59a71fffcff3e745c2c679aec29\": [1, 0, 0, 0, 0, 10, 12],\n-    \"a00969.html#ac532c4b500b1a85ea22217f2c65a70ed\": [0, 0, 0, 0, 0, 10, 14],\n     \"a00969.html#ac532c4b500b1a85ea22217f2c65a70ed\": [1, 0, 0, 0, 0, 10, 14],\n+    \"a00969.html#ac532c4b500b1a85ea22217f2c65a70ed\": [0, 0, 0, 0, 0, 10, 14],\n     \"a00969.html#ad56c50bc5582768806d7890c55b63141\": [0, 0, 0, 0, 0, 10, 9],\n     \"a00969.html#ad56c50bc5582768806d7890c55b63141\": [1, 0, 0, 0, 0, 10, 9],\n     \"a00969.html#ae228420c7ad83f58aad85b1268518df8\": [0, 0, 0, 0, 0, 10, 15],\n     \"a00969.html#ae228420c7ad83f58aad85b1268518df8\": [1, 0, 0, 0, 0, 10, 15],\n     \"a00969.html#ae9fae0d6843ce883db4c377d19dd61a8\": [0, 0, 0, 0, 0, 10, 17],\n     \"a00969.html#ae9fae0d6843ce883db4c377d19dd61a8\": [1, 0, 0, 0, 0, 10, 17],\n-    \"a00969.html#aea91b4a9e7032d4fce2434c93ae2983a\": [0, 0, 0, 0, 0, 10, 19],\n     \"a00969.html#aea91b4a9e7032d4fce2434c93ae2983a\": [1, 0, 0, 0, 0, 10, 19],\n+    \"a00969.html#aea91b4a9e7032d4fce2434c93ae2983a\": [0, 0, 0, 0, 0, 10, 19],\n     \"a00973.html\": [0, 0, 0, 0, 1, 6],\n     \"a00973.html\": [1, 0, 0, 0, 1, 6],\n     \"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\": [1, 0, 0, 0, 1, 6, 0],\n     \"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7\": [0, 0, 0, 0, 1, 6, 0],\n     \"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a0b25cd15c2c168baf13ac0feb3980f40\": [0, 0, 0, 0, 1, 6, 0, 2],\n     \"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a0b25cd15c2c168baf13ac0feb3980f40\": [1, 0, 0, 0, 1, 6, 0, 2],\n-    \"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a27f9590991016e795e40b58f0bfeaf4c\": [0, 0, 0, 0, 1, 6, 0, 3],\n     \"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a27f9590991016e795e40b58f0bfeaf4c\": [1, 0, 0, 0, 1, 6, 0, 3],\n+    \"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a27f9590991016e795e40b58f0bfeaf4c\": [0, 0, 0, 0, 1, 6, 0, 3],\n     \"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a3a0c2fc8a9cab2764314c3324a8a68b2\": [0, 0, 0, 0, 1, 6, 0, 0],\n     \"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a3a0c2fc8a9cab2764314c3324a8a68b2\": [1, 0, 0, 0, 1, 6, 0, 0],\n-    \"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a61f7f1587bd5fe978d9ff3ece8d0624c\": [1, 0, 0, 0, 1, 6, 0, 5],\n     \"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a61f7f1587bd5fe978d9ff3ece8d0624c\": [0, 0, 0, 0, 1, 6, 0, 5],\n-    \"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a8bf2cfb939c78155cae7549621ea73f6\": [0, 0, 0, 0, 1, 6, 0, 10],\n+    \"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a61f7f1587bd5fe978d9ff3ece8d0624c\": [1, 0, 0, 0, 1, 6, 0, 5],\n     \"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a8bf2cfb939c78155cae7549621ea73f6\": [1, 0, 0, 0, 1, 6, 0, 10],\n-    \"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a9113dda3d2c5d6ffce05d54a17ed5678\": [1, 0, 0, 0, 1, 6, 0, 4],\n+    \"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a8bf2cfb939c78155cae7549621ea73f6\": [0, 0, 0, 0, 1, 6, 0, 10],\n     \"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a9113dda3d2c5d6ffce05d54a17ed5678\": [0, 0, 0, 0, 1, 6, 0, 4],\n+    \"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a9113dda3d2c5d6ffce05d54a17ed5678\": [1, 0, 0, 0, 1, 6, 0, 4],\n     \"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7ac4ae10df9c13e44880ca7be341e44f2a\": [1, 0, 0, 0, 1, 6, 0, 8],\n     \"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7ac4ae10df9c13e44880ca7be341e44f2a\": [0, 0, 0, 0, 1, 6, 0, 8],\n     \"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7ad7d1a88a40ae8938e07af7a7745054b0\": [1, 0, 0, 0, 1, 6, 0, 9],\n     \"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7ad7d1a88a40ae8938e07af7a7745054b0\": [0, 0, 0, 0, 1, 6, 0, 9],\n-    \"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7adc0f401e772f1affa81071e70631abbf\": [1, 0, 0, 0, 1, 6, 0, 1],\n     \"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7adc0f401e772f1affa81071e70631abbf\": [0, 0, 0, 0, 1, 6, 0, 1],\n+    \"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7adc0f401e772f1affa81071e70631abbf\": [1, 0, 0, 0, 1, 6, 0, 1],\n     \"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7ae765e809376e5557d348d3e991a7273e\": [1, 0, 0, 0, 1, 6, 0, 7],\n     \"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7ae765e809376e5557d348d3e991a7273e\": [0, 0, 0, 0, 1, 6, 0, 7],\n     \"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7afc488491175a6dac9e5881e363ad4c41\": [0, 0, 0, 0, 1, 6, 0, 6],\n     \"a00973.html#a1d1cfd8ffb84e947f82999c682b666a7afc488491175a6dac9e5881e363ad4c41\": [1, 0, 0, 0, 1, 6, 0, 6],\n     \"a00973.html#a1d77cd9717f08d87e372cd7047d774d9\": [1, 0, 0, 0, 1, 6, 7],\n     \"a00973.html#a1d77cd9717f08d87e372cd7047d774d9\": [0, 0, 0, 0, 1, 6, 7],\n     \"a00973.html#a485decc00facb0972f8775a8a20851fa\": [1, 0, 0, 0, 1, 6, 6],\n     \"a00973.html#a485decc00facb0972f8775a8a20851fa\": [0, 0, 0, 0, 1, 6, 6],\n-    \"a00973.html#a65d29e074c001aa7817045e54403bfbb\": [1, 0, 0, 0, 1, 6, 4],\n     \"a00973.html#a65d29e074c001aa7817045e54403bfbb\": [0, 0, 0, 0, 1, 6, 4],\n+    \"a00973.html#a65d29e074c001aa7817045e54403bfbb\": [1, 0, 0, 0, 1, 6, 4],\n     \"a00973.html#a6c6de8b1c8212039f4702f70bb75cf02\": [0, 0, 0, 0, 1, 6, 3],\n     \"a00973.html#a6c6de8b1c8212039f4702f70bb75cf02\": [1, 0, 0, 0, 1, 6, 3],\n     \"a00973.html#a70f2b01ccc2adc41113279d318210005\": [0, 0, 0, 0, 1, 6, 10],\n     \"a00973.html#a70f2b01ccc2adc41113279d318210005\": [1, 0, 0, 0, 1, 6, 10],\n     \"a00973.html#a881bd183b2e330c490fcce5caf3ef433\": [1, 0, 0, 0, 1, 6, 5],\n     \"a00973.html#a881bd183b2e330c490fcce5caf3ef433\": [0, 0, 0, 0, 1, 6, 5],\n-    \"a00973.html#a8e33c50700963e8dc99a5f598a32aaa3\": [1, 0, 0, 0, 1, 6, 2],\n     \"a00973.html#a8e33c50700963e8dc99a5f598a32aaa3\": [0, 0, 0, 0, 1, 6, 2],\n+    \"a00973.html#a8e33c50700963e8dc99a5f598a32aaa3\": [1, 0, 0, 0, 1, 6, 2],\n     \"a00973.html#a957e78d72208a5a9b394a2ea1d4d95d9\": [0, 0, 0, 0, 1, 6, 9],\n     \"a00973.html#a957e78d72208a5a9b394a2ea1d4d95d9\": [1, 0, 0, 0, 1, 6, 9],\n     \"a00973.html#abd9f5b68153db907eb7ccd0ed177dfdd\": [1, 0, 0, 0, 1, 6, 8],\n     \"a00973.html#abd9f5b68153db907eb7ccd0ed177dfdd\": [0, 0, 0, 0, 1, 6, 8],\n     \"a00973.html#acd0f82d3c49b8a5dd436d4003c44b713\": [0, 0, 0, 0, 1, 6, 11],\n     \"a00973.html#acd0f82d3c49b8a5dd436d4003c44b713\": [1, 0, 0, 0, 1, 6, 11],\n     \"a00973.html#af3f91a4a134cb2e5786990ec81f30d17\": [1, 0, 0, 0, 1, 6, 1],\n     \"a00973.html#af3f91a4a134cb2e5786990ec81f30d17\": [0, 0, 0, 0, 1, 6, 1],\n-    \"a00977.html\": [1, 0, 0, 0, 1, 7],\n     \"a00977.html\": [0, 0, 0, 0, 1, 7],\n-    \"a00977.html#a016619de52fd79dbcdb879cc12b79200\": [1, 0, 0, 0, 1, 7, 1],\n+    \"a00977.html\": [1, 0, 0, 0, 1, 7],\n     \"a00977.html#a016619de52fd79dbcdb879cc12b79200\": [0, 0, 0, 0, 1, 7, 1],\n-    \"a00977.html#abc70f9419d5f26ef85cbef5c5b6451f0\": [0, 0, 0, 0, 1, 7, 2],\n+    \"a00977.html#a016619de52fd79dbcdb879cc12b79200\": [1, 0, 0, 0, 1, 7, 1],\n     \"a00977.html#abc70f9419d5f26ef85cbef5c5b6451f0\": [1, 0, 0, 0, 1, 7, 2],\n-    \"a00977.html#ae83a6047fa1e373c7943d54b6dc46402\": [1, 0, 0, 0, 1, 7, 0],\n+    \"a00977.html#abc70f9419d5f26ef85cbef5c5b6451f0\": [0, 0, 0, 0, 1, 7, 2],\n     \"a00977.html#ae83a6047fa1e373c7943d54b6dc46402\": [0, 0, 0, 0, 1, 7, 0],\n-    \"a00989.html\": [1, 0, 0, 0, 1, 8],\n+    \"a00977.html#ae83a6047fa1e373c7943d54b6dc46402\": [1, 0, 0, 0, 1, 7, 0],\n     \"a00989.html\": [0, 0, 0, 0, 1, 8],\n+    \"a00989.html\": [1, 0, 0, 0, 1, 8],\n     \"a00989.html#a117b0b4f76b0e63ad1f6a3d83591f034\": [0, 0, 0, 0, 1, 8, 9],\n     \"a00989.html#a117b0b4f76b0e63ad1f6a3d83591f034\": [1, 0, 0, 0, 1, 8, 9],\n     \"a00989.html#a193470573424fe6b2e91f317509b5897\": [0, 0, 0, 0, 1, 8, 8],\n     \"a00989.html#a193470573424fe6b2e91f317509b5897\": [1, 0, 0, 0, 1, 8, 8],\n     \"a00989.html#a2adc7ff754a40f9a22c04cf2ab04d75c\": [0, 0, 0, 0, 1, 8, 12],\n     \"a00989.html#a2adc7ff754a40f9a22c04cf2ab04d75c\": [1, 0, 0, 0, 1, 8, 12],\n     \"a00989.html#a3ce6d530fdd758f089cd61589cf13937\": [1, 0, 0, 0, 1, 8, 1],\n     \"a00989.html#a3ce6d530fdd758f089cd61589cf13937\": [0, 0, 0, 0, 1, 8, 1],\n     \"a00989.html#a3e80fdc78d4e976e88f8d035a6bdfe9a\": [1, 0, 0, 0, 1, 8, 5],\n     \"a00989.html#a3e80fdc78d4e976e88f8d035a6bdfe9a\": [0, 0, 0, 0, 1, 8, 5],\n     \"a00989.html#a3fb8c711847e677119dcecab48e27200\": [1, 0, 0, 0, 1, 8, 4],\n     \"a00989.html#a3fb8c711847e677119dcecab48e27200\": [0, 0, 0, 0, 1, 8, 4],\n-    \"a00989.html#a5e290d380300d960b35a9e4bb36532b3\": [1, 0, 0, 0, 1, 8, 6],\n     \"a00989.html#a5e290d380300d960b35a9e4bb36532b3\": [0, 0, 0, 0, 1, 8, 6],\n+    \"a00989.html#a5e290d380300d960b35a9e4bb36532b3\": [1, 0, 0, 0, 1, 8, 6],\n     \"a00989.html#a71fe5a723e7c3a29b26cb6a0af33a7ee\": [1, 0, 0, 0, 1, 8, 3],\n     \"a00989.html#a71fe5a723e7c3a29b26cb6a0af33a7ee\": [0, 0, 0, 0, 1, 8, 3],\n     \"a00989.html#a75d02f3fb15201f2a2ca9850f77db8bb\": [1, 0, 0, 0, 1, 8, 2],\n     \"a00989.html#a75d02f3fb15201f2a2ca9850f77db8bb\": [0, 0, 0, 0, 1, 8, 2],\n     \"a00989.html#a8a53fc370a76c5d29d610d9ae926f4fe\": [1, 0, 0, 0, 1, 8, 10],\n     \"a00989.html#a8a53fc370a76c5d29d610d9ae926f4fe\": [0, 0, 0, 0, 1, 8, 10],\n     \"a00989.html#a98adcbce89caf00ca5c67c978d1f8576\": [1, 0, 0, 0, 1, 8, 13],\n     \"a00989.html#a98adcbce89caf00ca5c67c978d1f8576\": [0, 0, 0, 0, 1, 8, 13],\n     \"a00989.html#aa71d36872f416feaa853788a7a7a7ef8\": [0, 0, 0, 0, 1, 8, 0],\n     \"a00989.html#aa71d36872f416feaa853788a7a7a7ef8\": [1, 0, 0, 0, 1, 8, 0],\n-    \"a00989.html#aa992496f945c3e0ffb3a55ca84a7cb60\": [1, 0, 0, 0, 1, 8, 17],\n     \"a00989.html#aa992496f945c3e0ffb3a55ca84a7cb60\": [0, 0, 0, 0, 1, 8, 17],\n+    \"a00989.html#aa992496f945c3e0ffb3a55ca84a7cb60\": [1, 0, 0, 0, 1, 8, 17],\n     \"a00989.html#ac1285d0e8771e821487cb18d0a324097\": [1, 0, 0, 0, 1, 8, 14],\n     \"a00989.html#ac1285d0e8771e821487cb18d0a324097\": [0, 0, 0, 0, 1, 8, 14],\n-    \"a00989.html#acf6abf4b1514b90d77bff5c2563ef1c3\": [0, 0, 0, 0, 1, 8, 15],\n     \"a00989.html#acf6abf4b1514b90d77bff5c2563ef1c3\": [1, 0, 0, 0, 1, 8, 15],\n+    \"a00989.html#acf6abf4b1514b90d77bff5c2563ef1c3\": [0, 0, 0, 0, 1, 8, 15],\n     \"a00989.html#adf00c825e17a25a22eddd4a5dc3f3ea2\": [0, 0, 0, 0, 1, 8, 7],\n     \"a00989.html#adf00c825e17a25a22eddd4a5dc3f3ea2\": [1, 0, 0, 0, 1, 8, 7],\n-    \"a00989.html#ae918c114a445f892134cb94b70d3f07e\": [1, 0, 0, 0, 1, 8, 16],\n     \"a00989.html#ae918c114a445f892134cb94b70d3f07e\": [0, 0, 0, 0, 1, 8, 16],\n-    \"a00989.html#af348a1feaddb11b275b5291bfe7e76f7\": [0, 0, 0, 0, 1, 8, 11],\n+    \"a00989.html#ae918c114a445f892134cb94b70d3f07e\": [1, 0, 0, 0, 1, 8, 16],\n     \"a00989.html#af348a1feaddb11b275b5291bfe7e76f7\": [1, 0, 0, 0, 1, 8, 11],\n+    \"a00989.html#af348a1feaddb11b275b5291bfe7e76f7\": [0, 0, 0, 0, 1, 8, 11],\n     \"a00993.html\": [1, 0, 0, 0, 1, 9],\n     \"a00993.html\": [0, 0, 0, 0, 1, 9],\n     \"a00993.html#a012069d0bc0036c1e2bb75bc2a170c58\": [1, 0, 0, 0, 1, 9, 50],\n     \"a00993.html#a012069d0bc0036c1e2bb75bc2a170c58\": [0, 0, 0, 0, 1, 9, 50],\n-    \"a00993.html#a02449704e384b32232b06d0d57968138\": [0, 0, 0, 0, 1, 9, 73],\n     \"a00993.html#a02449704e384b32232b06d0d57968138\": [1, 0, 0, 0, 1, 9, 73],\n-    \"a00993.html#a02ba6ac8fc716dd7349a8a1143319079\": [1, 0, 0, 0, 1, 9, 52],\n+    \"a00993.html#a02449704e384b32232b06d0d57968138\": [0, 0, 0, 0, 1, 9, 73],\n     \"a00993.html#a02ba6ac8fc716dd7349a8a1143319079\": [0, 0, 0, 0, 1, 9, 52],\n+    \"a00993.html#a02ba6ac8fc716dd7349a8a1143319079\": [1, 0, 0, 0, 1, 9, 52],\n     \"a00993.html#a059c9506f9ef8ebf24a68fc298be58be\": [1, 0, 0, 0, 1, 9, 9],\n     \"a00993.html#a059c9506f9ef8ebf24a68fc298be58be\": [0, 0, 0, 0, 1, 9, 9],\n     \"a00993.html#a062d31216b535f604b3bc4d69434270d\": [0, 0, 0, 0, 1, 9, 77],\n     \"a00993.html#a062d31216b535f604b3bc4d69434270d\": [1, 0, 0, 0, 1, 9, 77],\n     \"a00993.html#a08ccda63d26e5b06957be5f5eec75d01\": [1, 0, 0, 0, 1, 9, 10],\n     \"a00993.html#a08ccda63d26e5b06957be5f5eec75d01\": [0, 0, 0, 0, 1, 9, 10],\n     \"a00993.html#a0cb33d03729931750660ebf58b9e89ec\": [0, 0, 0, 0, 1, 9, 66],\n     \"a00993.html#a0cb33d03729931750660ebf58b9e89ec\": [1, 0, 0, 0, 1, 9, 66],\n-    \"a00993.html#a11c0f8be31c18b856cf9cdea511e54de\": [0, 0, 0, 0, 1, 9, 79],\n     \"a00993.html#a11c0f8be31c18b856cf9cdea511e54de\": [1, 0, 0, 0, 1, 9, 79],\n-    \"a00993.html#a14bf987459715b918b370247bb24a61c\": [1, 0, 0, 0, 1, 9, 36],\n+    \"a00993.html#a11c0f8be31c18b856cf9cdea511e54de\": [0, 0, 0, 0, 1, 9, 79],\n     \"a00993.html#a14bf987459715b918b370247bb24a61c\": [0, 0, 0, 0, 1, 9, 36],\n+    \"a00993.html#a14bf987459715b918b370247bb24a61c\": [1, 0, 0, 0, 1, 9, 36],\n+    \"a00993.html#a1c85ed58e2e3362dd22fbdb815f2c5a3\": [1, 0, 0, 0, 1, 9, 31],\n     \"a00993.html#a1c85ed58e2e3362dd22fbdb815f2c5a3\": [0, 0, 0, 0, 1, 9, 31],\n     \"a00993.html#a1c85ed58e2e3362dd22fbdb815f2c5a3\": [0, 0, 0, 0, 1, 9, 32],\n-    \"a00993.html#a1c85ed58e2e3362dd22fbdb815f2c5a3\": [1, 0, 0, 0, 1, 9, 31],\n     \"a00993.html#a1c85ed58e2e3362dd22fbdb815f2c5a3\": [1, 0, 0, 0, 1, 9, 32]\n };\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/navtreeindex3.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/navtreeindex3.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,252 +1,252 @@\n var NAVTREEINDEX3 = {\n-    \"a00993.html#a1d27edb01bfb68ba50776b25aa437783\": [0, 0, 0, 0, 1, 9, 30],\n     \"a00993.html#a1d27edb01bfb68ba50776b25aa437783\": [1, 0, 0, 0, 1, 9, 30],\n-    \"a00993.html#a21130b3d23cd5c27045d03c601e4642d\": [1, 0, 0, 0, 1, 9, 62],\n+    \"a00993.html#a1d27edb01bfb68ba50776b25aa437783\": [0, 0, 0, 0, 1, 9, 30],\n     \"a00993.html#a21130b3d23cd5c27045d03c601e4642d\": [0, 0, 0, 0, 1, 9, 62],\n+    \"a00993.html#a21130b3d23cd5c27045d03c601e4642d\": [1, 0, 0, 0, 1, 9, 62],\n     \"a00993.html#a24c2f632253c21d97fdba264ac2635a9\": [1, 0, 0, 0, 1, 9, 85],\n-    \"a00993.html#a24c2f632253c21d97fdba264ac2635a9\": [0, 0, 0, 0, 1, 9, 84],\n     \"a00993.html#a24c2f632253c21d97fdba264ac2635a9\": [0, 0, 0, 0, 1, 9, 85],\n     \"a00993.html#a24c2f632253c21d97fdba264ac2635a9\": [1, 0, 0, 0, 1, 9, 84],\n+    \"a00993.html#a24c2f632253c21d97fdba264ac2635a9\": [0, 0, 0, 0, 1, 9, 84],\n     \"a00993.html#a2a749eef1377f4f13a23c95e4038525d\": [0, 0, 0, 0, 1, 9, 49],\n     \"a00993.html#a2a749eef1377f4f13a23c95e4038525d\": [1, 0, 0, 0, 1, 9, 49],\n-    \"a00993.html#a2d2c7ac649a9a285741dfdc1ed3089b3\": [0, 0, 0, 0, 1, 9, 72],\n     \"a00993.html#a2d2c7ac649a9a285741dfdc1ed3089b3\": [1, 0, 0, 0, 1, 9, 72],\n-    \"a00993.html#a2fbf111cac9d122eeaec5c0cb73fa77d\": [0, 0, 0, 0, 1, 9, 4],\n+    \"a00993.html#a2d2c7ac649a9a285741dfdc1ed3089b3\": [0, 0, 0, 0, 1, 9, 72],\n     \"a00993.html#a2fbf111cac9d122eeaec5c0cb73fa77d\": [1, 0, 0, 0, 1, 9, 4],\n-    \"a00993.html#a30c6cda6c630d6823cdcc718e79a99ca\": [0, 0, 0, 0, 1, 9, 18],\n+    \"a00993.html#a2fbf111cac9d122eeaec5c0cb73fa77d\": [0, 0, 0, 0, 1, 9, 4],\n     \"a00993.html#a30c6cda6c630d6823cdcc718e79a99ca\": [1, 0, 0, 0, 1, 9, 18],\n+    \"a00993.html#a30c6cda6c630d6823cdcc718e79a99ca\": [0, 0, 0, 0, 1, 9, 18],\n     \"a00993.html#a315fc19f788ba446560b2641186c393e\": [0, 0, 0, 0, 1, 9, 54],\n     \"a00993.html#a315fc19f788ba446560b2641186c393e\": [1, 0, 0, 0, 1, 9, 54],\n-    \"a00993.html#a31b548d9f8334f3c4f9341eda3479982\": [0, 0, 0, 0, 1, 9, 65],\n     \"a00993.html#a31b548d9f8334f3c4f9341eda3479982\": [1, 0, 0, 0, 1, 9, 65],\n+    \"a00993.html#a31b548d9f8334f3c4f9341eda3479982\": [0, 0, 0, 0, 1, 9, 65],\n     \"a00993.html#a3419c5d57330d6787f8c14a7677b8d9b\": [1, 0, 0, 0, 1, 9, 5],\n     \"a00993.html#a3419c5d57330d6787f8c14a7677b8d9b\": [0, 0, 0, 0, 1, 9, 5],\n-    \"a00993.html#a3432d7022e415ef661ccd6726ed3743f\": [0, 0, 0, 0, 1, 9, 43],\n     \"a00993.html#a3432d7022e415ef661ccd6726ed3743f\": [1, 0, 0, 0, 1, 9, 43],\n-    \"a00993.html#a37804f17e707ef64a7f165d15b6cf013\": [1, 0, 0, 0, 1, 9, 68],\n+    \"a00993.html#a3432d7022e415ef661ccd6726ed3743f\": [0, 0, 0, 0, 1, 9, 43],\n     \"a00993.html#a37804f17e707ef64a7f165d15b6cf013\": [0, 0, 0, 0, 1, 9, 68],\n-    \"a00993.html#a37e24b0244219eef61cc1ab2a5a5450e\": [0, 0, 0, 0, 1, 9, 7],\n+    \"a00993.html#a37804f17e707ef64a7f165d15b6cf013\": [1, 0, 0, 0, 1, 9, 68],\n     \"a00993.html#a37e24b0244219eef61cc1ab2a5a5450e\": [1, 0, 0, 0, 1, 9, 7],\n+    \"a00993.html#a37e24b0244219eef61cc1ab2a5a5450e\": [0, 0, 0, 0, 1, 9, 7],\n     \"a00993.html#a38d50a271b91fe5b1a9f11904d06ce49\": [0, 0, 0, 0, 1, 9, 80],\n     \"a00993.html#a38d50a271b91fe5b1a9f11904d06ce49\": [1, 0, 0, 0, 1, 9, 80],\n-    \"a00993.html#a39cd14c1ae309f7fc7872b7b0d03dde3\": [1, 0, 0, 0, 1, 9, 63],\n     \"a00993.html#a39cd14c1ae309f7fc7872b7b0d03dde3\": [0, 0, 0, 0, 1, 9, 63],\n+    \"a00993.html#a39cd14c1ae309f7fc7872b7b0d03dde3\": [1, 0, 0, 0, 1, 9, 63],\n     \"a00993.html#a3c912c55ec0579d5f16fb2946a9e7f72\": [0, 0, 0, 0, 1, 9, 12],\n     \"a00993.html#a3c912c55ec0579d5f16fb2946a9e7f72\": [1, 0, 0, 0, 1, 9, 12],\n     \"a00993.html#a442f93101ba3ac94d07f1d9ceb1cdcd6\": [1, 0, 0, 0, 1, 9, 78],\n     \"a00993.html#a442f93101ba3ac94d07f1d9ceb1cdcd6\": [0, 0, 0, 0, 1, 9, 78],\n     \"a00993.html#a4814cce8e9b999c4dbb64bcf09ab73e1\": [1, 0, 0, 0, 1, 9, 81],\n     \"a00993.html#a4814cce8e9b999c4dbb64bcf09ab73e1\": [1, 0, 0, 0, 1, 9, 82],\n     \"a00993.html#a4814cce8e9b999c4dbb64bcf09ab73e1\": [0, 0, 0, 0, 1, 9, 82],\n     \"a00993.html#a4814cce8e9b999c4dbb64bcf09ab73e1\": [0, 0, 0, 0, 1, 9, 81],\n-    \"a00993.html#a523e2a6f899aede5166441b14efa348a\": [1, 0, 0, 0, 1, 9, 28],\n     \"a00993.html#a523e2a6f899aede5166441b14efa348a\": [0, 0, 0, 0, 1, 9, 28],\n-    \"a00993.html#a56a6ad825eff8823aee85348b73e70f7\": [0, 0, 0, 0, 1, 9, 27],\n+    \"a00993.html#a523e2a6f899aede5166441b14efa348a\": [1, 0, 0, 0, 1, 9, 28],\n     \"a00993.html#a56a6ad825eff8823aee85348b73e70f7\": [1, 0, 0, 0, 1, 9, 27],\n+    \"a00993.html#a56a6ad825eff8823aee85348b73e70f7\": [0, 0, 0, 0, 1, 9, 27],\n     \"a00993.html#a5b32465be706d80f4fac5ea05e3e0ded\": [1, 0, 0, 0, 1, 9, 37],\n     \"a00993.html#a5b32465be706d80f4fac5ea05e3e0ded\": [0, 0, 0, 0, 1, 9, 37],\n     \"a00993.html#a5cbd789bd429e35377db5f4c97701874\": [1, 0, 0, 0, 1, 9, 6],\n     \"a00993.html#a5cbd789bd429e35377db5f4c97701874\": [0, 0, 0, 0, 1, 9, 6],\n-    \"a00993.html#a64fe119d6034e4b1f39e81d39ad9dfc4\": [1, 0, 0, 0, 1, 9, 16],\n     \"a00993.html#a64fe119d6034e4b1f39e81d39ad9dfc4\": [0, 0, 0, 0, 1, 9, 16],\n-    \"a00993.html#a68a029efbad55b2fd991d29aa37a7c28\": [0, 0, 0, 0, 1, 9, 64],\n+    \"a00993.html#a64fe119d6034e4b1f39e81d39ad9dfc4\": [1, 0, 0, 0, 1, 9, 16],\n     \"a00993.html#a68a029efbad55b2fd991d29aa37a7c28\": [1, 0, 0, 0, 1, 9, 64],\n+    \"a00993.html#a68a029efbad55b2fd991d29aa37a7c28\": [0, 0, 0, 0, 1, 9, 64],\n     \"a00993.html#a733ff80d6d940519b47091c58abbed34\": [0, 0, 0, 0, 1, 9, 22],\n     \"a00993.html#a733ff80d6d940519b47091c58abbed34\": [1, 0, 0, 0, 1, 9, 22],\n-    \"a00993.html#a73752510551b8bda85fbc7f43e97730b\": [1, 0, 0, 0, 1, 9, 74],\n     \"a00993.html#a73752510551b8bda85fbc7f43e97730b\": [0, 0, 0, 0, 1, 9, 74],\n-    \"a00993.html#a7c1135ced687d1313ed925b8441fdf60\": [1, 0, 0, 0, 1, 9, 71],\n+    \"a00993.html#a73752510551b8bda85fbc7f43e97730b\": [1, 0, 0, 0, 1, 9, 74],\n     \"a00993.html#a7c1135ced687d1313ed925b8441fdf60\": [0, 0, 0, 0, 1, 9, 71],\n-    \"a00993.html#a7dcb88c32ded6c233f129d7b6fb7a159\": [0, 0, 0, 0, 1, 9, 8],\n+    \"a00993.html#a7c1135ced687d1313ed925b8441fdf60\": [1, 0, 0, 0, 1, 9, 71],\n     \"a00993.html#a7dcb88c32ded6c233f129d7b6fb7a159\": [1, 0, 0, 0, 1, 9, 8],\n-    \"a00993.html#a80a3dced9165fc1a8a9bdbfe6b6111a4\": [0, 0, 0, 0, 1, 9, 11],\n+    \"a00993.html#a7dcb88c32ded6c233f129d7b6fb7a159\": [0, 0, 0, 0, 1, 9, 8],\n     \"a00993.html#a80a3dced9165fc1a8a9bdbfe6b6111a4\": [1, 0, 0, 0, 1, 9, 11],\n+    \"a00993.html#a80a3dced9165fc1a8a9bdbfe6b6111a4\": [0, 0, 0, 0, 1, 9, 11],\n     \"a00993.html#a875abc47934c4076304f3b9c4edde3cc\": [0, 0, 0, 0, 1, 9, 75],\n     \"a00993.html#a875abc47934c4076304f3b9c4edde3cc\": [1, 0, 0, 0, 1, 9, 75],\n-    \"a00993.html#a8c1242bf6bffa416c2e172a02f3ee31c\": [1, 0, 0, 0, 1, 9, 59],\n     \"a00993.html#a8c1242bf6bffa416c2e172a02f3ee31c\": [0, 0, 0, 0, 1, 9, 59],\n-    \"a00993.html#a8cc9b6bbaaecd1facf0cfae0853e3a60\": [1, 0, 0, 0, 1, 9, 56],\n+    \"a00993.html#a8c1242bf6bffa416c2e172a02f3ee31c\": [1, 0, 0, 0, 1, 9, 59],\n     \"a00993.html#a8cc9b6bbaaecd1facf0cfae0853e3a60\": [0, 0, 0, 0, 1, 9, 56],\n-    \"a00993.html#a90705c85d6b680933c93344c9804e4d6\": [1, 0, 0, 0, 1, 9, 23],\n+    \"a00993.html#a8cc9b6bbaaecd1facf0cfae0853e3a60\": [1, 0, 0, 0, 1, 9, 56],\n     \"a00993.html#a90705c85d6b680933c93344c9804e4d6\": [0, 0, 0, 0, 1, 9, 23],\n+    \"a00993.html#a90705c85d6b680933c93344c9804e4d6\": [1, 0, 0, 0, 1, 9, 23],\n     \"a00993.html#a9373bf15eaee019dd08099d05515e080\": [0, 0, 0, 0, 1, 9, 53],\n     \"a00993.html#a9373bf15eaee019dd08099d05515e080\": [1, 0, 0, 0, 1, 9, 53],\n-    \"a00993.html#a9484ab8a323750c2f639ee8709b1349b\": [1, 0, 0, 0, 1, 9, 2],\n     \"a00993.html#a9484ab8a323750c2f639ee8709b1349b\": [0, 0, 0, 0, 1, 9, 2],\n-    \"a00993.html#a99b23eec59013306ea2f1df119a7574d\": [1, 0, 0, 0, 1, 9, 69],\n+    \"a00993.html#a9484ab8a323750c2f639ee8709b1349b\": [1, 0, 0, 0, 1, 9, 2],\n     \"a00993.html#a99b23eec59013306ea2f1df119a7574d\": [0, 0, 0, 0, 1, 9, 69],\n+    \"a00993.html#a99b23eec59013306ea2f1df119a7574d\": [1, 0, 0, 0, 1, 9, 69],\n     \"a00993.html#a9d7d8d4411b09211fbf901cb7564df4c\": [1, 0, 0, 0, 1, 9, 44],\n     \"a00993.html#a9d7d8d4411b09211fbf901cb7564df4c\": [0, 0, 0, 0, 1, 9, 44],\n     \"a00993.html#a9f14d69df88fa663dcfdec990ec9e3f3\": [0, 0, 0, 0, 1, 9, 76],\n     \"a00993.html#a9f14d69df88fa663dcfdec990ec9e3f3\": [1, 0, 0, 0, 1, 9, 76],\n     \"a00993.html#aa09810ac68ebdc45a1e4b1a2bb657bdd\": [0, 0, 0, 0, 1, 9, 14],\n     \"a00993.html#aa09810ac68ebdc45a1e4b1a2bb657bdd\": [1, 0, 0, 0, 1, 9, 14],\n-    \"a00993.html#aa3020b88381e6966efbe6c4febf8c04f\": [1, 0, 0, 0, 1, 9, 57],\n     \"a00993.html#aa3020b88381e6966efbe6c4febf8c04f\": [0, 0, 0, 0, 1, 9, 57],\n-    \"a00993.html#aa3dd3f4235b25b5feca23351835207b5\": [1, 0, 0, 0, 1, 9, 61],\n+    \"a00993.html#aa3020b88381e6966efbe6c4febf8c04f\": [1, 0, 0, 0, 1, 9, 57],\n     \"a00993.html#aa3dd3f4235b25b5feca23351835207b5\": [0, 0, 0, 0, 1, 9, 61],\n+    \"a00993.html#aa3dd3f4235b25b5feca23351835207b5\": [1, 0, 0, 0, 1, 9, 61],\n     \"a00993.html#aa78873a43e9f5b599cba62356882d0a5\": [0, 0, 0, 0, 1, 9, 15],\n     \"a00993.html#aa78873a43e9f5b599cba62356882d0a5\": [1, 0, 0, 0, 1, 9, 15],\n     \"a00993.html#aa7d301570e6f7b39e1eaa546e2937018\": [0, 0, 0, 0, 1, 9, 38],\n     \"a00993.html#aa7d301570e6f7b39e1eaa546e2937018\": [1, 0, 0, 0, 1, 9, 38],\n-    \"a00993.html#aa9be824a572029f3ec1e0c0d6cfecd77\": [0, 0, 0, 0, 1, 9, 39],\n     \"a00993.html#aa9be824a572029f3ec1e0c0d6cfecd77\": [1, 0, 0, 0, 1, 9, 39],\n-    \"a00993.html#aa9e55389ca0f7adf332423216b31134d\": [0, 0, 0, 0, 1, 9, 48],\n+    \"a00993.html#aa9be824a572029f3ec1e0c0d6cfecd77\": [0, 0, 0, 0, 1, 9, 39],\n     \"a00993.html#aa9e55389ca0f7adf332423216b31134d\": [1, 0, 0, 0, 1, 9, 48],\n-    \"a00993.html#ab0adae83e2dd316f9ed297fe745dab55\": [0, 0, 0, 0, 1, 9, 58],\n+    \"a00993.html#aa9e55389ca0f7adf332423216b31134d\": [0, 0, 0, 0, 1, 9, 48],\n     \"a00993.html#ab0adae83e2dd316f9ed297fe745dab55\": [1, 0, 0, 0, 1, 9, 58],\n-    \"a00993.html#ab15bba670f52d55d19967104b95b9024\": [0, 0, 0, 0, 1, 9, 40],\n+    \"a00993.html#ab0adae83e2dd316f9ed297fe745dab55\": [0, 0, 0, 0, 1, 9, 58],\n     \"a00993.html#ab15bba670f52d55d19967104b95b9024\": [1, 0, 0, 0, 1, 9, 40],\n+    \"a00993.html#ab15bba670f52d55d19967104b95b9024\": [0, 0, 0, 0, 1, 9, 40],\n     \"a00993.html#ab181437e35cfc57ef3efdd368bb51a69\": [1, 0, 0, 0, 1, 9, 86],\n     \"a00993.html#ab181437e35cfc57ef3efdd368bb51a69\": [0, 0, 0, 0, 1, 9, 86],\n     \"a00993.html#ab3133704d2b372da1204e6650d4800ee\": [0, 0, 0, 0, 1, 9, 51],\n     \"a00993.html#ab3133704d2b372da1204e6650d4800ee\": [1, 0, 0, 0, 1, 9, 51],\n     \"a00993.html#ab45dd46b44737845ca57f634f11f1bbc\": [1, 0, 0, 0, 1, 9, 46],\n     \"a00993.html#ab45dd46b44737845ca57f634f11f1bbc\": [0, 0, 0, 0, 1, 9, 46],\n-    \"a00993.html#ab6810a0252d1c07b7459065c3dde2903\": [0, 0, 0, 0, 1, 9, 25],\n     \"a00993.html#ab6810a0252d1c07b7459065c3dde2903\": [1, 0, 0, 0, 1, 9, 25],\n+    \"a00993.html#ab6810a0252d1c07b7459065c3dde2903\": [0, 0, 0, 0, 1, 9, 25],\n     \"a00993.html#ab72c4254f74c932eeb7d7b08805932c5\": [0, 0, 0, 0, 1, 9, 1],\n     \"a00993.html#ab72c4254f74c932eeb7d7b08805932c5\": [1, 0, 0, 0, 1, 9, 1],\n-    \"a00993.html#ab8a09f15edef57b9b4aed0d0d6183b75\": [0, 0, 0, 0, 1, 9, 13],\n     \"a00993.html#ab8a09f15edef57b9b4aed0d0d6183b75\": [1, 0, 0, 0, 1, 9, 13],\n-    \"a00993.html#ac176593fac078b4f7dd4801d586d6c41\": [0, 0, 0, 0, 1, 9, 29],\n+    \"a00993.html#ab8a09f15edef57b9b4aed0d0d6183b75\": [0, 0, 0, 0, 1, 9, 13],\n     \"a00993.html#ac176593fac078b4f7dd4801d586d6c41\": [1, 0, 0, 0, 1, 9, 29],\n+    \"a00993.html#ac176593fac078b4f7dd4801d586d6c41\": [0, 0, 0, 0, 1, 9, 29],\n     \"a00993.html#ac326c7af7f135ba41829dd20bd1c2f34\": [1, 0, 0, 0, 1, 9, 17],\n     \"a00993.html#ac326c7af7f135ba41829dd20bd1c2f34\": [0, 0, 0, 0, 1, 9, 17],\n-    \"a00993.html#ac39a9665667b0a4fcc7ed028b7faaa47\": [1, 0, 0, 0, 1, 9, 45],\n     \"a00993.html#ac39a9665667b0a4fcc7ed028b7faaa47\": [0, 0, 0, 0, 1, 9, 45],\n-    \"a00993.html#ac44a6262548ebebae9bbc5b5f3c43e3a\": [1, 0, 0, 0, 1, 9, 60],\n+    \"a00993.html#ac39a9665667b0a4fcc7ed028b7faaa47\": [1, 0, 0, 0, 1, 9, 45],\n     \"a00993.html#ac44a6262548ebebae9bbc5b5f3c43e3a\": [0, 0, 0, 0, 1, 9, 60],\n+    \"a00993.html#ac44a6262548ebebae9bbc5b5f3c43e3a\": [1, 0, 0, 0, 1, 9, 60],\n     \"a00993.html#acd0f82d3c49b8a5dd436d4003c44b713\": [1, 0, 0, 0, 1, 9, 89],\n     \"a00993.html#acd0f82d3c49b8a5dd436d4003c44b713\": [0, 0, 0, 0, 1, 9, 89],\n     \"a00993.html#ad0e821181a94f5019cc79b75d3eb74b6\": [0, 0, 0, 0, 1, 9, 20],\n     \"a00993.html#ad0e821181a94f5019cc79b75d3eb74b6\": [1, 0, 0, 0, 1, 9, 20],\n     \"a00993.html#ad173086439fbbf0412b86b3d1262847d\": [0, 0, 0, 0, 1, 9, 70],\n     \"a00993.html#ad173086439fbbf0412b86b3d1262847d\": [1, 0, 0, 0, 1, 9, 70],\n     \"a00993.html#ad2744ba943362370738d6bd8448cd779\": [0, 0, 0, 0, 1, 9, 47],\n     \"a00993.html#ad2744ba943362370738d6bd8448cd779\": [1, 0, 0, 0, 1, 9, 47],\n-    \"a00993.html#ad452cef79832abb71eef0c3d88acc1a0\": [1, 0, 0, 0, 1, 9, 90],\n     \"a00993.html#ad452cef79832abb71eef0c3d88acc1a0\": [0, 0, 0, 0, 1, 9, 90],\n+    \"a00993.html#ad452cef79832abb71eef0c3d88acc1a0\": [1, 0, 0, 0, 1, 9, 90],\n     \"a00993.html#ad690cee703683b70def7a4419120cc9a\": [1, 0, 0, 0, 1, 9, 19],\n     \"a00993.html#ad690cee703683b70def7a4419120cc9a\": [0, 0, 0, 0, 1, 9, 19],\n-    \"a00993.html#ad6bafe91da1dcf5b8fb1f7c8cb4ed619\": [0, 0, 0, 0, 1, 9, 33],\n     \"a00993.html#ad6bafe91da1dcf5b8fb1f7c8cb4ed619\": [1, 0, 0, 0, 1, 9, 33],\n+    \"a00993.html#ad6bafe91da1dcf5b8fb1f7c8cb4ed619\": [0, 0, 0, 0, 1, 9, 33],\n     \"a00993.html#ad71e6ae07059dc39b0550c98cfcee291\": [0, 0, 0, 0, 1, 9, 3],\n     \"a00993.html#ad71e6ae07059dc39b0550c98cfcee291\": [1, 0, 0, 0, 1, 9, 3],\n     \"a00993.html#ad897fbe60d2921cfbf5e1bed8760d49f\": [1, 0, 0, 0, 1, 9, 67],\n     \"a00993.html#ad897fbe60d2921cfbf5e1bed8760d49f\": [0, 0, 0, 0, 1, 9, 67],\n-    \"a00993.html#ad9481ab788a82c6a48364fff6a8ab193\": [0, 0, 0, 0, 1, 9, 55],\n     \"a00993.html#ad9481ab788a82c6a48364fff6a8ab193\": [1, 0, 0, 0, 1, 9, 55],\n+    \"a00993.html#ad9481ab788a82c6a48364fff6a8ab193\": [0, 0, 0, 0, 1, 9, 55],\n     \"a00993.html#ad98dc91babcdddf20876169a70e10402\": [1, 0, 0, 0, 1, 9, 26],\n     \"a00993.html#ad98dc91babcdddf20876169a70e10402\": [0, 0, 0, 0, 1, 9, 26],\n-    \"a00993.html#adb4260cb1d469935a32df5ad35d98bb4\": [1, 0, 0, 0, 1, 9, 24],\n     \"a00993.html#adb4260cb1d469935a32df5ad35d98bb4\": [0, 0, 0, 0, 1, 9, 24],\n+    \"a00993.html#adb4260cb1d469935a32df5ad35d98bb4\": [1, 0, 0, 0, 1, 9, 24],\n     \"a00993.html#adccd68da8d26bb5f5c2b7f29e0a14e89\": [0, 0, 0, 0, 1, 9, 21],\n     \"a00993.html#adccd68da8d26bb5f5c2b7f29e0a14e89\": [1, 0, 0, 0, 1, 9, 21],\n-    \"a00993.html#adf2a870e7fccf780894d17160b7967f0\": [0, 0, 0, 0, 1, 9, 42],\n     \"a00993.html#adf2a870e7fccf780894d17160b7967f0\": [1, 0, 0, 0, 1, 9, 42],\n-    \"a00993.html#ae7d9c513e950df25aebfeed309666764\": [1, 0, 0, 0, 1, 9, 83],\n+    \"a00993.html#adf2a870e7fccf780894d17160b7967f0\": [0, 0, 0, 0, 1, 9, 42],\n     \"a00993.html#ae7d9c513e950df25aebfeed309666764\": [0, 0, 0, 0, 1, 9, 83],\n-    \"a00993.html#af22fd3afdc99098cc89463f530de5011\": [1, 0, 0, 0, 1, 9, 88],\n-    \"a00993.html#af22fd3afdc99098cc89463f530de5011\": [1, 0, 0, 0, 1, 9, 87],\n+    \"a00993.html#ae7d9c513e950df25aebfeed309666764\": [1, 0, 0, 0, 1, 9, 83],\n     \"a00993.html#af22fd3afdc99098cc89463f530de5011\": [0, 0, 0, 0, 1, 9, 88],\n+    \"a00993.html#af22fd3afdc99098cc89463f530de5011\": [1, 0, 0, 0, 1, 9, 87],\n+    \"a00993.html#af22fd3afdc99098cc89463f530de5011\": [1, 0, 0, 0, 1, 9, 88],\n     \"a00993.html#af22fd3afdc99098cc89463f530de5011\": [0, 0, 0, 0, 1, 9, 87],\n-    \"a00993.html#af903f44e0f0743652b5f465ff60492a2\": [0, 0, 0, 0, 1, 9, 35],\n-    \"a00993.html#af903f44e0f0743652b5f465ff60492a2\": [1, 0, 0, 0, 1, 9, 35],\n     \"a00993.html#af903f44e0f0743652b5f465ff60492a2\": [0, 0, 0, 0, 1, 9, 34],\n+    \"a00993.html#af903f44e0f0743652b5f465ff60492a2\": [0, 0, 0, 0, 1, 9, 35],\n     \"a00993.html#af903f44e0f0743652b5f465ff60492a2\": [1, 0, 0, 0, 1, 9, 34],\n-    \"a00993.html#afc91733be6989f2f18c4817fc43ab070\": [1, 0, 0, 0, 1, 9, 41],\n+    \"a00993.html#af903f44e0f0743652b5f465ff60492a2\": [1, 0, 0, 0, 1, 9, 35],\n     \"a00993.html#afc91733be6989f2f18c4817fc43ab070\": [0, 0, 0, 0, 1, 9, 41],\n-    \"a00997.html\": [0, 0, 0, 0, 1, 9, 0],\n+    \"a00993.html#afc91733be6989f2f18c4817fc43ab070\": [1, 0, 0, 0, 1, 9, 41],\n     \"a00997.html\": [1, 0, 0, 0, 1, 9, 0],\n+    \"a00997.html\": [0, 0, 0, 0, 1, 9, 0],\n     \"a00997.html#a31bdf15525ab73560c2b725ff7f8ae3a\": [1, 0, 0, 0, 1, 9, 0, 3],\n     \"a00997.html#a31bdf15525ab73560c2b725ff7f8ae3a\": [0, 0, 0, 0, 1, 9, 0, 3],\n     \"a00997.html#a4430ecde7e1d784b2bef6dc4c2ff04c2\": [0, 0, 0, 0, 1, 9, 0, 2],\n     \"a00997.html#a4430ecde7e1d784b2bef6dc4c2ff04c2\": [1, 0, 0, 0, 1, 9, 0, 2],\n     \"a00997.html#a46d1a8129375c3ee40a33a81d44b685a\": [0, 0, 0, 0, 1, 9, 0, 4],\n     \"a00997.html#a46d1a8129375c3ee40a33a81d44b685a\": [1, 0, 0, 0, 1, 9, 0, 4],\n     \"a00997.html#ad4867d502f9704b7e45a7974e8918dc3\": [0, 0, 0, 0, 1, 9, 0, 1],\n     \"a00997.html#ad4867d502f9704b7e45a7974e8918dc3\": [1, 0, 0, 0, 1, 9, 0, 1],\n-    \"a00997.html#aff380d8d7f072959898c0a4e25150d2a\": [0, 0, 0, 0, 1, 9, 0, 0],\n     \"a00997.html#aff380d8d7f072959898c0a4e25150d2a\": [1, 0, 0, 0, 1, 9, 0, 0],\n+    \"a00997.html#aff380d8d7f072959898c0a4e25150d2a\": [0, 0, 0, 0, 1, 9, 0, 0],\n     \"a01017.html\": [1, 0, 0, 0, 1, 10],\n     \"a01017.html\": [0, 0, 0, 0, 1, 10],\n-    \"a01017.html#a37218ea13f75caee4c93cc4e94d26060\": [1, 0, 0, 0, 1, 10, 2],\n     \"a01017.html#a37218ea13f75caee4c93cc4e94d26060\": [0, 0, 0, 0, 1, 10, 2],\n-    \"a01021.html\": [0, 0, 0, 0, 1, 10, 0],\n+    \"a01017.html#a37218ea13f75caee4c93cc4e94d26060\": [1, 0, 0, 0, 1, 10, 2],\n     \"a01021.html\": [1, 0, 0, 0, 1, 10, 0],\n+    \"a01021.html\": [0, 0, 0, 0, 1, 10, 0],\n     \"a01021.html#a039b27c797bb2b4be4af66798787081e\": [0, 0, 0, 0, 1, 10, 0, 18],\n     \"a01021.html#a039b27c797bb2b4be4af66798787081e\": [1, 0, 0, 0, 1, 10, 0, 18],\n     \"a01021.html#a0fe3eeef4b5b332c7747a940db43cd8d\": [1, 0, 0, 0, 1, 10, 0, 16],\n     \"a01021.html#a0fe3eeef4b5b332c7747a940db43cd8d\": [0, 0, 0, 0, 1, 10, 0, 16],\n-    \"a01021.html#a113fa8ce12150940afe0215c702cc89d\": [0, 0, 0, 0, 1, 10, 0, 24],\n     \"a01021.html#a113fa8ce12150940afe0215c702cc89d\": [1, 0, 0, 0, 1, 10, 0, 24],\n-    \"a01021.html#a14138864bf072e99898a8d1a0c074468\": [0, 0, 0, 0, 1, 10, 0, 3],\n+    \"a01021.html#a113fa8ce12150940afe0215c702cc89d\": [0, 0, 0, 0, 1, 10, 0, 24],\n     \"a01021.html#a14138864bf072e99898a8d1a0c074468\": [1, 0, 0, 0, 1, 10, 0, 3],\n+    \"a01021.html#a14138864bf072e99898a8d1a0c074468\": [0, 0, 0, 0, 1, 10, 0, 3],\n     \"a01021.html#a18b47b281350d10784fd4917be9019f1\": [0, 0, 0, 0, 1, 10, 0, 21],\n     \"a01021.html#a18b47b281350d10784fd4917be9019f1\": [1, 0, 0, 0, 1, 10, 0, 21],\n-    \"a01021.html#a1f59869b65e626aebb332538b92759ec\": [0, 0, 0, 0, 1, 10, 0, 2],\n     \"a01021.html#a1f59869b65e626aebb332538b92759ec\": [1, 0, 0, 0, 1, 10, 0, 2],\n+    \"a01021.html#a1f59869b65e626aebb332538b92759ec\": [0, 0, 0, 0, 1, 10, 0, 2],\n     \"a01021.html#a2a03b250662eec5d267daf6692e4b341\": [0, 0, 0, 0, 1, 10, 0, 14],\n     \"a01021.html#a2a03b250662eec5d267daf6692e4b341\": [1, 0, 0, 0, 1, 10, 0, 14],\n     \"a01021.html#a2d5bc9d7d16144b5cdc70381843defa9\": [0, 0, 0, 0, 1, 10, 0, 8],\n     \"a01021.html#a2d5bc9d7d16144b5cdc70381843defa9\": [1, 0, 0, 0, 1, 10, 0, 8],\n     \"a01021.html#a3f663e5c2b7e65976b6521c21ea59130\": [0, 0, 0, 0, 1, 10, 0, 12],\n     \"a01021.html#a3f663e5c2b7e65976b6521c21ea59130\": [1, 0, 0, 0, 1, 10, 0, 12],\n-    \"a01021.html#a425e9cd3218a02afffaf0289f1a9c6fd\": [0, 0, 0, 0, 1, 10, 0, 7],\n     \"a01021.html#a425e9cd3218a02afffaf0289f1a9c6fd\": [1, 0, 0, 0, 1, 10, 0, 7],\n+    \"a01021.html#a425e9cd3218a02afffaf0289f1a9c6fd\": [0, 0, 0, 0, 1, 10, 0, 7],\n     \"a01021.html#a497f7c6fe6944842dd54758e9ec5a8e2\": [0, 0, 0, 0, 1, 10, 0, 10],\n     \"a01021.html#a497f7c6fe6944842dd54758e9ec5a8e2\": [1, 0, 0, 0, 1, 10, 0, 10],\n     \"a01021.html#a4c1ba8119a16ea0682a870ee7a8282a5\": [0, 0, 0, 0, 1, 10, 0, 11],\n     \"a01021.html#a4c1ba8119a16ea0682a870ee7a8282a5\": [1, 0, 0, 0, 1, 10, 0, 11],\n     \"a01021.html#a5834971432c649e28d5a0186f79a60d5\": [1, 0, 0, 0, 1, 10, 0, 27],\n     \"a01021.html#a5834971432c649e28d5a0186f79a60d5\": [0, 0, 0, 0, 1, 10, 0, 27],\n     \"a01021.html#a5eba866952b7be15b065060b1f5a81da\": [1, 0, 0, 0, 1, 10, 0, 26],\n     \"a01021.html#a5eba866952b7be15b065060b1f5a81da\": [0, 0, 0, 0, 1, 10, 0, 26],\n-    \"a01021.html#a6a9e4615ca58b7206de550f249c5e37c\": [0, 0, 0, 0, 1, 10, 0, 4],\n     \"a01021.html#a6a9e4615ca58b7206de550f249c5e37c\": [1, 0, 0, 0, 1, 10, 0, 4],\n-    \"a01021.html#a728df1785179cd0768a4971b8c34708a\": [1, 0, 0, 0, 1, 10, 0, 17],\n+    \"a01021.html#a6a9e4615ca58b7206de550f249c5e37c\": [0, 0, 0, 0, 1, 10, 0, 4],\n     \"a01021.html#a728df1785179cd0768a4971b8c34708a\": [0, 0, 0, 0, 1, 10, 0, 17],\n-    \"a01021.html#a7551f187d9f4a70b27faed7597d96e4f\": [1, 0, 0, 0, 1, 10, 0, 20],\n+    \"a01021.html#a728df1785179cd0768a4971b8c34708a\": [1, 0, 0, 0, 1, 10, 0, 17],\n     \"a01021.html#a7551f187d9f4a70b27faed7597d96e4f\": [0, 0, 0, 0, 1, 10, 0, 20],\n-    \"a01021.html#a8d3c24dcc455474a3a9498c6b6378cc4\": [1, 0, 0, 0, 1, 10, 0, 13],\n+    \"a01021.html#a7551f187d9f4a70b27faed7597d96e4f\": [1, 0, 0, 0, 1, 10, 0, 20],\n     \"a01021.html#a8d3c24dcc455474a3a9498c6b6378cc4\": [0, 0, 0, 0, 1, 10, 0, 13],\n-    \"a01021.html#a91ce5fe0ce9b9ec6c5afcfb6e1ccaa40\": [1, 0, 0, 0, 1, 10, 0, 23],\n+    \"a01021.html#a8d3c24dcc455474a3a9498c6b6378cc4\": [1, 0, 0, 0, 1, 10, 0, 13],\n     \"a01021.html#a91ce5fe0ce9b9ec6c5afcfb6e1ccaa40\": [0, 0, 0, 0, 1, 10, 0, 23],\n+    \"a01021.html#a91ce5fe0ce9b9ec6c5afcfb6e1ccaa40\": [1, 0, 0, 0, 1, 10, 0, 23],\n     \"a01021.html#a97f60d840c3d2830f0c4680783a334e8\": [1, 0, 0, 0, 1, 10, 0, 15],\n     \"a01021.html#a97f60d840c3d2830f0c4680783a334e8\": [0, 0, 0, 0, 1, 10, 0, 15],\n     \"a01021.html#a99f237b06c2ba7a1de567dbd95ac9948\": [1, 0, 0, 0, 1, 10, 0, 9],\n     \"a01021.html#a99f237b06c2ba7a1de567dbd95ac9948\": [0, 0, 0, 0, 1, 10, 0, 9],\n     \"a01021.html#a9e322b8f2ad57dd369956f27113b7a8a\": [0, 0, 0, 0, 1, 10, 0, 19],\n     \"a01021.html#a9e322b8f2ad57dd369956f27113b7a8a\": [1, 0, 0, 0, 1, 10, 0, 19],\n-    \"a01021.html#aa43aafc4dbfd969eca82920f28cda140\": [0, 0, 0, 0, 1, 10, 0, 6],\n     \"a01021.html#aa43aafc4dbfd969eca82920f28cda140\": [1, 0, 0, 0, 1, 10, 0, 6],\n+    \"a01021.html#aa43aafc4dbfd969eca82920f28cda140\": [0, 0, 0, 0, 1, 10, 0, 6],\n     \"a01021.html#aa6530a2eb5204da33e7c02f8fcdcbac2\": [1, 0, 0, 0, 1, 10, 0, 5],\n     \"a01021.html#aa6530a2eb5204da33e7c02f8fcdcbac2\": [0, 0, 0, 0, 1, 10, 0, 5],\n     \"a01021.html#ad17511fd9b0cea1b15b6bc31c0fc3e80\": [1, 0, 0, 0, 1, 10, 0, 22],\n     \"a01021.html#ad17511fd9b0cea1b15b6bc31c0fc3e80\": [0, 0, 0, 0, 1, 10, 0, 22],\n-    \"a01021.html#ae0427ab3b81525a0dfa5d2b510a06461\": [1, 0, 0, 0, 1, 10, 0, 25],\n     \"a01021.html#ae0427ab3b81525a0dfa5d2b510a06461\": [0, 0, 0, 0, 1, 10, 0, 25],\n+    \"a01021.html#ae0427ab3b81525a0dfa5d2b510a06461\": [1, 0, 0, 0, 1, 10, 0, 25],\n     \"a01021.html#aebc767d646011ab7d5bc7d6d49adf535\": [1, 0, 0, 0, 1, 10, 0, 0],\n     \"a01021.html#aebc767d646011ab7d5bc7d6d49adf535\": [0, 0, 0, 0, 1, 10, 0, 0],\n     \"a01021.html#aebc767d646011ab7d5bc7d6d49adf535a0c0d3d9e480d64f20f1b32d599c88aa5\": [1, 0, 0, 0, 1, 10, 0, 0, 4],\n     \"a01021.html#aebc767d646011ab7d5bc7d6d49adf535a0c0d3d9e480d64f20f1b32d599c88aa5\": [0, 0, 0, 0, 1, 10, 0, 0, 4],\n     \"a01021.html#aebc767d646011ab7d5bc7d6d49adf535a2e89c8e5ac21dbd024ec902de51566b0\": [1, 0, 0, 0, 1, 10, 0, 0, 3],\n     \"a01021.html#aebc767d646011ab7d5bc7d6d49adf535a2e89c8e5ac21dbd024ec902de51566b0\": [0, 0, 0, 0, 1, 10, 0, 0, 3],\n-    \"a01021.html#aebc767d646011ab7d5bc7d6d49adf535a39a0bc0d1c407b2b849c2bfaba366b22\": [1, 0, 0, 0, 1, 10, 0, 0, 0],\n     \"a01021.html#aebc767d646011ab7d5bc7d6d49adf535a39a0bc0d1c407b2b849c2bfaba366b22\": [0, 0, 0, 0, 1, 10, 0, 0, 0],\n+    \"a01021.html#aebc767d646011ab7d5bc7d6d49adf535a39a0bc0d1c407b2b849c2bfaba366b22\": [1, 0, 0, 0, 1, 10, 0, 0, 0],\n     \"a01021.html#aebc767d646011ab7d5bc7d6d49adf535a90f0e9a2c992889cefdf1db954f9d98f\": [0, 0, 0, 0, 1, 10, 0, 0, 1],\n     \"a01021.html#aebc767d646011ab7d5bc7d6d49adf535a90f0e9a2c992889cefdf1db954f9d98f\": [1, 0, 0, 0, 1, 10, 0, 0, 1],\n-    \"a01021.html#aebc767d646011ab7d5bc7d6d49adf535ac3fc1d183b0bdfbc7bf1cce613c4ff04\": [1, 0, 0, 0, 1, 10, 0, 0, 2],\n     \"a01021.html#aebc767d646011ab7d5bc7d6d49adf535ac3fc1d183b0bdfbc7bf1cce613c4ff04\": [0, 0, 0, 0, 1, 10, 0, 0, 2],\n+    \"a01021.html#aebc767d646011ab7d5bc7d6d49adf535ac3fc1d183b0bdfbc7bf1cce613c4ff04\": [1, 0, 0, 0, 1, 10, 0, 0, 2],\n     \"a01021.html#afe7ba5a3a3e0f7b63f27fc527f472528\": [1, 0, 0, 0, 1, 10, 0, 1],\n     \"a01021.html#afe7ba5a3a3e0f7b63f27fc527f472528\": [0, 0, 0, 0, 1, 10, 0, 1],\n-    \"a01025.html\": [1, 0, 0, 0, 1, 10, 1],\n     \"a01025.html\": [0, 0, 0, 0, 1, 10, 1],\n+    \"a01025.html\": [1, 0, 0, 0, 1, 10, 1],\n     \"a01025.html#a03fbcf9e0aec39ba35fc19aefbb07e64\": [1, 0, 0, 0, 1, 10, 1, 10],\n     \"a01025.html#a03fbcf9e0aec39ba35fc19aefbb07e64\": [0, 0, 0, 0, 1, 10, 1, 10],\n     \"a01025.html#a0a3cc48a737c60aa048df1c3f41da070\": [1, 0, 0, 0, 1, 10, 1, 9],\n     \"a01025.html#a0a3cc48a737c60aa048df1c3f41da070\": [0, 0, 0, 0, 1, 10, 1, 9],\n-    \"a01025.html#a0e2fbbb4a1a96f3fbaee3c1273684e0e\": [1, 0, 0, 0, 1, 10, 1, 5],\n-    \"a01025.html#a0e2fbbb4a1a96f3fbaee3c1273684e0e\": [0, 0, 0, 0, 1, 10, 1, 5]\n+    \"a01025.html#a0e2fbbb4a1a96f3fbaee3c1273684e0e\": [0, 0, 0, 0, 1, 10, 1, 5],\n+    \"a01025.html#a0e2fbbb4a1a96f3fbaee3c1273684e0e\": [1, 0, 0, 0, 1, 10, 1, 5]\n };\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/navtreeindex4.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/navtreeindex4.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,152 +1,152 @@\n var NAVTREEINDEX4 = {\n     \"a01025.html#a19202138f911782b5652536867d24565\": [0, 0, 0, 0, 1, 10, 1, 1],\n     \"a01025.html#a19202138f911782b5652536867d24565\": [1, 0, 0, 0, 1, 10, 1, 1],\n     \"a01025.html#a29cbdb64d4e0e49551db4b7674a4c38a\": [0, 0, 0, 0, 1, 10, 1, 11],\n     \"a01025.html#a29cbdb64d4e0e49551db4b7674a4c38a\": [1, 0, 0, 0, 1, 10, 1, 11],\n     \"a01025.html#a395c4eda069d129a467d5266a4746673\": [0, 0, 0, 0, 1, 10, 1, 7],\n     \"a01025.html#a395c4eda069d129a467d5266a4746673\": [1, 0, 0, 0, 1, 10, 1, 7],\n-    \"a01025.html#a4130a836c1d7653793698df818db0624\": [0, 0, 0, 0, 1, 10, 1, 6],\n     \"a01025.html#a4130a836c1d7653793698df818db0624\": [1, 0, 0, 0, 1, 10, 1, 6],\n-    \"a01025.html#a85527f734ee41ab3855c42c0e1257f95\": [0, 0, 0, 0, 1, 10, 1, 8],\n+    \"a01025.html#a4130a836c1d7653793698df818db0624\": [0, 0, 0, 0, 1, 10, 1, 6],\n     \"a01025.html#a85527f734ee41ab3855c42c0e1257f95\": [1, 0, 0, 0, 1, 10, 1, 8],\n-    \"a01025.html#aba817ee7f5b93139589ed6cf97b557cf\": [1, 0, 0, 0, 1, 10, 1, 2],\n+    \"a01025.html#a85527f734ee41ab3855c42c0e1257f95\": [0, 0, 0, 0, 1, 10, 1, 8],\n     \"a01025.html#aba817ee7f5b93139589ed6cf97b557cf\": [0, 0, 0, 0, 1, 10, 1, 2],\n+    \"a01025.html#aba817ee7f5b93139589ed6cf97b557cf\": [1, 0, 0, 0, 1, 10, 1, 2],\n     \"a01025.html#ac8bb3912a3ce86b15842e79d0b421204\": [0, 0, 0, 0, 1, 10, 1, 3],\n     \"a01025.html#ac8bb3912a3ce86b15842e79d0b421204\": [1, 0, 0, 0, 1, 10, 1, 3],\n-    \"a01025.html#ace61bb1240f406368b44e72e58728428\": [0, 0, 0, 0, 1, 10, 1, 0],\n     \"a01025.html#ace61bb1240f406368b44e72e58728428\": [1, 0, 0, 0, 1, 10, 1, 0],\n+    \"a01025.html#ace61bb1240f406368b44e72e58728428\": [0, 0, 0, 0, 1, 10, 1, 0],\n     \"a01025.html#ae1df61bc00c50b927351c1e6b044f5a1\": [0, 0, 0, 0, 1, 10, 1, 4],\n     \"a01025.html#ae1df61bc00c50b927351c1e6b044f5a1\": [1, 0, 0, 0, 1, 10, 1, 4],\n     \"a01029.html\": [0, 0, 0, 0, 1, 12],\n     \"a01029.html\": [1, 0, 0, 0, 1, 12],\n     \"a01029.html#a0357839a7fabaa02f1d6d6a3c75e1ec2\": [0, 0, 0, 0, 1, 12, 7],\n     \"a01029.html#a0357839a7fabaa02f1d6d6a3c75e1ec2\": [1, 0, 0, 0, 1, 12, 7],\n-    \"a01029.html#a1fe1fbda93c01c326f13929d1c3c6247\": [1, 0, 0, 0, 1, 12, 0],\n     \"a01029.html#a1fe1fbda93c01c326f13929d1c3c6247\": [0, 0, 0, 0, 1, 12, 0],\n-    \"a01029.html#a2cf4c50a1117c44ba4d11db92b067401\": [0, 0, 0, 0, 1, 12, 8],\n+    \"a01029.html#a1fe1fbda93c01c326f13929d1c3c6247\": [1, 0, 0, 0, 1, 12, 0],\n     \"a01029.html#a2cf4c50a1117c44ba4d11db92b067401\": [1, 0, 0, 0, 1, 12, 8],\n-    \"a01029.html#a3f8bd2ef902e11aad1debbdda26bb596\": [1, 0, 0, 0, 1, 12, 4],\n+    \"a01029.html#a2cf4c50a1117c44ba4d11db92b067401\": [0, 0, 0, 0, 1, 12, 8],\n     \"a01029.html#a3f8bd2ef902e11aad1debbdda26bb596\": [0, 0, 0, 0, 1, 12, 4],\n-    \"a01029.html#a6f7fc8b9ce66fa57ac58ed977cc9c6f0\": [1, 0, 0, 0, 1, 12, 2],\n+    \"a01029.html#a3f8bd2ef902e11aad1debbdda26bb596\": [1, 0, 0, 0, 1, 12, 4],\n     \"a01029.html#a6f7fc8b9ce66fa57ac58ed977cc9c6f0\": [0, 0, 0, 0, 1, 12, 2],\n-    \"a01029.html#aa2fd72e336a12bf454dd79ba6ce8ee56\": [0, 0, 0, 0, 1, 12, 6],\n+    \"a01029.html#a6f7fc8b9ce66fa57ac58ed977cc9c6f0\": [1, 0, 0, 0, 1, 12, 2],\n     \"a01029.html#aa2fd72e336a12bf454dd79ba6ce8ee56\": [1, 0, 0, 0, 1, 12, 6],\n+    \"a01029.html#aa2fd72e336a12bf454dd79ba6ce8ee56\": [0, 0, 0, 0, 1, 12, 6],\n     \"a01029.html#ab97b75b7c0fffa06a5948bd6ba7b420d\": [0, 0, 0, 0, 1, 12, 3],\n     \"a01029.html#ab97b75b7c0fffa06a5948bd6ba7b420d\": [1, 0, 0, 0, 1, 12, 3],\n     \"a01029.html#ad8f74e1887299ed02e0094100f18c998\": [0, 0, 0, 0, 1, 12, 5],\n     \"a01029.html#ad8f74e1887299ed02e0094100f18c998\": [1, 0, 0, 0, 1, 12, 5],\n     \"a01029.html#ade7a1750cdc922e27c561520815d8b27\": [0, 0, 0, 0, 1, 12, 1],\n     \"a01029.html#ade7a1750cdc922e27c561520815d8b27\": [1, 0, 0, 0, 1, 12, 1],\n-    \"a01029.html#afdee0e9e9c6edd34c96892efff808a87\": [0, 0, 0, 0, 1, 12, 9],\n     \"a01029.html#afdee0e9e9c6edd34c96892efff808a87\": [1, 0, 0, 0, 1, 12, 9],\n+    \"a01029.html#afdee0e9e9c6edd34c96892efff808a87\": [0, 0, 0, 0, 1, 12, 9],\n     \"a01037.html\": [0, 0, 0, 0, 1, 11],\n     \"a01037.html\": [1, 0, 0, 0, 1, 11],\n     \"a01037.html#a643d81a2ae20ba1897433f5af5a3697a\": [1, 0, 0, 0, 1, 11, 0],\n     \"a01037.html#a643d81a2ae20ba1897433f5af5a3697a\": [0, 0, 0, 0, 1, 11, 0],\n     \"a01041.html\": [0, 0, 0, 0, 1, 13],\n     \"a01041.html\": [1, 0, 0, 0, 1, 13],\n-    \"a01041.html#a5fbaaa1a52a6d7622b1d306bf0a16624\": [1, 0, 0, 0, 1, 13, 3],\n     \"a01041.html#a5fbaaa1a52a6d7622b1d306bf0a16624\": [0, 0, 0, 0, 1, 13, 3],\n-    \"a01041.html#a7b5dd5f4c76d684d924adf477eeea0a3\": [1, 0, 0, 0, 1, 13, 0],\n+    \"a01041.html#a5fbaaa1a52a6d7622b1d306bf0a16624\": [1, 0, 0, 0, 1, 13, 3],\n     \"a01041.html#a7b5dd5f4c76d684d924adf477eeea0a3\": [0, 0, 0, 0, 1, 13, 0],\n-    \"a01041.html#a8a146d5966d7372bdd2557e990e52adc\": [1, 0, 0, 0, 1, 13, 2],\n+    \"a01041.html#a7b5dd5f4c76d684d924adf477eeea0a3\": [1, 0, 0, 0, 1, 13, 0],\n     \"a01041.html#a8a146d5966d7372bdd2557e990e52adc\": [0, 0, 0, 0, 1, 13, 2],\n+    \"a01041.html#a8a146d5966d7372bdd2557e990e52adc\": [1, 0, 0, 0, 1, 13, 2],\n     \"a01041.html#a9920fb01c4b75c94a953a98008a4baba\": [0, 0, 0, 0, 1, 13, 4],\n     \"a01041.html#a9920fb01c4b75c94a953a98008a4baba\": [1, 0, 0, 0, 1, 13, 4],\n     \"a01041.html#af22a241c3be4bc69a948371d108e7cfa\": [1, 0, 0, 0, 1, 13, 1],\n     \"a01041.html#af22a241c3be4bc69a948371d108e7cfa\": [0, 0, 0, 0, 1, 13, 1],\n     \"a01045.html\": [1, 0, 0, 0, 1, 18],\n     \"a01045.html\": [0, 0, 0, 0, 1, 18],\n     \"a01045.html#a46c8a310cf4c094f8c80e1cb8dc1f911\": [1, 0, 0, 0, 1, 18, 1],\n     \"a01045.html#a46c8a310cf4c094f8c80e1cb8dc1f911\": [0, 0, 0, 0, 1, 18, 1],\n     \"a01045.html#a46c8a310cf4c094f8c80e1cb8dc1f911a4178369e390d2596ce60676642fec077\": [1, 0, 0, 0, 1, 18, 1, 2],\n     \"a01045.html#a46c8a310cf4c094f8c80e1cb8dc1f911a4178369e390d2596ce60676642fec077\": [0, 0, 0, 0, 1, 18, 1, 2],\n     \"a01045.html#a46c8a310cf4c094f8c80e1cb8dc1f911ab18c20abfc04611ab0aec5e1c81bb2ab\": [1, 0, 0, 0, 1, 18, 1, 1],\n     \"a01045.html#a46c8a310cf4c094f8c80e1cb8dc1f911ab18c20abfc04611ab0aec5e1c81bb2ab\": [0, 0, 0, 0, 1, 18, 1, 1],\n-    \"a01045.html#a46c8a310cf4c094f8c80e1cb8dc1f911ab491ed84aea170a330914a3f88b16d50\": [1, 0, 0, 0, 1, 18, 1, 0],\n     \"a01045.html#a46c8a310cf4c094f8c80e1cb8dc1f911ab491ed84aea170a330914a3f88b16d50\": [0, 0, 0, 0, 1, 18, 1, 0],\n-    \"a01049.html\": [1, 0, 0, 0, 1, 4],\n+    \"a01045.html#a46c8a310cf4c094f8c80e1cb8dc1f911ab491ed84aea170a330914a3f88b16d50\": [1, 0, 0, 0, 1, 18, 1, 0],\n     \"a01049.html\": [0, 0, 0, 0, 1, 4],\n-    \"a01049.html#a46c8a310cf4c094f8c80e1cb8dc1f911\": [0, 0, 0, 0, 1, 4, 3],\n+    \"a01049.html\": [1, 0, 0, 0, 1, 4],\n     \"a01049.html#a46c8a310cf4c094f8c80e1cb8dc1f911\": [1, 0, 0, 0, 1, 4, 3],\n+    \"a01049.html#a46c8a310cf4c094f8c80e1cb8dc1f911\": [0, 0, 0, 0, 1, 4, 3],\n     \"a01049.html#a46c8a310cf4c094f8c80e1cb8dc1f911a4178369e390d2596ce60676642fec077\": [0, 0, 0, 0, 1, 4, 3, 2],\n     \"a01049.html#a46c8a310cf4c094f8c80e1cb8dc1f911a4178369e390d2596ce60676642fec077\": [1, 0, 0, 0, 1, 4, 3, 2],\n     \"a01049.html#a46c8a310cf4c094f8c80e1cb8dc1f911ab18c20abfc04611ab0aec5e1c81bb2ab\": [0, 0, 0, 0, 1, 4, 3, 1],\n     \"a01049.html#a46c8a310cf4c094f8c80e1cb8dc1f911ab18c20abfc04611ab0aec5e1c81bb2ab\": [1, 0, 0, 0, 1, 4, 3, 1],\n     \"a01049.html#a46c8a310cf4c094f8c80e1cb8dc1f911ab491ed84aea170a330914a3f88b16d50\": [0, 0, 0, 0, 1, 4, 3, 0],\n     \"a01049.html#a46c8a310cf4c094f8c80e1cb8dc1f911ab491ed84aea170a330914a3f88b16d50\": [1, 0, 0, 0, 1, 4, 3, 0],\n-    \"a01049.html#a940880e2d35dea72f52db5bcdc9c94b7\": [0, 0, 0, 0, 1, 4, 2],\n     \"a01049.html#a940880e2d35dea72f52db5bcdc9c94b7\": [1, 0, 0, 0, 1, 4, 2],\n-    \"a01053.html\": [0, 0, 0, 0, 1, 15],\n+    \"a01049.html#a940880e2d35dea72f52db5bcdc9c94b7\": [0, 0, 0, 0, 1, 4, 2],\n     \"a01053.html\": [1, 0, 0, 0, 1, 15],\n-    \"a01053.html#a19f9c49c05d967ad8e51bc2a696caf4b\": [0, 0, 0, 0, 1, 15, 8],\n+    \"a01053.html\": [0, 0, 0, 0, 1, 15],\n     \"a01053.html#a19f9c49c05d967ad8e51bc2a696caf4b\": [1, 0, 0, 0, 1, 15, 8],\n-    \"a01053.html#a1bacc5a5c4ae6f44d4f06c1dd0adf8f4\": [1, 0, 0, 0, 1, 15, 0],\n+    \"a01053.html#a19f9c49c05d967ad8e51bc2a696caf4b\": [0, 0, 0, 0, 1, 15, 8],\n     \"a01053.html#a1bacc5a5c4ae6f44d4f06c1dd0adf8f4\": [0, 0, 0, 0, 1, 15, 0],\n-    \"a01053.html#a52397f1270007c943b8539338a796608\": [0, 0, 0, 0, 1, 15, 11],\n+    \"a01053.html#a1bacc5a5c4ae6f44d4f06c1dd0adf8f4\": [1, 0, 0, 0, 1, 15, 0],\n     \"a01053.html#a52397f1270007c943b8539338a796608\": [1, 0, 0, 0, 1, 15, 11],\n-    \"a01053.html#a52ca26745627f4704181d58dc919ae57\": [0, 0, 0, 0, 1, 15, 1],\n+    \"a01053.html#a52397f1270007c943b8539338a796608\": [0, 0, 0, 0, 1, 15, 11],\n     \"a01053.html#a52ca26745627f4704181d58dc919ae57\": [1, 0, 0, 0, 1, 15, 1],\n+    \"a01053.html#a52ca26745627f4704181d58dc919ae57\": [0, 0, 0, 0, 1, 15, 1],\n     \"a01053.html#a659a293dd51073a1b9560bb80f687705\": [1, 0, 0, 0, 1, 15, 7],\n     \"a01053.html#a659a293dd51073a1b9560bb80f687705\": [0, 0, 0, 0, 1, 15, 7],\n-    \"a01053.html#a698f69e8409658c6afaf5ea1ff0f15b8\": [0, 0, 0, 0, 1, 15, 2],\n     \"a01053.html#a698f69e8409658c6afaf5ea1ff0f15b8\": [1, 0, 0, 0, 1, 15, 2],\n+    \"a01053.html#a698f69e8409658c6afaf5ea1ff0f15b8\": [0, 0, 0, 0, 1, 15, 2],\n     \"a01053.html#a8b387cbfb5a56ee18bf92d10f3cdad6d\": [1, 0, 0, 0, 1, 15, 10],\n     \"a01053.html#a8b387cbfb5a56ee18bf92d10f3cdad6d\": [0, 0, 0, 0, 1, 15, 10],\n-    \"a01053.html#a8d6f065bafcef50d1f904979c794d1ce\": [1, 0, 0, 0, 1, 15, 5],\n     \"a01053.html#a8d6f065bafcef50d1f904979c794d1ce\": [0, 0, 0, 0, 1, 15, 5],\n-    \"a01053.html#aa4907b035ab197f57102411e48b2cfc0\": [1, 0, 0, 0, 1, 15, 3],\n+    \"a01053.html#a8d6f065bafcef50d1f904979c794d1ce\": [1, 0, 0, 0, 1, 15, 5],\n     \"a01053.html#aa4907b035ab197f57102411e48b2cfc0\": [0, 0, 0, 0, 1, 15, 3],\n+    \"a01053.html#aa4907b035ab197f57102411e48b2cfc0\": [1, 0, 0, 0, 1, 15, 3],\n     \"a01053.html#aab5755075fff28578bfd3387c504d303\": [0, 0, 0, 0, 1, 15, 12],\n     \"a01053.html#aab5755075fff28578bfd3387c504d303\": [1, 0, 0, 0, 1, 15, 12],\n-    \"a01053.html#ab823038f11d7c069fc63a2b992055535\": [1, 0, 0, 0, 1, 15, 4],\n     \"a01053.html#ab823038f11d7c069fc63a2b992055535\": [0, 0, 0, 0, 1, 15, 4],\n+    \"a01053.html#ab823038f11d7c069fc63a2b992055535\": [1, 0, 0, 0, 1, 15, 4],\n     \"a01053.html#aecc2be688aecf08f7a98e49db8fed2f8\": [1, 0, 0, 0, 1, 15, 6],\n     \"a01053.html#aecc2be688aecf08f7a98e49db8fed2f8\": [0, 0, 0, 0, 1, 15, 6],\n     \"a01053.html#af58f6a3f9b167c3330097c1a69ca36a8\": [1, 0, 0, 0, 1, 15, 9],\n     \"a01053.html#af58f6a3f9b167c3330097c1a69ca36a8\": [0, 0, 0, 0, 1, 15, 9],\n-    \"a01057.html\": [0, 0, 0, 0, 1, 14],\n     \"a01057.html\": [1, 0, 0, 0, 1, 14],\n+    \"a01057.html\": [0, 0, 0, 0, 1, 14],\n     \"a01057.html#a540bd990ac7c5770b6f1a5eb5b58d874\": [1, 0, 0, 0, 1, 14, 2],\n     \"a01057.html#a540bd990ac7c5770b6f1a5eb5b58d874\": [0, 0, 0, 0, 1, 14, 2],\n     \"a01057.html#a685b0ef36235914f7c10ff8f1169ade8\": [1, 0, 0, 0, 1, 14, 3],\n     \"a01057.html#a685b0ef36235914f7c10ff8f1169ade8\": [0, 0, 0, 0, 1, 14, 3],\n     \"a01057.html#a71b0ccb1e01e77608b938cb11039a34a\": [1, 0, 0, 0, 1, 14, 0],\n     \"a01057.html#a71b0ccb1e01e77608b938cb11039a34a\": [0, 0, 0, 0, 1, 14, 0],\n     \"a01057.html#af3b2d4f28b2b1edbb491db39b0658c2a\": [1, 0, 0, 0, 1, 14, 1],\n     \"a01057.html#af3b2d4f28b2b1edbb491db39b0658c2a\": [0, 0, 0, 0, 1, 14, 1],\n     \"a01061.html\": [0, 0, 0, 0, 1, 19],\n     \"a01061.html\": [1, 0, 0, 0, 1, 19],\n     \"a01061.html#a02e67ceab8cb5af7982ef2a31a07a2ce\": [1, 0, 0, 0, 1, 19, 8],\n     \"a01061.html#a02e67ceab8cb5af7982ef2a31a07a2ce\": [0, 0, 0, 0, 1, 19, 8],\n     \"a01061.html#a11ad3846bf577760d1c829835f62b8d3\": [0, 0, 0, 0, 1, 19, 29],\n     \"a01061.html#a11ad3846bf577760d1c829835f62b8d3\": [1, 0, 0, 0, 1, 19, 29],\n-    \"a01061.html#a15cb55501155c442dba5f0e14bf03124\": [1, 0, 0, 0, 1, 19, 24],\n     \"a01061.html#a15cb55501155c442dba5f0e14bf03124\": [0, 0, 0, 0, 1, 19, 24],\n+    \"a01061.html#a15cb55501155c442dba5f0e14bf03124\": [1, 0, 0, 0, 1, 19, 24],\n     \"a01061.html#a1bcd132b8e6d40cb6ed1543f28ff998c\": [0, 0, 0, 0, 1, 19, 19],\n     \"a01061.html#a1bcd132b8e6d40cb6ed1543f28ff998c\": [1, 0, 0, 0, 1, 19, 19],\n-    \"a01061.html#a232ddf5a15e24e91b2ec55f83a1436b5\": [1, 0, 0, 0, 1, 19, 22],\n     \"a01061.html#a232ddf5a15e24e91b2ec55f83a1436b5\": [0, 0, 0, 0, 1, 19, 22],\n+    \"a01061.html#a232ddf5a15e24e91b2ec55f83a1436b5\": [1, 0, 0, 0, 1, 19, 22],\n     \"a01061.html#a2c225eadcb49bfb4af44bfb883516809\": [0, 0, 0, 0, 1, 19, 7],\n     \"a01061.html#a2c225eadcb49bfb4af44bfb883516809\": [1, 0, 0, 0, 1, 19, 7],\n-    \"a01061.html#a32d626626eee0bc4ade146973f6abb1c\": [0, 0, 0, 0, 1, 19, 5],\n     \"a01061.html#a32d626626eee0bc4ade146973f6abb1c\": [1, 0, 0, 0, 1, 19, 5],\n-    \"a01061.html#a35786984f5caa4684165da2c96fba9b3\": [1, 0, 0, 0, 1, 19, 14],\n+    \"a01061.html#a32d626626eee0bc4ade146973f6abb1c\": [0, 0, 0, 0, 1, 19, 5],\n     \"a01061.html#a35786984f5caa4684165da2c96fba9b3\": [0, 0, 0, 0, 1, 19, 14],\n-    \"a01061.html#a385a2eb32312f28d79a02461a59c0630\": [0, 0, 0, 0, 1, 19, 27],\n+    \"a01061.html#a35786984f5caa4684165da2c96fba9b3\": [1, 0, 0, 0, 1, 19, 14],\n     \"a01061.html#a385a2eb32312f28d79a02461a59c0630\": [1, 0, 0, 0, 1, 19, 27],\n-    \"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\": [1, 0, 0, 0, 1, 19, 18],\n+    \"a01061.html#a385a2eb32312f28d79a02461a59c0630\": [0, 0, 0, 0, 1, 19, 27],\n     \"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\": [0, 0, 0, 0, 1, 19, 18],\n-    \"a01061.html#a50345bcc33c588cf49520a79396e105d\": [1, 0, 0, 0, 1, 19, 11],\n+    \"a01061.html#a3cd3b8de1630c159f3c66dfc950210cf\": [1, 0, 0, 0, 1, 19, 18],\n     \"a01061.html#a50345bcc33c588cf49520a79396e105d\": [0, 0, 0, 0, 1, 19, 11],\n-    \"a01061.html#a65836d2070b943c8fecbad926d074de2\": [1, 0, 0, 0, 1, 19, 9],\n+    \"a01061.html#a50345bcc33c588cf49520a79396e105d\": [1, 0, 0, 0, 1, 19, 11],\n     \"a01061.html#a65836d2070b943c8fecbad926d074de2\": [0, 0, 0, 0, 1, 19, 9],\n-    \"a01061.html#a680f5b6b2b873a149a997c4b5fca2be8\": [0, 0, 0, 0, 1, 19, 1],\n+    \"a01061.html#a65836d2070b943c8fecbad926d074de2\": [1, 0, 0, 0, 1, 19, 9],\n     \"a01061.html#a680f5b6b2b873a149a997c4b5fca2be8\": [1, 0, 0, 0, 1, 19, 1],\n+    \"a01061.html#a680f5b6b2b873a149a997c4b5fca2be8\": [0, 0, 0, 0, 1, 19, 1],\n     \"a01061.html#a82005658c7c2b4aea6222587d06ce4ef\": [0, 0, 0, 0, 1, 19, 10],\n     \"a01061.html#a82005658c7c2b4aea6222587d06ce4ef\": [1, 0, 0, 0, 1, 19, 10],\n     \"a01061.html#a84969a9edeae22167a83fde274f002af\": [1, 0, 0, 0, 1, 19, 12],\n     \"a01061.html#a84969a9edeae22167a83fde274f002af\": [0, 0, 0, 0, 1, 19, 12],\n     \"a01061.html#a84fb9ead4f0f7458491b5d310592cea9\": [0, 0, 0, 0, 1, 19, 17],\n     \"a01061.html#a84fb9ead4f0f7458491b5d310592cea9\": [1, 0, 0, 0, 1, 19, 17],\n     \"a01061.html#a8ac84e48ecd3aec3db72f62a4c8206f8\": [0, 0, 0, 0, 1, 19, 6],\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/search/all_1.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/search/all_1.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -27,15 +27,15 @@\n     ['applystencil_5', ['ApplyStencil', ['../a00933.html#a4b5e80eb39b7497712eed0009309cd3c', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface']]],\n     ['applystencilfrommesh_6', ['ApplyStencilFromMesh', ['../a00933.html#a7fa4a5c3bfea7fc2ebda886f9b12eb95', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface']]],\n     ['arefaceweightsforfacecenters_7', ['AreFaceWeightsForFaceCenters', ['../a01345.html#a3519e5e05631026fad94c7616f5e0e67', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::LocalMask']]],\n     ['array_8', ['array', ['../a01357.html', 1, 'Array&lt; TYPE &gt;'],\n         ['../a01357.html#adbe98cd78a59ce56cb45c2239136cc10', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Vtr::Array::Array(value_type *ptr, size_type sizeArg)'],\n         ['../a01357.html#af9474cac29f3177edf5e8d72ea4a440c', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Vtr::Array::Array()']\n     ]],\n-    ['array_2eh_9', ['array.h', ['../a00683.html', 1, '']]],\n+    ['array_2eh_9', ['array.h', ['../a00797.html', 1, '']]],\n     ['arrayindex_10', ['arrayIndex', ['../a00997.html#a4430ecde7e1d784b2bef6dc4c2ff04c2', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::PatchHandle']]],\n     ['assignboundarypropertiesfromedgemask_11', ['assignBoundaryPropertiesFromEdgeMask', ['../a01025.html#ace61bb1240f406368b44e72e58728428', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::PatchFaceTag']]],\n     ['assignboundarypropertiesfromvertexmask_12', ['assignBoundaryPropertiesFromVertexMask', ['../a01025.html#a19202138f911782b5652536867d24565', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::PatchFaceTag']]],\n     ['assigncomponenttags_13', ['assignComponentTags', ['../a01117.html#a3df7295af055588a7b4f20d4da021ad1', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory']]],\n     ['assigncomponenttopology_14', ['assignComponentTopology', ['../a01117.html#a098784adfa428c620663baf9c2d8e41a', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory']]],\n     ['assigncornerlimitmask_15', ['assigncornerlimitmask', ['../a01341.html#ab38c56ce6121aed94f2796bf5df894be', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::assignCornerLimitMask(VERTEX const &amp;, MASK &amp;posMask) const'],\n         ['../a01341.html#ab38c56ce6121aed94f2796bf5df894be', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::assignCornerLimitMask(VERTEX const &amp;, MASK &amp;posMask) const'],\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/search/all_10.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/search/all_10.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -2,23 +2,23 @@\n     ['reference_0', ['reference', ['../a01353.html#a9025ff89fc9afe7d9054abb58123bbda', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray::reference'],\n         ['../a01357.html#a9025ff89fc9afe7d9054abb58123bbda', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Vtr::Array::reference']\n     ]],\n     ['refine_1', ['refine', ['../a01269.html#a9a90398ba2073fe3da454f6b00deb33c', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshInterface::Refine()'],\n         ['../a01281.html#a32c8d641fe9ea1565be646a10c5d6c85', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::Mesh::Refine()']\n     ]],\n     ['refineadaptive_2', ['RefineAdaptive', ['../a01121.html#aff92309935db19988908471bee4fef4d', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner']]],\n-    ['refinement_2eh_3', ['refinement.h', ['../a00674.html', 1, '']]],\n+    ['refinement_2eh_3', ['refinement.h', ['../a00803.html', 1, '']]],\n     ['refinementlevel_4', ['refinementLevel', ['../a01125.html#a240d1e5f5b743486e8122db6223d4562', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::UniformOptions']]],\n     ['refinemesh_5', ['refinemesh', ['../a01269.html#a51f237c3f08f6ddc2ea7ba5cb0d00b36', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshInterface::refineMesh(Far::TopologyRefiner &amp;refiner, int level, bool adaptive, bool singleCreasePatch)'],\n         ['../a01269.html#a173851f742adc30ac139af96fe63732d', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshInterface::refineMesh(Far::TopologyRefiner &amp;refiner, int level, MeshBitset bits)']\n     ]],\n     ['refinersurfacefactory_6', ['refinersurfacefactory', ['../a00929.html#af74dafe122d798d4069b675c52f6665a', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Bfr::RefinerSurfaceFactory::RefinerSurfaceFactory()'],\n         ['../a00929.html', 1, 'RefinerSurfaceFactory&lt; CACHE_TYPE &gt;']\n     ]],\n-    ['refinersurfacefactory_2eh_7', ['refinerSurfaceFactory.h', ['../a00716.html', 1, '']]],\n+    ['refinersurfacefactory_2eh_7', ['refinerSurfaceFactory.h', ['../a00884.html', 1, '']]],\n     ['refinersurfacefactorybase_8', ['refinersurfacefactorybase', ['../a00925.html', 1, 'RefinerSurfaceFactoryBase'],\n         ['../a00925.html#af457c931d6d611e35737454f2c483f84', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Bfr::RefinerSurfaceFactoryBase::RefinerSurfaceFactoryBase()']\n     ]],\n     ['refineuniform_9', ['RefineUniform', ['../a01121.html#ad22b7ffd9f8f3b488e5f220cf00c8c82', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner']]],\n     ['regdesc_10', ['regDesc', ['../a01325.html#a00efd3a5502664756617ee930cb4324c', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchArray']]],\n     ['regular_11', ['REGULAR', ['../a00973.html#a1d1cfd8ffb84e947f82999c682b666a7afc488491175a6dac9e5881e363ad4c41', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor']]],\n     ['reportinvalidtopology_12', ['reportInvalidTopology', ['../a01117.html#a0c4c1d44df4c480bd0adfa9e86891b39', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory']]],\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/search/all_11.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/search/all_11.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -2,15 +2,15 @@\n     ['s_0', ['s', ['../a01321.html#a874f74a4dc1c9a0cd9c6e0d79c298f55', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchCoord::s'],\n         ['../a01093.html#a22a5e18d1aeafd28cdd38b543c50c688', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableFactoryReal::LocationArray::s']\n     ]],\n     ['scheme_1', ['scheme', ['../a01341.html#add94f921c43fa14d886adfbcdcc00211', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::Scheme()'],\n         ['../a01341.html', 1, 'Scheme&lt; SCHEME_TYPE &gt;'],\n         ['../a01341.html#a5c142c4d9c6f3be66bd018713591ffcb', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::Scheme()']\n     ]],\n-    ['scheme_2eh_2', ['scheme.h', ['../a00743.html', 1, '']]],\n+    ['scheme_2eh_2', ['scheme.h', ['../a00863.html', 1, '']]],\n     ['scheme_5fbilinear_3', ['SCHEME_BILINEAR', ['../a00913.html#aa3daa2f428c6be2b1cb394f3a525833da02558f420bac2d6bd3f8411d4b3957a0', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Sdc']]],\n     ['scheme_5fcatmark_4', ['SCHEME_CATMARK', ['../a00913.html#aa3daa2f428c6be2b1cb394f3a525833da29c9704ef8a61670dfc242b6e6b82a9f', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Sdc']]],\n     ['scheme_5floop_5', ['SCHEME_LOOP', ['../a00913.html#aa3daa2f428c6be2b1cb394f3a525833da529a2651a5dcfac532e933ffefc36e99', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Sdc']]],\n     ['schemeoptions_6', ['schemeOptions', ['../a01137.html#a9ec2ab2b4bd49c6cf367dac80c8cbb94', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::Options']]],\n     ['schemetype_7', ['schemetype', ['../a01137.html#ab4a105466e7c764e3aabaa6c44c1eeb6', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory::Options::schemeType'],\n         ['../a00913.html#aa3daa2f428c6be2b1cb394f3a525833d', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Sdc::SchemeType']\n     ]],\n@@ -77,21 +77,21 @@\n     ['shrinktofit_62', ['shrinkToFit', ['../a01061.html#a84fb9ead4f0f7458491b5d310592cea9', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal']]],\n     ['size_63', ['size', ['../a00937.html#a439227feff9d7f55384e8780cfc2eb82', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::PointDescriptor::size'],\n         ['../a01353.html#a60304b65bf89363bcc3165d3cde67f86', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray::size() const']\n     ]],\n     ['size_5ftype_64', ['size_type', ['../a01353.html#aafd1e3ba4133ad908bdbc99c4b356e5f', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray::size_type'],\n         ['../a01357.html#aafd1e3ba4133ad908bdbc99c4b356e5f', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Vtr::Array::size_type']\n     ]],\n-    ['sparseselector_2eh_65', ['sparseSelector.h', ['../a00677.html', 1, '']]],\n+    ['sparseselector_2eh_65', ['sparseSelector.h', ['../a00809.html', 1, '']]],\n     ['split_66', ['Split', ['../a00913.html#a61ef2f8f765ba17f8036bcc0f0fa887b', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Sdc']]],\n     ['split_5fhybrid_67', ['SPLIT_HYBRID', ['../a00913.html#a61ef2f8f765ba17f8036bcc0f0fa887ba6ebca125aa2292ebbdfd6539d3656d28', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Sdc']]],\n     ['split_5fto_5fquads_68', ['SPLIT_TO_QUADS', ['../a00913.html#a61ef2f8f765ba17f8036bcc0f0fa887ba56eed514f6a5971f198c9e421054b513', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Sdc']]],\n     ['split_5fto_5ftris_69', ['SPLIT_TO_TRIS', ['../a00913.html#a61ef2f8f765ba17f8036bcc0f0fa887ba31959b36c678fcb560f478ecb7c051f5', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Sdc']]],\n     ['srcdesc_70', ['srcDesc', ['../a01277.html#a5d0b0430c7584408dbcd788f52b80fd4', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::EvaluatorCacheT::Entry']]],\n-    ['stackbuffer_2eh_71', ['stackBuffer.h', ['../a00692.html', 1, '']]],\n+    ['stackbuffer_2eh_71', ['stackBuffer.h', ['../a00800.html', 1, '']]],\n     ['stencil_72', ['stencil', ['../a01057.html', 1, 'Stencil'],\n         ['../a01057.html#af3b2d4f28b2b1edbb491db39b0658c2a', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::Stencil::Stencil()'],\n         ['../a01057.html#a540bd990ac7c5770b6f1a5eb5b58d874', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::Stencil::Stencil(BaseStencil const &amp;other)'],\n         ['../a01057.html#a685b0ef36235914f7c10ff8f1169ade8', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::Stencil::Stencil(int *size, Index *indices, float *weights)']\n     ]],\n     ['stencilreal_73', ['stencilreal', ['../a01053.html', 1, 'StencilReal&lt; REAL &gt;'],\n         ['../a01053.html#a698f69e8409658c6afaf5ea1ff0f15b8', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilReal::StencilReal(StencilReal const &amp;other)'],\n@@ -101,17 +101,17 @@\n     ['stencilreal_3c_20float_20_3e_74', ['StencilReal&lt; float &gt;', ['../a01053.html', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far']]],\n     ['stenciltable_75', ['stenciltable', ['../a01065.html#a3d12830eb0d421206de500d7abc9decf', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTable::StencilTable(int numControlVerts, std::vector&lt; int &gt; const &amp;offsets, std::vector&lt; int &gt; const &amp;sizes, std::vector&lt; int &gt; const &amp;sources, std::vector&lt; float &gt; const &amp;weights, bool includeCoarseVerts, size_t firstOffset)'],\n         ['../a01065.html#a54db76b34112b5cb3c623be8789dd8f4', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTable::StencilTable(int numControlVerts)'],\n         ['../a01065.html#acc553d2d5624ab2a790ae9613812393e', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTable::StencilTable()'],\n         ['../a01281.html#a6b90e8290c540c78bedd053e2cc42f31', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::Mesh::StencilTable'],\n         ['../a01065.html', 1, 'StencilTable']\n     ]],\n-    ['stenciltable_2eh_76', ['stencilTable.h', ['../a00758.html', 1, '']]],\n+    ['stenciltable_2eh_76', ['stencilTable.h', ['../a00818.html', 1, '']]],\n     ['stenciltablefactory_77', ['StencilTableFactory', ['../a01097.html', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far']]],\n-    ['stenciltablefactory_2eh_78', ['stencilTableFactory.h', ['../a00752.html', 1, '']]],\n+    ['stenciltablefactory_2eh_78', ['stencilTableFactory.h', ['../a00824.html', 1, '']]],\n     ['stenciltablefactoryreal_79', ['StencilTableFactoryReal', ['../a01045.html', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far']]],\n     ['stenciltablefactoryreal_3c_20float_20_3e_80', ['StencilTableFactoryReal&lt; float &gt;', ['../a01045.html', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far']]],\n     ['stenciltablefactoryreal_3c_20real_20_3e_81', ['stenciltablefactoryreal&lt; real &gt;', ['../a01053.html#af58f6a3f9b167c3330097c1a69ca36a8', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilReal::StencilTableFactoryReal&lt; REAL &gt;'],\n         ['../a01061.html#af58f6a3f9b167c3330097c1a69ca36a8', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::StencilTableFactoryReal&lt; REAL &gt;'],\n         ['../a01069.html#af58f6a3f9b167c3330097c1a69ca36a8', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilReal::StencilTableFactoryReal&lt; REAL &gt;']\n     ]],\n     ['stenciltablereal_82', ['stenciltablereal', ['../a01061.html', 1, 'StencilTableReal&lt; REAL &gt;'],\n@@ -128,31 +128,31 @@\n     ['subdivideedgesharpnessesaroundvertex_86', ['SubdivideEdgeSharpnessesAroundVertex', ['../a01333.html#a7c27382a0be83617c49b8587ba75b438', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease']]],\n     ['subdivideuniformsharpness_87', ['SubdivideUniformSharpness', ['../a01333.html#a7e5126bd5cff203bcea84ef35845fb40', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease']]],\n     ['subdividevertexsharpness_88', ['SubdivideVertexSharpness', ['../a01333.html#a03f4bc921d6ee6fad4440ac134e92e36', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease']]],\n     ['surface_89', ['surface', ['../a00933.html#a6e1a6ad293d9318f65c2e28c468c66ba', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::Surface()'],\n         ['../a00933.html', 1, 'Surface&lt; REAL &gt;'],\n         ['../a00933.html#aa9500016cdd5cf88992541cc263a75c9', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::Surface()']\n     ]],\n-    ['surface_2eh_90', ['surface.h', ['../a00704.html', 1, '']]],\n+    ['surface_2eh_90', ['surface.h', ['../a00887.html', 1, '']]],\n     ['surfacefactory_91', ['surfacefactory', ['../a00941.html#ae54ee5a9e2bcb2bfdf395084395a0719', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::SurfaceFactory(Sdc::SchemeType schemeType, Sdc::Options const &amp;schemeOptions, Options const &amp;limitOptions)'],\n         ['../a00941.html#a5ac6bb6255796f79debe11e25b816093', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::SurfaceFactory(SurfaceFactory const &amp;)=delete'],\n         ['../a00933.html#a3bdc23048cdd1242d0a429413fa89256', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::SurfaceFactory'],\n         ['../a00941.html', 1, 'SurfaceFactory']\n     ]],\n-    ['surfacefactory_2eh_92', ['surfaceFactory.h', ['../a00713.html', 1, '']]],\n+    ['surfacefactory_2eh_92', ['surfaceFactory.h', ['../a00881.html', 1, '']]],\n     ['surfacefactorycache_93', ['surfacefactorycache', ['../a00949.html#a3f63565868cb0b0871e2db37939ec0e2', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryCache::SurfaceFactoryCache()'],\n         ['../a00949.html#a704742f6a7a07e766b5320c8d6f2f745', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryCache::SurfaceFactoryCache(SurfaceFactoryCache const &amp;)=delete'],\n         ['../a00949.html', 1, 'SurfaceFactoryCache']\n     ]],\n-    ['surfacefactorycache_2eh_94', ['surfaceFactoryCache.h', ['../a00710.html', 1, '']]],\n+    ['surfacefactorycache_2eh_94', ['surfaceFactoryCache.h', ['../a00896.html', 1, '']]],\n     ['surfacefactorycachethreaded_95', ['surfacefactorycachethreaded', ['../a00953.html#a9e84b6f045809c700d7dc53c3a350afe', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryCacheThreaded::SurfaceFactoryCacheThreaded()'],\n         ['../a00953.html', 1, 'SurfaceFactoryCacheThreaded&lt; MUTEX_TYPE, READ_LOCK_GUARD_TYPE, WRITE_LOCK_GUARD_TYPE &gt;']\n     ]],\n     ['surfacefactorymeshadapter_96', ['SurfaceFactoryMeshAdapter', ['../a00957.html', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Bfr']]],\n-    ['surfacefactorymeshadapter_2eh_97', ['surfaceFactoryMeshAdapter.h', ['../a00707.html', 1, '']]],\n+    ['surfacefactorymeshadapter_2eh_97', ['surfaceFactoryMeshAdapter.h', ['../a00893.html', 1, '']]],\n     ['synchronize_98', ['synchronize', ['../a01149.html#a0529a707250f9931f945ec49d4e428d2', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::Synchronize(cl_command_queue queue)'],\n         ['../a01149.html#a7e77f811e9d48160701e705bb4300388', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::Synchronize(DEVICE_CONTEXT deviceContext)'],\n         ['../a01165.html#ae339a533e5f7a5021c5a4b40ec09c208', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuEvaluator::Synchronize()'],\n         ['../a01317.html#a9689407af718de4263562bb3a760c1dd', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvaluator::Synchronize()'],\n         ['../a01313.html#a9689407af718de4263562bb3a760c1dd', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::OmpEvaluator::Synchronize()'],\n         ['../a01293.html#a7e02041f843415c1056ea2ca3f7d0b62', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::Synchronize()'],\n         ['../a01281.html#ab945364bf8cadb3d1f8285551d9d49f0', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::Mesh::Synchronize()'],\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/search/all_12.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/search/all_12.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -6,43 +6,43 @@\n         ['../a00912.html#a20e08be34d6183b6943ed7a1586eca4a', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvalPatches(float const *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, float *dstDu, BufferDescriptor const &amp;dstDuDesc, float *dstDv, BufferDescriptor const &amp;dstDvDesc, int numPatchCoords, const PatchCoord *patchCoords, const PatchArray *patchArrayBuffer, const int *patchIndexBuffer, const PatchParam *patchParamBuffer)']\n     ]],\n     ['tbbevalstencils_2', ['tbbevalstencils', ['../a00912.html#aa65ed860a2fa5935d99129a898a8f0b6', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvalStencils(float const *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, float *dstDu, BufferDescriptor const &amp;dstDuDesc, float *dstDv, BufferDescriptor const &amp;dstDvDesc, float *dstDuu, BufferDescriptor const &amp;dstDuuDesc, float *dstDuv, BufferDescriptor const &amp;dstDuvDesc, float *dstDvv, BufferDescriptor const &amp;dstDvvDesc, int const *sizes, int const *offsets, int const *indices, float const *weights, float const *duWeights, float const *dvWeights, float const *duuWeights, float const *duvWeights, float const *dvvWeights, int start, int end)'],\n         ['../a00912.html#af23c35537952bfdd493441e5c42ff2ed', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvalStencils(float const *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, float *dstDu, BufferDescriptor const &amp;dstDuDesc, float *dstDv, BufferDescriptor const &amp;dstDvDesc, int const *sizes, int const *offsets, int const *indices, float const *weights, float const *duWeights, float const *dvWeights, int start, int end)'],\n         ['../a00912.html#a4a6a0fcc01638f2a0316b32ad158b485', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::TbbEvalStencils(float const *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, int const *sizes, int const *offsets, int const *indices, float const *weights, int start, int end)']\n     ]],\n     ['tbbevaluator_3', ['TbbEvaluator', ['../a01317.html', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd']]],\n-    ['tbbevaluator_2eh_4', ['tbbEvaluator.h', ['../a00857.html', 1, '']]],\n-    ['tbbkernel_2eh_5', ['tbbKernel.h', ['../a00890.html', 1, '']]],\n+    ['tbbevaluator_2eh_4', ['tbbEvaluator.h', ['../a00731.html', 1, '']]],\n+    ['tbbkernel_2eh_5', ['tbbKernel.h', ['../a00758.html', 1, '']]],\n     ['tessellation_6', ['tessellation', ['../a00961.html', 1, 'Tessellation'],\n         ['../a00961.html#ab03191ef31cf0d8b0bcc44f226804e87', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::Tessellation(Tessellation const &amp;)=delete'],\n         ['../a00961.html#a7a3e89992f3cc492804ec9bc184a1674', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::Tessellation()=delete'],\n         ['../a00961.html#a65ee652b3607c97bb2b04a64c55d7f99', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::Tessellation(Parameterization const &amp;p, int numRates, int const rates[], Options const &amp;options=Options())'],\n         ['../a00961.html#a7f0af117d53701f7ca6e3eb2368b89bb', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::Tessellation(Parameterization const &amp;p, int uniformRate, Options const &amp;options=Options())']\n     ]],\n-    ['tessellation_2eh_7', ['tessellation.h', ['../a00722.html', 1, '']]],\n+    ['tessellation_2eh_7', ['tessellation.h', ['../a00902.html', 1, '']]],\n     ['topologycallback_8', ['TopologyCallback', ['../a01133.html#a896a964625491e084b3d776acd10f053', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactoryBase']]],\n     ['topologydescriptor_9', ['topologydescriptor', ['../a01105.html', 1, 'TopologyDescriptor'],\n         ['../a01105.html#a8209f1b69b0162ee2e7065d91088113d', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyDescriptor::TopologyDescriptor()']\n     ]],\n-    ['topologydescriptor_2eh_10', ['topologyDescriptor.h', ['../a00785.html', 1, '']]],\n+    ['topologydescriptor_2eh_10', ['topologyDescriptor.h', ['../a00845.html', 1, '']]],\n     ['topologyerror_11', ['TopologyError', ['../a01117.html#a5458be6ce3f2e63c8d8555f4ab3b2b62', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefinerFactory']]],\n     ['topologylevel_12', ['topologylevel', ['../a01113.html', 1, 'TopologyLevel'],\n         ['../a01113.html#a03a8183081b34983ade155e3636ba835', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::TopologyLevel()']\n     ]],\n-    ['topologylevel_2eh_13', ['topologyLevel.h', ['../a00782.html', 1, '']]],\n+    ['topologylevel_2eh_13', ['topologyLevel.h', ['../a00821.html', 1, '']]],\n     ['topologyrefiner_14', ['topologyrefiner', ['../a01121.html', 1, 'TopologyRefiner'],\n         ['../a01113.html#a094d2e51437ecd5ecc6a0cf2c4ce1e78', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel::TopologyRefiner'],\n         ['../a01121.html#a91353962838bff64448014136e0e11ff', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::TopologyRefiner(Sdc::SchemeType type, Sdc::Options options=Sdc::Options())'],\n         ['../a01121.html#a13c709a24feeed80409924510e3efc5e', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::TopologyRefiner(TopologyRefiner const &amp;source)']\n     ]],\n-    ['topologyrefiner_2eh_15', ['topologyRefiner.h', ['../a00764.html', 1, '']]],\n+    ['topologyrefiner_2eh_15', ['topologyRefiner.h', ['../a00833.html', 1, '']]],\n     ['topologyrefinerfactory_16', ['topologyrefinerfactory', ['../a01121.html#a7efec9ae15b61001dcf6a0de284914b7', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::TopologyRefinerFactory'],\n         ['../a01117.html', 1, 'TopologyRefinerFactory&lt; MESH &gt;']\n     ]],\n-    ['topologyrefinerfactory_2eh_17', ['topologyRefinerFactory.h', ['../a00767.html', 1, '']]],\n+    ['topologyrefinerfactory_2eh_17', ['topologyRefinerFactory.h', ['../a00827.html', 1, '']]],\n     ['topologyrefinerfactorybase_18', ['topologyrefinerfactorybase', ['../a01121.html#a7b09fef2ae2989a546c50a65add2091f', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::TopologyRefinerFactoryBase'],\n         ['../a01133.html', 1, 'TopologyRefinerFactoryBase']\n     ]],\n     ['transformfacetcoordindices_19', ['transformfacetcoordindices', ['../a00961.html#a666de589b64bea493b1d23446a1ddb49', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::TransformFacetCoordIndices(int facetTuples[], int const boundaryIndices[], int interiorOffset)'],\n         ['../a00961.html#a2651a3405daf40d1ffbd47c57233d3c3', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::TransformFacetCoordIndices(int facetTuples[], int const boundaryIndices[], int const interiorIndices[])'],\n         ['../a00961.html#a621ab2f30043ff7f4ecdad9e64a73173', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::TransformFacetCoordIndices(int facetTuples[], int commonOffset)']\n     ]],\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/search/all_14.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/search/all_14.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -9,15 +9,15 @@\n     ['vertexbufferbinding_5', ['vertexbufferbinding', ['../a01209.html#a2d85a5ed6ddcef5023c9ef2e6fdd38a5', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11PatchTable::VertexBufferBinding'],\n         ['../a01237.html#a02af2ea2e9328a776b5b0bb3edf88864', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::VertexBufferBinding'],\n         ['../a01269.html#a9cf40ecf1b9b5c29507fe92a03f37a3c', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshInterface::VertexBufferBinding'],\n         ['../a01281.html#a9cf40ecf1b9b5c29507fe92a03f37a3c', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::Mesh::VertexBufferBinding'],\n         ['../a01305.html#aa00654dc321a5c8dc370a900b0f404da', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::VertexBufferBinding']\n     ]],\n     ['vertexdescriptor_6', ['VertexDescriptor', ['../a00969.html', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Bfr']]],\n-    ['vertexdescriptor_2eh_7', ['vertexDescriptor.h', ['../a00725.html', 1, '']]],\n+    ['vertexdescriptor_2eh_7', ['vertexDescriptor.h', ['../a00878.html', 1, '']]],\n     ['vertexvalencetable_8', ['VertexValenceTable', ['../a00993.html#a2fbf111cac9d122eeaec5c0cb73fa77d', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable']]],\n     ['vertexweight_9', ['vertexweight', ['../a01345.html#aec5c2abfdfbde4dd934c061625994791', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::LocalMask::VertexWeight(int index) const'],\n         ['../a01345.html#a92e98987f9a4220b9edd041401c9ed76', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::LocalMask::VertexWeight(int index)']\n     ]],\n     ['vertindex_10', ['vertIndex', ['../a00997.html#a46d1a8129375c3ee40a33a81d44b685a', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::PatchHandle']]],\n     ['vertindicesperface_11', ['vertIndicesPerFace', ['../a01105.html#a3f2274c4d3dd54c4e24144e504972b34', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyDescriptor']]],\n     ['vtx_5fboundary_5fedge_5fand_5fcorner_12', ['VTX_BOUNDARY_EDGE_AND_CORNER', ['../a01337.html#acbf78f1a6abfc8db080ef7fb3c3f417eac6e5f52f358d3b6d62cc2b708a5a8757', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options']]],\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/search/all_2.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/search/all_2.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -4,15 +4,15 @@\n     ]],\n     ['basetable_1', ['basetable', ['../a01065.html#a54f0bb223290a17a59f51f4cbcfbc2e2', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTable::BaseTable'],\n         ['../a01081.html#a13d2ee8ca9cdc9073905193ea1cefd95', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTable::BaseTable']\n     ]],\n     ['begin_2', ['begin', ['../a01353.html#a29305669b60ca1680752e2fc3592ba99', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Vtr::ConstArray::begin()'],\n         ['../a01357.html#ad69bd11391be1a1dba5c8202259664f8', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Vtr::Array::begin()']\n     ]],\n-    ['bilinearscheme_2eh_3', ['bilinearScheme.h', ['../a00740.html', 1, '']]],\n+    ['bilinearscheme_2eh_3', ['bilinearScheme.h', ['../a00875.html', 1, '']]],\n     ['bindclbuffer_4', ['BindCLBuffer', ['../a01157.html#ad9c25d5b96f9d5e971f677d32b406ec6', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLVertexBuffer']]],\n     ['bindcpubuffer_5', ['bindcpubuffer', ['../a01161.html#adf7a9df5d3fc4d803bf5f1f374d90274', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuD3D11VertexBuffer::BindCpuBuffer()'],\n         ['../a01169.html#adf7a9df5d3fc4d803bf5f1f374d90274', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuGLVertexBuffer::BindCpuBuffer()'],\n         ['../a01177.html#adf7a9df5d3fc4d803bf5f1f374d90274', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuVertexBuffer::BindCpuBuffer()'],\n         ['../a01309.html#adf7a9df5d3fc4d803bf5f1f374d90274', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::CPUMTLVertexBuffer::BindCpuBuffer()']\n     ]],\n     ['bindcudabuffer_6', ['BindCudaBuffer', ['../a01193.html#a59eb144c23606529ba730ae15598af09', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaVertexBuffer']]],\n@@ -35,9 +35,9 @@\n     ]],\n     ['boundcontrolpoints_13', ['BoundControlPoints', ['../a00933.html#a22604a4489ed5fdedb0ef272de0fa637', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface']]],\n     ['boundcontrolpointsfrommesh_14', ['BoundControlPointsFromMesh', ['../a00933.html#a8df5cf06cea51aeb6419fd698651ae3b', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface']]],\n     ['bufferdescriptor_15', ['bufferdescriptor', ['../a01141.html', 1, 'BufferDescriptor'],\n         ['../a01141.html#a958068066d1d10ae2a452ac57d9c0401', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::BufferDescriptor::BufferDescriptor(int o, int l, int s)'],\n         ['../a01141.html#a446218762f5de8c77d06ee61e14b6b61', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::BufferDescriptor::BufferDescriptor()']\n     ]],\n-    ['bufferdescriptor_2eh_16', ['bufferDescriptor.h', ['../a00866.html', 1, '']]]\n+    ['bufferdescriptor_2eh_16', ['bufferDescriptor.h', ['../a00764.html', 1, '']]]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/search/all_3.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/search/all_3.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,44 +1,44 @@\n var searchData = [\n-    ['catmarkscheme_2eh_0', ['catmarkScheme.h', ['../a00737.html', 1, '']]],\n+    ['catmarkscheme_2eh_0', ['catmarkScheme.h', ['../a00866.html', 1, '']]],\n     ['child_1', ['Child', ['../a00985.html', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchMap::QuadNode']]],\n     ['clear_2', ['clear', ['../a01025.html#ac8bb3912a3ce86b15842e79d0b421204', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::PatchFaceTag::clear()'],\n         ['../a01077.html#aa71d36872f416feaa853788a7a7a7ef8', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableReal::Clear()'],\n         ['../a01061.html#aa71d36872f416feaa853788a7a7a7ef8', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableReal::Clear()'],\n         ['../a00989.html#aa71d36872f416feaa853788a7a7a7ef8', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchParam::Clear()'],\n         ['../a00933.html#aa71d36872f416feaa853788a7a7a7ef8', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::Clear()']\n     ]],\n     ['clearedgesharpness_3', ['ClearEdgeSharpness', ['../a00969.html#a831025d6d817c4afb1df7d5a705af378', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Bfr::VertexDescriptor']]],\n     ['clearincidentfacesizes_4', ['ClearIncidentFaceSizes', ['../a00969.html#a5c719e43580059139938a6ed0f851853', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Bfr::VertexDescriptor']]],\n     ['clearvertexsharpness_5', ['ClearVertexSharpness', ['../a00969.html#a68afc60df5a617f5d7e1580548b72f9b', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Bfr::VertexDescriptor']]],\n     ['clevaluator_6', ['clevaluator', ['../a01149.html', 1, 'CLEvaluator'],\n         ['../a01149.html#adbb0aafb7db3284f164499e8007c4cac', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::CLEvaluator()']\n     ]],\n-    ['clevaluator_2eh_7', ['clEvaluator.h', ['../a00830.html', 1, '']]],\n+    ['clevaluator_2eh_7', ['clEvaluator.h', ['../a00749.html', 1, '']]],\n     ['clpatchtable_8', ['clpatchtable', ['../a01153.html', 1, 'CLPatchTable'],\n         ['../a01153.html#ae69549a9493f9a51edfa7d11cec1d72f', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLPatchTable::CLPatchTable()']\n     ]],\n-    ['clpatchtable_2eh_9', ['clPatchTable.h', ['../a00833.html', 1, '']]],\n+    ['clpatchtable_2eh_9', ['clPatchTable.h', ['../a00785.html', 1, '']]],\n     ['clstenciltable_10', ['clstenciltable', ['../a01145.html#af2994e79cf93c872e39659321750351a', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLStencilTable::CLStencilTable()'],\n         ['../a01145.html', 1, 'CLStencilTable'],\n         ['../a01145.html#a33ca6bb1dba9f8e390a58395d164431e', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLStencilTable::CLStencilTable()']\n     ]],\n     ['clvertexbuffer_11', ['clvertexbuffer', ['../a01157.html#a48e2b665b557d5f3f838bc552152160b', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLVertexBuffer::CLVertexBuffer()'],\n         ['../a01157.html', 1, 'CLVertexBuffer']\n     ]],\n-    ['clvertexbuffer_2eh_12', ['clVertexBuffer.h', ['../a00881.html', 1, '']]],\n+    ['clvertexbuffer_2eh_12', ['clVertexBuffer.h', ['../a00725.html', 1, '']]],\n     ['combinevertexvertexmasks_13', ['CombineVertexVertexMasks', ['../a01345.html#a5ed800e9d702f57ae978fe60ba2a37dc', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::LocalMask']]],\n     ['commandqueue_14', ['commandQueue', ['../a01285.html#a66809eb79c7e79a491fd8c889465166b', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLContext']]],\n     ['compile_15', ['compile', ['../a01149.html#ade1086349c1a452f60bcf281383ceec2', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::CLEvaluator::Compile()'],\n         ['../a01201.html#a872e69a9fbf6f7b9f55112ecaf0c1b20', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11ComputeEvaluator::Compile()'],\n         ['../a01221.html#ade1086349c1a452f60bcf281383ceec2', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::Compile()'],\n         ['../a01293.html#af6645aabc094e7549c6899915ce34f67', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::Compile()'],\n         ['../a01253.html#ade1086349c1a452f60bcf281383ceec2', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::Compile()']\n     ]],\n-    ['componentinterfaces_2eh_16', ['componentInterfaces.h', ['../a00698.html', 1, '']]],\n+    ['componentinterfaces_2eh_16', ['componentInterfaces.h', ['../a00812.html', 1, '']]],\n     ['computeedgevertexmask_17', ['computeedgevertexmask', ['../a01341.html#a5b5a5377a01eb4ba446e174eff9e45ac', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::ComputeEdgeVertexMask(EDGE const &amp;edgeNeighborhood, MASK &amp;edgeVertexMask, Crease::Rule parentRule=Crease::RULE_UNKNOWN, Crease::Rule childRule=Crease::RULE_UNKNOWN) const'],\n         ['../a01341.html#af9dea56e1ab2f200dd03b4e35cf754c3', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme::ComputeEdgeVertexMask(EDGE const &amp;edge, MASK &amp;mask, Crease::Rule, Crease::Rule) const']\n     ]],\n     ['computefacevertexmask_18', ['ComputeFaceVertexMask', ['../a01341.html#ae8ed24b1691e65436d44e703189caf42', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Scheme']]],\n     ['computefractionalweightatvertex_19', ['ComputeFractionalWeightAtVertex', ['../a01333.html#ab13f654f25ef7628396fd902291b8f96', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease']]],\n     ['computelocalpointvalues_20', ['ComputeLocalPointValues', ['../a00993.html#a7dcb88c32ded6c233f129d7b6fb7a159', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable']]],\n     ['computelocalpointvaluesfacevarying_21', ['ComputeLocalPointValuesFaceVarying', ['../a00993.html#a059c9506f9ef8ebf24a68fc298be58be', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable']]],\n@@ -77,37 +77,37 @@\n     ['converttocompatiblestenciltable_3c_20far_3a_3astenciltable_2c_20far_3a_3astenciltable_2c_20id3d11devicecontext_20_3e_41', ['convertToCompatibleStencilTable&lt; Far::StencilTable, Far::StencilTable, ID3D11DeviceContext &gt;', ['../a00912.html#ab5753a2b0a0995c8e2259d2c4765f7df', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd']]],\n     ['converttocompatiblestenciltable_3c_20far_3a_3astenciltable_2c_20far_3a_3astenciltable_2c_20void_20_3e_42', ['convertToCompatibleStencilTable&lt; Far::StencilTable, Far::StencilTable, void &gt;', ['../a00912.html#a33f9830228f847fae1c30c9dffe02b5a', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd']]],\n     ['cornervertexindices_43', ['cornerVertexIndices', ['../a01105.html#a3bf794743edda29fbee0653b65b75ba4', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyDescriptor']]],\n     ['cornerweights_44', ['cornerWeights', ['../a01105.html#a6d938f6b0a9ff0fa377ef675aa2c7fda', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyDescriptor']]],\n     ['cpud3d11vertexbuffer_45', ['cpud3d11vertexbuffer', ['../a01161.html', 1, 'CpuD3D11VertexBuffer'],\n         ['../a01161.html#a632143bc1ec4fbbca2148b0e9e87bc08', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuD3D11VertexBuffer::CpuD3D11VertexBuffer()']\n     ]],\n-    ['cpud3d11vertexbuffer_2eh_46', ['cpuD3D11VertexBuffer.h', ['../a00896.html', 1, '']]],\n+    ['cpud3d11vertexbuffer_2eh_46', ['cpuD3D11VertexBuffer.h', ['../a00773.html', 1, '']]],\n     ['cpuevaluator_47', ['CpuEvaluator', ['../a01165.html', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd']]],\n-    ['cpuevaluator_2eh_48', ['cpuEvaluator.h', ['../a00803.html', 1, '']]],\n+    ['cpuevaluator_2eh_48', ['cpuEvaluator.h', ['../a00782.html', 1, '']]],\n     ['cpuglvertexbuffer_49', ['cpuglvertexbuffer', ['../a01169.html', 1, 'CpuGLVertexBuffer'],\n         ['../a01169.html#a32dd2317d622c1b079e3219f97c86955', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuGLVertexBuffer::CpuGLVertexBuffer()']\n     ]],\n-    ['cpuglvertexbuffer_2eh_50', ['cpuGLVertexBuffer.h', ['../a00821.html', 1, '']]],\n+    ['cpuglvertexbuffer_2eh_50', ['cpuGLVertexBuffer.h', ['../a00680.html', 1, '']]],\n     ['cpumtlvertexbuffer_51', ['cpumtlvertexbuffer', ['../a01309.html', 1, 'CPUMTLVertexBuffer'],\n         ['../a01309.html#a1457f342bc3007386104aa3d29277a67', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::CPUMTLVertexBuffer::CPUMTLVertexBuffer()']\n     ]],\n     ['cpupatchtable_52', ['cpupatchtable', ['../a01173.html', 1, 'CpuPatchTable'],\n         ['../a01173.html#a3c19d1748852f36ba69a6557e5069e08', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuPatchTable::CpuPatchTable()']\n     ]],\n-    ['cpupatchtable_2eh_53', ['cpuPatchTable.h', ['../a00818.html', 1, '']]],\n+    ['cpupatchtable_2eh_53', ['cpuPatchTable.h', ['../a00791.html', 1, '']]],\n     ['cpuvertexbuffer_54', ['cpuvertexbuffer', ['../a01177.html#afa9168f4f1f046aea4ff94933ac48972', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::CpuVertexBuffer::CpuVertexBuffer()'],\n         ['../a01177.html', 1, 'CpuVertexBuffer']\n     ]],\n-    ['cpuvertexbuffer_2eh_55', ['cpuVertexBuffer.h', ['../a00899.html', 1, '']]],\n+    ['cpuvertexbuffer_2eh_55', ['cpuVertexBuffer.h', ['../a00743.html', 1, '']]],\n     ['crease_56', ['crease', ['../a01333.html#a9659c3f2c73b80d9dc22763a6054079b', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::Crease()'],\n         ['../a01333.html#a75d5d7e54170ccf6481932916e0fa9c1', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::Crease(Options const &amp;options)'],\n         ['../a01333.html', 1, 'Crease']\n     ]],\n-    ['crease_2eh_57', ['crease.h', ['../a00731.html', 1, '']]],\n+    ['crease_2eh_57', ['crease.h', ['../a00869.html', 1, '']]],\n     ['crease_5fchaikin_58', ['CREASE_CHAIKIN', ['../a01337.html#a16ec522dc0398bf1435a912cd669ffb0a1e31a583663dd65a7b2feffeb24268b5', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options']]],\n     ['crease_5funiform_59', ['CREASE_UNIFORM', ['../a01337.html#a16ec522dc0398bf1435a912cd669ffb0a10f2956db48d2975424be2e52ebd544d', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options']]],\n     ['creasevertexindexpairs_60', ['creaseVertexIndexPairs', ['../a01105.html#a411a2a927b0270c9e4753dc219763ba5', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyDescriptor']]],\n     ['creaseweights_61', ['creaseWeights', ['../a01105.html#a8cd977015d3ffffc1146c5a4e17d65e0', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyDescriptor']]],\n     ['creasingmethod_62', ['CreasingMethod', ['../a01337.html#a16ec522dc0398bf1435a912cd669ffb0', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options']]],\n     ['create_63', ['create', ['../a01249.html#ae38a4728f9debae7733ab48cfadd8312', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableTBO::Create(Far::LimitStencilTable const *limitStencilTable, void *deviceContext=NULL)'],\n         ['../a01249.html#a24a8210b637a5b0fca2b258de3b8b8a6', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableTBO::Create(Far::StencilTable const *stencilTable, void *deviceContext=NULL)'],\n@@ -174,21 +174,21 @@\n     ]],\n     ['createfacevaryingsurface_65', ['createfacevaryingsurface', ['../a00941.html#a67a5dcab87b052d231634dd9fcf5dee2', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::CreateFaceVaryingSurface(Index faceIndex) const'],\n         ['../a00941.html#a59227e292ea63aa9641a090521cfd457', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::CreateFaceVaryingSurface(Index faceIndex, FVarID id) const']\n     ]],\n     ['createvaryingsurface_66', ['CreateVaryingSurface', ['../a00941.html#a81638f2ff6818fd96aa7cd1ad3ed0703', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory']]],\n     ['createvertexsurface_67', ['CreateVertexSurface', ['../a00941.html#a676cf019574c99fa77341ac09889192d', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory']]],\n     ['cudaevaluator_68', ['CudaEvaluator', ['../a01185.html', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd']]],\n-    ['cudaevaluator_2eh_69', ['cudaEvaluator.h', ['../a00839.html', 1, '']]],\n+    ['cudaevaluator_2eh_69', ['cudaEvaluator.h', ['../a00692.html', 1, '']]],\n     ['cudapatchtable_70', ['cudapatchtable', ['../a01189.html', 1, 'CudaPatchTable'],\n         ['../a01189.html#aefa9c1a9175327a40e7cf46ed32ced2f', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaPatchTable::CudaPatchTable()']\n     ]],\n-    ['cudapatchtable_2eh_71', ['cudaPatchTable.h', ['../a00836.html', 1, '']]],\n+    ['cudapatchtable_2eh_71', ['cudaPatchTable.h', ['../a00677.html', 1, '']]],\n     ['cudastenciltable_72', ['cudastenciltable', ['../a01181.html#a45150c630c07bbeabd4b91145cecf087', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaStencilTable::CudaStencilTable()'],\n         ['../a01181.html', 1, 'CudaStencilTable'],\n         ['../a01181.html#af872fc469b3696a745d30d22c2b89c4c', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaStencilTable::CudaStencilTable()']\n     ]],\n     ['cudavertexbuffer_73', ['cudavertexbuffer', ['../a01193.html#af6cb32d896f7815cac1969c857845ba8', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::CudaVertexBuffer::CudaVertexBuffer()'],\n         ['../a01193.html', 1, 'CudaVertexBuffer']\n     ]],\n-    ['cudavertexbuffer_2eh_74', ['cudaVertexBuffer.h', ['../a00875.html', 1, '']]]\n+    ['cudavertexbuffer_2eh_74', ['cudaVertexBuffer.h', ['../a00674.html', 1, '']]]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/search/all_4.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/search/all_4.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,29 +1,29 @@\n var searchData = [\n     ['d3d11computeevaluator_0', ['d3d11computeevaluator', ['../a01201.html', 1, 'D3D11ComputeEvaluator'],\n         ['../a01201.html#aa81511d3938d70d67a62217951cb8eb7', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11ComputeEvaluator::D3D11ComputeEvaluator()']\n     ]],\n-    ['d3d11computeevaluator_2eh_1', ['d3d11ComputeEvaluator.h', ['../a00800.html', 1, '']]],\n+    ['d3d11computeevaluator_2eh_1', ['d3d11ComputeEvaluator.h', ['../a00686.html', 1, '']]],\n     ['d3d11legacygregorypatchtable_2', ['d3d11legacygregorypatchtable', ['../a01205.html', 1, 'D3D11LegacyGregoryPatchTable'],\n         ['../a01205.html#af138b4535e4db5f013225c5924e0b243', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11LegacyGregoryPatchTable::D3D11LegacyGregoryPatchTable()']\n     ]],\n-    ['d3d11legacygregorypatchtable_2eh_3', ['d3d11LegacyGregoryPatchTable.h', ['../a00863.html', 1, '']]],\n-    ['d3d11mesh_2eh_4', ['d3d11Mesh.h', ['../a00860.html', 1, '']]],\n+    ['d3d11legacygregorypatchtable_2eh_3', ['d3d11LegacyGregoryPatchTable.h', ['../a00695.html', 1, '']]],\n+    ['d3d11mesh_2eh_4', ['d3d11Mesh.h', ['../a00737.html', 1, '']]],\n     ['d3d11meshinterface_5', ['D3D11MeshInterface', ['../a00912.html#ae5c8e80d05d6eaee105d8eecfa9ab609', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd']]],\n     ['d3d11patchtable_6', ['d3d11patchtable', ['../a01209.html#ac81ed5f09e3d3a2aae5a01802b343a6d', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11PatchTable::D3D11PatchTable()'],\n         ['../a01209.html', 1, 'D3D11PatchTable']\n     ]],\n-    ['d3d11patchtable_2eh_7', ['d3d11PatchTable.h', ['../a00815.html', 1, '']]],\n+    ['d3d11patchtable_2eh_7', ['d3d11PatchTable.h', ['../a00710.html', 1, '']]],\n     ['d3d11stenciltable_8', ['d3d11stenciltable', ['../a01197.html', 1, 'D3D11StencilTable'],\n         ['../a01197.html#a7e3a2f5c281c55308400138222797dbc', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11StencilTable::D3D11StencilTable()']\n     ]],\n     ['d3d11vertexbuffer_9', ['d3d11vertexbuffer', ['../a01213.html', 1, 'D3D11VertexBuffer'],\n         ['../a01213.html#aacfe93ef7f7ede21dcf7088b62467742', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11VertexBuffer::D3D11VertexBuffer()']\n     ]],\n-    ['d3d11vertexbuffer_2eh_10', ['d3d11VertexBuffer.h', ['../a00902.html', 1, '']]],\n+    ['d3d11vertexbuffer_2eh_10', ['d3d11VertexBuffer.h', ['../a00788.html', 1, '']]],\n     ['decrementsharpness_11', ['decrementSharpness', ['../a01333.html#a453a232c0edcafd9d484197d46ed39ec', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease']]],\n     ['desc_12', ['desc', ['../a01325.html#ac84ff682fda703f1f552a05977050f20', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchArray']]],\n     ['determinevertexvertexrule_13', ['determinevertexvertexrule', ['../a01333.html#a41ebb75d28c5973328e0e3883495aeba', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::DetermineVertexVertexRule(float vertexSharpness, int incidentEdgeCount, float const *incidentEdgeSharpness) const'],\n         ['../a01333.html#a500fadaa8cec78ab9690ad7331dba3d6', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Crease::DetermineVertexVertexRule(float vertexSharpness, int sharpEdgeCount) const']\n     ]],\n     ['device_14', ['device', ['../a01285.html#a7d70f5acf4efd89092645b4c44e480cf', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLContext']]],\n     ['devicecontext_15', ['DeviceContext', ['../a01281.html#a3e2f358c45731eceb819ae70e7c8ca6e', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::Mesh']]],\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/search/all_5.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/search/all_5.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -16,15 +16,15 @@\n         ['../a01021.html#aebc767d646011ab7d5bc7d6d49adf535', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options::EndCapType']\n     ]],\n     ['entry_10', ['entry', ['../a01277.html#ada6adfb697358377d8da9232690daae2', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::EvaluatorCacheT::Entry::Entry(BufferDescriptor const &amp;srcDescArg, BufferDescriptor const &amp;dstDescArg, BufferDescriptor const &amp;duDescArg, BufferDescriptor const &amp;dvDescArg, EVALUATOR *evalArg)'],\n         ['../a01277.html#a0d596cc177157da972daa1a9911027a8', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::EvaluatorCacheT::Entry::Entry(BufferDescriptor const &amp;srcDescArg, BufferDescriptor const &amp;dstDescArg, BufferDescriptor const &amp;duDescArg, BufferDescriptor const &amp;dvDescArg, BufferDescriptor const &amp;duuDescArg, BufferDescriptor const &amp;duvDescArg, BufferDescriptor const &amp;dvvDescArg, EVALUATOR *evalArg)'],\n         ['../a01277.html', 1, 'EvaluatorCacheT&lt; EVALUATOR &gt;::Entry']\n     ]],\n     ['error_11', ['Error', ['../a00908.html#a25d51c3a61fb3dacded6e48d01fd2fdb', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far']]],\n-    ['error_2eh_12', ['error.h', ['../a00749.html', 1, '']]],\n+    ['error_2eh_12', ['error.h', ['../a00839.html', 1, '']]],\n     ['errorcallbackfunc_13', ['ErrorCallbackFunc', ['../a00908.html#aa1630f297a91dfc683dfcfddeeebb2ac', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far']]],\n     ['errortype_14', ['ErrorType', ['../a00908.html#ab0df38968e4f03a3f1f6d6df0f31f45a', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far']]],\n     ['evalpatches_15', ['evalpatches', ['../a01253.html#a57b0367816baf9831808847cbfe833b0', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalPatches()'],\n         ['../a01313.html#a9644130ae2673ec46111cf6b466b3e90', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::OmpEvaluator::EvalPatches()'],\n         ['../a01253.html#a9a52edc932f03ffa9bbf67c093a1dd65', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, DST_BUFFER *duuBuffer, BufferDescriptor const &amp;duuDesc, DST_BUFFER *duvBuffer, BufferDescriptor const &amp;duvDesc, DST_BUFFER *dvvBuffer, BufferDescriptor const &amp;dvvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable, GLXFBEvaluator const *instance, void *deviceContext=NULL)'],\n         ['../a01253.html#a96616cfe920c027568e2ae931b3ba506', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable) const'],\n         ['../a01253.html#aa28dc7f2bd31f1cdac0013ad9de8f434', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::EvalPatches(SRC_BUFFER *srcBuffer, BufferDescriptor const &amp;srcDesc, DST_BUFFER *dstBuffer, BufferDescriptor const &amp;dstDesc, DST_BUFFER *duBuffer, BufferDescriptor const &amp;duDesc, DST_BUFFER *dvBuffer, BufferDescriptor const &amp;dvDesc, int numPatchCoords, PATCHCOORD_BUFFER *patchCoords, PATCH_TABLE *patchTable) const'],\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/search/all_6.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/search/all_6.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -31,12 +31,12 @@\n         ['../a01085.html#a7cd8273eef086a749ce3d40063fb4a28', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactoryReal::Options::fvarChannel'],\n         ['../a01089.html#a7cd8273eef086a749ce3d40063fb4a28', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableFactoryReal::Options::fvarChannel'],\n         ['../a01109.html', 1, 'TopologyDescriptor::FVarChannel']\n     ]],\n     ['fvarchannelindices_25', ['fvarChannelIndices', ['../a01021.html#a4c1ba8119a16ea0682a870ee7a8282a5', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options']]],\n     ['fvarchannels_26', ['fvarChannels', ['../a01105.html#a222697ec045f92879ae194eb2d92b526', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyDescriptor']]],\n     ['fvarid_27', ['FVarID', ['../a00957.html#af98288d7b5176d7295be622a10c6c64e', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactoryMeshAdapter']]],\n-    ['fvarlevel_2eh_28', ['fvarLevel.h', ['../a00689.html', 1, '']]],\n+    ['fvarlevel_2eh_28', ['fvarLevel.h', ['../a00794.html', 1, '']]],\n     ['fvarlinearinterpolation_29', ['FVarLinearInterpolation', ['../a01337.html#a5b87eaca6ca0833462c9d4ad84df167b', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Sdc::Options']]],\n     ['fvarpatchprecisiondouble_30', ['fvarPatchPrecisionDouble', ['../a01021.html#a3f663e5c2b7e65976b6521c21ea59130', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options']]],\n-    ['fvarrefinement_2eh_31', ['fvarRefinement.h', ['../a00680.html', 1, '']]]\n+    ['fvarrefinement_2eh_31', ['fvarRefinement.h', ['../a00806.html', 1, '']]]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/search/all_7.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/search/all_7.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -525,41 +525,41 @@\n         ['../a01289.html#ab22907c9cfe58b82ddfcad8241304500', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLStencilTable::GetWeightsBuffer()']\n     ]],\n     ['getweightssrv_267', ['GetWeightsSRV', ['../a01197.html#ac3de1233503ee41bac41618702b4302c', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::D3D11StencilTable']]],\n     ['getweightstexture_268', ['GetWeightsTexture', ['../a01249.html#ad5f4a852f17762c50c5d3011b11155cb', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableTBO']]],\n     ['glcomputeevaluator_269', ['glcomputeevaluator', ['../a01221.html#a9fe54ab76e32fb2dc6f7cd631ce2e678', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLComputeEvaluator::GLComputeEvaluator()'],\n         ['../a01221.html', 1, 'GLComputeEvaluator']\n     ]],\n-    ['glcomputeevaluator_2eh_270', ['glComputeEvaluator.h', ['../a00848.html', 1, '']]],\n+    ['glcomputeevaluator_2eh_270', ['glComputeEvaluator.h', ['../a00752.html', 1, '']]],\n     ['gllegacygregorypatchtable_271', ['gllegacygregorypatchtable', ['../a01233.html#a5b78188b846b316c5c0cdb42f4ee9563', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLLegacyGregoryPatchTable::GLLegacyGregoryPatchTable()'],\n         ['../a01233.html', 1, 'GLLegacyGregoryPatchTable']\n     ]],\n-    ['gllegacygregorypatchtable_2eh_272', ['glLegacyGregoryPatchTable.h', ['../a00887.html', 1, '']]],\n-    ['glmesh_2eh_273', ['glMesh.h', ['../a00878.html', 1, '']]],\n+    ['gllegacygregorypatchtable_2eh_272', ['glLegacyGregoryPatchTable.h', ['../a00767.html', 1, '']]],\n+    ['glmesh_2eh_273', ['glMesh.h', ['../a00719.html', 1, '']]],\n     ['glmeshinterface_274', ['GLMeshInterface', ['../a00912.html#a7f9cf2b729178bdbb847fc4afd91af9e', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd']]],\n     ['glpatchtable_275', ['glpatchtable', ['../a01237.html#a88c12681f62189c398c1d2dc32111264', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLPatchTable::GLPatchTable()'],\n         ['../a01237.html', 1, 'GLPatchTable']\n     ]],\n-    ['glpatchtable_2eh_276', ['glPatchTable.h', ['../a00788.html', 1, '']]],\n+    ['glpatchtable_2eh_276', ['glPatchTable.h', ['../a00779.html', 1, '']]],\n     ['glslpatchshadersource_277', ['GLSLPatchShaderSource', ['../a01241.html', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd']]],\n-    ['glslpatchshadersource_2eh_278', ['glslPatchShaderSource.h', ['../a00827.html', 1, '']]],\n+    ['glslpatchshadersource_2eh_278', ['glslPatchShaderSource.h', ['../a00728.html', 1, '']]],\n     ['glstenciltablessbo_279', ['glstenciltablessbo', ['../a01217.html', 1, 'GLStencilTableSSBO'],\n         ['../a01217.html#aaacee6173a99bb3d7bbfb0a352ef9828', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableSSBO::GLStencilTableSSBO(Far::StencilTable const *stencilTable)'],\n         ['../a01217.html#a27a911fea9736fbe935c0edc4de9b998', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableSSBO::GLStencilTableSSBO(Far::LimitStencilTable const *limitStencilTable)']\n     ]],\n     ['glstenciltabletbo_280', ['glstenciltabletbo', ['../a01249.html', 1, 'GLStencilTableTBO'],\n         ['../a01249.html#abbba46ba67be00a0eac751e3e731db6e', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableTBO::GLStencilTableTBO(Far::StencilTable const *stencilTable)'],\n         ['../a01249.html#ac74a769daf1fe45575a16b738bb761cd', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLStencilTableTBO::GLStencilTableTBO(Far::LimitStencilTable const *limitStencilTable)']\n     ]],\n     ['glvertexbuffer_281', ['glvertexbuffer', ['../a01245.html', 1, 'GLVertexBuffer'],\n         ['../a01245.html#aa6f38a53fba4a64d600b9c4695477049', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLVertexBuffer::GLVertexBuffer()']\n     ]],\n-    ['glvertexbuffer_2eh_282', ['glVertexBuffer.h', ['../a00869.html', 1, '']]],\n+    ['glvertexbuffer_2eh_282', ['glVertexBuffer.h', ['../a00683.html', 1, '']]],\n     ['glxfbevaluator_283', ['glxfbevaluator', ['../a01253.html#a1932f725b28e271ab11ca768ba3bb01e', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::GLXFBEvaluator::GLXFBEvaluator()'],\n         ['../a01253.html', 1, 'GLXFBEvaluator']\n     ]],\n-    ['glxfbevaluator_2eh_284', ['glXFBEvaluator.h', ['../a00791.html', 1, '']]],\n+    ['glxfbevaluator_2eh_284', ['glXFBEvaluator.h', ['../a00701.html', 1, '']]],\n     ['gregory_285', ['GREGORY', ['../a00973.html#a1d1cfd8ffb84e947f82999c682b666a7ae765e809376e5557d348d3e991a7273e', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor']]],\n     ['gregory_5fbasis_286', ['GREGORY_BASIS', ['../a00973.html#a1d1cfd8ffb84e947f82999c682b666a7ad7d1a88a40ae8938e07af7a7745054b0', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor']]],\n     ['gregory_5fboundary_287', ['GREGORY_BOUNDARY', ['../a00973.html#a1d1cfd8ffb84e947f82999c682b666a7ac4ae10df9c13e44880ca7be341e44f2a', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor']]],\n     ['gregory_5ftriangle_288', ['GREGORY_TRIANGLE', ['../a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a8bf2cfb939c78155cae7549621ea73f6', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor']]]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/search/all_8.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/search/all_8.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -4,10 +4,10 @@\n     ]],\n     ['hasedgesharpness_1', ['HasEdgeSharpness', ['../a00969.html#a2c6d182581c88931784f62fe2b8ae666', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Bfr::VertexDescriptor']]],\n     ['hasholes_2', ['HasHoles', ['../a01121.html#a1b68f0501aabb94ba410e006181d2cc5', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner']]],\n     ['hasincidentfacesizes_3', ['HasIncidentFaceSizes', ['../a00969.html#ad56c50bc5582768806d7890c55b63141', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Bfr::VertexDescriptor']]],\n     ['hassubfaces_4', ['HasSubFaces', ['../a00921.html#adc4cd156a8fdb843b0e233a922bb8a17', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization']]],\n     ['hasvertexsharpness_5', ['HasVertexSharpness', ['../a00969.html#a4f46be1cfd41b34d8808363c83e9ff56', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Bfr::VertexDescriptor']]],\n     ['hlslpatchshadersource_6', ['HLSLPatchShaderSource', ['../a01265.html', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd']]],\n-    ['hlslpatchshadersource_2eh_7', ['hlslPatchShaderSource.h', ['../a00794.html', 1, '']]],\n+    ['hlslpatchshadersource_2eh_7', ['hlslPatchShaderSource.h', ['../a00716.html', 1, '']]],\n     ['holeindices_8', ['holeIndices', ['../a01105.html#a4fcd8e9a636d89045d364607f2b035a1', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyDescriptor']]]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/search/all_a.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/search/all_a.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,16 +1,16 @@\n var searchData = [\n     ['length_0', ['length', ['../a01141.html#a9f59b34b1f25fe00023291b678246bcc', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::BufferDescriptor']]],\n-    ['level_2eh_1', ['level.h', ['../a00695.html', 1, '']]],\n+    ['level_2eh_1', ['level.h', ['../a00815.html', 1, '']]],\n     ['limit_2', ['limit', ['../a01029.html#a2cf4c50a1117c44ba4d11db92b067401', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::PrimvarRefinerReal::Limit(T const &amp;src, U &amp;dstPos, U1 &amp;dstTan1, U2 &amp;dstTan2) const'],\n         ['../a01029.html#a0357839a7fabaa02f1d6d6a3c75e1ec2', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::PrimvarRefinerReal::Limit(T const &amp;src, U &amp;dstPos) const']\n     ]],\n     ['limitfacevarying_3', ['LimitFaceVarying', ['../a01029.html#afdee0e9e9c6edd34c96892efff808a87', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::PrimvarRefinerReal']]],\n     ['limits_4', ['Limits', ['../a00917.html', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Bfr']]],\n-    ['limits_2eh_5', ['limits.h', ['../a00701.html', 1, '']]],\n+    ['limits_2eh_5', ['limits.h', ['../a00890.html', 1, '']]],\n     ['limitstencil_6', ['limitstencil', ['../a01073.html', 1, 'LimitStencil'],\n         ['../a01073.html#a51e1d601373aa0cd9ce70b630ce22adf', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencil::LimitStencil(int *size, Index *indices, float *weights, float *duWeights=0, float *dvWeights=0, float *duuWeights=0, float *duvWeights=0, float *dvvWeights=0)'],\n         ['../a01073.html#a071ea9b75540c3d54d9bf934fc944e5a', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencil::LimitStencil(BaseStencil const &amp;other)']\n     ]],\n     ['limitstencilreal_7', ['limitstencilreal', ['../a01069.html', 1, 'LimitStencilReal&lt; REAL &gt;'],\n         ['../a01069.html#ad6ade692f92a3bf50c813a82bd63d4c7', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilReal::LimitStencilReal()']\n     ]],\n@@ -52,9 +52,9 @@\n         ['../a00993.html#af22fd3afdc99098cc89463f530de5011', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::LocalPointVaryingStencilPrecisionMatchesType() const']\n     ]],\n     ['locationarray_23', ['locationarray', ['../a01093.html#a23ed026fe98bd57164dbb601791f51fc', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableFactoryReal::LocationArray::LocationArray()'],\n         ['../a01093.html', 1, 'LimitStencilTableFactoryReal&lt; REAL &gt;::LocationArray']\n     ]],\n     ['locationarrayvec_24', ['LocationArrayVec', ['../a01049.html#a940880e2d35dea72f52db5bcdc9c94b7', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableFactoryReal']]],\n     ['loop_25', ['LOOP', ['../a00973.html#a1d1cfd8ffb84e947f82999c682b666a7a61f7f1587bd5fe978d9ff3ece8d0624c', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor']]],\n-    ['loopscheme_2eh_26', ['loopScheme.h', ['../a00728.html', 1, '']]]\n+    ['loopscheme_2eh_26', ['loopScheme.h', ['../a00872.html', 1, '']]]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/search/all_b.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/search/all_b.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -2,15 +2,15 @@\n     ['maxfacesize_0', ['MaxFaceSize', ['../a00917.html#a058dee146ff7dafb8d2b8cb0d09f5da8', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Limits']]],\n     ['maxisolationlevel_1', ['maxIsolationLevel', ['../a01021.html#a18b47b281350d10784fd4917be9019f1', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options']]],\n     ['maxlevel_2', ['maxLevel', ['../a01085.html#a110477b0e61b09d8be1a472df34f6386', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactoryReal::Options']]],\n     ['maxvalence_3', ['MaxValence', ['../a00917.html#aca372fcd4c25aa589418934c5056b16c', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Limits']]],\n     ['mesh_4', ['mesh', ['../a01281.html', 1, 'Mesh&lt; VERTEX_BUFFER, STENCIL_TABLE, EVALUATOR, PATCH_TABLE, DEVICE_CONTEXT &gt;'],\n         ['../a01281.html#a69e70d7e23e9bd8bd8eb7b5f0589009f', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::Mesh::Mesh()']\n     ]],\n-    ['mesh_2eh_5', ['mesh.h', ['../a00872.html', 1, '']]],\n+    ['mesh_2eh_5', ['mesh.h', ['../a00704.html', 1, '']]],\n     ['meshadaptive_6', ['MeshAdaptive', ['../a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492adef344bcbdd50a1a93136eb53183c718', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd']]],\n     ['meshbits_7', ['MeshBits', ['../a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd']]],\n     ['meshbitset_8', ['MeshBitset', ['../a00912.html#a85ba9df501aea9af1ec9da1558c255bc', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd']]],\n     ['meshendcapbilinearbasis_9', ['MeshEndCapBilinearBasis', ['../a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a4124233e4f787f999c7975afceab34f3', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd']]],\n     ['meshendcapbsplinebasis_10', ['MeshEndCapBSplineBasis', ['../a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492aa2f41b6ba0393698bb3af283283737f7', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd']]],\n     ['meshendcapgregorybasis_11', ['MeshEndCapGregoryBasis', ['../a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492aa2878e1a215530f5f6fb89f1e06f91ee', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd']]],\n     ['meshendcaplegacygregory_12', ['MeshEndCapLegacyGregory', ['../a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492aad7b3fb2be609abdbfafaf5b1c834158', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd']]],\n@@ -22,29 +22,29 @@\n     ['meshinterleavevarying_16', ['MeshInterleaveVarying', ['../a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a9313c644b9b2a998bcb55cfcc4582b1a', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd']]],\n     ['meshuseinfsharppatch_17', ['MeshUseInfSharpPatch', ['../a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a8fab1b3018f94b5b2432c7435e795925', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd']]],\n     ['meshusesinglecreasepatch_18', ['MeshUseSingleCreasePatch', ['../a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492a9058d69e1089fc77f1974a76c34e2071', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd']]],\n     ['meshusesmoothcornerpatch_19', ['MeshUseSmoothCornerPatch', ['../a00912.html#a1af6b50e9f8ae13d3d2f9d5b03b35492ab32b8ef595539e14041e2fb0e619e3f9', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd']]],\n     ['mode_20', ['mode', ['../a01045.html#a46c8a310cf4c094f8c80e1cb8dc1f911', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::StencilTableFactoryReal::Mode'],\n         ['../a01049.html#a46c8a310cf4c094f8c80e1cb8dc1f911', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableFactoryReal::Mode']\n     ]],\n-    ['mtlcommon_2eh_21', ['mtlCommon.h', ['../a00824.html', 1, '']]],\n+    ['mtlcommon_2eh_21', ['mtlCommon.h', ['../a00698.html', 1, '']]],\n     ['mtlcomputeevaluator_22', ['mtlcomputeevaluator', ['../a01293.html#a10015b2c4f90f3a11e60cc88dcbb9d6b', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLComputeEvaluator::MTLComputeEvaluator()'],\n         ['../a01293.html', 1, 'MTLComputeEvaluator']\n     ]],\n-    ['mtlcomputeevaluator_2eh_23', ['mtlComputeEvaluator.h', ['../a00806.html', 1, '']]],\n+    ['mtlcomputeevaluator_2eh_23', ['mtlComputeEvaluator.h', ['../a00689.html', 1, '']]],\n     ['mtlcontext_24', ['MTLContext', ['../a01285.html', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd']]],\n     ['mtllegacygregorypatchtable_25', ['MTLLegacyGregoryPatchTable', ['../a01297.html', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd']]],\n-    ['mtllegacygregorypatchtable_2eh_26', ['mtlLegacyGregoryPatchTable.h', ['../a00893.html', 1, '']]],\n-    ['mtlmesh_2eh_27', ['mtlMesh.h', ['../a00812.html', 1, '']]],\n+    ['mtllegacygregorypatchtable_2eh_26', ['mtlLegacyGregoryPatchTable.h', ['../a00746.html', 1, '']]],\n+    ['mtlmesh_2eh_27', ['mtlMesh.h', ['../a00740.html', 1, '']]],\n     ['mtlmeshinterface_28', ['MTLMeshInterface', ['../a00912.html#aa41e5b43fe46eeb0f97ff6ebdb1935aa', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd']]],\n     ['mtlpatchshadersource_29', ['MTLPatchShaderSource', ['../a01301.html', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd']]],\n-    ['mtlpatchshadersource_2eh_30', ['mtlPatchShaderSource.h', ['../a00851.html', 1, '']]],\n+    ['mtlpatchshadersource_2eh_30', ['mtlPatchShaderSource.h', ['../a00734.html', 1, '']]],\n     ['mtlpatchtable_31', ['mtlpatchtable', ['../a01305.html', 1, 'MTLPatchTable'],\n         ['../a01305.html#a3f197c2ae3862390d72e7443a2525187', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLPatchTable::MTLPatchTable()']\n     ]],\n-    ['mtlpatchtable_2eh_32', ['mtlPatchTable.h', ['../a00809.html', 1, '']]],\n+    ['mtlpatchtable_2eh_32', ['mtlPatchTable.h', ['../a00776.html', 1, '']]],\n     ['mtlstenciltable_33', ['mtlstenciltable', ['../a01289.html', 1, 'MTLStencilTable'],\n         ['../a01289.html#a015dc72c3360b4841ee2b3feb06c106f', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLStencilTable::MTLStencilTable(Far::LimitStencilTable const *stencilTable, MTLContext *context)'],\n         ['../a01289.html#a45e329ffe9fe4e32a1b21bfc89a6763f', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::MTLStencilTable::MTLStencilTable(Far::StencilTable const *stencilTable, MTLContext *context)']\n     ]],\n-    ['mtlvertexbuffer_2eh_34', ['mtlVertexBuffer.h', ['../a00884.html', 1, '']]]\n+    ['mtlvertexbuffer_2eh_34', ['mtlVertexBuffer.h', ['../a00713.html', 1, '']]]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/search/all_d.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/search/all_d.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,18 +1,18 @@\n var searchData = [\n     ['offset_0', ['offset', ['../a01141.html#aed7ea92f45bd273dde380a45ddced592', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::BufferDescriptor']]],\n     ['ompevalstencils_1', ['ompevalstencils', ['../a00912.html#a44a05502feb5015035bc81b93cffb99c', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::OmpEvalStencils(float const *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, float *dstDu, BufferDescriptor const &amp;dstDuDesc, float *dstDv, BufferDescriptor const &amp;dstDvDesc, float *dstDuu, BufferDescriptor const &amp;dstDuuDesc, float *dstDuv, BufferDescriptor const &amp;dstDuvDesc, float *dstDvv, BufferDescriptor const &amp;dstDvvDesc, int const *sizes, int const *offsets, int const *indices, float const *weights, float const *duWeights, float const *dvWeights, float const *duuWeights, float const *duvWeights, float const *dvvWeights, int start, int end)'],\n         ['../a00912.html#a907dc53421460557871ddc35f77751f5', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::OmpEvalStencils(float const *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, float *dstDu, BufferDescriptor const &amp;dstDuDesc, float *dstDv, BufferDescriptor const &amp;dstDvDesc, int const *sizes, int const *offsets, int const *indices, float const *weights, float const *duWeights, float const *dvWeights, int start, int end)'],\n         ['../a00912.html#a870745ff3e883b32547d4db42b3be2bd', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::OmpEvalStencils(float const *src, BufferDescriptor const &amp;srcDesc, float *dst, BufferDescriptor const &amp;dstDesc, int const *sizes, int const *offsets, int const *indices, float const *weights, int start, int end)']\n     ]],\n     ['ompevaluator_2', ['OmpEvaluator', ['../a01313.html', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd']]],\n-    ['ompevaluator_2eh_3', ['ompEvaluator.h', ['../a00854.html', 1, '']]],\n-    ['ompkernel_2eh_4', ['ompKernel.h', ['../a00797.html', 1, '']]],\n-    ['opencl_2eh_5', ['opencl.h', ['../a00845.html', 1, '']]],\n-    ['opengl_2eh_6', ['opengl.h', ['../a00842.html', 1, '']]],\n+    ['ompevaluator_2eh_3', ['ompEvaluator.h', ['../a00707.html', 1, '']]],\n+    ['ompkernel_2eh_4', ['ompKernel.h', ['../a00761.html', 1, '']]],\n+    ['opencl_2eh_5', ['opencl.h', ['../a00755.html', 1, '']]],\n+    ['opengl_2eh_6', ['opengl.h', ['../a00722.html', 1, '']]],\n     ['opensubdiv_7', ['OpenSubdiv', ['../a00905.html', 1, '']]],\n     ['opensubdiv_3a_3aopensubdiv_5fversion_8', ['OPENSUBDIV_VERSION', ['../a00906.html', 1, 'OpenSubdiv']]],\n     ['opensubdiv_3a_3aopensubdiv_5fversion_3a_3abfr_9', ['Bfr', ['../a00907.html', 1, 'OpenSubdiv::OPENSUBDIV_VERSION']]],\n     ['opensubdiv_3a_3aopensubdiv_5fversion_3a_3afar_10', ['Far', ['../a00908.html', 1, 'OpenSubdiv::OPENSUBDIV_VERSION']]],\n     ['opensubdiv_3a_3aopensubdiv_5fversion_3a_3aosd_11', ['Osd', ['../a00912.html', 1, 'OpenSubdiv::OPENSUBDIV_VERSION']]],\n     ['opensubdiv_3a_3aopensubdiv_5fversion_3a_3asdc_12', ['Sdc', ['../a00913.html', 1, 'OpenSubdiv::OPENSUBDIV_VERSION']]],\n     ['opensubdiv_3a_3aopensubdiv_5fversion_3a_3avtr_13', ['Vtr', ['../a00909.html', 1, 'OpenSubdiv::OPENSUBDIV_VERSION']]],\n@@ -47,12 +47,12 @@\n         ['../a00965.html#a28d39a844c3a37ab61d32ab7c6352f09', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::Options::Options()'],\n         ['../a00945.html#a28d39a844c3a37ab61d32ab7c6352f09', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Bfr::SurfaceFactory::Options::Options()'],\n         ['../a01021.html', 1, 'PatchTableFactory::Options'],\n         ['../a01085.html', 1, 'StencilTableFactoryReal&lt; REAL &gt;::Options'],\n         ['../a01137.html', 1, 'TopologyRefinerFactory&lt; MESH &gt;::Options'],\n         ['../a01337.html', 1, 'Options']\n     ]],\n-    ['options_2eh_20', ['options.h', ['../a00734.html', 1, '']]],\n+    ['options_2eh_20', ['options.h', ['../a00860.html', 1, '']]],\n     ['orderverticesfromfacesfirst_21', ['orderverticesfromfacesfirst', ['../a01125.html#a3b1e47f9568213cc322ef29a84c932b6', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::UniformOptions::orderVerticesFromFacesFirst'],\n         ['../a01129.html#a3b1e47f9568213cc322ef29a84c932b6', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::AdaptiveOptions::orderVerticesFromFacesFirst']\n     ]]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/search/all_e.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/search/all_e.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,14 +1,14 @@\n var searchData = [\n     ['parameterization_0', ['parameterization', ['../a00921.html#a64a4b29d36851a8d83be05af5b25f886', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization::Parameterization(Parameterization const &amp;)=default'],\n         ['../a00921.html#aa7e0b89d67d34c1dd7a37cdce95f9e2c', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization::Parameterization()'],\n         ['../a00921.html#a301ad64c8ae0a3ba3af84377138a069f', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Parameterization::Parameterization(Sdc::SchemeType scheme, int faceSize)'],\n         ['../a00921.html', 1, 'Parameterization']\n     ]],\n-    ['parameterization_2eh_1', ['parameterization.h', ['../a00719.html', 1, '']]],\n+    ['parameterization_2eh_1', ['parameterization.h', ['../a00899.html', 1, '']]],\n     ['patcharray_2', ['patcharray', ['../a01325.html', 1, 'PatchArray'],\n         ['../a01325.html#ad9821423935395f540ff8d37d907600a', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchArray::PatchArray(Far::PatchDescriptor regDesc_in, Far::PatchDescriptor irregDesc_in, int numPatches_in, int indexBase_in, int primitiveIdBase_in)'],\n         ['../a01325.html#a9c551db8af15f4a0ddf4c2a13ce2505e', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchArray::PatchArray(Far::PatchDescriptor desc_in, int numPatches_in, int indexBase_in, int primitiveIdBase_in)']\n     ]],\n     ['patcharrayvector_3', ['PatchArrayVector', ['../a00912.html#a98098cd229f60d2397d84a76fe654a31', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd']]],\n     ['patchbuilder_4', ['PatchBuilder', ['../a01121.html#a97612a1a955f8b65e6d7e7761ed1cef7', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner']]],\n     ['patchcoord_5', ['patchcoord', ['../a01321.html#abe64006c4fe55b720f483bd7711bf216', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchCoord::PatchCoord(Far::PatchTable::PatchHandle handleArg, float sArg, float tArg)'],\n@@ -16,44 +16,44 @@\n         ['../a01321.html', 1, 'PatchCoord']\n     ]],\n     ['patchdescriptor_6', ['patchdescriptor', ['../a00973.html', 1, 'PatchDescriptor'],\n         ['../a00973.html#a6c6de8b1c8212039f4702f70bb75cf02', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::PatchDescriptor(PatchDescriptor const &amp;d)'],\n         ['../a00973.html#a8e33c50700963e8dc99a5f598a32aaa3', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::PatchDescriptor(int type)'],\n         ['../a00973.html#af3f91a4a134cb2e5786990ec81f30d17', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::PatchDescriptor()']\n     ]],\n-    ['patchdescriptor_2eh_7', ['patchDescriptor.h', ['../a00773.html', 1, '']]],\n+    ['patchdescriptor_2eh_7', ['patchDescriptor.h', ['../a00857.html', 1, '']]],\n     ['patchfacetag_8', ['PatchFaceTag', ['../a01025.html', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory']]],\n     ['patchhandle_9', ['PatchHandle', ['../a00997.html', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable']]],\n     ['patchindex_10', ['patchIndex', ['../a00997.html#a31bdf15525ab73560c2b725ff7f8ae3a', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::PatchHandle']]],\n     ['patchmap_11', ['patchmap', ['../a00977.html#a016619de52fd79dbcdb879cc12b79200', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchMap::PatchMap()'],\n         ['../a00977.html', 1, 'PatchMap'],\n         ['../a00997.html#aff380d8d7f072959898c0a4e25150d2a', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::PatchHandle::PatchMap']\n     ]],\n-    ['patchmap_2eh_12', ['patchMap.h', ['../a00779.html', 1, '']]],\n+    ['patchmap_2eh_12', ['patchMap.h', ['../a00830.html', 1, '']]],\n     ['patchparam_13', ['patchparam', ['../a01329.html', 1, 'PatchParam'],\n         ['../a00989.html', 1, 'PatchParam']\n     ]],\n-    ['patchparam_2eh_14', ['patchParam.h', ['../a00755.html', 1, '']]],\n+    ['patchparam_2eh_14', ['patchParam.h', ['../a00836.html', 1, '']]],\n     ['patchparamarray_15', ['PatchParamArray', ['../a00908.html#abe07210a029a01571c54276ae28b4d88', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far']]],\n     ['patchparamtable_16', ['PatchParamTable', ['../a00908.html#a46ea68db89cc3d55c4191ef7648281ce', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far']]],\n     ['patchparamvector_17', ['PatchParamVector', ['../a00912.html#a1e22001c627b0364d6c6d62a3ed05fee', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd']]],\n     ['patchprecisiondouble_18', ['patchPrecisionDouble', ['../a01021.html#a91ce5fe0ce9b9ec6c5afcfb6e1ccaa40', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory::Options']]],\n     ['patchtable_19', ['patchtable', ['../a00993.html', 1, 'PatchTable'],\n         ['../a00993.html#a37e24b0244219eef61cc1ab2a5a5450e', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::PatchTable(int maxvalence)'],\n         ['../a00993.html#a3419c5d57330d6787f8c14a7677b8d9b', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::PatchTable(PatchTable const &amp;src)'],\n         ['../a00997.html#ad4867d502f9704b7e45a7974e8918dc3', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::PatchHandle::PatchTable'],\n         ['../a01281.html#adf9352136d44e5999629c6b4530bf4e0', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::Mesh::PatchTable'],\n         ['../a01269.html#adf9352136d44e5999629c6b4530bf4e0', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::MeshInterface::PatchTable']\n     ]],\n-    ['patchtable_2eh_20', ['patchTable.h', ['../a00761.html', 1, '']]],\n+    ['patchtable_2eh_20', ['patchTable.h', ['../a00842.html', 1, '']]],\n     ['patchtablebuilder_21', ['patchtablebuilder', ['../a00993.html#ad452cef79832abb71eef0c3d88acc1a0', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::PatchTableBuilder'],\n         ['../a01121.html#ad452cef79832abb71eef0c3d88acc1a0', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::PatchTableBuilder']\n     ]],\n     ['patchtablefactory_22', ['PatchTableFactory', ['../a01017.html', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far']]],\n-    ['patchtablefactory_2eh_23', ['patchTableFactory.h', ['../a00776.html', 1, '']]],\n+    ['patchtablefactory_2eh_23', ['patchTableFactory.h', ['../a00854.html', 1, '']]],\n     ['patchtagvector_24', ['PatchTagVector', ['../a01017.html#a37218ea13f75caee4c93cc4e94d26060', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTableFactory']]],\n     ['patchvertstable_25', ['PatchVertsTable', ['../a00993.html#a9484ab8a323750c2f639ee8709b1349b', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable']]],\n     ['pointdescriptor_26', ['pointdescriptor', ['../a00937.html', 1, 'Surface&lt; REAL &gt;::PointDescriptor'],\n         ['../a00937.html#ac60ab7fa3966237e2de95cc60defa4de', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::PointDescriptor::PointDescriptor()'],\n         ['../a00937.html#a69d66788e741236b1176159a1d609189', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::PointDescriptor::PointDescriptor(int n)'],\n         ['../a00937.html#a6e6069bdfef867e798fe863f40f4274a', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Surface::PointDescriptor::PointDescriptor(int n, int m)']\n     ]],\n@@ -69,24 +69,24 @@\n     ['preservequads_36', ['preservequads', ['../a00965.html#a98820ec764e776bd556a9b80b872b78f', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::Options::PreserveQuads(bool on)'],\n         ['../a00965.html#ae2ec197b850e8bd12878cc67a503a07a', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Bfr::Tessellation::Options::PreserveQuads() const']\n     ]],\n     ['primitiveidbase_37', ['primitiveIdBase', ['../a01325.html#a5a054ce6862ecc6ea8c404fadb1c9a15', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Osd::PatchArray']]],\n     ['primvarrefiner_38', ['primvarrefiner', ['../a01037.html#a643d81a2ae20ba1897433f5af5a3697a', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::PrimvarRefiner::PrimvarRefiner()'],\n         ['../a01037.html', 1, 'PrimvarRefiner']\n     ]],\n-    ['primvarrefiner_2eh_39', ['primvarRefiner.h', ['../a00746.html', 1, '']]],\n+    ['primvarrefiner_2eh_39', ['primvarRefiner.h', ['../a00851.html', 1, '']]],\n     ['primvarrefinerreal_40', ['primvarrefinerreal', ['../a01121.html#a2cb48b58c1c2ecef25abb39339a95ac1', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::PrimvarRefinerReal'],\n         ['../a01029.html#a1fe1fbda93c01c326f13929d1c3c6247', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::PrimvarRefinerReal::PrimvarRefinerReal()'],\n         ['../a01029.html', 1, 'PrimvarRefinerReal&lt; REAL &gt;']\n     ]],\n     ['primvarrefinerreal_3c_20float_20_3e_41', ['PrimvarRefinerReal&lt; float &gt;', ['../a01029.html', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far']]],\n     ['print_42', ['print', ['../a00973.html#acd0f82d3c49b8a5dd436d4003c44b713', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchDescriptor::print()'],\n         ['../a00993.html#acd0f82d3c49b8a5dd436d4003c44b713', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::PatchTable::print()']\n     ]],\n     ['printtopology_43', ['PrintTopology', ['../a01113.html#a3f963f5352658762e7a2e8d82fb888a0', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyLevel']]],\n     ['ptexidx_44', ['ptexIdx', ['../a01093.html#afb60a8380cb9df186de7183b32bd84e2', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::LimitStencilTableFactoryReal::LocationArray']]],\n     ['ptexindices_45', ['ptexindices', ['../a01121.html#a3e6c896f40ac50aec4b28f19bc4eae9c', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::TopologyRefiner::PtexIndices'],\n         ['../a01041.html#a7b5dd5f4c76d684d924adf477eeea0a3', 1, 'OpenSubdiv::OPENSUBDIV_VERSION::Far::PtexIndices::PtexIndices()'],\n         ['../a01041.html', 1, 'PtexIndices']\n     ]],\n-    ['ptexindices_2eh_46', ['ptexIndices.h', ['../a00770.html', 1, '']]]\n+    ['ptexindices_2eh_46', ['ptexIndices.h', ['../a00848.html', 1, '']]]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/search/files_0.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/search/files_0.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,3 +1,3 @@\n var searchData = [\n-    ['array_2eh_0', ['array.h', ['../a00683.html', 1, '']]]\n+    ['array_2eh_0', ['array.h', ['../a00797.html', 1, '']]]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/search/files_1.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/search/files_1.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,4 +1,4 @@\n var searchData = [\n-    ['bilinearscheme_2eh_0', ['bilinearScheme.h', ['../a00740.html', 1, '']]],\n-    ['bufferdescriptor_2eh_1', ['bufferDescriptor.h', ['../a00866.html', 1, '']]]\n+    ['bilinearscheme_2eh_0', ['bilinearScheme.h', ['../a00875.html', 1, '']]],\n+    ['bufferdescriptor_2eh_1', ['bufferDescriptor.h', ['../a00764.html', 1, '']]]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/search/files_2.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/search/files_2.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,16 +1,16 @@\n var searchData = [\n-    ['catmarkscheme_2eh_0', ['catmarkScheme.h', ['../a00737.html', 1, '']]],\n-    ['clevaluator_2eh_1', ['clEvaluator.h', ['../a00830.html', 1, '']]],\n-    ['clpatchtable_2eh_2', ['clPatchTable.h', ['../a00833.html', 1, '']]],\n-    ['clvertexbuffer_2eh_3', ['clVertexBuffer.h', ['../a00881.html', 1, '']]],\n-    ['componentinterfaces_2eh_4', ['componentInterfaces.h', ['../a00698.html', 1, '']]],\n-    ['cpud3d11vertexbuffer_2eh_5', ['cpuD3D11VertexBuffer.h', ['../a00896.html', 1, '']]],\n-    ['cpuevaluator_2eh_6', ['cpuEvaluator.h', ['../a00803.html', 1, '']]],\n-    ['cpuglvertexbuffer_2eh_7', ['cpuGLVertexBuffer.h', ['../a00821.html', 1, '']]],\n-    ['cpupatchtable_2eh_8', ['cpuPatchTable.h', ['../a00818.html', 1, '']]],\n-    ['cpuvertexbuffer_2eh_9', ['cpuVertexBuffer.h', ['../a00899.html', 1, '']]],\n-    ['crease_2eh_10', ['crease.h', ['../a00731.html', 1, '']]],\n-    ['cudaevaluator_2eh_11', ['cudaEvaluator.h', ['../a00839.html', 1, '']]],\n-    ['cudapatchtable_2eh_12', ['cudaPatchTable.h', ['../a00836.html', 1, '']]],\n-    ['cudavertexbuffer_2eh_13', ['cudaVertexBuffer.h', ['../a00875.html', 1, '']]]\n+    ['catmarkscheme_2eh_0', ['catmarkScheme.h', ['../a00866.html', 1, '']]],\n+    ['clevaluator_2eh_1', ['clEvaluator.h', ['../a00749.html', 1, '']]],\n+    ['clpatchtable_2eh_2', ['clPatchTable.h', ['../a00785.html', 1, '']]],\n+    ['clvertexbuffer_2eh_3', ['clVertexBuffer.h', ['../a00725.html', 1, '']]],\n+    ['componentinterfaces_2eh_4', ['componentInterfaces.h', ['../a00812.html', 1, '']]],\n+    ['cpud3d11vertexbuffer_2eh_5', ['cpuD3D11VertexBuffer.h', ['../a00773.html', 1, '']]],\n+    ['cpuevaluator_2eh_6', ['cpuEvaluator.h', ['../a00782.html', 1, '']]],\n+    ['cpuglvertexbuffer_2eh_7', ['cpuGLVertexBuffer.h', ['../a00680.html', 1, '']]],\n+    ['cpupatchtable_2eh_8', ['cpuPatchTable.h', ['../a00791.html', 1, '']]],\n+    ['cpuvertexbuffer_2eh_9', ['cpuVertexBuffer.h', ['../a00743.html', 1, '']]],\n+    ['crease_2eh_10', ['crease.h', ['../a00869.html', 1, '']]],\n+    ['cudaevaluator_2eh_11', ['cudaEvaluator.h', ['../a00692.html', 1, '']]],\n+    ['cudapatchtable_2eh_12', ['cudaPatchTable.h', ['../a00677.html', 1, '']]],\n+    ['cudavertexbuffer_2eh_13', ['cudaVertexBuffer.h', ['../a00674.html', 1, '']]]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/search/files_3.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/search/files_3.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,7 +1,7 @@\n var searchData = [\n-    ['d3d11computeevaluator_2eh_0', ['d3d11ComputeEvaluator.h', ['../a00800.html', 1, '']]],\n-    ['d3d11legacygregorypatchtable_2eh_1', ['d3d11LegacyGregoryPatchTable.h', ['../a00863.html', 1, '']]],\n-    ['d3d11mesh_2eh_2', ['d3d11Mesh.h', ['../a00860.html', 1, '']]],\n-    ['d3d11patchtable_2eh_3', ['d3d11PatchTable.h', ['../a00815.html', 1, '']]],\n-    ['d3d11vertexbuffer_2eh_4', ['d3d11VertexBuffer.h', ['../a00902.html', 1, '']]]\n+    ['d3d11computeevaluator_2eh_0', ['d3d11ComputeEvaluator.h', ['../a00686.html', 1, '']]],\n+    ['d3d11legacygregorypatchtable_2eh_1', ['d3d11LegacyGregoryPatchTable.h', ['../a00695.html', 1, '']]],\n+    ['d3d11mesh_2eh_2', ['d3d11Mesh.h', ['../a00737.html', 1, '']]],\n+    ['d3d11patchtable_2eh_3', ['d3d11PatchTable.h', ['../a00710.html', 1, '']]],\n+    ['d3d11vertexbuffer_2eh_4', ['d3d11VertexBuffer.h', ['../a00788.html', 1, '']]]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/search/files_4.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/search/files_4.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,3 +1,3 @@\n var searchData = [\n-    ['error_2eh_0', ['error.h', ['../a00749.html', 1, '']]]\n+    ['error_2eh_0', ['error.h', ['../a00839.html', 1, '']]]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/search/files_5.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/search/files_5.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,4 +1,4 @@\n var searchData = [\n-    ['fvarlevel_2eh_0', ['fvarLevel.h', ['../a00689.html', 1, '']]],\n-    ['fvarrefinement_2eh_1', ['fvarRefinement.h', ['../a00680.html', 1, '']]]\n+    ['fvarlevel_2eh_0', ['fvarLevel.h', ['../a00794.html', 1, '']]],\n+    ['fvarrefinement_2eh_1', ['fvarRefinement.h', ['../a00806.html', 1, '']]]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/search/files_6.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/search/files_6.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,9 +1,9 @@\n var searchData = [\n-    ['glcomputeevaluator_2eh_0', ['glComputeEvaluator.h', ['../a00848.html', 1, '']]],\n-    ['gllegacygregorypatchtable_2eh_1', ['glLegacyGregoryPatchTable.h', ['../a00887.html', 1, '']]],\n-    ['glmesh_2eh_2', ['glMesh.h', ['../a00878.html', 1, '']]],\n-    ['glpatchtable_2eh_3', ['glPatchTable.h', ['../a00788.html', 1, '']]],\n-    ['glslpatchshadersource_2eh_4', ['glslPatchShaderSource.h', ['../a00827.html', 1, '']]],\n-    ['glvertexbuffer_2eh_5', ['glVertexBuffer.h', ['../a00869.html', 1, '']]],\n-    ['glxfbevaluator_2eh_6', ['glXFBEvaluator.h', ['../a00791.html', 1, '']]]\n+    ['glcomputeevaluator_2eh_0', ['glComputeEvaluator.h', ['../a00752.html', 1, '']]],\n+    ['gllegacygregorypatchtable_2eh_1', ['glLegacyGregoryPatchTable.h', ['../a00767.html', 1, '']]],\n+    ['glmesh_2eh_2', ['glMesh.h', ['../a00719.html', 1, '']]],\n+    ['glpatchtable_2eh_3', ['glPatchTable.h', ['../a00779.html', 1, '']]],\n+    ['glslpatchshadersource_2eh_4', ['glslPatchShaderSource.h', ['../a00728.html', 1, '']]],\n+    ['glvertexbuffer_2eh_5', ['glVertexBuffer.h', ['../a00683.html', 1, '']]],\n+    ['glxfbevaluator_2eh_6', ['glXFBEvaluator.h', ['../a00701.html', 1, '']]]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/search/files_7.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/search/files_7.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,3 +1,3 @@\n var searchData = [\n-    ['hlslpatchshadersource_2eh_0', ['hlslPatchShaderSource.h', ['../a00794.html', 1, '']]]\n+    ['hlslpatchshadersource_2eh_0', ['hlslPatchShaderSource.h', ['../a00716.html', 1, '']]]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/search/files_8.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/search/files_8.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,5 +1,5 @@\n var searchData = [\n-    ['level_2eh_0', ['level.h', ['../a00695.html', 1, '']]],\n-    ['limits_2eh_1', ['limits.h', ['../a00701.html', 1, '']]],\n-    ['loopscheme_2eh_2', ['loopScheme.h', ['../a00728.html', 1, '']]]\n+    ['level_2eh_0', ['level.h', ['../a00815.html', 1, '']]],\n+    ['limits_2eh_1', ['limits.h', ['../a00890.html', 1, '']]],\n+    ['loopscheme_2eh_2', ['loopScheme.h', ['../a00872.html', 1, '']]]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/search/files_9.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/search/files_9.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,10 +1,10 @@\n var searchData = [\n-    ['mesh_2eh_0', ['mesh.h', ['../a00872.html', 1, '']]],\n-    ['mtlcommon_2eh_1', ['mtlCommon.h', ['../a00824.html', 1, '']]],\n-    ['mtlcomputeevaluator_2eh_2', ['mtlComputeEvaluator.h', ['../a00806.html', 1, '']]],\n-    ['mtllegacygregorypatchtable_2eh_3', ['mtlLegacyGregoryPatchTable.h', ['../a00893.html', 1, '']]],\n-    ['mtlmesh_2eh_4', ['mtlMesh.h', ['../a00812.html', 1, '']]],\n-    ['mtlpatchshadersource_2eh_5', ['mtlPatchShaderSource.h', ['../a00851.html', 1, '']]],\n-    ['mtlpatchtable_2eh_6', ['mtlPatchTable.h', ['../a00809.html', 1, '']]],\n-    ['mtlvertexbuffer_2eh_7', ['mtlVertexBuffer.h', ['../a00884.html', 1, '']]]\n+    ['mesh_2eh_0', ['mesh.h', ['../a00704.html', 1, '']]],\n+    ['mtlcommon_2eh_1', ['mtlCommon.h', ['../a00698.html', 1, '']]],\n+    ['mtlcomputeevaluator_2eh_2', ['mtlComputeEvaluator.h', ['../a00689.html', 1, '']]],\n+    ['mtllegacygregorypatchtable_2eh_3', ['mtlLegacyGregoryPatchTable.h', ['../a00746.html', 1, '']]],\n+    ['mtlmesh_2eh_4', ['mtlMesh.h', ['../a00740.html', 1, '']]],\n+    ['mtlpatchshadersource_2eh_5', ['mtlPatchShaderSource.h', ['../a00734.html', 1, '']]],\n+    ['mtlpatchtable_2eh_6', ['mtlPatchTable.h', ['../a00776.html', 1, '']]],\n+    ['mtlvertexbuffer_2eh_7', ['mtlVertexBuffer.h', ['../a00713.html', 1, '']]]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/search/files_a.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/search/files_a.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,7 +1,7 @@\n var searchData = [\n-    ['ompevaluator_2eh_0', ['ompEvaluator.h', ['../a00854.html', 1, '']]],\n-    ['ompkernel_2eh_1', ['ompKernel.h', ['../a00797.html', 1, '']]],\n-    ['opencl_2eh_2', ['opencl.h', ['../a00845.html', 1, '']]],\n-    ['opengl_2eh_3', ['opengl.h', ['../a00842.html', 1, '']]],\n-    ['options_2eh_4', ['options.h', ['../a00734.html', 1, '']]]\n+    ['ompevaluator_2eh_0', ['ompEvaluator.h', ['../a00707.html', 1, '']]],\n+    ['ompkernel_2eh_1', ['ompKernel.h', ['../a00761.html', 1, '']]],\n+    ['opencl_2eh_2', ['opencl.h', ['../a00755.html', 1, '']]],\n+    ['opengl_2eh_3', ['opengl.h', ['../a00722.html', 1, '']]],\n+    ['options_2eh_4', ['options.h', ['../a00860.html', 1, '']]]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/search/files_b.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/search/files_b.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,10 +1,10 @@\n var searchData = [\n-    ['parameterization_2eh_0', ['parameterization.h', ['../a00719.html', 1, '']]],\n-    ['patchdescriptor_2eh_1', ['patchDescriptor.h', ['../a00773.html', 1, '']]],\n-    ['patchmap_2eh_2', ['patchMap.h', ['../a00779.html', 1, '']]],\n-    ['patchparam_2eh_3', ['patchParam.h', ['../a00755.html', 1, '']]],\n-    ['patchtable_2eh_4', ['patchTable.h', ['../a00761.html', 1, '']]],\n-    ['patchtablefactory_2eh_5', ['patchTableFactory.h', ['../a00776.html', 1, '']]],\n-    ['primvarrefiner_2eh_6', ['primvarRefiner.h', ['../a00746.html', 1, '']]],\n-    ['ptexindices_2eh_7', ['ptexIndices.h', ['../a00770.html', 1, '']]]\n+    ['parameterization_2eh_0', ['parameterization.h', ['../a00899.html', 1, '']]],\n+    ['patchdescriptor_2eh_1', ['patchDescriptor.h', ['../a00857.html', 1, '']]],\n+    ['patchmap_2eh_2', ['patchMap.h', ['../a00830.html', 1, '']]],\n+    ['patchparam_2eh_3', ['patchParam.h', ['../a00836.html', 1, '']]],\n+    ['patchtable_2eh_4', ['patchTable.h', ['../a00842.html', 1, '']]],\n+    ['patchtablefactory_2eh_5', ['patchTableFactory.h', ['../a00854.html', 1, '']]],\n+    ['primvarrefiner_2eh_6', ['primvarRefiner.h', ['../a00851.html', 1, '']]],\n+    ['ptexindices_2eh_7', ['ptexIndices.h', ['../a00848.html', 1, '']]]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/search/files_c.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/search/files_c.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,4 +1,4 @@\n var searchData = [\n-    ['refinement_2eh_0', ['refinement.h', ['../a00674.html', 1, '']]],\n-    ['refinersurfacefactory_2eh_1', ['refinerSurfaceFactory.h', ['../a00716.html', 1, '']]]\n+    ['refinement_2eh_0', ['refinement.h', ['../a00803.html', 1, '']]],\n+    ['refinersurfacefactory_2eh_1', ['refinerSurfaceFactory.h', ['../a00884.html', 1, '']]]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/search/files_d.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/search/files_d.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,11 +1,11 @@\n var searchData = [\n-    ['scheme_2eh_0', ['scheme.h', ['../a00743.html', 1, '']]],\n-    ['sparseselector_2eh_1', ['sparseSelector.h', ['../a00677.html', 1, '']]],\n-    ['stackbuffer_2eh_2', ['stackBuffer.h', ['../a00692.html', 1, '']]],\n-    ['stenciltable_2eh_3', ['stencilTable.h', ['../a00758.html', 1, '']]],\n-    ['stenciltablefactory_2eh_4', ['stencilTableFactory.h', ['../a00752.html', 1, '']]],\n-    ['surface_2eh_5', ['surface.h', ['../a00704.html', 1, '']]],\n-    ['surfacefactory_2eh_6', ['surfaceFactory.h', ['../a00713.html', 1, '']]],\n-    ['surfacefactorycache_2eh_7', ['surfaceFactoryCache.h', ['../a00710.html', 1, '']]],\n-    ['surfacefactorymeshadapter_2eh_8', ['surfaceFactoryMeshAdapter.h', ['../a00707.html', 1, '']]]\n+    ['scheme_2eh_0', ['scheme.h', ['../a00863.html', 1, '']]],\n+    ['sparseselector_2eh_1', ['sparseSelector.h', ['../a00809.html', 1, '']]],\n+    ['stackbuffer_2eh_2', ['stackBuffer.h', ['../a00800.html', 1, '']]],\n+    ['stenciltable_2eh_3', ['stencilTable.h', ['../a00818.html', 1, '']]],\n+    ['stenciltablefactory_2eh_4', ['stencilTableFactory.h', ['../a00824.html', 1, '']]],\n+    ['surface_2eh_5', ['surface.h', ['../a00887.html', 1, '']]],\n+    ['surfacefactory_2eh_6', ['surfaceFactory.h', ['../a00881.html', 1, '']]],\n+    ['surfacefactorycache_2eh_7', ['surfaceFactoryCache.h', ['../a00896.html', 1, '']]],\n+    ['surfacefactorymeshadapter_2eh_8', ['surfaceFactoryMeshAdapter.h', ['../a00893.html', 1, '']]]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/search/files_e.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/search/files_e.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,14 +1,14 @@\n var searchData = [\n-    ['tbbevaluator_2eh_0', ['tbbEvaluator.h', ['../a00857.html', 1, '']]],\n-    ['tbbkernel_2eh_1', ['tbbKernel.h', ['../a00890.html', 1, '']]],\n-    ['tessellation_2eh_2', ['tessellation.h', ['../a00722.html', 1, '']]],\n-    ['topologydescriptor_2eh_3', ['topologyDescriptor.h', ['../a00785.html', 1, '']]],\n-    ['topologylevel_2eh_4', ['topologyLevel.h', ['../a00782.html', 1, '']]],\n-    ['topologyrefiner_2eh_5', ['topologyRefiner.h', ['../a00764.html', 1, '']]],\n-    ['topologyrefinerfactory_2eh_6', ['topologyRefinerFactory.h', ['../a00767.html', 1, '']]],\n+    ['tbbevaluator_2eh_0', ['tbbEvaluator.h', ['../a00731.html', 1, '']]],\n+    ['tbbkernel_2eh_1', ['tbbKernel.h', ['../a00758.html', 1, '']]],\n+    ['tessellation_2eh_2', ['tessellation.h', ['../a00902.html', 1, '']]],\n+    ['topologydescriptor_2eh_3', ['topologyDescriptor.h', ['../a00845.html', 1, '']]],\n+    ['topologylevel_2eh_4', ['topologyLevel.h', ['../a00821.html', 1, '']]],\n+    ['topologyrefiner_2eh_5', ['topologyRefiner.h', ['../a00833.html', 1, '']]],\n+    ['topologyrefinerfactory_2eh_6', ['topologyRefinerFactory.h', ['../a00827.html', 1, '']]],\n     ['types_2eh_7', ['types.h', ['../a01486.html', 1, '(Global Namespace)'],\n         ['../a01489.html', 1, '(Global Namespace)'],\n         ['../a01492.html', 1, '(Global Namespace)'],\n         ['../a01495.html', 1, '(Global Namespace)']\n     ]]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/search/files_f.js", "source2": "./usr/share/doc/opensubdiv/doxy_html/search/files_f.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,3 +1,3 @@\n var searchData = [\n-    ['vertexdescriptor_2eh_0', ['vertexDescriptor.h', ['../a00725.html', 1, '']]]\n+    ['vertexdescriptor_2eh_0', ['vertexDescriptor.h', ['../a00878.html', 1, '']]]\n ];\n"}]}, {"source1": "./usr/share/doc/opensubdiv/tipuesearch/tipuesearch_content.js", "source2": "./usr/share/doc/opensubdiv/tipuesearch/tipuesearch_content.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -1,348 +1,348 @@\n var tipuesearch = {\n     \"pages\": [{\n-        \"title\": \"far_tutorial_3_1.cpp\",\n-        \"text\": \"far_tutorial_3_1.cpp far_tutorial_3_1.cpp 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE httpsgithub.comPixarAnimationStudiosOpenSubdivblobreleasetutorialsfartutorial_3_1far_tutorial_3_1.cpp ------------------------------------------------------------------------------  Tutorial description   This tutorial shows how to interface a high-level topology representation  with Far for better efficiency. In tutorial 0, we showed how to instantiate  topology from a simple face-vertex list. Here we will show how to take  advantage of more complex data structures.   Many client applications that manipulate geometry use advanced data structures  such as half-edge, quad-edge or winged-edge in order to represent complex  topological relationships beyond the usual face-vertex lists. We can take  advantage of this information.   Far provides an advanced interface that allows such a client application to  communicate advanced component relationships directly and avoid having Far  rebuilding them redundantly.  include opensubdivfartopologyRefinerFactory.h include opensubdivfarprimvarRefiner.h include cstdio ------------------------------------------------------------------------------ using namespace OpenSubdiv  ------------------------------------------------------------------------------   For this tutorial, we provide the complete topological representation of a  simple pyramid. In our case, we store it as a simple sequence of integers,  with the understanding that client-code would provide a fully implemented  data-structure such as quad-edges or winged-edges.   Pyramid geometry from catmark_pyramid.h - extended for this tutorial  static int g_nverts  5 , g_nedges  8 , g_nfaces  5   vertex positions static float g_verts  5  3    0.0f , 0.0f , 2.0f ,  0.0f , -2.0f , 0.0f ,  2.0f , 0.0f , 0.0f ,  0.0f , 2.0f , 0.0f ,  -2.0f , 0.0f , 0.0f   number of vertices in each face static int g_facenverts  5    3 , 3 , 3 , 3 , 4   index of face vertices static int g_faceverts  16    0 , 1 , 2 , 0 , 2 , 3 , 0 , 3 , 4 , 0 , 4 , 1 , 4 , 3 , 2 , 1   index of edge vertices 2 per edge static int g_edgeverts  16    0 , 1 , 1 , 2 , 2 , 0 , 2 , 3 , 3 , 0 , 3 , 4 , 4 , 0 , 4 , 1   index of face edges static int g_faceedges  16    0 , 1 , 2 , 2 , 3 , 4 , 4 , 5 , 6 , 6 , 7 , 0 , 5 , 3 , 1 , 7   number of faces adjacent to each edge static int g_edgenfaces  8    2 , 2 , 2 , 2 , 2 , 2 , 2 , 2   index of faces incident to a given edge static int g_edgefaces  16    0 , 3 , 0 , 4 , 0 , 1 , 1 , 4 , 1 , 2 , 2 , 4 , 2 , 3 , 3 , 4   number of faces incident to each vertex static int g_vertexnfaces  5    4 , 3 , 3 , 3 , 3   index of faces incident to each vertex static int g_vertexfaces  25    0 , 1 , 2 , 3 , 0 , 3 , 4 , 0 , 4 , 1 , 1 , 4 , 2 , 2 , 4 , 3   number of edges incident to each vertex static int g_vertexnedges  5    4 , 3 , 3 , 3 , 3   index of edges incident to each vertex static int g_vertexedges  25    0 , 2 , 4 , 6 , 1 , 0 , 7 , 2 , 1 , 3 , 4 , 3 , 5 , 6 , 5 , 7   Edge crease sharpness static float g_edgeCreases  8    0.0f , 2.5f , 0.0f , 2.5f , 0.0f , 2.5f , 0.0f , 2.5f  ------------------------------------------------------------------------------   Because existing client-code may not provide an exact match for the  topological queries required by Fars interface, we can provide a converter  class. This can be particularly useful for instance if the client  data-structure requires additional relationships to be mapped. For instance,  half-edge representations do not store unique edge indices and it can be  difficult to traverse edges or faces adjacent to a given vertex.   Using an intermediate wrapper class allows us to leverage existing  relationships information from a mesh, and generate the missing components  temporarily.   For a practical example, you can look at the file hbr_to_vtr.h in the same  tutorial directory. This example implements a OsdHbrConverter class as a  way of interfacing PRmans half-edge representation to Far.  struct Converter  public  Sdc  SchemeType GetType  const  return Sdc  SCHEME_CATMARK   Sdc  Options GetOptions  const  Sdc  Options options  options . SetVtxBoundaryInterpolation  Sdc  Options  VTX_BOUNDARY_EDGE_ONLY  return options   int GetNumFaces  const  return g_nfaces   int GetNumEdges  const  return g_nedges   int GetNumVertices  const  return g_nverts     Face relationships  int GetNumFaceVerts  int face  const  return g_facenverts  face   int const  GetFaceVerts  int face  const  return g_faceverts  getCompOffset  g_facenverts , face   int const  GetFaceEdges  int face  const  return g_faceedges  getCompOffset  g_facenverts , face     Edge relationships  int const  GetEdgeVertices  int edge  const  return g_edgeverts  edge  2   int GetNumEdgeFaces  int edge  const  return g_edgenfaces  edge   int const  GetEdgeFaces  int edge  const  return g_edgefaces  getCompOffset  g_edgenfaces , edge     Vertex relationships  int GetNumVertexEdges  int vert  const  return g_vertexnedges  vert   int const  GetVertexEdges  int vert  const  return g_vertexedges  getCompOffset  g_vertexnedges , vert   int GetNumVertexFaces  int vert  const  return g_vertexnfaces  vert   int const  GetVertexFaces  int vert  const  return g_vertexfaces  getCompOffset  g_vertexnfaces , vert   private  int getCompOffset  int const  comps , int comp  const  int ofs  0  for  int i  0  i  comp   i   ofs  comps  i   return ofs    ------------------------------------------------------------------------------ namespace OpenSubdiv  namespace OPENSUBDIV_VERSION  namespace Far  template  bool TopologyRefinerFactory  Converter  resizeComponentTopology  TopologyRefiner  refiner , Converter const  conv    Faces and face-verts int nfaces  conv . GetNumFaces  setNumBaseFaces  refiner , nfaces  for  int face  0  face  nfaces   face   int nv  conv . GetNumFaceVerts  face  setNumBaseFaceVertices  refiner , face , nv    Edges and edge-faces int nedges  conv . GetNumEdges  setNumBaseEdges  refiner , nedges  for  int edge  0  edge  nedges   edge   int nf  conv . GetNumEdgeFaces  edge  setNumBaseEdgeFaces  refiner , edge , nf    Vertices and vert-faces and vert-edges int nverts  conv . GetNumVertices  setNumBaseVertices  refiner , nverts  for  int vert  0  vert  nverts   vert   int ne  conv . GetNumVertexEdges  vert , nf  conv . GetNumVertexFaces  vert  setNumBaseVertexEdges  refiner , vert , ne  setNumBaseVertexFaces  refiner , vert , nf   return true   template  bool TopologyRefinerFactory  Converter  assignComponentTopology  TopologyRefiner  refiner , Converter const  conv   using Far  IndexArray    Face relations int nfaces  conv . GetNumFaces  for  int face  0  face  nfaces   face   IndexArray dstFaceVerts  getBaseFaceVertices  refiner , face  IndexArray dstFaceEdges  getBaseFaceEdges  refiner , face  int const  faceverts  conv . GetFaceVerts  face  int const  faceedges  conv . GetFaceEdges  face  for  int vert  0  vert  conv . GetNumFaceVerts  face   vert   dstFaceVerts  vert   faceverts  vert  dstFaceEdges  vert   faceedges  vert       Edge relations   Note if your representation is unable to provide edge relationships  ex half-edges, you can comment out this section and Far will  automatically generate the missing information.  int nedges  conv . GetNumEdges  for  int edge  0  edge  nedges   edge    Edge-vertices IndexArray dstEdgeVerts  getBaseEdgeVertices  refiner , edge  dstEdgeVerts  0   conv . GetEdgeVertices  edge  0  dstEdgeVerts  1   conv . GetEdgeVertices  edge  1   Edge-faces IndexArray dstEdgeFaces  getBaseEdgeFaces  refiner , edge  for  int face  0  face  conv . GetNumEdgeFaces  face   face   dstEdgeFaces  face   conv . GetEdgeFaces  edge  face       Vertex relations int nverts  conv . GetNumVertices  for  int vert  0  vert  nverts   vert    Vert-Faces IndexArray vertFaces  getBaseVertexFaces  refiner , vert  LocalIndexArray vertInFaceIndices  getBaseVertexFaceLocalIndicesrefiner, vert for  int face  0  face  conv . GetNumVertexFaces  vert   face   vertFaces  face   conv . GetVertexFaces  vert  face    Vert-Edges IndexArray vertEdges  getBaseVertexEdges  refiner , vert  LocalIndexArray vertInEdgeIndices  getBaseVertexEdgeLocalIndicesrefiner, vert for  int edge  0  edge  conv . GetNumVertexEdges  vert   edge   vertEdges  edge   conv . GetVertexEdges  vert  edge     populateBaseLocalIndices  refiner  return true   template  bool TopologyRefinerFactory  Converter  assignComponentTags  TopologyRefiner  refiner , Converter const  conv    arbitrarily sharpen the 4 bottom edges of the pyramid to 2.5f for  int edge  0  edge  conv . GetNumEdges   edge   setBaseEdgeSharpness  refiner , edge , g_edgeCreases  edge   return true   ifdef _MSC_VER template  void TopologyRefinerFactory  Converter  reportInvalidTopology  TopologyError  errCode  , char const  msg , Converter const   mesh      Optional topology validation error reporting  This method is called whenever the factory encounters topology validation  errors. By default, nothing is reported  Warning  msg   template  bool TopologyRefinerFactory  Converter  assignFaceVaryingTopology  TopologyRefiner   refiner  , Converter const   conv     Because of the way MSVC specializes templated functions, we had to  remove the default stubs in FarTopologyRefinerFactory. In this  example, no face-varying data is being added, but we still need to  implement a template specialization or MSVC linker fails. return true   endif   namespace Far   namespace OPENSUBDIV_VERSION   namespace OpenSubdiv ------------------------------------------------------------------------------   Vertex container implementation.  struct Vertex   Minimal required interface ---------------------- Vertex    Vertex  Vertex const  src   _position  0   src . _position  0  _position  1   src . _position  1  _position  2   src . _position  2   void Clear  void   0   _position  0   _position  1   _position  2   0.0f   void AddWithWeight  Vertex const  src , float weight   _position  0   weight  src . _position  0  _position  1   weight  src . _position  1  _position  2   weight  src . _position  2    Public interface ------------------------------------ void SetPosition  float x , float y , float z   _position  0   x  _position  1   y  _position  2   z   const float  GetPosition  const  return _position   private  float _position  3   ------------------------------------------------------------------------------ int main  int , char    Converter conv  Far  TopologyRefiner  refiner  Far  TopologyRefinerFactory  Converter  Create  conv , Far  TopologyRefinerFactory  Converter  Options  conv . GetType , conv . GetOptions  int maxlevel  5   Uniformly refine the topology up to maxlevel refiner - RefineUniform  Far  TopologyRefiner  UniformOptions  maxlevel   Allocate a buffer for vertex primvar data. The buffer length is set to  be the sum of all children vertices up to the highest level of refinement. std  vector  Vertex  vbuffer  refiner - GetNumVerticesTotal  Vertex  verts   vbuffer  0   Initialize coarse mesh positions int nCoarseVerts  g_nverts  for  int i  0  i  nCoarseVerts   i   verts  i . SetPosition  g_verts  i  0 , g_verts  i  1 , g_verts  i  2    Interpolate vertex primvar data Far  PrimvarRefiner primvarRefiner   refiner  Vertex  src  verts  for  int level  1  level  maxlevel   level   Vertex  dst  src  refiner - GetLevel  level -1 . GetNumVertices  primvarRefiner . Interpolate  level , src , dst  src  dst     Output OBJ of the highest level refined ----------- Far  TopologyLevel const  refLastLevel  refiner - GetLevel  maxlevel  int nverts  refLastLevel . GetNumVertices  int nfaces  refLastLevel . GetNumFaces   Print vertex positions int firstOfLastVerts  refiner - GetNumVerticesTotal  - nverts  for  int vert  0  vert  nverts   vert   float const  pos  verts  firstOfLastVerts  vert . GetPosition  printf  v f f f n  , pos  0 , pos  1 , pos  2    Print faces for  int face  0  face  nfaces   face   Far  ConstIndexArray fverts  refLastLevel . GetFaceVertices  face   all refined Catmark faces should be quads assert  fverts . size   4  printf  f   for  int vert  0  vert  fverts . size   vert   printf  d  , fverts  vert   1   OBJ uses 1-based arrays...  printf   n     delete refiner  return EXIT_SUCCESS   ------------------------------------------------------------------------------ Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n-        \"tags\": \"\",\n-        \"loc\": \"far_tutorial_3_1.html\"\n-    }, {\n-        \"title\": \"Release Notes\",\n-        \"text\": \"Release Notes Release Notes 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE Release 2.6.0 Release 2.5.1 Release 2.5.0 Release 2.4.1 Release 2.4.0 Release 2.3.5 Release 2.3.4 Release 2.3.3 Release 2.3.2 Release 2.3.1 Release 2.3.0 Release 2.2.0 Release 2.1.0 Release 2.0.1 Release 2.0.0 Release 1.2.4 Release 1.2.3 Release 1.2.2 Release 1.2.1 Release 1.2.0 Release 1.1.0 Release 1.0.0 Release 2.6.0 New Features Add subdivision kernels for ARM NEON Add OsdUtilVertexSplit which creates a vertex-varying data table by duplicating vertices in a FarMesh Add basic functions to work with FV data via evaluator API Changes Added Catmark restricted vertex compute kernels that optimize for vertices with no semi-sharp creases Fix accessor omissions in osdmesh.h Add support for different subdivision schemes for OsdUtilMesh Bug Fixes Fix crashes when using rather low-end cards like Intel ones Fix a bug in the creation of an edge-vertex kernel batch Fix mismatch in declaration and usage of OsdCudaComputeRestrictedVertexA Fix a bug in the vertex order for restricted Catmark vertex-vertex kernel batches Fix a bug in FarCatmarkSubdivisionTablesFactory that prevented the CATMARK_QUAD_FACE_VERTEX kernel from being selected for subdivision level 2 or greater. Fix a bug in OsdUtilVertexSplit that occurs when getting the address of the end of a stdvector Fix error in createCLBuffer that occurs when the buffer size is zero Fix a bug in the CUDA computeRestrictedEdge kernel Fix duplicate variables with identical name Fix osdutil build errors Fix cmake diagnostic messsage Release 2.5.1 New Features Add CATMARK_QUAD_FACE_VERTEX and CATMARK_TRI_QUAD_FACE_VERTEX compute kernels optimization that takes advantage of all-quads or all-triange-and-quads meshes Bug Fixes Fix a compiler error in the GLSL Transform Feedback kernels on OS X Fix boundary interpolation in osdutil Fix bilinear stencil tangent computions Release 2.5.0 New Features Add ability to generate triangle patches for a uniformly subdivided mesh Add new example topologySharing Add interleaved buffer mode in glViewer Add GLSL compute kernel to glBatchViewer Add TBB compute kernel to glBatchViewer Add a PullDown widget to our HUD in examplescommon GUI updates  cosmetic changes to GL example code Adding a programmable image shader to gl_hud Code cleanup for GLFrameBuffer in examplescommon Implement C-API accessor to evaluator topology osdutil Add command line option to CMakes options Add a CMake option to disable OpenCL Add a FindCLEW.cmake module in anticipation of using CLEW as a dependency Integrate CLEW into osd library and examples Changes Change interleaved buffer support in OsdCompute Removed OsdVertexDescriptor and replaced with OsdVertexBufferDescriptor Reorganize ComputeContext and ComputeController. Reorganize EvalStencilContext and EvalStencilController Moved transient states current vertex buffer etc to controller Reorganize EvalLimitContext and EvalLimitController Moved transient states current vertex buffer etc to controller Fix adaptive isolation of sharp corner vertices Fix incorrect FarMeshFactory logic for isolating multiple corner vertices in corner patches Change EvalLimit Gregory patch kernels to the large weights table to accomodate higher valences Fix calculation of screen space LOD tess factors for transition corner patches. Add a public constructor to OsdMesh Decrease compiler warning thresholds and fix outstanding warnings Make PTex support optional Add a NO_MAYA flag to CMakeLists to disable all Autodesk Maya dependencies in the build Document NO_MAYA command line option Bug Fixes Fix mistakenly deleted memory barrier in glsl OsdCompute kernel. Fix shape_utils genRIB function to use streams correctly. Temporary workaround for the synchronization bug of glsl compute kernel Fix Hud display for higher DPI MBP retina Fix Hud d3d11 Fix examples to use GL timer query to measure the GPU draw timing more precisely Fix glViewer stop updating during freeze. Fix file permissions on farPatchTablesFactory.h Fix some meory leaks in adaptive evaluator osdutil Fix OsdUtilAdaptiveEvaluator concurrency issue Fix OsdUtilRefiner incorrect Invalid size of patch array error reporting. Fix OsdUtilPatchPartitioner failure for triangle patches Fixes a bug that causes OsdUtilPatchPartitioner to fail to rebuild the face-varying data table correctly for triangle patches. Add missing third parameter to templated OsdDrawContext usage osdutilbatch.h Return success status from openSubdiv_finishEvaluatorDescr osdutil Remove debugging stdcout calls osdutil Build errors  warnings Fix OSX Core Profile build GLFrameBuffer Fix ptexViewer build error on OSX Fix framebuffer shader compiling for OSX Reordering includes to address a compile error on OSXglew environment Fix compilation errors with CLEW enabled Fix icc build problems Fix compiler warnings in OsdClVertexBuffer Fix compilation error on windowsmsvc2013 Fix build warningserrors with VS2010 Pro Fix Windows build warning in FarPatchTablesFactory Fix doxygen generation errors Release 2.4.1 Changes Add correct OpenSubdiv namespace beginend blocks. Bug Fixes Compile osdutil with -fPIC for correct linking. Fix a bug of OsdUtilMeshBatch, the varying buffer isnt computed with CL kernels Fix FindGLFW.cmake to use the GLFW_LOCATION environment variable in Windows Fix Draw contexts do not fully initialize patch arrays Release 2.4.0 New Features Adding functionality to store uniform face-varying data across multiple levels of subdivision Add OsdUtilPatchPartitioner. It splits patcharray into subsets so that clients can draw partial surfaces for both adaptive and uniform. Changes Remove FarMesh dependency from OsdContext. Use DSA APIs for GL buffer update if available. Refactor Far API replace void- of all kernel applications with CONTEXT template parameter. It eliminates many static_casts from void- for both far and osd classes. move the big switch-cases of far default kernel launches out of Refine so that osd controllers can arbitrary mix default kernels and custom kernels. change FarKernelBatchkernelType from enum to int, clients can add custom kernel types. remove a back-pointer to farmesh from subdivision table. untemplate all subdivision table classes and template their compute methods instead. Those methods take a typed vertex storage. remove an unused argument FarMesh from the constructor of subdivision table factories. Refactor FarSubdivisionTables. Delete scheme specialized subdivision tables. The base class FarSubdivisionTables already has all tables, so we just need scheme enum to identify which scheme the subdivision tables belong to. This brings a lot of code cleanups around far factory classes. Move FarMultiMeshFactory to OsdUtil. Move table splicing functions of FarMultiMeshFactory into factories Change PxOsdUtil prefix to final OsdUtil prefix. Improve error reporting in osdutil refinement classes, and fix a build issue Bug Fixes Fix another multi mesh splicing bug of face varying data. Make CMake path variables more robust Fixing a crash on Marvericks wglew Update dxViewer example documentation Fix wrong logic in openSubdiv_setEvaluatorCoarsePositions Remove debug print from adaptive evaluators initialization Release 2.3.5 New Features Add the ability to read obj files to the dxViewer example Add screen-capture function to ptexViewer Update documention for Xcode builds Add documentation boundary interpolation rules and face-varying boundary interpolation rules Changes Refactoring FarPatchTables and FarPatchTablesFactory Move GL vertex buffer VBO buffer allocation out of allocate and into BindVBO Enable uvViewer on OS X now that Mavericks is released. Replacing un-necessary dynamic_cast with reinterpret_cast within FarDispatcher Minor code cleanup of FarMeshFactory Remove address space qualifiers from OpenCL kernel functions Fix OpenCL initialization to be slightly more robust Add OpenCL header include paths where necessary Add static specifiers for non-kernel CL funcs at program scope Add stddef.h to pythonosdosdshim.i Modify ptexViewer and uvViewer shaders to address some portability issues Bug Fixes Fix Gregory Boundary patch buffer overrun Fix black texels when the resolution of a ptex face is less than 4 Fix a splicing bug in FarMultiMeshFactory Fix a build error when using older versions of GLFW Fix build warnings optimized Fix FindTBB.cmake Fix FindMaya.cmake Fix glViewer support for GLSL compute Fix ptexViewer enable specular pass in both IBL and point lighting Fix Zlib include in ptexViewer Fix ptexViewer shader errors. Fix osdPolySmooth Maya plugin Fix UV merging in osdPolySmooth code example Add cleanup function to osdPolySmooth Maya plugin Fix Maya OsdPolySmooth node component output Fix GLSL array instantiation syntax for glStencilViewer Fix examples to run correctly on high DPI displays with GLFW 3 Release 2.3.4 New Features Adding CPUOMPTBB Context  Controller pairs for CPU evaluation of smooth normals Added adaptiveEvaluator class inspired by Sergeys work in blender OsdUtil Changes Changed the HUD to ignore mouse clicks when not visible. Updates for blender development OsdUtil Add C compatible API to access the adaptiveEvaluator class from non-C OsdUtil Update license headers to apache OsdUtil CMake build improvement  make osd a cmake object library  remove compiling redundancies Improve stringification of shaders  kernels in CMake build Bug Fixes Fixed iOS build Fixed VS2010 warningserrors. Fix OsdCpuEvalLimitKernel Fix maxvalence calculation in FarMeshFactory Fix FarStencilFactory control stencil caching Removing assert for high-valence vertices running off limit tangent pre-computed table. Fix degenerate stencil limit tangent code path. Fix unused variable build warnings gcc 4.8.2 - Fedora 19 Fix build warning from osdutiladaptiveEvaluator.cpp Release 2.3.3 Changes Modify Far remapping of singular vertices to point to their source vertex. Refactoring Ptex Mipmap and Analytic Displacement code Adding some documentation for Chaikin crease rule Misc. improvements to PxOsdUtilsMesh Adding recommended isolation output to OsdPolySmooth node Bug Fixes Adding an error check on version parsing of main CMakeLists Fix regex in FindMaya.cmake that breaks with recent versions of Maya Fix crashes induced by typeid Fixed VS2010 build warning Fix build break in hbr_regression Fix incorrect capitalization in GL ptexViewer shader.glsl Fix OSX build add stdlib.h include Release 2.3.2 New Features Adding control cage drawing to ptexViewer Adding Maya osdPolySmooth plugin into OpenSubdiv examples. Changes Removing some glGetError checks that are causing problems for Autodesk D3D11DrawRegistry returns the common shader config for all non-tess patcharrays. Updates to simple cpu osdutil classes Bug Fixes Fix Hbr Chaikin crease rule Fix Chaikin tag parsing Fix return value of allocate function for OsdCPUGLVertxBuffer Fixed GLSL shader portability. Fix FindGLFW.cmake for GLFW 3.03 on OSX Fixed compiler warnings. Fixed VS2010 build errors Fixed WIN32 build error when no DXSDK installed. Fix OSX build stdlib.h needs to be included in glPtexMipmapTexture.h Fix for crash in new meshrefiner code in OsdUtil Release 2.3.1 New Features Add DX11 version of ptex mipmap loader Add DX11 ptex viewer work in progress Add DX11 fractional partitioning, normal derivatives computation Add memory usage controls to Ptex loader Add face-varying boundary interpolation parsing to shape_utils Add simple HbrMesh and FarMesh wrapper classes to osdutil Changes Amend language of attribution file NOTICE.txt Optimize a bit of ptex mipmap lookup. Show ptex memory usage in GL and DX11 ptexViewers Improve ptex guttering Addding some video links to our collection of external resources Bug Fixes Fix edge-only face-varying interpolation Fix Far to handle disconnected vertices in an Hbr mesh Fixed ptex cache resource release sequence Fix build symbol conflict in Far Fix patch parambuffer generation in OsdD3D11DrawContext Fix a minor osdutil build warning seen with gcc 4.8.1 Fix VS2010 build errors Release 2.3.0 New Features Added Analytical displacement mapping Analytic Displacement Mapping using Hardware Tessellation Niessner and Loop TOG 2013 Added a new ptex mipmap loader Added face varying macros for loop subdivision Added the uvViewer example to see how face varying interpolation rule works Added a slider component and cleanup hud code. Changes Adding license  attribution files, improved language of the code headers Install documentation into the Filesystem Hierarchy Standard location Set GLFW_OPENGL_FORWARD_COMPAT on Mac OS to make samples work on that platform Added surface normal mode  mipmap to ptxViewer Bug Fixes Fix a bug of bad fvar splicing for loop surface. Fix incorrect bilinear limit tangents in FarStencilTablesFactory Fix boundary interpolation rules doc Added an error check on updating cuda buffer Fix face varying rendering on loop surface Fixed glBatchViewer build for GLFW 2.x Expand search paths for FindGLFW.cmake for Debian and other Linux architectures Fix CMake executable builds for ICC Fix bhr baseline regression, so reference files are real OBJs Fixed clKernelBundle.cpp to build on Android. Fix misc build warings Release 2.2.0 New Features Added subdivision stencil functionality Far  OsdEval Bug Fixes Fix D3D11DrawContext to check for NULL pointers Fix cpuEvalLimitController crash bug Fixed search path suffixes for ICC libs Fixed invalid initialization of glslTransformFeedback kernel. Release 2.1.0 New Features Added TBB Compute back-end on Linux contribution from Sheng Fu Added support for ICC compiler still Beta Changes Added constructor to OsdMesh with a FarMesh  as input Modify CMake to name and sym-link DSOs based on Linux ABI versioning spec Added command line input to DX11 viewer FarMultiMesh can splice uniform and adaptive meshes together. Bug Fixes Fix FarMultiMesh splicing Removed unnecessary cudaThreadSynchronize calls. Fix glViewer overlapping HUD menus Fix facevarying rendering in glBatchViewer Fix build of GLSL transform feedback kernels Fix Getting Started documentation Release 2.0.1 New Features New CLA files to reflect Apache 2.0 licensing Changes Move all public headers to includeopensubdiv... Adding Osd documentation based on Siggraph slides Bug Fixes Fix incorrect transition pattern 3 in GLSL  HLSL shaders Fix CMake build to not link GPU-based libraries into libosdCPU Fix support for GLEW on OSX Fix GLFW Xrandr  xf86vmode dependency paths for X11 based systems Fix HUD display overlaps in code examples Fix FindGLEW.cmake to be aware of multiarch on linux systems Fix some hard-coded include paths in CMake build Release 2.0.0 New Features New CMake build flags NO_LIB, NO_CUDA, NO_PYTHON Changes OpenSubdiv is now under Apache 2.0 license HbrHalfedge and HbrFVarData copy constructors are now private Documentation style matched to graphics.pixar.com  new content Add an animation freeze button to ptexViewer Variable name changes for better readability across all example shader code Bug Fixes Fix incorrect patch generation for patches with 2 non-consecutive boundary edges Fix undefined gl_PrimitiveID shader build errors Fix for shader macro OSD_DISPLACEMENT_CALLBACK Fix out-of-bounds stdvector access in FarPatchTablesFactory Release 1.2.4 New Features Adding support for fractional tessellation of patches Adding a much needed API documention system based on Docutils RST markup Adding support for face-varying interpolation in GLSL APIs Adding varying data buffers to OsdMesh Adding accessors to the vertex buffers in OsdGlMesh Adding face-varying data to regression shapes Changes Cleanup of common bicubic patch shader code GLSL  HLSL for portability ATI  OSX drivers Bug Fixes Fix FarVertexEditTablesFactory to insert properly vertex edit batches fixes incorrect hierarchical hole in regression shape Fix FarPatchMap quadtree to not drop top-level non-quad faces Fix Gregory patches bug with incorrect max-valence Fix FarPatchTablesGetNumFaces and FarPatchTablesGetFaceVertices functions to return the correct values Fix face indexing GLSL code ptex works on non-quads again Fix face-varying data splicing in FarMultiMeshFactory Fix ptex face indexing in FarMultiMeshFactory Fix glew include to not break builds Fix Clang  ICC build failures with FarPatchTables Fix build and example code to work with GFLW 3.0 Fix cmake to have ptex dynamically linked in OSX Release 1.2.3 New Features Adding Varying and Face-Varying data interpolation to EvalLimit Changes EvalLimit API refactor  the EvalContext now has dedicated structs to track all the vertex, varying and face-varying data streams. Also renamed some buffers into tables to maintain code consistency EvalLimit optimization  switch serial indexing to a quad-tree based search Bug Fixes Face-varying data bug fixes  making sure the data is carried around appropriately Fixes for OpenCL use with the new batching APIs GLSL general shader code cleanup  fixes for better portability GLSL Tranform Feedback initialization fix Critical fix for FarMultiMesh batching indexing was incorrect Fix osdutil CL implementation protect includes on systems with no OpenCL SDK installed Fix face-varying interpolation on adaptive patches FarPatchTables  fix IsFeatureAdaptive to return the correct answer Fix Far factories to handle the absence of face-varying data correctly. Many GLSL shader code style fixes which should help with ATI  OSX shader compiling Release 1.2.2 New Features Introducing the EvalLimit API  the Eval module aims at providing support for computational tasks that are not related to drawing the surfaces. The EvalLimit sub-module provides an API that enables client code to evaluate primitive variables on the limit surface. OsdxxxComputeController  minor optimization. Added early exit to Refine method to avoid unnecessary interop. Changes OsdGLDawContext  minor API change. Protecting some member variables and adding const accessors OsdError  minor API refactor, added Warning functions. Bug Fixes Fix Ptex bug  prevent corner texel guttering code to from going into infinite loops Adding the ability for a FarMeshFactory to construct patchTables starting from firstLevel in uniform subdivision mode Consolidating the color coding of bicubic patch types through all our our code examples this is used mostly as a debugging tool Fixing some MSVC build warnings Update to the outdated README.md Release 1.2.1 New Features Added CUDA runtime error checking Release 1.2.0 Changes Major Far refactor around patchTables to introduce the draw batching API Renaming osd_util to osdutil Bug Fixes Fix GLSL transform feedback initialization bug in ptexViewer Minor bug  typo fixes Release 1.1.0 New Features release initiated because of the switch to Git Flow Release 1.0.0 Oringal release Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n-        \"tags\": \"\",\n-        \"loc\": \"release_notes_2x.html\"\n-    }, {\n-        \"title\": \"far_tutorial_4_2.cpp\",\n-        \"text\": \"far_tutorial_4_2.cpp far_tutorial_4_2.cpp 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE httpsgithub.comPixarAnimationStudiosOpenSubdivblobreleasetutorialsfartutorial_4_2far_tutorial_4_2.cpp ------------------------------------------------------------------------------  Tutorial description   This tutorial shows how to create and manipulate both vertex and varying  FarStencilTable to interpolate 2 primvar data buffers vertex positions and  vertex colors.  include opensubdivfartopologyDescriptor.h include opensubdivfarstencilTable.h include opensubdivfarstencilTableFactory.h include cstdio include cstring ------------------------------------------------------------------------------  Vertex container implementation.  struct Vertex   Minimal required interface ---------------------- Vertex    Vertex  Vertex const  src   _data  0   src . _data  0  _data  1   src . _data  1  _data  2   src . _data  2   void Clear  void   0   _data  0   _data  1   _data  2   0.0f   void AddWithWeight  Vertex const  src , float weight   _data  0   weight  src . _data  0  _data  1   weight  src . _data  1  _data  2   weight  src . _data  2    Public interface ------------------------------------ float const  GetData  const  return _data   private  float _data  3   ------------------------------------------------------------------------------  Cube geometry from catmark_cube.h static float g_verts  24    -0.5f , -0.5f , 0.5f , 0.5f , -0.5f , 0.5f , -0.5f , 0.5f , 0.5f , 0.5f , 0.5f , 0.5f , -0.5f , 0.5f , -0.5f , 0.5f , 0.5f , -0.5f , -0.5f , -0.5f , -0.5f , 0.5f , -0.5f , -0.5f   Per-vertex RGB color data static float g_colors  24    1.0f , 0.0f , 0.5f , 0.0f , 1.0f , 0.0f , 0.0f , 0.0f , 1.0f , 1.0f , 1.0f , 1.0f , 1.0f , 1.0f , 0.0f , 0.0f , 1.0f , 1.0f , 1.0f , 0.0f , 1.0f , 0.0f , 0.0f , 0.0f  static int g_nverts  8 , g_nfaces  6  static int g_vertsperface  6    4 , 4 , 4 , 4 , 4 , 4  static int g_vertIndices  24    0 , 1 , 3 , 2 , 2 , 3 , 5 , 4 , 4 , 5 , 7 , 6 , 6 , 7 , 1 , 0 , 1 , 7 , 5 , 3 , 6 , 0 , 2 , 4  using namespace OpenSubdiv  static Far  TopologyRefiner  createTopologyRefiner  ------------------------------------------------------------------------------ int main  int , char     Generate a FarTopologyRefiner see tutorial_1_1 for details. Far  TopologyRefiner  refiner  createTopologyRefiner   Uniformly refine the topology up to maxlevel. int maxlevel  4  refiner - RefineUniform  Far  TopologyRefiner  UniformOptions  maxlevel  int nverts  refiner - GetLevel  maxlevel . GetNumVertices   Use the FarStencilTable factory to create discrete stencil table Far  StencilTableFactory  Options options  options . generateIntermediateLevels  false   only the highest refinement level. options . generateOffsets  true    Vertex primvar data   Create stencils table for vertex interpolation options . interpolationMode  Far  StencilTableFactory  INTERPOLATE_VERTEX  Far  StencilTable const  vertexStencils  Far  StencilTableFactory  Create   refiner , options  assert  nverts  vertexStencils - GetNumStencils   Allocate vertex primvar buffer 1 stencil for each vertex std  vector  Vertex  vertexBuffer  vertexStencils - GetNumStencils   Use the cube vertex positions as vertex primvar data Vertex  vertexCVs  reinterpret_cast  Vertex   g_verts    Varying primvar data   Create stencils table for varying interpolation options . interpolationMode  Far  StencilTableFactory  INTERPOLATE_VARYING  Far  StencilTable const  varyingStencils  Far  StencilTableFactory  Create   refiner , options  assert  nverts  varyingStencils - GetNumStencils   Allocate varying primvar buffer 1 stencil for each vertex std  vector  Vertex  varyingBuffer  varyingStencils - GetNumStencils   Use per-vertex array of RGB colors as varying primvar data Vertex  varyingCVs  reinterpret_cast  Vertex   g_colors  delete refiner    Apply stencils in frame loop    This section would be applied every frame after control vertices have  been moved.  Apply stencils on the control vertex data to update the primvar data  of the refined vertices. vertexStencils - UpdateValues  vertexCVs ,  vertexBuffer  0  varyingStencils - UpdateValues  varyingCVs ,  varyingBuffer  0     Visualization with Maya  print a MEL script that generates particles  at the location of the refined vertices printf  particle   for  int vert  0  vert   int  nverts   vert   float const  pos  vertexBuffer  vert . GetData  printf  -p f f f n  , pos  0 , pos  1 , pos  2   printf  -c 1 n    Set particle point size 20 -- very large printf  addAttr -is true -ln  pointSize  -at long -dv 20 particleShape1 n    Add per-particle color attribute rgbPP printf  addAttr -ln  rgbPP  -dt vectorArray particleShape1 n    Set per-particle color values from our varying primvar data printf  setAttr  particleShape1.rgbPP  -type  vectorArray  d  , nverts  for  int vert  0  vert  nverts   vert   float const  color  varyingBuffer  vert . GetData  printf  f f f n  , color  0 , color  1 , color  2   printf   n    delete vertexStencils  delete varyingStencils  return EXIT_SUCCESS   ------------------------------------------------------------------------------ static Far  TopologyRefiner  createTopologyRefiner    Populate a topology descriptor with our raw data. typedef Far  TopologyDescriptor Descriptor  Sdc  SchemeType type  OpenSubdiv  Sdc  SCHEME_CATMARK  Sdc  Options options  options . SetVtxBoundaryInterpolation  Sdc  Options  VTX_BOUNDARY_EDGE_ONLY  Descriptor desc  desc . numVertices  g_nverts  desc . numFaces  g_nfaces  desc . numVertsPerFace  g_vertsperface  desc . vertIndicesPerFace  g_vertIndices   Instantiate a FarTopologyRefiner from the descriptor. Far  TopologyRefiner  refiner  Far  TopologyRefinerFactory  Descriptor  Create  desc , Far  TopologyRefinerFactory  Descriptor  Options  type , options  return refiner   ------------------------------------------------------------------------------ Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n-        \"tags\": \"\",\n-        \"loc\": \"far_tutorial_4_2.html\"\n-    }, {\n-        \"title\": \"Contributing to OpenSubdiv\",\n-        \"text\": \"Contributing to OpenSubdiv Contributing to OpenSubdiv 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE Contributor License Agreement Understand Git Recommended Git Workflow Sending a Pull Request Contributor License Agreement In order for us to accept code submissions merge git pull-requests, contributors need to sign the Contributor License Agreement CLA. There are two CLAs, one for individuals and one for corporations. As for the end-user license, both are based on Apache. They are found in the code repository  individual form , corporate form . Please email the signed CLA to opensubdiv-clapixar.com . Understand Git First, you should familiarize yourself with the Git data model and commands. For small changes you may not need to understand Git deeply, but for larger changes or working with the codebase over a long period of time, it becomes critical to understand more of whats going on under the hood. There are many free resources on the internet, one which weve found useful is the following e-book httpsgithub.compluralsightgit-internals-pdfreleases Recommended Git Workflow Once you have a local development tree cloned and working, you can start making changes. You will need to integrate changes from the source tree as you work the following outlines the workflow used by core OpenSubdiv engineers at Pixar and DreamWorks Fork the repository into your own local copy. This can be done via the GitHub website using the fork button. Clone your fork locally git clone your_fork_url OpenSubdiv.your_name e.g. git clone httpsgithub.comyourusernameOpenSubdiv.git OpenSubdiv.yourusername Setup two remotes, origin and upstream . Origin will be setup as a result of cloning your remote repository, but upstream must be setup manually git remote add upstream httpsgithub.comPixarAnimationStudiosOpenSubdiv.git Verify your remotes are setup correctly git remote -v Which should look something like origin httpsgithub.comyourusernameOpenSubdiv.git fetch origin httpsgithub.comyourusernameOpenSubdiv.git push upstream httpsgithub.comPixarAnimationStudiosOpenSubdiv.git fetch upstream httpsgithub.comPixarAnimationStudiosOpenSubdiv.git push Finally, fetch the upstream content this is required for the next step git fetch upstream Setup a new branch for each change. Working with branches in Git is its greatest pleasure, we strongly suggest setting up a new branch for each change which you plan to pull-request. All work is done in the dev branch, so be sure to keep your change in sync with this upstream branch. To begin, start your new branch from the dev branch git checkout -b dev-feature upstreamdev As you are working on your feature, new changes will be merged into the upstream repository, to sync these changes down and preserve your local edits, you can continually rebase your local work git pull --rebase upstream dev Notice the --rebase option here. It updates the current branch to the upstreamdev branch and rebases all edits so they are at the head of your local feature branch. Alternatively, you can rebase all your work at once when your feature is complete. Sending a Pull Request First, rebase and squash your changes appropriately to produce a clean set of changes at the head of your tree. We require changes to be grouped locally to ensure that rolling back changes can be done easily. If youve followed the steps above, your pending change should already be queued up as required. If you have not, you may need to rebase and squash changes at this point. Once the change is clean, push your changes to origin and go to the GitHub website to submit your pull request. Be sure to submit your request against the dev branch. Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"title\": \"Overview of Release 3.4\",\n+        \"text\": \"Overview of Release 3.4 Overview of Release 3.4 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE New Features Triangular Patches for Loop Subdivision Major Improvements to Introductory Documentation Sparse Patch Tables Support for Double Precision in Far API Additions Far extensions for triangular patches Construction and refinement of topology Construction and interface of FarPatchTable Construction and use of Far stencil tables Far class templates for double precision Far member functions converted to templates for double precision OsdMeshBits OsdPatchArray Osd extensions for patch evaluation common to all shaders Osd extensions for patch tessellation common to all shaders Other Changes Improvements Bug Fixes New Features Triangular Patches for Loop Subdivision Support for the drawing and evaluation of Loop subdivision meshes with triangular patches was added. This includes the full set of Far and Osd interfaces for both evaluation and drawing. The feature set supported for Loop subdivision now matches that of Catmark, including creases, face-varying patches, non-manifold topology, etc. The long standing requirement that Loop meshes be purely triangular remains, as Loop subdivision is not defined for non-triangular faces. And as is the case with the use of the Catmark scheme, application of Loop subdivision to dense, poorly modeled meshes may lead to unexpectedly poor performance andor surface quality. The patch representation used for Loop subdivision is intended to exactly match the underlying limit surface where regular, and so uses quartic triangular Box-splines. This is in contrast to approaches that use simpler patches to approximate the Loop limit surface everywhere. As with Catmark, Gregory patches are used to approximate irregular areas. Though other choices are available that compromise surface quality in favor of improved performance, they may be less effective with Loop than they are with Catmark. Major Improvements to Introductory Documentation A significant rewrite of the Subdivision Surfaces page is included in this release. The new documentation emphasizes the piecewise parametric surface nature of subdivision surfaces and the implications of supporting arbitary topology . As a true surface primitive, the distinction between the control points and the limit surface and the corresponding operations of subdivision and tessellation that are applied to them is made clear. Sparse Patch Tables Interfaces in Far for the construction of PatchTables and the required adaptive refinement have been extended to apply to an arbitrary subset of faces. This allows patches for either large meshes or meshes that may otherwise benefit from some kind of partioning e.g. areas of static and dynamic topology to be managed in an arbitrary number of groups. In the extreme, a PatchTable forming the tree of patches for a single base face can be constructed. Client data buffers for the base mesh do not need to be partitioned and base mesh topology can be shared by multiple instances of FarTopologyRefiner used to create corresponding instances of FarPatchTables. See the new Far tutorial 5.2 for a simple example. Support for Double Precision in Far Classes and interfaces in Far have been adapted to allow support for double precision via templates parameterized for float or double. Class templates for major classes such as FarStencilTable have been introduced and the original classes preserved for compatibility. Other classes such as FarPatchTable have had methods overloaded or replaced with template functions to support both single and double precision. Internally, all use of floating point constants and math library functions has been adapted to maximize accuracy appropriate to the precision of the template instance. Interfaces in Osd have not been extended. The extensions in Far provide the basis for extensions in Osd, but demand is limited. For those benefiting from such Osd extensions, contributions are welcomed. See the revised Far tutorial 5.1 that constructs a FarPatchTable for a simple example. API Additions See associated Doxygen for full details. Far extensions for triangular patches enum PatchDescriptorTypeGREGORY_TRIANGLE PatchParamNormalizeTriangle PatchParamUnnormalizeTriangle PatchParamIsTriangleRotated Construction and refinement of topology overloaded TopologyRefinerFactoryCreate extensions to TopologyRefinerRefineAdaptive Construction and interface of FarPatchTable overloaded PatchTableFactoryCreate PatchTableFactoryGetRefineAdaptiveOptions member PatchTableFactoryOptionsincludeBaseLevelIndices member PatchTableFactoryOptionsincludeFVarBaseLevelIndices member PatchTableFactoryOptionsgenerateVaryingTables member PatchTableFactoryOptionsgenerateVaryingLocalPoints member PatchTableFactoryOptionssetPatchPrecisionDouble member PatchTableFactoryOptionssetFVarPatchPrecisionDouble PatchTableGetFVarPatchDescriptorRegular PatchTableGetFVarPatchDescriptorIrregular PatchTableGetFVarValueStride Construction and use of Far stencil tables overloaded StencilTableUpdateValues enum LimitStencilTableFactoryMode member LimitStencilTableFactoryOptionsinterpolationMode member LimitStencilTableFactoryOptionsfvarChannel Far class templates for double precision class StencilReal class StencilTableReal class StencilTableFactoryReal class LimitStencilReal class LimitStencilTableReal class LimitStencilTableFactoryReal class PrimvarRefinerReal Far member functions converted to templates for double precision PatchParamNormalize PatchParamUnnormalize PatchTableEvaluateBasis PatchTableEvaluateBasisVarying PatchTableEvaluateBasisFaceVarying PatchTableGetLocalPointStencilTable PatchTableGetLocalPointVaryingStencilTable PatchTableGetLocalPointFaceVaryingStencilTable PatchMapFindPatch OsdMeshBits enumeration MeshEndCapBilinearBasis OsdPatchArray GetDescriptorRegular GetDescriptorIrregular GetPatchTyperRegular GetPatchTyperIrregular GetStride Osd extensions for patch evaluation common to all shaders struct OsdPatchArray and OsdPatchArrayInit struct OsdPatchCoord and OsdPatchCoordInit struct OsdPatchParam and OsdPatchParamInit OsdPatchParamGetFaceId OsdPatchParamGetU OsdPatchParamGetV OsdPatchParamGetTransition OsdPatchParamGetBoundary OsdPatchParamGetNonQuadRoot OsdPatchParamGetDepth OsdPatchParamGetParamFraction OsdPatchParamIsRegular OsdPatchParamIsTriangleRotated OsdPatchParamNormalize OsdPatchParamUnnormalize OsdPatchParamNormalizeTriangle OsdPatchParamUnnormalizeTriangle OsdEvaluatePatchBasisNormalized OsdEvaluatePatchBasis Osd extensions for patch tessellation common to all shaders OsdInterpolatePatchCoordTriangle OsdComputePerPatchVertexBoxSplineTriangle OsdEvalPatchBezierTriangle OsdEvalPatchGregoryTriangle OsdGetTessLevelsUniformTriangle OsdEvalPatchBezierTessLevels OsdEvalPatchBezierTriangleTessLevels OsdGetTessParameterizationTriangle Other Changes Improvements Added new build script GitHub 1068 Added support for newer DirectX SDKs GitHub 1066 Patch arrays extended to support combined regular and irregular types GitHub 995 FarPatchTables and adaptive refinement supported for Bilinear scheme GitHub 1035 New FarPatchTableFactory method to determine adaptive refinement options GitHub 1047 New FarPatchTableFactory options to align primvar buffers of uniform tables GitHub 986 FarStencilTableUpdateValues overloaded to support separate base buffer GitHub 1011 FarLimitStencilTableFactory updated to create face-varying tables GitHub 1012 Regular patches on boundaries no longer require additional isolation GitHub 1025 Inclusion of OpenSubdiv header files in source code now consistent GitHub 767 Re-organization of and additions to Far tutorials GitHub 1083 Examples now use common command-line conventions and parsing GitHub 1056 Bug Fixes Fixed FarPrimvarRefiner internal limitFVar prototype GitHub 979 Fixed FarStencilTable append when base StencilTable empty GitHub 982 Patches around non-manifold vertices now free of cracks GitHub 1013 Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n-        \"loc\": \"contributing.html\"\n+        \"loc\": \"release_34.html\"\n     }, {\n-        \"title\": \"hbr_tutorial_2.cpp\",\n-        \"text\": \"hbr_tutorial_2.cpp hbr_tutorial_2.cpp 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE httpsgithub.comPixarAnimationStudiosOpenSubdivblobreleasetutorialshbrtutorial_2hbr_tutorial_2.cpp ------------------------------------------------------------------------------  Tutorial description   This tutorial shows how to subdivide uniformly a simple Hbr mesh. We are  building upon previous tutorials and assuming a fully instantiated mesh  we start with an HbrMesh pointer initialized from the same pyramid shape  used in hbr_tutorial_0.   We then apply the Refine function sequentially to all the faces in the  mesh to generate several levels of uniform subdivision. The resulting data  is then dumped to the terminal in Wavefront OBJ format for inspection.  include opensubdivhbrmesh.h include opensubdivhbrcatmark.h include cassert include cstdio ------------------------------------------------------------------------------   For this tutorial, we have to flesh out the Vertex class further. Note that now  the copy constructor, Clear and AddwithWeight methods have been  implemented to interpolate our float3 position data.   This vertex specialization pattern leaves client-code free to implement  arbitrary vertex primvar data schemes or none at all to conserve efficiency  struct Vertex   Hbr minimal required interface ---------------------- Vertex    Vertex  int i    Vertex  Vertex const  src   _position  0   src . _position  0  _position  1   src . _position  1  _position  2   src . _position  2   void Clear  void   0   _position  0   _position  1   _position  2   0.0f   void AddWithWeight  Vertex const  src , float weight   _position  0   weight  src . _position  0  _position  1   weight  src . _position  1  _position  2   weight  src . _position  2   void AddVaryingWithWeight  Vertex const  , float     Public interface ------------------------------------ void SetPosition  float x , float y , float z   _position  0   x  _position  1   y  _position  2   z   const float  GetPosition  const  return _position   private  float _position  3   typedef OpenSubdiv  HbrMesh  Vertex  Hmesh  typedef OpenSubdiv  HbrFace  Vertex  Hface  typedef OpenSubdiv  HbrVertex  Vertex  Hvertex  typedef OpenSubdiv  HbrHalfedge  Vertex  Hhalfedge  Hmesh  createMesh  ------------------------------------------------------------------------------ int main  int , char    Hmesh  hmesh  createMesh  int maxlevel  2 ,  2 levels of subdivision firstface  0 ,  marker to the first face index of level 2 firstvertex  0   marker to the first vertex index of level 2  Refine the mesh to maxlevel for  int level  0  level  maxlevel   level    Total number of faces in the mesh, across all levels   Note this function iterates over the list of faces and can be slow int nfaces  hmesh - GetNumFaces  if  level   maxlevel -1    Save our vertex marker firstvertex  hmesh - GetNumVertices    Iterate over the faces of the current level of subdivision for  int face  firstface  face  nfaces   face   Hface  f  hmesh - GetFace  face   Note hole tags would have to be dealt with here. f - Refine    Save our face index marker for the next level firstface  nfaces     Output OBJ of the highest level refined -----------  Print vertex positions int nverts  hmesh - GetNumVertices  for  int vert  firstvertex  vert  nverts   vert   float const  pos  hmesh - GetVertex  vert  - GetData . GetPosition  printf  v f f f n  , pos  0 , pos  1 , pos  2    Print faces for  int face  firstface  face  hmesh - GetNumFaces   face   Hface  f  hmesh - GetFace  face  assert  f - GetNumVertices   4  printf  f   for  int vert  0  vert  4   vert    OBJ uses 1-based arrays printf  d  , f - GetVertex  vert  - GetID  - firstvertex  1   printf   n      ------------------------------------------------------------------------------  Creates an Hbr mesh   see hbr_tutorial_0 and hbr_tutorial_1 for more details  Hmesh  createMesh    Pyramid geometry from catmark_pyramid.h static float verts  5  3    0.0f , 0.0f , 2.0f ,  0.0f , -2.0f , 0.0f ,  2.0f , 0.0f , 0.0f ,  0.0f , 2.0f , 0.0f ,  -2.0f , 0.0f , 0.0f  static int nverts  5 , nfaces  5  static int facenverts  5    3 , 3 , 3 , 3 , 4  static int faceverts  16    0 , 1 , 2 , 0 , 2 , 3 , 0 , 3 , 4 , 0 , 4 , 1 , 4 , 3 , 2 , 1  OpenSubdiv  HbrCatmarkSubdivision  Vertex   catmark  new OpenSubdiv  HbrCatmarkSubdivision  Vertex   Hmesh  hmesh  new Hmesh  catmark   Populate the vertices Vertex v  for  int i  0  i  nverts   i   v . SetPosition  verts  i  0 , verts  i  1 , verts  i  2  hmesh - NewVertex  i , v    Create the topology int  fv  faceverts  for  int i  0  i  nfaces   i   int nv  facenverts  i  bool valid  true  for  int j  0  j  nv  j    Hvertex const  origin  hmesh - GetVertex  fv  j ,  destination  hmesh - GetVertex  fv  j  1   nv  Hhalfedge const  opposite  destination - GetEdge  origin   Make sure that the vertices exist in the mesh if  origin  NULL  destination  NULL   printf   An edge was specified that connected a nonexistent vertex n   valid  false  break    Check for a degenerate edge if  origin  destination   printf   An edge was specified that connected a vertex to itself n   valid  false  break    Check that no more than 2 faces are adjacent to the edge if  opposite  opposite - GetOpposite    printf   A non-manifold edge incident to more than 2 faces was found n   valid  false  break    Check that the edge is unique and oriented properly if  origin - GetEdge  destination   printf   An edge connecting two vertices was specified more than once.  Its likely that an incident face was flipped n   valid  false  break    if  valid   hmesh - NewFace  nv , fv , 0   else  printf   Skipped face d n  , i   fv  nv   hmesh - SetInterpolateBoundaryMethod  Hmesh  k_InterpolateBoundaryEdgeOnly  hmesh - Finish  return hmesh   ------------------------------------------------------------------------------ Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"title\": \"far_tutorial_4_1.cpp\",\n+        \"text\": \"far_tutorial_4_1.cpp far_tutorial_4_1.cpp 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE httpsgithub.comPixarAnimationStudiosOpenSubdivblobreleasetutorialsfartutorial_4_1far_tutorial_4_1.cpp ------------------------------------------------------------------------------  Tutorial description   This tutorial shows how to create and manipulate FarStencilTable. We use  the factorized stencils to interpolate vertex primvar data buffers.  include opensubdivfartopologyDescriptor.h include opensubdivfarstencilTable.h include opensubdivfarstencilTableFactory.h include cstdio include cstring ------------------------------------------------------------------------------  Vertex container implementation.  struct Vertex   Minimal required interface ---------------------- Vertex    Vertex  Vertex const  src   _position  0   src . _position  0  _position  1   src . _position  1  _position  2   src . _position  2   void Clear  void   0   _position  0   _position  1   _position  2   0.0f   void AddWithWeight  Vertex const  src , float weight   _position  0   weight  src . _position  0  _position  1   weight  src . _position  1  _position  2   weight  src . _position  2    Public interface ------------------------------------ void SetPosition  float x , float y , float z   _position  0   x  _position  1   y  _position  2   z   float const  GetPosition  const  return _position   private  float _position  3   ------------------------------------------------------------------------------  Cube geometry from catmark_cube.h static float g_verts  24    -0.5f , -0.5f , 0.5f , 0.5f , -0.5f , 0.5f , -0.5f , 0.5f , 0.5f , 0.5f , 0.5f , 0.5f , -0.5f , 0.5f , -0.5f , 0.5f , 0.5f , -0.5f , -0.5f , -0.5f , -0.5f , 0.5f , -0.5f , -0.5f  static int g_nverts  8 , g_nfaces  6  static int g_vertsperface  6    4 , 4 , 4 , 4 , 4 , 4  static int g_vertIndices  24    0 , 1 , 3 , 2 , 2 , 3 , 5 , 4 , 4 , 5 , 7 , 6 , 6 , 7 , 1 , 0 , 1 , 7 , 5 , 3 , 6 , 0 , 2 , 4  using namespace OpenSubdiv  static Far  TopologyRefiner  createTopologyRefiner  ------------------------------------------------------------------------------ int main  int , char     Generate a FarTopologyRefiner see tutorial_1_1 for details. Far  TopologyRefiner  refiner  createTopologyRefiner   Uniformly refine the topology up to maxlevel. int maxlevel  3  refiner - RefineUniform  Far  TopologyRefiner  UniformOptions  maxlevel   Use the FarStencilTable factory to create discrete stencil table  note we only want stencils for the highest refinement level. Far  StencilTableFactory  Options options  options . generateIntermediateLevels  false  options . generateOffsets  true  Far  StencilTable const  stencilTable  Far  StencilTableFactory  Create   refiner , options   Allocate vertex primvar buffer 1 stencil for each vertex int nstencils  stencilTable - GetNumStencils  std  vector  Vertex  vertexBuffer  nstencils   Quick  dirty re-cast of the primvar data from our cube  this is where you would drive shape deformations every frame Vertex  controlValues  reinterpret_cast  Vertex   g_verts    This section would be applied every frame after control vertices have  been moved.  Apply stencils on the control vertex data to update the primvar data  of the refined vertices. stencilTable - UpdateValues  controlValues ,  vertexBuffer  0     Visualization with Maya  print a MEL script that generates particles  at the location of the refined vertices printf  particle   for  int i  0  i   int  vertexBuffer . size   i   float const  pos  vertexBuffer  i . GetPosition  printf  -p f f f n  , pos  0 , pos  1 , pos  2   printf  -c 1 n    delete refiner  delete stencilTable  return EXIT_SUCCESS   ------------------------------------------------------------------------------ static Far  TopologyRefiner  createTopologyRefiner    Populate a topology descriptor with our raw data. typedef Far  TopologyDescriptor Descriptor  Sdc  SchemeType type  OpenSubdiv  Sdc  SCHEME_CATMARK  Sdc  Options options  options . SetVtxBoundaryInterpolation  Sdc  Options  VTX_BOUNDARY_EDGE_ONLY  Descriptor desc  desc . numVertices  g_nverts  desc . numFaces  g_nfaces  desc . numVertsPerFace  g_vertsperface  desc . vertIndicesPerFace  g_vertIndices   Instantiate a FarTopologyRefiner from the descriptor. return Far  TopologyRefinerFactory  Descriptor  Create  desc , Far  TopologyRefinerFactory  Descriptor  Options  type , options   ------------------------------------------------------------------------------ Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n-        \"loc\": \"hbr_tutorial_2.html\"\n+        \"loc\": \"far_tutorial_4_1.html\"\n     }, {\n-        \"title\": \"bfr_tutorial_1_1.cpp\",\n-        \"text\": \"bfr_tutorial_1_1.cpp bfr_tutorial_1_1.cpp 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE httpsgithub.comPixarAnimationStudiosOpenSubdivblobreleasetutorialsbfrtutorial_1_1bfr_tutorial_1_1.cpp ------------------------------------------------------------------------------  Tutorial description   This tutorial illustrates the use of the SurfaceFactory, Surface  and Parameterization classes for creating and evaluating the limit  surface associated with each base face of a mesh.   Following the creation of a connected mesh for a shape using a  FarTopologyRefiner, as illustrated in Far tutorials, an instance  of a SurfaceFactory is declared to process its faces. Each face of  the mesh is evaluated and tessellated independently with a simple  triangle fan, with results written out in Obj format for inspection.   These classes make it simple to evaluate and tessellate all faces  quads, tris or others while supporting the full set of subdivision  options. While a triangle fan may be a trivial tessellation and so  not very useful later examples using the Tessellation class provide  more useful results with the same simplicity.  include opensubdivfartopologyRefiner.h include opensubdivbfrrefinerSurfaceFactory.h include opensubdivbfrsurface.h include vector include string include cstring include cstdio  Local headers with support for this tutorial in namespace tutorial include .meshLoader.h include .objWriter.h using namespace OpenSubdiv    Simple command line arguments to provide input and run-time options  class Args  public  std  string inputObjFile  std  string outputObjFile  Sdc  SchemeType schemeType  public  Args  int argc , char  argv   inputObjFile , outputObjFile , schemeType  Sdc  SCHEME_CATMARK   for  int i  1  i  argc   i   if  strstr  argv  i , .obj   if  inputObjFile . empty   inputObjFile  std  string  argv  i   else  fprintf  stderr , Warning Extra Obj file s ignored n  , argv  i    else if   strcmp  argv  i , -o   if   i  argc  outputObjFile  std  string  argv  i   else if   strcmp  argv  i , -bilinear   schemeType  Sdc  SCHEME_BILINEAR   else if   strcmp  argv  i , -catmark   schemeType  Sdc  SCHEME_CATMARK   else if   strcmp  argv  i , -loop   schemeType  Sdc  SCHEME_LOOP   else  fprintf  stderr , Warning Unrecognized argument s ignored n  , argv  i     private  Args       The main tessellation function given a mesh and vertex positions,  tessellate each face -- writing results in Obj format.  void tessellateToObj  Far  TopologyRefiner const  meshTopology , std  vector  float  const  meshVertexPositions , Args const  options     Use simpler local type names for the Surface and its factory  typedef Bfr  RefinerSurfaceFactory  SurfaceFactory  typedef Bfr  Surface  float  Surface    Initialize the SurfaceFactory for the given base mesh very low  cost in terms of both time and space and tessellate each face  independently i.e. no shared vertices   Note that the SurfaceFactory is not thread-safe by default due to  use of an internal cache. Creating a separate instance of the  SurfaceFactory for each thread is one way to safely parallelize  this loop. Another preferred is to assign a thread-safe cache  to the single instance.   First declare any evaluation options when initializing though  none are used in this simple case  SurfaceFactory  Options surfaceOptions  SurfaceFactory meshSurfaceFactory  meshTopology , surfaceOptions    The Surface to be constructed and evaluated for each face -- as  well as the intermediate and output data associated with it -- can  be declared in the scope local to each face. But since dynamic  memory is involved with these variables, it is preferred to declare  them outside that loop to preserve and reuse that dynamic memory.  Surface faceSurface  std  vector  float  facePatchPoints  std  vector  float  outCoords  std  vector  float  outPos , outDu , outDv  std  vector  int  outTriangles    Process each face, writing the output of each in Obj format  tutorial  ObjWriter objWriter  options . outputObjFile  int numFaces  meshSurfaceFactory . GetNumFaces  for  int faceIndex  0  faceIndex  numFaces   faceIndex     Initialize the Surface for this face -- if valid skipping  holes and boundary faces in some rare cases  if   meshSurfaceFactory . InitVertexSurface  faceIndex ,  faceSurface   continue     Get the Parameterization of the Surface and use it to identify  coordinates for evaluation -- in this case, at the vertices  and center of the face to create a fan of triangles  Bfr  Parameterization faceParam  faceSurface . GetParameterization  int faceSize  faceParam . GetFaceSize  int numOutCoords  faceSize  1  outCoords . resize  numOutCoords  2  for  int i  0  i  faceSize   i   faceParam . GetVertexCoord  i ,  outCoords  i  2   faceParam . GetCenterCoord   outCoords  faceSize  2    Prepare the patch points for the Surface, then use them to  evaluate output points for all identified coordinates   Resize patch point and output arrays int pointSize  3  facePatchPoints . resize  faceSurface . GetNumPatchPoints   pointSize  outPos . resize  numOutCoords  pointSize  outDu . resize  numOutCoords  pointSize  outDv . resize  numOutCoords  pointSize   Populate patch point and output arrays faceSurface . PreparePatchPoints  meshVertexPositions . data , pointSize , facePatchPoints . data , pointSize  for  int i  0 , j  0  i  numOutCoords   i , j  pointSize   faceSurface . Evaluate   outCoords  i  2 , facePatchPoints . data , pointSize ,  outPos  j ,  outDu  j ,  outDv  j     Identify the faces of the tessellation, i.e. the triangle fan  connecting points at the vertices to the center last point   Note the need to offset vertex indices for the output faces --  using the number of vertices generated prior to this face.  int objVertexIndexOffset  objWriter . GetNumVertices  outTriangles . resize  faceSize  3  int  outTriangle  outTriangles . data  for  int i  0  i  faceSize   i , outTriangle  3   outTriangle  0   objVertexIndexOffset  i  outTriangle  1   objVertexIndexOffset   i  1   faceSize  outTriangle  2   objVertexIndexOffset  faceSize     Write the evaluated points and faces connecting them as Obj  objWriter . WriteGroupName  baseFace_ , faceIndex  objWriter . WriteVertexPositions  outPos  objWriter . WriteVertexNormals  outDu , outDv  objWriter . WriteFaces  outTriangles , 3 , true , false      Load command line arguments, specified or default geometry and process  int main  int argc , char  argv   Args args  argc , argv  Far  TopologyRefiner  meshTopology  0  std  vector  float  meshVtxPositions  std  vector  float  meshFVarUVs  meshTopology  tutorial  createTopologyRefiner  args . inputObjFile , args . schemeType , meshVtxPositions , meshFVarUVs  if  meshTopology  0   return EXIT_FAILURE   tessellateToObj   meshTopology , meshVtxPositions , args  delete meshTopology  return EXIT_SUCCESS   ------------------------------------------------------------------------------ Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"title\": \"Hierarchical Edits\",\n+        \"text\": \"Hierarchical Edits Hierarchical Edits 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE Hierarchical Edits Hierarchical Edits Paths Vertex Edits Edge Edits Face Edits Hierarchical Edits To understand the hierarchical aspect of subdivision, we realize that subdivision itself leads to a natural hierarchy after the first level of subdivision, each face in a subdivision mesh subdivides to four quads in the Catmull-Clark scheme, or four triangles in the Loop scheme. This creates a parent and child relationship between the original face and the resulting four subdivided faces, which in turn leads to a hierarchy of subdivision as each child in turn subdivides. A hierarchical edit is an edit made to any one of the faces, edges, or vertices that arise anywhere during subdivision. Normally these subdivision components inherit values from their parents based on a set of subdivision rules that depend on the subdivision scheme. A hierarchical edit overrides these values. This allows for a compact specification of localized detail on a subdivision surface, without having to express information about the rest of the subdivision surface at the same level of detail. Release Notes 3.0.0 Hierarchical Edits have been marked as extended specification and support for hierarchical features has been removed from the 3.0 release. This decision allows for great simplifications of many areas of the subdivision algorithms. If we can identify legitimate use-cases for hierarchical tags, we will consider re-implementing them in future releases, as time and resources allow. Hierarchical Edits Paths In order to perform a hierarchical edit, we need to be able to name the subdivision component we are interested in, no matter where it may occur in the subdivision hierarchy. This leads us to a hierarchical path specification for faces, since once we have a face we can navigate to an incident edge or vertex by association. We note that in a subdivision mesh, a face always has incident vertices, which are labelled in relation to the face with an integer index starting at zero and in consecutive order according to the usual winding rules for subdivision surfaces. Faces also have incident edges, and these are labelled according to the origin vertex of the edge. In this diagram, the indices of the vertices of the base face are marked in red  so on the left we have an extraordinary Catmull-Clark face with five vertices labeled 0-4  and on the right we have a regular Catmull-Clark face with four vertices labelled 0-3 . The indices of the child faces are blue  note that in both the extraordinary and regular cases, the child faces are indexed the same way, i.e. the sub-face labeled n has one incident vertex that is the result of the subdivision of the parent vertex also labeled n in the parent face. Specifically, we note that the sub-face 1 in both the regular and extraordinary face is nearest to the vertex labelled 1 in the parent. The indices of the vertices of the child faces are labeled green , and this is where the difference lies between the extraordinary and regular case in the extraordinary case, vertex to vertex subdivision always results in a vertex labeled 0 , while in the regular case, vertex to vertex subdivision assigns the same index to the child vertex. Again, specifically, we note that the parent vertex indexed 1 in the extraordinary case has a child vertex 0 , while in the regular case the parent vertex indexed 1 actually has a child vertex that is indexed 1 . Note that this indexing scheme was chosen to maintain the property that the vertex labeled 0 always has the lowest uv parametric value on the face. By appending a vertex index to a face index, we can create a vertex path specification. For example,  655 2 3 0 specifies the 1st. vertex of the 3 rd. child face of the 2 nd. child face of the of the 655 th. face of the subdivision mesh. Vertex Edits Vertex hierarchical edits can modify the value or the sharpness of primitive variables for vertices and sub-vertices anywhere in the subdivision hierarchy. The edits are performed using either an add or a set operator. set indicates the primitive variable value or sharpness is to be set directly to the values specified. add adds a value to the normal result computed via standard subdivision rules. In other words, this operation allows value offsets to be applied to the mesh at any level of the hierarchy. Edge Edits Edge hierarchical edits can only modify the sharpness of primitive variables for edges and sub-edges anywhere in the subdivision hierarchy. Face Edits Face hierarchical edits can modify several properties of faces and sub-faces anywhere in the subdivision hierarchy. Modifiable properties include The set or add operators modify the value of primitive variables associated with faces. The hole operation introduces holes missing faces into the subdivision mesh at any level in the subdivision hierarchy. The faces will be deleted, and none of their children will appear you cannot unhole a face if any ancestor is a hole. This operation takes no float or string arguments. Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n-        \"loc\": \"bfr_tutorial_1_1.html\"\n+        \"loc\": \"hedits.html\"\n     }, {\n         \"title\": \"glViewer\",\n         \"text\": \"glViewer glViewer 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE SYNOPSIS DESCRIPTION OPTIONS SEE ALSO SYNOPSIS glViewer  -f   -yup   -u   -a   -l refinement level   -c animation loops  objfiles  -anim   -catmark   -loop   -bilinear  DESCRIPTION glViewer is a stand-alone application that showcases the application of uniform and feature adaptive subdivision schemes to a collection of geometric shapes. Multiple controls are available to experiment with the algorithms. OPTIONS See the description of the common comand line options for the subset of common options supported here. SEE ALSO Other examples  glViewer , glFVarViewer , glEvalLimit , glStencilViewer , glPtexViewer , glPaintTest , glShareTopology , dxViewer , dxPtexViewer , Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n         \"loc\": \"glviewer.html\"\n     }, {\n-        \"title\": \"Overview of Release 3.1\",\n-        \"text\": \"Overview of Release 3.1 Overview of Release 3.1 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE New Features Bicubic Face-Varying Patches Varying and Face-Varying Evaluation Second Order Derivative Evaluation Separate Levels of Feature Isolation Sharp Patches for Infinitely Sharp Features API Additions OsdCpuEvaluator, GLComputeEvaluator, etc OsdCpuPatchTable, GLPatchTable, etc OsdMeshBits OsdPatchParam OsdGLSLPatchShaderSource, HLSLPatchShaderSource FarLimitStencil FarLimitStencilTable FarLimitStencilTableFactoryOptions FarPatchParam FarPatchTable FarPatchTableFactoryOptions FarTopologyLevel FarTopologyRefinerAdaptiveOptions Other Changes Improvements Bug Fixes New Features Bicubic Face-Varying Patches The motivation for this feature is to improve drawing and evaluation of face-varying primvar values for all face-varying interpolation options . A common use of non-linear face-varying data is to capture a UV projection on the surface. The following example shows a simple shape with the face-varying interpolation option assigned to a non-linear choice to achieve the desired projection in this case FVAR_LINEAR_NONE Linear Face-Varying Patches Bicubic Face-Varying Patches The result on the left shows the old linearly interpolated patches, which ignores any non-linear settings. The result on the right shows the new use of bicubic face-varying patches to accurately interpolate the desired projection. Generation of a full face-varying patch representation can be enabled using a new option in FarPatchTableFactoryOptions. Additionally, topological refinement can be improved to consider fvar channel topology using a new option in FarTopologyRefinerAdaptiveOptions. See the API additions below and their associated Doxygen text for more details. Evaluation of patch basis weights for all patch types as been added to the GPU shader source provided by OsdGLSLPatchShaderSource, and OsdHLSLPatchShaderSource. Use of non-linear face-varying patches increases the storage size of the patch table and may also require additional data access and computation while drawing. Varying and Face-Varying Evaluation This feature extends existing evaluation methods to support evaluation of varying and face-varying primvar data at arbitrary limit surface locations. Varying Primvar Evaluation Face-Varying Primvar Evaluation The image on the left shows evaluation of varying primvar values and the image on the right shows evaluation of face-varying primvar values. The EvaluateBasis API of FarPatchTable has been extended as well as the OSD Evaluator API. Second Order Derivative Evaluation This feature extends the FarLimitStencilTable and FarPatchTable interfaces to support evaluation of 2nd order partial derivatives. The generation of derivative values for FarLimitStencilTable is controlled by new options that can be specified when creating the stencil table. Additionally, the implementation exposes a more accurate method to compute derivatives for Gregory basis patches. This can be enabled using the CMake configuration and compile time definition OPENSUBDIV_GREGORY_EVAL_TRUE_DERIVATIVES. Separate Levels of Feature Isolation The primary motivation for this feature is to reduce the number of patches generated by adaptive refinement when they can be adequately represented at a lower level. A single level of isolation must be as high as the greatest semi-sharp feature to properly resolve the shape of that feature. That high isolation level generates many unnecessary patches for smooth extra-ordinary vertices. In the following example, a single semi-sharp vertex is refined to level 5 Single Isolation Level 5 Primary Level 5, Secondary Level 2 Single isolation to level 5 on the left results in 312 patches. The right shows the semi-sharp feature isolated to 5, but with the new secondary level set to 2, the number of patches is reduced to 123. The second specified level of adaptive refinement is used to halt isolation for features that typically do not require the specified maximum. These include interior and boundary extra-ordinary vertices and those infinitely sharp patches that correspond to boundary extra-ordinary patches. The secondary level is available as a new option in FarTopologyRefinerAdaptiveOptions. Sharp Patches for Infinitely Sharp Features The motivation for sharp patches is to accurately represent the limit surface of infinitely sharp features, which otherwise can only be approximated by very high levels of adaptive refinement, resulting in many unnecessary patches. The true limit surface for regular faces along an infinitely sharp crease is a regular B-Spline patch -- the same as regular faces along a boundary. Similarly, the limit surface for faces around an extra-ordinary vertex on an infinitely sharp crease is the same as that of faces around an extra-ordinary vertex on a boundary. So these patches are identified and isolated to the same degree -- the regular patches as soon as possible, and the irregular patches to the depth specified. Consider the following regressionshapecatmark_cube_creases2 Level 5 without Sharp Patches Level 5 with Sharp Patches Level 2 with Sharp Patches Without use of sharp patches on the left, isolating to level 5 generates 1764 patches and does still not capture the sharp edges. With sharp patches in the center, isolating to the same degree level 5 reduces the number of patches to 96 and captures the sharp edges. The sharp features can be captured at a lower degree with comparable accuracy as illustrated on the right where isolation to level 2 further reduces the number of patches to 42. The use of infinitely sharp patches can be enabled both at a high level as an new option to OsdMesh, or more directly when adaptively refining or construction the patch tables in FarTopologyRefinerAdaptiveOptions and FarPatchTableFactoryOptions. Given the improved accuracy and reduced patches by the use of simple regular patches, we would prefer that this be the default behavior, but it was made an explicit option in order to avoid disrupting existing usage. In a future major release this feature will hopefully be the norm. API Additions See associated Doxygen for full details. OsdCpuEvaluator, GLComputeEvaluator, etc EvalPatchesVarying EvalPatchesFaceVarying OsdCpuPatchTable, GLPatchTable, etc GetFVarPatchArrayBuffer GetFVarPatchIndexBuffer GetFVarPatchIndexSize GetFVarPatchParamBuffer GetFVarPatchParamSize GetNumFVarChannels GetVaryingPatchArrayBuffer GetVaryingPatchIndexBuffer GetVaryingPatchIndexSize OsdMeshBits member MeshFVarAdaptive member MeshUseInfSharpPatch OsdPatchParam IsRegular Unnormalize extensions to Set OsdGLSLPatchShaderSource, HLSLPatchShaderSource GetPatchBasisShaderSource FarLimitStencil GetDuuWeights GetDuvWeights GetDvvWeights extensions to LimitStencil FarLimitStencilTable GetDuuWeights GetDuvWeights GetDvvWeights Update2ndDerivs extensions to LimitStencilTable FarLimitStencilTableFactoryOptions member generate1stDerivatives member generate1stDerivatives extensions to LimitTableStencilFactoryCreate FarPatchParam IsRegular Unnormalize extensions to Set FarPatchTable ComputeLocalPointValuesFaceVarying ComputeLocalPointValuesVarying GetFVarPatchDescriptor GetFVarPatchParam GetNumLocalPointsFaceVarying GetNumLocalPointsVarying GetPatchArrayVaryingVertices GetPatchArrayFVarPatchParam GetPatchArrayFVarValues GetPatchFVarPatchParam GetPatchVaryingVertices GetVaryingPatchDescriptor GetVaryingVertices EvaluateBasisFaceVarying EvaluateBasisVarying extensions to EvaluateBasis FarPatchTableFactoryOptions member useInfSharpPatch member genenerateFVarLegacyLinearPatches FarTopologyLevel DoesEdgeFVarTopologyMatch DoesFaceFVarTopologyMatch DoesVertexFVarTopologyMatch IsEdgeBoundary IsEdgeNonManifold IsVertexBoundary IsVertexNonManifold FarTopologyRefinerAdaptiveOptions member secondaryLevel member useInfSharpPatch member considerFVarChannels Other Changes Improvements Enabled the use of CMakes folder feature Removed the use of iso646 alternative keywords and, or, not, etc. to improve portability Added numerical valued preprocessor directives OPENSUBDIV_VERSION_MAJOR, etc. to opensubdivversion.h Improved documentation for FarPatchParam and added Unnormalize to complement Normalize Added additional topology queries to FarTopologyLevel Updated glFVarViewer and glEvalLimit viewer to make use of bicubic face-varying patches Updated glViewer and dxViewer to add a toggle for InfSharpPatch Updated dxPtexViewer for improved feature parity with glPtexViewer Improved far_regression to exercise shapes independent of Hbr compatibility Added support for Appveyor continuous integration testing Removed cmakeFindIlmBase Removed mayaPolySmooth example Bug Fixes Fixed Ptex version parsing and compatibility issues Fixed compatibility issues with VS2015 Fixed bug interpolating face-varying data with Bilinear scheme Fixed bug with refinement using Chaikin creasing Fixed bugs with HUD sliders in the example viewers Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n-        \"tags\": \"\",\n-        \"loc\": \"release_31.html\"\n-    }, {\n-        \"title\": \"3.0 - 3.6 Release Notes\",\n-        \"text\": \"3.0 - 3.6 Release Notes 3.0 - 3.6 Release Notes 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE Release 3.6 Release 3.6.0 - Sep 2023 Release 3.5 Release 3.5.1 - July 2023 Release 3.5.0 - Sep 2022 Release 3.4 Release 3.4.4 - Feb 2021 Release 3.4.3 - Apr 2020 Release 3.4.0 - Jun 2019 Release 3.3 Release 3.3.3 - Jul 2018 Release 3.3.2 - Jun 2018 Release 3.3.1 - Feb 1018 Release 3.3.0 - Aug 2017 Release 3.2 Release 3.2.0 - Feb 2017 Release 3.1 Release 3.1.1 - Jan 2017 Release 3.1.0 - Oct 2016 Release 3.0 Release 3.0.5 - Mar 2016 Release 3.0.4 - Feb 2016 Release 3.0.3 - Oct 2015 Release 3.0.2 - Aug 2015 Release 3.0.1 - Aug 2015 Release 3.0.0 - Jun 2015 Release 3.0.0 RC2 Release 3.0.0 RC1 Previous 2.x Release Notes Release 3.6 Release 3.6.0 - Sep 2023 Release 3.6.0 is a significant release with new features, several configuration improvements, and bug fixes. For more information on the following, see Release 3.6 Changes Updated Osd patch drawing shader source to exclude legacy shader constructs to improve compatibility with Vulkan, DX12, etc. GitHub 1320 Installed Osd patch evaluation headers to allow use from client shaders and compute kernels GitHub 1321 Updated CMake build to locate TBB using TBBs CMake config in order to support oneTBB GitHub 1319 Updated CMake FindOpenCL module to support parsing version information from recent OpenCL headers GitHub 1322 Removed obsolete .travis.yml GitHub 1324 Bug Fixes Fixed inconsistent warning levels for MSVC builds when using Ninja GitHub 1318 Fixed documentation build errors when using Ninja GitHub 1323 Fixed build errors resulting from oneTBB API changes GitHub 1317 Release 3.5 Release 3.5.1 - July 2023 Release 3.5.1 is a minor release including bug fixes and configuration improvements. Changes Updated CMake to set fallback CMAKE_CXX_STANDARD to C14 GitHub 1276 Updated CMake with OpenGL import targets to avoid link errors GitHub 1277 Updated CMake to set gpu architecture fallback only for older CUDA versions GitHub 965 1299 Updated CMake to use append for CMAKE_MODULE_PATH GitHub 1296 Fixed interface includes for CMake config GitHub 1278 Fixed warnings with newer and stricter use of Clang GitHub 1275 1289 1290 Fixed potential float constant cast errors for OpenCL GitHub 1285 Fixed generation of Apple Frameworks with no OSD_GPU targets enabled GitHub 1224 1236 Bug Fixes Fixed BfrSurface construction bug for rare topological case GitHub 1301 Fixed CUDA example dependencies with GLX on Linux GitHub 1294 Release 3.5.0 - Sep 2022 Release 3.5.0 is a significant release with new features, several configuration improvements, and a few other improvements and bug fixes. For more information on the following, see Release 3.5 Deprecation Announcements Hbr is deprecated and will be removed from subsequent releases New Features Simplified Surface Evaluation Bfr Tessellation Patterns Bfr Changes Suppression of GCC compiler warnings GitHub 1253, 1254, 1270 Additional methods for FarTopologyLevel GitHub 1227, 1255 Improved mixed partial derivative at Gregory patch corners GitHub 1252 Minor improvements to Far tutorials GitHub 1226, 1241 Added CMake config GitHub 1242 Updated CMake minimum version to 3.12 GitHub 1237, 1261 Updated documentation build scripts for Python 3 1265, 1266 Updated stringify build tool for improved cross compilation support GitHub 1267 Added NO_MACOS_FRAMEWORKS build option GitHub 1238 Updated Azure pipelines agents for Unbuntu and macOS GitHub 1247, 1256 Removed obsolete AppVeyor and Travis CI scripts GitHub 1259 Bug Fixes Cache active program for OsdGLComputeEvaluator GitHub 1244 Fixed member initialization warnings in OsdD3D11ComputeEvaluator GitHub 1239 Fixed GLSL shader source to remove storage qualifiers from struct members GitHub 1271 Fixed use of CMake variables for Apple builds GitHub 1235 Fixed build errors when using OpenGL without GLFW GitHub 1257 Fixed links to embedded videos GitHub 1231 Release 3.4 Release 3.4.4 - Feb 2021 Release 3.4.4 is a minor release including bug fixes and configuration improvements Changes The master branch on GitHub has been renamed release GitHub 1218 1219 The CMake configuration has been updated to allow use as a sub-project GitHub 1206 Removed obsolete references to hbr from examplesfarViewer GitHub 1217 Bug Fixes Fixed bug with sparse PatchTables and irregular face-varying seams GitHub 1203 Fixed loss of precision when using double precision stencil tables GitHub 1207 Fixed reset of FarTopologyRefinerGetMaxLevel after call to Unrefine GitHub 1208 Fixed linking with -ldl on unix systems GitHub 1196 Fixed naming and installation of macOS frameworks GitHub 1194 1201 Fixed GL version and extension processing and dynamic loading on macOS GitHub 1216 Fixed FindDocutils.cmake to be more robust GitHub 1213 1220 Fixed errors using build_scriptsbuild_osd.py with Python3 GitHub 1206 Release 3.4.3 - Apr 2020 Release 3.4.3 is a minor release including bug fixes and configuration improvements Changes GLEW is no longer required by default GitHub 1183 1184 Removed false Ptex link dependency from libosdCPU GitHub 1174 Removed false GLFW link dependency from DX11 and Metal examples GitHub 1178 Removed link dependency on unused TBB libraries GitHub 1064 Added option to disable building of dynamic shared libraries GitHub 1169 Added new tutorial for FarLimitStencilTable GitHub 1176 Updated use of EXT_direct_state_access to ARB_direct_state_access GitHub 1184 Fixed C strict aliasing warnings GitHub 1182 Fixed MSVC warnings in example code GitHub 1158 1172 Fixed compatibility with Visual Studio 2019 GitHub 1173 1189 Fixed CMake CMP0054 warnings GitHub 1180 Added prefix to OpenSubdiv CMake macros GitHub 1157 Moved utilities in examplescommon to regressioncommon GitHub 1167 Minor fixes to Far tutorials GitHub 1175 1177 Switched to Azure Pipelines for continuous integration testing instead of Travis-CI and AppVeyor GitHub 1168 1190 Bug Fixes Fixed selective boundary interpolation for case SdcOptionsVTX_BOUNDARY_NONE GitHub 1170 1171 Fixed static library linking to address missing symbols GitHub 1192 Additional fixes for dynamic and static linking GitHub 1193 Release 3.4.0 - Jun 2019 Release 3.4.0 is a significant release with several new features, bug fixes, and general code and configuration improvements. For more information on the following, please see Release 3.4 New Features Triangular Patches for Loop subdivision Improvements to Introductory Documentation Sparse Patch Tables and Adaptive Refinement Full Support for Double Precision in Far Changes Added new build script GitHub 1068 Added support for newer DirectX SDKs GitHub 1066 Patch arrays extended to support combined regular and irregular types GitHub 995 FarPatchTables and adaptive refinement supported for Bilinear scheme GitHub 1035 New FarPatchTableFactory method to determine adaptive refinement options GitHub 1047 New FarPatchTableFactory options to align primvar buffers of uniform tables GitHub 986 FarStencilTableUpdateValues overloaded to support separate base buffer GitHub 1011 FarLimitStencilTableFactory updated to create face-varying tables GitHub 1012 Regular patches on boundaries no longer require additional isolation GitHub 1025 Inclusion of OpenSubdiv header files in source code now consistent GitHub 767 Re-organization of and additions to Far tutorials GitHub 1083 examples now use common command-line conventions and parsing GitHub 1056 Bug Fixes Fixed FarPrimvarRefiner internal limitFVar prototype GitHub 979 Fixed FarStencilTable append when base StencilTable empty GitHub 982 Patches around non-manifold vertices now free of cracks GitHub 1013 Release 3.3 Release 3.3.3 - Jul 2018 Release 3.3.3 is bug-fix release addressing regressions from release 3.3.2 Bug Fixes Fixed a regression in PatchTable construction with varying patches GitHub 976 Fixed a regression in PatchTable construction for face-varying patches GitHub 972 Fixed a bug in the initialization of FarSourcePatch GitHub 971 Release 3.3.2 - Jun 2018 Release 3.3.2 is a minor release with potentially significant performance improvements to the patch pre-processing stages Changes Improved performance of PatchTable construction GitHub 966 The resulting improved accuracy will produce slight numerical differences in computations involving patches, e.g. StencilTable and PatchTable evaluation Bug Fixes FarPatchTableFactory now supports PatchTable construction with ENDCAP_BILINEAR_BASIS specified Release 3.3.1 - Feb 1018 Release 3.3.1 is a minor bug-fix release Bug Fixes Fixed GLSLHLSLMetal patch shader code to resolve degenerate normals GitHub 947 Fixed problems with face-varying patches in uniform PatchTables GitHub 946 Fixed integer overflow bugs for large meshes in PatchTable factories GitHub 957 Fixed computation of PatchParam for triangle refinement GitHub 962 Changes Added build options NO_GLFW and NO_GLFW_X11 Added additional shapes with infinitely sharp creases to the Metal and DX11 example viewers Disabled GL tests during CI runs on Linux Improved stability of examplesglImaging in CI runs by testing GL version Release 3.3.0 - Aug 2017 Release 3.3.0 is significant release adding an Osd implementation for Apples Metal API New Features Added an Osd implementation for Apples Metal API Added the mtlViewer example Changes Fixed several instances of local variable shadowing that could cause build warnings Updated continuous-integration build scripts and added testing on macOS Release 3.2 Release 3.2.0 - Feb 2017 Release 3.2.0 is a minor release containing API additions and bug fixes New Features Extended FarStencilTableFactory to support face-varying Extended Osd Evaluator classes to support evaluation of 1st and 2nd derivatives Added an option to disable generation of legacy sharp corner patches Changes Corrected numerous spelling errors in doxygen comments Updated glFVarViewer with improved error detection and command line parsing Added option to build using MSVC with static CRT Bug Fixes Fixed a double delete of GL program in OsdGLComputeEvaluator Release 3.1 Release 3.1.1 - Jan 2017 Release 3.1.1 is a minor bug-fix release. Bug Fixes Fixed a bug with non-manifold face-varying topology causing a crash during patch table creation Fixed GLEW compilation and linking with dynamic GLEW libraries on Windows Fixed GLFW linking with GLFW 3.2 on X11 platforms Release 3.1.0 - Oct 2016 Release 3.1.0 is a significant release with several new features, bug fixes, and general code and configuration improvements. For more information on the following, please see Release 3.1 New Features Bicubic Face-Varying Patches Varying and Face-Varying Evaluation Second Order Derivative Evaluation Separate Levels of Feature Isolation Sharp Patches for Infinitely Sharp Features Changes Enabled the use of CMakes folder feature Removed the use of iso646 alternative keywords and, or, not, etc. to improve portability Added numerical valued preprocessor directives OPENSUBDIV_VERSION_MAJOR, etc. to opensubdivversion.h Improved documentation for FarPatchParam and added Unnormalize to complement Normalize Added additional topology queries to FarTopologyLevel Updated glFVarViewer and glEvalLimit viewer to make use of bicubic face-varying patches Updated glViewer and dxViewer to add a toggle for InfSharpPatch Updated dxPtexViewer for improved feature parity with glPtexViewer Improved far_regression to exercise shapes independent of Hbr compatibility Added support for Appveyor continuous integration testing Removed cmakeFindIlmBase Removed mayaPolySmooth example Bug Fixes Fixed Ptex version parsing and compatibility issues Fixed compatibility issues with VS2015 Fixed bug interpolating face-varying data with Bilinear scheme Fixed bug with refinement using Chaikin creasing Fixed bugs with HUD sliders in the example viewers Release 3.0 Release 3.0.5 - Mar 2016 Release 3.0.5 is a minor stability release with performance and correctness bug fixes. Bug Fixes The previous release reduced transient memory use during PatchTable construction, but increased the amount of memory consumed by the resulting PatchTable itself, this regression has been fixed. The example Ptex texture sampling code has been fixed to prevent sampling beyond the texels for a face when multisample rasterization is enabled. Release 3.0.4 - Feb 2016 Release 3.0.4 is a minor stability release which includes important performance and bug fixes. New Features Added accessor methods to FarLimitStencilTable to retrieve limit stencil data including derivative weights Added support for OpenCL event control to OsdCLVertexBuffer and OsdCLEvaluator Changes Major reduction in memory use during FarPatchTable construction for topologies with large numbers of extraordinary features Improved performance for GL and D3D11 tessellation control  hull shader execution when drawing BSpline patches with the single crease patch optimization enabled Bug Fixes Restored support for drawing with fractional tessellation Fixed far_tutorial_6 to refine primvar data only up to the number of levels produced by topological refinement Fixed build warnings and errors reported by Visual Studio 2015 Release 3.0.3 - Oct 2015 Release 3.0.3 is a minor stability release which includes important performance and bug fixes. New Features Smooth normal generation tutorial, far_tutorial_8 Changes Major performance improvement in PatchTable construction Improved patch approximations for non-manifold features Bug Fixes Fixed double delete in GLSL Compute controller Fixed buffer layout for GLSL Compute kernel Fixed GL buffer leak in OsdGLPatchTable Fixed out-of-bounds data access for TBB and OMP stencil evaluation Fixed WIN32_LEAN_AND_MEAN typo Fixed Loop-related shader issues glFVarViewer Release 3.0.2 - Aug 2015 Release 3.0.2 is a minor release for a specific fix. Bug Fixes Fixed drawing of single crease patches Release 3.0.1 - Aug 2015 Release 3.0.1 is a minor release focused on stability and correctness. Changes Added a references section to the documentation, please see References Removed references to AddVaryingWithWeight from examples and tutorials Added more regression test shapes Addressed general compiler warnings e.g. signed vs unsigned comparisons Addressed compiler warnings in the core libraries reported by GCCs -Wshadow Eased GCC version restriction, earlier requirement for version 4.8 or newer is no longer needed Replaced topology initialization assertions with errors Improved compatibility with ICC Improved descriptive content and formatting of Far error messages Improved build when configured to include no GPU specific code Bug Fixes Fixed handling of unconnected vertices to avoid out of bounds data access Fixed non-zero starting offsets for TbbEvalStencils and OmpEvalStencils Fixed FarStencilTableFactoryOptionsfactorizeIntermediateLevels Fixed FarPatchTablesFactoryOptionsgenerateAllLevels Fixed the behavior of VTX_BOUNDARY_NONE for meshes with bilinear scheme Fixed some template method specializations which produced duplicate definitions Disabled depth buffering when drawing the UI in the example viewers Disabled the fractional tessellation spacing option in example viewers since this mode is currently not supported Release 3.0.0 - Jun 2015 Release 3.0.0 is a major release with many significant improvements and changes. For more information on the following, please see Release 3.0 New Features Faster subdivision using less memory Support for non-manifold topology Face-Varying data specified topologically Elimination of fixed valence tables Single-crease patch for semi-sharp edges Additional irregular patch approximations Introduction of Stencil Tables Faster, simpler GPU kernels Unified adaptive shaders Updated coding style with namespaces More documentation and tutorials Bug Fixes Smooth Face-Varying interpolation around creases Release 3.0.0 RC2 New Features Documentation updates far_tutorial_3 updates for the multiple face-varying channels maya example plugin interpolates a UV channel and a vertex color channel Bug Fixes Fixed a LimitStencilTableFactory bug, which returns an invalid table PatchParam encoding changed to support refinement levels up to 10 Added Xinerama link dependency Fixed MSVC 32bit build problem Fixed minor cmake issues Fixed glViewerfarViewer stability bugs Release 3.0.0 RC1 Changes FarTopologyRefiner was split into several classes to clarify and focus the API. Interpolation of Vertex and Varying primvars in a single pass is no longer supported. The Osd layer was largely refactored. Previous 2.x Release Notes Previous releases Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n-        \"tags\": \"\",\n-        \"loc\": \"release_notes.html\"\n-    }, {\n-        \"title\": \"glEvalLimit\",\n-        \"text\": \"glEvalLimit glEvalLimit 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE SYNOPSIS DESCRIPTION OPTIONS SEE ALSO SYNOPSIS glEvalLimit  -f   -yup   -u   -a   -l refinement level  objfiles  -catmark   -loop   -bilinear  DESCRIPTION glEvalLimit is a stand-alone application that showcases the limit surface Eval module. On the given shape, random samples are generated in local s,t space. Vertex, varying and face-varying data is then computed on the surface limit and displayed as colors. In order to emphasize the dynamic nature of the EvalLimit API, where the locations can be arbitrarily updated before each evaluation, the glEvalLimit example treats each sample as a ST particle. ST Particles are a simplified parametric-space particle dynamics simulation each particle is assigned a location on the subdivision surface limit that is composed of a unique ptex face index, with a local s,t parametric pair. The system also generates an array of parametric velocities ds, dt for each particle. An Update function then applies the velocities to the locations and moves the points along the parametric space. Face boundaries are managed using a ptex adjacency table obtained from the FarTopologyRefiner. Every time a particle moves outside of the 0.0f, 1.0f parametric range, a warp function moves it to the neighboring face, or bounces it, if the edge happens to be a boundary. Note currently the adjacency code does not handle diagonal crossings, nor crossings between quad and non-quad faces. Multiple controls are available to experiment with the algorithms. OPTIONS See the description of the common comand line options for the subset of common options supported here. SEE ALSO Other examples  glViewer , glFVarViewer , glEvalLimit , glStencilViewer , glPtexViewer , glPaintTest , glShareTopology , dxViewer , dxPtexViewer , Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"title\": \"bfr_tutorial_2_2.cpp\",\n+        \"text\": \"bfr_tutorial_2_2.cpp bfr_tutorial_2_2.cpp 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE httpsgithub.comPixarAnimationStudiosOpenSubdivblobreleasetutorialsbfrtutorial_2_2bfr_tutorial_2_2.cpp ------------------------------------------------------------------------------  Tutorial description   This tutorial builds on others using the SurfaceFactory, Surface  and Tessellation classes by using more of the functionality of the  Tessellation class to construct a tessellation of the mesh that is  topologically watertight, i.e. resulting points evaluated along  shared edges or vertices are shared and not duplicated.   Since Tessellation provides points around its boundary first, the  evaluated points for shared vertices and edges are identified when  constructed and reused when shared later. The boundary of the  tessellation of a face is therefore a collection of shared points  and methods of Tessellation help to remap the faces generated to  the shared set of points.  include opensubdivfartopologyRefiner.h include opensubdivbfrrefinerSurfaceFactory.h include opensubdivbfrsurface.h include opensubdivbfrtessellation.h include vector include string include cstring include cstdio include cassert  Local headers with support for this tutorial in namespace tutorial include .meshLoader.h include .objWriter.h using namespace OpenSubdiv  using Far  Index  using Far  IndexArray  using Far  ConstIndexArray    Simple command line arguments to provide input and run-time options  class Args  public  std  string inputObjFile  std  string outputObjFile  Sdc  SchemeType schemeType  int tessUniformRate  bool tessQuadsFlag  public  Args  int argc , char  argv   inputObjFile , outputObjFile , schemeType  Sdc  SCHEME_CATMARK , tessUniformRate  5 , tessQuadsFlag  false   for  int i  1  i  argc   i   if  strstr  argv  i , .obj   if  inputObjFile . empty   inputObjFile  std  string  argv  i   else  fprintf  stderr , Warning Extra Obj file s ignored n  , argv  i    else if   strcmp  argv  i , -o   if   i  argc  outputObjFile  std  string  argv  i   else if   strcmp  argv  i , -bilinear   schemeType  Sdc  SCHEME_BILINEAR   else if   strcmp  argv  i , -catmark   schemeType  Sdc  SCHEME_CATMARK   else if   strcmp  argv  i , -loop   schemeType  Sdc  SCHEME_LOOP   else if   strcmp  argv  i , -res   if   i  argc  tessUniformRate  atoi  argv  i   else if   strcmp  argv  i , -quads   tessQuadsFlag  true   else  fprintf  stderr , Warning Unrecognized argument s ignored n  , argv  i     private  Args       Simple local structs supporting shared points for vertices and edges  namespace  struct SharedVertex  SharedVertex   pointIndex  -1    bool IsSet  const  return pointIndex  0   void Set  int index   pointIndex  index   int pointIndex   struct SharedEdge  SharedEdge   pointIndex  -1 , numPoints  0    bool IsSet  const  return pointIndex  0   void Set  int index , int n   pointIndex  index , numPoints  n   int pointIndex  int numPoints     end namespace   The main tessellation function given a mesh and vertex positions,  tessellate each face -- writing results in Obj format.   This tessellation function differs from earlier tutorials in that it  computes and reuses shared points at vertices and edges of the mesh.  There are several ways to compute these shared points, and which is  best depends on context.   Dealing with shared data poses complications for threading in general,  so computing all points for the vertices and edges up front may be  preferred -- despite the fact that faces will be visited more than once  first when generating potentially shared vertex or edge points, and  later when generating any interior points. The loops for vertices and  edges can be threaded and the indexing of the shared points is simpler.   For the single-threaded case here, the faces are each processed in  order and any shared points will be computed and used as needed. So  each face is visited once and so each Surface initialized once but  the bookkeeping to deal with indices of shared points becomes more  complicated.  void tessellateToObj  Far  TopologyRefiner const  meshTopology , std  vector  float  const  meshVertexPositions , Args const  options     Use simpler local type names for the Surface and its factory  typedef Bfr  RefinerSurfaceFactory  SurfaceFactory  typedef Bfr  Surface  float  Surface    Initialize the SurfaceFactory for the given base mesh very low  cost in terms of both time and space and tessellate each face  independently i.e. no shared vertices   Note that the SurfaceFactory is not thread-safe by default due to  use of an internal cache. Creating a separate instance of the  SurfaceFactory for each thread is one way to safely parallelize  this loop. Another preferred is to assign a thread-safe cache  to the single instance.   First declare any evaluation options when initializing though  none are used in this simple case  SurfaceFactory  Options surfaceOptions  SurfaceFactory meshSurfaceFactory  meshTopology , surfaceOptions    The Surface to be constructed and evaluated for each face -- as  well as the intermediate and output data associated with it -- can  be declared in the scope local to each face. But since dynamic  memory is involved with these variables, it is preferred to declare  them outside that loop to preserve and reuse that dynamic memory.  Surface faceSurface  std  vector  float  facePatchPoints  std  vector  float  outCoords  std  vector  float  outPos , outDu , outDv  std  vector  int  outFacets    Assign Tessellation Options applied for all faces. Tessellations  allow the creating of either 3- or 4-sided faces -- both of which  are supported here via a command line option  int const tessFacetSize  3  options . tessQuadsFlag  Bfr  Tessellation  Options tessOptions  tessOptions . SetFacetSize  tessFacetSize  tessOptions . PreserveQuads  options . tessQuadsFlag    Declare vectors to identify shared tessellation points at vertices  and edges and their indices around the boundary of a face  Far  TopologyLevel const  baseLevel  meshTopology . GetLevel  0  std  vector  SharedVertex  sharedVerts  baseLevel . GetNumVertices  std  vector  SharedEdge  sharedEdges  baseLevel . GetNumEdges  std  vector  int  tessBoundaryIndices    Process each face, writing the output of each in Obj format  tutorial  ObjWriter objWriter  options . outputObjFile  int numMeshPointsEvaluated  0  int numFaces  meshSurfaceFactory . GetNumFaces  for  int faceIndex  0  faceIndex  numFaces   faceIndex     Initialize the Surface for this face -- if valid skipping  holes and boundary faces in some rare cases  if   meshSurfaceFactory . InitVertexSurface  faceIndex ,  faceSurface   continue     Declare a simple uniform Tessellation for the Parameterization  of this face and identify coordinates of the points to evaluate  Bfr  Tessellation tessPattern  faceSurface . GetParameterization , options . tessUniformRate , tessOptions  int numOutCoords  tessPattern . GetNumCoords  outCoords . resize  numOutCoords  2  tessPattern . GetCoords  outCoords . data    Prepare the patch points for the Surface, then use them to  evaluate output points for all identified coordinates   Resize patch point and output arrays int pointSize  3  facePatchPoints . resize  faceSurface . GetNumPatchPoints   pointSize  outPos . resize  numOutCoords  pointSize  outDu . resize  numOutCoords  pointSize  outDv . resize  numOutCoords  pointSize   Populate the patch point array faceSurface . PreparePatchPoints  meshVertexPositions . data , pointSize , facePatchPoints . data , pointSize    Evaluate the sample points of the Tessellation   First traverse the boundary of the face to determine whether  to evaluate or share points on vertices and edges of the face.  Both pre-existing and new boundary points are identified by  index in an array for later use. The interior points are all  trivially computed after the boundary is dealt with.   Identify the boundary and interior coords and initialize the  index array for the potentially shared boundary points  int numBoundaryCoords  tessPattern . GetNumBoundaryCoords  int numInteriorCoords  numOutCoords - numBoundaryCoords  float const  tessBoundaryCoords   outCoords  0  float const  tessInteriorCoords   outCoords  numBoundaryCoords  2  ConstIndexArray fVerts  baseLevel . GetFaceVertices  faceIndex  ConstIndexArray fEdges  baseLevel . GetFaceEdges  faceIndex  tessBoundaryIndices . resize  numBoundaryCoords    Walk around the face, inspecting each vertex and outgoing edge,  and populating the index array of boundary points  float  patchPointData  facePatchPoints . data  int boundaryIndex  0  int numFacePointsEvaluated  0  for  int i  0  i  fVerts . size   i   Index vertIndex  fVerts  i  Index edgeIndex  fEdges  i  int edgeRate  options . tessUniformRate    Evaluateassign or retrieve the shared point for the vertex  SharedVertex  sharedVertex  sharedVerts  vertIndex  if   sharedVertex . IsSet    Identify indices of the new shared point in both the  mesh and face and increment their inventory int indexInMesh  numMeshPointsEvaluated   int indexInFace  numFacePointsEvaluated   sharedVertex . Set  indexInMesh   Evaluate new shared point and assign index to boundary float const  uv   tessBoundaryCoords  boundaryIndex  2  int pIndex  indexInFace  pointSize  faceSurface . Evaluate  uv , patchPointData , pointSize ,  outPos  pIndex ,  outDu  pIndex ,  outDv  pIndex  tessBoundaryIndices  boundaryIndex    indexInMesh   else   Assign shared vertex point index to boundary tessBoundaryIndices  boundaryIndex    sharedVertex . pointIndex     Evaluateassign or retrieve all shared points for the edge   To keep this simple, assume the edge is manifold. So the  second face sharing the edge has that edge in the opposite  direction in its boundary relative to the first face --  making it necessary to reverse the order of shared points  for the boundary of the second face.   To support a non-manifold edge, all subsequent faces that  share the assigned shared edge must determine if their  orientation of that edge is reversed relative to the first  face for which the shared edge points were evaluated. So a  little more book-keeping andor inspection is required.  if  edgeRate  1   int pointsPerEdge  edgeRate - 1  SharedEdge  sharedEdge  sharedEdges  edgeIndex  if   sharedEdge . IsSet    Identify indices of the new shared points in both the  mesh and face and increment their inventory int nextInMesh  numMeshPointsEvaluated  int nextInFace  numFacePointsEvaluated  numFacePointsEvaluated  pointsPerEdge  numMeshPointsEvaluated  pointsPerEdge  sharedEdge . Set  nextInMesh , pointsPerEdge   Evaluate shared points and assign indices to boundary float const  uv   tessBoundaryCoords  boundaryIndex  2  for  int j  0  j  pointsPerEdge   j , uv  2   int pIndex   nextInFace    pointSize  faceSurface . Evaluate  uv , patchPointData , pointSize ,  outPos  pIndex ,  outDu  pIndex ,  outDv  pIndex  tessBoundaryIndices  boundaryIndex    nextInMesh     else   See note above on simplification for manifold edges assert   baseLevel . IsEdgeNonManifold  edgeIndex   Assign shared points to boundary in reverse order int nextInMesh  sharedEdge . pointIndex  pointsPerEdge - 1  for  int j  0  j  pointsPerEdge   j   tessBoundaryIndices  boundaryIndex    nextInMesh --        Evaluate any interior points unique to this face -- appending  them to those shared points computed above for the boundary  if  numInteriorCoords   float const  uv  tessInteriorCoords  int iLast  numFacePointsEvaluated  numInteriorCoords  for  int i  numFacePointsEvaluated  i  iLast   i , uv  2   int pIndex  i  pointSize  faceSurface . Evaluate  uv , patchPointData , pointSize ,  outPos  pIndex ,  outDu  pIndex ,  outDv  pIndex   numFacePointsEvaluated  numInteriorCoords  numMeshPointsEvaluated  numInteriorCoords     Remember to trimresize the arrays storing evaluation results  for new points to reflect the size actually populated.  outPos . resize  numFacePointsEvaluated  pointSize  outDu . resize  numFacePointsEvaluated  pointSize  outDv . resize  numFacePointsEvaluated  pointSize    Identify the faces of the Tessellation   Note that the coordinate indices used by the facets are local  to the face i.e. they range from 0..N-1, where N is the  number of coordinates in the pattern and so need to be offset  when writing to Obj format.   For more advanced use, the coordinates associated with the  boundary and interior of the pattern are distinguishable so  that those on the boundary can be easily remapped to refer to  shared edge or corner points, while those in the interior can  be separately offset or similarly remapped.   So transform the indices of the facets here as needed using  the indices of shared boundary points assembled above and a  suitable offset for the new interior points added  int tessInteriorOffset  numMeshPointsEvaluated - numOutCoords  int numFacets  tessPattern . GetNumFacets  outFacets . resize  numFacets  tessFacetSize  tessPattern . GetFacets  outFacets . data  tessPattern . TransformFacetCoordIndices  outFacets . data , tessBoundaryIndices . data , tessInteriorOffset    Write the evaluated points and faces connecting them as Obj  objWriter . WriteGroupName  baseFace_ , faceIndex  objWriter . WriteVertexPositions  outPos  objWriter . WriteVertexNormals  outDu , outDv  objWriter . WriteFaces  outFacets , tessFacetSize , true , false      Load command line arguments, specified or default geometry and process  int main  int argc , char  argv   Args args  argc , argv  Far  TopologyRefiner  meshTopology  0  std  vector  float  meshVtxPositions  std  vector  float  meshFVarUVs  meshTopology  tutorial  createTopologyRefiner  args . inputObjFile , args . schemeType , meshVtxPositions , meshFVarUVs  if  meshTopology  0   return EXIT_FAILURE   tessellateToObj   meshTopology , meshVtxPositions , args  delete meshTopology  return EXIT_SUCCESS   ------------------------------------------------------------------------------ Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n-        \"loc\": \"glevallimit.html\"\n+        \"loc\": \"bfr_tutorial_2_2.html\"\n     }, {\n-        \"title\": \"Overview of Release 3.0\",\n-        \"text\": \"Overview of Release 3.0 Overview of Release 3.0 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE Release 3.0 Subdivision Core Sdc Topology and Refinement Limit Properties and Patches Faster Evaluation and Display Updated Source-Code Style Documentation and Tutorials Additional Resources Porting Guide Subdivision Compatibility Release 3.0 OpenSubdiv 3.0 represents a landmark release, with profound changes to the core algorithms, simplified APIs, and streamlined GPU execution. Providing faster, more efficient, and more flexible subdivision code remains our principal goal. To achieve this, OpenSubdiv 3.0 introduces many improvements that constitute a fairly radical departure from previous versions. This document highlights some of the major changes that have gone in to the 3.0 release. Subdivision Core Sdc In consideration of past, present and future topological representations, all low-level details fundamental to subdivision and the specific subdivision schemes have been factored into a new low-level layer called Sdc SubDivision Core. This layer encapsulates the full set of applicable options, the formulae required to support semi-sharp creasing, the formulae for the refinement masks of each subdivision scheme, etc. As initially conceived, its goal was often expressed as separating the math from the mesh. Sdc provides the low-level nuts and bolts to provide a subdivision implementation consistent with OpenSubdiv. It is used by OpenSubdivs libraries and may also be useful in providing an existing clients implementation with the details necessary to make that implementation consistent with OpenSubdiv. Topology and Refinement OpenSubdiv 3.0 introduces a new intermediate internal topological representation named Vtr Vectorized Topology Representation. Compared to the Hbr library used in previous versions, Vtr is much more efficient for the kinds of topological analysis required by Far and is more flexible. While Hbr is no longer used by OpenSubdiv, it will remain in the source distribution for legacy and regression purposes. Faster Subdivision A major focus of the 3.0 release is performance, and the improvement to the initial refinement of a mesh required for topological analysis is close to an order magnitude often much more for uniform, but less for adaptive. Supporting for Non-manifold Topology With topology conversion no longer constrained by Hbr, OpenSubdiv is no longer restricted to meshes of manifold topology. With one exception non-triangles with Loop subdivision, any set of faces and vertices that can be represented in common container formats such as Obj or Alembic can be represented and subdivided. With future efforts to bring the functionality for the Loop scheme up to par with Catmark, that last remaining topological restriction will be removed. Simpler Conversion of Topology Several entry-points are now available for client topology, rather than the single incremental assembly of an HbrMesh that previously existed. The new topological relationships can be populated using either a high-level interface where simplicity has been emphasized, or a more complex lower-level interface for enhanced efficiency. Face Varying Topology Previously, face-varying data was assigned by value to the vertex for each face, and whether or not the set of values around a vertex was continuous was determined by comparing these values later. In some cases this could result in two values that were not meant to be shared being welded together. Face-varying data is now specified topologically just as the vertex topology is defined from a set of vertices and integer references indices to these vertices for the corner of each face, face-varying topology is defined from a set of values and integer references indices to these values for the corner of each face. So if values are to be considered distinct around a vertex, they are given distinct indices and no comparison of any data is ever performed. Note that the number of vertices and values will typically differ, but since indices are assigned to the corners of all faces for both, the total number of indices assigned to all faces will be the same. This ensures that OpenSubdivs face-varying topology matches what is often specified in common geometry container formats like Obj, Alembic and USD. Multiple channels of face-varying data can be defined and each is topologically independent of the others. Limit Properties and Patches A fundamental goal of OpenSubdiv is to provide an accurate and reliable representation of the limit surface. Improvements have been made both to the properties positions and tangents at discrete points in the subdivision hierarchy, as well as to the representations of patches used for the continuous limit surface between them. Removed Fixed Valence Tables Limit properties of extra-ordinary vertices are computed for arbitrary valence and new patch types no longer rely on small table sizes. All tables that restricted the valence of a vertex to some relatively small table size have now been removed. The only restriction on valence that exists is within the new topology representation, which restricts it to the size of an unsigned 16-bit integer 65,535. This limit could also be removed, by recompiling with a certain size changed from 16- to 32-bits, but doing so would increase the memory cost for all common cases. We feel the 16-bit limit is a reasonable compromise. Single Crease Patch OpenSubdiv 3.0 newly implements efficient evaluation of semi-smooth creases using single crease patches. With this optimization, high-order edge sharpness tags can be handled very efficiently for both computation time and memory consumption.  Niessner et al., Efficient Evaluation of Semi-Smooth Creases in Catmull-Clark Subdivision Surfaces. Eurographics Short Papers. 2012. httpresearch.microsoft.comen-usumpeoplecloopEG2012.pdf New Irregular Patch Approximations While legacy Gregory patch support is still available, we have introduced several new options for representing irregular patches Legacy Gregory, fast Gregory Basis stencils, and BSpline patches. Gregory basis stencils provide the same high quality approximation of Legacy Gregory patches, but execute considerably faster with a simpler GPU representation. While BSpline patches are not as close an approximation as Gregory patches, they enable an entire adaptively refined mesh to be drawn with screen space tessellation via a single global shader configuration Gregory Basis patches require one additional global shader configuration. The new implementations of the GregoryBasis and BSpline approximations relax the previous max valence limit. Legacy Gregory patch still has a limitation of max valence typically 24, depending on the hardware capability of GL_MAX_VARYING_VECTORS. Users are still encouraged to use models with vertices of low valence for both improved model quality and performance. Faster Evaluation and Display OpenSubdiv 3.0 also introduces new data structures and algorithms that greatly enhance performance for the common case of repeated evaluation both on the CPU and GPU. Introducing Stencil Tables OpenSubdiv 3.0 replaces the serialized subdivision tables with factorized stencil tables. The SubdivisionTables class of earlier releases contained a large number of data inter-dependencies, which incurred penalties from fences or force additional kernel launches. Most of these dependencies have now been factorized away in the pre-computation stage, yielding stencil tables FarStencilTable instead. Stencils remove all data dependencies and simplify all the computations into a single trivial kernel. This simplification results in a faster pre-computation stage, faster execution on GPU, with less driver overhead. The new stencil tables Compute back-end is supported on all the same platforms as previous releases except GCD. Faster, Simpler GPU Kernels On the GPU side, the replacement of subdivision tables with stencils greatly reduces bottlenecks in compute, yielding as much as a 4x interpolation speed-up. At the same time, stencils reduce the complexity of interpolation to a single kernel launch per primitive, a critical improvement for mobile platforms. As a result of these changes, compute batching is now trivial, which in turn enabled API simplifications in the Osd layer. Unified Adaptive Shaders Adaptive tessellation shader configurations have been greatly simplified. The number of shader configurations has been reduced from a combinatorial per-patch explosion down to a constant two global configurations. This massive improvement over the 2.x code base results in significantly faster load times and a reduced per-frame cost for adaptive drawing. Similar to compute kernel simplification, this shader simplification has resulted in additional simplifications in the Osd layer. Updated Source-Code Style OpenSubdiv 3.0 replaces naming prefixes with C namespaces for all API layers, bringing the source style more in line with contemporary specifications mostly inspired from the Google C Style Guide . The large-scale changes introduced in this release generally break compatibility with existing client-code. However, this gives us the opportunity to effect some much needed updates to our code-style guidelines and general conventions, throughout the entire OpenSubdiv code-base. We are hoping to drastically improve the quality, consistency and readability of the source code. Documentation and Tutorials The documentation has been reorganized and fleshed out. This release introduces a number of new tutorials . The tutorials provide an easier entry point for learning the API than do the programs provided in examples. The examples provide more fleshed out solutions and are a good next step after the tutorials are mastered. Additional Resources Porting Guide Please see the Porting Guide for help on how to port existing code written for OpenSubdiv 2.x to the new 3.0 release. Subdivision Compatibility The 3.0 release has made some minor changes to the subdivision specification and rules. See Subdivision Compatibility for a complete list. Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"title\": \"dxPtexViewer\",\n+        \"text\": \"dxPtexViewer dxPtexViewer 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE SYNOPSIS DESCRIPTION OPTIONS KEYBOARD CONTROLS SEE ALSO SYNOPSIS dxPtexViewer  -f   -yup   -u   -a   -l isolation level   -c animation loops   -e environment map   -d HDR diffuse map   -s HDR specular map   --disp displacement scale  ptex color file ptex displacement file ptex occlusion file ptex specular file objfiles DESCRIPTION dxPtexViewer is a stand-alone application that showcases advanced HDR shading with color, displacement, occlusion and specular ptex maps. Multiple controls are available to experiment with the algorithms. OPTIONS See the description of the common comand line options for the subset of common options supported here. -y Swap Z-up geometry to Y-UP. -e environment map A low dynamic range spherical environment map used as a background. Ideally, a color-normalized version of the HDR light probe. -d HDR diffuse map An HDR file containing a diffuse environment map typically they are low resolution blurry hemispherical convolutions of the environment light probe. -s environment map An HDR file containing a specular environment map. --disp displacement scale A scalar multiplier for the shader displacement values. ptex color file A ptex file containing RGB channels read as material albedo color. ptex displacement file A single-channel ptex file preferrably float precision containing the displacement values. ptex occlusion file A single-channel ptex file preferrably 8 bits precision containing a pre-computed ambient occlusion signal. ptex specular file A single-channel ptex file preferrably 8 bits precision applied to modulate the specular reflectance of the material objfiles A sequence of obj files used as an animation loop the topology has to match the data contained in all the ptex files  KEYBOARD CONTROLS q  quit esc  hide GUI f  fit frame -  increase  decrese tessellation rate SEE ALSO Other examples  glViewer , glFVarViewer , glEvalLimit , glStencilViewer , glPtexViewer , glPaintTest , glShareTopology , dxViewer , dxPtexViewer , Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n-        \"loc\": \"release_30.html\"\n+        \"loc\": \"dxptexviewer.html\"\n     }, {\n-        \"title\": \"mtlPtexViewer\",\n-        \"text\": \"mtlPtexViewer mtlPtexViewer 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE SYNOPSIS DESCRIPTION KEYBOARD CONTROLS SEE ALSO SYNOPSIS open mtlPtexViewer.app --args  -yup   -u   -a   -l isolation level  ptex color file ptex displacement file DESCRIPTION mtlPtexViewer is a stand-alone application demonstrating shading with color and displacement ptex maps. Multiple controls are available to experiment with the algorithms. KEYBOARD CONTROLS q  quit f  fit frame -  increase  decrease tessellation rate SEE ALSO Other examples  glViewer , glFVarViewer , glEvalLimit , glStencilViewer , glPtexViewer , glPaintTest , glShareTopology , dxViewer , dxPtexViewer , Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"title\": \"bfr_tutorial_2_1.cpp\",\n+        \"text\": \"bfr_tutorial_2_1.cpp bfr_tutorial_2_1.cpp 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE httpsgithub.comPixarAnimationStudiosOpenSubdivblobreleasetutorialsbfrtutorial_2_1bfr_tutorial_2_1.cpp ------------------------------------------------------------------------------  Tutorial description   This tutorial builds on the previous tutorial that makes use of the  SurfaceFactory, Surface and Tessellation classes by illustrating the  use of non-uniform tessellation parameters with Tessellation.   Tessellation rates for the edges of a face are determined by a  length associated with each edge. That length may be computed using  either the control hull or the limit surface. The length of a  tessellation interval is required and will be inferred if not  explicitly specified as a command line option.   The tessellation rate for an edge is computed as its length divided  by the length of the tessellation interval. A maximum tessellation  rate is imposed to prevent accidental unbounded tessellation, but  can easily be raised as needed.  include opensubdivfartopologyRefiner.h include opensubdivbfrrefinerSurfaceFactory.h include opensubdivbfrsurface.h include opensubdivbfrtessellation.h include vector include string include cstring include cstdio include cmath include algorithm  Local headers with support for this tutorial in namespace tutorial include .meshLoader.h include .objWriter.h using namespace OpenSubdiv    Simple command line arguments to provide input and run-time options  class Args  public  std  string inputObjFile  std  string outputObjFile  Sdc  SchemeType schemeType  float tessInterval  int tessRateMax  bool useHullFlag  bool tessQuadsFlag  public  Args  int argc , char  argv   inputObjFile , outputObjFile , schemeType  Sdc  SCHEME_CATMARK , tessInterval  0.0f , tessRateMax  10 , useHullFlag  false , tessQuadsFlag  false   for  int i  1  i  argc   i   if  strstr  argv  i , .obj   if  inputObjFile . empty   inputObjFile  std  string  argv  i   else  fprintf  stderr , Warning Extra Obj file s ignored n  , argv  i    else if   strcmp  argv  i , -o   if   i  argc  outputObjFile  std  string  argv  i   else if   strcmp  argv  i , -bilinear   schemeType  Sdc  SCHEME_BILINEAR   else if   strcmp  argv  i , -catmark   schemeType  Sdc  SCHEME_CATMARK   else if   strcmp  argv  i , -loop   schemeType  Sdc  SCHEME_LOOP   else if   strcmp  argv  i , -length   if   i  argc  tessInterval   float  atof  argv  i   else if   strcmp  argv  i , -max   if   i  argc  tessRateMax  atoi  argv  i   else if   strcmp  argv  i , -hull   useHullFlag  true   else if   strcmp  argv  i , -quads   tessQuadsFlag  true   else  fprintf  stderr , Warning Unrecognized argument s ignored n  , argv  i     private  Args       Local trivial functions for simple edge length calculations and the  determination of associated tessellation rates  inline float EdgeLength  float const  v0 , float const  v1   float dv  3  dv  0   std  abs  v0  0  - v1  0  dv  1   std  abs  v0  1  - v1  1  dv  2   std  abs  v0  2  - v1  2  return std  sqrt  dv  0   dv  0   dv  1   dv  1   dv  2   dv  2   float FindLongestEdge  Far  TopologyRefiner const  mesh , std  vector  float  const  vertPos , int pointSize   float maxLength  0.0f  int numEdges  mesh . GetLevel  0 . GetNumEdges  for  int i  0  i  numEdges   i   Far  ConstIndexArray edgeVerts  mesh . GetLevel  0 . GetEdgeVertices  i  float edgeLength  EdgeLength   vertPos  edgeVerts  0   pointSize ,  vertPos  edgeVerts  1   pointSize  maxLength  std  max  maxLength , edgeLength   return maxLength   void GetEdgeTessRates  std  vector  float  const  vertPos , int pointSize , Args const  options , int  edgeRates   int numEdges   int  vertPos . size   pointSize  for  int i  0  i  numEdges   i   int j   i  1   numEdges  float edgeLength  EdgeLength   vertPos  i  pointSize ,  vertPos  j  pointSize  edgeRates  i   1   int  edgeLength  options . tessInterval  edgeRates  i   std  min  edgeRates  i , options . tessRateMax      The main tessellation function given a mesh and vertex positions,  tessellate each face -- writing results in Obj format.  void tessellateToObj  Far  TopologyRefiner const  meshTopology , std  vector  float  const  meshVertexPositions , Args const  options     Use simpler local type names for the Surface and its factory  typedef Bfr  RefinerSurfaceFactory  SurfaceFactory  typedef Bfr  Surface  float  Surface    Initialize the SurfaceFactory for the given base mesh very low  cost in terms of both time and space and tessellate each face  independently i.e. no shared vertices   Note that the SurfaceFactory is not thread-safe by default due to  use of an internal cache. Creating a separate instance of the  SurfaceFactory for each thread is one way to safely parallelize  this loop. Another preferred is to assign a thread-safe cache  to the single instance.   First declare any evaluation options when initializing though  none are used in this simple case  SurfaceFactory  Options surfaceOptions  SurfaceFactory meshSurfaceFactory  meshTopology , surfaceOptions    The Surface to be constructed and evaluated for each face -- as  well as the intermediate and output data associated with it -- can  be declared in the scope local to each face. But since dynamic  memory is involved with these variables, it is preferred to declare  them outside that loop to preserve and reuse that dynamic memory.  Surface faceSurface  std  vector  float  facePatchPoints  std  vector  int  faceTessRates  std  vector  float  outCoords  std  vector  float  outPos , outDu , outDv  std  vector  int  outFacets    Assign Tessellation Options applied for all faces. Tessellations  allow the creating of either 3- or 4-sided faces -- both of which  are supported here via a command line option  int const tessFacetSize  3  options . tessQuadsFlag  Bfr  Tessellation  Options tessOptions  tessOptions . SetFacetSize  tessFacetSize  tessOptions . PreserveQuads  options . tessQuadsFlag    Process each face, writing the output of each in Obj format  tutorial  ObjWriter objWriter  options . outputObjFile  int numFaces  meshSurfaceFactory . GetNumFaces  for  int faceIndex  0  faceIndex  numFaces   faceIndex     Initialize the Surface for this face -- if valid skipping  holes and boundary faces in some rare cases  if   meshSurfaceFactory . InitVertexSurface  faceIndex ,  faceSurface   continue     Prepare the Surface patch points first as it may be evaluated  to determine suitable edge-rates for Tessellation  int pointSize  3  facePatchPoints . resize  faceSurface . GetNumPatchPoints   pointSize  faceSurface . PreparePatchPoints  meshVertexPositions . data , pointSize , facePatchPoints . data , pointSize    For each of the N edges of the face, a tessellation rate is  determined to initialize a non-uniform Tessellation pattern.   Many metrics are possible -- some based on the geometry itself  size, curvature, others dependent on viewpoint screen space  size, center of view, etc. and many more. Simple techniques  are chosen here for illustration and can easily be replaced.   Here two methods are shown using lengths between the corners of  the face -- the first using the vertex positions of the face and  the second using points evaluated at the corners of its limit  surface. Use of the control hull is more efficient avoiding the  evaluation but may prove less effective in some cases though  both estimates have their limitations.  int N  faceSurface . GetFaceSize   Use the output array temporarily to hold the N positions outPos . resize  N  pointSize  if  options . useHullFlag   Far  ConstIndexArray verts  meshTopology . GetLevel  0 . GetFaceVertices  faceIndex  for  int i  0 , j  0  i  N   i , j  pointSize   float const  vPos   meshVertexPositions  verts  i   pointSize  outPos  j   vPos  0  outPos  j  1   vPos  1  outPos  j  2   vPos  2    else  Bfr  Parameterization faceParam  faceSurface . GetParameterization  for  int i  0 , j  0  i  N   i , j  pointSize   float uv  2  faceParam . GetVertexCoord  i , uv  faceSurface . Evaluate  uv , facePatchPoints . data , pointSize ,  outPos  j    faceTessRates . resize  N  GetEdgeTessRates  outPos , pointSize , options , faceTessRates . data    Declare a non-uniform Tessellation using the rates for each  edge and identify coordinates of the points to evaluate   Additional interior rates can be optionally provided 2 for  quads, 1 for others but will be inferred in their absence.  Bfr  Tessellation tessPattern  faceSurface . GetParameterization , N , faceTessRates . data , tessOptions  int numOutCoords  tessPattern . GetNumCoords  outCoords . resize  numOutCoords  2  tessPattern . GetCoords  outCoords . data    Resize the output arrays and evaluate  outPos . resize  numOutCoords  pointSize  outDu . resize  numOutCoords  pointSize  outDv . resize  numOutCoords  pointSize  for  int i  0 , j  0  i  numOutCoords   i , j  pointSize   faceSurface . Evaluate   outCoords  i  2 , facePatchPoints . data , pointSize ,  outPos  j ,  outDu  j ,  outDv  j     Identify the faces of the Tessellation   Note the need to offset vertex indices for the output faces --  using the number of vertices generated prior to this face. One  of several Tessellation methods to transform the facet indices  simply translates all indices by the desired offset.  int objVertexIndexOffset  objWriter . GetNumVertices  int numFacets  tessPattern . GetNumFacets  outFacets . resize  numFacets  tessFacetSize  tessPattern . GetFacets  outFacets . data  tessPattern . TransformFacetCoordIndices  outFacets . data , objVertexIndexOffset    Write the evaluated points and faces connecting them as Obj  objWriter . WriteGroupName  baseFace_ , faceIndex  objWriter . WriteVertexPositions  outPos  objWriter . WriteVertexNormals  outDu , outDv  objWriter . WriteFaces  outFacets , tessFacetSize , true , false      Load command line arguments, specified or default geometry and process  int main  int argc , char  argv   Args args  argc , argv  Far  TopologyRefiner  meshTopology  0  std  vector  float  meshVtxPositions  std  vector  float  meshFVarUVs  meshTopology  tutorial  createTopologyRefiner  args . inputObjFile , args . schemeType , meshVtxPositions , meshFVarUVs  if  meshTopology  0   return EXIT_FAILURE     If no interval length was specified, set one by finding the longest  edge of the mesh and dividing it by the maximum tessellation rate  if  args . tessInterval  0.0f   args . tessInterval  FindLongestEdge   meshTopology , meshVtxPositions , 3    float  args . tessRateMax   tessellateToObj   meshTopology , meshVtxPositions , args  delete meshTopology  return EXIT_SUCCESS   ------------------------------------------------------------------------------ Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n-        \"loc\": \"mtlptexviewer.html\"\n+        \"loc\": \"bfr_tutorial_2_1.html\"\n     }, {\n-        \"title\": \"Subdivision Compatibility\",\n-        \"text\": \"Subdivision Compatibility Subdivision Compatibility 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE Subdivision Compatibility Compatibility with OpenSubdiv 2.x Compatibility with RenderMan Incompatibilities Other Differences Subdivision Compatibility This document highlights areas of compatibility with other software that makes use of subdivision surfaces, including previous versions of OpenSubdiv. The compatibility here refers to the choice of subdivision rules that define the shape of the resulting surfaces. Different subdivision rules will lead to different shapes. Choices affecting shape include the types of subdivision schemes supported e.g. Catmull-Clark, Loop, etc. the basic rules applied for these schemes any extended rules to affect sharpness or creasing rules applied separately to face-varying data Ensuring all of these rules are consistent provides the basis for consistent shapes, but further approximations to the limit surface create the potential for subtle deviations. Even within OpenSubdiv, multiple approximations are possible and vary. For now we focus on the compatibility of subdivision rules and deal with the limit approximations only when noteworthy. Compatibility with OpenSubdiv 2.x The refactoring of OpenSubdiv 3.0 data representations presented a unique opportunity to revisit some corners of the subdivision specification and remove or update some legacy features. Face-varying Interpolation Options Face-varying interpolation options have been consolidated into a single enum with one additional choice new to 3.0. No functionality from 2.x has been removed -- just re-expressed in a simpler and more comprehensible form. Face-varying interpolation was previously defined by a boundary interpolation enum with four modes and an additional boolean propagate corners option, which was little understood, i.e. void HbrMeshSetFVarInterpolateBoundarMethodInterpolateBoundaryMethod const void HbrMeshSetFVarPropagateCornersbool const The latter was only used in conjunction with one of the four modes edge and corner, so it was effectively a unique fifth choice. Closer inspection of all of these modes also revealed some unexpected and undesirable behavior in some common cases -- to an extent that could not simply be changed -- and so an additional mode was added to avoid such behavior. All choices are now provided through a single linear interpolation enum, described and illustrated in more detail in the overview of Face-Varying Interpolation . The use of boundary in the name of the enum was intentionally removed as the choice also affects interior interpolation. The new use of linear is now intended to reflect the fact that interpolation is constrained to be linear where specified by the choice applied. All five of Hbrs original modes of face-varying interpolation are supported with minor modifications where Hbr was found to be incorrect in the presence of semi-sharp creasing. An additional mode corners only has also been added to avoid some of the undesired side-effects of some existing modes illustrated below. The new values for the SdcOptionsFVarLinearInterpolation enum and its equivalents for HbrMeshs InterpolateBoundaryMethod and PropagateCorners flag are as follows ordered such that the set of linear constraints applied is always increasing -- from completely smooth to completely linear Sdc FVarLinearInterpolation Hbr FVarInterpolateBoundaryMethod Hbr FVarPropogateCorners FVAR_LINEAR_NONE k_InterpolateBoundaryEdgeOnly NA ignored FVAR_LINEAR_CORNERS_ONLY NA NA FVAR_LINEAR_CORNERS_PLUS1 k_InterpolateBoundaryEdgeAndCorner false FVAR_LINEAR_CORNERS_PLUS2 k_InterpolateBoundaryEdgeAndCorner true FVAR_LINEAR_BOUNDARIES k_InterpolateBoundaryAlwaysSharp NA ignored FVAR_LINEAR_ALL k_InterpolateBoundaryNone NA ignored Aside from the two corners plus modes that preserve Hbr behavior, all other modes are designed so that the interpolation of a disjoint face-varying region is not affected by changes to other regions that may share the same vertex. So the behavior of a disjoint region should be well understood and predictable when looking at it in isolation e.g. with corners only one would expect to see linear constraints applied where there are topological corners or infinitely sharp creasing applied within the region, and nowhere else. This is not true of the plus modes, and they are named to reflect the fact that more is taken into account where disjoint regions meet. The following example illustrates some undesired effects of the plus modes, which in part motivated the addition of the new corners only mode. The example uses the catmark_fvar_bound0 and catmark_fvar_bound1 shapes from the suite of regression shapes. Both shapes are a simple regular 4x4 grid of quads with face-varying UV data partitioned into multiple disjoint regions. The bound0 shape has two disjoint UV regions -- an upper and lower region -- while the bound1 shape further splits the lower region in two. This first figure illustrates the effect of the original plus1 mode which is also the same for plus2 Note that the effect of splitting the lower UV region in two has the undesired side effect of sharpening the boundary of the upper region. This is the result of the plus1 mode making collective decisions about the sharpness of all face-varying boundaries at the vertex rather than decisions local to each region. In both the plus1 and plus2 cases, all face-varying boundaries sharing a vertex will be sharpened if there are more than two regions meeting at that vertex. The second figure illustrates the effect of the new corners only mode As expected, the splitting of the lower region does not impact the upper region. In this case the decision to sharpen a face-varying boundary is made based on the local topology of each region. Vertex Interpolation Options Since the various options are now presented through a new API Sdc rather than Hbr, based on the history of some of these options and input from interested parties, the following changes have been implemented The naming of the standard creasing method has been changed from Normal to Uniform . Values for SdcOptionsCreasingMethod are now CREASE_UNIFORM standard integer subtraction per level default CREASE_CHAIKIN Chaikin non-uniform averaging around vertices Legacy modes of the smoothtriangle rule have been removed as they were never actually enabled in the code. Values for SdcOptionsTriangleSubdivision are now TRI_SUB_CATMARK Catmull-Clark weights default TRI_SUB_SMOOTH smooth triangle weights These should have little impact since one is a simple change in terminology as part of a new API while the other was removal of an option that was never used. Change to Chaikin creasing method In the process of re-implementing the Chaikin creasing method, observations lead to a conscious choice to change the behavior of Chaikin creasing in the presence of infinitely sharp edges most noticeable at boundaries. Previously, the inclusion of infinite sharpness values in the Chaikin methods computation of edge sharpness around a vertex would prevent a semi-sharp edge from decaying to zero. Infinitely sharp edges are now excluded from the Chaikin non-uniform averaging yielding a much more predictable and desirable result. For example, where the sharpness assignment is actually uniform at such a vertex, the result will now behave the same as the Uniform method. Since this feature has received little use only recently activated in RenderMan, now seemed the best time to make the change before more widespread adoption. Hierarchical Edits While extremely powerful, Hierarchical Edits come with additional maintenance and implementation complexity. Support for them in popular interchange formats and major DCC applications has either been dropped or was never implemented. As a result, the need for Hierarchical Edits is too limited to justify the cost and support for them, and they have therefore been removed from the 3.0 release of OpenSubdiv. Dropping support for Hierarchical Edits allows for significant simplifications of many areas of the subdivision algorithms. While the 3.0 release does not offer direct support for Hierarchical Edits, the architectural changes and direction of 3.0 still facilitate the application of the most common value edits for those wishing to use them -- though not always in the same optimized context. Of course, support for Hierarchical Edits in the future will be considered based on demand and resources. Non-Manifold Topology OpenSubdiv 2.x and earlier was limited to dealing with meshes whose topology was manifold -- a limitation imposed by the use of Hbr. With 3.0 no longer using Hbr, the manifold restriction has also been removed. OpenSubdiv 3.0, therefore, supports a superset of the meshes supported by 2.x and earlier versions with one known exception noted below. Non-manifold meshes that are acceptable to 3.0 however will likely not work with 2.x or earlier. The one known case that 3.0 will not represent the same as 2.x is ironically a case that is non-manifold, and for which Hbr did make special accommodation. That case occurs at a non-manifold vertex where two or more faces meet at a common vertex, but do not share a common edge, and when the boundary interpolation mode is set for smooth corners i.e. edge only, as illustrated below The cage is on the left and is refined to level 2 on the right. On the immediate right, boundary interpolation is set to sharp corners and the results appear the same for 2.x and 3.0. The center and far right illustrate the affects of setting boundary interpolation to smooth corners with 2.x and 3.0 respectively. Note that the 2.x result allows the refined mesh and so the limit surface to split into two while the 3.0 result keeps it connected. When Hbr encounters such vertices, regardless of the boundary mode it splits the vertex -- creating a separate instance of it for each face. So when building an HbrMesh, after finalizing the mesh, it will result in having more vertices than were originally defined termed split vertices. OpenSubdiv 2.x and earlier successfully hid the presence of these extra vertices from users. This case behaves in such a way that violates certain properties of the surface that 3.0 has attempted to emphasize. One of these relates to the nature of the limit surface and becomes more significant in the context of face varying if the cage is connected then so too is its limit surface, or similarly, if the cage consists of N connected regions then the limit surface similarly consists of N connected regions. Another undesirable property here is that the vertex V at which these faces meet must have more than one child vertex V . This makes it difficult to hide split vertices -- OpenSubdiv 2.x tables had an extra level of indirection that made it possible to do this relatively easily, but 3.0 has dispensed with such indirection where possible to streamline performance. Compatibility with RenderMan Since RenderMan and OpenSubdiv versions prior to 3.0 share a common library Hbr, most differences between RenderMan and OpenSubdiv 3.0 are covered in the preceding section of compatibility with OpenSubdiv 2.x. In addition to some features between RenderMan and OpenSubdiv that are not compatible, there are also other differences that may be present due to differences in the implementations of similar features. For most use cases, OpenSubdiv 3.0 is largely compatible with RenderMan. There are however some cases where some differences can be expected. These are highlighted below for completeness. Incompatibilities OpenSubdiv and RenderMan will be incompatible when certain features are used that are not common to both. They are fully described in the 2.x compatibility section and are listed briefly here. OpenSubdiv 3.0 Features Not Supported by RenderMan Non-manifold meshes Choice of the corners only face varying interpolation option RenderMan Features Not Supported by OpenSubdiv 3.0 Hierarchical Edits Other Differences Some differences can occur due to the differing implementations of the feature sets. Additionally, OpenSubdiv 3.0s implementation fixes some issues discovered in Hbr. Smooth Face-Varying Interpolation with Creasing There have been two discrepancies noted in the way that face-varying data is interpolated smoothly in the presence of creases. Smooth face-varying interpolation is expected to match vertex interpolation in the interior and only differ along the boundaries or discontinuities where the face-varying topology is intentionally made to differ from the vertex topology. A simple and effective way to identify discrepancies is to use the X and Y coordinates of vertex positions as the U and V of texture coordinates. If these U and V coordinates are assigned to a face-varying channel, smooth interpolation of U and V is expected to exactly match interpolation of X and Y, regardless of the presence of any sharpness and creasing. Two discrepancies can be seen with Hbr when superimposing the XY vertex interpolation with the projected UV face-varying interpolation. The first discrepancy occurs with interpolation around dart vertices This example shows a simple regular XY grid on the left with an interior sharp edge creating a dart vertex in the center. With no asymmetry in the vertices, the sharpness has no asymmetric affect and the XY vertex interpolation on the immediate right shows the regular grid expected from refinement. On the far right is the UV interpolation from Hbr, which exhibits distortion around the center dart vertex. The second discrepancy occurs with interpolation involving any fractional sharpness values. Hbr effectively ignores any fractional sharpness value in its face-varying interpolation. So edges of vertices with sharpness of say 2.5, will be treated as though their sharpness is 2.0 when face-varying values are interpolated. Similarly, any non-zero sharpness value less than 1.0 is treated as zero by truncation and so is essentially ignored. This example shows an asymmetric 2x2 grid of quads on the left with the center vertex progressively sharpened from 0.5 to 1.0. The three cases of the vertex smooth and sharpened are superimposed on the immediate right to display the three distinct interpolation results. On the far right the interpolation from Hbr displays the same three cases, but only two are visibly distinct -- the sharpness of 0.5 being treated the same as if it were 0.0. Both of these cases are corrected in OpenSubdiv 3.0. Smooth face-varying interpolation in the presence of creasing should match the expected behavior of the vertex interpolation, except where the face-varying topology is explicitly made to differ. The Chaikin Creasing Method At least two discrepancies are know to exist between the implementations of Hbr in RenderMan and OpenSubdiv 3.0 Use of Chaikin creasing with boundaries or infinitely sharp edges Subtle shape differences due to Hbrs use of predictive sharpness Fortunately, this feature was only recently added to Hbr and RenderMan and is little used, so it is expected these differences will have little impact. The first discrepancy is mentioned briefly in the previous section on compatibility between OpenSubdiv 2.x and 3.0. A conscious decision was made to change the averaging of sharpness values involving infinitely sharp edges in order to make results more predictable and favorable. The effects can be seen comparing the regression shape catmark_chaikin2. The second is more subtle and results from an oversight within Hbrs implementation that is not easily corrected. When determining what subdivision rule to apply from one level to the next, the sharpness values at the next level must be known in order to determine whether or not a transition between differing rules is required. If the rule at the next level differs from the previous, a combination of the two is applied. Such a change results from the sharpness values of one or more edges or the vertex itself decaying to zero. Rather than compute the sharpness values at the next level accurately, Hbr predicts it by simply subtracting 1.0 from it, as is done with the uniform creasing method, and it bases decisions on that predicted result. This does not work for Chaikin though. A sharpness value less than 1.0 may not decay to 0 if it is averaged with neighboring sharpness values greater than 1.0, so this sharpness prediction can result in the wrong rule being chosen for the next level. A typical case would have the subdivision rules for Chaikin creasing transition from Corner to Crease at one level, then from Crease to Smooth at the next. Hbrs predictive creasing might mistakenly detect the transition as Corner to Smooth at one level, then after properly computing the sharpness values for the next level later, from Crease to Smooth for the next. One of the regression shapes catmark_chakin1 was disabled from the regression suite because of this effect. The differences in shape that trigger its regression failure were investigated and determined to be the result of this issue. From observations thus far these differences are subtle but can be noticeable. Numerical Precision Since its inception, OpenSubdiv has sought to produce results that were numerically consistent to RenderMan. A regression suite to ensure a certain level of accuracy was provided to detect any substantial deviation. At some point in the development of OpenSubdiv, the point was made that numerical accuracy of Hbr could be improved by changing the order of operations and combining the vertex with the lowest coefficient first in one of the subdivision rules. This was applied more thoroughly in the independent implementation of 3.0 there seemed no reason not to. In most cases the relative magnitudes of the coefficients of subdivision and limit masks is clear so no overhead was necessary to detect them. At a certain point though, this greater accuracy came in conflict with the regression suite. It turned out that high-valence vertices could not be computed to within the desired tolerances set within the suite. The summation of many small coefficients for the adjacent vertices first, before the addition of the much larger coefficient for the primary vertex, allowed for the accumulation of precision that was being truncated by adding the much larger coefficient first in the Hbr implementation. With extremely high valence vertices, a difference in magnitude between the most and least significant coefficients of several orders of magnitude is likely, and that has a significant impact on the single-precision floating point computations. The improved accuracy of OpenSubdiv 3.0 can reach a magnitude that will not go undetected. Whether or not this can lead to visual artifacts is unclear. Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"title\": \"Sdc Overview\",\n+        \"text\": \"Sdc Overview Sdc Overview 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE Subdivision Core Sdc Types, Traits and Options Creasing support Scheme-specific support The FACE, EDGE and VERTEX interfaces The MASK interface Subdivision Core Sdc Sdc is the lowest level layer in OpenSubdiv. Its intent is to separate the core subdivision details from any particular representation of a mesh it was previously bound to Hbr to facilitate the generation of consistent results with other mesh representations, both internal and external to OpenSubdiv. The functionality can be divided roughly into three sections types, traits and options for the supported subdivision schemes computations required to support semi-sharp creasing computations for mask weights of subdivided vertices for all schemes For most common usage, familiarity with only the first of these is necessary -- primarily the use of public types and constants for the choice of subdivision scheme and its associated options. The latter two provide the basis for a more comprehensive implementation of subdivision, which requires considerably more understanding and effort. Overall, the approach was to extract the functionality at the lowest level possible. In some cases, the implementation is not far from being simple global functions. The intent was to start at a low level and build any higher level functionality as needed. What exists now is functional for ongoing development and anticipated needs within OpenSubdiv for the near future. The intent of Sdc is to provide the building blocks for OpenSubdiv and its clients to efficiently process the specific set of supported subdivision schemes. It is not intended to be a general framework for defining customized subdivision schemes. Types, Traits and Options The most basic type is the enum SdcSchemeType that identifies the fixed set of subdivision schemes supported by OpenSubdiv Bilinear , Catmark and Loop . With this alone, we intend to avoid all dynamic casting issues related to the scheme by simply adding members to the associated subclasses for inspection. In addition to the type enum itself, a class defining a fixed set of traits associated with each scheme is provided. While these traits are available as static methods in the interface of a class supporting more functionality for each scheme to be described shortly, the SchemeTypeTraits provide queries of the traits for a variable of type SdcSchemeType -- enabling parameterization of code by the value of a trait without templates or virtual inheritance a simple internal table of traits is constructed and trivially indexed. The second contribution is the collection of all variations in one place that can be applied to the subdivision schemes, i.e. the boundary interpolation rules, creasing method, edge subdivision choices, etc. The fact that these are all declared in one place alone should help clients see the full set of variations that are possible. A simple Options struct a set of bitfields aggregates all of these variations into a single object the equivalent of an integer in this case that are passed around to other Sdc classes andor methods and are expected to be used at a higher level both within OpenSubdiv and externally. By aggregating the options and passing them around as a group, it allows us to extend the set easily in future without the need to rewire a lot of interfaces to accommodate the new choice. Clients can enable new choices at the highest level and be assured that they will propagate to the lowest level where they are relevant. Unlike other options structs used elsewhere to specify variations of a particular method, SdcOptions defines all options that affect the shape of the underlying limit surface of a subdivision mesh. Other operations at higher levels in the library may have options that approximate the shape and so create a slightly different appearance, but SdcOptions is a fundamental part of the definition of the true limit surface. Creasing support Since the computations involved in the support of semi-sharp creasing are independent of the subdivision scheme, the goal in Sdc was to encapsulate all related creasing functionality in a similarly independent manner. Computations involving sharpness values are also much less dependent on topology -- there are vertices and edges with sharpness values, but knowledge of faces or boundary edges is not required, -- so the complexity of topological neighborhoods required for more scheme-specific functionality is arguably not necessary here. Creasing computations have been provided as methods defined on a Crease class that is constructed with a set of Options. Its methods typically take sharpness values as inputs and compute a corresponding set of sharpness values as a result. For the Uniform creasing method previously known as Normal , the computations may be so trivial as to question whether such an interface is worth it, but for Chaikin or other schemes in the future that are non-trivial, the benefits should be clear. Functionality is divided between both uniform and non-uniform, so clients have some control over avoiding unnecessary overhead, e.g. non-uniform computations typically require neighboring sharpness values around a vertex, while uniform does not. Also included as part of the Crease class is the Rule enum -- this indicates if a vertex is Smooth, Crease, Dart or Corner referred to as the mask in Hbr and is a function of the sharpness values at and around a vertex. Knowing the Rule for a vertex can accelerate mask queries, and the Rule can often be inferred based on the origin of a vertex e.g. it originated from the middle of a face, was the child of a Smooth vertex, etc.. Methods are defined for the Crease class to subdivide edge and vertex sharpness values determine the Rule for a vertex based on incident sharpness values determine the transitional weight between two sets of sharpness values Being all low-level and working directly on sharpness values, it is a clients responsibility to coordinate the application of any hierarchical crease edits with their computations. Similarly, in keeping with this as a low-level interface, values are passed as primitive arrays. This follows the trend in OpenSubdiv of dealing with data of various kinds e.g. weights, component indices, now sharpness values, etc. in small contiguous sets of values. In most internal cases we can refer to a set of values or gather what will typically be a small number of values on the stack for temporary use. Scheme-specific support While the SchemeTypeTraits class provides traits for each subdivision scheme supported by OpenSubdiv i.e. Bilinear , Catmark and Loop , the Scheme class provides these more directly, Additionally, the Scheme class provides methods for computing the various sets of weights used to compute new vertices resulting from subdivision. The collection of weights used to compute a single vertex at a new subdivision level is typically referred to as a mask . The primary purpose of the Scheme class is to provide such masks in a manner both general and efficient. Each subdivision scheme has its own values for its masks, and each are provided as specializations of the template class SchemeSchemeType TYPE . The intent is to minimize the amount of code specific to each scheme. The computation of mask weights for subdivided vertices is the most significant contribution of Sdc. The use of semi-sharp creasing with each non-linear subdivision scheme complicates what are otherwise simple masks determined solely by the topology, and packaging that functionality to achieve both the generality and efficiency desired has been a challenge. Mask queries are defined in the Scheme class template, which has specializations for each of the supported subdivision schemes. Mask queries are defined in terms of interfaces for two template parameters the first defining the topological neighborhood of a vertex, and a second defining a container in which to gather the individual weights template  typename FACE , typename MASK  void ComputeFaceVertexMask  FACE const  faceNeighborhood , MASK  faceVertexMask , ... const  Each mask query is expected to call methods defined for the FACE , EDGE or VERTEX classes to obtain the information they require  typically these methods are simple queries about the topology and associated sharpness values. Clients are free to use their own mesh representations to gather the requested information as quickly as possible, or to cache some subset as member variables for immediate inline retrieval. In general, the set of weights for a subdivided vertex is dependent on the following the topology around the parent component from which the vertex originates the type of subdivision Rule applicable to the parent component the type of subdivision Rule applicable to the new child vertex a transitional weight blending the effect between differing parent and child rules This seems fairly straight-forward, until we look at some of the dependencies involved the parent Rule requires the sharpness values at and around the parent component the child Rule requires the subdivided sharpness values at and around the new child vertex though it can sometimes be trivially inferred from the parent the transitional weight between differing rules requires all parent and child sharpness values Clearly the sharpness values are inspected multiple times and so it pays to have them available for retrieval. Computing them on an as-needed basis may be simple for uniform creasing, but a non-uniform creasing method requires traversing topological neighborhoods, and that in addition to the computation itself can be costly. The point here is that it is potentially unreasonable to expect to evaluate the mask weights completely independent of any other consideration. Expecting and encouraging the client to have subdivided sharpness values first, for use in more than one place, is therefore recommended. The complexity of the general case above is also unnecessary for most vertices. Any client using Sdc typically has more information about the nature of the vertex being subdivided and much of this can be avoided -- particularly for the smooth interior case that often dominates. More on that in the details of the Scheme classes. Given that most of the complexity has been moved into the template parameters for the mask queries, the Scheme class remains fairly simple. Like the Crease class, it is instantiated with a set of Options to avoid them cluttering the interface. It is currently little more than a few methods for the limit and refinement masks for each vertex type, plus the few fixed traits of the scheme as static methods. The mask queries have been written in a way that greatly simplifies the specializations required for each scheme. The generic implementation for both the edge-vertex and vertex-vertex masks take care of all of the creasing logic, requiring only a small set of specific masks to be assigned for each Scheme smooth and crease masks for an edge-vertex, and smooth, crease and corner masks for a vertex-vertex. Other than the Bilinear case, which will specialize the mask queries to trivialize them for linear interpolation, the specializations for each Scheme should only require defining this set of masks -- and with two of them common edge-vertex crease and vertex-vertex corner the Catmark scheme only needs to define three. The FACE, EDGE and VERTEX interfaces Mask queries require an interface to a topological neighborhood, currently labeled FACE , EDGE and VERTEX . This naming potentially implies more generality than intended, as such classes are only expected to provide the methods required of the mask queries to compute its associated weights. While all methods must be defined, some may rarely be invoked, and the client has considerable flexibility in the implementation of these they can defer some evaluations lazily until required, or be pro-active and cache information in member variables for immediate access. An approach discussed in the past has alluded to iterator classes that clients would write to traverse their meshes. The mask queries would then be parameterized in terms of a more general and generic mesh component that would make use of more general traversal iterators. The advantage here is the iterators are written once, then traversal is left to the query and only what is necessary is gathered. The disadvantages are that clients are forced to write these to do anything, getting them correct and efficient may not be trivial or possible in some cases, and that the same data e.g. subdivided sharpness may be gathered or computed multiple times for different purposes. The other extreme was to gather everything possible required at once, but that is objectionable. The approach taken here provides a reasonable compromise between the two. The mask queries ask for exactly what they want, and the provided classes are expected to deliver it as efficiently as possible. In some cases the client may already be storing it in a more accessible form and general topological iteration can be avoided. The information requested of these classes in the three mask queries is as follows For FACE  the number of incident vertices For EDGE  the number of incident faces the sharpness value of the parent edge the sharpness values of the two child edges the number of vertices per incident face For VERTEX  the number of incident faces the number of incident edges the sharpness value of the parent vertex the sharpness values for each incident parent edge the sharpness value of the child vertex the sharpness values for each incident child edge The latter should not be surprising given the dependencies noted above. There are also a few more to consider for future use, e.g. whether the EDGE or VERTEX is manifold or not. In most cases, additional information can be provided to the mask queries i.e. pre-determined Rules, and most of the child sharpness values are not necessary. The most demanding situation is a fractional crease that decays to zero -- in which case all parent and child sharpness values in the neighborhood are required to determine the proper transitional weight. The MASK interface Methods dealing with the collections of weights defining a mask are typically parameterized by a MASK template parameter that contains the weights. The set of mask weights is currently divided into vertex-weights, edge-weights and face-weights -- consistent with previous usage in OpenSubdiv and providing some useful correlation between the full set of weights and topology. The vertex-weights refer to parent vertices incident the parent component from which a vertex originated, the edge-weights the vertices opposite incident edges of the parent, and the face-weights the center of incident parent faces. Note the latter is NOT in terms of vertices of the parent but potentially vertices in the child originating from faces of the parent. This has been done historically in OpenSubdiv but is finding less use -- particularly when it comes to providing greater support for the Loop scheme -- and is a point needing attention. So the mask queries require the following capabilities assign the number of vertex, edge andor face weights retrieve the number of vertex, edge andor face weights assign individual vertex, edge andor face weights by index retrieve individual vertex, edge andor face weights by index through a set of methods required of all MASK classes. Since the maximum number of weights is typically known based on the topology, usage within Vtr, Far or Hbr is expected to simply define buffers on the stack. Another option is to utilize pre-allocated tables, partitioned into the three sets of weights on construction of a MASK , and populated by the mask queries. A potentially useful side-effect of this is that the client can define their weights to be stored in either single or double-precision. With that possibility in mind, care was taken within the mask queries to make use of a declared type in the MASK interface  MASKWeight  for intermediate calculations. Having support for double-precision masks in Sdc does enable it at higher levels in OpenSubdiv if later desired, and that support is made almost trivial with MASK being generic. It is important to remember here that these masks are being defined consistent with existing usage within OpenSubdiv both Hbr and the subdivision tables generated by Far . As noted above, the face weights correspond to the centers of incident faces, i.e. vertices on the same level as the vertex for which the mask is being computed, and not relative to vertices in the parent level as with the other sets of weights. It is true that the weights can be translated into a set in terms solely of parent vertices, but in the general case i.e. Catmark subdivision with non-quads in the base mesh this requires additional topological association. In general we would need N-3 weights for the N-3 vertices between the two incident edges, where N is the number of vertices of each face typically 4 even at level 0. Perhaps such a translation method could be provided on the mask class, with an optional indication of the incident face topology for the irregular cases. The Loop scheme does not have face weights , for a vertex-vertex mask, but for an edge-vertex mask it does require weights associated with the faces incident the edge -- either the vertex opposite the edge for each triangle, or its center which has no other use for Loop. Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n-        \"loc\": \"compatibility.html\"\n+        \"loc\": \"sdc_overview.html\"\n     }, {\n-        \"title\": \"Hierarchical Edits\",\n-        \"text\": \"Hierarchical Edits Hierarchical Edits 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE Hierarchical Edits Hierarchical Edits Paths Vertex Edits Edge Edits Face Edits Hierarchical Edits To understand the hierarchical aspect of subdivision, we realize that subdivision itself leads to a natural hierarchy after the first level of subdivision, each face in a subdivision mesh subdivides to four quads in the Catmull-Clark scheme, or four triangles in the Loop scheme. This creates a parent and child relationship between the original face and the resulting four subdivided faces, which in turn leads to a hierarchy of subdivision as each child in turn subdivides. A hierarchical edit is an edit made to any one of the faces, edges, or vertices that arise anywhere during subdivision. Normally these subdivision components inherit values from their parents based on a set of subdivision rules that depend on the subdivision scheme. A hierarchical edit overrides these values. This allows for a compact specification of localized detail on a subdivision surface, without having to express information about the rest of the subdivision surface at the same level of detail. Release Notes 3.0.0 Hierarchical Edits have been marked as extended specification and support for hierarchical features has been removed from the 3.0 release. This decision allows for great simplifications of many areas of the subdivision algorithms. If we can identify legitimate use-cases for hierarchical tags, we will consider re-implementing them in future releases, as time and resources allow. Hierarchical Edits Paths In order to perform a hierarchical edit, we need to be able to name the subdivision component we are interested in, no matter where it may occur in the subdivision hierarchy. This leads us to a hierarchical path specification for faces, since once we have a face we can navigate to an incident edge or vertex by association. We note that in a subdivision mesh, a face always has incident vertices, which are labelled in relation to the face with an integer index starting at zero and in consecutive order according to the usual winding rules for subdivision surfaces. Faces also have incident edges, and these are labelled according to the origin vertex of the edge. In this diagram, the indices of the vertices of the base face are marked in red  so on the left we have an extraordinary Catmull-Clark face with five vertices labeled 0-4  and on the right we have a regular Catmull-Clark face with four vertices labelled 0-3 . The indices of the child faces are blue  note that in both the extraordinary and regular cases, the child faces are indexed the same way, i.e. the sub-face labeled n has one incident vertex that is the result of the subdivision of the parent vertex also labeled n in the parent face. Specifically, we note that the sub-face 1 in both the regular and extraordinary face is nearest to the vertex labelled 1 in the parent. The indices of the vertices of the child faces are labeled green , and this is where the difference lies between the extraordinary and regular case in the extraordinary case, vertex to vertex subdivision always results in a vertex labeled 0 , while in the regular case, vertex to vertex subdivision assigns the same index to the child vertex. Again, specifically, we note that the parent vertex indexed 1 in the extraordinary case has a child vertex 0 , while in the regular case the parent vertex indexed 1 actually has a child vertex that is indexed 1 . Note that this indexing scheme was chosen to maintain the property that the vertex labeled 0 always has the lowest uv parametric value on the face. By appending a vertex index to a face index, we can create a vertex path specification. For example,  655 2 3 0 specifies the 1st. vertex of the 3 rd. child face of the 2 nd. child face of the of the 655 th. face of the subdivision mesh. Vertex Edits Vertex hierarchical edits can modify the value or the sharpness of primitive variables for vertices and sub-vertices anywhere in the subdivision hierarchy. The edits are performed using either an add or a set operator. set indicates the primitive variable value or sharpness is to be set directly to the values specified. add adds a value to the normal result computed via standard subdivision rules. In other words, this operation allows value offsets to be applied to the mesh at any level of the hierarchy. Edge Edits Edge hierarchical edits can only modify the sharpness of primitive variables for edges and sub-edges anywhere in the subdivision hierarchy. Face Edits Face hierarchical edits can modify several properties of faces and sub-faces anywhere in the subdivision hierarchy. Modifiable properties include The set or add operators modify the value of primitive variables associated with faces. The hole operation introduces holes missing faces into the subdivision mesh at any level in the subdivision hierarchy. The faces will be deleted, and none of their children will appear you cannot unhole a face if any ancestor is a hole. This operation takes no float or string arguments. Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"title\": \"Vtr Overview\",\n+        \"text\": \"Vtr Overview Vtr Overview 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE Vectorized Topology Representation Vtr VtrLevel Topological Relationships Memory Efficiency VtrRefinement Parent-child and child-parent relationships Data flexibility Vectorized Topology Representation Vtr Vtr consists of a suite of classes that collectively provide an intermediate representation of topology that supports efficient refinement. Vtr is intended for internal use only and is currently accessed through the Far layer by the FarTopologyRefiner , which assembles these Vtr classes to meet the topological and refinement needs of the Far layer. What follows is therefore more intended to provide insite into the underlying architecture than to describe particular usage. For documentation more relevant to direct usage, proceed to the Far section previously noted. Vtr is vectorized in that its topological data is stored more as a collection of vectors of primitive elements rather than as the faces, vertices and edges that make up many other topological representations. It is essentially a structure-of-arrays SOA approach to topology in contrast to the more common array-of-structures pattern found in many other topological representations. Vtrs use of vectors allows it to be fairly efficient in its use of memory and similarly efficient to refine, but the topology is fixed once defined. Vtr classes are purely topological. They are even more independent of the representation of vertices, faces, etc. than Hbr in that they are not even parameterized by an interface to such components. So the same set of Vtr objects can eventually be used to serve more than one representation of these components. The primary requirement is that a mesh be expressable as an indexable set i.e. a vector or array of vertices, edges and faces. The index of a component uniquely identifies it and properties are retrieved by referring to it by index. Its worth qualifying the term topological here and elsewhere -- we generally refer to topology as subdivision topology rather than mesh topology. A subdivision hierarchy is impacted by the presence of semi-sharp creasing, as the subdivision rules change in response to that creasing. So subdivision topology includes the sharpness values assigned to edges and vertices that affect the semi-sharp creasing. The two primary classes in Vtr consist of VtrLevel - a class representing complete vertex topology for a level VtrRefinement - a class mapping a parent VtrLevel to a child level Others exist to represent the following selection and appropriate tagging of components for sparse refinement divergence of face-varying topology from the vertex topology mapping between face-varying topology at successive levels common low-level utilities, e.g. simple array classes VtrLevel VtrLevel is a complete topological description of a subdivision level, with the topological relations, sharpness values and component tags all stored in vectors literally stdvectors, but easily changed via typedefs. There are no classes or objects for the mesh component types i.e. faces, edges and vertices but simply an integer index to identify each. It can be viewed as a structure-of-arrays representation of the topology any property related to a particular component is stored in an array and accessible using the index identifying that component. So with no classes the for the components, its difficult to say what constitutes a vertex or a face they are each the sum of all the fields scattered amongst the many vectors included. Level represents a single level of a potential hierarchy and is capable of representing the complete base mesh. There are no members that relate data in one level to any other, either below or above. As such, any Level can be used as the base level for a new subdivision hierarchy potentially more than one. All relationships between separate levels are maintained in the VtrRefinement class. Topological Relationships Level requires the definition of and associations between a fixed set of indexable components for all three component types, i.e. an explicit edge list in addition to the expected set of vertices and faces. There are no explicit component objects in the representation, only an integer index  VtrIndex  identifying each component within the set and data associated with that component in the various vectors. The topology is stored as six sets of incident relations between the components two each for the two other component types incident each component type, i.e. for each face, its incident vertices and incident edges for each edge, its incident vertices and incident faces for each vertex, its incident edges and incident faces The collection of incidence relations is a vectorized variation of AIF the Adjacency and Incidence Framework. The set of these six incidence relations is not minimal only four are required, but that set excludes the most desired face-vertex relation but all six are kept and maintained to facilitate faster refinement. While the sizes of several vectors are directly proportional to the number of vertices, edges or faces to which the data is associated, the sizes of some of the vectors for these relations is more cumulative and so additional vectors of offsets is required typical of the face-vertex list commonly used as the minimal definition of mesh topology. Vectors for the sharpness values associated with crease edges and corner vertices are included and so sized according to the number of edges and vertices, along with additional tags for the components that may be helpful to refinement i.e. the type of subdivision Rule associated with each vertex. A Level is really just a container for data in a subdivision level, and so its public methods are primarily to access that data. Modification of the data is protected and only made available to classes that are intended to construct Levels  currently the Far factory class that is responsible for building the base level, and the VtrRefinement class that constructs subsequent levels during refinement. Memory Efficiency One of the advantages in storing data in what is essentially a structure-of-arrays, rather than the array-of-structures more typical of topological representations, is that we can be more selective about memory usage in some cases. Particularly in the case of uniform refinement, when the data in subsequent levels is typically 4x its predecessor, we can minimize what we either generate or keep around at each level. For instance, if only a face-list is required at the finest level, we only need to generate one of the six topological relations the vertices incident each face. When we do keep Levels around in memory as is the case with the FarTopologyRefiner  we do have do have the opportunity to prune what is not strictly necessary after the refinement. Just as with construction, whatever classes are privileged to construct a Level are likely those that will be privileged to prune its contents when needed. The current implementation of Level is far from optimal though -- there are opportunities for improvement. After one level of subdivision, the faces in a Level will be either all quads or tris. Having specializations for these cases and using the more general case in support of N-sided faces for the base level only is one possibility. Levels also allocate dozens of vectors in which to store all data. Since these vectors are of fixed size once created, they could be aggregated by partitioning one or a smaller number of larger block of memory into the desired pieces. The desire to make some of these improvements is part of why Vtr is not directly exposed for public use and instead exposed via Far. VtrRefinement While VtrLevel contains the topology for each subdivision level, VtrRefinement is responsible for creating a new level via refinement of an existing one, and for maintaining the relationships between the components in the parent and child levels. So a simplified view of a subdivision hierarchy with Vtr is a set of Levels with a Refinement between each successive pair. Refinement is a friend of Level and will populate a child level from a parent given a set of refinement parameters. Aside from parameters related to data or depth, there are two kinds of refinement supported uniform and sparse. The latter sparse refinement requires selection of an arbitrary set of components -- any dependent or neighboring components that are required for the limit will be automatically included. So feature-adaptive refinement is just one form of this selective sparse refinement, the criteria being the topological features of interest creases and extra-ordinary vertices. The intent is to eventually provide more flexibility to facilitate the refinement of particular regions of interest or more dynamicadaptive needs. Refinement has also been subclassed according to the type of topological split being performed, i.e. splitting all faces into quads or tris via the QuadRefinement and TriRefinement subclasses. As noted with VtrLevel , there is further room for improvement in memory andor performance here by combining more optimal specializations for both Refinement and Level -- with consideration of separating the uniform and sparse cases. Parent-child and child-parent relationships While Refinement populates a new child Level as part of its refinement operation, it also accumulates the relationships between the parent and child level and as with Level , this data is stored in vectors indexable by the components. The associations between components in the two levels was initially only uni-directional child components were associated with incident components of a parent component based on the parent components topology, so we had a parent-to-child mapping one to many. Storing the reverse child-to-parent mapping was avoided to reduce memory particularly in the case of uniform refinement as it often was not necessary, but a growing need for it, particularly in the case of sparse feature-adaptive refinement, lead to it being included. Data flexibility One of the advantages of the structure-of-arrays representation in both Level and Refinement is that we can make more dynamic choices about what type of data we choose to allocate and use based on needs. For instance, we can choose between maintaining the parent-child or child-parent mapping in Refinement , or both if needed, and we can remove one if no longer necessary. An active example of this is uniform refinement if we only require the face-vertex list at the finest subdivision level, there is no need to generate a complete topological description of that level as would be required of more traditional representations, and given that level is 4x the magnitude of its parent, the savings are considerable. Currently there is nothing specific to a subdivision scheme in the refinement other than the type of topological splitting to apply. The refinement does subdivide sharpness values for creasing, but that too is independent of scheme. Tags were added to the base level that are propagated through the refinement and these too are dependent on the scheme, but are applied externally. Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n-        \"loc\": \"hedits.html\"\n+        \"loc\": \"vtr_overview.html\"\n     }, {\n-        \"title\": \"Additional Resources\",\n-        \"text\": \"Additional Resources Additional Resources 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE Links Videos Feature Adaptive GPU Rendering of Catmull-Clark Subdivision Surfaces 2012 Open Subdivision Technology Review 2012 Autodesk User Group At Anaheim 2013 Why Model with Subdivisions 2013 Meet the Experts The OpenSubdiv Project 2013 Links OpenSubdiv Github Repository OpenSubdiv with Mudbox and Maya Videos Feature Adaptive GPU Rendering of Catmull-Clark Subdivision Surfaces 2012 Open Subdivision Technology Review 2012 Autodesk User Group At Anaheim 2013 Why Model with Subdivisions 2013 Meet the Experts The OpenSubdiv Project 2013 Join special guests, Bill Polson, Dirk Van Gelder, Manuel Kraemer, Takahito Tejima, David G. Yu and Dale Ruffolo, from Pixar Animation Studios GPU team, as they show how real time display of subdivision surfaces helps artists be more productive, and how this code is open source and engineered for ease of integration. Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"title\": \"Getting Started\",\n+        \"text\": \"Getting Started Getting Started 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE Downloading the code Branches  Git Flow Checking out branches API Versions Making Changes Code Overview Downloading the code The code is hosted on a Github public repository. Download and setup information for Git tools can be found here . You can access the OpenSubdiv Git repository at httpsgithub.comPixarAnimationStudiosOpenSubdiv From there, there are several ways of downloading the OpenSubdiv source code. Zip archive  downloaded from here Using a GUI client  you can find a list here Please refer to the documentation of your preferred application. From the GitShell, Cygwin or the CLI  assuming that you have the Git tools installed, you can clone the OpenSubdiv repository directly with the following command git clone https  github.comPixarAnimationStudiosOpenSubdiv.git These methods only pull static archives, which is are not under the version control system and therefore cannot pull updates or push changes back. If you intend on contributing features or fixes to the main trunk of the code, you will need to create a free Github account and clone a fork of the OpenSubdiv repository. Submissions to the main code trunk can be sent using Gits pull-request mechanisms. Please note that we are using the git flow tools so all changes should be made to our dev branch. Before we can accept submissions however, we will need a signed Contributors License Agreement . Branches  Git Flow Since version 1.1.0, OpenSubdiv has adopted the Git Flow branching model . Our active development branch is named dev  all new features and bug fixes should be submitted to this branch. The changes submitted to the dev branch are periodically patched to the release branch as new versions are released. Checking out branches The Git Flow tools are not a requisite for working with the OpenSubdiv code base, but new work should always be performed in the dev branch, or dedicated feature-branches. By default, a cloned repository will be pointing to the release branch. You can switch to the dev branch using the following command git checkout dev You can check that the branch has now been switched simply with git branch Which should return  dev release API Versions OpenSubdiv maintains an internal API versioning system. The version number can be read from the file .opensubdivversion.h . Following the Git-Flow pattern, our releases are indexed using Gits tagging system. List of the existing tags git tag -- list Checking out version 1.2.0 git checkout v1_2_0 Making Changes Direct push access to the OpenSubdiv repository is currently limited to a small internal development team. External code should be submitted by sending Git pull-requests from forks of our dev branch. Code Overview The OpenSubdiv code base contains the following main areas Directory Contents .opensubdiv The main subdivision APIs  Sdc, Vtr, Far and Osd. .examples A small collection of standalone applications that illustrate how to deploy the various features and optimizations of the OpenSubdiv APIs. The GL-based examples rely on the cross-platform GLFW API for interactive window management, while the DirectX ones are OS-native. .tutorials Tutorials showing how to manipulate the APIs of OpenSubdiv. .documentation The reStructuredText source files along with python scripts that generate the HTML documentation site. .regression Standalone regression tests and baseline data to help maintain the integrity of our APIs. If GPU SDKs are detected, some tests will attempt to run computations on those GPUs. Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n-        \"loc\": \"additional_resources.html\"\n+        \"loc\": \"getting_started.html\"\n     }, {\n-        \"title\": \"glStencilViewer\",\n-        \"text\": \"glStencilViewer glStencilViewer 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE SYNOPSIS DESCRIPTION OPTIONS SEE ALSO SYNOPSIS glStencilViewer  -f   -yup   -u   -a   -l refinement level  objfiles  -catmark   -loop   -bilinear  DESCRIPTION glStencilViewer is a stand-alone application that showcases the application of pre-computed stencil tables to a collection of geometric test shapes. Multiple controls are available to experiment with the algorithms. OPTIONS See the description of the common comand line options for the subset of common options supported here. SEE ALSO Other examples  glViewer , glFVarViewer , glEvalLimit , glStencilViewer , glPtexViewer , glPaintTest , glShareTopology , dxViewer , dxPtexViewer , Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"title\": \"License\",\n+        \"text\": \"License License 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE Open Source License OpenSubdiv is covered by a modified Apache 2.0 license included below, and is free to use for commercial or non-commercial use. All Pixar patents in the area of subdivision surface algorithms have also been released for public use. We welcome any involvement in the development or extension of this code in fact, we would love it. Please contact us if you are interested. For information on Apache licenses, see httpwww.apache.orglicenses The following license text describes the open source policy adopted by Pixar and is included in every source file. Copyright 2013 Pixar Licensed under the Apache License, Version 2.0 the Apache License with the following modification you may not use this file except in compliance with the Apache License and the following modification to it Section 6. Trademarks. is deleted and replaced with 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor and its affiliates, except as required to comply with Section 4c of the License and to reproduce the content of the NOTICE file. You may obtain a copy of the Apache License at httpwww.apache.orglicensesLICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the Apache License with the above modification is distributed on an AS IS BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the Apache License for the specific language governing permissions and limitations under the Apache License. Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n-        \"loc\": \"glstencilviewer.html\"\n+        \"loc\": \"license.html\"\n     }, {\n         \"title\": \"Tutorials\",\n         \"text\": \"Tutorials Tutorials 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE Bfr Tutorials 1. Basic Evaluation and Tessellation Tutorial 1.1 Tutorial 1.2 Tutorial 1.3 Tutorial 1.4 Tutorial 1.5 2. More on Tessellation Tutorial 2.1 Tutorial 2.2 3. Additional Topics Tutorial 3.1 Tutorial 3.2 Far Tutorials 1. Basic Construction and Interpolation Tutorial 1.1 Tutorial 1.2 2. Uniform Refinement and Primvar Data Types Tutorial 2.1 Tutorial 2.2 Tutorial 2.3 3. Creating a Custom FarTopologyRefinerFactory Tutorial 3.1 4. Construction and Usage of FarStencilTables Tutorial 4.1 Tutorial 4.2 Tutorial 4.3 5. Construction and Usage of FarPatchTables Tutorial 5.1 Tutorial 5.2 Tutorial 5.3 Osd Tutorials Tutorial 0 Hbr Tutorials Tutorial 0 Tutorial 1 Tutorial 2 The tutorial source code can be found in the github.com repository or in your local repository roottutorials . Bfr Tutorials All tutorials for the Bfr interface follow a similar pattern without any command line arguments, a default mesh usually a cube is used and the results printed to standard output in Obj format. Command line arguments can be used to specify an alternate mesh for input, as well as directing the output to a specified Obj file. Some tutorials may offer additional command line options to trigger internal options relevant to the topic, e.g. those illustrating tessellation may support a -quads option to use the option to tessellate quad-bases subdivision meshes with quads. 1. Basic Evaluation and Tessellation Tutorial 1.1 This tutorial illustrates the use of BfrSurfaceFactory and BfrSurface to evaluate points on the limit of each face. The limit positions at all corners of the face are evaluated and connected to the limit position in the center of the face -- creating a simple triangular tessellation. code Tutorial 1.2 This tutorial shows the added use of BfrTessellation to identify the set of points and connectivity for a uniform tessellation. Both a Surface and Tessellation is identified for each face, with the Tessellation indicating which points are to be evaluated by the Surface. code Tessellation patterns for quad-based subdivision schemes can optionally preserve quads left or be fully triangulated center, while triangular schemes always yield triangles right Tutorial 1.3 This tutorial extends the previous tutorial on uniform Tessellation by adding face-varying Surfaces to compute corresponding UVs for each evaluated position. code Tutorial 1.4 This tutorial extends the previous tutorial on uniform tessellation of position and UV by illustrating how additional mesh data interleaved with the position and UV data is easily handled. code Tutorial 1.5 This tutorial is similar to the first tutorial showing uniform tessellation of position but makes use of limit stencils for its evaluation of points of the tessellation pattern. code 2. More on Tessellation Tutorial 2.1 This tutorial extends the use of Tessellation to illustrate the use of non-uniform tessellation rates per edge. A simple edge-length metric is used to determine the tessellation rate for each edge of a face. code The following contrasts uniform tessellation left with the resulting length-based tessellations -- preserving quads center and fully triangulated right Tutorial 2.2 This tutorial is a more complex extension of the use of Tessellation that illustrates how the separation and association of tessellation data with the boundary and interior of the face can be used. Limit points evaluated on the vertices and edges of a face the boundary of the Tessellation are computed once and shared with adjacent faces -- creating a topologically watertight tessellation of the mesh. code 3. Additional Topics Tutorial 3.1 This tutorial shows a basic example of the more advanced topic of creating a subclass of SurfaceFactory adapted to a connected mesh representation -- requiring an implementation of the SurfaceFactoryMeshAdapter interface for that mesh. A simplified version of the implementation of FarTopologyRefiner is provided. Note that the code imported here is that of the main program, not the separate header and source files of the custom subclass illustrated -- which current documentation scripts cannot import. Tutorial 3.2 This tutorial shows how to initialize and retain Surfaces for later use. The simple uniform tessellation tutorial is modified to first create and populate a simple caching structure that initializes and stores the Surfaces for all faces of the mesh. The loop for each face of the mesh then retrieves its Surface and associated patch points from the cache. code Far Tutorials 1. Basic Construction and Interpolation Tutorial 1.1 This tutorial presents the requisite steps to instantiate a mesh as a FarTopologyRefiner from simple topological data and to interpolate vertex data associated with the mesh. code Tutorial 1.2 This tutorial makes use of a different vertex data definition for use when vertex data is of arbitrary width. Uniform refinement is applied to data buffers of three types two of fixed but different sizes and the third a union of the two that is dynamically sized and constructed. code 2. Uniform Refinement and Primvar Data Types Tutorial 2.1 Building on the basic tutorial, this example shows how to instantiate a simple mesh, refine it uniformly and then interpolate both vertex and varying primvar data. code Tutorial 2.2 Building on the previous tutorial, this example shows how to instantiate a simple mesh, refine it uniformly and then interpolate both vertex and face-varying primvar data. The resulting interpolated data is output in Obj format, with the face-varying data recorded in the UV texture layout. code Tutorial 2.3 Building on previous tutorials, this example shows how to instantiate a simple mesh, refine it uniformly, interpolate both vertex and face-varying primvar data, and finally calculate approximated smooth normals. The resulting interpolated data is output in Obj format. code 3. Creating a Custom FarTopologyRefinerFactory Tutorial 3.1 Previous tutorials have instantiated topology from a simple face-vertex list via the FarTopologyDescriptor and its TopologyRefinerFactory. This tutorial shows how to more efficiently convert an existing high-level topology representation to a FarTopologyDescriptor with a custom factory class. code 4. Construction and Usage of FarStencilTables Tutorial 4.1 This tutorial shows how to create and manipulate a StencilTable. Factorized stencils are used to efficiently interpolate vertex primvar data buffers. code Tutorial 4.2 This tutorial shows how to create and manipulate StencilTables for both vertex and varying primvar data buffers vertex positions and varying colors. code Tutorial 4.3 This tutorial shows how to create and manipulate tables of cascading stencils to apply hierarchical vertex edits. code 5. Construction and Usage of FarPatchTables Tutorial 5.1 This tutorial shows how to compute points on the limit surface at arbitrary parametric locations using a FarPatchTable constructed from adaptive refinement. code Tutorial 5.2 Building on the previous tutorial, this example shows how to manage the limit surface of a potentially large mesh by creating and evaluating separate PatchTables for selected groups of faces of the mesh. code Tutorial 5.3 Building on the previous tutorials for both PatchTables and StencilTables, this example shows how to construct a LimitStencilTable to repeatedly evaluate an arbitrary collection of points on the limit surface. code Osd Tutorials Tutorial 0 This tutorial demonstrates the manipulation of Osd Evaluator and BufferDescriptor. code Hbr Tutorials Use of Hbr is no longer recommended -- these tutorials are included solely for historical reference. Tutorial 0 This tutorial presents, in a very succinct way, the requisite steps to instantiate an Hbr mesh from simple topological data. code Tutorial 1 This tutorial shows how to safely create Hbr meshes from arbitrary topology. Because Hbr is a half-edge data structure, it cannot represent non-manifold topology. Ensuring that the geometry used is manifold is a requirement to use Hbr safely. This tutorial presents some simple tests to detect inappropriate topology. code Tutorial 2 This tutorial shows how to subdivide uniformly a simple Hbr mesh. We are building upon previous tutorials and assuming a fully instantiated mesh we start with an HbrMesh pointer initialized from the same pyramid shape used in hbr_tutorial_0. We then apply the Refine function sequentially to all the faces in the mesh to generate several levels of uniform subdivision. The resulting data is then dumped to the terminal in Wavefront OBJ format for inspection. code Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n         \"loc\": \"tutorials.html\"\n     }, {\n-        \"title\": \"Using Hbr\",\n-        \"text\": \"Using Hbr Using Hbr 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE Vertex Template API Creating a Mesh Instantiating an HbrMesh Creating Vertices Creating Faces Wrapping Things Up Boundary Interpolation Rules Adding Creases Vertex Creases Edge Creases Holes Hierarchical Edits Face-varying Data Instantiating the HbrMesh Setting the Face-Varying Data Retrieving the Face-Varying Data Valence Operators Managing Singular Vertices Note As of OpenSubdiv 3.0, all Hbr dependencies have been removed from the core APIs  Sdc , Vtr , Far , Osd . The legacy source code of Hbr is provided purely for regression and legacy purposes. If your code is currently depending on Hbr functionality, we recommend migrating to the newer APIs as we cannot guarantee that this code will be maintained in future releases. For more information see the 3.0 release notes Vertex Template API The Hbr API abstracts the vertex class through templating. Client-code is expected to provide a vertex class that implements the requisite interpolation functionality. Here is an example of a simple vertex class that accounts for 3D position, but does not support arbitrary variables or varying interpolation. struct Vertex  Vertex    Vertex  int i    Vertex  const Vertex  src   _pos  0   src . _pos  0  _pos  1   src . _pos  1  _pos  2   src . _pos  2    Vertex     void AddWithWeight  const Vertex  src , float weight , void   0   _pos  0   weight  src . _pos  0  _pos  1   weight  src . _pos  1  _pos  2   weight  src . _pos  2   void AddVaryingWithWeight  const Vertex  , float , void   0    void Clear  void   0   _pos  0   _pos  1   _pos  2   0.0f   void SetPosition  float x , float y , float z   _pos  0   x  _pos  1   y  _pos  2   z   void ApplyVertexEdit  const OpenSubdiv  HbrVertexEdit  Vertex   edit   const float  src  edit . GetEdit  switch  edit . GetOperation   case OpenSubdiv  HbrHierarchicalEdit  Vertex  Set  _pos  0   src  0  _pos  1   src  1  _pos  2   src  2  break  case OpenSubdiv  HbrHierarchicalEdit  Vertex  Add  _pos  0   src  0  _pos  1   src  1  _pos  2   src  2  break  case OpenSubdiv  HbrHierarchicalEdit  Vertex  Subtract  _pos  0  - src  0  _pos  1  - src  1  _pos  2  - src  2  break    void ApplyMovingVertexEdit  const OpenSubdiv  HbrMovingVertexEdit  Vertex       custom functions  data not required by Hbr ------------------------- Vertex  float x , float y , float z   _pos  0   x  _pos  1   y  _pos  2   z   const float  GetPos  const  return _pos   float _pos  3   In some cases, if only topological analysis is required, the class can be left un-implemented. Far and Osd for instance store vertex data in serialized interleaved vectors. Here is the OsdVertex class for reference class Vertex  public  Vertex   Vertex  int  index    Vertex  Vertex const   src    void AddWithWeight  Vertex const   i  , float  weight  , void   0   void AddVaryingWithWeight  const Vertex   i  , float  weight  , void   0   void Clear  void   0   void ApplyVertexEdit  FarVertexEdit const      Creating a Mesh The following tutorial walks through the steps of instantiating a simple Hbr mesh. The code found in regressioncommonshape_utils.h can also be used as an example. While this implementation covers many of Hbr s features, it does not provide coverage for the complete Renderman specification though. Instantiating an HbrMesh First we need to instantiate a mesh object. Hbr supports 3 subdivision schemes Catmull-Clark catmark Loop Bilinear The scheme is selected by passing an specialized instance of HbrSubdivisionT , HbrCatmarkSubdivisionT in this case. The scheme can be shared across multiple mesh objects, so we only need a single instance. static OpenSubdiv  HbrCatmarkSubdivision  Vertex  _scheme  OpenSubdiv  HbrMesh  Vertex   mesh  new OpenSubdiv  HbrMesh  Vertex   _scheme  Creating Vertices Adding vertices to the mesh is accomplished using the HbrMeshNewVertex method. Because Hbr uses a dedicated vertex allocator to help alleviate the performance impact of intensive fragmented memory allocations. This optimization results in the following design pattern Vertex vtx  for  int i  0  i  numVerts  i    Vertex  v  mesh - NewVertex  i , vtx   v-SetPosition  We instantiate a single default vertex object named vtx on the stack. We then recover the pointer to the actual vertex created in the mesh from the NewVertex method. Once we have recovered that pointer, we can set the data for our vertex by using any of the custom accessors. Creating Faces Once all the vertices have been registered in the mesh, we can start adding the faces with HbrMeshNewFace . Assuming we had an obj style reader, we need to know the number of vertices in the face and the indices of these vertices. for  int f  0  f  numFaces   f   int nverts  obj - GetNumVertices  f  const int  faceverts  obj - GetFaceVerts  f  mesh - NewFace  nv , fv , 0   However, Hbr is not able to handle non-manifold geometry. In order to avoid tripping asserts or causing memory violations, lets rewrite the previous loop with some some prototype code to check the validity of the topology. for  int f  0  f  numFaces   f   int nv  obj - GetNumVertices  f  const int  fv  obj - GetFaceVerts  f   triangles only for Loop subdivision  if  scheme  kLoop  and  nv  3   printf  Trying to create a Loop subd with non-triangle face n   continue    now check the half-edges connectivity for  int j  0  j  nv  j    OpenSubdiv  HbrVertex  T   origin  mesh - GetVertex  fv  j   OpenSubdiv  HbrVertex  T   destination  mesh - GetVertex  fv  j  1   nv   OpenSubdiv  HbrHalfedge  T   opposite  destination - GetEdge  origin  if  origin  NULL  destination  NULL   printf   An edge was specified that connected a nonexistent vertex n   continue   if  origin  destination   printf   An edge was specified that connected a vertex to itself n   continue   if  opposite  opposite - GetOpposite    printf   A non-manifold edge incident to more than 2 faces was found n   continue   if  origin - GetEdge  destination   printf   An edge connecting two vertices was specified more than once.  Its likely that an incident face was flipped n   continue    mesh - NewFace  nv , fv , 0   Wrapping Things Up Once we have vertices and faces set in our mesh, we still need to wrap things up by calling HbrMeshFinish  mesh - Finish  Finish iterates over the mesh to apply the boundary interpolation rules and checks for singular vertices. At this point, there is one final topology check remaining to validate the mesh mesh - Finish  if  mesh - GetNumDisconnectedVertices   printf  The specified subdivmesh contains disconnected surface components. n    abort or iterate over the mesh to remove the offending vertices  Boundary Interpolation Rules The rule-set can be selected using the following accessors Vertex and varying data mesh - SetInterpolateBoundaryMethod  OpenSubdiv  HbrMesh  Vertex  k_InterpolateBoundaryEdgeOnly  Face-varying data mesh - SetFVarInterpolateBoundaryMethod  OpenSubdiv  HbrMesh  Vertex  k_InterpolateBoundaryEdgeOnly  Additional information on boundary interpolation rules can be found here Warning The boundary interpolation rules must be set before the call to HbrMeshFinish , which sets the sharpness values to boundary edges and vertices based on these rules. Adding Creases Hbr supports a sharpness attribute on both edges and vertices. Sharpness is set using the SetSharpnessfloat accessors. Vertex Creases Given an index, vertices are very easy to access in the mesh. int idx   vertex index float sharp   the edge sharpness OpenSubdiv  HbrVertex  Vertex   v  mesh - GetVertex  idx  if  v   v - SetSharpness  std  max  0.0f , sharp    else printf  cannot find vertex for corner tag d n  , idx  Edge Creases Usually, edge creases are described with a vertex indices pair. Here is some sample code to locate the matching half-edge and set a crease sharpness. int v0 , v1   vertex indices float sharp   the edge sharpness OpenSubdiv  HbrVertex  Vertex   v  mesh - GetVertex  v0 ,  w  mesh - GetVertex  v1  OpenSubdiv  HbrHalfedge  Vertex   e  0  if  v  w   if  e  v - GetEdge  w   0  e  w - GetEdge  v  if  e   e - SetSharpness  std  max  0.0f , sharp    else printf  cannot find edge for crease tag d,d n  , v0 , v1   Holes Hbr faces support a hole tag. int idx   the face index OpenSubdiv  HbrFace  Vertex   f  mesh - GetFace  idx  if  f   f - SetHole   else printf  cannot find face for hole tag d n  , idx  Note The hole tag is hierarchical  sub-faces can also be marked as holes. See Hierarchical Edits Hierarchical Edits Hbr supports the following types of hierarchical edits Type Function Corner edits Modify vertex sharpness Crease edits Modify edge sharpness FaceEdit Modify custom face data FVarEdit Modify face-varying data VertexEdit Modify vertex and varying data HoleEdit Set hole tag Modifications are one of the following 3 operations Operation Set Add Subtract Here is a simple example that creates a hierarchical vertex edit.  path  655, 2, 3, 0 int faceid  655 , nsubfaces  2 , subfaces  2    2 , 3 , vertexid  0  int offset  0 ,  offset to the vertex or varying data numElems  3   number of elements to apply the modifier to x,y,z  3 bool isP  false   shortcut to identify modifications to the vertex position P OpenSubdiv  HbrHierarchicalEdit  Vertex  Operation op  OpenSubdiv  HbrHierarchicalEdit  T  Set  float values  3    1.0f , 0.5f , 0.0f   edit values OpenSubdiv  HbrVertexEdit  T   edit  new OpenSubdiv  HbrVertexEdit  T   faceid , nsubfaces , subfaces , vertexid , offset , floatwidth , isP , op , values  Face-varying Data Here is a walk-through of how to store face-varying data for a u,v pair. Unlike vertex and varying data which is accessed through the templated vertex API, face-varying data is directly aggregated as vectors of float data. Instantiating the HbrMesh The HbrMesh needs to retain some knowledge about the face-varying data that it carries in order to refine it correctly. int fvarwidth  2   total width of the fvar data static int indices  1    0 ,  1 offset set to 0 widths  1    2   2 floats in a u,v pair int const fvarcount  fvarwidth  0  1  0 ,  fvarindices  fvarwidth  0  indices  NULL ,  fvarwidths  fvarwidth  0  widths  NULL  mesh  new OpenSubdiv  HbrMesh  T    _scheme , fvarcount , fvarindices , fvarwidths , fvarwidth  Setting the Face-Varying Data After the topology has been created, Hbr is ready to accept face-varying data. Here is some sample code for  int i  0 , idx  0  i  numFaces   i   OpenSubdiv  HbrFace  Vertex   f  mesh - GetFace  i  int nv  f - GetNumVertices   note this is not the fastest way OpenSubdiv  HbrHalfedge  Vertex   e  f - GetFirstEdge  for  int j  0  j  nv   j , e  e - GetNext   OpenSubdiv  HbrFVarData  Vertex   fvt  e - GetOrgVertex  - GetFVarData  f  float const  fvdata  GetFaceVaryingData  i , j  if  not fvt . IsInitialized    if no fvar daa exists yet on the vertex fvt . SetAllData  2 , fvdata   else if  not fvt . CompareAll  2 , fvdata    if there already is fvar data and there is a boundary add the new data OpenSubdiv  HbrFVarData  T   nfvt  e - GetOrgVertex  - NewFVarData  f  nfvt . SetAllData  2 , fvdata     Retrieving the Face-Varying Data The HbrFVarData structures are expanded during the refinement process, with every sub-face being assigned a set of interpolated face-varying data. This data can be accessed in 2 ways  From a face, passing a vertex index  OpenSubdivHbrFaceVertex  f OpenSubdiv  HbrFVarData const  fv  f . GetFVarData  vindex  const float  data  fv . GetData  From a vertex, passing a pointer to an incident face  OpenSubdivHbrFaceVertex  f OpenSubdiv  HbrFVarData const  fv  myVertex . GetFVarData  f  const float  data  fv . GetData  Valence Operators When manipulating meshes, it is often necessary to iterate over neighboring faces or vertices. Rather than gather lists of pointers and return them, Hbr exposes an operator pattern that guarantees consistent mesh traversals. The following example shows how to use an operator to count the number of neighboring vertices use HbrVertexGetValence for proper valence counts OpenSubdivHbrVertexVertex  v class MyOperator  public OpenSubdiv  HbrVertexOperator  Vertex   public  int count  MyOperator   count  0    virtual void operator   OpenSubdiv  HbrVertex  Vertex   v    count    MyOperator op  v - ApplyOperatorSurroundingVertices  op  Managing Singular Vertices Certain topological configurations would force vertices to share multiple half-edge cycles. Because Hbr is a half-edge representation, these singular vertices have to be duplicated as part of the HbrMeshFinish phase of the instantiation. These duplicated vertices can cause problems for client-code that tries to populate buffers of vertex or varying data. The following sample code shows how to match the vertex data to singular vertex splits  Populating an OsdCpuVertexBuffer with vertex data positions,... float const  vtxData  inMeshFn . getRawPoints   returnStatus  OpenSubdiv  OsdCpuVertexBuffer  vertexBuffer  OpenSubdiv  OsdCpuVertexBuffer  Create  numVertexElements , numFarVerts  vertexBuffer - UpdateData  vtxData , 0 , numVertices   Duplicate the vertex data into the split singular vertices std  vector  std  pair  int , int   const splits  hbrMesh - GetSplitVertices  for  int i  0  i   int  splits . size   i   vertexBuffer - UpdateData  vtxData  splits  i . second  numVertexElements , splits  i . first , 1   Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"title\": \"bfr_tutorial_1_5.cpp\",\n+        \"text\": \"bfr_tutorial_1_5.cpp bfr_tutorial_1_5.cpp 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE httpsgithub.comPixarAnimationStudiosOpenSubdivblobreleasetutorialsbfrtutorial_1_5bfr_tutorial_1_5.cpp ------------------------------------------------------------------------------  Tutorial description   This tutorial is an alternative to an earlier tutorial that showed  uniform tessellation. This version differs by evaluating the points  of the tessellation using limit stencils instead of the standard  Surface evaluation methods.   Limit stencils factor the evaluation into a set of coefficients for  each control point affecting the Surface.  include opensubdivfartopologyRefiner.h include opensubdivbfrrefinerSurfaceFactory.h include opensubdivbfrsurface.h include opensubdivbfrtessellation.h include vector include string include cstring include cstdio  Local headers with support for this tutorial in namespace tutorial include .meshLoader.h include .objWriter.h using namespace OpenSubdiv    Simple command line arguments to provide input and run-time options  class Args  public  std  string inputObjFile  std  string outputObjFile  Sdc  SchemeType schemeType  int tessUniformRate  bool tessQuadsFlag  public  Args  int argc , char  argv   inputObjFile , outputObjFile , schemeType  Sdc  SCHEME_CATMARK , tessUniformRate  5 , tessQuadsFlag  false   for  int i  1  i  argc   i   if  strstr  argv  i , .obj   if  inputObjFile . empty   inputObjFile  std  string  argv  i   else  fprintf  stderr , Warning Extra Obj file s ignored n  , argv  i    else if   strcmp  argv  i , -o   if   i  argc  outputObjFile  std  string  argv  i   else if   strcmp  argv  i , -bilinear   schemeType  Sdc  SCHEME_BILINEAR   else if   strcmp  argv  i , -catmark   schemeType  Sdc  SCHEME_CATMARK   else if   strcmp  argv  i , -loop   schemeType  Sdc  SCHEME_LOOP   else if   strcmp  argv  i , -res   if   i  argc  tessUniformRate  atoi  argv  i   else if   strcmp  argv  i , -quads   tessQuadsFlag  true   else  fprintf  stderr , Warning Unrecognized argument s ignored n  , argv  i     private  Args       The main tessellation function given a mesh and vertex positions,  tessellate each face -- writing results in Obj format.  void tessellateToObj  Far  TopologyRefiner const  meshTopology , std  vector  float  const  meshVertexPositions , Args const  options     Use simpler local type names for the Surface and its factory  typedef Bfr  RefinerSurfaceFactory  SurfaceFactory  typedef Bfr  Surface  float  Surface    Initialize the SurfaceFactory for the given base mesh very low  cost in terms of both time and space and tessellate each face  independently i.e. no shared vertices   Note that the SurfaceFactory is not thread-safe by default due to  use of an internal cache. Creating a separate instance of the  SurfaceFactory for each thread is one way to safely parallelize  this loop. Another preferred is to assign a thread-safe cache  to the single instance.   First declare any evaluation options when initializing though  none are used in this simple case  SurfaceFactory  Options surfaceOptions  SurfaceFactory meshSurfaceFactory  meshTopology , surfaceOptions    The Surface to be constructed and evaluated for each face -- as  well as the intermediate and output data associated with it -- can  be declared in the scope local to each face. But since dynamic  memory is involved with these variables, it is preferred to declare  them outside that loop to preserve and reuse that dynamic memory.  Surface faceSurface  std  vector  float  faceControlPoints  std  vector  float  limitStencils  std  vector  float  outCoords  std  vector  float  outPos , outDu , outDv  std  vector  int  outFacets    Assign Tessellation Options applied for all faces. Tessellations  allow the creating of either 3- or 4-sided faces -- both of which  are supported here via a command line option  int const tessFacetSize  3  options . tessQuadsFlag  Bfr  Tessellation  Options tessOptions  tessOptions . SetFacetSize  tessFacetSize  tessOptions . PreserveQuads  options . tessQuadsFlag    Process each face, writing the output of each in Obj format  tutorial  ObjWriter objWriter  options . outputObjFile  int numFaces  meshSurfaceFactory . GetNumFaces  for  int faceIndex  0  faceIndex  numFaces   faceIndex     Initialize the Surface for this face -- if valid skipping  holes and boundary faces in some rare cases  if   meshSurfaceFactory . InitVertexSurface  faceIndex ,  faceSurface   continue     Resize stencils and control point arrays based on the number  of control points for the Surface  int numControlPoints  faceSurface . GetNumControlPoints  limitStencils . resize  3  numControlPoints  float  pStencil  limitStencils . data  float  duStencil  limitStencils . data   numControlPoints  float  dvStencil  limitStencils . data   numControlPoints  2    Limit stencils can be applied using the control points in a  local array or directy from the mesh. Both are shown here, so  if using the local array, resize and populate it  bool gatherControlPoints  true  if  gatherControlPoints   faceControlPoints . resize  numControlPoints  3  faceSurface . GatherControlPoints  meshVertexPositions . data , 3 , faceControlPoints . data , 3     Declare a simple uniform Tessellation for the Parameterization  of this face and identify coordinates of the points to evaluate  Bfr  Tessellation tessPattern  faceSurface . GetParameterization , options . tessUniformRate , tessOptions  int numOutCoords  tessPattern . GetNumCoords  outCoords . resize  numOutCoords  2  tessPattern . GetCoords  outCoords . data    Evaluate and apply stencils to compute points of the tessellation  outPos . resize  numOutCoords  3  outDu . resize  numOutCoords  3  outDv . resize  numOutCoords  3  for  int i  0  i  numOutCoords   i   float const  uv  outCoords . data   i  2  faceSurface . EvaluateStencil  uv , pStencil , duStencil , dvStencil  float  p  outPos . data   i  3  float  du  outDu . data   i  3  float  dv  outDv . data   i  3  if  gatherControlPoints   float const  controlPoints  faceControlPoints . data  faceSurface . ApplyStencil  pStencil , controlPoints , 3 , p  faceSurface . ApplyStencil  duStencil , controlPoints , 3 , du  faceSurface . ApplyStencil  dvStencil , controlPoints , 3 , dv   else  float const  meshPoints  meshVertexPositions . data  faceSurface . ApplyStencilFromMesh  pStencil , meshPoints , 3 , p  faceSurface . ApplyStencilFromMesh  duStencil , meshPoints , 3 , du  faceSurface . ApplyStencilFromMesh  dvStencil , meshPoints , 3 , dv      Identify the faces of the Tessellation   Note the need to offset vertex indices for the output faces --  using the number of vertices generated prior to this face. One  of several Tessellation methods to transform the facet indices  simply translates all indices by the desired offset.  int objVertexIndexOffset  objWriter . GetNumVertices  int numFacets  tessPattern . GetNumFacets  outFacets . resize  numFacets  tessFacetSize  tessPattern . GetFacets  outFacets . data  tessPattern . TransformFacetCoordIndices  outFacets . data , objVertexIndexOffset    Write the evaluated points and faces connecting them as Obj  objWriter . WriteGroupName  baseFace_ , faceIndex  objWriter . WriteVertexPositions  outPos  objWriter . WriteVertexNormals  outDu , outDv  objWriter . WriteFaces  outFacets , tessFacetSize , true , false      Load command line arguments, specified or default geometry and process  int main  int argc , char  argv   Args args  argc , argv  Far  TopologyRefiner  meshTopology  0  std  vector  float  meshVtxPositions  std  vector  float  meshFVarUVs  meshTopology  tutorial  createTopologyRefiner  args . inputObjFile , args . schemeType , meshVtxPositions , meshFVarUVs  if  meshTopology  0   return EXIT_FAILURE   tessellateToObj   meshTopology , meshVtxPositions , args  delete meshTopology  return EXIT_SUCCESS   ------------------------------------------------------------------------------ Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n-        \"loc\": \"using_osd_hbr.html\"\n+        \"loc\": \"bfr_tutorial_1_5.html\"\n     }, {\n-        \"title\": \"far_tutorial_5_2.cpp\",\n-        \"text\": \"far_tutorial_5_2.cpp far_tutorial_5_2.cpp 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE httpsgithub.comPixarAnimationStudiosOpenSubdivblobreleasetutorialsfartutorial_5_2far_tutorial_5_2.cpp ------------------------------------------------------------------------------  Tutorial description   This tutorial shows how to manage the limit surface of a potentially  large mesh by creating groups of patches for selected faces of the  mesh. Familiarity with construction and evaluation of a PatchTable  is assumed see tutorial_5_1.   When the patches for a mesh do not need to be retained for further  use, e.g. when simply computing points for a tessellation, the time  and space required to construct a single large PatchTable can be  considerable. By constructing, evaluating and discarding smaller  PatchTables for subsets of the mesh, the high transient memory cost  can be avoided when computed serially. When computed in parallel,  there may be little memory savings, but the construction time can  then be distributed.   This tutorial creates simple geometry currently a lattice of cubes  that can be expanded in complexity with a simple multiplier. The  collection of faces are then divided into a specified number of groups  from which patches will be constructed and evaluated. A simple  tessellation a triangle fan around the midpoint of each face is then  written in Obj format to the standard output.  include ......regressioncommonarg_utils.h include ......regressioncommonfar_utils.h include opensubdivfartopologyDescriptor.h include opensubdivfarprimvarRefiner.h include opensubdivfarpatchTableFactory.h include opensubdivfarpatchMap.h include opensubdivfarptexIndices.h include cassert include cstdio include cstring include fstream include sstream using namespace OpenSubdiv  using Far  Index    Global utilities in this namespace are not relevant to the tutorial.  They simply serve to construct some default geometry to be processed  in the form of a TopologyRefiner and vector of vertex positions.  namespace    Simple structs for x,y,z position and a 3-tuple for the set  of vertices of a triangle  struct Pos  Pos    Pos  float x , float y , float z   p  0   x , p  1   y , p  2   z   Pos operator   Pos const  op  const  return Pos  p  0   op . p  0 , p  1   op . p  1 , p  2   op . p  2    Clear and AddWithWeight required for interpolation void Clear  void   0   p  0   p  1   p  2   0.0f   void AddWithWeight  Pos const  src , float weight   p  0   weight  src . p  0  p  1   weight  src . p  1  p  2   weight  src . p  2   float p  3   typedef std  vector  Pos  PosVector  struct Tri  Tri    Tri  int a , int b , int c   v  0   a , v  1   b , v  2   c   int v  3   typedef std  vector  Tri  TriVector    Functions to populate the topology and geometry arrays with simple  shapes that we can multiply to increase complexity  void appendDefaultPrimitive  Pos const  origin , std  vector  int   vertsPerFace , std  vector  Index   faceVerts , std  vector  Pos   positionsPerVert    Local topology and position of a cube centered at origin static float const cubePositions  8  3     -0.5f , -0.5f , -0.5f ,  -0.5f , 0.5f , -0.5f ,  -0.5f , 0.5f , 0.5f ,  -0.5f , -0.5f , 0.5f ,  0.5f , -0.5f , -0.5f ,  0.5f , 0.5f , -0.5f ,  0.5f , 0.5f , 0.5f ,  0.5f , -0.5f , 0.5f   static int const cubeFaceVerts  6  4     0 , 3 , 2 , 1 ,  4 , 5 , 6 , 7 ,  0 , 4 , 7 , 3 ,  1 , 2 , 6 , 5 ,  0 , 1 , 5 , 4 ,  3 , 7 , 6 , 2    Identify the next vertex before appending vertex positions int baseVertex   int  positionsPerVert . size  for  int i  0  i  8   i   float const  p  cubePositions  i  positionsPerVert . push_back  origin  Pos  p  0 , p  1 , p  2    Append number of verts-per-face and face-vertices for each face for  int i  0  i  6   i   vertsPerFace . push_back  4  for  int j  0  j  4   j   faceVerts . push_back  baseVertex  cubeFaceVerts  i  j     void createDefaultGeometry  int multiplier , std  vector  int   vertsPerFace , std  vector  Index   faceVerts , std  vector  Pos   positionsPerVert    Default primitive is currently a cube int const vertsPerPrimitive  8  int const facesPerPrimitive  6  int const faceVertsPerPrimitive  24  int nPrimitives  multiplier  multiplier  multiplier  positionsPerVert . reserve  nPrimitives  vertsPerPrimitive  vertsPerFace . reserve  nPrimitives  facesPerPrimitive  faceVerts . reserve  nPrimitives  faceVertsPerPrimitive  for  int x  0  x  multiplier   x   for  int y  0  y  multiplier   y   for  int z  0  z  multiplier   z   appendDefaultPrimitive  Pos  float  x  2.0f ,  float  y  2.0f ,  float  z  2.0f , vertsPerFace , faceVerts , positionsPerVert        Create a TopologyRefiner from default geometry created above  Far  TopologyRefiner  createTopologyRefinerDefault  int multiplier , PosVector  posVector   std  vector  int  topVertsPerFace  std  vector  Index  topFaceVerts  createDefaultGeometry  multiplier , topVertsPerFace , topFaceVerts , posVector  typedef Far  TopologyDescriptor Descriptor  Sdc  SchemeType type  OpenSubdiv  Sdc  SCHEME_CATMARK  Sdc  Options options  options . SetVtxBoundaryInterpolation  Sdc  Options  VTX_BOUNDARY_EDGE_AND_CORNER  Descriptor desc  desc . numVertices   int  posVector . size  desc . numFaces   int  topVertsPerFace . size  desc . numVertsPerFace   topVertsPerFace  0  desc . vertIndicesPerFace   topFaceVerts  0   Instantiate a FarTopologyRefiner from the descriptor. Far  TopologyRefiner  refiner  Far  TopologyRefinerFactory  Descriptor  Create  desc , Far  TopologyRefinerFactory  Descriptor  Options  type , options  if  refiner  0   exit  EXIT_FAILURE   bool dumpDefaultGeometryToObj  false  if  dumpDefaultGeometryToObj   int nVerts   int  posVector . size  for  int i  0  i  nVerts   i   float const  p  posVector  i . p  printf  v f f f n  , p  0 , p  1 , p  2   int const  fVerts   topFaceVerts  0  int nFaces   int  topVertsPerFace . size  for  int i  0  i  nFaces   i   printf  f  for  int j  0  j  topVertsPerFace  i   j   printf   d , 1   fVerts    printf   n    exit  EXIT_SUCCESS   return refiner     Create a TopologyRefiner from a specified Obj file  geometry created internally  Far  TopologyRefiner  createTopologyRefinerFromObj  std  string const  objFileName , Sdc  SchemeType schemeType , PosVector  posVector   const char  filename  objFileName . c_str  const Shape  shape  0  std  ifstream ifs  filename  if  ifs   std  stringstream ss  ss  ifs . rdbuf  ifs . close  std  string shapeString  ss . str  shape  Shape  parseObj  shapeString . c_str , ConvertSdcTypeToShapeScheme  schemeType , false  if  shape  0   fprintf  stderr , Error Cannot create Shape  from .obj file s n  , filename  return 0    else  fprintf  stderr , Error Cannot open .obj file s n  , filename  return 0   Sdc  SchemeType sdcType  GetSdcType   shape  Sdc  Options sdcOptions  GetSdcOptions   shape  Far  TopologyRefiner  refiner  Far  TopologyRefinerFactory  Shape  Create   shape , Far  TopologyRefinerFactory  Shape  Options  sdcType , sdcOptions  if  refiner  0   fprintf  stderr , Error Unable to construct TopologyRefiner  from .obj file s n  , filename  return 0   int numVertices  refiner - GetNumVerticesTotal  posVector . resize  numVertices  std  memcpy   posVector  0 . p  0 ,  shape - verts  0 , numVertices  3  sizeof  float  delete shape  return refiner     end namespace   The PatchGroup bundles objects used to create and evaluate a sparse set  of patches. Its construction creates a PatchTable and all other objects  necessary to evaluate patches associated with the specified subset of  faces provided. A simple method to tessellate a specified face is  provided.   Note that, since the data buffers for the base level and refined levels  are separate we want to avoid copying primvar data for the base level  of a potentially large mesh, that patch evaluation needs to account  for the separation when combining control points.  struct PatchGroup  PatchGroup  Far  PatchTableFactory  Options patchOptions , Far  TopologyRefiner const  baseRefinerArg , Far  PtexIndices const  basePtexIndicesArg , std  vector  Pos  const  basePositionsArg , std  vector  Index  const  baseFacesArg   PatchGroup  void TessellateBaseFace  int face , PosVector  tessPoints , TriVector  tessTris  const   Const reference members Far  TopologyRefiner const  baseRefiner  Far  PtexIndices const  basePtexIndices  std  vector  Pos  const  basePositions  std  vector  Index  const  baseFaces   Members constructed to evaluate patches Far  PatchTable  patchTable  Far  PatchMap  patchMap  int patchFaceSize  std  vector  Pos  localPositions   PatchGroup  PatchGroup  Far  PatchTableFactory  Options patchOptions , Far  TopologyRefiner const  baseRefinerArg , Far  PtexIndices const  basePtexIndicesArg , std  vector  Pos  const  basePositionsArg , std  vector  Index  const  baseFacesArg   baseRefiner  baseRefinerArg , basePtexIndices  basePtexIndicesArg , basePositions  basePositionsArg , baseFaces  baseFacesArg    Create a local refiner sharing the base level, apply adaptive  refinement to the given subset of base faces, and construct a patch  table and its associated map for the same set of faces  Far  ConstIndexArray groupFaces   baseFaces  0 ,  int  baseFaces . size  Far  TopologyRefiner  localRefiner  Far  TopologyRefinerFactory  Far  TopologyDescriptor  Create  baseRefiner  localRefiner - RefineAdaptive  patchOptions . GetRefineAdaptiveOptions , groupFaces  patchTable  Far  PatchTableFactory  Create   localRefiner , patchOptions , groupFaces  patchMap  new Far  PatchMap   patchTable  patchFaceSize  Sdc  SchemeTypeTraits  GetRegularFaceSize  baseRefiner . GetSchemeType   Compute the number of refined and local points needed to evaluate the  patches, allocate and interpolate. This varies from tutorial_5_1 in  that the primvar buffer for the base vertices is separate from the  refined vertices and local patch points which must also be accounted  for when evaluating the patches.  int nBaseVertices  localRefiner - GetLevel  0 . GetNumVertices  int nRefinedVertices  localRefiner - GetNumVerticesTotal  - nBaseVertices  int nLocalPoints  patchTable - GetNumLocalPoints  localPositions . resize  nRefinedVertices  nLocalPoints  if  nRefinedVertices   Far  PrimvarRefiner primvarRefiner   localRefiner  Pos const  src   basePositions  0  Pos  dst   localPositions  0  for  int level  1  level  localRefiner - GetNumLevels   level   primvarRefiner . Interpolate  level , src , dst  src  dst  dst  localRefiner - GetLevel  level . GetNumVertices    if  nLocalPoints   patchTable - GetLocalPointStencilTable  - UpdateValues   basePositions  0 , nBaseVertices ,  localPositions  0 ,  localPositions  nRefinedVertices   delete localRefiner   PatchGroup  PatchGroup   delete patchTable  delete patchMap   void PatchGroup  TessellateBaseFace  int face , PosVector  tessPoints , TriVector  tessTris  const   Tesselate the face with points at the midpoint of the face and at  each corner, and triangles connecting the midpoint to each edge.  Irregular faces require an aribrary number of corners points, but  all are at the origin of the child face of the irregular base face  float const quadPoints  5  2     0.5f , 0.5f ,  0.0f , 0.0f ,  1.0f , 0.0f ,  1.0f , 1.0f ,  0.0f , 1.0f   float const triPoints  4  2     0.5f , 0.5f ,  0.0f , 0.0f ,  1.0f , 0.0f ,  0.0f , 1.0f   float const irregPoints  4  2     1.0f , 1.0f ,  0.0f , 0.0f    Determine the topology of the given base face and the resulting  tessellation points and faces to generate  int baseFace  baseFaces  face  int faceSize  baseRefiner . GetLevel  0 . GetFaceVertices  baseFace . size  bool faceIsIrregular   faceSize  patchFaceSize  int nTessPoints  faceSize  1  int nTessFaces  faceSize  tessPoints . resize  nTessPoints  tessTris . resize  nTessFaces   Compute the mid and corner points -- remember that for an irregular  face, we must reference the individual ptex faces for each corner  int ptexFace  basePtexIndices . GetFaceId  baseFace  int numBaseVerts   int  basePositions . size  for  int i  0  i  nTessPoints   i    Choose the s,t coordinate from the fixed tessellation float const  st  faceIsIrregular  irregPoints  i  0    faceSize  4   quadPoints  i   triPoints  i   Locate the patch corresponding to the face ptex idx and s,t  and evaluate int patchFace  ptexFace  if  faceIsIrregular   i  0   patchFace  i - 1   Far  PatchTable  PatchHandle const  handle  patchMap - FindPatch  patchFace , st  0 , st  1  assert  handle  float pWeights  20  patchTable - EvaluateBasis   handle , st  0 , st  1 , pWeights   Identify the patch cvs and combine with the evaluated weights --  remember to distinguish cvs in the base level Far  ConstIndexArray cvIndices  patchTable - GetPatchVertices   handle  Pos  pos  tessPoints  i  pos . Clear  for  int cv  0  cv  cvIndices . size   cv   int cvIndex  cvIndices  cv  if  cvIndex  numBaseVerts   pos . AddWithWeight  basePositions  cvIndex , pWeights  cv   else  pos . AddWithWeight  localPositions  cvIndex - numBaseVerts , pWeights  cv      Assign triangles connecting the midpoint of the base face to the  points computed at the ends of each of its edges  for  int i  0  i  nTessFaces   i   tessTris  i   Tri  0 , 1  i , 1   i  1   faceSize      Command line arguments parsed to provide run-time options  class Args  public  std  string inputObjFile  Sdc  SchemeType schemeType  int geoMultiplier  int maxPatchDepth  int numPatchGroups  bool noTessFlag  bool noOutputFlag  public  Args  int argc , char  argv   inputObjFile , schemeType  Sdc  SCHEME_CATMARK , geoMultiplier  10 , maxPatchDepth  3 , numPatchGroups  10 , noTessFlag  false , noOutputFlag  false    Parse and assign standard arguments and Obj files ArgOptions args  args . Parse  argc , argv  maxPatchDepth  args . GetLevel  schemeType  ConvertShapeSchemeToSdcType  args . GetDefaultScheme  const std  vector  const char  objFiles  args . GetObjFiles  if   objFiles . empty   for  size_t i  1  i  objFiles . size   i   fprintf  stderr , Warning .obj file s ignored n  , objFiles  i   inputObjFile  std  string  objFiles  0    Parse remaining arguments specific to this example const std  vector  const char   rargs  args . GetRemainingArgs  for  size_t i  0  i  rargs . size   i   if   strcmp  rargs  i , -groups   if   i  rargs . size  numPatchGroups  atoi  rargs  i   else if   strcmp  rargs  i , -mult   if   i  rargs . size  geoMultiplier  atoi  rargs  i   else if   strcmp  rargs  i , -notess   noTessFlag  true   else if   strcmp  rargs  i , -nooutput   noOutputFlag  true   else  fprintf  stderr , Warning Argument s ignored n  , rargs  i     private  Args       Load command line arguments and geometry, then divide the mesh into groups  of faces from which to create and tessellate patches  int main  int argc , char  argv   Args args  argc , argv    Create or load the base geometry command line arguments allow a  .obj file to be specified. In addition to the TopologyRefiner  and set of positions for the base vertices, a set of PtexIndices is  also required to evaluate patches, so build it here once for use  elsewhere  std  vector  Pos  basePositions  Far  TopologyRefiner  baseRefinerPtr  args . inputObjFile . empty   createTopologyRefinerDefault  args . geoMultiplier , basePositions   createTopologyRefinerFromObj  args . inputObjFile , args . schemeType , basePositions  assert  baseRefinerPtr  Far  TopologyRefiner  baseRefiner   baseRefinerPtr  Far  PtexIndices basePtexIndices  baseRefiner    Determine the sizes of the patch groups specified -- there will be  two sizes that differ by one to account for unequal division  int numBaseFaces  baseRefiner . GetNumFacesTotal  int numPatchGroups  args . numPatchGroups  if  numPatchGroups  numBaseFaces   numPatchGroups  numBaseFaces   else if  numPatchGroups  1   numPatchGroups  1   int lesserGroupSize  numBaseFaces  numPatchGroups  int numLargerGroups  numBaseFaces -  numPatchGroups  lesserGroupSize    Define the options used to construct the patches for each group.  Unless suppressed, a tessellation in Obj format will also be printed  to standard output, so keep track of the vertex indices.  Far  PatchTableFactory  Options patchOptions  args . maxPatchDepth  patchOptions . generateVaryingTables  false  patchOptions . shareEndCapPatchPoints  false  patchOptions . endCapType  Far  PatchTableFactory  Options  ENDCAP_GREGORY_BASIS  int objVertCount  0  PosVector tessPoints  TriVector tessFaces  for  int i  0  i  numPatchGroups   i     Initialize a vector with a group of base faces from which to  create and evaluate patches  Index minFace  i  lesserGroupSize  std  min  i , numLargerGroups  Index maxFace  minFace  lesserGroupSize   i  numLargerGroups  std  vector  Far  Index  baseFaces  maxFace - minFace  for  int face  minFace  face  maxFace   face   baseFaces  face - minFace   face     Declare a PatchGroup and tessellate its base faces -- generating  vertices and faces in Obj format to standard output  PatchGroup patchGroup  patchOptions , baseRefiner , basePtexIndices , basePositions , baseFaces  if  args . noTessFlag  continue  if   args . noOutputFlag   printf  g patchGroup_d n  , i   for  int j  0  j   int  baseFaces . size   j   patchGroup . TessellateBaseFace  j , tessPoints , tessFaces  if   args . noOutputFlag   int nVerts   int  tessPoints . size  for  int k  0  k  nVerts   k   float const  p  tessPoints  k . p  printf  v f f f n  , p  0 , p  1 , p  2   int nTris   int  tessFaces . size  int vBase  1  objVertCount  for  int k  0  k  nTris   k   int const  v  tessFaces  k . v  printf  f d d d n  , vBase  v  0 , vBase  v  1 , vBase  v  2   objVertCount  nVerts     delete baseRefinerPtr  return EXIT_SUCCESS   Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"title\": \"hbr_tutorial_0.cpp\",\n+        \"text\": \"hbr_tutorial_0.cpp hbr_tutorial_0.cpp 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE httpsgithub.comPixarAnimationStudiosOpenSubdivblobreleasetutorialshbrtutorial_0hbr_tutorial_0.cpp ------------------------------------------------------------------------------  Tutorial description   This tutorial presents in a very succinct way the requisite steps to  instantiate an Hbr mesh from simple topological data.  include opensubdivhbrmesh.h include opensubdivhbrcatmark.h include cstdio ------------------------------------------------------------------------------  Vertex container implementation.   The HbrMeshT class is a templated interface that expects a vertex class to  perform interpolation on arbitrary vertex data.   For the template specialization of the HbrMesh interface to be met, our  Vertex object to implement a minimal set of constructors and member  functions.   Since we are not going to subdivide the mesh, the struct presented here has  been left minimalistic. The only customization added to our container was to  provide storage and accessors for the position of a 3D vertex.  struct Vertex   Hbr minimal required interface ---------------------- Vertex    Vertex  int i    Vertex  Vertex const  src   _position  0   src . _position  0  _position  1   src . _position  1  _position  2   src . _position  2   void Clear  void   0    void AddWithWeight  Vertex const  , float    void AddVaryingWithWeight  Vertex const  , float     Public interface ------------------------------------ void SetPosition  float x , float y , float z   _position  0   x  _position  1   y  _position  2   z   const float  GetPosition  const  return _position   private  float _position  3   typedef OpenSubdiv  HbrMesh  Vertex  Hmesh  typedef OpenSubdiv  HbrFace  Vertex  Hface  typedef OpenSubdiv  HbrVertex  Vertex  Hvertex  typedef OpenSubdiv  HbrHalfedge  Vertex  Hhalfedge  ------------------------------------------------------------------------------  Pyramid geometry from catmark_pyramid.h static float verts  5  3    0.0f , 0.0f , 2.0f ,  0.0f , -2.0f , 0.0f ,  2.0f , 0.0f , 0.0f ,  0.0f , 2.0f , 0.0f ,  -2.0f , 0.0f , 0.0f  static int nverts  5 , nfaces  5  static int facenverts  5    3 , 3 , 3 , 3 , 4  static int faceverts  16    0 , 1 , 2 , 0 , 2 , 3 , 0 , 3 , 4 , 0 , 4 , 1 , 4 , 3 , 2 , 1  ------------------------------------------------------------------------------ int main  int , char     Create a subdivision scheme Catmull-Clark here OpenSubdiv  HbrCatmarkSubdivision  Vertex   catmark  new OpenSubdiv  HbrCatmarkSubdivision  Vertex    Create an empty Hbr mesh Hmesh  hmesh  new Hmesh  catmark   Populate the vertices Vertex v  for  int i  0  i  nverts   i    Primitive variable data must be set here in our case we set  the 3D position of the vertex. v . SetPosition  verts  i  0 , verts  i  1 , verts  i  2   Add the vertex to the mesh. hmesh - NewVertex  i , v    Create the topology int  fv  faceverts  for  int i  0  i  nfaces   i   int nv  facenverts  i  hmesh - NewFace  nv , fv , 0  fv  nv    Set subdivision options   By default vertex interpolation is set to none on boundaries, which  can produce un-expected results, so we change it to edge-only.  hmesh - SetInterpolateBoundaryMethod  Hmesh  k_InterpolateBoundaryEdgeOnly   Call Finish to finalize the data structures before using the mesh. hmesh - Finish  printf  Created a pyramid with d faces and d vertices. n  , hmesh - GetNumFaces , hmesh - GetNumVertices  delete hmesh  delete catmark   ------------------------------------------------------------------------------ Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n-        \"loc\": \"far_tutorial_5_2.html\"\n+        \"loc\": \"hbr_tutorial_0.html\"\n     }, {\n-        \"title\": \"hbr_tutorial_1.cpp\",\n-        \"text\": \"hbr_tutorial_1.cpp hbr_tutorial_1.cpp 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE httpsgithub.comPixarAnimationStudiosOpenSubdivblobreleasetutorialshbrtutorial_1hbr_tutorial_1.cpp ------------------------------------------------------------------------------  Tutorial description   This tutorial shows how to safely create Hbr meshes from arbitrary topology.  Because Hbr is a half-edge data structure, it cannot represent non-manifold  topology. Ensuring that the geometry used is manifold is a requirement to use  Hbr safely. This tutorial presents some simple tests to detect inappropriate  topology.  include opensubdivhbrmesh.h include opensubdivhbrcatmark.h include cstdio ------------------------------------------------------------------------------ struct Vertex   Hbr minimal required interface ---------------------- Vertex    Vertex  int i    Vertex  Vertex const  src   _position  0   src . _position  0  _position  1   src . _position  1  _position  2   src . _position  2   void Clear  void   0    void AddWithWeight  Vertex const  , float    void AddVaryingWithWeight  Vertex const  , float     Public interface ------------------------------------ void SetPosition  float x , float y , float z   _position  0   x  _position  1   y  _position  2   z   const float  GetPosition  const  return _position   private  float _position  3   typedef OpenSubdiv  HbrMesh  Vertex  Hmesh  typedef OpenSubdiv  HbrFace  Vertex  Hface  typedef OpenSubdiv  HbrVertex  Vertex  Hvertex  typedef OpenSubdiv  HbrHalfedge  Vertex  Hhalfedge  ------------------------------------------------------------------------------  Non-manifold geometry from catmark_fan.h   o             o    f2      o------------o------------o             f0   f1       o------------ o------------o   The shared edge of a fan is adjacent to 3 faces, and therefore non-manifold.  static float verts  8  3    -1.0 , 0.0 , -1.0 ,  -1.0 , 0.0 , 0.0 ,  0.0 , 0.0 , 0.0 ,  0.0 , 0.0 , -1.0 ,  1.0 , 0.0 , 0.0 ,  1.0 , 0.0 , -1.0 ,  0.0 , 1.0 , 0.0 ,  0.0 , 1.0 , -1.0  static int nverts  8 , nfaces  3  static int facenverts  3    4 , 4 , 4  static int faceverts  12    0 , 1 , 2 , 3 , 3 , 2 , 4 , 5 , 3 , 2 , 6 , 7  ------------------------------------------------------------------------------ int main  int , char    OpenSubdiv  HbrCatmarkSubdivision  Vertex   catmark  new OpenSubdiv  HbrCatmarkSubdivision  Vertex   Hmesh  hmesh  new Hmesh  catmark  Vertex v  for  int i  0  i  nverts   i   v . SetPosition  verts  i  0 , verts  i  1 , verts  i  2  hmesh - NewVertex  i , v    Create the topology int  fv  faceverts  for  int i  0  i  nfaces   i   int nv  facenverts  i  bool valid  true  for  int j  0  j  nv  j    Hvertex const  origin  hmesh - GetVertex  fv  j ,  destination  hmesh - GetVertex  fv  j  1   nv  Hhalfedge const  opposite  destination - GetEdge  origin   Make sure that the vertices exist in the mesh if  origin  NULL  destination  NULL   printf   An edge was specified that connected a nonexistent vertex n   valid  false  break    Check for a degenerate edge if  origin  destination   printf   An edge was specified that connected a vertex to itself n   valid  false  break    Check that no more than 2 faces are adjacent to the edge if  opposite  opposite - GetOpposite    printf   A non-manifold edge incident to more than 2 faces was found n   valid  false  break    Check that the edge is unique and oriented properly if  origin - GetEdge  destination   printf   An edge connecting two vertices was specified more than once.  Its likely that an incident face was flipped n   valid  false  break    if  valid   hmesh - NewFace  nv , fv , 0   else  printf   Skipped face d n  , i   fv  nv   hmesh - SetInterpolateBoundaryMethod  Hmesh  k_InterpolateBoundaryEdgeOnly  hmesh - Finish  printf  Created a fan with d faces and d vertices. n  , hmesh - GetNumFaces , hmesh - GetNumVertices  delete hmesh  delete catmark   ------------------------------------------------------------------------------ Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"title\": \"glShareTopology\",\n+        \"text\": \"glShareTopology glShareTopology 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE SYNOPSIS DESCRIPTION OPTIONS SEE ALSO SYNOPSIS glShareTopology  -u   -a   -l refinement level  DESCRIPTION glShareTopology is a stand-alone application that showcases the implementation of topology instancing across Compute contexts. Multiple controls are available to experiment with the algorithms. OPTIONS See the description of the common comand line options for the subset of common options supported here. SEE ALSO Other examples  glViewer , glFVarViewer , glEvalLimit , glStencilViewer , glPtexViewer , glPaintTest , glShareTopology , dxViewer , dxPtexViewer , Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n-        \"loc\": \"hbr_tutorial_1.html\"\n+        \"loc\": \"glsharetopology.html\"\n     }, {\n-        \"title\": \"Overview of Release 3.5\",\n-        \"text\": \"Overview of Release 3.5 Overview of Release 3.5 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE New Features Simplified Surface Evaluation Tessellation Patterns API Additions New classes in namespace Bfr Additions to FarTopologyLevel Additions to nested Options classes in Far Other Changes Deprecation Announcements Improvements Bug Fixes New Features Simplified Surface Evaluation The new Bfr interface provides an alternative to Far and Osd for evaluating the limit surface -- treating a subdivision mesh as a piecewise parameteric surface primitive . The Bfr interface is named for Base Face Representation as all concepts and classes relate to the individual faces of the original unrefined mesh, i.e. its base faces. Each base face has a piece of limit surface associated with it  BfrSurface  that is parameterized  BfrParameterization  and so can be evaluated and tessellated The limit surface for each face can be identified and evaluated independently of any other faces without any global pre-processing of a connected mesh. The resulting evaluation interface is much simpler, more flexible and more scalable than those assembled with the table-based class in Far -- providing a preferable alternative for many CPU-based use cases though not all. See the Bfr Overview documentation for more details. Tessellation Patterns In addition to evaluation, the Bfr interface includes a Tessellation class that provides tessellation patterns for all faces of a base mesh. A Tessellation does not encapsulate the entire tessellation process but simply provides topological patterns to assemble such a process. All faces of a mesh have a Parameterization which can be used to define a Tessellation with the specification of one or more tessellation rates. A single tessellation rate defines simple uniform tessellations while tessellation rates for each edge provide more complex non-uniform patterns A small set of options is also available to define the resulting patterns e.g. the preservation of quad faces with quad-based subdivision schemes  above left and center  and to generate its output in a more favorable form. Tessellation patterns do not support the full flexibility of typical hardware tessellation e.g. no fractional tessellation but do provide some useful alternatives to hardware tessellation e.g. the quad preservation previously noted, and more uniform triangles for triangular patches  above right . The Tessellation class is also completely independent of evaluation in Bfr , and so can be used with any other evaluation interface. See the Tessellation subsection of the Bfr Overview for more details. API Additions See associated Doxygen for full details. New classes in namespace Bfr class Parameterization class Surface class SurfaceFactory class SurfaceFactoryCache class SurfaceFactoryMeshAdapter class RefinerSurfaceFactory class Tessellation Additions to FarTopologyLevel TopologyLevelIsVertexCorner TopologyLevelIsVertexRegular TopologyLevelIsVertexInfSharp TopologyLevelIsVertexSemiSharp TopologyLevelIsEdgeInfSharp TopologyLevelIsEdgeSemiSharp Additions to nested Options classes in Far PatchTableFactoryOptionsSetMaxIsolationLevel TopologyRefinerUniformOptionsSetRefinementLevel TopologyRefinerAdaptiveOptionsSetMaxIsolationLevel TopologyRefinerAdaptiveOptionsSetMaxSecondaryLevel Other Changes Deprecation Announcements Hbr is deprecated and will be removed from subsequent releases Improvements Suppression of GCC compiler warnings GitHub 1253, 1254, 1270 Additional methods for FarTopologyLevel GitHub 1227, 1255 Improved mixed partial derivative at Gregory patch corners GitHub 1252 Minor improvements to Far tutorials GitHub 1226, 1241 Added CMake config GitHub 1242 Updated CMake minimum version to 3.12 GitHub 1237, 1261 Updated documentation build scripts for Python 3 1265, 1266 Updated stringify build tool for improved cross compilation support GitHub 1267 Added NO_MACOS_FRAMEWORKS build option GitHub 1238 Updated Azure pipelines agents for Unbuntu and macOS GitHub 1247, 1256 Removed obsolete AppVeyor and Travis CI scripts GitHub 1259 Bug Fixes Cache active program for OsdGLComputeEvaluator GitHub 1244 Fixed member initialization warnings in OsdD3D11ComputeEvaluator GitHub 1239 Fixed GLSL shader source to remove storage qualifiers from struct members GitHub 1271 Fixed use of CMake variables for Apple builds GitHub 1235 Fixed build errors when using OpenGL without GLFW GitHub 1257 Fixed links to embedded videos GitHub 1231 Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"title\": \"mtlPtexViewer\",\n+        \"text\": \"mtlPtexViewer mtlPtexViewer 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE SYNOPSIS DESCRIPTION KEYBOARD CONTROLS SEE ALSO SYNOPSIS open mtlPtexViewer.app --args  -yup   -u   -a   -l isolation level  ptex color file ptex displacement file DESCRIPTION mtlPtexViewer is a stand-alone application demonstrating shading with color and displacement ptex maps. Multiple controls are available to experiment with the algorithms. KEYBOARD CONTROLS q  quit f  fit frame -  increase  decrease tessellation rate SEE ALSO Other examples  glViewer , glFVarViewer , glEvalLimit , glStencilViewer , glPtexViewer , glPaintTest , glShareTopology , dxViewer , dxPtexViewer , Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n-        \"loc\": \"release_35.html\"\n+        \"loc\": \"mtlptexviewer.html\"\n     }, {\n-        \"title\": \"dxViewer\",\n-        \"text\": \"dxViewer dxViewer 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE SYNOPSIS DESCRIPTION OPTIONS SEE ALSO SYNOPSIS dxViewer  -f   -yup   -u   -a   -l refinement level   -c animation loops  objfiles  -catmark   -loop   -bilinear  DESCRIPTION dxViewer is a stand-alone application that showcases the application of uniform and feature adaptive subdivision schemes to a collection of geometric shapes. Multiple controls are available to experiment with the algorithms. OPTIONS See the description of the common comand line options for the subset of common options supported here. SEE ALSO Other examples  glViewer , glFVarViewer , glEvalLimit , glStencilViewer , glPtexViewer , glPaintTest , glShareTopology , dxViewer , dxPtexViewer , Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"title\": \"Using Hbr\",\n+        \"text\": \"Using Hbr Using Hbr 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE Vertex Template API Creating a Mesh Instantiating an HbrMesh Creating Vertices Creating Faces Wrapping Things Up Boundary Interpolation Rules Adding Creases Vertex Creases Edge Creases Holes Hierarchical Edits Face-varying Data Instantiating the HbrMesh Setting the Face-Varying Data Retrieving the Face-Varying Data Valence Operators Managing Singular Vertices Note As of OpenSubdiv 3.0, all Hbr dependencies have been removed from the core APIs  Sdc , Vtr , Far , Osd . The legacy source code of Hbr is provided purely for regression and legacy purposes. If your code is currently depending on Hbr functionality, we recommend migrating to the newer APIs as we cannot guarantee that this code will be maintained in future releases. For more information see the 3.0 release notes Vertex Template API The Hbr API abstracts the vertex class through templating. Client-code is expected to provide a vertex class that implements the requisite interpolation functionality. Here is an example of a simple vertex class that accounts for 3D position, but does not support arbitrary variables or varying interpolation. struct Vertex  Vertex    Vertex  int i    Vertex  const Vertex  src   _pos  0   src . _pos  0  _pos  1   src . _pos  1  _pos  2   src . _pos  2    Vertex     void AddWithWeight  const Vertex  src , float weight , void   0   _pos  0   weight  src . _pos  0  _pos  1   weight  src . _pos  1  _pos  2   weight  src . _pos  2   void AddVaryingWithWeight  const Vertex  , float , void   0    void Clear  void   0   _pos  0   _pos  1   _pos  2   0.0f   void SetPosition  float x , float y , float z   _pos  0   x  _pos  1   y  _pos  2   z   void ApplyVertexEdit  const OpenSubdiv  HbrVertexEdit  Vertex   edit   const float  src  edit . GetEdit  switch  edit . GetOperation   case OpenSubdiv  HbrHierarchicalEdit  Vertex  Set  _pos  0   src  0  _pos  1   src  1  _pos  2   src  2  break  case OpenSubdiv  HbrHierarchicalEdit  Vertex  Add  _pos  0   src  0  _pos  1   src  1  _pos  2   src  2  break  case OpenSubdiv  HbrHierarchicalEdit  Vertex  Subtract  _pos  0  - src  0  _pos  1  - src  1  _pos  2  - src  2  break    void ApplyMovingVertexEdit  const OpenSubdiv  HbrMovingVertexEdit  Vertex       custom functions  data not required by Hbr ------------------------- Vertex  float x , float y , float z   _pos  0   x  _pos  1   y  _pos  2   z   const float  GetPos  const  return _pos   float _pos  3   In some cases, if only topological analysis is required, the class can be left un-implemented. Far and Osd for instance store vertex data in serialized interleaved vectors. Here is the OsdVertex class for reference class Vertex  public  Vertex   Vertex  int  index    Vertex  Vertex const   src    void AddWithWeight  Vertex const   i  , float  weight  , void   0   void AddVaryingWithWeight  const Vertex   i  , float  weight  , void   0   void Clear  void   0   void ApplyVertexEdit  FarVertexEdit const      Creating a Mesh The following tutorial walks through the steps of instantiating a simple Hbr mesh. The code found in regressioncommonshape_utils.h can also be used as an example. While this implementation covers many of Hbr s features, it does not provide coverage for the complete Renderman specification though. Instantiating an HbrMesh First we need to instantiate a mesh object. Hbr supports 3 subdivision schemes Catmull-Clark catmark Loop Bilinear The scheme is selected by passing an specialized instance of HbrSubdivisionT , HbrCatmarkSubdivisionT in this case. The scheme can be shared across multiple mesh objects, so we only need a single instance. static OpenSubdiv  HbrCatmarkSubdivision  Vertex  _scheme  OpenSubdiv  HbrMesh  Vertex   mesh  new OpenSubdiv  HbrMesh  Vertex   _scheme  Creating Vertices Adding vertices to the mesh is accomplished using the HbrMeshNewVertex method. Because Hbr uses a dedicated vertex allocator to help alleviate the performance impact of intensive fragmented memory allocations. This optimization results in the following design pattern Vertex vtx  for  int i  0  i  numVerts  i    Vertex  v  mesh - NewVertex  i , vtx   v-SetPosition  We instantiate a single default vertex object named vtx on the stack. We then recover the pointer to the actual vertex created in the mesh from the NewVertex method. Once we have recovered that pointer, we can set the data for our vertex by using any of the custom accessors. Creating Faces Once all the vertices have been registered in the mesh, we can start adding the faces with HbrMeshNewFace . Assuming we had an obj style reader, we need to know the number of vertices in the face and the indices of these vertices. for  int f  0  f  numFaces   f   int nverts  obj - GetNumVertices  f  const int  faceverts  obj - GetFaceVerts  f  mesh - NewFace  nv , fv , 0   However, Hbr is not able to handle non-manifold geometry. In order to avoid tripping asserts or causing memory violations, lets rewrite the previous loop with some some prototype code to check the validity of the topology. for  int f  0  f  numFaces   f   int nv  obj - GetNumVertices  f  const int  fv  obj - GetFaceVerts  f   triangles only for Loop subdivision  if  scheme  kLoop  and  nv  3   printf  Trying to create a Loop subd with non-triangle face n   continue    now check the half-edges connectivity for  int j  0  j  nv  j    OpenSubdiv  HbrVertex  T   origin  mesh - GetVertex  fv  j   OpenSubdiv  HbrVertex  T   destination  mesh - GetVertex  fv  j  1   nv   OpenSubdiv  HbrHalfedge  T   opposite  destination - GetEdge  origin  if  origin  NULL  destination  NULL   printf   An edge was specified that connected a nonexistent vertex n   continue   if  origin  destination   printf   An edge was specified that connected a vertex to itself n   continue   if  opposite  opposite - GetOpposite    printf   A non-manifold edge incident to more than 2 faces was found n   continue   if  origin - GetEdge  destination   printf   An edge connecting two vertices was specified more than once.  Its likely that an incident face was flipped n   continue    mesh - NewFace  nv , fv , 0   Wrapping Things Up Once we have vertices and faces set in our mesh, we still need to wrap things up by calling HbrMeshFinish  mesh - Finish  Finish iterates over the mesh to apply the boundary interpolation rules and checks for singular vertices. At this point, there is one final topology check remaining to validate the mesh mesh - Finish  if  mesh - GetNumDisconnectedVertices   printf  The specified subdivmesh contains disconnected surface components. n    abort or iterate over the mesh to remove the offending vertices  Boundary Interpolation Rules The rule-set can be selected using the following accessors Vertex and varying data mesh - SetInterpolateBoundaryMethod  OpenSubdiv  HbrMesh  Vertex  k_InterpolateBoundaryEdgeOnly  Face-varying data mesh - SetFVarInterpolateBoundaryMethod  OpenSubdiv  HbrMesh  Vertex  k_InterpolateBoundaryEdgeOnly  Additional information on boundary interpolation rules can be found here Warning The boundary interpolation rules must be set before the call to HbrMeshFinish , which sets the sharpness values to boundary edges and vertices based on these rules. Adding Creases Hbr supports a sharpness attribute on both edges and vertices. Sharpness is set using the SetSharpnessfloat accessors. Vertex Creases Given an index, vertices are very easy to access in the mesh. int idx   vertex index float sharp   the edge sharpness OpenSubdiv  HbrVertex  Vertex   v  mesh - GetVertex  idx  if  v   v - SetSharpness  std  max  0.0f , sharp    else printf  cannot find vertex for corner tag d n  , idx  Edge Creases Usually, edge creases are described with a vertex indices pair. Here is some sample code to locate the matching half-edge and set a crease sharpness. int v0 , v1   vertex indices float sharp   the edge sharpness OpenSubdiv  HbrVertex  Vertex   v  mesh - GetVertex  v0 ,  w  mesh - GetVertex  v1  OpenSubdiv  HbrHalfedge  Vertex   e  0  if  v  w   if  e  v - GetEdge  w   0  e  w - GetEdge  v  if  e   e - SetSharpness  std  max  0.0f , sharp    else printf  cannot find edge for crease tag d,d n  , v0 , v1   Holes Hbr faces support a hole tag. int idx   the face index OpenSubdiv  HbrFace  Vertex   f  mesh - GetFace  idx  if  f   f - SetHole   else printf  cannot find face for hole tag d n  , idx  Note The hole tag is hierarchical  sub-faces can also be marked as holes. See Hierarchical Edits Hierarchical Edits Hbr supports the following types of hierarchical edits Type Function Corner edits Modify vertex sharpness Crease edits Modify edge sharpness FaceEdit Modify custom face data FVarEdit Modify face-varying data VertexEdit Modify vertex and varying data HoleEdit Set hole tag Modifications are one of the following 3 operations Operation Set Add Subtract Here is a simple example that creates a hierarchical vertex edit.  path  655, 2, 3, 0 int faceid  655 , nsubfaces  2 , subfaces  2    2 , 3 , vertexid  0  int offset  0 ,  offset to the vertex or varying data numElems  3   number of elements to apply the modifier to x,y,z  3 bool isP  false   shortcut to identify modifications to the vertex position P OpenSubdiv  HbrHierarchicalEdit  Vertex  Operation op  OpenSubdiv  HbrHierarchicalEdit  T  Set  float values  3    1.0f , 0.5f , 0.0f   edit values OpenSubdiv  HbrVertexEdit  T   edit  new OpenSubdiv  HbrVertexEdit  T   faceid , nsubfaces , subfaces , vertexid , offset , floatwidth , isP , op , values  Face-varying Data Here is a walk-through of how to store face-varying data for a u,v pair. Unlike vertex and varying data which is accessed through the templated vertex API, face-varying data is directly aggregated as vectors of float data. Instantiating the HbrMesh The HbrMesh needs to retain some knowledge about the face-varying data that it carries in order to refine it correctly. int fvarwidth  2   total width of the fvar data static int indices  1    0 ,  1 offset set to 0 widths  1    2   2 floats in a u,v pair int const fvarcount  fvarwidth  0  1  0 ,  fvarindices  fvarwidth  0  indices  NULL ,  fvarwidths  fvarwidth  0  widths  NULL  mesh  new OpenSubdiv  HbrMesh  T    _scheme , fvarcount , fvarindices , fvarwidths , fvarwidth  Setting the Face-Varying Data After the topology has been created, Hbr is ready to accept face-varying data. Here is some sample code for  int i  0 , idx  0  i  numFaces   i   OpenSubdiv  HbrFace  Vertex   f  mesh - GetFace  i  int nv  f - GetNumVertices   note this is not the fastest way OpenSubdiv  HbrHalfedge  Vertex   e  f - GetFirstEdge  for  int j  0  j  nv   j , e  e - GetNext   OpenSubdiv  HbrFVarData  Vertex   fvt  e - GetOrgVertex  - GetFVarData  f  float const  fvdata  GetFaceVaryingData  i , j  if  not fvt . IsInitialized    if no fvar daa exists yet on the vertex fvt . SetAllData  2 , fvdata   else if  not fvt . CompareAll  2 , fvdata    if there already is fvar data and there is a boundary add the new data OpenSubdiv  HbrFVarData  T   nfvt  e - GetOrgVertex  - NewFVarData  f  nfvt . SetAllData  2 , fvdata     Retrieving the Face-Varying Data The HbrFVarData structures are expanded during the refinement process, with every sub-face being assigned a set of interpolated face-varying data. This data can be accessed in 2 ways  From a face, passing a vertex index  OpenSubdivHbrFaceVertex  f OpenSubdiv  HbrFVarData const  fv  f . GetFVarData  vindex  const float  data  fv . GetData  From a vertex, passing a pointer to an incident face  OpenSubdivHbrFaceVertex  f OpenSubdiv  HbrFVarData const  fv  myVertex . GetFVarData  f  const float  data  fv . GetData  Valence Operators When manipulating meshes, it is often necessary to iterate over neighboring faces or vertices. Rather than gather lists of pointers and return them, Hbr exposes an operator pattern that guarantees consistent mesh traversals. The following example shows how to use an operator to count the number of neighboring vertices use HbrVertexGetValence for proper valence counts OpenSubdivHbrVertexVertex  v class MyOperator  public OpenSubdiv  HbrVertexOperator  Vertex   public  int count  MyOperator   count  0    virtual void operator   OpenSubdiv  HbrVertex  Vertex   v    count    MyOperator op  v - ApplyOperatorSurroundingVertices  op  Managing Singular Vertices Certain topological configurations would force vertices to share multiple half-edge cycles. Because Hbr is a half-edge representation, these singular vertices have to be duplicated as part of the HbrMeshFinish phase of the instantiation. These duplicated vertices can cause problems for client-code that tries to populate buffers of vertex or varying data. The following sample code shows how to match the vertex data to singular vertex splits  Populating an OsdCpuVertexBuffer with vertex data positions,... float const  vtxData  inMeshFn . getRawPoints   returnStatus  OpenSubdiv  OsdCpuVertexBuffer  vertexBuffer  OpenSubdiv  OsdCpuVertexBuffer  Create  numVertexElements , numFarVerts  vertexBuffer - UpdateData  vtxData , 0 , numVertices   Duplicate the vertex data into the split singular vertices std  vector  std  pair  int , int   const splits  hbrMesh - GetSplitVertices  for  int i  0  i   int  splits . size   i   vertexBuffer - UpdateData  vtxData  splits  i . second  numVertexElements , splits  i . first , 1   Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n-        \"loc\": \"dxviewer.html\"\n+        \"loc\": \"using_osd_hbr.html\"\n     }, {\n-        \"title\": \"far_tutorial_5_3.cpp\",\n-        \"text\": \"far_tutorial_5_3.cpp far_tutorial_5_3.cpp 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE httpsgithub.comPixarAnimationStudiosOpenSubdivblobreleasetutorialsfartutorial_5_3far_tutorial_5_3.cpp ------------------------------------------------------------------------------  Tutorial description   This tutorial shows how to use a FarLimitStenciTable to repeatedly  and efficiently evaluate a set of points and optionally derivatives  on the limit surface.   A LimitStencilTable derives from StencilTable but is specialized to  factor the evaluation of limit positions and derivatives into stencils.  This allows a set of limit properties to be efficiently recomputed in  response to changes to the vertices of the base mesh. Constructing  the different kinds of StencilTables can have a high cost, so whether  that cost is worth it will depend on your usage e.g. if points are  only computed once, using stencil tables is typically not worth the  added cost.   Any points on the limit surface can be identified for evaluation. In  this example we create a crude tessellation similar to tutorial_5_2.  The midpoint of each face and points near the corners of the face are  evaluated and a triangle fan connects them.  include ......regressioncommonarg_utils.h include ......regressioncommonfar_utils.h include opensubdivfartopologyDescriptor.h include opensubdivfarpatchTableFactory.h include opensubdivfarstencilTableFactory.h include opensubdivfarptexIndices.h include cassert include cstdio include cstring include fstream include sstream using namespace OpenSubdiv  using Far  Index    Global utilities in this namespace are not relevant to the tutorial.  They simply serve to construct some default geometry to be processed  in the form of a TopologyRefiner and vector of vertex positions.  namespace    Simple structs for x,y,z position and a 3-tuple for the set  of vertices of a triangle  struct Pos  Pos    Pos  float x , float y , float z   p  0   x , p  1   y , p  2   z   Pos operator   Pos const  op  const  return Pos  p  0   op . p  0 , p  1   op . p  1 , p  2   op . p  2    Clear and AddWithWeight required for interpolation void Clear  void   0   p  0   p  1   p  2   0.0f   void AddWithWeight  Pos const  src , float weight   p  0   weight  src . p  0  p  1   weight  src . p  1  p  2   weight  src . p  2   float p  3   typedef std  vector  Pos  PosVector  struct Tri  Tri    Tri  int a , int b , int c   v  0   a , v  1   b , v  2   c   int v  3   typedef std  vector  Tri  TriVector    Functions to populate the topology and geometry arrays a simple  shape whose positions may be transformed  void createCube  std  vector  int   vertsPerFace , std  vector  Index   faceVertsPerFace , std  vector  Pos   positionsPerVert    Local topology and position of a cube centered at origin static float const cubePositions  8  3     -0.5f , -0.5f , -0.5f ,  -0.5f , 0.5f , -0.5f ,  -0.5f , 0.5f , 0.5f ,  -0.5f , -0.5f , 0.5f ,  0.5f , -0.5f , -0.5f ,  0.5f , 0.5f , -0.5f ,  0.5f , 0.5f , 0.5f ,  0.5f , -0.5f , 0.5f   static int const cubeFaceVerts  6  4     0 , 3 , 2 , 1 ,  4 , 5 , 6 , 7 ,  0 , 4 , 7 , 3 ,  1 , 2 , 6 , 5 ,  0 , 1 , 5 , 4 ,  3 , 7 , 6 , 2    Initialize verts-per-face and face-vertices for each face vertsPerFace . resize  6  faceVertsPerFace . resize  24  for  int i  0  i  6   i   vertsPerFace  i   4  for  int j  0  j  4   j   faceVertsPerFace  i  4  j   cubeFaceVerts  i  j     Initialize vertex positions positionsPerVert . resize  8  for  int i  0  i  8   i   float const  p  cubePositions  i  positionsPerVert  i   Pos  p  0 , p  1 , p  2      Create a TopologyRefiner from default geometry created above  Far  TopologyRefiner  createTopologyRefinerDefault  PosVector  posVector   std  vector  int  topVertsPerFace  std  vector  Index  topFaceVerts  createCube  topVertsPerFace , topFaceVerts , posVector  typedef Far  TopologyDescriptor Descriptor  Sdc  SchemeType type  OpenSubdiv  Sdc  SCHEME_CATMARK  Sdc  Options options  options . SetVtxBoundaryInterpolation  Sdc  Options  VTX_BOUNDARY_EDGE_AND_CORNER  Descriptor desc  desc . numVertices   int  posVector . size  desc . numFaces   int  topVertsPerFace . size  desc . numVertsPerFace   topVertsPerFace  0  desc . vertIndicesPerFace   topFaceVerts  0   Instantiate a FarTopologyRefiner from the descriptor. Far  TopologyRefiner  refiner  Far  TopologyRefinerFactory  Descriptor  Create  desc , Far  TopologyRefinerFactory  Descriptor  Options  type , options  assert  refiner  return refiner     Create a TopologyRefiner from a specified Obj file  geometry created internally  Far  TopologyRefiner  createTopologyRefinerFromObj  std  string const  objFileName , Sdc  SchemeType schemeType , PosVector  posVector   const char  filename  objFileName . c_str  const Shape  shape  0  std  ifstream ifs  filename  if  ifs   std  stringstream ss  ss  ifs . rdbuf  ifs . close  std  string shapeString  ss . str  shape  Shape  parseObj  shapeString . c_str , ConvertSdcTypeToShapeScheme  schemeType , false  if  shape  0   fprintf  stderr , Error Cannot create Shape from .obj file s n  , filename  return 0    else  fprintf  stderr , Error Cannot open .obj file s n  , filename  return 0   Sdc  SchemeType sdcType  GetSdcType   shape  Sdc  Options sdcOptions  GetSdcOptions   shape  Far  TopologyRefiner  refiner  Far  TopologyRefinerFactory  Shape  Create   shape , Far  TopologyRefinerFactory  Shape  Options  sdcType , sdcOptions  if  refiner  0   fprintf  stderr , Error Unable to construct TopologyRefiner  from .obj file s n  , filename  return 0   int numVertices  refiner - GetNumVerticesTotal  posVector . resize  numVertices  std  memcpy   posVector  0 . p  0 ,  shape - verts  0 , numVertices  3  sizeof  float  delete shape  return refiner     Simple function to export an Obj file for the limit points -- which  provides a simple tessllation similar to tutorial_5_2.  int writeToObj  Far  TopologyLevel const  baseLevel , std  vector  Pos  const  vertexPositions , int nextObjVertexIndex   for  size_t i  0  i  vertexPositions . size   i   float const  p  vertexPositions  i . p  printf  v f f f n  , p  0 , p  1 , p  2     Connect the sequences of limit points center followed by corners  into triangle fans for each base face  for  int i  0  i  baseLevel . GetNumFaces   i   int faceSize  baseLevel . GetFaceVertices  i . size  int vCenter  nextObjVertexIndex  1  int vCorner  vCenter  1  for  int k  0  k  faceSize   k   printf  f d d d n  , vCenter , vCorner  k , vCorner   k  1   faceSize   nextObjVertexIndex  faceSize  1   return nextObjVertexIndex     end namespace   Command line arguments parsed to provide run-time options  class Args  public  std  string inputObjFile  Sdc  SchemeType schemeType  int maxPatchDepth  int numPoses  Pos poseOffset  bool deriv1Flag  bool noPatchesFlag  bool noOutputFlag  public  Args  int argc , char  argv   inputObjFile , schemeType  Sdc  SCHEME_CATMARK , maxPatchDepth  3 , numPoses  0 , poseOffset  1.0f , 0.0f , 0.0f , deriv1Flag  false , noPatchesFlag  false , noOutputFlag  false    Parse and assign standard arguments and Obj files ArgOptions args  args . Parse  argc , argv  maxPatchDepth  args . GetLevel  schemeType  ConvertShapeSchemeToSdcType  args . GetDefaultScheme  const std  vector  const char  objFiles  args . GetObjFiles  if   objFiles . empty   for  size_t i  1  i  objFiles . size   i   fprintf  stderr , Warning .obj file s ignored n  , objFiles  i   inputObjFile  std  string  objFiles  0    Parse remaining arguments specific to this example const std  vector  const char   rargs  args . GetRemainingArgs  for  size_t i  0  i  rargs . size   i   if   strcmp  rargs  i , -d1   deriv1Flag  true   else if   strcmp  rargs  i , -nopatches   noPatchesFlag  true   else if   strcmp  rargs  i , -poses   if   i  rargs . size  numPoses  atoi  rargs  i   else if   strcmp  rargs  i , -offset   if   i  rargs . size  poseOffset . p  0    float  atof  rargs  i  if   i  rargs . size  poseOffset . p  1    float  atof  rargs  i  if   i  rargs . size  poseOffset . p  2    float  atof  rargs  i   else if   strcmp  rargs  i , -nooutput   noOutputFlag  true   else  fprintf  stderr , Warning Argument s ignored n  , rargs  i     private  Args       Assemble the set of locations for the limit points. The resulting  vector of LocationArrays can contain arbitrary locations on the limit  surface -- with multiple locations for the same patch grouped into a  single array.   In this case, for each base face, coordinates for the center and its  corners are specified -- from which we will construct a triangle fan  providing a crude tessellation similar to tutorial_5_2.  typedef Far  LimitStencilTableFactory  LocationArray LocationArray  int assembleLimitPointLocations  Far  TopologyRefiner const  refiner , std  vector  LocationArray   locations     Coordinates for the center of the face and its corners slightly  inset. Unlike most of the public interface for patches, the  LocationArray refers to parameteric coordinates as s,t, so that  convention will be followed here.   Note that the s,t coordinates in a LocationArray are referred to  by reference. The memory holding these s,t values must persist  while the LimitStencilTable is constructed -- the arrays here are  declared as static for that purpose.  static float const quadSCoords  5    0.5f , 0.05f , 0.95f , 0.95f , 0.05f  static float const quadTCoords  5    0.5f , 0.05f , 0.05f , 0.95f , 0.95f  static float const triSCoords  4    0.33f , 0.05f , 0.95f , 0.05f  static float const triTCoords  4    0.33f , 0.05f , 0.00f , 0.95f  static float const irregSCoords  2    1.0f , 0.05f  static float const irregTCoords  2    1.0f , 0.05f    Since these are references to patches to be evaluated, we require  use of the Ptex indices to identify the top-most parameterized  patch, which is essential to dealing with non-quad faces in the  case of Catmark.  Far  TopologyLevel const  baseLevel  refiner . GetLevel  0  Far  PtexIndices basePtexIndices  refiner  int regFaceSize  Sdc  SchemeTypeTraits  GetRegularFaceSize  refiner . GetSchemeType    For each base face, simply refer to the s,t arrays for regular quad  and triangular patches with a single LocationArray. Otherwise, for  irregular faces, the corners of the face come from different patches  and so must be referenced in separate LocationArrays.  locations . clear  int numLimitPoints  0  for  int i  0  i  baseLevel . GetNumFaces   i   int baseFaceSize  baseLevel . GetFaceVertices  i . size  int basePtexId  basePtexIndices . GetFaceId  i  bool faceIsRegular   baseFaceSize  regFaceSize  if  faceIsRegular    All coordinates are on the same top-level patch LocationArray loc  loc . ptexIdx  basePtexId  loc . numLocations  baseFaceSize  1  if  baseFaceSize  4   loc . s  quadSCoords  loc . t  quadTCoords   else  loc . s  triSCoords  loc . t  triTCoords   locations . push_back  loc   else   Center coordinate is on the first sub-patch while those on  near the corners are on each successive sub-patch LocationArray loc  loc . numLocations  1  for  int j  0  j  baseFaceSize   j   bool isPerimeter   j  0  loc . ptexIdx  basePtexId   isPerimeter   j -1   0  loc . s   irregSCoords  isPerimeter  loc . t   irregTCoords  isPerimeter  locations . push_back  loc    numLimitPoints  baseFaceSize  1   return numLimitPoints     Load command line arguments and geometry, build the LimitStencilTable  for a set of points on the limit surface and compute those points for  several orientations of the mesh  int main  int argc , char  argv   Args args  argc , argv    Create or load the base geometry command line arguments allow a  .obj file to be specified, providing a TopologyRefiner and a set  of base vertex positions to work with  std  vector  Pos  basePositions  Far  TopologyRefiner  refinerPtr  args . inputObjFile . empty   createTopologyRefinerDefault  basePositions   createTopologyRefinerFromObj  args . inputObjFile , args . schemeType , basePositions  assert  refinerPtr  Far  TopologyRefiner  refiner   refinerPtr  Far  TopologyLevel const  baseLevel  refiner . GetLevel  0    Use of LimitStencilTable requires either explicit or implicit use  of a PatchTable. A PatchTable is not required to construct a  LimitStencilTable -- one will be constructed internally for use  and discarded -- but explicit construction is recommended to control  the many legacy options for PatchTable, rather than relying on  internal defaults. Adaptive refinement is required in both cases  to indicate the accuracy of the patches.   Note that if a TopologyRefiner and PatchTable are not used for  any other purpose than computing the limit points, that specifying  the subset of faces containing those limit points in the adaptive  refinement and PatchTable construction can avoid unnecessary  overhead.  Far  PatchTable  patchTablePtr  0  if  args . noPatchesFlag   refiner . RefineAdaptive  Far  TopologyRefiner  AdaptiveOptions  args . maxPatchDepth   else  Far  PatchTableFactory  Options patchOptions  args . maxPatchDepth  patchOptions . useInfSharpPatch  true  patchOptions . generateLegacySharpCornerPatches  false  patchOptions . generateVaryingTables  false  patchOptions . generateFVarTables  false  patchOptions . endCapType  Far  PatchTableFactory  Options  ENDCAP_GREGORY_BASIS  refiner . RefineAdaptive  patchOptions . GetRefineAdaptiveOptions  patchTablePtr  Far  PatchTableFactory  Create  refiner , patchOptions  assert  patchTablePtr     Assemble the set of locations for the limit points. For each base  face, coordinates for the center and its corners are specified --  from which we will construct a triangle fan providing a crude  tessellation similar to tutorial_5_2.  std  vector  LocationArray  locations  int numLimitPoints  assembleLimitPointLocations  refiner , locations    Construct a LimitStencilTable from the refiner, patch table optional  and the collection of limit point locations. Stencils can optionally  be created for computing dervatives -- the default is to compute 1st  derivative stencils, so be sure to disable that if not necessary  Far  LimitStencilTableFactory  Options limitOptions  limitOptions . generate1stDerivatives  args . deriv1Flag  Far  LimitStencilTable const  limitStencilTablePtr  Far  LimitStencilTableFactory  Create  refiner , locations , 0 ,  optional StencilTable for the refined points patchTablePtr ,  optional PatchTable limitOptions  assert  limitStencilTablePtr  Far  LimitStencilTable const  limitStencilTable   limitStencilTablePtr    Apply the constructed LimitStencilTable to compute limit positions  from the base level vertex positions. This is trivial if computing  all positions in one invokation. The UpdateValues method and those  for derivatives are overloaded to optionally accept a subrange of  indices to distribute the computation  std  vector  Pos  limitPositions  numLimitPoints  limitStencilTable . UpdateValues  basePositions , limitPositions   Call with the optional subrange limitStencilTable . UpdateValues  basePositions , limitPositions , 0 , numLimitPoints  2  limitStencilTable . UpdateValues  basePositions , limitPositions ,  numLimitPoints  2   1 , numLimitPoints   Write vertices and faces in Obj format for the original limit points int objVertCount  0  if   args . noOutputFlag   printf  g base_mesh n   objVertCount  writeToObj  baseLevel , limitPositions , objVertCount     Recompute the limit points and output faces for different poses of  the original mesh -- in this case simply translated. Also optionally  compute 1st derivatives though they are not used here  std  vector  Pos  posePositions  basePositions  std  vector  Pos  limitDu  args . deriv1Flag  numLimitPoints  0  std  vector  Pos  limitDv  args . deriv1Flag  numLimitPoints  0  for  int i  0  i  args . numPoses   i    Trivially transform the base vertex positions and re-compute for  size_t j  0  j  basePositions . size   j   posePositions  j   posePositions  j   args . poseOffset   limitStencilTable . UpdateValues  posePositions , limitPositions  if  args . deriv1Flag   limitStencilTable . UpdateDerivs  posePositions , limitDu , limitDv   if   args . noOutputFlag   printf   n g pose_d n  , i  objVertCount  writeToObj  baseLevel , limitPositions , objVertCount    delete refinerPtr  delete patchTablePtr  delete limitStencilTablePtr  return EXIT_SUCCESS   Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"title\": \"bfr_tutorial_3_1.cpp\",\n+        \"text\": \"bfr_tutorial_3_1.cpp bfr_tutorial_3_1.cpp 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE httpsgithub.comPixarAnimationStudiosOpenSubdivblobreleasetutorialsbfrtutorial_3_1bfr_tutorial_3_1.cpp ------------------------------------------------------------------------------  Tutorial description   This tutorial illustrates the definition of a custom subclass of  BfrSurfaceFactory -- providing a class with the SurfaceFactory  interface adapted to a connected mesh representation.   The bulk of this code is therefore identical to a previous tutorial  1.3 which illustrates simple use of a BfrSurface factory. The  only difference here lies in the explicit local definition of the  subclass of BfrSurfaceFactory for FarTopologyRefiner -- named  CustomSurfaceFactory in this case.  include .customSurfaceFactory.h include opensubdivfartopologyRefiner.h include opensubdivbfrsurface.h include opensubdivbfrtessellation.h include vector include string include cstring include cstdio  Local headers with support for this tutorial in namespace tutorial include .meshLoader.h include .objWriter.h using namespace OpenSubdiv    Simple command line arguments to provide input and run-time options  class Args  public  std  string inputObjFile  std  string outputObjFile  Sdc  SchemeType schemeType  int tessUniformRate  bool tessQuadsFlag  bool uv2xyzFlag  public  Args  int argc , char  argv   inputObjFile , outputObjFile , schemeType  Sdc  SCHEME_CATMARK , tessUniformRate  5 , tessQuadsFlag  false , uv2xyzFlag  false   for  int i  1  i  argc   i   if  strstr  argv  i , .obj   if  inputObjFile . empty   inputObjFile  std  string  argv  i   else  fprintf  stderr , Warning Extra Obj file s ignored n  , argv  i    else if   strcmp  argv  i , -o   if   i  argc  outputObjFile  std  string  argv  i   else if   strcmp  argv  i , -bilinear   schemeType  Sdc  SCHEME_BILINEAR   else if   strcmp  argv  i , -catmark   schemeType  Sdc  SCHEME_CATMARK   else if   strcmp  argv  i , -loop   schemeType  Sdc  SCHEME_LOOP   else if   strcmp  argv  i , -res   if   i  argc  tessUniformRate  atoi  argv  i   else if   strcmp  argv  i , -quads   tessQuadsFlag  true   else if   strcmp  argv  i , -uv2xyz   uv2xyzFlag  true   else  fprintf  stderr , Warning Unrecognized argument s ignored n  , argv  i     private  Args       The main tessellation function given a mesh and vertex positions,  tessellate each face -- writing results in Obj format.  void tessellateToObj  Far  TopologyRefiner const  meshTopology , std  vector  float  const  meshVertexPositions , std  vector  float  const  meshFaceVaryingUVs , Args const  options     Use simpler local type names for the Surface and its factory  typedef CustomSurfaceFactory SurfaceFactory  typedef Bfr  Surface  float  Surface    Initialize the SurfaceFactory for the given base mesh very low  cost in terms of both time and space and tessellate each face  independently i.e. no shared vertices   Note that the SurfaceFactory is not thread-safe by default due to  use of an internal cache. Creating a separate instance of the  SurfaceFactory for each thread is one way to safely parallelize  this loop. Another preferred is to assign a thread-safe cache  to the single instance.   First declare any evaluation options when initializing   When dealing with face-varying data, an identifier is necessary  when constructing Surfaces in order to distinguish the different  face-varying data channels. To avoid repeatedly specifying that  identifier when only one is present or of interest, it can be  specified via the Options.  bool meshHasUVs   meshTopology . GetNumFVarChannels   0  SurfaceFactory  Options surfaceOptions  if  meshHasUVs   surfaceOptions . SetDefaultFVarID  0   SurfaceFactory surfaceFactory  meshTopology , surfaceOptions    The Surface to be constructed and evaluated for each face -- as  well as the intermediate and output data associated with it -- can  be declared in the scope local to each face. But since dynamic  memory is involved with these variables, it is preferred to declare  them outside that loop to preserve and reuse that dynamic memory.  Surface posSurface  Surface uvSurface  std  vector  float  facePatchPoints  std  vector  float  outCoords  std  vector  float  outPos , outDu , outDv  std  vector  float  outUV  std  vector  int  outFacets    Assign Tessellation Options applied for all faces. Tessellations  allow the creating of either 3- or 4-sided faces -- both of which  are supported here via a command line option  int const tessFacetSize  3  options . tessQuadsFlag  Bfr  Tessellation  Options tessOptions  tessOptions . SetFacetSize  tessFacetSize  tessOptions . PreserveQuads  options . tessQuadsFlag    Process each face, writing the output of each in Obj format  tutorial  ObjWriter objWriter  options . outputObjFile  int numFaces  surfaceFactory . GetNumFaces  for  int faceIndex  0  faceIndex  numFaces   faceIndex     Initialize the Surfaces for position and UVs of this face.  There are two ways to do this -- both illustrated here   Creating Surfaces for the different data interpolation types  independently is clear and convenient, but considerable work  may be duplicated in the construction process in the case of  non-linear face-varying Surfaces. So unless it is known that  face-varying interpolation is linear, use of InitSurfaces  is generally preferred.   Remember also that the face-varying identifier is omitted from  the initialization methods here as it was previously assigned  to the SurfaceFactoryOptions. In the absence of an assignment  of the default FVarID to the Options, a failure to specify the  FVarID here will result in failure.   The cases below are expanded for illustration purposes, and  validity of the resulting Surface is tested here, rather than  the return value of initialization methods.  bool createSurfacesTogether  true  if   meshHasUVs   surfaceFactory . InitVertexSurface  faceIndex ,  posSurface   else if  createSurfacesTogether   surfaceFactory . InitSurfaces  faceIndex ,  posSurface ,  uvSurface   else  if  surfaceFactory . InitVertexSurface  faceIndex ,  posSurface   surfaceFactory . InitFaceVaryingSurface  faceIndex ,  uvSurface    if   posSurface . IsValid  continue    Declare a simple uniform Tessellation for the Parameterization  of this face and identify coordinates of the points to evaluate  Bfr  Tessellation tessPattern  posSurface . GetParameterization , options . tessUniformRate , tessOptions  int numOutCoords  tessPattern . GetNumCoords  outCoords . resize  numOutCoords  2  tessPattern . GetCoords  outCoords . data    Prepare the patch points for the Surface, then use them to  evaluate output points for all identified coordinates   Evaluate vertex positions   Resize patch point and output arrays int pointSize  3  facePatchPoints . resize  posSurface . GetNumPatchPoints   pointSize  outPos . resize  numOutCoords  pointSize  outDu . resize  numOutCoords  pointSize  outDv . resize  numOutCoords  pointSize   Populate patch point and output arrays posSurface . PreparePatchPoints  meshVertexPositions . data , pointSize , facePatchPoints . data , pointSize  for  int i  0 , j  0  i  numOutCoords   i , j  pointSize   posSurface . Evaluate   outCoords  i  2 , facePatchPoints . data , pointSize ,  outPos  j ,  outDu  j ,  outDv  j     Evaluate face-varying UVs when present if  meshHasUVs    Resize patch point and output arrays  - note reuse of the same patch point array as position int pointSize  2  facePatchPoints . resize  uvSurface . GetNumPatchPoints   pointSize  outUV . resize  numOutCoords  pointSize   Populate patch point and output arrays uvSurface . PreparePatchPoints  meshFaceVaryingUVs . data , pointSize , facePatchPoints . data , pointSize  for  int i  0 , j  0  i  numOutCoords   i , j  pointSize   uvSurface . Evaluate   outCoords  i  2 , facePatchPoints . data , pointSize ,  outUV  j      Identify the faces of the Tessellation   Note the need to offset vertex indices for the output faces --  using the number of vertices generated prior to this face. One  of several Tessellation methods to transform the facet indices  simply translates all indices by the desired offset.  int objVertexIndexOffset  objWriter . GetNumVertices  int numFacets  tessPattern . GetNumFacets  outFacets . resize  numFacets  tessFacetSize  tessPattern . GetFacets  outFacets . data  tessPattern . TransformFacetCoordIndices  outFacets . data , objVertexIndexOffset    Write the evaluated points and faces connecting them as Obj  objWriter . WriteGroupName  baseFace_ , faceIndex  if  meshHasUVs  options . uv2xyzFlag   objWriter . WriteVertexPositions  outUV , 2  objWriter . WriteFaces  outFacets , tessFacetSize , false , false   else  objWriter . WriteVertexPositions  outPos  objWriter . WriteVertexNormals  outDu , outDv  if  meshHasUVs   objWriter . WriteVertexUVs  outUV   objWriter . WriteFaces  outFacets , tessFacetSize , true , meshHasUVs       Load command line arguments, specified or default geometry and process  int main  int argc , char  argv   Args args  argc , argv  Far  TopologyRefiner  meshTopology  0  std  vector  float  meshVtxPositions  std  vector  float  meshFVarUVs  meshTopology  tutorial  createTopologyRefiner  args . inputObjFile , args . schemeType , meshVtxPositions , meshFVarUVs  if  meshTopology  0   return EXIT_FAILURE   tessellateToObj   meshTopology , meshVtxPositions , meshFVarUVs , args  delete meshTopology  return EXIT_SUCCESS   ------------------------------------------------------------------------------ Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n-        \"loc\": \"far_tutorial_5_3.html\"\n+        \"loc\": \"bfr_tutorial_3_1.html\"\n     }, {\n-        \"title\": \"hbr_tutorial_0.cpp\",\n-        \"text\": \"hbr_tutorial_0.cpp hbr_tutorial_0.cpp 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE httpsgithub.comPixarAnimationStudiosOpenSubdivblobreleasetutorialshbrtutorial_0hbr_tutorial_0.cpp ------------------------------------------------------------------------------  Tutorial description   This tutorial presents in a very succinct way the requisite steps to  instantiate an Hbr mesh from simple topological data.  include opensubdivhbrmesh.h include opensubdivhbrcatmark.h include cstdio ------------------------------------------------------------------------------  Vertex container implementation.   The HbrMeshT class is a templated interface that expects a vertex class to  perform interpolation on arbitrary vertex data.   For the template specialization of the HbrMesh interface to be met, our  Vertex object to implement a minimal set of constructors and member  functions.   Since we are not going to subdivide the mesh, the struct presented here has  been left minimalistic. The only customization added to our container was to  provide storage and accessors for the position of a 3D vertex.  struct Vertex   Hbr minimal required interface ---------------------- Vertex    Vertex  int i    Vertex  Vertex const  src   _position  0   src . _position  0  _position  1   src . _position  1  _position  2   src . _position  2   void Clear  void   0    void AddWithWeight  Vertex const  , float    void AddVaryingWithWeight  Vertex const  , float     Public interface ------------------------------------ void SetPosition  float x , float y , float z   _position  0   x  _position  1   y  _position  2   z   const float  GetPosition  const  return _position   private  float _position  3   typedef OpenSubdiv  HbrMesh  Vertex  Hmesh  typedef OpenSubdiv  HbrFace  Vertex  Hface  typedef OpenSubdiv  HbrVertex  Vertex  Hvertex  typedef OpenSubdiv  HbrHalfedge  Vertex  Hhalfedge  ------------------------------------------------------------------------------  Pyramid geometry from catmark_pyramid.h static float verts  5  3    0.0f , 0.0f , 2.0f ,  0.0f , -2.0f , 0.0f ,  2.0f , 0.0f , 0.0f ,  0.0f , 2.0f , 0.0f ,  -2.0f , 0.0f , 0.0f  static int nverts  5 , nfaces  5  static int facenverts  5    3 , 3 , 3 , 3 , 4  static int faceverts  16    0 , 1 , 2 , 0 , 2 , 3 , 0 , 3 , 4 , 0 , 4 , 1 , 4 , 3 , 2 , 1  ------------------------------------------------------------------------------ int main  int , char     Create a subdivision scheme Catmull-Clark here OpenSubdiv  HbrCatmarkSubdivision  Vertex   catmark  new OpenSubdiv  HbrCatmarkSubdivision  Vertex    Create an empty Hbr mesh Hmesh  hmesh  new Hmesh  catmark   Populate the vertices Vertex v  for  int i  0  i  nverts   i    Primitive variable data must be set here in our case we set  the 3D position of the vertex. v . SetPosition  verts  i  0 , verts  i  1 , verts  i  2   Add the vertex to the mesh. hmesh - NewVertex  i , v    Create the topology int  fv  faceverts  for  int i  0  i  nfaces   i   int nv  facenverts  i  hmesh - NewFace  nv , fv , 0  fv  nv    Set subdivision options   By default vertex interpolation is set to none on boundaries, which  can produce un-expected results, so we change it to edge-only.  hmesh - SetInterpolateBoundaryMethod  Hmesh  k_InterpolateBoundaryEdgeOnly   Call Finish to finalize the data structures before using the mesh. hmesh - Finish  printf  Created a pyramid with d faces and d vertices. n  , hmesh - GetNumFaces , hmesh - GetNumVertices  delete hmesh  delete catmark   ------------------------------------------------------------------------------ Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"title\": \"bfr_tutorial_1_4.cpp\",\n+        \"text\": \"bfr_tutorial_1_4.cpp bfr_tutorial_1_4.cpp 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE httpsgithub.comPixarAnimationStudiosOpenSubdivblobreleasetutorialsbfrtutorial_1_4bfr_tutorial_1_4.cpp ------------------------------------------------------------------------------  Tutorial description   This tutorial builds on the previous tutorial that makes use of the  SurfaceFactory, Surface and Tessellation classes for evaluating and  tessellating the limit surface of faces of a mesh by illustrating  how the presence of additional data in the mesh arrays is handled.   As in the previous tutorial, vertex positions and face-varying UVs  are provided with the mesh to be evaluated. But here an additional  color is interleaved with the position in the vertex data of the  mesh and a third component is added to face-varying UV data making  it u,v,w.   To evaluate the position and 2D UVs while avoiding the color and  unused third UV coordinate, the SurfacePointDescriptor class is  used to describe the size and stride of the desired data to be  evaluated in the arrays of mesh data.  include opensubdivfartopologyRefiner.h include opensubdivbfrrefinerSurfaceFactory.h include opensubdivbfrsurface.h include opensubdivbfrtessellation.h include vector include string include cstring include cstdio  Local headers with support for this tutorial in namespace tutorial include .meshLoader.h include .objWriter.h using namespace OpenSubdiv    Simple command line arguments to provide input and run-time options  class Args  public  std  string inputObjFile  std  string outputObjFile  Sdc  SchemeType schemeType  int tessUniformRate  bool tessQuadsFlag  bool uv2xyzFlag  public  Args  int argc , char  argv   inputObjFile , outputObjFile , schemeType  Sdc  SCHEME_CATMARK , tessUniformRate  5 , tessQuadsFlag  false , uv2xyzFlag  false   for  int i  1  i  argc   i   if  strstr  argv  i , .obj   if  inputObjFile . empty   inputObjFile  std  string  argv  i   else  fprintf  stderr , Warning Extra Obj file s ignored n  , argv  i    else if   strcmp  argv  i , -o   if   i  argc  outputObjFile  std  string  argv  i   else if   strcmp  argv  i , -bilinear   schemeType  Sdc  SCHEME_BILINEAR   else if   strcmp  argv  i , -catmark   schemeType  Sdc  SCHEME_CATMARK   else if   strcmp  argv  i , -loop   schemeType  Sdc  SCHEME_LOOP   else if   strcmp  argv  i , -res   if   i  argc  tessUniformRate  atoi  argv  i   else if   strcmp  argv  i , -quads   tessQuadsFlag  true   else if   strcmp  argv  i , -uv2xyz   uv2xyzFlag  true   else  fprintf  stderr , Warning Unrecognized argument s ignored n  , argv  i     private  Args       The main tessellation function given a mesh and vertex positions,  tessellate each face -- writing results in Obj format.  void tessellateToObj  Far  TopologyRefiner const  meshTopology , std  vector  float  const  meshVtxData , int vtxDataSize , std  vector  float  const  meshFVarData , int fvarDataSize , Args const  options     Use simpler local type names for the Surface and its factory  typedef Bfr  RefinerSurfaceFactory  SurfaceFactory  typedef Bfr  Surface  float  Surface  typedef Surface  PointDescriptor SurfacePoint    Identify the source positions and UVs within more general data  arrays for the mesh. If position andor UV are not at the start  of the vtx andor fvar data, simply offset the head of the array  here accordingly  bool meshHasUVs   meshTopology . GetNumFVarChannels   0  float const  meshPosData  meshVtxData . data  SurfacePoint meshPosPoint  3 , vtxDataSize  float const  meshUVData  meshHasUVs  meshFVarData . data   0  SurfacePoint meshUVPoint  2 , fvarDataSize    Initialize the SurfaceFactory for the given base mesh very low  cost in terms of both time and space and tessellate each face  independently i.e. no shared vertices   Note that the SurfaceFactory is not thread-safe by default due to  use of an internal cache. Creating a separate instance of the  SurfaceFactory for each thread is one way to safely parallelize  this loop. Another preferred is to assign a thread-safe cache  to the single instance.   First declare any evaluation options when initializing   When dealing with face-varying data, an identifier is necessary  when constructing Surfaces in order to distinguish the different  face-varying data channels. To avoid repeatedly specifying that  identifier when only one is present or of interest, it can be  specified via the Options.  SurfaceFactory  Options surfaceOptions  if  meshHasUVs   surfaceOptions . SetDefaultFVarID  0   SurfaceFactory surfaceFactory  meshTopology , surfaceOptions    The Surface to be constructed and evaluated for each face -- as  well as the intermediate and output data associated with it -- can  be declared in the scope local to each face. But since dynamic  memory is involved with these variables, it is preferred to declare  them outside that loop to preserve and reuse that dynamic memory.  Surface posSurface  Surface uvSurface  std  vector  float  facePatchPoints  std  vector  float  outCoords  std  vector  float  outPos , outDu , outDv  std  vector  float  outUV  std  vector  int  outFacets    Assign Tessellation Options applied for all faces. Tessellations  allow the creating of either 3- or 4-sided faces -- both of which  are supported here via a command line option  int const tessFacetSize  3  options . tessQuadsFlag  Bfr  Tessellation  Options tessOptions  tessOptions . SetFacetSize  tessFacetSize  tessOptions . PreserveQuads  options . tessQuadsFlag    Process each face, writing the output of each in Obj format  tutorial  ObjWriter objWriter  options . outputObjFile  int numFaces  surfaceFactory . GetNumFaces  for  int faceIndex  0  faceIndex  numFaces   faceIndex     Initialize the Surfaces for position and UVs of this face.  There are two ways to do this -- both illustrated here   Creating Surfaces for the different data interpolation types  independently is clear and convenient, but considerable work  may be duplicated in the construction process in the case of  non-linear face-varying Surfaces. So unless it is known that  face-varying interpolation is linear, use of InitSurfaces  is generally preferred.   Remember also that the face-varying identifier is omitted from  the initialization methods here as it was previously assigned  to the SurfaceFactoryOptions. In the absence of an assignment  of the default FVarID to the Options, a failure to specify the  FVarID here will result in failure.   The cases below are expanded for illustration purposes, and  validity of the resulting Surface is tested here, rather than  the return value of initialization methods.  bool createSurfacesTogether  true  if   meshHasUVs   surfaceFactory . InitVertexSurface  faceIndex ,  posSurface   else if  createSurfacesTogether   surfaceFactory . InitSurfaces  faceIndex ,  posSurface ,  uvSurface   else  if  surfaceFactory . InitVertexSurface  faceIndex ,  posSurface   surfaceFactory . InitFaceVaryingSurface  faceIndex ,  uvSurface    if   posSurface . IsValid  continue    Declare a simple uniform Tessellation for the Parameterization  of this face and identify coordinates of the points to evaluate  Bfr  Tessellation tessPattern  posSurface . GetParameterization , options . tessUniformRate , tessOptions  int numOutCoords  tessPattern . GetNumCoords  outCoords . resize  numOutCoords  2  tessPattern . GetCoords  outCoords . data    Prepare the patch points for the Surface, then use them to  evaluate output points for all identified coordinates   Evaluate vertex positions   Resize patch point and output arrays int pointSize  meshPosPoint . size  facePatchPoints . resize  posSurface . GetNumPatchPoints   pointSize  outPos . resize  numOutCoords  pointSize  outDu . resize  numOutCoords  pointSize  outDv . resize  numOutCoords  pointSize   Populate patch point and output arrays float  patchPosData  facePatchPoints . data  SurfacePoint patchPosPoint  pointSize  posSurface . PreparePatchPoints  meshPosData , meshPosPoint , patchPosData , patchPosPoint  for  int i  0 , j  0  i  numOutCoords   i , j  pointSize   posSurface . Evaluate   outCoords  i  2 , patchPosData , patchPosPoint ,  outPos  j ,  outDu  j ,  outDv  j     Evaluate face-varying UVs when present if  meshHasUVs    Resize patch point and output arrays  - note reuse of the same patch point array as position int pointSize  meshUVPoint . size  facePatchPoints . resize  uvSurface . GetNumPatchPoints   pointSize  outUV . resize  numOutCoords  pointSize   Populate patch point and output arrays float  patchUVData  facePatchPoints . data  SurfacePoint patchUVPoint  pointSize  uvSurface . PreparePatchPoints  meshUVData , meshUVPoint , patchUVData , patchUVPoint  for  int i  0 , j  0  i  numOutCoords   i , j  pointSize   uvSurface . Evaluate   outCoords  i  2 , patchUVData , patchUVPoint ,  outUV  j      Identify the faces of the Tessellation   Note the need to offset vertex indices for the output faces --  using the number of vertices generated prior to this face. One  of several Tessellation methods to transform the facet indices  simply translates all indices by the desired offset.  int objVertexIndexOffset  objWriter . GetNumVertices  int numFacets  tessPattern . GetNumFacets  outFacets . resize  numFacets  tessFacetSize  tessPattern . GetFacets  outFacets . data  tessPattern . TransformFacetCoordIndices  outFacets . data , objVertexIndexOffset    Write the evaluated points and faces connecting them as Obj  objWriter . WriteGroupName  baseFace_ , faceIndex  if  meshHasUVs  options . uv2xyzFlag   objWriter . WriteVertexPositions  outUV , 2  objWriter . WriteFaces  outFacets , tessFacetSize , false , false   else  objWriter . WriteVertexPositions  outPos  objWriter . WriteVertexNormals  outDu , outDv  if  meshHasUVs   objWriter . WriteVertexUVs  outUV   objWriter . WriteFaces  outFacets , tessFacetSize , true , meshHasUVs       Load command line arguments, specified or default geometry and process  int main  int argc , char  argv   Args args  argc , argv  Far  TopologyRefiner  meshTopology  0  std  vector  float  meshVtxPositions  std  vector  float  meshFVarUVs  meshTopology  tutorial  createTopologyRefiner  args . inputObjFile , args . schemeType , meshVtxPositions , meshFVarUVs  if  meshTopology  0   return EXIT_FAILURE     Expand the loaded position and UV arrays to include additional  data initialized with -1 for distinction, e.g. add a 4-tuple  for RGBA color to the vertex data and add a third field w  to the face-varying data  int numPos   int  meshVtxPositions . size   3  int vtxSize  7  std  vector  float  vtxData  numPos  vtxSize , -1.0f  for  int i  0  i  numPos   i   vtxData  i  vtxSize   meshVtxPositions  i  3  vtxData  i  vtxSize  1   meshVtxPositions  i  3  1  vtxData  i  vtxSize  2   meshVtxPositions  i  3  2   int numUVs   int  meshFVarUVs . size   2  int fvarSize  3  std  vector  float  fvarData  numUVs  fvarSize , -1.0f  for  int i  0  i  numUVs   i   fvarData  i  fvarSize   meshFVarUVs  i  2  fvarData  i  fvarSize  1   meshFVarUVs  i  2  1     Pass the expanded data arrays along with their respective strides  tessellateToObj   meshTopology , vtxData , vtxSize , fvarData , fvarSize , args  delete meshTopology  return EXIT_SUCCESS   ------------------------------------------------------------------------------ Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n-        \"loc\": \"hbr_tutorial_0.html\"\n+        \"loc\": \"bfr_tutorial_1_4.html\"\n     }, {\n-        \"title\": \"Subdivision Surfaces\",\n-        \"text\": \"Subdivision Surfaces Subdivision Surfaces 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE Overview Piecewise Parametric Surfaces Parametric Patches Piecewise Surfaces Arbitrary Topology Regular versus Irregular Features Non-manifold Topology Subdivision versus Tessellation Subdivision Tessellation Which to Use Mesh Data and Topology Separating Data from Topology Vertex and Varying Data Face-Varying Data and Topology Schemes and Options Subdivision Schemes Boundary Interpolation Rules Face-varying Interpolation Rules Semi-Sharp Creases Other Options Chaikin Rule Triangle Subdivision Rule Overview Subdivision surfaces are a common modeling primitive that has gained popularity in animation and visual effects over the past decades. As the name suggests, subdivision surfaces are fundamentally surfaces . More specifically, subdivision surfaces are piecewise parametric surfaces defined over meshes of arbitrary topology -- both concepts that will be described in the sections that follow. Subdivision is both an operation that can be applied to a polygonal mesh to refine it, and a mathematical tool that defines the underlying smooth surface to which repeated subdivision of the mesh converges. Explicit subdivision is simple to apply some number of times to provide a smoother mesh, and that simplicity has historically lead to many tools representing the shape this way. In contrast, deriving the smooth surface that ultimately defines the shape -- its limit surface -- is considerably more complex but provides greater accuracy and flexibility. These differences have led to confusion in how some tools expose subdivision surfaces. The ultimate goal is to have all tools use subdivision surfaces as true surface primitives. The focus here is therefore less on subdivision and more on the nature of the surface that results from it. In addition to providing a consistent implementation of subdivision -- one that includes a number of widely used feature extensions -- a significant value of OpenSubdiv is that it makes the limit surface more accessible. Since its introduction, OpenSubdiv has received interest from users and developers with a wide variety of skills, interests and backgrounds. This document is intended to present subdivision surfaces from a perspective helpful in making use of OpenSubdiv. One purpose it serves is to provide a high level overview for those with less experience with the algorithms or mathematics of subdivision. The other is to provide an overview of the feature set available with OpenSubdiv, and to introduce those capabilities with the terminology used by OpenSubdiv as much of it is overloaded. Piecewise Parametric Surfaces Piecewise parametric surfaces are arguably the most widely used geometric representation in industrial design, entertainment and many other areas. Many of the objects we deal with everyday -- cars, mobile phones, laptops -- were all designed and visualized first as piecewise parametric surfaces before those designs were approved and pursued. Piecewise parametric surfaces are ultimately just collections of simpler modeling primitives referred to as patches. Patches constitute the pieces of the larger surface in much the same way as a face or polygon constitutes a piece of a polygonal mesh. Parametric Patches Patches are the building blocks of piecewise smooth surfaces, and many different kinds of patches have evolved to meet the needs of geometric modeling. Two of the more effective and common patches are illustrated below Single bicubic B-Spline patch Single bicubic Bezier patch Patches consist of a set of points or vertices that affect a rectangular piece of smooth surface triangular patches also exist. That rectangle is parameterized in its two directions, transforming a simple 2D rectangle into the 3D surface u,v 2D domain of a patch Mapping from u,v to x,y,z The points that control the shape of the surface are usually referred to as control points or control vertices, and the collection of the entire set defining a patch as the control mesh, the control hull, the control cage or simply the hull, the cage, etc. For the sake of brevity we will frequently use the term cage, which serves us more generally later. So a patch essentially consist of two entities its control points and the surface affected by them. The way the control points affect the surface is what makes the different types of patches unique. Even patches defined by the same number of points can have different behavior. Note that all 16 points of the B-Spline patch above are relatively far from the surface they define compared to the similar Bezier patch. The two patches in that example actually represent exactly the same piece of surface -- each with a set of control points having different effects on it. In mathematical terms, each control point has a basis function associated with it that affects the surface in a particular way when only that point is moved Bicubic B-Spline basis function Bicubic Bezier basis funciton It is these basis functions that often give rise to the names of the different patches. There are pros and cons to these different properties of the control points of patches, which become more apparent as we assemble patches into piecewise surfaces. Piecewise Surfaces Piecewise parametric surfaces are collections of patches. For rectangular patches, one of the simplest ways to construct a collection is to define a set of patches using a rectangular grid of control points Piecewise B-Spline surface Piecewise Bezier surface Note that we can overlap the points of adjacent B-spline patches. This overlapping means that moving one control point affects multiple patches -- but it also ensures that those patches always meet smoothly this was a design intention and not true for other patch types. Adjacent Bezier patches only share points at their boundaries and coordinating the points across those boundaries to keep the surface smooth is possible, but awkward. This makes B-splines a more favorable surface representation for interactive modeling, but Bezier patches serve many other useful purposes. A more complicated B-spline surface Part of a more complicated B-Spline surface Just as a patch consisted of a cage and a surface, the same is now true of the collection. The control cage is manipulated by a designer and the surface of each of the patches involved is displayed so they can assess its effect. Arbitrary Topology Piecewise surfaces discussed thus far have been restricted to collections of patches over regular grids of control points. There is a certain simplicity with rectangular parametric surfaces that is appealing, but a surface representation that supports arbitrary topology has many other advantages. Rectangular parametric surfaces gained widespread adoption despite their topological limitations, and their popularity continues today in some areas. Complex objects often need many such surfaces to represent them and a variety of techniques have evolved to assemble them effectively, including stitching multiple surfaces together or cutting holes into them trimming. These are complicated techniques, and while effective in some contexts e.g. industrial design they become cumbersome in others e.g. animation and visual effects. A single polygonal mesh can represent shapes with far more complexity than a single rectangular piecewise surface, but its faceted nature eventually becomes a problem. Subdivision surfaces combine the topological flexibility of polygonal meshes with the underlying smoothness of piecewise parametric surfaces. Just as rectangular piecewise parametric surfaces have a collection of control points its cage stored as a grid and an underlying surface, subdivision surfaces also have a collection of control points its cage stored as a mesh and an underlying surface often referred as its limit surface. Regular versus Irregular Features A mesh contains the vertices and faces that form the cage for the underlying surface, and the topology of that mesh can be arbitrarily complex. In areas where the faces and vertices of the mesh are connected to form rectangular grids, the limit surface becomes one of the rectangular piecewise parametric surfaces previously mentioned. These regions of the mesh are said to be regular they provide behavior familiar from the use of similar rectangular surfaces and their limit surface is relatively simple to deal with. All other areas are considered irregular they provide the desired topological flexibility and so are less familiar and less predictable in some cases and their limit surface can be much more complicated. Irregular features come in a number of forms. The most widely referred to is an extra-ordinary vertex, i.e. a vertex which, in the case of a quad subdivision scheme like Catmull-Clark, does not have four incident faces. Irregular vertex and incident faces Regular and irregular regions of the surface The presence of these irregular features makes the limit surface around them similarly irregular, i.e. it cannot be represented as simply as it can for regular regions. Its worth noting that irregular regions shrink in size and become more isolated as subdivision is applied. A face with a lot of extra-ordinary vertices around it makes for a very complicated surface, and isolating these features is a way to help deal with that complexity Two valence-5 vertices nearby Isolation subdivided once Isolation subdivided twice Its generally necessary to perform some kind of local subdivision in these areas to break these pieces of surface into smaller, more manageable pieces, and the term feature adaptive subdivision has become popular in recent years to describe this process. Whether this is done explicitly or implicitly, globally or locally, what matters most is that there is an underlying piece of limit surface for each face -- albeit a potentially complicated one at an irregular feature -- that can be evaluated in much the same way as rectangular piecewise surfaces. Patches of the regular regions Patches of the irregular region While supporting a smooth surface in these irregular areas is the main advantage of subdivision surfaces, both the complexity of the resulting surfaces and their quality are reasons to use them with care. When the topology is largely irregular, there is a higher cost associated with its surface, so minimizing irregularities is advantageous. And in some cases the surface quality, i.e. the perceived smoothness, of the irregular surfaces can lead to undesirable artefacts. An arbitrary polygonal mesh will often not make a good subdivision cage, regardless of how good that polygonal mesh appears. As with rectangular piecewise parametric surfaces, the cage should be shaped to affect the underlying surface it is intended to represent. See Modeling Tips for related recommendations. Non-manifold Topology Since the cage of a subdivision surface is stored in a mesh, and often manipulated in the same context as polygonal meshes, the topic of manifold versus non-manifold topology warrants some attention. There are many definitions or descriptions of what distinguishes a manifold mesh from one that is not. These range from concise but abstract mathematical definitions to sets of examples showing manifold and non-manifold meshes -- all have their value and an appropriate audience. The following is not a strict definition but serves well to illustrate most local topological configurations that cause a mesh to be non-manifold. Consider standing on the faces of a mesh and walking around each vertex in turn. Assuming a right-hand winding order of faces, stand on the side of the face in the positive normal direction. And when walking, step across each incident edge in a counter-clockwise direction to the next incident face. For an interior vertex start at the corner of any incident face walk around the vertex across each incident edge to the next unvisited face repeat if you arrive back where you started and any incident faces or edges were not visited, the mesh is non-manifold Similarly, for a boundary vertex start at the corner of the face containing the leading boundary edge walk around the vertex across each incident edge to the next unvisited face repeat if you arrive at another boundary edge and any incident faces or edges were not visited, the mesh is non-manifold If you can walk around all vertices this way and dont encounter any non-manifold features, the mesh is likely manifold. Obviously if a vertex has no faces, there is nothing to walk around and this test cant succeed, so it is again non-manifold. All of the faces around a vertex should also be in the same orientation, otherwise two adjacent faces have normals in opposite directions and the mesh will be considered non-manifold, so we should really include that constraint when stepping to the next face to be more strict. Consider walking around the indicated vertices of the following non-manifold meshes Edges with  2 incident faces Faces sharing a vertex but no edges As mentioned earlier, many tools do not support non-manifold meshes, and in some contexts, e.g. 3D printing, they should be strictly avoided. Sometimes a manifold mesh may be desired and enforced as an end result, but the mesh may temporarily become non-manifold due to a particular sequence of modeling operations. Rather than supporting or advocating the use of non-manifold meshes, OpenSubdiv strives to be robust in the presence of non-manifold features to simplify the usage of its clients -- sparing them the need for topological analysis to determine when OpenSubdiv can or cannot be used. Although subdivision rules are not as well standardized in areas where the mesh is not manifold, OpenSubdiv provides simple rules and a reasonable limit surface in most cases. Surface around edges with  2 incident faces Surface for faces sharing a vertex but no edges As with the case of regular versus irregular features, since every face has a corresponding piece of surface associated with it -- whether locally manifold or not -- the term arbitrary topology can be said to include non-manifold topology. Subdivision versus Tessellation The preceding sections illustrate subdivision surfaces as piecewise parametric surfaces of arbitrary topology. As piecewise parametric surfaces, they consist of a cage and the underlying surface defined by that cage. Two techniques used to display subdivision surfaces are subdivision and tessellation. Both have their legitimate uses, but there is an important distinction between them subdivision operates on a cage and produces a refined cage tessellation operates on a surface and produces a discretization of that surface The existence and relative simplicity of the subdivision algorithm makes it easy to apply repeatedly to approximate the shape of the surface, but with the result being a refined cage, that approximation is not always very accurate. When compared to a cage refined to a different level, or a tessellation that uses points evaluated directly on the limit surface, the discrepancies can be confusing. Subdivision Subdivision is the process that gives subdivision surfaces their name, but it is not unique to them. Being piecewise parametric surfaces, lets first look at subdivision in the context of the simpler parametric patches that comprise them. Subdivision is a special case of refinement , which is key to the success of some of the most widely used types of parametric patches and their aggregate surfaces. A surface can be refined when an algorithm exists such that more control points can be introduced while keeping the shape of the surface exactly the same . For interactive and design purposes, this allows a designer to introduce more resolution for finer control without introducing undesired side effects in the shape. For more analytical purposes, it allows the surface to be broken into pieces, often adaptively, while being faithful to the original shape. One reason why both B-spline and Bezier patches are so widely used is that both of them can be refined. Uniform subdivision -- the process of splitting each of the patches in one or both of its directions -- is a special case of refinement that both of these patch types support B-Spline surface and its cage Cage subdivided 1x Cage subdivided 2x In the cases illustrated above for B-Splines, the uniformly refined cages produce the same limit surface as the original granted in more pieces. So it is fair to say that both uniform B-splines and Bezier surfaces are subdivision surfaces. The limit surface remains the same with the many more control points roughly 4x with each iteration of subdivision, and those points are closer to but not on the surface. It may be tempting to use these new control points to represent the surface, but using the same number of points evaluated at corresponding uniformly spaced parametric locations on the surface is usually simpler and more effective. Note also that points of the cage typically do not have any normal vectors associated with them, though we can evaluate normals explicitly for arbitrary locations on the surface just as we do for position. So if displaying a cage as a shaded surface, normal vectors at each of the control points must be contrived. Both the positions and normals of the points on the finer cage are therefore both approximations. For more general subdivision surfaces, the same is true. Subdivision will refine a mesh of arbitrary topology, but the resulting points will not lie on the limit surface and any normal vectors contrived from and associated with these points will only be approximations to those of the limit surface. Tessellation There is little need to use subdivision to approximate a parametric surface when it can be computed directly, i.e. it can be tessellated. We can evaluate at arbitrary locations on the surface and connect the resulting points to form a tessellation -- a discretization of the limit surface -- that is far more flexible than the results achieved from uniform subdivision Uniform 3x3 tessellation of B-spline surface Curvature-adaptive tessellation of B-spline surface For a simple parametric surface, the direct evaluation of the limit surface is also simple, but for more complicated subdivision surfaces of arbitrary topology, this is less the case. The lack of a clear understanding of the relationship between the limit surface and the cage has historically lead to many applications avoiding tessellation. Its worth mentioning that subdivision can be used to generate a tessellation even when the limit surface is not available for direct evaluation. The recursive nature of subdivision does give rise to formulae that allow a point on the limit surface to be computed that corresponds to each point of the cage. This process is often referred to as snapping or pushing the points of the cage onto the limit surface. Subdivided 1x and snapped to limit surface Subdivided 2x and snapped to limit surface Since the end result is a connected set of points on the limit surface, this forms a tessellation of the limit surface, and we consider it a separate process to subdivision though it does make use of it. The fact that such a tessellation might have been achieved using subdivision is indistinguishable from the final result -- the same tessellation might just as easily have been generated by evaluating limit patches of the cage uniformly 2x, 4x, 8x, etc. along each edge. Which to Use Subdivision is undeniably useful in creating finer cages to manipulate the surface, but tessellation is preferred for displaying the surface when the patches are available for direct evaluation. There was a time when global refinement was pursued in limited circles as a way of rapidly evaluating parametric surfaces along isoparametric lines, but patch evaluation, i.e. tessellation, generally prevails. Considerable confusion has arisen due the way the two techniques have been employed and presented when displaying the shape in end-user applications. One can argue that if an application displays a representation of the surface that is satisfactory for its purposes, then it is not necessary to burden the user with additional terminology and choices. But when two representations of the same surface differ considerably between two applications, the lack of any explanation or control leads to confusion. As long as applications make different choices on how to display the surface, we seek a balance between simplicity and control. Since subdivided points do not lie on the limit surface, it is important to make it clear to users when subdivision is being used instead of tessellation. This is particularly true in applications where the cage and the surface are displayed in the same style as there is no visual cue for users to make that distinction. Mesh Data and Topology The ability of subdivision surfaces to support arbitrary topology leads to the use of meshes to store both the topology of the cage and the data values associated with its control points, i.e. its vertices. The shape of a mesh, or the subdivision surface that results from it, is a combination of the topology of the mesh and the position data associated with its vertices. When dealing with meshes there are advantages to separating the topology from the data, and this is even more important when dealing with subdivision surfaces. The shape referred to above is not just the shape of the mesh the cage in this case but could be the shape of a refined cage or the limit surface. By observing the roles that both the data and topology play in operations such as subdivision and evaluation, significant advantages can be gained by managing data, topology and the associated computations accordingly. While the main purpose of subdivision surfaces is to use position data associated with the vertices to define a smooth, continuous limit surface, there are many cases where non-positional data is associated with a mesh. That data may often be interpolated smoothly like position, but often it is preferred to interpolate it linearly or even make it discontinuous along edges of the mesh. Texture coordinates and color are common examples here. Other than position, which is assigned to and associated with vertices, there are no constraints on how arbitrary data can or should be associated or interpolated. Texture coordinates, for example, can be assigned to create a completely smooth limit surface like the position, linearly interpolated across faces, or even made discontinuous between them. There are, however, consequences to consider -- both in terms of data management and performance -- which are described below as the terminology and techniques used to achieve each are defined. Separating Data from Topology While the topology of meshes used to store subdivision surfaces is arbitrarily complex and variable, the topology of the parametric patches that make up its limit surface are simple and fixed. Bicubic B-Spline and Bezier patches are both defined by a simple 4x4 grid of control points and a set of basis functions for each point that collectively form the resulting surface. For such a patch, the position at a given parametric location is the result of the combination of position data associated with its control points and the weights of the corresponding basis functions  weights being the values of basis functions evaluated at a parametric location. The topology and the basis functions remain the same, so we can make use of the weights independent of the data. If the positions of the control points change, we can simply recombine the new position data with the weights that we just used and apply the same combination. The fixed topology of a parametric patch and two shapes resulting from two sets of positions. Similarly, for a piecewise surface, the position at a given parametric location is the result of the single patch containing that parametric location evaluated at the given position. The control points involved are the subset of control points associated with that particular patch. If the topology of the surface is fixed, so too is the topology of the collection of patches that comprise that surface. If the positions of those control points change, we can recombine the new position data with the same weights for the subset of points associated with the patch. More complex but fixed topology of a surface and two shapes resulting from two sets of positions. This holds for a piecewise surface of arbitrary topology. Regardless of how complex the topology, as long as it remains fixed i.e. relationships between vertices, edges and faces does not change or anything other settings affecting subdivision rules, the same techniques apply. This is just one example of the value of separating computations involving topology from those involving the data. Both subdivision and evaluation can be factored into steps involving topology computing the weights and combining the data separately. Three shapes resulting from three sets of positions for a mesh of fixed topology. When the topology is fixed, enormous savings are possible by pre-computing information associated with the topology and organizing the data associated with the control points in a way that can be efficiently combined with it. This is key to understanding some of the techniques used to process subdivision surfaces. For a mesh of arbitrary topology, the control points of the underlying surface are the vertices, and position data associated with them is most familiar. But there is nothing that requires that the control points of a patch have to represent position -- the same techniques apply regardless of the type of data involved. Vertex and Varying Data The most typical and fundamental operation is to evaluate a position on the surface, i.e. evaluate the underlying patches of the limit surface using the x,y,z positions at the vertices of the mesh. Given a parametric u,v location on one such patch, the data-independent evaluation method first computes the weights and then combines the x,y,z vertex positions resulting in an x,y,z position at that location. But the weights and their combination can be applied to any data at the vertices, e.g. color, texture coordinates or anything else. Data associated with the vertices that is interpolated this way, including position, is said to be vertex data or to have vertex interpolation. Specifying other data as vertex data will result in it being smoothly interpolated in exactly the same way using exactly the same weights as the position. So to capture a simple 2D projection of the surface for texture coordinates, 2D values matching the x,y of the positions would be used. If linear interpolation of data associated with vertices is desired instead, the data is said to be varying data or to have varying interpolation. Here the non-linear evaluation of the patches defining the smooth limit surface is ignored and weights for simple linear interpolation are used. This is a common choice for texture coordinates as evaluation of texture without the need of bicubic patches is computationally cheaper. The linear interpolation will not capture the smoothness required of a true projection between the vertices, but both vertex and varying interpolation have their uses. Projected texture smoothly interpolated from vertex data Projected texture linearly interpolated from varying data Since both vertex and varying data is associated with vertices a unique value assigned to each, the resulting surface will be continuous -- piecewise smooth in the case of vertex data and piecewise linear in the case of varying. Face-Varying Data and Topology In order to support discontinuities in data on the surface, unlike vertex and varying data, there must be multiple values associated with vertices, edges andor faces, in order for a discontinuity to exist. Discontinuities are made possible by assigning values to the corners of faces, similar to the way in which vertices are assigned to the corners of faces when defining the topology of the mesh. Recalling the assignment of vertices to faces Vertex indices are assigned to all corners of each face as part of mesh construction and are often referred to as the face-vertices of an individual face or the mesh. All face-vertices that share the same vertex index will be connected by that vertex and share the same vertex data associated with it. By assigning a different set of indices to the face-vertices -- indices not referring to the vertices but some set of data to be associated with the corners of each face -- corners that share the same vertex no longer need to share the same data value and the data can be made discontinuous between faces This method of associating data values with the face-vertices of the mesh is said to be assigning face-varying data for face-varying interpolation. An interpolated value will vary continuously within a face i.e. the patch of the limit surface associated with the face but not necessarily across the edges or vertices shared with adjacent faces. Disjoint face-varying UV regions applied to the limit surface The combination of associating data values not with the vertices the control points but the face corners, and the resulting data-dependent discontinuities that result, make this a considerably more complicated approach than vertex or varying. The added complexity of the data alone is reason to only use it when necessary, i.e. when discontinuities are desired and present. Part of the complexity of dealing with face-varying data and interpolation is the way in which the interpolation behavior can be defined. Where the data is continuous, the interpolation can be specified to be as smooth as the underlying limit surface of vertex data or simply linear as achieved with varying data. Where the data is discontinuous -- across interior edges and around vertices -- the discontinuities create boundaries for the data, and partition the underlying surface into disjoint regions. The interpolation along these boundaries can also be specified as smooth or linear in a number of ways many of which have a historical basis. A more complete description of the different linear interpolation options with face-varying data and interpolation is given later. These options make it possible to treat the data as either vertex or varying, but with the added presence of discontinuities. An essential point to remember with face-varying interpolation is that each set of data is free to have its own discontinuities -- this leads to each data set having both unique topology and size. The topology specified for a collection of face-varying data is referred to as a channel and is unique to face-varying interpolation. Unlike vertex and varying interpolation, which both associate a data value with a vertex, the number of values in a face-varying channel is not fixed by the number of vertices or faces. The number of indices assigned to the face-corners will be the same for all channels, but the number of unique values referred to by these indices may not. We can take advantage of the common mesh topology in areas where the data is continuous, but we lose some of those advantages around the discontinuities. This results in the higher complexity and cost of a face-varying channel compared to vertex or varying data. If the topology for a channel is fixed, though, similar techniques can be applied to factor computation related to the topology so that changes to the data can be processed efficiently. Schemes and Options While previous sections have described subdivision surfaces in more general terms, this section describes a number of common variations often referred to as extensions to the subdivision algorithms and the ways that they are represented in OpenSubdiv. The number and nature of the extensions here significantly complicate what are otherwise fairly simple subdivision algorithms. Historically applications have supported either a subset or have had varying implementations of the same feature. OpenSubdiv strives to provide a consistent and efficient implementation of this feature set. Given the varying presentations of some of these features elsewhere, the naming chosen by OpenSubdiv is emphasized here. Subdivision Schemes OpenSubdiv provides two well known subdivision surface types -- Catmull-Clark often referred to more tersely as Catmark and Loop subdivision. Catmull-Clark is more widely used and suited to quad-dominant meshes, while Loop is preferred for and requires purely triangulated meshes. The many examples from previous sections have illustrated the more popular Catmull-Clark scheme. For an example of Loop Boundary Interpolation Rules Boundary interpolation rules control how subdivision and the limit surface behave for faces adjacent to boundary edges and vertices. The following choices are available via the enumeration SdcOptionsVtxBoundaryInterpolation  Mode Behavior VTX_BOUNDARY_NONE No boundary edge interpolation is applied by default boundary faces are tagged as holes so that the boundary vertices continue to support the adjacent interior faces, but no surface corresponding to the boundary faces is generated boundary faces can be selectively interpolated by sharpening all boundary edges incident the vertices of the face VTX_BOUNDARY_EDGE_ONLY A sequence of boundary vertices defines a smooth curve to which the limit surface along boundary faces extends VTX_BOUNDARY_EDGE_AND_CORNER Similar to edge-only but the smooth curve resulting on the boundary is made to interpolate corner vertices vertices with exactly one incident face On a grid example In practice, it is rare to use no boundary interpolation at all -- this feature has its uses in allowing separate meshes to be seamlessly joined together by replicating the vertices along boundaries, but these uses are limited. Given the global nature of the setting, it is usually preferable to explicitly make the boundary faces holes in the areas where surfaces from separate meshes are joined, rather than sharpening edges to interpolate the desired boundaries everywhere else. The remaining edge only and edge and corner choices are then solely distinguished by whether or not the surface at corner vertices is smooth or sharp. Face-varying Interpolation Rules Face-varying interpolation rules control how face-varying data is interpolated both in the interior of face-varying regions smooth or linear and at the boundaries where it is discontinuous constrained to be linear or pinned in a number of ways. Where the topology is continuous and the interpolation chosen to be smooth, the behavior of face-varying interpolation will match that of the vertex interpolation. Choices for face-varying interpolation are most commonly available in the context of UVs for texture coordinates and a number of names for such choices have evolved in different applications over the years. The choices offered by OpenSubdiv cover a wide range of popular applications. The feature is named face-varying linear interpolation -- rather than boundary interpolation commonly used -- to emphasize that it can be applied to the entire surface not just boundaries and that the effects are to make the surface behave more linearly in various ways. The following choices are available for the SdcOptionsFVarLinearInterpolation enum -- the ordering here applying progressively more linear constraints Mode Behavior FVAR_LINEAR_NONE smooth everywhere the mesh is smooth FVAR_LINEAR_CORNERS_ONLY linearly interpolate sharpen or pin corners only FVAR_LINEAR_CORNERS_PLUS1 CORNERS_ONLY  sharpening of junctions of 3 or more regions FVAR_LINEAR_CORNERS_PLUS2 CORNERS_PLUS1  sharpening of darts and concave corners FVAR_LINEAR_BOUNDARIES linear interpolation along all boundary edges and corners FVAR_LINEAR_ALL linear interpolation everywhere boundaries and interior These rules cannot make the interpolation of the face-varying data smoother than that of the vertices. The presence of sharp features of the mesh created by sharpness values, boundary interpolation rules, or the subdivision scheme itself e.g. Bilinear take precedence. All face-varying interpolation modes illustrated in UV space using a simple 4x4 grid of quads segmented into three UV regions their control point locations implied by interpolation in the FVAR_LINEAR_ALL case For those familiar, this shape and its assigned UV sets are available for inspection in the catmark_fvar_bound1 shape of OpenSubdivs example and regression shapes. Semi-Sharp Creases Just as some types of parametric surfaces support additional shaping controls to affect creasing along the boundaries between surface elements, OpenSubdiv provides additional sharpness values or weights associated with edges and vertices to achieve similar results over arbitrary topology. Setting sharpness values to a maximum value 10 in this case -- a number chosen for historical reasons effectively modifies the subdivision rules so that the boundaries between the piecewise smooth surfaces are infinitely sharp or discontinuous. But since real world surfaces never really have infinitely sharp edges, especially when viewed sufficiently close, it is often preferable to set the sharpness lower than this value, making the crease semi-sharp. A constant weight value assigned to a sequence of edges connected edges therefore enables the creation of features akin to fillets and blends without adding extra rows of vertices though that technique still has its merits Sharpness values range from 0-10, with a value of 0 or less having no effect on the surface and a value of 10 or more making the feature completely sharp. It should be noted that infinitely sharp creases are really tangent discontinuities in the surface, implying that the geometric normals are also discontinuous there. Therefore, displacing along the normal will likely tear apart the surface along the crease. If you really want to displace a surface at a crease, it may be better to make the crease semi-sharp. Other Options While the preceding options represent features available in a wide-variety of tools and modeling formats, a few others exist whose recognition and adoption is more limited. In some cases, they offer improvements to undesirable behavior of the subdivision algorithms, but their effects are less than ideal. Given both their limited effectiveness and lack of recognition, these options should be used with caution. Chaikin Rule The Chaikin Rule is a variation of the semi-sharp creasing method that attempts to improve the appearance of creases along a sequence of connected edges when the sharpness values differ. This choice modifies the subdivision of sharpness values using Chaikins curve subdivision algorithm to consider all sharpness values of edges around a common vertex when determining the sharpness of child edges. The creasing method can be set using the values defined in the enumeration SdcOptionsCreasingMethod  Mode Behavior CREASE_UNIFORM Apply regular semi-sharp crease rules CREASE_CHAIKIN Apply Chaikin semi-sharp crease rules Example of contiguous semi-sharp creases interpolation Triangle Subdivision Rule The triangle subdivision rule is a rule added to the Catmull-Clark scheme that modifies the behavior at triangular faces to improve the undesirable surface artefacts that often result in such areas. Mode Behavior TRI_SUB_CATMARK Default Catmark scheme weights TRI_SUB_SMOOTH Smooth triangle weights Cylinder example  This rule was empirically determined to make triangles subdivide more smoothly. However, this rule breaks the nice property that two separate meshes can be joined seamlessly by overlapping their boundaries i.e. when there are triangles at either boundary, it is impossible to join the meshes seamlessly Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"title\": \"far_tutorial_4_3.cpp\",\n+        \"text\": \"far_tutorial_4_3.cpp far_tutorial_4_3.cpp 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE httpsgithub.comPixarAnimationStudiosOpenSubdivblobreleasetutorialsfartutorial_4_3far_tutorial_4_3.cpp ------------------------------------------------------------------------------  Tutorial description   This tutorial shows how to create and manipulate table of cascading stencils.   We initialize a FarTopologyRefiner with a cube and apply uniform  refinement. We then use a FarStencilTableFactory to generate a stencil  table. We set the factory Options to not factorize intermediate levels,  thus giving a table of cascading stencils.   We then apply the stencils to the vertex position primvar data, and insert  a hierarchical edit at level 1. This edit is smoothed by the application  of the subsequent stencil cascades.   The results are dumped into an OBJ file that shows the intermediate levels  of refinement of the original cube.  include opensubdivfartopologyDescriptor.h include opensubdivfarstencilTable.h include opensubdivfarstencilTableFactory.h include cstdio include cstring ------------------------------------------------------------------------------  Vertex container implementation.  struct Vertex   Minimal required interface ---------------------- Vertex    Vertex  Vertex const  src   _position  0   src . _position  0  _position  1   src . _position  1  _position  2   src . _position  2   void Clear  void   0   _position  0   _position  1   _position  2   0.0f   void AddWithWeight  Vertex const  src , float weight   _position  0   weight  src . _position  0  _position  1   weight  src . _position  1  _position  2   weight  src . _position  2    Public interface ------------------------------------ void SetPosition  float x , float y , float z   _position  0   x  _position  1   y  _position  2   z   float const  GetPosition  const  return _position   float  GetPosition   return _position   private  float _position  3   ------------------------------------------------------------------------------  Cube geometry from catmark_cube.h static float g_verts  24    -0.5f , -0.5f , 0.5f , 0.5f , -0.5f , 0.5f , -0.5f , 0.5f , 0.5f , 0.5f , 0.5f , 0.5f , -0.5f , 0.5f , -0.5f , 0.5f , 0.5f , -0.5f , -0.5f , -0.5f , -0.5f , 0.5f , -0.5f , -0.5f  static int g_nverts  8 , g_nfaces  6  static int g_vertsperface  6    4 , 4 , 4 , 4 , 4 , 4  static int g_vertIndices  24    0 , 1 , 3 , 2 , 2 , 3 , 5 , 4 , 4 , 5 , 7 , 6 , 6 , 7 , 1 , 0 , 1 , 7 , 5 , 3 , 6 , 0 , 2 , 4  using namespace OpenSubdiv  static Far  TopologyRefiner  createTopologyRefiner  ------------------------------------------------------------------------------ int main  int , char     Generate a FarTopologyRefiner see tutorial_1_1 for details. Far  TopologyRefiner  refiner  createTopologyRefiner   Uniformly refine the topology up to maxlevel. int maxlevel  4  refiner - RefineUniform  Far  TopologyRefiner  UniformOptions  maxlevel   Use the FarStencilTable factory to create cascading stencil table  note we want stencils for each refinement level  cascade mode is achieved by setting factorizeIntermediateLevels  to false Far  StencilTableFactory  Options options  options . generateIntermediateLevels  true  options . factorizeIntermediateLevels  false  options . generateOffsets  true  Far  StencilTable const  stencilTable  Far  StencilTableFactory  Create   refiner , options  std  vector  Vertex  vertexBuffer  refiner - GetNumVerticesTotal  - g_nverts  Vertex  destVerts   vertexBuffer  0  int start  0 , end  0   stencil batches for each level of subdivision for  int level  0  level  maxlevel   level   int nverts  refiner - GetLevel  level  1 . GetNumVertices  Vertex const  srcVerts  reinterpret_cast  Vertex   g_verts  if  level  0   srcVerts   vertexBuffer  start   start  end  end  nverts  stencilTable - UpdateValues  srcVerts , destVerts , start , end   apply 2 hierarchical edits on level 1 vertices if  level  1   float  pos  destVerts  start  5 . GetPosition  pos  1   0.5f  pos  destVerts  start  20 . GetPosition  pos  0   0.25f      Output OBJ of the highest level refined ----------- Vertex  verts   vertexBuffer  0   Print vertex positions for  int level  1 , firstvert  0  level  maxlevel   level   Far  TopologyLevel const  refLevel  refiner - GetLevel  level  printf  g level_d n  , level  int nverts  refLevel . GetNumVertices  for  int vert  0  vert  nverts   vert   float const  pos  verts  vert . GetPosition  printf  v f f f n  , pos  0 , pos  1 , pos  2   verts  nverts   Print faces for  int face  0  face  refLevel . GetNumFaces   face   Far  ConstIndexArray fverts  refLevel . GetFaceVertices  face   all refined Catmark faces should be quads assert  fverts . size   4  printf  f   for  int vert  0  vert  fverts . size   vert   printf  d  , fverts  vert   firstvert  1   OBJ uses 1-based arrays...  printf   n    firstvert  nverts    delete refiner  delete stencilTable  return EXIT_SUCCESS   ------------------------------------------------------------------------------ static Far  TopologyRefiner  createTopologyRefiner    Populate a topology descriptor with our raw data. typedef Far  TopologyDescriptor Descriptor  Sdc  SchemeType type  OpenSubdiv  Sdc  SCHEME_CATMARK  Sdc  Options options  options . SetVtxBoundaryInterpolation  Sdc  Options  VTX_BOUNDARY_EDGE_ONLY  Descriptor desc  desc . numVertices  g_nverts  desc . numFaces  g_nfaces  desc . numVertsPerFace  g_vertsperface  desc . vertIndicesPerFace  g_vertIndices   Instantiate a FarTopologyRefiner from the descriptor. return Far  TopologyRefinerFactory  Descriptor  Create  desc , Far  TopologyRefinerFactory  Descriptor  Options  type , options   ------------------------------------------------------------------------------ Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n-        \"loc\": \"subdivision_surfaces.html\"\n+        \"loc\": \"far_tutorial_4_3.html\"\n     }, {\n-        \"title\": \"far_tutorial_1_1.cpp\",\n-        \"text\": \"far_tutorial_1_1.cpp far_tutorial_1_1.cpp 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE httpsgithub.comPixarAnimationStudiosOpenSubdivblobreleasetutorialsfartutorial_1_1far_tutorial_1_1.cpp ------------------------------------------------------------------------------  Tutorial description   This tutorial presents in a very succinct way the requisite steps to  instantiate and refine a mesh with Far from simple topological data.  include opensubdivfartopologyDescriptor.h include opensubdivfarprimvarRefiner.h include cstdio ------------------------------------------------------------------------------  Vertex container implementation.  struct Vertex   Minimal required interface ---------------------- Vertex    Vertex  Vertex const  src   _position  0   src . _position  0  _position  1   src . _position  1  _position  2   src . _position  2   void Clear  void   0   _position  0   _position  1   _position  2   0.0f   void AddWithWeight  Vertex const  src , float weight   _position  0   weight  src . _position  0  _position  1   weight  src . _position  1  _position  2   weight  src . _position  2    Public interface ------------------------------------ void SetPosition  float x , float y , float z   _position  0   x  _position  1   y  _position  2   z   const float  GetPosition  const  return _position   private  float _position  3   ------------------------------------------------------------------------------  Cube geometry from catmark_cube.h static float g_verts  8  3    -0.5f , -0.5f , 0.5f ,  0.5f , -0.5f , 0.5f ,  -0.5f , 0.5f , 0.5f ,  0.5f , 0.5f , 0.5f ,  -0.5f , 0.5f , -0.5f ,  0.5f , 0.5f , -0.5f ,  -0.5f , -0.5f , -0.5f ,  0.5f , -0.5f , -0.5f  static int g_nverts  8 , g_nfaces  6  static int g_vertsperface  6    4 , 4 , 4 , 4 , 4 , 4  static int g_vertIndices  24    0 , 1 , 3 , 2 , 2 , 3 , 5 , 4 , 4 , 5 , 7 , 6 , 6 , 7 , 1 , 0 , 1 , 7 , 5 , 3 , 6 , 0 , 2 , 4  using namespace OpenSubdiv  ------------------------------------------------------------------------------ int main  int , char     Populate a topology descriptor with our raw data typedef Far  TopologyDescriptor Descriptor  Sdc  SchemeType type  OpenSubdiv  Sdc  SCHEME_CATMARK  Sdc  Options options  options . SetVtxBoundaryInterpolation  Sdc  Options  VTX_BOUNDARY_EDGE_ONLY  Descriptor desc  desc . numVertices  g_nverts  desc . numFaces  g_nfaces  desc . numVertsPerFace  g_vertsperface  desc . vertIndicesPerFace  g_vertIndices   Instantiate a FarTopologyRefiner from the descriptor Far  TopologyRefiner  refiner  Far  TopologyRefinerFactory  Descriptor  Create  desc , Far  TopologyRefinerFactory  Descriptor  Options  type , options  int maxlevel  2   Uniformly refine the topology up to maxlevel refiner - RefineUniform  Far  TopologyRefiner  UniformOptions  maxlevel   Allocate a buffer for vertex primvar data. The buffer length is set to  be the sum of all children vertices up to the highest level of refinement. std  vector  Vertex  vbuffer  refiner - GetNumVerticesTotal  Vertex  verts   vbuffer  0   Initialize coarse mesh positions int nCoarseVerts  g_nverts  for  int i  0  i  nCoarseVerts   i   verts  i . SetPosition  g_verts  i  0 , g_verts  i  1 , g_verts  i  2    Interpolate vertex primvar data Far  PrimvarRefiner primvarRefiner   refiner  Vertex  src  verts  for  int level  1  level  maxlevel   level   Vertex  dst  src  refiner - GetLevel  level -1 . GetNumVertices  primvarRefiner . Interpolate  level , src , dst  src  dst     Output OBJ of the highest level refined ----------- Far  TopologyLevel const  refLastLevel  refiner - GetLevel  maxlevel  int nverts  refLastLevel . GetNumVertices  int nfaces  refLastLevel . GetNumFaces   Print vertex positions int firstOfLastVerts  refiner - GetNumVerticesTotal  - nverts  for  int vert  0  vert  nverts   vert   float const  pos  verts  firstOfLastVerts  vert . GetPosition  printf  v f f f n  , pos  0 , pos  1 , pos  2    Print faces for  int face  0  face  nfaces   face   Far  ConstIndexArray fverts  refLastLevel . GetFaceVertices  face   all refined Catmark faces should be quads assert  fverts . size   4  printf  f   for  int vert  0  vert  fverts . size   vert   printf  d  , fverts  vert   1   OBJ uses 1-based arrays...  printf   n     delete refiner  return EXIT_SUCCESS   ------------------------------------------------------------------------------ Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"title\": \"bfr_tutorial_3_2.cpp\",\n+        \"text\": \"bfr_tutorial_3_2.cpp bfr_tutorial_3_2.cpp 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE httpsgithub.comPixarAnimationStudiosOpenSubdivblobreleasetutorialsbfrtutorial_3_2bfr_tutorial_3_2.cpp ------------------------------------------------------------------------------  Tutorial description   This tutorial is a variation of tutorials showing simple uniform  tessellation. Rather than constructing and evaluating a Surface at  a time, this tutorial shows how Surfaces can be created and saved  for repeated use.   A simple SurfaceCache class is created that creates and stores the  Surface for each face, along with the patch points associated with  it. The main tessellation function remains essentially the same,  but here it access the Surfaces from the SurfaceCache rather than  computing them locally.   Note that while this example illustrated the retention of all  Surfaces for a mesh, this behavior is not recommended. It does not  scale well for large meshes and undermines the memory savings that  transient use of Surfaces is designed to achieve. Rather than  storing Surfaces for all faces, maintaining a priority queue for a  fixed number may be a reasonable compromise.  include opensubdivfartopologyRefiner.h include opensubdivbfrrefinerSurfaceFactory.h include opensubdivbfrsurface.h include opensubdivbfrtessellation.h include vector include memory include string include cstring include cstdio  Local headers with support for this tutorial in namespace tutorial include .meshLoader.h include .objWriter.h using namespace OpenSubdiv    Simple command line arguments to provide input and run-time options  class Args  public  std  string inputObjFile  std  string outputObjFile  Sdc  SchemeType schemeType  int tessUniformRate  bool tessQuadsFlag  public  Args  int argc , char  argv   inputObjFile , outputObjFile , schemeType  Sdc  SCHEME_CATMARK , tessUniformRate  5 , tessQuadsFlag  false   for  int i  1  i  argc   i   if  strstr  argv  i , .obj   if  inputObjFile . empty   inputObjFile  std  string  argv  i   else  fprintf  stderr , Warning Extra Obj file s ignored n  , argv  i    else if   strcmp  argv  i , -o   if   i  argc  outputObjFile  std  string  argv  i   else if   strcmp  argv  i , -bilinear   schemeType  Sdc  SCHEME_BILINEAR   else if   strcmp  argv  i , -catmark   schemeType  Sdc  SCHEME_CATMARK   else if   strcmp  argv  i , -loop   schemeType  Sdc  SCHEME_LOOP   else if   strcmp  argv  i , -res   if   i  argc  tessUniformRate  atoi  argv  i   else if   strcmp  argv  i , -quads   tessQuadsFlag  true   else  fprintf  stderr , Warning Unrecognized argument s ignored n  , argv  i     private  Args       This simple class creates and dispenses Surfaces for all faces of  a mesh. It consists primarily of an array of simple structs entries  for each face and a single array of patch points for all Surfaces  created.   There are many ways to create such a cache depending on requirements.  This is a simple example, but the interface presents some options that  are worth considering. A SurfaceCache is constructed here given the  following   - a reference to the SurfaceFactory  - the cache could just as easily take a reference to the mesh  and construct the SurfaceFactory internally   - the position data for the mesh  - this is needed to compute patch points for the Surfaces  - if caching UVs or any other primvar, other data needs to be  provided -- along with the interpolation type for that data  vertex, face-varying, etc.   - option to cache patch points  - the cache could store the Surfaces only or also include  their patch points  - storing patch points takes more memory but will eliminate  any preparation time for evaluation of the Surface   - option to cache all surfaces  - the benefits to caching simple linear or regular surfaces  are minimal -- and may even be detrimental  - so only caching non-linear irregular surfaces is an option  worth considering   The SurfaceCache implementation here provides the options noted above.  But for simplicity, the actual usage of the SurfaceCache does not deal  with the permutations of additional work that is necessary when the  Surfaces or their patch points are not cached.  class SurfaceCache  public  typedef Bfr  Surface  float  Surface  typedef Bfr  RefinerSurfaceFactory  SurfaceFactory  public  SurfaceCache  SurfaceFactory const  surfaceFactory , std  vector  float  const  meshPoints , bool cachePatchPoints  true , bool cacheAllSurfaces  true  SurfaceCache   delete   SurfaceCache   default    Public methods to retrieved cached Surfaces and their pre-computed  patch points  bool FaceHasLimitSurface  int face   return _entries  face . hasLimit   Surface const  GetSurface  int face   return _entries  face . surface . get  float const  GetPatchPoints  int face   return getPatchPoints  face   private   Simple struct to keep track of Surface and more for each face struct FaceEntry  FaceEntry   surface , hasLimit  false , pointOffset  -1    std  unique_ptr  Surface const  surface  bool hasLimit  int pointOffset    Non-const version to be used internally to aide assignment float  getPatchPoints  int face   return  _entries  face . surface   _points . empty    _points . data   _entries  face . pointOffset  3   0   private  std  vector  FaceEntry  _entries  std  vector  float  _points   SurfaceCache  SurfaceCache  SurfaceFactory const  surfaceFactory , std  vector  float  const  meshPoints , bool cachePatchPoints , bool cacheAllSurfaces   int numFaces  surfaceFactory . GetNumFaces  _entries . resize  numFaces  int numPointsInCache  0  for  int face  0  face  numFaces   face   Surface  s  surfaceFactory . CreateVertexSurface  float   face  if  s   FaceEntry  entry  _entries  face  entry . hasLimit  true  if  cacheAllSurfaces    s - IsRegular    s - IsLinear   entry . surface . reset  s  entry . pointOffset  numPointsInCache  numPointsInCache  s - GetNumPatchPoints   else  delete s     if  cachePatchPoints   _points . resize  numPointsInCache  3  for  int face  0  face  numFaces   face   float  patchPoints  getPatchPoints  face  if  patchPoints   GetSurface  face  - PreparePatchPoints  meshPoints . data , 3 , patchPoints , 3        The main tessellation function given a mesh and vertex positions,  tessellate each face -- writing results in Obj format.  void tessellateToObj  Far  TopologyRefiner const  meshTopology , std  vector  float  const  meshVertexPositions , Args const  options     Use simpler local type names for the Surface and its factory  typedef Bfr  RefinerSurfaceFactory  SurfaceFactory  typedef Bfr  Surface  float  Surface    Initialize the SurfaceFactory for the given base mesh very low  cost in terms of both time and space and tessellate each face  independently i.e. no shared vertices   Note that the SurfaceFactory is not thread-safe by default due to  use of an internal cache. Creating a separate instance of the  SurfaceFactory for each thread is one way to safely parallelize  this loop. Another preferred is to assign a thread-safe cache  to the single instance.   First declare any evaluation options when initializing though  none are used in this simple case  SurfaceFactory  Options surfaceOptions  SurfaceFactory meshSurfaceFactory  meshTopology , surfaceOptions    Initialize a SurfaceCache to construct Surfaces for all faces.  From this point forward the SurfaceFactory is no longer used to  access Surfaces. Note also that usage below is specific to the  options used to initialize the SurfaceCache  bool cachePatchPoints  true  bool cacheAllSurfaces  true  SurfaceCache surfaceCache  meshSurfaceFactory , meshVertexPositions , cachePatchPoints , cacheAllSurfaces    As with previous tutorials, output data associated with the face  can be declared in the scope local to each face. But since dynamic  memory is involved with these variables, it is preferred to declare  them outside that loop to preserve and reuse that dynamic memory.  std  vector  float  outCoords  std  vector  float  outPos , outDu , outDv  std  vector  int  outFacets    Assign Tessellation Options applied for all faces. Tessellations  allow the creating of either 3- or 4-sided faces -- both of which  are supported here via a command line option  int const tessFacetSize  3  options . tessQuadsFlag  Bfr  Tessellation  Options tessOptions  tessOptions . SetFacetSize  tessFacetSize  tessOptions . PreserveQuads  options . tessQuadsFlag    Process each face, writing the output of each in Obj format  tutorial  ObjWriter objWriter  options . outputObjFile  int numFaces  meshSurfaceFactory . GetNumFaces  for  int faceIndex  0  faceIndex  numFaces   faceIndex     Retrieve the Surface for this face when present  if   surfaceCache . FaceHasLimitSurface  faceIndex  continue  Surface const  faceSurface   surfaceCache . GetSurface  faceIndex    Declare a simple uniform Tessellation for the Parameterization  of this face and identify coordinates of the points to evaluate  Bfr  Tessellation tessPattern  faceSurface . GetParameterization , options . tessUniformRate , tessOptions  int numOutCoords  tessPattern . GetNumCoords  outCoords . resize  numOutCoords  2  tessPattern . GetCoords  outCoords . data    Retrieve the patch points for the Surface, then use them to  evaluate output points for all identified coordinates  float const  facePatchPoints  surfaceCache . GetPatchPoints  faceIndex  int pointSize  3  outPos . resize  numOutCoords  pointSize  outDu . resize  numOutCoords  pointSize  outDv . resize  numOutCoords  pointSize  for  int i  0 , j  0  i  numOutCoords   i , j  pointSize   faceSurface . Evaluate   outCoords  i  2 , facePatchPoints , pointSize ,  outPos  j ,  outDu  j ,  outDv  j     Identify the faces of the Tessellation   Note the need to offset vertex indices for the output faces --  using the number of vertices generated prior to this face. One  of several Tessellation methods to transform the facet indices  simply translates all indices by the desired offset.  int objVertexIndexOffset  objWriter . GetNumVertices  int numFacets  tessPattern . GetNumFacets  outFacets . resize  numFacets  tessFacetSize  tessPattern . GetFacets  outFacets . data  tessPattern . TransformFacetCoordIndices  outFacets . data , objVertexIndexOffset    Write the evaluated points and faces connecting them as Obj  objWriter . WriteGroupName  baseFace_ , faceIndex  objWriter . WriteVertexPositions  outPos  objWriter . WriteVertexNormals  outDu , outDv  objWriter . WriteFaces  outFacets , tessFacetSize , true , false      Load command line arguments, specified or default geometry and process  int main  int argc , char  argv   Args args  argc , argv  Far  TopologyRefiner  meshTopology  0  std  vector  float  meshVtxPositions  std  vector  float  meshFVarUVs  meshTopology  tutorial  createTopologyRefiner  args . inputObjFile , args . schemeType , meshVtxPositions , meshFVarUVs  if  meshTopology  0   return EXIT_FAILURE   tessellateToObj   meshTopology , meshVtxPositions , args  delete meshTopology  return EXIT_SUCCESS   ------------------------------------------------------------------------------ Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n-        \"loc\": \"far_tutorial_1_1.html\"\n+        \"loc\": \"bfr_tutorial_3_2.html\"\n     }, {\n-        \"title\": \"far_tutorial_4_3.cpp\",\n-        \"text\": \"far_tutorial_4_3.cpp far_tutorial_4_3.cpp 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE httpsgithub.comPixarAnimationStudiosOpenSubdivblobreleasetutorialsfartutorial_4_3far_tutorial_4_3.cpp ------------------------------------------------------------------------------  Tutorial description   This tutorial shows how to create and manipulate table of cascading stencils.   We initialize a FarTopologyRefiner with a cube and apply uniform  refinement. We then use a FarStencilTableFactory to generate a stencil  table. We set the factory Options to not factorize intermediate levels,  thus giving a table of cascading stencils.   We then apply the stencils to the vertex position primvar data, and insert  a hierarchical edit at level 1. This edit is smoothed by the application  of the subsequent stencil cascades.   The results are dumped into an OBJ file that shows the intermediate levels  of refinement of the original cube.  include opensubdivfartopologyDescriptor.h include opensubdivfarstencilTable.h include opensubdivfarstencilTableFactory.h include cstdio include cstring ------------------------------------------------------------------------------  Vertex container implementation.  struct Vertex   Minimal required interface ---------------------- Vertex    Vertex  Vertex const  src   _position  0   src . _position  0  _position  1   src . _position  1  _position  2   src . _position  2   void Clear  void   0   _position  0   _position  1   _position  2   0.0f   void AddWithWeight  Vertex const  src , float weight   _position  0   weight  src . _position  0  _position  1   weight  src . _position  1  _position  2   weight  src . _position  2    Public interface ------------------------------------ void SetPosition  float x , float y , float z   _position  0   x  _position  1   y  _position  2   z   float const  GetPosition  const  return _position   float  GetPosition   return _position   private  float _position  3   ------------------------------------------------------------------------------  Cube geometry from catmark_cube.h static float g_verts  24    -0.5f , -0.5f , 0.5f , 0.5f , -0.5f , 0.5f , -0.5f , 0.5f , 0.5f , 0.5f , 0.5f , 0.5f , -0.5f , 0.5f , -0.5f , 0.5f , 0.5f , -0.5f , -0.5f , -0.5f , -0.5f , 0.5f , -0.5f , -0.5f  static int g_nverts  8 , g_nfaces  6  static int g_vertsperface  6    4 , 4 , 4 , 4 , 4 , 4  static int g_vertIndices  24    0 , 1 , 3 , 2 , 2 , 3 , 5 , 4 , 4 , 5 , 7 , 6 , 6 , 7 , 1 , 0 , 1 , 7 , 5 , 3 , 6 , 0 , 2 , 4  using namespace OpenSubdiv  static Far  TopologyRefiner  createTopologyRefiner  ------------------------------------------------------------------------------ int main  int , char     Generate a FarTopologyRefiner see tutorial_1_1 for details. Far  TopologyRefiner  refiner  createTopologyRefiner   Uniformly refine the topology up to maxlevel. int maxlevel  4  refiner - RefineUniform  Far  TopologyRefiner  UniformOptions  maxlevel   Use the FarStencilTable factory to create cascading stencil table  note we want stencils for each refinement level  cascade mode is achieved by setting factorizeIntermediateLevels  to false Far  StencilTableFactory  Options options  options . generateIntermediateLevels  true  options . factorizeIntermediateLevels  false  options . generateOffsets  true  Far  StencilTable const  stencilTable  Far  StencilTableFactory  Create   refiner , options  std  vector  Vertex  vertexBuffer  refiner - GetNumVerticesTotal  - g_nverts  Vertex  destVerts   vertexBuffer  0  int start  0 , end  0   stencil batches for each level of subdivision for  int level  0  level  maxlevel   level   int nverts  refiner - GetLevel  level  1 . GetNumVertices  Vertex const  srcVerts  reinterpret_cast  Vertex   g_verts  if  level  0   srcVerts   vertexBuffer  start   start  end  end  nverts  stencilTable - UpdateValues  srcVerts , destVerts , start , end   apply 2 hierarchical edits on level 1 vertices if  level  1   float  pos  destVerts  start  5 . GetPosition  pos  1   0.5f  pos  destVerts  start  20 . GetPosition  pos  0   0.25f      Output OBJ of the highest level refined ----------- Vertex  verts   vertexBuffer  0   Print vertex positions for  int level  1 , firstvert  0  level  maxlevel   level   Far  TopologyLevel const  refLevel  refiner - GetLevel  level  printf  g level_d n  , level  int nverts  refLevel . GetNumVertices  for  int vert  0  vert  nverts   vert   float const  pos  verts  vert . GetPosition  printf  v f f f n  , pos  0 , pos  1 , pos  2   verts  nverts   Print faces for  int face  0  face  refLevel . GetNumFaces   face   Far  ConstIndexArray fverts  refLevel . GetFaceVertices  face   all refined Catmark faces should be quads assert  fverts . size   4  printf  f   for  int vert  0  vert  fverts . size   vert   printf  d  , fverts  vert   firstvert  1   OBJ uses 1-based arrays...  printf   n    firstvert  nverts    delete refiner  delete stencilTable  return EXIT_SUCCESS   ------------------------------------------------------------------------------ static Far  TopologyRefiner  createTopologyRefiner    Populate a topology descriptor with our raw data. typedef Far  TopologyDescriptor Descriptor  Sdc  SchemeType type  OpenSubdiv  Sdc  SCHEME_CATMARK  Sdc  Options options  options . SetVtxBoundaryInterpolation  Sdc  Options  VTX_BOUNDARY_EDGE_ONLY  Descriptor desc  desc . numVertices  g_nverts  desc . numFaces  g_nfaces  desc . numVertsPerFace  g_vertsperface  desc . vertIndicesPerFace  g_vertIndices   Instantiate a FarTopologyRefiner from the descriptor. return Far  TopologyRefinerFactory  Descriptor  Create  desc , Far  TopologyRefinerFactory  Descriptor  Options  type , options   ------------------------------------------------------------------------------ Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"title\": \"glEvalLimit\",\n+        \"text\": \"glEvalLimit glEvalLimit 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE SYNOPSIS DESCRIPTION OPTIONS SEE ALSO SYNOPSIS glEvalLimit  -f   -yup   -u   -a   -l refinement level  objfiles  -catmark   -loop   -bilinear  DESCRIPTION glEvalLimit is a stand-alone application that showcases the limit surface Eval module. On the given shape, random samples are generated in local s,t space. Vertex, varying and face-varying data is then computed on the surface limit and displayed as colors. In order to emphasize the dynamic nature of the EvalLimit API, where the locations can be arbitrarily updated before each evaluation, the glEvalLimit example treats each sample as a ST particle. ST Particles are a simplified parametric-space particle dynamics simulation each particle is assigned a location on the subdivision surface limit that is composed of a unique ptex face index, with a local s,t parametric pair. The system also generates an array of parametric velocities ds, dt for each particle. An Update function then applies the velocities to the locations and moves the points along the parametric space. Face boundaries are managed using a ptex adjacency table obtained from the FarTopologyRefiner. Every time a particle moves outside of the 0.0f, 1.0f parametric range, a warp function moves it to the neighboring face, or bounces it, if the edge happens to be a boundary. Note currently the adjacency code does not handle diagonal crossings, nor crossings between quad and non-quad faces. Multiple controls are available to experiment with the algorithms. OPTIONS See the description of the common comand line options for the subset of common options supported here. SEE ALSO Other examples  glViewer , glFVarViewer , glEvalLimit , glStencilViewer , glPtexViewer , glPaintTest , glShareTopology , dxViewer , dxPtexViewer , Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n-        \"loc\": \"far_tutorial_4_3.html\"\n+        \"loc\": \"glevallimit.html\"\n     }, {\n-        \"title\": \"OSD Tessellation shader Interface\",\n-        \"text\": \"OSD Tessellation shader Interface OSD Tessellation shader Interface 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE Basic Tessellation Control Shader Example for B-Spline patches Tessellation Evaluation Shader Example for B-Spline patches Basis Conversion B-spline Patch Gregory Basis Patch Box-spline Triangle Patch Gregory Triangle Patch Legacy Gregory Patch 2.x compatibility Tessellation levels Tessellation levels at each tessellated vertex Tessellation levels computed at each patch Uniform Screenspace Basic Starting with 3.0, Osd tessellation shaders can be used as a set of functions from client shader code. In order to tessellate Osd patches, client shader code should perform the following steps regular B-spline patch case In a tessellation control shader fetch a PatchParam for the current patch call OsdComputePerPatchVertexBSpline to compute OsdPerPatchVertexBezier. compute tessellation level. To prevent cracks on transition patches, two vec4 parameters tessOuterHi, tessOuterLo will be needed in addition to built-in gl_TessLevelInnerOuters. In a tessellation evaluation shader call OsdGetTessParameterization to remap gl_TessCoord to a patch parameter at which to evaluate. call OsdEvalPatchBezierOsdEvalPatchGregory to evaluate the current patch. The following is a minimal example of GLSL code explaining how client shader code uses OpenSubdiv shader functions to tessellate patches of a patch table. Tessellation Control Shader Example for B-Spline patches layout  vertices  16  out  in vec3 position  patch out vec4 tessOuterLo , tessOuterHi  out OsdPerPatchVertexBezier v  void main    Get a patch param from texture buffer. ivec3 patchParam  OsdGetPatchParam  gl_PrimitiveID   Compute per-patch vertices. OsdComputePerPatchVertexBSpline  patchParam , gl_InvocationID , position , v   Compute tessellation factors. if  gl_InvocationID  0   vec4 tessLevelOuter  vec4  0  vec2 tessLevelInner  vec2  0  OsdGetTessLevelsUniform  patchParam , tessLevelOuter , tessLevelInner , tessOuterLo , tessOuterHi  gl_TessLevelOuter  0   tessLevelOuter  0  gl_TessLevelOuter  1   tessLevelOuter  1  gl_TessLevelOuter  2   tessLevelOuter  2  gl_TessLevelOuter  3   tessLevelOuter  3  gl_TessLevelInner  0   tessLevelInner  0  gl_TessLevelInner  1   tessLevelInner  1    Tessellation Evaluation Shader Example for B-Spline patches layout  quads  in  patch in vec4 tessOuterLo , tessOuterHi  in OsdPerPatchVertexBezier v  uniform mat4 mvpMatrix  void main    Compute tesscoord. vec2 UV  OsdGetTessParameterization  gl_TessCoord . xy , tessOuterLo , tessOuterHi  vec3 P  vec3  0 , dPu  vec3  0 , dPv  vec3  0  vec3 N  vec3  0 , dNu  vec3  0 , dNv  vec3  0  ivec3 patchParam  inpt  0 . v . patchParam   Evaluate patch at the tess coord UV OsdEvalPatchBezier  patchParam , UV , v , P , dPu , dPv , N , dNu , dNv   Apply model-view-projection matrix. gl_Position  mvpMatrix  vec4  P , 1   Basis Conversion B-spline Patch The following diagram shows how the Osd shaders process b-spline patches. While regular patches are expressed as b-spline patches in FarPatchTable, the Osd shader converts them into Bezier basis patches for simplicity and efficiency. This conversion is performed in the tessellation control stage. The boundary edge evaluation and single crease matrix evaluation are also resolved during this conversion. OsdComputePerPatchVertexBSpline can be used for this process. The resulting Bezier control vertices are stored in OsdPerPatchVertexBezier struct. void OsdComputePerPatchVertexBSpline  ivec3 patchParam , int ID , vec3 cv  16 , out OsdPerPatchVertexBezier result  The tessellation evaluation shader takes an array of OsdPerPatchVertexBezier struct, and then evaluates the patch using the OsdEvalPatchBezier function. void OsdEvalPatchBezier  ivec3 patchParam , vec2 UV , OsdPerPatchVertexBezier cv  16 , out vec3 P , out vec3 dPu , out vec3 dPv , out vec3 N , out vec3 dNu , out vec3 dNv  Gregory Basis Patch In a similar way, Gregory basis patches are processed as follows OsdComputePerPatchVertexGregoryBasis can be used for the Gregory patches although no basis conversion involved for the Gregory patches and the resulting vertices are stored in a OsdPerPatchVertexGreogryBasis struct. void OsdComputePerPatchVertexGregoryBasis  ivec3 patchParam , int ID , vec3 cv , out OsdPerPatchVertexGregoryBasis result  The tessellation evaluation shader takes an array of OsdPerPatchVertexGregoryBasis struct, and then evaluates the patch using the OsdEvalPatchGregory function. void OsdEvalPatchGregory  ivec3 patchParam , vec2 UV , vec3 cv  20 , out vec3 P , out vec3 dPu , out vec3 dPv , out vec3 N , out vec3 dNu , out vec3 dNv  Box-spline Triangle Patch While regular triangle patches are expressed as triangular box-spline patches in FarPatchTable, the Osd shader converts them into triangular Bezier patches for consistency. This conversion is performed in the tessellation control stage. The boundary edge evaluation is resolved during this conversion. OsdComputePerPatchVertexBoxSplineTriangle can be used for this process. The resulting Bezier control vertices are stored in OsdPerPatchVertexBezier struct. void OsdComputePerPatchVertexBoxSplineTriangle  ivec3 patchParam , int ID , vec3 cv  12 , out OsdPerPatchVertexBezier result  The tessellation evaluation shader takes an array of OsdPerPatchVertexBezier struct, and then evaluates the patch using the OsdEvalPatchBezierTriangle function. void OsdEvalPatchBezierTriangle  ivec3 patchParam , vec2 UV , OsdPerPatchVertexBezier cv  15 , out vec3 P , out vec3 dPu , out vec3 dPv , out vec3 N , out vec3 dNu , out vec3 dNv  Gregory Triangle Patch OsdComputePerPatchVertexGregoryBasis can be used for the quartic triangular Gregory patches although no basis conversion involved for the Gregory triangle patches and the resulting vertices are stored in a OsdPerPatchVertexGreogryBasis struct. void OsdComputePerPatchVertexGregoryBasis  ivec3 patchParam , int ID , vec3 cv , out OsdPerPatchVertexGregoryBasis result  The tessellation evaluation shader takes an array of OsdPerPatchVertexGregoryBasis struct, and then evaluates the patch using the OsdEvalPatchGregoryTriangle function. void OsdEvalPatchGregoryTriangle  ivec3 patchParam , vec2 UV , vec3 cv  18 , out vec3 P , out vec3 dPu , out vec3 dPv , out vec3 N , out vec3 dNu , out vec3 dNv  Legacy Gregory Patch 2.x compatibility OpenSubdiv 3.0 also supports 2.x style Gregory patch evaluation see far_overview. In order to evaluate a legacy Gregory patch, client needs to bind extra buffers and to perform extra steps in the vertex shader as shown in the following diagram Tessellation levels Osd provides both uniform and screen-space adaptive tessellation level computation. Because of the nature of feature adaptive subdivision , we need to pay extra attention for a patchs outer tessellation level for the screen-space adaptive case so that cracks dont appear. An edge of the patch marked as a transition edge is split into two segments Hi and Lo. The Osd shaders uses these two segments to ensure the same tessellation along the edge between different levels of subdivision. In the following example, suppose the left hand side patch has determined the tessellation level of its right edge to be 5. gl_TessLevelOuter is set to 5 for the edge, and at the same time we also pass 2 and 3 to the tessellation evaluation shader as separate levels for the two segments of the edge split at the middle. Tessellation levels at each tessellated vertex The tessellation evaluation shader takes gl_TessCoord and those two values, and remaps gl_TessCoord using OsdGetTessParameterization or OsdGetTessLevelParameterizationTriangle to ensure the parameters are consistent across adjacent patches. vec2 OsdGetTessParameterization  vec2 uv , vec4 tessOuterLo , vec4 tessOuterHi  vec2 OsdGetTessParameterizationTriangle  vec3 uvw , vec4 tessOuterLo , vec4 tessOuterHi  Tessellation levels computed at each patch These tessellation levels can be computed the corresponding method in the tesselation control shader. Note that these functions potentially requires all bezier control points, you need to call barrier to ensure the conversion is done for all invocations. See osdglslPatchBSpline.glsl for more details. Uniform void OsdGetTessLevelsUniform  ivec3 patchParam , out vec4 tessLevelOuter , out vec2 tessLevelInner , out vec4 tessOuterLo , out vec4 tessOuterHi  void OsdGetTessLevelsUniformTriangle  ivec3 patchParam , out vec4 tessLevelOuter , out vec2 tessLevelInner , out vec4 tessOuterLo , out vec4 tessOuterHi  Screenspace void OsdEvalPatchBezierTessLevels  OsdPerPatchVertexBezier cpBezier  16 , ivec3 patchParam , out vec4 tessLevelOuter , out vec2 tessLevelInner , out vec4 tessOuterLo , out vec4 tessOuterHi  void OsdEvalPatchBezierTriangleTessLevels  vec3 cv  15 , ivec3 patchParam , out vec4 tessLevelOuter , out vec2 tessLevelInner , out vec4 tessOuterLo , out vec4 tessOuterHi  Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"title\": \"bfr_tutorial_1_3.cpp\",\n+        \"text\": \"bfr_tutorial_1_3.cpp bfr_tutorial_1_3.cpp 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE httpsgithub.comPixarAnimationStudiosOpenSubdivblobreleasetutorialsbfrtutorial_1_3bfr_tutorial_1_3.cpp ------------------------------------------------------------------------------  Tutorial description   This tutorial builds on the previous tutorial that makes use of the  SurfaceFactory, Surface and Tessellation classes for evaluating and  tessellating the limit surface of faces of a mesh by adding support  for the evaluation of face-varying UVs.   If UVs exist in the given mesh, they will be evaluated and included  with the vertex positions and normals previously illustrated as  part of the tessellation written to the Obj file.  include opensubdivfartopologyRefiner.h include opensubdivbfrrefinerSurfaceFactory.h include opensubdivbfrsurface.h include opensubdivbfrtessellation.h include vector include string include cstring include cstdio  Local headers with support for this tutorial in namespace tutorial include .meshLoader.h include .objWriter.h using namespace OpenSubdiv    Simple command line arguments to provide input and run-time options  class Args  public  std  string inputObjFile  std  string outputObjFile  Sdc  SchemeType schemeType  int tessUniformRate  bool tessQuadsFlag  bool uv2xyzFlag  public  Args  int argc , char  argv   inputObjFile , outputObjFile , schemeType  Sdc  SCHEME_CATMARK , tessUniformRate  5 , tessQuadsFlag  false , uv2xyzFlag  false   for  int i  1  i  argc   i   if  strstr  argv  i , .obj   if  inputObjFile . empty   inputObjFile  std  string  argv  i   else  fprintf  stderr , Warning Extra Obj file s ignored n  , argv  i    else if   strcmp  argv  i , -o   if   i  argc  outputObjFile  std  string  argv  i   else if   strcmp  argv  i , -bilinear   schemeType  Sdc  SCHEME_BILINEAR   else if   strcmp  argv  i , -catmark   schemeType  Sdc  SCHEME_CATMARK   else if   strcmp  argv  i , -loop   schemeType  Sdc  SCHEME_LOOP   else if   strcmp  argv  i , -res   if   i  argc  tessUniformRate  atoi  argv  i   else if   strcmp  argv  i , -quads   tessQuadsFlag  true   else if   strcmp  argv  i , -uv2xyz   uv2xyzFlag  true   else  fprintf  stderr , Warning Unrecognized argument s ignored n  , argv  i     private  Args       The main tessellation function given a mesh and vertex positions,  tessellate each face -- writing results in Obj format.  void tessellateToObj  Far  TopologyRefiner const  meshTopology , std  vector  float  const  meshVertexPositions , std  vector  float  const  meshFaceVaryingUVs , Args const  options     Use simpler local type names for the Surface and its factory  typedef Bfr  RefinerSurfaceFactory  SurfaceFactory  typedef Bfr  Surface  float  Surface    Initialize the SurfaceFactory for the given base mesh very low  cost in terms of both time and space and tessellate each face  independently i.e. no shared vertices   Note that the SurfaceFactory is not thread-safe by default due to  use of an internal cache. Creating a separate instance of the  SurfaceFactory for each thread is one way to safely parallelize  this loop. Another preferred is to assign a thread-safe cache  to the single instance.   First declare any evaluation options when initializing   When dealing with face-varying data, an identifier is necessary  when constructing Surfaces in order to distinguish the different  face-varying data channels. To avoid repeatedly specifying that  identifier when only one is present or of interest, it can be  specified via the Options.  bool meshHasUVs   meshTopology . GetNumFVarChannels   0  SurfaceFactory  Options surfaceOptions  if  meshHasUVs   surfaceOptions . SetDefaultFVarID  0   SurfaceFactory surfaceFactory  meshTopology , surfaceOptions    The Surface to be constructed and evaluated for each face -- as  well as the intermediate and output data associated with it -- can  be declared in the scope local to each face. But since dynamic  memory is involved with these variables, it is preferred to declare  them outside that loop to preserve and reuse that dynamic memory.  Surface posSurface  Surface uvSurface  std  vector  float  facePatchPoints  std  vector  float  outCoords  std  vector  float  outPos , outDu , outDv  std  vector  float  outUV  std  vector  int  outFacets    Assign Tessellation Options applied for all faces. Tessellations  allow the creating of either 3- or 4-sided faces -- both of which  are supported here via a command line option  int const tessFacetSize  3  options . tessQuadsFlag  Bfr  Tessellation  Options tessOptions  tessOptions . SetFacetSize  tessFacetSize  tessOptions . PreserveQuads  options . tessQuadsFlag    Process each face, writing the output of each in Obj format  tutorial  ObjWriter objWriter  options . outputObjFile  int numFaces  surfaceFactory . GetNumFaces  for  int faceIndex  0  faceIndex  numFaces   faceIndex     Initialize the Surfaces for position and UVs of this face.  There are two ways to do this -- both illustrated here   Creating Surfaces for the different data interpolation types  independently is clear and convenient, but considerable work  may be duplicated in the construction process in the case of  non-linear face-varying Surfaces. So unless it is known that  face-varying interpolation is linear, use of InitSurfaces  is generally preferred.   Remember also that the face-varying identifier is omitted from  the initialization methods here as it was previously assigned  to the SurfaceFactoryOptions. In the absence of an assignment  of the default FVarID to the Options, a failure to specify the  FVarID here will result in failure.   The cases below are expanded for illustration purposes, and  validity of the resulting Surface is tested here, rather than  the return value of initialization methods.  bool createSurfacesTogether  true  if   meshHasUVs   surfaceFactory . InitVertexSurface  faceIndex ,  posSurface   else if  createSurfacesTogether   surfaceFactory . InitSurfaces  faceIndex ,  posSurface ,  uvSurface   else  if  surfaceFactory . InitVertexSurface  faceIndex ,  posSurface   surfaceFactory . InitFaceVaryingSurface  faceIndex ,  uvSurface    if   posSurface . IsValid  continue    Declare a simple uniform Tessellation for the Parameterization  of this face and identify coordinates of the points to evaluate  Bfr  Tessellation tessPattern  posSurface . GetParameterization , options . tessUniformRate , tessOptions  int numOutCoords  tessPattern . GetNumCoords  outCoords . resize  numOutCoords  2  tessPattern . GetCoords  outCoords . data    Prepare the patch points for the Surface, then use them to  evaluate output points for all identified coordinates   Evaluate vertex positions   Resize patch point and output arrays int pointSize  3  facePatchPoints . resize  posSurface . GetNumPatchPoints   pointSize  outPos . resize  numOutCoords  pointSize  outDu . resize  numOutCoords  pointSize  outDv . resize  numOutCoords  pointSize   Populate patch point and output arrays posSurface . PreparePatchPoints  meshVertexPositions . data , pointSize , facePatchPoints . data , pointSize  for  int i  0 , j  0  i  numOutCoords   i , j  pointSize   posSurface . Evaluate   outCoords  i  2 , facePatchPoints . data , pointSize ,  outPos  j ,  outDu  j ,  outDv  j     Evaluate face-varying UVs when present if  meshHasUVs    Resize patch point and output arrays  - note reuse of the same patch point array as position int pointSize  2  facePatchPoints . resize  uvSurface . GetNumPatchPoints   pointSize  outUV . resize  numOutCoords  pointSize   Populate patch point and output arrays uvSurface . PreparePatchPoints  meshFaceVaryingUVs . data , pointSize , facePatchPoints . data , pointSize  for  int i  0 , j  0  i  numOutCoords   i , j  pointSize   uvSurface . Evaluate   outCoords  i  2 , facePatchPoints . data , pointSize ,  outUV  j      Identify the faces of the Tessellation   Note the need to offset vertex indices for the output faces --  using the number of vertices generated prior to this face. One  of several Tessellation methods to transform the facet indices  simply translates all indices by the desired offset.  int objVertexIndexOffset  objWriter . GetNumVertices  int numFacets  tessPattern . GetNumFacets  outFacets . resize  numFacets  tessFacetSize  tessPattern . GetFacets  outFacets . data  tessPattern . TransformFacetCoordIndices  outFacets . data , objVertexIndexOffset    Write the evaluated points and faces connecting them as Obj  objWriter . WriteGroupName  baseFace_ , faceIndex  if  meshHasUVs  options . uv2xyzFlag   objWriter . WriteVertexPositions  outUV , 2  objWriter . WriteFaces  outFacets , tessFacetSize , false , false   else  objWriter . WriteVertexPositions  outPos  objWriter . WriteVertexNormals  outDu , outDv  if  meshHasUVs   objWriter . WriteVertexUVs  outUV   objWriter . WriteFaces  outFacets , tessFacetSize , true , meshHasUVs       Load command line arguments, specified or default geometry and process  int main  int argc , char  argv   Args args  argc , argv  Far  TopologyRefiner  meshTopology  0  std  vector  float  meshVtxPositions  std  vector  float  meshFVarUVs  meshTopology  tutorial  createTopologyRefiner  args . inputObjFile , args . schemeType , meshVtxPositions , meshFVarUVs  if  meshTopology  0   return EXIT_FAILURE   tessellateToObj   meshTopology , meshVtxPositions , meshFVarUVs , args  delete meshTopology  return EXIT_SUCCESS   ------------------------------------------------------------------------------ Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n-        \"loc\": \"osd_shader_interface.html\"\n+        \"loc\": \"bfr_tutorial_1_3.html\"\n     }, {\n-        \"title\": \"bfr_tutorial_1_2.cpp\",\n-        \"text\": \"bfr_tutorial_1_2.cpp bfr_tutorial_1_2.cpp 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE httpsgithub.comPixarAnimationStudiosOpenSubdivblobreleasetutorialsbfrtutorial_1_2bfr_tutorial_1_2.cpp ------------------------------------------------------------------------------  Tutorial description   This tutorial builds on the previous tutorial that makes use of the  SurfaceFactory and Surface for evaluating the limit surface of faces  by using the Tessellation class to determine the points to evaluate  and the faces that connect them.   The Tessellation class replaces the explicit determination of points  and faces for the triangle fan of the previous example. Given a  uniform tessellation rate via a command line option, Tessellation  returns the set of coordinates to evaluate, and separately returns  the faces that connect them.  include opensubdivfartopologyRefiner.h include opensubdivbfrrefinerSurfaceFactory.h include opensubdivbfrsurface.h include opensubdivbfrtessellation.h include vector include string include cstring include cstdio  Local headers with support for this tutorial in namespace tutorial include .meshLoader.h include .objWriter.h using namespace OpenSubdiv    Simple command line arguments to provide input and run-time options  class Args  public  std  string inputObjFile  std  string outputObjFile  Sdc  SchemeType schemeType  int tessUniformRate  bool tessQuadsFlag  public  Args  int argc , char  argv   inputObjFile , outputObjFile , schemeType  Sdc  SCHEME_CATMARK , tessUniformRate  5 , tessQuadsFlag  false   for  int i  1  i  argc   i   if  strstr  argv  i , .obj   if  inputObjFile . empty   inputObjFile  std  string  argv  i   else  fprintf  stderr , Warning Extra Obj file s ignored n  , argv  i    else if   strcmp  argv  i , -o   if   i  argc  outputObjFile  std  string  argv  i   else if   strcmp  argv  i , -bilinear   schemeType  Sdc  SCHEME_BILINEAR   else if   strcmp  argv  i , -catmark   schemeType  Sdc  SCHEME_CATMARK   else if   strcmp  argv  i , -loop   schemeType  Sdc  SCHEME_LOOP   else if   strcmp  argv  i , -res   if   i  argc  tessUniformRate  atoi  argv  i   else if   strcmp  argv  i , -quads   tessQuadsFlag  true   else  fprintf  stderr , Warning Unrecognized argument s ignored n  , argv  i     private  Args       The main tessellation function given a mesh and vertex positions,  tessellate each face -- writing results in Obj format.  void tessellateToObj  Far  TopologyRefiner const  meshTopology , std  vector  float  const  meshVertexPositions , Args const  options     Use simpler local type names for the Surface and its factory  typedef Bfr  RefinerSurfaceFactory  SurfaceFactory  typedef Bfr  Surface  float  Surface    Initialize the SurfaceFactory for the given base mesh very low  cost in terms of both time and space and tessellate each face  independently i.e. no shared vertices   Note that the SurfaceFactory is not thread-safe by default due to  use of an internal cache. Creating a separate instance of the  SurfaceFactory for each thread is one way to safely parallelize  this loop. Another preferred is to assign a thread-safe cache  to the single instance.   First declare any evaluation options when initializing though  none are used in this simple case  SurfaceFactory  Options surfaceOptions  SurfaceFactory meshSurfaceFactory  meshTopology , surfaceOptions    The Surface to be constructed and evaluated for each face -- as  well as the intermediate and output data associated with it -- can  be declared in the scope local to each face. But since dynamic  memory is involved with these variables, it is preferred to declare  them outside that loop to preserve and reuse that dynamic memory.  Surface faceSurface  std  vector  float  facePatchPoints  std  vector  float  outCoords  std  vector  float  outPos , outDu , outDv  std  vector  int  outFacets    Assign Tessellation Options applied for all faces. Tessellations  allow the creating of either 3- or 4-sided faces -- both of which  are supported here via a command line option  int const tessFacetSize  3  options . tessQuadsFlag  Bfr  Tessellation  Options tessOptions  tessOptions . SetFacetSize  tessFacetSize  tessOptions . PreserveQuads  options . tessQuadsFlag    Process each face, writing the output of each in Obj format  tutorial  ObjWriter objWriter  options . outputObjFile  int numFaces  meshSurfaceFactory . GetNumFaces  for  int faceIndex  0  faceIndex  numFaces   faceIndex     Initialize the Surface for this face -- if valid skipping  holes and boundary faces in some rare cases  if   meshSurfaceFactory . InitVertexSurface  faceIndex ,  faceSurface   continue     Declare a simple uniform Tessellation for the Parameterization  of this face and identify coordinates of the points to evaluate  Bfr  Tessellation tessPattern  faceSurface . GetParameterization , options . tessUniformRate , tessOptions  int numOutCoords  tessPattern . GetNumCoords  outCoords . resize  numOutCoords  2  tessPattern . GetCoords  outCoords . data    Prepare the patch points for the Surface, then use them to  evaluate output points for all identified coordinates   Resize patch point and output arrays int pointSize  3  facePatchPoints . resize  faceSurface . GetNumPatchPoints   pointSize  outPos . resize  numOutCoords  pointSize  outDu . resize  numOutCoords  pointSize  outDv . resize  numOutCoords  pointSize   Populate patch point and output arrays faceSurface . PreparePatchPoints  meshVertexPositions . data , pointSize , facePatchPoints . data , pointSize  for  int i  0 , j  0  i  numOutCoords   i , j  pointSize   faceSurface . Evaluate   outCoords  i  2 , facePatchPoints . data , pointSize ,  outPos  j ,  outDu  j ,  outDv  j     Identify the faces of the Tessellation   Note the need to offset vertex indices for the output faces --  using the number of vertices generated prior to this face. One  of several Tessellation methods to transform the facet indices  simply translates all indices by the desired offset.  int objVertexIndexOffset  objWriter . GetNumVertices  int numFacets  tessPattern . GetNumFacets  outFacets . resize  numFacets  tessFacetSize  tessPattern . GetFacets  outFacets . data  tessPattern . TransformFacetCoordIndices  outFacets . data , objVertexIndexOffset    Write the evaluated points and faces connecting them as Obj  objWriter . WriteGroupName  baseFace_ , faceIndex  objWriter . WriteVertexPositions  outPos  objWriter . WriteVertexNormals  outDu , outDv  objWriter . WriteFaces  outFacets , tessFacetSize , true , false      Load command line arguments, specified or default geometry and process  int main  int argc , char  argv   Args args  argc , argv  Far  TopologyRefiner  meshTopology  0  std  vector  float  meshVtxPositions  std  vector  float  meshFVarUVs  meshTopology  tutorial  createTopologyRefiner  args . inputObjFile , args . schemeType , meshVtxPositions , meshFVarUVs  if  meshTopology  0   return EXIT_FAILURE   tessellateToObj   meshTopology , meshVtxPositions , args  delete meshTopology  return EXIT_SUCCESS   ------------------------------------------------------------------------------ Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"title\": \"Porting Guide 2.x to 3.0\",\n+        \"text\": \"Porting Guide 2.x to 3.0 Porting Guide 2.x to 3.0 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE Porting Guide 2.x to 3.0 Source Code Organization Hbr Layer Translation Subdivision Schemes and Options in Sdc Specifying Face Varying Topology and Options Far Layer Translation Ordering of Refined Vertices Osd Layer Translation Controller Objects ComputeContext, DrawContext EvalLimitContext OsdMesh OsdKernelBatch OsdVertex Feature Adaptive Shader Changes End Cap Strategies Changes to Subdivision Build Support for Combining 2.x and 3.0 Porting Guide 2.x to 3.0 This document is a high-level description of how to port exiting OpenSubdiv 2.x code to use OpenSubdiv 3.0. NOTE If your questions are not answered here, please contact us on the OpenSubdiv forum and we will be happy to help Source Code Organization Given the scale of functional changes that were being made to the public interface, we took the opportunity in 3.0 to update the coding style and organization -- most notably making use of namespaces for each library. Subdirectory Namespace Relevance hbr NA Historical, no longer used sdc Sdc New, low-level, public options, constants, etc. vtr Vtr New, internal use, topology representation far Far Revised, similar functionality with new API osd Osd Revised, similar functionality with new API Hbr Layer Translation Client mesh topology is now translated into an instance of FarTopologyRefiner instead of HbrMesh. OpenSubdiv 2.x OpenSubdiv 3.0 HbrMeshVTX_TYPE FarTopologyRefiner The FarTopologyRefiner is now the core representation of topology from which all other major classes in Far and Osd are constructed. It was designed to support efficient refinement uniform or sparse of a base mesh of arbitrary topology no manifold restrictions. Once constructed it can be directly refined to meet some need, or passed to other contexts that will refine it to meet their needs. In contrast to directly assembling an HbrMesh, the TopologyRefiner, like other classes in Far, requires a Factory class for its construction. One of the early goals of these factories was to allow a client to convert their existing boundary representation -- with its full topological traversal abilities -- directly into the TopologyRefiners representation. While this is now possible, this also represents the most complex construction process and is only recommended for usage where this conversion process is critical. Details on how to construct a TopologyRefiner can be found in the Far overview documentation. Additionally, documentation for FarTopologyRefinerFactoryMESH outlines the requirements, and Far tutorial 3.1 tutorialsfartutorial_3_1 provides an example of a factory for directly converting HbrMeshes to TopologyRefiners. Its worth a reminder here that FarTopologyRefiner contains only topological information which does include sharpness, since that is considered relating to subdivision topology and not the positions or other data associated with a mesh. While HbrMeshT required some definition of a vertex type T and dimensions of face-varying data, TopologyRefiner is more clearly separated from the data. So the construction of the TopologyRefiner does not involve data specification at all. Subdivision Schemes and Options in Sdc The creation of a new TopologyRefiner requires specification of a subdivision scheme and a set of options that are applicable to all schemes. With HbrMesh, the scheme was specified by declaring a static instance of a specific subclass of a subdivision object, and the options were specified with a number of methods on the different classes. Such general information about the schemes has now been encapsulated in the Sdc layer for use throughout OpenSubdiv. The subdivision scheme is now a simple enumerated type SdcSchemeType and the entire set of options that can be applied to a scheme is encapsulated in a single simple struct of flags and enumerated types SdcOptions. OpenSubdiv 2.x OpenSubdiv 3.0 HbrMeshTSetInterpolateBoundaryMethod SdcOptionsSetVtxBoundaryInterpolation HbrMeshTSetFVarInterpolateBoundaryMethod SdcOptionsSetFVarLinearInterpolation HbrSubdivisionTSetCreaseSubdivisionMethod SdcOptionsSetCreasingMethod Specifying Face Varying Topology and Options Both the way in which face varying data is associated with a mesh and the options used to control its interpolation have changed. The documentation on Compatibility with OpenSubdiv 2.x details the equivalence of interpolation options between Hbr and the new SdcOptionsFVarLinearInterpolation enum, while the section on Face Varying Interpolation illustrates their effects. Face varying data is now specified by index rather than by value, or as often stated, it is specified topologically. Just as vertices for faces are specified by indices into a potential buffer of positions, face varying values are specified by indices into a potential buffer of values. Both vertices and face varying values frequently referred to as FVarValues in the API are assigned and associated with the corners of all faces. In many cases this will simplify representation as many common geometry container formats such as Obj or Alembic specify texture coordinates the same way. For other cases, where a value per face-corner is provided with no indication of which values incident each vertex should be considered shared, it will be necessary to determine shared indices for values at each vertex if any non-linear interpolation is desired. Far Layer Translation While TopologyRefiner was introduced into Far as the new intermediate topology representation, several other changes were made to classes in Far to provide more modular building blocks for use by the Osd layer or directly. OpenSubdiv 2.x OpenSubdiv 3.0 FarMeshU NA, no longer needed FarSubdivisionTables FarStencilTable FarPatchTables FarPatchTable Ordering of Refined Vertices The FarMesh was previously responsible for refining an HbrMesh -- generating new vertices and faces in successive levels of refinement in the FarSubdivisionTables. Vertices were grouped and reordered from the native ordering of HbrMesh so that vertices requiring similar processing were consecutive. Such grouping alleviated most of the idiosyncrasies of HbrMeshs native ordering but not all. FarToplogyRefiner is inherently a collection of refinement levels, and within each refined level so excluding the base level, all components are still grouped for the same reasons. There are two issues here though the ordering of these groups has changed though an option exists to preserve it the ordering of components within these groups is not guaranteed to have been preserved Vertices in a refined level are grouped according to the type of component in the parent level from which they originated, i.e. some vertices originate from the center of a face face-vertices, some from an edge edge-vertices and some from a vertex vertex-vertices. Note that there is a conflict in terminology here -- face-vertices and edge-vertices most often refer to vertices incident a face or edge -- but for the sake of this discussion, we use them to refer to the component from which a child vertex originates. The following table shows the ordering of these groups in 2.x and the two choices available in 3.0. The option is the orderVerticesFromFacesFirst flag that can be set in the Option structs passed to the uniform and adaptive refinement methods of TopologyRefiner Version and option Vertex group ordering 2.x face-vertices, edge-vertices, vertex-vertices 3.0 default vertex-vertices, face-vertices, edge-vertices 3.0 orderVerticesFromFacesFirst  true face-vertices, edge-vertices, vertex-vertices The decision to change the default ordering was based on common feedback the rationale was to allow a trivial mapping from vertices in the cage to their descendants at all refinement levels. While the grouping is fundamental to the refinement process, the ordering of the groups is internally flexible, and the full set of possible orderings can be made publicly available in future if there is demand for such flexibility. The ordering of vertices within these groups was never clearly defined given the way that HbrMesh applied its refinement. For example, for the face-vertices in a level, it was never clear which face-vertices would be first as it depended on the order in which HbrMesh traversed the parent faces and generated them. Given one face, HbrMesh would often visit neighboring faces first before moving to the next intended face. The ordering with FarTopologyRefiner is much clearer and predictable. Using the face-vertices as an example, the order of the face-vertices in level N1 is identical to the order of the parent faces in level N from which they originated. So if we have face-vertices Vi , Vj and Vk at some level, originating from faces Fi , Fj and Fk in the previous level, they will be ordered in increasing order of i , j and k . For uniform refinement the ordering of face vertices Vi will therefore exactly match the ordering of the parent faces Fi . For adaptive or otherwise sparse refinement, the subset of Vi will be ordered similarly, just with components missing from those not refined. The same is true of all vertices, i.e. edge-vertices and vertex-vertices, and also for other components in refined levels, i.e. the child faces and edges. For child faces and edges, more than one will originate from the same parent face or edge. In addition to the overall ordering based on the parent faces or edges, another ordering is imposed on multiple children originating from the same face or edge. They will be ordered based on the corner or end-vertex with which they are associated. In the case of refined faces, another way to view the ordering is to consider the way that faces are originally defined -- by specifying the set of vertices for the corners of each face, often aggregated into a single large array. The ordering of the set of refined faces for each level will correspond directly to such an array of vertices per face in the previous level. Osd Layer Translation Two big changes in the 3.0 API have allowed the Osd layer to be significantly simpler, the first is the move to stencil tables from subdivision tables and the second is shader simplification. With this refactoring, the focus has been to use more meaningful names and to make the data contained within an object more apparent. Controller Objects The API-specific ComputeController has been replaced with the Evaluator . It reflects the fact that stencil compute batches are significantly simpler than subdivision table compute batches. The name Evaluator was chosen with the hope that is more meaningful than the generic ComputeController moniker the Evaluator evaluates stencil and patch tables. In the 2.x code base, subdiv level buffers were always required to be allocated contiguously, however in 3.0 with the shift to stencil tables, this strict allocation scheme is no longer required. As a result, the EvalStencils and EvalPatches methods now accept both a source and a destination descriptor. OpenSubdiv 2.x OpenSubdiv 3.0 ComputeControllerRefine Osd...EvaluatorEvalStencils ComputeControllerSynchronize Osd...EvaluatorSynchronize EvalStencilsControllerUpdateValues Osd...EvaluatorEvalStencils EvalStencilsControllerUpdateDerivs Osd...EvaluatorEvalStencils EvalLimitControllerEvalLimitSample Osd...EvaluatorEvalPatches Also note that OsdVertexDescriptor has been renamed, however its data members and semantic purpose remains the same OpenSubdiv 2.x OpenSubdiv 3.0 OsdVertexBufferDescriptor OsdBufferDescriptor ComputeContext, DrawContext ComputeContext and DrawContext have been replaced with API-specific StencilTable and PatchTable objects, for example OsdGLStencilTableSSBO. OpenSubdiv 2.x OpenSubdiv 3.0 ComputeContext Osd...StencilTable e.g. GLStencilTableTBO EvalStencilsContext Osd...StencilTable DrawContext Osd...PatchTable e.g. GLPatchTable EvalLimitContext The data stored in EvalLimitContext has been merged into the Evaluator class as well. EvalCoords have been moved into their own type, OsdPatchCoords. The primary change here is that the PTex face ID is no longer part of the data structure, rather the client can use a FarPatchMap to convert from PTex face ID to a FarPatchTablePatchHandle. OpenSubdiv 2.x OpenSubdiv 3.0 EvalLimitContext PatchTable EvalLimitContextEvalCoords OsdPatchCoords types.h OsdMesh While not strictly required, OsdMesh is still supported in 3.0 as convenience API for allocating buffers. OsdMesh serves as a simple way to allocate all required data, in the location required by the API for example, GPU buffers for OpenGL. OsdKernelBatch No translation, it is no longer part of the API. OsdVertex No translation, it is no longer part of the API. Feature Adaptive Shader Changes In 3.0, the feature adaptive screen-space tessellation shaders have been dramatically simplified, and the client-facing API has changed dramatically as well. The primary shift is to reduce the total number of shader combinations, and as a result, some of the complexity management mechanisms are no longer necessary. In the discussion below, some key changes are highlighted, but deep integrations may require additional discussion please feel free to send follow up questions to the OpenSubdiv google group. The number of feature adaptive shaders has been reduced from N to exactly 1 or 2, depending on how end-caps are handled. Osd layer no longer compiles shaders, rather it returns shader source for the client to compile. This source is obtained via OsdGLSLHLSLPatchShaderSource. The API exposed in shaders to access patch-based data has been consolidated and formalized, see osdglslPatchCommon.glsl and osdhlslPatchCommon.hlsl for details. Patches are no longer rotated and transition patches have been eliminated, simplifying PatchDescriptor to a 4 bits. Additionally, FarPatchTablesDescriptor has been moved into its own class in the Far namespace. The following table outlines the API translation between 2.x and 3.0 OpenSubdiv 2.x OpenSubdiv 3.0 OsdDrawContextPatchDescriptor NA, no longer needed. OsdDrawContextPatchArray OSdPatchArray types.h FarPatchTablesPatchDescriptor FarPatchDescriptor patchDescriptor.h FarPatchTablesPatchArray made private. End Cap Strategies By default, OpenSubdiv uses Gregory patches to approximate the patches around extraordinary vertices at the maximum isolation level, this process is referred to as end-capping. If ENDCAP_BSPLINE_BASIS is specified to PatchTableFactoryOptions, BSpline patches are used, which gives less accuracy, but it makes possible to render an entire mesh in a single draw call. Both patches require additional control points that are not part of the mesh, we refer to these as local points. In 3.0, the local points of those patches are computed by applying a stencil table to refined vertices to construct a new stencil table for the local points. Since this new stencil table is topologically compatible with the primary stencil table for refinement, it is convenient and efficient to splice those stencil tables together. This splicing can be done in the following way FarStencilTable const refineStencils  FarStencilTableFactoryCreatetopologyRefiner FarPatchTable cosnt patchTable  FarPatchTableFactoryCreatetopologyRefiner FarStencilTable const localPointStencils  patchTable-GetLocalPointStencilTable FarStencilTable const splicedStencils  FarStencilTableFactoryAppendLocalPointStencilTablestopologyRefiner, refineStencils, localPointStencils NOTE Once the spliced stencil table is created, the refined stencils can be released, but the local point stencils are owned by patchTable, it should not be released. OpenSubdiv 3.0 also supports 2.x style Gregory patches, if ENDCAP_LEGACY_GREGORY is specified to PatchTableFactoryOptions. In this case, such an extra stencil splicing isnt needed, however clients must still bind additional buffers VertexValence buffer and QuadOffsets buffer. See OsdGLLegacyGregoryPatchTable for additional details. Changes to Subdivision The refactoring of OpenSubdiv 3.0 data representations presented a unique opportunity to revisit some corners of the subdivision specification and remove or update some legacy features -- none of which was taken lightly. More details are provided in Subdivision Compatibility , while the following offers a quick overview All face-varying interpolation options have been combined into a single enum. Vertex interpolation options have been renamed or removed The naming of the standard creasing method has changed from Normal to Uniform . Unused legacy modes of the smoothtriangle option have been removed. The averaging of Chaikin creasing with infinitely sharp edges has changed. Support for Hierarchical Edits has been removed. Build Support for Combining 2.x and 3.0 Running OpenSubdiv 2.0 and 3.0 in a single process is supported, however some special care must be taken to avoid namespace collisions, both in terms of run-time symbols avoid using OpenSubdivOsd, for example and in terms of build-time search paths. To support both OpenSubdiv 2.0 and 3.0 in your build environment, you can prefix the header install directory of OpenSubdiv 3.0. Do this using the build flag CMAKE_INCDIR_BASE when configuring cmake i.e. -DCMAKE_INCDIR_BASEincludeopensubdiv3 and then including files from opensubdiv3... in client code. Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n-        \"loc\": \"bfr_tutorial_1_2.html\"\n+        \"loc\": \"porting.html\"\n     }, {\n-        \"title\": \"Vtr Overview\",\n-        \"text\": \"Vtr Overview Vtr Overview 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE Vectorized Topology Representation Vtr VtrLevel Topological Relationships Memory Efficiency VtrRefinement Parent-child and child-parent relationships Data flexibility Vectorized Topology Representation Vtr Vtr consists of a suite of classes that collectively provide an intermediate representation of topology that supports efficient refinement. Vtr is intended for internal use only and is currently accessed through the Far layer by the FarTopologyRefiner , which assembles these Vtr classes to meet the topological and refinement needs of the Far layer. What follows is therefore more intended to provide insite into the underlying architecture than to describe particular usage. For documentation more relevant to direct usage, proceed to the Far section previously noted. Vtr is vectorized in that its topological data is stored more as a collection of vectors of primitive elements rather than as the faces, vertices and edges that make up many other topological representations. It is essentially a structure-of-arrays SOA approach to topology in contrast to the more common array-of-structures pattern found in many other topological representations. Vtrs use of vectors allows it to be fairly efficient in its use of memory and similarly efficient to refine, but the topology is fixed once defined. Vtr classes are purely topological. They are even more independent of the representation of vertices, faces, etc. than Hbr in that they are not even parameterized by an interface to such components. So the same set of Vtr objects can eventually be used to serve more than one representation of these components. The primary requirement is that a mesh be expressable as an indexable set i.e. a vector or array of vertices, edges and faces. The index of a component uniquely identifies it and properties are retrieved by referring to it by index. Its worth qualifying the term topological here and elsewhere -- we generally refer to topology as subdivision topology rather than mesh topology. A subdivision hierarchy is impacted by the presence of semi-sharp creasing, as the subdivision rules change in response to that creasing. So subdivision topology includes the sharpness values assigned to edges and vertices that affect the semi-sharp creasing. The two primary classes in Vtr consist of VtrLevel - a class representing complete vertex topology for a level VtrRefinement - a class mapping a parent VtrLevel to a child level Others exist to represent the following selection and appropriate tagging of components for sparse refinement divergence of face-varying topology from the vertex topology mapping between face-varying topology at successive levels common low-level utilities, e.g. simple array classes VtrLevel VtrLevel is a complete topological description of a subdivision level, with the topological relations, sharpness values and component tags all stored in vectors literally stdvectors, but easily changed via typedefs. There are no classes or objects for the mesh component types i.e. faces, edges and vertices but simply an integer index to identify each. It can be viewed as a structure-of-arrays representation of the topology any property related to a particular component is stored in an array and accessible using the index identifying that component. So with no classes the for the components, its difficult to say what constitutes a vertex or a face they are each the sum of all the fields scattered amongst the many vectors included. Level represents a single level of a potential hierarchy and is capable of representing the complete base mesh. There are no members that relate data in one level to any other, either below or above. As such, any Level can be used as the base level for a new subdivision hierarchy potentially more than one. All relationships between separate levels are maintained in the VtrRefinement class. Topological Relationships Level requires the definition of and associations between a fixed set of indexable components for all three component types, i.e. an explicit edge list in addition to the expected set of vertices and faces. There are no explicit component objects in the representation, only an integer index  VtrIndex  identifying each component within the set and data associated with that component in the various vectors. The topology is stored as six sets of incident relations between the components two each for the two other component types incident each component type, i.e. for each face, its incident vertices and incident edges for each edge, its incident vertices and incident faces for each vertex, its incident edges and incident faces The collection of incidence relations is a vectorized variation of AIF the Adjacency and Incidence Framework. The set of these six incidence relations is not minimal only four are required, but that set excludes the most desired face-vertex relation but all six are kept and maintained to facilitate faster refinement. While the sizes of several vectors are directly proportional to the number of vertices, edges or faces to which the data is associated, the sizes of some of the vectors for these relations is more cumulative and so additional vectors of offsets is required typical of the face-vertex list commonly used as the minimal definition of mesh topology. Vectors for the sharpness values associated with crease edges and corner vertices are included and so sized according to the number of edges and vertices, along with additional tags for the components that may be helpful to refinement i.e. the type of subdivision Rule associated with each vertex. A Level is really just a container for data in a subdivision level, and so its public methods are primarily to access that data. Modification of the data is protected and only made available to classes that are intended to construct Levels  currently the Far factory class that is responsible for building the base level, and the VtrRefinement class that constructs subsequent levels during refinement. Memory Efficiency One of the advantages in storing data in what is essentially a structure-of-arrays, rather than the array-of-structures more typical of topological representations, is that we can be more selective about memory usage in some cases. Particularly in the case of uniform refinement, when the data in subsequent levels is typically 4x its predecessor, we can minimize what we either generate or keep around at each level. For instance, if only a face-list is required at the finest level, we only need to generate one of the six topological relations the vertices incident each face. When we do keep Levels around in memory as is the case with the FarTopologyRefiner  we do have do have the opportunity to prune what is not strictly necessary after the refinement. Just as with construction, whatever classes are privileged to construct a Level are likely those that will be privileged to prune its contents when needed. The current implementation of Level is far from optimal though -- there are opportunities for improvement. After one level of subdivision, the faces in a Level will be either all quads or tris. Having specializations for these cases and using the more general case in support of N-sided faces for the base level only is one possibility. Levels also allocate dozens of vectors in which to store all data. Since these vectors are of fixed size once created, they could be aggregated by partitioning one or a smaller number of larger block of memory into the desired pieces. The desire to make some of these improvements is part of why Vtr is not directly exposed for public use and instead exposed via Far. VtrRefinement While VtrLevel contains the topology for each subdivision level, VtrRefinement is responsible for creating a new level via refinement of an existing one, and for maintaining the relationships between the components in the parent and child levels. So a simplified view of a subdivision hierarchy with Vtr is a set of Levels with a Refinement between each successive pair. Refinement is a friend of Level and will populate a child level from a parent given a set of refinement parameters. Aside from parameters related to data or depth, there are two kinds of refinement supported uniform and sparse. The latter sparse refinement requires selection of an arbitrary set of components -- any dependent or neighboring components that are required for the limit will be automatically included. So feature-adaptive refinement is just one form of this selective sparse refinement, the criteria being the topological features of interest creases and extra-ordinary vertices. The intent is to eventually provide more flexibility to facilitate the refinement of particular regions of interest or more dynamicadaptive needs. Refinement has also been subclassed according to the type of topological split being performed, i.e. splitting all faces into quads or tris via the QuadRefinement and TriRefinement subclasses. As noted with VtrLevel , there is further room for improvement in memory andor performance here by combining more optimal specializations for both Refinement and Level -- with consideration of separating the uniform and sparse cases. Parent-child and child-parent relationships While Refinement populates a new child Level as part of its refinement operation, it also accumulates the relationships between the parent and child level and as with Level , this data is stored in vectors indexable by the components. The associations between components in the two levels was initially only uni-directional child components were associated with incident components of a parent component based on the parent components topology, so we had a parent-to-child mapping one to many. Storing the reverse child-to-parent mapping was avoided to reduce memory particularly in the case of uniform refinement as it often was not necessary, but a growing need for it, particularly in the case of sparse feature-adaptive refinement, lead to it being included. Data flexibility One of the advantages of the structure-of-arrays representation in both Level and Refinement is that we can make more dynamic choices about what type of data we choose to allocate and use based on needs. For instance, we can choose between maintaining the parent-child or child-parent mapping in Refinement , or both if needed, and we can remove one if no longer necessary. An active example of this is uniform refinement if we only require the face-vertex list at the finest subdivision level, there is no need to generate a complete topological description of that level as would be required of more traditional representations, and given that level is 4x the magnitude of its parent, the savings are considerable. Currently there is nothing specific to a subdivision scheme in the refinement other than the type of topological splitting to apply. The refinement does subdivide sharpness values for creasing, but that too is independent of scheme. Tags were added to the base level that are propagated through the refinement and these too are dependent on the scheme, but are applied externally. Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"title\": \"far_tutorial_2_2.cpp\",\n+        \"text\": \"far_tutorial_2_2.cpp far_tutorial_2_2.cpp 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE httpsgithub.comPixarAnimationStudiosOpenSubdivblobreleasetutorialsfartutorial_2_2far_tutorial_2_2.cpp ------------------------------------------------------------------------------  Tutorial description   Building on tutorial 0, this example shows how to instantiate a simple mesh,  refine it uniformly and then interpolate both vertex and face-varying  primvar data.  The resulting interpolated data is output as an obj file, with the  face-varying data recorded in the uv texture layout.  include opensubdivfartopologyDescriptor.h include opensubdivfarprimvarRefiner.h include cstdio ------------------------------------------------------------------------------  Face-varying implementation.   struct Vertex   Minimal required interface ---------------------- Vertex    Vertex  Vertex const  src   _position  0   src . _position  0  _position  1   src . _position  1  _position  2   src . _position  2   void Clear  void   0   _position  0   _position  1   _position  2   0.0f   void AddWithWeight  Vertex const  src , float weight   _position  0   weight  src . _position  0  _position  1   weight  src . _position  1  _position  2   weight  src . _position  2    Public interface ------------------------------------ void SetPosition  float x , float y , float z   _position  0   x  _position  1   y  _position  2   z   const float  GetPosition  const  return _position   private  float _position  3   ------------------------------------------------------------------------------  Face-varying container implementation.   We are using a uv texture layout as a face-varying primitive variable  attribute. Because face-varying data is specified per-face-per-vertex,  we cannot use the same container that we use for vertex or varying  data. We specify a new container, which only carries u,v coordinates.  Similarly to our Vertex container, we add a minimalistic interpolation  interface with a Clear and AddWithWeight methods.  struct FVarVertexUV   Minimal required interface ---------------------- void Clear   u  v  0.0f   void AddWithWeight  FVarVertexUV const  src , float weight   u  weight  src . u  v  weight  src . v    Basic uv layout channel float u , v   struct FVarVertexColor   Minimal required interface ---------------------- void Clear   r  g  b  a  0.0f   void AddWithWeight  FVarVertexColor const  src , float weight   r  weight  src . r  g  weight  src . g  b  weight  src . b  a  weight  src . a    Basic color layout channel float r , g , b , a   ------------------------------------------------------------------------------  Cube geometry from catmark_cube.h  vertex primitive variable data  topology static float g_verts  8  3    -0.5f , -0.5f , 0.5f ,  0.5f , -0.5f , 0.5f ,  -0.5f , 0.5f , 0.5f ,  0.5f , 0.5f , 0.5f ,  -0.5f , 0.5f , -0.5f ,  0.5f , 0.5f , -0.5f ,  -0.5f , -0.5f , -0.5f ,  0.5f , -0.5f , -0.5f  static int g_nverts  8 , g_nfaces  6  static int g_vertsperface  6    4 , 4 , 4 , 4 , 4 , 4  static int g_vertIndices  24    0 , 1 , 3 , 2 , 2 , 3 , 5 , 4 , 4 , 5 , 7 , 6 , 6 , 7 , 1 , 0 , 1 , 7 , 5 , 3 , 6 , 0 , 2 , 4   face-varying primitive variable data  topology for UVs static float g_uvs  14  2    0.375 , 0.00 ,  0.625 , 0.00 ,  0.375 , 0.25 ,  0.625 , 0.25 ,  0.375 , 0.50 ,  0.625 , 0.50 ,  0.375 , 0.75 ,  0.625 , 0.75 ,  0.375 , 1.00 ,  0.625 , 1.00 ,  0.875 , 0.00 ,  0.875 , 0.25 ,  0.125 , 0.00 ,  0.125 , 0.25  static int g_nuvs  14  static int g_uvIndices  24    0 , 1 , 3 , 2 , 2 , 3 , 5 , 4 , 4 , 5 , 7 , 6 , 6 , 7 , 9 , 8 , 1 , 10 , 11 , 3 , 12 , 0 , 2 , 13   face-varying primitive variable data  topology for color static float g_colors  24  4    1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 0.0 , 0.0 , 1.0 ,  1.0 , 0.0 , 0.0 , 1.0 ,  1.0 , 0.0 , 0.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0  static int g_ncolors  24  static int g_colorIndices  24    0 , 3 , 9 , 6 , 7 , 10 , 15 , 12 , 13 , 16 , 21 , 18 , 19 , 22 , 4 , 1 , 5 , 23 , 17 , 11 , 20 , 2 , 8 , 14  using namespace OpenSubdiv  ------------------------------------------------------------------------------ int main  int , char    int maxlevel  3  typedef Far  TopologyDescriptor Descriptor  Sdc  SchemeType type  OpenSubdiv  Sdc  SCHEME_CATMARK  Sdc  Options options  options . SetVtxBoundaryInterpolation  Sdc  Options  VTX_BOUNDARY_EDGE_ONLY  options . SetFVarLinearInterpolation  Sdc  Options  FVAR_LINEAR_NONE   Populate a topology descriptor with our raw data Descriptor desc  desc . numVertices  g_nverts  desc . numFaces  g_nfaces  desc . numVertsPerFace  g_vertsperface  desc . vertIndicesPerFace  g_vertIndices  int channelUV  0  int channelColor  1   Create a face-varying channel descriptor Descriptor  FVarChannel channels  2  channels  channelUV . numValues  g_nuvs  channels  channelUV . valueIndices  g_uvIndices  channels  channelColor . numValues  g_ncolors  channels  channelColor . valueIndices  g_colorIndices   Add the channel topology to the main descriptor desc . numFVarChannels  2  desc . fvarChannels  channels   Instantiate a FarTopologyRefiner from the descriptor Far  TopologyRefiner  refiner  Far  TopologyRefinerFactory  Descriptor  Create  desc , Far  TopologyRefinerFactory  Descriptor  Options  type , options   Uniformly refine the topology up to maxlevel  note fullTopologyInLastLevel must be true to work with face-varying data  Far  TopologyRefiner  UniformOptions refineOptions  maxlevel  refineOptions . fullTopologyInLastLevel  true  refiner - RefineUniform  refineOptions    Allocate and initialize the vertex primvar data see tutorial 2 for  more details. std  vector  Vertex  vbuffer  refiner - GetNumVerticesTotal  Vertex  verts   vbuffer  0  for  int i  0  i  g_nverts   i   verts  i . SetPosition  g_verts  i  0 , g_verts  i  1 , g_verts  i  2    Allocate and initialize the first channel of face-varying primvar data UVs std  vector  FVarVertexUV  fvBufferUV  refiner - GetNumFVarValuesTotal  channelUV  FVarVertexUV  fvVertsUV   fvBufferUV  0  for  int i  0  i  g_nuvs   i   fvVertsUV  i . u  g_uvs  i  0  fvVertsUV  i . v  g_uvs  i  1    Allocate  interpolate the face-varying primvar data colors std  vector  FVarVertexColor  fvBufferColor  refiner - GetNumFVarValuesTotal  channelColor  FVarVertexColor  fvVertsColor   fvBufferColor  0  for  int i  0  i  g_ncolors   i   fvVertsColor  i . r  g_colors  i  0  fvVertsColor  i . g  g_colors  i  1  fvVertsColor  i . b  g_colors  i  2  fvVertsColor  i . a  g_colors  i  3    Interpolate both vertex and face-varying primvar data Far  PrimvarRefiner primvarRefiner   refiner  Vertex  srcVert  verts  FVarVertexUV  srcFVarUV  fvVertsUV  FVarVertexColor  srcFVarColor  fvVertsColor  for  int level  1  level  maxlevel   level   Vertex  dstVert  srcVert  refiner - GetLevel  level -1 . GetNumVertices  FVarVertexUV  dstFVarUV  srcFVarUV  refiner - GetLevel  level -1 . GetNumFVarValues  channelUV  FVarVertexColor  dstFVarColor  srcFVarColor  refiner - GetLevel  level -1 . GetNumFVarValues  channelColor  primvarRefiner . Interpolate  level , srcVert , dstVert  primvarRefiner . InterpolateFaceVarying  level , srcFVarUV , dstFVarUV , channelUV  primvarRefiner . InterpolateFaceVarying  level , srcFVarColor , dstFVarColor , channelColor  srcVert  dstVert  srcFVarUV  dstFVarUV  srcFVarColor  dstFVarColor     Output OBJ of the highest level refined ----------- Far  TopologyLevel const  refLastLevel  refiner - GetLevel  maxlevel  int nverts  refLastLevel . GetNumVertices  int nuvs  refLastLevel . GetNumFVarValues  channelUV  int ncolors  refLastLevel . GetNumFVarValues  channelColor  int nfaces  refLastLevel . GetNumFaces   Print vertex positions int firstOfLastVerts  refiner - GetNumVerticesTotal  - nverts  for  int vert  0  vert  nverts   vert   float const  pos  verts  firstOfLastVerts  vert . GetPosition  printf  v f f f n  , pos  0 , pos  1 , pos  2    Print uvs int firstOfLastUvs  refiner - GetNumFVarValuesTotal  channelUV  - nuvs  for  int fvvert  0  fvvert  nuvs   fvvert   FVarVertexUV const  uv  fvVertsUV  firstOfLastUvs  fvvert  printf  vt f f n  , uv . u , uv . v    Print colors int firstOfLastColors  refiner - GetNumFVarValuesTotal  channelColor  - ncolors  for  int fvvert  0  fvvert  ncolors   fvvert   FVarVertexColor const  c  fvVertsColor  firstOfLastColors  fvvert  printf  c f f f f n  , c . r , c . g , c . b , c . a    Print faces for  int face  0  face  nfaces   face   Far  ConstIndexArray fverts  refLastLevel . GetFaceVertices  face  Far  ConstIndexArray fuvs  refLastLevel . GetFaceFVarValues  face , channelUV   all refined Catmark faces should be quads assert  fverts . size   4  fuvs . size   4  printf  f   for  int vert  0  vert  fverts . size   vert    OBJ uses 1-based arrays... printf  dd  , fverts  vert   1 , fuvs  vert   1   printf   n     delete refiner  return EXIT_SUCCESS   ------------------------------------------------------------------------------ Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n-        \"loc\": \"vtr_overview.html\"\n+        \"loc\": \"far_tutorial_2_2.html\"\n     }, {\n-        \"title\": \"OSD Overview\",\n-        \"text\": \"OSD Overview OSD Overview 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE OpenSubdiv Osd Refinement Limit Stencil Evaluation Limit Evaluation with PatchTable OpenGLDX11Metal Drawing with Hardware Tessellation InterleavedBatched Buffer Configuration Cross-Platform Implementation OpenSubdiv Osd 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 uniformadaptive subdivision on CPUGPU backends Limit Stencil Evaluation Compute limit surfaces by limit stencils on CPUGPU backends Limit Evaluation with PatchTable Compute limit surfaces by patch evaluation on CPUGPU backends OpenGLDX11Metal Drawing with hardware tessellation Provide GLSLHLSLMetal tessellation functions for patch table InterleavedBatched buffer configuration Provide consistent buffer descriptor to deal with arbitrary buffer layout. Cross-Platform Implementation Provide convenient classes 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 dont 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. Refinement Osd supports both uniform and feature adaptive subdivision. Once clients create a FarStencilTable for the topology, they can convert it into device-specific stencil tables if necessary. The following table shows which evaluator classes and stencil table interfaces can be used together. Note that while Osd provides these stencil table classes which can be easily constructed from FarStencilTable, clients arent required to use these table classes. Clients may have their own entities as a stencil tables as long as EvaluatorEvalStencils can access the necessary interfaces. Backend Evaluator class compatible stencil table CPU CPU single-threaded CpuEvaluator FarStencilTable TBB CPU multi-threaded TbbEvaluator FarStencilTable OpenMP CPU multi-threaded OmpEvaluator FarStencilTable CUDA GPU CudaEvaluator CudaStencilTable OpenCL CPUGPU CLEvaluator CLStencilTable GL ComputeShader GPU GLComputeEvaluator GLStencilTableSSBO GL Transform Feedback GPU GLXFBEvaluator GLStencilTableTBO DX11 ComputeShader GPU D3D11ComputeEvaluator D3D11StencilTable Metal GPU MTLComputeEvaluator MTLStencilTable Limit Stencil Evaluation Limit stencil evaluation is quite similar to refinement in Osd . At first clients create FarLimitStencilTable for the locations to evaluate the limit surfaces, then convert it into an evaluator compatible stencil table and call EvaluatorEvalStencils. Limit Evaluation with PatchTable Another way to evaluate the limit surfaces is to use the PatchTable. Once all control vertices and local points are resolved by the stencil evaluation, Osd can evaluate the limit surfaces through the PatchTable. Backend Evaluator class compatible patch table CPU CPU single-threaded CpuEvaluator CpuPatchTable TBB CPU multi-threaded TbbEvaluator CpuPatchTable OpenMP CPU multi-threaded OmpEvaluator CpuPatchTable CUDA GPU CudaEvaluator CudaPatchTable OpenCL CPUGPU CLEvaluator CLPatchTable GL ComputeShader GPU GLComputeEvaluator GLPatchTable GL Transform Feedback GPU GLXFBEvaluator GLPatchTable DX11 ComputeShader GPU D3D11ComputeEvaluator not yet supported D3D11PatchTable Metal ComputeShader GPU MTLComputeEvaluator MTLPatchTable Release Notes 3.x Osd evaluation backends EvaluatorEvalPatches do not support evaluation of single-crease or Legacy Gregory patch types. OpenGLDX11Metal Drawing with Hardware Tessellation One of the most interesting use cases of the Osd layer is realtime drawing of subdivision surfaces using hardware tessellation. This is somewhat similar to limit evaluation with PatchTable described above. Drawing differs from limit evaluation in that Osd provides shader snippets for patch evaluation and clients will inject them into their own shader source. See shader interface for a more detailed discussion of the shader interface. InterleavedBatched Buffer Configuration All Osd layer APIs assume that each primitive variables to be computed points, colors, uvs ... are contiguous arrays of 32bit floating point values. The Osd API refers to such an array as a buffer. A buffer can exist on CPU memory or GPU memory. Osd Evaluators typically take one source buffer and one destination buffer, or three destination buffers if derivatives are being computed. Osd Evaluators also take BufferDescriptors, that are used to specify the layout of the source and destination buffers. A BufferDescriptor is a struct of 3 integers which specify an offset, length and stride. For example Vertex 0 Vertex 1 ... X Y Z X Y Z ... The layout of this buffer can be described as Osd  BufferDescriptor desc  offset   0 , length   3 , stride   3  BufferDescriptor can be used for an interleaved buffer too. Vertex 0 Vertex 1 ... X Y Z R G B A X Y Z R G B A ... Osd  BufferDescriptor xyzDesc  0 , 3 , 7  Osd  BufferDescriptor rgbaDesc  3 , 4 , 7  Although the source and destination buffers dont need to be the same buffer for EvalStencils, adaptive patch tables are constructed to first index the coarse vertices and the refined vertices immediately afterward. In this case, the BufferDescriptor for the destination should include the offset as the number of coarse vertices to be skipped. Coarse vertices n  Src Refined vertices  Dst Vertex 0 Vertex 1 ... Vertex n Vertex n1 X Y Z X Y Z ... X Y Z X Y Z ... Osd  BufferDescriptor srcDesc  0 , 3 , 3  Osd  BufferDescriptor dstDesc  n  3 , 3 , 3  Also note that the source descriptor doesnt have to start with offset  0. This is useful when a client has a big buffer with multiple objects batched together. Cross-Platform Implementation One of the key goals of OpenSubdiv is to achieve as much cross-platform flexibility as possible and leverage all optimized hardware paths where available. This can be very challenging as there is a very large variety of plaftorms and APIs available, with very distinct capabilities. In Osd , Evaluators dont care about interops between those APIs. All Evaluators have two kinds of APIs for both EvalStencils and EvalPatches. Explicit signatures which directly take device-specific buffer representation e.g., pointer for CpuEvaluator, GLuint buffer for GLComputeEvaluator, etc. Generic signatures which take arbitrary buffer classes. The buffer class is required to have a certain method to return the device-specific buffer representation. The later interface is useful if the client supports multiple backends at the same time. The methods that need to be implemented for the Evaluators are Evaluator class object method CpuEvaluator TbbEvaluator OmpEvaluator pointer to cpu memory BindCpuBuffer CudaEvaluator pointer to cuda memory BindCudaBuffer CLEvaluator cl_mem BindCLBuffer GLComputeEvaluator GLXFBEvaluator GL buffer object BindVBO D3D11ComputeEvaluator D3D11 UAV BindD3D11UAV MTLComputeEvaluator MTLBuffer BindMTLBuffer The buffers can use these methods as a trigger of interop. Osd provides a default implementation of interop buffer for most of the backend combinations. For example, if the client wants to use CUDA as a computation backend and use OpenGL as the drawing API, OsdCudaGLVertexBuffer fits the case since it implements BindCudaBuffer and BindVBO. Again, clients can implement their own buffer class and pass it to the Evaluators. Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"title\": \"dxViewer\",\n+        \"text\": \"dxViewer dxViewer 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE SYNOPSIS DESCRIPTION OPTIONS SEE ALSO SYNOPSIS dxViewer  -f   -yup   -u   -a   -l refinement level   -c animation loops  objfiles  -catmark   -loop   -bilinear  DESCRIPTION dxViewer is a stand-alone application that showcases the application of uniform and feature adaptive subdivision schemes to a collection of geometric shapes. Multiple controls are available to experiment with the algorithms. OPTIONS See the description of the common comand line options for the subset of common options supported here. SEE ALSO Other examples  glViewer , glFVarViewer , glEvalLimit , glStencilViewer , glPtexViewer , glPaintTest , glShareTopology , dxViewer , dxPtexViewer , Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n-        \"loc\": \"osd_overview.html\"\n+        \"loc\": \"dxviewer.html\"\n     }, {\n-        \"title\": \"Getting Started\",\n-        \"text\": \"Getting Started Getting Started 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE Downloading the code Branches  Git Flow Checking out branches API Versions Making Changes Code Overview Downloading the code The code is hosted on a Github public repository. Download and setup information for Git tools can be found here . You can access the OpenSubdiv Git repository at httpsgithub.comPixarAnimationStudiosOpenSubdiv From there, there are several ways of downloading the OpenSubdiv source code. Zip archive  downloaded from here Using a GUI client  you can find a list here Please refer to the documentation of your preferred application. From the GitShell, Cygwin or the CLI  assuming that you have the Git tools installed, you can clone the OpenSubdiv repository directly with the following command git clone https  github.comPixarAnimationStudiosOpenSubdiv.git These methods only pull static archives, which is are not under the version control system and therefore cannot pull updates or push changes back. If you intend on contributing features or fixes to the main trunk of the code, you will need to create a free Github account and clone a fork of the OpenSubdiv repository. Submissions to the main code trunk can be sent using Gits pull-request mechanisms. Please note that we are using the git flow tools so all changes should be made to our dev branch. Before we can accept submissions however, we will need a signed Contributors License Agreement . Branches  Git Flow Since version 1.1.0, OpenSubdiv has adopted the Git Flow branching model . Our active development branch is named dev  all new features and bug fixes should be submitted to this branch. The changes submitted to the dev branch are periodically patched to the release branch as new versions are released. Checking out branches The Git Flow tools are not a requisite for working with the OpenSubdiv code base, but new work should always be performed in the dev branch, or dedicated feature-branches. By default, a cloned repository will be pointing to the release branch. You can switch to the dev branch using the following command git checkout dev You can check that the branch has now been switched simply with git branch Which should return  dev release API Versions OpenSubdiv maintains an internal API versioning system. The version number can be read from the file .opensubdivversion.h . Following the Git-Flow pattern, our releases are indexed using Gits tagging system. List of the existing tags git tag -- list Checking out version 1.2.0 git checkout v1_2_0 Making Changes Direct push access to the OpenSubdiv repository is currently limited to a small internal development team. External code should be submitted by sending Git pull-requests from forks of our dev branch. Code Overview The OpenSubdiv code base contains the following main areas Directory Contents .opensubdiv The main subdivision APIs  Sdc, Vtr, Far and Osd. .examples A small collection of standalone applications that illustrate how to deploy the various features and optimizations of the OpenSubdiv APIs. The GL-based examples rely on the cross-platform GLFW API for interactive window management, while the DirectX ones are OS-native. .tutorials Tutorials showing how to manipulate the APIs of OpenSubdiv. .documentation The reStructuredText source files along with python scripts that generate the HTML documentation site. .regression Standalone regression tests and baseline data to help maintain the integrity of our APIs. If GPU SDKs are detected, some tests will attempt to run computations on those GPUs. Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"title\": \"Contributing to OpenSubdiv\",\n+        \"text\": \"Contributing to OpenSubdiv Contributing to OpenSubdiv 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE Contributor License Agreement Understand Git Recommended Git Workflow Sending a Pull Request Contributor License Agreement In order for us to accept code submissions merge git pull-requests, contributors need to sign the Contributor License Agreement CLA. There are two CLAs, one for individuals and one for corporations. As for the end-user license, both are based on Apache. They are found in the code repository  individual form , corporate form . Please email the signed CLA to opensubdiv-clapixar.com . Understand Git First, you should familiarize yourself with the Git data model and commands. For small changes you may not need to understand Git deeply, but for larger changes or working with the codebase over a long period of time, it becomes critical to understand more of whats going on under the hood. There are many free resources on the internet, one which weve found useful is the following e-book httpsgithub.compluralsightgit-internals-pdfreleases Recommended Git Workflow Once you have a local development tree cloned and working, you can start making changes. You will need to integrate changes from the source tree as you work the following outlines the workflow used by core OpenSubdiv engineers at Pixar and DreamWorks Fork the repository into your own local copy. This can be done via the GitHub website using the fork button. Clone your fork locally git clone your_fork_url OpenSubdiv.your_name e.g. git clone httpsgithub.comyourusernameOpenSubdiv.git OpenSubdiv.yourusername Setup two remotes, origin and upstream . Origin will be setup as a result of cloning your remote repository, but upstream must be setup manually git remote add upstream httpsgithub.comPixarAnimationStudiosOpenSubdiv.git Verify your remotes are setup correctly git remote -v Which should look something like origin httpsgithub.comyourusernameOpenSubdiv.git fetch origin httpsgithub.comyourusernameOpenSubdiv.git push upstream httpsgithub.comPixarAnimationStudiosOpenSubdiv.git fetch upstream httpsgithub.comPixarAnimationStudiosOpenSubdiv.git push Finally, fetch the upstream content this is required for the next step git fetch upstream Setup a new branch for each change. Working with branches in Git is its greatest pleasure, we strongly suggest setting up a new branch for each change which you plan to pull-request. All work is done in the dev branch, so be sure to keep your change in sync with this upstream branch. To begin, start your new branch from the dev branch git checkout -b dev-feature upstreamdev As you are working on your feature, new changes will be merged into the upstream repository, to sync these changes down and preserve your local edits, you can continually rebase your local work git pull --rebase upstream dev Notice the --rebase option here. It updates the current branch to the upstreamdev branch and rebases all edits so they are at the head of your local feature branch. Alternatively, you can rebase all your work at once when your feature is complete. Sending a Pull Request First, rebase and squash your changes appropriately to produce a clean set of changes at the head of your tree. We require changes to be grouped locally to ensure that rolling back changes can be done easily. If youve followed the steps above, your pending change should already be queued up as required. If you have not, you may need to rebase and squash changes at this point. Once the change is clean, push your changes to origin and go to the GitHub website to submit your pull request. Be sure to submit your request against the dev branch. Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n-        \"loc\": \"getting_started.html\"\n+        \"loc\": \"contributing.html\"\n     }, {\n-        \"title\": \"glShareTopology\",\n-        \"text\": \"glShareTopology glShareTopology 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE SYNOPSIS DESCRIPTION OPTIONS SEE ALSO SYNOPSIS glShareTopology  -u   -a   -l refinement level  DESCRIPTION glShareTopology is a stand-alone application that showcases the implementation of topology instancing across Compute contexts. Multiple controls are available to experiment with the algorithms. OPTIONS See the description of the common comand line options for the subset of common options supported here. SEE ALSO Other examples  glViewer , glFVarViewer , glEvalLimit , glStencilViewer , glPtexViewer , glPaintTest , glShareTopology , dxViewer , dxPtexViewer , Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"title\": \"bfr_tutorial_1_1.cpp\",\n+        \"text\": \"bfr_tutorial_1_1.cpp bfr_tutorial_1_1.cpp 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE httpsgithub.comPixarAnimationStudiosOpenSubdivblobreleasetutorialsbfrtutorial_1_1bfr_tutorial_1_1.cpp ------------------------------------------------------------------------------  Tutorial description   This tutorial illustrates the use of the SurfaceFactory, Surface  and Parameterization classes for creating and evaluating the limit  surface associated with each base face of a mesh.   Following the creation of a connected mesh for a shape using a  FarTopologyRefiner, as illustrated in Far tutorials, an instance  of a SurfaceFactory is declared to process its faces. Each face of  the mesh is evaluated and tessellated independently with a simple  triangle fan, with results written out in Obj format for inspection.   These classes make it simple to evaluate and tessellate all faces  quads, tris or others while supporting the full set of subdivision  options. While a triangle fan may be a trivial tessellation and so  not very useful later examples using the Tessellation class provide  more useful results with the same simplicity.  include opensubdivfartopologyRefiner.h include opensubdivbfrrefinerSurfaceFactory.h include opensubdivbfrsurface.h include vector include string include cstring include cstdio  Local headers with support for this tutorial in namespace tutorial include .meshLoader.h include .objWriter.h using namespace OpenSubdiv    Simple command line arguments to provide input and run-time options  class Args  public  std  string inputObjFile  std  string outputObjFile  Sdc  SchemeType schemeType  public  Args  int argc , char  argv   inputObjFile , outputObjFile , schemeType  Sdc  SCHEME_CATMARK   for  int i  1  i  argc   i   if  strstr  argv  i , .obj   if  inputObjFile . empty   inputObjFile  std  string  argv  i   else  fprintf  stderr , Warning Extra Obj file s ignored n  , argv  i    else if   strcmp  argv  i , -o   if   i  argc  outputObjFile  std  string  argv  i   else if   strcmp  argv  i , -bilinear   schemeType  Sdc  SCHEME_BILINEAR   else if   strcmp  argv  i , -catmark   schemeType  Sdc  SCHEME_CATMARK   else if   strcmp  argv  i , -loop   schemeType  Sdc  SCHEME_LOOP   else  fprintf  stderr , Warning Unrecognized argument s ignored n  , argv  i     private  Args       The main tessellation function given a mesh and vertex positions,  tessellate each face -- writing results in Obj format.  void tessellateToObj  Far  TopologyRefiner const  meshTopology , std  vector  float  const  meshVertexPositions , Args const  options     Use simpler local type names for the Surface and its factory  typedef Bfr  RefinerSurfaceFactory  SurfaceFactory  typedef Bfr  Surface  float  Surface    Initialize the SurfaceFactory for the given base mesh very low  cost in terms of both time and space and tessellate each face  independently i.e. no shared vertices   Note that the SurfaceFactory is not thread-safe by default due to  use of an internal cache. Creating a separate instance of the  SurfaceFactory for each thread is one way to safely parallelize  this loop. Another preferred is to assign a thread-safe cache  to the single instance.   First declare any evaluation options when initializing though  none are used in this simple case  SurfaceFactory  Options surfaceOptions  SurfaceFactory meshSurfaceFactory  meshTopology , surfaceOptions    The Surface to be constructed and evaluated for each face -- as  well as the intermediate and output data associated with it -- can  be declared in the scope local to each face. But since dynamic  memory is involved with these variables, it is preferred to declare  them outside that loop to preserve and reuse that dynamic memory.  Surface faceSurface  std  vector  float  facePatchPoints  std  vector  float  outCoords  std  vector  float  outPos , outDu , outDv  std  vector  int  outTriangles    Process each face, writing the output of each in Obj format  tutorial  ObjWriter objWriter  options . outputObjFile  int numFaces  meshSurfaceFactory . GetNumFaces  for  int faceIndex  0  faceIndex  numFaces   faceIndex     Initialize the Surface for this face -- if valid skipping  holes and boundary faces in some rare cases  if   meshSurfaceFactory . InitVertexSurface  faceIndex ,  faceSurface   continue     Get the Parameterization of the Surface and use it to identify  coordinates for evaluation -- in this case, at the vertices  and center of the face to create a fan of triangles  Bfr  Parameterization faceParam  faceSurface . GetParameterization  int faceSize  faceParam . GetFaceSize  int numOutCoords  faceSize  1  outCoords . resize  numOutCoords  2  for  int i  0  i  faceSize   i   faceParam . GetVertexCoord  i ,  outCoords  i  2   faceParam . GetCenterCoord   outCoords  faceSize  2    Prepare the patch points for the Surface, then use them to  evaluate output points for all identified coordinates   Resize patch point and output arrays int pointSize  3  facePatchPoints . resize  faceSurface . GetNumPatchPoints   pointSize  outPos . resize  numOutCoords  pointSize  outDu . resize  numOutCoords  pointSize  outDv . resize  numOutCoords  pointSize   Populate patch point and output arrays faceSurface . PreparePatchPoints  meshVertexPositions . data , pointSize , facePatchPoints . data , pointSize  for  int i  0 , j  0  i  numOutCoords   i , j  pointSize   faceSurface . Evaluate   outCoords  i  2 , facePatchPoints . data , pointSize ,  outPos  j ,  outDu  j ,  outDv  j     Identify the faces of the tessellation, i.e. the triangle fan  connecting points at the vertices to the center last point   Note the need to offset vertex indices for the output faces --  using the number of vertices generated prior to this face.  int objVertexIndexOffset  objWriter . GetNumVertices  outTriangles . resize  faceSize  3  int  outTriangle  outTriangles . data  for  int i  0  i  faceSize   i , outTriangle  3   outTriangle  0   objVertexIndexOffset  i  outTriangle  1   objVertexIndexOffset   i  1   faceSize  outTriangle  2   objVertexIndexOffset  faceSize     Write the evaluated points and faces connecting them as Obj  objWriter . WriteGroupName  baseFace_ , faceIndex  objWriter . WriteVertexPositions  outPos  objWriter . WriteVertexNormals  outDu , outDv  objWriter . WriteFaces  outTriangles , 3 , true , false      Load command line arguments, specified or default geometry and process  int main  int argc , char  argv   Args args  argc , argv  Far  TopologyRefiner  meshTopology  0  std  vector  float  meshVtxPositions  std  vector  float  meshFVarUVs  meshTopology  tutorial  createTopologyRefiner  args . inputObjFile , args . schemeType , meshVtxPositions , meshFVarUVs  if  meshTopology  0   return EXIT_FAILURE   tessellateToObj   meshTopology , meshVtxPositions , args  delete meshTopology  return EXIT_SUCCESS   ------------------------------------------------------------------------------ Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n-        \"loc\": \"glsharetopology.html\"\n+        \"loc\": \"bfr_tutorial_1_1.html\"\n     }, {\n-        \"title\": \"mtlViewer\",\n-        \"text\": \"mtlViewer mtlViewer 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE SYNOPSIS DESCRIPTION KEYBOARD CONTROLS SEE ALSO SYNOPSIS open mtlViewer.app --args  -yup   -u   -a   -l refinement level  objfiles  -catmark   -loop   -bilinear  DESCRIPTION mtlViewer is a stand-alone application that showcases the application of uniform and feature adaptive subdivision schemes to a collection of geometric shapes. Multiple controls are available to experiment with the algorithms. mtlViewer running on macOS mtlViewer running on iOS KEYBOARD CONTROLS q  quit f  fit frame -  increase  decrease tessellation rate SEE ALSO Other examples  glViewer , glFVarViewer , glEvalLimit , glStencilViewer , glPtexViewer , glPaintTest , glShareTopology , dxViewer , dxPtexViewer , Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"title\": \"hbr_tutorial_2.cpp\",\n+        \"text\": \"hbr_tutorial_2.cpp hbr_tutorial_2.cpp 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE httpsgithub.comPixarAnimationStudiosOpenSubdivblobreleasetutorialshbrtutorial_2hbr_tutorial_2.cpp ------------------------------------------------------------------------------  Tutorial description   This tutorial shows how to subdivide uniformly a simple Hbr mesh. We are  building upon previous tutorials and assuming a fully instantiated mesh  we start with an HbrMesh pointer initialized from the same pyramid shape  used in hbr_tutorial_0.   We then apply the Refine function sequentially to all the faces in the  mesh to generate several levels of uniform subdivision. The resulting data  is then dumped to the terminal in Wavefront OBJ format for inspection.  include opensubdivhbrmesh.h include opensubdivhbrcatmark.h include cassert include cstdio ------------------------------------------------------------------------------   For this tutorial, we have to flesh out the Vertex class further. Note that now  the copy constructor, Clear and AddwithWeight methods have been  implemented to interpolate our float3 position data.   This vertex specialization pattern leaves client-code free to implement  arbitrary vertex primvar data schemes or none at all to conserve efficiency  struct Vertex   Hbr minimal required interface ---------------------- Vertex    Vertex  int i    Vertex  Vertex const  src   _position  0   src . _position  0  _position  1   src . _position  1  _position  2   src . _position  2   void Clear  void   0   _position  0   _position  1   _position  2   0.0f   void AddWithWeight  Vertex const  src , float weight   _position  0   weight  src . _position  0  _position  1   weight  src . _position  1  _position  2   weight  src . _position  2   void AddVaryingWithWeight  Vertex const  , float     Public interface ------------------------------------ void SetPosition  float x , float y , float z   _position  0   x  _position  1   y  _position  2   z   const float  GetPosition  const  return _position   private  float _position  3   typedef OpenSubdiv  HbrMesh  Vertex  Hmesh  typedef OpenSubdiv  HbrFace  Vertex  Hface  typedef OpenSubdiv  HbrVertex  Vertex  Hvertex  typedef OpenSubdiv  HbrHalfedge  Vertex  Hhalfedge  Hmesh  createMesh  ------------------------------------------------------------------------------ int main  int , char    Hmesh  hmesh  createMesh  int maxlevel  2 ,  2 levels of subdivision firstface  0 ,  marker to the first face index of level 2 firstvertex  0   marker to the first vertex index of level 2  Refine the mesh to maxlevel for  int level  0  level  maxlevel   level    Total number of faces in the mesh, across all levels   Note this function iterates over the list of faces and can be slow int nfaces  hmesh - GetNumFaces  if  level   maxlevel -1    Save our vertex marker firstvertex  hmesh - GetNumVertices    Iterate over the faces of the current level of subdivision for  int face  firstface  face  nfaces   face   Hface  f  hmesh - GetFace  face   Note hole tags would have to be dealt with here. f - Refine    Save our face index marker for the next level firstface  nfaces     Output OBJ of the highest level refined -----------  Print vertex positions int nverts  hmesh - GetNumVertices  for  int vert  firstvertex  vert  nverts   vert   float const  pos  hmesh - GetVertex  vert  - GetData . GetPosition  printf  v f f f n  , pos  0 , pos  1 , pos  2    Print faces for  int face  firstface  face  hmesh - GetNumFaces   face   Hface  f  hmesh - GetFace  face  assert  f - GetNumVertices   4  printf  f   for  int vert  0  vert  4   vert    OBJ uses 1-based arrays printf  d  , f - GetVertex  vert  - GetID  - firstvertex  1   printf   n      ------------------------------------------------------------------------------  Creates an Hbr mesh   see hbr_tutorial_0 and hbr_tutorial_1 for more details  Hmesh  createMesh    Pyramid geometry from catmark_pyramid.h static float verts  5  3    0.0f , 0.0f , 2.0f ,  0.0f , -2.0f , 0.0f ,  2.0f , 0.0f , 0.0f ,  0.0f , 2.0f , 0.0f ,  -2.0f , 0.0f , 0.0f  static int nverts  5 , nfaces  5  static int facenverts  5    3 , 3 , 3 , 3 , 4  static int faceverts  16    0 , 1 , 2 , 0 , 2 , 3 , 0 , 3 , 4 , 0 , 4 , 1 , 4 , 3 , 2 , 1  OpenSubdiv  HbrCatmarkSubdivision  Vertex   catmark  new OpenSubdiv  HbrCatmarkSubdivision  Vertex   Hmesh  hmesh  new Hmesh  catmark   Populate the vertices Vertex v  for  int i  0  i  nverts   i   v . SetPosition  verts  i  0 , verts  i  1 , verts  i  2  hmesh - NewVertex  i , v    Create the topology int  fv  faceverts  for  int i  0  i  nfaces   i   int nv  facenverts  i  bool valid  true  for  int j  0  j  nv  j    Hvertex const  origin  hmesh - GetVertex  fv  j ,  destination  hmesh - GetVertex  fv  j  1   nv  Hhalfedge const  opposite  destination - GetEdge  origin   Make sure that the vertices exist in the mesh if  origin  NULL  destination  NULL   printf   An edge was specified that connected a nonexistent vertex n   valid  false  break    Check for a degenerate edge if  origin  destination   printf   An edge was specified that connected a vertex to itself n   valid  false  break    Check that no more than 2 faces are adjacent to the edge if  opposite  opposite - GetOpposite    printf   A non-manifold edge incident to more than 2 faces was found n   valid  false  break    Check that the edge is unique and oriented properly if  origin - GetEdge  destination   printf   An edge connecting two vertices was specified more than once.  Its likely that an incident face was flipped n   valid  false  break    if  valid   hmesh - NewFace  nv , fv , 0   else  printf   Skipped face d n  , i   fv  nv   hmesh - SetInterpolateBoundaryMethod  Hmesh  k_InterpolateBoundaryEdgeOnly  hmesh - Finish  return hmesh   ------------------------------------------------------------------------------ Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n-        \"loc\": \"mtlviewer.html\"\n+        \"loc\": \"hbr_tutorial_2.html\"\n     }, {\n-        \"title\": \"Building with CMake\",\n-        \"text\": \"Building with CMake Building with CMake 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE Overview Step 1 Dependencies Required Optional Step 2 Configuring CMake Useful Build Options Environment Variables Automated Script Using Intels C Studio XE Using Clang Step 3 Building Build Targets Compiling  Linking an OpenSubdiv Application Overview Assuming that you have cloned the source repository and selected an appropriate release branch, the following instructions will walk you through the CMake and configuration and build process. CMake is a cross-platform, open-source build system. CMake controls the compilation process using platform independent configuration files in order to generate Makefiles and workspaces that are native to the platform of choice. The process involves the following steps Locate  build the requisite dependencies Configure  run CMake to generate Makefiles  MSVC solution  XCode project Run the build from make  MSVC  XCode Step 1 Dependencies CMake will adapt the build based on which dependencies have been successfully discovered and will disable certain features and code examples accordingly. Please refer to the documentation of each of the dependency packages for specific build and installation instructions. Required CMake version 3.12 Optional Ptex support features for ptex textures and the ptexViewer example Zlib required for Ptex under Windows CUDA TBB OpenCL DX11 SDK GLFW required for standalone examples and some regression tests Docutils required for reST-based documentation Python Pygments required for Docutils reST styling Doxygen Step 2 Configuring CMake One way to configure CMake is to use the CMake GUI . In many cases CMake can fall back on default standard paths in order to find the packages that OpenSubdiv depends on. For non-standard installations however, a complete set of override variables is available. The following sub-section lists some of these variables. For more specific details, please consult the source of the custom CMake modules in the OpenSubdivcmake folder. Useful Build Options The following configuration arguments can be passed to the CMake command line. - DCMAKE_BUILD_TYPE   Debug  Release  - DCMAKE_INSTALL_PREFIX   base path to install OpenSubdiv  default  Current directory  - DCMAKE_LIBDIR_BASE   library directory basename  default  lib  - DCMAKE_PREFIX_PATH   semicolon - separated list of directories specifying installation prefixes to be searched by the find_package  command  default  empty list  - DCUDA_TOOLKIT_ROOT_DIR   path to CUDA  - DOSD_CUDA_NVCC_FLAGS   CUDA options , e . g . -- gpu - architecture  - DPTEX_LOCATION   path to Ptex  - DGLFW_LOCATION   path to GLFW  - DICC_LOCATION   path to Intel  s C  Studio XE  - DNO_LIB  1  disable the opensubdiv libs build caveat emptor - DNO_EXAMPLES  1  disable examples build - DNO_TUTORIALS  1  disable tutorials build - DNO_REGRESSION  1  disable regression tests build - DNO_PTEX  1  disable PTex support - DNO_DOC  1  disable documentation build - DNO_OMP  1  disable OpenMP - DNO_TBB  1  disable TBB - DNO_CUDA  1  disable CUDA - DNO_OPENCL  1  disable OpenCL - DNO_OPENGL  1  disable OpenGL - DNO_CLEW  1  disable CLEW wrapper library Environment Variables The paths to Ptex, GLFW, other dependencies can also be specified through the following environment variables PTEX_LOCATION , GLFW_LOCATION Automated Script The GUI solution will probably become a burden for active developpers who tend to re-run the configuration step fairly often. A scripted solution can save a lot of time. Here is a typical workflow git clone https  github.comPixarAnimationStudiosOpenSubdiv.git folder cd  folder  mkdir build cd build source ..  ..  cmake_setup Where cmake_setup is a configuration script. Here is an example CMake configuration script for a full typical windows-based build that can be run in GitShell  bintcsh  Replace the .. with a full path to the root of the OpenSubdiv source tree if necessary cProgram Files x86CMake 2.8bincmake.exe  - G Visual Studio 15 2017 Win64  - D GLFW_LOCATIONstringcProgram Filesglfw-2.7.7.bin.WIN64  - D OPENCL_INCLUDE_DIRSstringcProgramDataNVIDIA CorporationNVIDIA GPU Computing SDK 4.2OpenCLcommoninc  - D _OPENCL_CPP_INCLUDE_DIRSstringcProgramDataNVIDIA CorporationNVIDIA GPU Computing SDK 4.2OpenCLcommoninc  - D OPENCL_LIBRARIESstringcProgramDataNVIDIA CorporationNVIDIA GPU Computing SDK 4.2OpenCLcommonlibx64OpenCL.lib  - D PTEX_LOCATIONstringcUsersopensubdivdemosrcptexx64  ..  copy Ptex dependencies Windows only mkdir - p bin   Debug , Release   cp - f c  Users  opensubdiv  demo  src  zlib -1.2.7  contrib  vstudio  vc10  x64  ZlibDllRelease  zlibwapi . dll bin  Debug   cp - f c  Users  opensubdiv  demo  src  zlib -1.2.7  contrib  vstudio  vc10  x64  ZlibDllRelease  zlibwapi . dll bin  Release   cp - f c  Users  opensubdiv  demo  src  ptex  x64  lib  Ptex . dll bin  Debug   cp - f c  Users  opensubdiv  demo  src  ptex  x64  lib  Ptex . dll bin  Release  Important Notice that the following scripts start by recursively removing the ..build and ..inst directories. Make sure you modify them to suit your build workflow. Here is a similar script for Nix-based platforms echo  Removing build cd .. rm - rf build  inst   mkdir build  cd build  echo  Running cmake cmake - DPTEX_LOCATION  home  opensubdiv  dev  opensource  ptex  install  - DGLFW_LOCATION  home  opensubdiv  dev  opensource  glfw  build  - DDOXYGEN_EXECUTABLE  home  opensubdiv  dev  opensource  doxygen  inst  bin  doxygen  - DCMAKE_INSTALL_PREFIX  ..  inst  - DCMAKE_BUILD_TYPE  Debug  .. Here is a similar script for macOS echo  Removing build cd .. rm - rf build  inst   mkdir build  cd build  echo  Running cmake cmake - DOPENGL_INCLUDE_DIR  Applications  Xcode . app  Contents  Developer  Platforms  MacOSX . platform  Developer  SDKs  MacOSX10 .9 . sdk  System  Library  Frameworks  OpenGL . framework  Headers  - DGLFW_LOCATION  Users  opensubdiv  dev  opensource  glfw  inst  - DNO_OMP  1 - DNO_REGRESSION  0  - DCMAKE_INSTALL_PREFIX  ..  inst  - DCMAKE_BUILD_TYPE  Debug  ..  Using Intels C Studio XE OpenSubdiv can be also be built with Intels C compiler icc. The default compiler can be overriden in CMake with the following configuration options - DCMAKE_CXX_COMPILER   path to icc executable  - DCMAKE_C_COMPILER   path to icc executable  The installation location of the C Studio XE can be overriden with - DICC_LOCATION   path to Intel  s C  Studio XE  Using Clang CMake can also be overriden to use the clang compilers by configuring the following options - DCMAKE_CXX_COMPILER  clang   - DCMAKE_C_COMPILER  clang  Step 3 Building CMake provides a cross-platform command-line build cmake -- build . -- target install -- config Release Alternatively, you can use native toolkits to launch the build. The steps differ for each OS Windows  launch VC with the solution generated by CMake in your build directory. macOS  launch Xcode with the xcodeproj generated by CMake in your build directory Nix  run make in your build directory - use the clean target to remove previous build results - use VERBOSE1 for verbose build output Build Targets Makefile-based builds allow the use of named target. Here are some of the more useful target names osd_staticdynamic_CPUGPU The core components of the OpenSubdiv libraries example_name Builds specific code examples by name glViewer, ptexViewer... doc Builds ReST and doxygen documentation doc_html Builds ReST documentation doc_doxy Builds Doxygen documentation Compiling  Linking an OpenSubdiv Application Here are example commands for building an OpenSubdiv application on several architectures Linux g -IOPENSUBDIVinclude -c myapp.cpp g myapp.o -LOPENSUBDIVlib -losdGPU -losdCPU -o myapp macOS g -IOPENSUBDIVinclude -c myapp.cpp g myapp.o -LOPENSUBDIVlib -losdGPU -losdCPU -o myapp install_name_tool -add_rpath OPENSUBDIVlib myapp On 64-bit OS-X add -m64 after each g . Windows cl nologo MT TP DWIN32 IOPENSUBDIVinclude -c myapp.cpp link nologo outmyapp.exe LIBPATHOPENSUBDIVlib libosdGPU.lib libosdCPU.lib myapp.obj Note HBR uses the offsetof macro on a templated struct, which appears to spurriously set off a warning in both gcc and Clang. It is recommended to turn the warning off with the -Wno-invalid-offsetof flag. Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"title\": \"Overview of Release 3.6\",\n+        \"text\": \"Overview of Release 3.6 Overview of Release 3.6 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE New Features Modern Graphics APIs and Parallel Computation Updated Third-party APIs and Tools API Additions Additions to OsdPatchShaderSource Osd extensions for patch evaluation from client shaders and compute kernels Other Changes Deprecation Announcements Improvements Bug Fixes New Features The purpose of this release is to address concerns which improve support for current typical use cases and provide support for significant new use cases. Modern Graphics APIs and Parallel Computation OpenSubdiv is organized as a set of components for working with subdivision surface representations, i.e. Bfr, Far, Vtr, Sdc along with a collection of back-end components in Osd supporting the use of specific low-level subsystems to work with subdivision surface data. These back-end components in Osd have taken many forms including in some cases specific complete GPU shaders along with controller classes to manage compilation and execution of these shaders. In practice it has been more effective for Osd to simply supply the functions needed to operate on subdivision surface data, allowing the client application or client library to take care of using these functions from client provided shaders and computation kernels using client provided execution controllers. This has been the direction for the Osd library for some time and the changes implemented in this release make this even more straightforward. The existing methods OsdGLSLPatchShaderSourceGetPatchBasisShaderSource OsdHLSLPatchShaderSourceGetPatchBasisShaderSource OsdMTLPatchShaderSourceGetPatchBasisShaderSource continue to return shader source strings at runtime which contain definitions and functions allowing client shader code to evaluate values and first and second derivatives on the piecewise parametric patches resulting from subdivison refinement. The identical code is now available at compile time as opensubdivosdpatchBasis.h and is essentially a shader interface that can be used from client kernels including those implemented using TBB, CUDA, C, etc. Similarly, the new methods OsdGLSLPatchShaderSourceGetPatchDrawingShaderSource OsdHLSLPatchShaderSourceGetPatchDrawingShaderSource OsdMTLPatchShaderSourceGetPatchDrawingShaderSource return shader source strings at runtime which contain definitions and functions allowing clients to draw the piecewise parametric patches resulting from subdivision, e.g. using GPU tessellation shaders or GPU mesh shaders. The returned shader source has been stripped of resource binding and other potentially problematic defintions since these are usually best handled by client shader code. These methods have been tested successfully with new client code using Vulkan and DirectX 12 in addition to existing client code using OpenGL, Metal, DirectX 11, etc. Updated Third-party APIs and Tools While the methods described above will be the most effective way to use OpenSubdiv, some of the existing back-end components have been updated to accommodate evolving third-party APIs and tools. Specifically, the TBB implementation has been updated to allow use with the oneTBB API while continuing to maintain compatibility with earlier releases of TBB. Also, there have been minor fixes to the CMake build to accommodate using the Ninja build system and also systems with OpenCL 3.0. API Additions See associated Doxygen for full details. Additions to OsdPatchShaderSource GLSLPatchShaderSourceGetPatchDrawingShaderSource HLSLPatchShaderSourceGetPatchDrawingShaderSource MTLPatchShaderSourceGetPatchDrawingShaderSource Osd extensions for patch evaluation from client shaders and compute kernels struct OsdPatchArray and OsdPatchArrayInit struct OsdPatchCoord and OsdPatchCoordInit struct OsdPatchParam and OsdPatchParamInit OsdPatchParamGetFaceId OsdPatchParamGetU OsdPatchParamGetV OsdPatchParamGetTransition OsdPatchParamGetBoundary OsdPatchParamGetNonQuadRoot OsdPatchParamGetDepth OsdPatchParamGetParamFraction OsdPatchParamIsRegular OsdPatchParamIsTriangleRotated OsdPatchParamNormalize OsdPatchParamUnnormalize OsdPatchParamNormalizeTriangle OsdPatchParamUnnormalizeTriangle OsdEvaluatePatchBasisNormalized OsdEvaluatePatchBasis Other Changes Deprecation Announcements The methods OsdTbbEvaluatorSetNumThreads and OsdOmpEvaluatorSetNumThreads have been marked deprecated. Improvements Updated Osd patch drawing shader source to exclude legacy shader constructs to improve compatibility with Vulkan, DX12, etc. GitHub 1320 Installed Osd patch evaluation headers to allow use from client shaders and compute kernels GitHub 1321 Updated CMake build to locate TBB using TBBs CMake config in order to support oneTBB GitHub 1319 Updated CMake FindOpenCL module to support parsing version information from recent OpenCL headers GitHub 1322 Removed obsolete .travis.yml GitHub 1324 Bug Fixes Fixed inconsistent warning levels for MSVC builds when using Ninja GitHub 1318 Fixed documentation build errors when using Ninja GitHub 1323 Fixed build errors resulting from oneTBB API changes GitHub 1317 Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n-        \"loc\": \"cmake_build.html\"\n+        \"loc\": \"release_36.html\"\n     }, {\n-        \"title\": \"glFVarViewer\",\n-        \"text\": \"glFVarViewer glFVarViewer 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE SYNOPSIS DESCRIPTION OPTIONS SEE ALSO SYNOPSIS glFVarViewer  -f   -u   -a   -l refinement level   -c animation loops  objfiles  -catmark   -loop   -bilinear  DESCRIPTION glFVarViewer is a stand-alone application that allows the inspection of face-varying data interpolation. The window displays 2 views left side regular 3D view of the model, with a procedural u,v texture right side a 2D view of the face-varying u,v pair The HUD allows interactive manipulation of the various face-varying boundary interpolation rules and tags. OPTIONS See the description of the common comand line options for the subset of common options supported here. SEE ALSO Other examples  glViewer , glFVarViewer , glEvalLimit , glStencilViewer , glPtexViewer , glPaintTest , glShareTopology , dxViewer , dxPtexViewer , Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"title\": \"far_tutorial_3_1.cpp\",\n+        \"text\": \"far_tutorial_3_1.cpp far_tutorial_3_1.cpp 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE httpsgithub.comPixarAnimationStudiosOpenSubdivblobreleasetutorialsfartutorial_3_1far_tutorial_3_1.cpp ------------------------------------------------------------------------------  Tutorial description   This tutorial shows how to interface a high-level topology representation  with Far for better efficiency. In tutorial 0, we showed how to instantiate  topology from a simple face-vertex list. Here we will show how to take  advantage of more complex data structures.   Many client applications that manipulate geometry use advanced data structures  such as half-edge, quad-edge or winged-edge in order to represent complex  topological relationships beyond the usual face-vertex lists. We can take  advantage of this information.   Far provides an advanced interface that allows such a client application to  communicate advanced component relationships directly and avoid having Far  rebuilding them redundantly.  include opensubdivfartopologyRefinerFactory.h include opensubdivfarprimvarRefiner.h include cstdio ------------------------------------------------------------------------------ using namespace OpenSubdiv  ------------------------------------------------------------------------------   For this tutorial, we provide the complete topological representation of a  simple pyramid. In our case, we store it as a simple sequence of integers,  with the understanding that client-code would provide a fully implemented  data-structure such as quad-edges or winged-edges.   Pyramid geometry from catmark_pyramid.h - extended for this tutorial  static int g_nverts  5 , g_nedges  8 , g_nfaces  5   vertex positions static float g_verts  5  3    0.0f , 0.0f , 2.0f ,  0.0f , -2.0f , 0.0f ,  2.0f , 0.0f , 0.0f ,  0.0f , 2.0f , 0.0f ,  -2.0f , 0.0f , 0.0f   number of vertices in each face static int g_facenverts  5    3 , 3 , 3 , 3 , 4   index of face vertices static int g_faceverts  16    0 , 1 , 2 , 0 , 2 , 3 , 0 , 3 , 4 , 0 , 4 , 1 , 4 , 3 , 2 , 1   index of edge vertices 2 per edge static int g_edgeverts  16    0 , 1 , 1 , 2 , 2 , 0 , 2 , 3 , 3 , 0 , 3 , 4 , 4 , 0 , 4 , 1   index of face edges static int g_faceedges  16    0 , 1 , 2 , 2 , 3 , 4 , 4 , 5 , 6 , 6 , 7 , 0 , 5 , 3 , 1 , 7   number of faces adjacent to each edge static int g_edgenfaces  8    2 , 2 , 2 , 2 , 2 , 2 , 2 , 2   index of faces incident to a given edge static int g_edgefaces  16    0 , 3 , 0 , 4 , 0 , 1 , 1 , 4 , 1 , 2 , 2 , 4 , 2 , 3 , 3 , 4   number of faces incident to each vertex static int g_vertexnfaces  5    4 , 3 , 3 , 3 , 3   index of faces incident to each vertex static int g_vertexfaces  25    0 , 1 , 2 , 3 , 0 , 3 , 4 , 0 , 4 , 1 , 1 , 4 , 2 , 2 , 4 , 3   number of edges incident to each vertex static int g_vertexnedges  5    4 , 3 , 3 , 3 , 3   index of edges incident to each vertex static int g_vertexedges  25    0 , 2 , 4 , 6 , 1 , 0 , 7 , 2 , 1 , 3 , 4 , 3 , 5 , 6 , 5 , 7   Edge crease sharpness static float g_edgeCreases  8    0.0f , 2.5f , 0.0f , 2.5f , 0.0f , 2.5f , 0.0f , 2.5f  ------------------------------------------------------------------------------   Because existing client-code may not provide an exact match for the  topological queries required by Fars interface, we can provide a converter  class. This can be particularly useful for instance if the client  data-structure requires additional relationships to be mapped. For instance,  half-edge representations do not store unique edge indices and it can be  difficult to traverse edges or faces adjacent to a given vertex.   Using an intermediate wrapper class allows us to leverage existing  relationships information from a mesh, and generate the missing components  temporarily.   For a practical example, you can look at the file hbr_to_vtr.h in the same  tutorial directory. This example implements a OsdHbrConverter class as a  way of interfacing PRmans half-edge representation to Far.  struct Converter  public  Sdc  SchemeType GetType  const  return Sdc  SCHEME_CATMARK   Sdc  Options GetOptions  const  Sdc  Options options  options . SetVtxBoundaryInterpolation  Sdc  Options  VTX_BOUNDARY_EDGE_ONLY  return options   int GetNumFaces  const  return g_nfaces   int GetNumEdges  const  return g_nedges   int GetNumVertices  const  return g_nverts     Face relationships  int GetNumFaceVerts  int face  const  return g_facenverts  face   int const  GetFaceVerts  int face  const  return g_faceverts  getCompOffset  g_facenverts , face   int const  GetFaceEdges  int face  const  return g_faceedges  getCompOffset  g_facenverts , face     Edge relationships  int const  GetEdgeVertices  int edge  const  return g_edgeverts  edge  2   int GetNumEdgeFaces  int edge  const  return g_edgenfaces  edge   int const  GetEdgeFaces  int edge  const  return g_edgefaces  getCompOffset  g_edgenfaces , edge     Vertex relationships  int GetNumVertexEdges  int vert  const  return g_vertexnedges  vert   int const  GetVertexEdges  int vert  const  return g_vertexedges  getCompOffset  g_vertexnedges , vert   int GetNumVertexFaces  int vert  const  return g_vertexnfaces  vert   int const  GetVertexFaces  int vert  const  return g_vertexfaces  getCompOffset  g_vertexnfaces , vert   private  int getCompOffset  int const  comps , int comp  const  int ofs  0  for  int i  0  i  comp   i   ofs  comps  i   return ofs    ------------------------------------------------------------------------------ namespace OpenSubdiv  namespace OPENSUBDIV_VERSION  namespace Far  template  bool TopologyRefinerFactory  Converter  resizeComponentTopology  TopologyRefiner  refiner , Converter const  conv    Faces and face-verts int nfaces  conv . GetNumFaces  setNumBaseFaces  refiner , nfaces  for  int face  0  face  nfaces   face   int nv  conv . GetNumFaceVerts  face  setNumBaseFaceVertices  refiner , face , nv    Edges and edge-faces int nedges  conv . GetNumEdges  setNumBaseEdges  refiner , nedges  for  int edge  0  edge  nedges   edge   int nf  conv . GetNumEdgeFaces  edge  setNumBaseEdgeFaces  refiner , edge , nf    Vertices and vert-faces and vert-edges int nverts  conv . GetNumVertices  setNumBaseVertices  refiner , nverts  for  int vert  0  vert  nverts   vert   int ne  conv . GetNumVertexEdges  vert , nf  conv . GetNumVertexFaces  vert  setNumBaseVertexEdges  refiner , vert , ne  setNumBaseVertexFaces  refiner , vert , nf   return true   template  bool TopologyRefinerFactory  Converter  assignComponentTopology  TopologyRefiner  refiner , Converter const  conv   using Far  IndexArray    Face relations int nfaces  conv . GetNumFaces  for  int face  0  face  nfaces   face   IndexArray dstFaceVerts  getBaseFaceVertices  refiner , face  IndexArray dstFaceEdges  getBaseFaceEdges  refiner , face  int const  faceverts  conv . GetFaceVerts  face  int const  faceedges  conv . GetFaceEdges  face  for  int vert  0  vert  conv . GetNumFaceVerts  face   vert   dstFaceVerts  vert   faceverts  vert  dstFaceEdges  vert   faceedges  vert       Edge relations   Note if your representation is unable to provide edge relationships  ex half-edges, you can comment out this section and Far will  automatically generate the missing information.  int nedges  conv . GetNumEdges  for  int edge  0  edge  nedges   edge    Edge-vertices IndexArray dstEdgeVerts  getBaseEdgeVertices  refiner , edge  dstEdgeVerts  0   conv . GetEdgeVertices  edge  0  dstEdgeVerts  1   conv . GetEdgeVertices  edge  1   Edge-faces IndexArray dstEdgeFaces  getBaseEdgeFaces  refiner , edge  for  int face  0  face  conv . GetNumEdgeFaces  face   face   dstEdgeFaces  face   conv . GetEdgeFaces  edge  face       Vertex relations int nverts  conv . GetNumVertices  for  int vert  0  vert  nverts   vert    Vert-Faces IndexArray vertFaces  getBaseVertexFaces  refiner , vert  LocalIndexArray vertInFaceIndices  getBaseVertexFaceLocalIndicesrefiner, vert for  int face  0  face  conv . GetNumVertexFaces  vert   face   vertFaces  face   conv . GetVertexFaces  vert  face    Vert-Edges IndexArray vertEdges  getBaseVertexEdges  refiner , vert  LocalIndexArray vertInEdgeIndices  getBaseVertexEdgeLocalIndicesrefiner, vert for  int edge  0  edge  conv . GetNumVertexEdges  vert   edge   vertEdges  edge   conv . GetVertexEdges  vert  edge     populateBaseLocalIndices  refiner  return true   template  bool TopologyRefinerFactory  Converter  assignComponentTags  TopologyRefiner  refiner , Converter const  conv    arbitrarily sharpen the 4 bottom edges of the pyramid to 2.5f for  int edge  0  edge  conv . GetNumEdges   edge   setBaseEdgeSharpness  refiner , edge , g_edgeCreases  edge   return true   ifdef _MSC_VER template  void TopologyRefinerFactory  Converter  reportInvalidTopology  TopologyError  errCode  , char const  msg , Converter const   mesh      Optional topology validation error reporting  This method is called whenever the factory encounters topology validation  errors. By default, nothing is reported  Warning  msg   template  bool TopologyRefinerFactory  Converter  assignFaceVaryingTopology  TopologyRefiner   refiner  , Converter const   conv     Because of the way MSVC specializes templated functions, we had to  remove the default stubs in FarTopologyRefinerFactory. In this  example, no face-varying data is being added, but we still need to  implement a template specialization or MSVC linker fails. return true   endif   namespace Far   namespace OPENSUBDIV_VERSION   namespace OpenSubdiv ------------------------------------------------------------------------------   Vertex container implementation.  struct Vertex   Minimal required interface ---------------------- Vertex    Vertex  Vertex const  src   _position  0   src . _position  0  _position  1   src . _position  1  _position  2   src . _position  2   void Clear  void   0   _position  0   _position  1   _position  2   0.0f   void AddWithWeight  Vertex const  src , float weight   _position  0   weight  src . _position  0  _position  1   weight  src . _position  1  _position  2   weight  src . _position  2    Public interface ------------------------------------ void SetPosition  float x , float y , float z   _position  0   x  _position  1   y  _position  2   z   const float  GetPosition  const  return _position   private  float _position  3   ------------------------------------------------------------------------------ int main  int , char    Converter conv  Far  TopologyRefiner  refiner  Far  TopologyRefinerFactory  Converter  Create  conv , Far  TopologyRefinerFactory  Converter  Options  conv . GetType , conv . GetOptions  int maxlevel  5   Uniformly refine the topology up to maxlevel refiner - RefineUniform  Far  TopologyRefiner  UniformOptions  maxlevel   Allocate a buffer for vertex primvar data. The buffer length is set to  be the sum of all children vertices up to the highest level of refinement. std  vector  Vertex  vbuffer  refiner - GetNumVerticesTotal  Vertex  verts   vbuffer  0   Initialize coarse mesh positions int nCoarseVerts  g_nverts  for  int i  0  i  nCoarseVerts   i   verts  i . SetPosition  g_verts  i  0 , g_verts  i  1 , g_verts  i  2    Interpolate vertex primvar data Far  PrimvarRefiner primvarRefiner   refiner  Vertex  src  verts  for  int level  1  level  maxlevel   level   Vertex  dst  src  refiner - GetLevel  level -1 . GetNumVertices  primvarRefiner . Interpolate  level , src , dst  src  dst     Output OBJ of the highest level refined ----------- Far  TopologyLevel const  refLastLevel  refiner - GetLevel  maxlevel  int nverts  refLastLevel . GetNumVertices  int nfaces  refLastLevel . GetNumFaces   Print vertex positions int firstOfLastVerts  refiner - GetNumVerticesTotal  - nverts  for  int vert  0  vert  nverts   vert   float const  pos  verts  firstOfLastVerts  vert . GetPosition  printf  v f f f n  , pos  0 , pos  1 , pos  2    Print faces for  int face  0  face  nfaces   face   Far  ConstIndexArray fverts  refLastLevel . GetFaceVertices  face   all refined Catmark faces should be quads assert  fverts . size   4  printf  f   for  int vert  0  vert  fverts . size   vert   printf  d  , fverts  vert   1   OBJ uses 1-based arrays...  printf   n     delete refiner  return EXIT_SUCCESS   ------------------------------------------------------------------------------ Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n-        \"loc\": \"glfvarviewer.html\"\n+        \"loc\": \"far_tutorial_3_1.html\"\n     }, {\n-        \"title\": \"bfr_tutorial_2_2.cpp\",\n-        \"text\": \"bfr_tutorial_2_2.cpp bfr_tutorial_2_2.cpp 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE httpsgithub.comPixarAnimationStudiosOpenSubdivblobreleasetutorialsbfrtutorial_2_2bfr_tutorial_2_2.cpp ------------------------------------------------------------------------------  Tutorial description   This tutorial builds on others using the SurfaceFactory, Surface  and Tessellation classes by using more of the functionality of the  Tessellation class to construct a tessellation of the mesh that is  topologically watertight, i.e. resulting points evaluated along  shared edges or vertices are shared and not duplicated.   Since Tessellation provides points around its boundary first, the  evaluated points for shared vertices and edges are identified when  constructed and reused when shared later. The boundary of the  tessellation of a face is therefore a collection of shared points  and methods of Tessellation help to remap the faces generated to  the shared set of points.  include opensubdivfartopologyRefiner.h include opensubdivbfrrefinerSurfaceFactory.h include opensubdivbfrsurface.h include opensubdivbfrtessellation.h include vector include string include cstring include cstdio include cassert  Local headers with support for this tutorial in namespace tutorial include .meshLoader.h include .objWriter.h using namespace OpenSubdiv  using Far  Index  using Far  IndexArray  using Far  ConstIndexArray    Simple command line arguments to provide input and run-time options  class Args  public  std  string inputObjFile  std  string outputObjFile  Sdc  SchemeType schemeType  int tessUniformRate  bool tessQuadsFlag  public  Args  int argc , char  argv   inputObjFile , outputObjFile , schemeType  Sdc  SCHEME_CATMARK , tessUniformRate  5 , tessQuadsFlag  false   for  int i  1  i  argc   i   if  strstr  argv  i , .obj   if  inputObjFile . empty   inputObjFile  std  string  argv  i   else  fprintf  stderr , Warning Extra Obj file s ignored n  , argv  i    else if   strcmp  argv  i , -o   if   i  argc  outputObjFile  std  string  argv  i   else if   strcmp  argv  i , -bilinear   schemeType  Sdc  SCHEME_BILINEAR   else if   strcmp  argv  i , -catmark   schemeType  Sdc  SCHEME_CATMARK   else if   strcmp  argv  i , -loop   schemeType  Sdc  SCHEME_LOOP   else if   strcmp  argv  i , -res   if   i  argc  tessUniformRate  atoi  argv  i   else if   strcmp  argv  i , -quads   tessQuadsFlag  true   else  fprintf  stderr , Warning Unrecognized argument s ignored n  , argv  i     private  Args       Simple local structs supporting shared points for vertices and edges  namespace  struct SharedVertex  SharedVertex   pointIndex  -1    bool IsSet  const  return pointIndex  0   void Set  int index   pointIndex  index   int pointIndex   struct SharedEdge  SharedEdge   pointIndex  -1 , numPoints  0    bool IsSet  const  return pointIndex  0   void Set  int index , int n   pointIndex  index , numPoints  n   int pointIndex  int numPoints     end namespace   The main tessellation function given a mesh and vertex positions,  tessellate each face -- writing results in Obj format.   This tessellation function differs from earlier tutorials in that it  computes and reuses shared points at vertices and edges of the mesh.  There are several ways to compute these shared points, and which is  best depends on context.   Dealing with shared data poses complications for threading in general,  so computing all points for the vertices and edges up front may be  preferred -- despite the fact that faces will be visited more than once  first when generating potentially shared vertex or edge points, and  later when generating any interior points. The loops for vertices and  edges can be threaded and the indexing of the shared points is simpler.   For the single-threaded case here, the faces are each processed in  order and any shared points will be computed and used as needed. So  each face is visited once and so each Surface initialized once but  the bookkeeping to deal with indices of shared points becomes more  complicated.  void tessellateToObj  Far  TopologyRefiner const  meshTopology , std  vector  float  const  meshVertexPositions , Args const  options     Use simpler local type names for the Surface and its factory  typedef Bfr  RefinerSurfaceFactory  SurfaceFactory  typedef Bfr  Surface  float  Surface    Initialize the SurfaceFactory for the given base mesh very low  cost in terms of both time and space and tessellate each face  independently i.e. no shared vertices   Note that the SurfaceFactory is not thread-safe by default due to  use of an internal cache. Creating a separate instance of the  SurfaceFactory for each thread is one way to safely parallelize  this loop. Another preferred is to assign a thread-safe cache  to the single instance.   First declare any evaluation options when initializing though  none are used in this simple case  SurfaceFactory  Options surfaceOptions  SurfaceFactory meshSurfaceFactory  meshTopology , surfaceOptions    The Surface to be constructed and evaluated for each face -- as  well as the intermediate and output data associated with it -- can  be declared in the scope local to each face. But since dynamic  memory is involved with these variables, it is preferred to declare  them outside that loop to preserve and reuse that dynamic memory.  Surface faceSurface  std  vector  float  facePatchPoints  std  vector  float  outCoords  std  vector  float  outPos , outDu , outDv  std  vector  int  outFacets    Assign Tessellation Options applied for all faces. Tessellations  allow the creating of either 3- or 4-sided faces -- both of which  are supported here via a command line option  int const tessFacetSize  3  options . tessQuadsFlag  Bfr  Tessellation  Options tessOptions  tessOptions . SetFacetSize  tessFacetSize  tessOptions . PreserveQuads  options . tessQuadsFlag    Declare vectors to identify shared tessellation points at vertices  and edges and their indices around the boundary of a face  Far  TopologyLevel const  baseLevel  meshTopology . GetLevel  0  std  vector  SharedVertex  sharedVerts  baseLevel . GetNumVertices  std  vector  SharedEdge  sharedEdges  baseLevel . GetNumEdges  std  vector  int  tessBoundaryIndices    Process each face, writing the output of each in Obj format  tutorial  ObjWriter objWriter  options . outputObjFile  int numMeshPointsEvaluated  0  int numFaces  meshSurfaceFactory . GetNumFaces  for  int faceIndex  0  faceIndex  numFaces   faceIndex     Initialize the Surface for this face -- if valid skipping  holes and boundary faces in some rare cases  if   meshSurfaceFactory . InitVertexSurface  faceIndex ,  faceSurface   continue     Declare a simple uniform Tessellation for the Parameterization  of this face and identify coordinates of the points to evaluate  Bfr  Tessellation tessPattern  faceSurface . GetParameterization , options . tessUniformRate , tessOptions  int numOutCoords  tessPattern . GetNumCoords  outCoords . resize  numOutCoords  2  tessPattern . GetCoords  outCoords . data    Prepare the patch points for the Surface, then use them to  evaluate output points for all identified coordinates   Resize patch point and output arrays int pointSize  3  facePatchPoints . resize  faceSurface . GetNumPatchPoints   pointSize  outPos . resize  numOutCoords  pointSize  outDu . resize  numOutCoords  pointSize  outDv . resize  numOutCoords  pointSize   Populate the patch point array faceSurface . PreparePatchPoints  meshVertexPositions . data , pointSize , facePatchPoints . data , pointSize    Evaluate the sample points of the Tessellation   First traverse the boundary of the face to determine whether  to evaluate or share points on vertices and edges of the face.  Both pre-existing and new boundary points are identified by  index in an array for later use. The interior points are all  trivially computed after the boundary is dealt with.   Identify the boundary and interior coords and initialize the  index array for the potentially shared boundary points  int numBoundaryCoords  tessPattern . GetNumBoundaryCoords  int numInteriorCoords  numOutCoords - numBoundaryCoords  float const  tessBoundaryCoords   outCoords  0  float const  tessInteriorCoords   outCoords  numBoundaryCoords  2  ConstIndexArray fVerts  baseLevel . GetFaceVertices  faceIndex  ConstIndexArray fEdges  baseLevel . GetFaceEdges  faceIndex  tessBoundaryIndices . resize  numBoundaryCoords    Walk around the face, inspecting each vertex and outgoing edge,  and populating the index array of boundary points  float  patchPointData  facePatchPoints . data  int boundaryIndex  0  int numFacePointsEvaluated  0  for  int i  0  i  fVerts . size   i   Index vertIndex  fVerts  i  Index edgeIndex  fEdges  i  int edgeRate  options . tessUniformRate    Evaluateassign or retrieve the shared point for the vertex  SharedVertex  sharedVertex  sharedVerts  vertIndex  if   sharedVertex . IsSet    Identify indices of the new shared point in both the  mesh and face and increment their inventory int indexInMesh  numMeshPointsEvaluated   int indexInFace  numFacePointsEvaluated   sharedVertex . Set  indexInMesh   Evaluate new shared point and assign index to boundary float const  uv   tessBoundaryCoords  boundaryIndex  2  int pIndex  indexInFace  pointSize  faceSurface . Evaluate  uv , patchPointData , pointSize ,  outPos  pIndex ,  outDu  pIndex ,  outDv  pIndex  tessBoundaryIndices  boundaryIndex    indexInMesh   else   Assign shared vertex point index to boundary tessBoundaryIndices  boundaryIndex    sharedVertex . pointIndex     Evaluateassign or retrieve all shared points for the edge   To keep this simple, assume the edge is manifold. So the  second face sharing the edge has that edge in the opposite  direction in its boundary relative to the first face --  making it necessary to reverse the order of shared points  for the boundary of the second face.   To support a non-manifold edge, all subsequent faces that  share the assigned shared edge must determine if their  orientation of that edge is reversed relative to the first  face for which the shared edge points were evaluated. So a  little more book-keeping andor inspection is required.  if  edgeRate  1   int pointsPerEdge  edgeRate - 1  SharedEdge  sharedEdge  sharedEdges  edgeIndex  if   sharedEdge . IsSet    Identify indices of the new shared points in both the  mesh and face and increment their inventory int nextInMesh  numMeshPointsEvaluated  int nextInFace  numFacePointsEvaluated  numFacePointsEvaluated  pointsPerEdge  numMeshPointsEvaluated  pointsPerEdge  sharedEdge . Set  nextInMesh , pointsPerEdge   Evaluate shared points and assign indices to boundary float const  uv   tessBoundaryCoords  boundaryIndex  2  for  int j  0  j  pointsPerEdge   j , uv  2   int pIndex   nextInFace    pointSize  faceSurface . Evaluate  uv , patchPointData , pointSize ,  outPos  pIndex ,  outDu  pIndex ,  outDv  pIndex  tessBoundaryIndices  boundaryIndex    nextInMesh     else   See note above on simplification for manifold edges assert   baseLevel . IsEdgeNonManifold  edgeIndex   Assign shared points to boundary in reverse order int nextInMesh  sharedEdge . pointIndex  pointsPerEdge - 1  for  int j  0  j  pointsPerEdge   j   tessBoundaryIndices  boundaryIndex    nextInMesh --        Evaluate any interior points unique to this face -- appending  them to those shared points computed above for the boundary  if  numInteriorCoords   float const  uv  tessInteriorCoords  int iLast  numFacePointsEvaluated  numInteriorCoords  for  int i  numFacePointsEvaluated  i  iLast   i , uv  2   int pIndex  i  pointSize  faceSurface . Evaluate  uv , patchPointData , pointSize ,  outPos  pIndex ,  outDu  pIndex ,  outDv  pIndex   numFacePointsEvaluated  numInteriorCoords  numMeshPointsEvaluated  numInteriorCoords     Remember to trimresize the arrays storing evaluation results  for new points to reflect the size actually populated.  outPos . resize  numFacePointsEvaluated  pointSize  outDu . resize  numFacePointsEvaluated  pointSize  outDv . resize  numFacePointsEvaluated  pointSize    Identify the faces of the Tessellation   Note that the coordinate indices used by the facets are local  to the face i.e. they range from 0..N-1, where N is the  number of coordinates in the pattern and so need to be offset  when writing to Obj format.   For more advanced use, the coordinates associated with the  boundary and interior of the pattern are distinguishable so  that those on the boundary can be easily remapped to refer to  shared edge or corner points, while those in the interior can  be separately offset or similarly remapped.   So transform the indices of the facets here as needed using  the indices of shared boundary points assembled above and a  suitable offset for the new interior points added  int tessInteriorOffset  numMeshPointsEvaluated - numOutCoords  int numFacets  tessPattern . GetNumFacets  outFacets . resize  numFacets  tessFacetSize  tessPattern . GetFacets  outFacets . data  tessPattern . TransformFacetCoordIndices  outFacets . data , tessBoundaryIndices . data , tessInteriorOffset    Write the evaluated points and faces connecting them as Obj  objWriter . WriteGroupName  baseFace_ , faceIndex  objWriter . WriteVertexPositions  outPos  objWriter . WriteVertexNormals  outDu , outDv  objWriter . WriteFaces  outFacets , tessFacetSize , true , false      Load command line arguments, specified or default geometry and process  int main  int argc , char  argv   Args args  argc , argv  Far  TopologyRefiner  meshTopology  0  std  vector  float  meshVtxPositions  std  vector  float  meshFVarUVs  meshTopology  tutorial  createTopologyRefiner  args . inputObjFile , args . schemeType , meshVtxPositions , meshFVarUVs  if  meshTopology  0   return EXIT_FAILURE   tessellateToObj   meshTopology , meshVtxPositions , args  delete meshTopology  return EXIT_SUCCESS   ------------------------------------------------------------------------------ Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"title\": \"Additional Resources\",\n+        \"text\": \"Additional Resources Additional Resources 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE Links Videos Feature Adaptive GPU Rendering of Catmull-Clark Subdivision Surfaces 2012 Open Subdivision Technology Review 2012 Autodesk User Group At Anaheim 2013 Why Model with Subdivisions 2013 Meet the Experts The OpenSubdiv Project 2013 Links OpenSubdiv Github Repository OpenSubdiv with Mudbox and Maya Videos Feature Adaptive GPU Rendering of Catmull-Clark Subdivision Surfaces 2012 Open Subdivision Technology Review 2012 Autodesk User Group At Anaheim 2013 Why Model with Subdivisions 2013 Meet the Experts The OpenSubdiv Project 2013 Join special guests, Bill Polson, Dirk Van Gelder, Manuel Kraemer, Takahito Tejima, David G. Yu and Dale Ruffolo, from Pixar Animation Studios GPU team, as they show how real time display of subdivision surfaces helps artists be more productive, and how this code is open source and engineered for ease of integration. Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n-        \"loc\": \"bfr_tutorial_2_2.html\"\n+        \"loc\": \"additional_resources.html\"\n     }, {\n-        \"title\": \"Sdc Overview\",\n-        \"text\": \"Sdc Overview Sdc Overview 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE Subdivision Core Sdc Types, Traits and Options Creasing support Scheme-specific support The FACE, EDGE and VERTEX interfaces The MASK interface Subdivision Core Sdc Sdc is the lowest level layer in OpenSubdiv. Its intent is to separate the core subdivision details from any particular representation of a mesh it was previously bound to Hbr to facilitate the generation of consistent results with other mesh representations, both internal and external to OpenSubdiv. The functionality can be divided roughly into three sections types, traits and options for the supported subdivision schemes computations required to support semi-sharp creasing computations for mask weights of subdivided vertices for all schemes For most common usage, familiarity with only the first of these is necessary -- primarily the use of public types and constants for the choice of subdivision scheme and its associated options. The latter two provide the basis for a more comprehensive implementation of subdivision, which requires considerably more understanding and effort. Overall, the approach was to extract the functionality at the lowest level possible. In some cases, the implementation is not far from being simple global functions. The intent was to start at a low level and build any higher level functionality as needed. What exists now is functional for ongoing development and anticipated needs within OpenSubdiv for the near future. The intent of Sdc is to provide the building blocks for OpenSubdiv and its clients to efficiently process the specific set of supported subdivision schemes. It is not intended to be a general framework for defining customized subdivision schemes. Types, Traits and Options The most basic type is the enum SdcSchemeType that identifies the fixed set of subdivision schemes supported by OpenSubdiv Bilinear , Catmark and Loop . With this alone, we intend to avoid all dynamic casting issues related to the scheme by simply adding members to the associated subclasses for inspection. In addition to the type enum itself, a class defining a fixed set of traits associated with each scheme is provided. While these traits are available as static methods in the interface of a class supporting more functionality for each scheme to be described shortly, the SchemeTypeTraits provide queries of the traits for a variable of type SdcSchemeType -- enabling parameterization of code by the value of a trait without templates or virtual inheritance a simple internal table of traits is constructed and trivially indexed. The second contribution is the collection of all variations in one place that can be applied to the subdivision schemes, i.e. the boundary interpolation rules, creasing method, edge subdivision choices, etc. The fact that these are all declared in one place alone should help clients see the full set of variations that are possible. A simple Options struct a set of bitfields aggregates all of these variations into a single object the equivalent of an integer in this case that are passed around to other Sdc classes andor methods and are expected to be used at a higher level both within OpenSubdiv and externally. By aggregating the options and passing them around as a group, it allows us to extend the set easily in future without the need to rewire a lot of interfaces to accommodate the new choice. Clients can enable new choices at the highest level and be assured that they will propagate to the lowest level where they are relevant. Unlike other options structs used elsewhere to specify variations of a particular method, SdcOptions defines all options that affect the shape of the underlying limit surface of a subdivision mesh. Other operations at higher levels in the library may have options that approximate the shape and so create a slightly different appearance, but SdcOptions is a fundamental part of the definition of the true limit surface. Creasing support Since the computations involved in the support of semi-sharp creasing are independent of the subdivision scheme, the goal in Sdc was to encapsulate all related creasing functionality in a similarly independent manner. Computations involving sharpness values are also much less dependent on topology -- there are vertices and edges with sharpness values, but knowledge of faces or boundary edges is not required, -- so the complexity of topological neighborhoods required for more scheme-specific functionality is arguably not necessary here. Creasing computations have been provided as methods defined on a Crease class that is constructed with a set of Options. Its methods typically take sharpness values as inputs and compute a corresponding set of sharpness values as a result. For the Uniform creasing method previously known as Normal , the computations may be so trivial as to question whether such an interface is worth it, but for Chaikin or other schemes in the future that are non-trivial, the benefits should be clear. Functionality is divided between both uniform and non-uniform, so clients have some control over avoiding unnecessary overhead, e.g. non-uniform computations typically require neighboring sharpness values around a vertex, while uniform does not. Also included as part of the Crease class is the Rule enum -- this indicates if a vertex is Smooth, Crease, Dart or Corner referred to as the mask in Hbr and is a function of the sharpness values at and around a vertex. Knowing the Rule for a vertex can accelerate mask queries, and the Rule can often be inferred based on the origin of a vertex e.g. it originated from the middle of a face, was the child of a Smooth vertex, etc.. Methods are defined for the Crease class to subdivide edge and vertex sharpness values determine the Rule for a vertex based on incident sharpness values determine the transitional weight between two sets of sharpness values Being all low-level and working directly on sharpness values, it is a clients responsibility to coordinate the application of any hierarchical crease edits with their computations. Similarly, in keeping with this as a low-level interface, values are passed as primitive arrays. This follows the trend in OpenSubdiv of dealing with data of various kinds e.g. weights, component indices, now sharpness values, etc. in small contiguous sets of values. In most internal cases we can refer to a set of values or gather what will typically be a small number of values on the stack for temporary use. Scheme-specific support While the SchemeTypeTraits class provides traits for each subdivision scheme supported by OpenSubdiv i.e. Bilinear , Catmark and Loop , the Scheme class provides these more directly, Additionally, the Scheme class provides methods for computing the various sets of weights used to compute new vertices resulting from subdivision. The collection of weights used to compute a single vertex at a new subdivision level is typically referred to as a mask . The primary purpose of the Scheme class is to provide such masks in a manner both general and efficient. Each subdivision scheme has its own values for its masks, and each are provided as specializations of the template class SchemeSchemeType TYPE . The intent is to minimize the amount of code specific to each scheme. The computation of mask weights for subdivided vertices is the most significant contribution of Sdc. The use of semi-sharp creasing with each non-linear subdivision scheme complicates what are otherwise simple masks determined solely by the topology, and packaging that functionality to achieve both the generality and efficiency desired has been a challenge. Mask queries are defined in the Scheme class template, which has specializations for each of the supported subdivision schemes. Mask queries are defined in terms of interfaces for two template parameters the first defining the topological neighborhood of a vertex, and a second defining a container in which to gather the individual weights template  typename FACE , typename MASK  void ComputeFaceVertexMask  FACE const  faceNeighborhood , MASK  faceVertexMask , ... const  Each mask query is expected to call methods defined for the FACE , EDGE or VERTEX classes to obtain the information they require  typically these methods are simple queries about the topology and associated sharpness values. Clients are free to use their own mesh representations to gather the requested information as quickly as possible, or to cache some subset as member variables for immediate inline retrieval. In general, the set of weights for a subdivided vertex is dependent on the following the topology around the parent component from which the vertex originates the type of subdivision Rule applicable to the parent component the type of subdivision Rule applicable to the new child vertex a transitional weight blending the effect between differing parent and child rules This seems fairly straight-forward, until we look at some of the dependencies involved the parent Rule requires the sharpness values at and around the parent component the child Rule requires the subdivided sharpness values at and around the new child vertex though it can sometimes be trivially inferred from the parent the transitional weight between differing rules requires all parent and child sharpness values Clearly the sharpness values are inspected multiple times and so it pays to have them available for retrieval. Computing them on an as-needed basis may be simple for uniform creasing, but a non-uniform creasing method requires traversing topological neighborhoods, and that in addition to the computation itself can be costly. The point here is that it is potentially unreasonable to expect to evaluate the mask weights completely independent of any other consideration. Expecting and encouraging the client to have subdivided sharpness values first, for use in more than one place, is therefore recommended. The complexity of the general case above is also unnecessary for most vertices. Any client using Sdc typically has more information about the nature of the vertex being subdivided and much of this can be avoided -- particularly for the smooth interior case that often dominates. More on that in the details of the Scheme classes. Given that most of the complexity has been moved into the template parameters for the mask queries, the Scheme class remains fairly simple. Like the Crease class, it is instantiated with a set of Options to avoid them cluttering the interface. It is currently little more than a few methods for the limit and refinement masks for each vertex type, plus the few fixed traits of the scheme as static methods. The mask queries have been written in a way that greatly simplifies the specializations required for each scheme. The generic implementation for both the edge-vertex and vertex-vertex masks take care of all of the creasing logic, requiring only a small set of specific masks to be assigned for each Scheme smooth and crease masks for an edge-vertex, and smooth, crease and corner masks for a vertex-vertex. Other than the Bilinear case, which will specialize the mask queries to trivialize them for linear interpolation, the specializations for each Scheme should only require defining this set of masks -- and with two of them common edge-vertex crease and vertex-vertex corner the Catmark scheme only needs to define three. The FACE, EDGE and VERTEX interfaces Mask queries require an interface to a topological neighborhood, currently labeled FACE , EDGE and VERTEX . This naming potentially implies more generality than intended, as such classes are only expected to provide the methods required of the mask queries to compute its associated weights. While all methods must be defined, some may rarely be invoked, and the client has considerable flexibility in the implementation of these they can defer some evaluations lazily until required, or be pro-active and cache information in member variables for immediate access. An approach discussed in the past has alluded to iterator classes that clients would write to traverse their meshes. The mask queries would then be parameterized in terms of a more general and generic mesh component that would make use of more general traversal iterators. The advantage here is the iterators are written once, then traversal is left to the query and only what is necessary is gathered. The disadvantages are that clients are forced to write these to do anything, getting them correct and efficient may not be trivial or possible in some cases, and that the same data e.g. subdivided sharpness may be gathered or computed multiple times for different purposes. The other extreme was to gather everything possible required at once, but that is objectionable. The approach taken here provides a reasonable compromise between the two. The mask queries ask for exactly what they want, and the provided classes are expected to deliver it as efficiently as possible. In some cases the client may already be storing it in a more accessible form and general topological iteration can be avoided. The information requested of these classes in the three mask queries is as follows For FACE  the number of incident vertices For EDGE  the number of incident faces the sharpness value of the parent edge the sharpness values of the two child edges the number of vertices per incident face For VERTEX  the number of incident faces the number of incident edges the sharpness value of the parent vertex the sharpness values for each incident parent edge the sharpness value of the child vertex the sharpness values for each incident child edge The latter should not be surprising given the dependencies noted above. There are also a few more to consider for future use, e.g. whether the EDGE or VERTEX is manifold or not. In most cases, additional information can be provided to the mask queries i.e. pre-determined Rules, and most of the child sharpness values are not necessary. The most demanding situation is a fractional crease that decays to zero -- in which case all parent and child sharpness values in the neighborhood are required to determine the proper transitional weight. The MASK interface Methods dealing with the collections of weights defining a mask are typically parameterized by a MASK template parameter that contains the weights. The set of mask weights is currently divided into vertex-weights, edge-weights and face-weights -- consistent with previous usage in OpenSubdiv and providing some useful correlation between the full set of weights and topology. The vertex-weights refer to parent vertices incident the parent component from which a vertex originated, the edge-weights the vertices opposite incident edges of the parent, and the face-weights the center of incident parent faces. Note the latter is NOT in terms of vertices of the parent but potentially vertices in the child originating from faces of the parent. This has been done historically in OpenSubdiv but is finding less use -- particularly when it comes to providing greater support for the Loop scheme -- and is a point needing attention. So the mask queries require the following capabilities assign the number of vertex, edge andor face weights retrieve the number of vertex, edge andor face weights assign individual vertex, edge andor face weights by index retrieve individual vertex, edge andor face weights by index through a set of methods required of all MASK classes. Since the maximum number of weights is typically known based on the topology, usage within Vtr, Far or Hbr is expected to simply define buffers on the stack. Another option is to utilize pre-allocated tables, partitioned into the three sets of weights on construction of a MASK , and populated by the mask queries. A potentially useful side-effect of this is that the client can define their weights to be stored in either single or double-precision. With that possibility in mind, care was taken within the mask queries to make use of a declared type in the MASK interface  MASKWeight  for intermediate calculations. Having support for double-precision masks in Sdc does enable it at higher levels in OpenSubdiv if later desired, and that support is made almost trivial with MASK being generic. It is important to remember here that these masks are being defined consistent with existing usage within OpenSubdiv both Hbr and the subdivision tables generated by Far . As noted above, the face weights correspond to the centers of incident faces, i.e. vertices on the same level as the vertex for which the mask is being computed, and not relative to vertices in the parent level as with the other sets of weights. It is true that the weights can be translated into a set in terms solely of parent vertices, but in the general case i.e. Catmark subdivision with non-quads in the base mesh this requires additional topological association. In general we would need N-3 weights for the N-3 vertices between the two incident edges, where N is the number of vertices of each face typically 4 even at level 0. Perhaps such a translation method could be provided on the mask class, with an optional indication of the incident face topology for the irregular cases. The Loop scheme does not have face weights , for a vertex-vertex mask, but for an edge-vertex mask it does require weights associated with the faces incident the edge -- either the vertex opposite the edge for each triangle, or its center which has no other use for Loop. Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"title\": \"API Overview\",\n+        \"text\": \"API Overview API Overview 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE API Layers Using the Right Tools Use case 1 Simple refinement Use case 2 GL adaptive tessellation drawing of animating mesh Tutorials and Examples API Layers OpenSubdiv is structured as a set of layered libraries. This structure facilitates operation on a variety of computing resources, and allows developers to only opt-in to the layers and feature sets that they require. From a top-down point of view, OpenSubdiv is comprised of several layers, some public, and some private. Layers list Sdc Subdivision Core Sdc Overview The lowest level layer, implements the core subdivision details to facilitate the generation of consistent results. Most cases will only require the use of simple public types and constants from Sdc. Vtr Vectorized Topological Representation Vtr Overview A suite of classes to provide an intermediate representation of topology that supports efficient refinement. Vtr is intended for internal use only. Far Feature Adaptive Representation Far Overview The central interface that processes client-supplied geometry and turns it into a serialized data representation ready for parallel processing in Osd . Far also provides a fully-featured single-threaded implementation of subdivision interpolation algorithms. Bfr Bace Face Representation Bfr Overview A suite of classes to provide parameterization, evaluation and tessellation on the CPU. Bfr is more flexible and more scalable than Osd but potentially less efficient. Osd OpenSubdiv cross platform Osd Overview A suite of classes to provide parallel subdivision kernels and drawing utilities on a variety of platforms such as TBB, CUDA, OpenCL, GLSL and DirectX. Client mesh data enters the API through the Far layer. Typically, results will be collected from the Osd layer. However, it is possible to use functionality from Far without introducing any dependency on Osd. Although there are several entry-points to provide topology and primitive variable data to OpenSubdiv, eventually everything must pass through the private Vtr and Sdc representations for topological analysis. Using the Right Tools OpenSubdivs tiered interface offers a lot flexibility to make your application both fast and robust. Because navigating through the large collection of classes and features can be challenging, here are use cases that should help sketch the broad lines of going about using subdivisions in your application. General client application requirements Surface Limit For some applications, a polygonal approximation of the smooth surface is enough. Others require C 2 continuous differentiable bi-cubic patches ex deformable displacement mapping, smooth normals and semi-sharp creases... Deforming Surface Applications such as off-line image renderers often process a single frame at a time. Others, such as interactive games need to evaluate deforming character surface every frame. Because we can amortize many computations if the topology of the mesh does not change, OpenSubdiv provides stencil tables in order to leverage subdivision refinement into a pre-computation step. Multi-threading OpenSubdiv also provides dedicated interfaces to leverage parallelism on a wide variety of platforms and API standards, including both CPUs and GPUs. GPU Draw If the application requires interactive drawing on screen, OpenSubdiv provides several back-end implementations, including D3D11 and OpenGL. These back-ends provide full support for programmable shading. Use case 1 Simple refinement The following example shows the most simple case to get your mesh refined uniformly. Define a class for the primvar you want to refine. Its required to have Clear and AddWithWeight functions. struct Vertex  void Clear   x  y  z  0   void AddWithWeight  Vertex const  src , float weight   x  weight  src . x  y  weight  src . y  z  weight  src . z   float x , y , z   2. Instantiate a FarTopologyRefiner from the FarTopologyDescriptor . Far  TopologyDescriptor desc  desc . numVertices   the number of vertices  desc . numFaces   the number of faces  desc . numVertsPerFace   array of the number of verts per face  desc . vertIndicesPerFace   array of vert indices  Far  TopologyRefiner  refiner  Far  TopologyRefinerFactory  Descriptor  Create  desc  Call RefineUniform to refine the topology up to maxlevel. refiner - RefineUniform  Far  TopologyRefiner  UniformOptions  maxlevel  4. Interpolate vertex primvar data at level using FarPrimvarRefiner Far  PrimvarRefiner primvarRefiner   refiner  Vertex const  src   coarse vertices  Vertex  dst   refined vertices  primvarRefiner . Interpolate  level , src , dst  The topology at the refined level can be obtained from FarTopologyLevel Far  TopologyLevel const  refLastLevel  refiner - GetLevel  maxlevel  int nverts  refLastLevel . GetNumVertices  int nfaces  refLastLevel . GetNumFaces  for  int face  0  face  nfaces   face   Far  ConstIndexArray fverts  refLastLevel . GetFaceVertices  face   do something with dst and fverts  Done See Far tutorial 1.1 for the complete code example. Use case 2 GL adaptive tessellation drawing of animating mesh The next example is showing how to draw adaptive tessellated patches in GL using OpenSubdiv. The osd layer helps you to interact with GL and other device specific APIs. Also for an efficient refinement of animating mesh on a static topology, we create a stencil table to refine the positions changing over time. The following example code uses an OsdGLMesh utility class which composites a stencil table, patch table, vertex buffer and evaluator in osd layer. You can also use those classes independently. 1. Instantiate a FarTopologyRefiner from the FarTopologyDescriptor , same as usecase 1. Setup OsdMesh. In this example we use b-spline endcap. int numVertexElements  3   x, y, z Osd  MeshBitset bits  bits . set  Osd  MeshAdaptive , true   set adaptive bits . set  Osd  MeshEndCapBSplineBasis , true   use b-spline basis patch for endcap. Osd  GLMeshInterface  mesh  new Osd  Mesh  Osd  CpuGLVertexBuffer , Far  StencilTable , Osd  CpuEvaluator , Osd  GLPatchTable   refiner , numVertexElements , 0 , level , bits  3. Update coarse vertices and refine OsdMeshRefine calls OsdCpuEvaluatorEvalStencils  mesh - UpdateVertexBuffer   vertex  0 , 0 , nverts  mesh - Refine  Bind index buffer, PatchParamBuffer and vertex buffer  index buffer glBindBuffer  GL_ELEMENT_ARRAY_BUFFER , mesh - GetPatchTable  - GetPatchIndexBuffer   vertex buffer glBindBuffer  GL_ARRAY_BUFFER , mesh - BindVertexBuffer  glEnableVertexAttribArray  0  glVertexAttribPointer  0 , numVertexElements , GL_FLOAT , GL_FALSE , numVertexElements  sizeof  float , 0   patch param buffer glActiveTexture  GL_TEXTURE0  glBindTexture  GL_TEXTURE_BUFFER , mesh - GetPatchTable  - GetPatchParamTextureBuffer  Draw. Since we use b-spline endcaps in this example, there is only one PatchArray in the patch table. You may need to iterate patch arrays as you use other type of endcap. To configure GLSL program for each patch type, see osd shader interface for more details. Osd  PatchArray const  patch  mesh - GetPatchTable  - GetPatchArrays  0  Far  PatchDescriptor desc  patch . GetDescriptor  int numVertsPerPatch  desc . GetNumControlVertices   16 for B-spline patches glUseProgram  BSplinePatchProgram  glPatchParameteri  GL_PATCH_VERTICES , numVertsPerPatch  glDrawElements  GL_PATCHES , patch . GetNumPatches   numVertsPerPatch , GL_UNSIGNED_INT , 0  As the mesh animates, repeat from step 3 to update positions, refine, and draw. See glViewer and other examples for more complete usage. Tutorials and Examples For more use cases, please see Tutorials and Examples Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n-        \"loc\": \"sdc_overview.html\"\n+        \"loc\": \"api_overview.html\"\n     }, {\n-        \"title\": \"bfr_tutorial_1_5.cpp\",\n-        \"text\": \"bfr_tutorial_1_5.cpp bfr_tutorial_1_5.cpp 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE httpsgithub.comPixarAnimationStudiosOpenSubdivblobreleasetutorialsbfrtutorial_1_5bfr_tutorial_1_5.cpp ------------------------------------------------------------------------------  Tutorial description   This tutorial is an alternative to an earlier tutorial that showed  uniform tessellation. This version differs by evaluating the points  of the tessellation using limit stencils instead of the standard  Surface evaluation methods.   Limit stencils factor the evaluation into a set of coefficients for  each control point affecting the Surface.  include opensubdivfartopologyRefiner.h include opensubdivbfrrefinerSurfaceFactory.h include opensubdivbfrsurface.h include opensubdivbfrtessellation.h include vector include string include cstring include cstdio  Local headers with support for this tutorial in namespace tutorial include .meshLoader.h include .objWriter.h using namespace OpenSubdiv    Simple command line arguments to provide input and run-time options  class Args  public  std  string inputObjFile  std  string outputObjFile  Sdc  SchemeType schemeType  int tessUniformRate  bool tessQuadsFlag  public  Args  int argc , char  argv   inputObjFile , outputObjFile , schemeType  Sdc  SCHEME_CATMARK , tessUniformRate  5 , tessQuadsFlag  false   for  int i  1  i  argc   i   if  strstr  argv  i , .obj   if  inputObjFile . empty   inputObjFile  std  string  argv  i   else  fprintf  stderr , Warning Extra Obj file s ignored n  , argv  i    else if   strcmp  argv  i , -o   if   i  argc  outputObjFile  std  string  argv  i   else if   strcmp  argv  i , -bilinear   schemeType  Sdc  SCHEME_BILINEAR   else if   strcmp  argv  i , -catmark   schemeType  Sdc  SCHEME_CATMARK   else if   strcmp  argv  i , -loop   schemeType  Sdc  SCHEME_LOOP   else if   strcmp  argv  i , -res   if   i  argc  tessUniformRate  atoi  argv  i   else if   strcmp  argv  i , -quads   tessQuadsFlag  true   else  fprintf  stderr , Warning Unrecognized argument s ignored n  , argv  i     private  Args       The main tessellation function given a mesh and vertex positions,  tessellate each face -- writing results in Obj format.  void tessellateToObj  Far  TopologyRefiner const  meshTopology , std  vector  float  const  meshVertexPositions , Args const  options     Use simpler local type names for the Surface and its factory  typedef Bfr  RefinerSurfaceFactory  SurfaceFactory  typedef Bfr  Surface  float  Surface    Initialize the SurfaceFactory for the given base mesh very low  cost in terms of both time and space and tessellate each face  independently i.e. no shared vertices   Note that the SurfaceFactory is not thread-safe by default due to  use of an internal cache. Creating a separate instance of the  SurfaceFactory for each thread is one way to safely parallelize  this loop. Another preferred is to assign a thread-safe cache  to the single instance.   First declare any evaluation options when initializing though  none are used in this simple case  SurfaceFactory  Options surfaceOptions  SurfaceFactory meshSurfaceFactory  meshTopology , surfaceOptions    The Surface to be constructed and evaluated for each face -- as  well as the intermediate and output data associated with it -- can  be declared in the scope local to each face. But since dynamic  memory is involved with these variables, it is preferred to declare  them outside that loop to preserve and reuse that dynamic memory.  Surface faceSurface  std  vector  float  faceControlPoints  std  vector  float  limitStencils  std  vector  float  outCoords  std  vector  float  outPos , outDu , outDv  std  vector  int  outFacets    Assign Tessellation Options applied for all faces. Tessellations  allow the creating of either 3- or 4-sided faces -- both of which  are supported here via a command line option  int const tessFacetSize  3  options . tessQuadsFlag  Bfr  Tessellation  Options tessOptions  tessOptions . SetFacetSize  tessFacetSize  tessOptions . PreserveQuads  options . tessQuadsFlag    Process each face, writing the output of each in Obj format  tutorial  ObjWriter objWriter  options . outputObjFile  int numFaces  meshSurfaceFactory . GetNumFaces  for  int faceIndex  0  faceIndex  numFaces   faceIndex     Initialize the Surface for this face -- if valid skipping  holes and boundary faces in some rare cases  if   meshSurfaceFactory . InitVertexSurface  faceIndex ,  faceSurface   continue     Resize stencils and control point arrays based on the number  of control points for the Surface  int numControlPoints  faceSurface . GetNumControlPoints  limitStencils . resize  3  numControlPoints  float  pStencil  limitStencils . data  float  duStencil  limitStencils . data   numControlPoints  float  dvStencil  limitStencils . data   numControlPoints  2    Limit stencils can be applied using the control points in a  local array or directy from the mesh. Both are shown here, so  if using the local array, resize and populate it  bool gatherControlPoints  true  if  gatherControlPoints   faceControlPoints . resize  numControlPoints  3  faceSurface . GatherControlPoints  meshVertexPositions . data , 3 , faceControlPoints . data , 3     Declare a simple uniform Tessellation for the Parameterization  of this face and identify coordinates of the points to evaluate  Bfr  Tessellation tessPattern  faceSurface . GetParameterization , options . tessUniformRate , tessOptions  int numOutCoords  tessPattern . GetNumCoords  outCoords . resize  numOutCoords  2  tessPattern . GetCoords  outCoords . data    Evaluate and apply stencils to compute points of the tessellation  outPos . resize  numOutCoords  3  outDu . resize  numOutCoords  3  outDv . resize  numOutCoords  3  for  int i  0  i  numOutCoords   i   float const  uv  outCoords . data   i  2  faceSurface . EvaluateStencil  uv , pStencil , duStencil , dvStencil  float  p  outPos . data   i  3  float  du  outDu . data   i  3  float  dv  outDv . data   i  3  if  gatherControlPoints   float const  controlPoints  faceControlPoints . data  faceSurface . ApplyStencil  pStencil , controlPoints , 3 , p  faceSurface . ApplyStencil  duStencil , controlPoints , 3 , du  faceSurface . ApplyStencil  dvStencil , controlPoints , 3 , dv   else  float const  meshPoints  meshVertexPositions . data  faceSurface . ApplyStencilFromMesh  pStencil , meshPoints , 3 , p  faceSurface . ApplyStencilFromMesh  duStencil , meshPoints , 3 , du  faceSurface . ApplyStencilFromMesh  dvStencil , meshPoints , 3 , dv      Identify the faces of the Tessellation   Note the need to offset vertex indices for the output faces --  using the number of vertices generated prior to this face. One  of several Tessellation methods to transform the facet indices  simply translates all indices by the desired offset.  int objVertexIndexOffset  objWriter . GetNumVertices  int numFacets  tessPattern . GetNumFacets  outFacets . resize  numFacets  tessFacetSize  tessPattern . GetFacets  outFacets . data  tessPattern . TransformFacetCoordIndices  outFacets . data , objVertexIndexOffset    Write the evaluated points and faces connecting them as Obj  objWriter . WriteGroupName  baseFace_ , faceIndex  objWriter . WriteVertexPositions  outPos  objWriter . WriteVertexNormals  outDu , outDv  objWriter . WriteFaces  outFacets , tessFacetSize , true , false      Load command line arguments, specified or default geometry and process  int main  int argc , char  argv   Args args  argc , argv  Far  TopologyRefiner  meshTopology  0  std  vector  float  meshVtxPositions  std  vector  float  meshFVarUVs  meshTopology  tutorial  createTopologyRefiner  args . inputObjFile , args . schemeType , meshVtxPositions , meshFVarUVs  if  meshTopology  0   return EXIT_FAILURE   tessellateToObj   meshTopology , meshVtxPositions , args  delete meshTopology  return EXIT_SUCCESS   ------------------------------------------------------------------------------ Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"title\": \"Release Notes\",\n+        \"text\": \"Release Notes Release Notes 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE Release 2.6.0 Release 2.5.1 Release 2.5.0 Release 2.4.1 Release 2.4.0 Release 2.3.5 Release 2.3.4 Release 2.3.3 Release 2.3.2 Release 2.3.1 Release 2.3.0 Release 2.2.0 Release 2.1.0 Release 2.0.1 Release 2.0.0 Release 1.2.4 Release 1.2.3 Release 1.2.2 Release 1.2.1 Release 1.2.0 Release 1.1.0 Release 1.0.0 Release 2.6.0 New Features Add subdivision kernels for ARM NEON Add OsdUtilVertexSplit which creates a vertex-varying data table by duplicating vertices in a FarMesh Add basic functions to work with FV data via evaluator API Changes Added Catmark restricted vertex compute kernels that optimize for vertices with no semi-sharp creases Fix accessor omissions in osdmesh.h Add support for different subdivision schemes for OsdUtilMesh Bug Fixes Fix crashes when using rather low-end cards like Intel ones Fix a bug in the creation of an edge-vertex kernel batch Fix mismatch in declaration and usage of OsdCudaComputeRestrictedVertexA Fix a bug in the vertex order for restricted Catmark vertex-vertex kernel batches Fix a bug in FarCatmarkSubdivisionTablesFactory that prevented the CATMARK_QUAD_FACE_VERTEX kernel from being selected for subdivision level 2 or greater. Fix a bug in OsdUtilVertexSplit that occurs when getting the address of the end of a stdvector Fix error in createCLBuffer that occurs when the buffer size is zero Fix a bug in the CUDA computeRestrictedEdge kernel Fix duplicate variables with identical name Fix osdutil build errors Fix cmake diagnostic messsage Release 2.5.1 New Features Add CATMARK_QUAD_FACE_VERTEX and CATMARK_TRI_QUAD_FACE_VERTEX compute kernels optimization that takes advantage of all-quads or all-triange-and-quads meshes Bug Fixes Fix a compiler error in the GLSL Transform Feedback kernels on OS X Fix boundary interpolation in osdutil Fix bilinear stencil tangent computions Release 2.5.0 New Features Add ability to generate triangle patches for a uniformly subdivided mesh Add new example topologySharing Add interleaved buffer mode in glViewer Add GLSL compute kernel to glBatchViewer Add TBB compute kernel to glBatchViewer Add a PullDown widget to our HUD in examplescommon GUI updates  cosmetic changes to GL example code Adding a programmable image shader to gl_hud Code cleanup for GLFrameBuffer in examplescommon Implement C-API accessor to evaluator topology osdutil Add command line option to CMakes options Add a CMake option to disable OpenCL Add a FindCLEW.cmake module in anticipation of using CLEW as a dependency Integrate CLEW into osd library and examples Changes Change interleaved buffer support in OsdCompute Removed OsdVertexDescriptor and replaced with OsdVertexBufferDescriptor Reorganize ComputeContext and ComputeController. Reorganize EvalStencilContext and EvalStencilController Moved transient states current vertex buffer etc to controller Reorganize EvalLimitContext and EvalLimitController Moved transient states current vertex buffer etc to controller Fix adaptive isolation of sharp corner vertices Fix incorrect FarMeshFactory logic for isolating multiple corner vertices in corner patches Change EvalLimit Gregory patch kernels to the large weights table to accomodate higher valences Fix calculation of screen space LOD tess factors for transition corner patches. Add a public constructor to OsdMesh Decrease compiler warning thresholds and fix outstanding warnings Make PTex support optional Add a NO_MAYA flag to CMakeLists to disable all Autodesk Maya dependencies in the build Document NO_MAYA command line option Bug Fixes Fix mistakenly deleted memory barrier in glsl OsdCompute kernel. Fix shape_utils genRIB function to use streams correctly. Temporary workaround for the synchronization bug of glsl compute kernel Fix Hud display for higher DPI MBP retina Fix Hud d3d11 Fix examples to use GL timer query to measure the GPU draw timing more precisely Fix glViewer stop updating during freeze. Fix file permissions on farPatchTablesFactory.h Fix some meory leaks in adaptive evaluator osdutil Fix OsdUtilAdaptiveEvaluator concurrency issue Fix OsdUtilRefiner incorrect Invalid size of patch array error reporting. Fix OsdUtilPatchPartitioner failure for triangle patches Fixes a bug that causes OsdUtilPatchPartitioner to fail to rebuild the face-varying data table correctly for triangle patches. Add missing third parameter to templated OsdDrawContext usage osdutilbatch.h Return success status from openSubdiv_finishEvaluatorDescr osdutil Remove debugging stdcout calls osdutil Build errors  warnings Fix OSX Core Profile build GLFrameBuffer Fix ptexViewer build error on OSX Fix framebuffer shader compiling for OSX Reordering includes to address a compile error on OSXglew environment Fix compilation errors with CLEW enabled Fix icc build problems Fix compiler warnings in OsdClVertexBuffer Fix compilation error on windowsmsvc2013 Fix build warningserrors with VS2010 Pro Fix Windows build warning in FarPatchTablesFactory Fix doxygen generation errors Release 2.4.1 Changes Add correct OpenSubdiv namespace beginend blocks. Bug Fixes Compile osdutil with -fPIC for correct linking. Fix a bug of OsdUtilMeshBatch, the varying buffer isnt computed with CL kernels Fix FindGLFW.cmake to use the GLFW_LOCATION environment variable in Windows Fix Draw contexts do not fully initialize patch arrays Release 2.4.0 New Features Adding functionality to store uniform face-varying data across multiple levels of subdivision Add OsdUtilPatchPartitioner. It splits patcharray into subsets so that clients can draw partial surfaces for both adaptive and uniform. Changes Remove FarMesh dependency from OsdContext. Use DSA APIs for GL buffer update if available. Refactor Far API replace void- of all kernel applications with CONTEXT template parameter. It eliminates many static_casts from void- for both far and osd classes. move the big switch-cases of far default kernel launches out of Refine so that osd controllers can arbitrary mix default kernels and custom kernels. change FarKernelBatchkernelType from enum to int, clients can add custom kernel types. remove a back-pointer to farmesh from subdivision table. untemplate all subdivision table classes and template their compute methods instead. Those methods take a typed vertex storage. remove an unused argument FarMesh from the constructor of subdivision table factories. Refactor FarSubdivisionTables. Delete scheme specialized subdivision tables. The base class FarSubdivisionTables already has all tables, so we just need scheme enum to identify which scheme the subdivision tables belong to. This brings a lot of code cleanups around far factory classes. Move FarMultiMeshFactory to OsdUtil. Move table splicing functions of FarMultiMeshFactory into factories Change PxOsdUtil prefix to final OsdUtil prefix. Improve error reporting in osdutil refinement classes, and fix a build issue Bug Fixes Fix another multi mesh splicing bug of face varying data. Make CMake path variables more robust Fixing a crash on Marvericks wglew Update dxViewer example documentation Fix wrong logic in openSubdiv_setEvaluatorCoarsePositions Remove debug print from adaptive evaluators initialization Release 2.3.5 New Features Add the ability to read obj files to the dxViewer example Add screen-capture function to ptexViewer Update documention for Xcode builds Add documentation boundary interpolation rules and face-varying boundary interpolation rules Changes Refactoring FarPatchTables and FarPatchTablesFactory Move GL vertex buffer VBO buffer allocation out of allocate and into BindVBO Enable uvViewer on OS X now that Mavericks is released. Replacing un-necessary dynamic_cast with reinterpret_cast within FarDispatcher Minor code cleanup of FarMeshFactory Remove address space qualifiers from OpenCL kernel functions Fix OpenCL initialization to be slightly more robust Add OpenCL header include paths where necessary Add static specifiers for non-kernel CL funcs at program scope Add stddef.h to pythonosdosdshim.i Modify ptexViewer and uvViewer shaders to address some portability issues Bug Fixes Fix Gregory Boundary patch buffer overrun Fix black texels when the resolution of a ptex face is less than 4 Fix a splicing bug in FarMultiMeshFactory Fix a build error when using older versions of GLFW Fix build warnings optimized Fix FindTBB.cmake Fix FindMaya.cmake Fix glViewer support for GLSL compute Fix ptexViewer enable specular pass in both IBL and point lighting Fix Zlib include in ptexViewer Fix ptexViewer shader errors. Fix osdPolySmooth Maya plugin Fix UV merging in osdPolySmooth code example Add cleanup function to osdPolySmooth Maya plugin Fix Maya OsdPolySmooth node component output Fix GLSL array instantiation syntax for glStencilViewer Fix examples to run correctly on high DPI displays with GLFW 3 Release 2.3.4 New Features Adding CPUOMPTBB Context  Controller pairs for CPU evaluation of smooth normals Added adaptiveEvaluator class inspired by Sergeys work in blender OsdUtil Changes Changed the HUD to ignore mouse clicks when not visible. Updates for blender development OsdUtil Add C compatible API to access the adaptiveEvaluator class from non-C OsdUtil Update license headers to apache OsdUtil CMake build improvement  make osd a cmake object library  remove compiling redundancies Improve stringification of shaders  kernels in CMake build Bug Fixes Fixed iOS build Fixed VS2010 warningserrors. Fix OsdCpuEvalLimitKernel Fix maxvalence calculation in FarMeshFactory Fix FarStencilFactory control stencil caching Removing assert for high-valence vertices running off limit tangent pre-computed table. Fix degenerate stencil limit tangent code path. Fix unused variable build warnings gcc 4.8.2 - Fedora 19 Fix build warning from osdutiladaptiveEvaluator.cpp Release 2.3.3 Changes Modify Far remapping of singular vertices to point to their source vertex. Refactoring Ptex Mipmap and Analytic Displacement code Adding some documentation for Chaikin crease rule Misc. improvements to PxOsdUtilsMesh Adding recommended isolation output to OsdPolySmooth node Bug Fixes Adding an error check on version parsing of main CMakeLists Fix regex in FindMaya.cmake that breaks with recent versions of Maya Fix crashes induced by typeid Fixed VS2010 build warning Fix build break in hbr_regression Fix incorrect capitalization in GL ptexViewer shader.glsl Fix OSX build add stdlib.h include Release 2.3.2 New Features Adding control cage drawing to ptexViewer Adding Maya osdPolySmooth plugin into OpenSubdiv examples. Changes Removing some glGetError checks that are causing problems for Autodesk D3D11DrawRegistry returns the common shader config for all non-tess patcharrays. Updates to simple cpu osdutil classes Bug Fixes Fix Hbr Chaikin crease rule Fix Chaikin tag parsing Fix return value of allocate function for OsdCPUGLVertxBuffer Fixed GLSL shader portability. Fix FindGLFW.cmake for GLFW 3.03 on OSX Fixed compiler warnings. Fixed VS2010 build errors Fixed WIN32 build error when no DXSDK installed. Fix OSX build stdlib.h needs to be included in glPtexMipmapTexture.h Fix for crash in new meshrefiner code in OsdUtil Release 2.3.1 New Features Add DX11 version of ptex mipmap loader Add DX11 ptex viewer work in progress Add DX11 fractional partitioning, normal derivatives computation Add memory usage controls to Ptex loader Add face-varying boundary interpolation parsing to shape_utils Add simple HbrMesh and FarMesh wrapper classes to osdutil Changes Amend language of attribution file NOTICE.txt Optimize a bit of ptex mipmap lookup. Show ptex memory usage in GL and DX11 ptexViewers Improve ptex guttering Addding some video links to our collection of external resources Bug Fixes Fix edge-only face-varying interpolation Fix Far to handle disconnected vertices in an Hbr mesh Fixed ptex cache resource release sequence Fix build symbol conflict in Far Fix patch parambuffer generation in OsdD3D11DrawContext Fix a minor osdutil build warning seen with gcc 4.8.1 Fix VS2010 build errors Release 2.3.0 New Features Added Analytical displacement mapping Analytic Displacement Mapping using Hardware Tessellation Niessner and Loop TOG 2013 Added a new ptex mipmap loader Added face varying macros for loop subdivision Added the uvViewer example to see how face varying interpolation rule works Added a slider component and cleanup hud code. Changes Adding license  attribution files, improved language of the code headers Install documentation into the Filesystem Hierarchy Standard location Set GLFW_OPENGL_FORWARD_COMPAT on Mac OS to make samples work on that platform Added surface normal mode  mipmap to ptxViewer Bug Fixes Fix a bug of bad fvar splicing for loop surface. Fix incorrect bilinear limit tangents in FarStencilTablesFactory Fix boundary interpolation rules doc Added an error check on updating cuda buffer Fix face varying rendering on loop surface Fixed glBatchViewer build for GLFW 2.x Expand search paths for FindGLFW.cmake for Debian and other Linux architectures Fix CMake executable builds for ICC Fix bhr baseline regression, so reference files are real OBJs Fixed clKernelBundle.cpp to build on Android. Fix misc build warings Release 2.2.0 New Features Added subdivision stencil functionality Far  OsdEval Bug Fixes Fix D3D11DrawContext to check for NULL pointers Fix cpuEvalLimitController crash bug Fixed search path suffixes for ICC libs Fixed invalid initialization of glslTransformFeedback kernel. Release 2.1.0 New Features Added TBB Compute back-end on Linux contribution from Sheng Fu Added support for ICC compiler still Beta Changes Added constructor to OsdMesh with a FarMesh  as input Modify CMake to name and sym-link DSOs based on Linux ABI versioning spec Added command line input to DX11 viewer FarMultiMesh can splice uniform and adaptive meshes together. Bug Fixes Fix FarMultiMesh splicing Removed unnecessary cudaThreadSynchronize calls. Fix glViewer overlapping HUD menus Fix facevarying rendering in glBatchViewer Fix build of GLSL transform feedback kernels Fix Getting Started documentation Release 2.0.1 New Features New CLA files to reflect Apache 2.0 licensing Changes Move all public headers to includeopensubdiv... Adding Osd documentation based on Siggraph slides Bug Fixes Fix incorrect transition pattern 3 in GLSL  HLSL shaders Fix CMake build to not link GPU-based libraries into libosdCPU Fix support for GLEW on OSX Fix GLFW Xrandr  xf86vmode dependency paths for X11 based systems Fix HUD display overlaps in code examples Fix FindGLEW.cmake to be aware of multiarch on linux systems Fix some hard-coded include paths in CMake build Release 2.0.0 New Features New CMake build flags NO_LIB, NO_CUDA, NO_PYTHON Changes OpenSubdiv is now under Apache 2.0 license HbrHalfedge and HbrFVarData copy constructors are now private Documentation style matched to graphics.pixar.com  new content Add an animation freeze button to ptexViewer Variable name changes for better readability across all example shader code Bug Fixes Fix incorrect patch generation for patches with 2 non-consecutive boundary edges Fix undefined gl_PrimitiveID shader build errors Fix for shader macro OSD_DISPLACEMENT_CALLBACK Fix out-of-bounds stdvector access in FarPatchTablesFactory Release 1.2.4 New Features Adding support for fractional tessellation of patches Adding a much needed API documention system based on Docutils RST markup Adding support for face-varying interpolation in GLSL APIs Adding varying data buffers to OsdMesh Adding accessors to the vertex buffers in OsdGlMesh Adding face-varying data to regression shapes Changes Cleanup of common bicubic patch shader code GLSL  HLSL for portability ATI  OSX drivers Bug Fixes Fix FarVertexEditTablesFactory to insert properly vertex edit batches fixes incorrect hierarchical hole in regression shape Fix FarPatchMap quadtree to not drop top-level non-quad faces Fix Gregory patches bug with incorrect max-valence Fix FarPatchTablesGetNumFaces and FarPatchTablesGetFaceVertices functions to return the correct values Fix face indexing GLSL code ptex works on non-quads again Fix face-varying data splicing in FarMultiMeshFactory Fix ptex face indexing in FarMultiMeshFactory Fix glew include to not break builds Fix Clang  ICC build failures with FarPatchTables Fix build and example code to work with GFLW 3.0 Fix cmake to have ptex dynamically linked in OSX Release 1.2.3 New Features Adding Varying and Face-Varying data interpolation to EvalLimit Changes EvalLimit API refactor  the EvalContext now has dedicated structs to track all the vertex, varying and face-varying data streams. Also renamed some buffers into tables to maintain code consistency EvalLimit optimization  switch serial indexing to a quad-tree based search Bug Fixes Face-varying data bug fixes  making sure the data is carried around appropriately Fixes for OpenCL use with the new batching APIs GLSL general shader code cleanup  fixes for better portability GLSL Tranform Feedback initialization fix Critical fix for FarMultiMesh batching indexing was incorrect Fix osdutil CL implementation protect includes on systems with no OpenCL SDK installed Fix face-varying interpolation on adaptive patches FarPatchTables  fix IsFeatureAdaptive to return the correct answer Fix Far factories to handle the absence of face-varying data correctly. Many GLSL shader code style fixes which should help with ATI  OSX shader compiling Release 1.2.2 New Features Introducing the EvalLimit API  the Eval module aims at providing support for computational tasks that are not related to drawing the surfaces. The EvalLimit sub-module provides an API that enables client code to evaluate primitive variables on the limit surface. OsdxxxComputeController  minor optimization. Added early exit to Refine method to avoid unnecessary interop. Changes OsdGLDawContext  minor API change. Protecting some member variables and adding const accessors OsdError  minor API refactor, added Warning functions. Bug Fixes Fix Ptex bug  prevent corner texel guttering code to from going into infinite loops Adding the ability for a FarMeshFactory to construct patchTables starting from firstLevel in uniform subdivision mode Consolidating the color coding of bicubic patch types through all our our code examples this is used mostly as a debugging tool Fixing some MSVC build warnings Update to the outdated README.md Release 1.2.1 New Features Added CUDA runtime error checking Release 1.2.0 Changes Major Far refactor around patchTables to introduce the draw batching API Renaming osd_util to osdutil Bug Fixes Fix GLSL transform feedback initialization bug in ptexViewer Minor bug  typo fixes Release 1.1.0 New Features release initiated because of the switch to Git Flow Release 1.0.0 Oringal release Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n-        \"loc\": \"bfr_tutorial_1_5.html\"\n+        \"loc\": \"release_notes_2x.html\"\n     }, {\n-        \"title\": \"far_tutorial_4_1.cpp\",\n-        \"text\": \"far_tutorial_4_1.cpp far_tutorial_4_1.cpp 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE httpsgithub.comPixarAnimationStudiosOpenSubdivblobreleasetutorialsfartutorial_4_1far_tutorial_4_1.cpp ------------------------------------------------------------------------------  Tutorial description   This tutorial shows how to create and manipulate FarStencilTable. We use  the factorized stencils to interpolate vertex primvar data buffers.  include opensubdivfartopologyDescriptor.h include opensubdivfarstencilTable.h include opensubdivfarstencilTableFactory.h include cstdio include cstring ------------------------------------------------------------------------------  Vertex container implementation.  struct Vertex   Minimal required interface ---------------------- Vertex    Vertex  Vertex const  src   _position  0   src . _position  0  _position  1   src . _position  1  _position  2   src . _position  2   void Clear  void   0   _position  0   _position  1   _position  2   0.0f   void AddWithWeight  Vertex const  src , float weight   _position  0   weight  src . _position  0  _position  1   weight  src . _position  1  _position  2   weight  src . _position  2    Public interface ------------------------------------ void SetPosition  float x , float y , float z   _position  0   x  _position  1   y  _position  2   z   float const  GetPosition  const  return _position   private  float _position  3   ------------------------------------------------------------------------------  Cube geometry from catmark_cube.h static float g_verts  24    -0.5f , -0.5f , 0.5f , 0.5f , -0.5f , 0.5f , -0.5f , 0.5f , 0.5f , 0.5f , 0.5f , 0.5f , -0.5f , 0.5f , -0.5f , 0.5f , 0.5f , -0.5f , -0.5f , -0.5f , -0.5f , 0.5f , -0.5f , -0.5f  static int g_nverts  8 , g_nfaces  6  static int g_vertsperface  6    4 , 4 , 4 , 4 , 4 , 4  static int g_vertIndices  24    0 , 1 , 3 , 2 , 2 , 3 , 5 , 4 , 4 , 5 , 7 , 6 , 6 , 7 , 1 , 0 , 1 , 7 , 5 , 3 , 6 , 0 , 2 , 4  using namespace OpenSubdiv  static Far  TopologyRefiner  createTopologyRefiner  ------------------------------------------------------------------------------ int main  int , char     Generate a FarTopologyRefiner see tutorial_1_1 for details. Far  TopologyRefiner  refiner  createTopologyRefiner   Uniformly refine the topology up to maxlevel. int maxlevel  3  refiner - RefineUniform  Far  TopologyRefiner  UniformOptions  maxlevel   Use the FarStencilTable factory to create discrete stencil table  note we only want stencils for the highest refinement level. Far  StencilTableFactory  Options options  options . generateIntermediateLevels  false  options . generateOffsets  true  Far  StencilTable const  stencilTable  Far  StencilTableFactory  Create   refiner , options   Allocate vertex primvar buffer 1 stencil for each vertex int nstencils  stencilTable - GetNumStencils  std  vector  Vertex  vertexBuffer  nstencils   Quick  dirty re-cast of the primvar data from our cube  this is where you would drive shape deformations every frame Vertex  controlValues  reinterpret_cast  Vertex   g_verts    This section would be applied every frame after control vertices have  been moved.  Apply stencils on the control vertex data to update the primvar data  of the refined vertices. stencilTable - UpdateValues  controlValues ,  vertexBuffer  0     Visualization with Maya  print a MEL script that generates particles  at the location of the refined vertices printf  particle   for  int i  0  i   int  vertexBuffer . size   i   float const  pos  vertexBuffer  i . GetPosition  printf  -p f f f n  , pos  0 , pos  1 , pos  2   printf  -c 1 n    delete refiner  delete stencilTable  return EXIT_SUCCESS   ------------------------------------------------------------------------------ static Far  TopologyRefiner  createTopologyRefiner    Populate a topology descriptor with our raw data. typedef Far  TopologyDescriptor Descriptor  Sdc  SchemeType type  OpenSubdiv  Sdc  SCHEME_CATMARK  Sdc  Options options  options . SetVtxBoundaryInterpolation  Sdc  Options  VTX_BOUNDARY_EDGE_ONLY  Descriptor desc  desc . numVertices  g_nverts  desc . numFaces  g_nfaces  desc . numVertsPerFace  g_vertsperface  desc . vertIndicesPerFace  g_vertIndices   Instantiate a FarTopologyRefiner from the descriptor. return Far  TopologyRefinerFactory  Descriptor  Create  desc , Far  TopologyRefinerFactory  Descriptor  Options  type , options   ------------------------------------------------------------------------------ Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"title\": \"Modeling Tips\",\n+        \"text\": \"Modeling Tips Modeling Tips 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE Topology Use Fewer Spans Avoid High Valence vertices Edge-Loop Transitions Practical Topology Primer Triangles and N-Gons Semi-Sharp Creases Use crease sets Additional Resources The following sections describe common techniques specific to modeling with subdivision surfaces. Note The following information contains techniques specific to the Catmull-Clark subdivision scheme. Some elements need to be adjusted for Loop surfaces. Topology Well-constructed subdivision meshes have several important properties They consist primarily of regular faces quads for Catmull-Clark, tris for Loop They contain few extraordinary vertices They efficiently describe the intended shape They are topologically manifold Use Fewer Spans While polygon models need to use a large number of spans to approximate smooth curved surfaces, subdivision models require significantly fewer control points. In most situations, 6 spans are enough to create accurate circular shapes, and 4 is often enough to approximate background objects. Avoid High Valence vertices A high valence vertex is a vertex connected to more than 4 adjacent edges. High valence vertices cause several problems when subdivided The Catmull-Clark scheme can produce wavy surfaces when a revolution vertex is surrounded by triangles see here  High valence vertices incur fairly large performance hits Currently, OpenSubdiv has a hard constraint imposed by GPU shaders on the maximum valence of a vertex 27 on current hardware Instead, here are some topological strategies to cap revolution shapes Note that all these cylinders use only quad faces, and all the vertices in the caps have a valence of 4 except the bottom left example Edge-Loop Transitions It is often necessary to vary the density of control vertices over the surface mesh areas around the fingers of a hand require more CVs than the comparatively simpler region around the palm. It is important to handle the topology around these transitions efficiently. One strategy is to use extraordinary vertices, such as this example, using a valence 5 vertex to expand 3 edge loops into 5. Practical Topology Primer Some real-world examples showing how to produce detailed shapes with sparse topology, few extraordinary vertices, and no high-valence revolution poles. Triangles and N-Gons Used sparsely, non-quads can be very useful to gather 3 or more diverging edge-loops. These are often encountered in highly deforming areas with curvature saddle-points ex arm-torso connection. The strategic placement of a pentagon in one of these critical spots ensures that the surface remains smooth, while allowing for complex topology to flow around. Semi-Sharp Creases Semi-sharp creases can be a very powerful tool for hard-surface modeling. Both edges and vertices can be tagged with a sharpness value. Crease sharpness values range from 0 smooth to 10 infinitely sharp It is generally cheaper to use creases whenever possible, instead of adding extra edgesedge-loops. However... Creases introduce extra computation costs that are proportional to the sharpness value. So... Sharpness values above 5 should rarely be needed. The following sections introduce some techniques to best leverage them. Use crease sets Complex hard-surface models giant robots, vehicles, buildings... are likely to tag large number of edges  it is extremely useful to organize these edgesedge loops into logical sets with descriptive names. Edges or vertices in a crease set group all share the same sharpness value. If you are modeling with Maya, the CreaseSetEditor implements this type of workflow. Additionally, for debugging purposes, it is often very helpful if the name of a set contains the sharpness value ex topDeck_2. Besides authoring convenience, one of the benefits of having many edge-loops share identical sharpness values is that it enables very powerful performance optimizations within the feature adaptive algorithm faster renders  less memory. Additional Resources An excellent short tutorial from the Guerrilla CG Project that illustrates many of the common pitfalls of subdivision modeling, and the strategies to overcome them Ivo Kos, Modelling Technical Director at Pixar Animation Studios, shows some of the modeling techniques he uses when modeling props and architecture sets for feature films. Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n-        \"loc\": \"far_tutorial_4_1.html\"\n+        \"loc\": \"mod_notes.html\"\n     }, {\n-        \"title\": \"far_tutorial_1_2.cpp\",\n-        \"text\": \"far_tutorial_1_2.cpp far_tutorial_1_2.cpp 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE httpsgithub.comPixarAnimationStudiosOpenSubdivblobreleasetutorialsfartutorial_1_2far_tutorial_1_2.cpp ------------------------------------------------------------------------------  Tutorial description   This tutorial illustrates two different styles of defining classes for  interpolating primvar data with the template methods in Far. The most  common usage involves data of a fixed size, so the focus here is on an  alternative supporting variable length data.  include opensubdivfartopologyDescriptor.h include opensubdivfarprimvarRefiner.h include cstdio using namespace OpenSubdiv    Vertex data containers for interpolation  - Coord3 is fixed to support 3 floats  - Coord2 is fixed to support 2 floats  - CoordBuffer can support a specified number of floats  struct Coord3  Coord3    Coord3  float x , float y , float z   _xyz  0   x , _xyz  1   y , _xyz  2   z   void Clear   _xyz  0   _xyz  1   _xyz  2   0.0f   void AddWithWeight  Coord3 const  src , float weight   _xyz  0   weight  src . _xyz  0  _xyz  1   weight  src . _xyz  1  _xyz  2   weight  src . _xyz  2   float const  Coords  const  return  _xyz  0   private  float _xyz  3   struct Coord2  Coord2    Coord2  float u , float v   _uv  0   u , _uv  1   v   void Clear   _uv  0   _uv  1   0.0f   void AddWithWeight  Coord2 const  src , float weight   _uv  0   weight  src . _uv  0  _uv  1   weight  src . _uv  1   float const  Coords  const  return  _uv  0   private  float _uv  2   struct CoordBuffer    The head of an external buffer and stride is specified on construction  CoordBuffer  float  data , int size   _data  data , _size  size    CoordBuffer   _data  0 , _size  0    void Clear   for  int i  0  i  _size   i   _data  i   0.0f    void AddWithWeight  CoordBuffer const  src , float weight   assert  src . _size  _size  for  int i  0  i  _size   i   _data  i   weight  src . _data  i    float const  Coords  const  return _data     Defining  to return a location elsewhere in the buffer is the key  requirement to supporting interpolatible data of varying size  CoordBuffer operator  int index  const  return CoordBuffer  _data  index  _size , _size   private  float  _data  int _size     Global cube geometry from catmark_cube.h   Topology static int g_nverts  8  static int g_nfaces  6  static int g_vertsperface  6    4 , 4 , 4 , 4 , 4 , 4  static int g_vertIndices  24    0 , 1 , 3 , 2 , 2 , 3 , 5 , 4 , 4 , 5 , 7 , 6 , 6 , 7 , 1 , 0 , 1 , 7 , 5 , 3 , 6 , 0 , 2 , 4   Primvar data static float g_verts  8  3    0.0f , 0.0f , 1.0f ,  1.0f , 0.0f , 1.0f ,  0.0f , 1.0f , 1.0f ,  1.0f , 1.0f , 1.0f ,  0.0f , 1.0f , 0.0f ,  1.0f , 1.0f , 0.0f ,  0.0f , 0.0f , 0.0f ,  1.0f , 0.0f , 0.0f    Creates FarTopologyRefiner from raw geometry above see tutorial_1_1 for  more details  static Far  TopologyRefiner  createFarTopologyRefiner   typedef Far  TopologyDescriptor Descriptor  Sdc  SchemeType type  OpenSubdiv  Sdc  SCHEME_CATMARK  Sdc  Options options  options . SetVtxBoundaryInterpolation  Sdc  Options  VTX_BOUNDARY_EDGE_ONLY  Descriptor desc  desc . numVertices  g_nverts  desc . numFaces  g_nfaces  desc . numVertsPerFace  g_vertsperface  desc . vertIndicesPerFace  g_vertIndices   Instantiate a FarTopologyRefiner from the descriptor Far  TopologyRefiner  refiner  Far  TopologyRefinerFactory  Descriptor  Create  desc , Far  TopologyRefinerFactory  Descriptor  Options  type , options  return refiner     Overview of main  - create a FarTopologyRefiner and uniformly refine it  - allocate separate and combined data buffers for vertex positions and UVs  - populate all refined data buffers and compare results  - write the result in Obj format   Disable warnings for exact floating point comparisons ifdef __INTEL_COMPILER pragma warning disable 1572 endif int main  int , char     Instantiate a FarTopologyRefiner from the global geometry Far  TopologyRefiner  refiner  createFarTopologyRefiner   Uniformly refine the topology up to maxlevel int maxlevel  2  refiner - RefineUniform  Far  TopologyRefiner  UniformOptions  maxlevel   Allocate and populate data buffers for vertex primvar data -- positions and  UVs. We assign UV coordiantes by simply projectingassigning XY values.  The position and UV buffers use their associated data types, while the  combined buffer uses 5 floats per vertex.  int numBaseVertices  g_nverts  int numTotalVertices  refiner - GetNumVerticesTotal  std  vector  Coord3  posData  numTotalVertices  std  vector  Coord2  uvData  numTotalVertices  int combinedStride  3  2  std  vector  float  combinedData  numTotalVertices  combinedStride  for  int i  0  i  numBaseVertices   i   posData  i   Coord3  g_verts  i  0 , g_verts  i  1 , g_verts  i  2  uvData  i   Coord2  g_verts  i  0 , g_verts  i  1  float  coordCombined   combinedData  i  combinedStride  coordCombined  0   g_verts  i  0  coordCombined  1   g_verts  i  1  coordCombined  2   g_verts  i  2  coordCombined  3   g_verts  i  0  coordCombined  4   g_verts  i  1    Interpolate vertex primvar data Far  PrimvarRefiner primvarRefiner   refiner  Coord3  posSrc   posData  0  Coord2  uvSrc   uvData  0  CoordBuffer combinedSrc   combinedData  0 , combinedStride  for  int level  1  level  maxlevel   level   int numLevelVerts  refiner - GetLevel  level -1 . GetNumVertices  Coord3  posDst  posSrc  numLevelVerts  Coord2  uvDst  uvSrc  numLevelVerts  CoordBuffer combinedDst  combinedSrc  numLevelVerts  primvarRefiner . Interpolate  level , posSrc , posDst  primvarRefiner . Interpolate  level , uvSrc , uvDst  primvarRefiner . Interpolate  level , combinedSrc , combinedDst  posSrc  posDst  uvSrc  uvDst  combinedSrc  combinedDst    Verify that the combined coords match the separate results for  int i  numBaseVertices  i  numTotalVertices   i   float const  posCoords  posData  i . Coords  float const  uvCoords  uvData  i . Coords  float const  combCoords   combinedData  combinedStride  i  assert  combCoords  0   posCoords  0  assert  combCoords  1   posCoords  1  assert  combCoords  2   posCoords  2  assert  combCoords  3   uvCoords  0  assert  combCoords  4   uvCoords  1     Output OBJ of the highest level refined  Far  TopologyLevel const  refLastLevel  refiner - GetLevel  maxlevel  int firstOfLastVerts  numTotalVertices - refLastLevel . GetNumVertices   Print vertex positions printf   Vertices n   for  int vert  firstOfLastVerts  vert  numTotalVertices   vert   float const  pos   combinedData  vert  combinedStride  printf  v f f f n  , pos  0 , pos  1 , pos  2   printf   UV coordinates n   for  int vert  firstOfLastVerts  vert  numTotalVertices   vert   float const  uv   combinedData  vert  combinedStride   3  printf  vt f f n  , uv  0 , uv  1    Print faces int numFaces  refLastLevel . GetNumFaces  printf   Faces n   for  int face  0  face  numFaces   face   Far  ConstIndexArray fverts  refLastLevel . GetFaceVertices  face  printf  f   for  int fvert  0  fvert  fverts . size   fvert   int objIndex  1  fverts  fvert   OBJ uses 1-based arrays... printf  dd  , objIndex , objIndex   printf   n    delete refiner  return EXIT_SUCCESS   Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"title\": \"far_tutorial_2_3.cpp\",\n+        \"text\": \"far_tutorial_2_3.cpp far_tutorial_2_3.cpp 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE httpsgithub.comPixarAnimationStudiosOpenSubdivblobreleasetutorialsfartutorial_2_3far_tutorial_2_3.cpp ------------------------------------------------------------------------------  Tutorial description   NOTE The following approaches are approximations to compute smooth normals,  for highest fidelity patches should be used for positions and normals,  which form the true limit surface.   Building on tutorial 3, this example shows how to instantiate a simple mesh,  refine it uniformly, interpolate both vertex and face-varying  primvar data, and finally calculate approximated smooth normals.  The resulting interpolated data is output in obj format.   Currently, this tutorial supports 3 methods to approximate smooth normals   CrossTriangle  Calculates smooth normals accumulating per vertex using  3 verts to generate 2 vectors. This approximation has  trouble when working with quads which can be non-planar  since it only takes into account half of each face.   CrossQuad  Calculates smooth normals accumulating per vertex  but this time, instead of taking into account only 3 verts  it creates 2 vectors crossing the quad.  This approximation builds upon CrossTriangle but takes  into account the 4 verts of the face.   Limit  Calculates the normals at the limit for each vert  at the last level of subdivision.  These are the true limit normals, however, in this example  they are used with verts that are not at the limit.  This can lead to new visual artifacts since the normals  and the positions dont match. Additionally, this approach  requires extra computation to calculate the limit normals.  For this reason, we strongly suggest using  limit positions with limit normals.  include opensubdivfartopologyDescriptor.h include opensubdivfarprimvarRefiner.h include cstdio ------------------------------------------------------------------------------  Math helpers.    Returns the normalized version of the input vector inline void normalize  float  n   float rn  1.0f  sqrtf  n  0   n  0   n  1   n  1   n  2   n  2  n  0   rn  n  1   rn  n  2   rn    Returns the cross product of p v1 and p v2. void cross  float const  v1 , float const  v2 , float  vOut   vOut  0   v1  1   v2  2  - v1  2   v2  1  vOut  1   v1  2   v2  0  - v1  0   v2  2  vOut  2   v1  0   v2  1  - v1  1   v2  0   ------------------------------------------------------------------------------  Face-varying implementation.   struct Vertex   Minimal required interface ---------------------- Vertex   Clear   Vertex  Vertex const  src   position  0   src . position  0  position  1   src . position  1  position  2   src . position  2   void Clear   position  0   position  1   position  2   0.0f   void AddWithWeight  Vertex const  src , float weight   position  0   weight  src . position  0  position  1   weight  src . position  1  position  2   weight  src . position  2    Public interface ------------------------------------ void SetPosition  float x , float y , float z   position  0   x  position  1   y  position  2   z   const float  GetPosition  const  return position   float position  3   ------------------------------------------------------------------------------  Face-varying container implementation.   We are using a uv texture layout as a face-varying primtiive variable  attribute. Because face-varying data is specified per-face-per-vertex,  we cannot use the same container that we use for vertex or varying  data. We specify a new container, which only carries u,v coordinates.  Similarly to our Vertex container, we add a minimaliztic interpolation  interface with a Clear and AddWithWeight methods.  struct FVarVertexUV   Minimal required interface ---------------------- void Clear   u  v  0.0f   void AddWithWeight  FVarVertexUV const  src , float weight   u  weight  src . u  v  weight  src . v    Basic uv layout channel float u , v   struct FVarVertexColor   Minimal required interface ---------------------- void Clear   r  g  b  a  0.0f   void AddWithWeight  FVarVertexColor const  src , float weight   r  weight  src . r  g  weight  src . g  b  weight  src . b  a  weight  src . a    Basic color layout channel float r , g , b , a   ------------------------------------------------------------------------------  Cube geometry from catmark_cube.h  vertex primitive variable data  topology static float g_verts  8  3    -0.5f , -0.5f , 0.5f ,  0.5f , -0.5f , 0.5f ,  -0.5f , 0.5f , 0.5f ,  0.5f , 0.5f , 0.5f ,  -0.5f , 0.5f , -0.5f ,  0.5f , 0.5f , -0.5f ,  -0.5f , -0.5f , -0.5f ,  0.5f , -0.5f , -0.5f  static int g_nverts  8 , g_nfaces  6  static int g_vertsperface  6    4 , 4 , 4 , 4 , 4 , 4  static int g_vertIndices  24    0 , 1 , 3 , 2 , 2 , 3 , 5 , 4 , 4 , 5 , 7 , 6 , 6 , 7 , 1 , 0 , 1 , 7 , 5 , 3 , 6 , 0 , 2 , 4   face-varying primitive variable data  topology for UVs static float g_uvs  14  2    0.375 , 0.00 ,  0.625 , 0.00 ,  0.375 , 0.25 ,  0.625 , 0.25 ,  0.375 , 0.50 ,  0.625 , 0.50 ,  0.375 , 0.75 ,  0.625 , 0.75 ,  0.375 , 1.00 ,  0.625 , 1.00 ,  0.875 , 0.00 ,  0.875 , 0.25 ,  0.125 , 0.00 ,  0.125 , 0.25  static int g_nuvs  14  static int g_uvIndices  24    0 , 1 , 3 , 2 , 2 , 3 , 5 , 4 , 4 , 5 , 7 , 6 , 6 , 7 , 9 , 8 , 1 , 10 , 11 , 3 , 12 , 0 , 2 , 13   face-varying primitive variable data  topology for color static float g_colors  24  4    1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 0.0 , 0.0 , 1.0 ,  1.0 , 0.0 , 0.0 , 1.0 ,  1.0 , 0.0 , 0.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0  static int g_ncolors  24  static int g_colorIndices  24    0 , 3 , 9 , 6 , 7 , 10 , 15 , 12 , 13 , 16 , 21 , 18 , 19 , 22 , 4 , 1 , 5 , 23 , 17 , 11 , 20 , 2 , 8 , 14  using namespace OpenSubdiv   Approximation methods for smooth normal computations enum NormalApproximation  CrossTriangle , CrossQuad , Limit  ------------------------------------------------------------------------------ int main  int argc , char  argv   const int maxlevel  2  enum NormalApproximation normalApproximation  CrossTriangle   Parsing command line parameters to see if the user wants to use a  specific method to calculate normals for  int i  1  i  argc   i   if  strstr  argv  i , -limit   normalApproximation  Limit   else if   strcmp  argv  i , -crossquad   normalApproximation  CrossQuad   else if   strcmp  argv  i , -crosstriangle   normalApproximation  CrossTriangle   else  printf  Parameters  n   printf   -crosstriangle  use the cross product of vectors n   printf   generated from 3 verts default. n   printf   -crossquad  use the cross product of vectors n   printf   generated from 4 verts. n   printf   -limit  use normals calculated from the limit. n   return 0    typedef Far  TopologyDescriptor Descriptor  Sdc  SchemeType type  OpenSubdiv  Sdc  SCHEME_CATMARK  Sdc  Options options  options . SetVtxBoundaryInterpolation  Sdc  Options  VTX_BOUNDARY_EDGE_ONLY  options . SetFVarLinearInterpolation  Sdc  Options  FVAR_LINEAR_NONE   Populate a topology descriptor with our raw data Descriptor desc  desc . numVertices  g_nverts  desc . numFaces  g_nfaces  desc . numVertsPerFace  g_vertsperface  desc . vertIndicesPerFace  g_vertIndices   Create a face-varying channel descriptor const int numChannels  2  const int channelUV  0  const int channelColor  1  Descriptor  FVarChannel channels  numChannels  channels  channelUV . numValues  g_nuvs  channels  channelUV . valueIndices  g_uvIndices  channels  channelColor . numValues  g_ncolors  channels  channelColor . valueIndices  g_colorIndices   Add the channel topology to the main descriptor desc . numFVarChannels  numChannels  desc . fvarChannels  channels   Instantiate a FarTopologyRefiner from the descriptor Far  TopologyRefiner  refiner  Far  TopologyRefinerFactory  Descriptor  Create  desc , Far  TopologyRefinerFactory  Descriptor  Options  type , options   Uniformly refine the topolgy up to maxlevel  note fullTopologyInLastLevel must be true to work with face-varying data  Far  TopologyRefiner  UniformOptions refineOptions  maxlevel  refineOptions . fullTopologyInLastLevel  true  refiner - RefineUniform  refineOptions    Allocate and initialize the vertex primvar data see tutorial 2 for  more details. std  vector  Vertex  vbuffer  refiner - GetNumVerticesTotal  Vertex  verts   vbuffer  0  for  int i  0  i  g_nverts   i   verts  i . SetPosition  g_verts  i  0 , g_verts  i  1 , g_verts  i  2    Allocate  initialize the first channel of face-varying primvars UVs std  vector  FVarVertexUV  fvBufferUV  refiner - GetNumFVarValuesTotal  channelUV  FVarVertexUV  fvVertsUV   fvBufferUV  0  for  int i  0  i  g_nuvs   i   fvVertsUV  i . u  g_uvs  i  0  fvVertsUV  i . v  g_uvs  i  1    Allocate  interpolate the face-varying primvar data colors std  vector  FVarVertexColor  fvBufferColor  refiner - GetNumFVarValuesTotal  channelColor  FVarVertexColor  fvVertsColor   fvBufferColor  0  for  int i  0  i  g_ncolors   i   fvVertsColor  i . r  g_colors  i  0  fvVertsColor  i . g  g_colors  i  1  fvVertsColor  i . b  g_colors  i  2  fvVertsColor  i . a  g_colors  i  3    Interpolate both vertex and face-varying primvar data Far  PrimvarRefiner primvarRefiner   refiner  Vertex  srcVert  verts  FVarVertexUV  srcFVarUV  fvVertsUV  FVarVertexColor  srcFVarColor  fvVertsColor  for  int level  1  level  maxlevel   level   Vertex  dstVert  srcVert  refiner - GetLevel  level -1 . GetNumVertices  FVarVertexUV  dstFVarUV  srcFVarUV  refiner - GetLevel  level -1 . GetNumFVarValues  channelUV  FVarVertexColor  dstFVarColor  srcFVarColor  refiner - GetLevel  level -1 . GetNumFVarValues  channelColor  primvarRefiner . Interpolate  level , srcVert , dstVert  primvarRefiner . InterpolateFaceVarying  level , srcFVarUV , dstFVarUV , channelUV  primvarRefiner . InterpolateFaceVarying  level , srcFVarColor , dstFVarColor , channelColor  srcVert  dstVert  srcFVarUV  dstFVarUV  srcFVarColor  dstFVarColor    Approximate normals Far  TopologyLevel const  refLastLevel  refiner - GetLevel  maxlevel  int nverts  refLastLevel . GetNumVertices  int nfaces  refLastLevel . GetNumFaces  int firstOfLastVerts  refiner - GetNumVerticesTotal  - nverts  std  vector  Vertex  normals  nverts   Different ways to approximate smooth normals   For details check the description at the beginning of the file if  normalApproximation  Limit    Approximation using the normal at the limit with verts that are  not at the limit   For details check the description at the beginning of the file std  vector  Vertex  fineLimitPos  nverts  std  vector  Vertex  fineDu  nverts  std  vector  Vertex  fineDv  nverts  primvarRefiner . Limit   verts  firstOfLastVerts , fineLimitPos , fineDu , fineDv  for  int vert  0  vert  nverts   vert   float const  du  fineDu  vert . GetPosition  float const  dv  fineDv  vert . GetPosition  float norm  3  cross  du , dv , norm  normals  vert . SetPosition  norm  0 , norm  1 , norm  2    else if  normalApproximation  CrossQuad    Approximate smooth normals by accumulating normal vectors computed as  the cross product of two vectors generated by the 4 verts that  form each quad   For details check the description at the beginning of the file for  int f  0  f  nfaces  f    Far  ConstIndexArray faceVertices  refLastLevel . GetFaceVertices  f   We will use the first three verts to calculate a normal const float  v0  verts  firstOfLastVerts  faceVertices  0  . GetPosition  const float  v1  verts  firstOfLastVerts  faceVertices  1  . GetPosition  const float  v2  verts  firstOfLastVerts  faceVertices  2  . GetPosition  const float  v3  verts  firstOfLastVerts  faceVertices  3  . GetPosition   Calculate the cross product between the vectors formed by v1-v0 and  v2-v0, and then normalize the result float normalCalculated    0.0 , 0.0 , 0.0  float a  3    v2  0  - v0  0 , v2  1  - v0  1 , v2  2  - v0  2   float b  3    v3  0  - v1  0 , v3  1  - v1  1 , v3  2  - v1  2   cross  a , b , normalCalculated  normalize  normalCalculated   Accumulate that normal on all verts that are part of that face for  int vInFace  0  vInFace  faceVertices . size   vInFace    int vertexIndex  faceVertices  vInFace  normals  vertexIndex . position  0   normalCalculated  0  normals  vertexIndex . position  1   normalCalculated  1  normals  vertexIndex . position  2   normalCalculated  2     else if  normalApproximation  CrossTriangle    Approximate smooth normals by accumulating normal vectors computed as  the cross product of two vectors generated by 3 verts of the quad   For details check the description at the beginning of the file for  int f  0  f  nfaces  f    Far  ConstIndexArray faceVertices  refLastLevel . GetFaceVertices  f   We will use the first three verts to calculate a normal const float  v0  verts  firstOfLastVerts  faceVertices  0  . GetPosition  const float  v1  verts  firstOfLastVerts  faceVertices  1  . GetPosition  const float  v2  verts  firstOfLastVerts  faceVertices  2  . GetPosition   Calculate the cross product between the vectors formed by v1-v0 and  v2-v0, and then normalize the result float normalCalculated    0.0 , 0.0 , 0.0  float a  3    v1  0  - v0  0 , v1  1  - v0  1 , v1  2  - v0  2   float b  3    v2  0  - v0  0 , v2  1  - v0  1 , v2  2  - v0  2   cross  a , b , normalCalculated  normalize  normalCalculated   Accumulate that normal on all verts that are part of that face for  int vInFace  0  vInFace  faceVertices . size   vInFace    int vertexIndex  faceVertices  vInFace  normals  vertexIndex . position  0   normalCalculated  0  normals  vertexIndex . position  1   normalCalculated  1  normals  vertexIndex . position  2   normalCalculated  2      Finally we just need to normalize the accumulated normals for  int vert  0  vert  nverts   vert   normalize   normals  vert . position  0     Output OBJ of the highest level refined -----------  Print vertex positions for  int vert  0  vert  nverts   vert   float const  pos  verts  firstOfLastVerts  vert . GetPosition  printf  v f f f n  , pos  0 , pos  1 , pos  2    Print vertex normals for  int vert  0  vert  nverts   vert   float const  pos  normals  vert . GetPosition  printf  vn f f f n  , pos  0 , pos  1 , pos  2    Print uvs int nuvs  refLastLevel . GetNumFVarValues  channelUV  int firstOfLastUvs  refiner - GetNumFVarValuesTotal  channelUV  - nuvs  for  int fvvert  0  fvvert  nuvs   fvvert   FVarVertexUV const  uv  fvVertsUV  firstOfLastUvs  fvvert  printf  vt f f n  , uv . u , uv . v    Print faces for  int face  0  face  nfaces   face   Far  ConstIndexArray fverts  refLastLevel . GetFaceVertices  face  Far  ConstIndexArray fuvs  refLastLevel . GetFaceFVarValues  face , channelUV   all refined Catmark faces should be quads assert  fverts . size   4  fuvs . size   4  printf  f   for  int vert  0  vert  fverts . size   vert    OBJ uses 1-based arrays... printf  ddd  , fverts  vert   1 , fuvs  vert   1 , fverts  vert   1   printf   n     delete refiner  return EXIT_SUCCESS   ------------------------------------------------------------------------------ Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n-        \"loc\": \"far_tutorial_1_2.html\"\n+        \"loc\": \"far_tutorial_2_3.html\"\n     }, {\n-        \"title\": \"Introduction\",\n-        \"text\": \"Introduction Introduction 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE Introduction Why Fast Subdivision  Research Heritage Licensing Contributing External Resources Introduction OpenSubdiv is a set of open source libraries that implement high performance subdivision surface subdiv evaluation on massively parallel CPU and GPU architectures. This code path is optimized for drawing deforming surfaces with static topology at interactive framerates. OpenSubdiv is an API ready to be integrated into 3rd party digital content creation tools. It is not an application, nor a tool that can be used directly to create digital assets. Why Fast Subdivision  Subdivision surfaces are commonly used for final rendering of character shapes for a smooth and controllable limit surfaces. However, subdivision surfaces in interactive apps are typically drawn as their polygonal control hulls because of performance. The polygonal control hull is an approximation that is offset from the true limit surface. Looking at an approximation in the interactive app makes it difficult to see exact contact, like fingers touching a potion bottle or hands touching a cheek. It also makes it difficult to see poke-throughs in cloth simulation if the skin and cloth are both approximations. This problem is particularly bad when one character is much larger than another and unequal subdiv face sizes cause approximation errors to be magnified. Maya and Pixars proprietary Presto animation system can take 100ms to subdivide a character of 30,000 polygons to the second level of subdivision 500,000 polygons. Being able to perform the same operation in less than 3ms allows the user to interact with the smooth, accurate limit surface at all times. Research The new GPU technology behind OpenSubdiv is the result of a joint research effort between Pixar and Microsoft. Feature Adaptive GPU Rendering of Catmull-Clark Subdivision Surfaces Matthias Niessner, Charles Loop, Mark Meyer, and Tony DeRose ACM Transactions on Graphics, Vol. 31 No. 1 Article 6 January 2012 httpgraphics.pixar.comlibraryGPUSubdivRenderingApaper.pdf Efficient Evaluation of Semi-Smooth Creases in Catmull-Clark Subdivision Surfaces Matthias Niessner, Charles Loop, and Guenter Greiner. Eurographics Proceedings, Cagliari, 2012 httpsniessnerlab.orgpapers20121semismoothniessner2012efficient.pdf Analytic Displacement Mapping using Hardware Tessellation Matthias Niessner, Charles Loop ACM Transactions on Graphics, Vol. 32 No. 3 Article 26 June 2013 httpsniessnerlab.orgpapers20133analyticniessner2013analytic.pdf Heritage This is the fifth-generation subdiv library in use by Pixars proprietary animation system in a lineage that started with code written by Tony DeRose and Tien Truong for Geris Game in 1996. Each generation has been a from-scratch rewrite that has built upon our experience using subdivision surfaces to make animated films. This code is live, so Pixars changes to OpenSubdiv for current and future films will be released as open source at the same time they are rolled out to Pixar animation production. Subdivision for Modeling and Animation Denis Zorin, Peter Schroder Course Notes of SIGGRAPH 1999 httpwww.multires.caltech.edupubssig99notes.pdf Subdivision Surfaces in Character Animation Tony DeRose, Michael Kass, Tien Truong Proceedings of SIGGRAPH 1998 httpgraphics.pixar.comlibraryGeripaper.pdf Recursively generated B-spline surfaces on arbitrary topological meshes Catmull, E. Clark, J. Computer-Aided Design 10 6 1978 Licensing OpenSubdiv is covered by the Apache License, and is free to use for commercial or non-commercial use. This is the same code that Pixar uses internally for animated film production. Our intent is to encourage a geometry standard for subdivision surfaces, by providing consistent i.e. yielding the same limit surface, high performance implementations on a variety of platforms. Why Apache We were looking for a commercial-friendly license that would convey our patents to the end users. This quickly narrowed the field to Microsoft Public License or Apache. Initially we chose MSPL because it handled trademarks better. But at the request of several companies we gave Apache another look, and decided to go with Apache with a very slight modification that simply says you cannot use any contributors trademarks. In other words, you can use OpenSubdiv to make a product, but you cannot use a Luxo Lamp or other character, etc. when marketing your product. License Header Contributing For details on how to contribute to OpenSubdiv, see the page on Contributing External Resources Pixar Research Pixar RD Portal Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"title\": \"glStencilViewer\",\n+        \"text\": \"glStencilViewer glStencilViewer 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE SYNOPSIS DESCRIPTION OPTIONS SEE ALSO SYNOPSIS glStencilViewer  -f   -yup   -u   -a   -l refinement level  objfiles  -catmark   -loop   -bilinear  DESCRIPTION glStencilViewer is a stand-alone application that showcases the application of pre-computed stencil tables to a collection of geometric test shapes. Multiple controls are available to experiment with the algorithms. OPTIONS See the description of the common comand line options for the subset of common options supported here. SEE ALSO Other examples  glViewer , glFVarViewer , glEvalLimit , glStencilViewer , glPtexViewer , glPaintTest , glShareTopology , dxViewer , dxPtexViewer , Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n-        \"loc\": \"intro.html\"\n+        \"loc\": \"glstencilviewer.html\"\n     }, {\n-        \"title\": \"bfr_tutorial_2_1.cpp\",\n-        \"text\": \"bfr_tutorial_2_1.cpp bfr_tutorial_2_1.cpp 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE httpsgithub.comPixarAnimationStudiosOpenSubdivblobreleasetutorialsbfrtutorial_2_1bfr_tutorial_2_1.cpp ------------------------------------------------------------------------------  Tutorial description   This tutorial builds on the previous tutorial that makes use of the  SurfaceFactory, Surface and Tessellation classes by illustrating the  use of non-uniform tessellation parameters with Tessellation.   Tessellation rates for the edges of a face are determined by a  length associated with each edge. That length may be computed using  either the control hull or the limit surface. The length of a  tessellation interval is required and will be inferred if not  explicitly specified as a command line option.   The tessellation rate for an edge is computed as its length divided  by the length of the tessellation interval. A maximum tessellation  rate is imposed to prevent accidental unbounded tessellation, but  can easily be raised as needed.  include opensubdivfartopologyRefiner.h include opensubdivbfrrefinerSurfaceFactory.h include opensubdivbfrsurface.h include opensubdivbfrtessellation.h include vector include string include cstring include cstdio include cmath include algorithm  Local headers with support for this tutorial in namespace tutorial include .meshLoader.h include .objWriter.h using namespace OpenSubdiv    Simple command line arguments to provide input and run-time options  class Args  public  std  string inputObjFile  std  string outputObjFile  Sdc  SchemeType schemeType  float tessInterval  int tessRateMax  bool useHullFlag  bool tessQuadsFlag  public  Args  int argc , char  argv   inputObjFile , outputObjFile , schemeType  Sdc  SCHEME_CATMARK , tessInterval  0.0f , tessRateMax  10 , useHullFlag  false , tessQuadsFlag  false   for  int i  1  i  argc   i   if  strstr  argv  i , .obj   if  inputObjFile . empty   inputObjFile  std  string  argv  i   else  fprintf  stderr , Warning Extra Obj file s ignored n  , argv  i    else if   strcmp  argv  i , -o   if   i  argc  outputObjFile  std  string  argv  i   else if   strcmp  argv  i , -bilinear   schemeType  Sdc  SCHEME_BILINEAR   else if   strcmp  argv  i , -catmark   schemeType  Sdc  SCHEME_CATMARK   else if   strcmp  argv  i , -loop   schemeType  Sdc  SCHEME_LOOP   else if   strcmp  argv  i , -length   if   i  argc  tessInterval   float  atof  argv  i   else if   strcmp  argv  i , -max   if   i  argc  tessRateMax  atoi  argv  i   else if   strcmp  argv  i , -hull   useHullFlag  true   else if   strcmp  argv  i , -quads   tessQuadsFlag  true   else  fprintf  stderr , Warning Unrecognized argument s ignored n  , argv  i     private  Args       Local trivial functions for simple edge length calculations and the  determination of associated tessellation rates  inline float EdgeLength  float const  v0 , float const  v1   float dv  3  dv  0   std  abs  v0  0  - v1  0  dv  1   std  abs  v0  1  - v1  1  dv  2   std  abs  v0  2  - v1  2  return std  sqrt  dv  0   dv  0   dv  1   dv  1   dv  2   dv  2   float FindLongestEdge  Far  TopologyRefiner const  mesh , std  vector  float  const  vertPos , int pointSize   float maxLength  0.0f  int numEdges  mesh . GetLevel  0 . GetNumEdges  for  int i  0  i  numEdges   i   Far  ConstIndexArray edgeVerts  mesh . GetLevel  0 . GetEdgeVertices  i  float edgeLength  EdgeLength   vertPos  edgeVerts  0   pointSize ,  vertPos  edgeVerts  1   pointSize  maxLength  std  max  maxLength , edgeLength   return maxLength   void GetEdgeTessRates  std  vector  float  const  vertPos , int pointSize , Args const  options , int  edgeRates   int numEdges   int  vertPos . size   pointSize  for  int i  0  i  numEdges   i   int j   i  1   numEdges  float edgeLength  EdgeLength   vertPos  i  pointSize ,  vertPos  j  pointSize  edgeRates  i   1   int  edgeLength  options . tessInterval  edgeRates  i   std  min  edgeRates  i , options . tessRateMax      The main tessellation function given a mesh and vertex positions,  tessellate each face -- writing results in Obj format.  void tessellateToObj  Far  TopologyRefiner const  meshTopology , std  vector  float  const  meshVertexPositions , Args const  options     Use simpler local type names for the Surface and its factory  typedef Bfr  RefinerSurfaceFactory  SurfaceFactory  typedef Bfr  Surface  float  Surface    Initialize the SurfaceFactory for the given base mesh very low  cost in terms of both time and space and tessellate each face  independently i.e. no shared vertices   Note that the SurfaceFactory is not thread-safe by default due to  use of an internal cache. Creating a separate instance of the  SurfaceFactory for each thread is one way to safely parallelize  this loop. Another preferred is to assign a thread-safe cache  to the single instance.   First declare any evaluation options when initializing though  none are used in this simple case  SurfaceFactory  Options surfaceOptions  SurfaceFactory meshSurfaceFactory  meshTopology , surfaceOptions    The Surface to be constructed and evaluated for each face -- as  well as the intermediate and output data associated with it -- can  be declared in the scope local to each face. But since dynamic  memory is involved with these variables, it is preferred to declare  them outside that loop to preserve and reuse that dynamic memory.  Surface faceSurface  std  vector  float  facePatchPoints  std  vector  int  faceTessRates  std  vector  float  outCoords  std  vector  float  outPos , outDu , outDv  std  vector  int  outFacets    Assign Tessellation Options applied for all faces. Tessellations  allow the creating of either 3- or 4-sided faces -- both of which  are supported here via a command line option  int const tessFacetSize  3  options . tessQuadsFlag  Bfr  Tessellation  Options tessOptions  tessOptions . SetFacetSize  tessFacetSize  tessOptions . PreserveQuads  options . tessQuadsFlag    Process each face, writing the output of each in Obj format  tutorial  ObjWriter objWriter  options . outputObjFile  int numFaces  meshSurfaceFactory . GetNumFaces  for  int faceIndex  0  faceIndex  numFaces   faceIndex     Initialize the Surface for this face -- if valid skipping  holes and boundary faces in some rare cases  if   meshSurfaceFactory . InitVertexSurface  faceIndex ,  faceSurface   continue     Prepare the Surface patch points first as it may be evaluated  to determine suitable edge-rates for Tessellation  int pointSize  3  facePatchPoints . resize  faceSurface . GetNumPatchPoints   pointSize  faceSurface . PreparePatchPoints  meshVertexPositions . data , pointSize , facePatchPoints . data , pointSize    For each of the N edges of the face, a tessellation rate is  determined to initialize a non-uniform Tessellation pattern.   Many metrics are possible -- some based on the geometry itself  size, curvature, others dependent on viewpoint screen space  size, center of view, etc. and many more. Simple techniques  are chosen here for illustration and can easily be replaced.   Here two methods are shown using lengths between the corners of  the face -- the first using the vertex positions of the face and  the second using points evaluated at the corners of its limit  surface. Use of the control hull is more efficient avoiding the  evaluation but may prove less effective in some cases though  both estimates have their limitations.  int N  faceSurface . GetFaceSize   Use the output array temporarily to hold the N positions outPos . resize  N  pointSize  if  options . useHullFlag   Far  ConstIndexArray verts  meshTopology . GetLevel  0 . GetFaceVertices  faceIndex  for  int i  0 , j  0  i  N   i , j  pointSize   float const  vPos   meshVertexPositions  verts  i   pointSize  outPos  j   vPos  0  outPos  j  1   vPos  1  outPos  j  2   vPos  2    else  Bfr  Parameterization faceParam  faceSurface . GetParameterization  for  int i  0 , j  0  i  N   i , j  pointSize   float uv  2  faceParam . GetVertexCoord  i , uv  faceSurface . Evaluate  uv , facePatchPoints . data , pointSize ,  outPos  j    faceTessRates . resize  N  GetEdgeTessRates  outPos , pointSize , options , faceTessRates . data    Declare a non-uniform Tessellation using the rates for each  edge and identify coordinates of the points to evaluate   Additional interior rates can be optionally provided 2 for  quads, 1 for others but will be inferred in their absence.  Bfr  Tessellation tessPattern  faceSurface . GetParameterization , N , faceTessRates . data , tessOptions  int numOutCoords  tessPattern . GetNumCoords  outCoords . resize  numOutCoords  2  tessPattern . GetCoords  outCoords . data    Resize the output arrays and evaluate  outPos . resize  numOutCoords  pointSize  outDu . resize  numOutCoords  pointSize  outDv . resize  numOutCoords  pointSize  for  int i  0 , j  0  i  numOutCoords   i , j  pointSize   faceSurface . Evaluate   outCoords  i  2 , facePatchPoints . data , pointSize ,  outPos  j ,  outDu  j ,  outDv  j     Identify the faces of the Tessellation   Note the need to offset vertex indices for the output faces --  using the number of vertices generated prior to this face. One  of several Tessellation methods to transform the facet indices  simply translates all indices by the desired offset.  int objVertexIndexOffset  objWriter . GetNumVertices  int numFacets  tessPattern . GetNumFacets  outFacets . resize  numFacets  tessFacetSize  tessPattern . GetFacets  outFacets . data  tessPattern . TransformFacetCoordIndices  outFacets . data , objVertexIndexOffset    Write the evaluated points and faces connecting them as Obj  objWriter . WriteGroupName  baseFace_ , faceIndex  objWriter . WriteVertexPositions  outPos  objWriter . WriteVertexNormals  outDu , outDv  objWriter . WriteFaces  outFacets , tessFacetSize , true , false      Load command line arguments, specified or default geometry and process  int main  int argc , char  argv   Args args  argc , argv  Far  TopologyRefiner  meshTopology  0  std  vector  float  meshVtxPositions  std  vector  float  meshFVarUVs  meshTopology  tutorial  createTopologyRefiner  args . inputObjFile , args . schemeType , meshVtxPositions , meshFVarUVs  if  meshTopology  0   return EXIT_FAILURE     If no interval length was specified, set one by finding the longest  edge of the mesh and dividing it by the maximum tessellation rate  if  args . tessInterval  0.0f   args . tessInterval  FindLongestEdge   meshTopology , meshVtxPositions , 3    float  args . tessRateMax   tessellateToObj   meshTopology , meshVtxPositions , args  delete meshTopology  return EXIT_SUCCESS   ------------------------------------------------------------------------------ Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"title\": \"HBR Overview\",\n+        \"text\": \"HBR Overview HBR Overview 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE Hierarchical Boundary Representation Hbr Half-edge Data Structure Half-edge cycles and Manifold Topology Templated Vertex Class Boundary Interpolation Rules Hierarchical Boundary Representation Hbr Hbr is an interconnected topological data representation. The high level of vertex connectivity information makes this representation well suited for creation and editing purposes. It is however inefficient for interactive refinement operations Separate objects are allocated for each vertex and edge with pointers to neighboring vertices and edges. Hbr is also the lowest-level subdivision library in Pixars Photorealistic RenderMan . Note As of OpenSubdiv 3.0, all Hbr dependencies have been removed from the core APIs  Sdc , Vtr , Far , Osd . The legacy source code of Hbr is provided purely for regression and legacy purposes. If your code is currently depending on Hbr functionality, we recommend migrating to the newer APIs as we cannot guarantee that this code will be maintained in future releases. For more information see the 3.0 release notes Half-edge Data Structure The current implementation is based on a half-edge data structure. Half-edge cycles and Manifold Topology Because half-edges only carry a reference to their opposite half-edge, a given edge can only access a single neighboring edge cycle. This is a fundamental limitation of the half-edge data structure, in that it cannot represent non-manifold geometry, in particular fan-type topologies. A different approach to topology will probably be necessary in order to accommodate non-manifold geometry. Templated Vertex Class The vertex class has been abstracted into a set of templated function accesses. Providing Hbr with a template vertex class that does not implement these functions allows client-code to use Hbr as a pure topological analysis tool without having to pay any costs for data interpolation. It also allows client-code to remain in complete control of the layout of the vertex data  interleaved or non-interleaved. Boundary Interpolation Rules Hbr recognizes 4 rule-sets of boundary interpolation Interpolation Rule-Sets k_InterpolateBoundaryNone k_InterpolateBoundaryEdgeOnly k_InterpolateBoundaryEdgeAndCorner k_InterpolateBoundaryAlwaysSharp This enum is shared for both vertex and face-varying interpolation, with the following distinctions vertex boundaries the BoundaryNone rule skips all boundary vertices results are undefined the AlwaysSharp rule does not apply face-varying boundaries the BoundaryNone rule selects bilinear face-varying interpolation Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n-        \"loc\": \"bfr_tutorial_2_1.html\"\n+        \"loc\": \"hbr_overview.html\"\n     }, {\n-        \"title\": \"References\",\n-        \"text\": \"References References 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE References References Analytic Displacement Mapping using Hardware Tessellation Matthias Niessner, Charles Loop ACM Transactions on Graphics, Vol. 32 No. 3 Article 26 June 2013 httpresearch.microsoft.comen-usumpeoplecloopTOG2013.pdf httpdoi.org10.11452487228.2487234 Feature Adaptive GPU Rendering of Catmull-Clark Subdivision Surfaces Matthias Niessner, Charles Loop, Mark Meyer, and Tony DeRose ACM Transactions on Graphics, Vol. 31 No. 1 Article 6 January 2012 httpresearch.microsoft.comen-usumpeopleclooptog2012.pdf httpdoi.org10.11452077341.2077347 Efficient Evaluation of Semi-Smooth Creases in Catmull-Clark Subdivision Surfaces Matthias Niessner, Charles Loop, and Guenter Greiner. Eurographics Proceedings, Cagliari, 2012 httpresearch.microsoft.comen-usumpeoplecloopEG2012.pdf httpdoi.org10.2312confEG2012short041-044 Approximating Subdivision Surfaces with Gregory Patches for Hardware Tessellation Charles Loop, Scott Schaefer, Tianyun Ni, Ignacio Castano SIGGRAPH Asia Conference Proceedings 2009 httpwww.dgp.toronto.edupeoplestamrealityResearchpdfsig98.pdf httpdoi.org10.11451661412.1618497 GPU Smoothing of Quad Meshes T. L. Ni, Y. Yeo, A. Myles, V. Goel and J. Peters Proc. IEEE SMI 2008 httpwww.cise.ufl.eduresearchSurfLabpaperssmi08.pdf httpdoi.org10.1109SMI.2008.4547938 Fast Parallel Construction of Smooth Surfaces from Meshes with TriQuadPent Facets A. Myles and T. Ni and J. Peters Eurographics Symposium on Geometry Processing 2008 httpswww.cise.ufl.eduresearchSurfLabpapers08poly.pdf httpdoi.org10.1111j.1467-8659.2008.01276.x Approximating Catmull-Clark Subdivision Surfaces with Bicubic Patches Charles Loop, Scott Schaefer ACM Transactions on Graphics, Vol. 27 No. 1 Article 8 March 2008 httpresearch.microsoft.comen-usumpeoplecloopacctog.pdf httpdoi.org10.11451330511.1330519 Rapid Evaluation of Catmull-Clark Subdivision Surfaces Jeffrey Bolz and Peter Schroder Web3D Proceedings 2002 httpwww.multires.caltech.edupubsfastsubd.pdf httpdoi.org10.1145504502.504505 Piecewise Smooth Subdivision Surfaces with Normal Control Henning Biermann, Adi Levin and Denis Zorin SIGGRAPH 2000 Conference Proceedings httpmrl.nyu.edudzorinpapersbiermann2000pss.pdf httpdoi.org10.1145344779.344841 Subdivision for Modeling and Animation Denis Zorin, Peter Schroder Course Notes of SIGGRAPH 1999 httpwww.multires.caltech.edupubssig99notes.pdf Exact Evaluation of Catmull-Clark Subdivision Surfaces at Arbitrary Parameter Values Jos Stam SIGGRAPH 98 Conference Proceedings, Annual Conference Series, July 1998 httpwww.dgp.toronto.edupeoplestamrealityResearchpdfsig98.pdf httpdoi.org10.1145280814.280945 Subdivision Surfaces in Character Animation Tony DeRose, Michael Kass, Tien Truong Proceedings of SIGGRAPH 1998 httpgraphics.pixar.comlibraryGeripaper.pdf httpdoi.org10.1145280814.280826 Efficient, Fair Interpolation Using Catmull-Clark Surfaces Mark Halstead, Michael Kass, Tony DeRose SIGGRAPH 93 Conference Proceedings httpgraphics.pixar.comlibraryFairSubdivisionpaper.pdf httpdoi.org10.1145166117.166121 Recursively generated B-spline surfaces on arbitrary topological meshes Catmull, E. Clark, J. Computer-Aided Design 10 6 1978 httpdoi.org10.10160010-448528782990110-0 Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"title\": \"Downloads\",\n+        \"text\": \"Downloads Downloads 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE Coupe Car Coupe Car Note  we can use javascripts buttons to trigger download see button-download or we can just paste regular ReST hyperlinks to the files here. Direct links probably more reliable though. Coupe car maya Download Coupe car obj Download EULA OpenSubdiv is covered by a modified Apache 2.0 license included below, and is free to use for commercial or non-commercial use. All Pixar patents in the area of subdivision surface algorithms have also been released for public use. We welcome any involvement in the development or extension of this code in fact, we would love it. Please contact us if you are interested. Copyright 2013 Pixar Licensed under the Apache License, Version 2.0 the Apache License with the following modification you may not use this file except in compliance with the Apache License and the following modification to it Section 6. Trademarks. is deleted and replaced with 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor and its affiliates, except as required to comply with Section 4c of the License and to reproduce the content of the NOTICE file. You may obtain a copy of the Apache License at httpwww.apache.orglicensesLICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the Apache License with the above modification is distributed on an AS IS BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the Apache License for the specific language governing permissions and limitations under the Apache License. Accept Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n-        \"loc\": \"references.html\"\n+        \"loc\": \"downloads.html\"\n     }, {\n-        \"title\": \"far_tutorial_2_3.cpp\",\n-        \"text\": \"far_tutorial_2_3.cpp far_tutorial_2_3.cpp 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE httpsgithub.comPixarAnimationStudiosOpenSubdivblobreleasetutorialsfartutorial_2_3far_tutorial_2_3.cpp ------------------------------------------------------------------------------  Tutorial description   NOTE The following approaches are approximations to compute smooth normals,  for highest fidelity patches should be used for positions and normals,  which form the true limit surface.   Building on tutorial 3, this example shows how to instantiate a simple mesh,  refine it uniformly, interpolate both vertex and face-varying  primvar data, and finally calculate approximated smooth normals.  The resulting interpolated data is output in obj format.   Currently, this tutorial supports 3 methods to approximate smooth normals   CrossTriangle  Calculates smooth normals accumulating per vertex using  3 verts to generate 2 vectors. This approximation has  trouble when working with quads which can be non-planar  since it only takes into account half of each face.   CrossQuad  Calculates smooth normals accumulating per vertex  but this time, instead of taking into account only 3 verts  it creates 2 vectors crossing the quad.  This approximation builds upon CrossTriangle but takes  into account the 4 verts of the face.   Limit  Calculates the normals at the limit for each vert  at the last level of subdivision.  These are the true limit normals, however, in this example  they are used with verts that are not at the limit.  This can lead to new visual artifacts since the normals  and the positions dont match. Additionally, this approach  requires extra computation to calculate the limit normals.  For this reason, we strongly suggest using  limit positions with limit normals.  include opensubdivfartopologyDescriptor.h include opensubdivfarprimvarRefiner.h include cstdio ------------------------------------------------------------------------------  Math helpers.    Returns the normalized version of the input vector inline void normalize  float  n   float rn  1.0f  sqrtf  n  0   n  0   n  1   n  1   n  2   n  2  n  0   rn  n  1   rn  n  2   rn    Returns the cross product of p v1 and p v2. void cross  float const  v1 , float const  v2 , float  vOut   vOut  0   v1  1   v2  2  - v1  2   v2  1  vOut  1   v1  2   v2  0  - v1  0   v2  2  vOut  2   v1  0   v2  1  - v1  1   v2  0   ------------------------------------------------------------------------------  Face-varying implementation.   struct Vertex   Minimal required interface ---------------------- Vertex   Clear   Vertex  Vertex const  src   position  0   src . position  0  position  1   src . position  1  position  2   src . position  2   void Clear   position  0   position  1   position  2   0.0f   void AddWithWeight  Vertex const  src , float weight   position  0   weight  src . position  0  position  1   weight  src . position  1  position  2   weight  src . position  2    Public interface ------------------------------------ void SetPosition  float x , float y , float z   position  0   x  position  1   y  position  2   z   const float  GetPosition  const  return position   float position  3   ------------------------------------------------------------------------------  Face-varying container implementation.   We are using a uv texture layout as a face-varying primtiive variable  attribute. Because face-varying data is specified per-face-per-vertex,  we cannot use the same container that we use for vertex or varying  data. We specify a new container, which only carries u,v coordinates.  Similarly to our Vertex container, we add a minimaliztic interpolation  interface with a Clear and AddWithWeight methods.  struct FVarVertexUV   Minimal required interface ---------------------- void Clear   u  v  0.0f   void AddWithWeight  FVarVertexUV const  src , float weight   u  weight  src . u  v  weight  src . v    Basic uv layout channel float u , v   struct FVarVertexColor   Minimal required interface ---------------------- void Clear   r  g  b  a  0.0f   void AddWithWeight  FVarVertexColor const  src , float weight   r  weight  src . r  g  weight  src . g  b  weight  src . b  a  weight  src . a    Basic color layout channel float r , g , b , a   ------------------------------------------------------------------------------  Cube geometry from catmark_cube.h  vertex primitive variable data  topology static float g_verts  8  3    -0.5f , -0.5f , 0.5f ,  0.5f , -0.5f , 0.5f ,  -0.5f , 0.5f , 0.5f ,  0.5f , 0.5f , 0.5f ,  -0.5f , 0.5f , -0.5f ,  0.5f , 0.5f , -0.5f ,  -0.5f , -0.5f , -0.5f ,  0.5f , -0.5f , -0.5f  static int g_nverts  8 , g_nfaces  6  static int g_vertsperface  6    4 , 4 , 4 , 4 , 4 , 4  static int g_vertIndices  24    0 , 1 , 3 , 2 , 2 , 3 , 5 , 4 , 4 , 5 , 7 , 6 , 6 , 7 , 1 , 0 , 1 , 7 , 5 , 3 , 6 , 0 , 2 , 4   face-varying primitive variable data  topology for UVs static float g_uvs  14  2    0.375 , 0.00 ,  0.625 , 0.00 ,  0.375 , 0.25 ,  0.625 , 0.25 ,  0.375 , 0.50 ,  0.625 , 0.50 ,  0.375 , 0.75 ,  0.625 , 0.75 ,  0.375 , 1.00 ,  0.625 , 1.00 ,  0.875 , 0.00 ,  0.875 , 0.25 ,  0.125 , 0.00 ,  0.125 , 0.25  static int g_nuvs  14  static int g_uvIndices  24    0 , 1 , 3 , 2 , 2 , 3 , 5 , 4 , 4 , 5 , 7 , 6 , 6 , 7 , 9 , 8 , 1 , 10 , 11 , 3 , 12 , 0 , 2 , 13   face-varying primitive variable data  topology for color static float g_colors  24  4    1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 0.0 , 0.0 , 1.0 ,  1.0 , 0.0 , 0.0 , 1.0 ,  1.0 , 0.0 , 0.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0  static int g_ncolors  24  static int g_colorIndices  24    0 , 3 , 9 , 6 , 7 , 10 , 15 , 12 , 13 , 16 , 21 , 18 , 19 , 22 , 4 , 1 , 5 , 23 , 17 , 11 , 20 , 2 , 8 , 14  using namespace OpenSubdiv   Approximation methods for smooth normal computations enum NormalApproximation  CrossTriangle , CrossQuad , Limit  ------------------------------------------------------------------------------ int main  int argc , char  argv   const int maxlevel  2  enum NormalApproximation normalApproximation  CrossTriangle   Parsing command line parameters to see if the user wants to use a  specific method to calculate normals for  int i  1  i  argc   i   if  strstr  argv  i , -limit   normalApproximation  Limit   else if   strcmp  argv  i , -crossquad   normalApproximation  CrossQuad   else if   strcmp  argv  i , -crosstriangle   normalApproximation  CrossTriangle   else  printf  Parameters  n   printf   -crosstriangle  use the cross product of vectors n   printf   generated from 3 verts default. n   printf   -crossquad  use the cross product of vectors n   printf   generated from 4 verts. n   printf   -limit  use normals calculated from the limit. n   return 0    typedef Far  TopologyDescriptor Descriptor  Sdc  SchemeType type  OpenSubdiv  Sdc  SCHEME_CATMARK  Sdc  Options options  options . SetVtxBoundaryInterpolation  Sdc  Options  VTX_BOUNDARY_EDGE_ONLY  options . SetFVarLinearInterpolation  Sdc  Options  FVAR_LINEAR_NONE   Populate a topology descriptor with our raw data Descriptor desc  desc . numVertices  g_nverts  desc . numFaces  g_nfaces  desc . numVertsPerFace  g_vertsperface  desc . vertIndicesPerFace  g_vertIndices   Create a face-varying channel descriptor const int numChannels  2  const int channelUV  0  const int channelColor  1  Descriptor  FVarChannel channels  numChannels  channels  channelUV . numValues  g_nuvs  channels  channelUV . valueIndices  g_uvIndices  channels  channelColor . numValues  g_ncolors  channels  channelColor . valueIndices  g_colorIndices   Add the channel topology to the main descriptor desc . numFVarChannels  numChannels  desc . fvarChannels  channels   Instantiate a FarTopologyRefiner from the descriptor Far  TopologyRefiner  refiner  Far  TopologyRefinerFactory  Descriptor  Create  desc , Far  TopologyRefinerFactory  Descriptor  Options  type , options   Uniformly refine the topolgy up to maxlevel  note fullTopologyInLastLevel must be true to work with face-varying data  Far  TopologyRefiner  UniformOptions refineOptions  maxlevel  refineOptions . fullTopologyInLastLevel  true  refiner - RefineUniform  refineOptions    Allocate and initialize the vertex primvar data see tutorial 2 for  more details. std  vector  Vertex  vbuffer  refiner - GetNumVerticesTotal  Vertex  verts   vbuffer  0  for  int i  0  i  g_nverts   i   verts  i . SetPosition  g_verts  i  0 , g_verts  i  1 , g_verts  i  2    Allocate  initialize the first channel of face-varying primvars UVs std  vector  FVarVertexUV  fvBufferUV  refiner - GetNumFVarValuesTotal  channelUV  FVarVertexUV  fvVertsUV   fvBufferUV  0  for  int i  0  i  g_nuvs   i   fvVertsUV  i . u  g_uvs  i  0  fvVertsUV  i . v  g_uvs  i  1    Allocate  interpolate the face-varying primvar data colors std  vector  FVarVertexColor  fvBufferColor  refiner - GetNumFVarValuesTotal  channelColor  FVarVertexColor  fvVertsColor   fvBufferColor  0  for  int i  0  i  g_ncolors   i   fvVertsColor  i . r  g_colors  i  0  fvVertsColor  i . g  g_colors  i  1  fvVertsColor  i . b  g_colors  i  2  fvVertsColor  i . a  g_colors  i  3    Interpolate both vertex and face-varying primvar data Far  PrimvarRefiner primvarRefiner   refiner  Vertex  srcVert  verts  FVarVertexUV  srcFVarUV  fvVertsUV  FVarVertexColor  srcFVarColor  fvVertsColor  for  int level  1  level  maxlevel   level   Vertex  dstVert  srcVert  refiner - GetLevel  level -1 . GetNumVertices  FVarVertexUV  dstFVarUV  srcFVarUV  refiner - GetLevel  level -1 . GetNumFVarValues  channelUV  FVarVertexColor  dstFVarColor  srcFVarColor  refiner - GetLevel  level -1 . GetNumFVarValues  channelColor  primvarRefiner . Interpolate  level , srcVert , dstVert  primvarRefiner . InterpolateFaceVarying  level , srcFVarUV , dstFVarUV , channelUV  primvarRefiner . InterpolateFaceVarying  level , srcFVarColor , dstFVarColor , channelColor  srcVert  dstVert  srcFVarUV  dstFVarUV  srcFVarColor  dstFVarColor    Approximate normals Far  TopologyLevel const  refLastLevel  refiner - GetLevel  maxlevel  int nverts  refLastLevel . GetNumVertices  int nfaces  refLastLevel . GetNumFaces  int firstOfLastVerts  refiner - GetNumVerticesTotal  - nverts  std  vector  Vertex  normals  nverts   Different ways to approximate smooth normals   For details check the description at the beginning of the file if  normalApproximation  Limit    Approximation using the normal at the limit with verts that are  not at the limit   For details check the description at the beginning of the file std  vector  Vertex  fineLimitPos  nverts  std  vector  Vertex  fineDu  nverts  std  vector  Vertex  fineDv  nverts  primvarRefiner . Limit   verts  firstOfLastVerts , fineLimitPos , fineDu , fineDv  for  int vert  0  vert  nverts   vert   float const  du  fineDu  vert . GetPosition  float const  dv  fineDv  vert . GetPosition  float norm  3  cross  du , dv , norm  normals  vert . SetPosition  norm  0 , norm  1 , norm  2    else if  normalApproximation  CrossQuad    Approximate smooth normals by accumulating normal vectors computed as  the cross product of two vectors generated by the 4 verts that  form each quad   For details check the description at the beginning of the file for  int f  0  f  nfaces  f    Far  ConstIndexArray faceVertices  refLastLevel . GetFaceVertices  f   We will use the first three verts to calculate a normal const float  v0  verts  firstOfLastVerts  faceVertices  0  . GetPosition  const float  v1  verts  firstOfLastVerts  faceVertices  1  . GetPosition  const float  v2  verts  firstOfLastVerts  faceVertices  2  . GetPosition  const float  v3  verts  firstOfLastVerts  faceVertices  3  . GetPosition   Calculate the cross product between the vectors formed by v1-v0 and  v2-v0, and then normalize the result float normalCalculated    0.0 , 0.0 , 0.0  float a  3    v2  0  - v0  0 , v2  1  - v0  1 , v2  2  - v0  2   float b  3    v3  0  - v1  0 , v3  1  - v1  1 , v3  2  - v1  2   cross  a , b , normalCalculated  normalize  normalCalculated   Accumulate that normal on all verts that are part of that face for  int vInFace  0  vInFace  faceVertices . size   vInFace    int vertexIndex  faceVertices  vInFace  normals  vertexIndex . position  0   normalCalculated  0  normals  vertexIndex . position  1   normalCalculated  1  normals  vertexIndex . position  2   normalCalculated  2     else if  normalApproximation  CrossTriangle    Approximate smooth normals by accumulating normal vectors computed as  the cross product of two vectors generated by 3 verts of the quad   For details check the description at the beginning of the file for  int f  0  f  nfaces  f    Far  ConstIndexArray faceVertices  refLastLevel . GetFaceVertices  f   We will use the first three verts to calculate a normal const float  v0  verts  firstOfLastVerts  faceVertices  0  . GetPosition  const float  v1  verts  firstOfLastVerts  faceVertices  1  . GetPosition  const float  v2  verts  firstOfLastVerts  faceVertices  2  . GetPosition   Calculate the cross product between the vectors formed by v1-v0 and  v2-v0, and then normalize the result float normalCalculated    0.0 , 0.0 , 0.0  float a  3    v1  0  - v0  0 , v1  1  - v0  1 , v1  2  - v0  2   float b  3    v2  0  - v0  0 , v2  1  - v0  1 , v2  2  - v0  2   cross  a , b , normalCalculated  normalize  normalCalculated   Accumulate that normal on all verts that are part of that face for  int vInFace  0  vInFace  faceVertices . size   vInFace    int vertexIndex  faceVertices  vInFace  normals  vertexIndex . position  0   normalCalculated  0  normals  vertexIndex . position  1   normalCalculated  1  normals  vertexIndex . position  2   normalCalculated  2      Finally we just need to normalize the accumulated normals for  int vert  0  vert  nverts   vert   normalize   normals  vert . position  0     Output OBJ of the highest level refined -----------  Print vertex positions for  int vert  0  vert  nverts   vert   float const  pos  verts  firstOfLastVerts  vert . GetPosition  printf  v f f f n  , pos  0 , pos  1 , pos  2    Print vertex normals for  int vert  0  vert  nverts   vert   float const  pos  normals  vert . GetPosition  printf  vn f f f n  , pos  0 , pos  1 , pos  2    Print uvs int nuvs  refLastLevel . GetNumFVarValues  channelUV  int firstOfLastUvs  refiner - GetNumFVarValuesTotal  channelUV  - nuvs  for  int fvvert  0  fvvert  nuvs   fvvert   FVarVertexUV const  uv  fvVertsUV  firstOfLastUvs  fvvert  printf  vt f f n  , uv . u , uv . v    Print faces for  int face  0  face  nfaces   face   Far  ConstIndexArray fverts  refLastLevel . GetFaceVertices  face  Far  ConstIndexArray fuvs  refLastLevel . GetFaceFVarValues  face , channelUV   all refined Catmark faces should be quads assert  fverts . size   4  fuvs . size   4  printf  f   for  int vert  0  vert  fverts . size   vert    OBJ uses 1-based arrays... printf  ddd  , fverts  vert   1 , fuvs  vert   1 , fverts  vert   1   printf   n     delete refiner  return EXIT_SUCCESS   ------------------------------------------------------------------------------ Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"title\": \"far_tutorial_4_2.cpp\",\n+        \"text\": \"far_tutorial_4_2.cpp far_tutorial_4_2.cpp 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE httpsgithub.comPixarAnimationStudiosOpenSubdivblobreleasetutorialsfartutorial_4_2far_tutorial_4_2.cpp ------------------------------------------------------------------------------  Tutorial description   This tutorial shows how to create and manipulate both vertex and varying  FarStencilTable to interpolate 2 primvar data buffers vertex positions and  vertex colors.  include opensubdivfartopologyDescriptor.h include opensubdivfarstencilTable.h include opensubdivfarstencilTableFactory.h include cstdio include cstring ------------------------------------------------------------------------------  Vertex container implementation.  struct Vertex   Minimal required interface ---------------------- Vertex    Vertex  Vertex const  src   _data  0   src . _data  0  _data  1   src . _data  1  _data  2   src . _data  2   void Clear  void   0   _data  0   _data  1   _data  2   0.0f   void AddWithWeight  Vertex const  src , float weight   _data  0   weight  src . _data  0  _data  1   weight  src . _data  1  _data  2   weight  src . _data  2    Public interface ------------------------------------ float const  GetData  const  return _data   private  float _data  3   ------------------------------------------------------------------------------  Cube geometry from catmark_cube.h static float g_verts  24    -0.5f , -0.5f , 0.5f , 0.5f , -0.5f , 0.5f , -0.5f , 0.5f , 0.5f , 0.5f , 0.5f , 0.5f , -0.5f , 0.5f , -0.5f , 0.5f , 0.5f , -0.5f , -0.5f , -0.5f , -0.5f , 0.5f , -0.5f , -0.5f   Per-vertex RGB color data static float g_colors  24    1.0f , 0.0f , 0.5f , 0.0f , 1.0f , 0.0f , 0.0f , 0.0f , 1.0f , 1.0f , 1.0f , 1.0f , 1.0f , 1.0f , 0.0f , 0.0f , 1.0f , 1.0f , 1.0f , 0.0f , 1.0f , 0.0f , 0.0f , 0.0f  static int g_nverts  8 , g_nfaces  6  static int g_vertsperface  6    4 , 4 , 4 , 4 , 4 , 4  static int g_vertIndices  24    0 , 1 , 3 , 2 , 2 , 3 , 5 , 4 , 4 , 5 , 7 , 6 , 6 , 7 , 1 , 0 , 1 , 7 , 5 , 3 , 6 , 0 , 2 , 4  using namespace OpenSubdiv  static Far  TopologyRefiner  createTopologyRefiner  ------------------------------------------------------------------------------ int main  int , char     Generate a FarTopologyRefiner see tutorial_1_1 for details. Far  TopologyRefiner  refiner  createTopologyRefiner   Uniformly refine the topology up to maxlevel. int maxlevel  4  refiner - RefineUniform  Far  TopologyRefiner  UniformOptions  maxlevel  int nverts  refiner - GetLevel  maxlevel . GetNumVertices   Use the FarStencilTable factory to create discrete stencil table Far  StencilTableFactory  Options options  options . generateIntermediateLevels  false   only the highest refinement level. options . generateOffsets  true    Vertex primvar data   Create stencils table for vertex interpolation options . interpolationMode  Far  StencilTableFactory  INTERPOLATE_VERTEX  Far  StencilTable const  vertexStencils  Far  StencilTableFactory  Create   refiner , options  assert  nverts  vertexStencils - GetNumStencils   Allocate vertex primvar buffer 1 stencil for each vertex std  vector  Vertex  vertexBuffer  vertexStencils - GetNumStencils   Use the cube vertex positions as vertex primvar data Vertex  vertexCVs  reinterpret_cast  Vertex   g_verts    Varying primvar data   Create stencils table for varying interpolation options . interpolationMode  Far  StencilTableFactory  INTERPOLATE_VARYING  Far  StencilTable const  varyingStencils  Far  StencilTableFactory  Create   refiner , options  assert  nverts  varyingStencils - GetNumStencils   Allocate varying primvar buffer 1 stencil for each vertex std  vector  Vertex  varyingBuffer  varyingStencils - GetNumStencils   Use per-vertex array of RGB colors as varying primvar data Vertex  varyingCVs  reinterpret_cast  Vertex   g_colors  delete refiner    Apply stencils in frame loop    This section would be applied every frame after control vertices have  been moved.  Apply stencils on the control vertex data to update the primvar data  of the refined vertices. vertexStencils - UpdateValues  vertexCVs ,  vertexBuffer  0  varyingStencils - UpdateValues  varyingCVs ,  varyingBuffer  0     Visualization with Maya  print a MEL script that generates particles  at the location of the refined vertices printf  particle   for  int vert  0  vert   int  nverts   vert   float const  pos  vertexBuffer  vert . GetData  printf  -p f f f n  , pos  0 , pos  1 , pos  2   printf  -c 1 n    Set particle point size 20 -- very large printf  addAttr -is true -ln  pointSize  -at long -dv 20 particleShape1 n    Add per-particle color attribute rgbPP printf  addAttr -ln  rgbPP  -dt vectorArray particleShape1 n    Set per-particle color values from our varying primvar data printf  setAttr  particleShape1.rgbPP  -type  vectorArray  d  , nverts  for  int vert  0  vert  nverts   vert   float const  color  varyingBuffer  vert . GetData  printf  f f f n  , color  0 , color  1 , color  2   printf   n    delete vertexStencils  delete varyingStencils  return EXIT_SUCCESS   ------------------------------------------------------------------------------ static Far  TopologyRefiner  createTopologyRefiner    Populate a topology descriptor with our raw data. typedef Far  TopologyDescriptor Descriptor  Sdc  SchemeType type  OpenSubdiv  Sdc  SCHEME_CATMARK  Sdc  Options options  options . SetVtxBoundaryInterpolation  Sdc  Options  VTX_BOUNDARY_EDGE_ONLY  Descriptor desc  desc . numVertices  g_nverts  desc . numFaces  g_nfaces  desc . numVertsPerFace  g_vertsperface  desc . vertIndicesPerFace  g_vertIndices   Instantiate a FarTopologyRefiner from the descriptor. Far  TopologyRefiner  refiner  Far  TopologyRefinerFactory  Descriptor  Create  desc , Far  TopologyRefinerFactory  Descriptor  Options  type , options  return refiner   ------------------------------------------------------------------------------ Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n-        \"loc\": \"far_tutorial_2_3.html\"\n+        \"loc\": \"far_tutorial_4_2.html\"\n     }, {\n         \"title\": \"Overview of Release 3.2\",\n         \"text\": \"Overview of Release 3.2 Overview of Release 3.2 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE New Features Face-Varying Stencil Evaluation 1st and 2nd Derivative Evaluation Smooth Corner Patch API Additions OsdCpuEvaluator, GLComputeEvaluator, etc OsdMesh OsdMeshBits FarPatchTableFactoryOptions FarStencilTableFactory FarStencilTableFactoryOptions Other Changes Improvements Bug Fixes New Features Face-Varying Stencil Evaluation Face-Varying primvar values may now be refined using stencil tables. The stencil table for a face-varying channel is created by specifying the desired fvarChannel and setting the FarStencilTableFactoryOption interpolationMode to INTERPOLATE_FACE_VARYING when creating the stencil table. 1st and 2nd Derivative Evaluation The Osd Evaluator API has been extended to support 1st derivative and 2nd partial derivative evaluation for stencils and patches. 1st Derivative Surface Normal 2nd Derivative Surface Curvature On the left is an example of computing a surface normal at each point using the evaluated 1st derivatives, while on the right is an example of computing surface curvature at each point using the evaluated 2nd partial derivatives. Smooth Corner Patch An option has been added to disable the legacy behavior of generating a sharp-corner patch at a smooth corner. Corners which are actually sharp will continue to generate sharp-corner patches. The differences between the two methods is most apparent at low-levels of feature isolation. This feature is controlled by the generateLegacySharpCornerPatches option added to FarPatchTableFactoryOptions. Sharp Corner Patch legacy behavior Smooth Corner Patch On the left is the legacy behavior of generating sharp corner patches at smooth corners. The image on the right shows the correct smooth corner patches generated when this legacy behavior is disabled. API Additions See associated Doxygen for full details. OsdCpuEvaluator, GLComputeEvaluator, etc Create EvalStencils EvalPatches EvalPatchesVarying EvalPatchesFaceVarying OsdMesh Create OsdMeshBits member MeshUseSmoothCornerPatch FarPatchTableFactoryOptions member generateLegacySharpCornerPatches FarStencilTableFactory enumeration ModeINTERPOLATE_FACE_VARYING AppendLocalPointStencilTableFaceVarying FarStencilTableFactoryOptions member fvarChannel Other Changes Improvements Corrected numerous spelling errors in doxygen comments Updated glFVarViewer with improved error detection and command line parsing Added option to build using MSVC with static CRT Bug Fixes Fixed a double delete of GL program in OsdGLComputeEvaluator Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n         \"loc\": \"release_32.html\"\n     }, {\n-        \"title\": \"Overview of Release 3.6\",\n-        \"text\": \"Overview of Release 3.6 Overview of Release 3.6 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE New Features Modern Graphics APIs and Parallel Computation Updated Third-party APIs and Tools API Additions Additions to OsdPatchShaderSource Osd extensions for patch evaluation from client shaders and compute kernels Other Changes Deprecation Announcements Improvements Bug Fixes New Features The purpose of this release is to address concerns which improve support for current typical use cases and provide support for significant new use cases. Modern Graphics APIs and Parallel Computation OpenSubdiv is organized as a set of components for working with subdivision surface representations, i.e. Bfr, Far, Vtr, Sdc along with a collection of back-end components in Osd supporting the use of specific low-level subsystems to work with subdivision surface data. These back-end components in Osd have taken many forms including in some cases specific complete GPU shaders along with controller classes to manage compilation and execution of these shaders. In practice it has been more effective for Osd to simply supply the functions needed to operate on subdivision surface data, allowing the client application or client library to take care of using these functions from client provided shaders and computation kernels using client provided execution controllers. This has been the direction for the Osd library for some time and the changes implemented in this release make this even more straightforward. The existing methods OsdGLSLPatchShaderSourceGetPatchBasisShaderSource OsdHLSLPatchShaderSourceGetPatchBasisShaderSource OsdMTLPatchShaderSourceGetPatchBasisShaderSource continue to return shader source strings at runtime which contain definitions and functions allowing client shader code to evaluate values and first and second derivatives on the piecewise parametric patches resulting from subdivison refinement. The identical code is now available at compile time as opensubdivosdpatchBasis.h and is essentially a shader interface that can be used from client kernels including those implemented using TBB, CUDA, C, etc. Similarly, the new methods OsdGLSLPatchShaderSourceGetPatchDrawingShaderSource OsdHLSLPatchShaderSourceGetPatchDrawingShaderSource OsdMTLPatchShaderSourceGetPatchDrawingShaderSource return shader source strings at runtime which contain definitions and functions allowing clients to draw the piecewise parametric patches resulting from subdivision, e.g. using GPU tessellation shaders or GPU mesh shaders. The returned shader source has been stripped of resource binding and other potentially problematic defintions since these are usually best handled by client shader code. These methods have been tested successfully with new client code using Vulkan and DirectX 12 in addition to existing client code using OpenGL, Metal, DirectX 11, etc. Updated Third-party APIs and Tools While the methods described above will be the most effective way to use OpenSubdiv, some of the existing back-end components have been updated to accommodate evolving third-party APIs and tools. Specifically, the TBB implementation has been updated to allow use with the oneTBB API while continuing to maintain compatibility with earlier releases of TBB. Also, there have been minor fixes to the CMake build to accommodate using the Ninja build system and also systems with OpenCL 3.0. API Additions See associated Doxygen for full details. Additions to OsdPatchShaderSource GLSLPatchShaderSourceGetPatchDrawingShaderSource HLSLPatchShaderSourceGetPatchDrawingShaderSource MTLPatchShaderSourceGetPatchDrawingShaderSource Osd extensions for patch evaluation from client shaders and compute kernels struct OsdPatchArray and OsdPatchArrayInit struct OsdPatchCoord and OsdPatchCoordInit struct OsdPatchParam and OsdPatchParamInit OsdPatchParamGetFaceId OsdPatchParamGetU OsdPatchParamGetV OsdPatchParamGetTransition OsdPatchParamGetBoundary OsdPatchParamGetNonQuadRoot OsdPatchParamGetDepth OsdPatchParamGetParamFraction OsdPatchParamIsRegular OsdPatchParamIsTriangleRotated OsdPatchParamNormalize OsdPatchParamUnnormalize OsdPatchParamNormalizeTriangle OsdPatchParamUnnormalizeTriangle OsdEvaluatePatchBasisNormalized OsdEvaluatePatchBasis Other Changes Deprecation Announcements The methods OsdTbbEvaluatorSetNumThreads and OsdOmpEvaluatorSetNumThreads have been marked deprecated. Improvements Updated Osd patch drawing shader source to exclude legacy shader constructs to improve compatibility with Vulkan, DX12, etc. GitHub 1320 Installed Osd patch evaluation headers to allow use from client shaders and compute kernels GitHub 1321 Updated CMake build to locate TBB using TBBs CMake config in order to support oneTBB GitHub 1319 Updated CMake FindOpenCL module to support parsing version information from recent OpenCL headers GitHub 1322 Removed obsolete .travis.yml GitHub 1324 Bug Fixes Fixed inconsistent warning levels for MSVC builds when using Ninja GitHub 1318 Fixed documentation build errors when using Ninja GitHub 1323 Fixed build errors resulting from oneTBB API changes GitHub 1317 Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n-        \"tags\": \"\",\n-        \"loc\": \"release_36.html\"\n-    }, {\n-        \"title\": \"Code Examples\",\n-        \"text\": \"Code Examples Code Examples 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE Standalone Viewers OpenSubdiv builds a number of standalone viewers that demonstrate various aspects of the software. OpenGL examples glViewer glFVarViewer glEvalLimit glStencilViewer glPtexViewer glPaintTest glShareTopology DirectX examples dxViewer dxPtexViewer Metal examples mtlViewer mtlPtexViewer Common Command Line Options While the following command line options are common, not all examples support all -- in some cases, certain options are not applicable. -f  launches the application in full-screen mode if supported -yup  set initial view with Y-axis up Z-up is the default -u  apply uniform subdivision to all meshes -a  apply adaptive subdivision to create patches for the limit surface -l depth  level of uniform or adaptive refinement to apply -c count  number of repetitions of the animation loop when supported default of 0 is infinite -anim  interpret a given set of Obj files as an animated sequence rather than a set of distinct meshes -catmark  apply the Catmark scheme to all meshes in given Obj files default -loop  apply the Loop scheme to all meshes in given Obj files -bilinear  apply the Bilinear scheme to all meshes in given Obj files objfiles  a set of one or more meshes in Obj format requiring a .obj extension that may be distinct meshes or animated versions of a single mesh Common Keyboard Controls Left mouse button drag  orbit camera Middle mouse button drag  pan camera Right mouse button  dolly camera n, p  nextprev model 1, 2, 3, ..., 9, 0  specify adaptive isolation or uniform refinement level , -  increase  decrease tessellation Tab  toggle full-screen Esc  turn on  off the HUD w  switch display mode q  quit Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"title\": \"far_tutorial_1_1.cpp\",\n+        \"text\": \"far_tutorial_1_1.cpp far_tutorial_1_1.cpp 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE httpsgithub.comPixarAnimationStudiosOpenSubdivblobreleasetutorialsfartutorial_1_1far_tutorial_1_1.cpp ------------------------------------------------------------------------------  Tutorial description   This tutorial presents in a very succinct way the requisite steps to  instantiate and refine a mesh with Far from simple topological data.  include opensubdivfartopologyDescriptor.h include opensubdivfarprimvarRefiner.h include cstdio ------------------------------------------------------------------------------  Vertex container implementation.  struct Vertex   Minimal required interface ---------------------- Vertex    Vertex  Vertex const  src   _position  0   src . _position  0  _position  1   src . _position  1  _position  2   src . _position  2   void Clear  void   0   _position  0   _position  1   _position  2   0.0f   void AddWithWeight  Vertex const  src , float weight   _position  0   weight  src . _position  0  _position  1   weight  src . _position  1  _position  2   weight  src . _position  2    Public interface ------------------------------------ void SetPosition  float x , float y , float z   _position  0   x  _position  1   y  _position  2   z   const float  GetPosition  const  return _position   private  float _position  3   ------------------------------------------------------------------------------  Cube geometry from catmark_cube.h static float g_verts  8  3    -0.5f , -0.5f , 0.5f ,  0.5f , -0.5f , 0.5f ,  -0.5f , 0.5f , 0.5f ,  0.5f , 0.5f , 0.5f ,  -0.5f , 0.5f , -0.5f ,  0.5f , 0.5f , -0.5f ,  -0.5f , -0.5f , -0.5f ,  0.5f , -0.5f , -0.5f  static int g_nverts  8 , g_nfaces  6  static int g_vertsperface  6    4 , 4 , 4 , 4 , 4 , 4  static int g_vertIndices  24    0 , 1 , 3 , 2 , 2 , 3 , 5 , 4 , 4 , 5 , 7 , 6 , 6 , 7 , 1 , 0 , 1 , 7 , 5 , 3 , 6 , 0 , 2 , 4  using namespace OpenSubdiv  ------------------------------------------------------------------------------ int main  int , char     Populate a topology descriptor with our raw data typedef Far  TopologyDescriptor Descriptor  Sdc  SchemeType type  OpenSubdiv  Sdc  SCHEME_CATMARK  Sdc  Options options  options . SetVtxBoundaryInterpolation  Sdc  Options  VTX_BOUNDARY_EDGE_ONLY  Descriptor desc  desc . numVertices  g_nverts  desc . numFaces  g_nfaces  desc . numVertsPerFace  g_vertsperface  desc . vertIndicesPerFace  g_vertIndices   Instantiate a FarTopologyRefiner from the descriptor Far  TopologyRefiner  refiner  Far  TopologyRefinerFactory  Descriptor  Create  desc , Far  TopologyRefinerFactory  Descriptor  Options  type , options  int maxlevel  2   Uniformly refine the topology up to maxlevel refiner - RefineUniform  Far  TopologyRefiner  UniformOptions  maxlevel   Allocate a buffer for vertex primvar data. The buffer length is set to  be the sum of all children vertices up to the highest level of refinement. std  vector  Vertex  vbuffer  refiner - GetNumVerticesTotal  Vertex  verts   vbuffer  0   Initialize coarse mesh positions int nCoarseVerts  g_nverts  for  int i  0  i  nCoarseVerts   i   verts  i . SetPosition  g_verts  i  0 , g_verts  i  1 , g_verts  i  2    Interpolate vertex primvar data Far  PrimvarRefiner primvarRefiner   refiner  Vertex  src  verts  for  int level  1  level  maxlevel   level   Vertex  dst  src  refiner - GetLevel  level -1 . GetNumVertices  primvarRefiner . Interpolate  level , src , dst  src  dst     Output OBJ of the highest level refined ----------- Far  TopologyLevel const  refLastLevel  refiner - GetLevel  maxlevel  int nverts  refLastLevel . GetNumVertices  int nfaces  refLastLevel . GetNumFaces   Print vertex positions int firstOfLastVerts  refiner - GetNumVerticesTotal  - nverts  for  int vert  0  vert  nverts   vert   float const  pos  verts  firstOfLastVerts  vert . GetPosition  printf  v f f f n  , pos  0 , pos  1 , pos  2    Print faces for  int face  0  face  nfaces   face   Far  ConstIndexArray fverts  refLastLevel . GetFaceVertices  face   all refined Catmark faces should be quads assert  fverts . size   4  printf  f   for  int vert  0  vert  fverts . size   vert   printf  d  , fverts  vert   1   OBJ uses 1-based arrays...  printf   n     delete refiner  return EXIT_SUCCESS   ------------------------------------------------------------------------------ Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n-        \"loc\": \"code_examples.html\"\n+        \"loc\": \"far_tutorial_1_1.html\"\n     }, {\n-        \"title\": \"far_tutorial_5_1.cpp\",\n-        \"text\": \"far_tutorial_5_1.cpp far_tutorial_5_1.cpp 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE httpsgithub.comPixarAnimationStudiosOpenSubdivblobreleasetutorialsfartutorial_5_1far_tutorial_5_1.cpp ------------------------------------------------------------------------------  Tutorial description   This tutorial shows how to interpolate surface limits at arbitrary  parametric locations using feature adaptive FarPatchTables.   The evaluation of the limit surface at arbitrary locations requires the  adaptive isolation of topological features. This process converts the  input polygonal control cage into a collection of bi-cubic patches.   We can then evaluate the patches at random parametric locations and  obtain analytical positions and tangents on the limit surface.   The results are dumped into a MEL script that draws streak particle  systems that show the tangent and bi-tangent at the random samples locations.  include opensubdivfartopologyDescriptor.h include opensubdivfarprimvarRefiner.h include opensubdivfarpatchTableFactory.h include opensubdivfarpatchMap.h include opensubdivfarptexIndices.h include cassert include cstdio include cstring include cfloat using namespace OpenSubdiv  typedef double Real   pyramid geometry from catmark_pyramid_crease0.h static int const g_nverts  5  static Real const g_verts  24    0.0f , 0.0f , 2.0f , 0.0f , -2.0f , 0.0f , 2.0f , 0.0f , 0.0f , 0.0f , 2.0f , 0.0f , -2.0f , 0.0f , 0.0f ,  static int const g_vertsperface  5    3 , 3 , 3 , 3 , 4  static int const g_nfaces  5  static int const g_faceverts  16    0 , 1 , 2 , 0 , 2 , 3 , 0 , 3 , 4 , 0 , 4 , 1 , 4 , 3 , 2 , 1  static int const g_ncreases  4  static int const g_creaseverts  8    4 , 3 , 3 , 2 , 2 , 1 , 1 , 4  static float const g_creaseweights  4    3.0f , 3.0f , 3.0f , 3.0f   Creates a FarTopologyRefiner from the pyramid shape above static Far  TopologyRefiner  createTopologyRefiner  ------------------------------------------------------------------------------  Vertex container implementation.  struct Vertex   Minimal required interface ---------------------- Vertex    void Clear  void   0   point  0   point  1   point  2   0.0f   void AddWithWeight  Vertex const  src , Real weight   point  0   weight  src . point  0  point  1   weight  src . point  1  point  2   weight  src . point  2   Real point  3   ------------------------------------------------------------------------------  Limit frame container implementation -- this interface is not strictly  required but follows a similar pattern to Vertex.  struct LimitFrame  void Clear  void   0   point  0   point  1   point  2   0.0f  deriv1  0   deriv1  1   deriv1  2   0.0f  deriv2  0   deriv2  1   deriv2  2   0.0f   void AddWithWeight  Vertex const  src , Real weight , Real d1Weight , Real d2Weight   point  0   weight  src . point  0  point  1   weight  src . point  1  point  2   weight  src . point  2  deriv1  0   d1Weight  src . point  0  deriv1  1   d1Weight  src . point  1  deriv1  2   d1Weight  src . point  2  deriv2  0   d2Weight  src . point  0  deriv2  1   d2Weight  src . point  1  deriv2  2   d2Weight  src . point  2   Real point  3 , deriv1  3 , deriv2  3   ------------------------------------------------------------------------------ int main  int , char     Generate a FarTopologyRefiner see tutorial_1_1 for details. Far  TopologyRefiner  refiner  createTopologyRefiner   Patches are constructed from adaptively refined faces, but the processes  of constructing the PatchTable and of applying adaptive refinement have  historically been separate. Adaptive refinement is applied purely to  satisfy the needs of the desired PatchTable, so options associated with  adaptive refinement should be derived from those specified for the  PatchTable. This is not a strict requirement, but it will avoid  problems arising from specifyingcoordinating the two independently  especially when dealing with face-varying patches.  Initialize options for the PatchTable   Choose patches adaptively refined to level 3 since the sharpest crease  in the shape is 3.0f in g_creaseweights, and include the inf-sharp  crease option just to illustrate the need to syncronize options.  int maxPatchLevel  3  Far  PatchTableFactory  Options patchOptions  maxPatchLevel  patchOptions . SetPatchPrecision  Real   patchOptions . useInfSharpPatch  true  patchOptions . generateVaryingTables  false  patchOptions . endCapType  Far  PatchTableFactory  Options  ENDCAP_GREGORY_BASIS   Initialize corresonding options for adaptive refinement Far  TopologyRefiner  AdaptiveOptions adaptiveOptions  maxPatchLevel  bool assignAdaptiveOptionsExplicitly  false  if  assignAdaptiveOptionsExplicitly   adaptiveOptions . useInfSharpPatch  true   else   Be sure patch options were intialized with the desired max level adaptiveOptions  patchOptions . GetRefineAdaptiveOptions   assert  adaptiveOptions . useInfSharpPatch  patchOptions . useInfSharpPatch   Apply adaptive refinement and construct the associated PatchTable to  evaluate the limit surface refiner - RefineAdaptive  adaptiveOptions  Far  PatchTable const  patchTable  Far  PatchTableFactory  Create   refiner , patchOptions   Compute the total number of points we need to evaluate the PatchTable.  Approximations at irregular or extraordinary features require the use  of additional points associated with the patches that are referred to  as local points i.e. local to the PatchTable. int nRefinerVertices  refiner - GetNumVerticesTotal  int nLocalPoints  patchTable - GetNumLocalPoints   Create a buffer to hold the position of the refined verts and  local points, then copy the coarse positions at the beginning. std  vector  Vertex  verts  nRefinerVertices  nLocalPoints  std  memcpy   verts  0 , g_verts , g_nverts  3  sizeof  Real   Adaptive refinement may result in fewer levels than the max specified. int nRefinedLevels  refiner - GetNumLevels   Interpolate vertex primvar data  they are the control vertices  of the limit patches see tutorial_1_1 for details Far  PrimvarRefinerReal  Real  primvarRefiner   refiner  Vertex  src   verts  0  for  int level  1  level  nRefinedLevels   level   Vertex  dst  src  refiner - GetLevel  level -1 . GetNumVertices  primvarRefiner . Interpolate  level , src , dst  src  dst    Evaluate local points from interpolated vertex primvars. if  nLocalPoints   patchTable - GetLocalPointStencilTable  Real   - UpdateValues   verts  0 ,  verts  nRefinerVertices    Create a FarPatchMap to help locating patches in the table Far  PatchMap patchmap   patchTable   Create a FarPtexIndices to help find indices of ptex faces. Far  PtexIndices ptexIndices   refiner   Generate random samples on each ptex face int nsamplesPerFace  200 , nfaces  ptexIndices . GetNumFaces  std  vector  LimitFrame  samples  nsamplesPerFace  nfaces  srand  static_cast  int   2147483647   Real pWeights  20 , dsWeights  20 , dtWeights  20  for  int face  0 , count  0  face  nfaces   face   for  int sample  0  sample  nsamplesPerFace   sample ,  count   Real s   Real  rand    Real  RAND_MAX , t   Real  rand    Real  RAND_MAX   Locate the patch corresponding to the face ptex idx and s,t Far  PatchTable  PatchHandle const  handle  patchmap . FindPatch  face , s , t  assert  handle   Evaluate the patch weights, identify the CVs and compute the limit frame patchTable - EvaluateBasis   handle , s , t , pWeights , dsWeights , dtWeights  Far  ConstIndexArray cvs  patchTable - GetPatchVertices   handle  LimitFrame  dst  samples  count  dst . Clear  for  int cv  0  cv  cvs . size   cv   dst . AddWithWeight  verts  cvs  cv , pWeights  cv , dsWeights  cv , dtWeights  cv       Visualization with Maya  print a MEL script that generates particles  at the location of the limit vertices int nsamples   int  samples . size  printf  file -f -new n    Output particle positions for the tangent printf  particle -n deriv1   for  int sample  0  sample  nsamples   sample   Real const  pos  samples  sample . point  printf  -p f f f n  , pos  0 , pos  1 , pos  2   printf   n    Set per-particle direction using the limit tangent display as Streak printf  setAttr  deriv1.particleRenderType  6 n   printf  setAttr  deriv1.velocity  -type  vectorArray  d  , nsamples  for  int sample  0  sample  nsamples   sample   Real const  tan1  samples  sample . deriv1  printf  f f f n  , tan1  0 , tan1  1 , tan1  2   printf   n    Output particle positions for the bi-tangent printf  particle -n deriv2   for  int sample  0  sample  nsamples   sample   Real const  pos  samples  sample . point  printf  -p f f f n  , pos  0 , pos  1 , pos  2   printf   n   printf  setAttr  deriv2.particleRenderType  6 n   printf  setAttr  deriv2.velocity  -type  vectorArray  d  , nsamples  for  int sample  0  sample  nsamples   sample   Real const  tan2  samples  sample . deriv2  printf  f f f n  , tan2  0 , tan2  1 , tan2  2   printf   n    Exercise to the reader  cross tangent  bi-tangent for limit  surface normal...  Force Maya DAG update to see the result in the viewport printf  currentTime -edit currentTime -q n   printf  select deriv1Shape deriv2Shape n    delete refiner  delete patchTable  return EXIT_SUCCESS   ------------------------------------------------------------------------------ static Far  TopologyRefiner  createTopologyRefiner   typedef Far  TopologyDescriptor Descriptor  Sdc  SchemeType type  OpenSubdiv  Sdc  SCHEME_CATMARK  Sdc  Options options  options . SetVtxBoundaryInterpolation  Sdc  Options  VTX_BOUNDARY_EDGE_ONLY  Descriptor desc  desc . numVertices  g_nverts  desc . numFaces  g_nfaces  desc . numVertsPerFace  g_vertsperface  desc . vertIndicesPerFace  g_faceverts  desc . numCreases  g_ncreases  desc . creaseVertexIndexPairs  g_creaseverts  desc . creaseWeights  g_creaseweights   Instantiate a FarTopologyRefiner from the descriptor. Far  TopologyRefiner  refiner  Far  TopologyRefinerFactory  Descriptor  Create  desc , Far  TopologyRefinerFactory  Descriptor  Options  type , options  return refiner   Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"title\": \"OSD Overview\",\n+        \"text\": \"OSD Overview OSD Overview 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE OpenSubdiv Osd Refinement Limit Stencil Evaluation Limit Evaluation with PatchTable OpenGLDX11Metal Drawing with Hardware Tessellation InterleavedBatched Buffer Configuration Cross-Platform Implementation OpenSubdiv Osd 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 uniformadaptive subdivision on CPUGPU backends Limit Stencil Evaluation Compute limit surfaces by limit stencils on CPUGPU backends Limit Evaluation with PatchTable Compute limit surfaces by patch evaluation on CPUGPU backends OpenGLDX11Metal Drawing with hardware tessellation Provide GLSLHLSLMetal tessellation functions for patch table InterleavedBatched buffer configuration Provide consistent buffer descriptor to deal with arbitrary buffer layout. Cross-Platform Implementation Provide convenient classes 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 dont 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. Refinement Osd supports both uniform and feature adaptive subdivision. Once clients create a FarStencilTable for the topology, they can convert it into device-specific stencil tables if necessary. The following table shows which evaluator classes and stencil table interfaces can be used together. Note that while Osd provides these stencil table classes which can be easily constructed from FarStencilTable, clients arent required to use these table classes. Clients may have their own entities as a stencil tables as long as EvaluatorEvalStencils can access the necessary interfaces. Backend Evaluator class compatible stencil table CPU CPU single-threaded CpuEvaluator FarStencilTable TBB CPU multi-threaded TbbEvaluator FarStencilTable OpenMP CPU multi-threaded OmpEvaluator FarStencilTable CUDA GPU CudaEvaluator CudaStencilTable OpenCL CPUGPU CLEvaluator CLStencilTable GL ComputeShader GPU GLComputeEvaluator GLStencilTableSSBO GL Transform Feedback GPU GLXFBEvaluator GLStencilTableTBO DX11 ComputeShader GPU D3D11ComputeEvaluator D3D11StencilTable Metal GPU MTLComputeEvaluator MTLStencilTable Limit Stencil Evaluation Limit stencil evaluation is quite similar to refinement in Osd . At first clients create FarLimitStencilTable for the locations to evaluate the limit surfaces, then convert it into an evaluator compatible stencil table and call EvaluatorEvalStencils. Limit Evaluation with PatchTable Another way to evaluate the limit surfaces is to use the PatchTable. Once all control vertices and local points are resolved by the stencil evaluation, Osd can evaluate the limit surfaces through the PatchTable. Backend Evaluator class compatible patch table CPU CPU single-threaded CpuEvaluator CpuPatchTable TBB CPU multi-threaded TbbEvaluator CpuPatchTable OpenMP CPU multi-threaded OmpEvaluator CpuPatchTable CUDA GPU CudaEvaluator CudaPatchTable OpenCL CPUGPU CLEvaluator CLPatchTable GL ComputeShader GPU GLComputeEvaluator GLPatchTable GL Transform Feedback GPU GLXFBEvaluator GLPatchTable DX11 ComputeShader GPU D3D11ComputeEvaluator not yet supported D3D11PatchTable Metal ComputeShader GPU MTLComputeEvaluator MTLPatchTable Release Notes 3.x Osd evaluation backends EvaluatorEvalPatches do not support evaluation of single-crease or Legacy Gregory patch types. OpenGLDX11Metal Drawing with Hardware Tessellation One of the most interesting use cases of the Osd layer is realtime drawing of subdivision surfaces using hardware tessellation. This is somewhat similar to limit evaluation with PatchTable described above. Drawing differs from limit evaluation in that Osd provides shader snippets for patch evaluation and clients will inject them into their own shader source. See shader interface for a more detailed discussion of the shader interface. InterleavedBatched Buffer Configuration All Osd layer APIs assume that each primitive variables to be computed points, colors, uvs ... are contiguous arrays of 32bit floating point values. The Osd API refers to such an array as a buffer. A buffer can exist on CPU memory or GPU memory. Osd Evaluators typically take one source buffer and one destination buffer, or three destination buffers if derivatives are being computed. Osd Evaluators also take BufferDescriptors, that are used to specify the layout of the source and destination buffers. A BufferDescriptor is a struct of 3 integers which specify an offset, length and stride. For example Vertex 0 Vertex 1 ... X Y Z X Y Z ... The layout of this buffer can be described as Osd  BufferDescriptor desc  offset   0 , length   3 , stride   3  BufferDescriptor can be used for an interleaved buffer too. Vertex 0 Vertex 1 ... X Y Z R G B A X Y Z R G B A ... Osd  BufferDescriptor xyzDesc  0 , 3 , 7  Osd  BufferDescriptor rgbaDesc  3 , 4 , 7  Although the source and destination buffers dont need to be the same buffer for EvalStencils, adaptive patch tables are constructed to first index the coarse vertices and the refined vertices immediately afterward. In this case, the BufferDescriptor for the destination should include the offset as the number of coarse vertices to be skipped. Coarse vertices n  Src Refined vertices  Dst Vertex 0 Vertex 1 ... Vertex n Vertex n1 X Y Z X Y Z ... X Y Z X Y Z ... Osd  BufferDescriptor srcDesc  0 , 3 , 3  Osd  BufferDescriptor dstDesc  n  3 , 3 , 3  Also note that the source descriptor doesnt have to start with offset  0. This is useful when a client has a big buffer with multiple objects batched together. Cross-Platform Implementation One of the key goals of OpenSubdiv is to achieve as much cross-platform flexibility as possible and leverage all optimized hardware paths where available. This can be very challenging as there is a very large variety of plaftorms and APIs available, with very distinct capabilities. In Osd , Evaluators dont care about interops between those APIs. All Evaluators have two kinds of APIs for both EvalStencils and EvalPatches. Explicit signatures which directly take device-specific buffer representation e.g., pointer for CpuEvaluator, GLuint buffer for GLComputeEvaluator, etc. Generic signatures which take arbitrary buffer classes. The buffer class is required to have a certain method to return the device-specific buffer representation. The later interface is useful if the client supports multiple backends at the same time. The methods that need to be implemented for the Evaluators are Evaluator class object method CpuEvaluator TbbEvaluator OmpEvaluator pointer to cpu memory BindCpuBuffer CudaEvaluator pointer to cuda memory BindCudaBuffer CLEvaluator cl_mem BindCLBuffer GLComputeEvaluator GLXFBEvaluator GL buffer object BindVBO D3D11ComputeEvaluator D3D11 UAV BindD3D11UAV MTLComputeEvaluator MTLBuffer BindMTLBuffer The buffers can use these methods as a trigger of interop. Osd provides a default implementation of interop buffer for most of the backend combinations. For example, if the client wants to use CUDA as a computation backend and use OpenGL as the drawing API, OsdCudaGLVertexBuffer fits the case since it implements BindCudaBuffer and BindVBO. Again, clients can implement their own buffer class and pass it to the Evaluators. Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n-        \"loc\": \"far_tutorial_5_1.html\"\n+        \"loc\": \"osd_overview.html\"\n     }, {\n-        \"title\": \"Downloads\",\n-        \"text\": \"Downloads Downloads 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE Coupe Car Coupe Car Note  we can use javascripts buttons to trigger download see button-download or we can just paste regular ReST hyperlinks to the files here. Direct links probably more reliable though. Coupe car maya Download Coupe car obj Download EULA OpenSubdiv is covered by a modified Apache 2.0 license included below, and is free to use for commercial or non-commercial use. All Pixar patents in the area of subdivision surface algorithms have also been released for public use. We welcome any involvement in the development or extension of this code in fact, we would love it. Please contact us if you are interested. Copyright 2013 Pixar Licensed under the Apache License, Version 2.0 the Apache License with the following modification you may not use this file except in compliance with the Apache License and the following modification to it Section 6. Trademarks. is deleted and replaced with 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor and its affiliates, except as required to comply with Section 4c of the License and to reproduce the content of the NOTICE file. You may obtain a copy of the Apache License at httpwww.apache.orglicensesLICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the Apache License with the above modification is distributed on an AS IS BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the Apache License for the specific language governing permissions and limitations under the Apache License. Accept Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"title\": \"bfr_tutorial_1_2.cpp\",\n+        \"text\": \"bfr_tutorial_1_2.cpp bfr_tutorial_1_2.cpp 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE httpsgithub.comPixarAnimationStudiosOpenSubdivblobreleasetutorialsbfrtutorial_1_2bfr_tutorial_1_2.cpp ------------------------------------------------------------------------------  Tutorial description   This tutorial builds on the previous tutorial that makes use of the  SurfaceFactory and Surface for evaluating the limit surface of faces  by using the Tessellation class to determine the points to evaluate  and the faces that connect them.   The Tessellation class replaces the explicit determination of points  and faces for the triangle fan of the previous example. Given a  uniform tessellation rate via a command line option, Tessellation  returns the set of coordinates to evaluate, and separately returns  the faces that connect them.  include opensubdivfartopologyRefiner.h include opensubdivbfrrefinerSurfaceFactory.h include opensubdivbfrsurface.h include opensubdivbfrtessellation.h include vector include string include cstring include cstdio  Local headers with support for this tutorial in namespace tutorial include .meshLoader.h include .objWriter.h using namespace OpenSubdiv    Simple command line arguments to provide input and run-time options  class Args  public  std  string inputObjFile  std  string outputObjFile  Sdc  SchemeType schemeType  int tessUniformRate  bool tessQuadsFlag  public  Args  int argc , char  argv   inputObjFile , outputObjFile , schemeType  Sdc  SCHEME_CATMARK , tessUniformRate  5 , tessQuadsFlag  false   for  int i  1  i  argc   i   if  strstr  argv  i , .obj   if  inputObjFile . empty   inputObjFile  std  string  argv  i   else  fprintf  stderr , Warning Extra Obj file s ignored n  , argv  i    else if   strcmp  argv  i , -o   if   i  argc  outputObjFile  std  string  argv  i   else if   strcmp  argv  i , -bilinear   schemeType  Sdc  SCHEME_BILINEAR   else if   strcmp  argv  i , -catmark   schemeType  Sdc  SCHEME_CATMARK   else if   strcmp  argv  i , -loop   schemeType  Sdc  SCHEME_LOOP   else if   strcmp  argv  i , -res   if   i  argc  tessUniformRate  atoi  argv  i   else if   strcmp  argv  i , -quads   tessQuadsFlag  true   else  fprintf  stderr , Warning Unrecognized argument s ignored n  , argv  i     private  Args       The main tessellation function given a mesh and vertex positions,  tessellate each face -- writing results in Obj format.  void tessellateToObj  Far  TopologyRefiner const  meshTopology , std  vector  float  const  meshVertexPositions , Args const  options     Use simpler local type names for the Surface and its factory  typedef Bfr  RefinerSurfaceFactory  SurfaceFactory  typedef Bfr  Surface  float  Surface    Initialize the SurfaceFactory for the given base mesh very low  cost in terms of both time and space and tessellate each face  independently i.e. no shared vertices   Note that the SurfaceFactory is not thread-safe by default due to  use of an internal cache. Creating a separate instance of the  SurfaceFactory for each thread is one way to safely parallelize  this loop. Another preferred is to assign a thread-safe cache  to the single instance.   First declare any evaluation options when initializing though  none are used in this simple case  SurfaceFactory  Options surfaceOptions  SurfaceFactory meshSurfaceFactory  meshTopology , surfaceOptions    The Surface to be constructed and evaluated for each face -- as  well as the intermediate and output data associated with it -- can  be declared in the scope local to each face. But since dynamic  memory is involved with these variables, it is preferred to declare  them outside that loop to preserve and reuse that dynamic memory.  Surface faceSurface  std  vector  float  facePatchPoints  std  vector  float  outCoords  std  vector  float  outPos , outDu , outDv  std  vector  int  outFacets    Assign Tessellation Options applied for all faces. Tessellations  allow the creating of either 3- or 4-sided faces -- both of which  are supported here via a command line option  int const tessFacetSize  3  options . tessQuadsFlag  Bfr  Tessellation  Options tessOptions  tessOptions . SetFacetSize  tessFacetSize  tessOptions . PreserveQuads  options . tessQuadsFlag    Process each face, writing the output of each in Obj format  tutorial  ObjWriter objWriter  options . outputObjFile  int numFaces  meshSurfaceFactory . GetNumFaces  for  int faceIndex  0  faceIndex  numFaces   faceIndex     Initialize the Surface for this face -- if valid skipping  holes and boundary faces in some rare cases  if   meshSurfaceFactory . InitVertexSurface  faceIndex ,  faceSurface   continue     Declare a simple uniform Tessellation for the Parameterization  of this face and identify coordinates of the points to evaluate  Bfr  Tessellation tessPattern  faceSurface . GetParameterization , options . tessUniformRate , tessOptions  int numOutCoords  tessPattern . GetNumCoords  outCoords . resize  numOutCoords  2  tessPattern . GetCoords  outCoords . data    Prepare the patch points for the Surface, then use them to  evaluate output points for all identified coordinates   Resize patch point and output arrays int pointSize  3  facePatchPoints . resize  faceSurface . GetNumPatchPoints   pointSize  outPos . resize  numOutCoords  pointSize  outDu . resize  numOutCoords  pointSize  outDv . resize  numOutCoords  pointSize   Populate patch point and output arrays faceSurface . PreparePatchPoints  meshVertexPositions . data , pointSize , facePatchPoints . data , pointSize  for  int i  0 , j  0  i  numOutCoords   i , j  pointSize   faceSurface . Evaluate   outCoords  i  2 , facePatchPoints . data , pointSize ,  outPos  j ,  outDu  j ,  outDv  j     Identify the faces of the Tessellation   Note the need to offset vertex indices for the output faces --  using the number of vertices generated prior to this face. One  of several Tessellation methods to transform the facet indices  simply translates all indices by the desired offset.  int objVertexIndexOffset  objWriter . GetNumVertices  int numFacets  tessPattern . GetNumFacets  outFacets . resize  numFacets  tessFacetSize  tessPattern . GetFacets  outFacets . data  tessPattern . TransformFacetCoordIndices  outFacets . data , objVertexIndexOffset    Write the evaluated points and faces connecting them as Obj  objWriter . WriteGroupName  baseFace_ , faceIndex  objWriter . WriteVertexPositions  outPos  objWriter . WriteVertexNormals  outDu , outDv  objWriter . WriteFaces  outFacets , tessFacetSize , true , false      Load command line arguments, specified or default geometry and process  int main  int argc , char  argv   Args args  argc , argv  Far  TopologyRefiner  meshTopology  0  std  vector  float  meshVtxPositions  std  vector  float  meshFVarUVs  meshTopology  tutorial  createTopologyRefiner  args . inputObjFile , args . schemeType , meshVtxPositions , meshFVarUVs  if  meshTopology  0   return EXIT_FAILURE   tessellateToObj   meshTopology , meshVtxPositions , args  delete meshTopology  return EXIT_SUCCESS   ------------------------------------------------------------------------------ Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n-        \"loc\": \"downloads.html\"\n+        \"loc\": \"bfr_tutorial_1_2.html\"\n     }, {\n-        \"title\": \"glPtexViewer\",\n-        \"text\": \"glPtexViewer glPtexViewer 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE SYNOPSIS DESCRIPTION OPTIONS KEYBOARD CONTROLS SEE ALSO SYNOPSIS glPtexViewer  -f   -yup   -u   -a   -l isolation level   -c animation loops   -e environment map   -d HDR diffuse map   -s HDR specular map   --disp displacement scale   --bump bump scale  ptex color file ptex displacement file ptex occlusion file ptex specular file objfiles DESCRIPTION glPtexViewer is a stand-alone application that showcases advanced HDR shading with color, displacement, occlusion and specular ptex maps. Multiple controls are available to experiment with the algorithms. OPTIONS See the description of the common comand line options for the subset of common options supported here. -e environment map A low dynamic range spherical environment map used as a background. Ideally, a color-normalized version of the HDR light probe. -d HDR diffuse map An HDR file containing a diffuse environment map typically they are low resolution blurry hemispherical convolutions of the environment light probe. -s environment map An HDR file containing a specular environment map. --disp displacement scale A scalar multiplier for the shader displacement values. --bump displacement scale A scalar multiplier for the shader bump values. ptex color file A ptex file containing RGB channels read as material albedo color. ptex displacement file A single-channel ptex file preferably float precision containing the displacement values. ptex occlusion file A single-channel ptex file preferably 8 bits precision containing a pre-computed ambient occlusion signal. ptex specular file A single-channel ptex file preferably 8 bits precision applied to modulate the specular reflectance of the material KEYBOARD CONTROLS q  quit esc  hide GUI x  save screenshot f  fit frame -  increase  decrease tessellation rate r  reload and re - compile the shader files e  draw normals SEE ALSO Other examples  glViewer , glFVarViewer , glEvalLimit , glStencilViewer , glPtexViewer , glPaintTest , glShareTopology , dxViewer , dxPtexViewer , Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"title\": \"Subdivision Surfaces\",\n+        \"text\": \"Subdivision Surfaces Subdivision Surfaces 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE Overview Piecewise Parametric Surfaces Parametric Patches Piecewise Surfaces Arbitrary Topology Regular versus Irregular Features Non-manifold Topology Subdivision versus Tessellation Subdivision Tessellation Which to Use Mesh Data and Topology Separating Data from Topology Vertex and Varying Data Face-Varying Data and Topology Schemes and Options Subdivision Schemes Boundary Interpolation Rules Face-varying Interpolation Rules Semi-Sharp Creases Other Options Chaikin Rule Triangle Subdivision Rule Overview Subdivision surfaces are a common modeling primitive that has gained popularity in animation and visual effects over the past decades. As the name suggests, subdivision surfaces are fundamentally surfaces . More specifically, subdivision surfaces are piecewise parametric surfaces defined over meshes of arbitrary topology -- both concepts that will be described in the sections that follow. Subdivision is both an operation that can be applied to a polygonal mesh to refine it, and a mathematical tool that defines the underlying smooth surface to which repeated subdivision of the mesh converges. Explicit subdivision is simple to apply some number of times to provide a smoother mesh, and that simplicity has historically lead to many tools representing the shape this way. In contrast, deriving the smooth surface that ultimately defines the shape -- its limit surface -- is considerably more complex but provides greater accuracy and flexibility. These differences have led to confusion in how some tools expose subdivision surfaces. The ultimate goal is to have all tools use subdivision surfaces as true surface primitives. The focus here is therefore less on subdivision and more on the nature of the surface that results from it. In addition to providing a consistent implementation of subdivision -- one that includes a number of widely used feature extensions -- a significant value of OpenSubdiv is that it makes the limit surface more accessible. Since its introduction, OpenSubdiv has received interest from users and developers with a wide variety of skills, interests and backgrounds. This document is intended to present subdivision surfaces from a perspective helpful in making use of OpenSubdiv. One purpose it serves is to provide a high level overview for those with less experience with the algorithms or mathematics of subdivision. The other is to provide an overview of the feature set available with OpenSubdiv, and to introduce those capabilities with the terminology used by OpenSubdiv as much of it is overloaded. Piecewise Parametric Surfaces Piecewise parametric surfaces are arguably the most widely used geometric representation in industrial design, entertainment and many other areas. Many of the objects we deal with everyday -- cars, mobile phones, laptops -- were all designed and visualized first as piecewise parametric surfaces before those designs were approved and pursued. Piecewise parametric surfaces are ultimately just collections of simpler modeling primitives referred to as patches. Patches constitute the pieces of the larger surface in much the same way as a face or polygon constitutes a piece of a polygonal mesh. Parametric Patches Patches are the building blocks of piecewise smooth surfaces, and many different kinds of patches have evolved to meet the needs of geometric modeling. Two of the more effective and common patches are illustrated below Single bicubic B-Spline patch Single bicubic Bezier patch Patches consist of a set of points or vertices that affect a rectangular piece of smooth surface triangular patches also exist. That rectangle is parameterized in its two directions, transforming a simple 2D rectangle into the 3D surface u,v 2D domain of a patch Mapping from u,v to x,y,z The points that control the shape of the surface are usually referred to as control points or control vertices, and the collection of the entire set defining a patch as the control mesh, the control hull, the control cage or simply the hull, the cage, etc. For the sake of brevity we will frequently use the term cage, which serves us more generally later. So a patch essentially consist of two entities its control points and the surface affected by them. The way the control points affect the surface is what makes the different types of patches unique. Even patches defined by the same number of points can have different behavior. Note that all 16 points of the B-Spline patch above are relatively far from the surface they define compared to the similar Bezier patch. The two patches in that example actually represent exactly the same piece of surface -- each with a set of control points having different effects on it. In mathematical terms, each control point has a basis function associated with it that affects the surface in a particular way when only that point is moved Bicubic B-Spline basis function Bicubic Bezier basis funciton It is these basis functions that often give rise to the names of the different patches. There are pros and cons to these different properties of the control points of patches, which become more apparent as we assemble patches into piecewise surfaces. Piecewise Surfaces Piecewise parametric surfaces are collections of patches. For rectangular patches, one of the simplest ways to construct a collection is to define a set of patches using a rectangular grid of control points Piecewise B-Spline surface Piecewise Bezier surface Note that we can overlap the points of adjacent B-spline patches. This overlapping means that moving one control point affects multiple patches -- but it also ensures that those patches always meet smoothly this was a design intention and not true for other patch types. Adjacent Bezier patches only share points at their boundaries and coordinating the points across those boundaries to keep the surface smooth is possible, but awkward. This makes B-splines a more favorable surface representation for interactive modeling, but Bezier patches serve many other useful purposes. A more complicated B-spline surface Part of a more complicated B-Spline surface Just as a patch consisted of a cage and a surface, the same is now true of the collection. The control cage is manipulated by a designer and the surface of each of the patches involved is displayed so they can assess its effect. Arbitrary Topology Piecewise surfaces discussed thus far have been restricted to collections of patches over regular grids of control points. There is a certain simplicity with rectangular parametric surfaces that is appealing, but a surface representation that supports arbitrary topology has many other advantages. Rectangular parametric surfaces gained widespread adoption despite their topological limitations, and their popularity continues today in some areas. Complex objects often need many such surfaces to represent them and a variety of techniques have evolved to assemble them effectively, including stitching multiple surfaces together or cutting holes into them trimming. These are complicated techniques, and while effective in some contexts e.g. industrial design they become cumbersome in others e.g. animation and visual effects. A single polygonal mesh can represent shapes with far more complexity than a single rectangular piecewise surface, but its faceted nature eventually becomes a problem. Subdivision surfaces combine the topological flexibility of polygonal meshes with the underlying smoothness of piecewise parametric surfaces. Just as rectangular piecewise parametric surfaces have a collection of control points its cage stored as a grid and an underlying surface, subdivision surfaces also have a collection of control points its cage stored as a mesh and an underlying surface often referred as its limit surface. Regular versus Irregular Features A mesh contains the vertices and faces that form the cage for the underlying surface, and the topology of that mesh can be arbitrarily complex. In areas where the faces and vertices of the mesh are connected to form rectangular grids, the limit surface becomes one of the rectangular piecewise parametric surfaces previously mentioned. These regions of the mesh are said to be regular they provide behavior familiar from the use of similar rectangular surfaces and their limit surface is relatively simple to deal with. All other areas are considered irregular they provide the desired topological flexibility and so are less familiar and less predictable in some cases and their limit surface can be much more complicated. Irregular features come in a number of forms. The most widely referred to is an extra-ordinary vertex, i.e. a vertex which, in the case of a quad subdivision scheme like Catmull-Clark, does not have four incident faces. Irregular vertex and incident faces Regular and irregular regions of the surface The presence of these irregular features makes the limit surface around them similarly irregular, i.e. it cannot be represented as simply as it can for regular regions. Its worth noting that irregular regions shrink in size and become more isolated as subdivision is applied. A face with a lot of extra-ordinary vertices around it makes for a very complicated surface, and isolating these features is a way to help deal with that complexity Two valence-5 vertices nearby Isolation subdivided once Isolation subdivided twice Its generally necessary to perform some kind of local subdivision in these areas to break these pieces of surface into smaller, more manageable pieces, and the term feature adaptive subdivision has become popular in recent years to describe this process. Whether this is done explicitly or implicitly, globally or locally, what matters most is that there is an underlying piece of limit surface for each face -- albeit a potentially complicated one at an irregular feature -- that can be evaluated in much the same way as rectangular piecewise surfaces. Patches of the regular regions Patches of the irregular region While supporting a smooth surface in these irregular areas is the main advantage of subdivision surfaces, both the complexity of the resulting surfaces and their quality are reasons to use them with care. When the topology is largely irregular, there is a higher cost associated with its surface, so minimizing irregularities is advantageous. And in some cases the surface quality, i.e. the perceived smoothness, of the irregular surfaces can lead to undesirable artefacts. An arbitrary polygonal mesh will often not make a good subdivision cage, regardless of how good that polygonal mesh appears. As with rectangular piecewise parametric surfaces, the cage should be shaped to affect the underlying surface it is intended to represent. See Modeling Tips for related recommendations. Non-manifold Topology Since the cage of a subdivision surface is stored in a mesh, and often manipulated in the same context as polygonal meshes, the topic of manifold versus non-manifold topology warrants some attention. There are many definitions or descriptions of what distinguishes a manifold mesh from one that is not. These range from concise but abstract mathematical definitions to sets of examples showing manifold and non-manifold meshes -- all have their value and an appropriate audience. The following is not a strict definition but serves well to illustrate most local topological configurations that cause a mesh to be non-manifold. Consider standing on the faces of a mesh and walking around each vertex in turn. Assuming a right-hand winding order of faces, stand on the side of the face in the positive normal direction. And when walking, step across each incident edge in a counter-clockwise direction to the next incident face. For an interior vertex start at the corner of any incident face walk around the vertex across each incident edge to the next unvisited face repeat if you arrive back where you started and any incident faces or edges were not visited, the mesh is non-manifold Similarly, for a boundary vertex start at the corner of the face containing the leading boundary edge walk around the vertex across each incident edge to the next unvisited face repeat if you arrive at another boundary edge and any incident faces or edges were not visited, the mesh is non-manifold If you can walk around all vertices this way and dont encounter any non-manifold features, the mesh is likely manifold. Obviously if a vertex has no faces, there is nothing to walk around and this test cant succeed, so it is again non-manifold. All of the faces around a vertex should also be in the same orientation, otherwise two adjacent faces have normals in opposite directions and the mesh will be considered non-manifold, so we should really include that constraint when stepping to the next face to be more strict. Consider walking around the indicated vertices of the following non-manifold meshes Edges with  2 incident faces Faces sharing a vertex but no edges As mentioned earlier, many tools do not support non-manifold meshes, and in some contexts, e.g. 3D printing, they should be strictly avoided. Sometimes a manifold mesh may be desired and enforced as an end result, but the mesh may temporarily become non-manifold due to a particular sequence of modeling operations. Rather than supporting or advocating the use of non-manifold meshes, OpenSubdiv strives to be robust in the presence of non-manifold features to simplify the usage of its clients -- sparing them the need for topological analysis to determine when OpenSubdiv can or cannot be used. Although subdivision rules are not as well standardized in areas where the mesh is not manifold, OpenSubdiv provides simple rules and a reasonable limit surface in most cases. Surface around edges with  2 incident faces Surface for faces sharing a vertex but no edges As with the case of regular versus irregular features, since every face has a corresponding piece of surface associated with it -- whether locally manifold or not -- the term arbitrary topology can be said to include non-manifold topology. Subdivision versus Tessellation The preceding sections illustrate subdivision surfaces as piecewise parametric surfaces of arbitrary topology. As piecewise parametric surfaces, they consist of a cage and the underlying surface defined by that cage. Two techniques used to display subdivision surfaces are subdivision and tessellation. Both have their legitimate uses, but there is an important distinction between them subdivision operates on a cage and produces a refined cage tessellation operates on a surface and produces a discretization of that surface The existence and relative simplicity of the subdivision algorithm makes it easy to apply repeatedly to approximate the shape of the surface, but with the result being a refined cage, that approximation is not always very accurate. When compared to a cage refined to a different level, or a tessellation that uses points evaluated directly on the limit surface, the discrepancies can be confusing. Subdivision Subdivision is the process that gives subdivision surfaces their name, but it is not unique to them. Being piecewise parametric surfaces, lets first look at subdivision in the context of the simpler parametric patches that comprise them. Subdivision is a special case of refinement , which is key to the success of some of the most widely used types of parametric patches and their aggregate surfaces. A surface can be refined when an algorithm exists such that more control points can be introduced while keeping the shape of the surface exactly the same . For interactive and design purposes, this allows a designer to introduce more resolution for finer control without introducing undesired side effects in the shape. For more analytical purposes, it allows the surface to be broken into pieces, often adaptively, while being faithful to the original shape. One reason why both B-spline and Bezier patches are so widely used is that both of them can be refined. Uniform subdivision -- the process of splitting each of the patches in one or both of its directions -- is a special case of refinement that both of these patch types support B-Spline surface and its cage Cage subdivided 1x Cage subdivided 2x In the cases illustrated above for B-Splines, the uniformly refined cages produce the same limit surface as the original granted in more pieces. So it is fair to say that both uniform B-splines and Bezier surfaces are subdivision surfaces. The limit surface remains the same with the many more control points roughly 4x with each iteration of subdivision, and those points are closer to but not on the surface. It may be tempting to use these new control points to represent the surface, but using the same number of points evaluated at corresponding uniformly spaced parametric locations on the surface is usually simpler and more effective. Note also that points of the cage typically do not have any normal vectors associated with them, though we can evaluate normals explicitly for arbitrary locations on the surface just as we do for position. So if displaying a cage as a shaded surface, normal vectors at each of the control points must be contrived. Both the positions and normals of the points on the finer cage are therefore both approximations. For more general subdivision surfaces, the same is true. Subdivision will refine a mesh of arbitrary topology, but the resulting points will not lie on the limit surface and any normal vectors contrived from and associated with these points will only be approximations to those of the limit surface. Tessellation There is little need to use subdivision to approximate a parametric surface when it can be computed directly, i.e. it can be tessellated. We can evaluate at arbitrary locations on the surface and connect the resulting points to form a tessellation -- a discretization of the limit surface -- that is far more flexible than the results achieved from uniform subdivision Uniform 3x3 tessellation of B-spline surface Curvature-adaptive tessellation of B-spline surface For a simple parametric surface, the direct evaluation of the limit surface is also simple, but for more complicated subdivision surfaces of arbitrary topology, this is less the case. The lack of a clear understanding of the relationship between the limit surface and the cage has historically lead to many applications avoiding tessellation. Its worth mentioning that subdivision can be used to generate a tessellation even when the limit surface is not available for direct evaluation. The recursive nature of subdivision does give rise to formulae that allow a point on the limit surface to be computed that corresponds to each point of the cage. This process is often referred to as snapping or pushing the points of the cage onto the limit surface. Subdivided 1x and snapped to limit surface Subdivided 2x and snapped to limit surface Since the end result is a connected set of points on the limit surface, this forms a tessellation of the limit surface, and we consider it a separate process to subdivision though it does make use of it. The fact that such a tessellation might have been achieved using subdivision is indistinguishable from the final result -- the same tessellation might just as easily have been generated by evaluating limit patches of the cage uniformly 2x, 4x, 8x, etc. along each edge. Which to Use Subdivision is undeniably useful in creating finer cages to manipulate the surface, but tessellation is preferred for displaying the surface when the patches are available for direct evaluation. There was a time when global refinement was pursued in limited circles as a way of rapidly evaluating parametric surfaces along isoparametric lines, but patch evaluation, i.e. tessellation, generally prevails. Considerable confusion has arisen due the way the two techniques have been employed and presented when displaying the shape in end-user applications. One can argue that if an application displays a representation of the surface that is satisfactory for its purposes, then it is not necessary to burden the user with additional terminology and choices. But when two representations of the same surface differ considerably between two applications, the lack of any explanation or control leads to confusion. As long as applications make different choices on how to display the surface, we seek a balance between simplicity and control. Since subdivided points do not lie on the limit surface, it is important to make it clear to users when subdivision is being used instead of tessellation. This is particularly true in applications where the cage and the surface are displayed in the same style as there is no visual cue for users to make that distinction. Mesh Data and Topology The ability of subdivision surfaces to support arbitrary topology leads to the use of meshes to store both the topology of the cage and the data values associated with its control points, i.e. its vertices. The shape of a mesh, or the subdivision surface that results from it, is a combination of the topology of the mesh and the position data associated with its vertices. When dealing with meshes there are advantages to separating the topology from the data, and this is even more important when dealing with subdivision surfaces. The shape referred to above is not just the shape of the mesh the cage in this case but could be the shape of a refined cage or the limit surface. By observing the roles that both the data and topology play in operations such as subdivision and evaluation, significant advantages can be gained by managing data, topology and the associated computations accordingly. While the main purpose of subdivision surfaces is to use position data associated with the vertices to define a smooth, continuous limit surface, there are many cases where non-positional data is associated with a mesh. That data may often be interpolated smoothly like position, but often it is preferred to interpolate it linearly or even make it discontinuous along edges of the mesh. Texture coordinates and color are common examples here. Other than position, which is assigned to and associated with vertices, there are no constraints on how arbitrary data can or should be associated or interpolated. Texture coordinates, for example, can be assigned to create a completely smooth limit surface like the position, linearly interpolated across faces, or even made discontinuous between them. There are, however, consequences to consider -- both in terms of data management and performance -- which are described below as the terminology and techniques used to achieve each are defined. Separating Data from Topology While the topology of meshes used to store subdivision surfaces is arbitrarily complex and variable, the topology of the parametric patches that make up its limit surface are simple and fixed. Bicubic B-Spline and Bezier patches are both defined by a simple 4x4 grid of control points and a set of basis functions for each point that collectively form the resulting surface. For such a patch, the position at a given parametric location is the result of the combination of position data associated with its control points and the weights of the corresponding basis functions  weights being the values of basis functions evaluated at a parametric location. The topology and the basis functions remain the same, so we can make use of the weights independent of the data. If the positions of the control points change, we can simply recombine the new position data with the weights that we just used and apply the same combination. The fixed topology of a parametric patch and two shapes resulting from two sets of positions. Similarly, for a piecewise surface, the position at a given parametric location is the result of the single patch containing that parametric location evaluated at the given position. The control points involved are the subset of control points associated with that particular patch. If the topology of the surface is fixed, so too is the topology of the collection of patches that comprise that surface. If the positions of those control points change, we can recombine the new position data with the same weights for the subset of points associated with the patch. More complex but fixed topology of a surface and two shapes resulting from two sets of positions. This holds for a piecewise surface of arbitrary topology. Regardless of how complex the topology, as long as it remains fixed i.e. relationships between vertices, edges and faces does not change or anything other settings affecting subdivision rules, the same techniques apply. This is just one example of the value of separating computations involving topology from those involving the data. Both subdivision and evaluation can be factored into steps involving topology computing the weights and combining the data separately. Three shapes resulting from three sets of positions for a mesh of fixed topology. When the topology is fixed, enormous savings are possible by pre-computing information associated with the topology and organizing the data associated with the control points in a way that can be efficiently combined with it. This is key to understanding some of the techniques used to process subdivision surfaces. For a mesh of arbitrary topology, the control points of the underlying surface are the vertices, and position data associated with them is most familiar. But there is nothing that requires that the control points of a patch have to represent position -- the same techniques apply regardless of the type of data involved. Vertex and Varying Data The most typical and fundamental operation is to evaluate a position on the surface, i.e. evaluate the underlying patches of the limit surface using the x,y,z positions at the vertices of the mesh. Given a parametric u,v location on one such patch, the data-independent evaluation method first computes the weights and then combines the x,y,z vertex positions resulting in an x,y,z position at that location. But the weights and their combination can be applied to any data at the vertices, e.g. color, texture coordinates or anything else. Data associated with the vertices that is interpolated this way, including position, is said to be vertex data or to have vertex interpolation. Specifying other data as vertex data will result in it being smoothly interpolated in exactly the same way using exactly the same weights as the position. So to capture a simple 2D projection of the surface for texture coordinates, 2D values matching the x,y of the positions would be used. If linear interpolation of data associated with vertices is desired instead, the data is said to be varying data or to have varying interpolation. Here the non-linear evaluation of the patches defining the smooth limit surface is ignored and weights for simple linear interpolation are used. This is a common choice for texture coordinates as evaluation of texture without the need of bicubic patches is computationally cheaper. The linear interpolation will not capture the smoothness required of a true projection between the vertices, but both vertex and varying interpolation have their uses. Projected texture smoothly interpolated from vertex data Projected texture linearly interpolated from varying data Since both vertex and varying data is associated with vertices a unique value assigned to each, the resulting surface will be continuous -- piecewise smooth in the case of vertex data and piecewise linear in the case of varying. Face-Varying Data and Topology In order to support discontinuities in data on the surface, unlike vertex and varying data, there must be multiple values associated with vertices, edges andor faces, in order for a discontinuity to exist. Discontinuities are made possible by assigning values to the corners of faces, similar to the way in which vertices are assigned to the corners of faces when defining the topology of the mesh. Recalling the assignment of vertices to faces Vertex indices are assigned to all corners of each face as part of mesh construction and are often referred to as the face-vertices of an individual face or the mesh. All face-vertices that share the same vertex index will be connected by that vertex and share the same vertex data associated with it. By assigning a different set of indices to the face-vertices -- indices not referring to the vertices but some set of data to be associated with the corners of each face -- corners that share the same vertex no longer need to share the same data value and the data can be made discontinuous between faces This method of associating data values with the face-vertices of the mesh is said to be assigning face-varying data for face-varying interpolation. An interpolated value will vary continuously within a face i.e. the patch of the limit surface associated with the face but not necessarily across the edges or vertices shared with adjacent faces. Disjoint face-varying UV regions applied to the limit surface The combination of associating data values not with the vertices the control points but the face corners, and the resulting data-dependent discontinuities that result, make this a considerably more complicated approach than vertex or varying. The added complexity of the data alone is reason to only use it when necessary, i.e. when discontinuities are desired and present. Part of the complexity of dealing with face-varying data and interpolation is the way in which the interpolation behavior can be defined. Where the data is continuous, the interpolation can be specified to be as smooth as the underlying limit surface of vertex data or simply linear as achieved with varying data. Where the data is discontinuous -- across interior edges and around vertices -- the discontinuities create boundaries for the data, and partition the underlying surface into disjoint regions. The interpolation along these boundaries can also be specified as smooth or linear in a number of ways many of which have a historical basis. A more complete description of the different linear interpolation options with face-varying data and interpolation is given later. These options make it possible to treat the data as either vertex or varying, but with the added presence of discontinuities. An essential point to remember with face-varying interpolation is that each set of data is free to have its own discontinuities -- this leads to each data set having both unique topology and size. The topology specified for a collection of face-varying data is referred to as a channel and is unique to face-varying interpolation. Unlike vertex and varying interpolation, which both associate a data value with a vertex, the number of values in a face-varying channel is not fixed by the number of vertices or faces. The number of indices assigned to the face-corners will be the same for all channels, but the number of unique values referred to by these indices may not. We can take advantage of the common mesh topology in areas where the data is continuous, but we lose some of those advantages around the discontinuities. This results in the higher complexity and cost of a face-varying channel compared to vertex or varying data. If the topology for a channel is fixed, though, similar techniques can be applied to factor computation related to the topology so that changes to the data can be processed efficiently. Schemes and Options While previous sections have described subdivision surfaces in more general terms, this section describes a number of common variations often referred to as extensions to the subdivision algorithms and the ways that they are represented in OpenSubdiv. The number and nature of the extensions here significantly complicate what are otherwise fairly simple subdivision algorithms. Historically applications have supported either a subset or have had varying implementations of the same feature. OpenSubdiv strives to provide a consistent and efficient implementation of this feature set. Given the varying presentations of some of these features elsewhere, the naming chosen by OpenSubdiv is emphasized here. Subdivision Schemes OpenSubdiv provides two well known subdivision surface types -- Catmull-Clark often referred to more tersely as Catmark and Loop subdivision. Catmull-Clark is more widely used and suited to quad-dominant meshes, while Loop is preferred for and requires purely triangulated meshes. The many examples from previous sections have illustrated the more popular Catmull-Clark scheme. For an example of Loop Boundary Interpolation Rules Boundary interpolation rules control how subdivision and the limit surface behave for faces adjacent to boundary edges and vertices. The following choices are available via the enumeration SdcOptionsVtxBoundaryInterpolation  Mode Behavior VTX_BOUNDARY_NONE No boundary edge interpolation is applied by default boundary faces are tagged as holes so that the boundary vertices continue to support the adjacent interior faces, but no surface corresponding to the boundary faces is generated boundary faces can be selectively interpolated by sharpening all boundary edges incident the vertices of the face VTX_BOUNDARY_EDGE_ONLY A sequence of boundary vertices defines a smooth curve to which the limit surface along boundary faces extends VTX_BOUNDARY_EDGE_AND_CORNER Similar to edge-only but the smooth curve resulting on the boundary is made to interpolate corner vertices vertices with exactly one incident face On a grid example In practice, it is rare to use no boundary interpolation at all -- this feature has its uses in allowing separate meshes to be seamlessly joined together by replicating the vertices along boundaries, but these uses are limited. Given the global nature of the setting, it is usually preferable to explicitly make the boundary faces holes in the areas where surfaces from separate meshes are joined, rather than sharpening edges to interpolate the desired boundaries everywhere else. The remaining edge only and edge and corner choices are then solely distinguished by whether or not the surface at corner vertices is smooth or sharp. Face-varying Interpolation Rules Face-varying interpolation rules control how face-varying data is interpolated both in the interior of face-varying regions smooth or linear and at the boundaries where it is discontinuous constrained to be linear or pinned in a number of ways. Where the topology is continuous and the interpolation chosen to be smooth, the behavior of face-varying interpolation will match that of the vertex interpolation. Choices for face-varying interpolation are most commonly available in the context of UVs for texture coordinates and a number of names for such choices have evolved in different applications over the years. The choices offered by OpenSubdiv cover a wide range of popular applications. The feature is named face-varying linear interpolation -- rather than boundary interpolation commonly used -- to emphasize that it can be applied to the entire surface not just boundaries and that the effects are to make the surface behave more linearly in various ways. The following choices are available for the SdcOptionsFVarLinearInterpolation enum -- the ordering here applying progressively more linear constraints Mode Behavior FVAR_LINEAR_NONE smooth everywhere the mesh is smooth FVAR_LINEAR_CORNERS_ONLY linearly interpolate sharpen or pin corners only FVAR_LINEAR_CORNERS_PLUS1 CORNERS_ONLY  sharpening of junctions of 3 or more regions FVAR_LINEAR_CORNERS_PLUS2 CORNERS_PLUS1  sharpening of darts and concave corners FVAR_LINEAR_BOUNDARIES linear interpolation along all boundary edges and corners FVAR_LINEAR_ALL linear interpolation everywhere boundaries and interior These rules cannot make the interpolation of the face-varying data smoother than that of the vertices. The presence of sharp features of the mesh created by sharpness values, boundary interpolation rules, or the subdivision scheme itself e.g. Bilinear take precedence. All face-varying interpolation modes illustrated in UV space using a simple 4x4 grid of quads segmented into three UV regions their control point locations implied by interpolation in the FVAR_LINEAR_ALL case For those familiar, this shape and its assigned UV sets are available for inspection in the catmark_fvar_bound1 shape of OpenSubdivs example and regression shapes. Semi-Sharp Creases Just as some types of parametric surfaces support additional shaping controls to affect creasing along the boundaries between surface elements, OpenSubdiv provides additional sharpness values or weights associated with edges and vertices to achieve similar results over arbitrary topology. Setting sharpness values to a maximum value 10 in this case -- a number chosen for historical reasons effectively modifies the subdivision rules so that the boundaries between the piecewise smooth surfaces are infinitely sharp or discontinuous. But since real world surfaces never really have infinitely sharp edges, especially when viewed sufficiently close, it is often preferable to set the sharpness lower than this value, making the crease semi-sharp. A constant weight value assigned to a sequence of edges connected edges therefore enables the creation of features akin to fillets and blends without adding extra rows of vertices though that technique still has its merits Sharpness values range from 0-10, with a value of 0 or less having no effect on the surface and a value of 10 or more making the feature completely sharp. It should be noted that infinitely sharp creases are really tangent discontinuities in the surface, implying that the geometric normals are also discontinuous there. Therefore, displacing along the normal will likely tear apart the surface along the crease. If you really want to displace a surface at a crease, it may be better to make the crease semi-sharp. Other Options While the preceding options represent features available in a wide-variety of tools and modeling formats, a few others exist whose recognition and adoption is more limited. In some cases, they offer improvements to undesirable behavior of the subdivision algorithms, but their effects are less than ideal. Given both their limited effectiveness and lack of recognition, these options should be used with caution. Chaikin Rule The Chaikin Rule is a variation of the semi-sharp creasing method that attempts to improve the appearance of creases along a sequence of connected edges when the sharpness values differ. This choice modifies the subdivision of sharpness values using Chaikins curve subdivision algorithm to consider all sharpness values of edges around a common vertex when determining the sharpness of child edges. The creasing method can be set using the values defined in the enumeration SdcOptionsCreasingMethod  Mode Behavior CREASE_UNIFORM Apply regular semi-sharp crease rules CREASE_CHAIKIN Apply Chaikin semi-sharp crease rules Example of contiguous semi-sharp creases interpolation Triangle Subdivision Rule The triangle subdivision rule is a rule added to the Catmull-Clark scheme that modifies the behavior at triangular faces to improve the undesirable surface artefacts that often result in such areas. Mode Behavior TRI_SUB_CATMARK Default Catmark scheme weights TRI_SUB_SMOOTH Smooth triangle weights Cylinder example  This rule was empirically determined to make triangles subdivide more smoothly. However, this rule breaks the nice property that two separate meshes can be joined seamlessly by overlapping their boundaries i.e. when there are triangles at either boundary, it is impossible to join the meshes seamlessly Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n-        \"loc\": \"glptexviewer.html\"\n+        \"loc\": \"subdivision_surfaces.html\"\n     }, {\n-        \"title\": \"bfr_tutorial_1_3.cpp\",\n-        \"text\": \"bfr_tutorial_1_3.cpp bfr_tutorial_1_3.cpp 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE httpsgithub.comPixarAnimationStudiosOpenSubdivblobreleasetutorialsbfrtutorial_1_3bfr_tutorial_1_3.cpp ------------------------------------------------------------------------------  Tutorial description   This tutorial builds on the previous tutorial that makes use of the  SurfaceFactory, Surface and Tessellation classes for evaluating and  tessellating the limit surface of faces of a mesh by adding support  for the evaluation of face-varying UVs.   If UVs exist in the given mesh, they will be evaluated and included  with the vertex positions and normals previously illustrated as  part of the tessellation written to the Obj file.  include opensubdivfartopologyRefiner.h include opensubdivbfrrefinerSurfaceFactory.h include opensubdivbfrsurface.h include opensubdivbfrtessellation.h include vector include string include cstring include cstdio  Local headers with support for this tutorial in namespace tutorial include .meshLoader.h include .objWriter.h using namespace OpenSubdiv    Simple command line arguments to provide input and run-time options  class Args  public  std  string inputObjFile  std  string outputObjFile  Sdc  SchemeType schemeType  int tessUniformRate  bool tessQuadsFlag  bool uv2xyzFlag  public  Args  int argc , char  argv   inputObjFile , outputObjFile , schemeType  Sdc  SCHEME_CATMARK , tessUniformRate  5 , tessQuadsFlag  false , uv2xyzFlag  false   for  int i  1  i  argc   i   if  strstr  argv  i , .obj   if  inputObjFile . empty   inputObjFile  std  string  argv  i   else  fprintf  stderr , Warning Extra Obj file s ignored n  , argv  i    else if   strcmp  argv  i , -o   if   i  argc  outputObjFile  std  string  argv  i   else if   strcmp  argv  i , -bilinear   schemeType  Sdc  SCHEME_BILINEAR   else if   strcmp  argv  i , -catmark   schemeType  Sdc  SCHEME_CATMARK   else if   strcmp  argv  i , -loop   schemeType  Sdc  SCHEME_LOOP   else if   strcmp  argv  i , -res   if   i  argc  tessUniformRate  atoi  argv  i   else if   strcmp  argv  i , -quads   tessQuadsFlag  true   else if   strcmp  argv  i , -uv2xyz   uv2xyzFlag  true   else  fprintf  stderr , Warning Unrecognized argument s ignored n  , argv  i     private  Args       The main tessellation function given a mesh and vertex positions,  tessellate each face -- writing results in Obj format.  void tessellateToObj  Far  TopologyRefiner const  meshTopology , std  vector  float  const  meshVertexPositions , std  vector  float  const  meshFaceVaryingUVs , Args const  options     Use simpler local type names for the Surface and its factory  typedef Bfr  RefinerSurfaceFactory  SurfaceFactory  typedef Bfr  Surface  float  Surface    Initialize the SurfaceFactory for the given base mesh very low  cost in terms of both time and space and tessellate each face  independently i.e. no shared vertices   Note that the SurfaceFactory is not thread-safe by default due to  use of an internal cache. Creating a separate instance of the  SurfaceFactory for each thread is one way to safely parallelize  this loop. Another preferred is to assign a thread-safe cache  to the single instance.   First declare any evaluation options when initializing   When dealing with face-varying data, an identifier is necessary  when constructing Surfaces in order to distinguish the different  face-varying data channels. To avoid repeatedly specifying that  identifier when only one is present or of interest, it can be  specified via the Options.  bool meshHasUVs   meshTopology . GetNumFVarChannels   0  SurfaceFactory  Options surfaceOptions  if  meshHasUVs   surfaceOptions . SetDefaultFVarID  0   SurfaceFactory surfaceFactory  meshTopology , surfaceOptions    The Surface to be constructed and evaluated for each face -- as  well as the intermediate and output data associated with it -- can  be declared in the scope local to each face. But since dynamic  memory is involved with these variables, it is preferred to declare  them outside that loop to preserve and reuse that dynamic memory.  Surface posSurface  Surface uvSurface  std  vector  float  facePatchPoints  std  vector  float  outCoords  std  vector  float  outPos , outDu , outDv  std  vector  float  outUV  std  vector  int  outFacets    Assign Tessellation Options applied for all faces. Tessellations  allow the creating of either 3- or 4-sided faces -- both of which  are supported here via a command line option  int const tessFacetSize  3  options . tessQuadsFlag  Bfr  Tessellation  Options tessOptions  tessOptions . SetFacetSize  tessFacetSize  tessOptions . PreserveQuads  options . tessQuadsFlag    Process each face, writing the output of each in Obj format  tutorial  ObjWriter objWriter  options . outputObjFile  int numFaces  surfaceFactory . GetNumFaces  for  int faceIndex  0  faceIndex  numFaces   faceIndex     Initialize the Surfaces for position and UVs of this face.  There are two ways to do this -- both illustrated here   Creating Surfaces for the different data interpolation types  independently is clear and convenient, but considerable work  may be duplicated in the construction process in the case of  non-linear face-varying Surfaces. So unless it is known that  face-varying interpolation is linear, use of InitSurfaces  is generally preferred.   Remember also that the face-varying identifier is omitted from  the initialization methods here as it was previously assigned  to the SurfaceFactoryOptions. In the absence of an assignment  of the default FVarID to the Options, a failure to specify the  FVarID here will result in failure.   The cases below are expanded for illustration purposes, and  validity of the resulting Surface is tested here, rather than  the return value of initialization methods.  bool createSurfacesTogether  true  if   meshHasUVs   surfaceFactory . InitVertexSurface  faceIndex ,  posSurface   else if  createSurfacesTogether   surfaceFactory . InitSurfaces  faceIndex ,  posSurface ,  uvSurface   else  if  surfaceFactory . InitVertexSurface  faceIndex ,  posSurface   surfaceFactory . InitFaceVaryingSurface  faceIndex ,  uvSurface    if   posSurface . IsValid  continue    Declare a simple uniform Tessellation for the Parameterization  of this face and identify coordinates of the points to evaluate  Bfr  Tessellation tessPattern  posSurface . GetParameterization , options . tessUniformRate , tessOptions  int numOutCoords  tessPattern . GetNumCoords  outCoords . resize  numOutCoords  2  tessPattern . GetCoords  outCoords . data    Prepare the patch points for the Surface, then use them to  evaluate output points for all identified coordinates   Evaluate vertex positions   Resize patch point and output arrays int pointSize  3  facePatchPoints . resize  posSurface . GetNumPatchPoints   pointSize  outPos . resize  numOutCoords  pointSize  outDu . resize  numOutCoords  pointSize  outDv . resize  numOutCoords  pointSize   Populate patch point and output arrays posSurface . PreparePatchPoints  meshVertexPositions . data , pointSize , facePatchPoints . data , pointSize  for  int i  0 , j  0  i  numOutCoords   i , j  pointSize   posSurface . Evaluate   outCoords  i  2 , facePatchPoints . data , pointSize ,  outPos  j ,  outDu  j ,  outDv  j     Evaluate face-varying UVs when present if  meshHasUVs    Resize patch point and output arrays  - note reuse of the same patch point array as position int pointSize  2  facePatchPoints . resize  uvSurface . GetNumPatchPoints   pointSize  outUV . resize  numOutCoords  pointSize   Populate patch point and output arrays uvSurface . PreparePatchPoints  meshFaceVaryingUVs . data , pointSize , facePatchPoints . data , pointSize  for  int i  0 , j  0  i  numOutCoords   i , j  pointSize   uvSurface . Evaluate   outCoords  i  2 , facePatchPoints . data , pointSize ,  outUV  j      Identify the faces of the Tessellation   Note the need to offset vertex indices for the output faces --  using the number of vertices generated prior to this face. One  of several Tessellation methods to transform the facet indices  simply translates all indices by the desired offset.  int objVertexIndexOffset  objWriter . GetNumVertices  int numFacets  tessPattern . GetNumFacets  outFacets . resize  numFacets  tessFacetSize  tessPattern . GetFacets  outFacets . data  tessPattern . TransformFacetCoordIndices  outFacets . data , objVertexIndexOffset    Write the evaluated points and faces connecting them as Obj  objWriter . WriteGroupName  baseFace_ , faceIndex  if  meshHasUVs  options . uv2xyzFlag   objWriter . WriteVertexPositions  outUV , 2  objWriter . WriteFaces  outFacets , tessFacetSize , false , false   else  objWriter . WriteVertexPositions  outPos  objWriter . WriteVertexNormals  outDu , outDv  if  meshHasUVs   objWriter . WriteVertexUVs  outUV   objWriter . WriteFaces  outFacets , tessFacetSize , true , meshHasUVs       Load command line arguments, specified or default geometry and process  int main  int argc , char  argv   Args args  argc , argv  Far  TopologyRefiner  meshTopology  0  std  vector  float  meshVtxPositions  std  vector  float  meshFVarUVs  meshTopology  tutorial  createTopologyRefiner  args . inputObjFile , args . schemeType , meshVtxPositions , meshFVarUVs  if  meshTopology  0   return EXIT_FAILURE   tessellateToObj   meshTopology , meshVtxPositions , meshFVarUVs , args  delete meshTopology  return EXIT_SUCCESS   ------------------------------------------------------------------------------ Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"title\": \"far_tutorial_5_3.cpp\",\n+        \"text\": \"far_tutorial_5_3.cpp far_tutorial_5_3.cpp 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE httpsgithub.comPixarAnimationStudiosOpenSubdivblobreleasetutorialsfartutorial_5_3far_tutorial_5_3.cpp ------------------------------------------------------------------------------  Tutorial description   This tutorial shows how to use a FarLimitStenciTable to repeatedly  and efficiently evaluate a set of points and optionally derivatives  on the limit surface.   A LimitStencilTable derives from StencilTable but is specialized to  factor the evaluation of limit positions and derivatives into stencils.  This allows a set of limit properties to be efficiently recomputed in  response to changes to the vertices of the base mesh. Constructing  the different kinds of StencilTables can have a high cost, so whether  that cost is worth it will depend on your usage e.g. if points are  only computed once, using stencil tables is typically not worth the  added cost.   Any points on the limit surface can be identified for evaluation. In  this example we create a crude tessellation similar to tutorial_5_2.  The midpoint of each face and points near the corners of the face are  evaluated and a triangle fan connects them.  include ......regressioncommonarg_utils.h include ......regressioncommonfar_utils.h include opensubdivfartopologyDescriptor.h include opensubdivfarpatchTableFactory.h include opensubdivfarstencilTableFactory.h include opensubdivfarptexIndices.h include cassert include cstdio include cstring include fstream include sstream using namespace OpenSubdiv  using Far  Index    Global utilities in this namespace are not relevant to the tutorial.  They simply serve to construct some default geometry to be processed  in the form of a TopologyRefiner and vector of vertex positions.  namespace    Simple structs for x,y,z position and a 3-tuple for the set  of vertices of a triangle  struct Pos  Pos    Pos  float x , float y , float z   p  0   x , p  1   y , p  2   z   Pos operator   Pos const  op  const  return Pos  p  0   op . p  0 , p  1   op . p  1 , p  2   op . p  2    Clear and AddWithWeight required for interpolation void Clear  void   0   p  0   p  1   p  2   0.0f   void AddWithWeight  Pos const  src , float weight   p  0   weight  src . p  0  p  1   weight  src . p  1  p  2   weight  src . p  2   float p  3   typedef std  vector  Pos  PosVector  struct Tri  Tri    Tri  int a , int b , int c   v  0   a , v  1   b , v  2   c   int v  3   typedef std  vector  Tri  TriVector    Functions to populate the topology and geometry arrays a simple  shape whose positions may be transformed  void createCube  std  vector  int   vertsPerFace , std  vector  Index   faceVertsPerFace , std  vector  Pos   positionsPerVert    Local topology and position of a cube centered at origin static float const cubePositions  8  3     -0.5f , -0.5f , -0.5f ,  -0.5f , 0.5f , -0.5f ,  -0.5f , 0.5f , 0.5f ,  -0.5f , -0.5f , 0.5f ,  0.5f , -0.5f , -0.5f ,  0.5f , 0.5f , -0.5f ,  0.5f , 0.5f , 0.5f ,  0.5f , -0.5f , 0.5f   static int const cubeFaceVerts  6  4     0 , 3 , 2 , 1 ,  4 , 5 , 6 , 7 ,  0 , 4 , 7 , 3 ,  1 , 2 , 6 , 5 ,  0 , 1 , 5 , 4 ,  3 , 7 , 6 , 2    Initialize verts-per-face and face-vertices for each face vertsPerFace . resize  6  faceVertsPerFace . resize  24  for  int i  0  i  6   i   vertsPerFace  i   4  for  int j  0  j  4   j   faceVertsPerFace  i  4  j   cubeFaceVerts  i  j     Initialize vertex positions positionsPerVert . resize  8  for  int i  0  i  8   i   float const  p  cubePositions  i  positionsPerVert  i   Pos  p  0 , p  1 , p  2      Create a TopologyRefiner from default geometry created above  Far  TopologyRefiner  createTopologyRefinerDefault  PosVector  posVector   std  vector  int  topVertsPerFace  std  vector  Index  topFaceVerts  createCube  topVertsPerFace , topFaceVerts , posVector  typedef Far  TopologyDescriptor Descriptor  Sdc  SchemeType type  OpenSubdiv  Sdc  SCHEME_CATMARK  Sdc  Options options  options . SetVtxBoundaryInterpolation  Sdc  Options  VTX_BOUNDARY_EDGE_AND_CORNER  Descriptor desc  desc . numVertices   int  posVector . size  desc . numFaces   int  topVertsPerFace . size  desc . numVertsPerFace   topVertsPerFace  0  desc . vertIndicesPerFace   topFaceVerts  0   Instantiate a FarTopologyRefiner from the descriptor. Far  TopologyRefiner  refiner  Far  TopologyRefinerFactory  Descriptor  Create  desc , Far  TopologyRefinerFactory  Descriptor  Options  type , options  assert  refiner  return refiner     Create a TopologyRefiner from a specified Obj file  geometry created internally  Far  TopologyRefiner  createTopologyRefinerFromObj  std  string const  objFileName , Sdc  SchemeType schemeType , PosVector  posVector   const char  filename  objFileName . c_str  const Shape  shape  0  std  ifstream ifs  filename  if  ifs   std  stringstream ss  ss  ifs . rdbuf  ifs . close  std  string shapeString  ss . str  shape  Shape  parseObj  shapeString . c_str , ConvertSdcTypeToShapeScheme  schemeType , false  if  shape  0   fprintf  stderr , Error Cannot create Shape from .obj file s n  , filename  return 0    else  fprintf  stderr , Error Cannot open .obj file s n  , filename  return 0   Sdc  SchemeType sdcType  GetSdcType   shape  Sdc  Options sdcOptions  GetSdcOptions   shape  Far  TopologyRefiner  refiner  Far  TopologyRefinerFactory  Shape  Create   shape , Far  TopologyRefinerFactory  Shape  Options  sdcType , sdcOptions  if  refiner  0   fprintf  stderr , Error Unable to construct TopologyRefiner  from .obj file s n  , filename  return 0   int numVertices  refiner - GetNumVerticesTotal  posVector . resize  numVertices  std  memcpy   posVector  0 . p  0 ,  shape - verts  0 , numVertices  3  sizeof  float  delete shape  return refiner     Simple function to export an Obj file for the limit points -- which  provides a simple tessllation similar to tutorial_5_2.  int writeToObj  Far  TopologyLevel const  baseLevel , std  vector  Pos  const  vertexPositions , int nextObjVertexIndex   for  size_t i  0  i  vertexPositions . size   i   float const  p  vertexPositions  i . p  printf  v f f f n  , p  0 , p  1 , p  2     Connect the sequences of limit points center followed by corners  into triangle fans for each base face  for  int i  0  i  baseLevel . GetNumFaces   i   int faceSize  baseLevel . GetFaceVertices  i . size  int vCenter  nextObjVertexIndex  1  int vCorner  vCenter  1  for  int k  0  k  faceSize   k   printf  f d d d n  , vCenter , vCorner  k , vCorner   k  1   faceSize   nextObjVertexIndex  faceSize  1   return nextObjVertexIndex     end namespace   Command line arguments parsed to provide run-time options  class Args  public  std  string inputObjFile  Sdc  SchemeType schemeType  int maxPatchDepth  int numPoses  Pos poseOffset  bool deriv1Flag  bool noPatchesFlag  bool noOutputFlag  public  Args  int argc , char  argv   inputObjFile , schemeType  Sdc  SCHEME_CATMARK , maxPatchDepth  3 , numPoses  0 , poseOffset  1.0f , 0.0f , 0.0f , deriv1Flag  false , noPatchesFlag  false , noOutputFlag  false    Parse and assign standard arguments and Obj files ArgOptions args  args . Parse  argc , argv  maxPatchDepth  args . GetLevel  schemeType  ConvertShapeSchemeToSdcType  args . GetDefaultScheme  const std  vector  const char  objFiles  args . GetObjFiles  if   objFiles . empty   for  size_t i  1  i  objFiles . size   i   fprintf  stderr , Warning .obj file s ignored n  , objFiles  i   inputObjFile  std  string  objFiles  0    Parse remaining arguments specific to this example const std  vector  const char   rargs  args . GetRemainingArgs  for  size_t i  0  i  rargs . size   i   if   strcmp  rargs  i , -d1   deriv1Flag  true   else if   strcmp  rargs  i , -nopatches   noPatchesFlag  true   else if   strcmp  rargs  i , -poses   if   i  rargs . size  numPoses  atoi  rargs  i   else if   strcmp  rargs  i , -offset   if   i  rargs . size  poseOffset . p  0    float  atof  rargs  i  if   i  rargs . size  poseOffset . p  1    float  atof  rargs  i  if   i  rargs . size  poseOffset . p  2    float  atof  rargs  i   else if   strcmp  rargs  i , -nooutput   noOutputFlag  true   else  fprintf  stderr , Warning Argument s ignored n  , rargs  i     private  Args       Assemble the set of locations for the limit points. The resulting  vector of LocationArrays can contain arbitrary locations on the limit  surface -- with multiple locations for the same patch grouped into a  single array.   In this case, for each base face, coordinates for the center and its  corners are specified -- from which we will construct a triangle fan  providing a crude tessellation similar to tutorial_5_2.  typedef Far  LimitStencilTableFactory  LocationArray LocationArray  int assembleLimitPointLocations  Far  TopologyRefiner const  refiner , std  vector  LocationArray   locations     Coordinates for the center of the face and its corners slightly  inset. Unlike most of the public interface for patches, the  LocationArray refers to parameteric coordinates as s,t, so that  convention will be followed here.   Note that the s,t coordinates in a LocationArray are referred to  by reference. The memory holding these s,t values must persist  while the LimitStencilTable is constructed -- the arrays here are  declared as static for that purpose.  static float const quadSCoords  5    0.5f , 0.05f , 0.95f , 0.95f , 0.05f  static float const quadTCoords  5    0.5f , 0.05f , 0.05f , 0.95f , 0.95f  static float const triSCoords  4    0.33f , 0.05f , 0.95f , 0.05f  static float const triTCoords  4    0.33f , 0.05f , 0.00f , 0.95f  static float const irregSCoords  2    1.0f , 0.05f  static float const irregTCoords  2    1.0f , 0.05f    Since these are references to patches to be evaluated, we require  use of the Ptex indices to identify the top-most parameterized  patch, which is essential to dealing with non-quad faces in the  case of Catmark.  Far  TopologyLevel const  baseLevel  refiner . GetLevel  0  Far  PtexIndices basePtexIndices  refiner  int regFaceSize  Sdc  SchemeTypeTraits  GetRegularFaceSize  refiner . GetSchemeType    For each base face, simply refer to the s,t arrays for regular quad  and triangular patches with a single LocationArray. Otherwise, for  irregular faces, the corners of the face come from different patches  and so must be referenced in separate LocationArrays.  locations . clear  int numLimitPoints  0  for  int i  0  i  baseLevel . GetNumFaces   i   int baseFaceSize  baseLevel . GetFaceVertices  i . size  int basePtexId  basePtexIndices . GetFaceId  i  bool faceIsRegular   baseFaceSize  regFaceSize  if  faceIsRegular    All coordinates are on the same top-level patch LocationArray loc  loc . ptexIdx  basePtexId  loc . numLocations  baseFaceSize  1  if  baseFaceSize  4   loc . s  quadSCoords  loc . t  quadTCoords   else  loc . s  triSCoords  loc . t  triTCoords   locations . push_back  loc   else   Center coordinate is on the first sub-patch while those on  near the corners are on each successive sub-patch LocationArray loc  loc . numLocations  1  for  int j  0  j  baseFaceSize   j   bool isPerimeter   j  0  loc . ptexIdx  basePtexId   isPerimeter   j -1   0  loc . s   irregSCoords  isPerimeter  loc . t   irregTCoords  isPerimeter  locations . push_back  loc    numLimitPoints  baseFaceSize  1   return numLimitPoints     Load command line arguments and geometry, build the LimitStencilTable  for a set of points on the limit surface and compute those points for  several orientations of the mesh  int main  int argc , char  argv   Args args  argc , argv    Create or load the base geometry command line arguments allow a  .obj file to be specified, providing a TopologyRefiner and a set  of base vertex positions to work with  std  vector  Pos  basePositions  Far  TopologyRefiner  refinerPtr  args . inputObjFile . empty   createTopologyRefinerDefault  basePositions   createTopologyRefinerFromObj  args . inputObjFile , args . schemeType , basePositions  assert  refinerPtr  Far  TopologyRefiner  refiner   refinerPtr  Far  TopologyLevel const  baseLevel  refiner . GetLevel  0    Use of LimitStencilTable requires either explicit or implicit use  of a PatchTable. A PatchTable is not required to construct a  LimitStencilTable -- one will be constructed internally for use  and discarded -- but explicit construction is recommended to control  the many legacy options for PatchTable, rather than relying on  internal defaults. Adaptive refinement is required in both cases  to indicate the accuracy of the patches.   Note that if a TopologyRefiner and PatchTable are not used for  any other purpose than computing the limit points, that specifying  the subset of faces containing those limit points in the adaptive  refinement and PatchTable construction can avoid unnecessary  overhead.  Far  PatchTable  patchTablePtr  0  if  args . noPatchesFlag   refiner . RefineAdaptive  Far  TopologyRefiner  AdaptiveOptions  args . maxPatchDepth   else  Far  PatchTableFactory  Options patchOptions  args . maxPatchDepth  patchOptions . useInfSharpPatch  true  patchOptions . generateLegacySharpCornerPatches  false  patchOptions . generateVaryingTables  false  patchOptions . generateFVarTables  false  patchOptions . endCapType  Far  PatchTableFactory  Options  ENDCAP_GREGORY_BASIS  refiner . RefineAdaptive  patchOptions . GetRefineAdaptiveOptions  patchTablePtr  Far  PatchTableFactory  Create  refiner , patchOptions  assert  patchTablePtr     Assemble the set of locations for the limit points. For each base  face, coordinates for the center and its corners are specified --  from which we will construct a triangle fan providing a crude  tessellation similar to tutorial_5_2.  std  vector  LocationArray  locations  int numLimitPoints  assembleLimitPointLocations  refiner , locations    Construct a LimitStencilTable from the refiner, patch table optional  and the collection of limit point locations. Stencils can optionally  be created for computing dervatives -- the default is to compute 1st  derivative stencils, so be sure to disable that if not necessary  Far  LimitStencilTableFactory  Options limitOptions  limitOptions . generate1stDerivatives  args . deriv1Flag  Far  LimitStencilTable const  limitStencilTablePtr  Far  LimitStencilTableFactory  Create  refiner , locations , 0 ,  optional StencilTable for the refined points patchTablePtr ,  optional PatchTable limitOptions  assert  limitStencilTablePtr  Far  LimitStencilTable const  limitStencilTable   limitStencilTablePtr    Apply the constructed LimitStencilTable to compute limit positions  from the base level vertex positions. This is trivial if computing  all positions in one invokation. The UpdateValues method and those  for derivatives are overloaded to optionally accept a subrange of  indices to distribute the computation  std  vector  Pos  limitPositions  numLimitPoints  limitStencilTable . UpdateValues  basePositions , limitPositions   Call with the optional subrange limitStencilTable . UpdateValues  basePositions , limitPositions , 0 , numLimitPoints  2  limitStencilTable . UpdateValues  basePositions , limitPositions ,  numLimitPoints  2   1 , numLimitPoints   Write vertices and faces in Obj format for the original limit points int objVertCount  0  if   args . noOutputFlag   printf  g base_mesh n   objVertCount  writeToObj  baseLevel , limitPositions , objVertCount     Recompute the limit points and output faces for different poses of  the original mesh -- in this case simply translated. Also optionally  compute 1st derivatives though they are not used here  std  vector  Pos  posePositions  basePositions  std  vector  Pos  limitDu  args . deriv1Flag  numLimitPoints  0  std  vector  Pos  limitDv  args . deriv1Flag  numLimitPoints  0  for  int i  0  i  args . numPoses   i    Trivially transform the base vertex positions and re-compute for  size_t j  0  j  basePositions . size   j   posePositions  j   posePositions  j   args . poseOffset   limitStencilTable . UpdateValues  posePositions , limitPositions  if  args . deriv1Flag   limitStencilTable . UpdateDerivs  posePositions , limitDu , limitDv   if   args . noOutputFlag   printf   n g pose_d n  , i  objVertCount  writeToObj  baseLevel , limitPositions , objVertCount    delete refinerPtr  delete patchTablePtr  delete limitStencilTablePtr  return EXIT_SUCCESS   Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n-        \"loc\": \"bfr_tutorial_1_3.html\"\n+        \"loc\": \"far_tutorial_5_3.html\"\n     }, {\n-        \"title\": \"API Overview\",\n-        \"text\": \"API Overview API Overview 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE API Layers Using the Right Tools Use case 1 Simple refinement Use case 2 GL adaptive tessellation drawing of animating mesh Tutorials and Examples API Layers OpenSubdiv is structured as a set of layered libraries. This structure facilitates operation on a variety of computing resources, and allows developers to only opt-in to the layers and feature sets that they require. From a top-down point of view, OpenSubdiv is comprised of several layers, some public, and some private. Layers list Sdc Subdivision Core Sdc Overview The lowest level layer, implements the core subdivision details to facilitate the generation of consistent results. Most cases will only require the use of simple public types and constants from Sdc. Vtr Vectorized Topological Representation Vtr Overview A suite of classes to provide an intermediate representation of topology that supports efficient refinement. Vtr is intended for internal use only. Far Feature Adaptive Representation Far Overview The central interface that processes client-supplied geometry and turns it into a serialized data representation ready for parallel processing in Osd . Far also provides a fully-featured single-threaded implementation of subdivision interpolation algorithms. Bfr Bace Face Representation Bfr Overview A suite of classes to provide parameterization, evaluation and tessellation on the CPU. Bfr is more flexible and more scalable than Osd but potentially less efficient. Osd OpenSubdiv cross platform Osd Overview A suite of classes to provide parallel subdivision kernels and drawing utilities on a variety of platforms such as TBB, CUDA, OpenCL, GLSL and DirectX. Client mesh data enters the API through the Far layer. Typically, results will be collected from the Osd layer. However, it is possible to use functionality from Far without introducing any dependency on Osd. Although there are several entry-points to provide topology and primitive variable data to OpenSubdiv, eventually everything must pass through the private Vtr and Sdc representations for topological analysis. Using the Right Tools OpenSubdivs tiered interface offers a lot flexibility to make your application both fast and robust. Because navigating through the large collection of classes and features can be challenging, here are use cases that should help sketch the broad lines of going about using subdivisions in your application. General client application requirements Surface Limit For some applications, a polygonal approximation of the smooth surface is enough. Others require C 2 continuous differentiable bi-cubic patches ex deformable displacement mapping, smooth normals and semi-sharp creases... Deforming Surface Applications such as off-line image renderers often process a single frame at a time. Others, such as interactive games need to evaluate deforming character surface every frame. Because we can amortize many computations if the topology of the mesh does not change, OpenSubdiv provides stencil tables in order to leverage subdivision refinement into a pre-computation step. Multi-threading OpenSubdiv also provides dedicated interfaces to leverage parallelism on a wide variety of platforms and API standards, including both CPUs and GPUs. GPU Draw If the application requires interactive drawing on screen, OpenSubdiv provides several back-end implementations, including D3D11 and OpenGL. These back-ends provide full support for programmable shading. Use case 1 Simple refinement The following example shows the most simple case to get your mesh refined uniformly. Define a class for the primvar you want to refine. Its required to have Clear and AddWithWeight functions. struct Vertex  void Clear   x  y  z  0   void AddWithWeight  Vertex const  src , float weight   x  weight  src . x  y  weight  src . y  z  weight  src . z   float x , y , z   2. Instantiate a FarTopologyRefiner from the FarTopologyDescriptor . Far  TopologyDescriptor desc  desc . numVertices   the number of vertices  desc . numFaces   the number of faces  desc . numVertsPerFace   array of the number of verts per face  desc . vertIndicesPerFace   array of vert indices  Far  TopologyRefiner  refiner  Far  TopologyRefinerFactory  Descriptor  Create  desc  Call RefineUniform to refine the topology up to maxlevel. refiner - RefineUniform  Far  TopologyRefiner  UniformOptions  maxlevel  4. Interpolate vertex primvar data at level using FarPrimvarRefiner Far  PrimvarRefiner primvarRefiner   refiner  Vertex const  src   coarse vertices  Vertex  dst   refined vertices  primvarRefiner . Interpolate  level , src , dst  The topology at the refined level can be obtained from FarTopologyLevel Far  TopologyLevel const  refLastLevel  refiner - GetLevel  maxlevel  int nverts  refLastLevel . GetNumVertices  int nfaces  refLastLevel . GetNumFaces  for  int face  0  face  nfaces   face   Far  ConstIndexArray fverts  refLastLevel . GetFaceVertices  face   do something with dst and fverts  Done See Far tutorial 1.1 for the complete code example. Use case 2 GL adaptive tessellation drawing of animating mesh The next example is showing how to draw adaptive tessellated patches in GL using OpenSubdiv. The osd layer helps you to interact with GL and other device specific APIs. Also for an efficient refinement of animating mesh on a static topology, we create a stencil table to refine the positions changing over time. The following example code uses an OsdGLMesh utility class which composites a stencil table, patch table, vertex buffer and evaluator in osd layer. You can also use those classes independently. 1. Instantiate a FarTopologyRefiner from the FarTopologyDescriptor , same as usecase 1. Setup OsdMesh. In this example we use b-spline endcap. int numVertexElements  3   x, y, z Osd  MeshBitset bits  bits . set  Osd  MeshAdaptive , true   set adaptive bits . set  Osd  MeshEndCapBSplineBasis , true   use b-spline basis patch for endcap. Osd  GLMeshInterface  mesh  new Osd  Mesh  Osd  CpuGLVertexBuffer , Far  StencilTable , Osd  CpuEvaluator , Osd  GLPatchTable   refiner , numVertexElements , 0 , level , bits  3. Update coarse vertices and refine OsdMeshRefine calls OsdCpuEvaluatorEvalStencils  mesh - UpdateVertexBuffer   vertex  0 , 0 , nverts  mesh - Refine  Bind index buffer, PatchParamBuffer and vertex buffer  index buffer glBindBuffer  GL_ELEMENT_ARRAY_BUFFER , mesh - GetPatchTable  - GetPatchIndexBuffer   vertex buffer glBindBuffer  GL_ARRAY_BUFFER , mesh - BindVertexBuffer  glEnableVertexAttribArray  0  glVertexAttribPointer  0 , numVertexElements , GL_FLOAT , GL_FALSE , numVertexElements  sizeof  float , 0   patch param buffer glActiveTexture  GL_TEXTURE0  glBindTexture  GL_TEXTURE_BUFFER , mesh - GetPatchTable  - GetPatchParamTextureBuffer  Draw. Since we use b-spline endcaps in this example, there is only one PatchArray in the patch table. You may need to iterate patch arrays as you use other type of endcap. To configure GLSL program for each patch type, see osd shader interface for more details. Osd  PatchArray const  patch  mesh - GetPatchTable  - GetPatchArrays  0  Far  PatchDescriptor desc  patch . GetDescriptor  int numVertsPerPatch  desc . GetNumControlVertices   16 for B-spline patches glUseProgram  BSplinePatchProgram  glPatchParameteri  GL_PATCH_VERTICES , numVertsPerPatch  glDrawElements  GL_PATCHES , patch . GetNumPatches   numVertsPerPatch , GL_UNSIGNED_INT , 0  As the mesh animates, repeat from step 3 to update positions, refine, and draw. See glViewer and other examples for more complete usage. Tutorials and Examples For more use cases, please see Tutorials and Examples Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"title\": \"Overview of Release 3.1\",\n+        \"text\": \"Overview of Release 3.1 Overview of Release 3.1 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE New Features Bicubic Face-Varying Patches Varying and Face-Varying Evaluation Second Order Derivative Evaluation Separate Levels of Feature Isolation Sharp Patches for Infinitely Sharp Features API Additions OsdCpuEvaluator, GLComputeEvaluator, etc OsdCpuPatchTable, GLPatchTable, etc OsdMeshBits OsdPatchParam OsdGLSLPatchShaderSource, HLSLPatchShaderSource FarLimitStencil FarLimitStencilTable FarLimitStencilTableFactoryOptions FarPatchParam FarPatchTable FarPatchTableFactoryOptions FarTopologyLevel FarTopologyRefinerAdaptiveOptions Other Changes Improvements Bug Fixes New Features Bicubic Face-Varying Patches The motivation for this feature is to improve drawing and evaluation of face-varying primvar values for all face-varying interpolation options . A common use of non-linear face-varying data is to capture a UV projection on the surface. The following example shows a simple shape with the face-varying interpolation option assigned to a non-linear choice to achieve the desired projection in this case FVAR_LINEAR_NONE Linear Face-Varying Patches Bicubic Face-Varying Patches The result on the left shows the old linearly interpolated patches, which ignores any non-linear settings. The result on the right shows the new use of bicubic face-varying patches to accurately interpolate the desired projection. Generation of a full face-varying patch representation can be enabled using a new option in FarPatchTableFactoryOptions. Additionally, topological refinement can be improved to consider fvar channel topology using a new option in FarTopologyRefinerAdaptiveOptions. See the API additions below and their associated Doxygen text for more details. Evaluation of patch basis weights for all patch types as been added to the GPU shader source provided by OsdGLSLPatchShaderSource, and OsdHLSLPatchShaderSource. Use of non-linear face-varying patches increases the storage size of the patch table and may also require additional data access and computation while drawing. Varying and Face-Varying Evaluation This feature extends existing evaluation methods to support evaluation of varying and face-varying primvar data at arbitrary limit surface locations. Varying Primvar Evaluation Face-Varying Primvar Evaluation The image on the left shows evaluation of varying primvar values and the image on the right shows evaluation of face-varying primvar values. The EvaluateBasis API of FarPatchTable has been extended as well as the OSD Evaluator API. Second Order Derivative Evaluation This feature extends the FarLimitStencilTable and FarPatchTable interfaces to support evaluation of 2nd order partial derivatives. The generation of derivative values for FarLimitStencilTable is controlled by new options that can be specified when creating the stencil table. Additionally, the implementation exposes a more accurate method to compute derivatives for Gregory basis patches. This can be enabled using the CMake configuration and compile time definition OPENSUBDIV_GREGORY_EVAL_TRUE_DERIVATIVES. Separate Levels of Feature Isolation The primary motivation for this feature is to reduce the number of patches generated by adaptive refinement when they can be adequately represented at a lower level. A single level of isolation must be as high as the greatest semi-sharp feature to properly resolve the shape of that feature. That high isolation level generates many unnecessary patches for smooth extra-ordinary vertices. In the following example, a single semi-sharp vertex is refined to level 5 Single Isolation Level 5 Primary Level 5, Secondary Level 2 Single isolation to level 5 on the left results in 312 patches. The right shows the semi-sharp feature isolated to 5, but with the new secondary level set to 2, the number of patches is reduced to 123. The second specified level of adaptive refinement is used to halt isolation for features that typically do not require the specified maximum. These include interior and boundary extra-ordinary vertices and those infinitely sharp patches that correspond to boundary extra-ordinary patches. The secondary level is available as a new option in FarTopologyRefinerAdaptiveOptions. Sharp Patches for Infinitely Sharp Features The motivation for sharp patches is to accurately represent the limit surface of infinitely sharp features, which otherwise can only be approximated by very high levels of adaptive refinement, resulting in many unnecessary patches. The true limit surface for regular faces along an infinitely sharp crease is a regular B-Spline patch -- the same as regular faces along a boundary. Similarly, the limit surface for faces around an extra-ordinary vertex on an infinitely sharp crease is the same as that of faces around an extra-ordinary vertex on a boundary. So these patches are identified and isolated to the same degree -- the regular patches as soon as possible, and the irregular patches to the depth specified. Consider the following regressionshapecatmark_cube_creases2 Level 5 without Sharp Patches Level 5 with Sharp Patches Level 2 with Sharp Patches Without use of sharp patches on the left, isolating to level 5 generates 1764 patches and does still not capture the sharp edges. With sharp patches in the center, isolating to the same degree level 5 reduces the number of patches to 96 and captures the sharp edges. The sharp features can be captured at a lower degree with comparable accuracy as illustrated on the right where isolation to level 2 further reduces the number of patches to 42. The use of infinitely sharp patches can be enabled both at a high level as an new option to OsdMesh, or more directly when adaptively refining or construction the patch tables in FarTopologyRefinerAdaptiveOptions and FarPatchTableFactoryOptions. Given the improved accuracy and reduced patches by the use of simple regular patches, we would prefer that this be the default behavior, but it was made an explicit option in order to avoid disrupting existing usage. In a future major release this feature will hopefully be the norm. API Additions See associated Doxygen for full details. OsdCpuEvaluator, GLComputeEvaluator, etc EvalPatchesVarying EvalPatchesFaceVarying OsdCpuPatchTable, GLPatchTable, etc GetFVarPatchArrayBuffer GetFVarPatchIndexBuffer GetFVarPatchIndexSize GetFVarPatchParamBuffer GetFVarPatchParamSize GetNumFVarChannels GetVaryingPatchArrayBuffer GetVaryingPatchIndexBuffer GetVaryingPatchIndexSize OsdMeshBits member MeshFVarAdaptive member MeshUseInfSharpPatch OsdPatchParam IsRegular Unnormalize extensions to Set OsdGLSLPatchShaderSource, HLSLPatchShaderSource GetPatchBasisShaderSource FarLimitStencil GetDuuWeights GetDuvWeights GetDvvWeights extensions to LimitStencil FarLimitStencilTable GetDuuWeights GetDuvWeights GetDvvWeights Update2ndDerivs extensions to LimitStencilTable FarLimitStencilTableFactoryOptions member generate1stDerivatives member generate1stDerivatives extensions to LimitTableStencilFactoryCreate FarPatchParam IsRegular Unnormalize extensions to Set FarPatchTable ComputeLocalPointValuesFaceVarying ComputeLocalPointValuesVarying GetFVarPatchDescriptor GetFVarPatchParam GetNumLocalPointsFaceVarying GetNumLocalPointsVarying GetPatchArrayVaryingVertices GetPatchArrayFVarPatchParam GetPatchArrayFVarValues GetPatchFVarPatchParam GetPatchVaryingVertices GetVaryingPatchDescriptor GetVaryingVertices EvaluateBasisFaceVarying EvaluateBasisVarying extensions to EvaluateBasis FarPatchTableFactoryOptions member useInfSharpPatch member genenerateFVarLegacyLinearPatches FarTopologyLevel DoesEdgeFVarTopologyMatch DoesFaceFVarTopologyMatch DoesVertexFVarTopologyMatch IsEdgeBoundary IsEdgeNonManifold IsVertexBoundary IsVertexNonManifold FarTopologyRefinerAdaptiveOptions member secondaryLevel member useInfSharpPatch member considerFVarChannels Other Changes Improvements Enabled the use of CMakes folder feature Removed the use of iso646 alternative keywords and, or, not, etc. to improve portability Added numerical valued preprocessor directives OPENSUBDIV_VERSION_MAJOR, etc. to opensubdivversion.h Improved documentation for FarPatchParam and added Unnormalize to complement Normalize Added additional topology queries to FarTopologyLevel Updated glFVarViewer and glEvalLimit viewer to make use of bicubic face-varying patches Updated glViewer and dxViewer to add a toggle for InfSharpPatch Updated dxPtexViewer for improved feature parity with glPtexViewer Improved far_regression to exercise shapes independent of Hbr compatibility Added support for Appveyor continuous integration testing Removed cmakeFindIlmBase Removed mayaPolySmooth example Bug Fixes Fixed Ptex version parsing and compatibility issues Fixed compatibility issues with VS2015 Fixed bug interpolating face-varying data with Bilinear scheme Fixed bug with refinement using Chaikin creasing Fixed bugs with HUD sliders in the example viewers Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n-        \"loc\": \"api_overview.html\"\n+        \"loc\": \"release_31.html\"\n     }, {\n-        \"title\": \"License\",\n-        \"text\": \"License License 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE Open Source License OpenSubdiv is covered by a modified Apache 2.0 license included below, and is free to use for commercial or non-commercial use. All Pixar patents in the area of subdivision surface algorithms have also been released for public use. We welcome any involvement in the development or extension of this code in fact, we would love it. Please contact us if you are interested. For information on Apache licenses, see httpwww.apache.orglicenses The following license text describes the open source policy adopted by Pixar and is included in every source file. Copyright 2013 Pixar Licensed under the Apache License, Version 2.0 the Apache License with the following modification you may not use this file except in compliance with the Apache License and the following modification to it Section 6. Trademarks. is deleted and replaced with 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor and its affiliates, except as required to comply with Section 4c of the License and to reproduce the content of the NOTICE file. You may obtain a copy of the Apache License at httpwww.apache.orglicensesLICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the Apache License with the above modification is distributed on an AS IS BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the Apache License for the specific language governing permissions and limitations under the Apache License. Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"title\": \"References\",\n+        \"text\": \"References References 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE References References Analytic Displacement Mapping using Hardware Tessellation Matthias Niessner, Charles Loop ACM Transactions on Graphics, Vol. 32 No. 3 Article 26 June 2013 httpresearch.microsoft.comen-usumpeoplecloopTOG2013.pdf httpdoi.org10.11452487228.2487234 Feature Adaptive GPU Rendering of Catmull-Clark Subdivision Surfaces Matthias Niessner, Charles Loop, Mark Meyer, and Tony DeRose ACM Transactions on Graphics, Vol. 31 No. 1 Article 6 January 2012 httpresearch.microsoft.comen-usumpeopleclooptog2012.pdf httpdoi.org10.11452077341.2077347 Efficient Evaluation of Semi-Smooth Creases in Catmull-Clark Subdivision Surfaces Matthias Niessner, Charles Loop, and Guenter Greiner. Eurographics Proceedings, Cagliari, 2012 httpresearch.microsoft.comen-usumpeoplecloopEG2012.pdf httpdoi.org10.2312confEG2012short041-044 Approximating Subdivision Surfaces with Gregory Patches for Hardware Tessellation Charles Loop, Scott Schaefer, Tianyun Ni, Ignacio Castano SIGGRAPH Asia Conference Proceedings 2009 httpwww.dgp.toronto.edupeoplestamrealityResearchpdfsig98.pdf httpdoi.org10.11451661412.1618497 GPU Smoothing of Quad Meshes T. L. Ni, Y. Yeo, A. Myles, V. Goel and J. Peters Proc. IEEE SMI 2008 httpwww.cise.ufl.eduresearchSurfLabpaperssmi08.pdf httpdoi.org10.1109SMI.2008.4547938 Fast Parallel Construction of Smooth Surfaces from Meshes with TriQuadPent Facets A. Myles and T. Ni and J. Peters Eurographics Symposium on Geometry Processing 2008 httpswww.cise.ufl.eduresearchSurfLabpapers08poly.pdf httpdoi.org10.1111j.1467-8659.2008.01276.x Approximating Catmull-Clark Subdivision Surfaces with Bicubic Patches Charles Loop, Scott Schaefer ACM Transactions on Graphics, Vol. 27 No. 1 Article 8 March 2008 httpresearch.microsoft.comen-usumpeoplecloopacctog.pdf httpdoi.org10.11451330511.1330519 Rapid Evaluation of Catmull-Clark Subdivision Surfaces Jeffrey Bolz and Peter Schroder Web3D Proceedings 2002 httpwww.multires.caltech.edupubsfastsubd.pdf httpdoi.org10.1145504502.504505 Piecewise Smooth Subdivision Surfaces with Normal Control Henning Biermann, Adi Levin and Denis Zorin SIGGRAPH 2000 Conference Proceedings httpmrl.nyu.edudzorinpapersbiermann2000pss.pdf httpdoi.org10.1145344779.344841 Subdivision for Modeling and Animation Denis Zorin, Peter Schroder Course Notes of SIGGRAPH 1999 httpwww.multires.caltech.edupubssig99notes.pdf Exact Evaluation of Catmull-Clark Subdivision Surfaces at Arbitrary Parameter Values Jos Stam SIGGRAPH 98 Conference Proceedings, Annual Conference Series, July 1998 httpwww.dgp.toronto.edupeoplestamrealityResearchpdfsig98.pdf httpdoi.org10.1145280814.280945 Subdivision Surfaces in Character Animation Tony DeRose, Michael Kass, Tien Truong Proceedings of SIGGRAPH 1998 httpgraphics.pixar.comlibraryGeripaper.pdf httpdoi.org10.1145280814.280826 Efficient, Fair Interpolation Using Catmull-Clark Surfaces Mark Halstead, Michael Kass, Tony DeRose SIGGRAPH 93 Conference Proceedings httpgraphics.pixar.comlibraryFairSubdivisionpaper.pdf httpdoi.org10.1145166117.166121 Recursively generated B-spline surfaces on arbitrary topological meshes Catmull, E. Clark, J. Computer-Aided Design 10 6 1978 httpdoi.org10.10160010-448528782990110-0 Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n-        \"loc\": \"license.html\"\n+        \"loc\": \"references.html\"\n     }, {\n-        \"title\": \"bfr_tutorial_3_1.cpp\",\n-        \"text\": \"bfr_tutorial_3_1.cpp bfr_tutorial_3_1.cpp 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE httpsgithub.comPixarAnimationStudiosOpenSubdivblobreleasetutorialsbfrtutorial_3_1bfr_tutorial_3_1.cpp ------------------------------------------------------------------------------  Tutorial description   This tutorial illustrates the definition of a custom subclass of  BfrSurfaceFactory -- providing a class with the SurfaceFactory  interface adapted to a connected mesh representation.   The bulk of this code is therefore identical to a previous tutorial  1.3 which illustrates simple use of a BfrSurface factory. The  only difference here lies in the explicit local definition of the  subclass of BfrSurfaceFactory for FarTopologyRefiner -- named  CustomSurfaceFactory in this case.  include .customSurfaceFactory.h include opensubdivfartopologyRefiner.h include opensubdivbfrsurface.h include opensubdivbfrtessellation.h include vector include string include cstring include cstdio  Local headers with support for this tutorial in namespace tutorial include .meshLoader.h include .objWriter.h using namespace OpenSubdiv    Simple command line arguments to provide input and run-time options  class Args  public  std  string inputObjFile  std  string outputObjFile  Sdc  SchemeType schemeType  int tessUniformRate  bool tessQuadsFlag  bool uv2xyzFlag  public  Args  int argc , char  argv   inputObjFile , outputObjFile , schemeType  Sdc  SCHEME_CATMARK , tessUniformRate  5 , tessQuadsFlag  false , uv2xyzFlag  false   for  int i  1  i  argc   i   if  strstr  argv  i , .obj   if  inputObjFile . empty   inputObjFile  std  string  argv  i   else  fprintf  stderr , Warning Extra Obj file s ignored n  , argv  i    else if   strcmp  argv  i , -o   if   i  argc  outputObjFile  std  string  argv  i   else if   strcmp  argv  i , -bilinear   schemeType  Sdc  SCHEME_BILINEAR   else if   strcmp  argv  i , -catmark   schemeType  Sdc  SCHEME_CATMARK   else if   strcmp  argv  i , -loop   schemeType  Sdc  SCHEME_LOOP   else if   strcmp  argv  i , -res   if   i  argc  tessUniformRate  atoi  argv  i   else if   strcmp  argv  i , -quads   tessQuadsFlag  true   else if   strcmp  argv  i , -uv2xyz   uv2xyzFlag  true   else  fprintf  stderr , Warning Unrecognized argument s ignored n  , argv  i     private  Args       The main tessellation function given a mesh and vertex positions,  tessellate each face -- writing results in Obj format.  void tessellateToObj  Far  TopologyRefiner const  meshTopology , std  vector  float  const  meshVertexPositions , std  vector  float  const  meshFaceVaryingUVs , Args const  options     Use simpler local type names for the Surface and its factory  typedef CustomSurfaceFactory SurfaceFactory  typedef Bfr  Surface  float  Surface    Initialize the SurfaceFactory for the given base mesh very low  cost in terms of both time and space and tessellate each face  independently i.e. no shared vertices   Note that the SurfaceFactory is not thread-safe by default due to  use of an internal cache. Creating a separate instance of the  SurfaceFactory for each thread is one way to safely parallelize  this loop. Another preferred is to assign a thread-safe cache  to the single instance.   First declare any evaluation options when initializing   When dealing with face-varying data, an identifier is necessary  when constructing Surfaces in order to distinguish the different  face-varying data channels. To avoid repeatedly specifying that  identifier when only one is present or of interest, it can be  specified via the Options.  bool meshHasUVs   meshTopology . GetNumFVarChannels   0  SurfaceFactory  Options surfaceOptions  if  meshHasUVs   surfaceOptions . SetDefaultFVarID  0   SurfaceFactory surfaceFactory  meshTopology , surfaceOptions    The Surface to be constructed and evaluated for each face -- as  well as the intermediate and output data associated with it -- can  be declared in the scope local to each face. But since dynamic  memory is involved with these variables, it is preferred to declare  them outside that loop to preserve and reuse that dynamic memory.  Surface posSurface  Surface uvSurface  std  vector  float  facePatchPoints  std  vector  float  outCoords  std  vector  float  outPos , outDu , outDv  std  vector  float  outUV  std  vector  int  outFacets    Assign Tessellation Options applied for all faces. Tessellations  allow the creating of either 3- or 4-sided faces -- both of which  are supported here via a command line option  int const tessFacetSize  3  options . tessQuadsFlag  Bfr  Tessellation  Options tessOptions  tessOptions . SetFacetSize  tessFacetSize  tessOptions . PreserveQuads  options . tessQuadsFlag    Process each face, writing the output of each in Obj format  tutorial  ObjWriter objWriter  options . outputObjFile  int numFaces  surfaceFactory . GetNumFaces  for  int faceIndex  0  faceIndex  numFaces   faceIndex     Initialize the Surfaces for position and UVs of this face.  There are two ways to do this -- both illustrated here   Creating Surfaces for the different data interpolation types  independently is clear and convenient, but considerable work  may be duplicated in the construction process in the case of  non-linear face-varying Surfaces. So unless it is known that  face-varying interpolation is linear, use of InitSurfaces  is generally preferred.   Remember also that the face-varying identifier is omitted from  the initialization methods here as it was previously assigned  to the SurfaceFactoryOptions. In the absence of an assignment  of the default FVarID to the Options, a failure to specify the  FVarID here will result in failure.   The cases below are expanded for illustration purposes, and  validity of the resulting Surface is tested here, rather than  the return value of initialization methods.  bool createSurfacesTogether  true  if   meshHasUVs   surfaceFactory . InitVertexSurface  faceIndex ,  posSurface   else if  createSurfacesTogether   surfaceFactory . InitSurfaces  faceIndex ,  posSurface ,  uvSurface   else  if  surfaceFactory . InitVertexSurface  faceIndex ,  posSurface   surfaceFactory . InitFaceVaryingSurface  faceIndex ,  uvSurface    if   posSurface . IsValid  continue    Declare a simple uniform Tessellation for the Parameterization  of this face and identify coordinates of the points to evaluate  Bfr  Tessellation tessPattern  posSurface . GetParameterization , options . tessUniformRate , tessOptions  int numOutCoords  tessPattern . GetNumCoords  outCoords . resize  numOutCoords  2  tessPattern . GetCoords  outCoords . data    Prepare the patch points for the Surface, then use them to  evaluate output points for all identified coordinates   Evaluate vertex positions   Resize patch point and output arrays int pointSize  3  facePatchPoints . resize  posSurface . GetNumPatchPoints   pointSize  outPos . resize  numOutCoords  pointSize  outDu . resize  numOutCoords  pointSize  outDv . resize  numOutCoords  pointSize   Populate patch point and output arrays posSurface . PreparePatchPoints  meshVertexPositions . data , pointSize , facePatchPoints . data , pointSize  for  int i  0 , j  0  i  numOutCoords   i , j  pointSize   posSurface . Evaluate   outCoords  i  2 , facePatchPoints . data , pointSize ,  outPos  j ,  outDu  j ,  outDv  j     Evaluate face-varying UVs when present if  meshHasUVs    Resize patch point and output arrays  - note reuse of the same patch point array as position int pointSize  2  facePatchPoints . resize  uvSurface . GetNumPatchPoints   pointSize  outUV . resize  numOutCoords  pointSize   Populate patch point and output arrays uvSurface . PreparePatchPoints  meshFaceVaryingUVs . data , pointSize , facePatchPoints . data , pointSize  for  int i  0 , j  0  i  numOutCoords   i , j  pointSize   uvSurface . Evaluate   outCoords  i  2 , facePatchPoints . data , pointSize ,  outUV  j      Identify the faces of the Tessellation   Note the need to offset vertex indices for the output faces --  using the number of vertices generated prior to this face. One  of several Tessellation methods to transform the facet indices  simply translates all indices by the desired offset.  int objVertexIndexOffset  objWriter . GetNumVertices  int numFacets  tessPattern . GetNumFacets  outFacets . resize  numFacets  tessFacetSize  tessPattern . GetFacets  outFacets . data  tessPattern . TransformFacetCoordIndices  outFacets . data , objVertexIndexOffset    Write the evaluated points and faces connecting them as Obj  objWriter . WriteGroupName  baseFace_ , faceIndex  if  meshHasUVs  options . uv2xyzFlag   objWriter . WriteVertexPositions  outUV , 2  objWriter . WriteFaces  outFacets , tessFacetSize , false , false   else  objWriter . WriteVertexPositions  outPos  objWriter . WriteVertexNormals  outDu , outDv  if  meshHasUVs   objWriter . WriteVertexUVs  outUV   objWriter . WriteFaces  outFacets , tessFacetSize , true , meshHasUVs       Load command line arguments, specified or default geometry and process  int main  int argc , char  argv   Args args  argc , argv  Far  TopologyRefiner  meshTopology  0  std  vector  float  meshVtxPositions  std  vector  float  meshFVarUVs  meshTopology  tutorial  createTopologyRefiner  args . inputObjFile , args . schemeType , meshVtxPositions , meshFVarUVs  if  meshTopology  0   return EXIT_FAILURE   tessellateToObj   meshTopology , meshVtxPositions , meshFVarUVs , args  delete meshTopology  return EXIT_SUCCESS   ------------------------------------------------------------------------------ Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"title\": \"hbr_tutorial_1.cpp\",\n+        \"text\": \"hbr_tutorial_1.cpp hbr_tutorial_1.cpp 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE httpsgithub.comPixarAnimationStudiosOpenSubdivblobreleasetutorialshbrtutorial_1hbr_tutorial_1.cpp ------------------------------------------------------------------------------  Tutorial description   This tutorial shows how to safely create Hbr meshes from arbitrary topology.  Because Hbr is a half-edge data structure, it cannot represent non-manifold  topology. Ensuring that the geometry used is manifold is a requirement to use  Hbr safely. This tutorial presents some simple tests to detect inappropriate  topology.  include opensubdivhbrmesh.h include opensubdivhbrcatmark.h include cstdio ------------------------------------------------------------------------------ struct Vertex   Hbr minimal required interface ---------------------- Vertex    Vertex  int i    Vertex  Vertex const  src   _position  0   src . _position  0  _position  1   src . _position  1  _position  2   src . _position  2   void Clear  void   0    void AddWithWeight  Vertex const  , float    void AddVaryingWithWeight  Vertex const  , float     Public interface ------------------------------------ void SetPosition  float x , float y , float z   _position  0   x  _position  1   y  _position  2   z   const float  GetPosition  const  return _position   private  float _position  3   typedef OpenSubdiv  HbrMesh  Vertex  Hmesh  typedef OpenSubdiv  HbrFace  Vertex  Hface  typedef OpenSubdiv  HbrVertex  Vertex  Hvertex  typedef OpenSubdiv  HbrHalfedge  Vertex  Hhalfedge  ------------------------------------------------------------------------------  Non-manifold geometry from catmark_fan.h   o             o    f2      o------------o------------o             f0   f1       o------------ o------------o   The shared edge of a fan is adjacent to 3 faces, and therefore non-manifold.  static float verts  8  3    -1.0 , 0.0 , -1.0 ,  -1.0 , 0.0 , 0.0 ,  0.0 , 0.0 , 0.0 ,  0.0 , 0.0 , -1.0 ,  1.0 , 0.0 , 0.0 ,  1.0 , 0.0 , -1.0 ,  0.0 , 1.0 , 0.0 ,  0.0 , 1.0 , -1.0  static int nverts  8 , nfaces  3  static int facenverts  3    4 , 4 , 4  static int faceverts  12    0 , 1 , 2 , 3 , 3 , 2 , 4 , 5 , 3 , 2 , 6 , 7  ------------------------------------------------------------------------------ int main  int , char    OpenSubdiv  HbrCatmarkSubdivision  Vertex   catmark  new OpenSubdiv  HbrCatmarkSubdivision  Vertex   Hmesh  hmesh  new Hmesh  catmark  Vertex v  for  int i  0  i  nverts   i   v . SetPosition  verts  i  0 , verts  i  1 , verts  i  2  hmesh - NewVertex  i , v    Create the topology int  fv  faceverts  for  int i  0  i  nfaces   i   int nv  facenverts  i  bool valid  true  for  int j  0  j  nv  j    Hvertex const  origin  hmesh - GetVertex  fv  j ,  destination  hmesh - GetVertex  fv  j  1   nv  Hhalfedge const  opposite  destination - GetEdge  origin   Make sure that the vertices exist in the mesh if  origin  NULL  destination  NULL   printf   An edge was specified that connected a nonexistent vertex n   valid  false  break    Check for a degenerate edge if  origin  destination   printf   An edge was specified that connected a vertex to itself n   valid  false  break    Check that no more than 2 faces are adjacent to the edge if  opposite  opposite - GetOpposite    printf   A non-manifold edge incident to more than 2 faces was found n   valid  false  break    Check that the edge is unique and oriented properly if  origin - GetEdge  destination   printf   An edge connecting two vertices was specified more than once.  Its likely that an incident face was flipped n   valid  false  break    if  valid   hmesh - NewFace  nv , fv , 0   else  printf   Skipped face d n  , i   fv  nv   hmesh - SetInterpolateBoundaryMethod  Hmesh  k_InterpolateBoundaryEdgeOnly  hmesh - Finish  printf  Created a fan with d faces and d vertices. n  , hmesh - GetNumFaces , hmesh - GetNumVertices  delete hmesh  delete catmark   ------------------------------------------------------------------------------ Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n-        \"loc\": \"bfr_tutorial_3_1.html\"\n+        \"loc\": \"hbr_tutorial_1.html\"\n     }, {\n         \"title\": \"FAR Overview\",\n         \"text\": \"FAR Overview FAR Overview 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE Feature Adaptive Representation Far Topology Refinement Primvar Refinement FarTopologyRefiner FarTopologyRefinerFactory FarPrimvarRefiner FarPatchTable Patch Arrays Patch Types Patch Parameterization Single-Crease Patches Local Points Legacy Gregory Patches FarStencilTable Advantages Principles Cascading Stencils Limit Stencils Sample Location On Extraordinary Faces Code example Feature Adaptive Representation Far Far is the primary API layer for processing client-supplied mesh data into subdivided surfaces. The Far interface may be used directly and also may be used to prepare mesh data for further processing by Osd . The two main aspects of the subdivision process are Topology Refinement and Primvar Refinement . Topology Refinement Topology refinement is the process of splitting the mesh topology according to the specified subdivison rules to generate new topological vertices, edges, and faces. This process is purely topological and does not depend on the speciific values of any primvar data point positions, etc. Topology refinement can be either uniform or adaptive, where extraordinary features are automatically isolated see feature adaptive subdivision . The Far topology classes present a public interface for the refinement functionality provided in Vtr , The main classes in Far related to topology refinement are TopologyRefiner A class encapsulating mesh refinement. TopologyLevel A class representing one level of refinement within a TopologyRefiner. TopologyRefinerFactoryMESH A factory class template specialized in terms of the applications mesh representation used to construct TopologyRefiner instances. Primvar Refinement Primvar refinement is the process of computing values for primvar data points, colors, normals, texture coordinates, etc by applying weights determined by the specified subdivision rules. There are many advantages gained by distinguishing between topology refinement and primvar interpolation including the ability to apply a single static topological refinement to multiple primvar instances or to different animated primvar time samples. Far supports methods to refine primvar data at the locations of topological vertices and at arbitrary locations on the subdivision limit surface. The main classes in Far related to primvar refinement are PrimvarRefiner A class implementing refinement of primvar data at the locations of topological vertices. PatchTable A representation of the refined surface topology that can be used for efficient evaluation of primvar data at arbitrary locations. StencilTable A representation of refinement weights suitable for efficient parallel processing of primvar refinement. LimitStencilTable A representation of refinement weights suitable for efficient parallel processing of primvar refinement at arbitrary limit surface locations. FarTopologyRefiner TopologyRefiner is the building block for many other useful classes in Far . It performs refinement of an arbitrary mesh and provides access to the refined mesh topology. It can be used for primvar refinement directly using PrimvarRefiner or indirectly by being used to create a stencil table , or a patch table , etc. TopologyRefiner provides the public refinement methods RefineUniform and RefineAdapative which perform refinement operations using Vtr. TopologyRefiner provides access to the refined topology via TopologyLevel instances. FarTopologyRefinerFactory Consistent with other classes in Far, instances of TopologyRefiner are created by a factory class -- in this case FarTopologyRefinerFactory. Here we outline several approaches for converting mesh topology into the required FarTopologyRefiner. Additional documentation is provided with the FarTopologyRefinerFactoryMESH class template used by all, and each has a concrete example provided in one of the tutorials or in the Far code itself. There are three ways to create TopologyRefiners use the existing TopologyRefinerFactoryTopologyDescriptor with a populated instance of TopologyDescriptor specialize TopologyRefinerFactoryclass MESH for more efficient conversion, using only face-vertex information fully specialize TopologyRefinerFactorclass MESH for most control over conversion Use the FarTopologyDescriptor FarTopologyDescriptor is a simple struct that can be initialized to refer to raw mesh topology information -- primarily a face-vertex list -- and then passed to a provided factory class to create a TopologyRefiner from each. Topologically, the minimal requirement consists of the number of vertices and faces of the mesh an array containing the number of vertices per face an array containing the vertices assigned to each face These last two define one of the six topological relations that are needed internally by Vtr, but this one relation is sufficient to construct the rest. Additional members are available to assign sharpness values per edge andor vertex, hole tags to faces, or to define multiple sets channels of face-varying data. Almost all of the Far tutorials i.e. tutorialsfartutorial_ illustrate use of the TopologyDescriptor and its factory for creating TopologyRefiners, i.e. TopologyRefinerFactoryTopologyDescriptor. For situations when users have raw mesh data and have not yet constructed a boundary representation of their own, it is hoped that this will suffice. Options have even been provided to indicate that raw topology information has been defined in a left-hand winding order and the factory will handle the conversion to right-hand counter-clockwise winding on-the-fly to avoid unnecessary data duplication. Custom Factory for Face Vertices If the nature of the TopologyDescriptors data expectations is not helpful, and so conversion to large temporary arrays would be necessary to properly make use of it, it may be worth writing a custom factory. Specialization of TopologyRefinerFactoryclass MESH should be done with care as the goal here is to maximize the performance of the conversion and so minimize overhead due to runtime validation. The template provides the high-level construction of the required topology vectors of the underlying Vtr. There are two ways to write such a factory provide only the face-vertex information for topology and let the factory infer all edges and other relationships, or provide the complete edge list and all other topological relationships directly. The latter is considerably more involved and described in a following section. The definition of TopologyRefinerFactoryTopologyDescriptor provides a clear and complete example of constructing a TopologyRefiner with minimal topology information, i.e. the face-vertex list. The class template TopologyRefinerFactoryMESH documents the needs here and the TopologyDescriptor instantiation and specialization should illustrate that. Custom Factory for Direct Conversion Fully specializing a factory for direct conversion is needed only for those requiring ultimate control and is not generally recommended. It is recommended that one of the previous two methods initially be used to convert your mesh topology into a TopologyRefiner. If the conversion performance is critical, or significant enough to warrant improvement, then it is worth writing a factory for full topological conversion. Writing a custom factory requires the specificationspecialization of two methods with the following purpose specify the sizes of topological data so that vectors can be pre-allocated assign the topological data to the newly allocated vectors As noted above, the assumption here is that the clients boundary-rep knows best how to retrieve the data that we require most efficiently. After the factory class gathers sizing information and allocates appropriate memory, the factory provides the client with locations of the appropriate tables to be populated using the same Array classes and interface used to access the tables. The client is expected to load a complete topological description along with additional optional data, i.e. the six topological relations required by Vtr, oriented when manifold sharpness values for edges andor vertices optional additional tags related to the components, e.g. holes optional values-per-face for face-varying channels optional This approach requires dealing directly with edges, unlike the other two. In order to convert edges into a TopologyRefiners representation, the edges need to be expressed as a collection of known size N -- each of which is referred to directly by indices 0,N-1. This can be awkward for representations such as half-edge or quad-edge that do not treat the instance of an edge uniquely. Particular care is also necessary when representing non-manifold features. The previous two approaches will construct non-manifold features as required from the face-vertex list -- dealing with degenerate edges and other non-manifold features as encountered. When directly translating full topology it is necessary to tag non-manifold features, and also to ensure that certain edge relationships are satisfied in their presence. More details are available with the assembly methods of the factory class template. While there is plenty of opportunity for user error here, that is no different from any other conversion process. Given that Far controls the construction process through the Factory class, we do have ample opportunity to insert runtime validation, and to vary that level of validation at any time on an instance of the Factory. The factory does provide run-time validation on the topology constructed that can be used for debugging purposes. A common base class has been created for the factory class, i.e. template  class MESH  class TopologyRefinerFactory  public TopologyRefinerFactoryBase both to provide common code independent of MESH and also potentially to protect core code from unwanted specialization. FarPrimvarRefiner PrimvarRefiner supports refinement of arbitrary primvar data at the locations of topological vertices. A PrimvarRefiner accesses topology data directly from a TopologyRefiner. Different methods are provided to support three different classes of primvar interpolation. These methods may be used to refine primvar data to a specified refinement level. Interpolate... Interpolate using vertex weights InterpolateVarying... Interpolate using linear weights InterpolateFaceVarying... Interpolate using face-varying weights Additional methods allow primvar data to be interpolated to the final limit surface including the calculation of first derivative tangents. Limitdst Interpolate to the limit surface using vertex weights Limitdst, dstTan1, dstTan2 Interpolate including first derivatives to the limit surface using vertex weights LimitFaceVarying... Interpolate to the limit surface using face-varying weights PrimarRefiner provides a straightforward interface for refining primvar data, but depending on the application use case, it can be more efficient to create and use a StencilTable , or PatchTable , to refine primvar data. FarPatchTable PatchTable is the collection of patches derived from the refined faces of a particular mesh topology. This collection is created using FarPatchTableFactory from an instance of FarTopologyRefiner after refinement has been applied. Patch Arrays The PatchTable is organized into patch arrays. All patches in each array have the same type except for face-varying patch arrays which may have a mix of regular and irregular patch types. The PatchDescriptor provides the fundamental description of a patch, including the number of control points per patch as well as the basis for patch evaluation. Each patch in the array is associated with a PatchParam which specifies additional information about the individual patch. Patch Types The following are the different patch types that can be represented in the PatchTable Patch Type CVs Description NON_PATCH na Undefined patch type POINTS 1 Points  useful for cage drawing LINES 2 Lines  useful for cage drawing QUADS 4 Bi-linear quadrilaterals TRIANGLES 3 Linear triangles LOOP 12 Quartic triangular Box-spline patches REGULAR 16 Bi-cubic B-spline patches GREGORY 4 Legacy Gregory patches GREGORY_BOUNDARY 4 Legacy Gregory Boundary patches GREGORY_BASIS 20 Bi-cubic quadrilateral Gregory patches GREGORY_TRIANGLE 18 Quartic triangular Gregory patches The type of a patch dictates the number of control vertices expected in the table as well as the method used to evaluate values. Patch Parameterization Here we describe the encoding of the patch parameterization for quadrilateral patches. The encoding for triangular patches is similar, please see the API documentation of FarPatchParam for details. Each patch represents a specific portion of the parametric space of the coarse topological face identified by the PatchParam FaceId. As topological refinement progresses through successive levels, each resulting patch corresponds to a smaller and smaller subdomain of the face. The PatchParam UV origin describes the mapping from the uv domain of the patch to the uv subdomain of the topological face. We encode this uv origin using log2 integer values for compactness and efficiency. It is important to note that this uv parameterization is the intrinsic parameterization within a given patch or coarse face and is distinct from any client specified face-varying channel data. Patches which result from irregular coarse faces non-quad faces in the Catmark scheme are offset by the one additional level needed to quadrangulate the irregular face. It is the indices of these offset faces that are stored in the PatchParam and used in other classes such as the FarPatchMap. These offset indices can be identified from the coarse face using the FarPtexIndices class when needed. A patch along an interpolated boundary edge is supported by an incomplete sets of control vertices. For consistency, patches in the PatchTable always have a full set of control vertex indices and the PatchParam Boundary bitmask identifies which control vertices are incomplete the incomplete control vertex indices are assigned values which duplicate the first valid index. Each bit in the boundary bitmask corresponds to one edge of the patch starting from the edge from the first vertex and continuing around the patch. With feature adaptive refinement, regular B-spline basis patches along interpolated boundaries will fall into one of the eight cases four boundary and four corner illustrated below Transition edges occur during feature adaptive refinement where a patch at one level of refinement is adjacent to pairs of patches at the next level of refinement. These T-junctions do not pose a problem when evaluating primvar data on patches, but they must be taken into consideration when tessellating patches e.g. while drawing in order to avoid cracks. The PatchParam Transition bitmask identifies the transition edges of a patch. Each bit in the bitmask corresponds to one edge of the patch just like the encoding of boundary edges. After refining an arbitrary mesh, any of the 16 possible transition edge configurations might occur. The method of handling transition edges is delegated to patch drawing code. Single-Crease Patches Using single-crease patches allows a mesh with creases to be represented with many fewer patches than would be needed otherwise. A single-crease patch is a variation of a regular BSpline patch with one additional crease sharpness parameter. Release Notes 3.x Evaluation of single-crease patches is currently only implemented for OSD patch drawing, but we expect to implement support in all of the evaluation code paths for future releases. Local Points The control vertices represented by a PatchTable are primarily refined points, i.e. points which result from applying the subdivision scheme uniformly or adaptively to the points of the coarse mesh. However, the final patches generated from irregular faces, e.g. patches incident on an extraordinary vertex might have a representation which requires additional local points. Legacy Gregory Patches Using Gregory patches to approximate the surface at the final patches generated from irregular faces is an alternative representation which does not require any additional local points to be computed. Instead, when Legacy Gregory patches are used, the PatchTable must also have an alternative representation of the mesh topology encoded as a vertex valence table and a quad offsets table. FarStencilTable The base container for stencil data is the StencilTable class. As with most other Far entities, it has an associated StencilTableFactory that requires a TopologyRefiner Advantages Stencils are used to factorize the interpolation calculations that subdivision schema apply to vertices of smooth surfaces. If the topology being subdivided remains constant, factorizing the subdivision weights into stencils during a pre-compute pass yields substantial amortizations at run-time when re-posing the control cage. Factorizing the subdivision weights also allows to express each subdivided vertex as a weighted sum of vertices from the control cage. This step effectively removes any data inter-dependency between subdivided vertices  the computations of subdivision interpolation can be applied to each vertex in parallel without any barriers or constraint. The Osd classes leverage these properties by exploiting CPU and GPU parallelism. Principles Iterative subdivision algorithms converge towards the limit surface by successively refining the vertices of the coarse control cage. Each successive iteration interpolates the new vertices by applying polynomial weights to a basis of supporting vertices . The interpolation calculations for any given vertex can be broken down into sequences of multiply-add operations applied to the supporting vertices. Stencil table encodes a factorization of these weighted sums  each stencils is created by combining the list of control vertices from the 1-ring. With iterative subdivision, each refinement step is dependent upon the previous subdivision step being completed, and a substantial number of steps may be required in order approximate the limit  each subdivision step incurs an O4 n  growing amount of computations. Instead, once the weights of the contributing coarse control vertices for a given refined vertex have been factorized, it is possible to apply the stencil and directly obtain the interpolated vertex data without having to process the data for the intermediate refinement levels. Cascading Stencils Client-code can control the amount of factorization of the stencils  the tables can be generated with contributions all the way from a basis of coarse vertices, or reduced only to contributions from vertices from the previous level of refinement. The latter mode allows client-code to access and insert modifications to the vertex data at set refinement levels -- creating what are often referred to as hierarchical edits . Once the edits have been applied by the client-code, another set of stencils can be used to smooth the vertex data to a higher level of refinement. See implementation details, see the Far cascading stencil tutorial Limit Stencils Stencil tables can be trivially extended from discrete subdivided vertices to arbitrary locations on the limit surface. Aside from extraordinary points, every location on the limit surface can be expressed as a closed-form weighted average of a set of coarse control vertices from the 1-ring surrounding the face. The weight accumulation process is similar  the control cage is adaptively subdivided around extraordinary locations. A stencil is then generated for each limit location simply by factorizing the bi-cubic Bspline patch weights over those of the contributing basis of control-vertices. The use of bi-cubic patches also allows the accumulation of analytical derivatives, so limit stencils carry a set of weights for tangent vectors. Once the stencil table has been generated, limit stencils are the most direct and efficient method of evaluation of specific locations on the limit of a subdivision surface, starting from the coarse vertices of the control cage. Also just as discrete stencils, limit stencils that are factorized from coarse control vertices do not have inter-dependencies and can be evaluated in parallel. For implementation details, see the glStencilViewer code example. Sample Location On Extraordinary Faces Each stencil is associated with a singular parametric location on the coarse mesh. The parametric location is defined as face location and local 0.0 - 1.0 u,v triplet In the case of face that are not quads, a parametric sub-face quadrant needs to be identified. This can be done either explicitly or implicitly by using the unique ptex face indices for instance. Code example When the control vertices controlPoints move in space, the limit locations can be very efficiently recomputed simply by applying the blending weights to the series of coarse control vertices class StencilType  public  void Clear   memset   x , 0 , sizeof  StencilType   void AddWithWeight  StencilType const  cv , float weight   x  cv . x  weight  y  cv . y  weight  z  cv . z  weight   float x , y , z   std  vector  StencilType  controlPoints , points , utan , vtan   Update points by applying stencils controlStencils . UpdateValues  StencilType    controlPoints  0 ,  points  0    Update tangents by applying derivative stencils controlStencils . UpdateDerivs  StencilType    controlPoints  0 ,  utan  0 ,  vtan  0   Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n         \"loc\": \"far_overview.html\"\n     }, {\n+        \"title\": \"far_tutorial_5_2.cpp\",\n+        \"text\": \"far_tutorial_5_2.cpp far_tutorial_5_2.cpp 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE httpsgithub.comPixarAnimationStudiosOpenSubdivblobreleasetutorialsfartutorial_5_2far_tutorial_5_2.cpp ------------------------------------------------------------------------------  Tutorial description   This tutorial shows how to manage the limit surface of a potentially  large mesh by creating groups of patches for selected faces of the  mesh. Familiarity with construction and evaluation of a PatchTable  is assumed see tutorial_5_1.   When the patches for a mesh do not need to be retained for further  use, e.g. when simply computing points for a tessellation, the time  and space required to construct a single large PatchTable can be  considerable. By constructing, evaluating and discarding smaller  PatchTables for subsets of the mesh, the high transient memory cost  can be avoided when computed serially. When computed in parallel,  there may be little memory savings, but the construction time can  then be distributed.   This tutorial creates simple geometry currently a lattice of cubes  that can be expanded in complexity with a simple multiplier. The  collection of faces are then divided into a specified number of groups  from which patches will be constructed and evaluated. A simple  tessellation a triangle fan around the midpoint of each face is then  written in Obj format to the standard output.  include ......regressioncommonarg_utils.h include ......regressioncommonfar_utils.h include opensubdivfartopologyDescriptor.h include opensubdivfarprimvarRefiner.h include opensubdivfarpatchTableFactory.h include opensubdivfarpatchMap.h include opensubdivfarptexIndices.h include cassert include cstdio include cstring include fstream include sstream using namespace OpenSubdiv  using Far  Index    Global utilities in this namespace are not relevant to the tutorial.  They simply serve to construct some default geometry to be processed  in the form of a TopologyRefiner and vector of vertex positions.  namespace    Simple structs for x,y,z position and a 3-tuple for the set  of vertices of a triangle  struct Pos  Pos    Pos  float x , float y , float z   p  0   x , p  1   y , p  2   z   Pos operator   Pos const  op  const  return Pos  p  0   op . p  0 , p  1   op . p  1 , p  2   op . p  2    Clear and AddWithWeight required for interpolation void Clear  void   0   p  0   p  1   p  2   0.0f   void AddWithWeight  Pos const  src , float weight   p  0   weight  src . p  0  p  1   weight  src . p  1  p  2   weight  src . p  2   float p  3   typedef std  vector  Pos  PosVector  struct Tri  Tri    Tri  int a , int b , int c   v  0   a , v  1   b , v  2   c   int v  3   typedef std  vector  Tri  TriVector    Functions to populate the topology and geometry arrays with simple  shapes that we can multiply to increase complexity  void appendDefaultPrimitive  Pos const  origin , std  vector  int   vertsPerFace , std  vector  Index   faceVerts , std  vector  Pos   positionsPerVert    Local topology and position of a cube centered at origin static float const cubePositions  8  3     -0.5f , -0.5f , -0.5f ,  -0.5f , 0.5f , -0.5f ,  -0.5f , 0.5f , 0.5f ,  -0.5f , -0.5f , 0.5f ,  0.5f , -0.5f , -0.5f ,  0.5f , 0.5f , -0.5f ,  0.5f , 0.5f , 0.5f ,  0.5f , -0.5f , 0.5f   static int const cubeFaceVerts  6  4     0 , 3 , 2 , 1 ,  4 , 5 , 6 , 7 ,  0 , 4 , 7 , 3 ,  1 , 2 , 6 , 5 ,  0 , 1 , 5 , 4 ,  3 , 7 , 6 , 2    Identify the next vertex before appending vertex positions int baseVertex   int  positionsPerVert . size  for  int i  0  i  8   i   float const  p  cubePositions  i  positionsPerVert . push_back  origin  Pos  p  0 , p  1 , p  2    Append number of verts-per-face and face-vertices for each face for  int i  0  i  6   i   vertsPerFace . push_back  4  for  int j  0  j  4   j   faceVerts . push_back  baseVertex  cubeFaceVerts  i  j     void createDefaultGeometry  int multiplier , std  vector  int   vertsPerFace , std  vector  Index   faceVerts , std  vector  Pos   positionsPerVert    Default primitive is currently a cube int const vertsPerPrimitive  8  int const facesPerPrimitive  6  int const faceVertsPerPrimitive  24  int nPrimitives  multiplier  multiplier  multiplier  positionsPerVert . reserve  nPrimitives  vertsPerPrimitive  vertsPerFace . reserve  nPrimitives  facesPerPrimitive  faceVerts . reserve  nPrimitives  faceVertsPerPrimitive  for  int x  0  x  multiplier   x   for  int y  0  y  multiplier   y   for  int z  0  z  multiplier   z   appendDefaultPrimitive  Pos  float  x  2.0f ,  float  y  2.0f ,  float  z  2.0f , vertsPerFace , faceVerts , positionsPerVert        Create a TopologyRefiner from default geometry created above  Far  TopologyRefiner  createTopologyRefinerDefault  int multiplier , PosVector  posVector   std  vector  int  topVertsPerFace  std  vector  Index  topFaceVerts  createDefaultGeometry  multiplier , topVertsPerFace , topFaceVerts , posVector  typedef Far  TopologyDescriptor Descriptor  Sdc  SchemeType type  OpenSubdiv  Sdc  SCHEME_CATMARK  Sdc  Options options  options . SetVtxBoundaryInterpolation  Sdc  Options  VTX_BOUNDARY_EDGE_AND_CORNER  Descriptor desc  desc . numVertices   int  posVector . size  desc . numFaces   int  topVertsPerFace . size  desc . numVertsPerFace   topVertsPerFace  0  desc . vertIndicesPerFace   topFaceVerts  0   Instantiate a FarTopologyRefiner from the descriptor. Far  TopologyRefiner  refiner  Far  TopologyRefinerFactory  Descriptor  Create  desc , Far  TopologyRefinerFactory  Descriptor  Options  type , options  if  refiner  0   exit  EXIT_FAILURE   bool dumpDefaultGeometryToObj  false  if  dumpDefaultGeometryToObj   int nVerts   int  posVector . size  for  int i  0  i  nVerts   i   float const  p  posVector  i . p  printf  v f f f n  , p  0 , p  1 , p  2   int const  fVerts   topFaceVerts  0  int nFaces   int  topVertsPerFace . size  for  int i  0  i  nFaces   i   printf  f  for  int j  0  j  topVertsPerFace  i   j   printf   d , 1   fVerts    printf   n    exit  EXIT_SUCCESS   return refiner     Create a TopologyRefiner from a specified Obj file  geometry created internally  Far  TopologyRefiner  createTopologyRefinerFromObj  std  string const  objFileName , Sdc  SchemeType schemeType , PosVector  posVector   const char  filename  objFileName . c_str  const Shape  shape  0  std  ifstream ifs  filename  if  ifs   std  stringstream ss  ss  ifs . rdbuf  ifs . close  std  string shapeString  ss . str  shape  Shape  parseObj  shapeString . c_str , ConvertSdcTypeToShapeScheme  schemeType , false  if  shape  0   fprintf  stderr , Error Cannot create Shape  from .obj file s n  , filename  return 0    else  fprintf  stderr , Error Cannot open .obj file s n  , filename  return 0   Sdc  SchemeType sdcType  GetSdcType   shape  Sdc  Options sdcOptions  GetSdcOptions   shape  Far  TopologyRefiner  refiner  Far  TopologyRefinerFactory  Shape  Create   shape , Far  TopologyRefinerFactory  Shape  Options  sdcType , sdcOptions  if  refiner  0   fprintf  stderr , Error Unable to construct TopologyRefiner  from .obj file s n  , filename  return 0   int numVertices  refiner - GetNumVerticesTotal  posVector . resize  numVertices  std  memcpy   posVector  0 . p  0 ,  shape - verts  0 , numVertices  3  sizeof  float  delete shape  return refiner     end namespace   The PatchGroup bundles objects used to create and evaluate a sparse set  of patches. Its construction creates a PatchTable and all other objects  necessary to evaluate patches associated with the specified subset of  faces provided. A simple method to tessellate a specified face is  provided.   Note that, since the data buffers for the base level and refined levels  are separate we want to avoid copying primvar data for the base level  of a potentially large mesh, that patch evaluation needs to account  for the separation when combining control points.  struct PatchGroup  PatchGroup  Far  PatchTableFactory  Options patchOptions , Far  TopologyRefiner const  baseRefinerArg , Far  PtexIndices const  basePtexIndicesArg , std  vector  Pos  const  basePositionsArg , std  vector  Index  const  baseFacesArg   PatchGroup  void TessellateBaseFace  int face , PosVector  tessPoints , TriVector  tessTris  const   Const reference members Far  TopologyRefiner const  baseRefiner  Far  PtexIndices const  basePtexIndices  std  vector  Pos  const  basePositions  std  vector  Index  const  baseFaces   Members constructed to evaluate patches Far  PatchTable  patchTable  Far  PatchMap  patchMap  int patchFaceSize  std  vector  Pos  localPositions   PatchGroup  PatchGroup  Far  PatchTableFactory  Options patchOptions , Far  TopologyRefiner const  baseRefinerArg , Far  PtexIndices const  basePtexIndicesArg , std  vector  Pos  const  basePositionsArg , std  vector  Index  const  baseFacesArg   baseRefiner  baseRefinerArg , basePtexIndices  basePtexIndicesArg , basePositions  basePositionsArg , baseFaces  baseFacesArg    Create a local refiner sharing the base level, apply adaptive  refinement to the given subset of base faces, and construct a patch  table and its associated map for the same set of faces  Far  ConstIndexArray groupFaces   baseFaces  0 ,  int  baseFaces . size  Far  TopologyRefiner  localRefiner  Far  TopologyRefinerFactory  Far  TopologyDescriptor  Create  baseRefiner  localRefiner - RefineAdaptive  patchOptions . GetRefineAdaptiveOptions , groupFaces  patchTable  Far  PatchTableFactory  Create   localRefiner , patchOptions , groupFaces  patchMap  new Far  PatchMap   patchTable  patchFaceSize  Sdc  SchemeTypeTraits  GetRegularFaceSize  baseRefiner . GetSchemeType   Compute the number of refined and local points needed to evaluate the  patches, allocate and interpolate. This varies from tutorial_5_1 in  that the primvar buffer for the base vertices is separate from the  refined vertices and local patch points which must also be accounted  for when evaluating the patches.  int nBaseVertices  localRefiner - GetLevel  0 . GetNumVertices  int nRefinedVertices  localRefiner - GetNumVerticesTotal  - nBaseVertices  int nLocalPoints  patchTable - GetNumLocalPoints  localPositions . resize  nRefinedVertices  nLocalPoints  if  nRefinedVertices   Far  PrimvarRefiner primvarRefiner   localRefiner  Pos const  src   basePositions  0  Pos  dst   localPositions  0  for  int level  1  level  localRefiner - GetNumLevels   level   primvarRefiner . Interpolate  level , src , dst  src  dst  dst  localRefiner - GetLevel  level . GetNumVertices    if  nLocalPoints   patchTable - GetLocalPointStencilTable  - UpdateValues   basePositions  0 , nBaseVertices ,  localPositions  0 ,  localPositions  nRefinedVertices   delete localRefiner   PatchGroup  PatchGroup   delete patchTable  delete patchMap   void PatchGroup  TessellateBaseFace  int face , PosVector  tessPoints , TriVector  tessTris  const   Tesselate the face with points at the midpoint of the face and at  each corner, and triangles connecting the midpoint to each edge.  Irregular faces require an aribrary number of corners points, but  all are at the origin of the child face of the irregular base face  float const quadPoints  5  2     0.5f , 0.5f ,  0.0f , 0.0f ,  1.0f , 0.0f ,  1.0f , 1.0f ,  0.0f , 1.0f   float const triPoints  4  2     0.5f , 0.5f ,  0.0f , 0.0f ,  1.0f , 0.0f ,  0.0f , 1.0f   float const irregPoints  4  2     1.0f , 1.0f ,  0.0f , 0.0f    Determine the topology of the given base face and the resulting  tessellation points and faces to generate  int baseFace  baseFaces  face  int faceSize  baseRefiner . GetLevel  0 . GetFaceVertices  baseFace . size  bool faceIsIrregular   faceSize  patchFaceSize  int nTessPoints  faceSize  1  int nTessFaces  faceSize  tessPoints . resize  nTessPoints  tessTris . resize  nTessFaces   Compute the mid and corner points -- remember that for an irregular  face, we must reference the individual ptex faces for each corner  int ptexFace  basePtexIndices . GetFaceId  baseFace  int numBaseVerts   int  basePositions . size  for  int i  0  i  nTessPoints   i    Choose the s,t coordinate from the fixed tessellation float const  st  faceIsIrregular  irregPoints  i  0    faceSize  4   quadPoints  i   triPoints  i   Locate the patch corresponding to the face ptex idx and s,t  and evaluate int patchFace  ptexFace  if  faceIsIrregular   i  0   patchFace  i - 1   Far  PatchTable  PatchHandle const  handle  patchMap - FindPatch  patchFace , st  0 , st  1  assert  handle  float pWeights  20  patchTable - EvaluateBasis   handle , st  0 , st  1 , pWeights   Identify the patch cvs and combine with the evaluated weights --  remember to distinguish cvs in the base level Far  ConstIndexArray cvIndices  patchTable - GetPatchVertices   handle  Pos  pos  tessPoints  i  pos . Clear  for  int cv  0  cv  cvIndices . size   cv   int cvIndex  cvIndices  cv  if  cvIndex  numBaseVerts   pos . AddWithWeight  basePositions  cvIndex , pWeights  cv   else  pos . AddWithWeight  localPositions  cvIndex - numBaseVerts , pWeights  cv      Assign triangles connecting the midpoint of the base face to the  points computed at the ends of each of its edges  for  int i  0  i  nTessFaces   i   tessTris  i   Tri  0 , 1  i , 1   i  1   faceSize      Command line arguments parsed to provide run-time options  class Args  public  std  string inputObjFile  Sdc  SchemeType schemeType  int geoMultiplier  int maxPatchDepth  int numPatchGroups  bool noTessFlag  bool noOutputFlag  public  Args  int argc , char  argv   inputObjFile , schemeType  Sdc  SCHEME_CATMARK , geoMultiplier  10 , maxPatchDepth  3 , numPatchGroups  10 , noTessFlag  false , noOutputFlag  false    Parse and assign standard arguments and Obj files ArgOptions args  args . Parse  argc , argv  maxPatchDepth  args . GetLevel  schemeType  ConvertShapeSchemeToSdcType  args . GetDefaultScheme  const std  vector  const char  objFiles  args . GetObjFiles  if   objFiles . empty   for  size_t i  1  i  objFiles . size   i   fprintf  stderr , Warning .obj file s ignored n  , objFiles  i   inputObjFile  std  string  objFiles  0    Parse remaining arguments specific to this example const std  vector  const char   rargs  args . GetRemainingArgs  for  size_t i  0  i  rargs . size   i   if   strcmp  rargs  i , -groups   if   i  rargs . size  numPatchGroups  atoi  rargs  i   else if   strcmp  rargs  i , -mult   if   i  rargs . size  geoMultiplier  atoi  rargs  i   else if   strcmp  rargs  i , -notess   noTessFlag  true   else if   strcmp  rargs  i , -nooutput   noOutputFlag  true   else  fprintf  stderr , Warning Argument s ignored n  , rargs  i     private  Args       Load command line arguments and geometry, then divide the mesh into groups  of faces from which to create and tessellate patches  int main  int argc , char  argv   Args args  argc , argv    Create or load the base geometry command line arguments allow a  .obj file to be specified. In addition to the TopologyRefiner  and set of positions for the base vertices, a set of PtexIndices is  also required to evaluate patches, so build it here once for use  elsewhere  std  vector  Pos  basePositions  Far  TopologyRefiner  baseRefinerPtr  args . inputObjFile . empty   createTopologyRefinerDefault  args . geoMultiplier , basePositions   createTopologyRefinerFromObj  args . inputObjFile , args . schemeType , basePositions  assert  baseRefinerPtr  Far  TopologyRefiner  baseRefiner   baseRefinerPtr  Far  PtexIndices basePtexIndices  baseRefiner    Determine the sizes of the patch groups specified -- there will be  two sizes that differ by one to account for unequal division  int numBaseFaces  baseRefiner . GetNumFacesTotal  int numPatchGroups  args . numPatchGroups  if  numPatchGroups  numBaseFaces   numPatchGroups  numBaseFaces   else if  numPatchGroups  1   numPatchGroups  1   int lesserGroupSize  numBaseFaces  numPatchGroups  int numLargerGroups  numBaseFaces -  numPatchGroups  lesserGroupSize    Define the options used to construct the patches for each group.  Unless suppressed, a tessellation in Obj format will also be printed  to standard output, so keep track of the vertex indices.  Far  PatchTableFactory  Options patchOptions  args . maxPatchDepth  patchOptions . generateVaryingTables  false  patchOptions . shareEndCapPatchPoints  false  patchOptions . endCapType  Far  PatchTableFactory  Options  ENDCAP_GREGORY_BASIS  int objVertCount  0  PosVector tessPoints  TriVector tessFaces  for  int i  0  i  numPatchGroups   i     Initialize a vector with a group of base faces from which to  create and evaluate patches  Index minFace  i  lesserGroupSize  std  min  i , numLargerGroups  Index maxFace  minFace  lesserGroupSize   i  numLargerGroups  std  vector  Far  Index  baseFaces  maxFace - minFace  for  int face  minFace  face  maxFace   face   baseFaces  face - minFace   face     Declare a PatchGroup and tessellate its base faces -- generating  vertices and faces in Obj format to standard output  PatchGroup patchGroup  patchOptions , baseRefiner , basePtexIndices , basePositions , baseFaces  if  args . noTessFlag  continue  if   args . noOutputFlag   printf  g patchGroup_d n  , i   for  int j  0  j   int  baseFaces . size   j   patchGroup . TessellateBaseFace  j , tessPoints , tessFaces  if   args . noOutputFlag   int nVerts   int  tessPoints . size  for  int k  0  k  nVerts   k   float const  p  tessPoints  k . p  printf  v f f f n  , p  0 , p  1 , p  2   int nTris   int  tessFaces . size  int vBase  1  objVertCount  for  int k  0  k  nTris   k   int const  v  tessFaces  k . v  printf  f d d d n  , vBase  v  0 , vBase  v  1 , vBase  v  2   objVertCount  nVerts     delete baseRefinerPtr  return EXIT_SUCCESS   Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"tags\": \"\",\n+        \"loc\": \"far_tutorial_5_2.html\"\n+    }, {\n+        \"title\": \"glPaintTest\",\n+        \"text\": \"glPaintTest glPaintTest 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE SYNOPSIS DESCRIPTION OPTIONS KEYBOARD CONTROLS SEE ALSO SYNOPSIS glPaintTest  -f   -yup   -l adaptive refinement level  objfiles  -catmark   -loop  DESCRIPTION glPaintTest is a small stand-alone application showing the potential of using GPU limit tessellation for painting and sculpting applications. OPTIONS See the description of the common comand line options for the subset of common options supported here. KEYBOARD CONTROLS c  use texture as color d  use texture as displacement SEE ALSO Other examples  glViewer , glFVarViewer , glEvalLimit , glStencilViewer , glPtexViewer , glPaintTest , glShareTopology , dxViewer , dxPtexViewer , Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"tags\": \"\",\n+        \"loc\": \"glpainttest.html\"\n+    }, {\n+        \"title\": \"mtlViewer\",\n+        \"text\": \"mtlViewer mtlViewer 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE SYNOPSIS DESCRIPTION KEYBOARD CONTROLS SEE ALSO SYNOPSIS open mtlViewer.app --args  -yup   -u   -a   -l refinement level  objfiles  -catmark   -loop   -bilinear  DESCRIPTION mtlViewer is a stand-alone application that showcases the application of uniform and feature adaptive subdivision schemes to a collection of geometric shapes. Multiple controls are available to experiment with the algorithms. mtlViewer running on macOS mtlViewer running on iOS KEYBOARD CONTROLS q  quit f  fit frame -  increase  decrease tessellation rate SEE ALSO Other examples  glViewer , glFVarViewer , glEvalLimit , glStencilViewer , glPtexViewer , glPaintTest , glShareTopology , dxViewer , dxPtexViewer , Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"tags\": \"\",\n+        \"loc\": \"mtlviewer.html\"\n+    }, {\n+        \"title\": \"far_tutorial_2_1.cpp\",\n+        \"text\": \"far_tutorial_2_1.cpp far_tutorial_2_1.cpp 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE httpsgithub.comPixarAnimationStudiosOpenSubdivblobreleasetutorialsfartutorial_2_1far_tutorial_2_1.cpp ------------------------------------------------------------------------------  Tutorial description   Building on tutorial 0, this example shows how to instantiate a simple mesh,  refine it uniformly and then interpolate additional sets of primvar data.  include opensubdivfartopologyDescriptor.h include opensubdivfarprimvarRefiner.h include cstdio ------------------------------------------------------------------------------  Vertex container implementation.   We are adding a per-vertex color attribute to our primvar data. While they  are separate properties and exist in separate buffers as when read from an  Alembic file they are both of the form float3 and so we can use the same  underlying type.   While color and position may be the same, well make the color a varying  primvar, e.g. it is constrained to being linearly interpolated between  vertices, rather than smoothly like position and other vertex data.  struct Point3   Minimal required interface ---------------------- Point3    void Clear  void   0   _point  0   _point  1   _point  2   0.0f   void AddWithWeight  Point3 const  src , float weight   _point  0   weight  src . _point  0  _point  1   weight  src . _point  1  _point  2   weight  src . _point  2    Public interface ------------------------------------ void SetPoint  float x , float y , float z   _point  0   x  _point  1   y  _point  2   z   const float  GetPoint  const  return _point   private  float _point  3   typedef Point3 VertexPosition  typedef Point3 VertexColor  ------------------------------------------------------------------------------  Cube geometry from catmark_cube.h static float g_verts  8  3    -0.5f , -0.5f , 0.5f ,  0.5f , -0.5f , 0.5f ,  -0.5f , 0.5f , 0.5f ,  0.5f , 0.5f , 0.5f ,  -0.5f , 0.5f , -0.5f ,  0.5f , 0.5f , -0.5f ,  -0.5f , -0.5f , -0.5f ,  0.5f , -0.5f , -0.5f   Per-vertex RGB color data static float g_colors  8  3    1.0f , 0.0f , 0.5f ,  0.0f , 1.0f , 0.0f ,  0.0f , 0.0f , 1.0f ,  1.0f , 1.0f , 1.0f ,  1.0f , 1.0f , 0.0f ,  0.0f , 1.0f , 1.0f ,  1.0f , 0.0f , 1.0f ,  0.0f , 0.0f , 0.0f  static int g_nverts  8 , g_nfaces  6  static int g_vertsperface  6    4 , 4 , 4 , 4 , 4 , 4  static int g_vertIndices  24    0 , 1 , 3 , 2 , 2 , 3 , 5 , 4 , 4 , 5 , 7 , 6 , 6 , 7 , 1 , 0 , 1 , 7 , 5 , 3 , 6 , 0 , 2 , 4  using namespace OpenSubdiv  static Far  TopologyRefiner  createFarTopologyRefiner  ------------------------------------------------------------------------------ int main  int , char    int maxlevel  5  Far  TopologyRefiner  refiner  createFarTopologyRefiner   Uniformly refine the topology up to maxlevel refiner - RefineUniform  Far  TopologyRefiner  UniformOptions  maxlevel   Allocate buffers for vertex primvar data.   We assume we received the coarse data for the mesh in separate buffers  from some other source, e.g. an Alembic file. Meanwhile, we want buffers  for the lastfinest subdivision level to persist. We have no interest  in the intermediate levels.   Determine the sizes for our needs int nCoarseVerts  g_nverts  int nFineVerts  refiner - GetLevel  maxlevel . GetNumVertices  int nTotalVerts  refiner - GetNumVerticesTotal  int nTempVerts  nTotalVerts - nCoarseVerts - nFineVerts   Allocate and initialize the primvar data for the original coarse vertices std  vector  VertexPosition  coarsePosBuffer  nCoarseVerts  std  vector  VertexColor  coarseClrBuffer  nCoarseVerts  for  int i  0  i  nCoarseVerts   i   coarsePosBuffer  i . SetPoint  g_verts  i  0 , g_verts  i  1 , g_verts  i  2  coarseClrBuffer  i . SetPoint  g_colors  i  0 , g_colors  i  1 , g_colors  i  2    Allocate intermediate and final storage to be populated std  vector  VertexPosition  tempPosBuffer  nTempVerts  std  vector  VertexPosition  finePosBuffer  nFineVerts  std  vector  VertexColor  tempClrBuffer  nTempVerts  std  vector  VertexColor  fineClrBuffer  nFineVerts   Interpolate all primvar data -- separate buffers can be populated on  separate threads if desired VertexPosition  srcPos   coarsePosBuffer  0  VertexPosition  dstPos   tempPosBuffer  0  VertexColor  srcClr   coarseClrBuffer  0  VertexColor  dstClr   tempClrBuffer  0  Far  PrimvarRefiner primvarRefiner   refiner  for  int level  1  level  maxlevel   level   primvarRefiner . Interpolate  level , srcPos , dstPos  primvarRefiner . InterpolateVarying  level , srcClr , dstClr  srcPos  dstPos , dstPos  refiner - GetLevel  level . GetNumVertices  srcClr  dstClr , dstClr  refiner - GetLevel  level . GetNumVertices    Interpolate the last level into the separate buffers for our final data primvarRefiner . Interpolate  maxlevel , srcPos , finePosBuffer  primvarRefiner . InterpolateVarying  maxlevel , srcClr , fineClrBuffer    Visualization with Maya  print a MEL script that generates colored  particles at the location of the refined vertices dont forget to  turn shading on in the viewport to see the colors int nverts  nFineVerts   Output particle positions printf  particle   for  int vert  0  vert  nverts   vert   float const  pos  finePosBuffer  vert . GetPoint  printf  -p f f f n  , pos  0 , pos  1 , pos  2   printf   n    Set particle point size 20 -- very large printf  addAttr -is true -ln  pointSize  -at long -dv 20 particleShape1 n    Add per-particle color attribute rgbPP printf  addAttr -ln  rgbPP  -dt vectorArray particleShape1 n    Set per-particle color values from our primvar data printf  setAttr  particleShape1.rgbPP  -type  vectorArray  d  , nverts  for  int vert  0  vert  nverts   vert   float const  color  fineClrBuffer  vert . GetPoint  printf  f f f n  , color  0 , color  1 , color  2   printf   n    delete refiner  return EXIT_SUCCESS   ------------------------------------------------------------------------------  Creates FarTopologyRefiner from raw geometry   see tutorial_1_1 for more details  static Far  TopologyRefiner  createFarTopologyRefiner    Populate a topology descriptor with our raw data typedef Far  TopologyDescriptor Descriptor  Sdc  SchemeType type  OpenSubdiv  Sdc  SCHEME_CATMARK  Sdc  Options options  options . SetVtxBoundaryInterpolation  Sdc  Options  VTX_BOUNDARY_EDGE_ONLY  Descriptor desc  desc . numVertices  g_nverts  desc . numFaces  g_nfaces  desc . numVertsPerFace  g_vertsperface  desc . vertIndicesPerFace  g_vertIndices   Instantiate a FarTopologyRefiner from the descriptor Far  TopologyRefiner  refiner  Far  TopologyRefinerFactory  Descriptor  Create  desc , Far  TopologyRefinerFactory  Descriptor  Options  type , options  return refiner   ------------------------------------------------------------------------------ Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"tags\": \"\",\n+        \"loc\": \"far_tutorial_2_1.html\"\n+    }, {\n         \"title\": \"Overview of Release 3.3\",\n         \"text\": \"Overview of Release 3.3 Overview of Release 3.3 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE New Features Metal Compute and Tessellation API Additions OsdMTLContext OsdMTLComputeEvaluator OsdMTLStencilTable OsdMTLMeshInterface OsdMTLPatchTable OsdMTLLegacyGregoryPatchTable OsdPatchShaderSource OsdCPUMTLVertexBuffer Other Changes Improvements New Features Metal Compute and Tessellation Added support for drawing and evaluation using Apples Metal API for high performance and low-overhead GPU access. This includes the full set of Osd interfaces needed to draw using Metal graphics rendering including tessellation shaders and evaluate stencils and patch tables using Metal compute processing. Also includes an example mtlViewer that can be built to run on either macOS or iOS. Metal Graphics Rendering with Tessellation Metal Patch Evaluation using Compute Processing API Additions See associated Doxygen for full details. OsdMTLContext device and commandQueue member data OsdMTLComputeEvaluator Create EvalStencils EvalPatches EvalPatchesVarying EvalPatchesFaceVarying Compile Synchronize OsdMTLStencilTable Create GetSizesBuffer GetIndicesBuffer GetDuWeightsBuffer GetDvWeightsBuffer GetDuuWeightsBuffer GetDuvWeightsBuffer GetDvvWeightsBuffer GetNumStencils OsdMTLMeshInterface GetNumVertices GetMaxValence UpdateVertexBuffer UpdateVaryingBuffer Refine Synchronize GetPatchTable GetFarPatchTable BindVertexBuffer BindVaryingBuffer OsdMTLPatchTable Create GetPatchArrays GetPatchIndexBuffer GetPatchParamBuffer GetVaryingPatchArrays GetVaryingPatchIndexBuffer GetNumFVarChannels GetFVarPatchArrays GetFVarPatchIndexBuffer GetFVarPatchParamBuffer OsdMTLLegacyGregoryPatchTable UpdateVertexBuffer GetVertexBuffer GetVertexValenceBuffer GetQuadOffsetsBuffer OsdPatchShaderSource GetCommonShaderSource GetPatchBasisShaderSource GetVertexShaderSource GetHullShaderSource GetDomainShaderSource OsdCPUMTLVertexBuffer Create UpdateData GetNumElements GetNumVertices BindCpuBuffer BindMTLBuffer BindVBO Other Changes Improvements Fixed several instances of local variable shadowing that could cause build warnings Updated continuous-integration build scripts and added testing on macOS Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n         \"loc\": \"release_33.html\"\n     }, {\n-        \"title\": \"osd_tutorial_0.cpp\",\n-        \"text\": \"osd_tutorial_0.cpp osd_tutorial_0.cpp 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE httpsgithub.comPixarAnimationStudiosOpenSubdivblobreleasetutorialsosdtutorial_0osd_tutorial_0.cpp ------------------------------------------------------------------------------  Tutorial description   This tutorial demonstrates the manipulation of Osd Evaluator and  BufferDescriptor.  include opensubdivfartopologyDescriptor.h include opensubdivfarstencilTableFactory.h include opensubdivosdcpuEvaluator.h include opensubdivosdcpuVertexBuffer.h include cstdio include cstring ------------------------------------------------------------------------------  Cube geometry from catmark_cube.h static float g_verts  24    -0.5f , -0.5f , 0.5f , 0.5f , -0.5f , 0.5f , -0.5f , 0.5f , 0.5f , 0.5f , 0.5f , 0.5f , -0.5f , 0.5f , -0.5f , 0.5f , 0.5f , -0.5f , -0.5f , -0.5f , -0.5f , 0.5f , -0.5f , -0.5f  static int g_nverts  8 , g_nfaces  6  static int g_vertsperface  6    4 , 4 , 4 , 4 , 4 , 4  static int g_vertIndices  24    0 , 1 , 3 , 2 , 2 , 3 , 5 , 4 , 4 , 5 , 7 , 6 , 6 , 7 , 1 , 0 , 1 , 7 , 5 , 3 , 6 , 0 , 2 , 4  using namespace OpenSubdiv  static Far  TopologyRefiner const  createTopologyRefiner  int maxlevel  ------------------------------------------------------------------------------ int main  int , char    int maxlevel  2 , nCoarseVerts  0 , nRefinedVerts  0    Setup phase  Far  StencilTable const  stencilTable  NULL    Setup FarStencilTable Far  TopologyRefiner const  refiner  createTopologyRefiner  maxlevel   Setup a factory to create FarStencilTable for more details see  Far tutorials Far  StencilTableFactory  Options options  options . generateOffsets  true  options . generateIntermediateLevels  false  stencilTable  Far  StencilTableFactory  Create   refiner , options  nCoarseVerts  refiner - GetLevel  0 . GetNumVertices  nRefinedVerts  stencilTable - GetNumStencils   We are done with Far cleanup table delete refiner    Setup a buffer for vertex primvar data Osd  CpuVertexBuffer  vbuffer  Osd  CpuVertexBuffer  Create  3 , nCoarseVerts  nRefinedVerts    Execution phase every frame    Pack the control vertex data at the start of the vertex buffer  and update every time control data changes vbuffer - UpdateData  g_verts , 0 , nCoarseVerts  Osd  BufferDescriptor srcDesc  0 , 3 , 3  Osd  BufferDescriptor dstDesc  nCoarseVerts  3 , 3 , 3   Launch the computation Osd  CpuEvaluator  EvalStencils  vbuffer , srcDesc , vbuffer , dstDesc , stencilTable     Visualization with Maya  print a MEL script that generates particles  at the location of the refined vertices printf  particle   float const  refinedVerts  vbuffer - BindCpuBuffer   3  nCoarseVerts  for  int i  0  i  nRefinedVerts   i   float const  vert  refinedVerts  3  i  printf  -p f f f n  , vert  0 , vert  1 , vert  2   printf  -c 1 n    delete stencilTable  delete vbuffer   ------------------------------------------------------------------------------ static Far  TopologyRefiner const  createTopologyRefiner  int maxlevel    Populate a topology descriptor with our raw data typedef Far  TopologyDescriptor Descriptor  Sdc  SchemeType type  OpenSubdiv  Sdc  SCHEME_CATMARK  Sdc  Options options  options . SetVtxBoundaryInterpolation  Sdc  Options  VTX_BOUNDARY_EDGE_ONLY  Descriptor desc  desc . numVertices  g_nverts  desc . numFaces  g_nfaces  desc . numVertsPerFace  g_vertsperface  desc . vertIndicesPerFace  g_vertIndices   Instantiate a FarTopologyRefiner from the descriptor Far  TopologyRefiner  refiner  Far  TopologyRefinerFactory  Descriptor  Create  desc , Far  TopologyRefinerFactory  Descriptor  Options  type , options   Uniformly refine the topology up to maxlevel refiner - RefineUniform  Far  TopologyRefiner  UniformOptions  maxlevel  return refiner   ------------------------------------------------------------------------------ Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"title\": \"glPtexViewer\",\n+        \"text\": \"glPtexViewer glPtexViewer 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE SYNOPSIS DESCRIPTION OPTIONS KEYBOARD CONTROLS SEE ALSO SYNOPSIS glPtexViewer  -f   -yup   -u   -a   -l isolation level   -c animation loops   -e environment map   -d HDR diffuse map   -s HDR specular map   --disp displacement scale   --bump bump scale  ptex color file ptex displacement file ptex occlusion file ptex specular file objfiles DESCRIPTION glPtexViewer is a stand-alone application that showcases advanced HDR shading with color, displacement, occlusion and specular ptex maps. Multiple controls are available to experiment with the algorithms. OPTIONS See the description of the common comand line options for the subset of common options supported here. -e environment map A low dynamic range spherical environment map used as a background. Ideally, a color-normalized version of the HDR light probe. -d HDR diffuse map An HDR file containing a diffuse environment map typically they are low resolution blurry hemispherical convolutions of the environment light probe. -s environment map An HDR file containing a specular environment map. --disp displacement scale A scalar multiplier for the shader displacement values. --bump displacement scale A scalar multiplier for the shader bump values. ptex color file A ptex file containing RGB channels read as material albedo color. ptex displacement file A single-channel ptex file preferably float precision containing the displacement values. ptex occlusion file A single-channel ptex file preferably 8 bits precision containing a pre-computed ambient occlusion signal. ptex specular file A single-channel ptex file preferably 8 bits precision applied to modulate the specular reflectance of the material KEYBOARD CONTROLS q  quit esc  hide GUI x  save screenshot f  fit frame -  increase  decrease tessellation rate r  reload and re - compile the shader files e  draw normals SEE ALSO Other examples  glViewer , glFVarViewer , glEvalLimit , glStencilViewer , glPtexViewer , glPaintTest , glShareTopology , dxViewer , dxPtexViewer , Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n-        \"loc\": \"osd_tutorial_0.html\"\n+        \"loc\": \"glptexviewer.html\"\n     }, {\n-        \"title\": \"Overview of Release 3.4\",\n-        \"text\": \"Overview of Release 3.4 Overview of Release 3.4 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE New Features Triangular Patches for Loop Subdivision Major Improvements to Introductory Documentation Sparse Patch Tables Support for Double Precision in Far API Additions Far extensions for triangular patches Construction and refinement of topology Construction and interface of FarPatchTable Construction and use of Far stencil tables Far class templates for double precision Far member functions converted to templates for double precision OsdMeshBits OsdPatchArray Osd extensions for patch evaluation common to all shaders Osd extensions for patch tessellation common to all shaders Other Changes Improvements Bug Fixes New Features Triangular Patches for Loop Subdivision Support for the drawing and evaluation of Loop subdivision meshes with triangular patches was added. This includes the full set of Far and Osd interfaces for both evaluation and drawing. The feature set supported for Loop subdivision now matches that of Catmark, including creases, face-varying patches, non-manifold topology, etc. The long standing requirement that Loop meshes be purely triangular remains, as Loop subdivision is not defined for non-triangular faces. And as is the case with the use of the Catmark scheme, application of Loop subdivision to dense, poorly modeled meshes may lead to unexpectedly poor performance andor surface quality. The patch representation used for Loop subdivision is intended to exactly match the underlying limit surface where regular, and so uses quartic triangular Box-splines. This is in contrast to approaches that use simpler patches to approximate the Loop limit surface everywhere. As with Catmark, Gregory patches are used to approximate irregular areas. Though other choices are available that compromise surface quality in favor of improved performance, they may be less effective with Loop than they are with Catmark. Major Improvements to Introductory Documentation A significant rewrite of the Subdivision Surfaces page is included in this release. The new documentation emphasizes the piecewise parametric surface nature of subdivision surfaces and the implications of supporting arbitary topology . As a true surface primitive, the distinction between the control points and the limit surface and the corresponding operations of subdivision and tessellation that are applied to them is made clear. Sparse Patch Tables Interfaces in Far for the construction of PatchTables and the required adaptive refinement have been extended to apply to an arbitrary subset of faces. This allows patches for either large meshes or meshes that may otherwise benefit from some kind of partioning e.g. areas of static and dynamic topology to be managed in an arbitrary number of groups. In the extreme, a PatchTable forming the tree of patches for a single base face can be constructed. Client data buffers for the base mesh do not need to be partitioned and base mesh topology can be shared by multiple instances of FarTopologyRefiner used to create corresponding instances of FarPatchTables. See the new Far tutorial 5.2 for a simple example. Support for Double Precision in Far Classes and interfaces in Far have been adapted to allow support for double precision via templates parameterized for float or double. Class templates for major classes such as FarStencilTable have been introduced and the original classes preserved for compatibility. Other classes such as FarPatchTable have had methods overloaded or replaced with template functions to support both single and double precision. Internally, all use of floating point constants and math library functions has been adapted to maximize accuracy appropriate to the precision of the template instance. Interfaces in Osd have not been extended. The extensions in Far provide the basis for extensions in Osd, but demand is limited. For those benefiting from such Osd extensions, contributions are welcomed. See the revised Far tutorial 5.1 that constructs a FarPatchTable for a simple example. API Additions See associated Doxygen for full details. Far extensions for triangular patches enum PatchDescriptorTypeGREGORY_TRIANGLE PatchParamNormalizeTriangle PatchParamUnnormalizeTriangle PatchParamIsTriangleRotated Construction and refinement of topology overloaded TopologyRefinerFactoryCreate extensions to TopologyRefinerRefineAdaptive Construction and interface of FarPatchTable overloaded PatchTableFactoryCreate PatchTableFactoryGetRefineAdaptiveOptions member PatchTableFactoryOptionsincludeBaseLevelIndices member PatchTableFactoryOptionsincludeFVarBaseLevelIndices member PatchTableFactoryOptionsgenerateVaryingTables member PatchTableFactoryOptionsgenerateVaryingLocalPoints member PatchTableFactoryOptionssetPatchPrecisionDouble member PatchTableFactoryOptionssetFVarPatchPrecisionDouble PatchTableGetFVarPatchDescriptorRegular PatchTableGetFVarPatchDescriptorIrregular PatchTableGetFVarValueStride Construction and use of Far stencil tables overloaded StencilTableUpdateValues enum LimitStencilTableFactoryMode member LimitStencilTableFactoryOptionsinterpolationMode member LimitStencilTableFactoryOptionsfvarChannel Far class templates for double precision class StencilReal class StencilTableReal class StencilTableFactoryReal class LimitStencilReal class LimitStencilTableReal class LimitStencilTableFactoryReal class PrimvarRefinerReal Far member functions converted to templates for double precision PatchParamNormalize PatchParamUnnormalize PatchTableEvaluateBasis PatchTableEvaluateBasisVarying PatchTableEvaluateBasisFaceVarying PatchTableGetLocalPointStencilTable PatchTableGetLocalPointVaryingStencilTable PatchTableGetLocalPointFaceVaryingStencilTable PatchMapFindPatch OsdMeshBits enumeration MeshEndCapBilinearBasis OsdPatchArray GetDescriptorRegular GetDescriptorIrregular GetPatchTyperRegular GetPatchTyperIrregular GetStride Osd extensions for patch evaluation common to all shaders struct OsdPatchArray and OsdPatchArrayInit struct OsdPatchCoord and OsdPatchCoordInit struct OsdPatchParam and OsdPatchParamInit OsdPatchParamGetFaceId OsdPatchParamGetU OsdPatchParamGetV OsdPatchParamGetTransition OsdPatchParamGetBoundary OsdPatchParamGetNonQuadRoot OsdPatchParamGetDepth OsdPatchParamGetParamFraction OsdPatchParamIsRegular OsdPatchParamIsTriangleRotated OsdPatchParamNormalize OsdPatchParamUnnormalize OsdPatchParamNormalizeTriangle OsdPatchParamUnnormalizeTriangle OsdEvaluatePatchBasisNormalized OsdEvaluatePatchBasis Osd extensions for patch tessellation common to all shaders OsdInterpolatePatchCoordTriangle OsdComputePerPatchVertexBoxSplineTriangle OsdEvalPatchBezierTriangle OsdEvalPatchGregoryTriangle OsdGetTessLevelsUniformTriangle OsdEvalPatchBezierTessLevels OsdEvalPatchBezierTriangleTessLevels OsdGetTessParameterizationTriangle Other Changes Improvements Added new build script GitHub 1068 Added support for newer DirectX SDKs GitHub 1066 Patch arrays extended to support combined regular and irregular types GitHub 995 FarPatchTables and adaptive refinement supported for Bilinear scheme GitHub 1035 New FarPatchTableFactory method to determine adaptive refinement options GitHub 1047 New FarPatchTableFactory options to align primvar buffers of uniform tables GitHub 986 FarStencilTableUpdateValues overloaded to support separate base buffer GitHub 1011 FarLimitStencilTableFactory updated to create face-varying tables GitHub 1012 Regular patches on boundaries no longer require additional isolation GitHub 1025 Inclusion of OpenSubdiv header files in source code now consistent GitHub 767 Re-organization of and additions to Far tutorials GitHub 1083 Examples now use common command-line conventions and parsing GitHub 1056 Bug Fixes Fixed FarPrimvarRefiner internal limitFVar prototype GitHub 979 Fixed FarStencilTable append when base StencilTable empty GitHub 982 Patches around non-manifold vertices now free of cracks GitHub 1013 Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"title\": \"OSD Tessellation shader Interface\",\n+        \"text\": \"OSD Tessellation shader Interface OSD Tessellation shader Interface 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE Basic Tessellation Control Shader Example for B-Spline patches Tessellation Evaluation Shader Example for B-Spline patches Basis Conversion B-spline Patch Gregory Basis Patch Box-spline Triangle Patch Gregory Triangle Patch Legacy Gregory Patch 2.x compatibility Tessellation levels Tessellation levels at each tessellated vertex Tessellation levels computed at each patch Uniform Screenspace Basic Starting with 3.0, Osd tessellation shaders can be used as a set of functions from client shader code. In order to tessellate Osd patches, client shader code should perform the following steps regular B-spline patch case In a tessellation control shader fetch a PatchParam for the current patch call OsdComputePerPatchVertexBSpline to compute OsdPerPatchVertexBezier. compute tessellation level. To prevent cracks on transition patches, two vec4 parameters tessOuterHi, tessOuterLo will be needed in addition to built-in gl_TessLevelInnerOuters. In a tessellation evaluation shader call OsdGetTessParameterization to remap gl_TessCoord to a patch parameter at which to evaluate. call OsdEvalPatchBezierOsdEvalPatchGregory to evaluate the current patch. The following is a minimal example of GLSL code explaining how client shader code uses OpenSubdiv shader functions to tessellate patches of a patch table. Tessellation Control Shader Example for B-Spline patches layout  vertices  16  out  in vec3 position  patch out vec4 tessOuterLo , tessOuterHi  out OsdPerPatchVertexBezier v  void main    Get a patch param from texture buffer. ivec3 patchParam  OsdGetPatchParam  gl_PrimitiveID   Compute per-patch vertices. OsdComputePerPatchVertexBSpline  patchParam , gl_InvocationID , position , v   Compute tessellation factors. if  gl_InvocationID  0   vec4 tessLevelOuter  vec4  0  vec2 tessLevelInner  vec2  0  OsdGetTessLevelsUniform  patchParam , tessLevelOuter , tessLevelInner , tessOuterLo , tessOuterHi  gl_TessLevelOuter  0   tessLevelOuter  0  gl_TessLevelOuter  1   tessLevelOuter  1  gl_TessLevelOuter  2   tessLevelOuter  2  gl_TessLevelOuter  3   tessLevelOuter  3  gl_TessLevelInner  0   tessLevelInner  0  gl_TessLevelInner  1   tessLevelInner  1    Tessellation Evaluation Shader Example for B-Spline patches layout  quads  in  patch in vec4 tessOuterLo , tessOuterHi  in OsdPerPatchVertexBezier v  uniform mat4 mvpMatrix  void main    Compute tesscoord. vec2 UV  OsdGetTessParameterization  gl_TessCoord . xy , tessOuterLo , tessOuterHi  vec3 P  vec3  0 , dPu  vec3  0 , dPv  vec3  0  vec3 N  vec3  0 , dNu  vec3  0 , dNv  vec3  0  ivec3 patchParam  inpt  0 . v . patchParam   Evaluate patch at the tess coord UV OsdEvalPatchBezier  patchParam , UV , v , P , dPu , dPv , N , dNu , dNv   Apply model-view-projection matrix. gl_Position  mvpMatrix  vec4  P , 1   Basis Conversion B-spline Patch The following diagram shows how the Osd shaders process b-spline patches. While regular patches are expressed as b-spline patches in FarPatchTable, the Osd shader converts them into Bezier basis patches for simplicity and efficiency. This conversion is performed in the tessellation control stage. The boundary edge evaluation and single crease matrix evaluation are also resolved during this conversion. OsdComputePerPatchVertexBSpline can be used for this process. The resulting Bezier control vertices are stored in OsdPerPatchVertexBezier struct. void OsdComputePerPatchVertexBSpline  ivec3 patchParam , int ID , vec3 cv  16 , out OsdPerPatchVertexBezier result  The tessellation evaluation shader takes an array of OsdPerPatchVertexBezier struct, and then evaluates the patch using the OsdEvalPatchBezier function. void OsdEvalPatchBezier  ivec3 patchParam , vec2 UV , OsdPerPatchVertexBezier cv  16 , out vec3 P , out vec3 dPu , out vec3 dPv , out vec3 N , out vec3 dNu , out vec3 dNv  Gregory Basis Patch In a similar way, Gregory basis patches are processed as follows OsdComputePerPatchVertexGregoryBasis can be used for the Gregory patches although no basis conversion involved for the Gregory patches and the resulting vertices are stored in a OsdPerPatchVertexGreogryBasis struct. void OsdComputePerPatchVertexGregoryBasis  ivec3 patchParam , int ID , vec3 cv , out OsdPerPatchVertexGregoryBasis result  The tessellation evaluation shader takes an array of OsdPerPatchVertexGregoryBasis struct, and then evaluates the patch using the OsdEvalPatchGregory function. void OsdEvalPatchGregory  ivec3 patchParam , vec2 UV , vec3 cv  20 , out vec3 P , out vec3 dPu , out vec3 dPv , out vec3 N , out vec3 dNu , out vec3 dNv  Box-spline Triangle Patch While regular triangle patches are expressed as triangular box-spline patches in FarPatchTable, the Osd shader converts them into triangular Bezier patches for consistency. This conversion is performed in the tessellation control stage. The boundary edge evaluation is resolved during this conversion. OsdComputePerPatchVertexBoxSplineTriangle can be used for this process. The resulting Bezier control vertices are stored in OsdPerPatchVertexBezier struct. void OsdComputePerPatchVertexBoxSplineTriangle  ivec3 patchParam , int ID , vec3 cv  12 , out OsdPerPatchVertexBezier result  The tessellation evaluation shader takes an array of OsdPerPatchVertexBezier struct, and then evaluates the patch using the OsdEvalPatchBezierTriangle function. void OsdEvalPatchBezierTriangle  ivec3 patchParam , vec2 UV , OsdPerPatchVertexBezier cv  15 , out vec3 P , out vec3 dPu , out vec3 dPv , out vec3 N , out vec3 dNu , out vec3 dNv  Gregory Triangle Patch OsdComputePerPatchVertexGregoryBasis can be used for the quartic triangular Gregory patches although no basis conversion involved for the Gregory triangle patches and the resulting vertices are stored in a OsdPerPatchVertexGreogryBasis struct. void OsdComputePerPatchVertexGregoryBasis  ivec3 patchParam , int ID , vec3 cv , out OsdPerPatchVertexGregoryBasis result  The tessellation evaluation shader takes an array of OsdPerPatchVertexGregoryBasis struct, and then evaluates the patch using the OsdEvalPatchGregoryTriangle function. void OsdEvalPatchGregoryTriangle  ivec3 patchParam , vec2 UV , vec3 cv  18 , out vec3 P , out vec3 dPu , out vec3 dPv , out vec3 N , out vec3 dNu , out vec3 dNv  Legacy Gregory Patch 2.x compatibility OpenSubdiv 3.0 also supports 2.x style Gregory patch evaluation see far_overview. In order to evaluate a legacy Gregory patch, client needs to bind extra buffers and to perform extra steps in the vertex shader as shown in the following diagram Tessellation levels Osd provides both uniform and screen-space adaptive tessellation level computation. Because of the nature of feature adaptive subdivision , we need to pay extra attention for a patchs outer tessellation level for the screen-space adaptive case so that cracks dont appear. An edge of the patch marked as a transition edge is split into two segments Hi and Lo. The Osd shaders uses these two segments to ensure the same tessellation along the edge between different levels of subdivision. In the following example, suppose the left hand side patch has determined the tessellation level of its right edge to be 5. gl_TessLevelOuter is set to 5 for the edge, and at the same time we also pass 2 and 3 to the tessellation evaluation shader as separate levels for the two segments of the edge split at the middle. Tessellation levels at each tessellated vertex The tessellation evaluation shader takes gl_TessCoord and those two values, and remaps gl_TessCoord using OsdGetTessParameterization or OsdGetTessLevelParameterizationTriangle to ensure the parameters are consistent across adjacent patches. vec2 OsdGetTessParameterization  vec2 uv , vec4 tessOuterLo , vec4 tessOuterHi  vec2 OsdGetTessParameterizationTriangle  vec3 uvw , vec4 tessOuterLo , vec4 tessOuterHi  Tessellation levels computed at each patch These tessellation levels can be computed the corresponding method in the tesselation control shader. Note that these functions potentially requires all bezier control points, you need to call barrier to ensure the conversion is done for all invocations. See osdglslPatchBSpline.glsl for more details. Uniform void OsdGetTessLevelsUniform  ivec3 patchParam , out vec4 tessLevelOuter , out vec2 tessLevelInner , out vec4 tessOuterLo , out vec4 tessOuterHi  void OsdGetTessLevelsUniformTriangle  ivec3 patchParam , out vec4 tessLevelOuter , out vec2 tessLevelInner , out vec4 tessOuterLo , out vec4 tessOuterHi  Screenspace void OsdEvalPatchBezierTessLevels  OsdPerPatchVertexBezier cpBezier  16 , ivec3 patchParam , out vec4 tessLevelOuter , out vec2 tessLevelInner , out vec4 tessOuterLo , out vec4 tessOuterHi  void OsdEvalPatchBezierTriangleTessLevels  vec3 cv  15 , ivec3 patchParam , out vec4 tessLevelOuter , out vec2 tessLevelInner , out vec4 tessOuterLo , out vec4 tessOuterHi  Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n-        \"loc\": \"release_34.html\"\n+        \"loc\": \"osd_shader_interface.html\"\n     }, {\n-        \"title\": \"bfr_tutorial_1_4.cpp\",\n-        \"text\": \"bfr_tutorial_1_4.cpp bfr_tutorial_1_4.cpp 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE httpsgithub.comPixarAnimationStudiosOpenSubdivblobreleasetutorialsbfrtutorial_1_4bfr_tutorial_1_4.cpp ------------------------------------------------------------------------------  Tutorial description   This tutorial builds on the previous tutorial that makes use of the  SurfaceFactory, Surface and Tessellation classes for evaluating and  tessellating the limit surface of faces of a mesh by illustrating  how the presence of additional data in the mesh arrays is handled.   As in the previous tutorial, vertex positions and face-varying UVs  are provided with the mesh to be evaluated. But here an additional  color is interleaved with the position in the vertex data of the  mesh and a third component is added to face-varying UV data making  it u,v,w.   To evaluate the position and 2D UVs while avoiding the color and  unused third UV coordinate, the SurfacePointDescriptor class is  used to describe the size and stride of the desired data to be  evaluated in the arrays of mesh data.  include opensubdivfartopologyRefiner.h include opensubdivbfrrefinerSurfaceFactory.h include opensubdivbfrsurface.h include opensubdivbfrtessellation.h include vector include string include cstring include cstdio  Local headers with support for this tutorial in namespace tutorial include .meshLoader.h include .objWriter.h using namespace OpenSubdiv    Simple command line arguments to provide input and run-time options  class Args  public  std  string inputObjFile  std  string outputObjFile  Sdc  SchemeType schemeType  int tessUniformRate  bool tessQuadsFlag  bool uv2xyzFlag  public  Args  int argc , char  argv   inputObjFile , outputObjFile , schemeType  Sdc  SCHEME_CATMARK , tessUniformRate  5 , tessQuadsFlag  false , uv2xyzFlag  false   for  int i  1  i  argc   i   if  strstr  argv  i , .obj   if  inputObjFile . empty   inputObjFile  std  string  argv  i   else  fprintf  stderr , Warning Extra Obj file s ignored n  , argv  i    else if   strcmp  argv  i , -o   if   i  argc  outputObjFile  std  string  argv  i   else if   strcmp  argv  i , -bilinear   schemeType  Sdc  SCHEME_BILINEAR   else if   strcmp  argv  i , -catmark   schemeType  Sdc  SCHEME_CATMARK   else if   strcmp  argv  i , -loop   schemeType  Sdc  SCHEME_LOOP   else if   strcmp  argv  i , -res   if   i  argc  tessUniformRate  atoi  argv  i   else if   strcmp  argv  i , -quads   tessQuadsFlag  true   else if   strcmp  argv  i , -uv2xyz   uv2xyzFlag  true   else  fprintf  stderr , Warning Unrecognized argument s ignored n  , argv  i     private  Args       The main tessellation function given a mesh and vertex positions,  tessellate each face -- writing results in Obj format.  void tessellateToObj  Far  TopologyRefiner const  meshTopology , std  vector  float  const  meshVtxData , int vtxDataSize , std  vector  float  const  meshFVarData , int fvarDataSize , Args const  options     Use simpler local type names for the Surface and its factory  typedef Bfr  RefinerSurfaceFactory  SurfaceFactory  typedef Bfr  Surface  float  Surface  typedef Surface  PointDescriptor SurfacePoint    Identify the source positions and UVs within more general data  arrays for the mesh. If position andor UV are not at the start  of the vtx andor fvar data, simply offset the head of the array  here accordingly  bool meshHasUVs   meshTopology . GetNumFVarChannels   0  float const  meshPosData  meshVtxData . data  SurfacePoint meshPosPoint  3 , vtxDataSize  float const  meshUVData  meshHasUVs  meshFVarData . data   0  SurfacePoint meshUVPoint  2 , fvarDataSize    Initialize the SurfaceFactory for the given base mesh very low  cost in terms of both time and space and tessellate each face  independently i.e. no shared vertices   Note that the SurfaceFactory is not thread-safe by default due to  use of an internal cache. Creating a separate instance of the  SurfaceFactory for each thread is one way to safely parallelize  this loop. Another preferred is to assign a thread-safe cache  to the single instance.   First declare any evaluation options when initializing   When dealing with face-varying data, an identifier is necessary  when constructing Surfaces in order to distinguish the different  face-varying data channels. To avoid repeatedly specifying that  identifier when only one is present or of interest, it can be  specified via the Options.  SurfaceFactory  Options surfaceOptions  if  meshHasUVs   surfaceOptions . SetDefaultFVarID  0   SurfaceFactory surfaceFactory  meshTopology , surfaceOptions    The Surface to be constructed and evaluated for each face -- as  well as the intermediate and output data associated with it -- can  be declared in the scope local to each face. But since dynamic  memory is involved with these variables, it is preferred to declare  them outside that loop to preserve and reuse that dynamic memory.  Surface posSurface  Surface uvSurface  std  vector  float  facePatchPoints  std  vector  float  outCoords  std  vector  float  outPos , outDu , outDv  std  vector  float  outUV  std  vector  int  outFacets    Assign Tessellation Options applied for all faces. Tessellations  allow the creating of either 3- or 4-sided faces -- both of which  are supported here via a command line option  int const tessFacetSize  3  options . tessQuadsFlag  Bfr  Tessellation  Options tessOptions  tessOptions . SetFacetSize  tessFacetSize  tessOptions . PreserveQuads  options . tessQuadsFlag    Process each face, writing the output of each in Obj format  tutorial  ObjWriter objWriter  options . outputObjFile  int numFaces  surfaceFactory . GetNumFaces  for  int faceIndex  0  faceIndex  numFaces   faceIndex     Initialize the Surfaces for position and UVs of this face.  There are two ways to do this -- both illustrated here   Creating Surfaces for the different data interpolation types  independently is clear and convenient, but considerable work  may be duplicated in the construction process in the case of  non-linear face-varying Surfaces. So unless it is known that  face-varying interpolation is linear, use of InitSurfaces  is generally preferred.   Remember also that the face-varying identifier is omitted from  the initialization methods here as it was previously assigned  to the SurfaceFactoryOptions. In the absence of an assignment  of the default FVarID to the Options, a failure to specify the  FVarID here will result in failure.   The cases below are expanded for illustration purposes, and  validity of the resulting Surface is tested here, rather than  the return value of initialization methods.  bool createSurfacesTogether  true  if   meshHasUVs   surfaceFactory . InitVertexSurface  faceIndex ,  posSurface   else if  createSurfacesTogether   surfaceFactory . InitSurfaces  faceIndex ,  posSurface ,  uvSurface   else  if  surfaceFactory . InitVertexSurface  faceIndex ,  posSurface   surfaceFactory . InitFaceVaryingSurface  faceIndex ,  uvSurface    if   posSurface . IsValid  continue    Declare a simple uniform Tessellation for the Parameterization  of this face and identify coordinates of the points to evaluate  Bfr  Tessellation tessPattern  posSurface . GetParameterization , options . tessUniformRate , tessOptions  int numOutCoords  tessPattern . GetNumCoords  outCoords . resize  numOutCoords  2  tessPattern . GetCoords  outCoords . data    Prepare the patch points for the Surface, then use them to  evaluate output points for all identified coordinates   Evaluate vertex positions   Resize patch point and output arrays int pointSize  meshPosPoint . size  facePatchPoints . resize  posSurface . GetNumPatchPoints   pointSize  outPos . resize  numOutCoords  pointSize  outDu . resize  numOutCoords  pointSize  outDv . resize  numOutCoords  pointSize   Populate patch point and output arrays float  patchPosData  facePatchPoints . data  SurfacePoint patchPosPoint  pointSize  posSurface . PreparePatchPoints  meshPosData , meshPosPoint , patchPosData , patchPosPoint  for  int i  0 , j  0  i  numOutCoords   i , j  pointSize   posSurface . Evaluate   outCoords  i  2 , patchPosData , patchPosPoint ,  outPos  j ,  outDu  j ,  outDv  j     Evaluate face-varying UVs when present if  meshHasUVs    Resize patch point and output arrays  - note reuse of the same patch point array as position int pointSize  meshUVPoint . size  facePatchPoints . resize  uvSurface . GetNumPatchPoints   pointSize  outUV . resize  numOutCoords  pointSize   Populate patch point and output arrays float  patchUVData  facePatchPoints . data  SurfacePoint patchUVPoint  pointSize  uvSurface . PreparePatchPoints  meshUVData , meshUVPoint , patchUVData , patchUVPoint  for  int i  0 , j  0  i  numOutCoords   i , j  pointSize   uvSurface . Evaluate   outCoords  i  2 , patchUVData , patchUVPoint ,  outUV  j      Identify the faces of the Tessellation   Note the need to offset vertex indices for the output faces --  using the number of vertices generated prior to this face. One  of several Tessellation methods to transform the facet indices  simply translates all indices by the desired offset.  int objVertexIndexOffset  objWriter . GetNumVertices  int numFacets  tessPattern . GetNumFacets  outFacets . resize  numFacets  tessFacetSize  tessPattern . GetFacets  outFacets . data  tessPattern . TransformFacetCoordIndices  outFacets . data , objVertexIndexOffset    Write the evaluated points and faces connecting them as Obj  objWriter . WriteGroupName  baseFace_ , faceIndex  if  meshHasUVs  options . uv2xyzFlag   objWriter . WriteVertexPositions  outUV , 2  objWriter . WriteFaces  outFacets , tessFacetSize , false , false   else  objWriter . WriteVertexPositions  outPos  objWriter . WriteVertexNormals  outDu , outDv  if  meshHasUVs   objWriter . WriteVertexUVs  outUV   objWriter . WriteFaces  outFacets , tessFacetSize , true , meshHasUVs       Load command line arguments, specified or default geometry and process  int main  int argc , char  argv   Args args  argc , argv  Far  TopologyRefiner  meshTopology  0  std  vector  float  meshVtxPositions  std  vector  float  meshFVarUVs  meshTopology  tutorial  createTopologyRefiner  args . inputObjFile , args . schemeType , meshVtxPositions , meshFVarUVs  if  meshTopology  0   return EXIT_FAILURE     Expand the loaded position and UV arrays to include additional  data initialized with -1 for distinction, e.g. add a 4-tuple  for RGBA color to the vertex data and add a third field w  to the face-varying data  int numPos   int  meshVtxPositions . size   3  int vtxSize  7  std  vector  float  vtxData  numPos  vtxSize , -1.0f  for  int i  0  i  numPos   i   vtxData  i  vtxSize   meshVtxPositions  i  3  vtxData  i  vtxSize  1   meshVtxPositions  i  3  1  vtxData  i  vtxSize  2   meshVtxPositions  i  3  2   int numUVs   int  meshFVarUVs . size   2  int fvarSize  3  std  vector  float  fvarData  numUVs  fvarSize , -1.0f  for  int i  0  i  numUVs   i   fvarData  i  fvarSize   meshFVarUVs  i  2  fvarData  i  fvarSize  1   meshFVarUVs  i  2  1     Pass the expanded data arrays along with their respective strides  tessellateToObj   meshTopology , vtxData , vtxSize , fvarData , fvarSize , args  delete meshTopology  return EXIT_SUCCESS   ------------------------------------------------------------------------------ Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"title\": \"Subdivision Compatibility\",\n+        \"text\": \"Subdivision Compatibility Subdivision Compatibility 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE Subdivision Compatibility Compatibility with OpenSubdiv 2.x Compatibility with RenderMan Incompatibilities Other Differences Subdivision Compatibility This document highlights areas of compatibility with other software that makes use of subdivision surfaces, including previous versions of OpenSubdiv. The compatibility here refers to the choice of subdivision rules that define the shape of the resulting surfaces. Different subdivision rules will lead to different shapes. Choices affecting shape include the types of subdivision schemes supported e.g. Catmull-Clark, Loop, etc. the basic rules applied for these schemes any extended rules to affect sharpness or creasing rules applied separately to face-varying data Ensuring all of these rules are consistent provides the basis for consistent shapes, but further approximations to the limit surface create the potential for subtle deviations. Even within OpenSubdiv, multiple approximations are possible and vary. For now we focus on the compatibility of subdivision rules and deal with the limit approximations only when noteworthy. Compatibility with OpenSubdiv 2.x The refactoring of OpenSubdiv 3.0 data representations presented a unique opportunity to revisit some corners of the subdivision specification and remove or update some legacy features. Face-varying Interpolation Options Face-varying interpolation options have been consolidated into a single enum with one additional choice new to 3.0. No functionality from 2.x has been removed -- just re-expressed in a simpler and more comprehensible form. Face-varying interpolation was previously defined by a boundary interpolation enum with four modes and an additional boolean propagate corners option, which was little understood, i.e. void HbrMeshSetFVarInterpolateBoundarMethodInterpolateBoundaryMethod const void HbrMeshSetFVarPropagateCornersbool const The latter was only used in conjunction with one of the four modes edge and corner, so it was effectively a unique fifth choice. Closer inspection of all of these modes also revealed some unexpected and undesirable behavior in some common cases -- to an extent that could not simply be changed -- and so an additional mode was added to avoid such behavior. All choices are now provided through a single linear interpolation enum, described and illustrated in more detail in the overview of Face-Varying Interpolation . The use of boundary in the name of the enum was intentionally removed as the choice also affects interior interpolation. The new use of linear is now intended to reflect the fact that interpolation is constrained to be linear where specified by the choice applied. All five of Hbrs original modes of face-varying interpolation are supported with minor modifications where Hbr was found to be incorrect in the presence of semi-sharp creasing. An additional mode corners only has also been added to avoid some of the undesired side-effects of some existing modes illustrated below. The new values for the SdcOptionsFVarLinearInterpolation enum and its equivalents for HbrMeshs InterpolateBoundaryMethod and PropagateCorners flag are as follows ordered such that the set of linear constraints applied is always increasing -- from completely smooth to completely linear Sdc FVarLinearInterpolation Hbr FVarInterpolateBoundaryMethod Hbr FVarPropogateCorners FVAR_LINEAR_NONE k_InterpolateBoundaryEdgeOnly NA ignored FVAR_LINEAR_CORNERS_ONLY NA NA FVAR_LINEAR_CORNERS_PLUS1 k_InterpolateBoundaryEdgeAndCorner false FVAR_LINEAR_CORNERS_PLUS2 k_InterpolateBoundaryEdgeAndCorner true FVAR_LINEAR_BOUNDARIES k_InterpolateBoundaryAlwaysSharp NA ignored FVAR_LINEAR_ALL k_InterpolateBoundaryNone NA ignored Aside from the two corners plus modes that preserve Hbr behavior, all other modes are designed so that the interpolation of a disjoint face-varying region is not affected by changes to other regions that may share the same vertex. So the behavior of a disjoint region should be well understood and predictable when looking at it in isolation e.g. with corners only one would expect to see linear constraints applied where there are topological corners or infinitely sharp creasing applied within the region, and nowhere else. This is not true of the plus modes, and they are named to reflect the fact that more is taken into account where disjoint regions meet. The following example illustrates some undesired effects of the plus modes, which in part motivated the addition of the new corners only mode. The example uses the catmark_fvar_bound0 and catmark_fvar_bound1 shapes from the suite of regression shapes. Both shapes are a simple regular 4x4 grid of quads with face-varying UV data partitioned into multiple disjoint regions. The bound0 shape has two disjoint UV regions -- an upper and lower region -- while the bound1 shape further splits the lower region in two. This first figure illustrates the effect of the original plus1 mode which is also the same for plus2 Note that the effect of splitting the lower UV region in two has the undesired side effect of sharpening the boundary of the upper region. This is the result of the plus1 mode making collective decisions about the sharpness of all face-varying boundaries at the vertex rather than decisions local to each region. In both the plus1 and plus2 cases, all face-varying boundaries sharing a vertex will be sharpened if there are more than two regions meeting at that vertex. The second figure illustrates the effect of the new corners only mode As expected, the splitting of the lower region does not impact the upper region. In this case the decision to sharpen a face-varying boundary is made based on the local topology of each region. Vertex Interpolation Options Since the various options are now presented through a new API Sdc rather than Hbr, based on the history of some of these options and input from interested parties, the following changes have been implemented The naming of the standard creasing method has been changed from Normal to Uniform . Values for SdcOptionsCreasingMethod are now CREASE_UNIFORM standard integer subtraction per level default CREASE_CHAIKIN Chaikin non-uniform averaging around vertices Legacy modes of the smoothtriangle rule have been removed as they were never actually enabled in the code. Values for SdcOptionsTriangleSubdivision are now TRI_SUB_CATMARK Catmull-Clark weights default TRI_SUB_SMOOTH smooth triangle weights These should have little impact since one is a simple change in terminology as part of a new API while the other was removal of an option that was never used. Change to Chaikin creasing method In the process of re-implementing the Chaikin creasing method, observations lead to a conscious choice to change the behavior of Chaikin creasing in the presence of infinitely sharp edges most noticeable at boundaries. Previously, the inclusion of infinite sharpness values in the Chaikin methods computation of edge sharpness around a vertex would prevent a semi-sharp edge from decaying to zero. Infinitely sharp edges are now excluded from the Chaikin non-uniform averaging yielding a much more predictable and desirable result. For example, where the sharpness assignment is actually uniform at such a vertex, the result will now behave the same as the Uniform method. Since this feature has received little use only recently activated in RenderMan, now seemed the best time to make the change before more widespread adoption. Hierarchical Edits While extremely powerful, Hierarchical Edits come with additional maintenance and implementation complexity. Support for them in popular interchange formats and major DCC applications has either been dropped or was never implemented. As a result, the need for Hierarchical Edits is too limited to justify the cost and support for them, and they have therefore been removed from the 3.0 release of OpenSubdiv. Dropping support for Hierarchical Edits allows for significant simplifications of many areas of the subdivision algorithms. While the 3.0 release does not offer direct support for Hierarchical Edits, the architectural changes and direction of 3.0 still facilitate the application of the most common value edits for those wishing to use them -- though not always in the same optimized context. Of course, support for Hierarchical Edits in the future will be considered based on demand and resources. Non-Manifold Topology OpenSubdiv 2.x and earlier was limited to dealing with meshes whose topology was manifold -- a limitation imposed by the use of Hbr. With 3.0 no longer using Hbr, the manifold restriction has also been removed. OpenSubdiv 3.0, therefore, supports a superset of the meshes supported by 2.x and earlier versions with one known exception noted below. Non-manifold meshes that are acceptable to 3.0 however will likely not work with 2.x or earlier. The one known case that 3.0 will not represent the same as 2.x is ironically a case that is non-manifold, and for which Hbr did make special accommodation. That case occurs at a non-manifold vertex where two or more faces meet at a common vertex, but do not share a common edge, and when the boundary interpolation mode is set for smooth corners i.e. edge only, as illustrated below The cage is on the left and is refined to level 2 on the right. On the immediate right, boundary interpolation is set to sharp corners and the results appear the same for 2.x and 3.0. The center and far right illustrate the affects of setting boundary interpolation to smooth corners with 2.x and 3.0 respectively. Note that the 2.x result allows the refined mesh and so the limit surface to split into two while the 3.0 result keeps it connected. When Hbr encounters such vertices, regardless of the boundary mode it splits the vertex -- creating a separate instance of it for each face. So when building an HbrMesh, after finalizing the mesh, it will result in having more vertices than were originally defined termed split vertices. OpenSubdiv 2.x and earlier successfully hid the presence of these extra vertices from users. This case behaves in such a way that violates certain properties of the surface that 3.0 has attempted to emphasize. One of these relates to the nature of the limit surface and becomes more significant in the context of face varying if the cage is connected then so too is its limit surface, or similarly, if the cage consists of N connected regions then the limit surface similarly consists of N connected regions. Another undesirable property here is that the vertex V at which these faces meet must have more than one child vertex V . This makes it difficult to hide split vertices -- OpenSubdiv 2.x tables had an extra level of indirection that made it possible to do this relatively easily, but 3.0 has dispensed with such indirection where possible to streamline performance. Compatibility with RenderMan Since RenderMan and OpenSubdiv versions prior to 3.0 share a common library Hbr, most differences between RenderMan and OpenSubdiv 3.0 are covered in the preceding section of compatibility with OpenSubdiv 2.x. In addition to some features between RenderMan and OpenSubdiv that are not compatible, there are also other differences that may be present due to differences in the implementations of similar features. For most use cases, OpenSubdiv 3.0 is largely compatible with RenderMan. There are however some cases where some differences can be expected. These are highlighted below for completeness. Incompatibilities OpenSubdiv and RenderMan will be incompatible when certain features are used that are not common to both. They are fully described in the 2.x compatibility section and are listed briefly here. OpenSubdiv 3.0 Features Not Supported by RenderMan Non-manifold meshes Choice of the corners only face varying interpolation option RenderMan Features Not Supported by OpenSubdiv 3.0 Hierarchical Edits Other Differences Some differences can occur due to the differing implementations of the feature sets. Additionally, OpenSubdiv 3.0s implementation fixes some issues discovered in Hbr. Smooth Face-Varying Interpolation with Creasing There have been two discrepancies noted in the way that face-varying data is interpolated smoothly in the presence of creases. Smooth face-varying interpolation is expected to match vertex interpolation in the interior and only differ along the boundaries or discontinuities where the face-varying topology is intentionally made to differ from the vertex topology. A simple and effective way to identify discrepancies is to use the X and Y coordinates of vertex positions as the U and V of texture coordinates. If these U and V coordinates are assigned to a face-varying channel, smooth interpolation of U and V is expected to exactly match interpolation of X and Y, regardless of the presence of any sharpness and creasing. Two discrepancies can be seen with Hbr when superimposing the XY vertex interpolation with the projected UV face-varying interpolation. The first discrepancy occurs with interpolation around dart vertices This example shows a simple regular XY grid on the left with an interior sharp edge creating a dart vertex in the center. With no asymmetry in the vertices, the sharpness has no asymmetric affect and the XY vertex interpolation on the immediate right shows the regular grid expected from refinement. On the far right is the UV interpolation from Hbr, which exhibits distortion around the center dart vertex. The second discrepancy occurs with interpolation involving any fractional sharpness values. Hbr effectively ignores any fractional sharpness value in its face-varying interpolation. So edges of vertices with sharpness of say 2.5, will be treated as though their sharpness is 2.0 when face-varying values are interpolated. Similarly, any non-zero sharpness value less than 1.0 is treated as zero by truncation and so is essentially ignored. This example shows an asymmetric 2x2 grid of quads on the left with the center vertex progressively sharpened from 0.5 to 1.0. The three cases of the vertex smooth and sharpened are superimposed on the immediate right to display the three distinct interpolation results. On the far right the interpolation from Hbr displays the same three cases, but only two are visibly distinct -- the sharpness of 0.5 being treated the same as if it were 0.0. Both of these cases are corrected in OpenSubdiv 3.0. Smooth face-varying interpolation in the presence of creasing should match the expected behavior of the vertex interpolation, except where the face-varying topology is explicitly made to differ. The Chaikin Creasing Method At least two discrepancies are know to exist between the implementations of Hbr in RenderMan and OpenSubdiv 3.0 Use of Chaikin creasing with boundaries or infinitely sharp edges Subtle shape differences due to Hbrs use of predictive sharpness Fortunately, this feature was only recently added to Hbr and RenderMan and is little used, so it is expected these differences will have little impact. The first discrepancy is mentioned briefly in the previous section on compatibility between OpenSubdiv 2.x and 3.0. A conscious decision was made to change the averaging of sharpness values involving infinitely sharp edges in order to make results more predictable and favorable. The effects can be seen comparing the regression shape catmark_chaikin2. The second is more subtle and results from an oversight within Hbrs implementation that is not easily corrected. When determining what subdivision rule to apply from one level to the next, the sharpness values at the next level must be known in order to determine whether or not a transition between differing rules is required. If the rule at the next level differs from the previous, a combination of the two is applied. Such a change results from the sharpness values of one or more edges or the vertex itself decaying to zero. Rather than compute the sharpness values at the next level accurately, Hbr predicts it by simply subtracting 1.0 from it, as is done with the uniform creasing method, and it bases decisions on that predicted result. This does not work for Chaikin though. A sharpness value less than 1.0 may not decay to 0 if it is averaged with neighboring sharpness values greater than 1.0, so this sharpness prediction can result in the wrong rule being chosen for the next level. A typical case would have the subdivision rules for Chaikin creasing transition from Corner to Crease at one level, then from Crease to Smooth at the next. Hbrs predictive creasing might mistakenly detect the transition as Corner to Smooth at one level, then after properly computing the sharpness values for the next level later, from Crease to Smooth for the next. One of the regression shapes catmark_chakin1 was disabled from the regression suite because of this effect. The differences in shape that trigger its regression failure were investigated and determined to be the result of this issue. From observations thus far these differences are subtle but can be noticeable. Numerical Precision Since its inception, OpenSubdiv has sought to produce results that were numerically consistent to RenderMan. A regression suite to ensure a certain level of accuracy was provided to detect any substantial deviation. At some point in the development of OpenSubdiv, the point was made that numerical accuracy of Hbr could be improved by changing the order of operations and combining the vertex with the lowest coefficient first in one of the subdivision rules. This was applied more thoroughly in the independent implementation of 3.0 there seemed no reason not to. In most cases the relative magnitudes of the coefficients of subdivision and limit masks is clear so no overhead was necessary to detect them. At a certain point though, this greater accuracy came in conflict with the regression suite. It turned out that high-valence vertices could not be computed to within the desired tolerances set within the suite. The summation of many small coefficients for the adjacent vertices first, before the addition of the much larger coefficient for the primary vertex, allowed for the accumulation of precision that was being truncated by adding the much larger coefficient first in the Hbr implementation. With extremely high valence vertices, a difference in magnitude between the most and least significant coefficients of several orders of magnitude is likely, and that has a significant impact on the single-precision floating point computations. The improved accuracy of OpenSubdiv 3.0 can reach a magnitude that will not go undetected. Whether or not this can lead to visual artifacts is unclear. Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n-        \"loc\": \"bfr_tutorial_1_4.html\"\n+        \"loc\": \"compatibility.html\"\n     }, {\n-        \"title\": \"far_tutorial_2_2.cpp\",\n-        \"text\": \"far_tutorial_2_2.cpp far_tutorial_2_2.cpp 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE httpsgithub.comPixarAnimationStudiosOpenSubdivblobreleasetutorialsfartutorial_2_2far_tutorial_2_2.cpp ------------------------------------------------------------------------------  Tutorial description   Building on tutorial 0, this example shows how to instantiate a simple mesh,  refine it uniformly and then interpolate both vertex and face-varying  primvar data.  The resulting interpolated data is output as an obj file, with the  face-varying data recorded in the uv texture layout.  include opensubdivfartopologyDescriptor.h include opensubdivfarprimvarRefiner.h include cstdio ------------------------------------------------------------------------------  Face-varying implementation.   struct Vertex   Minimal required interface ---------------------- Vertex    Vertex  Vertex const  src   _position  0   src . _position  0  _position  1   src . _position  1  _position  2   src . _position  2   void Clear  void   0   _position  0   _position  1   _position  2   0.0f   void AddWithWeight  Vertex const  src , float weight   _position  0   weight  src . _position  0  _position  1   weight  src . _position  1  _position  2   weight  src . _position  2    Public interface ------------------------------------ void SetPosition  float x , float y , float z   _position  0   x  _position  1   y  _position  2   z   const float  GetPosition  const  return _position   private  float _position  3   ------------------------------------------------------------------------------  Face-varying container implementation.   We are using a uv texture layout as a face-varying primitive variable  attribute. Because face-varying data is specified per-face-per-vertex,  we cannot use the same container that we use for vertex or varying  data. We specify a new container, which only carries u,v coordinates.  Similarly to our Vertex container, we add a minimalistic interpolation  interface with a Clear and AddWithWeight methods.  struct FVarVertexUV   Minimal required interface ---------------------- void Clear   u  v  0.0f   void AddWithWeight  FVarVertexUV const  src , float weight   u  weight  src . u  v  weight  src . v    Basic uv layout channel float u , v   struct FVarVertexColor   Minimal required interface ---------------------- void Clear   r  g  b  a  0.0f   void AddWithWeight  FVarVertexColor const  src , float weight   r  weight  src . r  g  weight  src . g  b  weight  src . b  a  weight  src . a    Basic color layout channel float r , g , b , a   ------------------------------------------------------------------------------  Cube geometry from catmark_cube.h  vertex primitive variable data  topology static float g_verts  8  3    -0.5f , -0.5f , 0.5f ,  0.5f , -0.5f , 0.5f ,  -0.5f , 0.5f , 0.5f ,  0.5f , 0.5f , 0.5f ,  -0.5f , 0.5f , -0.5f ,  0.5f , 0.5f , -0.5f ,  -0.5f , -0.5f , -0.5f ,  0.5f , -0.5f , -0.5f  static int g_nverts  8 , g_nfaces  6  static int g_vertsperface  6    4 , 4 , 4 , 4 , 4 , 4  static int g_vertIndices  24    0 , 1 , 3 , 2 , 2 , 3 , 5 , 4 , 4 , 5 , 7 , 6 , 6 , 7 , 1 , 0 , 1 , 7 , 5 , 3 , 6 , 0 , 2 , 4   face-varying primitive variable data  topology for UVs static float g_uvs  14  2    0.375 , 0.00 ,  0.625 , 0.00 ,  0.375 , 0.25 ,  0.625 , 0.25 ,  0.375 , 0.50 ,  0.625 , 0.50 ,  0.375 , 0.75 ,  0.625 , 0.75 ,  0.375 , 1.00 ,  0.625 , 1.00 ,  0.875 , 0.00 ,  0.875 , 0.25 ,  0.125 , 0.00 ,  0.125 , 0.25  static int g_nuvs  14  static int g_uvIndices  24    0 , 1 , 3 , 2 , 2 , 3 , 5 , 4 , 4 , 5 , 7 , 6 , 6 , 7 , 9 , 8 , 1 , 10 , 11 , 3 , 12 , 0 , 2 , 13   face-varying primitive variable data  topology for color static float g_colors  24  4    1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 0.0 , 0.0 , 1.0 ,  1.0 , 0.0 , 0.0 , 1.0 ,  1.0 , 0.0 , 0.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0 ,  1.0 , 1.0 , 1.0 , 1.0  static int g_ncolors  24  static int g_colorIndices  24    0 , 3 , 9 , 6 , 7 , 10 , 15 , 12 , 13 , 16 , 21 , 18 , 19 , 22 , 4 , 1 , 5 , 23 , 17 , 11 , 20 , 2 , 8 , 14  using namespace OpenSubdiv  ------------------------------------------------------------------------------ int main  int , char    int maxlevel  3  typedef Far  TopologyDescriptor Descriptor  Sdc  SchemeType type  OpenSubdiv  Sdc  SCHEME_CATMARK  Sdc  Options options  options . SetVtxBoundaryInterpolation  Sdc  Options  VTX_BOUNDARY_EDGE_ONLY  options . SetFVarLinearInterpolation  Sdc  Options  FVAR_LINEAR_NONE   Populate a topology descriptor with our raw data Descriptor desc  desc . numVertices  g_nverts  desc . numFaces  g_nfaces  desc . numVertsPerFace  g_vertsperface  desc . vertIndicesPerFace  g_vertIndices  int channelUV  0  int channelColor  1   Create a face-varying channel descriptor Descriptor  FVarChannel channels  2  channels  channelUV . numValues  g_nuvs  channels  channelUV . valueIndices  g_uvIndices  channels  channelColor . numValues  g_ncolors  channels  channelColor . valueIndices  g_colorIndices   Add the channel topology to the main descriptor desc . numFVarChannels  2  desc . fvarChannels  channels   Instantiate a FarTopologyRefiner from the descriptor Far  TopologyRefiner  refiner  Far  TopologyRefinerFactory  Descriptor  Create  desc , Far  TopologyRefinerFactory  Descriptor  Options  type , options   Uniformly refine the topology up to maxlevel  note fullTopologyInLastLevel must be true to work with face-varying data  Far  TopologyRefiner  UniformOptions refineOptions  maxlevel  refineOptions . fullTopologyInLastLevel  true  refiner - RefineUniform  refineOptions    Allocate and initialize the vertex primvar data see tutorial 2 for  more details. std  vector  Vertex  vbuffer  refiner - GetNumVerticesTotal  Vertex  verts   vbuffer  0  for  int i  0  i  g_nverts   i   verts  i . SetPosition  g_verts  i  0 , g_verts  i  1 , g_verts  i  2    Allocate and initialize the first channel of face-varying primvar data UVs std  vector  FVarVertexUV  fvBufferUV  refiner - GetNumFVarValuesTotal  channelUV  FVarVertexUV  fvVertsUV   fvBufferUV  0  for  int i  0  i  g_nuvs   i   fvVertsUV  i . u  g_uvs  i  0  fvVertsUV  i . v  g_uvs  i  1    Allocate  interpolate the face-varying primvar data colors std  vector  FVarVertexColor  fvBufferColor  refiner - GetNumFVarValuesTotal  channelColor  FVarVertexColor  fvVertsColor   fvBufferColor  0  for  int i  0  i  g_ncolors   i   fvVertsColor  i . r  g_colors  i  0  fvVertsColor  i . g  g_colors  i  1  fvVertsColor  i . b  g_colors  i  2  fvVertsColor  i . a  g_colors  i  3    Interpolate both vertex and face-varying primvar data Far  PrimvarRefiner primvarRefiner   refiner  Vertex  srcVert  verts  FVarVertexUV  srcFVarUV  fvVertsUV  FVarVertexColor  srcFVarColor  fvVertsColor  for  int level  1  level  maxlevel   level   Vertex  dstVert  srcVert  refiner - GetLevel  level -1 . GetNumVertices  FVarVertexUV  dstFVarUV  srcFVarUV  refiner - GetLevel  level -1 . GetNumFVarValues  channelUV  FVarVertexColor  dstFVarColor  srcFVarColor  refiner - GetLevel  level -1 . GetNumFVarValues  channelColor  primvarRefiner . Interpolate  level , srcVert , dstVert  primvarRefiner . InterpolateFaceVarying  level , srcFVarUV , dstFVarUV , channelUV  primvarRefiner . InterpolateFaceVarying  level , srcFVarColor , dstFVarColor , channelColor  srcVert  dstVert  srcFVarUV  dstFVarUV  srcFVarColor  dstFVarColor     Output OBJ of the highest level refined ----------- Far  TopologyLevel const  refLastLevel  refiner - GetLevel  maxlevel  int nverts  refLastLevel . GetNumVertices  int nuvs  refLastLevel . GetNumFVarValues  channelUV  int ncolors  refLastLevel . GetNumFVarValues  channelColor  int nfaces  refLastLevel . GetNumFaces   Print vertex positions int firstOfLastVerts  refiner - GetNumVerticesTotal  - nverts  for  int vert  0  vert  nverts   vert   float const  pos  verts  firstOfLastVerts  vert . GetPosition  printf  v f f f n  , pos  0 , pos  1 , pos  2    Print uvs int firstOfLastUvs  refiner - GetNumFVarValuesTotal  channelUV  - nuvs  for  int fvvert  0  fvvert  nuvs   fvvert   FVarVertexUV const  uv  fvVertsUV  firstOfLastUvs  fvvert  printf  vt f f n  , uv . u , uv . v    Print colors int firstOfLastColors  refiner - GetNumFVarValuesTotal  channelColor  - ncolors  for  int fvvert  0  fvvert  ncolors   fvvert   FVarVertexColor const  c  fvVertsColor  firstOfLastColors  fvvert  printf  c f f f f n  , c . r , c . g , c . b , c . a    Print faces for  int face  0  face  nfaces   face   Far  ConstIndexArray fverts  refLastLevel . GetFaceVertices  face  Far  ConstIndexArray fuvs  refLastLevel . GetFaceFVarValues  face , channelUV   all refined Catmark faces should be quads assert  fverts . size   4  fuvs . size   4  printf  f   for  int vert  0  vert  fverts . size   vert    OBJ uses 1-based arrays... printf  dd  , fverts  vert   1 , fuvs  vert   1   printf   n     delete refiner  return EXIT_SUCCESS   ------------------------------------------------------------------------------ Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"title\": \"BFR Overview\",\n+        \"text\": \"BFR Overview BFR Overview 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE Base Face Representation Bfr Evaluation BfrSurfaceFactory BfrSurface Parameterization BfrParameterization Discontinuous Parameterizations Tessellation BfrTessellation Tessellation Rates Differences from Hardware Tessellation More on BfrSurfaceFactory BfrSurfaceFactoryCache Defining a Thread-Safe SurfaceFactory Internal versus External SurfaceFactoryCache Customizing a BfrSurfaceFactory The BfrSurfaceFactoryMeshAdapter Interface Customizing the Subclass Interface Base Face Representation Bfr Bfr is an alternate API layer that treats a subdivision mesh provided by a client as a piecewise parameteric surface primitive . The name Bfr derives from the fact that the concepts and classes of this interface all relate to the base faces of a mesh. Concepts such as parameterization , evaluation and tessellation all refer to and are embodied by classes that deal with a specific face of the original unrefined mesh. The Bfr interfaces allow the limit surface for a single face to be identified and evaluated independently of all other faces without any global pre-processing. While concepts and utilities from the Far interface are used internally, the details of their usage is hidden. There is no need to coordinate adaptive refinement with tables of patches, stencils, Ptex indices, patch maps, etc. The resulting evaluation interface is much simpler, more flexible and more scalable than those assembled with the Far classes -- providing a preferable alternative for many CPU-based use cases. The main classes in Bfr include SurfaceFactory A light-weight interface to a mesh that constructs pieces of limit surface for specified faces of a mesh in the form of Surfaces. Surface A class encapsulating the limit surface of a face with methods for complete parametric evaluation. Parameterization A simple class defining the available parameterizations of faces and for identifying that of a particular face. Tessellation A simple class providing information about a specified tessellation pattern for a given Parameterization. Bfr is well suited to cases where evaluation of the mesh may be sparse, dynamically determined or iterative Newton, gradient descent, etc. It is not intended to replace the cases for which Far has been designed i.e. repeated evaluation of a fixed set of points but is intended to complement them. While simplicity, flexibility and reasonable performance were the main goals of Bfr , its current implementation often outperforms the table-based solutions of Far for many common use cases -- both in terms of execution time and memory use. An area that Bfr does not address, and where Far remains more suited, is capturing a specific representation of the limit surface for external use. Bfr intentionally keeps internal implementation details private to allow future improvements or extensions. Those representation details may be publicly exposed in future releases, but until then, use of Far is required for such purposes. Evaluation Since subdivision surfaces are piecewise parametric surfaces, the main operation of interest is evaluation. Bfr deals with the limit surface of a mesh as a whole by associating pieces of surface with each face of the mesh. These pieces of surface are referred to in the context of Bfr simply as surfaces and represented by BfrSurface. Each face of the mesh has an implicit local 2D parameterization and individual coordinates of that parameterization are used to evaluate its corresponding Surface. In general, 3- and 4-sided faces use the same parameterizations for quad and triangular patches used elsewhere in OpenSubdiv Parameterizations are defined for other faces more details to follow, so Surfaces for all faces can be evaluated given any 2D parametric coordinate of its face. Given an instance of a mesh, usage first requires the creation of a BfrSurfaceFactory corresponding to that mesh -- from which Surfaces can then be created for evaluation. Construction of the SurfaceFactory involves no pre-processing and Surfaces can be created and discarded as needed. The processes of constructing and evaluating Surfaces are described in more detail below. BfrSurfaceFactory Construction of BfrSurfaces requires an instance of BfrSurfaceFactory. An instance of SurfaceFactory is a light-weight interface to an instance of a mesh that requires little to no construction cost or memory. The SurfaceFactory does no work until a Surface is requested for a particular face -- at which point the factory inspects the mesh topology around that face to assemble the Surface. SurfaceFactory is actually a base class that is inherited to provide a consistent construction interface for Surfaces. Subclasses are derived to support a particular class of connected mesh -- to implement the topology inspection around each face required to construct the Surface. Use of these subclasses is very simple given the public interface of SurfaceFactory, but defining such a subclass is not. That more complex use case of SurfaceFactory will be described in detail later with other more advanced topics. In many cases, it is not necessary to explicitly define a subclass of SurfaceFactory, as the tutorials for Bfr illustrate. If already using OpenSubdiv for other reasons, a FarTopologyRefiner will have been constructed to represent the initial base mesh before refinement. Bfr provides a subclass of SurfaceFactory using FarTopologyRefiner as the base mesh ignoring any levels of refinement for immediate use in such cases. For those cases when no connected mesh representation is available at all i.e. only raw, unconnected mesh data exists construction of a FarTopologyRefiner provides a reasonably efficient connected mesh representation see the Far tutorials for construction details, whose provided subclass for SurfaceFactory is then readily available. Given the different interpolation types for mesh data i.e. vertex, varying and face-varying, the common interface for SurfaceFactory provides methods to construct Surfaces explicitly for all data types. So for positions, the methods for vertex data must be used to obtain the desired Surface, while for texture coordinates the methods for face-varying are usually required, e.g. Surface  CreateVertexSurface  Index faceIndex  const  Surface  CreateVaryingSurface  Index faceIndex  const  Surface  CreateFaceVaryingSurface  Index faceIndex  const  The Surfaces created by these construction methods may all be distinct as the underlying representations of the Surfaces and the indices of the data that define them will often differ. For example, the position data may require a bicubic patch while the face-varying texture data may be linear or a different type of bicubic patch given the different interpolation rules for face-varying and the possibility of seams. While the internal representations of the Surfaces constructed for different data interpolation types may differ, since they are all constructed as Surfaces, the functionality used to evaluate them is identical. BfrSurface The Surface class encapsulates the piece of limit surface associated with a particular face of the mesh. The term surface is used rather than patch to emphasize that the Surface may itself be a piecewise parametric surface composed of more than one patch potentially even a complex set of patches. Surface is also a class template selected by floating point precision, and so typically declared as BfrSurfacefloat. Just as a simpler type name is likely to be declared when used, the simple name Surface will be used to refer to it here. And where code fragments may be warranted, float will be substituted for the template parameter for clarity. Once created, there are two steps required to evaluate a Surface preparation of associated data points from the mesh the actual calls to evaluation methods using these data points The latter is straight-forward, but the former warrants a little more explanation. The shape of a Surface for a base face is influenced by the set of data points associated with both the vertices of the face and a subset of those in its immediate neighborhood. These control points are identified when the Surface is initialized and are publicly available for inspection if desired. The control points are sufficient to define the Surface if the face and its neighborhood are regular, but any irregularity an extra-ordinary vertex, crease, etc. usually requires additional, intermediate points to be computed from those control points in order to evaluate the Surface efficiently. Having previously avoided use of the term patch in favor of surface, the term patch points is now used to refer to these intermediate points. Patch points always include the control points as a subset and may be followed by points needed for any additional patches required to represent a more complex Surface. While the patch points are assembled in a local array for direct use by the Surface, the control points can either be gathered and accessed locally or indexed from buffers associated with the mesh for other purposes e.g. computing a bounding box of the Surface Once the patch points for a Surface are prepared, they can be passed to the main evaluation methods with the desired parametric coordinates. As previously noted, since the Surface class is a template for floating point precision, evaluation is supported in single or double precision by constructing a Surface for the desired precision. Evaluation methods are overloaded to obtain simply position or including all first or second derivatives. So preparation and evaluation can be achieved with the following  Preparing patch points void PreparePatchPoints  float const  meshPoints , PointDescriptor meshPointDescriptor , float  patchPoints , PointDescriptor patchPointDescriptor  const   Evaluating position and 1st derivatives void Evaluate  float const uv  2 , float const  patchPoints , PointDescriptor patchPointDescriptor , float  P , float  dPdu , float  dPdv  const  The PointDescriptor class here is a simple struct defining the size and stride of the associated array of points. Any use of mesh points, control points or patch points generally requires an accompanying descriptor. Depending on the complexity of the limit surface, this preparation of patch points can be costly -- especially if only evaluating the Surface once or twice. In such cases, it is worth considering evaluating limit stencils, i.e. sets of coefficients that combine the original control vertices of the mesh without requiring the computation of intermediate values. The cost of evaluating stencils is considerably higher than direct evaluation, but that added overhead is often offset by avoiding the use of patch points. Surfaces should be considered a class for transient use as retaining them for longer term usage can reduce their benefits. The relatively high cost of initialization of irregular Surfaces can be a deterrent and often motivates their retention despite increased memory costs. Retaining all Surfaces of a mesh for random sampling is a situation that should be undertaken with caution and will be discussed in more detail later with other advanced topics. Parameterization Each face of a mesh has an implicit local 2D parameterization whose 2D coordinates are used to evaluate the Surface for that face. Bfr adopts the parameterizations defined elsewhere in OpenSubdiv for quadrilateral and triangular patches, for use quadrilateral and triangular faces But the parameterization of a face is also dependent on the subdivision scheme applied to it. Subdivision schemes that divide faces into quads are ultimately represented by quadrilateral patches. So a face that is a quad can be parameterized as a single quad, but other non-quad faces are parameterized as a set of quad sub-faces, i.e. faces resulting from subdivision A triangle subdivided with a quad-based scheme e.g. Catmull-Clark will therefore not have the parameterization of the triangular patch indicated previously, but another defined by its quad sub-faces illustrated above to be described in more detail below. Subdivision schemes that divide faces into triangles are currently restricted to triangles only, so all faces are parameterized as single triangles. If Loop subdivision is extended to non-triangles in future, a parameterization involving triangular sub-faces will be necessary. Note that triangles are often parameterized elsewhere in terms of barycentric coordinates u,v,w where w  1 - u - v . As is the case elsewhere in OpenSubdiv, Bfr considers parametric coordinates as 2D u,v pairs for all purposes. All faces have an implicit 2D local parameterization and all interfaces requiring parametric coordinates consider only the u,v pair. If interaction with some other tool set requiring barycentric coordinates for triangles is necessary, it is left to users to compute the implicit w accordingly. BfrParameterization BfrParameterization is a simple class that fully defines the parameterization for a particular face. An instance of Parameterization is fully defined on construction given the size of a face and the subdivision scheme applied to it where the face size is its number of verticesedges. Since any parameterization of N -sided faces requires N in some form, the face size is stored as a member and made publicly available. Each Surface has the Parameterization of its face assigned internally as part of its construction, and that is used internally by the Surface in many of its methods. The need to deal directly with the explicit details of the Parameterization class is not generally necessary. Often it is sufficient to retrieve the Parameterization from a Surface for use in some other context e.g. passed to BfrTessellation. The enumerated type ParameterizationType currently defines three kinds of parameterizations -- one of which is assigned to each instance on construction according to the properties of the face QUAD Applied to quadrilateral faces with a quad-based subdivision scheme e.g. Catmark or Bilinear. TRI Applied to triangular faces with a triangle-based subdivision scheme e.g. Loop. QUAD_SUBFACES Applied to non-quad faces with a quad-based subdivision scheme -- dividing the face into quadrilateral sub-faces. Parameterizations that involve subdivision into sub-faces, e.g. QUAD_SUBFACES, may warrant some care as they are not continuous. Depending on how they are defined, the sub-faces may be disjoint e.g. Bfr  or overlap in parametric space e.g. Ptex. To help these situations, methods to detect the presence of sub-faces and deal with their local parameterizations are made available. Discontinuous Parameterizations When a face does not have a regular parameterization, the division of the parameterization into sub-faces can create complications -- as noted and addressed elsewhere in OpenSubdiv. BfrParameterization defines a quadrangulated sub-face parameterization differently from the Far and Osd interfaces. For an N -sided face, Far uses a parameterization adopted by Ptex. In this case, all quad sub-faces are parameterized over the unit square and require an additional index of the sub-face to identify them. So Ptex coordinates require three values the index and u,v of the sub-face. To embed sub-face coordinates in a single u,v pair, Bfr tiles the sub-faces in disjoint regions in parameter space. This tiling is similar to the Udim convention for textures, where a UDim on the order of sqrtN is used to preserve accuracy for increasing N  Note also that the edges of each sub-face are of parametric length 0.5, which results in a total parametric length of 1.0 for all base edges. This differs again from Ptex, which parameterizes sub-faces with edge lengths of 1.0, and so can lead to inconsistencies in parametric scale typically with derivatives across edges of the mesh if not careful. As previously mentioned, care may be necessary when dealing with the discontinuities that exist in parameterizations with sub-faces. This is particularly true if evaluating data at sampled locations of the face and needing to evaluate at other locations interpolated from these. Interpolation between parametric locations, e.g. A, B and C, should be avoided when discontinuous. In many cases, dealing directly with coordinates of the sub-faces is unavoidable, e.g. interpolating Ptex coordinates for sampling of textures assigned explicitly to the sub-faces. Methods are provided to convert from Bfr s tiled parameterization to and from other representations that use a local parameterization for each sub-face. Tessellation Once a Surface can be evaluated it can be tessellated. Given a 2D parameterization, a tessellation consists of two parts a set of parametric coordinates sampling the Parameterization a set of faces connecting these coordinates that covers the entire Parameterization Once evaluated, the resulting set of sample points and the faces connecting them effectively define a mesh for that parameterization. For the sake of brevity both here and in the programming interface, the parametric coordinates or sample points are referred to simply as coords or Coords -- avoiding the term points, which is already a heavily overloaded term. Similarly the faces connecting the coords are referred to as facets or Facets -- avoiding the term face to avoid confusion with the base face of the mesh being tessellated. Bfr provides a simple class to support a variety of tessellation patterns for the different Parameterization types and methods for retrieving its associated coords and facets. In many cases the patterns they define are similar to those of GPU hardware tessellation -- which may be more familiar to many -- but they do differ in several ways, as noted below. BfrTessellation In Bfr a Tessellation is a simple class defined by a Parameterization and a given set of tessellation rates and a few additional options. These two elements define a specific tessellation pattern for all faces sharing that Parameterization. An instance of Tessellation can then be inspected to identify all or subsets of its coords or facets. The process of tessellation in other contexts usually generates triangular facets, but that is not the case with Bfr . While producing triangular facets is the default, options are available to have Tessellation include quads in patterns for parameterizations associated with quad-based subdivision schemes. For simple uniform patterns, these produce patterns that are similar in topology to those resulting from subdivision Tessellation of 4- and 5-sided faces of a quad-based scheme using quadrilateral facets left and triangular right The name Tessellation was chosen rather than Tessellator as it is a passive class that simply holds information define its pattern. It doesnt do much other than providing information about the pattern when requested. A few general properties about the pattern are determined and retained on construction, after which an instance is immutable. So it does not maintain any additional state between queries. In order to provide flexibility when dealing with tessellations of adjacent faces, the coords arising from an instance of Tessellation are ordered and are retrievable in ways to help identify points along edges that may be shared between two or more faces. The coords of a Tessellation are generated in concentric rings, beginning with the outer ring and starting with the first vertex Ordering of coords around boundary for quad and tri parameterizations. Methods of the Tessellation class allow the coords associated with specific vertices or edges to be identified, as well as providing the coords for the entire ring around the boundary separately from those of the interior if desired. While the ordering of coords in the interior is not defined and so not to be relied upon, the ordering of the boundary coords is specifically fixed to support the correlation of potentially shared coords between faces. The Tessellation class is completely independent of the Surface class. Tessellation simply takes a Parameterization and tessellation rates and provides the coords and facets that define its pattern. So Tessellation can be used in any other evaluation context where the Parameterizations are appropriate. Tessellation Rates For a particular Parameterization, the various tessellation patterns are determined by one or more tessellation rates. The simplest set of patterns uses a single tessellation rate and is said to be uniform, i.e. all edges and the interior of the face are split to a similar degree Uniform tessellation of a quadrilateral and triangle with rates of 5 and 8. More complex non-uniform patterns allow the edges of the face to be split independently from the interior of the face. Given rates for each edge, a suitable uniform rate for the interior can be either inferred or specified explicitly. These are typically referred to as the outer rates and the inner rate. The single rate specified for a simple uniform tessellation is essentially the specification of a single inner rate while the outer rates for all edges are inferred as the same. Non-uniform tessellation of a quadrilateral, triangle and 5-sided face with various outer and inner rates. In the case of Parameterizations for quads, it is common elsewhere to associate two inner rates with the opposing edges. So two separate inner rates are available for quad parameterizations -- to be specified or otherwise inferred Quad tessellations with differing inner rates with matching left and varying outer rates right. Differences from Hardware Tessellation Since the specifications for hardware tessellation often leave some details of the patterns as implementation dependent, no two hardware implementations are necessarily the same. Typically there may be subtle differences in the non-uniform tessellation patterns along boundaries, and that is to be executed here. Bfr does provide some obvious additional functionality not present in hardware tessellation and vice versa, e.g. Bfr provides the following not supported by hardware tessellation patterns for parameterizations other than quads and tris e.g. N-sided preservation of quad facets of quad-based parameterizations while hardware tessellation provides the following not supported by Bfr  patterns for so-called fractional tessellation non-integer rates The lack of fractional tessellation in Bfr is something that may be addressed in a future release. Where the functionality of Bfr and hardware tessellation overlap, a few other differences are worth noting indexing of edges and their associated outer tessellation rates uniform tessellation patterns for triangles differ significantly For the indexing of edges and rates, when specifying an outer rate associated with an edge, the array index for rate i is expected to correspond to edge i . Bfr follows the convention established elsewhere in OpenSubdiv of labelingindexing edges 0, 1, etc. between vertex pairs 0,1, 1,2, etc. So outer rate 0 corresponds to the edge between vertices 0,1. In contrast, hardware tessellation associates the rate for the edge between vertices 0,1 as outer rate 1 -- its outer rate 0 is between vertices N-1,0. So an offset of 1 is warranted when comparing the two. Outer edge tessellation rates of 1,3,5,7 applied to a quad with Bfr left and GPU tessellation right. For the uniform tessellation of triangles, its well known that the needs of hardware implementation led designers to factor the patterns for triangles to make use of the same hardware necessary for quads. As a result, many edges are introduced into a simple tessellation of a triangle that are not parallel to one of its three edges. Bfr uses patterns more consistent with those resulting from the subdivision of triangles. Only edges parallel to the edges of the triangle are introduced, which creates more uniform facets both edge lengths and area and reduces their number by one third. This can reduce artifacts that sometimes arise with use of the hardware patterns at lower tessellation rates Uniform tessellation of a triangle with Bfr left and GPU tessellation right. These triangular patterns have been referred to as integer spacing for triangular patches in early work on hardware tessellation. But use of these patterns was generally discarded in favor of techniques that split the triangle into three quads -- allowing the hardware solution for quad tessellation to be reused. More on BfrSurfaceFactory The primary function of BfrSurfaceFactory is to identify and construct a representation of the limit surface for a given face of a mesh. It achieves this by inspecting the topology around the given face and constructing a suitable representation encapsulated in a Surface. The regions around a face can be divided into two categories based on their topology those that are regular and those that are not, i.e. those that are irregular. Recalling the illustration from Irregular versus Irregular Features  Patches of regular Surfaces Potential patches of irregular Surfaces The representation of the limit surface for regular regions is trivial -- it is a single parametric patch whose basis is determined by the subdivision scheme e.g. uniform bicubic B-spline for Catmull-Clark. In contrast, the representation of the limit surface for an irregular region cannot be accurately represented so simply. It can be far more complex depending on the features present extra-ordinary vertices, creasing of edges, etc.. It may be as simple as a different kind of parametric patch whose points are derived from those of the mesh, or it may often be a set of patches in a hierarchy resulting from local subdivision.  Bfr intentionally hides the details of these representations to allow future improvement. The cost of determining and assembling the representations of irregular Surfaces is therefore often significant. Some of the performance benefits of the SurfaceFactory are achieved by having it cache the complexities of the irregular surfaces that it encounters. In many common use cases, awareness and management of this caching is not necessary as illustrated by the tutorials. But the thread-safe construction of Surfaces is one area where some awareness is required. Other use cases that share the cache between meshes are also worth exploring as they can further reduce potentially significant costs. BfrSurfaceFactoryCache The SurfaceFactoryCache is the class used by SurfaceFactory to cache the topological information that it can reuse for other similarly irregular faces of the mesh. Though it is a publicly accessible class, the SurfaceFactoryCache has little to no public interface other than construction made available to support more advanced cases covered later and in most cases it can be completely ignored. Typically an instance of SurfaceFactory has an internal SurfaceFactoryCache member which is used by that factory for its lifetime. Since that cache member is mutable -- potentially updated when an irregular Surface is created -- it does need to be thread-safe if the SurfaceFactory is to be used in a threaded context. To accommodate this need, SurfaceFactoryCache is defined as a base class with an accompanying class template to allow the trivial declaration of thread-safe subclasses template  typename MUTEX_TYPE , typename READ_LOCK_GUARD_TYPE , typename WRITE_LOCK_GUARD_TYPE  class SurfaceFactoryCacheThreaded  public SurfaceFactoryCache  ...  For example, a local type for a thread-safe cache using stdshared_mutex from C17 could be simply declared as follows include shared_mutex typedef Bfr  SurfaceFactoryCacheThreaded  std  shared_mutex , std  shared_lock  std  shared_mutex  , std  unique_lock  std  shared_mutex   ThreadSafeCache  Such thread-safe cache types are essential when distributing the work of a single SurfaceFactory across multiple threads. They can be encapsulated in the definitions of subclasses of SurfaceFactory or used to define external cache instances for use with any subclass of SurfaceFactory. Defining a Thread-Safe SurfaceFactory The thread-safety of a SurfaceFactory is purely dependent on the thread-safety of the SurfaceFactoryCache that it uses. With caching disabled, any SurfaceFactory is thread-safe but will be far less efficient in dealing with irregular Surfaces. When a subclass of SurfaceFactory is defined discussed in more detail later, one of its responsibilities is to identify and manage an instance of SurfaceFactoryCache for its internal use. Defining such a subclass is a simple matter of declaring a thread-safe SurfaceFactoryCache type as noted above along with a local member of that type to be used by each instance. Given the widespread use of the FarTopologyRefiner in OpenSubdiv, and the lack of a connected mesh representation in many contexts, a subclass of SurfaceFactory is made available to use a TopologyRefiner as a mesh, i.e. the BfrRefinerSurfaceFactory subclass. Since many OpenSubdiv users may make use of the RefinerSurfaceFactory subclass, and they may have different preferences of threading model, the RefinerSurfaceFactory subclass is similarly defined as a class template to enable threading flexibility. In this case, the template is parameterized by the desired type of SurfaceFactoryCache, which embodies the threading specifications as noted above, i.e. template  class CACHE_TYPE  SurfaceFactoryCache  class RefinerSurfaceFactory  public ...  ...  The default template is the base SurfaceFactoryCache which is not thread-safe, but a simple declaration of a thread-safe cache type is sufficient to declare a similarly thread-safe RefinerSurfaceFactory type include opensubdivbfrsurfaceFactoryCache.h  Declare thread-safe cache type see stdshared_mutex example above typedef Bfr  SurfaceFactoryCacheThreaded  ...  ThreadSafeCache   Declare thread-safe factory type typedef Bfr  RefinerSurfaceFactory  ThreadSafeCache  ThreadSafeFactory  The resulting factory type safely allows the construction of Surfaces and their subsequent evaluation and tessellation to be distributed over multiple threads. Internal versus External SurfaceFactoryCache Typical usage of the SurfaceFactoryCache by the SurfaceFactory is to have the factory create an internal cache member to be used for the lifetime of the factory associated with a mesh. But the data stored in the cache is not in any way dependent on the factory or mesh used to create it. So a cache can potentially be shared by multiple factories. While such sharing is possible -- and the Bfr interfaces intentionally permit it -- any exploration should proceed with caution. Greater public knowledge and control of the cache is ultimately necessary to manage its potentially unbounded memory increase, and support in the public interface is currently limited. A cache stored as a member varialbe and managed exclusively by the factory is said to be internal while one managed exclusively by its client is said to be external. In both cases, the factory deals with retrieving data from or adding data to the cache -- only management of the caches ownership differs, and that ownership is never transferred. A subset of the methods of SurfaceFactoryOptions provide the means of specifying the use of an internal or external cache, or no caching at all  Assign an external cache to override the internal Options  SetExternalCache  SurfaceFactoryCache  cache   Enable or disable caching default is true Options  EnableCaching  bool on  As noted here, specifying an external cache will override use of a factorys internal cache. Disabling caching takes precedence over both, but is generally not practical and exists mainly to aide debugging. The common use of the internal cache is to create a SurfaceFactory and distribute processing of the Surfaces of its faces over multiple threads, or to construct Surfaces for the mesh for any other purpose while the mesh remains in scope. There is no need to deal explicitly with the SurfaceFactoryCache in these cases. Use cases for an external cache are more varied and explicit, including creating a single external cache to process a sequence of meshes on a single thread cache thread-safety not required creating a separate external cache on each thread to process a set of meshes distributed over multiple threads cache thread-safety not required creating a single external cache for multiple meshes distributed over multiple threads cache thread-safety required, and beware of unbounded memory growth here Future extensions to the public interface of SurfaceFactoryCache may be made to support common use cases as their common needs are made clearer. Customizing a BfrSurfaceFactory One of the goals of Bfr is to provide a lightweight interface for the evaluation of Surfaces from any connected mesh representation. In order to do so, the factory needs to gather topological information from that mesh representation. That information is provide to the factory through inheritance a subclass of SurfaceFactory is defined that fulfills all requirements of the factory. It must be made clear that a subclass can only be created from a connected mesh representation, i.e. a representation that includes connectivity or adjacency relationships between its components vertices, faces and edges. Classes for simple containers of mesh topology used for external formats e.g. USD, Alembic, etc. are generally not connected . Many applications construct a connected mesh representation for internal use when loading such mesh data -- using a variety of techniques including half-edges, winged-edges or table-based relationships. There are many choices here that offer a variety of trade-offs depending on usage e.g. fixed vs dynamic topology and so no best solution. Once constructed and available within an application, Bfr strives to take advantage of that representation. As a minimum requirement for supporting a subclass of SurfaceFactory, a connected mesh representation must be able to efficiently identify the incident faces of any given vertex. As noted earlier, when no such representation is available, users can construct a FarTopologyRefiner for their connected mesh and use BfrRefinerSurfaceFactory. There are three requirements of a subclass of SurfaceFactory fulfill the interface required to adapt the connected mesh to the factory provide an internal cache for the factory of the preferred type extend the existing SurfaceFactory interface for the connected mesh type The first of these is the most significant and is the focus here. The second was mentioned previously with the SurfaceFactoryCache and is trivial. The last should also be trivial and is generally optional at minimum the subclass will need a constructor to create an instance of the factory from a given mesh, but anything more is not strictly essential. It is important to note that anyone attempting to write such a subclass must have an intimate understanding of the topological capabilities and limitations of the mesh representation involved. The SurfaceFactory is topologically robust in that it will support meshes with a wide range of degenerate or non-manifold features, but in order to process topology efficiently, a subclass needs to indicate when and where those degeneracies may occur. A simplified implementation of the BfrRefinerSurfaceFactory is provided in the tutorials for illustration purposes. The BfrSurfaceFactoryMeshAdapter Interface The SurfaceFactoryMeshAdapter class defines the interface used to satisfy the topological requirements of the SurfaceFactory. An implementation for a particular mesh class provides the base factory with everything needed to identify the limit surface of a given face from its surrounding topology. The SurfaceFactory actually inherits the SurfaceFactoryMeshAdapter interface but does not implement it -- deferring that to its subclasses -- since separate subclasses of SurfaceFactoryMeshAdapter serve no other purpose. The limit surface for a face is fully defined by the complete set of incident vertices, faces and edges surrounding the face. But it is difficult to accurately and efficiently assemble and represent all of that required information in a single class or query for all possible cases. So the mesh adapter interface provides a suite of methods to allow the factory to gather only what it needs for the Surface required -- which may differ considerably according to whether the Surface is for vertex or face-varying data, linear or non-linear, etc. The virtual methods required can be organized into small groups devoted to particular aspects of construction. A description of the methods and purposes for each group follows, with more details and exact signatures available in the accompanying Doxygen for the SurfaceFactoryMeshAdapter class. Basic Properties of a Face A small set of simple methods indicate whether the SurfaceFactory needs to create a Surface for a face, and if so, how virtual bool isFaceHole  Index faceIndex  const  0  virtual int getFaceSize  Index faceIndex  const  0  These are trivial and self-explanatory. Identifying Indices for an Entire Face If the Surface requested turns out to be linearly interpolated e.g. for varying or linear face-varying data indices for the control point data are all assigned to the face and can be trivially identified virtual int getFaceVertexIndices  Index faceIndex , Index vertexIndices  const  0  virtual int getFaceFVarValueIndices  Index faceIndex , FVarID faceVaryingID , Index faceVaryingIndices  const  0  Since multiple sets of face-varying data with different topology may be assigned to the mesh, an identifier needs to be specified both in the public interface when requesting a Surface and here when the factory assembles it. How a face-varying identifier is interpreted is completely determined by the subclass through the implementation of the methods that require it. Specifying the Neighborhood Around a Vertex When the Surface requested is not linear, the entire neighborhood around the face must be determined. This is achieved by specifying the neighborhoods around each of the vertices of the face, which the factory then assembles. For the neighborhood of each face-vertex, the factory obtains a complete specification in a simple VertexDescriptor class. An instance of VertexDescriptor is provided and populated with the following method virtual int populateFaceVertexDescriptor  Index faceIndex , int faceVertex , VertexDescriptor  vertexDescriptor  const  0  Within this method, the given VertexDescriptor instance is initialized using a small suite of VertexDescriptor methods that specify the following information about the vertex and its neighborhood whether the neighborhood is manifold ordered counter-clockwise whether the vertex is on a boundary the sizes of all or each incident face the sharpness of the vertex the sharpness of edges of incident faces These methods are specified between Initialize and Finalize methods, so an interior vertex of valence 4 with three incident quads and one incident triangle might be specified as follows int vertexValence  4  vertexDescriptor . Initialize  vertexValence  vertexDescriptor . SetManifold  true  vertexDescriptor . SetBoundary  false  vertexDescriptor . SetIncidentFaceSize  0 , 4  vertexDescriptor . SetIncidentFaceSize  1 , 4  vertexDescriptor . SetIncidentFaceSize  2 , 3  vertexDescriptor . SetIncidentFaceSize  3 , 4  vertexDescriptor . Finalize  Specifying the vertex neighborhood as manifold is critical to allowing the factory to inspect the neighborhood efficiently. A manifold vertex has its incident faces and edges ordered in a counter-clockwise orientation and is free of degeneracies. If it is not clear that a vertex is manifold, it should not be set as such or the factorys inspection of associated data will not be correct. Identifying Indices Around a Vertex When the Surface requested is not linear, the indices of control point data for the entire neighborhood of the face are ultimately required, and that entire set is similarly determined by identifying the indices for each of the neighborhoods of the face-vertices virtual int getFaceVertexIncidentFaceVertexIndices  Index faceIndex , int faceVertex , Index vertexIndices  const  0  virtual int getFaceVertexIncidentFaceFVarValueIndices  Index faceIndex , int faceVertex , FVarID faceVaryingID , Index faceVaryingIndices  const  0  As was the case with the methods retrieving indices for the entire face, one exists for identifying indices vertex data while another exists to identify indices for a specified set of face-varying data. Customizing the Subclass Interface Once the topological requirements of a subclass have been satisfied for its mesh representation, minor customizations of the inherited interface of SurfaceFactory may be useful. Consider a class called Mesh and its associated subclass of SurfaceFactory called MeshSurfaceFactory. At minimum, a constructor of MeshSurfaceFactory is necessary to construct an instance for a particular instance of mesh. This is typically achieved as follows MeshSurfaceFactory  Mesh const  mesh , Options const  options  In addition to the Mesh instance, such a constructor passes a set of Options i.e. SurfaceFactoryOptions to the base SurfaceFactory. Any additional arguments are possible here, e.g. perhaps only a single face-varying UV set is supported, and that might be specified by identifying it on construction. Given that mesh representations often have their own associated classes that internally contain the actual data, it may be useful to provide a few other conveniences to simplify working with a Mesh. For example, if mesh data is stored in a class called MeshPrimvar, a method to construct a Surface from a given MeshPrimvar may be useful, e.g. bool InitPrimvarSurface  int faceIndex , MeshPrimvar const  meshPrimvar , Surface  float   surface  which would then determine the nature of the MeshPrimvar data interpolated as vertex, varying or face-varying and act accordingly. It may also be worth simplifying the template complexity here if only one precision is ever required. Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n-        \"loc\": \"far_tutorial_2_2.html\"\n+        \"loc\": \"bfr_overview.html\"\n     }, {\n-        \"title\": \"Porting Guide 2.x to 3.0\",\n-        \"text\": \"Porting Guide 2.x to 3.0 Porting Guide 2.x to 3.0 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE Porting Guide 2.x to 3.0 Source Code Organization Hbr Layer Translation Subdivision Schemes and Options in Sdc Specifying Face Varying Topology and Options Far Layer Translation Ordering of Refined Vertices Osd Layer Translation Controller Objects ComputeContext, DrawContext EvalLimitContext OsdMesh OsdKernelBatch OsdVertex Feature Adaptive Shader Changes End Cap Strategies Changes to Subdivision Build Support for Combining 2.x and 3.0 Porting Guide 2.x to 3.0 This document is a high-level description of how to port exiting OpenSubdiv 2.x code to use OpenSubdiv 3.0. NOTE If your questions are not answered here, please contact us on the OpenSubdiv forum and we will be happy to help Source Code Organization Given the scale of functional changes that were being made to the public interface, we took the opportunity in 3.0 to update the coding style and organization -- most notably making use of namespaces for each library. Subdirectory Namespace Relevance hbr NA Historical, no longer used sdc Sdc New, low-level, public options, constants, etc. vtr Vtr New, internal use, topology representation far Far Revised, similar functionality with new API osd Osd Revised, similar functionality with new API Hbr Layer Translation Client mesh topology is now translated into an instance of FarTopologyRefiner instead of HbrMesh. OpenSubdiv 2.x OpenSubdiv 3.0 HbrMeshVTX_TYPE FarTopologyRefiner The FarTopologyRefiner is now the core representation of topology from which all other major classes in Far and Osd are constructed. It was designed to support efficient refinement uniform or sparse of a base mesh of arbitrary topology no manifold restrictions. Once constructed it can be directly refined to meet some need, or passed to other contexts that will refine it to meet their needs. In contrast to directly assembling an HbrMesh, the TopologyRefiner, like other classes in Far, requires a Factory class for its construction. One of the early goals of these factories was to allow a client to convert their existing boundary representation -- with its full topological traversal abilities -- directly into the TopologyRefiners representation. While this is now possible, this also represents the most complex construction process and is only recommended for usage where this conversion process is critical. Details on how to construct a TopologyRefiner can be found in the Far overview documentation. Additionally, documentation for FarTopologyRefinerFactoryMESH outlines the requirements, and Far tutorial 3.1 tutorialsfartutorial_3_1 provides an example of a factory for directly converting HbrMeshes to TopologyRefiners. Its worth a reminder here that FarTopologyRefiner contains only topological information which does include sharpness, since that is considered relating to subdivision topology and not the positions or other data associated with a mesh. While HbrMeshT required some definition of a vertex type T and dimensions of face-varying data, TopologyRefiner is more clearly separated from the data. So the construction of the TopologyRefiner does not involve data specification at all. Subdivision Schemes and Options in Sdc The creation of a new TopologyRefiner requires specification of a subdivision scheme and a set of options that are applicable to all schemes. With HbrMesh, the scheme was specified by declaring a static instance of a specific subclass of a subdivision object, and the options were specified with a number of methods on the different classes. Such general information about the schemes has now been encapsulated in the Sdc layer for use throughout OpenSubdiv. The subdivision scheme is now a simple enumerated type SdcSchemeType and the entire set of options that can be applied to a scheme is encapsulated in a single simple struct of flags and enumerated types SdcOptions. OpenSubdiv 2.x OpenSubdiv 3.0 HbrMeshTSetInterpolateBoundaryMethod SdcOptionsSetVtxBoundaryInterpolation HbrMeshTSetFVarInterpolateBoundaryMethod SdcOptionsSetFVarLinearInterpolation HbrSubdivisionTSetCreaseSubdivisionMethod SdcOptionsSetCreasingMethod Specifying Face Varying Topology and Options Both the way in which face varying data is associated with a mesh and the options used to control its interpolation have changed. The documentation on Compatibility with OpenSubdiv 2.x details the equivalence of interpolation options between Hbr and the new SdcOptionsFVarLinearInterpolation enum, while the section on Face Varying Interpolation illustrates their effects. Face varying data is now specified by index rather than by value, or as often stated, it is specified topologically. Just as vertices for faces are specified by indices into a potential buffer of positions, face varying values are specified by indices into a potential buffer of values. Both vertices and face varying values frequently referred to as FVarValues in the API are assigned and associated with the corners of all faces. In many cases this will simplify representation as many common geometry container formats such as Obj or Alembic specify texture coordinates the same way. For other cases, where a value per face-corner is provided with no indication of which values incident each vertex should be considered shared, it will be necessary to determine shared indices for values at each vertex if any non-linear interpolation is desired. Far Layer Translation While TopologyRefiner was introduced into Far as the new intermediate topology representation, several other changes were made to classes in Far to provide more modular building blocks for use by the Osd layer or directly. OpenSubdiv 2.x OpenSubdiv 3.0 FarMeshU NA, no longer needed FarSubdivisionTables FarStencilTable FarPatchTables FarPatchTable Ordering of Refined Vertices The FarMesh was previously responsible for refining an HbrMesh -- generating new vertices and faces in successive levels of refinement in the FarSubdivisionTables. Vertices were grouped and reordered from the native ordering of HbrMesh so that vertices requiring similar processing were consecutive. Such grouping alleviated most of the idiosyncrasies of HbrMeshs native ordering but not all. FarToplogyRefiner is inherently a collection of refinement levels, and within each refined level so excluding the base level, all components are still grouped for the same reasons. There are two issues here though the ordering of these groups has changed though an option exists to preserve it the ordering of components within these groups is not guaranteed to have been preserved Vertices in a refined level are grouped according to the type of component in the parent level from which they originated, i.e. some vertices originate from the center of a face face-vertices, some from an edge edge-vertices and some from a vertex vertex-vertices. Note that there is a conflict in terminology here -- face-vertices and edge-vertices most often refer to vertices incident a face or edge -- but for the sake of this discussion, we use them to refer to the component from which a child vertex originates. The following table shows the ordering of these groups in 2.x and the two choices available in 3.0. The option is the orderVerticesFromFacesFirst flag that can be set in the Option structs passed to the uniform and adaptive refinement methods of TopologyRefiner Version and option Vertex group ordering 2.x face-vertices, edge-vertices, vertex-vertices 3.0 default vertex-vertices, face-vertices, edge-vertices 3.0 orderVerticesFromFacesFirst  true face-vertices, edge-vertices, vertex-vertices The decision to change the default ordering was based on common feedback the rationale was to allow a trivial mapping from vertices in the cage to their descendants at all refinement levels. While the grouping is fundamental to the refinement process, the ordering of the groups is internally flexible, and the full set of possible orderings can be made publicly available in future if there is demand for such flexibility. The ordering of vertices within these groups was never clearly defined given the way that HbrMesh applied its refinement. For example, for the face-vertices in a level, it was never clear which face-vertices would be first as it depended on the order in which HbrMesh traversed the parent faces and generated them. Given one face, HbrMesh would often visit neighboring faces first before moving to the next intended face. The ordering with FarTopologyRefiner is much clearer and predictable. Using the face-vertices as an example, the order of the face-vertices in level N1 is identical to the order of the parent faces in level N from which they originated. So if we have face-vertices Vi , Vj and Vk at some level, originating from faces Fi , Fj and Fk in the previous level, they will be ordered in increasing order of i , j and k . For uniform refinement the ordering of face vertices Vi will therefore exactly match the ordering of the parent faces Fi . For adaptive or otherwise sparse refinement, the subset of Vi will be ordered similarly, just with components missing from those not refined. The same is true of all vertices, i.e. edge-vertices and vertex-vertices, and also for other components in refined levels, i.e. the child faces and edges. For child faces and edges, more than one will originate from the same parent face or edge. In addition to the overall ordering based on the parent faces or edges, another ordering is imposed on multiple children originating from the same face or edge. They will be ordered based on the corner or end-vertex with which they are associated. In the case of refined faces, another way to view the ordering is to consider the way that faces are originally defined -- by specifying the set of vertices for the corners of each face, often aggregated into a single large array. The ordering of the set of refined faces for each level will correspond directly to such an array of vertices per face in the previous level. Osd Layer Translation Two big changes in the 3.0 API have allowed the Osd layer to be significantly simpler, the first is the move to stencil tables from subdivision tables and the second is shader simplification. With this refactoring, the focus has been to use more meaningful names and to make the data contained within an object more apparent. Controller Objects The API-specific ComputeController has been replaced with the Evaluator . It reflects the fact that stencil compute batches are significantly simpler than subdivision table compute batches. The name Evaluator was chosen with the hope that is more meaningful than the generic ComputeController moniker the Evaluator evaluates stencil and patch tables. In the 2.x code base, subdiv level buffers were always required to be allocated contiguously, however in 3.0 with the shift to stencil tables, this strict allocation scheme is no longer required. As a result, the EvalStencils and EvalPatches methods now accept both a source and a destination descriptor. OpenSubdiv 2.x OpenSubdiv 3.0 ComputeControllerRefine Osd...EvaluatorEvalStencils ComputeControllerSynchronize Osd...EvaluatorSynchronize EvalStencilsControllerUpdateValues Osd...EvaluatorEvalStencils EvalStencilsControllerUpdateDerivs Osd...EvaluatorEvalStencils EvalLimitControllerEvalLimitSample Osd...EvaluatorEvalPatches Also note that OsdVertexDescriptor has been renamed, however its data members and semantic purpose remains the same OpenSubdiv 2.x OpenSubdiv 3.0 OsdVertexBufferDescriptor OsdBufferDescriptor ComputeContext, DrawContext ComputeContext and DrawContext have been replaced with API-specific StencilTable and PatchTable objects, for example OsdGLStencilTableSSBO. OpenSubdiv 2.x OpenSubdiv 3.0 ComputeContext Osd...StencilTable e.g. GLStencilTableTBO EvalStencilsContext Osd...StencilTable DrawContext Osd...PatchTable e.g. GLPatchTable EvalLimitContext The data stored in EvalLimitContext has been merged into the Evaluator class as well. EvalCoords have been moved into their own type, OsdPatchCoords. The primary change here is that the PTex face ID is no longer part of the data structure, rather the client can use a FarPatchMap to convert from PTex face ID to a FarPatchTablePatchHandle. OpenSubdiv 2.x OpenSubdiv 3.0 EvalLimitContext PatchTable EvalLimitContextEvalCoords OsdPatchCoords types.h OsdMesh While not strictly required, OsdMesh is still supported in 3.0 as convenience API for allocating buffers. OsdMesh serves as a simple way to allocate all required data, in the location required by the API for example, GPU buffers for OpenGL. OsdKernelBatch No translation, it is no longer part of the API. OsdVertex No translation, it is no longer part of the API. Feature Adaptive Shader Changes In 3.0, the feature adaptive screen-space tessellation shaders have been dramatically simplified, and the client-facing API has changed dramatically as well. The primary shift is to reduce the total number of shader combinations, and as a result, some of the complexity management mechanisms are no longer necessary. In the discussion below, some key changes are highlighted, but deep integrations may require additional discussion please feel free to send follow up questions to the OpenSubdiv google group. The number of feature adaptive shaders has been reduced from N to exactly 1 or 2, depending on how end-caps are handled. Osd layer no longer compiles shaders, rather it returns shader source for the client to compile. This source is obtained via OsdGLSLHLSLPatchShaderSource. The API exposed in shaders to access patch-based data has been consolidated and formalized, see osdglslPatchCommon.glsl and osdhlslPatchCommon.hlsl for details. Patches are no longer rotated and transition patches have been eliminated, simplifying PatchDescriptor to a 4 bits. Additionally, FarPatchTablesDescriptor has been moved into its own class in the Far namespace. The following table outlines the API translation between 2.x and 3.0 OpenSubdiv 2.x OpenSubdiv 3.0 OsdDrawContextPatchDescriptor NA, no longer needed. OsdDrawContextPatchArray OSdPatchArray types.h FarPatchTablesPatchDescriptor FarPatchDescriptor patchDescriptor.h FarPatchTablesPatchArray made private. End Cap Strategies By default, OpenSubdiv uses Gregory patches to approximate the patches around extraordinary vertices at the maximum isolation level, this process is referred to as end-capping. If ENDCAP_BSPLINE_BASIS is specified to PatchTableFactoryOptions, BSpline patches are used, which gives less accuracy, but it makes possible to render an entire mesh in a single draw call. Both patches require additional control points that are not part of the mesh, we refer to these as local points. In 3.0, the local points of those patches are computed by applying a stencil table to refined vertices to construct a new stencil table for the local points. Since this new stencil table is topologically compatible with the primary stencil table for refinement, it is convenient and efficient to splice those stencil tables together. This splicing can be done in the following way FarStencilTable const refineStencils  FarStencilTableFactoryCreatetopologyRefiner FarPatchTable cosnt patchTable  FarPatchTableFactoryCreatetopologyRefiner FarStencilTable const localPointStencils  patchTable-GetLocalPointStencilTable FarStencilTable const splicedStencils  FarStencilTableFactoryAppendLocalPointStencilTablestopologyRefiner, refineStencils, localPointStencils NOTE Once the spliced stencil table is created, the refined stencils can be released, but the local point stencils are owned by patchTable, it should not be released. OpenSubdiv 3.0 also supports 2.x style Gregory patches, if ENDCAP_LEGACY_GREGORY is specified to PatchTableFactoryOptions. In this case, such an extra stencil splicing isnt needed, however clients must still bind additional buffers VertexValence buffer and QuadOffsets buffer. See OsdGLLegacyGregoryPatchTable for additional details. Changes to Subdivision The refactoring of OpenSubdiv 3.0 data representations presented a unique opportunity to revisit some corners of the subdivision specification and remove or update some legacy features -- none of which was taken lightly. More details are provided in Subdivision Compatibility , while the following offers a quick overview All face-varying interpolation options have been combined into a single enum. Vertex interpolation options have been renamed or removed The naming of the standard creasing method has changed from Normal to Uniform . Unused legacy modes of the smoothtriangle option have been removed. The averaging of Chaikin creasing with infinitely sharp edges has changed. Support for Hierarchical Edits has been removed. Build Support for Combining 2.x and 3.0 Running OpenSubdiv 2.0 and 3.0 in a single process is supported, however some special care must be taken to avoid namespace collisions, both in terms of run-time symbols avoid using OpenSubdivOsd, for example and in terms of build-time search paths. To support both OpenSubdiv 2.0 and 3.0 in your build environment, you can prefix the header install directory of OpenSubdiv 3.0. Do this using the build flag CMAKE_INCDIR_BASE when configuring cmake i.e. -DCMAKE_INCDIR_BASEincludeopensubdiv3 and then including files from opensubdiv3... in client code. Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"title\": \"Code Examples\",\n+        \"text\": \"Code Examples Code Examples 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE Standalone Viewers OpenSubdiv builds a number of standalone viewers that demonstrate various aspects of the software. OpenGL examples glViewer glFVarViewer glEvalLimit glStencilViewer glPtexViewer glPaintTest glShareTopology DirectX examples dxViewer dxPtexViewer Metal examples mtlViewer mtlPtexViewer Common Command Line Options While the following command line options are common, not all examples support all -- in some cases, certain options are not applicable. -f  launches the application in full-screen mode if supported -yup  set initial view with Y-axis up Z-up is the default -u  apply uniform subdivision to all meshes -a  apply adaptive subdivision to create patches for the limit surface -l depth  level of uniform or adaptive refinement to apply -c count  number of repetitions of the animation loop when supported default of 0 is infinite -anim  interpret a given set of Obj files as an animated sequence rather than a set of distinct meshes -catmark  apply the Catmark scheme to all meshes in given Obj files default -loop  apply the Loop scheme to all meshes in given Obj files -bilinear  apply the Bilinear scheme to all meshes in given Obj files objfiles  a set of one or more meshes in Obj format requiring a .obj extension that may be distinct meshes or animated versions of a single mesh Common Keyboard Controls Left mouse button drag  orbit camera Middle mouse button drag  pan camera Right mouse button  dolly camera n, p  nextprev model 1, 2, 3, ..., 9, 0  specify adaptive isolation or uniform refinement level , -  increase  decrease tessellation Tab  toggle full-screen Esc  turn on  off the HUD w  switch display mode q  quit Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n-        \"loc\": \"porting.html\"\n+        \"loc\": \"code_examples.html\"\n     }, {\n-        \"title\": \"Modeling Tips\",\n-        \"text\": \"Modeling Tips Modeling Tips 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE Topology Use Fewer Spans Avoid High Valence vertices Edge-Loop Transitions Practical Topology Primer Triangles and N-Gons Semi-Sharp Creases Use crease sets Additional Resources The following sections describe common techniques specific to modeling with subdivision surfaces. Note The following information contains techniques specific to the Catmull-Clark subdivision scheme. Some elements need to be adjusted for Loop surfaces. Topology Well-constructed subdivision meshes have several important properties They consist primarily of regular faces quads for Catmull-Clark, tris for Loop They contain few extraordinary vertices They efficiently describe the intended shape They are topologically manifold Use Fewer Spans While polygon models need to use a large number of spans to approximate smooth curved surfaces, subdivision models require significantly fewer control points. In most situations, 6 spans are enough to create accurate circular shapes, and 4 is often enough to approximate background objects. Avoid High Valence vertices A high valence vertex is a vertex connected to more than 4 adjacent edges. High valence vertices cause several problems when subdivided The Catmull-Clark scheme can produce wavy surfaces when a revolution vertex is surrounded by triangles see here  High valence vertices incur fairly large performance hits Currently, OpenSubdiv has a hard constraint imposed by GPU shaders on the maximum valence of a vertex 27 on current hardware Instead, here are some topological strategies to cap revolution shapes Note that all these cylinders use only quad faces, and all the vertices in the caps have a valence of 4 except the bottom left example Edge-Loop Transitions It is often necessary to vary the density of control vertices over the surface mesh areas around the fingers of a hand require more CVs than the comparatively simpler region around the palm. It is important to handle the topology around these transitions efficiently. One strategy is to use extraordinary vertices, such as this example, using a valence 5 vertex to expand 3 edge loops into 5. Practical Topology Primer Some real-world examples showing how to produce detailed shapes with sparse topology, few extraordinary vertices, and no high-valence revolution poles. Triangles and N-Gons Used sparsely, non-quads can be very useful to gather 3 or more diverging edge-loops. These are often encountered in highly deforming areas with curvature saddle-points ex arm-torso connection. The strategic placement of a pentagon in one of these critical spots ensures that the surface remains smooth, while allowing for complex topology to flow around. Semi-Sharp Creases Semi-sharp creases can be a very powerful tool for hard-surface modeling. Both edges and vertices can be tagged with a sharpness value. Crease sharpness values range from 0 smooth to 10 infinitely sharp It is generally cheaper to use creases whenever possible, instead of adding extra edgesedge-loops. However... Creases introduce extra computation costs that are proportional to the sharpness value. So... Sharpness values above 5 should rarely be needed. The following sections introduce some techniques to best leverage them. Use crease sets Complex hard-surface models giant robots, vehicles, buildings... are likely to tag large number of edges  it is extremely useful to organize these edgesedge loops into logical sets with descriptive names. Edges or vertices in a crease set group all share the same sharpness value. If you are modeling with Maya, the CreaseSetEditor implements this type of workflow. Additionally, for debugging purposes, it is often very helpful if the name of a set contains the sharpness value ex topDeck_2. Besides authoring convenience, one of the benefits of having many edge-loops share identical sharpness values is that it enables very powerful performance optimizations within the feature adaptive algorithm faster renders  less memory. Additional Resources An excellent short tutorial from the Guerrilla CG Project that illustrates many of the common pitfalls of subdivision modeling, and the strategies to overcome them Ivo Kos, Modelling Technical Director at Pixar Animation Studios, shows some of the modeling techniques he uses when modeling props and architecture sets for feature films. Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"title\": \"far_tutorial_1_2.cpp\",\n+        \"text\": \"far_tutorial_1_2.cpp far_tutorial_1_2.cpp 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE httpsgithub.comPixarAnimationStudiosOpenSubdivblobreleasetutorialsfartutorial_1_2far_tutorial_1_2.cpp ------------------------------------------------------------------------------  Tutorial description   This tutorial illustrates two different styles of defining classes for  interpolating primvar data with the template methods in Far. The most  common usage involves data of a fixed size, so the focus here is on an  alternative supporting variable length data.  include opensubdivfartopologyDescriptor.h include opensubdivfarprimvarRefiner.h include cstdio using namespace OpenSubdiv    Vertex data containers for interpolation  - Coord3 is fixed to support 3 floats  - Coord2 is fixed to support 2 floats  - CoordBuffer can support a specified number of floats  struct Coord3  Coord3    Coord3  float x , float y , float z   _xyz  0   x , _xyz  1   y , _xyz  2   z   void Clear   _xyz  0   _xyz  1   _xyz  2   0.0f   void AddWithWeight  Coord3 const  src , float weight   _xyz  0   weight  src . _xyz  0  _xyz  1   weight  src . _xyz  1  _xyz  2   weight  src . _xyz  2   float const  Coords  const  return  _xyz  0   private  float _xyz  3   struct Coord2  Coord2    Coord2  float u , float v   _uv  0   u , _uv  1   v   void Clear   _uv  0   _uv  1   0.0f   void AddWithWeight  Coord2 const  src , float weight   _uv  0   weight  src . _uv  0  _uv  1   weight  src . _uv  1   float const  Coords  const  return  _uv  0   private  float _uv  2   struct CoordBuffer    The head of an external buffer and stride is specified on construction  CoordBuffer  float  data , int size   _data  data , _size  size    CoordBuffer   _data  0 , _size  0    void Clear   for  int i  0  i  _size   i   _data  i   0.0f    void AddWithWeight  CoordBuffer const  src , float weight   assert  src . _size  _size  for  int i  0  i  _size   i   _data  i   weight  src . _data  i    float const  Coords  const  return _data     Defining  to return a location elsewhere in the buffer is the key  requirement to supporting interpolatible data of varying size  CoordBuffer operator  int index  const  return CoordBuffer  _data  index  _size , _size   private  float  _data  int _size     Global cube geometry from catmark_cube.h   Topology static int g_nverts  8  static int g_nfaces  6  static int g_vertsperface  6    4 , 4 , 4 , 4 , 4 , 4  static int g_vertIndices  24    0 , 1 , 3 , 2 , 2 , 3 , 5 , 4 , 4 , 5 , 7 , 6 , 6 , 7 , 1 , 0 , 1 , 7 , 5 , 3 , 6 , 0 , 2 , 4   Primvar data static float g_verts  8  3    0.0f , 0.0f , 1.0f ,  1.0f , 0.0f , 1.0f ,  0.0f , 1.0f , 1.0f ,  1.0f , 1.0f , 1.0f ,  0.0f , 1.0f , 0.0f ,  1.0f , 1.0f , 0.0f ,  0.0f , 0.0f , 0.0f ,  1.0f , 0.0f , 0.0f    Creates FarTopologyRefiner from raw geometry above see tutorial_1_1 for  more details  static Far  TopologyRefiner  createFarTopologyRefiner   typedef Far  TopologyDescriptor Descriptor  Sdc  SchemeType type  OpenSubdiv  Sdc  SCHEME_CATMARK  Sdc  Options options  options . SetVtxBoundaryInterpolation  Sdc  Options  VTX_BOUNDARY_EDGE_ONLY  Descriptor desc  desc . numVertices  g_nverts  desc . numFaces  g_nfaces  desc . numVertsPerFace  g_vertsperface  desc . vertIndicesPerFace  g_vertIndices   Instantiate a FarTopologyRefiner from the descriptor Far  TopologyRefiner  refiner  Far  TopologyRefinerFactory  Descriptor  Create  desc , Far  TopologyRefinerFactory  Descriptor  Options  type , options  return refiner     Overview of main  - create a FarTopologyRefiner and uniformly refine it  - allocate separate and combined data buffers for vertex positions and UVs  - populate all refined data buffers and compare results  - write the result in Obj format   Disable warnings for exact floating point comparisons ifdef __INTEL_COMPILER pragma warning disable 1572 endif int main  int , char     Instantiate a FarTopologyRefiner from the global geometry Far  TopologyRefiner  refiner  createFarTopologyRefiner   Uniformly refine the topology up to maxlevel int maxlevel  2  refiner - RefineUniform  Far  TopologyRefiner  UniformOptions  maxlevel   Allocate and populate data buffers for vertex primvar data -- positions and  UVs. We assign UV coordiantes by simply projectingassigning XY values.  The position and UV buffers use their associated data types, while the  combined buffer uses 5 floats per vertex.  int numBaseVertices  g_nverts  int numTotalVertices  refiner - GetNumVerticesTotal  std  vector  Coord3  posData  numTotalVertices  std  vector  Coord2  uvData  numTotalVertices  int combinedStride  3  2  std  vector  float  combinedData  numTotalVertices  combinedStride  for  int i  0  i  numBaseVertices   i   posData  i   Coord3  g_verts  i  0 , g_verts  i  1 , g_verts  i  2  uvData  i   Coord2  g_verts  i  0 , g_verts  i  1  float  coordCombined   combinedData  i  combinedStride  coordCombined  0   g_verts  i  0  coordCombined  1   g_verts  i  1  coordCombined  2   g_verts  i  2  coordCombined  3   g_verts  i  0  coordCombined  4   g_verts  i  1    Interpolate vertex primvar data Far  PrimvarRefiner primvarRefiner   refiner  Coord3  posSrc   posData  0  Coord2  uvSrc   uvData  0  CoordBuffer combinedSrc   combinedData  0 , combinedStride  for  int level  1  level  maxlevel   level   int numLevelVerts  refiner - GetLevel  level -1 . GetNumVertices  Coord3  posDst  posSrc  numLevelVerts  Coord2  uvDst  uvSrc  numLevelVerts  CoordBuffer combinedDst  combinedSrc  numLevelVerts  primvarRefiner . Interpolate  level , posSrc , posDst  primvarRefiner . Interpolate  level , uvSrc , uvDst  primvarRefiner . Interpolate  level , combinedSrc , combinedDst  posSrc  posDst  uvSrc  uvDst  combinedSrc  combinedDst    Verify that the combined coords match the separate results for  int i  numBaseVertices  i  numTotalVertices   i   float const  posCoords  posData  i . Coords  float const  uvCoords  uvData  i . Coords  float const  combCoords   combinedData  combinedStride  i  assert  combCoords  0   posCoords  0  assert  combCoords  1   posCoords  1  assert  combCoords  2   posCoords  2  assert  combCoords  3   uvCoords  0  assert  combCoords  4   uvCoords  1     Output OBJ of the highest level refined  Far  TopologyLevel const  refLastLevel  refiner - GetLevel  maxlevel  int firstOfLastVerts  numTotalVertices - refLastLevel . GetNumVertices   Print vertex positions printf   Vertices n   for  int vert  firstOfLastVerts  vert  numTotalVertices   vert   float const  pos   combinedData  vert  combinedStride  printf  v f f f n  , pos  0 , pos  1 , pos  2   printf   UV coordinates n   for  int vert  firstOfLastVerts  vert  numTotalVertices   vert   float const  uv   combinedData  vert  combinedStride   3  printf  vt f f n  , uv  0 , uv  1    Print faces int numFaces  refLastLevel . GetNumFaces  printf   Faces n   for  int face  0  face  numFaces   face   Far  ConstIndexArray fverts  refLastLevel . GetFaceVertices  face  printf  f   for  int fvert  0  fvert  fverts . size   fvert   int objIndex  1  fverts  fvert   OBJ uses 1-based arrays... printf  dd  , objIndex , objIndex   printf   n    delete refiner  return EXIT_SUCCESS   Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n-        \"loc\": \"mod_notes.html\"\n+        \"loc\": \"far_tutorial_1_2.html\"\n     }, {\n-        \"title\": \"bfr_tutorial_3_2.cpp\",\n-        \"text\": \"bfr_tutorial_3_2.cpp bfr_tutorial_3_2.cpp 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE httpsgithub.comPixarAnimationStudiosOpenSubdivblobreleasetutorialsbfrtutorial_3_2bfr_tutorial_3_2.cpp ------------------------------------------------------------------------------  Tutorial description   This tutorial is a variation of tutorials showing simple uniform  tessellation. Rather than constructing and evaluating a Surface at  a time, this tutorial shows how Surfaces can be created and saved  for repeated use.   A simple SurfaceCache class is created that creates and stores the  Surface for each face, along with the patch points associated with  it. The main tessellation function remains essentially the same,  but here it access the Surfaces from the SurfaceCache rather than  computing them locally.   Note that while this example illustrated the retention of all  Surfaces for a mesh, this behavior is not recommended. It does not  scale well for large meshes and undermines the memory savings that  transient use of Surfaces is designed to achieve. Rather than  storing Surfaces for all faces, maintaining a priority queue for a  fixed number may be a reasonable compromise.  include opensubdivfartopologyRefiner.h include opensubdivbfrrefinerSurfaceFactory.h include opensubdivbfrsurface.h include opensubdivbfrtessellation.h include vector include memory include string include cstring include cstdio  Local headers with support for this tutorial in namespace tutorial include .meshLoader.h include .objWriter.h using namespace OpenSubdiv    Simple command line arguments to provide input and run-time options  class Args  public  std  string inputObjFile  std  string outputObjFile  Sdc  SchemeType schemeType  int tessUniformRate  bool tessQuadsFlag  public  Args  int argc , char  argv   inputObjFile , outputObjFile , schemeType  Sdc  SCHEME_CATMARK , tessUniformRate  5 , tessQuadsFlag  false   for  int i  1  i  argc   i   if  strstr  argv  i , .obj   if  inputObjFile . empty   inputObjFile  std  string  argv  i   else  fprintf  stderr , Warning Extra Obj file s ignored n  , argv  i    else if   strcmp  argv  i , -o   if   i  argc  outputObjFile  std  string  argv  i   else if   strcmp  argv  i , -bilinear   schemeType  Sdc  SCHEME_BILINEAR   else if   strcmp  argv  i , -catmark   schemeType  Sdc  SCHEME_CATMARK   else if   strcmp  argv  i , -loop   schemeType  Sdc  SCHEME_LOOP   else if   strcmp  argv  i , -res   if   i  argc  tessUniformRate  atoi  argv  i   else if   strcmp  argv  i , -quads   tessQuadsFlag  true   else  fprintf  stderr , Warning Unrecognized argument s ignored n  , argv  i     private  Args       This simple class creates and dispenses Surfaces for all faces of  a mesh. It consists primarily of an array of simple structs entries  for each face and a single array of patch points for all Surfaces  created.   There are many ways to create such a cache depending on requirements.  This is a simple example, but the interface presents some options that  are worth considering. A SurfaceCache is constructed here given the  following   - a reference to the SurfaceFactory  - the cache could just as easily take a reference to the mesh  and construct the SurfaceFactory internally   - the position data for the mesh  - this is needed to compute patch points for the Surfaces  - if caching UVs or any other primvar, other data needs to be  provided -- along with the interpolation type for that data  vertex, face-varying, etc.   - option to cache patch points  - the cache could store the Surfaces only or also include  their patch points  - storing patch points takes more memory but will eliminate  any preparation time for evaluation of the Surface   - option to cache all surfaces  - the benefits to caching simple linear or regular surfaces  are minimal -- and may even be detrimental  - so only caching non-linear irregular surfaces is an option  worth considering   The SurfaceCache implementation here provides the options noted above.  But for simplicity, the actual usage of the SurfaceCache does not deal  with the permutations of additional work that is necessary when the  Surfaces or their patch points are not cached.  class SurfaceCache  public  typedef Bfr  Surface  float  Surface  typedef Bfr  RefinerSurfaceFactory  SurfaceFactory  public  SurfaceCache  SurfaceFactory const  surfaceFactory , std  vector  float  const  meshPoints , bool cachePatchPoints  true , bool cacheAllSurfaces  true  SurfaceCache   delete   SurfaceCache   default    Public methods to retrieved cached Surfaces and their pre-computed  patch points  bool FaceHasLimitSurface  int face   return _entries  face . hasLimit   Surface const  GetSurface  int face   return _entries  face . surface . get  float const  GetPatchPoints  int face   return getPatchPoints  face   private   Simple struct to keep track of Surface and more for each face struct FaceEntry  FaceEntry   surface , hasLimit  false , pointOffset  -1    std  unique_ptr  Surface const  surface  bool hasLimit  int pointOffset    Non-const version to be used internally to aide assignment float  getPatchPoints  int face   return  _entries  face . surface   _points . empty    _points . data   _entries  face . pointOffset  3   0   private  std  vector  FaceEntry  _entries  std  vector  float  _points   SurfaceCache  SurfaceCache  SurfaceFactory const  surfaceFactory , std  vector  float  const  meshPoints , bool cachePatchPoints , bool cacheAllSurfaces   int numFaces  surfaceFactory . GetNumFaces  _entries . resize  numFaces  int numPointsInCache  0  for  int face  0  face  numFaces   face   Surface  s  surfaceFactory . CreateVertexSurface  float   face  if  s   FaceEntry  entry  _entries  face  entry . hasLimit  true  if  cacheAllSurfaces    s - IsRegular    s - IsLinear   entry . surface . reset  s  entry . pointOffset  numPointsInCache  numPointsInCache  s - GetNumPatchPoints   else  delete s     if  cachePatchPoints   _points . resize  numPointsInCache  3  for  int face  0  face  numFaces   face   float  patchPoints  getPatchPoints  face  if  patchPoints   GetSurface  face  - PreparePatchPoints  meshPoints . data , 3 , patchPoints , 3        The main tessellation function given a mesh and vertex positions,  tessellate each face -- writing results in Obj format.  void tessellateToObj  Far  TopologyRefiner const  meshTopology , std  vector  float  const  meshVertexPositions , Args const  options     Use simpler local type names for the Surface and its factory  typedef Bfr  RefinerSurfaceFactory  SurfaceFactory  typedef Bfr  Surface  float  Surface    Initialize the SurfaceFactory for the given base mesh very low  cost in terms of both time and space and tessellate each face  independently i.e. no shared vertices   Note that the SurfaceFactory is not thread-safe by default due to  use of an internal cache. Creating a separate instance of the  SurfaceFactory for each thread is one way to safely parallelize  this loop. Another preferred is to assign a thread-safe cache  to the single instance.   First declare any evaluation options when initializing though  none are used in this simple case  SurfaceFactory  Options surfaceOptions  SurfaceFactory meshSurfaceFactory  meshTopology , surfaceOptions    Initialize a SurfaceCache to construct Surfaces for all faces.  From this point forward the SurfaceFactory is no longer used to  access Surfaces. Note also that usage below is specific to the  options used to initialize the SurfaceCache  bool cachePatchPoints  true  bool cacheAllSurfaces  true  SurfaceCache surfaceCache  meshSurfaceFactory , meshVertexPositions , cachePatchPoints , cacheAllSurfaces    As with previous tutorials, output data associated with the face  can be declared in the scope local to each face. But since dynamic  memory is involved with these variables, it is preferred to declare  them outside that loop to preserve and reuse that dynamic memory.  std  vector  float  outCoords  std  vector  float  outPos , outDu , outDv  std  vector  int  outFacets    Assign Tessellation Options applied for all faces. Tessellations  allow the creating of either 3- or 4-sided faces -- both of which  are supported here via a command line option  int const tessFacetSize  3  options . tessQuadsFlag  Bfr  Tessellation  Options tessOptions  tessOptions . SetFacetSize  tessFacetSize  tessOptions . PreserveQuads  options . tessQuadsFlag    Process each face, writing the output of each in Obj format  tutorial  ObjWriter objWriter  options . outputObjFile  int numFaces  meshSurfaceFactory . GetNumFaces  for  int faceIndex  0  faceIndex  numFaces   faceIndex     Retrieve the Surface for this face when present  if   surfaceCache . FaceHasLimitSurface  faceIndex  continue  Surface const  faceSurface   surfaceCache . GetSurface  faceIndex    Declare a simple uniform Tessellation for the Parameterization  of this face and identify coordinates of the points to evaluate  Bfr  Tessellation tessPattern  faceSurface . GetParameterization , options . tessUniformRate , tessOptions  int numOutCoords  tessPattern . GetNumCoords  outCoords . resize  numOutCoords  2  tessPattern . GetCoords  outCoords . data    Retrieve the patch points for the Surface, then use them to  evaluate output points for all identified coordinates  float const  facePatchPoints  surfaceCache . GetPatchPoints  faceIndex  int pointSize  3  outPos . resize  numOutCoords  pointSize  outDu . resize  numOutCoords  pointSize  outDv . resize  numOutCoords  pointSize  for  int i  0 , j  0  i  numOutCoords   i , j  pointSize   faceSurface . Evaluate   outCoords  i  2 , facePatchPoints , pointSize ,  outPos  j ,  outDu  j ,  outDv  j     Identify the faces of the Tessellation   Note the need to offset vertex indices for the output faces --  using the number of vertices generated prior to this face. One  of several Tessellation methods to transform the facet indices  simply translates all indices by the desired offset.  int objVertexIndexOffset  objWriter . GetNumVertices  int numFacets  tessPattern . GetNumFacets  outFacets . resize  numFacets  tessFacetSize  tessPattern . GetFacets  outFacets . data  tessPattern . TransformFacetCoordIndices  outFacets . data , objVertexIndexOffset    Write the evaluated points and faces connecting them as Obj  objWriter . WriteGroupName  baseFace_ , faceIndex  objWriter . WriteVertexPositions  outPos  objWriter . WriteVertexNormals  outDu , outDv  objWriter . WriteFaces  outFacets , tessFacetSize , true , false      Load command line arguments, specified or default geometry and process  int main  int argc , char  argv   Args args  argc , argv  Far  TopologyRefiner  meshTopology  0  std  vector  float  meshVtxPositions  std  vector  float  meshFVarUVs  meshTopology  tutorial  createTopologyRefiner  args . inputObjFile , args . schemeType , meshVtxPositions , meshFVarUVs  if  meshTopology  0   return EXIT_FAILURE   tessellateToObj   meshTopology , meshVtxPositions , args  delete meshTopology  return EXIT_SUCCESS   ------------------------------------------------------------------------------ Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"title\": \"Overview of Release 3.0\",\n+        \"text\": \"Overview of Release 3.0 Overview of Release 3.0 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE Release 3.0 Subdivision Core Sdc Topology and Refinement Limit Properties and Patches Faster Evaluation and Display Updated Source-Code Style Documentation and Tutorials Additional Resources Porting Guide Subdivision Compatibility Release 3.0 OpenSubdiv 3.0 represents a landmark release, with profound changes to the core algorithms, simplified APIs, and streamlined GPU execution. Providing faster, more efficient, and more flexible subdivision code remains our principal goal. To achieve this, OpenSubdiv 3.0 introduces many improvements that constitute a fairly radical departure from previous versions. This document highlights some of the major changes that have gone in to the 3.0 release. Subdivision Core Sdc In consideration of past, present and future topological representations, all low-level details fundamental to subdivision and the specific subdivision schemes have been factored into a new low-level layer called Sdc SubDivision Core. This layer encapsulates the full set of applicable options, the formulae required to support semi-sharp creasing, the formulae for the refinement masks of each subdivision scheme, etc. As initially conceived, its goal was often expressed as separating the math from the mesh. Sdc provides the low-level nuts and bolts to provide a subdivision implementation consistent with OpenSubdiv. It is used by OpenSubdivs libraries and may also be useful in providing an existing clients implementation with the details necessary to make that implementation consistent with OpenSubdiv. Topology and Refinement OpenSubdiv 3.0 introduces a new intermediate internal topological representation named Vtr Vectorized Topology Representation. Compared to the Hbr library used in previous versions, Vtr is much more efficient for the kinds of topological analysis required by Far and is more flexible. While Hbr is no longer used by OpenSubdiv, it will remain in the source distribution for legacy and regression purposes. Faster Subdivision A major focus of the 3.0 release is performance, and the improvement to the initial refinement of a mesh required for topological analysis is close to an order magnitude often much more for uniform, but less for adaptive. Supporting for Non-manifold Topology With topology conversion no longer constrained by Hbr, OpenSubdiv is no longer restricted to meshes of manifold topology. With one exception non-triangles with Loop subdivision, any set of faces and vertices that can be represented in common container formats such as Obj or Alembic can be represented and subdivided. With future efforts to bring the functionality for the Loop scheme up to par with Catmark, that last remaining topological restriction will be removed. Simpler Conversion of Topology Several entry-points are now available for client topology, rather than the single incremental assembly of an HbrMesh that previously existed. The new topological relationships can be populated using either a high-level interface where simplicity has been emphasized, or a more complex lower-level interface for enhanced efficiency. Face Varying Topology Previously, face-varying data was assigned by value to the vertex for each face, and whether or not the set of values around a vertex was continuous was determined by comparing these values later. In some cases this could result in two values that were not meant to be shared being welded together. Face-varying data is now specified topologically just as the vertex topology is defined from a set of vertices and integer references indices to these vertices for the corner of each face, face-varying topology is defined from a set of values and integer references indices to these values for the corner of each face. So if values are to be considered distinct around a vertex, they are given distinct indices and no comparison of any data is ever performed. Note that the number of vertices and values will typically differ, but since indices are assigned to the corners of all faces for both, the total number of indices assigned to all faces will be the same. This ensures that OpenSubdivs face-varying topology matches what is often specified in common geometry container formats like Obj, Alembic and USD. Multiple channels of face-varying data can be defined and each is topologically independent of the others. Limit Properties and Patches A fundamental goal of OpenSubdiv is to provide an accurate and reliable representation of the limit surface. Improvements have been made both to the properties positions and tangents at discrete points in the subdivision hierarchy, as well as to the representations of patches used for the continuous limit surface between them. Removed Fixed Valence Tables Limit properties of extra-ordinary vertices are computed for arbitrary valence and new patch types no longer rely on small table sizes. All tables that restricted the valence of a vertex to some relatively small table size have now been removed. The only restriction on valence that exists is within the new topology representation, which restricts it to the size of an unsigned 16-bit integer 65,535. This limit could also be removed, by recompiling with a certain size changed from 16- to 32-bits, but doing so would increase the memory cost for all common cases. We feel the 16-bit limit is a reasonable compromise. Single Crease Patch OpenSubdiv 3.0 newly implements efficient evaluation of semi-smooth creases using single crease patches. With this optimization, high-order edge sharpness tags can be handled very efficiently for both computation time and memory consumption.  Niessner et al., Efficient Evaluation of Semi-Smooth Creases in Catmull-Clark Subdivision Surfaces. Eurographics Short Papers. 2012. httpresearch.microsoft.comen-usumpeoplecloopEG2012.pdf New Irregular Patch Approximations While legacy Gregory patch support is still available, we have introduced several new options for representing irregular patches Legacy Gregory, fast Gregory Basis stencils, and BSpline patches. Gregory basis stencils provide the same high quality approximation of Legacy Gregory patches, but execute considerably faster with a simpler GPU representation. While BSpline patches are not as close an approximation as Gregory patches, they enable an entire adaptively refined mesh to be drawn with screen space tessellation via a single global shader configuration Gregory Basis patches require one additional global shader configuration. The new implementations of the GregoryBasis and BSpline approximations relax the previous max valence limit. Legacy Gregory patch still has a limitation of max valence typically 24, depending on the hardware capability of GL_MAX_VARYING_VECTORS. Users are still encouraged to use models with vertices of low valence for both improved model quality and performance. Faster Evaluation and Display OpenSubdiv 3.0 also introduces new data structures and algorithms that greatly enhance performance for the common case of repeated evaluation both on the CPU and GPU. Introducing Stencil Tables OpenSubdiv 3.0 replaces the serialized subdivision tables with factorized stencil tables. The SubdivisionTables class of earlier releases contained a large number of data inter-dependencies, which incurred penalties from fences or force additional kernel launches. Most of these dependencies have now been factorized away in the pre-computation stage, yielding stencil tables FarStencilTable instead. Stencils remove all data dependencies and simplify all the computations into a single trivial kernel. This simplification results in a faster pre-computation stage, faster execution on GPU, with less driver overhead. The new stencil tables Compute back-end is supported on all the same platforms as previous releases except GCD. Faster, Simpler GPU Kernels On the GPU side, the replacement of subdivision tables with stencils greatly reduces bottlenecks in compute, yielding as much as a 4x interpolation speed-up. At the same time, stencils reduce the complexity of interpolation to a single kernel launch per primitive, a critical improvement for mobile platforms. As a result of these changes, compute batching is now trivial, which in turn enabled API simplifications in the Osd layer. Unified Adaptive Shaders Adaptive tessellation shader configurations have been greatly simplified. The number of shader configurations has been reduced from a combinatorial per-patch explosion down to a constant two global configurations. This massive improvement over the 2.x code base results in significantly faster load times and a reduced per-frame cost for adaptive drawing. Similar to compute kernel simplification, this shader simplification has resulted in additional simplifications in the Osd layer. Updated Source-Code Style OpenSubdiv 3.0 replaces naming prefixes with C namespaces for all API layers, bringing the source style more in line with contemporary specifications mostly inspired from the Google C Style Guide . The large-scale changes introduced in this release generally break compatibility with existing client-code. However, this gives us the opportunity to effect some much needed updates to our code-style guidelines and general conventions, throughout the entire OpenSubdiv code-base. We are hoping to drastically improve the quality, consistency and readability of the source code. Documentation and Tutorials The documentation has been reorganized and fleshed out. This release introduces a number of new tutorials . The tutorials provide an easier entry point for learning the API than do the programs provided in examples. The examples provide more fleshed out solutions and are a good next step after the tutorials are mastered. Additional Resources Porting Guide Please see the Porting Guide for help on how to port existing code written for OpenSubdiv 2.x to the new 3.0 release. Subdivision Compatibility The 3.0 release has made some minor changes to the subdivision specification and rules. See Subdivision Compatibility for a complete list. Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n-        \"loc\": \"bfr_tutorial_3_2.html\"\n+        \"loc\": \"release_30.html\"\n     }, {\n-        \"title\": \"HBR Overview\",\n-        \"text\": \"HBR Overview HBR Overview 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE Hierarchical Boundary Representation Hbr Half-edge Data Structure Half-edge cycles and Manifold Topology Templated Vertex Class Boundary Interpolation Rules Hierarchical Boundary Representation Hbr Hbr is an interconnected topological data representation. The high level of vertex connectivity information makes this representation well suited for creation and editing purposes. It is however inefficient for interactive refinement operations Separate objects are allocated for each vertex and edge with pointers to neighboring vertices and edges. Hbr is also the lowest-level subdivision library in Pixars Photorealistic RenderMan . Note As of OpenSubdiv 3.0, all Hbr dependencies have been removed from the core APIs  Sdc , Vtr , Far , Osd . The legacy source code of Hbr is provided purely for regression and legacy purposes. If your code is currently depending on Hbr functionality, we recommend migrating to the newer APIs as we cannot guarantee that this code will be maintained in future releases. For more information see the 3.0 release notes Half-edge Data Structure The current implementation is based on a half-edge data structure. Half-edge cycles and Manifold Topology Because half-edges only carry a reference to their opposite half-edge, a given edge can only access a single neighboring edge cycle. This is a fundamental limitation of the half-edge data structure, in that it cannot represent non-manifold geometry, in particular fan-type topologies. A different approach to topology will probably be necessary in order to accommodate non-manifold geometry. Templated Vertex Class The vertex class has been abstracted into a set of templated function accesses. Providing Hbr with a template vertex class that does not implement these functions allows client-code to use Hbr as a pure topological analysis tool without having to pay any costs for data interpolation. It also allows client-code to remain in complete control of the layout of the vertex data  interleaved or non-interleaved. Boundary Interpolation Rules Hbr recognizes 4 rule-sets of boundary interpolation Interpolation Rule-Sets k_InterpolateBoundaryNone k_InterpolateBoundaryEdgeOnly k_InterpolateBoundaryEdgeAndCorner k_InterpolateBoundaryAlwaysSharp This enum is shared for both vertex and face-varying interpolation, with the following distinctions vertex boundaries the BoundaryNone rule skips all boundary vertices results are undefined the AlwaysSharp rule does not apply face-varying boundaries the BoundaryNone rule selects bilinear face-varying interpolation Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"title\": \"Introduction\",\n+        \"text\": \"Introduction Introduction 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE Introduction Why Fast Subdivision  Research Heritage Licensing Contributing External Resources Introduction OpenSubdiv is a set of open source libraries that implement high performance subdivision surface subdiv evaluation on massively parallel CPU and GPU architectures. This code path is optimized for drawing deforming surfaces with static topology at interactive framerates. OpenSubdiv is an API ready to be integrated into 3rd party digital content creation tools. It is not an application, nor a tool that can be used directly to create digital assets. Why Fast Subdivision  Subdivision surfaces are commonly used for final rendering of character shapes for a smooth and controllable limit surfaces. However, subdivision surfaces in interactive apps are typically drawn as their polygonal control hulls because of performance. The polygonal control hull is an approximation that is offset from the true limit surface. Looking at an approximation in the interactive app makes it difficult to see exact contact, like fingers touching a potion bottle or hands touching a cheek. It also makes it difficult to see poke-throughs in cloth simulation if the skin and cloth are both approximations. This problem is particularly bad when one character is much larger than another and unequal subdiv face sizes cause approximation errors to be magnified. Maya and Pixars proprietary Presto animation system can take 100ms to subdivide a character of 30,000 polygons to the second level of subdivision 500,000 polygons. Being able to perform the same operation in less than 3ms allows the user to interact with the smooth, accurate limit surface at all times. Research The new GPU technology behind OpenSubdiv is the result of a joint research effort between Pixar and Microsoft. Feature Adaptive GPU Rendering of Catmull-Clark Subdivision Surfaces Matthias Niessner, Charles Loop, Mark Meyer, and Tony DeRose ACM Transactions on Graphics, Vol. 31 No. 1 Article 6 January 2012 httpgraphics.pixar.comlibraryGPUSubdivRenderingApaper.pdf Efficient Evaluation of Semi-Smooth Creases in Catmull-Clark Subdivision Surfaces Matthias Niessner, Charles Loop, and Guenter Greiner. Eurographics Proceedings, Cagliari, 2012 httpsniessnerlab.orgpapers20121semismoothniessner2012efficient.pdf Analytic Displacement Mapping using Hardware Tessellation Matthias Niessner, Charles Loop ACM Transactions on Graphics, Vol. 32 No. 3 Article 26 June 2013 httpsniessnerlab.orgpapers20133analyticniessner2013analytic.pdf Heritage This is the fifth-generation subdiv library in use by Pixars proprietary animation system in a lineage that started with code written by Tony DeRose and Tien Truong for Geris Game in 1996. Each generation has been a from-scratch rewrite that has built upon our experience using subdivision surfaces to make animated films. This code is live, so Pixars changes to OpenSubdiv for current and future films will be released as open source at the same time they are rolled out to Pixar animation production. Subdivision for Modeling and Animation Denis Zorin, Peter Schroder Course Notes of SIGGRAPH 1999 httpwww.multires.caltech.edupubssig99notes.pdf Subdivision Surfaces in Character Animation Tony DeRose, Michael Kass, Tien Truong Proceedings of SIGGRAPH 1998 httpgraphics.pixar.comlibraryGeripaper.pdf Recursively generated B-spline surfaces on arbitrary topological meshes Catmull, E. Clark, J. Computer-Aided Design 10 6 1978 Licensing OpenSubdiv is covered by the Apache License, and is free to use for commercial or non-commercial use. This is the same code that Pixar uses internally for animated film production. Our intent is to encourage a geometry standard for subdivision surfaces, by providing consistent i.e. yielding the same limit surface, high performance implementations on a variety of platforms. Why Apache We were looking for a commercial-friendly license that would convey our patents to the end users. This quickly narrowed the field to Microsoft Public License or Apache. Initially we chose MSPL because it handled trademarks better. But at the request of several companies we gave Apache another look, and decided to go with Apache with a very slight modification that simply says you cannot use any contributors trademarks. In other words, you can use OpenSubdiv to make a product, but you cannot use a Luxo Lamp or other character, etc. when marketing your product. License Header Contributing For details on how to contribute to OpenSubdiv, see the page on Contributing External Resources Pixar Research Pixar RD Portal Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n-        \"loc\": \"hbr_overview.html\"\n+        \"loc\": \"intro.html\"\n     }, {\n-        \"title\": \"far_tutorial_2_1.cpp\",\n-        \"text\": \"far_tutorial_2_1.cpp far_tutorial_2_1.cpp 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE httpsgithub.comPixarAnimationStudiosOpenSubdivblobreleasetutorialsfartutorial_2_1far_tutorial_2_1.cpp ------------------------------------------------------------------------------  Tutorial description   Building on tutorial 0, this example shows how to instantiate a simple mesh,  refine it uniformly and then interpolate additional sets of primvar data.  include opensubdivfartopologyDescriptor.h include opensubdivfarprimvarRefiner.h include cstdio ------------------------------------------------------------------------------  Vertex container implementation.   We are adding a per-vertex color attribute to our primvar data. While they  are separate properties and exist in separate buffers as when read from an  Alembic file they are both of the form float3 and so we can use the same  underlying type.   While color and position may be the same, well make the color a varying  primvar, e.g. it is constrained to being linearly interpolated between  vertices, rather than smoothly like position and other vertex data.  struct Point3   Minimal required interface ---------------------- Point3    void Clear  void   0   _point  0   _point  1   _point  2   0.0f   void AddWithWeight  Point3 const  src , float weight   _point  0   weight  src . _point  0  _point  1   weight  src . _point  1  _point  2   weight  src . _point  2    Public interface ------------------------------------ void SetPoint  float x , float y , float z   _point  0   x  _point  1   y  _point  2   z   const float  GetPoint  const  return _point   private  float _point  3   typedef Point3 VertexPosition  typedef Point3 VertexColor  ------------------------------------------------------------------------------  Cube geometry from catmark_cube.h static float g_verts  8  3    -0.5f , -0.5f , 0.5f ,  0.5f , -0.5f , 0.5f ,  -0.5f , 0.5f , 0.5f ,  0.5f , 0.5f , 0.5f ,  -0.5f , 0.5f , -0.5f ,  0.5f , 0.5f , -0.5f ,  -0.5f , -0.5f , -0.5f ,  0.5f , -0.5f , -0.5f   Per-vertex RGB color data static float g_colors  8  3    1.0f , 0.0f , 0.5f ,  0.0f , 1.0f , 0.0f ,  0.0f , 0.0f , 1.0f ,  1.0f , 1.0f , 1.0f ,  1.0f , 1.0f , 0.0f ,  0.0f , 1.0f , 1.0f ,  1.0f , 0.0f , 1.0f ,  0.0f , 0.0f , 0.0f  static int g_nverts  8 , g_nfaces  6  static int g_vertsperface  6    4 , 4 , 4 , 4 , 4 , 4  static int g_vertIndices  24    0 , 1 , 3 , 2 , 2 , 3 , 5 , 4 , 4 , 5 , 7 , 6 , 6 , 7 , 1 , 0 , 1 , 7 , 5 , 3 , 6 , 0 , 2 , 4  using namespace OpenSubdiv  static Far  TopologyRefiner  createFarTopologyRefiner  ------------------------------------------------------------------------------ int main  int , char    int maxlevel  5  Far  TopologyRefiner  refiner  createFarTopologyRefiner   Uniformly refine the topology up to maxlevel refiner - RefineUniform  Far  TopologyRefiner  UniformOptions  maxlevel   Allocate buffers for vertex primvar data.   We assume we received the coarse data for the mesh in separate buffers  from some other source, e.g. an Alembic file. Meanwhile, we want buffers  for the lastfinest subdivision level to persist. We have no interest  in the intermediate levels.   Determine the sizes for our needs int nCoarseVerts  g_nverts  int nFineVerts  refiner - GetLevel  maxlevel . GetNumVertices  int nTotalVerts  refiner - GetNumVerticesTotal  int nTempVerts  nTotalVerts - nCoarseVerts - nFineVerts   Allocate and initialize the primvar data for the original coarse vertices std  vector  VertexPosition  coarsePosBuffer  nCoarseVerts  std  vector  VertexColor  coarseClrBuffer  nCoarseVerts  for  int i  0  i  nCoarseVerts   i   coarsePosBuffer  i . SetPoint  g_verts  i  0 , g_verts  i  1 , g_verts  i  2  coarseClrBuffer  i . SetPoint  g_colors  i  0 , g_colors  i  1 , g_colors  i  2    Allocate intermediate and final storage to be populated std  vector  VertexPosition  tempPosBuffer  nTempVerts  std  vector  VertexPosition  finePosBuffer  nFineVerts  std  vector  VertexColor  tempClrBuffer  nTempVerts  std  vector  VertexColor  fineClrBuffer  nFineVerts   Interpolate all primvar data -- separate buffers can be populated on  separate threads if desired VertexPosition  srcPos   coarsePosBuffer  0  VertexPosition  dstPos   tempPosBuffer  0  VertexColor  srcClr   coarseClrBuffer  0  VertexColor  dstClr   tempClrBuffer  0  Far  PrimvarRefiner primvarRefiner   refiner  for  int level  1  level  maxlevel   level   primvarRefiner . Interpolate  level , srcPos , dstPos  primvarRefiner . InterpolateVarying  level , srcClr , dstClr  srcPos  dstPos , dstPos  refiner - GetLevel  level . GetNumVertices  srcClr  dstClr , dstClr  refiner - GetLevel  level . GetNumVertices    Interpolate the last level into the separate buffers for our final data primvarRefiner . Interpolate  maxlevel , srcPos , finePosBuffer  primvarRefiner . InterpolateVarying  maxlevel , srcClr , fineClrBuffer    Visualization with Maya  print a MEL script that generates colored  particles at the location of the refined vertices dont forget to  turn shading on in the viewport to see the colors int nverts  nFineVerts   Output particle positions printf  particle   for  int vert  0  vert  nverts   vert   float const  pos  finePosBuffer  vert . GetPoint  printf  -p f f f n  , pos  0 , pos  1 , pos  2   printf   n    Set particle point size 20 -- very large printf  addAttr -is true -ln  pointSize  -at long -dv 20 particleShape1 n    Add per-particle color attribute rgbPP printf  addAttr -ln  rgbPP  -dt vectorArray particleShape1 n    Set per-particle color values from our primvar data printf  setAttr  particleShape1.rgbPP  -type  vectorArray  d  , nverts  for  int vert  0  vert  nverts   vert   float const  color  fineClrBuffer  vert . GetPoint  printf  f f f n  , color  0 , color  1 , color  2   printf   n    delete refiner  return EXIT_SUCCESS   ------------------------------------------------------------------------------  Creates FarTopologyRefiner from raw geometry   see tutorial_1_1 for more details  static Far  TopologyRefiner  createFarTopologyRefiner    Populate a topology descriptor with our raw data typedef Far  TopologyDescriptor Descriptor  Sdc  SchemeType type  OpenSubdiv  Sdc  SCHEME_CATMARK  Sdc  Options options  options . SetVtxBoundaryInterpolation  Sdc  Options  VTX_BOUNDARY_EDGE_ONLY  Descriptor desc  desc . numVertices  g_nverts  desc . numFaces  g_nfaces  desc . numVertsPerFace  g_vertsperface  desc . vertIndicesPerFace  g_vertIndices   Instantiate a FarTopologyRefiner from the descriptor Far  TopologyRefiner  refiner  Far  TopologyRefinerFactory  Descriptor  Create  desc , Far  TopologyRefinerFactory  Descriptor  Options  type , options  return refiner   ------------------------------------------------------------------------------ Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"title\": \"osd_tutorial_0.cpp\",\n+        \"text\": \"osd_tutorial_0.cpp osd_tutorial_0.cpp 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE httpsgithub.comPixarAnimationStudiosOpenSubdivblobreleasetutorialsosdtutorial_0osd_tutorial_0.cpp ------------------------------------------------------------------------------  Tutorial description   This tutorial demonstrates the manipulation of Osd Evaluator and  BufferDescriptor.  include opensubdivfartopologyDescriptor.h include opensubdivfarstencilTableFactory.h include opensubdivosdcpuEvaluator.h include opensubdivosdcpuVertexBuffer.h include cstdio include cstring ------------------------------------------------------------------------------  Cube geometry from catmark_cube.h static float g_verts  24    -0.5f , -0.5f , 0.5f , 0.5f , -0.5f , 0.5f , -0.5f , 0.5f , 0.5f , 0.5f , 0.5f , 0.5f , -0.5f , 0.5f , -0.5f , 0.5f , 0.5f , -0.5f , -0.5f , -0.5f , -0.5f , 0.5f , -0.5f , -0.5f  static int g_nverts  8 , g_nfaces  6  static int g_vertsperface  6    4 , 4 , 4 , 4 , 4 , 4  static int g_vertIndices  24    0 , 1 , 3 , 2 , 2 , 3 , 5 , 4 , 4 , 5 , 7 , 6 , 6 , 7 , 1 , 0 , 1 , 7 , 5 , 3 , 6 , 0 , 2 , 4  using namespace OpenSubdiv  static Far  TopologyRefiner const  createTopologyRefiner  int maxlevel  ------------------------------------------------------------------------------ int main  int , char    int maxlevel  2 , nCoarseVerts  0 , nRefinedVerts  0    Setup phase  Far  StencilTable const  stencilTable  NULL    Setup FarStencilTable Far  TopologyRefiner const  refiner  createTopologyRefiner  maxlevel   Setup a factory to create FarStencilTable for more details see  Far tutorials Far  StencilTableFactory  Options options  options . generateOffsets  true  options . generateIntermediateLevels  false  stencilTable  Far  StencilTableFactory  Create   refiner , options  nCoarseVerts  refiner - GetLevel  0 . GetNumVertices  nRefinedVerts  stencilTable - GetNumStencils   We are done with Far cleanup table delete refiner    Setup a buffer for vertex primvar data Osd  CpuVertexBuffer  vbuffer  Osd  CpuVertexBuffer  Create  3 , nCoarseVerts  nRefinedVerts    Execution phase every frame    Pack the control vertex data at the start of the vertex buffer  and update every time control data changes vbuffer - UpdateData  g_verts , 0 , nCoarseVerts  Osd  BufferDescriptor srcDesc  0 , 3 , 3  Osd  BufferDescriptor dstDesc  nCoarseVerts  3 , 3 , 3   Launch the computation Osd  CpuEvaluator  EvalStencils  vbuffer , srcDesc , vbuffer , dstDesc , stencilTable     Visualization with Maya  print a MEL script that generates particles  at the location of the refined vertices printf  particle   float const  refinedVerts  vbuffer - BindCpuBuffer   3  nCoarseVerts  for  int i  0  i  nRefinedVerts   i   float const  vert  refinedVerts  3  i  printf  -p f f f n  , vert  0 , vert  1 , vert  2   printf  -c 1 n    delete stencilTable  delete vbuffer   ------------------------------------------------------------------------------ static Far  TopologyRefiner const  createTopologyRefiner  int maxlevel    Populate a topology descriptor with our raw data typedef Far  TopologyDescriptor Descriptor  Sdc  SchemeType type  OpenSubdiv  Sdc  SCHEME_CATMARK  Sdc  Options options  options . SetVtxBoundaryInterpolation  Sdc  Options  VTX_BOUNDARY_EDGE_ONLY  Descriptor desc  desc . numVertices  g_nverts  desc . numFaces  g_nfaces  desc . numVertsPerFace  g_vertsperface  desc . vertIndicesPerFace  g_vertIndices   Instantiate a FarTopologyRefiner from the descriptor Far  TopologyRefiner  refiner  Far  TopologyRefinerFactory  Descriptor  Create  desc , Far  TopologyRefinerFactory  Descriptor  Options  type , options   Uniformly refine the topology up to maxlevel refiner - RefineUniform  Far  TopologyRefiner  UniformOptions  maxlevel  return refiner   ------------------------------------------------------------------------------ Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n-        \"loc\": \"far_tutorial_2_1.html\"\n+        \"loc\": \"osd_tutorial_0.html\"\n     }, {\n-        \"title\": \"dxPtexViewer\",\n-        \"text\": \"dxPtexViewer dxPtexViewer 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE SYNOPSIS DESCRIPTION OPTIONS KEYBOARD CONTROLS SEE ALSO SYNOPSIS dxPtexViewer  -f   -yup   -u   -a   -l isolation level   -c animation loops   -e environment map   -d HDR diffuse map   -s HDR specular map   --disp displacement scale  ptex color file ptex displacement file ptex occlusion file ptex specular file objfiles DESCRIPTION dxPtexViewer is a stand-alone application that showcases advanced HDR shading with color, displacement, occlusion and specular ptex maps. Multiple controls are available to experiment with the algorithms. OPTIONS See the description of the common comand line options for the subset of common options supported here. -y Swap Z-up geometry to Y-UP. -e environment map A low dynamic range spherical environment map used as a background. Ideally, a color-normalized version of the HDR light probe. -d HDR diffuse map An HDR file containing a diffuse environment map typically they are low resolution blurry hemispherical convolutions of the environment light probe. -s environment map An HDR file containing a specular environment map. --disp displacement scale A scalar multiplier for the shader displacement values. ptex color file A ptex file containing RGB channels read as material albedo color. ptex displacement file A single-channel ptex file preferrably float precision containing the displacement values. ptex occlusion file A single-channel ptex file preferrably 8 bits precision containing a pre-computed ambient occlusion signal. ptex specular file A single-channel ptex file preferrably 8 bits precision applied to modulate the specular reflectance of the material objfiles A sequence of obj files used as an animation loop the topology has to match the data contained in all the ptex files  KEYBOARD CONTROLS q  quit esc  hide GUI f  fit frame -  increase  decrese tessellation rate SEE ALSO Other examples  glViewer , glFVarViewer , glEvalLimit , glStencilViewer , glPtexViewer , glPaintTest , glShareTopology , dxViewer , dxPtexViewer , Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"title\": \"Building with CMake\",\n+        \"text\": \"Building with CMake Building with CMake 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE Overview Step 1 Dependencies Required Optional Step 2 Configuring CMake Useful Build Options Environment Variables Automated Script Using Intels C Studio XE Using Clang Step 3 Building Build Targets Compiling  Linking an OpenSubdiv Application Overview Assuming that you have cloned the source repository and selected an appropriate release branch, the following instructions will walk you through the CMake and configuration and build process. CMake is a cross-platform, open-source build system. CMake controls the compilation process using platform independent configuration files in order to generate Makefiles and workspaces that are native to the platform of choice. The process involves the following steps Locate  build the requisite dependencies Configure  run CMake to generate Makefiles  MSVC solution  XCode project Run the build from make  MSVC  XCode Step 1 Dependencies CMake will adapt the build based on which dependencies have been successfully discovered and will disable certain features and code examples accordingly. Please refer to the documentation of each of the dependency packages for specific build and installation instructions. Required CMake version 3.12 Optional Ptex support features for ptex textures and the ptexViewer example Zlib required for Ptex under Windows CUDA TBB OpenCL DX11 SDK GLFW required for standalone examples and some regression tests Docutils required for reST-based documentation Python Pygments required for Docutils reST styling Doxygen Step 2 Configuring CMake One way to configure CMake is to use the CMake GUI . In many cases CMake can fall back on default standard paths in order to find the packages that OpenSubdiv depends on. For non-standard installations however, a complete set of override variables is available. The following sub-section lists some of these variables. For more specific details, please consult the source of the custom CMake modules in the OpenSubdivcmake folder. Useful Build Options The following configuration arguments can be passed to the CMake command line. - DCMAKE_BUILD_TYPE   Debug  Release  - DCMAKE_INSTALL_PREFIX   base path to install OpenSubdiv  default  Current directory  - DCMAKE_LIBDIR_BASE   library directory basename  default  lib  - DCMAKE_PREFIX_PATH   semicolon - separated list of directories specifying installation prefixes to be searched by the find_package  command  default  empty list  - DCUDA_TOOLKIT_ROOT_DIR   path to CUDA  - DOSD_CUDA_NVCC_FLAGS   CUDA options , e . g . -- gpu - architecture  - DPTEX_LOCATION   path to Ptex  - DGLFW_LOCATION   path to GLFW  - DICC_LOCATION   path to Intel  s C  Studio XE  - DNO_LIB  1  disable the opensubdiv libs build caveat emptor - DNO_EXAMPLES  1  disable examples build - DNO_TUTORIALS  1  disable tutorials build - DNO_REGRESSION  1  disable regression tests build - DNO_PTEX  1  disable PTex support - DNO_DOC  1  disable documentation build - DNO_OMP  1  disable OpenMP - DNO_TBB  1  disable TBB - DNO_CUDA  1  disable CUDA - DNO_OPENCL  1  disable OpenCL - DNO_OPENGL  1  disable OpenGL - DNO_CLEW  1  disable CLEW wrapper library Environment Variables The paths to Ptex, GLFW, other dependencies can also be specified through the following environment variables PTEX_LOCATION , GLFW_LOCATION Automated Script The GUI solution will probably become a burden for active developpers who tend to re-run the configuration step fairly often. A scripted solution can save a lot of time. Here is a typical workflow git clone https  github.comPixarAnimationStudiosOpenSubdiv.git folder cd  folder  mkdir build cd build source ..  ..  cmake_setup Where cmake_setup is a configuration script. Here is an example CMake configuration script for a full typical windows-based build that can be run in GitShell  bintcsh  Replace the .. with a full path to the root of the OpenSubdiv source tree if necessary cProgram Files x86CMake 2.8bincmake.exe  - G Visual Studio 15 2017 Win64  - D GLFW_LOCATIONstringcProgram Filesglfw-2.7.7.bin.WIN64  - D OPENCL_INCLUDE_DIRSstringcProgramDataNVIDIA CorporationNVIDIA GPU Computing SDK 4.2OpenCLcommoninc  - D _OPENCL_CPP_INCLUDE_DIRSstringcProgramDataNVIDIA CorporationNVIDIA GPU Computing SDK 4.2OpenCLcommoninc  - D OPENCL_LIBRARIESstringcProgramDataNVIDIA CorporationNVIDIA GPU Computing SDK 4.2OpenCLcommonlibx64OpenCL.lib  - D PTEX_LOCATIONstringcUsersopensubdivdemosrcptexx64  ..  copy Ptex dependencies Windows only mkdir - p bin   Debug , Release   cp - f c  Users  opensubdiv  demo  src  zlib -1.2.7  contrib  vstudio  vc10  x64  ZlibDllRelease  zlibwapi . dll bin  Debug   cp - f c  Users  opensubdiv  demo  src  zlib -1.2.7  contrib  vstudio  vc10  x64  ZlibDllRelease  zlibwapi . dll bin  Release   cp - f c  Users  opensubdiv  demo  src  ptex  x64  lib  Ptex . dll bin  Debug   cp - f c  Users  opensubdiv  demo  src  ptex  x64  lib  Ptex . dll bin  Release  Important Notice that the following scripts start by recursively removing the ..build and ..inst directories. Make sure you modify them to suit your build workflow. Here is a similar script for Nix-based platforms echo  Removing build cd .. rm - rf build  inst   mkdir build  cd build  echo  Running cmake cmake - DPTEX_LOCATION  home  opensubdiv  dev  opensource  ptex  install  - DGLFW_LOCATION  home  opensubdiv  dev  opensource  glfw  build  - DDOXYGEN_EXECUTABLE  home  opensubdiv  dev  opensource  doxygen  inst  bin  doxygen  - DCMAKE_INSTALL_PREFIX  ..  inst  - DCMAKE_BUILD_TYPE  Debug  .. Here is a similar script for macOS echo  Removing build cd .. rm - rf build  inst   mkdir build  cd build  echo  Running cmake cmake - DOPENGL_INCLUDE_DIR  Applications  Xcode . app  Contents  Developer  Platforms  MacOSX . platform  Developer  SDKs  MacOSX10 .9 . sdk  System  Library  Frameworks  OpenGL . framework  Headers  - DGLFW_LOCATION  Users  opensubdiv  dev  opensource  glfw  inst  - DNO_OMP  1 - DNO_REGRESSION  0  - DCMAKE_INSTALL_PREFIX  ..  inst  - DCMAKE_BUILD_TYPE  Debug  ..  Using Intels C Studio XE OpenSubdiv can be also be built with Intels C compiler icc. The default compiler can be overriden in CMake with the following configuration options - DCMAKE_CXX_COMPILER   path to icc executable  - DCMAKE_C_COMPILER   path to icc executable  The installation location of the C Studio XE can be overriden with - DICC_LOCATION   path to Intel  s C  Studio XE  Using Clang CMake can also be overriden to use the clang compilers by configuring the following options - DCMAKE_CXX_COMPILER  clang   - DCMAKE_C_COMPILER  clang  Step 3 Building CMake provides a cross-platform command-line build cmake -- build . -- target install -- config Release Alternatively, you can use native toolkits to launch the build. The steps differ for each OS Windows  launch VC with the solution generated by CMake in your build directory. macOS  launch Xcode with the xcodeproj generated by CMake in your build directory Nix  run make in your build directory - use the clean target to remove previous build results - use VERBOSE1 for verbose build output Build Targets Makefile-based builds allow the use of named target. Here are some of the more useful target names osd_staticdynamic_CPUGPU The core components of the OpenSubdiv libraries example_name Builds specific code examples by name glViewer, ptexViewer... doc Builds ReST and doxygen documentation doc_html Builds ReST documentation doc_doxy Builds Doxygen documentation Compiling  Linking an OpenSubdiv Application Here are example commands for building an OpenSubdiv application on several architectures Linux g -IOPENSUBDIVinclude -c myapp.cpp g myapp.o -LOPENSUBDIVlib -losdGPU -losdCPU -o myapp macOS g -IOPENSUBDIVinclude -c myapp.cpp g myapp.o -LOPENSUBDIVlib -losdGPU -losdCPU -o myapp install_name_tool -add_rpath OPENSUBDIVlib myapp On 64-bit OS-X add -m64 after each g . Windows cl nologo MT TP DWIN32 IOPENSUBDIVinclude -c myapp.cpp link nologo outmyapp.exe LIBPATHOPENSUBDIVlib libosdGPU.lib libosdCPU.lib myapp.obj Note HBR uses the offsetof macro on a templated struct, which appears to spurriously set off a warning in both gcc and Clang. It is recommended to turn the warning off with the -Wno-invalid-offsetof flag. Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n-        \"loc\": \"dxptexviewer.html\"\n+        \"loc\": \"cmake_build.html\"\n     }, {\n-        \"title\": \"glPaintTest\",\n-        \"text\": \"glPaintTest glPaintTest 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE SYNOPSIS DESCRIPTION OPTIONS KEYBOARD CONTROLS SEE ALSO SYNOPSIS glPaintTest  -f   -yup   -l adaptive refinement level  objfiles  -catmark   -loop  DESCRIPTION glPaintTest is a small stand-alone application showing the potential of using GPU limit tessellation for painting and sculpting applications. OPTIONS See the description of the common comand line options for the subset of common options supported here. KEYBOARD CONTROLS c  use texture as color d  use texture as displacement SEE ALSO Other examples  glViewer , glFVarViewer , glEvalLimit , glStencilViewer , glPtexViewer , glPaintTest , glShareTopology , dxViewer , dxPtexViewer , Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"title\": \"far_tutorial_5_1.cpp\",\n+        \"text\": \"far_tutorial_5_1.cpp far_tutorial_5_1.cpp 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE httpsgithub.comPixarAnimationStudiosOpenSubdivblobreleasetutorialsfartutorial_5_1far_tutorial_5_1.cpp ------------------------------------------------------------------------------  Tutorial description   This tutorial shows how to interpolate surface limits at arbitrary  parametric locations using feature adaptive FarPatchTables.   The evaluation of the limit surface at arbitrary locations requires the  adaptive isolation of topological features. This process converts the  input polygonal control cage into a collection of bi-cubic patches.   We can then evaluate the patches at random parametric locations and  obtain analytical positions and tangents on the limit surface.   The results are dumped into a MEL script that draws streak particle  systems that show the tangent and bi-tangent at the random samples locations.  include opensubdivfartopologyDescriptor.h include opensubdivfarprimvarRefiner.h include opensubdivfarpatchTableFactory.h include opensubdivfarpatchMap.h include opensubdivfarptexIndices.h include cassert include cstdio include cstring include cfloat using namespace OpenSubdiv  typedef double Real   pyramid geometry from catmark_pyramid_crease0.h static int const g_nverts  5  static Real const g_verts  24    0.0f , 0.0f , 2.0f , 0.0f , -2.0f , 0.0f , 2.0f , 0.0f , 0.0f , 0.0f , 2.0f , 0.0f , -2.0f , 0.0f , 0.0f ,  static int const g_vertsperface  5    3 , 3 , 3 , 3 , 4  static int const g_nfaces  5  static int const g_faceverts  16    0 , 1 , 2 , 0 , 2 , 3 , 0 , 3 , 4 , 0 , 4 , 1 , 4 , 3 , 2 , 1  static int const g_ncreases  4  static int const g_creaseverts  8    4 , 3 , 3 , 2 , 2 , 1 , 1 , 4  static float const g_creaseweights  4    3.0f , 3.0f , 3.0f , 3.0f   Creates a FarTopologyRefiner from the pyramid shape above static Far  TopologyRefiner  createTopologyRefiner  ------------------------------------------------------------------------------  Vertex container implementation.  struct Vertex   Minimal required interface ---------------------- Vertex    void Clear  void   0   point  0   point  1   point  2   0.0f   void AddWithWeight  Vertex const  src , Real weight   point  0   weight  src . point  0  point  1   weight  src . point  1  point  2   weight  src . point  2   Real point  3   ------------------------------------------------------------------------------  Limit frame container implementation -- this interface is not strictly  required but follows a similar pattern to Vertex.  struct LimitFrame  void Clear  void   0   point  0   point  1   point  2   0.0f  deriv1  0   deriv1  1   deriv1  2   0.0f  deriv2  0   deriv2  1   deriv2  2   0.0f   void AddWithWeight  Vertex const  src , Real weight , Real d1Weight , Real d2Weight   point  0   weight  src . point  0  point  1   weight  src . point  1  point  2   weight  src . point  2  deriv1  0   d1Weight  src . point  0  deriv1  1   d1Weight  src . point  1  deriv1  2   d1Weight  src . point  2  deriv2  0   d2Weight  src . point  0  deriv2  1   d2Weight  src . point  1  deriv2  2   d2Weight  src . point  2   Real point  3 , deriv1  3 , deriv2  3   ------------------------------------------------------------------------------ int main  int , char     Generate a FarTopologyRefiner see tutorial_1_1 for details. Far  TopologyRefiner  refiner  createTopologyRefiner   Patches are constructed from adaptively refined faces, but the processes  of constructing the PatchTable and of applying adaptive refinement have  historically been separate. Adaptive refinement is applied purely to  satisfy the needs of the desired PatchTable, so options associated with  adaptive refinement should be derived from those specified for the  PatchTable. This is not a strict requirement, but it will avoid  problems arising from specifyingcoordinating the two independently  especially when dealing with face-varying patches.  Initialize options for the PatchTable   Choose patches adaptively refined to level 3 since the sharpest crease  in the shape is 3.0f in g_creaseweights, and include the inf-sharp  crease option just to illustrate the need to syncronize options.  int maxPatchLevel  3  Far  PatchTableFactory  Options patchOptions  maxPatchLevel  patchOptions . SetPatchPrecision  Real   patchOptions . useInfSharpPatch  true  patchOptions . generateVaryingTables  false  patchOptions . endCapType  Far  PatchTableFactory  Options  ENDCAP_GREGORY_BASIS   Initialize corresonding options for adaptive refinement Far  TopologyRefiner  AdaptiveOptions adaptiveOptions  maxPatchLevel  bool assignAdaptiveOptionsExplicitly  false  if  assignAdaptiveOptionsExplicitly   adaptiveOptions . useInfSharpPatch  true   else   Be sure patch options were intialized with the desired max level adaptiveOptions  patchOptions . GetRefineAdaptiveOptions   assert  adaptiveOptions . useInfSharpPatch  patchOptions . useInfSharpPatch   Apply adaptive refinement and construct the associated PatchTable to  evaluate the limit surface refiner - RefineAdaptive  adaptiveOptions  Far  PatchTable const  patchTable  Far  PatchTableFactory  Create   refiner , patchOptions   Compute the total number of points we need to evaluate the PatchTable.  Approximations at irregular or extraordinary features require the use  of additional points associated with the patches that are referred to  as local points i.e. local to the PatchTable. int nRefinerVertices  refiner - GetNumVerticesTotal  int nLocalPoints  patchTable - GetNumLocalPoints   Create a buffer to hold the position of the refined verts and  local points, then copy the coarse positions at the beginning. std  vector  Vertex  verts  nRefinerVertices  nLocalPoints  std  memcpy   verts  0 , g_verts , g_nverts  3  sizeof  Real   Adaptive refinement may result in fewer levels than the max specified. int nRefinedLevels  refiner - GetNumLevels   Interpolate vertex primvar data  they are the control vertices  of the limit patches see tutorial_1_1 for details Far  PrimvarRefinerReal  Real  primvarRefiner   refiner  Vertex  src   verts  0  for  int level  1  level  nRefinedLevels   level   Vertex  dst  src  refiner - GetLevel  level -1 . GetNumVertices  primvarRefiner . Interpolate  level , src , dst  src  dst    Evaluate local points from interpolated vertex primvars. if  nLocalPoints   patchTable - GetLocalPointStencilTable  Real   - UpdateValues   verts  0 ,  verts  nRefinerVertices    Create a FarPatchMap to help locating patches in the table Far  PatchMap patchmap   patchTable   Create a FarPtexIndices to help find indices of ptex faces. Far  PtexIndices ptexIndices   refiner   Generate random samples on each ptex face int nsamplesPerFace  200 , nfaces  ptexIndices . GetNumFaces  std  vector  LimitFrame  samples  nsamplesPerFace  nfaces  srand  static_cast  int   2147483647   Real pWeights  20 , dsWeights  20 , dtWeights  20  for  int face  0 , count  0  face  nfaces   face   for  int sample  0  sample  nsamplesPerFace   sample ,  count   Real s   Real  rand    Real  RAND_MAX , t   Real  rand    Real  RAND_MAX   Locate the patch corresponding to the face ptex idx and s,t Far  PatchTable  PatchHandle const  handle  patchmap . FindPatch  face , s , t  assert  handle   Evaluate the patch weights, identify the CVs and compute the limit frame patchTable - EvaluateBasis   handle , s , t , pWeights , dsWeights , dtWeights  Far  ConstIndexArray cvs  patchTable - GetPatchVertices   handle  LimitFrame  dst  samples  count  dst . Clear  for  int cv  0  cv  cvs . size   cv   dst . AddWithWeight  verts  cvs  cv , pWeights  cv , dsWeights  cv , dtWeights  cv       Visualization with Maya  print a MEL script that generates particles  at the location of the limit vertices int nsamples   int  samples . size  printf  file -f -new n    Output particle positions for the tangent printf  particle -n deriv1   for  int sample  0  sample  nsamples   sample   Real const  pos  samples  sample . point  printf  -p f f f n  , pos  0 , pos  1 , pos  2   printf   n    Set per-particle direction using the limit tangent display as Streak printf  setAttr  deriv1.particleRenderType  6 n   printf  setAttr  deriv1.velocity  -type  vectorArray  d  , nsamples  for  int sample  0  sample  nsamples   sample   Real const  tan1  samples  sample . deriv1  printf  f f f n  , tan1  0 , tan1  1 , tan1  2   printf   n    Output particle positions for the bi-tangent printf  particle -n deriv2   for  int sample  0  sample  nsamples   sample   Real const  pos  samples  sample . point  printf  -p f f f n  , pos  0 , pos  1 , pos  2   printf   n   printf  setAttr  deriv2.particleRenderType  6 n   printf  setAttr  deriv2.velocity  -type  vectorArray  d  , nsamples  for  int sample  0  sample  nsamples   sample   Real const  tan2  samples  sample . deriv2  printf  f f f n  , tan2  0 , tan2  1 , tan2  2   printf   n    Exercise to the reader  cross tangent  bi-tangent for limit  surface normal...  Force Maya DAG update to see the result in the viewport printf  currentTime -edit currentTime -q n   printf  select deriv1Shape deriv2Shape n    delete refiner  delete patchTable  return EXIT_SUCCESS   ------------------------------------------------------------------------------ static Far  TopologyRefiner  createTopologyRefiner   typedef Far  TopologyDescriptor Descriptor  Sdc  SchemeType type  OpenSubdiv  Sdc  SCHEME_CATMARK  Sdc  Options options  options . SetVtxBoundaryInterpolation  Sdc  Options  VTX_BOUNDARY_EDGE_ONLY  Descriptor desc  desc . numVertices  g_nverts  desc . numFaces  g_nfaces  desc . numVertsPerFace  g_vertsperface  desc . vertIndicesPerFace  g_faceverts  desc . numCreases  g_ncreases  desc . creaseVertexIndexPairs  g_creaseverts  desc . creaseWeights  g_creaseweights   Instantiate a FarTopologyRefiner from the descriptor. Far  TopologyRefiner  refiner  Far  TopologyRefinerFactory  Descriptor  Create  desc , Far  TopologyRefinerFactory  Descriptor  Options  type , options  return refiner   Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n-        \"loc\": \"glpainttest.html\"\n+        \"loc\": \"far_tutorial_5_1.html\"\n     }, {\n-        \"title\": \"BFR Overview\",\n-        \"text\": \"BFR Overview BFR Overview 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE Base Face Representation Bfr Evaluation BfrSurfaceFactory BfrSurface Parameterization BfrParameterization Discontinuous Parameterizations Tessellation BfrTessellation Tessellation Rates Differences from Hardware Tessellation More on BfrSurfaceFactory BfrSurfaceFactoryCache Defining a Thread-Safe SurfaceFactory Internal versus External SurfaceFactoryCache Customizing a BfrSurfaceFactory The BfrSurfaceFactoryMeshAdapter Interface Customizing the Subclass Interface Base Face Representation Bfr Bfr is an alternate API layer that treats a subdivision mesh provided by a client as a piecewise parameteric surface primitive . The name Bfr derives from the fact that the concepts and classes of this interface all relate to the base faces of a mesh. Concepts such as parameterization , evaluation and tessellation all refer to and are embodied by classes that deal with a specific face of the original unrefined mesh. The Bfr interfaces allow the limit surface for a single face to be identified and evaluated independently of all other faces without any global pre-processing. While concepts and utilities from the Far interface are used internally, the details of their usage is hidden. There is no need to coordinate adaptive refinement with tables of patches, stencils, Ptex indices, patch maps, etc. The resulting evaluation interface is much simpler, more flexible and more scalable than those assembled with the Far classes -- providing a preferable alternative for many CPU-based use cases. The main classes in Bfr include SurfaceFactory A light-weight interface to a mesh that constructs pieces of limit surface for specified faces of a mesh in the form of Surfaces. Surface A class encapsulating the limit surface of a face with methods for complete parametric evaluation. Parameterization A simple class defining the available parameterizations of faces and for identifying that of a particular face. Tessellation A simple class providing information about a specified tessellation pattern for a given Parameterization. Bfr is well suited to cases where evaluation of the mesh may be sparse, dynamically determined or iterative Newton, gradient descent, etc. It is not intended to replace the cases for which Far has been designed i.e. repeated evaluation of a fixed set of points but is intended to complement them. While simplicity, flexibility and reasonable performance were the main goals of Bfr , its current implementation often outperforms the table-based solutions of Far for many common use cases -- both in terms of execution time and memory use. An area that Bfr does not address, and where Far remains more suited, is capturing a specific representation of the limit surface for external use. Bfr intentionally keeps internal implementation details private to allow future improvements or extensions. Those representation details may be publicly exposed in future releases, but until then, use of Far is required for such purposes. Evaluation Since subdivision surfaces are piecewise parametric surfaces, the main operation of interest is evaluation. Bfr deals with the limit surface of a mesh as a whole by associating pieces of surface with each face of the mesh. These pieces of surface are referred to in the context of Bfr simply as surfaces and represented by BfrSurface. Each face of the mesh has an implicit local 2D parameterization and individual coordinates of that parameterization are used to evaluate its corresponding Surface. In general, 3- and 4-sided faces use the same parameterizations for quad and triangular patches used elsewhere in OpenSubdiv Parameterizations are defined for other faces more details to follow, so Surfaces for all faces can be evaluated given any 2D parametric coordinate of its face. Given an instance of a mesh, usage first requires the creation of a BfrSurfaceFactory corresponding to that mesh -- from which Surfaces can then be created for evaluation. Construction of the SurfaceFactory involves no pre-processing and Surfaces can be created and discarded as needed. The processes of constructing and evaluating Surfaces are described in more detail below. BfrSurfaceFactory Construction of BfrSurfaces requires an instance of BfrSurfaceFactory. An instance of SurfaceFactory is a light-weight interface to an instance of a mesh that requires little to no construction cost or memory. The SurfaceFactory does no work until a Surface is requested for a particular face -- at which point the factory inspects the mesh topology around that face to assemble the Surface. SurfaceFactory is actually a base class that is inherited to provide a consistent construction interface for Surfaces. Subclasses are derived to support a particular class of connected mesh -- to implement the topology inspection around each face required to construct the Surface. Use of these subclasses is very simple given the public interface of SurfaceFactory, but defining such a subclass is not. That more complex use case of SurfaceFactory will be described in detail later with other more advanced topics. In many cases, it is not necessary to explicitly define a subclass of SurfaceFactory, as the tutorials for Bfr illustrate. If already using OpenSubdiv for other reasons, a FarTopologyRefiner will have been constructed to represent the initial base mesh before refinement. Bfr provides a subclass of SurfaceFactory using FarTopologyRefiner as the base mesh ignoring any levels of refinement for immediate use in such cases. For those cases when no connected mesh representation is available at all i.e. only raw, unconnected mesh data exists construction of a FarTopologyRefiner provides a reasonably efficient connected mesh representation see the Far tutorials for construction details, whose provided subclass for SurfaceFactory is then readily available. Given the different interpolation types for mesh data i.e. vertex, varying and face-varying, the common interface for SurfaceFactory provides methods to construct Surfaces explicitly for all data types. So for positions, the methods for vertex data must be used to obtain the desired Surface, while for texture coordinates the methods for face-varying are usually required, e.g. Surface  CreateVertexSurface  Index faceIndex  const  Surface  CreateVaryingSurface  Index faceIndex  const  Surface  CreateFaceVaryingSurface  Index faceIndex  const  The Surfaces created by these construction methods may all be distinct as the underlying representations of the Surfaces and the indices of the data that define them will often differ. For example, the position data may require a bicubic patch while the face-varying texture data may be linear or a different type of bicubic patch given the different interpolation rules for face-varying and the possibility of seams. While the internal representations of the Surfaces constructed for different data interpolation types may differ, since they are all constructed as Surfaces, the functionality used to evaluate them is identical. BfrSurface The Surface class encapsulates the piece of limit surface associated with a particular face of the mesh. The term surface is used rather than patch to emphasize that the Surface may itself be a piecewise parametric surface composed of more than one patch potentially even a complex set of patches. Surface is also a class template selected by floating point precision, and so typically declared as BfrSurfacefloat. Just as a simpler type name is likely to be declared when used, the simple name Surface will be used to refer to it here. And where code fragments may be warranted, float will be substituted for the template parameter for clarity. Once created, there are two steps required to evaluate a Surface preparation of associated data points from the mesh the actual calls to evaluation methods using these data points The latter is straight-forward, but the former warrants a little more explanation. The shape of a Surface for a base face is influenced by the set of data points associated with both the vertices of the face and a subset of those in its immediate neighborhood. These control points are identified when the Surface is initialized and are publicly available for inspection if desired. The control points are sufficient to define the Surface if the face and its neighborhood are regular, but any irregularity an extra-ordinary vertex, crease, etc. usually requires additional, intermediate points to be computed from those control points in order to evaluate the Surface efficiently. Having previously avoided use of the term patch in favor of surface, the term patch points is now used to refer to these intermediate points. Patch points always include the control points as a subset and may be followed by points needed for any additional patches required to represent a more complex Surface. While the patch points are assembled in a local array for direct use by the Surface, the control points can either be gathered and accessed locally or indexed from buffers associated with the mesh for other purposes e.g. computing a bounding box of the Surface Once the patch points for a Surface are prepared, they can be passed to the main evaluation methods with the desired parametric coordinates. As previously noted, since the Surface class is a template for floating point precision, evaluation is supported in single or double precision by constructing a Surface for the desired precision. Evaluation methods are overloaded to obtain simply position or including all first or second derivatives. So preparation and evaluation can be achieved with the following  Preparing patch points void PreparePatchPoints  float const  meshPoints , PointDescriptor meshPointDescriptor , float  patchPoints , PointDescriptor patchPointDescriptor  const   Evaluating position and 1st derivatives void Evaluate  float const uv  2 , float const  patchPoints , PointDescriptor patchPointDescriptor , float  P , float  dPdu , float  dPdv  const  The PointDescriptor class here is a simple struct defining the size and stride of the associated array of points. Any use of mesh points, control points or patch points generally requires an accompanying descriptor. Depending on the complexity of the limit surface, this preparation of patch points can be costly -- especially if only evaluating the Surface once or twice. In such cases, it is worth considering evaluating limit stencils, i.e. sets of coefficients that combine the original control vertices of the mesh without requiring the computation of intermediate values. The cost of evaluating stencils is considerably higher than direct evaluation, but that added overhead is often offset by avoiding the use of patch points. Surfaces should be considered a class for transient use as retaining them for longer term usage can reduce their benefits. The relatively high cost of initialization of irregular Surfaces can be a deterrent and often motivates their retention despite increased memory costs. Retaining all Surfaces of a mesh for random sampling is a situation that should be undertaken with caution and will be discussed in more detail later with other advanced topics. Parameterization Each face of a mesh has an implicit local 2D parameterization whose 2D coordinates are used to evaluate the Surface for that face. Bfr adopts the parameterizations defined elsewhere in OpenSubdiv for quadrilateral and triangular patches, for use quadrilateral and triangular faces But the parameterization of a face is also dependent on the subdivision scheme applied to it. Subdivision schemes that divide faces into quads are ultimately represented by quadrilateral patches. So a face that is a quad can be parameterized as a single quad, but other non-quad faces are parameterized as a set of quad sub-faces, i.e. faces resulting from subdivision A triangle subdivided with a quad-based scheme e.g. Catmull-Clark will therefore not have the parameterization of the triangular patch indicated previously, but another defined by its quad sub-faces illustrated above to be described in more detail below. Subdivision schemes that divide faces into triangles are currently restricted to triangles only, so all faces are parameterized as single triangles. If Loop subdivision is extended to non-triangles in future, a parameterization involving triangular sub-faces will be necessary. Note that triangles are often parameterized elsewhere in terms of barycentric coordinates u,v,w where w  1 - u - v . As is the case elsewhere in OpenSubdiv, Bfr considers parametric coordinates as 2D u,v pairs for all purposes. All faces have an implicit 2D local parameterization and all interfaces requiring parametric coordinates consider only the u,v pair. If interaction with some other tool set requiring barycentric coordinates for triangles is necessary, it is left to users to compute the implicit w accordingly. BfrParameterization BfrParameterization is a simple class that fully defines the parameterization for a particular face. An instance of Parameterization is fully defined on construction given the size of a face and the subdivision scheme applied to it where the face size is its number of verticesedges. Since any parameterization of N -sided faces requires N in some form, the face size is stored as a member and made publicly available. Each Surface has the Parameterization of its face assigned internally as part of its construction, and that is used internally by the Surface in many of its methods. The need to deal directly with the explicit details of the Parameterization class is not generally necessary. Often it is sufficient to retrieve the Parameterization from a Surface for use in some other context e.g. passed to BfrTessellation. The enumerated type ParameterizationType currently defines three kinds of parameterizations -- one of which is assigned to each instance on construction according to the properties of the face QUAD Applied to quadrilateral faces with a quad-based subdivision scheme e.g. Catmark or Bilinear. TRI Applied to triangular faces with a triangle-based subdivision scheme e.g. Loop. QUAD_SUBFACES Applied to non-quad faces with a quad-based subdivision scheme -- dividing the face into quadrilateral sub-faces. Parameterizations that involve subdivision into sub-faces, e.g. QUAD_SUBFACES, may warrant some care as they are not continuous. Depending on how they are defined, the sub-faces may be disjoint e.g. Bfr  or overlap in parametric space e.g. Ptex. To help these situations, methods to detect the presence of sub-faces and deal with their local parameterizations are made available. Discontinuous Parameterizations When a face does not have a regular parameterization, the division of the parameterization into sub-faces can create complications -- as noted and addressed elsewhere in OpenSubdiv. BfrParameterization defines a quadrangulated sub-face parameterization differently from the Far and Osd interfaces. For an N -sided face, Far uses a parameterization adopted by Ptex. In this case, all quad sub-faces are parameterized over the unit square and require an additional index of the sub-face to identify them. So Ptex coordinates require three values the index and u,v of the sub-face. To embed sub-face coordinates in a single u,v pair, Bfr tiles the sub-faces in disjoint regions in parameter space. This tiling is similar to the Udim convention for textures, where a UDim on the order of sqrtN is used to preserve accuracy for increasing N  Note also that the edges of each sub-face are of parametric length 0.5, which results in a total parametric length of 1.0 for all base edges. This differs again from Ptex, which parameterizes sub-faces with edge lengths of 1.0, and so can lead to inconsistencies in parametric scale typically with derivatives across edges of the mesh if not careful. As previously mentioned, care may be necessary when dealing with the discontinuities that exist in parameterizations with sub-faces. This is particularly true if evaluating data at sampled locations of the face and needing to evaluate at other locations interpolated from these. Interpolation between parametric locations, e.g. A, B and C, should be avoided when discontinuous. In many cases, dealing directly with coordinates of the sub-faces is unavoidable, e.g. interpolating Ptex coordinates for sampling of textures assigned explicitly to the sub-faces. Methods are provided to convert from Bfr s tiled parameterization to and from other representations that use a local parameterization for each sub-face. Tessellation Once a Surface can be evaluated it can be tessellated. Given a 2D parameterization, a tessellation consists of two parts a set of parametric coordinates sampling the Parameterization a set of faces connecting these coordinates that covers the entire Parameterization Once evaluated, the resulting set of sample points and the faces connecting them effectively define a mesh for that parameterization. For the sake of brevity both here and in the programming interface, the parametric coordinates or sample points are referred to simply as coords or Coords -- avoiding the term points, which is already a heavily overloaded term. Similarly the faces connecting the coords are referred to as facets or Facets -- avoiding the term face to avoid confusion with the base face of the mesh being tessellated. Bfr provides a simple class to support a variety of tessellation patterns for the different Parameterization types and methods for retrieving its associated coords and facets. In many cases the patterns they define are similar to those of GPU hardware tessellation -- which may be more familiar to many -- but they do differ in several ways, as noted below. BfrTessellation In Bfr a Tessellation is a simple class defined by a Parameterization and a given set of tessellation rates and a few additional options. These two elements define a specific tessellation pattern for all faces sharing that Parameterization. An instance of Tessellation can then be inspected to identify all or subsets of its coords or facets. The process of tessellation in other contexts usually generates triangular facets, but that is not the case with Bfr . While producing triangular facets is the default, options are available to have Tessellation include quads in patterns for parameterizations associated with quad-based subdivision schemes. For simple uniform patterns, these produce patterns that are similar in topology to those resulting from subdivision Tessellation of 4- and 5-sided faces of a quad-based scheme using quadrilateral facets left and triangular right The name Tessellation was chosen rather than Tessellator as it is a passive class that simply holds information define its pattern. It doesnt do much other than providing information about the pattern when requested. A few general properties about the pattern are determined and retained on construction, after which an instance is immutable. So it does not maintain any additional state between queries. In order to provide flexibility when dealing with tessellations of adjacent faces, the coords arising from an instance of Tessellation are ordered and are retrievable in ways to help identify points along edges that may be shared between two or more faces. The coords of a Tessellation are generated in concentric rings, beginning with the outer ring and starting with the first vertex Ordering of coords around boundary for quad and tri parameterizations. Methods of the Tessellation class allow the coords associated with specific vertices or edges to be identified, as well as providing the coords for the entire ring around the boundary separately from those of the interior if desired. While the ordering of coords in the interior is not defined and so not to be relied upon, the ordering of the boundary coords is specifically fixed to support the correlation of potentially shared coords between faces. The Tessellation class is completely independent of the Surface class. Tessellation simply takes a Parameterization and tessellation rates and provides the coords and facets that define its pattern. So Tessellation can be used in any other evaluation context where the Parameterizations are appropriate. Tessellation Rates For a particular Parameterization, the various tessellation patterns are determined by one or more tessellation rates. The simplest set of patterns uses a single tessellation rate and is said to be uniform, i.e. all edges and the interior of the face are split to a similar degree Uniform tessellation of a quadrilateral and triangle with rates of 5 and 8. More complex non-uniform patterns allow the edges of the face to be split independently from the interior of the face. Given rates for each edge, a suitable uniform rate for the interior can be either inferred or specified explicitly. These are typically referred to as the outer rates and the inner rate. The single rate specified for a simple uniform tessellation is essentially the specification of a single inner rate while the outer rates for all edges are inferred as the same. Non-uniform tessellation of a quadrilateral, triangle and 5-sided face with various outer and inner rates. In the case of Parameterizations for quads, it is common elsewhere to associate two inner rates with the opposing edges. So two separate inner rates are available for quad parameterizations -- to be specified or otherwise inferred Quad tessellations with differing inner rates with matching left and varying outer rates right. Differences from Hardware Tessellation Since the specifications for hardware tessellation often leave some details of the patterns as implementation dependent, no two hardware implementations are necessarily the same. Typically there may be subtle differences in the non-uniform tessellation patterns along boundaries, and that is to be executed here. Bfr does provide some obvious additional functionality not present in hardware tessellation and vice versa, e.g. Bfr provides the following not supported by hardware tessellation patterns for parameterizations other than quads and tris e.g. N-sided preservation of quad facets of quad-based parameterizations while hardware tessellation provides the following not supported by Bfr  patterns for so-called fractional tessellation non-integer rates The lack of fractional tessellation in Bfr is something that may be addressed in a future release. Where the functionality of Bfr and hardware tessellation overlap, a few other differences are worth noting indexing of edges and their associated outer tessellation rates uniform tessellation patterns for triangles differ significantly For the indexing of edges and rates, when specifying an outer rate associated with an edge, the array index for rate i is expected to correspond to edge i . Bfr follows the convention established elsewhere in OpenSubdiv of labelingindexing edges 0, 1, etc. between vertex pairs 0,1, 1,2, etc. So outer rate 0 corresponds to the edge between vertices 0,1. In contrast, hardware tessellation associates the rate for the edge between vertices 0,1 as outer rate 1 -- its outer rate 0 is between vertices N-1,0. So an offset of 1 is warranted when comparing the two. Outer edge tessellation rates of 1,3,5,7 applied to a quad with Bfr left and GPU tessellation right. For the uniform tessellation of triangles, its well known that the needs of hardware implementation led designers to factor the patterns for triangles to make use of the same hardware necessary for quads. As a result, many edges are introduced into a simple tessellation of a triangle that are not parallel to one of its three edges. Bfr uses patterns more consistent with those resulting from the subdivision of triangles. Only edges parallel to the edges of the triangle are introduced, which creates more uniform facets both edge lengths and area and reduces their number by one third. This can reduce artifacts that sometimes arise with use of the hardware patterns at lower tessellation rates Uniform tessellation of a triangle with Bfr left and GPU tessellation right. These triangular patterns have been referred to as integer spacing for triangular patches in early work on hardware tessellation. But use of these patterns was generally discarded in favor of techniques that split the triangle into three quads -- allowing the hardware solution for quad tessellation to be reused. More on BfrSurfaceFactory The primary function of BfrSurfaceFactory is to identify and construct a representation of the limit surface for a given face of a mesh. It achieves this by inspecting the topology around the given face and constructing a suitable representation encapsulated in a Surface. The regions around a face can be divided into two categories based on their topology those that are regular and those that are not, i.e. those that are irregular. Recalling the illustration from Irregular versus Irregular Features  Patches of regular Surfaces Potential patches of irregular Surfaces The representation of the limit surface for regular regions is trivial -- it is a single parametric patch whose basis is determined by the subdivision scheme e.g. uniform bicubic B-spline for Catmull-Clark. In contrast, the representation of the limit surface for an irregular region cannot be accurately represented so simply. It can be far more complex depending on the features present extra-ordinary vertices, creasing of edges, etc.. It may be as simple as a different kind of parametric patch whose points are derived from those of the mesh, or it may often be a set of patches in a hierarchy resulting from local subdivision.  Bfr intentionally hides the details of these representations to allow future improvement. The cost of determining and assembling the representations of irregular Surfaces is therefore often significant. Some of the performance benefits of the SurfaceFactory are achieved by having it cache the complexities of the irregular surfaces that it encounters. In many common use cases, awareness and management of this caching is not necessary as illustrated by the tutorials. But the thread-safe construction of Surfaces is one area where some awareness is required. Other use cases that share the cache between meshes are also worth exploring as they can further reduce potentially significant costs. BfrSurfaceFactoryCache The SurfaceFactoryCache is the class used by SurfaceFactory to cache the topological information that it can reuse for other similarly irregular faces of the mesh. Though it is a publicly accessible class, the SurfaceFactoryCache has little to no public interface other than construction made available to support more advanced cases covered later and in most cases it can be completely ignored. Typically an instance of SurfaceFactory has an internal SurfaceFactoryCache member which is used by that factory for its lifetime. Since that cache member is mutable -- potentially updated when an irregular Surface is created -- it does need to be thread-safe if the SurfaceFactory is to be used in a threaded context. To accommodate this need, SurfaceFactoryCache is defined as a base class with an accompanying class template to allow the trivial declaration of thread-safe subclasses template  typename MUTEX_TYPE , typename READ_LOCK_GUARD_TYPE , typename WRITE_LOCK_GUARD_TYPE  class SurfaceFactoryCacheThreaded  public SurfaceFactoryCache  ...  For example, a local type for a thread-safe cache using stdshared_mutex from C17 could be simply declared as follows include shared_mutex typedef Bfr  SurfaceFactoryCacheThreaded  std  shared_mutex , std  shared_lock  std  shared_mutex  , std  unique_lock  std  shared_mutex   ThreadSafeCache  Such thread-safe cache types are essential when distributing the work of a single SurfaceFactory across multiple threads. They can be encapsulated in the definitions of subclasses of SurfaceFactory or used to define external cache instances for use with any subclass of SurfaceFactory. Defining a Thread-Safe SurfaceFactory The thread-safety of a SurfaceFactory is purely dependent on the thread-safety of the SurfaceFactoryCache that it uses. With caching disabled, any SurfaceFactory is thread-safe but will be far less efficient in dealing with irregular Surfaces. When a subclass of SurfaceFactory is defined discussed in more detail later, one of its responsibilities is to identify and manage an instance of SurfaceFactoryCache for its internal use. Defining such a subclass is a simple matter of declaring a thread-safe SurfaceFactoryCache type as noted above along with a local member of that type to be used by each instance. Given the widespread use of the FarTopologyRefiner in OpenSubdiv, and the lack of a connected mesh representation in many contexts, a subclass of SurfaceFactory is made available to use a TopologyRefiner as a mesh, i.e. the BfrRefinerSurfaceFactory subclass. Since many OpenSubdiv users may make use of the RefinerSurfaceFactory subclass, and they may have different preferences of threading model, the RefinerSurfaceFactory subclass is similarly defined as a class template to enable threading flexibility. In this case, the template is parameterized by the desired type of SurfaceFactoryCache, which embodies the threading specifications as noted above, i.e. template  class CACHE_TYPE  SurfaceFactoryCache  class RefinerSurfaceFactory  public ...  ...  The default template is the base SurfaceFactoryCache which is not thread-safe, but a simple declaration of a thread-safe cache type is sufficient to declare a similarly thread-safe RefinerSurfaceFactory type include opensubdivbfrsurfaceFactoryCache.h  Declare thread-safe cache type see stdshared_mutex example above typedef Bfr  SurfaceFactoryCacheThreaded  ...  ThreadSafeCache   Declare thread-safe factory type typedef Bfr  RefinerSurfaceFactory  ThreadSafeCache  ThreadSafeFactory  The resulting factory type safely allows the construction of Surfaces and their subsequent evaluation and tessellation to be distributed over multiple threads. Internal versus External SurfaceFactoryCache Typical usage of the SurfaceFactoryCache by the SurfaceFactory is to have the factory create an internal cache member to be used for the lifetime of the factory associated with a mesh. But the data stored in the cache is not in any way dependent on the factory or mesh used to create it. So a cache can potentially be shared by multiple factories. While such sharing is possible -- and the Bfr interfaces intentionally permit it -- any exploration should proceed with caution. Greater public knowledge and control of the cache is ultimately necessary to manage its potentially unbounded memory increase, and support in the public interface is currently limited. A cache stored as a member varialbe and managed exclusively by the factory is said to be internal while one managed exclusively by its client is said to be external. In both cases, the factory deals with retrieving data from or adding data to the cache -- only management of the caches ownership differs, and that ownership is never transferred. A subset of the methods of SurfaceFactoryOptions provide the means of specifying the use of an internal or external cache, or no caching at all  Assign an external cache to override the internal Options  SetExternalCache  SurfaceFactoryCache  cache   Enable or disable caching default is true Options  EnableCaching  bool on  As noted here, specifying an external cache will override use of a factorys internal cache. Disabling caching takes precedence over both, but is generally not practical and exists mainly to aide debugging. The common use of the internal cache is to create a SurfaceFactory and distribute processing of the Surfaces of its faces over multiple threads, or to construct Surfaces for the mesh for any other purpose while the mesh remains in scope. There is no need to deal explicitly with the SurfaceFactoryCache in these cases. Use cases for an external cache are more varied and explicit, including creating a single external cache to process a sequence of meshes on a single thread cache thread-safety not required creating a separate external cache on each thread to process a set of meshes distributed over multiple threads cache thread-safety not required creating a single external cache for multiple meshes distributed over multiple threads cache thread-safety required, and beware of unbounded memory growth here Future extensions to the public interface of SurfaceFactoryCache may be made to support common use cases as their common needs are made clearer. Customizing a BfrSurfaceFactory One of the goals of Bfr is to provide a lightweight interface for the evaluation of Surfaces from any connected mesh representation. In order to do so, the factory needs to gather topological information from that mesh representation. That information is provide to the factory through inheritance a subclass of SurfaceFactory is defined that fulfills all requirements of the factory. It must be made clear that a subclass can only be created from a connected mesh representation, i.e. a representation that includes connectivity or adjacency relationships between its components vertices, faces and edges. Classes for simple containers of mesh topology used for external formats e.g. USD, Alembic, etc. are generally not connected . Many applications construct a connected mesh representation for internal use when loading such mesh data -- using a variety of techniques including half-edges, winged-edges or table-based relationships. There are many choices here that offer a variety of trade-offs depending on usage e.g. fixed vs dynamic topology and so no best solution. Once constructed and available within an application, Bfr strives to take advantage of that representation. As a minimum requirement for supporting a subclass of SurfaceFactory, a connected mesh representation must be able to efficiently identify the incident faces of any given vertex. As noted earlier, when no such representation is available, users can construct a FarTopologyRefiner for their connected mesh and use BfrRefinerSurfaceFactory. There are three requirements of a subclass of SurfaceFactory fulfill the interface required to adapt the connected mesh to the factory provide an internal cache for the factory of the preferred type extend the existing SurfaceFactory interface for the connected mesh type The first of these is the most significant and is the focus here. The second was mentioned previously with the SurfaceFactoryCache and is trivial. The last should also be trivial and is generally optional at minimum the subclass will need a constructor to create an instance of the factory from a given mesh, but anything more is not strictly essential. It is important to note that anyone attempting to write such a subclass must have an intimate understanding of the topological capabilities and limitations of the mesh representation involved. The SurfaceFactory is topologically robust in that it will support meshes with a wide range of degenerate or non-manifold features, but in order to process topology efficiently, a subclass needs to indicate when and where those degeneracies may occur. A simplified implementation of the BfrRefinerSurfaceFactory is provided in the tutorials for illustration purposes. The BfrSurfaceFactoryMeshAdapter Interface The SurfaceFactoryMeshAdapter class defines the interface used to satisfy the topological requirements of the SurfaceFactory. An implementation for a particular mesh class provides the base factory with everything needed to identify the limit surface of a given face from its surrounding topology. The SurfaceFactory actually inherits the SurfaceFactoryMeshAdapter interface but does not implement it -- deferring that to its subclasses -- since separate subclasses of SurfaceFactoryMeshAdapter serve no other purpose. The limit surface for a face is fully defined by the complete set of incident vertices, faces and edges surrounding the face. But it is difficult to accurately and efficiently assemble and represent all of that required information in a single class or query for all possible cases. So the mesh adapter interface provides a suite of methods to allow the factory to gather only what it needs for the Surface required -- which may differ considerably according to whether the Surface is for vertex or face-varying data, linear or non-linear, etc. The virtual methods required can be organized into small groups devoted to particular aspects of construction. A description of the methods and purposes for each group follows, with more details and exact signatures available in the accompanying Doxygen for the SurfaceFactoryMeshAdapter class. Basic Properties of a Face A small set of simple methods indicate whether the SurfaceFactory needs to create a Surface for a face, and if so, how virtual bool isFaceHole  Index faceIndex  const  0  virtual int getFaceSize  Index faceIndex  const  0  These are trivial and self-explanatory. Identifying Indices for an Entire Face If the Surface requested turns out to be linearly interpolated e.g. for varying or linear face-varying data indices for the control point data are all assigned to the face and can be trivially identified virtual int getFaceVertexIndices  Index faceIndex , Index vertexIndices  const  0  virtual int getFaceFVarValueIndices  Index faceIndex , FVarID faceVaryingID , Index faceVaryingIndices  const  0  Since multiple sets of face-varying data with different topology may be assigned to the mesh, an identifier needs to be specified both in the public interface when requesting a Surface and here when the factory assembles it. How a face-varying identifier is interpreted is completely determined by the subclass through the implementation of the methods that require it. Specifying the Neighborhood Around a Vertex When the Surface requested is not linear, the entire neighborhood around the face must be determined. This is achieved by specifying the neighborhoods around each of the vertices of the face, which the factory then assembles. For the neighborhood of each face-vertex, the factory obtains a complete specification in a simple VertexDescriptor class. An instance of VertexDescriptor is provided and populated with the following method virtual int populateFaceVertexDescriptor  Index faceIndex , int faceVertex , VertexDescriptor  vertexDescriptor  const  0  Within this method, the given VertexDescriptor instance is initialized using a small suite of VertexDescriptor methods that specify the following information about the vertex and its neighborhood whether the neighborhood is manifold ordered counter-clockwise whether the vertex is on a boundary the sizes of all or each incident face the sharpness of the vertex the sharpness of edges of incident faces These methods are specified between Initialize and Finalize methods, so an interior vertex of valence 4 with three incident quads and one incident triangle might be specified as follows int vertexValence  4  vertexDescriptor . Initialize  vertexValence  vertexDescriptor . SetManifold  true  vertexDescriptor . SetBoundary  false  vertexDescriptor . SetIncidentFaceSize  0 , 4  vertexDescriptor . SetIncidentFaceSize  1 , 4  vertexDescriptor . SetIncidentFaceSize  2 , 3  vertexDescriptor . SetIncidentFaceSize  3 , 4  vertexDescriptor . Finalize  Specifying the vertex neighborhood as manifold is critical to allowing the factory to inspect the neighborhood efficiently. A manifold vertex has its incident faces and edges ordered in a counter-clockwise orientation and is free of degeneracies. If it is not clear that a vertex is manifold, it should not be set as such or the factorys inspection of associated data will not be correct. Identifying Indices Around a Vertex When the Surface requested is not linear, the indices of control point data for the entire neighborhood of the face are ultimately required, and that entire set is similarly determined by identifying the indices for each of the neighborhoods of the face-vertices virtual int getFaceVertexIncidentFaceVertexIndices  Index faceIndex , int faceVertex , Index vertexIndices  const  0  virtual int getFaceVertexIncidentFaceFVarValueIndices  Index faceIndex , int faceVertex , FVarID faceVaryingID , Index faceVaryingIndices  const  0  As was the case with the methods retrieving indices for the entire face, one exists for identifying indices vertex data while another exists to identify indices for a specified set of face-varying data. Customizing the Subclass Interface Once the topological requirements of a subclass have been satisfied for its mesh representation, minor customizations of the inherited interface of SurfaceFactory may be useful. Consider a class called Mesh and its associated subclass of SurfaceFactory called MeshSurfaceFactory. At minimum, a constructor of MeshSurfaceFactory is necessary to construct an instance for a particular instance of mesh. This is typically achieved as follows MeshSurfaceFactory  Mesh const  mesh , Options const  options  In addition to the Mesh instance, such a constructor passes a set of Options i.e. SurfaceFactoryOptions to the base SurfaceFactory. Any additional arguments are possible here, e.g. perhaps only a single face-varying UV set is supported, and that might be specified by identifying it on construction. Given that mesh representations often have their own associated classes that internally contain the actual data, it may be useful to provide a few other conveniences to simplify working with a Mesh. For example, if mesh data is stored in a class called MeshPrimvar, a method to construct a Surface from a given MeshPrimvar may be useful, e.g. bool InitPrimvarSurface  int faceIndex , MeshPrimvar const  meshPrimvar , Surface  float   surface  which would then determine the nature of the MeshPrimvar data interpolated as vertex, varying or face-varying and act accordingly. It may also be worth simplifying the template complexity here if only one precision is ever required. Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"title\": \"Overview of Release 3.5\",\n+        \"text\": \"Overview of Release 3.5 Overview of Release 3.5 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE New Features Simplified Surface Evaluation Tessellation Patterns API Additions New classes in namespace Bfr Additions to FarTopologyLevel Additions to nested Options classes in Far Other Changes Deprecation Announcements Improvements Bug Fixes New Features Simplified Surface Evaluation The new Bfr interface provides an alternative to Far and Osd for evaluating the limit surface -- treating a subdivision mesh as a piecewise parameteric surface primitive . The Bfr interface is named for Base Face Representation as all concepts and classes relate to the individual faces of the original unrefined mesh, i.e. its base faces. Each base face has a piece of limit surface associated with it  BfrSurface  that is parameterized  BfrParameterization  and so can be evaluated and tessellated The limit surface for each face can be identified and evaluated independently of any other faces without any global pre-processing of a connected mesh. The resulting evaluation interface is much simpler, more flexible and more scalable than those assembled with the table-based class in Far -- providing a preferable alternative for many CPU-based use cases though not all. See the Bfr Overview documentation for more details. Tessellation Patterns In addition to evaluation, the Bfr interface includes a Tessellation class that provides tessellation patterns for all faces of a base mesh. A Tessellation does not encapsulate the entire tessellation process but simply provides topological patterns to assemble such a process. All faces of a mesh have a Parameterization which can be used to define a Tessellation with the specification of one or more tessellation rates. A single tessellation rate defines simple uniform tessellations while tessellation rates for each edge provide more complex non-uniform patterns A small set of options is also available to define the resulting patterns e.g. the preservation of quad faces with quad-based subdivision schemes  above left and center  and to generate its output in a more favorable form. Tessellation patterns do not support the full flexibility of typical hardware tessellation e.g. no fractional tessellation but do provide some useful alternatives to hardware tessellation e.g. the quad preservation previously noted, and more uniform triangles for triangular patches  above right . The Tessellation class is also completely independent of evaluation in Bfr , and so can be used with any other evaluation interface. See the Tessellation subsection of the Bfr Overview for more details. API Additions See associated Doxygen for full details. New classes in namespace Bfr class Parameterization class Surface class SurfaceFactory class SurfaceFactoryCache class SurfaceFactoryMeshAdapter class RefinerSurfaceFactory class Tessellation Additions to FarTopologyLevel TopologyLevelIsVertexCorner TopologyLevelIsVertexRegular TopologyLevelIsVertexInfSharp TopologyLevelIsVertexSemiSharp TopologyLevelIsEdgeInfSharp TopologyLevelIsEdgeSemiSharp Additions to nested Options classes in Far PatchTableFactoryOptionsSetMaxIsolationLevel TopologyRefinerUniformOptionsSetRefinementLevel TopologyRefinerAdaptiveOptionsSetMaxIsolationLevel TopologyRefinerAdaptiveOptionsSetMaxSecondaryLevel Other Changes Deprecation Announcements Hbr is deprecated and will be removed from subsequent releases Improvements Suppression of GCC compiler warnings GitHub 1253, 1254, 1270 Additional methods for FarTopologyLevel GitHub 1227, 1255 Improved mixed partial derivative at Gregory patch corners GitHub 1252 Minor improvements to Far tutorials GitHub 1226, 1241 Added CMake config GitHub 1242 Updated CMake minimum version to 3.12 GitHub 1237, 1261 Updated documentation build scripts for Python 3 1265, 1266 Updated stringify build tool for improved cross compilation support GitHub 1267 Added NO_MACOS_FRAMEWORKS build option GitHub 1238 Updated Azure pipelines agents for Unbuntu and macOS GitHub 1247, 1256 Removed obsolete AppVeyor and Travis CI scripts GitHub 1259 Bug Fixes Cache active program for OsdGLComputeEvaluator GitHub 1244 Fixed member initialization warnings in OsdD3D11ComputeEvaluator GitHub 1239 Fixed GLSL shader source to remove storage qualifiers from struct members GitHub 1271 Fixed use of CMake variables for Apple builds GitHub 1235 Fixed build errors when using OpenGL without GLFW GitHub 1257 Fixed links to embedded videos GitHub 1231 Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n         \"tags\": \"\",\n-        \"loc\": \"bfr_overview.html\"\n+        \"loc\": \"release_35.html\"\n+    }, {\n+        \"title\": \"glFVarViewer\",\n+        \"text\": \"glFVarViewer glFVarViewer 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE SYNOPSIS DESCRIPTION OPTIONS SEE ALSO SYNOPSIS glFVarViewer  -f   -u   -a   -l refinement level   -c animation loops  objfiles  -catmark   -loop   -bilinear  DESCRIPTION glFVarViewer is a stand-alone application that allows the inspection of face-varying data interpolation. The window displays 2 views left side regular 3D view of the model, with a procedural u,v texture right side a 2D view of the face-varying u,v pair The HUD allows interactive manipulation of the various face-varying boundary interpolation rules and tags. OPTIONS See the description of the common comand line options for the subset of common options supported here. SEE ALSO Other examples  glViewer , glFVarViewer , glEvalLimit , glStencilViewer , glPtexViewer , glPaintTest , glShareTopology , dxViewer , dxPtexViewer , Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"tags\": \"\",\n+        \"loc\": \"glfvarviewer.html\"\n+    }, {\n+        \"title\": \"3.0 - 3.6 Release Notes\",\n+        \"text\": \"3.0 - 3.6 Release Notes 3.0 - 3.6 Release Notes 3.6.0 User Docs API Docs Release Notes Forum Github OSD_ARTICLE_TITLE Release 3.6 Release 3.6.0 - Sep 2023 Release 3.5 Release 3.5.1 - July 2023 Release 3.5.0 - Sep 2022 Release 3.4 Release 3.4.4 - Feb 2021 Release 3.4.3 - Apr 2020 Release 3.4.0 - Jun 2019 Release 3.3 Release 3.3.3 - Jul 2018 Release 3.3.2 - Jun 2018 Release 3.3.1 - Feb 1018 Release 3.3.0 - Aug 2017 Release 3.2 Release 3.2.0 - Feb 2017 Release 3.1 Release 3.1.1 - Jan 2017 Release 3.1.0 - Oct 2016 Release 3.0 Release 3.0.5 - Mar 2016 Release 3.0.4 - Feb 2016 Release 3.0.3 - Oct 2015 Release 3.0.2 - Aug 2015 Release 3.0.1 - Aug 2015 Release 3.0.0 - Jun 2015 Release 3.0.0 RC2 Release 3.0.0 RC1 Previous 2.x Release Notes Release 3.6 Release 3.6.0 - Sep 2023 Release 3.6.0 is a significant release with new features, several configuration improvements, and bug fixes. For more information on the following, see Release 3.6 Changes Updated Osd patch drawing shader source to exclude legacy shader constructs to improve compatibility with Vulkan, DX12, etc. GitHub 1320 Installed Osd patch evaluation headers to allow use from client shaders and compute kernels GitHub 1321 Updated CMake build to locate TBB using TBBs CMake config in order to support oneTBB GitHub 1319 Updated CMake FindOpenCL module to support parsing version information from recent OpenCL headers GitHub 1322 Removed obsolete .travis.yml GitHub 1324 Bug Fixes Fixed inconsistent warning levels for MSVC builds when using Ninja GitHub 1318 Fixed documentation build errors when using Ninja GitHub 1323 Fixed build errors resulting from oneTBB API changes GitHub 1317 Release 3.5 Release 3.5.1 - July 2023 Release 3.5.1 is a minor release including bug fixes and configuration improvements. Changes Updated CMake to set fallback CMAKE_CXX_STANDARD to C14 GitHub 1276 Updated CMake with OpenGL import targets to avoid link errors GitHub 1277 Updated CMake to set gpu architecture fallback only for older CUDA versions GitHub 965 1299 Updated CMake to use append for CMAKE_MODULE_PATH GitHub 1296 Fixed interface includes for CMake config GitHub 1278 Fixed warnings with newer and stricter use of Clang GitHub 1275 1289 1290 Fixed potential float constant cast errors for OpenCL GitHub 1285 Fixed generation of Apple Frameworks with no OSD_GPU targets enabled GitHub 1224 1236 Bug Fixes Fixed BfrSurface construction bug for rare topological case GitHub 1301 Fixed CUDA example dependencies with GLX on Linux GitHub 1294 Release 3.5.0 - Sep 2022 Release 3.5.0 is a significant release with new features, several configuration improvements, and a few other improvements and bug fixes. For more information on the following, see Release 3.5 Deprecation Announcements Hbr is deprecated and will be removed from subsequent releases New Features Simplified Surface Evaluation Bfr Tessellation Patterns Bfr Changes Suppression of GCC compiler warnings GitHub 1253, 1254, 1270 Additional methods for FarTopologyLevel GitHub 1227, 1255 Improved mixed partial derivative at Gregory patch corners GitHub 1252 Minor improvements to Far tutorials GitHub 1226, 1241 Added CMake config GitHub 1242 Updated CMake minimum version to 3.12 GitHub 1237, 1261 Updated documentation build scripts for Python 3 1265, 1266 Updated stringify build tool for improved cross compilation support GitHub 1267 Added NO_MACOS_FRAMEWORKS build option GitHub 1238 Updated Azure pipelines agents for Unbuntu and macOS GitHub 1247, 1256 Removed obsolete AppVeyor and Travis CI scripts GitHub 1259 Bug Fixes Cache active program for OsdGLComputeEvaluator GitHub 1244 Fixed member initialization warnings in OsdD3D11ComputeEvaluator GitHub 1239 Fixed GLSL shader source to remove storage qualifiers from struct members GitHub 1271 Fixed use of CMake variables for Apple builds GitHub 1235 Fixed build errors when using OpenGL without GLFW GitHub 1257 Fixed links to embedded videos GitHub 1231 Release 3.4 Release 3.4.4 - Feb 2021 Release 3.4.4 is a minor release including bug fixes and configuration improvements Changes The master branch on GitHub has been renamed release GitHub 1218 1219 The CMake configuration has been updated to allow use as a sub-project GitHub 1206 Removed obsolete references to hbr from examplesfarViewer GitHub 1217 Bug Fixes Fixed bug with sparse PatchTables and irregular face-varying seams GitHub 1203 Fixed loss of precision when using double precision stencil tables GitHub 1207 Fixed reset of FarTopologyRefinerGetMaxLevel after call to Unrefine GitHub 1208 Fixed linking with -ldl on unix systems GitHub 1196 Fixed naming and installation of macOS frameworks GitHub 1194 1201 Fixed GL version and extension processing and dynamic loading on macOS GitHub 1216 Fixed FindDocutils.cmake to be more robust GitHub 1213 1220 Fixed errors using build_scriptsbuild_osd.py with Python3 GitHub 1206 Release 3.4.3 - Apr 2020 Release 3.4.3 is a minor release including bug fixes and configuration improvements Changes GLEW is no longer required by default GitHub 1183 1184 Removed false Ptex link dependency from libosdCPU GitHub 1174 Removed false GLFW link dependency from DX11 and Metal examples GitHub 1178 Removed link dependency on unused TBB libraries GitHub 1064 Added option to disable building of dynamic shared libraries GitHub 1169 Added new tutorial for FarLimitStencilTable GitHub 1176 Updated use of EXT_direct_state_access to ARB_direct_state_access GitHub 1184 Fixed C strict aliasing warnings GitHub 1182 Fixed MSVC warnings in example code GitHub 1158 1172 Fixed compatibility with Visual Studio 2019 GitHub 1173 1189 Fixed CMake CMP0054 warnings GitHub 1180 Added prefix to OpenSubdiv CMake macros GitHub 1157 Moved utilities in examplescommon to regressioncommon GitHub 1167 Minor fixes to Far tutorials GitHub 1175 1177 Switched to Azure Pipelines for continuous integration testing instead of Travis-CI and AppVeyor GitHub 1168 1190 Bug Fixes Fixed selective boundary interpolation for case SdcOptionsVTX_BOUNDARY_NONE GitHub 1170 1171 Fixed static library linking to address missing symbols GitHub 1192 Additional fixes for dynamic and static linking GitHub 1193 Release 3.4.0 - Jun 2019 Release 3.4.0 is a significant release with several new features, bug fixes, and general code and configuration improvements. For more information on the following, please see Release 3.4 New Features Triangular Patches for Loop subdivision Improvements to Introductory Documentation Sparse Patch Tables and Adaptive Refinement Full Support for Double Precision in Far Changes Added new build script GitHub 1068 Added support for newer DirectX SDKs GitHub 1066 Patch arrays extended to support combined regular and irregular types GitHub 995 FarPatchTables and adaptive refinement supported for Bilinear scheme GitHub 1035 New FarPatchTableFactory method to determine adaptive refinement options GitHub 1047 New FarPatchTableFactory options to align primvar buffers of uniform tables GitHub 986 FarStencilTableUpdateValues overloaded to support separate base buffer GitHub 1011 FarLimitStencilTableFactory updated to create face-varying tables GitHub 1012 Regular patches on boundaries no longer require additional isolation GitHub 1025 Inclusion of OpenSubdiv header files in source code now consistent GitHub 767 Re-organization of and additions to Far tutorials GitHub 1083 examples now use common command-line conventions and parsing GitHub 1056 Bug Fixes Fixed FarPrimvarRefiner internal limitFVar prototype GitHub 979 Fixed FarStencilTable append when base StencilTable empty GitHub 982 Patches around non-manifold vertices now free of cracks GitHub 1013 Release 3.3 Release 3.3.3 - Jul 2018 Release 3.3.3 is bug-fix release addressing regressions from release 3.3.2 Bug Fixes Fixed a regression in PatchTable construction with varying patches GitHub 976 Fixed a regression in PatchTable construction for face-varying patches GitHub 972 Fixed a bug in the initialization of FarSourcePatch GitHub 971 Release 3.3.2 - Jun 2018 Release 3.3.2 is a minor release with potentially significant performance improvements to the patch pre-processing stages Changes Improved performance of PatchTable construction GitHub 966 The resulting improved accuracy will produce slight numerical differences in computations involving patches, e.g. StencilTable and PatchTable evaluation Bug Fixes FarPatchTableFactory now supports PatchTable construction with ENDCAP_BILINEAR_BASIS specified Release 3.3.1 - Feb 1018 Release 3.3.1 is a minor bug-fix release Bug Fixes Fixed GLSLHLSLMetal patch shader code to resolve degenerate normals GitHub 947 Fixed problems with face-varying patches in uniform PatchTables GitHub 946 Fixed integer overflow bugs for large meshes in PatchTable factories GitHub 957 Fixed computation of PatchParam for triangle refinement GitHub 962 Changes Added build options NO_GLFW and NO_GLFW_X11 Added additional shapes with infinitely sharp creases to the Metal and DX11 example viewers Disabled GL tests during CI runs on Linux Improved stability of examplesglImaging in CI runs by testing GL version Release 3.3.0 - Aug 2017 Release 3.3.0 is significant release adding an Osd implementation for Apples Metal API New Features Added an Osd implementation for Apples Metal API Added the mtlViewer example Changes Fixed several instances of local variable shadowing that could cause build warnings Updated continuous-integration build scripts and added testing on macOS Release 3.2 Release 3.2.0 - Feb 2017 Release 3.2.0 is a minor release containing API additions and bug fixes New Features Extended FarStencilTableFactory to support face-varying Extended Osd Evaluator classes to support evaluation of 1st and 2nd derivatives Added an option to disable generation of legacy sharp corner patches Changes Corrected numerous spelling errors in doxygen comments Updated glFVarViewer with improved error detection and command line parsing Added option to build using MSVC with static CRT Bug Fixes Fixed a double delete of GL program in OsdGLComputeEvaluator Release 3.1 Release 3.1.1 - Jan 2017 Release 3.1.1 is a minor bug-fix release. Bug Fixes Fixed a bug with non-manifold face-varying topology causing a crash during patch table creation Fixed GLEW compilation and linking with dynamic GLEW libraries on Windows Fixed GLFW linking with GLFW 3.2 on X11 platforms Release 3.1.0 - Oct 2016 Release 3.1.0 is a significant release with several new features, bug fixes, and general code and configuration improvements. For more information on the following, please see Release 3.1 New Features Bicubic Face-Varying Patches Varying and Face-Varying Evaluation Second Order Derivative Evaluation Separate Levels of Feature Isolation Sharp Patches for Infinitely Sharp Features Changes Enabled the use of CMakes folder feature Removed the use of iso646 alternative keywords and, or, not, etc. to improve portability Added numerical valued preprocessor directives OPENSUBDIV_VERSION_MAJOR, etc. to opensubdivversion.h Improved documentation for FarPatchParam and added Unnormalize to complement Normalize Added additional topology queries to FarTopologyLevel Updated glFVarViewer and glEvalLimit viewer to make use of bicubic face-varying patches Updated glViewer and dxViewer to add a toggle for InfSharpPatch Updated dxPtexViewer for improved feature parity with glPtexViewer Improved far_regression to exercise shapes independent of Hbr compatibility Added support for Appveyor continuous integration testing Removed cmakeFindIlmBase Removed mayaPolySmooth example Bug Fixes Fixed Ptex version parsing and compatibility issues Fixed compatibility issues with VS2015 Fixed bug interpolating face-varying data with Bilinear scheme Fixed bug with refinement using Chaikin creasing Fixed bugs with HUD sliders in the example viewers Release 3.0 Release 3.0.5 - Mar 2016 Release 3.0.5 is a minor stability release with performance and correctness bug fixes. Bug Fixes The previous release reduced transient memory use during PatchTable construction, but increased the amount of memory consumed by the resulting PatchTable itself, this regression has been fixed. The example Ptex texture sampling code has been fixed to prevent sampling beyond the texels for a face when multisample rasterization is enabled. Release 3.0.4 - Feb 2016 Release 3.0.4 is a minor stability release which includes important performance and bug fixes. New Features Added accessor methods to FarLimitStencilTable to retrieve limit stencil data including derivative weights Added support for OpenCL event control to OsdCLVertexBuffer and OsdCLEvaluator Changes Major reduction in memory use during FarPatchTable construction for topologies with large numbers of extraordinary features Improved performance for GL and D3D11 tessellation control  hull shader execution when drawing BSpline patches with the single crease patch optimization enabled Bug Fixes Restored support for drawing with fractional tessellation Fixed far_tutorial_6 to refine primvar data only up to the number of levels produced by topological refinement Fixed build warnings and errors reported by Visual Studio 2015 Release 3.0.3 - Oct 2015 Release 3.0.3 is a minor stability release which includes important performance and bug fixes. New Features Smooth normal generation tutorial, far_tutorial_8 Changes Major performance improvement in PatchTable construction Improved patch approximations for non-manifold features Bug Fixes Fixed double delete in GLSL Compute controller Fixed buffer layout for GLSL Compute kernel Fixed GL buffer leak in OsdGLPatchTable Fixed out-of-bounds data access for TBB and OMP stencil evaluation Fixed WIN32_LEAN_AND_MEAN typo Fixed Loop-related shader issues glFVarViewer Release 3.0.2 - Aug 2015 Release 3.0.2 is a minor release for a specific fix. Bug Fixes Fixed drawing of single crease patches Release 3.0.1 - Aug 2015 Release 3.0.1 is a minor release focused on stability and correctness. Changes Added a references section to the documentation, please see References Removed references to AddVaryingWithWeight from examples and tutorials Added more regression test shapes Addressed general compiler warnings e.g. signed vs unsigned comparisons Addressed compiler warnings in the core libraries reported by GCCs -Wshadow Eased GCC version restriction, earlier requirement for version 4.8 or newer is no longer needed Replaced topology initialization assertions with errors Improved compatibility with ICC Improved descriptive content and formatting of Far error messages Improved build when configured to include no GPU specific code Bug Fixes Fixed handling of unconnected vertices to avoid out of bounds data access Fixed non-zero starting offsets for TbbEvalStencils and OmpEvalStencils Fixed FarStencilTableFactoryOptionsfactorizeIntermediateLevels Fixed FarPatchTablesFactoryOptionsgenerateAllLevels Fixed the behavior of VTX_BOUNDARY_NONE for meshes with bilinear scheme Fixed some template method specializations which produced duplicate definitions Disabled depth buffering when drawing the UI in the example viewers Disabled the fractional tessellation spacing option in example viewers since this mode is currently not supported Release 3.0.0 - Jun 2015 Release 3.0.0 is a major release with many significant improvements and changes. For more information on the following, please see Release 3.0 New Features Faster subdivision using less memory Support for non-manifold topology Face-Varying data specified topologically Elimination of fixed valence tables Single-crease patch for semi-sharp edges Additional irregular patch approximations Introduction of Stencil Tables Faster, simpler GPU kernels Unified adaptive shaders Updated coding style with namespaces More documentation and tutorials Bug Fixes Smooth Face-Varying interpolation around creases Release 3.0.0 RC2 New Features Documentation updates far_tutorial_3 updates for the multiple face-varying channels maya example plugin interpolates a UV channel and a vertex color channel Bug Fixes Fixed a LimitStencilTableFactory bug, which returns an invalid table PatchParam encoding changed to support refinement levels up to 10 Added Xinerama link dependency Fixed MSVC 32bit build problem Fixed minor cmake issues Fixed glViewerfarViewer stability bugs Release 3.0.0 RC1 Changes FarTopologyRefiner was split into several classes to clarify and focus the API. Interpolation of Vertex and Varying primvars in a single pass is no longer supported. The Osd layer was largely refactored. Previous 2.x Release Notes Previous releases Generated on 2025-01-02 0847 UTC. User Docs API Docs Release Notes Forum TM   1986 - 2017 PIXAR. ALL RIGHTS RESERVED. Terms of Use\",\n+        \"tags\": \"\",\n+        \"loc\": \"release_notes.html\"\n     }, ]\n };\n"}]}, {"source1": "./usr/share/doc/opensubdiv/doxy_html/a00770.html", "source2": "./usr/share/doc/opensubdiv/doxy_html/a00686.html", "comments": ["Files 90% similar despite different names"], "unified_diff": "@@ -1,15 +1,15 @@\n <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n <html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en-US\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=11\"/>\n <meta name=\"generator\" content=\"Doxygen 1.9.8\"/>\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"/>\n-<title>OpenSubdiv: opensubdiv/far/ptexIndices.h File Reference</title>\n+<title>OpenSubdiv: opensubdiv/osd/d3d11ComputeEvaluator.h File Reference</title>\n <link href=\"tabs.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"jquery.js\"></script>\n <script type=\"text/javascript\" src=\"dynsections.js\"></script>\n <link href=\"navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n <script type=\"text/javascript\" src=\"resize.js\"></script>\n <script type=\"text/javascript\" src=\"navtreedata.js\"></script>\n <script type=\"text/javascript\" src=\"navtree.js\"></script>\n@@ -61,15 +61,15 @@\n   </div>\n   <div id=\"splitbar\" style=\"-moz-user-select:none;\" \n        class=\"ui-resizable-handle\">\n   </div>\n </div>\n <script type=\"text/javascript\">\n /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */\n-$(document).ready(function(){initNavTree('a00770.html',''); initResizable(); });\n+$(document).ready(function(){initNavTree('a00686.html',''); initResizable(); });\n /* @license-end */\n </script>\n <div id=\"doc-content\">\n <!-- window showing the filter options -->\n <div id=\"MSearchSelectWindow\"\n      onmouseover=\"return searchBox.OnSearchSelectShow()\"\n      onmouseout=\"return searchBox.OnSearchSelectHide()\"\n@@ -90,43 +90,45 @@\n </div>\n </div>\n \n <div class=\"header\">\n   <div class=\"summary\">\n <a href=\"#nested-classes\">Classes</a> &#124;\n <a href=\"#namespaces\">Namespaces</a>  </div>\n-  <div class=\"headertitle\"><div class=\"title\">ptexIndices.h File Reference</div></div>\n+  <div class=\"headertitle\"><div class=\"title\">d3d11ComputeEvaluator.h File Reference</div></div>\n </div><!--header-->\n <div class=\"contents\">\n <div class=\"textblock\"><code>#include &quot;../version.h&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a00764_source.html\">../far/topologyRefiner.h</a>&quot;</code><br />\n-<code>#include &quot;<a class=\"el\" href=\"a01486_source.html\">../far/types.h</a>&quot;</code><br />\n-<code>#include &lt;vector&gt;</code><br />\n+<code>#include &quot;<a class=\"el\" href=\"a00764_source.html\">../osd/bufferDescriptor.h</a>&quot;</code><br />\n </div>\n-<p><a href=\"a00770_source.html\">Go to the source code of this file.</a></p>\n+<p><a href=\"a00686_source.html\">Go to the source code of this file.</a></p>\n <table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"nested-classes\" name=\"nested-classes\"></a>\n Classes</h2></td></tr>\n-<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01041.html\">PtexIndices</a></td></tr>\n-<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">Object used to compute and query ptex face indices.  <a href=\"a01041.html#details\">More...</a><br /></td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01197.html\">D3D11StencilTable</a></td></tr>\n+<tr class=\"memdesc:\"><td class=\"mdescLeft\">&#160;</td><td class=\"mdescRight\">D3D11 stencil table.  <a href=\"a01197.html#details\">More...</a><br /></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">class &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a01201.html\">D3D11ComputeEvaluator</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table><table class=\"memberdecls\">\n <tr class=\"heading\"><td colspan=\"2\"><h2 class=\"groupheader\"><a id=\"namespaces\" name=\"namespaces\"></a>\n Namespaces</h2></td></tr>\n <tr class=\"memitem:a00905\" id=\"r_a00905\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00905.html\">OpenSubdiv</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00906\" id=\"r_a00906\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00906.html\">OpenSubdiv::OPENSUBDIV_VERSION</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n <tr class=\"memitem:a00908\" id=\"r_a00908\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00908.html\">OpenSubdiv::OPENSUBDIV_VERSION::Far</a></td></tr>\n <tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n+<tr class=\"memitem:a00912\" id=\"r_a00912\"><td class=\"memItemLeft\" align=\"right\" valign=\"top\">namespace &#160;</td><td class=\"memItemRight\" valign=\"bottom\"><a class=\"el\" href=\"a00912.html\">OpenSubdiv::OPENSUBDIV_VERSION::Osd</a></td></tr>\n+<tr class=\"separator:\"><td class=\"memSeparator\" colspan=\"2\">&#160;</td></tr>\n </table>\n </div><!-- contents -->\n </div><!-- doc-content -->\n <!-- start footer part -->\n <div id=\"nav-path\" class=\"navpath\"><!-- id is needed for treeview function! -->\n   <ul>\n-    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_7f420b72a822828cfa8b0561c695a5cc.html\">far</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00770.html\">ptexIndices.h</a></li>\n+    <li class=\"navelem\"><a class=\"el\" href=\"dir_92d32ed2ee5a5189c247727c83e4b0fa.html\">opensubdiv</a></li><li class=\"navelem\"><a class=\"el\" href=\"dir_2483050b711c1829a6434006d0beb10c.html\">osd</a></li><li class=\"navelem\"><a class=\"el\" href=\"a00686.html\">d3d11ComputeEvaluator.h</a></li>\n     <li class=\"footer\">Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by <a href=\"https://www.doxygen.org/index.html\"><img class=\"footer\" src=\"doxygen.svg\" width=\"104\" height=\"31\" alt=\"doxygen\"/></a> 1.9.8 </li>\n   </ul>\n </div>\n </body>\n </html>\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -1,26 +1,28 @@\n [Logo] OpenSubdiv\n Loading...\n Searching...\n No Matches\n _\bC_\bl_\ba_\bs_\bs_\be_\bs | _\bN_\ba_\bm_\be_\bs_\bp_\ba_\bc_\be_\bs\n-ptexIndices.h File Reference\n+d3d11ComputeEvaluator.h File Reference\n #include \"../version.h\"\n-#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bt_\bo_\bp_\bo_\bl_\bo_\bg_\by_\bR_\be_\bf_\bi_\bn_\be_\br_\b._\bh\"\n-#include \"_\b._\b._\b/_\bf_\ba_\br_\b/_\bt_\by_\bp_\be_\bs_\b._\bh\"\n-#include <vector>\n+#include \"_\b._\b._\b/_\bo_\bs_\bd_\b/_\bb_\bu_\bf_\bf_\be_\br_\bD_\be_\bs_\bc_\br_\bi_\bp_\bt_\bo_\br_\b._\bh\"\n _\bG_\bo_\b _\bt_\bo_\b _\bt_\bh_\be_\b _\bs_\bo_\bu_\br_\bc_\be_\b _\bc_\bo_\bd_\be_\b _\bo_\bf_\b _\bt_\bh_\bi_\bs_\b _\bf_\bi_\bl_\be_\b.\n C\bCl\bla\bas\bss\bse\bes\bs\n-class \u00a0 _\bP_\bt_\be_\bx_\bI_\bn_\bd_\bi_\bc_\be_\bs\n-\u00a0       Object used to compute and query ptex face indices. _\bM_\bo_\br_\be_\b._\b._\b.\n+class \u00a0 _\bD_\b3_\bD_\b1_\b1_\bS_\bt_\be_\bn_\bc_\bi_\bl_\bT_\ba_\bb_\bl_\be\n+\u00a0       D3D11 stencil table. _\bM_\bo_\br_\be_\b._\b._\b.\n+\u00a0\n+class \u00a0 _\bD_\b3_\bD_\b1_\b1_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br\n \u00a0\n N\bNa\bam\bme\bes\bsp\bpa\bac\bce\bes\bs\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN\n \u00a0\n namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bF_\ba_\br\n \u00a0\n+namespace \u00a0 _\bO_\bp_\be_\bn_\bS_\bu_\bb_\bd_\bi_\bv_\b:_\b:_\bO_\bP_\bE_\bN_\bS_\bU_\bB_\bD_\bI_\bV_\b__\bV_\bE_\bR_\bS_\bI_\bO_\bN_\b:_\b:_\bO_\bs_\bd\n+\u00a0\n     * _\bo_\bp_\be_\bn_\bs_\bu_\bb_\bd_\bi_\bv\n-    * _\bf_\ba_\br\n-    * _\bp_\bt_\be_\bx_\bI_\bn_\bd_\bi_\bc_\be_\bs_\b._\bh\n+    * _\bo_\bs_\bd\n+    * _\bd_\b3_\bd_\b1_\b1_\bC_\bo_\bm_\bp_\bu_\bt_\be_\bE_\bv_\ba_\bl_\bu_\ba_\bt_\bo_\br_\b._\bh\n     * Generated on Thu Jan 2 2025 08:47:46 for OpenSubdiv by _\b[_\bd_\bo_\bx_\by_\bg_\be_\bn_\b]1.9.8\n"}]}]}]}]}]}